summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:45:13 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:45:13 +0000
commit92a15e15b276458e10aa05016bf472e8c6dd3eb0 (patch)
treeaf0343097e5f497167cefa16ed45c03475b98c37
parentdf014cf02a62504f6b3e7a4398fb1e093b84f114 (diff)
context
git-svn-id: svn://tug.org/texlive/trunk@608 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/tex/context/base/colo-ema.tex590
-rw-r--r--Master/texmf-dist/tex/context/base/colo-ext.tex62
-rw-r--r--Master/texmf-dist/tex/context/base/colo-hex.tex117
-rw-r--r--Master/texmf-dist/tex/context/base/colo-ini.tex2743
-rw-r--r--Master/texmf-dist/tex/context/base/colo-rgb.tex530
-rw-r--r--Master/texmf-dist/tex/context/base/colo-run.tex225
-rw-r--r--Master/texmf-dist/tex/context/base/colo-xwi.tex142
-rw-r--r--Master/texmf-dist/tex/context/base/cont-cz.tex35
-rw-r--r--Master/texmf-dist/tex/context/base/cont-de.tex40
-rw-r--r--Master/texmf-dist/tex/context/base/cont-en.tex44
-rw-r--r--Master/texmf-dist/tex/context/base/cont-err.tex26
-rw-r--r--Master/texmf-dist/tex/context/base/cont-fil.tex101
-rw-r--r--Master/texmf-dist/tex/context/base/cont-it.tex37
-rw-r--r--Master/texmf-dist/tex/context/base/cont-log.tex254
-rw-r--r--Master/texmf-dist/tex/context/base/cont-new.tex2404
-rw-r--r--Master/texmf-dist/tex/context/base/cont-nl.tex38
-rw-r--r--Master/texmf-dist/tex/context/base/cont-old.tex46
-rw-r--r--Master/texmf-dist/tex/context/base/cont-ro.tex34
-rw-r--r--Master/texmf-dist/tex/context/base/cont-sys.ori178
-rw-r--r--Master/texmf-dist/tex/context/base/cont-uk.tex38
-rw-r--r--Master/texmf-dist/tex/context/base/cont-usr.ori101
-rw-r--r--Master/texmf-dist/tex/context/base/context.tex579
-rw-r--r--Master/texmf-dist/tex/context/base/core-box.tex951
-rw-r--r--Master/texmf-dist/tex/context/base/core-buf.tex1036
-rw-r--r--Master/texmf-dist/tex/context/base/core-con.tex987
-rw-r--r--Master/texmf-dist/tex/context/base/core-dat.tex288
-rw-r--r--Master/texmf-dist/tex/context/base/core-def.tex34
-rw-r--r--Master/texmf-dist/tex/context/base/core-des.tex944
-rw-r--r--Master/texmf-dist/tex/context/base/core-fig.tex2292
-rw-r--r--Master/texmf-dist/tex/context/base/core-fil.tex279
-rw-r--r--Master/texmf-dist/tex/context/base/core-fld.tex1066
-rw-r--r--Master/texmf-dist/tex/context/base/core-fnt.tex722
-rw-r--r--Master/texmf-dist/tex/context/base/core-gen.tex211
-rw-r--r--Master/texmf-dist/tex/context/base/core-grd.tex1078
-rw-r--r--Master/texmf-dist/tex/context/base/core-hlp.tex173
-rw-r--r--Master/texmf-dist/tex/context/base/core-ini.tex67
-rw-r--r--Master/texmf-dist/tex/context/base/core-ins.tex103
-rw-r--r--Master/texmf-dist/tex/context/base/core-int.tex2605
-rw-r--r--Master/texmf-dist/tex/context/base/core-itm.tex928
-rw-r--r--Master/texmf-dist/tex/context/base/core-job.tex495
-rw-r--r--Master/texmf-dist/tex/context/base/core-lnt.tex195
-rw-r--r--Master/texmf-dist/tex/context/base/core-lst.tex1103
-rw-r--r--Master/texmf-dist/tex/context/base/core-ltb.tex767
-rw-r--r--Master/texmf-dist/tex/context/base/core-mak.tex102
-rw-r--r--Master/texmf-dist/tex/context/base/core-mar.tex287
-rw-r--r--Master/texmf-dist/tex/context/base/core-mat.tex1615
-rw-r--r--Master/texmf-dist/tex/context/base/core-mis.tex2655
-rw-r--r--Master/texmf-dist/tex/context/base/core-nav.tex368
-rw-r--r--Master/texmf-dist/tex/context/base/core-new.tex601
-rw-r--r--Master/texmf-dist/tex/context/base/core-not.tex1253
-rw-r--r--Master/texmf-dist/tex/context/base/core-ntb.tex1431
-rw-r--r--Master/texmf-dist/tex/context/base/core-num.tex150
-rw-r--r--Master/texmf-dist/tex/context/base/core-obj.tex408
-rw-r--r--Master/texmf-dist/tex/context/base/core-par.tex300
-rw-r--r--Master/texmf-dist/tex/context/base/core-pos.tex2731
-rw-r--r--Master/texmf-dist/tex/context/base/core-ref.tex3736
-rw-r--r--Master/texmf-dist/tex/context/base/core-reg.tex968
-rw-r--r--Master/texmf-dist/tex/context/base/core-rul.tex3472
-rw-r--r--Master/texmf-dist/tex/context/base/core-sec.tex2473
-rw-r--r--Master/texmf-dist/tex/context/base/core-snc.tex176
-rw-r--r--Master/texmf-dist/tex/context/base/core-spa.tex4433
-rw-r--r--Master/texmf-dist/tex/context/base/core-syn.tex362
-rw-r--r--Master/texmf-dist/tex/context/base/core-sys.tex310
-rw-r--r--Master/texmf-dist/tex/context/base/core-tab.tex2654
-rw-r--r--Master/texmf-dist/tex/context/base/core-tbl.tex1432
-rw-r--r--Master/texmf-dist/tex/context/base/core-uti.tex641
-rw-r--r--Master/texmf-dist/tex/context/base/core-var.tex306
-rw-r--r--Master/texmf-dist/tex/context/base/core-ver.tex1178
-rw-r--r--Master/texmf-dist/tex/context/base/core-vis.tex843
-rw-r--r--Master/texmf-dist/tex/context/base/enco-acc.tex139
-rw-r--r--Master/texmf-dist/tex/context/base/enco-agr.tex356
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ans.tex236
-rw-r--r--Master/texmf-dist/tex/context/base/enco-cas.tex143
-rw-r--r--Master/texmf-dist/tex/context/base/enco-chi.tex261
-rw-r--r--Master/texmf-dist/tex/context/base/enco-com.tex37
-rw-r--r--Master/texmf-dist/tex/context/base/enco-cyr.tex1035
-rw-r--r--Master/texmf-dist/tex/context/base/enco-def.tex832
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ec.tex284
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ecm.tex33
-rw-r--r--Master/texmf-dist/tex/context/base/enco-el.tex272
-rw-r--r--Master/texmf-dist/tex/context/base/enco-fde.tex125
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ffr.tex41
-rw-r--r--Master/texmf-dist/tex/context/base/enco-fpl.tex94
-rw-r--r--Master/texmf-dist/tex/context/base/enco-fro.tex33
-rw-r--r--Master/texmf-dist/tex/context/base/enco-fsl.tex32
-rw-r--r--Master/texmf-dist/tex/context/base/enco-grk.tex190
-rw-r--r--Master/texmf-dist/tex/context/base/enco-heb.tex16
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ibm.tex7
-rw-r--r--Master/texmf-dist/tex/context/base/enco-il2.tex157
-rw-r--r--Master/texmf-dist/tex/context/base/enco-ini.tex1992
-rw-r--r--Master/texmf-dist/tex/context/base/enco-lat.tex7
-rw-r--r--Master/texmf-dist/tex/context/base/enco-mis.tex223
-rw-r--r--Master/texmf-dist/tex/context/base/enco-pdf.tex278
-rw-r--r--Master/texmf-dist/tex/context/base/enco-pfr.tex249
-rw-r--r--Master/texmf-dist/tex/context/base/enco-pol.tex274
-rw-r--r--Master/texmf-dist/tex/context/base/enco-qx.tex266
-rw-r--r--Master/texmf-dist/tex/context/base/enco-raw.tex118
-rw-r--r--Master/texmf-dist/tex/context/base/enco-run.tex149
-rw-r--r--Master/texmf-dist/tex/context/base/enco-t5.tex244
-rw-r--r--Master/texmf-dist/tex/context/base/enco-tbo.tex222
-rw-r--r--Master/texmf-dist/tex/context/base/enco-uc.tex1070
-rw-r--r--Master/texmf-dist/tex/context/base/enco-uni.tex5
-rw-r--r--Master/texmf-dist/tex/context/base/enco-vis.tex3
-rw-r--r--Master/texmf-dist/tex/context/base/enco-vna.tex145
-rw-r--r--Master/texmf-dist/tex/context/base/enco-win.tex7
-rw-r--r--Master/texmf-dist/tex/context/base/enco-x5.tex218
-rw-r--r--Master/texmf-dist/tex/context/base/filt-bas.tex63
-rw-r--r--Master/texmf-dist/tex/context/base/filt-ini.tex142
-rw-r--r--Master/texmf-dist/tex/context/base/font-arb.tex5
-rw-r--r--Master/texmf-dist/tex/context/base/font-bfm.tex196
-rw-r--r--Master/texmf-dist/tex/context/base/font-chi.tex1159
-rw-r--r--Master/texmf-dist/tex/context/base/font-heb.tex5
-rw-r--r--Master/texmf-dist/tex/context/base/font-ini.tex4784
-rw-r--r--Master/texmf-dist/tex/context/base/font-map.tex125
-rw-r--r--Master/texmf-dist/tex/context/base/font-run.tex329
-rw-r--r--Master/texmf-dist/tex/context/base/font-uni.tex535
-rw-r--r--Master/texmf-dist/tex/context/base/font-unk.tex185
-rw-r--r--Master/texmf-dist/tex/context/base/hand-def.tex577
-rw-r--r--Master/texmf-dist/tex/context/base/hand-ini.tex670
-rw-r--r--Master/texmf-dist/tex/context/base/java-ans.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/java-exa.tex395
-rw-r--r--Master/texmf-dist/tex/context/base/java-fil.tex48
-rw-r--r--Master/texmf-dist/tex/context/base/java-fld.tex304
-rw-r--r--Master/texmf-dist/tex/context/base/java-ini.tex770
-rw-r--r--Master/texmf-dist/tex/context/base/java-stp.tex127
-rw-r--r--Master/texmf-dist/tex/context/base/lang-all.xml340
-rw-r--r--Master/texmf-dist/tex/context/base/lang-alt.tex92
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ana.tex26
-rw-r--r--Master/texmf-dist/tex/context/base/lang-art.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/lang-bal.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/lang-cel.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/lang-chi.tex192
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ctx.tex47
-rw-r--r--Master/texmf-dist/tex/context/base/lang-cyr.tex369
-rw-r--r--Master/texmf-dist/tex/context/base/lang-dis.tex59
-rw-r--r--Master/texmf-dist/tex/context/base/lang-frd.tex140
-rw-r--r--Master/texmf-dist/tex/context/base/lang-frq.tex217
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ger.tex700
-rw-r--r--Master/texmf-dist/tex/context/base/lang-grk.tex86
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ind.tex26
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ini.tex923
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ita.tex520
-rw-r--r--Master/texmf-dist/tex/context/base/lang-lab.tex277
-rw-r--r--Master/texmf-dist/tex/context/base/lang-run.tex34
-rw-r--r--Master/texmf-dist/tex/context/base/lang-sla.tex555
-rw-r--r--Master/texmf-dist/tex/context/base/lang-spa.tex76
-rw-r--r--Master/texmf-dist/tex/context/base/lang-spe.tex265
-rw-r--r--Master/texmf-dist/tex/context/base/lang-ura.tex160
-rw-r--r--Master/texmf-dist/tex/context/base/lang-vn.tex91
-rw-r--r--Master/texmf-dist/tex/context/base/m-arabtex.tex457
-rw-r--r--Master/texmf-dist/tex/context/base/m-chart.tex1334
-rw-r--r--Master/texmf-dist/tex/context/base/m-chemic.tex27
-rw-r--r--Master/texmf-dist/tex/context/base/m-cweb.tex1371
-rw-r--r--Master/texmf-dist/tex/context/base/m-edtsnc.tex207
-rw-r--r--Master/texmf-dist/tex/context/base/m-educat.tex250
-rw-r--r--Master/texmf-dist/tex/context/base/m-gamma.tex230
-rw-r--r--Master/texmf-dist/tex/context/base/m-graph.tex232
-rw-r--r--Master/texmf-dist/tex/context/base/m-layout.tex102
-rw-r--r--Master/texmf-dist/tex/context/base/m-level.tex94
-rw-r--r--Master/texmf-dist/tex/context/base/m-narrowtt.tex38
-rw-r--r--Master/texmf-dist/tex/context/base/m-newmat.tex301
-rw-r--r--Master/texmf-dist/tex/context/base/m-pdfsnc.tex200
-rw-r--r--Master/texmf-dist/tex/context/base/m-pictex.tex252
-rw-r--r--Master/texmf-dist/tex/context/base/m-plus.tex29
-rw-r--r--Master/texmf-dist/tex/context/base/m-pstric.tex113
-rw-r--r--Master/texmf-dist/tex/context/base/m-quest.tex232
-rw-r--r--Master/texmf-dist/tex/context/base/m-steps.tex901
-rw-r--r--Master/texmf-dist/tex/context/base/m-subsub.tex123
-rw-r--r--Master/texmf-dist/tex/context/base/m-tex4ht.tex9
-rw-r--r--Master/texmf-dist/tex/context/base/m-tryout.tex51
-rw-r--r--Master/texmf-dist/tex/context/base/m-units.tex817
-rw-r--r--Master/texmf-dist/tex/context/base/m-visual.tex287
-rw-r--r--Master/texmf-dist/tex/context/base/math-ams.tex336
-rw-r--r--Master/texmf-dist/tex/context/base/math-eul.tex247
-rw-r--r--Master/texmf-dist/tex/context/base/math-fou.tex196
-rw-r--r--Master/texmf-dist/tex/context/base/math-ini.tex623
-rw-r--r--Master/texmf-dist/tex/context/base/math-lbr.tex443
-rw-r--r--Master/texmf-dist/tex/context/base/math-pln.tex345
-rw-r--r--Master/texmf-dist/tex/context/base/math-run.tex97
-rw-r--r--Master/texmf-dist/tex/context/base/math-tex.tex553
-rw-r--r--Master/texmf-dist/tex/context/base/math-tim.tex371
-rw-r--r--Master/texmf-dist/tex/context/base/math-uni.tex78
-rw-r--r--Master/texmf-dist/tex/context/base/meta-clp.tex164
-rw-r--r--Master/texmf-dist/tex/context/base/meta-dum.tex119
-rw-r--r--Master/texmf-dist/tex/context/base/meta-fig.tex84
-rw-r--r--Master/texmf-dist/tex/context/base/meta-ini.tex970
-rw-r--r--Master/texmf-dist/tex/context/base/meta-nav.tex65
-rw-r--r--Master/texmf-dist/tex/context/base/meta-pag.tex208
-rw-r--r--Master/texmf-dist/tex/context/base/meta-pre.tex68
-rw-r--r--Master/texmf-dist/tex/context/base/meta-txt.tex298
-rw-r--r--Master/texmf-dist/tex/context/base/meta-xml.tex29
-rw-r--r--Master/texmf-dist/tex/context/base/mult-com.tex2117
-rw-r--r--Master/texmf-dist/tex/context/base/mult-con.tex2949
-rw-r--r--Master/texmf-dist/tex/context/base/mult-ini.tex1556
-rw-r--r--Master/texmf-dist/tex/context/base/mult-sys.tex839
-rw-r--r--Master/texmf-dist/tex/context/base/page-app.tex172
-rw-r--r--Master/texmf-dist/tex/context/base/page-bck.tex636
-rw-r--r--Master/texmf-dist/tex/context/base/page-flt.tex2171
-rw-r--r--Master/texmf-dist/tex/context/base/page-flw.tex107
-rw-r--r--Master/texmf-dist/tex/context/base/page-imp.tex1241
-rw-r--r--Master/texmf-dist/tex/context/base/page-ini.tex2004
-rw-r--r--Master/texmf-dist/tex/context/base/page-lay.tex1430
-rw-r--r--Master/texmf-dist/tex/context/base/page-lin.tex501
-rw-r--r--Master/texmf-dist/tex/context/base/page-log.tex236
-rw-r--r--Master/texmf-dist/tex/context/base/page-lyr.tex733
-rw-r--r--Master/texmf-dist/tex/context/base/page-mak.tex226
-rw-r--r--Master/texmf-dist/tex/context/base/page-mar.tex784
-rw-r--r--Master/texmf-dist/tex/context/base/page-mul.tex1679
-rw-r--r--Master/texmf-dist/tex/context/base/page-new.tex265
-rw-r--r--Master/texmf-dist/tex/context/base/page-not.tex72
-rw-r--r--Master/texmf-dist/tex/context/base/page-num.tex558
-rw-r--r--Master/texmf-dist/tex/context/base/page-one.tex639
-rw-r--r--Master/texmf-dist/tex/context/base/page-run.tex382
-rw-r--r--Master/texmf-dist/tex/context/base/page-set.tex2782
-rw-r--r--Master/texmf-dist/tex/context/base/page-sid.tex867
-rw-r--r--Master/texmf-dist/tex/context/base/page-spr.tex104
-rw-r--r--Master/texmf-dist/tex/context/base/page-txt.tex725
-rw-r--r--Master/texmf-dist/tex/context/base/pdfr-ec.tex145
-rw-r--r--Master/texmf-dist/tex/context/base/pdfr-il2.tex233
-rw-r--r--Master/texmf-dist/tex/context/base/plus-rul.tex184
-rw-r--r--Master/texmf-dist/tex/context/base/ppchtex.tex3432
-rw-r--r--Master/texmf-dist/tex/context/base/prop-ini.tex184
-rw-r--r--Master/texmf-dist/tex/context/base/prop-lay.tex124
-rw-r--r--Master/texmf-dist/tex/context/base/prop-mis.tex224
-rw-r--r--Master/texmf-dist/tex/context/base/prop-run.tex39
-rw-r--r--Master/texmf-dist/tex/context/base/regi-cyp.tex1169
-rw-r--r--Master/texmf-dist/tex/context/base/regi-cyr.tex855
-rw-r--r--Master/texmf-dist/tex/context/base/regi-def.tex21
-rw-r--r--Master/texmf-dist/tex/context/base/regi-grk.tex117
-rw-r--r--Master/texmf-dist/tex/context/base/regi-ibm.tex73
-rw-r--r--Master/texmf-dist/tex/context/base/regi-il1.tex154
-rw-r--r--Master/texmf-dist/tex/context/base/regi-ini.tex42
-rw-r--r--Master/texmf-dist/tex/context/base/regi-lat.tex124
-rw-r--r--Master/texmf-dist/tex/context/base/regi-mac.tex147
-rw-r--r--Master/texmf-dist/tex/context/base/regi-uni.tex23
-rw-r--r--Master/texmf-dist/tex/context/base/regi-utf.tex45
-rw-r--r--Master/texmf-dist/tex/context/base/regi-vis.tex152
-rw-r--r--Master/texmf-dist/tex/context/base/regi-win.tex150
-rw-r--r--Master/texmf-dist/tex/context/base/s-abr-01.tex265
-rw-r--r--Master/texmf-dist/tex/context/base/s-abr-02.tex24
-rw-r--r--Master/texmf-dist/tex/context/base/s-abr-03.tex22
-rw-r--r--Master/texmf-dist/tex/context/base/s-chi-00.tex53
-rw-r--r--Master/texmf-dist/tex/context/base/s-faq-00.tex93
-rw-r--r--Master/texmf-dist/tex/context/base/s-faq-01.tex215
-rw-r--r--Master/texmf-dist/tex/context/base/s-faq-02.tex63
-rw-r--r--Master/texmf-dist/tex/context/base/s-faq-03.tex70
-rw-r--r--Master/texmf-dist/tex/context/base/s-fnt-01.tex61
-rw-r--r--Master/texmf-dist/tex/context/base/s-fnt-02.tex106
-rw-r--r--Master/texmf-dist/tex/context/base/s-grk-00.tex77
-rw-r--r--Master/texmf-dist/tex/context/base/s-mag-01.tex399
-rw-r--r--Master/texmf-dist/tex/context/base/s-mod-00.tex507
-rw-r--r--Master/texmf-dist/tex/context/base/s-mod-01.tex148
-rw-r--r--Master/texmf-dist/tex/context/base/s-mod-02.tex417
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-00.tex202
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-01.tex384
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-02.tex361
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-03.tex237
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-04.tex357
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-05.tex220
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-06.tex295
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-07.tex196
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-08.tex271
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-09.tex380
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-10.tex308
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-13.tex282
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-14.tex264
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-15.tex186
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-16.tex203
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-19.tex346
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-22.tex319
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-23.tex109
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-50.tex101
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-60.tex114
-rw-r--r--Master/texmf-dist/tex/context/base/s-pre-61.tex269
-rw-r--r--Master/texmf-dist/tex/context/base/sort-def.tex447
-rw-r--r--Master/texmf-dist/tex/context/base/sort-ini.tex101
-rw-r--r--Master/texmf-dist/tex/context/base/sort-lan.tex106
-rw-r--r--Master/texmf-dist/tex/context/base/sort-new.tex59
-rw-r--r--Master/texmf-dist/tex/context/base/spec-def.tex987
-rw-r--r--Master/texmf-dist/tex/context/base/spec-dpm.tex448
-rw-r--r--Master/texmf-dist/tex/context/base/spec-dpx.tex840
-rw-r--r--Master/texmf-dist/tex/context/base/spec-dvi.tex125
-rw-r--r--Master/texmf-dist/tex/context/base/spec-fdf.tex3197
-rw-r--r--Master/texmf-dist/tex/context/base/spec-ini.tex652
-rw-r--r--Master/texmf-dist/tex/context/base/spec-mis.tex237
-rw-r--r--Master/texmf-dist/tex/context/base/spec-pdf.tex484
-rw-r--r--Master/texmf-dist/tex/context/base/spec-ps.tex229
-rw-r--r--Master/texmf-dist/tex/context/base/spec-tpd.tex1467
-rw-r--r--Master/texmf-dist/tex/context/base/spec-tr.tex118
-rw-r--r--Master/texmf-dist/tex/context/base/spec-tst.tex151
-rw-r--r--Master/texmf-dist/tex/context/base/spec-var.tex70
-rw-r--r--Master/texmf-dist/tex/context/base/spec-win.tex99
-rw-r--r--Master/texmf-dist/tex/context/base/spec-xtx.tex247
-rw-r--r--Master/texmf-dist/tex/context/base/spec-yy.tex75
-rw-r--r--Master/texmf-dist/tex/context/base/supp-ali.tex174
-rw-r--r--Master/texmf-dist/tex/context/base/supp-box.tex2939
-rw-r--r--Master/texmf-dist/tex/context/base/supp-dir.tex70
-rw-r--r--Master/texmf-dist/tex/context/base/supp-emp.tex398
-rw-r--r--Master/texmf-dist/tex/context/base/supp-eps.tex233
-rw-r--r--Master/texmf-dist/tex/context/base/supp-fil.tex748
-rw-r--r--Master/texmf-dist/tex/context/base/supp-fun.tex739
-rw-r--r--Master/texmf-dist/tex/context/base/supp-ini.tex59
-rw-r--r--Master/texmf-dist/tex/context/base/supp-lan.tex1548
-rw-r--r--Master/texmf-dist/tex/context/base/supp-mat.tex159
-rw-r--r--Master/texmf-dist/tex/context/base/supp-mis.tex695
-rw-r--r--Master/texmf-dist/tex/context/base/supp-mpe.tex1327
-rw-r--r--Master/texmf-dist/tex/context/base/supp-mps.tex1864
-rw-r--r--Master/texmf-dist/tex/context/base/supp-mrk.tex614
-rw-r--r--Master/texmf-dist/tex/context/base/supp-num.tex426
-rw-r--r--Master/texmf-dist/tex/context/base/supp-pat.tex177
-rw-r--r--Master/texmf-dist/tex/context/base/supp-pdf.tex2261
-rw-r--r--Master/texmf-dist/tex/context/base/supp-ran.tex173
-rw-r--r--Master/texmf-dist/tex/context/base/supp-spe.tex164
-rw-r--r--Master/texmf-dist/tex/context/base/supp-tpi.tex349
-rw-r--r--Master/texmf-dist/tex/context/base/supp-vis.tex1926
-rw-r--r--Master/texmf-dist/tex/context/base/symb-eur.tex66
-rw-r--r--Master/texmf-dist/tex/context/base/symb-glm.tex77
-rw-r--r--Master/texmf-dist/tex/context/base/symb-ini.tex308
-rw-r--r--Master/texmf-dist/tex/context/base/symb-jmn.tex200
-rw-r--r--Master/texmf-dist/tex/context/base/symb-mis.tex141
-rw-r--r--Master/texmf-dist/tex/context/base/symb-mvs.tex217
-rw-r--r--Master/texmf-dist/tex/context/base/symb-nav.tex124
-rw-r--r--Master/texmf-dist/tex/context/base/symb-run.tex54
-rw-r--r--Master/texmf-dist/tex/context/base/symb-uni.tex1123
-rw-r--r--Master/texmf-dist/tex/context/base/syst-con.tex211
-rw-r--r--Master/texmf-dist/tex/context/base/syst-etx.tex287
-rw-r--r--Master/texmf-dist/tex/context/base/syst-ext.tex4786
-rw-r--r--Master/texmf-dist/tex/context/base/syst-gen.tex4416
-rw-r--r--Master/texmf-dist/tex/context/base/syst-new.tex823
-rw-r--r--Master/texmf-dist/tex/context/base/syst-omg.tex113
-rw-r--r--Master/texmf-dist/tex/context/base/syst-pln.tex646
-rw-r--r--Master/texmf-dist/tex/context/base/syst-prm.tex152
-rw-r--r--Master/texmf-dist/tex/context/base/syst-tex.tex311
-rw-r--r--Master/texmf-dist/tex/context/base/syst-var.tex23
-rw-r--r--Master/texmf-dist/tex/context/base/syst-xtx.tex33
-rw-r--r--Master/texmf-dist/tex/context/base/thrd-ran.tex168
-rw-r--r--Master/texmf-dist/tex/context/base/thrd-tab.tex1961
-rw-r--r--Master/texmf-dist/tex/context/base/thrd-trg.tex114
-rw-r--r--Master/texmf-dist/tex/context/base/type-akb.tex212
-rw-r--r--Master/texmf-dist/tex/context/base/type-buy.tex893
-rw-r--r--Master/texmf-dist/tex/context/base/type-cbg.tex353
-rw-r--r--Master/texmf-dist/tex/context/base/type-def.tex64
-rw-r--r--Master/texmf-dist/tex/context/base/type-dis.tex284
-rw-r--r--Master/texmf-dist/tex/context/base/type-enc.tex1070
-rw-r--r--Master/texmf-dist/tex/context/base/type-exa.tex253
-rw-r--r--Master/texmf-dist/tex/context/base/type-fsf.tex105
-rw-r--r--Master/texmf-dist/tex/context/base/type-ghz.tex173
-rw-r--r--Master/texmf-dist/tex/context/base/type-ini.tex680
-rw-r--r--Master/texmf-dist/tex/context/base/type-map.tex170
-rw-r--r--Master/texmf-dist/tex/context/base/type-msw.tex89
-rw-r--r--Master/texmf-dist/tex/context/base/type-old.tex320
-rw-r--r--Master/texmf-dist/tex/context/base/type-omg.tex204
-rw-r--r--Master/texmf-dist/tex/context/base/type-pre.tex252
-rw-r--r--Master/texmf-dist/tex/context/base/type-run.tex52
-rw-r--r--Master/texmf-dist/tex/context/base/type-siz.tex849
-rw-r--r--Master/texmf-dist/tex/context/base/type-spe.tex49
-rw-r--r--Master/texmf-dist/tex/context/base/type-syn.tex763
-rw-r--r--Master/texmf-dist/tex/context/base/type-xtx.tex500
-rw-r--r--Master/texmf-dist/tex/context/base/typo-ini.tex40
-rw-r--r--Master/texmf-dist/tex/context/base/unic-000.tex135
-rw-r--r--Master/texmf-dist/tex/context/base/unic-001.tex219
-rw-r--r--Master/texmf-dist/tex/context/base/unic-002.tex31
-rw-r--r--Master/texmf-dist/tex/context/base/unic-003.tex141
-rw-r--r--Master/texmf-dist/tex/context/base/unic-004.tex290
-rw-r--r--Master/texmf-dist/tex/context/base/unic-005.tex50
-rw-r--r--Master/texmf-dist/tex/context/base/unic-030.tex113
-rw-r--r--Master/texmf-dist/tex/context/base/unic-031.tex283
-rw-r--r--Master/texmf-dist/tex/context/base/unic-032.tex138
-rw-r--r--Master/texmf-dist/tex/context/base/unic-033.tex131
-rw-r--r--Master/texmf-dist/tex/context/base/unic-034.tex274
-rw-r--r--Master/texmf-dist/tex/context/base/unic-039.tex68
-rw-r--r--Master/texmf-dist/tex/context/base/unic-exp.tex84
-rw-r--r--Master/texmf-dist/tex/context/base/unic-ini.tex667
-rw-r--r--Master/texmf-dist/tex/context/base/unic-run.tex129
-rw-r--r--Master/texmf-dist/tex/context/base/verb-eif.tex211
-rw-r--r--Master/texmf-dist/tex/context/base/verb-ini.tex2089
-rw-r--r--Master/texmf-dist/tex/context/base/verb-js.tex171
-rw-r--r--Master/texmf-dist/tex/context/base/verb-jv.tex222
-rw-r--r--Master/texmf-dist/tex/context/base/verb-mp.tex361
-rw-r--r--Master/texmf-dist/tex/context/base/verb-pas.tex266
-rw-r--r--Master/texmf-dist/tex/context/base/verb-pl.tex547
-rw-r--r--Master/texmf-dist/tex/context/base/verb-raw.tex7
-rw-r--r--Master/texmf-dist/tex/context/base/verb-sql.tex230
-rw-r--r--Master/texmf-dist/tex/context/base/verb-tex.tex300
-rw-r--r--Master/texmf-dist/tex/context/base/verb-xml.tex425
-rw-r--r--Master/texmf-dist/tex/context/base/x-chemml.tex212
-rw-r--r--Master/texmf-dist/tex/context/base/x-contml.tex480
-rw-r--r--Master/texmf-dist/tex/context/base/x-corres.tex136
-rw-r--r--Master/texmf-dist/tex/context/base/x-dir-01.tex145
-rw-r--r--Master/texmf-dist/tex/context/base/x-fdf-00.tex41
-rw-r--r--Master/texmf-dist/tex/context/base/x-fe.tex143
-rw-r--r--Master/texmf-dist/tex/context/base/x-fig-00.tex196
-rw-r--r--Master/texmf-dist/tex/context/base/x-fig-01.tex457
-rw-r--r--Master/texmf-dist/tex/context/base/x-fig-02.tex78
-rw-r--r--Master/texmf-dist/tex/context/base/x-fig-03.tex44
-rw-r--r--Master/texmf-dist/tex/context/base/x-fo.tex4061
-rw-r--r--Master/texmf-dist/tex/context/base/x-foxet.tex15
-rw-r--r--Master/texmf-dist/tex/context/base/x-mathml.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/x-physml.tex16
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-00.tex66
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-01.tex451
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-02.tex72
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-03.tex44
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-04.tex328
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-08.tex114
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-09.tex69
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-10.tex75
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-11.tex110
-rw-r--r--Master/texmf-dist/tex/context/base/x-res-50.tex425
-rw-r--r--Master/texmf-dist/tex/context/base/x-sch-00.tex382
-rw-r--r--Master/texmf-dist/tex/context/base/x-sch-01.tex122
-rw-r--r--Master/texmf-dist/tex/context/base/x-set-01.tex75
-rw-r--r--Master/texmf-dist/tex/context/base/x-set-02.tex35
-rw-r--r--Master/texmf-dist/tex/context/base/x-set-11.tex745
-rw-r--r--Master/texmf-dist/tex/context/base/x-set-12.tex211
-rw-r--r--Master/texmf-dist/tex/context/base/x-xml-01.tex91
-rw-r--r--Master/texmf-dist/tex/context/base/x-xml-02.tex91
-rw-r--r--Master/texmf-dist/tex/context/base/x-xml-11.tex103
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-cml.tex222
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-ent.tex125
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-exp.tex85
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-ext.tex331
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-hyp.tex61
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-ini.tex2875
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-map.tex750
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mea.tex152
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-meb.tex124
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mec.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-meh.tex166
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-men.tex98
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-meo.tex58
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mer.tex185
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mmc.tex1261
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mml.tex518
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mmp.tex567
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxa.tex101
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxb.tex55
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxc.tex10
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxh.tex67
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxn.tex84
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxo.tex14
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-mxr.tex112
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-pml.tex83
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-pmu.tex188
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-pre.tex414
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-prs.tex42
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-raw.tex37
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-rng.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-run.tex317
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-utf.tex21
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-xsd.tex28
-rw-r--r--Master/texmf-dist/tex/context/base/xtag-xsl.tex224
-rw-r--r--Master/texmf-dist/tex/context/bib/bibl-apa.tex379
-rw-r--r--Master/texmf-dist/tex/context/bib/bibl-aps.tex431
-rw-r--r--Master/texmf-dist/tex/context/bib/t-bib.tex1179
-rw-r--r--Master/texmf-dist/tex/context/bib/t-bibltx.tex75
-rw-r--r--Master/texmf-dist/tex/context/config/cont-cz.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-de.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-en.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-it.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-nl.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-ro.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-uk.ini5
-rw-r--r--Master/texmf-dist/tex/context/config/cont-usr.tex101
-rw-r--r--Master/texmf-dist/tex/context/extra/mag-0000.tex40
-rw-r--r--Master/texmf-dist/tex/context/extra/setup-qr.tex77
-rw-r--r--Master/texmf-dist/tex/context/extra/showunic.tex130
-rw-r--r--Master/texmf-dist/tex/context/foxet/fe-bryson.xml12
-rw-r--r--Master/texmf-dist/tex/context/foxet/fe-ward.xml8
-rw-r--r--Master/texmf-dist/tex/context/foxet/fe-zapf.xml14
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0101.fo17
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0102.fo25
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0103.fo21
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0201.fo22
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0301.fo56
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0601.fo29
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0602.fo27
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0603.fo26
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0604.fo26
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0611.fo21
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0612.fo21
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0613.fo21
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0621.fo106
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0641.fo25
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0642.fo27
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0643.fo27
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0644.fo27
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0650.fo26
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0651.fo26
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0701.fo39
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0801.fo55
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0901.fo58
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-0902.fo33
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1001.fo63
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1002.fo31
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1003.fo31
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1004.fo35
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1101.fo63
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1102.fo128
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1103.fo85
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1104.fo28
-rw-r--r--Master/texmf-dist/tex/context/foxet/fo-1201.fo40
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-cz.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-de.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-en.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-it.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-nl.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/cont-ro.xml10229
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-cz.xml1600
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-de.xml1600
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-en.xml1600
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-it.xml1600
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-nl.xml1600
-rw-r--r--Master/texmf-dist/tex/context/interface/keys-ro.xml1600
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ba.hyp36
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ba.pat224
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ca.hyp61
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ca.pat904
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-cy.hyp31
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-cy.pat6760
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-cz.hyp53
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-cz.pat3684
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-da.hyp26
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-da.pat1171
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-de.hyp40
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-de.pat5842
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-deo.hyp35
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-deo.pat5755
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-en.hyp42
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-en.pat4475
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-es.hyp32
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-es.pat608
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-fi.hyp45
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-fi.pat332
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-fr.hyp34
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-fr.pat1181
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-hr.hyp29
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-hr.pat1505
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-hu.hyp25
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-hu.pat13485
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-is.hyp30
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-is.pat4218
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-it.hyp38
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-it.pat377
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-la.hyp35
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-la.pat378
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-nl.hyp75
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-nl.pat12759
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-no.hyp39
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-no.pat2411
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-pl.hyp47
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-pl.pat4080
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-pt.hyp29
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-pt.pat334
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ro.hyp26
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-ro.pat377
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sk.hyp45
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sk.pat2502
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sl.hyp39
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sl.pat1108
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sv.hyp29
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-sv.pat4723
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-tr.hyp32
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-tr.pat822
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-uk.hyp35
-rw-r--r--Master/texmf-dist/tex/context/patterns/lang-uk.pat8554
-rw-r--r--Master/texmf-dist/tex/context/sample/aesop-de.tex25
-rw-r--r--Master/texmf-dist/tex/context/sample/bryson.tex9
-rw-r--r--Master/texmf-dist/tex/context/sample/davis.tex13
-rw-r--r--Master/texmf-dist/tex/context/sample/dawkins.tex20
-rw-r--r--Master/texmf-dist/tex/context/sample/demo-mps.tex23
-rw-r--r--Master/texmf-dist/tex/context/sample/demo-tex.tex23
-rw-r--r--Master/texmf-dist/tex/context/sample/demo-xml.tex53
-rw-r--r--Master/texmf-dist/tex/context/sample/douglas.tex23
-rw-r--r--Master/texmf-dist/tex/context/sample/hawking.tex7
-rw-r--r--Master/texmf-dist/tex/context/sample/knuth.tex16
-rw-r--r--Master/texmf-dist/tex/context/sample/materie.tex50
-rw-r--r--Master/texmf-dist/tex/context/sample/reich.tex11
-rw-r--r--Master/texmf-dist/tex/context/sample/sample.tex52
-rw-r--r--Master/texmf-dist/tex/context/sample/thuan.tex10
-rw-r--r--Master/texmf-dist/tex/context/sample/tufte.tex13
-rw-r--r--Master/texmf-dist/tex/context/sample/ward.tex5
-rw-r--r--Master/texmf-dist/tex/context/sample/zapf.tex11
-rw-r--r--Master/texmf-dist/tex/context/user/cont-sys.rme178
584 files changed, 381783 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/colo-ema.tex b/Master/texmf-dist/tex/context/base/colo-ema.tex
new file mode 100644
index 00000000000..e5e90b2355e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-ema.tex
@@ -0,0 +1,590 @@
+%D \module
+%D [ file=colo-ema,
+%D version=2003.03.20,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=Emacs Colors,
+%D author=Peter Rolf,
+%D date=\currentdate,
+%D copyright=PRAGMA ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% author : Peter Rolf <peter.rolf@arcor.de>
+% last change : 17 march 2003
+% origin : /emacs/etc/rgb.txt
+%
+% USAGE:
+%
+% - select emacs menu: Edit -> Text Properties -> Display
+% Colors, if you don't know what I'm talking about
+% - copy this file to your /texmf/tex/context/user directory
+% and add "\input colo-emacs" to your tex-file
+%
+% IMPORTANT NOTES:
+%
+% - all color names are written as ONE word in lowercase
+% letters (no redundancy as in rgb.txt) so if you want to
+% use the color "Light Sky Blue"/"light sky blue" it's new
+% name is lightskyblue
+% - the grayX values [X=0..100] can only be used with \color
+% [grayX]
+% - use it at your own risk :)
+%
+% HINT:
+%
+% I only include this file (\showcolor [ema]) until I've
+% found the colors I want. Copy and paste the color
+% definitions to a seperate file, to decrease compilation
+% time (540 color definitions).
+
+\definecolor [snow] [r=1,g=.980392,b=.980392]
+\definecolor [ghostwhite] [r=.972549,g=.972549,b=1]
+\definecolor [whitesmoke] [s=.960784]
+\definecolor [gainsboro] [s=.862745]
+\definecolor [floralwhite] [r=1,g=.980392,b=.941176]
+\definecolor [oldlace] [r=.992157,g=.960784,b=.901961]
+\definecolor [linen] [r=.980392,g=.941176,b=.901961]
+\definecolor [antiquewhite] [r=.980392,g=.921569,b=.843137]
+\definecolor [papayawhip] [r=1,g=.937255,b=.835294]
+\definecolor [blanchedalmond] [r=1,g=.921569,b=.803922]
+\definecolor [bisque] [r=1,g=.894118,b=.768627]
+\definecolor [peachpuff] [r=1,g=.854902,b=.72549]
+\definecolor [navajowhite] [r=1,g=.870588,b=.678431]
+\definecolor [moccasin] [r=1,g=.894118,b=.709804]
+\definecolor [cornsilk] [r=1,g=.972549,b=.862745]
+\definecolor [ivory] [r=1,g=1,b=.941176]
+\definecolor [lemonchiffon] [r=1,g=.980392,b=.803922]
+\definecolor [seashell] [r=1,g=.960784,b=.933333]
+\definecolor [honeydew] [r=.941176,g=1,b=.941176]
+\definecolor [mintcream] [r=.960784,g=1,b=.980392]
+\definecolor [azure] [r=.941176,g=1,b=1]
+\definecolor [aliceblue] [r=.941176,g=.972549,b=1]
+\definecolor [lavender] [r=.901961,g=.901961,b=.980392]
+\definecolor [lavenderblush] [r=1,g=.941176,b=.960784]
+\definecolor [mistyrose] [r=1,g=.894118,b=.882353]
+%definecolor[white] [s=1]
+%definecolor[black] [s=0]
+\definecolor [darkslategray] [r=.184314,g=.309804,b=.309804]
+\definecolor [dimgray] [s=.411765]
+\definecolor [slategray] [r=.439216,g=.501961,b=.564706]
+\definecolor [lightslategray] [r=.466667,g=.533333,b=.6]
+\definecolor [gray] [s=.745098]
+\definecolor [lightgray] [s=.827451]
+\definecolor [midnightblue] [r=.098039,g=.098039,b=.439216]
+\definecolor [navy] [b=.501961]
+\definecolor [navyblue] [navy]
+\definecolor [cornflowerblue] [r=.392157,g=.584314,b=.929412]
+\definecolor [darkslateblue] [r=.282353,g=.239216,b=.545098]
+\definecolor [slateblue] [r=.415686,g=.352941,b=.803922]
+\definecolor [mediumslateblue] [r=.482353,g=.407843,b=.933333]
+\definecolor [lightslateblue] [r=.517647,g=.439216,b=1]
+\definecolor [mediumblue] [b=.803922]
+\definecolor [royalblue] [r=.254902,g=.411765,b=.882353]
+%definecolor[blue] [b=1]
+\definecolor [dodgerblue] [r=.117647,g=.564706,b=1]
+\definecolor [deepskyblue] [g=.74902,b=1]
+\definecolor [skyblue] [r=.529412,g=.807843,b=.921569]
+\definecolor [lightskyblue] [r=.529412,g=.807843,b=.980392]
+\definecolor [steelblue] [r=.27451,g=.509804,b=.705882]
+\definecolor [lightsteelblue] [r=.690196,g=.768627,b=.870588]
+\definecolor [lightblue] [r=.678431,g=.847059,b=.901961]
+\definecolor [powderblue] [r=.690196,g=.878431,b=.901961]
+\definecolor [paleturquoise] [r=.686275,g=.933333,b=.933333]
+\definecolor [darkturquoise] [g=.807843,b=.819608]
+\definecolor [mediumturquoise] [r=.282353,g=.819608,b=.8]
+\definecolor [turquoise] [r=.25098,g=.878431,b=.815686]
+%definecolor[cyan] [g=1,b=1]
+\definecolor [lightcyan] [r=.878431,g=1,b=1]
+\definecolor [cadetblue] [r=.372549,g=.619608,b=.627451]
+\definecolor [mediumaquamarine] [r=.4,g=.803922,b=.666667]
+\definecolor [aquamarine] [r=.498039,g=1,b=.831373]
+\definecolor [darkgreen] [g=.392157]
+\definecolor [darkolivegreen] [r=.333333,g=.419608,b=.184314]
+\definecolor [darkseagreen] [r=.560784,g=.737255,b=.560784]
+\definecolor [seagreen] [r=.180392,g=.545098,b=.341176]
+\definecolor [mediumseagreen] [r=.235294,g=.701961,b=.443137]
+\definecolor [lightseagreen] [r=.12549,g=.698039,b=.666667]
+\definecolor [palegreen] [r=.596078,g=.984314,b=.596078]
+\definecolor [springgreen] [g=1,b=.498039]
+\definecolor [lawngreen] [r=.486275,g=.988235]
+%definecolor[green] [g=1]
+\definecolor [chartreuse] [r=.498039,g=1]
+\definecolor [mediumspringgreen] [g=.980392,b=.603922]
+\definecolor [greenyellow] [r=.678431,g=1,b=.184314]
+\definecolor [limegreen] [r=.196078,g=.803922,b=.196078]
+\definecolor [yellowgreen] [r=.603922,g=.803922,b=.196078]
+\definecolor [forestgreen] [r=.133333,g=.545098,b=.133333]
+\definecolor [olivedrab] [r=.419608,g=.556863,b=.137255]
+\definecolor [darkkhaki] [r=.741176,g=.717647,b=.419608]
+\definecolor [khaki] [r=.941176,g=.901961,b=.54902]
+\definecolor [palegoldenrod] [r=.933333,g=.909804,b=.666667]
+\definecolor [lightgoldenrodyellow] [r=.980392,g=.980392,b=.823529]
+\definecolor [lightyellow] [r=1,g=1,b=.878431]
+%definecolor[yellow] [r=1,g=1]
+\definecolor [gold] [r=1,g=.843137]
+\definecolor [lightgoldenrod] [r=.933333,g=.866667,b=.509804]
+\definecolor [goldenrod] [r=.854902,g=.647059,b=.12549]
+\definecolor [darkgoldenrod] [r=.721569,g=.52549,b=.043137]
+\definecolor [rosybrown] [r=.737255,g=.560784,b=.560784]
+\definecolor [indianred] [r=.803922,g=.360784,b=.360784]
+\definecolor [saddlebrown] [r=.545098,g=.270588,b=.07451]
+\definecolor [sienna] [r=.627451,g=.321569,b=.176471]
+\definecolor [peru] [r=.803922,g=.521569,b=.247059]
+\definecolor [burlywood] [r=.870588,g=.721569,b=.529412]
+\definecolor [beige] [r=.960784,g=.960784,b=.862745]
+\definecolor [wheat] [r=.960784,g=.870588,b=.701961]
+\definecolor [sandybrown] [r=.956863,g=.643137,b=.376471]
+\definecolor [tan] [r=.823529,g=.705882,b=.54902]
+\definecolor [chocolate] [r=.823529,g=.411765,b=.117647]
+\definecolor [firebrick] [r=.698039,g=.133333,b=.133333]
+\definecolor [brown] [r=.647059,g=.164706,b=.164706]
+\definecolor [darksalmon] [r=.913725,g=.588235,b=.478431]
+\definecolor [salmon] [r=.980392,g=.501961,b=.447059]
+\definecolor [lightsalmon] [r=1,g=.627451,b=.478431]
+\definecolor [orange] [r=1,g=.647059]
+\definecolor [darkorange] [r=1,g=.54902]
+\definecolor [coral] [r=1,g=.498039,b=.313725]
+\definecolor [lightcoral] [r=.941176,g=.501961,b=.501961]
+\definecolor [tomato] [r=1,g=.388235,b=.278431]
+\definecolor [orangered] [r=1,g=.270588]
+%definecolor[red] [r=1]
+\definecolor [hotpink] [r=1,g=.411765,b=.705882]
+\definecolor [deeppink] [r=1,g=.078431,b=.576471]
+\definecolor [pink] [r=1,g=.752941,b=.796078]
+\definecolor [lightpink] [r=1,g=.713725,b=.756863]
+\definecolor [palevioletred] [r=.858824,g=.439216,b=.576471]
+\definecolor [maroon] [r=.690196,g=.188235,b=.376471]
+\definecolor [mediumvioletred] [r=.780392,g=.082353,b=.521569]
+\definecolor [violetred] [r=.815686,g=.12549,b=.564706]
+%definecolor[magenta] [r=1,b=1]
+\definecolor [violet] [r=.933333,g=.509804,b=.933333]
+\definecolor [plum] [r=.866667,g=.627451,b=.866667]
+\definecolor [orchid] [r=.854902,g=.439216,b=.839216]
+\definecolor [mediumorchid] [r=.729412,g=.333333,b=.827451]
+\definecolor [darkorchid] [r=.6,g=.196078,b=.8]
+\definecolor [darkviolet] [r=.580392,b=.827451]
+\definecolor [blueviolet] [r=.541176,g=.168627,b=.886275]
+\definecolor [purple] [r=.627451,g=.12549,b=.941176]
+\definecolor [mediumpurple] [r=.576471,g=.439216,b=.858824]
+\definecolor [thistle] [r=.847059,g=.74902,b=.847059]
+\definecolor [snow1] [r=1,g=.980392,b=.980392]
+\definecolor [snow2] [r=.933333,g=.913725,b=.913725]
+\definecolor [snow3] [r=.803922,g=.788235,b=.788235]
+\definecolor [snow4] [r=.545098,g=.537255,b=.537255]
+\definecolor [seashell1] [r=1,g=.960784,b=.933333]
+\definecolor [seashell2] [r=.933333,g=.898039,b=.870588]
+\definecolor [seashell3] [r=.803922,g=.772549,b=.74902]
+\definecolor [seashell4] [r=.545098,g=.52549,b=.509804]
+\definecolor [antiquewhite1] [r=1,g=.937255,b=.858824]
+\definecolor [antiquewhite2] [r=.933333,g=.87451,b=.8]
+\definecolor [antiquewhite3] [r=.803922,g=.752941,b=.690196]
+\definecolor [antiquewhite4] [r=.545098,g=.513725,b=.470588]
+\definecolor [bisque1] [r=1,g=.894118,b=.768627]
+\definecolor [bisque2] [r=.933333,g=.835294,b=.717647]
+\definecolor [bisque3] [r=.803922,g=.717647,b=.619608]
+\definecolor [bisque4] [r=.545098,g=.490196,b=.419608]
+\definecolor [peachpuff1] [r=1,g=.854902,b=.72549]
+\definecolor [peachpuff2] [r=.933333,g=.796078,b=.678431]
+\definecolor [peachpuff3] [r=.803922,g=.686275,b=.584314]
+\definecolor [peachpuff4] [r=.545098,g=.466667,b=.396078]
+\definecolor [navajowhite1] [r=1,g=.870588,b=.678431]
+\definecolor [navajowhite2] [r=.933333,g=.811765,b=.631373]
+\definecolor [navajowhite3] [r=.803922,g=.701961,b=.545098]
+\definecolor [navajowhite4] [r=.545098,g=.47451,b=.368627]
+\definecolor [lemonchiffon1] [r=1,g=.980392,b=.803922]
+\definecolor [lemonchiffon2] [r=.933333,g=.913725,b=.74902]
+\definecolor [lemonchiffon3] [r=.803922,g=.788235,b=.647059]
+\definecolor [lemonchiffon4] [r=.545098,g=.537255,b=.439216]
+\definecolor [cornsilk1] [r=1,g=.972549,b=.862745]
+\definecolor [cornsilk2] [r=.933333,g=.909804,b=.803922]
+\definecolor [cornsilk3] [r=.803922,g=.784314,b=.694118]
+\definecolor [cornsilk4] [r=.545098,g=.533333,b=.470588]
+\definecolor [ivory1] [r=1,g=1,b=.941176]
+\definecolor [ivory2] [r=.933333,g=.933333,b=.878431]
+\definecolor [ivory3] [r=.803922,g=.803922,b=.756863]
+\definecolor [ivory4] [r=.545098,g=.545098,b=.513725]
+\definecolor [honeydew1] [r=.941176,g=1,b=.941176]
+\definecolor [honeydew2] [r=.878431,g=.933333,b=.878431]
+\definecolor [honeydew3] [r=.756863,g=.803922,b=.756863]
+\definecolor [honeydew4] [r=.513725,g=.545098,b=.513725]
+\definecolor [lavenderblush1] [r=1,g=.941176,b=.960784]
+\definecolor [lavenderblush2] [r=.933333,g=.878431,b=.898039]
+\definecolor [lavenderblush3] [r=.803922,g=.756863,b=.772549]
+\definecolor [lavenderblush4] [r=.545098,g=.513725,b=.52549]
+\definecolor [mistyrose1] [r=1,g=.894118,b=.882353]
+\definecolor [mistyrose2] [r=.933333,g=.835294,b=.823529]
+\definecolor [mistyrose3] [r=.803922,g=.717647,b=.709804]
+\definecolor [mistyrose4] [r=.545098,g=.490196,b=.482353]
+\definecolor [azure1] [r=.941176,g=1,b=1]
+\definecolor [azure2] [r=.878431,g=.933333,b=.933333]
+\definecolor [azure3] [r=.756863,g=.803922,b=.803922]
+\definecolor [azure4] [r=.513725,g=.545098,b=.545098]
+\definecolor [slateblue1] [r=.513725,g=.435294,b=1]
+\definecolor [slateblue2] [r=.478431,g=.403922,b=.933333]
+\definecolor [slateblue3] [r=.411765,g=.34902,b=.803922]
+\definecolor [slateblue4] [r=.278431,g=.235294,b=.545098]
+\definecolor [royalblue1] [r=.282353,g=.462745,b=1]
+\definecolor [royalblue2] [r=.262745,g=.431373,b=.933333]
+\definecolor [royalblue3] [r=.227451,g=.372549,b=.803922]
+\definecolor [royalblue4] [r=.152941,g=.25098,b=.545098]
+\definecolor [blue1] [blue]
+\definecolor [blue2] [b=.933333]
+\definecolor [blue3] [b=.803922]
+\definecolor [blue4] [b=.545098]
+\definecolor [dodgerblue1] [r=.117647,g=.564706,b=1]
+\definecolor [dodgerblue2] [r=.109804,g=.52549,b=.933333]
+\definecolor [dodgerblue3] [r=.094118,g=.454902,b=.803922]
+\definecolor [dodgerblue4] [r=.062745,g=.305882,b=.545098]
+\definecolor [steelblue1] [r=.388235,g=.721569,b=1]
+\definecolor [steelblue2] [r=.360784,g=.67451,b=.933333]
+\definecolor [steelblue3] [r=.309804,g=.580392,b=.803922]
+\definecolor [steelblue4] [r=.211765,g=.392157,b=.545098]
+\definecolor [deepskyblue1] [g=.74902,b=1]
+\definecolor [deepskyblue2] [g=.698039,b=.933333]
+\definecolor [deepskyblue3] [g=.603922,b=.803922]
+\definecolor [deepskyblue4] [g=.407843,b=.545098]
+\definecolor [skyblue1] [r=.529412,g=.807843,b=1]
+\definecolor [skyblue2] [r=.494118,g=.752941,b=.933333]
+\definecolor [skyblue3] [r=.423529,g=.65098,b=.803922]
+\definecolor [skyblue4] [r=.290196,g=.439216,b=.545098]
+\definecolor [lightskyblue1] [r=.690196,g=.886275,b=1]
+\definecolor [lightskyblue2] [r=.643137,g=.827451,b=.933333]
+\definecolor [lightskyblue3] [r=.552941,g=.713725,b=.803922]
+\definecolor [lightskyblue4] [r=.376471,g=.482353,b=.545098]
+\definecolor [slategray1] [r=.776471,g=.886275,b=1]
+\definecolor [slategray2] [r=.72549,g=.827451,b=.933333]
+\definecolor [slategray3] [r=.623529,g=.713725,b=.803922]
+\definecolor [slategray4] [r=.423529,g=.482353,b=.545098]
+\definecolor [lightsteelblue1] [r=.792157,g=.882353,b=1]
+\definecolor [lightsteelblue2] [r=.737255,g=.823529,b=.933333]
+\definecolor [lightsteelblue3] [r=.635294,g=.709804,b=.803922]
+\definecolor [lightsteelblue4] [r=.431373,g=.482353,b=.545098]
+\definecolor [lightblue1] [r=.74902,g=.937255,b=1]
+\definecolor [lightblue2] [r=.698039,g=.87451,b=.933333]
+\definecolor [lightblue3] [r=.603922,g=.752941,b=.803922]
+\definecolor [lightblue4] [r=.407843,g=.513725,b=.545098]
+\definecolor [lightcyan1] [r=.878431,g=1,b=1]
+\definecolor [lightcyan2] [r=.819608,g=.933333,b=.933333]
+\definecolor [lightcyan3] [r=.705882,g=.803922,b=.803922]
+\definecolor [lightcyan4] [r=.478431,g=.545098,b=.545098]
+\definecolor [paleturquoise1] [r=.733333,g=1,b=1]
+\definecolor [paleturquoise2] [r=.682353,g=.933333,b=.933333]
+\definecolor [paleturquoise3] [r=.588235,g=.803922,b=.803922]
+\definecolor [paleturquoise4] [r=.4,g=.545098,b=.545098]
+\definecolor [cadetblue1] [r=.596078,g=.960784,b=1]
+\definecolor [cadetblue2] [r=.556863,g=.898039,b=.933333]
+\definecolor [cadetblue3] [r=.478431,g=.772549,b=.803922]
+\definecolor [cadetblue4] [r=.32549,g=.52549,b=.545098]
+\definecolor [turquoise1] [g=.960784,b=1]
+\definecolor [turquoise2] [g=.898039,b=.933333]
+\definecolor [turquoise3] [g=.772549,b=.803922]
+\definecolor [turquoise4] [g=.52549,b=.545098]
+\definecolor [cyan1] [cyan]
+\definecolor [cyan2] [g=.933333,b=.933333]
+\definecolor [cyan3] [g=.803922,b=.803922]
+\definecolor [cyan4] [g=.545098,b=.545098]
+\definecolor [darkslategray1] [r=.592157,g=1,b=1]
+\definecolor [darkslategray2] [r=.552941,g=.933333,b=.933333]
+\definecolor [darkslategray3] [r=.47451,g=.803922,b=.803922]
+\definecolor [darkslategray4] [r=.321569,g=.545098,b=.545098]
+\definecolor [aquamarine1] [r=.498039,g=1,b=.831373]
+\definecolor [aquamarine2] [r=.462745,g=.933333,b=.776471]
+\definecolor [aquamarine3] [r=.4,g=.803922,b=.666667]
+\definecolor [aquamarine4] [r=.270588,g=.545098,b=.454902]
+\definecolor [darkseagreen1] [r=.756863,g=1,b=.756863]
+\definecolor [darkseagreen2] [r=.705882,g=.933333,b=.705882]
+\definecolor [darkseagreen3] [r=.607843,g=.803922,b=.607843]
+\definecolor [darkseagreen4] [r=.411765,g=.545098,b=.411765]
+\definecolor [seagreen1] [r=.329412,g=1,b=.623529]
+\definecolor [seagreen2] [r=.305882,g=.933333,b=.580392]
+\definecolor [seagreen3] [r=.262745,g=.803922,b=.501961]
+\definecolor [seagreen4] [r=.180392,g=.545098,b=.341176]
+\definecolor [palegreen1] [r=.603922,g=1,b=.603922]
+\definecolor [palegreen2] [r=.564706,g=.933333,b=.564706]
+\definecolor [palegreen3] [r=.486275,g=.803922,b=.486275]
+\definecolor [palegreen4] [r=.329412,g=.545098,b=.329412]
+\definecolor [springgreen1] [g=1,b=.498039]
+\definecolor [springgreen2] [g=.933333,b=.462745]
+\definecolor [springgreen3] [g=.803922,b=.4]
+\definecolor [springgreen4] [g=.545098,b=.270588]
+\definecolor [green1] [green]
+\definecolor [green2] [g=.933333]
+\definecolor [green3] [g=.803922]
+\definecolor [green4] [g=.545098]
+\definecolor [chartreuse1] [r=.498039,g=1]
+\definecolor [chartreuse2] [r=.462745,g=.933333]
+\definecolor [chartreuse3] [r=.4,g=.803922]
+\definecolor [chartreuse4] [r=.270588,g=.545098]
+\definecolor [olivedrab1] [r=.752941,g=1,b=.243137]
+\definecolor [olivedrab2] [r=.701961,g=.933333,b=.227451]
+\definecolor [olivedrab3] [r=.603922,g=.803922,b=.196078]
+\definecolor [olivedrab4] [r=.411765,g=.545098,b=.133333]
+\definecolor [darkolivegreen1] [r=.792157,g=1,b=.439216]
+\definecolor [darkolivegreen2] [r=.737255,g=.933333,b=.407843]
+\definecolor [darkolivegreen3] [r=.635294,g=.803922,b=.352941]
+\definecolor [darkolivegreen4] [r=.431373,g=.545098,b=.239216]
+\definecolor [khaki1] [r=1,g=.964706,b=.560784]
+\definecolor [khaki2] [r=.933333,g=.901961,b=.521569]
+\definecolor [khaki3] [r=.803922,g=.776471,b=.45098]
+\definecolor [khaki4] [r=.545098,g=.52549,b=.305882]
+\definecolor [lightgoldenrod1] [r=1,g=.92549,b=.545098]
+\definecolor [lightgoldenrod2] [r=.933333,g=.862745,b=.509804]
+\definecolor [lightgoldenrod3] [r=.803922,g=.745098,b=.439216]
+\definecolor [lightgoldenrod4] [r=.545098,g=.505882,b=.298039]
+\definecolor [lightyellow1] [r=1,g=1,b=.878431]
+\definecolor [lightyellow2] [r=.933333,g=.933333,b=.819608]
+\definecolor [lightyellow3] [r=.803922,g=.803922,b=.705882]
+\definecolor [lightyellow4] [r=.545098,g=.545098,b=.478431]
+\definecolor [yellow1] [yellow]
+\definecolor [yellow2] [r=.933333,g=.933333]
+\definecolor [yellow3] [r=.803922,g=.803922]
+\definecolor [yellow4] [r=.545098,g=.545098]
+\definecolor [gold1] [r=1,g=.843137]
+\definecolor [gold2] [r=.933333,g=.788235]
+\definecolor [gold3] [r=.803922,g=.678431]
+\definecolor [gold4] [r=.545098,g=.458824]
+\definecolor [goldenrod1] [r=1,g=.756863,b=.145098]
+\definecolor [goldenrod2] [r=.933333,g=.705882,b=.133333]
+\definecolor [goldenrod3] [r=.803922,g=.607843,b=.113725]
+\definecolor [goldenrod4] [r=.545098,g=.411765,b=.078431]
+\definecolor [darkgoldenrod1] [r=1,g=.72549,b=.058824]
+\definecolor [darkgoldenrod2] [r=.933333,g=.678431,b=.054902]
+\definecolor [darkgoldenrod3] [r=.803922,g=.584314,b=.047059]
+\definecolor [darkgoldenrod4] [r=.545098,g=.396078,b=.031373]
+\definecolor [rosybrown1] [r=1,g=.756863,b=.756863]
+\definecolor [rosybrown2] [r=.933333,g=.705882,b=.705882]
+\definecolor [rosybrown3] [r=.803922,g=.607843,b=.607843]
+\definecolor [rosybrown4] [r=.545098,g=.411765,b=.411765]
+\definecolor [indianred1] [r=1,g=.415686,b=.415686]
+\definecolor [indianred2] [r=.933333,g=.388235,b=.388235]
+\definecolor [indianred3] [r=.803922,g=.333333,b=.333333]
+\definecolor [indianred4] [r=.545098,g=.227451,b=.227451]
+\definecolor [sienna1] [r=1,g=.509804,b=.278431]
+\definecolor [sienna2] [r=.933333,g=.47451,b=.258824]
+\definecolor [sienna3] [r=.803922,g=.407843,b=.223529]
+\definecolor [sienna4] [r=.545098,g=.278431,b=.14902]
+\definecolor [burlywood1] [r=1,g=.827451,b=.607843]
+\definecolor [burlywood2] [r=.933333,g=.772549,b=.568627]
+\definecolor [burlywood3] [r=.803922,g=.666667,b=.490196]
+\definecolor [burlywood4] [r=.545098,g=.45098,b=.333333]
+\definecolor [wheat1] [r=1,g=.905882,b=.729412]
+\definecolor [wheat2] [r=.933333,g=.847059,b=.682353]
+\definecolor [wheat3] [r=.803922,g=.729412,b=.588235]
+\definecolor [wheat4] [r=.545098,g=.494118,b=.4]
+\definecolor [tan1] [r=1,g=.647059,b=.309804]
+\definecolor [tan2] [r=.933333,g=.603922,b=.286275]
+\definecolor [tan3] [r=.803922,g=.521569,b=.247059]
+\definecolor [tan4] [r=.545098,g=.352941,b=.168627]
+\definecolor [chocolate1] [r=1,g=.498039,b=.141176]
+\definecolor [chocolate2] [r=.933333,g=.462745,b=.129412]
+\definecolor [chocolate3] [r=.803922,g=.4,b=.113725]
+\definecolor [chocolate4] [r=.545098,g=.270588,b=.07451]
+\definecolor [firebrick1] [r=1,g=.188235,b=.188235]
+\definecolor [firebrick2] [r=.933333,g=.172549,b=.172549]
+\definecolor [firebrick3] [r=.803922,g=.14902,b=.14902]
+\definecolor [firebrick4] [r=.545098,g=.101961,b=.101961]
+\definecolor [brown1] [r=1,g=.25098,b=.25098]
+\definecolor [brown2] [r=.933333,g=.231373,b=.231373]
+\definecolor [brown3] [r=.803922,g=.2,b=.2]
+\definecolor [brown4] [r=.545098,g=.137255,b=.137255]
+\definecolor [salmon1] [r=1,g=.54902,b=.411765]
+\definecolor [salmon2] [r=.933333,g=.509804,b=.384314]
+\definecolor [salmon3] [r=.803922,g=.439216,b=.329412]
+\definecolor [salmon4] [r=.545098,g=.298039,b=.223529]
+\definecolor [lightsalmon1] [r=1,g=.627451,b=.478431]
+\definecolor [lightsalmon2] [r=.933333,g=.584314,b=.447059]
+\definecolor [lightsalmon3] [r=.803922,g=.505882,b=.384314]
+\definecolor [lightsalmon4] [r=.545098,g=.341176,b=.258824]
+\definecolor [orange1] [r=1,g=.647059]
+\definecolor [orange2] [r=.933333,g=.603922]
+\definecolor [orange3] [r=.803922,g=.521569]
+\definecolor [orange4] [r=.545098,g=.352941]
+\definecolor [darkorange1] [r=1,g=.498039]
+\definecolor [darkorange2] [r=.933333,g=.462745]
+\definecolor [darkorange3] [r=.803922,g=.4]
+\definecolor [darkorange4] [r=.545098,g=.270588]
+\definecolor [coral1] [r=1,g=.447059,b=.337255]
+\definecolor [coral2] [r=.933333,g=.415686,b=.313725]
+\definecolor [coral3] [r=.803922,g=.356863,b=.270588]
+\definecolor [coral4] [r=.545098,g=.243137,b=.184314]
+\definecolor [tomato1] [r=1,g=.388235,b=.278431]
+\definecolor [tomato2] [r=.933333,g=.360784,b=.258824]
+\definecolor [tomato3] [r=.803922,g=.309804,b=.223529]
+\definecolor [tomato4] [r=.545098,g=.211765,b=.14902]
+\definecolor [orangered1] [r=1,g=.270588]
+\definecolor [orangered2] [r=.933333,g=.25098]
+\definecolor [orangered3] [r=.803922,g=.215686]
+\definecolor [orangered4] [r=.545098,g=.145098]
+\definecolor [red1] [red]
+\definecolor [red2] [r=.933333]
+\definecolor [red3] [r=.803922]
+\definecolor [red4] [r=.545098]
+\definecolor [deeppink1] [r=1,g=.078431,b=.576471]
+\definecolor [deeppink2] [r=.933333,g=.070588,b=.537255]
+\definecolor [deeppink3] [r=.803922,g=.062745,b=.462745]
+\definecolor [deeppink4] [r=.545098,g=.039216,b=.313725]
+\definecolor [hotpink1] [r=1,g=.431373,b=.705882]
+\definecolor [hotpink2] [r=.933333,g=.415686,b=.654902]
+\definecolor [hotpink3] [r=.803922,g=.376471,b=.564706]
+\definecolor [hotpink4] [r=.545098,g=.227451,b=.384314]
+\definecolor [pink1] [r=1,g=.709804,b=.772549]
+\definecolor [pink2] [r=.933333,g=.662745,b=.721569]
+\definecolor [pink3] [r=.803922,g=.568627,b=.619608]
+\definecolor [pink4] [r=.545098,g=.388235,b=.423529]
+\definecolor [lightpink1] [r=1,g=.682353,b=.72549]
+\definecolor [lightpink2] [r=.933333,g=.635294,b=.678431]
+\definecolor [lightpink3] [r=.803922,g=.54902,b=.584314]
+\definecolor [lightpink4] [r=.545098,g=.372549,b=.396078]
+\definecolor [palevioletred1] [r=1,g=.509804,b=.670588]
+\definecolor [palevioletred2] [r=.933333,g=.47451,b=.623529]
+\definecolor [palevioletred3] [r=.803922,g=.407843,b=.537255]
+\definecolor [palevioletred4] [r=.545098,g=.278431,b=.364706]
+\definecolor [maroon1] [r=1,g=.203922,b=.701961]
+\definecolor [maroon2] [r=.933333,g=.188235,b=.654902]
+\definecolor [maroon3] [r=.803922,g=.160784,b=.564706]
+\definecolor [maroon4] [r=.545098,g=.109804,b=.384314]
+\definecolor [violetred1] [r=1,g=.243137,b=.588235]
+\definecolor [violetred2] [r=.933333,g=.227451,b=.54902]
+\definecolor [violetred3] [r=.803922,g=.196078,b=.470588]
+\definecolor [violetred4] [r=.545098,g=.133333,b=.321569]
+\definecolor [magenta1] [magenta]
+\definecolor [magenta2] [r=.933333,b=.933333]
+\definecolor [magenta3] [r=.803922,b=.803922]
+\definecolor [magenta4] [r=.545098,b=.545098]
+\definecolor [orchid1] [r=1,g=.513725,b=.980392]
+\definecolor [orchid2] [r=.933333,g=.478431,b=.913725]
+\definecolor [orchid3] [r=.803922,g=.411765,b=.788235]
+\definecolor [orchid4] [r=.545098,g=.278431,b=.537255]
+\definecolor [plum1] [r=1,g=.733333,b=1]
+\definecolor [plum2] [r=.933333,g=.682353,b=.933333]
+\definecolor [plum3] [r=.803922,g=.588235,b=.803922]
+\definecolor [plum4] [r=.545098,g=.4,b=.545098]
+\definecolor [mediumorchid1] [r=.878431,g=.4,b=1]
+\definecolor [mediumorchid2] [r=.819608,g=.372549,b=.933333]
+\definecolor [mediumorchid3] [r=.705882,g=.321569,b=.803922]
+\definecolor [mediumorchid4] [r=.478431,g=.215686,b=.545098]
+\definecolor [darkorchid1] [r=.74902,g=.243137,b=1]
+\definecolor [darkorchid2] [r=.698039,g=.227451,b=.933333]
+\definecolor [darkorchid3] [r=.603922,g=.196078,b=.803922]
+\definecolor [darkorchid4] [r=.407843,g=.133333,b=.545098]
+\definecolor [purple1] [r=.607843,g=.188235,b=1]
+\definecolor [purple2] [r=.568627,g=.172549,b=.933333]
+\definecolor [purple3] [r=.490196,g=.14902,b=.803922]
+\definecolor [purple4] [r=.333333,g=.101961,b=.545098]
+\definecolor [mediumpurple1] [r=.670588,g=.509804,b=1]
+\definecolor [mediumpurple2] [r=.623529,g=.47451,b=.933333]
+\definecolor [mediumpurple3] [r=.537255,g=.407843,b=.803922]
+\definecolor [mediumpurple4] [r=.364706,g=.278431,b=.545098]
+\definecolor [thistle1] [r=1,g=.882353,b=1]
+\definecolor [thistle2] [r=.933333,g=.823529,b=.933333]
+\definecolor [thistle3] [r=.803922,g=.709804,b=.803922]
+\definecolor [thistle4] [r=.545098,g=.482353,b=.545098]
+\definecolor [gray0] [black]
+\definecolor [gray1] [s=.01]
+\definecolor [gray2] [s=.02]
+\definecolor [gray3] [s=.03]
+\definecolor [gray4] [s=.04]
+\definecolor [gray5] [s=.05]
+\definecolor [gray6] [s=.06]
+\definecolor [gray7] [s=.07]
+\definecolor [gray8] [s=.08]
+\definecolor [gray9] [s=.09]
+\definecolor [gray10] [s=.1]
+\definecolor [gray11] [s=.11]
+\definecolor [gray12] [s=.12]
+\definecolor [gray13] [s=.13]
+\definecolor [gray14] [s=.14]
+\definecolor [gray15] [s=.15]
+\definecolor [gray16] [s=.16]
+\definecolor [gray17] [s=.17]
+\definecolor [gray18] [s=.18]
+\definecolor [gray19] [s=.19]
+\definecolor [gray20] [s=.2]
+\definecolor [gray21] [s=.21]
+\definecolor [gray22] [s=.22]
+\definecolor [gray23] [s=.23]
+\definecolor [gray24] [s=.24]
+\definecolor [gray25] [s=.25]
+\definecolor [gray26] [s=.26]
+\definecolor [gray27] [s=.27]
+\definecolor [gray28] [s=.28]
+\definecolor [gray29] [s=.29]
+\definecolor [gray30] [s=.3]
+\definecolor [gray31] [s=.31]
+\definecolor [gray32] [s=.32]
+\definecolor [gray33] [s=.33]
+\definecolor [gray34] [s=.34]
+\definecolor [gray35] [s=.35]
+\definecolor [gray36] [s=.36]
+\definecolor [gray37] [s=.37]
+\definecolor [gray38] [s=.38]
+\definecolor [gray39] [s=.39]
+\definecolor [gray40] [s=.4]
+\definecolor [gray41] [s=.41]
+\definecolor [gray42] [s=.42]
+\definecolor [gray43] [s=.43]
+\definecolor [gray44] [s=.44]
+\definecolor [gray45] [s=.45]
+\definecolor [gray46] [s=.46]
+\definecolor [gray47] [s=.47]
+\definecolor [gray48] [s=.48]
+\definecolor [gray49] [s=.49]
+\definecolor [gray50] [s=.5]
+\definecolor [gray51] [s=.51]
+\definecolor [gray52] [s=.52]
+\definecolor [gray53] [s=.53]
+\definecolor [gray54] [s=.54]
+\definecolor [gray55] [s=.55]
+\definecolor [gray56] [s=.56]
+\definecolor [gray57] [s=.57]
+\definecolor [gray58] [s=.58]
+\definecolor [gray59] [s=.59]
+\definecolor [gray60] [s=.6]
+\definecolor [gray61] [s=.61]
+\definecolor [gray62] [s=.62]
+\definecolor [gray63] [s=.63]
+\definecolor [gray64] [s=.64]
+\definecolor [gray65] [s=.65]
+\definecolor [gray66] [s=.66]
+\definecolor [gray67] [s=.67]
+\definecolor [gray68] [s=.68]
+\definecolor [gray69] [s=.69]
+\definecolor [gray70] [s=.7]
+\definecolor [gray71] [s=.71]
+\definecolor [gray72] [s=.72]
+\definecolor [gray73] [s=.73]
+\definecolor [gray74] [s=.74]
+\definecolor [gray75] [s=.75]
+\definecolor [gray76] [s=.76]
+\definecolor [gray77] [s=.77]
+\definecolor [gray78] [s=.78]
+\definecolor [gray79] [s=.79]
+\definecolor [gray80] [s=.8]
+\definecolor [gray81] [s=.81]
+\definecolor [gray82] [s=.82]
+\definecolor [gray83] [s=.83]
+\definecolor [gray84] [s=.84]
+\definecolor [gray85] [s=.85]
+\definecolor [gray86] [s=.86]
+\definecolor [gray87] [s=.87]
+\definecolor [gray88] [s=.88]
+\definecolor [gray89] [s=.89]
+\definecolor [gray90] [s=.9]
+\definecolor [gray91] [s=.91]
+\definecolor [gray92] [s=.92]
+\definecolor [gray93] [s=.93]
+\definecolor [gray94] [s=.94]
+\definecolor [gray95] [s=.95]
+\definecolor [gray96] [s=.96]
+\definecolor [gray97] [s=.97]
+\definecolor [gray98] [s=.98]
+\definecolor [gray99] [s=.99]
+\definecolor [gray100] [white]
+\definecolor [darkgray] [s=.662745]
+\definecolor [darkblue] [b=.545098]
+\definecolor [darkcyan] [g=.545098,b=.545098]
+\definecolor [darkmagenta] [r=.545098,b=.545098]
+\definecolor [darkred] [r=.545098]
+\definecolor [lightgreen] [r=.564706,g=.933333,b=.564706]
diff --git a/Master/texmf-dist/tex/context/base/colo-ext.tex b/Master/texmf-dist/tex/context/base/colo-ext.tex
new file mode 100644
index 00000000000..182c438fa5a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-ext.tex
@@ -0,0 +1,62 @@
+%D \module
+%D [ file=colo-ext, % mostof thsi code used to be in colo-ini.tex
+%D version=1997.04.01,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=Extras,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Color Macros / extras}
+
+\unprotect
+
+%D \macros
+%D {negatecolorcomponent, negativecolorbox}
+%D
+%D Sometimes, especially when we deal with typesetting
+%D devices, we want to reverse the color scheme. Instead of
+%D recalculating all those colors, we use a quick and dirty
+%D approach:
+%D
+%D \starttyping
+%D \negativecolorbox0
+%D \stoptyping
+%D
+%D will negate the colors in box zero.
+
+\def\negatecolorcomponent#1% #1 = \macro
+ {\scratchdimen\onepoint\advance\scratchdimen-#1\onepoint
+ \ifdim\scratchdimen<\zeropoint\scratchdimen\zeropoint\fi
+ \edef#1{\withoutpt\the\scratchdimen}}
+
+\def\negatecolorbox#1%
+ {\setbox#1\hbox
+ {\dostartnegative
+ \localstartcolor[white]\vrule\!!height\ht#1\!!depth\dp#1\!!width\wd#1\localstopcolor
+ \hskip-\wd#1%
+ \box#1%
+ \dostopnegative}}
+
+%D There are in principle two ways to handle overprint: bound to colors
+%D or independent. For the moment we only support independent overprint
+%D handling. Here we deal with a per-document setting.
+
+\setupcolors
+ [\c!overprint=\v!no]
+
+\def\starttextoverprint
+ {\doifelse\@@cloverprint\v!yes
+ {\let\stoptextoverprint\dostopoverprint\dostartoverprint}
+ {\let\stoptextoverprint\donothing}}
+
+\let\stoptextoverprint\donothing
+
+\appendtoks \starttextoverprint \to \everystarttextproperties
+\appendtoks \stoptextoverprint \to \everystoptextproperties
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/colo-hex.tex b/Master/texmf-dist/tex/context/base/colo-hex.tex
new file mode 100644
index 00000000000..b493b8c6bc5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-hex.tex
@@ -0,0 +1,117 @@
+%D \module
+%D [ file=colo-hex,
+%D version=2004.06.23,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=Hex Colors,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\dodododefinecolor\undefined
+ \beginTEX \endinput \endTEX
+\else
+ \endinput
+\fi
+
+\writestatus{loading}{Context Color Macros / hexadecimal}
+
+% \edef\testcolor{\string#FFC0C0}
+% \edef\testcolor{\string#55}
+%
+% \setupcolors[state=start]
+%
+% \expanded{\definecolor[thehexcolor][\hexcolorspec\testcolor]}
+%
+% \checkhexcolor[\testcolor]
+%
+% \definecolor[thehexcolor][\testcolor]
+%
+% \starttext
+%
+% test \color[thehexcolor]{rood}
+% test \color[red]{rood}
+% test \color[\testcolor]{rood}
+%
+% \stoptext
+
+\unprotect
+
+\newdimen\hexcolorfraction \hexcolorfraction=\dimexpr(1pt/256)
+
+\chardef\hexcolorprefix=`#
+
+\def\hexcolorspec #1{\expandafter\dohexcolorspec #1\empty\empty\empty\empty\relax}
+\def\hexcolorpattern#1{\expandafter\dohexcolorpattern#1\empty\empty\empty\empty\relax}
+
+\ifx\dohexstringtonumber\undefined \def\dohexstringtonumber{"} \fi
+
+\def\hexcolorcomponent#1#2%
+ {\ifnum\dohexstringtonumber#1#2=\zerocount0\else\ifnum\dohexstringtonumber#1#2=\plusone1\else
+ \expandafter\withoutpt\the\dimexpr(\dohexstringtonumber#1#2\hexcolorfraction)%
+ \fi\fi}
+
+\def\dohexcolorspec#1#2#3#4#5#6#7#8\relax
+ {\ifx#4\empty
+ s=\hexcolorcomponent#2#3%
+ \else
+ r=\hexcolorcomponent#2#3,g=\hexcolorcomponent#4#5,b=\hexcolorcomponent#6#7%
+ \fi}
+
+\def\dohexcolorpattern#1#2#3#4#5#6#7#8\relax
+ {0\ifx#4\empty
+ S:\hexcolorcomponent#2#3%
+ \else
+ R:\hexcolorcomponent#2#3:\hexcolorcomponent#4#5:\hexcolorcomponent#6#7%
+ \fi:0:0}
+
+\def\doifhexcolorelse#1%
+ {\expandafter\dodoifhexcolorelse#10\od} % 0 is a dirty trick to catch an empty #1
+
+\def\dodoifhexcolorelse#1#2\od
+ {\ifnum`#1=\hexcolorprefix
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\docheckhexcolor#1%
+ {\doifhexcolorelse{#1}{\doifundefined{#1}{\setxvalue{\??cr#1}{\hexcolorpattern{#1}}}}\donothing}
+
+\def\checkhexcolor[#1]%
+ {\expanded{\docheckhexcolor{#1}}}
+
+\def\colorHpattern{\@EA\hexcolorpattern\@EA{\@EA*\@@cl@@h}} % * == dummy placeholder
+
+\let\dodododefinecolor\dododefinecolor % we will overload this one
+
+\def\dododefinecolor#1#2#3#4[#5][#6]%
+ {\doifhexcolorelse{#6}
+ {\setxvalue{\??cr#5}{\hexcolorpattern{#6}}}
+ {\dodododefinecolor#1#2#3#4[#5][#6]}}
+
+%D For Adam Lindsay and his XeTeX special driver:
+
+% because we intercept the zero condition, the .23pt in 1.23pt will disappear in the
+% ifcase zero part branch
+
+\def\colorhexcomponent#1%
+ {\ifdim#1\points<.005\points
+ 00\else\lchexnumbers{\the\dimexpr(255\dimexpr(#1\points)\relax+.5\points)\relax}%
+ \fi}
+
+% the faster one
+
+\newdimen\hex@color@a \hex@color@a=.005pt
+\newdimen\hex@color@b \hex@color@b=.5pt
+\chardef \hex@color@c =255
+
+\def\colorhexcomponent#1%
+ {\ifdim#1\points<\hex@color@a
+ 00\else\lchexnumbers{\the\dimexpr(#1\points*\hex@color@c+\hex@color@b)\relax}%
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/colo-ini.tex b/Master/texmf-dist/tex/context/base/colo-ini.tex
new file mode 100644
index 00000000000..285c0148643
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-ini.tex
@@ -0,0 +1,2743 @@
+%D \module
+%D [ file=colo-ini,
+%D version=1997.04.01,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Color Macros / initialization}
+
+%D To do: stroke versus fill color
+%D 1000 100 10 -> constants
+
+%D Possible optimization: store level in mark instead of name
+
+\unprotect
+
+%D Color support is not present in \TEX. Colorful output can
+%D however be accomplished by using specials. This also means
+%D that this support depends on the \DVI\ driver used. At the
+%D moment this module was written, still no decent standard on
+%D color specials has been agreed upon. We therefore decided to
+%D implement a mechanism that is as independant as possible of
+%D drivers.
+%D
+%D Color support shares with fonts that is must be implemented
+%D in a way that permits processing of individual \DVI\ pages.
+%D Furthermore it should honour grouping. The first condition
+%D forces us to use a scheme that keeps track of colors at
+%D page boundaries. This can be done by means of \TEX's
+%D marking mechanism (\type{\mark}).
+%D
+%D When building pages, \TEX\ periodically looks at the
+%D accumulated typeset contents and breaks the page when
+%D suitable. At that moment, control is transfered to the
+%D output routine. This routine takes care of building the
+%D pagebody and for instance adds headers and footers. The page
+%D can be broken in the middle of some colored text, but
+%D headers and footers are often in black upon white or
+%D background. If colors are applied there, they definitely
+%D are used local, which means that they don't cross page
+%D borders.
+%D
+%D Boxes are handled as a whole, which means that when we
+%D apply colors inside a box, those colors don't cross page
+%D boundaries, unless of course boxes are split or unboxed.
+%D Especially in interactive texts, colors are often used in
+%D such a local way: in boxes (buttons and navigational tools)
+%D or in the pagebody (backgrounds).
+%D
+%D So we can distinguish local colors, that don't cross
+%D pages from global colors, of which we can end many pages
+%D later. The color macros will treat both types in a different
+%D way, thus gaining some speed.
+%D
+%D This module also deals with gray scales. Because similar
+%D colors can end up in the same gray scale when printed in
+%D black and white, we also implement a palet system that deals
+%D with these matters. Because of fundamental differences
+%D between color and gray scale printing, in \CONTEXT\ we also
+%D differ between these. For historic reasons |<|we first
+%D implemented gray scales using patterns of tiny periods|>|
+%D and therefore called them {\em rasters}. So don't be
+%D surprised if this term shows up.
+
+\startmessages dutch library: colors
+ title: kleur
+ 1: systeem -- is globaal actief
+ 2: systeem -- is lokaal actief
+ 3: -- is niet gedefinieerd
+ 4: systeem -- wordt geladen
+ 5: onbekend systeem --
+ 6: palet -- is beschikbaar
+ 7: palet -- is niet beschikbaar
+ 8: specificatie -- bij -- wordt zwart
+ 9: -- kleurruimte wordt niet ondersteund
+ 10: -- kleurruimte wordt ondersteund
+ 11: kleur wordt vertaald in grijs
+ 12: -- is geregistreerd
+\stopmessages
+
+\startmessages english library: colors
+ title: color
+ 1: system -- is global activated
+ 2: system -- is local activated
+ 3: -- is not defined
+ 4: system -- is loaded
+ 5: unknown system --
+ 6: palette -- is available
+ 7: palette -- is not available
+ 8: specification -- at color -- becomes black
+ 9: -- color space is not supported
+ 10: -- color space is supported
+ 11: color is converted to gray
+ 12: -- is registered
+\stopmessages
+
+\startmessages german library: colors
+ title: farbe
+ 1: system -- ist global aktiviert
+ 2: system -- ist lokal aktiviert
+ 3: -- ist undefiniert
+ 4: system -- ist geladen
+ 5: unbekanntes System --
+ 6: palette -- ist verfuegbar
+ 7: palette -- ist nicht verfuegbar
+ 8: Spezifikation -- bei Farbe -- wird schwarz
+ 9: -- Farbraum wird nicht unterstuetzt
+ 10: -- Farbraum wird unterstuetzt
+ 11: Farbe wird in Grau umgewandelt
+ 12: -- is registered
+\stopmessages
+
+\startmessages czech library: colors
+ title: barva
+ 1: system -- je globalne aktivovana
+ 2: system -- je lokalne activovana
+ 3: -- neni definovana
+ 4: system -- je nacten
+ 5: neznamy system --
+ 6: palette -- je k dispozici
+ 7: palette -- neni k dispozici
+ 8: specifikace -- v barve -- bude cerna
+ 9: -- prostor barev neni podporovan
+ 10: -- prostor barev je podporovan
+ 11: barva je prevedena na sed
+ 12: -- is registered
+\stopmessages
+
+\startmessages italian library: colors
+ title: colore
+ 1: sistema -- attivato globalmente
+ 2: sistema -- attivato localmente
+ 3: -- non definito
+ 4: sistema -- caricato
+ 5: sistema -- sconosciuto
+ 6: tavolozza -- resa disponibile
+ 7: tavolozza -- non disponibile
+ 8: specifica -- del colore -- convertita in nero
+ 9: spazio dei colori -- non supportato
+ 10: spazio dei colori -- supportato
+ 11: il colore è convertito in grigio
+ 12: -- is registered
+\stopmessages
+
+\startmessages norwegian library: colors
+ title: farge
+ 1: system -- er aktivert globalt
+ 2: system -- er aktivert lokalt
+ 3: -- er udefinert
+ 4: system -- er lest inn
+ 5: ukjent system --
+ 6: palett -- er tilgjengelig
+ 7: palett -- er ikke tilgjengelig
+ 8: spesifikasjon -- for farge -- gir kun svart
+ 9: -- fargerom er ikke støttet
+ 10: -- fargerom er støttet
+ 11: fargen vil bli vist som grå
+ 12: -- is registered
+\stopmessages
+
+\startmessages romanian library: colors
+ title: culori
+ 1: sistem -- este activata global
+ 2: sistem -- este activata local
+ 3: -- nu este definita
+ 4: sistem -- este incarcata
+ 5: sistem -- necunoscuta
+ 6: paleta -- este disponibila
+ 7: palette -- nu este disponibila
+ 8: specificatia -- la culoarea -- devine neagra
+ 9: spatiul de culoare -- nu este suportat
+ 10: spatiul de culoare -- este suportat
+ 11: culoarea este convertita la gri
+ 12: -- is registered
+\stopmessages
+
+%D We use a couple of local registers. That way we don't have
+%D to group when converting colors. By the way, this is not
+%D really faster. We can sqeeze half a second runtime for 50K
+%D switches on a 1G machine, but the macros will become rather
+%D ugly then. To mention one such improvement: no colon
+%D after the key character (.25 sec).
+
+\newdimen\colordimen
+\newcount\colorcount
+
+%D \macros
+%D {definecolor}
+%D
+%D We will enable users to specify colors in \cap{RGB} and
+%D \cap{CMYK} color spaces or gray scales using
+%D
+%D \showsetup{definecolor}
+%D
+%D For example:
+%D
+%D \starttyping
+%D \definecolor [SomeKindOfRed] [r=.8,g=.05,b=.05]
+%D \stoptyping
+%D
+%D Such color specifications are saved in a macro in the
+%D following way:
+%D
+%D \starttyping
+%D \setvalue{\??cr name}{R:r:g:b}
+%D \setvalue{\??cr name}{C:c:m:y:k}
+%D \setvalue{\??cr name}{S:s}
+%D \stoptyping
+%D
+%D Gray scales are specified with the \type{s} parameter,
+%D where the \type {s} is derived from {\em screen}.
+%D
+%D Starting with \PDF\ 1.4 (2001) \CONTEXT\ supports
+%D transparent colors. The transparency factor is represented
+%D by a \type {t} and the transparency method by an \type {a}
+%D (alternative). Later we will implement more control
+%D (probably by symbolic methods. So, currently the data is
+%D stored as follows:
+%D
+%D \starttyping
+%D \setvalue{\??cr name}{R:r:g:b:a:t}
+%D \setvalue{\??cr name}{C:c:m:y:k:a:t}
+%D \setvalue{\??cr name}{S:s:a:t}
+%D \stoptyping
+
+% beware: comparisons asked/current on name, not value
+
+\newif\iffreezecolors \freezecolorsfalse
+
+\let\colorlist \empty
+\let\currentspotcolor\empty
+
+\def\@@cl@@z{0}
+\def\@@cl@@o{1}
+
+% \def\@@resetcolorparameters
+% {\let\@@cl@@r\@@cl@@z\let\@@cl@@g\@@cl@@z\let\@@cl@@b\@@cl@@z
+% \let\@@cl@@c\@@cl@@z\let\@@cl@@m\@@cl@@z\let\@@cl@@y\@@cl@@z\let\@@cl@@k\@@cl@@z
+% \let\@@cl@@s\@@cl@@z\let\@@cl@@p\@@cl@@o
+% \let\@@cl@@t\@@cl@@z\let\@@cl@@a\@@cl@@z
+% \let\@@cl@@h\empty \let\@@cl@@n\empty}
+
+% r g b : rbg
+% c m y k : cmyk
+% s : gray
+% p n d f : spot
+% h : hexadecimal
+% t a : transparency
+% e : equivalent (spotcolors)
+
+\def\@@resetcolorparameters
+ {\let\@@cl@@r\@@cl@@z \let\@@cl@@g\@@cl@@z \let\@@cl@@b\@@cl@@z
+ \let\@@cl@@c\@@cl@@z \let\@@cl@@m\@@cl@@z \let\@@cl@@y\@@cl@@z \let\@@cl@@k\@@cl@@z
+ \let\@@cl@@s\@@cl@@z
+ \let\@@cl@@p\@@cl@@o \let\@@cl@@n\empty \let\@@cl@@d\empty \let\@@cl@@f\@@cl@@o
+ \let\@@cl@@h\empty
+ \let\@@cl@@e\empty
+ \let\@@cl@@t\@@cl@@z \let\@@cl@@a\@@cl@@z}
+
+\@@resetcolorparameters
+
+\def\@@cl@@A{\@@cl@@a} % a hook for symbolic conversion, see below
+
+%D Handling a few nested \type{\cs}'s is no problem (\type
+%D {\@EA\@EAEAEA\@EA}) but we need a full expansion, so I
+%D tried one of the fully expandable primitives using a sort
+%D of delimited thing. I tried \type {\number} first, but this
+%D does not work, but \type {\romannumeral} does. Actually,
+%D \type{\romannumeral0} returns nothing, so it's a perfect
+%D candidate for this kind of hackery. This reminds me that I
+%D have to look into David Kastrup's Euro\TeX\ 2002 article
+%D because he is using \type {\romannumeral} for loops
+%D (repetitive \quote {m} stuff).
+
+% \def\x{\y}\def\y{\z}\def\z{0:1:1:1}
+%
+% \def\bla #1:#2:#3\end{}
+%
+% \@EA\bla\romannumeral\x\end
+
+\def\colorXpattern{0S:\@@cl@@z:\@@cl@@z:\@@cl@@z}
+\def\colorZpattern{0S:\@@cl@@z:\@@cl@@A:\@@cl@@t}
+\def\colorSpattern{0S:\@@cl@@s:\@@cl@@A:\@@cl@@t}
+\def\colorCpattern{0C:\@@cl@@c:\@@cl@@m:\@@cl@@y:\@@cl@@k:\@@cl@@A:\@@cl@@t}
+\def\colorRpattern{0R:\@@cl@@r:\@@cl@@g:\@@cl@@b:\@@cl@@A:\@@cl@@t}
+
+%def\colorPpattern{0P:\@@cl@@n:\@@cl@@p:\@@cl@@A:\@@cl@@t}
+
+\def\colorPpattern{0P:\@@cl@@n:\@@cl@@f:\@@cl@@d:\@@cl@@p:\@@cl@@A:\@@cl@@t}
+
+%D The extra 0 catches empty colors specs (needed for the
+%D \type {\MPcolor} and \type {\PDFcolor} conversion (\type
+%D {\@@cr} equals \type {\relax}!).
+
+\def\handlecolorwith#1{\@EA#1\romannumeral0}
+
+%D Next comes the main definition macro.
+
+\def\definecolor {\dodoubleargument\dodefinecolor}
+\def\defineglobalcolor{\dodoubleargument\dodefineglobalcolor}
+\def\definenamedcolor {\dodoubleargument\dodefinenamedcolor}
+
+\def\dodefinecolor {\dododefinecolor\relax \setvalue \setevalue1}
+\def\dodefineglobalcolor{\dododefinecolor\doglobal\setgvalue\setxvalue1}
+\def\dodefinenamedcolor {\dododefinecolor\doglobal\setvalue \setevalue0}
+
+% keep this for readability
+%
+% \def\dodefinecolor[#1][#2]%
+% {\addtocommalist{#1}\colorlist
+% \doifassignmentelse{#2}
+% {\@@resetcolorparameters
+% \getparameters[\??cl @@][#2]%
+% \doifelse{\@@cl@@r\@@cl@@g\@@cl@@b}{\@@cl@@z\@@cl@@z\@@cl@@z}
+% {\doifelse{\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k}{\@@cl@@z\@@cl@@z\@@cl@@z\@@cl@@z}
+% {\doifelse\@@cl@@s\@@cl@@z
+% {\showmessage\m!colors8{{[#2]},#1}%
+% \setevalue{\??cr#1}{\colorZpattern}}
+% {\setevalue{\??cr#1}{\colorSpattern}}}
+% {\setevalue{\??cr#1}{\colorCpattern}}}
+% {\setevalue{\??cr#1}{\colorRpattern}}}
+% {\doifdefinedelse{\??cr#2}
+% {\doifelse{#1}{#2}
+% {% this way we can freeze \definecolor[somecolor][somecolor]
+% % and still prevent cyclic definitions
+% \iffreezecolors\setevalue{\??cr#1}{\getvalue{\??cr#2}}\fi}
+% {\iffreezecolors\@EA\setevalue\else\@EA\setvalue\fi
+% {\??cr#1}{\getvalue{\??cr#2}}}}
+% {\showmessage\m!colors3{#1}}}%
+% \unexpanded\setvalue{#1}{\color[#1]}} % \unexpanded toegevoegd
+
+\def\dododefinecolor#1#2#3#4[#5][#6]% #2==set(g)value #3==set[e|x]value
+ {#1\addtocommalist{#5}\colorlist % optional
+ \doifassignmentelse{#6}
+ {\@@resetcolorparameters
+ \getparameters[\??cl @@][#6]%
+ \ifx\@@cl@@h\empty
+ \doifelse{\@@cl@@r\@@cl@@g\@@cl@@b}{\@@cl@@z\@@cl@@z\@@cl@@z}
+ {\doifelse{\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k}{\@@cl@@z\@@cl@@z\@@cl@@z\@@cl@@z}
+ {\doifelse\@@cl@@s\@@cl@@z
+ {\showmessage\m!colors8{{[#6]},#5}%
+ #3{\??cr#5}{\colorZpattern}}
+ {#3{\??cr#5}{\colorSpattern}}}
+ {#3{\??cr#5}{\colorCpattern}}}
+ {#3{\??cr#5}{\colorRpattern}}%
+ \else
+ \setxvalue{\??cr#5}{\colorHpattern}%
+ \fi
+ % new: e=external spot color name
+ \ifx\@@cl@@e\empty \else
+ \doregisterspotcolorname{#5}\@@cl@@e
+ \fi}
+ {\doifdefinedelse{\??cr#6}
+ {\doifelse{#5}{#6}
+ {% this way we can freeze \definecolor[somecolor][somecolor]
+ % and still prevent cyclic definitions
+ \iffreezecolors#3{\??cr#5}{\getvalue{\??cr#6}}\fi}
+ {\iffreezecolors\@EA#3\else\@EA#2\fi
+ {\??cr#5}{\getvalue{\??cr#6}}}}
+ {\showmessage\m!colors3{#5}}}%
+ \ifcase#4\or
+ \unexpanded#2{#5}{\switchtocolor[#5]}% \unexpanded toegevoegd
+ \fi}
+
+%D Hex color support is not enabled by default. You need to say \setupcolor
+%D [hex] to get this working.
+
+\ifx\colorHpattern\undefined \let\colorHpattern\colorZpattern \fi
+
+%D New and experimental.
+
+\let\allspotcolors \empty
+\let\usedspotcolors \empty
+\let\usedcolorchannels\empty
+
+\def\definespotcolor % [name] [color] [p=,t=,a=]
+ {\dotripleempty\dodefinespotcolor}
+
+\def\dodefinespotcolor[#1][#2][#3]% todo: always global
+ {\doifnot{#1}{#2}
+ {\@@resetcolorparameters
+ \edef\@@cl@@n{#2}%
+ \getparameters[\??cl @@][#3]%
+ \doifnothing\@@cl@@p{\let\@@cl@@p\!!plusone}%
+ \doglobal\addtocommalist{#2}\allspotcolors
+ \setxvalue{\??cr#1}{\colorPpattern}% was \setevalue
+ \setgvalue{#1}{\switchtocolor[#1]}}} % was \setvalue
+
+\def\registerusedspotcolors
+ {\ifx\allspotcolors\empty \else
+ \bgroup
+ \let\usedspotcolors\empty
+ \def\docommand##1%
+ {\doifdefined{\??cs##1}{\addtocommalist{##1}\usedspotcolors}}%
+ \processcommacommand[\allspotcolors]\docommand
+ \savecurrentvalue\usedspotcolors\usedspotcolors
+ \egroup
+ \fi}
+
+\def\registerusedcolorchannels
+ {\bgroup
+ \doifdefinedelse{\??cs c}
+ {\def\usedcolorchannels{c,m,y,k}}%
+ {\let\usedcolorchannels\empty}%
+ \doifdefined{\??cs r}
+ {\addtocommalist{r,g,b}\usedcolorchannels}%
+ \doifdefined{\??cs s}
+ {\ExpandBothAfter\doifnotinset{k}\usedcolorchannels
+ {\addtocommalist{s}\usedcolorchannels}}%
+ \savecurrentvalue\usedcolorchannels\usedcolorchannels
+ \egroup}
+
+\prependtoks
+ \registerusedspotcolors
+ \registerusedcolorchannels
+\to \everylastshipout
+
+\def\registerusedspotcolor#1%
+ {\global\@EA\chardef\csname\??cs#1\endcsname\zerocount}
+
+%D On top of spotcolors, we define multitone colors. You'd better know
+%D what you're doing because invalid definitions will lead to invalid
+%D documents (i.e.\ resources).
+
+% \definecolor [darkblue] [c=.5,m=.5]
+% \definecolor [darkyellow] [y=.5]
+%
+% \definemultitonecolor [whatever] [darkblue=.5,darkyellow=.5] [c=.25,m=.25,y=.25] [a=1,t=.5]
+% \definemultitonecolor [another] [darkblue=.5,darkyellow=.5] [c=.25,m=.25,y=.25]
+
+\def\definemultitonecolor
+ {\doquadrupleempty\dodefinemultitonecolor}
+
+\def\dodefinemultitonecolor[#1][#2][#3][#4]%
+ {\let\@@cl@@cl@@D\empty % n's
+ \let\@@cl@@cl@@P\empty % p's
+ \let\@@cl@@cl@@N\empty % name
+ \scratchcounter\zerocount
+ \processcommacommand[#2]\dododefinemultitonecolor
+ \bgroup
+ \lccode`\.=`\_%
+ \lccode`\,=`\_%
+ \lccode`\:=`\_%
+ \lccode`\;=`\_%
+ \lccode`\+=`\_%
+ \lccode`\-=`\_%
+ \lccode`\*=`\_%
+ \lccode`\/=`\_%
+% \lccode`\_=`\_%
+ % not needed, other attribute in driver:
+ %
+ % \@@resetcolorparameters
+ % \getparameters[#4]%
+ % \ifx\@@cl@@t\@@cl@@z\else
+ % \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\@@cl@@t_\@@cl@@a}%
+ % \fi
+ \lowercase\@EA{\@EA\xdef\@EA\@@cleancolor\@EA{\@@cl@@cl@@N}}%
+ \egroup
+ \setxvalue{\??cl\@@cleancolor\s!check}{\noexpand\docheckmultitonecolor{\@@cl@@cl@@D}}%
+ \expanded{\defineglobalcolor[\@@cleancolor][#3,#4]}%
+ \expanded{\definespotcolor[#1][\@@cleancolor][#4,f=\the\scratchcounter,p={\@@cl@@cl@@P},d={\@@cl@@cl@@D}]}}
+
+\def\docheckmultitonecolor#1%
+ {\flushatshipout
+ {\let\checkmultitonecolor\gobbleoneargument
+ \def\docommand##1{\hbox{\definecolor[\s!dummy-100][##1][p=1]\color[\s!dummy-100]}}%
+ \processcommalist[#1]\docommand}}
+
+\def\checkmultitonecolor#1%
+ {\getvalue{\??cl#1\s!check}\letgvalue{\??cl#1\s!check}\relax}
+
+\def\dodefinespotcolor[#1][#2][#3]% todo: always global
+ {\doifnot{#1}{#2}
+ {\@@resetcolorparameters
+ \edef\@@cl@@n{#2}%
+ \getparameters[\??cl @@][#3]%
+ \doifnothing\@@cl@@p{\let\@@cl@@p\!!plusone}%
+ \doglobal\addtocommalist{#2}\allspotcolors
+ \setxvalue{\??cr#1}{\colorPpattern}% was \setevalue
+ \setgvalue{#1}{\switchtocolor[#1]}}}% was \setvalue
+
+\def\dododefinemultitonecolor#1%
+ {\advance\scratchcounter\plusone
+ \splitstring#1\at=\to\!!stringa\and\!!stringb
+ \ifx\@@cl@@cl@@D\empty
+ \let\@@cl@@cl@@D\!!stringa
+ \let\@@cl@@cl@@P\!!stringb
+ \normalizecolor\!!stringb
+ \edef\@@cl@@cl@@N{\!!stringa_\!!stringb}%
+ \else
+ \edef\@@cl@@cl@@D{\@@cl@@cl@@D,\!!stringa}%
+ \edef\@@cl@@cl@@P{\@@cl@@cl@@P,\!!stringb}%
+ \normalizecolor\!!stringb
+ \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\!!stringa_\!!stringb}%
+ \fi}
+
+% \def\dododefinemultitonecolor#1% a/b safe
+% {\advance\scratchcounter\plusone
+% \splitstring#1\at=\to\@@cl@@one\and\@@cl@@two
+% \ifx\@@cl@@cl@@D\empty
+% \let\@@cl@@cl@@D\@@cl@@one
+% \let\@@cl@@cl@@P\@@cl@@two
+% \normalizecolor\@@cl@@two
+% \edef\@@cl@@cl@@N{\@@cl@@one_\@@cl@@two}%
+% \else
+% \edef\@@cl@@cl@@D{\@@cl@@cl@@D,\@@cl@@one}%
+% \edef\@@cl@@cl@@P{\@@cl@@cl@@P,\@@cl@@two}%
+% \normalizecolor\@@cl@@two
+% \edef\@@cl@@cl@@N{\@@cl@@cl@@N_\@@cl@@one_\@@cl@@two}%
+% \fi}
+
+%D We now redefine the color definition macro so that you
+%D can define both normal and spotcolors.
+
+\def\definecolor
+ {\dotripleempty\dodefinewhatevercolor}
+
+\def\dodefinewhatevercolor[#1][#2][#3]%
+ {\ifthirdargument
+ \doifassignmentelse{#2}
+ {\dododefinecolor[#1][#2,#3]}% actually this is an error
+ {\dodefinespotcolor[#1][#2][#3]}% and this the prefered method
+ \else
+ \dodefinecolor[#1][#2]%
+ \fi}
+
+%D The names of colors are stored in a comma separated list
+%D only for the purpose of showing them with \type {\showcolor}.
+%D
+%D \typebuffer
+%D \getbuffer
+%D
+%D This color shows up as \color [SomeKindOfRed] {some kind
+%D of red}.
+%D
+%D \starttyping
+%D \setupcolors[state=start]
+%D
+%D \definecolor[mygreen][green]
+%D \definecolor[green][g=.5]
+%D
+%D \startcolor[mygreen]test\stopcolor
+%D
+%D \setupcolors[expansion=no]
+%D
+%D \definecolor[mygreen][green]
+%D \definecolor[green][g=.5]
+%D
+%D \startcolor[mygreen]test\stopcolor
+%D \stoptyping
+
+%D \macros
+%D {setupcolor}
+%D
+%D Color definitions can be grouped in files with the name:
+%D
+%D \starttyping
+%D \f!colorprefix-identifier.tex
+%D \stoptyping
+%D
+%D where \type{\f!colorprefix} is \unprotect {\tttf \f!colorprefix}.
+%D Loading such a file is done by \protect
+%D
+%D \showsetup{setupcolor}
+%D
+%D Some default colors are specified in \type{colo-rgb.tex},
+%D which is loaded into the format by:
+%D
+%D \starttyping
+%D \setupcolor[rgb]
+%D \stoptyping
+
+\let\colorstyle\empty
+
+\def\setupcolor
+ {\dosingleargument\dosetupcolor}
+
+\def\dosetupcolor[#1]%
+ {\doifnot{#1}\colorstyle
+ {\def\colorstyle{#1}%
+ \processcommalist[#1]\dodosetupcolor}}
+
+\def\dodosetupcolor#1%
+ {\makeshortfilename[\f!colorprefix\truefilename{#1}]%
+ \readsysfile\shortfilename
+ {\showmessage\m!colors4\colorstyle}
+ {\showmessage\m!colors5\colorstyle}}
+
+\let\usecolors\setupcolor
+
+%D When typesetting for paper, we prefer using the \cap{CMYK}
+%D color space, but for on||screen viewing we prefer \cap{RGB}
+%D (the previous implementation supported only this scheme).
+%D Independant of such specifications, we support some automatic
+%D conversions:
+%D
+%D \startitemize[packed]
+%D \item convert all colors to \cap{RGB}
+%D \item convert all colors to \cap{CMYK}
+%D \item convert all colors to gray scales
+%D \stopitemize
+%D
+%D We also support optimization of colors to gray scales.
+%D
+%D \startitemize[continue]
+%D \item reduce gray colors to gray scales
+%D \item reduce \cap{CMY} components to \cap{K}
+%D \stopitemize
+%D
+%D These options are communicated by means of:
+
+\newif\ifRGBsupported
+\newif\ifCMYKsupported
+\newif\ifSPOTsupported
+\newif\ifpreferGRAY
+\newif\ifGRAYprefered
+\newif\ifreduceCMYK
+
+%D The last boolean controls reduction of \cap{CMYK} to
+%D \cap{CMY} colors. When set to true, the black component
+%D is added to the other ones.
+%D
+%D Prefering gray is not the same as converting to gray.
+%D Conversion treats each color components in a different way,
+%D while prefering is just a reduction and thus a
+%D space||saving option.
+
+%D The next (internal) switch suppresses duplicate messages.
+
+\newif\ifconverttoGRAY
+
+%D This module also needs:
+
+% \newif\ifMPgraphics
+% \newif\ifinpagebody
+
+%D \macros
+%D {startcolormode,stopcolormode,permitcolormode}
+%D
+%D We use \type{\stopcolormode} to reset the color in
+%D whatever color space and do so by calling the corresponding
+%D special. Both commands can be used for fast color
+%D switching, like in colored verbatim,
+
+\newif\ifpermitcolormode \permitcolormodetrue
+
+%D Since color is used frequently today (at least by the
+%D author of this module) it makes sense to optimize switching
+%D to the max.
+%D
+%D \starttyping
+%D \def\startcolormode#1%
+%D {\ifincolor\ifpermitcolormode
+%D \doifcolorelse{#1}
+%D {\getcurrentcolorspecs{#1}%
+%D \expandafter\dostartcolormode\currentcolorspecs\od}
+%D {\nostartcolormode}%
+%D \fi\fi}
+%D \stoptyping
+%D
+%D So, the more readable alternatives like the one above are
+%D gone now.
+
+\beginETEX \ifcsname
+
+\def\dowithcolor#1#2% #1=\action #2=color
+ {\ifincolor\ifpermitcolormode
+ \ifcsname\??cr\currentpalet#2\endcsname
+ \handlecolorwith#1\csname\??cr\currentpalet#2\endcsname\od
+ \else\ifcsname\??cr#2\endcsname
+ \handlecolorwith#1\csname\??cr#2\endcsname\od
+ \fi\fi
+ \fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\dowithcolor#1#2% #1=\action #2=color
+ {\ifincolor\ifpermitcolormode
+ \@EA\ifx\csname\??cr\currentpalet#2\endcsname\relax
+ \@EA\ifx\csname\??cr#2\endcsname\relax \else
+ \handlecolorwith#1\csname\??cr#2\endcsname\od
+ \fi
+ \else
+ \handlecolorwith#1\csname\??cr\currentpalet#2\endcsname\od
+ \fi
+ \fi\fi}
+
+\endTEX
+
+\def\startcolormode % includes \ifincolor\ifpermitcolormode
+ {%\dostoptransparency % needed for: {test \trans test \notrans test}
+ \conditionalstoptransparency
+ \dowithcolor\execcolorRCSP}
+
+\def\stopcolormode
+ {\ifincolor\ifpermitcolormode
+ \supportedstoptransparency
+ \dostopcolormode
+ \fi\fi}
+
+\def\restorecolormode
+ {\ifincolor\ifpermitcolormode
+ \supportedstoptransparency
+ \dostopcolormode
+ \ifx\maintextcolor\empty \else
+ \startcolormode\maintextcolor
+ \fi
+ \fi\fi}
+
+%D Color modes are entered using the next set of commands.
+%D The \type{\stop} alternatives are implemented in a way
+%D that permits non||grouped use.
+%D
+%D The, for this module redundant, check if we are in color
+%D mode is needed when we use these macros in other modules.
+
+\chardef\currentcolorchannel=0
+
+\newif\iffilterspotcolor \filterspotcolorfalse
+\newif\ifdoingspotcolor \doingspotcolorfalse
+
+\def\registercolorchannel#1%
+ {\ifdoingspotcolor \else
+ \global\expandafter\chardef\csname\??cs#1\endcsname\zerocount
+ \fi}
+
+\def\execcolorRCSP#1:%
+ {\csname execcolor#1\endcsname}
+
+\def\execcolorR
+ {\iffilterspotcolor
+ \@EA\noexeccolorR
+ \else
+ \@EA\doexeccolorR
+ \fi}
+
+\def\execcolorC
+ {\iffilterspotcolor
+ \@EA\noexeccolorC
+ \else
+ \@EA\doexeccolorC
+ \fi}
+
+\def\execcolorS
+ {\iffilterspotcolor
+ \@EA\noexeccolorS
+ \else
+ \@EA\doexeccolorS
+ \fi}
+
+\def\execcolorP
+ {\iffilterspotcolor
+ \@EA\doexeccolorPP
+ \else\ifcase\currentcolorchannel
+ \@EAEAEA\doexeccolorP
+ \else
+ \@EAEAEA\noexeccolorP
+ \fi\fi}
+
+\def\doexeccolorR#1:#2:#3:%
+ {\edef\@@cl@@r{#1}\edef\@@cl@@g{#2}\edef\@@cl@@b{#3}%
+ \ifpreferGRAY\ifx\@@cl@@r\@@cr@@g\ifx\@@cl@@r\@@cl@@b
+ \GRAYpreferedtrue
+ \fi\fi\fi
+ \ifincolor\else\RGBsupportedfalse\CMYKsupportedfalse\fi
+ \ifGRAYprefered
+ \registercolorchannel\c!s
+ \let\@@cl@@s\@@cl@@r
+ \normalizeGRAY
+ \doexeccolorgray
+ \else\ifRGBsupported
+ \registercolorchannel\c!r
+ \normalizeRGB
+ \doexeccolorrgb
+ \else\ifCMYKsupported
+ \registercolorchannel\c!c
+ \convertRGBtoCMYK\@@cl@@r\@@cl@@g\@@cl@@b
+ \normalizeCMYK
+ \doexeccolorcmyk
+ \else
+ \registercolorchannel\c!s
+ \convertRGBtoGRAY\@@cl@@r\@@cl@@g\@@cl@@b
+ \normalizeGRAY
+ \doexeccolorgray
+ \fi\fi\fi
+ \exectransparency}
+
+\def\doexeccolorC#1:#2:#3:#4:%
+ {\edef\@@cl@@c{#1}\edef\@@cl@@m{#2}\edef\@@cl@@y{#3}\edef\@@cl@@k{#4}%
+ \ifpreferGRAY\ifx\@@cl@@k\@@cl@@z\ifx\@@cl@@c\@@cr@@m\ifx\@@cl@@c\@@cl@@y
+ \GRAYpreferedtrue
+ \fi\fi\fi\fi
+ \ifincolor\else\RGBsupportedfalse\CMYKsupportedfalse\fi
+ \ifGRAYprefered
+ \registercolorchannel\c!s
+ \let\@@cl@@s\@@cl@@c
+ \normalizeGRAY
+ \doexeccolorgray
+ \else\ifCMYKsupported
+ \registercolorchannel\c!c
+ \ifreduceCMYK
+ \convertCMYKtoCMY\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
+ \fi
+ \normalizeCMYK
+ \doexeccolorcmyk
+ \else\ifRGBsupported
+ \registercolorchannel\c!r
+ \convertCMYKtoRGB\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
+ \normalizeRGB
+ \doexeccolorrgb
+ \else
+ \registercolorchannel\c!s
+ \convertCMYKtoGRAY\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
+ \normalizeGRAY
+ \doexeccolorgray
+ \fi\fi\fi
+ \exectransparency}
+
+\def\doexeccolorS#1:%
+ {\edef\@@cl@@s{#1}%
+ \registercolorchannel\c!s
+ \normalizeGRAY
+ \doexeccolorgray
+ \exectransparency}
+
+% \def\doexeccolorP#1:#2:%
+% {\edef\@@cl@@n{#1}%
+% \edef\@@cl@@p{#2}%
+% \registerusedspotcolor\@@cl@@n
+% \ifSPOTsupported
+% \dowithcolor\registerspotcolor\@@cl@@n
+% \dostartspotcolormode\@@cl@@n\@@cl@@p
+% \else
+% \doingspotcolortrue
+% \let\spotcolorfactor\@@cl@@p
+% \factorizecolortrue % using counter and array
+% \dowithcolor\execcolorRCSP\@@cl@@n
+% \factorizecolorfalse
+% \let\spotcolorfactor\@@cl@@o
+% \doingspotcolorfalse
+% \fi
+% \exectransparency}
+
+\def\doexeccolorP#1:#2:#3:#4:%
+ {\edef\@@cl@@n{#1}% name
+ \edef\@@cl@@f{#2}% fractions
+ \edef\@@cl@@d{#3}% definitions
+ \edef\@@cl@@p{#4}%
+ \ifx\@@cl@@d\empty
+ \let\@@cl@@d\@@cl@@n
+ \fi
+ \registerusedspotcolor\@@cl@@n
+ \ifSPOTsupported
+ \checkmultitonecolor\@@cl@@n
+ \dowithcolor\registerspotcolor\@@cl@@n
+ \dostartspotcolormode\@@cl@@n\@@cl@@p
+ \else
+ \doingspotcolortrue
+ \let\spotcolorfactor\@@cl@@p
+ \factorizecolortrue % using counter and array
+ \dowithcolor\execcolorRCSP\@@cl@@n
+ \factorizecolorfalse
+ \let\spotcolorfactor\@@cl@@o
+ \doingspotcolorfalse
+ \fi
+ \exectransparency}
+
+\def\doexeccolorPindex#1:#2:#3:#4:%
+ {\edef\@@cl@@n{#1}%
+ \edef\@@cl@@f{#2}%
+ \edef\@@cl@@d{#3}%
+ \edef\@@cl@@p{#4}%
+ \ifx\@@cl@@d\empty
+ \let\@@cl@@d\@@cl@@n
+ \fi
+ \ifSPOTsupported
+ \checkmultitonecolor\@@cl@@n
+ \dowithcolor\registerindexcolor\@@cl@@n
+ \fi
+ \noexectransparency}
+
+\def\doexeccolorPP#1:#2:%
+ {\edef\@@cl@@n{#1}%
+ \edef\@@cl@@p{#2}%
+ \registerusedspotcolor\@@cl@@n
+ \ifx\@@cl@@n\currentspotcolor
+ \normalizeSPOT
+ \dostartgraycolormode\@@cl@@p % was spotcolormode
+ \else
+ \dovidecolor\@@cl@@p\@@cl@@o
+ \fi
+ \exectransparency}
+
+\def\doexeccolorrgb
+ {\ifcase\currentcolorchannel
+ \dostartrgbcolormode\@@cl@@r\@@cl@@g\@@cl@@b
+ \or \or \or \or
+ \or \dostartgraycolormode\@@cl@@r
+ \or \dostartgraycolormode\@@cl@@g
+ \or \dostartgraycolormode\@@cl@@b
+ \fi}
+
+\def\doexeccolorcmyk
+ {\ifcase\currentcolorchannel
+ \dostartcmykcolormode\@@cl@@c\@@cl@@m\@@cl@@y\@@cl@@k
+ \or \negatecolorcomponent\@@cl@@c\dostartgraycolormode\@@cl@@c
+ \or \negatecolorcomponent\@@cl@@m\dostartgraycolormode\@@cl@@m
+ \or \negatecolorcomponent\@@cl@@y\dostartgraycolormode\@@cl@@y
+ \or \negatecolorcomponent\@@cl@@k\dostartgraycolormode\@@cl@@k
+ \fi}
+
+\def\doexeccolorgray
+ {\ifcase\currentcolorchannel
+ \dostartgraycolormode\@@cl@@s
+ \or \or \or
+ \or \dostartgraycolormode\@@cl@@s
+ \or \or \or
+ \or \dostartgraycolormode\@@cl@@s
+ \fi}
+
+%D When filtering colors, we need to either erase
+%D the background, or ignore the foreground.
+
+% \newif\ifhidesplitcolor \hidesplitcolortrue
+%
+% \def\noexeccolor#1\od
+% {\dostartgraycolormode\@@cl@@o}
+%
+% \let\noexeccolorS\noexeccolor
+% \let\noexeccolorP\noexeccolor
+
+%D Well, here comes some real trickery. When we have the 100\%
+%D spot color or black color, we don't want to erase the
+%D background. So, instead we hide the content by giving it
+%D zero transparency.
+
+% todo : #1#2#3 met #2 > of < and #3 een threshold
+
+\newif\ifhidesplitcolor \hidesplitcolortrue
+
+\def\dohidecolor#1#2%
+ {\ifhidesplitcolor
+ \ifx#1#2%
+ \dostartgraycolormode\@@cl@@o
+ \else
+ \doregisternonecolor
+ \dostartnonecolormode
+ \fi
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi}
+
+\def\dovidecolor#1#2%
+ {\ifhidesplitcolor
+ \ifx#1#2%
+ \doregisternonecolor
+ \dostartnonecolormode
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi
+ \else
+ \dostartgraycolormode\@@cl@@o
+ \fi}
+
+% \def\fullytransparentcolor % fails on floats
+% {\dostartgraycolormode\@@cl@@o % better than z
+% %\global\@EA\chardef\csname\@@currenttransparent\endcsname\plusone
+% %\global\intransparenttrue
+% \dostarttransparency10}
+
+\def\noexeccolorR#1:#2:#3:#4\od
+ {\edef\@@cl@@r{#1}\edef\@@cl@@g{#2}\edef\@@cl@@b{#3}%
+ \dohidecolor\@@cl@@s\@@cl@@o}
+
+\def\noexeccolorC#1:#2:#3:#4:#5\od
+ {\edef\@@cl@@c{#1}\edef\@@cl@@m{#2}\edef\@@cl@@y{#3}\edef\@@cl@@k{#4}%
+ \dohidecolor\@@cl@@s\@@cl@@o}
+
+\def\noexeccolorS#1:#2\od
+ {\edef\@@cl@@s{#1}%
+ \dohidecolor\@@cl@@s\@@cl@@o}
+
+% \def\noexeccolorP#1:#2:#3\od
+% {\edef\@@cl@@p{#2}%
+% \dohidecolor\@@cl@@p\@@cl@@z}
+
+\def\noexeccolorP#1:#2:#3:#4:#5\od
+ {\edef\@@cl@@p{#4}%
+ \dohidecolor\@@cl@@p\@@cl@@z}
+
+%D For the sake of postprocessing (i.e.\ color separation)
+%D we can normalize colors, which comes down to giving equal
+%D values an equal accuracy and format. This feature is
+%D turned off by default due to a speed penalty. This macro
+%D also handles spot color percentages.
+
+\newif\iffactorizecolor
+\newif\ifnormalizecolor
+
+\def\spotcolorfactor{1}
+
+\def\normalizecolor#1%
+ {\colordimen#1\thousandpoint
+ \colordimen\spotcolorfactor\colordimen
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \edef#1{\realcolorvalue\colorcount}}
+
+\def\normalizespotcolor#1%
+ {\colordimen-#1\thousandpoint
+ \advance\colordimen\thousandpoint
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \edef#1{\realcolorvalue\colorcount}}
+
+\def\donormalizeRGB
+ {\normalizecolor\@@cl@@r
+ \normalizecolor\@@cl@@g
+ \normalizecolor\@@cl@@b}
+
+\def\normalizeRGB
+ {\ifnormalizecolor
+ \donormalizeRGB
+ \else\iffactorizecolor
+ \donormalizeRGB
+ \fi\fi}
+
+\def\donormalizeCMYK
+ {\normalizecolor\@@cl@@c
+ \normalizecolor\@@cl@@m
+ \normalizecolor\@@cl@@y
+ \normalizecolor\@@cl@@k}
+
+\def\normalizeCMYK
+ {\ifnormalizecolor
+ \donormalizeCMYK
+ \else\iffactorizecolor
+ \donormalizeCMYK
+ \fi\fi}
+
+\def\donormalizeGRAY
+ {\normalizecolor\@@cl@@s}
+
+\def\normalizeGRAY
+ {\ifnormalizecolor
+ \donormalizeGRAY
+ \else\iffactorizecolor
+ \donormalizeGRAY
+ \fi\fi}
+
+\def\normalizeSPOT
+ {\normalizespotcolor\@@cl@@p}
+
+%D We need to register spot colors (i.e.\ resources need to
+%D be created.
+
+\def\registerspotcolor#1:%
+ {\ifundefined{\??cl:\c!p:\@@cl@@n}%
+ \letgvalue{\??cl:\c!p:\@@cl@@n}\empty
+ %\@EA\@EA\csname registerspotcolor#1\endcsname
+ \csname registerspotcolor#1\@EA\endcsname
+ \else
+ \@EA\dontregisterspotcolor
+ \fi}
+
+\def\dontregisterspotcolor #1\od{}
+\def\registerspotcolorR #1:#2:#3:#4\od{\doregisterrgbspotcolor \@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}}
+\def\registerspotcolorC#1:#2:#3:#4:#5\od{\doregistercmykspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}{#4}}
+\def\registerspotcolorS #1:#2\od{\doregistergrayspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}}
+\def\registerspotcolorP #1:#2:#3\od{\doregistergrayspotcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#2}}
+
+%D Experimental feature:
+
+% \definecolor [darkblue] [c=1,m=.38,y=0,k=.64] % pantone pms 2965 uncoated m
+% \definecolor [darkyellow] [c=0,m=.28,y=1,k=.06] % pantone pms 124 uncoated m
+%
+% \definecolor [darkblue-50] [darkblue] [p=.5]
+% \definecolor [darkyellow-50] [darkyellow] [p=.5]
+% \definecolor [darkblue-80] [darkblue] [p=.8]
+% \definecolor [darkyellow-80] [darkyellow] [p=.8]
+%
+% \definecolor [darkblue,darkyellow] [r=.8]
+% \definecolor [darkdull-5030] [darkblue,darkyellow] [p={.5,.3}]
+%
+% \setupcolors[state=start]
+%
+% \blackrule[width=4cm,height=3cm,color=darkblue-50]
+% \blackrule[width=4cm,height=3cm,color=darkblue-80]
+% \blackrule[width=4cm,height=3cm,color=darkyellow-50]
+% \blackrule[width=4cm,height=3cm,color=darkyellow-80]
+% \blackrule[width=4cm,height=3cm,color=darkdull-5030]
+
+%D Experimental too (special purpose code).
+
+\def\registerindexcolor#1:%
+ {\ifundefined{\??cl:i:\@@cl@@n}%
+ \letgvalue{\??cl:i:\@@cl@@n}\empty % signal
+ \showmessage\m!colors{12}\@@cl@@n
+ \@EA\@EA\csname registerindexcolor#1\endcsname
+ \else
+ \@EA\dontregisterindexcolor
+ \fi}
+
+\let\dontregisterindexcolor\dontregisterspotcolor
+
+\def\registerindexcolorR #1:#2:#3:#4\od{\doregisterrgbindexcolor \@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}}
+\def\registerindexcolorC#1:#2:#3:#4:#5\od{\doregistercmykindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}{#2}{#3}{#4}}
+\def\registerindexcolorS #1:#2\od{\doregistergrayindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#1}}
+\def\registerindexcolorP #1:#2:#3\od{\doregistergrayindexcolor\@@cl@@n\@@cl@@f\@@cl@@d\@@cl@@p{#2}}
+
+\def\predefinecolor[#1]%
+ {\bgroup
+ \flushatshipout{\hbox{\localcolortrue\color[#1]}}% real ones
+ \egroup}
+
+\def\predefineindexcolor[#1]%
+ {\bgroup
+ \flushatshipout{\hbox{\localcolortrue\color[#1]}}% real ones
+ \let\doexeccolorP\doexeccolorPindex
+ \flushatshipout{\hbox{\localcolortrue\color[#1]}}% index one
+ \egroup}
+
+% \def\checkpredefinedcolor[#1]%
+% {\ifcase\internalspotcolorsize{#1}\relax
+% \@EA\predefinecolor\or\@EA\predefinecolor\else\@EA\predefineindexcolor
+% \fi[#1]}
+
+\let\checkpredefinedcolor\predefineindexcolor % we need an index in order to negate bitmaps
+
+%D \startbuffer
+%D \definecolor [blue] [c=1,m=.38,y=0,k=.64] % pantone pms 2965 uncoated m
+%D \definecolor [yellow] [c=0,m=.28,y=1,k=.06] % pantone pms 124 uncoated m
+%D
+%D \definecolor [blue-100] [blue] [p=1]
+%D \definecolor [yellow-100] [yellow] [p=1]
+%D
+%D \definemultitonecolor [pdftoolscolor] [blue=.12,yellow=.28] [c=.1,m=.1,y=.3,k=.1]
+%D
+%D \useexternalfigure[demofig][mill.png][object=no]
+%D
+%D \startcombination[4*1]
+%D {\externalfigure[demofig]} {no color}
+%D {\externalfigure[demofig][color=pdftoolscolor]} {indexed duotone}
+%D {\externalfigure[demofig][color=blue-100]} {spot color}
+%D {\externalfigure[demofig][color=yellow-100]} {spot color}
+%D \stopcombination
+%D \stopbuffer
+%D
+%D \getbuffer \typebuffer
+
+%D Transparency is handled similar for all three color modes. We
+%D can turn transparency off with the following switch:
+
+\newif\iftransparencysupported \transparencysupportedtrue % todo
+
+\def\exectransparency
+ {\iftransparencysupported
+ \expandafter\doexectransparency
+ \else
+ \expandafter\noexectransparency
+ \fi}
+
+%\def\doexectransparency#1:#2\od
+% {\global\@EA\chardef\csname\@@currenttransparent\endcsname % nasty
+% \ifcase#1\space
+% \zerocount
+% \else
+% \plusone
+% \dostarttransparency{#1}{#2}%
+% \fi}
+
+\def\doexectransparency#1:#2\od
+ {\ifcase#1\space
+ \global\intransparentfalse
+ \else
+ \global\intransparentfalse
+ %\dostarttransparency{#1}{#2}%
+ \supportedstarttransparency{#1}{#2}%
+ \global\intransparenttrue
+ \fi}
+
+\def\noexectransparency#1\od
+ {}
+
+%D Experimental: minimize transparency resets.
+
+\newif\ifintransparent
+\newif\ifoptimizetransparency \optimizetransparencytrue % under test
+
+% due to bugs in pdf viewers we used transparancies for
+% hiding colors, but now we use none colors
+
+% \def\supportedstoptransparency
+% {\iffilterspotcolor
+% \dostoptransparency
+% \else\iftransparencysupported
+% \dostoptransparency
+% \fi\fi}
+%
+% \def\conditionalstoptransparency
+% {\iffilterspotcolor
+% \dostoptransparency
+% \else\ifcase\currentcolorchannel
+% \ifoptimizetransparency
+% \ifintransparent
+% \supportedstoptransparency
+% \global\intransparentfalse
+% \fi
+% \else
+% \supportedstoptransparency
+% \fi
+% \else
+% \supportedstoptransparency
+% \fi\fi}
+
+\let\supportedstoptransparency\relax
+
+\def\conditionalstoptransparency
+ {\ifoptimizetransparency
+ \ifintransparent
+ \global\intransparentfalse
+ \supportedstoptransparency
+ \fi
+ \else
+ \supportedstoptransparency
+ \fi}
+
+\def\supportedstarttransparency
+ {\iftransparencysupported
+ \globallet\supportedstoptransparency\dostoptransparency
+ \expandafter\dostarttransparency
+ \else
+ \expandafter\gobbletwoarguments
+ \fi}
+
+%D We now use the \type {\@@cl@@A} hook to implement
+%D symbolic names. These are converted into numbers
+%D at definition time (which saves runtime).
+
+\def\definetransparency
+ {\dodoubleargument\dodefinetransparency}
+
+%\def\dodefinetransparency[#1][#2]%
+% {\@EA\chardef\csname\??cl-#1\endcsname#2\relax
+% \ifundefined{\??cl-#2}#2\else\csname\??cl-#2\endcsname\fi}
+
+\def\dodefinetransparency[#1][#2]%
+ {\@EA\chardef\csname\??cl-#1\endcsname#2\relax}
+
+\def\transparencynumber#1%
+ {\the\executeifdefined{\??cl-#1}\zerocount}
+
+\definetransparency [none] [0] \definetransparency [0] [0]
+\definetransparency [normal] [1] \definetransparency [1] [1]
+\definetransparency [multiply] [2] \definetransparency [2] [2]
+\definetransparency [screen] [3] \definetransparency [3] [3]
+\definetransparency [overlay] [4] \definetransparency [4] [4]
+\definetransparency [softlight] [5] \definetransparency [5] [5]
+\definetransparency [hardlight] [6] \definetransparency [6] [6]
+\definetransparency [colordodge] [7] \definetransparency [7] [7]
+\definetransparency [colorburn] [8] \definetransparency [8] [8]
+\definetransparency [darken] [9] \definetransparency [9] [9]
+\definetransparency [lighten] [10] \definetransparency [10] [10]
+\definetransparency [difference] [11] \definetransparency [11] [11]
+\definetransparency [exclusion] [12] \definetransparency [12] [12]
+
+%D Now we hook 'm into the patterns:
+
+\def\@@cl@@A{\transparencynumber\@@cl@@a}
+
+%D \macros
+%D {startregistercolor,stopregistercolor,permitcolormode}
+%D
+%D If you only want to register a color, the switch \type
+%D {\ifpermitcolormode} can be used. That way the nested
+%D colors know where to go back to.
+
+\def\startregistercolor[#1]%
+ {\permitcolormodefalse\startcolor[#1]\permitcolormodetrue}
+
+\def\stopregistercolor
+ {\permitcolormodefalse\stopcolor\permitcolormodetrue}
+
+%D We use these macros for implementing text colors
+%D (actually, the first application was in foreground
+%D colors).
+%D
+%D \starttyping
+%D \starttextcolor[red]
+%D \dorecurse{10}{\input tufte \color[green]{oeps} \par}
+%D \stoptextcolor
+%D \stoptyping
+%D
+%D This is more efficient than the alternative:
+%D
+%D \starttyping
+%D \setupbackgrounds[text][foregroundcolor=red]
+%D \startregistercolor[red]
+%D \dorecurse{10}{\input tufte \color[green]{oeps} \par}
+%D \stopregistercolor
+%D \stoptyping
+
+\let\maintextcolor\empty \def\defaulttextcolor{black}
+
+% \def\starttextcolor[#1]%
+% {\doifsomething{#1}
+% {\bgroup
+% \def\stoptextcolor % also goes ok with \page after
+% {\let\maintextcolor\empty % this one because the top of
+% \stopregistercolor % page sets the color right (side
+% \egroup}% % effect)
+% \def\starttextcolor[##1]%
+% {\bgroup
+% \let\stoptextcolor\egroup}%
+% \startregistercolor[#1]%
+% \edef\maintextcolor{#1}}}
+
+\def\@@themaintextcolor{themaintextcolor}
+
+\def\starttextcolor[#1]%
+ {\doifsomething{#1}
+ {\bgroup
+ \def\stoptextcolor % also goes ok with \page after
+ {\let\maintextcolor\empty % this one because the top of
+ \stopregistercolor % page sets the color right (side
+ \egroup}% % effect)
+ \def\starttextcolor[##1]%
+ {\bgroup
+ % \@@themaintextcolor==##1 is catched in \definecolor
+ \definecolor[\@@themaintextcolor][##1]%
+ \let\stoptextcolor\egroup}%
+ \startregistercolor[\@@themaintextcolor]%
+ \definecolor[\@@themaintextcolor][#1]%
+ \let\maintextcolor\@@themaintextcolor}}
+
+\let\stoptextcolor\relax
+
+%D The following hook permits proper support at the text
+%D level. This definition actually belongs in another
+%D module.
+
+\ifx\initializemaintextcolor\undefined
+
+% \def\initializemaintextcolor
+% {\doifsomething\@@cltekstkleur
+% {\appendtoks\starttextcolor[\@@cltekstkleur]\to\everystarttext
+% \appendtoks\stoptextcolor \to\everystoptext
+% \let\initializemaintextcolor\relax}}
+
+ % global ?
+
+ \def\initializemaintextcolor
+ {\doifelsenothing\@@cltextcolor
+ {\let\maintextcolor\empty}
+ {\let\maintextcolor\@@themaintextcolor
+ \definecolor[\@@themaintextcolor][\@@cltextcolor]%
+ \doinitializemaintextcolor}}
+
+ \def\doinitializemaintextcolor
+ {\appendtoks\starttextcolor[\@@themaintextcolor]\to\everystarttext
+ \appendtoks\stoptextcolor \to\everystoptext
+ \let\doinitializemaintextcolor\relax}
+
+\fi
+
+%D The next macro can be used to return to the (normal)
+%D page color. This macro is used in the same way as
+%D \type {\color}.
+
+\def\localstarttextcolor
+ {\ifx\maintextcolor\empty
+ \startcolormode\defaulttextcolor
+ \else
+ \startcolormode\maintextcolor
+ \fi}
+
+% \def\localstoptextcolor
+% {\stopcolormode}
+%
+% better:
+
+\def\localstoptextcolor
+ {\restorecolormode}
+
+\def\restoretextcolor
+ {\ifx\maintextcolor\empty
+ \expandafter\dorestoretextcolor
+ \else
+ % obey main text color
+ \fi}
+
+\def\dorestoretextcolor
+ {\color[\defaulttextcolor]}
+
+%D We use some reserved names for local color components.
+%D Consistent use of these scratch variables saves us
+%D unneccessary hash entries.
+%D
+%D \starttyping
+%D \@@cl@@r \@@cl@@g \@@cl@@b
+%D \@@cl@@c \@@cl@@m \@@cl@@y \@@cl@@k
+%D \@@cl@@s
+%D \stoptyping
+%D
+%D We implement several conversion routines.
+%D
+%D \starttyping
+%D \convertRGBtoCMYK {r} {g} {b}
+%D \convertRGBtoGRAY {r} {g} {b}
+%D \convertCMYKtoRGB {c} {m} {y} {k}
+%D \convertCMYKtoGRAY {c} {m} {y} {k}
+%D \convertCMYKtoCMY {c} {m} {y} {k}
+%D \stoptyping
+%D
+%D The relation between \cap{Gray}, \cap{RGB} and \cap{CMYK}
+%D is:
+%D
+%D \placeformula[-]
+%D \startformula
+%D G = .30r + .59g + .11b
+%D = 1.0 - \min(1.0,\ .30c + .59m + .11y + k)
+%D \stopformula
+%D
+%D When converting from \cap{CMYK} to \cap{RGB} we use the
+%D formula:
+%D
+%D \placeformula[-]
+%D \startformula
+%D \eqalign
+%D {r &= 1.0 - \min(1.0,\ c+k) \cr
+%D g &= 1.0 - \min(1.0,\ m+k) \cr
+%D b &= 1.0 - \min(1.0,\ y+k)}
+%D \stopformula
+%D
+%D In the conversion routine the color components are calculated
+%D in three digits precision.
+
+\def\realcolorvalue#1%
+ {\ifnum#1>\zerocount % important, first encountered in --modu supp-mpe
+ \ifnum#1<\plusten 0.00\the#1\else
+ \ifnum#1<\plushundred 0.0\the#1\else
+ \ifnum#1<\plusthousand 0.\the#1\else
+ 1\fi\fi\fi
+ \else 0\fi}
+
+\def\doconvertCMYKtoRGB#1\k#2\to#3%
+ {\ifdim#2\points>#1\points% >= problem, repaired 2/12/2002
+ \let#3\@@cl@@z % k >= color
+ \else
+ \colordimen\onepoint
+ \advance\colordimen -#1\points
+ \advance\colordimen -#2\points
+ \multiply\colordimen \plusthousand
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \edef#3{\realcolorvalue\colorcount}%
+ \fi}
+
+\def\convertCMYKtoRGB#1#2#3#4%
+ {\doconvertCMYKtoRGB#1\k#4\to\@@cl@@r
+ \doconvertCMYKtoRGB#2\k#4\to\@@cl@@g
+ \doconvertCMYKtoRGB#3\k#4\to\@@cl@@b}
+
+\def\doconvertRGBtoCMYK#1\to#2%
+ {\colordimen#1\points
+ \multiply\colordimen \plusthousand
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \colorcount-\colorcount
+ \advance\colorcount \plusthousand
+ \edef#2{\realcolorvalue\colorcount}}
+
+\def\convertRGBtoCMYK#1#2#3%
+ {\doconvertRGBtoCMYK#1\to\@@cl@@c
+ \doconvertRGBtoCMYK#2\to\@@cl@@m
+ \doconvertRGBtoCMYK#3\to\@@cl@@y
+ \let\@@cl@@k\@@cl@@z}
+
+%D The following switch is mainly meant for (hidden)
+%D documentation purposes.
+
+\newif\ifweightGRAY \weightGRAYtrue
+
+\def\nGRAYfactor{333.333}
+\def\rGRAYfactor{\ifweightGRAY300\else\nGRAYfactor\fi}
+\def\gGRAYfactor{\ifweightGRAY590\else\nGRAYfactor\fi}
+\def\bGRAYfactor{\ifweightGRAY110\else\nGRAYfactor\fi}
+
+\def\convertRGBtoGRAY#1#2#3%
+ {\colordimen#1\points
+ \colordimen\rGRAYfactor\colordimen
+ \colorcount\colordimen
+ \colordimen#2\points
+ \colordimen\gGRAYfactor\colordimen
+ \advance\colorcount \colordimen
+ \colordimen#3\points
+ \colordimen\bGRAYfactor\colordimen
+ \advance\colorcount \colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \edef\@@cl@@s{\realcolorvalue\colorcount}}
+
+\def\convertCMYKtoGRAY#1#2#3#4%
+ {\convertCMYKtoRGB{#1}{#2}{#3}{#4}%
+ \convertRGBtoGRAY\@@cl@@r\@@cl@@g\@@cl@@b}
+
+\def\doconvertCMYKtoCMY#1\k#2\to#3%
+ {\colordimen#1\points
+ \advance\colordimen #2\points\relax
+ \ifdim\colordimen>\onepoint
+ \colordimen\onepoint
+ %\else
+ % \colordimen\colordimen
+ \fi
+ \multiply\colordimen \plusthousand
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard
+ \edef#3{\realcolorvalue\colorcount}}
+
+\def\convertCMYKtoCMY#1#2#3#4%
+ {\doconvertCMYKtoCMY#1\k#4\to\@@cl@@c
+ \doconvertCMYKtoCMY#2\k#4\to\@@cl@@m
+ \doconvertCMYKtoCMY#3\k#4\to\@@cl@@y
+ \let\@@cl@@k\@@cl@@z}
+
+%D Before we present the color macros, we first define the
+%D setup command. This command takes care of setting up the
+%D booleans that control local and global behavior (more on
+%D that later) and conversion to other color spaces.
+
+\let\currentspotcolor \empty
+\let\previousspotcolor\empty
+
+\newif\ifincolor
+\newif\iflocalcolor
+
+\def\setupcolors
+ {\dosingleargument\dosetupcolors}
+
+\def\resetcolorsplitting
+ {\chardef\currentcolorchannel\zerocount
+ \let\currentspotcolor\empty
+ \filterspotcolorfalse}
+
+\def\colorsplitsuffix{\ifcase\currentcolorchannel\else-\@@clsplit\fi}
+\def\colorsplitprefix{\ifcase\currentcolorchannel\else\@@clsplit-\fi}
+
+\ifx\resetsystemmode\undefined
+ \let\setsystemmode \gobbleoneargument
+ \let\resetsystemmode\gobbleoneargument
+\fi
+
+\def\setcolorsplitting
+ {\resetsystemmode{\v!color\colorsplitsuffix}%
+ \resetcolorsplitting
+ \processaction
+ [\@@clsplit]
+ [ c=>\chardef\currentcolorchannel1,%
+ m=>\chardef\currentcolorchannel2,%
+ y=>\chardef\currentcolorchannel3,%
+ k=>\chardef\currentcolorchannel4,%
+ r=>\chardef\currentcolorchannel5,%
+ g=>\chardef\currentcolorchannel6,%
+ b=>\chardef\currentcolorchannel7,%
+ s=>\chardef\currentcolorchannel8,%
+ \v!no=>,% \currentcolorchannel0,% all colors
+ \s!default=>,% \currentcolorchannel0,% all colors
+ \s!unknown=>\filterspotcolortrue
+ \edef\currentspotcolor{\commalistelement}]%
+ \setsystemmode{\v!color\colorsplitsuffix}%
+ \iffilterspotcolor \let\@@clrgb\v!no \fi}
+
+\def\dosetupcolors[#1]%
+ {\getparameters[\??cl][#1]%
+ \doifelse\@@clspot\v!yes
+ \SPOTsupportedtrue
+ \SPOTsupportedfalse
+ \doifelsenothing\@@clsplit
+ \resetcolorsplitting
+ \setcolorsplitting
+ \doifelse\@@clreduction\v!yes
+ \reduceCMYKtrue
+ \reduceCMYKfalse
+ \doifelse\@@clexpansion\v!yes
+ \freezecolorstrue
+ \freezecolorsfalse
+ \doifelse\@@clcriterium\v!all
+ \hidesplitcolortrue
+ \hidesplitcolorfalse
+ \doifelse\@@clrgb\v!no
+ {\ifRGBsupported \showmessage\m!colors {9}\v!rgb\RGBsupportedfalse\fi}
+ {\ifRGBsupported\else\showmessage\m!colors{10}\v!rgb\RGBsupportedtrue \fi}%
+ \doifelse\@@clcmyk\v!no
+ {\ifCMYKsupported \showmessage\m!colors {9}\v!cmyk\CMYKsupportedfalse\fi}
+ {\ifCMYKsupported\else\showmessage\m!colors{10}\v!cmyk\CMYKsupportedtrue \fi}%
+ % todo : mpspot
+ \doifelse\@@clmpcmyk\v!no
+ {\ifMPcmykcolors \showmessage\m!colors {9}{\v!mp\v!cmyk}\MPcmykcolorsfalse\fi}
+ {\ifMPcmykcolors\else\showmessage\m!colors{10}{\v!mp\v!cmyk}\MPcmykcolorstrue \fi}%
+ \doifelse\@@clmpspot\v!no
+ {\ifMPspotcolors \showmessage\m!colors {9}{\v!mp\v!spot}\MPspotcolorsfalse\fi}
+ {\ifMPspotcolors\else\showmessage\m!colors{10}{\v!mp\v!spot}\MPspotcolorstrue \fi}%
+ \preferGRAYfalse
+ \processaction
+ [\@@clconversion]
+ [ \v!yes=>\preferGRAYtrue,
+ \v!always=>\preferGRAYtrue\RGBsupportedfalse\CMYKsupportedfalse]%
+ \ifRGBsupported
+ \converttoGRAYfalse
+ \forcegrayMPcolorsfalse
+ \else\ifCMYKsupported
+ \converttoGRAYfalse
+ \forcegrayMPcolorsfalse
+ \convertMPcolorstrue
+ \ifreduceCMYK
+ \reduceMPcolorstrue
+ \fi
+ \else
+ \ifconverttoGRAY\else\showmessage\m!colors{11}\empty\fi
+ \converttoGRAYtrue
+ \forcegrayMPcolorstrue
+ \convertMPcolorsfalse
+ \reduceMPcolorsfalse
+ \fi\fi
+ \processaction
+ [\@@clstate]
+ [ \v!global=>\ifincolor\else\showmessage\m!colors1\colorstyle\fi
+ \incolortrue\localcolorfalse,
+ \v!local=>\ifincolor\else\showmessage\m!colors2\colorstyle\fi
+ \incolortrue\localcolortrue,
+ \v!start=>\ifincolor\else\showmessage\m!colors1\colorstyle\fi
+ \incolortrue\localcolorfalse
+ \let\@@clstate\v!global,
+ \v!stop=>\incolorfalse\localcolorfalse
+ \forcegrayMPcolorstrue]%
+ \initializemaintextcolor}
+
+%D \macros
+%D {doifcolorelse}
+%D
+%D Switching to a color is done by means of the following
+%D command. Later on we will explain the use of palets. We
+%D define ourselves a color conditional first.
+
+\let\currentpalet\empty
+
+\beginTEX
+
+\def\doifcolorelse#1%
+ {\@EA\ifx\csname\??cr\@EA\ifx\csname\??cr\currentpalet#1\endcsname\relax\else\currentpalet\fi#1\endcsname\relax
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\doifcolorelse#1%
+ {\ifcsname\??cr\ifcsname\??cr\currentpalet#1\endcsname\currentpalet\fi#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {localstartcolor,localstopcolor}
+%D
+%D Simple color support, that is without nesting, is provided
+%D by:
+
+\def\localstartcolor
+ {\ifincolor
+ \localcolortrue
+ \expandafter\doglobalstartcolor
+ \else
+ \expandafter\noglobalstartcolor
+ \fi}
+
+\def\localstopcolor
+ {\ifincolor
+ \doglobalstopcolor
+ \else
+ \noglobalstopcolor
+ \fi}
+
+%D \macros
+%D {startcolor,stopcolor}
+%D
+%D The more save method, the one that saves the current color
+%D state and returns to this state afterward, is activated by:
+%D
+%D \showsetup{startcolor}
+
+\def\startcolor
+ {\ifincolor
+ \expandafter\doglobalstartcolor
+ \else
+ \expandafter\noglobalstartcolor
+ \fi}
+
+\def\stopcolor
+ {\ifincolor
+ \doglobalstopcolor
+ \else
+ \noglobalstopcolor
+ \fi}
+
+%D This macros call the global color switching ones. Starting
+%D a global, i.e. a possible page boundary crossing, color
+%D mode also sets a \type{\mark} in \TEX's internal list.
+
+\newcount\colorlevel
+
+\letvalue{\??cl0C}\empty % saved color
+\letvalue{\??cl0S}\empty % stop command
+
+%D We keep a positive color stack for foreground colors, and
+%D a negative one for backgrounds. Not that brilliant a
+%D solution, but it suits. The signs are swapped when the
+%D page ornaments are typeset.
+
+\let\@@colorplus \plusone
+\let\@@colorminus\minusone
+
+\def\@@currentcolorname {\??cl\the\colorlevel C}
+\def\@@currentcolorstop {\??cl\the\colorlevel S}
+%def\@@currenttransparent{\??cl\the\colorlevel T}
+
+\def\currentcolor
+ {\csname
+ \ifundefined\@@currentcolorname\s!empty\else\@@currentcolorname\fi
+ \endcsname}
+
+\def\dodoglobalstartcolor
+ {\global\@EA\let\@EA\@@currentcolor\csname\@@currentcolorname\endcsname
+ \global\advance\colorlevel \@@colorplus
+ \global\@EA\let\csname\@@currentcolorname\endcsname\@@askedcolor
+ %\debuggerinfo\m!colors
+ % {start \@@askedcolor\space at level \the\colorlevel}%
+ \ifx\@@askedcolor\empty
+ \global\@EA\let\csname\@@currentcolorname\endcsname\@@currentcolor
+ \global\@EA\let\csname\@@currentcolorstop\endcsname\donoglobalstopcolor
+ \else\ifx\@@askedcolor\@@currentcolor
+ \global\@EA\let\csname\@@currentcolorstop\endcsname\donoglobalstopcolor
+ \else
+ \doifcolorelse\@@askedcolor
+ {%\docolormark\@@askedcolor
+ \ifpermitcolormode\docolormark\@@askedcolor\fi
+ \global\@EA\let\csname\@@currentcolorstop\endcsname\dodoglobalstopcolor
+ \startcolormode\@@askedcolor}
+ {\global\@EA\let\csname\@@currentcolorstop\endcsname\donoglobalstopcolor
+ \showmessage\m!colors3\@@askedcolor}%
+ \fi\fi}
+
+\def\doglobalstartcolor[#1]%
+ {\edef\@@askedcolor{#1}%
+ \ifcase\colorlevel\relax
+ \ifx\@@askedcolor\empty
+ \global\@EA\let\csname\@@currentcolorstop\endcsname\empty
+ \else
+ \dodoglobalstartcolor
+ \fi
+ \else
+ \dodoglobalstartcolor
+ \fi
+ \ignorespaces}
+
+\def\noglobalstartcolor[#1]%
+ {}
+
+\def\dodoglobalstopcolor
+ {\ifcase\colorlevel \else
+ \donoglobalstopcolor
+ \global\@EA\let\@EA\@@previouscolor\csname\@@currentcolorname\endcsname
+ \ifcase\colorlevel\relax
+ \ifpermitcolormode
+ \docolormark\empty
+ \conditionalstoptransparency
+ \dostopcolormode
+ \fi
+ \else % let's do a bit redundant testing here
+ \docolormark\@@previouscolor
+ \ifx\@@previouscolor\empty
+ \ifpermitcolormode
+ \conditionalstoptransparency
+ \dostopcolormode
+ \fi
+ \else
+ \doifcolorelse\@@previouscolor
+ {\ifx\@@currentcolor\@@previouscolor\else
+ % alternatively we could let \startcolormode handle this
+ \ifpermitcolormode
+ \conditionalstoptransparency % really needed
+ % more safe but less efficient: \dostopcolormode
+ \fi
+ \startcolormode\@@previouscolor
+ \fi}
+ {\ifpermitcolormode
+ \conditionalstoptransparency
+ \dostopcolormode
+ \fi}%
+ \fi
+ \fi
+ \fi}
+
+\def\donoglobalstopcolor
+ {\ifcase\colorlevel \else
+ \global\@EA\let\@EA\@@currentcolor\csname\@@currentcolorname\endcsname
+ %\debuggerinfo{\m!colors}
+ % {stop \@@currentcolor\normalspace at level \the\colorlevel}%
+ \global\advance\colorlevel \@@colorminus
+ \fi}
+
+\def\doglobalstopcolor
+ {\csname\@@currentcolorstop\endcsname}
+
+\let\noglobalstopcolor\relax
+
+%D We don't use grouping and save each stop alternative. This
+%D permits be especially useful in for instance local color
+%D support in verbatim. Using \type{\bgroup}||\type{\egroup}
+%D pairs could interfere with calling commands
+
+%D This color mechanism takes care of nested colors, like in:
+%D
+%D \startbuffer
+%D \color[green]{groen \color[green]{groen \color[red]{rood}} groen}
+%D \color[green]{groen \color[]{groen \color[red]{rood}} groen}
+%D \color[green]{groen \color[red]{rood \color[red]{rood}} groen}
+%D \color[green]{groen \color[green]{groen \color[]{groen}} groen}
+%D \color[green]{groen \color[red]{rood} groen}
+%D \color[green]{groen \color[]{groen} groen}
+%D \color[]{zwart \color[red]{rood} zwart}
+%D \color[]{zwart}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D Crossing page boundaries is of course also handled.
+%D Undefined or empty color specifications are treated as
+%D efficient as possible.
+%D
+%D \startbuffer
+%D \startcolor[green]
+%D [green] \input tufte [green] \par
+%D \startcolor[]
+%D [green] \input knuth [green] \par
+%D \startcolor[red]
+%D [red] \input tufte [red] \par
+%D \startcolor[yellow]
+%D [yellow] \input knuth [yellow] \par
+%D \stopcolor
+%D [red] \input tufte [red] \par
+%D \stopcolor
+%D [green] \input knuth [green] \par
+%D \stopcolor
+%D [green] \input tufte [green] \par
+%D \stopcolor
+%D \stopbuffer
+%D
+%D \startpacked
+%D \getbuffer
+%D \stoppacked
+%D
+%D These quotes are typeset by saying:
+%D
+%D \typebuffer
+
+%D We already mentioned that colors interfere with building
+%D the pagebody. This means that when the page is composed,
+%D the colors temporary have to be reset. After the page is
+%D shipped out, we have to revive the current color.
+%D
+%D We use \type{\mark}s to keep track of colors across page
+%D boundaries. Unfortunately standard \TEX\ supports only one mark,
+%D and using this one for color support only would be a waste.
+%D We therefore use an adapted version of J.~Fox's multiple mark
+%D mechanism as (re|)|implemented in \module{supp-mrk}.
+
+\doifdefinedelse{rawnewmark}
+ {\rawnewmark\colormark}
+ {\let\colormark\gobbleoneargument}
+
+%D Using this mark mechanism with lots of colors has one
+%D major drawback: \TEX's memory tends to overflow when
+%D very colorful text is stored in a global box. Even worse is that
+%D the processing time grows considerably. We therefore support
+%D local as well as global color switching.
+%D
+%D Of the next macros, \type {\popcolor} is to be used after
+%D the actual \type {\shipout} and \type {\startcolorpage} and
+%D \type {\stopcolorpage} are called when entering and leaving
+%D the \type {\pagebody} builder. In case of emergencies
+%D \type {\pushcolor} can be used to undo the current color,
+%D for instance when insertions are appended to the page.
+%D
+%D Out of efficiency we only use marks when needed. The next
+%D macro tries to find out if indeed a mark should be set.
+%D This macro uses the boolean \type {\ifinpagebody}, which can
+%D be defined and set in the module that handles the pagebody.
+
+\def\docolormark#1%
+ {\iflocalcolor \else \ifinpagebody \else \ifinframed \else
+ \dodocolormark{#1}%
+ \fi \fi \fi}
+
+\let\lastcolormark=\empty
+
+\def\dodocolormark#1%
+ {\edef\newcolormark{#1}%
+ \ifx\newcolormark\lastcolormark\else
+ \global\let\lastcolormark\newcolormark
+ \@EA\rawsetmark\@EA\colormark\@EA{\lastcolormark}%
+ \fi}
+
+%D \macros
+%D {pushcolor, popcolor}
+%D
+%D Pushing the current state in the output routine simply comes
+%D to resetting the color to black, while popping restores the
+%D color state to that of before the break.
+
+\def\topofpagecolor{\rawgetbotmark\colormark} % see postponing
+
+\def\pushcolor
+ {\stopcolormode}
+
+\def\popcolor
+ {\doifsomething{\rawgetbotmark\colormark}
+ {%\debuggerinfo\m!colors{popping \getbotmark\colormark}%
+ \startcolormode{\rawgetbotmark\colormark}}}
+
+\def\popsplitcolor
+ {\getsplitmarks\colormark % hier wel
+ \doifsomething{\rawgetsplitbotmark\colormark}
+ {%\debuggerinfo\m!colors{split popping \getsplitbotmark\colormark}%
+ \startcolormode{\rawgetsplitbotmark\colormark}}}
+
+\appendtoks\pushcolor \to\everypushproperties
+\appendtoks\popcolor \to\everypopproperties
+\appendtoks\popsplitcolor\to\everypopsplitproperties
+
+% Private macro: only needed in test cases (like multiple
+% seperations in one file); no user command!
+
+\def\resynccolor
+ {\ifcase\pagetotal % \ifdim\pagetotal=\zeropoint
+ \popcolor
+ \else\ifx\@@currentcolor\empty
+ \ifx\maintextcolor\empty\else
+ \startcolormode\maintextcolor
+ \fi
+ \else
+ \startcolormode\@@currentcolor
+ \fi\fi}
+
+%D \macros
+%D {startcolorpage, stopcolorpage}
+%D
+%D Local use can be forced with the next two macros. Nesting
+%D is still supported but colors are no longer marked.
+%D
+%D The next implementation makes (simple) color separation more
+%D easy. It also supports nested colors in page backgrounds
+%D and texts.
+
+\def\startcolorpage
+ {\bgroup
+ \let\@@colorplus \minusone
+ \let\@@colorminus\plusone
+ \let\docolormark\gobbleoneargument
+ \edef\savedcolorlevel{\the\colorlevel}%
+ \global\colorlevel\zerocount % before \localstartcolor of
+ \ifx\maintextcolor\empty % course, ugly bug removed
+ \localstartcolor[\defaulttextcolor]%
+ \else
+ \localstartcolor[\maintextcolor]%
+ \fi}
+
+\def\stopcolorpage
+ {\localstopcolor
+ \global\colorlevel\savedcolorlevel
+ \egroup}
+
+\appendtoks \startcolorpage\to\everystarttextproperties
+\prependtoks\stopcolorpage \to\everystoptextproperties
+
+%D \macros
+%D {color,graycolor}
+%D
+%D This leaves the simple color command:
+%D
+%D \showsetup{color}
+%D \showsetup{graycolor}
+%D
+%D Which can be used straightforward: \color[green]{green as gras}.
+%D We want color support to be similar to font support and
+%D therefore implement \type{\color} as:
+
+\unexpanded\def\color[#1]%
+ {\groupedcommand{\startcolor[#1]}\stopcolor}
+
+% \let\switchtocolor\color
+
+%D When \type {\somecolor} is issued, we can savely assume
+%D grouping. Using \type {\groupedcommand} here (i.e.\ the
+%D definition of \type {\color}) is unsafe because in
+%D interferes with for instance switching attributes.
+
+%D Also wrong, test in combinations: \type{...{}{\red test}}
+%D
+%D \def\switchtocolor[#1]%
+%D {\startcolor[#1]\aftergroup\stopcolor}
+
+\def\switchtocolor[#1]% grouping is realy needed, else migration
+ {\bgroup\startcolor[#1]\aftergroup\stopcolor\aftergroup\egroup}
+
+\unexpanded\def\color[#1]%
+ {\groupedcommand{\startcolor[#1]}\stopcolor}
+
+\unexpanded\def\graycolor[#1]% not \gray because this is a color
+ {\groupedcommand{\RGBsupportedfalse\CMYKsupportedfalse\startcolor[#1]}\stopcolor}
+
+\let\grey\graycolor
+
+%D This implementation enables use of defined colors like:
+%D
+%D \starttyping
+%D Look at the {\brightgreen bright} side of life and get
+%D yourself no \red{red} head!
+%D \stoptyping
+
+%D \macros
+%D {colorvalue, grayvalue}
+%D
+%D We can typeset the color components using \type{\colorvalue} and
+%D \type{\grayvalue}. The commands:
+%D
+%D \startbuffer
+%D color value of SomeKindOfRed: \colorvalue{SomeKindOfRed} \crlf
+%D gray value of SomeKindOfRed: \grayvalue{SomeKindOfRed}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D show us:
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D We can speed the following macros a bit up, but this
+%D hardly pays off; they are only used in the manual.
+
+\def\realcolorformat#1%
+ {\ifnum#1<\plusten 0.00\the#1\else
+ \ifnum#1<\plushundred 0.0\the#1\else
+ \ifnum#1<\plusthousand 0.\the#1\else
+ 1.000\fi\fi\fi}
+
+\def\colorformatseparator{ }
+
+\def\dodoformatcolor#1%
+ {\colordimen#1\points\relax
+ \ifdim\colordimen>\onepoint
+ \colordimen\onepoint
+ \fi
+ \multiply\colordimen \plusthousand
+ \colorcount\colordimen
+ \advance\colorcount \medcard
+ \divide\colorcount \maxcard \relax
+ \realcolorformat\colorcount}
+
+\def\doformatcolorR#1:#2:#3:#4:#5\od
+ {\dodoformatcolor{#1}\colorformatseparator
+ \dodoformatcolor{#2}\colorformatseparator
+ \dodoformatcolor{#3}}
+
+\def\doformatcolorC#1:#2:#3:#4:#5:#6\od
+ {\dodoformatcolor{#1}\colorformatseparator
+ \dodoformatcolor{#2}\colorformatseparator
+ \dodoformatcolor{#3}\colorformatseparator
+ \dodoformatcolor{#4}}
+
+\def\doformatcolorS#1:#2:#3\od
+ {\dodoformatcolor{#1}}
+
+\def\doformatcolor#1:%
+ {\getvalue{doformatcolor#1}}
+
+\def\colorvalue
+ {\dowithcolor\doformatcolor}
+
+\def\doformatgrayR#1:#2:#3:#4:#5\od
+ {\convertRGBtoGRAY{#1}{#2}{#3}%
+ \dodoformatcolor\@@cl@@s}
+
+\def\doformatgrayC#1:#2:#3:#4:#5:#6\od
+ {\convertCMYKtoGRAY{#1}{#2}{#3}{#4}%
+ \dodoformatcolor\@@cl@@s}
+
+\def\doformatgrayS#1:#2:#3\od
+ {\dodoformatcolor{#1}}
+
+% \def\doformatgrayP#1:#2:#3:#4\od
+% {\dowithcolor\doformatcolor{#1}}
+
+\def\doformatgrayP#1:#2:#3:#4:#5:#6\od
+ {\dowithcolor\doformatcolor{#1}}
+
+\def\doformatgray#1:%
+ {\getvalue{doformatgray#1}}
+
+\def\grayvalue
+ {\dowithcolor\doformatgray}
+
+%D \macros
+%D {localstartraster,localstopraster,
+%D startraster,stopraster}
+%D
+%D The previous conversions are not linear and treat each color
+%D component according to human perception curves. Pure gray
+%D (we call them rasters) has equal color components. In
+%D \CONTEXT\ rasters are only used as backgrounds and these
+%D don't cross page boundaries in the way color does. Therefore
+%D we don't need stacks and marks. Just to be compatible with
+%D color support we offer both 'global' and 'local' commands.
+
+\def\localstartraster[#1]%
+ {\doifelsenothing{#1}
+ {\dostartgraymode\@@rsscreen}
+ {\dostartgraymode{#1}}}
+
+\def\localstopraster
+ {\dostopgraymode}
+
+\let\startraster\localstartraster
+\let\stopraster \localstopraster
+
+%D In this documentation we will not go into too much details
+%D on palets. Curious users can find more information on this
+%D topic in \from[use of color].
+%D
+%D At the moment we implemented color in \CONTEXT\ color
+%D printing was not yet on the desktop. In spite of this lack our
+%D graphics designer made colorfull illustrations. When printed
+%D on a black and white printer, distinctive colors can come
+%D out equally gray. We therefore decided to use only colors
+%D that were distinctive in colors as well as in black and
+%D white print.
+%D
+%D Although none of the graphic packages we used supported
+%D logical colors and global color redefition, we build this
+%D support into \CONTEXT. This enabled us to experiment and
+%D also prepared us for the future.
+
+%D \macros
+%D {definepalet}
+%D
+%D Colors are grouped in palets. The colors in such a palet can
+%D have colorful names, but best is to use names that specify
+%D their use, like {\em important} or {\em danger}. As a sort
+%D of example \CONTEXT\ has some palets predefined,
+%D like:\footnote{At the time I wrote the palet support, I was
+%D reading 'A hort history of time' of S.~Hawkins, so that's
+%D why we stuck to quarks.}
+%D
+%D \starttyping
+%D \definepalet
+%D [alfa]
+%D [ top=rood:7,
+%D bottom=groen:6,
+%D up=blauw:5,
+%D down=cyaan:4,
+%D strange=magenta:3,
+%D charm=geel:2]
+%D \stoptyping
+%D
+%D It's formal definition is:
+%D
+%D \showsetup{definepalet}
+%D
+%D Visualized, such a palet looks like:
+%D
+%D \startbuffer[palet]
+%D \showpalet [alfa] [horizontal,name,number,value]
+%D \stopbuffer
+%D
+%D \startlinecorrection
+%D \getbuffer[palet]
+%D \stoplinecorrection
+%D
+%D This bar shows both the color and gray alternatives of the
+%D palet components (not visible in black and white print).
+%D
+%D When needed, one can copy a palet by saying:
+%D
+%D \starttyping
+%D \definepalet [TEXcolorpretty] [colorpretty]
+%D \stoptyping
+%D
+%D This saves us some typing in for instance the modules that
+%D deal with pretty verbatim typesetting.
+
+\def\definepalet
+ {\dodoubleargument\dodefinepalet}
+
+\def\dodefinepalet[#1][#2]%
+ {\doifassignmentelse{#2}
+ {\showmessage\m!colors6{#1}%
+ \letvalue{\??pa#1}\empty
+ \setevalue{\??pa\??pa#1}{#2}%
+ \def\dodododefinepalet[##1=##2]%
+ {\doifvaluesomething{\??pa#1}
+ {\setevalue{\??pa#1}{\getvalue{\??pa#1},}}%
+ \setevalue{\??pa#1}{\getvalue{\??pa#1}##1}%
+ \doifdefinedelse{\??cr##2}
+ {\iffreezecolors\@EA\setevalue\else\@EA\setvalue\fi
+ {\??cr#1:##1}{\getvalue{\??cr##2}}}
+ {\letvalue{\??cr#1:##1}\colorXpattern}}%
+ \def\dododefinepalet##1%
+ {\dodododefinepalet[##1]}%
+ \processcommalist[#2]\dododefinepalet}
+ {\doifdefined{\??pa#2}
+ {\expanded{\dodefinepalet[#1][\getvalue{\??pa\??pa#2}]}}}}
+
+\let\paletsize\!!zerocount
+
+\def\getpaletsize[#1]%
+ {\getcommacommandsize[\getvalue{\??pa\??pa#1}]%
+ \edef\paletsize{\number\commalistsize}}
+
+%D \macros
+%D {setuppalet}
+%D
+%D Colors are taken from the current palet, if defined.
+%D Setting the current palet is done by:
+%D
+%D \showsetup{setuppalet}
+
+\let\currentpalet\empty
+
+\def\setuppalet
+ {\dosingleempty\dosetuppalet}
+
+\def\dosetuppalet[#1]%
+ {\edef\currentpalet{#1}%
+ \ifx\currentpalet\empty
+ % seems to be a reset
+ \else
+ % fast enough for tex and etex
+ \@EA\ifx\csname\??pa\currentpalet\endcsname\relax
+ \showmessage\m!colors7\currentpalet
+ \let\currentpalet\empty
+ \else
+ \edef\currentpalet{#1:}%
+ \fi
+ \fi}
+
+%D \macros
+%D {showpalet}
+%D
+%D The previous visualization was typeset with:
+%D
+%D \typebuffer[palet]
+%D
+%D This commands is defined as:
+%D
+%D \showsetup{showpalet}
+
+\fetchruntimecommand \showpalet {\f!colorprefix\s!run}
+
+%D \macros
+%D {definecolorgroup}
+%D
+%D The naming of the colors in this palet suggests some
+%D ordening, which in turn is suported by color grouping.
+%D
+%D \starttyping
+%D \definecolorgroup
+%D [red]
+%D [1.00:0.90:0.90,
+%D 1.00:0.80:0.80,
+%D 1.00:0.70:0.70,
+%D 1.00:0.55:0.55,
+%D 1.00:0.40:0.40,
+%D 1.00:0.25:0.25,
+%D 1.00:0.15:0.15,
+%D 0.90:0.00:0.00]
+%D \stoptyping
+%D
+%D In such a color group colors are numbered from~$1$ to~$n$.
+%D
+%D \showsetup{definecolorgroup}
+%D
+%D This kind of specification is not only more compact than
+%D defining each color separate, it also loads faster and takes
+%D less bytes.
+
+\def\definecolorgroup
+ {\dotripleempty\dodefinecolorgroup}
+
+\def\dodefinecolorgroup[#1][#2][#3]%
+ {\ifthirdargument
+ \processaction
+ [#2]
+ [ \v!cmyk=>\edef\currentcolorspace{C},
+ \v!rgb=>\edef\currentcolorspace{R},
+ \v!gray=>\edef\currentcolorspace{S},
+ \v!spot=>\edef\currentcolorspace{P},
+ \v!s=>\edef\currentcolorspace{S},
+ \s!unknown=>\edef\currentcolorspace{R}]%
+ \colorcount\zerocount
+ \def\dododefinecolorgroup##1%
+ {\advance\colorcount \plusone
+ \setevalue{\??cr#1:\the\colorcount}{\currentcolorspace:##1:0:0}}%
+ \processcommalist[#3]\dododefinecolorgroup
+ \else
+ \doifinstringelse{:}{#2}
+ {\definecolorgroup[#1][\v!rgb][#2]}
+ {\doloop
+ {\doifdefinedelse{\??cr#2:\recurselevel}
+ {\setevalue{\??cr#1:\recurselevel}%
+ {\getvalue{\??cr#2:\recurselevel}}}
+ {\exitloop}}}%
+ \fi}
+
+%D \macros
+%D {showcolorgroup}
+%D
+%D We can show the group by:
+%D
+%D \startbuffer
+%D \showcolorgroup [blue] [horizontal,name,number,value]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or in color:
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D which uses:
+%D
+%D \showsetup{showcolorgroup}
+
+\fetchruntimecommand \showcolorgroup {\f!colorprefix\s!run}
+
+%D There are ten predefined color groups, like
+%D \color[green]{\em groen}, \color[red]{\em rood},
+%D \color[blue]{\em blauw}, \color[cyan]{\em cyaan},
+%D \color[magenta]{\em magenta} and \color[yellow]{\em geel}.
+%D
+%D \startlinecorrection
+%D \hbox to \hsize
+%D {\hss
+%D \showcolorgroup [red] [vertical,name,number]\hss
+%D \showcolorgroup [green] [vertical,name]\hss
+%D \showcolorgroup [blue] [vertical,name]\hss
+%D \showcolorgroup [cyan] [vertical,name]\hss
+%D \showcolorgroup [magenta] [vertical,name]\hss
+%D \showcolorgroup [yellow] [vertical,name]\hss}
+%D \stoplinecorrection
+%D
+%D These groups are used to define palets {\em alfa} upto {\em
+%D zeta}. As long as we don't use colors from the same row, we
+%D get ourselves distinctive palets. By activating such a palet
+%D one gains access to its members {\em top} to {\em charm} (of
+%D course one should use more suitable names than these).
+%D
+%D \startlinecorrection
+%D \hbox to \hsize
+%D {\showpalet [alfa] [vertical,name,number]\hss
+%D \showpalet [beta] [vertical,name]\hss
+%D \showpalet [gamma] [vertical,name]\hss
+%D \showpalet [delta] [vertical,name]\hss
+%D \showpalet [epsilon] [vertical,name]\hss
+%D \showpalet [zeta] [vertical,name]}
+%D \stoplinecorrection
+%D
+%D By using the keyword \type {value} the individual color
+%D components are shown too. When printed in color, these
+%D showcases show both the colors and the gray value.
+
+%D \macros
+%D {comparepalet}
+%D
+%D There are some more testing macros available:
+%D
+%D \startbuffer
+%D \comparepalet [alfa]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D shows the palet colors against a background:
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D The formal definition is:
+%D
+%D \showsetup{comparepalet}
+
+\fetchruntimecommand \comparepalet {\f!colorprefix\s!run}
+
+%D \macros
+%D {comparecolorgroup}
+%D
+%D The similar command:
+%D
+%D \startbuffer
+%D \comparecolorgroup [blue]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D shows color groups:
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D this commands are defined as:
+%D
+%D \showsetup{comparecolorgroup}
+
+\fetchruntimecommand \comparecolorgroup {\f!colorprefix\s!run}
+
+%D \macros
+%D {showcolor}
+%D
+%D But let's not forget that we also have the more traditional
+%D non||related colors. These show up after:
+%D
+%D \starttyping
+%D \showcolor [name]
+%D \stoptyping
+%D
+%D Where \type{name} for instance can be \type{rgb}.
+%D
+%D \showsetup{showcolor}
+
+\fetchruntimecommand \showcolor {\f!colorprefix\s!run}
+
+%D It would make sense to put the following code in \type
+%D {colo-mps}, but it it rather low level.
+
+%D \macros
+%D {ifMPgraphics, ifMPcmykcolors, MPcolor}
+%D
+%D A very special macro is \type{\MPcolor}. This one can be
+%D used to pass a \CONTEXT\ color to \METAPOST.
+%D
+%D \starttyping
+%D \MPcolor{my own red}
+%D \stoptyping
+%D
+%D This macro returns a \METAPOST\ triplet \type{(R,G,B)}.
+%D Unless \CMYK\ color support is turned on with \type
+%D {MPcmyk}, only \cap{RGB} colors and gray scales are
+%D supported.
+
+\newif\ifMPcmykcolors % \MPcmykcolorsfalse
+\newif\ifMPspotcolors % \MPspotcolorsfalse
+
+\beginTEX
+
+\def\scaledMPcolor#1#2%
+ {\ifMPgraphics
+ \handlecolorwith\doMPcolor
+ \csname\??cr\@EA
+ \ifx\csname\??cr\currentpalet#2\endcsname\relax\else\currentpalet\fi
+ #2\endcsname
+ :::::::\end#1\end
+ \else
+ #2%
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\scaledMPcolor#1#2%
+ {\ifMPgraphics
+ \handlecolorwith\doMPcolor
+ \csname\??cr
+ \ifcsname\??cr\currentpalet#2\endcsname\currentpalet\fi
+ #2\endcsname
+ :::::::\end#1\end
+ \else
+ #2%
+ \fi}
+
+\endETEX
+
+\def\MPcolor{\scaledMPcolor1}
+
+%D Before we had transparency available, the following
+%D conversion macro was available:
+%D
+%D \starttyping
+%D \def\doMPcolor#1:#2:#3:#4:#5:#6:#7:#8\end
+%D {\if #1R(#2,#3,#4)%
+%D \else\if#1C\ifMPcmykcolors cmyk(#2,#3,#4,#5)\else(1-#2-#5,1-#3-#5,1-#4-#5)\fi
+%D \else\if#1S(#2,#2,#2)%
+%D \else (0,0,0)%
+%D \fi\fi\fi}
+%D \stoptyping
+%D
+%D In order to be useful, this macro is to be fully
+%D expandabele.
+
+\def\doMPcolor#1:% #1 can be \relax ! ! ! i.e. an empty color
+ {\csname
+ MPc\@EA\ifx\csname MPc\string#1\endcsname\relax B\else#1\fi
+ \endcsname}
+
+\def\MPcR{\doMPrgb}
+\def\MPcC{\ifMPcmykcolors\@EA\doMPcmykY\else\@EA\doMPcmykN\fi}
+\def\MPcS{\doMPgray}
+\def\MPcP{\ifMPspotcolors\@EA\doMPspotY\else\@EA\doMPspotN\fi}
+\def\MPcB{\doMPblack}
+
+\def\transparentMP {transparent}
+\def\cmykMP {scaledcmyk}
+\def\cmykASrgbMP {scaledcmykasrgb} % not really needed any more
+\def\rgbMP {scaledrgb}
+\def\grayMP {scaledgray}
+\def\spotMP {spotcolor}
+
+\let\processMP\spotMP % for some time, will become obsolete
+
+\def\doMPtransparent#1#2:#3:#4\end
+ {\ifcase#2\space(#1)\else\transparentMP(#2,#3,(#1))\fi}
+
+\def\doMPgray#1:#2\end#3\end
+ {\doMPtransparent{\grayMP(#1,#3)}#2\end}
+
+\def\doMPrgb#1:#2:#3:#4\end#5\end
+ {\doMPtransparent{\rgbMP(#1,#2,#3,#5)}#4\end}
+
+\def\doMPcmykY#1:#2:#3:#4:#5\end#6\end
+ {\doMPtransparent{\cmykMP(#1,#2,#3,#4,#6)}#5\end}
+
+\def\doMPcmykN#1:#2:#3:#4:#5\end#6\end
+ {\doMPtransparent{\cmykASrgbMP(#1,#2,#3,#4,#6)}#5\end}
+
+% \def\doMPspotY#1:#2:#3\end#4\end
+% {\doMPtransparent{\spotMP("#1",#2)}#3\end}
+%
+% \def\doMPspotN#1:#2:#3\end#4\end
+% {\scaledMPcolor{#2}{#1}}
+
+\def\doMPspotY#1:#2:#3:#4:#5\end#6\end % best make #3 same as #1 when empty
+ {\doMPtransparent{multitonecolor("#1",#2,"#3","#4")}#5\end}
+
+\def\doMPspotN#1:#2:#3:#4:#5\end#6\end
+ {\scaledMPcolor{#4}{#1}}
+
+\def\doMPblack#1\end#2\end
+ {\unknownMPcolor}
+
+\def\unknownMPcolor
+ {(0,0,0)}
+
+%D \macros
+%D {PDFcolor,FDFcolor}
+%D
+%D Similar alternatives are avaliable for \PDF:
+
+\def\PDFcolor #1{\handlecolorwith\doPDFcolor \csname\??cr#1\endcsname:::::::\end}
+\def\PDFcolorvalue#1{\handlecolorwith\doPDFcolorvalue\csname\??cr#1\endcsname:::::::\end}
+\def\FDFcolor #1{\handlecolorwith\doFDFcolor \csname\??cr#1\endcsname:::::::\end}
+
+% \def\doPDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end
+% {\if #1R#2 #3 #4 rg%
+% \else\if#1C#2 #3 #4 #5 k%
+% \else\if#1S#2 g%
+% \else\if#1P#3 g% todo
+% \else 0 g%
+% \fi\fi\fi\fi}
+%
+% \def\doPDFcolorvalue#1:#2:#3:#4:#5:#6:#7:#8\end
+% {\if #1R#2 #3 #4%
+% \else\if#1C#2 #3 #4 #5%
+% \else\if#1S#2%
+% \else\if#1P#3%
+% \else 0%
+% \fi\fi\fi\fi}
+%
+% \def\doFDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end
+% {[\if #1R#2 #3 #4%
+% \else\if#1C#2 #3 #4 #5%
+% \else\if#1S#2%
+% \else\if#1P#3% todo
+% \else 0%
+% \fi\fi\fi\fi]}
+
+\def\doPDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end
+ {\if #1R#2 #3 #4 rg%
+ \else\if#1C#2 #3 #4 #5 k%
+ \else\if#1S#2 g%
+ \else\if#1P#5 g%
+ \else 0 g%
+ \fi\fi\fi\fi}
+
+\def\doPDFcolorvalue#1:#2:#3:#4:#5:#6:#7:#8\end
+ {\if #1R#2 #3 #4%
+ \else\if#1C#2 #3 #4 #5%
+ \else\if#1S#2%
+ \else\if#1P#5%
+ \else 0%
+ \fi\fi\fi\fi}
+
+\def\doFDFcolor#1:#2:#3:#4:#5:#6:#7:#8\end
+ {[\if #1R#2 #3 #4%
+ \else\if#1C#2 #3 #4 #5%
+ \else\if#1S#2%
+ \else\if#1P#5%
+ \else 0%
+ \fi\fi\fi\fi]}
+
+% a few more obscure ones:
+
+\def\internalspotcolorname#1{\handlecolorwith\dointernalspotcolorname\csname\??cr#1\endcsname:::::::\end}
+\def\internalspotcolorsize#1{\handlecolorwith\dointernalspotcolorsize\csname\??cr#1\endcsname:::::::\end}
+
+\def\dointernalspotcolorname#1:#2:#3:#4:#5:#6:#7:#8\end{\if#1P\ifcase0#3 #1\else#2\fi\else#1\fi}
+\def\dointernalspotcolorsize#1:#2:#3:#4:#5:#6:#7:#8\end{\if#1P\ifcase0#3 0\else#3\fi\else 0\fi}
+
+%D \macros
+%D {everyshapebox}
+%D
+%D A terrible hack, needed because we cannot have marks in
+%D shape boxes.
+
+\appendtoks \localcolortrue \to \everyshapebox
+
+%D We default to the colors defined in \module{colo-rgb} and
+%D support both \cap{RGB} and \cap{CMYK} output.
+
+\setupcolors
+ [\c!state=\v!stop,
+ \c!conversion=\v!yes,
+ \c!reduction=\v!no,
+ \c!rgb=\v!yes,
+ \c!cmyk=\v!yes,
+ \c!spot=\v!yes,
+ \c!mp\c!cmyk=\@@clcmyk,
+ \c!mp\c!spot=\@@clspot,
+ \c!expansion=\v!no,
+ \c!textcolor=,
+ \c!split=\v!no,
+ \c!criterium=\v!all]
+
+\setupcolor
+ [\v!rgb]
+
+%D For the moment we keep the next downward compatibility
+%D switch, i.e.\ expanded colors. However, predefined colors
+%D and palets are no longer expanded (which is what I wanted
+%D in the first place).
+%D
+%D Well, in case we want to do color separation and use CMYK
+%D colors only, this is dangerous since unwanted remapping may
+%D take place. Especially when we redefine already defined
+%D colors in another color space (e.g. darkgreen is
+%D predefined in RGB color space, so a redefinition in CMYK
+%D coordinates before RGB mode is disabled, would give
+%D unexpected results due to the already frozen color spec.)
+%D
+%D So, from now on, colors are not frozen any more!
+
+% \appendtoks\setupcolors[\c!expansie=\v!ja]\to\everyjob
+
+%D The next macro is for instance used in figure splitting:
+
+\def\doifseparatingcolorselse
+ {\iffilterspotcolor
+ \@EA\firstoftwoarguments
+ \else\ifcase\currentcolorchannel
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi\fi}
+
+\def\doifcolorchannelelse#1%
+ {\doifseparatingcolorselse
+ {\doifelsenothing{#1}
+ \secondoftwoarguments
+ {\doifelse{#1}\@@clsplit
+ \firstoftwoarguments
+ \secondoftwoarguments}}
+ \secondoftwoarguments}
+
+\def\resetcolorseparation
+ {\filterspotcolorfalse
+ \chardef\currentcolorchannel\zerocount}
+
+%D These can be used in selecting specific files (like
+%D figuredatabases).
+
+% we already have:
+%
+% \def\colorsplitsuffix{\ifcase\currentcolorchannel\else-\@@clsplitsen\fi}
+% \def\colorsplitprefix{\ifcase\currentcolorchannel\else\@@clsplitsen-\fi}
+
+\def\colorchannelprefix{\doifseparatingcolorselse\@@clsplit\empty-}
+\def\colorchannelsuffix{-\doifseparatingcolorselse\@@clsplit\empty}
+
+%D As we can see, color support is turned off by default.
+%D Reduction of gray colors to gray scales is turned on.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/colo-rgb.tex b/Master/texmf-dist/tex/context/base/colo-rgb.tex
new file mode 100644
index 00000000000..038e0ab0bf1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-rgb.tex
@@ -0,0 +1,530 @@
+%D \module
+%D [ file=colo-rgb,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=RGB,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Just to give users a start we define some colors. While
+%D switching fonts is as international as can be, thanks to the
+%D mnemonics, naming colors is very interface dependant. To
+%D support international setups, we define both english and
+%D interface dependant colors. We use the color inheritance
+%D mechanisms to implement the interface dependant ones.
+
+%D First we define some simple primary \cap{RGB} and \cap{CMYK}
+%D colors. All colors are defined in \cap{RGB} color space.
+
+\definecolor [red] [r=1, g=0, b=0]
+\definecolor [green] [r=0, g=1, b=0]
+\definecolor [blue] [r=0, g=0, b=1]
+
+\definecolor [cyan] [r=0, g=1, b=1]
+\definecolor [magenta] [r=1, g=0, b=1]
+\definecolor [yellow] [r=1, g=1, b=0]
+
+\definecolor [white] [s=1] % [r=1, g=1, b=1]
+\definecolor [black] [s=0]
+\definecolor [gray] [s=.9]
+
+\definecolor [darkred] [r=.8, g=0, b=0]
+\definecolor [middlered] [r=.9, g=0, b=0]
+\definecolor [lightred] [r=1, g=0, b=0]
+
+\definecolor [darkgreen] [r=0, g=.6, b=0]
+\definecolor [middlegreen] [r=0, g=.8, b=0]
+\definecolor [lightgreen] [r=0, g=1, b=0]
+
+\definecolor [darkblue] [r=0, g=0, b=.8]
+\definecolor [middleblue] [r=0, g=0, b=.9]
+\definecolor [lightblue] [r=0, g=0, b=1]
+
+\definecolor [darkcyan] [r=.6, g=.8, b=.8]
+\definecolor [middlecyan] [r=0, g=.8, b=.8]
+
+\definecolor [darkmagenta] [r=.8, g=.6, b=.8]
+\definecolor [middlemagenta] [r=1, g=0, b=.6]
+
+\definecolor [darkyellow] [r=.8, g=.8, b=.6]
+\definecolor [middleyellow] [r=1, g=1, b=.2]
+
+\definecolor [darkgray] [s=.5]
+\definecolor [middlegray] [s=.7]
+\definecolor [lightgray] [s=.9]
+
+%D These colors are mapped to interface dependant colornames.
+
+\startinterface dutch
+
+ \definecolor [rood] [red]
+ \definecolor [groen] [green]
+ \definecolor [blauw] [blue]
+
+ \definecolor [cyaan] [cyan]
+ \definecolor [magenta] [magenta]
+ \definecolor [geel] [yellow]
+
+ \definecolor [wit] [white]
+ \definecolor [grijs] [gray]
+ \definecolor [zwart] [black]
+
+ \definecolor [donkerrood] [darkred]
+ \definecolor [middelrood] [middlered]
+ \definecolor [lichtrood] [lightred]
+
+ \definecolor [donkergroen] [darkgreen]
+ \definecolor [middelgroen] [middlegreen]
+ \definecolor [lichtgroen] [lightgreen]
+
+ \definecolor [donkerblauw] [darkblue]
+ \definecolor [middelblauw] [middleblue]
+ \definecolor [lichtblauw] [lightblue]
+
+ \definecolor [donkercyaan] [darkcyan]
+ \definecolor [middelcyaan] [middlecyan]
+
+ \definecolor [donkermagenta] [darkmagenta]
+ \definecolor [middelmagenta] [middlemagenta]
+
+ \definecolor [donkergeel] [darkyellow]
+ \definecolor [middelgeel] [middleyellow]
+
+ \definecolor [donkergrijs] [darkgray]
+ \definecolor [middengrijs] [middlegray]
+ \definecolor [lichtgrijs] [lightgray]
+
+\stopinterface
+
+\startinterface german
+
+ \definecolor [rot] [red]
+ \definecolor [gruen] [green]
+ \definecolor [blau] [blue]
+
+ \definecolor [cyan] [cyan]
+ \definecolor [magenta] [magenta]
+ \definecolor [gelb] [yellow]
+
+ \definecolor [weiss] [white]
+ \definecolor [grau] [gray]
+ \definecolor [schwarz] [black]
+
+ \definecolor [dunkelrot] [darkred]
+ \definecolor [mittelrot] [middlered]
+ \definecolor [hellrot] [lightred]
+
+ \definecolor [dunkelgruen] [darkgreen]
+ \definecolor [mittelgruen] [middlegreen]
+ \definecolor [hellgruen] [lightgreen]
+
+ \definecolor [dunkelblau] [darkblue]
+ \definecolor [mittelblau] [middleblue]
+ \definecolor [hellblau] [lightblue]
+
+ \definecolor [dunkelcyan] [darkcyan]
+ \definecolor [mittelcyan] [middlecyan]
+
+ \definecolor [dunkelmagenta] [darkmagenta]
+ \definecolor [mittelmagenta] [middlemagenta]
+
+ \definecolor [dunkelgelb] [darkyellow]
+ \definecolor [mittelgelb] [middleyellow]
+
+ \definecolor [dunkelgrau] [darkgray]
+ \definecolor [mittelgrau] [middlegray]
+ \definecolor [hellgrau] [lightgray]
+
+\stopinterface
+
+\startinterface czech
+
+ \definecolor [cervena] [red]
+ \definecolor [zelena] [green]
+ \definecolor [modra] [blue]
+
+ \definecolor [azurova] [cyan]
+ \definecolor [fialova] [magenta]
+ \definecolor [zluta] [yellow]
+
+ \definecolor [bila] [white]
+ \definecolor [cerna] [black]
+
+ \definecolor [tmavecervena] [darkred]
+ \definecolor [strednecervena] [middlered]
+ \definecolor [svetlecervena] [lightred]
+
+ \definecolor [tmavezelena] [darkgreen]
+ \definecolor [strednezelena] [middlegreen]
+ \definecolor [svetlezelena] [lightgreen]
+
+ \definecolor [tmavemodra] [darkblue]
+ \definecolor [strednemodra] [middleblue]
+ \definecolor [svetlemodra] [lightblue]
+
+ \definecolor [tmaveazurova] [darkcyan]
+ \definecolor [stredneazurova] [middlecyan]
+
+ \definecolor [tmavefialova] [darkmagenta]
+ \definecolor [strednefialova] [middlemagenta]
+
+ \definecolor [tmavezluta] [darkyellow]
+ \definecolor [strednezluta] [middleyellow]
+
+ \definecolor [tmaveseda] [darkgray]
+ \definecolor [stredneseda] [middlegray]
+ \definecolor [svetleseda] [lightgray]
+
+\stopinterface
+
+\startinterface italian
+
+ \definecolor [rosso] [red]
+ \definecolor [verde] [green]
+ \definecolor [blu] [blue]
+
+ \definecolor [azzurro] [cyan]
+ \definecolor [turchino] [cyan]
+ \definecolor [ciano] [cyan]
+ \definecolor [cremisi] [magenta]
+ \definecolor [giallo] [yellow]
+
+ \definecolor [bianco] [white]
+ \definecolor [grigio] [gray]
+ \definecolor [nero] [black]
+
+ \definecolor [rossoscuro] [darkred]
+ \definecolor [rossomedio] [middlered]
+ \definecolor [rossochiaro] [lightred]
+
+ \definecolor [verdescuro] [darkgreen]
+ \definecolor [verdemedio] [middlegreen]
+ \definecolor [verdechiaro] [lightgreen]
+
+ \definecolor [bluscuro] [darkblue]
+ \definecolor [blumedio] [middleblue]
+ \definecolor [bluchiaro] [lightblue]
+
+ \definecolor [azzurroscuro] [darkcyan]
+ \definecolor [azzurrochiaro] [middlecyan]
+
+ \definecolor [cremisiscuro] [darkmagenta]
+ \definecolor [cremisichiaro] [middlemagenta]
+
+
+ \definecolor [gialloscuro] [darkyellow]
+ \definecolor [giallomedio] [middleyellow]
+
+ \definecolor [grigioscuro] [darkgray]
+ \definecolor [grigiomedio] [middlegray]
+ \definecolor [grigiochiaro] [lightgray]
+
+\stopinterface
+
+\startinterface romanian
+
+ \definecolor [rosu] [red]
+ \definecolor [verde] [green]
+ \definecolor [albastru] [blue]
+
+ \definecolor [cian] [cyan]
+ \definecolor [magenta] [magenta]
+ \definecolor [galben] [yellow]
+
+ \definecolor [alb] [white]
+ \definecolor [gri] [gray]
+ \definecolor [negru] [black]
+
+ \definecolor [rosuinchis] [darkred]
+ \definecolor [rosumediu] [middlered]
+ \definecolor [rosudeschis] [lightred]
+
+ \definecolor [verdeinchis] [darkgreen]
+ \definecolor [verdemediu] [middlegreen]
+ \definecolor [verdedeschis] [lightgreen]
+
+ \definecolor [albastruinchis] [darkblue]
+ \definecolor [albastrumediu] [middleblue]
+ \definecolor [albastrudeschis] [lightblue]
+
+ \definecolor [cianinchis] [darkcyan]
+ \definecolor [cianmediu] [middlecyan]
+
+ \definecolor [magentainchis] [darkmagenta]
+ \definecolor [magentamediu] [middlemagenta]
+
+ \definecolor [galbeninchis] [darkyellow]
+ \definecolor [galbenmediu] [middleyellow]
+
+ \definecolor [griinchis] [darkgray]
+ \definecolor [grimediu] [middlegray]
+ \definecolor [grideschis] [lightgray]
+
+\stopinterface
+
+%D Like colors, we first define the english colorgroups. These
+%D colorgroups are tuned for distinctive gray scale printing.
+
+% todo : more efficient and real gray
+
+\definecolorgroup
+ [gray]
+ [0.95:0.95:0.95,
+ 0.90:0.90:0.90,
+ 0.80:0.80:0.80,
+ 0.70:0.70:0.70,
+ 0.60:0.60:0.60,
+ 0.50:0.50:0.50,
+ 0.40:0.40:0.40,
+ 0.30:0.30:0.30,
+ 0.20:0.20:0.20,
+ 0.10:0.10:0.10,
+ 0.00:0.00:0.00]
+
+\definecolorgroup
+ [red]
+ [1.00:0.90:0.90,
+ 1.00:0.80:0.80,
+ 1.00:0.70:0.70,
+ 1.00:0.55:0.55,
+ 1.00:0.40:0.40,
+ 1.00:0.25:0.25,
+ 1.00:0.15:0.15,
+ 0.90:0.00:0.00]
+
+\definecolorgroup
+ [green]
+ [0.90:1.00:0.90,
+ 0.70:1.00:0.70,
+ 0.50:1.00:0.50,
+ 0.30:1.00:0.30,
+ 0.15:0.90:0.15,
+ 0.00:0.80:0.00,
+ 0.00:0.65:0.00,
+ 0.00:0.50:0.00]
+
+\definecolorgroup
+ [blue]
+ [0.90:0.95:1.00,
+ 0.80:0.90:1.00,
+ 0.55:0.85:1.00,
+ 0.30:0.80:1.00,
+ 0.15:0.75:1.00,
+ 0.00:0.70:1.00,
+ 0.00:0.55:1.00,
+ 0.00:0.40:1.00]
+
+\definecolorgroup
+ [cyan]
+ [0.80:1.00:1.00,
+ 0.60:1.00:1.00,
+ 0.30:1.00:1.00,
+ 0.00:0.95:0.95,
+ 0.00:0.85:0.85,
+ 0.00:0.75:0.75,
+ 0.00:0.60:0.60,
+ 0.00:0.50:0.50]
+
+\definecolorgroup
+ [magenta]
+ [1.00:0.90:1.00,
+ 1.00:0.80:1.00,
+ 1.00:0.65:1.00,
+ 1.00:0.50:1.00,
+ 1.00:0.35:1.00,
+ 1.00:0.15:1.00,
+ 0.90:0.05:0.90,
+ 0.80:0.00:0.80]
+
+\definecolorgroup
+ [yellow]
+ [1.00:1.00:0.70,
+ 1.00:1.00:0.00,
+ 1.00:0.85:0.05,
+ 1.00:0.70:0.00,
+ 1.00:0.55:0.00,
+ 0.95:0.40:0.00,
+ 0.80:0.30:0.00,
+ 0.60:0.30:0.00]
+
+\definecolorgroup
+ [red*]
+ [1.00:0.95:0.95,
+ 1.00:0.90:0.90,
+ 1.00:0.80:0.80,
+ 1.00:0.70:0.70,
+ 1.00:0.60:0.60,
+ 1.00:0.50:0.50,
+ 1.00:0.40:0.40,
+ 1.00:0.30:0.30]
+
+\definecolorgroup
+ [green*]
+ [0.95:1.00:0.95,
+ 0.90:1.00:0.90,
+ 0.80:1.00:0.80,
+ 0.70:1.00:0.70,
+ 0.60:1.00:0.60,
+ 0.50:1.00:0.50,
+ 0.40:1.00:0.40,
+ 0.30:1.00:0.30]
+
+\definecolorgroup
+ [blue*]
+ [0.95:0.95:1.00,
+ 0.90:0.90:1.00,
+ 0.80:0.80:1.00,
+ 0.70:0.70:1.00,
+ 0.60:0.60:1.00,
+ 0.50:0.50:1.00,
+ 0.40:0.40:1.00,
+ 0.30:0.30:1.00]
+
+\definecolorgroup
+ [yellow*]
+ [1.00:1.00:0.10,
+ 1.00:1.00:0.00,
+ 0.90:0.90:0.00,
+ 0.80:0.80:0.00,
+ 0.70:0.70:0.00,
+ 0.60:0.60:0.00,
+ 0.50:0.50:0.00,
+ 0.40:0.40:0.00]
+
+%D For the sake of implementing interface dependant color
+%D groups we support colorgroup duplication.
+
+\startinterface dutch
+ \definecolorgroup [grijs] [gray]
+ \definecolorgroup [rood] [red]
+ \definecolorgroup [groen] [green]
+ \definecolorgroup [blauw] [blue]
+ \definecolorgroup [cyaan] [cyan]
+ \definecolorgroup [magenta] [magenta]
+ \definecolorgroup [geel] [yellow]
+ \definecolorgroup [rood*] [red*]
+ \definecolorgroup [groen*] [green*]
+ \definecolorgroup [blauw*] [blue*]
+ \definecolorgroup [geel*] [yellow*]
+\stopinterface
+
+\startinterface german
+ \definecolorgroup [grau] [gray]
+ \definecolorgroup [rot] [red]
+ \definecolorgroup [gruen] [green]
+ \definecolorgroup [blau] [blue]
+ \definecolorgroup [cyan] [cyan]
+ \definecolorgroup [magenta] [magenta]
+ \definecolorgroup [gelb] [yellow]
+ \definecolorgroup [rot*] [red*]
+ \definecolorgroup [gruen*] [green*]
+ \definecolorgroup [blau*] [blue*]
+ \definecolorgroup [gelb*] [yellow*]
+\stopinterface
+
+\startinterface czech
+ \definecolorgroup [seda] [gray]
+ \definecolorgroup [cervena] [red]
+ \definecolorgroup [zelena] [green]
+ \definecolorgroup [modra] [blue]
+ \definecolorgroup [azurova] [cyan]
+ \definecolorgroup [fialova] [magenta]
+ \definecolorgroup [zluta] [yellow]
+ \definecolorgroup [cervena*] [red*]
+ \definecolorgroup [zelena*] [green*]
+ \definecolorgroup [modra*] [blue*]
+ \definecolorgroup [zluta*] [yellow*]
+\stopinterface
+
+\startinterface italian
+ \definecolorgroup [grigio] [gray]
+ \definecolorgroup [rosso] [red]
+ \definecolorgroup [verde] [green]
+ \definecolorgroup [blu] [blue]
+ \definecolorgroup [ciano] [cyan]
+ \definecolorgroup [azzurro] [cyan]
+ \definecolorgroup [turchino][cyan]
+ \definecolorgroup [magenta] [magenta]
+ \definecolorgroup [cremisi] [magenta]
+ \definecolorgroup [giallo] [yellow]
+ \definecolorgroup [rosso*] [red*]
+ \definecolorgroup [verde*] [green*]
+ \definecolorgroup [blu*] [blue*]
+ \definecolorgroup [giallo*] [yellow*]
+\stopinterface
+
+%D The next set of color palets is quite language independant.
+%D These palets are meant as examples.
+
+\definepalet
+ [alfa]
+ [ top=red:7,
+ bottom=green:6,
+ up=blue:5,
+ down=cyan:4,
+ strange=magenta:3,
+ charm=yellow:2]
+
+\definepalet
+ [beta]
+ [ top=red:7,
+ bottom=green:5,
+ up=blue:3,
+ down=cyan:6,
+ strange=magenta:2,
+ charm=yellow:1]
+
+\definepalet
+ [gamma]
+ [ top=red:2,
+ bottom=green:5,
+ up=blue:3,
+ down=cyan:6,
+ strange=magenta:7,
+ charm=yellow:4]
+
+\definepalet
+ [delta]
+ [ top=yellow*:5,
+ bottom=yellow*:3,
+ up=yellow*:2,
+ down=magenta:6,
+ strange=blue:4,
+ charm=blue:1]
+
+\definepalet
+ [epsilon]
+ [ top=cyan:7,
+ bottom=cyan:5,
+ up=blue:3,
+ down=yellow:6,
+ strange=yellow:4,
+ charm=yellow:2]
+
+\definepalet
+ [zeta]
+ [ top=red:6,
+ bottom=green:5,
+ up=blue:7,
+ down=cyan:4,
+ strange=magenta:3,
+ charm=yellow:2]
+
+%D The next four colors are used for typesetting verbatim \TEX\
+%D in color.
+
+\definecolor [texcolorone] [middlered]
+\definecolor [texcolortwo] [middlegreen]
+\definecolor [texcolorthree] [middleblue]
+\definecolor [texcolorfour] [darkyellow]
+
+%D Bonus (needed for FO test):
+
+\definecolor [orange] [r=1,g=.5]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/colo-run.tex b/Master/texmf-dist/tex/context/base/colo-run.tex
new file mode 100644
index 00000000000..9b3d0e94b9a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-run.tex
@@ -0,0 +1,225 @@
+%D \module
+%D [ file=colo-run,
+%D version=1997.04.01,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=Runtime loaded commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\gdef\showpalet
+ {\dodoubleargument\doshowpalet}
+
+\gdef\doshowpalet[#1][#2]%
+ {\doifdefined{\??pa#1}
+ {\doifinsetelse\v!vertical{#2}
+ {\showverticalpalet[#1][#2]}
+ {\showhorizontalpalet[#1][#2]}}}
+
+\gdef\showverticalpalet[#1][#2]%
+ {\localvbox
+ {\offinterlineskip
+ \setuppalet[#1]
+ \def\rule
+ {\vrule\!!width3em\!!height\strutht\!!depth\strutdp}
+ \tabskip\zeropoint
+ \def\doshowpalet##1%
+ {\doifinsetelse\v!number{#2}{##1\hskip.5em}{}&
+ \color[##1]{\rule}\graycolor[##1]{\rule}&
+ \doifinset\v!value{#2}{\hskip.5em\colorvalue{##1}}\crcr}
+ \halign
+ {\hss##&\hss##\hss&##\cr
+ &\doifinset{\v!name}{#2}{\strut#1}&\cr%
+ \processpalet[#1]\doshowpalet\crcr}}}
+
+\gdef\showhorizontalpalet[#1][#2]%
+ {\localvbox
+ {\offinterlineskip
+ \setuppalet[#1]
+ \tabskip\zeropoint
+ \!!widtha\zeropoint
+ \doifinset\v!number{#2}
+ {\def\doshowpalet##1%
+ {\setbox0\hbox{##1}%
+ \ifdim\!!widtha<\wd0\!!widtha\wd0\fi}%
+ \processpalet[#1]\doshowpalet}%
+ \advance\!!widtha 1em
+ \ifdim\!!widtha<5em
+ \!!widtha5em
+ \fi
+ \halign
+ {##&&\hbox to \!!widtha{\hss##\hss}\cr
+ \doifinset\v!number{#2}
+ {\def\doshowpalet##1{&\strut##1}%
+ \processpalet[#1]\doshowpalet}\cr
+ \doifinset\v!name{#2}{#1\hskip.5em}%
+ \def\doshowpalet##1%
+ {&\color[##1]{\vrule\!!width\!!widtha\!!height\strutht\!!depth\zeropoint}}%
+ \processpalet[#1]\doshowpalet\crcr
+ \def\doshowpalet##1%
+ {&\graycolor[##1]{\vrule\!!width\!!widtha\!!height\zeropoint\!!depth\strutdp}}%
+ \processpalet[#1]\doshowpalet\crcr
+ \doifinset\v!value{#2}
+ {\def\doshowpalet##1%
+ {&\vbox
+ {\hsize\!!widtha
+ \vskip.25ex
+ \everypar{\strut}
+ \veryraggedcenter
+ \let\colorformatseparator=\endgraf
+ \colorvalue{##1}}}%
+ \processpalet[#1]\doshowpalet}%
+ \crcr}}}
+
+\gdef\processpalet[#1]%
+ {\expanded{\globalprocesscommalist[\getvalue{\??pa#1}]}}
+
+\gdef\showcolorgroup
+ {\dodoubleargument\doshowcolorgroup}
+
+\gdef\doshowcolorgroup[#1][#2]%
+ {\doifdefined{\??cr#1:1}
+ {\doifinsetelse\v!vertical{#2}
+ {\showverticalcolorgroup[#1][#2]}
+ {\showhorizontalcolorgroup[#1][#2]}}}
+
+\gdef\showhorizontalcolorgroup[#1][#2]%
+ {\localvbox
+ {\offinterlineskip
+ \setuppalet
+ \tabskip\zeropoint
+ \def\rule
+ {\vrule\!!width4em\!!height\strutht\!!depth\strutdp}
+ \def\colorformatseparator{\strut\cr}
+ \def\dodoshowgroup##1%
+ {\halign
+ {\hss####\hss\cr
+ \doifinset\v!number{#2}{\strut##1}\cr
+ \color[#1:##1]{\vrule\!!width4em\!!height\strutht\!!depth\zeropoint}\cr
+ \graycolor[#1:##1]{\vrule\!!width4em\!!height\zeropoint\!!depth\strutdp}\cr
+ \doifinset\v!value{#2}{\colorvalue{#1:##1}\strut}\crcr}}
+ \def\doshowgroup##1%
+ {\doifdefined{\??cr#1:##1}
+ {\vbox{\dodoshowgroup{##1}}}}
+ \hbox
+ {\doifinset\v!name{#2}
+ {\strut
+ \doifinsetelse\v!value{#2}
+ {\raise3\lineheight\hbox{#1\hskip.5em}}
+ {#1}%
+ \hskip.5em}%
+ \doshowgroup1\doshowgroup2\doshowgroup3\doshowgroup4%
+ \doshowgroup5\doshowgroup6\doshowgroup7\doshowgroup8}}}
+
+\gdef\showverticalcolorgroup[#1][#2]%
+ {\localvbox
+ {\offinterlineskip
+ \setuppalet
+ \tabskip\zeropoint
+ \def\rule
+ {\vrule\!!width2.5em\!!height\strutht\!!depth\strutdp}
+ \def\doshowgroup##1%
+ {\doifdefined{\??cr#1:##1}
+ {\doifinset\v!number{#2}{##1\hskip.5em}&
+ \color[#1:##1]{\rule}\graycolor[#1:##1]{\rule}&
+ \doifinset\v!value{#2}{\hskip.5em\colorvalue{#1:##1}}\crcr}}
+ \halign
+ {\hss##&\hss##\hss&##\hss\cr
+ &\doifinset\v!name{#2}{\strut#1}&\crcr
+ \doshowgroup1\doshowgroup2\doshowgroup3\doshowgroup4%
+ \doshowgroup5\doshowgroup6\doshowgroup7\doshowgroup8}}}
+
+\gdef\showcolor
+ {\dosingleempty\doshowcolor}
+
+\gdef\doshowcolor[#1]%
+ {\bgroup
+ \iffirstargument
+ \let\colorlist\empty
+ \let\colorstyle\empty
+ \setupcolor[#1]%
+ \fi
+ \setupwhitespace[\v!none]
+ \def\rule
+ {\vrule\!!width4em\!!height\strutht\!!depth\strutdp}
+ \def\docommand##1%
+ {\hbox
+ {\graycolor[##1]{\rule}\quad
+ \color[##1]{\rule}\quad
+ \grayvalue{##1}\quad
+ \hbox to 12em{\colorvalue{##1}\hss}%
+ \strut##1}
+ \endgraf}
+ \processcommacommand[\colorlist]\docommand
+ \egroup}
+
+\gdef\comparepalet
+ {\dosingleargument\docomparepalet}
+
+\gdef\docomparepalet[#1]%
+ {\doifdefined{\??pa#1}
+ {\hbox
+ {\dodocomparepalet\color[#1]%
+ \quad
+ \dodocomparepalet\graycolor[#1]}}}
+
+\gdef\dodocomparepalet#1[#2]%
+ {\localvbox
+ {\offinterlineskip
+ \setuppalet[#2]
+ \getcommacommandsize[\getvalue{\??pa#2}]
+ \!!widtha2em\relax
+ \hsize\commalistsize\!!widtha
+ \def\rule%
+ {\vrule\!!width.5\!!widtha\!!height2.25ex\!!depth-.75ex}
+ \def\dododocomparepalet##1%
+ {\hbox
+ {\setbox0\hbox
+ {#1[##1]{\vrule\!!width\hsize\!!height3ex}}%
+ \wd0\zeropoint
+ \box0
+ \hbox to \hsize
+ {\def\dododocomparepalet####1%
+ {\hbox to \!!widtha
+ {\hss#1[####1]{\rule}\hss}}%
+ \processcommacommand[\getvalue{\??pa#2}]\dododocomparepalet}}
+ \endgraf}
+ \processcommacommand[\getvalue{\??pa#2}]\dododocomparepalet}}
+
+\gdef\comparecolorgroup
+ {\dosingleargument\docomparecolorgroup}
+
+\gdef\docomparecolorgroup[#1]%
+ {\doifdefined{\??cr#1:1}
+ {\hbox
+ {\dodocomparecolorgroup\color[#1]%
+ \quad
+ \dodocomparecolorgroup\graycolor[#1]}}}
+
+\gdef\dodocomparecolorgroup#1[#2]%
+ {\localvbox
+ {\!!counta\zerocount
+ \dorecurse{15}
+ {\doifdefined{\??cr#2:\recurselevel}{\advance\!!counta\plusone}}
+ \!!widtha2em\relax
+ \hsize\!!counta\!!widtha
+ \def\rule
+ {\vrule\!!width.5\!!widtha\!!height2.25ex\!!depth-.75ex}
+ \def\dododocomparecolorgroup##1%
+ {\hbox to \hsize
+ {\setbox0\hbox
+ {#1[#2:##1]{\vrule\!!width\hsize\!!height3ex}}%
+ \wd0\zeropoint
+ \box0
+ \hbox to \hsize
+ {\hss\dorecurse\!!counta{#1[#2:\recurselevel]{\rule}\hss}}}
+ \endgraf}
+ \dorecurse\!!counta{\dododocomparecolorgroup\recurselevel}}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/colo-xwi.tex b/Master/texmf-dist/tex/context/base/colo-xwi.tex
new file mode 100644
index 00000000000..81e09d871bc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/colo-xwi.tex
@@ -0,0 +1,142 @@
+%D \module
+%D [ file=colo-xwi,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Color Macros,
+%D subtitle=X Windows,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D I've forgotten where I got these definitions from, but maybe
+%D they can be of use.
+
+\definecolor [aliceblue] [r=0.94,g=0.97,b=1.00]
+\definecolor [antiquewhite] [r=0.98,g=0.92,b=0.84]
+\definecolor [aquamarine] [r=0.50,g=1.00,b=0.83]
+\definecolor [azure] [r=0.94,g=1.00,b=1.00]
+\definecolor [beige] [r=0.96,g=0.96,b=0.86]
+\definecolor [bisque] [r=1.00,g=0.89,b=0.77]
+\definecolor [black] [s=0] % [r=0.00,g=0.00,b=0.00]
+\definecolor [blanchedalmond] [r=1.00,g=0.92,b=0.80]
+\definecolor [blue] [r=0.00,g=0.00,b=1.00]
+\definecolor [blueviolet] [r=0.54,g=0.17,b=0.89]
+\definecolor [brown] [r=0.65,g=0.16,b=0.16]
+\definecolor [burlywood] [r=0.87,g=0.72,b=0.53]
+\definecolor [cadetblue] [r=0.37,g=0.62,b=0.63]
+\definecolor [chartreuse] [r=0.50,g=1.00,b=0.00]
+\definecolor [chocolate] [r=0.82,g=0.41,b=0.12]
+\definecolor [coral] [r=1.00,g=0.50,b=0.31]
+\definecolor [cornflowerblue] [r=0.39,g=0.58,b=0.93]
+\definecolor [cornsilk] [r=1.00,g=0.97,b=0.86]
+\definecolor [cyan] [r=0.00,g=1.00,b=1.00]
+\definecolor [darkgoldenrod] [r=0.72,g=0.53,b=0.04]
+\definecolor [darkgreen] [r=0.00,g=0.39,b=0.00]
+\definecolor [darkkhaki] [r=0.74,g=0.72,b=0.42]
+\definecolor [darkolivegreen] [r=0.33,g=0.42,b=0.18]
+\definecolor [darkorange] [r=1.00,g=0.55,b=0.00]
+\definecolor [darkorchid] [r=0.60,g=0.20,b=0.80]
+\definecolor [darksalmon] [r=0.91,g=0.59,b=0.48]
+\definecolor [darkseagreen] [r=0.56,g=0.74,b=0.56]
+\definecolor [darkslateblue] [r=0.28,g=0.24,b=0.55]
+\definecolor [darkturquoise] [r=0.00,g=0.81,b=0.82]
+\definecolor [darkviolet] [r=0.58,g=0.00,b=0.83]
+\definecolor [deeppink] [r=1.00,g=0.08,b=0.58]
+\definecolor [deepskyblue] [r=0.00,g=0.75,b=1.00]
+\definecolor [dodgerblue] [r=0.12,g=0.56,b=1.00]
+\definecolor [firebrick] [r=0.70,g=0.13,b=0.13]
+\definecolor [floralwhite] [r=1.00,g=0.98,b=0.94]
+\definecolor [forestgreen] [r=0.13,g=0.55,b=0.13]
+\definecolor [gainsboro] [r=0.86,g=0.86,b=0.86]
+\definecolor [ghostwhite] [r=0.97,g=0.97,b=1.00]
+\definecolor [gold] [r=1.00,g=0.84,b=0.00]
+\definecolor [goldenrod] [r=0.85,g=0.65,b=0.13]
+\definecolor [green] [r=0.00,g=1.00,b=0.00]
+\definecolor [greenyellow] [r=0.68,g=1.00,b=0.18]
+\definecolor [honeydew] [r=0.94,g=1.00,b=0.94]
+\definecolor [hotpink] [r=1.00,g=0.41,b=0.71]
+\definecolor [indianred] [r=0.80,g=0.36,b=0.36]
+\definecolor [ivory] [r=1.00,g=1.00,b=0.94]
+\definecolor [khaki] [r=0.94,g=0.90,b=0.55]
+\definecolor [lavender] [r=0.90,g=0.90,b=0.98]
+\definecolor [lavenderblush] [r=1.00,g=0.94,b=0.96]
+\definecolor [lawngreen] [r=0.49,g=0.99,b=0.00]
+\definecolor [lemonchiffon] [r=1.00,g=0.98,b=0.80]
+\definecolor [lightblue] [r=0.68,g=0.85,b=0.90]
+\definecolor [lightcoral] [r=0.94,g=0.50,b=0.50]
+\definecolor [lightcyan] [r=0.88,g=1.00,b=1.00]
+\definecolor [lightgoldenrod] [r=0.93,g=0.87,b=0.51]
+\definecolor [lightgoldenrodyellow] [r=0.98,g=0.98,b=0.82]
+\definecolor [lightpink] [r=1.00,g=0.71,b=0.76]
+\definecolor [lightsalmon] [r=1.00,g=0.63,b=0.48]
+\definecolor [lightseagreen] [r=0.13,g=0.70,b=0.67]
+\definecolor [lightskyblue] [r=0.53,g=0.81,b=0.98]
+\definecolor [lightslateblue] [r=0.52,g=0.44,b=1.00]
+\definecolor [lightsteelblue] [r=0.69,g=0.77,b=0.87]
+\definecolor [lightyellow] [r=1.00,g=1.00,b=0.88]
+\definecolor [limegreen] [r=0.20,g=0.80,b=0.20]
+\definecolor [linen] [r=0.98,g=0.94,b=0.90]
+\definecolor [magenta] [r=1.00,g=0.00,b=1.00]
+\definecolor [maroon] [r=0.69,g=0.19,b=0.38]
+\definecolor [mediumaquamarine] [r=0.40,g=0.80,b=0.67]
+\definecolor [mediumblue] [r=0.00,g=0.00,b=0.80]
+\definecolor [mediumorchid] [r=0.73,g=0.33,b=0.83]
+\definecolor [mediumpurple] [r=0.58,g=0.44,b=0.86]
+\definecolor [mediumseagreen] [r=0.24,g=0.70,b=0.44]
+\definecolor [mediumslateblue] [r=0.48,g=0.41,b=0.93]
+\definecolor [mediumspringgreen] [r=0.00,g=0.98,b=0.60]
+\definecolor [mediumturquoise] [r=0.28,g=0.82,b=0.80]
+\definecolor [mediumvioletred] [r=0.78,g=0.08,b=0.52]
+\definecolor [midnightblue] [r=0.10,g=0.10,b=0.44]
+\definecolor [mintcream] [r=0.96,g=1.00,b=0.98]
+\definecolor [mistyrose] [r=1.00,g=0.89,b=0.88]
+\definecolor [moccasin] [r=1.00,g=0.89,b=0.71]
+\definecolor [navajowhite] [r=1.00,g=0.87,b=0.68]
+\definecolor [navy] [r=0.00,g=0.00,b=0.50]
+\definecolor [navyblue] [r=0.00,g=0.00,b=0.50]
+\definecolor [oldlace] [r=0.99,g=0.96,b=0.90]
+\definecolor [olivedrab] [r=0.42,g=0.56,b=0.14]
+\definecolor [orange] [r=1.00,g=0.65,b=0.00]
+\definecolor [orangered] [r=1.00,g=0.27,b=0.00]
+\definecolor [orchid] [r=0.85,g=0.44,b=0.84]
+\definecolor [palegoldenrod] [r=0.93,g=0.91,b=0.67]
+\definecolor [palegreen] [r=0.60,g=0.98,b=0.60]
+\definecolor [paleturquoise] [r=0.69,g=0.93,b=0.93]
+\definecolor [palevioletred] [r=0.86,g=0.44,b=0.58]
+\definecolor [papayawhip] [r=1.00,g=0.94,b=0.84]
+\definecolor [peachpuff] [r=1.00,g=0.85,b=0.73]
+\definecolor [peru] [r=0.80,g=0.52,b=0.25]
+\definecolor [pink] [r=1.00,g=0.75,b=0.80]
+\definecolor [plum] [r=0.87,g=0.63,b=0.87]
+\definecolor [powderblue] [r=0.69,g=0.88,b=0.90]
+\definecolor [purple] [r=0.63,g=0.13,b=0.94]
+\definecolor [red ] [r=1.00,g=0.00,b=0.00]
+\definecolor [rosybrown] [r=0.74,g=0.56,b=0.56]
+\definecolor [royalblue] [r=0.25,g=0.41,b=0.88]
+\definecolor [saddlebrown] [r=0.55,g=0.27,b=0.07]
+\definecolor [salmon] [r=0.98,g=0.50,b=0.45]
+\definecolor [sandybrown] [r=0.96,g=0.64,b=0.38]
+\definecolor [seagreen] [r=0.18,g=0.55,b=0.34]
+\definecolor [seashell] [r=1.00,g=0.96,b=0.93]
+\definecolor [sienna] [r=0.63,g=0.32,b=0.18]
+\definecolor [skyblue] [r=0.53,g=0.81,b=0.92]
+\definecolor [slateblue] [r=0.42,g=0.35,b=0.80]
+\definecolor [snow] [r=1.00,g=0.98,b=0.98]
+\definecolor [springgreen] [r=0.00,g=1.00,b=0.50]
+\definecolor [steelblue] [r=0.27,g=0.51,b=0.71]
+\definecolor [tan ] [r=0.82,g=0.71,b=0.55]
+\definecolor [thistle] [r=0.85,g=0.75,b=0.85]
+\definecolor [tomato] [r=1.00,g=0.39,b=0.28]
+\definecolor [turquoise] [r=0.25,g=0.88,b=0.82]
+\definecolor [violet] [r=0.93,g=0.51,b=0.93]
+\definecolor [violetred] [r=0.82,g=0.13,b=0.56]
+\definecolor [wheat] [r=0.96,g=0.87,b=0.70]
+\definecolor [white] [r=1.00,g=1.00,b=1.00]
+\definecolor [whitesmoke] [s=0.96] % [r=0.96,g=0.96,b=0.96]
+\definecolor [yellow] [r=1.00,g=1.00,b=0.00]
+\definecolor [yellowgreen] [r=0.60,g=0.80,b=0.20]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-cz.tex b/Master/texmf-dist/tex/context/base/cont-cz.tex
new file mode 100644
index 00000000000..b86b21e869a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-cz.tex
@@ -0,0 +1,35 @@
+%D \module
+%D [ file=cont-cz,
+%D version=1998.12.02,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ Czech Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{czech}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!cz]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!sk] [\c!state=\v!start]
+\installlanguage [\s!cz] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-de.tex b/Master/texmf-dist/tex/context/base/cont-de.tex
new file mode 100644
index 00000000000..74326003ab7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-de.tex
@@ -0,0 +1,40 @@
+%D \module
+%D [ file=cont-de,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ German Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{german}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!de]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!uk] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!fr] [\c!state=\v!start]
+\installlanguage [\s!es] [\c!state=\v!start]
+\installlanguage [\s!nl] [\c!state=\v!start]
+\installlanguage [\s!it] [\c!state=\v!start]
+
+\installlanguage [deo] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-en.tex b/Master/texmf-dist/tex/context/base/cont-en.tex
new file mode 100644
index 00000000000..49e19f36e03
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-en.tex
@@ -0,0 +1,44 @@
+%D \module
+%D [ file=cont-en,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ English Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{english}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!en]
+
+\loaduserspecifications
+
+% Do we need more defaults? or maybe all languages?
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!uk] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!fr] [\c!state=\v!start]
+\installlanguage [\s!es] [\c!state=\v!start]
+\installlanguage [\s!pt] [\c!state=\v!start]
+\installlanguage [\s!it] [\c!state=\v!start]
+\installlanguage [\s!nl] [\c!state=\v!start]
+\installlanguage [\s!cz] [\c!state=\v!start]
+\installlanguage [\s!sk] [\c!state=\v!start]
+\installlanguage [\s!pl] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-err.tex b/Master/texmf-dist/tex/context/base/cont-err.tex
new file mode 100644
index 00000000000..8b4ca8a543c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-err.tex
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=cont-err,
+%D version=2003.08.12,
+%D title=\CONTEXT\ System Files,
+%D subtitle=Just A warning,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% todo : translate into language
+
+% \writeline
+% \writestring{>>>> I cannot locate your local setup file. Locate 'cont-sys.rme'}
+% \writestring{>>>> and copy this file to '../tex/context/usr/cont-sys.tex'. You}
+% \writestring{>>>> can set cq. uncomment your local preferences in this file.}
+% \writeline
+
+\writeline
+\writestring{> User file 'cont-sys.tex' not found, 'cont-sys.rme' has been used instead. <}
+\writeline
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-fil.tex b/Master/texmf-dist/tex/context/base/cont-fil.tex
new file mode 100644
index 00000000000..b6d3fba6571
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-fil.tex
@@ -0,0 +1,101 @@
+%D \module
+%D [ file=cont-fil,
+%D version=1997.11.15,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=File Synonyms,
+%D author=J. Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context File Synonyms}
+
+\definefilesynonym [chemie] [chemic]
+
+\definefilesynonym [unit] [units]
+\definefilesynonym [eenheid] [units]
+\definefilesynonym [einheit] [units]
+
+\definefilesynonym [finance] [financ]
+
+\definefilesynonym [con-01] [contml] % will go away
+
+%definefilesynonym [sch-base] [sch-00]
+%definefilesynonym [sch-make] [sch-01]
+
+\definefilesynonym [dir-make] [dir-01]
+
+\definefilesynonym [xml-format] [xml-01]
+\definefilesynonym [xml-pretty] [xml-02]
+\definefilesynonym [xml-analyze] [xml-11]
+
+\definefilesynonym [int-load] [set-11]
+\definefilesynonym [int-make] [set-12]
+
+\definefilesynonym [fig-base] [fig-00]
+\definefilesynonym [fig-make] [fig-01]
+\definefilesynonym [fig-fake] [fig-02]
+\definefilesynonym [fig-missing] [fig-06]
+
+\definefilesynonym [exi-interface] [exi-21]
+
+\definefilesynonym [res-make] [res-01]
+\definefilesynonym [res-base] [res-04]
+\definefilesynonym [res-crop] [res-07]
+\definefilesynonym [res-trace] [res-08]
+\definefilesynonym [res-log] [res-09]
+
+\definefilesynonym [med-show] [res-50]
+
+\definefilesynonym [pre-general] [pre-00]
+
+\definefilesynonym [pre-original] [pre-01]
+\definefilesynonym [pre-green] [pre-02]
+\definefilesynonym [pre-funny] [pre-03]
+\definefilesynonym [pre-colorful] [pre-04]
+\definefilesynonym [pre-fuzzy] [pre-05]
+\definefilesynonym [pre-polish] [pre-06]
+\definefilesynonym [pre-spider] [pre-07]
+\definefilesynonym [pre-wonder] [pre-08]
+\definefilesynonym [pre-windows] [pre-09]
+\definefilesynonym [pre-grow] [pre-10]
+\definefilesynonym [pre-stack] [pre-11]
+\definefilesynonym [pre-arrows] [pre-12]
+\definefilesynonym [pre-writing] [pre-13]
+\definefilesynonym [pre-split] [pre-14]
+\definefilesynonym [pre-balls] [pre-15]
+\definefilesynonym [pre-knot] [pre-16]
+\definefilesynonym [pre-weird] [pre-17]
+\definefilesynonym [pre-shade] [pre-18]
+\definefilesynonym [pre-organic] [pre-19]
+\definefilesynonym [pre-speckle] [pre-20]
+\definefilesynonym [pre-zoom] [pre-21]
+\definefilesynonym [pre-cycle] [pre-22]
+\definefilesynonym [pre-super] [pre-23]
+
+%definefilesynonym [pre-more] [pre-24]
+%definefilesynonym [pre-more] [pre-25]
+
+\definefilesynonym [pre-more] [pre-26]
+
+%definefilesynonym [pre-more] [pre-27]
+%definefilesynonym [pre-more] [pre-28]
+%definefilesynonym [pre-more] [pre-29]
+%definefilesynonym [pre-more] [pre-30]
+
+\definefilesynonym [pre-stepwise] [pre-60]
+\definefilesynonym [pre-stepper] [pre-61]
+
+\definefilesynonym [abr-pseudocaps] [abr-01]
+\definefilesynonym [abr-smallcaps] [abr-02]
+
+\definefilesynonym [chinese] [chi-00]
+%definefilesynonym [chi-simplified] [chi-01]
+%definefilesynonym [chi-traditional] [chi-02]
+
+\definefilesynonym [greek] [grk-00]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-it.tex b/Master/texmf-dist/tex/context/base/cont-it.tex
new file mode 100644
index 00000000000..8245ee5bf3f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-it.tex
@@ -0,0 +1,37 @@
+%D \module
+%D [ file=cont-it,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ Italian Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{italian}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!it]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!uk] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!fr] [\c!state=\v!start]
+\installlanguage [\s!es] [\c!state=\v!start]
+\installlanguage [\s!it] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-log.tex b/Master/texmf-dist/tex/context/base/cont-log.tex
new file mode 100644
index 00000000000..aa1e1ce72ad
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-log.tex
@@ -0,0 +1,254 @@
+%D \module
+%D [ file=cont-log,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=\TEX\ Logos,
+%D author=J. Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context TeX Logos}
+
+%D The system that is used to typeset this text is called \TEX,
+%D typeset with an lowered~E. From te beginning of \TEX,
+%D authors of macro packages adapted this raising and lowering
+%D style. In this module we define some of those logos.
+%D Watch the \type{cmr} detection hack.
+
+\unprotect
+
+\convertargument cmr\to\someCMRfont
+
+% \def\doifCMRfontelse#1#2%
+% {\doifinstringelse{\someCMRfont}{\fontname\font}
+% {\def\next{#1}}
+% {\def\next{#2}}%
+% \next}
+
+\def\doifCMRfontelse
+ {\doifinstringelse\someCMRfont{\fontname\font}}
+
+\unexpanded\def\CMRkern
+ {\doifCMRfontelse\kern{\scratchdimen=}}
+
+% \def\TeX
+% {T%
+% \kern-.1667em\lower.5ex\hbox{E}%
+% \kern-.125emX}
+
+\def\Mkern#1%
+ {{\setbox\scratchbox\hbox{M}\kern#1\wd\scratchbox}}
+
+\def\TeX
+ {T%
+ \Mkern{-.1667}\lower.5ex\hbox{E}%
+ \Mkern{-.125}X}
+
+\def\ConTeXt
+ {C%
+ \CMRkern-.0333emo%
+ \CMRkern-.0333emn%
+% \CMRkern-.1667em\TeX%
+ \CMRkern-.0667em\TeX%
+ \CMRkern-.0333emt}
+
+\def\PPCHTeX
+ {ppch\TeX}
+
+\def\PRAGMA
+ {Pragma ADE}
+
+%\def\LaTeX
+% {L%
+% \kern-.30em\raise.3ex\hbox{\txx A}%
+% \kern-.18em\TeX}
+
+\def\LaTeX % requested by erik frambach
+ {{\setbox\scratchbox\hbox{L}%
+ \scratchdimen\ht\scratchbox
+ \setbox\scratchbox\hbox{\txx A}%
+ L\kern-.55\wd\scratchbox
+ \raise\scratchdimen\hbox{\lower\ht\scratchbox\copy\scratchbox}%
+ \kern-.2\wd\scratchbox\TeX}}
+
+\def\TaBlE
+ {T%
+ \kern-.27em\lower.5ex\hbox{A}%
+ \kern-.18emB%
+ \kern-.1em\lower.5ex\hbox{L}%
+ \kern-.075emE}
+
+\def\PiCTeX
+ {P%
+ \kern-.12em\lower.5ex\hbox{I}%
+ \kern-.075em C%
+ \kern-.11em\TeX}
+
+\def\AMSswitch#1%
+ {$\fam2\ifdim\korpsgrootte>1.1em\scriptstyle\fi#1$}
+
+\def\AmSTeX
+ {\AMSswitch A%
+ \kern-.1667em\lower.5ex\hbox{\AMSswitch M}%
+ \kern-.125em\AMSswitch S%
+ -\TeX}
+
+\def\LamSTeX
+ {L%
+ \kern-.4em\raise.3ex\hbox{\AMSswitch A}%
+ \kern-.25em\lower.4ex\hbox{\AMSswitch M}%
+ \kern-.1em{\AMSswitch S}%
+ -\TeX}
+
+\def\AmSLaTeX
+ {\AMSswitch A%
+ \kern-.1667em\lower.5ex\hbox{\AMSswitch M}%
+ \kern-.125em\AMSswitch S%
+ -\LaTeX}
+
+%D Alternative \CONTEXT\ logo, first Idris S.~Hamid's version:
+%D
+%D \def\Context
+%D {{\sc C\kern -.0667emo\kern -.0667emn\kern -.0549emt\kern
+%D -.1667em\lower.5ex\hbox {e}\kern -.125emx\kern -.0549emt}}
+%D
+%D I changed this into one that adapts itself:
+
+\def\Context
+ {{C\kern -.0667em\getscaledglyph{.8}\empty{O\kern -.0667emN\kern
+ -.0549emT\doifitalicelse{\kern-.1em}{\kern-.1667em}\lower.5ex\hbox
+ {E}\doifitalicelse\empty{\kern-.11em}X\kern-.055emT}}}
+
+%D The \METAFONT\ and \METAPOST\ logos adapt themselves to the
+%D current fontsize, an ugly but usefull hack.
+
+% rather hard coded
+%
+% \loadmapfile[original-base.map] % \loadmapfile[original-vogel-symbol]
+%
+% \unexpanded\def\setMFPfont
+% {\font\logofont=logo%
+% \ifnum\fam=\bffam\c!bf\else
+% \ifnum\fam=\slfam\c!sl\else
+% \ifnum\fam=\itfam\c!sl\else
+% \ifnum\fam=\bsfam\c!bf\else
+% \ifnum\fam=\bifam\c!bf\else
+% \fi\fi\fi\fi\fi
+% 10 at \currentfontscale\bodyfontsize
+% \logofont}
+%
+% or:
+%
+% \definefontsynonym [MetaLogo] [logo10]
+% \definefontsynonym [MetaLogoBold] [logobf10]
+% \definefontsynonym [MetaLogoSlanted] [logosl10]
+% \definefontsynonym [MetaLogoItalic] [logosl10]
+% \definefontsynonym [MetaLogoBoldSlanted] [logobf10]
+% \definefontsynonym [MetaLogoBoldtalic] [logobf10]
+%
+% \loadmapfile[original-base.map] % \loadmapfile[original-vogel-symbol]
+%
+% \def\setMFPfont{\symbolicfont{MetaLogo}}
+
+\let\logofont\nullfont
+
+\loadmapfile[original-base.map]
+
+\unexpanded\def\setMFPfont% more sensitive for low level changes
+ {\font\logofont=logo%
+ \ifx\fontalternative\c!bf\else
+ \ifx\fontalternative\c!sl\else
+ \ifx\fontalternative\c!sl\else
+ \ifx\fontalternative\c!bs\else
+ \ifx\fontalternative\c!bi\else
+ \fi\fi\fi\fi\fi
+ 10 at \currentfontscale\bodyfontsize
+ \logofont}
+
+%\unexpanded\def\MetaFont%
+% {\hbox{\setMFPfont METAFONT}}
+%
+%\unexpanded\def\MetaPost%
+% {\hbox{\setMFPfont METAPOST}}
+
+\def\MetaHyphen% there is no hyphenchar in this font
+ {\discretionary{\vrule\!!height.33em\!!depth-.27em\!!width.33em}{}{}}
+
+\unexpanded\def\MetaFont
+ {{\setMFPfont META\MetaHyphen FONT}}
+
+\unexpanded\def\MetaPost
+ {{\setMFPfont META\MetaHyphen POST}}
+
+\unexpanded\def\MetaFun
+ {MetaFun}
+
+%D \macros
+%D {TEX, METAFONT, METAPOST, METAFUN,
+%D PICTEX, TABLE,
+%D CONTEXT, PPCHTEX,
+%D AMSTEX, LATEX, LAMSTEX}
+%D
+%D We define the funny written ones as well as th eless
+%D error prone upper case names (in \CONTEXT\ we tend to
+%D write all user defined commands, like abbreviations, in
+%D uppercase.)
+
+\def\METAFONT {\MetaFont}
+\def\METAPOST {\MetaPost}
+\def\PPCHTEX {\PPCHTeX}
+\def\CONTEXT {\ConTeXt}
+\def\METAFUN {\MetaFun}
+
+\def\TEX {\TeX}
+\def\LATEX {\LaTeX}
+\def\PICTEX {\PiCTeX}
+\def\TABLE {\TaBlE}
+\def\AMSTEX {\AmSTeX}
+\def\LAMSTEX {\LamSTeX}
+
+%D And this is how they show up: \TeX, \MetaFont, \MetaPost,
+%D \PiCTeX, \TaBlE, \ConTeXt, \PPCHTeX, \AmSTeX, \LaTeX,
+%D \LamSTeX. We also define some logos for the programs that
+%D we wrote and use at \PRAGMA: \TeX EDIT, \TeX FORM, \TeX
+%D ADRES, \TeX SPELL, \TeX UTIL and \TeX.
+
+\def\TEXEDIT {\TeX edit}
+\def\TEXFORM {\TeX form}
+\def\TEXADRES {\TeX adres}
+\def\TEXSPELL {\TeX spell}
+\def\TEXUTIL {\TeX util}
+\def\TEXEXEC {\TeX exec}
+
+%D Some placeholders:
+
+\def\eTeX {\mathematics{\varepsilon}-\TeX}
+\def\pdfTeX {pdf\TeX}
+\def\pdfeTeX {pdfe-\TeX}
+\def\XeTeX {X\lower.5ex\hbox{\kern-.15em\mirror{E}}\kern-.1667em\TeX}
+
+\let\ETEX \eTeX
+\let\PDFTEX \pdfTeX
+\let\PDFETEX \pdfeTeX
+\let\XETEX \XeTeX
+
+\def\XML {XML}
+\def\MATHML {MathML}
+
+\beginXETEX depth adjustment of logos
+
+ % The next patch by Adam Lindsay is needed to satisfy XeTeX's
+ % feelings about what depths and heights are supposed to be.
+
+ \let\NormalTeXLogo\TeX
+
+ \def\TeX {T\smash[d]{\kern-.1667em\lower.5ex\hbox{E}}\kern-.125emX}
+ \def\XeTeX{X\smash[d]{\lower.5ex\hbox{\kern-.15em\mirror{E}}}\kern-.1667em\TeX}
+
+\endXETEX
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-new.tex b/Master/texmf-dist/tex/context/base/cont-new.tex
new file mode 100644
index 00000000000..87d53cb68dc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-new.tex
@@ -0,0 +1,2404 @@
+%D \module
+%D [ file=cont-new,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=New Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file is loaded at runtime, thereby providing an
+%D excellent place for hacks, patches, extensions and new
+%D features.
+
+% \font\f=dummyfont \rpcode\f0=500 \hbox{..}\char0
+
+% todo: mp-new
+% caption: grid=top|bottom in xml defs
+
+\unprotect
+
+\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex}
+
+% \tracefilestrue
+%
+% \unexpanded\def\readfile#1#2#3%
+% {\readlocfile{#1}{#2}
+% {\readjobfile{#1}{#2}
+% {\readsysfile{#1}{#2}{#3}}}}
+
+\unexpanded\def\readfile#1#2#3%
+ {\readlocfile{#1}{#2}{\readsysfile{#1}{#2}{#3}}}
+
+\chardef\preprocessmethod 2 % 0=no check 1=present_check 2=log_check
+\chardef\preprocessstate 0 % 1=found 2=not_present (skip)
+\def \preprocesssuffix {.prep}
+
+\def\loadctxpreplist
+ {\ifcase\preprocessmethod
+ % no checking
+ \or
+ % simple checking
+ \or
+ \doiffileexistselse{./\jobname.ctl}
+ {\bgroup
+ \defineXMLenvironment[ctx:preplist]
+ {\writestatus\m!systems{loading ctx log file}}
+ {}%
+ \defineXMLenvironmentsave[ctx:prepfile][done=no]
+ {}
+ {\writestatus\m!systems{registering \XMLflush{ctx:prepfile} -> \XMLop{done}}%
+ \setxvalue{fp..\XMLflush{ctx:prepfile}}{\XMLop{done}}}%
+ \processXMLfile{./\jobname.ctl}%
+ \egroup}%
+ {\global\chardef\preprocessmode\plusone}%
+ \fi
+ \global\let\loadctxpreplist\relax}
+
+\appendtoks\loadctxpreplist\to\everystarttext % will become: \prependtoks\loadctxpreplist\to\everyjob
+
+\def\docheckprepfile
+ {\ifcase\preprocessmethod
+ % no preprocessing
+ \or
+ % only check for existence
+ \doiffileexistselse{\readfilename\preprocesssuffix}
+ {\chardef\preprocessstate\plusone}
+ \donothing
+ \or
+ % check when in list, otherwise assume normal file
+ \bgroup
+ \splitfilename\readfilename
+ \ifx\splitofftype\empty
+ % saveguard and speed up
+ \egroup
+ \else
+ \doifdefinedelse{fp..\splitoffname.\splitofftype}
+ {\egroup
+ \doiffileexistselse{\readfilename\preprocesssuffix}
+ {\chardef\preprocessstate\plusone}
+ {\chardef\preprocessstate\plustwo}}%
+ {\egroup}%
+ \fi
+ \fi}
+
+% beware, \readfilename keeps the original one, but we load and store the
+% suffixed with .prep file (if present)
+
+\def\doreadfile#1#2#3#4% beware, this one already works at format generation time!
+ {\sanitizefilename#2\to\readfilename
+ \ifx\readfilename\empty
+ % silently ignore
+ \else
+ \let\trackedfilename\readfilename
+ \chardef\preprocessstate\zerocount
+ \ifconditional\trackfilenames
+ \doifundefinedelse{fn..\trackedfilename}\donetrue\donefalse
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \checkfilename\readfilename
+ \ifcase\kindoffile
+ % not a full path or url, check for existence
+ \doifelsenothing{#1}
+ {\iftracefiles\writestatus\m!systems{searching for \readfilename\space on tex path}\fi
+ \def\next{\redoreadfile\readfilename{#3}{#4}}}%
+ {\iftracefiles\writestatus\m!systems{searching for \readfilename\space on #1}\fi
+ \def\next{\redoreadfile{\pathplusfile{#1}{\readfilename}}{#3}{#4}}}%
+ \else
+ % a full path or url, no further checking done
+ \docheckprepfile
+ \ifcase\preprocessstate
+ \doiffileexistselse\readfilename
+ {\iftracefiles\writestatus\m!systems{located \readfilename}\fi
+ \def\next{#3\dodoreadfile}}%
+ {\iftracefiles\writestatus\m!systems{not found \readfilename}\fi
+ \def\next{#4}}%
+ \or
+ \iftracefiles\writestatus\m!systems{located \readfilename\preprocesssuffix}\fi
+ \def\next{#3\dodoreadfile}%
+ \or
+ \iftracefiles\writestatus\m!systems{not found \readfilename\preprocesssuffix}\fi
+ \def\next{#4}%
+ \fi
+ \fi
+ \else
+ \edef\readfilename{\getvalue{fn..\readfilename}}%
+ \iftracefiles\writestatus\m!systems{already located \readfilename}\fi
+ \def\next{#3\dodoreadfile}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\def\redoreadfile#1#2#3%
+ {\docheckprepfile
+ \ifcase\preprocessstate
+ \doiffileexistselse{#1}%
+ {\edef\readfilename{#1}%
+ \iftracefiles\writestatus\m!systems{#1 located}\fi
+ \def\next{#2\dodoreadfile}}%
+ {\iftracefiles\writestatus\m!systems{cannot locate #1}\fi
+ \decrement\readlevel\relax
+ \ifnum\readlevel>\zerocount
+ \edef\readfilename{\pathplusfile{\f!parentpath}{\readfilename}}%
+ \def\next{\redoreadfile\readfilename{#2}{#3}}%
+ \else
+ \def\next{#3}%
+ \fi}%
+ \or
+ \edef\readfilename{#1}%
+ \iftracefiles\writestatus\m!systems{#1\preprocesssuffix\space located}\fi
+ \def\next{#2\dodoreadfile}%
+ \or
+ \def\next{#3}%
+ \fi
+ \next}
+
+\def\dodoreadfile % we provide hooks, for instance for \enableXML
+ {\ifconditional\trackfilenames
+ \setxvalue{fn..\trackedfilename}{\readfilename\ifcase\preprocessstate\or\preprocesssuffix\fi}%
+ \fi
+ \the\everybeforereadfile
+ \ifcase\preprocessstate
+ % no checking or not found when using method 1
+ \normalinput\readfilename
+ \or
+ % found when using method 1 or 2
+ \normalinput\readfilename\preprocesssuffix
+ \or
+ % not found when using method 2
+ \fi
+ \relax
+ \the\everyafterreadfile}
+
+\def\headparameter#1% to do: everywhere in core-sec
+ {\csname\??ko\currenthead#1\endcsname}
+
+% The following may be a solution for the fact that one cannot
+% change catcodes of characters like : and ; inside an environment.
+
+\appendtoks
+ \enablelanguagespecifics[\currentlanguage]%
+\to \everystarttext
+
+% Peter M\"unster's test case:
+%
+% \defineoverlay[Draft][{\scale[factor=max]{\rotate[rotation=60]{~MY||DRAFT~}}}]
+% \setupbackgrounds[page][background=Draft]
+% \starttext
+% \starttables[|l|]
+% \dorecurse{200}{\NC hallo \NC\AR}
+% \stoptables
+% \stoptext
+%
+% \let\normalactivetilde~
+% \let\normalactivebar |
+%
+% \appendtoks\let~\normalactivetilde\to\everypagebody
+% \appendtoks\let|\normalactivebar \to\everypagebody
+
+\let\cs\getvalue
+
+%D Krzysztof Leszczynski suggested to provide access to the level by
+%D means of a \type {#1}. I decided to pass the more frquently used
+%D level as \type {#1} and the less favoured depth as \type {#2}. The
+%D intended usage is:
+%D
+%D \starttyping
+%D \dorecurse{3}{\definesymbol[test-#1][xx-#1]}
+%D
+%D \def\test{\dorecurse{3}{\definesymbol[test-##1][xx-##1]}} \test
+%D
+%D \symbol[test-1]\quad\symbol[test-2]\quad\symbol[test-3]
+%D \stoptyping
+%D
+%D Since the hashed arguments are expanded, we don't need tricky
+%D expansion here.
+%D
+%D \starttyping
+%D \dorecurse{3}{\expanded{\definesymbol[test-\recurselevel][xx-\recurselevel]}}
+%D \stoptyping
+
+\def\expandrecursecontent
+ {\csname\@@arecurse\recursedepth\@EA\@EA\@EA\endcsname\@EA\@EA\@EA{\@EA\recurselevel\@EA}\@EA{\recursedepth}}
+
+\long\def\xdorecurse#1#2%
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname##1##2{#2}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \@EA\dodorecurse\@EA1\@EA{\number#1}}
+
+\long\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname##1##2{#4}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \ifnum#3>0\relax
+ \ifnum#2<#1\relax
+ \let\nextrecurse\exitstepwiserecurse
+ \else
+ \let\nextrecurse\dodostepwiserecurse
+ \fi
+ \else
+ \ifnum#3<0\relax
+ \ifnum#1<#2\relax
+ \let\nextrecurse\exitstepwiserecurse
+ \else
+ \let\nextrecurse\dodostepwisereverse
+ \fi
+ \else
+ \let\nextrecurse\exitstepwiserecurse
+ \fi
+ \fi\expanded{\nextrecurse{\number#1}{\number#2}{\number#3}}}
+
+\long\def\doloop#1%
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname##1##2{#1}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \let\endofloop\dodoloop
+ \dodoloop1} % no \plusone else \recurselevel wrong
+
+\ifx\normalcompound\undefined \let\normalcompound=| \fi
+
+% experimental so this may change
+
+\def\startdescriptions
+ {\dosingleempty\dostartdescriptions}
+
+\def\dostartdescriptions[#1]%
+ {\begingroup
+ \def\item{\getvalue{#1}}%
+ \let\dostoppairdescription \donothing
+ \let\@@description \dostartpairdescription
+ \let\@@startsomedescription\dostartsomedescription}
+
+\def\stopdescriptions
+ {\dostoppairdescription
+ \endgroup}
+
+\def\dostartpairdescription[#1][#2]%
+ {\dostoppairdescription
+ \def\dostoppairdescription{\@@stopdescription{#1}}%
+ \bgroup
+ \def\currentdescription{#1}%
+ \doifelse{\descriptionparameter{\s!do\c!state}}\v!start
+ {\@@makedescription{#1}[#2]{}}
+ {\@@makedescription{#1}[#2]}}
+
+\def\dostartsomedescription% #1[#2]#3%
+ {\bgroup
+ \@@makedescription} % {#1}[#2]{#3}}
+
+% \starttext
+%
+% \definedescription[test]
+%
+% \startdescriptions
+% \test{Foo} Bar bar bar
+% \test{Foo} Bar bar bar
+% \test{Foo} Bar bar bar
+% \stopdescriptions
+%
+% \startdescriptions[test]
+% \item{Foo} Bar bar bar
+% \item{Foo} Bar bar bar
+% \item{Foo} Bar bar bar
+% \stopdescriptions
+%
+% \startdescriptions
+% \starttest{Foo} Bar bar bar \stoptest
+% \starttest{Foo} Bar bar bar \stoptest
+% \starttest{Foo} Bar bar bar \stoptest
+% \stopdescriptions
+%
+% \startdescriptions[test]
+% \item{Foo} Bar bar bar
+% \item{Foo} Bar bar bar
+% \item{Foo} Bar bar bar
+% \stopdescriptions
+%
+% \stoptext
+
+% to do:
+%
+% \def\defineshapesynonym
+% {\dodoubleargument\dodefineshapesynonym}
+%
+% \def\dodefineshapesynonym[#1][#2]%
+% {\setvalue{shsy:#1}{#2}}
+%
+% \def\shapesynonym#1%
+% {\ifcsname shsy:#1\endcsname
+% \expandafter\shapesynonym\csname shsy:#1\endcsname\else#1%
+% \fi}
+%
+% \beginTEX
+%
+% \def\shapesynonym#1%
+% {\expandafter\ifx\csname shsy:#1\endcsname\relax
+% #1\else\expandafter\shapesynonym\csname shsy:#1\endcsname
+% \fi}
+%
+% \endTEX
+%
+%\defineshapesynonym[eacute] [e]
+%\defineshapesynonym[egrave] [e]
+%\defineshapesynonym[eumlaut [e]
+%\defineshapesynonym[eogonek][e]
+%
+% more reduction
+%
+%\defineshapesynonym[e][o]
+%\defineshapesynonym[w][v]
+%\defineshapesynonym[m][n]
+%
+% \shapesynonym{eacute}
+
+% new: \forcebaselinecorrection --> core-spa & core-grd
+
+\chardef\baselinecorrectionmode\plusone
+
+\def\onbaselinecorrection {\chardef\baselinecorrectionmode\plusone }
+\def\offbaselinecorrection {\chardef\baselinecorrectionmode\plustwo }
+\def\forcebaselinecorrection{\chardef\baselinecorrectionmode\plusthree}
+
+\def\topbaselinecorrection
+ {\ifvmode \ifdim\pagegoal<\maxdimen
+ \forcedtopbaselinecorrection
+ \fi \fi}
+
+\def\forcedtopbaselinecorrection
+ {\ifvmode
+ \bgroup
+ \setbaselinecorrections
+ \whitespace
+ \nointerlineskip
+ \dotopbaselinecorrection
+ \egroup
+ \fi}
+
+\let\forcedbotbaselinecorrection\botbaselinecorrection
+
+\def\startbaselinecorrection
+ {\ifcase\baselinecorectionmode
+ \or % normal
+ \baselinecorrection
+ \ifvmode
+ \bgroup
+ \setbox\scratchbox\vbox\bgroup
+ \ignorespaces
+ \let\stopbaselinecorrection\donormalstopbaselinecorrection
+ \else
+ \bgroup
+ \let\stopbaselinecorrection\egroup
+ \fi
+ \or % off
+ \bgroup
+ \let\stopbaselinecorrection\egroup
+ \or % force
+ \baselinecorrection
+ \ifvmode
+ \bgroup
+ \setbox\scratchbox\vbox\bgroup
+ \ignorespaces
+ \let\stopbaselinecorrection\doforcedstopbaselinecorrection
+ \else
+ \bgroup
+ \let\stopbaselinecorrection\egroup
+ \fi
+ \fi}
+
+\def\startbaselinecorrection
+ {\bgroup
+ \let\stopbaselinecorrection\egroup
+ \ifcase\baselinecorrectionmode
+ \or % normal
+ \baselinecorrection
+ \ifvmode
+ \setbox\scratchbox\vbox\bgroup\ignorespaces
+ \let\stopbaselinecorrection\donormalstopbaselinecorrection
+ \fi
+ \or % off
+ \or % force
+ \baselinecorrection
+ \ifvmode
+ \setbox\scratchbox\vbox\bgroup\ignorespaces
+ \let\stopbaselinecorrection\doforcedstopbaselinecorrection
+ \fi
+ \fi}
+
+\let\stopbaselinecorrection\relax
+
+\def\donormalstopbaselinecorrection % I have to check columns yet.
+ {\egroup
+ \topbaselinecorrection
+ \box\scratchbox
+ \botbaselinecorrection
+ \egroup}
+
+\def\doforcedstopbaselinecorrection % I have to check columns yet.
+ {\egroup
+ \forcedtopbaselinecorrection
+ \box\scratchbox
+ \forcedbotbaselinecorrection
+ \egroup}
+
+% core-grd:
+
+\let\normalstartbaselinecorrection=\startbaselinecorrection
+
+\def\startbaselinecorrection
+ {\ifgridsnapping
+ \centertogrid\bgroup
+ \let\stopbaselinecorrection\egroup
+ \else
+ \normalstartbaselinecorrection
+ \fi}
+
+% todo: fast processor
+
+\def\gettwopassdatalist#1%
+ {\loadtwopassdata
+ \ifcsname#1:\s!list\endcsname
+ \letcscsname\twopassdatalist\csname#1:\s!list\endcsname
+ \else
+ \let\twopassdatalist\empty
+ \fi}
+
+% \def\literateencodedtokens
+% {% \let\dohandleaccent \keephandleaccent % assumes named chars % defineaccent "e {name}
+% % \let\dohandlecommand \keephandlecommand % assumes named chars % definecommand crap {name}
+% \let\dohandlecharacter\keephandlecharacter}
+%
+% \def\convertmeaning#1\to % watch the double expansion !
+% {\bgroup
+% \honorunexpanded
+% %\dontexpandencoding % new
+% \literateencodedtokens % newer
+% \xdef\@@globalexpanded{#1}%
+% \xdef\@@globalexpanded{\@@globalexpanded}%
+% \egroup
+% \convertcommand\@@globalexpanded\to}
+
+\def\defXMLattributestring#1#2#3#4%
+ {\ifcsname\@@XMLvariable:#2:#3\endcsname
+ \@EA\convertcommand\csname\@@XMLvariable:#2:#3\endcsname\to#1%
+ \else
+ \convertargument#4\to#1%
+ \fi}
+
+\bgroup \catcode`\<=\active
+
+% usage: \expanded{\rescanXMLatttributes{fo:table-cell}}
+
+\gdef\rescanXMLattributes #1{\noexpand\dogetXMLarguments{#1}\currentXMLarguments>}
+\gdef\parseXMLattributes #1#2{\dogetXMLarguments{#1}#2>}
+
+\egroup
+
+% \page[left]
+% \definecolumntextarea[intro][left][x=1,y=1,nx=4,ny=20,state=start,background=introlayer]
+% \setupcolumntextareatext[intro][left][\setups{intro}]
+% \flushcolumntextareas
+
+\def\flushcolumntextareas
+ {\initializecolumntextareas
+ \setvsize}
+
+% And so, after a few years of keeping this potentially dangerous
+% speedup in cont-exp, we now move it to the kernel: the next
+% patch is 30\% faster on main interface (seconds) (9->7 sec on
+% 1 million calls). Another speed up is still under testing.
+
+\startinterface english
+
+ \def\dosetevalue #1#2{\@EA\edef\csname#1#2\endcsname}
+ \def\dosetgvalue #1#2{\@EA\gdef\csname#1#2\endcsname}
+ \def\dosetvalue #1#2{\@EA\def \csname#1#2\endcsname}
+ \def\docopyvalue#1#2#3{\@EA\def \csname#1#3\@EA\endcsname\@EA{\csname#2#3\endcsname}}
+
+\stopinterface
+
+\def\XMLprocess#1%
+ {\begingroup\enableXML\XMLflush{#1}\endgroup}
+
+%D (Inspired by a discussion on the \CONTEXT\ mailing list)
+%D
+%D In \TEX\ each character can have one of 16 catcodes. This way the
+%D backslash, dollar, ampersand, hash and some more characters get
+%D their special meaning. If you want to process tokens under a
+%D certain catcode regime, passing arguments can interfere badly.
+%D
+%D \startbuffer[a]
+%D \def\whatever#1{[#1]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \typebuffer[a]
+%D
+%D Here we pass an argument to \type {\whatever} but part of that
+%D argument is to be processed under a different catcode regime, i.e.\
+%D all characters that need to be typeset verbatim need to get
+%D the catcode that makes it a letter. This is what we get when we typeset
+%D the text verbatim:
+%D
+%D \starttyping
+%D whatever \type {\whatever{you want}} $or$ not!
+%D \stoptyping
+%D
+%D However, when passed to \type {\whatever} we get:
+%D
+%D \getbuffer[a]
+%D
+%D In \ETEX\ one can use \type {\scantokens} to circumvent this problem.
+%D
+%D \startbuffer[b]
+%D \def\rescan#1{\scantokens{#1}}
+%D \def\whatever#1{[\rescan{#1}]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \getbuffer[b] \typebuffer[b]
+%D
+%D This time the \type {\whatever} call gives:
+%D
+%D \getbuffer[b]
+%D
+%D In this example, two spaces have crept in. The first one, after the
+%D macro name, is inserted by \TEX\ and cannot be avoided. The last space
+%D is inserted by \type {\scantokens}, and is the consequence of the fact
+%D that this macro mimics reading from a file. You can avoid the last
+%D space by a slightly different definition:
+%D
+%D \startbuffer[c]
+%D \def\rescan#1{\scantokens{#1\ignorespaces}}
+%D \def\whatever#1{[\rescan{#1}]}
+%D \whatever{whatever \type {\whatever{you want}} $or$ not!}
+%D \stopbuffer
+%D
+%D \typebuffer[c]
+%D
+%D Unfortunately we still keep the first space, but at least it's better than
+%D a failure:
+%D
+%D \getbuffer[c]
+
+\long\def\rescan#1{\scantokens{#1\ignorespaces}}
+\long\def\rescanwithsetup#1#2{\bgroup\directsetup{#1}\scantokens{#2\ignorespaces}\egroup}
+
+% In 2005 we will abandon support for font encodings that don't have
+% the ascii characters { } $ etc in their normal slot, i.e. latin modern
+% instead of computer modern. Then we can also clean up some of the ugly
+% xml internals that are a result from the need to deal with funny
+% encodings.
+%
+% a solution:
+%
+% \defineXMLargument[ctx:c]{\getXMLcharacter}
+% \defineXMLargument[ctx:e]{\getXMLentity }
+% \defineXMLargument[ctx:u]{\unicodechar }
+%
+% \bgroup \catcode`\<=\active \catcode`\&=\active
+%
+% \gdef\dontexpandutf
+% {\def\getXMLcharacter##1{<ctx:c>##1</ctx:c>}%
+% \def\getXMLentity ##1{<ctx:e>##1</ctx:e>}%
+% \def\unicodechar ##1{<ctx:u>##1</ctx:u>}}
+%
+% \egroup
+%
+% more generic
+
+\def\XMLexpanded#1%
+ {\bgroup
+ \honorunexpanded
+% \dontexpandencoding
+% \dontexpandutf
+ \let\dohandleactivecharacter\donthandleactivecharacter
+ \xdef\@@globalexpanded{#1}%
+ \egroup
+ \@@globalexpanded}
+
+\def\setXMLexpandedmark#1#2% using a tok prevents unwanted expansion in mark
+ {\XMLexpanded{\scratchtoks{\enableXML#2}}%
+ \expanded{\normalsetnormalmark{#1}{\the\scratchtoks}}}
+
+%D Ok, I got tired of making dedicated clean up macros using the
+%D same mechanism again and again, so now we have:
+%D
+%D \starttyping
+%D \def\xxxx{abc.d} \replacecharacters\xxxx{a.}{-} \xxxx
+%D \stoptyping
+
+\def\replacecharacters#1#2#3% macro characters replacement
+ {\bgroup
+ \edef\ascii{#1}%
+ \retainlccodes
+ \def\docommand##1{\lccode\expandafter`\csname##1\endcsname=\expandafter`\csname#3\endcsname}%
+ \handletokens#2\with\docommand
+ \lowercase\@EA{\@EA\xdef\@EA\globalascii\@EA{\ascii}}%
+ \egroup
+ \dodoglobal\let#1\globalascii}
+
+\ifx\pagediscards\undefined \let\pagediscards\relax \fi
+
+\installoutput\synchronizeoutput % maybe add pagediscards
+ {\ifvoid\normalpagebox\else
+ \unvbox\normalpagebox
+ \pagediscards
+ \fi}
+
+% temp hack, else no proper default fall back (like \textmultiply); todo: sync encoding
+
+\appendtoks
+ \let\characterencoding\nocharacterencoding
+\to \everymathematics
+
+% \separatestring123 456\to\test [\test]
+
+% \def\separatestring#1\to#2%
+% {\let#2\empty
+% \def\docommand##1{\edef#2{\ifx#2\empty\else#2,\fi##1}}%
+% \processseparatedlist[#1][ ]\docommand}
+%
+% \processseparatedlist[aap noot][]\ruledhbox
+
+% this will be activated when
+
+% \newinsert\thispageinsert % <- installinsertion
+
+% \def\flushatthispage
+% {\bgroup
+% \dowithnextbox{\insert\thispageinsert{\box\nextbox}\egroup}%
+% \hbox}
+
+% \appendtoks
+% \ifvoid\thispageinsert\else\hbox{\smashedbox\thispageinsert}\fi
+% \to \everyshipout
+
+% \definemarkedpage[nobackgrounds]
+% \markpage[nobackgrounds]
+% \doifmarkedpageelse{nobackgrounds}
+
+\def\gettwopassdatalist#1%
+ {\loadtwopassdata
+ \letcscsname\twopassdatalist\csname#1:\s!list\endcsname
+ \ifx\twopassdatalist\relax\let\twopassdatalist\empty\fi}
+
+\newcounter\nofmarkedpages
+
+\def\definemarkedpage[#1]%
+ {\definetwopasslist{\v!page:#1}}
+
+\def\markpage[#1]% looks very much like domarginreference
+ {\iftrialtypesetting\else
+ \doglobal\increment\nofmarkedpages\relax
+ \edef\writeparref%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\v!page:#1}%
+ {\nofmarkedpages}%
+ {\noexpand\realfolio}}}%
+ \writeparref
+ \fi}
+
+\def\doifmarkedpageelse#1%
+ {\gettwopassdatalist{\v!page:#1}%
+ \expanded{\doifinsetelse{\realfolio}{\twopassdatalist}}}
+
+% Just a simple and fast hanger, for usage in macros.
+
+\def\setuphanging
+ {\dodoubleempty\getparameters[\??ha]}
+
+\setuphanging
+ [\c!distance=.5em]
+
+\def\starthanging
+ {\noindent\bgroup
+ \dowithnextbox
+ {\setbox\nextbox\hbox{\flushnextbox\hskip\@@hadistance}%
+ \hangindent\nextboxwd
+ \hangafter\plusone
+ \flushnextbox\ignorespaces}
+ \hbox}
+
+\def\stophanging
+ {\endgraf
+ \egroup}
+
+% experimental
+
+\def\stophangaround
+ {\endgraf
+ \egroup}
+
+\def\starthangaround
+ {\noindent\bgroup
+ \dowithnextbox
+ {\ifdim\nextboxht>\strutht\setbox\nextbox\tbox{\flushnextbox}\fi
+ \setbox\nextbox\hbox{\flushnextbox\hskip\@@hadistance}%
+ \getboxheight\scratchdimen\of\box\nextbox
+ \getnoflines\scratchdimen
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \hangindent\nextboxwd
+ \hangafter-\noflines
+ \llap{\flushnextbox}\ignorespaces}
+ \hbox}
+
+\def\modevalue#1#2#3%
+ {\@EA\ifx\csname\@mode@\systemmodeprefix#1\endcsname\endcsname\enabledmode#2\else#2\fi}
+
+\def\systemmodevalue#1%
+ {\modevalue{\systemmodeprefix#1}}
+
+% \getmulticolumnlines -> now in cont-loc, to be tested and really needed
+
+\long\def\startprocesscommalist[#1]#2\stopprocesscommalist
+ {\long\def\currentcommalistcommand##1{\def\currentcommalistitem{##1}#2}%
+ \processcommalist[#1]\currentcommalistcommand}
+
+% \tracefonthandlingtrue
+
+% new, still to be improved
+%
+% \dorecurse{10}
+% {\input thuan
+% \placefigure{}{\framed[height=1.5cm]{test}}
+% \placefloatplaceholder}
+
+\def\placefloatplaceholder
+ {\ifroomforfloat \else
+ \scratchdimen\pagegoal
+ \advance\scratchdimen-\pagetotal
+ \advance\scratchdimen-3\lineheight
+ \ifdim\scratchdimen>\zeropoint
+ \startlinecorrection[blank]
+ \mhbox{\inframed{\labeltexts{placeholder}{\lastcaptiontag}}}%
+ \stoplinecorrection
+ \else
+ \allowbreak
+ \fi
+ \fi}
+
+\setuplabeltext
+ [placeholder={, moved}]
+
+% etex only, of course we could just parse (scan for \% in string)
+
+\newif\ifpercentdimendone
+
+\bgroup % usage: \setpercentdimen\somedimen{% or dimen} todo: pct
+\catcode124=\@@comment
+\catcode 37=\@@active
+\gdef\setpercentdimen#1#2|
+ {\xdef\@@expanded{#2}|
+ \ifx\@@expanded\empty\else
+ \bgroup
+ \global\percentdimendonefalse
+ \def\%{\dimexpr(#1/100)\global\percentdimendonetrue\ignorespaces}| scantokens add's a space
+ \catcode`%=\@@active
+ \catcode`\\=\@@escape
+ \let%\%|
+ \scratchdimen#1|
+ \xdef\@@expanded{\@@expanded\scratchdimen\!!zeropoint}| trick: when 1.2 => .2\scratchdimen and 0pt typeset
+ \startnointerference
+ \global\globalscratchdimen\scantokens\@EA{\@@expanded}| i'm lazy and use etex
+ \stopnointerference
+ \egroup
+ #1\globalscratchdimen
+ \fi}
+\egroup
+
+% TEX alternative, in principle accurate enough and also a bit faster
+
+% \bgroup
+%
+% \catcode`\%=\@@other
+% \catcode`\|=\@@comment
+%
+% \gdef\setpercentdimen#1#2|
+% {\beforesplitstring#2\at%\to\ascii
+% \doifelse\ascii{#2}
+% {#1=#2}
+% {\divide#1by100\relax#1=\ascii#1\relax}} | or: {#1=\ascii#1\divide#1by100\relax}}
+%
+% \egroup
+%
+% \dimen0=1000pt \setpercentdimen{\dimen0}{10%} \the\dimen0
+% \dimen0= 100pt \setpercentdimen{\dimen0}{10%} \the\dimen0
+% \dimen0= 95pt \setpercentdimen{\dimen0}{10%} \the\dimen0
+% \dimen0= 10pt \setpercentdimen{\dimen0}{10%} \the\dimen0
+% \dimen0= 1pt \setpercentdimen{\dimen0}{10%} \the\dimen0
+
+\bgroup
+
+\obeylines % don't remove %'s !
+
+\gdef\collapsedspace#1%
+ {\ifx#1^^M%
+ \expandafter\collapsedspace
+ \else
+ \space
+ \expandafter#1%
+ \fi}
+
+\gdef\collapsespaces%
+ {\prependtoksonce\relax\to\everyeof%
+ \ignorelines%
+ \ignoretabs%
+ \let\obeyedspace\collapsedspace%
+ \obeyspaces}
+
+\egroup
+
+% \def\doshowpardata#1#2{\hbox{\string#1: \the#2}\endgraf}
+%
+% \def\showpardata
+% {\edef\thepardata
+% {\hbox{font: \fontname\font}\endgraf
+% \doshowpardata{interword space}{\fontdimen2\font}%
+% \doshowpardata{interword stretch}{\fontdimen3\font}%
+% \doshowpardata{interword shrink}{\fontdimen4\font}%
+% \doshowpardata{quad space}{\fontdimen6\font}%
+% \doshowpardata{extra space}{\fontdimen7\font}%
+% \doshowpardata\hsize\hsize
+% \doshowpardata\leftskip\leftskip
+% \doshowpardata\rightskip\rightskip
+% \doshowpardata\spaceskip\spaceskip
+% \doshowpardata\xspaceskip\xspaceskip
+% \doshowpardata\parindent\parindent
+% \doshowpardata\parfillskip\parfillskip
+% \doshowpardata\hyphenpenalty\hyphenpenalty
+% \doshowpardata\exhyphenpenalty\exhyphenpenalty
+% \doshowpardata\displaywidowpenalty\displaywidowpenalty
+% \doshowpardata\widowpenalty\widowpenalty
+% \doshowpardata\clubpenalty\clubpenalty
+% \doshowpardata\brokenpenalty\brokenpenalty
+% \doshowpardata\doublehyphendemerits\doublehyphendemerits
+% \doshowpardata\finalhyphendemerits\finalhyphendemerits
+% \doshowpardata\adjdemerits\adjdemerits}%
+% \begingroup
+% \dontshowcomposition
+% \inleftmargin{\vsmash
+% {\switchtobodyfont[7pt,tt]%
+% \framed[\c!align=\v!right]{\thepardata}}}%
+% \endgroup}
+%
+% \def\startshowpardata
+% {\begingroup
+% \showcomposition
+% \showstruts\tracepositionstrue \tracingparagraphs\maxdimen
+% \appendtoksonce\showpardata\let\showpardata\relax\to\everypar}
+%
+% \def\stopshowpardata
+% {\endgraf
+% \endgroup}
+%
+% \defineXMLenvironment[showpardata] \startshowpardata \stopshowpardata
+% \defineXMLsingular [showpardata] \showpardata
+
+% todo : test low level translation (nl->en) and optimize script
+
+% \definestylecollection[mine]
+
+% \definestyleinstance[mine][default][sorry]
+% \definestyleinstance[mine][tt][bs][ttbs:\rm\sl]
+% \definestyleinstance[mine][tt][bf][ttbf:\rm\sl]
+% \definestyleinstance[mine][bf][\sl]
+% \definestyleinstance[mine][sl][\tt]
+
+% {\bf test \mine test \sl test \mine test \bs oeps \mine oeps {\tt test \mine \bf test}}
+
+\definesystemvariable{sx}
+
+\def\definestylecollection
+ {\dosingleargument\dodefinestylecollection}
+
+\def\dodefinestylecollection[#1]%
+ {\iffirstargument
+ \unexpanded\setvalue{#1}{\styleinstance[#1]}%
+ \def\docommand##1%
+ {\def\dodocommand####1{\letbeundefined{\??sx##1:####1:\commalistelement}}%
+ \processcommacommand[\alternativelist,\s!default]\dodocommand}%
+ \processcommacommand[\stylelist,\s!default]\docommand
+ \fi}
+
+\def\definestyleinstance
+ {\doquadrupleargument\dodefinestyleinstance}
+
+\def\dodefinestyleinstance[#1][#2][#3][#4]% [name] [rm|ss|tt|..] [sl|bf|...] [whatever]
+ {\iffirstargument
+ \doifundefined{#1}{\definestylecollection[#1]}%
+ \fi
+ \iffourthargument
+ \setvalue{\??sx#1:#2:#3}{#4}%
+ \else\ifthirdargument
+ \setvalue{\??sx#1::#2}{#3}%
+ \else\ifsecondargument
+ \letvalue{\??sx#1::#2}\empty
+ \fi\fi\fi}
+
+\unexpanded\def\styleinstance[#1]% will be faster
+ {%\begingroup\expanded{\infofont[#1:\fontstyle:\fontalternative]}\endgroup
+ \executeifdefined{\??sx#1:\fontstyle:\fontalternative}%
+ {\executeifdefined{\??sx#1:\fontstyle:\s!default}%
+ {\executeifdefined{\??sx#1::\fontalternative}
+ {\getvalue {\??sx#1::\s!default}}}}}
+
+% \beginETEX \ifcsname
+%
+% \unexpanded\def\styleinstance[#1]%
+% {\csname\??sx#1%
+% \ifcsname:\fontstyle:\fontalternative\endcsname
+% :\fontstyle:\fontalternative
+% \else\ifcsname:\fontstyle:\s!default\endcsname
+% :\fontstyle:\s!default
+% \else\ifcsname::\fontalternative\endcsname
+% ::\fontalternative
+% \else\ifcsname::\s!default\endcsname
+% ::\s!default
+% \else
+% % nothing, \relax
+% \fi\fi\fi\fi
+% \endcsname}
+%
+% \endETEX
+
+% cleaner
+%
+% \long\def\doMPTEXcheck#1%
+% {\long\def\dodoMPTEXcheck##1#1##2##3\war{\if##2@\else\@EA\donoMPTEXcheck\fi}%
+% \@EA\dodoMPTEXcheck\MPascii#1@@\war}
+
+% \long\def\donoMPTEXcheck#1\relax
+% {\global\MPTEXgraphictrue}
+
+% \MPTEXgrapicchecks\emptytoks
+
+% \def\forceMPTEXcheck#1%
+% {\convertargument#1\to\ascii
+% \@EA\appendtoks\@EA\doMPTEXcheck\@EA{\ascii}\to\MPTEXgrapicchecks}
+
+% \forceMPTEXcheck{etex}
+% \forceMPTEXcheck{textext}
+% \forceMPTEXcheck{graphictext}
+
+% \long\def\checkMPTEXgraphic#1%
+% {\ifforceMPTEXgraphic
+% \global\MPTEXgraphictrue
+% \else
+% \global\MPTEXgraphicfalse
+% \expandafter\convertargument#1\to\MPascii
+% \the\MPTEXgrapicchecks\relax % \relax is end condition!
+% \fi}
+
+% no, wrong! never!
+%
+% \def\tightlayer[#1]%
+% {\begingroup
+% \def\currentlayer{#1}% todo: left/right
+% \setbox\nextbox\emptybox % hoogte/breedte are \wd\nextbox/\ht\nextbox
+% \hsize\layerparameter\c!width % \overlaywidth = \hsize
+% \vsize\layerparameter\c!height % \overlaywheight = \vsize
+% \hbox to \hsize{\composedlayer{#1}}%
+% \endgroup}
+
+\let\locatedfilepath\empty
+
+\def\locatefilepath#1%
+ {\let\locatedfilepath\empty
+ \ifx\allinputpaths\empty \else
+ \def\docommando##1%
+ {\doiffileelse{\pathplusfile{##1}{#1}}{\donetrue\def\locatedfilepath{##1}}\donefalse
+ \ifdone\expandafter\quitcommalist\fi}%
+ \doifparentfileelse{#1} % new
+ {\processcommacommand [\allinputpaths]\docommando}
+ {\processcommacommand[.,\allinputpaths]\docommando}%
+ \fi}
+
+% todo : share symbols
+
+% \definecolor[rollover:n][red]
+% \definecolor[rollover:r][green]
+% \definecolor[rollover:d][blue]
+
+\definepalet
+ [rollover]
+ [n=red,
+ r=green,
+ d=blue]
+
+% \newcounter\nofrollovers
+%
+% \def\dorollbutton[#1][#2]#3[#4]%
+% {\dontleavehmode
+% \bgroup
+% \doglobal\increment\nofrollovers
+% \unexpanded\def\dosetlocationbox[##1]##2[##3]%
+% {\getparameters[##1][##3]%
+% \definecolor[rollover][rollover:##2]%
+% \let\next\hbox
+% \doif{##2}{n}
+% {\doifvalue{##1\c!variant}\v!verborgen{\let\next\phantom}}%
+% \next
+% {\localframed[##1]
+% [\c!framecolor=rollover,\c!backgroundcolor=rollover,\c!color=rollover]%
+% {\dolocationattributes{##1}\c!style\c!color{#3}}}}%
+% \iffirstargument
+% \ifsecondargument
+% \def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[#2]}%
+% \else
+% \doifassignmentelse{#1}
+% {\def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[#1]}}
+% {\def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[]}}%
+% \fi
+% \else
+% \def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[]}%
+% \fi
+% % todo: share symbols
+% \definesymbol[rsym:\nofrollovers:n][\setlocationbox n]%
+% \definesymbol[rsym:\nofrollovers:r][\setlocationbox r]%
+% \definesymbol[rsym:\nofrollovers:d][\setlocationbox d]%
+% \nextsystemfield
+% \setupfield
+% [rollbutton]
+% [\c!frame=\v!off,\c!offset=\v!overlay,\c!klickoff={#4}]%
+% \definefield
+% [\currentsystemfield][push][rollbutton]
+% [rsym:\nofrollovers:n,%
+% rsym:\nofrollovers:r,%
+% rsym:\nofrollovers:d]%
+% \fitfield[\currentsystemfield]%
+% \egroup}
+
+\newcounter\nofrollovers
+\newcounter\nofrollbuttons
+
+\def\dorollbutton[#1][#2]#3[#4]%
+ {\dontleavehmode
+ \bgroup
+ \doglobal\increment\nofrollovers
+ \doglobal\increment\nofrollbuttons
+ \unexpanded\def\dosetlocationbox[##1]##2[##3]%
+ {\getparameters[##1][##3]%
+ \definecolor[rollover][rollover:##2]%
+ \doifelse{##2}{n}{\doifelsevalue{##1\c!alternative}\v!hidden\phantom\hbox}\hbox
+ {\localframed[##1]
+ [\c!framecolor=rollover,\c!backgroundcolor=rollover,\c!color=rollover]%
+ {\dolocationattributes{##1}\c!style\c!color{#3}}}}%
+ \iffirstargument
+ \ifsecondargument
+ \def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[#2]}%
+ \else
+ \doifassignmentelse{#1}
+ {\def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[#1]}}
+ {\def\setlocationbox##1{\dosetlocationbox[\??am#1]{##1}[]}}%
+ \fi
+ \else
+ \def\setlocationbox##1{\dosetlocationbox[\??bt]{##1}[]}%
+ \fi
+ % todo: share symbols, tricky since different dimensions
+ \definesymbol[rsym:\nofrollovers:n][\setlocationbox n]%
+ \definesymbol[rsym:\nofrollovers:r][\setlocationbox r]%
+ \definesymbol[rsym:\nofrollovers:d][\setlocationbox d]%
+ \setupfield
+ [rollbutton]
+ [\c!frame=\v!off,
+ \c!offset=\v!overlay,
+ \c!clickout={#4}]%
+ \definefield
+ [roll:\nofrollbuttons][push][rollbutton]
+ [rsym:\nofrollovers:n,%
+ rsym:\nofrollovers:r,%
+ rsym:\nofrollovers:d]%
+ \fitfield[roll:\nofrollbuttons]%
+ \egroup}
+
+\unexpanded\def\rollbutton
+ {\dodoubleempty\dorollbutton}
+
+% \def\do@@amrob[#1]#2\\%
+% {\txt\rollbutton[\currentmenu]{\ignorespaces#2\unskip}[#1]\\}%
+
+% \appendtoks \let\rob\do@@amrob \to \everysetmenucommands
+
+\def\menu@rob[#1]#2\\%
+ {\@@amboxcommand\rollbutton[\currentmenu]{\ignorespaces#2\unskip}[#1]\\}%
+
+\appendtoks \let\rob\menu@rob \to \everysetmenucommands
+
+% calls:
+% {..} [JS..]
+% [left] {..} [JS..]
+% [a=b] {..} [JS..]
+% [left] [a=b] {..} [JS..]
+%
+% \setupbuttons[offset=0pt,frame=off] % alternative=hidden
+%
+% \rollbutton {Manuals} [JS(Goto_File{show-man.pdf})]
+% \rollbutton {Articles} [JS(Goto_File{show-art.pdf})]
+% \rollbutton {Papers} [JS(Goto_File{show-pap.pdf})]
+% \rollbutton {Presentations} [JS(Goto_File{show-pre.pdf})]
+% \rollbutton {Resources} [JS(Goto_File{show-res.pdf})]
+%
+% \rob [JS(...)] bla bla \\
+
+\unexpanded\def\overlayrollbutton
+ {\dodoubleargument\dooverlayrollbutton}
+
+\def\dooverlayrollbutton[#1][#2]%
+ {\bgroup
+ \nextsystemfield
+ \setupfield
+ [overlayrollbutton]
+ [\c!frame=\v!off,\c!offset=\v!overlay,\c!regionin={#1},\c!regionout={#2}]%
+ \definesymbol
+ [\currentsystemfield]
+ [{\framed[\c!frame=\v!off,\c!width=\overlaywidth,\c!height=\overlayheight]{}}]%
+ \definefield
+ [\currentsystemfield][push][overlayrollbutton][\currentsystemfield][\currentsystemfield]%
+ \fitfield[\currentsystemfield]%
+ \egroup}
+
+% \defineoverlay
+% [ShowMenu]
+% [{\overlayrollbutton[VideLayer{navigation}][HideLayer{navigation}]}]
+
+\def\inlinedbox
+ {\bgroup
+ \dowithnextbox
+ {\scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-\lineheight
+ \divide\scratchdimen\plustwo
+ \advance\scratchdimen\strutdepth
+ \setbox\nextbox\hbox{\lower\scratchdimen\flushnextbox}%
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \flushnextbox
+ \egroup}%
+ \hbox}
+
+% \readfile{cont-exp}\donothing\donothing % speed up (5-20%)
+
+\def\dimenratio#1#2% etex only
+ {\withoutpt\the\dimexpr(2\dimexpr(#1)/(\dimexpr(#2)/32768))}
+
+\def\doxprecurse#1#2%
+ {\ifnum#1=\zerocount % no \ifcase
+ \expandafter\gobblethreearguments
+ \else
+ #2\expandafter\expandafter\expandafter\doxprecurse\expandafter
+ \fi\expandafter{\the\numexpr(#1-1)}{#2}}
+
+\def\buttonframed{\dodoubleempty\localframed[\??bt]} % goodie
+
+\unexpanded\def\asciistr#1{\convertargument#1\to\ascii{\verbatimfont\ascii}}
+
+\prependtoks \setnormalcatcodes \to \everyTEXinputmode
+\appendtoks \processingXMLfalse \to \everyTEXinputmode
+
+\let\normalenableXML\enableXML % some day we move the normal \enableXML into the toks
+
+\prependtoks \normalenableXML \to \everyXMLinputmode
+\appendtoks \processingXMLtrue \to \everyXMLinputmode
+
+\def\enableXML {\setinputmode[XML]}
+\def\disableXML{\setinputmode[TEX]}
+
+\beginTEX
+
+ % else the skip aborts the reshape process
+
+ \def\shapefill{\vskip\onepoint\!!plus\lineheight\!!minus\lineheight\relax}
+
+\endTEX
+
+\beginETEX
+
+ \def\shapefill{\vskip\zeropoint\!!plus\lineheight\!!minus\lineheight\relax}
+
+\endETEX
+
+% Currently there is a bug in \lastnodetype, so we will enable this
+% feature when the bugfix is widespread.
+
+% \beginETEX \lastnodetype
+%
+% \def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
+% {\ifnum\lastnodetype=\@@gluenode % \ifcase\lastskip % \ifdim\lastskip=\zeropoint\relax
+% \shapeskip\lastskip
+% \global\setbox\tmpshapebox\normalvbox{#4\unvbox\tmpshapebox}%
+% \unskip
+% \else\ifnum\lastnodetype=\@@kernnode % \ifcase\lastkern % \ifdim\lastkern=\zeropoint\relax
+% \shapekern\lastkern
+% \global\setbox\tmpshapebox\normalvbox{#3\unvbox\tmpshapebox}%
+% \unkern
+% \else\ifnum\lastnodetype=\@@penaltynode % \ifcase\lastpenalty % \ifnum\lastpenalty=\zerocount
+% \shapepenalty\lastpenalty
+% \global\setbox\tmpshapebox\normalvbox{#2\unvbox\tmpshapebox}%
+% \unpenalty
+% \else
+% \setbox\shapebox\lastbox
+% \ifvoid\shapebox
+% \unskip\unpenalty\unkern
+% \else
+% \ifdim\wd\shapebox=\shapesignal\relax
+% \exitloop
+% \else
+% \shapecounter\zerocount
+% \global\setbox\tmpshapebox\normalvbox{#1\unvbox\tmpshapebox}%
+% \fi
+% \fi
+% \fi\fi\fi
+% \ifnum\shapecounter>100 % can be less
+% \message{<<forced exit from shapebox>>}%
+% \global\setbox\tmpshapebox\copy\oldshapebox
+% \exitloop
+% \else
+% \advance\shapecounter \plusone
+% \fi}
+%
+% \endETEX
+
+\let\normaltype\type
+
+\beginTEX
+
+ \unexpanded\def\retype#1{\bgroup\convertargument#1\to\ascii\@EA\normaltype\@EA{\ascii}\egroup}
+
+\endTEX
+
+\beginETEX
+
+ \unexpanded\def\retype#1{\scantokens{\normaltype{#1}\ignorespaces}}
+
+\endETEX
+
+\def\simplifytype{\let\type\retype}
+
+% \ruledhbox
+% {\startignorespaces
+% \def\oeps{a}
+% \startignorespaces
+% \def\oeps{a}
+% \stopignorespaces
+% \def\oeps{a}
+% \stopignorespaces
+% \oeps}
+
+\newsignal\boissignal
+\newcount \boislevel
+
+\long\def\startignorespaces
+ {\advance\boislevel\plusone
+ \ifcase\boislevel\or \ifhmode
+ \hskip\boissignal
+ \fi \fi
+ \ignorespaces}
+
+\long\def\stopignorespaces
+ {\ifcase\boislevel\or \ifhmode
+ \doloop
+ {\ifdim\lastskip=\zeropoint
+ \exitloop
+ \else\ifdim\lastskip=\boissignal
+ \unskip
+ \exitloop
+ \else
+ \unskip
+ \fi\fi}%
+ \fi \fi
+ \advance\boislevel\minusone}
+
+\defineblankmethod [\v!synchronize] {\verticalstrut\vskip-2\lineheight\verticalstrut}
+
+% \vtop{\blank[synchronize]\blank[line]test}
+
+\def\minimalhbox#1#%
+ {\dowithnextbox
+ {\bgroup
+ \setbox\scratchbox\hbox#1{\hss}%
+ \ifdim\nextboxwd<\wd\scratchbox\nextboxwd\wd\scratchbox\fi
+ \flushnextbox
+ \egroup}
+ \hbox}
+
+% manual
+%
+% externfiguur -> grid =ja|hoogte|diepte|halveregel|passend -> helemaal in details
+% stelplaatsblokin -> zijuitlijnen=hoogte|diepte|regel|halveregel|grid -> halveregel in 'details'
+
+% TODO: TEST FIRST, NO CORRECTION NEEDED IN GRID MODE, EVT OPTION
+
+\def\OTRONEsomeherefloat[#1]% spacing between two successive must be better
+ {\baselinecorrection % not really needed in grid mode:
+ %\ifgridsnapping \else \baselinecorrection \fi % ! ! ! test test test ! ! ! !
+ \doplacefloatbox
+ \doinsertfloatinfo
+ \dochecknextindentation\??bk}
+
+% todo: switch koppelen aan par scheelt pos
+
+% to be documented: \startspread .. \stopspread
+
+% to be documented primarydef p crossed d
+% to be documented PlainTextArea
+
+% manual
+%
+% Sometimes the demands are getting pretty weird:
+%
+% \startitemize
+% \item test
+% \item test
+% \headsym{xx} test \par test
+% \stopitemize
+
+% wait till bugfix in etex is widespead
+%
+% \beginETEX \lastnodetype
+%
+% \def\removeunwantedspaces
+% {\ifhmode
+% \doloop{\ifnum\lastnodetype=\@@gluenode\unskip\else\exitloop\fi}%
+% \fi}
+%
+% \endETEX
+
+% \def\dodimchoice#1#2#3%
+% {\ifx#3\relax
+% #1\@EA\gobbleuntilrelax
+% \else\ifdim#1#2%
+% #3\@EAEAEA\gobbleuntilrelax
+% \else
+% \@EAEAEA\dodimchoice
+% \fi\fi{#1}}
+
+% \def\donumchoice#1#2#3%
+% {\ifx#3\relax
+% #1\@EA\gobbleuntilrelax
+% \else\ifnum#1#2%
+% #3\@EAEAEA\gobbleuntilrelax
+% \else
+% \@EAEAEA\dodimchoice
+% \fi\fi{#1}}
+
+% \def\dimchoice#1#2{\dodimchoice{#1}#2\empty\relax}
+% \def\numchoice#1#2{\donumchoice{#1}#2\empty\relax}
+
+\def\gobbleuntilempty#1\empty{}
+
+\def\dodimchoice#1#2#3%
+ {\ifdim#1#2%
+ #3\@EA\gobbleuntilempty
+ \else
+ \@EA\dodimchoice
+ \fi{#1}}
+
+\def\donumchoice#1#2#3%
+ {\ifnum#1#2%
+ #3\@EA\gobbleuntilempty
+ \else
+ \@EA\dodimchoice
+ \fi{#1}}
+
+\def\dimchoice#1#2{\dodimchoice{#1}#2{=#1}{#1}\empty}
+\def\numchoice#1#2{\donumchoice{#1}#2{=#1}{#1}\empty}
+
+% \the\dimexpr(\dimchoice {7pt}{{<10pt}{8pt}{<12pt}{9pt}{<15pt}{10pt}{=11pt}{12pt}})
+% \the\dimexpr(\dimchoice{11pt}{{<10pt}{8pt}{<12pt}{9pt}{<15pt}{10pt}{=11pt}{12pt}})
+% \the\dimexpr(\dimchoice{14pt}{{<10pt}{8pt}{<12pt}{9pt}{<15pt}{10pt}{=11pt}{12pt}})
+
+\def\showsetupsdefinition[#1]{\showvalue{\??su:#1}} % temp hack for debugging
+
+% documentation : \setupregister[alternative=a|b|A|B]
+
+\def\pushXMLmeaning#1%
+ {\@EA\pushmacro\csname\@@XMLelement:#1/\endcsname
+ \@EA\pushmacro\csname\@@XMLelement:#1\endcsname
+ \@EA\pushmacro\csname\@@XMLelement:/#1\endcsname}
+
+\def\popXMLmeaning#1%
+ {\@EA\popmacro\csname\@@XMLelement:#1/\endcsname
+ \@EA\popmacro\csname\@@XMLelement:#1\endcsname
+ \@EA\popmacro\csname\@@XMLelement:/#1\endcsname}
+
+\def\defineXMLstore {\doquadrupleargument\dodefineXMLstore[\saveXMLasdata]}
+\def\defineXMLgstore{\doquadrupleargument\dodefineXMLstore[\gsaveXMLasdata]}
+
+\def\dodefineXMLstore[#1][#2][#3][#4]% element attribute prefix % will become faster
+ {\defineXMLargument[#2][#3=\s!dummy]{#1{#4:\XMLop{#3}}}}
+
+\def\countXMLchildren[#1]#2%
+ {\startnointerference
+ \doglobal\newcounter\nofXMLchildren
+ \defineXMLargument[#1]{\doglobal\increment\nofXMLchildren}%
+ \startXMLignore
+ #2%
+ \stopXMLignore
+ \stopnointerference}
+
+\unprotected \def\traceposstring#1#2#3%
+ {\iftracepositions
+ \smashedhbox%
+ {#1{\infofont#2#3}%
+ \scratchdimen.5\points
+ \kern-2\scratchdimen
+ \vrule\!!width4\scratchdimen\!!height\scratchdimen\!!depth\scratchdimen}%
+ \fi}
+
+% It took quite a while to figure this out (using the preliminary 1.5
+% spec). There are still a lot of things to be implemented. This is
+% the third alternative.
+
+% todo: multiple instances, dus indirect
+
+\let\currentrendering\empty
+
+\definereference[StartCurrentRendering] [\v!StartRendering {\currentrendering}]
+\definereference[StopCurrentRendering] [\v!StopRendering {\currentrendering}]
+\definereference[PauseCurrentRendering] [\v!PauseRendering {\currentrendering}]
+\definereference[ResumeCurrentRendering][\v!ResumeRendering{\currentrendering}]
+
+\newcounter\nofexternalrenderings
+
+\def\useexternalrendering{\doquadrupleempty\douseexternalrendering}
+\def\setinternalrendering{\dodoubleempty \dosetinternalrendering}
+
+\def\douseexternalrendering[#1][#2][#3][#4]% tag mime file options
+ {\setgvalue{\??rd:#1}{\plusone{#1}{#2}{#3}{#4}}}
+
+\def\dosetinternalrendering[#1][#2]% tag options {content}
+ {\bgroup
+ \dowithnextbox
+ {\setgvalue{\??rd:#1}{\plustwo{#1}{IRO}{#1}{#2}}%
+ \let\objectoffset\zeropoint
+ \setobject{IRO}{#1}\hbox{\box\nextbox}%
+ \egroup}%
+ \hbox}
+
+\def\checkrendering#1% let's hope that \next is not used
+ {\iflocation
+ \doifsomething{#1}%
+ {\doifdefined{\??rd:#1}%
+ {\expanded{\getvalue{\??rd::\number\renderingtype{#1}}%
+ {\filterfromvalue{\??rd:#1}52}{\filterfromvalue{\??rd:#1}53}%
+ {\filterfromvalue{\??rd:#1}54}{\filterfromvalue{\??rd:#1}55}}}}%
+ \fi}
+
+\setvalue{\??rd::1}{\doinsertrendering}
+\setvalue{\??rd::2}{\doinsertrenderingobject}
+
+\def\renderingtype #1{\filterfromvalue{\??rd:#1}51}
+\def\renderingoptions#1{\filterfromvalue{\??rd:#1}55}
+
+\setexecutecommandcheck {startrendering} \checkrendering
+\setexecutecommandcheck {stoprendering} \checkrendering
+\setexecutecommandcheck {pauserendering} \checkrendering
+\setexecutecommandcheck {resumerendering} \checkrendering
+
+% by using a nice trick (used in other places of context as well) we
+% can easily overload the default size to match the opbject size
+
+\def\renderingwidth {8cm}
+\def\renderingheight{6cm}
+
+\def\definerenderingwindow
+ {\dodoubleempty\dodefinerenderingwindow}
+
+\def\dodefinerenderingwindow[#1][#2]%
+ {\presetlocalframed[\??rw#1]%
+ \getparameters%
+ [\??rw#1]%
+ [\c!openpageaction=,\c!closepageaction=,%
+ \c!width=\renderingwidth,\c!height=\renderingheight,%
+ #2]}
+
+\def\setuprenderingwindow
+ {\dodoubleargument\dosetuprenderingwindow}
+
+\def\dosetuprenderingwindow[#1]%
+ {\getparameters[\??rw#1]}
+
+\def\placerenderingwindow
+ {\dodoubleempty\doplacerenderingwindow}
+
+\def\doplacerenderingwindow[#1][#2]%
+ {\bgroup
+ \edef\currentrendering{\ifsecondargument#2\else#1\fi}%
+ \ifcase\renderingtype\currentrendering\or
+ % a file
+ \or
+ % an object
+ \getobjectdimensions{IRO}\currentrendering
+ \scratchdimen\objectheight
+ \advance\scratchdimen\objectdepth
+ \edef\renderingheight{\the\scratchdimen}%
+ \edef\renderingwidth{\objectwidth}%
+ \fi
+ % create fall back if needed
+ \doifdefinedelse{\??rw#1\c!width}
+ {\def\currentrenderingwindow{#1}}
+ {\let\currentrenderingwindow\s!default
+ \definerenderingwindow[\currentrenderingwindow]}%
+ \checkrendering\currentrendering
+ \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!openpageaction }}\dosetuprenderingopenpageaction
+ \handlereferenceactions{\getvalue{\??rw\currentrenderingwindow\c!closepageaction}}\dosetuprenderingclosepageaction
+ \localframed
+ [\??rw\currentrenderingwindow][\c!offset=\v!overlay]%
+ {\expanded{\doinsertrenderingwindow
+ \noexpand\currentrendering\hsize\vsize{\renderingoptions\currentrendering}}}%
+ \egroup}
+
+% todo:
+%
+% \setinternalrendering[example-1][options]{}
+
+% test file:
+%
+% \definerenderingwindow
+% [example]
+% [width=320pt,height=150pt,frame=off,
+% background=color,backgroundcolor=gray,
+% openpageaction=StartCurrentRendering,
+% closepageaction=NextPage]% StopCurrentRendering]
+%
+% \useexternalrendering[example-1][audio/mpeg] [eldorado.mp3]
+% \useexternalrendering[example-2][audio/mpeg] [myst-12.mp3]
+% \useexternalrendering[example-3][application/x-shockwave-flash][http://localhost/mb.swf] [auto]
+% \useexternalrendering[example-4][application/x-shockwave-flash][celebration.swf]
+% \useexternalrendering[example-5][video/quicktime] [p1000726.mov]
+% \useexternalrendering[example-6][application/smil] [quadratic_map.smi]
+%
+% \def\renderingmenu[#1]%
+% {\hbox
+% {\setupbuttons[width=2.5em]%
+% \button{\symbol[StartRendering]} [StartRendering{#1}]\enspace
+% \button{\symbol[StopRendering]} [StopRendering{#1}]\enspace
+% \button{\symbol[PauseRendering]} [PauseRendering{#1}]\enspace
+% \button{\symbol[ResumeRendering]}[ResumeRendering{#1}]}}
+%
+% \renderingmenu[example-1]\blank
+% \renderingmenu[example-2]\blank
+% \renderingmenu[example-3]\blank
+% \renderingmenu[example-4] \placefigure{A ShockWave}{\placerenderingwindow[example][example-4]} \page
+% \renderingmenu[example-5] \placefigure{A Movie}{\placerenderingwindow[example][example-5]} \page
+% \renderingmenu[example-6] \placefigure{A Smile}{\placerenderingwindow[example][example-6]}
+
+% will be a MyWay
+%
+% \setuplayout[grid=yes] \setupcaption[figure][inbetween=] \useMPlibrary[dum] \setupcolors[state=start]
+%
+% \starttext \showgrid \showstruts
+%
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=yes]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=fit]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=height]}
+% \input ward
+% \page
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=yes]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=fit]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=height]}
+% \input ward
+% \page
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=yes]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=fit]}
+% \input ward \placefigure{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=height]}
+% \input ward
+% \page
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=yes]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=fit]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.4,grid=height]}
+% \input ward
+% \page
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=yes]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=fit]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.5,grid=height]}
+% \input ward
+% \page
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=yes]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=fit]}
+% \input ward \placefigure[none]{}{\externalfigure[dummy][width=.5\hsize,lines=1.6,grid=height]}
+% \input ward
+%
+% \stoptext
+
+% funny, as field action with e.g. dissolve ... only the field dissolves, bug?
+
+\setglobalsystemreference\rt!exec{Transition}{transition}
+
+%def\PDFexecutetransition {/Trans /Trans <</Type /Trans \executeifdefined{PDFpage\argumentA}\PDFpagereplace>>}
+\def\PDFexecutetransition {/Trans /Trans <<\executeifdefined{PDFpage\argumentA}\PDFpagereplace>>}
+
+% new, continuous blocks, \som \par \startdoorlopendblok ...
+
+% \startitemize
+% \item bagger
+% \item bagger
+% \item \startdoorlopendblok bagger \stopdoorlopendblok
+% \item \endgraf \startdoorlopendblok bagger \stopdoorlopendblok
+% \item \endgraf \startdoorlopendblok \strut bagger \stopdoorlopendblok
+% \item \startdoorlopendblok
+% \starttabulate
+% \NC test \NC test \NC \NR
+% \NC test \NC test \NC \NR
+% \NC test \NC test \NC \NR
+% \stoptabulate
+% \stopdoorlopendblok
+% \item test
+% \stopitemize
+
+\def\startdoorlopendblok % for special cases, don't change it too much and don't rely on it
+ {\ifhmode\endgraf\nobreak\fi % don't remove the \nobreak
+ \dowithnextboxcontent
+ {\setlocalhsize \hsize\localhsize \forgetall}
+ {\bgroup
+ \forgeteverypar
+ \forgetparskip
+ \scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \getnoflines\scratchdimen
+ \advance\scratchdimen-\strutheight
+ \setbox\nextbox\hbox{\lower\scratchdimen\box\nextbox}%
+ \ht\nextbox\strutheight
+ \dp\nextbox\strutdepth
+ \setbox\nextbox\vbox
+ {\indent\box\nextbox
+ \endgraf
+ \nobreak
+ \advance\noflines\minusone
+ \dorecurse\noflines{\crlf\nobreak}}%
+ \verticalstrut
+ \endgraf
+ \nobreak
+ \offinterlineskip
+ \kern-2\lineheight % 2\lineheight when no vertical struts in main \vbox
+ \nobreak
+ \unvbox\nextbox
+ \prevdepth\strutdepth
+ % evt (eerst testen) een signal zodat een direct volgend blok goed gaat)
+ \egroup}
+ \vbox\bgroup
+ \vskip-\lineheight \verticalstrut\endgraf
+ \insidefloattrue
+ \doinhibitblank} % beware, no \inhibitblank ! ! ! ! ! !
+
+\def\stopdoorlopendblok
+ {\endgraf\verticalstrut\endgraf\kern-2\lineheight
+ \egroup}
+
+\def\definepushbutton % name optional setup
+ {\dodoubleempty\dodefinepushbutton}
+
+\def\dodefinepushbutton[#1][#2]% name setup
+ {\dododefinepushbutton{#1}{n}{push}%
+ \dododefinepushbutton{#1}{r}{\symbol[psym:#1:n]}%
+ \dododefinepushbutton{#1}{d}{\symbol[psym:#1:r]}%
+ \setvalue{pushbutton:#1}{\dohandlepushbutton{#1}{#2}}}
+
+\def\dododefinepushbutton#1#2#3%
+ {\doifsymboldefinedelse{psym:#1:#2}%
+ \donothing{\definesymbol[psym:#1:#2][{#3}]}}
+
+\def\definepushsymbol
+ {\dotripleargument\dodefinepushsymbol}
+
+\def\dodefinepushsymbol[#1][#2]% [#3]
+ {\definesymbol[psym:#1:#2]}
+
+\def\dopushbutton[#1][#2]%
+ {\executeifdefined{pushbutton:#1}\gobbleoneargument{#2}}
+
+\def\pushbutton
+ {\dodoubleargument\dopushbutton}
+
+\def\dohandlepushbutton#1#2#3% identifier setup script
+ {\bgroup
+ \nextsystemfield
+ \setupfield
+ [pushbutton]
+ [\c!frame=\v!overlay,
+ \c!offset=\v!overlay,
+ \c!clickout=#3,#2]%
+ \definefield
+ [\currentsystemfield]
+ [push]
+ [pushbutton]
+ [psym:#1:n,psym:#1:r,psym:#1:d]%
+ \fitfield
+ [\currentsystemfield]%
+ \egroup}
+
+% \def\do@@ampsh
+% {\dodoubleargument\dodo@@ampsh}
+%
+% \def\dodo@@ampsh[#1][#2]#3\\%
+% {\txt\pushbutton[#1][#2]\\}%
+%
+%\appendtoks \let\psh\do@@ampsh \to \everysetmenucommands
+
+\def\@@ampsh{\txt\pushbutton}
+
+\appendtoks \let\psh\@@ampsh \to \everysetmenucommands
+
+% \definepushbutton [reset]
+%
+% \definepushsymbol [reset] [n] [\uniqueMPgraphic{whatever}{color=green}]
+% \definepushsymbol [reset] [r] [\uniqueMPgraphic{whatever}{color=white}]
+%
+% \startinteractionmenu[bottom]
+% \psh [reset] [JS(reset_something)] \\
+% \stopinteractionmenu
+
+\def\tabulaterule % to be redone, not correct
+ {\dotabulaterule
+ {\hrule\!!height.5\scratchdimen\!!depth.5\scratchdimen\relax
+ \doifvalue{\??tt\currenttabulate\c!distance}\v!grid
+ {\kern-\scratchdimen}}} % experimental tm-prikkels
+
+% todo: \setupinterlinespace[\c!regel=\v!vast] => ==\the\baselineskip
+
+%%%%%%%% todo: \chardef\snapstruts=1 => d=l-h
+
+\def\useMPvariables
+ {\dodoubleargument\douseMPvariables}
+
+\def\douseMPvariables[#1][#2]%
+ {\def\@@meta{#1:}%
+ \prepareMPvariables{#2}}
+
+\def\processlinetableXMLfile#1%
+ {\bgroup
+ \let\startlinetable\donothing
+ \let\stoplinetable \donothing
+ \startlinetableanalysis\processXMLfile{#1}\stoplinetableanalysis
+ \startlinetablerun \processXMLfile{#1}\stoplinetablerun
+ \egroup}
+
+% experimental: \synchronizegrid bla bla bla
+
+\newcounter\currentgridsync
+
+\def\gridsynctag{grs:\currentgridsync}
+
+\def\synchronizegrid
+ {\doglobal\increment\currentgridsync
+ \par\prevdepth\zeropoint
+ \nointerlineskip
+ \hpos\gridsynctag{\strut}\par
+ \vskip-\lineheight
+ \nointerlineskip
+ % top of text
+ \scratchdimen\MPy{\v!text:\MPp\gridsynctag}%
+ \advance\scratchdimen\MPh{\v!text:\MPp\gridsynctag}%
+ % move to first baseline
+ \advance\scratchdimen-\topskip
+ % subtract wrong baseline
+ \advance\scratchdimen-\MPy\gridsynctag
+ % get minimal number of lines
+ \advance\scratchdimen\lineheight
+ \getnoflines\scratchdimen
+ % calculate difference
+ \advance\scratchdimen-\noflines\lineheight\relax
+ \scratchdimen-\scratchdimen\relax
+ \ifdim\scratchdimen>\zeropoint
+ \nointerlineskip
+ \advance\scratchdimen-\lineheight
+ \vskip\scratchdimen \dontleavehmode \quad \strut
+ \par
+ %\else
+ % \message{no grid correction: \the\scratchdimen}\wait
+ \fi}
+
+% needed for extreme
+
+\definesystemvariable{ie}
+
+% \def\definetest[#1]#2%
+% {\long\setvalue{\??ie#1}{#2}}
+
+\def\definetest
+ {\dodoubleempty\dodefinetest}
+
+\def\dodefinetest[#1][#2]#3%
+ {\setgvalue{\??ie#1}{#3}%
+ \ifsecondargument
+ \processaction
+ [#2]
+ [% first test true, rest depends
+ \v!next=>\setgvalue{\??ie#1}{\setgvalue{\??ie#1}{#3}\firstoftwoarguments},
+ % rest true if first true
+ % \v!first=>\setgvalue{\??ie#1}{#3{\letgvalue{\??ie#1}%
+ % \firstoftwoarguments\firstoftwoarguments}%
+ % \secondoftwoarguments},
+ % always true
+ \v!yes=>\letgvalue{\??ie#1}\firstoftwoarguments,
+ % always false
+ \v!no=>\letgvalue{\??ie#1}\secondoftwoarguments]%
+ \fi}
+
+\def\doperformtest#1%
+ {\executeifdefined{\??ie#1}\secondoftwoarguments}
+
+\def\definecolumnsethsize#1#2#3#4% will be improved/speed up
+ {\bgroup
+ \def\OTRSETidentifier{#1}%
+ \ifcase\columnsetlevel\relax
+ \mofcolumns\plusone
+ \OTRSETinitializecolumns
+ \OTRSETassignwidths
+ \OTRSETsethsize
+ \fi
+ \!!counta#2\!!countb#3\docalculatecolumnsetspan
+ \expandafter\egroup\expandafter\edef\expandafter
+ #4\expandafter{\the\!!widtha}}
+
+% so far
+
+% between alignment lines certain rules apply, and even a
+% simple test can mess up a table, which is why we have a
+% special test facility
+%
+% \ruledvbox
+% {\starttabulate[|l|p|]
+% \NC 1test \NC test \NC \NR
+% \tableifelse{\doifelse{a}{a}}{\NC Xtest \NC test \NC \NR}{}%
+% \stoptabulate}
+
+\long \def\tableifelse#1%
+ {\TABLEnoalign{#1%
+ {\aftergroup \firstoftwoarguments}%
+ {\aftergroup\secondoftwoarguments}}}
+
+% \long \def\tableif#1% whow, this is real ugly
+% {\TABLEnoalign{\let\gnext\gobbleoneargument#1%
+% {\let\gnext\firstofoneargument}}\gnext}
+
+\long \def\tableiftextelse#1{\tableifelse{\doiftextelse{#1}}}
+
+\def\overloaded#1#2%
+ {\appendtoks
+ \writestatus\m!systems{overloaded: \string#2}%
+ \to \everybye
+ #1#2}
+
+\def\expandifnonempty#1%
+ {\@EA\ifx\csname#1\endcsname\empty
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi
+ {\csname#1\endcsname}}
+
+\def\@@sectiekoppeling#1%
+ {\expandifnonempty{\??ko#1\c!coupling}{#1}}
+
+\def\@@sectiesectie#1%
+ {\expandifnonempty{\??ko#1\c!section}{\@@sectiekoppeling{#1}}}
+
+\def\sectioncountervalue#1%
+ {\@@sectionvalue{\@@sectiesectie{#1}}}
+
+% todo namespace \@@meta:#1:... ! ! ! ! ! !
+
+\def\presetMPvariable
+ {\dodoubleargument\dopresetMPvariable}
+
+\def\dopresetMPvariable[#1][#2=#3]%
+ {\doifundefined{#1:#2}{\setvalue{#1:#2}{#3}}}
+
+% experiment, not yet to be used
+
+\def\displaybreak
+ {\ifhmode
+ \removeunwantedspaces
+ \ifcase\raggedstatus\hfill\fi
+ \strut\penalty-9999 % \break fails on case (3)
+ \fi}
+
+\def\startdisplay{\displaybreak\ignorespaces\startpacked}
+\def\stopdisplay {\stoppacked\displaybreak\ignorespaces}
+
+\def\tightvbox{\dowithnextbox{\nextboxdp\zeropoint\flushnextbox}\vbox}
+\def\tightvtop{\dowithnextbox{\nextboxht\zeropoint\flushnextbox}\vtop}
+
+% pretty important (esp since we now ignore shipouts)
+%
+% actually we should nil all writes, marks, specials
+
+\appendtoks \globallet\popproperties \relax \to \everylastshipout
+\appendtoks \globallet\popsplitproperties\relax \to \everylastshipout
+
+\def\incrementvalue#1{\expandafter\increment\csname#1\endcsname}
+\def\decrementvalue#1{\expandafter\decrement\csname#1\endcsname}
+
+% \translateMPinput{il2-pl}
+%
+% \startMPenvironment[global]
+% \setupbodyfont[plr]
+% \stopMPenvironment
+%
+% \TeX: ± ¶
+%
+% \startMPcode
+% draw btex MetaPost: ± ¶ etex scaled 5 ;
+% \stopMPcode
+
+% \startcolumnset[two] \input tufte
+% \startcolumnsetspan[two] \input tufte \stopcolumnsetspan
+% \input tufte \stopcolumnset
+
+% now in cont-loc.tex, for the sake of testing.
+%
+% %D When \type {\somecolor} is issued, we can savely assume
+% %D grouping. Using \type {\groupedcommand} here (i.e.\ the
+% %D definition of \type {\color}) is unsafe because in
+% %D interferes with for instance switching attributes.
+%
+% \def\switchtocolor[#1]%
+% {\bgroup\startcolor[#1]
+% \aftergroup\stopcolor
+% \aftergroup\egroup}
+
+% what is this stupid macro meant for:
+
+\def\hyphenationpoint
+ {\hskip\zeropoint}
+
+\def\hyphenated#1%
+ {\bgroup
+ \!!counta\zerocount
+ \def\hyphenated##1{\advance\!!counta\plusone}%
+ \handletokens#1\with\hyphenated
+ \!!countb\plusone
+ \def\hyphenated##1%
+ {##1%
+ \advance\!!countb\plusone\relax
+ \ifnum\!!countb>2 \ifnum\!!countb<\!!counta
+ \hyphenationpoint
+ \fi\fi}%
+ \handletokens#1\with\hyphenated
+ \egroup}
+
+\def\obeysupersubletters
+ {\let\super\normalsuper
+ \let\suber\normalsuber
+ \let\normalsuper\letterhat
+ \let\normalsuber\letterunderscore
+ \enablesupersub}
+
+\def\obeysupersubmath
+ {\let\normalsuper\letterhat
+ \let\normalsuber\letterunderscore
+ \enablesupersub}
+
+%\let\normaltype\type
+%
+%\def\type#1%
+% {\expanded{\normaltype{\detokenize{#1}}}}
+
+% {x123 \os x123} {\tfa x123 \os x123} {x123 \tx x123 \os x123}
+% \definefontsynonym[OldStyle][Serif]
+% {x123 \os x123} {\tfa x123 \os x123} {x123 \tx x123 \os x123}
+
+% testen :
+%
+% \appendtoks
+% \let\registerparoptions\relax
+% \to \everyforgetall
+
+\def\startgridcorrection
+ {\dosingleempty\dostartgridcorrection}
+
+\def\dostartgridcorrection[#1]%
+ {\ifgridsnapping
+ \iffirstargument\doifsomething{#1}{\moveongrid[#1]}\fi
+ \snaptogrid\vbox\bgroup
+ \else
+ \startbaselinecorrection
+ \fi}
+
+\def\stopgridcorrection
+ {\ifgridsnapping
+ \egroup
+ \else
+ \stopbaselinecorrection
+ \fi}
+
+\def\checkgridsnapping
+ {\lineskip\ifgridsnapping\zeropoint\else\normallineskip\fi}
+
+\def\startplaatsen
+ {\dosingleempty\dostartplaatsen}
+
+\def\dostartplaatsen[#1]% tzt n*links etc
+ {\endgraf
+ \noindent\bgroup
+ \setlocalhsize
+ \hbox to \localhsize\bgroup
+ \doifnot{#1}\v!left\hss
+ \def\stopplaatsen
+ {\unskip\unskip\unskip
+ \doifnot{#1}\v!right\hss
+ \egroup
+ \egroup
+ \endgraf}%
+ \gobblespacetokens}
+
+% \startplaatsen[links] bla \stopplaatsen
+
+% we don't register the paragraph characteristics, only the
+% width
+
+\appendtoks
+ \setinnerparpositions % see "techniek" for application
+\to \everytabulate
+
+\appendtoks \checkcurrentlayout \to \everystarttext
+
+\def\flushfootnotes {\flushnotes}
+\def\doflushfootnotes{\doflushnotes}
+
+%D This alternative is slower, since it works on top of the
+%D color (stack) mechanism, but it does provide nesting.
+
+\def\dosetrastercolor#1%
+ {\edef\@@cl@@s{#1}%
+ \ifx\@@cl@@s\empty
+ \let\@@cl@@s\@@rsscreen
+ \fi
+ \let\@@cl@@t\@@cl@@z % else we get rogue
+ \let\@@cl@@a\@@cl@@z % transpancies
+ \setevalue{\??cr\??rs}{\colorSpattern}}
+
+% beware, don't add extra grouping, else color in tables
+% fails
+
+\def\localstartraster[#1]%
+ {\ifincolor\dosetrastercolor{#1}\localstartcolor[\??rs]\fi}
+
+\def\startraster[#1]%
+ {\ifincolor\dosetrastercolor{#1}\startcolor[\??rs]\fi}
+
+\def\localstopraster{\ifincolor\localstopcolor\fi}
+\def\stopraster {\ifincolor\stopcolor\fi}
+
+\def\fontclassname#1#2%
+ {\ifcsname\??ff#1#2\endcsname
+ \fontclassname{#1}{\csname\??ff#1#2\endcsname}%
+ \else\ifcsname\??ff#2\endcsname
+ \fontclassname{#1}{\csname\??ff#2\endcsname}%
+ \else
+ #2%
+ \fi\fi}
+
+\def\defineclassfontsynonym
+ {\dotripleargument\dodefineclassfontsynonym}
+
+\def\dodefineclassfontsynonym[#1][#2][#3]%
+ {\definefontsynonym[#1][\fontclassname{#2}{#3}]}
+
+%\definefontsynonym [KopFont] [\fontclassname{officina}{SerifBold}]
+%
+%\defineclassfontsynonym [KopFont] [officina] [SerifBold]
+
+\def\startcolumnmakeup % don't change
+ {\bgroup
+ \getrawnoflines\textheight % teksthoogte kan topskip hebben, dus raw
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen-\lineheight
+ \advance\scratchdimen\topskip
+ \setbox\scratchbox
+ \ifcase\showgridstate\vbox\else\ruledvbox\fi to \scratchdimen\bgroup
+ \forgetall} % ! don't change
+
+\def\stopcolumnmakeup
+ {\egroup
+ \dp\scratchbox\zeropoint
+ \wd\scratchbox\textwidth
+ \box\scratchbox
+ \egroup
+ \synchronizehsize}
+
+% todo : hoe komt box er uit
+
+\long\def\startexternalfigure
+ {\dotripleempty\dostartexternalfigure}
+
+\long\def\dostartexternalfigure[#1][#2][#3]#4\stopexternalfigure
+ {\gdef\figuredescription{#4}%
+ \externalfigure[#1][#2][#3]%
+ \globallet\figuredescription\empty}
+
+\let\figuredescription\empty
+
+%% where does this come from, old code probably
+%%
+%%
+%% \newif\ifpagechanged \let\lastchangedpage\empty
+%%
+%% \def\checkpagechange#1%
+%% {\gettwopassdata\s!paragraph
+%% \pagechangedfalse
+%% \iftwopassdatafound
+%% \ifnum\twopassdata>0\getvalue{\s!paragraph:p:#1}\relax
+%% \pagechangedtrue
+%% \fi
+%% \fi
+%% \ifpagechanged
+%% \letgvalue{\s!paragraph:p:#1}\twopassdata
+%% \globallet\lastchangedpage\twopassdata
+%% \else
+%% \globallet\lastchangedpage\realfolio
+%% \fi
+%% \doparagraphreference}
+%%
+%% \def\changedpage#1%
+%% {\getvalue{\s!paragraph:p:#1}}
+
+% incomplete, will be a special case of float placement
+
+\def\startfixed{\dosingleempty\dostartfixed}
+
+\def\dostartfixed[#1]%
+ {\expanded{\dowithnextbox{\noexpand\dodofixed{\ifhmode0\else1\fi}{#1}}}%
+ \vbox\bgroup
+ \setlocalhsize}
+
+\def\stopfixed
+ {\egroup}
+
+\def\dodofixed#1#2%
+ {\ifcase#1\relax
+ \processaction
+ [#2]
+ [ \v!high=>\bbox {\flushnextbox},
+ \v!low=>\tbox {\flushnextbox},
+ \v!middle=>\vcenter{\flushnextbox},
+ \v!lohi=>\vcenter{\flushnextbox},
+ \s!unknown=>\tbox {\flushnextbox},
+ \s!default=>\tbox {\flushnextbox}]%
+ \else
+ \startbaselinecorrection
+ \noindent\flushnextbox
+ \stopbaselinecorrection
+ \fi}
+
+% \startitemize
+%
+% \item \externalfigure[koe][height=2cm]
+% \item \externalfigure[koe][height=2cm]
+% \item \externalfigure[koe][height=2cm]
+% \item \externalfigure[koe][height=2cm]
+%
+% \page
+%
+% \item \startfixed \externalfigure[koe][height=2cm]\stopfixed
+% \item \startfixed[high]\externalfigure[koe][height=2cm]\stopfixed
+% \item \startfixed[low] \externalfigure[koe][height=2cm]\stopfixed
+% \item \startfixed[lohi]\externalfigure[koe][height=2cm]\stopfixed
+%
+% \page
+%
+% \item test \startfixed \externalfigure[koe][height=2cm]\stopfixed
+% \item test \startfixed[high]\externalfigure[koe][height=2cm]\stopfixed
+% \item test \startfixed[low] \externalfigure[koe][height=2cm]\stopfixed
+% \item test \startfixed[lohi]\externalfigure[koe][height=2cm]\stopfixed
+%
+% \page
+%
+% \item test \par \startfixed \externalfigure[koe][height=2cm]\stopfixed
+% \item test \par \startfixed[high]\externalfigure[koe][height=2cm]\stopfixed
+% \item test \par \startfixed[low] \externalfigure[koe][height=2cm]\stopfixed
+% \item test \par \startfixed[lohi]\externalfigure[koe][height=2cm]\stopfixed
+%
+% \stopitemize
+
+% still needed for uguide
+
+\let\placefloatlabel \placefloatcaption
+\let\placefloatlabeltext \placefloatcaptiontext
+\let\placefloatlabelreference \placefloatcaptionreference
+
+\def\obeyfollowingtoken{{}} % end \cs scanning
+
+\def\gobbleparameters{\doquadrupleempty\dogobbleparameters}
+\def\dogobbleparameters[#1][#2][#3][#4]{}
+
+% documentation
+
+% \starttable[|||]
+% \HL
+% \VL test \VS test \VL \FR
+% \VL test \VD test \VL \MR
+% \VL test \VT test \VL \LR
+% \HL
+% \stoptable
+
+%D To be documented, \type {\includemenu[menu]}.
+%D To be documented, \type {\emphbf} cum suis.
+
+%D A prelude to strategies. Note for myself: overloads
+%D previous stuff from local pragma test files.
+
+\def\s!strategy{strategy}
+
+\def\currentstrategypass {1}
+\def\currentstrategyvariable{0}
+\def\maximumstrategypass {8}
+
+\newconditional\strategypassneeded
+\newconditional\strategypassforced
+
+\definetwopasslist{\s!strategy}
+
+\def\registerstrategypass%
+ {\ifnum\currentstrategypass>\maximumstrategypass \else
+ \ifconditional\strategypassforced
+ \doglobal\increment\currentstrategypass
+ \else%\ifconditional\strategypassneeded
+ %\doglobal\increment\currentstrategypass
+ \fi%\fi
+ \fi
+ \savecurrentvalue\currentstrategypass{\currentstrategypass}}
+
+\appendtoks \registerstrategypass \to \everybye % \everylastshipout
+
+\def\setstrategyvariable#1#2% key value
+ {%\doifnotstrategyvariable{#1}{\global\settrue\strategypassneeded}%
+ \doglobal\increment\currentstrategyvariable
+ \expanded{\immediatewriteutilitycommand{\noexpand
+ \twopassentry{\s!strategy}{\currentstrategyvariable}{#1::#2}}}}
+
+\def\doifstrategyvariableelse#1#2#3%
+ {\getstrategyvariable{#1}\iftwopassdatafound#2\else#3\fi}
+
+\def\getstrategyvariable#1% key
+ {\findtwopassdata{\s!strategy}{#1::}%
+ \setxvalue{\s!strategy:#1}{\twopassdata}}
+
+\def\retainstrategyvariable#1% key
+ {\expanded{\setstrategyvariable{#1}{\strategyvariable{#1}}}}
+
+\def\strategyvariable#1% key
+ {\csname\s!strategy:#1\endcsname}
+
+\let\stratvar\strategyvariable
+
+\def\forcestrategy{\global\settrue \strategypassforced}
+\def\abortstrategy{\global\setfalse\strategypassforced}
+
+\def\doifstrategyvariableelse#1#2#3%
+ {\getstrategyvariable{#1}\iftwopassdatafound#2\else#3\fi}
+
+\def\doifstrategyvariable #1#2{\doifstrategyvariableelse{#1}{#2}{}}
+\def\doifnotstrategyvariable#1#2{\doifstrategyvariableelse{#1}{}{#2}}
+
+%D New: only at start of columns; may change ! Rather
+%D interwoven and therefore to be integrated when the multi
+%D column modules are merged.
+
+% already taken care of: \definesystemvariable{ks}
+
+% is buggy now and does not work any longer
+
+\def\setupcolumnspan[#1]%
+ {\getparameters[\??ks][#1]}
+
+\presetlocalframed
+ [\??ks]
+
+\setupcolumnspan
+ [\c!n=2,
+ \c!offset=\v!overlay,
+ \c!frame=\v!off]
+
+\newbox\columnspanbox \let\postprocesscolumnspanbox\gobbleoneargument
+
+\def\dostartcolumnspan[#1]%
+ {\bgroup
+ \setupcolumnspan[#1]%
+ \forgetall
+ \ifinsidecolumns
+ \advance\hsize \intercolumnwidth
+ \hsize\@@ksn\hsize
+ \advance\hsize -\intercolumnwidth
+ \fi
+ \dowithnextbox
+ {\setbox\columnspanbox\flushnextbox
+ \ifinsidecolumns\wd\columnspanbox\hsize\fi
+ \postprocesscolumnspanbox\columnspanbox
+ \scratchdimen\ht\columnspanbox
+ \setbox\columnspanbox\hbox % depth to be checked, probably option!
+ {\localframed[\??ks][\c!offset=\v!overlay]{\box\columnspanbox}}%
+ \ht\columnspanbox\scratchdimen
+ \dp\columnspanbox\strutdp
+ \wd\columnspanbox\hsize
+ \ifinsidecolumns
+ \ifnum\@@ksn>1
+ \setvsize
+ \dohandleallcolumns
+ {\ifnum\currentcolumn>\@@ksn\else
+ \global\setbox\currenttopcolumnbox=\vbox
+ {\ifnum\currentcolumn=1
+ \snaptogrid\vbox{\copy\columnspanbox}
+ \else
+ \snaptogrid\vbox{\vphantom{\copy\columnspanbox}}
+ \fi}%
+ \wd\currenttopcolumnbox\hsize
+ \global\advance\vsize -\ht\currenttopcolumnbox
+ \fi}
+ \global\pagegoal\vsize
+ \else
+ \snaptogrid\vbox{\box\columnspanbox}
+ \fi
+ \else
+ \snaptogrid\vbox{\box\columnspanbox}
+ \fi
+ \endgraf
+ \prevdepth\strutdp
+ \egroup}
+ \vbox\bgroup
+ %\topskipcorrection % becomes an option !
+ \EveryPar{\begstrut\EveryPar{}}} % also !
+
+\def\startcolumnspan
+ {\dosingleempty\dostartcolumnspan}
+
+\def\stopcolumnspan
+ {\egroup}
+
+%D For Ton. To be documented.
+
+\def\plaatsexterndocument[#1]%
+ {\def\doexternaldocument##1##2##3{\readlocfile{##2}\donothing\donothing}%
+ \getvalue{\v!file:::#1}}
+
+%D Far from complete.
+
+\def\startgeheel
+ {\startlinecorrection
+ \insidefloattrue}
+
+\def\stopgeheel
+ {\stoplinecorrection}
+
+%D No more news.
+
+\protect
+
+%D Next we load a few local optimizations and new features. They
+%D live on on my machine and are not distributed, but they may end
+%D up in the distributed files.
+
+\readsysfile {cont-loc} {} {} % local improvements, patches, new features
+\readsysfile {cont-exp} {} {} % experimental features (e.g. local speed-ups)
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-nl.tex b/Master/texmf-dist/tex/context/base/cont-nl.tex
new file mode 100644
index 00000000000..02378a60c32
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-nl.tex
@@ -0,0 +1,38 @@
+%D \module
+%D [ file=cont-nl,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ Dutch Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{dutch}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!nl]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!uk] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!fr] [\c!state=\v!start]
+\installlanguage [\s!es] [\c!state=\v!start]
+\installlanguage [\s!nl] [\c!state=\v!start]
+\installlanguage [\s!it] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-old.tex b/Master/texmf-dist/tex/context/base/cont-old.tex
new file mode 100644
index 00000000000..d0529c695ca
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-old.tex
@@ -0,0 +1,46 @@
+%D \module
+%D [ file=cont-old,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=Old Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Old Macros}
+
+\unprotect
+
+\def\dosubstitutecommand#1#2%
+ {\writestatus\m!systems{\string#1\normalspace -> \string#2}%
+ \gdef#1{#2}%
+ #2}
+
+\def\substitutecommand#1#2%
+ {\gdef#1{\dosubstitutecommand{#1}{#2}}}
+
+\substitutecommand \volgendehoofdstuk {\setupheadnumber[hoofdstuk][+1]}
+\substitutecommand \volgendeparagraaf {\setupheadnumber[paragraaf][+1]}
+\substitutecommand \volgendesubparagraaf {\setupheadnumber[subparagraaf][+1]}
+\substitutecommand \volgendesubsubparagraaf {\setupheadnumber[subsubparagraaf][+1]}
+
+\substitutecommand \volledigeinhoudsopgave \volledigeinhoud
+\substitutecommand \plaatsinhoudsopgave \plaatsinhoud
+\substitutecommand \stelinhoudsopgavein \stelinhoudin
+
+\substitutecommand \streep \onderstreep
+\substitutecommand \strepen \onderstrepen
+
+\substitutecommand \pragmakenmerk \referral
+
+\substitutecommand \definieersynoniem \definesynonyms
+
+\substitutecommand \setupintermezzos \setupintermezzi
+
+\let \Everybodyfont \EveryBodyFont
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-ro.tex b/Master/texmf-dist/tex/context/base/cont-ro.tex
new file mode 100644
index 00000000000..ce718ab7be2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-ro.tex
@@ -0,0 +1,34 @@
+%D \module
+%D [ file=cont-ro,
+%D version=2000.01.09,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ Romanian Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{romanian}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!ro]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!ro] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-sys.ori b/Master/texmf-dist/tex/context/base/cont-sys.ori
new file mode 100644
index 00000000000..a74614bd1bf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-sys.ori
@@ -0,0 +1,178 @@
+%D \module
+%D [ file=cont-sys,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=System Specific Setups,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% Speed up typescript loading, but at the cost of much memory:
+%
+% \preloadtypescripts
+
+% If you want another default font:
+%
+% \let\preloadfonts\relax
+% \usetypescript[palatino][\defaultencoding]
+% \setupbodyfont[palatino,rm,12pt]
+%
+% Please make sure that this defines rm, ss, tt and mm.
+
+% Occasionally we will support both A4 and letter in
+% styles. If you want letter size paper to be the default,
+% uncomment:
+%
+% \enablemode[\systemmodeprefix letter]
+%
+% If you always want to default to letter, you may uncomment
+% the following line, but beware: it makes your documents less
+% portable:
+%
+% \setuppapersize[letter][letter]
+
+% If you want some extras, just uncomment the following
+% line:
+%
+% \usemodule[plus] % experimental code
+%
+% Here you can take care of overloading some (style)
+% defaults. What goes here, depends on your local system.
+
+% The following commands sets the default font encoding:
+%
+% \setupencoding [\s!default=texnansi]
+%
+% or:
+
+\setupencoding [\s!default=ec]
+
+% If you want the default berry names:
+%
+% \usetypescript [berry] [\defaultencoding]
+%
+% or, if you also want other encodings:
+
+\usetypescript [berry] [ec,t5,8r] % texnansi is never present
+
+% If you run into missing font metrics kind of problems,
+% you may want to uncomment:
+%
+% \usetypescript[adobekb] [\defaultencoding]
+
+% You can let \CONTEXT\ load the map files for \PDFTEX.
+
+\autoloadmapfilestrue
+
+% (1) you can prevent loading with:
+%
+% \preloadmapfile[<...somename...>.map]
+%
+% (2) otherwise, use this if you have a fast machine
+%
+% \resetmapfiles \usetypescript [map] [base] [all]
+%
+% (3) or this if it's a slow one:
+
+\resetmapfiles
+
+\donefalse \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>119
+ \donetrue
+\fi \fi \ifdone
+
+ \loadmapfile[original-base.map]
+ \loadmapfile[original-ams-base.map]
+ \loadmapfile[original-public-lm.map]
+
+\else
+
+ \loadmapfile[original-base.map]
+ \loadmapfile[texnansi-base.map]
+ \loadmapfile[ec-base.map]
+ \loadmapfile[qx-base.map]
+ \loadmapfile[t5-base.map]
+ %loadmapfile[il2-base.map]
+ %loadmapfile[pl0-base.map]
+ \loadmapfile[8r-base.map]
+
+ \loadmapfile[original-ams-base.map]
+ \loadmapfile[original-ams-euler.map]
+
+ \loadmapfile[original-public-lm.map]
+ \loadmapfile[texnansi-public-lm.map]
+ \loadmapfile[ec-public-lm.map]
+ \loadmapfile[qx-public-lm.map]
+ \loadmapfile[t5-public-lm.map]
+ %loadmapfile[pl0-public-lm.map]
+ %loadmapfile[il2-public-lm.map]
+
+\fi
+
+% When you have your own fonts installed, you may want to predefine:
+%
+% \usetypescriptfile[type-buy]
+
+% Some styles default to Lucida Bright. You can overload
+% Lucida by Times cum suis. Watch out, the pos collection
+% is not scaled relatively.
+%
+% \definetypescriptsynonym [lbr] [pos]
+
+% Compensate for missing files:
+%
+% \definefontsynonym [gbhei] [gbsong]
+% \definefontsynonym [gbheisl] [gbsong]
+% \definefontsynonym [gbheisl] [gbsong]
+
+% Setting up a global figure path
+%
+% \setupexternalfigures [\c!directory={e:/fig/eps,t:/mine/figs}]
+%
+% Loading a specific special driver:
+%
+% \setupoutput [dviwindo]
+
+% Changing language defaults
+%
+% \setuplanguage
+% [nl]
+% [\c!leftquote=\upperleftsinglesixquote,
+% \c!leftquotation=\upperleftdoublesixquote]
+
+% Loading local preferences, for example
+%
+% \input prag-gen % company styles
+% \input prag-log % more company styles
+%
+% Enabling run time \METAPOST\ (also enable \write18 in
+% texmf.cnf):
+
+% \runMPgraphicstrue
+% \runMPTEXgraphicstrue
+
+% This saves some runtime, but needs a format, which you can
+% make with 'texexec --make --alone metafun'. Make sure that
+% the mem files are moved to the used web2c path (locate with
+% 'kpsewhich plain.mem').
+
+\useMETAFUNformattrue
+
+% This can be a way to get things working on system with
+% name clashes. (Some \TeX's tend do search system wide.)
+
+\protectbufferstrue
+
+% You can enable a more extensive figure searching, but
+% normally this is not really needed and even annoying.
+%
+% \runutilityfiletrue
+
+% So far.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-uk.tex b/Master/texmf-dist/tex/context/base/cont-uk.tex
new file mode 100644
index 00000000000..d900217e1dc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-uk.tex
@@ -0,0 +1,38 @@
+%D \module
+%D [ file=cont-uk,
+%D version=1997.08.19,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ English Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\catcode`\{=1 \catcode`\}=2 \def\defaultinterface{english}
+
+\input context.tex
+
+\unprotect
+
+\setupcurrentlanguage[\s!uk]
+
+\loaduserspecifications
+
+\installlanguage [\s!en] [\c!state=\v!start]
+\installlanguage [\s!uk] [\c!state=\v!start]
+\installlanguage [\s!de] [\c!state=\v!start]
+\installlanguage [\s!fr] [\c!state=\v!start]
+\installlanguage [\s!es] [\c!state=\v!start]
+\installlanguage [\s!nl] [\c!state=\v!start]
+\installlanguage [\s!it] [\c!state=\v!start]
+
+% \setupbodyfont [cmr,ams,rm,12pt]
+%
+% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt]
+
+\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt]
+
+\protect \errorstopmode \dump \endinput
diff --git a/Master/texmf-dist/tex/context/base/cont-usr.ori b/Master/texmf-dist/tex/context/base/cont-usr.ori
new file mode 100644
index 00000000000..67a3f4d37fa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/cont-usr.ori
@@ -0,0 +1,101 @@
+%D \module
+%D [ file=cont-usr,
+%D version=1997.10.05,
+%D title=\CONTEXT\ User Format Specifications,
+%D subtitle=System Specific Setups,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{User Settings}
+
+\unprotect
+
+%D Additional languages can be defined here. Beware of
+%D encoding incompatibilities. Please take a look at the
+%D \type {cont-en.tex}, \type {cont-nl.tex}, enz.\ files
+%D first. Normally you don't have to change a byte. If you
+%D want to play safe, use \typ {texexec --make --alone
+%D --all}.
+
+% \installlanguage [\s!af] [\c!state=\v!start] % afrikaans
+% \installlanguage [\s!ca] [\c!state=\v!start] % catalan
+% \installlanguage [\s!cz] [\c!state=\v!start] % czech
+% \installlanguage [\s!da] [\c!state=\v!start] % danish
+% \installlanguage [\s!de] [\c!state=\v!start] % german
+% \installlanguage [\s!en] [\c!state=\v!start] % english us
+% \installlanguage [\s!es] [\c!state=\v!start] % spanish
+% \installlanguage [\s!fi] [\c!state=\v!start] % finnish
+% \installlanguage [\s!fr] [\c!state=\v!start] % french
+% \installlanguage [\s!hr] [\c!state=\v!start] % croatian
+% \installlanguage [\s!hu] [\c!state=\v!start] % hungarian
+% \installlanguage [\s!it] [\c!state=\v!start] % italian
+% \installlanguage [\s!la] [\c!state=\v!start] % latin
+% \installlanguage [\s!nl] [\c!state=\v!start] % dutch
+% \installlanguage [\s!no] [\c!state=\v!start] % norwegian
+% \installlanguage [\s!pl] [\c!state=\v!start] % polish
+% \installlanguage [\s!pt] [\c!state=\v!start] % portuguese
+% \installlanguage [\s!ro] [\c!state=\v!start] % romanian
+% \installlanguage [\s!ru] [\c!state=\v!start] % russian
+% \installlanguage [\s!sk] [\c!state=\v!start] % slovak
+% \installlanguage [\s!sl] [\c!state=\v!start] % slovenian
+% \installlanguage [\s!sv] [\c!state=\v!start] % swedish
+% \installlanguage [\s!tr] [\c!state=\v!start] % turkish
+% \installlanguage [\s!ua] [\c!state=\v!start] % ukrainian
+% \installlanguage [\s!uk] [\c!state=\v!start] % english uk
+% \installlanguage [\s!vn] [\c!state=\v!start] % vietnamese
+
+% \installlanguage [deo] [\c!state=\v!start] % old german
+
+%D The next lines can be used for setting the language to be
+%D used at startup time.
+
+% \setupcurrentlanguage[\s!af]
+% \setupcurrentlanguage[\s!ca]
+% \setupcurrentlanguage[\s!cz]
+% \setupcurrentlanguage[\s!da]
+% \setupcurrentlanguage[\s!de]
+% \setupcurrentlanguage[\s!en]
+% \setupcurrentlanguage[\s!es]
+% \setupcurrentlanguage[\s!fi]
+% \setupcurrentlanguage[\s!fr]
+% \setupcurrentlanguage[\s!hr]
+% \setupcurrentlanguage[\s!hu]
+% \setupcurrentlanguage[\s!it]
+% \setupcurrentlanguage[\s!la]
+% \setupcurrentlanguage[\s!nl]
+% \setupcurrentlanguage[\s!no]
+% \setupcurrentlanguage[\s!pl]
+% \setupcurrentlanguage[\s!pt]
+% \setupcurrentlanguage[\s!ro]
+% \setupcurrentlanguage[\s!ru]
+% \setupcurrentlanguage[\s!sk]
+% \setupcurrentlanguage[\s!sl]
+% \setupcurrentlanguage[\s!sv]
+% \setupcurrentlanguage[\s!tr]
+% \setupcurrentlanguage[\s!ua]
+
+%D Local font settings can go here. Normally suitable
+%D defaults are already preloaded, almost certainly the
+%D Computer Modern Roman typefaces or some derivate. So, the
+%D next line is only meant as sample, take a look at the
+%D format related files first.
+
+% \definefilesynonym [font-cmr] [font-csr] % czech & slovak
+% \definefilesynonym [font-cmr] [font-plr] % polish
+
+%D In some languages, compound characters, like \type {"e}
+%D are used to get accented and non latin characters.
+
+ \useencoding[fde] % german
+% \useencoding[ffr] % french
+% \useencoding[fro] % romanian
+% \useencoding[fpl] % polish
+
+%D Don't remove the next few lines.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/context.tex b/Master/texmf-dist/tex/context/base/context.tex
new file mode 100644
index 00000000000..0d67d6746f0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/context.tex
@@ -0,0 +1,579 @@
+%D \module
+%D [ file=context,
+%D version=1995.10.10,
+%D title=\CONTEXT,
+%D subtitle=\CONTEXT\ Format Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% dec 07 2001 : cont-en.efmt : 4,035,912
+% aug 07 2004 : cont-en.efmt : 4,928,967 (5 more patterns)
+
+% todo 1: each module english commands
+% todo 2: replace lowlevel *!* by english variants
+% todo 3: make files more independent
+% todo 4: cleanup specials + adapt interface
+% todo 5: remove/replace old stuff (by new stuff, like couplepaper)
+% todo 6: create even more hooks (so that users can overload)
+% todo 7: conditionals
+% todo 8: redesign tui/tuo
+
+\catcode`\{=1 \catcode`\}=2
+
+%D From the next string (which is set by the script that assembles the
+%D distribution) later on we will calculate a number that can be used
+%D by use modules to identify the feature level. Starting with version
+%D 2004.8.30 the low level interface is english. Watch out and adapt
+%D your styles an modules.
+
+\def\contextversion{2005.10.27}
+
+%D Welcome to the main module. When this module is ran through
+%D \type{initex} or \type {tex -i} or \type {whatevertex} using
+%D \type{whatever switch}, the \CONTEXT\ format file is
+%D generated. During this process the user is asked for an
+%D interface language. Supplying \type{dutch} will generate a
+%D dutch version of \CONTEXT, supplying \type {english} will of
+%D course end op in a english version.
+%D
+%D Another option is to use \TEXEXEC:
+%D
+%D \starttyping
+%D texexec --make [--alone] [--engine] [--all]
+%D texexec --make [--alone] [--engine] en nl ... metafun mptopdf
+%D \stoptyping
+%D
+%D More information can be found in the \TEXEXEC\ manual.
+
+%D When you write modules (or extensions) you should avoid
+%D conflicts with existing macro names and mechanisms. If you are
+%D coming from another macro package, don't assume that macros
+%D with the same name are doing the same! \CONTEXT\ was written
+%D from scratch and therefore similarities are often a coincidence
+%D (to some extent one always ends up with the same names for
+%D similar concepts). The underlying models for elementary subsystems
+%D that deal with encodings, languages and fonts probably differ.
+%D
+%D Time has learned that users coming from \LATEX\ should not fall
+%D into thinking that macros like \type {\protect} represent the
+%D same functionality in both systems; actually, due to the way
+%D \CONTEXT\ is set up, some of those macros do complete different
+%D things. Macro packages evolve independent of each other, which
+%D means that code written for one system will not work in another
+%D system, unless it's real generic code.
+%D
+%D An API will become available soon (keep an eye on the ConTeXt
+%D Wiki www.contextgarden.org) and or listen in to the context
+%D mailing list (ntg-context@ntg.nl). Much additional information
+%D can be found at the PRAGMA website (www.pragma-ade.com).
+
+%D First we load the system modules. These implement a lot of
+%D manipulation macros. The first one loads \PLAIN\ \TEX, as
+%D minimal as possible.
+
+\input syst-pln.tex % stripped plain
+\input syst-prm.tex % saved primitives (will be extended)
+
+\input syst-etx.tex % etex
+\input syst-omg.tex % omega-aleph
+\input syst-xtx.tex % xetex
+\input syst-gen.tex
+\input syst-ext.tex
+\input syst-new.tex
+\input syst-con.tex
+\input syst-var.tex
+
+\input math-pln.tex % basic plain math
+
+%D To enable selective loading, we say:
+
+\CONTEXTtrue
+
+%D In order to conveniently load files, we need a few
+%D support modules.
+
+\input supp-ini.tex
+\input supp-fil.tex
+\input supp-dir.tex
+
+%D After this we're ready for the multi||lingual interface
+%D modules.
+
+\input mult-ini.tex
+\input mult-sys.tex
+\input mult-con.tex
+\input mult-com.tex
+
+%D We also use some third party macros. These are loaded by
+%D saying:
+
+\input thrd-ran.tex % based on: Donald Arseneau
+\input thrd-trg.tex % based on: David Carlisle
+
+%D Now we're ready for some general support modules. These
+%D modules implement some basic typesetting functionality.
+
+\input supp-box.tex
+\input supp-mrk.tex
+\input supp-vis.tex
+\input supp-fun.tex
+\input supp-eps.tex
+\input supp-pdf.tex
+\input supp-spe.tex
+\input supp-mps.tex
+\input supp-mpe.tex
+\input supp-tpi.tex
+\input supp-mat.tex
+\input supp-ran.tex
+\input supp-ali.tex
+
+%D The next module deals with language specific typographic
+%D extensions.
+
+\input typo-ini.tex % I must not forget about this module
+
+%D Verbatim typesetting is implemented in a separate class of
+%D modules. The pretty typesetting modules are loaded at run
+%D time.
+
+\input verb-ini.tex % replaces supp-ver
+
+%D The following modules are not sequentially dependent,
+%D i.e. they have ugly dependencies, which will be cleaned
+%D up by adding more overloading.
+
+%D When loading the font, color and special modules, we need a
+%D bit more advanced file handling as well as some general
+%D variables, and features, so next we load:
+
+\input core-var.tex
+\input core-ins.tex
+\input core-fil.tex
+\input core-con.tex
+
+%D We already need some synonyms (patterns). At runtime this
+%D file will be reloaded.
+
+\input cont-fil.tex
+
+%D \CONTEXT\ does not implement its own table handling. We
+%D just go for the best there is and load \TABLE. Just to be
+%D sure we do it here, before we redefine \type{|}.
+
+\input thrd-tab.tex % based on: Michael Wichura / will be reimplemented
+
+%D Here comes the last support modules. They take care of
+%D some language specific things.
+
+\input supp-lan.tex
+\input supp-num.tex
+\input supp-pat.tex % generic pattern loading
+
+%D The next few modules do what their names state. They
+%D load additional definition modules when needed.
+
+\input enco-ini.tex
+\input filt-ini.tex
+\input hand-ini.tex
+\input regi-ini.tex
+\input lang-ini.tex
+\input lang-ctx.tex
+\input lang-dis.tex % after lang-ctx !
+\input unic-ini.tex
+
+\input colo-ini.tex
+\input colo-ext.tex
+
+\input spec-mis.tex
+\input spec-ini.tex
+\input spec-def.tex
+\input spec-var.tex
+
+%D For the moment we load a lot of languages. In the future
+%D we'll have to be more space conservative.
+
+\input lang-spe.tex
+\input lang-lab.tex
+
+\input lang-ger.tex
+\input lang-ita.tex
+\input lang-sla.tex
+
+\input lang-alt.tex
+\input lang-ana.tex
+\input lang-art.tex
+\input lang-bal.tex
+\input lang-cel.tex
+\input lang-grk.tex
+\input lang-ind.tex
+\input lang-ura.tex
+
+\input lang-vn.tex % vietnamese, maybe this belongs in lang-ita
+
+%D All kind of symbols are handled in:
+
+\input symb-ini.tex
+
+%D Next we load some core macro's. These implement the
+%D macros' that are seen by the users. The order of loading
+%D is important, due to dependancies.
+
+\input core-gen.tex
+\input core-new.tex
+\input core-uti.tex
+\input core-mar.tex
+\input core-mak.tex
+\input core-dat.tex
+\input core-grd.tex
+\input core-ver.tex
+\input core-vis.tex
+%input core-con.tex
+\input core-rul.tex
+\input core-tab.tex
+\input core-nav.tex
+\input core-ref.tex
+\input core-obj.tex
+\input core-buf.tex
+\input core-lst.tex
+\input core-num.tex
+\input core-itm.tex
+\input core-des.tex
+\input core-mat.tex
+\input core-syn.tex
+\input core-spa.tex
+\input core-sys.tex
+
+\input page-ini.tex
+\input page-not.tex
+\input page-one.tex
+\input page-lay.tex
+\input page-log.tex
+\input page-txt.tex
+\input page-sid.tex
+\input page-flt.tex
+\input page-mul.tex
+\input page-set.tex
+\input page-lyr.tex
+\input page-mak.tex
+\input page-num.tex
+\input page-lin.tex
+\input page-mar.tex
+\input page-bck.tex
+\input page-app.tex % unfinished
+\input page-flw.tex % experimental: flows
+\input page-spr.tex % experimental: spreads
+
+\input core-job.tex
+
+% so far
+
+\input core-sec.tex
+\input page-imp.tex
+\input core-tbl.tex
+\input core-int.tex
+\input core-ntb.tex
+\input core-ltb.tex
+
+%D Like languages, fonts, encodings and symbols, \METAPOST\
+%D support is also organized in its own class of modules.
+
+\input meta-ini.tex
+\input meta-pag.tex
+\input meta-fig.tex
+
+%D On which the next one depends:
+
+\input core-pos.tex
+\input core-snc.tex
+
+%D A few more languages, that have specifics using core
+%D functionality:
+
+\input lang-chi.tex
+
+%D How about fill||in fields and related stuff?
+
+\input java-ini.tex % needs a cleanup
+\input core-fld.tex % needs a cleanup
+\input core-hlp.tex % will become a m-module
+
+%D Registers can depend on fields, so we load that now.
+
+\input core-reg.tex
+
+%D Of course we do need fonts. There are no \TFM\ files
+%D loaded yet, so the format file is independant of their
+%D content. Here we also redefine \type{\it} as {\it italic}
+%D instead of italian.
+
+\input font-ini.tex
+\input font-uni.tex
+\input font-bfm.tex
+
+\input enco-pfr.tex % uses \everyfont
+
+\input type-ini.tex
+\input type-def.tex
+
+\input prop-ini.tex
+\input prop-lay.tex % needs core-ref.tex
+\input prop-mis.tex
+
+\input math-ini.tex % needs enco-ini.tex
+
+%D Now we're ready for more core modules.
+
+\input core-fnt.tex % todo: document setupinitial !
+\input core-not.tex
+\input core-lnt.tex % to be documented (with idris)
+
+\input core-mis.tex
+
+\input core-fig.tex % after page body
+\input core-par.tex % maybe this should become a m-module
+
+\input core-box.tex
+
+%D Language specific spacing.
+
+\input lang-spa.tex
+
+%D Sorting:
+
+% not yet: \input sort-ini.tex
+
+%D Only the basic XML parser and remapper are part of the core.
+%D These macrosa re loaded last since they overload and|/|or
+%D extend previously defined ones.
+
+\input xtag-ini.tex
+\input xtag-ext.tex
+\input xtag-prs.tex
+\input xtag-map.tex
+\input xtag-exp.tex
+\input xtag-pre.tex
+\input xtag-xsd.tex
+\input xtag-rng.tex
+%input xtag-ent.tex
+
+%D How about this:
+
+\input meta-xml.tex % to be documented
+
+% %D The next two modules implement some additional
+% %D functionality concerning classes of documents and output.
+% %D These modules probably will be replaced some day.
+%
+% \input docs-ini.tex % obsolete
+% \input list-ini.tex % obsolete
+
+%D \TEX\ related logo's are always typeset in a special way.
+%D Here they come:
+
+\input cont-log.tex
+
+%D Defaults go here (more will be moved to this module
+%D later):
+
+\input core-ini.tex
+\input core-def.tex
+
+%D At run time, a few more files are loaded, like:
+%D
+%D \startitemize[packed]
+%D \item \type{cont-sys}: local (system dependant) defaults
+%D \item \type{cont-old}: substitutes for old (obsolete) macros
+%D \item \type{cont-new}: new macro implementations (for testing)
+%D \item \type{cont-fil}: filename and module synonyms
+%D \stopitemize
+
+%D Just to keep the user busy for a while, we say:
+
+\startinterface english
+
+\writestring{This package is based on Plain TeX. It uses an adapted version of the}
+\writestring{extended mark mechanism of J. Fox (1987) and a few parts of the sidefloat}
+\writestring{mechanism of D. Comenetz (1993). Most of D.E. Knuth's Plain TeX}
+\writestring{(\fmtversion) is available and can be used without problems. This package}
+\writestring{uses TaBlE, a package designed and copyrighted by M.J. Wichura (1988).}
+\writestring{Only a few auxiliary files are generated, of which some must be processed}
+\writestring{by TeXUtil (\utilityversion). The current blockversion is \blockversion.}
+
+\stopinterface
+
+\startinterface dutch
+
+\writestring{Dit pakket is gebaseerd op Plain TeX. Er wordt gebruik gemaakt van een}
+\writestring{aangepaste versie van het mark mechanisme van J. Fox (1987) en onderdelen}
+\writestring{van het sidefloat mechanisme van D. Comenetz (1993). De functionaliteit}
+\writestring{van D.E. Knuth's Plain TeX (\fmtversion) is grotendeels beschikbaar en}
+\writestring{kan zonder problemen worden gebruikt. Dit pakket gebruikt TaBlE, ontworpen door}
+\writestring{M.J. Wichura (1988), die ook het auteursrecht bezit. Er worden slechts een}
+\writestring{paar hulpfiles gegenereerd, waarvan er enkele moeten worden bewerkt door}
+\writestring{TeXUtil (\utilityversion). Het blokmechanisme heeft versienummer \blockversion.}
+
+\stopinterface
+
+\startinterface german
+
+\writestring{Dieses Paket basiert auf Plain-TeX und benutzt eine angepasste Version}
+\writestring{des erweiterten mark-Mechanismus von J. Fox (1987) und einige Teile des}
+\writestring{sidefloat-Mechanismus von D. Comenetz (1993). Ein Grossteil D.E. Knuths}
+\writestring{Plain-TeX (\fmtversion) ist verfuegbar und kann ohne Probleme benutzt werden.}
+\writestring{Dieses Paket benutzt TaBlE, ein von M.J. Wichura (1988) erstelltes und}
+\writestring{geschuetztes Paket. Nur einige Hilfsdateien werden erstellt; einige davon}
+\writestring{muessen von TeXUtil (\utilityversion) bearbeitet werden. Die aktuelle Block-}
+\writestring{version ist \blockversion.}
+
+\stopinterface
+
+\startinterface czech
+
+\writestring{Tento balik je zalozen na Plain TeXu. Pouziva prizpusobenou verzi}
+\writestring{rozsireneho znackovaciho mechanismu J. Foxe (1987) a nekolik casti}
+\writestring{sidefloat mechanismu D. Comenetze (1993). Vetsina prikazu Plain TeXu}
+\writestring{D. E. Knutha (\fmtversion) je dostupna a muze byt bez problemu pouzita.}
+\writestring{Tento balik pouziva balik TaBlE, ktery vytvoril M. J. Wichura (1988).}
+\writestring{Je generovano jen nekolik pomocnych souboru, z nichz nektere musi byt}
+\writestring{zpracovany programem TeXUtil (\utilityversion). Aktualni verze}
+\writestring{}
+\writestring{THE CZECH USER INTERFACE IS STILL UNDER DEVELOPMENT!}
+
+\stopinterface
+
+\startinterface italian
+
+\writestring{Questo pacchetto è basato sul Plain TeX. Usa una versione adattata del}
+\writestring{meccanismo di marcatura esteso di J. Fox (1987) ad alcune parti del}
+\writestring{meccanismo per gli oggetti mobili laterali di D. Comenetz (1993).}
+\writestring{La maggior parte del Plain TeX (\fmtversion) di D.E. Knuth è disponibile}
+\writestring{e può essere usata senza problemi. Questo pacchetto usa TaBlE,}
+\writestring{un pacchetto progettato da e con diritti di copia di M.J. Wichura (1988).}
+\writestring{Vengono generati pochi file ausiliari, alcuni dei quali devono essere}
+\writestring{elaborati da TeXUtil (\utilityversion). La versione attuale del blocco}
+\writestring{è \blockversion.}
+\writestring{}
+\writestring{L'INTERFACCIA UTENTE ITALIANA E' ANCORA IN VIA DI SVILUPPO!}
+\writestring{THE ITALIAN USER INTERFACE IS STILL UNDER DEVELOPMENT!}
+
+\stopinterface
+
+\startinterface romanian
+
+\writestring{Acest pachet este bazat pe Plain TeX. Foloseste o versiune adaptata a}
+\writestring{mecanismului extins de marcare a lui J. Fox (1987) si cateva parti a mecanismului }
+\writestring{blocurilor marginale a lui D. Comenetz (1993). Cea mai mare parte a Plain Tex}
+\writestring{(\fmtversion) a lui D.E. Knuth este disponibila si poate fi folosita fara probleme.}
+\writestring{Acest pachet foloseste TaBlE, un pachet proiectat si creat de M.J. Wichura (1988).}
+\writestring{Numai un numar de fisiere auxiliare sunt generate, din care unele trebuie procesate}
+\writestring{de catre TeXUtil (\utilityversion). Versiunea curenta de blocuri este \blockversion.}
+
+\stopinterface
+
+\edef\copyrightversion
+ {Copyright 1990-\the\normalyear\normalspace /
+ PRAGMA ADE / J. Hagen - A.F. Otten}
+
+\writeline\writestring{\copyrightversion}\writeline
+
+% %D Except from english, no hyphenation patterns are loaded
+% %D yet. Users can specify their needs in the next module:
+%
+% \input cont-usr.tex
+
+%D Let's quit this file when doing a \type {cont-..} generation.
+
+\doifparentfileelse{context}{\donothing}{\endinput}
+
+%D Unless we're generating a \type {cont-..} format, we also
+%D do the following.
+
+%D Except from english, no hyphenation patterns are loaded
+%D yet. Users can specify their needs in the next module:
+
+\loaduserspecifications
+
+%D Next we default to the same language as the interface.
+
+\unprotect
+
+\installlanguage [\s!en] [\c!state=\v!start]
+
+\startinterface english
+
+ \installlanguage [\s!uk] [\c!state=\v!start]
+
+\stopinterface
+
+\appendtoks \language [\s!en] \to \everyjob
+\appendtoks \mainlanguage [\s!en] \to \everyjob
+
+\startinterface german
+
+ \installlanguage [\s!de] [\c!state=\v!start]
+
+ \appendtoks \language [\s!de] \to \everyjob
+ \appendtoks \mainlanguage [\s!de] \to \everyjob
+
+\stopinterface
+
+\startinterface dutch
+
+ \installlanguage [\s!nl] [\c!state=\v!start]
+
+ \appendtoks \language [\s!nl] \to \everyjob
+ \appendtoks \mainlanguage [\s!nl] \to \everyjob
+
+\stopinterface
+
+\startinterface czech
+
+ \installlanguage [\s!cz] [\c!state=\v!start]
+
+ \appendtoks \language [\s!cz] \to \everyjob
+ \appendtoks \mainlanguage [\s!cz] \to \everyjob
+
+\stopinterface
+
+\startinterface italian
+
+ \installlanguage [\s!it] [\c!state=\v!start]
+
+ \appendtoks \language [\s!it] \to \everyjob
+ \appendtoks \mainlanguage [\s!it] \to \everyjob
+
+\stopinterface
+
+\startinterface romanian
+
+ \installlanguage [\s!ro] [\c!state=\v!start]
+
+ \appendtoks \language [\s!ro] \to \everyjob
+ \appendtoks \mainlanguage [\s!ro] \to \everyjob
+
+\stopinterface
+
+\protect
+
+%D Finally we (pre)load some fonts.
+
+\setupbodyfont [cmr,rm,12pt]
+
+%D The next hook can be used to generate a local (extended)
+%D format. This file is only searched for at the current
+%D path.
+
+% \readlocfile{cont-def.tex}
+% {\writestatus{loading}{adding extensions from cont-def}}
+% {}
+
+%D Now dumping the format is all that's left to be done.
+
+\errorstopmode \dump
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/core-box.tex b/Master/texmf-dist/tex/context/base/core-box.tex
new file mode 100644
index 00000000000..8875cfe5fd1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-box.tex
@@ -0,0 +1,951 @@
+%D \module
+%D [ file=core-box,
+%D version=2002.04.12,
+%D title=\CONTEXT\ Box Macros,
+%D subtitle=New Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module contains all kind of macros for moving content
+%D around. Many macros here come from other modules, but
+%D depencies made it more clear to isolate them.
+
+% \placeornament
+
+\unprotect
+
+% \definelayer[\v!tekst-2][\c!positie=\v!ja]
+% \definelayer[\v!tekst-1][\c!positie=\v!ja]
+% \definelayer[\v!tekst+1][\c!positie=\v!ja]
+% \definelayer[\v!tekst+2][\c!positie=\v!ja]
+
+% we need to set the size, else we get dimensions depending
+% on the content, which in itsel fis ok, but can lead to loops
+% due to rounding errors (happened in demo-obv)
+
+\definelayer[\v!text-2][\c!position=\v!yes,\c!width=\overlaywidth,\c!height=\overlayheight]
+\definelayer[\v!text-1][\c!position=\v!yes,\c!width=\overlaywidth,\c!height=\overlayheight]
+\definelayer[\v!text+1][\c!position=\v!yes,\c!width=\overlaywidth,\c!height=\overlayheight]
+\definelayer[\v!text+2][\c!position=\v!yes,\c!width=\overlaywidth,\c!height=\overlayheight]
+
+\def\internaltextoverlay#1% will become more generic and installable
+ {\startoverlay % i.e. probably an overlay by itself
+ {\positionoverlay{\v!text#1}} % see later
+ {\composedlayer {\v!text#1}}
+ \stopoverlay}
+
+%\def\internaltextoverlay#1%
+% {\hbox to \zeropoint{\positionoverlay{\v!tekst#1}\hss}%
+% \composedlayer{\v!tekst#1}}
+
+% todo: share info, so that tuo will be smaller
+
+\defineoverlay[\v!text-2][\internaltextoverlay{-2}]
+\defineoverlay[\v!text-1][\internaltextoverlay{-1}]
+\defineoverlay[\v!text+1][\internaltextoverlay{+1}]
+\defineoverlay[\v!text+2][\internaltextoverlay{+2}]
+
+% to be documented
+
+\definelayer[anchor]
+
+\def\anchor
+ {\dosingleargument\doanchor}
+
+\def\doanchor[#1]%
+ {\ifundefined{\??an#1}\@EA\dodoanchor\else\@EA\nonoanchor\fi[#1]}
+
+\def\nonoanchor[#1]%
+ {\getvalue{\??an#1}}
+
+\def\dodoanchor[#1]%
+ {\dotripleempty\dododoanchor[#1]}
+
+\def\dododoanchor
+ {\ifthirdargument
+ \expandafter\dodoanchorT
+ \else
+ \expandafter\dodoanchorS
+ \fi}
+
+\def\dodoanchorS[#1][#2][#3]%
+ {\dodoanchorT[#1][#2][#2]}
+
+\def\dodoanchorT[#1][#2][#3]%
+ {\dowithnextbox
+ {\bgroup
+ \checktextbackgrounds
+ \setbox\scratchbox\null
+ \wd\scratchbox\nextboxwd
+ \ht\scratchbox\nextboxht
+ \dp\scratchbox\nextboxdp
+ \setlayer
+ [anchor]
+ [\c!width=\wd\scratchbox,
+ \c!height=\ht\scratchbox,
+ \c!offset=\!!zeropoint,
+ #2,#3]
+ {\setlayer[#1]{\flushnextbox}}%
+ \framed
+ [#2,
+ \c!background=anchor,
+ \c!offset=\v!overlay,
+ \c!frame=\v!off,
+ #3]
+ {\box\scratchbox}%
+ \egroup}%
+ \vbox}
+
+\def\defineanchor
+ {\doquadrupleempty\dodefineanchor}
+
+\def\dodefineanchor[#1][#2][#3][#4]%
+ {\setvalue{\??an#1}{\dodefinedanchor[#2][#3][#4]}}
+
+\def\dodefinedanchor[#1][#2][#3]%
+ {\def\docommando[##1][##2]%
+ {\ifsecondargument
+ \def\next{\dodoanchorT[#1][#2,##1][#3,##2]}%
+ \else\iffirstargument
+ \def\next{\dodoanchorT[#1][#2,##1][#2,##1]}%
+ \else
+ \def\next{\dodoanchorT[#1][#2][#3]}%
+ \fi\fi
+ \next}%
+ \dodoubleempty\docommando}
+
+\def\@@collectorbox{@@collectorbox}
+
+\def\definecollector
+ {\dodoubleargument\dodefinecollector}
+
+\def\dodefinecollector[#1][#2]%
+ {\ifundefined{\@@collectorbox#1}%
+ \expandafter\newbox\csname\@@collectorbox#1\endcsname
+ \fi
+ \resetcollector[#1]%
+ \setupcollector
+ [#1]
+ [\c!state=\v!start,
+ \c!x=\!!zeropoint,\c!y=\!!zeropoint,
+ \c!offset=\!!zeropoint,\c!rotation=, % geen 0 !
+ \c!hoffset=\!!zeropoint,\c!voffset=\!!zeropoint,
+ \c!location=rb,\c!corner=,#2]}
+
+\def\setupcollector
+ {\dodoubleargument\dosetupcollector}
+
+\def\dosetupcollector[#1][#2]%
+ {\def\docommando##1{\getparameters[\??cb##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\setcollector
+ {\dodoubleargument\dosetcollector}
+
+\def\dosetcollector[#1][#2]%
+ {\bgroup
+ \forgetall
+ \dontcomplain
+ \dowithnextbox
+ {\ifundefined{\@@collectorbox#1}%
+ \writestatus{collector}{unknown layer #1}%
+ \else
+ \dodosetcollector[#1][#2]%
+ \fi
+ \egroup}
+ \hbox}
+
+\def\collectorparameter#1{\csname\??cb\currentcollector#1\endcsname}
+
+\def\dodosetcollector[#1][#2]% todo: keep reference point
+ {\def\currentcollector{#1}%
+ \chardef\collectorbox\csname\@@collectorbox#1\endcsname
+ \getparameters[\??cb#1][#2]%
+ \@@layerxsiz\wd\collectorbox
+ \@@layerysiz\ht\collectorbox
+ \doifvaluesomething{\??cb#1\c!rotation}
+ {\setbox\nextbox\hbox
+ {\rotate
+ [\c!location=\v!high,
+ \c!rotation=\collectorparameter\c!rotation]
+ {\flushnextbox}}}%
+ \advance\@@layerysiz\dp\collectorbox
+ \@@layerxpos\collectorparameter\c!x
+ \advance\@@layerxpos\collectorparameter\c!hoffset
+ \@@layerypos\collectorparameter\c!y
+ \advance\@@layerypos\collectorparameter\c!voffset
+ \doifelse\v!middle{\collectorparameter\c!corner}
+ {\ifdim\@@layerxsiz>\zeropoint
+ \advance\@@layerxpos.5\@@layerxsiz
+ \fi
+ \ifdim\@@layerysiz>\zeropoint
+ \advance\@@layerypos.5\@@layerysiz
+ \fi}%
+ {\ExpandBothAfter\doifinset\v!bottom{\collectorparameter\c!corner}
+ {\ifdim\@@layerysiz>\zeropoint
+ \advance\@@layerypos-\@@layerysiz
+ \@@layerypos-\@@layerypos
+ \fi}%
+ \ExpandBothAfter\doifinset\v!right{\collectorparameter\c!corner}
+ {\ifdim\@@layerxsiz>\zeropoint
+ \advance\@@layerxpos-\@@layerxsiz
+ \@@layerxpos-\@@layerxpos
+ \fi}}%
+ \setbox\nextbox\hbox
+ {\alignedbox[\collectorparameter\c!location]\vbox{\flushnextbox}}%
+ \boxmaxdepth\zeropoint % really needed, nice example
+ \global\advance\boxhdisplacement\@@layerxpos
+ \ifdim\boxhdisplacement<\zeropoint
+ \global\setbox\collectorbox\hbox
+ {\hskip-\boxhdisplacement
+ \box\collectorbox}%
+ \fi
+ \global\advance\boxvdisplacement\@@layerypos
+ \ifdim\boxvdisplacement<\zeropoint
+ \global\setbox\collectorbox\hbox
+ {\lower-\boxvdisplacement
+ \box\collectorbox}%
+ \fi
+ \@@layerxsiz\wd\collectorbox
+ \@@layerysiz\ht\collectorbox
+ \advance\@@layerysiz\dp\collectorbox
+ \global\setbox\collectorbox\hbox
+ {\box\collectorbox
+ \hskip-\@@layerxsiz
+ \hskip\@@layerxpos\relax
+ \ifdim\boxhdisplacement<\zeropoint
+ \hskip-\boxhdisplacement
+ \fi
+ \lower\@@layerypos\hbox
+ {\ifdim\boxvdisplacement<\zeropoint
+ \lower-\boxvdisplacement\flushnextbox
+ \else
+ \flushnextbox
+ \fi}}%
+ % combine height and depth into depth only (later flushed as height)
+ \global\setbox\collectorbox\hbox
+ {\lower\ht\collectorbox\box\collectorbox}%
+ % just to be sure
+ \ifdim\wd\collectorbox<\@@layerxsiz
+ \global\wd\collectorbox\@@layerxsiz
+ \fi}
+
+\def\flushcollector[#1]%
+ {\ifundefined{\@@collectorbox#1}%
+ \writestatus{collector}{unknown collector #1}%
+ \else
+ \doifnotvalue{\??cb#1\c!state}\v!stop
+ {\vbox
+ {\hbox
+ {\doifelsevalue{\??cb#1\c!state}\v!repeat
+ {\let\next\copy}{\let\next\box}%
+ \raise\dp\csname\@@collectorbox#1\endcsname
+ \next\csname\@@collectorbox#1\endcsname}}}%
+ \fi}
+
+\def\composedcollector#1{\flushcollector[#1]}
+
+\def\resetcollector[#1]%
+ {\ifundefined{\@@collectorbox#1}\else
+ \global\setbox\csname\@@collectorbox#1\endcsname\emptybox
+ \fi}
+
+\def\adaptcollector
+ {\dodoubleargument\doadaptcollector}
+
+\def\doadaptcollector[#1][#2]%
+ {\bgroup
+ \def\currentcollector{#1}%
+ \chardef\collectorbox\csname\@@collectorbox#1\endcsname
+ \getparameters
+ [\??cb#1][\c!voffset=\zeropoint,\c!hoffset=\zeropoint,#2]%
+ \scratchdimen\wd\collectorbox
+ \advance\scratchdimen\collectorparameter\c!hoffset
+ \global\wd\collectorbox\scratchdimen
+ \scratchdimen\ht\collectorbox
+ \advance\scratchdimen\collectorparameter\c!voffset
+ \global\ht\collectorbox\scratchdimen
+ \egroup}
+
+
+%\definecollector[test]
+%\setcollector[test]
+% [location=rb]
+% {\externalfigure[koe][frame=on,width=3cm]}
+%\setcollector[test]
+% [corner={right,bottom},location={left,top}]
+% {\framed{gans}}
+%\composedcollector{test}
+
+\definecollector
+ [caption]
+
+\def\collectedtext
+ {\dodoubleempty\docollectedtext}
+
+\def\docollectedtext[#1][#2]#3%
+ {\bgroup
+ \dowithnextbox
+ {\setcollector
+ [caption]
+ {\flushnextbox}%
+ \setcollector
+ [caption][#1]
+ {\getparameters[\??du][#2]%
+ \dosetfontattribute\??du\c!style\setupinterlinespace
+ \framed % watch the special setting of kader/overlay
+ [\c!frame=\v!overlay,#2]
+ {\doattributes\??du\c!style\c!color{#3}}}%
+ \composedcollector{caption}%
+ \egroup}%
+ \hbox}
+
+% \collectedtext
+% [corner={right,bottom},location={left,top}]
+% [background=color,backgroundcolor=white,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+%
+% \collectedtext
+% [rotation=90,corner={right,bottom},location={right,top}]
+% [frame=on,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+%
+% \collectedtext
+% [rotation=90,corner={left,bottom},location={left,top}]
+% [frame=on,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+
+\definelayer
+ [caption]
+
+\def\layeredtext
+ {\dodoubleempty\dolayeredtext}
+
+\def\dolayeredtext[#1][#2]#3%
+ {\bgroup
+ \dowithnextbox
+ {\!!widtha \nextboxwd
+ \!!heighta\nextboxht
+ \bgroup % preserve \nextbox
+ \setuplayer
+ [caption]
+ [\c!width=\!!widtha,\c!height=\!!heighta]%
+ \setlayer
+ [caption]
+ [#1]
+ {\getparameters[\??du][#2]%
+ \dosetfontattribute\??du\c!style\setupinterlinespace
+ \framed
+ [\c!frame=\v!overlay,,#2]
+ {\doattributes\??du\c!style\c!color{#3}}}%
+ \egroup
+ \framed
+ [\c!offset=\v!overlay,
+ \c!frame=\v!off,
+ \c!background={\v!foreground,caption},
+ \c!width=\!!widtha,
+ \c!height=\!!heighta]
+ {\flushnextbox}%
+ \egroup}%
+ \hbox}
+
+% \layeredtext
+% [corner={right,bottom},location={left,top}]
+% [background=color,backgroundcolor=white,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+%
+% \layeredtext
+% [rotation=90,corner={right,bottom},location={right,top}]
+% [frame=on,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+%
+% \layeredtext
+% [rotation=90,corner={left,bottom},location={left,top}]
+% [frame=on,offset=0pt]
+% {gans}
+% {\externalfigure[koe][width=3cm]}
+
+\def\ornamenttext
+ {\dodoubleempty\doornamenttext}
+
+\def\doornamenttext[#1][#2]%
+ {\bgroup
+ \doifassignmentelse{#1}
+ {\getparameters[\s!dummy][\c!alternative=\v!a,#1]%
+ \doifelse\dummyalternative\v!a
+ {\egroup\collectedtext}%
+ {\egroup\layeredtext }%
+ [#1][#2]}%
+ {\egroup\getvalue{#1}}}
+
+\def\defineornament
+ {\dotripleempty\dodefineornament}
+
+\def\dodefineornament[#1][#2][#3]%
+ {\setvalue{#1}{\doornamenttext[#2][#3]}}
+
+% \defineornament
+% [affiliation]
+% [rotation=90,corner={right,bottom},location={right,top},
+% hoffset=-.25ex]
+% [frame=on,background=color,backgroundcolor=red,offset=0pt]
+%
+% \ruledhbox{\affiliation{gans}{\externalfigure[koe][width=3cm]}}
+%
+% \defineornament
+% [affiliation]
+% [rotation=90,corner={right,bottom},location={right,top},
+% hoffset=-.25ex,alternative=b]
+% [frame=on,background=color,backgroundcolor=red,offset=0pt]
+%
+% \ruledhbox{\affiliation{gans}{\externalfigure[koe][width=3cm]}}
+%
+% \defineornament
+% [affiliation]
+% [rotation=90,corner={right,bottom},location={left,top},
+% hoffset=.25ex,voffset=.25ex,alternative=a]
+% [background=color,style=\ss\tfxx,backgroundcolor=white,offset=0pt]
+%
+% \affiliation{photo}{\externalfigure[molen][width=3cm]}
+%
+% \defineornament
+% [affiliation]
+% [rotation=90,corner={right,bottom},location={left,top},
+% hoffset=.25ex,voffset=.25ex,alternative=b]
+% [background=color,style=\ss\tfxx,backgroundcolor=white,offset=0pt]
+%
+% \affiliation{drawing}{\externalfigure[hakker][width=3cm]}
+
+% pas op: aanpassen aan nieuwe layer hoek ankers en columnset
+
+\newcounter\nofbleeds % per pag
+
+\def\setupbleeding
+ {\dodoubleempty\getparameters[\??bg]}
+
+\setupbleeding
+ [\c!location=l,
+ \c!stretch=\v!yes,
+ \c!width=3cm,
+ \c!height=3cm,
+ \c!offset=2mm,
+ \c!page=\v!no,
+ \c!voffset=\@@bgoffset,
+ \c!hoffset=\@@bgoffset]
+
+\def\bleed
+ {\dosingleempty\dobleed}
+
+
+\def\bleedwidth {\the\hsize}%
+\def\bleedheight{\the\vsize}%
+
+\def\dobleed[#1]#2%
+ {\hbox\bgroup
+ \xdef\bleedwidth {\the\hsize}%
+ \xdef\bleedheight{\the\vsize}%
+ \doglobal\increment\nofbleeds
+ \getparameters[\??bg][#1]%
+ \!!doneafalse % left
+ \!!donebfalse % right
+ \!!donecfalse % top
+ \!!donedfalse % bottom
+ % replace this part ! todo: default location
+ \processaction
+ [\@@bglocation]
+ [ t=>\!!donectrue\let\@@bghoffset\!!zeropoint,
+ b=>\!!donedtrue\let\@@bghoffset\!!zeropoint,
+ l=>\!!doneatrue\let\@@bgvoffset\!!zeropoint,
+ r=>\!!donebtrue\let\@@bgvoffset\!!zeropoint,
+ bl=>\!!doneatrue\!!donedtrue,
+ lb=>\!!doneatrue\!!donedtrue,
+ br=>\!!donebtrue\!!donedtrue,
+ rb=>\!!donebtrue\!!donedtrue,
+ tl=>\!!doneatrue\!!donectrue,
+ lt=>\!!doneatrue\!!donectrue,
+ tr=>\!!donebtrue\!!donectrue,
+ rt=>\!!donebtrue\!!donectrue]%
+ \doifelse\@@bgstretch\v!yes\donetrue\donefalse
+ \scratchdimen\@@bgwidth
+ \ifdone
+ \if!!donea
+ \advance\scratchdimen\MPx{\??bg:\nofbleeds}%
+ \else\if!!doneb
+ \scratchdimen\paperwidth
+ \advance\scratchdimen-\MPx{\??bg:\nofbleeds}%
+ \fi\fi
+ \fi
+ \advance\scratchdimen\@@bghoffset
+ \xdef\bleedwidth{\the\scratchdimen}%
+ \scratchdimen\@@bgheight
+ \ifdone
+ \if!!donec
+ \scratchdimen\paperheight
+ \advance\scratchdimen-\MPy{\??bg:\nofbleeds}%
+ \else\if!!doned
+ \advance\scratchdimen\MPy{\??bg:\nofbleeds}%
+ \fi\fi
+ \fi
+ \advance\scratchdimen\@@bgvoffset
+ \xdef\bleedheight{\the\scratchdimen}%
+ \hsize\bleedwidth
+ \vsize\bleedheight
+ \setbox\scratchbox\hbox{#2}%
+ \doif\@@bgpage\v!yes
+ {\setbox\scratchbox\topskippedbox{\box\scratchbox}}%
+ \setbox\scratchbox\hbox to \@@bgwidth
+ {\if!!donea\hss\fi\box\scratchbox\if!!doneb\hss\fi}%
+ \if!!doned
+ \setbox\scratchbox\hbox
+ {\lower\bleedheight\hbox{\raise\@@bgheight\box\scratchbox}}%
+ \fi
+ \wd\scratchbox\@@bgwidth
+ \ht\scratchbox\@@bgheight
+ \dp\scratchbox\zeropoint
+ \ifdone
+ \hpos{\??bg:\nofbleeds}{\box\scratchbox}%
+ \else
+ \box\scratchbox
+ \fi
+ \egroup}
+
+\setupbleeding[\c!stretch=\v!yes]
+
+\defineexternalfigure[bleed][\c!width=\bleedwidth,\c!height=\bleedheight]
+
+% \placefigure[left]{none}
+% {\bleed[width=5cm,height=3cm,location=lt]{\externalfigure[koe][bleed]}}
+%
+% \input tufte
+%
+% \placefigure[left]{none}
+% {\bleed[width=5cm,height=3cm,location=l]{\externalfigure[koe][bleed]}}
+%
+% \input tufte
+%
+% \placefigure[right]{none}
+% {\bleed[width=5cm,height=3cm,location=r]{\externalfigure[koe][bleed]}}
+%
+% \input tufte
+%
+% \placesomefloat[right]{none}
+% {\bleed[width=5cm,height=3cm,location=rb]{\externalfigure[koe][bleed]}}
+%
+% \input tufte
+%
+% \placefigure
+% [top,none]
+% {} % no caption
+% {\bleed
+% [hoffset=-\backspace,
+% voffset=3mm,
+% width=0cm,
+% height=6\lineheight,
+% page=yes, % correct for topskip
+% location=lt]
+% {\externalfigure[koe][bleed][frame=on]}}
+
+% \setlayerframed[layer id][layer settings][framed setting]{data}
+% \setlayerframed[layer id][combined settings]{data}
+
+\def\setlayerframed
+ {\dotripleempty\dosetlayerframed}
+
+\def\dosetlayerframed
+ {\ifthirdargument
+ \expandafter\dosetlayerframedT
+ \else
+ \expandafter\dosetlayerframedS
+ \fi}
+
+\def\dosetlayerframedT[#1][#2][#3]%
+ {\dowithnextbox{\setlayer[#1][#2]{\flushnextbox}}%
+ \hbox\framed[#3]}
+
+\def\dosetlayerframedS[#1][#2][#3]%
+ {\dowithnextbox
+ {\setlayer
+ [#1]
+ [\c!width=\nextboxwd,\c!height=\nextboxht,
+ \c!offset=\!!zeropoint,#2]
+ {\flushnextbox}}%
+ \hbox\framed[\c!location=\v!normal,#2]}
+
+\def\setlayertext
+ {\dotripleempty\dosetlayertext}
+
+\def\dosetlayertext[#1][#2][#3]%
+ {\bgroup
+ \getparameters
+ [\??lx]
+ [\c!align=,
+ \c!width=\hsize,
+ \c!color=,
+ \c!style=,
+ #3]%
+ \dowithnextboxcontent
+ {\forgetall
+ \hsize\@@lxwidth
+ \expanded{\setupalign[\@@lxalign]}%
+ \dosetfontattribute\??lx\c!style}
+ {\setlayer[#1][#2]{\strut\color[\@@lxcolor]{\flushnextbox}}%
+ \egroup}%
+ \vtop}
+
+% \setupbackgrounds
+% [page]
+% [background=pagefigures]
+%
+% \definelayer
+% [pagefigures]
+% [x=-2mm,
+% y=-2mm,
+% width=\paperwidth,
+% height=\paperheight]
+%
+% \definelayerpreset [lefttop] [corner={left,top},location={right,bottom}]
+% \definelayerpreset [righttop] [corner={right,top},location={left,bottom}]
+% \definelayerpreset [leftbottom] [corner={left,bottom},location={right,top}]
+% \definelayerpreset [rightbottom] [corner={right,bottom},location={left,top}]
+% \definelayerpreset [middle] [corner=middle,location=middle]
+%
+% \setlayer[pagefigures][preset=lefttop]
+% \setlayer[pagefigures][preset=righttop]
+% \setlayer[pagefigures][preset=leftbottom]
+% \setlayer[pagefigures][preset=rightbottom]
+
+\definelayerpreset
+ [\v!left\v!top]
+ [\c!corner={\v!left,\v!top},\c!location={\v!right,\v!bottom}]
+
+\definelayerpreset
+ [\v!right\v!top]
+ [\c!corner={\v!right,\v!top},\c!location={\v!left,\v!bottom}]
+
+\definelayerpreset
+ [\v!left\v!bottom]
+ [\c!corner={\v!left,\v!bottom},\c!location={\v!right,\v!top}]
+
+\definelayerpreset
+ [\v!right\v!bottom]
+ [\c!corner={\v!right,\v!bottom},\c!location={\v!left,\v!top}]
+
+\definelayerpreset
+ [\v!middle]
+ [\c!corner=\v!middle,\c!location=\v!middle]
+
+\definelayerpreset
+ [\v!middle\v!top]
+ [\c!location=\v!bottom,\c!hoffset=.5\layerwidth]
+
+\definelayerpreset
+ [\v!middle\v!bottom]
+ [\c!location=\v!top,\c!hoffset=.5\layerwidth,\c!voffset=\layerheight]
+
+\definelayerpreset
+ [\v!middle\v!left]
+ [\c!location=\v!right,\c!voffset=.5\layerwidth]
+
+\definelayerpreset
+ [\v!middle\v!right]
+ [\c!location=\v!left,\c!hoffset=\layerwidth,\c!voffset=.5\layerheight]
+
+\definelayerpreset
+ [\v!middle\v!top]
+ [\c!location=\v!bottom,\c!corner=\v!top,\c!dx=.5\layerwidth]
+
+\definelayerpreset
+ [\v!middle\v!bottom]
+ [\c!location=\v!top,\c!corner=\v!bottom,\c!dx=.5\layerwidth]
+
+\definelayerpreset
+ [\v!middle\v!left]
+ [\c!location=\v!right,\c!corner=\v!left,\c!dy=.5\layerwidth]
+
+\definelayerpreset
+ [\v!middle\v!right]
+ [\c!location=\v!left,\c!corner=\v!right,\c!dy=.5\layerheight]
+
+\def\alignedbox
+ {\dodoubleempty\doalignedbox[]}
+
+% \def\doalignedbox[#1][#2]%
+% {\bgroup
+% %\let\iftraceboxplacement\iftracelayers % ugly
+% \dowithnextbox
+% {\let\next\middlebox
+% \processaction
+% [#2]
+% [ t=>\let\next\topbox , b=>\let\next\bottombox ,
+% l=>\let\next\leftbox , r=>\let\next\rightbox ,
+% bl=>\let\next\bottomleftbox,br=>\let\next\bottomrightbox,
+% tl=>\let\next\topleftbox ,tr=>\let\next\toprightbox ,
+% lt=>\let\next\lefttopbox ,lb=>\let\next\leftbottombox ,
+% rt=>\let\next\righttopbox ,rb=>\let\next\rightbottombox]%
+% \next{\flushnextbox}%
+% \egroup}#1}
+
+\def\doalignedbox[#1][#2]%
+ {\bgroup
+ %\let\iftraceboxplacement\iftracelayers % ugly
+ \dowithnextbox
+ {\serializecommalist[#2]%
+ \executeifdefined{\??ab\??ab\serializedcommalist}\middlebox{\flushnextbox}%
+ \egroup}#1}
+
+\setvalue{\??ab\??ab }{\middlebox}
+\setvalue{\??ab\??ab\v!middle }{\middlebox}
+\setvalue{\??ab\??ab\v!left }{\leftbox }
+\setvalue{\??ab\??ab\v!right }{\rightbox }
+\setvalue{\??ab\??ab\v!bottom }{\bottombox}
+\setvalue{\??ab\??ab\v!top }{\topbox }
+
+\setvalue{\??ab\??ab\v!middle\v!middle}{\middlebox}
+\setvalue{\??ab\??ab\v!left \v!top }{\lefttopbox}
+\setvalue{\??ab\??ab\v!left \v!bottom}{\leftbottombox}
+\setvalue{\??ab\??ab\v!right \v!top }{\righttopbox}
+\setvalue{\??ab\??ab\v!right \v!bottom}{\rightbottombox}
+\setvalue{\??ab\??ab\v!top \v!left }{\topleftbox}
+\setvalue{\??ab\??ab\v!bottom\v!left }{\bottomleftbox}
+\setvalue{\??ab\??ab\v!top \v!right }{\toprightbox}
+\setvalue{\??ab\??ab\v!bottom\v!right }{\bottomrightbox}
+
+\setvalue{\??ab\??ab c}{\middlebox}
+\setvalue{\??ab\??ab l}{\leftbox}
+\setvalue{\??ab\??ab r}{\rightbox}
+\setvalue{\??ab\??ab b}{\bottombox}
+\setvalue{\??ab\??ab t}{\topbox}
+
+\setvalue{\??ab\??ab lt}{\lefttopbox}
+\setvalue{\??ab\??ab lb}{\leftbottombox}
+\setvalue{\??ab\??ab rt}{\righttopbox}
+\setvalue{\??ab\??ab rb}{\rightbottombox}
+\setvalue{\??ab\??ab tl}{\topleftbox}
+\setvalue{\??ab\??ab bl}{\bottomleftbox}
+\setvalue{\??ab\??ab tr}{\toprightbox}
+\setvalue{\??ab\??ab br}{\bottomrightbox}
+
+\setvalue{\??ab\??ab m}{\middlebox}
+
+% The next ones were desparately needed by Vit Zyka (see
+% \type {supp-box} for definitions).
+
+\setvalue{\??ab\??ab g}{\baselinemiddlebox}
+\setvalue{\??ab\??ab gl}{\baselineleftbox}
+\setvalue{\??ab\??ab gc}{\baselinemiddlebox}
+\setvalue{\??ab\??ab gr}{\baselinerightbox}
+
+\setvalue{\??ab\??ab \v!line }{\baselinemiddlebox} % \v!grid is taken
+\setvalue{\??ab\??ab \v!line\v!left }{\baselineleftbox}
+\setvalue{\??ab\??ab \v!line\v!middle}{\baselinemiddlebox}
+\setvalue{\??ab\??ab \v!line\v!right}{\baselinerightbox}
+
+\def\offsetbox
+ {\dodoubleempty\dooffsetbox[]}
+
+% left/right/top/bottomoffset -> dimensions change
+% x/y | method=fixed -> dimensions don't change
+
+\def\dooffsetbox[#1][#2]%
+ {\bgroup
+ \dowithnextbox
+ {\getparameters[\??ox]
+ [\c!x=\zeropoint,
+ \c!y=\zeropoint,
+ \c!width=\nextboxwd,
+ \c!height=\nextboxht,
+ \c!depth=\nextboxdp,
+ \c!location=,
+ \c!leftoffset=\zeropoint,
+ \c!rightoffset=\zeropoint,
+ \c!topoffset=\zeropoint,
+ \c!bottomoffset=\zeropoint,
+ \c!method=,
+ #2]%
+ \donefalse
+ \ifdim\@@oxleftoffset =\zeropoint\else\donetrue\fi
+ \ifdim\@@oxrightoffset=\zeropoint\else\donetrue\fi
+ \ifdim\@@oxtopoffset =\zeropoint\else\donetrue\fi
+ \ifdim\@@oxbottomoffset =\zeropoint\else\donetrue\fi
+ \ifdone
+ \doif\@@oxmethod\v!fixed % new
+ {\ifdim\@@oxleftoffset=\zeropoint
+ \ifdim\@@oxrightoffset=\zeropoint \else
+ \scratchdimen-\@@oxrightoffset
+ \edef\@@oxx{\the\scratchdimen}%
+ \let\@@oxrightoffset\zeropoint
+ \fi
+ \else
+ \let\@@oxx\@@oxleftoffset
+ \let\@@oxleftoffset\zeropoint
+ \fi
+ \ifdim\@@oxtopoffset=\zeropoint
+ \ifdim\@@oxbottomoffset=\zeropoint \else
+ \scratchdimen-\@@oxbottomoffset
+ \edef\@@oxy{\the\scratchdimen}%
+ \let\@@oxbottomoffset\zeropoint
+ \fi
+ \else
+ \let\@@oxy\@@oxtopoffset
+ \let\@@oxtopoffset\zeropoint
+ \fi
+ \donefalse}%
+ \fi
+ \ifdone
+ \setbox\nextbox\vbox
+ {\forgetall\offinterlineskip
+ \vskip\@@oxtopoffset
+ \hbox
+ {\hskip\@@oxleftoffset
+ \flushnextbox
+ \hskip\@@oxrightoffset}%
+ \vskip\@@oxbottomoffset}%
+ \scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \nextboxht\scratchdimen
+ \nextboxdp\zeropoint
+ \fi
+ \freezedimenmacro\@@oxwidth
+ \freezedimenmacro\@@oxheight
+ \freezedimenmacro\@@oxdepth
+ \setbox\nextbox\hbox
+ {\hskip\@@oxx\lower\@@oxy\hbox
+ {\doifelsenothing\@@oxlocation
+ {\flushnextbox}
+ {\alignedbox[\@@oxlocation]\hbox{\flushnextbox}}}}%
+ \nextboxwd\@@oxwidth
+ \nextboxht\@@oxheight
+ \nextboxdp\@@oxdepth
+ \flushnextbox
+ \egroup}#1}
+
+% \useMPlibrary[pre] \setupbackgrounds[page][background=pagegrid]
+%
+% \placefigure[left,none]{}{\offset[leftoffset=1cm]{\externalfigure[koe][breedte=3cm]}}
+% \input tufte
+% \placefigure[left,none]{}{\offset[rightoffset=1cm]{\externalfigure[koe][breedte=3cm]}}
+% \input tufte
+% \placefigure[left,none]{}{\offset[topoffset=1cm]{\externalfigure[koe][breedte=3cm]}}
+% \input tufte
+% \placefigure[left,none]{}{\offset[bottomoffset=1cm]{\externalfigure[koe][breedte=3cm]}}
+% \input tufte
+
+\def\offset {\dodoubleempty\dooffsetbox [\hbox]} % yes or no
+\def\aligned{\dosingleempty\doalignedbox[\hbox]} % yes or no
+
+%\ruledhbox{\offsetbox[x=-1cm,y=-1cm,location=c]
+% {\framed[width=4cm,height=4cm]{x}}}
+
+\def\dotabbed#1#2#3#4%
+ {\dontleavehmode
+ \bgroup
+ \setbox\scratchbox\hbox{#3}%
+ \hbox to \wd\scratchbox{#1#4#2}%
+ \egroup}
+
+\def\ltabbed{\dotabbed\relax\hss}
+\def\rtabbed{\dotabbed\hss \relax}
+\def\ctabbed{\dotabbed\hss \hss} \let\mtabbed\ctabbed
+
+% \ltabbed{\romeins{3}}{\romeins{1}} test \endgraf
+% \ltabbed{\romeins{3}}{\romeins{2}} test \endgraf
+% \ltabbed{\romeins{3}}{\romeins{3}} test \endgraf
+%
+% \rtabbed{\romeins{3}}{\romeins{1}} test \endgraf
+% \rtabbed{\romeins{3}}{\romeins{2}} test \endgraf
+% \rtabbed{\romeins{3}}{\romeins{3}} test \endgraf
+%
+% \ctabbed{\romeins{3}}{\romeins{1}} test \endgraf
+% \ctabbed{\romeins{3}}{\romeins{2}} test \endgraf
+% \ctabbed{\romeins{3}}{\romeins{3}} test \endgraf
+
+% alternative, if done, then other name
+%
+% \def\dotabbed#1#2#3#4%
+% {\dontleavehmode
+% \bgroup
+% \scratchdimen\zeropoint
+% \def\docommando##1%
+% {\setbox\scratchbox\hbox{##1}%
+% \ifdim\wd\scratchbox>\scratchdimen
+% \scratchdimen\wd\scratchbox
+% \fi}%
+% \processcommalist[#3]\docommando
+% \hbox to \scratchdimen{#1#4#2}%
+% \egroup}
+%
+% \def\ltabbed{\dotabbed\relax\hss}
+% \def\rtabbed{\dotabbed\hss \relax}
+% \def\ctabbed{\dotabbed\hss \hss} \let\mtabbed\ctabbed
+%
+% \ltabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{10}} test \endgraf
+% \ltabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{15}} test \endgraf
+% \ltabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{2000}} test \endgraf
+%
+% \rtabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{10}} test \endgraf
+% \rtabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{15}} test \endgraf
+% \rtabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{2000}} test \endgraf
+%
+% \ctabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{10}} test \endgraf
+% \ctabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{15}} test \endgraf
+% \ctabbed{\romeins{10},\romeins{2000},\romeins{15}}{\romeins{2000}} test \endgraf
+
+% to be documented
+
+\def\phantombox[#1]%
+ {\hbox\bgroup
+ \getparameters
+ [\??ol]
+ [\c!width=\zeropoint,%
+ \c!height=\zeropoint,%
+ \c!depth=\zeropoint,#1]%
+ \setbox\scratchbox\null
+ \wd\scratchbox\@@olwidth
+ \ht\scratchbox\@@olheight
+ \dp\scratchbox\@@oldepth
+ \box\scratchbox
+ \egroup}
+
+% \backgroundimage{1}{\hsize}{\vsize}{\externalfigure[cow][\c!width=3cm]}
+
+\def\backgroundimage#1#2#3% repeat hsize vsize
+ {\bgroup
+ \dowithnextbox
+ {\ifcase#1\relax
+ % just one
+ \else
+ \scratchdimen#2\divide\scratchdimen\nextboxwd\count0\scratchdimen\advance\count0\plusone
+ \scratchdimen#3\divide\scratchdimen\nextboxht\count2\scratchdimen\advance\count2\plusone
+ % to be considered, probably methods
+ \ifcase#1\or % x and y
+ \setbox\nextbox\hbox{\dorecurse{\count0}{\copy\nextbox}}%
+ \setbox\nextbox\vbox{\dorecurse{\count2}{\copy\nextbox\endgraf}}%
+ \or % x
+ \setbox\nextbox\hbox{\dorecurse{\count0}{\copy\nextbox}}%
+ \or % y
+ \setbox\nextbox\vbox{\dorecurse{\count2}{\copy\nextbox\endgraf}}%
+ \fi
+ \fi
+ \ifdim\nextboxwd>#2\relax
+ \setbox\nextbox\hbox to #2{\hss\flushnextbox\hss}%
+ \setbox\scratchbox\hbox{\expanded{\clip[\c!width=#2,\c!height=\the\nextboxht]{\box\scratchbox}}}%
+ \fi
+ \ifdim\nextboxht>#3\relax
+ \setbox\nextbox\vbox to #3{\vss\flushnextbox\vss}%
+ \setbox\nextbox\hbox{\expanded{\clip[\c!width=\the\nextboxwd,\c!height=#3]{\flushnextbox}}}%
+ \fi
+ \flushnextbox
+ \egroup}%
+ \hbox}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-buf.tex b/Master/texmf-dist/tex/context/base/core-buf.tex
new file mode 100644
index 00000000000..0aab656f9d8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-buf.tex
@@ -0,0 +1,1036 @@
+%D \module
+%D [ file=core-buf,
+%D version=2000.01.05,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Buffers and Blockmoves,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% investigate etex's \readline and \scantokens
+
+\writestatus{loading}{Context Core Macros / Buffers and Blockmoves}
+
+\startmessages dutch library: textblocks
+ title: tekstblokken
+ 1: nieuwe versie, tweede run nodig
+ 2: wegschrijven blokken naar --
+ 3: inlezen blokken uit --
+ 4: er is een tweede run nodig
+ 5: -- niet verborgen
+ 6: -- verborgen en verwerkt
+ 7: -- verborgen
+ 8: -- gehandhaafd
+ 9: -- niet gehandhaafd
+ 10: -- geladen en verwerkt
+ 11: -- geladen en geplaatst
+ 12: -- overgeslagen
+\stopmessages
+
+\startmessages english library: textblocks
+ title: textblocks
+ 1: new version, second pass needed
+ 2: writing blocks to --
+ 3: reading blocks from --
+ 4: second pass needed
+ 5: -- not hidden
+ 6: -- hidden and processed
+ 7: -- hidden
+ 8: -- typeset
+ 9: -- not typeset
+ 10: -- loaded and processed
+ 11: -- loaded and typeset
+ 12: -- skipped
+\stopmessages
+
+\startmessages german library: textblocks
+ title: textblock
+ 1: neue Version, zweiter Durchlauf benoetigt
+ 2: schreibe Bloecke zu --
+ 3: lese Bloecke von --
+ 4: zweiter Durchlauf benoetigt
+ 5: -- nicht verborgen
+ 6: -- verborgen und verarbeitet
+ 7: -- verborgen
+ 8: -- gesetzt
+ 9: -- nicht gesetzt
+ 10: -- geladen und verarbeitet
+ 11: -- geladen und gesetzt
+ 12: -- ausgelassen
+\stopmessages
+
+\startmessages czech library: textblocks
+ title: textovyblok
+ 1: nova verze, je treba druhy beh
+ 2: zapisuji bloky do --
+ 3: ctu bloky z --
+ 4: je treba druhy beh
+ 5: -- neni skryto
+ 6: -- skryto a zpracovano
+ 7: -- skryto
+ 8: -- vysazeno
+ 9: -- nevysazeno
+ 10: -- nacteno a zpracovano
+ 11: -- nacteno a vysazeno
+ 12: -- preskoceno
+\stopmessages
+
+\startmessages italian library: textblocks
+ title: blocchi di testo
+ 1: nuova versione, seconda passata necessaria
+ 2: scrittura dei blocchi su --
+ 3: lettura dei blocchi da --
+ 4: seconda passata necessaria
+ 5: -- non nascosto
+ 6: -- nascosto ed elaborato
+ 7: -- nascosto
+ 8: -- composto
+ 9: -- non composto
+ 10: -- caricato ed elaborato
+ 11: -- caricato e composto
+ 12: -- saltato
+\stopmessages
+
+\startmessages norwegian library: textblocks
+ title: tekstblokker
+ 1: ny versjon, andre gjennomkjøring nødvendig
+ 2: skriver blokker til --
+ 3: leser blokker fra --
+ 4: andre gjennomkjøring nødvendig
+ 5: -- ikke skjult
+ 6: -- skjult og behandlet
+ 7: -- skjult
+ 8: -- tegnsatt
+ 9: -- ikke tegnsatt
+ 10: -- lest inn og behandlet
+ 11: -- lest inn og tegnsatt
+ 12: -- utelatt
+\stopmessages
+
+\startmessages romanian library: textblocks
+ title: blocuri de text
+ 1: o noua versiune, este nevoie de inca o trecere
+ 2: se scriu blocurile in --
+ 3: se citesc blocurile din --
+ 4: este nevoie de inca o trecere
+ 5: -- nu este ascuns
+ 6: -- ascuns si procesat
+ 7: -- ascuns
+ 8: -- cules
+ 9: -- nu este cules
+ 10: -- incarcat si procesat
+ 11: -- incarcat si cules
+ 12: -- sarit peste
+\stopmessages
+
+\unprotect
+
+% more accurate
+%
+% \@EA\convertcommand\csname\e!start\v!buffer\endcsname\to\beginofblock % else a space
+% \@EA\convertcommand\csname\e!stop\v!buffer \endcsname\to\endofblock
+
+\def\resetbuffer
+ {\dosingleempty\doresetbuffer}
+
+\def\doresetbuffer[#1]%
+ {\unlinkfile{\TEXbufferfile{\iffirstargument#1\else\jobname\fi}}}
+
+% \EveryPar%
+% {\doglobal\newcounter\NOfLines}
+%
+% \EveryLine%
+% {\doglobal\increment\NOfLines%
+% \hskip-3em%
+% \hbox to 3em{\hss\NOfLines\hskip1em}}
+
+%D For Willy's nested commented buffers, we need the \type
+%D {\delcharacter} trick.
+
+%\def\processnextbufferline#1% needs testing ! ! ! !
+% {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
+% \convertargument#1 \to\next
+% \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
+% {\let\next\secondoftwoarguments}
+% {\doifincsnameelse\endofblock\next
+% {\ifnum\nestedbufferlevel=\zerocount
+% \let\next\firstoftwoarguments
+% \else
+% \decrement\nestedbufferlevel\relax
+% \let\next\secondoftwoarguments
+% \fi}
+% {\doifincsnameelse\beginofblock\next
+% {\increment\nestedbufferlevel\relax
+% \let\next\secondoftwoarguments}
+% {\let\next\secondoftwoarguments}}}%
+% \next}
+
+\long\def\processnextbufferline#1%
+ {\relax % checken waarom eerdere macro dit nodig heeft / supp-mps run
+ \convertargument#1 \to\next
+ \doifinstringelse{\delcharacter\texcommentsymbol}{\delcharacter\next}
+ {\secondoftwoarguments}
+ {\doifincsnameelse\endofblock\next
+ {\ifnum\nestedbufferlevel=\zerocount
+ \expandafter\firstoftwoarguments
+ \else
+ \decrement\nestedbufferlevel\relax
+ \expandafter\secondoftwoarguments
+ \fi}
+ {\doifincsnameelse\beginofblock\next
+ {\increment\nestedbufferlevel\relax
+ \secondoftwoarguments}
+ {\secondoftwoarguments}}}}
+
+\def\dostartbuffer
+ {\bgroup
+ \obeylines % nodig, anders gaat 't fout als direct \starttable (bv)
+ \doquadrupleempty\dodostartbuffer}
+
+\def\dodostartbuffer[#1][#2][#3][#4]% upward compatible
+ {\iffourthargument
+ \def\next{\dododostartbuffer[#1][#2][#3][#4]}%
+ \else
+ \def\next{\dododostartbuffer[][#1][#2][#3]}%
+ \fi
+ \next}
+
+\def\dododostartbuffer[#1][#2][#3][#4]%
+ {%\showmessage\m!systems{15}{#2}%
+ \doifelsevalue{\??bu#1\c!paragraph}\v!yes
+ {\segmentatebuffertrue}
+ {\doifnumberelse{\getvalue{\??bu#1\c!paragraph}}\segmentatebuffertrue\segmentatebufferfalse}%
+ \doifelsenothing{#4}
+ {\letbeundefined{\e!stop\v!buffer}% % \let\stopbuffer=\relax % \undefined
+ \@EA\@EA\@EA\convertargument\@EA\e!start\v!buffer\to\beginofblock % else a space
+ \@EA\@EA\@EA\convertargument\@EA\e!stop \v!buffer\to\endofblock
+ \let\processnextblockline\processnextbufferline}
+ {\letbeundefined{#4}% \letvalue{#4}=\relax % \undefined
+ \@EA\convertargument\csname#3\endcsname\to\beginofblock
+ \@EA\convertargument\csname#4\endcsname\to\endofblock}%
+ \def\closeblock
+ {\ifsegmentatebuffer
+ \immediate\write\tmpblocks{\string\stopbufferparagraph}%
+ \fi
+ \immediate\closeout\tmpblocks
+ \egroup
+ \getvalue{#4}}%
+ \doifelsenothing{#2}
+ {\edef\bufferfilename{\TEXbufferfile\jobname}}%
+ {\edef\bufferfilename{\TEXbufferfile{#2}}}%
+ \message{<\bufferfilename>}%
+ \immediate\openout\tmpblocks\bufferfilename
+ \ifsegmentatebuffer
+ \immediate\write\tmpblocks{\string\startbufferparagraph}%
+ \fi
+ \newcounter\nestedbufferlevel
+ \setupcopyblock
+ \let\writeoutblocks\gobbleoneargument
+ \copyblockline}
+
+\letvalue{\e!start\v!buffer}\dostartbuffer
+
+% \setbuffer[name]#2\endbuffer : saves to file #1.tmp
+
+\def\setbuffer[#1]#2\endbuffer
+ {\edef\bufferfilename{\TEXbufferfile{#1}}%
+ \message{<\bufferfilename>}%
+ \immediate\openout\tmpblocks\bufferfilename
+ \convertargument#2\to\ascii
+ \immediate\write\tmpblocks{\ascii}%
+ \immediate\closeout\tmpblocks}
+
+\def\dodobuffer#1#2%
+ {\beginrestorecatcodes
+ \ifundefined{\??bu#2\c!number}%
+ \edef\bufferfilename{\TEXbufferfile{#2}}%
+ \else
+ \edef\bufferfilename{\TEXbufferfile{def-\getvalue{\??bu#2\c!number}}}%
+ \fi
+ #1\bufferfilename\donothing\donothing
+ \endrestorecatcodes}
+
+\def\dobuffer#1[#2]#3%
+ {\doifelsenothing{#2}
+ {\dodobuffer#3\jobname}
+ {\processcommalist[#2]{\dodobuffer#3}}}
+
+\def\processTEXbuffer
+ {\dodoubleempty\doprocessTEXbuffer}
+
+\def\doprocessTEXbuffer[#1][#2]%
+ {\ifsecondargument
+ \dodoprocessTEXbuffer[#1][#2]%
+ \else
+ \dodoprocessTEXbuffer[][#1]%
+ \fi}
+
+\def\dodoprocessTEXbuffer[#1][#2]%
+ {\getvalue{\??bu#1\c!before}%
+ \dobuffer{16}[#2]\readjobfile
+ \getvalue{\??bu#1\c!after}}
+
+\let\getbuffer \processTEXbuffer % handy
+\let\getbuffer\processTEXbuffer % will move to mult-com.tex
+
+\def\typebuffer
+ {\dodoubleempty\dotypebuffer}
+
+\def\dotypebuffer[#1][#2]%
+ {\iffirstargument
+ \dobuffer{17}[#1]\typefile
+ \else
+ \dobuffer{17}[#2]\typefile
+ \fi}
+
+\def\setupbuffer
+ {\dodoubleempty\dosetupbuffer}
+
+\def\dosetupbuffer[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??bu#1][#2]%
+ \else
+ \getparameters[\??bu][#1]%
+ \fi}
+
+\def\dodefinebuffer[#1]%
+ {\iffirstargument % else problems
+ \doglobal\increment\nofdefinedbuffers
+ \letvalue{\??bu#1\c!number}\nofdefinedbuffers
+ \letvalue{\??bu#1\c!paragraph}\v!no
+ \setevalue{\e!start#1}%
+ {\noexpand\dostartbuffer[#1][def-\nofdefinedbuffers][\e!start#1][\e!stop#1]}%
+ \setevalue{\e!get#1}%
+ {\noexpand\dodoprocessTEXbuffer[#1][def-\nofdefinedbuffers]}%
+ \setevalue{\e!type#1}%
+ {\noexpand\dodotypebuffer[#1][def-\nofdefinedbuffers]}%
+ \fi}
+
+\def\definebuffer
+ {\dosingleargument\dodefinebuffer}
+
+% yet another undocumented feature, but who cares:
+
+\let\startfilebuffer\startbuffer
+
+\def\usememorybuffers{\let\startbuffer\startmemorybuffer}
+\def\usefilebuffers {\let\startbuffer\startfilebuffer}
+
+\def\startmemorybuffer
+ {\dosingleempty\dostartmemorybuffer}
+
+\long\def\dostartmemorybuffer[#1]#2\stopbuffer
+ {\setbuffer[\iffirstargument#1\else\jobname\fi]#2\endbuffer}
+
+% \long\def\startcrap#1\stopcrap
+% {\usememorybuffers#1\usefilebuffers} % or {{...}}
+%
+% \startcrap
+% \startbuffer
+% some awful code
+% \stopbuffer
+% \placefigure{crap}{\getbuffer}
+% \stopcrap
+
+% TODO: no grouping due to sidefloats
+
+\expandafter \convertargument \gobbleoneargument @ \to \emptybufferline
+
+\newif\ifsegmentatebuffer
+\newif\ifemptybufferline
+
+\def\skippedbufferparagraphs{0}
+
+\let\startbufferparagraph\relax
+\let\stopbufferparagraph \par % \relax
+
+\newcount\currentbufferparagraph
+
+\def\getbufferparagraphs
+ {\dodoubleempty\dogetbufferparagraphs}
+
+\def\dosetbufferoffset#1%
+ {\doifnumberelse{\getvalue{\??bu#1\c!paragraph}}
+ {\currentbufferparagraph-\getvalue{\??bu#1\c!paragraph}}
+ {\currentbufferparagraph \zerocount}%
+ \relax}
+
+\def\dogetbufferparagraphs[#1][#2]%
+ {\iffirstargument
+ \ifsecondargument
+ \dosetbufferoffset{#1}%
+ \doifelse{#2}\v!all
+ {\def\startbufferparagraph{\normalbufferparagraph{#1}}}
+ {\def\startbufferparagraph{\filterbufferparagraph{#1}{#2}}}%
+ \def\stopbufferparagraph{\dostopbufferparagraph{#1}}%
+ \def\next{\getparagraphedbuffer[#1]}%
+ \else
+ \dosetbufferoffset\empty
+ \def\startbufferparagraph{\filterbufferparagraph{}{#1}}%
+ \def\stopbufferparagraph{\dostopbufferparagraph{}}%
+ \def\next{\getparagraphedbuffer[]}%
+ \fi
+ \else
+ \dosetbufferoffset\empty
+ \def\startbufferparagraph{\normalbufferparagraph{}}%
+ \def\stopbufferparagraph{\dostopbufferparagraph{}}%
+ \def\next{\getparagraphedbuffer[]}%
+ \fi
+ \next}
+
+\def\getparagraphedbuffer[#1]%
+ {\dobuffer{16}[#1]\readjobfile}
+
+\def\dostopbufferparagraph#1%
+ {\getvalue{\??bu#1\c!after}\par}
+
+\def\dostartbufferparagraph#1%
+ {\par\getvalue{\??bu#1\c!before}}
+
+\def\normalbufferparagraph
+ {\advance\currentbufferparagraph \plusone
+ \ifnum\currentbufferparagraph>\zerocount
+ \expandafter\dostartbufferparagraph
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\filterbufferparagraph#1#2%
+ {\advance\currentbufferparagraph \plusone
+ \ifnum\currentbufferparagraph>\zerocount
+ \doifinsetelse{\the\currentbufferparagraph}{#2}
+ {\let\next\dostartbufferparagraph}
+ {\let\next\fakebufferparagraph}%
+ \else
+ \let\next\gobblebufferparagraph
+ \fi
+ \next{#1}}
+
+% nicer, but untested
+%
+% \def\filterbufferparagraph#1#2%
+% {\advance\currentbufferparagraph \plusone
+% \ifcase\currentbufferparagraph
+% \@EA\gobblebufferparagraph
+% \else
+% \doifinsetelse{\the\currentbufferparagraph}{#2}
+% {\@EA\dostartbufferparagraph}
+% {\@EA\fakebufferparagraph}%
+% \fi
+% {#1}}
+
+\long\def\gobblebufferparagraph#1#2\stopbufferparagraph
+ {}
+
+\def\fakebufferparagraph#1%
+ {\bgroup
+ \def\stopbufferparagraph{\dostopbufferparagraph{#1}\egroup\egroup}%
+ \setbox\scratchbox\vbox\bgroup\dostartbufferparagraph{#1}}
+
+\def\blockversion {1996.03.10}
+
+\def\@@blockerrormessage%
+ {\showmessage\m!textblocks1\empty
+ \global\let\@@blockerrormessage\relax}
+
+\def\thisisblockversion#1%
+ {\doifnot\blockversion{#1}{\@@blockerrormessage\endinput}}
+
+\def\stopcopyingblocks
+ {\ifcopyingblocks
+ \immediate\closeout\outblocks
+ \copyblockfile
+ \global\copyingblocksfalse
+ \fi}
+
+\def\dodosetblockcounters[#1]#2%
+ {\expanded{\setvalue{\??se\s!old#2}{\@@filterheadpart[#1]}}%
+ \doifnot{#2}\lastsection
+ {\expanded{\dodosetblockcounters[\@@filtertailpart[#1]]}%
+ {\getvalue{\??se#2\c!after}}}} % ????
+
+\def\dosetblockcounters[#1]%
+ {\ifblockpermitted
+ \expanded{\dodosetblockcounters[\@@filtersecondpart[#1]]}\firstsection
+ \expanded{\setsectiontype[\@@filterfirstpart[#1]]}%
+ \def\@@sectionvalue##1{\getvalue{\??se\s!old##1}}%
+ \let\@@sectionconversion\secondoftwoarguments
+ \fi}
+
+\let\blockstatus\empty
+
+\def\setblockcounters
+ {\ifx\blockstatus\empty \else
+ \@EA\dosetblockcounters\@EA[\blockstatus]%
+ \fi}
+
+\def\getblockstatus#1% is this still ok
+ {\dosetfilterlevel{\getvalue{\??by\@@bscriterium}}\empty
+ \expanded{\doifblklevelelse[#1\sectionseparator\sectionseparator0]}
+ {\global\blockpermittedtrue}
+ {\global\blockpermittedfalse}%
+ \def\blockstatus{#1}}
+
+\def\setupblockparameters
+ {\dodoubleargument\dosetupblockparameters}
+
+\def\dosetupblockparameters[#1][#2]%
+ {\getparameters[\??tb#1][#2]}
+
+\beginTEX
+
+\def\blockparameter#1#2%
+ {\csname\@EA\ifx\csname\??tb#1#2\endcsname\relax\s!empty\else\??tb#1#2\fi\endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\blockparameter#1#2%
+ {\@EA\csname\ifcsname\??tb#1#2\endcsname\??tb#1#2\else\s!empty\fi\endcsname}
+
+\endETEX
+
+\ifx\outblocks\undefined \newwrite\outblocks \fi
+\ifx\inpblocks\undefined \newread \inpblocks \fi
+\ifx\tmpblocks\undefined \newwrite\tmpblocks \fi
+\ifx\blockbox \undefined \newbox \blockbox \fi
+
+\newif\ifcopyingblocks
+\newif\ifvisible \visibletrue
+\newif\ifblockpermitted
+\newif\iftmpblockstarted
+\newif\ifoldinbijlagen
+\newif\ifdoingblocks
+
+\newcount\blocklevel \blocklevel=0
+
+%\def\setblocklevel#1%
+% {\global\advance\blocklevel by #11
+% \ifnum\blocklevel>2\relax\doingblockstrue\else\doingblocksfalse\fi}
+%
+% oeps, got bugged
+
+\def\setblocklevel#1% sign
+ {\global\advance\blocklevel #11
+ \ifcase\blocklevel\doingblocksfalse\else\doingblockstrue\fi}
+
+\def\opentmpblock
+ {\immediate\openout\tmpblocks=\TEXbufferfile{\f!utilityfilename\the\blocklevel}}
+
+\def\closetmpblock
+ {\immediate\write\tmpblocks{}% een lege regel is handig voor \par commando's
+ \immediate\closeout\tmpblocks}
+
+\def\writetmpblock#1%
+ {\iftmpblockstarted
+ \ifsegmentatebuffer
+ \ifemptybufferline
+ \immediate\write\tmpblocks{\string\stopbufferparagraph }%
+ \immediate\write\tmpblocks{\string\startbufferparagraph}%
+ \else
+ \immediate\write\tmpblocks{#1}%
+ \fi
+ \else
+ \immediate\write\tmpblocks{#1}%
+ \fi
+ \else
+ \doifsomething{#1}
+ {\tmpblockstartedtrue
+ \immediate\write\tmpblocks{\string#1}}%
+ \fi}
+
+\def\startcopyingblocks
+ {\global\copyingblocksfalse}
+
+\def\checkcopyingblocks
+ {\ifcopyingblocks
+ \else
+ \immediate\openout\outblocks\f!utilityfilename.\f!blockextension
+ \immediate\write\outblocks{\string\thisisblockversion{\blockversion}}%
+ \immediate\write\outblocks{\string\thisissectionseparator{\sectionseparator}}%
+ \global\copyingblockstrue
+ \fi}
+
+\def\stopcopyingblocks
+ {\ifcopyingblocks
+ \immediate\closeout\outblocks
+ \copyblockfile
+ \global\copyingblocksfalse
+ \fi}
+
+\def\nomoreblocks
+ {\stopcopyingblocks}
+
+\def\copyblockfile
+ {\ifcopyingblocks
+ \begingroup
+ \showmessage\m!textblocks2{\jobname.\f!blockextension}%
+ \openlocin\inpblocks{\f!utilityfilename.\f!blockextension}%
+ \immediate\openout\outblocks\jobname.\f!blockextension
+ \setupcopyblock
+ \catcode`\^^M=\@@ignore\relax
+ \def\copynextline
+ {\read\inpblocks to \!!stringa
+ \immediate\write\outblocks{\!!stringa}%
+ \ifeof\inpblocks\else\expandafter\copynextline\fi}%
+ \copynextline
+ \immediate\closein\inpblocks
+ \immediate\closeout\outblocks
+ \immediate\openout\tmpblocks\f!utilityfilename.\f!blockextension
+ \immediate\closeout\tmpblocks
+ \endgroup
+ \fi}
+
+\def\loadallblocks#1%
+ {\beginrestorecatcodes
+ \catcode`\^^M=\@@endofline\relax
+ \readjobfile{#1.\f!blockextension}
+ {\showmessage\m!textblocks3{#1.\f!blockextension}}
+ {\showmessage\m!textblocks4\empty}%
+ \endrestorecatcodes}
+
+\def\setupcopyblock
+ {\makeallother
+ \obeylines}
+
+\def\writeoutblocks
+ {\immediate\write\outblocks}
+
+% readable
+%
+% \def\processnextblocklineAB#1#2#3%
+% {\convertargument#1 \to\next
+% \doifinstringelse\endofblockA\next
+% {\def\next{#2}}
+% {\doifinstringelse\endofblockB\next
+% {\def\next{#2}}
+% {\def\next{#3}}}%
+% \next}
+%
+% faster
+%
+% \def\processnextblocklineAB#1#2#3%
+% {\convertargument#1 \to\next % space is essential
+% \doifinstringelse\endofblockA\next
+% {#2}{\doifinstringelse\endofblockB\next{#2}{#3}}}
+%
+% even more
+
+\long\def\processnextblocklineAB#1% #2#3%
+ {\convertargument#1 \to\next
+ \doifinstringelse\endofblockA\next
+ \firstoftwoarguments
+ {\doifinstringelse\endofblockB\next
+ \firstoftwoarguments\secondoftwoarguments}}
+
+\bgroup
+\obeylines
+\long\gdef\copyblocklineAB#1
+ {\processnextblocklineAB{#1}\closeblock{\writeoutblocks{#1}\writetmpblock{#1}\copyblocklineAB}}
+\long\gdef\skipblocklineAB#1
+ {\processnextblocklineAB{#1}\closeblock\skipblocklineAB}
+\egroup
+
+% \def\processnextblockline#1#2#3%
+% {\convertargument#1 \to\next
+% \ifx\next\emptybufferline
+% \ifsegmentatebuffer \emptybufferlinetrue \fi
+% \def\next{#3}%
+% \else
+% \emptybufferlinefalse
+% \doifinstringelse{\endofblock}{\next}
+% {\def\next{#2}}
+% {\def\next{#3}}%
+% \fi
+% \next}
+%
+% faster
+
+\long\def\processnextblockline#1% #2#3%
+ {\convertargument#1 \to\next
+ \ifx\next\emptybufferline
+ \ifsegmentatebuffer \emptybufferlinetrue \fi
+ \expandafter\secondoftwoarguments% #3%
+ \else
+ \emptybufferlinefalse
+ \doifinstringelse\endofblock\next
+ {\expandafter\firstoftwoarguments }% #2}
+ {\expandafter\secondoftwoarguments}% #3}%
+ \fi}
+
+\bgroup
+\obeylines
+\long\gdef\copyblockline#1
+ {\processnextblockline{#1}\closeblock{\writeoutblocks{#1}\writetmpblock{#1}\copyblockline}}
+\long\gdef\skipblockline#1
+ {\processnextblockline{#1}\closeblock\skipblockline}
+\egroup
+
+\def\skipblock#1%
+ {\checkcopyingblocks
+ \@EA\convertargument\string\thiswasblock{#1}\to\endofblock
+ %testen : \expanded{\convertargument\string\thiswasblock{#1}\noexpand\to\noexpand\endofblock}%
+ \let\openblock\begingroup
+ \let\closeblock\endgroup
+ \openblock
+ \setupcopyblock
+ \skipblockline}
+
+\let\doafterblock \gobbletwoarguments
+\let\dobeforeblock\gobbletwoarguments
+
+\def\thisisblock#1%
+ {\executeifdefined{\s!thisisblock#1}{\skipblock{#1}}}
+
+\def\thiswasblock#1%
+ {\getvalue{\s!thiswasblock#1}}
+
+\def\saveblock#1#2%
+ {\checkcopyingblocks
+ \obeylines
+ \@EA\@EA\@EA\convertargument\@EA\string\csname\e!end#1\endcsname\to\endofblockA
+ %testen: \expanded{\convertargument\string\csname\e!end#1\endcsname\to\endofblockA}%
+ \@EA\convertargument\string\endblock[#1]\to\endofblockB % MULTI LINGUAL MAKEN
+ \def\openblock
+ {\dobeforeblock{#1}{#2}%
+ \opentmpblock
+ \begingroup
+ \makesectionformat
+ \immediate\write\outblocks{}%
+ \immediate\write\outblocks{\string\thisisblock{#1}{\sectionformat}[#2]}}%
+ \def\closeblock
+ {\immediate\write\outblocks{}% handig voor \par commando's
+ \immediate\write\outblocks{\string\thiswasblock{#1}}%
+ \endgroup
+ \closetmpblock
+ \doafterblock{#1}{#2}%
+ \egroup}%
+ \openblock
+ \setupcopyblock
+ \copyblocklineAB}
+
+\def\copyblock
+ {\let\opentmpblock\empty
+ \let\closetmpblock\empty
+ \let\writetmpblock\gobbleoneargument
+ \saveblock}
+
+\def\loadoneblock
+ {\edef\blockfilename{\TEXbufferfile{\f!utilityfilename\the\blocklevel}}%
+ \setblocklevel+%
+ \readjobfile\blockfilename\donothing\donothing
+ \setblocklevel-}%
+
+\def\dodefineblock[#1]%
+ {\bypassblock[#1]%
+ \keepblocks[#1]%
+ \setupblock
+ [#1]
+ [\c!before=\blank,
+ \c!after=\blank,
+ \c!inner=,
+ \c!style=,
+ \c!file=\jobname]}
+
+\def\defineblock
+ {\dosingleargumentwithset\dodefineblock}
+
+\def\dosetupblock[#1][#2]%
+ {\getparameters[\??tb#1][#2]}
+
+\def\setupblock
+ {\dodoubleargumentwithset\dosetupblock}
+
+\def\bypassblock[#1]%
+ {\setvalue{\s!thisisblock#1}##1[##2]{\skipblock{#1}}}
+
+\def\dohideblock[#1][#2][#3]%
+ {\doifassignmentelse{#3}
+ {\dodohideblock[#1][#2][][#3]}
+ {\dodohideblock[#1][#2][#3][]}}
+
+\def\dodohideblock[#1][#2][#3][#4]%
+ {\doifelsenothing{#2}
+ {\global\blockpermittedfalse
+ \edef\blocktitle{#1}}
+ {\doifelsenothing{#3}
+ {\global\blockpermittedtrue
+ \edef\blocktitle{#1}}
+ {\doifcommonelse{#2}{#3}
+ {\global\blockpermittedfalse
+ \edef\blocktitle{#1:#2}}
+ {\global\blockpermittedtrue
+ \edef\blocktitle{#1:#3}}}}%
+ \ifblockpermitted
+ \showwarning\m!textblocks5\blocktitle
+ \def\next
+ {\def\dobeforeblock####1####2%
+ {\begingroup}%
+ \def\doafterblock####1####2%
+ {\endgroup
+ \doexecuteloadedblock{#1}{#4}}%
+ \saveblock{#1}{#3#4}}%
+ \else
+ \doifinsetelse{+}{#3}
+ {\showwarning\m!textblocks6\blocktitle
+ \def\next
+ {\def\dobeforeblock####1####2%
+ {\begingroup
+ \global\visiblefalse}%
+ \def\doafterblock####1####2%
+ {{\setbox0\vbox
+ {\catcode`\^^M=\@@endofline\relax
+ \loadoneblock
+ \par}}%
+ \endgroup}%
+ \saveblock{#1}{#3#4}}}%
+ {\showwarning\m!textblocks7\blocktitle
+ \def\next
+ {\def\dobeforeblock####1####2%
+ {\begingroup
+ \globaldefs\minusone}%
+ \def\doafterblock####1####2%
+ {\endgroup}%
+ \copyblock{#1}{#3#4}}}%
+ \fi
+ \next}
+
+\def\dohideblocks[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{\e!begin##1}%
+ {\bgroup\obeylines\dotripleempty\dohideblock[##1][#2]}}%
+ \processcommalist[#1]\docommando}
+
+\def\hideblocks
+ {\dodoubleempty\dohideblocks}
+
+\def\doexecuteloadedblock#1#2%
+ {\blockpermittedtrue % ?
+ \bgroup % before \c!before (think of: \c!before=\startitemize)
+ \dosetupblockparameters[#1][#2]% voor 'voor'?
+ \getvalue{\??tb#1\c!before}%
+ \dostartattributes{\??tb#1}\c!style\c!color\empty
+ \visibletrue
+ \catcode`\^^M=\@@endofline\relax
+ \getvalue{\??tb#1\c!inner}%
+ \ignorespaces
+ \loadoneblock
+ % \par moved
+ \dostopattributes
+ \getvalue{\??tb#1\c!after}%
+ \par
+ \egroup}
+
+\def\dokeepblock[#1][#2][#3]%
+ {\doifassignmentelse{#3}
+ {\dodokeepblock[#1][#2][][#3]}
+ {\dodokeepblock[#1][#2][#3][]}}
+
+\def\dodokeepblock[#1][#2][#3][#4]%
+ {\doifelsenothing{#2}
+ {\global\blockpermittedtrue
+ \edef\blocktitle{#1}}
+ {\doifcommonelse{#2}{#3}
+ {\global\blockpermittedtrue
+ \edef\blocktitle{#1:#2}}
+ {\doifinsetelse\v!all{#2}
+ {\doifelsenothing{#3}
+ {\global\blockpermittedtrue
+ \edef\blocktitle{#1}}
+ {\global\blockpermittedfalse
+ \edef\blocktitle{#1:#3}}}
+ {\global\blockpermittedfalse
+ \doifelsenothing{#3}
+ {\edef\blocktitle{#1}}
+ {\edef\blocktitle{#1:#3}}}}}%
+ \ifblockpermitted
+ \showwarning\m!textblocks8\blocktitle
+ \def\dobeforeblock##1##2%
+ {\begingroup}%
+ \def\doafterblock##1##2%
+ {\endgroup
+ \doexecuteloadedblock{#1}{#4}}%
+ \else
+ \showwarning\m!textblocks9\blocktitle
+ \fi
+ \saveblock{#1}{#3#4}}
+
+\def\dokeepblocks[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{\e!begin##1}%
+ {\bgroup\obeylines\dotripleempty\dokeepblock[##1][#2]}}%
+ \processcommalist[#1]\docommando}
+
+\def\keepblocks
+ {\dodoubleempty\dokeepblocks}
+
+\newconditional\processblockstatus
+\newconditional\dummyblockstatus
+\newconditional\blockassignmentstatus
+
+\def\dodouseblock#1#2#3#4%
+ {\getblockstatus{#2}%
+ \ifblockpermitted
+ \setfalse\dummyblockstatus
+ \doifassignmentelse{#3}
+ {\settrue \blockassignmentstatus}
+ {\setfalse\blockassignmentstatus}%
+ \doifelsenothing{#4}
+ {\edef\blocktitle{#1}}
+ {\ifconditional\blockassignmentstatus
+ \edef\blocktitle{#1}%
+ \else
+ \doifnotcommon{#3}{#4}
+ {\ifconditional\processblockstatus
+ \settrue\dummyblockstatus
+ \else
+ \global\blockpermittedfalse
+ \fi}%
+ \edef\blocktitle{#1:#3}%
+ \fi}%
+ \else
+ \edef\blocktitle{#1}%
+ \fi
+ \ifblockpermitted
+ \setblocklevel+%
+ \ifconditional\blockassignmentstatus \else
+ \doifinset{-}{#3}{\settrue\dummyblockstatus}%
+ \fi
+ \ifconditional\dummyblockstatus
+ \showwarning\m!textblocks{10}\blocktitle
+ \setvalue{\s!thiswasblock#1}%
+ {\removeunwantedspaces
+ \par
+ \egroup
+ \setblocklevel-}%
+ \def\next
+ {\setbox0\vbox\bgroup
+ \ifconditional\blockassignmentstatus
+ \dosetupblockparameters[#1][#3]%
+ \fi}%
+ \else
+ \showwarning\m!textblocks{11}\blocktitle
+ \setvalue{\s!thiswasblock#1}%
+ {\removeunwantedspaces
+ % \par moved
+ \dostopattributes
+ \getvalue{\??tb#1\c!after}%
+ \par
+ \egroup
+ \setblocklevel-}%
+ \def\next
+ {\bgroup
+ \ifconditional\blockassignmentstatus
+ \dosetupblockparameters[#1][#3]%
+ \fi
+ \getvalue{\??tb#1\c!before}%
+ \dostartattributes{\??tb#1}\c!style\c!color\empty
+ \visibletrue
+ \getvalue{\??tb#1\c!inner}%
+ \ignorespaces}%
+ \fi
+ \else
+ \def\next
+ {\showwarning\m!textblocks{12}\blocktitle
+ \skipblock{#1}}%
+ \fi
+ \next}
+
+\def\douseblock[#1][#2]%
+ {\setvalue{\s!thisisblock#1}##1[##2]{\dodouseblock{#1}{##1}{##2}{#2}}}
+
+\def\dodouseblocks[#1][#2]%
+ {\def\docommando##1%
+ {\douseblock[##1][#2]}%
+ \processcommalist[#1]\docommando
+ \dogetcommalistelement1\from#1\to\commalistelement
+ \doifdefined{\??tb\commalistelement\c!file}
+ {\loadallblocks{\getvalue{\??tb\commalistelement\c!file}}}%
+ \endgroup}
+
+\def\douseblocks
+ {\begingroup
+ \doassign[\??bs][\c!criterium=\v!all]%
+ \dodoubleempty\dodouseblocks}
+
+\def\useblocks
+ {\setfalse\processblockstatus\douseblocks}
+
+\def\processblocks
+ {\settrue \processblockstatus\douseblocks}
+
+\def\doselectblocks[#1][#2][#3]%
+ {\doifelsenothing{#3}
+ {\getparameters[\??bs][#2]%
+ \douseblocks[#1][]}
+ {\getparameters[\??bs][#3]%
+ \douseblocks[#1][#2]}}%
+
+\def\selectblocks
+ {\begingroup
+ \doassign[\??bs][\c!criterium=\v!all]%
+ \dotripleempty\doselectblocks}
+
+\def\beginblock[#1]% % we also check \endblock[..]
+ {\getvalue{\e!begin#1}}
+
+\def\forceblocks[#1]%
+ {\def\docommando##1%
+ {\setvalue{\e!begin##1}%
+ {\setblocklevel+\bgroup
+ \dodoubleempty\doforceblock[##1]}%
+ \setvalue{\e!end##1}%
+ {\dostopattributes
+ \getvalue{\??tb##1\c!after}%
+ \egroup\setblocklevel-}}%
+ \processcommalist[#1]\docommando}
+
+\def\doforceblock[#1][#2]%
+ {\doifassignmentelse{#2}
+ {\settrue \blockassignmentstatus}
+ {\setfalse\blockassignmentstatus}%
+ \ifconditional\blockassignmentstatus
+ \dosetupblockparameters[#1][#2]%
+ \fi
+ \getvalue{\??tb#1\c!before}%
+ \dostartattributes{\??tb#1}\c!style\c!color\empty
+ \getvalue{\??tb#1\c!inner}%
+ \ignorespaces}
+
+\def\bypassblocks[#1]%
+ {\def\docommando##1%
+ {\setvalue{\e!begin##1}%
+ {\setblocklevel+\bgroup
+ \obeylines % here, since we look ahead
+ \dodoubleempty\dobypassblock[##1]}%}%
+ \setvalue{\e!end##1}%
+ {}}%
+ \processcommalist[#1]\docommando}
+
+\def\dobypassblock[#1][#2]%
+ {\def\closeblock
+ {\egroup\setblocklevel-}%
+ \checkcopyingblocks
+ \obeylines
+ \@EA\@EA\@EA\convertargument\@EA\string\csname\e!end#1\endcsname\to\endofblockA
+ \@EA\convertargument\string\endblock[#1]\to\endofblockB % MULTI LINGUAL MAKEN
+ \setupcopyblock
+ \skipblocklineAB}
+
+% the buffer mechanism handles nesting, add some switch
+
+\setvalue{\e!start\v!hiding}%
+ {\dostartbuffer[buf-\nofpostponedblocks]
+ [\e!start\v!hiding][\e!stop\v!hiding]}
+
+\setupbuffer
+ [\c!paragraph=\v!no,
+ \c!before=,
+ \c!after=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-con.tex b/Master/texmf-dist/tex/context/base/core-con.tex
new file mode 100644
index 00000000000..a6d66641cc1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-con.tex
@@ -0,0 +1,987 @@
+%D \module
+%D [ file=core-con,
+%D version=1997.26.08,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Conversion Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Conversion Macros}
+
+\unprotect
+
+%D This module deals with all kind of conversions from numbers
+%D and dates. I considered splitting this module in a support
+%D one and a core one, but to keep things simple as well as
+%D preserve the overview, I decided against splitting.
+
+%D \macros
+%D {numbers}
+%D
+%D First we deal with the dummy conversion of numbers using the
+%D \TEX\ primitive \type{\number}. The uppercase alternative is
+%D only there for compatibility with the other conversion
+%D macros. We could do without \type{#1} but this way we get
+%D rid of unwanted braces. For the savety we also define a
+%D non||sence uppercase alternative.
+%D
+%D \showsetup{numbers}
+%D
+%D \starttyping
+%D \def\numbers#1{\number#1}
+%D \def\Numbers#1{\number#1}
+%D \stoptyping
+%D
+%D Due to read ahead, as in \type{[\pagenumber\space]} the space will
+%D disappear, unless we use:
+
+\def\numbers#1{\purenumber{#1}}
+\def\Numbers#1{\purenumber{#1}}
+
+
+%D \macros
+%D {romannumerals,Romannumerals}
+%D
+%D \TEX\ the program uses a rather tricky conversion from
+%D numbers to their roman counterparts. This conversion could
+%D of course be programmed in \TEX\ itself, but I guess Knuth
+%D found the programming trick worth presenting.
+%D
+%D \showsetup{romannumerals}
+%D \showsetup{Romannumerals}
+%D
+%D When upcasing the result, we just follow the text book rules
+%D of expansion. Later on we'll see some more uppercase tricks.
+
+\def\romannumerals#1%
+ {\romannumeral#1}
+
+%D For some years we had \unknown
+%D
+%D \starttyping
+%D \def\Romannumerals#1%
+%D {\uppercase\expandafter{\romannumeral#1}}
+%D \stoptyping
+%D
+%D \unknown but we need to be fully expandable in order to get
+%D the utility output file right, so now we have the following
+%D solution. It was Patrick Gundlach who first noticed this
+%D ommision.
+
+\def\Romannumerals#1%
+ {\expandafter\doRomannumerals\number#1\relax}
+
+\def\doRomannumerals#1#2\relax % spaces after ifcase prevent \relax
+ {\ifnum#1#2<10
+ \ifcase0#1#2 \or I\or II\or III\or IV\or V\or VI\or VII\or VIII\or IX\fi
+ \else\ifnum#1#2<100
+ \ifcase0#1 \or X\or XX\or XXX\or XL\or L\or LX\or LXX\or LXXX\or XC\fi
+ \doRomannumerals#2\relax
+ \else\ifnum#1#2<1000
+ \ifcase0#1 \or C\or CC\or CCC\or CD\or D\or DC\or DCC\or DCCC\or CM\fi
+ \doRomannumerals#2\relax
+ \else\ifnum#1#2<4000
+ \ifcase0#1 \or M\or MM\or MMM\fi
+ \doRomannumerals#2\relax
+ \else
+ \uppercase\expandafter{\romannumeral#1#2}%
+ \fi\fi\fi\fi}
+
+%D \macros
+%D {character,Character}
+%D
+%D Converting a number into a character can of course only
+%D be done with numbers less or equal to~26. At the cost of
+%D much more macros a faster conversion is possible, using:
+%D
+%D \starttyping
+%D \setvalue{char1}{a} \def\character#1{\getvalue{char#1}}
+%D \stoptyping
+%D
+%D But we prefer a simpel \type{\case}.
+%D
+%D \showsetup{character}
+%D \showsetup{Character}
+
+\def\unknowncharacter{-} % else in lists \relax
+
+\def\character#1%
+ {\ifcase#1\unknowncharacter
+ \or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
+ \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z%
+ \else
+ \unknowncharacter
+ \fi}
+
+\def\Character#1%
+ {\ifcase#1\unknowncharacter
+ \or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M%
+ \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z%
+ \else
+ \unknowncharacter
+ \fi}
+
+%D \macros
+%D {characters,Characters}
+%D
+%D Converting large numbers is supported by the next two
+%D macros. This time we just count on: $\cdots$~x, y, z, aa,
+%D ab, ac~$\cdots$.
+%D
+%D \showsetup{characters}
+%D \showsetup{Characters}
+
+\beginTEX
+
+\def\dodoconvertcharacters#1#2#3%
+ {\ifnum#3>#1
+ \bgroup
+ \!!counta#3\relax
+ \ifnum\!!counta>\zerocount
+ \advance\!!counta \minusone
+ \!!countb\!!counta
+ \divide\!!counta #1%
+ \!!countc\!!counta
+ \multiply\!!countc #1%
+ \advance\!!countb -\!!countc
+ \doconvertcharacters#3{\!!counta}%
+ \advance\!!countb \plusone
+ #3{\the\!!countb}%
+ \fi
+ \egroup
+ \else
+ #2{#3}% pure expansion, used in references
+ \fi}
+
+\endTEX
+
+%D A fully expandable alternative:
+
+\beginETEX \numexpr
+
+\def\dodoconvertcharacters#1#2#3%
+ {\ifcase#3\else
+ \ifnum#3>#1
+ \expandafter\doconvertcharacters\expandafter#2\expandafter{\the\numexpr(#3+12)/#1-1\relax}%
+ \expandafter#2\expandafter{\the\numexpr#3-((#3+12)/#1-1)*#1\relax}%
+ \else
+ \expandafter#2\expandafter{\number#3}%
+ \fi
+ \fi}
+
+\endETEX
+
+\def\doconvertcharacters{\dodoconvertcharacters{26}}
+
+\def\characters{\doconvertcharacters\character}
+\def\Characters{\doconvertcharacters\Character}
+
+%D \macros
+%D {greeknumerals,Greeknumerals}
+%D
+%D Why should we only honour the romans, and not the greek?
+
+\def\greeknumerals#1%
+ {% no longer needed: \mathematics
+ {\ifcase#1\unknowncharacter\or
+ \alpha \or \beta \or \gamma \or \delta \or
+ \varepsilon \or \zeta \or \eta \or \theta \or
+ \iota \or \kappa \or \lambda \or \mu \or
+ \nu \or \xi \or \omicron \or \pi \or
+ \varrho \or \sigma \or \tau \or \upsilon \or
+ \phi \or \chi \or \psi \or \omega
+ \else
+ \unknowncharacter
+ \fi}}
+
+\def\Greeknumerals#1%
+ {% no longer needed: \mathematics
+ {\ifcase#1\unknowncharacter \or
+ \Alpha \or \Beta \or \Gamma \or \Delta \or
+ \Epsilon \or \Zeta \or \Eta \or \Theta \or
+ \Iota \or \Kappa \or \Lambda \or \Mu \or
+ \Nu \or \Xi \or \Omicron \or \Pi \or
+ \Rho \or \Sigma \or \Tau \or \Upsilon \or
+ \Phi \or \Xi \or \Psi \or \Omega
+ \else
+ \unknowncharacter
+ \fi}}
+
+%D \macros
+%D {oldstylenumerals,oldstyleromannumerals}
+%D
+%D These conversions are dedicated to Frans Goddijn.
+
+\unexpanded\def\oldstylenumerals#1%
+ {{\os\number#1}}
+
+\unexpanded\def\oldstyleromannumerals#1%
+ {{\leftrulefalse\rightrulefalse\ss\txx\boxrulewidth.15ex
+ \ruledhbox spread .15em{\hss\uppercased{\romannumerals{#1}}\hss}}}
+
+%D \macros
+%D {defineconversionvector,conversionnumber} % bad names so no danger for clash
+%D
+%D For Adam and friends \unknown
+%D
+%D \startitemize[persiannummerals]
+%D \item test \item test \item test \item test
+%D \stopitemize
+
+% \defineconversionvector{alpha}{`a}
+% \edef\test{\conversionnumber{alpha}{123}}
+
+% \ifx\gobbleoneargument\undefined \long\def\gobbleoneargument#1{} \fi
+
+\def\defineconversionvector#1#2% name base
+ {\bgroup
+ % dirty trick
+ \uccode`\*=`\1
+ % plain:
+ % \uccode`\0=\numexpr#2+0\relax \uccode`\1=\numexpr#2+1\relax
+ % \uccode`\2=\numexpr#2+2\relax \uccode`\3=\numexpr#2+3\relax
+ % \uccode`\4=\numexpr#2+4\relax \uccode`\5=\numexpr#2+5\relax
+ % \uccode`\6=\numexpr#2+6\relax \uccode`\7=\numexpr#2+7\relax
+ % \uccode`\8=\numexpr#2+8\relax \uccode`\9=\numexpr#2+9\relax
+ % context:
+ \dostepwiserecurse091{\expandafter\uccode\expandafter`\recurselevel=\numexpr#2+\recurselevel}%
+ % prepared macro
+ \uppercase\expandafter{\expandafter\gdef\csname::cvn::#1::\endcsname##*%
+ {\ifcase##* 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\fi}}%
+ \egroup}
+
+\def\conversionnumber#1#2%
+ {\ifcsname::cvn::#1::\endcsname
+ \expandafter\doconversionnumber\csname::cvn::#1::\expandafter\endcsname\number#2\relax
+ \else
+ \number#2%
+ \fi}
+
+\def\doconversionnumber#1#2%
+ {\ifx#2\relax
+ \expandafter\gobbleoneargument
+ \else
+ #1{#2}%
+ \expandafter\doconversionnumber
+ \fi#1}
+
+%D \macros
+%D {protectconversion}
+%D
+%D The previous two commands are not robust enough to be
+%D passed to \type{\write} en \type{\message}. That's why we
+%D introduce:
+
+\def\protectconversion
+ {\def\doconvertcharacters##1{##1}} % was \relax
+ %{\def\doconvertcharacters##1{\ifcase0##1 0\else##1\fi}} more save
+
+%D \macros
+%D {normaltime,normalyear,normalmonth,normalday}
+%D
+%D The last part of this module is dedicated to converting
+%D dates. Because we want to use as meaningful commands as
+%D possible, and because \TEX\ already uses up some of those,
+%D we save the original meanings.
+
+\savenormalmeaning\time
+\savenormalmeaning\year
+\savenormalmeaning\month
+\savenormalmeaning\day
+
+%D \macros
+%D {month,MONTH}
+%D
+%D Converting the month number into a month name is done
+%D using a case statement, abstact values and the label
+%D mechanism. This way users can easily redefine a label from
+%D for instance german into austrian.
+%D
+%D \starttyping
+%D \setuplabeltext [de] [january=J\"anner]
+%D \stoptyping
+%D
+%D Anyhow, the conversion looks like:
+
+\def\doconvertmonth#1%
+ {\labeltext
+ {\ifcase#1%
+ \or \v!january \or \v!february \or \v!march \or \v!april
+ \or \v!may \or \v!june \or \v!july \or \v!august
+ \or \v!september \or \v!october \or \v!november \or \v!december
+ \fi}}
+
+%D We redefine the \TEX\ primitive \type{\month} as:
+%D
+%D \showsetup{month}
+%D \showsetup{MONTH}
+
+\def\month
+ {\doconvertmonth}
+
+\def\MONTH#1%
+ {{\let\labeltext\LABELTEXT\month{#1}}}
+
+%D We never explicitly needed this, but Tobias Burnus pointed
+%D out that it would be handy to convert to the day of the
+%D week. In doing so, we have to calculate the total number of
+%D days, taking leapyears into account. For those who are
+%D curious:
+%D
+%D \startitemize[packed]
+%D \item years that can be divided by 4 are leapyears
+%D \item exept years that can be divided by 100
+%D \item unless years can be divided by 400
+%D \stopitemize
+%D
+%D This makes the year 1900 into a normal year and 1996 and
+%D 2000 into leap years, right? Well, converting to string
+%D looks familiar:
+
+\def\doconvertday#1%
+ {\labeltext
+ {\ifcase#1
+ \or \v!sunday \or \v!monday \or \v!tuesday \or \v!wednesday
+ \or \v!thursday \or \v!friday \or \v!saturday \fi}}
+
+%D \macros
+%D {getdayoftheweek, dayoftheweek}
+%D
+%D The conversion algoritm is an old one and a translation from
+%D a procedure written in MODULA~2 back in the 80's. I finaly
+%D found the 4--100-400 rules in some enclopedia. Look at this
+%D messy low level routine that takes the day, month and year
+%D as arguments:
+
+\newcount\normalweekday
+
+\def\getdayoftheweek#1#2#3%
+ {\bgroup
+ \!!counta#3\relax
+ \advance\!!counta \minusone
+ \!!countb\!!counta
+ \multiply\!!countb 365
+ \advance\!!countb \ifcase#2\relax
+ 0 \or 0 \or 31 \or 59 \or 90 \or120 \or151 \or
+ 181 \or212 \or243 \or273 \or304 \or334 \or365 \fi
+ \advance\!!countb #1\relax
+ \ifnum#2>2
+ \doifleapyearelse{#3}{\advance\!!countb 1}{}\relax
+ \fi
+ \!!countc\!!counta
+ \dosetdivision\!!countc4\!!countc
+ \advance\!!countb \!!countc
+ \!!countc\!!counta
+ \dosetdivision\!!countc{100}\!!countc
+ \advance\!!countb -\!!countc
+ \!!countc\!!counta
+ \dosetdivision\!!countc{400}\!!countc
+ \advance\!!countb \!!countc
+ \dosetmodulo\!!countb7\!!countb
+ \advance\!!countb \plusone
+ \@EA\egroup\@EA\normalweekday\the\!!countb\relax}
+
+\def\dayoftheweek#1#2#3%
+ {\getdayoftheweek{#1}{#2}{#3}\doconvertday{\normalweekday}}
+
+%D Using this macro in
+%D
+%D \startbuffer
+%D monday: \dayoftheweek {4} {5} {1992}
+%D friday: \dayoftheweek {16} {6} {1995}
+%D monday: \dayoftheweek {25} {8} {1997}
+%D saturday: \dayoftheweek {30} {8} {1997}
+%D tuesday: \dayoftheweek {2} {1} {1996}
+%D tuesday: \dayoftheweek {7} {1} {1997}
+%D tuesday: \dayoftheweek {13} {1} {1998}
+%D friday: \dayoftheweek {1} {1} {2000}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D The macro \type {\getdayoftheweek} can be used to calculate
+%D the number \type {\normalweekday}.
+
+%D \macros
+%D {weekday,WEEKDAY}
+%D
+%D The first one is sort of redundant. It takes the day
+%D number argument.
+%D
+%D \showsetup{weekday}
+%D \showsetup{WEEKDAY}
+
+\def\weekday
+ {\doconvertday}
+
+\def\WEEKDAY#1%
+ {{\let\labeltext\LABELTEXT\doconvertday{#1}}}
+
+%D \macros
+%D {weekoftheday}
+%D
+%D {\em not yet implemented:}
+%D
+%D \starttyping
+%D \def\weekoftheday#1#2#3%
+%D {}
+%D \stoptyping
+
+%D \macros
+%D {doifleapyearelse,
+%D getdayspermonth}
+%D
+%D Sometimes we need to know if we're dealing with a
+%D leapyear, so here is a testmacro:
+%D
+%D \starttyping
+%D \doifleapyearelse{year}{yes}{no}
+%D \stoptyping
+%D
+%D An example of its use can be seen in the macro
+%D
+%D \starttyping
+%D \getdayspermonth{year}{month}
+%D \stoptyping
+%D
+%D The number of days is available in the macro \type
+%D {\numberofdays}.
+
+\def\doifleapyearelse#1% #2#3%
+ {\bgroup
+ \!!doneafalse
+ \!!counta#1%
+ \dosetmodulo\!!counta4\!!countb
+ \ifcase\!!countb
+ \dosetmodulo\!!counta{100}\!!countb
+ \ifcase\!!countb \else \!!doneatrue \fi
+ \dosetmodulo\!!counta{400}\!!countb
+ \ifcase\!!countb \!!doneatrue \fi
+ \fi
+ \if!!donea
+ \egroup\@EA\firstoftwoarguments % \def\next{#2}%
+ \else
+ \egroup\@EA\secondoftwoarguments % \def\next{#3}%
+ \fi} % \next}
+
+\def\getdayspermonth#1#2%
+ {\doifleapyearelse{#1}
+ {\def\numberofdays{29}}
+ {\def\numberofdays{28}}%
+ \edef\numberofdays
+ {\ifcase#2 \or31\or\numberofdays\or31\or30\or
+ 31\or30\or31\or31\or30\or31\or30\or31\fi}}
+
+%D \macros
+%D {currentdate, date}
+%D
+%D We use these conversion macros in the date formatting
+%D macro:
+%D
+%D \showsetup{currentdate}
+%D
+%D This macro takes care of proper spacing and delivers for
+%D instance:
+%D
+%D \startbuffer
+%D \currentdate[weekday,day,month,year] % still dutch example
+%D \currentdate[WEEKDAY,day,MONTH,year] % still dutch example
+%D \stopbuffer
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D depending of course on the keywords. Here we gave:
+%D
+%D \typebuffer
+%D
+%D If needed one can also add non||keywords, like in
+%D
+%D \startbuffer
+%D \currentdate[dd,--,mm,--,yy]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or typeset: \getbuffer.
+%D
+%D When no argument is passed, the current date is given as
+%D specified per language (using \type{\installlanguage}).
+%D
+%D \showsetup{currentdate}
+%D
+%D \startbuffer
+%D \date
+%D \date[d=12,m=12,y=1998][weekday]
+%D \date[d=12,m=12,y=1998]
+%D \stopbuffer
+%D
+%D We can also typeset arbitrary dates, using the previous
+%D command.
+%D
+%D \typebuffer
+%D
+%D The date is specified by one character keys. When no date
+%D is given, we get the current date.
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+
+\def\kenmerkdatumpatroon{j,mm,dd} % jj,mm,dd changed at januari 1-1-2000
+
+\newsignal\datesignal
+
+\def\dobetweendates
+ {\ifdim\lastskip=\datesignal\relax\else
+ \unskip\space
+ \hskip\datesignal\relax
+ \fi}
+
+% \def\complexcurrentdate[#1]%
+% {\bgroup
+% \let\labellanguage\currentlanguage
+% \def\betweendates{\let\betweendates\dobetweendates}%
+% \lowercase{\edef\!!stringa{#1}}% permits usage in \smallcapped
+% \@EA\processallactionsinset\@EA
+% [\!!stringa]
+% [ \v!day=>\betweendates\the\normalday,
+% %\v!day+=>\betweendates\ordinaldaynumber\normalday,
+% \v!day+=>\betweendates\convertnumber{\v!day+}\normalday,
+% \v!month=>\betweendates\month\normalmonth,
+% \v!year=>\betweendates\the\normalyear,
+% \v!space=>\unskip\ \hskip\datesignal,% optimization -)
+% \ =>\unskip\ \hskip\datesignal,% optimization -)
+% d=>\convertnumber\v!day\normalday,
+% %d+=>\ordinaldaynumber\normalday,
+% d+=>\convertnumber{\v!day+}\normalday,
+% m=>\convertnumber\v!month\normalmonth,
+% j=>\convertnumber\v!year\normalyear,
+% y=>\convertnumber\v!year\normalyear,
+% w=>\betweendates\dayoftheweek\normalday\normalmonth\normalyear,
+% dd=>\ifnum\normalday >9 \else0\fi\the\normalday,
+% %dd+=>\ordinaldaynumber{\ifnum\normalday >9 \else0\fi\the\normalday},
+% dd+=>\convertnumber{\v!day+}{\ifnum\normalday >9 \else0\fi\the\normalday},
+% mm=>\ifnum\normalmonth>9 \else0\fi\the\normalmonth,
+% jj=>\expandafter\gobbletwoarguments\the\normalyear,
+% yy=>\expandafter\gobbletwoarguments\the\normalyear,
+% \v!weekday=>\betweendates\dayoftheweek\normalday\normalmonth\normalyear,
+% \v!referral=>\expanded{\complexcurrentdate[\kenmerkdatumpatroon]},
+% \s!unknown=>\unskip
+% \commalistelement
+% \hskip\datesignal
+% \def\betweendates{\let\betweendates\dobetweendates}]%
+% \ifdim\lastskip=\datesignal\relax
+% \unskip
+% \fi
+% \egroup}
+
+\def\complexcurrentdate[#1]%
+ {\bgroup
+ \let\labellanguage\currentlanguage
+ \def\betweendates{\let\betweendates\dobetweendates}%
+ \processcommacommand[#1]\docomplexcurrentdate
+ \ifdim\lastskip=\datesignal\relax
+ \unskip
+ \fi
+ \egroup}
+
+\def\docomplexcurrentdate#1%
+ {\lowercase{\edef\!!stringa{#1}}% permits usage in \smallcapped
+ \processaction
+ [#1]
+ [ \v!day=>\betweendates\the\normalday,
+ %\v!day+=>\betweendates\ordinaldaynumber\normalday,
+ \v!day+=>\betweendates\convertnumber{\v!day+}\normalday,
+ \v!month=>\betweendates\month\normalmonth,
+ \v!year=>\betweendates\the\normalyear,
+ \v!space=>\unskip\ \hskip\datesignal,% optimization -)
+ \ =>\unskip\ \hskip\datesignal,% optimization -)
+ d=>\convertnumber\v!day\normalday,
+ %d+=>\ordinaldaynumber\normalday,
+ d+=>\convertnumber{\v!day+}\normalday,
+ m=>\convertnumber\v!month\normalmonth,
+ j=>\convertnumber\v!year\normalyear,
+ y=>\convertnumber\v!year\normalyear,
+ w=>\betweendates\dayoftheweek\normalday\normalmonth\normalyear,
+ dd=>\ifnum\normalday >9 \else0\fi\the\normalday,
+ %dd+=>\ordinaldaynumber{\ifnum\normalday >9 \else0\fi\the\normalday},
+ dd+=>\convertnumber{\v!day+}{\ifnum\normalday >9 \else0\fi\the\normalday},
+ mm=>\ifnum\normalmonth>9 \else0\fi\the\normalmonth,
+ jj=>\expandafter\gobbletwoarguments\the\normalyear,
+ yy=>\expandafter\gobbletwoarguments\the\normalyear,
+ \v!weekday=>\betweendates\dayoftheweek\normalday\normalmonth\normalyear,
+ \v!referral=>\expanded{\complexcurrentdate[\kenmerkdatumpatroon]},
+ \s!unknown=>\unskip
+ % #1 and not the lowercased \commalistelement, vietnamese has text
+ % {} because #1 can have comma, like: {\ ,}
+ {#1}%
+ \hskip\datesignal
+ \def\betweendates{\let\betweendates\dobetweendates}]}
+
+\def\simplecurrentdate
+ {\expanded{\complexcurrentdate[\currentdatespecification]}}
+
+\definecomplexorsimple\currentdate
+
+\def\dodate[#1][#2]%
+ {\bgroup
+ \iffirstargument
+ \getparameters[\??da][d=\normalday,m=\normalmonth,y=\normalyear,#1]%
+ \normalday \@@dad\relax
+ \normalmonth\@@dam\relax
+ \normalyear \@@day\relax
+ \ifsecondargument
+ \currentdate[#2]%
+ \else
+ \currentdate
+ \fi
+ \else
+ \currentdate
+ \fi
+ \egroup}
+
+\def\date
+ {\dodoubleempty\dodate}
+
+%D \macros
+%D {currenttime}
+%D
+%D The currenttime is actually the jobtime. You can specify
+%D a pattern similar to the previous date macro using the
+%D keys \type {h}, \type {m} and a separator.
+
+\def\calculatecurrenttime
+% {\DoDiv\time by60to\scratchcounter\edef\currenthour {\the\scratchcounter}%
+% \DoMod\time by60to\scratchcounter\edef\currentminute{\the\scratchcounter}}
+ {\dosetdivision\time{60}\scratchcounter
+ \edef\currenthour {\ifnum\scratchcounter<10 0\fi \the\scratchcounter}%
+ \dosetmodulo \time{60}\scratchcounter
+ \edef\currentminute{\ifnum\scratchcounter<10 0\fi \the\scratchcounter}}
+
+\appendtoks \calculatecurrenttime \to \everyjob
+
+\def\currenttimespecification{h,:,m}
+
+\def\complexcurrenttime[#1]%
+ {\calculatecurrenttime
+ \processallactionsinset[#1]
+ [h=>\currenthour,m=>\currentminute,\s!unknown=>\commalistelement]}
+
+\def\simplecurrenttime
+ {\expanded{\complexcurrenttime[\currenttimespecification]}}
+
+\definecomplexorsimple\currenttime
+
+%D Because we're dealing with dates, we also introduce a few
+%D day loops:
+%D
+%D \starttyping
+%D \processmonth{year}{month}{command}
+%D \processyear{year}{command}{before}{after}
+%D \stoptyping
+%D
+%D The counters \type {\normalyear}, \type {\normalmonth} and
+%D \type{\normalday} can be used for for date manipulations.
+
+\long\def\processmonth#1#2#3% year month command
+ {\bgroup
+ \getdayspermonth{#1}{#2}%
+ \dostepwiserecurse1\numberofdays1%
+ {\normalyear #1\relax
+ \normalmonth#2\relax
+ \normalday \recurselevel\relax
+ #3}%
+ \egroup}
+
+\def\lastmonth{12} % can be set to e.g. 1 when testing
+
+\long\def\processyear#1#2#3#4% year command before after
+ {\bgroup
+ \dorecurse\lastmonth
+ {\normalyear #1\relax
+ \normalmonth\recurselevel\relax
+ #3\processmonth\normalyear\normalmonth{#2}#4}%
+ \egroup}
+
+%D \macros
+%D {defineconversion, convertnumber}
+%D
+%D Conversion involves the macros that we implemented earlier
+%D in this module.
+%D
+%D \showsetup{defineconversion}
+%D \showsetup{convertnumber}
+%D
+%D We can feed this command with conversion macros as well as
+%D a set of conversion symbols. Both need a bit different
+%D treatment.
+%D
+%D \starttyping
+%D \defineconversion [roman] [\romannumerals]
+%D \defineconversion [set 1] [$\star$,$\bullet$,$\ast$]
+%D \stoptyping
+%D
+%D You can define a language dependent conversion with:
+%D
+%D \starttyping
+%D \defineconversion [en] [whatever] [\something]
+%D \stoptyping
+
+% \def\dodefineconversion[#1][#2]%
+% {\ConvertConstantAfter\doifinstringelse{,}{#2}
+% {\scratchcounter=0
+% \def\docommando##1%
+% {\advance\scratchcounter 1
+% \setvalue{\??cv#1\the\scratchcounter}{##1}}%
+% \processcommalist[#2]\docommando
+% \setvalue{\??cv#1}##1{\csname\??cv#1##1\endcsname}}
+% {\setvalue{\??cv#1}{#2}}}
+%
+% \def\defineconversion%
+% {\dodoubleargument\dodefineconversion}
+
+\def\defineconversion
+ {\dotripleempty\dodefineconversion}
+
+\def\dodefineconversion[#1][#2][#3]%
+ {\ifthirdargument
+ \dododefineconversion[#1][#2][#3]%
+ \else
+ \dododefineconversion[][#1][#2]%
+ \fi}
+
+\def\dododefineconversion[#1][#2][#3]%
+ {\ConvertConstantAfter\doifinstringelse{,}{#3}
+ {\scratchcounter\zerocount
+ \def\docommando##1%
+ {\advance\scratchcounter \plusone
+ \setvalue{\??cv#1#2\the\scratchcounter}{##1}}%
+ \processcommalist[#3]\docommando
+ \setvalue{\??cv#1#2}##1{\csname\??cv#1#2##1\endcsname}}
+ {\setvalue{\??cv#1#2}{#3}}}
+
+% \def\convertnumber#1%
+% {\csname\??cv#1\endcsname}
+
+% \def\convertnumber#1%
+% {\csname\??cv
+% \ifundefined{\??cv\currentlanguage#1}\else\currentlanguage\fi
+% #1\endcsname}
+
+% \def\doifconversiondefinedelse#1%
+% {\ifundefined{\??cv#1}%
+% \@EA\secondoftwoarguments
+% \else
+% \@EA\firstoftwoarguments
+% \fi}
+
+% \def\doifconversiondefinedelse#1%
+% {\ifundefined{\??cv\ifundefined{\??cv\currentlanguage:#1}\else\currentlanguage\fi#1}%
+% \@EA\secondoftwoarguments
+% \else
+% \@EA\firstoftwoarguments
+% \fi}
+
+\beginETEX \ifcsname
+
+\def\convertnumber#1%
+ {\csname\??cv
+ \ifcsname\??cv\currentlanguage#1\endcsname
+ \currentlanguage#1%
+ \else\ifcsname\??cv#1\endcsname
+ #1%
+ \else
+ \s!default
+ \fi\fi
+ \endcsname}
+
+\def\doifconversiondefinedelse#1%
+ {\ifcsname\??cv\currentlanguage#1\endcsname
+ \@EA\firstoftwoarguments
+ \else\ifcsname\??cv#1\endcsname
+ \@EAEAEA\firstoftwoarguments
+ \else
+ \@EAEAEA\secondoftwoarguments
+ \fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\convertnumber#1%
+ {\csname\??cv
+ \@EA\ifx\csname\??cv\currentlanguage#1\endcsname\relax
+ \@EA\ifx\csname\??cv#1\endcsname\relax
+ \s!default
+ \else
+ #1%
+ \fi
+ \else
+ \currentlanguage#1%
+ \fi
+ \endcsname}
+
+\def\doifconversiondefinedelse#1%
+ {\@EA\ifx\csname\??cv\currentlanguage#1\endcsname\relax
+ \@EA\ifx\csname\??cv#1\endcsname\relax
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi
+ \else
+ \@EA\firstoftwoarguments
+ \fi}
+
+\endTEX
+
+\defineconversion [\s!default] [\number]
+
+%D As longs as symbols are linked to levels or numbers, we can
+%D also use the conversion mechanism, but in for instance the
+%D itemization macros, we prefer symbols because they can more
+%D easier be (partially) redefined. Symbols are implemented
+%D in another module.
+
+\defineconversion [] [\numbers] % the default conversion
+
+\defineconversion [a] [\characters]
+\defineconversion [A] [\Characters]
+\defineconversion [AK] [\smallcapped\characters]
+\defineconversion [KA] [\smallcapped\characters]
+
+\defineconversion [n] [\numbers]
+\defineconversion [N] [\Numbers]
+\defineconversion [m] [\mediaeval]
+
+\defineconversion [i] [\romannumerals]
+\defineconversion [I] [\Romannumerals]
+\defineconversion [r] [\romannumerals]
+\defineconversion [R] [\Romannumerals]
+\defineconversion [KR] [\smallcapped\romannumerals]
+\defineconversion [RK] [\smallcapped\romannumerals]
+
+\defineconversion [g] [\greeknumerals]
+\defineconversion [G] [\Greeknumerals]
+
+\defineconversion [o] [\oldstylenumerals]
+\defineconversion [O] [\oldstylenumerals]
+\defineconversion [or] [\oldstyleromannumerals]
+
+\defineconversion [\v!character] [\character]
+\defineconversion [\v!Character] [\Character]
+
+\defineconversion [\v!characters] [\characters]
+\defineconversion [\v!Characters] [\Characters]
+
+\defineconversion [\v!numbers] [\numbers]
+\defineconversion [\v!Numbers] [\Numbers]
+\defineconversion [\v!mediaeval] [\mediaeval]
+
+\defineconversion [\v!romannumerals] [\romannumerals]
+\defineconversion [\v!Romannumerals] [\Romannumerals]
+
+\defineconversion [\v!greek] [\greeknumerals]
+\defineconversion [\v!Greek] [\Greeknumerals]
+
+\defineconversion [arabicnumerals] [\numbers]
+\defineconversion [persiannumerals] [\numbers]
+
+\beginXETEX \number
+
+\defineconversionvector{arabicnumerals} {"0660}
+\defineconversionvector{persiannumerals} {"06F0}
+\defineconversionvector{thainumerals} {"0E50}
+\defineconversionvector{devanagarinumerals}{"0966}
+\defineconversionvector{gurmurkhinumerals} {"0A66}
+\defineconversionvector{gujaratinumerals} {"0AE6}
+\defineconversionvector{tibetannumerals} {"0F20} % also "half numerals?"
+
+\defineconversion[arabicnumerals] [\conversionnumber{arabicnumerals}]
+\defineconversion[persiannumerals] [\conversionnumber{persiannumerals}]
+\defineconversion[thainumerals] [\conversionnumber{thainumerals}]
+\defineconversion[devanagarinumerals][\conversionnumber{devanagarinumerals}]
+\defineconversion[gurmurkhinumerals] [\conversionnumber{gurmurkhinumerals}]
+\defineconversion[gujaratinumerals] [\conversionnumber{gujaratinumerals}]
+\defineconversion[tibetannumerals] [\conversionnumber{tibetannumerals}]
+
+\endXETEX
+
+% Some bonus ones:
+
+\defineconversion [\v!empty] [\gobbleoneargument]
+\defineconversion [\v!none] [\numbers]
+
+\defineconversion
+ [set 0]
+ [{\symbol[bullet]},
+ {\symbol[dash]},
+ {\symbol[star]},
+ {\symbol[triangle]},
+ {\symbol[circle]},
+ {\symbol[medcircle]},
+ {\symbol[bigcircle]},
+ {\symbol[square]}]
+
+\defineconversion
+ [set 1]
+ [\mathematics{\star},
+ \mathematics{\star\star},
+ \mathematics{\star\star\star},
+ \mathematics{\ddagger},
+ \mathematics{\ddagger\ddagger},
+ \mathematics{\ddagger\ddagger\ddagger},
+ \mathematics{\ast},
+ \mathematics{\ast\ast},
+ \mathematics{\ast\ast\ast}]
+
+\defineconversion
+ [set 2]
+ [\mathematics{*},
+ \mathematics{\dag},
+ \mathematics{\ddag},
+ \mathematics{**},
+ \mathematics{\dag\dag},
+ \mathematics{\ddag\ddag},
+ \mathematics{***},
+ \mathematics{\dag\dag\dag},
+ \mathematics{\ddag\ddag\ddag},
+ \mathematics{****},
+ \mathematics{\dag\dag\dag\dag},
+ \mathematics{\ddag\ddag\ddag\ddag}]
+
+\defineconversion
+ [set 3]
+ [\mathematics{\star},
+ \mathematics{\star\star},
+ \mathematics{\star\star\star},
+ \mathematics{\ddagger},
+ \mathematics{\ddagger\ddagger},
+ \mathematics{\ddagger\ddagger\ddagger},
+ \mathematics{\P},
+ \mathematics{\P\P},
+ \mathematics{\P\P\P},
+ \mathematics{\S},
+ \mathematics{\S\S},
+ \mathematics{\S\S\S},
+ \mathematics{\ast},
+ \mathematics{\ast\ast},
+ \mathematics{\ast\ast\ast}]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-dat.tex b/Master/texmf-dist/tex/context/base/core-dat.tex
new file mode 100644
index 00000000000..239b27d70eb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-dat.tex
@@ -0,0 +1,288 @@
+%D \module
+%D [ file=core-dat, % was core-02a,
+%D version=1999.08.10, % 1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Database Support, % 2A
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% THIS WILL DISAPPEAR, I.E. BE MOVED TO A MODULE
+
+\writestatus{loading}{Context Database Support}
+
+\startmessages dutch library: databases
+ title: database
+ 1: --
+ 2: lokaal bestand --
+ 3: globaal bestand --
+ 4: onbekend bestand --
+\stopmessages
+
+\startmessages english library: databases
+ title: databases
+ 1: --
+ 2: local file --
+ 3: global file --
+ 4: unknown file --
+\stopmessages
+
+\startmessages german library: databases
+ title: Datenbank
+ 1: --
+ 2: lokale Datei --
+ 3: globale Datei --
+ 4: unbekannte Datei --
+\stopmessages
+
+% TOM :
+
+\startmessages czech library: databases
+ title: databases
+ 1: --
+ 2: local file --
+ 3: global file --
+ 4: unknown file --
+\stopmessages
+
+\startmessages italian library: databases
+ title: database
+ 1: --
+ 2: file locale --
+ 3: file globale --
+ 4: file sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: databases
+ title: databaser
+ 1: --
+ 2: lokal fil --
+ 3: global fil --
+ 4: ukjent fil --
+\stopmessages
+
+\startmessages romanian library: databases
+ title: baze de date
+ 1: --
+ 2: fisier local --
+ 3: fisier global --
+ 4: fisier necunoscut --
+\stopmessages
+
+\unprotect
+
+%D This module is a (limited) rewrite of the original \type
+%D {core-02a} module, the module that dealt with managing a
+%D database of addresses. The principles and methods have not
+%D changed; they are only generalized.
+%D
+%D A database file |<|in most cases such a base is generated
+%D from another one|>| is structured as follows:
+%D
+%D \starttyping
+%D \startrecord{tag}
+%D \memberofgroup{grouplist}
+%D \setrecordentry{name}{...}
+%D ....
+%D \stoprecord
+%D \stoptyping
+%D
+%D The interface to such a database is defined as follows:
+%D
+%D \starttyping
+%D \definerecord[class][settings]
+%D \setuprecord[class][settings]
+%D \definerecordentry[class][name]
+%D \stoptyping
+%D
+%D and processed by
+%D
+%D \starttyping
+%D \processrecords[file list][tag and/or group list]
+%D \stoptyping
+%D
+%D The actual processing is done by a macro assigned to \type
+%D {command}:
+%D
+%D \starttyping
+%D \setuprecord[class][command=\DoWithRecord]
+%D \stoptyping
+%D
+%D Given that one can ask for a field with
+%D
+%D \starttyping
+%D \getrecordentry{name}
+%D \stoptyping
+%D
+%D such a command can look like:
+%D
+%D \starttyping
+%D \def\DoWithRecord#1%
+%D {\startpacked
+%D \let\\=\quad
+%D name: \getrecordentry{name}~\getrecordentry{family name}\par
+%D address: \getrecordentry{postal address}\par
+%D \stoppacked}
+%D \stoptyping
+%D
+%D The argument passed is the tag. The database can look like:
+%D
+%D \starttyping
+%D \startrecord{hagenj}
+%D \memberofgroup{a,b}
+%D \setrecordentry{naam}{Hans}
+%D \setrecordentry{family name}{Hagen}
+%D \setrecordentry{postal address}{J. Hagen\\Ridderstraat 29\\Hasselt NL}
+%D \stoprecord
+%D
+%D \startrecord{ottenaf}
+%D \memberofgroup{a}
+%D \setrecordentry{name}{Ton}
+%D \setrecordentry{family name}{Otten}
+%D \setrecordentry{postal address}{A.F. Otten\\Prinsengracht 17\\Hasselt NL}
+%D \stoprecord
+%D \stoptyping
+%D
+%D The definition of this database looks like:
+%D
+%D \starttyping
+%D \definerecord[address][command=\DoWithRecord]
+%D
+%D \definerecordentry[address][name]
+%D \definerecordentry[address][family name]
+%D \definerecordentry[address][postal address]
+%D \stoptyping
+%D
+%D The actual processing is now done by (for instance):
+%D
+%D \starttyping
+%D \processrecords[datafile][hagenj]
+%D \processrecords[datafile][hagenj,offenaf]
+%D \processrecords[datafile][all]
+%D \processrecords[datafile][a]
+%D \processrecords[datafile][b]
+%D \stoptyping
+%D
+%D Of course one can reassign the command used to handle the
+%D records in between.
+
+% \??kt ->
+% \??kw ->
+
+\def\??db {@@db}
+\def\c!velden{velden}
+
+%\newevery \everyrecord \EveryRecord
+
+\def\definerecord
+ {\dodoubleempty\dodefinerecord}
+
+\def\dodefinerecord[#1][#2]%
+ {\getparameters
+ [\??db#1]
+ [\c!velden=,
+ \c!command=\gobbleoneargument,
+ #2]}
+
+\def\setuprecord
+ {\dodoubleargument\dosetuprecord}
+
+\def\dosetuprecord[#1][#2]%
+ {\getparameters[\??db#1][#2]}%
+
+\def\definerecordentry[#1][#2]%
+ {\edef\recordentries{\getvalue{\??db#1\c!velden}}%
+ \addtocommalist{#2}\recordentries
+ \letvalue{\??db#1\c!velden}\recordentries}
+
+%D Watch out: the entries are defined global! While
+%D processing a record, no grouping is applied.
+
+\def\getrecordentry #1{\getvalue {\??db:#1}}
+\def\resetrecordentry #1{\letgvalueempty{\??db:#1}}
+\def\assignrecordentry#1{\setgvalue {\??db:#1}}
+
+\long\def\skiprecord#1\stoprecord
+ {\egroup}
+
+\newif\ifrecordok
+
+\newtoks\resetrecordlist
+
+\def\processrecords
+ {\dotripleargument\doprocessrecords}
+
+\def\doprocessrecords[#1][#2][#3]%
+ {\bgroup
+ \ifx\\\undefined\let\\\relax\fi
+ \def\docommando##1%
+ {\resetrecordentry{##1}%
+ \appendtoks\resetrecordentry{##1}\to\resetrecordlist}%
+ \processcommacommand[\getvalue{\??db#1\c!velden}]\docommando
+ \let\setrecordentry\skiprecord
+ \the\resetrecordlist
+ \doifelse{#2}\v!all % 't Is nu eenmaal alles
+ \recordoktrue
+ {\doifelsenothing{#2} % of niets
+ \recordoktrue
+ \recordokfalse}% % zullen we maar zeggen.
+ \ifrecordok
+ \let\askedrecords\v!all
+ \else
+ \makerawcommalist[#2]\askedrecords
+ \fi
+ \def\checkrecord##1%
+ {\rawdoifinsetelse{##1}{\askedrecords}{\recordoktrue}{}}%
+ \def\presetrecord##1%
+ {\let\setrecordentry\assignrecordentry
+ \let\memberofgroup\gobbleoneargument
+ \the\resetrecordlist
+ \def\stoprecord{\dostoprecord{##1}}}%
+ \def\memberofgroup##1%
+ {\doifsomething{##1}
+ {\rawprocesscommalist[##1]\checkrecord}%
+ \ifrecordok
+ \presetrecord{##1}%
+ \else
+ \expandafter\skiprecord
+ \fi}%
+ \def\startrecord##1%
+ {\bgroup
+ \ifrecordok
+ \presetrecord{##1}%
+ \else
+ \checkrecord{##1}%
+ \ifrecordok
+ \presetrecord{##1}%
+ \fi
+ \fi}%
+ \def\dostoprecord##1%
+ {\relax
+ \egroup
+ %\the\everyrecord
+ \getvalue{\??db#1\c!command}{##1}}%
+ \showmessage\m!databases1\askedrecords
+ \def\doprocessrecords##1%
+ {\readjobfile{##1}
+ {\showmessage\m!databases2{(job)}}
+ {\readsysfile{##1}
+ {\showmessage\m!databases3{(sys)}}
+ {\showmessage\m!databases4{}}}}%
+ \processcommalist[#3]\doprocessrecords
+ \egroup}
+
+%D While writing the original implementation, I did some
+%D experiments with \type {%} before each entry and changing
+%D the category code of the comment char. Because \TEX\ scans
+%D the line anyway |<|this is needed because the end of line
+%D character can be non standard|>| this is not faster.
+%D
+%D Although this mechanism could have been combined with the
+%D block moving mechaism, the current implementation is
+%D prefered out of speed reasons.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-def.tex b/Master/texmf-dist/tex/context/base/core-def.tex
new file mode 100644
index 00000000000..3e7a3585d15
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-def.tex
@@ -0,0 +1,34 @@
+%D \module
+%D [ file=core-def,
+%D version=2002.05.07,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Defaults,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Defaults}
+
+%D Here we collect default settings. More code will moved to
+%D this module later.
+
+\unprotect
+
+%D We preload a couple of symbol|(|sets): a few defaults,
+%D the marvo symbols and a few guillemot replacements.
+
+\usesymbols[mis,mvs,glm]
+
+%D We also choose a navigation symbol set:
+
+\usesymbols[nav] \setupsymbolset[navigation 1]
+
+\setupinteraction[\c!symbolset=navigation 1]
+
+%D In \type {core-nav}, we choose this set as well.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-des.tex b/Master/texmf-dist/tex/context/base/core-des.tex
new file mode 100644
index 00000000000..f2612be3db5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-des.tex
@@ -0,0 +1,944 @@
+%D \module
+%D [ file=core-des,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Descriptions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Descriptions}
+
+\unprotect
+
+% Dit kan en moet dus anders:
+%
+% \start... : \vbox\bgroup
+% \stop... : \egroup
+% llap enz.
+% geen indent!
+%
+% enz. enz.
+%
+% Op die manier is meer mogelijk en worden \par's geskipt.
+%
+% De macro \??dd#1\s!do\c!commando levert de koppeling tussen
+% \doornumberen en \doordefinieren. Deze constructie is nodig
+% omdat doornummeren geen argument heeft en omdat subnummers
+% niet worden genest binnen het hogere niveau.
+%
+% herimplementeren met \nextbox en \unhbox\unvbox
+
+% list and titles are experiental
+%
+% \definedescription[test] [location=left,hang=4,headalign={right},distance=1em,list=test]
+% \defineenumeration[lemma][title=yes,right=:,textdistance=1em, location=top, titlestyle=\bs,list=lemma]
+% \defineenumeration[ammel][title=yes,right=:,textdistance=.5em,location=left,titlestyle=\it,width=9em]
+%
+% \placelist[enumeration:lemma]
+% \placelist[description:test][width=0pt]
+%
+% \starttest {something something something} \input zapf \stoptest
+% \startlemma {with a title of a certain length} \input tufte \stoplemma
+% \startammel {with a title} \input zapf \stopammel
+%
+% \defineenumeration[lemma][...]
+% \defineenumeration[titledlemma][lemma][title=yes,right=:,text=lemma,list=lemma]
+
+\newbox\@@descriptionbox
+
+\def\descriptionparameter #1{\csname\??dd\currentdescription#1\endcsname}
+
+\def\@@descriptionhandler{\descriptionparameter{\s!do\c!command}}
+
+% \def\normal@@descriptionhandler[#1]#2#3%
+% {\doattributes
+% {\??dd\currentdescription}\c!headstyle\c!headcolor
+% {\descriptionparameter\c!command{#3}}% NAAR BUITENSTE NIVEAU !
+% \rawreference\s!def{#1}{#2}} % brrr moet in #4
+
+\def\normal@@descriptionhandler[#1]#2#3%
+ {\doattributes
+ {\??dd\currentdescription}\c!headstyle\c!headcolor
+ {\descriptionparameter\c!command{#3}}% NAAR BUITENSTE NIVEAU !
+ \doifsomething{\descriptionparameter\c!list}
+ {\dowritetolist
+ {\descriptionparameter\c!type:\descriptionparameter\c!list}
+ {}{#2}{\currentdescription}}%
+ \rawreference\s!def{#1}{#2}} % brrr moet in #4
+
+\setvalue{@@description\v!left}%
+ {\@@descriptionhang\@@descriptionleftpure\@@descriptionlefthang}
+
+\setvalue{@@description\v!right}%
+ {\@@descriptionhang\@@descriptionrightpure\@@descriptionrighthang}
+
+\def\@@descriptionhang#1#2%
+ {\processaction
+ [\descriptionparameter\c!hang]
+ [ \v!none=>\let\next#1,%
+ 0=>\let\next#1,%
+ \s!unknown=>\let\next#2,%
+ \s!default=>\let\next#1]%
+ \next}
+
+\def\@@descriptionleftpure[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \noindent\ignorespaces
+ \leftskip\@@leftdescriptionskip
+ \rightskip\@@rightdescriptionskip
+ \advance\leftskip \!!widtha
+ \@@makedescriptionpurebox\raggedright
+ \advance\leftskip \!!widthb
+ \llap
+ {\hbox to \leftskip
+ {\hskip\@@leftdescriptionskip
+ \copy\@@descriptionbox\hss}}%
+ \@@dodescription}
+
+\def\@@descriptionrightpure[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \noindent\ignorespaces
+ \leftskip\@@leftdescriptionskip
+ \rightskip\@@rightdescriptionskip
+ \advance\rightskip \!!widtha
+ \@@makedescriptionpurebox\raggedleft
+ \rlap
+ {\hskip\hsize
+ \hskip-\leftskip
+ \hskip-\rightskip
+ \copy\@@descriptionbox
+ \hskip\@@rightdescriptionskip}%
+ \advance\rightskip \!!widthb
+ \@@dodescription}
+
+\def\@@makedescriptionpurebox#1%
+ {\setbox\@@descriptionbox\vtop
+ {\dontcomplain
+ \hsize\!!widtha
+ \leftskip\zeropoint
+ \rightskip\zeropoint
+ #1\setupalign[\descriptionparameter\c!align]%
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox}%
+ \ht\@@descriptionbox\strutht
+ \dp\@@descriptionbox\strutdp}
+
+\def\@@descriptionlefthang[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \dontcomplain
+ \advance\!!widtha \!!widthb
+ \hangindent\!!widtha
+ \@@makedescriptionhangbox\raggedright{\advance\rightskip \!!widthb}%
+ \noindent\ignorespaces
+ \llap
+ {\dontshowcomposition
+ \vtop to \zeropoint{\box\@@descriptionbox}}%
+ \@@dodescription}
+
+\def\@@descriptionrighthang[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \dontcomplain
+ \advance\!!widtha \!!widthb
+ \hangindent-\!!widtha
+ \@@makedescriptionhangbox\raggedleft{\advance\leftskip \!!widthb}%
+ \noindent\ignorespaces
+ \rlap
+ {\dontcomplain
+ \dontshowcomposition
+ \scratchdimen\hsize
+ \advance\scratchdimen -\leftskip
+ \advance\scratchdimen -\rightskip
+ \hbox to \scratchdimen
+ {\hss\vtop to \zeropoint{\box\@@descriptionbox}}}%
+ \@@dodescription}
+
+\def\@@makedescriptionhangbox#1#2%
+ {\setbox\@@descriptionbox\vtop % \vbox gaat fout in hang
+ {\forgetall
+ \dontcomplain
+ \hsize\!!widtha
+ #1\setupalign[\descriptionparameter\c!align]#2%
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox}%
+ \ht\@@descriptionbox\strutht
+ \dp\@@descriptionbox\strutdp
+ \doifsomething{\descriptionparameter\c!hang}
+ {\doifinsetelse{\descriptionparameter\c!hang}{\v!fit,\v!broad}
+ {\scratchdimen\ht\@@descriptionbox
+ \advance\scratchdimen \dp\@@descriptionbox
+ \doif{\descriptionparameter\c!hang}\v!broad
+ {\advance\scratchdimen .5\strutht}%
+ \getnoflines\scratchdimen
+ \hangafter-\noflines}
+ {\hangafter-\descriptionparameter\c!hang}}}
+
+\setvalue{@@description\v!top}[#1]#2%
+ {%\page[\v!preference]% % Weg ermee!
+ %\dosomebreak{\goodbreak}% % Dit is beter en nodig!
+ \dohandlepagebreakX\plusone % En dit moet het maar worden.
+ \@@dostartdescription[#1]{\let\\=\space}{#2}%
+ \noindent\ignorespaces
+ \copy\@@descriptionbox\par
+ \nobreak
+ \descriptionparameter\c!inbetween
+ \nobreak
+ \@@dodescription}
+
+\def\do@@description#1[#2]#3%
+ {\@@dostartdescription[#2]{\def\\{\crlf}}{#3}%
+ \noindent\ignorespaces % not needed this ignore
+ #1{\ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox}%
+ \@@dodescription}
+
+\setvalue{@@description\v!inmargin }{\do@@description\inmargin}
+\setvalue{@@description\v!inleft }{\do@@description\inleft }
+\setvalue{@@description\v!inright }{\do@@description\inright }
+\setvalue{@@description\v!margin }{\do@@description\inmargin}
+\setvalue{@@description\v!leftmargin }{\do@@description\inleft }
+\setvalue{@@description\v!rightmargin }{\do@@description\inright }
+\setvalue{@@description\v!innermargin }{\do@@description\ininner }
+\setvalue{@@description\v!outermargin }{\do@@description\inouter }
+
+\setvalue{@@description\v!serried\v!fit}[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \noindent\ignorespaces
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox
+ \hskip\!!widthb % toegevoegd
+ \@@dodescription}
+
+\setvalue{@@description\v!serried\v!broad}[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \noindent\ignorespaces
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox
+ \hskip\!!widthb \!!plus .5\!!widthb \!!minus .25\!!widthb
+ \@@dodescription}
+
+\setvalue{@@description\v!serried\v!wide}[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}%
+ \noindent\ignorespaces
+ \hbox to \!!widtha
+ {\ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox\hss}%
+ \hskip\!!widthb
+ \ignorespaces
+ \@@dodescription}
+
+\setvalue{@@description\v!serried}[#1]#2%
+ {\processaction
+ [\descriptionparameter\c!width]
+ [ \v!fit=>\let\next\v!fit,
+ \v!broad=>\let\next\v!broad,
+ \s!unknown=>\let\next\v!wide,
+ \s!default=>\let\next\v!broad]%
+ \getvalue{@@description\v!serried\next}[#1]{#2}}
+
+\setvalue{@@description\v!hanging}[#1]#2%
+ {\@@dostartdescription[#1]{\def\\{\crlf}}{#2}% % adds \c!margin to \leftskip
+ \noindent\ignorespaces
+ \advance\leftskip -\leftskipadaption \relax
+ \ifdim\leftskipadaption=\zeropoint
+ \leftskipadaption1.5em % just some default
+ \ifnum\insidedefinition=\plusone
+ \ifdim\leftskip>\zeropoint \relax
+ \leftskipadaption\leftskip
+ \fi
+ \fi
+ \fi
+ \ifnum\insidedefinition=\plusone
+ \advance\leftskip \leftskipadaption
+ \fi
+ \hskip-\leftskipadaption
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi\@@descriptionbox
+ \kern\ifdim\!!widthb=\zeropoint .75em\else\!!widthb\fi
+ \ignorespaces
+ \@@dodescription}
+
+%D A bonus definition
+%D
+%D \starttyping
+%D \setupfootnotedefinition[location=command,headcommand=\llap]
+%D \stoptyping
+
+\setvalue{@@description\v!command}#1%
+ {\do@@description{\executeifdefined{\??dd#1\c!headcommand}\framed}{#1}}
+
+%D A new key 'headalign' in definitions.
+
+\chardef\insidedefinition=0
+
+\let\@@leftdescriptionskip \!!zeropoint
+\let\@@rightdescriptionskip\!!zeropoint
+
+\def\@@dostartdescription[#1]#2#3%
+ {\descriptionparameter\c!before
+ \begingroup
+ \doadaptleftskip{\descriptionparameter\c!margin}%
+ \showcomposition
+ \!!widthb\descriptionparameter\c!distance\relax
+ \ifdim\!!widthb=\zeropoint\relax
+ \doif{\descriptionparameter\c!width}\v!broad{\!!widthb=1em}%
+ \fi
+ % temp hack, we need to avoid this kind of preprocessing
+ \setbox\@@descriptionbox\hbox % preroll
+ {\forgetall
+ \trialtypesettingtrue
+ \dontcomplain
+ #2% sets \\ to space or \crlf
+ \@@descriptionhandler[#1]{#3}{\begstrut\descriptionparameter\c!text\ignorespaces#3\endstrut}}%
+ % so far
+ \assignwidth
+ \!!widtha
+ {\descriptionparameter\c!width}%
+ {\doifelsenothing{\descriptionparameter\c!sample}%
+ {% preroll can move here (test first)
+ \ifhbox\@@descriptionbox\unhcopy\else\copy\fi \@@descriptionbox}%
+ {\@@descriptionhandler[#1]{#3}{\descriptionparameter\c!text\descriptionparameter\c!sample}}}
+ \!!widthb
+ \setbox\@@descriptionbox\hbox
+ {\forgetall
+ \dontcomplain
+ #2% sets \\ to space or \crlf
+ \doifelse{\descriptionparameter\c!location}\v!serried
+ {\@@descriptionhandler[#1]{#3}{\begstrut\descriptionparameter\c!text#3\endstrut}}
+ {\@@descriptionhandler[#1]{#3}{\vtop{\hsize\!!widtha\advance\hsize-\!!widthb
+ \begstrut\descriptionparameter\c!text\ignorespaces#3\endstrut}}}}%
+ \doifelse{\descriptionparameter\c!aligntitle}\v!no
+ {\edef\@@leftdescriptionskip {\the\leftskip }%
+ \edef\@@rightdescriptionskip{\the\rightskip}}
+ {\ifcase\insidedefinition
+ \edef\@@leftdescriptionskip {\the\leftskip }%
+ \edef\@@rightdescriptionskip{\the\rightskip}%
+ \fi}%
+ \expanded{\indenting[\descriptionparameter\c!indenting]}%
+ % better a system mode
+ \ifcase\insidedefinition
+ \chardef\insidedefinition\plusone
+ \or
+ \chardef\insidedefinition\plustwo
+ \fi} % now happens elsewhere : \noindent\ignorespaces
+
+\def\@@stopdescription#1%
+ {\def\currentdescription{#1}%
+ \dostopattributes
+ \par % maybe better after \dostopattributes
+ \endgroup
+ \descriptionparameter\c!after
+ \egroup % temporary hack
+ \dochecknextindentation{\??dd#1}}% \currentdescription}}
+
+\def\@@dodescription
+ {\dostartattributes{\??dd\currentdescription}\c!style\c!color\empty
+ \ignorespaces}
+
+% starters:
+
+% \def\@@startdescription[#1][#2]%
+% {\def\currentdescription{#1}%
+% \doifelse{\descriptionparameter{\s!do\c!state}}\v!start
+% {\@@startsomedescription{#1}[#2]{}}
+% {\dowithwargument{\@@startsomedescription{#1}[#2]}}}
+%
+% \def\@@description[#1][#2]%
+% {\def\currentdescription{#1}%
+% \doifelse{\descriptionparameter{\s!do\c!state}}\v!start
+% {\@@somedescription{#1}[#2]{}}
+% {\dowithwargument{\@@somedescription{#1}[#2]}}}
+
+\def\@@startdescription[#1][#2]%
+ {\def\currentdescription{#1}%
+ \doifelse{\descriptionparameter\c!title}\v!yes
+ {\dowithwargument{\@@startsomedescription{#1}[#2]}}
+ {\@@startsomedescription{#1}[#2]{}}}
+
+\def\@@description[#1][#2]%
+ {\def\currentdescription{#1}%
+ \doifelse{\descriptionparameter\c!title}\v!yes
+ {\dowithwargument{\@@somedescription{#1}[#2]}}
+ {\@@somedescription{#1}[#2]{}}}
+
+% these call:
+
+\def\@@somedescription#1[#2]#3%
+ {\dowithpar
+ {\bgroup\@@makedescription{#1}[#2]{#3}}%
+ {\@@stopdescription{#1}}}
+
+\def\@@startsomedescription#1[#2]#3%
+ {\bgroup % temporary hack
+ \BeforePar{\@@makedescription{#1}[#2]{#3}}%
+ \GotoPar}
+
+% which calls:
+
+\def\@@makedescription#1%
+ {\def\currentdescription{#1}%
+ \executeifdefined
+ {@@description\descriptionparameter\c!location}
+ {\getvalue{@@description\v!left}}}
+
+% \def\@@makedescription#1%
+% {\def\currentdescription{#1}%
+% \ifundefined{@@description\descriptionparameter\c!location}%
+% \letvalue{\??dd#1\c!location}\v!left
+% \fi
+% \getvalue{@@description\descriptionparameter\c!location}}
+
+% definitions
+
+\def\setupdescriptions
+ {\dodoubleempty\dosetupdescriptions}
+
+\def\dosetupdescriptions[#1][#2]% % beter: \iffirstargument
+ {\ConvertToConstant\doifelse{#2}{}
+ {\dodosetupdescriptions[][#1]}
+ {\dodoubleargumentwithset\dodosetupdescriptions[#1][#2]}}
+
+\def\dodosetupdescriptions[#1]% [#2]%
+ {\getparameters[\??dd#1]} % [#2]}
+
+% \def\dodefinedescription[#1][#2]%
+% {\copyparameters[\??dd#1][\??dd]
+% [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+% \c!width,\c!hang,\c!sample,\c!before,\c!inbetween,\c!after,\c!margin,
+% \c!indenting,\c!indentnext,\c!align,\c!text,\c!distance,\c!titledistance,\c!command]%
+% \getparameters[\??dd#1]
+% [\s!do\c!state=\v!stop,\s!do\c!command=\normal@@descriptionhandler,\c!level=,#2]%
+% %\doifvalue{\??dd#1\c!location}\v!top{\doassign[\??dd#1][\c!inbetween=\blank]}%
+% \doifvalue{\??dd#1\c!location}\v!top % we actually need more granularity
+% {\doifnotvalue{\??dd#1\c!inbetween}{\doassign[\??dd#1][\c!inbetween=\blank]}}%
+% \setvalue {#1}{\dodoubleempty\@@description[#1]}%
+% \setvalue{\e!start#1}{\dodoubleempty\@@startdescription[#1]}%
+% \setvalue{\e!stop #1}{\@@stopdescription{#1}}}%
+
+\def\dodefinedescription[#1][#2]%
+ {\copyparameters[\??dd#1][\??dd]
+ [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+ \c!width,\c!hang,\c!sample,\c!before,\c!inbetween,\c!after,\c!margin,
+ \c!indenting,\c!indentnext,\c!align,\c!text,\c!distance,\c!titledistance,\c!command]%
+ \getparameters[\??dd#1]
+ [\c!title=\v!yes,\s!do\c!command=\normal@@descriptionhandler,
+ \c!type=\v!description,\c!list=,\c!listtext=,
+ \c!level=,#2]%
+ %\doifvalue{\??dd#1\c!location}\v!top{\doassign[\??dd#1][\c!inbetween=\blank]}%
+ \doifvalue{\??dd#1\c!location}\v!top % we actually need more granularity
+ {\doifnotvalue{\??dd#1\c!inbetween}{\doassign[\??dd#1][\c!inbetween=\blank]}}%
+ \doifvaluesomething{\??dd#1\c!list}
+ {\definelist[\getvalue{\??dd#1\c!type}:\getvalue{\??dd#1\c!list}]}% new
+ \setvalue {#1}{\dodoubleempty\@@description[#1]}%
+ \setvalue{\e!start#1}{\dodoubleempty\@@startdescription[#1]}%
+ \setvalue{\e!stop #1}{\@@stopdescription{#1}}}
+
+\def\definedescription
+ {\dodoubleemptywithset\dodefinedescription}
+
+\def\currentdescriptionnumber
+ {\csname\??dd\currentdescription\??dd\c!number\endcsname}
+
+% \def\special@@descriptionhandler[#1]#2#3%
+% {\strut
+% \doifelse{\descriptionparameter\c!number}\v!no
+% \!!doneafalse{\doifelse{#1}{-}\!!doneafalse\!!doneatrue}%
+% \chardef\descriptioncoupling\zerocount
+% \iflocation
+% \doifsomething{\descriptionparameter\c!coupling}
+% {\processaction % genereert > of <
+% [\descriptionparameter\c!couplingway]
+% [ \v!local=>\chardef\descriptioncoupling\plusone, % old: default
+% \v!global=>\chardef\descriptioncoupling\plustwo]}% new: global crosslinking
+% \fi
+% \setupnumber % the number is called indirectly
+% [\currentdescriptionnumber]
+% [\c!sectionnumber=\descriptionparameter\c!sectionnumber]%
+% \if!!donea
+% \makeprecedingsectionnumber[\currentdescriptionnumber]%
+% \preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+% \iftrialtypesetting\startlocal\fi
+% \getvalue{\e!next\currentdescription}% tricky but we need the preroll
+% \iftrialtypesetting\stoplocal\fi
+% % \getvalue{\e!next#2#1}%
+% \iflocation
+% \bgroup
+% \letvalue{\??dd\currentdescription\c!sectionnumber}\v!yes
+% \protectconversion
+% \makeprecedingsectionnumber[\currentdescriptionnumber]%
+% \preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+% \ifcase\descriptioncoupling \or
+% \xdef\@@internalenumber{\doshowdnnumber}%
+% \rawreference\s!num{#1:\@@internalenumber}{}%
+% \or
+% \xdef\@@internalenumber{\countervalue{\??dd\c!coupling\currentdescription}}%
+% \rawreference\s!num{\currentdescription:\@@internalenumber}{}%
+% \fi
+% \egroup
+% \fi
+% %\makeprecedingsectionnumber[\currentdescriptionnumber]%
+% %\preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+% \disablepseudocaps % sorry, uppercase causes troubles
+% \doattributes % \nocase primitive needed
+% {\??dd\currentdescription}\c!headstyle\c!headcolor % todo: sub as well
+% {\descriptionparameter\c!command{\showdntext\domakednnumber}}% hook for taco
+% \iflocation\ifcase\descriptioncoupling \else
+% \edef\localconnection{\descriptionparameter\c!coupling:\@@internalenumber}%
+% \doifreferencefoundelse\localconnection
+% {\in[\localconnection]}\donothing % genereert > of <
+% \fi\fi
+% \doifnot{#1}{-}{\rawreference\s!num{#1}{\doshowdnnumber}}%
+% \else % Why was this strange expansion needed?
+% \edef\!!stringa{\showdnpuretext}% nog eens testen binnen \expanded
+% \expanded{\doattributes{\??dd\currentdescription}\noexpand\c!headstyle\noexpand\c!headcolor
+% {\noexpand\descriptionparameter\noexpand\c!command{\!!stringa}}}%
+% \doifnot{#1}{-}{\rawreference\s!num{#1}{}}%
+% \fi}
+
+\def\special@@descriptionhandler[#1]#2#3%
+ {\strut
+ \doifelse{\descriptionparameter\c!number}\v!no
+ \!!doneafalse{\doifelse{#1}{-}\!!doneafalse\!!doneatrue}%
+ \chardef\descriptioncoupling\zerocount
+ \iflocation
+ \doifsomething{\descriptionparameter\c!coupling}
+ {\processaction % genereert > of <
+ [\descriptionparameter\c!couplingway]
+ [ \v!local=>\chardef\descriptioncoupling\plusone, % old: default
+ \v!global=>\chardef\descriptioncoupling\plustwo]}% new: global crosslinking
+ \fi
+ \setupnumber % the number is called indirectly
+ [\currentdescriptionnumber]
+ [\c!sectionnumber=\descriptionparameter\c!sectionnumber]%
+ \if!!donea
+ \makeprecedingsectionnumber[\currentdescriptionnumber]%
+ \preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+ \iftrialtypesetting\startlocal\fi
+ \getvalue{\e!next\currentdescription}% tricky but we need the preroll
+ \iftrialtypesetting\stoplocal\fi
+ % \getvalue{\e!next#2#1}%
+ \iflocation
+ \bgroup
+ \letvalue{\??dd\currentdescription\c!sectionnumber}\v!yes
+ \protectconversion
+ \makeprecedingsectionnumber[\currentdescriptionnumber]%
+ \preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+ \ifcase\descriptioncoupling \or
+ \xdef\@@internalenumber{\doshowdnnumber}%
+ \rawreference\s!num{#1:\@@internalenumber}{}%
+ \or
+ \xdef\@@internalenumber{\countervalue{\??dd\c!coupling\currentdescription}}%
+ \rawreference\s!num{\currentdescription:\@@internalenumber}{}%
+ \fi
+ \egroup
+ \fi
+ %\makeprecedingsectionnumber[\currentdescriptionnumber]%
+ %\preparethenumber{\??dd\currentdescription}\precedingsectionnumber\preparednumber
+ \disablepseudocaps % sorry, uppercase causes troubles
+ \doattributes % \nocase primitive needed
+ {\??dd\currentdescription}\c!headstyle\c!headcolor % todo: sub as well
+ {\descriptionparameter\c!command
+ {\showdntext
+ \domakednnumber
+ \doif{\descriptionparameter\c!title}\v!yes % new, for david antos
+ {\doattributes{\??dd\currentdescription}\c!titlestyle\c!titlecolor
+ {\hskip\descriptionparameter\c!titledistance\begstrut#2\endstrut}}%
+ }}% \c!command is hook for taco
+ \doifsomething{\descriptionparameter\c!list} % also for david antos
+ {\dowritetolist
+ {\descriptionparameter\c!type:\descriptionparameter\c!list}
+ {\showdnlisttext\doshowdnnumber}{#2}{\currentdescription}}%
+ \iflocation\ifcase\descriptioncoupling \else
+ \edef\localconnection{\descriptionparameter\c!coupling:\@@internalenumber}%
+ \doifreferencefoundelse\localconnection
+ {\in[\localconnection]}\donothing % genereert > of <
+ \fi\fi
+ \doifnot{#1}{-}{\rawreference\s!num{#1}{\doshowdnnumber}}%
+ \else % Why was this strange expansion needed?
+ \edef\!!stringa{\showdnpuretext}% nog eens testen binnen \expanded
+ \expanded{\doattributes{\??dd\currentdescription}\noexpand\c!headstyle\noexpand\c!headcolor
+ {\noexpand\descriptionparameter\noexpand\c!command{\!!stringa}}}%
+ \doifnot{#1}{-}{\rawreference\s!num{#1}{}}%
+ \fi}
+
+\def\showdnpuretext
+ {\strut\descriptionparameter\c!text} % geen spatie
+
+\def\showdnlisttext
+ {\descriptionparameter\c!listtext} % space in default
+
+\def\showdntext
+ {\doifelsenothing{\descriptionparameter\c!text}
+ {\ignorespaces}
+ {\strut
+ \descriptionparameter\c!text
+ \removeunwantedspaces\fixedspace}}
+
+\def\doshowdnnumber
+ {\getvalue{showdn\descriptionparameter\c!level\c!number}}
+
+% maybe recursive until end condition undefined
+
+\setvalue{showdn\c!number}%
+ {\preparednumber
+ \convertednumber[\currentdescriptionnumber]}
+
+\setvalue{showdn\v!sub\c!number}%
+ {\getvalue{showdn\c!number}%
+ \descriptionparameter\c!separator
+ \convertednumber[\v!sub\currentdescriptionnumber]}
+
+\setvalue{showdn\v!sub\v!sub\c!number}%
+ {\getvalue{showdn\v!sub\c!number}%
+ \descriptionparameter\c!separator
+ \convertednumber[\v!sub\v!sub\currentdescriptionnumber]}
+
+\setvalue{showdn\v!sub\v!sub\v!sub\c!number}%
+ {\getvalue{showdn\v!sub\v!sub\c!number}%
+ \descriptionparameter\c!separator
+ \convertednumber[\v!sub\v!sub\v!sub\currentdescriptionnumber]}
+
+\def\domakednnumber
+ {\descriptionparameter\c!left
+ \strut\doshowdnnumber
+ \descriptionparameter\c!stopper
+ \descriptionparameter\c!right}
+
+\setvalue{\??dd\s!set\v!sub\s!sub\s!sub\c!number}#1%
+ {\edef\@@descriptionnumber{\currentdescriptionnumber}%
+ \setnumber[\v!sub\v!sub\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!set\v!sub\s!sub\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\v!sub\c!number}{#1}%
+ \setnumber[\v!sub\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!set\v!sub\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\c!number}{#1}%
+ \setnumber[\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!set\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\c!number}{#1}%
+ \setnumber[\@@descriptionnumber]}
+
+\setvalue{\??dd\s!reset\v!sub\v!sub\v!sub\c!number}#1%
+ {\edef\@@descriptionnumber{\currentdescriptionnumber}%
+ \resetnumber[\v!sub\v!sub\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!reset\v!sub\v!sub\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\v!sub\c!number}{#1}%
+ \resetnumber[\v!sub\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!reset\v!sub\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\c!number}{#1}%
+ \resetnumber[\v!sub\@@descriptionnumber]}
+
+\setvalue{\??dd\s!reset\c!number}#1%
+ {\getvalue{\??dd\s!reset\v!sub\c!number}{#1}%
+ \resetnumber[\@@descriptionnumber]}
+
+\setvalue{\??dd\e!next\v!sub\v!sub\v!sub\c!number}[#1]%
+ {\edef\@@descriptionnumber{\currentdescriptionnumber}%
+ \incrementnumber[\v!sub\v!sub\v!sub\@@descriptionnumber]%
+ \rawreference\s!num{#1}{\getvalue{showdn\v!sub\v!sub\v!sub\c!number}}}%
+
+\setvalue{\??dd\e!next\v!sub\v!sub\c!number}[#1]%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\v!sub\c!number}{#1}%
+ \incrementnumber[\v!sub\v!sub\@@descriptionnumber]%
+ \rawreference\s!num{#1}{\getvalue{showdn\v!sub\v!sub\c!number}}}%
+
+\setvalue{\??dd\e!next\v!sub\c!number}[#1]%
+ {\getvalue{\??dd\s!reset\v!sub\v!sub\c!number}{#1}%
+ \incrementnumber[\v!sub\@@descriptionnumber]%
+ \rawreference\s!num{#1}{\getvalue{showdn\v!sub\c!number}}}%
+
+\setvalue{\??dd\e!next\c!number}[#1]%
+ {\getvalue{\??dd\s!reset\v!sub\c!number}{#1}%
+ \incrementnumber[\@@descriptionnumber]%
+ \rawreference\s!num{#1}{\getvalue{showdn\c!number}}}%
+
+\def\dodosetupenumerations[#1][#2]%
+ {\getparameters[\??dd#1][#2]%
+ \doifdefined{\??dd#1\c!start}
+ {\setupnumber[#1][\c!start=\getvalue{\??dd#1\c!start}]}%
+ \setupnumber[#1][\c!conversion=\getvalue{\??dd#1\c!conversion}]}
+
+\def\dosetupenumerations[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\getparameters[\??dn][#1]}
+ {\dodoubleargumentwithset\dodosetupenumerations[#1][#2]}}
+
+\def\setupenumerations
+ {\dodoubleempty\dosetupenumerations}
+
+% \def\dododefineenumeration#1#2#3[#4][#5]%
+% {\makecounter{\??dd\c!coupling#1}% new: global cross linking
+% \dodefinedescription[#3#1]%
+% [\s!do\c!state=\v!start,\c!level=#3,
+% \s!do\c!command=\special@@descriptionhandler]%
+% \copyparameters[\??dd#3#1][\??dn]
+% [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+% \c!width,\c!number,\c!distance,\c!command,
+% \c!sample,\c!hang,\c!align,\c!before,\c!inbetween,\c!after,
+% \c!levels,\c!way,\c!blockway,\c!separator,\c!margin,
+% \c!indenting,\c!indentnext,\c!stopper,\c!sectionnumber,
+% \c!number]%
+% \doifassignmentelse{#4}
+% {\getparameters[\??dd#3#1]%
+% [\c!text=#1,\??dd\c!number=#1,\c!conversion=,
+% \c!left=,\c!right=,\c!coupling=,\c!couplingway=\v!local,#4]}%
+% {\doifelsenothing{#4}
+% {\getparameters[\??dd#3#1]%
+% [\c!text=#1,\??dd\c!number=#1,\c!conversion=,
+% \c!stopper=,
+% \c!left=,\c!right=,\c!coupling=,\c!couplingway=,#4]}%
+% {\copyparameters[\??dd#3#1][\??dd#3#4]
+% [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+% \c!width,\c!number,\c!distance,\c!command,\c!margin,
+% \c!sample,\c!hang,\c!align,\c!before,\c!inbetween,\c!after,
+% \c!stopper,\c!indenting,\c!indentnext,\c!left,\c!right,
+% \c!coupling,\c!couplingway]%
+% \getparameters[\??dd#3#1]
+% [\c!text=#1,\??dd\c!number=#4,\c!conversion=,#5]}}%
+% \doifvalue{\??dd#3#1\??dd\c!number}{#1}
+% {\definenumber
+% [#3#1]
+% [\c!way=\descriptionparentparameter\c!way,
+% \c!blockway=\descriptionparentparameter\c!blockway,
+% \c!sectionnumber=\descriptionparentparameter\c!sectionnumber]%
+% \doifvalue{\??dd#1\c!levels}{#2}% % for
+% {\doifsomething{\getvalue{\??dd#1\c!conversion}}% % old
+% {\setupnumber[#3#1] % times
+% [\c!conversion=\descriptionparameter\c!conversion]}}}% % sake
+% \setvalue{\s!set #3#1}{\dosetenumerationnumber[#1][#3]}%
+% \setvalue{\s!reset#3#1}{\doresetenumerationnumber[#1][#3]}%
+% \setvalue{\e!next #3#1}{\dotripleempty\donextenumerationnumber[#1][#3]}}
+
+\def\dododefineenumeration#1#2#3[#4][#5]%
+ {\makecounter{\??dd\c!coupling#1}% new: global cross linking
+ \dodefinedescription[#3#1]%
+ [\c!title=\v!no,\c!level=#3,\c!type=\v!enumeration,\c!list=,%
+ \s!do\c!command=\special@@descriptionhandler]%
+ \copyparameters[\??dd#3#1][\??dn]
+ [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+ \c!width,\c!number,\c!distance,\c!titledistance,\c!command,
+ \c!sample,\c!hang,\c!align,\c!before,\c!inbetween,\c!after,
+ \c!levels,\c!way,\c!blockway,\c!separator,\c!margin,
+ \c!indenting,\c!indentnext,\c!stopper,\c!sectionnumber,
+ \c!number]%
+ \doifassignmentelse{#4}
+ {\getparameters[\??dd#3#1]%
+ [\c!text=#1,\??dd\c!number=#1,\c!conversion=,\c!listtext=#1\space,
+ \c!left=,\c!right=,\c!coupling=,\c!couplingway=\v!local,#4]}%
+ {\doifelsenothing{#4}
+ {\getparameters[\??dd#3#1]%
+ [\c!text=#1,\??dd\c!number=#1,\c!conversion=,
+ \c!stopper=,
+ \c!left=,\c!right=,\c!coupling=,\c!couplingway=,#4]}%
+ {\copyparameters[\??dd#3#1][\??dd#3#4]
+ [\c!location,\c!headstyle,\c!style,\c!color,\c!headcolor,
+ \c!width,\c!number,\c!distance,\c!titledistance,\c!command,\c!margin,
+ \c!sample,\c!hang,\c!align,\c!before,\c!inbetween,\c!after,
+ \c!stopper,\c!indenting,\c!indentnext,\c!left,\c!right,
+ \c!coupling,\c!couplingway]%
+ \getparameters[\??dd#3#1]
+ [\c!text=#1,\??dd\c!number=#4,\c!conversion=,#5]}}%
+ \doifvalue{\??dd#3#1\??dd\c!number}{#1}
+ {\definenumber
+ [#3#1]
+ [\c!way=\descriptionparentparameter\c!way,
+ \c!blockway=\descriptionparentparameter\c!blockway,
+ \c!sectionnumber=\descriptionparentparameter\c!sectionnumber]%
+ \doifvalue{\??dd#1\c!levels}{#2}% % for
+ {\doifsomething{\getvalue{\??dd#1\c!conversion}}% % old
+ {\setupnumber[#3#1] % times
+ [\c!conversion=\descriptionparameter\c!conversion]}}}% % sake
+ \doifvaluesomething{\??dd#3#1\c!list}
+ {\definelist[\getvalue{\??dd#3#1\c!type}:\getvalue{\??dd#3#1\c!list}]}% new
+ \setvalue{\s!set #3#1}{\dosetenumerationnumber[#1][#3]}%
+ \setvalue{\s!reset#3#1}{\doresetenumerationnumber[#1][#3]}%
+ \setvalue{\e!next #3#1}{\dotripleempty\donextenumerationnumber[#1][#3]}}
+
+\def\descriptionparentparameter#1{\csname\??dd\currentdescriptionnumber#1\endcsname}
+
+\def\dodefineenumeration[#1][#2][#3]%
+ {\dododefineenumeration{#1}{1}{}[#2][#3]%
+ \dododefineenumeration{#1}{2}{\v!sub}[#2][#3]%
+ \dododefineenumeration{#1}{3}{\v!sub\v!sub}[#2][#3]%
+ \dododefineenumeration{#1}{4}{\v!sub\v!sub\v!sub}[#2][#3]}
+
+\def\defineenumeration
+ {\dotripleemptywithset\dodefineenumeration}
+
+\def\doresetenumerationnumber[#1][#2]%
+ {\getvalue{\??dd\s!reset#2\c!number}{#1}}%
+
+\def\dosetenumerationnumber[#1][#2]%
+ {\getvalue{\??dd\s!set#2\c!number}{#1}}%
+
+\def\donextenumerationnumber[#1][#2][#3]%
+ {\pluscounter{\??dd\c!coupling#1}% new: global crosslinking
+ \getvalue{\??dd\e!next#2\c!number}[#3]}%
+
+% Het default-mechanisme kan mooier: leegtest, enz.
+%
+% Werkprocedure buiten description
+
+\def\dodosetupindentations[#1][#2]%
+ {\getparameters[\??ds#1][#2]}
+
+\def\dosetupindentations[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\dodosetupindentations[][#1]}
+ {\dodoubleargumentwithset\dodosetupindentations[#1][#2]}}
+
+\def\setupindentations
+ {\dodoubleempty\dosetupindentations}
+
+% what to do with this
+
+\def\startdoorspringen
+ {\whitespace
+ \@@dsbefore
+ \dosomebreak\goodbreak % \page[\v!preference]
+ \begingroup
+ \parskip\zeropoint\relax}
+
+\def\stopdoorspringen
+ {\endgroup
+ \@@dsafter}
+
+%
+
+\def\dododefineindenting#1#2#3%
+ {\par
+ \getvalue{\??ds#1\c!before}%
+ \begingroup
+ \doifvaluenothing{\??ds#1\c!sample}
+ {\setvalue{\??ds#1\c!sample}%
+ {\getvalue{\??ds#1\c!text}}}%
+ \assignwidth
+ {\!!widtha}
+ {\getvalue{\??ds#1\c!width}}
+ {\doattributes
+ {\??ds#1}\c!headstyle\c!headcolor
+ {\getvalue{\??ds#1\c!sample}\getvalue{\??ds#1\c!separator}}}
+ {\getvalue{\??ds#1\c!distance}}%
+ \advance\!!widtha \getvalue{\??ds#1\c!distance}%
+ \setbox2\hbox to \!!widtha
+ {\doattributes
+ {\??ds#1}\c!headstyle\c!headcolor
+ {\strut
+ \getvalue{\??ds#1\c!text}%
+ \hss
+ \getvalue{\??ds#1\c!separator}%
+ \hskip\getvalue{\??ds#1\c!distance}}}%
+ \parindent\zeropoint
+ \hskip#2\!!widtha\indent\box2%
+ \hangindent#3\!!widtha
+ \doattributes{\??ds#1}\c!style\c!color\empty
+ \AfterPar{\endgroup\getvalue{\??ds#1\c!after}}% must be redone
+ \GetPar}
+
+\def\dodefineindenting[#1][#2]%
+ {\copyparameters[\??ds#1][\??ds]
+ [\c!text,\c!separator,\c!width,\c!style,\c!color,
+ \c!headstyle,\c!sample,\c!before,\c!after,\c!distance]%
+ \getparameters[\??ds#1][#2]%
+ \setvalue {#1}{\dododefineindenting{#1}{0}{1}}%
+ \setvalue {\v!sub#1}{\dododefineindenting{#1}{1}{2}}%
+ \setvalue{\v!sub\v!sub#1}{\dododefineindenting{#1}{2}{3}}}
+
+\def\defineindenting
+ {\dodoubleargumentwithset\dodefineindenting}
+
+\def\definelabel
+ {\dodoubleargumentwithset\dodefinelabel}
+
+\def\dodefinelabel[#1][#2]%
+ {\definenumber
+ [#1]
+ [\c!command=,\c!location=,#2]%
+ % downward compatible
+ \processaction
+ [\numberparameter{#1}\c!location]
+ [ \v!inmargin=>{\setupnumber[#1][\c!command=\inmargin]},
+ \v!inleft=>{\setupnumber[#1][\c!command=\inleft ]},
+ \v!inright=>{\setupnumber[#1][\c!command=\inright ]},
+ \v!margin=>{\setupnumber[#1][\c!command=\inmargin]}]%
+ % generated commands (in addition to the number ones)
+ \setvalue {#1}{\dodoubleempty\do@@label[#1]}%
+ \setvalue{\s!reset #1}{\resetnumber[#1]}%
+ \setvalue{\e!increment#1}{\incrementnumber[#1]}%
+ \setvalue{\e!next #1}{\dodoubleempty\do@@nextlabel[#1]}%
+ \setvalue{\c!current #1}{\currentnumber[#1]}}
+
+\def\do@@label[#1][#2]%
+ {\numberparameter{#1}\c!before
+ \numberparameter{#1}\c!command
+ {\doattributes{\@@thenumber{#1}}\c!headstyle\c!headcolor
+ {\dotextprefix{\numberparameter{#1}\c!text}%
+ \getvalue{\e!next#1}[#2]}}%
+ \numberparameter{#1}\c!after}%
+
+\def\do@@nextlabel[#1][#2]%
+ {\nextnumber[#1][\s!lab][#2]}
+
+\setupdescriptions
+ [\c!location=\v!left,
+ \c!headstyle=\v!bold,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!headcolor=,
+ \c!width=8em,
+ \c!distance=0pt,
+ \c!titledistance=0pt,
+ \c!hang=,
+ \c!sample=,
+ \c!align=,
+ \c!margin=\v!no,
+ \c!before=\blank,
+ \c!inbetween=\blank,
+ \c!after=\blank,
+ \c!indentnext=\v!yes,
+ \c!indenting=\v!never,
+ \c!command=]
+
+\setupenumerations
+ [\c!location=\v!top,
+ \c!headstyle=\v!bold,
+ \c!headcolor=,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!width=8em,
+ \c!distance=0pt,
+ \c!titledistance=0pt,
+ \c!hang=,
+ \c!sample=,
+ \c!align=,
+ \c!margin=\v!no,
+ \c!before=\blank,
+ \c!inbetween=\blank,
+ \c!after=\blank,
+ \c!indentnext=\v!yes,
+ \c!indenting=\v!never,
+ \c!text=,
+ \c!levels=3, % to be upward compatible
+ \c!conversion=, % to be upward compatible
+ \c!way=\v!by\v!text,
+ \c!sectionnumber=\v!yes,
+ \c!separator=.,
+ \c!stopper=,
+ \c!number=,
+ \c!command=]
+
+\setupindentations
+ [\c!style=\v!normal,
+ \c!headstyle=\v!normal,
+ \c!color=,
+ \c!headcolor=,
+ \c!width=\v!fit,
+ \c!text=\unknown,
+ \c!sample=,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!distance=1em,
+ \c!separator={ :}]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-fig.tex b/Master/texmf-dist/tex/context/base/core-fig.tex
new file mode 100644
index 00000000000..572500bbdaf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-fig.tex
@@ -0,0 +1,2292 @@
+%D \module
+%D [ file=core-fig,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Figure Inclusion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% error in calculations : .25% (too much: 1.5pt over full page)
+%
+% this module will be reimplemented(read: cleaned up)
+
+\writestatus{loading}{Context Core Macros / Figure Inclusion}
+
+\unprotect
+
+% tex, tmp, mov and avi will become part of the fuzzy
+% graphics and also behandled by special drivers; the
+% current support is hackery
+
+% figurefilemode checken
+% zowieso alles checken
+% movie scanner
+
+%D Scanning for illustrations is automated to the max. Right
+%D from the beginning \CONTEXT\ supported figure inclusion
+%D using a dedicated figure directory file. Apart from the fact
+%D that such a file enables us to include graphics that cannot
+%D be parsed by \TEX\ for dimensions, by using this file we can
+%D also quite easily generate figure directories. Only when
+%D \PDFTEX\ started offering \PDF\ inclusion, I felt the need
+%D to automate dimension detection to a higher degree.
+%D Fortunately \TEXUTIL\ can scan more types now as well as
+%D that we can run \TEXUTIL\ from within \TEX.
+
+\startmessages dutch library: figures
+ title: figuren
+ 1: figuur -- is niet te vinden
+ 2: figuur -- wordt niet preset
+ 3: maten van figuur -- geleend van --
+ 4: maten van -- geladen uit figuurfile zelf
+ 5: maten van -- geladen uit figuurfile --
+ 6: maten van -- berekend door TeXUtil
+ 7: figuurfile -- moet opnieuw worden aangemaakt
+ 8: figuurobject -- wordt opnieuw gebruikt
+ 9: figuur -- wordt niet afgehandeld
+ 10: figuur -- heeft geen afmetingen
+ 11: invoegen bron --
+\stopmessages
+
+\startmessages english library: figures
+ title: figures
+ 1: figure -- can not be found
+ 2: figure -- is not preset
+ 3: dimensions of figure -- borrowed from --
+ 4: dimensions of -- loaded from figurefile itself
+ 5: dimensions of -- loaded from figurefile --
+ 6: dimensions of -- calculated by TeXUtil
+ 7: you have to regenerate figure file --
+ 8: figureobject -- is reused
+ 9: figure -- is not handled
+ 10: figure -- has zero dimensions
+ 11: including resource --
+\stopmessages
+
+\startmessages german library: figures
+ title: Abbildungen
+ 1: Abbildung -- kann nicht gefunden werden
+ 2: Abbildung -- wird nicht erstellt
+ 3: Dimensionen von -- uebernommen von --
+ 4: Dimensionen von -- geladen aus der Abbildungsdatei selbst
+ 5: Dimensionen von -- geladen aus Abbildungsdatei --
+ 6: Dimensionen von -- ausgerechnet durch TeXUtil
+ 7: Sie muessen eine neue Abbildungsdatei -- erstellen
+ 8: Abbildungobjekt -- wurde wiederverwandt
+ 9: Abbildung -- wird nicht unterstuetzt
+ 10: figure -- has zero dimensions
+ 11: including resource --
+\stopmessages
+
+\startmessages czech library: figures
+ title: obrazy
+ 1: obraz -- nelze nalezt
+ 2: obraz -- nepritomen
+ 3: dimenze obrazu -- vypujceny od --
+ 4: dimenze obrazu -- nacteny primo z jeho souboru
+ 5: dimenze obrazu -- nacteny ze souboru obrazu --
+ 6: dimenze obrazu -- spocteny programem TeXUtil
+ 7: musite znovu vygenerovat soubor obrazu --
+ 8: obrazovy objekt -- je znovu pouzit
+ 9: figure -- is not handled
+ 10: figure -- has zero dimensions
+ 11: including resource --
+\stopmessages
+
+\startmessages italian library: figures
+ title: figure
+ 1: figura -- non trovata
+ 2: la figura -- non è preimpostata
+ 3: dimensioni della figura -- prese da --
+ 4: dimensioni di -- caricate dal file di immagini stesso
+ 5: dimensioni di -- caricate dal file di immagini --
+ 6: dimensioni di -- calcolate da TeXUtil
+ 7: bisogna rigenerare il file di immagini --
+ 8: oggetto-figura -- riutilizzato
+ 9: figura -- non gestita
+ 10: la figura -- ha dimensioni nulle
+ 11: including resource --
+\stopmessages
+
+\startmessages romanian library: figures
+ title: figuri
+ 1: figura -- nu poate fi gasita
+ 2: figura -- nu este presetata
+ 3: dimensiunea figurii -- se imprumuta din --
+ 4: dimensiunea figurii -- se incarca din fisierul insusi
+ 5: dimensiunea figurii -- se incarca din fisierul --
+ 6: dimensiunea figurii -- este calculata de TeXutil
+ 7: trebuie sa refaceti fisierul imagine --
+ 8: obiectul figura -- este refolosit
+ 9: sufixul -- din figura -- nu este folosit
+ 10: figura -- are dimensiuni nule
+ 11: including resource --
+\stopmessages
+
+%D Due to the mere fact that \DVI|/|\PDF\ drivers differ in their
+%D needs for figure dimensions, we have to provide the width,
+%D height, horizontal and vertical scale. Also we want to
+%D specify at the user level either width and|/|or height, scale,
+%D or a factor related to the current document bodyfont size.
+%D Even better: we can also specify isometric scaling and
+%D automatically let \CONTEXT\ calculate the maximum possible
+%D dimensions. Whatever we calculate, the results will come
+%D available in the next registers.
+
+\newcount \figxsca
+\newcount \figysca
+\newdimen \fighei
+\newdimen \figwid
+
+%D Because looking for dimensions can take many steps (locating
+%D the figure, maybe on more directories, scanning the figure
+%D on dimension, or when not found, trying to find them in the
+%D utility file, and again when not found, trying to generate
+%D such a file, and, as a last resort, trying to use the
+%D dimensions. Now when things do not work out the way we want,
+%D we can set a switch and get some information on what takes
+%D place.
+
+\newif\iftraceexternalfigures % \traceexternalfigurestrue
+
+\let\traceexternalfigures \traceexternalfigurestrue
+
+%D Another switch tells \CONTEXT\ to locate and calculate a
+%D figure, but does not actually insert it. Especially when we
+%D use \PDFTEX\ this saves a lot of time on trialruns. (Keep
+%D in mind that \PDFTEX\ is both a \TEX\ pre|| and postprocessor.)
+
+\newif\ifskipexternalfigures % \skipexternalfigurestrue
+
+%newif\ifsplitexternalfigures
+
+%D A last switch inhibits running \TEXUTIL. Lets do it when
+%D possible.
+
+\newif\ifrunutilityfile % \runutilityfiletrue
+\newif\ifconsultutilityfile \consultutilityfiletrue
+
+%D When I ever decide to change the format of the figure
+%D directory file that \TEXUTIL\ produces, the next number
+%D needs to be changed.
+
+\edef\figureversion{1996.06.01}
+
+%D We keep track of the current state by setting a variable
+%D which value is related to the method that provided the
+%D dimensions.
+
+\chardef\figurefilemode=0
+
+%D The next values are set:
+%D
+%D \startitemize[packed]
+%D \sym 0 the dimensions are not found
+%D \sym 1 the dimensions are not preset at all
+%D \sym 2 the dimensions are taken from other
+%D \sym 3 the dimensions are taken from figure
+%D \sym 4 the dimensions are taken from texutil.tuf
+%D \sym 5 the dimensions are generated by texutil.tmp
+%D \stopitemize
+%D
+%D In our search for the right file, that is, when no
+%D filetype is specified, we scan for the next set of files.
+%D As one can see, we prefer outlines over bitmaps.
+
+\def\figuretypes{\c!eps,\c!mps,\c!pdf,\c!svg,\c!svg z,\c!png,\c!jpg,\c!tif} % ,\c!tex,\c!tmp} % \c!mov
+
+%D Instead of using a comma separated list, we could have use a
+%D faster alternative, but the current implementation is not
+%D that slow either.
+%D
+%D Sorry for those who want to understand every bit, but I
+%D will only sparse comment on the next macros. These macros
+%D evolved out of the original macros and thereby lost all of
+%D their beauty.
+%D
+%D We save the progess state in a macro. The main reason for
+%D this is that otherwise the log would end up intermingled
+%D with \TEX's hard coded file loading messages and launching
+%D \TEXUTIL.
+
+\def\@@eftrace#1%
+ {\iftraceexternalfigures
+ \edef\externalfigurelog{\externalfigurelog[#1]\space}%
+ \fi}
+
+\let\@@efcurrenttype\empty
+\let\@@efcurrentpath\empty
+\let\@@efcurrentfile\empty
+
+% \def\analyzefigurefiles
+% {\let\externalfigurelog\empty
+% \let\@@efcurrenttype\empty
+% \let\@@efcurrentpath\empty
+% \let\@@efcurrentfile\empty
+% \doanalyzefigurefiles\doanalyzefigurefilesA
+% \doanalyzefigurefiles\doanalyzefigurefilesB
+% \doanalyzefigurefiles\doanalyzefigurefilesC}
+%
+% but, we also want to support direct paths, like e:/....
+
+\def\redoanalyzefigurefiles#1%
+ {\ifcase\figurestatus
+ \def\@@efcurrenttype{#1}%
+ \dododoanalyzefigurefiles\empty
+ \fi}
+
+\def\analyzefigurefiles
+ {\let\externalfigurelog\empty
+ \let\@@efcurrenttype\empty
+ \let\@@efcurrentpath\empty
+ \let\@@efcurrentfile\empty
+ % empty path list if hard coded path
+ \doanalyzefigurefiles\doanalyzefigurefilesA
+ \doanalyzefigurefiles\doanalyzefigurefilesB
+ \doanalyzefigurefiles\doanalyzefigurefilesC
+ % new, permits rather raw names like e:/....
+\ifx\@@effilepath\empty
+ % we don't want a global search (happens with empty path)
+\else
+ \@@eftrace{checking filepath "\@@effilepath"}%
+ \let\dodoanalyzefigurefiles\redoanalyzefigurefiles
+ \doanalyzefigurefiles\doanalyzefigurefilesA
+ \doanalyzefigurefiles\doanalyzefigurefilesB
+ \doanalyzefigurefiles\doanalyzefigurefilesC
+\fi}
+
+%D The previous macro suggests that there are three main
+%D methods applied. First we pass over all types and
+%D directories specified and as soon as we find a suitable
+%D candidate, we try to find its dimensions. When we cannot in
+%D any way find the dimensions, directly, using the utility
+%D file, or using \TEXUTIL\ directly, we revert to the second
+%D method, and make a pass over all utility files. The last
+%D method scans the utility files for files with the same name,
+%D but different type.
+
+\let\figurepathlist\empty
+
+\def\doanalyzefigurefiles#1%
+ {\let\dodododoanalyzefigurefiles#1%
+ \processcommacommand[\@@eftype]\dodoanalyzefigurefiles}
+
+\def\dodoanalyzefigurefiles#1%
+ {\ifcase\figurestatus
+ \def\@@efcurrenttype{#1}%
+ \processcommacommand[\figurepathlist]\dododoanalyzefigurefiles
+ \fi}
+
+\def\dododoanalyzefigurefiles#1% todo: use the \applied ones, less messy
+ {\ifcase\figurestatus
+ \def\@@efcurrentpath{#1}%
+ \sanitizefilename#1\to\@@efcurrentpath
+ \@@eftrace{checking path "\@@efcurrentpath"}%
+ \doiffileinsertionsupportedelse\@@efcurrenttype
+ {\assignfullfilename{\@@efcurrentpath}{\@@effilename.\figureextension{\@@efcurrenttype}}\to\@@efcurrentfile
+ \dodododoanalyzefigurefiles}
+ \donothing
+ \fi}
+
+%D Here is our first method: we scan the file directly, parse
+%D the utility file next, and finaly run \TEXUTIL. The latter
+%D two of course only take place when the first scan fails.
+
+\def\doanalyzefigurefilesA
+ {\ifcase\figurestatus
+ \@@eftrace{locating \@@efcurrentfile\space as \@@efcurrenttype}%
+ \doiffileelse\@@efcurrentfile
+ {\getfiguredimensionsA
+ \getfiguredimensionsB
+ \getfiguredimensionsC}
+ \donothing
+ \fi}
+
+%D It is possible to let \TEX\ determine the dimensions itself.
+%D The next macro shows how such a test is implemented. The
+%D special driver \type {supp-tpd} shows some more.
+
+%D The check on extension prevents problems when drivers are
+%D not loaded well, in which case the tex one comes first.
+%D
+%D Should be a special!
+
+% never change the vsize / hsize here, is taken from env
+
+\def\dogetfiguresizetex#1#2#3#4#5#6% file pagina ...
+ {\doifinsetelse\@@effiletype{\c!tex,\c!tmp}
+ {\ifx\@@efcurrentpath\empty\executedfalse\else\executedtrue\fi}
+ \executedfalse
+ \ifexecuted
+ \global\setbox\foundexternalfigure\vbox
+ {\insidefloattrue
+ \forgetall
+ \blank[\v!disable]% niet meer weg !
+ \startreadingfile
+ \readfile{#1}\donothing\donothing
+ \stopreadingfile
+ \endgraf
+ \removelastskip}%
+ \global\setbox\foundexternalfigure\hbox
+ {\raise\dp\foundexternalfigure\box\foundexternalfigure}%
+ #3\zeropoint
+ #4\zeropoint
+ #5\wd\foundexternalfigure
+ #6\ht\foundexternalfigure
+ \else
+ \@@eftrace{ignored}%
+ \fi}
+
+\let\dogetfiguresizetmp\dogetfiguresizetex
+
+%D Here we start scanning the other types:
+
+\def\@@dogetfiguresize{dogetfiguresize}
+
+\def\getfiguredimensionsA
+ {\ifcase\figurestatus
+ \@@eftrace{analyzing \@@efcurrentfile\space on \@@efcurrentpath\space as \@@efcurrenttype}%
+ \!!widthb\zeropoint % ?
+ \doifdefinedelse{\@@dogetfiguresize\@@efcurrenttype}
+ {\executedtrue
+ \getvalue{\@@dogetfiguresize\@@efcurrenttype}%
+ \@@efcurrentfile\@@efpage
+ \!!widtha\!!heighta\!!widthb\!!heightb}
+ \executedfalse
+ \ifexecuted
+ \donetrue
+ \ifdim\!!widtha=\zeropoint\relax\ifdim\!!heighta=\zeropoint\relax
+ \ifdim\!!widthb=\zeropoint\relax\ifdim\!!heightb=\zeropoint\relax
+ \showmessage\m!figures{10}\@@efcurrentfile
+ \@@eftrace{zero}%
+ \donefalse
+ \fi\fi
+ \fi\fi
+ \doifelse\@@efcurrenttype\c!mps
+ {\ifcase\EPScreator
+ \executedfalse
+ \else
+ % zero width mp graphic can be useful -)
+ \fi}
+ {\ifdone
+ % non zero dimensions
+ \else
+ % zero dimensions
+ \executedfalse
+ \fi}%
+ \fi
+ \ifexecuted
+ \chardef\figurestatus\plusthree
+ \doifelse\@@efcurrenttype\c!eps
+ {\ifcase\EPScreator
+ \@@eftrace{found}%
+ \else
+ \let\@@efcurrenttype\c!mps
+ \@@eftrace{mps found}%
+ \fi}
+ {\@@eftrace{found}}%
+ \geteparameters % e !
+ [\??ep]
+ [\c!x=\the\!!widtha,\c!y=\the\!!heighta,
+ \c!w=\the\!!widthb,\c!h=\the\!!heightb]%
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile
+ \else
+ \@@eftrace{not found}%
+ \fi
+ \fi}
+
+\def\dogetfiguresizepdf#1#2#3#4#5#6%
+ {\dogetPDFmediabox{#1}{#3}{#4}{#5}{#6}}
+
+\def\dogetfiguresizeeps#1#2#3#4#5#6%
+ {\dogetEPSboundingbox{#1}{#3}{#4}{#5}{#6}}
+
+\def\dogetfiguresizemps
+ {\dogetfiguresizeeps}
+
+\def\dogetfiguresizesvg#1#2#3#4#5#6%
+ {\doifelse\@@effiletype\c!svg\executedtrue\executedfalse
+ \ifexecuted
+ #3\zeropoint
+ #4\zeropoint
+ \startnointerference
+ \startXMLignore
+ \defineXMLcommand[svg][width=100,height=75]
+ {\global\dimen1=\XMLop{width}\onebasepoint
+ \global\dimen3=\XMLop{height}\onebasepoint
+ \endinput}%
+ \processXMLfilegrouped{#1}%
+ \stopXMLignore
+ \stopnointerference
+ #5=\dimen1\relax
+ #6=\dimen3\relax
+ \else
+ \@@eftrace{ignored}%
+ \fi}
+
+\def\getfiguredimensionsB
+ {\ifcase\figurestatus\ifcase\figurefilemode\else
+\doifsomething\@@efcurrentpath
+{%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
+ \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilenametype}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureA
+ \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}%
+}%
+ \fi\fi}
+
+\def\presetfigureA[#1][#2]%
+ {\ifcase\figurestatus
+ \@EA\DOIF\@EA{\@@effilenametype}{#1} % hm, tzt ook nog eens met pad/naam
+ {\getparameters[\??ep][#2]%
+ \ExpandBothAfter\doif\@@epe\@@efcurrenttype
+ {\chardef\figurestatus4
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile}}%
+ \else
+ \endinput
+ \fi}
+
+\def\getfiguredimensionsC
+ {\ifconsultutilityfile \ifrunutilityfile
+ \ifcase\figurestatus\ifcase\figurefilemode\else
+\doifsomething\@@efcurrentpath
+{%
+ \doifnotinset\@@effiletype{\c!tex,\c!tmp}
+ {\doiffileelse\@@efcurrentfile
+ {\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
+ \@@eftrace{running texutil on \@@effilenametype}%
+ \def\@@efloadname{\f!utilityfilename.\f!temporaryextension}%
+ \executesystemcommand{texutil --fig --out=\@@efloadname\space\@@effilenametype}%
+ \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureB
+ \readsetfile{.}\@@efloadname\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}}
+ {}}%
+}%
+ \fi\fi
+ \fi\fi}
+
+\def\presetfigureB[#1][#2]%
+ {\getparameters[\??ep][#2]%
+ \chardef\figurestatus=6 % ??????????????????
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile}
+
+%D The second pass over types and directories uses the
+%D utilility files.
+
+\def\doanalyzefigurefilesB
+ {\ifconsultutilityfile\ifcase\figurestatus\ifcase\figurefilemode\else
+\doifsomething\@@efcurrentpath
+{%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \edef\@@effilenametype{\@@effilename.\figureextension{\@@efcurrenttype}}%
+ \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilenametype}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureC
+ \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}%
+}%
+ \fi\fi\fi}
+
+\def\presetfigureC[#1][#2]%
+ {\ifcase\figurestatus
+ \@EA\DOIF\@EA{\@@effilenametype}{#1}
+ {\getparameters[\??ep][#2]%
+ \doif\@@epe\@@efcurrenttype
+ {\chardef\figurestatus4
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile}}%
+ \else
+ \endinput
+ \fi}
+
+%D The last and third pass mainly differs from the second in
+%D being more tolerant.
+
+\def\doanalyzefigurefilesC
+ {\ifconsultutilityfile\ifcase\figurestatus\ifcase\figurefilemode\else
+\doifsomething\@@efcurrentpath
+{%
+ \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilename.* surrogate}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureD
+ \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}%
+}%
+ \fi\fi\fi}
+
+\def\presetfigureD[#1][#2]%
+ {\ifcase\figurestatus
+ \@EA\DOIFINSTRINGELSE\@EA{\@@effilename.}{#1}
+ {\getparameters[\??ep][#2]%
+ \ExpandBothAfter\doifinsetelse\@@epe\@@efcurrenttype
+ {\chardef\figurestatus4
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile}%
+ \donothing}
+ \donothing
+ \else
+ \endinput
+ \fi}
+
+%D While loading the utility file (often \type {texutil.tuf})
+%D the next command (when present) aborts reading when the
+%D versions don't match.
+
+\def\thisisfigureversion#1%
+ {\doifnot\figureversion{#1}
+ {\showmessage\m!figures7\@@efloadname
+ \endinput}}
+
+%D Some files, take for instance movies, cannot easilly be
+%D parsed on dimensions, that is, not yet. Although the current
+%D mechanism has no problems with this, as long as the user
+%D specified width and height reflect the right aspect ratio.
+%D Nevertheless, when one does not want any scanning done, one
+%D can disable \type{preset}. When no preset is needed, we only
+%D locate the file.
+
+\def\locatepresetfigurefiles
+ {\processcommacommand[\@@eftype]\dolocatepresetfigurefiles}
+
+\def\dolocatepresetfigurefiles#1%
+ {\def\@@efcurrenttype{#1}%
+ \processcommacommand[\figurepathlist]\dodolocatepresetfigurefiles}
+
+\def\dodolocatepresetfigurefiles#1%
+ {\ifcase\figurestatus
+ \doiffileinsertionsupportedelse\@@efcurrenttype
+ {\assignfullfilename{#1}{\@@effilename.\figureextension{\@@efcurrenttype}}\to\@@efcurrentfile
+ \@@eftrace{only searching for \@@efcurrentfile}%
+ \doiffileelse\@@efcurrentfile
+ {\chardef\figurestatus\plusone
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile}%
+ \donothing}
+ \donothing
+ \fi}
+
+%D Here we locate the to-be converted images (if needed).
+
+\def\locatefigureconversionfile
+ {\processcommacommand[\figurepathlist]\dolocatefigureconversionfile}
+
+\def\dolocatefigureconversionfile#1%
+ {\ifcase\figurestatus
+ \sanitizefilename#1\to\@@efconversionpath
+ \assignfullfilename{\@@efconversionpath}{\@@efconversionfile.\@@efconversiontype}\to\@@efconversionfull
+ \@@eftrace{searching for original \@@efconversionfull}%
+ \doiffileelse\@@efconversionfull{\chardef\figurestatus\plusone}\donothing
+ \fi}
+
+%D All these macros are in some way called by the macro \type
+%D {\analyzefigurefiles}, which in turn is called by the next
+%D macro.
+
+% bools gebruiken
+
+\def\setnaturalfiguresize
+ {\doifsomething\@@efwidth
+ {\global\figwid\@@efwidth}%
+ \doifsomething\@@efheight
+ {\global\fighei\@@efheight}%
+ \doifsomething\@@efscale
+ {\figxsca\@@efscale
+ \figysca\@@efscale}}
+
+\def\setfactorfiguresize
+ {\doifinsetelse\@@effactor{\v!max,\v!fit,\v!broad}
+ {\doapplyfiguresize
+ \ifdim\@@epw>\@@eph\relax
+ \docalculatefigurenorm\figwid\@@effactor\@@efmaxwidth\hsize\@@efhsize
+ \docalculatefigurescales\figwid\@@epw\fighei\@@eph
+ \else
+ \docalculatefigurenorm\fighei\@@effactor\@@efmaxheight\figurevsize\@@efvsize
+ \docalculatefigurescales\fighei\@@eph\figwid\@@epw
+ \fi
+ \!!doneatrue}
+ {\doifinsetelse\@@efhfactor{\v!max,\v!fit,\v!broad}
+ {\doapplyfiguresize
+ \docalculatefigurenorm\fighei\@@efhfactor\@@efmaxheight\figurevsize\@@efvsize
+ \docalculatefigurescales\fighei\@@eph\figwid\@@epw
+ \!!doneatrue}
+ {\doifinsetelse\@@efwfactor{\v!max,\v!fit,\v!broad}
+ {\doapplyfiguresize
+ \docalculatefigurenorm\figwid\@@efwfactor\@@efmaxwidth\hsize\@@efhsize
+ \docalculatefigurescales\figwid\@@epw\fighei\@@eph
+ \!!doneatrue} % max ???
+ {\docalculatefigurenorm\fighei\@@effactor \@@efheight \textheight\@@efvsize
+ \docalculatefigurenorm\fighei\@@efhfactor\@@efheight \textheight\@@efvsize
+ \docalculatefigurenorm\figwid\@@efwfactor\@@efwidth\hsize\hsize
+ \!!doneafalse}}}%
+ \if!!donea
+ \ifdim\figwid>\@@efhsize\relax
+ \global\fighei\zeropoint
+ \global\figwid\@@efhsize
+ \else\ifdim\fighei>\@@efvsize\relax
+ \global\fighei\@@efvsize
+ \global\figwid\zeropoint
+ \fi\fi
+ \fi}
+
+\def\setscalefiguresize
+ {\doifsomething\@@efscale
+ {\doapplyfigurescale\figwid\@@epw\figxsca
+ \doapplyfigurescale\fighei\@@eph\figysca
+ \global\figwid\zeropoint
+ \global\fighei\zeropoint
+ \doifelsenothing\@@efmaxwidth
+ {\doifsomething\@@efmaxheight
+ {\ifdim\@@eph>\@@efmaxheight
+ \global\fighei\@@efmaxheight
+ \fi}}
+ {\ifdim\@@epw>\@@efmaxwidth
+ \global\figwid\@@efmaxwidth
+ \fi}}}
+
+\let\@@efgrid\empty
+
+\def\dosetdimensionfiguresize#1#2#3%
+ {#1\relax
+ \doifsomething\@@efmaxwidth {\ifdim\figwid>\@@efmaxwidth \global\figwid\@@efmaxwidth #2\relax\fi}%
+ \doifsomething\@@efmaxheight{\ifdim\fighei>\@@efmaxheight\global\fighei\@@efmaxheight#3\relax\fi}}
+
+\def\setdimensionfiguresize
+ {\ifdim\figwid>\zeropoint\relax
+ \ifdim\fighei>\zeropoint\relax
+ \dosetdimensionfiguresize
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
+ {\docalculatefigurescale\fighei\@@eph\figysca
+ \docalculatefigurescale\figwid\@@epw\figxsca}%
+ \else
+ \dosetdimensionfiguresize
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ \fi
+ \else
+ \ifdim\fighei>\zeropoint\relax
+ \dosetdimensionfiguresize
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ \else
+ \dosetdimensionfiguresize
+ {\doapplyfigurescale\figwid\@@epw\figxsca
+ \doapplyfigurescale\fighei\@@eph\figysca}%
+ {\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
+ {\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
+ \fi
+ \fi}
+
+\def\setupexternalfigures
+ {\dosingleempty\dosetupexternalfigures}
+
+\def\dosetupexternalfigures[#1]% needs a good clean up
+ {\getparameters[\??ex][#1]%
+ \getparameters[\??ef][#1]% dangerous for figs with backgrounds
+ \checkfiguresettings
+ \doifelsenothing\@@exlocation % fig file paths
+ {\scratchcounter\plusthree}
+ {\doifelsenothing\@@exfile % tuf file paths
+ {\scratchcounter\plusthree}
+ {\scratchcounter\zerocount
+ \ExpandBothAfter\doifinset\v!local\@@exlocation
+ {\advance\scratchcounter\plusone}%
+ \ExpandBothAfter\doifinset\v!global\@@exlocation
+ {\advance\scratchcounter\plustwo}}}%
+ \chardef\figurefilemode\scratchcounter\relax
+ \ifcase\figurefilemode
+ \let\figurepathlist\f!currentpath
+ \or % lokaal
+ \let\figurepathlist\f!currentpath
+ \or % globaal
+ \let\figurepathlist\@@exdirectory
+ \or % lokaal,globaal / non empty gebied
+ % was:
+ % \edef\figurepathlist{\f!currentpath\ifx\@@exdirectory\empty\else,\@@exdirectory\fi}%
+ % but test is to weak (can be empty \allinputpaths)
+ \doifelsenothing\@@exdirectory
+ {\edef\figurepathlist{\f!currentpath}}%
+ {\edef\figurepathlist{\f!currentpath,\@@exdirectory}}%
+ \fi
+ \ExpandBothAfter\doifinset\v!default\@@exlocation
+ {\edef\figurepathlist{\figurepathlist,}}% default tex path search
+ \ifx\@@exfile\empty
+ \chardef\figurefilemode\zerocount
+ \fi}
+
+%D The next one is for instance used in symbols:
+
+\def\resetexternalfigures
+ {\setupexternalfigures
+ [\c!option=,\c!maxwidth=,\c!maxheight=,
+ %\c!splitcolor=,% needed ?
+ \c!foregroundcolor=,\c!color=,
+ %\c!conversion=,\c!prefix=,
+ \c!frame=\v!off,\c!background=]}
+
+%D Since we only need to reset some parameters, we can
+%D better use a faster alternative:
+
+\def\resetexternalfigures
+ {\getparameters[\??ef]
+ [\c!option=,\c!maxwidth=,\c!maxheight=,
+ %\c!splitcolor=,% needed ?
+ \c!foregroundcolor=,\c!color=,
+ %\c!conversion=,\c!prefix=,
+ \c!frame=\v!off,\c!background=]}
+
+%D This one dropped the runtime of the \MAPS\ bibliography
+%D from over 110 seconds down to less than 105 seconds. The
+%D tremendously faster (but uglier) implementation is:
+
+\def\resetexternalfigures
+ {\let\@@efoption \empty
+ \let\@@efmaxwidth \empty
+ \let\@@efmaxheight \empty
+ \let\@@efforegroundcolor\empty
+ \let\@@efcolor \empty
+ \let\@@efconversion \empty
+ %\let\@@efprefix \empty
+ %\let\@@efcache \empty
+ %\let\@@efframe \v!off
+ \let\@@efbackground \empty}
+
+% The following code will move:
+
+\appendtoks \resetexternalfigures \to \everyoverlay
+\appendtoks \resetexternalfigures \to \everybeforepagebody % not really needed
+
+%appendtoks \resetexternalfigures \to \everysymbol
+
+\def\docalculatefigurenorm#1#2#3#4#5%
+ {\processaction
+ [#2]
+ [ \v!max=>\global#1=#4\relax,
+ \v!fit=>\global#1=#5\relax,
+ \v!broad=>\global#1=#5\relax
+ \global\advance #1 -4\@@exbodyfont\relax,
+ \s!default=>\doifsomething{#3}{\global#1=#3\relax},
+ \s!unknown=>\global#1=\@@exbodyfont\relax
+ \global\divide#1 \!!ten\relax
+ \global\multiply#1 #2\relax]}
+
+\beginTEX
+
+ \def\docalculatefigurescales#1#2#3#4%
+ {\dimen0=#1\relax % #1 = new 1-value
+ \dimen2=#2\relax % #2 = old 1-value
+ \divide\dimen2 \plusthousand
+ \divide\dimen0 \dimen2
+ \figxsca\dimen0 % x scale
+ \figysca\dimen0 % y scale
+ \dimen2=#4\relax % #4 = old 2-value
+ \divide\dimen2 \plusthousand
+ \multiply\dimen2 \dimen0
+ #3=\dimen2 } % #3 = new 2-value
+
+ \def\docalculatefigurescale#1#2#3%
+ {\dimen0=#1\relax % #1 = new value
+ \dimen2=#2\relax % #2 = old value
+ \divide\dimen2 \plusthousand
+ \divide\dimen0 \dimen2
+ #3=\dimen0 } % #3 = schaal
+
+ \def\doapplyfigurescale#1#2#3%
+ {\global#1=#2\relax
+ \ifcase0\@@efscale\relax % beter: doifnum...
+ #3=\plusthousand
+ \else
+ #3=\@@efscale
+ \fi\relax % important !
+ \ifnum#3=\plusthousand\else
+ \global\divide #1 \plusthousand
+ \global\multiply#1 #3\relax
+ \fi}
+
+\endTEX
+
+% test extensively, more precise since one pass double precission
+
+\beginETEX \dimexpr
+
+ \def\docalculatefigurescales#1#2#3#4%
+ {\scratchdimen\dimexpr(#1/\dimexpr(#2/\plusthousand))%
+ \figxsca\scratchdimen
+ \figysca\figxsca
+ #3\dimexpr(\figxsca\dimexpr(#4/\plusthousand))}
+
+ \def\docalculatefigurescale#1#2#3%
+ {#3\dimexpr(#1/\dimexpr(#2/\plusthousand))}
+
+ \def\doapplyfigurescale#1#2#3%
+ {% #3=\ifnum0\number\@@efscale=\zerocount\plusthousand\else\@@efscale\fi
+ \ifcase0\@@efscale\relax % @@efschaal kan empty zijn
+ #3=\plusthousand
+ \else
+ #3=\@@efscale
+ \fi\relax % important !
+ \global#1\ifnum#3=\plusthousand#2\else\dimexpr(#3\dimexpr(#2/\plusthousand))\fi
+ \relax}
+
+\endETEX
+
+\newdimen\figurevsize % we cannot manipulate any global vsize !
+
+\def\doapplyfiguresize
+ {\doifelsenothing\@@efmaxheight
+ {\figurevsize\textheight
+ \ifinner
+ \figurevsize \vsize % \textheight =\vsize
+ \scratchdimen\vsize % \scratchdimen=\textheight
+ \else\ifinsidefloat
+ \figurevsize \vsize % \textheight =\vsize
+ \scratchdimen\vsize % \scratchdimen=\textheight
+ \else\ifinpagebody
+ \figurevsize \vsize % \textheight =\vsize
+ \scratchdimen\vsize % \scratchdimen=\textheight
+ \else % hm, there should be an option to force this
+ \ifdim\pagegoal<\maxdimen
+ \ifdim\pagetotal<\pagegoal
+ \scratchdimen\pagegoal
+ \advance\scratchdimen -\pagetotal
+ \else
+ \scratchdimen\figurevsize % \textheight
+ \fi
+ \else
+ \scratchdimen\figurevsize % \textheight
+ \fi
+ \fi\fi\fi}
+ {\figurevsize\@@efmaxheight}%
+ \doifelsenothing\@@efheight
+ {\edef\@@efvsize{\the\scratchdimen}}
+ {\let\@@efvsize\@@efheight}%
+ \doifelsenothing\@@efwidth
+ {\edef\@@efhsize{\the\hsize}}
+ {\let\@@efhsize\@@efwidth}}
+
+% \def\convertfigureinsertscale#1#2#3#4%
+% {\scratchdimen#1\relax
+% \ifnum#3=\plusthousand\else % better 1000 100 10 ranges, evt round 2sp
+% \divide\scratchdimen \plusthousand
+% \multiply\scratchdimen #3\relax
+% \fi
+% \scratchdimen-\scratchdimen % beter hier - dan in driver
+% \edef#2{\the\scratchdimen}% oeps, \the vergeten
+% \scratchdimen#3\points
+% \divide\scratchdimen \!!ten
+% \edef#4{\withoutpt\the\scratchdimen}}
+%
+% more obscure but better:
+
+\def\convertfigureinsertscale#1#2#3#4%
+ {\scratchdimen#1\relax
+ \ifnum#3=\plusthousand
+ % == scale 1
+ \else
+ % better 1000 100 10 ranges, evt round 2sp
+ \divide\scratchdimen \plusthousand
+ \multiply\scratchdimen #3\relax
+ \fi
+ \scratchdimen-\scratchdimen % beter hier - dan in driver
+ \edef#2{\the\scratchdimen}%
+ \scratchcounter#3\relax
+ \ifnum\scratchcounter>\plustenthousand
+ \divide\scratchcounter \!!ten
+ \scratchdimen\the\scratchcounter\points
+ \else
+ \scratchdimen\the\scratchcounter\points
+ \divide\scratchdimen \!!ten
+ \fi
+ \edef#4{\withoutpt\the\scratchdimen}}
+
+\newbox\foundexternalfigure
+
+% \def\presetundefinedfigure#1%
+% {\let\@@eftype #1%
+% \let\@@effiletype #1%
+% \let\@@efobject \v!no
+% \let\@@efpreset \v!no
+% \ifx\@@efwidth\empty
+% \def\@@efwidth{8\lineheight}% 4cm
+% \fi
+% \ifx\@@efheight\empty
+% \def\@@efheight{6\lineheight}% 3cm
+% \fi}
+
+% \def\presetfiguremov{\presetundefinedfigure\c!mov}
+% \def\presetfigureavi{\presetundefinedfigure\c!avi}
+
+\def\presetundefinedfigure#1#2%
+ {\let\@@eftype #2%
+ \let\@@effiletype#2%
+ \let\@@efobject \v!no
+ \ifcase#1\or
+ \let\@@efpreset\v!no
+ \ifx\@@efwidth\empty\def\@@efwidth{8\lineheight}\fi
+ \ifx\@@efwidth\empty\def\@@efwidth{6\lineheight}\fi
+ \fi}
+
+\def\presetfiguresvg{\presetundefinedfigure\zerocount\c!svg}
+\def\presetfiguremov{\presetundefinedfigure\plusone \c!mov}
+\def\presetfigureavi{\presetundefinedfigure\plusone \c!avi}
+
+% The page number (frame) is passed as first option.
+
+\newcounter\forcedMPSobject % better something \every<type>
+
+%D We have arrived at one of the main macros, the one that
+%D tries to analyze the figure, preloads it when possible, and
+%D scales is according to the specifications. This macro is
+%D quite unreadable, for which I appologize. The main
+%D complication is that we have to catch all kind of border
+%D cases, like \METAPOST\ graphics and buffers.
+
+% note * : this is needed because reusable graphics
+% combined with funny page aspect aspect ratio's can lead to
+% strange side effects of preceding factor=max specs. This
+% surfaced in the metafun manual, where the two side by
+% side clipped cow heads [the second one was a reused object]
+% where the second one inherited some characteristics from
+% the factor=max one some 30 pages back. Sigh.
+
+% This macro will be cleaned up when the tuf format has
+% become replaced by its xml counterpart; for that I first
+% need to patch texutil.
+
+\def\checkfiguresettings
+ {\doifsomething\@@eflines
+ {\scratchdimen\@@eflines\lineheight
+ \edef\@@efheight{\the\scratchdimen}}}
+
+\chardef\splitexternalfigure=0 % 0 nosplit 1 split/yes 2 split/no
+
+\newif\ifgridfigure
+
+% the preset for mov/avi should move to the driver
+%
+% this whole mess needs a clean up anyway
+
+\def\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
+ {\dontcomplain
+ \setupexternalfigures
+ \the\externalfigureresets % hook, see resource libraries
+ \global\figwid\zeropoint \figxsca\plusone % see note *
+ \global\fighei\zeropoint \figysca\plusone % see note *
+ \global\setbox\foundexternalfigure\box\voidb@x
+ % get rid of active / and : as well as expand for [\get...] cases
+ \sanitizefilename#3\to\expandedfigurename
+ % nil path search in case of path spec
+ \expanded{\checkfilename{\expandedfigurename}}%
+ \ifcase\kindoffile\else \let\figurepathlist\empty \fi
+% \greedysplitstring\expandedfigurename\at.\to\@@effilename\and\@@effiletype
+\splitfilename\expandedfigurename
+\let\@@effilepath\splitoffpath
+\let\@@effilename\splitoffname
+\let\@@effiletype\splitofftype
+\ifcase\splitoffkind\let\@@effilepath\empty\fi
+ \doifelse\@@effilename{mprun}
+ {\edef\@@effilepref{\bufferprefix}}
+ {\let \@@effilepref\empty}%
+ \edef\@@effilename{\@@effilepref\@@effilename}%
+\ifx\@@effilepath\empty\else
+% \addtocommalist\@@effilepath\figurepathlist
+ \edef\@@effilename{\@@effilepath/\@@effilename}%
+\fi
+ \restorecatcodes % recently added; we presume local use
+ \def\@@eflabel{#2}%
+ \global\let\externalfigurelog\empty
+ \iftraceexternalfigures
+ \showmessage\m!figures{11}\expandedfigurename
+ \fi
+ \getparameters
+ [\??ep]
+ [\c!e=\s!unknown,
+ %\c!w=15\korpsgrootte,\c!h=10\korpsgrootte,
+ \c!w=8\lineheight,\c!h=6\lineheight,
+ \c!x=\!!zeropoint,\c!y=\!!zeropoint,
+ \c!t=,\c!s=,\c!a=,\c!f=\@@effilename]%
+ \getparameters
+ [\??ef]
+ [\c!type=\s!unknown,\c!method=\@@eftype,\c!symbol=\v!no,
+ \c!object=\@@exobject,\c!preset=\v!yes,\c!split=,\c!size=,
+ \c!page=0,\c!controls=\v!no,\c!preview=\v!no,\c!repeat=\v!no,
+ \c!maxwidth=\@@exmaxwidth,\c!maxheight=\@@exmaxheight,
+ \c!scale=,\c!width=,\c!height=,\c!display=,\c!lines=,\c!grid=,
+ %\c!foregroundcolor=,
+ \c!color=,\c!conversion=\@@exconversion,\c!prefix=\@@exprefix,\c!cache=\@@excache,
+ \c!factor=,\c!hfactor=,\c!wfactor=]%
+ % make into an installable list
+ \doifnothing\@@efconversion
+ {\doif\@@effiletype\c!mov\presetfiguremov
+ \doif\@@effiletype\c!avi\presetfigureavi
+ \doif\@@effiletype\c!svg\presetfiguresvg}%
+ #1[#4][#5][#6]%
+ % prefix in runs > 1
+ \doifsomething\@@efconversion % added, forgotten
+ {\doifnotmode{\systemmodeprefix\v!first}
+ {\doifsomething\@@efprefix{\edef\@@effilename{\@@efprefix\@@effilename}}%
+ \let\@@effiletype\empty}}% beware, walks over the whole suffixlist
+ % new, somehow needed when \textwidth is used:
+ \doifsomething\@@efmaxwidth {\freezedimenmacro\@@efmaxwidth }%
+ \doifsomething\@@efmaxheight{\freezedimenmacro\@@efmaxheight}%
+ % lines -> height
+ \checkfiguresettings
+ % new
+ \doifinsetelse\@@efsize{mediabox,cropbox,artbox,bleedbox,trimbox}
+ {\let\@@DriverImageBox\@@efsize}%
+ {\let\@@DriverImageBox\empty}%
+ % new, color separation
+ \doifseparatingcolorselse
+ {\let\@@efforegroundcolor\empty
+ \doifelsenothing\@@efsplit
+ {\chardef\splitexternalfigure0}
+ {\doifcolorchannelelse\@@efsplit
+ {\let\@@efobject\v!no % ?
+ \chardef\splitexternalfigure1}
+ {\chardef\splitexternalfigure2}}}
+ {\chardef\splitexternalfigure0}%
+ \relax % ends \chardef
+ % new, fake color in gray bitmaps
+ \doifsomething\@@efforegroundcolor
+ {\getparameters[\??ef]
+ [\c!background={\v!foreground,\v!color},
+ \c!backgroundcolor=\@@efforegroundcolor]}%
+ \doifsomething\@@efcolor
+ {\doifcolorelse\@@efcolor
+ {\checkpredefinedcolor[\@@efcolor]%
+ \doregisterfigurecolor\@@efcolor}}%
+ \donothing
+ %
+ \doif\@@efreset\v!yes\resetexternalfigures
+ % todo: nop when conversion
+ \doif\@@eftype \c!mov\presetfiguremov
+ \doif\@@eftype \c!avi\presetfigureavi
+ \doif\@@eftype \c!svg\presetfiguresvg
+ % hack
+ \doif\@@efmethod\c!mov{\doifsomething\@@effiletype{\presetundefinedfigure1\@@effiletype}}%
+ \doif\@@efmethod\c!svg{\doifsomething\@@effiletype{\presetundefinedfigure0\@@effiletype}}%
+ %
+ \doif\@@eftype\v!buffer
+ {\ifx\@@effiletype\empty
+ \let\@@effiletype\c!tmp
+ \fi
+ \let\@@eftype\c!tex}%
+ \@EA\doifnumberelse\@EA{\@@effiletype}% new, test first
+ {\let\@@eftype\c!mps}
+ {\processaction
+ [\@@effiletype]
+ [ \c!tex=>\let\@@eftype\c!tex,
+ \c!tmp=>\let\@@eftype\c!tex
+ \edef\@@effilepref{\bufferprefix}%
+ \edef\@@effilename{\@@effilepref\@@effilename},
+ % todo: nop when conversion
+ \c!avi=>\presetfigureavi,
+ \c!mov=>\presetfiguremov,
+ \c!svg=>\presetfiguresvg]}%
+ \edef\figuretypes{\figuretypes,\c!tex}%
+ \ifx\@@eftype\c!tex
+ % Since tex code can have positional stuff and worse,
+ % we want to avoid interference with how objects end
+ % up in files, therefore:
+ \let\@@efobject\v!no
+ \fi
+ \edef\@@efobjectname{\@@effilename-\@@eftype-\@@effiletype-\@@efpage}%
+ \doifelse\@@efobject\v!no
+ \donefalse
+ {\doifspecialavailableelse\dostartscaling
+ {\doifobjectssupportedelse
+ {\doifobjectfoundelse{FIG}\@@efobjectname\donetrue\donefalse}
+ \donefalse}
+ \donefalse}%
+ % too strict:
+ % \doifparentfileelse\@@effilename
+ % {\@EA\removefromcommalist\@EA{\jobsuffix}\figuretypes
+ % \let\@@effiletype\empty
+ % \showmessage\m!figures9\@@effilename
+ % \donefalse}
+ % \donothing
+ % ok, but catcode problems with jobfilesuffix
+ \doifparentfileelse\@@effilename
+ {\@EA\removefromcommalist\@EA{\jobsuffix }\figuretypes
+ \@EA\removefromcommalist\@EA{\jobfilesuffix}\figuretypes}%
+ \donothing
+ % so we get:
+ \doifparentfileelse\@@effilename
+ {\removefromcommalist{pdf}\figuretypes
+ \removefromcommalist{tex}\figuretypes}%
+ \donothing
+ \ifdone
+ \getobjectdimensions{FIG}\@@efobjectname
+ \geteparameters % e !
+ [\??ep]
+ [\c!x=\!!zeropoint,\c!y=\!!zeropoint,
+ \c!w=\objectwidth,\c!h=\objectheight]%
+ \chardef\figurestatus=5
+ \edef\@@effullname{\@@effilepref\expandedfigurename}%
+ \else
+ \doifelse{#2}\s!figurepreset
+ {\def\figureextension##1{\@@effiletype}%
+ \edef\@@effullname{\@@effilepref\expandedfigurename}}%
+ {\ifx\@@effiletype\empty
+ \dogetcommacommandelement1\from\@@eftype\to\commalistelement
+ \edef\@@effullname{\@@effilename.\commalistelement}%
+ \def\figureextension##1{##1}%
+ \else
+ \@EA\doifnumberelse\@EA{\@@effiletype}
+ {\let\@@eftype\c!mps}\donothing
+ \edef\@@effullname{\@@effilename.\@@effiletype}%
+ \def\figureextension##1{\@@effiletype}%
+ \fi}%
+% begin prelocate to be converted image
+\let\@@efconversionpath\empty
+\let\@@efconversionfile\@@effilename
+\let\@@efconversiontype\@@effiletype
+\doifmodeelse{\systemmodeprefix\v!first}
+ {\doifelsenothing\@@efconversion\donefalse\donetrue}%
+ {\donefalse}%
+\ifdone
+ \chardef\figurestatus\zerocount
+ \locatefigureconversionfile
+ \chardef\figurestatus\zerocount
+\fi
+% end
+ \doifelse\@@efpreset\v!no
+ {\doifelse\@@eftype\s!unknown
+ {\chardef\figurestatus\zerocount
+ \let\@@eftype\figuretypes
+ \locatepresetfigurefiles}
+ {\chardef\figurestatus\plusone}}
+ {\doifelse\@@eftype\s!unknown
+ {\let\@@eftype\figuretypes}
+ {\@EA\removefromcommalist\@EA{\@@eftype}\figuretypes
+ \edef\@@eftype{\ifx\@@eftype\empty\else\@@eftype,\fi\figuretypes}}%
+ \ifx\@@effiletype\empty\else
+ \ExpandBothAfter\doifinsetelse\@@effiletype\@@eftype
+ {\@EA\removefromcommalist\@EA{\@@effiletype}\@@eftype
+ \edef\@@eftype{\@@effiletype,\@@eftype}}%
+ \donothing
+ \fi
+ \doifelse{#2}\s!figurepreset
+ {\chardef\figurestatus\plusfour
+ \assignfullfilename\f!currentpath\@@exfile\to\@@efloadname
+ \let\@@eftype\@@epe}
+ {\chardef\figurestatus\zerocount
+ \ifconditional\externalfigureflush
+ \analyzefigurefiles
+ \fi}}%
+ \let\@@epe\@@eftype
+ \edef\@@effiletype{\figureextension{\@@eftype}}% dirty trick
+ \global\figwid\zeropoint \figxsca\plusone
+ \global\fighei\zeropoint \figysca\plusone
+ \doif\v!frame\@@exoption
+ {\let\@@efframe\v!on}%
+ \fi
+ \ifcase\figurestatus
+ \let\@@efframe\v!on
+ \let\@@efobject\v!no
+ \showmessage\m!figures1\@@effilename
+ \or
+ \showmessage\m!figures2\@@effullname
+ \or
+ \showmessage\m!figures3{\@@effullname,\@@eflenttype}%
+ \or
+ \showmessage\m!figures4\@@effullname
+ \or
+ \showmessage\m!figures5{\@@effullname,\@@efloadname}%
+ \or % no message
+ \doifnot\@@efsymbol\v!yes{\showmessage\m!figures8\@@effullname}%
+ \fi
+ \ifdim\@@epw=\zeropoint \chardef\figurestatus\plusone \fi
+ \ifdim\@@eph=\zeropoint \chardef\figurestatus\plusone \fi
+ \global\gridfigurefalse
+ \ifnum\figurestatus=1 % unknown dimensions, take width or height or scale
+ \setnaturalfiguresize
+ \xdef\naturalfigurewidth {\the\figwid}%
+ \xdef\naturalfigureheight{\the\fighei}%
+ \let\@@efframe\v!off
+ \else
+ \global\let\naturalfigurewidth\@@epw
+ \global\let\naturalfigureheight\@@eph
+ \setfactorfiguresize
+ \setscalefiguresize
+ \setdimensionfiguresize
+ \processaction
+ [\@@efgrid]
+ [ \v!yes=>\getnoflines\fighei
+ \edef\@@efheight{\the\noflines\lineheight}%
+ \global\gridfiguretrue,
+ \v!height=>\getrawnoflines\fighei
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen\strutdepth
+ \edef\@@efheight{\the\scratchdimen}%
+ \global\gridfiguretrue,
+ \v!depth=>\getrawnoflines\fighei
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen-\strutdepth
+ \edef\@@efheight{\the\scratchdimen}%
+ \global\gridfiguretrue,
+ \v!halfline=>\getrawnoflines\fighei
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen+.5\lineheight
+ \edef\@@efheight{\the\scratchdimen}%
+ \global\gridfiguretrue,
+ \v!fit=>\getrawnoflines\fighei
+ \edef\@@efheight{\the\noflines\lineheight}%
+ \global\gridfiguretrue]%
+ \ifgridfigure
+ \setfactorfiguresize
+ \setscalefiguresize
+ \setdimensionfiguresize
+ \fi
+ \fi
+ \convertfigureinsertscale\@@epx\figx\figxsca\scax
+ \convertfigureinsertscale\@@epy\figy\figysca\scay
+ \iftraceexternalfigures
+ \message
+ {\externalfigurelog
+ [\@@effullname:
+ t={\@@eftype}\space m={\@@efmethod}\space l=\@@eflabel\space
+ w=\number\figwid\space h=\number\fighei\space
+ \c!sx=\scax\space\c!sy=\scay\space
+ ox=\figx\space oy=\figy]}%
+ \fi
+ \doif\v!empty\@@exoption
+ {\skipexternalfigurestrue
+ \let\@@efframe\v!off}% ? ?
+ \doifelsenothing\@@efpage % NIEUW ??
+ {\let\@@efoptions\empty}
+ {\let\@@efoptions\@@efpage}%
+ \doif\@@efpreview \v!yes{\addtocommalist\v!preview \@@efoptions}%
+ \doif\@@efcontrols\v!yes{\addtocommalist\v!controls\@@efoptions}%
+ \doif\@@efrepeat \v!yes{\addtocommalist\v!repeat \@@efoptions}%
+ \doif\@@eftype\c!mps
+ {\ifcase\EPSspecial\else\ifinobject\else
+ \@@eftrace{special mps, object forced}%
+ \doglobal\increment\forcedMPSobject
+ \edef\@@efobjectname{\c!mps::\forcedMPSobject}%
+ \let\@@efobject\v!yes
+ \fi\fi}%
+ \global\let\lastfigureobjectname\@@efobjectname
+ \doifelse\@@efobject\v!no
+ \donefalse
+ {\doifobjectssupportedelse\donetrue\donefalse}%
+ % this (for the moment) conveniently maps onto pdf which saves mapping
+ \ifdone
+ \doifobjectfoundelse{FIG}\@@efobjectname
+ \donothing
+ {\bgroup % to be cleaned up
+ \figwid\@@epw % local ?
+ \fighei\@@eph % local ?
+ \scratchdimen\@@epx\scratchdimen-\scratchdimen
+ \edef\@@epx{\the\scratchdimen}%
+ \scratchdimen\@@epy\scratchdimen-\scratchdimen
+ \edef\@@epy{\the\scratchdimen}%
+ %\scratchdimen\@@epw\edef\@@epw{\the\scratchdimen}%
+ %\scratchdimen\@@eph\edef\@@eph{\the\scratchdimen}%
+ \setbox0\vbox to \fighei
+ {\vfill
+ \ifdim\wd\foundexternalfigure=\zeropoint
+ \doinsertfile
+ {\@@eftype,\@@efmethod}{\@@effullname,\@@eflabel}
+ {100}{100}\@@epx\@@epy\@@epw\@@eph\@@efoptions
+ \else\ifskipexternalfigures
+ \ruledhbox
+ {\backgroundline
+ [\@@efsplitcolor]{\fakebox\foundexternalfigure}}%
+ \else
+ \box\foundexternalfigure
+ \fi\fi}%
+ \wd0=\figwid
+ \setobject{FIG}\@@efobjectname\vbox{\box0}%
+ \setxvalue{\@@efobjectname\c!n}{\number\nofinsertpages}%
+ \egroup}%
+ \fi
+ \xdef\figurewidth {\the\figwid}%
+ \xdef\figureheight{\the\fighei}%
+ \global\setbox\foundexternalfigure\vbox to \fighei
+ {\vfill
+ \hsize\figwid
+ \ifdone
+ \scratchdimen\scax\points\divide\scratchdimen \plushundred
+ \edef\scax{\withoutpt\the\scratchdimen}%
+ \scratchdimen\scay\points\divide\scratchdimen \plushundred
+ \edef\scay{\withoutpt\the\scratchdimen}%
+ %\scale[\c!sx=\scax,\c!sy=\scay]{\dowithfigure{\getobject{FIG}{\@@efobjectname}}}%
+ \doscalenextbox\scax\scay\figwid\fighei{\dowithfigure{\getobject{FIG}{\@@efobjectname}}}%
+ \xdef\noffigurepages{\number\getvalue{\@@efobjectname\c!n}}%
+ \else\ifdim\wd\foundexternalfigure=\zeropoint
+ \dowithfigure
+ {\doinsertfile
+ {\@@eftype,\@@efmethod}{\@@effullname,\@@eflabel}
+ \scax\scay\figx\figy\figwid\fighei\@@efoptions}%
+ \xdef\noffigurepages{\number\nofinsertpages}%
+ \else
+ \scratchdimen\scax\points\divide\scratchdimen \plushundred
+ \edef\scax{\withoutpt\the\scratchdimen}%
+ \scratchdimen\scay\points\divide\scratchdimen \plushundred
+ \edef\scay{\withoutpt\the\scratchdimen}%
+ %\scale[\c!sx=\scax,\c!sy=\scay]{\dowithfigure{\box\foundexternalfigure}}%
+ \doscalenextbox\scax\scay\figwid\fighei{\dowithfigure{\box\foundexternalfigure}}%
+ \xdef\noffigurepages{\number\nofinsertpages}%
+ \fi\fi
+ \global\let\appliedfigurexscale\scax
+ \global\let\appliedfigureyscale\scay}%
+\doresetobjects % clean up driver left overs
+ \global\wd\foundexternalfigure\figwid
+ \finalizeexternalfigure{#2}{\expandedfigurename}}
+
+\def\doscalenextbox#1#2#3#4% for the moment here, faster
+ {\bgroup
+ \dowithnextbox
+ {\dontshowcomposition
+ \setbox\nextbox\hbox
+ {\smashbox\nextbox
+ \dostartscaling#1#2\flushnextbox\dostopscaling}%
+ \nextboxwd#3%
+ \nextboxht#4%
+ \nextboxdp\zeropoint
+ \flushnextbox
+ \egroup}
+ \hbox}
+
+\let\figurelabel \empty
+\let\figurefilename\empty
+\let\figurefiletype\empty
+\let\figurefilepage\empty
+\let\figurefilepath\empty
+
+\def\finalizeexternalfigure#1#2%
+ {\globalpushmacro\figurewidth
+ \globalpushmacro\figureheight
+ \globalpushmacro\figurelabel
+ \globalpushmacro\figurefilename
+ \globalpushmacro\figurefiletype
+ \globalpushmacro\figurefilepage
+ \globalpushmacro\figurefileconversion
+ \globalpushmacro\figurefileprefix
+ \globalpushmacro\figurefilepath
+ \globalpushmacro\figurefilecache
+ \xdef\figurewidth {\the\figwid}%
+ \xdef\figureheight {\the\fighei}%
+ \xdef\figurelabel {#1}%
+ \xdef\figurefilename {#2}%
+ \xdef\figurefiletype {\@@eftype}%
+ \xdef\figurefilepage {\@@efpage}%
+ \xdef\figurefileconversion{\@@efconversion}%
+ \xdef\figurefileprefix {\@@efprefix}%
+ \xdef\figurefilepath {\@@efcurrentpath}%
+ \xdef\figurefilecache {\@@efcache}%
+ \doifmodeelse{\systemmodeprefix\v!first}
+ {\let\figurefullname\figurefilename}%
+ {\def\figurefullname{\figurefileprefix\figurefilename}}% no \edef
+ \global\setbox\foundexternalfigure\vbox
+ {\forgetall
+ \ifcase\figurestatus
+ \resetsystemmode\v!figure
+ \let\figurefiletype\empty
+ \else
+ \setsystemmode \v!figure % beter resource
+ \fi
+% begin force convertable image into file
+\doifmode{\systemmodeprefix\v!first}{\doifsomething\@@efconversion
+ {% needs to be sorted out
+ \ifx\@@efconversionpath\undefined\else\let\figurefilepath\@@efconversionpath\fi % needed for welzorg etc
+ \ifx\@@efconversionfile\undefined\else\let\figurefilename\@@efconversionfile\fi
+ \ifx\@@efconversiontype\undefined\else\let\figurefiletype\@@efconversiontype\fi}}%
+% end
+\ifconditional\externalfigureflush
+ \ifconditional\externalfigurelevel % probably background
+ \ifskipexternalfigures
+ % nothing
+ \fakebox\foundexternalfigure
+ \else\ifcase\figurestatus
+ % nothing
+ \else\ifnum\splitexternalfigure=2\else
+ \the\externalfigurepostprocessors
+ \box\foundexternalfigure
+ \fi\fi\fi
+ \else
+ \feedbackexternalfigure
+ \settrue\externalfigurelevel
+ \ifskipexternalfigures
+ \externalfigurereplacement\figurelabel\figurefullname{skipped}%
+ \else\ifcase\figurestatus
+ \externalfigurereplacement\figurelabel\figurefullname{unknown}%
+ \else\ifnum\splitexternalfigure=2
+ \backgroundline[\@@efsplitcolor]
+ {\fakebox\foundexternalfigure}%
+ \else
+ \the\externalfigurepostprocessors
+ \doifelse\@@efreset\v!yes
+ {\ht\foundexternalfigure\figureheight
+ \dp\foundexternalfigure\zeropoint
+ \wd\foundexternalfigure\figurewidth
+ \box\foundexternalfigure}
+ {\localframed % should also be applied to high res !
+ [\??ef]
+ [\c!offset=\v!overlay,
+ \c!width=\figurewidth,
+ \c!height=\figureheight]
+ {\vfilll
+ \ifnum\splitexternalfigure=1
+ % hm, eigenlijk in dit geval achtergrondkleur
+ \hidesplitcolorfalse % really needed
+ \backgroundline[\@@efsplitcolor]
+ {\box\foundexternalfigure}%
+ \else % = 0, no split mode
+ \box\foundexternalfigure
+ \fi}}%
+ \fi\fi\fi
+ \fi
+\else
+ \feedbackexternalfigure % maybe also; \the\externalfigurepostprocessors
+\fi}%
+ \globalpopmacro\figurefilecache
+ \globalpopmacro\figurefilepath
+ \globalpopmacro\figurefileprefix
+ \globalpopmacro\figurefileconversion
+ \globalpopmacro\figurefilepage
+ \globalpopmacro\figurefiletype
+ \globalpopmacro\figurefilename
+ \globalpopmacro\figurelabel
+ \globalpopmacro\figureheight
+ \globalpopmacro\figurewidth}
+
+\def\externalfigurereplacement#1#2#3%
+ {\setupcolors
+ [\c!state=\v!local]%
+ \expanded{\localframed
+ [\??ef]
+ [\c!width=\figurewidth,
+ \c!height=\figureheight,
+ \c!background=\v!screen,
+ \c!backgroundscreen=.8,
+ %\c!frame=\ifincolor\v!off\else\v!on\fi]
+ %\c!frame=\ifincolor\@@efframe\else\v!on\fi]}%
+ \c!frame=\@@efframe]}%
+ {\tt\tfxx \nohyphens
+ name: \expanded{\verbatimstring{#1}}\\%
+ file: \expanded{\verbatimstring{#2}}\\%
+ state: \expanded{\verbatimstring{#3}}}}
+
+\def\externalfigureplaceholder#1#2#3%
+ {\localframed[\??ef]
+ [\c!width=#2,\c!height=#3,\c!frame=\v!on]%
+ {\tt\tfxx \nohyphens
+ name: \expanded{\verbatimstring{#1}}\\%
+ state: \expanded{\verbatimstring{placeholder}}}}
+
+\def\registerexternalfigure % no placement, handy for preprocessing
+ {\dotripleempty\doregisterexternalfigure}
+
+\def\doregisterexternalfigure[#1][#2][#3]%
+ {\bgroup
+ \setfalse\externalfigureflush
+ \externalfigure[#1][#2][#3]% or \doexternalfigure
+ \egroup}
+
+\newtoks\externalfigureresets
+\newtoks\externalfigurepostprocessors
+
+\let\feedbackexternalfigure\relax % \gobblefourarguments
+
+\gdef\appliedfigurexscale{1}
+\gdef\appliedfigureyscale{1}
+
+% will go internal
+
+\def\appliedfigurefilename {\@@effilename}
+\def\appliedfigurefilepath {\@@efcurrentpath}
+\def\appliedfigureshortname {\@@efcurrentpath/\@@effilename}
+\def\appliedfigurefullname {\@@efcurrentfile}
+\def\appliedfigureidentifier{\@@efobjectname}
+\def\appliedfigureoptions {\@@efoption}
+\def\appliedfigurefilesuffix{\figureextension{\@@efcurrenttype}}
+
+%D In \PDF\ one can specify an alternative graphic. This means
+%D that for instance a low resolution graphic can be used for
+%D viewing and a high res one for printing. Because this
+%D feature depends much on the driver, here we only take care
+%D of perparations. It is up to the special driver to handle
+%D the inclusion. The driver routines can change the content of
+%D box \type {\foundexternalfigure} if suitable.
+%D
+%D One complication is for instance that an alternative may
+%D not itself have an alternative, and these kind of situations
+%D are best handled by the driver.
+
+\let\lastfigureobjectname\empty
+
+%D The next macro does not work well with figure bases yet.
+
+\def\calculateexternalscreenfigure[#1][#2][#3][#4][#5][#6]%
+ {\ifx\@@efdisplay\empty\else
+ \doifnot\@@efobject\v!no
+ {\doifobjectssupportedelse
+ {\doifspecialavailableelse\doregisterfigure
+ {\bgroup
+ #1[#4][#5][#6]%
+ \doregisterfigure{FIG}{\lastfigureobjectname}%
+ \let\@@ef@@scherm\@@efdisplay
+ \calculateexternalfigure[#1][\@@ef@@scherm][\@@ef@@scherm][#4,\c!display=][#5][#6]%
+ \egroup}
+ {}}
+ {}}%
+ \fi}
+
+\let\dowithfigure\relax
+
+\let\naturalfigureheight=\!!zeropoint
+\let\naturalfigurewidth =\!!zeropoint
+\let\figureheight =\!!zeropoint
+\let\figurewidth =\!!zeropoint
+
+\def\noffigurepages{\nofinsertpages}
+
+\def\getfiguredimensions
+ {\dodoubleempty\dogetfiguredimensions}
+
+\def\dogetfiguredimensions[#1][#2]%
+ {{\let\immediate\relax % very dirty but prevents flushing, will change
+ \setbox0\hbox{\externalfigure[#1][#2,\c!display=,\c!object=\v!no]}}}
+
+% use the next one when the object must be forgotten (xobj
+% nums can migrate to the next object; maybe it should
+% always be done; todo ....
+
+\def\getfiguredimensionsonly
+ {\dodoubleempty\dogetfiguredimensionsonly}
+
+\def\dogetfiguredimensionsonly[#1][#2]%
+ {\dogetfiguredimensions[#1][#2]%
+ \doresetobjects}
+
+\presetlocalframed[\??ef]
+
+\newconditional\externalfigurelevel % true=background false=normal
+\newconditional\externalfigureflush % true=place false=ignore
+
+\setfalse\externalfigurelevel
+\settrue \externalfigureflush
+
+\def\doplaceexternalfigure % used direct and indirect
+ {\dosixtupleempty\dodoplaceexternalfigure}
+
+\def\dodoplaceexternalfigure[#1][#2][#3][#4][#5][#6]%
+ {\doifsomething{#3}% catches \defineexternalfigure dummies
+ {\bgroup
+\pushmacro\textunderscore
+ \edef\textunderscore{\string_}% brrr, temp hack, still needed?
+ \calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
+ \calculateexternalscreenfigure[#1][#2][#3][#4][#5][#6]%
+\popmacro\textunderscore
+ \box\foundexternalfigure
+ \egroup}}
+
+% new: more convenient/efficient than
+%
+% \use..[a][a][setting] \externalfigure[b][a]
+%
+% is equivalent to:
+%
+% \def..[a][setting] \externalfigure[b][a]
+%
+% see x-res modules for usage:
+%
+% \defineexternalfigure[name][settings]
+
+\def\dodefineexternalfigure[#1][#2]%
+ {\setvalue{\??ef\??ef#1}%
+ {\doplaceexternalfigure[\dopresetfigure][#1][][#2][]}}
+
+\def\defineexternalfigure
+ {\dodoubleargument\dodefineexternalfigure}
+
+\def\getexternalfigure#1%
+ {\getvalue{\??ef\??ef#1}}
+
+\def\dopresetfigure[#1][#2][#3]%
+ {\getparameters[\??ef][#1,#3]%
+ \getparameters[\??ep][#2]}
+
+\def\doprecopfigure[#1][#2][#3]%
+ {\def\doplaceexternalfigure[##1][##2][##3][##4][##5]%
+ {\getparameters[\??ef][##4,#2,#3]%
+ \getparameters[\??ep][##5]}%
+ \getvalue{\??ef\??ef#1}}
+
+% \useexternalfigure[alpha][koe]
+% \useexternalfigure[beta] [koe] [breedte=1cm]
+% \useexternalfigure[gamma][koe][alpha]
+% \useexternalfigure[delta][koe][alpha][breedte=2cm]
+%
+% volle breedte: \externalfigure[koe] \par
+% 3cm breed: \externalfigure[koe] [breedte=3cm] \par
+% volle breedte: \externalfigure[alpha] \par
+% 1cm breed: \externalfigure[beta] \par
+% volle breedte: \externalfigure[gamma] \par
+% 2cm breed: \externalfigure[delta] \par
+% 4cm breed: \externalfigure[beta] [breedte=4cm] \par
+% 5cm breed: \externalfigure[gamma][breedte=5cm] \par
+
+\def\dosetuseexternalfigure[#1][#2][#3][#4]%
+ {\doifassignmentelse{#3}
+ {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\dopresetfigure][#1][#2][#3][#4]}}
+ {\doifelsenothing{#3} % catch [1][2][leeg][leeg]
+ {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\dopresetfigure][#1][#2][#3][#4]}}
+ {\setvalue{\??ef\??ef#1}{\doplaceexternalfigure[\doprecopfigure][#1][#2][#3][#4]}}}%
+ \doifundefined{#1}{\setvalue{#1}{\getexternalfigure{#1}}}} % upward compatible
+
+\def\douseexternalfigure[#1][#2]%[#3][#4]%
+ {\doifelsenothing{#1}
+ {\doifsomething{#2}
+ {\dosetuseexternalfigure[#2][#2]}} %[#3][#4]}}
+ {\doifelsenothing{#2}
+ {\dosetuseexternalfigure[#1][#1]} %[#3][#4]}
+ {\dosetuseexternalfigure[#1][#2]}}} %[#3][#4]}}}
+
+\def\useexternalfigure
+ {\doquadrupleempty\douseexternalfigure}
+
+\unexpanded\def\externalfigure
+ {\dotripleempty\doexternalfigure}
+
+\def\doexternalfigure[#1][#2][#3]%
+ {\bgroup
+ \doifelsenothing{#1}
+ {\framed[\c!width=8\lineheight,\c!height=6\lineheight]{external\\figure}}
+ {\doifundefinedelse{\??ef\??ef#1}
+ {\useexternalfigure[\s!dummy][#1][#2][#3]%
+ \getexternalfigure{\s!dummy}[#3]}
+ {\getexternalfigure{#1}[#2]}}%
+ \globallet\currentresourcecomment\empty
+ \egroup}
+
+\long\def\resourcecomment#1%
+ {\long\gdef\currentresourcecomment{#1}}
+
+\long\def\startresourcecomment#1\stopresourcecomment
+ {\long\gdef\currentresourcecomment{#1}}
+
+\let\currentresourcecomment\empty
+
+%D Two alternatives, more settings needed.
+
+\def\showexternalfigurea
+ {\bgroup
+ \dontcomplain
+ \def\presetfigure[##1][##2]%
+ {\getvalue{\e!start\v!figure\e!text}[\v!left,\v!none][]
+ {}
+ {\hbox
+ {\externalfigure[##1][\c!frame=\v!on,\c!width=6cm,\c!size=\@@exsize][##2]%
+ \tfskip
+ \framed[\c!width=\figurewidth,\c!height=\figureheight]{}}}%
+ {\tt\tfa\expanded{\asciistr{##1}}}%
+ \blank
+ \tfx
+ \def\docommando####1%
+ {\beforesplitstring####1\at=\to\asciia
+ \aftersplitstring ####1\at=\to\asciib
+ \convertcommand\asciib\to\asciib
+ \doifsomething\asciib
+ {\hsmash{\hbox to .75em{\asciia\hss}: \asciib}\endgraf}}%
+ \processcommalist[##2]\docommando
+ \strut
+ \endgraf
+ \getvalue{\e!stop\v!figure\e!text}}%
+ \pushendofline
+ \readjobfile\@@exfile\donothing\donothing
+ \popendofline
+ \egroup}
+
+\def\showexternalfigureb % instelbaar maken
+ {\bgroup
+ \def\total{5}%
+ \globalletempty\allfigures
+ \doglobal\newcounter\figurecounter
+ \dontcomplain
+ \def\docommando##1{##1&}%
+ \def\figurecaptions%
+ {\crcr
+ \noalign{\nobreak\vskip.5em}%
+ \@EA\globalprocesscommalist\@EA[\allfigures]\docommando
+ \globalletempty\allfigures
+ \crcr
+ \noalign{\vskip1em\goodbreak}}%
+ \def\presetfigure[##1][##2]%
+ {\vbox
+ {\divide\hsize \total
+ \advance\hsize -1em
+ \externalfigure
+ [##1]
+ [\c!frame=\v!on,\c!factor=\v!max,\c!width=\hsize,\c!size=\@@exsize][##2]}%
+ \doglobal\addtocommalist{##1}\allfigures
+ %\getvalue{\s!figurepreset}%
+ \doglobal\increment\figurecounter
+ \ifnum\figurecounter=\total
+ \doglobal\newcounter\figurecounter
+ \def\next{\figurecaptions}%
+ \else
+ \def\next{&}%
+ \fi
+ \next}%
+ \pushendofline
+ \tabskip\zeropoint \!!plus 1fill
+ \halign to \hsize
+ {&\hss##\hss\cr\readjobfile\@@exfile\donothing\donothing\crcr
+ \figurecaptions}
+ \popendofline
+ \egroup}
+
+\def\showexternalfigurec
+ {\bgroup
+ \def\presetfigure[##1][##2]{\expanded{\pagefigure[##1][\c!size=\@@exsize]}}% else loop
+ \pushendofline
+ \readjobfile\@@exfile\donothing\donothing
+ \popendofline
+ \egroup}
+
+\def\showexternalfigured % to be documented; this one builds a dimension file for
+ {\bgroup % metapost/metafun
+ \immediate\openout\scratchwrite=mpfigs.mp
+ \def\presetfigure[##1][##2]%
+ {\getfiguredimensionsonly[##1]% \pagefigure[##1]%
+ \immediate\write\scratchwrite
+ {registerfigure("##1",\figurewidth,\figureheight);}}
+ \pushendofline
+ \readjobfile\@@exfile\donothing\donothing
+ \popendofline
+ \immediate\closeout\scratchwrite
+ \egroup}
+
+\def\startpagefigure
+ {\dodoubleempty\dostartpagefigure}
+
+\def\dostartpagefigure[#1][#2]%
+ {\bgroup
+ \getparameters[\??ex][\c!offset=\v!overlay,#2]%
+ \startTEXpage[\c!offset=\@@exoffset]%
+ \externalfigure[#1][#2]\ignorespaces} % so we can put some text below the graphic
+
+\def\stoppagefigure
+ {\stopTEXpage
+ \egroup}
+
+\def\pagefigure
+ {\dodoubleempty\dopagefigure}
+
+\def\dopagefigure[#1][#2]%
+ {\dostartpagefigure[#1][#2]\stoppagefigure}
+
+% \starttext \pagefigure[two.1] \stoptext
+
+\def\doshowexternalfigures[#1]%
+ {\bgroup
+ \setupcolors[\c!state=\v!start]% to prevent mps color conversion
+ \getparameters[\??ex][\c!alternative=a,\c!offset=\!!zeropoint,\c!size=,#1]%
+ \getvalue{\strippedcsname\showexternalfigure\@@exalternative}%
+ \egroup}
+
+\def\showexternalfigures
+ {\dosingleempty\doshowexternalfigures}
+
+\def\overlayfigure#1%
+ {\externalfigure[#1][\c!width=\overlaywidth,\c!height=\overlayheight]}
+
+%D Still undocumented!
+
+\newcount\efreference
+\newdimen\efxsteps
+\newdimen\efysteps
+
+\def\calculateefsteps
+ {\ifnum0\@@exxmax=\zerocount
+ \ifnum0\@@exymax=\zerocount
+ \def\@@exymax{24}%
+ \fi
+ \efysteps\figureheight \divide\efysteps \@@exymax
+ \efxsteps\efysteps
+ \dimen0=\figurewidth
+ \advance\dimen0 \efysteps
+ \divide \dimen0 \efysteps
+ \edef\@@exxmax{\number\dimen0}%
+ \else
+ \efxsteps\figurewidth \divide\efxsteps \@@exxmax
+ \efysteps\figureheight \divide\efysteps \@@exymax
+ \fi}
+
+\def\efcomment#1(#2,#3)#4(#5,#6)% {kader}(x,y)(h,b)[...]{tekst}
+ {\def\complexefdocomment[##1]##2%
+ {\position(#2,#3)%
+ {\setnostrut
+ \framed
+ [\c!width=#5\efxsteps,
+ \c!height=#6\exysteps,
+ \c!offset=\v!none,
+ \c!frame=#1,
+ ##1]%
+ {##2}}}%
+ \complexorsimpleempty\efdocomment}
+
+\def\efnocomment(#1,#2)#3(#4,#5)% (x,y)(h,b)[...]{tekst}
+ {\def\complexefdonocomment[##1]##2{}%
+ \complexorsimpleempty\efdonocomment}
+
+\def\efdomarker(#1,#2)#3#4% (h,b){kader}{tekst}
+ {\framed
+ [\c!width=#1\efxsteps,
+ \c!height=#2\efysteps,
+ \c!offset=\v!none,
+ \c!frame=#3]%
+ {#4}}
+
+\def\effigure#1%
+ {\position(0,0){\getvalue{#1}}}
+
+\def\efdoarea(#1,#2)#3#4% (h,b){kader}{tekst}
+ {\bgroup
+ \setnostrut
+ \framed
+ [\c!width=#1\efxsteps,
+ \c!height=#2\efysteps,
+ \c!offset=\!!zeropoint,
+ \c!frame=#3]
+ {#4}%
+ \egroup}
+
+\def\efgoto(#1,#2)#3[#4]% (h,b)kader[ref]
+ {\setbox0=\vbox{\efdoarea(#1,#2)#3{}}%
+ \gotobox{\copy0}[#4]}
+
+\def\efmark(#1,#2)#3(#4,#5)#6[#7]%
+ {\advance\efreference \plusone
+ \position(#1,#2)
+ {\hbox{\the\efreference}}%
+ \position(#1,#2)
+ {\gotosomeinternal\s!vwb{#7}\realfolio
+ {\efdomarker(#4,#5)\v!on{\thisissomeinternal\s!vwa{#7}}}}}
+
+\def\eftext#1(#2,#3)#4(#5,#6)#7[#8]%
+ {\advance\efreference \plusone
+ \hbox
+ {\quad
+ \thisissomeinternal\s!vwb{#8}%
+ \gotosomeinternal \s!vwa{#8}\realfolio
+ {\hbox to 1.5em{\the\efreference\presetgoto\hfill}}%
+ \quad#1 (#2,#3) (#5,#6) [#8]\hfill}%
+ \endgraf}
+
+\def\efthisis(#1,#2)#3[#4]%
+ {\efdoarea(#1,#2){#3}{\pagereference[#4]}}
+
+\newbox\colorbarbox
+
+\def\makecolorbar[#1]%
+ {\def\docommando##1%
+ {\color[##1]
+ {\blackrule
+ [\c!width=2em,
+ \c!height=1ex,
+ \c!depth=\!!zeropoint]}%
+ \endgraf}%
+ \global\setbox\colorbarbox\vbox
+ {\forgetall
+ \processcommalist[#1]\docommando}%
+ \global\setbox\colorbarbox\vbox
+ {\hskip2em\box\colorbarbox}%
+ \global\wd\colorbarbox\zeropoint}
+
+\def\placestartfigure[#1][#2][#3]#4\placestopfigure[#5]%
+ {\hbox
+ {\setbox0\hbox
+ {\useexternalfigure[\s!dummy][#2][#3,#5]%
+ \externalfigure[\s!dummy]}%
+ \calculateefsteps
+ \startpositioning
+ \def\referring(##1,##2)##3(##4,##5)##6[##7]%
+ {\position(##1,##2)
+ {\efgoto(##4,##5){\@@exframes}[##7]}}%
+ \def\marking(##1,##2)##3(##4,##5)##6[##7]%
+ {\position(##1,##2)
+ {\efthisis(##4,##5){\@@exframes}[##7]}}%
+ \def\remark%
+ {\efnocomment}%
+ \def\colorbar##1[##2]%
+ {}%
+ \position(0,0){\box0}%
+ \linewidth\onepoint
+ \setuppositioning
+ [\c!unit=pt,
+ \c!xscale=\withoutpt\the\efxsteps,
+ \c!yscale=\withoutpt\the\efysteps,
+ \c!factor=1]%
+ \ignorespaces#4%
+ \def\referring(##1,##2)##3(##4,##5)##6[##7]%
+ {}%
+ \let\marking\referring
+ \def\remark%
+ {\efcomment\v!no}%
+ \def\colorbar##1[##2]%
+ {\makecolorbar[##2]}%
+ \ignorespaces#4%
+ \stoppositioning
+ \box\colorbarbox}}
+
+\def\dodostartfigure[#1][#2][#3]#4\stopfigure
+ {\doifelse\v!test\@@exoption
+ {\teststartfigure[#1][#2][#3]#4\teststopfigure
+ \let\@@exframes\v!on}
+ {\let\@@exframes\v!off}%
+ \setvalue{\??ef\??ef#1}%
+ {\dosingleempty{\placestartfigure[#1][#2][#3]#4\placestopfigure}}%
+ \doifundefined{#1}{\setvalue{#1}{\getexternalfigure{#1}}}}
+
+% De onderstaande macro mag niet zondermeer worden aangepast
+% en is afgestemd op gebruik in de handleiding.
+
+\def\teststartfigure[#1][#2][#3]#4\teststopfigure%
+ {\begingroup
+ \setbox0\hbox
+ {\useexternalfigure[\s!dummy][#2][\c!wfactor=\v!max]%
+ \externalfigure[\s!dummy]}%
+ \def\referring
+ {\efmark}%
+ \def\marking
+ {\efmark}%
+ \def\remark
+ {\efcomment\v!yes}%
+ \def\colorbar##1[##2]%
+ {}%
+ \efreference\zerocount
+ \setbox0\vbox
+ {\hsize240pt
+ \startpositioning
+ \calculateefsteps
+ \position(0,0)
+ {\box0}%
+ \position(0,0)
+ {\basegrid
+ [\c!nx=\@@exxmax,
+ \c!dx=\withoutpt\the\efxsteps,
+ \c!ny=\@@exymax,
+ \c!dy=\withoutpt\the\efysteps,
+ \c!xstep=1,
+ \c!ystep=1,
+ \c!scale=1,
+ \c!offset=\v!no,
+ \c!unit=pt]}%
+ \setuppositioning
+ [\c!unit=pt,
+ \c!xscale=\withoutpt\the\efxsteps,
+ \c!yscale=\withoutpt\the\efysteps,
+ \c!factor=1]%
+ \linewidth\onepoint
+ \ignorespaces#4\relax
+ \stoppositioning
+ \vfill}%
+ \efreference\zerocount
+ \def\referring%
+ {\eftext{$\rightarrow$}}%
+ \def\marking%
+ {\eftext{$\leftarrow$}}%
+ \def\remark%
+ {\efnocomment}%
+ \def\colorbar##1[##2]%
+ {}%
+ \setbox2\vbox
+ {{\tfa\doifelsenothing{#1}{#2}{#1}}
+ \blank
+ \tfxx#4
+ \vfilll}%
+ \ifdim\ht0>\ht2
+ \ht2\ht0
+ \else
+ \ht0\ht2
+ \fi
+ \hbox
+ {\hskip3em
+ \vtop{\vskip12pt\box0\vskip6pt}%
+ \vtop{\vskip12pt\box2\vskip6pt}}%
+ \endgroup}
+
+\def\dodostartfigure[#1][#2][#3]#4\stopfigure
+ {\doifelse\v!test\@@exoption
+ {\teststartfigure[#1][#2][#3]#4\teststopfigure
+ \let\@@exframes\v!on}
+ {\let\@@exframes\v!off}%
+ \setvalue{\??ef\??ef#1}%
+ {\def\next{\placestartfigure[#1][#2][#3]#4\placestopfigure}%
+ \dosingleempty\next}%
+ \doifundefined{#1}{\setvalue{#1}{\getexternalfigure{#1}}}}
+
+\long\def\dostartfigure#1%
+ {\dotripleargument\dodostartfigure#1\stopfigure}
+
+\def\startfigure
+ {\grabuntil{\e!stop\v!figure}\dostartfigure}
+
+%D \macros
+%D {clip, setupclipping}
+%D
+%D Although related to figures, clipping can be applied to
+%D arbitrary content. We can use \METAPOST\ to provide a non
+%D rectangular clipping path.
+%D
+%D \starttyping
+%D \startMPclip{fun}
+%D clip currentpicture to fullcircle
+%D shifted (.5,.5) xscaled \width yscaled \height ;
+%D \stopMPclip
+%D \stoptyping
+%D
+%D We get a rectangular piece of the figure when we say:
+%D
+%D \starttyping
+%D \clip[x=2,y=1]{\externalfigure[photo]}
+%D \stoptyping
+%D
+%D When we want to clip to the oval we defined a few lines ago,
+%D we say:
+%D
+%D \starttyping
+%D \clip[nx=1,ny=1,x=1,y=1,mp=fun]{\externalfigure[photo]}
+%D \stoptyping
+%D
+%D The general characteristics of clipping can be set up with
+%D
+%D \showsetup{setupclipping}
+
+\def\doclip[#1]% nb top->bottom left->right
+ {\bgroup
+ \getparameters[\??cp][#1]%
+ \doifelse\@@cpstate\v!start\dodoclip{\egroup\hbox}}
+
+\def\dodoclip
+ {\dowithnextbox
+ {\ifdim\@@cpwidth>\zeropoint
+ \!!dimena\@@cpwidth
+ \!!dimenc\@@cphoffset
+ \else
+ \!!dimena\nextboxwd
+ \divide\!!dimena \@@cpnx
+ \!!dimenc\@@cpx\!!dimena
+ \advance\!!dimenc -\!!dimena
+ \!!dimena\@@cpsx\!!dimena
+ \fi
+ \relax % sure
+ \ifdim\@@cpheight>\zeropoint
+ \!!dimenb\@@cpheight
+ \!!dimend\nextboxht
+ \advance\!!dimend -\@@cpvoffset
+ \advance\!!dimend -\!!dimenb
+ \else
+ \!!dimenb\nextboxht
+ \divide\!!dimenb \@@cpny
+ \!!dimend-\@@cpy\!!dimenb
+ \advance\!!dimend -\@@cpsy\!!dimenb
+ \advance\!!dimend \!!dimenb
+ \!!dimenb\@@cpsy\!!dimenb
+ \advance\!!dimend \nextboxht
+ \fi
+ \setbox\nextbox\hbox % old
+ {\advance\!!dimenc -\@@cpleftoffset % new !
+ \advance\!!dimend -\@@cpbottomoffset % new ! % - added
+ \hskip-\!!dimenc\lower\!!dimend\flushnextbox}% old
+ \nextboxwd\zeropoint
+ \nextboxht\zeropoint
+ \nextboxdp\zeropoint
+ \setbox\nextbox\hbox
+ {\advance\!!dimena \@@cpleftoffset % new !
+ \advance\!!dimena \@@cprightoffset % new !
+ \advance\!!dimenb \@@cpbottomoffset % new !
+ \advance\!!dimenb \@@cptopoffset % new !
+ \dostartclipping\@@cpmp\!!dimena\!!dimenb % old
+ \flushnextbox
+ \dostopclipping}%
+ \setbox\nextbox\hbox % new !
+ {\!!dimena-\@@cpleftoffset % new !
+ \!!dimenb \@@cpbottomoffset % new ! % - removed
+ \hskip\!!dimena\lower\!!dimenb\flushnextbox}% new !
+ \nextboxwd\!!dimena
+ \nextboxht\!!dimenb
+ \nextboxdp\zeropoint
+ \flushnextbox
+ \egroup}%
+ \hbox}
+
+\def\clip{\dosingleempty\doclip}
+
+\def\setupclipping
+ {\dodoubleargument\getparameters[\??cp]}
+
+%D defining sound tracks:
+%D
+%D \starttyping
+%D \useexternalsoundtrack[label][file]
+%D \stoptyping
+%D
+%D associated actions: StartSound StopSound PauseSound ResumeSound
+%D
+%D Todo: like external figures, also search on path,
+%D although, they need to be present ar viewing time, so ...
+
+\def\useexternalsoundtrack
+ {\dodoubleargument\douseexternalsoundtrack}
+
+\def\douseexternalsoundtrack[#1][#2]%
+ {\setgvalue{\??sd:#1}{#2}}
+
+\def\checksoundtrack#1%
+ {\iflocation
+ \doifdefined{\??sd:#1}{\doifvaluesomething{\??sd:#1}
+ {\doinsertsoundtrack{\getvalue{\??sd:#1}}{#1}\@@sdoption
+ % brr, \..empty not really needed and maybe even wrong;
+ % also, not here but in driver
+ % well, no: sounds need to be reinitialize each time (i.e., be on page), so no
+ }}% \letgvalueempty{\??sd:#1}}}%
+ \fi}
+
+\setexecutecommandcheck {startsound} \checksoundtrack
+
+\def\setupexternalsoundtracks
+ {\dodoubleargument\getparameters[\??sd]}
+
+\setupexternalsoundtracks
+ [\c!option=]
+
+%D NEW: used in styledesign manual
+
+% \setbuffer[typeset-b]\endbuffer
+% \setbuffer[typeset-a]\endbuffer
+%
+% todo:
+%
+% \appendtoks \setbuffer[typeset-b]\endbuffer\to \everystarttext
+% \appendtoks \setbuffer[typeset-a]\endbuffer\to \everystarttext
+
+\def\typesetbuffer
+ {\dodoubleempty\dotypesetbuffer}
+
+\newcounter\noftypesetbuffers % all loaded at the end
+
+\defineexternalfigure
+ [typeset]
+ [\c!background=\v!color,
+ \c!backgroundcolor=\s!white]
+
+\def\dotypesetbuffer[#1][#2]% beware: this will mix up the mp graphics
+ {\bgroup
+ \def\TEXbufferfile##1{\bufferprefix##1.tex}%
+ \expanded{\setbuffer[typeset]%
+ \def\noexpand\bufferprefix{\ifprotectbuffers\jobname-\fi typeset-}}%
+ \starttext
+ \getbuffer[b,#1,a]%
+ \stoptext
+ \endbuffer
+ \doglobal\increment\noftypesetbuffers
+ % batch is needed
+ \executesystemcommand{texmfstart texexec --batch --pdf --result=\bufferprefix typeset-\noftypesetbuffers\space \bufferprefix typeset.tex}%
+ %\externalfigure[\bufferprefix typeset-\noftypesetbuffers.pdf][\c!object=\v!no,#2]%
+ \externalfigure[\bufferprefix typeset-\noftypesetbuffers.pdf][#2]%
+ \egroup}
+
+% for me only (manuals and sucn)
+
+\definesystemvariable{tz}
+
+\def\definetypesetting{\dotripleempty\dodefinetypesetting}
+\def\typesetfile {\dotripleempty\dotypesetfile}
+
+\def\dodefinetypesetting[#1][#2][#3]%
+ {\doifsomething{#1}{\setvalue{\??tz#1}{\dodotypesetfile{#2}{#3}}}}
+
+\def\dotypesetfile[#1][#2][#3]%
+ {\executeifdefined{\??tz#1}\gobbletwoarguments{#2}{#3}}
+
+\def\dodotypesetfile#1#2#3#4% args settings file settings
+ {\doifmode{*\v!first}{\executesystemcommand{texmfstart texexec.pl --batch --pdf #1 #3}}%
+ \doglobal\beforesplitstring#3\at.\to\typesetfilename
+ \externalfigure[\typesetfilename.pdf][#2,#4]}
+
+\appendtoks \setupexternalfigures[\c!option=\v!empty] \to \everyfastmode
+\appendtoks \runMPgraphicsfalse \to \everyfastmode
+\appendtoks \insertMPgraphicsfalse \to \everyfastmode
+
+\appendtoks \flushMPgraphics \to \everygoodbye % \everylastshipout
+
+\setupexternalfigures
+ [\c!option=,
+ \c!object=\v!yes,
+ \c!reset=\v!no,
+ \c!maxwidth=\@@efwidth,
+ \c!maxheight=\@@efheight,
+ \c!bodyfont=\korpsgrootte,
+ \c!directory=,
+ \c!file=\f!utilityfilename.\f!figureextension,
+ \c!radius=.5\korpsgrootte,
+ \c!corner=\v!rectangular,
+ \c!frame=\v!off,
+ \c!background=, % new
+ \c!splitcolor=\s!white,
+ \c!conversion=,
+ \c!prefix=,
+ \c!cache=,
+% \c!grid=,
+ \c!location={\v!local,\v!global}]
+
+\setupexternalfigures
+ [\c!frames=\v!off,
+ \c!ymax=24,
+ \c!xmax=]
+
+\useexternalfigure
+ [buffer] [\jobname] [\c!type=\v!buffer,\c!object=\v!no]
+
+\setupclipping
+ [\c!state=\v!start,
+ \c!n=1, % was 2
+ \c!nx=\@@cpn,\c!x=1,\c!sx=1,
+ \c!ny=\@@cpn,\c!y=1,\c!sy=1,
+ \c!width=\!!zeropoint,
+ \c!height=\!!zeropoint,
+ \c!hoffset=\!!zeropoint,
+ \c!voffset=\!!zeropoint,
+ \c!offset=\zeropoint,
+ \c!leftoffset=\@@cpoffset, % \zeropoint,
+ \c!rightoffset=\@@cpoffset, % \zeropoint,
+ \c!topoffset=\@@cpoffset, % \zeropoint,
+ \c!bottomoffset=\@@cpoffset, % \zeropoint,
+ \c!mp=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-fil.tex b/Master/texmf-dist/tex/context/base/core-fil.tex
new file mode 100644
index 00000000000..5820798cdc5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-fil.tex
@@ -0,0 +1,279 @@
+%D \module
+%D [ file=core-fil,
+%D version=1997.11.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=File Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / File Support}
+
+\unprotect
+
+% NOT YET DOCUMENTED !!
+%
+% overal \normalinput
+
+\startmessages dutch library: files
+ title: files
+ 1: file synoniem -- is al in gebruik voor --
+\stopmessages
+
+\startmessages english library: files
+ title: files
+ 1: file synonym -- is already used for --
+\stopmessages
+
+\startmessages german library: files
+ title: files
+ 1: Dateisynonym -- wird bereits fuer -- benutzt
+\stopmessages
+
+\startmessages czech library: files
+ title: soubory
+ 1: synonymum souboru -- je jiz pouzito pro --
+\stopmessages
+
+\startmessages italian library: files
+ title: file
+ 1: sinonimo file -- già in uso per --
+\stopmessages
+
+\startmessages norwegian library: files
+ title: filer
+ 1: filesynonym -- er allerede brukt for --
+\stopmessages
+
+\startmessages romanian library: files
+ title: fisiere
+ 1: sinonimul fisierelor -- este folosit deja pentru --
+\stopmessages
+
+%D \macros
+%D {definefilesynonym}
+%D
+%D One of the problems with loading files is that their names
+%D can depend on the interface language. We therefore need a
+%D method to define filesynonyms. The actual synonyms are
+%D defined elsewhere, but look like:
+%D
+%D \starttyping
+%D \definefilesynonym [chemic] [chemie]
+%D \definefilesynonym [einheit] [unit]
+%D \definefilesynonym [unit] [unit]
+%D \stoptyping
+%D
+%D So we can say in english:
+%D
+%D \starttyping
+%D \usemodules[pictex,chemic,unit]
+%D \stoptyping
+%D
+%D and in dutch:
+%D
+%D \starttyping
+%D \usemodules[pictex,chemie,unit]
+%D \stoptyping
+
+\def\definefilesynonym
+ {\dodoubleempty\dodefinefilesynonym}
+
+\def\dodefinefilesynonym[#1][#2]%
+ {\ifundefined{\??fs#1}\else
+ \doifnotvalue{\??fs#1}{#2}{\showmessage\m!files1{#1 (#2),\getvalue{\??fs#1}}}%
+ \fi
+ \doifelse{#1}{#2}{\letbeundefined{\??fs#1}{#2}}{\setevalue{\??fs#1}{#2}}}
+
+%D \macros
+%D {definefilefallback}
+
+\def\definefilefallback
+ {\dodoubleargument\dodefinefilefallback}
+
+\def\dodefinefilefallback[#1][#2]%
+ {\doifnotfile{#1}
+ {\def\docommand##1{\doiffile{##1}{\definefilesynonym[#1][##1]\quitcommalist}}%
+ \processcommalist[#2]\docommand}}
+
+%D \macros
+%D {truefilename}
+%D
+%D At the system level such a filename can be called upon by
+%D saying:
+%D
+%D \starttyping
+%D \truefilename{filename/filesynonym}
+%D \stoptyping
+%D
+%D The implementation shows that nesting is supported.
+
+\def\truefilename#1%
+ {\ifundefined{\??fs#1}#1\else\truefilename{\csname\??fs#1\endcsname}\fi}
+
+%D \macros
+%D {makeshortfilename}
+%D
+%D To prevent cross platform problems with filenames, we
+%D lowercase them as well as only use the first 8~characters.
+%D
+%D \starttyping
+%D \def\domakeshortfilename[#1#2#3#4#5#6#7#8#9]%
+%D {\lowercase{\edef\shortfilename{#1#2#3#4#5#6#7#8.}}%
+%D \expandafter\beforesplitstring\shortfilename\at.\to\shortfilename}
+%D
+%D \def\makeshortfilename[#1]%
+%D {\edef\fullfilename{#1.........}%
+%D \expanded{\domakeshortfilename[\fullfilename]}}
+%D \stoptyping
+%D
+%D In 2005 there is no need for the 8~character limit any more, so:
+
+\def\makeshortfilename[#1]% no need for further cleanup and shortening
+ {\lowercase{\edef\shortfilename{#1.}}%
+ \expandafter\beforesplitstring\shortfilename\at.\to\shortfilename}
+
+%D \macros
+%D {usemodule}
+%D
+%D Most of \CONTEXT is preloaded in the format file. Some very
+%D domain specific typesetting topics are however dealt with in
+%D separate modules, e.g. typesetting of chemical structure
+%D formulas. These modules are loaded by:
+%D
+%D \showsetup{usemodule}
+%D
+%D More information on the specific modules can be found in
+%D their dedicated manuals. We use \type {\next} so that we
+%D can \type {\end} in modules.
+
+\newconditional\moduleisloaded
+
+\def\dododousemodules#1#2% no \unprotect/\protect when loading,
+ {\relax % since we need to use ? ! unprotected
+ \ifconditional\moduleisloaded % sometimes (see xtag-map)
+ \let\next\relax % or: \expandafter\gobbleoneargument
+ \else
+ \makeshortfilename[#1\truefilename{#2}]%
+ \doifelseflagged\shortfilename
+ {\showmessage\m!systems7{#2}%
+ \settrue\moduleisloaded
+ \let\next\relax}
+ {\doglobal\setflag\shortfilename
+ \def\next
+ {\startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!systems5{#2}\settrue\moduleisloaded}
+ \donothing
+ \stopreadingfile}}%
+ \fi
+ \next}
+
+\def\dodousemodules#1#2%
+ {\setfalse\moduleisloaded
+ \doifelsenothing{#1}
+ {\dododousemodules\f!moduleprefix {#2}%
+ \dododousemodules\f!privateprefix{#2}%
+ \dododousemodules\f!styleprefix {#2}%
+ \dododousemodules\f!xstyleprefix {#2}%
+ \dododousemodules\f!thirdprefix {#2}%
+ \dododousemodules\empty {#2}}% new, fall back on raw name
+ {\dododousemodules{#1-}{#2}}%
+ \ifconditional\moduleisloaded\else
+ \showmessage\m!systems6{#2}%
+ \fi}
+
+\def\dousemodules[#1][#2]%
+ {\ifsecondargument
+ \doifelsenothing{#2}
+ {\let\next\relax}
+ {\def\next{\processcommalist[#2]{\dodousemodules{#1}}}}%
+ \else
+ \def\next{\usemodules[][#1]}%
+ \fi
+ \next}
+
+\def\usemodules
+ {\dodoubleempty\dousemodules}
+
+\let\usemodule\usemodules
+
+% \usemodule[t][speech]
+
+%D We also support a singular call, which saves us for
+%D frustrations when we do a typo.
+
+\let\usemodule=\usemodules
+
+% %D The definition shows that the language specific settings
+% %D are activated after loading all the modules specified.
+
+%D \macros
+%D {ifprotectbuffers, bufferprefix,
+%D TEXbufferfile, MPgraphicfile}
+%D
+%D The next switch enables protection of temporary filenames,
+%D which is needed when we process more files on one path at
+%D the same time.
+
+\newif\ifprotectbuffers
+
+\def\bufferprefix{\ifprotectbuffers\jobname-\fi}
+
+% The following filenames are defined here:
+
+\def\TEXbufferfile #1{\bufferprefix#1.\f!temporaryextension}
+\def\MPgraphicfile {\bufferprefix mp\ifMPrun run\else graph\fi}
+\def\convertMPcolorfile{\bufferprefix metacmyk.tmp}
+
+%D To save memory, we implement some seldomly used commands
+%D in a lazy way. Nota bene: such runtime definitions are
+%D global.
+%D
+%D \starttyping
+%D \fetchruntimecommand\showaccents{\f!encodingprefix ...}
+%D \stoptyping
+
+\def\fetchruntimecommand#1#2%
+ {\def#1{\dofetchruntimecommand#1{#2}}}
+
+\def\dofetchruntimecommand#1#2%
+ {\doifnotflagged{#2}
+ {\let#1\undefined
+ \startreadingfile
+ \startnointerference % \bgroup
+ \cleanupfeatures % better \setnormalcatcodes / test first
+ \readfile{#2}\donothing\donothing
+ \stopnointerference % \egroup
+ \stopreadingfile
+ \doglobal\setflag{#2}}%
+ \ifx#1\undefined
+ \writestatus\m!systems{command \string#1 not found in file #2}%
+ \def#1{{\infofont[unknown command \string#1]}}%
+ \fi
+ #1}
+
+%D Experimental:
+
+\let\checkpreprocessor\relax
+
+% \appendtoks\relax{\appendtoks \checkpreprocessor \to \everyjob}\to\everydump
+\appendtoks\everyjob\expandafter{\the\everyjob\checkpreprocessor}\to\everydump
+
+%D To be documented and probably moved
+
+\def\documentresources{\@@erurl}
+
+\def\setupexternalresources
+ {\dodoubleargument\getparameters[\??er]}
+
+\setupexternalresources
+ [url=]
+
+%D This module will be perfected / changed / weeded.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-fld.tex b/Master/texmf-dist/tex/context/base/core-fld.tex
new file mode 100644
index 00000000000..5f03d699ed6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-fld.tex
@@ -0,0 +1,1066 @@
+%D \module
+%D [ file=core-fld,
+%D version=1997.05.18,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Fill||in fields,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \appendtocommalist versus \addtocommalist
+%
+% * as default trigger in radiofields ?
+%
+% beware: weblink plugin truncates on length, while save as doesn't;
+% more precise: (1) first time right string is sent, (2)
+% internal string truncated, (3) second time truncated
+% string is sent.
+
+\writestatus{loading}{Context Field Macros}
+
+% messages
+
+\definemessageconstant{fields}
+
+\unprotect
+
+%D Internal command, linked to \type{\definesymbol}.
+
+\def\dogetfieldsymbol#1%
+ {\getobject{SYM}{#1}}
+
+\def\dopresetfieldsymbol#1%
+ {\checkobjectreferences
+ \doifobjectfoundelse{SYM}{#1}
+ {}
+ {\settightobject{SYM}{#1}\hbox{\symbol[#1]}%
+ \flushatshipout
+ {\setbox0\hbox{\hskip-\maxdimen\getobject{SYM}{#1}}%
+ \smashbox0\box0}}}
+
+\def\presetfieldsymbols[#1]% slow
+ {\def\dopresetfieldsymbols##1%
+ {\processcommalist[##1]\dopresetfieldsymbol}%
+ \@EA\processcommalist\@EA[#1]\dopresetfieldsymbols}
+
+\def\definedefaultsymbols
+ {\definesymbol[defaultyes][$\times$]%
+ \definesymbol[defaultno][$\cdot$]}
+
+\def\resetfieldsymbol[#1]% for experimental usage only
+ {\resetobject{SYM}{#1}}
+
+%D The interface to the specials. DEFAULT NOG ANDERS
+
+\def\preparefieldvariables % evt \def's at the outer level (test) or \edef's here for fast testing
+ {\let\@@DriverFieldNumber \@@fdn
+ \let\@@DriverFieldStyle \@@fdstyle
+ \let\@@DriverFieldColor \@@fdcolor
+ \let\@@DriverFieldBackgroundColor\@@fdfieldbackgroundcolor
+ \let\@@DriverFieldFrameColor \@@fdfieldframecolor
+ \let\@@DriverFieldLayer \@@fdfieldlayer
+ \let\@@DriverFieldOption \@@fdoption
+ \let\@@DriverFieldAlign \@@fdalign
+ \let\@@DriverFieldClickIn \@@fdclickin
+ \let\@@DriverFieldClickOut \@@fdclickout
+ \let\@@DriverFieldRegionIn \@@fdregionin
+ \let\@@DriverFieldRegionOut \@@fdregionout
+ \let\@@DriverFieldAfterKey \@@fdafterkey
+ \let\@@DriverFieldFormat \@@fdformat
+ \let\@@DriverFieldValidate \@@fdvalidate
+ \let\@@DriverFieldCalculate \@@fdcalculate
+ \let\@@DriverFieldFocusIn \@@fdfocusin
+ \let\@@DriverFieldFocusOut \@@fdfocusout}
+
+% todo : remove arguments, consider DriverField a namespace
+
+\def\presetlinefield
+ {\preparefieldvariables
+ \dopresetlinefield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldNumber}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldAlign}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+
+\def\presettextfield
+ {\preparefieldvariables
+ \dopresettextfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldNumber}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldAlign}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetchoicefield
+ {\preparefieldvariables
+ \dopresetchoicefield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetpopupfield
+ {\preparefieldvariables
+ \dopresetpopupfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetcombofield
+ {\preparefieldvariables
+ \dopresetcombofield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldStyle,\@@DriverFieldColor,\@@DriverFieldBackgroundColor,\@@DriverFieldFrameColor}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetcheckfield
+ {\preparefieldvariables
+ \presetfieldsymbols[\@@DriverFieldValues]%
+ \dopresetcheckfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetpushfield
+ {\preparefieldvariables
+ %\edef\@@DriverFieldValues{{\@@DriverFieldValues}}% makes sure {a,b,c} is passed
+ \presetfieldsymbols[\@@DriverFieldValues]%
+ \dopresetpushfield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetradiofield
+ {\preparefieldvariables
+ \presetfieldsymbols[\@@DriverFieldValues]%
+ \dopresetradiofield
+ {\@@DriverFieldName}
+ {\@@DriverFieldWidth}
+ {\@@DriverFieldHeight}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldRoot}
+ {\@@DriverFieldValues}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\presetradiorecord
+ {\preparefieldvariables
+ \dopresetradiorecord
+ {\@@DriverFieldName}
+ {\@@DriverFieldDefault}
+ {\@@DriverFieldOption}
+ {\@@DriverFieldKids}
+ {\@@DriverFieldClickIn,\@@DriverFieldClickOut,\@@DriverFieldRegionIn,\@@DriverFieldRegionOut,%
+ \@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
+ \@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
+
+\def\setfieldmodes#1#2#3%
+ {\xdef\@@DriverFieldMode{#1}% % 0 1 2 3
+ \xdef\@@DriverFieldFree{#2}% % 0 1
+ \xdef\@@DriverFieldAuto{#3}} % 0 1
+
+\newevery\everysetfield\relax
+
+\def\doiffieldelse#1{\doifdefinedelse{fielddata#1}}
+
+\def\setfield#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \doglobal\increment\numberoffields
+ \iftracefields
+ \doglobal\addtocommalist{#1}\collectedfields
+ \fi
+ \the\everysetfield
+ \setxvalue{fielddata#1}% kortere tag #7 needs expansion etc
+ {\noexpand\dosetfield{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}%
+ \egroup}
+
+\def\dosetfield#1#2#3#4#5#6#7#8#9%
+ {\xdef\@@DriverFieldName {#1}%
+ \xdef\@@DriverFieldType {#2}%
+ \xdef\@@DriverFieldRoot {#3}%
+ \xdef\@@DriverFieldParent {#4}%
+ \xdef\@@DriverFieldKids {#5}%
+ \xdef\@@DriverFieldGroup {#6}%
+ \setfieldmodes #7%
+ \bgroup
+ \def\par{\string\n\string\n}%
+ \xdef\@@DriverFieldValues {#8}%
+ \xdef\@@DriverFieldDefault{#9}%
+ \egroup}
+
+\def\changefield#1%
+ {\setfield{#1}\@@DriverFieldType\@@DriverFieldRoot\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldGroup
+ {\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}\@@DriverFieldValues\@@DriverFieldDefault}
+
+\def\getfield#1% name
+ {\doifundefinedelse{fielddata#1}
+ {\dosetfield{#1}\empty\empty\empty\empty\empty{\empty00}\empty\empty}
+ {\getvalue{fielddata#1}}}
+
+\newif\iftracefields \tracefieldsfalse
+
+\let\tracefields\tracefieldstrue
+
+\def\doshowfields[#1]% todo: tabulate van maken en runtime
+ {\bgroup
+ \switchtobodyfont[8pt,tt]%
+ \doifsomething{#1}{\def\collectedfields{#1}}%
+ \ifx\collectedfields\empty
+ \par specify [fieldlist] or say \type{\tracefieldstrue} first\par
+ \else
+ \def\normalizedfieldmode##1##2##3%
+ {\ifcase0##2 \else\sl\fi
+ \ifcase0##1 loner\or parent\or clone\or copy\fi}%
+ \def\dosetfield##1##2##3##4##5##6##7##8##9%
+ {##1&##2&##3&##4&##5&##6&\normalizedfieldmode##7&##8&##9\cr}%
+ \halign
+ {&##\strut\hss\quad\cr
+ \noalign{\hrule}%
+ NAME &TYPE &ROOT &
+ PARENT&KIDS &GROUP &
+ MODE &VALUES&DEFAULT\cr
+ \noalign{\hrule}%
+ \@EA\globalprocesscommalist\@EA[\collectedfields]\getfield
+ \noalign{\hrule}}%
+ \fi
+ \egroup}
+
+\def\showfields
+ {\dosingleempty\doshowfields}
+
+\def\dologfields[#1]%
+ {\bgroup
+ \immediate\openout\scratchwrite=fields.log
+ \doifsomething{#1}{\def\collectedfields{#1}}%
+ \ifx\colledtedfields\empty
+ \immediate\write\scratchwrite{use \tracefieldstrue}%
+ \else
+ \def\normalizedfieldmode##1##2##3%
+ {\edef\@@DriverFieldMode
+ {\ifcase##1 loner \or parent \or clone \or copy \fi
+ \ifcase##2 \else(done)\fi}}%
+ \def\dosetfield##1##2##3##4##5##6##7##8##9%
+ {\normalizedfieldmode##7%
+ \immediate\write\scratchwrite
+ {N=##1 / T=##2 / R=##3 / P=##4 / K=##5 / G=##6 /
+ M=\@@DriverFieldMode\space/ V=##8 / D=##9}}%
+ \processcommacommand[\collectedfields]\getfield
+ \fi
+ \immediate\closeout\scratchwrite
+ \egroup}
+
+\def\logfields
+ {\dosingleempty\doLogFields}
+
+%D \starttyping
+%D \definefield [name] [type] [group] [values] [default]
+%D
+%D \definefield [WWWW] [text] [textsetup] [default text]
+%D \definefield [XXXX] [push] [pushsetup] [yes,no] [yes]
+%D \definefield [XXXX] [check] [checksetup] [yes,no] [yes]
+%D \definefield [YYYY] [combo] [combosetup] [a,b,c,d] [b]
+%D \definefield [ZZZZ] [radio] [radiosetup] [W,X,Y,Z] [Y]
+%D
+%D \definesubfield [W] [subsetup] [p,q]
+%D \definesubfield [X,Y] [subsetup] [p,r]
+%D \definesubfield [Z] [subsetup] [y,z]
+%D
+%D evt \definemainfield ... wanneer geplaatst voor subs gegeven
+%D
+%D \clonefield [XXXX] [XX,YY] [mysetup] [on,off]
+%D \clonefield [Z] [AA,BB] [somesetup] [true,false]
+%D \clonefield [Z] [CC,DD] [anothersetup]
+%D
+%D \copyfield [XXXX] [PP,QQ,RR]
+%D
+%D \field[XXXX]
+%D \fitfield[XXXX]
+%D \stoptyping
+
+\newif\ifdefinemainfield \definemainfieldfalse
+
+%D We need to keep track of cloned (related) fields and so by
+%D maintaining lists of field clones.
+%D
+%D The first alternative used a two pass data list and was
+%D implemented as follows:
+%D
+%D \starttyping
+%D \def\getmainfieldkids#1%
+%D {\let\@@DriverFieldKids\empty
+%D \ifdefinemainfield
+%D \definetwopasslist{fld:#1}% defined by system
+%D \doloop
+%D {\gettwopassdata{fld:#1}%
+%D \iftwopassdatafound
+%D %\addtocommalist\twopassdata\@@DriverFieldKids
+%D \appendtocommalist\twopassdata\@@DriverFieldKids
+%D \else
+%D \exitloop
+%D \fi}%
+%D \fi}
+%D \stoptyping
+%D
+%D However, the next alternative is much faster when we have
+%D a field with thousands of clones, something not that
+%D imaginary.
+%D
+%D \starttyping
+%D \def\getmainfieldkids#1%
+%D {\let\@@DriverFieldKids\empty
+%D \ifdefinemainfield
+%D \definerawpasslist{fld:#1}% runtime defined by system
+%D \moverawpasslist{fld:#1}\@@DriverFieldKids
+%D \fi}
+%D \stoptyping
+%D
+%D The data is written by file using:
+%D
+%D \starttyping
+%D \newcounter\nofmainfieldkids
+%D
+%D \def\setmainfieldkid#1#2%
+%D {\doglobal\increment\nofmainfieldkids
+%D \immediatewriteutilitycommand
+%D {\twopassentry%
+%D {fld:#1}%
+%D {\nofmainfieldkids}%
+%D {#2}}}
+%D \stoptyping
+%D
+%D The trade of of this mechanism is that for each cloned or
+%D copied field, the uitlity file is to be read in order to
+%D fetch the data.
+%D
+%D The next, much faster alternative uses a dedicated %
+%D reference mechanism.
+
+\def\setmainfieldkid#1#2%
+ {\immediatewriteutilitycommand{\fieldreference{#1}{#2}}}
+
+\def\checkfieldreferences
+ {\startnointerference
+ \protectlabels
+ \doutilities{fieldreferences}\jobname\empty\relax\relax
+ \global\let\checkfieldreferences\relax
+ \stopnointerference}
+
+\def\setfieldreferences
+ {\def\fieldreference##1##2%
+ {\ifundefined{\r!widget##1}%
+ \setxvalue{\r!widget##1}{##2}%
+ \else
+ \edef\!!stringa{\getvalue{\r!widget##1}}%
+ \setxvalue{\r!widget##1}{\!!stringa,##2}%
+ \fi}}
+
+\def\resetfieldreferences
+ {\let\fieldreference\gobbletwoarguments}
+
+\def\getmainfieldkids#1%
+ {\checkfieldreferences
+ \ifdefinemainfield
+ \doifundefinedelse{\r!widget#1}%
+ {\let\@@DriverFieldKids\empty}
+ {\@EA\let\@EA\@@DriverFieldKids\csname\r!widget#1\endcsname}%
+ \else
+ \let\@@DriverFieldKids\empty
+ \fi}
+
+\resetfieldreferences
+
+%D Of course it costs a few more tokens to implement, but it's
+%D worth the memory: running for instance the 2000 page
+%D english examns publishing on demand document went down from
+%D 1350 seconds to less than 950 on a 650 Mhz pentium.
+
+\def\definefield
+ {\definemainfieldfalse\doquintupleempty\dodefinefield}
+
+\def\definemainfield
+ {\definemainfieldtrue \doquintupleempty\dodefinefield}
+
+\let\collectedfields\empty
+\newcounter\numberoffields
+\newcounter\totalnumberoffields
+
+\def\savenumberoffields
+ {\ifcase\numberoffields\relax\else
+ \savecurrentvalue\totalnumberoffields\numberoffields
+ \fi}
+
+\appendtoks \savenumberoffields \to \everybye % \everylastshipout
+
+% \def\presetfieldreferences
+% {\ifnum\totalnumberoffields>0
+% \definereference[AtOpenInitializeForm][\v!ResetForm]%
+% \fi}
+%
+% \definereference[AtOpenInitializeForm][\v!geen]
+%
+% \appendtoks \presetfieldreferences \to \everycheckreferences
+
+\def\dodefinefield[#1][#2][#3][#4][#5]%
+ {\ifsecondargument
+ \edef\currentfieldname{#1}% just in case we're inside a loop
+ \doifundefinedelse{define#2field}
+ {\writestatus\m!fields{unknown field type #2}}
+ {\doifundefined{fielddata\currentfieldname}
+ {\getmainfieldkids\currentfieldname
+ \ifdefinemainfield
+ \ifx\@@DriverFieldKids\empty
+ \let\@@DriverFieldMode\fieldlonermode
+ \else
+ \let\@@DriverFieldMode\fieldparentmode
+ \fi
+ \def\@@DriverFieldAuto{1}%
+ \else
+ \let\@@DriverFieldMode\fieldlonermode
+ \def\@@DriverFieldAuto{0}%
+ \fi
+ \def\@@DriverFieldFree{0}%
+ \getvalue{define#2field}{\currentfieldname}{#2}{#3}{#4}{#5}}}%
+ \else
+ \writestatus\m!fields{pass fieldname and fieldtype}%
+ \fi}
+
+\def\definelinefield#1#2#3#4#5%
+ {\setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{#4}}
+
+\let\definetextfield=\definelinefield
+
+\def\definechoicefield#1#2#3#4#5%
+ {\doifelsenothing{#4}
+ {\def\@@DriverFieldValues{yes,no}}
+ {\def\@@DriverFieldValues{#4}}%
+ \doifelsenothing{#5}
+ {\dogetcommacommandelement2\from\@@DriverFieldValues \to\@@DriverFieldDefault
+ \dogetcommacommandelement1\from\@@DriverFieldDefault\to\@@DriverFieldDefault}
+ {\def\@@DriverFieldDefault{#5}}%
+ \setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{\@@DriverFieldValues}{\@@DriverFieldDefault}}
+
+\let\definepopupfield=\definechoicefield
+\let\definecombofield=\definechoicefield
+
+%\def\definecheckfield#1#2#3#4#5%
+% {\doifelsenothing{#4}
+% {\definedefaultsymbols
+% \def\@@DriverFieldValues{defaultyes}}
+% {\def\@@DriverFieldValues{#4}}%
+% \doifelsenothing{#5}
+% {\dogetcommacommandelement2\from\@@DriverFieldValues\to\@@DriverFieldDefault
+% \dogetcommacommandelement1\from\@@DriverFieldDefault\to\@@DriverFieldDefault}
+% {\def\@@DriverFieldDefault{#5}}%
+% \setfield{#1}{#2}{}{}{\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{\@@DriverFieldValues}{\@@DriverFieldDefault}}
+
+%D Since these fields have an on/off state only, we pass 1/0
+%D to the driver as default values.
+
+\def\definecheckfield#1#2#3#4#5%
+ {\doifelsenothing{#4}
+ {\definedefaultsymbols
+ \def\@@DriverFieldValues{defaultyes}}
+ {\def\@@DriverFieldValues{#4}}%
+ \doifelsenothing{#5}
+ {\def\@@DriverFieldDefault{2}}
+ {\dogetcommacommandelement1\from\@@DriverFieldValues\to\@@DriverFieldDefault
+ \doifinstringelse{#5}{\@@DriverFieldDefault}
+ {\def\@@DriverFieldDefault{1}}
+ {\def\@@DriverFieldDefault{0}}}%
+ \setfield
+ {#1}{#2}{}{}{\@@DriverFieldKids}{#3}%
+ {\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}%
+ {\@@DriverFieldValues}{\@@DriverFieldDefault}}
+
+\let\definepushfield=\definecheckfield
+
+\def\defineradiofield#1#2#3#4#5%
+ {\iffourthargument
+ \doifelsenothing{#5}
+ {\dogetcommacommandelement1\from#4\to\SavedFieldDefault
+ \dogetcommacommandelement1\from\SavedFieldDefault\to\SavedFieldDefault}
+ {\def\SavedFieldDefault{#5}}%
+% when opt works
+% \@EA\beforesplitstring\SavedFieldDefault\at=>\to\SavedFieldDefault
+ \ifx\@@DriverFieldKids\empty
+ \setfield{#1}{#2}{}{}{#4}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\SavedFieldDefault}%
+ \else
+ \setfield{#1}{#2}{}{}{#4,\@@DriverFieldKids}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\SavedFieldDefault}%
+ \fi
+%
+ \def\docommando##1%
+ {\doifelse{##1}\SavedFieldDefault
+ {\def\@@DriverFieldDefault{##1}}%
+ {\let\@@DriverFieldDefault\empty}%
+ \setfield{##1}{#2}{#1}{}{}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\@@DriverFieldDefault}}%
+% when opt works
+% \def\docommando##1%
+% {\@EA\beforesplitstring##1\at=>\to\FieldValue
+% \doifelse\FieldValue\SavedFieldDefault
+% {\let\@@DriverFieldDefault\FieldValue}%
+% {\let\@@DriverFieldDefault\empty}%
+% \setfield\FieldValue{#2}{#1}{}{}{#3}{\@@DriverFieldMode\@@DriverFieldFree\@@DriverFieldAuto}{}{\@@DriverFieldDefault}}%
+ \processcommalist[#4]\docommando
+ \else
+ \writestatus\m!fields{pass values too}%
+ \fi}
+
+\def\definesubfield
+ {\dotripleempty\dodefinesubfield}
+
+\def\dodefinesubfield[#1][#2][#3]% for the moment only radio ones
+ {\ifsecondargument
+ \def\docommando##1%
+ {\getfield{##1}%
+ \ifx\@@DriverFieldType\empty
+ \writestatus\m!fields{unknown field ##1}% to do
+ \else
+ \doifsomething{#2}
+ {\edef\@@DriverFieldGroup{#2}}%
+ \doifelsenothing{#3}
+ {\definedefaultsymbols
+ \def\@@DriverFieldValues{defaultyes}}
+ {\def\@@DriverFieldValues{#3}}%
+ \changefield{##1}%
+ \fi}%
+ \processcommalist[#1]\docommando
+ \else
+ \writestatus\m!fields{pass fieldname, setupgroup, values and default}%
+ \fi}
+
+\def\doclonefield[#1][#2][#3][#4]% parent children setupgroup values
+ {\ifsecondargument
+ \getfield{#1}%
+\iftrialtypesetting\else
+ \ifx\@@DriverFieldType\empty
+ \writestatus\m!fields{unknown field #1}%
+ \else
+ \let\@@DriverFieldMode\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@DriverFieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@DriverFieldKids}%
+ \processcommalist[#2]\docommando
+ \changefield{#1}%
+ \let\@@DriverFieldAutoParent\@@DriverFieldAuto
+ \def\@@DriverFieldParent{#1}%
+ \let\@@DriverFieldKids\empty
+ \let\@@DriverFieldRoot\empty
+ \let\@@DriverFieldMode\fieldchildmode
+ \def\@@DriverFieldFree{0}%
+ \def\@@DriverFieldAuto{0}%
+ \doifsomething{#3}{\edef\@@DriverFieldGroup{#3}}%
+ \doifsomething{#4}{\edef\@@DriverFieldValues{#4}}%
+ \def\docommando##1%
+ {\ifcase\@@DriverFieldAutoParent\else
+ \setmainfieldkid{\@@DriverFieldParent}{##1}%
+ \fi
+ \changefield{##1}}%
+ \processcommalist[#2]\docommando
+ \fi
+\fi
+ \else
+ \writestatus\m!fields{pass parent field and clones}%
+ \fi}
+
+\def\clonefield
+ {\doquadrupleempty\doclonefield}
+
+\def\docopyfield[#1][#2]% parent children
+ {\ifsecondargument
+ \getfield{#1}%
+\iftrialtypesetting\else
+ \ifx\@@DriverFieldType\empty
+ \writestatus\m!fields{unknown field #1}%
+ \else
+ \let\@@DriverFieldMode\fieldparentmode
+ %\def\docommando##1{\addtocommalist{##1}\@@DriverFieldKids}%
+ \def\docommando##1{\appendtocommalist{##1}\@@DriverFieldKids}%
+ \processcommalist[#2]\docommando
+ \changefield{#1}%
+ \let\@@DriverFieldAutoParent\@@DriverFieldAuto
+ \def\@@DriverFieldParent{#1}%
+ \let\@@DriverFieldKids\empty
+ \let\@@DriverFieldRoot\empty
+ \let\@@DriverFieldMode\fieldcopymode
+ \def\@@DriverFieldFree{0}%
+ \def\@@DriverFieldAuto{0}%
+ \def\docommando##1%
+ {\ifcase\@@DriverFieldAutoParent\else
+ \setmainfieldkid{\@@DriverFieldParent}{##1}%
+ \fi
+ \changefield{##1}}%
+ \processcommalist[#2]\docommando
+ \fi
+\fi
+ \else
+ \writestatus\m!fields{pass parent field and copies}%
+ \fi}
+
+\def\copyfield{\dodoubleempty\docopyfield}
+
+\unexpanded\def\field {\dotripleempty\dofield[\dohandlefield]}
+\unexpanded\def\fitfield{\dotripleempty\dofield[\dohandlefitfield]}
+
+\def\dofield[#1][#2][#3]%
+ {\iffirstargument
+ \bgroup
+ \getfield{#2}%
+ \ifsecondargument
+ \def\@@DriverFieldLabel{#3}%
+ \else
+ \let\@@DriverFieldLabel\@@DriverFieldName
+ \fi
+ \ifx\@@DriverFieldType\empty
+ \writestatus\m!fields{unknown field #2}%
+ \else\ifcase\@@DriverFieldFree\relax
+ \doifdefinedelse{\strippedcsname\setupfield\@@DriverFieldGroup}
+ {\let\dosetupfield=#1\getvalue{\strippedcsname\setupfield\@@DriverFieldGroup}}
+ {#1[\@@DriverFieldName][\v!label,\v!frame,\v!horizontal][][][]}%
+\iftrialtypesetting\else
+ \def\@@DriverFieldFree{1}%
+ \changefield{#2}%
+\fi
+ \else\ifcase\@@DriverFieldAuto\relax
+ % \writestatus\m!fields{field #2 already typeset}%
+ \else
+ % \writestatus\m!fields{field #2 automatically copied}%
+ \nextsystemfield
+ \copyfield[\@@DriverFieldName][\currentsystemfield]%
+ \dotripleempty\dofield[#1][\currentsystemfield][#3]% get the if's right
+ \fi\fi\fi
+ \egroup
+ \fi}
+
+\def\typesetfield
+ {\useJSscripts[fld]%
+ \ifx\@@DriverFieldRoot\empty \else
+ \let\@@SavedFieldName\@@DriverFieldName
+ \getfield\@@DriverFieldRoot
+ \ifcase\@@DriverFieldFree\relax
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
+ \dopresetrecord
+\iftrialtypesetting\else
+ \def\@@DriverFieldFree{1}%
+ \changefield\@@DriverFieldName
+\fi
+ \fi
+ \getfield\@@SavedFieldName
+ \fi
+ \ifx\@@DriverFieldKids\empty
+ \donefalse
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \let\@@DriverFieldParent\@@DriverFieldName
+ %\addtocommalist\@@DriverFieldParent\@@DriverFieldKids
+ \appendtocommalist\@@DriverFieldParent\@@DriverFieldKids
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
+ \dopresetfield
+ \let\@@DriverFieldMode\fieldchildmode
+ \fi
+ \dosetfieldstatus\@@DriverFieldMode\@@DriverFieldParent\@@DriverFieldKids\@@DriverFieldRoot
+ \dopresetfield}
+
+\def\dopresetfield
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@DriverFieldType field}\fi\fi}
+
+\def\dopresetrecord
+ {\iftrialtypesetting\else\iflocation\getvalue{preset\@@DriverFieldType record}\fi\fi}
+
+\def\dodefinethefieldset[#1][#2]%
+ {\dodefinefieldset{#1}{#2}}
+
+\def\definefieldset%
+ {\dodoubleargument\dodefinethefieldset}
+
+\def\normaldodosetupfield[#1][#2][#3][#4][#5]%
+ {\doifdefinedelse{\strippedcsname\setupfield#1}
+ {\pushmacro\dosetupfield
+ \def\dosetupfield[##1][##2][##3][##4][##5]%
+ {\setvalue{\strippedcsname\setupfield#1}{\dosetupfield[#1][##2,#2][##3,#3][##4,#4][##5,#5]}}%
+ \getvalue{\strippedcsname\setupfield#1}%
+ \popmacro\dosetupfield}
+ {\setvalue{\strippedcsname\setupfield#1}{\dosetupfield[#1][#2][#3][#4][#5]}}}
+
+\let\dodosetupfield\normaldodosetupfield
+
+\def\donosetupfield[#1][#2][#3][#4][#5]%
+ {\setvalue{\strippedcsname\setupfield#1}{\dosetupfield[#1][#2][#3][#4][#5]}}
+
+\def\dosetupfield[#1][#2][#3][#4][#5]%
+ {\iffifthargument
+ \def\docommando##1{\dodosetupfield[##1][#2][#3][#4][#5]}%
+ \processcommalist[#1]\docommando
+ \else\ifthirdargument
+ \def\docommando##1{\dodosetupfield[##1][#2][][][#3]}%
+ \processcommalist[#1]\docommando
+ \else\ifsecondargument
+ \doifelse{#2}\v!reset
+ {\def\docommando##1{\donosetupfield[#1][][][][]}}
+ {\def\docommando##1{\dodosetupfield[##1][][][][#2]}}%
+ \processcommalist[#1]\docommando
+ \else\iffirstargument
+ \def\docommando##1{\dodosetupfield[##1][][][][]}%
+ \processcommalist[#1]\docommando
+ \else
+ \writestatus\m!fields{provide either 1, 2, 3 or 5 arguments}%
+ \fi\fi\fi\fi}
+
+\def\setupfield
+ {\doquintupleempty\dosetupfield}
+
+\def\dosetupfields[#1][#2][#3][#4]%
+ {\ifsecondargument
+ \def\dodosetupfield[##1][##2][##3][##4][##5]%
+ {\doifdefinedelse{\strippedcsname\setupfield##1}
+ {\def\dosetupfield[####1][####2][####3][####4][####5]%
+ {\setvalue{\strippedcsname\setupfield##1}{\dosetupfield[##1][#1,####2,##2][#2,####3,##3][#3,####4,##4][#4,####5,##5]}}%
+ \getvalue{\strippedcsname\setupfield##1}}
+ {\setvalue{\strippedcsname\setupfield##1}{\dosetupfield[##1][#1,##2][#2,##3][#3,##4][#4,##5]}}}%
+ \else\iffirstargument
+ \doifelse{#1}\v!reset
+ {\let\dodosetupfield\normaldodosetupfield}
+ {\setupfields[][][][#1]}% checken
+ \else
+ \writestatus\m!fields{provide either 1 or 4 arguments}%
+ \fi\fi}
+
+\def\setupfields
+ {\doquadrupleempty\dosetupfields}
+
+% opties: veld, label, kader, vertikaal/horizontaal
+
+\newif\ifShowFieldLabel
+\newif\ifShowFieldFrame
+\newif\ifVerticalField
+\newif\ifHorizontalField
+
+% way to slow/complicated, we need some simple alternative
+% as well
+
+\def\dohandlefield[#1][#2][#3][#4][#5]%
+ {\presetlocalframed[\??fd]%
+ \processallactionsinset
+ [#2]
+ [ \v!reset=>\ShowFieldLabelfalse\ShowFieldFramefalse
+ \HorizontalFieldfalse\VerticalFieldfalse,
+ \v!label=>\ShowFieldLabeltrue,
+ \v!frame=>\ShowFieldFrametrue,
+ \v!horizontal=>\HorizontalFieldtrue,
+ \v!vertical=>\VerticalFieldtrue]%
+ \ifVerticalField
+ \getparameters[\??fd]
+ [\c!distance=\!!zeropoint,\c!inbetween=\vskip\@@localoffset,
+ \c!align=\v!right,\c!width=20em]%
+ \else\ifHorizontalField
+ \getparameters[\??fd]
+ [\c!distance=\@@localoffset,\c!inbetween=,\c!align=\c!left,
+ \c!height=10ex]%
+ \else
+ \getparameters[\??fd]
+ [\c!distance=\!!zeropoint,\c!inbetween=,\c!align=\c!left]%
+ \fi\fi
+ \getparameters[\??fd]
+ [\c!n=,\c!before=,\c!after=\vss,\c!style=,\c!color=,#3]%
+ \reshapeframeboxfalse % else ugly spacing
+ \ifShowFieldFrame
+ \localframed[\??fd][\c!strut=\v!no,\c!align=]\bgroup
+ \else
+ \vbox\bgroup
+ \fi
+ \dontcomplain
+ \ifShowFieldLabel
+ \setbox0\hbox
+ {\reshapeframeboxtrue % else wrong dimensions
+ \framed
+ [\c!style=,\c!color=,\c!align=\c!right,#4]
+ {\@@DriverFieldLabel}}%
+ \fi
+ \setbox2\hbox
+ {\reshapeframeboxtrue % else wrong dimensions
+ \ifVerticalField
+ \setupframed[\c!height=6ex,\c!width=\hsize]%
+ \else\ifHorizontalField
+ \setupframed[\c!height=\vsize,\c!width=20em]%
+ \else
+ \setupframed[\c!height=2cm,\c!width=2cm]%
+ \fi\fi
+ \framed
+ [\c!align=\v!right,\c!strut=\v!no,#5]
+ {\getparameters
+ [\??fd]
+ [\c!color=,\c!style=,\c!align=\v!right,\c!option=,
+ \c!clickin=,\c!clickout=,\c!regionin=,\c!regionout=,
+ \c!afterkey=,\c!format=,\c!validate=,\c!calculate=,
+ \c!focusin=,\c!focusout=,
+ \c!fieldoffset=\!!zeropoint,\c!fieldbackgroundcolor=,
+ \c!fieldframecolor=,\c!fieldlayer=,#5]%
+ \scratchdimen\framedwidth \edef\@@DriverFieldWidth {\the\scratchdimen}%
+ \scratchdimen\framedheight\edef\@@DriverFieldHeight{\the\scratchdimen}%
+ \vfill
+ \hbox{\lower\@@fdfieldoffset\hbox{\typesetfield}}
+ \vss}}%
+ \ifShowFieldLabel
+ \ifVerticalField
+ \vbox
+ {\copy0
+ \@@fdinbetween
+ \copy2}%
+ \else
+ \hbox
+ {\vbox \ifdim\ht2>\ht0 to \ht2 \fi
+ {\@@fdbefore
+ \copy0
+ \@@fdafter}%
+ \hskip\@@fddistance
+ \vbox \ifdim\ht0>\ht2 to \ht0 \fi
+ {\@@fdbefore
+ \box2
+ \@@fdafter}}%
+ \fi
+ \else
+ \box2
+ \fi
+ \egroup}
+
+\chardef\fitfieldmode\plusone % 3 = best
+
+\def\dohandlefitfield[#1][#2][#3][#4][#5]% alleen check
+ {\presetlocalframed[\??fd]%
+ \localframed
+ [\??fd]
+ [\c!n=1024, % beware: weblink plug in truncates
+ \c!strut=\v!no,\c!color=,\c!style=,\c!option=,
+ \c!clickin=,\c!clickout=,\c!regionin=,\c!regionout=,
+ \c!focusin=,\c!focusout=,
+ \c!afterkey=,\c!format=,\c!validate=,\c!calculate=,
+ \c!fieldoffset=\!!zeropoint,\c!fieldbackgroundcolor=,
+ \c!fieldframecolor=,\c!fieldlayer=,#5,\c!align=]
+ {\dogetcommacommandelement1\from\@@DriverFieldValues\to\@@DriverFieldValue
+ \ifx\@@DriverFieldValue\empty
+ \let\@@DriverFieldValue\@@DriverFieldDefault
+ \fi
+ \dopresetfieldsymbol\@@DriverFieldValue
+ \setbox\scratchbox\hbox{\dogetfieldsymbol\@@DriverFieldValue}%
+ \scratchdimen\wd\scratchbox \edef\@@DriverFieldWidth {\the\scratchdimen}%
+ \scratchdimen\ht\scratchbox \edef\@@DriverFieldHeight{\the\scratchdimen}%
+ \ifcase\fitfieldmode
+ \typesetfield
+ \or % 1 = ignore depth (original, assumed no depth, actually a bug)
+ \vbox to \ht\scratchbox{\vfill\hbox to \wd\scratchbox{\typesetfield\hfill}\vss}%
+ \or % 2 = add depth to height, but no depth in result
+ \advance\scratchdimen\dp\scratchbox \edef\@@DriverFieldHeight{\the\scratchdimen}%
+ \vbox to \ht\scratchbox{\vfill\hbox to \wd\scratchbox{\typesetfield\hfill}\vss}%
+ \or % 3 = add depth to height, and apply depth to result
+ \advance\scratchdimen\dp\scratchbox \edef\@@DriverFieldHeight{\the\scratchdimen}%
+ \hbox to \wd\scratchbox{\lower\dp\scratchbox\hbox{\typesetfield}\hfill}%
+ \fi}}
+
+%D Common stuff
+
+\newcounter\nofsystemfields
+
+\def\nextsystemfield
+ {\doglobal\increment\nofsystemfields
+ \def\currentsystemfield{sys::\nofsystemfields}}
+
+%D An example:
+
+\def\fillinfield
+ {\dosingleempty\dofillinfield}
+
+\def\dofillinfield[#1]#2%
+ {\dontleavehmode
+ \hbox
+ {\forgetall
+ \setupfields[\v!reset]%
+ \nextsystemfield
+ \useJSscripts[ans]%
+ \doifelsenothing{#1}
+ {\def\therightanswer{#2}}
+ {\def\therightanswer{#1}}%
+ \setbox0\hbox{#2}%
+ \setbox2\hbox{\therightanswer}%
+ \dimen0=\ifdim\wd0>\wd2 \wd0 \else \wd2 \fi
+ \advance\dimen0 .2em
+ \definefield
+ [\currentsystemfield][line][systemfield]%
+ \setupfield
+ [systemfield]
+ [\c!n=1024, % beware: weblink plugin truncates
+ \c!location=\v!low,\c!strut=\v!yes,\c!fieldoffset=0pt,
+ \c!height=1.2\openlineheight,\c!width=\dimen0,\c!offset=\v!overlay,
+ \c!style=,\c!align=\v!middle,\c!frame=\v!off,
+ \c!color=red,\c!fieldbackgroundcolor=\s!white,\c!fieldframecolor=blue,
+ \c!validate=JS(Check_Answer{\currentsystemfield,\therightanswer})]%
+ \switchtobodyfont
+ [\c!small]%
+ \hbox to \wd0
+ {\copy0\hskip-\wd0\hss\field[\currentsystemfield]\hss}}}
+
+%D and another one:
+
+\def\tooltip
+ {\dosingleempty\dotooltip}
+
+\def\dotooltip[#1]#2#3%
+ {\bgroup
+ \setupfields[\v!reset]%
+ \useJSscripts[fld]%
+ \setbox0\hbox
+ {\dontcomplain
+ \nextsystemfield
+ \setbox0\hbox{#2}%
+ \definesymbol
+ [\currentsystemfield:txt]
+ [{\inframed[\c!frame=\v!off,\c!background=\v!screen]{#3}}]%
+ \setbox2\hbox{\symbol[\currentsystemfield:txt]}%
+ \definefield
+ [\currentsystemfield:txt][check]
+ [dummy][\currentsystemfield:txt][\currentsystemfield:txt]%
+ \setupfield
+ [dummy]
+ [\c!frame=\v!off,
+ \c!regionout=JS(Hide_Field{\currentsystemfield:txt}),
+ \c!option=\v!hidden]%
+ \hbox to \zeropoint
+ {\dimen0\wd2\advance\dimen0 -\wd0
+ \doifelse{#1}\v!left
+ {\hskip-\dimen0}
+ {\doif{#1}\v!middle
+ {\hskip-.5\dimen0}}%
+ \lower\openlineheight\hbox to \zeropoint
+ {\fitfield[\currentsystemfield:txt]}}%
+ \dimen0=\ifdim\wd0=\zeropoint 3em\else\wd0\fi
+ \definesymbol
+ [\currentsystemfield:but]
+ [{\framed[\c!height=2ex,\c!width=\dimen0,\c!frame=\v!off]{}}]%
+ \definefield
+ [\currentsystemfield:but][push]
+ [dummy][\currentsystemfield:but][\currentsystemfield:but]%
+ \setupfield
+ [dummy]
+ [\c!frame=\v!off,
+ \c!option=,
+ \c!regionin=JS(Vide_Field{\currentsystemfield:txt}),
+ \c!regionout=JS(Hide_Field{\currentsystemfield:txt})]%
+ \lower2ex\hbox to \zeropoint
+ {\fitfield[\currentsystemfield:but]}%
+ #2}%
+ \ht0\strutht\dp0\strutdp\box0
+ \egroup}
+
+%D And one more:
+
+\def\definefieldstack%
+ {\dotripleargument\dodefinefieldstack}
+
+\def\dodefinefieldstack[#1][#2][#3]% name, symbols, settings
+ {\doifundefined{fieldstack:#1}
+ {\setgvalue{fieldstack:#1}{\dodofieldstack[#1][#2][#3]}}}
+
+\def\dodofieldstack[#1][#2][#3]% start=n, 0 == leeg
+ {\bgroup
+ \getparameters[\??fd][\c!start=1,#3]%
+ \setupfields[\v!reset]%
+ \definesymbol[\v!empty][]%
+ \useJSscripts[fld][FieldStack]%
+ \newcounter\stackedfieldnumber
+ \def\dododofieldstack##1%
+ {\increment\stackedfieldnumber
+ \ifnum\stackedfieldnumber=\@@fdstart\relax
+ \definefield[#1:\stackedfieldnumber][check][#1][##1,\v!empty][##1]%
+ \else
+ \definefield[#1:\stackedfieldnumber][check][#1][##1,\v!empty][\v!empty]%
+ \fi}%
+ \processcommalist[#2]\dododofieldstack
+ \setupfield[#1][\v!reset]% added
+ \setupfield[#1][\c!option=\v!readonly,#3]% #3 swapped
+ \newcounter\stackedfieldnumber
+ \def\dododofieldstack##1%
+ {\doglobal\increment\stackedfieldnumber
+ \fitfield[#1:\stackedfieldnumber]\egroup\bgroup}%
+ \startoverlay
+ \bgroup
+ \globalprocesscommalist[#2]\dododofieldstack
+ \egroup
+ \stopoverlay
+ \egroup}
+
+\def\dofieldstack[#1][#2][#3]%
+ {\ifsecondargument
+ \dodefinefieldstack[#1][#2][#3]\fieldstack[#1]%
+ \else
+ \getvalue{fieldstack:#1}\setgvalue{fieldstack:#1}{[#1]}%
+ \fi}
+
+\def\fieldstack
+ {\dotripleempty\dofieldstack}
+
+%D When submitting a form, we need to tell the driver module
+%D that we want \FDF\ or \HTML.
+
+\def\setupforms
+ {\dodoubleargument\getparameters[\??fr]}
+
+\def\checksubmitform#1%
+ {\setsubmitoutputformat\@@frmethod}
+
+\setexecutecommandcheck {submitform} \checksubmitform
+
+\setupforms
+ [\c!method=HTML]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-fnt.tex b/Master/texmf-dist/tex/context/base/core-fnt.tex
new file mode 100644
index 00000000000..6a55849f454
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-fnt.tex
@@ -0,0 +1,722 @@
+%D \module
+%D [ file=core-fnt,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Font Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Font Support}
+
+\unprotect
+
+%D \macros
+%D {compound}
+%D
+%D We will overload the already active \type {|} so we have
+%D to save its meaning in order to be able to use this handy
+%D macro.
+%D
+%D \starttyping
+%D so test\compound{}test can be used instead of test||test
+%D \stoptyping
+
+\bgroup \catcode`\|=\@@active \gdef\compound#1{|#1|} \egroup
+
+%D Here we hook some code into the clean up mechanism needed
+%D for verbatim data.
+
+\appendtoks
+ \disablecompoundcharacters
+ \disablediscretionaries
+\to \everycleanupfeatures
+
+%D \macros
+%D {kap,KAP,Kap,Kaps,nokap,userealcaps,usepseudocaps}
+%D
+%D We already introduced \type{\cap} as way to capitalize
+%D words. This command comes in several versions:
+%D
+%D \startbuffer
+%D \cap {let's put on a \cap{cap}}
+%D \cap {let's put on a \nocap{cap}}
+%D \CAP {let's put on a \\{cap}}
+%D \Cap {let's put on a \\{cap}}
+%D \Caps{let's put on a cap}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Note the use of \type{\nocap}, \type{\\} and the nested
+%D \type{\cap}.
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D These macros show te main reason why we introduced the
+%D smaller \type{\tx} and \type{\txx}.
+%D
+%D \starttyping
+%D \cap\romannumerals{1995}
+%D \stoptyping
+%D
+%D This at first sight unusual capitilization is completely
+%D legal.
+%D
+%D \showsetup{smallcapped}
+%D \showsetup{notsmallcapped}
+%D \showsetup{CAPPED}
+%D \showsetup{SmallCapped}
+%D \showsetup{SmallCaps}
+%D
+%D The difference between pseudo and real caps is demonstrated
+%D below:
+%D
+%D \startbuffer
+%D \usepseudocaps \cap{Hans Hagen}
+%D \userealcaps \cap{Hans Hagen}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D The \type {\bgroup} trickery below is needed because of
+%D \type {\groupedcommand}.
+
+\def\usepseudocaps
+ {\def\cap@@uppercase{\the\everyuppercase\uppercased}%
+ \def\cap@@lowercase{\the\everylowercase\lowercased}%
+ \def\cap@@visualize{\tx}}
+
+\def\userealcaps
+ {\let\cap@@uppercase\relax
+ %\let\cap@@lowercase\relax % Definitely not!
+ \def\cap@@visualize{\sc}}
+
+\usepseudocaps
+
+\unexpanded\def\smallcapped % else conflict with math
+ {\futurelet\next\dosmallcapped}
+
+\def\disablepseudocaps
+ {\let\smallcapped\donothing}
+
+\def\dosmallcapped
+ {\ifx\next\bgroup
+ \expandafter\dodosmallcapped\expandafter\relax
+ \else
+ \expandafter\dodosmallcapped
+ \fi}
+
+\def\dodosmallcapped#1#2%
+ {\ifmmode\hbox\fi
+ \bgroup
+ \cap@@visualize
+ \cap@@uppercase{#1{#2}}%
+ \egroup}
+
+\unexpanded\def\notsmallcapped#1%
+ {\cap@@lowercase{#1}}
+
+\unexpanded\def\CAPPED#1%
+ {{\def\\##1{\smallcapped{##1}}#1}}
+
+\unexpanded\def\SmallCapped#1%
+ {\CAPPED{\\#1}}
+
+\unexpanded\def\SmallCaps
+ {\let\processword\SmallCapped
+ \processwords}
+
+%D Sure:
+
+\def\kap{\smallcapped} % for old times sake
+
+%D Some precautions for a \PLAIN\ \TEX\ definition.
+
+\unexpanded\def\normalcap{\dohandlemathtoken{cap}}
+\unexpanded\def\normalCap{\dohandlemathtoken{Cap}}
+
+\def\cap{\mathortext\normalcap\smallcapped}
+\def\Cap{\mathortext\normalCap\SmallCapped}
+
+%D \macros
+%D {setupcapitals}
+%D
+%D By default we use pseudo small caps in titles. This can be
+%D set up with:
+%D
+%D \showsetup{setupcapitals}
+
+\let\normalsmallcapped\smallcapped
+
+\def\setupcapitals
+ {\dosingleempty\dosetupcapitals}
+
+\def\dosetupcapitals[#1]%
+ {\getparameters[\??kk][#1]%
+ \doifelse\@@kktitle\v!yes
+ {\definealternativestyle[\v!capital][\normalsmallcapped][\normalsmallcapped]%
+ \definealternativestyle[\v!smallcaps][\sc][\sc]%
+ \unexpanded\def\smallcapped{\normalsmallcapped}}
+ {\definealternativestyle[\v!capital][\normalsmallcapped][\uppercased]%
+ \definealternativestyle[\v!smallcaps][\sc][\uppercased]%
+ \unexpanded\def\smallcapped{\doconvertfont\v!capital}}%
+ \doifelse\@@kksc\v!yes
+ \userealcaps
+ \usepseudocaps}
+
+\ifx\uppercased\undefined \let\uppercased\uppercase \fi
+\ifx\lowercased\undefined \let\lowercased\lowercase \fi
+
+% pretty tricky stuff:
+%
+% \usemodule[abr-01] \TEX \METAPOST \PPCHTEX \LATEX
+% \usemodule[abr-02] \TEX \METAPOST \PPCHTEX \LATEX
+
+%def\uppercased#1{{\forceunexpanded\xdef\@@globalcrap{\uppercase{#1}}}\@@globalcrap}
+%def\lowercased#1{{\forceunexpanded\xdef\@@globalcrap{\lowercase{#1}}}\@@globalcrap}
+
+\def\uppercased#1{{\forceunexpanded\xdef\@@expanded{\uppercase{#1}}}\@@expanded}
+\def\lowercased#1{{\forceunexpanded\xdef\@@expanded{\lowercase{#1}}}\@@expanded}
+
+\setupcapitals
+ [\c!title=\v!yes,
+ \c!sc=\v!no]
+
+%D \macros
+%D {Word, Words, WORD, WORDS, doprocesswords}
+%D
+%D This is probably not the right place to present the next set
+%D of macros.
+%D
+%D \starttyping
+%D \Word {far too many words}
+%D \Words{far too many words}
+%D \WORD {far too many words}
+%D \WORDS{far too many words}
+%D \stoptyping
+%D
+%D \typebuffer
+%D
+%D This calls result in:
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D \showsetup{Word}
+%D \showsetup{Words}
+%D \showsetup{WORD}
+%D \showsetup{WORDS}
+
+\def\doWord#1%
+ {\bgroup
+ \the\everyuppercase
+ \uppercase{#1}%
+ \egroup}
+
+\unexpanded\def\Word#1%
+ {\doWord#1}
+
+\def\doprocesswords#1 #2\od
+ {\ConvertToConstant\doifnot{#1}{}
+ {\processword{#1} %
+ \doprocesswords#2 \od}}
+
+\def\processwords#1%
+ {\doprocesswords#1 \od\unskip}
+
+\let\processword\relax
+
+\unexpanded\def\Words
+ {\let\processword\Word
+ \processwords}
+
+\unexpanded\def\WORD#1%
+ {\bgroup
+ \let\smallcapped\firstofoneargument
+ \let\WORD\firstofoneargument
+ \douppercase{#1}%
+ \egroup}
+
+\unexpanded\def\WORDS#1%
+ {\WORD{#1}}
+
+%D \macros
+%D {stretched}
+%D
+%D Stretching characters in a word is a sort of typographical
+%D murder. Nevertheless we support this manipulation for use in
+%D for instance titles.
+%D
+%D \starttyping
+%D \hbox to 5cm{\stretched{murder}}
+%D \stoptyping
+%D
+%D \typebuffer
+%D
+%D or
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D \showsetup{stretched}
+
+\def\stretched#1%
+ {\ifvmode\hbox to \hsize\else\ifinner\else\hbox\fi\fi
+ \bgroup\processtokens\relax\hss\relax{\hss\hss}{#1}\egroup}
+
+%D \startbuffer
+%D \stretched{Unknown Box}
+%D \hbox to .5\hsize{\stretched{A Horizontal Box}}
+%D \vbox to 2cm{\stretched{A Vertical Box}}
+%D \hbox to 3cm{\stretched{sp{\'e}c{\`\i}{\"a}l}}
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D The first line of this macros takes care of boxing. Normally
+%D one will use an \type{\hbox} specification. The last line
+%D shows how special characters should be passed.
+%D
+%D \typebuffer
+
+%D \macros
+%D {stretchednormalcase, stretcheduppercase, stretchedlowercase}
+%D
+%D A convenient alternative is:
+%D
+%D \starttyping
+%D \stretcheduppercase{Is this what you like?}
+%D \stoptyping
+%D
+%D \typebuffer
+%D
+%D this one uses fixed skips and kerns.
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D The default skip can be set with:
+
+% \def\stretchedspacefactor{4}
+% \def\stretchedspaceamount{.25em}
+%
+% \unexpanded\def\stretcheduppercase#1%
+% {\bgroup
+% \the\everyuppercase
+% \uppercase{\def\textstring{#1}}%
+% \ifdim\stretchedspaceamount>\zeropoint
+% \def\textkern%
+% {\kern\stretchedspaceamount}%
+% \def\textskip%
+% {\scratchdimen=\stretchedspaceamount
+% \hskip\stretchedspacefactor\scratchdimen}%
+% \@EA\processtokens\@EA\relax\@EA\textkern\@EA\relax\@EA
+% \textskip\@EA{\textstring}%
+% \else
+% \textstring
+% \fi
+% \egroup}
+
+%D Given the following settings, the space is 1em by default:
+
+\def\stretchedspacefactor{4}
+\def\stretchedspaceamount{.25em}
+\def\stretchedbreaktokens{.@/}
+
+\unexpanded\def\stretchednormalcase
+ {\stretchedsomecase\firstofoneargument}
+
+\unexpanded\def\stretcheduppercase
+ {\stretchedsomecase{\the\everyuppercase\uppercase}}
+
+\unexpanded\def\stretchedlowercase
+ {\stretchedsomecase{\the\everylowercase\lowercase}}
+
+\def\stretchedsomecase#1#2%
+ {\bgroup
+ #1{\def\textstring{#2}}%
+ \ifdim\stretchedspaceamount>\zeropoint
+ \def\textkern##1%
+ {% beware: ##1 may not be \box\somebox -)
+ \determinemidwordbreak{##1}{\stretchedbreaktokens}%
+ \kern\stretchedspaceamount##1\domidwordbreak}%
+ \def\textskip
+ {\scratchdimen\stretchedspaceamount
+ \hskip\stretchedspacefactor\scratchdimen}%
+ \@EA\processtokens\@EA\relax\@EA\textkern\@EA\relax\@EA
+ \textskip\@EA{\textstring}%
+ \else
+ \textstring
+ \fi
+ \egroup}
+
+%D An auxiliary macro, see for usage \type {\stretcheduppercase}.
+
+\let\domidwordbreak\relax
+
+\def\setmidwordbreaktoken#1%
+ {\sfcode`#1=5000\relax}
+
+\def\determinemidwordbreak#1#2%
+ {\edef\midwordbreaktokens{#2}%
+ \ifx\midwordbreaktokens\empty
+ \global\let\domidwordbreak\relax
+ \else
+ \setbox\scratchbox\hbox
+ {\expandafter\handletokens\midwordbreaktokens\with\setmidwordbreaktoken
+ a\space \!!dimena\lastskip
+ #1\space\!!dimenb\lastskip \relax % needed
+ \ifdim\!!dimena=\!!dimenb
+ \globallet\domidwordbreak\relax
+ \else
+ \globallet\domidwordbreak\allowbreak
+ \fi}%
+ \fi}
+
+%D \macros
+%D {underbar,underbars,
+%D overbar,overbars,
+%D overstrike,overstrikes,
+%D setupunderbar}
+%D
+%D In the rare case that we need undelined words, for instance
+%D because all font alternatives are already in use, one can
+%D use \type{\underbar} and \type{\overstrike} and their plural
+%D forms.
+%D
+%D \startbuffer
+%D \underbars{drawing \underbar{bars} under words is a typewriter leftover}
+%D \overstrikes{striking words makes them \overstrike{unreadable} but
+%D sometimes even \overbar{top lines} come into view.}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D The next macros are derived from the \PLAIN\ \TEX\ one, but
+%D also supports nesting. The \type{$} keeps us in horizontal
+%D mode and at the same time applies grouping.
+%D
+%D \showsetup{underbar}
+%D \showsetup{underbars}
+%D \showsetup{overbar}
+%D \showsetup{overbars}
+%D \showsetup{overstrike}
+%D \showsetup{overstrikes}
+%D
+%D Although underlining is ill advised, we permit some
+%D alternatives, that can be set up by:
+%D
+%D \showsetup{setupunderbar}
+%D
+%D The alternatives show up as
+%D {\setupunderbar [alternativevariant=a]\underbar{alternative a}},
+%D {\setupunderbar [alternativevariant=b]\underbar{alternative b}},
+%D {\setupunderbar [alternativevariant=c]\underbar{alternative c}}
+%D and
+%D {\setupunderbar [rulethickness=1pt]\underbar{1pt width}},
+%D {\setupunderbar [rulethickness=2pt]\underbar{2pt width}},
+%D or whatever. Because \type{\overstrike} uses the same
+%D method, the settings also apply to that macro.
+
+\newcounter\underbarlevel
+
+\def\underbarmethoda#1#2#3% RULE
+ {\hbox to #1{\vrule\!!width#1\!!height#2\!!depth#3}}
+
+\def\underbarmethodb#1#2#3% DASH
+ {\hbox to #1
+ {\hskip-.25em
+ \xleaders
+ \hbox{\hskip.25em\vrule\!!width.25em\!!height#2\!!depth#3}
+ \hfil}}
+
+\def\underbarmethodc#1#2#3% PERIOD
+ {\hbox to #1
+ {\dimen4=#3
+ \advance\dimen4 .2ex
+ \hskip-.25em
+ \xleaders
+ \hbox{\hskip.25em\lower\dimen4\hbox{.}}
+ \hfil}}
+
+\def\dododounderbar#1#2#3%
+ {\startmathmode
+ \setbox0\hbox{#3}%
+ \setbox2\hbox{\color[\@@onrulecolor]{\getvalue{underbarmethod\@@onalternative}{\wd0}{#1}{#2}}}%
+ \wd0\zeropoint
+ \ht2\ht0
+ \dp2\dp0
+ \box0\box2
+ \stopmathmode}
+
+\unexpanded\def\dodounderbar#1%
+ {\bgroup
+ \dimen0=\@@onbottomoffset
+ \dimen0=\underbarlevel\dimen0
+ \ifdone \else
+ %\advance\dimen0 -1pt
+ \advance\dimen0 -\strutht
+ \fi
+ \dimen2\dimen0
+ \advance\dimen2 \@@onrulethickness
+ \dododounderbar{-\dimen0}{\dimen2}{#1}%
+ \egroup}
+
+\def\betweenunderbarwords
+ {\bgroup
+ \setbox0\hbox{\dodounderbar{\hskip\fontdimen2\font}}%
+ \nobreak
+ \hskip\zeropoint\!!minus\fontdimen4\font
+ \discretionary{}{}{\box0}%
+ \egroup}
+
+\def\betweenunderbarspaces
+ {\hskip\currentspaceskip}
+
+% \unexpanded\def\dounderbar#1#2%
+% {\let\betweenisolatedwords#1%
+% \processisolatedwords{#2}\dodounderbar
+% \egroup}
+
+\unexpanded\def\underbar
+ {\bgroup
+ \increment\underbarlevel
+ \donetrue
+ \dounderbar\betweenunderbarwords}
+
+\unexpanded\def\dounderbar#1%
+ {\let\betweenisolatedwords#1%
+ \dosingleempty\redounderbar}
+
+\unexpanded\def\redounderbar[#1]#2%
+ {\iffirstargument\setupunderbar[#1]\fi
+ \processisolatedwords{#2}\dodounderbar
+ \egroup}
+
+\unexpanded\def\underbars
+ {\bgroup
+ \increment\underbarlevel
+ \donetrue
+ \dounderbar\betweenunderbarspaces}
+
+\unexpanded\def\overbar
+ {\bgroup
+ \decrement\underbarlevel
+ \donefalse
+ \dounderbar\betweenunderbarwords}
+
+\unexpanded\def\overbars
+ {\bgroup
+ \decrement\underbarlevel
+ \donefalse
+ \dounderbar\betweenunderbarspaces}
+
+\def\dooverstrike#1%
+ {\bgroup
+ \dimen0=\@@ontopoffset
+ \dimen2=\dimen0
+ \advance\dimen2 \@@onrulethickness
+ \dododounderbar{\dimen2}{-\dimen0}{#1}%
+ \egroup}
+
+\def\betweenoverstrikewords
+ {\bgroup
+ \setbox0\hbox{\dooverstrike{\hskip\fontdimen2\font}}%
+ \nobreak
+ \hskip\zeropoint\!!minus\fontdimen4\font
+ \discretionary{}{}{\box0}%
+ \egroup}
+
+\unexpanded\def\overstrike#1%
+ {\bgroup
+ \let\betweenisolatedwords\betweenoverstrikewords
+ \processisolatedwords{#1}\dooverstrike
+ \egroup}
+
+\unexpanded\def\overstrikes#1%
+ {\bgroup
+ \processisolatedwords{#1}\dooverstrike
+ \egroup}
+
+\def\underbarparameter#1{\csname\??on#1\csname}
+
+\def\setupunderbar
+ {\dodoubleargument\getparameters[\??on]}
+
+%D \macros
+%D {shiftedword, shiftedwords}
+%D
+%D Used as \type {\shiftedwords {10pt} {some text}} this macro will
+%D move
+
+% \def\shiftedword#1% #2%
+% {\raise#1\hbox} % {#2}} % officially: {\ifdim#1>\zeropoint\raise\else\lower\fi#1\hbox{#2}}
+
+% \def\shiftedwords#1#2%
+% {\processisolatedwords{#2}{\shiftedword{#1}}}
+
+%D \macros
+%D {low, high, lohi}
+%D
+%D Although \TEX\ is pretty well aware of super- and
+%D subscripts, its mechanism is mainly tuned for math mode.
+%D The next few commands take care of script texts both modes.
+%D
+%D \startbuffer
+%D The higher\high{one goes} the lower\low{one drops}, or\lohi{yes}{no}?
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D Note the different placement of \type {\lohi}, where we
+%D need a bit more space. The implementation looks a bit
+%D fuzzy, since some \type {\fontdimen}'s are involved to
+%D determine the optimal placement.
+
+\def\dodohighlow
+ {\ifx\fontsize\empty
+ \ifmmode
+ \ifnum\fam<0 \tx \else \holamathfont \fi
+ \else
+ \tx
+ \fi
+ \else
+ \tx
+ \fi}
+
+\def\dohighlow#1#2#3#4#5%
+ {\dontleavehmode
+ \bgroup
+ \scratchdimen\ifdim\fontdimen5\textfont2=1ex\fontdimen#2\textfont2\else#3ex\fi
+ \advance\scratchdimen #4ex
+ \kern.1ex
+ \setbox\scratchbox\hbox{#1\scratchdimen\hbox{\dodohighlow#5}}%
+ \ht\scratchbox\strutheight
+ \dp\scratchbox\strutdepth
+ \box\scratchbox
+ \egroup}
+
+\unexpanded\def\high{\dohighlow\raise{14}{.86}{0}}
+\unexpanded\def\low {\dohighlow\lower{16}{.48}{0}}
+
+% \unexpanded\def\lohi#1#2%
+% {\dontleavehmode
+% \hbox
+% {\setbox4=\hbox{\dohighlow\lower{16}{.48}{.1}{#1}}%
+% \setbox6=\hbox{\dohighlow\raise{14}{.86}{.1}{#2}}%
+% \ifdim\wd4<\wd6
+% \wd4=\zeropoint\box4\box6
+% \else
+% \wd6=\zeropoint\box6\box4
+% \fi}}
+
+\unexpanded\def\lohi
+ {\dosingleempty\dolohi}
+
+\def\dolohi[#1]#2#3%
+ {\dontleavehmode
+ \hbox
+ {\setbox4\hbox{\dohighlow\lower{16}{.48}{.1}{#2}}%
+ \setbox6\hbox{\dohighlow\raise{14}{.86}{.1}{#3}}%
+ \doif{#1}{\v!left}
+ {\ifdim\wd4<\wd6
+ \setbox4\hbox to \wd6{\hss\box4}%
+ \else
+ \setbox6\hbox to \wd4{\hss\box6}%
+ \fi}%
+ \ifdim\wd4<\wd6
+ \wd4=\zeropoint\box4\box6
+ \else
+ \wd6=\zeropoint\box6\box4
+ \fi}}
+
+%D You can provide an optional keyword \type {left}, in which
+%D case the super and subscripts will be aligned in a way that
+%D permits placement at the left of a word (which means that
+%D it will be right aligned).
+%D
+%D \startbuffer
+%D \lohi{aha}{ah} test \lohi{aha}{ah} test
+%D \lohi[left]{aha}{ah} test \lohi[left]{aha}{ah} test
+%D \lohi{aha}{ah} test\lohi{aha}{ah} test
+%D \lohi[left]{aha}{ah}test \lohi[left]{aha}{ah}test
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+%D \macros
+%D {setupinitial,placeinitial,checkinitial}
+%D
+%D {\em To be documented.}
+%D
+%D \starttyping
+%D \setupinitial[state=start] \placeinitial \input tufte
+%D \stoptyping
+%D
+%D and
+%D
+%D \starttyping
+%D \def\bpar{\ifvmode\checkinitial\fi}
+%D \def\epar{\ifhmode\par\fi\checkinitial}
+%D \stoptyping
+
+% to do: more fine tuning
+
+\def\setupinitial
+ {\dodoubleempty\getparameters[\??dc]}
+
+\definefontsynonym[Initial][Regular] % prefered initial identifier
+\definefontsynonym[initial][Initial] % internal but accepted too
+
+\setupinitial
+ [\c!state=\v!stop,
+ \c!location=\v!text,
+ \c!n=3,
+ \c!distance=.125em,
+ \c!command=,
+ \s!font=initial]
+
+\def\AutoDroppedCapsCommand{\NiceDroppedCaps\@@dccommand\@@dcfont\@@dcdistance\@@dcn}%
+
+\def\placeinitial
+ {\doifelse\@@dclocation\v!margin{\chardef\DropMode\plusone}{\chardef\DropMode\zerocount}%
+ \doif \@@dcstate\v!start{\ifcase\@@dcn\else\AutoDroppedCaps\fi}}
+
+\let\checkinitial\CheckDroppedCaps
+
+%D This module has only a few setups:
+
+\setupunderbar
+ [\c!alternative=a,
+ \c!rulethickness=\linewidth,
+ \c!bottomoffset=1.5pt,
+ \c!topoffset=2.5pt,
+ \c!rulecolor=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-gen.tex b/Master/texmf-dist/tex/context/base/core-gen.tex
new file mode 100644
index 00000000000..1b713328086
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-gen.tex
@@ -0,0 +1,211 @@
+%D \module
+%D [ file=core-gen,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=General,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / General}
+
+\unprotect
+
+%D \macros
+%D {assigndimension,assignalfadimension}
+%D
+%D Hieronder worden enkele commando's gedefinieerd rond
+%D toekenningen. Allereerst een commando om waarden aan
+%D een \DIMENSION\ toe te kennen:
+%D
+%D \starttyping
+%D \assigndimension
+%D {<waarde>|klein|middel|groot|-klein|-middel|-groot|geen}
+%D {\dimension}
+%D {waarde klein}
+%D {waarde middel}
+%D {waarde groot}
+%D \stoptyping
+%D
+%D Hierbij krijgt de \DIMENSION\ \type{\dimension} een waarde
+%D afhankelijk van het meegegeven trefwoord.
+%D
+%D \startnarrower
+%D \startlines
+%D \type{(-)klein }\qquad (--) waarde klein
+%D \type{(-)middel}\qquad (--) waarde middel
+%D \type{(-)groot }\qquad (--) waarde groot
+%D \type{geen }\qquad 0pt
+%D \type{waarde }\qquad waarde
+%D \stoplines
+%D \stopnarrower
+%D
+%D Een trefwoord mag worden voorafgegaan door een \type{-}.
+%D Deze macro toont een voorbeeld van het gebruik van
+%D \type{\processaction} en constanten.
+%D
+%D Analoog aan het bovenstaande commando kennen we een
+%D commando om waarden toe te kennen aan een macro:
+%D
+%D \starttyping
+%D \assignalfadimension
+%D {<waarde>|klein|middel|groot|geen}
+%D {\macro}
+%D {waarde klein}
+%D {waarde middel}
+%D {waarde groot}
+%D \stoptyping
+
+\def\assigndimension#1#2#3#4#5%
+ {\processaction
+ [#1]
+ [ \v!small=>#2=#3,
+ \v!medium=>#2=#4,
+ \v!big=>#2=#5,
+ \v!none=>#2=\zeropoint,
+ -\v!small=>#2=-#3,
+ -\v!medium=>#2=-#4,
+ -\v!big=>#2=-#5,
+ \s!unknown=>#2=#1]}
+
+\def\assignalfadimension#1#2#3#4#5%
+ {\processaction
+ [#1]
+ [ \v!small=>\edef#2{#3},
+ \v!medium=>\edef#2{#4},
+ \v!big=>\edef#2{#5},
+ \v!none=>\edef#2{0},
+ \s!unknown=>\edef#2{#1}]}
+
+%D De onderstaande implementatie is veel sneller, maar
+%D tegelijkertijd ook veel lelijker. Omdat we deze macro
+%D relatief weinig aanroepen laten we deze optimalisatie maar
+%D achterwege. Bovendien kunnen oplossingen als deze de
+%D hash||table aardig uitputten (\type {\doifdefined}).
+%D
+%D \starttyping
+%D \edef\@@dimension{@@dim}
+%D \edef\@@negdimension{\@@dimension-}
+%D
+%D \def\assigndimension#1#2#3#4#5%
+%D {\setvalue{\@@dimension \v!small }{#3}%
+%D \setvalue{\@@dimension \v!medium}{#4}%
+%D \setvalue{\@@dimension \v!big }{#5}%
+%D \setvalue{\@@dimension \v!none }{\!!zeropoint}%
+%D \setvalue{\@@negdimension\v!small }{-#3}%
+%D \setvalue{\@@negdimension\v!medium}{-#4}%
+%D \setvalue{\@@negdimension\v!big }{-#5}%
+%D \setvalue{\@@negdimension\v!none }{\!!zeropoint}%
+%D \doifdefinedelse{\@@dimension#1}
+%D {#2=\getvalue{\@@dimension#1}}
+%D {#2=#1}}
+%D \stoptyping
+%D
+%D Let's give this a try:
+
+\let\nopv!none \v!none
+\let\posv!big \v!big
+\let\posv!middle \v!medium
+\let\posv!small \v!small
+\edef\negv!big {-\v!big}
+\edef\negv!middle{-\v!medium}
+\edef\negv!small {-\v!small}
+
+\def\assigndimension#1#2#3#4#5%
+ {\edef\!!stringa{#1}%
+ #2=\ifx\!!stringa\nopv!none \zeropoint\else
+ \ifx\!!stringa\posv!big #5\else
+ \ifx\!!stringa\posv!middle #4\else
+ \ifx\!!stringa\posv!small #3\else
+ \ifx\!!stringa\negv!big -#5\else
+ \ifx\!!stringa\negv!middle-#4\else
+ \ifx\!!stringa\negv!small -#3\else
+ #1\fi\fi\fi\fi\fi\fi\fi}
+
+\def\assignalfadimension#1#2#3#4#5%
+ {\edef\!!stringa{#1}%
+ \edef#2{\ifx\!!stringa\posv!big #5\else
+ \ifx\!!stringa\posv!middle#4\else
+ \ifx\!!stringa\posv!small #3\else
+ \ifx\!!stringa\nopv!none 0\else
+ #1\fi\fi\fi\fi}}
+
+%D \macros
+%D {assignvalue}
+%D
+%D Een variant hierop is het commando:
+%D
+%D \starttyping
+%D \assignvalue
+%D {<waarde>|klein|middel|groot}
+%D {\macro}
+%D {waarde klein }
+%D {waarde middel}
+%D {waarde groot}
+%D \stoptyping
+%D
+%D Hierbij krijgt \type{\macro} een waarde afhankelijk van
+%D het meegegeven trefwoord:
+%D
+%D \startnarrower
+%D \startlines
+%D \type{klein }\qquad waarde klein
+%D \type{middel}\qquad waarde middel
+%D \type{groot }\qquad waarde groot
+%D \type{waarde}\qquad waarde
+%D \stoplines
+%D \stopnarrower
+%D
+%D Hier doet \type{geen} dus niet mee.
+
+\def\assignvalue#1#2#3#4#5%
+ {\processaction
+ [#1]
+ [ \v!small=>\edef#2{#3},
+ \v!medium=>\edef#2{#4},
+ \v!big=>\edef#2{#5},
+ \s!unknown=>\edef#2{#1}]}
+
+%D Or faster:
+
+\def\assignvalue#1#2#3#4#5%
+ {\edef\!!stringa{#1}%
+ \edef#2{\ifx\!!stringa\posv!big #5\else
+ \ifx\!!stringa\posv!middle#4\else
+ \ifx\!!stringa\posv!small #3\else
+ #1\fi\fi\fi}}
+
+%D \macros
+%D {assignwidth}
+%D
+%D Een breedte van een opgegeven tekst kan worden berekend en
+%D toegekend aan een \DIMENSION\ met:
+%D
+%D \starttyping
+%D \assignwidth
+%D {\dimension}
+%D {<waarde>|passend|ruim}
+%D {tekst}
+%D \stoptyping
+%D
+%D Dit commando sluit, evenals de bovenstaande
+%D \type{\assign}||commando's, aan op de wijze waarop
+%D in de andere \CONTEXT||modules toekenningen
+%D plaatsvinden. Bij \type{ruim} wordt de gemeten breedte
+%D met 1~em vermeerderd.
+
+\def\assignwidth#1#2#3#4%
+ {\doifelsenothing{#2}
+ {\setbox0\hbox{#3}%
+ #1\wd0}
+ {\doifinsetelse{#2}{\v!fit,\v!broad}
+ {\setbox0=\hbox{#3}%
+ #1\wd0
+ \doif{#2}\v!broad{\advance#1 #4}}%
+ {#1=#2}}}%
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-grd.tex b/Master/texmf-dist/tex/context/base/core-grd.tex
new file mode 100644
index 00000000000..ec196af1e04
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-grd.tex
@@ -0,0 +1,1078 @@
+%D \module
+%D [ file=core-grd,
+%D version=1998.03.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Grid Snapping (Experimental),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Grid Snapping}
+
+\unprotect
+
+%D Moved from supp-box:
+
+%D \macros
+%D {startbaselinecorrection,baselinecorrection,
+%D showbaselinecorrection,offbaselinecorrection}
+%D
+%D Spacing around ruled boxes can get pretty messed up. The
+%D next macro tries as good as possible to fix this.
+%D
+%D \startbuffer[1]
+%D \startbaselinecorrection
+%D \ruledhbox{Rule Brittanica}
+%D \stopbaselinecorrection
+%D \stopbuffer
+%D
+%D \typebuffer[1]
+%D
+%D The macros put some white space around the box:
+%D
+%D \getbuffer[1]
+%D
+%D A simple alternative is \type {\baselinecorrection}, which
+%D only looks at the previous line.
+%D
+%D \startbuffer[2]
+%D \baselinecorrection
+%D \ruledhbox{Rule Brittanica}
+%D \baselinecorrection
+%D \stopbuffer
+%D
+%D \typebuffer[2]
+%D
+%D This time the last preceding line gets a correction,%
+%D dependant on the depth.
+%D
+%D \getbuffer[2]
+%D
+%D One can make the correction visible by saying \type
+%D {\showbaselinecorrection}. Part of the correction is
+%D calculated from the dimensions of a~(. One can disble the
+%D correction by calling \type {\offbaselinecorrection}.
+%D
+%D When visualize the first example looks like:
+%D
+%D {\showbaselinecorrection\getbuffer[1]}
+%D
+%D and the second one comes out as:
+%D
+%D {\showbaselinecorrection\getbuffer[2]}
+
+% \definecolor[GridLineColor][red]
+% \definecolor[GridTextColor][blue]
+
+\definepalet
+ [grid]
+ [ one=red,
+ two=green,
+ three=blue,
+ four=gray]
+
+\def\setbaselinecorrections
+ {\setbox0\hbox{\setstrut\strut}%
+ \setbox2\hbox{(}%
+ \dimen0\ht0\advance\dimen0 -\ht2
+ \ifdim\dimen0<\zeropoint\dimen0\zeropoint\fi
+ \dimen2\dp0\advance\dimen2 -\dp2
+ \ifdim\dimen2<\zeropoint\dimen2\zeropoint\fi
+ \edef\thetopbaselinecorrection {\the\dimen0}\dimen0-\dimen0
+ \edef\thebotbaselinecorrection {\the\dimen2}\dimen2-\dimen2
+ \edef\thenegtopbaselinecorrection{\the\dimen0}%
+ \edef\thenegbotbaselinecorrection{\the\dimen2}}
+
+\def\dotopbaselinecorrection {\kern\thetopbaselinecorrection}
+\def\dobotbaselinecorrection {\kern\thebotbaselinecorrection}
+\def\donegtopbaselinecorrection{\kern\thenegtopbaselinecorrection}
+\def\donegbotbaselinecorrection{\kern\thenegbotbaselinecorrection}
+
+\def\showbaselinecorrection
+ {\def\dobaselinecorrection % visualization is not watertight!
+ {\bgroup
+\ifdim\prevdepth>\zeropoint\kern-\prevdepth\fi
+ \setbox0\null
+ \wd0\hsize
+ \dp0\strutdp
+ \nointerlineskip
+ \ruledvbox{\box0}%
+ \egroup
+ \prevdepth\strutdp}%
+ \def\dotopbaselinecorrection
+ {\hrule\!!height\thetopbaselinecorrection}%
+ \def\dobotbaselinecorrection
+ {\hrule\!!height\thebotbaselinecorrection}}
+
+\def\dobaselinecorrection
+ {\ifdim\prevdepth>\zeropoint\kern-\prevdepth\fi
+ \kern\strutdp
+ \prevdepth\strutdp}
+
+% \def\baselinecorrection
+% {\endgraf
+% \ifvmode
+% \ifdim\prevdepth<\maxdimen
+% \ifdim\prevdepth<\zeropoint \else
+% \ifdim\prevdepth<\strutdp
+% \dobaselinecorrection
+% \fi
+% \fi
+% \fi
+% \fi}
+
+\def\baselinecorrection
+ {\endgraf
+ \ifvmode
+ \ifdim\prevdepth<\maxdimen
+ \ifdim\prevdepth<\zeropoint \else
+ \ifdim\prevdepth<\strutdepth \relax
+ \pushlastnode
+ \dobaselinecorrection
+ \poplastnode
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\pagebaselinecorrection
+ {\ifdim\pagegoal<\maxdimen
+ \ifdim\pagetotal>\lineheight % or \topskip
+ \scratchdimen\pagetotal
+ \advance\scratchdimen\lineheight
+ \ifdim\scratchdimen<\pagegoal
+ \baselinecorrection
+ \fi
+ \fi
+ \fi}
+
+% Beware, keep this one as it is, see for instance module
+% m-steps.tex, where we apply a \localhsize to the \vbox, in
+% order to follow narrower and side floats !
+
+\def\startbaselinecorrection
+ {\baselinecorrection
+ \ifvmode
+ \bgroup
+ \setbox\scratchbox\vbox\bgroup
+ \ignorespaces
+ \let\stopbaselinecorrection\dostopbaselinecorrection
+ \else
+ \let\stopbaselinecorrection\relax
+ \fi}
+
+%D We do a bit more checking than needed. The pageborder check
+%D is not needed, but I want to look the visualization as good
+%D as possible too.
+
+\def\dostopbaselinecorrection % I have to check columns yet.
+ {\endgraf
+ \egroup
+ \topbaselinecorrection
+ \box\scratchbox
+ \botbaselinecorrection
+ \egroup}
+
+\let\stopbaselinecorrection=\relax
+
+\def\offbaselinecorrection % Can be used inside correction.
+ {\def\startbaselinecorrection{\bgroup\let\stopbaselinecorrection\egroup}}
+
+%D \macros
+%D {topbaselinecorrection,botbaselinecorrection}
+%D
+%D The actual top and bottom corrections are implemented as:
+
+% \def\topbaselinecorrection
+% {\ifvmode
+% \bgroup
+% \setbaselinecorrections
+% \ifdim\pagegoal<\maxdimen
+% \ifdim\pagetotal<\pagegoal
+% \dimen2=\ht\scratchbox
+% \advance\dimen2 \dp\scratchbox
+% \advance\dimen2 \parskip
+% \advance\dimen2 \thetopbaselinecorrection
+% \advance\dimen2 \thebotbaselinecorrection
+% \dimen0=\pagetotal
+% \advance\dimen0 \dimen2
+% % \ifdim\dimen0<\pagegoal % does more harm than good
+% \witruimte
+% \nointerlineskip
+% \dotopbaselinecorrection
+% % \else
+% % \ifinsidecolumns
+% % % \vskip\dimen2 % this could definitely
+% % % \penalty\outputpenalty % be improved
+% % \else
+% % % %
+% % % \vfill\eject % pretty old and wrong
+% % %
+% % % \nobreak % needed for headings
+% % % \vskip\parskip % but often splits
+% % % \vskip\dimen2 % normal paragraphs
+% % % \penalty\outputpenalty % and therefore
+% % % \vskip-\dimen2 % obsolete
+% % %
+% % % do nothing, sub optimal spacing after headings
+% % % still to be sorted out; use manuals as test case
+% % \fi
+% % \fi
+% \else % probably a preceding
+% \witruimte % one-liner
+% \nointerlineskip
+% \dotopbaselinecorrection
+% \fi
+% \fi
+% \egroup
+% \fi}
+
+\def\topbaselinecorrection
+ {\ifvmode \ifdim\pagegoal<\maxdimen
+ \bgroup
+ \setbaselinecorrections
+ \whitespace
+ \nointerlineskip
+ \dotopbaselinecorrection
+ \egroup
+ \fi \fi}
+
+\def\botbaselinecorrection
+ {\ifvmode
+ \bgroup
+ \setbaselinecorrections
+ \dobotbaselinecorrection
+ \allowbreak % new, otherwise problems when many in a row
+ \prevdepth\strutdp
+ \egroup
+ \fi}
+
+%D Still very experimental and therefore undocumented.
+
+\newif\ifgridsnapping % UNDER DEVELOPMENT, USE WITH CARE
+\newif\ifforcepresnap \forcepresnaptrue % false in mixed single/double
+\newif\ifstrutsnapping \strutsnappingtrue % sometimes handy to be false
+
+\def\positiveextrasnap {\gdef\extrasnapsign{+}}
+\def\negativeextrasnap {\gdef\extrasnapsign{-}}
+
+\def\extrasnapreset {\global\chardef\@@extrasnap0
+ \positiveextrasnap}
+\def\extrasnapbefore {\global\chardef\@@extrasnap1 }
+\def\extrasnaparound {\global\chardef\@@extrasnap2 }
+\def\extrasnapafter {\global\chardef\@@extrasnap3 }
+
+\def\enablepresnapcorrection {\global\chardef\@@presnap\zerocount}
+\def\disablepresnapcorrection {\global\chardef\@@presnap\plusone}
+
+\extrasnapreset \enablepresnapcorrection
+
+\newif\iftracegridsnapping
+\newif\ifshowgridboxes
+\newif\ifshowfuzzyskips
+
+\let\showgridboxes\showgridboxestrue
+
+\def\showgridsnapping
+ {\tracegridsnappingtrue
+ \showgridboxestrue}
+
+\chardef\@@alignsnap =0
+\chardef\@@alignsnapbox =0
+\chardef\@@alignsnapmethod=0
+
+\let\presnapskip \!!zeropoint \def\presnap {-}
+\let\postsnapskip\!!zeropoint \let\postsnap\presnap
+
+\def\tracedsnapping
+ {\iftracegridsnapping
+ \llap
+ {\startlayoutcomponent{gridsnaps}{grid snaps}%
+ \infofont
+ \doglobal\increment\currentsnap
+ \color[grid:three]{\vl\presnapskip
+ \vl\presnap
+ \vl\postsnap
+ \ifcase\@@alignsnapbox\relax
+ \vl\ifcase\@@extrasnap
+ 00\or
+ \extrasnapsign0\or
+ \extrasnapsign\extrasnapsign\or
+ 0\extrasnapsign\fi
+ \fi
+ \vl\currentsnap\vl}%
+ \stoplayoutcomponent}%
+ \fi}
+
+\def\snaptogrid% [#1]#2 -> #2 == \hbox|\vbox
+ {\dosingleempty\dosnaptogrid}
+
+% \def\dosnaptogrid[#1]%
+% {\ifgridsnapping
+% \iffirstargument\doifsomething{#1}{\verplaatsopgrid[#1]}\fi
+% \expandafter\dodosnaptogrid
+% \fi}
+
+% \def\dosnaptogrid[#1]%
+% {\resetlastlinewidth % maybe in more places, otherwise spacing gets messed up
+% \ifgridsnapping
+% \iffirstargument\doifsomething{#1}{\moveongrid[#1]}\fi
+% \expandafter\dodosnaptogrid
+% \fi}
+
+\def\dosnaptogrid[#1]%
+ {\resetlastlinewidth % maybe in more places, otherwise spacing gets messed up
+ \doifinsetelse\v!force{#1}%
+ {\moveongrid[#1]%
+ \dodosnaptogrid}
+ {\ifgridsnapping
+ \doifsomething{#1}{\moveongrid[#1]}%
+ \expandafter\dodosnaptogrid
+ \fi}}
+
+% \def\forcedpresnapcorrection % test this on 'details'
+% {\ifforcepresnap
+% \ifvmode \else \par \fi % new
+% % we don't want top of page space when 'top' option
+% %\verticalstrut\nobreak\vskip-\struttotal
+% %\verticalstrut\vskip-\struttotal
+% % nobreak really needed
+% \allowbreak\verticalstrut\nobreak\vskip-\struttotal
+% %\ifdim\pagetotal>\topskip \else
+% % eigenlijk signal
+% %\writestatus{grid}{removing dummy at top of page}%
+% %\bgroup
+% %\output{\setbox\scratchbox\box255}%
+% %\penalty\outputpenalty
+% %\egroup
+% %\fi
+% \fi}
+
+\def\forcedpresnapcorrection % test this on 'details'
+ {\ifforcepresnap
+ \ifvmode \else \par \fi % new
+ % we don't want top of page space when 'top' option
+ %\verticalstrut\nobreak\vskip-\struttotal
+ %\verticalstrut\vskip-\struttotal
+ % nobreak really needed
+ \dosomebreak\allowbreak\verticalstrut\nobreak\vskip-\struttotal % new: \dosomebreak
+ %\ifdim\pagetotal>\topskip \else
+ % eigenlijk signal
+ %\writestatus{grid}{removing dummy at top of page}%
+ %\bgroup
+ %\output{\setbox\scratchbox\box255}%
+ %\penalty\outputpenalty
+ %\egroup
+ %\fi
+ \fi}
+
+\def\setgridtracebox#1[#2]% % maybe reverse the order
+ {\setbox\nextbox#1%
+ {\hbox
+ {\hbox to \zeropoint
+ {\startlayoutcomponent{gridsnaps}{grid snaps}%
+ \color[grid:#2]{\ruledhbox{\fakebox\nextbox}}%
+ \stoplayoutcomponent
+ \hss}%
+ \flushnextbox}}}
+
+\newif\ifboxedsnapping \boxedsnappingtrue
+
+\chardef\depthsnapmethod \plusone % downward compatible, minus one line
+\chardef\heightsnapmethod\plusone % downward compatible, minus one line
+
+\def\dodosnaptogrid
+ {\dowithnextbox
+ {\bgroup
+ \ifcase\@@alignsnapmethod \or
+ % we're dealing with text with a possible big depth/height
+ \chardef\depthsnapmethod \plustwo
+ \chardef\heightsnapmethod\plustwo
+ \fi
+ \ifdim\nextboxht<\textheight % handle special case (like page fig)
+ \ifcase\@@alignsnapbox\relax
+ \ifcase\@@alignsnap\else % 1=top 2=high 3=middle 4=low
+ \ifshowgridboxes
+ \setgridtracebox\hbox[two]%
+ \fi
+ %\getnoflines{\nextboxht}%
+ \getnoflines\nextboxht
+ \setbox\nextbox\vbox to \noflines\lineheight
+ {\ifnum\@@alignsnap=1 \kern\lineheight\kern-\topskip\fi
+ \ifnum\@@alignsnap>2 \vfill\fi
+ \flushnextbox
+ \ifnum\@@alignsnap<4 \vfill\fi}%
+ \fi
+ \ifshowgridboxes
+ \setgridtracebox\hbox[three]%
+ \fi
+ \forgetall
+ \par
+ \ifvbox\nextbox
+ \setbox\nextbox\hbox{\flushnextbox}% don't ask
+ \fi
+ \scratchskip\lastskip
+ \edef\presnapskip{\the\lastskip}%
+ % mixing single/double columns sometimes goes wrong,
+ % check 'som' document
+ \ifinsidecolumns
+ \forcepresnaptrue
+ \fi
+ \forcedpresnapcorrection
+ \ifdim\nextboxht>\strutht
+ \scratchdimen\nextboxht
+ \ifcase\@@presnap\relax
+ \ifdim\scratchskip>\zeropoint\relax
+ \scratchcounter\scratchskip
+ \advance\scratchcounter -\openlineheight
+ \ifnum\scratchcounter<0
+ \scratchcounter-\scratchcounter
+ \fi
+ \ifnum\scratchcounter<10 % \lastkip is about \openlineheight
+ \advance\scratchdimen -\openstrutdepth
+ \edef\presnapskip{*\presnapskip}%
+ \else\ifdim\scratchskip>\openlineheight
+ %<\openlineheight \else
+ \advance\scratchdimen -\openstrutdepth
+ \edef\presnapskip{*\presnapskip}%
+ \fi\fi
+ \fi
+ \fi
+ % \getnoflines\scratchdimen % maybe raw ?
+ % \advance\noflines -1
+ \ifcase\heightsnapmethod
+ % raw
+ \or
+ \advance\scratchdimen-\lineheight % tight (default)
+ \or
+ \advance\scratchdimen-\strutheight % fit (text)
+ \or
+ \advance\scratchdimen-\strutheight % tolerant
+ \advance\scratchdimen-\roundingeps
+ \fi
+ \getnoflines\scratchdimen
+ \ifnum\noflines>0
+ \scratchdimen\noflines\lineheight
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \ifnum\@@extrasnap=1 \advance\scratchdimen \extrasnapsign \lineheight \fi
+ \ifnum\@@extrasnap=2 \advance\scratchdimen \extrasnapsign.5\lineheight \fi
+ \edef\presnap{\the\scratchdimen}%
+ \ifstrutsnapping
+ \ifboxedsnapping
+ \getrawnoflines\scratchdimen
+ \advance\scratchdimen-\noflines\lineheight
+ \vskip\scratchdimen % disappears at top of page
+ \dorecurse\noflines{\verticalstrut\nobreak}%
+ \else \ifdim\scratchdimen=\zeropoint
+ % nothing to skip
+ \else % disappears at top of page
+ \vskip\scratchdimen
+ \fi \fi
+ \fi
+ \ifdim\nextboxdp>\strutdp
+ % \getnoflines\nextboxdp
+ % \advance\noflines \minusone
+ \scratchdimen\nextboxdp\relax
+ \ifcase\depthsnapmethod
+ % raw
+ \or
+ \advance\scratchdimen-\lineheight % tight (default)
+ \or
+ \advance\scratchdimen-\strutdepth % fit (text)
+ \or
+ \advance\scratchdimen-\strutdepth % tolerant
+ \advance\scratchdimen-\roundingeps
+ \fi
+ \getnoflines\scratchdimen
+ \ifnum\noflines>0
+ \scratchdimen\noflines\lineheight
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \ifnum\@@extrasnap=2 \advance\scratchdimen \extrasnapsign.5\lineheight \fi
+ \ifnum\@@extrasnap=3 \advance\scratchdimen \extrasnapsign \lineheight \fi
+ \edef\postsnap{\the\scratchdimen}%
+ \ifstrutsnapping
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \else
+ \scratchdimen\presnap
+ \advance\scratchdimen \strutht
+ \nextboxht\scratchdimen
+ \scratchdimen\postsnap
+ \advance\scratchdimen \strutdp
+ \nextboxdp\scratchdimen
+ \fi
+ \hbox{\tracedsnapping\flushnextbox}%
+ \ifstrutsnapping
+ \ifdim\scratchdimen=\zeropoint\else\vskip\scratchdimen\fi
+ \fi
+ \else
+ \scratchdimen\nextboxht\relax
+ \ifcase\@@alignsnapbox
+ % can't happen here
+ \or
+ \getrawnoflines\scratchdimen
+ \else
+ \getnoflines \scratchdimen
+ \fi
+ \scratchdimen\noflines\lineheight\relax
+ \advance\scratchdimen-\strutdepth
+ % spoils the whole game (fit/broad/line)
+ % \ifnum\pagetotal>\zeropoint \else % disable this as option
+ % \advance\scratchdimen-\strutheight
+ % \advance\scratchdimen+\topskip
+ % \fi
+ \dimen0=\scratchdimen
+ \dimen2=\strutdepth
+ \ifshowgridboxes
+ \setgridtracebox\hbox[two]%
+ \fi
+ \nextboxdp\strutdp
+ \dimen4=\nextboxht
+ \dimen6=\nextboxdp
+ \iftracegridsnapping
+ \setbox\scratchbox\hbox
+ {\scratchdimen\@@alignsnapamount\relax
+ \ifdim\scratchdimen<\zeropoint
+ \tracedgridamount\zeropoint{-\scratchdimen}%
+ \else
+ \tracedgridamount\scratchdimen\zeropoint
+ \fi}%
+ \smashbox\scratchbox
+ \setbox\nextbox\hbox{\box\scratchbox\flushnextbox}%
+ \fi
+ \setbox\nextbox\hbox
+ {\scratchdimen\@@alignsnapamount\relax
+ \ifcase\@@alignsnapdepth\or
+ % don't change this ever !
+ \ifdim\dimen0<\lineheight
+ % otherwise it is ok, but ending up inside
+ % the next paragraph is seldom what we want,
+ % so we move one line up
+ \advance\scratchdimen-\lineheight
+ \advance\scratchdimen\strutheight
+ \else
+ % otherwise we can move down to the
+ % baseline
+ \advance\scratchdimen\dimen6 % == \strutdepth
+ \fi
+ \fi
+ \lower\scratchdimen\flushnextbox}%
+ \nextboxht\dimen4
+ \nextboxdp\dimen6
+ \ifnum\@@alignsnap<4 % 4 = regel
+ \setbox\nextbox\vbox to \scratchdimen
+ {\forgetall
+ \ifnum\@@alignsnap>2 \vfill\fi % 3 4
+ \flushnextbox
+ \nointerlineskip % \offinterlineskip
+ \ifnum\@@alignsnap<4 \vfill\fi % 2 3
+ \kern\zeropoint}%
+ \fi
+ \ifshowgridboxes
+ \setgridtracebox\vbox[three]%
+ \fi
+ \scratchdimen\@@alignsnapamount
+ \edef\presnapskip{\the\scratchdimen}%
+ \ifnum\@@alignsnap>2 \def\presnap {+}\fi
+ \ifnum\@@alignsnap<4 \def\postsnap{+}\fi
+ \setbox\nextbox\hbox{\tracedsnapping\flushnextbox}%
+ \par
+ \nextboxht\dimen0
+ \nextboxdp\dimen2
+ \forcedpresnapcorrection
+ \nointerlineskip
+ \flushnextbox
+ \fi
+ \else
+ \setbox\nextbox\vbox to \textheight
+ {\ifdim\nextboxdp=\zeropoint
+ \hbox{\lower\strutdepth\flushnextbox}
+ \else % this branch is yet untested
+ \vss
+ \hbox{\lower\nextboxdp\flushnextbox}
+ \vskip-\strutdepth
+ \fi}%
+ \nextboxdp\strutdepth
+ \flushnextbox
+ \fi
+ \extrasnapreset
+ \enablepresnapcorrection
+ \global\chardef\@@alignsnap\zerocount
+ \global\chardef\@@alignsnapbox\zerocount
+ \egroup}}
+
+\def\tracedgridamount#1#2%
+ {\startlayoutcomponent{gridsnaps}{grid snaps}%
+ \color[grid:four]{\vrule\!!width\nextboxwd\!!height#1\!!depth#2}%
+ \stoplayoutcomponent}
+
+\def\snaptomathgrid % probably not working ok, also kind of obsolete
+ {\ifgridsnapping
+ \dowithnextbox
+ {\blank[\v!line]\snaptogrid\vbox{\flushnextbox}\blank[\v!line]}
+ \vbox\bgroup
+ \let\setdisplayskips\relax
+ \abovedisplayskip\zeropoint
+ \abovedisplayshortskip\zeropoint
+ \belowdisplayskip\zeropoint
+ \belowdisplayshortskip\zeropoint
+ \@EA\let\@EA\next
+ \fi}
+
+\def\topsnaptogrid
+ {\ifgridsnapping
+ \dowithnextbox
+ {\scratchdimen\nextboxht
+ \advance\scratchdimen -\strutht
+ \advance\scratchdimen \topskip
+ \nextboxht\scratchdimen
+ \nextboxdp\zeropoint
+ \flushnextbox
+ \kern\lineheight
+ \kern-\topskip
+ \nointerlineskip}
+ \hbox
+ \fi}
+
+% \def\centertogrid % meant for special situations
+% {\ifgridsnapping
+% \dowithnextboxcontent
+% {\ignorespaces}
+% {\bgroup
+% \par
+% \scratchdimen\nextboxht
+% \advance\scratchdimen \nextboxdp
+% \getnoflines\scratchdimen
+% \setbox\nextbox\vbox to \noflines\lineheight
+% {\forgetall
+% \vskip\zeropoint \!!plus \nextboxht
+% \copy\nextbox
+% \kern.5\strutdp % VOORLOPIGE WAARDE
+% \vskip\zeropoint \!!plus \nextboxdp}%
+% \noindent\snaptogrid\vbox{\flushnextbox}%
+% \egroup}
+% \vbox % was \hbox
+% \fi}
+
+% The next implementation is sub-optimal
+%
+% \def\centertogrid % usage: see ie pascal / stepcharts
+% {\snaptogrid[\v!midden,.5\strutdp]\vbox}
+
+\def\centertogrid % meant for special situations
+ {\ifgridsnapping
+ \dowithnextboxcontent
+ {\ignorespaces}
+ {\bgroup
+ \par
+ \scratchdimen\nextboxht
+ \advance\scratchdimen \nextboxdp
+ \getnoflines\scratchdimen
+ \setbox\nextbox\vbox to \noflines\lineheight
+ {\forgetall
+ \vss
+ \topbaselinecorrection
+ \copy\nextbox
+ \botbaselinecorrection
+ \vss}%
+ \setbox\nextbox\hbox{\lower\strutdp\flushnextbox}%
+ \noindent\snaptogrid\vbox{\flushnextbox}%
+ \egroup}
+ \vbox % was \hbox
+ \fi}
+
+% testbed for \centertogrid
+%
+% \strut Bruggetje
+% \startlinecorrection
+% \startcombination
+% {\framed{test}} {} {\framed{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection
+% \startcombination[2*2]
+% {\framed{test}} {} {\framed{test}} {}
+% {\framed{test}} {} {\framed{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection[blank]
+% \startcombination
+% {\framed{test}} {} {\framed{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection[blank]
+% \startcombination[2*2]
+% {\framed{test}} {} {\framed{test}} {}
+% {\framed{test}} {} {\framed{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection
+% \startcombination
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection
+% \startcombination[2*2]
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection[blank]
+% \startcombination
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% \stopcombination
+% \stoplinecorrection
+% \strut Bruggetje
+% \startlinecorrection[blank]
+% \startcombination[2*2]
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% {\framed[lines=1]{test}} {} {\framed[lines=1]{test}} {}
+% \stopcombination
+% \stoplinecorrection
+
+\ifx\startbaselinecorrection\undefined \wait \fi % change order
+
+\let\normalstartbaselinecorrection=\startbaselinecorrection
+
+\def\startbaselinecorrection
+ {\ifgridsnapping
+ \centertogrid\bgroup
+ \let\stopbaselinecorrection\egroup
+ \else
+ \normalstartbaselinecorrection
+ \fi}
+
+\chardef\gridboxlinenomode\plusone
+
+\def\setgridbox#1#2#3%
+ {\setbox#1\ruledvbox to #3 % given size
+ {\forgetall
+ \resetteststrut
+ \offinterlineskip
+ \hsize#2%
+ \baselinerulefalse
+ \ruledvbox % calculated size
+ {\getrawnoflines{#3}% \getnoflines{#3}%
+ \vskip\topskip
+ \vskip-\strutht
+ \scratchdimen#2\advance\scratchdimen \lineheight
+ \dorecurse\noflines
+ {\strut
+ \hskip-.5\lineheight
+ \ifcase\gridboxlinenomode\or
+ \rlap
+ {\hskip.2\bodyfontsize\hskip\scratchdimen
+ \infofont\hbox to 1em{\hss\recurselevel}}%
+ \or
+ \llap
+ {\infofont\hbox to 1em{\hss\recurselevel}%
+ \hskip.2\bodyfontsize}%
+ \fi
+ \vrule
+ \!!height .5\testrulewidth
+ \!!depth .5\testrulewidth
+ \!!width \scratchdimen
+ \par}}
+ \vfill}}
+
+%D Some intervention macros:
+
+\def\gridwarning#1{\message{[beware of #1 extra snap]}}
+
+\global\let\@@alignsnapamount\!!zeropoint
+\global\chardef\@@alignsnapdepth0
+
+\def\@@unknowngriddisplacement
+ {\global\chardef\@@alignsnapbox\plusthree
+ \global\let\@@alignsnapamount\commalistelement}
+
+\def\domoveongrid[#1]%
+ {\ifgridsnapping\doifsomething{#1}{\dodomoveongrid[#1]}\fi}
+
+\def\dodomoveongrid[#1]% some day : speed up
+ {\global\chardef\@@alignsnap\zerocount
+ \global\chardef\@@alignsnapbox\zerocount
+ \global\chardef\@@alignsnapdepth\zerocount
+ \global\chardef\@@alignsnapmethod\zerocount
+ \global\let\@@alignsnapamount\!!zeropoint
+ \donefalse
+ \expanded{\processallactionsinset[#1]}
+ [\v!standard=>,
+ \v!normal=>, % to be sure
+ \v!yes=>, % to be sure
+ \v!top=>\gridwarning+\positiveextrasnap\extrasnapbefore,
+ \v!bottom=>\gridwarning+\positiveextrasnap\extrasnapafter,
+ \v!both=>\positiveextrasnap\extrasnaparound,
+ -\v!top=>\gridwarning-\negativeextrasnap\extrasnapbefore,
+ -\v!bottom=>\gridwarning-\negativeextrasnap\extrasnapafter,
+ -\v!both=>\negativeextrasnap\extrasnaparound,
+ \v!text=>\global\chardef\@@alignsnapmethod\plusone, % accurate calculations
+ \v!page=>\global\chardef\@@alignsnap\plusone, % topskip
+ \v!high=>\global\chardef\@@alignsnap\plustwo,
+ \v!middle=>\global\chardef\@@alignsnap\plusthree,
+ \v!low=>\global\chardef\@@alignsnap\plusfour,
+ \v!fit=>\global\chardef\@@alignsnapbox\plusone, % new
+ \v!broad=>\global\chardef\@@alignsnapbox\plustwo, % new
+ \v!depth=>\global\chardef\@@alignsnapdepth\plusone, % new
+ \v!line=>\global\chardef\@@alignsnapbox\plusthree
+% \global\chardef\@@alignsnapdepth\plusone
+ \global\chardef\@@alignsnap\plusfour,
+ \v!reset=>\positiveextrasnap\extrasnapreset,
+ \v!none=>\global\chardef\@@alignsnap\zerocount
+ \global\chardef\@@alignsnapbox\zerocount,
+ \v!force=>, % turns on grid snapping even when not on
+ \s!default=>,
+ \s!unknown=>\@@unknowngriddisplacement]}
+
+\def\moveongrid
+ {\dosingleempty\domoveongrid}
+
+\def\doplaceongrid[#1]%
+ {\domoveongrid[#1]\snaptogrid\vbox}
+
+\def\placeongrid
+ {\dosingleempty\doplaceongrid}
+
+%D Snapping is rather robust as long as we use whole lines.
+%D Half lines of white space can however be handled when they
+%D come in pairs. The corrections needed when crossing page
+%D boundaries in the middle of such a pair, are handled by
+%D macros that are (named) sort of fuzzy. This fuzzy mechanism
+%D was written as an extension to the grid typesetting needed
+%D for typesetting (part of) the \MAPS.
+%D
+%D \starttyping
+%D \setuptyping
+%D [before={\blank[halfline]},
+%D after={\blank[halfline]}]
+%D \stoptyping
+
+\newif\iffuzzysnapdone
+\newif\iffuzzysnapping
+\newif\iffuzzysnapped
+
+\chardef\fuzzysnappedleft=0 % ==1 when fuzzybegin still open
+
+\newpersistentmark\fuzzymark % (!)
+\newcount\fuzzymarker
+\newbox\fuzzysnapbox
+\newbox\fuzzysnapsplit
+
+%\def\dosyncfuzzyvskip
+% {\ifvmode\ifdim\lastskip<\lineheight\ifdim\lastskip>\zeropoint
+% \bgroup
+% \endgraf
+% \forgetall
+% \verticalstrut
+% \kern-\struttotal
+% \kern-\lineheight
+% \nobreak
+% \vskip\lineheight
+% \egroup
+% \fi\fi\fi}
+
+%\def\fuzzyvskip#1%
+% {\iffuzzysnapdone
+% \endfuzzysnapping
+% \vskip#1\relax
+% \dosyncfuzzyvskip % NEW
+% \global\fuzzysnapdonefalse
+% \else
+% \vskip#1\relax
+% \beginfuzzysnapping
+% \global\fuzzysnapdonetrue
+% \fi}
+
+\def\dosyncfuzzyvskip
+ {\ifvmode\ifdim\lastskip<\lineheight\ifdim\lastskip>\zeropoint
+ \bgroup % - added 28/2/2003: check this, there was no -
+ \endgraf\forgetall\verticalstrut\nobreak\vskip-\struttotal
+ \egroup
+ \fi\fi\fi}
+
+\def\fuzzyvskip#1%
+ {\iffuzzysnapdone
+ \dosyncfuzzyvskip % NEWER
+ \endfuzzysnapping
+ \vskip#1\relax
+ \global\fuzzysnapdonefalse
+ \else
+ \vskip#1\relax
+ \beginfuzzysnapping
+ \global\fuzzysnapdonetrue
+ \fi}
+
+\def\setfuzzymark#1#2#3% #1/#2 => error recovery
+ {\ifgridsnapping
+ \global\fuzzysnappingtrue
+ \global\advance\fuzzymarker \ifodd\fuzzymarker#1\else#2\fi
+ \nobreak
+ \ifshowfuzzyskips
+ \hbox{\color[grid:three]
+ {\llap{\infofont#3\vl\the\fuzzymarker}\nobreak
+ \vrule\!!width\hsize\!!height.1\lineheight}}
+ \nobreak
+ \fi
+ %[\the\fuzzymarker]
+ %\expandafter\fuzzymark\expandafter{\the\fuzzymarker}%
+ \expandafter\rawsetmark\expandafter\fuzzymark\expandafter{\the\fuzzymarker}%
+ \nobreak
+ \fi}
+
+\def\beginfuzzysnapping{\setfuzzymark21\v!start} % odd
+\def\endfuzzysnapping {\setfuzzymark12\v!stop } % even
+
+\def\removelastfuzzyvskip
+ {\ifgridsnapping
+ \iffuzzysnapping
+ \ifdim\lastskip<\openlineheight
+ \else
+ \removelastskip
+ \fi
+ \else
+ \removelastskip
+ \fi
+ \else
+ \removelastskip
+ \fi}
+
+\def\docheckfuzzysnap#1%
+ {\bgroup
+ \dontcomplain
+ \setbox\fuzzysnapbox\copy#1\relax
+ \setbox\fuzzysnapsplit\vsplit\fuzzysnapbox to 1\lineheight
+ \let\topfuzzymark\empty % indeed here ... no real mark
+ \getsplitmarks\fuzzymark
+% \ifcase0\topfuzzymark
+ \ifcase0\rawgetsplittopmark\fuzzymark
+ \global\chardef\fuzzysnappedleft\zerocount
+ \global\fuzzysnappedfalse
+% \else\ifodd\topfuzzymark
+ \else\ifodd\rawgetsplittopmark\fuzzymark
+ \global\chardef\fuzzysnappedleft\plusone
+ \global\fuzzysnappedtrue
+ \else
+ \global\chardef\fuzzysnappedleft=2
+ \global\fuzzysnappedtrue
+ \fi\fi
+ \iffuzzysnapped \else
+ \doloop
+ {\ifvoid\fuzzysnapbox
+ \exitloop
+ \else
+ \setbox\fuzzysnapsplit=\vsplit\fuzzysnapbox to \lineheight
+ %\let\topfuzzymark=\empty % ... but not here
+ \getsplitmarks\fuzzymark
+% \ifcase0\topfuzzymark
+ \ifcase0\rawgetsplittopmark\fuzzymark
+ % continue
+% \else\ifodd\topfuzzymark
+ \else\ifodd\rawgetsplittopmark\fuzzymark
+ \exitloop
+ \else
+ \global\chardef\fuzzysnappedleft\plusone
+ \global\fuzzysnappedtrue
+ \exitloop
+ \fi\fi
+ \fi}%
+ \fi
+ \egroup}
+
+\def\getfuzzysnapcorrection#1%
+ {\global\let\presnapcorrection \relax
+ \global\let\postsnapcorrection\relax
+ \ifgridsnapping\iffuzzysnapping
+ \docheckfuzzysnap{#1}%
+ \iffuzzysnapped
+ \iftracegridsnapping
+ \gdef\presnapcorrection
+ {\color[grid:four]{\hrule\!!height.5\openlineheight\!!width\hsize}}%
+ \else
+ \gdef\presnapcorrection{\kern.5\openlineheight}%
+ \fi
+ \gdef\postsnapcorrection{\kern-.5\openlineheight}% get the height ok
+ \fi
+ \fi\fi}
+
+\def\fuzzysnappedbox#1#2% \box<n> \unvbox<n>
+ {\getfuzzysnapcorrection{#2}%
+ \presnapcorrection
+ #1#2%
+ \postsnapcorrection}
+
+\def\adaptfuzzypagegoal
+ {\ifgridsnapping\iffuzzysnapping\ifcase\fuzzysnappedleft\or % see dopagecontents
+ \scratchdimen\pagegoal
+ \advance\scratchdimen -.5\openlineheight
+ \global\pagegoal\scratchdimen
+ \global\advance\vsize -.5\openlineheight
+ \global\chardef\fuzzysnappedleft0
+ \fi\fi\fi}
+
+%D New, experimental, used in caption snapping:
+%D
+%D \starttyping
+%D \startcolumnset
+%D
+%D \setupcaption[figure][style=\tfx\setupinterlinespace,inbetween=,grid=top]
+%D
+%D \placefigure [lrtb] {\dorecurse{5}{green gras}}
+%D {\externalfigure[dummy][width=\textwidth,height=3cm,grid=height]}
+%D \placefigure [lrtb] {\dorecurse{15}{green gras}}
+%D {\externalfigure[dummy][width=\textwidth,height=3cm,grid=height]}
+%D
+%D \setupcaption[figure][style=\tfx\setupinterlinespace,inbetween=,grid=bottom]
+%D
+%D \placefigure [rltb] {\dorecurse{5}{green gras}}
+%D {\externalfigure[dummy][width=\textwidth,height=3cm,grid=height]}
+%D \placefigure [rltb] {\dorecurse{15}{green gras}}
+%D {\externalfigure[dummy][width=\textwidth,height=3cm,grid=height]}
+%D
+%D \input thuan
+%D
+%D \stopcolumnset
+%D \stoptyping
+
+\def\moveboxontogrid#1#2#3% box method firstlineht % experimental ! ! !
+ {\doifsomething{#2}
+ {\getnoflines{\ht#1}% no depth taken into account, depth preserved
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen-\strutdp
+ \bgroup
+ \advance\scratchdimen-\onepoint % be a bit tolerant
+ \ifdim\scratchdimen>\ht#1\relax
+ \egroup
+ \doif{#2}\v!top {\setbox#1\vbox to \scratchdimen{\vskip-#3\vskip\strutht\box#1\vfill}}%
+ \doif{#2}\v!bottom{\setbox#1\vbox to \scratchdimen{\vfill\box#1\removedepth}}%
+ \dp#1\strutdp
+ \else
+ \egroup
+ \ht#1\scratchdimen
+ \dp#1\strutdp
+ \fi}}
+
+%D New:
+
+\let\checkgridsnapping\relax
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-hlp.tex b/Master/texmf-dist/tex/context/base/core-hlp.tex
new file mode 100644
index 00000000000..a5653f88f74
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-hlp.tex
@@ -0,0 +1,173 @@
+%D \module
+%D [ file=core-hlp,
+%D version=1998.10.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Help (Experimental),
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% todo : dedicated vide/hide voor helps
+
+%D This is an experimental and private module, so the interface
+%D and functionality can change. Pieces of code will be moved
+%D to other modules. More features are possible but will be
+%D interfaces later. See m-chart for an application as well
+%D as the second tno-tpd manual (graphic in margin, click
+%D on it, pop up big one, use menu with hides, as well as
+%D background, etc. etc.
+
+\unprotect
+
+\defineframedtext
+ [\v!helptext]
+
+\setupframedtexts
+ [\v!helptext]
+ [\c!width=.75\textwidth,
+ \c!align=\v!normal,
+ \c!frame=\v!off,
+ \c!background=\v!screen]
+
+\newcounter \nofhelpdataentries
+\newconditional \somehelpdatadefined
+
+\appendtoks \getpagehelpdata \to \beforeeverypage
+\appendtoks \synchronizepagehelpdata \to \aftereverypage
+
+% will be proper state variable
+
+\let\pagehelpdata\empty
+
+\def\dontresetpagedata
+ {\let\synchronizepagehelpdata\relax}
+
+\def\resetpagehelpdata
+ {\iflocation
+ \let\synchronizepagehelpdata\resetpagehelpdata
+ \global\let\pagehelpdata\empty
+ \resetreference[HideHelp]%
+ \fi}
+
+\let\synchronizepagehelpdata\resetpagehelpdata
+
+\resetreference[HideHelp]
+
+\def\getpagehelpdata
+ {\iflocation\ifcase\nofhelpdataentries\else
+ \let\pagehelpdata\empty
+ \ifconditional\somehelpdatadefined
+ \definetwopasslist{hlp:\realfolio}%
+ \doloop
+ {\gettwopassdata{hlp:\realfolio}%
+ \iftwopassdatafound
+ \addtocommalist\twopassdata\pagehelpdata
+ \else
+ \exitloop
+ \fi}%
+ \fi
+ \ifx\pagehelpdata\empty \else
+ \useJSscripts[fld]%
+ \definereference[HideHelp][JS(Hide_Fields)]% for the moment
+ \fi
+ \fi\fi}
+
+\def\setpagehelpdata[#1]%
+ {\iflocation\expanded{\dosetpagehelpdata{#1}}\fi}
+
+\def\dosetpagehelpdata#1%
+ {\doglobal\increment\nofhelpdataentries
+ \writeutilitycommand
+ {\twopassentry%
+ {hlp:\realfolio}%
+ {\nofhelpdataentries}%
+ {#1}}}
+
+\setvalue{\e!start\v!helptext}[#1]%
+ {\iflocation
+ \global\settrue\somehelpdatadefined
+ \setvalue{\e!stop\v!helptext}%
+ %{\definesymbol[helpinfo:#1][{\doframedtext[\v!helptext]{\getbuffer[\v!helptext]}}]%
+ % \dopresetfieldsymbol{helpinfo:#1}}%
+ {\definesymbol[\v!helptext:#1][{\doframedtext[\v!helptext]{\getbuffer[\v!helptext]}}]%
+ \dopresetfieldsymbol{\v!helptext:#1}}%
+ \else
+ \letvalue{\e!stop\v!helptext}\relax
+ \fi
+ \dostartbuffer[\v!helptext][\e!start\v!helptext][\e!stop\v!helptext]}
+
+\long\def\helptext[#1]#2%
+ {\iflocation
+ \global\settrue\somehelpdatadefined
+ %\definesymbol[helpinfo:#1][{\doframedtext[\v!helptext]{#2}}]%
+ %\dopresetfieldsymbol{helpinfo:#1}%
+ \definesymbol[\v!helptext:#1][{\doframedtext[\v!helptext]{#2}}]%
+ \dopresetfieldsymbol{\v!helptext:#1}%
+ \fi}
+
+\let\definehelptext\helptext % for backward compabilities sake
+
+\def\dohelpdata#1%
+ {\setbox\scratchbox\hbox
+ {\startoverlay
+ {\box\scratchbox}
+ %{\definemainfield[help:#1][check][helpsetup][helpinfo:#1][helpinfo:#1]%
+ {\definemainfield[help:#1][check][helpsetup][\v!helptext:#1][\v!helptext:#1]%
+ \fitfield[help:#1]}
+ \stopoverlay}}
+
+\def\helpdata
+ {\iflocation
+ \bgroup
+ %\getpagehelpdata
+ \ifx\pagehelpdata\empty \else
+ \setupfields[\v!reset]%
+ \setupfield
+ [helpsetup]
+ [\c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!frame=\v!off,
+ \c!clickin=JS(Hide_Fields),
+ \c!option={\v!readonly,\v!hidden}]%
+ \setbox\scratchbox\emptybox
+ \processcommacommand[\pagehelpdata]\dohelpdata
+ \box\scratchbox
+ \fi
+ \egroup
+ \fi}
+
+\def\helpbutton % also gobble spaces between [][]
+ {\dodoubleempty\dohelpbutton}
+
+\def\dohelpbutton
+ {\ifsecondargument
+ \expandafter\donohelpbutton
+ \else
+ \expandafter\dodohelpbutton
+ \fi}
+
+\def\dodohelpbutton[#1][#2]#3[#4]% #2 is space gobbling dummy
+ {\iflocation
+ \setpagehelpdata[#4]%
+ \useJSscripts[fld]%
+ \button[#1]{#3}[JS(Vide_Hide_Fields{help:#4})]%
+ \fi}
+
+\def\donohelpbutton[#1][#2]%
+ {\dodohelpbutton[#1][]{}[#2]}
+
+\def\doifhelpinfo#1#2%
+ {\iflocation
+ \doifsymboldefinedelse{helpinfo:#1}{#2}\donothing
+ \fi}
+
+\def\doifelsehelpinfo#1#2#3%
+ {\iflocation
+ \doifsymboldefinedelse{helpinfo:#1}{#2}{#3}%
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-ini.tex b/Master/texmf-dist/tex/context/base/core-ini.tex
new file mode 100644
index 00000000000..a63b0c74ee9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ini.tex
@@ -0,0 +1,67 @@
+%D \module
+%D [ file=core-ini,
+%D version=2003.12.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Additional Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Initialization}
+
+%D We will move more code to here, so that we become less dependent of the
+%D orde in which modules are loaded.
+
+\unprotect
+
+\everypar \emptytoks
+\neverypar \emptytoks
+
+\appendtoks \flushnotes \to \everypar
+\appendtoks \synchronizesidefloats \to \everypar
+
+\appendtoks \checkinlinedirection \to \everypar
+
+\appendtoks \checkindentation \to \everypar
+\appendtoks \showparagraphnumber \to \everypar
+\appendtoks \flushmargincontents \to \everypar
+\appendtoks \flushcommentanchors \to \everypar
+\appendtoks \synchronizenotes \to \everypar
+\appendtoks \OTRSETshowstatus \to \everypar
+\appendtoks \flushpostponedbookmark \to \everypar
+\appendtoks \registerparoptions \to \everypar
+\appendtoks \flushsyncpositions \to \everypar
+\appendtoks \flushpostponednodedata \to \everypar
+\appendtoks \dohandlespeech \to \everypar
+\appendtoks \insertparagraphintro \to \everypar
+
+\appendtoks \flushpostponedbookmark \to \neverypar
+\appendtoks \flushpostponedbookmark \to \everylistentry
+
+\appendtoks \flushnotes \to \everydisplay
+\appendtoks \adjustsidefloatdisplaylines \to \everydisplay
+
+\appendtoks \flushsyncpositions \to \everyheadstart
+
+\appendtoks \flushsyncresets \to \everyendoftextbody
+
+\appendtoks \ignorespaces \to \everybeginofpar
+
+\appendtoks \removeunwantedspaces \to \everyendofpar
+%appendtoks \strut \to \everyendofpar % option ?
+\appendtoks \flushsyncresets \to \everyendofpar
+\appendtoks \setlastlinewidth \to \everyendofpar % must happen before endgraf
+\appendtoks \endgraf \to \everyendofpar
+
+% Todo: verbatim, xml, tex, move code to here
+
+\ifx\normalcompound\undefined \let\normalcompound=| \fi
+
+\appendtoks \catcode`|=\@@active \let|\normalcompound \to \everyTEXinputmode
+\appendtoks \catcode`|=\@@letter \to \everyXMLinputmode
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-ins.tex b/Master/texmf-dist/tex/context/base/core-ins.tex
new file mode 100644
index 00000000000..c1185f7de53
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ins.tex
@@ -0,0 +1,103 @@
+%D \module
+%D [ file=core-ins,
+%D version=2002.04.16,
+%D title=\CONTEXT\ Insertion Macros,
+%D subtitle=Insertions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Insertion Macros / General}
+
+%D Insertions are special data collections that are associated
+%D to \TEX's internal page builder. When multiple footnote
+%D classes were introduced, I decided to isolate some of the
+%D functionality in a module.
+
+\unprotect
+
+\newtoks\@@insertionlist
+
+\def\processinsertions{\the\@@insertionlist}
+
+\let\doprocessinsert\gobbleoneargument
+
+%\def\installinsertion#1%
+% {\ifx#1\undefined
+% \newinsert#1%
+% \count#1\plusthousand
+% \skip #1\zeropoint
+% \dimen#1\maxdimen
+% \appendtoks\doprocessinsert#1\to\@@insertionlist
+% \fi}
+
+\def\installinsertion#1%
+ {\ifx#1\undefined
+ \let#1\relax
+ \fi
+ \ifx#1\relax % permits \csname...\endcsname
+ \newinsert#1%
+ \count#1\plusthousand
+ \skip #1\zeropoint
+ \dimen#1\maxdimen
+ \appendtoks\doprocessinsert#1\to\@@insertionlist
+ \fi}
+
+
+\def\synchronizeinsertions
+ {\def\doprocessinsert##1{\ifvoid##1\else\insert##1{\unvbox##1}\fi}%
+ \processinsertions}
+
+%D For instance, when we postpone footnotes, we need to save
+%D some data related to the inserts. The next methods are
+%D far from ideal, but better than nothing. We save and
+%D restore box content and associated data independently.
+%D The box content is only restores when non||void.
+
+\def\backupinsertion#1%
+ {\csname\string#1\endcsname}
+
+\def\installbackupinsertion#1%
+ {\expandafter\newinsert\csname\string#1\endcsname
+ \count\backupinsertion#1\zerocount
+ \skip \backupinsertion#1\zeropoint
+ \dimen\backupinsertion#1\maxdimen}
+
+\def\saveinsertionbox#1%
+ {\ifdim\ht#1>\zeropoint % hm, actually unknown
+ \global\setbox\backupinsertion#1\box#1%
+ \else
+ \global\setbox\backupinsertion#1\box\voidb@x
+ \fi}
+
+\def\restoreinsertionbox#1%
+ {\ifvoid\backupinsertion#1\else % if void, we keep the content
+ \global\setbox#1\box\backupinsertion#1%
+ \fi}
+
+\def\eraseinsertionbackup#1%
+ {\global\setbox\backupinsertion#1\box\voidb@x}
+
+\def\saveinsertiondata#1%
+ {\global\skip \backupinsertion#1\skip #1%
+ \global\count\backupinsertion#1\count#1%
+ \global\dimen\backupinsertion#1\dimen#1}
+
+\def\restoreinsertiondata#1%
+ {\global\skip #1\skip \backupinsertion#1%
+ \global\count#1\count\backupinsertion#1%
+ \global\dimen#1\dimen\backupinsertion#1}
+
+%D Auxiliary macros:
+
+\def\addinsertionheight#1\to#2%
+ {\ifvoid#1\else
+ \advance#2 1\skip#1\relax
+ \advance#2 \ht #1\relax
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-int.tex b/Master/texmf-dist/tex/context/base/core-int.tex
new file mode 100644
index 00000000000..44d4fa7789b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-int.tex
@@ -0,0 +1,2605 @@
+%D \module
+%D [ file=core-int,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Interaction,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% evt interactionbaren runtime laden (scheelt 8K)
+
+%D Still to be done properly.
+
+\writestatus{loading}{Context Core Macros / Interaction}
+
+% interactions 5 and 6 to be translated
+
+\startmessages dutch library: interactions
+ title: interactie
+ 1: aspect ratio -- x -- (b x h)
+ 2: actief
+ 3: niet actief
+ 4: geen paginasynchronisatie (--) in hmode
+ 5: onbekend attachment --
+ 6: attachment file -- bestaat niet
+\stopmessages
+
+\startmessages english library: interactions
+ title: interaction
+ 1: aspect ratio -- x -- (b x h)
+ 2: active
+ 3: inactive
+ 4: no pagesynchronisation (--) in hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages german library: interactions
+ title: Interaktion
+ 1: Aspekt des Verhaeltnis -- x -- (B x H)
+ 2: aktiv
+ 3: inaktiv
+ 4: keine Seitensynchronisation (--) im hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages czech library: interactions
+ title: interakce
+ 1: pomer -- x -- (s x v)
+ 2: aktivni
+ 3: neaktivni
+ 4: zadna strankova synchronizace (--) v hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages italian library: interactions
+ title: interazione
+ 1: rapporto -- x -- (b x a)
+ 2: attiva
+ 3: inattiva
+ 4: sincronizzazione di pagina (--) non disponibile in hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages norwegian library: interactions
+ title: interaksjon
+ 1: forholdstall -- x -- (b x h)
+ 2: aktiv
+ 3: inaktiv
+ 4: ingen sidesynkronisering (--) i hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages romanian library: interactions
+ title: interactiuni
+ 1: aspectul -- x -- (b x h)
+ 2: activ
+ 3: inactiv
+ 4: nu exista sincronizare pt. pagini (--) in hmode
+ 5: unknown attachment --
+ 6: attachment file -- does not exist
+\stopmessages
+
+\startmessages dutch library: versions
+ title: versie
+ 1: er mankeert een @+
+ 2: markeren pagina's
+ 3: geselecteerde pagina's: --
+\stopmessages
+
+\startmessages english library: versions
+ title: version
+ 1: missing @+
+ 2: marking pages
+ 3: selected pages: --
+\stopmessages
+
+\startmessages german library: versions
+ title: Version
+ 1: fehlendes @+
+ 2: Erstelle Seiten
+ 3: Ausgewaehlte Seiten: --
+\stopmessages
+
+\startmessages czech library: versions
+ title: verze
+ 1: postradam @+
+ 2: oznacuji se strany
+ 3: oznacene strany: --
+\stopmessages
+
+\startmessages italian library: versions
+ title: version
+ 1: @+ mancante
+ 2: marcatura pagine
+ 3: pagine selezionate: --
+\stopmessages
+
+\startmessages norwegian library: versions
+ title: versjon
+ 1: manglende @+
+ 2: markerer sider
+ 3: valgte sider: --
+\stopmessages
+
+\startmessages romanian library: versions
+ title: versiuni
+ 1: lipseste @+
+ 2: pagini marcate
+ 3: pagini selectate: --
+\stopmessages
+
+\unprotect
+
+\definesystemconstant {link}
+
+\definesystemvariable {lk}
+
+% \expand vs \expanded
+
+% linked registers implementeren als een koppeling == mooier
+
+\presetlocalframed[\??lk]
+
+\newcounter\numberoflinks
+
+\def\stelkoppelingenin%
+ {\dodoubleargument\getparameters[\??lk]}
+
+\def\definieerkoppeling[#1]% % local loading !
+ {\doifundefined{\s!link:#1:\s!list}
+ {\expanded{\definetwopasslist{\s!link:#1}}%
+ \expanded{\doloadtwopassdata{\s!link:#1}}%
+ \getfirsttwopassdata{\s!link:#1}%
+ \setxvalue{\s!link:#1:f}{\twopassdata}%
+ \getlasttwopassdata{\s!link:#1}%
+ \setxvalue{\s!link:#1:l}{\twopassdata}%
+ \setxvalue{\s!link:#1:s}{\noftwopassitems}%
+ \gettwopassdata{\s!link:#1}%
+ \setxvalue{\s!link:#1:c}{\twopassdata}%
+ \setxvalue{\s!link:#1:n}{\twopassdata}}}
+
+\def\koppeling[#1]#2%
+ {\bgroup
+ \definieerkoppeling[#1]%
+ \doglobal\increment\numberoflinks
+ \gettwopassdata{\s!link:#1}%
+ \edef\numberoflinks{0\getvalue{\s!link:#1:s}}%
+ \edef\firstlink{0\getvalue{\s!link:#1:f}}%
+ \edef\lastlink{0\getvalue{\s!link:#1:l}}%
+ \edef\currentlink{0\getvalue{\s!link:#1:n}}%
+ \edef\prevlink{0\getvalue{\s!link:#1:c}}%
+ \iftwopassdatafound
+ \edef\nextlink{0\twopassdata}%
+ \setxvalue{\s!link:#1:n}{\nextlink}%
+ \setxvalue{\s!link:#1:c}{\currentlink}%
+ \else
+ \edef\nextlink {0\getvalue{\s!link:#1:l}}%
+ \fi
+ \edef\writelink
+ {\writeutilitycommand
+ {\twopassentry
+ {\s!link:#1}%
+ {\numberoflinks}%
+ {\noexpand\realfolio}}}%
+ \writelink
+ \ifnum\noflinks<2
+ \locationfalse
+ \fi
+ \iflocation
+ \hbox
+ {%\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \doganaareenpagina\??lk\gotobegincharacter\firstlink\hss
+ \ifnum\noflinks>2
+ \hskip\@@lkafstand
+ \doganaareenpagina\??lk\gobackwardcharacter\prevlink\hss
+ \fi
+ \hskip\@@lkafstand
+ #2\relax
+ \hskip\@@lkafstand
+ \ifnum\noflinks>2
+ \doganaareenpagina\??lk\goforwardcharacter\nextlink\hss
+ \hskip\@@lkafstand
+ \fi
+ \doganaareenpagina\??lk\gotoendcharacter\lastlink}%
+ \else
+ \hbox{#2}%
+ \fi
+ \egroup}
+
+\def\definieerkoppeling[#1]% % local loading !
+ {\doifundefined{\s!link:#1:\s!list}
+ {\expanded{\definetwopasslist{\s!link:#1}}% \expanded{\doloadtwopassdata{\s!link:#1}}%
+ \getfirsttwopassdata{\s!link:#1}%
+ \let\firstlink\twopassdata
+ \getlasttwopassdata{\s!link:#1}%
+ \let\lastlink\twopassdata
+ \let\noflinks\noftwopassitems
+ \gettwopassdata{\s!link:#1}%
+ \let\currentlink\twopassdata
+ \let\nextlink\twopassdata
+ \setxvalue{\s!link:#1:}%
+ {\firstlink:\lastlink:\noflinks:\currentlink:\nextlink}}}
+
+\def\koppeling[#1]#2%
+ {\bgroup
+ \definieerkoppeling[#1]%
+ \doglobal\increment\numberoflinks
+ \gettwopassdata{\s!link:#1}%
+ \def\next[##1:##2:##3:##4:##5]%
+ {\edef\firstlink {0##1}%
+ \edef\lastlink {0##2}%
+ \edef\noflinks {0##3}%
+ \edef\prevlink {0##4}%
+ \edef\currentlink{0##5}}%
+ \expanded{\next[\getvalue{\s!link:#1:}]}%
+ \edef\nextlink
+ {0\iftwopassdatafound\twopassdata\else\lastlink\fi}%
+ \setxvalue{\s!link:#1:}%
+ {\firstlink:\lastlink:\noflinks:\currentlink:\nextlink}%
+ \edef\writelink
+ {\writeutilitycommand
+ {\twopassentry
+ {\s!link:#1}%
+ {\numberoflinks}%
+ {\noexpand\realfolio}}}%
+ \writelink
+ \ifnum\noflinks<2
+ \locationfalse
+ \fi
+ \iflocation
+ \hbox
+ {%\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ #2\relax
+ \hskip\@@lkafstand
+ \doganaareenpagina\??lk\gotobegincharacter\firstlink\hss
+ \ifnum\noflinks>2
+ \doganaareenpagina\??lk\gobackwardcharacter\prevlink\hss
+ \fi
+ \ifnum\noflinks>2
+ \doganaareenpagina\??lk\goforwardcharacter\nextlink\hss
+ \hskip\@@lkafstand
+ \fi
+ \doganaareenpagina\??lk\gotoendcharacter\lastlink}%
+ \else
+ \hbox{#2}%
+ \fi
+ \egroup}
+
+\let\setupinteractionscreens\empty
+
+\def\docalculateinteractionscreen
+ {\doifelse\@@scwidth\v!fit
+ {\!!widtha\leftedgewidth
+ \advance\!!widtha \leftedgedistance
+ \advance\!!widtha \leftmarginwidth
+ \advance\!!widtha \leftmargindistance
+ \ifdim\backspace>\!!widtha\ifdim\backspace>\zeropoint\relax
+ \advance\backspace -\!!widtha
+ \fi\fi
+ \advance\!!widtha \makeupwidth
+ \advance\!!widtha \rightmargindistance
+ \advance\!!widtha \rightmarginwidth
+ \advance\!!widtha \rightedgedistance
+ \advance\!!widtha \rightedgewidth
+ \scratchdimen\@@scbackspace
+ \advance\scratchdimen \@@schoroffset
+ \advance\!!widtha 2\scratchdimen}
+ {\doifelse\@@scwidth\v!max
+ {\!!widtha\printpaperwidth}
+ {\!!widtha\@@scwidth}}%
+ \doifelse\@@scheight\v!fit
+ {\!!heighta\topheight
+ \advance\!!heighta \topdistance
+ \ifdim\topspace>\!!heighta\ifdim\topspace>\zeropoint\relax
+ \advance\topspace -\!!heighta
+ \fi\fi
+ \advance\!!heighta \makeupheight
+ \advance\!!heighta \bottomdistance
+ \advance\!!heighta \bottomheight
+ \scratchdimen\@@sctopspace
+ \advance\scratchdimen \@@scveroffset
+ \advance\!!heighta 2\scratchdimen}
+ {\doifelse\@@scheight\v!max
+ {\!!heighta\printpaperheight}
+ {\!!heighta\@@scheight}}%
+ \doif\@@scdelay\v!none{\let\@@scdelay\zerocountervalue}}
+
+% The macro is not to be changed; only the \@@ia-variables
+% may be set! ConTeXt is the producer but we no longer
+% mention the pragma site, since we don't want to be bothered
+% with remarks about third party documents and/or associated
+% with documents produced outside our control.
+
+\def\doprepareidentity % beware, we need to construct
+ {\let\!!stringa\@@iakeyword % an unexpanded space separated
+ \let\@@iakeyword\empty % list of keywords from a comma
+ \def\doprepareidentity##1% % separated one
+ {\ifx\@@iakeyword\empty
+ \appended\def\@@iakeyword{##1}%
+ \else
+ \appended\def\@@iakeyword{ ##1}%
+ \fi}%
+ \@EA\processcommalist\@EA[\!!stringa]\doprepareidentity
+ \global\let\doprepareidentity\relax}
+
+\def\doinitializeidentity#1%
+ {%\iflocation
+ \doprepareidentity
+ \dosetupidentity % no \expanded{..} will be done in special (else no pdfdoc)
+ {\@@iatitle}{\@@iasubtitle}{\@@iaauthor}{#1}%
+ {\@@iadate}{\@@iakeyword}%
+ \global\let\initializeidentity\relax
+ }%\fi}
+
+\def\initializeidentity % not to be changed !
+ {\doinitializeidentity{ConTeXt/user/\jobname.tex}}
+
+\appendtoks \initializeidentity \to \everyshipout
+
+\def\initializepaper
+ {\bgroup
+ \ifx\@@ppleft \empty
+ \ifx\@@ppright\empty
+ \ifx\@@pptop \empty
+ \ifx\@@ppbottom \empty
+ \ifx\@@pcstate\v!start
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi\else
+ \locationfalse\fi
+ \iflocation % without screen settings
+ \egroup
+ \dosetuppaper\papersize\paperwidth\paperheight
+ \else
+ \egroup
+ \dosetuppaper\printpapersize\printpaperwidth\printpaperheight
+ \fi}
+
+\appendtoks \initializepaper \to \everyshipout
+
+\def\doinitializepaper
+ {\bgroup
+ \docalculateinteractionscreen
+ \ifdim\!!widtha>\paperwidth\ifdim\!!widtha>\zeropoint
+ \paperwidth\!!widtha
+ \fi\fi
+ \ifdim\!!heighta>\paperheight\ifdim\!!heighta>\zeropoint
+ \paperheight\!!heighta
+ \fi\fi
+ \dosetuppaper
+ {\printpapersize}
+ {\the\paperwidth}
+ {\the\paperheight}%
+ \egroup}
+
+\let\@@pcscreendata\empty
+
+\def\dosetupinteractionscreens % met a, b en \number
+ {\doifnot\@@pcstate\v!start\dodosetupinteractionscreens}
+
+\setvalue{\??sc\c!option\v!max }{1} % tzt share with driver
+\setvalue{\??sc\c!option\v!bookmark }{2} % tzt share with driver
+\setvalue{\??sc\c!option\v!fit }{3} % tzt share with driver
+\setvalue{\??sc\c!option\v!doublesided}{4} % tzt share with driver
+
+\def\dodosetupinteractionscreens % met a, b en \number
+ {\bgroup
+ \docalculateinteractionscreen
+ \!!counte=0\getvalue{\??sc\c!option\@@scoption}\relax
+ % niet waterdicht
+ \doifnot{\the\!!widtha\the\!!heighta}\@@pcscreendata
+ {\xdef\@@pcscreendata{\the\!!widtha\the\!!heighta}%
+ \showmessage\m!interactions1{\withoutpt\the\!!widtha,\withoutpt\the\!!heighta}}%
+ % needs to be split: dimensions for each page
+ % and mode per document and only once !
+ \dosetupscreen \rugoffset\kopoffset\!!widtha\!!heighta{\the\!!counte}%
+ \dosetupcropbox\rugoffset\kopoffset\!!widtha\!!heighta
+ \egroup}
+
+\def\dosetupinteractionscreen[#1]%
+ {\getparameters[\??sc][#1]%
+ \ifproductionrun
+ \let\initializepaper\doinitializepaper
+ \let\setupinteractionscreens\dosetupinteractionscreens
+ \fi}
+
+\appendtoks \setupinteractionscreens \to \everyfirstshipout % needed to get option=max etc working
+\appendtoks \setupinteractionscreens \to \everyshipout % needed for page/screen dimensions
+
+\def\setupinteractionscreen
+ {\dosingleempty\dosetupinteractionscreen}
+
+%D Due to requests I finally decided to support bookmarks, a
+%D driver dependant way of showing tables of content. The most
+%D simple way of support is hooking bookmark generation into
+%D the existing list mechanisms. That way users can generate
+%D bookmarks automatically, although its entirely valid to add
+%D bookmarks by defining alternative ones. These will be added
+%D at the appropriate place in the list.
+
+% \hoofdstuk{het eerste hoofdstuk}
+%
+% \bookmark {de eerste bookmark} % optional overruled hoofdstuk
+%
+% .... text ....
+%
+% \placebookmarks [hoofdstuk,paragraaf,subparagraaf,subsubparagraaf,mylist]
+% [open list]
+%
+% \bookmark[mylist]{whatever}
+
+\def\@@bookmark {bm::}
+\def\@@booklevel{bl::}
+\def\@@bookcount{bc::}
+
+\definelist[\@@bookmark]
+
+% \appendtoks\flushpostponedbookmark\to\everypar
+% \appendtoks\flushpostponedbookmark\to\neverypar
+%
+% \let\flushpostponedbookmark\relax
+%
+% \def\simplebookmark#1%
+% {\ifx\flushpostponedbookmark\relax \else
+% \bgroup
+% \convertargument#1\to\ascii
+% \writestatus\m!systems{clashing bookmarks: \ascii}% ECHTE MESSAGE MAKEN
+% \egroup
+% \fi
+% \doglobal\prependtoks
+% \writetolist[\@@bookmark]{}{#1}%
+% \to\postponedbookmarks}
+
+\newtoks\postponedbookmarks
+
+\def\flushpostponedbookmark
+ {\the\postponedbookmarks
+ \global\postponedbookmarks\emptytoks}
+
+\def\simplebookmark#1%
+ {\doglobal\prependtoks
+ \writetolist[\@@bookmark]{}{#1}%
+ \to\postponedbookmarks}
+
+\def\complexbookmark[#1]#2%
+ {\doglobal\appendtoks\writetolist[#1]{}{#2}\to\postponedbookmarks}
+
+\definecomplexorsimple\bookmark
+
+\newif\iftracebookmarks \tracebookmarksfalse
+
+\let\tracebookmarks\tracebookmarkstrue
+
+\def\placebookmarks
+ {\dodoubleempty\doplacebookmarks}
+
+\def\doplacebookmarks[#1][#2]%
+ {\iflocation
+ \iffirstargument
+ \bgroup
+ \ifsecondargument
+ \edef\openbookmarklist{#2}%
+ \else
+ \let\openbookmarklist\empty
+ \fi
+ \global\let\bookmarklevellist\empty
+ \def\bookmarklevelcount{0}%
+ \doprocessbookmarks[#1]\dogetbookmarkelement
+ \dolistelement{}{}{}{}{}{}% needed to finish the first pass
+ \doprocessbookmarks[#1]\doputbookmarkelement
+ \flushbookmark
+ \egroup
+ \else
+ \expanded{\placebookmarks\@EA[\getvalue{\??ih\v!content\c!list}]}%
+ \fi
+ \fi}
+
+\def\doprocessbookmarks[#1]#2%
+ {\let\dolistelement#2\relax
+ \scratchcounter\zerocount
+ \def\docommando##1%
+ {\advance\scratchcounter \plusone
+ \getlistlevel[##1]\listlevel{\the\scratchcounter}%
+ \setxvalue{\@@bookcount\the\scratchcounter}{1}%
+ \setxvalue{\@@booklevel##1}{\listlevel}}%
+ \processcommalist[#1]\docommando
+ \setxvalue{\@@bookcount0}{1}%
+ \global\chardef\currentbookmarklevel\zerocount
+ \global\chardef\previousbookmarklevel\zerocount
+ \doutilities{listentries,#1,\@@bookmark}\jobname{#1}\relax\relax}
+
+\def\dodogetbookmarkelement#1#2#3#4#5#6%
+ {\doifelsenothing{#1}
+ {\global\chardef\currentbookmarklevel\zerocount}
+ {\global\chardef\currentbookmarklevel\getvalue{\@@booklevel#1}\relax}%
+ \ifnum\currentbookmarklevel>\previousbookmarklevel
+ \setxvalue{\@@bookcount\the\currentbookmarklevel}{1}%
+ \else\ifnum\currentbookmarklevel<\previousbookmarklevel
+ \bgroup
+ \!!counta\previousbookmarklevel
+ \doloop
+ {\let\bookmarktag\empty
+ \!!countb\!!counta
+ \advance\!!countb \minusone
+ \dorecurse\!!countb
+ {\edef\bookmarktag
+ {\bookmarktag\getvalue{\@@bookcount\recurselevel}:}}%
+ \edef\bookmarklevelcount
+ {\getvalue{\@@bookcount\the\!!counta}}%
+ \xdef\bookmarklevellist
+ {\bookmarklevellist/\bookmarktag:\bookmarklevelcount/}%
+ \advance\!!counta \minusone
+ \ifnum\!!counta=\currentbookmarklevel
+ \exitloop
+ \fi}%
+ \egroup
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\currentbookmarklevel\endcsname\relax
+ \else
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\previousbookmarklevel\endcsname\relax
+ \fi\fi
+ \global\utilitydonetrue
+ \global\chardef\previousbookmarklevel\currentbookmarklevel}
+
+\def\getbookmarklevelcount
+ {\@EA\def\@EA\docommando\@EA[\@EA##\@EA1\@EA/\bookmarktag:##2/##3]%
+ {\def\bookmarklevelcount{##2}}%
+ \@EA\@EA\@EA\docommando\@EA\@EA\@EA[\@EA\bookmarklevellist\@EA/\bookmarktag:0/]}
+
+\def\dodoputbookmarkelement#1#2#3#4#5#6%
+ {\doifelsenothing{#1}
+ {\global\chardef\currentbookmarklevel\zerocount}
+ {\global\chardef\currentbookmarklevel\getvalue{\@@booklevel#1}\relax}%
+ \ifnum\currentbookmarklevel>\previousbookmarklevel
+ \setxvalue{\@@bookcount\the\currentbookmarklevel}{1}%
+ \else\ifnum\currentbookmarklevel<\previousbookmarklevel
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\currentbookmarklevel\endcsname\relax
+ \else
+ \@EA\doglobal\@EA\increment\csname \@@bookcount\the\previousbookmarklevel\endcsname\relax
+ \fi\fi
+ \let\bookmarktag\empty
+ \!!countb\currentbookmarklevel
+ \dorecurse\!!countb
+ {\edef\bookmarktag
+ {\bookmarktag\getvalue{\@@bookcount\recurselevel}:}}%
+ \getbookmarklevelcount
+ \iftracebookmarks
+ \bgroup
+ \par
+ \bookmarktag\quad
+ \dorecurse\currentbookmarklevel{\quad}\unskip#1\quad
+ (\bookmarklevelcount)\quad
+ \egroup
+ \fi
+ \global\chardef\previousbookmarklevel\currentbookmarklevel
+ \global\utilitydonetrue
+ \insertsomebookmark{#1}{\the\currentbookmarklevel}{\bookmarklevelcount}{#4}{#6}}
+
+\def\dogetbookmarkelement#1#2#3#4#5#6%
+ {\doifnot{#1}\@@bookmark
+ {\dodogetbookmarkelement{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\def\doputbookmarkelement#1#2#3#4#5#6%
+ {\doifelse{#1}\@@bookmark
+ {\localbookmark{#4}}
+ {\flushbookmark
+ \dodoputbookmarkelement{#1}{#2}{#3}{#4}{#5}{#6}}}
+
+\let\flushbookmark\relax
+\let\localbookmark\gobbleoneargument
+
+\def\insertsomebookmark#1#2#3#4#5%
+ {\gdef\flushbookmark
+ {\doinsertsomebookmark{#1}{#2}{#3}{#4}{#5}{g}}%
+ \gdef\localbookmark##1%
+ {\doinsertsomebookmark{#1}{#2}{#3}{##1}{#5}{l}}}
+
+\def\doinsertsomebookmark#1#2#3#4#5#6%
+ {\global\utilitydonetrue
+ \global\let\localbookmark\gobbleoneargument
+ \global\let\flushbookmark\relax
+ \doifinstringelse{#1}\openbookmarklist
+ {\chardef\openbookmark\plusone}
+ {\chardef\openbookmark\zerocount}%
+ \iftracebookmarks(#6: #4)\quad(\the\openbookmark)\par\fi
+ \doinsertbookmark{#2}{#3}{#4}{#5}{\openbookmark}}
+
+% \startinteractionmenu[rechts]
+% \but [eerste] eerste \\
+% \txt hello world \\
+% \but [tweede] tweede \\
+% \nop \\
+% \but [tweede] tweede \\
+% \rul whow \\
+% \but [tweede] tweede \\
+% \raw hello world \\
+% \but [tweede] tweede \\
+% \com \vfill \\
+% \but [derde] derde \\
+% \stopinteractionmenu
+
+\newif\iflocationmenupermitted
+
+\def\testinteractionmenu#1%
+ {\iflocation
+ \doifelse\@@iamenu\v!on
+ {\doifelsevalue{\??am#1\c!state}\v!start
+ {\global\locationmenupermittedtrue}
+ {\global\locationmenupermittedfalse}}
+ {\global\locationmenupermittedfalse}%
+ \else
+ \global\locationmenupermittedfalse
+ \fi}
+
+\def\dodisableinteractionmenu[#1][#2][#3]%
+ {\def\dododisableinteractionmenu##1%
+ {\doifelse{#3}{}
+ {\letvalue{\??am##1\c!obstruction}\empty}
+ {\edef\interactieblokkade{\getvalue{\??am##1\c!obstruction}}
+ \def\docommando####1%
+ {#1{####1}{\interactieblokkade}}% #1 = \remove or \add
+ \processcommalist[#3]\docommando
+ \setevalue{\??am##1\c!obstruction}{\interactieblokkade}}}%
+ \processcommalist[#2]\dododisableinteractionmenu}
+
+\def\disableinteractionmenu
+ {\dotripleempty\dodisableinteractionmenu[\addtocommalist]}
+
+\def\enableinteractionmenu
+ {\dotripleempty\dodisableinteractionmenu[\removefromcommalist]}
+
+% ja : kader/achtergrond met tekst
+% leeg : kader/achtergrond maar geen tekst
+% nee : alleen ruimte reserveren
+% geen : helemaal weglaten
+
+\newif\iflocationdummy
+\newif\ifskippedmenuitem
+
+\newif\iflocationempty
+\newif\iflocationclick
+
+% ja : kader/achtergrond met tekst
+% leeg : kader/achtergrond maar geen tekst
+% nee : alleen ruimte reserveren
+% geen : helemaal weglaten
+%
+% \setupinteractionmenu[right][samepage=yes, unknownreference=yes]
+% \setupinteractionmenu[right][samepage=empty,unknownreference=empty]
+% \setupinteractionmenu[right][samepage=no, unknownreference=no]
+% \setupinteractionmenu[right][samepage=none, unknownreference=none]
+%
+% \startinteractionmenu[right]
+% \but [firstpage] first \\
+% \but [lastpage] last \\
+% \but [somepage] crap \\
+% \stopinteractionmenu
+
+\def\dosetlocationboxcontent#1[#2]#3[#4]%
+ {\global\skippedmenuitemfalse
+ \setbox\locationbox\hbox
+ {\resetgoto % anders cyclische aanroep !
+ \localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}}%
+ \iflocationclick
+ \hbox{\gotolocation{#4}{\box\locationbox}}%
+ \else
+ \hbox{\box\locationbox}%
+ \fi}
+
+\let\dosetlocationboxyes\dosetlocationboxcontent
+
+\def\dosetlocationboxempty#1[%
+ {\dosetlocationboxcontent{#1}[\c!empty=\v!yes,}
+
+\def\dosetlocationboxno#1[%
+ {\dosetlocationboxcontent{#1}[\c!empty=\v!yes,\c!frame=,\c!background=,}
+
+\def\dosetlocationboxnone#1[#2]#3[#4]%
+ {\global\skippedmenuitemtrue}
+
+% the following version looks ok but is not, since it is unaware of
+% some reference properties
+%
+% \def\setlocationboxyes#1%
+% {\locationclicktrue
+% \ifx\currentouterreference\empty
+% \ifrealreferencepage\!!doneatrue\else\!!doneafalse\fi
+% \else
+% \!!doneafalse
+% \fi
+% \if!!donea
+% \ifcase\csname\??am\??am\csname#1\c!samepage\endcsname\endcsname\relax
+% \copycsname#1\c!color\endcsname\csname#1\c!contrastcolor\endcsname
+% \@EAEAEA\dosetlocationboxyes
+% \or
+% \@EAEAEA\dosetlocationboxempty
+% \or
+% \@EAEAEA\dosetlocationboxno
+% \or
+% \@EAEAEA\dosetlocationboxnone
+% \fi
+% \else
+% \@EA\dosetlocationboxcontent
+% \fi{#1}}
+%
+% \def\setlocationboxnop#1%
+% {\locationclickfalse
+% \ifcase\csname\??am\??am\csname#1\c!unknownreference\endcsname\endcsname\relax
+% \@EA\dosetlocationboxyes
+% \or
+% \@EA\dosetlocationboxempty
+% \or
+% \@EA\dosetlocationboxno
+% \or
+% \@EA\dosetlocationboxnone
+% \fi{#1}}
+%
+% \def\setlocationbox#1[#2]#3[#4]%
+% {\bgroup % really needed !
+% \edef\permittedreferences{\csname#1\c!obstruction\endcsname}%
+% \doifreferencepermittedelse{#4}
+% {\setlocationboxyes{#1}[#2]{#3}[#4]}
+% {\setlocationboxnop{#1}[#2]{#3}[#4]}%
+% \egroup}
+%
+% \def\setlocationboxraw#1[#2]#3[#4]%
+% {\localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}}
+
+\def\setlocationboxyes#1[#2]#3[#4]%
+ {\locationclicktrue
+ \setbox\locationbox\hbox
+ {\resetgoto % anders cyclische aanroep !
+ \global\skippedmenuitemfalse
+ \gotolocation
+ {#4}% % needed
+ {\ifrealreferencepage
+ \ifcase\csname\??am\??am\csname#1\c!samepage\endcsname\endcsname\relax
+ \copycsname#1\c!color\endcsname\csname#1\c!contrastcolor\endcsname
+ \localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \localframed[#1][\c!empty=\v!yes,#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \localframed[#1][\c!empty=\v!yes,\c!frame=,\c!background=,#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \global\skippedmenuitemtrue
+ \fi
+ \else
+ \localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \fi}}%
+ \ifskippedmenuitem\else\box\locationbox\fi}
+
+\def\setlocationboxnop#1[#2]#3[#4]%
+ {\locationclickfalse
+ \setbox\locationbox\hbox
+ {\resetgoto % anders cyclische aanroep !
+ \global\skippedmenuitemfalse
+ \ifcase\csname\??am\??am\csname#1\c!unknownreference\endcsname\endcsname\relax
+ \localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \localframed[#1][\c!empty=\v!yes,#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \localframed[#1][\c!empty=\v!yes,\c!frame=,\c!background=,#2]{\dolocationattributes{#1}\c!style\c!color{#3}}%
+ \or
+ \global\skippedmenuitemtrue
+ \fi}%
+ \ifskippedmenuitem\else\box\locationbox\fi}
+
+\def\setlocationboxraw#1[#2]#3[#4]%
+ {\localframed[#1][#2]{\dolocationattributes{#1}\c!style\c!color{#3}}}
+
+\def\setlocationbox#1[#2]#3[#4]%
+ {\bgroup % really needed !
+ \edef\permittedreferences{\csname#1\c!obstruction\endcsname}%
+ \doifreferencepermittedelse{#4}%
+ {\setlocationboxyes{#1}[#2]{#3}[#4]}%
+ {\setlocationboxnop{#1}[#2]{#3}[#4]}%
+ \egroup}
+
+\def\dodosetlocationcommanditem#1#2#3[#4]#5\\%
+ {\bgroup
+ \leavevmode
+ \doifelse{#5}{[]}
+ {\doifassignmentelse{#4}{#3}{\setlocationbox{\??am#1}[]{#3}[#4]}}
+ {#3}%
+ \ifskippedmenuitem \else
+ \getvalue{\??am#1#2}%
+ \fi
+ \egroup}
+
+\def\dosetlocationcommanditem#1#2#3%
+ {\dodosetlocationcommanditem{#1}{#2}#3[]\\}
+
+\def\setlocationnop#1[#2]#3%
+ {\localframed[#1][#2]{#3}}
+
+\def\executeamboxcommands#1#2#3#4#5%
+ {%\processaction
+ % [\getvalue{\??am#1\c!dummy}]
+ % [ \v!yes=>\chardef\handleunknownmenuitem=0\relax,
+ % \v!empty=>\chardef\handleunknownmenuitem=1\relax,
+ % \v!no=>\chardef\handleunknownmenuitem=2\relax]%
+ \getvalue{\??am#1#3}\relax
+ \ifextendedmenu
+ \setamboxcommands{#1}{#4}%
+ \def\next
+ {\ignorespaces#2}%
+ \else
+ \def\dolocationcommand##1%
+ {\dosetlocationcommanditem{#1}{#4}{##1}}%
+ \def\next
+ {\processcommalist[#2]\dolocationcommand}%
+ \fi
+ \next
+ \unskip
+ \getvalue{\??am#1#5}}
+
+\newcounter\currentamposition
+
+\newtoks\everysetmenucommands
+
+\def\setamboxcommands#1#2%
+ {\def\currentmenu{#1}% % kan nog eerder
+ \def\currentsubmenu{#2}% % ? ?
+ \doglobal\newcounter\currentamposition
+ \the\everysetmenucommands}
+
+\def\menu@@amboxcommand#1\\%
+ {\bgroup
+ \leavevmode\ignorespaces#1\unskip\relax
+ \ifskippedmenuitem \else
+ \getvalue{\??am\currentmenu\currentsubmenu}%
+ \fi
+ \egroup
+ \ignorespaces}
+
+\appendtoks
+ \let\@@amboxcommand\menu@@amboxcommand
+\to \everysetmenucommands
+
+\def\menu@raw[#1]#2\\%
+ {\@@amboxcommand\gotobox{\ignorespaces#2\unskip}[#1]\\}%
+
+\def\menu@but[#1]#2\\%
+ {\@@amboxcommand\do@@amposition\currentmenu{#1}{\setlocationbox{\??am\currentmenu}[]{\ignorespaces#2\unskip}[#1]}\\}%
+
+\def\menu@got[#1]#2\\% pas op! offset
+ {\@@amboxcommand\setlocationbox{\??am\currentmenu}[\c!frame=\v!off,\c!background=]{\ignorespaces#2\unskip}[#1]\\}%
+
+\def\menu@nop#1\\%
+ %{\@@amboxcommand\phantom{\localframed[\??am\currentmenu][]{#1}}\\}%
+ {\@@amboxcommand\setlocationboxraw{\??am\currentmenu}[\c!frame=\v!off,\c!background=,\c!empty=\v!yes]{\ignorespaces#1\unskip}[]\\}%
+
+\def\menu@txt#1\\%
+ {\@@amboxcommand\localframed[\??am\currentmenu][\c!frame=\v!off,\c!background=]{\ignorespaces#1\unskip}\\}%
+
+\def\menu@rul#1\\% ook \do@@amposition !
+ {\@@amboxcommand\localframed[\??am\currentmenu][]{\ignorespaces#1\unskip}\\}%
+
+\def\menu@com#1\\%
+ {\ignorespaces#1\unskip\ignorespaces}%
+
+\appendtoks
+ \let\raw\menu@raw
+ \let\but\menu@but
+ \let\got\menu@got
+ \let\nop\menu@nop
+ \let\txt\menu@txt
+ \let\rul\menu@rul
+ \let\com\menu@com
+\to \everysetmenucommands
+
+\ifx\do@@amposition\undefined
+ \let\do@@amposition\gobbletwoarguments % hook for positional thingies
+\fi
+
+\let\currentmenu\empty
+
+% beware : never change the concept of pbgoffset
+
+\def\@@amhbox#1#2#3#4%
+ {\def\currentmenu{#3}%
+ \testinteractionmenu{#3}%
+ \iflocationmenupermitted
+ \bgroup
+ \showcomposition
+ \def\dolocationcommand##1{\dosetlocationcommanditem{#3}{##1}}%
+ \dimen0=\makeupwidth
+ \advance\dimen0 \pagebackgroundhoffset
+ \advance\dimen0 \pagebackgroundhoffset
+ \advance\dimen0 -\getvalue{\??am#3\c!leftoffset}%
+ \advance\dimen0 -\getvalue{\??am#3\c!rightoffset}%
+ \setbox0\hbox to \dimen0
+ {\forgetall
+ \executeamboxcommands{#3}{#4}\c!left\c!middle\c!right}%
+ \setbox0\hbox{\do@@ammenuposition{#3}{\box0}}%
+ \wd0=\makeupwidth
+ % geen \ht=#2 setting (yet)
+ \hskip-\pagebackgroundhoffset
+ \hskip \getvalue{\??am#3\c!leftoffset}%
+ \box0\relax
+ \egroup
+ \else
+ #1\relax
+ \fi}
+
+\def\@@amvbox#1#2#3#4% don't change skipping, this one works!
+ {\def\currentmenu{#3}%
+ \testinteractionmenu{#3}%
+ \iflocationmenupermitted
+ \bgroup
+ \showcomposition
+ \dimen0=\textheight
+ \advance\dimen0 \pagebackgroundvoffset
+ \advance\dimen0 \pagebackgroundvoffset
+ \advance\dimen0 \pagebackgrounddepth
+ \advance\dimen0 -\getvalue{\??am#3\c!topoffset}%
+ \advance\dimen0 -\getvalue{\??am#3\c!bottomoffset}%
+ \setbox0\vbox to \dimen0
+ {\forgetall % Voor't geval de afstand
+ %\setupblank[\v!standard]% % (tijdelijk) is aangepast.
+ \restorestandardblank
+ \hsize#2\relax
+ \executeamboxcommands{#3}{#4}\c!before\c!inbetween\c!after}%
+ \setbox0\vbox{\hbox{\do@@ammenuposition{#3}{\box0}}}%
+ \setbox0\vbox
+ {\vskip-\pagebackgroundvoffset
+ \vskip\getvalue{\??am#3\c!topoffset}%
+ \ht0=\zeropoint
+ \box0
+ \vskip\pagebackgroundvoffset}% overbodig
+ \ht0=\textheight
+ \wd0=#2\relax
+ \box0
+ \egroup
+ \else
+ #1\relax
+ \fi}
+
+\ifx\do@@ammenuposition\undefined
+ \let\do@@ammenuposition\gobbleoneargument % hook for positional thingies
+\fi
+
+\setvalue{\??am\s!do\v!right }{\@@amvbox{\dodummypageskip\v!right }\rightedgewidth}
+\setvalue{\??am\s!do\v!left }{\@@amvbox{\dodummypageskip\v!left }\leftedgewidth }
+\setvalue{\??am\s!do\v!top }{\@@amhbox{\dodummypageskip\v!top }\topheight }
+\setvalue{\??am\s!do\v!bottom}{\@@amhbox{\dodummypageskip\v!bottom}\bottomheight }
+
+\def\dointeractionmenu#1#2%
+ {\getvalue{\??am\s!do\getvalue{\??am#1\c!location}}{#1}{#2}}
+
+\unexpanded\def\interactionmenu[#1]%
+ {\getvalue{\??am\c!menu#1}}
+
+\def\horizontalinteractionmenu#1#2#3#4%
+ {\ifdim#2>\zeropoint % new
+ \dimen2\zeropoint
+ \setbox0\hbox
+ {\def\docommando##1%
+ {\doifnotvalue{\??am##1\c!state}\v!none
+ {\hskip\dimen2
+ \setbox2\hbox to #2
+ {\getvalue{\??am##1#3}\interactionmenu[##1]\getvalue{\??am##1#4}}%
+ \doifelsevalue{\??am##1\c!distance}\v!overlay
+ {\dimen2\zeropoint
+ \wd2\zeropoint}%
+ {\dimen2=\getvalue{\??am##1\c!distance}}%
+ \box2}}%
+ \startinteraction
+ \processcommacommand[\getvalue{\??am#1}]\docommando
+ \stopinteraction}%
+ \wd0=#2\relax
+ \box0\relax
+ \fi}
+
+\def\verticalinteractionmenu#1#2#3#4%
+ {\ifdim#2>\zeropoint % new
+ \dimen2\zeropoint
+ \setbox0\vbox
+ {\def\docommando##1%
+ {\doifnotvalue{\??am##1\c!state}\v!none
+ {\vskip\dimen2
+ \setbox2\vbox to #2
+ {\getvalue{\??am##1#3}\interactionmenu[##1]\getvalue{\??am##1#4}}%
+ \doifelsevalue{\??am##1\c!distance}\v!overlay
+ {\dimen2\zeropoint
+ \offinterlineskip
+ \dp2\zeropoint
+ \ht2\zeropoint}%
+ {\dimen2=\getvalue{\??am##1\c!distance}}%
+ \box2}}%
+ \startinteraction
+ \processcommacommand[\getvalue{\??am#1}]\docommando
+ \stopinteraction}%
+ \ht0=#2\relax
+ \dp0\zeropoint
+ \box0\relax
+ \fi}
+
+\letvalue{\??am\v!left }\empty
+\letvalue{\??am\v!right}\empty
+\letvalue{\??am\v!top }\empty
+\letvalue{\??am\v!bottom }\empty
+
+% todo : \defineinteractionmenuclass
+
+\def\interactionmenus[#1]%
+ {\iflocation
+ \getvalue{\??am\??am\c!menu#1}%
+ \else
+ \dodummypageskip{#1}%
+ \fi}
+
+\setvalue{\??am\??am\c!menu\v!left}%
+ {\horizontalinteractionmenu\v!left\leftedgewidth\c!left\c!right}
+\setvalue{\??am\??am\c!menu\v!right}%
+ {\horizontalinteractionmenu\v!right\rightedgewidth\c!left\c!right}
+\setvalue{\??am\??am\c!menu\v!top}%
+ {\verticalinteractionmenu\v!top\topheight\c!before\c!after}
+\setvalue{\??am\??am\c!menu\v!bottom}%
+ {\verticalinteractionmenu\v!bottom\bottomheight\c!before\c!after}
+
+% this can be implemented with the following command (which
+% is new, undocumented, experimental, untested, etc etc)
+
+\def\defineinteractionmenuclass
+ {\dodoubleargument\dodefineinteractionmenuclass}
+
+\def\dodefineinteractionmenuclass[#1][#2]% tag hori|veri
+ {\doifelse{#2}\v!vertical
+ {\setvalue{\??am\??am\c!menu#1}%
+ {\verticalinteractionmenu
+ {#1}{\getvalue{\??am#1\c!width}}\c!before\c!after}}
+ {\setvalue{\??am\??am\c!menu#1}%
+ {\horizontalinteractionmenu
+ {#1}{\getvalue{\??am#1\c!height}}\c!left\c!right}}}
+
+% \setupinteraction[menu=on,state=start]
+%
+% \defineinteractionmenuclass[test] [vertical]
+% \defineinteractionmenuclass[another][horizontal]
+%
+% \defineinteractionmenu[test] [left][state=start,width=4cm]
+% \defineinteractionmenu[another][top] [state=start,height=1cm]
+%
+% \startinteractionmenu[test]
+% \but [firstpage] test-a \\
+% \but [nextpage] test-b \\
+% \stopinteractionmenu
+%
+% \startinteractionmenu[another]
+% \but [firstpage] test-a \\
+% \but [nextpage] test-b \\
+% \stopinteractionmenu
+%
+% \setupheadertexts[{\interactionmenu[another]}]
+%
+% \starttext
+%
+% test \interactionmenu[test] \page
+% test \interactionmenu[test] \page
+%
+% \stoptext
+
+%D This can save complicated menu macros when one want to
+%D keep control over parts of a menu (i.e.\ turn them on and
+%D off). We could have achieved something similar with modes.
+
+\def\local@@ambox#1#2#3#4% don't change skipping, this one works!
+ {\bgroup
+ \testinteractionmenu{#3}%
+ \iflocationmenupermitted
+ \executeamboxcommands{#3}{#4}\c!before\c!inbetween\c!after
+ \else
+ #1\relax
+ \fi
+ \egroup}
+
+\unprotected\def\includemenu[#1]%
+ {\doifvalue{\??am#1\c!state}\v!local
+ {\bgroup
+ \letvalue{\??am#1\c!state}\v!start
+ \let\@@amvbox\local@@ambox
+ \let\@@amhbox\local@@ambox
+ \getvalue{\??am\c!menu#1}%
+ \egroup}}
+
+%D We also need an explicit position control some day. I'll
+%D do that when I need it. [The stacking order.]
+
+% for the moment we will support the old method
+%
+% \stelinteractionmenuin[right][{abc[xyz]},...]
+% \stelinteractionmenuin[right][key=val,...]
+
+\newif\ifextendedmenu
+
+\def\defineinteractionmenu
+ {\dotripleempty\dodefineinteractionmenu}
+
+\def\dodefineinteractionmenu[#1][#2]% compatibility hack
+ {\convertargument#2\to\ascii % will disappear soon
+ \doifinstringelse[\ascii
+ \dodosetupinteractionlistmenux
+ \dododefineinteractionmenu
+ [#1][#2]}
+
+% [name] [location]
+% [name] [location] [pars]
+
+\def\dododefineinteractionmenu[#1][#2][#3]%
+ {% main settings
+ \letvalue{\??am\c!menu#1}\empty
+ % \setvalue{\??am\c!menu#1}%
+ % {\extendedmenufalse\dointeractionmenu{#1}{}}%
+ \setvalue{\@@dodolistelement#1}%
+ {\def\dosomelistelement{\dodomenulistelement{#1}}}%
+ \presetlocalframed[\??am#1]%
+ % register location
+ \expanded{\addtocommalist{#1}\@EA\noexpand\csname\??am#2\endcsname}%
+ % inherit settings
+ \doifnot{#1}{#2}
+ {\copyparameters[\??am#1][\??am#2]
+ [\c!left,\c!middle,\c!right,\c!before,\c!after,\c!inbetween,%
+ \c!width,\c!height,\c!distance,\c!offset,%
+ \c!frame,\c!framecolor,\c!rulethickness,%
+ \c!background,\c!backgroundcolor,\c!backgroundscreen,%
+ \c!style,\c!color,\c!contrastcolor,\c!samepage,\c!unknownreference,%
+ \c!leftoffset,\c!rightoffset,\c!topoffset,\c!bottomoffset]}%
+ % additional settings
+ \getparameters[\??am#1][\c!location=#2,\c!obstruction=,#3]}
+
+\def\setupinteractionmenu
+ {\dodoubleargument\dosetupinteractionmenu}
+
+\def\dosetupinteractionmenu[#1][% compatibillity hack
+ {\doifnextcharelse\bgroup % will disappear soon
+ {\dodosetupinteractionlistmenuy[#1][}
+ {\dodosetupinteractionmenu [#1][}}
+
+\def\dodosetupinteractionlistmenux[#1][#2][#3]% compatibillity hack
+ {\setvalue{\??am\c!menu#1}{\extendedmenufalse\dointeractionmenu{#1}{#2}}}
+
+\def\dodosetupinteractionlistmenuy[#1][#2]% compatibillity hack
+ {\setvalue{\??am\c!menu#1}%
+ {\extendedmenufalse\dointeractionmenu{#1}{#2}}}
+
+\def\dodosetupinteractionmenu[#1][#2]%
+ {\def\docommando##1{\getparameters[\??am##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\setvalue{\??am\??am\v!yes }{0}
+\setvalue{\??am\??am\v!empty}{1}
+\setvalue{\??am\??am\v!no }{2}
+\setvalue{\??am\??am\v!none}{3}
+\setvalue{\??am\??am }{1} % default
+
+\processbetween{\v!interactionmenu}\dostartinteractionmenu
+
+\def\dostartinteractionmenu#1%
+ {\dodostartinteractionmenu#1\dodostopinteractionmenu}
+
+\def\dodostartinteractionmenu[#1]#2\dodostopinteractionmenu
+ {\setvalue{\??am\c!menu#1}{\extendedmenutrue\dointeractionmenu{#1}{#2}}}
+
+\def\resetinteractionmenu[#1]%
+ {\letvalue{\??am\c!menu#1}\empty}
+
+\def\dodomenulistelement#1#2#3#4#5#6#7%
+ {\setbox0=\hbox
+ {\let\gotolocation\gobbleoneargument % hack to catch last []
+%\locationclickfalse % ipv ^
+ \docheckrealreferencepage{#7}%
+ \setlocationboxyes
+ {\??am#1}% % needed !
+ []% no settings
+ {\limitatetext{#5}{\getvalue{\??li#2\c!maxwidth}}{\unknown}}% % needed !
+ []}% normally the destination, catch by gobble
+ \@@amboxcommand\do@@amposition{#1}{#7}% beware, we pass the pagenumber
+ {\ignorespaces\linklisttoelement{#3}{#6}{#7}{\box0}\unskip}\\}
+
+% \scherm moet worden als \page
+
+\def\screen
+ {\dosingleempty\doscreen}
+
+\def\doscreen[#1]%
+ {\iflocation\page[#1]\fi}
+
+\unexpanded\def\menubutton
+ {\dodoubleempty\domenubutton}
+
+\def\domenubutton[#1]%
+ {\iffirstargument
+ \ifsecondargument
+ \@EAEAEA\domenubuttonB
+ \else
+ \doifassignmentelse{#1}
+ {\@EAEAEA\domenubuttonC}
+ {\@EAEAEA\domenubuttonD}%
+ \fi
+ \else
+ \@EA\domenubuttonA
+ \fi[#1]}
+
+\def\domenubuttonA[#1][#2]#3[#4]% normal button, no parameters
+ {\bgroup
+ %\locationdummytrue
+ \setlocationbox\??bt[]{#3}[#4]%
+ \egroup}
+
+\def\domenubuttonB[#1][#2]#3[#4]% menu button, with parameters
+ {\bgroup
+ %\locationdummytrue
+ \setlocationbox{\??am#1}[#2]{#3}[#4]%
+ \egroup}
+
+\def\domenubuttonC[#1][#2]#3[#4]% normal button, with parameters
+ {\bgroup
+ %\locationdummytrue
+ \setlocationbox\??bt[#1]{#3}[#4]%
+ \egroup}
+
+\def\domenubuttonD[#1][#2]#3[#4]% menu button, no parameters
+ {\bgroup
+ %\locationdummytrue
+ \setlocationbox{\??am#1}[]{#3}[#4]%
+ \egroup}
+
+\def\domenubox[#1][#2]#3%
+ {\bgroup
+ \def\setlocationbox##1[##2]##3[##4]%
+ {\localframed[##1][##2]{\dolocationattributes{##1}\c!style\c!color{##3}}}%
+ \domenubutton[#1][#2]#3[]%
+ \egroup}
+
+\def\menubox
+ {\dodoubleempty\domenubox}
+
+\def\domenubox[#1][#2]#3%
+ {\bgroup
+ \let\setlocationbox\setlocationboxraw
+ \domenubutton[#1][#2]#3[]%
+ \egroup}
+
+% Hier volgen de synchronisatiemacro's:
+
+\def\syncprefix{sync}
+\def\syncmarker{syncmark}
+
+%\definemarking[\syncmarker]
+%\setupmarking[\syncmarker][\c!expansie=\v!ja]
+
+\newmark\syncmarker
+
+\newcounter\synccounter
+
+\newif\ifsynchronisation
+
+\def\startsynchronization%
+ {\iflocation\ifsynchronisation
+ \doglobal\increment\synccounter
+ \fi\fi}
+
+\def\stopsynchronization%
+ {\iflocation\ifsynchronisation
+ %\thisisdestination{\syncprefix:\synccounter}%
+ \pagereference[\syncprefix:\synccounter]%
+ \ifvmode
+ \@EA\setmark\@EA\syncmarker\@EA{\synccounter} % \marking[\syncmarker]{\synccounter}%
+ \else
+ \showmessage\m!interactions4\synccounter
+ \fi
+ \fi\fi}
+
+\def\synchronize%
+ {\startsynchronization
+ \stopsynchronization}
+
+\def\dosetupsynchronization[#1]%
+ {\getparameters[\??sy][#1]%
+ \doifelse\@@systate\v!start
+ \synchronisationtrue
+ \synchronisationfalse}
+
+\def\setupsynchronization
+ {\dosingleargument\dosetupsynchronization}
+
+\def\definesynchronization
+ {\dosingleargument\dodefinesynchronization}
+
+\def\setupsynchronizationbar
+ {\dodoubleargument\getparameters[\??ba]}
+
+\presetlocalframed[\??ba]
+
+\setvalue{synchronisatie\v!page}[#1]%
+ {\bgroup
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \setbox0\hbox
+ {\localframed[\??ba][]{\dolocationattributes\??ba\c!style\c!color{\strut\@@batext}}}%
+ \dontcomplain
+ \def\atthebottom
+ {\leaders\hrule\!!depth1ex\!!height-.5ex\hfil}%
+ \def\atthetop##1##2##3%
+ {\dimen0=\wd0
+ \divide\dimen0 3
+ \multiply\dimen0 ##2\relax
+ \dimen2=.25em % brrr
+ \advance\dimen0 -##3\dimen2
+ %\gotodestination
+ % {}{#1}{\syncprefix:##1}{}
+ % {\hbox to \dimen0{\color[\locationcolor\@@bacolor]{\atthebottom}}}}%
+ \gotobox
+ {\hbox to \dimen0{\color[\locationcolor\@@bacolor]{\atthebottom}}}%
+ [#1::\syncprefix:##1]}%
+ \hbox
+ {\def\check##1##2%
+ {\edef##2{0##1\syncmarker}%
+ \ifnum0##2=0 \def##2{1}\fi}%
+ \check\gettopmark\top
+ \check\getfirstmark\first
+ \check\getbotmark\bot
+ \setbox2\hbox to \wd0
+ {\ifnum\top=\first\relax
+ \ifnum\first=\bot\relax
+ \atthetop\first30\relax
+ \else
+ \atthetop\first21\hss\atthetop\bot11\relax
+ \fi
+ \else
+ \ifnum\first=\bot\relax
+ \atthetop\top11\hss\atthetop\first21\relax
+ \else
+ \atthetop\top11\hss\atthetop\first11\hss\atthetop\bot11\relax
+ \fi
+ \fi}%
+ \wd2=\zeropoint\box2
+ \box0\relax}%
+ \egroup}
+
+\setvalue{synchronisatie\v!local}[#1]%
+ {\bgroup
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \def\blackrule{\hbox{\vrule\!!height.5em\!!width.5em}}%
+ %\gotodestination
+ % {}{##1}{\syncprefix:#1}{0}
+ % {\color[\locationcolor\@@bacolor]{\blackrule}}%
+ \gotobox %
+ {\color[\locationcolor\@@bacolor]{\blackrule}}%
+ [#1::\syncprefix:\synccounter]%
+ \egroup}
+
+\def\synchronizationbar[#1][#2]%
+ {\iflocation\ifsynchronisation
+ \bgroup
+ \setupsynchronizationbar
+ [\c!text=\getvalue{doc:des:#1},#2]%
+ \getvalue{synchronisatie\@@baalternative}[#1]%
+ \egroup
+ \fi\fi}
+
+% Dit is leuke toepassing van glue!
+
+\newbox\meterbox
+
+\newif\ifbarsymbol
+
+\def\doganaareenpagina#1#2#3% nog checken !
+ {\checkreferences % nodig ??
+ \iflocation
+ \ifnum#3=\realpageno
+ {#2}%
+ \else
+ \doifelsenothing{#1}
+ {\hbox{\gotorealpage{}{}{#3}
+ {#2}}}
+ {\hbox{\gotorealpage{}{}{#3}
+ {\dolocationattributes{#1}\c!style\c!color{#2}}}}%
+ \fi
+ \else
+ {#2}%
+ \fi}
+
+\presetlocalframed[\??ib]
+
+\def\interactionbara
+ {\iflocation
+ \bgroup
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \setupblackrules[\c!height=\v!max,\c!depth=\v!max]% maten ??
+ \!!widthb\@@ibwidth
+ \advance\!!widthb -2.75em\relax
+ \!!widtha\!!widthb
+ \divide\!!widtha \lastpage\relax
+ \bgroup
+ \advance\realpageno \minusone
+ \ifvoid\meterbox
+ \bgroup
+ \processaction
+ [\@@ibstep]
+ [ \v!small=>\dimen0=.25em\relax,
+ \v!medium=>\dimen0=.5em\relax,
+ \v!big=>\dimen0=1em\relax,
+ \s!unknown=>\dimen0=\!!widtha]%
+ \ifdim\!!widtha<\dimen0\relax
+ \!!counta\dimen0\relax
+ \!!countb\!!widtha
+ \divide\!!counta \!!countb
+ \else
+ \!!counta\@@ibstep\relax
+ \fi
+ \!!widtha=\!!counta\!!widtha
+ \setbox0\hbox{\blackrule[\c!width=\!!widtha]}%
+ \global\setbox\meterbox\hbox to \!!widthb
+ {\hss
+ % brrr
+ \for \teller=1 \to \lastpage \step \!!counta \do
+ {\gotorealpage{}{}{\teller}{\copy0}}%
+ \hss}%
+ \global\wd\meterbox\zeropoint
+ \egroup
+ \fi
+ \egroup
+ \noindent
+ \strut
+ \hbox to \@@ibwidth
+ {\dontcomplain
+ \setupblackrules[\c!width=1em]%
+ \doganaareenpagina\??ib\blackrule\firstpage
+ \hss
+ \color[middlegray]{\copy\meterbox}%
+ \hbox to \!!widthb
+ {\ifdim\!!widtha<1em\relax
+ \!!widtha=1em\relax
+ \fi
+ \setupblackrules[\c!width=\!!widtha]%
+ \ifnum\realpageno>\plusone
+ \!!counta\realpageno
+ \advance\!!counta -2\relax
+ \hskip\zeropoint\!!plus\!!counta \s!sp\relax % cm gives overflow
+ % or just: \hskip\zeropoint\!!plus\!!counta \relax % cm gives overflow
+ \doganaareenpagina\??ib\blackrule\prevpage
+ \fi
+ \color[\@@ibcontrastcolor]{\blackrule[\c!width=.5em]}%
+ \ifnum\realpageno<\lastpage\relax
+ \doganaareenpagina\??ib\blackrule\nextpage
+ \!!counta\lastpage
+ \advance\!!counta -\realpageno
+ \advance\!!counta \minusone
+ \hskip\zeropoint\!!plus\!!counta \s!sp\relax % cm gives overflow
+ % or just \hskip\zeropoint\!!plus\!!counta\relax % cm gives overflow
+ \fi}%
+ \hss
+ \doganaareenpagina\??ib\blackrule\lastpage}%
+ \egroup
+ \fi}
+
+\def\interactionbarb
+ {\ifnum\lastpage>\firstpage\relax
+ \interactionbuttons
+ [\v!firstpage,\v!previouspage,\v!nextpage,\v!lastpage]%
+ \fi}
+
+\def\interactionbarc
+ {\iflocation
+ \ifnum\lastpage>\plusone
+ \hbox to \@@ibwidth
+ {\setupblackrules[\c!height=\@@ibheight,\c!depth=\@@ibdepth]%
+ \def\gotox##1%
+ {\doganaareenpagina{}{\blackrule[\c!width=##1]}}%
+ \dimen0=\@@ibwidth\relax
+ \advance\dimen0 -4em
+ \!!counta\lastpage
+ \advance\!!counta \minusone
+ \divide\dimen0 \!!counta
+ \!!counta\realpageno
+ \advance\!!counta \minusone
+ \!!widtha\!!counta\dimen0
+ \!!countb\lastpage
+ \advance\!!countb -\realpageno
+ \!!widthb\!!countb\dimen0
+ \startcolor[\locationcolor\@@ibcolor]%
+ \gotox{1em}\firstpage
+ \hss
+ \gotox\!!widtha\prevpage
+ \color[\@@ibcontrastcolor]{\blackrule[\c!width=1em]}%
+ \gotox\!!widthb\nextpage
+ \hss
+ \gotox{1em}\lastpage
+ \stopcolor}%
+ \fi
+ \fi}
+
+\def\interactionbard
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>\plusone
+ \hbox
+ \bgroup
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \ifbarsymbol % beter: 3 chars assign en 3*box
+ \setupsymbolset[\@@iasymbolset]%
+ \setbox0\hbox{\symbol[\v!previous]}%
+ \setbox2\hbox{\symbol[\v!somewhere]}%
+ \setbox4\hbox{\symbol[\v!next]}%
+ \else
+ \setbox0\hbox
+ {\vrule
+ \!!height\@@ibheight
+ \!!depth\@@ibdepth
+ \!!width\@@ibwidth}%
+ \setbox2\copy0
+ \setbox4\copy0
+ \fi
+ \startcolor[\locationcolor\@@ibcolor]%
+ \for\teller=1\to\nofsubpages\step1\do % brr, \dostepwiserecurse
+ {\bgroup
+ \increment(\teller,\firstsubpage)\relax
+ \decrement\teller\relax
+ \ifnum\teller<\realpageno\relax
+ \gotorealpage{}{}{\teller}{\copy0}\relax
+ \else\ifnum\teller=\realpageno\relax
+ \color
+ [\@@ibcontrastcolor]
+ {\gotorealpage{}{}{\teller}{\copy2}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy4}\relax
+ \fi\fi
+ \egroup
+ \hskip\@@ibdistance}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactionbare% KAN WORDEN GECOMBINEERD MET D
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>\plusone
+ \bgroup
+ \!!widthb\@@ibdistance
+ \multiply\!!widthb \nofsubpages
+ \advance\!!widthb -\@@ibdistance % (n-1)
+ \!!widtha\@@ibwidth
+ \advance\!!widtha -\!!widthb
+ \divide\!!widtha \nofsubpages\relax
+ \ifdim\!!widtha<\@@ibdistance\relax
+ \interactionbarf
+ \else
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \noindent
+ \hbox to \@@ibwidth
+ \bgroup
+ \ifbarsymbol
+ \setupsymbolset[\@@iasymbolset]%
+ \setbox0\hbox{\symbol[\v!previous]}%
+ \setbox2\hbox{\symbol[\v!somewhere]}%
+ \setbox4\hbox{\symbol[\v!next]}%
+ \else
+ \setbox0\hbox
+ {\vrule
+ \!!height\@@ibheight
+ \!!depth\@@ibdepth
+ \!!width\!!widtha}%
+ \setbox2\copy0
+ \setbox4\copy0
+ \fi
+ \startcolor[\locationcolor\@@ibcolor]%
+ \for\teller=1\to\nofsubpages\step1\do
+ {\bgroup
+ \increment(\teller,\firstsubpage)\relax
+ \decrement\teller\relax
+ \ifnum\teller<\realpageno\relax
+ \gotorealpage{}{}{\teller}{\copy0}\relax
+ \else\ifnum\teller=\realpageno\relax
+ \color
+ [\@@ibcontrastcolor]
+ {\gotorealpage{}{}{\teller}{\copy2}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy4}\relax
+ \fi\fi
+ \egroup
+ \hss}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactionbarf% !! KAN WORDEN GECOMBINEERD MET D !!
+ {\iflocation\ifshowingsubpage
+ \ifnum\nofsubpages>\plusone
+ %\setupinteraction[\c!width=\!!zeropoint]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \noindent
+ \hbox to \@@ibwidth
+ \bgroup
+ \!!countb\zerocount
+ \loop
+ \advance\!!countb \plusone
+ \!!countc\nofsubpages
+ \divide\!!countc \!!countb
+ \advance\!!countc \plusone
+ \!!widthb\@@ibdistance
+ \multiply\!!widthb \!!countc
+ \advance\!!widthb -\@@ibdistance
+ \!!widtha\@@ibwidth
+ \advance\!!widtha -\!!widthb
+ \divide\!!widtha \!!countc
+ \ifdim\!!widtha<\@@ibdistance\relax
+ \repeat
+\advance\!!countc -2
+\!!widtha-\@@ibdistance
+\!!widtha=\!!countc\!!widtha
+\advance\!!widtha \@@ibwidth
+\advance\!!countc \plusone
+\divide\!!widtha \!!countc
+ \ifbarsymbol
+ \setupsymbolset[\@@iasymbolset]%
+ \setbox0\hbox{\symbol[\v!previous]}%
+ \setbox4\hbox{\symbol[\v!somewhere]}%
+ \setbox8\hbox{\symbol[\v!next]}%
+ \setbox2\copy4
+ \setbox6\copy4
+ \else
+ \setbox0\hbox
+ {\vrule
+ \!!height\@@ibheight
+ \!!depth\@@ibdepth
+ \!!width\!!widtha}%
+ \setbox4\copy0
+ \setbox8\copy0
+ \setbox2\hbox
+ {\vrule
+ \!!height.5\ht0
+ \!!depth.5\dp0
+ \!!width\!!widtha}%
+ \ht2\ht0
+ \dp2\dp0
+ \setbox6\copy2
+ \fi
+ \def\gotox##1%
+ {\ifnum\teller=\realpageno
+ \color
+ [\@@ibcontrastcolor]
+ {\gotorealpage{}{}{\teller}{\copy##1}}%
+ \else
+ \gotorealpage{}{}{\teller}{\copy##1}%
+ \fi
+ \!!countf\zerocount
+ \hss}%
+ \startcolor[\locationcolor\@@ibcolor]%
+ \!!countc\realpageno \advance\!!countc -2
+ \!!countd\realpageno \advance\!!countd 2
+ \!!countf\zerocount
+ \for\teller=\firstsubpage\to\lastsubpage\step1\do
+ {\!!doneafalse
+ \advance\!!countf \plusone
+ \ifnum\teller=\firstsubpage\relax \!!doneatrue \fi
+ \ifnum\teller=\lastsubpage\relax \!!doneatrue \fi
+ \ifnum\teller>\!!countc \ifnum\teller<\!!countd \!!doneatrue \fi\fi
+ \if!!donea
+ \ifnum\teller<\realpageno
+ \gotox0%
+ \else\ifnum\teller>\realpageno
+ \gotox4%
+ \else
+ \gotox8%
+ \fi\fi
+ \else\ifnum\!!countf=\!!countb
+ \ifnum\teller<\realpageno
+ \gotox2%
+ \else\ifnum\teller>\realpageno
+ \gotox6%
+ \else
+ \gotox4%
+ \fi\fi
+ \fi\fi}%
+ \unskip
+ \stopcolor
+ \egroup
+ \fi
+ \fi\fi}
+
+\def\interactionbarg
+ {\ifnum\lastsubpage>\firstsubpage\relax
+ \interactionbuttons
+ [\v!firstsubpage,\v!previoussubpage,\v!nextsubpage,\v!lastsubpage]%
+ \fi}
+
+\def\checkinteractionbar#1#2#3%
+ {\ifdim\@@ibwidth=\zeropoint\def\@@ibwidth{#1}\fi
+ \doifnothing\@@ibheight{\def\@@ibheight{#2}}%
+ \doifnothing\@@ibdepth{\def\@@ibdepth{#3}}}
+
+\def\complexinteractionbar[#1]%
+ {\doifelse{#1}\v!reset
+ {\global\setbox\meterbox\box\voidb@x}%
+ {\bgroup
+ \iflocation
+ \checksubpages % goes wrong / loads \numberofpages too
+ \getparameters[\??ib][#1]%
+ \doif\@@ibstate\v!start
+ {\startinteraction
+ \processaction % breedte defaults !
+ [\@@ibalternative]
+ [ c=>\checkinteractionbar{.5em}\v!max \v!max,
+ d=>\checkinteractionbar{.5em}{.5em} \!!zeropoint,
+ e=>\checkinteractionbar{.5em}{.5em} \!!zeropoint,
+ f=>\checkinteractionbar{.5em}{.5em} \!!zeropoint,
+ \s!default=>\checkinteractionbar{10em}\v!broad\!!zeropoint,
+ \s!unknown=>\checkinteractionbar{10em}\v!broad\!!zeropoint]%
+ \doifelse\@@ibsymbol\v!yes
+ \barsymboltrue\barsymbolfalse
+ \getvalue{interactionbar\@@ibalternative}%
+ \stopinteraction}%
+ \fi
+ \egroup}}
+
+\definecomplexorsimpleempty\interactionbar
+
+\def\setupinteractionbar
+ {\dodoubleargument\getparameters[\??ib]}
+
+% Er wordt vooralsnog uitgegaan van een symmetrische
+% start-stop situatie.
+
+\def\c!profiel!! {profiel:} % brrr
+\def\c!versie!! {versie:}
+
+\def\dodefineprofile[#1][#2]%
+ {\iflocation
+ \def\dododefineprofile##1%
+ {\def\dodododefineprofile####1%
+ {\doifdefinedelse{\c!profiel!!####1}%
+ {\edef\!!stringa{\getvalue{\c!profiel!!####1}}%
+ \setevalue{\c!profiel!!####1}{\!!stringa,##1}}%
+ {\setevalue{\c!profiel!!####1}{##1}}}%
+ \processcommalist[#2]\dodododefineprofile}%
+ \processcommalist[#1]\dododefineprofile
+ \fi}
+
+\def\defineprofile%
+ {\dodoubleargument\dodefineprofile}
+
+% Als met \getpar wordt gewerkt, dan moet \next worden toegepast.
+
+% TZT initialisatie!
+
+\def\profilepage{}
+
+\let\dosetprofilepage\relax
+\let\dogetprofilepage\relax
+
+\def\processprofile#1[#2]%
+ {\iflocation
+ \par % needed for pdftex
+ \bgroup
+ \dosetprofilepage
+ \dogetprofilepage
+ \def\processoneprofile##1##2%
+ {\ExpandBothAfter\doifinsetelse{##2}{\processedprofiles}%
+ {\doifsomething{##1}{(##1)}}%
+ {\addtocommalist{##2}\processedprofiles
+ ##1\relax
+ \ifcase#1\relax
+ \dobeginofprofile{##2}\paperwidth\paperheight\profilepage
+ \else
+ \doendofprofile
+ \fi}}%
+ \let\processedprofiles\empty
+ \def\doprocessprofile##1%
+ {\doifelse{\@@pfoption}{\v!test}%
+ {\goodbreak\blank\nobreak\tt[\space
+ \ifcase#1\v!start\else\v!stop\fi profiel\space ##1:\space
+ \doifdefinedelse{\c!profiel!!##1}%
+ {\def\dodoprocessprofile####1%
+ {\processoneprofile
+ {\goto{####1}[\c!profiel!!####1]}%
+ {####1}%
+ \space}%
+ \processcommacommand
+ [\getvalue{\c!profiel!!##1}]\dodoprocessprofile}%
+ {- }%
+ ]\nobreak\blank}%
+ {\doifdefined{\c!profiel!!##1}%
+ {\def\dodoprocessprofile####1%
+ {\processoneprofile{}{####1}}%
+ \processcommacommand
+ [\getvalue{\c!profiel!!##1}]\dodoprocessprofile}}}%
+ \processcommalist[#2]\doprocessprofile
+ \egroup
+ \par % needed for pdftex
+ \fi}
+
+\def\startprofile[#1]%
+ {\iflocation
+ \bgroup
+ \addtocommalist{#1}\actualprofile
+ \def\stopprofile%
+ {\processprofile1[#1]%
+ \egroup}%
+ \def\next{\processprofile0[#1]}% % \DoAfterFi \processprofile0[#1]%
+ \else % ^^^^^^^^^^ will be obsolete
+ \let\next\relax % since ugly and never used
+ \fi
+ \next}
+
+\let\stopprofile\relax
+
+\def\dofollowprofile#1[#2]%
+ {\iflocation
+ \hbox
+ {\dostartgoto
+ \data
+ {\dolocationattributes\??ia\c!style\c!color{#1\presetgoto}}%
+ \start
+ \dostartgotoprofile\buttonwidth\buttonheight{#2}%
+ \stop
+ \dostopgotoprofile
+ \dostopgoto}%
+ \else
+ {#1}%
+ \fi}
+
+\def\followprofile#1[#2]%
+ {\iflocation
+ \doif\@@pfoption\v!test{\pagereference[\c!profiel!!#2]}%
+ \dofollowprofile{#1}[#2]%
+ \fi}
+
+\def\setupprofiles%
+ {\dodoubleargument\getparameters[\??pf]}
+
+% Als er nog geen tekst op de pagina staat, dan heeft het
+% profiel betrekking op het bovenstaande, dus soms een vorige
+% pagina! Vreemd, omdat PDF paginagewijs werkt. Gelukkig
+% biedt /page een oplossing. Echter: expansie van een
+% \special kan niet worden uitgesteld, zodat alleen een
+% two-pass een oplossing vormt. Het onderstaande kan komen
+% te vervallen als Acrobat dit ondervangt. Het scheelt een
+% pass en een lijst.
+%
+% Er kunnen eventueel twee lijsten worden gebruikt. Een voor
+% het begin (start) en een voor het eind (stop). Nu staat
+% alles in een lijst.
+
+\definetwopasslist{\s!profile}
+
+\newcounter\currentprofile
+
+\def\dosetprofilepage%
+ {\doglobal\increment\currentprofile
+ \edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!profile}%
+ {\currentprofile}%
+ {\noexpand\realfolio}}}%
+ \docommando}
+
+\def\dogetprofilepage%
+ {\gettwopassdata{\s!profile}%
+ \let\profilepage=\twopassdata}
+
+\newcounter\versionlevel
+\newcounter\versionorder
+
+\newif\ifrecentversion
+
+\let\oldatcharacter=@
+
+\def\minimumversion{0}
+\def\actualversion{0}
+
+\def\dosetupversions[#1]%
+ {\getparameters[\??ve][#1]
+ \stripcharacter.\from\@@venumber\to\minimumversion
+ \setversion}
+
+\def\setupversions%
+ {\dosingleargument\dosetupversions}
+
+\definetwopasslist{\s!versionbegin}
+\definetwopasslist{\s!versionend}
+
+\def\actualprofile{}
+
+\def\doresetpageversion%
+ {\edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!versionend}%
+ {\versionorder}%
+ {\noexpand\realfolio}}}%
+ \docommando}
+
+\def\dosetpageversion#1%
+ {\recentversiontrue
+ \doglobal\increment\versionorder\relax
+ \edef\docommando%
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!versionbegin}%
+ {\versionorder}%
+ {\noexpand\realfolio}}}%
+ \docommando
+ \let\resetpageversion=\doresetpageversion}
+
+\def\recentcontributions{}
+
+\def\checkrecentcontributions%
+ {\gettwopassdata{\s!versionbegin}%
+ \iftwopassdatafound
+ \!!counta\twopassdata\relax
+ \gettwopassdata{\s!versionend}%
+ \iftwopassdatafound
+ \!!countb\twopassdata\relax
+ \doglobal\increment\versionorder\relax
+ \writeutilitycommand%
+ {\twopassentry%
+ {\s!versionbegin}%
+ {\versionorder}%
+ {\the\!!counta}}%
+ \writeutilitycommand%
+ {\twopassentry%
+ {\s!versionend}%
+ {\versionorder}%
+ {\the\!!countb}}%
+ \for\teller=\!!counta\to\!!countb\step1\do%
+ {\@EA\doglobal\@EA\addtocommalist\@EA{\teller}{\recentcontributions}}%
+ \let\next\checkrecentcontributions
+ \else
+ \let\next\relax
+ \fi
+ \else
+ \let\next\relax
+ \fi
+ \next}
+
+\def\docheckpageversion%
+ {\ExpandBothAfter\doifinsetelse{\realfolio}{\recentcontributions}
+ {\geselecteerdtrue}%
+ {\geselecteerdfalse}}
+
+\let\setpageversion = \gobbleoneargument
+\let\resetpageversion = \relax
+\let\checkpageversion = \relax
+
+\def\complexstartversion[#1]%
+ {\bgroup
+ \doifelsenothing\actualprofile
+ {\startprofile[#1]}%
+ {\startprofile[#1,\actualprofile]}%
+ \def\docomplexstartversie##1%
+ {\stripcharacter.\from##1\to\actualversion
+ \ifnum\versionlevel>\zerocount\relax
+ \ifnum\actualversion=\zerocount
+ \setpageversion\actualversion % unknown version
+ \else
+ \ifnum\actualversion<\minimumversion\relax
+ \relax % old version
+ \else
+ \setpageversion\actualversion % new version
+ \fi
+ \fi
+ \fi}%
+ \doglobal\increment\versionlevel\relax
+ \doifelsenothing{#1}
+ {\docomplexstartversie{0}}%
+ {\processcommalist[#1]\docomplexstartversie}}
+
+\definecomplexorsimpleempty\startversion
+
+\def\stopversion%
+ {\stopprofile
+ \doglobal\decrement\versionlevel
+ \ifnum\versionlevel<\zerocount
+ \showmessage\m!versions1\empty
+ \else
+ \resetpageversion
+ \egroup
+ \fi}
+
+\bgroup
+\catcode`@=\active
+\gdef\setversion%
+ {\catcode`@=\active % we can't use \@@active here
+ \long\def@##1##2 %
+ {\ifx##1+%
+ \startversion[##2]%
+ \else\ifx##1-%
+ \stopversion
+ \else
+ \oldatcharacter##1##2 %
+ \fi\fi}}
+\egroup
+
+\def\markversion
+ {\showmessage\m!versions2\empty
+ \let\setpageversion\dosetpageversion
+ \let\resetpageversion\relax
+ \let\checkpageversion\relax}
+
+\def\selectversion
+ {\checkrecentcontributions
+ \showmessage\m!versions3\recentcontributions
+ \let\setpageversio\gobbleoneargument
+ \let\resetpageversion\relax
+ \let\checkpageversion\docheckpageversion
+ \setversion}
+
+\def\dodefineversion[#1][#2]%
+ {\setvalue{\c!versie!!#1}{#2}%
+ \defineprofile[#1][#2]}
+
+\def\defineversion
+ {\dodoubleargument\dodefineversion}
+
+\def\followversion
+ {\followprofile}
+
+\def\followprofileversion#1[#2][#3]%
+ {\def\docommando##1%
+ {\defineprofile[#2#3][##1]}%
+ \processcommacommand[\getvalue{\c!versie!!#3}]\docommando
+ \followprofile#1[#2#3]}
+
+\newcounter\currentpagetransition
+
+\newif\ifrandomtransitions
+
+\def\setuppagetransitions%
+ {\dosingleempty\dosetuppagetransitions}
+
+\def\dosetuppagetransitions[#1]%
+ {\doifelsenothing{#1}
+ {\doifnot\@@scdelay\v!none
+ {\let\setpagetransition\setsomepagedelay}}
+ {\doifelse{#1}\v!start
+ {\doifnot\@@scdelay\v!none
+ {\let\setpagetransition\setsomepagedelay}}
+ {\doglobal\newcounter\currentpagetransition
+ \doifinsetelse{#1}{\v!reset,\v!stop}
+ {\let\setpagetransition\relax}
+ {\let\setpagetransition\setsomepagetransition
+ \doifinsetelse\v!random{#1}
+ {\randomtransitionstrue}{\randomtransitionsfalse}%
+ \edef\userpagetransitions{#1}%
+ \@EA\removefromcommalist\@EA{\v!random}\userpagetransitions
+ \ifx\userpagetransitions\empty
+ \let\userpagetransitions\pagetransitions
+ \fi}}}}
+
+\def\setsomepagedelay
+ {\expanded{\dosetpagetransition{0}{\@@scdelay}}}
+
+\def\setsomepagetransition
+ {\iflocation
+ \ifrandomtransitions
+ \expanded{\getcommalistsize[\userpagetransitions]}%
+ \getrandomnumber\currentpagetransition1\commalistsize
+ \else
+ \doglobal\increment\currentpagetransition
+ \fi
+ \expanded{\getfromcommalist[\userpagetransitions][\currentpagetransition]}%
+ \doifnumberelse\commalistelement
+ {\expanded{\getfromcommalist[\pagetransitions][\commalistelement]}}
+ {}%
+ \ifx\commalistelement\empty
+ \doglobal\newcounter\currentpagetransition
+ \setsomepagetransition
+ \else
+ \doifelse\@@scdelay\v!none
+ {\expanded{\dosetpagetransition{\commalistelement}{0}}}
+ {\expanded{\dosetpagetransition{\commalistelement}{\@@scdelay}}}%
+ \fi
+ \fi}
+
+\prependtoks \setpagetransition \to \everyshipout
+
+% temporary here
+
+%D \startbuffer
+%D \dorecurse{10}
+%D {\horizontalpositionbar
+%D \pos\recurselevel \min1 \max10
+%D \token\framed{\recurselevel}%
+%D \\}
+%D
+%D \hbox to 15em
+%D {\hss
+%D \dorecurse{10}
+%D {\verticalpositionbar\pos\recurselevel\min1\max10\token\blackrule\\
+%D \hss}}
+%D \stopbuffer
+
+\def\horizontalpositionbar\pos#1\min#2\max#3\token#4\\%
+ {\hbox to \hsize
+ {\hskip\zeropoint\!!plus #1\!!fill
+ \hskip\zeropoint\!!plus-#2\!!fill
+ #4\relax
+ \hskip\zeropoint\!!plus #3\!!fill
+ \hskip\zeropoint\!!plus-#1\!!fill}}
+
+\def\verticalpositionbar\pos#1\min#2\max#3\token#4\\%
+ {\vbox to \vsize
+ {\vskip\zeropoint\!!plus #1\!!fill
+ \vskip\zeropoint\!!plus-#2\!!fill
+ \hbox{#4}\relax
+ \vskip\zeropoint\!!plus #3\!!fill
+ \vskip\zeropoint\!!plus-#1\!!fill}}
+
+\def\horizontalgrowingbar\pos#1\min#2\max#3\height#4\depth#5\\%
+ {\hbox to \hsize
+ {\scratchcounter#1%
+ \advance\scratchcounter -#2%
+ \advance\scratchcounter \plusone
+ \leaders\vrule\hskip\zeropoint\!!plus \scratchcounter\!!fill
+ \vrule\!!width\zeropoint\!!height#4\!!depth#5%
+ \hskip\zeropoint\!!plus #3\!!fill
+ \hskip\zeropoint\!!plus-#1\!!fill}}
+
+\def\verticalgrowingbar\pos#1\min#2\max#3\width#4\\%
+ {\vbox to \vsize
+ {\scratchcounter#1%
+ \advance\scratchcounter -#2%
+ \advance\scratchcounter \plusone
+ \leaders\hrule\vskip\zeropoint\!!plus\scratchcounter\!!fill
+ \hrule\!!width#4\!!height\zeropoint\!!depth\zeropoint
+ \vskip\zeropoint\!!plus #3\!!fill
+ \vskip\zeropoint\!!plus-#1\!!fill}}
+
+\newbox\commentbox
+
+\def\doflushcommentanchors
+ {\let\next\relax % new
+ \processaction
+ [\@@cclocation]
+ [% \v!text=>\let\next\relax, % new
+ \v!inmargin=>\let\next\inmargin, % brr not the same as inleft|rightmargin
+ \v!leftedge=>\let\next\inleftedge,
+ \v!rightedge=>\let\next\inrightedge,
+ \v!leftmargin=>\let\next\inleftmargin,
+ \v!rightmargin=>\let\next\inrightmargin]%
+ \next{\hbox{\raise\strutht\box\commentbox}}}
+
+\def\flushcommentanchors % in everypar so indirect
+ {\ifvoid\commentbox\else \doflushcommentanchors \fi}
+
+\def\setupcomment
+ {\dodoubleargument\getparameters[\??cc]}
+
+\setvalue{\e!start\v!comment}% the dummy triple gobbles trailing spaces
+ {\dotripleempty\dostartcommentaar}
+
+\def\comment
+ {\dodoubleempty\docomment}
+
+\def\dodocomment#1%
+ {\!!widtha\@@ccwidth
+ \!!heighta\@@ccheight
+ \doifelse\@@ccoption\v!max
+ {\let\@@ccopen \!!plusone}{\let\@@ccopen \!!zerocount}%
+ \doifelse\@@ccoption\v!buffer
+ {\let\@@cccollect\!!plusone}{\let\@@cccollect\!!zerocount}%
+ \preparecommentvariables
+ \doinsertcomment
+ \@@cctitle\!!widtha\!!heighta
+ \@@cccolor\@@ccopen\@@ccsymbol
+ \@@cccollect{#1}}
+
+\def\preparecommentvariables % more will move here as with fields
+ {\let\@@DriverCommentLayer\@@cctextlayer}
+
+\def\dopreparecommentaar#1#2%
+ {\doifassignmentelse{#1}
+ {\getparameters[\??cc][#1]}
+ {\getparameters[\??cc][\c!title=#1,#2]}%
+ \obeylines
+ \doif\@@ccspace\v!yes\obeyspaces}
+
+\def\dostartcommentaar[#1][#2][#3]%
+ {\bgroup
+ \doifelse\@@ccstate\v!start
+ {\dopreparecommentaar{#1}{#2}%
+ \long\def\docommando##1%
+ {\global\setbox\commentbox\frozenhbox
+ {\hbox to \zeropoint
+ {\struttedbox{\tbox{\dodocomment{##1}}}\hss}%
+ \hskip\ifvoid\commentbox\@@ccmargin\else\@@ccdistance\fi
+ \box\commentbox}%
+ \egroup}}%
+ {\long\def\docommando##1%
+ {\egroup}}%
+ \grabuntil{\e!stop\v!comment}\docommando}
+
+\letvalue{\e!stop\v!comment}\relax % handy for \expanded{...}
+
+\def\docomment[#1][#2]#3%
+ {\doif\@@ccstate\v!start
+ {\hbox to \zeropoint
+ {\dopreparecommentaar{#1}{#2}%
+ \hskip-\@@ccmargin
+ \struttedbox{\tbox{\dodocomment{#3}}\hss}}}%
+ \ignorespaces}
+
+% \startcomment
+% hello beautiful\\world
+% \stopcomment
+%
+% \startcomment[hello]
+% hello << \'e\'erste >>
+% beautiful
+% world
+% \stopcomment
+%
+% \startcomment[hello][color=green,width=4cm,height=3cm]
+% hello \leftguillemot\ \'e\'erste \rightguillemot\
+% beautiful
+% world
+% \stopcommentaar
+%
+% \startcomment[hello][color=green,width=4cm,height=3cm]
+% hello \leftguillemot\ \'e\'erste \rightguillemot\ test
+%
+% beautiful
+%
+% world
+% \stopcomment
+%
+% \startcomment[symbol=Balloon]
+% Do we want this kind of rubish? And, why isn't this and
+% some more features related to text annotations so poorly
+% (actually not) documented? Anyhow, by providing this
+% functionality we demonstrate that \pdfTeX\ can do it. By
+% the way, it's funny that when in Acrobat we scale up the
+% text, the symbols scale down.
+% \stopcomment
+
+% \definesymbol [comment-normal][{\externalfigure[cow.pdf]}]
+% \definesymbol [comment-down] [{\externalfigure[cow.pdf]}]
+%
+% \def\CowSymbol#1#2%
+% {\scale
+% [\c!height=#1]
+% {\startMPcode
+% loadfigure "koe.mp" number 1 ;
+% refill currentpicture withcolor #2 ;
+% \stopMPcode}}
+%
+% \definesymbol [comment-normal]
+% [\CowSymbol{4ex}{red}]
+%
+% \definesymbol [comment-down]
+% [\CowSymbol{4ex}{green}]
+%
+% \setupcomment
+% [\c!symbol={comment-normal,comment-down},
+% \c!option=\v!buffer]
+%
+% \setupfootertexts[\placecomments]
+
+\def\placecomments
+ {\doflushcomments}
+
+% \setupinteraction[state=start]
+%
+% \useattachment[test.tex]
+% \useattachment[whatever][test.tex]
+% \useattachment[whatever][newname][test.tex]
+% \useattachment[whatever][title][newname][test.tex]
+%
+% % \setupattachments[\c!symbol={symbol-normal,symbol-down}]
+%
+% \starttext \attachment[whatever] \stoptext
+
+\definesystemvariable{at}
+
+\def\useattachment
+ {\doquadrupleempty\douseattachment}
+
+\def\douseattachment[#1][#2][#3][#4]% tag title newname filename
+ {\iffourthargument
+ \setgvalue{\??at:#1}{{#2}{#3}{#4}}% tooltip kind of case
+ \else\ifthirdargument
+ \setgvalue{\??at:#1}{{#2}{#2}{#3}}% full path case
+ \else\ifsecondargument
+ \setgvalue{\??at:#1}{{#2}{#2}{#2}}% obvious case
+ \else
+ \setgvalue{\??at:#1}{{#1}{#1}{#1}}% worst case
+ \fi\fi\fi}
+
+\let\attachmenttitle\empty
+\let\attachmentname \empty
+\let\attachmentfile \empty
+
+\def\getattachmentdata[#1]%
+ {\edef\attachmenttitle{\filterfromvalue{\??at:#1}31}% description
+ \edef\attachmentname {\filterfromvalue{\??at:#1}32}% new name
+ \edef\attachmentfile {\filterfromvalue{\??at:#1}33}% original
+ \expandafter\splitstring\attachmentname\at.\to\!!stringa\and\!!stringb
+ \ifx\!!stringb\empty % no suffix, so we need to inherit it
+ \expandafter\splitstring\attachmentfile\at.\to\!!stringc\and\!!stringd
+ \edef\attachmentname{\attachmentname.\!!stringd}%
+ \fi}
+
+\def\attachment
+ {\dodoubleempty\doattachment}
+
+\def\doattachment[#1][#2]% currently title equals newname
+ {\iflocation
+ \ifsecondargument
+ \doifundefined{\??at:#2}
+ {\showmessage\m!interactions6{#2}%
+ \useattachment[#2]}%
+ \doif\@@atstate\v!start
+ {\bgroup
+ \getattachmentdata[#2]%
+ \doiffileelse\attachmentfile
+ {\setupattachments[#1]%
+ \presetattachmentvariables
+\struttedbox{\tbox{%
+ \doattachfile
+ \attachmenttitle
+ {1em}\strutheight\strutdepth\@@atcolor\@@atsymbol
+ \attachmentname
+ \attachmentfile}%
+}}%
+ {\showmessage\m!interactions5\attachmentfile}%
+ \egroup}%
+ \else\iffirstargument
+ \attachment[][#1]%
+ \fi\fi
+ \fi}
+
+\def\presetattachmentvariables
+ {\let\@@DriverAttachmentLayer\@@attextlayer}
+
+\def\setupattachments
+ {\dodoubleempty\getparameters[\??at]}
+
+\setupattachments
+ [\c!state=\v!start,
+ \c!color=\@@iacolor,
+ \c!textlayer=,
+ \c!symbol=]
+
+% jammer, tussen/midden had erin gemoeten; \c!commando toevoegen
+
+\def\registermenucommand#1%
+ {{\textonly\noindent#1\space}} % no math switching
+
+\def\doregistermenubuttons[#1][#2]% [menu id] [register]
+ {\bgroup
+ \ifsecondargument
+ \setupinteractionmenu
+ [#1][\c!unknownreference=\v!yes,\c!samepage=\v!yes]%
+ \def\docommando##1%
+ {\registermenucommand{\menubutton[#1]{##1}[#2:##1]}}%
+ \else
+ \def\docommando##1%
+ {\registermenucommand
+ {\button
+ [\c!unknownreference=\v!yes,\c!samepage=\v!yes]
+ {##1}[#1:##1]}}%
+ \fi
+ \handletokens abcdefghijklmnopqrstuvwxyz\with\docommando % moet anders
+ \egroup}
+
+\def\registermenubuttons
+ {\dodoubleempty\doregistermenubuttons}
+
+\stelkoppelingenin
+ [\c!distance=.25em,
+ \c!width=\v!fit,
+ \c!location=\v!low,
+ \c!color=\@@iacolor,
+ \c!frame=\v!off,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=]
+
+\defineinteractionmenu
+ [\v!right]
+ [\v!right]
+ [\c!before=,
+ \c!after=\vfil,
+ \c!inbetween=\blank,
+ \c!distance=\bodyfontsize, % 12pt
+ \c!left=\hss,
+ \c!right=\hss,
+ \c!width=\rightedgewidth,
+ \c!height=\v!broad]
+
+\defineinteractionmenu
+ [\v!left]
+ [\v!left]
+ [\c!before=,
+ \c!after=\vfil,
+ \c!inbetween=\blank,
+ \c!distance=\bodyfontsize, % 12pt
+ \c!left=\hss,
+ \c!right=\hss,
+ \c!width=\leftedgewidth,
+ \c!height=\v!broad]
+
+\defineinteractionmenu
+ [\v!bottom]
+ [\v!bottom]
+ [\c!before=\vss,
+ \c!after=\vss,
+ \c!middle=\hfil,
+ \c!distance=\bodyfontsize, % 12pt
+ \c!width=\v!fit,
+ \c!height=\v!broad]
+
+\defineinteractionmenu
+ [\v!top]
+ [\v!top]
+ [\c!before=\vss,
+ \c!after=\vss,
+ \c!middle=\hfil,
+ \c!distance=\bodyfontsize, % 12pt
+ \c!width=\v!fit,
+ \c!height=\v!broad]
+
+\setupinteractionmenu
+ [\v!left,\v!right,\v!top,\v!bottom]
+ [\c!offset=.25em,
+ \c!position=\v!no,
+ \c!frame=\v!on,
+ \c!background=,
+ \c!backgroundcolor=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!style=\@@iastyle,
+ \c!color=\@@iacolor,
+ \c!contrastcolor=\@@iacontrastcolor,
+ \c!state=\v!start,
+ \c!samepage=\v!yes,
+ \c!unknownreference=\v!empty,
+ \c!topoffset=\!!zeropoint,
+ \c!bottomoffset=\!!zeropoint,
+ \c!leftoffset=\!!zeropoint,
+ \c!rightoffset=\!!zeropoint]
+
+\def\placeleftedgetextblock % Is \hss/\hsize really needed here?
+ {\hbox to \leftedgewidth % (check outer level and settings)
+ {\hsize\leftedgewidth
+ \hss
+ \interactionmenus[\v!left]}}
+
+\def\placerightedgetextblock % Is \hss/\hsize really needed here?
+ {\hbox to \rightedgewidth % (check outer level and settings)
+ {\hsize\rightedgewidth
+ \interactionmenus[\v!right]%
+ \hss}}
+
+\def\placetoptextblock
+ {\vbox to \topheight
+ {\vsize\topheight
+% \getvalue{\??tk\v!boven\v!tekst\c!voor}
+ \getvalue{\??tk\v!top\c!before}
+ \interactionmenus[\v!top]
+% \getvalue{\??tk\v!boven\v!tekst\c!na}
+ \getvalue{\??tk\v!top\c!after}
+ \kern\zeropoint}}
+
+\def\placebottomtextblock
+ {\vbox to \bottomheight
+ {\vsize\bottomheight
+% \getvalue{\??tk\v!onder\v!tekst\c!voor}
+ \getvalue{\??tk\v!bottom\c!before}
+ \interactionmenus[\v!bottom]
+% \getvalue{\??tk\v!onder\v!tekst\c!na}
+ \getvalue{\??tk\v!bottom\c!after}
+ \kern\zeropoint}}
+
+\ifx\leftedgetextcontent\undefined \else
+
+ \appendtoks \placeleftedgetextblock \hskip-\leftedgewidth \to \leftedgetextcontent
+ \appendtoks \placerightedgetextblock \hskip-\rightedgewidth \to \rightedgetextcontent
+ \appendtoks \placetoptextblock \vskip-\topheight \to \toptextcontent
+ \appendtoks \placebottomtextblock \vskip-\bottomheight \to \bottomtextcontent
+
+\fi
+
+\setupinteractionscreen
+ [\c!width=\printpaperwidth,
+ \c!height=\printpaperheight,
+ \c!horoffset=\!!zeropoint,
+ \c!veroffset=\!!zeropoint,
+ \c!backspace=\backspace,
+ \c!topspace=\topspace,
+ \c!option=\v!min,
+ \c!delay=\v!none]
+
+\setupbuttons
+ [\c!state=\v!start,
+ \c!width=\v!fit,
+ \c!height=\v!broad,
+ \c!offset=0.25em,
+ \c!frame=\v!on,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=,
+ \c!style=\@@iastyle,
+ \c!color=\@@iacolor,
+ \c!contrastcolor=\@@iacontrastcolor,
+ \c!samepage=\v!yes,
+ \c!unknownreference=\v!yes]
+
+\setupinteractionbar
+ [\c!state=\v!start,
+ \c!alternative=a,
+ \c!symbol=\v!no,
+ \c!width=\rightedgewidth,
+ \c!height=, % these are taken care
+ \c!depth=, % of at calling time
+ \c!distance=.5em, % beter relateren aan breedte
+ \c!step=1,
+ \c!color=\@@iacolor,
+ \c!contrastcolor=\@@iacontrastcolor,
+ \c!frame=\v!on,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=,
+ \c!samepage=\v!yes,
+ \c!unknownreference=\v!yes]
+
+\setupsynchronizationbar
+ [\c!alternative=\v!page,
+ \c!width=\rightedgewidth,
+ \c!style=\@@iastyle,
+ \c!color=\@@iacolor,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=]
+
+\setupsynchronization
+ [\c!state=\v!stop]
+
+\setupprofiles
+ [\c!option=]
+
+\setuppagetransitions
+ [\v!reset]
+
+\setupcomment
+ [\c!state=\v!start,
+ \c!margin=2.5em,
+ \c!distance=1em,
+ \c!width=.3\textwidth,
+ \c!height=.2\textheight,
+ \c!color=\@@iacolor,
+ \c!title=,
+ \c!space=\v!no,
+ \c!symbol=\v!normal,
+ \c!location=\v!inmargin,
+ \c!option=,
+ \c!textlayer=]
+
+\setupversions % beware, @ is made active here,
+ [\c!number=1, % therefore we set this one at the end
+ \c!style=\ss,
+ \c!color=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-itm.tex b/Master/texmf-dist/tex/context/base/core-itm.tex
new file mode 100644
index 00000000000..976daf129c6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-itm.tex
@@ -0,0 +1,928 @@
+%D \module
+%D [ file=core-itm, % updated
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=itemgroups,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% new: text + lefttext=(,righttext=)
+% start=
+
+\writestatus{loading}{Context Core Macros / Itemgroups}
+
+\startmessages dutch library: layouts
+ 9: momenteel maximaal -- niveaus in opsommingen
+\stopmessages
+
+\startmessages english library: layouts
+ 9: currently no more than -- levels in itemizations
+\stopmessages
+
+\startmessages german library: layouts
+ 9: z.Z. nicht mehr als -- Niveaus in Posten
+\stopmessages
+
+\startmessages czech library: layouts
+ 9: aktualne ne vice nez -- urovne/urovni vyctu
+\stopmessages
+
+\startmessages italian library: layouts
+ 9: attualmente non più di -- livelli di elencazione
+\stopmessages
+
+\startmessages norwegian library: layouts
+ 9: for øyeblikket maksimalt -- nivåer i opplisting
+\stopmessages
+
+\startmessages romanian library: layouts
+ 9: acum nu se supota mai mult de -- nivele de adancime la iteratii
+\stopmessages
+
+\unprotect
+
+% - instellingen in macro
+% - [0] voor start op 0
+% - start=2
+
+\newif\ifsubitem \subitemfalse
+\newif\ifsymbolitem \symbolitemfalse
+\newif\ifheaditem \headitemfalse
+\newif\ifitemintro \itemintrofalse
+\newif\ifautoitemintro \autoitemintrofalse
+\newif\ifoptimizeitems \optimizeitemstrue
+\newif\ifpackeditems \packeditemsfalse
+\newif\iffirstlist \firstlistfalse
+\newif\ifparagraphitems \paragraphitemsfalse
+\newif\iftextitems \textitemsfalse
+
+\newcounter\noflists
+\newcounter\itemlevel
+\newcounter\itemcolumndepth
+\newcounter\maxitemlevel
+
+\definetwopasslist\s!list
+
+\let\currentitemgroup\empty
+
+\def\unknownitemreference{0} \let\itemreferences\unknownitemreference
+
+% #1=level #2=parameter
+
+\def\getitemparameter #1#2{\csname\??op\currentitemgroup#1#2\endcsname}
+\def\setitemparameter #1#2{\@EA\def\csname\??op\currentitemgroup#1#2\endcsname}
+\def\letitemparameter #1#2{\@EA\let\csname\??op\currentitemgroup#1#2\endcsname}
+
+\def\doitemattributes #1{\doattributes{\??op\currentitemgroup#1}}
+
+\def\@@globalitemsymbol #1{\??op\currentitemgroup\c!symbol\s!global#1}
+\def\@@localitemsymbol #1{\??op\currentitemgroup\c!symbol\s!local #1}
+\def\@@currentitemsymbol#1{\??op\currentitemgroup\c!symbol #1}
+
+\def\@@itemcounter{\s!itemcount\currentitemgroup}
+
+% \def\doitembreak#1{\iftextitems\else\dosomebreak#1\fi}
+%
+% s-pre-61 / pre-dis, test extensively, 2004/5
+
+\def\doitembreak#1{\ifoptimizeitems\iftextitems\else\dosomebreak#1\fi\fi}
+
+\def\dolistreference
+ {\immediatewriteutilitycommand
+ {\twopassentry
+ {\s!list}%
+ {\currentlist}%
+ {\currentlist:\noflistelements}}}
+
+\def\initializeitemgroupslevel#1%
+ {\ifundefined{\@@globalitemsymbol{#1}}%
+ \edef\itemreferences{\itemreferences,#1}%
+ \makecounter{\@@itemcounter#1}%
+ \setevalue{\@@globalitemsymbol{#1}}{#1}%
+ \fi}
+
+\def\initializeitemgrouplevel#1% safeguard
+ {\ifundefined{\??op\currentitemgroup#1\c!width}%
+ \doinitializeitemgrouplevel{#1}%
+ \fi}
+
+\def\doinitializeitemgrouplevel#1%
+ {\copyparameters
+ [\??op\currentitemgroup#1][\??oo]
+ [\c!width,\c!factor,\c!distance,\c!align,\c!option,
+ \c!style,\c!marstyle,\c!symstyle,\c!headstyle,
+ \c!color,\c!marcolor,\c!symcolor,\c!headcolor,
+ \c!beforehead,\c!afterhead,\c!before,\c!inbetween,\c!after,
+ \c!stopper,\c!placestopper,\c!indenting,
+ \c!n,\c!inner,\c!symbol,\c!margin,\c!items,
+ \c!leftmargin,\c!rightmargin,
+ \c!start,\c!lefttext,\c!righttext]}
+
+\def\setupitemgroups
+ {\dosingleargument\dosetupitemgroups}
+
+\def\dosetupitemgroups[#1]% still undocumented
+ {\getparameters[\??oo][\c!levels=4,#1]%
+ % will change (remove)
+ \ifnum\@@oolevels>\maxitemlevel
+ \edef\maxitemlevel{\@@oolevels}%
+ \dorecurse\maxitemlevel{\initializeitemgroupslevel\recurselevel}%
+ \fi}
+
+\def\doitemreference#1,#2,#3\\%
+ {\ifnum\itemlevel>#1\relax
+ \ifnum#1>\zerocount \tempsymbol \fi
+ \getvalue{\@@currentitemsymbol{#2}}%
+ \doitemreference#2,#3\\%
+ \fi}
+
+\def\itemreference
+ {\expandafter\doitemreference\itemreferences,,\\}
+
+\def\packitems
+ {\ifcase\itemlevel \else \packeditemstrue \fi}
+
+\def\dosetupitemgroupvariable[#1]% [#2]% niveau instellingen
+ {\doifelsenothing{#1}
+ {\getparameters[\??op\currentitemgroup\itemlevel]}% [#2]}%
+ {\getparameters[\??op\currentitemgroup#1]}}% [#2]}}
+
+\newconditional\inlinelistitem \setfalse\inlinelistitem
+
+\def\dododosetupitemgroupconstant[#1][#2#3#4]% * permits [2]
+ {\processaction
+ [#2#3#4]
+ [ \v!packed*=>\packitems,
+ \v!intro*=>\itemintrotrue,
+ \v!autointro*=>\autoitemintrotrue,
+ \v!broad*=>\setitemparameter{#1}\c!factor{1},
+ #2#3*\v!broad*=>\setitemparameter{#1}\c!factor{#2#3},
+ #2*\v!broad*=>\setitemparameter{#1}\c!factor{#2},
+ \v!text*=>\textitemstrue
+ \settrue\inlinelistitem
+ \dosetuppackeditemgroup{#1}%
+ \packitems,
+ \v!columns*=>\packitems,
+ \v!margin*=>\setitemparameter{#1}\c!width{-2em}, % signal
+ \v!inmargin*=>\setitemparameter{#1}\c!width{-2em}, % signal
+ \v!atmargin*=>\doifnot{#1}{1}{\setitemparameter{#1}\c!width{0em}}, % signal
+ \v!intext*=>\settrue\inlinelistitem, % new
+ \v!loose*=>\optimizeitemsfalse,
+ \v!paragraph*=>\paragraphitemstrue
+ \packitems,
+ \v!joinedup*=>\dosetuppackeditemgroup{#1}%
+ \packitems,
+ \v!serried*=>\setitemparameter{#1}\c!factor{-1},
+ #2#3*\v!serried*=>\setitemparameter{#1}\c!factor{-#2#3},
+ #2*\v!serried*=>\setitemparameter{#1}\c!factor{-#2},
+ \v!stopper*=>\setitemparameter{#1}\c!placestopper\v!yes,
+ \v!unpacked*=>\packeditemsfalse,
+ \v!repeat*=>\settrue\repeatlistitem, % new
+ \v!standard*=>\dosetupstandarditemgroup{#1}]}
+
+\def\dosetupstandarditemgroup#1%
+ {\getparameters
+ [\??op\currentitemgroup#1]
+ [\c!width=1.5em,
+ \c!factor=0,
+ \c!distance=.5em,
+ \c!beforehead=,
+ \c!afterhead=\blank,
+ \c!before=\blank,
+ \c!inbetween=\blank,
+ \c!after=\blank,
+ \c!inner=]}
+
+\def\dosetuppackeditemgroup#1%
+ {\letitemparameter{#1}\c!beforehead\empty
+ \letitemparameter{#1}\c!afterhead \empty
+ \letitemparameter{#1}\c!before \empty
+ \letitemparameter{#1}\c!after \empty
+ \letitemparameter{#1}\c!inbetween \empty}
+
+% \def\dosetupitemgroupconstant[#1][#2]%
+% {\def\dodosetupitemgroupconstant##1%
+% {\dododosetupitemgroupconstant[#1][##1*]}%
+% \processcommacommand[#2]\dodosetupitemgroupconstant} % expansion of #2 is handy for xml
+
+\def\dosetupitemgroupconstant[#1][#2]%
+ {\def\dodosetupitemgroupconstant##1% catches empty in [a,b,] handy for xml
+ {\doifsomething{##1}{\dododosetupitemgroupconstant[#1][##1*]}}%
+ \processcommacommand[#2]\dodosetupitemgroupconstant} % expansion of #2 is handy for xml
+
+%\def\dododododosetupitemgroup[#1][#2]%
+% {\doifassignmentelse{#2}
+% {\dosetupitemgroupvariable[#1][#2]}
+% {\setitemparameter{#1}\empty{\dosetupitemgroupconstant[#1][#2]}}}%
+
+\def\dododododosetupitemgroup[#1][#2]%
+ {\doifassignmentelse{#2}%
+ {\dosetupitemgroupvariable[#1][#2]}%
+ {\setitemparameter{#1}\c!option{#2}}}%
+
+\def\dodododosetupitemgroup[#1][#2]%
+ {\ConvertToConstant\doifnot{#2}{}
+ {\doifelse{#1}\v!each
+ {\dorecurse\maxitemlevel{\ExpandFirstAfter\dododododosetupitemgroup[\recurselevel][#2]}}
+ {\ExpandFirstAfter\dododododosetupitemgroup[#1][#2]}}}
+
+\def\dododosetupitemgroup[#1][#2]%
+ {\ConvertToConstant\doifelse{#2}{}
+ {\ifcase\itemlevel\relax
+ \dodododosetupitemgroup[\v!each][#1]%
+ \else
+ \dodododosetupitemgroup[\itemlevel][#1]%
+ \fi}
+ {\doifelsenothing{#1}
+ {\dodododosetupitemgroup[\itemlevel][#2]}
+ {\dodododosetupitemgroup[#1][#2]}}}
+
+\def\dodosetupitemgroup[#1][#2][#3][#4]%
+ {\pushmacro\currentitemgroup
+ \def\currentitemgroup{#1}%
+ \dododosetupitemgroup[#2][#3]%
+ \ConvertToConstant\doifnot{#4}{} % anders wordt #2 overruled
+ {\dododosetupitemgroup[#2][#4]}%
+ \popmacro\currentitemgroup}
+
+\def\dosetupitemgroup[#1][#2][#3][#4]%
+ {\def\docommando##1{\dodosetupitemgroup[##1][#2][#3][#4]}%
+ \processcommalist[#1]\docommando}
+
+\def\setupitemgroup
+ {\doquadrupleempty\dosetupitemgroup}
+
+\def\doadvanceitem
+ {\ifsubitem\else\ifsymbolitem\else
+ \pluscounter{\@@itemcounter\itemlevel}%
+ \fi\fi}
+
+% \def\setitemlevel#1%
+% {\ifnum\itemlevel>0\relax
+% \firstlisttrue
+% \doifnotinset\v!verder{#1}
+% {\resetcounter{\@@itemcounter\itemlevel}}%
+% \def\tempnumber%
+% {\countervalue{\@@itemcounter\itemlevel}}%
+% \doifelse{\getitemparameter\itemlevel\c!plaatsafsluiter}\v!ja
+% {\def\tempsymbol{\getitemparameter\itemlevel\c!afsluiter}}
+% {\let\tempsymbol\empty}%
+% \fi}
+
+\def\setitemlevel#1%
+ {\ifnum\itemlevel>\zerocount
+ \firstlisttrue
+ \doifnotinset\v!continue{#1}
+ {\doifinset{0}{#1}{\setitemparameter\itemlevel\c!start{0}}%
+ \doifsomething{\getitemparameter\itemlevel\c!start}
+ {\setcounter{\@@itemcounter\itemlevel}{\getitemparameter\itemlevel\c!start}%
+ \minuscounter{\@@itemcounter\itemlevel}%
+ \letitemparameter\itemlevel\c!start\empty}}%
+ \def\tempnumber
+ {\countervalue{\@@itemcounter\itemlevel}}%
+ \doifelse{\getitemparameter\itemlevel\c!placestopper}\v!yes
+ {\def\tempsymbol{\getitemparameter\itemlevel\c!stopper}}
+ {\let\tempsymbol\empty}%
+ \fi}
+
+% PAS OP: ook 'opelkaar' en zo worden getest, nog eens afvangen!
+
+\def\unknownitemsymbol{?}
+
+\def\setitemmark#1% % en pas op: resets \docommando
+ {\doifsymboldefinedelse{#1}
+ {\edef\currentitemsymbol{#1}%
+ \setxvalue{\@@globalitemsymbol\itemlevel}{\currentitemsymbol}%
+ \setgvalue{\@@localitemsymbol \itemlevel}{\unknownitemsymbol}%
+ \def\listitem{\symbol[\currentitemsymbol]}%
+ \let\@@opsymbol\empty}% \let\docommando\gobbleoneargument}
+ {\doifconversiondefinedelse{#1}
+ {\edef\currentitemsymbol{#1}%
+ \setxvalue{\@@globalitemsymbol\itemlevel}{\currentitemsymbol}%
+ \setgvalue{\@@localitemsymbol \itemlevel}%
+ {\convertnumber{\currentitemsymbol}{\countervalue{\@@itemcounter\itemlevel}}}%
+ \iftextitems
+ \doifsomething{\getitemparameter\itemlevel\c!lefttext}
+ {\let\tempsymbol\empty}%
+ \fi
+ \def\listitem
+ {\getitemparameter\itemlevel
+ {\iftextitems\c!lefttext\else\c!left\fi}%
+ \getvalue{\@@localitemsymbol\itemlevel}\tempsymbol
+ \getitemparameter\itemlevel
+ {\iftextitems\c!righttext\else\c!right\fi}}%
+ \let\@@opsymbol\empty}%\let\docommando\gobbleoneargument}
+ {}}}
+
+\def\calculatelistwidth#1#2% distance deals with 'broad'
+ {#2=\getitemparameter{#1}\c!distance\relax
+ \ifnum\getitemparameter{#1}\c!factor>\zerocount
+ \ifdim#2=\zeropoint #2=.5em\fi
+ \fi
+ \multiply#2 \getitemparameter{#1}\c!factor
+ \advance #2 \getitemparameter{#1}\c!width\relax}
+
+% The next conditionals deal with \item \startitemgroup. It
+% looks like a hack to skip back, but that way we preserve
+% the indentation and bullet placement. It's a rather
+% untested feature.
+
+\newconditional\concatnextitem \setfalse\concatnextitem
+\newconditional\autoconcatnextitem \settrue \autoconcatnextitem
+\newsignal \itemsignal
+
+\def\startitemgroup
+ {\dotripleempty\dostartitemgroup}
+
+\def\dostartitemgroup[#1][#2][#3]%
+ {\bgroup
+ \def\currentitemgroup{#1}%
+ \ifthirdargument
+ \dodostartitemgroup[#2][#3]%
+ \else
+ \doifassignmentelse{#2}
+ {\dodostartitemgroup[][#2]}
+ {\dodostartitemgroup[#2][]}%
+ \fi}
+
+\def\dodostartitemgroup[#1]% [#2]%
+ {\relax % prevents lookahead
+ \ifnum\itemlevel=\maxitemlevel\relax
+ \showmessage\m!layouts9\maxitemlevel
+ \let\itemincrement\zerocount
+ \else
+ \let\itemincrement\plusone
+ \fi
+ \doglobal\increment(\itemlevel,\itemincrement)%
+ \initializeitemgrouplevel\itemlevel % safeguard
+ \edef\itemgroupoptions{\getitemparameter\itemlevel\c!option}%
+ \ifx\itemgroupoptions\empty
+ \edef\itemgroupoptions{#1}%
+ \else
+ \doifsomething{#1}{\edef\itemgroupoptions{\itemgroupoptions,#1}}%
+ \fi
+ \expanded{\redostartitemgroup[\itemgroupoptions]}}% [#2]
+
+\def\redostartitemgroup[#1][#2]%
+ {\setfalse\inlinelistitem % new, no indent (leftskip)
+ \setfalse\concatnextitem % new, concat
+ \ifhmode
+ \ifconditional\autoconcatnextitem % new, concat
+ \ifdim\lastskip=\itemsignal % new, concat
+ \settrue\concatnextitem % new, concat
+ \fi % new, concat
+ \fi % new, concat
+ \iftextitems\else\doifnotinset\v!text{#1}\par\fi % suboptimal
+ \fi
+ \begingroup
+ \ifnum\itemlevel=\plusone % NIEUW
+ \doadaptleftskip {\getitemparameter1\c!margin}%
+ \doadaptleftskip {\getitemparameter1\c!leftmargin}%
+ \doadaptrightskip{\getitemparameter1\c!rightmargin}%
+ \fi
+ \dosetraggedcommand{\getitemparameter\itemlevel\c!align}\raggedcommand
+ \doifsomething{\getitemparameter\itemlevel\c!indenting}
+ {% is \expanded needed?
+ \expanded{\setupindenting[\getitemparameter\itemlevel\c!indenting]}}%
+ \doifinset\v!columns{#1}%
+ {\ifinsidecolumns\else\ifnum\itemcolumndepth=\zerocount
+ \globallet\itemcolumndepth\itemlevel
+ \getitemparameter\itemlevel\c!before
+ \processfirstactioninset
+ [#1]
+ [ \v!one=>\!!counta1\relax,
+ \v!two=>\!!counta2\relax,
+ \v!three=>\!!counta3\relax,
+ \v!four=>\!!counta4\relax,
+ \v!five=>\!!counta5\relax,
+ \s!unknown=>\@EA\!!counta\getitemparameter\itemlevel\c!n]%
+ % new
+% now handled in column routines
+% \edef\columneditemleftskip{\the\leftskip}%
+% \def\postprocesscolumnbox##1%
+% {\scratchdimen\columneditemleftskip
+% \divide\scratchdimen \nofcolumns
+% \hbox{\hskip\columneditemleftskip\hbox{\box##1}}}%
+% \scratchdimen-\columneditemleftskip
+% \multiply\scratchdimen \nofcolumns
+% \advance\scratchdimen \columneditemleftskip
+% \advance\scratchdimen \hsize
+% \edef\columntextwidth{\the\scratchdimen}%
+% \leftskip\zeropoint
+ % so far
+ \startcolumns
+ [\c!n=\!!counta, % netter \??op\itemlevel\c!n
+ \c!height=,
+ \c!rule=\v!off,
+ \c!balance=\v!yes,
+ \c!align=\v!no]%
+ \fi\fi}%
+ \doifinsetelse\v!intro{#1}\itemintrotrue\itemintrofalse
+ \doglobal\increment\noflists
+ \let\currentlist\noflists
+ \newcounter\noflistelements
+ \headitemfalse
+ \subitemfalse
+ \symbolitemfalse
+ \let\marsymbol\relax
+ \globallet\somdestination\empty
+ \let\symsymbol\empty
+ \the\itemgroupcommands
+ \setitemlevel{#1}%
+ %\getitemparameter\itemlevel\empty
+ \let\listitem\empty % ** start value
+ \doifelsenothing{#1} % iffirstargument
+ {\edef\@@opsymbol{\getitemparameter\itemlevel\c!symbol}%
+ \letgvalueempty{\@@globalitemsymbol\itemlevel}%
+ \global\letitemparameter\itemlevel\v!continue\empty
+ % \setitemmark\@@opsymbol % ** default value
+ \dosetupitemgroupvariable[\itemlevel][#2]}
+ {\dosetupitemgroupconstant[\itemlevel][#1]%
+ \dosetupitemgroupvariable[\itemlevel][#2]%
+ \doifinsetelse\v!continue{#1}% \noexpand, else problems in non-etex with chinese
+ {\edef\@@opsymbol{\noexpand\getvalue{\@@globalitemsymbol\itemlevel}}%
+ \getitemparameter\itemlevel\v!continue}
+ {\edef\@@opsymbol{\noexpand\getitemparameter{\itemlevel}{\c!symbol}}%
+ \global\setitemparameter\itemlevel\v!continue
+ {\dosetupitemgroupconstant[\itemlevel][#1]%
+ \dosetupitemgroupvariable[\itemlevel][#2]}}%
+ \def\docommando##1% \setitemmark resets \docommando
+ {\doifnot{##1}{0}{\setitemmark{##1}}}%
+ % \processcommalist[#1,\@@opsymbol]\docommando
+ \processcommalist[#1]\docommando}% ** preset sequence or provided sequence
+ \ifx\listitem\empty
+ \setitemmark\@@opsymbol % ** default value
+ \ifx\listitem\empty
+ \edef\currentitemsymbol{\itemlevel}% ** fall back
+ \fi
+ \fi
+ \ifautoitemintro\ifnum\prevgraf<3
+ \itemintrotrue
+ \fi\fi
+ \ifparagraphitems
+ \ifnum\itemlevel>\plusone
+ \letitemparameter\itemlevel\c!inbetween\empty
+ \fi
+ \else\ifpackeditems
+ \letitemparameter\itemlevel\c!inbetween\empty
+ \fi\fi
+ \calculatelistwidth\itemlevel{\dimen0}%
+ \ifdim\dimen0>\zeropoint\relax
+ \ifconditional\inlinelistitem\else
+ \advance\leftskip \dimen0\relax
+ \fi
+ \fi}
+
+% test / example
+%
+% \startnarrower[left] \startcolumns[n=3] \startitemize
+% \item \input ward \item \input ward \item \input ward
+% \stopitemize \stopcolumns\stopnarrower \blank
+%
+% \startnarrower[left] \startitemize[columns,three]
+% \item \input ward \item \input ward \item \input ward
+% \stopitemize \stopnarrower \blank
+%
+% \setupitemize[leftmargin=1.5em] \startitemize[columns,three]
+% \item \input ward \item \input ward \item \input ward
+% \stopitemize \blank
+
+\def\stopitemgroup
+ {\iftextitems
+ \removeunwantedspaces\space\ignorespaces
+ \else
+ \par
+ \fi
+ \ifnum\itemcolumndepth=\zerocount \dolistreference \fi % beware !
+ \iffirstlist \else \endgroup \fi % toegevoegd, eerste \som opent groep
+ \ifnum\itemcolumndepth=\itemlevel\relax
+ \stopcolumns
+ \doglobal\newcounter\itemcolumndepth
+ \getitemparameter\itemlevel\c!after
+ \else
+ \ifnum\itemlevel=\plusone
+ \doitembreak\allowbreak % toegevoegd
+ \getitemparameter1\c!after
+ \dochecknextindentation\??oo
+ \else
+ % nieuw, not yet nobreak handling
+ \ifcase\autoitemgroupspacing
+ \getitemparameter\itemlevel\c!after
+ \or
+ \getitemparameter\itemlevel\c!after
+ \fi
+ \fi
+ \fi
+ \endgroup
+ \doglobal\decrement(\itemlevel,\itemincrement)%
+ \egroup
+ % new needed in sidefloats (surfaced in volker's proceedings)
+ \iftextitems\else\par\fi}
+
+\newtoks\itemgroupcommands
+
+\def\itemgroupitem
+ {\doitemgroupitem}
+
+\def\itemgroupbutton[#1]%
+ {\gdef\somdestination{#1}%
+ \itemgroupitem}
+
+\def\itemgroupdummy
+ {\itemgroupsymbol{\strut}\strut}
+
+\def\itemgroupsubitem
+ {\subitemtrue\itemgroupitem}
+
+\def\itemgroupsymbol#1%
+ {\def\symsymbol{\doitemattributes\itemlevel\c!symstyle\c!symcolor{#1}}%
+ \symbolitemtrue
+ \itemgroupitem}
+
+\def\itemgroupedge#1%
+ {\itemgroupsymbol
+ {\calculatelistwidth\itemlevel{\dimen0}%
+ \hbox to \dimen0
+ {#1\hskip\getitemparameter\itemlevel\c!distance}}}
+
+\def\itemgrouphead
+ {\headitemtrue\doitemgrouphead}
+
+\def\itemgroupitems
+ {\dosingleempty\doitemgroupitems}
+
+\def\doitemgroupitems[#1]%
+ {\itemgroupedge
+ {\dorecurse{0\getitemparameter\itemlevel\c!items}{\listitem\hss}%
+ \unskip}}
+
+\def\itemgroupmargin#1%
+ {\def\marsymbol
+ {\llap
+ {\doitemattributes\itemlevel\c!marstyle\c!marcolor{#1}%
+ \hskip\leftskip\hskip\leftmargindistance}}%
+ \itemgroupitem}
+
+\appendtoks \let\item \itemgroupitem \to \itemgroupcommands
+\appendtoks \let\itm \itemgroupitem \to \itemgroupcommands
+\appendtoks \let\but \itemgroupbutton \to \itemgroupcommands
+\appendtoks \let\nop \itemgroupdummy \to \itemgroupcommands
+\appendtoks \letvalue\v!sub \itemgroupsubitem \to \itemgroupcommands
+\appendtoks \letvalue\v!sym \itemgroupsymbol \to \itemgroupcommands
+\appendtoks \letvalue\v!ran \itemgroupedge \to \itemgroupcommands
+\appendtoks \letvalue\v!head \itemgrouphead \to \itemgroupcommands
+\appendtoks \letvalue\v!its \itemgroupitems \to \itemgroupcommands
+\appendtoks \letvalue\v!mar \itemgroupmargin \to \itemgroupcommands
+
+% Sometimes the user demands get pretty weird:
+%
+% \startitemize
+% \item test
+% \item test
+% \headsym{xx} test \par test
+% \stopitemize
+
+\def\itemgroupheadsym#1%
+ {\def\symsymbol{\doitemattributes\itemlevel\c!symstyle\c!symcolor{#1}}%
+ \symbolitemtrue
+ \headitemtrue
+ \doitemgrouphead}
+
+\appendtoks \let\headsym \itemgroupheadsym \to \itemgroupcommands
+
+\def\itembreak % -10
+ {\flushnotes\penalty-5\relax}
+
+\def\itemnobreak % +5
+ {\flushnotes\penalty+5\ifinsidecolumns\else00\fi\relax}
+
+\def\dolistitem % evt aantal items opslaan per niveau, scheelt zoeken
+ {\iftextitems
+ % begin of item
+ \else
+ \par
+ \fi
+ \ignorespaces
+ \increment\noflistelements
+ \ifnum\itemcolumndepth=\zerocount \ifoptimizeitems
+ \ifnum\noflistelements=\plusone % tgv bv kolommen/nesting
+ \findtwopassdata\s!list{\noflists:}% % wordt soms de volgorde
+ \fi % verstoord, vandaar \find
+ \iftwopassdatafound
+ \ifcase0\twopassdata\relax \twopassdatafoundfalse \fi
+ \fi
+ \iftwopassdatafound
+ \ifnum\twopassdata=3
+ \ifnum\noflistelements>1
+ \doitembreak\itemnobreak
+ \fi
+ \else\ifnum\twopassdata>3
+ \ifnum\noflistelements=2
+ \ifitemintro
+ \doitembreak\nobreak
+ \else
+ \doitembreak\itemnobreak
+ \fi
+ \else\ifnum\twopassdata=\noflistelements\relax
+ \doitembreak\itemnobreak
+ \else\ifnum\noflistelements>2
+ \doitembreak\itembreak
+ \else
+ \ifitemintro\else\doitembreak\itembreak\fi
+ \fi\fi\fi
+ \fi\fi
+ \fi
+ \fi\fi
+ \noindent
+ \setbox8\hbox
+ {\ifheaditem
+ \doitemattributes\itemlevel\c!headstyle\c!headcolor{\listitem}%
+ \else\ifsymbolitem
+ \symsymbol
+ \else
+ \doitemattributes\itemlevel\c!style\c!color{\listitem}%
+ \fi\fi}%
+ \doifsomething\somdestination
+ {\setbox8\hbox{\goto{\box8}[\somdestination]}}%
+ \globallet\somdestination\empty
+ \dimen2=\getitemparameter\itemlevel\c!width\relax
+ % new, prevents loops when symbol is (not yet found) graphic
+ \ht8=\strutheight
+ \dp8=\strutdepth
+ % so that content differs per run (esp mp graphics afterwards)
+\checkforrepeatedlistitem
+ \ifdim\dimen2<\zeropoint\relax
+ \llap{\ifsubitem\llap{+}\fi\box8\hskip\leftmargindistance}%
+ \else
+ \ifdim\dimen2=\zeropoint\relax
+ \calculatelistwidth1{\dimen0}%
+ \else
+ \calculatelistwidth\itemlevel{\dimen0}%
+ \fi
+ \iftextitems
+ \hbox{\ifsubitem+\fi\box8\hskip\fontdimen2\font}\nobreak
+ \else
+ \ifconditional\inlinelistitem
+ \hbox to \dimen0{\ifsubitem\llap{+}\fi\box8\hfill}%
+ \else
+ % todo: align+marge binnen de hbox
+ \llap{\hbox to \dimen0{\ifsubitem\llap{+}\fi\box8\hfill}}%
+ \fi
+ \fi
+ \fi
+\forceunexpanded % needed for m conversion (\os) / i need to look into this
+ \setevalue{\@@currentitemsymbol\itemlevel}%
+ {\getvalue{\@@localitemsymbol\itemlevel}}% still problems with \uchar ?
+ %{\noexpand\getvalue{\@@localitemsymbol\itemlevel}}% no, spoils subrefs
+ \resetunexpanded
+ \headitemfalse
+ \subitemfalse
+ \symbolitemfalse
+ \EveryPar{\ignorespaces}%
+ \ignorespaces}
+
+% For Frank Grieshaber and Mojca Miklavec:
+
+\newconditional\repeatlistitem
+
+\def\checkforrepeatedlistitem
+ {\ifnum\itemlevel=\plusone \ifnum\itemlevel=\plusone
+ \initializeboxstack{item}%
+ \fi \fi
+ \ifconditional\repeatlistitem
+ \savebox{item}{\itemlevel}{\hbox{\ifnum\itemlevel>\plusone \copy8\else\fi}}%
+ \setbox8\hbox
+ {\setbox\scratchbox\hbox{\foundbox{item}{\itemlevel}}%
+ \ifnum\itemlevel>\plusone
+ \hskip-\wd\scratchbox
+ \ifnum\countervalue{\@@itemcounter\itemlevel}>\plusone
+ \llap{\box\scratchbox}%
+ \fi
+ \fi
+ \box8}%
+ \fi}
+
+\chardef\autoitemgroupspacing=2 % 0 = voor/na, 1=tussen als geen voor 2=(prev)tussen=old/normal
+
+\def\complexdoitemgroupitem[#1]%
+ {\iftextitems
+ % begin of item
+ \else
+ \par
+ \fi
+ \ignorespaces
+ \ifconditional\concatnextitem % new, concat
+ \doitembreak\nobreak % new, concat
+ \fi % new, concat
+ \doadvanceitem
+ \ifnum\itemcolumndepth=0\relax\ifnum\noflistelements>0\relax
+ \doitembreak\nobreak
+ \fi\fi
+ \iffirstlist
+ \firstlistfalse
+ \begingroup
+ \ifcase\itemlevel
+ \or % 1
+ \ifnum\itemcolumndepth=0\relax
+ \ifitemintro\doitembreak\nobreak\fi
+ \getitemparameter1\c!before
+ \ifitemintro\doitembreak\nobreak\fi
+ \fi
+ \else % 2 en hoger
+ \ifparagraphitems \else
+ \let\previtemlevel\itemlevel
+ \decrement\previtemlevel
+ \ifcase\autoitemgroupspacing\relax % nieuw
+ \getitemparameter\itemlevel\c!before
+ \or
+ \doifelsenothing{\getitemparameter\itemlevel\c!before}
+ {\getitemparameter\itemlevel\c!before}
+ {\getitemparameter\previtemlevel\c!inbetween}%
+ \else
+ \getitemparameter\previtemlevel\c!inbetween % == itemlevel-1
+ \fi
+ \fi
+ \fi
+ \else
+ \getitemparameter\itemlevel\c!inbetween
+ \fi
+ \ifconditional\concatnextitem % new, concat
+ \vskip-\lastskip % new, concat
+ \vskip-\lineheight % new, concat
+ \nobreak % new, concat
+ \fi % new, concat
+ \ignorespaces
+ \dolistitem
+ \ifpackeditems
+ \setupwhitespace[\v!none]%
+ \fi
+ \getitemparameter\itemlevel\c!inner
+ \marsymbol
+ \let\marsymbol\relax
+ \doifsomething{#1}
+ {\doifnot\itemreference\unknownitemreference
+ {\bgroup
+ \protectconversion
+ \rawreference\s!lst{#1}\itemreference
+ \egroup}}%
+ \strut % added 11-08-99
+ \setfalse\concatnextitem % new, concat
+ \hskip\itemsignal % new, concat
+ \ignorespaces}
+
+\def\complexitem[#1]#2\par % todo: no two pass data
+ {\startitemgroup[#1]
+ \complexdoitemgroupitem[]\ignorespaces\begstrut#2\unskip\endstrut\par
+ \stopitemgroup}
+
+\definecomplexorsimpleempty\item
+\definecomplexorsimpleempty\doitemgroupitem
+
+\def\complexhead[#1]#2\par#3\par
+ {\startitemgroup[#1]%
+ \complexdoitemgrouphead[]\ignorespaces#2\par#3\par
+ \stopitemgroup}
+
+% \def\complexdoitemgrouphead[#1]#2\par% % beter in \complexdosom hangen met een if
+% {\iffirstlist\else\doitembreak\allowbreak\fi
+% \ifpackeditems\else\getitemparameter\itemlevel\c!beforehead\fi
+% \iffirstlist\ifitemintro\else\ifcase\itemlevel % incr in \complexdosom
+% \doitembreak\allowbreak
+% \fi\fi\fi
+% \complexdoitemgroupitem[#1]{\doitemattributes\itemlevel\c!headstyle\c!headcolor
+% {\ignorespaces#2}}%
+% \iftextitems
+% \removeunwantedspaces\space\ignorespaces
+% \else
+% \par
+% \fi
+% \doitembreak\nobreak
+% \ifpackeditems\else\getitemparameter\itemlevel\c!afterhead\fi
+% \doitembreak\nobreak
+% \noindentation}
+%
+% the next solution accepts \head test \type{x{x}x} test ...
+
+\def\dostartitemattributes#1{\dostartattributes{\??op\currentitemgroup#1}}
+\def\dostopitemattributes {\dostopattributes}
+
+\def\complexdoitemgrouphead[#1]% beter in \complexdosom hangen met een if
+ {\iffirstlist\else\doitembreak\allowbreak\fi
+ \ifpackeditems\else\getitemparameter\itemlevel\c!beforehead\fi
+ \iffirstlist\ifitemintro\else\ifcase\itemlevel % incr in \complexdosom
+ \doitembreak\allowbreak
+ \fi\fi\fi
+ \complexdoitemgroupitem[#1]%
+ \bgroup
+ \dostartitemattributes\itemlevel\c!headstyle\c!headcolor\empty
+ \ignorespaces
+ \let\par\enditemhead} % brrrr but simple anyway
+
+\def\enditemhead
+ {\removeunwantedspaces
+ \dostopitemattributes
+ \egroup
+ \iftextitems
+ \space\ignorespaces
+ \else
+ \par
+ \fi
+ \doitembreak\nobreak
+ \ifpackeditems\else\getitemparameter\itemlevel\c!afterhead\fi
+ \doitembreak\nobreak
+ \noindentation}
+
+\definecomplexorsimpleempty\head
+\definecomplexorsimpleempty\doitemgrouphead
+
+% \def\sym#1%
+% {\noindent
+% \begingroup
+% \setbox\scratchbox\hbox{\trialtypesettingtrue#1}%
+% \setbox\scratchbox\hbox
+% \ifdim\wd\scratchbox<1em to 1.5\else spread 1\fi em{#1\hfil}%
+% \hangindent\wd\scratchbox
+% \box\scratchbox
+% \endgroup
+% \ignorespaces}
+
+\def\sym#1%
+ {\noindent
+ \begingroup
+ \setbox\scratchbox\hbox{\trialtypesettingtrue#1}%
+ \setbox\scratchbox\hbox
+ \ifdim\wd\scratchbox<1em to 1.5\else spread 1\fi em{#1\hfil}%
+ \expanded{\box\scratchbox\endgroup\hangindent\the\wd\scratchbox}%
+ \ignorespaces}
+
+\setupitemgroups % undocumented
+ [\c!levels=6,
+ \c!margin=\zeropoint,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\zeropoint,
+ \c!indentnext=\v!yes,
+ \c!width=1.5em,
+ \c!factor=0,
+ \c!distance=.5em,
+ %\c!align=\v!normal, % definitely not \v!normal, see mails and
+ \c!align=, % debug reports of David A & Patrick G on context list
+ \c!color=,
+ \c!indenting=, % untouched if empty
+ \c!color=,
+ \c!style=, % kan tzt weg
+ \c!marstyle=\c!type, % \c! ???
+ \c!symstyle=,
+ \c!headstyle=,
+ \c!marcolor=,
+ \c!symcolor=,
+ \c!headcolor=,
+ \c!beforehead=,
+ \c!afterhead=\blank,
+ \c!before=\blank,
+ \c!inbetween=\blank,
+ \c!after=\blank,
+ \c!stopper=.,
+ \c!placestopper=\v!yes,
+ \c!inner=,
+ \c!n=2,
+ \c!items=4,
+ \c!lefttext=(,
+ \c!righttext=),
+ \c!start=1,
+ \c!option=,
+ \c!symbol=\itemlevel] % \v!niveau
+
+\def\defineitemgroup
+ {\dodoubleempty\dodefineitemgroup}
+
+\def\dodefineitemgroup[#1][#2]%
+ {\doifsomething{#1}
+ {\pushmacro\currentitemgroup
+ \def\currentitemgroup{#1}%
+ \setvalue{\e!start#1}{\startitemgroup[#1]}%
+ \setvalue{\e!stop#1}{\stopitemgroup}%
+ \setvalue{\e!setup#1\e!endsetup}{\setupitemgroup[#1]}%
+ \getparameters[\??ig#1][\c!levels=3,#2]%
+ \ifnum\getvalue{\??ig#1\c!levels}<\maxitemlevel\relax
+ \letvalue{\??ig#1\c!levels}\maxitemlevel
+ \fi
+ \dorecurse{\getvalue{\??ig#1\c!levels}}{\initializeitemgrouplevel\recurselevel}%
+ \popmacro\currentitemgroup}}
+
+% efficient default itemize as well as upward compatible
+% definition:
+
+\defineitemgroup [\v!itemize] [\c!levels=6]
+
+% keep these, needed for styles:
+
+% \def\startitemize {\startitemgroup[\v!itemize]}
+% \def\stopitemize {\stopitemgroup}
+% \def\setupitemize {\setupitemgroup[\v!itemize]}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-job.tex b/Master/texmf-dist/tex/context/base/core-job.tex
new file mode 100644
index 00000000000..0a398f462de
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-job.tex
@@ -0,0 +1,495 @@
+%D \module
+%D [ file=core-job, % copied from main-001,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Job Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is still to be split and documented.
+
+\writestatus{loading}{Context Core Macros / Job Handling}
+
+\unprotect
+
+\let \currentproject \empty
+\let \currentproduct \empty
+\let \currentenvironment \empty
+\let \currentcomponent \empty
+
+\let \loadedfiles \empty
+\let \processedfiles \empty
+
+\let \nomorefiles \relax
+
+\newcounter\textlevel
+\newcounter\fileprocesslevel
+
+\setvalue{\c!file::0}{\jobname}
+
+\def\processedfile % is used in styles, don't change !
+ {\getvalue{\c!file::\fileprocesslevel}}
+
+%\def\processfile#1%
+% {\doglobal\increment\fileprocesslevel
+% \setxvalue{\c!file::\fileprocesslevel}{#1}%
+% \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles
+% \readlocfile{#1}{}{}
+% \doglobal\decrement\fileprocesslevel}
+
+\def\dostarttextfile#1%
+ {\doglobal\increment\fileprocesslevel
+ \setxvalue{\c!file::\fileprocesslevel}{#1}%
+ \@EA\doglobal\@EA\addtocommalist\@EA{#1}\processedfiles}
+
+\def\dostoptextfile
+ {\doglobal\decrement\fileprocesslevel}
+
+\def\processlocalfile#1#2%
+ {% #1=\readlocfile|\readsetfile{dir} #2=filename
+ % #1{#2}\donothing\donothing
+ #1{#2}\donothing{\readfile{#2}\donothing\donothing}}
+
+\def\processfile#1%
+ {\ifx\allinputpaths\empty
+ \def\next{\processlocalfile\readlocfile}%
+ \else
+ \let\filepath\empty
+ \def\docommando##1%
+ {\doiffileelse{\pathplusfile{##1}{#1}}{\donetrue\def\filepath{##1}}\donefalse
+ \ifdone\expandafter\quitcommalist\fi}%
+ \doifparentfileelse{#1} % new
+ {\processcommacommand [\allinputpaths]\docommando}
+ {\processcommacommand[.,\allinputpaths]\docommando}%
+ \ifx\filepath\empty
+ \def\next{\processlocalfile\readlocfile}% fall back ../../..
+ \else
+ \def\next{\processlocalfile{\readsetfile\filepath}}% file found
+ \fi
+ \fi
+ \next{#1}}
+
+\let\allinputpaths\empty
+
+% \def\usepath[#1]%
+% {\def\docommando##1%
+% {\doifelse{##1}\v!reset
+% {\let\allinputpaths\empty}
+% {\addtocommalist{##1}\allinputpaths}}%
+% \processcommalist[#1]\docommando}
+%
+% \def\usesubpath[#1]% new, see webschrift for usage
+% {\ifx\allinputpaths\empty
+% \edef\allinputpaths{#1}%
+% \else
+% \def\docommando##1%
+% {\def\dodocommando####1{\addtocommalist{##1/####1}\allinputpaths}%
+% \processcommalist[#1]\dodocommando}%
+% \processcommacommand[\allinputpaths]\docommando
+% \fi}
+%
+% the following alternatives permit ../{name} i.e. braces
+
+\def\usepath[#1]%
+ {\def\docommando##1%
+ {\doifelse{##1}\v!reset
+ {\let\allinputpaths\empty}
+ {\sanitizefilename#1\to\ascii
+ \convertcommand\ascii\to\ascii
+ \addtocommalist\ascii\allinputpaths}}%
+ \processcommalist[#1]\docommando}
+
+\def\usesubpath[#1]% test for a real long time, permits ../{name} i.e. braces
+ {\ifx\allinputpaths\empty
+ \sanitizefilename#1\to\allinputpaths
+ \else
+ \def\docommando##1%
+ {\def\dodocommando####1%
+ {\sanitizefilename####1\to\ascii
+ \convertcommand\ascii\to\ascii
+ \addtocommalist{##1/\ascii}\allinputpaths}%
+ \processcommalist[#1]\dodocommando}%
+ \processcommacommand[\allinputpaths]\docommando
+ \fi}
+
+\def\registerfileinfo[#1#2]#3% geen \showmessage ?
+ {\writestatus\m!systems{#1#2 file #3 at line \the\inputlineno}%
+ % \pdfliteral{\letterpercent #1#2 file #3 at line \the\inputlineno}%
+ \immediatewriteutility{f #1 {#3}}}
+
+\ifx\preloadfonts \undefined \let\preloadfonts \relax \fi
+\ifx\preloadspecials\undefined \let\preloadspecials\relax \fi
+
+% \def\loadsystemfiles
+% {\reportprotectionstate
+% \readsysfile\f!newfilename
+% {\showmessage\m!systems2\f!newfilename}\donothing
+% \readsysfile\f!oldfilename
+% {\showmessage\m!systems2\f!oldfilename}\donothing
+% \readsysfile\f!filfilename
+% {\showmessage\m!systems2\f!filfilename}\donothing
+% \readsysfile\f!sysfilename
+% {\showmessage\m!systems2\f!sysfilename}\donothing}
+%
+% test \@@svgebied
+
+\def\loadallsystemfiles#1#2%
+ {\ifx\@@svdirectory\empty
+ \readsysfile{#1}{\showmessage\m!systems2{#1}}{#2}%
+ \else% yet undocumented
+ \def\doloadsystemfile##1%
+ {\readsetfile{##1}{#1}{\showmessage\m!systems2{#1}}{#2}}%
+ \processcommacommand[\@@svdirectory]\doloadsystemfile
+ \fi}
+
+\def\loadsystemfiles
+ {\reportprotectionstate
+ \readsysfile\f!newfilename
+ {\showmessage\m!systems2\f!newfilename}%
+ \donothing
+ \readsysfile\f!oldfilename
+ {\showmessage\m!systems2\f!oldfilename}%
+ \donothing
+ \loadallsystemfiles\f!filfilename
+ \donothing
+ \loadallsystemfiles\f!sysfilename
+ {\loadallsystemfiles{\f!sysfilename.rme}\donothing % new, fall back
+ \doglobal\appendtoks
+ \loadallsystemfiles\f!errfilename\donothing
+ \to\everygoodbye}}
+
+ %\loadallsystemfiles\f!modfilename
+ % \donothing}
+
+%D Loading of \type {cont-usr.tex} (edited by the user)
+%D and \type {cont-fmt.tex} (generated by texexec).
+
+\def\loaduserspecifications
+ {\readsysfile\f!usrfilename
+ {\showmessage\m!systems2\f!usrfilename}\donothing
+ \readjobfile\f!fmtfilename
+ {\showmessage\m!systems2\f!fmtfilename}\donothing}
+
+%D We don't want multiple jobfiles to interfere.
+
+\bgroup
+\catcode`\%=\@@other
+\xdef\texcommentsymbol{%}
+\egroup
+
+\def\loadoptionfile
+ {\readjobfile{\jobname.\f!optionextension}
+ {\showmessage\m!systems2{\jobname.\f!optionextension}}%
+ %{\showmessage\m!systems2{\jobname.\f!optionextension}}}
+ {\writestatus\m!systems {no \jobname.\f!optionextension}}}
+
+% \newevery \everyjob \EveryJob
+% \appendtoks ... \to \everyjob
+
+\appendtoks \loadsystemfiles \to \everyjob
+\appendtoks \preloadfonts \to \everyjob
+\appendtoks \settopskip \to \everyjob
+\appendtoks \preloadlanguages \to \everyjob
+\appendtoks \preloadspecials \to \everyjob
+\appendtoks \openspecialfile \to \everyjob
+%appendtoks \checkutilityfile \to \everyjob % obsolete
+\appendtoks \openutilities \to \everyjob
+\appendtoks \loadoptionfile \to \everyjob
+%appendtoks \loadtwopassdata \to \everyjob
+\appendtoks \checknotes \to \everyjob % depends on bodyfont
+\appendtoks \initializeMPgraphics \to \everyjob % after loading system files
+
+\appendtoks \page[\v!last] \page \to \everybye
+\appendtoks \ifarrangingpages\poparrangedpages\fi \to \everybye
+\appendtoks \registerfileinfo[end]\jobname \to \everybye
+
+\appendtoks \savenofpages \to \everybye
+\appendtoks \savenofsubpages \to \everybye
+
+\appendtoks \closeutilities \to \everygoodbye
+\appendtoks \stopcopyingblocks \to \everygoodbye
+\appendtoks \closespecialfile \to \everygoodbye
+
+\prependtoks \resetutilities \to \everystarttext % moved 28-02-2002
+\prependtoks \loadtwopassdata \to \everystarttext % moved 28-02-2002
+\appendtoks \checkreferences \to \everystarttext % new 04-12-1999
+
+% Most natural ...
+%
+% \def\doateverystarttext
+% {\the\everystarttext
+% \global\let\doateverystarttext\relax}
+%
+% ... most practical, since we can load env's in a
+% something.run file (nested \starttext's; see for
+% instance x-res-08, where we definitely want to
+% open the file!).
+
+\def\doateverystarttext
+ {\the\everystarttext
+ \global\everystarttext\emptytoks}
+
+\def\starttext
+ {\doateverystarttext
+ \ifnum\textlevel=\zerocount
+ \registerfileinfo[begin]\jobname
+ \expandafter\startcopyingblocks
+ \fi
+ \doglobal\increment\textlevel\relax}
+
+\def\stoptext
+ {\doglobal\decrement\textlevel\relax
+ \ifnum\textlevel>\zerocount \else
+ \the\everystoptext
+ %\the\everybye %
+ %\the\everygoodbye % == \end (new)
+ %\expandafter\normalend %
+ \expandafter\finalend
+ \fi}
+
+\let\normalend\end
+
+\def\finalend
+ {\ifnum\textlevel>\zerocount \else
+ \the\everybye
+ \the\everygoodbye
+ \global\everybye \emptytoks % rather unneeded
+ \global\everygoodbye\emptytoks % but for sure
+ \expandafter\normalend
+ \fi}
+
+\let\end\finalend
+
+\def\emergencyend
+ {\writestatus\m!systems{invalid \@EA\string\csname\e!start\v!text\endcsname...\@EA\string\csname\e!stop\v!text\endcsname\space structure}%
+ \stoptext}
+
+\def\currentfile{\inputfilename}
+
+\def\doexecutefileonce#1%
+ {\beforesplitstring#1\at.\to\currentfile
+ \fullexpandtwoargsafter\doifnotinset\currentfile\loadedfiles
+ {\fullexpandoneargafter\addtocommalist\currentfile\loadedfiles
+ \doexecutefile{#1}}}
+
+\def\doexecutefile#1%
+ {\registerfileinfo[begin]{#1}%
+ \dostarttextfile{#1}%
+ \processfile{#1}%
+ \dostoptextfile
+ \registerfileinfo[end]{#1}}
+
+\def\donotexecutefile#1%
+ {}
+
+\def\verwerkfile#1 %
+ {\doexecutefile{#1}}
+
+\def\useenvironment[#1]% maybe commalist
+ {\environment #1 }
+
+\def\environment #1 % at outermost level only
+ {\def\startenvironment ##1 {}%
+ \let\stopenvironment\relax
+ % why not \doexecutefile ?
+ \registerfileinfo[begin]{#1}%
+ \dostarttextfile{#1}%
+ \startreadingfile
+ \processfile{#1}% was : \readlocfile{#1}{}{}
+ \stopreadingfile
+ \dostoptextfile
+ \registerfileinfo[end]{#1}}
+
+\def\component #1 % at outermost level only
+ {\dostarttextfile{#1}%
+ \processfile{#1}%
+ \dostoptextfile}
+
+\newcounter\filelevel
+
+% \def\donextlevel#1#2#3#4#5#6\\%
+% {\beforesplitstring#6\at.\to#1
+% \ifcase\filelevel\relax
+% \starttext
+% \def\project ##1 {#2{##1}}%
+% \def\environment ##1 {#3{##1}}%
+% \def\product ##1 {#4{##1}}%
+% \def\component ##1 {#5{##1}}%
+% \fi
+% \increment\filelevel\relax
+% \fullexpandoneargafter\addtocommalist{#1}\loadedfiles}
+%
+% \def\doprevlevel
+% {\ifnum\filelevel=\plusone
+% \expandafter\stoptext
+% \else
+% \decrement\filelevel\relax
+% \expandafter\endinput
+% \fi}
+
+\let\currentcomponent\v!text
+
+\def\donextlevel#1#2#3#4#5#6#7\\%
+ {\pushmacro\currentcomponent
+ \let\currentcomponent#1
+ \setsystemmode\currentcomponent
+ \beforesplitstring#7\at.\to#2\relax
+ \ifcase\filelevel\relax
+ \starttext
+ \def\project ##1 {#3{##1}}%
+ \def\environment ##1 {#4{##1}}%
+ \def\product ##1 {#5{##1}}%
+ \def\component ##1 {#6{##1}}%
+ \fi
+ \increment\filelevel\relax
+ \fullexpandoneargafter\addtocommalist{#1}\loadedfiles}
+
+\def\doprevlevel
+ {\popmacro\currentcomponent
+ \setsystemmode\currentcomponent
+ \ifnum\filelevel=\plusone
+ \expandafter\stoptext
+ \else
+ \decrement\filelevel\relax
+ \expandafter\endinput
+ \fi}
+
+% \def\startproject #1 %
+% {\donextlevel\currentproject
+% \donotexecutefile\doexecutefileonce
+% \doexecutefileonce\doexecutefile#1\\}
+%
+% \def\startproduct #1 %
+% {\doateverystarttext
+% \donextlevel\currentproduct
+% \doexecutefileonce\doexecutefileonce
+% \donotexecutefile\doexecutefile#1\\}
+%
+% \def\startcomponent #1 %
+% {\doateverystarttext
+% \donextlevel\currentcomponent
+% \doexecutefileonce\doexecutefileonce
+% \donotexecutefile\doexecutefile#1\\}
+%
+% \def\startenvironment #1 %
+% {\donextlevel\currentenvironment
+% \donotexecutefile\doexecutefileonce
+% \donotexecutefile\donotexecutefile#1\\}
+
+\def\startproject #1 %
+ {\donextlevel\v!project\currentproject
+ \donotexecutefile\doexecutefileonce
+ \doexecutefileonce\doexecutefile#1\\}
+
+\def\startproduct #1 %
+ {\doateverystarttext
+ \donextlevel\v!product\currentproduct
+ \doexecutefileonce\doexecutefileonce
+ \donotexecutefile\doexecutefile#1\\}
+
+\def\startcomponent #1 %
+ {\doateverystarttext
+ \donextlevel\v!component\currentcomponent
+ \doexecutefileonce\doexecutefileonce
+ \donotexecutefile\doexecutefile#1\\}
+
+\def\startenvironment #1 %
+ {\donextlevel\v!environment\currentenvironment
+ \donotexecutefile\doexecutefileonce
+ \donotexecutefile\donotexecutefile#1\\}
+
+% \startproject test
+% 1: \startmode[*project] project \stopmode \endgraf
+% 2: \startmode[*product] product \stopmode \endgraf
+% \stopproject
+
+\def\stopproject {\doprevlevel}
+\def\stopproduct {\doprevlevel}
+\def\stopcomponent {\doprevlevel}
+\def\stopenvironment{\doprevlevel}
+
+% more or less replaced by modes
+
+\setvalue{\e!start\v!localenvironment}[#1]%
+ {\let\loadedlocalenvironments\empty
+ \def\docommando##1%
+ {\beforesplitstring##1\at.\to\someevironment
+ \fullexpandoneargafter\addtocommalist\someevironment\loadedlocalenvironments}%
+ \processcommalist[#1]\docommando
+ \fullexpandtwoargsafter\doifcommonelse % no longer next needed
+ {\currentproject,\currentproduct,%
+ \currentcomponent,\currentenvironment}
+ {\loadedlocalenvironments}
+ {\letvalue{\e!stop\v!localenvironment}\relax}
+ {\grabuntil{\e!stop\v!localenvironment}\relax}}
+
+\setvalue{\v!localenvironment}#1 {\doexecutefileonce{#1}}
+
+% Het <pagina>-karakter (FormFeed), wordt omgezet in \par
+
+\catcode`\^^L=\@@endofline
+
+% NOT TOEVOEGEN: \the\everytrace
+
+\neverypar=\emptytoks
+
+% \appendtoks \flushnotes \to \everypar
+% \appendtoks \synchronizesidefloats \to \everypar
+% \appendtoks \checkindentation \to \everypar
+% \appendtoks \showparagraphnumber \to \everypar
+% \appendtoks \flushmargincontents \to \everypar
+% \appendtoks \flushcommentanchors \to \everypar
+% \appendtoks \synchronizenotes \to \everypar
+
+% \appendtoks \flushnotes \to \everydisplay
+% \appendtoks \adjustsidefloatdisplaylines \to \everydisplay
+
+%D Better here than in supp-mps:
+
+\def\executesystemcommand{\immediate\write18}
+
+% soon, when pdftex 1.22 is out in the field:
+%
+% \chardef\systemcommandmode\zerocount % 0=unknown 1=disabled 2=enabled
+%
+% \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>122
+% \prependtoks
+% \chardef\systemcommandmode \ifeof18 \plusone \else \plustwo \fi
+% \to \everyjob
+% \fi
+%
+% maybe in meta-ini
+%
+% \appendtoks
+% \ifrunMPgraphics \ifcase\systemcommandmode \or
+% \writestatus\m!systems{system commands are disabled}%
+% \runMPgraphicsfalse
+% \fi \fi
+% \to \everyjob
+
+\ifx\etexversion\undefined \else \ifnum\etexversion<202
+ \prependtoks
+ \writestatus\m!systems{eTeX version \number\etexversion\space -> too old (bugs)}%
+ \writeline
+ \to \everyjob
+\fi \fi
+
+\ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion<120
+ \prependtoks
+ \writestatus\m!systems{pdfTeX version \number\pdftexversion\space -> please update}%
+ \writeline
+ \to \everyjob
+\fi \fi
+
+\prependtoks \showcontextbanner \to \everyjob
+
+% Default-instellingen (verborgen)
+
+\resetutilities
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-lnt.tex b/Master/texmf-dist/tex/context/base/core-lnt.tex
new file mode 100644
index 00000000000..9c215c992d4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-lnt.tex
@@ -0,0 +1,195 @@
+%D \module
+%D [ file=core-lnt,
+%D version=2002.05.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Line Notes,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Line Notes}
+
+%D This module loads on top of the footnote and line numbering macros.
+
+\unprotect
+
+\newcounter\linenotecounter
+\newtoks \collectedlinenotes
+\newif \iftracelinenotes
+
+\appendtoks
+ \the\collectedlinenotes
+\to \everylinenumber
+
+\appendtoks
+ \global\collectedlinenotes\emptytoks
+\to \beforeeverylinenumbering
+
+\def\dohandlelinenote#1#2#3%
+ {\bgroup
+ \expanded{\beforesplitstring#2}\at--\to\linenotelinenumber
+ \ifnum\linenotelinenumber=\linenumber\relax
+ % todo: \onlyfootnote{#2}{#3}% == configurable
+ % \setupnote[#1][\c!numbercommand=\gobbleoneargument]%
+ % \setnotetext[#1]{\rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}#2: #3}%
+ \def\linenotelinenumber##1{#2}%
+ \setupnote[#1][\c!numbercommand=\linenotelinenumber,\c!textcommand=\gobbleoneargument]%
+ \setnote[#1]{#3}%
+ \fi
+ \egroup}
+
+\def\dotracedlinenote#1%
+ {\iftracelinenotes
+ \hbox to \zeropoint
+ {\forgetall
+ \localcolortrue
+ \hsize\zeropoint
+ \hss
+ \vbox to \strutheight{\llap{\red\infofont\setstrut\linenotecounter}\vss}%
+ {\blue\vl}%
+ \vbox to \strutheight{\rlap{\red\infofont\setstrut#1}\vss}%
+ \hss}%
+ \prewordbreak
+ \fi}
+
+\def\dolinenote#1#2%
+ {\doglobal\increment\linenotecounter
+ \doifreferencefoundelse{\??rr:\linenotecounter}%
+ {\expanded{\doglobal\noexpand\appendtoks\noexpand\dohandlelinenote
+ {#1}{\currenttextreference}}{#2}\to\collectedlinenotes}
+ \donothing
+ \dotracedlinenote\empty
+ \expanded{\someline[\??rr:\linenotecounter]}}
+
+\def\dostartlinenote#1[#2]#3%
+ {\doifreferencefoundelse{\??rr:#2}%
+ {\expanded{\doglobal\noexpand\appendtoks\noexpand\dohandlelinenote
+ {#1}{\currenttextreference}}{#3}\to\collectedlinenotes}
+ \donothing
+ \dotracedlinenote{#2}%
+ \startline[\??rr:#2]}
+
+\def\dostoplinenote#1[#2]%
+ {\stopline[\??rr:#2]}
+
+% defining them
+
+\def\definelinenote
+ {\dodoubleempty\dodefinelinenote}
+
+\def\dodefinelinenote[#1][#2]%
+ {\definenote[#1][#2]%
+ \setvalue {#1}{\dolinenote {#1}}%
+ \setvalue{\e!start#1}{\dostartlinenote{#1}}%
+ \setvalue{\e!stop #1}{\dostoplinenote {#1}}}
+
+\def\setuplinenote % convenient
+ {\setupnote}
+
+% We predefine one, namely \type {\linenote} cum suis.
+
+\definelinenote[\v!linenote]
+
+% \startbuffer[test]
+% \startlinenumbering[100]
+% test \linenote {oeps} test test test test test test
+% test \startlinenote [well] {oeps} test test test test test test
+% test \linenote {oeps} test test test test test test
+% test \linenote {oeps} test test test test test test
+% test \linenote {oeps} test test test test test test
+% test \linenote {oeps} test test test test test test
+% test \stoplinenote [well] test test test test test test
+% \stoplinenumbering
+% \stopbuffer
+%
+% {\typebuffer[test] \getbuffer[test]} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [align=left]
+% \stopbuffer
+%
+% {\typebuffer[setup] \getbuffer[setup,test]} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [width=1em,
+% align=left]
+% \stopbuffer
+%
+% {\typebuffer[setup] \getbuffer[setup,test]} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [width=2em,
+% distance=.5em,
+% align=left]
+% \stopbuffer
+%
+% {\typebuffer[setup] \getbuffer[setup,test]} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [width=2em,
+% align=middle]
+% \stopbuffer
+%
+% {\typebuffer[setup] \getbuffer[setup,test]} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [conversion=romannumerals,
+% start=1,
+% step=1,
+% location=text,
+% style=slanted,
+% color=blue,
+% width=1.5em]
+% \stopbuffer
+%
+% {\typebuffer[setup] \startnarrower\getbuffer[setup,test]\stopnarrower} \page
+%
+% \startbuffer[setup]
+% \setuplinenumbering
+% [width=4em,
+% left=--,
+% right=--,
+% align=middle]
+% \stopbuffer
+%
+% {\typebuffer[setup] \getbuffer[setup,test]} \page
+%
+% \startbuffer[setup-1]
+% \setuplinenumbering
+% [style=\bfxx,
+% command=\WatchThis]
+% \stopbuffer
+%
+% \startbuffer[setup-2]
+% \def\WatchThis#1%
+% {\ifodd\linenumber
+% \definecolor[linecolor][red]%
+% \else
+% \definecolor[linecolor][green]%
+% \fi
+% \inframed
+% [offset=1pt,frame=off,background=color,backgroundcolor=linecolor]
+% {#1}}
+% \stopbuffer
+%
+% {\typebuffer[setup-1,setup-2] \getbuffer[setup-1,setup-2,test]} \page
+%
+% \startbuffer[setup-1]
+% \setuplinenumbering
+% [location=inright,
+% style=\bfxx,
+% command=\WatchThis]
+% \stopbuffer
+%
+% {\typebuffer[setup-1] \getbuffer[setup-1,setup-2,test]} \page
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-lst.tex b/Master/texmf-dist/tex/context/base/core-lst.tex
new file mode 100644
index 00000000000..d3a5ebdb4d1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-lst.tex
@@ -0,0 +1,1103 @@
+%D \module
+%D [ file=core-lst,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Lists,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Lists}
+
+\unprotect
+
+% \getlistlevel[hoofdstuk]\test{0} \test
+
+% can be made faster if needed
+
+\def\getlistlevel[#1]#2#3% [list] \variable \default
+ {\doifdefinedelse{\??ko#1\c!section}
+ {\edef#2{\getvalue{\??ko#1\c!section}}%
+ \doifdefinedelse{\??se#2\c!level}
+ {\edef#2{\getvalue{\??se#2\c!level}}}
+ {\edef#2{#3}}}
+ {\edef#2{#3}}}
+
+% Auto cross document links work by either using logical or
+% page references, depending on the general settings. The
+% locations are stored in global references where the auto tag
+% number uses the text container. We use reference mapping
+% (define reference) to keep track of the current ref.
+
+\def\dowritetolist#1%
+ {\doifelsevalue{\??li#1\c!state}\v!start
+ \dodowritetolist\gobblefourarguments{#1}}
+
+\def\dodowritetolist#1#2#3#4%
+ {\begingroup
+ \expanded{\everylistentry\emptytoks\the\everylistentry}% \emptytoks, else loop
+ \def\currentlist{#1}% evt naar dowritetolist
+ \convertexpanded{\getvalue{\??li\currentlist\c!expansion}}{#3}\asciilistentry
+ \makesectionformat
+ \doifelse\@@nmstate\v!start
+ {\def\dopagenummer{\noexpand\pagenumber}}
+ {\let\dopagenummer\!!zerocount}%
+ % niet waterdicht, wat te doen met figuren en zo
+ % first hack: scheelt rommel, second hack: alleen koppen
+ \doifelsevalue{\??rf\currentlist\c!state}\v!start
+ {\doif{\@@sectionlevel\@@sectie}{0}\autocrossdocumentfalse}
+ {\autocrossdocumentfalse}%
+ % weak and inefficient
+ \ifautocrossdocument
+ \bgroup
+ \thisisnextinternal\currentlist
+ %\thisisdestination{\currentlist::\sectionformat}%
+ \expanded{\setsectieenkoppeling{\currentlist}}%
+ \edef\currentlevel{\@@sectionlevel\@@sectie}%
+ \processcommacommand[\crossdocumentreferences]\dododowritetolist
+ \egroup
+ \else
+ \thisisnextinternal\currentlist
+ \fi
+ \expanded
+ {\writeutilitycommand
+ {\noexpand\listentry
+ {\currentlist}%
+ {\nextinternalreference}%
+ {#2}%
+ {\asciilistentry}%
+ {\sectionformat\sectionseparator\sectionseparator\dopagenummer}%
+ {\noexpand\realfolio}}}%
+ \endgroup}
+
+\def\dododowritetolist#1%
+ {\def\docommand##1%
+ {\doifvalue{\??rf##1\c!state}\v!start
+ {\setsectieenkoppeling{##1}%
+ \def\level{\@@sectionlevel\@@sectie}%
+ \ifnum\level>\currentlevel
+ \expanded{\definereference[#1::##1][\v!none]}%
+ \else\ifnum\level=\currentlevel
+ \expanded{\definereference[#1::##1][#1::{##1::\sectionformat}]}%
+ \fi\fi}}%
+ \processcommacommand[\crossdocumentelements]\docommand}
+
+% so far
+
+\def\dowritebetweenlist#1#2%
+ {\doifvalue{\??li#1\c!state}\v!start
+ {\begingroup
+ \convertargument#2\to\ascii
+ \makesectionformat
+ \doifelse{\@@nmstate}\v!start
+ {\def\dopagenummer{\noexpand\pagenumber}}
+ {\let\dopagenummer\!!zerocount}%
+ \expanded
+ {\writeutilitycommand
+ {\noexpand\listbetween
+ {#1}%
+ {\ascii}%
+ {\sectionformat\sectionseparator\sectionseparator\dopagenummer}%
+ {\noexpand\realfolio}}}%
+ \endgroup}}
+
+% experimental (no nodes in mvl), needed for naw
+
+\def\immediatetolist[#1]#2#3#4%
+ {\begingroup
+ \convertexpanded{\getvalue{\??li#1\c!expansion}}{#3}\asciilistentry
+ \makesectionformat
+ \immediatewriteutilitycommand
+ {\listentry
+ {#1}{}{#2}{\asciilistentry}%
+ {\sectionformat\sectionseparator\sectionseparator\number#4}%
+ {\realfolio}}%
+ \endgroup}
+
+\def\immediatebetweenlist[#1]#2%
+ {\begingroup
+ \convertargument#2\to\asciilistentry
+ \makesectionformat
+ \immediatewriteutilitycommand
+ {\listbetween
+ {#1}{\asciilistentry}%
+ {\sectionformat\sectionseparator\sectionseparator0}%
+ {\realfolio}}%
+ \endgroup}
+
+\def\setlistentries
+ {\def\listentry ##1{\executeifdefined{##1\c!list }\gobblefivearguments }%
+ \def\listbetween##1{\executeifdefined{##1\c!inbetween}\gobblethreearguments}}
+
+\def\resetlistentries
+ {\let\listentry \gobblesixarguments
+ \let\listbetween\gobblefourarguments}
+
+\resetlistentries
+
+\addutilityreset{listentries}
+
+\setvalue{\??li\c!alternative a}% nr - tit - pag
+% {\def\listfill {\hskip 1.75em}% was \hskip.5em\hskip 1.25em
+ {\def\listfill {\hskip .25em}% omdat nu check
+ \def\listskip {0em}%
+ \def\listwidth{2em}}
+
+\setvalue{\??li\c!alternative b}% nr - tit - fill - pag
+ {\def\listfill {\hfill}% was \hskip.5em\hfill
+ \def\listskip {5em}%
+ \def\listwidth{2em}}
+
+\setvalue{\??li\c!alternative c}% nr - tit - dots - pag
+ {\def\listfill {\hskip.5em\listdots\hskip.5em}%
+ \def\listskip {5em}%
+ \def\listwidth{0pt}}
+
+\def\listdots{\leaders\hbox to .5em{\hss.\hss}\hfill}
+
+\setvalue{\??li\c!alternative}{\getvalue{\??li\c!alternative b}}
+
+\getvalue{\??li\c!alternative}
+
+\def\setlistparameter#1#2#3{\@EA\def\csname\??li#1#2\endcsname{#3}} % often
+\def\listparameter #1{\csname\??li\currentlist#1\endcsname}
+
+\def\dosetuplist[#1][#2]% slow -)
+ {\def\docommand##1%
+ {\getparameters[\??li##1][#2]%
+ \preparepageprefix{\??li##1}}%
+ \processcommalist[#1]\docommand}
+
+\def\setuplist
+ {\dodoubleargument\dosetuplist}
+
+\def\dodosetlist#1%
+ {\def\nolist{\splitsequence{\getvalue{\??li#1\c!limittext}}}%
+ \setvalue{#1\c!inbetween}{\dobetweenlist{#1}}%
+ \setvalue{#1\c!list }{\dolistelement{#1}}}
+
+\def\dodoresetlist#1%
+ {\let\nolist\empty
+ \setvalue{#1\c!inbetween}{\gobblefourarguments{#1}}%
+ \setvalue{#1\c!list }{\gobblesixarguments {#1}}}
+
+\let\nolist\empty
+
+\def\dodefinelist[#1][#2][#3]%
+ {\presetlocalframed[\??li#1]%
+ \getparameters
+ [\??li#1]
+ [\c!height=\v!broad,
+ \c!depth=\v!broad,
+ \c!offset=0.25em,
+ \c!maxwidth=,
+ \c!state=\v!start,
+ \c!coupling=\v!off,
+ \c!criterium=\v!local,
+ \c!width=3em,
+ \c!alternative=\c!b,
+ \c!style=\v!normal,
+ \c!textstyle=\listparameter\c!style,
+ \c!numberstyle=\listparameter\c!style,
+ \c!pagestyle=\listparameter\c!style,
+ \c!color=,
+ \c!textcolor=\listparameter\c!color,
+ \c!numbercolor=\listparameter\c!color,
+ \c!pagecolor=\listparameter\c!color,
+ \c!numbercommand=\listnumbercommand,
+ \c!textcommand=\listtextcommand,
+ \c!pagecommand=\listpagecommand,
+ \c!pagenumber=\v!yes,
+\c!headnumber=\v!yes,
+ \c!pageboundaries=,
+ \c!margin=\!!zeropoint,
+ \c!aligntitle=,
+ \c!before=,
+ \c!after=,
+ \c!inbetween=,
+ \c!symbol=,
+ \c!interaction=\v!sectionnumber,
+ \v!part\v!number=\v!yes, % nodig ? % v
+ \c!label=\v!no,
+ \c!distance=\!!zeropoint,
+ \c!separator=\@@koseparator,
+ \c!limittext=\@@kolimittext,
+ \c!stopper=,
+ \c!expansion=]%
+ \doifassignmentelse{#2}
+ {\getparameters[\??li#1][#2]}
+ {\ConvertToConstant\doifnot{#2}{} % not \doifsomething ivm Convert...
+ {\copyparameters % interactie ?
+ [\??li#1][\??li#2]
+ [\c!state,\c!width,\c!alternative,\c!style,\c!color,
+ \c!textstyle,\c!textcolor,\c!textcommand,
+ \c!pagestyle,\c!pagecommand,\c!pagecolor,
+ \c!numberstyle,\c!numbercolor,\c!numbercommand,
+\c!headnumber,
+ \c!pagenumber,\c!pageboundaries,\c!margin,\c!symbol,\c!limittext,
+ \c!aligntitle,\c!before,\c!after,\c!inbetween,\v!part\c!number,\c!label]%
+ \getparameters[\??li#1][#3]}}%
+ \addutilityreset{#1}%
+ \setvalue{\s!set #1}{\dodosetlist {#1}}%
+ \setvalue{\s!reset#1}{\dodoresetlist{#1}}}
+
+\def\definelist
+ {\dotripleempty\dodefinelist}
+
+\def\iflijstgeplaatst{\ifutilitydone} % obsolete, is now a mode
+
+\def\placelist
+ {\dodoubleempty\doplacelist}
+
+\def\placerawlist
+ {\dodoubleempty\doplacerawlist}
+
+\def\dobeginoflist
+ {\begingroup
+ \startpacked[\v!blank]}
+
+\def\doendoflist
+ {\stoppacked
+ \endgroup}
+
+\def\doplacelist[#1][#2]%
+ {\dobeginoflist
+ \doplacerawlist[#1][#2]%
+ \doendoflist}
+
+\def\doplacerawlist[#1][#2]%
+ {\begingroup
+ \dogetcommalistelement1\from#1\to\firstlistelement
+ \dosetuplist[#1][#2]%
+ \doifvalue{\??li\firstlistelement\c!coupling}\v!on
+ {\startlistreferences{#1}}%
+ \dosettoclevel\??li\firstlistelement
+ \honorlocalfilterlevel
+ \doutilities{listentries,#1}\jobname{#1}\relax\par
+ \stoplistreferences{#1}%
+ \dosetlistmode
+ \endgroup}
+
+% the simple appreach:
+%
+% \def\dosettoclevel#1#2%
+% {\dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty}
+%
+% but we want to to support selection by number:
+%
+% \starttypen
+% \placelist[section][criterium=chapter,number=1] \blank
+% \placelist[section][criterium=chapter,number=2] \blank
+% \placelist[section][criterium=chapter,number=3] \blank
+%
+% \chapter{first} \section{AA} \section{BB}
+% \chapter{second} \section{CC} \section{DD}
+% \chapter{third} \section{EE} \section{FF}
+% \stoptypen
+
+\def\dosettoclevel#1#2% todo: check if criterium is headid, else error
+ {\ifundefined{#1#2\c!number}%
+ \dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty
+ \else
+ % \doifnot{#2}\v!local ...
+ \doifelsevaluenothing{#1#2\c!number}%
+ {\dosetfilterlevel{\getvalue{#1#2\c!criterium}}\empty}
+ {\setsectieenkoppeling{\getvalue{#1#2\c!criterium}}%
+ \dosetfilterlevel
+ {\previoussection\@@sectie}%
+ {\getvalue{#1#2\c!number}}}%
+ \fi}
+
+\def\dosetlistmode
+ {\ifutilitydone
+ \setsystemmode \v!list
+ \else
+ \resetsystemmode\v!list
+ \fi}
+
+\def\dodocompletelist[#1][#2][#3]% enkelvoud, meervoud, instellingen
+ {\expanded{\systemsuppliedtitle[#2]{\noexpand\headtext{#2}}}% expansion needed for v! vs french !
+ \doplacelist[#1][#3]}
+
+\def\docompletelist[#1][#2]%
+ {\dodocompletelist[#1][#1][#2]}
+
+\def\completelist
+ {\dodoubleempty\docompletelist}
+
+\def\listelements {} % list of page breaks
+\def\listnumbercommand #1{#1} % no strut due to interactive version
+\def\listtextcommand #1{\begstrut#1\endstrut}
+\def\listpagecommand #1{\strut#1}
+
+\def\doassigndimen#1#2#3%
+ {\doifinsetelse{#2}{\v!fit,\v!broad}{#1=#3}{#1=#2}\relax}
+
+% \let\dohandlelistnumber\firstofoneargument
+%
+% can be anything, so no \expanded{\separatednumber{#1}} !
+
+\def\dohandlelistnumber#1{\separatednumber{#1}}
+
+\def\listsymbol[#1]#2%
+ {\begingroup
+ \def\currentlist{#1}%
+ \def\currentlistnumber{#2}%
+ \currentlistsymbol
+ \endgroup}
+
+% Beware, the list symbol macro gets an argument passed, i.e. when this
+% argument is not picked up, the symbol becomes a kind of prefix.
+
+% for historical reasons we're stuck to symbols, so in order to generalize,
+% we have to hook it into the symbol handler; we need a beter clean up later
+%
+% < 2005
+%
+% \def\dosetlistsymbol % #1
+% {\executeifdefined{listsymbol@\listparameter\c!symbol}\listsymbol@default} % {#1}
+%
+% >= 2005
+%
+% at this symbol level, we have access to the raw 'number' in
+% \currentlistnumber
+
+\definesymbol[\v!list][\v!none ][\listsymbol@none ]
+\definesymbol[\v!list][\v!one ][\listsymbol@one ]
+\definesymbol[\v!list][\v!two ][\listsymbol@two ]
+\definesymbol[\v!list][\v!three ][\listsymbol@three ]
+\definesymbol[\v!list][\s!default][\listsymbol@default]
+\definesymbol[\v!list][\s!unknown][\listsymbol@unknown]
+
+\def\currentlistsymbol
+ {\doifinsymbolsetelse\v!list{\listparameter\c!symbol}
+ {\directsymbol\v!list{\listparameter\c!symbol}}
+ {\directsymbol\v!list\s!default}}
+
+\def\listsymbol@none
+ {\doassigndimen\scratchdimen{\listparameter\c!width}{1.5em}%
+ \hbox to \scratchdimen{}}
+
+\def\listsymbol@one
+ {\strut$\bullet$}
+
+\def\listsymbol@two
+ {\vrule\!!width1em\!!height1ex\!!depth\zeropoint}
+
+\def\listsymbol@three
+ {\begingroup
+ \doassigndimen{\dimen0}{\listparameter\c!width }{1.5em}%
+ \doassigndimen{\dimen2}{\listparameter\c!height}{1ex}%
+ \doassigndimen{\dimen4}{\listparameter\c!depth }\zeropoint
+ \vrule\!!width\dimen0\!!height\dimen2\!!depth\dimen4%
+ \endgroup}
+
+\def\listsymbol@default
+ {\doifelse{\listparameter\c!prefix}\v!no % ook nog eerste
+ {\edef\splitlistsymbol{\@EA\removefirstprefix\@EA{\currentlistnumber}}}% one level expansion
+ {\doifelse{\listparameter\c!prefix}\v!none
+ {\edef\splitlistsymbol{\@EA\removeallprefixes\@EA{\currentlistnumber}}}%
+ {\let\splitlistsymbol\currentlistnumber}}% geen \edef ivm enz
+ \doif{\listparameter\c!label}\v!yes{\leftlabeltext\currentlist}%
+ \strut
+ \def\numberseparator{\listparameter\c!separator}%
+ \@EA\dohandlelistnumber\@EA{\splitlistsymbol}%
+ \listparameter\c!stopper
+ \doif{\listparameter\c!label}\v!yes{\rightlabeltext\currentlist}}
+
+\def\listsymbol@unknown
+ {\listparameter\c!symbol}
+
+% so far for list symbols
+
+\def\@@dodolistelement{dodolistelement}
+
+\def\dosomelistelement#1#2#3{#1 #2 \translatednumber[#3]}
+
+\setvalue{\@@dodolistelement a}{\let\dosomelistelement\dodofixdlistelementABC}
+\setvalue{\@@dodolistelement b}{\let\dosomelistelement\dodofixdlistelementABC}
+\setvalue{\@@dodolistelement c}{\let\dosomelistelement\dodofixdlistelementABC}
+\setvalue{\@@dodolistelement d}{\let\dosomelistelement\dodofixdlistelementD}
+\setvalue{\@@dodolistelement e}{\let\dosomelistelement\dodofixdlistelementE}
+\setvalue{\@@dodolistelement f}{\let\dosomelistelement\dodofixdlistelementF}
+\setvalue{\@@dodolistelement g}{\let\dosomelistelement\dodofixdlistelementG}
+
+\setvalue{\@@dodolistelement\v!none }{\def\dosomelistelement{\dodofreevlistelement}}
+\setvalue{\@@dodolistelement\v!vertical }{\def\dosomelistelement{\dodofreevlistelement}}
+\setvalue{\@@dodolistelement\v!horizontal}{\def\dosomelistelement{\dodofreehlistelement}}
+\setvalue{\@@dodolistelement\v!command }{\let\dosomelistelement\dodocommandlistelement}
+
+% \setuplist
+% [section]
+% [alternative=MyListItem,
+% after=\blank,
+% before=\blank]
+%
+% \definelistplacement[MyListItem][none]#1#2#3%
+% {(#1) (#2) (#3)}
+
+\def\definelistplacement
+ {\dodoubleempty\dodefinelistplacement}
+
+\def\dodefinelistplacement[#1][#2]%
+ {\setvalue{\@@dodolistelement#1}%
+ {\doifelsenothing{#2}
+ {\getvalue{\@@dodolistelement\v!command}}%
+ {\executeifdefined{\@@dodolistelement#2}
+ {\getvalue{\@@dodolistelement\v!command}}}%
+ \setvalue{\??li\currentlist\c!command}{\getvalue{\@@dodolistelement::#1}}}%
+ \setvalue{\@@dodolistelement::#1}}
+
+% don't mess arround with endgraf/grouping else we loose leftskip
+
+% \strippedcsname\dodolistelement
+
+\def\newlineinlist{\space}
+
+\let\currentlist\s!unknown
+
+\def\dolistelement#1#2#3#4#5#6% pas op: wordt ook elders gedefinieerd
+ {\doiftoclevelelse[#5]{\dodolistelement{#1}{#2}{#3}{#4}{#5}{#6}}{}}
+
+\def\dodolistelement#1#2#3#4#5#6%
+ {\def\currentlist{#1}%
+ \def\currentlistnumber{#3}%
+ \getvalue{\@@dodolistelement\listparameter\c!alternative}%
+ %\showcomposition
+ \let\@@iawidth\!!zeropoint % moet boolean worden
+ \bgroup
+ \edef\listelements
+ {\listparameter\c!pageboundaries}%
+ \ExpandBothAfter\doifinset{#3}\listelements
+ {\showmessage\m!systems{14}{#3}%
+ \page}%
+ \egroup
+ \dontcomplain
+ \setfullsectionnumber{\??li\currentlist}%
+ \dosomelistelement{#1}{#2}{#3}{#4}{#5}{#6}%
+ \global\utilitydonetrue}
+
+\def\donestedlistattributes#1#2%
+ {\doifvaluesomething{\??li\currentlist#2} % color
+ {\resetinteractionparameter\c!color
+ \resetinteractionparameter\c!contrastcolor}%
+ \dolistattributes{#1}{#2}}
+
+\def\dostartlistattributes{\dostartattributes{\??li\currentlist}}
+\def\dostoplistattributes {\dostopattributes}
+\def\dolistattributes {\doattributes{\??li\currentlist}}
+
+\def\dodocommandlistelement#1#2#3#4#5#6%
+ {\doifdefinedelse{\??li#1\c!command}
+ {\listparameter\c!command
+ {#3}{#4}{\pageprefix\??li\currentlist[#5]\translatednumber[#5]}}
+ {[\currentlist: #3 - #4 - \pageprefix\??li\currentlist[#5]\translatednumber[#5]]}}
+
+\def\dodofreelistelement#1#2#3#4#5#6#7#8%
+ {\def\makelistelement##1##2%
+ {\noindent % new and needed
+ \hbox
+ {\doifelse{\listparameter\c!interaction}{##1} % \??li ipv \??ia
+ {\setbox0\hbox{\showcontrastlocation{\??li\currentlist}{#6}{##2}}%
+ \linklisttoelement{#2}{#5}{#6}{\box0}}%{\copy0}}%
+ {##2}}}%
+ \listparameter\c!before% can be \hskip
+ \doifdefinedelse{\??li#1\c!command}
+ {\makelistelement{\listparameter\c!interaction}% this forces all
+ {\listparameter\c!command
+ {#3}% geen conversies etc
+ {#4}% geen conversies etc
+ {\pageprefix\??li\currentlist[#5]%
+ \translatednumber[#5]}}}
+ {#7%
+ \vbox
+ {\forgetall
+ \makelistelement\v!all
+ {%
+\doif{\listparameter\c!headnumber}\v!yes
+ {\makelistelement\v!sectionnumber
+ {\donestedlistattributes\c!numberstyle\c!numbercolor
+ {\listparameter\c!numbercommand{\currentlistsymbol}}}%
+}%
+ \makelistelement\v!text
+ {\donestedlistattributes\c!textstyle\c!textcolor
+ {\let\\=\newlineinlist
+ \dontconvertfont
+ \listparameter\c!textcommand{#4}}}%
+ \doif{\listparameter\c!pagenumber}\v!yes
+ {\doifsomething{#5}
+ {\makelistelement\v!pagenumber
+ {\donestedlistattributes\c!pagestyle\c!pagecolor
+ {\listparameter\c!pagecommand
+ {\pageprefix\??li\currentlist[#5]%
+ \translatednumber[#5]}}}}}}}%
+ #8}%
+ \listparameter\c!after}
+
+\def\dodofreehlistelement#1#2#3#4#5#6%
+ {\dodofreelistelement{#1}{#2}{#3}{#4}{#5}{#6}
+ {\noindent}{}}
+
+\def\dodofreevlistelement#1#2#3#4#5#6% % \nointerlineskip needed,
+ {\dodofreelistelement{#1}{#2}{#3}{#4}{#5}{#6} % otherwise wrong spacing
+ {\ifvmode\nointerlineskip\fi} % at multi-line lists
+ {\ifvmode\nointerlineskip\fi\endgraf\allowbreak}} % test is saveguard
+
+% to be documented: align, hang
+
+% now also in abc
+
+\def\limitatedlistentry#1%
+ {\doifelsenothing{\listparameter\c!maxwidth}
+ {\listparameter\c!textcommand{#1}}
+ {\listparameter\c!textcommand
+ {\limitatetext
+ {#1}%
+ {\listparameter\c!maxwidth}%
+ {\splitsymbol{\listparameter\c!limittext}}}}}
+
+\def\dodofixdlistelementABC#1#2#3#4#5#6% weeden
+ {\endgraf
+ \leftskip\listparameter\c!margin% na de \endgraf !
+ \listparameter\c!before
+ \!!widthc\listparameter\c!distance
+ \doifelse{\listparameter\c!width}\v!fit
+ {\!!widtha\zeropoint}
+ {\doifelsenothing{#3}
+ {\doifelse{\listparameter\c!aligntitle}\v!yes
+ {\!!widtha\zeropoint
+ \!!widthc\zeropoint}
+ {\!!widtha\listparameter\c!width}}
+ {\!!widtha\listparameter\c!width}}%
+ \getvalue{\??li\c!alternative\listparameter\c!alternative}%
+ \endgraf
+ \def\makelistelement##1##2%
+ {\doifelse{\listparameter\c!interaction}{##1}
+ {\setbox0\hbox{\showcontrastlocation\??ia{#6}{##2}}%
+ \linklisttoelement{#2}{#5}{#6}{\box0}}%{\copy0}}%
+ {\hbox{##2}}}%
+ \doif{\listparameter\c!interaction}\v!text % not supported ! ! ! ! ! ! text == all
+ {\setlistparameter\currentlist\c!interaction\v!all}%
+ % \dontleavehmode % new, else no margin, but wrong, better (else \indent as well):
+ \noindent
+ \makelistelement\v!all
+ {\setlocalhsize
+ \hsize\localhsize
+ \hbox to \hsize
+ {\forgetall
+ \dostartlistattributes\c!style\c!color\empty
+ \!!widthb\hsize
+\doifelse{\listparameter\c!headnumber}\v!yes{%
+ \setbox2\hbox \ifdim\!!widtha>\zeropoint to \!!widtha \fi
+ {\makelistelement\v!sectionnumber
+ {\donestedlistattributes\c!numberstyle\c!numbercolor
+ {\listparameter\c!numbercommand{\currentlistsymbol}}%
+ \hfill}}%
+}{%
+ \!!widtha\zeropoint
+ \!!widthc\zeropoint
+ \setbox2\hbox{}%
+}%
+ \setbox4\hbox
+ {\doif{\listparameter\c!pagenumber}\v!yes
+ {\doifsomething{#5} % \listwidth is new ; temp hack
+ {\hbox \ifdim\listwidth>\zeropoint to \listwidth\fi
+ {\hfill
+ \makelistelement\v!pagenumber
+ {\donestedlistattributes\c!pagestyle\c!pagecolor
+ {\listparameter\c!pagecommand
+ {\pageprefix\??li\currentlist[#5]%
+ \translatednumber[#5]}}}}}}}%
+ \vbox
+ {\hsize\!!widthb
+ \setupalign[\listparameter\c!align]%
+ \ifdim\!!widtha<\hsize
+ \hangindent\wd2
+ \dimen2=\!!widthc % \listparameter\c!distance
+ \advance\hangindent \dimen2
+ \hangafter\plusone
+ \doif{\listparameter\c!hang}\v!no{\hangafter\zerocount}%
+ \ifdim\wd4=\zeropoint % \ifvoid4
+ % we kunnen gewoon afbreken aan het eind
+ \else
+ \ifdim\listskip>\zeropoint\relax
+ \rightskip\listskip\!!plus10em\relax
+ \parfillskip-\rightskip
+ \fi
+ \fi
+ \else
+ \dimen2\zeropoint
+ \fi
+ \parindent\zeropoint\relax
+ \leavevmode
+ \box2\relax
+ \hskip\dimen2
+ \bgroup
+ \donestedlistattributes\c!textstyle\c!textcolor
+ {\let\\=\newlineinlist
+ \dontconvertfont
+ %\listparameter\c!textcommand{#4}}%
+ \limitatedlistentry{#4}}%
+ %\carryoverpar % new otherwise wrong linespacing
+ \egroup
+ \ifdim\wd4=\zeropoint\relax % \ifvoid4
+ % \ifdim\!!widtha<\hsize \hfill\strut \fi % spoils align
+ \else
+ \nobreak\listfill
+ \box4\relax
+ \relax
+ \fi}%
+ \hss
+ \dostoplistattributes}}% new
+ \endgraf % new, else problems with nointerlinespace and prevdepth
+ \nointerlineskip % anders verkeerde spatiering bij multi-line
+ \endgraf
+ \allowbreak
+ \listparameter\c!after}
+
+% % example from the context list
+%
+% \setuphead [part] [page=right,placehead=yes]
+% \setuplist [chapter] [alternative=d,before=\blank,after=\blank]
+% \setuplist [part] [before=\blank,after=\blank]
+%
+% \starttext
+% \startnarrower[2*right] \placecontent \stopnarrower
+% \blank[4*big]
+% \startsetups chapter
+% \blank \startnarrower[3*middle] \placecontent[criterium=local] \stopnarrower
+% \stopsetups
+% \placelist[part][criterium=text,after=\setups{chapter}]
+%
+% \part{First part} \chapter{Chapter one} \chapter{Chapter two}
+% \chapter{Chapter three} \chapter{Chapter four} \chapter{Chapter five}
+% \part{Second part} \chapter{Chapter one} \chapter{Chapter two}
+% \chapter{Chapter three} \chapter{Chapter four} \chapter{Chapter five}
+% \part{Third part} \chapter{Chapter one} \chapter{Chapter two}
+% \chapter{Chapter three} \chapter{Chapter four} \chapter{Chapter five}
+% \stoptext
+
+% overrulen interactie kan sneller, bv door hulpconstanten
+% te gebruiken en die te letten
+
+\def\dodofixdlistelementD#1#2#3#4#5#6%
+ {%\leftskip=\listparameter\c!margin
+ \ifvmode
+ \advance\leftskip\listparameter\c!margin% AANGEPAST
+ \fi
+ \bgroup
+ \ifvmode
+ \noindent\leavevmode % leavevmode ? ? ?
+ \fi
+ \doif{\listparameter\c!interaction}\v!text % not supported
+ {\setlistparameter\currentlist\c!interaction\v!sectionnumber}%
+ \doif{\listparameter\c!interaction}\v!all % not supported
+ {\setlistparameter\currentlist\c!interaction\v!sectionnumber}%
+ \def\makelistelement##1##2%
+ {\doifelse{\listparameter\c!interaction}{##1}
+ {\setbox0\hbox{\showcontrastlocation\??ia{#6}{##2}}%
+ \linklisttoelement{#2}{#5}{#6}{\box0}}%{\copy0}}%
+ {\hbox{##2}}}%
+ \setbox4\hbox
+ {\doif{\listparameter\c!pagenumber}\v!yes
+ {\doifsomething{#5}
+ {\makelistelement\v!pagenumber
+ {\donestedlistattributes\c!pagestyle\c!pagecolor
+ {\listparameter\c!pagecommand
+ {\pageprefix\??li\currentlist[#5]%
+ \translatednumber[#5]}}}}}}%
+\doif{\listparameter\c!headnumber}\v!yes{%
+ \donetrue
+ \doifnothing{#3}{\doifnothing{\listparameter\c!symbol}\donefalse}%
+ % == \doifnothing{#3\listparameter\c!symbol}\donefalse
+ \ifdone
+ \hbox
+ {\listparameter\c!left
+ \makelistelement\v!sectionnumber
+ {\donestedlistattributes\c!numberstyle\c!numbercolor
+ {\listparameter\c!numbercommand{\currentlistsymbol}}}%
+ \listparameter\c!right
+ \hskip.5em}%
+ \nobreak
+ \fi
+}%
+ \tolerance3500 % niet zomaar veranderen
+ \donestedlistattributes\c!textstyle\c!textcolor
+ {\let\\=\newlineinlist
+ \dontconvertfont
+ %\listparameter\c!textcommand{#4}}%
+ \limitatedlistentry{#4}}%
+ \ifvoid4\else
+ \nobreak
+ \hskip.75em\relax
+ \nobreak
+ \box4
+ \fi
+ \dimen0=\listparameter\c!distance\relax
+ \ifdim\dimen0<1em\relax
+ \hskip1em\!!plus1em\!!minus.25em\relax
+ \else
+ \hskip\dimen0\!!plus.5\dimen0\!!minus.25\dimen0\relax
+ \fi
+ \egroup}
+
+\def\dodofixdlistelementE#1%
+ {\dodofixdlistelementEFG
+ {\setupinteraction[\c!strut=\v!no]}
+ {\localframed[\??li\currentlist][\c!depth=\!!zeropoint,\c!color=]}
+ {}}
+
+\def\dodofixdlistelementF#1%
+ {\dodofixdlistelementEFG
+ {}
+ {\dosetraggedhbox{\listparameter\c!align}\raggedbox}
+ {}}
+
+\def\dodofixdlistelementG#1%
+ {\dodofixdlistelementEFG
+ {}
+ \midaligned
+ {}}
+
+\def\dodofixdlistelementEFG#1#2#3#4#5#6#7#8%
+ {\noindent
+ \hbox
+ {#1% in case E nils the strut
+ \let\\=\newlineinlist
+ \setbox0\hbox
+ {#2{\showcontrastlocation\??ia{#8}%
+ {\dostartlistattributes\c!style\c!color\empty
+ \ignorespaces\dontconvertfont\setstrut
+ \begstrut
+ %\doifelsenothing{\listparameter\c!maxwidth}
+ % {\listparameter\c!textcommand{#6}}
+ % {\listparameter\c!textcommand{\limitatetext{#6}{\listparameter\c!maxwidth}{\unknown}}}%
+ \limitatedlistentry{#6}%
+ \endstrut % struts new
+ \dostoplistattributes}}}%
+ \linklisttoelement{#4}{#7}{#8}{\box0}}%{\copy0}}%
+ \par % should be an option
+ \listparameter\c!inbetween}
+
+% better:
+%
+% \def\linklisttoelement#1#2#3#4% % list location format page data
+% {\ifautocrossdocument
+% \gotodestination{}{}{\currentlist::\@@filterblocknumberpart[#2]}{#3}{#4}%
+% \else
+% \gotonextinternal\currentlist{#1}{#3}{#4}%
+% \fi}
+%
+% but for the moment:
+
+\def\linklisttoelement#1#2#3#4% % list location format page data
+ {\gotonextinternal\currentlist{#1}{#3}{#4}}
+
+\def\writetolist[#1]#2#3%
+ {\doifsomething{#1}
+ {\convertargument#2\to\firstlistelement
+ \@EA\dowritetolist\@EA{#1}{\firstlistelement}{#3}{\v!head}}}
+
+\def\dobetweenlist#1#2#3#4% pas op: wordt ook elders gedefinieerd
+ {\doiftoclevelelse[#3]{#2}{}}
+
+\def\writebetweenlist[#1]#2%
+ {\@EA\dowritebetweenlist\@EA{#1}{#2}} % #2 weg en \expanded
+
+% NOG ENGELS MAKEN
+
+\def\listlength{\utilitylistlength}
+\def\listwidth {\utilitylistwidth}
+\def\listheight{\utilitylistheight}
+
+\def\utilitylistlength {0}
+\def\utilitylistwidth {0pt}
+\def\utilitylistheight {0pt}
+
+\def\dolistelementX#1#2#3#4#5#6%
+ {\doiftoclevelelse[#5]
+ {\doglobal\increment\utilitylistlength
+ \hbox
+ {\dolistattributes\c!textstyle\c!textcolor
+ {\let\\=\newlineinlist
+ \dontconvertfont
+ \listparameter\c!textcommand{#4}}}%
+ \global\utilitydonetrue}
+ {}}
+
+\def\dodeterminelistcharacteristics[#1][#2]%
+ {\begingroup
+ \doglobal\newcounter\utilitylistlength
+ \let\dolistelement\dolistelementX
+ \dosetuplist[#1][#2]%
+ \dogetcommalistelement1\from#1\to\commalistelement
+ \dosettoclevel\??li\commalistelement
+ \setbox0\vbox{\doutilities{listentries,#1}\jobname{#1}\relax\par}%
+ \xdef\utilitylistheight{\the\ht0}%
+ \xdef\utilitylistwidth {\the\wd0}%
+ \endgroup
+ \dosetlistmode}
+
+\def\determinelistcharacteristics
+ {\dodoubleempty\dodeterminelistcharacteristics}
+
+% \definerreferencelist
+% [externalfigure]
+% [command=\showbigfigure,
+% before=\page,
+% after=\page]
+%
+% \definereferencelist
+% [externaltable]
+% [command=\showbigtable,
+% before=\page,
+% after=\page]
+%
+% \def\showbigfigure#1%
+% {\externalfigure[#1][frame=on,factor=max]}
+%
+% \def\showbigtable#1%
+% {\switchtobodyfont[12pt]\getbuffer[#1]}
+%
+% \writetoreferencelist[externalfigure]{koe} {\externalfigure[koe] [width=3cm,frame=on]}
+% \writetoreferencelist[externalfigure]{paard}{\externalfigure[paard][width=3cm,frame=on]}
+%
+% \startbuffer[kanweg]
+% \starttable[|||]
+% \HL
+% \VL test \VL test \VL\SR
+% \HL
+% \VL test \VL test \VL\FR
+% \VL test \VL test \VL\MR
+% \VL test \VL test \VL\LR
+% \HL
+% \stoptable
+% \stopbuffer
+%
+% \writetoreferencelist[externaltable]{kanweg}{\switchtbodyfont[5pt]\getbuffer[kanweg]}
+%
+% \placereferencelist[externalfigure,externaltable]
+
+% algemeen
+
+\def\referencebutton#1[#2]%
+ {\hbox\bgroup % the \hbox is needed to bypass
+ \let\referenceprefix\empty % \dontleavehmode in \gotobox
+ \setupinteraction[\c!color=,\c!contrastcolor=,\c!strut=]%
+ \setupreferencing[\c!prefix=]%
+ \gotobox{\hbox{\ignorespaces#1}}[#2]%
+ \egroup}
+
+\newcounter\referencecounter
+
+\def\doreferencelistelement#1#2#3#4#5%
+ {\doiftoclevelelse[#4]
+ {\getvalue{\??rl#1\c!before}%
+ \referencebutton
+ {\getvalue{\??rl#1\c!command}{#3}\pagereference[\r!to#2]}%
+ [\r!from#2]%
+ \global\utilitydonetrue
+ \getvalue{\??rl#1\c!after}}
+ {}}
+
+\def\doplacereferencelist[#1][#2]%
+ {\begingroup
+ \setupreferencelist[#1][#2,\c!state=\v!stop]%
+ \dogetcommalistelement1\from#1\to\commalistelement
+ \dosettoclevel\??rl\commalistelement
+ \doutilities{listentries,#1}\jobname{#1}\relax\par
+ \endgroup}
+
+\def\placereferencelist
+ {\dodoubleempty\doplacereferencelist}
+
+\def\dowritetoreferencelist#1#2#3%
+ {\doifvalue{\??rl#1\c!state}\v!start
+ {\begingroup
+ \makesectionformat
+ \doifelse{\@@nmstate}\v!start
+ {\def\dopagenummer{\noexpand\pagenumber}}
+ {\let\dopagenummer\!!zerocount}%
+ \expanded
+ {\writeutilitycommand%
+ {\noexpand\referencelistentry%
+ {#1}% tag
+ {#2}% number
+ {#3}% data
+ {\sectionformat\sectionseparator\sectionseparator\dopagenummer}%
+ {\noexpand\realfolio}}}%
+ \endgroup}}
+
+\def\writetoreferencelist[#1]#2% #1=class #2=data #3=visualization
+ {\dowithnextbox
+ {\doifelsevalue{\??rl#1\c!state}\v!start
+ {\doglobal\increment\referencecounter % must be resolved due to #2
+ \referencebutton
+ {\flushnextbox
+ \pagereference[\r!from\referencecounter]%
+ \dowritetoreferencelist{#1}{\referencecounter}{#2}}%
+ [\r!to\referencecounter]}
+ {\flushnextbox}}
+ \hbox} % \vbox ?
+
+\def\referencelistentry#1%
+ {\executeifdefined{#1\c!list}\gobblefourarguments}
+
+\def\dodosetreferencelist#1%
+ {\setvalue{#1\c!list}{\doreferencelistelement{#1}}}
+
+\def\dodoresetreferencelist#1%
+ {\setvalue{#1\c!list}{\gobblefourarguments}}
+
+\def\dodefinereferencelist[#1][#2]%
+ {\setupreferencelist[#1]
+ [\c!command=,
+ \c!state=\v!start,
+ \c!criterium=\v!all,
+ \c!before=,
+ \c!after=,
+ #2]%
+ \resetcounter{#1}%
+ \addutilityreset{#1}%
+ \setvalue{\s!set #1}{\dodosetreferencelist {#1}}%
+ \setvalue{\s!reset#1}{\dodoresetreferencelist{#1}}}
+
+\def\definereferencelist
+ {\dodoubleempty\dodefinereferencelist}
+
+\def\dosetupreferencelist[#1][#2]%
+ {\getparameters[\??rl#1][#2]}
+
+\def\setupreferencelist
+ {\dodoubleempty\dosetupreferencelist}
+
+\def\dosetupcombinedlist[#1][#2]%
+ {\getparameters[\??ih#1][#2]%
+ \expanded{\setuplist[\getvalue{\??ih#1\c!list}]}[#2]}
+
+\def\setupcombinedlist
+ {\dodoubleargument\dosetupcombinedlist}
+
+\def\doplacecombinedlist[#1][#2]%
+ {\begingroup
+ \getparameters[\??ih#1][#2]%
+ \dosettoclevel\??ih{#1}%
+ \edef\combinedlist{\getvalue{\??ih#1\c!list}}%
+ \doifelsevalue{\??ih#1\c!level}\v!current %
+ {\!!counta=0\@@kolevel} % hm: \@@kolevel
+ {\fullexpandoneargafter\doifnumberelse{\getvalue{\??ih#1\c!level}}% in verband
+ {\!!counta\getvalue{\??ih#1\c!level}% met de vorige implementatie
+ \advance\!!counta \plusone % accepteren we ook nummers (0==deel)
+ \getfromcommacommand[\combinedlist][\!!counta]%
+ \edef\maximumlist{\commalistelement}}%
+ {\edef\maximumlist{\getvalue{\??ih#1\c!level}}}%
+ \doifdefinedelse{\??ko\maximumlist\c!section}
+ {\!!counta\getvalue{\??se\getvalue{\??ko\maximumlist\c!section}\c!level}}%
+ {\!!counta\zerocount}}
+ \let\!!stringa\combinedlist
+ \let\combinedlist\empty
+ \def\docommand##1%
+ {\doifdefinedelse{\??ko##1\c!section}
+ {\ifnum\getvalue{\??se\getvalue{\??ko##1\c!section}\c!level}>\!!counta\else
+ \addtocommalist{##1}\combinedlist
+ \fi}%
+ {\addtocommalist{##1}\combinedlist}}%
+ \processcommacommand[\!!stringa]\docommand
+ \doifvalue{\??ih#1\c!coupling}\v!on
+ {\startlistreferences{#1}}%
+ \ExpandFirstAfter\dodoplacecombinedlist[\combinedlist][#2]%
+ \stoplistreferences{#1}%
+ \endgroup
+ \dosetlistmode}
+
+\def\dodoplacecombinedlist[#1][#2]%
+ {\dobeginoflist
+ \dosetuplist[#1][#2]%
+ \doutilities{listentries,#1}\jobname{#1}\relax\par
+ \doendoflist}
+
+\def\docompletecombinedlist[#1][#2]%
+ {\expanded{\systemsuppliedtitle[#1]{\noexpand\headtext{#1}}}% expansion due to v! vs french !
+ \doplacecombinedlist[#1][#2]}
+
+\def\dodefinecombinedlist[#1][#2][#3]%
+ {\makerawcommalist[#2]\combinedlist % for fast processing
+ \letvalue{\??ih#1\c!list}\combinedlist
+ \getcommalistsize[#2]%
+ \getfromcommalist[#2][\commalistsize]%
+ \doeassign[\??ih#1][\c!level=\commalistelement]%
+ \getparameters
+ [\??ih#1]
+ [\c!criterium=\v!local,#3]%
+ \setvalue{\e!setup#1\e!endsetup}%
+ {\dodoubleempty\dosetupcombinedlist[#1]}%
+ \setvalue{\e!place#1}%
+ {\dodoubleempty\doplacecombinedlist[#1]}%
+ \setvalue{\e!complete#1}%
+ {\dodoubleempty\docompletecombinedlist[#1]}}
+
+\def\definecombinedlist%
+ {\dotripleempty\dodefinecombinedlist}
+
+\def\placecombinedlist%
+ {\dodoubleempty\doplacecombinedlist}
+
+% new and yet undocumented (used in cocoa qa)
+%
+% \setupremaininglistlength
+% [left=\hss nog~,right=~ingangen]
+%
+% \resetremaininglistlength
+% [section][settings]
+%
+% \placelist
+% [section]
+% [before=\showremaininglistlength]
+%
+% \dorecurse{100}{\section{hans}}
+
+\definesystemvariable {ll} % ListLength
+
+\def\setupremaininglistlength[#1]%
+ {\getparameters[\??ll][#1]%
+ \globallet\listlengthcounter\!!zerocount}
+
+\setupremaininglistlength
+ [\c!left=\hss,\c!right=,\c!number=\v!yes,
+ \c!before=\blank,\c!after=\page,
+ \c!style=\v!smallnormal,\c!color=]
+
+\def\resetremaininglistlength
+ {\dodoubleempty\doresetremaininglistlength}
+
+\def\doresetremaininglistlength[#1][#2]%
+ {\determinelistcharacteristics[#1][#2]% \determinelistcharacteristics[#1][#2]%
+ \xdef\listlengthcounter{\number\utilitylistlength}}
+
+\def\showremaininglistlength
+ {\bgroup
+ \ifnum\listlengthcounter>\plusone
+ \scratchdimen\pagetotal
+ \setbox\scratchbox\vbox
+ {\@@llbefore\par\horizontalstrut\par\horizontalstrut\par\@@llafter}%
+ \advance\scratchdimen \ht\scratchbox
+ \advance\scratchdimen \dp\scratchbox
+ \ifdim\scratchdimen>\pagegoal
+ \@@llbefore
+ \nobreak\hbox to \hsize
+ {\doifnot\@@llnumber\v!yes{\let\listlengthcounter\empty}%
+ \doattributes\??ll\c!style\c!color{\@@llleft\listlengthcounter\@@llright}}
+ \@@llafter
+ \fi
+ \fi
+ \doglobal\decrement\listlengthcounter\relax
+ \egroup}
+
+\setupreferencelist
+ [\c!style=\v!normal]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-ltb.tex b/Master/texmf-dist/tex/context/base/core-ltb.tex
new file mode 100644
index 00000000000..209f5434e81
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ltb.tex
@@ -0,0 +1,767 @@
+%D \module
+%D [ file=core-ltb,
+%D version=2002.10.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Line Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% testfile: tfmetrics.tex
+
+% todo: als nx>1, dan in geval van rek tussenruimte berekenen en optellen
+% bij breedte, dus: nx nog niet gebruiken in combinatie met rek ! ! ! ! !
+
+\beginTEX
+ \expandafter \endinput
+\endTEX
+
+% This module is experimental, undocumented, and currently only set up
+% eTeX. It provides a mechanism for typesetting very large tables,
+% spanning many pages horizontally and vertically, with repeated
+% header lines and (entry) columns, tab tracking, color, etc. In does
+% two passes over a table, which is why the table goes into a
+% buffer or file. As said, tables can be real huge.
+
+% \BH \BC .. \EC \BC .. \EC \EH % append
+% \BR \BC .. \EC \BC .. \EC \ER
+%
+% or
+%
+% \NC .. \NC .. \NC \NR (todo: optional last \NC)
+
+% alternative:
+%
+% (1) direct run, save content in macro, but only if needed
+%
+% todo
+%
+% (2) buffered table content
+%
+% \startbuffer
+% \startlinetablehead
+% \stoplinetablehead
+% \startlinetablebody
+% \stoplinetablebody
+% \stopbuffer
+%
+% \processlinetablebuffer[buffer]
+%
+% in buffer : head and body
+%
+% (3) unbuffered run, multipass
+%
+% - run with starting width zero / prev run
+% - clip on prev run
+% - flush real widths
+
+\writestatus{loading}{Context Core Macros / Line Tables}
+
+\unprotect
+
+\chardef\linetablesplitstate\zerocount
+\chardef\linetableheadstate \zerocount
+
+\edef\??ler{\??le:r:}
+\edef\??lec{\??le:c:}
+\edef\??lew{\??le:w:}
+
+\newif\iflinetablepreroll
+\newif\ifinlinetable
+
+\newcount\linetablecolumn
+\newcount\linetablesubcol
+\newdimen\linetablewidth
+\newdimen\linetableheight
+\newbox \linetablecell
+
+\let\noflinetablecolumns\!!zerocount
+\let\noflinetablerows \!!zerocount
+\let\noflinetablelines \!!zerocount
+\let\noflinetableparts \!!zerocount
+\let\linetablepart \!!plusone
+\let\linetablestep \!!plusone
+\let\linetableline \!!zerocount
+\let\linetablerow \!!zerocount
+\let\linetablerows \!!zerocount
+
+\initializetablebox \zerocount % holds repeater
+
+\chardef\linetablehmode \zerocount
+\chardef\linetablepage \zerocount
+\chardef\linetablerepeat\zerocount
+
+\def\setuplinetable
+ {\dotripleempty\dosetuplinetable}
+
+\def\dosetuplinetable[#1][#2][#3]%
+ {\ifthirdargument
+ \getparameters[\??le:#1:#2][#3]%
+ \else\ifsecondargument
+ \getparameters[\??lec#1][#2]%
+ \else
+ \getparameters[\??le][#1]%
+ \fi\fi}
+
+\setuplinetable
+ [\c!n=\!!maxcard,
+ \c!lines=\!!maxcard,
+ \c!nx=\plusone,
+ \c!nleft=0,
+ \c!repeat=\v!yes, % when \c!nleft>0, repeat on both pages
+ \c!before=,
+ \c!after=,
+ \c!inbetween=\page,
+ \c!distance=\zeropoint,
+ \c!stretch=\v!no,
+ \c!align=\c!right,
+ \c!leftoffset=.25ex,
+ \c!rightoffset=\linetableparameter\c!leftoffset,
+ \c!maxwidth=\zeropoint,
+ \c!width=5em,
+ \c!height=\v!fit, % \v!line = faster
+ \c!background=,
+ \c!backgroundcolor=]
+
+\def\linetableparameter#1%
+ {\csname\??le#1\endcsname}
+
+\def\doifelselinetablecparameter#1%
+ {\ifcsname\??lec\number\linetablecolumn#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\linetablecparameter#1%
+ {\csname
+ \ifcsname\??lec\number\linetablecolumn#1\endcsname
+ \??lec\number\linetablecolumn
+ \else
+ \??le
+ \fi
+ #1\endcsname}
+
+\def\linetablerparameter#1% faster, leaner and meaner
+ {\csname
+ \ifnum\linetablerow=\zerocount % geen ifcase
+ \ifcsname\??ler\v!header#1\endcsname
+ \??ler\v!header#1%
+ \else\ifcsname\??ler0#1\endcsname
+ \??ler0#1%
+ \else
+ \s!empty
+ \fi\fi
+ \else
+ \ifcsname\??ler\number\linetablerow#1\endcsname
+ \??ler\number\linetablerow#1%
+ \else\ifcsname\??ler\v!oddeven\linetablerow#1\endcsname
+ \??ler\v!oddeven\linetablerow#1%
+ \else
+ \s!empty
+ \fi\fi
+ \fi
+ \endcsname}
+
+\def\setnoftableslines
+ {\doifelse{\linetableparameter\c!lines}\v!fit
+ {% whitespace already added by vertical strut
+ \ifdim\pagegoal<\maxdimen
+ \scratchdimen\pagegoal
+ \advance\scratchdimen -\pagetotal
+ \else
+ \scratchdimen\textheight
+ \fi
+ \getrawnoflines\scratchdimen
+ \xdef\noflinetablelines{\the\noflines}
+\iflinetablepreroll \else \ifnum\noflinetablelines<\plustwo
+ \page \setnoftableslines
+\fi \fi
+}
+ {\xdef\noflinetablelines{\linetableparameter\c!lines}}}
+
+\def\startlinetablecell
+ {\dosingleempty\dostartlinetablecell}
+
+\def\dostartlinetablecell[#1]%
+ {\global\setbox\linetablecell\hbox\bgroup
+ \iffirstargument
+ \getparameters[\??lec\number\linetablecolumn][#1]%
+ \fi
+ \xdef\linetablestep{\linetablecparameter\c!nx}%
+ \ifcase\linetablestep\or
+ \scratchdimen\linetablecparameter\c!width
+ \scratchskip \linetablecparameter\c!distance
+ \else
+ \scratchdimen \zeropoint
+ \scratchskip \zeropoint
+ \scratchcounter\linetablecolumn
+ \dorecurse\linetablestep
+ {\advance\scratchdimen\linetablecparameter\c!width
+ %\advance\scratchskip \linetablecparameter\c!distance
+ \global\advance \linetablecolumn\plusone
+ \advance\scratchskip \linetablecparameter\c!distance
+ }%
+ \global\linetablecolumn\scratchcounter
+ \fi
+ \chardef\linetablemode
+ \iflinetablepreroll
+ \ifdim\scratchdimen>\zeropoint \zerocount \else \plustwo \fi
+ \else
+ \zerocount
+ \fi
+ \ifcase\linetablemode
+ \ifcase\linetablehmode
+ % nothing
+ \or
+ % fit, keep it simple
+ \or
+ \chardef\linetablemode\plusone % line
+ \else
+ % some already calculated height
+ \fi
+ \fi
+ \setbox\scratchbox\hbox
+ \bgroup
+ \dontcomplain
+ \hskip\linetablecparameter\c!leftoffset\relax
+ % 0 = width, unknown height
+ % 1 = width, fixed height
+ % 2 = no width, auto hsize
+ \ifnum\linetablemode<\plustwo
+ \advance\scratchdimen-\linetablecparameter\c!leftoffset
+ \advance\scratchdimen-\linetablecparameter\c!rightoffset
+ \fi
+ \ifcase\linetablemode
+ \dosetraggedcommand{\linetablecparameter\c!align}%
+ \vtop \ifdim\linetableheight>\zeropoint to\linetableheight \fi \bgroup
+ \hsize\scratchdimen
+ \raggedcommand
+ \else
+ \setalignmentswitch{\linetablecparameter\c!align}%
+ \hbox \ifcase\linetablemode \or to\scratchdimen \fi \bgroup
+ \ifcase\alignmentswitch\hss\or\hss\fi
+ \fi
+ \dostartattributes{\??lec\number\linetablecolumn}\c!style\c!color\empty
+ \begstrut \ignorespaces}
+
+\def\stoplinetablecell
+ {\unskip \endstrut
+ \dostopattributes
+ \ifcase\linetablemode
+ \endgraf
+ \else
+ \ifcase\alignmentswitch\else\hss\fi
+ \fi
+ \egroup
+ \hskip\linetablecparameter\c!rightoffset
+ \egroup
+ \iflinetablepreroll
+ \box\scratchbox
+ \else
+ \doif{\linetablecparameter\c!background}\v!color
+ {\backgroundline[\linetablecparameter\c!backgroundcolor]}%
+ {\box\scratchbox}%
+ \fi
+ \egroup}
+
+\def\savelinetablepart
+ {\global\setbox\tablebox\linetablepart
+ \ifnum\linetablepart=\zerocount
+ \box\scratchbox % just storing
+ \else
+ \vbox
+ {\ifvoid\tablebox\linetablepart\else\unvbox\tablebox\linetablepart\fi
+ \doif{\linetablerparameter\c!background}\v!color
+ {\backgroundline[\linetablerparameter\c!backgroundcolor]}%
+ {\box\scratchbox}% is also arg to \backgroundline
+ \endgraf
+ \linetablerparameter\c!after}%
+ \fi}
+
+\def\flushlinetableparts
+ {\doglobal\increment\linetableline
+ \ifnum\linetableline<\noflinetablelines
+ % keep collecting
+ \else
+ \iflinetablepreroll
+ % forget about them
+ \else
+ \dorecurse\noflinetableparts
+ {\let\linetablepart\recurselevel
+ \dp\tablebox\linetablepart\strutdepth
+ % noindent en endgraf needed else whitespace mess-up!
+ \whitespace % here not after verticalstrut
+ \ifdim\topskipgap=\zeropoint\else
+ \verticalstrut\nobreak\kern-\struttotal\kern-\parskip\nobreak\nointerlineskip % fix topskip
+ \fi
+ \noindent\strut\hbox to \hsize{\box\tablebox\linetablepart\hss}\endgraf
+ \ifnum\linetablepart<\noflinetableparts\relax
+ \linetableparameter\c!inbetween
+ \fi}%
+ \ifnum\linetablerows<\noflinetablerows\relax
+ \linetableparameter\c!inbetween
+ \else
+ % after, later
+ \fi
+ \chardef\linetableheadstate\plusthree
+ \global\setbox\tablebox\zerocount\emptybox % here
+ \fi
+ % reset \linetablerow will be an option, currently
+ % starts at zero after split
+ \globallet\linetablerow\!!zerocount
+ \globallet\linetableline\!!zerocount
+ \global\chardef\linetablepage\zerocount
+ \global\linetablewidth\zeropoint
+ \setnoftableslines
+ \fi}
+
+\def\startlinetablepart
+ {\global\linetablesubcol\zerocount
+ \setbox\scratchbox\hbox\bgroup
+ \doconvertfont{\linetablerparameter\c!style}%
+ \startcolor[\linetablerparameter\c!color]%
+ \ignorespaces}
+
+\def\stoplinetablepart
+ {\ifnum\linetablepart>\zerocount
+ \unskip \unskip % remove last intercolumn skip (distance+fill)
+ \fi
+ \stopcolor
+ \egroup
+ \iflinetablepreroll \else
+ \ifcase\linetablepart
+ % we're collecting the repeater
+ \else
+ \scratchdimen\hsize \advance\scratchdimen-\wd\scratchbox\relax
+ \ifdim\scratchdimen>\linetableparameter\c!stretch\else
+ \setbox\scratchbox\hbox to \hsize{\unhbox\scratchbox}%
+ \fi
+ \fi
+ \fi}
+
+\def\checklinetablepart
+ {\global\advance\linetablewidth\wd\linetablecell
+ \global\advance\linetablecolumn\linetablestep
+ \global\advance\linetablesubcol\linetablestep
+ \relax
+ %\message{\the\linetablecolumn,\the\linetablesubcol}\wait
+ % from now on the column counter is already incremented
+ \ifcase\linetablesplitstate
+ \iflinetablepreroll \else
+ \box\linetablecell
+ % the columncounter is one ahead !
+% \hskip\linetablecparameter\c!afstand
+ \hskip\scratchskip
+ \fi
+ %%%
+ \donefalse
+ \ifcase\linetablerepeat\else
+ % van te voren berekenen
+ \scratchcounter\linetablecolumn\advance\scratchcounter-\plustwo
+ \ifnum\linetablerepeat=\scratchcounter
+ \donetrue % collecting repeater
+ \fi
+ \fi
+ %%%%
+ \ifdone
+ % collecting repeater
+ \else
+ \ifnum\linetablecolumn>\getvalue{\??le::\linetablepart}\relax
+ \donetrue
+ \fi
+ \fi
+ \ifdone
+ \stoplinetablepart
+ \iflinetablepreroll \else
+ \savelinetablepart
+ \fi
+ \ifcase\linetablepage \or
+ \global\chardef\linetablepage \plustwo
+ \else
+ \global\chardef\linetablepage \plusone
+ \fi
+ \doglobal\increment\linetablepart
+ \global\linetablewidth\wd\tablebox\zerocount
+ \startlinetablepart
+ \fi
+ \else
+ \donefalse
+ \!!doneafalse
+ \ifcase\linetablerepeat\else
+ % van te voren berekenen
+ \scratchcounter\linetablecolumn \advance\scratchcounter-\plustwo
+ \ifnum\linetablerepeat=\scratchcounter
+ \donetrue % collecting repeater
+ \fi
+ \fi
+ \ifdone
+ \!!doneatrue
+ % collecting repeater
+ \else\ifdim\linetablewidth>\hsize
+ \donetrue
+ \else
+% \global\advance\linetablewidth\linetablecparameter\c!afstand\relax
+ \global\advance\linetablewidth\scratchskip
+ \ifdim\linetablewidth>\hsize % ?
+ \donetrue
+ \fi
+ \fi\fi
+ \ifdone
+ \stoplinetablepart
+ \savelinetablepart
+ \ifcase\linetablepage \or
+ \global\chardef\linetablepage \plustwo
+ \else
+ \global\chardef\linetablepage \plusone
+ \fi
+ \doglobal\increment\linetablepart
+ \ifnum\linetablepart>\noflinetableparts
+ \globallet\noflinetableparts\linetablepart
+ \initializetablebox\linetablepart
+ \fi
+ \global\linetablewidth\wd\linetablecell
+ \startlinetablepart
+ \if!!doneb \else \ifcase\linetablerepeat \else
+ % check for left/right page
+ \ifcase\linetablepage\donetrue\or\donetrue\or\donefalse\fi\ifdone
+ % insert repeater
+ \global\advance\linetablewidth\wd\tablebox\zerocount
+ \iflinetablepreroll\kern\wd\else\unhcopy\fi\tablebox\zerocount
+ \fi
+ \fi \fi
+ \fi
+ \iflinetablepreroll \else
+ \box\linetablecell
+ % the columncounter is one ahead !
+% \hskip\linetablecparameter\c!afstand
+% \hskip\scratchskip
+\dorecurse\linetablestep{\strut\hfil}%
+ \hskip\scratchskip
+ \fi
+ \fi}
+
+% \linetableparameter\c!var -> \@@levar (when no classes)
+
+\def\startlinetablerun % to do: quit when nested
+ {\bgroup
+ \inlinetabletrue
+ % autowidth
+ \doif{\linetableparameter\c!maxwidth}\v!fit
+ {\setuplinetable[\c!maxwidth=\zeropoint]}%
+ \processaction
+ [\linetableparameter\c!stretch]
+ [ \v!no=>{\setuplinetable[\c!stretch=\maxdimen]},% no stretch
+ \v!yes=>{\setuplinetable[\c!stretch=\zeropoint]}]% max stretch
+ \chardef\linetablerepeat\linetableparameter\c!nleft
+ \chardef\linetablesplitstate % =
+ \ifdim\linetableparameter\c!maxwidth>\zeropoint
+ \zerocount \else \plusone
+ \fi
+ % optional prevdepth correction
+ \iflinetablepreroll
+ \globallet\noflinetablerows\!!zerocount
+ \else
+ \linetableparameter\c!before
+ \fi
+ \globallet\linetablerows\!!zerocount
+ \globallet\noflinetablecolumns\!!zerocount
+ \globallet\noflinetableparts\!!zerocount
+ \!!counta\zerocount
+ \def\docommando##1%
+ {\doglobal\increment\noflinetableparts
+ \advance\!!counta##1%
+ \setxvalue{\??le::\noflinetableparts}{\the\!!counta}}%
+ \processcommacommand[\linetableparameter\c!n]\docommando
+ \initializetableboxes\noflinetableparts
+ \ifcase\linetablerepeat
+ \globallet\linetablepart\!!plusone
+ \else
+ \globallet\linetablepart\!!zerocount % repeater
+ \fi
+ \globallet\linetablestep\!!plusone
+ \globallet\linetableline\!!zerocount
+ \globallet\linetablerow \!!zerocount
+ \global\linetablecolumn \zerocount
+ \global\linetablesubcol \zerocount
+ \global\linetablewidth \zeropoint
+\iflinetablepreroll \else \ifdim\pagetotal>\zeropoint
+ \verticalstrut\kern-\struttotal
+\fi \fi
+ \setnoftableslines
+ \checklinetablepage
+ \let\BR\linetableBR
+ \let\ER\linetableER
+ \let\BH\linetableBR
+ \let\EH\linetableER
+ \let\BC\linetableBC
+ \let\EC\linetableEC
+ \let\NC\linetableNC
+ \let\NR\linetableNR
+ \flushlinetablehead}
+
+\def\stoplinetablerun
+ {\globallet\linetableline\!!maxcard
+ \chardef\linetableheadstate\zerocount % blocked
+ \flushlinetableparts
+ \iflinetablepreroll \else
+ \linetableparameter\c!after
+ \fi
+ \globallet\linetablepart \!!zerocount
+ \globallet\noflinetableparts\!!zerocount
+ \egroup}
+
+% \def\checklinecolumnwidth
+% {\ifundefined{\??lew\number\linetablecolumn}%
+% \donetrue
+% \else\ifdim\getvalue{\??lew\number\linetablecolumn}<\wd\linetablecell
+% \donetrue
+% \else
+% \donefalse
+% \fi\fi
+% \ifdone
+% \setxvalue{\??lew\number\linetablecolumn}{\the\wd\linetablecell}%
+% \fi}
+%
+% \def\checklinecolumnwidth
+% {\ifcsname\??lew\number\linetablecolumn\endcsname
+% \ifdim\csname\??lew\number\linetablecolumn\endcsname<\wd\linetablecell
+% \donetrue
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \setxvalue{\??lew\number\linetablecolumn}{\the\wd\linetablecell}%
+% \fi}
+
+\def\checklinecolumnwidth
+ {\expandafter\xdef\csname\??lew\number\linetablecolumn\endcsname
+ {\expandafter\ifx\csname\??lew\number\linetablecolumn\endcsname\relax
+ \the\wd\linetablecell
+ \else\ifdim\csname\??lew\number\linetablecolumn\endcsname<\wd\linetablecell
+ \the\wd\linetablecell
+ \else
+ \csname\??lew\number\linetablecolumn\endcsname
+ \fi\fi}}
+
+\def\linetableBR
+ {\dosingleempty\dolinetableBR}
+
+\def\dolinetableBR[#1]% #1 not yet implemented
+ {\ifnum\linetableheadstate=1\else
+ \doglobal\increment\linetablerow
+ \doglobal\increment\linetablerows
+ \fi
+ \global\linetablecolumn\plusone
+ \global\linetablesubcol\plusone
+% \linetableheight\linetablerparameter\c!height
+%
+% \ifx\linetableheight\empty
+% % nothing
+% \else\ifx\linetableheight\v!fit
+% % keep it simple
+% \else\ifx\linetableheight\v!line
+% \chardef\linetablemode\plusone
+% \else
+% \!!heighta\linetableheight
+% \advance\!!heighta-\strutdepth
+% \fi\fi\fi
+%
+ \linetableheight\zeropoint
+ \edef\!!stringa{\linetablerparameter\c!height}%
+ \ifx\!!stringa\empty
+ \chardef\linetablehmode\zerocount
+ \else\ifx\!!stringa\v!fit
+ \chardef\linetablehmode\plusone
+ \else\ifx\!!stringa\v!line
+ \chardef\linetablehmode\plustwo
+ \else
+ \linetableheight\!!stringa
+ \advance\linetableheight-\strutdepth
+ \fi\fi\fi
+%
+ \startlinetablepart}
+
+\def\linetableBC
+ {\startlinetablecell}
+
+\def\linetableEC
+ {\stoplinetablecell
+ \iflinetablepreroll
+ \checklinecolumnwidth
+ \fi
+ \checklinetablepart}
+
+\def\linetableER
+ {% \stoplinetablecell
+ % no \box\linetablecell, i.e. dummy columnn, last \NC \NR
+ \stoplinetablepart
+ \savelinetablepart
+ \advance\linetablecolumn \minusone
+ \ifnum\linetablecolumn>\noflinetablecolumns
+ \xdef\noflinetablecolumns{\number\linetablecolumn}%
+ \fi
+ \flushlinetableparts
+ \global\linetablecolumn\zerocount
+ \global\linetablewidth \zeropoint
+ \ifcase\linetablerepeat
+ \globallet\linetablepart\!!plusone
+ \else
+ \globallet\linetablepart\!!zerocount % repeater
+ \fi
+ \checklinetablepage
+ \flushlinetablehead}
+
+\def\checklinetablepage
+ {\global\chardef\linetablepage\zerocount
+ \ifcase\linetablerepeat \else \ifcase\linetablepage
+ \doif{\linetableparameter\c!repeat}\v!no
+ {\global\chardef\linetablepage\doifoddpageelse\plusone\plustwo}%
+ \fi \fi}
+
+\def\flushlinetablehead
+ {\ifcase\linetableheadstate
+ % 0 blocked
+ \or
+ % 1 doing head
+ \or
+ % 2 head done
+ \or
+ % 3 trigger flush
+ \chardef\linetableheadstate\plusone
+ \the\@@linetablehead\relax
+ \chardef\linetableheadstate\plustwo
+ \fi}
+
+\def\linetableNC % first time special treatment
+ {\relax
+ \ifcase\linetablecolumn
+ \linetableBR
+ \else
+ \linetableEC
+ \fi
+ \linetableBC} % beware, this will result in BR BC EC BC NR
+
+\def\linetableNR
+ {\stoplinetablecell % dummy
+ \linetableER}
+
+\def\startlinetable
+ {\startlinetablerun}
+
+\def\stoplinetable
+ {\stoplinetablerun}
+
+\def\startlinetableanalysis
+ {\bgroup
+ \linetableprerolltrue
+ \trialtypesettingtrue
+ \startlinetablerun}
+
+\def\stoplinetableanalysis
+ {\stoplinetablerun
+ \egroup
+ \globallet\noflinetablerows\linetablerows
+ \dorecurse\noflinetablecolumns % global, from last run {\linetableparameter\c!n}
+ {%\writestatus{linetable}{\recurselevel->\getvalue{\??lew\recurselevel}}%
+ \setevalue{\??lec\recurselevel\c!width}{\getvalue{\??lew\recurselevel}}%
+ \letgvalue{\??lew\recurselevel}\!!zeropoint}} % init next table
+
+% todo: store in box instead of macro
+
+\newtoks \@@linetablehead
+
+\long\def\startlinetablehead#1\stoplinetablehead
+ {\ifinlinetable
+ \@@linetablehead\emptytoks
+ \fi
+ \chardef\linetableheadstate3 % full
+ \@@linetablehead{#1}%
+ \ifinlinetable
+ \flushlinetablehead
+ \fi}
+
+\def\linetableBH
+ {\ifx\EC\relax
+ % signal, grabbing lines
+ \else
+ \@@linetablehead\emptytoks
+ \fi
+ \pushmacro\BC
+ \pushmacro\EC
+ \def\BC##1\EC{\appendtoks##1\to\@@linetablehead}%
+ \let\EC\relax} % signal
+
+\def\linetableEH
+ {\popmacro\EC
+ \popmacro\BC
+ \@EA\startlinetablehead\the\@@linetablehead\stoplinetablehead}
+
+\let\startlinetablebody\donothing
+\let\stoplinetablebody \donothing
+
+\def\processlinetablebuffer
+ {\dosingleempty\doprocesslinetablebuffer}
+
+\def\doprocesslinetablebuffer[#1]%
+ {\bgroup
+ \let\startlinetable\donothing
+ \let\stoplinetable \donothing
+ \startlinetableanalysis\getbuffer[#1]\stoplinetableanalysis
+ \startlinetablerun \getbuffer[#1]\stoplinetablerun
+ \egroup}
+
+\def\processlinetablefile#1%
+ {\bgroup
+ \let\startlinetable\donothing
+ \let\stoplinetable \donothing
+ \startlinetableanalysis\readfile{#1}\donothing\donothing\stoplinetableanalysis
+ \startlinetablerun \readfile{#1}\donothing\donothing\stoplinetablerun
+ \egroup}
+
+\protect \endinput
+
+\doifnotmode{demo}{\endinput}
+
+\setuplinetable[n=6,m={2,2,2},lines=25] % m ?
+
+\setuplinetable[c][1] [width=2cm,background=color,backgroundcolor=red]
+\setuplinetable[c][4] [width=3cm,background=color,backgroundcolor=yellow]
+\setuplinetable[c][6] [width=3cm,background=color,backgroundcolor=magenta]
+\setuplinetable[r][odd] [background=color,backgroundcolor=gray]
+\setuplinetable[r][even][background=color,backgroundcolor=green]
+
+\starttext
+
+\showframe \showstruts
+
+\setupcolors[state=start]
+
+\setuppagenumbering[alternative=doublesided]\page[left]
+
+\startlinetable
+\NC aaa\crlf aaa \NC bb \NC c \NC ddddd \NC eeee \NC ff \NC \NR
+\dorecurse{100}{\NC aaa \NC bb \NC c \NC ddddd \NC eeee \NC ff \NC \NR}
+\stoplinetable
+
+\startlinetable
+\NC[style=slanted,color=green,background=color,backgroundcolor=darkred,nx=2,uitlijnen=middle] xxx
+ \NC yy \NC ddddd \NC eeee \NC ff \NC \NR
+\dorecurse{100}{\NC aaa \NC bb \NC c \NC ddddd \NC eeee \NC ff \NC \NR}
+\stoplinetable
+
+% \startbuffer[lt]
+% \NC aaa\crlf aaa \NC bb \NC c \NC ddddd \NC ee \NC ff \NC \NR
+% \NC aaa\crlf aaa \NC b \NC cc \NC ddd \NC eeee \NC f \NC \NR
+% \stopbuffer
+%
+% \processlinetablebuffer[lt]
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/core-mak.tex b/Master/texmf-dist/tex/context/base/core-mak.tex
new file mode 100644
index 00000000000..68315ea5715
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-mak.tex
@@ -0,0 +1,102 @@
+%D \module
+%D [ file=core-mak,
+%D version=1997.10.05,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=General Makeup Commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / General Makeup Commands}
+
+\unprotect
+
+% \definieerplaats[naam][instellingen]
+% \stelplaatsin[naam][instellingen]
+% \plaats<naam>[[instellingen]]
+%
+% - still undocumented and also not in setupb yet
+% - kan ook intern/direct (scheelt duplicatie), zie \framedtext
+
+\def\dodefineplacement[#1][#2]%
+ {\getparameters
+ [\??pl#1]
+ [\c!left=\hss,
+ \c!right=\hss,
+ \c!linecorrection=\v!off,
+ \c!depthcorrection=\v!off,
+ \c!margin=\v!standard,
+ \c!grid=\v!middle,
+ %\c!before=,
+ %\c!after=,
+ #2]%
+ \setvalue{\e!place#1}{\doplacement[\??pl#1]}}
+
+\def\defineplacement
+ {\dodoubleempty\dodefineplacement}
+
+\def\setupplacement
+ {\dodoubleempty\dosetupplacement}
+
+\def\dosetupplacement[#1]%
+ {\dodoubleempty\getparameters[\??pl#1]}
+
+\def\doplacement
+ {\dodoubleempty\dodoplacement}
+
+% \def\dodoplacement[#1][#2]% correctie moet mooier
+% {\bgroup
+% \dowithnextbox
+% {\setlocalhsize
+% \getparameters[#1][#2]%
+% \getvalue{#1\c!voor}%
+% \doifvalue{#1\c!regelcorrectie}\v!aan \startbaselinecorrection
+% \doifinset{\getvalue{#1\c!marge}}{\v!standaard,\v!ja}\noindent
+% \hbox to \localhsize
+% {\getvalue{#1\c!links}%
+% \flushnextbox
+% \getvalue{#1\c!rechts}}%
+% \doifvalue{#1\c!dieptecorrectie}\v!aan\baselinecorrection
+% \doifvalue{#1\c!regelcorrectie }\v!aan\stopbaselinecorrection
+% \getvalue{#1\c!na}%
+% \egroup}
+% \vbox}
+
+\def\dodoplacement[#1][#2]% correctie moet mooier
+ {\bgroup
+ \dowithnextboxcontent
+ {\forgetall}
+ {\setlocalhsize
+ \getparameters[#1][#2]%
+ \getvalue{#1\c!before}%
+ \begingroup
+ \positioningparfalse
+ \setbox\nextbox\hbox to \localhsize
+ {\getvalue{#1\c!left}%
+ \flushnextbox
+ \getvalue{#1\c!right}}%
+ \ifinsidefloat \else
+ \addlocalbackgroundtobox\nextbox
+ \fi
+ \ifgridsnapping
+ \doifundefined{#1\c!grid}{\letvalue{#1\c!grid}\v!middle}%
+ % unchecked
+ \doifinset{\getvalue{#1\c!margin}}{\v!standard,\v!yes}\noindent
+ \snaptogrid[\getvalue{#1\c!grid}]\hbox{\flushnextbox}%
+ \else
+ \doifvalue{#1\c!linecorrection}\v!on \startbaselinecorrection
+ \doifinset{\getvalue{#1\c!margin}}{\v!standard,\v!yes}\noindent
+ \flushnextbox
+ \doifvalue{#1\c!depthcorrection}\v!on\baselinecorrection
+ \doifvalue{#1\c!linecorrection }\v!on\stopbaselinecorrection
+ \fi
+ \endgroup
+ \getvalue{#1\c!after}%
+ \egroup}
+ \vbox}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-mar.tex b/Master/texmf-dist/tex/context/base/core-mar.tex
new file mode 100644
index 00000000000..cdc09838e03
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-mar.tex
@@ -0,0 +1,287 @@
+%D \module
+%D [ file=core-mar,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Markings,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Markings}
+
+\unprotect
+
+\prependtoks \getallmarks \to \everybeforepagebody
+\prependtoks \setallmarks \to \everyafterpagebody % currently \relax
+
+% voor 'interne' doeleinden zijn beschikbaar:
+%
+% \fetchmark[naam][plaats]
+
+% nog expansie in mainmarking
+
+% ook nog reset koppelen aan sectie
+
+%\def\mainmarking#1%
+% {\csname\??mk#1\c!koppeling\endcsname}
+%
+%\def\fastresetmarker#1%
+% {\doifdefined{\??mk\maimarking{#1}}
+% {\expandafter\resetmark\csname\??mk\mainmarking{#1}\endcsname}}
+
+\beginTEX
+
+\def\mainmarking#1%
+ {\@EA\ifx\csname\??mk#1\c!coupling\endcsname\else
+ \csname\??mk#1\c!coupling\endcsname
+ \fi}
+
+\def\fastresetmarker#1%
+ {\@EA\ifx\csname\??mk#1\c!coupling\endcsname\else
+ \@EA\resetmark\csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\mainmarking#1%
+ {\ifcsname\??mk#1\c!coupling\endcsname
+ \csname\??mk#1\c!coupling\endcsname
+ \fi}
+
+\def\fastresetmarker#1%
+ {\ifcsname\??mk#1\c!coupling\endcsname
+ \@EA\resetmark\csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname
+ \fi}
+
+\endETEX
+
+\def\fastresetmarkerlist[#1]%
+ {\expanded{\rawprocesscommalist[#1]}\fastresetmarker}
+
+\def\doresetmarking[#1]%
+ {\processcommalist[#1]\fastresetmarker}
+
+\def\resetmarking
+ {\dosingleargument\doresetmarking}
+
+\def\dosetupmarking[#1][#2]%
+ {\def\docommando##1{\getparameters[\??mk##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\setupmarking
+ {\dodoubleargument\dosetupmarking}
+
+% betere protectie
+
+\letvalue{\??mk\??mk\v!previous}\gettopmark
+\letvalue{\??mk\??mk\v!first }\getfirstmark
+\letvalue{\??mk\??mk\v!last }\getbotmark
+\letvalue{\??mk\??mk\v!current }\getcurrentmark
+
+% todo: make it work in balancing
+%
+% \definemarking[vers][]
+% \setupheadertexts
+% [\doiftext{\getmarking[vers][first]}
+% {\doiftextelse{\getmarking[vers][column:last]}
+% {\getmarking[vers][first] -- \getmarking[vers][column:last]}
+% {\getmarking[vers][first]}}]
+% \starttext
+% \startcolumns[n=2,balance=no]
+% \dorecurse{10}{\expanded{\marking[vers]{\recurselevel}} \recurselevel:\dorecurse{4}{\input ward } \endgraf}
+% \stopcolumns
+% \stoptext
+
+\letvalue{\??mk\??mk\v!column:\v!first}\getsplitfirstmark
+\letvalue{\??mk\??mk\v!column:\v!last }\getsplitbottommark
+
+\ifx\decouplemarking\undefined \def\decouplemarking[#1]{} \fi
+
+\def\dododefinemarking[#1][#2]%
+ {\getparameters[\??mk#1]
+ [\c!expansion=\v!no, % saves a macro
+ \c!separator={ --- }, % watch the spaces
+ \c!limittext=\@@kolimittext,
+ \c!state=\v!start]%
+ \decouplemarking[#1]% % no coupling with sections
+ \setevalue{\??mk#1\c!coupling}{#2}%
+ \expandafter\newmark\csname\??mk#2\endcsname
+ \showmessage\m!systems{13}{#1,[#2]}}
+
+\def\dodefinemarking[#1][#2]%
+ {\doifelsenothing{#2}
+ {\dododefinemarking[#1][#1]}
+ {\dododefinemarking[#1][#2]}}
+
+\def\definemarking
+ {\dodoubleempty\dodefinemarking}
+
+\def\definerawmarking[#1]% global ! ! ! !
+ {\getgparameters[\??mk#1]
+ [\c!expansion=\v!no, % saves a macro
+ \c!separator={ --- }, % watch the spaces
+ \c!limittext=,
+ \c!state=\v!start]%
+ \setxvalue{\??mk#1\c!coupling}{#1}%
+ \expandafter\newmark\csname\??mk#1\endcsname
+ \showmessage\m!systems{13}{#1}}
+
+\let\nomarking\empty
+
+\def\doifmarkingelse#1%
+ {\doifdefinedelse{\??mk#1}}
+
+% \def\fetchmark[#1][#2]% never \unexpanded
+% {\@EA\@EA\csname\??mk\??mk#2\endcsname
+% \csname\??mk\mainmarking{#1}\endcsname}
+
+\beginTEX
+
+\def\fetchmark[#1][#2]% never \unexpanded
+ {\@EA\ifx\csname\??mk#1\c!coupling\endcsname\else
+ \@EA\@EA\csname\??mk\??mk#2\endcsname
+ \csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\fetchmark[#1][#2]% never \unexpanded
+ {\ifcsname\??mk#1\c!coupling\endcsname
+ % \@EA\@EA\csname\??mk\??mk#2\endcsname
+ % \csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname
+ \csname\??mk\??mk#2\@EA\endcsname
+ \csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname
+ \fi}
+
+\endETEX
+
+\def\fetchtwomarks[#1]%
+ {\doifsomething{\fetchmark[#1][\v!first]}
+ {\fetchmark[#1][\v!first]%
+ \doifsomething{\fetchmark[#1][\v!last]}
+ {\doifnot{\fetchmark[#1][\v!first]}{\fetchmark[#1][\v!last]}
+ {\getvalue{\??mk#1\c!separator}\fetchmark[#1][\v!last]}}}}
+
+\def\fetchallmarks[#1]%
+ {\doifsomething{\fetchmark[#1][\v!first]}
+ {\doifsomething{\fetchmark[#1][\v!previous]}
+ {\doifnot{\fetchmark[#1][\v!previous]}{\fetchmark[#1][\v!first]}
+ {\fetchmark[#1][\v!previous]\getvalue{\??mk#1\c!separator}}}}%
+ \fetchtwomarks[#1]}
+
+\def\dogetmarking[#1][#2]%
+ {\doifvalue{\??mk#1\c!state}\v!start
+ {\bgroup
+ %\def\nomarking##1{\unknown\ }%
+ \def\nomarking{\splitsequence{\getvalue{\??mk#1\c!limittext}}}%
+ \setfullsectionnumber{\??mk#1}%
+ \processaction % slow
+ [#2]
+ [ \v!both=>{\fetchtwomarks[#1]},
+ \v!all=>{\fetchallmarks[#1]},
+ \s!default=>{\fetchmark [#1][\v!first]},
+ \s!unknown=>{\fetchmark [#1][#2]}]%
+ \egroup}}
+
+\def\nogetmarking[#1][#2]%
+ {}
+
+\unexpanded\def\getmarking
+ {\dodoubleargument\dogetmarking}
+
+\let\setsomemark\setmark
+
+\beginTEX
+
+\def\domarking[#1]#2%
+ {\@EA\ifx\csname\??mk#1\c!coupling\endcsname\else
+ \bgroup
+ \doifelsevalue{\??mk#1\c!expansion}\v!yes
+ \expandmarkstrue\expandmarksfalse
+ \@EA\setsomemark\csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname{#2}%
+ \egroup
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\domarking[#1]#2%
+ {\ifcsname\??mk#1\c!coupling\endcsname
+ \bgroup
+ \doifelsevalue{\??mk#1\c!expansion}\v!yes
+ \expandmarkstrue\expandmarksfalse
+ \@EA\setsomemark\csname\??mk\csname\??mk#1\c!coupling\endcsname\endcsname{#2}%
+ \egroup
+ \fi}
+
+\endETEX
+
+\def\marking
+ {\dosingleargument\domarking}
+
+%D Used in placing text lines.
+
+\def\doifelsemarking#1%
+ {\ifundefined{\??mk#1\c!coupling}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+%D And then \unknown\ we had a chaptertitle packaged in a
+%D makeup environment. And we don't want to loose marks there!
+
+\newbox\collectedmarks
+
+\def\flushmarks % use with care to avoid empty pages
+ {\ifvoid\collectedmarks\else\unhbox\collectedmarks\fi}
+
+\def\postponemarks
+ {\let\setsomemark\postponemark}
+
+\def\postponemark#1#2%
+ {%\writestatus{marks}{postponing \string#1 => #2}%
+ \global\setbox\collectedmarks\hbox
+ {\unhbox\collectedmarks\setmark{#1}{#2}}}
+
+\protect \endinput
+
+% Pseudo marks: (for Hraban)
+%
+% \def\RegisterPageMark#1#2%
+% {\iftrialtypesetting \else
+% \doglobal\increment\NameCounter
+% \textreference[#1:t:\NameCounter]{#2}%
+% \doifreferencefoundelse{#1:t:\NameCounter}
+% {\doifundefined{#1:f:\currentrealreference}%
+% {\setxvalue{#1:f:\currentrealreference}%
+% {\noexpand\in[#1:t:\NameCounter]}}%
+% \setxvalue{#1:l:\currentrealreference}%
+% {\noexpand\in[#1:t:\NameCounter]}}%
+% {}%
+% \fi}
+%
+% \def\GetFirstOnPage#1{\getvalue{#1:f:\realfolio}}
+% \def\GetLastOnPage #1{\getvalue{#1:l:\realfolio}}
+%
+% \setupheadertexts[\GetFirstOnPage{Name}][\GetLastOnPage{Name}]
+%
+% \starttext
+%
+% \def\Name#1{\RegisterPageMark{Name}{#1}#1}
+% \def\TestLine#1{\NC test \NC \Name {test: #1} \NC \NR}
+%
+% \starttabulate
+% \dorecurse{100}{\expanded{\TestLine{\recurselevel}}}
+% \stoptabulate
+%
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/core-mat.tex b/Master/texmf-dist/tex/context/base/core-mat.tex
new file mode 100644
index 00000000000..10f8d16f34a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-mat.tex
@@ -0,0 +1,1615 @@
+%D \module
+%D [ file=core-mat,
+%D version=1998.12.07,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Math Fundamentals,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% engels maken
+
+\writestatus{loading}{Context Core Macros / Math Fundamentals}
+
+\unprotect
+
+\def\mathortext
+ {\ifmmode
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+% force text mode, will be overloaded later
+
+\ifx\text\undefined \let\text\hbox \fi
+
+\newdimen\lastlinewidth
+
+% does not work at all
+%
+% \def\setlastlinewidth
+% {\resetlastlinewidth
+% \ifmmode\else\ifhmode\else\ifoptimizedisplayspacing
+% \bgroup
+% \forgetdisplayskips
+% $$\global\lastlinewidth\predisplaysize$$
+% \vskip-\baselineskip
+% \egroup
+% \fi\fi\fi}
+
+% test \par \dorecurse{10}{test } \moveformula \startformula test \stopformula test \endgraf
+% test \par \dorecurse{10}{test } \startformula test \stopformula test \endgraf
+% \dorecurse{30}{\bpar \dorecurse\recurselevel{test } \epar \startformula formula \stopformula}
+
+\def\setlastlinewidth
+ {\resetlastlinewidth
+ \ifoptimizedisplayspacing\ifmmode\else\ifhmode
+ \bgroup
+ \forgetdisplayskips
+ \displaywidowpenalty\widowpenalty % brrr, else widowpenalty does not work
+ \everymath \emptytoks
+ \everydisplay\emptytoks
+ $$\strut\global\lastlinewidth\predisplaysize$$
+ \vskip-\lineheight
+ \vskip\zeropoint
+ \egroup
+ \fi\fi\fi}
+
+\def\resetlastlinewidth
+ {\global\lastlinewidth\zeropoint\relax}
+
+% not here: \appendtoks \setlastlinewidth \to \everyendofpar
+
+%D moved from main-001
+
+%\def\EveryMathPar{\EveryPar}
+%
+%\newevery \everymath \EveryMath
+
+\abovedisplayskip = \zeropoint
+\abovedisplayshortskip = \zeropoint % evt. 0pt minus 3pt
+\belowdisplayskip = \zeropoint
+\belowdisplayshortskip = \zeropoint % evt. 0pt minus 3pt
+
+\predisplaypenalty = \zerocount
+\postdisplaypenalty = \zerocount % -5000 gaat mis, zie penalty bij \paragraaf
+
+% we don't use the skip's
+
+\def\displayskipsize#1#2% obsolete
+ {\ifdim\ctxparskip>\zeropoint
+ #1\ctxparskip\!!plus#2\ctxparskip\!!minus#2\ctxparskip\relax
+ \else
+ #1\lineheight\!!plus#2\lineheight\!!minus#2\lineheight\relax
+ \fi}
+
+\def\displayskipfactor {1.0} % obsolete
+\def\displayshortskipfactor {0.8} % obsolete
+\def\displayskipgluefactor {0.3} % obsolete
+\def\displayshortskipgluefactor {0.2} % obsolete
+
+\def\abovedisplayskipsize% obsolete
+ {\displayskipsize\displayskipfactor\displayskipgluefactor}
+
+\def\belowdisplayskipsize% obsolete
+ {\displayskipsize\displayskipfactor\displayskipgluefactor}
+
+\def\abovedisplayshortskipsize% obsolete
+ {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
+
+\def\belowdisplayshortskipsize% obsolete
+ {\displayskipsize\displayshortskipfactor\displayshortskipgluefactor}
+
+\def\setdisplayskip#1#2#3% obsolete
+ {#1=#2\relax
+ \advance#1 -\parskip
+ \advance#1 -#3\relax}
+
+\def\setdisplayskips % obsolete
+ {\setdisplayskip\abovedisplayskip \abovedisplayskipsize \zeropoint
+ \setdisplayskip\belowdisplayskip \belowdisplayskipsize \zeropoint
+ \setdisplayskip\abovedisplayshortskip\abovedisplayshortskipsize\baselineskip
+ \setdisplayskip\belowdisplayshortskip\belowdisplayshortskipsize\baselineskip}
+
+% so far for unused stuff
+
+\def\forgetdisplayskips % to do
+ {\abovedisplayskip \zeropoint
+ \belowdisplayskip \zeropoint
+ \abovedisplayshortskip\zeropoint
+ \belowdisplayshortskip\zeropoint}
+
+\definenumber % \definelabel
+ [\v!formula]
+ [\c!text=\v!formula,
+ \c!way=\@@fmway,
+ \c!blockway=\@@fmblockway,
+ \c!location=\v!intext]
+
+\def\setupformulas
+ {\dodoubleargument\getparameters[\??fm]}
+
+\newconditional\handleformulanumber
+\newconditional\incrementformulanumber
+
+\def\dododoformulanumber#1#2#3#4% (#1,#2)=outer(ref,sub) (#3,#4)=inner(ref,sub)
+ {\hbox\bgroup
+ \ifconditional\handleformulanumber
+ \ifconditional\incrementformulanumber
+ \incrementnumber[\v!formula]%
+ \fi
+ \makesectionnumber[\v!formula]%
+ \setbox0\hbox{\ignorespaces#2\unskip}%
+ \ifdim\wd0>\zeropoint
+ \edef\hetsubnummer{#2}%
+ \else
+ \let\hetsubnummer\empty
+ \fi
+ \doifsomething{#1}{\rawreference{\s!for}{#1}{\hetnummer\hetsubnummer}}%
+ \setbox0\hbox{\ignorespaces#4\unskip}%
+ \ifdim\wd0>\zeropoint
+ \edef\hetsubnummer{#4}%
+ \fi
+ \doifsomething{#3}{\rawreference\s!for{#3}{\hetnummer\hetsubnummer}}%
+ \rm % nodig ?
+ \@@fmnumbercommand
+ {\dostartattributes\??fm\c!numberstyle\c!numbercolor
+ \strut
+ \@@fmleft
+ \preparethenumber\??fm\hetnummer\preparednumber
+ \labeltexts\v!formula
+ {\ignorespaces\preparednumber\ignorespaces\hetsubnummer\unskip}%
+ \@@fmright
+ \dostopattributes}%
+ \fi
+ \egroup}
+
+\def\dodoformulanumber[#1][#2][#3]%
+ {\doquadruplegroupempty\dododoformulanumber{#1}{#2}{#3}}
+
+\def\doformulanumber
+ {\dotripleempty\dodoformulanumber}
+
+\setvalue{\e!start\v!formula}{\dostartformula{}}
+\setvalue{\e!stop \v!formula}{\dostopformula}
+
+\def\definieerformule
+ {\dodoubleempty\dodefinieerformule}
+
+\def\dodefinieerformule[#1][#2]%
+ {\doifsomething{#1}
+ {\copyparameters
+ [\??fm#1][\??fm]
+ [\c!spacebefore,\c!spaceafter,\c!grid,
+ \c!leftmargin,\c!rightmargin,\c!margin,
+ \c!indentnext,\c!alternative,
+ \c!strut,\c!align,\c!distance]%
+ \setupformulas[#1][#2]%
+ \setvalue{\e!start#1\v!formula}{\dostartformula{#1}}%
+ \setvalue{\e!stop #1\v!formula}{\dostopformula}}}
+
+\newtoks \everysetupformulas \relax % we need a hook for extensions in modules
+
+\def\setupformulas
+ {\dodoubleempty\dosetupformulas}
+
+\def\dosetupformulas[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??fm#1][#2]%
+ \else
+ \getparameters[\??fm][#1]%
+ \fi
+ \the\everysetupformulas}
+
+\def\formulaparameter#1%
+ {\csname\??fm\currentformula#1\endcsname}
+
+\setupformulas
+ [\c!way=\@@nrway,
+ \c!blockway=,
+ \c!sectionnumber=\@@nrsectionnumber,
+ \c!location=\v!right,
+ \c!left=(,
+ \c!right=),
+ \c!spacebefore=,
+ \c!spaceafter=\@@fmspacebefore,
+ \c!leftmargin=\!!zeropoint,
+ \c!rightmargin=\!!zeropoint,
+ \c!margin=,
+ \c!indentnext=\v!no,
+ \c!alternative=\s!default,
+ \c!align=,
+ \c!strut=\v!no,
+ \c!separator=\@@koseparator,
+ \c!distance=1em]
+
+\def\currentformula {}
+\def\predisplaysizethreshhold{2em} % was 3em
+
+\def\leftdisplayskip {\leftskip}
+\def\rightdisplayskip {\rightskip}
+\def\leftdisplaymargin {\formulaparameter\c!leftmargin}
+\def\rightdisplaymargin {\formulaparameter\c!rightmargin}
+\def\displaygridsnapping{\formulaparameter\c!grid}
+
+\def\beforedisplayspace
+ {\doifnot{\formulaparameter\c!spacebefore}\v!none{\blank[\formulaparameter\c!spacebefore]}}
+
+\def\afterdisplayspace
+ {\doifnot{\formulaparameter\c!spaceafter }\v!none{\blank[\formulaparameter\c!spaceafter ]}}
+
+\def\setpredisplaysize#1%
+ {\predisplaysize#1\relax
+ \ifdim\predisplaysize<\maxdimen
+ \ifdim\predisplaysize>\zeropoint
+ \advance\predisplaysize \predisplaysizethreshhold
+ \fi
+ \advance\predisplaysize \displayindent % needed ?
+ \ifdim\predisplaysize>\hsize
+ \predisplaysize\hsize
+ \fi
+ \else
+ \predisplaysize\zeropoint
+ \fi}
+
+\def\setdisplaydimensions
+ {\displayindent\leftdisplayskip
+ \advance\displayindent\leftdisplaymargin
+ \displaywidth\hsize
+ \ifdim\hangindent>\zeropoint
+ \advance\displayindent\hangindent
+ \else
+ \advance\displaywidth\hangindent
+ \fi
+ \advance\displaywidth-\displayindent
+ \advance\displaywidth-\rightdisplayskip
+ \advance\displaywidth-\rightdisplaymargin}
+
+\newif\ifoptimizedisplayspacing
+
+\def\dostartformula#1%
+ {\dodoubleempty\dodostartformula[#1]}
+
+\newskip\formulaparskip
+\newskip\formulastrutht
+\newskip\formulastrutdp
+
+% hm, invoke otr in hmode in order to move skips to mvl, could be an option
+
+\def\dodostartformula[#1][#2]% setting leftskip adaption is slow !
+ {% todo: test first
+ %
+ % \ifdim\lastskip>\zeropoint
+ % \resetlastlinewidth % else problems with in between stuff without \epar
+ % \fi
+ \bgroup
+ \formulaparskip\parskip
+ \formulastrutdp\strutdepth
+ \formulastrutht\strutheight
+ \switchtoformulabodyfont[#2]%
+ \parskip\formulaparskip
+ \def\currentformula{#1}%
+ \doifsomething{\formulaparameter\c!margin}% so we test first
+ {\dosetleftskipadaption{\formulaparameter\c!margin}%
+ \edef\leftdisplaymargin{\the\leftskipadaption}}% overloaded
+ \long\def\dostartformula##1{\bgroup\let\dostopformula\egroup}%
+ \freezedimenmacro\leftdisplayskip
+ \freezedimenmacro\rightdisplayskip
+ \freezedimenmacro\leftdisplaymargin
+ \freezedimenmacro\rightdisplaymargin
+ \freezedimenmacro\predisplaysizethreshhold
+ \forgetdisplayskips
+ \let\setdisplayskips\relax
+ \ifoptimizedisplayspacing
+ \ifdim\lastlinewidth>\zeropoint
+ \abovedisplayshortskip-\strutht\relax
+ \fi
+ \else
+ \resetlastlinewidth
+ \fi
+ \getvalue{\e!start\formulaparameter\c!alternative\v!formula}}
+
+\def\switchtoformulabodyfont{\switchtobodyfont}
+
+\setvalue{\v!formula}{\dosingleempty\doformula}
+
+\def\doformula[#1]#2%
+ {\begingroup
+ \switchtoformulabodyfont[#1]%
+ % not : \def\doformula[##1]##2{\mathematics{##2}}%
+ \mathematics{#2}%
+ \endgroup}
+
+\let\doplaceformulanumber\empty
+
+\def\dostopformula
+ {\doplaceformulanumber
+ \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}%
+ \resetlastlinewidth
+ \nonoindentation
+ \dochecknextindentation{\??fm\currentformula}%
+ \egroup}
+
+\newif\ifinformula
+
+% \def\startdisplaymath
+% {\ifgridsnapping
+% \beforedisplayspace
+% \snapmathtogrid\vbox
+% \bgroup
+% \informulatrue
+% %\forgetall % breaks side floats
+% \else
+% \bgroup
+% \informulatrue
+% %\forgetall % otherwise backgrounds fail
+% \ifdim\lastskip<\zeropoint\else
+% \par
+% \ifvmode \ifdim\parskip>\zeropoint\relax
+% \vskip-\parskip
+% \fi \fi
+% \fi
+% \doif\displaygridcorrection{-\v!boven}{\kern-\strutht}% new, currently only option/default
+% \beforedisplayspace
+% \par
+% \ifvmode
+% \verticalstrut
+% \vskip-\struttotal
+% \vskip-\baselineskip
+% \fi
+% \fi
+% $$\setdisplaydimensions
+% \setpredisplaysize\lastlinewidth
+% \startinnermath}
+
+% \def\stopdisplaymath
+% {\stopinnermath
+% $$%
+% \ifgridsnapping
+% \egroup
+% \afterdisplayspace
+% \else
+% \par\ifvmode\ifdim\parskip>\zeropoint\vskip-\parskip\fi\fi
+% \afterdisplayspace
+% \egroup
+% \fi
+% \globallet\displaylinecorrection\empty
+% \gdef\displaygridcorrection{\displaygridsnapping}}
+
+\def\startdisplaymath
+ {\ifgridsnapping
+ \beforedisplayspace
+ \snapmathtogrid\vbox
+ \bgroup
+ \informulatrue
+ %\forgetall % breaks side floats
+ \else
+ \bgroup
+ \parskip\formulaparskip % ! !
+ \informulatrue
+ %\forgetall % otherwise backgrounds fail
+ \ifdim\lastskip<\zeropoint\else
+ \par
+ \ifvmode \ifdim\parskip>\zeropoint\relax
+ \whitespace \vskip-\parskip % kind of forces and cancels again
+ \fi \fi
+ \fi
+ \doif\displaygridcorrection{-\v!top}{\kern-\strutht}% new, currently only option/default
+ \beforedisplayspace
+ \par
+ \ifvmode
+ \verticalstrut
+ \vskip-\struttotal
+ \vskip-\baselineskip
+ \fi
+ \fi
+ $$\setdisplaydimensions
+ \setpredisplaysize\lastlinewidth
+ \startinnermath}
+
+\def\stopdisplaymath
+ {\stopinnermath
+ $$%
+ \ifgridsnapping
+ \egroup
+ \afterdisplayspace
+ \else
+ \par\ifvmode\ifdim\parskip>\zeropoint\whitespace\vskip-\parskip\fi\fi
+ \afterdisplayspace
+ \egroup
+ \fi
+ \globallet\displaylinecorrection\empty
+ \gdef\displaygridcorrection{\displaygridsnapping}}
+
+\newif\ifclipdisplaymath \clipdisplaymathtrue
+\def\displaymathclipfactor{1.1}
+
+\def\snapmathtogrid % to do \dp
+ {\dowithnextbox
+ {\bgroup
+ \donefalse
+ \ifclipdisplaymath
+ \ifdim\nextboxht<\displaymathclipfactor\lineheight
+ \donetrue
+ \fi
+ \fi
+ \ifdone
+ \nextboxht\lineheight
+ \else
+ \getnoflines\nextboxht
+ \setbox\nextbox\vbox to \noflines\lineheight
+ {\vfill\flushnextbox\vfill}%
+ \setbox\nextbox\hbox{\lower\strutdepth\flushnextbox}%
+ \fi
+ \snaptogrid[\displaygridcorrection]\hbox{\flushnextbox}%
+ \egroup}}
+
+\def\displaygridcorrection{\displaygridsnapping}
+\let\displaygridcorrection\empty
+
+\def\moveformula
+ {\dosingleempty\domoveformula}
+
+% \def\domoveformula[#1]% brr gaat mogelijk fout
+% {\ifgridsnapping
+% \iffirstargument
+% \xdef\displaygridcorrection{#1}%
+% \else
+% \gdef\displaygridcorrection{-\v!boven}% handy with short preline
+% \fi
+% \else
+% \gdef\displaygridcorrection{\displaygridsnapping}%
+% \fi}
+
+\def\domoveformula[#1]% brr gaat mogelijk fout
+ {\iffirstargument
+ \xdef\displaygridcorrection{#1}%
+ \else
+ \gdef\displaygridcorrection{-\v!top}% handy with short preline
+ \fi
+ \globallet\displaylinecorrection\displaygridcorrection}
+
+\let\startinnermath\empty
+\let\stopinnermath \empty
+
+\def\defineformulaalternative
+ {\dotripleargument\dodefineformulaalternative}
+
+\def\dodefineformulaalternative[#1][#2][#3]%
+ {\setvalue{\e!start#1\v!formula}{#2}%
+ \setvalue{\e!stop #1\v!formula}{#3}}
+
+\defineformulaalternative[\s!default][\startdisplaymath][\stopdisplaymath]
+
+% sp = single line paragraph sd = single line display
+% mp = multi line paragraph md = multy line display
+
+\defineformulaalternative[single][\startdisplaymath][\stopdisplaymath]
+\defineformulaalternative[multi] [\startdisplaymath][\stopdisplaymath]
+
+\definieerformule
+ [sp]
+ [\c!spacebefore=\v!none,\c!spaceafter=\v!none,
+ \c!indentnext=\v!no,
+ \c!alternative=single]
+
+\definieerformule
+ [sd]
+ [\c!spacebefore=\v!none,\c!spaceafter=\v!none,
+ \c!indentnext=\v!yes,
+ \c!alternative=single]
+
+\definieerformule
+ [mp]
+ [\c!indentnext=\v!no,
+ \c!alternative=multi]
+
+\definieerformule
+ [md]
+ [\c!indentnext=\v!yes,
+ \c!alternative=multi]
+
+% in m-math
+%
+% \defineformulaalternative[multi][\begindmath][\enddmath]
+%
+% \fakewords{20}{40}\epar
+% \plaatsformule {a} $$ \fakespacingformula $$
+% \fakewords{20}{40}\epar
+% \plaatsformule {b} \startformule \fakespacingformula \stopformule
+% \plaatsformule {b} \startformule \fakespacingformula \stopformule
+% \fakewords{20}{40}\epar
+% \plaatsformule {c} \startmdformule \fakespacingformula \stopmdformule
+% \plaatsformule {c} \startmdformule \fakespacingformula \stopmdformule
+% \fakewords{20}{40}\epar
+% \plaatsformule {d} \startmpformule \fakespacingformula \stopmpformule
+% \plaatsformule {d} \startmpformule \fakespacingformula \stopmpformule
+% \fakewords{20}{40}\epar
+% \plaatsformule {e} \startsdformule \fakespacingformula \stopsdformule
+% \plaatsformule {e} \startsdformule \fakespacingformula \stopsdformule
+% \fakewords{20}{40}\epar
+% \plaatsformule {f} \startspformule \fakespacingformula \stopspformule
+% \plaatsformule {f} \startspformule \fakespacingformula \stopspformule
+% \fakewords{20}{40}
+
+% \convertcommand\next\to\ascii \getfirstcharacter\ascii
+% \ifx\firstcharacter\letterbackslash % a \cs
+
+\def\placeformula
+ {\settrue\incrementformulanumber
+ \dodoubleempty\doplaceformula}
+
+\def\placesubformula
+ {\setfalse\incrementformulanumber
+ \dodoubleempty\doplaceformula}
+
+\def\doplaceformula[#1][#2]% #2 = dummy, gobbles spaces
+ {\def\redoplaatsformule
+ {\bgroup\def\dostartformula####1{\relax}%
+ \ifx\next\bgroup
+ \@EA\moreplaatsformule % [ref]{}
+ \else
+ \expandafter\convertargument\e!start\to\asciiA
+ \expandafter\convertargument\next \to\asciiB
+ \ExpandBothAfter\doifincsnameelse\asciiA\asciiB
+ {\egroup \@EA\dodoplaceformula}% [ref]\start
+ {\egroup \@EA\dispplaatsformule}% [ref]$$
+ \fi[#1]{}}%
+ \futurelet\next\redoplaatsformule}
+
+\long\def\moreplaatsformule[#1]#2#3#4% #2 dummy #4 gobbles spaces
+ {\def\redoplaatsformule
+ {\expandafter\convertargument\e!start\to\asciiA
+ \expandafter\convertargument\next \to\asciiB
+ \ExpandBothAfter\doifincsnameelse\asciiA\asciiB
+ {\egroup \dodoplaceformula}% [ref]\start
+ {\egroup \dispplaatsformule}% [ref]$$
+ [#1]{#3}}%
+ \futurelet\next\redoplaatsformule#4}
+
+\def\dispplaatsformule[#1]#2$$#3$$%
+ {\dodoplaceformula[#1]{#2}\dostartformula{}#3\dostopformula}
+
+\let\normalreqno\eqno
+\let\normalleqno\leqno
+
+\def\dodoplaceformula[#1]#2% messy, needs a clean up
+ {\doifelse{#1}{-}
+ {\setfalse\handleformulanumber}
+ {\doifelse{#2}{-}
+ {\setfalse\handleformulanumber}
+ {\settrue\handleformulanumber}}%
+ \ifconditional\handleformulanumber
+ \def\formulanumber
+ {%\global\let\subformulanumber\doformulanumber % no, bug
+ \doformulanumber[#1][#2]}%
+ \def\subformulanumber
+ {\setfalse\incrementformulanumber
+ \formulanumber}%
+ \gdef\doplaceformulanumber
+ {\global\let\doplaceformulanumber\empty
+ \doifelse\@@fmlocation\v!left
+ {\normalleqno{\doformulanumber[#1][#2][]{}}}
+ {\normalreqno{\doformulanumber[#1][#2][]{}}}}%
+ \else
+ \def\formulanumber{\doformulanumber[#1][#2]}%
+ \global\let\subformulanumber\doformulanumber
+ \global\let\doplaceformulanumber\empty
+ \fi}
+
+%D We need a hook into the plain math alignment macros
+%D
+%D \starttyping
+%D \displaylines
+%D \eqalignno
+%D \eqalignno
+%D \stoptyping
+%D
+%D Otherwise we get a missing \type {$$} error reported.
+
+\def\resetdisplaymatheq
+ {\let\normalleqno\relax \let\leqno\relax
+ \let\normalreqno\relax \let\eqno \relax
+ \let\doplaceformulanumber\relax}
+
+\let\normaldispl@y\displ@y
+
+\def\displ@y{\resetdisplaymatheq\normaldispl@y}
+
+%D Here we implement a basic math alignment mechanism. Numbers
+%D are also handled. The macros \type {\startinnermath} and
+%D \type {\stopinnermath} can be overloaded in specialized
+%D modules.
+
+\def\startinnermath
+ {\getvalue{\e!start\??fm\formulaparameter\c!align}}
+
+\def\stopinnermath
+ {\getvalue{\e!stop \??fm\formulaparameter\c!align}}
+
+\def\mathinnerstrut
+ {\doif{\formulaparameter\c!strut}\v!yes\strut}
+
+\long\def\defineinnermathhandler#1#2#3%
+ {\setvalue{\e!start\??fm#1}{#2}%
+ \setvalue{\e!stop \??fm#1}{#3}}
+
+\newif\iftracemath
+
+\def\mathhbox
+ {\iftracemath\ruledhbox\else\hbox\fi}
+
+\def\startmathbox#1#2%
+ {\hsize\displaywidth
+ \global\let\@eqno \empty \def\eqno {\gdef\@eqno }%
+ \global\let\@leqno\empty \def\leqno{\gdef\@leqno}%
+ % added
+ \let\normalreqno\eqno
+ \let\normalleqno\leqno
+ % added
+ \doplaceformulanumber
+ \mathhbox to \displaywidth\bgroup
+ \mathinnerstrut
+ $\displaystyle
+ \ifx\@leqno\empty\else \ifcase#2
+ \rlap{\@leqno}%
+ \else
+ \@leqno\hskip\formulaparameter\c!distance
+ \fi \fi
+ #1}
+
+\def\stopmathbox#1#2%
+ {$#1%
+ \ifx\@eqno\empty\else \ifcase#2
+ \llap{\@eqno}%
+ \else
+ \hskip\formulaparameter\c!distance\@eqno
+ \fi \fi
+ \egroup}
+
+\defineinnermathhandler\v!right{\startmathbox\empty1}{\stopmathbox\hfill0}
+\defineinnermathhandler\v!left {\startmathbox\hfill0}{\stopmathbox\empty1}
+\defineinnermathhandler\v!middle{\startmathbox\hfill0}{\stopmathbox\hfill0}
+
+%D [The examples below are in english and don't process in the
+%D documentation style, which will be english some day.]
+%D
+%D Normally a formula is centered, but in case you want to
+%D align it left or right, you can set up formulas to behave
+%D that way. Normally a formula will adapt is left indentation
+%D to the environment:
+%D
+%D \startbuffer
+%D \fakewords{20}{40}\epar
+%D \startitemize
+%D \item \fakewords{20}{40}\epar
+%D \placeformula \startformula \fakeformula \stopformula
+%D \item \fakewords{20}{40}\epar
+%D \stopitemize
+%D \fakewords{20}{40}\epar
+%D \stopbuffer
+%D
+%D % \getbuffer
+%D
+%D In the next examples we explicitly align formulas to the
+%D left (\type {\raggedleft}), center and right (\type
+%D {\raggedright}):
+%D
+%D \startbuffer
+%D \setupformulas[align=left]
+%D \startformula\fakeformula\stopformula
+%D \setupformulas[align=middle]
+%D \startformula\fakeformula\stopformula
+%D \setupformulas[align=right]
+%D \startformula\fakeformula\stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Or in print:
+%D
+%D % {\getbuffer}
+%D
+%D With formula numbers these formulas look as follows:
+%D
+%D \startbuffer
+%D \setupformulas[align=left]
+%D \placeformula \startformula\fakeformula\stopformula
+%D \setupformulas[align=middle]
+%D \placeformula \startformula\fakeformula\stopformula
+%D \setupformulas[align=right]
+%D \placeformula \startformula\fakeformula\stopformula
+%D \stopbuffer
+%D
+%D % {\getbuffer}
+%D
+%D This was keyed in as:
+%D
+%D \typebuffer
+%D
+%D When tracing is turned on (\type {\tracemathtrue}) you can
+%D visualize the bounding box of the formula,
+%D
+%D % {\tracemathtrue\getbuffer}
+%D
+%D As you can see, the dimensions are the natural ones, but if
+%D needed you can force a normalized line:
+%D
+%D \startbuffer
+%D \setupformulas[strut=yes]
+%D \placeformula \startformula \fakeformula \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This time we get a more spacy result.
+%D
+%D % {\tracemathtrue\getbuffer}
+%D
+%D We will now show a couple of more settings and combinations
+%D of settings. In centered formulas, the number takes no space
+%D
+%D \startbuffer
+%D \setupformulas[align=middle]
+%D \startformula \fakeformula \stopformula
+%D \placeformula \startformula \fakeformula \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer % {\tracemathtrue\getbuffer}
+%D
+%D You can influence the placement of the whole box with the
+%D parameters \type {leftmargin} and \type {rightmargin}.
+%D
+%D \startbuffer
+%D \setupformulas[align=right,leftmargin=3em]
+%D \startformula \fakeformula \stopformula
+%D \placeformula \startformula \fakeformula \stopformula
+%D
+%D \setupformulas[align=left,rightmargin=1em]
+%D \startformula \fakeformula \stopformula
+%D \placeformula \startformula \fakeformula \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer % {\tracemathtrue\getbuffer}
+%D
+%D You can also inherit the margin from the environment.
+%D
+%D \startbuffer
+%D \setupformulas[align=right,margin=standard]
+%D \startformula \fakeformula \stopformula
+%D \placeformula \startformula \fakeformula \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer % {\tracemathtrue\getbuffer}
+%D
+%D The distance between the formula and the number is only
+%D applied when the formula is left or right aligned.
+%D
+%D \startbuffer
+%D \setupformulas[align=left,distance=2em]
+%D \startformula \fakeformula \stopformula
+%D \placeformula \startformula \fakeformula \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer % {\tracemathtrue\getbuffer}
+
+%D \macros
+%D {big..}
+%D
+%D Because they are related to the bodyfontsize, we redefine
+%D some \PLAIN\ macros.
+
+\def\@@dobig#1#2%
+ {{\hbox{$\left#2\vbox\!!to#1\bodyfontsize{}\right.\n@space$}}}
+
+\def\big {\@@dobig{0.85}}
+\def\Big {\@@dobig{1.15}}
+\def\bigg{\@@dobig{1.45}}
+\def\Bigg{\@@dobig{1.75}}
+
+%D \macros
+%D {bordermatrix}
+%D
+%D We already redefined \type {\bordermatrix} in \type
+%D {font-ini}.
+
+%D \macros
+%D {setuptextformulas}
+%D
+%D This command sets up in||line math. Most features deals
+%D with grid snapping and are experimental.
+
+\newevery \everysetuptextformulas \relax
+
+\def\setuptextformulas
+ {\dosingleempty\dosetuptextformulas}
+
+\def\dosetuptextformulas[#1]%
+ {\getparameters[\??mt][#1]%
+ \the\everysetuptextformulas}
+
+%D \macros
+%D {super, sub}
+%D
+%D \TEX\ uses \type{^} and \type{_} for entering super- and
+%D subscript mode. We want however a bit more control than
+%D normally provided, and therefore provide \type {\super}
+%D and \type{sub}.
+
+\global\let\normalsuper=^
+\global\let\normalsuber=_
+
+\newcount\supersubmode
+
+\newevery\everysupersub \EverySuperSub
+
+\appendtoks \advance\supersubmode \plusone \to \everysupersub
+
+% \def\dodosuper#1{\normalsuper{\the\everysupersub#1}}
+% \def\dodosuber#1{\normalsuber{\the\everysupersub#1}}
+%
+% \def\dosuper{\ifx\next\bgroup\expandafter\dodosuper\else\normalsuper\fi}
+% \def\dosuber{\ifx\next\bgroup\expandafter\dodosuber\else\normalsuber\fi}
+%
+% \def\super{\futurelet\next\dosuper}
+% \def\suber{\futurelet\next\dosuber}
+%
+% \def\super#1{\normalsuper{\the\everysupersub#1}}
+% \def\suber#1{\normalsuber{\the\everysupersub#1}}
+
+\appendtoks
+ \gridsupsubstyle
+\to \everysupersub
+
+\appendtoks
+ \doifelse\@@mtsize\v!small
+ {\let\gridsupsubstyle \scriptscriptstyle
+ \let\gridsupsubbodyfont \setsmallbodyfont}%
+ {\let\gridsupsubstyle \scriptstyle
+ \let\gridsupsubbodyfont \relax}%
+\to \everysetuptextformulas
+
+\setuptextformulas
+ [\c!size=\v!normal]
+
+\def\dogridsupsub#1#2%
+ {\begingroup
+ \setbox\nextbox\iftracegridsnapping\ruledhbox\else\hbox\fi
+ {\gridsupsubbodyfont
+ $\strut^{\the\everysupersub#1}_{\the\everysupersub#2}$}%
+ \nextboxht\strutheight
+ \nextboxdp\strutdepth
+ \flushnextbox
+ \endgroup}
+
+\def\gridsupsub
+ {\ifconditional\crazymathsnapping
+ \ifgridsnapping
+ \@EAEAEA\dogridsupsub
+ \else
+ \@EAEAEA\normalsupsub
+ \fi
+ \else
+ \@EA\normalsupsub
+ \fi}
+
+\def\normalsupsub#1#2%
+ {^{\the\everysupersub#1}_{\the\everysupersub#2}}
+
+\appendtoks
+ \let\gridsupsubstyle \relax
+ \let\gridsupsubbodyfont\relax
+ \let\gridsupsub \normalsupsub
+\to \everydisplay
+
+\def\super#1{^{\the\everysupersub#1}}
+\def\suber#1{_{\the\everysupersub#1}}
+\def\supsub#1#2{\super{#1}\suber{#2}}
+\def\subsup#1#2{\suber{#1}\super{#2}}
+
+%\def\super#1{\gridsupsub{#1}{}} %
+%\def\suber#1{\gridsupsub{}{#1}} %
+%
+%\def\supsub#1#2{\gridsupsub{#1}{#2}}
+%\def\subsup#1#2{\gridsupsub{#2}{#1}}
+
+\def\gridsuper#1{\gridsupsub{#1}{}}
+\def\gridsuber#1{\gridsupsub{}{#1}}
+
+% \let\sup\super % math char
+% \let\sub\suber
+
+% test set:
+%
+% \startbuffer
+% \sform{x\frac{1}{2}}
+% \sform{x\sup{\frac{1}{2}} + x\sup{2} + 2}
+% \sform{x\supsub{\frac{1}{2}}{\frac{1}{2}} + x\sup{2} + 2}
+% \stopbuffer
+%
+% \typebuffer
+%
+% \startlines
+% \getbuffer
+% \stoplines
+%
+% \startbuffer
+% $x\frac{1}{2}$
+% $x\sup{\frac{1}{2}} + x^2 + 2$
+% $x\supsub{\frac{1}{2}}{\frac{1}{2}} + x^2 + 2$
+% \stopbuffer
+%
+% \typebuffer
+%
+% \start
+% \enablesupersub
+% \enableautomath
+% \startlines
+% \getbuffer
+% \stoplines
+% \stop
+
+%D \macros
+%D {enablesupersub,enablesimplesupersub}
+%D
+%D We can let \type {^} and \type {_} act like \type {\super}
+%D and \type {\sub} by saying \type {\enablesupersub}.
+
+\bgroup
+\catcode`\^=\@@active
+\catcode`\_=\@@active
+\gdef\enablesupersub
+ {\catcode`\^=\@@active
+ \def^{\ifmmode\expandafter\super\else\expandafter\normalsuper\fi}%
+ \catcode`\_=\@@active
+ \def_{\ifmmode\expandafter\suber\else\expandafter\normalsuber\fi}}
+\egroup
+%D \macros
+%D {enableautomath}
+%D
+%D The next one can be dangerous, but handy in controlled
+%D situations.
+
+\bgroup \catcode`\$=\active
+
+\gdef\enableautomath
+ {\catcode`\$=\active
+ \def$##1${\snappedinlineformula{##1}}}
+
+% \gdef\enableautomath
+% {\catcode`\$=\active
+% \def${\doifnextcharelse$\doautodmath\doautoimath}%
+% \def\doautoimath##1${\snappedinlineformula{##1}}%
+% \def\doautodmath$##1$${\startformula##1\stopformula}}
+
+\egroup
+
+%D \macros
+%D {...}
+%D
+%D New and experimental: snapping big inline math!
+
+\newconditional\halfcrazymathlines % \settrue\halfcrazymathlines
+\newconditional\crazymathsnapping % \settrue\crazymathsnapping
+
+% \appendtoks
+% \doifelse\@@mtgrid\v!ja
+% {\settrue \crazymathsnapping }{\setfalse\crazymathsnapping}%
+% \doifelse\@@mtstap\v!halveregel
+% {\settrue \halfcrazymathlines}{\setfalse\halfcrazymathlines}%
+% \to \everysetuptextformulas
+
+\appendtoks
+ \doifelse\@@mtgrid\v!yes \settrue\setfalse\crazymathsnapping
+ \doifelse\@@mtstep\v!halfline\settrue\setfalse\halfcrazymathlines
+\to \everysetuptextformulas
+
+\setuptextformulas
+ [\c!grid=\v!yes,
+ \c!step=\v!line]
+
+\newcount\crazymathhack
+
+\let\lastcrazymathline \!!zeropoint
+\let\lastcrazymathpage \!!zerocount
+\let\lastcrazymathprelines \!!zerocount
+\let\lastcrazymathpostlines\!!zerocount
+
+\def\crazymathtag{amh:\the\crazymathhack}
+\def\crazytexttag{\v!text:\lastcrazymathpage}
+
+\def\crazymathindent{\hskip\MPx\crazymathtag\hskip-\MPx\crazytexttag}
+
+\def\flushcrazymathbox
+ {\nextboxht\strutheight
+ \nextboxdp\strutdepth
+ \hbox{\iftracegridsnapping\ruledhbox\fi{\flushnextbox}}}
+
+% possible pdftex bug:
+%
+% \dorecurse{100}{gest \vadjust {\strut} \par} \page
+% \dorecurse{100}{gest \vadjust pre {\strut} \par} \page
+%
+% duplicate depth compensation with pre
+
+\def\snappedinlineformula
+ {\dosingleempty\dosnappedinlineformula}
+
+%D \starttabulate[|Tl|l|]
+%D \NC - \NC half lines \NC \NR
+%D \NC + \NC full lines \NC \NR
+%D \NC = \NC force \NC \NR
+%D \NC < \NC force, minus pre \NC \NR
+%D \NC > \NC force, minus post \NC \NR
+%D \stoptabulate
+
+\newif\if!!donee
+\newif\if!!donef
+
+\def\inlinemathmargin{1pt}
+
+\settrue\autocrazymathsnapping
+
+% FROM NOW ON, CHANGES AS OPTIONS
+
+% TODO: SKYLINE (PREV LINE POS SCAN)
+
+\def\dosnappedinlineformula[#1]#2%
+ {\ifvmode\dontleavehmode\fi % tricky
+ \strut % prevents funny space at line break
+ \begingroup % interesting: \bgroup can make \vadjust disappear
+ \ifconditional\crazymathsnapping
+ \ifgridsnapping
+ \ifx\pdftexversion\undefined
+ \donefalse
+ \else
+ \checktextbackgrounds % we need pos tracking, to be made less redundant
+ \donetrue
+ \fi
+ \else
+ \donefalse
+ \fi
+ \else
+ \donefalse
+ \fi
+ \!!doneafalse % forced or not auto
+ \!!donebfalse % too heigh
+ \!!donecfalse % too low
+ \!!donedfalse % less before
+ \!!doneefalse % less after
+ \ifdone
+ \setbox\nextbox\hbox{$#2$}%
+ \iftracegridsnapping
+ \setbox\nextbox\ruledhbox
+ {\incolortrue\localcolortrue
+ \backgroundline[gray]{\showstruts\strut\flushnextbox}}%
+ \fi
+ \def\docommando##1%
+ {\doif{##1}-{\settrue \halfcrazymathlines}%
+ \doif{##1}+{\setfalse\halfcrazymathlines}%
+ \doif{##1}={\!!doneatrue}%
+ \doif{##1}<{\!!donedtrue}%
+ \doif{##1}>{\!!doneetrue}}%
+ \processcommalist[#1]\docommando
+\if!!doneb
+ \if!!donec \else
+ \setfalse\halfcrazymathlines
+ \fi
+\else
+ \if!!donec
+ \setfalse\halfcrazymathlines
+ \fi
+\fi
+ \donefalse
+ \if!!donea
+ \donetrue
+\scratchdimen \nextboxht
+\advance\scratchdimen .5\lineheight
+\nextboxht\scratchdimen
+\scratchdimen \nextboxdp
+\advance\scratchdimen .5\lineheight
+\nextboxdp\scratchdimen
+ \else\ifdim\nextboxht>\strutht
+ \donetrue
+ \else\ifdim\nextboxdp>\strutdp
+ \donetrue
+ \fi\fi\fi
+ \ifconditional\autocrazymathsnapping \else \if!!donea \else
+ % don't compensate, just snap to strut
+ \donefalse
+ % signal for next else, snap line to strut
+ \!!doneatrue
+ \fi \fi
+ \fi
+ \ifdone
+ % analyze height
+ \scratchdimen\inlinemathmargin
+ \advance\scratchdimen \strutht
+ \ifdim\nextboxht<\scratchdimen \else \!!donebtrue \fi
+ % analyze depth
+ \scratchdimen\inlinemathmargin
+ \advance\scratchdimen \strutdp
+ \ifdim\nextboxdp<\scratchdimen \else \!!donectrue \fi
+ % analyzed or forced
+ \ifdone
+ \global\advance\crazymathhack\plusone
+ \donefalse
+ \ifnum\MPp\crazymathtag=\lastcrazymathpage\relax
+ \ifdim\MPy\crazymathtag=\lastcrazymathline\relax
+ \donetrue
+ \fi
+ \fi
+ \ifnum\MPp\crazymathtag=\zerocount \donefalse \fi
+ \ifdim\MPy\crazymathtag=\zeropoint \donefalse \fi
+ \ifdone
+ % same page and same line
+ \else
+ \global\let\lastcrazymathprelines \!!zerocount
+ \global\let\lastcrazymathpostlines\!!zerocount
+ \xdef\lastcrazymathpage{\MPp\crazymathtag}%
+ \xdef\lastcrazymathline{\MPy\crazymathtag}%
+ \fi
+ \if!!doneb
+ % \getrawnoflines\nextboxht
+ \scratchdimen\nextboxht
+ \advance\scratchdimen-\strutht
+ \getnoflines\scratchdimen
+ \if!!doned \advance\noflines\minusone \fi
+ \scratchcounter\noflines
+ \advance\noflines-\lastcrazymathprelines\relax
+ \ifnum\noflines>\zerocount
+ \xdef\lastcrazymathprelines{\the\scratchcounter}%
+ \scratchdimen\noflines\lineheight
+ \ifconditional\halfcrazymathlines
+ \advance\scratchdimen-.5\lineheight
+ \fi
+ \advance\scratchdimen-\strutdepth
+ \setbox\scratchbox\null
+ \wd\scratchbox2\bodyfontsize
+ \ht\scratchbox\scratchdimen
+ \dp\scratchbox\strutdepth
+ %%% top correction code (see below)
+ \normalvadjust pre
+ {%\allowbreak % sometimes breaks spacing
+ \forgetall
+ \crazymathindent
+ \iftracegridsnapping
+ \setbox\scratchbox\hbox
+ {\incolortrue\localcolortrue\green
+ \ruledhbox{\box\scratchbox}}%
+ \fi
+ \box\scratchbox
+ \endgraf
+ \nobreak}%
+ \else\ifnum\scratchcounter>\zerocount
+ \normalvadjust pre
+ {\nobreak}%
+ \fi\fi
+ \fi
+ \if!!donec
+ % \getrawnoflines\nextboxdp
+ \scratchdimen\nextboxdp
+ \advance\scratchdimen-\strutdp
+ \getnoflines\scratchdimen
+ \if!!donee \advance\noflines\minusone \fi
+ \scratchcounter\noflines
+ \advance\noflines-\lastcrazymathpostlines\relax
+ \ifnum\noflines>\zerocount
+ \donetrue
+ \else\ifnum\lastcrazymathpostlines=\zerocount
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \else
+ \donefalse
+ \fi
+ \ifdone
+ \xdef\lastcrazymathpostlines{\the\scratchcounter}%
+ \ifnum\lastcrazymathpostlines=\zerocount
+ \global\let\lastcrazymathpostlines\!!plusone
+ \fi
+ \hbox{\setposition\crazymathtag\flushcrazymathbox}%
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen-\lineheight
+ \advance\scratchdimen+\strutheight
+\ifdim\scratchdimen>\zeropoint \else
+ \scratchdimen=\strutheight % todo : test for half lines
+\fi
+ \ifconditional\halfcrazymathlines
+ \advance\scratchdimen-.5\lineheight
+ \fi
+ \setbox\scratchbox\null
+ \wd\scratchbox2\bodyfontsize
+ \ht\scratchbox\scratchdimen
+ \dp\scratchbox\strutdepth
+ \normalvadjust
+ {\forgetall
+ \crazymathindent
+ \iftracegridsnapping
+ \setbox\scratchbox\hbox
+ {\incolortrue\localcolortrue\blue
+ \ruledhbox{\box\scratchbox}}%
+ \fi
+ \box\scratchbox
+ \endgraf
+ % precaution: else we stick below the text bottom
+ \ifconditional\halfcrazymathlines
+ \allowbreak
+ \else
+ \vskip-\lineheight
+ \vskip \lineheight
+ \fi}%
+ \else
+ \hbox{\setposition\crazymathtag\flushcrazymathbox}%
+ \fi
+ \else
+ \flushcrazymathbox
+ \fi
+ \else\if!!donea
+ \flushcrazymathbox
+ \else
+ \mathematics{#2}%
+ \fi\fi
+ \endgroup}
+
+
+%%% top correction code
+%%%
+%%% correct for fuzzy top of page situations
+%
+% \scratchdimen\lastcrazymathprelines\lineheight
+% \advance\scratchdimen\MPy\crazymathtag
+% \advance\scratchdimen\lineheight
+% \advance\scratchdimen\topskip
+% \advance\scratchdimen-\strutheight
+% \dimen0=\MPy\crazytexttag
+% \advance\dimen0 \MPh\crazytexttag
+% \advance\scratchdimen-\dimen0\relax
+% % do we need correction at all
+% \ifdim\scratchdimen>\strutdepth\relax
+% \donefalse
+% \else\ifdim\scratchdimen<\zeropoint
+% \donefalse
+% \else
+% \donetrue
+% \fi\fi
+% % analysis done
+% \donefalse
+% \ifdone
+% \edef\crazymathcorrection{\the\scratchdimen}%
+% \advance\scratchdimen-\dp\scratchbox
+% \dp\scratchbox-\scratchdimen
+% \else
+% \let\crazymathcorrection\zeropoint
+% \fi
+%
+%%%
+%%% keep the previous code
+%%%
+
+\let\tform\mathematics
+\let\gform\snappedinlineformula
+
+% test set:
+%
+% \startbuffer
+% Crazy math \gform {1+x} or \gform {\dorecurse {100} {1+} 1 =
+% 101} and even gore crazy \gform {2^{2^2}_{1_1}}
+% again\dorecurse {20} { and again} \gform {\sqrt {\frac
+% {x^{5^5}} {\frac {1} {2}}}} even gore\dorecurse {50} { and
+% gore} \tform {\dorecurse {12} {\gform {\sqrt {\frac
+% {x^{5^5}} {3}}}+\gform {\sqrt {\frac {x^{5^5}} {\frac {1}
+% {2}}}}+}x=10}\dorecurse{20} { super crazy math}: \tform
+% {\dorecurse {30} {\gform {\sqrt {\frac {x^{5^5}} {3}}}+
+% \gform {\sqrt {\frac {x^{5^5}} {\frac {1} {2}}}}+ }x = 10},
+% and we're\dorecurse {20} { done}!
+% \stopbuffer
+%
+% \setupcolors[state=start] \setuppapersize[S6][S6]
+%
+% \showgrid \tracegridsnappingtrue \showstruts
+%
+% \starttext
+% \setuplayout[grid=yes,lines=15]\getbuffer \page
+% \setuplayout[grid=yes,lines=16]\getbuffer \page
+% \setuplayout[grid=yes,lines=17]\getbuffer \page
+% \setuplayout[grid=yes,lines=18]\getbuffer \page
+% \setuplayout[grid=yes,lines=19]\getbuffer \page
+% \stoptext
+%
+% test
+%
+% \startregels
+% \gform[<]{35 \cdot p^{\frac{3}{4}} = 70}
+% \gform{12{,}4 \cdot d^3 = 200}
+% \gform{a \cdot x^b}.
+% \gform{12x^6 \cdot \negative 3x^4}
+% \gform{\frac{12x^6}{\negative 3x^4}}
+% \gform{(4x^2)^3}
+% \gform{4x \sqrt{x} \cdot 3x^2}
+% \gform{\frac{2x^4}{4x \sqrt{x}}}
+% \gform{y = a \cdot x^b}.
+% \gform{y_1 = \frac{15x^2}{x}}
+% \gform{y_2 = x \cdot \sqrt{x}}
+% \gform{y_3 = \frac{6x^3}{x^2}}
+% \gform[<]{y_4 = \left(2x^2\right)^{\frac{1}{2}}}
+% \gform{y_1 = \frac{4x^5}{x^2}}
+% \gform{y_2 = 4 \cdot \sqrt{x}}
+% \gform{y_3 = 4x^3}
+% \gform{y_4 = \frac{100x}{\sqrt{x}}}
+% \gform[<]{y_5 = 4 \cdot x^{\frac{1}{2}}}
+% \gform{y_6 = \frac{1}{2} x \cdot 4x^2}
+% \gform{y_7 = 2 \cdot x^3}
+% \gform{y_8 = 100 \cdot x^{\frac{1}{2}}}
+% \gform{4x^8 \cdot 8x^3}
+% \gform{\frac{4x^8}{8x^3}}
+% \gform{\left(\negative3x^4\right)^3}
+% \gform{x^3 \sqrt{x} \cdot 3x^2}
+% \gform{\frac{6x^3}{x^2 \sqrt{x}}}
+% \gform{\frac{6}{2x^4}}
+% \gform{\frac{1}{3x^6}}
+% \gform{\frac{12x^8}{4x^{10}}}
+% \gform{\frac{4}{\sqrt{x}}}
+% \gform{\frac{1}{2x \sqrt{x}}}
+% \gform{\frac{2{,}25}{p} = 0{,}35}
+% \gform{4{,}50 + \frac{300}{k} = 4{,}70}
+% \gform{\frac{1200}{k+12} - 42 = 6}
+% \stopregels
+
+%D \macros
+%D {restoremathstyle}
+%D
+%D We can pick up the current math style by calling \type
+%D {\restoremathstyle}.
+
+\def\restoremathstyle
+ {\ifmmode
+ \ifcase\supersubmode
+ \textstyle
+ \or
+ \scriptstyle
+ \else
+ \scriptscriptstyle
+ \fi
+ \fi}
+
+%D \macros
+%D {mathstyle}
+%D
+%D If one want to be sure that something is typeset in the
+%D appropriate style, \type {\mathstyle} can be used:
+%D
+%D \starttyping
+%D \mathstyle{something}
+%D \stoptyping
+
+\def\mathstyle#1%
+ {\mathchoice
+ {\displaystyle #1}%
+ {\textstyle #1}%
+ {\scriptstyle #1}%
+ {\scriptscriptstyle#1}}
+
+%D Something similar can be used in the (re|)|definition
+%D of \type {\text}. This version is a variation on the one
+%D in the math module (see \type{m-math} and|/|or \type
+%D {m-newmat}).
+
+\unexpanded\def\mathtext
+ {\mathortext\domathtext\hbox}
+
+\def\domathtext#1%
+ {\mathchoice
+ {\dodomathtext\displaystyle\textface {#1}}%
+ {\dodomathtext\textstyle \textface {#1}}%
+ {\dodomathtext\textstyle \scriptface {#1}}%
+ {\dodomathtext\textstyle \scriptscriptface{#1}}}
+
+\def\dodomathtext#1#2#3% no \everymath !
+ %{\hbox{\everymath{#1}\switchtobodyfont [#2]#3}} % 15 sec
+ {\hbox{\everymath{#1}\setcurrentfontbody{#2}#3}} % 3 sec (no math)
+
+%D Because we may overload \type {\text} in other (structuring)
+%D macros, we say:
+
+\appendtoks \let\text\mathtext \to \everymathematics
+
+%D \macros
+%D {frac, xfrac, xxfrac}
+%D
+%D This is another one Tobias asked for. It replaces the
+%D primitive \type {\over}. We also take the opportunity to
+%D handle math style restoring, which makes sure units and
+%D chemicals come out ok.
+%D
+%D \starttyping
+%D \def\frac#1#2%
+%D {\relax
+%D \ifmmode
+%D {{\mathstyle{#1}}\over{\mathstyle{#2}}}%
+%D \else
+%D $\frac{#1}{#2}$%
+%D \fi}
+%D \stoptyping
+%D
+%D Better is:
+%D
+%D \starttyping
+%D \def\frac#1#2%
+%D {\relax\mathematics{{{\mathstyle{#1}}\over{\mathstyle{#2}}}}}
+%D \stoptyping
+%D
+%D The \type {\frac} macro kind of replaces the awkward \type
+%D {\over} primitive. Say that we have the following formulas:
+%D
+%D \startbuffer[sample]
+%D test $\frac {1}{2}$ test $$1 + \frac {1}{2} = 1.5$$
+%D test $\xfrac {1}{2}$ test $$1 + \xfrac {1}{2} = 1.5$$
+%D test $\xxfrac{1}{2}$ test $$1 + \xxfrac{1}{2} = 1.5$$
+%D \stopbuffer
+%D
+%D \typebuffer[sample]
+%D
+%D With the most straightforward definitions, we get:
+%D
+%D \startbuffer[code]
+%D \def\dofrac#1#2#3{\relax\mathematics{{{#1{#2}}\over{#1{#3}}}}}
+%D
+%D \def\frac {\dofrac\mathstyle}
+%D \def\xfrac {\dofrac\scriptstyle}
+%D \def\xxfrac{\dofrac\scriptscriptstyle}
+%D \stopbuffer
+%D
+%D \typebuffer[code] \getbuffer[code,sample]
+%D
+%D Since this does not work well, we can try:
+%D
+%D \startbuffer[code]
+%D \def\xfrac #1#2{\hbox{$\dofrac\scriptstyle {#1}{#2}$}}
+%D \def\xxfrac#1#2{\hbox{$\dofrac\scriptscriptstyle{#1}{#2}$}}
+%D \stopbuffer
+%D
+%D \typebuffer[code] \getbuffer[code,sample]
+%D
+%D This for sure looks better than:
+%D
+%D \startbuffer[code]
+%D \def\xfrac #1#2{{\scriptstyle \dofrac\relax{#1}{#2}}}
+%D \def\xxfrac#1#2{{\scriptscriptstyle\dofrac\relax{#1}{#2}}}
+%D \stopbuffer
+%D
+%D \typebuffer[code] \getbuffer[code,sample]
+%D
+%D So we stick to the next definitions (watch the local
+%D overloading of \type {\xfrac}).
+
+\def\dofrac#1#2#3{\relax\mathematics{{{#1{#2}}\over{#1{#3}}}}}
+
+\def\frac {\dofrac\mathstyle}
+\def\xfrac #1#2{\begingroup
+ \let\xfrac\xxfrac
+ \dofrac\scriptstyle{#1}{#2}%
+ \endgroup}
+\def\xxfrac#1#2{\begingroup
+ \dofrac\scriptscriptstyle{#1}{#2}%
+ \endgroup}
+
+%D The \type {xx} variant looks still ugly, so maybe it's
+%D best to say:
+
+\def\xxfrac#1#2{\begingroup
+ \dofrac\scriptscriptstyle
+ {#1}{\raise.25ex\hbox{$\scriptscriptstyle#2$}}%
+ \endgroup}
+
+%D Something low level for scientific calculator notation:
+
+\def\scinot#1#2%
+ {#1\times10^{#2}}
+
+%D The next macro, \type {\ch}, is \PPCHTEX\ aware. In
+%D formulas one can therefore best use \type {\ch} instead of
+%D \type {\chemical}, especially in fractions.
+
+\ifx\mathstyle\undefined
+ \let\mathstyle\relax
+\fi
+
+\def\ch#1%
+ {\ifx\@@chemicalletter\undefined
+ \mathstyle{\rm#1}%
+ \else
+ \dosetsubscripts
+ \mathstyle{\@@chemicalletter{#1}}%
+ \doresetsubscripts
+ \fi}
+
+%D \macros
+%D {/}
+%D
+%D Just to be sure, we restore the behavior of some typical
+%D math characters.
+
+\bgroup
+
+\catcode`\/=\@@other \global \let\normalforwardslash/
+\catcode`\/=\@@active \doglobal\appendtoks\let/\normalforwardslash\to\everymathematics
+
+\egroup
+
+%D These macros were first needed by Frits Spijker (also
+%D known as Gajes) for typesetting the minus sign that is
+%D keyed into scientific calculators.
+
+% This is the first alternative, which works okay for the
+% minus, but less for the plus.
+%
+% \def\dodoraisedmathord#1#2#3%
+% {\mathord{{#2\raise.#1ex\hbox{#2#3}}}}
+%
+% \def\doraisedmathord#1%
+% {\mathchoice
+% {\dodoraisedmathord5\tf #1}%
+% {\dodoraisedmathord5\tf #1}%
+% {\dodoraisedmathord4\tfx #1}%
+% {\dodoraisedmathord3\tfxx#1}}
+%
+% \def\negative{\doraisedmathord-}
+% \def\positive{\doraisedmathord+}
+%
+% So, now we use the monospaced signs, that we also
+% define as symbol, so that they can be overloaded.
+
+\def\dodoraisedmathord#1#2#3%
+ {\mathord{{#2\raise.#1ex\hbox{#2\symbol[#3]}}}}
+
+\def\doraisedmathord#1%
+ {\mathchoice
+ {\dodoraisedmathord5\tf {#1}}%
+ {\dodoraisedmathord5\tf {#1}}%
+ {\dodoraisedmathord4\tx {#1}}%
+ {\dodoraisedmathord3\txx{#1}}}
+
+\def\dodonumbermathord#1#2%
+ {\setbox\scratchbox\hbox{0}%
+ \mathord{\hbox to \wd\scratchbox{\hss#1\symbol[#2]\hss}}}
+
+\def\donumbermathord#1%
+ {\mathchoice
+ {\dodonumbermathord\tf {#1}}%
+ {\dodonumbermathord\tf {#1}}%
+ {\dodonumbermathord\tx {#1}}%
+ {\dodonumbermathord\txx{#1}}}
+
+\definesymbol[positive] [\getglyph{Mono}{+}]
+\definesymbol[negative] [\getglyph{Mono}{-}]
+\definesymbol[zeroamount][\getglyph{Mono}{-}]
+
+\def\negative {\doraisedmathord{negative}}
+\def\positive {\doraisedmathord{positive}}
+\def\zeroamount{\donumbermathord{zeroamount}}
+
+%D How negative such a symbol looks is demonstrated in:
+%D $\negative 10^{\negative 10^{\negative 10}}$.
+
+\setupformulas
+ [\c!way=\@@nrway,
+ \c!blockway=,
+ \c!sectionnumber=\@@nrsectionnumber,
+ \c!location=\v!right,
+ \c!left=(,
+ \c!right=),
+ \c!numberstyle=,
+ \c!numbercolor=,
+ \c!numbercommand=,
+ \c!spacebefore=\v!big,
+ \c!spaceafter=\@@fmspacebefore,
+ \c!grid=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-mis.tex b/Master/texmf-dist/tex/context/base/core-mis.tex
new file mode 100644
index 00000000000..acd84554e7f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-mis.tex
@@ -0,0 +1,2655 @@
+%D \module
+%D [ file=core-mis,
+%D version=1998.01.29,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Miscelaneous,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Misc Commands}
+
+% todo: kleur in legenda + letter
+
+% Obsolete
+%
+% \startmessages dutch library: systems
+% title: systeem
+% 3: probeer LaTeX eens
+% \stopmessages
+%
+% \startmessages english library: systems
+% title: system
+% 3: try LaTeX
+% \stopmessages
+%
+% \startmessages german library: systems
+% title: system
+% 3: Versuche LaTeX
+% \stopmessages
+%
+% \startmessages czech library: systems
+% title: system
+% 3: zkuste LaTeX
+% \stopmessages
+%
+% \startmessages italian library: systems
+% title: sistema
+% 3: provare LaTeX
+% \stopmessages
+%
+% \startmessages norwegian library: systems
+% title: system
+% 3: forsøker LaTeX
+% \stopmessages
+%
+% \startmessages romanian library: systems
+% title: sistem
+% 3: incercati LaTeX
+% \stopmessages
+%
+% %D You would not expect the next macro in \CONTEXT,
+% %D wouldn't you? It's there to warn \LATEX\ users that
+% %D something is wrong.
+% %D
+% %D Obsolete now:
+% %
+% % \def\documentstyle{\showmessage\m!systems3\empty\stoptekst}
+% %
+% % \let\documentclass=\documentstyle
+% %D \macros
+% %D {simplifiedcommands, simplifycommands}
+% %D
+% %D I first needed this simplification in bookmarks. Users can
+% %D add their own if needed.
+
+\unprotect
+
+%D Sometimes (for instance in bookmarks) we need to simplify macro
+%D behaviour, so here is the hook.
+
+\ifx\simplifiedcommands\undefined \newtoks\simplifiedcommands \fi
+
+\def\simplifycommands{\the\simplifiedcommands}
+
+%D A possibly growing list:
+
+%appendtoks \def\executesynonym#1#2#3#4{#3}\to\simplifiedcommands
+%appendtoks \def\executesort#1#2#3{#3}\to\simplifiedcommands
+
+\appendtoks \def\ { }\to\simplifiedcommands
+\appendtoks \def\type#1{\string\\\strippedcsname#1}\to\simplifiedcommands
+\appendtoks \def\TeX{TeX}\to\simplifiedcommands
+\appendtoks \def\ConTeXt{ConTeXt}\to\simplifiedcommands
+\appendtoks \def\MetaPost{MetaPost}\to\simplifiedcommands
+\appendtoks \def\MetaFont{MetaFont}\to\simplifiedcommands
+\appendtoks \def\MetaFun{MetaFun}\to\simplifiedcommands
+\appendtoks \def||{-}\to\simplifiedcommands
+
+\appendtoks\let\buildtextaccent\secondoftwoarguments\to\simplifiedcommands
+
+% THIS WAS MAIN-002.TEX
+
+%\def\checkinterlineskip
+% {\ifvmode
+% \ifdim\lastskip>\zeropoint
+% \nointerlineskip
+% \else\ifdim\lastkern>\zeropoint
+% \nointerlineskip
+% \fi\fi
+% \fi}
+
+\def\horitems#1#2% #1=breedte #2=commandos
+ {\scratchdimen#1%
+ \divide\scratchdimen \nofitems
+ \!!counta\zerocount
+ \def\docommando##1%
+ {\advance\!!counta \plusone
+ \processaction
+ [\@@isalign]
+ [ \v!left=>\hbox to \scratchdimen{\strut##1\hss},
+ \v!right=>\hbox to \scratchdimen{\hss\strut##1},
+ \v!middle=>\hbox to \scratchdimen{\hss\strut##1\hss},
+ \v!margin=>\ifnum\!!counta=\plusone\hss\else\hfill\fi
+ \strut##1%
+ \ifnum\!!counta=\nofitems\hss\else\hfill\fi,
+ \s!default=>\hbox to \scratchdimen{\hss\strut##1\hss}, % midden
+ \s!unknown=>\hbox to \scratchdimen{\strut##1\hss}]}% % links
+ \hbox to #1{\hss#2\hss}}
+
+\def\veritems#1#2% #1=breedte #2=commandos
+ {\scratchdimen#1%
+ \def\docommando##1%
+ {\ifdim\scratchdimen<\zeropoint % the - was a signal
+ \hbox to -\scratchdimen{\hss\strut##1}%
+ \else\ifdim\scratchdimen>\zeropoint
+ \hbox to \scratchdimen{\strut##1\hss}%
+ \else
+ \hbox{\strut##1}%
+ \fi\fi}%
+ \vbox{#2}}
+
+\def\dosetupitems[#1]%
+ {\getparameters[\??is][#1]%
+ \doif\@@iswidth\v!unknown
+ {\def\@@iswidth{\hsize}}%
+ \doifconversiondefinedelse\@@issymbol
+ {\def\doitembullet##1{\convertnumber{\@@issymbol}{##1}}}
+ {\doifsymboldefinedelse\@@issymbol
+ {\def\doitembullet##1{\symbol[\@@issymbol]}}{}}}
+
+\def\makeitemsandbullets#1%
+ {\doifelse\@@isn\v!unknown
+ {\getcommalistsize[#1]%
+ \edef\nofitems{\commalistsize}}
+ {\edef\nofitems{\@@isn}}%
+ \setbox0\hbox
+ {\doitems \@@iswidth
+ {\processcommalist[#1]\docommando}}%
+ \setbox2\hbox
+ {\doitems \@@isbulletbreedte
+ {\dorecurse\nofitems
+ {\docommando{\strut\doitembullet\recurselevel}}}}}
+
+\def\dostartitems#1#2#3%
+ {\let\doitems#2%
+ \def\@@isbulletbreedte{#3}%
+ \makeitemsandbullets{#1}%
+ \@@isbefore}
+
+\def\dostopitems
+ {\@@isafter
+ \egroup}
+
+\setvalue{doitems\v!top}#1%
+ {\dostartitems{#1}\horitems\@@iswidth
+ \noindent\vbox
+ {\forgetall
+ \doifsomething\@@issymbol
+ {\doifnot\@@issymbol\v!none
+ {\box2
+ \@@isinbetween
+ \nointerlineskip}}%
+ \box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!bottom}#1%
+ {\dostartitems{#1}\horitems\@@iswidth
+ \noindent\vbox
+ {\forgetall
+ \box0
+ \doifsomething\@@issymbol
+ {\@@isinbetween
+ \nointerlineskip
+ \box2}}%
+ \dostopitems}
+
+\setvalue{doitems\v!inmargin}#1%
+ {\dostartitems{#1}\veritems{-1.5em}% - is a signal
+ \noindent\hbox{\llap{\box2\hskip\leftmargindistance}\box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!left}#1%
+ {\advance\hsize -1.5em%
+ \dostartitems{#1}\veritems{1.5em}%
+ \noindent\hbox{\box2\box0}%
+ \dostopitems}
+
+\setvalue{doitems\v!right}#1%
+ {\dostartitems{#1}\veritems{0em}%
+ \noindent\hbox{\box0\hskip-\wd2\box2}%
+ \dostopitems}
+
+\def\setupitems
+ {\dosingleargument\dosetupitems}
+
+\def\complexitems[#1]%
+ {\bgroup
+ \setupitems[#1]%
+ \parindent\zeropoint
+ \setlocalhsize
+ \hsize\localhsize
+ \dontcomplain
+ %\doifundefined{doitems\@@islocation}%
+ % {\let\@@islocation\v!left}%
+ %\getvalue{doitems\@@islocation}}
+ \executeifdefined{doitems\@@islocation}{\let\@@islocation\v!left}}
+
+\definecomplexorsimpleempty\items
+
+\setupitems
+ [\c!location=\v!left,
+ \c!symbol=5,
+ \c!width=\hsize,
+ \c!align=\v!middle,
+ \c!n=\v!unknown,
+ \c!before=\blank,
+ \c!inbetween={\blank[\v!medium]},
+ \c!after=\blank]
+
+% Te zijner tijd [plaats=boven,onder,midden] implementeren,
+% in dat geval moet eerst de maximale hoogte worden bepaald.
+%
+% Overigens kan een en ander mooier met \halign.
+
+\def\dodefineparagraphs[#1][#2]%
+ {\setvalue{\s!do\s!next#1}%
+ {\def\\{\getvalue{#1}}}%
+ \setvalue{#1}%
+ {\getvalue{\s!do\s!next#1}%
+ \dostartalineas{#1}}%
+ \setvalue{\e!next#1}%
+ {\getvalue{#1}}%
+ \setvalue{\e!start#1}%
+ {\bgroup
+ \letvalue{\s!do\s!next#1}\empty
+ \setvalue{\e!stop#1}%
+ {\getvalue{#1}%
+ \egroup}%
+ \getvalue{#1}}%
+ \getparameters[\??al#1]%
+ [\c!n=3,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!distance=1em,
+ \c!height=\v!fit,
+ \c!rule=\v!off,
+ \c!command=,
+ \c!align=,
+ \c!tolerance=\v!tolerant,
+ \c!style=,
+ \c!color=,
+ \c!top=,
+ \c!top=\vss,
+ \c!bottom=\vfill,
+ #2]%
+ \setvalue{\e!setup#1\e!endsetup}%
+ {\setupparagraphs[#1]}%
+ \dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\setupparagraphs[#1][\recurselevel]
+ [\c!width=,
+ \c!bottom=\getvalue{\??al#1\c!bottom},
+ \c!top=\getvalue{\??al#1\c!top},
+ \c!height=\getvalue{\??al#1\c!height},
+ \c!style=\getvalue{\??al#1\c!style},
+ \c!color=\getvalue{\??al#1\c!color},
+ \c!rule=\getvalue{\??al#1\c!rule},
+ \c!align=\getvalue{\??al#1\c!align},
+ \c!tolerance=\getvalue{\??al#1\c!tolerance},
+ \c!distance=\getvalue{\??al#1\c!distance}]}%
+ \setupparagraphs[#1][1][\c!distance=0em]}
+
+\def\defineparagraphs
+ {\dodoubleargument\dodefineparagraphs}
+
+\def\dosetupparagraphs[#1][#2][#3]%
+ {\doifelse{#2}\v!each
+ {\dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\getparameters[\??al#1\recurselevel][#3]}}
+ {\ConvertToConstant\doifelse{#3}{}
+ {\getparameters[\??al#1][#2]}
+ {\def\docommando##1%
+ {\getparameters[\??al#1##1][#3]}%
+ \processcommalist[#2]\docommando}}}
+
+\def\setupparagraphs
+ {\dotripleempty\dosetupparagraphs}
+
+\newcount\alteller
+\newcount\alnsize
+\newdimen\alhsize
+
+\def\doalinealijn#1#2%
+ {\doifelsevalue{\??al#2\the\alteller\c!rule}\v!on
+ {\dimen2=#1\relax
+ \hskip.5\dimen2
+ \hskip-\linewidth
+ \vrule\!!width\linewidth
+ \hskip.5\dimen2}
+ {\hskip#1}}
+
+\def\dostartalinea#1%
+ {\doifelsevaluenothing{\??al#1\the\alteller\c!width}
+ {\!!widtha\alhsize
+ \divide\!!widtha \alnsize}
+ {\!!widtha\getvalue{\??al#1\the\alteller\c!width}}%
+ \dostartattributes
+ {\??al#1\the\alteller}\c!style\c!color
+ \empty
+ \doifelsevalue{\??al#1\the\alteller\c!height}\v!fit
+ {\setbox0\vtop}
+ {\setbox0\vtop to \getvalue{\??al#1\the\alteller\c!height}}%
+ \bgroup
+ \blank[\v!disable]%
+ \forgetall
+ \getvalue{\??al#1\the\alteller\c!top}%
+ \getvalue{\??al#1\c!inner}%
+ \hsize\!!widtha % setting \wd afterwards removed
+ \getvalue{\??al#1\the\alteller\c!inner}%
+ \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!align}}% nodig?
+ \expandafter\setupalign\expandafter[\!!stringa]%
+ \edef\!!stringa{\getvalue{\??al#1\the\alteller\c!tolerance}}% nodig?
+ \expandafter\setuptolerance\expandafter[\!!stringa]%
+ \ignorespaces
+ \endgraf
+ \ignorespaces
+ %
+ % Nadeel van de onderstaande constructie is dat \everypar
+ % binnen een groep kan staan en zo steeds \begstruts
+ % worden geplaatst. Mooi is anders dus moet het anders!
+ %
+ % Hier is \Everypar niet nodig.
+ %
+ \everypar{\begstrut\everypar\emptytoks}%
+ %
+ \ignorespaces\geenspatie % dubbel: \ignorespaces
+ \getvalue{\??al#1\the\alteller\c!command}}
+
+\def\dostopalinea#1%
+ {\ifvmode
+ \removelastskip
+ \else
+ \unskip\endstrut\endgraf
+ \fi
+ \getvalue{\??al#1\the\alteller\c!bottom}%
+ \egroup
+ \ifdim\wd0=\zeropoint % no data
+ \wd0\!!widtha
+ \fi
+ \box0
+ \dostopattributes
+ %\ifnum\alteller<\getvalue{\??al#1\c!n}\relax
+ % \def\next{\doalinea{#1}}%
+ %\else
+ % \def\next{\dostopalineas{#1}}%
+ %\fi
+ %\next}
+ \ifnum\alteller<\getvalue{\??al#1\c!n}\relax
+ \@EA\doalinea
+ \else
+ \@EA\dostopalineas
+ \fi{#1}}
+
+\def\doalinea#1%
+ {\global\advance\alteller \plusone
+ \doifelsevaluenothing{\??al#1\the\alteller\c!distance}
+ {\doifnot{\the\alteller}{1}
+ {\hskip\getvalue{\??al#1\c!distance}}}
+ {\doifelse{\the\alteller}{1}%
+ {\hskip\getvalue{\??al#1\the\alteller\c!distance}}
+ {\doalinealijn{\getvalue{\??al#1\the\alteller\c!distance}}{#1}}}%
+ \setvalue{#1}{\dostopalinea{#1}}%
+ \dostartalinea{#1}}
+
+\def\dostartalineas#1%
+ {\global\alteller\zerocount
+ \parindent\zeropoint
+ \setlocalhsize
+ \alhsize\localhsize
+ \alnsize\getvalue{\??al#1\c!n}\relax
+ \dorecurse
+ {\getvalue{\??al#1\c!n}}
+ {\doifelsevaluenothing{\??al#1\recurselevel\c!distance}
+ {\doifnot{\recurselevel}{1}
+ {\global\advance\alhsize -\getvalue{\??al#1\c!distance}\relax}}
+ {\global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!distance}\relax}%
+ \doifvaluesomething{\??al#1\recurselevel\c!width}
+ {\global\advance\alnsize \minusone
+ \global\advance\alhsize -\getvalue{\??al#1\recurselevel\c!width}\relax}}%
+ %\whitespace % gaat fout bij \framed
+ \getvalue{\??al#1\c!before}%
+ \leavevmode % gaat wel goed bij \framed
+ \vbox\bgroup\hbox\bgroup\doalinea{#1}}
+
+\def\dostopalineas#1%
+ {\egroup
+ \egroup
+ \par
+ \getvalue{\??al#1\c!after}}%
+
+\def\dosetuptab[#1]%
+ {\getparameters[\??ta]
+ [\c!headstyle=\v!normal,
+ \c!headcolor=,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!width=\v!broad,
+ \c!sample={\hskip4em},
+ \c!before=,
+ \c!after=,
+ #1]%
+ \definedescription
+ [tab]
+ [\c!headstyle=\@@taheadstyle,
+ \c!headcolor=\@@tacolor,
+ \c!sample=\@@tasample,
+ \c!width=\@@tawidth,
+ \c!before=\@@tabefore,
+ \c!after=\@@taafter]}
+
+\def\setuptab
+ {\dosingleargument\dosetuptab}
+
+\setuptab
+ [\c!location=\v!left]
+
+% The following macro's are derived from PPCHTEX and
+% therefore take some LaTeX font-switching into account.
+
+\newif\ifloweredsubscripts
+
+% Due to some upward incompatibality of LaTeX to LaTeX2.09
+% and/or LaTeX2e we had to force \@@chemieletter. Otherwise
+% some weird \nullfont error comes up.
+
+\doifundefined{@@chemieletter}{\def\@@chemieletter{\rm}}
+
+\def\beginlatexmathmodehack
+ {\ifmmode
+ \let\endlatexmathmodehack\relax
+ \else
+ \def\endlatexmathmodehack{$}$\@@chemieletter
+ \fi}
+
+\def\setsubscripts
+ {\beginlatexmathmodehack
+ \def\dosetsubscript##1##2##3%
+ {\dimen0=##3\fontdimen5##2%
+ \setxvalue{@@\string##1\string##2}{\the##1##2\relax}%
+ ##1##2=\dimen0\relax}%
+ \def\dodosetsubscript##1##2%
+ {\dosetsubscript{##1}{\textfont2}{##2}%
+ \dosetsubscript{##1}{\scriptfont2}{##2}%
+ \dosetsubscript{##1}{\scriptscriptfont2}{##2}}%
+ %\dodosetsubscript{\fontdimen14}{?}%
+ \dodosetsubscript{\fontdimen16}{.7}%
+ \dodosetsubscript{\fontdimen17}{.7}%
+ \global\loweredsubscriptstrue
+ \endlatexmathmodehack}
+
+\def\resetsubscripts
+ {\ifloweredsubscripts
+ \beginlatexmathmodehack
+ \def\doresetsubscript##1##2%
+ {\dimen0=\getvalue{@@\string##1\string##2}\relax
+ ##1##2=\dimen0}%
+ \def\dodoresetsubscript##1%
+ {\doresetsubscript{##1}{\textfont2}%
+ \doresetsubscript{##1}{\scriptfont2}%
+ \doresetsubscript{##1}{\scriptscriptfont2}}%
+ %\dodoresetsubscript{\fontdimen14}%
+ \dodoresetsubscript{\fontdimen16}%
+ \dodoresetsubscript{\fontdimen17}%
+ \global\loweredsubscriptsfalse
+ \endlatexmathmodehack
+ \fi}
+
+\let\beginlatexmathmodehack = \relax
+\let\endlatexmathmodehack = \relax
+
+\def\chem#1#2#3%
+ {\bgroup
+ \setsubscripts
+ \mathematics{\hbox{#1}_{#2}^{#3}}%
+ \resetsubscripts
+ \egroup}
+
+\def\celsius#1{#1\mathematics{^\circ}C}
+\def\graden {\mathematics{^\circ}}
+\def\inch {\hbox{\rm\char125\relax}}
+\def\fraction#1#2{\mathematics{#1\over#2}}
+
+\def\bedragprefix {\euro\normalfixedspace}
+\def\bedragsuffix {}
+\def\bedragempty {\euro}
+
+\unexpanded\def\bedrag#1%
+ {\strut\hbox\bgroup
+ \let\normalfixedspace~%
+ \doifelsenothing{#1}
+ {\bedragempty}
+ {\bedragprefix\digits{#1}\bedragsuffix}%
+ \egroup}
+
+% \definieeralineas[test][n=3]
+%
+% \stelalineasin[test][3][breedte=4cm,uitlijnen=links]
+%
+% \startopelkaar
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{~.~~1,--} \\
+% \test hans \\ ton \\ \bedrag{~.~~1,~~} \\
+% \test hans \\ ton \\ \bedrag{~.100,--} \\
+% \test hans \\ ton \\ \subtot{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{1.000,--} \\
+% \test hans \\ ton \\ \totaal{1.000,--} \\
+% \test hans \\ ton \\ \bedrag{nihil,--} \\
+% \test hans \\ ton \\ \totaal{nihil,--} \\
+% \test hans \\ ton \\ \subtot{nihil,--} \\
+% \stopopelkaar
+
+\def\periodswidth {.5em}
+\def\periodsdefault{3} % was 5, but now it's like \unknown
+
+\unexpanded\def\periods
+ {\dosingleempty\doperiods}
+
+\def\doperiods[#1]%
+ {\dontleavehmode
+ \begingroup
+ \scratchdimen\periodswidth
+ \hbox to \iffirstargument#1\else\periodsdefault\fi \scratchdimen
+ {\leaders\hbox to \scratchdimen{\hss.\hss}\hss}%
+ \endgroup}
+
+\unexpanded\def\unknown
+ {\periods\relax} % relax prevents lookahead for []
+
+% compatibility macros
+
+\def\doorsnede
+ {\hbox{\rlap/$\circ$} }
+
+\unexpanded\def\ongeveer
+ {\mathematics\pm}
+
+\def\midboundarycharacter#1#2%
+ {%\nobreak
+ \hskip\hspaceamount\currentlanguage{#2}%
+ \languageparameter#1%
+ %\nobreak
+ \hskip\hspaceamount\currentlanguage{#2}}
+
+\def\leftboundarycharacter#1#2%
+ {\languageparameter#1%
+ \nobreak
+ \hskip\hspaceamount\currentlanguage{#2}}
+
+% \def\rightboundarycharacter#1#2%
+% {\nobreak
+% \hskip\hspaceamount\currentlanguage{#2}%
+% \languageparameter#1}
+
+\def\rightboundarycharacter#1#2%
+ {\prewordbreak %\nobreak
+ \hskip\hspaceamount\currentlanguage{#2}%
+ \languageparameter#1}
+
+% actually this is pretty old, but temporary moved here
+%
+% obsolete:
+
+\def\setuphyphenmark
+ {\dodoubleargument\getparameters[\??kp]}
+
+\setuphyphenmark
+ [\c!sign=\composedhyphen]
+
+\installdiscretionaries || \@@kpsign
+
+% will become:
+%
+% \installdiscretionaries || \composedhyphen
+
+\def\composedhyphen
+ {\discretionary
+ {\hbox{\directsymbol\empty\c!leftcompoundhyphen}}
+ {\hbox{\directsymbol\empty\c!rightcompoundhyphen}}
+ {\hbox{\directsymbol\empty\c!compoundhyphen}}}
+
+\definesymbol[\c!leftcompoundhyphen] [\languageparameter\c!leftcompoundhyphen]
+\definesymbol[\c!rightcompoundhyphen] [\languageparameter\c!rightcompoundhyphen]
+\definesymbol[\c!compoundhyphen] [\languageparameter\c!compoundhyphen]
+
+\definehspace [sentence] [\zeropoint]
+\definehspace [intersentence] [.250em]
+
+\definesymbol
+ [\c!midsentence]
+ [\midboundarycharacter\c!midsentence{sentence}]
+
+\definesymbol
+ [\c!leftsentence]
+ [\leftboundarycharacter\c!leftsentence{sentence}]
+
+\definesymbol
+ [\c!rightsentence]
+ [\rightboundarycharacter\c!rightsentence{sentence}]
+
+\definesymbol
+ [\c!leftsubsentence]
+ [\leftboundarycharacter\c!leftsubsentence{sentence}]
+
+\definesymbol
+ [\c!rightsubsentence]
+ [\rightboundarycharacter\c!rightsubsentence{sentence}]
+
+\newsignal \subsentencesignal
+\newcounter\subsentencelevel
+
+\def\midsentence
+ {\symbol[\c!midsentence]}
+
+\def\beginofsubsentence
+ {\ifdim\lastkern=\subsentencesignal
+ \unskip
+ \kern\hspaceamount\currentlanguage{intersentence}%
+ \fi
+ \doglobal\increment\subsentencelevel
+ \ifnum\subsentencelevel=\plusone
+ \leaveoutervmode
+ \fi
+ \symbol[\ifodd\subsentencelevel\c!leftsentence \else
+ \c!leftsubsentence\fi]%
+ \ignorespaces}
+
+\def\beginofsubsentencespacing
+ {\kern\subsentencesignal\ignorespaces}
+
+\def\endofsubsentence
+ {\symbol[\ifodd\subsentencelevel\c!rightsentence \else
+ \c!rightsubsentence\fi]%
+ \doglobal\decrement\subsentencelevel
+ \unskip
+ \kern\subsentencesignal}
+
+\def\endofsubsentencespacing
+ {\ifdim\lastkern=\subsentencesignal
+ \unskip
+ \hskip\hspaceamount\currentlanguage{intersentence}%
+ \ignorespaces
+ \else
+ \unskip
+ \fi}
+
+% test |<|test |<|test|>| test|>| test \par
+% test|<|test|<|test|>|test|>|test \par
+% test |<||<|test|>||>| test \par
+
+\enableactivediscretionaries
+
+\definehspace [quotation] [\zeropoint]
+\definehspace [interquotation] [.125em]
+
+%definehspace [quote] [\zeropoint]
+%definehspace [speech] [\zeropoint]
+
+\definehspace [quote] [\hspaceamount\currentlanguage{quotation}]
+\definehspace [speech] [\hspaceamount\currentlanguage{quotation}]
+
+\definesymbol
+ [\c!leftquotation]
+ [\leftboundarycharacter\c!leftquotation{quotation}]
+
+\definesymbol
+ [\c!rightquotation]
+ [\rightboundarycharacter\c!rightquotation{quotation}]
+
+\definesymbol
+ [\c!leftquote]
+ [\leftboundarycharacter\c!leftquote{quote}]
+
+\definesymbol
+ [\c!rightquote]
+ [\rightboundarycharacter\c!rightquote{quote}]
+
+\definesymbol
+ [\c!leftspeech]
+ [\leftboundarycharacter\c!leftspeech{speech}]
+
+\definesymbol
+ [\c!rightspeech]
+ [\rightboundarycharacter\c!rightspeech{speech}]
+
+\definesymbol
+ [\c!middlespeech]
+ [\leftboundarycharacter\c!middlespeech{speech}]
+
+%%%%% will be replaced by delimitedtext %%%%%
+
+\def\leftquotationmark
+ {\setbox\scratchbox\hbox{\symbol[\c!leftquotation]}%
+ \doif\@@cilocation\v!margin{\hskip-\wd\scratchbox}%
+ \box\scratchbox}
+
+\def\rightquotationmark
+ {\hsmash{\symbol[\c!rightquotation]}}
+
+\newsignal\quotationsignal
+
+\def\setupquote
+ {\dodoubleargument\getparameters[\??ci]}
+
+% \def\setuoquotation
+% {\setupquote}
+
+\def\startquotation
+ {\bgroup\dosingleempty\dostartquotation}
+
+\def\dostartquotation[#1]%
+ {\@@cibefore
+ \doifelsenothing{#1}
+ {\let\dostopquotation\relax}
+ {\startnarrower[#1]%
+ \let\dostopquotation\stopnarrower}%
+ \dostartattributes\??ci\c!style\c!color\empty
+ \leftquotationmark
+ \ignorespaces}
+
+\def\stopquotation
+ {\removeunwantedspaces
+ \removelastskip
+ \rightquotationmark
+ \dostopattributes
+ \dostopquotation
+ \@@ciafter
+ \egroup}
+
+\def\dohandlequotation#1#2%
+ {\ifdim\lastskip=\quotationsignal
+ \unskip\hskip\hspaceamount\currentlanguage{interquotation}%
+ \else
+ #2%
+ \fi
+ \ifhmode % else funny pagebeaks
+ \penalty\!!tenthousand\hskip\zeropoint % == \prewordbreak
+ \fi
+ \strut % new, needed below
+ \symbol[#1]%
+ \penalty\!!tenthousand\hskip\quotationsignal} % +- \prewordbreak
+
+\def\handlequotation#1%
+ {\dohandlequotation{#1}\relax}
+
+\unexpanded\def\quotation
+ {\groupedcommand
+ {\dohandlequotation\c!leftquotation \relax}
+ {\dohandlequotation\c!rightquotation\removelastskip}}
+
+\unexpanded\def\quote
+ {\doifelse\@@cistyle\v!normal\doquotedcite\doattributedcite}
+
+\def\doquotedcite
+ {\groupedcommand
+ {\dohandlequotation\c!leftquote \relax}
+ {\dohandlequotation\c!rightquote\removelastskip}}
+
+\def\doattributedcite
+ {\groupedcommand
+ {\dostartattributes\??ci\c!style\c!color}
+ {\dostopattributes}}
+
+%D The previous one fails in \placefloat[left]{}{}, so instead
+%D we use the next alternative, where the first one is handled
+%D outside group. Watch the strut.
+
+\unexpanded\def\quotation
+ {\dohandlequotation\c!leftquotation\relax
+ \groupedcommand \donothing
+ {\dohandlequotation\c!rightquotation\removelastskip}}
+
+\def\doquotedcite
+ {\dohandlequotation\c!leftquote\relax
+ \groupedcommand \donothing
+ {\dohandlequotation\c!rightquote\removelastskip}}
+
+\setupquote
+ [\c!location=\v!margin,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!before=\startnarrower,
+ \c!after=\stopnarrower]
+
+\appendtoks\def\quotation#1{"#1"}\to\simplifiedcommands
+\appendtoks\def\quote #1{'#1'}\to\simplifiedcommands
+
+%D The next features was so desperately needed by Giuseppe
+%D Bilotta that he made a module for it. Since this is a
+%D typical example of core functionality, I decided to extend
+%D the low level quotation macros in such a way that a speech
+%D feature could be build on top of it. The speech opening and
+%D closing symbols are defined per language. Italian is an
+%D example of a language that has them set.
+
+%%%%% will be replaced by delimitedtext %%%%%
+
+\newcounter\speechlevel \newconditional\insidespeech
+
+\def\startspeech
+ {\doglobal\increment\speechlevel\relax
+ \dohandlequotation\c!leftspeech\relax
+ \global\settrue\insidespeech
+ \ignorespaces}
+
+\def\stopspeech
+ {\dohandlequotation\c!rightspeech\removelastskip
+ \doglobal\decrement\speechlevel\relax
+ \ifcase\speechlevel\relax \global\setfalse\insidespeech \fi}
+
+\def\dohandlespeech % indirect since called in everypar
+ {\relax % still needed?
+ \ifcase\speechlevel\or\dodohandlespeech\fi}
+
+\def\dodohandlespeech
+ {\ifconditional\insidespeech
+ \dohandlequotation\c!middlespeech\relax
+ \else
+ \global\settrue\insidespeech
+ \fi}
+
+\unexpanded\def\speech
+ {\doglobal\increment\speechlevel\relax
+ \dohandlequotation\c!leftspeech\relax
+ \groupedcommand \ignorespaces
+ {\dohandlequotation\c!rightspeech\removelastskip
+ \doglobal\decrement\speechlevel\relax}}
+
+% \appendtoks \dohandlespeech \to \everypar
+
+% this will replace the quotation and speed definitions
+
+\newsignal\delimitedtextsignal
+
+\def\delimitedtextparameter#1%
+ {\csname\??ci
+ \ifundefined{\??ci\currentdelimitedtext#1}\else\currentdelimitedtext\fi
+ #1\endcsname}
+
+\def\definedelimitedtext
+ {\dodoubleempty\dodefinedelimitedtext}
+
+\def\dodefinedelimitedtext[#1][#2]%
+ {\doifassignmentelse{#2}
+ {\getparameters
+ [\??ci#1]
+ [\c!location=\v!margin, % \v!text \v!paragraph
+ \c!spacebefore=,
+ \c!spaceafter=\delimitedtextparameter\c!spacebefore,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\delimitedtextparameter\c!leftmargin,
+ \c!indentnext=\v!yes,
+ \c!before=,
+ \c!after=,
+ \c!left=,
+ \c!right=,
+ \c!level=0,
+ \c!repeat=\v!no,
+ #2]}%
+ {\doifdefined{#2}
+ {\copyparameters[\??ci#1][\??ci#2]
+ [\c!location,\c!spacebefore,\c!spaceafter,\c!style,\c!color,
+ \c!leftmargin,\c!rightmargin,\c!indentnext,
+ \c!before,\c!after,\c!left,\c!right]}}%
+ \doifsomething{#1}
+ {\unexpanded\setvalue{#1}{\delimitedtext[#1]}%
+ \setvalue{\e!start#1}{\startdelimitedtext[#1]}%
+ \setvalue{\e!stop#1}{\stopdelimitedtext}}}
+
+\def\setupdelimitedtext
+ {\dodoubleargument\dosetupdelimitedtext}
+
+\def\dosetupdelimitedtext[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??ci#1][#2]%
+ \else
+ \getparameters[\??ci][#1]%
+ \fi}
+
+\def\dorepeatdelimitedtext
+ {\relax\ifcase\delimitedtextparameter\c!level\else
+ \dohandledelimitedtext\c!middle
+ \fi}
+
+\def\startdelimitedtext[#1]%
+ {\bgroup
+ \def\currentdelimitedtext{#1}%
+ \doif{\delimitedtextparameter\c!repeat}\v!yes
+ {\appendtoks \dorepeatdelimitedtext \to \everypar}%
+ \doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}%
+ {\dosingleempty\dostartdelimitedtextpar}\dostartdelimitedtexttxt}
+
+\def\dostartdelimitedtextpar[#1]%
+ {\let\dostopdelimitedtext\dostopdelimitedtextpar
+ \doifsomething{\delimitedtextparameter\c!spacebefore}
+ {\blank[\delimitedtextparameter\c!spacebefore]}%
+ \delimitedtextparameter\c!before
+ % nicer:
+ % \doadaptleftskip {\delimitedtextparameter\c!leftmargin}%
+ % \doadaptrightskip{\delimitedtextparameter\c!rightmargin}%
+ % backward compatible:
+ \doifelsenothing{#1}
+ {\doadaptleftskip {\delimitedtextparameter\c!leftmargin}%
+ \doadaptrightskip{\delimitedtextparameter\c!rightmargin}%
+ \let\dodostopdelimitedtextpar\endgraf}
+ {\startnarrower[#1]\let\dodostopdelimitedtextpar\stopnarrower}%
+ % so far
+ \dochecknextindentation{\??ci\currentdelimitedtext}%
+ \dostartattributes{\??ci\currentdelimitedtext}\c!style\c!color\empty
+ \leftdelimitedtextmark
+ \doglobal\incrementvalue{\??ci\currentdelimitedtext\c!level}%
+ \ignorespaces}
+
+\def\dostopdelimitedtextpar
+ {\removeunwantedspaces
+ \removelastskip
+ \rightdelimitedtextmark
+ \dostopattributes
+ \dodostopdelimitedtextpar
+ \delimitedtextparameter\c!after
+ \doifsomething{\delimitedtextparameter\c!spaceafter}
+ {\blank[\delimitedtextparameter\c!spaceafter]}}
+
+\def\dostartdelimitedtexttxt
+ {\let\dostopdelimitedtext\dostopdelimitedtexttxt
+ \dostartattributes{\??ci\currentdelimitedtext}\c!style\c!color\empty
+ \dohandledelimitedtext\c!left
+ \ignorespaces}
+
+\def\dostopdelimitedtexttxt
+ {\removeunwantedspaces
+ \dohandledelimitedtext\c!right
+ \dostopattributes}
+
+\def\stopdelimitedtext
+ {\dostopdelimitedtext
+ \doglobal\decrementvalue{\??ci\currentdelimitedtext\c!level}%
+ \egroup}
+
+\def\delimitedtext[#1]%
+ {\pushmacro\currentdelimitedtext
+ \def\currentdelimitedtext{#1}%
+ \doifinsetelse{\delimitedtextparameter\c!location}{\v!paragraph,\v!margin}%
+ \dodelimitedtextpar\dodelimitedtexttxt}
+
+% shortcuts
+
+\def\startdelimited{\startdelimitedtext}
+\def\stopdelimited {\stopdelimitedtext} % no let, dynamically assigned
+\def\delimited {\delimitedtext}
+
+\def\leftdelimitedtextmark
+ {\dontleavehmode
+ \setbox\scratchbox\hbox{\delimitedtextparameter\c!left}%
+ \doif{\delimitedtextparameter\c!location}\v!margin{\hskip-\wd\scratchbox}%
+ \box\scratchbox}
+
+\def\rightdelimitedtextmark
+ {\hsmash{\delimitedtextparameter\c!right}}
+
+\def\dohandledelimitedtext#1#2%
+ {\bgroup
+ \setbox\scratchbox\hbox{#1}%
+ \ifdim\wd\scratchbox>\zeropoint
+ \ifdim\lastskip=\delimitedtextsignal
+ \unskip\hskip\hspaceamount\currentlanguage{interquotation}%
+ \else
+ #2%
+ \fi
+ \ifhmode % else funny pagebeaks
+ \penalty\!!tenthousand\hskip\zeropoint % == \prewordbreak
+ \fi
+ \strut % new, needed below
+ \delimitedtextparameter#1%
+ \penalty\!!tenthousand\hskip\delimitedtextsignal % +- \prewordbreak
+ \fi
+ \egroup}
+
+\def\handledelimitedtext#1%
+ {\dohandledelimitedtext{#1}\relax}
+
+\unexpanded\def\dodelimitedtextpar
+ {\dohandledelimitedtext\c!left\relax
+ \groupedcommand
+ \donothing
+ {\dohandledelimitedtext\c!right\removelastskip}}
+
+\unexpanded\def\dodelimitedtexttxt
+ {\doifelse{\delimitedtextparameter\c!style}\v!normal
+ \doquoteddelimited\doattributeddelimited}
+
+\def\doquoteddelimited
+ {\dohandledelimitedtext\c!left\relax
+ \groupedcommand
+ \donothing
+ {\dohandledelimitedtext\c!right
+ \removelastskip
+ \popmacro\currentdelimitedtext}}
+
+\def\doattributeddelimited
+ {\groupedcommand
+ {\dostartattributes{\??ci\currentdelimitedtext}\c!style\c!color}
+ {\dostopattributes
+ \popmacro\currentdelimitedtext}}
+
+% \definedelimitedtext
+% [\v!quotation]
+% [\c!left={\symbol[\c!leftquotation]},
+% \c!right={\symbol[\c!rightquotation]},
+% \c!leftmargin=\v!standard]
+%
+% \definedelimitedtext
+% [\v!quote][\v!quotation]
+%
+% \setupdelimitedtext
+% [\v!quote]
+% [\c!location=\v!text,
+% \c!left={\symbol[\c!leftquote]},
+% \c!right={\symbol[\c!rightquote]}]
+%
+% \definedelimitedtext
+% [\v!speech][\v!quotation]
+%
+% \setupdelimitedtext
+% [\v!speech]
+% [\c!repeat=\v!yes,
+% \c!left={\symbol[\c!leftspeech]},
+% \c!middle={\symbol[\c!middlespeech]},
+% \c!right={\symbol[\c!rightspeech]}]
+%
+% how do we call an tight quote
+%
+% \definedelimitedtext
+% [\v!quotation][\v!quotation]
+%
+% \setupdelimitedtext
+% [\v!quotation]
+% [\c!indentnext=\v!no,
+% \c!spacebefore=\v!nowhite]
+%
+% \def\setupquotation{\setupdelimitedtext[\v!quotation]}
+% \def\setupquote {\setupdelimitedtext[\v!quote]}
+
+% seldom used, move from kernel to run time module
+
+\def\basegrid
+ {\dosingleempty\dobasegrid}
+
+\def\dobasegrid[#1]%
+ {\begingroup
+ \getparameters[\??rt]
+ [\c!x=0,\c!y=0,
+ \c!nx=10,\c!ny=10,
+ \c!dx=.5,\c!dy=.5,
+ \c!xstep=0,\c!ystep=0,
+ \c!unit=\s!cm,
+ \c!scale=1,
+ \c!factor=1,
+ \c!offset=\v!yes,
+ \c!location=\v!left,
+ #1]%
+ \startpositioning
+ \dimen0=\@@rtdx\@@rtunit\relax
+ \dimen0=\@@rtscale\dimen0\relax
+ \dimen0=\@@rtfactor\dimen0\relax
+ \multiply\dimen0 \@@rtnx\relax
+ \dimen2=\@@rtdy\@@rtunit\relax
+ \dimen2=\@@rtscale\dimen2\relax
+ \dimen2=\@@rtfactor\dimen2\relax
+ \multiply\dimen2 \@@rtny\relax
+ \def\horline
+ {\vbox
+ {\hrule
+ \!!width \dimen0
+ \!!height \linewidth
+ \!!depth \!!zeropoint}}%
+ \def\verline%
+ {\vrule
+ \!!width \linewidth
+ \!!height \dimen2
+ \!!depth \!!zeropoint}%
+ \doglobal\newcounter\@@gridc
+ \doglobal\newcounter\@@gridd
+ \doglobal\newcounter\@@gride
+ \def\setlegend##1##2##3%
+ {\gdef\@@gridc{0}%
+ \dimen0=2em\relax
+ \dimen2=##2\@@rtunit\relax
+ \dimen2=\@@rtscale\dimen2\relax
+ \dimen2=\@@rtfactor\dimen2\relax
+ \divide\dimen0 \dimen2\relax
+ \xdef\@@gride{\number\dimen0}%
+ \ifnum\@@gride>50
+ \gdef\@@gride{100}%
+ \else\ifnum\@@gride>10
+ \gdef\@@gride{50}%
+ \else\ifnum\@@gride>5
+ \gdef\@@gride{10}%
+ \else\ifnum\@@gride>1
+ \gdef\@@gride{5}%
+ \else
+ \gdef\@@gride{1}%
+ \fi\fi\fi\fi
+ \gdef\@@gridd{0}%
+ \def\legend
+ {\ifnum\@@gridd=\zerocount
+ \vbox
+ {\increment(\@@gridc,##1)%
+ \hbox to 2em{\hss\@@gridc\hss}}%
+ \global\let\@@gridd=\@@gride
+ \fi
+ \doglobal\decrement\@@gridd
+ \doglobal\increment(\@@gridc,##1)}}%
+ \def\draw##1##2##3##4##5##6##7##8##9%
+ {\setuppositioning
+ [\c!state=##8,
+ \c!xstep=\v!absolute,
+ \c!ystep=\v!absolute,
+ \c!unit=\@@rtunit,
+ \c!scale=\@@rtscale,
+ \c!factor=\@@rtfactor,
+ \c!offset=\@@rtoffset,
+ \c!xoffset=##6,
+ \c!yoffset=##7]%
+ \doifelse{##9}\v!middle
+ {\scratchdimen##3pt\scratchdimen.5\scratchdimen
+ \edef\@@psxx{\withoutpt\the\scratchdimen}%
+ \scratchdimen##4pt\scratchdimen.5\scratchdimen
+ \edef\@@psyy{\withoutpt\the\scratchdimen}%
+ \scratchcounter##2\advance\scratchcounter -1
+ \edef\@@pszz{\the\scratchcounter}}
+ {\edef\@@psxx{0}\edef\@@psyy{0}\edef\@@pszz{##2}}%
+ \position(\@@psxx,\@@psyy){##1}%
+ \setuppositioning
+ [\c!state=##8,
+ \c!xstep=\v!relative,
+ \c!ystep=\v!relative,
+ \c!scale=\@@rtscale,
+ \c!factor=\@@rtfactor,
+ \c!offset=\@@rtoffset,
+ \c!unit=\@@rtunit]%
+ \dorecurse\@@pszz{\position(##3,##4){##5}}}%
+ \draw
+ \verline\@@rtnx\@@rtdx0\verline\!!zeropoint\!!zeropoint\v!start\empty
+ \draw
+ \horline\@@rtny0\@@rtdy\horline\!!zeropoint\!!zeropoint\v!start\empty
+ \tfx
+ \doifnot\@@rtxstep{0}
+ {\setlegend\@@rtxstep\@@rtdx\@@rtx
+ \draw\legend\@@rtnx\@@rtdx0\legend{-1em}{-1.5em}\v!overlay\@@rtlocation}%
+ \doifnot\@@rtystep{0}
+ {\setlegend\@@rtystep\@@rtdy\@@rty
+ \draw\legend\@@rtny0\@@rtdy\legend{-2em}{-.75ex}\v!overlay\@@rtlocation}%
+ \stoppositioning
+ \endgroup}
+
+\let\grid\basegrid
+
+% Dit wordt:
+%
+% \doorverwijzen[naam][instellingen] enz.
+%
+% waarbij <naam> bijvoorbeeld publicatie is. Dit levert:
+%
+% \start<naam>
+% \stop<naam>
+%
+% \beginvan<naam>
+% \eindvan<naam>
+%
+% \publicatie
+%
+% \volledigelijstmetpublicaties
+%
+% eigenlijk kan ook door... zo worden uitgebreid!
+
+% old, will become obsolete or module, replace by bib module
+
+\defineenumeration
+ [@publicatie]
+ [\c!location=\v!left,
+ \c!width=\@@pbwidth,\c!hang=,\c!sample=,
+ \c!before=\@@pbbefore,\c!after=\@@pbafter,\c!inbetween=,
+ \c!headstyle=\@@pbheadstyle,\c!style=,
+ \c!headcolor=\@@pbheadcolor,\c!color=,
+ \c!way=\@@pbway,\c!blockway=\@@pbblockway,
+ \c!text=,\c!left=\@@pbleft,\c!right=\@@pbright]
+
+\def\dosetuppublications[#1]%
+ {\getparameters[\??pb][#1]}
+
+\def\setuppublications%
+ {\dosingleargument\dosetuppublications}
+
+\def\apa@publicatie
+ {\doifsomething\@@pb@naam {\@@pb@naam,\space}%
+ \doifsomething\@@pb@titel {{\sl\@@pb@titel}.\space}%
+ \doifsomething\@@pb@jaar {(\@@pb@jaar).\space}%
+ \doifsomething\@@pb@plaats {\@@pb@plaats\doifelsenothing\@@pb@uitgever{.}{:\space}}%
+ \doifsomething\@@pb@uitgever{\@@pb@uitgever.}}
+
+\def\normaal@publicatie
+ {\@@pb@naam, \@@pb@titel, \@@pb@jaar, \@@pb@pagina, \@@pb@plaats, \@@pb@uitgever.}
+
+\def\complexstartpublicatie[#1]#2\stoppublicatie
+ {\bgroup
+ \def\dosetpublicatie
+ {\processcommalist
+ [naam,titel,jaar,plaats,pagina,uitgever]
+ \setpublicatie
+ \ignorespaces}%
+ \def\setpublicatie##1%
+ {\letvalue{\??pb @##1}\empty
+ \setvalue{##1}####1{\setvalue{\??pb @##1}{####1}\ignorespaces}}%
+ \def\getpublicatie%
+ {\doifsomething\@@pbalternative{\getvalue{\@@pbalternative @publicatie}}}%
+ \doifelse\@@pbnumbering\v!yes
+ {\@publicatie[#1]\dosetpublicatie#2\getpublicatie\par}%
+ {\@@pbbefore
+ \dosetpublicatie\ignorespaces#2\getpublicatie
+ \@@pbafter}%
+ \egroup}
+
+\definecomplexorsimpleempty\startpublicatie
+
+\def\publication#1[#2]%
+ {\@@pbleft\in{#1}[#2]\@@pbright}
+
+\setuppublications
+ [\c!numbering=\v!yes,
+ \c!alternative=\c!apa,
+ \c!width=2em,
+ \c!hang=,
+ \c!sample=,
+ \c!before=,
+ \c!after=,
+ \c!inbetween=,
+ \c!headstyle=,
+ \c!headcolor=,
+ \c!style=,
+ \c!color=,
+ \c!blockway=\v!by\v!text,
+ \c!way=\v!by\v!text,
+ \c!text=,
+ \c!left={[},
+ \c!right={]}]
+
+% only used at pragma, move from kernel to run time module
+
+\def\referraldate
+ {\currentdate[\v!referral]}
+
+\def\doreferral[#1]%
+ {\noheaderandfooterlines
+ \bgroup
+ \getparameters
+ [\??km]
+ [\c!bet=\unknown,\c!dat=\unknown,\c!ken=\unknown,
+ \c!from=,\c!to=,\c!ref=,#1]%
+ % moet anders, hoort niet in 01b
+ \assigntranslation[\s!nl=referentie,\s!en=reference,\s!de=Referenz,\s!sp=referencia]\to\@@@kmref
+ \assigntranslation[\s!nl=van,\s!en=from,\s!de=Von,\s!sp=de]\to\@@@kmvan
+ \assigntranslation[\s!nl=aan,\s!en=to,\s!de=An,\s!sp=a]\to\@@@kmaan
+ \assigntranslation[\s!nl=betreft,\s!en=concerns,\s!de=Betreff,\s!sp=]\to\@@@kmbet
+ \assigntranslation[\s!nl=datum,\s!en=date,\s!de=Datum,\s!sp=fecha]\to\@@@kmdat
+ \assigntranslation[\s!nl=kenmerk,\s!en=mark,\s!de=Kennzeichen,\s!sp=]\to\@@@kmken
+ %
+ \definetabulate[\s!dummy][|l|p|]
+ \startdummy
+ \NC\@@@kmbet\EQ\@@kmbet\NC\NR
+ \NC\@@@kmdat\EQ\@@kmdat\NC\NR
+ \NC\@@@kmken\EQ\expanded{\smallcapped{\@@kmken}}\NC\NR
+ \doifsomething{\@@kmfrom\@@kmto}{\NC\NC\NC\NR}%
+ \doifsomething \@@kmfrom {\NC\@@@kmvan\EQ\@@kmfrom\NC\NR}%
+ \doifsomething \@@kmto {\NC\@@@kmaan\EQ\@@kmto\NC\NR}%
+ \doifsomething \@@kmref {\NC\NC\NC\NR\NC\@@@kmref\EQ\@@kmref\NC\NR}%
+ \stopdummy
+ \egroup}
+
+\def\referral
+ {\dosingleargument\doreferral}
+
+% FUZZY OLD STUFF: will be removed when not used in some manual;
+% rows instead of columns, i'd forgotten that this code exist
+%
+% \definesystemvariable{ri}
+%
+% \def\setuprows
+% {\dodoubleargument\getparameters[\??ri]}
+%
+% \definecomplexorsimpleempty\startrows
+%
+% \def\complexstartrows[#1]%
+% {\bgroup
+% \setuprows[#1]%
+% \let\do@@ribottom\relax
+% \def\row
+% {\do@@ribottom
+% \egroup
+% \dimen0\vsize
+% \divide\dimen0 \@@rin
+% \advance\dimen0 -\lineskip
+% \vbox to \dimen0
+% \bgroup
+% \@@ritop
+% \let\do@@ribottom\@@ribottom
+% \ignorespaces}%
+% \bgroup
+% \row}
+%
+% \def\stoprows
+% {\do@@ribottom
+% \egroup
+% \egroup}
+%
+% \setuprows
+% [\c!n=2,
+% \c!top=,
+% \c!bottom=\vfill]
+
+% THIS WAS MAIN-003.TEX
+
+\startmessages dutch library: systems
+ 41: externe file -- in groep -- bestaat niet
+\stopmessages
+
+\startmessages english library: systems
+ 41: external file -- in group -- does not exist
+\stopmessages
+
+\startmessages german library: systems
+ 41: Externe Datei -- in Gruppe -- existiert nicht
+\stopmessages
+
+\startmessages czech library: systems
+ 41: externi soubor -- ve skupine -- neexistuje
+\stopmessages
+
+\startmessages italian library: systems
+ 41: il file esterno -- del gruppo -- non esiste
+\stopmessages
+
+\startmessages norwegian library: systems
+ 41: ekstern fil -- i gruppe -- eksisterer ikke
+\stopmessages
+
+\startmessages romanian library: systems
+ 41: fisierul extern -- din grupul -- nu exista
+\stopmessages
+
+\definetabulate
+ [\v!legend]
+ [|emj1|i1|mR|]
+
+\setuptabulate
+ [\v!legend]
+ [\c!unit=.75em,\c!inner=\setquicktabulate\leg,EQ={=}]
+
+\definetabulate
+ [\v!legend][\v!two]
+ [|emj1|emk1|i1|mR|]
+
+\definetabulate
+ [\v!fact]
+ [|R|ecmj1|i1mR|]
+
+\setuptabulate
+ [\v!fact]
+ [\c!unit=.75em,\c!inner=\setquicktabulate\fact,EQ={=}]
+
+\unexpanded\def\xbox
+ {\bgroup\aftergroup\egroup\hbox\bgroup\tx\let\next=}
+
+\unexpanded\def\xxbox
+ {\bgroup\aftergroup\egroup\hbox\bgroup\txx\let\next=}
+
+% \def\mrm#1%
+% {$\rm#1$}
+
+%D \macros
+%D {definepairedbox, setuppairedbox, placepairedbox}
+%D
+%D Paired boxes, formally called legends, but from now on a
+%D legend is just an instance, are primarily meant for
+%D typesetting some text alongside an illustration. Although
+%D there is quite some variation possible, the functionality is
+%D kept simple, if only because in most cases such pairs are
+%D typeset sober.
+%D
+%D The location specification accepts a pair, where the first
+%D keyword specifies the arrangement, and the second one the
+%D alignment. The first key of the location pair is one of
+%D \type {left}, \type {right}, \type {top} or \type {bottom},
+%D while the second key can also be \type {middle}.
+%D
+%D The first box is just collected in an horizontal box, but
+%D the second one is a vertical box that gets passed the
+%D bodyfont and alignment settings.
+
+%D Today we would implement this using layers .... but for the
+%D moment we keep it this way.
+
+% \startbuffer[test]
+% \test left \test left,top \test left,bottom \test left,middle
+% \test right \test right,top \test right,bottom \test right,middle
+% \test top \test top,left \test top,right \test top,middle
+% \test bottom \test bottom,left \test bottom,right \test bottom,middle
+% \stopbuffer
+%
+% \def\showtest#1%
+% {\pagina
+% \typebuffer[demo]
+% \def\test##1
+% {\startlinecorrection[blank]
+% \getbuffer[demo]%
+% \ruledhbox\placelegend
+% [bodyfont=6pt,location={##1}]
+% {\framed[width=.25\textwidth]{\tttf##1}}
+% {#1}
+% \stoplinecorrection}
+% \getbuffer[test]}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=\hsize,maxwidth=\makeupwidth,
+% height=\vsize,maxheight=\makeupheight]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate the default settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=\textwidth,
+% maxwidth=\textwidth]
+% \stopbuffer
+%
+% \showtest{\input tufte }
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=.65\textwidth]
+% \stopbuffer
+%
+% \showtest{\input knuth }
+%
+% \startbuffer[demo]
+% \setuplegend
+% [height=2cm]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate some other settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [width=.65\textwidth,
+% height=2cm]
+% \stopbuffer
+%
+% \showtest{These examples demonstrate some other settings.}
+%
+% \startbuffer[demo]
+% \setuplegend
+% [n=2,align=right,width=.5\textwidth]
+% \stopbuffer
+%
+% \showtest{\input zapf }
+
+%D \macros
+%D {setuplegend, placelegend}
+%D
+%D It makes sense to typeset a legend to a figure in \TEX\
+%D and not in a drawing package. The macro \type {\placelegend}
+%D combines a figure (or something else) and its legend. This
+%D command is just a paired box.
+%D
+%D The legend is placed according to \type {location}, being
+%D \type {bottom} or \type {right}. The macro macro is used as
+%D follows.
+%D
+%D \starttyping
+%D \placefigure
+%D {whow}
+%D {\placelegend
+%D {\externalfigure[cow]}
+%D {\starttabulation
+%D \NC 1 \NC head \NC \NR
+%D \NC 2 \NC legs \NC \NR
+%D \NC 3 \NC tail \NC \NR
+%D \stoptabulation}}
+%D
+%D \placefigure
+%D {whow}
+%D {\placelegend
+%D {\externalfigure[cow]}
+%D {\starttabulation[|l|l|l|l|]
+%D \NC 1 \NC head \NC 3 \NC tail \NC \NR
+%D \NC 2 \NC legs \NC \NC \NC \NR
+%D \stoptabulation}}
+%D
+%D \placefigure
+%D {whow}
+%D {\placelegend[n=2]
+%D {\externalfigure[cow]}
+%D {\starttabulation
+%D \NC 1 \NC head \NC \NR
+%D \NC 2 \NC legs \NC \NR
+%D \NC 3 \NC tail \NC \NR
+%D \stoptabulation}}
+%D
+%D \placefigure
+%D {whow}
+%D {\placelegend[n=2]
+%D {\externalfigure[cow]}
+%D {head \par legs \par tail}}
+%D
+%D \placefigure
+%D {whow}
+%D {\placelegend[n=2]
+%D {\externalfigure[cow]}
+%D {\startitemize[packed]
+%D \item head \item legs \item tail \item belly \item horns
+%D \stopitemize}}
+%D
+%D \placefigure
+%D {whow}
+%D {\placelegend[n=2,width=.8\hsize]
+%D {\externalfigure[cow]}
+%D {\startitemize[packed]
+%D \item head \item legs \item tail \item belly \item horns
+%D \stopitemize}}
+%D \stoptyping
+
+\newbox\firstpairedbox
+\newbox\secondpairedbox
+
+\def\definepairedbox
+ {\dodoubleempty\dodefinepairedbox}
+
+\def\dodefinepairedbox[#1][#2]%
+ {\getparameters
+ [\??ld#1]
+ [\c!n=1,
+ \c!distance=\bodyfontsize,
+ \c!before=,
+ \c!after=,
+ \c!color=,
+ \c!style=,
+ \c!inbetween={\blank[\v!medium]},
+ \c!width=\hsize,
+ \c!height=\vsize,
+ \c!maxwidth=\textwidth, % \makeupwidth,
+ \c!maxheight=\textheight, % \makeupheight,
+ \c!bodyfont=,
+ \c!align=,
+ \c!location=\v!bottom,
+ #2]%
+ \setvalue{\e!setup#1\e!endsetup}{\setuppairedbox[#1]}%
+ \setvalue{\e!place#1}{\placepairedbox[#1]}}
+
+\def\setuppairedbox
+ {\dodoubleempty\dosetuppairedbox}
+
+\def\dosetuppairedbox[#1]%
+ {\getparameters[\??ld#1]}
+
+\def\placepairedbox
+ {\bgroup\dodoubleempty\doplacepairedbox}
+
+\def\doplacepairedbox[#1][#2]% watch the hsize/vsize tricks
+ {\setuppairedbox[#1][#2]% % and don't change them
+ \copyparameters % brrr
+ [\??ld][\??ld#1]
+ [\c!n,\c!distance,\c!inbetween,\c!before,\c!after,
+ \c!width,\c!height,\c!maxwidth,\c!maxheight,
+ \c!color,\c!style,\c!bodyfont,\c!align,\c!location]%
+ \@@ldbefore\bgroup
+ \global\setsystemmode{pairedbox}%
+ \beforefirstpairedbox
+ \dowithnextbox
+ {\betweenbothpairedboxes
+ \dowithnextbox
+ {\afterbothpairedboxes
+ \egroup\@@ldafter
+ \egroup}
+ \vbox\bgroup
+ \insidesecondpairedbox
+ \let\next=}
+ \hbox}
+
+\def\beforefirstpairedbox
+ {\chardef\pairedlocationa1 % left
+ \chardef\pairedlocationb4 % middle
+ \getfromcommacommand[\@@ldlocation][1]%
+ \processaction
+ [\commalistelement]
+ [ \v!left=>\chardef\pairedlocationa0,
+ \v!right=>\chardef\pairedlocationa1,
+ \v!top=>\chardef\pairedlocationa2,
+ \v!bottom=>\chardef\pairedlocationa3]%
+ \getfromcommacommand[\@@ldlocation][2]%
+ \processaction
+ [\commalistelement]
+ [ \v!left=>\chardef\pairedlocationb0,
+ \v!right=>\chardef\pairedlocationb1,
+ \v!high=>\chardef\pairedlocationb2,
+ \v!top=>\chardef\pairedlocationb2,
+ \v!low=>\chardef\pairedlocationb3,
+ \v!bottom=>\chardef\pairedlocationb3,
+ \v!middle=>\chardef\pairedlocationb4]}
+
+\def\betweenbothpairedboxes
+ {\switchtobodyfont[\@@ldbodyfont]% split under same regime
+ \setbox\firstpairedbox\flushnextbox
+ \ifnum\pairedlocationa<2
+ \hsize\wd\firstpairedbox % trick
+ \hsize\@@ldwidth
+ \scratchdimen\wd\firstpairedbox
+ \advance\scratchdimen \@@lddistance
+ \bgroup\advance\scratchdimen \hsize
+ \ifdim\scratchdimen>\@@ldmaxwidth\relax
+ \egroup
+ \hsize\@@ldmaxwidth
+ \advance\hsize -\scratchdimen
+ \else
+ \egroup
+ \fi
+ \else
+ \hsize\wd\firstpairedbox
+ \hsize\@@ldwidth % can be \hsize
+ \ifdim\hsize>\@@ldmaxwidth\relax \hsize\@@ldmaxwidth \fi % can be \hsize
+ \fi
+ \ifnum\@@ldn>\plusone
+ \setrigidcolumnhsize\hsize\@@lddistance\@@ldn
+ \fi}
+
+\def\afterbothpairedboxes
+ {\setbox\secondpairedbox\vbox
+ {% \localstartcolor[\@@ldcolor]% does not work yet
+ \ifnum\@@ldn>1
+ \rigidcolumnbalance\nextbox
+ \else
+ \flushnextbox
+ \fi
+ }% \localstopcolor}%
+ \ifnum\pairedlocationa<2\hbox\else\vbox\fi\bgroup % hide vsize
+ \forgetall
+ \ifnum\pairedlocationa<2
+ \scratchdimen\maxoftwoboxdimens\ht\firstpairedbox\secondpairedbox
+ \vsize\scratchdimen
+ \ifdim\scratchdimen<\@@ldheight\relax % can be \vsize
+ \scratchdimen\@@ldheight
+ \fi
+ \ifdim\scratchdimen>\@@ldmaxheight\relax
+ \scratchdimen\@@ldmaxheight
+ \fi
+ \valignpairedbox\firstpairedbox \scratchdimen
+ \valignpairedbox\secondpairedbox\scratchdimen
+ \else
+ \scratchdimen\maxoftwoboxdimens\wd\firstpairedbox\secondpairedbox
+ \halignpairedbox\firstpairedbox \scratchdimen
+ \halignpairedbox\secondpairedbox\scratchdimen
+ \scratchdimen\ht\secondpairedbox
+ \vsize\scratchdimen
+ \ifdim\ht\secondpairedbox<\@@ldheight\relax % can be \vsize
+ \scratchdimen\@@ldheight\relax % \relax needed
+ \fi
+ \ifdim\scratchdimen>\@@ldmaxheight\relax % todo: totale hoogte
+ \scratchdimen\@@ldmaxheight\relax % \relax needed
+ \fi
+ \ifdim\scratchdimen>\ht\secondpairedbox
+ \setbox\secondpairedbox\vbox to \scratchdimen
+ {\ifnum\pairedlocationa=3 \vss\fi %
+ \box\secondpairedbox
+ \ifnum\pairedlocationa=2 \vss\fi}% \kern\zeropoint
+ \fi
+ \fi
+ \ifcase\pairedlocationa
+ \box\secondpairedbox\hskip\@@lddistance\box\firstpairedbox \or
+ \box\firstpairedbox \hskip\@@lddistance\box\secondpairedbox\or
+ \box\secondpairedbox\endgraf \nointerlineskip \@@ldinbetween \box\firstpairedbox \or
+ \box\firstpairedbox \endgraf \nointerlineskip \@@ldinbetween \box\secondpairedbox\else
+ \fi
+ \egroup}
+
+\def\insidesecondpairedbox
+ {\forgetall
+ \setupalign[\@@ldalign]%
+ \tolerantTABLEbreaktrue % hm.
+ \blank[\v!disable]%
+ \everypar{\begstrut}}
+
+\def\maxoftwoboxdimens#1#2#3%
+ {#1\ifdim#1#2>#1#3 #2\else#3\fi}
+
+\def\valignpairedbox#1#2%
+ {\setbox#1\vbox to #2
+ {\ifcase\pairedlocationb\or\or\or\vss\or\vss\fi
+ \box#1\relax
+ \ifcase\pairedlocationb\or\or\vss\or\or\vss\fi}}
+
+\def\halignpairedbox#1#2%
+ {\setbox#1\hbox to #2
+ {\ifcase\pairedlocationb\or\hss\or\or\or\hss\fi
+ \box#1\relax
+ \ifcase\pairedlocationb\hss\or\or\or\or\hss\fi}}
+
+\definepairedbox[\v!legend]
+
+%D Goody:
+
+\newevery \everyinsidefloat \relax
+
+\appendtoks
+ \global\resetsystemmode{combination}%
+ \global\resetsystemmode{pairedbox}%
+\to \everyinsidefloat
+
+\newcount\horcombination % counter
+\newcount\totcombination
+
+\def\definecombination
+ {\dodoubleempty\dodefinecombination}
+
+\def\dodefinecombination[#1][#2]%
+ {\copyparameters
+ [\??co#1][\??co]
+ [\c!width,\c!height,\c!distance,\c!location,%
+ \c!before,\c!inbetween,\c!after,\c!align,%
+ \c!style,\c!color]%
+ \getparameters
+ [\??co#1][#2]}
+
+\def\setupcombinations
+ {\dodoubleempty\dosetupcombinations}
+
+\def\dosetupcombinations[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??co#1][#2]%
+ \else
+ \getparameters[\??co][#1]%
+ \fi}
+
+\def\startcombination
+ {\dodoubleempty\dostartcombination}
+
+\def\combinationparameter#1%
+ {\csname\??co\currentcombination#1\endcsname}%
+
+\def\dostartcombination[#1][#2]%
+ {\bgroup
+ \global\setsystemmode{combination}%
+ \ifsecondargument
+ \def\currentcombination{#1}%
+ \else
+ \let\currentcombination\empty
+ \fi
+ \forgetall
+ \doifelse{\combinationparameter\c!height}\v!fit
+ \vbox {\vbox to \combinationparameter\c!height}%
+ \bgroup
+ %\doifelsenothing{#1}
+ % {\dodostartcombination[2*1*]}
+ % {\doifelsenothing{#2}
+ % {\dodostartcombination[#1*1*]}
+ % {\dodostartcombination[#2*1*]}}}
+ \expanded{\dodostartcombination
+ [\ifsecondargument#2\else\iffirstargument#1\else2\fi\fi*1*]}}
+
+\long\def\dodostartcombination[#1*#2*#3]%
+ {\setuphorizontaldivision
+ [\c!n=\v!fit,\c!distance=\combinationparameter\c!distance]%
+ \global\horcombination#1%
+ \global\totcombination#2%
+ \global\setbox\combinationstack\emptybox
+ \xdef\maxhorcombination{\the\horcombination}%
+ \multiply\totcombination\horcombination
+ \tabskip\zeropoint
+ \doifelse{\combinationparameter\c!width}\v!fit
+ {\halign}{\halign to \combinationparameter\c!width}%
+ \bgroup&%
+ %\hfil##\hfil% now : location={left,top}
+ \ExpandBothAfter\doifnotinset\v!left{\combinationparameter\c!location}\hfil
+ ##%
+ \ExpandBothAfter\doifnotinset\v!right{\combinationparameter\c!location}\hfil
+ &\tabskip\zeropoint \!!plus 1fill##\cr
+ \docombination}
+
+\def\docombination % we want to add struts but still ignore an empty box
+ {\dowithnextbox
+ {\setbox0\flushnextbox
+ \dowithnextbox
+ {\setbox2\flushnextbox
+ \dodocombination}%
+ \vtop\bgroup
+ \def\next
+ {\futurelet\nexttoken\nextnext}%
+ \def\nextnext
+ {\ifx\nexttoken\egroup \else % the next box is empty
+ \hsize\wd0
+ \setupalign[\combinationparameter\c!align]%
+ \dostartattributes{\??co\currentcombination}\c!style\c!color\empty
+ \bgroup
+ \aftergroup\endstrut
+ \aftergroup\dostopattributes
+ \aftergroup\egroup
+ \begstrut
+ \fi}%
+ \afterassignment\next\let\nexttoken=}
+ \hbox}
+
+% stupid version, does not align top stuff when captions,
+% keep as example
+%
+% \def\dodocombination
+% {\vbox
+% {\forgetall % \setupwhitespace[\v!none]%
+% \let\next\vbox
+% \ExpandFirstAfter\processallactionsinset
+% [\combinationparameter\c!location]
+% [ \v!top=>\let\next\tbox,
+% \v!middle=>\let\next\halfwaybox]%
+% \next{\copy0}%
+% \ifdim\ht2>\zeropoint % beter dan \wd2, nu \strut mogelijk
+% \combinationparameter\c!inbetween
+% %\vtop % wrong code
+% % {\nointerlineskip % recently added
+% % \hsize\wd0
+% % \setupalign[\combinationparameter\c!align]% % \raggedcenter
+% % \begstrut\unhbox2\endstrut}%
+% \box2
+% \fi}%
+% \ifnum\totcombination>\plusone
+% \global\advance\totcombination\minusone
+% \global\advance\horcombination\minusone
+% \ifnum\horcombination=\zerocount
+% \def\next
+% {\cr\noalign
+% {\forgetall % \setupwhitespace[\v!geen]% no
+% \nointerlineskip
+% \combinationparameter\c!before
+% \combinationparameter\c!after
+% \vss
+% \nointerlineskip}%
+% \global\horcombination\maxhorcombination\relax
+% \docombination}%
+% \else
+% \def\next
+% {&&&\hskip\combinationparameter\c!distance&\docombination}%
+% \fi
+% \else
+% \def\next
+% {\cr\egroup}%
+% \fi
+% \next}
+
+% \def\dodocombination
+% {\vbox
+% {\forgetall % \setupwhitespace[\v!none]%
+% \let\next\vbox
+% \ExpandFirstAfter\processallactionsinset
+% [\combinationparameter\c!plaats]
+% [ \v!top=>\let\next\tbox,
+% \v!middle=>\let\next\halfwaybox]%
+% \next{\copy0}%
+% % we need to save the caption for a next alignment line
+% \saveoncombinationstack2}%
+% \ifnum\totcombination>\plusone
+% \global\advance\totcombination\minusone
+% \global\advance\horcombination\minusone
+% \ifnum\horcombination=\zerocount
+% \def\next
+% {\cr
+% \flushcombinationstack
+% \noalign
+% {\forgetall % \setupwhitespace[\v!none]% no
+% \global\setbox\combinationstack\emptybox
+% \nointerlineskip
+% \combinationparameter\c!after
+% \combinationparameter\c!before
+% \vss
+% \nointerlineskip}%
+% \global\horcombination\maxhorcombination\relax
+% \docombination}%
+% \else
+% \def\next
+% {&&&\hskip\combinationparameter\c!distance&\docombination}%
+% \fi
+% \else
+% \def\next
+% {\cr
+% \flushcombinationstack
+% \egroup}%
+% \fi
+% \next}
+
+\def\depthonlybox
+ {\dowithnextbox{\vtop{\hsize\wd\nextbox\kern\zeropoint\box\nextbox}}\vbox}
+
+% \def\boxwithstrutheight
+% {\dowithnextbox
+% {\scratchdimen\strutheight
+% \advance\scratchdimen-\nextboxht
+% \hbox{\raise\scratchdimen\box\nextbox}}%
+% \vbox}
+
+\def\dodocombination
+ {\vbox
+ {\forgetall % \setupwhitespace[\v!none]%
+ \let\next\vbox
+ \ExpandFirstAfter\processallactionsinset
+ [\combinationparameter\c!location]
+ [ \v!top=>\let\next\depthonlybox, % \tbox,
+ \v!middle=>\let\next\halfwaybox]%
+ \next{\copy0}%
+ % we need to save the caption for a next alignment line
+ \saveoncombinationstack2}%
+ \ifnum\totcombination>\plusone
+ \global\advance\totcombination\minusone
+ \global\advance\horcombination\minusone
+ \ifnum\horcombination=\zerocount
+ \def\next
+ {\cr
+ \flushcombinationstack
+ \noalign
+ {\forgetall % \setupwhitespace[\v!none]% no
+ \global\setbox\combinationstack\emptybox
+ \nointerlineskip
+ \combinationparameter\c!after
+ \combinationparameter\c!before
+ \vss
+ \nointerlineskip}%
+ \global\horcombination\maxhorcombination\relax
+ \docombination}%
+ \else
+ \def\next
+ {&&&\hskip\combinationparameter\c!distance&\docombination}%
+ \fi
+ \else
+ \def\next
+ {\cr
+ \flushcombinationstack
+ \egroup}%
+ \fi
+ \next}
+
+\def\stopcombination
+ {\egroup
+ \egroup}
+
+\newbox\combinationstack
+
+\def\saveoncombinationstack#1%
+ {\global\setbox\combinationstack\hbox
+ {\hbox{\box#1}\unhbox\combinationstack}}
+
+\def\flushcombinationstack
+ {\noalign
+ {\ifdim\ht\combinationstack>\zeropoint
+\nointerlineskip % nieuw
+ \combinationparameter\c!inbetween
+ \global\horcombination\maxhorcombination
+ \globallet\doflushcombinationstack\dodoflushcombinationstack
+ \else
+ \global\setbox\combinationstack\emptybox
+ \globallet\doflushcombinationstack\donothing
+ \fi}%
+ \doflushcombinationstack\crcr}
+
+\gdef\dodoflushcombinationstack
+ {\global\setbox\combinationstack\hbox
+ {\unhbox\combinationstack
+ \global\setbox1\lastbox}%
+ \box1% \ruledhbox{\box1}%
+ \global\advance\horcombination\minusone\relax
+ \ifnum\horcombination>\zerocount
+ \def\next{&&&&\doflushcombinationstack}%
+ \else
+ \global\setbox\combinationstack\emptybox
+ %\let\next\relax
+ \@EA\gobbleoneargument
+ \fi
+ \next}
+
+\setupcombinations
+ [\c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!distance=1em,
+ \c!location=\v!bottom, % can be something {top,left}
+ \c!before=\blank,
+ \c!inbetween={\blank[\v!medium]},
+ \c!style=,
+ \c!color=,
+ \c!after=,
+ \c!align=\v!middle]
+
+% does not work
+%
+% \def\plaatsondernaastelkaar#1#2%
+% {\bgroup
+% \def\doplaatsondernaastelkaar%
+% {#2\cr\omit\bgroup#2%
+% \aftergroup#2%
+% \aftergroup\cr
+% \aftergroup\egroup
+% \aftergroup\egroup
+% \let\next=}%
+% #1\bgroup##\cr
+% \omit\bgroup#2%
+% \aftergroup\doplaatsondernaastelkaar
+% \let\next=}
+
+\def\plaatsondernaastelkaar#1#2%
+ {\bgroup
+ \dowithnextbox
+ {\bgroup
+ \setbox0\box\nextbox
+ \dowithnextbox
+ {\setbox2\box\nextbox
+ #1{#2#########2\cr\box0\cr\box2\cr}
+ \egroup
+ \egroup}
+ \hbox}
+ \hbox}
+
+\def\placeontopofeachother
+ {\plaatsondernaastelkaar\halign\hss}
+
+\def\placesidebyside
+ {\plaatsondernaastelkaar\valign\vss}
+
+\def\douseexternalfiles[#1][#2]%
+ {\getparameters
+ [\??fi#1]
+ [\c!file=,
+ \c!bodyfont=,
+ \c!option=,
+ #2]}
+
+\def\useexternalfiles
+ {\dodoubleargument\douseexternalfiles}
+
+\def\dostelexternefilesin[#1][#2]%
+ {\doifundefinedelse{\??fi#1\c!file}
+ {\useexternalfiles[#1][#2]}
+ {\getparameters[\??fi#1][#2]}}
+
+\def\stelexternefilesin
+ {\dodoubleargument\dostelexternefilesin}
+
+\def\verwerkexternefile#1#2#3%
+ {\bgroup
+ \getparameters[\??fi#1][\c!file=,#3]%
+ \doinputonce{\getvalue{\??fi#1\c!file}}%
+ \ExpandFirstAfter\switchtobodyfont[\getvalue{\??fi#1\c!bodyfont}]%
+ \readsysfile{#2} % beter: loc of fix gebied
+ \donothing
+ {\showmessage\m!systems{41}{#2,#1}}%
+ \egroup}
+
+\def\douseexternalfile[#1][#2][#3][#4]%
+ {\stelexternefilesin[#1][]%
+ \doinputonce{\getvalue{\??fi#1\c!file}}%
+ \doifelsenothing{#2}
+ {\setvalue{#3}{\verwerkexternefile{#1}{#3}{#4}}}
+ {\setvalue{#2}{\verwerkexternefile{#1}{#3}{#4}}}}
+
+\def\useexternalfile
+ {\doquadrupleargument\douseexternalfile}
+
+\useexternalfiles
+ [pictex]
+ [\c!bodyfont=\v!small,
+ \c!file=pictex]
+
+\useexternalfiles
+ [table]
+ [\c!file=table]
+
+%D A couple of examples, demonstrating how the depth is
+%D taken care of:
+%D
+%D \startbuffer
+%D test\rotate[frame=on, rotation=0] {gans}%
+%D test\rotate[frame=on, rotation=90] {gans}%
+%D test\rotate[frame=on, rotation=180]{gans}%
+%D test\rotate[frame=on, rotation=270]{gans}%
+%D test
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+% \presetlocalframed[\??ro]
+%
+% \def\setuprotate
+% {\dodoubleargument\getparameters[\??ro]}
+%
+% \def\dorotatebox#1% {angle} \hbox/\vbox/\vtop
+% {\bgroup
+% \hbox\bgroup % compatibility hack
+% \dowithnextbox
+% {\edef\@@rorotation{#1}%
+% \setbox\nextbox\vbox{\flushnextbox}%
+% \dostoprotate
+% \egroup}}
+%
+% \def\dodostoprotate#1#2#3#4#5#6%
+% {\dontshowcomposition
+% \scratchdimen\nextboxht\advance\scratchdimen\nextboxdp
+% \doif\@@rolocation\v!high
+% {\setbox\nextbox\vbox{\hbox{\raise\nextboxdp\flushnextbox}}}%
+% \setbox\nextbox\vbox to #1
+% {#2\relax
+% \hbox to #4
+% {#5\relax % \number removes leading spaces too
+% \edef\@@rorotation{\number\@@rorotation}%
+% \doifelsenothing\@@rorotation
+% {\dostartrotation{90}}
+% {\dostartrotation{\@@rorotation}}%
+% \nextboxwd\zeropoint
+% \nextboxht\zeropoint
+% %\nextboxdp\zeropoint
+% \flushnextbox
+% \dostoprotation
+% #6}
+% #3}%
+% \nextboxdp\zeropoint
+% \flushnextbox
+% \egroup}
+%
+% \def\dostoprotate
+% {\!!counta\@@rorotation
+% \divide\!!counta 90
+% \ifcase\!!counta
+% \dodostoprotate\nextboxht\relax\vfill\nextboxwd\relax\hfill
+% \or
+% %\dodostoprotate\nextboxwd\vfill\relax\nextboxht\relax\hfill
+% \dodostoprotate\nextboxwd\vfill\relax\scratchdimen\relax\hfill
+% \or
+% \dodostoprotate\nextboxht\vfill\relax\nextboxwd\hfill\relax
+% \or
+% %\dodostoprotate\nextboxwd\relax\vfill\nextboxht\hfill\relax
+% \dodostoprotate\nextboxwd\relax\vfill\scratchdimen\hfill\relax
+% \or
+% \dodostoprotate\nextboxht\relax\vfill\nextboxwd\relax\hfill
+% \else
+% \def\@@rotation{90}%
+% \dodostoprotate\nextboxht\relax\vfill\nextboxwd\relax\hfill
+% \fi}
+%
+% \def\complexrotate[#1]%
+% {\dowithnextbox
+% {\getparameters[\??ro][#1]%
+% \dostoprotate}%
+% \vbox\localframed[\??ro][#1]}
+%
+% \unexpanded\def\rotate % \bgroup: \rotate kan argument zijn
+% {\bgroup\complexorsimpleempty\rotate}
+%
+% \setuprotate
+% [\c!rotation=90,
+% \c!width=\v!fit,
+% \c!height=\v!fit,
+% \c!offset=\v!overlay,
+% \c!frame=\v!off]
+
+% The previous implementation is replaced by one that supports
+% rotation over arbitrary angles.
+%
+% When we rotate over arbitrary angles, we need to relocate the
+% resulting box because rotation brings that box onto the negative
+% axis. The calculations (mostly sin and cosine) need to be tuned for
+% the way a box is packages (i.e. the refence point). A typical example
+% of drawing, scribbling, and going back to the days of school math.
+%
+% We do a bit more calculations than needed, simply because that way
+% it's easier to debug the code.
+
+\def\dododorotatenextbox
+ {\setbox\nextbox\vbox to \@@layerysiz
+ {\vfill
+ \hbox to \@@layerxsiz
+ {\dostartrotation\@@rorotation
+ \nextboxwd\zeropoint
+ \nextboxht\zeropoint
+ \flushnextbox
+ \dostoprotation
+ \hfill}%
+ \kern\@@layerypos}%
+ \setbox\nextbox\hbox
+ {\kern\@@layerxpos
+ \kern\@@layerxoff
+ \lower\@@layeryoff\flushnextbox}}
+
+\def\dodorotatenextbox#1#2% quite some trial and error -)
+ {\dontshowcomposition
+ \dontcomplain
+ \ifnum#2=\plusfour
+ % new, location=middle
+ \!!widthb \nextboxwd
+ \!!heightb\nextboxht
+ \!!depthb \nextboxdp
+ \setbox\nextbox\vbox{\vskip.5\nextboxht\hskip-.5\nextboxwd\flushnextbox}%
+ \smashbox\nextbox
+ \fi
+ \!!widtha \nextboxwd
+ \!!heighta\nextboxht
+ \!!deptha \nextboxdp
+ \!!doneafalse
+ \!!donebfalse
+ \ifcase#2\or
+ % 1: fit
+ \or
+ % 2: depth, not fit
+ \!!doneatrue
+ \!!donebtrue
+ \or
+ % 3: depth, fit
+ \!!donebtrue
+ \fi
+ \setbox\nextbox\vbox{\hbox{\raise\nextboxdp\flushnextbox}}%
+ \!!dimena \nextboxht
+ \calculatecos\@@rorotation\edef\cos{\calculatedcos\@@rorotation}%
+ \calculatesin\@@rorotation\edef\sin{\calculatedsin\@@rorotation}%
+ \@@layerxpos\zeropoint
+ \@@layerypos\zeropoint
+ \@@layerxoff\zeropoint
+ \@@layeryoff\zeropoint
+ \ifdim\sin\points>\zeropoint
+ \ifdim\cos\points>\zeropoint
+ \@@layerxsiz \cos\!!widtha
+ \@@layerysiz \sin\!!widtha
+ \advance\@@layerxsiz \sin\!!dimena
+ \advance\@@layerysiz \cos\!!dimena
+ \@@layerypos \cos\!!dimena
+ \if!!donea
+ \@@layerxoff \negated\sin\!!dimena
+ \advance\@@layerxoff \sin\!!deptha
+ \fi
+ \if!!doneb
+ \@@layeryoff \cos\!!deptha
+ \fi
+ \dododorotatenextbox
+ \else
+ \@@layerxsiz \negated\cos\!!widtha
+ \@@layerysiz \sin\!!widtha
+ \advance\@@layerxsiz \sin\!!dimena
+ \advance\@@layerysiz \negated\cos\!!dimena
+ \@@layerxpos \negated\cos\!!widtha
+ \if!!donea
+ \@@layerxoff -\@@layerxsiz
+ \advance\@@layerxoff \sin\!!deptha
+ \fi
+ \if!!doneb
+ \@@layeryoff \negated\cos\!!heighta
+ \fi
+ \dododorotatenextbox
+ \wd\nextbox\if!!donea\sin\!!deptha\else\@@layerxsiz\fi
+ \fi
+ \else
+ \ifdim\cos\points<\zeropoint
+ \@@layerxsiz \negated\cos\!!widtha
+ \@@layerysiz \negated\sin\!!widtha
+ \advance\@@layerxsiz \negated\sin\!!dimena
+ \advance\@@layerysiz \negated\cos\!!dimena
+ \@@layerxpos \@@layerxsiz
+ \@@layerypos \negated\sin\!!widtha
+ \if!!donea
+ \@@layerxoff -\@@layerxsiz
+ \advance\@@layerxoff \negated\sin\!!heighta
+ \fi
+ \if!!doneb
+ \@@layeryoff \@@layerysiz
+ \advance\@@layeryoff \cos\!!deptha
+ \fi
+ \dododorotatenextbox
+ \wd\nextbox\if!!donea\negated\sin\!!heighta\else\@@layerxsiz\fi
+ \else
+ \@@layerxsiz \cos\!!widtha
+ \@@layerysiz \negated\sin\!!widtha
+ \advance\@@layerxsiz \negated\sin\!!dimena
+ \advance\@@layerysiz \cos\!!dimena
+ \ifdim\sin\points=\zeropoint
+ \@@layerxpos \zeropoint
+ \@@layerxoff \zeropoint
+ \@@layerypos \@@layerysiz
+ \if!!doneb
+ \@@layeryoff \!!deptha
+ \fi
+ \else
+ \@@layerypos \@@layerysiz
+ \@@layerxpos \negated\sin\!!dimena
+ \if!!donea
+ \@@layerxoff -\@@layerxsiz
+ \advance\@@layerxoff \negated\sin\!!heighta
+ \fi
+ \if!!doneb
+ \@@layeryoff \negated\sin\!!deptha
+ \fi
+ \fi
+ \dododorotatenextbox
+ \ifdim\sin\points=\zeropoint
+ \else
+ \wd\nextbox\if!!donea\negated\sin\!!heighta\else\@@layerxsiz\fi
+ \fi
+ \fi
+ \fi
+ % new, location=middle
+ \ifnum#2=\plusfour
+ \setbox\nextbox\vbox{\vskip-.5\!!heightb\hskip.5\!!heightb\flushnextbox}%
+ \nextboxwd\!!widthb
+ \nextboxht\!!heightb
+ \nextboxdp\!!depthb
+ \fi}
+
+\def\dorotatenextbox#1#2%
+ {\doifsomething{#1}
+ {\edef\@@rorotation{\number#1}% get rid of leading zeros and spaces
+ \setbox\nextbox\vbox{\flushnextbox}% not really needed
+ \dodorotatenextbox\@@rorotation#2}%
+ \hbox{\boxcursor\flushnextbox}}
+
+\def\dodorotatebox#1% {angle} \hbox/\vbox/\vtop
+ {\bgroup\hbox\bgroup % compatibility hack
+ \dowithnextbox
+ {\dorotatenextbox{#1}\plusone
+ \egroup\egroup}}
+
+\def\dorotatebox#1% {angle} \hbox/\vbox/\vtop
+ {\ifcase#1\relax
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\dodorotatebox
+ \fi{#1}}
+
+\unexpanded\def\rotate % \bgroup: \rotate kan argument zijn
+ {\bgroup\complexorsimpleempty\rotate}
+
+\def\complexrotate[#1]% framed met diepte !
+ {\getparameters[\??ro][#1]%
+ \processaction
+ [\@@rolocation]
+ [ \v!depth=>\!!counta\plusthree\donefalse,% depth fit - raw box
+ \v!fit=>\!!counta\plustwo \donefalse,% depth tight - raw box
+ \v!broad=>\!!counta\plusone \donefalse,% nodepth fit - raw box
+ \v!high=>\!!counta\plusone \donetrue ,% nodepth fit - framed
+ \v!middle=>\!!counta\plusfour \donefalse,% centered, keep dimensions
+ \s!default=>\!!counta\plusthree\donetrue ,% depth fit - framed
+ \s!unknown=>\!!counta\plusthree\donetrue ]% depth fit - framed
+ \ifdone
+ \def\docommand{\localframed[\??ro][#1,\c!location=]}%
+ \else
+ \let\docommand\relax
+ \fi
+ \dowithnextbox{\dorotatenextbox\@@rorotation\!!counta\egroup}\vbox\docommand}
+
+\presetlocalframed[\??ro]
+
+\def\setuprotate
+ {\dodoubleargument\getparameters[\??ro]}
+
+\setuprotate
+ [\c!rotation=90,
+ \c!location=\v!normal,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!offset=\v!overlay,
+ \c!frame=\v!off]
+
+% \dostepwiserecurse{0}{360}{10}
+% {\startlinecorrection[blank]
+% \hbox
+% {\expanded{\setuprotate[rotation=\recurselevel]}%
+% \traceboxplacementtrue
+% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=depth] {\ruledhbox{\bfb (depth)}}}}%
+% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=fit] {\ruledhbox{\bfb (fit)}}}}%
+% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=broad] {\ruledhbox{\bfb (broad)}}}}%
+% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=normal]{\ruledhbox{\bfb (normal)}}}}%
+% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=high] {\ruledhbox{\bfb (high)}}}}}
+% \stoplinecorrection}
+
+% scale
+
+\def\doscalelikeafigure % quite dirty and potential interference possible
+ {\doifsomething{\@@xyfactor\@@xyhfactor\@@xywfactor\@@xyscale
+ \@@xywidth\@@xyheight\@@xylines}
+ {\let \@@efscale \@@xyscale
+ \let \@@effactor \@@xyfactor
+ \let \@@efwfactor\@@xywfactor
+ \let \@@efhfactor\@@xyhfactor
+ \let \@@efwidth\@@xywidth
+ \let \@@efheight \@@xyheight
+ \let \@@eflines \@@xylines
+ \let \@@efgrid \@@xygrid
+ \let \@@epx \!!zeropoint
+ \let \@@epy \!!zeropoint
+ \edef\@@epw {\the\nextboxwd}%
+ \edef\@@eph {\the\nextboxht}%
+ \figwid\zeropoint \figxsca\plusone % see note * (core-fig)
+ \fighei\zeropoint \figysca\plusone % see note * (core-fig)
+ \checkfiguresettings
+ \setfactorfiguresize
+ \setscalefiguresize
+ \setdimensionfiguresize
+ \convertfigureinsertscale\@@epx\figx\figxsca\scax
+ \convertfigureinsertscale\@@epy\figy\figysca\scay
+ \scratchdimen\scax\points \divide\scratchdimen \plushundred
+ \edef\@@xysx{\withoutpt\the\scratchdimen}%
+ \scratchdimen\scay\points \divide\scratchdimen \plushundred
+ \edef\@@xysy{\withoutpt\the\scratchdimen}}}
+
+\def\doscale[#1]%
+ {\bgroup
+ \forgetall
+ \getparameters
+ [\??xy]
+ [\c!scale=,\c!width=,\c!height=,\c!lines=,
+ \c!factor=,\c!hfactor=,\c!wfactor=,\c!grid=,
+ \c!sx=1,\c!sy=1,#1]%
+ \dowithnextbox
+ {\dontshowcomposition
+ \ifdim\nextboxht>\zeropoint \ifdim\nextboxwd>\zeropoint
+ \doscalelikeafigure
+ \dimen0=\@@xysy\nextboxht
+ \dimen2=\@@xysy\nextboxdp
+ \dimen4=\@@xysx\nextboxwd
+ \dimen6=\dimen0\advance\dimen6 \dimen2
+% \setbox\nextbox\vbox to \dimen6
+% {\nextboxht\zeropoint
+% \nextboxdp\zeropoint
+% \vfill % erbij
+% \dostartscaling\@@xysx\@@xysy\flushnextbox\dostopscaling}%
+ \setbox\nextbox\hbox
+ {\smashbox\nextbox
+ \dostartscaling\@@xysx\@@xysy\flushnextbox\dostopscaling}%
+ \nextboxht\dimen0
+ \nextboxdp\dimen2
+ \nextboxwd\dimen4
+ \fi \fi
+ \flushnextbox
+ \egroup}
+ \hbox}
+
+\def\scale
+ {\dosingleempty\doscale}
+
+% mirror
+
+\def\domirrorbox % \hbox/\vbox/\vtop
+ {\bgroup
+ \dowithnextbox
+ {\dontshowcomposition
+ \scratchdimen\nextboxwd
+ % better use an hbox (if no \forgetall, leftskip etc may creep in)
+ %\setbox\nextbox\vbox{\forgetall\dostartmirroring\hskip-\nextboxwd\flushnextbox\dostopmirroring}%
+ \setbox\nextbox\hbox{\dostartmirroring\hskip-\nextboxwd\flushnextbox\dostopmirroring}%
+ \nextboxwd\scratchdimen
+ \flushnextbox
+ \egroup}}
+
+\def\mirror
+ {\domirrorbox\hbox}
+
+%\setbox0=\hbox{gans}
+%
+%\ruledhbox{\copy0 \schaal[sx=2,sy=2]{\copy0}}
+%
+%\spiegel{\ruledhbox{\copy0 \schaal{\box0}}}
+
+% to be used in some other places! todo!
+%
+% divides \hsize in fractions, will be made a bit more
+% clever and advanced when needed
+%
+% \horizontaldivision[n/m,elements,distance]
+%
+% \horizontaldivision[2/5,3,1em]
+% \horizontaldivision[2/5,3,1em]
+% \horizontaldivision[1/5,3,1em]
+%
+% \setuphorizontaldivision[afstand=,aantal=] (passend,passend)
+
+\def\??fr{@@fr}
+
+\def\setuphorizontaldivision
+ {\dodoubleargument\getparameters[\??fr]}
+
+\def\horizontaldivision
+ {\dosingleargument\dohorizontaldivision}
+
+\def\dohorizontaldivision[#1]%
+ {\dodohorizontaldivision[#1,,,,,,]}
+
+\def\dodohorizontaldivision[#1/#2,#3,#4,#5]%
+ {\doifelsenothing{#3}
+ {\doifelse\@@frn\v!fit
+ {\!!counta#2\relax}
+ {\!!counta\@@frn\relax}}
+ {\!!counta#3\relax}%
+ \doifelsenothing{#4}
+ {\doifelse\@@frdistance\v!fit
+ {\!!widtha\zeropoint}
+ {\!!widtha\@@frdistance}}
+ {\!!widtha#4}%
+ \advance\!!counta \minusone
+ \multiply\!!widtha \!!counta
+ \advance\hsize -\!!widtha
+ \divide\hsize #2\relax
+ \hsize#1\hsize}
+
+\setuphorizontaldivision
+ [\c!distance=\tfskipsize,
+ \c!n=\v!fit]
+
+%D This one is for Daniel Pittman, who wanted tight
+%D fractions. We show three versions. First the simple
+%D one using \type {\low} and \type {high}:
+%D
+%D \startbuffer
+%D \def\vfrac#1#2%
+%D {\hbox{\high{\tx#1\kern-.25em}/\low{\kern-.25em\tx#2}}}
+%D
+%D test \vfrac{1}{2} test \vfrac{123}{456} test
+%D \stopbuffer
+%D
+%D \typebuffer {\showmakeup\getbuffer}
+%D
+%D A better way to handle the kerning is the following, here
+%D we kind of assume that tye slash is symmetrical and has
+%D nearly zero width.
+%D
+%D \startbuffer
+%D \def\vfract#1#2%
+%D {\hbox{\high{\tx#1}\hbox to \zeropoint{\hss/\hss}\low{\tx#2}}}
+%D \stopbuffer
+%D
+%D \typebuffer {\showmakeup\getbuffer}
+%D
+%D The third and best alternative is the following:
+%D
+%D {\showmakeup\getbuffer}\crlf\getbuffer
+%D
+%D This time we measure the height of the \type {/} and
+%D shift over the maximum height and depths of this
+%D character and the fractional digits (we use 57 as
+%D sample). Here we combine all methods in one macros.
+
+\chardef\vulgarfractionmethod=3
+
+\definehspace[vulgarfraction][.25em] % [.15em]
+\definesymbol[vulgarfraction][/] % [\raise.2ex\hbox{/}]
+
+\unexpanded\def\vulgarfraction#1#2%
+ {\dontleavehmode
+ \hbox
+ {\def\vulgarfraction{vulgarfraction}%
+ \ifcase\vulgarfractionmethod
+ #1\symbol[\vulgarfraction]#2%
+ \or
+ \high{\tx#1\kern-\hspaceamount\empty\vulgarfraction}%
+ \symbol[\vulgarfraction]%
+ \low {\kern-\hspaceamount\empty\vulgarfraction\tx#2}%
+ \or
+ \high{\tx#1}%
+ \hbox to \zeropoint{\hss\symbol[\vulgarfraction]\hss}%
+ \low{\tx#2}%
+ \or
+ \setbox0\hbox{\symbol[\vulgarfraction]}%
+ \setbox2\hbox{\txx57}%
+ \raise\ht0\hbox{\lower\ht2\hbox{\txx#1}}%
+ \hbox to \zeropoint{\hss\symbol[\vulgarfraction]\hss}%
+ \lower\dp0\hbox{\raise\dp2\hbox{\txx#2}}%
+ \fi}}
+
+\ifx\vfrac\undefined \let\vfrac\vulgarfraction \fi
+
+%D \starttabulate
+%D \HL
+%D \NC \bf method \NC \bf visualization \NC\NR
+%D \HL
+%D \NC 0 \NC \chardef\vulgarfractionmethod0\vulgarfraction{1}{2} \NC\NR
+%D \NC 1 \NC \chardef\vulgarfractionmethod1\vulgarfraction{1}{2} \NC\NR
+%D \NC 2 \NC \chardef\vulgarfractionmethod2\vulgarfraction{1}{2} \NC\NR
+%D \NC 3 \NC \chardef\vulgarfractionmethod3\vulgarfraction{1}{2} \NC\NR
+%D \HL
+%D \stoptabulate
+
+%D Under construction:
+%D
+%D \starttyping
+%D \commalistsentence[aap,noot,mies]
+%D \commalistsentence[aap,noot]
+%D \commalistsentence[aap]
+%D \stoptyping
+
+\let\handlecommalistsentence\firstofoneargument
+
+\def\commalistsentence[#1]%
+ {\bgroup
+ \getcommalistsize[#1]%
+ \ifcase\commalistsize\relax
+ \def\serializedcommalist{#1}%
+ \else
+ \let\serializedcommalist\empty
+ \scratchcounter\zerocount
+ \def\docommando##1%
+ {\advance\scratchcounter \plusone
+ \ifnum\scratchcounter=\plusone
+ \scratchtoks{\handlecommalistsentence{##1}}%
+ \else
+ \ifnum\scratchcounter=\commalistsize
+ \appendtoks\labeltext{and-2}\handlecommalistsentence{##1}\to\scratchtoks
+ \else
+ \appendtoks\labeltext{and-1}\handlecommalistsentence{##1}\to\scratchtoks
+ \fi
+ \fi}%
+ \processcommacommand[#1]\docommando
+ \edef\serializedcommalist{\the\scratchtoks}%
+ \fi
+ \serializedcommalist
+ \egroup}
+
+\ifx\textcomma\undefined \def\textcomma{,} \fi
+
+\setuplabeltext [\s!nl] [and-1=\textcomma\ , and-2= en ]
+\setuplabeltext [\s!en] [and-1=\textcomma\ , and-2=\textcomma\ and ]
+\setuplabeltext [\s!de] [and-1=\textcomma\ , and-2= und ]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-nav.tex b/Master/texmf-dist/tex/context/base/core-nav.tex
new file mode 100644
index 00000000000..2f06b70a2e2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-nav.tex
@@ -0,0 +1,368 @@
+%D \module
+%D [ file=core-nav,
+%D version=1998.01.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Navigation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Navigation}
+
+\unprotect
+
+%D Support for interactive document is very present in
+%D \CONTEXT\ and interwoven in many modules. This means that in
+%D this module, where we deal with some common navigational
+%D features, there will be quite some forward references.
+%D
+%D When I started implementing hypertext support, the macros
+%D were mostly dealing with things related to locations, that
+%D is click in this location and goto that one. The
+%D functionality of many macro depends on the output medium:
+%D paper or screen. The next boolean holds the state:
+
+\newif\iflocation \def\ifinteractief{\iflocation} % upw comp
+
+%D We also allocate a scratchbox:
+
+\newbox\locationbox
+
+%D There is no interaction at all unless enabled by saying:
+%D
+%D \starttyping
+%D \setupinteraction[state=start]
+%D \stoptyping
+%D
+%D The other settings are:
+%D
+%D \showsetup{setupinteraction}
+%D
+%D In the special driver modules we introduced a switch that
+%D forces page destinations (instead of named ones). We set
+%D this switch here.
+
+\def\setinteractionparameter#1#2% use with case, no checking done
+ {\setvalue{\??ia#1}{#2}} % pass #2, can be \blabla
+
+\def\resetinteractionparameter#1% use with case, no checking done
+ {\letvalue{\??ia#1}\empty}
+
+\def\setupinteraction
+ {\dosingleargument\dodosetupinteraction}
+
+\def\dodosetupinteraction[#1]% % \dosetupinteraction == special
+ {\getparameters[\??ia][#1]%
+ \doifelse\@@iastate\v!start
+ {\iflocation\else
+ \showmessage\m!interactions2{\ifusepagedestinations\space(PAGE)\fi}%
+ \global\locationtrue
+ \fi}
+ {\iflocation
+ \showmessage\m!interactions3{\ifusepagedestinations\space(PAGE)\fi}%
+ \global\locationfalse
+ \fi}%
+ \iflocation
+ \setsystemmode \v!interaction
+ \else
+ \resetsystemmode\v!interaction
+ \fi
+ \dosetuppageview\@@iafocus
+ \doifsomething\@@iacalculate
+ {\doregistercalculationset\@@iacalculate}%
+ \doifelse\@@iastrut\v!yes
+ \locationstruttrue
+ \locationstrutfalse
+ \doifelse\@@iaclick\v!yes
+ \highlighthyperlinkstrue
+ \highlighthyperlinksfalse
+ \doifelse\@@iasplit\v!yes
+ \locationsplittrue
+ \locationsplitfalse
+ \doifelse\@@iadisplay\v!new
+ \gotonewwindowtrue
+ \gotonewwindowfalse
+ \doifelse\@@iapage\v!yes
+ {\global\usepagedestinationstrue}
+ {\global\usepagedestinationsfalse}}
+
+%D We have to make sure of some settings:
+
+\def\dolocationstartup
+ {\iflocation
+ \dosetupinteraction
+ \handlereferenceactions\@@iaopenaction \dosetupopenaction
+ \handlereferenceactions\@@iacloseaction\dosetupcloseaction
+ \setupinteractionscreens
+ \global\let\dolocationstartup\relax
+ \fi}
+
+\appendtoks \dolocationstartup \to \everyshipout
+
+\def\dolocationpagecheck % brr pdf dependent
+ {\iflocation
+ \handlereferenceactions\@@iaopenpageaction \dosetupopenpageaction
+ \handlereferenceactions\@@iaclosepageaction\dosetupclosepageaction
+ \fi}
+
+\appendtoks \dolocationpagecheck \to \everyshipout
+
+%D The next few macros are really horrible. For proper
+%D navigation a in||line hypertext fragment must have
+%D comfortable properties, so we must force some minimal
+%D dimensions. On the other hand button, and here I mean those
+%D pieces of text with fancy outlines and/or backgrounds, often
+%D have fixed, preset dimensions.
+%D
+%D To make things even worse, if we choose to let the optimal
+%D dimensions depend on the height and depth of a strut, a not
+%D too uncommon practice in \TEX, we have to deal with the fact
+%D that such a strut, set inside a box, is unknown too the
+%D outside world.
+%D
+%D The solution lays in passing the strut characteristics in
+%D a proper way, in our case by applying \type{\presetgoto}:
+%D
+%D \starttyping
+%D {some piece of text \presetgoto}
+%D \stoptyping
+%D
+%D This macro stores the current strut values.
+
+\newif\iflocationstrut
+\newif\iflocationsplit
+
+\def\resetgoto
+ {\globallet\@@ia@@hoogte\!!zeropoint
+ \globallet\@@ia@@diepte\!!zeropoint}
+
+\resetgoto
+
+\def\presetgoto
+ {\iflocationstrut
+ \setstrut
+ %\xdef\@@ia@@hoogte{\the\strutht}%
+ %\xdef\@@ia@@diepte{\the\strutdp}%
+ \globallet\@@ia@@hoogte\strutheight
+ \globallet\@@ia@@diepte\strutdepth
+ \else
+ \globallet\@@ia@@hoogte\@@iaheight
+ \globallet\@@ia@@diepte\@@iadepth
+ \fi}
+
+%D In the macros that deal with making areas into hyperlinks,
+%D we use:
+
+\newbox\driverresources
+
+\def\collectdriverresource#1%
+ {\global\setbox\driverresources\hbox{\box\driverresources#1}}
+
+\def\flushdriverresources
+ {\ifvoid\driverresources\else\box\driverresources\fi}
+
+\def\dostartgoto\data#1\start#2\stop#3\dostopgoto
+ {\ifsecondaryreference
+ \bgroup\setbox0\hbox{#2#3}\egroup
+ \else
+ \hbox
+ {\setbox0\hbox{#1}%
+ \ifdim\wd0<\@@iawidth\relax
+ \buttonwidth\@@iawidth\relax
+ \else
+ \buttonwidth\wd0
+ \fi
+ \ifdim\ht0<\@@ia@@hoogte\relax
+ \buttonheight\@@ia@@hoogte\relax
+ \else
+ \buttonheight\ht0
+ \fi
+ \ifdim\dp0<\@@ia@@diepte\relax
+ \dimen0=\@@ia@@diepte\relax % = !
+ \else
+ \dimen0\dp0
+ \fi
+ \advance\buttonheight \dimen0
+ \setbox2\hbox
+ {\lower\dimen0\hbox
+ {\dontcomplain
+ \dimen0=.5\wd0 % direct skipping is faster of course
+ \advance\dimen0 -.5\buttonwidth % buts this is nicer
+ \hskip\dimen0#2#3}}% when visualizing things
+ \naturalhbox % needed for omega / moved from plus-omg
+ {\ifreversegoto
+ \dimen0\wd0\box0\kern-\dimen0\smashbox2\box2\kern\dimen0
+ \else
+ \smashbox2\box2\box0
+ \fi
+ \flushdriverresources}%
+ \resetgoto}%
+ \fi}
+
+%D The secondary references are processed but not typeset. The
+%D special driver must collect the data needed.
+
+%D The width of the active area depends on the dimensions
+%D preset, the actual dimens and/or the height and depth of the
+%D strut.
+%D
+%D Normally the hyper active area is laid on top of the text.
+%D This enables stacking hyperlinks on top of each other. When,
+%D for some reason the opposite is prefered, one can use the
+%D next boolean to signal this wish.
+
+\newif\ifreversegoto \reversegotofalse
+
+%D As long as there a natural feeling of what can be considered
+%D hyper active or not, we have to tell users where they can
+%D possibly click. We've already seen a few macros that deal
+%D with this visualization, something we definitely do not let
+%D up to the viewer. One way of telling is using a distinctive
+%D typeface, another way is using color.
+%D
+%D There are two colors involved: one for normal hyperlinks,
+%D and one for those that point to the currentpage, the
+%D contrast color.
+
+\definecolor [interactioncolor] [r=0, g=.6, b=0]
+\definecolor [interactioncontrastcolor] [r=.8, g=0, b=0]
+
+\definecolor [interactiekleur] [interactioncolor]
+\definecolor [interactiecontrastkleur] [interactioncontrastcolor]
+
+%D The next few macros are responsible for highlighting hyper
+%D links. The first one, \type{\showlocation}, is used in those
+%D situations where the typeface is handled by the calling
+%D macro.
+
+\def\interactioncolor
+ {\iflocation
+ \ifrealreferencepage
+ \@@iacontrastcolor
+ \else
+ \@@iacolor
+ \fi
+ \fi}
+
+%D CHECK WHERE USED / CONSISTENCY
+
+\def\showlocation#1%
+ {\iflocation\color[\@@iacolor]{#1\presetgoto}\else#1\fi}
+
+%D When local color settings are to be used, we can use the
+%D next macro, where \type{#1} is a tag like \type{\??tg} and
+%D \type{#2} some text.
+
+\def\showcoloredlocation#1#2%
+ {\iflocation
+ \color[\getvalue{#1\c!color}]{#2\presetgoto}%
+ \else
+ #2%
+ \fi}
+
+%D When we're dealing with pure page references, contrast
+%D colors are used when we are already at the page mentioned.
+
+\def\showcontrastlocation#1#2#3% the \@EA is needed
+ {\iflocation
+ \ifnum#2=\realpageno\relax
+ \doifelsevaluenothing{#1\c!color}
+ {#3\presetgoto}
+ {\color[\getvalue{#1\c!contrastcolor}]{#3\presetgoto}}%
+ \else
+ \color[\getvalue{#1\c!color}]{#3\presetgoto}%
+ \fi
+ \else
+ #3%
+ \fi}
+
+%D The next simple macro can be used in color specifications,
+%D like \type{\color[\locationcolor{green}]}.
+
+\def\locationcolor#1%
+ {\iflocation#1\fi}
+
+%D More tokens are spend when we want both typeface and color
+%D highlighting.
+
+\def\dolocationattributes#1#2#3#4%
+ {\bgroup
+ \let\fontattribute\empty
+ \let\colorattribute\empty
+ \doifdefined{#1#2}{\def\fontattribute{\getvalue{#1#2}}}%
+ \iflocation
+ \doifdefined{#1#3}{\def\colorattribute{\getvalue{#1#3}}}%
+ \fi
+ \startcolor[\colorattribute]%
+ \@EA\doconvertfont\@EA{\fontattribute}{#4}% no \edef, but \@EA here
+ \stopcolor
+ \egroup}
+
+\def\navigating
+ {\dolocationattributes\??ia\c!style\c!color}
+
+%D Although not decently supported in current viewers, a
+%D provisory hiding mechanims is implemented. Areas marked as
+%D such, are visible on screen, but invisible on paper. Don't
+%D trust this mechanism yet!
+
+\def\dostartinteraction
+ {\bgroup
+ \let\stopinteraction\egroup
+ \dowithnextbox{\dostarthide\flushnextbox\dostophide\egroup}\hbox}
+
+\let\startinteraction = \relax
+\let\stopinteraction = \relax
+
+% in the future:
+%
+% eerst boolean invoeren bij menu, achtergrond, balk, button
+% enz; verder startinteractie een argument meegeven {#1} ->
+% \getvalue{#1\c!print}=={\v!ja} enz. Consequent menubutton
+% gebruiken!
+
+\def\@@iatimestamp
+ {\the\normalyear
+ \ifnum\normalmonth<10 0\fi\the\normalmonth
+ \ifnum\normalday <10 0\fi\the\normalday}
+
+% happens in core-fld
+%
+% \definereference [AtOpenInitializeForm] [\v!geen]
+
+\setupinteraction % start fit page and reset form
+ [\c!state=\v!stop,
+ \c!page=\v!no,
+ \c!click=\v!yes,
+ \c!display=,
+ %\c!openaction={\v!firstpage,AtOpenInitializeForm},
+ %\c!openaction={\v!firstpage,\v!ResetForm},
+ %\c!openaction=\v!ResetForm, % too buggy in reader 4.05
+ \c!openaction=,
+ \c!closeaction=,
+ \c!openpageaction=,
+ \c!closepageaction=,
+ \c!display=\v!normal,
+ \c!focus=\v!fit,
+ \c!menu=\v!off,
+ \c!style=\v!bold,
+ \c!calculate=,
+ \c!strut=\v!yes,
+ \c!split=\v!yes,
+ \c!color=interactioncolor,
+ \c!contrastcolor=interactioncontrastcolor,
+ \c!symbolset=,
+ \c!width=1em,
+ \c!height=\!!zeropoint,
+ \c!depth=\!!zeropoint,
+ \c!title=\jobname, % needed for fdf/x
+ \c!subtitle=,
+ \c!author=,
+ \c!keyword=,
+ \c!date=\@@iatimestamp]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-new.tex b/Master/texmf-dist/tex/context/base/core-new.tex
new file mode 100644
index 00000000000..71be6466ae1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-new.tex
@@ -0,0 +1,601 @@
+%D \module
+%D [ file=core-nav,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=New ones,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / New Ones}
+
+\unprotect
+
+% Some kind of new feature, for the moment a private one.
+%
+% \enablemode[screen,paper,bound]
+%
+% \doifmodeelse {paper} {this} {that}
+% \doifmode {paper,screen} {this}
+% \doifnotmode {paper,bound} {that}
+%
+% \startmode [list]
+% \stopmode
+%
+% \startnotmode [list]
+% \stopnotmode
+%
+% system modes have a * as prefix
+%
+% to be implemented: mode naar texutil/scherm + message
+% : geen #2 en nesting (\startregels)
+
+%D Sometimes, we want to prevent a mode for being set. Think
+%D of situations where a style enables a mode, but an outer
+%D level style does not want that. Preventing can be
+%D considered a permanent disabling on forehand.
+
+% \def\systemmodeprefix{*}
+%
+% \let\currentmode \empty
+% \let\preventedmodes\empty
+%
+% \def\preventmode[#1]%
+% {\expanded{\addtocommalist{#1}\noexpand\preventedmodes}}
+%
+% \def\enablemode[#1]%
+% {\expanded
+% {\doifnotinset{#1}{\preventedmodes}
+% {\noexpand\addtocommalist{#1}\noexpand\currentmode}}}
+%
+% \def\disablemode[#1]%
+% {\expanded{\removefromcommalist{#1}\noexpand\currentmode}}
+%
+% \def\doifmodeelse{\unprotect\dodoifmodeelse}
+% \def\doifmode {\unprotect\dodoifmode }
+% \def\doifnotmode {\unprotect\dodoifnotmode }
+% \def\startmode {\unprotect\dostartmode }
+% \def\startnotmode{\unprotect\dostartnotmode}
+%
+% \long\def\dodoifmodeelse#1%
+% {\protect\expanded{\doifcommonelse{#1}{\currentmode}}}
+%
+% \long\def\dodoifmode#1%
+% {\protect\expanded{\doifcommon {#1}{\currentmode}}}
+%
+% \long\def\dodoifnotmode#1%
+% {\protect\expanded{\doifnotcommon {#1}{\currentmode}}}
+%
+% \let\stopmode \relax
+% \let\stopnotmode\relax
+%
+% \long\def\dostartmode[#1]%
+% {\protect
+% \expanded{\doifnotcommon{#1}{\currentmode}}{\gobbleuntil\stopmode}}
+%
+% \long\def\dostartnotmode[#1]%
+% {\protect
+% \expanded{\doifcommon {#1}{\currentmode}}{\gobbleuntil\stopnotmode}}
+%
+% \def\doifallmodeselse{\unprotect\dodoifallmodeselse}
+% \def\doifallmodes {\unprotect\dodoifallmodes}
+% \def\doifnotallmodes {\unprotect\dodoifnotallmodes}
+% \def\startallmodes {\unprotect\dostartallmodes}
+% \def\startnotallmodes{\unprotect\dostartnotallmodes}
+%
+% \long\def\dodoifallmodeselse#1%
+% {\protect\expanded{\doifallcommonelse{#1}{\currentmode}}}
+%
+% \long\def\dodoifallmodes#1%
+% {\protect\expanded{\doifallcommon {#1}{\currentmode}}}
+%
+% \long\def\dodoifnotallmodes#1%
+% {\protect\expanded{\doifnotallcommon {#1}{\currentmode}}}
+%
+% \let\stopallmodes \relax
+% \let\stopnotallmodes\relax
+%
+% \long\def\dostartallmodes[#1]%
+% {\protect
+% \expanded{\doifnotallcommon{#1}{\currentmode}}{\gobbleuntil\stopallmodes}}
+%
+% \long\def\dostartnotallmodes[#1]%
+% {\protect
+% \expanded{\doifallcommon {#1}{\currentmode}}{\gobbleuntil\stopnotallmodes}}
+
+% faster
+
+\def\@mode@{@md@}
+
+\def\systemmodeprefix{*}
+
+\def\disabledmode {0}
+\def\enabledmode {1}
+\def\preventedmode {2}
+
+% fast internal ones
+
+\def\setmode #1{\@EA\let\csname\@mode@#1\endcsname\enabledmode }
+\def\resetmode#1{\@EA\let\csname\@mode@#1\endcsname\disabledmode}
+
+\def\setsystemmode #1{\@EA\let\csname\@mode@\systemmodeprefix#1\endcsname\enabledmode }
+\def\resetsystemmode#1{\@EA\let\csname\@mode@\systemmodeprefix#1\endcsname\disabledmode}
+
+% user ones
+
+\def\preventmode{\unprotect\dopreventmode}
+\def\enablemode {\unprotect\doenablemode }
+\def\disablemode{\unprotect\dodisablemode}
+
+% \def\dopreventmode[#1]{\protect\rawprocesscommalist[#1]\dodopreventmode}
+% \def\doenablemode [#1]{\protect\rawprocesscommalist[#1]\dodoenablemode }
+% \def\dodisablemode[#1]{\protect\rawprocesscommalist[#1]\dododisablemode}
+%
+% better:
+
+\def\dopreventmode[#1]{\protect\cleanuplabel{#1}\rawprocesscommalist[\cleanlabel]\dodopreventmode}
+\def\doenablemode [#1]{\protect\cleanuplabel{#1}\rawprocesscommalist[\cleanlabel]\dodoenablemode }
+\def\dodisablemode[#1]{\protect\cleanuplabel{#1}\rawprocesscommalist[\cleanlabel]\dododisablemode}
+
+\def\dodopreventmode#1%
+ {\@EA\let\csname\@mode@#1\endcsname\preventedmode}
+
+\def\dodoenablemode#1%
+ {\ifcase0\csname\@mode@#1\endcsname\relax
+ \@EA\let\csname\@mode@#1\endcsname\enabledmode
+ \fi}
+
+\def\dododisablemode#1%
+ {\ifcase0\csname\@mode@#1\endcsname\or
+ \@EA\let\csname\@mode@#1\endcsname\disabledmode
+ \fi}
+
+% check macros
+
+\newif\ifcheckedmode
+
+\def\dodocheckformode#1%
+ {\ifcase0\csname\@mode@#1\endcsname\or\checkedmodetrue\fi}
+
+% \def\docheckformode#1#2#3% will be sped up with a quit
+% {\protect\checkedmodefalse\rawprocesscommalist[#3]\dodocheckformode
+% \ifcheckedmode\@EA#1\else\@EA#2\fi}
+%
+% better:
+
+\def\docheckformode#1#2#3% will be sped up with a quit
+ {\cleanuplabel{#3}%
+ \protect\checkedmodefalse\rawprocesscommacommand[\cleanlabel]\dodocheckformode
+ \ifcheckedmode\@EA#1\else\@EA#2\fi}
+
+\def\dodocheckforallmodes#1%
+ {\ifcase0\csname\@mode@#1\endcsname\relax
+ \checkedmodefalse\or\or\checkedmodefalse\fi}
+
+% \def\docheckforallmodes#1#2#3% will be sped up with a quit
+% {\protect\checkedmodetrue\rawprocesscommalist[#3]\dodocheckforallmodes
+% \ifcheckedmode\@EA#1\else\@EA#2\fi}
+%
+% better:
+
+\def\docheckforallmodes#1#2#3% will be sped up with a quit
+ {\cleanuplabel{#3}%
+ \protect\checkedmodetrue\rawprocesscommacommand[\cleanlabel]\dodocheckforallmodes
+ \ifcheckedmode\@EA#1\else\@EA#2\fi}
+
+% simple ones
+
+\def\doifmodeelse{\unprotect\dodoifmodeelse}
+\def\doifmode {\unprotect\dodoifmode}
+\def\doifnotmode {\unprotect\dodoifnotmode}
+\def\startmode {\unprotect\dostartmode}
+\def\startnotmode{\unprotect\dostartnotmode}
+
+\def\dodoifmodeelse
+ {\docheckformode\firstoftwoarguments\secondoftwoarguments}
+
+\def\dodoifmode
+ {\docheckformode\firstofoneargument\gobbleoneargument}
+
+\def\dodoifnotmode
+ {\docheckformode\gobbleoneargument\firstofoneargument}
+
+\long\def\dostartmode[#1]%
+ {\docheckformode\donothing\dostopmode{#1}}
+
+\long\def\dostartnotmode[#1]%
+ {\docheckformode\dostopnotmode\donothing{#1}}
+
+\let\stopmode \donothing
+\let\stopnotmode\donothing
+
+\long\def\dostopmode #1\stopmode {}
+\long\def\dostopnotmode#1\stopnotmode{}
+
+\def\doifallmodeselse{\unprotect\dodoifallmodeselse}
+\def\doifallmodes {\unprotect\dodoifallmodes}
+\def\doifnotallmodes {\unprotect\dodoifnotallmodes}
+\def\startallmodes {\unprotect\dostartallmodes}
+\def\startnotallmodes{\unprotect\dostartnotallmodes}
+
+\def\doifallmodeselse
+ {\docheckforallmodes\firstoftwoarguments\secondoftwoarguments}
+
+\def\doifallmodes
+ {\docheckforallmodes\firstofoneargument\gobbleoneargument}
+
+\def\doifnotallmodes
+ {\docheckforallmodes\gobbleoneargument\firstofoneargument}
+
+\long\def\dostartallmodes[#1]%
+ {\docheckforallmodes\donothing\dostopallmodes{#1}}
+
+\long\def\dostartnotallmodes[#1]%
+ {\docheckforallmodes\dostopallmodes\donothing{#1}}
+
+\let\stopallmodes \donothing
+\let\stopnotallmodes\donothing
+
+\long\def\dostopallmodes #1\stopallmodes {}
+\long\def\dostopnotallmodes#1\stopnotallmodes{}
+
+% \def\setups
+% {\dosingleargument\dosetups}
+%
+% \def\dosetups[#1]%
+% {\iffirstargument
+% \def\next{\dodosetups{#1}}%
+% \else
+% \let\next\dodosetups
+% \fi
+% \next}
+%
+% \def\dodosetups#1%
+% {\processcommalist[#1]\dododosetups}
+%
+% \def\dododosetups#1%
+% {\getvalue{\??su#1}}
+%
+% \def\doifsetupselse#1%
+% {\doifdefinedelse{\??su#1}}
+%
+% \long\@EA\def\csname\e!start\v!instellingen\endcsname#1 %
+% {\bgroup
+% \catcode`\^^M=\@@ignore
+% \xdostartsetups{#1}}
+%
+% \expanded
+% {\long\noexpand\def\noexpand\xdostartsetups##1##2\csname\e!stop\v!instellingen\endcsname
+% {\egroup
+% \long\noexpand\setvalue{\??su##1}{##2}}}
+%
+% \def\startsetups % for international purposes
+% {\bgroup\doifnextcharelse[{\startsetupsA\stopsetups}{\startsetupsB\stopsetups}}
+%
+% \def\startlocalsetups % for nested purposes
+% {\bgroup\doifnextcharelse[{\startsetupsA\stoplocalsetups}{\startsetupsB\stoplocalsetups}}
+%
+% \def\startsetupsA#1[#2]%
+% {\catcode`\^^M=\@@ignore
+% \dostartsetups#1{#2}}
+%
+% \def\startsetupsB#1#2 % space delimited
+% {\startsetupsA#1[#2]}%
+%
+% \long\def\dostartsetups#1#2% watch out: not \grabuntil
+% {\dograbuntil#1{\egroup\long\setvalue{\??su#2}}}
+
+% todo : \startsetups[name][XML] \setups[name][XML]
+
+% todo: \doglobal
+
+\expanded
+ {\long\def\@EA\noexpand\csname\e!start\v!setups\endcsname
+ {\bgroup\noexpand\doifnextcharelse[%
+ {\noexpand\startsetupsA\@EA\noexpand\csname\e!stop\v!setups\endcsname}
+ {\noexpand\startsetupsB\@EA\noexpand\csname\e!stop\v!setups\endcsname}}}
+
+\letvalue{\e!stop\v!setups}\relax
+
+\unexpanded \def\setups{\doifnextcharelse\bgroup\dosetupsA\dosetupsB} % {..} or [..]
+\unexpanded \def\setup {\doifnextcharelse\bgroup\dosetups \dosetupsC} % {..} or [..]
+
+% \def\dosetupsA #1{\processcommacommand[#1]\dosetups} % {..}
+% \def\dosetupsB[#1]{\processcommacommand[#1]\dosetups} % [..]
+% \def\dosetupsC[#1]{\dosetups{#1}} % [..]
+%
+% better:
+
+\def\dosetupsA #1{\cleanuplabel{#1}\processcommacommand[\cleanlabel]\dosetups} % {..}
+\def\dosetupsB[#1]{\cleanuplabel{#1}\processcommacommand[\cleanlabel]\dosetups} % [..]
+\def\dosetupsC[#1]{\cleanuplabel{#1}\dosetups\cleanlabel} % [..]
+
+\def\dosetups#1% the grid option will be extended to other main modes
+ {\executeifdefined{\??su\ifgridsnapping\v!grid\fi:#1}{\csname\??su:#1\endcsname}\empty}
+
+\let\directsetup\dosetups
+
+\def\doifsetupselse#1% to be done: grid
+ {\doifdefinedelse{\??su:#1}}
+
+\chardef\setupseolmode\plusone
+
+\def\startsetups {\xxstartsetups\plusone \stopsetups } \let\stopsetups \relax
+\def\startlocalsetups{\xxstartsetups\plusone \stoplocalsetups} \let\stoplocalsetups\relax
+\def\startrawsetups {\xxstartsetups\zerocount\stoprawsetups } \let\stoprawsetups \relax
+
+\def\xxstartsetups#1#2%
+ {\bgroup\chardef\setupseolmode#1\doifnextcharelse[{\startsetupsA#2}{\startsetupsB#2}}
+
+\def\startsetupsA#1% [ ] delimited
+ {\ifcase\setupseolmode\or\catcode`\^^M\@@ignore\fi
+ \dotripleempty\dostartsetups[#1]}
+
+\def\startsetupsB#1#2 % space delimited
+ {\ifcase\setupseolmode\or\catcode`\^^M\@@ignore\fi
+ \dodostartsetups#1\empty{#2}}
+
+\def\startsetupsC[#1][#2][#3]{\dodostartsetups#1{#2}{#3}} % [..] [..]
+\def\startsetupsD[#1][#2][#3]{\dodostartsetups#1\empty{#2}} % [..]
+
+\def\dostartsetups
+ {\ifthirdargument\@EA\startsetupsC\else\@EA\startsetupsD\fi}
+
+% \long\def\dodostartsetups#1#2#3% watch out: not \grabuntil
+% {\dograbuntil#1{\egroup\dodoglobal\long\setvalue{\??su#2:#3}}} % \doglobal
+%
+% better:
+
+\long\def\dodostartsetups#1#2#3% watch out: not \grabuntil
+ {\cleanuplabel{\??su#2:#3}\dograbuntil#1{\egroup\dodoglobal\long\setvalue\cleanlabel}} % \doglobal
+
+\def\systemsetupsprefix{*}
+
+\def\systemsetups#1{\dosetups{\systemsetupsprefix#1}}
+
+\def\resetsetups[#1]% see x-fo for usage
+ {\ifundefined{\??su\ifgridsnapping\v!grid\fi:#1}%
+ \dodoglobal\letbeundefined{\??su:#1}%
+ \else
+ \dodoglobal\letbeundefined{\??su\ifgridsnapping\v!grid\fi:#1}%
+ \fi}
+
+% or
+%
+% \def\resetsetups[#1]%
+% {\letbeundefined
+% {\??su:%
+% \ifundefined{\??su\ifgridsnapping\v!grid\fi:#1}#1\else\ifgridsnapping\v!grid\fi%
+% #1}}
+
+% new
+%
+% \startnointerference
+% all kind of code
+% \stopnointerference
+
+\newbox\nointerferencebox
+
+\def\startnointerference
+ {\setbox\nointerferencebox\vbox
+ \bgroup}
+
+\def\stopnointerference
+ {\egroup
+ \setbox\nointerferencebox\box\voidb@x}
+
+%D new and beta
+
+% \def\defineshortcut
+% {\dodoubleargument\dodefineshortcut}
+%
+% \bgroup
+%
+% \catcode`\<=\@@active
+%
+% \gdef\dodefineshortcut[#1][#2]%
+% {\ifsecondargument
+% \catcode`\<=\@@active
+% \def<{\ifmmode\expandafter\normalless\else\expandafter\doshortcut\fi}%
+% \getparameters[\??te#1][\c!commands=,\c!command=,\c!style=,\c!color=,#2]%
+% \else
+% \defineshortcut[][#1]%
+% \fi}
+%
+% \egroup
+%
+% \def\doshortcut
+% {\bgroup
+% \catcode`\>=\@@other
+% \dodoshortcut}
+%
+% \def\dodoshortcut#1>%
+% {\def\shortcut{#1}%
+% \dododoshortcut#1:\end}
+%
+% \def\dododoshortcut#1:#2\end
+% {\doifelsenothing{#2}
+% {\doifundefinedelse{\??te\c!commands}
+% {\shortcut}
+% {\@EA\dodododoshortcut\@EA\??te\@EA:\shortcut:\end}}
+% {\doifundefinedelse{\??te#1\c!commands}
+% {\shortcut}
+% {\dodododoshortcut\??te#1:#2\end}}%
+% \egroup}
+%
+% \def\dodododoshortcut#1:#2:\end
+% {\getvalue{#1\c!commands}%
+% \doattributes{#1}\c!style\c!color{\getvalue{#1\c!command}{#2}}}
+
+\def\defineshortcut
+ {\dotripleargument\dodefineshortcut}
+
+\def\dodefineshortcut[#1][#2][#3]%
+ {\ifthirdargument
+ \ConvertConstantAfter\doifelse{#1}{}
+ {\dododefineshortcut[<>][#2][#3]}
+ {\dododefineshortcut[#1][#2][#3]}%
+ \else\ifsecondargument
+ \dododefineshortcut[<>][#1][#2]%
+ \else
+ \dododefineshortcut[<>][][#1]%
+ \fi\fi}
+
+\def\dododefineshortcut[#1#2][#3][#4]% #1 is the trigger, #2 the delimiter/tag
+ {\doifundefined{\??te\??te\string#2}{\letvalue{\??te\??te\string#2}=#1}%
+ \defineactivecharacter #1 {\@EA\doshortcut\string#2} %
+ \getparameters
+ [\??te\string#2#3]
+ [\c!commands=,\c!command=,\c!style=,\c!color=,#4]}
+
+\def\doshortcut#1%
+ {\ifmmode
+ \getvalue{\??te\??te#1}%
+ \else
+ \bgroup
+ \catcode`#1=\@@other
+ \def\dodoshortcut##1#1%
+ {\def\shorttag{\??te#1}%
+ \def\shortcut{##1}%
+ \dododoshortcut##1:\end}%
+ \@EA\dodoshortcut
+ \fi}
+
+\def\dododoshortcut#1:#2\end
+ {\doifelsenothing{#2}
+ {\doifundefinedelse{\shorttag\c!commands}
+ {\shortcut}
+ {\@EA\dodododoshortcut\@EA\shorttag\@EA:\shortcut:\end}}
+ {\doifundefinedelse{\shorttag#1\c!commands}
+ {\shortcut}
+ {\dodododoshortcut\shorttag#1:#2\end}}%
+ \egroup}
+
+\def\dodododoshortcut#1:#2:\end
+ {\getvalue{#1\c!commands}%
+ \doattributes{#1}\c!style\c!color{\getvalue{#1\c!command}{#2}}}
+
+%D \defineshortcut [style=type]
+%D \defineshortcut [b] [style=bold]
+%D \defineshortcut [e] [style=\em]
+%D \defineshortcut [t] [style=type]
+%D \defineshortcut [c] [style=cap]
+%D \defineshortcut [k] [style=cap]
+%D \defineshortcut [u] [style=type,command=\hyphenatedurl]
+%D
+%D \startlines
+%D test <ziezo> test
+%D test test <t:ziezo>
+%D test test <b:ziezo>
+%D test test <w:ziezo>
+%D zus<>zo zus<:>zo zus<::>zo
+%D test test <t:ziezo> dat (ziezo)
+%D test test <t::ziezo> dat (:ziezo)
+%D test test <t:ziezo:> dat (ziezo:)
+%D test test <t:zi:ezo:> dat (zi:ezo:)
+%D well, <u:http://www.pragma-ade.nl> looks fuzzy
+%D $10<20$
+%D \stoplines
+%D
+%D \defineshortcut [<>] [i] [style=\it]
+%D \defineshortcut [()] [b] [style=\bf]
+%D \defineshortcut [++] [s] [style=\sl]
+%D \defineshortcut [//] [u] [style=\underbars]
+%D \defineshortcut [--] [a] [style=\overstrike]
+%D
+%D \startlines
+%D it seems <i:to work> well
+%D it seems (b:to work) well
+%D it seems +s:to work+ well
+%D it seems /u:to work/ well
+%D it seems -a:to work- well
+%D \stoplines
+
+% \def\setupenv{\dodoubleargument\rawgetparameters[\??en]}
+%
+% \def\doifenvelse#1{\doifdefinedelse{\??en#1}} % speed up
+% \def\doifenv #1{\doifdefined {\??en#1}} % speed up
+% \def\doifnotenv #1{\doifundefined {\??en#1}} % speed up
+%
+% \def\env#1{\csname\??en#1\endcsname}
+%
+% \beginTEX
+%
+% \def\envvar#1#2%
+% {\@EA\ifx\csname\??en#1\endcsname\relax
+% #2\else\csname\??en#1\endcsname
+% \fi}
+%
+% \endTEX
+%
+% \beginETEX \ifcsname
+%
+% \def\envvar#1#2%
+% {\ifcsname\??en#1\endcsname
+% \csname\??en#1\endcsname\else#2%
+% \fi}
+%
+% \endETEX
+
+% low level change, now also accessible as \getvariable{environment}{...}; the
+% next macros will become obsolete some day in favor of normal variables
+
+\def\s!environment{environment}
+
+\def\setupenv {\dotripleargument\dosetvariables[\getrawparameters][\s!environment]}
+\def\doifenvelse{\doifelsevariable \s!environment}
+\def\doifenv {\doifvariable \s!environment}
+\def\doifnotenv {\doifnotvariable \s!environment}
+\def\env {\getvariable \s!environment}
+\def\envvar {\getvariabledefault\s!environment}
+
+%D \macros
+%D {jobsuffix}
+%D
+%D By default, \TEX\ produces \DVI\ files which can be
+%D converted to other filetypes. Sometimes it is handy to
+%D know what the target file will be. In other driver
+%D modules we wil set \type {\jobsuffix} to \type {pdf}.
+
+\def\jobsuffix{dvi}
+
+\def\setjobsuffix#1%
+ {\resetsystemmode\jobsuffix
+ \edef\jobsuffix{#1}%
+ \setsystemmode\jobsuffix}
+
+\bgroup
+
+\gdef\cleanedupcolon{:} \catcode`:=\@@active
+
+\gdef\cleanuplabel#1%
+ {\bgroup\let:\cleanedupcolon
+ \xdef\cleanlabel{#1}%
+ \egroup}
+
+\gdef\cleanupprefixedlabel#1#2%
+ {\bgroup\let:\cleanedupcolon
+ \xdef\cleanprefix{#1}%
+ \xdef\cleanlabel {#2}%
+ \egroup}
+
+\gdef\protectlabels
+ {\let:\cleanedupcolon}
+
+\global\def\blabelgroup {\bgroup \let:\cleanedupcolon}
+\global\let\elabelgroup \egroup
+
+\gdef\labelcsname
+ {\bgroup\let:\cleanedupcolon
+ \expandafter\egroup\csname}
+
+\gdef\labelvalue#1%
+ {\labelcsname#1\endcsname}
+
+\egroup
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-not.tex b/Master/texmf-dist/tex/context/base/core-not.tex
new file mode 100644
index 00000000000..73c5c25550f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-not.tex
@@ -0,0 +1,1253 @@
+%D \module
+%D [ file=core-not,
+%D version=2002.05.10, % 1997.09.15
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Note Handling, % Footnote Handling
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Note Handling}
+
+%D Unfortunately we cannot force an even number of lines in
+%D a two column footnote placement.
+
+%D There are some (still) dutch core commands used in this
+%D file.
+
+\unprotect
+
+% \dochecknote in processnotes
+
+% splitskips setten
+
+%D Footnotes are can be characterized by three components:
+%D
+%D \startitemize[packed]
+%D \item a small number \footnote {a footnote number} or
+%D symbol {\setupfootnotes [conversionconversie=set 2]\footnote
+%D {a footnote}}
+%D \item and a similar mark at the bottom of the page
+%D \item followed by some additional text
+%D \stopitemize
+%D
+%D Because footnotes are declared at the location of their
+%D reference. Footnotes can be seen as a special kind of
+%D floating bodies. There placement is postponed but has to be
+%D taken into account in the pagebreak calculations. This kind
+%D of calculations are forced by using \type{\insert}.
+
+%D \macros
+%D {setupnote,setupnotedefinition}
+%D
+%D We can influence footnote typesetting with the setup
+%D command:
+%D
+%D \showsetup{setupfootnotes} % ! !
+%D
+%D It's sort of a custom to precede footnotes by a horizontal
+%D rule and although fancy rules like
+%D
+%D \starttyping
+%D \hbox to 10em{\hskip-3em\dotfill}
+%D \stoptyping
+%D
+%D Are quite ligitimate, we default to a simple one 20\% of the
+%D text width.
+%D
+%D When \type{n} exceeds~1, footnotes are typeset in
+%D multi||columns, using the algoritm presented on page~397
+%D of \TEX book. Footnotes can be places on a per page basis
+%D or whereever suitable. When we set~\type{n} to~0, we get a
+%D rearanged paragraph, typeset by the algoritms on pages 398
+%D and~389. We definitely did not reinvent that wheel.
+
+\newif\ifendnotes \endnotesfalse
+\newif\ifbottomnotes \bottomnotestrue
+
+\chardef\clevernotes=\zerocount % 0=page 1=firstcolumn 2=lastcolumn
+
+%D The next definitions indicate that we can frame the footnote
+%D area. The footnotes themselves are treated as definitions.
+%D
+%D \showsetup{setupfootnotes}
+
+\let\currentnote\v!footnote
+
+\def\noteparameter #1{\csname\??vn \currentnote#1\endcsname}
+\def\notedefparameter #1{\csname\??vn\??vn\currentnote#1\endcsname}
+\def\footnoteparameter #1{\csname\??vn \v!footnote#1\endcsname}
+
+\def\startnotedef {\csname\e!start\??vn\??vn\currentnote\endcsname}
+\def\stopnotedef {\csname\e!stop \??vn\??vn\currentnote\endcsname}
+
+\def\noteinsertion #1{\csname\??vn:#1\endcsname}
+\def\currentnoteins {\csname\??vn:\currentnote\endcsname}
+\def\currentsaveins {\csname\??vn-\currentnote\endcsname}
+\def\localpostponednotes {\csname\??vn+\currentnote\endcsname}
+
+\def\backupnoteins #1{\@EA\backupinsertion\csname\??vn:#1\endcsname}
+\def\currentbackupnoteins{\@EA\backupinsertion\csname\??vn:\currentnote\endcsname}
+
+%D The numbers that accompany a footnote are generated using
+%D the standard \CONTEXT\ numbering mechanism, and thereby can
+%D be assigned on a per whatever sectioning basis.
+
+\ifx\noteinsertions\undefined \let\noteinsertions\empty \fi % permits reload
+
+\def\doprocessnotes#1#2% #1 may be { ... }
+ {\def\currentnote{#2}#1}
+
+\def\doprocessnotescs#1#2% #1 == \cs that takes arg
+ {\def\currentnote{#2}\@EA#1\csname\??vn:\currentnote\endcsname}
+
+\def\processnotes #1{\processcommacommand[\noteinsertions]{\doprocessnotes {#1}}}
+\def\processnotescs#1{\processcommacommand[\noteinsertions]{\doprocessnotescs#1}}
+
+\def\savenotecontent {\processnotescs\saveinsertionbox }
+\def\erasenotebackup {\processnotescs\eraseinsertionbackup}
+\def\savenotedata {\processnotescs\saveinsertiondata }
+\def\restorenotecontent{\processnotescs\restoreinsertionbox }
+\def\restorenotedata {\processnotescs\restoreinsertiondata}
+
+%D ... due to invisibility of inserts ... maybe save them twice
+%D and split new part ... todo ...
+
+\def\doenablenotes % brrr
+ {\global\count\currentnoteins1000
+ \global\skip \currentnoteins1\baselineskip\relax}
+
+\def\dodisablenotes
+ {\global\count\currentnoteins\zerocount
+ \global\skip \currentnoteins\zeropoint}
+
+\def\enablenotes {\processnotes\doenablenotes }
+\def\disablenotes{\processnotes\dodisablenotes}
+
+\def\dosavenotes
+ {\global\setbox\currentsaveins\vbox
+ {\ifvoid\currentsaveins\else\unvbox\currentsaveins\fi
+ \box\currentnoteins}}
+
+\def\doflushsavednotes
+ {\ifvoid\currentsaveins\else
+ \insert\currentnoteins{\unvbox\currentsaveins}%
+ \fi}
+
+\def\savenotes {\processnotes\dosavenotes }
+\def\flushsavednotes{\processnotes\doflushsavednotes}
+
+%D Both these parameters are coupled to the setup command we
+%D will implement in a moment. This means that, given a
+%D suitable symbol set, symbols can be used instead of numbers,
+%D by saying:
+%D
+%D \starttyping
+%D \setupfootnotes[conversion=set 2]
+%D \stoptyping
+
+% experiment: (compare scope=text and scope=page)
+%
+% \definenote[mynote][way=bytext,location=text,width=\leftmarginwidth,scope=page,rule=,before=,after=,factor=0]
+% \setuptexttexts[margin][\vbox to \textheight{\placenotes[mynote]\vfill}][]
+
+\def\definenote
+ {\dodoubleempty\dodefinenote}
+
+% maybe we should inherit (todo)
+
+\def\dodefinenote[#1][#2]%
+ {\def\currentnote{#1}%
+ \ifundefined{\??vn:\currentnote}%
+ \@EA\installinsertion \csname\??vn:\currentnote\endcsname\relax
+ \@EA\installbackupinsertion\csname\??vn:\currentnote\endcsname\relax
+% \@EA\newbox\csname\??vn::\currentnote\endcsname % scratch box % needed ?
+ \@EA\newbox\csname\??vn+\currentnote\endcsname % local box
+ \@EA\newbox\csname\??vn-\currentnote\endcsname % local box
+ \doglobal\addtocommalist{#1}\noteinsertions
+ \fi
+ \definedescription
+ [\??vn\??vn\currentnote]
+ [\c!location=\v!inleft,
+ \c!width=\v!fit,
+ \c!headstyle=\noteparameter\c!style,
+ \c!headcolor=\noteparameter\c!color,
+ \c!before=,
+ \c!after=]%
+ \presetlocalframed
+ [\??vn\currentnote]%
+ \getparameters
+ [\??vn\currentnote]
+ [\c!location=\v!page,
+ \c!way=\v!by\v!part,
+ \c!sectionnumber=\v!no,
+ \c!conversion=,
+ \c!rule=\v!on,
+ \c!before=\blank,
+ \c!bodyfont=\v!small,
+ \c!style=,
+ \c!color=,
+ \c!after=,
+ \c!rulecolor=,
+ \c!rulethickness=\linewidth,
+ \c!frame=\v!off,
+ \c!margindistance=.5em,
+ \c!columndistance=1em,
+ \c!distance=.125em,
+ \c!align=\v!normal,
+ \c!tolerance=\v!tolerant,
+ \c!split=\v!tolerant,
+ %\c!width=\makeupwidth,
+ %\c!width=\ifdim\hsize<\makeupwidth\hsize\else\makeupwidth\fi,
+ \c!width=\defaultnotewidth,
+ \c!height=\textheight,
+ \c!numbercommand=\high,
+ \c!command=\noteparameter\c!numbercommand, % downward compatible
+ \c!separator=\@@koseparator,
+ \c!textcommand=\high,
+ \c!textstyle=\tx,
+ \c!textcolor=,
+ \c!interaction=\v!yes,
+ \c!factor=,
+ \c!scope=, % \v!text \v!page
+ \c!n=1]%
+ \definenumber
+ [\currentnote]
+ [\c!way=\noteparameter\c!way,
+ \c!sectionnumber=\noteparameter\c!way,
+ \c!conversion=\noteparameter\c!conversion]%
+ \letvalue{\??vn\c!rule:\currentnote}\normalnoterule
+ \unexpanded\setvalue{\currentnote}{\setnote[#1]}%
+ \unexpanded\setvalue{\currentnote\v!text}{\setnotetext[#1]}%
+ \setupnote[\currentnote][#2]}
+
+\def\setupnotedefinition[#1]%
+ {\setupdescriptions[\??vn\??vn#1]}
+
+\def\setupnote
+ {\dodoubleempty\dosetupnote}
+
+\def\dosetupnote[#1][#2]%
+ {\edef\currentnote{#1}%
+ \ifsecondargument
+ \getparameters
+ [\??vn\currentnote][#2]%
+ \processaction
+ [\noteparameter\c!rule]
+ [ \v!on=>\letvalue{\??vn\c!rule:\currentnote}\normalnoterule,
+ \v!off=>\letvalue{\??vn\c!rule:\currentnote}\relax,
+ \s!default=>\letvalue{\??vn\c!rule:\currentnote}\relax,
+ \s!unknown=>\setvalue{\??vn\c!rule:\currentnote}{\noteparameter\c!rule}]%
+ \processaction % todo
+ [\noteparameter\c!split]
+ [ \v!tolerant=>\notepenalty\zeropoint,
+ \v!strict=>\notepenalty9999,
+ \v!verystrict=>\notepenalty\maxdimen,
+ \s!default=>\notepenalty\zeropoint,
+ \s!unknown=>\notepenalty\commalistelement]%
+ \fi
+ \dochecknote}
+
+\def\dolocalsetupnotes#1#2%
+ {\ifsecondargument
+ \edef\noteinsertions{#1}%
+ \processnotes{\setupnote[\currentnote][#2]}%
+ \else\iffirstargument
+ \doifassignmentelse{#1}
+ {\processnotes{\setupnote[\currentnote][#1]}}
+ {\edef\noteinsertions{#1}}%
+ \fi\fi}
+
+\def\dochecknote % only to be called locally, some bools will become class-ones
+ {% for the moment no mixed text/endnotes modes, so we use
+ % \footnoteparameter and not \noteparameter (**)
+ \setnotedistance
+ \count\currentnoteins\plusthousand
+ \expanded{\doifcommonelse{\v!columns,\v!lastcolumn}{\noteparameter\c!location}}% **
+ {\chardef\clevernotes\plustwo}
+ {\expanded{\doifinsetelse{\v!firstcolumn}{\noteparameter\c!location}}% **
+ {\chardef\clevernotes\plusone}%
+ {\chardef\clevernotes\zerocount}}%
+ \ifcase\clevernotes\relax
+ % notes not in column areas
+ \ifnum\noteparameter\c!n=\zerocount
+ \settextnotes
+ \scratchcounter\plusone
+ \else
+ \setcolumnnotes
+ \scratchcounter\noteparameter\c!n\relax
+ \divide\count\currentnoteins \scratchcounter
+ \fi
+ \global\endnotesfalse
+ \expanded{\doifinsetelse{\v!page}{\noteparameter\c!location}}% **
+ {\expanded{\doifinsetelse{\v!high}{\noteparameter\c!location}}% **
+ {\global\bottomnotesfalse}
+ {\global\bottomnotestrue}}
+ {\global\endnotestrue
+ \global\bottomnotestrue}% not: \postponenotes, else global
+ \else
+ % notes in column areas
+ \ifnum\@@kln=\zerocount % brrr dependency on \??kl
+ \scratchcounter\plusone
+ \else
+ \scratchcounter\footnoteparameter\c!n\relax % **
+ \fi
+ \global\endnotesfalse
+ \global\bottomnotestrue
+ \setclevernotes
+ \fi
+ \doifsomething{\noteparameter\c!factor}
+ {\ifnum\noteparameter\c!factor<\zerocount\else
+ \count\currentnoteins\noteparameter\c!factor
+ \fi}%
+ \ifnotelimit
+ \dimen\currentnoteins\noteparameter\c!height
+ \multiply\dimen\currentnoteins \scratchcounter
+ \fi
+ \ifendnotes
+ \dimen\currentnoteins\maxdimen
+ \count\currentnoteins\zerocount
+ \skip \currentnoteins\zeropoint
+ \fi}
+
+\def\checknotes
+ {\processnotes\dochecknote}
+
+% Example of using factor:
+%
+% \definenote[mynote][way=bypage,location=text,width=\marginwidth,rule=,before=,factor=0]
+% \setuplayout[backspace=5cm,margin=3cm,margindistance=.5cm,width=middle]
+% \setuptexttexts[margin][\vbox to \textheight{\placenotes[mynote]\vfill}][]
+% \starttext
+% \dorecurse{10}{test \mynote{one one one one one one} \input zapf \mynote{one one one one one one} }
+% \stoptext
+
+%D The noterule can be a graphic and therefore calling this
+%D setup macro at every skipswitch is tricky (many many MP
+%D runs). Let's just reserve a few points, that probably match
+%D those of the stretch component.
+
+\def\placenoterule
+ {\getvalue{\??vn\c!rule:\currentnote}}
+
+\def\normalnoterule
+ {\ifvmode
+ \color
+ [\noteparameter\c!rulecolor]
+ {\hrule
+ \!!width .2\hsize
+ \!!height\noteparameter\c!rulethickness
+ \!!depth \zeropoint}%
+ \kern\strutdepth
+ \fi}
+
+%D The following switch can be used to disable limiting the
+%D height of the footnote area, something that is needed in
+%D multi column balancing. Use this switch with care.
+
+\newif\ifnotelimit \notelimittrue
+
+\def\setnotedistance
+ {\setbox\scratchbox\vbox
+ {\forgetall
+ \noteparameter\c!before
+ \placenoterule
+ \noteparameter\c!after}%
+ \global\skip\currentnoteins\ht\scratchbox
+ \setbox\scratchbox\box\voidb@x} % scratchbox can be in use
+
+\ifx\setnotehsize\undefined
+
+ \def\setnotehsize{\hsize\noteparameter\c!width} % can be overloaded
+
+\fi
+
+\def\setclevernotes
+ {\def\startpushnote {\bgroup % wellicht ooit kopuitlijnen
+ \setupinmargin[\c!align=\v!left]%
+ \startnotedef}%
+ \def\stoppushnote {\stopnotedef
+ \egroup}%
+ \let\startpopnotes \donothing
+ \let\stoppopnotes \donothing}
+
+\def\setcolumnnotes
+ {\def\startpushnote {\setnotehsize % possibly overloaded
+ \setrigidcolumnhsize\hsize{\noteparameter\c!columndistance}{\noteparameter\c!n}%
+ \bgroup
+ \setupinmargin[\c!align=\v!left]%
+ \startnotedef}%
+ \def\stoppushnote {\stopnotedef
+ \egroup}%
+ \def\startpopnotes {\bgroup
+ \setnotehsize
+ \setrigidcolumnhsize\hsize{\noteparameter\c!columndistance}{\noteparameter\c!n}%
+ \setbox0\vbox\bgroup}%
+ \def\stoppopnotes {\egroup
+ \setbox0\vbox
+ {\unvbox0\setbox0\lastbox
+ \ifvbox0\unvbox\else\box\fi0}%
+ \rigidcolumnbalance0\egroup}}
+
+\def\settextnotes
+ {\def\startpushnote {\startvboxtohbox
+ \dostartattributes{\??vn\currentnote}\c!style\c!color\empty}%
+ \def\stoppushnote {\hskip\noteparameter\c!columndistance % plus.5em minus.5em
+ \dostopattributes
+ \stopvboxtohbox}%
+ \def\startpopnotes {\vbox\bgroup
+ \doifnotinset{\noteparameter\c!width}{\v!fit,\v!broad}\setnotehsize
+ \beginofshapebox}%
+ \def\stoppopnotes {\endofshapebox
+ \reshapebox{\ifhbox\shapebox\unhbox\else\box\fi\shapebox\endgraf}%
+ \flushshapebox
+ \egroup}}
+
+%D The formatting depends on the width of the table, so we
+%D have to set \type {n} to zero.
+%D
+%D \starttyping
+%D \startbuffer
+%D \bTABLE
+%D \bTR \bTD one \footnote{\dorecurse{10}{abcd }} \eTD \bTD two \eTD \eTR
+%D \bTR \bTD three fout five six seven eight nine \eTD \bTD ten \eTD \eTR
+%D \eTABLE
+%D \stopbuffer
+%D
+%D \startlocalfootnotes[n=0,location={text,none}]
+%D \placelegend[n=2]{\getbuffer}{\placelocalfootnotes}
+%D \stoplocalfootnotes
+%D \stoptyping
+
+%D \macros
+%D {footnote}
+%D
+%D A footnote can have a reference as optional argument and
+%D therefore its formal specification looks like:
+%D
+%D \showsetup{footnote}
+%D
+%D This command has one optional command: the reference. By
+%D saying \type{[-]} the number is omitted. The footnote
+%D command is not that sensitive to spacing, so it's quite
+%D legal to say:
+%D
+%D \startbuffer
+%D Users of \CONTEXT\ must keep both feet \footnote{Given they
+%D have two.} on the ground and not get confused \footnote{Or
+%D even crazy.} by all those obscure \footnote{But fortunately
+%D readable.} parameters.
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D When setting the \type{conversion} to \type{set 2} we get
+%D something like:
+%D
+%D \bgroup
+%D \startnarrower
+%D \setupfootnotes[conversionconversie=set 1]
+%D \getbuffer
+%D \stopnarrower
+%D \egroup
+%D
+%D Typesetting footnotes is, at least for the moment, disabled
+%D when reshaping boxes.
+%D
+%D The additional macro \type {\footnotetext} and the
+%D associated \type {\note} macro were implemented at
+%D request of users on the mailing list and a suggestion by
+%D taco to split of the symbol placement. I decided to
+%D merge this functionality with the existing \type {\note}
+%D functionality.
+
+\newif\ifnotesymbol
+
+\unexpanded\def\setnote {\dotripleempty\dosetnote[1]}
+\unexpanded\def\setnotetext{\dotripleempty\dosetnote[0]}
+
+\def\dosetnote[#1][#2][#3]%
+ {\unskip
+ \def\currentnote{#2}%
+ \ifcase#1\relax
+ \global\notesymbolfalse
+ \else
+ \global\notesymboltrue
+ \fi
+ \ifvisible
+ \ifreshapingbox
+ \@EAEAEA\gobbletwoarguments
+ \else
+ \@EAEAEA\dodonote
+ \fi
+ \else % todo: \iftrialtypesetting
+ \@EA\gobbletwoarguments
+ \fi{#3}}
+
+%D \macros
+%D {notesenabled}
+%D
+%D Before we come to typesetting a footnote, we first check
+%D if we have to typeset a number. When a \type{-} is passed
+%D instead of a reference, no number is typeset. We can
+%D temporary disable footnotes by saying
+%D
+%D \starttyping
+%D \notesenabledfalse
+%D \stoptyping
+%D
+%D which can be handy while for instance typesetting tables
+%D of contents. The pagewise footnote numbering is dedicated
+%D to Han The Thanh, who needed it first.
+
+\newif\ifnotesenabled \notesenabledtrue
+
+\newconditional\pagewisenotes % saves two hash entries
+
+\def\lastnotepage{1}
+
+\def\domovednote#1#2%
+ {\ifconditional\pagewisenotes
+ \doifreferencefoundelse{\s!fnt:t:\internalfootreference}
+ {\let\savedrealreference\currentrealreference
+ \doifreferencefoundelse{\s!fnt:f:\internalfootreference}
+ {\ifnum\savedrealreference<\currentrealreference\relax\symbol[#1]\else
+ \ifnum\savedrealreference>\currentrealreference\relax\symbol[#2]\fi\fi}
+ \donothing}
+ \donothing
+ \fi}
+
+\def\dodonote
+ {\ifnotesenabled
+ \iftrialtypesetting
+ \@EAEAEA\nododonote
+ \else
+ \@EAEAEA\dododonote
+ \fi
+ \else
+ \@EA\gobbletwoarguments
+ \fi}
+
+\def\nododonote#1%
+ {\doifnot{#1}{-}{\kern.5em}% quick hack, approximation
+ \gobbleoneargument}
+
+\def\dododonote#1%
+ {\doglobal\increment\internalfootreference
+ \doifelse{\noteparameter\c!way}{\v!by\v!page}
+ {\settrue\pagewisenotes}
+ {\setfalse\pagewisenotes}%
+ \doifelse{#1}{-}
+ {\let\lastnotenumber\empty}
+ {\ifconditional\pagewisenotes
+ \doifreferencefoundelse{\s!fnt:t:\internalfootreference}
+ {\ifnum\currentrealreference>\lastnotepage\relax
+ \globallet\lastnotepage\currentrealreference
+ \resetnumber[\currentnote]%
+ \fi}
+ {}%
+ \fi
+ \incrementnumber[\currentnote]%
+ \makesectionnumber[\currentnote]%
+ \rawreference\s!fnt{#1}\hetnummer
+ \let\lastnotenumber\hetnummer}%
+ \dostartnote}
+
+%D The main typesetting routine is more or less the same as the
+%D \PLAIN\ \TEX\ one, except that we only handle one type while
+%D \PLAIN\ also has something \type{\v...}. In most cases
+%D footnotes can be handled by a straight insert, but we do so
+%D by using an indirect call to the \type{\insert} primitive.
+
+\def\dostartlocalnoteinsert
+ {\dochecknote
+ \ifendnotes
+ \global\setbox\localpostponednotes\vbox\bgroup
+ \ifvoid\localpostponednotes\else\unvbox\localpostponednotes\fi
+ \else
+ \insert\currentnoteins\bgroup
+ \fi}
+
+\let\startlocalnoteinsert\dostartlocalnoteinsert
+\let\stoplocalnoteinsert \egroup
+
+%D Making footnote numbers active is not always that logical,
+%D Making footnote numbers active is not always that logical,
+%D especially when we keep the reference and text at one page.
+%D On the other hand we need interactivity when we refer to
+%D previous notes or use end notes. Therefore we support
+%D interactive footnote numbers in two ways \footnote{This
+%D feature was implemented years after we were able to do so,
+%D mainly because endnotes had to be supported.} that is,
+%D automatically (vise versa) and by user supplied reference.
+
+\newcounter\internalfootreference
+
+\let\startpushnote=\relax
+\let\stoppushnote =\relax
+
+\newsignal\notesignal
+\newcount \notepenalty
+
+\notepenalty=0 % needed in order to split in otrset
+
+\newconditional\processingnote
+
+\def\dostartnote% nog gobble als in pagebody
+ {\bgroup
+ \settrue\processingnote
+ %\restorecatcodes % to be tested first
+ \iftypesettinglines % otherwise problems with \type <crlf> {xxx}
+ \ignorelines % makes footnotes work in \startlines ... \stoplines
+ \fi
+ \ifnotesymbol
+ \dolastnotesymbol
+ \else
+ \unskip\unskip
+ \globallet\lastnotesymbol\dolastnotesymbol
+ \fi
+ \startlocalnoteinsert
+ \doif{\noteparameter\c!scope}\v!page{\floatingpenalty\maxdimen}% experiment
+ \penalty\notepenalty
+ \forgetall
+ \setnotebodyfont
+ \redoconvertfont % to undo \undo calls in in headings etc
+ \splittopskip\strutht % not actually needed here
+ \splitmaxdepth\strutdp % not actually needed here
+ \leftmargindistance\noteparameter\c!margindistance
+ \rightmargindistance\leftmargindistance
+ \ifcase\noteparameter\c!n\relax % new 31-07-99 ; always ?
+ \doifnotinset{\noteparameter\c!width}{\v!fit,\v!broad}\setnotehsize
+ \fi
+ \startpushnote
+ {\ifx\lastnotenumber\empty \else
+ \preparethenumber{\??vn\currentnote}\lastnotenumber\preparednumber
+ \doifelse{\noteparameter\c!interaction}\v!no
+ {\noteparameter\c!numbercommand
+ {\preparednumber\domovednote\v!nextpage\v!previouspage}}%
+ {\gotobox{\noteparameter\c!command % was \c!numbercommand, but compatible
+ {\preparednumber\domovednote\v!nextpage\v!previouspage}}%
+ [\s!fnt:f:\internalfootreference]}%
+ \fi
+ \doifelse{\noteparameter\c!interaction}\v!no
+ {\ifconditional\pagewisenotes
+ \rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}%
+ \fi}%
+ {\rawreference\s!fnt{\s!fnt:t:\internalfootreference}{}}}%
+ \bgroup
+ \postponenotes
+ \aftergroup\dostopnote
+ \begstrut
+ \let\next}
+
+\def\dostopnote
+ {\endstrut
+ \stoppushnote
+ \egroup
+ \stoplocalnoteinsert
+ \kern\notesignal\relax} % \relax is needed to honor spaces
+
+\def\dolastnotesymbol
+ {\removeunwantedspaces
+ \doifitalicelse\/\donothing % Charles IV \footnote{the fourth}
+ \ifdim\lastkern=\notesignal
+ \dodonotesymbol{\kern\noteparameter\c!distance}% gets the font right, hack !
+ \fi
+ \nobreak
+ \doifelse{\noteparameter\c!interaction}\v!no
+ {\dodonotesymbol{\lastnotenumber\domovednote\v!previouspage\v!nextpage}%
+ \ifconditional\pagewisenotes
+ \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}%
+ \fi}
+ {\gotobox
+ {\dodonotesymbol{\lastnotenumber\domovednote\v!previouspage\v!nextpage}}%
+ [\s!fnt:t:\internalfootreference]%
+ \rawreference\s!fnt{\s!fnt:f:\internalfootreference}{}}%
+ \globallet\lastnotesymbol\relax}
+
+\let\lastnotesymbol\relax
+
+%D \macros
+%D {note}
+%D
+%D Refering to a note is accomplished by the rather short
+%D command:
+%D
+%D \showsetup{note}
+%D
+%D This command is implemented rather straightforward as:
+
+\def\notesymbol
+ {\dodoubleempty\donotesymbol}
+
+% \def\donotesymbol[#1][#2]%
+% {\bgroup
+% \ifnotesenabled
+% \def\currentnote{#1}%
+% \ifsecondargument
+% \ifx\lastnotesymbol\relax
+% \unskip
+% \naarbox{\high{\tx\currenttextreference}}[#2]%
+% \else
+% \lastnotesymbol
+% \fi
+% \else
+% \lastnotesymbol
+% \fi
+% \fi
+% \egroup}
+
+\def\dodonotesymbol#1%
+ {\noteparameter\c!textcommand{\doattributes{\??vn\currentnote}\c!textstyle\c!textcolor{#1}}}
+
+% \def\donotesymbol[#1][#2]%
+% {\bgroup
+% \ifnotesenabled
+% \def\currentnote{#1}%
+% \ifsecondargument
+% \ifx\lastnotesymbol\relax % bugged
+% \unskip
+% \gotobox{\dodonotesymbol\currenttextreference}[#2]%
+% \else
+% \lastnotesymbol
+% \fi
+% \else
+% \lastnotesymbol
+% \fi
+% \fi
+% \egroup}
+
+\def\donotesymbol[#1][#2]%
+ {\bgroup
+ \ifnotesenabled
+ \def\currentnote{#1}%
+ \ifsecondargument
+ \unskip
+ \gotobox{\dodonotesymbol\currenttextreference}[#2]%
+ \else
+ \lastnotesymbol
+ \fi
+ \fi
+ \egroup}
+
+%D Normally footnotes are saved as inserts that are called upon
+%D as soon as the pagebody is constructed. The footnote
+%D insertion routine looks just like the \PLAIN\ \TEX\ one,
+%D except that we check for the end note state.
+
+\let\startpopnotes = \relax
+\let\stoppopnotes = \relax
+
+\def\placenoteinserts
+ {\processnotes\doplacenoteinserts}
+
+\def\doplacenoteinserts
+ {%\ifvoid\currentnoteins \else % unsafe, strange
+ \relax\ifdim\ht\currentnoteins>\zeropoint\relax
+ \dochecknote
+ \ifendnotes \else
+ \noteparameter\c!before
+ \placenoterule % alleen in ..mode
+ \bgroup
+ \setnotebodyfont
+ \setbox0\hbox
+ {\startpopnotes
+ \setnotebodyfont
+% % this should be checked, smells like a mix-up
+% % does not split: \ifcase\noteparameter\c!n\unvbox\else\box\fi\currentnoteins
+% \ifcase\noteparameter\c!n
+ \box\currentnoteins
+% \else
+% \unvbox\currentnoteins
+% \fi
+ % this is too ugly actually
+ \stoppopnotes}%
+ \setbox2\hbox
+ {\localframed
+ [\??vn\currentnote]
+ [\c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!strut=\v!no,
+ \c!offset=\v!overlay]
+ {\ifdim\dp0=\zeropoint % this hack is needed because \vadjust
+ \hbox{\lower\strutdp\box0}% % in margin number placement
+ \else % hides the (always) present depth
+ \box0
+ \fi}}%
+ \setbox2\hbox{\lower\strutdepth\box2}%
+ \dp2=\strutdepth % so we know that it has the note bodyfont depth
+ \box2
+ \egroup
+ \noteparameter\c!after
+ \fi
+ \fi}
+
+%D Supporting end notes is surprisingly easy. Even better, we
+%D can combine this feature with solving the common \TEX\
+%D problem of disappearing inserts when they're called for in
+%D deeply nested boxes. The general case looks like:
+%D
+%D \starttyping
+%D \postponenotes
+%D \.box{whatever we want with footnotes}
+%D \flushnotes
+%D \stoptyping
+%D
+%D This alternative can be used in headings, captions, tables
+%D etc. The latter one sometimes calls for notes local to
+%D the table, which can be realized by saying
+%D
+%D \starttyping
+%D \setlocalfootnotes
+%D some kind of table with local footnotes
+%D \placelocalfootnotes
+%D \stoptyping
+%D
+%D Postponing is accomplished by simply redefining the (local)
+%D insert operation. A not too robust method uses the
+%D \type{\insert} primitive when possible. This method fails in
+%D situations where it's not entirely clear in what mode \TEX\
+%D is. Therefore the auto method can is to be overruled when
+%D needed.
+
+\newconditional\postponednote
+
+\def\autopostponenotes
+ {\def\startlocalnoteinsert % not global
+ {\ifinner
+ %\message{[postponed note]}%
+ \global\setbox\localpostponednotes\vbox\bgroup
+ \global\settrue\postponednote
+ \ifvoid\localpostponednotes\else\unvbox\localpostponednotes\fi
+ \else
+ %\message{[inserted note]}%
+ \expandafter\dostartlocalnoteinsert
+ \fi}}
+
+\def\postponenotes
+ {\let\autopostponenotes\postponenotes
+ \let\postponenotes\relax % prevent loops
+ \def\startlocalnoteinsert % not global
+ {%\message{[postponed note]}%
+ \global\setbox\localpostponednotes\vbox\bgroup
+ \global\settrue\postponednote
+% \unvbox\localpostponednotes}}
+ \ifvoid\localpostponednotes\else\unvbox\localpostponednotes\fi}}
+
+\def\dodoflushnotes % per class, todo: handle endnotes here
+ {\ifdim\ht\localpostponednotes>\zeropoint
+ \bgroup
+ \dochecknote
+ \ifendnotes \else
+ % not that accurate when multiple notes
+ \scratchdimen\pagegoal
+ \advance\scratchdimen -\pagetotal
+ \ifdim\scratchdimen<\ht\localpostponednotes
+ \message{[moved note \currentnote]}%
+ \fi
+ \insert\currentnoteins\bgroup\unvbox\localpostponednotes\egroup
+ \fi
+ \egroup
+ \fi}
+
+\def\doflushnotes % also called directly, \ifvoid is needed !
+ {\ifconditional\processingnote \else \ifconditional\postponednote
+ \let\localnoteinsert\normalnoteinsert % not global
+ \processnotes\dodoflushnotes
+ \global\setfalse\postponednote
+ \fi \fi}
+
+\def\flushnotes
+ {\ifconditional\processingnote \else \ifconditional\postponednote
+ \ifinner \else \ifinpagebody \else
+ %\ifvmode % less interference, but also less secure
+ \doflushnotes
+ %\fi
+ \fi \fi
+ \fi \fi}
+
+%D This is a nasty and new secondary footnote flusher. It
+%D can be hooked into \type {\everypar} like:
+%D
+%D \starttyping
+%D \appendtoks \synchronizenotes \to \everypar
+%D \stoptyping
+
+\def\dosynchronizenotes
+ {\ifvoid\currentnoteins\else\insert\currentnoteins{\unvbox\currentnoteins}\fi}
+
+\def\synchronizenotes
+ {\processnotes\dosynchronizenotes}
+
+%D There are several placement alternatives.
+
+\def\placenotesintext#1%
+ {\ifdim\ht#1>\zeropoint
+ \endgraf
+ \ifvmode
+ \whitespace
+ \noteparameter\c!before
+ \fi
+ \snaptogrid\hbox
+ {\setnotebodyfont
+ \setbox0\hbox
+ {\startpopnotes
+ \unvbox#1\endgraf\relax
+ \stoppopnotes}%
+ \doif{\noteparameter\c!width}\v!fit % new, auto width
+ {\setbox0\hbox % uggly but ok.
+ {\beginofshapebox
+ \unhbox0\setbox0=\lastbox\unvbox0
+ \endofshapebox
+ \reshapebox{\hbox{\unhbox\shapebox}}%
+ \vbox{\flushshapebox}}}%
+ \localframed
+ [\??vn\currentnote]
+ [\c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!strut=\v!no,
+ \c!offset=\v!overlay]
+ {\ifdim\dp0=\zeropoint % this hack is needed because \vadjust
+ \hbox{\lower\strutdp\box0}% % in margin number placement
+ \else % hides the (always) present depth
+ \box0
+ \fi}}%
+ \ifvmode
+ \noteparameter\c!after
+ \fi
+ \fi}
+
+%D A stupid alternative is also provided:
+%D
+%D \starttyping
+%D \setupfootnotes[location={text,none}]
+%D \stoptyping
+
+\def\placenotesasnone#1% is grouped already
+ {\ifdim\ht#1>\zeropoint
+ \noteparameter\c!before
+ \setnotebodyfont
+ \startpopnotes % make sure that fake height is killed
+ \unvbox#1\endgraf
+ \stoppopnotes
+ \setbox0=\lastbox \ifvbox0 \unvbox0\else\box0\fi % enable columns
+ \noteparameter\c!after
+ \fi}
+
+%D \macros
+%D {startlocalfootnotes,placelocalfootnotes}
+%D
+%D The next two macros can be used in for instance tables, as
+%D we'll demonstrate later on.
+%D
+%D \showsetup{startlocalfootnotes}
+%D \showsetup{placelocalfootnotes}
+
+\def\defaultnotewidth{\makeupwidth}
+
+% \def\collectlocalnotes
+% {\def\localnoteinsert##1% was \gdef, but never reset!
+% {%\message{[local note]}%
+% \global\setbox\localpostponednotes\vbox\bgroup
+% \ifvoid\localpostponednotes \else
+% \unvbox\localpostponednotes
+% \fi
+% \let\next}}
+
+\def\collectlocalnotes
+ {\def\startlocalnoteinsert% was \gdef, but never reset!
+ {%\message{[local note]}%
+ \global\setbox\localpostponednotes\vbox\bgroup
+ \ifvoid\localpostponednotes\else\unvbox\localpostponednotes\fi}}
+
+\def\startlocalnotes
+ {\bgroup % here because we support \vbox\startlocalnotes
+ \dosingleempty\dostartlocalnotes}
+
+\def\dostartlocalnotes[#1]%
+ {\let\autopostponenotes\postponenotes
+ \let\postponenotes\collectlocalnotes
+ \def\defaultnotewidth{\ifdim\hsize<\makeupwidth\hsize\else\makeupwidth\fi}%
+ \processnotes
+ {\doifsomething{#1}{\setupnote[\currentnote][#1]}%
+ \savenumber[\currentnote]%
+ \resetnumber[\currentnote]}%
+ \collectlocalnotes}
+
+\def\stoplocalnotes
+ {\processnotes{\restorenumber[\currentnote]}%
+ \egroup
+ \checknotes} % really needed, else wrong main settings
+
+\def\placelocalnotes
+ {\dodoubleempty\doplacelocalnotes}
+
+\def\doplacelocalnotes[#1][#2]%
+ {\bgroup
+ \dolocalsetupnotes{#1}{#2}%
+ \processnotes
+ {\ExpandBothAfter\doifinsetelse\v!none{\noteparameter\c!location}
+ \placenotesasnone\placenotesintext\localpostponednotes}%
+ \egroup
+ \checknotes}
+
+%D These commands can be used like:
+%D
+%D \startbuffer
+%D \startlocalnotes[width=.3\hsize,n=0]
+%D \placetable
+%D {Some Table}
+%D \placeontopofeachother
+%D {\starttable[|l|r|]
+%D \HL
+%D \VL Nota\footnote{Bene} \VL Bene\footnote{Nota} \VL\SR
+%D \VL Bene\footnote{Nota} \VL Nota\footnote{Bene} \VL\SR
+%D \HL
+%D \stoptable}
+%D {\placelocalnotes}
+%D \stoplocalnotes
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Because this table placement macro expect box content, and
+%D thanks to the grouping of the local footnotes, we don't need
+%D additional braces.
+%D
+%D \getbuffer
+
+%D \macros
+%D {placefootnotes}
+%D
+%D We still have no decent command for placing footnotes
+%D somewhere else than at the bottom of the page (for which no
+%D user action is needed). Footnotes (endnotes) can be
+%D placed by using
+%D
+%D \showsetup{placefootnotes}
+
+\def\placebottomnotes
+ {\processnotes\dodoplacenotes}
+
+% \definecomplexorsimple\placenotes
+
+% \def\simpleplacenotes
+% {\processnotes\dodoplacenotes}
+
+% \def\complexplacenotes[#1]%
+% {\bgroup
+% \edef\noteinsertions{#1}%
+% \simpleplacenotes
+% \egroup}
+
+\def\placenotes
+ {\dodoubleempty\doplacenotes}
+
+\def\doplacenotes[#1][#2]%
+ {\bgroup
+ \dolocalsetupnotes{#1}{#2}%
+ \processnotes\dodoplacenotes
+ \egroup}
+
+\def\dodoplacenotes
+ {\dochecknote
+ \ifendnotes
+ \ifinpagebody \else \ifdim\ht\localpostponednotes>\zeropoint
+ \expanded{\doifinsetelse{\v!none}{\noteparameter\c!location}}
+ \placenotesasnone\placenotesintext\localpostponednotes
+ \fi \fi
+ \else \ifdim\ht\currentnoteins>\zeropoint
+ \placenoteinserts
+ \fi \fi}
+
+%D \macros
+%D {fakenotes}
+
+\def\fakenotes
+ {\ifhmode\endgraf\fi\ifvmode
+ \calculatetotalclevernoteheight
+ \ifdim\totalnoteheight>\zeropoint \kern\totalnoteheight \fi
+ \fi}
+
+\def\fakepagenotes
+ {\ifhmode\endgraf\fi\ifvmode
+ \calculatetotalpagenoteheight
+ \ifdim\totalnoteheight>\zeropoint \kern\totalnoteheight \fi
+ \fi}
+
+\newdimen\totalnoteheight
+
+
+\def\doaddtototalnoteheight#1%
+ {\ifdim\ht#1>\zeropoint
+ \advance\totalnoteheight\ht #1%
+ \advance\totalnoteheight\skip#1%
+ \fi}
+
+\def\docalculatetotalnoteheight
+ {\ifcase\clevernotes % tricky here ! ! ! to be sorted out ! ! !
+ \doaddtototalnoteheight\currentnoteins
+ \else
+ \doaddtototalnoteheight\currentbackupnoteins
+ \fi}
+
+\def\docalculatetotalclevernoteheight
+ {\ifcase\clevernotes \else % tricky here ! ! ! to be sorted out ! ! !
+ \doaddtototalnoteheight\currentnoteins
+ \fi}
+
+\def\docalculatetotalpagenoteheight
+ {\doaddtototalnoteheight\currentnoteins}
+
+\def\calculatetotalnoteheight {\totalnoteheight\zeropoint\processnotes\docalculatetotalnoteheight}
+\def\calculatetotalclevernoteheight{\totalnoteheight\zeropoint\processnotes\docalculatetotalclevernoteheight}
+\def\calculatetotalpagenoteheight {\totalnoteheight\zeropoint\processnotes\docalculatetotalpagenoteheight}
+
+\newif\ifnotespresent
+
+\def\dochecknotepresence
+ {\ifdim\ht\currentnoteins>\zeropoint
+ \notespresenttrue
+ \fi}
+
+\def\checknotepresence
+ {\notespresentfalse
+ \processnotes\dochecknotepresence}
+
+%D Now how can this mechanism be hooked into \CONTEXT\ without
+%D explictly postponing footnotes? The solution turned out to
+%D be rather simple:
+%D
+%D \starttyping
+%D \everypar {...\flushnotes...}
+%D \neverypar {...\postponenotes}
+%D \stoptyping
+%D
+%D and
+%D
+%D \starttyping
+%D \def\ejectinsert%
+%D {...
+%D \flushnotes
+%D ...}
+%D \stoptyping
+%D
+%D We can use \type{\neverypar} because in most commands
+%D sensitive to footnote gobbling we disable \type{\everypar}
+%D in favor for \type{\neverypar}. In fact, this footnote
+%D implementation is the first to use this scheme.
+
+%D When typesetting footnotes, we have to return to the
+%D footnote specific bodyfont size, which is in most cases derived
+%D from the global document bodyfont size. In the previous macros
+%D we already used a footnote specific font setting macro.
+
+\def\setnotebodyfont
+ {\let\setnotebodyfont\relax
+ \restoreglobalbodyfont
+ \switchtobodyfont[\noteparameter\c!bodyfont]%
+ \setuptolerance[\noteparameter\c!tolerance]%
+ \setupalign[\noteparameter\c!align]}
+
+%D The footnote mechanism defaults to a traditional one
+%D column way of showing them. By default we precede them by
+%D a small line.
+
+\ifx\v!endnote\undefined \def\v!endnote{endnote} \fi
+
+\definenote [\v!footnote ]
+\definenote [\v!endnote ] [\c!location=\v!none] % else no break
+
+% \definenote
+% [mynote]
+% [way=bypage,
+% location={page,high},
+% factor=0,
+% width=\leftmarginwidth,
+% scope=page,
+% rule=,
+% before=,
+% after=]
+%
+% \setuptexttexts
+% [margin]
+% [\vbox to \textheight{\placenotes[mynote]\vfill}]
+% []
+
+%D Compatibility macros:
+
+ \def\setupfootnotedefinition{\setupnotedefinition [\v!footnote]}
+ \def\setupfootnotes {\setupnote [\v!footnote]}
+\unexpanded \def\footnote {\setnote [\v!footnote]}
+\unexpanded \def\footnotetext {\setnotetext [\v!footnote]}
+ \def\note {\dodoubleempty\notesymbol [\v!footnote]} % alleen footnote
+ \def\placefootnotes {\dodoubleempty\doplacefootnotes [\v!footnote]}
+ \def\placelocalfootnotes {\dodoubleempty\doplacelocalfootnotes[\v!footnote]}
+ \def\startlocalfootnotes {\startlocalnotes}
+ \def\stoplocalfootnotes {\stoplocalnotes }
+
+\def\doplacefootnotes [#1][#2]%
+ {\ifsecondargument\placenotes [#1][#2,\c!height=\textheight]\else\placenotes [#1]\fi}
+
+\def\doplacelocalfootnotes[#1][#2]%
+ {\ifsecondargument\placelocalnotes[#1][#2,\c!height=\textheight]\else\placelocalnotes[#1]\fi}
+
+%D Backward compatibility command:
+
+\def\footins {\noteinsertion\currentnote}
+\def\postponefootnotes {\postponenotes}
+\def\autopostponefootnotes{\autopostponenotes}
+
+\protect \endinput
+
+% \def\myfootnote[#1]#2% let's guess that #2 is without catcode problems
+% {\setgvalue{note:t:#1}%
+% {\setxvalue{note:l:#1}{\getvalue{note:n:#1}}%
+% \footnote[note:a:#1:\getvalue{note:l:#1}]{#2}}%
+% \setgvalue{note:n:#1}%
+% {1}%
+% \getvalue{note:t:#1}}%
+
+% \def\mynote[#1]%
+% {\removeunwantedspaces
+% \scratchcounter\getvalue{note:n:#1}\relax
+% \edef\NoteNumber{\the\scratchcounter}%
+% \doglobal\incrementvalue{note:n:#1}\relax
+% \doifreferencefoundelse{note:a:#1:1}
+% {\edef\NotePageA{\number\currentrealreference}%
+% \doifreferencefoundelse{note:a:#1:\getvalue{note:n:#1}}
+% {\edef\NotePageB{\number\currentrealreference}%
+% \doifreferencefoundelse{note:a:#1:\NoteNumber}
+% {\ifnum\currentrealreference=\NotePageB\relax
+% \pagereference[note:a:#1:\getvalue{note:n:#1}]%
+% \note[note:a:#1:\getvalue{note:l:#1}]%
+% \else\ifnum\NotePageA=\NotePageB\relax
+% \pagereference[note:a:#1:\getvalue{note:n:#1}]%
+% \note[note:a:#1:\getvalue{note:l:#1}]%
+% \else
+% \getvalue{note:t:#1}%
+% \fi\fi}
+% {\ifnum\NotePageA=\NotePageB\relax
+% \pagereference[note:a:#1:\getvalue{note:n:#1}]%
+% \note[note:a:#1:\getvalue{note:l:#1}]%
+% \else
+% \getvalue{note:t:#1}%
+% \fi}}
+% {\pagereference[note:a:#1:\getvalue{note:n:#1}]%
+% \note[note:a:#1:\getvalue{note:l:#1}]}}
+% {\pagereference[note:a:#1:\getvalue{note:n:#1}]%
+% \note[note:a:#1:\getvalue{note:l:#1}]}}
+
+% \starttext
+
+% funny \myfootnote[funny]{funny} funny \mynote[funny] \page
+
+% funny \mynote[funny] funny \mynote[funny] funny \mynote[funny] \page
+% funny \mynote[funny] funny \mynote[funny] \page
+% funny \mynote[funny] funny \mynote[funny] funny \mynote[funny] \page
+
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/core-ntb.tex b/Master/texmf-dist/tex/context/base/core-ntb.tex
new file mode 100644
index 00000000000..080d5c31a65
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ntb.tex
@@ -0,0 +1,1431 @@
+%D \module
+%D [ file=core-ntb,
+%D version=2000.04.18,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Natural Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is an unfinished, preliminary module. At least two
+%D runs are needed to get the table fixed.
+
+% optie=rek beschrijven
+
+\writestatus{loading}{Context Core Macros / Natural Tables}
+
+%D As always, this is the nth version. Much time went in
+%D trying to speed up the many cell calculations, some
+%D optimizations were rejected in order not to complicate this
+%D module too much (and in order to prevail extensibility).
+
+%D To Do:
+%D
+%D \starttyping
+%D splitsen = ja | herhaal => als nofTH>1 then ja als herhaal
+%D \stoptyping
+
+%D To Do:
+%D
+%D \starttyping
+%D break over pagina
+%D kop herhalen
+%D reset settings
+%D
+%D \setupTABLE [c|column|x] [nx|odd|even|first|last][a=b]
+%D \setupTABLE [r|row |y] [nx|odd|even|first|last][a=b]
+%D \setupTABLE [nx|odd|even|first|last][ny|odd|even|first|last][a=b]
+%D \setupTABLE [nx|odd|even|first|last] [a=b]
+%D \setupTABLE [a=b]
+%D
+%D \bTH \eTH
+%D \stoptyping
+
+% the section setup does not work yet, data needs to be stored,
+% i.e.each row should know if it's a head/body/foot, and there
+% should be \setupTABLE[head]... and alike
+
+\unprotect
+
+%D A simple way to force equal line spacing is to say:
+%D
+%D \starttyping
+%D \def\bTBLCELL{\begstrut}
+%D \def\eTBLCELL{\endstrut}
+%D \stoptyping
+
+%D However, the next alternative also takes care of preceding
+%D and following white space.
+
+\def\bTBLCELL % why not \doinhibitblank
+ {\inhibitblank\doconvertfont\tbltblstyle\empty\everypar{\begstrut}}
+
+\def\eTBLCELL
+ {\ifhmode
+ \endstrut
+ \else
+ \par
+ \ifdim\prevdepth<\zeropoint % =-1000pt ?
+ \vskip-\strutdp
+ \else
+ \removebottomthings
+ \fi
+ \fi}
+
+\newcounter\currenttbl
+
+\def\@@tbl{tbl} \def\tblcell{1} \def\tblnone{2}
+
+\def\@@tblprefix{tbl:} \let\@@rawtblprefix\@@tblprefix
+
+%D This should be done more efficient:
+
+\def\settbltag#1#2#3{\setevalue{\@@tblprefix#1:#2:s}{#3}} % \number#3
+\def\settblcol#1#2#3{\setevalue{\@@tblprefix#1:#2:c}{#3}}
+\def\settblrow#1#2#3{\setevalue{\@@tblprefix#1:#2:r}{#3}}
+
+\def\settblwd #1#2#3{\setxvalue{\@@tblprefix#1:#2:wd}{#3}} % global !
+\def\settblht #1#2#3{\setxvalue{\@@tblprefix#1:#2:ht}{#3}} % global !
+
+\def\gettbltag#1#2{\csname\@@tblprefix#1:#2:s\endcsname}
+\def\gettblcol#1#2{\csname\@@tblprefix#1:#2:c\endcsname}
+\def\gettblrow#1#2{\csname\@@tblprefix#1:#2:r\endcsname}
+
+\def\gettblwd #1#2{\csname\@@tblprefix#1:#2:wd\endcsname}
+\def\gettblht #1#2{\csname\@@tblprefix#1:#2:ht\endcsname}
+
+\def\settblwid#1#2{\setxvalue{\@@tblprefix#1:w}{#2}} % global !
+\def\settblhei#1#2{\setxvalue{\@@tblprefix#1:h}{#2}} % global !
+\def\settblaut#1#2{\setxvalue{\@@tblprefix#1:a}{#2}} % global !
+
+\def\gettblwid#1{\executeifdefined{\@@tblprefix#1:w}\zeropoint}
+\def\gettblhei#1{\executeifdefined{\@@tblprefix#1:h}\zeropoint}
+\def\gettblaut#1{\csname\@@tblprefix#1:a\endcsname}
+
+\def\doiftbltag #1#2{\doifdefined {\@@tblprefix#1:#2:s}}
+\def\doifnottbltag #1#2{\doifundefined {\@@tblprefix#1:#2:s}}
+\def\doifelsetbltag#1#2{\doifdefinedelse{\@@tblprefix#1:#2:s}}
+\def\doiftblrow #1#2{\doifdefined {\@@tblprefix#1:#2:r}}
+\def\doiftblcol #1#2{\doifdefined {\@@tblprefix#1:#2:c}}
+\def\doifnottblcol #1#2{\doifundefined {\@@tblprefix#1:#2:c}}
+
+% \def\settblspn#1#2{\setvalue {\@@tblprefix#1:s}{#2}}
+% \def\doiftblspn #1{\doifelsevalue{\@@tblprefix#1:s}{1}}
+
+\def\settblspn #1{\setvalue {\@@tblprefix#1:s}{1}}
+\def\doifelsetblspn#1{\doifelsevalue{\@@tblprefix#1:s}{1}}
+
+\def\settbltxt#1#2{\long\setvalue{\@@tblprefix:#1:#2:t}}
+\def\gettbltxt#1#2{\csname\@@tblprefix:#1:#2:t\endcsname}
+
+%\def\doiftbl #1#2#3{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax \else#3\fi}
+%\def\doifnottbl #1#2#3{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax #3\fi}
+%\def\doifelsetbl#1#2#3#4{\ifcase0\getvalue{\@@tblprefix#1:#2:s}\relax#4\else#3\fi}
+%
+%\let\doiftbltag \doiftbl
+%\let\doifnottbltag \doifnottbl
+%\let\doifelsetbltag\doifelsetbl
+
+\newtoks\tbltoks
+
+\let\pushTBLparameters\relax
+\let\popTBLparameters \relax
+
+\newif\ifsqueezeTBLspan \squeezeTBLspantrue % spans one column cell over multi column par cells
+\newif\ifautoTBLspread \autoTBLspreadfalse
+\newif\ifautoTBLhsize \autoTBLhsizetrue
+\newif\ifautoTBLrowspan \autoTBLrowspantrue
+\newif\ifautoTBLemptycell \autoTBLemptycelltrue
+\newif\ifautoTBLcheckwidth \autoTBLcheckwidthtrue
+\newif\ifappendTBLsetups \appendTBLsetupstrue
+\newif\ifenableTBLbreak \enableTBLbreakfalse
+\newif\ifmultipleTBLheads \multipleTBLheadsfalse
+
+\newif\iftraceTABLE \traceTABLEfalse
+
+\def\noftblheadlines{0}
+\def\noftblnextlines{0}
+\def\noftblhdnxlines{0}
+
+\presetlocalframed[\@@tbl\@@tbl]
+
+\long\def\handleTBLcell#1#2[#3]{}
+
+\long\def\bTC#1\eTC{\bTD#1\eTD}
+\long\def\bTX#1\eTX{\bTD#1\eTD}
+\long\def\bTY#1\eTY{\bTR#1\eTR}
+
+\let\getTABLEparameters\getparameters
+
+\unexpanded\def\setupTABLE
+ {\dotripleempty\dosetupTABLE}
+
+\def\dosetupTABLE[#1][#2][#3]%
+ {\ifthirdargument
+ \processaction
+ [#1]
+ [ \v!row=>{\dosetupTABLExy[\c!y][#2][#3]},%
+ \v!column=>{\dosetupTABLExy[\c!x][#2][#3]},%
+ r=>{\dosetupTABLExy[\c!y][#2][#3]},%
+ c=>{\dosetupTABLExy[\c!x][#2][#3]},%
+ y=>{\dosetupTABLExy[\c!y][#2][#3]},%
+ x=>{\dosetupTABLExy[\c!x][#2][#3]},%
+ \v!start=>{\dosetupTABLExy[#1][#2][#3]},%
+ \v!header=>{\dosetupTABLExy[#1][#2][#3]},%
+ \s!unknown=>{\dosetupTABLEzz[#1][#2][#3]}]%
+ \else\ifsecondargument
+ \processaction
+ [#1]
+ [ \v!row=>{\dosetupTABLExy[\c!y][\v!each][#2]},%
+ \v!column=>{\dosetupTABLExy[\c!x][\v!each][#2]},%
+ r=>{\dosetupTABLExy[\c!y][\v!each][#2]},%
+ c=>{\dosetupTABLExy[\c!x][\v!each][#2]},%
+ y=>{\dosetupTABLExy[\c!y][\v!each][#2]},%
+ x=>{\dosetupTABLExy[\c!x][\v!each][#2]},%
+ \v!start=>{\dosetupTABLExy[#1][\v!each][#2]},%
+ \v!header=>{\dosetupTABLExy[#1][\v!each][#2]},%
+ \s!unknown=>{\dosetupTABLEzz[\c!x][#1][#2]}]%
+ \else
+ \getparameters[\@@tbl\@@tbl][#1]%
+ \fi\fi}
+
+\def\dosetupTABLExy[#1][#2][#3]%
+ {\def\dodosetupTABLE##1{\setTABLEparameters[#1##1][#3]}%
+ \processcommalist[#2]\dodosetupTABLE}
+
+\def\dosetupTABLEzz[#1][#2][#3]%
+ {\def\dodosetupTABLE##1%
+ {\def\dododosetupTABLE####1{\setTABLEparameters[\c!x##1\c!y####1][#3]}%
+ \processcommalist[#2]\dododosetupTABLE}%
+ \processcommalist[#1]\dodosetupTABLE}
+
+\def\nopTABLEparameters[#1][#2]%
+ {\letvalue{\@@tblprefix#1}\empty}
+
+\def\setTABLEparameters[#1][#2]%
+ {\pushTBLparameters
+ \ifappendTBLsetups
+ \doifdefinedelse{\@@tblprefix#1}
+ {\def\getTABLEparameters[##1][##2]%
+ {\setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][##2,#2]}}%
+ \getvalue{\@@tblprefix#1}%
+ \let\getTABLEparameters\getparameters}
+ {\setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][#2]}}%
+ \else
+ \setvalue{\@@tblprefix#1}{\getTABLEparameters[\@@tbl\@@tbl][#2]}%
+ \fi
+ \popTBLparameters}
+
+\let\setupTBLsection\relax
+
+\def\setupTBLcell#1#2% cell over col over row
+ {\setupTBLsection % already forgotten
+\getvalue{\@@tblprefix\v!each\v!each}%
+ \getvalue{\@@tblprefix\c!y\v!each}%
+ \getvalue{\@@tblprefix\c!x\v!each}%
+ \getvalue{\@@tblprefix\c!y\v!oddeven{#1}}%
+ \getvalue{\@@tblprefix\c!x\v!oddeven{#2}}%
+ \getvalue{\@@tblprefix\c!x\v!oddeven{#2}\c!y\v!oddeven{#1}}%
+ \ifnum#1=\plusone
+ \getvalue{\@@tblprefix\c!y\v!first}%
+ \executeifdefined{\@@tblprefix\c!x#2\c!y\v!first}\donothing
+ \fi
+ \ifnum#2=\plusone
+ \getvalue{\@@tblprefix\c!x\v!first}%
+ \executeifdefined{\@@tblprefix\c!x\v!first\c!y#1}\donothing
+ \fi
+ \ifnum#1=\maximumrow\relax
+ \getvalue{\@@tblprefix\c!y\v!last}%
+ \executeifdefined{\@@tblprefix\c!x#2\c!y\v!last}\donothing
+ \fi
+ \ifnum#2=\maximumcol\relax
+ \getvalue{\@@tblprefix\c!x\v!last}%
+ \executeifdefined{\@@tblprefix\c!x\v!last\c!y#1}\donothing
+ \fi
+ \ifnum#1=\maximumrow\relax\ifnum#2=\maximumcol\relax
+ \getvalue{\@@tblprefix\c!x\v!last\c!y\v!last}%
+ \fi\fi
+ \ifnum#1=\plusone \ifnum#2=\plusone
+ \getvalue{\@@tblprefix\c!x\v!first\c!y\v!first}%
+ \fi\fi
+ \ifnum#1>\noftblhdnxlines\else
+ \executeifdefined{\@@tblprefix\v!header\v!each}\donothing
+ \executeifdefined{\@@tblprefix\v!header#2}\donothing
+ \fi
+ \executeifdefined{\@@tblprefix\c!y#1}\donothing
+\getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo
+ \executeifdefined{\@@tblprefix\c!x#2}\donothing
+\getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax % new, see x-fo
+ \executeifdefined{\@@tblprefix\c!x#2\c!y#1}\donothing
+ \global\letcscsname\@@tblsplitafter\csname\@@tbl\@@tbl\c!after\endcsname
+ \relax}
+
+\globallet\@@tblsplitafter\relax
+
+% split + page:
+%
+% \bTABLE[split=yes]
+% \bTR \bTD left \eTD\bTD right \eTD\eTR
+% \bTR[after=\page] \bTD left \eTD\bTD right \eTD\eTR
+% \bTR \bTD left \eTD\bTD right \eTD\eTR
+% \eTABLE
+
+% \long\def\parseTR[#1][#2]#3\eTR% [#2] is dummy that kills spaces
+% {\def\currentcol{0}\increment\maximumrow#3}
+
+\def\parseTR[#1][#2]% [#2] is dummy that kills spaces / no #3 argument
+ {\def\currentcol{0}\increment\maximumrow
+ \let\currentcolpos\currentcol
+ \let\eTR\relax % handy in \expanded
+ \setupTABLE[\v!row][\maximumrow][#1]}
+
+% \long\def\parseTD[#1][#2]#3\eTD % [#2] is dummy that kills spaces
+% {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,#1]%
+% % goto first cell
+% \doloop
+% {\increment\currentcol
+% \doifnottbltag\maximumrow\currentcol\exitloop}%
+% % fill r*c cells and set span
+% \let\row\maximumrow
+% \let\col\currentcol
+% \dorecurse\tblny
+% {\let\col\currentcol
+% \settblcol\row\col\tblnx
+% \ifnum\tblnx>\maximumrowspan\relax
+% \let\maximumrowspan\tblnx
+% \fi
+% \dorecurse\tblnx
+% {\settbltag\row\col\tblnone
+% \increment\col}%
+% \increment\row}%
+% % check max column
+% \decrement\col
+% \ifnum\col>\maximumcol\relax
+% \let\maximumcol\col
+% \fi
+% % set values
+% \settbltag\maximumrow\currentcol\tblcell
+% \settblcol\maximumrow\currentcol\tblnx
+% \settblrow\maximumrow\currentcol\tblny
+% % save text
+% \edef\celltag{{\maximumrow}{\currentcol}}%
+% \@EA\settbltxt\@EA\maximumrow\@EA\currentcol\@EA
+% {\@EA\handleTBLcell\celltag[#1]{#3}}}
+
+\long\def\parseTD[#1][#2]#3\eTD % [#2] is dummy that kills spaces
+ {\getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,\c!n=\currentcol,#1]%
+ % goto first cell % NEW, n=cellnumber
+ \increment\currentcolpos
+ \doifvaluesomething{\@@tbl\c!n}
+ {\ifnum\getvalue{\@@tbl\c!n}=\currentcol\else
+ \scratchcounter\getvalue{\@@tbl\c!n}%
+ \advance\scratchcounter-\currentcol
+ \advance\scratchcounter\plusone
+ \expanded{\parseTD[][\c!nx=\the\scratchcounter]}\eTD
+ \getparameters[\@@tbl][\c!ny=\tblnr,\c!nx=\tblnc,nc=1,nr=1,\c!n=\currentcol,#1]%
+ \fi}%
+ \doloop
+ {\increment\currentcol
+ \doifnottbltag\maximumrow\currentcol\exitloop}%
+ % fill r*c cells and set span
+ \let\row\maximumrow
+ \let\col\currentcol
+ \dorecurse\tblny
+ {\let\col\currentcol
+ \settblcol\row\col\tblnx
+ \ifnum\tblnx>\maximumrowspan\relax
+ \let\maximumrowspan\tblnx
+ \fi
+ \dorecurse\tblnx
+ {\settbltag\row\col\tblnone
+ \increment\col}%
+ \increment\row}%
+ % check max column
+ \decrement\col
+ \ifnum\col>\maximumcol\relax
+ \let\maximumcol\col
+ \fi
+ % set values
+ \settbltag\maximumrow\currentcol\tblcell
+ \settblcol\maximumrow\currentcol\tblnx
+ \settblrow\maximumrow\currentcol\tblny
+ % save text
+ \edef\celltag{{\maximumrow}{\currentcol}}%
+ \@EA\settbltxt\@EA\maximumrow\@EA\currentcol\@EA
+ {\@EA\handleTBLcell\celltag[#1]{#3}}}
+
+\long\def\parseTH[#1]#2\eTH
+ {\parseTD[#1,\c!color=\tbltblheadcolor,\c!style=\tbltblheadstyle,\c!aligncharacter=\v!no]#2\eTD}
+
+%D new
+
+\long\def\parseTN[#1]#2\eTN
+ {\parseTD[#1]\digits#2\relax\eTD}
+
+\newtoks\TBLhead
+\newtoks\TBLnext
+\newtoks\TBLbody
+\newtoks\TBLfoot
+
+% to be done: head <raw> foot, dus state var
+
+\long\def\bTABLEhead{\dosingleempty\doTABLEhead}
+\long\def\bTABLEnext{\dosingleempty\doTABLEnext}
+\long\def\bTABLEbody{\dosingleempty\doTABLEbody}
+\long\def\bTABLEfoot{\dosingleempty\doTABLEfoot}
+
+\long\def\doTABLEhead[#1]#2\eTABLEhead{\appendtoks\doTABLEsection[#1]{#2}\to\TBLhead}
+\long\def\doTABLEnext[#1]#2\eTABLEnext{\appendtoks\doTABLEsection[#1]{#2}\to\TBLnext}
+\long\def\doTABLEbody[#1]#2\eTABLEbody{\appendtoks\doTABLEsection[#1]{#2}\to\TBLbody}
+\long\def\doTABLEfoot[#1]#2\eTABLEfoot{\appendtoks\doTABLEsection[#1]{#2}\to\TBLfoot}
+
+\long\def\doTABLEsection[#1]#2%
+ {\def\setupTBLsection{\getparameters[\@@tbl\@@tbl][#1]}%
+ #2%
+ \let\setupTBLsection\relax}
+
+\let\pushTBL\relax
+\let\popTBL \relax
+
+\chardef\TBLpass=0
+
+\def\presetallTABLEparameters% each odd|even level
+ {\executeifdefined{\@@rawtblprefix\v!start\v!each}\relax
+ \executeifdefined{\@@rawtblprefix\v!start\v!oddeven\TBLlevel}\relax
+ \executeifdefined{\@@rawtblprefix\v!start\number\TBLlevel}\relax}
+
+\def\bTABLE
+ {\dosingleempty\dobTABLE}
+
+\def\dobTABLE[#1]%
+ {\pushTBL
+ % box not here
+ \bgroup
+ \ifhmode\kern\zeropoint\fi % blocks \removeunwantedspaces: check this on icare handelingsschema
+ \resetcharacteralign % new
+ \getparameters
+ [\@@tbl\@@tbl]
+ [\c!align={\v!right,\v!broad,\v!high},#1]%
+ \hsize\tbltbltextwidth
+ \processaction
+ [\tbltblsplit]
+ [ \v!yes=>\enableTBLbreaktrue,
+ \v!repeat=>\enableTBLbreaktrue\multipleTBLheadstrue]%
+ \processaction
+ [\tbltblheader]
+ [\v!repeat=>\multipleTBLheadstrue]%
+% \ifnum\TBLlevel>\plusone
+% \vbox
+% \else\ifenableTBLbreak
+% % no \vbox
+% \else
+% \vbox
+% \fi\fi
+% \bgroup
+ \localcolortrue
+ \presetallTABLEparameters
+ \ExpandFirstAfter\processallactionsinset
+ [\tbltbloption]
+ [\v!stretch=>\autoTBLspreadtrue]%
+ \linewidth\tbltblrulethickness % needs to be frozen
+ \dontcomplain
+ \let\currentcol\!!zerocount
+ \let\maximumrowspan\!!plusone
+ \let\maximumcol\currentcol
+ \let\maximumrow\currentcol
+ \def\bTR{\dodoubleempty\parseTR}%
+ \def\bTD{\dodoubleempty\parseTD}%
+ \def\bTH{\dodoubleempty\parseTH}%
+ \def\bTN{\dodoubleempty\parseTN}}
+
+% permits \expanded{\bTD ... \eTD}
+
+\unexpanded\def\eTR{}
+\unexpanded\def\eTD{}
+\unexpanded\def\eTH{}
+\unexpanded\def\eTN{}
+
+\def\eTABLE % beware, we need to get rid of spurious spaces when in hmode
+ {% tricky and dirty order -)
+ \doifsometokselse\TBLhead
+ {\the\TBLhead
+ \edef\noftblheadlines{\number\maximumrow}%
+ \doifsometokselse\TBLnext
+ {\the\TBLnext
+ \scratchcounter\maximumrow \advance\scratchcounter-\noftblheadlines
+ \edef\noftblnextlines{\number\scratchcounter}}%
+ {\let\noftblnextlines\!!zerocount}% was 1
+ \edef\noftblhdnxlines{\number\maximumrow}}
+ {\let\noftblheadlines\!!zerocount % was 1
+ \let\noftblnextlines\!!zerocount
+ \let\noftblhdnxlines\!!zerocount}%
+ \the\TBLbody
+ \the\TBLfoot
+ \removeunwantedspaces % only if hmode
+ % finish cells
+ \dorecurse\maximumrow
+ {\let\row\recurselevel
+ \dorecurse\maximumcol
+ {\let\col\recurselevel \let\xxcol\col \let\xxrow\row
+ \doifnottbltag\row\col
+ {\let\xrow\row
+ \doloop
+ {\let\xcol\col
+ \doloop
+ {\doifelsetbltag\xrow\xcol
+ {\exitloop}
+ {\increment\xcol \relax
+ \ifnum\xcol>\maximumcol\relax \exitloop \fi}}%
+ \doifelsetbltag\xrow\xcol
+ {\exitloop}
+ {\let\xxrow\xrow \let\xxcol\xcol \increment\xrow \relax
+ \ifnum\xrow>\maximumrow \exitloop \fi}}}%
+ \ifnum\xxrow>\maximumrow\let\xxrow\maximumrow\fi
+ \ifnum\xxcol>\maximumcol\let\xxcol\maximumcol\fi
+ \decrement(\xxrow,\row)\increment\xxrow
+ \decrement(\xxcol,\col)\increment\xxcol
+ \doifnottbltag\row\col
+ {\let\xrow\row
+ \dorecurse\xxrow
+ {\let\xcol\col \settblcol\xrow\xcol\xxcol
+ \dorecurse\xxcol
+ {\settbltag\xrow\xcol\tblnone \increment\xcol}%
+ \increment\xrow}%
+ \settbltag\row\col\tblcell
+ \settblcol\row\col\xxcol
+ \settblrow\row\col\xxrow
+ \ifautoTBLemptycell
+ \edef\celltag{{\row}{\col}}%
+ \@EA\settbltxt\@EA\row\@EA\col\@EA
+ {\@EA\handleTBLcell\celltag[]{\strut}}%
+ \fi}}}%
+ % to be sure
+ \dorecurse\maximumrow
+ {\let\row\recurselevel
+ \dorecurse\maximumcol
+ {\let\col\recurselevel
+ \doiftblrow\row\col
+ {\scratchcounter\maximumrow
+ \advance\scratchcounter -\row
+ \advance\scratchcounter \plusone
+ \ifnum\gettblrow\row\col>\scratchcounter
+ \settblrow\row\col{\the\scratchcounter}%
+ \fi}%
+ \settblht\row\col\!!zeropoint
+ \settblwd\row\col\!!zeropoint
+ \doifnottblcol\row\col{\settblcol\row\col\!!zerocount}%
+ \doifnottbltag\row\col{\settbltag\row\col\tblnone}}}%
+ % check and do
+ \startTBLprocessing
+ \begTBL
+ \dorecurse\maximumrow
+ {\bTBL
+ \let\row\recurselevel
+ \dorecurse\maximumcol
+ {\let\col\recurselevel
+ \expanded{\doTBL{\row}{\col}}}%
+ \eTBL}%
+ \removeunwantedspaces % only if hmode
+ \endTBL
+ \stopTBLprocessing
+ % wrong ! ! ! better to have an auto-offset-overlay
+ % \ifnum\TBLlevel>1
+ % \vskip-\strutdp
+ % \fi
+ \egroup
+ \popTBL}
+
+\let\startTBLprocessing\relax
+\let\stopTBLprocessing \relax
+
+% \def\processTBL
+% {\begTBL
+% \dorecurse\maximumrow
+% {\bTBL
+% \let\row\recurselevel
+% \dorecurse\maximumcol
+% {\let\col\recurselevel
+% \expanded{\doTBL{\row}{\col}}}%
+% \eTBL}%
+% \removeunwantedspaces % only if hmode
+% \endTBL}
+
+\def\spanTBL#1#2%
+ {\scratchcounter\gettblcol{#1}{#2}\relax
+ \ifnum\scratchcounter>\zerocount
+ \advance\scratchcounter \minusone
+ \dorecurse\scratchcounter{\appendtoks\spantblcol\to\tbltoks}%
+ \dorecurse\scratchcounter{\appendtoks\skiptblcol\to\tbltoks}%
+ \appendtoks\nexttblcol\to\tbltoks
+ \fi}
+
+\def\bTBL{\appendtoks\begintblrow\to\tbltoks}
+\def\eTBL{\appendtoks\endtblrow \to\tbltoks}
+
+% We use aligments to handle the empty (skipped) columns, so
+% that we don't have to (re|)|calculate these.
+
+\def\skiptblcol
+ {\doglobal\increment\colTBL}
+
+\def\nexttblcol
+ {\doglobal\increment\colTBL&}
+
+\def\spantblcol
+ {\span}
+
+\def\begintblrow
+ {\noalign
+ {\doglobal\increment\rowTBL
+ \doglobal\newcounter\colTBL}%
+ \nexttblcol}
+
+\def\endtblrow
+ {\crcr
+ \noalign
+ {\nointerlineskip
+ \allowbreak
+ \bgroup % protect local vars
+ \@@tblsplitafter
+ \egroup
+ \bgroup % protect local vars
+ \increment\rowTBL\relax
+ \ifnum\rowTBL>\noftblhdnxlines\relax
+ \ifnum\rowTBL<\maximumrow\relax
+ \doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}%
+ \fi
+ \fi
+ \egroup}}
+
+%\def\begintbl
+% {\doglobal\newcounter\colTBL
+% \doglobal\newcounter\rowTBL
+% \doglobal\decrement\rowTBL
+% \tabskip\zeropoint
+% \halign\bgroup\ignorespaces##\unskip&&\ignorespaces##\unskip\cr}
+
+\def\begintbl
+ {\doglobal\newcounter\colTBL
+ \doglobal\newcounter\rowTBL
+ \doglobal\decrement\rowTBL
+ \tabskip\zeropoint
+ \halign\bgroup
+ \registerparoptions % new
+ \ignorespaces##\unskip&&\ignorespaces##\unskip\cr}
+
+\def\endtbl
+ {\egroup}
+
+\setvalue{\tblnone TBL}#1#2%
+ {\spanTBL{#1}{#2}}
+
+\setvalue{\tblcell TBL}#1#2%
+ {\appendtoks
+ \makeTBL{#1}{#2}% % append nog isoleren
+ \to\tbltoks
+ \spanTBL{#1}{#2}}
+
+\def\doTBL#1#2%
+ {\getvalue{\gettbltag{#1}{#2}TBL}{#1}{#2}}
+
+\def\begTBL
+ {\doglobal\newcounter\rowTBL
+ \doglobal\newcounter\colTBL
+ \chardef\TBLpass\zerocount
+ \tbltoks\emptytoks
+ \appendtoks
+ \begintbl
+ \to\tbltoks}
+
+\def\endTBL
+ {\appendtoks
+ \endtbl
+ \to\tbltoks
+ \setbox\scratchbox\hbox
+ {\localframed
+ [\@@tbl\@@tbl]
+ [\c!frame=\v!off,\c!background=,\c!align=\v!no]
+ {\strut}}%
+ \edef\minimalcellheight{\the\ht\scratchbox}%
+ \dorecurse\maximumcol
+ {\settblaut\recurselevel\!!zeropoint % \zeropoint etc
+ % new
+ \let\xcol\recurselevel
+ \dorecurse\maximumrow
+ {\settblwd \recurselevel\xcol\!!zeropoint
+ \settblht \recurselevel\xcol\!!zeropoint}%
+ % till here
+ \settblwid\recurselevel\!!zeropoint}%
+ \dorecurse\maximumrow
+ {\settblhei\recurselevel\maxdimen}%
+ \chardef\TBLpass\plusone
+ \let\handleTBLcell\dohandleTBLcellA
+ \def\makeTBL##1##2%
+ {\gettbltxt{##1}{##2}}%
+ \def\inTBLcell##1##2%
+ {\ExpandBothAfter\doifinsetelse\localwidth{\v!fit,\v!broad} % user set
+ {}
+ {\scratchdimen\gettblaut\colTBL\relax
+ \ifdim\localwidth>\scratchdimen
+ \settblaut\colTBL\localwidth
+ \fi}}%
+ \setbox0\vbox{\trialtypesettingtrue \the\tbltoks}%
+ \ifautoTBLspread
+ % experimental, stretch non fixed cells to \hsize
+ \checktblwidthsone % trial run
+ \checktblwidthstwo % real run
+ \stretchtblwidths
+ \let\handleTBLcell\dohandleTBLcellB
+ \setbox\scratchbox\vbox{\trialtypesettingtrue \the\tbltoks}%
+ \else\ifdim\wd0>\hsize
+ \ifautoTBLhsize
+ \checktblwidthsone % trial run
+ \checktblwidthstwo % real run
+ \let\handleTBLcell\dohandleTBLcellB
+ \setbox\scratchbox\vbox{\trialtypesettingtrue \the\tbltoks}%
+ \fi
+ \else\ifautoTBLrowspan\ifnum\maximumrowspan>1 % max ?
+ % added jan 2002 because nx=* did no longer work
+ \checktblwidthsone % trial run
+ \checktblwidthstwo % real run
+ %
+ \let\handleTBLcell\dohandleTBLcellC
+ \setbox\scratchbox\vbox{\trialtypesettingtrue \the\tbltoks}%
+ \fi\fi\fi\fi
+ \let\handleTBLcell\dohandleTBLcellD
+ \chardef\TBLpass\plustwo
+ \def\makeTBL##1##2% meer in cellD
+ {\dimen2\zeropoint
+ \globalpushmacro\colTBL
+ \dorecurse{\gettblcol{##1}{##2}}
+ {\advance\dimen2 \gettblwid\colTBL
+ \increment\colTBL}%
+ \edef\widthTBL{\the\dimen2}%
+ \globalpopmacro\colTBL
+ \setbox\scratchbox\hbox{\gettbltxt{##1}{##2}}%
+ \settblht{##1}{##2}{\the\ht\scratchbox}%
+ \settblwd{##1}{##2}{\the\wd\scratchbox}%
+ \ifdim\ht\scratchbox>\gettblhei{##1}\relax
+ \settblhei{##1}{\the\ht\scratchbox}%
+ \fi}%
+ \setbox\scratchbox\vbox{\trialtypesettingtrue \the\tbltoks}%
+ \checktblheightsone
+ \checktblheightstwo
+ \let\handleTBLcell\dohandleTBLcellE
+ \chardef\TBLpass\plusthree
+ \def\makeTBL##1##2%
+ {% height
+ \globalpushmacro\rowTBL
+ \scratchdimen\zeropoint
+ \def\rowTBL{##1}%
+ \ifnum\gettblcol{##1}{##2}=\maximumcol\relax
+ % case: nc=maxcolumns
+ \else
+ \dorecurse{\gettblrow{##1}{##2}}
+ {\advance\scratchdimen \gettblhei\rowTBL
+ \increment\rowTBL}%
+ \ifdim\scratchdimen<\gettblht{##1}{##2}\relax
+ \scratchdimen\gettblht{##1}{##2}\relax
+ \fi
+ \fi
+ \edef\heightTBL{\the\scratchdimen}%
+ \globalpopmacro\rowTBL
+ % width
+ \globalpushmacro\colTBL
+ \scratchdimen\zeropoint
+ \dorecurse{\gettblcol{##1}{##2}}
+ {\advance\scratchdimen \gettblwid\colTBL
+ \increment\colTBL}%
+ \edef\widthTBL{\the\scratchdimen}%
+ \globalpopmacro\colTBL
+ % cell
+ \setbox\scratchbox\hbox{\gettbltxt{##1}{##2}}%
+ \ifnum\gettblcol{##1}{##2}=\maximumcol\relax
+ % case: nc=maxcolumns
+ \else
+ \scratchdimen\gettblhei{##1}%
+ \setbox\scratchbox\hbox
+ {\lower\ht\scratchbox\hbox{\raise\scratchdimen\box\scratchbox}}%
+ \ht\scratchbox\scratchdimen
+ \fi
+ \dp\scratchbox\zeropoint
+ \box\scratchbox}%
+ \iftraceTABLE\showtbltoks\fi
+ \ifnum\TBLlevel>\plusone
+ \@EA\notsplittblbox
+ \else\ifenableTBLbreak
+ \@EAEAEA\splittblbox
+ \else
+ \@EAEAEA\notsplittblbox
+ \fi\fi{\the\tbltoks}}
+
+\def\stretchtblwidths
+ {\!!dimend\zeropoint
+ \dorecurse\maximumcol
+ {\advance\!!dimend\gettblwid\recurselevel}%
+ % distribute width (stretch)
+ \ifdim\!!dimend<\hsize
+ \advance\!!dimend-\hsize
+ \!!dimend-\!!dimend
+ \divide\!!dimend\maximumcol
+ \dorecurse\maximumcol
+ {\scratchdimen\gettblwid\recurselevel
+ \advance\scratchdimen\!!dimend
+ \settblwid\recurselevel{\the\scratchdimen}}%
+ \fi}
+
+\newbox\finaltblbox
+
+\def\notsplittblbox#1%
+ {\setbox\finaltblbox\vbox{#1}%
+ \postprocessTABLEbox\finaltblbox
+ \beforeTABLEbox
+ \box\finaltblbox
+ \afterTABLEbox}
+
+\def\splittblbox#1%
+ {\ifinsidefloat
+ \notsplittblbox{#1}%
+ \else
+ \executeifdefined{splittblbox\tbltblsplitmethod}\splittblboxa{#1}%
+ \fi}
+
+\newbox\TABLEsplitbox % public, don't change
+
+% todo: mode: first|next (of niets)
+
+\def\splittblboxa#1% spacing between rows gets lost in split
+ {\setbox\TABLEsplitbox\vbox{#1}%
+ \setbox8\vbox{\doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}}%
+ \ifmultipleTBLheads
+ \setbox2\vbox{}%
+ \setbox4\vbox{}%
+ \dorecurse\noftblheadlines
+ {\setbox0\vsplit\TABLEsplitbox to \lineheight
+ \setbox2\vbox{\unvcopy2\unvcopy0}}%
+ \dorecurse\noftblnextlines
+ {\setbox0\vsplit\TABLEsplitbox to \lineheight
+ \setbox4\vbox{\unvcopy4\unvcopy0}}%
+ \ifcase\noftblheadlines\else
+ \ifdim\pagegoal<\maxdimen
+ \dimen0\ht2
+ \advance\dimen0\ht8
+ \advance\dimen0\pagetotal\relax
+ \ifdim\dimen0>\pagegoal
+ \bgroup\page\egroup % make sure that local vars are kept
+ \fi
+ \fi
+ \unvcopy2
+ \ifcase\noftblnextlines\else
+ \setbox2\box4
+ \fi
+ \fi
+ \fi
+ \donefalse
+ \!!doneafalse
+ \doloop
+ {\setbox0\vsplit\TABLEsplitbox to \lineheight
+ \if!!donea
+ \ifdim\pagegoal<\maxdimen
+ \setbox0\vbox{\unvbox0}%
+ \ifdim\ht0>\zeropoint
+ \dimen0\ht0
+ \advance\dimen0\ht8
+ \advance\dimen0\pagetotal\relax
+ \ifdim\dimen0>\pagegoal
+ \bgroup\page\egroup % make sure that local vars are kept
+ \ifmultipleTBLheads
+ \ifcase\noftblheadlines\else\unvcopy2\fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \!!doneatrue
+ \ifdone
+ \doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}%
+ \fi
+ \unvbox0
+ %\allowbreak
+ \bgroup
+ % todo: what if tblnextlines ?
+ \scratchcounter\recurselevel
+ \ifmultipleTBLheads
+ \advance\scratchcounter\noftblheadlines
+ \fi
+ \setupTBLcell{\number\scratchcounter}1
+ \ifx\@@tblsplitafter\relax
+ \allowbreak
+ \else
+ \doifelsenothing\@@tblsplitafter
+ \allowbreak
+ {\scratchcounter\realpageno
+ \@@tblsplitafter
+ \ifmultipleTBLheads
+ \ifnum\scratchcounter<\realpageno
+ \ifcase\noftblheadlines\else\unvcopy2\fi
+ \fi
+ \fi}%
+ \fi
+ \egroup
+ \ifvoid\TABLEsplitbox \exitloop \else \donetrue \fi}}
+
+\let\extratblsplitheight\zeropoint % additional space taken by before/afterTABLEsplitbox
+
+% \def\splittblboxb#1%
+% {\testpage[2]% quite save since a row is > 1 lineheight and we don't want one-liners
+% \setbox\TABLEsplitbox\vbox{#1}%
+% \setbox8\vbox{\doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}}%
+% \ifmultipleTBLheads
+% \setbox2\vbox{}%
+% \setbox4\vbox{}%
+% \dorecurse\noftblheadlines
+% {\setbox0\vsplit\TABLEsplitbox to \lineheight
+% \setbox2\vbox{\unvcopy2\unvcopy0}}%
+% \dorecurse\noftblnextlines
+% {\setbox0\vsplit\TABLEsplitbox to \lineheight
+% \setbox4\vbox{\unvcopy4\unvcopy0}}%
+% \fi
+% \!!doneafalse
+% \doloop
+% {\ifdim\pagegoal<\maxdimen
+% \scratchdimen\pagegoal
+% \advance\scratchdimen-\pagetotal
+% \else
+% \scratchdimen\textheight
+% \fi
+% \ifmultipleTBLheads
+% \ifcase\noftblheadlines\else
+% \advance\scratchdimen-\ht2
+% \fi
+% \fi
+% \advance\scratchdimen-\ht8
+% \getnoflines\scratchdimen
+% \ifdim\noflines\lineheight>\scratchdimen
+% \advance\scratchdimen-\lineheight
+% \fi
+% \advance\scratchdimen-\extratblsplitheight
+% \setbox\finaltblbox\vbox
+% {\ifmultipleTBLheads
+% \ifcase\noftblheadlines\else
+% \unvcopy2
+% \doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}%
+% \fi
+% \fi
+% \setbox0\vsplit\TABLEsplitbox to\scratchdimen
+% \unvbox0}%
+% \if!!donea\else\ifcase\noftblnextlines\else
+% \setbox2\box4
+% \fi\fi
+% \!!doneatrue
+% \postprocessTABLEsplitbox\finaltblbox
+% \ifvoid\TABLEsplitbox
+% \beforeTABLEsplitbox
+% \box\finaltblbox
+% \afterTABLEsplitbox
+% \@@tblsplitafter
+% \exitloop
+% \else
+% % hack
+% \scratchdimen\pagegoal
+% \ifdim\scratchdimen<\maxdimen
+% \advance\scratchdimen \lineheight
+% \global\pagegoal\scratchdimen
+% \fi
+% % brrr
+% \beforeTABLEsplitbox
+% \box\finaltblbox
+% \afterTABLEsplitbox
+% \@@tblsplitafter
+% \page
+% \fi}}
+
+\def\splittblboxb#1%
+ {\scratchdimen-\extratblsplitheight
+ \advance\scratchdimen-\tbltblsplitoffset
+ \expanded{\testpage[2][\the\scratchdimen]}% quite save since a row is > 1 lineheight and we don't want one-liners
+ \setbox\TABLEsplitbox\vbox{#1}%
+ \setbox8\vbox{\doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}}%
+ \dimen8\ht8\advance\dimen8\dp8
+ \ifmultipleTBLheads
+ \setbox2\vbox{}%
+ \setbox4\vbox{}%
+ \dorecurse\noftblheadlines
+ {\setbox0\vsplit\TABLEsplitbox to \lineheight
+ \setbox2\vbox{\unvcopy2\unvcopy0}}%
+ \dorecurse\noftblnextlines
+ {\setbox0\vsplit\TABLEsplitbox to \lineheight
+ \setbox4\vbox{\unvcopy4\unvcopy0}}%
+ \fi
+ \!!doneafalse
+ \doloop
+ {\ifdim\pagegoal<\maxdimen
+ \scratchdimen\pagegoal
+ \advance\scratchdimen-\pagetotal
+ \!!donecfalse
+ \else
+ \scratchdimen\textheight
+ \!!donectrue
+ \fi
+ \advance\scratchdimen-\dimen8
+ \advance\scratchdimen-\extratblsplitheight
+ \advance\scratchdimen-\tbltblsplitoffset
+ \setbox\finaltblbox\vbox
+ {\ifmultipleTBLheads
+ \ifcase\noftblheadlines\else
+ \unvcopy2 \doifsomething\tbltblspaceinbetween{\blank[\tbltblspaceinbetween]}%
+ \fi
+ \fi}%
+ \if!!donea\else\ifcase\noftblnextlines\else
+ \setbox2\box4
+ \fi\fi
+ \!!doneatrue
+ % alternatively we could use a kind of balancing like splitter
+ % first to scratchdimen and then smaller etc; more code and copy -)
+ \!!counta\zerocount
+ \doloop
+ {\setbox\scratchbox\vsplit\TABLEsplitbox to \onepoint
+ \setbox\scratchbox\vbox{\unvbox\scratchbox}%
+ \bgroup
+ \advance\scratchdimen-\ht\scratchbox
+ \advance\scratchdimen-\dp\scratchbox
+ \advance\scratchdimen-\ht\finaltblbox
+ \advance\scratchdimen-\dp\finaltblbox\relax
+ \ifdim\scratchdimen>\zeropoint
+ \egroup
+ \setbox\finaltblbox\vbox
+ {\unvbox\finaltblbox
+ \unvbox\scratchbox}%
+ \ifvoid\TABLEsplitbox \exitloop \fi
+ \else\if!!donec
+ % we have text height available, but the (one) cell is too
+ % large to fit, so, in order to avoid loops/deadcycles we do:
+ \egroup
+ \setbox\finaltblbox\vbox
+ {\unvbox\finaltblbox
+ \unvbox\scratchbox}%
+ \exitloop
+ \else
+ \egroup
+ \setbox\TABLEsplitbox\vbox
+ {\unvbox\scratchbox
+ \ifvoid\TABLEsplitbox\else\unvbox\TABLEsplitbox\allowbreak\fi}%
+ \exitloop
+ \fi\fi}%
+ %
+ \postprocessTABLEsplitbox\finaltblbox
+ \ifvoid\TABLEsplitbox
+ \beforeTABLEsplitbox
+ \box\finaltblbox
+ \afterTABLEsplitbox
+ \@@tblsplitafter
+ \exitloop
+ \else
+ % hack
+ \ifdim\pagegoal<\maxdimen
+ \scratchdimen\pagegoal
+ \advance\scratchdimen \lineheight
+ \global\pagegoal\scratchdimen
+ \fi
+ % brrr
+ \ifdim\ht\finaltblbox>\zeropoint
+ \beforeTABLEsplitbox
+ \box\finaltblbox
+ \afterTABLEsplitbox
+ \@@tblsplitafter
+ \fi
+ \pagina
+ \fi}}
+
+% ! ! ! ! TODO: naast \postprocessTABLEsplitbox ook evt \postprocessTABLEbox voor niet split
+
+\let\postprocessTABLEsplitbox\gobbleoneargument
+\let\postprocessTABLEbox \gobbleoneargument
+
+\let\beforeTABLEsplitbox\relax
+\let\afterTABLEsplitbox \relax
+\let\beforeTABLEbox \relax
+\let\afterTABLEbox \relax
+
+\def\checktblwidthsone{\dochecktblwidths0} % 0 = trial run
+\def\checktblwidthstwo{\dochecktblwidths1} % 1 = real run
+
+\def\dochecktblwidths#1%
+ {\iftraceTABLE\showtblwids{B#1}\fi
+ \!!dimena\hsize
+ \!!counta\zerocount
+ \dorecurse\maximumcol
+ {\scratchdimen\gettblaut\recurselevel\relax
+ \ifdim\scratchdimen>\zeropoint\relax
+ \advance\!!dimena -\scratchdimen
+ \else
+ \scratchdimen\gettblwid\recurselevel\relax
+ \ifdim\scratchdimen>\tbltblmaxwidth\relax
+ \ifcase#1\else\settblwid\recurselevel\!!zeropoint\fi
+ \advance\!!counta \plusone
+ \else
+ \ifdim\scratchdimen>\zeropoint\relax
+ \advance\!!dimena -\scratchdimen
+ \else
+ % eigenlijk moet dit alleen als de kolom wordt overspannen door een
+ % vorige, maw extra dubbele loop en status var
+ \advance\!!counta \plusone
+ \fi
+ \fi
+ \fi}%
+ \ifcase\!!counta \else \divide\!!dimena \!!counta \fi
+ \dorecurse\maximumcol
+ {\scratchdimen\gettblwid\recurselevel\relax
+ \ifcase#1\relax
+ \ifdim\scratchdimen<\!!dimena % take natural width
+ \settblaut\recurselevel{\the\scratchdimen}%
+ \fi
+ \else
+ \ifdim\scratchdimen=\zeropoint % auto set width
+ \settblwid\recurselevel{\the\!!dimena}%
+ \fi
+ \fi}%
+ \iftraceTABLE\showtblwids{E#1}\fi}
+
+\def\checktblheightsone
+ {\dorecurse\maximumrow
+ {\let\xrowTBL\recurselevel
+ \dorecurse\maximumcol
+ {\let\xcolTBL\recurselevel
+ \!!countb=0\gettblrow\xrowTBL\xcolTBL\relax
+ % check row span
+ \ifnum\!!countb>1
+ % current height in row
+ \dimen0=\gettblht\xrowTBL\xcolTBL
+ % find nearest height in row
+ \dimen2=\zeropoint
+ \dorecurse\maximumcol
+ {\ifnum\recurselevel=\xcolTBL\else
+ \!!countc=0\gettblrow\xrowTBL\recurselevel\relax
+ \ifnum\!!countc=\plusone
+ \dimen4=\gettblht\xrowTBL\recurselevel\relax
+ \ifdim\dimen2<\dimen4
+ \dimen2=\dimen4
+ \fi
+ \fi
+ \fi}%
+ \let\xxrowTBL\xrowTBL
+ % calculate cummulative height
+ \dimen4=\dimen2
+ \dorecurse\!!countb
+ {\ifnum\xxrowTBL=\xrowTBL\else
+ \advance\dimen4 \gettblhei\xxrowTBL
+ \fi
+ \increment\xxrowTBL}%
+ % distribute overshoot equally
+ \ifdim\dimen4<\dimen0
+ \advance\dimen0 -\dimen4
+ \divide\dimen0 \!!countb
+ \let\xxrowTBL\xrowTBL
+ \settblhei\xrowTBL{\the\dimen2}%
+ \dorecurse\!!countb
+ {\dorecurse\maximumcol
+ {\ifnum\recurselevel=\xcolTBL\else
+ \scratchdimen\gettblht\xxrowTBL\recurselevel
+ \advance\scratchdimen \dimen0
+ \settblht\xxrowTBL\recurselevel{\the\scratchdimen}%
+ \ifdim\gettblhei\xxrowTBL<\scratchdimen
+ \settblhei\xxrowTBL{\the\scratchdimen}%
+ \fi
+ \fi}%
+ \increment\xxrowTBL}%
+ \else\ifdim\dimen4>\dimen0
+ \settblhei\xrowTBL{\the\dimen2}%
+ \fi\fi
+ \fi}}}
+
+\def\checktblheightstwo
+ {}
+
+\def\showtblwids#1%
+ {\vbox
+ {\forgetall\tttf[#1]\dorecurse\maximumcol
+ {\scratchdimen\gettblwid\recurselevel
+ [\recurselevel:\the\scratchdimen]}}}
+
+\def\showtbltoks
+ {\vbox
+ {\forgetall\tttf
+ \let\begintbl \relax \let\endtbl \relax
+ \let\begintblrow\par \let\endtblrow \par
+ \def\nexttblcol {[next]}\def\spantblcol{[span]}
+ \def\makeTBL##1##2{[##1,##2]}
+ \the\tbltoks}}
+
+\def\TBLcharalign
+ {\doifelse\tbltblaligncharacter\v!yes
+ \doTBLcharalign\gobbleoneargument}
+
+\long\def\doTBLcharalign#1#2% column data
+ {\edef\alignmentclass{#1}%
+ \edef\alignmentcharacter{\tbltblalignmentcharacter}%
+ \ifcase\TBLpass\or
+ \setfirstpasscharacteralign\checkalignment{#2}% {\strut#2\unskip}%
+ \fi % force hsize, so always a second
+ \setsecondpasscharacteralign \checkalignment{#2}% {\strut#2\unskip}%
+ \ignorespaces}
+
+% new, needed for icare first col of 'doeltabel', experimental
+
+\long\def\dohandleTBLcellA#1#2[#3]#4%
+ {\setbox\scratchbox\hbox
+ {\setupTBLcell{#1}{#2}%
+ \localframed
+ [\@@tbl\@@tbl]
+ [#3,\c!background=,\c!frame=\v!off]% 25% faster
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL\inTBLcell{#1}{#2}}}%
+ \scratchdimen\gettblwid\colTBL\relax
+ \ifdim\wd\scratchbox>\scratchdimen
+ \ifsqueezeTBLspan
+ \ifnum0\number\gettblcol{#1}{#2}>1\relax \settblspn\colTBL \fi
+ \fi
+ \doifelsetblspn\colTBL
+ \donothing{\settblwid\colTBL{\the\wd\scratchbox}}% auto set
+ \fi
+ \let\rowTBLx\rowTBL\increment\rowTBLx
+ \scratchdimen\gettblhei\rowTBLx\relax
+ \ifdim\ht\scratchbox<\scratchdimen
+ \settblhei\rowTBLx{\the\ht\scratchbox}% auto set
+ \fi
+ \settblht{#1}{#2}{\the\ht\scratchbox}%
+ \settblwd{#1}{#2}{\the\wd\scratchbox}%
+ \ifautoTBLcheckwidth
+ \ifdim\wd\scratchbox<.75\hsize
+ \ifdim\ht\scratchbox>2\openlineheight % honor width since this can be a
+ \scratchdimen\gettblaut\colTBL\relax % figure or so
+ \ifdim\scratchdimen=\zeropoint
+ % side effect: when width is set to 0pt,
+ % we can force a span that fits the sum of spans widths
+ \settblaut\colTBL{\the\scratchdimen}%
+ \else\ifdim\wd\scratchbox>\scratchdimen
+ % unless span
+ \settblaut\colTBL{\the\wd\scratchbox}%
+ % to be translated
+ \writestatus\m!TABLE{no auto width in (\number#1,\number#2)\space\the\wd\scratchbox/\the\hsize}%
+ \fi\fi
+ \fi
+ \fi
+ \fi
+ \setbox2\null
+ \wd2\wd\scratchbox \ht2\ht\scratchbox \dp2\dp\scratchbox
+ \box2}
+
+\long\def\dohandleTBLcellBC#1#2#3[#4]#5%
+ {\setbox\scratchbox\hbox
+ {\setupTBLcell{#2}{#3}%
+ \localframed
+ [\@@tbl\@@tbl]
+ [#4,#1,\c!frame=\v!off,\c!background=]
+ {\bTBLCELL#5\eTBLCELL}}%
+ \setbox2\null
+ \wd2\wd\scratchbox \ht2\ht\scratchbox \dp2\dp\scratchbox
+ \ifautoTBLrowspan
+ \let\rowTBLx\rowTBL\increment\rowTBLx
+ \scratchdimen\gettblhei\rowTBLx\relax
+ \ifnum\gettblrow\rowTBLx\colTBL>1 \ifdim\ht\scratchbox>\scratchdimen
+ \scratchdimen-\scratchdimen \advance\scratchdimen -\ht\scratchbox
+ \ht2\scratchdimen
+ \fi \fi
+ \fi
+ \box2 }
+
+\long\def\dohandleTBLcellB#1#2[#3]#4%
+ {\scratchdimen\gettblaut\colTBL\relax
+ \ifdim\scratchdimen>\zeropoint\relax
+ \let\tblwidthkey\c!width \edef\tblwidth{\the\scratchdimen}%
+ \else
+ \scratchdimen\gettblwid\colTBL\relax
+ \ifdim\scratchdimen>\zeropoint\relax
+ \ifnum\gettblcol{#1}{#2}=\maximumcol\relax
+ \scratchdimen\hsize
+ \fi
+ \let\tblwidthkey\c!width \edef\tblwidth{\the\scratchdimen}%
+ \else
+ \let\tblwidthkey\s!unknown \let \tblwidth \!!zeropoint
+ \fi
+ \fi
+ \dohandleTBLcellBC{\tblwidthkey=\tblwidth}{#1}{#2}[#3]{\TBLcharalign{#2}{#4}}}
+
+\long\def\dohandleTBLcellC
+ {\dohandleTBLcellBC{}}
+
+\long\def\dohandleTBLcellD#1#2[#3]#4%
+ {\setupTBLcell{#1}{#2}%
+ \bgroup
+ \localframed
+ [\@@tbl\@@tbl]
+ [#3,\c!width=\widthTBL,\c!background=,\c!frame=\v!off]% 25% faster
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}%
+ \egroup}
+
+\long\def\dohandleTBLcellE#1#2[#3]#4%
+ {\setupTBLcell{#1}{#2}%
+ \getparameters[\@@tbl\@@tbl][#3]% to get the color right, the way we
+ \color % handle color here prevents interference due to whatsit nodes
+ [\tbltblcolor] % as well as permits local colors to take precedence
+ {\ifdim\heightTBL=\zeropoint\relax % case: nc=maxcolumns
+ \localframed
+ [\@@tbl\@@tbl]
+ [\c!color=,\c!width=\widthTBL]
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}%
+ \else
+ \localframed
+ [\@@tbl\@@tbl]
+ [\c!color=,\c!width=\widthTBL,\c!height=\heightTBL]
+ {\bTBLCELL\TBLcharalign{#2}{#4}\eTBLCELL}%
+ \fi}}
+
+\setupTABLE
+ [\c!frameoffset=.5\linewidth,
+ \c!backgroundoffset=\v!frame,
+ \c!framecolor=\s!black,
+ \c!color=,
+ \c!style=,
+ \c!headstyle=\v!bold,
+ \c!headcolor=,
+ \c!strut=\v!no,
+ \c!aligncharacter=\v!no,
+ \c!alignmentcharacter={,},
+ \c!option=, % \v!stretch
+ \c!header=,
+ \c!spaceinbetween=,
+ \c!maxwidth=8em,
+ \c!textwidth=\hsize,
+ \c!split=\v!no,
+ \c!splitoffset=0pt,
+ \c!splitmethod=a]
+
+%D We have already prepared the previous macros for nesting,
+%D so we only have to pop in the right ones:
+
+%D Redefined:
+
+\newcounter\TBLlevel
+
+\def\@@tblprefix{\@@tbl:\ifnum\TBLlevel>1 :\TBLlevel:\fi}
+
+\long\def\settbltxt#1#2#3%
+ {\setxvalue{\@@tblprefix#1:#2:l}{\TBLlevel}%
+ \long\setvalue{\@@tblprefix#1:#2:t}%
+ {\doifdefined{\@@tblprefix#1:#2:l}
+ {\edef\TBLlevel{\getvalue{\@@tblprefix#1:#2:l}}}%
+ #3}}
+
+\def\gettbltxt#1#2%
+ {\getvalue{\@@tblprefix#1:#2:t}}
+
+%D New:
+
+\def\pushTBLparameters
+ {\globalpushmacro\TBLlevel
+ \ifcase\TBLpass
+ % we're just after \bTABLE
+ \else\ifnum\TBLlevel>\zerocount
+ \doglobal\increment\TBLlevel\relax
+ \fi\fi}
+
+\def\popTBLparameters
+ {\globalpopmacro\TBLlevel}
+
+\def\pushTBL
+ {\ifnum\TBLlevel=\zerocount
+ \doglobal\increment\currenttbl\relax
+ \fi
+ \doglobal\increment\TBLlevel\relax
+ \ifnum\TBLlevel>\plusone
+ \resetallTABLEparameters
+ \globalpushmacro\colTBL
+ \globalpushmacro\rowTBL
+ \else
+ \global\intabletrue
+ \fi}
+
+\def\popTBL
+ {\ifnum\TBLlevel>\plusone
+ \globalpopmacro\rowTBL
+ \globalpopmacro\colTBL
+ \else
+ \global\intablefalse
+ \fi
+ \doglobal\decrement\TBLlevel\relax}
+
+\newconditional\resetTABLEmode \settrue\resetTABLEmode
+
+\def\resetallTABLEparameters% moet genest wel werken
+ {\ifnum\TBLlevel>\plusone % in ieder geval
+ \ifconditional\resetTABLEmode
+ \presetlocalframed % breedte hoogte diepte offset
+ [\@@tbl\@@tbl]% % achtergrond, achtergrondraster, achtergrondkleur
+ % not ok yet
+ \setupTABLE
+ [\c!frameoffset=.5\linewidth,
+ \c!backgroundoffset=\v!frame,
+ \c!framecolor=\s!black,
+ \c!color=,
+ \c!style=,
+ \c!headstyle=,
+ \c!headcolor=,
+ \c!strut=\v!no,
+ \c!aligncharacter=\v!no,
+ \c!alignmentcharacter={,},
+ \c!maxwidth=8em]%
+ \else
+ \setupTABLE
+ [\c!width=\v!fit,
+ \c!height=\v!fit]%
+ \fi
+ \fi}
+
+%D Spacing:
+%
+% \starttabulate
+% \NC text \NC text \NC \NR
+% \TB[small]
+% \NC text \NC text \NC \NR
+% \TB[4*big]
+% \NC text \NC text \NC \NR
+% \stoptabulate
+%
+% \starttable[|||]
+% \VL text \VL text \VL \AR
+% \TB[small]
+% \VL text \VL text \VL \AR
+% \TB[4*big]
+% \VL text \VL text \VL \AR
+% \stoptable
+
+\def\complexTableTB[#1]{\TABLEnoalign{\blank[#1]}}
+\def\simpleTableTB {\TABLEnoalign{\blank}}
+
+\def\TabulateTB
+ {\complexorsimpleTable{TB}}
+
+\def\doTableinterline% #1
+ {\ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \chuckTABLEautorow
+ \else\ifnum\currentTABLEcolumn=\zerocount
+ \TABLEnoalign
+ {\globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow}%
+ \else
+ \setTABLEerror\TABLEmissingcolumn
+ \handleTABLEerror
+ \fi\fi
+ \complexorsimpleTable} % {#1}
+
+\def\TableHL{\doTableinterline{HL}}
+\def\TableTB{\doTableinterline{TB}}
+
+\appendtoks\let\TB\TableTB \to\everytable
+\appendtoks\let\TB\TabulateTB\to\everytabulate
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-num.tex b/Master/texmf-dist/tex/context/base/core-num.tex
new file mode 100644
index 00000000000..1054c4e1907
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-num.tex
@@ -0,0 +1,150 @@
+%D \module
+%D [ file=core-num,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Numbering,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Numbering}
+
+\unprotect
+
+% Commando's ten behoeve van nummeren:
+%
+% \definenumber[name]
+% \setupnumber[name][wijze=,blok=,tekst=,plaats=,conversie=,start=]
+% \setnumber[name]{value}
+% \resetnumber[name]
+% \incrementnumber[name]
+% \decrementnumber[name]
+% \convertednumber[name] % getnumber
+% \savenumber[name]
+% \restorenumber[name]
+% \convertednumner[name]
+% \rawnumber[name]
+
+% private (defined in core-sec.tex)
+%
+% \nextnumber[name][tag][reference]
+% \currentnumber[name]
+
+\def\@@thenumber#1{\s!number\csname\s!number#1\c!number\endcsname}
+
+% this will be the new (public) one: \let\numberparameterprefix\@@thenumber
+
+\def\numberparameter#1#2{\csname\@@thenumber{#1}#2\endcsname} % sort of public
+
+\def\dosetupnumber[#1][#2]%
+ {\@EA\let\@EA\savedstartnumber\csname\@@thenumber{#1}\c!start\endcsname
+ \getparameters[\@@thenumber{#1}][\c!start=,#2]%
+ \doifelsenothing{\numberparameter{#1}\c!start}
+ {\letvalue{\@@thenumber{#1}\c!start}\savedstartnumber}
+ {\setcounter{\@@thenumber{#1}}{\numberparameter{#1}\c!start}}}
+
+\def\setupnumber
+ {\dodoubleargument\dosetupnumber}
+
+\def\definenumber
+ {\dodoubleempty\dodefinenumber}
+
+\def\dodefinenumber[#1][#2]% ook overal class als localframed
+ {\doifassignmentelse{#2}
+ {\dododefinenumber[#1][#2]}
+ {\doifelsenothing{#2} % can break on not yet defined macros in #2
+ {\dododefinenumber[#1][#2]}
+ {\setvalue{\s!number#1\c!number}{#2}}}}
+
+\def\dododefinenumber[#1][#2]%
+ {\getparameters
+ [\s!number#1]
+ [\c!number=#1,
+ \s!check=,
+ \c!way=\@@nrway,
+ \c!way\c!local=\numberparameter{#1}\c!way,
+ \c!sectionnumber=\v!yes,
+ \c!text=, % no longer used here, will go away
+ \c!location=, % no longer used here, will go away (was ooit \c!zetwijze)
+ \c!conversion=\v!numbers,
+ \c!start=0,
+ #2]%
+ \makecounter{\@@thenumber{#1}}%
+ \setcounter{\@@thenumber{#1}}{\numberparameter{#1}\c!start}}
+
+\def\setnumber[#1]#2%
+ {\setcounter{\@@thenumber{#1}}{#2}}
+
+\def\resetnumber[#1]%
+ {\setcounter{\@@thenumber{#1}}{0\numberparameter{#1}\c!start}}
+
+\def\dodoreset#1%
+ {\getvalue{\s!reset#1}}%
+
+\def\savenumber[#1]%
+ {\savecounter{\@@thenumber{#1}}}
+
+\def\restorenumber[#1]%
+ {\restorecounter{\@@thenumber{#1}}}
+
+%D Bonus macro (we need to keep this one for downward
+%D compatibility reasons).
+
+\def\doreset[#1]%
+ {\processcommalist[#1]\dodoreset}
+
+\def\reset
+ {\dosingleargument\doreset}
+
+% nieuw, maar kan dit (i.v.m. (sub)page?)
+
+% \def\incrementnumber[#1]%
+% {\checknummer{#1}%
+% \doifelse\@@nrstatus\v!start
+% {\pluscounter{\@@thenumber{#1}}}
+% {\setcounter{\@@thenumber{#1}}{0\csname\@@thenumber{#1}\c!start\endcsname}}}
+
+\def\incrementnumber[#1]% bypage tricky: needs a
+ {\doifelse{\numberparameter{#1}\c!way}{\v!by\v!page}
+ {\checkpagechange{#1}%
+ \ifpagechanged\resetcounter{\@@thenumber{#1}}\fi}
+ {\checknummer{#1}}%
+ \doifelse\@@nrstate\v!start % only here
+ {\pluscounter{\@@thenumber{#1}}}
+ {\setcounter{\@@thenumber{#1}}{0\numberparameter{#1}\c!start}}}
+
+% \defineenumeration [test] [way=bypage,text=\lastchangedpage]
+%
+% \starttext \dorecurse{10}{\test \input tufte \par} \stoptext
+
+\def\decrementnumber[#1]%
+ {\minuscounter{\@@thenumber{#1}}}
+
+\def\convertednumber[#1]%
+ {\convertnumber
+ {\numberparameter{#1}\c!conversion}
+ {\countervalue{\@@thenumber{#1}}}}
+
+\def\rawnumber[#1]%
+ {\countervalue{\@@thenumber{#1}}}
+
+\let\getnumber\convertednumber
+
+\ifx\checknummer\undefined \let\checknummer\gobbleoneargument \fi
+
+% ook de pag nummers hierheen halen ivm \@@nrwijze
+
+\def\setupnumbering
+ {\dodoubleempty\getparameters[\??nr]}
+
+\setupnumbering
+ [\c!way=\v!by\v!chapter,
+ \c!blockway=,
+ \c!sectionnumber=\v!yes,
+ \c!state=\v!start]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-obj.tex b/Master/texmf-dist/tex/context/base/core-obj.tex
new file mode 100644
index 00000000000..1e6720540ba
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-obj.tex
@@ -0,0 +1,408 @@
+%D \module
+%D [ file=core-obj,
+%D version=1998.01.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Object Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Object Handling}
+
+\unprotect
+
+\startmessages dutch library: references
+ 30: onbekend object --
+ 31: dubbel object --
+\stopmessages
+
+\startmessages english library: references
+ 30: unknown object --
+ 31: duplicate object --
+\stopmessages
+
+\startmessages german library: references
+ 30: unbekanntes Object --
+ 31: doppeltes Object --
+\stopmessages
+
+\startmessages czech library: references
+ 30: neznamy objekt --
+ 31: duplicitni object --
+\stopmessages
+
+\startmessages italian library: references
+ 30: oggetto sconosciuto --
+ 31: oggetto duplicato --
+\stopmessages
+
+\startmessages norwegian library: references
+ 30: ukjent objekt --
+ 31: duplikat objekt --
+\stopmessages
+
+\startmessages romanian library: references
+ 30: obiect necunoscut --
+ 31: obiect duplicat --
+\stopmessages
+
+%D \macros
+%D {setobject,getobject,ifinobject}
+%D
+%D Boxes can be considered reuable objects. Unfortunaltely once
+%D passed to the \DVI\ file, such objects cannot be reused. In
+%D \PDF\ however, reusing is possible and sometimes even a
+%D necessity. Therefore, \CONTEXT\ supports reusable objects.
+%D
+%D During the \TEX\ processing run, boxes can serve the purpose
+%D of objects, and the \DVI\ driver module implements objects
+%D using packed boxes.
+%D
+%D The \PDF\ and \PDFTEX\ driver modules implement objects
+%D using \PDF\ forms. There is no (real) restriction on the
+%D number of objects there.
+%D
+%D The first application of objects in \CONTEXT\ concerned
+%D \METAPOST\ graphics and fill||in form fields. The first
+%D application can save lots of bytes, while the latter use is
+%D more a necessity than byte saving.
+%D
+%D \starttyping
+%D \setobject{class}{name}\somebox{}
+%D \getobject{class}{name}
+%D \stoptyping
+%D
+%D Here \type{\somebox} can be whatever box specification suits
+%D \TEX. We save the dimensions of an object, although some
+%D drivers will do so themselves. This means that when for
+%D instance using \PDFTEX\ we could save a hash entry plus some
+%D 20+ memory locations per object by delegating this
+%D housekeeping to the driver. The current approach permits
+%D us to keep the box characteristic too.
+
+\newif\ifinobject
+
+\def\objectplaceholder{NOT YET FLUSHED}%
+
+\def\presetobject#1#2% \global added
+ {\blabelgroup
+ \ifundefined{\r!object#1::#2}%
+ \global\@EA\let\csname\r!object#1::#2\endcsname\objectplaceholder
+ \fi
+ \elabelgroup}
+
+\def\dosetobject#1#2#3% \initializepaper this will move to \everyshipout
+ {\initializepaper
+ \blabelgroup
+ \ifundefined{\r!object#2::#3}%
+ \elabelgroup \expandafter\dodosetobject
+ \else % tzt, overload internal referenced objects to save entries
+ \elabelgroup \expandafter\gobblefivearguments
+ \fi
+ {#1}{#2}{#3}}
+
+\def\resetobject#1#2%
+ {\checkobjectreferences
+ \letbeundefined{\r!object#1::#2}}
+
+%D Somehow there is a rounding error problem in either \PDFTEX\
+%D or in viewers, or maybe it is conforming the specs. The next
+%D variable compensate for it by removing the rather tight
+%D clip.
+
+\def\objectoffset{1cm}
+
+% \def\dodosetobject#1#2#3%
+% {\bgroup
+% \inobjecttrue
+% \dowithnextbox{\dododosetobject{#1}{#2}{#3}\egroup}}
+
+\def\dodosetobject#1#2#3%
+ {\bgroup
+ \globalpushmacro\crossreferenceobject \objectreferenced
+ \inobjecttrue
+ \dowithnextbox
+ {\globalpopmacro\crossreferenceobject
+ \dododosetobject{#1}{#2}{#3}\egroup}}
+
+\def\dododosetobject#1#2#3%
+ {\blabelgroup
+ \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox
+ \scratchdimen\objectoffset
+ \@EA\xdef\csname\r!object#2::#3\endcsname
+ {\noexpand\dohandleobject{#2}{#3}%
+ {\ifhbox\nextbox\hbox\else\vbox\fi}%
+ %{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}%
+ {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}%
+ {\number\scratchdimen}}%
+ \expanded % freeze the dimensions since \dostartobject may use \nextbox
+ {\dostartobject
+ {#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}%
+ \ifcase#1\relax\else \ifdim\objectoffset>\zeropoint
+ \setbox\nextbox\vbox spread 2\scratchdimen
+ {\forgetall \offinterlineskip
+ \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}%
+ \fi \fi
+ \flushnextbox
+ \dostopobject
+ \elabelgroup}
+
+\def\getobject#1#2%
+ {\blabelgroup
+ \let\dohandleobject\dogetobject
+ \csname\r!object#1::#2\endcsname}
+
+% \def\dogetobject#1#2#3#4#5#6%
+% {\initializepaper
+% \forgetall
+% \dontshowcomposition
+% \setbox\scratchbox\vbox
+% {\doinsertobject{#1}{#2}}%
+% \setbox\scratchbox#3%
+% {\vbox to #5\scaledpoint
+% {\ifdim\ht\scratchbox>#5\scaledpoint
+% % or \ifdim\wd\scratchbox>#4\scaledpoint
+% \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+% \else
+% \vss\box\scratchbox
+% \fi}}%
+% \wd\scratchbox#4\scaledpoint
+% \ht\scratchbox#5\scaledpoint
+% \dp\scratchbox#6\scaledpoint
+% \box\scratchbox
+% \elabelgroup}
+
+% \def\dogetobject#1#2#3#4#5#6#7%
+% {\initializepaper
+% \forgetall
+% \dontshowcomposition
+% \setbox\scratchbox\vbox
+% {\doinsertobject{#1}{#2}}%
+% \setbox\scratchbox#3%
+% {\vbox to #5\scaledpoint
+% {\ifdim\ht\scratchbox>#5\scaledpoint
+% % or \ifdim\wd\scratchbox>#4\scaledpoint
+% \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+% \else
+% \vss\box\scratchbox
+% \fi}}%
+% \scratchdimen#7\scaledpoint
+% \setbox\nextbox\hbox
+% {\hskip-\scratchdimen\lower\scratchdimen\flushnextbox}%
+% \wd\scratchbox#4\scaledpoint
+% \ht\scratchbox#5\scaledpoint
+% \dp\scratchbox#6\scaledpoint
+% \box\scratchbox
+% \elabelgroup}
+
+\def\dogetobject#1#2#3#4#5#6#7% don't change this, should work for dvi & pdf
+ {\initializepaper
+ \forgetall
+ \dontshowcomposition
+ \setbox\scratchbox\vbox
+ {\doinsertobject{#1}{#2}}%
+ \setbox\scratchbox#3%
+ {\vbox to #5\scaledpoint
+ {\ifdim\ht\scratchbox>#5\scaledpoint
+ \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+ \else\ifdim\wd\scratchbox>#4\scaledpoint
+ \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+ \else
+ %\vss\box\scratchbox
+ \vss\hbox to #4\scaledpoint{\box\scratchbox\hss}% fix Chof
+ \fi\fi}}%
+ \box\scratchbox
+ \elabelgroup}
+
+%D If needed one can ask for the dimensions of an object with:
+%D
+%D \starttyping
+%D \getobjectdimensions{class}{name}
+%D \stoptyping
+%D
+%D The results are reported in \type {\objectwidth}, \type
+%D {\objectheight} and \type {\objectdepth}.
+
+% \def\dogetobjectdimensions#1#2#3#4#5#6%
+% {\def\objectwidth {#4\s!sp}%
+% \def\objectheight{#5\s!sp}%
+% \def\objectdepth {#6\s!sp}}
+
+\def\dogetobjectdimensions#1#2#3#4#5#6#7%
+ {\def\objectwidth {#4\s!sp}%
+ \def\objectheight{#5\s!sp}%
+ \def\objectdepth {#6\s!sp}%
+ \def\objectmargin{#7\s!sp}}
+
+\def\getobjectdimensions#1#2%
+ {\let\dohandleobject\dogetobjectdimensions
+ \let\objectwidth \!!zeropoint
+ \let\objectheight\!!zeropoint
+ \let\objectdepth \!!zeropoint
+ \labelcsname\r!object#1::#2\endcsname}
+
+%D Apart from this kind of objects, that have typeset content,
+%D we can have low level driver specific objects. Both types
+%D can have references to internal representations, hidden for
+%D the user. We keep track of such references by means of a
+%D dedicated cross reference mechanism. Normally, objects are
+%D defined before they are used, but forward referencing
+%D sometimes occurs.
+%D
+%D \starttyping
+%D \dosetobjectreference {class} {identifier} {reference value} {page}
+%D \dogetobjectreference {class} {identifier} \csname
+%D \stoptyping
+%D
+%D These commands are to be called by the \type{\startobject},
+%D \type{\stopobject} and \type{\insertobject} specials.
+
+\def\objectreferenced{\global\chardef\crossreferenceobject\plusone}
+\def\driverreferenced{\global\chardef\crossreferenceobject\zerocount}
+
+\objectreferenced
+
+\def\checkobjectreferences
+ {\startnointerference
+ \protectlabels
+ \doutilities{objectreferences}\jobname\empty\relax\relax
+ \global\let\checkobjectreferences\relax
+ \stopnointerference}
+
+\def\setobjectreferences
+ {\def\objectreference##1##2##3##4%
+ {\ifundefined{\r!driver##1::##2}%
+ \setxvalue{\r!driver##1::##2}{{##3}{##4}}%
+ \else
+ \showmessage\m!references{31}{[##1 ##2=>##3/##4]}%
+ \fi}}
+
+\def\resetobjectreferences
+ {\let\objectreference\gobblefourarguments}
+
+\resetobjectreferences
+
+\def\dosetobjectreference#1#2#3%
+ {\checkobjectreferences
+ \blabelgroup
+ \ifcase\crossreferenceobject
+ \objectreferenced
+ \else
+ \edef\dowritereference
+ {\writeutilitycommand{\objectreference{#1}{#2}{#3}{\noexpand\realfolio}}}%
+ \dowritereference
+ \fi
+ %\ifundefined{\r!driver#1::#2}% could have been be replaced !
+ \setxvalue{\r!driver#1::#2}{{#3}{\noexpand\realfolio}}%
+ %\fi % so no test ! ! ! ! (pdftex fails on undefined objects)
+ \elabelgroup}
+
+\def\dosetdriverreference
+ {\driverreferenced\dosetobjectreference}
+
+\def\defaultobjectreference#1#2{0}
+\def\defaultobjectpage #1#2{\realfolio}
+
+\def\dodogetobjectreference#1#2#3#4#5%
+ {\checkobjectreferences
+ \blabelgroup
+ \ifundefined{\r!driver#3::#4}%
+ \showmessage\m!references{30}{[#3 #4=>#3/#4]}%
+ \xdef#5{#2{#3}{#4}}%
+ \else
+ \xdef#5{\@EAEAEA#1\csname\r!driver#3::#4\endcsname}%
+ \fi
+ \elabelgroup}
+
+\def\dogetobjectreference
+ {\dodogetobjectreference\firstoftwoarguments\defaultobjectreference}
+
+\def\dogetobjectreferencepage
+ {\dodogetobjectreference\secondoftwoarguments\defaultobjectpage}
+
+\def\setobject {\driverreferenced\dosetobject1}
+\def\settightobject{\driverreferenced\dosetobject0}
+
+%D \macros
+%D {doifobjectfoundelse,doifobjectreferencefoundelse}
+%D
+%D To prevent redundant definition of objects, one can use
+%D the next tests:
+%D
+%D \starttyping
+%D \doifobjectfoundelse{class}{object}{do then}{do else}
+%D \doifobjectreferencefoundelse{class}{object}{do then}{do else}
+%D \stoptyping
+
+\beginTEX
+
+\def\doifobjectfoundelse#1#2%
+ {\blabelgroup \@EA\ifx\csname\r!object#1::#2\endcsname\relax
+ \elabelgroup \expandafter\secondoftwoarguments
+ \else
+ \elabelgroup \expandafter\firstoftwoarguments
+ \fi}
+
+\def\doifobjectreferencefoundelse#1#2%
+ {\checkobjectreferences
+ \blabelgroup \@EA\ifx\csname\r!driver#1::#2\endcsname\relax
+ \elabelgroup \expandafter\secondoftwoarguments
+ \else
+ \elabelgroup \expandafter\firstoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX
+
+\def\doifobjectfoundelse#1#2%
+ {\blabelgroup \ifcsname\r!object#1::#2\endcsname
+ \elabelgroup \expandafter\firstoftwoarguments
+ \else
+ \elabelgroup \expandafter\secondoftwoarguments
+ \fi}
+
+\def\doifobjectreferencefoundelse#1#2%
+ {\checkobjectreferences
+ \blabelgroup \ifcsname\r!driver#1::#2\endcsname
+ \elabelgroup \expandafter\firstoftwoarguments
+ \else
+ \elabelgroup \expandafter\secondoftwoarguments
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {doifobjectssupportedelse}
+%D
+%D Starting with reuse of graphics, we will implement object
+%D reuse when possible. To enable mechanisms to determine
+%D what method to use, we provide:
+%D
+%D \starttyping
+%D \doifobjectssupportedelse{true action}{false action}
+%D \stoptyping
+%D
+%D As we can see, currently objects depend on the special
+%D driver.
+
+\newif\ifobjectssupported \objectssupportedtrue
+
+\def\doifobjectssupportedelse
+ {\ifobjectssupported
+ \@EA\doifspecialavailableelse\@EA\doinsertobject
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+%D There is a conceptual problem here. Objects are not possible
+%D in \DVI, unless faked like in \type {spec-dvi}. This means
+%D that we must be careful in loading special drivers that do
+%D support objects while we still want to be able to use the
+%D \DVI\ output.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-par.tex b/Master/texmf-dist/tex/context/base/core-par.tex
new file mode 100644
index 00000000000..66c3ad85098
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-par.tex
@@ -0,0 +1,300 @@
+%D \module
+%D [ file=core-par,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Paragraph Tricks,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{ConTeXt Pararaph Tricks}
+
+\unprotect
+
+% \ifprocesspreviousparagraphs
+%
+% \nofskippedparagraphs
+% \paragraphnumber
+% \nofparagraphs
+%
+% \dosetparagraph
+% \doresetparagraph
+% \dobeforeparagraph
+% \doafterparagraph
+% \dobeforeskipparagraph
+% \doafterskipparagraph
+%
+% \pushparagraphs\endcommand alle alineas tot \endcommand laden
+% \pushmoreparagraphs\endcommand alle alineas tot \endcommand toevoegen
+% \popparagraphs alle alineas oproepen
+% \popparagraphs[a,b,c] enkele alineas oproepen [geen]
+%
+% tzt een optionele prefix:
+%
+% \pushparagraphs[xxx]\endcommand alle alineas tot \endcommand laden
+% \popparagraphs[xxx] alle alineas oproepen
+% \popparagraphs[xxx][a,b,c] enkele alineas oproepen
+%
+% \numberparagraphs
+% \numberparagraphlines
+% \resetparagraphlines
+
+\newif\ifprocesspreviousparagraphs % public
+\newif\ifprocessallparagraphs % private
+
+\newcounter\totalnofparagraphs % private
+\newcounter\globalparagraphnumber % private
+\newcounter\discardedparagraphs % private
+\newcounter\mostrecentparagraphtotal % public
+
+\let\dosetparagraph = \relax % public
+\let\doresetparagraph = \relax % public
+\let\dobeforeparagraph = \relax % public
+\let\doafterparagraph = \relax % public
+\let\dobeforeskipparagraph = \relax % public
+\let\doafterskipparagraph = \relax % public
+
+\def\paragraphnumber {} % public
+\def\nofparagraphs {} % public
+\def\nofskippedparagraphs {} % public
+
+\def\paragraphprefix {paragraph} % private
+
+% voorlopig, wordt nog class
+
+\def\resetparagraphlines
+ {\global\linenumber\plusone}
+
+\def\numberparagraphs % instelbaar maken en slimmer ivm breedte regelnummer !!!!!
+ {\processpreviousparagraphstrue
+ \def\dosetparagraph
+ {\bgroup
+ \resetparagraphlines
+ \EveryPar
+ {\strut\inleftmargin{\tf{\tx\paragraphnumber}\kern2em}%
+ \ignorespaces}}%
+ \def\doresetparagraph
+ {\resetparagraphlines
+ \egroup}}
+
+\def\numberparagraphlines
+ {\processpreviousparagraphstrue
+ \def\dosetparagraph
+ {\resetparagraphlines}%
+ \def\doresetparagraph
+ {\resetparagraphlines}%
+ \def\dobeforeparagraph
+ {\startlinenumbering[\v!continue]}%
+ \def\doafterparagraph
+ {\stoplinenumbering}%
+ \def\dobeforeskipparagraph
+ {\stoplinenumbering
+ \let\paragraphnumber\relax}%
+ \def\doafterskipparagraph
+ {\startlinenumbering[\v!continue]}}
+
+\long\def\directpushparagraph#1%
+ {\doglobal\increment\totalnofparagraphs
+ \ifnum\totalnofparagraphs>0\nofskippedparagraphs\relax
+ \setgvalue{\paragraphprefix\totalnofparagraphs}{#1}%
+ \else
+ \setgvalue{\paragraphprefix\totalnofparagraphs}{\skipparagraph#1\par}%
+ \fi}
+
+\long\def\directskipparagraph#1%
+ {\doglobal\increment\totalnofparagraphs
+ \setgvalue{\paragraphprefix\totalnofparagraphs}{\skipparagraph#1\par}}
+
+\def\dopushparagraphs#1%
+ {\global\let\mostrecentparagraphtotal\totalnofparagraphs
+ \ifx#1\undefined
+ \let#1\relax
+ \fi
+ \convertargument#1\to\asciiA
+ \convertargument{ }\to\asciiB % lege regel
+ \def\dopushparagraph##1\par
+ {\convertargument##1\to\asciiC
+ \doifelse\asciiC\asciiA
+ {#1}
+ {\doifsomething\asciiC % lege paragraaf
+ {\doifnot\asciiC\asciiB
+ {\directpushparagraph{#1}}}%
+ \dopushparagraph}}%
+ \dopushparagraph}
+
+\def\pushparagraphs
+ {\doglobal\newcounter\totalnofparagraphs
+ \dopushparagraphs}
+
+\def\pushmoreparagraphs
+ {\dopushparagraphs}
+
+\def\dododopopparagraph#1% no grouping, i.v.m. sidefloats
+ {\ifnum#1>\totalnofparagraphs\relax
+ \else
+ \let\paragraphnumber\globalparagraphnumber
+ \decrement(\paragraphnumber,\discardedparagraphs)%
+ \dobeforeparagraph
+ \ifhmode\indentation\fi\getvalue{\paragraphprefix#1}\par
+ \doafterparagraph
+ \fi}
+
+\long\def\skipparagraph#1\par
+ {\doglobal\increment\discardedparagraphs
+ \ifprocessallparagraphs
+ \dobeforeskipparagraph
+ \ifhmode\indentation\fi#1\par
+ \doafterskipparagraph
+ \fi}
+
+\def\dodopopparagraph
+ {\dododopopparagraph}
+
+\def\dodoprocessparagraph#1%
+ {\ifprocesspreviousparagraphs
+ \bgroup
+ \setbox0\vbox{\dododopopparagraph{#1}}%
+ \egroup
+ \fi}
+
+\def\processpreviousparagraphs[#1]% process previous ones
+ {\ifprocesspreviousparagraphs
+ \bgroup
+ \getfromcommacommand[#1][1]% tzt snelle \..command.. testen
+ \let\totalnofparagraphs\commalistelement
+ \decrement\totalnofparagraphs
+ \let\dodopopparagraph\dodoprocessparagraph
+ \popparagraphs
+ \egroup
+ \fi}
+
+\def\dopopparagraphs[#1]%
+ {\doifnotinset{#1}{\v!none,0}
+ {\dosetparagraph
+ \doglobal\newcounter\globalparagraphnumber
+ \doglobal\newcounter\discardedparagraphs
+ \doifelse{#1}{}
+ {\processallparagraphstrue}
+ {\processallparagraphsfalse}%
+ \def\dopopparagraph
+ {\doglobal\increment\globalparagraphnumber
+ \ifnum\globalparagraphnumber>\totalnofparagraphs\relax
+ \let\dopopparagraph\relax
+ \else\ifprocessallparagraphs
+ \ifnum\globalparagraphnumber>\mostrecentparagraphtotal\relax
+ \dodopopparagraph\globalparagraphnumber
+ \else
+ \dodoprocessparagraph\globalparagraphnumber
+ \fi
+ \else
+ \let\paragraphnumber\globalparagraphnumber
+ \decrement(\paragraphnumber,\discardedparagraphs)%
+ \ExpandBothAfter\doifinsetelse{\paragraphnumber}{#1}
+ {\dodopopparagraph\globalparagraphnumber}
+ {\dodoprocessparagraph\globalparagraphnumber}%
+ \fi\fi
+ \dopopparagraph}%
+ \dopopparagraph
+ \doresetparagraph}}
+
+\def\popparagraphs
+ {\dosingleempty\dopopparagraphs}
+
+\def\countparagraphs
+ {\popparagraphs[\!!maxcard]%
+ \global\let\nofparagraphs\totalnofparagraphs
+ \doglobal\decrement(\nofparagraphs,\discardedparagraphs)}
+
+% \showframe
+%
+% \numberparagraphlines
+% \numberparagraphs
+%
+% \def\nofskippedparagraphs{1}
+%
+% \pushparagraphs\ThatsIt
+%
+% \ruledbaseline eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste
+%
+% \ruledbaseline eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste eerste eerste eerste
+% eerste eerste eerste eerste eerste
+%
+% \ruledbaseline tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede tweede tweede tweede
+% tweede tweede tweede tweede tweede
+%
+% \skipparagraph \ruledbaseline skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped
+%
+% \ruledbaseline derde derde derde derde derde derde derde
+% derde derde derde derde derde derde derde derde derde derde
+% derde derde derde derde derde derde derde derde derde derde
+% derde derde derde derde derde derde derde derde derde derde
+% derde derde derde derde derde derde derde derde derde derde
+% derde derde derde derde derde derde derde derde derde derde
+%
+% \skipparagraph \ruledbaseline skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped skipped
+%
+% \ruledbaseline vierde vierde vierde vierde vierde vierde
+% vierde vierde vierde vierde vierde vierde vierde vierde
+% vierde vierde vierde vierde vierde vierde vierde vierde
+% vierde vierde vierde vierde
+%
+% \ruledbaseline vijfde vijfde vijfde vijfde vijfde vijfde
+% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
+% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
+% vijfde vijfde vijfde vijfde vijfde vijfde vijfde vijfde
+% vijfde vijfde vijfde
+%
+% \skipparagraph \ruledbaseline skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped skipped skipped skipped skipped skipped
+% skipped skipped skipped
+%
+% \ThatsIt
+%
+% \popparagraphs
+%
+% \countparagraphs
+%
+% \blanko[2*groot]
+%
+% nofparagraphs:~\nofparagraphs
+%
+% \pagina
+%
+% \popparagraphs[1]
+% \popparagraphs[2]
+% \popparagraphs[3]
+% \popparagraphs[4]
+% \popparagraphs[5]
+%
+% \pagina
+%
+% \ruledvbox{\popparagraphs[1,2,3,4,5]}
+%
+% \pagina
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-pos.tex b/Master/texmf-dist/tex/context/base/core-pos.tex
new file mode 100644
index 00000000000..429aefeec15
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-pos.tex
@@ -0,0 +1,2731 @@
+%D \module
+%D [ file=core-pos,
+%D version=1999.08.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Positioning Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% needs a cleanup, things may change
+
+% shorter tags, ..:achtergrond:.. etc in pos actions
+
+% dubbele text- * pos's eruit
+
+% class pos -> als gelijk aan vorige, dan niet niet definieren
+% en erven, maw:
+%
+% 1 -> opslaan
+% 2 -> undef, dus == prev
+% 3 -> undef, dus == prev
+% 4 -> opslaan
+
+\writestatus{loading}{Context Positioning Support}
+
+% todo: topskip als optie voor eerste regel achtergrond
+% todo: build pos layers on top of layers
+% todo: positionlayer pos van text-1 etc delen
+
+%D Although \TEX\ has a rather powerful channel to the outside
+%D world, called \type {\special}, real communication with
+%D other programs is complicated by the fact that no positional
+%D information is available. Mid 1999, I discussed this with
+%D \THANH, the author of \PDFTEX, and after some experiments,
+%D \PDFTEX\ was extended with a simple but effective mechanism,
+%D that provided positional information. The interesting
+%D thought is that, although \TEX\ is frozen, similar
+%D functionality could have been achieved with \type
+%D {\specials} and an additional \DVI\ postprocessor.
+%D
+%D Since we want to be as compatible as can be, \CONTEXT\ will
+%D support both methods, although the development is primarily
+%D driven by the \PDFTEX\ way of doing things. Since the
+%D mechanism is basically not limited to one application, for
+%D the moment we stick to building the functionality around one
+%D \CONTEXT\ special command, but at the same time we keep our
+%D eyes open for extensions in other directions.
+%D
+%D A question that may arise when one reads this module, is to
+%D what extend these macros are generic, in the sense that they
+%D could be collected in a support module instead of a core
+%D module. Since the mechanism described here will closely
+%D cooperate with the \METAPOST\ support built in \CONTEXT,
+%D which in turn will be tightly integrated with the \CONTEXT\
+%D overlay mechanisms, I decided to write a core module instead
+%D of a support one. This makes even more sense, when one takes
+%D into account that this kind of support depends on special
+%D drivers.
+
+\unprotect
+
+%D The first application of positional information was embedded
+%D graphics. Since we are interacting with text, it made sense
+%D to take the current line height and depth into account too.
+%D This is why we have two basic position macros: one for
+%D simple positions, and one for boxes.
+%D
+%D We could have sticked to one special, and actually did so in
+%D earlier experiments, but for convenience, as well for
+%D clearness, we now have two alternatives. This approach will
+%D save us quite some bytes when storing large quantities of
+%D positional information. We save as less information as
+%D needed, that is, we save no dimensions, in a \METAPOST\
+%D friendly way.
+%D
+%D The three specials involved are:
+%D
+%D \starttyping
+%D \dosetposition {identifier}
+%D \dosetpositionwhd {identifier} {width} {height} {depth}
+%D \dosetpositionplus {identifier} {width} {height} {depth} {list}
+%D \dosetpositionpapersize {width} {height}
+%D \stoptyping
+%D
+%D Either directly, when using \PDFTEX, or by means of a
+%D postprocessor, when using \DVI\ output, these end up in the
+%D utility file as:
+%D
+%D \starttyping
+%D \pospxy {identifier} {page} {x} {y}
+%D \pospxywhd {identifier} {page} {x} {y} {w} {h} {d}
+%D \pospxylist {identifier} {page} {x} {y} {w} {h} {d} {list}
+%D \stoptyping
+%D
+%D This means that we have to provide both a utility set and
+%D reset macro for positions.
+
+\def\POSprefix{POS::}
+
+\def\pxypos {\pospxy} % obsolete
+\def\pxyposwhd {\pospxywhd} % obsolete
+\def\pxyposplus{\pospxyplus} % obsolete
+
+\def\resetpositions
+ {\let\pospxy \gobblefourarguments
+ \let\pospxywhd \gobblesevenarguments
+ \let\pospxyplus\gobbleeightarguments}
+
+\def\setpositions
+ {\let\pospxy \setpospxy
+ \let\pospxywhd \setpospxywhd
+ \let\pospxyplus\setpospxyplus}
+
+\addutilityreset{positions}
+
+%D This is real tricky! The page anchor is applied to the
+%D page box and therefore flushed first. So, when present, it
+%D is applied to all positions except itself.
+
+\chardef\positionanchormode=0 % don't relocate page origin
+\chardef\positionanchormode=1 % relocate page origin once
+
+\def\pageanchor{page:0}
+
+% todo: change with each page size change
+
+\def\registerpageposition#1% this one is flushed first !
+ {\ifpositioning\ifcase\realpageno\or
+ \ifdim\printpaperheight=\paperheight\else
+ \ifdim\printpaperwidth=\paperwidth\else
+ \setbox#1\hbox{\hpos\pageanchor{\box#1}}%
+ \fi
+ \fi
+ \fi\fi}
+
+\def\setpospxy#1#2#3#4%
+ {\dosetpositionnm\@@posp{#2}%
+ \dosetpositionxy\@@posx{#3}\MPx
+ \dosetpositionxy\@@posy{#4}\MPy
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy}}
+
+\def\setpospxywhd#1#2#3#4#5#6#7%
+ {\dosetpositionnm\@@posp{#2}%
+ \dosetpositionxy\@@posx{#3}\MPx
+ \dosetpositionxy\@@posy{#4}\MPy
+ \dosetpositionpt\@@posw{#5}%
+ \dosetpositionpt\@@posh{#6}%
+ \dosetpositionpt\@@posd{#7}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}}
+
+\def\setpospxyplus#1#2#3#4#5#6#7#8%
+ {\dosetpositionnm\@@posp{#2}%
+ \dosetpositionxy\@@posx{#3}\MPx
+ \dosetpositionxy\@@posy{#4}\MPy
+ \dosetpositionpt\@@posw{#5}%
+ \dosetpositionpt\@@posh{#6}%
+ \dosetpositionpt\@@posd{#7}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd,#8}}
+
+%D Sometimes we want to trick the position handler a bit:
+
+\def\replacepospxywhd#1#2#3#4#5#6#7%
+ {\begingroup
+ \nosetpositionnm\@@posp{#2}%
+ \nosetpositionpt\@@posx{#3}%
+ \nosetpositionpt\@@posy{#4}%
+ \nosetpositionpt\@@posw{#5}%
+ \nosetpositionpt\@@posh{#6}%
+ \nosetpositionpt\@@posd{#7}%
+ \@EA\xdef\csname\POSprefix#1\endcsname{\@@posp,\@@posx,\@@posy,\@@posw,\@@posh,\@@posd}%
+ \endgroup}
+
+% slower, as many tokens, etc:
+%
+% \def\replacepospxywhd#1#2#3#4#5#6#7%
+% {\begingroup
+% \let\dosetpositionnm\nosetpositionnm
+% \let\dosetpositionpt\nosetpositionpt
+% \let\dosetpositionxy\nosetpositionpt
+% \setpospxywhd{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+% \endgroup}
+
+%D We need to initialize.
+
+\resetpositions
+
+%D For postprocessing purposes, we save the number of
+%D positions.
+
+\newcounter\currentpositions % current number of positions
+\newcounter\totalnofpositions % total from previous run
+
+\appendtoks
+ \savecurrentvalue\totalnofpositions\currentpositions
+\to \everybye
+
+%D The next switch can be used to communicate a special
+%D situation. Positioning and associated actions can be
+%D executed any time. However, in for instance backgrounds
+%D they can be collected in a layer, for instance the text
+%D layer (especially the hidden text layer). In the case of
+%D floats, we run into problems, since the page information is
+%D not applicable when the content floats indeed. In such
+%D situations one can treat positions and graphics local.
+
+\newif\iflocalpositioning
+
+%D Watch out: sometimes a pagebreak occurs inside a float
+%D placement, so there we need to disable local mode.
+
+\appendtoks
+ \localpositioningtrue
+\to \everyinsidefloat
+
+\appendtoks
+ \localpositioningfalse
+\to \everypagebody
+
+%D We save positionional information without dimensions, which
+%D saves some bytes. The conversion too saves some bytes, but
+%D is primarily needed because we want to pass those values to
+%D \METAPOST\ too.
+
+\def\dosetpositionpt#1#2%
+ {\scratchdimen\number#2\scaledpoint
+ \xdef#1{\withoutpt\the\scratchdimen}}
+
+\def\dosetpositionnm#1#2%
+ {\xdef#1{\number#2}}
+
+\def\dosetpositionxy#1#2#3% todo: scaled points
+ {\scratchdimen\number#2\scaledpoint
+ \ifcase\positionanchormode\or
+ \advance\scratchdimen-#3\pageanchor
+ \fi
+ \xdef#1{\withoutpt\the\scratchdimen}}
+
+\def\nosetpositionnm#1#2{\xdef#1{\number#2}}
+\def\nosetpositionpt#1#2{\scratchdimen#2\xdef#1{\withoutpt\the\scratchdimen}}
+
+\beginETEX \dimexpr
+
+ \def\dosetpositionpt#1#2{\xdef#1{\withoutpt\the\dimexpr(\number#2\scaledpoint)}}
+ \def\nosetpositionpt#1#2{\xdef#1{\withoutpt\the\dimexpr(#2)}}
+
+\endETEX
+
+\def\checkpositions
+ {\startnointerference
+ \protectlabels
+ \doutilities{positions}\jobname\empty\relax\relax
+ \global\let\checkpositions\relax
+ \stopnointerference}
+
+%D Since the positional values are to be fully expandable, we
+%D need to preload them as soon as possible, which is why we
+%D load the data when we start a text.
+
+\appendtoks \checkpositions \to \everystarttext
+
+%D Positions are either generated at a delayed write time
+%D (in \PDFTEX), or derived from the dvi file. The actual
+%D method is implemented in a special driver. If needed, the
+%D driver can fall back on the following macros.
+
+\def\dolazysaveposition#1#2#3#4% tag page x y
+ {\expanded{\writeutilitycommand{\noexpand\pospxy
+ {#1}{#2}{#3}{#4}}}}
+
+\def\dolazysavepositionwhd#1#2#3#4#5#6#7% tag page x y w h d
+ {\expanded{\writeutilitycommand{\noexpand\pospxywhd
+ {#1}{#2}{#3}{#4}{#5}{#6}{#7}}}}
+
+\def\dolazysavepositionplus#1#2#3#4#5#6#7#8% tag page x y w h d list
+ {\expanded{\writeutilitycommand{\noexpand\pospxyplus
+ {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}}}}
+
+\def\dosaveposition#1#2#3#4% tag page x y
+ {\expanded{\immediatewriteutilitycommand{\noexpand\pospxy
+ {#1}{#2}{#3}{#4}}}}
+
+\def\dosavepositionwhd#1#2#3#4#5#6#7% tag page x y w h d
+ {\expanded{\immediatewriteutilitycommand{\noexpand\pospxywhd
+ {#1}{#2}{#3}{#4}{#5}{#6}{#7}}}}
+
+\def\dosavepositionplus#1#2#3#4#5#6#7#8% tag page x y w h d list
+ {\expanded{\immediatewriteutilitycommand{\noexpand\pospxyplus
+ {#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}}}}
+
+%D \macros
+%D {MPp, MPx, MPy, MPw, MPh, MPd,
+%D MPxy, MPll, MPlr, MPur, MPul, MPpos}
+%D
+%D Access to the positional information is provided by macros
+%D with short names that are clearly meant for \METAPOST.
+
+\def\MPp {\doMPxyhdwlr\doMPp }
+\def\MPx {\doMPxyhdwlr\doMPx }
+\def\MPy {\doMPxyhdwlr\doMPy }
+\def\MPw {\doMPxyhdwlr\doMPw }
+\def\MPh {\doMPxyhdwlr\doMPh }
+\def\MPd {\doMPxyhdwlr\doMPd }
+\def\MPxy {\doMPxyhdwlr\doMPxy }
+\def\MPll {\doMPxyhdwlr\doMPll }
+\def\MPlr {\doMPxyhdwlr\doMPlr }
+\def\MPur {\doMPxyhdwlr\doMPur }
+\def\MPul {\doMPxyhdwlr\doMPul }
+\def\MPpos{\doMPxyhdwlr\doMPpos}
+
+%D So \type {\MPx{identifier}} returns a position, specified
+%D in points. When unknown, \type {0pt} is returned. From the
+%D next definitions, we can see that some positions are
+%D expressions.
+
+\def\doMPp #1,#2,#3,#4,#5,#6,#7\relax{#1}
+\def\doMPx #1,#2,#3,#4,#5,#6,#7\relax{#2\s!pt}
+\def\doMPy #1,#2,#3,#4,#5,#6,#7\relax{#3\s!pt}
+\def\doMPw #1,#2,#3,#4,#5,#6,#7\relax{#4\s!pt}
+\def\doMPh #1,#2,#3,#4,#5,#6,#7\relax{#5\s!pt}
+\def\doMPd #1,#2,#3,#4,#5,#6,#7\relax{#6\s!pt}
+\def\doMPxy #1,#2,#3,#4,#5,#6,#7\relax{(#2\s!pt,#3\s!pt)}
+\def\doMPll #1,#2,#3,#4,#5,#6,#7\relax{(#2\s!pt,#3\s!pt-#6\s!pt)}
+\def\doMPlr #1,#2,#3,#4,#5,#6,#7\relax{(#2\s!pt+#4\s!pt,#3\s!pt-#6\s!pt)}
+\def\doMPur #1,#2,#3,#4,#5,#6,#7\relax{(#2\s!pt+#4\s!pt,#3\s!pt+#5\s!pt)}
+\def\doMPul #1,#2,#3,#4,#5,#6,#7\relax{(#2\s!pt,#3\s!pt+#5\s!pt)}
+\def\doMPpos#1,#2,#3,#4,#5,#6,#7\relax{#1,#2\s!pt,#3\s!pt,#4\s!pt,#5\s!pt,#6\s!pt}
+
+%D As said, we will default to zero (dimensions) when a
+%D position is unknown.
+
+\def\doMPxyhdwlr#1#2%
+ {\ifundefined{\POSprefix#2}%
+ #10,0,0,0,0,0,0\relax
+ \else
+ \@EA\@EA\@EA#1\csname\POSprefix#2\endcsname,0,0,0,0\relax
+ \fi}
+
+\beginETEX
+
+\def\doMPxyhdwlr#1#2% evt kan \s!unknown leeg zijn
+ {\@EA\@EA\@EA#1\csname\POSprefix
+ \ifcsname\POSprefix#2\endcsname#2\else\s!unknown\fi\endcsname
+ ,0,0,0,0\relax}
+
+\setvalue{\POSprefix\s!unknown}{0,0,0}
+
+\endETEX
+
+%D \macros
+%D {MPplus, MPrest, MPv, MPvv}
+%D
+%D Since we will probably keep on extending, we provide a
+%D general extension macro. The plus alternative takes an
+%D extra argument, denoting what additional parameter to pick
+%D up. So, the third extra is fetched with,
+%D
+%D \starttyping
+%D \MPplus{identifier}{3}{default}
+%D \stoptyping
+%D
+%D All extras (comma separated) are fetched with:
+%D
+%D \starttyping
+%D \MPrest{identifier}
+%D \stoptyping
+%D
+%D The extra parameters are not treated.
+
+\def\MPplus {\MPdoplus\doMPplus} \let\MPv \MPplus
+\def\MPrest#1{\MPdoplus\doMPrest{#1}{}} \let\MPvv\MPrest
+
+\def\MPdoplus#1#2#3#4%
+ {\ifundefined{\POSprefix#2}#4\else
+ \@EA\@EA\@EA#1\csname\POSprefix#2\endcsname,,,,,,,,,\relax{#3}%
+ \fi}
+
+% \beginETEX
+%
+% \def\MPdoplus#1#2#3#4%
+% {\ifcsname\POSprefix#2\endcsname
+% \@EA\@EA\@EA#1\csname\POSprefix#2\endcsname,,,,,,,,,\relax{#3}%
+% \else
+% #4%
+% \fi}
+%
+% \endETEX
+
+\def\doMPplus#1,#2,#3,#4,#5,#6,%
+ {\dodoMPplus}
+
+\def\dodoMPplus#1,#2,#3,#4,#5,#6,#7,#8\relax#9%
+ {\ifcase#9\or#1\or#2\or#3\or#4\or#5\or#6\or#7\else
+ \dododoMPplus#8\relax{#9}\fi}
+
+\def\dododoMPplus#1,#2,#3,#4,#5,#6,#7,#8\relax#9%
+ {\ifcase#9\or \or \or \or \or \or \or \or
+ #1\or#2\or#3\or#4\or#5\or#6\or#7\fi}
+
+\def\doMPrest#1,#2,#3,#4,#5,#6,#7,,#8\relax#9%
+ {#7}
+
+% We can now remap the normal whd onto this.
+
+%D \macros
+%D {MPanchor}
+%D
+%D For readability we define a few synonyms:
+
+\let\MPanchor\MPpos
+
+%D \macros
+%D {POSp, POSx, POSy, POSh, POSd, POSw}
+%D
+%D and:
+
+\let\POSp\MPp \let\POSx\MPx \let\POSy\MPy
+\let\POSh\MPh \let\POSd\MPd \let\POSw\MPw
+
+\newbox\positionbox \newif\ifpositioning
+
+%D There are two low level positioning macros. Both store the
+%D position as well as execute an action associated with that
+%D position.
+
+\def\initializenextposition
+ {\ifpositioning \else
+ \global\positioningtrue
+ \dosetpositionpapersize
+ {\number\printpaperwidth}%
+ {\number\printpaperheight }%
+ \fi
+ \doglobal\increment\currentpositions}
+
+% \def\setposition#1%
+% {\initializenextposition
+% \dosetposition{#1}%
+% \dopositionaction{#1}}
+%
+% \def\setpositionbox#1%
+% {\dowithnextbox
+% {\hbox to \nextboxwd
+% {\initializenextposition
+% \def\currentposition{#1}%
+% \dosetpositionwhd \currentposition
+% {\number\nextboxwd}%
+% {\number\nextboxht}%
+% {\number\nextboxdp}%
+% \traceposstring\llap\green{\currentposition>}%
+% \setbox\positionbox\flushnextbox
+% \dopositionaction\currentposition
+% \box\positionbox
+% \hss}}}
+%
+% \def\setpositionplus#1#2%
+% {\dowithnextbox
+% {\hbox to \nextboxwd
+% {\initializenextposition
+% \def\currentposition{#1}%
+% \dosetpositionplus \currentposition
+% {\number\nextboxwd}%
+% {\number\nextboxht}%
+% {\number\nextboxdp}%
+% {#2}%
+% \traceposstring\rlap\magenta{<\currentposition}%
+% \setbox\positionbox\flushnextbox
+% \dopositionaction\currentposition
+% \box\positionbox
+% \hss}}}
+
+\def\setpositiononly#1%
+ {\iftrialtypesetting
+ % nothing
+ \else
+ \initializenextposition
+ \def\currentposition{#1}%
+ \dosetposition\currentposition
+ \fi}
+
+\def\setposition#1%
+ {\iftrialtypesetting
+ % nothing
+ \else
+ \initializenextposition
+ \def\currentposition{#1}%
+ \dosetposition\currentposition
+ \traceposstring\llap\green{\currentposition>}%
+ \dopositionaction\currentposition
+ \fi}
+
+\def\setpositiondata#1#2#3#4%
+ {\iftrialtypesetting \else
+ \initializenextposition
+ \hbox
+ {\def\currentposition{#1}%
+ \dosetpositionwhd\currentposition
+ {\number#2}%
+ {\number#3}%
+ {\number#4}%
+ \traceposstring\llap\green{\currentposition>}%
+ \dopositionaction\currentposition
+ \hss}%
+ \fi}
+
+\def\setpositionbox#1%
+ {\dowithnextbox
+ {\iftrialtypesetting
+ \flushnextbox
+ \else
+ \initializenextposition
+ \hbox to \nextboxwd
+ {\edef\currentposition{#1}%
+ \dosetpositionwhd\currentposition
+ {\number\nextboxwd}%
+ {\number\nextboxht}%
+ {\number\nextboxdp}%
+ \traceposstring\llap\green{\currentposition>}%
+ \setbox\positionbox\flushnextbox
+ \dopositionaction\currentposition
+ \box\positionbox
+ \hss}%
+ \fi}}
+
+\def\setpositiondataplus#1#2#3#4#5%
+ {\iftrialtypesetting \else
+ \initializenextposition
+ \hbox to \nextboxwd
+ {\edef\currentposition{#1}%
+ \dosetpositionplus\currentposition
+ {\number#2}%
+ {\number#3}%
+ {\number#4}%
+ {#5}%
+ \traceposstring\rlap\magenta{<\currentposition}%
+ \dopositionaction\currentposition
+ \hss}%
+ \fi}
+
+\def\setpositionplus#1#2%
+ {\dowithnextbox
+ {\iftrialtypesetting
+ \flushnextbox
+ \else
+ \initializenextposition
+ \hbox to \nextboxwd
+ {\edef\currentposition{#1}%
+ \dosetpositionplus\currentposition
+ {\number\nextboxwd}%
+ {\number\nextboxht}%
+ {\number\nextboxdp}%
+ {#2}%
+ \traceposstring\rlap\magenta{<\currentposition}%
+ \setbox\positionbox\flushnextbox
+ \dopositionaction\currentposition
+ \box\positionbox
+ \hss}%
+ \fi}}
+
+\let\currentposition\s!unknown
+
+%D A few more low level macros take care of defining and
+%D recalling actions. We could save this information in the
+%D position containers themselves, this would save hash
+%D entries, but at the cost of much more time consuming
+%D expansion. Actions are saved globally!
+
+\newtoks\everypositionaction
+
+\let\POSactionprefix\POSprefix
+
+\def\dosetpositionaction#1%
+ {\setgvalue{\POSactionprefix#1::}}
+
+%D The lists can become quite long (also because there can
+%D be lots of parameters passed on) so we provide a hook
+%D to clean up the list afterwards.
+
+\let\cleanuppositionaction\gobbleoneargument
+
+%D The next one will be overloaded later.
+%D
+%D \starttyping
+%D \def\dopositionaction#1% test saves hash entry in etex
+%D {\ifundefined{\POSactionprefix#1::}\else
+%D \ifnum\MPp{#1}>\zerocount % new
+%D \setbox\scratchbox\hbox \bgroup
+%D \traceposstring\clap\red{<#1>}%
+%D \the\everyinsertpositionaction
+%D \the\everypositionaction
+%D \ifcollectMPpositiongraphics
+%D % can save a lot of run time
+%D \pushMPdrawing
+%D \MPshiftdrawingtrue
+%D \resetMPdrawing
+%D \getvalue{\POSactionprefix#1::}%
+%D \ifMPdrawingdone
+%D \getMPdrawing
+%D \fi
+%D \resetMPdrawing
+%D \popMPdrawing
+%D \else
+%D \getvalue{\POSactionprefix#1::}%
+%D \fi
+%D \cleanuppositionaction{#1}%
+%D \egroup
+%D \smashedbox\scratchbox
+%D \else
+%D % shouldn't happen too often
+%D \traceposstring\clap\cyan{<#1>}%
+%D \fi
+%D \fi}
+%D \stoptyping
+
+\def\doifpositionaction#1%
+ {\ifundefined{\POSactionprefix#1::}%
+ \@EA\gobbleoneargument
+ \else
+ \@EA\firstofoneargument
+ \fi}
+
+\def\doifpositionactionelse#1%
+ {\ifundefined{\POSactionprefix#1::}%
+ \@EA\secondoftwoarguments
+ \else
+ \@EA\firstoftwoarguments
+ \fi}
+
+%D We can copy a position with:
+%D
+%D \starttyping
+%D \copyposition {to} {from}
+%D \stoptyping
+%D
+%D Again, this is a global action.
+
+\def\copyposition#1#2%
+ {\bgroup
+ %\edef\to {\POSprefix#1}%
+ \edef\from{\POSprefix#2}%
+ \ifundefined\from\else
+ % \global\@EA\@EA\@EA\let\@EA\csname\@EA\to\@EA\endcsname\csname\from\endcsname
+ \global\@EA\let\csname\POSprefix#1\@EA\endcsname\csname\from\endcsname
+ \fi
+ \egroup}
+
+%D The fact that handling positions is a two pass operation, is
+%D one of the reasons why we need to be able to test for
+%D existence, using:
+%D
+%D \starttyping
+%D \doifpositionelse {identifier} {found action} {not found action}
+%D \stoptyping
+
+% \def\doifpositionelse#1%
+% {\doifdefinedelse{\POSprefix#1}}
+
+\def\doifpositionelse#1%
+ {\ifundefined{\POSprefix#1}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+%D We have now arrived at a few macros that would make sense as
+%D support macros, but ended up in the core.
+
+%D \macros
+%D {xypos}
+%D
+%D We have several macros available to save positions. Later
+%D we will see applications.
+%D
+%D \starttabulate[|l|l||]
+%D \NC \type {\xypos} \NC \NC simple position with no dimensions \NC \NR
+%D \NC \type {\hpos} \NC \NC position and characteristics of a \type {\hbox} \NC \NR
+%D \NC \type {\vpos} \NC \NC position and characteristics of a \type {\vbox} \NC \NR
+%D \NC \type {\bpos} \NC b: \NC begin point in a line \NC \NR
+%D \NC \type {\epos} \NC e: \NC end point in a line \NC \NR
+%D \NC \type {\fpos} \NC f: \NC begin point in a paragraph \NC \NR
+%D \NC \type {\tpos} \NC t: \NC end point in a paragraph \NC \NR
+%D \stoptabulate
+%D
+%D Each macro takes an identifier as argument, and the \type
+%D {\hpos} and \type {\vpos} also expect box content.
+
+% \def\xypos{\initializenextposition\dosetposition}
+
+\let\xypos\setpositiononly
+
+\def\hpos#1{\dontleavehmode\setpositionbox{#1}\hbox}
+\def\vpos#1{\setpositionbox{#1}\vbox}
+
+\def\bpos#1{\hpos{b:#1}{\strut}\ignorespaces}
+\def\epos#1{\removelastspace\hpos{e:#1}{\strut}}
+
+\def\fpos#1%
+ {\setpositionplus{b:#1}\parposcounter\horizontalstrut
+ \ignorespaces}
+
+\def\tpos#1%
+ {\removelastspace
+ \setpositionplus{e:#1}\parposcounter\horizontalstrut}
+
+\def\ffpos#1%
+ {\setpositionplus{b:#1}\parposcounter\horizontalstrut\wpos{#1}%
+ \ignorespaces}
+
+\def\ttpos#1%
+ {\removelastspace
+ \setpositionplus{e:#1}\parposcounter\horizontalstrut}
+
+\def\wpos#1%
+ {\dontleavehmode\vadjust % may disappear if buried
+ {\setbox0\hbox{\raise\strutdp\hbox{\rawwpos{#1}}}%
+ \rlap{\smashedbox0}}}
+
+\def\wwpos#1% \hsmashed{\llap{\rawwpos{#1}}}
+ {\rlap
+ {\setbox0\hbox{\rawwpos{#1}}%
+ \smashedbox0}}
+
+\def\rawwpos#1%
+ {\hpos{w:#1}
+ {\strut
+ \hskip-\leftskip
+ \hskip\hsize
+ \hskip-\rightskip}}
+
+% the next macro disables par positions (in inner boxes) and
+% only registers the width
+
+\def\setinnerparpositions
+ {\let\fpos\ffpos
+ \let\tpos\ttpos
+ \let\wpos\wwpos}
+
+% example of usage: (see for application "techniek")
+%
+% \appendtoks
+% \setinnerparpositions
+% \to \everytabulate
+
+%D When we want to calculate more complex backgrounds, we
+%D need to know what the current indentation scheme is. At
+%D the cost of many positions and memory, we can keep track
+%D of them. This mechanism is activated automatically
+%D based on information collected in the previous pass.
+
+\newcounter\parposcounter
+
+\newif\ifpositioningpar
+
+\def\efficientdimen#1%
+ {\the#1} % \ifdim#1=\zeropoint\string\!!zeropoint\else\the#1\fi}
+
+% we can check for used entries, and if not, then not add one
+
+\def\registerparoptions
+ {\ifpositioningpar \ifpositioning \iftrialtypesetting \else
+ \ifinpagebody \else \ifmmode \else \ifinformula \else
+ \ifprocessingverbatim
+ \iflinepar \doregisterparoptions \fi
+ \else
+ \doregisterparoptions
+ \fi
+ \fi \fi \fi
+ \fi \fi \fi}
+
+\chardef\parposstrut=1 % 0 => no strut data, so fall backs used
+
+\def\doregisterparoptions
+ {\doglobal\increment\parposcounter
+ \begingroup
+ \leftskip 1\leftskip
+ \rightskip1\rightskip
+ \setpositiondataplus
+ {p:\parposcounter}% % identifier
+ {\zeropoint}%
+ {\strutht}%
+ {\strutdp}%
+ {\efficientdimen\hsize ,% 1
+ \efficientdimen\leftskip ,% 2
+ \efficientdimen\rightskip ,% 3
+ \efficientdimen\hangindent,% 4
+ \the\hangafter ,% 5
+ \efficientdimen\parindent }% 6
+ %\normalhbox{\registerparsymbol}%
+ \registerparsymbol
+ \endgroup}
+
+\newif\iftracepositions
+
+\def\traceposstring#1#2#3%
+ {\iftracepositions\smashedhbox{#1{\infofont#2#3}}\fi}
+
+\def\registerparsymbol
+ {\iftracepositions
+ \smashedhbox to \zeropoint
+ {\hss
+ \blue
+ \llap{\infofont\number\parposcounter}%
+ \scratchdimen\onepoint
+ \vrule
+ \!!width 4\scratchdimen
+ \!!height2\scratchdimen
+ \!!depth 2\scratchdimen
+ \hss}%
+ \fi}
+
+% \appendtoks \registerparoptions \to \everypar
+
+%D \macros
+%D {doifoverlappingelse}
+%D
+%D A first application of positional information, is to
+%D determine if two boxes do overlap:
+%D
+%D \starttyping
+%D \doifoverlappingelse{point a}{point b}
+%D {action when overlapping}
+%D {action when not overlapping}
+%D \stoptyping
+
+% \def\doifoverlappingelse#1#2#3#4%
+% {\relax\ifnum\MPp{#1}=\MPp{#2}\relax
+% \bgroup
+% \donefalse
+% \def\check##1##2%
+% {\ifdone\else
+% \ifdim\dimen1##1<\dimen0 \else \ifdim\dimen1##1>\dimen2 \else
+% \ifdim\dimen1##2<\dimen4 \else \ifdim\dimen1##2>\dimen6 \else
+% \donetrue
+% \fi\fi
+% \fi\fi
+% \fi}%
+% \dimen 0=\MPx{#1}%
+% \dimen 2=\MPx{#1}\advance\dimen 2 \MPw{#1}%
+% \dimen 4=\MPy{#1}\advance\dimen 4 -\MPd{#1}%
+% \dimen 6=\MPy{#1}\advance\dimen 6 \MPh{#1}%
+% \dimen10=\MPx{#2}%
+% \dimen12=\MPx{#2}\advance\dimen12 \MPw{#2}%
+% \dimen14=\MPy{#2}\advance\dimen14 -\MPd{#2}%
+% \dimen16=\MPy{#2}\advance\dimen16 \MPh{#2}%
+% %\message{\the\dimen 0-\the\dimen 2,\the\dimen 4-\the\dimen 6}\wait
+% %\message{\the\dimen10-\the\dimen12,\the\dimen14-\the\dimen16}\wait
+% \check04\check24\check26\check06\ifdone\egroup#3\else\egroup#4\fi
+% \else
+% #4%
+% \fi}
+
+% \newdimen\overlappingmargin \overlappingmargin\zeropoint
+%
+% \overlappingmargin-2sp % better
+
+\def\overlappingmargin{-2\scaledpoint}
+
+\def\doifoverlappingelse#1#2%
+ {\begingroup
+ \donefalse
+ \edef\!!stringa{#1}\edef\!!stringb{#2}%
+ \ifnum\MPp\!!stringa=\MPp\!!stringb\relax
+ \!!dimena\MPx\!!stringa
+ \!!dimenb\MPx\!!stringa\advance\!!dimenb \MPw\!!stringa
+ \!!dimenc\MPy\!!stringa\advance\!!dimenc-\MPd\!!stringa
+ \!!dimend\MPy\!!stringa\advance\!!dimend \MPh\!!stringa
+ \!!dimene\MPx\!!stringb
+ \!!dimenf\MPx\!!stringb\advance\!!dimenf \MPw\!!stringb
+ \!!dimeng\MPy\!!stringb\advance\!!dimeng-\MPd\!!stringb
+ \!!dimenh\MPy\!!stringb\advance\!!dimenh \MPh\!!stringb
+ \ifdim\overlappingmargin=\zeropoint\else
+ \advance\!!dimena-\overlappingmargin
+ \advance\!!dimenb+\overlappingmargin
+ \advance\!!dimenc-\overlappingmargin
+ \advance\!!dimend+\overlappingmargin
+ \advance\!!dimene-\overlappingmargin
+ \advance\!!dimenf+\overlappingmargin
+ \advance\!!dimeng-\overlappingmargin
+ \advance\!!dimenh+\overlappingmargin
+ \fi
+ % more often eh fb eg fg
+ \def\checkone##1##2%
+ {\ifdim##1<\!!dimena \else \ifdim##1>\!!dimenb \else
+ \ifdim##2<\!!dimenc \else \ifdim##2>\!!dimend \else
+ \donetrue
+ \fi\fi
+ \fi\fi}%
+ \def\checktwo##1##2%
+ {\ifdim##1<\!!dimene \else \ifdim##1>\!!dimenf \else
+ \ifdim##2<\!!dimeng \else \ifdim##2>\!!dimenh \else
+ \donetrue
+ \fi\fi
+ \fi\fi}%
+ \checkone\!!dimene\!!dimeng \ifdone \else
+ \checkone\!!dimene\!!dimenh \ifdone \else
+ \checkone\!!dimenf\!!dimeng \ifdone \else
+ \checkone\!!dimenf\!!dimenh \ifdone \else
+ \checktwo\!!dimena\!!dimenc \ifdone \else
+ \checktwo\!!dimena\!!dimend \ifdone \else
+ \checktwo\!!dimenb\!!dimene \ifdone \else
+ \checktwo\!!dimenb\!!dimenc \fi \fi \fi \fi \fi \fi \fi
+ \fi
+ \ifdone
+ \endgroup\expandafter\firstoftwoarguments
+ \else
+ \endgroup\expandafter\secondoftwoarguments
+ \fi}
+
+%D \macros
+%D {doifpositionsonsamepageelse,
+%D doifpositionsonthispageelse}
+%D
+%D Instead of letting the user handle fuzzy expansion, we
+%D provide a simple test on positione being on the same page.
+%D
+%D \starttyping
+%D \doifpositionsonsamepageelse{point a}{point b}
+%D {action when on same page}
+%D {action when not on same page}
+%D \doifpositionsonthispageelse{point a}{point b}
+%D {action when on this page}
+%D {action when not on this page}
+%D \stoptyping
+
+\def\dodoifpositionsonsamepageelse#1#2#3#4%
+ {\bgroup
+ \scratchcounter#1\donefalse
+ \def\docommando##1%
+ {\ifcase\scratchcounter
+ \scratchcounter\MPp{##1}\donetrue
+ \else
+ \ifnum\scratchcounter=\MPp{##1}\relax\else\donefalse\fi
+ \fi}%
+ \rawprocesscommalist[#2]\docommando
+ \ifdone\egroup#3\else\egroup#4\fi}
+
+\def\doifpositionsonsamepageelse%
+ {\dodoifpositionsonsamepageelse{0}}
+
+\def\doifpositionsonthispageelse#1#2#3%
+ {\dodoifpositionsonsamepageelse\realfolio}
+
+%D Before we come to graphics support, we have to make sure of
+%D the reference point on the page. The next macro does so and
+%D is hooked into the page building routine.
+
+% in the future, the depth of tail will reflect page depth
+
+\def\textanchor{text:\realfolio}
+
+% \def\placepositionanchors % todo : depth pagebox
+% {\ifpositioning
+% \setbox\scratchbox\vbox to \teksthoogte
+% {\topskipcorrection
+% \hbox{\strut\dopositionaction\headanchor}%
+% \vfill
+% \hbox{\strut\dopositionaction\tailanchor}}%
+% \dp\scratchbox\zeropoint
+% \wd\scratchbox\zetbreedte % not \zeropoint, else wrong text backgrounds
+% \hpos\textanchor{\box\scratchbox}%
+% \else
+% \vskip\teksthoogte
+% \fi}
+
+\def\placepositionanchors % todo : depth pagebox
+ {\ifpositioning
+ \setbox\scratchbox\vbox to \textheight
+ {\simpletopskipcorrection
+ \hbox{\strut\dopositionaction\headanchor}%
+ \vfill
+ \hbox{\strut\dopositionaction\tailanchor}}%
+ \dp\scratchbox\zeropoint
+ \wd\scratchbox\makeupwidth % not \zeropoint, else wrong text backgrounds
+ \hpos\textanchor{\box\scratchbox}%
+ \else
+ \vskip\textheight
+ \fi}
+
+%D The first version of this module implemented head and tail
+%D anchors. Currently we stick to just one anchor and derive
+%D the head and tail anchors from this one.
+
+\def\headanchor{head:\realfolio} % virtual position
+\def\tailanchor{tail:\realfolio} % virtual position
+
+\def\presetpositionanchors% compatibility hack (still needed?)
+ {\ifpositioning
+ \dopresetpositionanchors
+ \fi}
+
+% \def\dopresetpositionanchors
+% {\bgroup
+% \dimen0=\ifdim\topskip>\strutht\topskip\else\strutht\fi
+% \dimen2=\MPy\textanchor
+% \dimen4=\dimen2
+% \advance\dimen2 \MPh\textanchor % space is essential
+% \advance\dimen2 -\dimen0
+% \advance\dimen4 \strutdp
+% \dimen6=\MPx\textanchor
+% \dimen8=\MPw\textanchor
+% \setxvalue{\POSprefix\headanchor}%
+% {\realfolio,\withoutpt\the\dimen6,\withoutpt\the\dimen2,%
+% \withoutpt\the\dimen8,\withoutpt\the\dimen0,\withoutpt\the\strutdp}%
+% \setxvalue{\POSprefix\tailanchor}%
+% {\realfolio,\withoutpt\the\dimen6,\withoutpt\the\dimen4,%
+% \withoutpt\the\dimen8,\withoutpt\the\strutht,\withoutpt\the\strutdp}%
+% %\showanchor\textanchor\showanchor\headanchor\showanchor\tailanchor\wait
+% \egroup}
+
+\def\dopresetpositionanchors
+ {\bgroup
+ \!!dimena\ifdim\topskip>\strutht\topskip\else\strutht\fi
+ \!!dimenb\MPy\textanchor
+ \!!dimenc\!!dimenb
+ \advance\!!dimenb \MPh\textanchor % space is essential
+ \advance\!!dimenb -\!!dimena
+ \advance\!!dimenc \strutdp
+ \!!dimend\MPx\textanchor
+ \!!dimene\MPw\textanchor
+ \setxvalue{\POSprefix\headanchor}%
+ {\realfolio,\withoutpt\the\!!dimend,\withoutpt\the\!!dimenb,%
+ \withoutpt\the\!!dimene,\withoutpt\the\!!dimena,\withoutpt\the\strutdp}%
+ \setxvalue{\POSprefix\tailanchor}%
+ {\realfolio,\withoutpt\the\!!dimend,\withoutpt\the\!!dimenc,%
+ \withoutpt\the\!!dimene,\withoutpt\the\strutht,\withoutpt\the\strutdp}%
+ %\showanchor\textanchor\showanchor\headanchor\showanchor\tailanchor\wait
+ \egroup}
+
+\def\showanchor#1%
+ {\expanded{\writestatus{#1}
+ {\MPp{#1}\string|\MPx{#1}\string|\MPy{#1}\string|%
+ \MPw{#1}\string|\MPh{#1}\string|\MPd{#1}}}}
+
+%D We set these anchors before and after each page.
+
+\appendtoks \presetpositionanchors \to \beforeeverypage
+\appendtoks \presetpositionanchors \to \aftereverypage
+
+%D \macros
+%D {positionoverlay,startpositionoverlay}
+%D
+%D As long as we're dealing with graphics it makes much sense
+%D to use the available overlay mechanism. For this purpose, we
+%D define some dedicated overlay extensions.
+%D
+%D \startbuffer[sample]
+%D \defineoverlay [sample] [\positionoverlay{sample}]
+%D
+%D \startpositionoverlay{sample}
+%D \setMPpositiongraphic{A-1}{connectcenter}{from=A-1,to=A-2}
+%D \stoppositionoverlay
+%D \stopbuffer
+%D
+%D \typebuffer[sample]
+%D
+%D \startbuffer[graphic]
+%D \startMPpositiongraphic{connectcenter}
+%D path pa, pb ; pair ca, cb ;
+%D initialize_box(\MPpos{\MPvar{from}}) ; pa := pxy ; ca := cxy ;
+%D initialize_box(\MPpos{\MPvar{to}}) ; pb := pxy ; cb := cxy ;
+%D draw pa withcolor red ;
+%D draw pb withcolor red ;
+%D draw ca -- cb withcolor blue ;
+%D anchor_box(\MPanchor{\MPvar{from}}) ;
+%D \stopMPpositiongraphic
+%D \stopbuffer
+%D
+%D We can best demonstrate this in an example, say:
+%D
+%D \startbuffer[text]
+%D \framed
+%D [backgroundachtergrond=sample,align=middle,width=7cm]
+%D {We want to connect \hpos {A-1} {this} word with its
+%D grammatical cousin \hpos {A-2} {that}.}
+%D \stopbuffer
+%D
+%D \typebuffer[text]
+%D
+%D \startlinecorrection
+%D %\getbuffer[graphic,sample,text]
+%D \stoplinecorrection
+%D
+%D The graphic is defined in the following way, using some
+%D macros defined in an auxiliary \METAPOST\ module that is
+%D preloaded.
+%D
+%D \typebuffer[graphic]
+
+\def\MPanchoridentifier{mpa} % {mp-anchor}
+\def\MPoverlayposprefix{MO::}
+
+% obsolete and wrong anyway
+%
+% \long\def\defineMPpositiongraphic#1%
+% {\long\setvalue{\MPoverlayposprefix#1}}
+
+%D The rest of the definitions concerning such overlays may
+%D look complicated,
+
+\let\currentpositionoverlay\empty
+
+%D Position actions are automatically executed when a position
+%D is set.
+
+% \def\positionoverlay#1%
+% {\ifpositioning
+% \vbox to \overlayheight
+% {\edef\MPanchor##1{\MPpos{#1::\MPanchoridentifier:\realfolio}}%
+% \the\everyinsertpositionaction
+% \copyposition{#1::\MPanchoridentifier}{#1::\MPanchoridentifier:\realfolio}%
+% \hpos
+% {#1::\MPanchoridentifier:\realfolio}
+% {\hbox to \overlaywidth{\dopositionaction{#1::\MPanchoridentifier}\hss}}%
+% \vfill}%
+% \fi}
+
+\let\MPanchornumber\realfolio
+
+% \def\positionoverlay#1%
+% {\ifpositioning
+% \vbox to \overlayheight
+% {\edef\MPanchorid{#1::\MPanchoridentifier:\MPanchornumber}%
+% \edef\MPanchor##1{\MPpos{\MPanchorid}}%
+% \the\everyinsertpositionaction
+% \copyposition{#1::\MPanchoridentifier}{#1::\MPanchoridentifier:\MPanchornumber}%
+% \hpos
+% {#1::\MPanchoridentifier:\MPanchornumber}
+% {\hbox to \overlaywidth{\dopositionaction{#1::\MPanchoridentifier}\hss}}%
+% \vfill}%
+% \fi}
+
+% \def\positionoverlay#1% the test prevents too many redundant positions
+% {\ifpositioning % in (not used) text* position layers
+% \vbox to \overlayheight
+% {\doifpositionactionelse{#1::\MPanchoridentifier}%
+% {\edef\MPanchorid{#1::\MPanchoridentifier:\MPanchornumber}%
+% \edef\MPanchor##1{\MPpos{\MPanchorid}}%
+% \the\everyinsertpositionaction
+% \copyposition{#1::\MPanchoridentifier}{#1::\MPanchoridentifier:\MPanchornumber}%
+% \hpos
+% {#1::\MPanchoridentifier:\MPanchornumber}%
+% {\hbox to \overlaywidth{\dopositionaction{#1::\MPanchoridentifier}\hss}}}%
+% {\hbox to \overlaywidth{\hss}}%
+% \vfill}%
+% \fi}
+
+\def\positionoverlay#1% the test prevents too many redundant positions
+ {\ifpositioning % in (not used) text* position layers
+ \vbox to \overlayheight
+ {\doifpositionactionelse{#1::\MPanchoridentifier}%
+ {\edef\MPanchorid{#1::\MPanchoridentifier:\MPanchornumber}%
+ \edef\MPanchor##1{\MPpos{\MPanchorid}}%
+ \the\everyinsertpositionaction
+ \copyposition{#1::\MPanchoridentifier}{#1::\MPanchoridentifier:\MPanchornumber}%
+ \hpos
+ {#1::\MPanchoridentifier:\MPanchornumber}%
+ % this is ok
+ %{\hbox to \overlaywidth{\dopositionaction{#1::\MPanchoridentifier}\hss}}}%
+ % but this one prevents cyclic runs due to
+ % rounding errors
+ {\setbox\scratchbox\hbox to \overlaywidth
+ {\dopositionaction{#1::\MPanchoridentifier}\hss}%
+ \ht\scratchbox\overlayheight
+ \dp\scratchbox\zeropoint
+ \box\scratchbox}}%
+ {\hbox to \overlaywidth{\hss}}%
+ \vfill}%
+ \fi}
+
+\def\startpositionoverlay#1%
+ {\iftrialtypesetting % we don't want redundant entries in the list
+ \@EA\gobbleuntil\@EA\stoppositionoverlay
+ \else
+ \def\currentpositionoverlay{#1}%
+ \fi}
+
+\def\stoppositionoverlay
+ {\let\currentpositionoverlay\empty}
+
+\def\resetpositionoverlay#1%
+ {\dosetpositionaction{#1::\MPanchoridentifier::}{}}
+
+%D Here the complication has to do with collecting actions
+%D for later execution. This collection is especially handy
+%D when we want to move actions to a specific layer.
+%D Such series of actions are stored in a macro (the one
+%D with the funny \type {++}) which is cleaned up after each
+%D invocation.
+
+\newtoks\everycleanpositionaction
+\newtoks\everyinsertpositionaction
+
+%\def\cleanuppositionaction#1%
+% {\doifdefined{\POSactionprefix#1++}
+% {\the\everycleanpositionaction
+% \setxvalue{\POSactionprefix#1++}{\getvalue{\POSactionprefix#1++}}}}
+
+%\def\cleanuppositionaction#1%
+% {\ifundefined{\POSactionprefix#1++}\else
+% \the\everycleanpositionaction
+% \setxvalue{\POSactionprefix#1++}{\getvalue{\POSactionprefix#1++}}%
+% \fi}
+
+\def\cleanuppositionaction#1% not in trialtypesetting
+ {\ifundefined{\POSactionprefix#1++}\else
+ \the\everycleanpositionaction
+ \iflocalpositioning
+ \letgvalue{\POSactionprefix#1++}\empty
+ \else
+ \setxvalue{\POSactionprefix#1++}{\getvalue{\POSactionprefix#1++}}%
+ \fi
+ \fi}
+
+\def\handlepositionaction#1\with#2\on#3%
+ {\bgroup
+ \ifx\currentpositionoverlay\empty
+ \edef\!!stringa{#3}% no layer, just pos itself as anchor
+ \else
+ \edef\!!stringa{\currentpositionoverlay::\MPanchoridentifier}%
+ \fi
+ \edef\!!stringc{\POSactionprefix\!!stringa++}%
+ \expanded{\dosetpositionaction{\!!stringa}{\noexpand\getvalue{\!!stringc}}}%
+ \global\let#1\relax
+ \edef\!!stringb{\executeifdefined\!!stringc\empty}%
+ \setxvalue\!!stringc{\!!stringb#1#2}%
+ \egroup}
+
+%D The indirectness enables us redefine macros for special
+%D purposes, like a cleanup.
+
+\def\handlepositionboxes#1#2#3%
+ {\handlepositionaction\dohandlepositionboxes\with{#1}{#2}{#3}\on{#2}}
+
+\def\doinsertpositionboxes#1#2#3% pos tag setups
+ {\ifnum\MPp{#1}=\realpageno\relax
+ % \doifdefined{\MPoverlayposprefix#1}
+ % {\getvalue{\MPoverlayposprefix#1}{#1}{#2}{#3}}%
+ \executeifdefined{\MPoverlayposprefix#1}%
+ \gobblethreearguments{#1}{#2}{#3}%
+ \fi}
+
+\appendtoks
+ \let\dohandlepositionboxes\doinsertpositionboxes % was handle ?
+\to \everyinsertpositionaction
+
+\def\docleanpositionboxes#1#2#3% pos tag setups
+ {\ifnum\MPp{#1}<\realpageno \else
+ \noexpand \dohandlepositionboxes{#1}{#2}{#3}% reinsert
+ \fi}
+
+\appendtoks
+ \let\dohandlepositionboxes\docleanpositionboxes
+\to \everycleanpositionaction
+
+%D A position graphic is a normal (non||reused) \METAPOST\
+%D graphic, used immediately, with zero dimensions, so that a
+%D sequence of them does not harm.
+
+\newbox\positiongraphicbox
+
+\def\startMPpositiongraphic % id setups
+ {\dodoublegroupempty\dostartMPpositiongraphic}
+
+\long\def\dostartMPpositiongraphic#1#2#3\stopMPpositiongraphic
+ {\long\setgvalue{MPG:#1}% tag list mpcode
+ {\useMPpositiongraphic{#1}{#2}{#3}}}
+
+%\def\prepareMPpositionvariables
+% {\doifundefined{\@@meta self}{\setvalue{\@@meta self}{\currentposition}}%
+% \doifundefined{\@@meta from}{\setvalue{\@@meta from}{\currentposition}}}
+
+\def\prepareMPpositionvariables
+ {\ifundefined{\@@meta self}\setvalue{\@@meta self}{\currentposition}\fi
+ \ifundefined{\@@meta from}\setvalue{\@@meta from}{\currentposition}\fi}
+
+% \long\def\useMPpositiongraphic#1#2#3%
+% {\bgroup
+% \prepareMPvariables{#2}%
+% \prepareMPpositionvariables
+% \enableincludeMPgraphics
+% \startMPgraphic#3\stopMPgraphic
+% \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+% \deallocateMPslot\currentMPgraphic
+% \placeMPgraphic
+% \egroup}
+
+\newif\ifcollectMPpositiongraphics \collectMPpositiongraphicstrue
+
+\long\def\useMPpositiongraphic#1#2#3%
+ {\bgroup
+ \prepareMPvariables{#2}%
+ \prepareMPpositionvariables
+ \enableincludeMPgraphics
+ \ifcollectMPpositiongraphics
+ \expanded{\startMPdrawing#3\noexpand\stopMPdrawing}%
+ \global\MPdrawingdonetrue
+ \else
+ \startMPgraphic#3\stopMPgraphic
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic
+ \fi
+ \egroup}
+
+% Now we need a adapted action handler:
+
+% \def\dopositionaction#1% test saves hash entry in etex
+% {\ifundefined{\POSactionprefix#1::}\else
+% \ifnum\MPp{#1}>\zerocount % new
+% \bgroup
+% \traceposstring\clap\red{<#1>}%
+% \the\everyinsertpositionaction
+% \the\everypositionaction
+% \ifcollectMPpositiongraphics
+% % can save a lot of run time
+% \pushMPdrawing
+% \MPshiftdrawingtrue
+% \resetMPdrawing
+% \getvalue{\POSactionprefix#1::}%
+% \ifMPdrawingdone
+% \getMPdrawing
+% \fi
+% \resetMPdrawing
+% \popMPdrawing
+% \else
+% \getvalue{\POSactionprefix#1::}%
+% \fi
+% \cleanuppositionaction{#1}%
+% \egroup
+% \else
+% % shouldn't happen too often
+% \traceposstring\clap\cyan{<#1>}%
+% \fi
+% \fi}
+
+\def\dopositionaction#1% test saves hash entry in etex
+ {\ifundefined{\POSactionprefix#1::}\else
+ \ifnum\MPp{#1}>\zerocount % new
+ \bgroup
+ \setbox\scratchbox\hbox
+ \bgroup
+ \traceposstring\clap\red{<#1>}%
+ \the\everyinsertpositionaction
+ \the\everypositionaction
+ \ifcollectMPpositiongraphics
+ % can save a lot of run time
+ \pushMPdrawing
+ \MPshiftdrawingtrue
+ \resetMPdrawing
+ \getvalue{\POSactionprefix#1::}%
+ \ifMPdrawingdone
+ \getMPdrawing
+ \fi
+ \resetMPdrawing
+ \popMPdrawing
+ \else
+ \getvalue{\POSactionprefix#1::}%
+ \fi
+ \cleanuppositionaction{#1}%
+ \egroup % smashed is really needed else
+ \smashedbox\scratchbox % we get problems with too big
+ \egroup % overlays (s-pre-0x.tex)
+ \else
+ % shouldn't happen too often
+ \traceposstring\clap\cyan{<#1>}%
+ \fi
+ \fi}
+
+\def\MPpositiongraphic
+ {\dodoublegroupempty\doMPpositiongraphic}
+
+% \def\doMPpositiongraphic#1#2% tag setups
+% {\bgroup
+% \def\@@meta{#1:}%
+% \setupMPvariables[#2]%
+% \prepareMPpositionvariables
+% \MPshiftdrawingtrue
+% \def\doMPpositiongraphic##1##2{\getvalue{MPG:##1}}% temp hack
+% \setbox\positiongraphicbox\hbox
+% {\ignorespaces
+% \executeifdefined{MPM:#1}{\executeifdefined{MPG:#1}\donothing}%
+% \removelastspace}%
+% \smashbox\positiongraphicbox
+% \box\positiongraphicbox
+% \egroup}
+
+\def\doMPpositiongraphic#1#2% tag setups
+ {\bgroup
+ \def\@@meta{#1:}%
+ \setupMPvariables[#2]%
+ \prepareMPpositionvariables
+ \MPshiftdrawingtrue
+ \def\doMPpositiongraphic##1##2%
+ {{% new, see (techniek)
+ \def\@@meta{##1:}%
+ \setupMPvariables[#2,##2]%
+ \prepareMPpositionvariables
+ % and needed
+ \getvalue{MPG:##1}}}% temp hack
+ \setbox\positiongraphicbox\hbox
+ {\ignorespaces
+ \executeifdefined{MPM:#1}{\executeifdefined{MPG:#1}\donothing}%
+ \removelastspace}%
+ \smashbox\positiongraphicbox
+ \box\positiongraphicbox
+ \egroup}
+
+\long\def\startMPpositionmethod#1#2\stopMPpositionmethod
+ {\long\setgvalue{MPM:#1}{#2}} % todo: var list here
+
+%D Simple one position graphics.
+
+\def\setMPpositiongraphic
+ {\dotriplegroupempty\dosetMPpositiongraphic}
+
+\def\dosetMPpositiongraphic#1#2#3% pos tag vars
+ {\ifx\currentpositionoverlay\empty
+ \dosetpositionaction{#1}{\MPpositiongraphic{#2}{#3}}%
+ \else % silly can be one
+ \handlepositiongraphics{#1}{#2}{#3}%
+ \fi}
+
+\def\handlepositiongraphics#1#2#3% combine with boxes
+ {\handlepositionaction\dohandleMPpositiongraphic\with{#1}{#2}{#3}\on{#2}}
+
+\def\doinsertMPpositiongraphic#1#2#3% pos tag setups
+ {\ifnum\MPp{#1}=\realpageno\relax % extra saveguard
+ \def\currentposition{#1}\MPpositiongraphic{#2}{#3}%
+ \fi}
+
+\appendtoks
+ \let\dohandleMPpositiongraphic\doinsertMPpositiongraphic
+\to \everyinsertpositionaction
+
+\def\docleanMPpositiongraphic#1#2#3% pos tag setups
+ {\ifnum\MPp{#1}<\realpageno \else
+ \noexpand \dohandleMPpositiongraphic{#1}{#2}{#3}%
+ \fi}
+
+\appendtoks
+ \let\dohandleMPpositiongraphic\docleanMPpositiongraphic
+\to \everycleanpositionaction
+
+%D Graphics that span two positions.
+
+\def\setMPpositiongraphicrange
+ {\doquadruplegroupempty\dosetMPpositiongraphicrange}
+
+\def\dosetMPpositiongraphicrange#1#2#3#4% bpos epos tag vars
+ {\ifx\currentpositionoverlay\empty
+ \dosetpositionaction{#1}{\MPpositiongraphic{#3}{#4}}%
+ \else
+ \handlepositiongraphicsrange{#1}{#2}{#3}{#4}%
+ \fi}
+
+\def\handlepositiongraphicsrange#1#2#3#4%
+ {\handlepositionaction\dohandleMPpositiongraphicrange\with{#1}{#2}{#3}{#4}\on{#2}}
+
+% \def\doinsertMPpositiongraphicrange#1#2#3#4% pos pos tag setups
+% {\donefalse
+% \ifnum\MPp{#1}=\realpageno\relax \donetrue
+% \else\ifnum\MPp{#2}=\realpageno\relax \donetrue
+% \else\ifnum\MPp{#1}<\realpageno\relax\ifnum\MPp{#2}>\realpageno\donetrue
+% \fi\fi\fi\fi \ifdone
+% \def\currentposition{#1}\MPpositiongraphic{#3}{#4}%
+% \fi}
+
+\def\doinsertMPpositiongraphicrange#1#2#3#4% pos pos tag setups
+ {\ifnum\MPp{#1}\MPp{#2}>\zerocount
+ \iflocalpositioning
+ \donetrue
+ \else
+ \donefalse
+ \ifnum\MPp{#1}=\realpageno
+ \donetrue
+ \else\ifnum\MPp{#2}=\realpageno
+ \donetrue
+ \else\ifnum\MPp{#1}<\realpageno\relax\ifnum\MPp{#2}>\realpageno
+ \donetrue
+ \fi\fi\fi\fi
+ \fi
+ \ifdone
+ \def\currentposition{#1}\MPpositiongraphic{#3}{#4}%
+ \fi
+ \fi}
+
+\appendtoks
+ \let\dohandleMPpositiongraphicrange\doinsertMPpositiongraphicrange
+\to \everyinsertpositionaction
+
+\def\docleanMPpositiongraphicrange#1#2#3#4% pos tag setups
+ {\ifnum\MPp{#2}<\realpageno \else
+ \noexpand \dohandleMPpositiongraphicrange{#1}{#2}{#3}{#4}%
+ \fi}
+
+\appendtoks
+ \let\dohandleMPpositiongraphicrange\docleanMPpositiongraphicrange
+\to \everycleanpositionaction
+
+% will be overloaded, and/or code below moved to core-box
+
+\defineoverlay[\v!text-2][\positionoverlay{\v!text-2}]
+\defineoverlay[\v!text-1][\positionoverlay{\v!text-1}]
+\defineoverlay[\v!text+1][\positionoverlay{\v!text+1}]
+\defineoverlay[\v!text+2][\positionoverlay{\v!text+2}]
+
+%D The auxiliary \METAPOST\ macros are defined by default,
+%D by saying:
+
+\appendtoks
+ if unknown context_core : input mp-core.mp ; fi ;
+\to \MPextensions
+
+%D Some of these macros are pretty clever but too complicated
+%D to be nice. When things are kind of stable I'll clean up
+%D this mess.
+
+%D THIS NEEDS A CLEANUP
+
+\setupMPvariables
+ [mpos:box]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ fillcolor=lightgray,
+ filloffset=\!!zeropoint]
+
+\startMPpositiongraphic{mpos:box}{fillcolor,linecolor,linewidth}
+ initialize_box(\MPpos{\MPvar{self}}) ;
+ boxfillcolor := \MPvar{fillcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ boxlinewidth := \MPvar{linewidth} ;
+ boxfilloffset := \MPvar{filloffset} ;
+ draw_box ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+\setupMPvariables
+ [mpos:area]
+ [linecolor=blue,
+ linewidth=\linewidth,
+ fillcolor=lightgray,
+ filloffset=\!!zeropoint]
+
+\startMPpositiongraphic{mpos:area}{fillcolor,linecolor,linewidth}
+ initialize_area(\MPpos{b:\MPvar{self}},\MPpos{e:\MPvar{self}}) ;
+ boxfillcolor := \MPvar{fillcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ boxlinewidth := \MPvar{linewidth} ;
+ boxfilloffset := \MPvar{filloffset} ;
+ draw_area ;
+ anchor_area(\MPanchor{b:\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+%D This is already cleaned up.
+
+% gridtype = 1 => baseline
+% gridtype = 2 => betweenline
+
+\setupMPvariables
+ [mpos:par]
+ [mp=mpos:par:shape,
+ gridtype=0,
+ linetype=1,
+ filltype=1,
+ %snaptops=true, % not that nice: true/false
+ gridcolor=red,
+ linecolor=blue,
+ fillcolor=lightgray,
+ filloffset=\!!zeropoint,
+ linewidth=\linewidth,
+ gridwidth=\linewidth,
+ lineradius=.5\bodyfontsize]
+
+\startuseMPgraphic{mpos:par:shape}
+ \iftracepositions show_par \else draw_par \fi ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{mpos:par:setup}
+ boxgridtype := \MPvar{gridtype} ;
+ boxlinetype := \MPvar{linetype} ;
+ boxfilltype := \MPvar{filltype} ;
+ boxgridcolor := \MPvar{gridcolor} ;
+ boxlinecolor := \MPvar{linecolor} ;
+ boxfillcolor := \MPvar{fillcolor} ;
+ boxfilloffset := \MPvar{filloffset} ;
+ boxlinewidth := \MPvar{linewidth} ;
+ boxgridwidth := \MPvar{gridwidth} ;
+ boxlineradius := \MPvar{lineradius} ;
+ %snap_multi_par_tops := \MPvar{snaptops} ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{mpos:par:extra}
+ % user stuff, like:
+ % snap_multi_par_tops := false ;
+\stopuseMPgraphic
+
+% \startMPpositionmethod{mpos:par}
+% \doifpositionelse{w:\MPvar{self}}
+% {\startMPpositiongraphic{mpos:par}%
+% {fillcolor,filloffset,linecolor,gridcolor,linewidth,gridwidth,lineradius}
+% initialize_area_par(\MPpos{b:\MPvar{self}},
+% \MPpos{e:\MPvar{self}},
+% \MPpos{w:\MPvar{self}}) ;
+% \includeMPgraphic{mpos:par:setup} ;
+% \includeMPgraphic{mpos:par:extra} ;
+% \includeMPgraphic{\MPvar{mp}} ; % \includeMPgraphic{mpos:par:shape} ;
+% anchor_par(\MPanchor{b:\MPvar{self}}) ;
+% \stopMPpositiongraphic}
+% {\startMPpositiongraphic{mpos:par}%
+% {fillcolor,filloffset,linecolor,gridcolor,linewidth,gridwidth,lineradius}
+% initialize_par(\MPpos{b:\MPvar{self}},
+% \MPpos{e:\MPvar{self}},
+% \MPpos{text:\realfolio},
+% \MPpos{p:\MPparcounter},
+% \MPvv {p:\MPparcounter}{0,0,0,0,0,0}) ;
+% \includeMPgraphic{mpos:par:setup} ;
+% \includeMPgraphic{mpos:par:extra} ;
+% \includeMPgraphic{\MPvar{mp}} ; % \includeMPgraphic{mpos:par:shape} ;
+% anchor_par(\MPanchor{b:\MPvar{self}}) ;
+% \stopMPpositiongraphic}%
+% \MPpositiongraphic{mpos:par}{}%
+% \stopMPpositionmethod
+
+%D Less readable but shorter.
+
+\ifx\MPparcounter\undefined \newcounter\MPparcounter \fi
+
+\def\MPself {\MPvar{self}}
+\def\MPbself {b:\MPself}
+\def\MPeself {e:\MPself}
+\def\MPwself {w:\MPself}
+\def\MPparanchor{p:\MPparcounter}
+
+\def\MPl#1{\MPplus{#1}20}
+\def\MPr#1{\MPplus{#1}30}
+
+\startMPpositionmethod{mpos:par} %%%%%%%%%%% will become obsolete
+ \edef\MPparcounter{\MPv\MPbself{1}{0}}%
+ \doifpositionelse\MPwself
+ {\startMPpositiongraphic{mpos:par}%
+ {fillcolor,filloffset,linecolor,gridcolor,linewidth,gridwidth,lineradius}
+ initialize_area_par(\MPpos\MPbself,
+ \MPpos\MPeself,
+ \MPpos\MPwself) ;
+ \includeMPgraphic{mpos:par:setup} ;
+ \includeMPgraphic{mpos:par:extra} ;
+ \includeMPgraphic{\MPvar{mp}} ;
+ anchor_par(\MPanchor\MPbself) ;
+ \stopMPpositiongraphic}
+ {\startMPpositiongraphic{mpos:par}%
+ {fillcolor,filloffset,linecolor,gridcolor,linewidth,gridwidth,lineradius}
+ initialize_par(\MPpos\MPbself,
+ \MPpos\MPeself,
+ \MPpos\textanchor,
+ \MPpos\MPparanchor,
+ \MPvv \MPparanchor{0,0,0,0,0,0}) ;
+ \includeMPgraphic{mpos:par:setup} ;
+ \includeMPgraphic{mpos:par:extra} ;
+ \includeMPgraphic{\MPvar{mp}} ;
+ anchor_par(\MPanchor\MPbself) ;
+ \stopMPpositiongraphic}%
+ \MPpositiongraphic{mpos:par}{}%
+\stopMPpositionmethod
+
+%D The next alternative works in columnsets :
+
+% \iftracepositions show\else draw\fi_multi_pars ;
+
+\startuseMPgraphic{mpos:par:columnset}
+ \iftracepositions show_multi_pars \else draw_multi_pars \fi ;
+\stopuseMPgraphic
+
+\startMPpositionmethod{mpos:par:columnset}
+ \edef\MPparcounter{\MPv\MPbself{1}{0}}%
+ \startMPpositiongraphic{mpos:par}%
+ {fillcolor,filloffset,linecolor,gridcolor,%
+ linewidth,gridwidth,lineradius}
+ \includeMPgraphic{mpos:par:setup} ;
+ \includeMPgraphic{mpos:par:extra} ;
+ prepare_multi_pars(\MPpos\MPbself,\MPpos\MPeself,\MPpos\MPwself,
+ \MPpos\MPparanchor,\MPvv\MPparanchor{0,0,0,0,0,0}) ;
+ relocate_multipars(-\MPxy\MPanchorid) ; % inside layerpos
+ \includeMPgraphic{\MPvar{mp}} ;
+ \stopMPpositiongraphic
+ \MPpositiongraphic{mpos:par}{}%
+\stopMPpositionmethod
+
+%D \starttyping
+%D \setupbackground
+%D [test]
+%D [mp=mpos:par:columnset,
+%D methodmethode=mpos:par:columnset]
+%D \stoptyping
+
+%D We need to treat floats in a special way.
+
+\appendtoks
+ local_multi_par_area:=\iflocalpositioning true\else false\fi;
+\to \MPinitializations
+
+\def\textbackgroundoverlay#1%
+ {\iflocalpositioning\v!local\else\v!text\fi#1}
+
+\newcounter\localpositionnumber
+
+\def\MPanchornumber
+ {\iflocalpositioning\localpositionnumber\else\realfolio\fi}
+
+%D So far for the trickery.
+
+\newcounter\textbackgrounddepth
+
+\appendtoks
+ \savecurrentvalue\totalnofparbackgrounds\nofparbackgrounds
+\to \everybye
+
+\appendtoks
+ \initializeparbackgrounds
+\to \everystarttext
+
+\ifx\totalnofparbackgrounds\undefined \newcounter\totalnofparbackgrounds \fi
+\ifx\nofparbackgrounds \undefined \newcounter\nofparbackgrounds \fi
+
+\def\initializeparbackgrounds
+ {\ifcase\totalnofparbackgrounds\else
+ \global\positioningtrue
+ \global\positioningpartrue
+ \fi}
+
+\unexpanded\def\starttextbackground
+ {\bgroup
+ \increment\textbackgrounddepth
+ \dodoubleempty\dostarttextbackground}
+
+\let\dodostarttextbackground\relax
+\let\dodostoptextbackground \relax
+
+% \def\currentparbackground{background:0}
+% \def\nextparbackground {background:1}
+
+\def\currentparbackground{pbg:0}
+\def\nextparbackground {pbg:1}
+
+\def\btbanchor{b:\currentparbackground}
+\def\etbanchor{e:\currentparbackground}
+
+\def\nextbtbanchor{b:\nextparbackground}
+\def\nextetbanchor{e:\nextparbackground}
+
+\def\backgroundvariable#1%
+ {\csname\??td\currenttextbackground#1\endcsname}
+
+% \definetextbackground[more][state=start,backgroundcolor=red] % location=paragraph
+% \definetextbackground[test][state=start,backgroundcolor=green]
+%
+% \page \placefigure[left]{}{}
+%
+% \starttextbackground[test]
+% \readfile{ward}{}{}
+% \starttextbackground[more]
+% \readfile{ward}{}{}
+% \stoptextbackground
+% \readfile{ward}{}{}
+% \stoptextbackground
+%
+% \page \placefigure[right]{}{}
+%
+% \starttextbackground[test]
+% \readfile{ward}{}{}
+% \starttextbackground[more]
+% \readfile{ward}{}{}
+% \stoptextbackground
+% \readfile{ward}{}{}
+% \stoptextbackground
+
+\def\dostarttextbackground[#1][#2]%
+ {\checktextbackgrounds
+ \def\currenttextbackground{#1}%
+ \doglobal\increment\nofparbackgrounds
+ %\edef\currentparbackground{background:\nofparbackgrounds}%
+ \edef\currentparbackground{pbg:\nofparbackgrounds}%
+ \bgroup
+ \increment\nofparbackgrounds
+ %\xdef\nextparbackground{background:\nofparbackgrounds}%
+ \xdef\nextparbackground{pbg:\nofparbackgrounds}%
+ \egroup
+ % todo : \synchonizepositionpage{b:\currentparbackground}{s:\currentparbackground}%
+ \setuptextbackground[#1][#2]%
+ \let\dodostarttextbackground\relax
+ \let\dodostoptextbackground \relax
+ \doifvalue{\??td#1\c!state}\v!start
+ {\dopresettextbackground{#1}}%
+ \dodostarttextbackground}
+
+% todo \backgroundvariable\c!variant
+
+\def\dopresettextbackground#1% todo: \backgroundparameter
+ {\ExpandFirstAfter\processaction % \EFA niet echt nodig
+ [\getvalue{\??td#1\c!location}]
+ [ \v!text=>\let\dodostarttextbackground\dostarttextbackgroundtxt
+ \let\dodostoptextbackground \dostoptextbackgroundtxt,
+ \v!paragraph=>\let\dodostarttextbackground\dostarttextbackgroundpar
+ \let\dodostoptextbackground \dostoptextbackgroundpar,
+ \v!none=>\let\dodostarttextbackground\relax
+ \let\dodostoptextbackground \relax]%
+ \ifx\dodostarttextbackground\dostarttextbackgroundpar % untested
+ \ifnum\textbackgrounddepth>\plusone % new
+ \let\dodostarttextbackground\dostarttextbackgroundtxt
+ \let\dodostoptextbackground \dostoptextbackgroundtxt
+ \fi
+ \fi
+ \doifelsevalue{\??td#1\c!frame}\v!on
+ {\doifelsevalue{\??td#1\c!corner}\v!round
+ {\setvalue{\??td#1\c!frame}{2}}
+ {\setvalue{\??td#1\c!frame}{1}}}
+ {\setvalue{\??td#1\c!frame}{0}}%
+ \doifelsevalue{\??td#1\c!background}\v!color
+ {\setvalue{\??td#1\c!background}{1}}
+ {\setvalue{\??td#1\c!background}{0}}%
+ %\startpositionoverlay{\v!text\getvalue{\??td#1\c!level}}%
+ \startpositionoverlay{\textbackgroundoverlay{\getvalue{\??td#1\c!level}}}%
+ \expanded
+ {\setMPpositiongraphicrange % moet veel efficienter
+ {\btbanchor}% {b:\currentparbackground}%
+ {\etbanchor}% {e:\currentparbackground}%
+ {\getvalue{\??td#1\c!method}}%
+ {self=\currentparbackground,
+ mp=\getvalue{\??td#1\c!mp},
+ gridtype=\getvalue{\??td#1\c!alternative},
+ filltype=\getvalue{\??td#1\c!background},
+ linetype=\getvalue{\??td#1\c!frame},
+ gridcolor=\getvalue{\??td#1\c!framecolor},
+ linecolor=\getvalue{\??td#1\c!framecolor},
+ fillcolor=\getvalue{\??td#1\c!backgroundcolor},
+ filloffset=\getvalue{\??td#1\c!backgroundoffset},
+ gridwidth=\getvalue{\??td#1\c!rulethickness},
+ linewidth=\getvalue{\??td#1\c!rulethickness},
+ lineradius=\getvalue{\??td#1\c!radius}}}%
+ \stoppositionoverlay}
+
+\def\stoptextbackground
+ {\dodostoptextbackground
+ \carryoverpar\egroup}
+
+\def\starttextbackgroundmanual
+ {\dostartattributes{\??td\currenttextbackground}\c!style\c!color\empty
+ \fpos\currentparbackground\ignorespaces}
+
+\def\stoptextbackgroundmanual
+ {\tpos\currentparbackground
+ \dostopattributes}
+
+\def\dostarttextbackgroundtxt
+ {\ifvmode \leavevmode \fi
+ \dostartattributes{\??td\currenttextbackground}\c!style\c!color\empty
+ \fpos\currentparbackground\ignorespaces}
+
+\def\dostoptextbackgroundtxt
+ {\tpos\currentparbackground
+ \dostopattributes}
+
+% keep this simple one, it's used in prikkels and alike
+%
+% \def\dostarttextbackgroundpar
+% {\endgraf % new
+% \getvalue{\??td\currenttextbackground\c!before}%
+% \noindent\fpos\currentparbackground\ignorespaces
+% \bgroup
+% \nobreak \vskip-\lineheight \nobreak
+% \doassignsomeskip\getvalue{\??td\currenttextbackground\c!topoffset}\to\scratchskip
+% \kern\scratchskip\nobreak
+% \dosetleftskipadaption{\getvalue{\??td\currenttextbackground\c!leftoffset}}%
+% \advance\leftskip\leftskipadaption
+% \dosetleftskipadaption{\getvalue{\??td\currenttextbackground\c!rightoffset}}%
+% \advance\rightskip\leftskipadaption
+% \dostartattributes{\??td\currenttextbackground}\c!style\c!color{}%
+% \nowhitespace
+% \seteffectivehsize
+% \par}
+%
+% \def\dostoptextbackgroundpar
+% {\par
+% \dostopattributes
+% \doassignsomeskip\getvalue{\??td\currenttextbackground\c!bottomoffset}\to\scratchskip
+% \kern\scratchskip\nobreak
+% \nobreak \vskip-\lineheight \nobreak
+% \nowhitespace
+% \egroup
+% \nobreak \noindent \strut \hfill \kern\zeropoint \tpos\currentparbackground
+% \endgraf % new
+% \getvalue{\??td\currenttextbackground\c!after}}
+
+\def\dostarttextbackgroundpar
+ {\endgraf % new
+ \getvalue{\??td\currenttextbackground\c!before}%
+ \doassignsomeskip\getvalue{\??td\currenttextbackground\c!topoffset}\to\scratchskip
+ \xdef\textbackgroundskip{\the\scratchskip}%
+ \noindent
+ \ifgridsnapping
+ \ifdim\textbackgroundskip>\zeropoint
+ \struttedbox{\hbox{\raise\textbackgroundskip\hbox{\fpos\currentparbackground}}}%
+ \else
+ \fpos\currentparbackground
+ \fi
+ \else
+ \fpos\currentparbackground
+ \fi
+ \bgroup
+ \endgraf % we need a vertical nobreak - 29/06/2004
+ \nobreak \vskip-\lineheight \nobreak
+ \doassignsomeskip\getvalue{\??td\currenttextbackground\c!topoffset}\to\scratchskip
+ \ifgridsnapping \else \ifdim\textbackgroundskip>\zeropoint
+ \kern\textbackgroundskip\nobreak
+ \fi \fi
+ \dosetleftskipadaption{\getvalue{\??td\currenttextbackground\c!leftoffset}}%
+ \advance\leftskip\leftskipadaption
+ \dosetleftskipadaption{\getvalue{\??td\currenttextbackground\c!rightoffset}}%
+ \advance\rightskip\leftskipadaption
+ % new
+ \dosetraggedcommand{\getvalue{\??td\currenttextbackground\c!align}}%
+ \raggedcommand
+ %
+ \dostartattributes{\??td\currenttextbackground}\c!style\c!color\empty
+ \nowhitespace
+ \seteffectivehsize
+ \doinhibitblank % \blank[\v!disable]% new
+ \par}
+
+\def\dostoptextbackgroundpar
+ {\par
+ \removelastskip % new
+ \dostopattributes
+ \doassignsomeskip\getvalue{\??td\currenttextbackground\c!bottomoffset}\to\scratchskip
+ \ifdim\lastskip>\zeropoint
+ \advance\scratchskip-\lastskip
+ \fi
+ \xdef\textbackgroundskip{\the\scratchskip}%
+ \ifgridsnapping \else \ifdim\textbackgroundskip>\zeropoint
+ \kern\scratchskip\nobreak
+ \fi \fi
+ \nobreak \vskip-\lineheight \nobreak
+ \nowhitespace
+ \egroup
+\bgroup \forgeteverypar % NOT REALLY NEEDED, SAVES HASH/MEM
+ \nobreak \noindent \strut \hfill \kern\zeropoint
+ \ifgridsnapping % experimental, pascal (todo: topoffset in same way)
+ \ifdim\textbackgroundskip>\zeropoint
+ \struttedbox{\hbox{\lower\textbackgroundskip\hbox{\tpos\currentparbackground}}}%
+ \else
+ \tpos\currentparbackground
+ \fi
+ \else
+ \tpos\currentparbackground
+ \fi
+\egroup
+ \endgraf % new
+ \getvalue{\??td\currenttextbackground\c!after}}
+
+\let\textparpages \!!zeropoint
+\let\textparheight\!!zeropoint
+\let\textparwidth \!!zeropoint
+
+\def\calculatetextpardimensions
+ {\docalculatetextpardimensions\btbanchor \etbanchor \MPparanchor}
+
+\def\calculatenexttextpardimensions
+ {\docalculatetextpardimensions\nextbtbanchor\nextetbanchor\relax}
+
+\def\docalculatetextpardimensions#1#2#3%
+ {\scratchcounter\MPp#2%\etbanchor
+ \advance\scratchcounter-\MPp#1%\btanchor
+ \edef\textparpages{\the\scratchcounter}%
+ \ifcase\scratchcounter
+ % one page
+ \scratchdimen \MPy#1%\btanchor
+ \advance\scratchdimen-\MPy#2%\etbanchor
+ \else
+ % two or more pages
+ \scratchdimen \MPy#1%\btanchor
+ \advance\scratchdimen-\MPy#2%\etbanchor
+ \advance\scratchdimen-\MPy\textanchor
+ \advance\scratchdimen \MPy\textanchor
+ \advance\scratchdimen \MPh\textanchor\relax
+ \ifcase\scratchcounter>2 \ifnum\scratchcounter<5
+ % more pages
+ \scratchdimen\textheight
+ \advance\scratchcounter \minusone
+ \multiply\scratchdimen \scratchcounter
+ \else
+ % keep'm small
+ \scratchdimen5\textheight
+ \fi \fi
+ \fi
+ \edef\textparheight{\the\scratchdimen}%
+ \ifcase\scratchcounter
+ % one page
+ \scratchdimen \MPx#2%\etbanchor
+ \advance\scratchdimen-\MPx#1%\btanchor
+ \else
+ % two or more pages / maybe also hang
+ \ifx#3\relax
+ \scratchdimen\makeupwidth % \textwidth
+ \else
+ \scratchdimen\MPw\MPparanchor
+ \advance\scratchdimen-\MPl\MPparanchor
+ \advance\scratchdimen-\MPr\MPparanchor
+ \fi
+ \fi
+ \edef\textparwidth{\the\scratchdimen}}
+
+\def\mintextparheight{4\lineheight}
+
+\def\dontsplitnexttextbackground % dangerous but useful
+ {\ifdim\pagetotal>\textheight \else
+ \ifdim\pagegoal=\maxdimen \else
+ \calculatenexttextpardimensions
+ % too tricky
+ % \scratchdimen=\textparheight
+ % \advance\scratchdimen\pagetotal\relax
+ % \ifdim\scratchdimen>\pagegoal
+ % \page
+ % \fi
+ \ifdim\textparheight>\zeropoint
+ \ifdim\textparheight>\mintextparheight\else
+ \page % option
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\definetextbackground
+ {\dodoubleempty\dodefinetextbackground}
+
+\def\dodefinetextbackground[#1][#2]%
+ {\ifsecondargument % why ?
+ \copyparameters[\??td#1][\??td]
+ [\c!state,\c!location,\c!alternative,\c!mp,\c!method,
+ \c!background,\c!backgroundcolor,\c!corner,\c!level,
+ \c!backgroundoffset,\c!before,\c!after,\c!align,
+ \c!radius,\c!frame,\c!framecolor,\c!rulethickness,
+ \c!leftoffset,\c!rightoffset,\c!topoffset,\c!bottomoffset]%
+ \getparameters[\??td#1][#2]%
+ \doifvalue{\??td#1\c!state}\v!start\checktextbackgrounds
+ \unexpanded\setvalue{#1}%
+ {\groupedcommand{\starttextbackground[#1]}{\stoptextbackground}}%
+ \setvalue{\e!start#1}{\starttextbackground[#1]}%
+ \setvalue{\e!stop #1}{\stoptextbackground}%
+ \fi}
+
+\def\setuptextbackground
+ {\dodoubleargument\dosetuptextbackground}
+
+\def\dosetuptextbackground[#1][#2]%
+ {\ifsecondargument
+ \doifelsenothing{#1}
+ {\dodosetuptextbackground{#2}\empty}
+ {\processcommalist[#1]{\dodosetuptextbackground{#2}}}%
+ \else
+ \dodosetuptextbackground{#1}\empty
+ \fi}
+
+\def\dodosetuptextbackground#1#2%
+ {\getparameters[\??td#2][#1]%
+ \def\currenttextbackground{#2}%
+ \doifvalue{\??td#2\c!state}\v!start\checktextbackgrounds}
+
+\let\currenttextbackground\empty
+
+\def\checktextbackgrounds
+ {\ifproductionrun
+ \enabletextarearegistration
+ \enablehiddenbackground
+ \fi}
+
+\setuptextbackground
+ [\c!mp=mpos:par:columnset, % buggy: mpos:par:shape
+ \c!method=mpos:par:columnset, %
+ \c!state=\v!start,
+ \c!location=\v!text,
+ \c!leftoffset=\!!zeropoint, % 1em,
+ \c!rightoffset=\getvalue{\??td\currenttextbackground\c!leftoffset},
+ \c!topoffset=\!!zeropoint, % \v!medium,
+ \c!bottomoffset=\getvalue{\??td\currenttextbackground\c!topoffset},
+ \c!level=-1,
+ \c!alternative=0,
+ \c!align=,
+ \c!background=\v!color,
+ \c!backgroundcolor=lightgray,
+ \c!backgroundoffset=\!!zeropoint,
+ \c!corner=\v!rectangular,
+ \c!radius=.5\bodyfontsize,
+ \c!frame=\v!on,
+ \c!framecolor=blue,
+ \c!rulethickness=\linewidth]
+
+%D As an example we define a grid background:
+
+\definetextbackground
+ [\v!grid]
+ [\c!state=\v!stop,
+ \c!location=\v!paragraph,
+ \c!frame=\v!off,
+ \c!framecolor=red,
+ \c!background=,
+ \c!alternative=1]
+
+\ifx\basegrid\undefined \else \letvalue\v!grid=\basegrid \fi
+
+% lelijk, aanpassen, opties
+
+\setupMPvariables
+ [mpos:connect]
+ [linecolor=red,
+ linewidth=1pt]
+
+\setupMPvariables
+ [mpos:encircle]
+ [fillcolor=lightgray,
+ filloffset=\!!zeropoint,
+ linecolor=blue,
+ linewidth=1pt]
+
+\startuseMPgraphic{mpos:common:ec}
+ path pa ; pair ca ; color lc ; numeric lw ;
+ lw := \MPvar{linewidth} ;
+ lc := \MPvar{linecolor} ;
+ initialize_box(\MPpos{\MPvar{self}}) ;
+ pa := pxy ; ca := cxy ; pa := boundingbox pa enlarged 2lw ;
+ pa := llcorner pa...lrcorner pa...urcorner pa...ulcorner pa...cycle ;
+ drawoptions (withpen pencircle scaled lw withcolor lc) ;
+\stopuseMPgraphic
+
+\startMPpositiongraphic{mpos:encircle}{linecolor,fillcolor,linewidth}
+ \includeMPgraphic{mpos:common:ec}
+ fill pa withcolor \MPvar{fillcolor} ; draw pa ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+\startMPpositiongraphic{mpos:connect}{linecolor,linewidth}
+ path pb, pc ; pair cb, cc ;
+ \includeMPgraphic{mpos:common:ec}
+ initialize_box(\MPpos{\MPvar{to}}) ;
+ pb := pxy ; cb := cxy ; pb := boundingbox pb enlarged 2lw ;
+ pb := llcorner pb...lrcorner pb...urcorner pb...ulcorner pb...cycle ;
+ pc := ca {up} .. {down} cb ;
+ cc := (pc intersection_point pa) ;
+ if intersection_found :
+ pc := pc cutbefore cc ;
+ cc := (pc intersection_point pb) ;
+ if intersection_found :
+ pc := pc cutafter cc ;
+ drawarrow pc ; drawarrow reverse pc ;
+ fi ;
+ fi ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+%D \macros
+%D {stackposdown, stackposup, stackposleft,stackposright}
+%D
+%D A non graphic example of the use of positioning, is to stack
+%D text in for instance the margin.
+%D
+%D \stackposdown \inleft {some text}The text \type {some text}
+%D goes into the left margin, and \stackposdown \inleft {some
+%D more}\type {some more} as well. When they overlap, they
+%D will not touch.
+%D
+%D Here we said \type {\stackposdown \inleft{some text}}. Instead
+%D of \stackposleft \inleft {one}stacking \stackposleft \inleft
+%D {two}vertically, one can stack horizontally by \stackposleft
+%D \inleft {three}using \type {\stackposleft}.
+%D
+%D We can go in all four directions, using \type {\stackposdown},
+%D \type {\stackposup}, \type {\stackposleft} and \type
+%D {\stackposright}.
+
+\def\stackposdistance{.5em}
+
+\newcounter\currentautopos
+
+\def\POSstackprefix{stack:}
+
+\def\dostackposbox#1#2%
+ {\dowithnextbox
+ {#2{\let\previousautopos\currentautopos
+ \doglobal\increment\currentautopos
+ \hpos{\POSstackprefix\currentautopos}
+ {\doifoverlappingelse{\POSstackprefix\currentautopos}{\POSstackprefix\previousautopos}
+ {#1}
+ {\flushnextbox}}}}%
+ \hbox}
+
+\def\stackposup {\dostackposbox{\raise\lineheight\flushnextbox}}
+\def\stackposdown {\dostackposbox{\lower\lineheight\flushnextbox}}
+\def\stackposleft {\dostackposbox{\copy\nextbox\hskip\nextboxwd\hskip\stackposdistance}}
+\def\stackposright{\dostackposbox{\hskip\stackposdistance\hskip\nextboxwd\flushnextbox}}
+
+%D \macros
+%D {stackeddown}
+%D
+%D However, a better implementation is possible with the
+%D following macro. We now have an extra key \type {stack} for
+%D margin settings. When set to \type {yes}, this macro comes
+%D into action.
+
+% \def\stackeddown
+% {\dowithnextbox
+% {\doglobal\increment\currentautopos
+% \hpos{\POSstackprefix\currentautopos}
+% {\edef\next
+% {\nextboxht\the\nextboxht
+% \nextboxdp\the\nextboxdp
+% \nextboxwd\the\nextboxwd}%
+% \let\previousautopos\currentautopos
+% \scratchdimen\zeropoint
+% \doloop
+% {\decrement\previousautopos
+% \doifoverlappingelse{\POSstackprefix\currentautopos}{\POSstackprefix\previousautopos}
+% {\advance\scratchdimen\MPh{\POSstackprefix\previousautopos}%
+% \advance\scratchdimen\MPd{\POSstackprefix\previousautopos}}%
+% \exitloop
+% \ifnum\previousautopos<\zerocount\exitloop\fi}%
+% % \ifdim\scratchdimen>\zeropoint
+% \setbox\nextbox\iftracepositions\@EA\ruledhbox\else\@EA\hbox\fi
+% {\lower\scratchdimen\flushnextbox}%
+% \next
+% % \fi
+% \flushnextbox}}}
+
+% Because there can be many stacked items in a line and successive lines, we
+% play dirty and adapt the position and height of the current node so that
+% this becomes visible to a next pass.
+%
+% \startbuffer
+% \inleft {test 1} test 1 \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1} test 1 \inleft {test 2} test 2 \inleft {test 3} test 3 \endgraf
+% \inleft {test 4} test 4
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1} test 1 \endgraf
+% \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1\\test 1} test 1 \inleft {test 2} test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft {test 1\\test 1\\test 1\\test 1\\test 1} test 1 \endgraf
+% test 2 \endgraf
+% \inleft {test 3} test 3
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft{test 1} test \inleft{test 2} test \inleft{test 3\\test 3} test
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+%
+% \startbuffer
+% \inleft{test 1\\test 1\\test 1} test \inleft{test 2\\test 2} test \inleft{test 3\\test 3\\test 3} test \endgraf
+% \inleft{test 1\\test 1\\test 1} test \inleft{test 2\\test 2} test \inleft{test 3\\test 3\\test 3} test
+% \stopbuffer
+% \getbuffer \typebuffer \flushstatus \page
+
+\newdimen\laststackvmove
+
+\def\stackeddown
+ {\bgroup
+ % this macro assumes a few things and is meant to work for margin notes
+ \dowithnextbox
+ {\doglobal\increment\currentautopos
+ \global\laststackvmove\zeropoint
+ \hpos{\POSstackprefix\currentautopos}
+ {\edef\next
+ {\nextboxht\the\nextboxht
+ \nextboxdp\the\nextboxdp
+ \nextboxwd\the\nextboxwd}%
+ \let\previousautopos\currentautopos
+ \scratchdimen\zeropoint
+ \scratchcounter\zerocount
+ \doloop
+ {\decrement\previousautopos\relax
+ \edef\currentposition {\POSstackprefix\currentautopos}%
+ \edef\previousposition{\POSstackprefix\previousautopos}%
+ \ifnum\MPp\currentposition=\MPp\previousposition\relax
+ %\registerstatus{doing \currentautopos/\previousautopos}%
+ \doifoverlappingelse\currentposition\previousposition
+ {\scratchskip \MPy\currentposition
+ \advance\scratchskip-\MPy\previousposition
+ \advance\scratchskip-\MPd\currentposition % untested
+ \advance\scratchskip \MPd\previousposition % untested
+ \advance\scratchskip \MPh\currentposition
+ % todo: also take depth into account
+ \relax
+ \ifdim\scratchskip<\scratchdimen
+ %\registerstatus{no \the\scratchskip}%
+ \else
+ %\registerstatus{yes \the\scratchskip}%
+ \scratchdimen\scratchskip
+ \fi}%
+ \donothing % {\registerstatus{next}}%
+ \ifnum\previousautopos<\zerocount\exitloop\fi
+ \else
+ \exitloop
+ \fi}%
+ \ifdim\scratchdimen=\zeropoint \else
+ \bgroup
+ \edef\currentposition{\POSstackprefix\currentautopos}%
+ \scratchskip\scratchdimen
+ \advance\scratchskip\MPh\currentposition
+ \scratchdimen-\scratchdimen
+ \advance\scratchdimen\MPy\currentposition
+ %\registerstatus{old \currentautopos: \MPy\currentposition/\MPh\currentposition}%
+ \expanded{\replacepospxywhd
+ {\currentposition}{\MPp\currentposition}{\MPx\currentposition}{\the\scratchdimen}%
+ {\MPw\currentposition}{\the\scratchskip}{\MPd\currentposition}}%
+ %\registerstatus{new \currentautopos: \MPy\currentposition/\MPh\currentposition}%
+ \egroup
+ \global\laststackvmove\scratchdimen % new
+ \setbox\nextbox\iftracepositions\@EA\ruledhbox\else\@EA\hbox\fi
+ {\lower\scratchdimen\flushnextbox}%
+ \next
+ %\registerstatus{\strut}%
+ \fi
+ \flushnextbox}%
+ \egroup}}
+
+%D The next hack make sure that margin texts near faulty
+%D strutted lines are handled ok.
+
+\newif\ifrepositionmarginbox % \repositionmarginboxtrue
+
+\newcounter\currentmarginpos
+
+% \def\dopositionmarginbox#1%
+% {\bgroup
+% \ifrepositionmarginbox
+% \doglobal\increment\currentmarginpos
+% \setposition{\s!margin:\currentmarginpos}%
+% \scratchdimen=\MPy{\s!margin:\currentmarginpos}%
+% \doglobal\increment\currentmarginpos
+% \advance\scratchdimen by -\MPy{\s!margin:\currentmarginpos}%
+% \advance\scratchdimen by -\strutdp
+% \setbox#1=\hbox
+% {\setposition{\s!margin:\currentmarginpos}\raise\scratchdimen\box#1}%
+% \dp#1=\!!zeropoint
+% \ht#1=\!!zeropoint
+% \fi
+% \vadjust{\box#1}%
+% \egroup}
+
+\def\dopositionmarginbox#1% how about page boundaries !
+ {\bgroup
+ \ifrepositionmarginbox
+ \doglobal\increment\currentmarginpos
+ \setposition{\s!margin:\currentmarginpos}%
+ \scratchdimen\MPy{\s!margin:\currentmarginpos}%
+ \doglobal\increment\currentmarginpos
+ \advance\scratchdimen -\MPy{\s!margin:\currentmarginpos}%
+ \advance\scratchdimen -\strutdp
+ % new
+ \setbox#1\hbox
+ {\hskip-\MPx{\s!margin:\currentmarginpos}%
+ \hskip\MPx{head:\realfolio}%
+ \box#1}%
+ % so far
+ \setbox#1\hbox
+ {\setposition{\s!margin:\currentmarginpos}%
+ \raise\scratchdimen\box#1}%
+ \dp#1\zeropoint
+ \ht#1\zeropoint
+ \fi
+ \graphicvadjust{\box#1}%
+ \egroup}
+
+%D For a right menu, a sequence of calls to \type
+%D {right_menu_button} is generated.
+%D
+%D \starttyping
+%D right_menu_button (n, p, s=0/1/2, x, y, w, h, d) ;
+%D \stoptyping
+%D
+%D Here, n is the number of the button, s a status variable,
+%D while the rest is positional info. The status variable is
+%D 0, 1 or~2: not found, found and found but current page.
+
+% 0=not found 1=found 2=current page
+
+% geen leeg
+
+\newtoks\MPmenutoks
+
+\def\MPmenubuttons#1{\the\MPmenutoks}
+
+\appendtoks \global\MPmenutoks\emptytoks \to \everyshipout
+
+% 0=notfound 1=found 2=currentpage
+
+\def\do@@amposition#1#2#3%
+ {\doifelsevalue{\??am#1\c!position}\v!yes
+ {\doglobal\increment\currentamposition
+ \doifnumberelse{#2}
+ {\docheckrealreferencepage{#2}%
+ \global\chardef\currentamrealpage\ifrealreferencepage2\else1\fi}
+ {\doifreferencefoundelse{#2}
+ {\global\chardef\currentamrealpage\ifrealreferencepage2\else1\fi}
+ {\global\chardef\currentamrealpage0}}% % not found
+ \expanded
+ {\doglobal\noexpand\appendtoks
+ #1_menu_button(\currentamposition,\the\currentamrealpage,\noexpand\MPpos{#1:\currentamposition}) ;
+ \to \MPmenutoks}%
+ \hpos{#1:\currentamposition}{#3}}
+ {#3}}
+
+\def\do@@ammenuposition#1%
+ {\ifnum\currentamposition>0
+ \dowithnextbox{\hpos{menu:#1:\realfolio}{\flushnextbox}}\hbox
+ \fi}
+
+%D \macros
+%D {GFC, GTC, GSC}
+%D
+%D The next macros extend tables and tabulation with
+%D backgrounds and position related features. Areas are
+%D specified with symbolic names, and symbolic references to
+%D the graphics involved. Each table has its own namespace.
+
+\newcounter\noftabpositions
+\newtoks \posXCtoks
+
+\def\tbPOSprefix
+ {tbp:\noftabpositions:}
+
+\def\tablepos
+ {\scratchtoks\posXCtoks
+ \global\posXCtoks\emptytoks
+ \the\scratchtoks}
+
+\let\tabulatepos\tablepos
+
+\def\dodododoGSC[#1:#2]%
+ {\remappositionframed{#2}{\tbPOSprefix#1}%
+ \bpos{\tbPOSprefix#1}%
+ \doglobal\appendtoks\@EA\epos\@EA{\tbPOSprefix#1}\to\posXCtoks}
+
+\def\dododoGSC[#1:#2:#3]%
+ {\doglobal\appendtoks\dodododoGSC[#1:#2]\to\posXCtoks\NC}
+
+\def\dodoGSC[#1]%
+ {\def\docommando##1{\dododoGSC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dodododoGFC[#1:#2:#3]%
+ {\remappositionframed{#2}{\tbPOSprefix#1}%
+ \bpos{\tbPOSprefix#1}}
+
+\def\dododoGFC[#1]%
+ {\def\docommando##1{\dodododoGFC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dodoGFC[#1]%
+ {\doglobal\appendtoks\dododoGFC[#1]\to\posXCtoks\NC}
+
+\def\dododododoGTC[#1:#2]%
+ {\epos{\tbPOSprefix#1}}
+
+\def\dodododoGTC[#1]%
+ {\def\docommando##1{\dododododoGTC[##1:##1]}%
+ \processcommalist[#1]\docommando}
+
+\def\dododoGTC[#1]%
+ {\doglobal\appendtoks\dodododoGTC[#1]\to\posXCtoks}
+
+\def\dodoGTC[#1]%
+ {\doglobal\appendtoks\dododoGTC[#1]\to\posXCtoks\NC}
+
+\def\dodododoXC[#1#2]%
+ {\if#1>\dodoGFC [#2:#2]\else
+ \if#1+\dodoGFC [#2:#2]\else
+ \if#1<\dodoGTC [#2:#2]\else
+ \if#1-\dodoGTC [#2:#2]\else
+ \if#1=\dodoGSC [#2:#2]\else
+ \dodoGSC[#1#2:#1#2]\fi\fi\fi\fi\fi}
+
+\def\dododoXC#1%
+ {\dodododoXC[#1]}
+
+\def\dodoXC[#1]%
+ {{\let\NC\relax\processcommalist[#1]\dododoXC}}
+
+\def\doGSC[#1]{\iffirstargument\dodoGSC[#1]\else\expandafter\NC\fi}
+\def\doGFC[#1]{\iffirstargument\dodoGFC[#1]\else\expandafter\NC\fi}
+\def\doGTC[#1]{\iffirstargument\dodoGTC[#1]\else\expandafter\NC\fi}
+\def\doXC [#1]{\iffirstargument\dodoXC [#1]\else\expandafter\fi\NC}
+
+\def\tbGSC{\dosingleempty\doGSC}
+\def\tbGFC{\dosingleempty\doGFC}
+\def\tbGTC{\dosingleempty\doGTC}
+\def\tbXC {\dosingleempty\doXC }
+
+%D The amount of code to support tables and tabulation is
+%D rather minimalistic.
+
+\let\tabulatepos\tablepos
+
+\def\tabulatenormalpos
+ {\hss\tabulatepos\hss}
+
+\def\tabulateequalpos
+ {\setbox\scratchbox\hbox{\tabulateEQ}%
+ \hbox to \wd\scratchbox{\hss\kern\zeropoint\tabulatepos\hss}%
+ \hskip-\wd\scratchbox
+ \box\scratchbox}
+
+\def\tabulatenormalcolumn#1% overloaded
+ {&\iftabulateequal\tabulateequalpos\else\tabulatenormalpos\fi
+ &\global\chardef\tabulatetype#1&}
+
+\def\tabulateequalcolumn#1% overloaded
+ {&\tabulateequalpos
+ &\global\chardef\tabulatetype#1&}
+
+\appendtoks
+ \doglobal\increment\noftabpositions
+\to \everytabulate
+
+%D In order to prevent potential clashes with abbreviations,
+%D postpone the mapping.
+
+\appendtoks
+ \let\GSC\tbGSC \let\GFC\tbGFC \let\GTC\tbGTC \let\XC\tbXC
+\to \everytabulate
+
+%D \macros
+%D {definepositionframed}
+%D
+%D The next example show how to provide backgrounds to table
+%D cells. First we define some framed backgrounds.
+%D
+%D \startbuffer
+%D \definepositionframed[x][background=color,backgroundcolor=red]
+%D \definepositionframed[y][background=color,backgroundcolor=green]
+%D \definepositionframed[z][background=color,backgroundcolor=blue]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D % \getbuffer
+%D
+%D \startbuffer
+%D \starttabulate[|c|c|c|]
+%D \GFC[f:x] this is a small \NC table \NC in which we \NC \FR
+%D \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+%D \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+%D \stoptabulate
+%D \stopbuffer
+%D
+%D The table itself defines three areas (a, b and~c) using
+%D these frames.
+%D
+%D \typebuffer
+%D % \getbuffer
+%D
+%D Tables (based on \TABLE) are supported by:
+
+\def\normalTABLEsimplebar {\unskip\!ttRightGlue&\tablepos&} % |
+\def\normalTABLEcomplexbar{\unskip\!ttRightGlue&\omit\tablepos\!ttAlternateVrule} % \|
+\def\normalTABLEquote {\unskip\!ttRightGlue&\omit\tablepos&} % "
+
+\appendtoks
+ \doglobal\increment\noftabpositions
+\to \everytable
+
+%D Since we don't want nameclashes:
+
+\appendtoks
+ \let\GSC\tbGSC \let\GFC\tbGFC \let\GTC\tbGTC \let\XC\tbXC
+\to \everytable
+
+%D In the previous example, we could have provided an overlay to
+%D the framed definition. A more direct approach is demonstrated
+%D below:
+%D
+%D \startbuffer
+%D \def\cw#1{\color[white]{#1}}
+%D
+%D \startMPpositiongraphic{tableshade}
+%D initialize_area(\MPpos{\MPvar{from}},\MPpos{\MPvar{to}}) ;
+%D color c ; c := \MPvar{color} ;
+%D linear_shade(pxy,0,.4c,.9c) ;
+%D anchor_area(\MPanchor{\MPvar{from}}) ;
+%D \stopMPpositiongraphic
+%D
+%D \setMPpositiongraphic{b:x}{tableshade}{from=b:x,to=e:x,color=red}
+%D \setMPpositiongraphic{b:y}{tableshade}{from=b:y,to=e:y,color=green}
+%D \setMPpositiongraphic{b:z}{tableshade}{from=b:z,to=e:z,color=blue}
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D The definition of the table looks about the same as the
+%D previous one:
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \GFC[b:z] \cw{this is a small} \NC \cw{table} \NC in which we \NC \FR
+%D \NC \cw{will demonstrate} \GFC[c:y] \cw{that this} \GTC[c] \cw{positioning} \NC \MR
+%D \GSC[a:x] \cw{mechanism also} \GTC[b] \cw{works quite well} \NC in tables \NC \LR
+%D \stoptable
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+% \definepositionframed[w][background=color,backgroundcolor=yellow]
+% \definepositionframed[x][background=color,backgroundcolor=red]
+% \definepositionframed[y][background=color,backgroundcolor=green]
+% \definepositionframed[z][background=color,backgroundcolor=blue]
+%
+% \starttabulate[|c|c|c|]
+% \NC this is a small \NC table \NC in which we \NC \FR
+% \NC will demonstrate \NC that this \NC positioning \NC \MR
+% \NC mechanism also \NC works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \GFC[f:x] this is a small \GTC table \NC in which we \NC \FR
+% \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+% \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \GFC[f:x,d:w] this is a small \GTC[d] table \NC in which we \NC \FR
+% \NC will demonstrate \GFC[g:z] that this \GTC[g] positioning \NC \MR
+% \GSC[e:y] mechanism also \GTC[f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \XC[+f:x] this is a small \XC table \NC in which we \NC \FR
+% \NC will demonstrate \XC[+g:z] that this \XC[-g] positioning \NC \MR
+% \XC[=e:y] mechanism also \XC[-f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+%
+% \starttabulate[|c|c|c|]
+% \XC[+f:x,+d:w] this is a small \XC[-d] table \NC in which we \NC \FR
+% \NC will demonstrate \XC[+g:z] that this \XC[-g] positioning \NC \MR
+% \XC[=e:y] mechanism also \XC[-f] works quite well \NC in tables \NC \LR
+% \stoptabulate
+
+% evt [b:x]
+%
+% \definepositionframed[x][background=color,fillcolor=red]
+% \definepositionframed[y][background=color,fillcolor=green]
+% \definepositionframed[z][background=color,fillcolor=blue]
+
+\def\remappositionframed#1#2% from to
+ {\copyposition{b:#1}{b:#2}%
+ \copyposition{e:#1}{e:#2}%
+ \dosetpositionaction{b:#2}{\dopositionaction{b:#1}}}
+
+\def\definepositionframed
+ {\dodoubleargument\dodefinepositionframed}
+
+\def\dodefinepositionframed[#1][#2]%
+ {\dosetpositionaction{b:#1}{\dopositionframed[#1][#2]}}
+
+\def\positionframed
+ {\dodoubleempty\dopositionframed}
+
+\def\dopositionframed[#1][#2]%
+ {\bgroup
+ \setbox\scratchbox\hbox
+ {\dimen0=\MPx{e:#1}%
+ \advance\dimen0 -\MPx{b:#1}%
+ \dimen2=\MPy{b:#1}%
+ \advance\dimen2 -\MPy{e:#1}%
+ \advance\dimen2 \MPd{e:#1}%
+ \lower\dimen2\hbox
+ {\advance\dimen2 \MPh{b:#1}%
+ \framed
+ [\c!width=\dimen0,\c!height=\dimen2,
+ \c!offset=\v!overlay,#2]{}}}%
+ \smashedbox\scratchbox
+ \egroup}
+
+% \def\sethdistances#1%
+% {\hbox{\lpos{ml:#1}\hpos{mh:#1}{\strut}\rpos{mr:#1}}}
+%
+% \def\gethdistances#1%
+% {\scratchdimen\MPx{mh:#1}%
+% \advance\scratchdimen -\MPx{ml#1}%
+% \edef\lefthdistance{\the\scratchdimen}%
+% \scratchdimen\MPx{mr:#1}%
+% \advance\scratchdimen -\MPx{mh:#1}%
+% \edef\righthdistance{\the\scratchdimen}}
+
+\protect \endinput
+
+% todo 1: shift down option
+
+\startuseMPgraphic{mpos:par:columnset}
+ \iftracepositions show_multi_pars \else draw_multi_pars \fi ;
+ path p ; p := boundingbox currentpicture ;
+ currentpicture := currentpicture shifted (0,-StrutDepth/2) ;
+ setbounds currentpicture to p ;
+\stopuseMPgraphic
+
+\setupcolors[state=start]
+
+\definetextbackground[underline][location=text,alternative=1,background=,frame=off,distance=2pt]
+
+\definestartstop
+ [underline]
+ [before={\starttextbackground[underline]},
+ after=\stoptextbackground]
diff --git a/Master/texmf-dist/tex/context/base/core-ref.tex b/Master/texmf-dist/tex/context/base/core-ref.tex
new file mode 100644
index 00000000000..fc5acc2f028
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ref.tex
@@ -0,0 +1,3736 @@
+%D \module
+%D [ file=core-ref,
+%D version=1998.01.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Cross Referencing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Cross Referencing}
+
+% todo : unknown/illegal reference no arg
+% todo : +n pages check on 'samepage' (contrastcolor)
+
+% Makes more sense to build action data first, especially now
+% openaction etc are supported.
+%
+% \definespecial\doexecuteactionchain w h
+% \definespecial\dosetgotolocation
+% \definespecial\dosetexecuteJScode
+% ...
+%
+% complication: what when direct? Two calls!
+
+% I considered to change / simplify
+%
+% rt!page -> \definereference
+% rt!list -> \definereference
+% rt!exec -> \definereference
+%
+% but for the moment will not do so, if only because
+% the current implementation permits us to determine
+% the page state and is also more efficient
+
+% the code is rather fuzzy (and will be redone some day); this is
+% due to the chaining (collect secondary and then hook that into
+% the primary etc
+
+\unprotect
+
+\startmessages dutch library: references
+ title: verwijzingen
+ 1: onbekende verwijzing --
+ 2: dubbele verwijzing -- op pagina --
+ 3: type verwijzing -- onbekend
+ 4: verboden verwijzing --
+ 21: document -- geladen
+ 22: document -- is niet interactief
+ 23: onduidelijke verwijzing -- (prefix=--)
+\stopmessages
+
+\startmessages english library: references
+ title: references
+ 1: unknown reference --
+ 2: duplicate reference -- on page --
+ 3: unknown reference type --
+ 4: illegal reference --
+ 21: document -- loaded
+ 22: document -- is not interactive
+ 23: obscure reference -- (prefix=--)
+\stopmessages
+
+\startmessages german library: references
+ title: referenzen
+ 1: unbekannte Referenz --
+ 2: doppelte Referenz -- auf Seite --
+ 3: unbekannte Referenz Typ --
+ 4: illegale Referenz --
+ 21: Dokument -- geladen
+ 22: Dokument -- ist nicht aktiv
+ 23: Obskure Referenz -- (Prefix=--)
+\stopmessages
+
+\startmessages czech library: references
+ title: reference
+ 1: neznama reference --
+ 2: duplicitni reference -- na strane --
+ 3: neznamy typ reference --
+ 4: nedovolena reference --
+ 21: dokument -- nacten
+ 22: dokument -- neni interaktivni
+ 23: obskurni (nejasna) reference -- (prefix=--)
+\stopmessages
+
+\startmessages italian library: references
+ title: riferimenti
+ 1: riferimento sconosciuto --
+ 2: riferimento duplicato -- a pagina --
+ 3: riferimento di tipo sconosciuto --
+ 4: riferimento illecito --
+ 21: documento -- caricato
+ 22: il documento -- non è interattivo
+ 23: riferimento ambiguo -- (prefisso=--)
+\stopmessages
+
+\startmessages norwegian library: references
+ title: referanser
+ 1: ukjent referanse --
+ 2: duplikat referanse -- på side --
+ 3: ukjent referansetype --
+ 4: ulovlig referanse --
+ 21: dokument -- er lest inn
+ 22: dokument -- er ikke interaktivt
+ 23: obskur referanse -- (Prefix=--)
+\stopmessages
+
+\startmessages romanian library: references
+ title: referinte
+ 1: referinta necunoscuta --
+ 2: referinta duplicat -- la pagina --
+ 3: tip necunoscut de referinta --
+ 4: referinta eronata --
+ 21: documentul -- este incarcat
+ 22: documentul -- nu este interactiv
+ 23: referinta obscura -- (prefix=--)
+\stopmessages
+
+%D This module deals with referencing. In \CONTEXT\ referencing
+%D is one of the core features, although at a first glance
+%D probably nobody will notice. This is good, because
+%D referencing should be as hidden as possible.
+%D
+%D In paper documents, referencing comes down to cross
+%D referencing, but in their interactive counterparts, is also
+%D involves navigation. Many features implemented here are
+%D therefore closely related to navigation.
+%D
+%D Many \CONTEXT\ commands can optionally be fed with a
+%D reference. Such a reference, when called upon, returns the
+%D number of a figure, table, chapter etc, a piece of text, or
+%D a pagenumber.
+%D
+%D There are three ways of defining a reference:
+%D
+%D \starttyping
+%D \pagereference[here]
+%D \textreference[here]{some text}
+%D \stoptyping
+%D
+%D the third alternative combines them in:
+%D
+%D \starttyping
+%D \reference[here]{some text}
+%D \stoptyping
+
+\def\textreference {\dosingleargument\dotextreference}
+\def\pagereference {\dosingleargument\dopagereference}
+\def\reference {\dosingleargument\doreference }
+
+%D These are implemented in a low level form as:
+%D
+%D \starttyping
+%D \def\dotextreference[#1]{\rawtextreference\s!txt{#1}} % #2
+%D \def\dopagereference[#1]{\rawpagereference\s!pag{#1}}
+%D \def\doreference [#1]{\rawreference \s!ref{#1}} % #2
+%D \stoptyping
+%D
+%D or without expansion problems:
+
+\def\dotextreference[#1]#2%
+ {\bgroup
+ \def\asciia{#1}%
+ \convertexpanded\@@rfexpansion{#2}\asciib
+ \@EA\rawtextreference\@EA\s!txt\@EA\asciia\@EA{\asciib}%
+ \egroup}
+
+\def\dopagereference[#1]%
+ {\rawpagereference\s!pag{#1}}
+
+\def\doreference[#1]#2%
+ {\bgroup
+ \def\asciia{#1}%
+ \convertexpanded\@@rfexpansion{#2}\asciib
+ \@EA\rawreference\@EA\s!ref\@EA\asciia\@EA{\asciib}%
+ \egroup}
+
+%D Actually there is not much difference between a text and a
+%D full reference, but it's the concept that counts. The low
+%D level implementation is:
+
+\def\rawreference#1#2#3%
+ {\bgroup
+ \the\everyreference
+ \makesectionformat
+ \writereference{#2}
+ {\sectionformat\sectionseparator\sectionseparator\noexpand\pagenumber}
+ {\noexpand\realfolio}{#3}%
+ \egroup}
+
+\def\rawpagereference#1#2%
+ {\bgroup
+ \the\everyreference
+ \makesectionformat
+ \writereference{#2}
+ {\sectionformat\sectionseparator\sectionseparator\noexpand\pagenumber}
+ {\noexpand\realfolio}{}%
+ \egroup}
+
+\def\rawtextreference#1#2#3%
+ {\bgroup
+ \the\everyreference
+ \writereference{#2}
+ {}{\noexpand\realfolio}{#3}%
+ \egroup}
+
+
+%D As we can see, these macros depend on three other ones,
+%D \type {\makesectionformat}, that generated \type
+%D {\sectionformat}, \type {\pagenumber}. The not yet used
+%D argument \type{#1} is a tag that specifies the type of
+%D reference.
+
+%D \macros
+%D {everyreference}
+%D
+%D For rather tricky purposes, one can assign sanitizing
+%D macros to \type{\everyreference}.
+
+\newevery \everyreference \relax
+
+%D This is really needed, since for instance Polish has a
+%D different alphabet and needs accented entries in registers.
+
+\appendtoks
+ %\def\dohandleaccent #1#2{\string#1\string#2}%
+ %\def\dohandlecommand #1{\string#1}%
+ \cleanupfeatures
+\to \everyreference
+
+%D Why do we have to write down references? \TEX, and therefore
+%D \CONTEXT\ is a batch processing system. During the
+%D typesetting process, pages are shipped out, which means that
+%D especially forward references are not yet known when the
+%D page is typeset. That's why we always need a second (and
+%D sometimes even a third) pass to get the cross references
+%D right. The same goes for lists and other pagenumber
+%D dependant data.
+%D
+%D Therefore, during a pass, \CONTEXT\ writes the references to
+%D a the utility file. The next macro does the job and
+%D generates entries like:
+%D
+%D \starttyping
+%D \mainreference{prefix}{reference}{page}{realpage}{text}
+%D \stoptyping
+%D
+%D We did not yet discuss prefixing. Especially in interactive
+%D documents, it's not always easy to keep track of duplicate
+%D references. The prefix mechanism, which we will describe
+%D later on, solves this problem. By (automatically) adding a
+%D prefix one keeps references local, but the global ones in
+%D view. To enable this feature, we explictly split the prefix
+%D from the reference.
+%D
+%D A former implementation used \type{\removesubstring} to get
+%D rid of the don't||use||a||prefix signal (\type{-:}), but the
+%D next one proved to be more than twice as fast.
+
+\let\referenceprefix=\empty
+\let\lastreference =\empty
+
+%D The last reference is saved in a macro named \type
+%D {\lastreference} (indeed). To keep track of the order of
+%D references, later we will see for what purpose, we maintain
+%D a counter.
+
+\newcount\crossreferencenumber \crossreferencenumber=1
+
+\def\writereference#1#2#3#4%
+ {\ifreferencing
+ \edef\!!stringa{#1}%
+ \ifx\!!stringa\empty \else
+ \def\dowritereference##1%
+ {\xdef\lastreference{##1}%
+ \@EA\dodowritereference\lastreference\empty\empty\end{#2}{#3}{#4}}%
+ \rawprocesscommalist[\!!stringa]\dowritereference
+ \fi
+ \fi}
+
+%D Beware: \type {#2} gobbles space in references so that
+%D \typ {a nice ref} becomes \typ {anice ref}.
+
+\def\dodowritereference#1#2#3\end#4#5#6%
+ {\bgroup
+ \global\advance\crossreferencenumber \plusone\relax
+ \if#1-\if#2:%
+ \let\referenceprefix\empty
+ \xdef\lastreference{#3}%
+ \else
+ % \xdef\lastreference{#1#2#3}% here we loose the space
+ \fi\else
+ % \xdef\lastreference{#1#2#3}% here we loose the space
+ \fi
+ \ifx\lastreference\empty \else
+ \doiffirstreferenceoccurance\lastreference
+ {\thisisdestination{\referenceprefix\lastreference}}%
+ \referentieinfo>\lastreference
+ \edef\dododowritereference
+ {\writeutilitycommand
+ {\mainreference{\referenceprefix}{\lastreference}{#4}{#5}{#6}}}%
+ \dododowritereference
+ \fi
+ \egroup}
+
+%D We will implement \type {\doiffirstreferenceoccurance}
+%D later on.
+
+%D When (during a second pass over the document) references are
+%D loaded, they are saved in a macro, one for each reference.
+%D In practice this comes to giving \type {\mainreference} a
+%D appropriate meaning and loading the utility file.
+
+% \def\setreferences
+% {\def\mainreference##1##2##3##4##5%
+% {\doifundefinedelse{\r!cross\fileprefix##1##2}
+% {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
+% {\showmessage\m!references{2}{[##1][##2],##4}}}}
+
+% \def\setreferences
+% {\the\everyreference % we're grouped anyway
+% \def\mainreference##1##2##3##4##5%
+% {\doifundefinedelse{\r!cross\fileprefix##1##2}
+% {\setglobalcrossreference{##1##2}{##3}{##4}{##5}}
+% {\ifcase0##4\else\showmessage\m!references{2}{[##1][##2],##4}\fi}}}
+
+%D For a long time the only way to access an external file was
+%D to use the file prefix (\type {somefile::}. However, when
+%D you split up a document, redefining the references may be
+%D such a pain, that another approach is feasible. By setting
+%D the \type {autofile} variable to \type {yes} or \type
+%D {page}, you can access the reference directly. The latter
+%D case nills the prefix method, thereby saving some memory.
+%D
+%D \starttabulate[||||]
+%D \NC filename::tag \NC page(filename::pnum) \NC tag \NC\NR
+%D \NC $\star$ \NC \NC \NC\NR
+%D \NC $\star$ \NC $\star$ \NC $\star$ \NC\NR
+%D \NC \NC $\star$ \NC \NC\NR
+%D \stoptabulate
+
+\chardef\autocrossfilereferences=0
+
+% \def\setreferences % some day, filename will be stored in ref record
+% {\the\everyreference % we're grouped anyway
+% \def\mainreference##1##2##3##4##5%
+% {\doifundefinedelse{\r!cross\fileprefix##1##2}
+% {\ifcase\autocrossfilereferences
+% \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+% \or
+% \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+% \doifundefinedelse{\r!cross##1##2}
+% {\expanded{\definereference[##1##2][\fileprefix##1##2]}}
+% {\showmessage\m!references2{[##1][##2],##4 (auto \currentutilityfilename)}}%
+% \or
+% \doifundefinedelse{\r!cross##1##2}
+% {\expanded{\definereference[##1##2][\noexpand\v!pagina(\fileprefix##4)]}}
+% {\showmessage\m!references2{[##1][##2],##4 (auto \currentutilityfilename)}}%
+% \fi}
+% {\ifcase0##4\else
+% \showmessage\m!references2{[##1][##2],##4 (\currentutilityfilename)}%
+% \fi}}}
+
+% optimizing this one makes sense when we have docs with 10K
+% refs.
+
+\def\setreferences% some day, filename will be stored in ref record
+ {\the\everyreference % we're grouped anyway
+ \def\mainreference##1##2##3##4##5% can be made faster by indirect calls
+ {\ifundefined{\r!cross\fileprefix##1##2}% \ifcsname\r!cross\fileprefix##1##2\endcsname
+ \ifcase\autocrossfilereferences
+ \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+ \or
+ \setglobalcrossreference{##1##2}{##3}{##4}{##5}%
+ \doifundefinedelse{\r!cross##1##2}
+ {\expanded{\definereference[##1##2][\fileprefix##1##2]}}
+ {\showmessage\m!references2{[##1][##2],##4 (auto \currentutilityfilename)}}%
+ \or
+ \doifundefinedelse{\r!cross##1##2}
+ {\expanded{\definereference[##1##2][\noexpand\v!page(\fileprefix##4)]}}
+ {\showmessage\m!references2{[##1][##2],##4 (auto \currentutilityfilename)}}%
+ \fi
+ \else\ifcase0##4\else
+ \showmessage\m!references2{[##1][##2],##4 (\currentutilityfilename)}%
+ \fi\fi}}
+
+\def\resetreferences
+ {\let\mainreference\gobblefivearguments}
+
+\resetreferences
+
+%D Here we see another kind of prefix surface: \type
+%D {\fileprefix}. This prefix enables us to use references from
+%D different files in one document. This is no really useful in
+%D paper documents, but many interactive ones cannot do
+%D without.
+
+\let\fileprefix=\empty
+
+%D Loading references is done using the normal utility file
+%D handling macros. The \type{\hbox} trick prevents spaces
+%D creeping in (references are set globally anyway).
+
+\newtoks\everycheckreferences
+
+%D When we load references, the file name is stored in a
+%D list.
+
+\let\loadedreferences\empty
+
+%D We only load references ones.
+
+\newconditional\jobreferencesloaded
+
+%D This token list is expanded after the references are loaded.
+%D This hook can be used to initialize mechanisms that depend
+%D on the reference mechsnism. An example can be found in the
+%D field module.
+
+\def\checkreferences
+ {\bgroup
+ \let\fileprefix\empty
+ \global\let\checkreferences\relax
+ \usereferences[\jobname]%
+ \checkrealpage
+ \egroup
+ \the\everycheckreferences}
+
+\def\usereferences[#1]%
+ {\startnointerference
+ \checkreferences
+ \doifparentfileelse{#1}
+ {\ifconditional\jobreferencesloaded\else
+ \doutilities{references}{#1}\empty\relax\relax
+ \global\settrue\jobreferencesloaded
+ \fi}
+ {\ExpandBothAfter\doifnotinset{#1}{\loadedreferences}
+ {\doutilities{references}{#1}\empty\relax\relax
+ \ifx\fileprefix\empty\else
+ \doglobal\addtocommalist{#1}\loadedreferences
+ \fi}}
+ \stopnointerference}
+
+%D As mentioned we will also use the cross reference mechanism
+%D for navigational purposes. The main reason for this is that
+%D we want to treat both categories alike:
+%D
+%D \starttyping
+%D \goto{go back}[PreviousJump]
+%D \goto{colofon}[colofon page]
+%D \stoptyping
+%D
+%D Here \type{PreviousJump} is handled by the viewer, while the
+%D \type{colofon page} reference is, apart from hyperlinking, a
+%D rather normal reference.
+%D
+%D We already saw that cross refences are written to and read
+%D from a file. The pure navigational ones don't need to be
+%D written to file, but both for fast processing and
+%D transparant integration, they are saved internally as a sort
+%D of reference. We can easily distinguish such system
+%D references from real cross reference ones by their tag:
+
+\chardef\rt!cross=0 % even means possible page reference
+\chardef\rt!done =1
+\chardef\rt!page =2 % and is used in \checkrealreferencepage
+\chardef\rt!exec =3
+\chardef\rt!list =4 % to determine the page state
+
+%D We also use the odd/even characteristic to determine the
+%D page state.
+
+%D Here the \type{\rt!exec} tags a viewer specific navigational
+%D reference, while for instance \type{\rt!page} gives fast
+%D access to for instance the previous or next page. The
+%D counter serves a purpose to be explained later. We use a
+%D token register to prevent expansion of the text component,
+%D which can contain all kind of \TEX\ commands.
+
+\newcount\crossreferenceorder
+
+% these are used often so we sped them up
+
+\def\setlocalcrossreference#1#2#3#4%
+ {\scratchtoks{#4}%
+ \@EA\edef\csname\r!cross\fileprefix#1\endcsname
+ {\rt!cross{#2}{#3}{\the\scratchtoks}{0}}}
+
+\def\setglobalcrossreference#1#2#3#4%
+ {\scratchtoks{#4}%
+ \global\advance\crossreferenceorder 1
+ \@EA\xdef\csname\r!cross\fileprefix#1\endcsname
+ {\rt!cross{#2}{#3}{\the\scratchtoks}{\the\crossreferenceorder}}}
+
+\def\setlocalsystemreference#1#2#3%
+ {\@EA\edef\csname\r!cross\fileprefix#2\endcsname{#1{#3}}}
+
+\def\setglobalsystemreference#1#2#3%
+ {\@EA\xdef\csname\r!cross\fileprefix#2\endcsname{#1{#3}}}
+
+% Maybe I need this some day.
+
+% \def\copycrossreference#1#2#3% file from to
+% {\bgroup
+% \def\fileprefix{#1::}%
+% \def\rt!cross##1##2##3##4%
+% {\setxvalue{\r!cross\fileprefix#3}%
+% {\noexpand\rt!cross{##1}{##2}{##3}{##4}}}%
+% \getvalue{\r!cross\fileprefix#2}%
+% \egroup}
+
+\def\copycrossreference#1#2#3% file from to / slow
+ {\bgroup
+ \doifelse{#1}{}
+ {\let\fileprefix\empty}
+ {\def\fileprefix{#1::}}%
+ \def\rt!cross##1##2##3##4%
+ {\setxvalue{\r!cross\fileprefix#3}%
+ {\noexpand\rt!cross{##1}{##2}{##3}{##4}}}%
+ \getvalue{\r!cross\fileprefix#2}%
+ \egroup}
+
+%D References from other files are defined globally without
+%D ordering data. The first definition, the one without
+%D \type{#1}, is used as a signal that references are defined.
+
+\def\setoutercrossreference#1#2#3#4%
+ {\toks0={#4}%
+ \@EA\xdef\csname\r!cross\fileprefix \endcsname{\rt!cross{}{}{1}{0}}%
+ \@EA\xdef\csname\r!cross\fileprefix#1\endcsname{\rt!cross{#2}{#3}{\the\toks0}{0}}}
+
+%D In practice accessing a reference comes down to:
+%D
+%D \startitemize[packed]
+%D \item checking the validity
+%D \item determining the type
+%D \item filtering the content
+%D \stopitemize
+%D
+%D We'll deal with the last two steps first. References are
+%D saved in the general format:
+%D
+%D \starttyping
+%D {\referenceclass{realpage}{page}{text}}
+%D {\referenceclass{type}{data}}
+%D \stoptyping
+%D
+%D When we filter the content, next macros are set when we
+%D meet a normal cross reference:
+
+\let\currentrealreference =\empty
+\let\currentpagereference =\empty
+\let\currenttextreference =\empty
+\let\currentsubtextreference =\empty
+\let\currentsubsubtextreference=\empty
+
+%D System references only have one component:
+
+\let\currentdatareference=\empty
+
+%D Because internally a reference comes in two disguises, one
+%D with four arguments and one with only two, we need a two
+%D step filter.
+
+%\def\getreferenceelements#1%
+% {\edef\referenceelements{\getvalue{\r!cross\referenceprefix#1}}%
+% \expandafter\dogetreferenceelements\referenceelements{}{}{}{}}
+%
+%\def\getreferenceelements#1% only one level expansion permitted!
+% {\@EA\@EA\@EA\dogetreferenceelements\csname\r!cross\referenceprefix#1\endcsname{}{}{}{}}
+
+\def\getreferenceelements#1% only one level expansion permitted!
+ {\@EA\@EA\@EA\dogetreferenceelements\csname\r!cross\referenceprefix#1\endcsname\empty\empty\empty\empty}
+
+%D In the following step, the \type{\ifx#1} test is needed
+%D because we can access this macro directly, and therefore
+%D \type{#1} can be an undefined reference (in fact, this hack
+%D was needed for the line numbering mechanism).
+%D
+%D We already introduced a few counters. Here we see why we
+%D need those. The discrepancy between the cross reference
+%D definition order (determined by the utility file) and the
+%D moment the reference is defined in the text, is a measure
+%D for it's forward character. This enables references like
+%D {\em as we will see later on}.
+
+\chardef\currentreferencetype=0
+
+\newif\ifforwardreference
+
+\newif\ifrealreferencepage
+
+\def\docheckrealreferencepage#1%
+ {\doifnumberelse{#1}
+ {\ifnum#1=\realpageno
+ \realreferencepagetrue
+ \else
+ \realreferencepagefalse
+ \fi}
+ {\realreferencepagefalse}}
+
+\def\currentfolioreference{0}
+
+\def\dogetreferenceelements#1#2#3#4#5%
+ {\chardef\currentreferencetype=\ifx#1\relax0\else#1\fi\relax
+ \ifnum\currentreferencetype<2
+ \edef\currentpagereference{#2}%
+ \ifx\currentpagereference \empty
+ \let\currentfolioreference\folio
+ \else
+ \def \currentpagereference {\referencepagenumber[#2]}%
+ \edef\currentfolioreference{\dosplitofffoliopart[#2]}%
+ \fi
+ \edef\currentrealreference{#3}%
+ \settextreferences#4\end
+ \ifnum0#5<\crossreferencenumber
+ \forwardreferencetrue
+ \else
+ \forwardreferencefalse
+ \fi
+ \else
+ \edef\currentrealreference {#3}%
+ \def \currentdatareference {#2}%
+ \let \currentfolioreference\folio
+ \settextreferences#4\end
+ \forwardreferencefalse
+ \fi
+ \ifodd\currentreferencetype
+ \realreferencepagefalse
+ \else
+ \docheckrealreferencepage\currentrealreference
+ \ifrealreferencepage \else
+ \docheckrealreferencepage\currentdatareference
+ \fi
+ \fi}
+
+\ifx\referencepagenumber\undefined
+
+ \def\referencepagenumber[#1]{?}
+
+\fi
+
+%D Text references can contain more than one entry and
+%D therefore we check for
+%D
+%D \starttyping
+%D {entry}
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D {{entry}{entry}{entry}}
+%D \stoptyping
+%D
+%D and split accordingly.
+
+\def\settextreferences
+ {\futurelet\next\dosettextreferences}
+
+\def\dosettextreferences
+ {\ifx\next\bgroup
+ \expandafter\dotriplegroupempty\expandafter\dodosettextreferences
+ \else
+ \expandafter\donosettextreferences
+ \fi}
+
+\def\donosettextreferences#1\end
+ {\def\currenttextreference{#1}%
+ \let\currentsubtextreference\empty
+ \let\currentsubsubtextreference\empty}
+
+\def\dodosettextreferences#1#2#3#4\end
+ {\def\currenttextreference{#1}%
+ \def\currentsubtextreference{#2}%
+ \def\currentsubsubtextreference{#3}}
+
+%D When inside this testing macro we can savely use:
+
+\def\doifforwardreferenceelse#1#2%
+ {\ifforwardreference#1\else#2\fi}
+
+%D Duplicate references are reported while loading the utility
+%D file. To prevent problems with document viewers cq.
+%D preprocessors, one can enable a (bit time consuming) check.
+
+\newif\ifcheckduplicatereferences
+
+%D The next rather dirty trick is needed to preserve the
+%D meaning of the original cross reference. In fact,
+%D \type{\rt!cross} is toggled to \type{\rt!done}.
+
+% \def\doiffirstreferenceoccurance#1#2%
+% {\ifcheckduplicatereferences
+% \doifundefinedelse{\r!cross\referenceprefix#1}
+% {#2}
+% {\getreferenceelements{#1}%
+% \ifnum\currentreferencetype=\rt!cross
+% #2%
+% \bgroup
+% \def\rt!cross##1##2##3##4%
+% {\setgvalue{\r!cross\referenceprefix#1}%
+% {\rt!done{##1}{##2}{##3}{##4}}}%
+% \getvalue{\r!cross\referenceprefix#1}%
+% \egroup
+% \fi}%
+% \else
+% #2%
+% \fi}
+
+\def\rt!crossdone#1#2#3#4{\rt!done{#1}{#2}{#3}{#4}}
+
+\def\dohandleduplicatereference#1%
+ {\bgroup
+ \let\rt!cross\rt!crossdone
+ \@EA\xdef\csname\r!cross\referenceprefix#1\endcsname
+ {\csname\r!cross\referenceprefix#1\endcsname}%
+ \egroup}
+
+\def\checkfirstreferenceoccurance#1#2%
+ {\ifcsname\r!cross\referenceprefix#1\endcsname
+ \getreferenceelements{#1}%
+ \ifnum\currentreferencetype=\rt!cross
+ \dohandleduplicatereference{#1}%
+ #2%
+ \fi
+ \else
+ #2%
+ \fi}
+
+\def\doiffirstreferenceoccurance
+ {\ifcheckduplicatereferences
+ \@EA\checkfirstreferenceoccurance
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+%D We still have to test for the existence of a reference, but
+%D before we come to that, we first look into the way a
+%D reference can be accessed. It will be no surprise that
+%D references can come in several forms.
+%D
+%D Cross references appear as numbers (figure~1.1, chapter~2)
+%D or pagenumbers (page~2, page 3--2), and are called with
+%D \type{\in} and \type{\at}. In interactive documents we also
+%D have \type{\goto}, \type{\button} and alike. These are more
+%D versatile and look like:
+%D
+%D \starttyping
+%D \goto[reference]
+%D \goto[outer reference::]
+%D \goto[outer reference::inner reference]
+%D \goto[operation(argument)]
+%D \goto[operation(action{argument,argument})]
+%D \goto[action]
+%D \goto[action{argument}]
+%D \stoptyping
+%D
+%D The first one is a normal reference, the second and third
+%D are references to a file or \URL. The brace delimited
+%D references for instance refer to a \JAVASCRIPT. The last
+%D example shows that we can pass arguments to the actions.
+%D
+%D When we split off the components of such a reference, the
+%D results are available in:
+%D
+%D \starttyping
+%D \currentreferencespecial
+%D \currentreferenceoperation
+%D \currentreferencearguments
+%D \currentinnerreference
+%D \currentouterreference
+%D \currentfullreference
+%D \stoptyping
+%D
+%D Splitting a reference is done by:
+%D
+%D \starttyping
+%D \splitofffullreference {reference}
+%D \splitoffreference {reference}
+%D \stoptyping
+%D
+%D The second alternative can be used in a second stage
+%D splitoff and only handles \type{::}.
+
+\newif\ifreferencefound
+
+\let\currentfullreference =\empty
+\let\currentreferencespecial =\empty
+\let\currentreferenceoperation=\empty
+\let\currentreferencearguments=\empty
+\let\currentouterreference =\empty
+\let\currentinnerreference =\empty
+
+\def\splitofffullreference#1%
+ {\edef\currentfullreference{#1}%
+ \@EA\dosplitofffullreference\currentfullreference\empty(\relax)\empty\end}
+
+\def\dosplitofffullreference#1(#2#3)#4#5\end
+ {\ifx#2)%
+ \let\currentreferenceoperation\empty
+ \let\currentreferencearguments\empty
+ \let\currentinnerreference \empty
+ \dodosplitofffullreferenceA#1::::\empty\end
+ \currentouterreference\currentreferencespecial
+ \else\ifx#2\relax
+ \let\currentreferencespecial \empty
+ \let\currentreferenceoperation\empty
+ \let\currentreferencearguments\empty
+ \dodosplitofffullreferenceA#1::::\empty\end
+ \currentouterreference\currentinnerreference
+ \else
+ \dosplitoffreferenceoperation#2#3{}\end
+ \let\currentinnerreference\empty
+ \dodosplitofffullreferenceB#1::::\empty\end
+ \currentouterreference\currentreferencespecial
+ \fi\fi}
+
+\def\dosplitoffreferenceoperation#1#%
+ {\def\currentreferenceoperation{#1}%
+ \dodosplitoffreferenceoperation}
+
+\def\dodosplitoffreferenceoperation#1#2\end
+ {\def\currentreferencearguments{#1}}
+
+\def\dodosplitofffullreferenceA#1::#2::#3#4\end#5#6%
+ {\if#3:%
+ \dosetfullreferenceA#5#1{}\edef#6{#2}%
+ \else
+ \dosetfullreferenceA#6#1{}\let#5\empty
+ \fi}
+
+\def\dosetfullreferenceA#1#2#%
+ {\edef#1{#2}%
+ \def\currentreferencearguments}
+
+\def\dodosplitofffullreferenceB#1::#2::#3#4\end#5#6%
+ {\if#3:%
+ \edef#5{#1}\edef#6{#2}%
+ \else
+ \let#5\empty\edef#6{#1}%
+ \fi}
+
+\def\splitoffreference#1%
+ {\expandafter\dodosplitofffullreferenceB#1::::\empty\end
+ \currentouterreference\currentinnerreference}
+
+%D Although the previous split macros have a multistep
+%D character, there performance is quite reasonable.
+%D
+%D For debugging purposes we provide a showcase macro:
+
+\long\def\dodoshowcurrentreference#1\from#2\with#3%
+ {\convertcommand#2\to\ascii
+ \edef\currentreferenceshow{\currentreferenceshow/#1/\ascii/#3/}}
+
+\long\def\doshowcurrentreference#1%
+ {\edef\currentreferenceshow{/\ifreferencefound+\else-\fi/#1}%
+ \dodoshowcurrentreference ful\from\currentfullreference \with#1%
+ \dodoshowcurrentreference spe\from\currentreferencespecial \with#1%
+ \dodoshowcurrentreference ope\from\currentreferenceoperation\with#1%
+ \dodoshowcurrentreference arg\from\currentreferencearguments\with#1%
+ \dodoshowcurrentreference out\from\currentouterreference \with#1%
+ \dodoshowcurrentreference inn\from\currentinnerreference \with#1}
+
+\def\showcurrentreference%
+ {\bgroup\tttf\doshowcurrentreference\par\currentreferenceshow\egroup}
+
+%D We use this visualizer to demonstrate the way references are
+%D split.
+%D
+%D \hbox{\splitofffullreference{rr}\showcurrentreference}
+%D \hbox{\splitofffullreference{pp{rr}}\showcurrentreference}
+%D \hbox{\splitofffullreference{pp(qq)}\showcurrentreference}
+%D \hbox{\splitofffullreference{pp(qq{aa,bb})}\showcurrentreference}
+%D \hbox{\splitofffullreference{ff::}\showcurrentreference}
+%D \hbox{\splitofffullreference{ff::rr}\showcurrentreference}
+%D \hbox{\splitofffullreference{ff::pp()}\showcurrentreference}
+%D \hbox{\splitofffullreference{ff::pp(qq)}\showcurrentreference}
+%D \hbox{\splitofffullreference{ff::pp(qq{aa})}\showcurrentreference}
+
+%D Now we've come to the promissed testing step. As we can
+%D see, this macro does bit more than testing: it also resolves
+%D the reference. This means that whenever we test for the
+%D existance of a reference at an outer level, we have all the
+%D relevant properties of that reference avaliable inside the
+%D true branche~(\type{#2}).
+%D
+%D The prefix has to do with localizing references. When a
+%D prefix is set, looking for a reference comes to looking for
+%D the prefixed one, and when not found, looking for the non
+%D prefixed one. Consider for instance the prefix set to
+%D \type{sidetrack}.
+%D
+%D \starttyping
+%D \pagereference[important]
+%D \pagereference[unimportant]
+%D \setupreferencing[prefixprefix=sidetrack]
+%D \pagereference[important]
+%D \stoptyping
+%D
+%D results in saving (writing) the references
+%D
+%D \starttyping
+%D ...{}{important}
+%D ...{}{unimportant}
+%D ...{sidetrack}{important}...
+%D \stoptyping
+%D
+%D Now when we call for \type{unimportant}, we will indeed get
+%D the pagenumber associated to this reference. But when we
+%D call for \type{important}, while the prefix is still set, we
+%D will get the pagenumber bound to the prefixed one.
+%D
+%D {\em Some day, when processing time and memory are no longer
+%D performance factors, we will introduce multi||level
+%D prefixes.}
+%D
+%D Before we start analyzing, I introduce a general
+%D definition macro. Consider:
+%D
+%D \starttyping
+%D \goto{do}[JS(My_Script{"test",123}),titlepage]
+%D \stoptyping
+%D
+%D This can also be achieved by:
+%D
+%D \starttyping
+%D \definereference[startup][JS(My_Script{"test",123}),titlepage]
+%D \goto{do}[REF(startup)]
+%D \stoptyping
+%D
+%D Now is this is a handy feature or not?
+%D
+%D \showsetup{definereference}
+%D
+%D We can trace references by setting the next switch to
+%D true.
+
+\newif\iftracereferences
+
+\let\tracereferences\tracereferencestrue
+
+\def\specialREFidentifier{REF}
+
+\def\dodefinereference[#1][#2]%
+ {\ifsecondargument
+ \doifelsenothing{#2}
+ {\resetreference[#1]}%
+ {\@EA\gdef\csname\specialREFidentifier#1\endcsname{#2}}%
+ \else\iffirstargument
+ \resetreference[#1]%
+ \fi\fi}
+
+\def\definereference%
+ {\dodoubleempty\dodefinereference}
+
+\def\resetreference[#1]%
+ {\global\letbeundefined{\specialREFidentifier#1}}
+
+\beginTEX
+
+% \def\dodoifreferencefoundelse#1#2#3%
+% {\checkreferences
+% \bgroup
+% \let\unharmedreferenceprefix=\referenceprefix
+% \bgroup
+% \splitofffullreference{#1}%
+% \ifx\currentreferencespecial\specialREFidentifier
+% \@EA\ifx\csname\specialREFidentifier\currentreferenceoperation\endcsname\relax
+% \global\referencefoundfalse
+% \else
+% \global\referencefoundtrue
+% \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+% {\csname\specialREFidentifier\currentreferenceoperation\endcsname}%
+% \fi
+% \else
+% \global\referencefoundtrue
+% \fi
+% \ifreferencefound
+% \ifx\currentreferencespecial\empty
+% \ifx\currentouterreference\empty
+% \docheckinnerreference
+% \ifreferencefound \else
+% \checkglobalfilereferences
+% \fi
+% \else
+% \docheckouterreference
+% \fi
+% \ifreferencefound
+% \ifx\currentreferencearguments\empty
+% \getreferenceelements\currentfullreference
+% \else
+% \getreferenceelements\currentinnerreference
+% \fi
+% \fi
+% \else
+% \docheckspecialreference
+% \fi
+% \fi
+% \ifreferencefound \else
+% \let\referenceprefix\empty
+% \@EA\ifx\csname\specialREFidentifier#1\endcsname\relax\else
+% \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+% {\csname\specialREFidentifier#1\endcsname}%
+% \ifx\currentreferencespecial\empty
+% \ifx\currentouterreference\empty
+% \docheckinnerreference
+% \ifreferencefound \else
+% \checkglobalfilereferences
+% \fi
+% \else
+% \docheckouterreference
+% \fi
+% \ifreferencefound
+% % \getreferenceelements\currentfullreference
+% \ifx\currentreferencearguments\empty
+% \getreferenceelements\currentfullreference
+% \else
+% \getreferenceelements\currentinnerreference
+% \fi
+% \fi
+% \else
+% \docheckspecialreference
+% \fi
+% \fi
+% \fi
+% \iftracereferences
+% \doshowcurrentreference\space
+% \writestatus{\m!references}{\currentreferenceshow}%
+% \fi
+% \ifreferencefound#2\else#3\fi
+% \egroup
+% \egroup}
+
+\newcount\nofexpandedreferences
+
+\def\dodoexpandreferences#1REF(#2#3)#4\relax
+ {\ifx#2\relax
+ \@EA\ifx\csname\specialREFidentifier#1\endcsname\relax
+ \global\advance\nofexpandedreferences \plusone
+ \@EA\xdef\csname REF::\number\nofexpandedreferences\endcsname{#1}%
+ \else
+ \edef\expandedreference{\csname\specialREFidentifier#1\endcsname,}%
+ \fi
+ \else
+ \@EA\ifx\csname\specialREFidentifier#2#3\endcsname\relax
+ % not set
+ \else
+ \edef\expandedreference{\csname\specialREFidentifier#2#3\endcsname,}%
+ \fi
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+% \def\dodoifreferencefoundelse#1#2#3%
+% {\checkreferences
+% \bgroup
+% \let\unharmedreferenceprefix=\referenceprefix
+% \bgroup
+% \splitofffullreference{#1}%
+% \ifx\currentreferencespecial\specialREFidentifier
+% \ifcsname\specialREFidentifier\currentreferenceoperation\endcsname
+% \global\referencefoundtrue
+% \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+% {\csname\specialREFidentifier\currentreferenceoperation\endcsname}%
+% \else
+% \global\referencefoundfalse
+% \fi
+% \else
+% \global\referencefoundtrue
+% \fi
+% \ifreferencefound
+% \ifx\currentreferencespecial\empty
+% \ifx\currentouterreference\empty
+% \docheckinnerreference
+% \ifreferencefound \else
+% \checkglobalfilereferences
+% \fi
+% \else
+% \docheckouterreference
+% \fi
+% \ifreferencefound
+% \ifx\currentreferencearguments\empty
+% \getreferenceelements\currentfullreference
+% \else
+% \getreferenceelements\currentinnerreference
+% \fi
+% \fi
+% \else
+% \docheckspecialreference
+% \fi
+% \fi
+% \ifreferencefound \else
+% \let\referenceprefix=\empty
+% \ifcsname\specialREFidentifier#1\endcsname
+% \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+% {\csname\specialREFidentifier#1\endcsname}%
+% \ifx\currentreferencespecial\empty
+% \ifx\currentouterreference\empty
+% \docheckinnerreference
+% \ifreferencefound \else
+% \checkglobalfilereferences
+% \fi
+% \else
+% \docheckouterreference
+% \fi
+% \ifreferencefound
+% % \getreferenceelements\currentfullreference
+% \ifx\currentreferencearguments\empty
+% \getreferenceelements\currentfullreference
+% \else
+% \getreferenceelements\currentinnerreference
+% \fi
+% \fi
+% \else
+% \docheckspecialreference
+% \fi
+% \fi
+% \fi
+% \iftracereferences
+% \doshowcurrentreference\space
+% \writestatus{\m!references}{\currentreferenceshow}%
+% \fi
+% \ifreferencefound#2\else#3\fi
+% \egroup
+% \egroup}
+
+\newcount\nofexpandedreferences
+
+\def\dodoexpandreferences#1REF(#2#3)#4\relax
+ {\ifx#2\relax
+ \ifcsname\specialREFidentifier#1\endcsname
+ \edef\expandedreference{\csname\specialREFidentifier#1\endcsname,}%
+ \else
+ \global\advance\nofexpandedreferences \plusone
+ \@EA\xdef\csname REF::\number\nofexpandedreferences\endcsname{#1}%
+ \fi
+ \else
+ \ifcsname\specialREFidentifier#2#3\endcsname
+ \edef\expandedreference{\csname\specialREFidentifier#2#3\endcsname,}%
+ \else
+ % not set
+ \fi
+ \fi}
+
+\endETEX
+
+\def\doexpandreferences#1,%
+ {\if]#1\else
+ \let\expandedreference\empty
+ \dodoexpandreferences#1REF(\relax)\relax
+ \@EAEAEA\doexpandreferences\@EA\expandedreference
+ \fi}
+
+\def\expandreferences#1%
+ {\global\nofexpandedreferences\zerocount
+ \doexpandreferences#1,],}
+
+\def\dodoifreferencefoundelse#1%
+ {\@EA\splitofffullreference\@EA{#1}%
+ \ifx\currentreferencespecial\empty
+ \ifx\currentouterreference\empty
+ \docheckinnerreference
+ \ifreferencefound \else
+ \checkglobalfilereferences
+ \fi
+ \else
+ \docheckouterreference
+ \fi
+ \ifreferencefound
+ \ifx\currentreferencearguments\empty
+ \getreferenceelements\currentfullreference
+ \else
+ \getreferenceelements\currentinnerreference
+ \fi
+ \fi
+ \else
+ \docheckspecialreference
+ \fi
+ \iftracereferences
+ \doshowcurrentreference\space
+ \writestatus\m!references\currentreferenceshow
+ \fi}
+
+%D Although this can be considered a hack, we provide the
+%D option to locate unknown references in other (loaded) files.
+%D This can be dangerous, since there can be conflicting
+%D definitions.
+
+\newconditional\autoglobalfilereferences
+
+\def\checkglobalfilereferences% sloooow
+ {\ifconditional\autoglobalfilereferences
+% \processcommacommand[\loadedreferences]\docheckglobalfilereference
+ \rawprocesscommalist[\loadedreferences]\docheckglobalfilereference
+ \fi}
+
+\def\docheckglobalfilereference#1%
+ {\ifundefined{\r!cross#1::\currentinnerreference}\else
+ \def\currentouterreference{#1}%
+ \edef\currentfullreference%
+ {\currentouterreference::\currentinnerreference}%
+ \global\referencefoundtrue
+ \quitcommalist
+ \fi}
+
+%D For most situations, we could use:
+%D
+%D \starttyping
+%D \let\doifreferencefoundelse=\dodoifreferencefoundelse
+%D \stoptyping
+%D
+%D But when we also want to support chained references, we need
+%D some more. Such a chained reference is defined as:
+%D
+%D \starttyping
+%D \goto{somewhere}[JS(somescript),nextpage,JS(anotherscript)]
+%D \stoptyping
+%D
+%D Actually supporting chains is up to the special driver. Here
+%D we only provide the hooks.
+
+%D \macros
+%D {ifenablereferencechains}
+%D
+%D First we provide a switch to turn this mechanism off:
+
+\newif\ifenablereferencechains \enablereferencechainstrue
+
+%D We don't use the general commalist processing macros,
+%D because we don't want to pay a speed penalty.
+
+\newif\ifsecondaryreference
+\newcount\nofsecondaryreferences
+
+% Aanpassen: eerst alle refs scannen en componenten opslaan in
+% lijst, dan de chain doorlopen. Momenteel mag alleen laatste
+% laatste undefined zijn, eigenlijk moet dat overal kunnen met
+% 'geen' zonder melding. Is wel trager. Dus niet.
+%
+% \def\doifreferencefoundelse#1#2#3% \@EA niet nodig
+% {\doresetgotowhereever
+% \global\secondaryreferencefalse
+% {\the\everyreference\xdef\primaryreference{#1}}%
+% \global\nofsecondaryreferences=0
+% \def\dopreprocessreference##1,%
+% {\if]##1\else
+% \ifsecondaryreference
+% \ifenablereferencechains \iflocation
+% {\the\everyreference\xdef\secondaryreference{##1}}%
+% %\global\advance\nofsecondaryreferences by 1
+% \@EA\dodoifreferencefoundelse\@EA{\secondaryreference}
+% {\global\advance\nofsecondaryreferences by 1
+% #2}
+% {%\global\advance\nofsecondaryreferences by -1
+% \dostartnoto#3\dostopnoto}%
+% \fi \fi
+% \else
+% {\the\everyreference\xdef\primaryreference{##1}}%
+% \global\secondaryreferencetrue
+% \fi
+% \expandafter\dopreprocessreference
+% \fi}%
+% \dopreprocessreference#1,],%
+% \global\secondaryreferencefalse
+% \@EA\dodoifreferencefoundelse\@EA{\primaryreference}{#2}{#3}%
+% \doresetgotowhereever} % to prevent problems with direct goto's
+
+% \def\doifreferencefoundelse#1#2#3% REF \cs
+% {\checkreferences
+% \bgroup
+% \the\everyreference
+% \let\referenceprefix\empty
+% \expandreferences{#1}%
+% \egroup
+% \doresetgotowhereever
+% \global\nofsecondaryreferences 0
+% \ifcase\nofexpandedreferences\relax % #1 can be number -)
+% % no ref
+% \or
+% % one ref
+% \or
+% % two refs
+% \ifenablereferencechains \iflocation
+% \global\secondaryreferencetrue
+% \xdef\secondaryreference{\csname REF::2\endcsname}%
+% \bgroup
+% \let\unharmedreferenceprefix\referenceprefix
+% %\bgroup
+% \dodoifreferencefoundelse\secondaryreference
+% \global\nofsecondaryreferences 1
+% \ifreferencefound
+% #2%
+% \else
+% \dostartnoto#3\dostopnoto
+% \fi
+% %\egroup
+% \egroup
+% \fi \fi
+% \else
+% % more than two refs
+% \ifenablereferencechains \iflocation
+% \global\secondaryreferencetrue
+% \scratchcounter2
+% \loop
+% \xdef\secondaryreference{\csname REF::\number\scratchcounter\endcsname}%
+% \bgroup
+% \let\unharmedreferenceprefix\referenceprefix
+% %\bgroup
+% \dodoifreferencefoundelse\secondaryreference
+% \global\advance\nofsecondaryreferences 1
+% \ifreferencefound
+% #2%
+% \else
+% \global\advance\nofsecondaryreferences -1
+% \dostartnoto#3\dostopnoto
+% \fi
+% %\egroup
+% \egroup
+% \ifnum\scratchcounter<\nofexpandedreferences\relax
+% \advance\scratchcounter 1
+% \repeat
+% \fi \fi
+% \fi
+% \global\secondaryreferencefalse
+% \xdef\primaryreference{\csname REF::1\endcsname}%
+% \bgroup
+% \let\unharmedreferenceprefix\referenceprefix
+% %\bgroup
+% \dodoifreferencefoundelse\primaryreference
+% \ifreferencefound#2\else#3\fi
+% %\egroup
+% \egroup
+% \doresetgotowhereever} % to prevent problems with direct goto's
+
+\def\doifreferencefoundelse#1#2#3% REF \cs
+ {\checkreferences
+ % first we collect the secondary ones
+ \bgroup
+ \the\everyreference
+ \let\referenceprefix\empty
+ \expandreferences{#1}%
+ \egroup
+ \doresetgotowhereever
+ \global\nofsecondaryreferences \zerocount
+ \ifcase\nofexpandedreferences\relax % #1 can be number -)
+ % no ref
+ \or
+ % one ref
+ \or
+ % two refs
+ \ifenablereferencechains \iflocation
+ \global\secondaryreferencetrue
+ \xdef\secondaryreference{\csname REF::2\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::2\endcsname
+ \bgroup
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ \let\unharmedreferenceprefix\referenceprefix
+ \dodoifreferencefoundelse\secondaryreference
+ \ifreferencefound
+ \global\nofsecondaryreferences \plusone
+ #2%
+ \else
+ \dostartnoto#3\dostopnoto
+ \fi
+ \egroup
+ \fi \fi
+ \else
+ % more than two refs
+ \ifenablereferencechains \iflocation
+ \global\secondaryreferencetrue
+ \scratchcounter\plustwo
+ \loop
+ \xdef\secondaryreference{\csname REF::\number\scratchcounter\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::\number\scratchcounter\endcsname
+ \bgroup
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ \let\unharmedreferenceprefix\referenceprefix
+ \dodoifreferencefoundelse\secondaryreference
+ \ifreferencefound
+ \global\advance\nofsecondaryreferences \plusone
+ #2%
+ \else
+ \dostartnoto#3\dostopnoto
+ \fi
+ \egroup
+ \ifnum\scratchcounter<\nofexpandedreferences\relax
+ \advance\scratchcounter \plusone
+ \repeat
+ \fi \fi
+ \fi
+ \global\secondaryreferencefalse
+ \xdef\primaryreference{\csname REF::1\endcsname}%
+ % test: \global\letcscsname\secondaryreference\csname REF::1\endcsname
+ \bgroup
+ % now we handle the primary one
+ %%\let\doifreferencefoundelse\localdoifreferencefoundelse
+ \let\unharmedreferenceprefix\referenceprefix
+ \dodoifreferencefoundelse\primaryreference
+ \ifreferencefound#2\else#3\fi
+ \egroup
+ \doresetgotowhereever} % to prevent problems with direct goto's
+
+%D The following local redefinition permits the usage of
+%D nested \type {\doifreferencefoundelse}; see for an
+%D example the local test for file|/|url references. This is
+%D a fuzzy part of this mechanism and a result of the choice
+%D to let speed prevail over beauty in resolving chained
+%D references with symbolic (defined) references.
+
+% \def\localdoifreferencefoundelse#1#2#3% beware, this feeds back the (...) ref
+% {\dodoifreferencefoundelse{#1}%
+% \ifreferencefound#2\else#3\fi}
+
+\def\localdoifreferencefoundelse#1%
+ {\dodoifreferencefoundelse{#1}%
+ \ifreferencefound\@EA\firstoftwoarguments\else\@EA\secondoftwoarguments\fi}
+
+%D Somewhere else we will properly define \type {\dostartgoto};
+%D the noto alternative takes care of undefined references in
+%D a sequence
+
+\ifx\dostartnoto\undefined
+
+ \def\dostartnoto#1\dostopnoto
+ {\ifsecondaryreference\else{#1}\fi}
+
+\fi
+
+\ifx\dostartgoto\undefined
+
+ \def\dostartgoto\data#1\start#2\stop#3\dostopgoto
+ {\ifsecondaryreference\else{#1}\fi}
+
+\fi
+
+%D As one can see, while processing the references, the first
+%D one is handled last. While scanning the second and following
+%D ones, we increment a counter and set a boolean to true.
+
+%D The next fast one permits rather raw references with
+%D \type{()}'s and is used in the object reference mechanism.
+
+\def\doifrawreferencefoundelse#1#2#3%
+ {\checkreferences
+ \bgroup
+ \edef\currentfullreference{#1}%
+ \ifundefined{\r!cross\currentfullreference}%
+ \global\referencefoundfalse #3%
+ \else\getreferenceelements\currentfullreference
+ \global\referencefoundtrue #2%
+ \fi
+ \egroup}
+
+%D The inner case is simple. Only two cases have to be taken
+%D care of:
+%D
+%D \starttyping
+%D \goto{some text}[reference]
+%D \goto{some text}[prefix:reference]
+%D \stoptyping
+
+%\def\docheckinnerreference%
+% {\global\let\predefinedreference=\currentinnerreference
+% \ifx\currentreferencearguments\empty
+% \doifdefinedelse{\r!cross\referenceprefix\currentfullreference}
+% {\global\referencefoundtrue}
+% {\let\referenceprefix\empty
+% \doifdefinedelse{\r!cross\currentfullreference}
+% {\global\referencefoundtrue}
+% {\global\referencefoundfalse}}%
+% \else % [SomeThing{with,me}]
+% \let\referenceprefix\empty
+% \doifdefinedelse{\r!cross\currentinnerreference}
+% {\global\referencefoundtrue}
+% {\global\referencefoundfalse}%
+% \fi
+% \doifpredefinedreferenceelse{\global\referencefoundfalse}{}}
+
+\beginETEX
+
+\def\docheckinnerreference
+ {\global\let\predefinedreference\currentinnerreference
+ \ifx\currentreferencearguments\empty
+ \ifcsname\r!cross\referenceprefix\currentfullreference\endcsname
+ \global\referencefoundtrue
+ \else
+ \let\referenceprefix\empty
+ \ifcsname\r!cross\currentfullreference\endcsname
+ \global\referencefoundtrue
+ \else
+ \global\referencefoundfalse
+ \fi
+ \fi
+ \else % [SomeThing{with,me}]
+ \let\referenceprefix\empty
+ \ifcsname\r!cross\currentinnerreference\endcsname
+ \global\referencefoundtrue
+ \else
+ \global\referencefoundfalse
+ \fi
+ \fi
+ \doifpredefinedreferenceelse{\global\referencefoundfalse}\donothing}
+
+\endETEX
+
+\beginTEX
+
+\def\docheckinnerreference
+ {\global\let\predefinedreference\currentinnerreference
+ \ifx\currentreferencearguments\empty
+ \@EA\ifx\csname\r!cross\referenceprefix\currentfullreference\endcsname\relax
+ \let\referenceprefix\empty
+ \@EA\ifx\csname\r!cross\currentfullreference\endcsname\relax
+ \global\referencefoundfalse
+ \else
+ \global\referencefoundtrue
+ \fi
+ \else
+ \global\referencefoundtrue
+ \fi
+ \else % [SomeThing{with,me}]
+ \let\referenceprefix\empty
+ \@EA\ifx\csname\r!cross\currentinnerreference\endcsname\relax
+ \global\referencefoundfalse
+ \else
+ \global\referencefoundtrue
+ \fi
+ \fi
+ \doifpredefinedreferenceelse{\global\referencefoundfalse}\donothing}
+
+\endTEX
+
+%D References to other files however are treated strict or
+%D tolerant, depending on their loading and availability:
+%D
+%D \starttyping
+%D \useexternaldocument[somefile][filename][a nice description]
+%D
+%D \goto{checked reference}[somefile::reference]
+%D \goto{unchecked reference}[somefile::]
+%D \goto{unchecked reference}[anotherfile::reference]
+%D \stoptyping
+%D
+%D Here we use the dummy reference \type{somefile::} set in
+%D \type{\setouterreference} as a signal that indeed references
+%D are defined for the outer file.
+
+% \def\docheckouterreference%
+% {\let\referenceprefix=\empty
+% \let\unharmedreferenceprefix=\empty
+% \xdef\predefinedreference%
+% {\currentouterreference::\currentinnerreference}%
+% \ifx\innerreference\empty
+% \global\referencefoundtrue % no checking done
+% \else
+% \doifdefinedelse{\r!cross\currentouterreference::}
+% {\doifdefinedelse{\r!cross\currentfullreference}
+% {\global\referencefoundtrue}
+% {\global\referencefoundfalse}}
+% {\global\referencefoundtrue}% no checking done
+% \fi
+% \doifpredefinedreferenceelse{\global\referencefoundfalse}{}}
+
+\newif\ifstrictouterreferences \strictouterreferencesfalse
+
+\beginTEX
+
+\def\dodocheckouterreference
+ {\@EA\ifx\csname\specialREFidentifier\currentfullreference\endcsname\relax
+ \ifstrictouterreferences
+ \global\referencefoundfalse
+ \else
+ % already \global\referencefoundtrue % no checking done
+ \fi
+ \else
+ \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+ {\csname\specialREFidentifier\currentfullreference\endcsname}%
+ \docheckouterreference
+ \fi}
+
+\def\docheckouterreference
+ {\let\referenceprefix\empty
+ \let\unharmedreferenceprefix\empty
+ \xdef\predefinedreference
+ {\currentouterreference::\currentinnerreference}%
+ \ifx\innerreference\empty
+ \global\referencefoundtrue % no checking done
+ \else
+ \@EA\ifx\csname\r!cross\currentouterreference::\endcsname\relax
+ \ifstrictouterreferences
+ \global\referencefoundfalse
+ \else
+ \global\referencefoundtrue % no checking done
+ \fi
+ \else
+ \ifcsname\r!cross\currentfullreference\endcsname
+ \global\referencefoundtrue
+ \else
+ \dodocheckouterreference
+ \fi
+ \fi
+ \fi
+ \doifpredefinedreferenceelse{\global\referencefoundfalse}\donothing}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dodocheckouterreference
+ {\ifcsname\specialREFidentifier\currentfullreference\endcsname
+ \@EA\@EA\@EA\splitofffullreference\@EA\@EA\@EA % 1 level
+ {\csname\specialREFidentifier\currentfullreference\endcsname}%
+ \docheckouterreference
+ \else\ifstrictouterreferences
+ \global\referencefoundfalse
+ \else
+ % already \global\referencefoundtrue % no checking done
+ \fi\fi}
+
+\def\docheckouterreference
+ {\let\referenceprefix\empty
+ \let\unharmedreferenceprefix\empty
+ \xdef\predefinedreference
+ {\currentouterreference::\currentinnerreference}%
+ \ifx\innerreference\empty
+ \global\referencefoundtrue % no checking done
+ \else
+ \ifcsname\r!cross\currentouterreference::\endcsname
+ \ifcsname\r!cross\currentfullreference\endcsname
+ \global\referencefoundtrue
+ \else
+ \dodocheckouterreference
+ \fi
+ \else
+ \ifstrictouterreferences
+ \global\referencefoundfalse
+ \else
+ \global\referencefoundtrue % no checking done
+ \fi
+ \fi
+ \fi
+ \doifpredefinedreferenceelse{\global\referencefoundfalse}\donothing}
+
+\endETEX
+
+%D Special references are only tested when some test routine is
+%D defined.
+
+\def\docheckspecialreference
+ {\let\referenceprefix\empty
+ \let\unharmedreferenceprefix\empty
+ \xdef\predefinedreference
+ {\currentreferencespecial::\currentreferenceoperation}%
+ \executeifdefined{\s!do:\v!test:\currentreferencespecial}%
+ {\global\referencefoundtrue\gobbletwoarguments}%
+ {\global\referencefoundtrue}{\global\referencefoundfalse}%
+ \doifpredefinedreferenceelse{\global\referencefoundfalse}\donothing}
+
+%D An unknown reference is reported on the screen, in the log
+%D file and, when enabled, in the left margin of the text.
+
+\def\reportreferenceerror#1#2%
+ {\bgroup
+ \the\everyreference % cleanup : etc in french
+ \ifinpagebody\else
+ \doifconcepttracing
+ {\doifsomething{#2}
+ {\inleft
+ {\infofont
+ \scratchdimen\leftmarginwidth
+ \advance\scratchdimen -2em
+ \doboundtext{#2}\scratchdimen{..}->}}}%
+ \fi
+ \doifpredefinedreferenceelse
+ \donothing
+ {\predefinereference
+ \showmessage\m!references{#1}{[\unharmedreferenceprefix][#2]}}%
+ \egroup}
+
+\def\unknownreference{\reportreferenceerror1}
+\def\illegalreference{\reportreferenceerror4}
+
+%D Although not actually needed, we default the unharmed
+%D reference prefix to the normal one.
+
+\def\unharmedreferenceprefix{\referenceprefix}
+
+%D When a reference is not found, we typeset a placeholder
+%D (two glyphs are often enough to represent the reference
+%D text).
+
+\def\dummyreference{{\tttf ??}}
+
+%D To prevent repetitive messages concerning a reference
+%D being defined, we set such an unknown reference to an empty
+%D one after the first encounter.
+
+\let\predefinedreference\s!unknown
+
+% \def\predefinereference
+% {\setgvalue{\r!cross\predefinedreference}{\rt!cross{}{}{}{}}%
+% \setgvalue{\r!cross\unharmedreferenceprefix\predefinedreference}{\rt!cross{}{}{}{}}}
+
+\def\dummypredefinedreference{\r!cross{}{}{}{}}
+
+\def\predefinereference
+ {\global\@EA\let\csname\r!cross\predefinedreference \endcsname\dummypredefinedreference
+ \global\@EA\let\csname\r!cross\unharmedreferenceprefix\endcsname\dummypredefinedreference}
+
+%D Testing on existance then becomes:
+
+% \def\checkpredefinedreference#1#2#3#4% #3 can expand tricky
+% {{#1}{#2}{#4}}
+%
+% \def\doifpredefinedreferenceelse#1#2% \referenceprefix added
+% {\bgroup
+% \let\rt!cross\checkpredefinedreference
+% \doifelse{\getvalue{\r!cross\referenceprefix\predefinedreference}}{{}{}{}}
+% {\egroup#1}{\egroup#2}}
+
+\def\doifpredefinedreferenceelse % \referenceprefix added
+ {\@EA\ifx\csname\r!cross\referenceprefix\predefinedreference\endcsname\dummypredefinedreference
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D Sometimes we want to temporary put a reference out of
+%D order. An example can be found in the menu macros.
+%D
+%D \starttyping
+%D \doifreferencepermittedelse{reference}{set}{true}{false}
+%D \stoptyping
+%D
+%D The second argument can be a comma seperated list.
+
+% this will be replaced by a more general mechanis
+
+% \def\doifreferencepermittedelse#1#2#3#4% ref set found notfound
+% {\doifreferencefoundelse{#1}
+% {\ifx\currentinnerreference\empty
+% \ifx\currentouterreference\empty
+% #3%
+% \else
+% \doifinstringelse{\currentouterreference::}{#2}{#4}{#3}%
+% \fi
+% \else\ifx\currentouterreference\empty
+% \doifinstringelse{\currentinnerreference}{#2}{#4}{#3}%
+% \else
+% \doifinstringelse{\currentouterreference::\currentinnerreference}{#2}{#4}{#3}%
+% \fi\fi}
+% {#4\unknownreference{#1}}}
+
+\let\permittedreferences\empty
+
+\def\doifreferencepermittedelse#1#2#3% ref found notfound
+ {\doifreferencefoundelse{#1}
+ {\donetrue
+ \ifx\permittedreferences\empty \else
+ \docheckifreferencepermitted{#1}%
+ \fi
+ \ifdone#2\else#3\fi}
+ {#3\unknownreference{#1}}}
+
+\def\docheckifreferencepermitted#1%
+ {\ifx\currentinnerreference\empty
+ \ifx\currentouterreference\empty \else
+ \doifinstring{\currentouterreference::}\permittedreferences\donefalse
+ \fi
+ \else\ifx\currentouterreference\empty
+ \doifinstring{\currentinnerreference}\permittedreferences\donefalse
+ \else
+ \doifinstring{\currentouterreference::\currentinnerreference}\permittedreferences\donefalse
+ \fi\fi}
+
+%D Apart from cross references supplied by the user, \CONTEXT\
+%D generates cross references itself. Most of them are not
+%D saved as a reference, but stored with their source, for
+%D instance a list or an index entry. Such automatically
+%D generated, for the user invisible, references are called
+%D {\em internal references}. The user supplied ones are
+%D labeled as {\em external references}.
+%D
+%D A second important characteristic is that when we want to
+%D support different backends (viewers), we need to support
+%D named destinations as well as page numbers. I invite readers
+%D to take a glance at the special driver modules to understand
+%D the fine points of this. As a result we will deal with {\em
+%D locations} as well as {\em real page numbers}. We explictly
+%D call this pagenumber a real one, because it is independant
+%D of the page numbering scheme used in the document.
+%D
+%D One of the reasons for \CONTEXT\ being the first \TEX\ base
+%D macropackage to support sophisticated interactive \PDF\
+%D files, lays in the mere fact that real page numbers are
+%D available in most two pass data, like references, list data
+%D and index entries.
+%D
+%D We will speak of \type{thisis...} when we are marking a
+%D location, and \type{goto...} when we point to such a
+%D location. The latter one can be seen as a hyperlink to the
+%D former one. In the next macros one we use constructs like:
+%D
+%D \starttyping
+%D \dostart...
+%D \dostop...
+%D \stoptyping
+%D
+%D Such macros are used to invoke the relevant specials from
+%D the special driver modules (see \type{spec-ini}). The flag
+%D \type{\iflocation} signals if we're in interactive mode.
+
+\def\thisisdestination#1% destination
+ {\iflocation \ifusepagedestinations \else
+ \dostartthisislocation{#1}\dostopthisislocation
+ \fi \fi}
+
+\def\thisisrealpage#1% pagenumber
+ {\iflocation
+ \dostartthisisrealpage{#1}\dostopthisisrealpage
+ \fi}
+
+%D The previous tho macros were easy ones, opposite to their
+%D counterparts. A common component in these is:
+%D
+%D \starttyping
+%D \dostartgoto
+%D \data {..}
+%D \start {..}
+%D \stop {..}
+%D \dostopgoto
+%D \stoptyping
+%D
+%D Here data can be whatever needs highlighting, e.g. {\em
+%D figure 2.4}, and the start and stop entries handle the
+%D specials. The two \DIMENSIONS\ \type{\buttonwidth} and
+%D \type{\buttonheight} have to be set when handling the
+%D data~(\type{#2}).
+
+\ifx\buttonheight\undefined \newdimen\buttonheight \fi
+\ifx\buttonwidth \undefined \newdimen\buttonwidth \fi
+
+\def\gotodestination#1#2#3#4#5% url file destination page data
+ {\iflocation
+ \ifusepagedestinations
+ \gotorealpage{#1}{#2}{#4}{#5}%
+ \else
+ \dostartgoto
+ \data
+ {#5}%
+ \start
+ \the\everyreference % we are (have to be) grouped !
+ \dostartgotolocation\buttonwidth\buttonheight{#1}{#2}{#3}{#4}%
+ \stop
+ \dostopgotolocation
+ \dostopgoto
+ \fi
+ \else
+ {#5}%
+ \fi}
+
+\def\gotorealpage#1#2#3#4% url file page data
+ {\iflocation
+ \dostartgoto
+ \data
+ {#4}%
+ \start
+ \dostartgotorealpage\buttonwidth\buttonheight{#1}{#2}{#3}%
+ \stop
+ \dostopgotorealpage
+ \dostopgoto
+ \else
+ {#4}%
+ \fi}
+
+%D \macros
+%D {setreferencefilename}
+%D
+%D This command can be used in the special drivers to
+%D uppercase filenames. This is needed when one wants to
+%D produce \CDROM's conforming to ISO9660. We consider is the
+%D savest to enable this feature by default. We cannot handle
+%D uppercase here, since the suffix is handled in the special
+%D driver. Conversion is taken care of by:
+%D
+%D \starttyping
+%D \setreferencefilename somefilename\to\SomeFileName
+%D \stoptyping
+
+% \def\setreferencefilename#1\to#2%
+% {\doifelse{\@@converteerfile}{\v!ja} % boolean is sneller
+% {\uppercasestring#1\to#2}
+% {\edef#2{#1}}}
+
+\chardef\referencefilecase=0
+
+\def\setreferencefilename#1\to#2%
+ {\ifcase\referencefilecase
+ \edef#2{#1}%
+ \or
+ \uppercasestring#1\to#2%
+ \or
+ \lowercasestring#1\to#2%
+ \else
+ \edef#2{#1}%
+ \fi}
+
+%D Internal references can best be set using the next few
+%D macros. Setting such references to unique values is
+%D completely up to the macros that call them.
+%D
+%D \starttyping
+%D \thisissomeinternal{tag}{identifier}
+%D \gotosomeinternal {tag}{identifier}{pagenumber}{text}
+%D \stoptyping
+
+\def\thisissomeinternal#1#2% tag reference
+ {\doifsomething{#2}{\thisisdestination{#1:#2}}}
+
+\def\gotosomeinternal#1#2% #3#4
+ {\gotodestination\empty\empty{#1:#2}}
+
+%D An automatic mechanism is provided too:
+%D
+%D \starttyping
+%D \thisisnextinternal{tag}
+%D \gotonextinternal {tag}{number}{pagenumber}{text}
+%D \stoptyping
+%D
+%D The first macro increments a counter. The value of this
+%D counter is available in the macro \type{\nextinternalreference}
+%D and should be saved somewhere (for instance in a file) for
+%D future reference. The second argument of
+%D \type {\gotonextinternal} takes such a saved number. One can
+%D turn on tracing these references, in which case the
+%D references are a bit more verbose.
+
+\newcount\locationcount
+
+\newif\iftraceinternalreferences
+\newif\ifinternalnamedreferences \internalnamedreferencestrue
+
+\def\nextinternalreference
+ {\the\locationcount}
+
+% \def\thisisnextinternal#1%
+% {\global\advance\locationcount \plusone
+% \thisisdestination{\s!aut\iftraceinternalreferences:#1\fi:\nextinternalreference}}
+%
+% \def\gotonextinternal#1#2% #3#4
+% {\gotodestination{}{}{\s!aut\iftraceinternalreferences:#1\fi:#2}}
+
+\def\thisisnextinternal#1%
+ {\global\advance\locationcount \plusone
+ \ifinternalnamedreferences
+ \thisisdestination{\s!aut\iftraceinternalreferences:#1\fi:\nextinternalreference}%
+ \fi}
+
+\def\gotonextinternal#1#2#3#4%
+ {\ifinternalnamedreferences
+ \gotodestination\empty\empty{\s!aut\iftraceinternalreferences:#1\fi:#2}{#3}{#4}%
+ \else
+ \gotorealpage\empty\empty{#3}{#4}%
+ \fi}
+
+%D We already went through a lot of problems to sort out what
+%D kind of reference we're dealing with. Sorting out the user
+%D supplied cross references (show/goto this or that) as well
+%D as user supplied system references (invoke this or that) is
+%D already taken care of in the test routine, but we still have
+%D to direct the request to the right (first) routine.
+
+\def\gotolocation% #1#2%
+ {\ifx\currentreferencespecial\empty
+ \ifx\currentouterreference\empty
+ \ifnum\currentreferencetype<2
+ \@EA\@EAEAEA\@EA\gotoinnerlocation
+ \else
+ \@EA\@EAEAEA\@EA\gotosystemlocation
+ \fi
+ \else
+ \@EAEAEA\gotoouterlocation
+ \fi
+ \else
+ \@EA\gotospeciallocation
+ \fi} % {#1}{#2}
+
+%D An inner reference refers to some place in the document
+%D itself.
+
+\def\gotoinnerlocation#1% #2%
+ {\gotodestination\empty\empty
+ {\referenceprefix\currentinnerreference}\currentrealreference} % {#2}
+
+%D The outer location refers to another document, specified as
+%D file or \URL.
+
+\def\gotoouterlocation#1#2% % page checken!
+ {\bgroup
+ \let\referenceprefix\empty
+ \setouterlocation\currentouterreference
+ \ifx\currentinnerreference\empty
+ \gotorealpage
+ \otherURL\otherfile1{#2}%
+ \else
+ \gotodestination
+ \otherURL\otherfile\currentinnerreference\currentrealreference{#2}%
+ \fi
+ \egroup}
+
+%D Special locations are those that are accessed by saying
+%D things like:
+%D
+%D \starttyping
+%D \goto{calculate total}[JS(summarize{10,23,56}]
+%D \stoptyping
+%D
+%D After several intermediate steps this finally arrives at
+%D the next macro and expands into (simplified):
+%D
+%D \starttyping
+%D \gotoJSlocation{total{summarize{10,23,56}}}{calculate total}
+%D \stoptyping
+%D
+%D The first argument is the full reference, the second one
+%D is the text, in some kind of manipulated form. In practice
+%D we split references, so we get:
+%D
+%D \starttyping
+%D \gotoJSlocation{summarize{10,23,56}}{calculate}
+%D \gotoJSlocation{summarize{10,23,56}}{total}
+%D \stoptyping
+%D
+%D where \type{calculate} and \type{total} are colored, boxed
+%D or whatever \type{\goto} is told to do.
+%D
+%D The macro \type{\gotoJSlocation} can use \type
+%D {\currentreferenceoperation} (in our example
+%D \type{summarize}) and \type{\currentreference} (here
+%D being \type {10,23,56}) to perform its task.
+
+\def\gotospeciallocation
+ {\executeifdefined{goto\currentreferencespecial location}\gobbleoneargument}
+
+%D Such special macros can be defined by:
+
+\def\definespeciallocation#1%
+ {\setvalue{goto#1location}}
+
+%D The associated test is to be defined by:
+
+\def\definespecialtest#1%
+ {\setvalue{\s!do:\v!test:#1}}
+
+%D This \type{\def} alike macro is to be used as:
+%D
+%D \starttyping
+%D \definespeciallocation{JS}#1#2{... #1 ... #2 ...}
+%D \stoptyping
+%D
+%D In module \type {java-ini} one can see that \type
+%D {\gotoJSlocation} looks much like the previous goto
+%D definitions.
+
+%D A system location is not always a location, but for the
+%D consistency we also consider actions as such.
+
+\def\gotosystemlocation
+ {\csname\r!syst\the\currentreferencetype\endcsname}
+
+\def\definesystemreferencehandler#1#2%
+ {\setgvalue{\r!syst\the#1}{#2}}
+
+%D In this module we define three system references: one for
+%D handling navigational, viewer specific, commands, another
+%D for jumping to special pages, like the first or last one,
+%D and a third reference for linking tree like lists, like
+%D tables of contents. The latter two adapt themselves to the
+%D current state.
+
+\definesystemreferencehandler \rt!exec \handleexecreference
+\definesystemreferencehandler \rt!page \handlepagereference
+\definesystemreferencehandler \rt!list \handlelistreference
+
+\def\handleexecreference#1%
+ {\checkexecutecommand\currentdatareference\currentreferencearguments
+ \executecommand\currentdatareference\currentreferencearguments}
+
+\def\handlepagereference#1%
+ {\gotorealpage\empty\empty\currentdatareference}
+
+\def\handlelistreference#1% is deze nog echt nodig?
+ {\gotodestination\empty\empty\currentdatareference{\getvalue{\currentdatareference}}}
+
+%D \macros
+%D {setexecutecommandcheck}
+%D
+%D In case a command action needs to do some checking in
+%D advance, one can assign an check function by:
+%D
+%D \starttyping
+%D \setexecutecommandcheck{startsound}\checksoundtrack
+%D \stoptyping
+
+\def\setexecutecommandcheck#1#2% #2 permits \first \second
+ {\setvalue{\s!do:\s!do:#1}{#2}}
+
+\beginETEX
+
+\def\checkexecutecommand#1#2% evt geen #1 en #2
+ {\ifx#2\empty \else \ifcsname\s!do:\s!do:#1\endcsname
+ \@EA\let\@EA\docheckexecutecommand\csname\s!do:\s!do:#1\endcsname
+ \rawprocesscommalist[#2]\docheckexecutecommand
+ \fi \fi }
+
+\endETEX
+
+\beginTEX
+
+\def\checkexecutecommand#1#2% evt geen #1 en #2
+ {\ifx#2\empty \else \@EA\ifx\csname\s!do:\s!do:#1\endcsname\relax \else
+ \@EA\let\@EA\docheckexecutecommand\csname\s!do:\s!do:#1\endcsname
+ \rawprocesscommalist[#2]\docheckexecutecommand
+ \fi \fi }
+
+\endTEX
+
+%D Command references (in dutch, english, german of
+%D whatever interface language) are translated into a bit
+%D shorter reference (\type{close}) and passed to the
+%D special driver (using \type{\executecommand}).
+
+% better: [action(name)] and \definereference[name][action(name)]
+
+\setglobalsystemreference \rt!exec \v!CloseDocument {close}
+\setglobalsystemreference \rt!exec \v!ExitViewer {exit}
+\setglobalsystemreference \rt!exec \v!FirstPage {first}
+\setglobalsystemreference \rt!exec \v!LastPage {last}
+\setglobalsystemreference \rt!exec \v!NextJump {forward}
+\setglobalsystemreference \rt!exec \v!NextPage {next}
+\setglobalsystemreference \rt!exec \v!PauseMovie {pausemovie}
+\setglobalsystemreference \rt!exec \v!PauseSound {pausesound}
+\setglobalsystemreference \rt!exec \v!PauseRendering {pauserendering}
+\setglobalsystemreference \rt!exec \v!PreviousJump {backward}
+\setglobalsystemreference \rt!exec \v!PreviousPage {previous}
+\setglobalsystemreference \rt!exec \v!PrintDocument {print}
+\setglobalsystemreference \rt!exec \v!SaveForm {exportform}
+\setglobalsystemreference \rt!exec \v!LoadForm {importform}
+\setglobalsystemreference \rt!exec \v!ResetForm {resetform}
+\setglobalsystemreference \rt!exec \v!ResumeMovie {resumemovie}
+\setglobalsystemreference \rt!exec \v!ResumeSound {resumesound}
+\setglobalsystemreference \rt!exec \v!ResumeRendering {resumerendering}
+\setglobalsystemreference \rt!exec \v!SaveDocument {save}
+\setglobalsystemreference \rt!exec \v!SaveNamedDocument{savenamed}
+\setglobalsystemreference \rt!exec \v!OpenNamedDocument{opennamed}
+\setglobalsystemreference \rt!exec \v!SearchDocument {search}
+\setglobalsystemreference \rt!exec \v!SearchAgain {searchagain}
+\setglobalsystemreference \rt!exec \v!StartMovie {startmovie}
+\setglobalsystemreference \rt!exec \v!StartSound {startsound}
+\setglobalsystemreference \rt!exec \v!StartRendering {startrendering}
+\setglobalsystemreference \rt!exec \v!StopMovie {stopmovie}
+\setglobalsystemreference \rt!exec \v!StopSound {stopsound}
+\setglobalsystemreference \rt!exec \v!StopRendering {stoprendering}
+\setglobalsystemreference \rt!exec \v!SubmitForm {submitform}
+\setglobalsystemreference \rt!exec \v!ToggleViewer {toggle}
+\setglobalsystemreference \rt!exec \v!ViewerHelp {help}
+\setglobalsystemreference \rt!exec \v!HideField {hide}
+\setglobalsystemreference \rt!exec \v!ShowField {show}
+\setglobalsystemreference \rt!exec \v!GotoPage {gotopage}
+\setglobalsystemreference \rt!exec \v!GotoPage {gotopage}
+\setglobalsystemreference \rt!exec \v!Query {query}
+\setglobalsystemreference \rt!exec \v!QueryAgain {queryagain}
+\setglobalsystemreference \rt!exec \v!FitWidth {fitwidth}
+\setglobalsystemreference \rt!exec \v!FitHeight {fitheight}
+
+%D Executing the command looks alike the previous goto macros.
+
+\def\executecommand#1#2#3%
+ {\iflocation
+ \dostartgoto
+ \data
+ {#3}%
+ \start
+ \dostartexecutecommand\buttonwidth\buttonheight{#1}{#2}%
+ \stop
+ \dostopexecutecommand
+ \dostopgoto
+ \else
+ {#3}%
+ \fi}
+
+%D We could have done without the short tags and thereby saving
+%D some tokens, but the current approach leaves room for future
+%D extensions.
+
+%D It is possible to disable the writing of references to the
+%D utility file by setting:
+
+\newif\ifreferencing \referencingtrue
+
+%D One can also activate an automatic prefix mechanism. By
+%D setting the \type{\prefix} variable to \type{+}, the prefix
+%D is incremented, when set to \type{-} or empty, the prefix is
+%D reset. Other values become the prefix.
+
+\newcount\prefixcounter
+
+%D These settings are accomplished by:
+%D
+%D \showsetup{setupreferencing}
+%D
+%D In interactive documents verbose references don't always
+%D make sense (what is a page number in an unnumbered
+%D document). By setting the \type{interaction} variable, one
+%D can influences the way interactive references are set.
+
+% \newif\ifreferencestrut % some day an option
+
+\def\setupreferencing
+ {\dosingleargument\dosetupreferencing}
+
+\def\dosetupreferencing[#1]%
+ {\getparameters
+ [\??rf]
+ [\c!prefix=\s!unknown,#1]%
+ \processaction
+ [\@@rfstate]
+ [ \v!stop=>\referencingfalse,
+ \v!start=>\referencingtrue]%
+ \processaction
+ [\@@rfinteraction]
+ [ \v!all=>\let\dowantedreference\docompletereference,
+ \v!label=>\let\dowantedreference\dolabelonlyreference,
+ \v!text=>\let\dowantedreference\dotextonlyreference,
+ \v!symbol=>\let\dowantedreference\dosymbolreference]%
+ \chardef\autocrossfilereferences\zerocount
+ \processaction
+ [\@@rfautofile]
+ [ \v!yes=>\chardef\autocrossfilereferences\plusone,
+ \v!page=>\chardef\autocrossfilereferences\plustwo]%
+ \chardef\referencefilecase\zerocount
+ \processaction[\@@rfconvertfile]
+ [ \v!yes=>\chardef\referencefilecase\plusone,
+ \v!big=>\chardef\referencefilecase\plusone,
+ \v!small=>\chardef\referencefilecase\plustwo]%
+ %\doifelse\@@rfstrut\v!yes % some day an option
+ % \referencetruttrue\referencestrutfalse
+ \setupreferenceprefix[\@@rfprefix]%
+ \doifelse\@@rfglobal\v!yes
+ {\settrue \autoglobalfilereferences}
+ {\setfalse\autoglobalfilereferences}}
+
+\def\incrementreferenceprefix{+}
+\def\decrementreferenceprefix{-}
+
+\def\setupreferenceprefix[#1]%
+ {\edef\@@rfprefix{#1}%
+ \ifx\@@rfprefix\empty
+ \let\referenceprefix\empty
+ \else\ifx\@@rfprefix\incrementreferenceprefix
+ \advance\prefixcounter \plusone % should be global
+ \edef\referenceprefix{\the\prefixcounter:}%
+ \let\@@rfprefix\s!unknown
+ \else\ifx\@@rfprefix\decrementreferenceprefix
+ \let\referenceprefix\empty
+ \let\@@rfprefix\s!unknown
+ \else\ifx\@@rfprefix\s!unknown
+ % forget about it
+ \else
+ \edef\referenceprefix{\@@rfprefix:}%
+ \fi\fi\fi\fi}
+
+%D \macros
+%D {handlereferenceactions,
+%D collectreferenceactions}
+%D
+%D Sometimes we need to pass the actions connected to
+%D references to variables instead of rectangular areas on
+%D which one can click. The next macro collects the actions
+%D and passes them to a handle. This is a rather dreadfull
+%D hack!
+%D
+%D \starttyping
+%D \handlereferenceactions{references}\handle
+%D \stoptyping
+%D
+%D So, \type {\handle} does the final job, which in for
+%D instance the \PDF\ drivers comes down to doing something
+%D with \type {\lastPDFaction}.
+
+\newif\ifcollectreferenceactions
+
+\def\handlereferenceactions#1#2%
+ {\doifsomething{#1}
+ {\bgroup
+ \collectreferenceactionstrue
+ \@EA\doifreferencefoundelse\@EA{#1}
+ {\gotolocation{#1}{}\ifsecondaryreference\else#2\fi}
+ {\unknownreference{#1}}%
+ \egroup}}
+
+%D The most straightforward way of retrieving references is
+%D using \type{\ref}. Consider the reference:
+%D
+%D \startbuffer
+%D \reference[my ref]{{Look}{Here}{I am}}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D We can ask for upto five reference components:
+%D
+%D \startbuffer
+%D user page reference: \ref[p][my ref]
+%D text reference: \ref[t][my ref]
+%D real page reference: \ref[r][my ref]
+%D sub text reference: \ref[s][my ref]
+%D extra text reference: \ref[e][my ref]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D And get back:
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+
+\def\ref{\dodoubleargument\doref}
+
+\def\reftypep{\currentpagereference}
+\def\reftypet{\currenttextreference}
+\def\reftyper{\currentrealreference}
+\def\reftypes{\currentsubtextreference}
+\def\reftypee{\currentsubsubtextreference}
+
+\def\doref[#1][#2]%
+ {\ifsecondargument
+ \doifreferencefoundelse{#2}
+ {\doifundefinedelse{reftype#1}{\reftypep}{\getvalue{reftype#1}}}
+ {\unknownreference{#2}\dummyreference}%
+ \else
+ \dummyreference
+ \fi}
+
+%D We can typeset a reference using \type{\in}, \type{\at} and
+%D \type{\about} and goto specific locations using
+%D \type{\goto}. The last one does not make that much sense in
+%D a paper document. To complicate things, \PLAIN\ \TEX\ also
+%D implements an \type {\in} but fortunately that one only
+%D makes sense in math mode.
+
+%D --- VANAF HIER NOG VERENGELSEN ---
+
+%\let\donormalin =\in
+%\let\donormalover=\over % about/oppassen beter nederlands dan engels!
+%
+%\def\in%
+% {\ifmmode
+% \expandafter\donormalin
+% \else
+% \expandafter\doinatreference\expandafter\currenttextreference
+% \fi}
+
+% we need to bypass math tokens
+
+% \let\normalover \over
+
+\definecommand in {\doinatreference\currenttextreference}
+\definecommand at {\doinatreference\currentpagereference}
+\definecommand about {\dospecialabout}
+\definecommand from {\dospecialfrom}
+\definecommand over {\dospecialabout} % needed here, else math problems
+
+\unexpanded\def\dospecialabout[#1]%
+ {\dontleavehmode
+ \bgroup
+ \def\thecurrentsubtextreference
+ {\limitatetext\currentsubtextreference\@@rfwidth\unknown}%
+ %\leaveoutervmode % no
+ \@@rfleft
+ \doifreferencefoundelse{#1}
+ {\let\crlf\space
+ \let\\\space
+ \let\dogotofixed\dogotospace
+ \dogotospace{\thecurrentsubtextreference}[#1]}
+ {\unknownreference{#1}\dummyreference}%
+ \@@rfright
+ \referentieinfo{<}{#1}%
+ \egroup}
+
+%D Typesetting the reference is a bit more complicated than one
+%D would at first sight expect. This is due to the fact that we
+%D distinguish three (five) alternative calls:
+%D
+%D \placefigure
+%D [here][three calls]
+%D {Three alternatives reference calls.}
+%D {\startcombination[1*3]
+%D {\framed{\type{ \in }}} {a}
+%D {\framed{\type{ \at }}} {b}
+%D {\framed{\type{\goto}}} {c}
+%D \stopcombination}
+%D
+%D \startbuffer
+%D \in figure[fig:three calls]
+%D \in{figure}[fig:three calls]
+%D \in figure a[fig:three calls]
+%D \in{figure}{a}[fig:three calls]
+%D figure~\in[fig:three calls]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This turns up as:
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D
+%D The dual \type{{}} results in a split reference. In a
+%D document meant for paper, one is tempted to use the last
+%D (most straightforward) alternative. When a document is also
+%D meant voor electronic distribution, the former alternatives
+%D have preference, because everything between the \type{\in}
+%D and~\type{[} becomes active (and when asked for, typeset
+%D in a different color and typeface).
+
+\def\doinatreference#1%
+ {\doifnextcharelse[% {[}
+ {\dodoinatreference{#1}{}}
+ {\dodoinatreference{#1}}}
+
+\def\dodoinatreference#1%
+ {\def\dododoinatreference{\dodododoinatreference{#1}}%
+ \futurelet\next\dododoinatreference}
+
+% overloaded
+%
+% \def\dodododoinatreference#1#2#3[#4]%
+% {\ifx\next\bgroup
+% \dododododoinatreference{#1\ignorespaces#3}{#2}[#4]%
+% \else
+% \dododododoinatreference{#1}{#2#3}[#4]%
+% \fi}
+
+%D We arrived at the last step. Before we do the typesetting,
+%D we forget all previous (paragraph bound) settings and make
+%D sure that we remain in horizontal mode. Next we choose
+%D among the several representations.
+
+% overloaded
+%
+% \def\dododododoinatreference#1#2[#3]%
+% {\dontleavehmode
+% \bgroup
+% \forgetall
+% %\leaveoutervmode
+% \doifreferencefoundelse{#3}
+% {\bgroup
+% \let\ignorespaces\empty % rather dirty but ok
+% \doifelsenothing{#1}
+% {\egroup\dosymbolreference{#1}{#2}[#3]}
+% {\egroup\dowantedreference{#1}{#2}[#3]}}
+% {\dounknownreference{#1}{#2}[#3]}%
+% \referentieinfo{<}{#3}%
+% \egroup}
+
+%D The previously discussed setup macro lets us specify the
+%D representation of references. A symbol reference does not
+%D show the specific data, like the number of a figure, but
+%D shows one of: \hbox {$^\goforwardcharacter$
+%D $^\gobackwardcharacter$ $^\gonowherecharacter$}, depending
+%D on the direction to go.
+
+\def\dosymbolreference#1#2[#3]%
+ {\bgroup
+ \setupsymbolset[\@@iasymbolset]%
+ \removelastskip
+ \ifx\currentreferencespecial\empty
+ \ifx\currentouterreference\empty
+ \ifnum0\currentrealreference=\zerocount
+ \ifhmode\strut\high{\symbol[\v!nowhere]}\fi
+ \else\ifnum0\currentrealreference>\realpageno
+ \dodosymbolreference{#2}{\high{\symbol[\v!next]}}%
+ \else\ifnum0\currentrealreference<\realpageno
+ \dodosymbolreference{#2}{\high{\symbol[\v!previous]}}%
+ \else
+ \ifhmode\strut\high{\symbol[\v!nowhere]}\fi
+ \fi\fi\fi
+ \else
+ \gotoouterlocation{#3}{\showlocation{\high{\symbol[\v!somewhere]}}}%
+ \fi
+ \else
+ \gotospeciallocation{#3}{\showlocation{\high{\symbol[\v!somewhere]}}}%
+ \fi
+ \egroup}
+
+\def\dodosymbolreference#1#2%
+ {#1\hbox{\gotorealpage\empty\empty\currentrealreference
+ {\dolocationattributes\??ia\c!style\c!color{#2}}}}
+
+%D The other alternatives just conform their names: only the
+%D label, only the text, or the label and the text.
+
+\def\dounknownreference#1#2[#3]%
+ {\unknownreference{#3}\dotextprefix{#2}\dummyreference}%
+
+% \def\docompletereference#1#2[#3]%
+% {\doifsomespaceelse{#2}
+% {\doifsomething{#2}{\dogotospace{#2}[#3]~}\dogotofixed{#1}[#3]}
+% {\dogotofixed{\dotextprefix{#2}#1}[#3]}}
+%
+% better:
+
+% \def\docompletereference#1#2[#3]%
+% {\iflocationsplit
+% \doifsomespaceelse{#2}
+% {\dogotospace{\dotextprefix{#2}#1}[#3]}
+% {\dogotofixed{\dotextprefix{#2}#1}[#3]}%
+% \else
+% \dogotofixed{\dotextprefix{#2}#1}[#3]%
+% \fi}
+%
+% more efficient
+
+\def\docompletereference#1#2[#3]%
+ {\iflocationsplit
+ \doifsomespaceelse{#2}\dogotospace\dogotofixed{\dotextprefix{#2}#1}[#3]%
+ \else
+ \dogotofixed{\dotextprefix{#2}#1}[#3]%
+ \fi}
+
+\def\dolabelonlyreference#1#2[#3]%
+ {\doifsomespaceelse{#2}
+ {\doifsomething{#2}{\dogotospace{#2}[#3]}}
+ {\dogotofixed{\dotextprefix{#2}}[#3]}}
+
+\def\dotextonlyreference#1#2[#3]%
+ {\dotextprefix{#2}\dogotofixed{#1}[#3]}
+
+\let\dowantedreference=\docompletereference
+
+%D \macros
+%D {definereferenceformat}
+%D
+%D The next few macros were made for for David Arnold and Taco
+%D Hoekwater. They can be used for predefining reference
+%D texts, and thereby stimulate efficiency.
+%D
+%D [more documentation will be added]
+%D
+%D \starttyping
+%D \definereferenceformat[informula] [left=(,right=),text=formula]
+%D \definereferenceformat[informulas] [left=(,right=),text=formulas]
+%D \definereferenceformat[andformula] [left=(,right=),text=and]
+%D \definereferenceformat[andformulas][left=(,right=),text=and]
+%D
+%D \informula [b] and \informula [for:c]
+%D the \informula {formulas}[b] \informula {and} [for:c]
+%D the \informulas {formulas}[b] \informula {and} [for:c]
+%D the \informulas [b] \informula {en} [for:c]
+%D the \informulas [b] \andformula [for:c]
+%D \stoptyping
+%D
+%D Instead of a text, one can specify a label, which should
+%D be defined with \type {\setuplabeltext}.
+
+\def\definereferenceformat%
+ {\dodoubleargument\dodefinereferenceformat}
+
+\def\dodefinereferenceformat[#1][#2]%
+ {\iffirstargument
+ \getparameters[\??rf#1]
+ [\c!left=, % of the number
+ \c!right=, % of the number
+ \c!text=, % before the number
+ \c!label=, % can be {left}{right}
+ \c!command=\in,
+ #2]%
+ \unexpanded\setvalue{#1}%
+ {\dontleavehmode\doexecutereferenceformat{#1}}%
+ \fi}
+
+\def\noexecutelabelreferenceformat#1%
+ {\doifvaluesomething{\??rf#1\c!text}
+ {\gdef\textofreference{\csname\??rf#1\c!text\endcsname}}%
+ \csname\??rf#1\c!command\endcsname}
+
+\def\doexecutelabelreferenceformat#1%
+ {\csname\??rf#1\c!command\endcsname
+ {\leftlabeltext {\csname\??rf#1\c!label\endcsname}}%
+ {\rightlabeltext{\csname\??rf#1\c!label\endcsname}}}
+
+\def\doexecutereferenceformat#1%
+ {\gdef\leftofreference {\csname\??rf#1\c!left \endcsname}%
+ \gdef\rightofreference{\csname\??rf#1\c!right\endcsname}%
+ \global\let\textofreference\empty % otherwise ~ added
+ \doifelsevaluenothing{\??rf#1\c!label}
+ \noexecutelabelreferenceformat\doexecutelabelreferenceformat{#1}}
+
+\let\leftofreference \relax
+\let\rightofreference\relax
+\let\textofreference \relax
+
+\def\dodododoinatreference#1#2#3[#4]% \removeunwantedspaces added june 2004
+ {\ifx\next\bgroup % but removed later, fails on metafun
+ \dododododoinatreference
+ % fails on metafun {\leftofreference#1\ignorespaces#3\removeunwantedspaces\rightofreference}{#2}[#4]%
+ {\leftofreference#1\ignorespaces#3\rightofreference}{#2}[#4]%
+ \else
+ \dododododoinatreference
+ {\leftofreference#1\rightofreference}{#2#3}[#4]%
+ \fi}
+
+% \def\dododododoinatreference#1#2[#3]%
+% {\bgroup
+% \forgetall
+% \postponefootnotes
+% \leaveoutervmode
+% \doifreferencefoundelse{#3}
+% {\bgroup
+% \let\ignorespaces \empty % rather dirty trick, but ok
+% \let\leftofreference \empty % the same, again ok
+% \let\rightofreference\empty % and once more
+% \def\textofreference {#2}% % temporary value
+% \ifx\textofreference\empty % simple expansion
+% %\doifelsenothing{#1}
+% % {\egroup\dosymbolreference{#1}{\textofreference}[#3]}
+% % {\egroup\dowantedreference{#1}{\textofreference}[#3]}%
+% \doifelsenothing{#1}%
+% {\egroup\dosymbolreference}%
+% {\egroup\dowantedreference}%
+% {#1}{\textofreference}[#3]%
+% \else
+% %\doifelsenothing{#1}
+% % {\egroup\dosymbolreference{#1}{#2}[#3]}
+% % {\egroup\dowantedreference{#1}{#2}[#3]}%
+% \doifelsenothing{#1}%
+% {\egroup\dosymbolreference}%
+% {\egroup\dowantedreference}%
+% {#1}{#2}[#3]%
+% \fi}
+% {\dounknownreference{#1}{#2}[#3]}%
+% \referentieinfo<{#3}%
+% \global\let\leftofreference \empty
+% \global\let\rightofreference\empty
+% \global\let\textofreference \empty
+% \egroup}
+
+\def\dododododoinatreference#1#2[#3]%
+ {\dontleavehmode % replaces \leaveoutervmode
+ \bgroup
+ \forgetall
+ \postponefootnotes
+ %\leaveoutervmode % replaced by \dontleavehmode
+ \doifreferencefoundelse{#3}
+ {\bgroup
+ \let\ignorespaces \empty % rather dirty trick, but ok
+ \let\leftofreference \empty % the same, again ok
+ \let\rightofreference\empty % and once more
+ \def\textofreference {#2}% % temporary value
+ \ifx\textofreference\empty % simple expansion
+ %\doifelsenothing{#1}
+ % {\egroup\dosymbolreference{#1}{\textofreference}[#3]}
+ % {\egroup\dowantedreference{#1}{\textofreference}[#3]}%
+ \doifelsenothing{#1}%
+ {\egroup\dosymbolreference}%
+ {\egroup\dowantedreference}%
+ {#1}{\textofreference}[#3]%
+ \else
+ %\doifelsenothing{#1}
+ % {\egroup\dosymbolreference{#1}{#2}[#3]}
+ % {\egroup\dowantedreference{#1}{#2}[#3]}%
+ \doifelsenothing{#1}%
+ {\egroup\dosymbolreference}%
+ {\egroup\dowantedreference}%
+ {#1}{#2}[#3]%
+ \fi}
+ {\dounknownreference{#1}{#2}[#3]}%
+ \referentieinfo<{#3}%
+ \global\let\leftofreference \empty
+ \global\let\rightofreference\empty
+ \global\let\textofreference \empty
+ \egroup}
+
+%D In interactive documents going to a specific location is not
+%D bound to cross references. The \type{\goto} commands can be
+%D used to let users access another part of the document. In
+%D this respect, interactive tables of contents and registers
+%D can be considered goto's. Because in fact a \type{\goto} is
+%D just a reference without reference specific data, the
+%D previous macros are implemented using the goto
+%D functionality.
+%D
+%D \showsetup{goto}
+%D
+%D One important chaacteristic is that the first argument of
+%D \type{\goto} (and therefore \type{\at} and \type{\in} is
+%D split at spaces. This means that, although hyphenation is
+%D prevented, long references can cross line endings.
+
+%\unexpanded\def\naar#1[#2]%
+% {\dontleavehmode
+% %\leaveoutervmode
+% \doifreferencefoundelse{#2}
+% {\doifelsenothing{#1}
+% {\dosymbolreference{}{}[#2]}
+% {\dogotospace{#1}[#2]}}
+% {\unknownreference{#2}#1}%
+% \referentieinfo{<}{#2}}
+
+\def\dogoto#1[#2]%
+ {\dontleavehmode
+ %\leaveoutervmode
+\bgroup
+\postponefootnotes
+ \doifreferencefoundelse{#2}
+ {\doifelsenothing{#1}
+ {\dosymbolreference{}{}[#2]}
+ {\dogotospace{#1}[#2]}}
+ {\unknownreference{#2}#1\relax}% \relax catches lookahead
+\egroup
+ \referentieinfo{<}{#2}}
+
+\unexpanded\def\goto#1#2%
+ {\dogoto{#1}#2}
+
+\newif\ifsharesimilarreferences \sharesimilarreferencestrue
+\newcount\similarreference % 0=noppes 1=create/refer 2,3,..=refer
+
+\def\dogotospace#1[#2]%
+ {\iflocationsplit
+ \ifsecondaryreference\setbox0\hbox\fi % due to space insertion
+ {\let\dogotospace\dogotofixed
+ \iflocation
+ \def\processisolatedword##1%
+ {\ifisolatedwords\ifsharesimilarreferences
+ \global\advance\similarreference \plusone
+ \fi\fi
+ \hbox{\gotolocation{#2}{##1\presetgoto}}}%
+ \doattributes\??ia\c!style\c!color
+ {\processisolatedwords{#1}\processisolatedword}%
+ \else
+ #1\relax % \relax prevents #1's next macros from gobbling \fi
+ \fi}%
+ \else
+ \iflocation
+ \doattributes\??ia\c!style\c!color
+ {\gotolocation{#2}{#1\presetgoto}}%
+ \else
+ #1\relax % \relax prevents #1's next macros from gobbling \fi
+ \fi
+ \fi
+ \global\similarreference\zerocount}
+
+\def\dogotofixed#1[#2]%
+ {{\iflocation
+ \hbox{\gotolocation{#2}{\doattributes\??ia\c!style\c!color
+ {#1\presetgoto}}}%
+ \else
+ #1%
+ \fi}}
+
+%D In case the auto split feature is not needed or even not
+%D even wanted, \type{\gotobox} can be used.
+
+%D --- NOG IN HANDLEIDING ---
+
+\unexpanded\def\gotobox#1[#2]%
+ {\dontleavehmode
+ \bgroup
+ \locationstrutfalse
+ %\leaveoutervmode
+ \doifreferencefoundelse{#2}
+ {\dogotofixed{#1}[#2]}
+ {\hbox{\unknownreference{#2}#1}}%
+ \referentieinfo{<}{#2}%
+ \egroup}
+
+%D An reference to another document can be specified as a file
+%D or as an \URL. Both are handled by the same mechanism and
+%D can be issued by saying something like:
+%D
+%D \starttyping
+%D \goto[dictionary::the letter a]
+%D \stoptyping
+%D
+%D The macros that are responsible for handling these
+%D references, use the next six variables:
+
+\let\otherlabel = \empty
+\let\fileprefix = \empty
+\def\otherfile {\jobname}
+\let\otherURL = \empty
+\let\otherprefix = \empty
+\let\dowithdocdes = \empty
+
+%D One can imagine that many references to such a dictionary
+%D are made, so in most cases such a document reference in an
+%D indirect one.
+%D
+%D \showsetup{useexternaldocument}
+%D
+%D For example:
+%D
+%D \starttyping
+%D \useexternaldocument
+%D [dictionary][engldict]
+%D [The Famous English Dictionary]
+%D \stoptyping
+%D
+%D The next macro implements these relations, and also take
+%D care of loading the document specific references.
+
+\def\useexternaldocument%
+ {\dotripleargument\douseexternaldocument}
+
+\def\douseexternaldocument[#1][#2][#3]%
+ {\bgroup
+ \ifsecondargument
+ \doifelsenothing{#1}
+ {\douseexternaldocument[#2][#2][#3]}
+ {\doifelsenothing{#3}
+ {\douseexternaldocument[#1][#2][#2]}
+ {\doifsomething{#2}
+ {\setgvalue{\v!file:::#1}{\doexternaldocument{}{#2}{#3}}% just \do
+ \doif\@@rfstate\v!start
+ {\doifparentfileelse{#2}
+ {\showmessage\m!references{21}{#2}}
+ {\dodouseexternaldocument{#1}{#2}}}}}}%
+ \else
+ \dodouseexternaldocument{#1}{#1}%
+ \fi
+ \egroup}
+
+\def\dodouseexternaldocument#1#2%
+ {\bgroup % prevents wrong loading of \jobname
+ \def\fileprefix{#1::}%
+ \let\setglobalcrossreference\setoutercrossreference
+ \usereferences[#2]%
+ \egroup % when called nested
+ \showmessage\m!references{21}{#2}}
+
+%D The \URL\ alternative takes four arguments:
+%D
+%D \showsetup{useURL}
+%D
+%D like:
+%D
+%D \starttyping
+%D \useURL
+%D [dictionary][http://www.publisher.com/public][engldict]
+%D [The Famous English Dictionary]
+%D \stoptyping
+%D
+%D Several specifications are possible:
+%D
+%D \starttyping
+%D \useURL [id] [url] [file] [description]
+%D \useURL [id] [url] [file]
+%D \useURL [id] [url]
+%D \stoptyping
+%D
+%D This time we don't load the references when no file is
+%D specified. This is logical when one keeps in mind that a
+%D valid \URL\ can also be a mail address.
+
+\def\useURL
+ {\bgroup
+ \protectlabels
+ \catcode`\#=\@@other\catcode`\%=\@@other\catcode`\/=\@@other
+ \catcode`\_=\@@other\catcode`\~=\@@other\catcode`\:=\@@other
+ \dodoubleempty\douseURL}
+
+\def\douseURL[#1][#2]%
+ {\egroup\doquadrupleempty\dodouseURL[#1][#2]}
+
+\let\useurl\useURL
+
+% \def\dodouseURL[#1][#2][#3][#4]%
+% {\iffirstargument
+% \iffourthargument\setgvalue{\v!file:::#1}{\doexternaldocument{#2}{#3}{#4}}\else
+% \ifthirdargument \setgvalue{\v!file:::#1}{\doexternaldocument{#2}{#3}{\url[#1]}}\else
+% \ifsecondargument\setgvalue{\v!file:::#1}{\doexternaldocument{#2}{}{\url[#1]}}\fi\fi\fi
+% \fi}
+
+\def\dodouseURL[#1][#2][#3][#4]% to be redone: not too tricky redefs ad reuse
+ {\iffirstargument
+ \iffourthargument\setgvalue{\v!file:::#1}{\doexternaldocument{#2}{#3}{#4}}\else
+ \ifthirdargument \setgvalue{\v!file:::#1}{\doexternalurl {#2}{#3}{#1}}\else
+ \ifsecondargument\setgvalue{\v!file:::#1}{\doexternalurl {#2}{} {#1}}\fi\fi\fi
+ \fi}
+
+\def\doexternalurl#1#2#3%
+ {\bgroup
+ \doifsomething\@@urstyle{\let\@@iastyle\@@urstyle\let\@@urstyle\empty}%
+ \doifsomething\@@urcolor{\let\@@iacolor\@@urcolor\let\@@urcolor\empty}%
+ \doexternaldocument{#1}{#2}{\url[#3]}%
+ \egroup}
+
+%D \macros
+%D {url,setupurl}
+%D
+%D We also have: \type{\url} for directly calling the
+%D description. So we can say:
+%D
+%D \starttyping
+%D \useURL [one] [http://www.test.nl]
+%D \useURL [two] [http://www.test.nl] [] [Some Site]
+%D
+%D \url[one] or \from[two] or \goto{Whatever Site}[URL(two)]
+%D \stoptyping
+%D
+%D An \URL\ can be set up with
+%D
+%D \showsetup{setupurl}
+
+\def\setupurl
+ {\dodoubleargument\getparameters[\??ur]}
+
+\unexpanded\def\url[#1]% slow
+ {\bgroup
+ \processaction
+ [\@@uralternative]
+ [ \v!none=>\chardef\urlsplitmode\zerocount,
+ \v!both=>\chardef\urlsplitmode\plusone,
+ \v!after=>\chardef\urlsplitmode\plustwo,
+ \v!before=>\chardef\urlsplitmode\plusthree]%
+ \doifelse\@@urspace\v!yes
+ {\setbetweenisolatedwords{\scratchskip\currentspaceskip\hskip\zeropoint\!!plus.2\scratchskip}}
+ {\setbetweenisolatedwords\allowbreak}%
+ \def\doexternaldocument##1##2##3{\hyphenatedurl{##1}}% awful hack
+ \dostartattributes\??ur\c!style\c!color{}%
+ \getvalue{\v!file:::#1}%
+ \dostopattributes
+ \egroup}
+
+%D This macro is hooked into a support macro, and thereby
+%D \URL's break ok, according to the setting of a switch,
+%D
+%D \startbuffer
+%D \useURL
+%D [test]
+%D [sentence_sentence%sentence#sentence~sentence/sentence//sentence:sentence.sentence]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Such an \URL\ is, depending on the settings, hyphenated as:
+%D
+%D \getbuffer
+%D
+%D \startlinecorrection
+%D \hbox to \hsize
+%D {\hss\en
+%D \setupreferencing[urlalternative=both]%
+%D \vbox{\hsize.25cm\hbox{\bf both}\prewordbreak\url[test]}%
+%D \hss
+%D \setupreferencing[urlalternative=before]%
+%D \vbox{\hsize.25cm\hbox{\bf before}\prewordbreak\url[test]}%
+%D \hss
+%D \setupreferencing[urlalternative=after]%
+%D \vbox{\hsize.25cm\hbox{\bf after}\prewordbreak\url[test]}%
+%D \hss}
+%D \stoplinecorrection
+%D
+%D By setting \type{urlspace=yes} one can get slightly better
+%D spacing when using very long \URL's.
+
+%D Many macro definitions ago we called for the auxiliary macro
+%D \type {\setouterlocation} and now is the time to define this
+%D one.
+
+\newconditional\forceURLlocation
+
+\def\setouterfilelocation#1#2#3%
+ {\edef\otherURL{#1}%
+ \edef\otherfile{#2}}%
+
+\def\setouterlocation#1%
+ {\ifundefined{\v!file:::#1}%
+ \ifconditional\forceURLlocation
+ \edef\otherURL{#1}%
+ \let\otherfile\empty
+ \else
+ \let\otherURL\empty
+ \edef\otherfile{#1}%
+ \fi
+ \else
+ \let\doexternaldocument\setouterfilelocation % will change
+ \let\doexternalurl \setouterfilelocation % will change
+ \csname\v!file:::#1\endcsname
+ \fi
+ \setfalse\forceURLlocation
+ \doifparentfileelse\otherfile
+ {\let\otherURL\empty
+ \let\otherfile\empty
+ \global\let\otherlabel\empty
+ \let\otherprefix\empty}
+ {\xdef\otherlabel{#1}%
+ \edef\otherprefix{#1::}}}
+
+%D When defining the external source of information, one can
+%D also specify a suitable name (the last argument). This name
+%D can be called upon with:
+%D
+%D \showsetup{from}
+%D
+%D As can be expected, this macro used \type{\goto} to
+%D perform its task.
+
+% normal version:
+%
+% \def\from[#1]%
+% {\dontleavehmode % added, but probably not needed
+% \bgroup
+% \doifinstringelse{::}{#1}{\docomplexuit[#1]}{\docomplexuit[#1::]}}
+%
+% since we need to serve active :'s we need the less readable:
+
+\def\dospecialfrom % retest this one !
+ {\dosingleempty\dodospecialfrom}
+
+\def\dodospecialfrom[#1]%
+ {\dontleavehmode % added, but probably not needed
+ \bgroup
+ \protectlabels % needed for active french :'s
+ \iffirstargument
+ \edef\!!stringa{#1}%
+ \doifincsnameelse{::}\!!stringa\donothing{\edef\!!stringa{#1::}}%
+ \expanded{\redospecialfrom[\!!stringa]}%
+ \else
+ \expanded{\nodospecialfrom[\otherlabel]}%
+ \fi
+ \egroup}
+
+\def\redospecialfrom[#1::#2]%
+ {\ifundefined{\v!file:::#1}%
+ \tttf[#1]%
+ \else
+ \def\doexternaldocument##1##2##3{\goto{##3}[#1::#2]}%
+ \csname\v!file:::#1\endcsname
+ \fi}
+
+\def\nodospecialfrom[#1]%
+ {\ifundefined{\v!file:::#1}%
+ \tttf[#1]%
+ \else
+ \def\doexternaldocument##1##2##3{##3}% different than ^
+ \csname\v!file:::#1\endcsname
+ \fi}
+
+%D We also support:
+%D
+%D \starttyping
+%D \goto{some text}[file(identifier{location}]
+%D \stoptyping
+%D
+%D which is completely equivalent with
+%D
+%D \starttyping
+%D \goto{some text}[identifier::location]
+%D \stoptyping
+%D
+%D The fastest implementation would be:
+
+\definespecialtest\v!file {\setfalse\forceURLlocation\handlespecialFILEandURL}
+\definespecialtest\v!URL {\settrue \forceURLlocation\handlespecialFILEandURL}
+\definespecialtest\v!url {\settrue \forceURLlocation\handlespecialFILEandURL}
+
+\definespeciallocation\v!file{\setfalse\forceURLlocation\handlespecialallocationFILEandURL}
+\definespeciallocation\v!URL {\settrue \forceURLlocation\handlespecialallocationFILEandURL}
+\definespeciallocation\v!url {\settrue \forceURLlocation\handlespecialallocationFILEandURL}
+
+\def\handlespecialFILEandURL
+ {\localdoifreferencefoundelse
+ {\currentreferenceoperation::\currentreferencearguments}}
+
+\def\handlespecialallocationFILEandURL
+ {\let\currentouterreference\currentreferenceoperation
+ \let\currentinnerreference\currentreferencearguments
+ \let\currentreferenceoperation\empty
+ \let\currentreferencearguments\empty
+ \gotoouterlocation}
+
+%D Now we have file references as special ones, it's rather
+%D logical to have the viewer specific ones available in a dual
+%D way too. At first glance we could do with:
+%D
+%D \starttyping
+%D \definespeciallocation\v!action
+%D {\getreferenceelements\currentreferenceoperation
+%D \handleexecreference}
+%D \stoptyping
+%D
+%D An better alternative, slower but error aware, is
+
+% \definespecialtest\v!actie
+% {\localdoifreferencefoundelse\currentreferenceoperation}
+
+\definespecialtest\v!action % rather ugly action(whatever{argument})
+ {\expanded{\localdoifreferencefoundelse{\currentreferenceoperation
+ \ifx\currentreferencearguments\empty\else{\currentreferencearguments}\fi}}}
+
+\definespeciallocation\v!action
+ {\handleexecreference}
+
+%D So now we can say:
+%D
+%D \starttyping
+%D \goto{some action}[PreviousJump]
+%D \stoptyping
+%D
+%D as well as:
+%D
+%D \starttyping
+%D \goto{some text}[action(PreviousJump]
+%D \stoptyping
+
+%D A special case of references are those to programs. These,
+%D very system dependant references are implemented by abusing
+%D some of the previous macros.
+%D
+%D \showsetup{setupprograms}
+%D \showsetup{defineprogram}
+%D \showsetup{program}
+%D
+%D The latter gives access to the description of the program,
+%D being the last argument to the definition command.
+
+\def\setupprograms
+ {\dodoubleargument\getparameters[\??pr]}
+
+\def\dodefineprogram[#1][#2][#3]%
+ {\setgvalue{\v!program:::#1}{\doprogram{#2}{#3}}}
+
+\def\defineprogram
+ {\dotripleargument\dodefineprogram}
+
+\def\program#1[#2]%
+ {\bgroup
+ \ifundefined{\v!program:::#2}%
+ {\tttf[#2]}%
+ \else
+ \def\doprogram##1##2%
+ {\goto{\doifelsenothing{#1}{##2}{#1}}[\v!program(#2)]}%
+ \csname\v!program:::#2\endcsname
+ \fi
+ \egroup}
+
+% needs an update: program(abc{arg})
+
+\definespeciallocation\v!program#1#2%
+ {\bgroup
+ \iflocation
+ \doifdefinedelse{\v!program:::\currentreferenceoperation}
+ {\def\doprogram##1##2{\def\@@programfile{##1}}%
+ \getvalue{\v!program:::\currentreferenceoperation}}
+ {\let\@@programfile\currentreferenceoperation}%
+ \convertcommand\@@programfile\to\ascii
+ \dostartgoto
+ \data
+ {#2}%
+ \start
+ \dostartrunprogram\buttonwidth\buttonheight
+ {\@@prdirectory\ascii}\currentreferencearguments
+ \stop
+ \dostoprunprogram
+ \dostopgoto
+ \else
+ {#2}%
+ \fi
+ \egroup}
+
+%D As we can see, we directly use the special reference
+%D mechanism, which means that
+%D
+%D \starttyping
+%D \goto{some text}[program(name{args})]
+%D \stoptyping
+%D
+%D is valid.
+
+%D The next macro provides access to the actual pagenumbers.
+%D When documenting and sanitizing the original reference
+%D macros, I decided to keep the present meaning as well as to
+%D make this meaning available as a special reference method.
+%D So now one can use:
+%D
+%D \starttyping
+%D \gotopage{some text}[location]
+%D \gotopage{some text}[number]
+%D \gotopage{some text}[file::number]
+%D \stoptyping
+%D
+%D as well as:
+%D
+%D \starttyping
+%D \goto{some text}[page(location)]
+%D \goto{some text}[page(number)]
+%D \goto{some text}[file::page(number)]
+%D \stoptyping
+%D
+%D Here location is a keyword like \type{nextpage}.
+%D
+%D \showsetup{gotopage}
+
+\def\dodefinepage[#1][#2]%
+ {\setvalue{\v!page:::#1}{#2}}
+
+\def\definepage
+ {\dodoubleargument\dodefinepage}
+
+\definepage [\v!firstpage] [\firstpage]
+\definepage [\v!previouspage] [\prevpage]
+\definepage [\v!nextpage] [\nextpage]
+\definepage [\v!lastpage] [\lastpage]
+\definepage [\v!firstsubpage] [\firstsubpage]
+\definepage [\v!previoussubpage] [\prevsubpage]
+\definepage [\v!nextsubpage] [\nextsubpage]
+\definepage [\v!lastsubpage] [\lastsubpage]
+\definepage [\v!first] [\firstpage]
+\definepage [\v!previous] [\prevpage]
+\definepage [\v!next] [\nextpage]
+\definepage [\v!last] [\lastpage]
+\definepage [\v!first\v!sub] [\firstsubpage]
+\definepage [\v!previous\v!sub] [\prevsubpage]
+\definepage [\v!next\v!sub] [\nextsubpage]
+\definepage [\v!last\v!sub] [\lastsubpage]
+
+%D Because we combine both methods, we have to take care of
+%D the \type{file::page(n)} as well as \type{page(file::n)}.
+
+% \definespeciallocation\v!pagina#1#2%
+% {\iflocation
+% \ifx\currentouterreference\empty
+% \splitoffreference\currentreferenceoperation
+% \else
+% \let\currentinnerreference=\currentreferenceoperation
+% \fi
+% \ifx\currentouterreference\empty
+% \doifnonzeropositiveelse{\currentinnerreference}
+% {}
+% {\edef\currentinnerreference{1}}%
+% \gotorealpage\empty\empty\currentinnerreference{#2}%
+% \else
+% \setouterlocation\currentouterreference
+% \doifnonzeropositiveelse{\currentinnerreference}
+% {}
+% {\doifdefinedelse{\v!pagina:::\currentinnerreference}
+% {\edef\currentinnerreference{\getvalue{\v!pagina:::\currentinnerreference}}}
+% {\edef\currentinnerreference{1}}}%
+% \gotorealpage\otherURL\otherfile\currentinnerreference{#2}%
+% \fi
+% \else
+% {#2}%
+% \fi}
+
+% \definespeciallocation\v!pagina#1#2% page(n) page(+n) page(-n)
+% {\iflocation
+% \ifx\currentouterreference\empty
+% \splitoffreference\currentreferenceoperation
+% \else
+% \let\currentinnerreference\currentreferenceoperation
+% \fi
+% \ifx\currentouterreference\empty
+% \doifinstringelse+\currentinnerreference
+% {\scratchcounter\realpageno
+% \advance\scratchcounter \currentinnerreference
+% \edef\currentinnerreference{\the\scratchcounter}}
+% {\doifinstringelse-\currentinnerreference
+% {\scratchcounter\realpageno
+% \advance\scratchcounter \currentinnerreference
+% \edef\currentinnerreference{\the\scratchcounter}}
+% \donothing}%
+% \doifnonzeropositiveelse\currentinnerreference
+% \donothing
+% {\edef\currentinnerreference{1}}%
+% \gotorealpage\empty\empty\currentinnerreference{#2}%
+% \else
+% \setouterlocation\currentouterreference
+% \doifnonzeropositiveelse\currentinnerreference
+% \donothing
+% {\doifdefinedelse{\v!pagina:::\currentinnerreference}
+% {\edef\currentinnerreference{\getvalue{\v!pagina:::\currentinnerreference}}}
+% {\edef\currentinnerreference{1}}}%
+% \gotorealpage\otherURL\otherfile\currentinnerreference{#2}%
+% \fi
+% \else
+% {#2}%
+% \fi}
+
+\definespeciallocation\v!page#1#2% page(n) page(+n) page(-n)
+ {\iflocation
+ \ifx\currentouterreference\empty
+ \splitoffreference\currentreferenceoperation
+ \else
+ \let\currentinnerreference\currentreferenceoperation
+ \fi
+ \ifx\currentouterreference\empty
+ \doifinstringelse+\currentinnerreference
+ {\scratchcounter\realpageno
+ \advance\scratchcounter \currentinnerreference
+ \edef\currentinnerreference{\the\scratchcounter}}
+ {\doifinstringelse-\currentinnerreference
+ {\scratchcounter\realpageno
+ \advance\scratchcounter \currentinnerreference
+ \edef\currentinnerreference{\the\scratchcounter}}
+ \donothing}%
+ \doifnonzeropositiveelse\currentinnerreference
+ \donothing
+ {\edef\currentinnerreference{1}}%
+ \docheckrealreferencepage\currentinnerreference % new
+ \let\currentrealreference\currentinnerreference % handy to have this available
+ \gotorealpage\empty\empty\currentinnerreference{#2}%
+ \else
+ \setouterlocation\currentouterreference
+ \doifnonzeropositiveelse\currentinnerreference
+ \donothing
+ {\doifdefinedelse{\v!page:::\currentinnerreference}
+ {\edef\currentinnerreference{\getvalue{\v!page:::\currentinnerreference}}}
+ {\edef\currentinnerreference{1}}}%
+ \gotorealpage\otherURL\otherfile\currentinnerreference{#2}%
+ \fi
+ \else
+ {#2}%
+ \fi}
+
+\def\gotopage#1[#2]%
+ {\goto{#1}[\v!page(#2)]}
+
+%D A still very rudimentary|/|experimental forward|/|backward
+%D reference mechanism is provided by the macro \type{\atpage}:
+%D
+%D \starttyping
+%D ... \somewhere{backward text}{forward text}[someref] ...
+%D ... \atpage[someref] ...
+%D \stoptyping
+%D
+%D In future versions there will be more sophisticated
+
+%D support, also suitable for references to floating bodies.
+
+\unexpanded\def\somewhere#1#2#3[#4]% #3 gobbles space around #2
+ {\dontleavehmode
+ %\leaveoutervmode
+ \doifreferencefoundelse{#4}
+ {\ifforwardreference
+ \doifelsenothing{#1}
+ {\dosymbolreference{}{}[#4]}
+ {\dogotospace{#1}[#4]}%
+ \else
+ \doifelsenothing{#2}
+ {\dosymbolreference{}{}[#4]}
+ {\dogotospace{#2}[#4]}%
+ \fi}
+ {\unknownreference{#4}#1/#2}%
+ \referentieinfo{<}{#4}}
+
+\unexpanded\def\atpage[#1]%
+ {\dontleavehmode
+ %\leaveoutervmode
+ \doifreferencefoundelse{#1}
+ {\ifrealreferencepage
+ \ifforwardreference
+ \dogotofixed{\labeltext\v!hencefore}[#1]%
+ \else
+ \dogotofixed{\labeltext\v!hereafter}[#1]%
+ \fi
+ \else
+ \dogotofixed{\labeltexts\v!atpage\currentpagereference}[#1]%
+ \fi}
+ {\unknownreference{#1}%
+ \labeltexts\v!page\dummyreference}%
+ \referentieinfo{<}{#1}}
+
+%D We can cross link documents by using:
+%D
+%D \showsetup{coupledocument}
+%D
+%D like:
+%D
+%D \starttyping
+%D \coupledocument[print][somefile][chapter,section]
+%D \stoptyping
+%D
+%D After which when applicable, we have available the
+%D references:
+%D
+%D \starttyping
+%D \goto{print version}[print::chapter]
+%D \stoptyping
+%D
+%D and alike. The title placement definition macros have a
+%D key \type{file}, which is interpreted as the file to jump
+%D to, that is, when one clicks on the title.
+
+\let\crossdocumentreferences\empty
+\let\crossdocumentelements\empty
+
+\newif\ifautocrossdocument
+
+\def\docoupledocument[#1][#2][#3][#4]% is this :/- safe ?
+ {\ifthirdargument
+ \begingroup
+ \def\dolistelement##1##2##3##4##5##6% 2=aut 6=pag / 2 goes into text ref slot
+ {\global\utilitydonetrue %{Watch the braces here below!}
+ \setglobalcrossreference{{##1::\@@filterblocknumberpart[##5]}}{}{##6}{##2}}%
+ \def\usereferences[##1]%
+ %{\setbox0\vbox{\doutilities{#3}{##1}{#3}\relax\relax}}%
+ {\startnointerference
+ \doutilities{#3}{##1}{#3}\relax\relax
+ \stopnointerference}%
+ \douseexternaldocument[#1][#2][#4]%
+ \doglobal\addtocommalist{#1}\crossdocumentreferences
+ \def\docommando##1%
+ {\letgvalue{\??rf##1\c!state}\v!start % for fast checking
+ \doglobal\addtocommalist{##1}\crossdocumentelements}%
+ \processcommalist[#3]\docommando
+ \ifutilitydone
+ \global\autocrossdocumenttrue
+ \fi
+ \endgroup
+ \fi}
+
+\def\coupledocument%
+ {\doquadrupleempty\docoupledocument}
+
+%D --- STRANGE HERE, BETTER IN CORE-NAV ---
+
+\def\checkcontrastreference#1%
+ {\ifnum\currentreferencetype=\rt!page\ifnum\currentdatareference=\realpageno
+ \doifdefined{#1\c!contrastcolor}
+ {\setevalue{#1\c!color}{\getvalue{#1\c!contrastcolor}}}%
+ \fi\fi}
+
+\def\checkcontrastreference#1%
+ {\ifnum\currentreferencetype=\rt!page\relax\ifnum\currentdatareference=\realpageno
+ \copycsname#1\c!color\endcsname\csname#1\c!contrastcolor\endcsname
+ \fi\fi}
+
+%D Buttons are just what their names says: things that can be
+%D clicked (pushed) on. They are similar to \type{\goto},
+%D except that the text argument is not interpreted.
+%D Furthermore one can apply anything to them that can be done
+%D with \type{\framed}.
+%D
+%D \startbuffer
+%D \button[width=3cm,height=1.5cm]{Exit}[ExitViewer]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives
+%D
+%D \getbuffer
+%D
+%D This command is formally specified as:
+%D
+%D \showsetup{button}
+%D
+%D The characteristics can be set with:
+%D
+%D \showsetup{setupbuttons}
+
+\def\setupbuttons
+ {\dodoubleargument\getparameters[\??bt]}
+
+\definecomplexorsimpleempty\button
+
+\def\complexbutton
+ {\docomplexbutton\??bt}
+
+\presetlocalframed[\??bt]
+
+\long\def\docomplexbutton#1[#2]#3#4% get rid of possible space before [#4]
+ {\dodocomplexbutton#1[#2]{#3}#4} % #4 == [
+
+\def\buttonframed{\dodoubleempty\localframed[\??bt]} % goodie
+
+\long\def\dodocomplexbutton#1[#2]#3[#4]% #3 can contain [] -> {#3} later
+ {\bgroup
+ \doifvalue{#1\c!state}\v!stop\locationfalse
+ \iflocation
+ \resetgoto
+ \ConvertConstantAfter\doifelse{#3}\v!none\hphantom\hbox
+ {\doifelsenothing{#4}
+ {\setlocationboxnop#1[#2]{#3}[#4]}
+ {\doifreferencefoundelse{#4}
+ {\setlocationboxyes#1[#2]{#3}[#4]}
+ {\unknownreference{#4}%
+ \setlocationboxnop#1[#2]{#3}[#4]}}}%
+ \fi
+ \egroup}
+
+%D Interaction buttons, in fact a row of tiny buttons, are
+%D typically only used for navigational purposed. The next
+%D macro builds such a row based on a specification list.
+%D
+%D \startbuffer
+%D \interactionbuttons
+%D [width=\hsize][page,PreviousJump,ExitViewer]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives
+%D
+%D \getbuffer
+%D
+%D Apart from individual entries, one can use \type{page} and
+%D \type {subpage} as shortcuts to their four associated buttons.
+%D The symbols are derived from the symbols linked to the
+%D entries.
+
+% does not work well with for instance SomeRef{whatever}
+
+\def\interactionbuttons
+ {\dodoubleempty\dointeractionbuttons}
+
+\def\dointeractionbuttons[#1][#2]% er is een verdeel macro \horizontalfractions
+ {\iflocation
+ % BUG: fails when frame=off; best is to rewrite this macro
+ \bgroup
+ \doif\@@ibstate\v!stop\locationfalse
+ \iflocation
+ \ifsecondargument
+ \setupinteractionbar[#1]%
+ \checkinteractionbar{1.5em}\v!broad\!!zeropoint % brrrrr
+ \setbox2\hbox
+ {\localframed[\??ib][\c!background=]{\symbol[\@@iasymbolset][\v!previouspage]}}%
+ \!!heighta\ht2 % needed because we default to nothing
+ \setupinteractionbar[\c!strut=\v!no]%
+ \setinteractionparameter\c!width\!!zeropoint
+ \!!counta\zerocount % new, was 1
+ \processallactionsinset
+ [#2]
+ [ \v!page=>\advance\!!counta 4,
+ \v!subpage=>\advance\!!counta 4,
+ \s!unknown=>\advance\!!counta 1]%
+ \ifdim\@@ibwidth=\zeropoint
+ \!!widtha2em
+ \advance\!!widtha \@@ibdistance % new
+ \!!widthb\!!counta\!!widtha
+ \advance\!!widthb -\@@ibdistance % new
+ \else
+ \!!widtha\@@ibwidth
+ \!!widthb\@@ibdistance % new
+ \multiply\!!widthb \!!counta % new
+ \advance\!!widthb -\@@ibdistance % new
+ \advance\!!widtha -\!!widthb % new
+ \divide\!!widtha \!!counta
+ \!!widthb\@@ibwidth
+ \fi
+ \def\goto##1% clash ?
+ {\setnostrut
+ \edef\localreference{##1}%
+ \expanded{\dodocomplexbutton\??ib[\c!height=\the\!!heighta,\c!width=\the\!!widtha]}%
+ {\dontleavehmode\symbol[\@@iasymbolset][\localreference]}%
+ [\localreference]%
+ \hss}%
+ \hbox to \!!widthb
+ {\processallactionsinset
+ [#2]
+ [ \v!page=>\goto\v!firstpage
+ \goto\v!nextpage
+ \goto\v!previouspage
+ \goto\v!lastpage,
+ \v!subpage=>\goto\v!firstsubpage
+ \goto\v!nextsubpage
+ \goto\v!previoussubpage
+ \goto\v!lastsubpage,
+ \s!unknown=>\goto\commalistelement]%
+ \unskip}%
+ \else
+ \interactionbuttons[][#1]%
+ \fi
+ \fi
+ \egroup
+ \fi}
+
+%D \macros
+%D {overlaybutton}
+%D
+%D For converience we provide:
+%D
+%D \starttyping
+%D \overlaybutton[reference]
+%D \stoptyping
+%D
+%D This command can be used to define overlays an/or can be
+%D used in the whatevertext areas, like:
+%D
+%D \starttyping
+%D \defineoverlay[PrevPage][\overlaybutton{PrevPage}]
+%D \setupbackgrounds[page][background=PrevPage]
+%D \setuptexttexts[\overlaybutton{NextPage}]
+%D \stoptyping
+%D
+%D For practical reasons, this macro accepts square brackets
+%D as well as braces.
+
+\definecomplexorsimple\overlaybutton
+
+\def\simpleoverlaybutton#1%
+ {\complexoverlaybutton[#1]}
+
+\def\complexoverlaybutton[#1]%
+ {\iflocation
+ \doifreferencefoundelse{#1}
+ {\overlayfakebox {#1}}
+ {\unknownreference{#1}}%
+ \fi}
+
+\def\overlayfakebox#1%
+ {\hbox
+ {\setbox\scratchbox\null
+ \wd\scratchbox\overlaywidth
+ \ht\scratchbox\overlayheight
+ \locationstrutfalse
+ \gotolocation{#1}{\box\scratchbox\presetgoto}}}
+
+%D \macros
+%D {dotextprefix}
+%D
+%D In previous macros we used \type {\dotextprefix} to
+%D generate a space between a label and a number.
+%D
+%D \starttyping
+%D \dotextprefix{text}
+%D \stoptyping
+%D
+%D Only when \type {text} is not empty, a space is inserted.
+
+\def\dotextprefix#1%
+ {\bgroup
+ \global\labeltextdonefalse % this is an ugly dependancy,
+ \setbox\scratchbox\hbox{#1}% to be solved some day
+ \ifdim\wd\scratchbox>\zeropoint
+ \unhbox\scratchbox
+ \iflabeltextdone\else\@@rfseparator\fi
+ \else
+ \unhbox\scratchbox
+ \fi
+ \egroup}
+
+%D In the next settings we see some variables that were not
+%D used here and that concern the way the pagenumbers refered
+%D to are typeset.
+
+\setupreferencing
+ [\c!state=\v!start,
+ \c!autofile=\v!no,
+ \v!part\c!number=\v!yes,
+ \v!chapter\c!number=\v!no,
+ \c!interaction=\v!all,
+ %\c!urlalternative=\v!both,
+ %\c!urlspace=\v!no,
+ %\c!urlletter=,
+ %\c!urlkleur=,
+ \c!convertfile=\v!no,
+ %\c!strut=\v!no, % some day an option
+ \c!prefix=,
+ \c!width=.75\makeupwidth,
+ \c!left=\quotation\bgroup,
+ \c!right=\egroup,
+ \c!global=\v!no,
+ \c!expansion=\v!no,
+ \c!separator=\nonbreakablespace]
+
+\let\nonbreakablespace=~
+
+\setupurl
+ [\c!alternative=\v!both,
+ \c!space=\v!no,
+ \c!style=\v!type,
+ \c!color=]
+
+\setupprograms
+ [\c!directory=]
+
+%D We cannot set up buttons (not yet, this one calls a menu macro):
+
+% under consideration:
+%
+% \setupinteraction[state=start]
+%
+% \unprotect
+%
+% \chardef\rt!extern=5
+%
+% \definesystemreferencehandler \rt!extern \handleexecreference
+%
+% \definespecialtest\v!extern
+% {\expanded{\localdoifreferencefoundelse{\currentreferenceoperation
+% \ifx\currentreferencearguments\empty\else{\currentreferencearguments}\fi}}}
+%
+% \definespeciallocation\v!extern
+% {\handleexecreference}
+%
+% \def\defineexternalreference[#1]%
+% {\setglobalsystemreference\rt!extern{#1}{#1}}
+%
+% \protect
+%
+% \defineexternalreference[NewOne]
+%
+% \def\PDFexecuteNewOne{/SomeNewAction /SomeParameter (\argumentA)}
+%
+% \starttext
+%
+% \goto{test}[AVDP{../../nach-dateipfad.pdf}]
+% \blank
+% \goto{test}[external(AVDP{../../nach-dateipfad.pdf})]
+% \blank
+% \goto{test}[AVDP{../../nach-dateipfad.pdf}]
+% \blank
+% \goto{test}[external(AVDP{../../nach-dateipfad.pdf})]
+% \blank
+% \goto{test}[CloseDocument]
+% \blank
+% \goto{test}[action(CloseDocument)]
+%
+% \stoptext
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-reg.tex b/Master/texmf-dist/tex/context/base/core-reg.tex
new file mode 100644
index 00000000000..431cee6b9d6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-reg.tex
@@ -0,0 +1,968 @@
+%D \module
+%D [ file=core-reg,
+%D version=1999.12.27,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Register Management,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Register Management}
+
+\newif \ifautoregisterhack % for the moment a private hack
+
+% new: eigennummer=ja => eerste {} ipv pag nummer
+
+\unprotect
+
+%D Isolated but still indocumented.
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% i e {tag} {loc} {pure} {entry+..} {p:c:p:sp:ssp=>page} {realpage}
+% i s {tag} {loc} {pure} {entry+..} {other entry}
+%
+% In plaats van + kan een & worden gebruikt. Ook kan als
+% eerste karakter worden opgegeven wat de scheider is.
+%
+% \index {entry}
+% \index[key] {entry}
+% \index[pageclass::] {entry}
+% \index[pageclass::key]{entry}
+% \index {textclass::entry}
+% \index[key] {textclass::entry}
+% \index[pageclass::] {textclass::entry}
+% \index[pageclass::key]{textclass::entry}
+%
+% Deze file wordt met het Perl script TeXUtil omgezet in
+% een in te lezen file met de commando's:
+%
+% \registerentrya {tag} {ingang}
+% \registerentryb {tag} {subingang}
+% \registerentryc {tag} {subsubingang}
+%
+% \registerpage {tag} {pag,txt} {volgnummer} {paginanummer} {volgnummer}
+%
+% \registersee {tag} {pag,txt} {andere ingang}
+%
+% \registerentry {tag} {letter}
+
+\def\dosetupregister[#1][#2][#3]%
+ {\ifthirdargument
+ \def\dodosetupregister##1%
+ {\getparameters[\??id##1#2][#3]%
+ \preparepageprefix{\??id##1}}%
+ \else
+ \def\dodosetupregister##1%
+ {\getparameters[\??id##1][#2]%
+ \doifvalue{\??id##1\c!coupling}\v!yes
+ {\appendtoks\coupleregister[##1][#2]\to\everystarttext}%
+ \preparepageprefix{\??id##1}}%
+ \fi
+ \processcommalist[#1]\dodosetupregister}
+
+\def\setupregister
+ {\dotripleempty\dosetupregister}
+
+\def\getlastregisterentry#1%
+ {\def\docommando##1%
+ {\def\!!stringa{##1}}%
+ \processseparatedlist[#1][+]\docommando
+ \!!stringa}
+
+\def\registerparameter#1{\csname\??id\currentregister#1\endcsname}
+
+% \enableregime[windows] \setupregister[index][keyexpansion=strict]
+%
+% \index[Ätsch]{Ätsch} test \index{QÄtsch} test \index[ratsch]{RÄtsch} test
+
+\def\doprocesspageregister[#1]#2#3% key altnum entry
+ {\begingroup
+ \thisisnextinternal\s!ind
+ \ifduplicate\getlastregisterentry{#3}\fi
+ \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA
+ \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryB
+ \doifsomething{\registerparameter\c!keyexpansion}
+ {\ifx\asciiregisterentryA\empty
+ \convertexpanded{\registerparameter\c!keyexpansion}{#3}\asciiregisterentryA
+ \fi}%
+ \makesectionformat
+ \doifelse{\registerparameter\c!ownnumber}\v!yes
+ \donetrue\donefalse
+ % the spaces between } { are essential for texutil's split
+ \expanded
+ {\writeutility%
+ {r \ifcase\registerpagestatus\space\or e \or f \or t \fi
+ {\currentregister} %
+ {\nextinternalreference} %
+ {\asciiregisterentryA} %
+ {\asciiregisterentryB} %
+ {\sectionformat\sectionseparator\sectionseparator
+ \ifdone#2\else\noexpand\pagenumber\fi} %
+ {\noexpand\realfolio}}}%
+ \getfirstcharacter\currentregister
+ \registerinfo{> \firstcharacter}{#3}%
+ \endgroup}
+
+\def\doregister#1%
+ {\chardef\registerpagestatus\plusone
+ \def\currentregister{#1}%
+ \doifelse{\registerparameter\c!ownnumber}\v!yes
+ {\dosingleempty\dodoregister}
+ {\dosingleempty\donoregister}}
+
+\def\donoregister[#1]%
+ {\dodoregister[#1]{}}
+
+% \def\dodoregister[#1]#2#3%
+% {\doprocesspageregister[#1]{#2}{#3}%
+% \ifvmode\nobreak\fi
+% \GotoPar}
+
+\def\dodoregister[#1]#2#3%
+ {\dogotopar{\doprocesspageregister[#1]{#2}{#3}}}
+
+\def\writetoregister[#1]% to be documented
+ {\doregister{#1}}
+
+\def\startregister
+ {\dodoubleargument\dostartregister}
+
+%\def\dostartregister[#1][#2]#3%
+% {\chardef\registerpagestatus=2
+% \def\currentregister{#1}%
+% \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#2]{#3}}%
+% \complexdoregister[#2]{#3}}
+
+\def\dostartregister[#1][#2]#3%
+ {\chardef\registerpagestatus2
+ \def\currentregister{#1}%
+ \setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#2]{#3}}%
+ \donoregister[#2]{#3}}
+
+\def\stopregister
+ {\dodoubleargument\dostopregister}
+
+\def\dostopregister[#1][#2]%
+ {\getvalue{\??id#1\??id#2}\setgvalue{\??id#1\??id#2}{}}
+
+\def\dodostopregister[#1][#2]%
+ {\chardef\registerpagestatus3
+ \def\currentregister{#1}%
+ \donoregister[#2]}
+
+\def\complexdozieregister[#1]#2#3%
+ {\begingroup
+ \thisisnextinternal\s!ind
+ \ifduplicate\getlastregisterentry{#2}\fi
+ \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA
+ \convertexpanded{\registerparameter\c!expansion }{#2}\asciiregisterentryB
+ \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryC
+\doifsomething{\registerparameter\c!keyexpansion}
+ {\ifx\asciiregisterentryA\empty
+ \convertexpanded{\registerparameter\c!keyexpansion}{#2}\asciiregisterentryA
+ \fi}%
+ \makesectionformat
+ \expanded
+ {\writeutility%
+ {r s %
+ {\currentregister} %
+ {\nextinternalreference} %
+ {\asciiregisterentryA} %
+ {\asciiregisterentryB} %
+ {\asciiregisterentryC} %
+ {\sectionformat}}}%
+ \endgroup
+ \registerinfo{> zie}{#2}%
+ \GotoPar}
+
+\def\dozieregister#1%
+ {\def\currentregister{#1}%
+ \complexorsimpleempty\dozieregister}
+
+\def\dowritetoregister[#1]% % de twee-traps-aanroep is nodig
+ {\edef\currentregister{#1}% % om gebruik van \ExpandBothAfter
+ \doprocesspageregister{}} % mogelijk te maken
+
+\def\writetoregister
+ {\dodoubleempty\dowritetoregister}
+
+\def\ifregistergeplaatst{\ifutilitydone}
+
+\newif\iffirstregisterpage
+\newif\iffirstregisterentry
+
+\let\c!entrya\empty
+\let\c!entryb\empty
+\let\c!entryc\empty
+
+\def\nextregisterpage
+ {\iffirstregisterpage
+ \doglobal\newcounter\registerpagenumber
+ \fi
+ \doglobal\increment\registerpagenumber}
+
+\def\doregisterpagelocation#1#2%
+ {\nextregisterpage
+ \hbox to 1em{\hss\doregisterpagehowto{#1}{#2}\hss}}
+
+\def\setregisterpage#1%
+ {\let\registerpageseparator\empty
+ \processaction
+ [\getvalue{\??id#1\c!symbol}]
+ [ \c!n=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{#1}{\registerpagenumber}\/}},
+ \c!a=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{#1}{\character{\registerpagenumber}\/}}},
+ 1=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{#1}{$\bullet$}}},
+ 2=>{\def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{#1}{\vrule\!!width1em\!!height1ex\!!depth\!!zeropoint}}},
+ \v!none=>{\def\doregisterpage##1[##2]{}},%
+ \s!unknown=>{\def\registerpagesymbol{\getvalue{\??id#1\c!symbol}}%
+ \def\doregisterpage##1[##2]%
+ {\doregisterpagelocation{#1}{\registerpagesymbol}}},
+ \s!default=>{\def\registerpageseparator%
+ {,}%
+ \def\doregisterpage##1[##2]%
+ {\doregisterpagehowto{##1}
+ {\strut
+ \pageprefix{\??id##1}[##2]%
+ \translatednumber[##2]}}}]}
+
+\let\registerpagehowto\empty
+\let\registertexthowto\empty
+
+\def\setregisterhowto[#1,#2]%
+ {\def\registerpagehowto{#1}%
+ \def\registertexthowto{#2}}%
+
+\def\doregistertexthowto#1#2%
+ {\dostartattributes{\??id#1\registertexthowto}\c!textstyle\c!textcolor{}%
+ \getvalue{\??id#1\c!textcommand}{#2}%
+ \dostopattributes}
+
+\def\doregisterpagehowto#1#2%
+ {\dostartattributes{\??id#1\registerpagehowto}\c!pagestyle\c!pagecolor{}%
+ \getvalue{\??id#1\c!pagecommand}{#2}%
+ \dostopattributes}
+
+\def\registerentry #1{\executeifdefined{#1\s!entry }\gobbleoneargument }
+\def\registerentrya#1{\executeifdefined{#1\s!entrya}\gobbleoneargument }
+\def\registerentryb#1{\executeifdefined{#1\s!entryb}\gobbleoneargument }
+\def\registerentryc#1{\executeifdefined{#1\s!entryc}\gobbleoneargument }
+\def\registersee #1{\executeifdefined{#1\s!see }\gobblethreearguments}
+\def\registerpage #1{\executeifdefined{#1\s!page }\gobblefourarguments }
+\def\registerfrom #1{\executeifdefined{#1\s!from }\gobblefourarguments }
+\def\registerto #1{\executeifdefined{#1\s!to }\gobblefourarguments }
+
+\def\doresetregister#1%
+ {\letvalue{#1\s!entrya}\gobbleoneargument
+ \letvalue{#1\s!entryb}\gobbleoneargument
+ \letvalue{#1\s!entryc}\gobbleoneargument
+ \letvalue{#1\s!see }\gobblethreearguments
+ \letvalue{#1\s!page }\gobblefourarguments
+ \letvalue{#1\s!from }\gobblefourarguments
+ \letvalue{#1\s!to }\gobblefourarguments
+ \letvalue{#1\s!entry }\gobbleoneargument}
+
+\newif\iffirstsubentry
+\newif\iffirstsubsubentry
+
+\newcounter\currententrylevel
+
+\let\c!entryletter =\empty
+\let\c!entryreference=\empty
+\let\c!entrya =\relax
+\let\c!entryb =\relax
+\let\c!entryc =\relax
+
+\chardef\lastregisterpagestatus=0
+
+\def\limitedregisterentry#1#2%
+ {\getvalue{\??id#1\c!textcommand}%
+ {\doifelsenothing{\??id#1\c!maxwidth}
+ {#2}
+ {\limitatetext{#2}{\getvalue{\??id#1\c!maxwidth}}{\unknown}}}}
+
+\def\dosetpageregisterpage#1#2#3#4#5#6%
+ {\doifreglevelelse[#5]{\dodosetpageregisterpage{#1}{#2}{#3}{#4}{#5}{#6}}{}}
+
+\def\dodosetpageregisterpage#1#2#3#4#5#6%
+ {\global\utilitydonetrue
+ \c!entryletter
+ \setregisterhowto[#3]%
+ \def\dohandleregisterentry##1%
+ {\bgroup
+ \if!!donea % \strut nieuw
+ %\setbox0\hbox{\showlocation{\doregistertexthowto{#2}
+ % {\strut\limitedregisterentry{#2}{##1}}}}%
+ % \gotonextinternal\s!ind{#4}{#6}{\box0}%
+ %
+ \hhboxindent\hangindent % maybe also left and right skip
+ \setbox0\hbox{\doregistertexthowto{#2}{\strut\limitedregisterentry{#2}{##1}}}%
+ \unhhbox0\with{\gotonextinternal\s!ind{#4}{#6}{\box\hhbox}}%
+ %
+ \else
+ \doregistertexthowto{#2}{##1}%
+ \fi
+ \egroup
+ \!!doneafalse}%
+ \!!doneafalse
+ \doifelsevalue{\??id#2\c!interaction}\v!text
+ {\ifcase\currententrylevel \or
+ \!!doneatrue\c!entrya\c!entryb\c!entryc \or
+ \c!entrya\!!doneatrue\c!entryb\c!entryc \or
+ \c!entrya\c!entryb\!!doneatrue\c!entryc \fi}
+ {\c!entrya\c!entryb\c!entryc}%
+ \global\let\c!entrya\relax
+ \global\let\c!entryb\relax
+ \global\let\c!entryc\relax
+ \global\let\c!entryletter\relax
+ \global\let\c!entryreference\relax
+ % \global\firstregisterentrytrue
+ \iffirstregisterpage
+ \global\chardef\lastregisterpagestatus\zerocount
+ \expandafter\hskip\getvalue{\??id#2\c!distance}\relax
+ \donetrue
+ \else\ifnum#1=3
+ |--|\relax % -- !
+ \donetrue
+ \else\ifnum\lastregisterpagestatus=2
+ \donefalse % waiting for "to" pagenumber
+ \else
+ \registerpageseparator
+ |\space|\relax % \relax needed because | looks ahead
+ \donetrue
+ \fi\fi\fi
+ \ifdone
+ \doifelsevalue{\??id#2\c!interaction}\v!pagenumber
+ {\bgroup
+ \setbox0\hbox
+ {\showlocation{\doregisterpage{#2}[#5]\ifnum#1=2\/\fi}}%
+ \gotonextinternal{\s!ind}{#4}{#6}{\box0}%{\copy0}%
+ \egroup}
+ {\hbox{\doregisterpage{#2}[#5]\ifnum#1=2\/\fi}}%
+ \ignorespaces
+ \global\chardef\lastregisterpagestatus#1\relax
+ \fi
+ \global\firstregisterpagefalse}
+
+\def\dosetpageregistersee#1#2#3#4% ugly separator hack
+ {\expanded{\doifreglevelelse[#4\sectionseparator\sectionseparator0]}%
+ {{\global\utilitydonetrue
+ \setregisterhowto[#2]%
+ \def\dohandleregisterentry##1% dubbelop | \strut nieuw
+ {\doregistertexthowto{#1}{\strut\limitedregisterentry{#1}{##1}}}%
+ \getvalue
+ {#1\ifcase\currententrylevel\s!entrya\or\s!entryb\else\s!entryc\fi}%
+ {\doregisterpagehowto{#1}{\labeltexts\v!see{#3}}}%
+ \c!entryletter\c!entrya\c!entryb\c!entryc
+ \global\let\c!entrya\relax
+ \global\let\c!entryb\relax
+ \global\let\c!entryc\relax
+ \global\let\c!entryletter\relax
+ \global\let\c!entryreference\relax
+ \global\chardef\lastregisterpagestatus\zerocount
+ % \global\firstregisterentrytrue
+ \global\firstregisterpagefalse}}
+ {}}
+
+%D Extended with variant:
+
+\def\doregistercharacter[#1]#2%
+ {\global\firstregisterentrytrue
+ \doifelsevalue{\??id#1\c!indicator}\v!yes
+ {\executeifdefined
+ {\strippedcsname\doregistercharacter\getvalue{\??id#1\c!alternative}}%
+ \doregistercharactera
+ [#1]{#2}}
+ {\noregistercharacter[#1]{#2}}}
+
+\def\noregistercharacter[#1]#2%
+ {\getvalue{\??id#1\c!before}%
+ \goodbreak}
+
+% a = <before> <goodbreak> <character> <par> <after> <nobreak>
+
+\def\doregistercharactera[#1]#2%
+ {\getvalue{\??id#1\c!before}%
+ \vskip\lineheight\goodbreak\vskip-\lineheight
+ \ifhmode\unskip\else\noindent\fi % brrr
+ \getvalue{\??id#1\c!command}{\doattributes{\??id#1}\c!style\c!color{\strut\ignorespaces#2}}%
+ \getvalue{\??id#1\c!after}%
+ \par\nobreak}
+
+% b = <goodbreak> <before> <character> <after> <nobreak>
+
+\def\doregistercharacterb[#1]#2% here no lineheight hackery ! ! !
+ {\getvalue{\??id#1\c!before}%
+ \ifhmode\unskip\else\noindent\fi % brrr
+ \getvalue{\??id#1\c!command}%
+ {\doattributes{\??id#1}\c!style\c!color{\strut\ignorespaces#2}}%
+ \getvalue{\??id#1\c!after}%
+ \nobreak}
+
+\def\doregistercharacterA[#1]#2{\doregistercharactera[#1]{\WORD{#2}}}
+\def\doregistercharacterB[#1]#2{\doregistercharacterb[#1]{\WORD{#2}}}
+
+%D Don't use \type{\string#2}; another hack is needed, since
+%D \type {#2} can be \type {\string} itself.
+
+\def\doregisterreference[#1]#2%
+ {\doifvalue{\??id#1\c!referencing}\v!on
+ {\pagereference[#1:#2]}}
+
+\def\dosetpageregisterletter#1#2%
+ {\gdef\c!entryreference
+ {\global\let\c!entryreference\relax
+ \doregisterreference[#1]{#2}}%
+ \gdef\c!entryletter
+ {\global\utilitydonetrue
+ \global\let\c!entryletter\relax
+ \doregistercharacter[#1]{#2}}}
+
+\def\dosetpageregisterentrya#1#2%
+ {\edef\currententrylevel{1}%
+ \global\let\c!entryb\relax
+ \global\let\c!entryc\relax
+ \gdef\c!entrya
+ {\iffirstregisterentry\else\endgraf\fi % new
+ \global\firstregisterpagetrue
+ \hangindent1em\noindent\c!entryreference
+ \dohandleregisterentry{#2}%
+ \global\firstregisterentryfalse
+ \global\firstsubentrytrue
+ \global\firstsubsubentrytrue}}
+
+\def\dosetpageregisterentryb#1#2%
+ {\edef\currententrylevel{2}%
+ \global\let\c!entryc\relax
+ \global\def\c!entryb
+ {\iffirstregisterentry\else\endgraf\fi % new
+ \global\firstregisterpagetrue
+ \global\let\c!entrya\relax
+ \iffirstsubentry\nobreak\fi
+ \hangindent2em\noindent\c!entryreference\hskip1em\relax
+ \dohandleregisterentry{#2}%
+ \global\firstregisterentryfalse
+ \global\firstsubentryfalse
+ \global\firstsubsubentrytrue}}
+
+\def\dosetpageregisterentryc#1#2%
+ {\edef\currententrylevel{3}%
+ \gdef\c!entryc
+ {\iffirstregisterentry\else\endgraf\fi % new
+ \global\firstregisterpagetrue
+ \global\let\c!entrya\relax
+ \global\let\c!entryb\relax
+ \iffirstsubsubentry\nobreak\fi
+ \hangindent3em\noindent\c!entryreference\hskip2em\relax
+ \dohandleregisterentry{#2}%
+ \global\firstregisterentryfalse
+ \global\firstsubsubentryfalse}}
+
+\def\dosetpageregister#1% \currentregister gebruiken
+ {\dosetreglevel{#1}%
+ \global\let\currentregisterentry\empty
+ \global\firstsubentrytrue
+ \global\firstsubsubentrytrue
+ \setregisterpage{#1}%
+ \chardef\lastregisterpagestatus\zerocount
+ \setvalue{#1\s!entrya}{\dosetpageregisterentrya {#1}}%
+ \setvalue{#1\s!entryb}{\dosetpageregisterentryb {#1}}%
+ \setvalue{#1\s!entryc}{\dosetpageregisterentryc {#1}}%
+ \setvalue{#1\s!page }{\dosetpageregisterpage{1}{#1}}%
+ \setvalue{#1\s!from }{\dosetpageregisterpage{2}{#1}}%
+ \setvalue{#1\s!to }{\dosetpageregisterpage{3}{#1}}%
+ \setvalue{#1\s!see }{\dosetpageregistersee {#1}}%
+ \setvalue{#1\s!entry }{\dosetpageregisterletter {#1}}}
+
+\def\dosetreglevel#1%
+ {\dosetfilterlevel{\getvalue{\??id#1\c!criterium}}\empty}
+
+\def\getalllistreferences#1#2%
+ {\doglobal\convertexpanded{\getvalue{\??id#1\c!expansion}}{#2}\currentregisterentry
+ \doifdefinedelse{\??id#1\??id\currentregisterentry}
+ {\edef\alllistreferences%
+ {\getvalue{\??id#1\??id\currentregisterentry}}%
+ \beforesplitstring\alllistreferences\at::\to\internallistreference
+ \aftersplitstring \alllistreferences\at::\to\alllistreferences}
+ {\let\alllistreferences\empty
+ \def\internallistreference{0}}}
+
+\def\dosetlinkregister#1% is die page reference echt nodig?
+ {\dosetreglevel{#1}%
+ \setregisterpage{#1}%
+ \global\let\currentregisterentry\empty
+ \global\firstsubentrytrue % not needed
+ \global\firstsubsubentrytrue % not needed too
+ \setvalue{#1\s!entrya}##1{\dosetlinkregisterentrya{#1}{##1}}%
+ \setvalue{#1\s!entry }##1{\dosetpageregisterletter{#1}{##1}}}
+
+\def\dosetlinkregisterentrya#1#2%
+ {\global\utilitydonetrue
+ \c!entryletter
+ \iflocation
+ \getalllistreferences{#1}{#2}%
+% \endgraf
+ \hangindent1em\noindent\c!entryreference
+ %
+ %\thisissomeinternal{\s!lin}{\internallistreference}%
+ %
+ \pagereference[-:\s!lin:\internallistreference]% -: added
+ %
+ \getcommacommandsize[\alllistreferences]%
+ \getfromcommacommand[\alllistreferences][1]%
+ \ifnum\commalistsize=1
+ \let\firstlistreference\empty
+ \let\midlistreference\commalistelement
+ \let\lastlistreference\empty
+ \else
+ \let\firstlistreference\commalistelement
+ \getfromcommacommand[\alllistreferences][\commalistsize]%
+ \let\lastlistreference\commalistelement
+ \ifnum\commalistsize=2
+ \let\midlistreference\empty
+ \else
+ \!!counta\commalistsize
+ \divide\!!counta 2
+ \getfromcommacommand[\alllistreferences][\!!counta]%
+ \let\midlistreference\commalistelement
+ \fi
+ \fi
+ % aangepast
+ \def\dodocommando[##1-##2]%
+ {\gotonextinternal{\s!ind}{##1}{##2}{\box0}}%
+ \doifelsevalue{\??id#1\c!interaction}\v!pagenumber
+ {\limitedregisterentry{#1}{#2}} % paginanummer
+ {{\setbox0\hbox{\limitedregisterentry{#1}{\begstrut#2}}%
+ \ifx\firstlistreference\empty % tekst,alles
+ \ifx\midlistreference\empty
+ \box0
+ \else
+ \expandafter\dodocommando\expandafter[\midlistreference]%
+ \fi
+ \else
+ \expandafter\dodocommando\expandafter[\firstlistreference]%
+ \fi}}%
+ \doifvalue{\??id#1\c!number}\v!yes
+ {\hskip\getvalue{\??id#1\c!distance}(\commalistsize)}%
+ \doifnotvalue{\??id#1\c!interaction}\v!text % paginanummer,alles
+ {\def\docommando##1##2%
+ {{\setbox0\hbox{\showlocation{\hbox to 1em{\hss\symbol[##2]\hss}}}%
+ \ifx##1\empty
+ % \hskip\wd0 % (optioneel maken)
+ \else
+ \expandafter\dodocommando\expandafter[##1]%
+ \fi}}%
+ \hskip\getvalue{\??id#1\c!distance}%
+ \docommando\firstlistreference\v!previous
+ \docommando\midlistreference\v!somewhere
+ \docommando\lastlistreference\v!next}%
+ % tot hier
+ \else
+% \endgraf
+ \noindent\c!entryreference
+ \limitedregisterentry{#1}{#2}%
+ \fi
+\endgraf}
+
+\def\dosetregister#1%
+ {\doifelsevalue{\??id#1\c!coupling}\v!yes
+ {\ifautoregisterhack
+ \dosetautoregister{#1}%
+ \else
+ \dosetlinkregister{#1}%
+ \fi}
+ {\dosetpageregister{#1}}}
+
+\newcounter\internallistreference
+
+\def\doloadregisterlinks#1%
+ {\dosetreglevel{#1}%
+ \setregisterpage{#1}%
+ \global\let\currentregisterentry\empty
+ \global\firstregisterpagetrue
+ \setvalue{#1\s!entrya}##1%
+ {\global\firstregisterpagetrue
+ \doglobal\convertargument##1\to\currentregisterentry % \doglobal nodig?
+ \doglobal\increment\internallistreference}%
+ \setvalue{#1\s!from}%
+ {\getvalue{#1\s!page}}%
+\ifautoregisterhack
+ \setvalue{#1\s!page}##1##2##3##4%
+ {\doifreglevelelse[##3]
+ {\global\utilitydonetrue
+ \iffirstregisterpage
+ \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname
+ {\internallistreference::##4}%
+ \else % catches errors in index
+ \ifcsname\??id#1\??id\currentregisterentry\endcsname
+ \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname
+ {\csname\??id#1\??id\currentregisterentry\endcsname,##4}%
+ \fi
+ \fi}
+ {}}%
+\else
+ \setvalue{#1\s!page}##1##2##3##4%
+ {\doifreglevelelse[##3]
+ {\global\utilitydonetrue
+ \iffirstregisterpage
+ \global\firstregisterpagefalse
+ \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname
+ {\internallistreference::##2-##4}%
+ \else % catches errors in index
+ \ifcsname\??id#1\??id\currentregisterentry\endcsname
+ \@EA\xdef\csname\??id#1\??id\currentregisterentry\endcsname
+ {\csname\??id#1\??id\currentregisterentry\endcsname,##2-##4}%
+ \fi
+ \fi}
+ {}}%
+\fi}
+
+\def\docoupleregister[#1][#2]%
+ {\iflocation
+ \ifcase0\countervalue{autolink:#1}\relax % only once
+ \begingroup
+ \let\dosetregister\doloadregisterlinks
+ \setupregister[#1][#2]%
+ \doutilities{#1}\jobname{#1}\relax\relax
+ \endgroup
+ \ifautoregisterhack
+ \doinitializeautoregister{#1}%
+ \else
+ \doinitializelinkregister{#1}%
+ \fi
+ \fi
+ \fi}
+
+\def\coupleregister
+ {\dodoubleempty\docoupleregister}
+
+\def\dodocommandoprolinrefAA[#1-#2]%
+ {\def\lastlistreference{#1-#2}}
+
+\def\dodocommandoprolinrefA[#1-#2]%
+ {\def\lastlistreference{#1-#2}%
+ \ifx\firstlistreference\empty
+ \let\firstlistreference\lastlistreference
+ \fi
+ \ifnum#1<\nextinternalreference\relax
+ \let\prevlistreference\lastlistreference
+ \else\ifnum#1>\nextinternalreference\relax
+ \let\nextlistreference\lastlistreference
+ \let\dodocommandoprolinrefA\dodocommandoprolinrefAA
+ \else
+ \let\selflistreference\lastlistreference
+ \fi\fi}
+
+\def\docommandoprolinrefA#1%
+ {\dodocommandoprolinrefA[#1]}
+
+\def\dodocommandoprolinrefB[#1-#2]%
+ {\gotonextinternal{\s!ind}{#1}{#2}{\box0}}
+
+\def\docommandoprolinrefB#1#2#3%
+ {\bgroup
+ \ifx#2\empty
+ \doifvalue{\??id#1\c!unknownreference}\v!empty{\hskip1em}%
+ \else
+ \setbox0\hbox to 1em{\hss\showlocation{\symbol[#3]}\hss}%
+ \expandafter\dodocommandoprolinrefB\expandafter[#2]%
+ \fi
+ \egroup}
+
+\def\doprocesslinkregister[#1][#2]#3%
+ {\hbox
+ {\doprocesspageregister[#2]{}{#3}%
+ \let\firstlistreference\empty
+ \let\lastlistreference\empty
+ \let\selflistreference\empty
+ \let\prevlistreference\empty
+ \let\nextlistreference\empty
+ \getalllistreferences{#1}{#3}%
+ \ifx\alllistreferences\empty \else
+ \expanded{\rawprocesscommalist[\alllistreferences]}\docommandoprolinrefA
+ \fi
+ \ifx\prevlistreference\empty
+ \let\prevlistreference\lastlistreference
+ \fi
+ \ifx\nextlistreference\empty
+ \let\nextlistreference\firstlistreference
+ \fi
+ \ifx\prevlistreference\selflistreference
+ \let\prevlistreference\empty
+ \let\nextlistreference\empty
+ \fi
+ \setalignmentswitch{\getvalue{\??id#1\c!location}}%
+ \ifcase\alignmentswitch
+ % links
+ \docommandoprolinrefB{#1}\prevlistreference\v!previous
+ \docommandoprolinrefB{#1}\nextlistreference\v!next
+ \or
+ % midden
+ \docommandoprolinrefB{#1}\prevlistreference\v!previous
+ \or
+ % rechts
+ \fi
+ \doifreferencefoundelse{\s!lin:\internallistreference}
+ {\gotosomeinternal
+ \s!lin \internallistreference \currentrealreference
+ {\showlocation{\limitedregisterentry{#1}{#3}}}}
+ {\hbox{\limitedregisterentry{#1}{#3}}}%
+ \ifcase\alignmentswitch
+ % links
+ \or
+ % midden
+ \docommandoprolinrefB{#1}\nextlistreference\v!next
+ \or
+ % rechts
+ \docommandoprolinrefB{#1}\prevlistreference\v!previous
+ \docommandoprolinrefB{#1}\nextlistreference\v!next
+ \fi}}
+
+\def\dodolinkedregister[#1][#2]#3% page auto link
+ {\bgroup
+ \chardef\registerpagestatus\plusone
+ \def\currentregister{#1}%
+ \iflocation
+ \ifautoregisterhack
+ \def\next{\doprocessautoregister[#1][#2]}%
+ \else
+ \def\next{\doprocesslinkregister[#1][#2]}%
+ \fi
+ \else
+ \def\next{\doprocesspageregister[#2]{}}%
+ \fi
+ \next{#3}%
+ \egroup
+ \ifvmode\nobreak\fi
+ \GotoPar}
+
+\def\dolinkedregister#1%
+ {\dodoubleempty\dodolinkedregister[#1]}
+
+\def\dosetautoregister#1%
+ {\makecounter{autolink:#1}%
+ \dosetreglevel{#1}%
+ \setregisterpage{#1}%
+ \global\let\currentregisterentry\empty
+ \global\firstsubentrytrue % not needed
+ \global\firstsubsubentrytrue % not needed too
+ \setvalue{#1\s!entrya}##1%
+ {\dosetautoregisterentrya{#1}{##1}}%
+ \setvalue{#1\s!entry}##1%
+ {\dosetpageregisterletter{#1}{##1}}}
+
+\def\dosetautoregisterentrya#1#2%
+ {\global\utilitydonetrue
+ \c!entryletter
+ \iflocation
+ \getalllistreferences{#1}{#2}%
+ \endgraf\hangindent1em\noindent\c!entryreference
+ \pagereference[-:\s!lin:\internallistreference]%
+ \pluscounter{autolink:#1}%
+ \bgroup
+ %\setupinteraction[\c!color=,\c!contrastcolor=,\c!style=]% kan sneller
+ \resetinteractionparameter\c!color
+ \resetinteractionparameter\c!contrastcolor
+ \resetinteractionparameter\c!style
+ \gotobox
+ {\limitedregisterentry{#1}{\begstrut#2}}%
+ [JS(SetRegisterEntry{\v!register,\countervalue{autolink:#1},#2,{\alllistreferences}})]%
+ \egroup
+ \else
+ \endgraf\noindent\c!entryreference
+ \limitedregisterentry{#1}{#2}%
+ \fi}
+
+\def\doprocessautoregister[#1][#2]#3%
+ {\hbox
+ {\doprocesspageregister[#2]{}{#3}%
+ \doifreferencefoundelse{\s!lin:\internallistreference}
+ {\gotosomeinternal \s!lin
+ {\internallistreference}{\currentrealreference}
+ {\showlocation{\limitedregisterentry{#1}{#3}}}}
+ {\hbox{\limitedregisterentry{#1}{#3}}}}}
+
+% \appendmacro aan openpaginaactie (in shipout)
+
+%D The first implementation used one main field with clones.
+%D In a 2500 page document this resulted in a rather (anoying)
+%D long start||up time. This \quote {every page its own field}
+%D solution, combined with a \quote {page open action}, works
+%D much faster, but is conceptually pretty weak.
+
+\def\complexregisterfield[#1]%
+ {\definefield[#1:\realfolio][line][\v!register]%
+ \field[#1:\realfolio]}
+
+\def\simpleregisterfield
+ {\complexregisterfield[\v!register]}
+
+\definecomplexorsimple\registerfield
+
+\setupfield
+ [\v!register]
+ [\c!width=10em,
+ \c!height=3ex,
+ \c!align=\v!middle,
+ \c!option=\v!readonly,
+ \c!location=\v!low]
+
+\def\doinitializeautoregister#1%
+ {\useJSscripts[reg]%
+ \useJSpreamblenow{LinkedRegisters}%
+ \setupinteraction[\c!openpageaction=JS(UpdateRegisterField{\v!register})]%
+ \definereference[\v!reset\v!register][JS(ResetRegisterEntry{\v!register})]%
+ \definereference[\v!first\v!register][JS(GotoFirstRegisterEntry{\v!register})]%
+ \definereference[\v!previous\v!register][JS(GotoPreviousRegisterEntry{\v!register})]%
+ \definereference[\v!next\v!register][JS(GotoNextRegisterEntry{\v!register})]%
+ \definereference[\v!last\v!register][JS(GotoLastRegisterEntry{\v!register})]}
+
+\def\doinitializelinkregister#1%
+ {}
+
+% todo ruwe register
+
+\def\placeregister
+ {\dodoubleempty\doplaceregister}
+
+\def\doplaceregister[#1][#2]%
+ {\iffirstargument
+ \begingroup
+ \edef\currentregister{#1}%
+ \setupregister[\currentregister][#2]%
+ \raggedright
+ \startcolumns
+ [\c!n=\registerparameter\c!n,
+ \c!balance=\registerparameter\c!balance,
+ \c!align=\registerparameter\c!align]%
+ \dontcomplain
+ \startpacked[\v!blank]%
+ \doutilities\currentregister\jobname\currentregister\relax\par
+ \stoppacked
+ \stopcolumns
+ \endgroup
+ \fi}
+
+\def\completeregister
+ {\dodoubleempty\docompleteregister}
+
+\def\docompleteregister[#1][#2]%
+ {\iffirstargument
+ \begingroup
+ \edef\currentregister{#1}%
+ % the expansion is needed because we don't want \v!'s in the tuo file (french)
+ \expanded{\systemsuppliedchapter[\currentregister]{\noexpand\headtext{\currentregister}}}%
+ \placeregister[\currentregister][#2]%
+ \page[\v!yes]%
+ \endgroup
+ \fi}
+
+\def\dodefineregister[#1][#2]%
+ {\setupregister[#1]%
+ [\c!n=2,
+ \c!balance=\v!yes, % \v!no komt niet zo vaak voor
+ \c!align=\v!no,
+ \c!before=\blank, % binnen kolommen: \blank[\v!line]
+ \c!after=,
+ \c!symbol=,
+ \c!interaction=\v!pagenumber,
+ \c!alternative=\v!a,
+ \c!distance=1em,
+ \c!style=\v!bold,
+ \c!pagestyle=\v!slanted,
+ \c!indicator=\v!yes,
+ \v!part\v!number=\v!yes, % v
+ \v!chapter\c!number=\v!no,
+ \c!criterium=\v!all,
+ \c!command=,
+ \c!referencing=\v!on,
+ \c!location=\v!middle,
+ \c!maxwidth=,
+ \c!number=\v!no,
+ \c!unknownreference=\v!empty,
+ \c!expansion=,
+ \c!keyexpansion=]%
+ \presetheadtext[#1=\Word{#1}]%
+ \addutilityreset{#1}%
+ \setvalue{#1}{\doregister{#1}}%
+ \setvalue{\e!coupled#1}{\dolinkedregister{#1}}%
+ \setvalue{\s!set#1}{\dosetregister{#1}}%
+ \setvalue{\s!reset#1}{\doresetregister{#1}}%
+ \setvalue{\e!see#1}{\dozieregister{#1}}%
+ \setvalue{\e!place#1}{\placeregister[#1]}%
+ \setvalue{\e!complete#1}{\completeregister[#1]}%
+ \setvalue{\e!setup#1\e!endsetup}[##1]{\getparameters[\??id#1][##1]}}
+
+\def\defineregister
+ {\dodoubleargument\dodefineregister}
+
+\def\registerlengte{\utilityregisterlength}
+
+\def\utilityregisterlength{0}
+
+\def\dodetermineregistercharacteristics[#1][#2]%
+ {\begingroup
+ \setupregister[#1][#2]%
+ \dosetreglevel{#1}%
+ \setvalue{#1\s!from}%
+ {\getvalue{#1\s!page}}%
+ \setvalue{#1\s!page}##1##2##3##4%
+ {\doifreglevelelse[##3]
+ {\doglobal\increment\utilitylistlength
+ \global\utilitydonetrue}
+ {}}%
+ \doglobal\newcounter\utilityregisterlength
+ \setbox0\vbox
+ {\doutilities{#1}\jobname{#1}\relax\relax}%
+ \endgroup
+ \ifregistergeplaatst
+ \setsystemmode \v!register
+ \else
+ \resetsystemmode\v!register
+ \fi}
+
+\def\determineregistercharacteristics
+ {\dodoubleempty\dodetermineregistercharacteristics}
+
+\defineregister
+ [\v!index]
+ [\v!indices]
+
+% \setupregister[index][koppeling=ja]
+%
+% \stelveldenin
+% [register][achtergrond=raster,kader=uit]
+%
+% \stelvoettekstenin
+% [{\field[index]}]
+%
+% \stelhoofdtekstenin
+% [{\naar {first}[eersteindex]\quad
+% \naar{previous}[vorigeindex]\quad
+% \naar {next}[volgendeindex]\quad
+% \naar {last}[laatsteindex]\quad\quad
+% \naar {index}[index]}]
+%
+% \starttekst
+%
+% oeps~~~\gekoppeldeindex{oeps} \blanko
+% flop~~~\gekoppeldeindex{flop} \blanko
+% test~~~\gekoppeldeindex{test} \pagina
+% flop~~~\gekoppeldeindex{flop} \blanko
+% test~~~\gekoppeldeindex{test} \pagina
+% oeps~~~\gekoppeldeindex{oeps} \blanko
+% test~~~\gekoppeldeindex{test} \pagina
+% flop~~~\gekoppeldeindex{flop} \blanko
+% oeps~~~\gekoppeldeindex{oeps} \pagina
+%
+% \volledigeindex
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-rul.tex b/Master/texmf-dist/tex/context/base/core-rul.tex
new file mode 100644
index 00000000000..e21d6385a0c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-rul.tex
@@ -0,0 +1,3472 @@
+%D \module
+%D [ file=core-rul,
+%D version=1998.10.16,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Ruled Stuff Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Ruled Content Handling}
+
+\unprotect
+
+%D \macros
+%D {linewidth, setuplinewidth}
+%D
+%D This module deals with rules (lines) in several ways. First
+%D we introduce two macros that can be used to set some common
+%D characteristics.
+%D
+%D \showsetup{setuplinewidth}
+%D
+%D The linewidth is available in \type{\linewidth}. The
+%D preset value of .4pt equals the default hard coded \TEX\
+%D rule width.
+
+\newdimen\linewidth
+
+\def\dosetuplinewidth[#1]%
+ {\assigndimension{#1}\linewidth{.2\points}{.4\points}{.6\points}}
+
+\def\setuplinewidth
+ {\dosingleargument\dosetuplinewidth}
+
+% \def\dosetuprules[#1]%
+% {\getparameters[\??ln][#1]%
+% \setuplinewidth[\@@lndikte]}
+%
+% \def\setuprules
+% {\dosingleargument\dosetuprules}
+
+%D \macros
+%D {ruledlinewidth, inheritruledlinewidth}
+%D
+%D Inside framed boxed we will use a private dimensions. As
+%D an option one can let the linewidth inherit its value from
+%D this one.
+
+\newdimen\ruledlinewidth \newif\ifinheritruledlinewidth
+
+%D \TEX\ lacks support for color and even gray scales. The next
+%D macros can provide a sort of poor mans gray scales as well
+%D as give access to more suitable methods of rendering. Such a
+%D method looks like:
+%D
+%D \starttyping
+%D \def\methodegraybox
+%D \width#1\height#2\depth#3\raster#4\corner#5\radius#6\\%
+%D { ... }
+%D \stoptyping
+%D
+%D The string \type{graybox} is a common element in the name,
+%D so we can have for instance \type {\postscriptgraybox} or
+%D \type {\texgraybox}. The first three arguments take a
+%D dimension, the fourth one takes a number between~0 and~1,
+%D and the last argument specifies a radius of the box when
+%D rounded corners are used, so:
+%D
+%D \startbuffer
+%D \dotgraybox
+%D \width.5\hsize\height1cm\depth0cm\raster.85\corner\v!no\radius0pt\\
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D becomes:
+%D
+%D %\startlinecorrection
+%D % \vbox to 1cm{\getbuffer}
+%D %\stoplinecorrection
+%D
+%D \startlinecorrection
+%D \unprotect
+%D \vbox to 1cm
+%D {\dotgraybox
+%D \width.5\hsize\height1cm\depth0cm\raster.85\corner\v!no\radius0pt\\}
+%D \protect
+%D \stoplinecorrection
+%D
+%D There are two predefined methodes, one uses periods and the
+%D other uses small rules. The second method is less
+%D efficient, but sometimes give better results. The dimensions
+%D of the resullting box are set to zero.
+
+\setvalue{\v!dot graybox}{\processraster\symbol\rasterdot}
+\setvalue{\v!rule graybox}{\processraster\symbol\rasterbox}
+
+\def\rasterdot{\rasterfont.}
+\def\rasterbox{\hss\vrule\!!width.4pt\!!height.4pt\!!depth\zeropoint}
+
+%D Now of course we need:
+
+\ifx\rasterfont\undefined \def\rasterfont{\fivepoint} \fi
+
+%D We implement two pure \TEX\ based generators, that use
+%D \type{\leaders} to quickly gerenate the gray pattern. One
+%D should beware of \DIMENSION\ conflicts, so we use some
+%D registers above~8. These macros are memory hungry and byte
+%D spoiling.
+
+\def\processraster
+ \symbol#1\width#2\height#3\depth#4\raster#5\corner#6\radius#7\\%
+ {\bgroup
+ \forgetall
+ \dontcomplain
+ \dimen10=\onepoint
+ \dimen10=\@@rsfactor\dimen10
+ \dimen10=#5\dimen10
+ \setbox2\hbox to #2
+ {\cleaders\hbox to 2\dimen10{#1\hss}\hss}%
+ \dimen12=#3%
+ \advance\dimen12 #4%
+ \setbox0\vbox to \dimen12
+ {\cleaders\vbox to 2\dimen10{\box2\vss}\vss}%
+ \setbox0\hbox
+ {\hskip-.5\dimen10\lower0.5\dimen10\copy0
+ \hskip-\wd0\hskip\dimen10\lower1.5\dimen10\box0}%
+ \box0
+ \egroup}
+
+%D \macros
+%D {setupscreens}
+%D
+%D The previous macro uses a predefined constant
+%D \type{\@@rsfactor}. This factor can be set by:
+%D
+%D \showsetup{setupscreens}
+
+\def\setupscreens
+ {\dodoubleargument\getparameters[\??rs]}
+
+%D The most appropriate way to call for this feature is
+%D using \type{\graybox}, which is defined as:
+
+\def\graybox{\getvalue{\@@rsmethod graybox}}
+
+%D This macro takes the five arguments mentioned earlier and
+%D obey the user's settings.
+
+%D We just introduced two pure \TEX\ methods for generating
+%D rasters. However, it's far more efficient and comfortable in
+%D terms of speed, memory usage and file size, to use a driver
+%D supported method.
+
+\setvalue{\v!external graybox}\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\%
+ {\setgraybox\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\}
+
+%D For compatibility reasons we also define the original one:
+
+\setvalue{\v!postscript graybox}%
+ {\getvalue{\v!external graybox}}
+
+%D A quite valid way of letting drivers do the job, is giving
+%D a solid rule a gray texture.
+
+\def\raster[#1]%
+ {\groupedcommand{\startraster[#1]}{\stopraster}}
+
+\def\setgraybox\width#1\height#2\depth#3\raster#4\corner#5\radius#6\\%
+ {\doifelsenothing{#4} % avoid black rules when no gray
+ {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}
+ {\raster[#4]%
+ {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}}
+
+%D The auxiliary macro is defined as:
+
+\def\dophantombox#1\\{\hphantom{\dofilledbox#1\\}}
+
+%D We don't have to stick to a \TEX\ drawn rule, but
+%D also can use rounded or even fancier shapes, as we will
+%D see later on.
+
+\def\dofilledbox\width#1\height#2\depth#3\corner#4\radius#5\\%
+ {\bgroup
+ \doifelse{#4}\v!round
+ {\dimen0=#5\relax % just in case of .x\bodyfontsize
+ \ifzeropt\dimen0
+ \dofilledlinedbox\width#1\height#2\depth#3\\%
+ \else
+ \dofilledroundbox\width#1\height#2\depth#3\radius#5\\%
+ \fi}
+ {\dofilledlinedbox\width#1\height#2\depth#3\\}%
+ \egroup}
+
+\def\dofilledlinedbox\width#1\height#2\depth#3\\%
+ {\vrule\!!width#1\!!height#2\!!depth#3}%
+
+\def\dofilledroundbox\width#1\height#2\depth#3\radius#4\\%
+ {\ovalbox{#1}{#2}{#3}\ruledlinewidth{#4}\v!off\v!on}
+
+\def\ovalbox#1#2#3#4#5#6#7% direct #1 etc passeren
+ {\bgroup
+ \scratchdimen#1\edef\ovalwid{\the\scratchdimen}%
+ \scratchdimen#2\edef\ovalhei{\the\scratchdimen}%
+ \scratchdimen#3\edef\ovaldep{\the\scratchdimen}%
+ \scratchdimen#4\edef\ovallin{\the\scratchdimen}%
+ \scratchdimen#5\edef\ovalrad{\the\scratchdimen}%
+ \doifelse{#6}\v!on % will be a macro that handles
+ {\let\ovalstr\!!plusone} % start, stop, ja, nee, aan, uit
+ {\let\ovalstr\!!zerocount}% % and something \doif
+ \doifelse{#7}\v!on
+ {\let\ovalfil\!!plusone}
+ {\let\ovalfil\!!zerocount}%
+ \doovalbox\ovalwid\ovalhei\ovaldep\ovallin\ovalrad\ovalstr\ovalfil
+ \egroup}
+
+%D The oval box is drawn using a special macro, depending on
+%D the driver in use.
+
+%D It won't be a surprise that we not only provide gray boxes,
+%D but also colored ones. Here it is:
+
+% \def\setcolorbox\width#1\height#2\depth#3\color#4\corner#5\radius#6\\%
+% {\ifincolor
+% \doifcolorelse{#4}{\color[#4]%
+% {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}
+% {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}%
+% \else
+% \dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\%
+% \fi}
+
+\def\setcolorbox\width#1\height#2\depth#3\color#4\corner#5\radius#6\\%
+ {\hbox{\ifincolor
+ \doifcolorelse{#4}{\localcolortrue\color[#4]%
+ {\dofilledbox \width#1\height#2\depth#3\corner#5\radius#6\\}}
+ {\dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\}%
+ \else
+ \dophantombox\width#1\height#2\depth#3\corner#5\radius#6\\%
+ \fi}}
+
+\def\colorbox
+ {\setcolorbox}
+
+%D \macros
+%D {defineoverlay, doifoverlayelse, overlayoffset,
+%D overlaywidth, overlayheight, overlaydepth,
+%D overlaycolor, overlaylinecolor, overlaylinewidth}
+%D
+%D Before we define the macro that actually takes card of the
+%D backgrounds, we introduce overlays. An overlay is something
+%D that contrary to its name lays {\em under} the text. An
+%D example of an overlay definition is:
+%D
+%D \startbuffer[tmp-1]
+%D \defineoverlay
+%D [fancy]
+%D [{\externalfigure
+%D [mp-cont.502]
+%D [width=\overlaywidth,
+%D height=\overlayheight]}]
+%D \stopbuffer
+%D
+%D \typebuffer[tmp-1]
+%D
+%D That for instance can be uses in:
+%D
+%D \startbuffer[tmp-2]
+%D \framed[backgroundachtergrond=fancy]{How Fancy!}
+%D \framed[backgroundachtergrond=fancy,frame=off]{Even More Fancy!}
+%D \stopbuffer
+%D
+%D and looks like:
+%D
+%D \startlinecorrection
+%D \vbox{\baselineskip24pt\getbuffer[tmp-1]\getbuffer[tmp-2]}
+%D \stoplinecorrection
+%D
+%D The formal definition is:
+%D
+%D \showsetup{defineoverlay}
+%D
+%D This macro's definition is a bit obscure, due the many
+%D non||used arguments and the two step call that enable the
+%D setting of the width, height and depth variables.
+%D Multiple backgrounds are possible and are specified as:
+%D
+%D \starttyping
+%D \framed[background={one,two,three}]{Three backgrounds!}
+%D \stoptyping
+%D
+%D Most drawing packages only know width and height. Therefore
+%D the dimensions have a slightly different meaning here:
+%D
+%D \startitemize[packed]
+%D \item \type{\overlaywidth }: width of the overlay
+%D \item \type{\overlayheight}: height plus depth of the overlay
+%D \item \type{\overlaydepth }: depth of the overlay
+%D \stopitemize
+%D
+%D The resulting box is lowered to the right depth.
+
+\def\overlaywidth {\the\hsize\space} % We preset the variables
+\def\overlayheight {\the\vsize\space} % to some reasonable default
+\let\overlaydepth \!!zeropoint % values. The attributes
+\let\overlayoffset \!!zeropoint % of the frame can be (are)
+\let\overlaycolor \empty % set somewhere else.
+\let\overlaylinewidth \!!zeropoint %
+\let\overlaylinecolor \empty %
+
+%D The next register is used to initialize overlays.
+
+\newtoks\everyoverlay
+
+%D An example of an initialization is the following (overlays
+%D can contain text and be executed under an regime where
+%D interlineskip is off).
+
+\appendtoks \oninterlineskip \to \everyoverlay
+
+\def\defineoverlay
+ {\dodoubleargument\dodefineoverlay}
+
+\def\dodefineoverlay[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{\??ov##1}{\executedefinedoverlay##1\\#2\\}}%
+ \processcommalist[#1]\docommando}
+
+\prependtoks
+ \hsize\overlaywidth
+ \vsize\overlayheight
+\to\everyoverlay
+
+% \long\def\executedefinedoverlay#1\\#2\\#3#4#5#6#7#8#9%
+% {\bgroup
+% \scratchdimen#3%
+% \edef\overlaywidth{\the\scratchdimen\space}%
+% \scratchdimen#4%
+% \advance\scratchdimen#5%
+% \edef\overlayheight{\the\scratchdimen\space}%
+% \scratchdimen#5%
+% \edef\overlaydepth{\the\scratchdimen\space}%
+% \edef\overlaycolor{#6}%
+% \let\overlayoffset\backgroundoffset % we steal this one
+% %\writestatus
+% % {overlay}
+% % {#1\space w=\overlaywidth/h+d=\overlayheight/d=\overlaydepth]}%
+% \setbox\scratchbox\hbox{\lower\overlaydepth\hbox{\the\everyoverlay#2}}%
+% \dimen0\wd\scratchbox \advance\dimen0 -\overlaywidth
+% \dimen2\ht\scratchbox \advance\dimen2 -#4% not \overlayheight
+% %\wd\scratchbox\overlaywidth
+% %\ht\scratchbox\overlayheight
+% %\dp\scratchbox\overlaydepth
+% \setbox\scratchbox\hbox{\hskip-.5\dimen0\raise-.5\dimen2\box\scratchbox}%
+% \wd\scratchbox\overlaywidth
+% \ht\scratchbox\overlayheight
+% \dp\scratchbox\overlaydepth
+% \box\scratchbox
+% \egroup}
+
+\long\def\executedefinedoverlay#1\\#2\\#3#4#5#6#7#8#9%
+ {\bgroup
+ \scratchdimen#3%
+ \edef\overlaywidth{\the\scratchdimen\space}%
+ \scratchdimen#4%
+ \advance\scratchdimen#5%
+ \edef\overlayheight{\the\scratchdimen\space}%
+ \scratchdimen#5%
+ \edef\overlaydepth{\the\scratchdimen\space}%
+ \edef\overlaycolor{#6}%
+ \let\overlayoffset\backgroundoffset % we steal this one
+ %\writestatus
+ % {overlay}
+ % {#1\space w=\overlaywidth/h+d=\overlayheight/d=\overlaydepth]}%
+ \setbox\scratchbox\hbox{\lower\overlaydepth\hbox{\the\everyoverlay#2}}%
+ \dimen0\wd\scratchbox \advance\dimen0 -\overlaywidth
+ \dimen2\ht\scratchbox \advance\dimen2 -#4% not \overlayheight
+ %\wd\scratchbox\overlaywidth
+ %\ht\scratchbox\overlayheight
+ %\dp\scratchbox\overlaydepth
+ \setbox\scratchbox\hbox{\hskip-.5\dimen0\raise-.5\dimen2\box\scratchbox}%
+ \wd\scratchbox\overlaywidth
+ \ht\scratchbox\overlayheight
+ \dp\scratchbox\overlaydepth
+ \startlayoutcomponent{o:#1}{overlay #1}%
+ \box\scratchbox
+ \stoplayoutcomponent
+ \egroup}
+
+%D The empty case is:
+
+\let\executeoverlay\gobblesevenarguments
+
+%D For testing we provide:
+
+\def\doifoverlayelse#1%
+ {\doifdefinedelse{\??ov#1}}
+
+%D We predefine two already familiar backgrounds:
+
+\setvalue{\??ov\v!screen}#1#2#3#4#5#6#7%
+ {\graybox\width#1\height#2\depth#3\raster#5\corner#6\radius#7\\}
+
+\setvalue{\??ov\v!color}#1#2#3#4#5#6#7%
+ {\colorbox\width#1\height#2\depth#3\color#4\corner#6\radius#7\\}
+
+%D After all these preparations, the background macro does no
+%D bring to many surprises. One has to keep in mind that this
+%D macro starts up a call chain, depending on the background
+%D one needs:
+%D
+%D \startitemize[packed]
+%D \item a raster, color or user defined shape
+%D \item square or round corners
+%D \item a \TEX\ or driver based method
+%D \stopitemize
+%D
+%D The macro can be extended by adding commands to the token
+%D list register \type {\everybackgroundbox}. For this
+%D purpose, the name of the current background is available in
+%D \type {\currentbackgound}.
+
+\newbox\extraframebox
+
+\newtoks\everybackgroundbox
+
+\let\currentbackground\empty
+
+\def\dodobackgroundbox#1#2#3#4#5#6%
+ {\bgroup
+ \def\currentbackground{#1}%
+ \the\everybackgroundbox
+ \setbox\extraframebox\hbox
+ {\vbox{\moveleft\dimen0\hbox
+ {\executeifdefined{\??ov\currentbackground}\gobblesevenarguments
+ {\dimen2}{\dimen4}{\dimen6}{#3}{#4}{#5}{#6}}}}%
+ \wd\extraframebox\zeropoint % \backgroundwidth
+ \ht\extraframebox\backgroundheight
+ \dp\extraframebox\backgrounddepth
+ \box\extraframebox % \hskip-\backgroundwidth
+ \egroup}
+
+\let\backgroundoffset\!!zeropoint
+\let\backgrounddepth \!!zeropoint
+\def\backgroundwidth {\the\hsize}
+\def\backgroundheight{\the\vsize}
+
+% todo: also \def\theforegroundbox{#1}
+
+\def\dobackgroundbox#1\background#2\color#3\raster#4\offset#5\corner
+ #6\radius#7\depth#8\component#9\\%
+ {\vbox
+ {\forgetall\boxmaxdepth\maxdimen
+ \dimen0 #5\relax % space needed
+ \dimen2\wd#1\advance\dimen2 2\dimen0
+ \dimen4\ht#1\advance\dimen4 \dimen0
+ \dimen6\dp#1\advance\dimen6 \dimen0
+ \advance\dimen6 #8\relax
+ \edef\backgroundoffset{\the\dimen0}%
+ \edef\backgroundwidth {\the\wd#1}%
+ \edef\backgroundheight{\the\ht#1}%
+ \edef\backgrounddepth {\the\dp#1}%
+ %\edef\foregroundbox{\box#1}%
+ \def\foregroundbox% fuzzy but needed hack, this \vss, otherwise
+ {\vbox to \backgroundheight{\vss\box#1\vss}}% vertical shift
+ \def\docommando##1%
+ {\dodobackgroundbox{##1}{#1}{#3}{#4}{#6}{#7}}%
+ \edef\component{#9}%
+ \hbox to \backgroundwidth % in case 'foreground' is used as overlay
+ {\ifx\component\empty
+ \expanded{\rawprocesscommalist[#2]}\docommando
+ \else
+ \startlayoutcomponent{b:\component}{background \component}%
+ \expanded{\rawprocesscommalist[#2]}\docommando
+ \stoplayoutcomponent
+ \fi
+ \box#1\hss}}}
+
+%D One can explictly insert the foreground box. For that
+%D purpose we introduce the overlay \type {foreground}.
+
+\defineoverlay[\v!foreground][\foregroundbox]
+
+%D We can specify overlays as a comma separated list of
+%D overlays, a sometimes handy feature.
+
+%D Besides backgrounds (overlays) we also need some macros to
+%D draw outlines (ruled borders). Again we have to deal with
+%D square and round corners. The first category can be handled
+%D by \TEX\ itself, the latter one depends on the driver. This
+%D macro also support a negative offset.
+
+\def\dooutlinebox#1\color#2\offset#3\corner#4\radius#5\depth#6\toggle#7\\%
+ {\vbox % rules on top of box
+ {\dimen0 #3\relax % space needed
+ \dimen2\wd#1\advance\dimen2 2\dimen0
+ \dimen4\ht#1\advance\dimen4 \dimen0
+ \dimen6\dp#1\advance\dimen6 \dimen0\advance\dimen6 #6\relax
+ \ifdim\dimen6<\zeropoint
+ \advance\dimen4 \dimen6
+ \dimen8-\dimen6
+ \dimen6\zeropoint
+ \else
+ \dimen8\zeropoint
+ \fi
+ \setbox\extraframebox\hbox
+ {\dostrokedbox\width\dimen2\height\dimen4\depth\dimen6%
+ \corner#4\radius#5\toggle#7\\}%
+ \setbox\extraframebox\hbox
+ {\raise\dimen8\vbox{\moveleft#3\box\extraframebox}}%
+ \wd\extraframebox\wd#1%
+ \ht\extraframebox\ht#1%
+ \dp\extraframebox\dp#1%
+ \hbox
+ {%\copy#1\hskip-\wd#1%
+ \box#1\hskip-\wd\extraframebox % faster
+ \doifelsenothing{#2} % speeds up a little
+ {\box\extraframebox}
+ {\color[#2]{\box\extraframebox}}}}}
+
+\def\dostrokedbox\width#1\height#2\depth#3\corner#4\radius#5\toggle#6\\%
+ {\bgroup
+ \doifelse{#4}\v!round
+ {\dimen0=#5\relax % just in case of .x\bodyfontsize
+ \ifzeropt\dimen0
+ \dostrokedlinedbox\width#1\height#2\depth#3\toggle#6\\%
+ \else
+ \dostrokedroundbox\width#1\height#2\depth#3\radius#5\toggle#6\\%
+ \fi}
+ {\dostrokedlinedbox\width#1\height#2\depth#3\toggle#6\\}%
+ \egroup}
+
+%D The toggle argument in these calls concern the individual
+%D rules: left, right, top and bottom. Each can be turned on,
+%D depending on the general state (\type{#4}) or the individual
+%D ones (\type{#5}, \type{#6}, \type{#7} and \type{#8}).
+
+\def\dostrokedlinedbox\width#1\height#2\depth#3\toggle
+ #4\left#5\right#6\top#7\bottom#8\\%
+ {\bgroup
+ \setbox0\null
+ \wd0=#1\ht0=#2\dp0=#3%
+ \setbox2\vbox
+ {\getvalue{t\@@frame@@#4#7}%
+ \hbox
+ {\getvalue{l\@@frame@@#4#5}%
+ \box0%
+ \getvalue{r\@@frame@@#4#6}}
+ \getvalue{b\@@frame@@#4#8}}%
+ \wd2=#1\ht2=#2\dp2=#3%
+ \box2
+ \egroup}
+
+\def\@@frame@@{@@frame@@}
+
+\setvalue{t\@@frame@@\v!on\v!on}{\hrule\!!height\ruledlinewidth\kern-\ruledlinewidth}
+\setvalue{t\@@frame@@\v!off\v!on}{\hrule\!!height\ruledlinewidth\kern-\ruledlinewidth}
+ \setvalue{t\@@frame@@\v!on}{\hrule\!!height\ruledlinewidth\kern-\ruledlinewidth}
+\setvalue{b\@@frame@@\v!on\v!on}{\kern-\ruledlinewidth\hrule\!!height\ruledlinewidth}
+\setvalue{b\@@frame@@\v!off\v!on}{\kern-\ruledlinewidth\hrule\!!height\ruledlinewidth}
+ \setvalue{b\@@frame@@\v!on}{\kern-\ruledlinewidth\hrule\!!height\ruledlinewidth}
+\setvalue{l\@@frame@@\v!on\v!on}{\vrule\!!width\ruledlinewidth\kern-\ruledlinewidth}
+\setvalue{l\@@frame@@\v!off\v!on}{\vrule\!!width\ruledlinewidth\kern-\ruledlinewidth}
+ \setvalue{l\@@frame@@\v!on}{\vrule\!!width\ruledlinewidth\kern-\ruledlinewidth}
+\setvalue{r\@@frame@@\v!on\v!on}{\kern-\ruledlinewidth\vrule\!!width\ruledlinewidth}
+\setvalue{r\@@frame@@\v!off\v!on}{\kern-\ruledlinewidth\vrule\!!width\ruledlinewidth}
+ \setvalue{r\@@frame@@\v!on}{\kern-\ruledlinewidth\vrule\!!width\ruledlinewidth}
+
+%D I condidered using the low level support command
+%D \type{\ruledhbox}, but this would slow down processing by a
+%D factor~3.
+
+%D Before we come to using these macros we yet have to define
+%D the rounded corner alternative, which after all is not that
+%D hard because it uses the previously defined macro \type
+%D {\ovalbox}.
+
+\def\dostrokedroundbox\width#1\height#2\depth#3\radius#4\toggle#5\left#6\\%
+ {\doif{#5}\v!on{\ovalbox{#1}{#2}{#3}{\ruledlinewidth}{#4}\v!on\v!off}}
+
+%D The next few macros are probably the most misused ones in
+%D \CONTEXT. They deal with putting rules around boxes, provide
+%D backgrounds, offer alignment features, and some more. We
+%D start with defining some booleans. These give an impression
+%D of what we are going to take into account.
+
+\newif\ifboxhasoffset
+\newif\ifboxhaswidth
+\newif\ifboxhasheight
+\newif\ifboxhasformat
+\newif\ifboxhasstrut
+\newif\ifboxisoverlaid
+\newif\ifboxhasframe
+
+%D We also need a few \DIMENSIONS:
+
+\newdimen\@@localoffset
+\newdimen\@@globalwidth
+
+%D The content of the box will be (temporary) saved in a box:
+
+\newbox\framebox
+
+%D We also need a box for outlines and backgrounds:
+
+\newbox\extraframebox
+
+%D \macros
+%D {framed, setupframed}
+%D
+%D Ruled boxes are typeset using \type{\framed}. This command
+%D is quite versatile and, although some users will probably
+%D seldom use it, one cannot overlook its features.
+%D
+%D \showsetup{setupframed}
+%D \showsetup{framed}
+%D
+%D This general macro is a special version of an even more
+%D general case, that can easily be linked into other macros
+%D that need some kind of framing. The local version is called
+%D with an extra parameter: the variable identifier. The reason
+%D for passing this identifier between brackets lays in the
+%D mere fact that this way we can use the optional argument
+%D grabbers.
+
+\def\defaultframeoffset{.25ex}
+
+\unexpanded\def\framed
+ {\bgroup
+ \presetlocalframed[\??ol]%
+ \dodoubleempty\startlocalframed[\??ol]}
+
+\def\presetlocalframed[#1]%
+ {\copylocalframed[#1][\??oi]}
+
+\def\copylocalframed[#1]#2[#3]%
+ {\copyparameters[#1][#3]%
+ [\c!width,\c!height,\c!offset,\c!empty,\c!rulethickness,%
+ \c!radius,\c!corner,\c!depth,\c!frame,\c!framecolor,%
+ \c!foregroundstyle,\c!foregroundcolor,\c!lines,\c!orientation,%
+ \c!topframe,\c!bottomframe,\c!leftframe,\c!rightframe,%
+ \c!rulethickness,\c!frameoffset,\c!background,\c!component,%
+ \c!backgroundoffset,\c!backgroundscreen,\c!backgroundcolor,%
+ \c!align,\c!bottom,\c!top,\c!strut,\c!location,\c!setups,\c!extras]%
+ \copyparameters[#1\c!background][#1]%
+ [\c!radius,\c!corner,\c!depth]%
+ \copyparameters[#1\c!frame][#1]%
+ [\c!radius,\c!corner,\c!depth]}
+
+\def\setupframed
+ {\dodoubleargument\getparameters[\??oi]}
+
+%D \macros
+%D {ifinframed}
+%D
+%D The normal case first presets all parameters and next starts
+%D looking for the user supplied ones. The first step is
+%D omitted in the local case, because these are preset at
+%D declaration time and keep their values unless explictly
+%D changed. By presetting the variables everytime the normal
+%D command is called, we can use this command nested, without
+%D the unwanted side effect of inheritance. The boolean is
+%D used to speed up the color stack.
+
+\newif\ifinframed
+
+\def\localframed
+ {\bgroup
+ \dodoubleempty\startlocalframed}
+
+\let\fastlocalframed\localframed
+
+%D Before we go into details, we present (and implement) the
+%D main framing routine. I saw no real reason for splitting the
+%D next two macros into smaller pieces. The content will be
+%D collected in a horizontal or vertical box with fixed or free
+%D dimensions and specific settings concerning aligment and
+%D offsets.
+%D
+%D In the first few lines, we pre||expand the frame and
+%D background offsets. We do so, because the can be defined in
+%D terms of the main offset. However, see for instance page
+%D backgrounds, when \type {#2} sets the offset to \type
+%D {overlay}, both offsets become invalid.
+%D
+%D Because it is used so often the he next macro is (and
+%D looks) rather optimized.
+
+\let\postprocessframebox\relax
+
+\let\@@framed\s!unknown
+
+\def\framedparameter#1%
+ {\csname\@@framed#1\endcsname}
+
+\def\startlocalframed[#1][#2]%
+ {\bgroup
+ \inframedtrue
+ \edef\@@framed{#1}%
+ % this piece of pre expansion is needed (sometimes used in frameoffset)
+ % \doifvaluesomething{\@@framed\c!rulethickness} % obsolete
+ % {\ruledlinewidth\getvalue{\@@framed\c!rulethickness}}% obsolete
+ % this piece of pre expansion is needed (sometimes used circular)
+ \scratchdimen\framedparameter\c!frameoffset
+ \setevalue{\@@framed\c!frameoffset}{\the\scratchdimen}%
+ \doifnotvalue{\@@framed\c!backgroundoffset}\v!frame
+ {\scratchdimen\framedparameter\c!backgroundoffset
+ \setevalue{\@@framed\c!backgroundoffset}{\the\scratchdimen}}%
+ % to prevent deadlock in case of self refering
+ \ifsecondargument % faster
+ \getparameters[\@@framed][#2]% here !
+ \fi
+ % new, experimental dirty hook
+ \framedparameter\c!extras
+ % we need to register the (outer) color
+ \startregistercolor[\framedparameter\c!foregroundcolor]%
+ % to get the right spacing
+ \doifvaluesomething{\@@framed\c!foregroundstyle}
+ {\@EA\doconvertfont\csname\@@framed\c!foregroundstyle\endcsname\empty}%
+ % beware, both the frame and background offset can be overruled
+ %
+ \edef\doframedsetups{\framedparameter\c!setups}%
+ \ifx\doframedsetups\empty\else
+ \edef\doframedsetups{\noexpand\setups[\doframedsetups]}%
+ \fi
+ % the next macros are visible
+ \edef\localoffset{\framedparameter\c!offset}%
+ \edef\localwidth {\framedparameter\c!width}%
+ \edef\localheight{\framedparameter\c!height}%
+ \edef\localformat{\framedparameter\c!align}%
+ \edef\localstrut {\framedparameter\c!strut}%
+ % these are not
+ \edef\@@localframing {\framedparameter\c!frame}%
+ \edef\@@locallocation {\framedparameter\c!location}%
+ \edef\@@localorientation{\framedparameter\c!orientation}%
+ %
+ \ifx\@@localframing\v!overlay % no frame, no offset, no framewidth
+ \boxhasframefalse
+ \let\localoffset\v!overlay
+ \else\ifx\@@localframing\v!none % no frame, no framewidth
+ \boxhasframefalse
+ \else
+ \boxhasframetrue
+ \fi\fi
+ \ifboxhasframe
+ \doifvaluesomething{\@@framed\c!rulethickness}
+ {\ruledlinewidth\framedparameter\c!rulethickness\relax
+ \ifinheritruledlinewidth\linewidth\ruledlinewidth\fi}%
+ \else
+ \ruledlinewidth\zeropoint
+ \fi
+ \ifx\localformat\empty
+ \boxhasformatfalse
+ \else
+ \boxhasformattrue
+ \dosetraggedcommand\localformat
+ \edef\dobeforeframedbox{\raggedtopcommand\framedparameter\c!top}%
+ \edef\doafterframedbox {\framedparameter\c!bottom\raggedbottomcommand}%
+ \fi
+ \ifx\localoffset\v!none
+ \boxhasoffsetfalse
+ \boxhasstrutfalse
+ \boxisoverlaidfalse
+ \@@localoffset\ruledlinewidth
+ \else\ifx\localoffset\v!overlay
+ % \ifx\@@localframing\v!no \boxhasframefalse \fi % test first
+ \boxhasoffsetfalse
+ \boxhasstrutfalse
+ \boxisoverlaidtrue
+ \@@localoffset\zeropoint
+ \else
+ \boxhasoffsettrue
+ \boxhasstruttrue
+ \boxisoverlaidfalse
+ \ifx\localoffset\v!default % new per 2-6-2000
+ \let\localoffset\defaultframeoffset
+ \letvalue{\@@framed\c!offset}\defaultframeoffset
+ \else
+ \let\defaultframeoffset\localoffset
+ \fi
+ \@@localoffset\localoffset
+ \advance\@@localoffset \ruledlinewidth
+ \fi\fi
+ \ifx\localwidth\v!fit
+ \ifboxhasformat
+ \boxhaswidthtrue
+ \!!widtha\hsize
+ \else
+ \boxhaswidthfalse
+ \fi
+ \else\ifx\localwidth\v!fixed % equals \v!fit but no shapebox
+ \ifboxhasformat
+ \boxhaswidthtrue
+ \!!widtha\hsize
+ \else
+ \boxhaswidthfalse
+ \fi
+ \else\ifx\localwidth\v!broad
+ \boxhaswidthtrue
+ \!!widtha\hsize
+ \else\ifx\localwidth\v!local
+ \boxhaswidthtrue
+ \setlocalhsize
+ \!!widtha\localhsize
+ \else
+ \boxhaswidthtrue
+ \!!widtha\localwidth
+ \fi\fi\fi\fi
+ \ifx\localheight\v!fit
+ \boxhasheightfalse % no longer: \boxhasstrutfalse
+ \else\ifx\localheight\v!broad
+ \boxhasheightfalse
+ \else
+ \boxhasheighttrue
+ \!!heighta\localheight
+ \fi\fi
+ \ifboxhasheight
+ % obey user set height, also downward compatible
+ \else
+ \doifvaluesomething{\@@framed\c!lines}
+ {\ifcase\framedparameter\c!lines\else
+ \!!heighta\framedparameter\c!lines\lineheight
+ \edef\localheight{\the\!!heighta}%
+ \boxhasheighttrue
+ \fi}%
+ \fi
+ % this is now an option: width=local
+ %
+ % \ifdim\!!widtha=\hsize
+ % \parindent\zeropoint
+ % \setlocalhsize
+ % \!!widtha\localhsize
+ % \fi
+ % i.e. disable (colsetbackgroundproblemintechniek)
+ \advance\!!widtha -2\@@localoffset
+ \advance\!!heighta -2\@@localoffset
+ \ifx\localstrut\v!no
+ \boxhasstrutfalse
+ \else\ifx\localstrut\v!global
+ \setstrut
+ \else\ifx\localstrut\v!local
+ \setfontstrut
+ \fi\fi\fi
+ \ifboxhasstrut
+ \setstrut
+ \let\localbegstrut\begstrut
+ \let\localendstrut\endstrut
+ \let\localstrut \strut
+ \else
+ \let\localbegstrut\pseudobegstrut % was: \relax
+ \let\localendstrut\pseudoendstrut % was: \relax
+ \let\localstrut \pseudostrut % was: \relax
+ %\ifboxhasheight\ifdim\!!heighta<\strutht % saveguard
+ % \let\localbegstrut\relax % but not that
+ % \let\localstrut \relax % save afterall
+ %\fi\fi
+ \fi
+ \ifboxhasheight
+ \let\\\vboxednewline
+ \ifboxhaswidth
+ \let\hairline\vboxedhairline
+ \ifboxhasformat
+ \let\next\doformatboxSomeFormat
+ \else
+ \let\next\doformatboxNoFormat
+ \fi
+ \else
+ \let\hairline\hboxedhairline
+ \ifboxhasformat
+ \let\next\doformatboxHeight
+ \else
+ \let\next\doformatboxVSize
+ \fi
+ \fi
+ \else
+ \ifboxhaswidth
+ \ifboxhasformat
+ \let\hairline\vboxedhairline
+ \let\\\vboxednewline
+ \let\next\doformatboxWidth
+ \else
+ \let\hairline\hboxedhairline
+ \let\\\hboxednewline
+ \let\next\doformatboxHSize
+ \fi
+ \else
+ \let\hairline\hboxedhairline
+ \let\\\hboxednewline
+ \let\next\doformatboxNoSize
+ \fi
+ \fi
+ \edef\framedwidth % a new feature, visible for user
+ {\ifdim\!!widtha >\zeropoint\the\!!widtha \else\zeropoint\fi}%
+ \edef\framedheight% a new feature, visible for user
+ {\ifdim\!!heighta>\zeropoint\the\!!heighta\else\zeropoint\fi}%
+ % first alternative
+ %\def\dowithframedbox%
+ % {\let\postprocessframebox\relax %new
+ % \aftergroup\stoplocalframed}%
+ % \afterassignment\dowithframedbox
+ % \setbox\framebox=\next}
+ % second alternative
+ %\dowithnextbox
+ % {\setbox\framebox\flushnextbox
+ % \let\postprocessframebox\relax %new
+ % \stoplocalframed}
+ % \next}
+ % third alternative
+ \@@startframedorientation
+ \afterassignment\dodowithframebox
+ \setbox\framebox\next}
+
+\def\dowithframebox
+ {% moved : \let\postprocessframebox\relax
+ \stoplocalframed}
+
+\def\dodowithframebox
+ {\aftergroup\dowithframebox}
+
+\let\doafterframedbox \relax
+\let\dobeforeframedbox\relax
+
+%D Carefull analysis of this macro will learn us that not all
+%D branches in the last conditionals can be encountered, that
+%D is, some assignments to \type{\next} will never occur.
+%D Nevertheless we implement the whole scheme, if not for
+%D future extensions.
+
+%D \macros
+%D {ifreshapeframebox}
+%D
+%D The last few lines tell what to do after the content of the
+%D box is collected and passed to the next macro. In the case
+%D of a fixed width and centered alignment, the content is
+%D evaluated and used to determine the most natural width. The
+%D rest of the code deals with backgrounds and frames.
+
+\newif\ifreshapeframebox \reshapeframeboxtrue
+
+%D Beware: setting \type {top} and \type {bottom} to nothing, may
+%D result in a frame that is larger that the given height! try:
+%D
+%D \starttyping
+%D \framed
+%D [height=3cm,top=,bottom=,offset=overlay]
+%D {\strut test \shapefill \strut test}
+%D \stoptyping
+%D
+%D This is intended behaviour and not a bug! One can always set
+%D
+%D \starttyping
+%D ...,bottom=\kern0pt,...
+%D \stoptyping
+
+% \def\stoplocalframed
+% {\dontshowcomposition
+% \@@stopframedorientation
+% \ifboxhasformat
+% \ifx\localwidth\v!fit
+% \ifreshapeframebox\doreshapeframedbox\fi
+% \boxhaswidthfalse
+% \else\ifx\localwidth\v!fixed
+% \boxhaswidthfalse
+% \else
+% \resetshapeframebox
+% \fi\fi
+% \else
+% \resetshapeframebox
+% \fi
+% \ifboxhaswidth
+% \wd\framebox\!!widtha
+% \fi
+% \ifboxhasheight
+% \ht\framebox\!!heighta
+% \fi
+% \doifvalue{\@@framed\c!empty}\v!yes
+% {\setbox\scratchbox\null
+% \wd\scratchbox\wd\framebox
+% \ht\scratchbox\ht\framebox
+% \dp\scratchbox\dp\framebox
+% \setbox\framebox\box\scratchbox}%
+% \stopregistercolor
+% \docolorframebox
+% \ifboxhasoffset
+% \dooffsetframebox
+% \fi
+% \ifboxisoverlaid \else
+% \dolocateframebox
+% \fi
+% \ifx\postprocessframebox\relax \else
+% \let\next\postprocessframebox
+% \let\postprocessframebox\relax % prevent nesting
+% \next\framebox
+% \fi
+% \edef\overlaylinecolor{\framedparameter\c!framecolor}%
+% \edef\overlaylinewidth{\the\ruledlinewidth}% \@@...
+% \ifboxhasframe % real or invisible frame
+% \doframedbox
+% \fi
+% \doifvaluesomething{\@@framed\c!background}\dobackedbox
+% \ifx\@@locallocation\v!low
+% \doinlineframedbox
+% \else\ifx\@@locallocation\v!depth
+% \doloweredframedbox
+% \else\ifx\@@locallocation\v!hanging
+% \dohangingframedbox
+% \fi\fi\fi
+% \box\framebox
+% \egroup
+% \egroup}
+%
+% new version, installable handler:
+
+\def\stoplocalframed
+ {\dontshowcomposition
+ \@@stopframedorientation
+ \ifboxhasformat
+ \ifx\localwidth\v!fit
+ \ifreshapeframebox\doreshapeframedbox\fi
+ \boxhaswidthfalse
+ \else\ifx\localwidth\v!fixed
+ \boxhaswidthfalse
+ \else
+ \resetshapeframebox
+ \fi\fi
+ \else
+ \resetshapeframebox
+ \fi
+ \ifboxhaswidth
+ \wd\framebox\!!widtha
+ \fi
+ \ifboxhasheight
+ \ht\framebox\!!heighta
+ \fi
+ \doifvalue{\@@framed\c!empty}\v!yes
+ {\setbox\scratchbox\null
+ \wd\scratchbox\wd\framebox
+ \ht\scratchbox\ht\framebox
+ \dp\scratchbox\dp\framebox
+ \setbox\framebox\box\scratchbox}%
+ \stopregistercolor
+ \docolorframebox
+ \ifboxhasoffset
+ \dooffsetframebox
+ \fi
+ \ifboxisoverlaid \else
+ \dolocateframebox
+ \fi
+ \ifx\postprocessframebox\relax \else
+ \let\next\postprocessframebox
+ \let\postprocessframebox\relax % prevent nesting
+ \next\framebox
+ \fi
+ \edef\overlaylinecolor{\framedparameter\c!framecolor}%
+ \edef\overlaylinewidth{\the\ruledlinewidth}% \@@...
+ \ifboxhasframe % real or invisible frame
+ \doframedbox
+ \fi
+ \doifvaluesomething{\@@framed\c!background}\dobackedbox
+ \handleframedlocator\@@locallocation
+ \box\framebox
+ \egroup
+ \egroup}
+
+\def\installframedlocator#1#2%
+ {\setvalue{\??ol:\c!location:#1}{#2}}
+
+\def\handleframedlocator#1%
+ {\getvalue{\??ol:\c!location:#1}}
+
+\def\doprelocframedbox#1%
+ {\scratchdimen#1\relax
+ \advance\scratchdimen \ruledlinewidth
+ \ifboxhasoffset
+ \advance\scratchdimen \framedparameter\c!offset
+ \fi
+ \scratchskip\ht\framebox
+ \advance\scratchskip-\scratchdimen}
+
+% \ruledhbox
+% {A
+% \framed[width=2cm,align=middle,location=hanging]{location\\equals\\hanging}
+% \framed[width=2cm,align=middle,location=depth] {location\\equals\\depth}
+% \framed[width=2cm,align=middle,location=height] {location\\equals\\height}
+% B}
+% \vskip2cm
+% \ruledhbox
+% {A
+% \framed[width=2cm,align=middle,location=low] {location\\equals\\low}
+% \framed[width=2cm,align=middle,location=line] {location\\equals\\line}
+% \framed[width=2cm,align=middle,location=high] {location\\equals\\high}
+% B}
+% \vskip2cm
+% \ruledhbox
+% {A
+% \framed[width=2cm,align=middle,location=top] {location\\equals\\top}
+% \framed[width=2cm,align=middle,location=bottom] {location\\equals\\bottom}
+% \framed[width=2cm,align=middle,location=lohi] {location\\equals\\lohi}
+% \framed[width=2cm,align=middle,location=middle] {location\\equals\\middle}
+% B}
+
+\installframedlocator \v!hanging % best with strut=no
+ {\dp\framebox\ht\framebox
+ \ht\framebox\zeropoint}
+
+\installframedlocator \v!depth
+ {\scratchdimen\ht\framebox
+ \advance\scratchdimen -\strutdp
+ \ht\framebox\scratchdimen
+ \dp\framebox\strutdp
+ \box\framebox}
+
+\installframedlocator \v!height
+ {\scratchdimen\ht\framebox
+ \advance\scratchdimen -\strutht
+ \ht\framebox\strutht
+ \dp\framebox\scratchdimen
+ \box\framebox}
+
+\installframedlocator \v!high
+ {\doprelocframedbox\strutht
+ \setbox\framebox\hbox{\lower\scratchskip\box\framebox}%
+ \ht\framebox\strutht
+ \dp\framebox\strutdp
+ \hbox{\box\framebox}}
+
+\installframedlocator \v!line
+ {\setbox\framebox\hbox{\lower.5\ht\framebox\box\framebox}%
+ \ht\framebox.5\lineheight
+ \dp\framebox.5\lineheight
+ \hbox{\box\framebox}}
+
+\installframedlocator \v!low
+ {\doprelocframedbox\strutdp
+ \setbox\framebox\hbox{\lower\scratchdimen\box\framebox}%
+ \ht\framebox\strutht
+ \dp\framebox\strutdp
+ \box\framebox}
+
+\installframedlocator \v!top
+ {\doprelocframedbox\strutht
+ \setbox\framebox\hbox{\lower\scratchskip\box\framebox}%
+ \ht\framebox\scratchdimen
+ \dp\framebox\scratchskip
+ \hbox{\box\framebox}}
+
+\installframedlocator \v!middle
+ {\scratchdimen.5\ht\framebox
+ \setbox\framebox\hbox{\lower\scratchdimen\box\framebox}%
+ \ht\framebox\scratchdimen
+ \dp\framebox\scratchdimen
+ \hbox{\box\framebox}}
+
+\installframedlocator \v!lohi
+ {\handleframedlocator\v!middle}
+
+\installframedlocator \v!bottom
+ {\doprelocframedbox\strutdp
+ \setbox\framebox\hbox{\lower\scratchdimen\box\framebox}%
+ \ht\framebox\scratchskip
+ \dp\framebox\scratchdimen
+ \hbox{\box\framebox}}
+
+% \let\@@startframedorientation\relax
+% \let\@@stopframedorientation \relax
+
+% \framed[width=12cm,height=3cm,orientation=0]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=90]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=180]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=270]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=-90]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=-180]{\input ward\relax}
+% \framed[width=12cm,height=3cm,orientation=-270]{\input ward\relax}
+
+\def\@@startframedorientation
+ {\let\@@stopframedorientation \relax
+ \ifx\@@localorientation\empty\else
+ \ifcase\@@localorientation\else
+ \scratchcounter\@@localorientation
+ \divide\scratchcounter\plustwo
+ \ifodd\scratchcounter
+ \swapmacros\framedwidth\framedheight
+ \swapmacros\localwidth \localheight
+ \swapdimens\!!heighta \!!widtha
+ \def\@@stopframedorientation{\@@dostopframedorientation\plusone}%
+ \else
+ \def\@@stopframedorientation{\@@dostopframedorientation\zerocount}%
+ \fi
+ \fi
+ \fi}
+
+\def\@@dostopframedorientation#1%
+ {\ifcase#1\else
+ \swapmacros\framedwidth\framedheight
+ \swapmacros\localwidth \localheight
+ \swapdimens\!!heighta \!!widtha
+ \fi
+ \setbox\framebox\hbox{\dorotatebox\@@localorientation\hbox{\box\framebox}}}
+
+%D The last conditional takes care of the special situation of
+%D in||line \inframed[height=3cm]{framed} boxes. Such boxes have
+%D to be \inframed{aligned} with the running text.
+
+\def\doinframed[#1]% we could omit #1] but readibility ...
+ {\framed[\c!location=\v!low,#1]}
+
+\unexpanded\def\inframed
+ {\dosingleempty\doinframed}
+
+%D When we set \type{empty} to \type{yes}, we get
+%D ourselves a frame and/or background, but no content, so
+%D actually we have a sort of phantom framed box.
+
+%D Because color marks and specials can interfere with
+%D spacing, we provide a way to specify a foregroundcolor.
+
+\def\docolorframebox
+ {\doifvaluesomething{\@@framed\c!foregroundcolor}
+ {\doifcolorelse{\framedparameter\c!foregroundcolor}
+ {\setbox\framebox\hbox
+ {\localcolortrue
+ \color[\framedparameter\c!foregroundcolor]{\box\framebox}}}
+ {}}}
+
+%D \macros
+%D {mframed, minframed}
+%D
+%D When Tobias asked how to frame mathematical elements in
+%D formulas, Taco's posted the next macro:
+%D
+%D \starttyping
+%D \def\mframed#1%
+%D {\relax
+%D \ifmmode
+%D \vcenter{\hbox{\framed{$\ifinner\else\displaystyle\fi#1$}}}%
+%D \else
+%D \framed{$#1$}%
+%D \fi}
+%D \stoptyping
+%D
+%D Because \type {\ifinner} does not (always) reports what
+%D one would expect, we move the test to the outer level. We
+%D also want to pass arguments,
+%D
+%D \starttyping
+%D \def\mframed%
+%D {\dosingleempty\domframed}
+%D
+%D \def\domframed[#1]#2% % tzt \dowithnextmathbox ?
+%D {\relax
+%D \ifmmode
+%D \ifinner
+%D \inframed[#1]{$#2$}%
+%D \else
+%D \vcenter{\hbox{\framed[#1]{$\displaystyle#2$}}}%
+%D \fi
+%D \else
+%D \inframed[#1]{$#2$}%
+%D \fi}
+%D \stoptyping
+%D
+%D Still better is the next alternative, if only because it
+%D takes care of setting the super- and subscripts styles
+
+\ifx\restoremathstyle\undefined \let\restoremathstyle\relax \fi
+
+\def\domframed[#1][#2]#3%
+ {\begingroup
+ \ifmmode
+ \ifinner
+ \let\mframedstyle\restoremathstyle
+ \else
+ \let\mframedstyle\displaystyle
+ \fi
+ \else
+ \let\mframedstyle\restoremathstyle
+ \fi
+ #1\ifdone
+ \def\normalstrut{$\mframedstyle\vphantom($}%
+ \framed
+ [\c!frameoffset=\@@oioffset,\c!offset=\v!overlay,#2]
+ {$\mframedstyle#3$}%
+ \else
+ \inframed
+ [#2]
+ {$\mframedstyle#3$}%
+ \fi
+ \endgroup}
+
+\def\mframed
+ {\dodoubleempty\domframed[\donetrue]}
+
+\def\inmframed
+ {\dodoubleempty\domframed[\donefalse]}
+
+%D So instead of the rather versatile \type {\framed}, we ue
+%D the \type {\mframed}.
+%D
+%D \startbuffer
+%D \startformula
+%D x \times \mframed{y} \times y^{z_z}
+%D x \times \inmframed{y} \times y^{z_z}
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D However, we got into troubles when we want to nest sub- and
+%D superscripts, like in
+%D
+%D \startbuffer
+%D \startformula
+%D x \times \mframed{y} \times y^{\mframed{z}_{\mframed{z}}}
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D Therefore, we can best use \type {\super} and \type {\suber}
+%D instead of \type {^} and \type {_}. Both commands take care
+%D of proper font switching.
+%D
+%D \startbuffer
+%D \startformula
+%D x \times \mframed{y} \times y\super{\mframed{z}\suber{\mframed{z}}}
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D As usual, one can specify in what way the text should be
+%D framed. One should be aware of the fact that, inorder to
+%D preserve the proper spacing, the \type {offset} is set to
+%D \type {overlay} and \type {frameoffset} is used used
+%D instead.
+%D
+%D \startbuffer
+%D \startformula
+%D x \times y\super{\mframed[framecolor=red]{z}\suber{z}}
+%D \stopformula
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D For inline use, we also provide the \type {\inmframed}
+%D alternative: we want $x \times \inmframed{y}$ in inline
+%D math, right?
+
+%D This previous framing macros needs a lot of alternatives for
+%D putting rules around boxes, inserting offsets and aligning
+%D text. Each step is handled by separate macros.
+
+\def\dowidenframebox#1%
+ {\setbox\framebox\vbox
+ {\kern#1\hbox{\kern#1\box\framebox\kern#1}\kern#1}}
+
+\def\dooffsetframebox{\dowidenframebox\localoffset}
+\def\dolocateframebox{\dowidenframebox\ruledlinewidth}
+
+%D Let's hope that the next few examples show us enough of
+%D what needs to be done by the auxiliary macros.
+%D
+%D \startbuffer
+%D \framed[height=1cm,offset=.5cm] {rule based learning}
+%D \framed[height=1cm,offset=0cm] {rule based learning}
+%D \framed[height=1cm,offset=none] {rule based learning}
+%D \framed[height=1cm,offset=overlay]{rule based learning}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \hbox{\getbuffer}
+%D \stoplinecorrection
+%D
+%D \startbuffer
+%D \framed[offset=.5cm] {rule based learning}
+%D \framed[offset=0cm] {rule based learning}
+%D \framed[offset=none] {rule based learning}
+%D \framed[offset=overlay]{rule based learning}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \hbox{\getbuffer}
+%D \stoplinecorrection
+%D
+%D \startbuffer
+%D \framed[strut=nee,offset=.5cm] {rule based learning}
+%D \framed[strut=nee,offset=0cm] {rule based learning}
+%D \framed[strut=nee,offset=none] {rule based learning}
+%D \framed[strut=nee,offset=overlay]{rule based learning}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \hbox{\getbuffer}
+%D \stoplinecorrection
+%D
+%D \startbuffer
+%D \framed[width=3cm,align=left] {rule\\based\\learning}
+%D \framed[width=3cm,align=middle] {rule\\based\\learning}
+%D \framed[width=3cm,align=right] {rule\\based\\learning}
+%D \framed[width=fit,align=middle] {rule\\based\\learning}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \hbox{\dontcomplain\getbuffer}
+%D \stoplinecorrection
+%D
+%D So now we're ready for the complicated stuff. We distinguish
+%D between borders with straight lines and those with round
+%D corners. When using the first alternative it is possible to
+%D turn off one or more lines. More fancy shapes are also
+%D possible by specifying dedicated backgrounds. Turning lines
+%D on and off is implemented as efficient as possible and as a
+%D result is interface language dependant. This next
+%D implementation evolved from simpler ones. It puts for
+%D instance the rules on top of the content and provides
+%D additional offset capabilities. The lot of calls to other
+%D macros makes this mechanism not that easy to comprehend.
+
+\def\doframedbox
+ {\setbox\framebox\vbox
+ {\dooutlinebox\framebox
+ \color \framedparameter\c!framecolor
+ \offset \framedparameter\c!frameoffset
+ \corner \framedparameter\c!framecorner
+ \radius \framedparameter\c!frameradius
+ \depth \framedparameter\c!framedepth
+ \toggle \framedparameter\c!frame
+ \left \framedparameter\c!leftframe
+ \right \framedparameter\c!rightframe
+ \top \framedparameter\c!topframe
+ \bottom \framedparameter\c!bottomframe\\}}
+
+%D Getting the backgrounds right takes less code. Again we
+%D have to take care of additional offsets.
+
+\def\dobackedbox
+ {\doifelsevalue{\@@framed\c!backgroundoffset}\v!frame % new
+ {\dodobackedbox\c!frameoffset}
+ {\dodobackedbox\c!backgroundoffset}}
+
+\def\dodobackedbox#1%
+ {\setbox\framebox\vbox
+ {\dobackgroundbox\framebox
+ \background \framedparameter\c!background
+ \color \framedparameter\c!backgroundcolor
+ \raster \framedparameter\c!backgroundscreen
+ \offset \framedparameter{#1}%
+ \corner \framedparameter\c!backgroundcorner
+ \radius \framedparameter\c!backgroundradius
+ \depth \framedparameter\c!backgrounddepth
+ \component \framedparameter\c!component\\}}
+
+%D We handle left, right or middle alignment as well as fixed
+%D or free widths and heights. Each combination gets its own
+%D macro.
+
+% \def\dopresetformatbox
+% {\forgetall
+% \oninterlineskip}
+
+% \def\doformatboxSomeFormat
+% {\vbox to \!!heighta
+% \bgroup
+% \dopresetformatbox
+% \hsize\!!widtha
+% \vsize\!!heighta
+% \raggedcommand
+% \dobeforeframedbox
+% \bgroup
+% \localbegstrut
+% \aftergroup\localendstrut
+% \aftergroup\doafterframedbox
+% \aftergroup\egroup
+% \let\next=}
+
+% \def\doformatboxNoFormat
+% {\vbox to \!!heighta
+% \bgroup
+% \dopresetformatbox
+% \hsize\!!widtha
+% \vsize\!!heighta
+% \raggedcenter
+% \vss
+% \bgroup
+% \localbegstrut
+% \aftergroup\localendstrut
+% \aftergroup\vss
+% \aftergroup\egroup
+% \let\next=}
+
+% \def\doformatboxHeight
+% {\vbox to \!!heighta
+% \bgroup
+% \dopresetformatbox
+% \raggedcommand
+% \vss
+% \bgroup
+% \aftergroup\localendstrut
+% \aftergroup\vss
+% \aftergroup\egroup
+% \localbegstrut
+% \let\next=}
+
+% \def\doformatboxWidth
+% {\vbox
+% \bgroup
+% \dopresetformatbox
+% \hsize\!!widtha
+% \raggedcommand
+% \dobeforeframedbox
+% \bgroup
+% \localbegstrut
+% \aftergroup\localendstrut
+% \aftergroup\doafterframedbox
+% \aftergroup\egroup
+% \let\next=}
+
+% \def\doformatboxVSize
+% {\vbox to \!!heighta
+% \bgroup
+% \forgetall
+% \vsize\!!heighta
+% \vss
+% \bgroup
+% \aftergroup\vss
+% \aftergroup\egroup
+% \hbox
+% \bgroup
+% \aftergroup\egroup
+% \localstrut
+% \let\next=}
+
+% \def\doformatboxHSize
+% {\hbox to \!!widtha
+% \bgroup
+% \forgetall
+% \hss
+% \localstrut
+% \bgroup
+% \aftergroup\hss
+% \aftergroup\egroup
+% \let\next=}
+
+% \def\doformatboxNoSize
+% {\hbox
+% \bgroup
+% \localstrut
+% \let\next=}
+
+\def\doformatboxSomeFormat
+ {\vbox to \!!heighta
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \oninterlineskip
+ \hsize\!!widtha
+ \vsize\!!heighta
+ \doframedsetups
+ \raggedcommand
+ \dobeforeframedbox
+ \bgroup
+ \localbegstrut
+ \@@handleoneliner
+ \aftergroup\localendstrut
+ \aftergroup\doafterframedbox
+ \aftergroup\egroup
+ \let\next=}
+
+\def\doformatboxNoFormat
+ {\vbox to \!!heighta
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \oninterlineskip
+ \hsize\!!widtha
+ \vsize\!!heighta
+ \doframedsetups
+ \raggedcenter
+ \vss
+ \bgroup
+ \localbegstrut
+ \@@handleoneliner
+ \aftergroup\localendstrut
+ \aftergroup\vss
+ \aftergroup\egroup
+ \let\next=}
+
+\def\doformatboxHeight
+ {\vbox to \!!heighta
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \oninterlineskip
+ \doframedsetups
+ \raggedcommand
+ \vss
+ \bgroup
+ \aftergroup\localendstrut
+ \aftergroup\vss
+ \aftergroup\egroup
+ \localbegstrut
+ \@@handleoneliner
+ \let\next=}
+
+\def\doformatboxWidth
+ {\vbox
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \oninterlineskip
+ \hsize\!!widtha
+ \doframedsetups
+ \raggedcommand
+ \dobeforeframedbox
+ \bgroup
+ \localbegstrut
+ \@@handleoneliner
+ \aftergroup\localendstrut
+ \aftergroup\doafterframedbox
+ \aftergroup\egroup
+ \let\next=}
+
+\def\doformatboxVSize
+ {\vbox to \!!heighta
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \vsize\!!heighta
+ \doframedsetups
+ \vss
+ \bgroup
+ \aftergroup\vss
+ \aftergroup\egroup
+ \hbox
+ \bgroup
+ \aftergroup\egroup
+ \localstrut
+ \@@handleoneliner
+ \let\next=}
+
+\def\doformatboxHSize
+ {\hbox to \!!widtha
+ \bgroup
+ \let\postprocessframebox\relax
+ \forgetall
+ \doframedsetups
+ \hss
+ \localstrut
+ \@@handleoneliner
+ \bgroup
+ \aftergroup\hss
+ \aftergroup\egroup
+ \let\next=}
+
+\def\doformatboxNoSize
+ {\hbox
+ \bgroup
+ \let\postprocessframebox\relax
+ \doframedsetups
+ \localstrut
+ \@@handleoneliner
+ \let\next=}
+
+\let\doframedsetups\relax
+
+%D On the next page we show some examples of how these macros
+%D come into action. The examples show us how
+%D \type {fit}, \type {broad} dimensions influence the
+%D formatting. Watch the visualized struts. \footnote {Here we
+%D used \type {\showstruts}.}
+%D
+%D \startpostponing
+%D \bgroup
+%D \showstruts
+%D \dontcomplain
+%D \startlinecorrection
+%D \halign{#\enskip&#\enskip&#\enskip&#\enskip&#\enskip&#\cr
+%D \framed[width=.2\hsize, height=.2\hsize, align=] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=broad, align=] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=fit, align=] {a\par b\par c}&
+%D \framed[width=fit, height=.2\hsize, align=] {a\par b\par c}&
+%D \framed[width=fit, height=broad, align=] {a\par b\par c}&
+%D \framed[width=fit, height=fit, align=] {a\par b\par c}\cr
+%D \noalign{\vskip1em}
+%D \framed[width=.2\hsize, height=.2\hsize, align=yes] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=broad, align=yes] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=fit, align=yes] {a\par b\par c}&
+%D \framed[width=fit, height=.2\hsize, align=yes] {a\par b\par c}&
+%D \framed[width=fit, height=broad, align=yes] {a\par b\par c}&
+%D \framed[width=fit, height=fit, align=yes] {a\par b\par c}\cr
+%D \noalign{\vskip1em}
+%D \framed[width=.2\hsize, height=.2\hsize, align=right] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=broad, align=right] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=fit, align=right] {a\par b\par c}&
+%D \framed[width=fit, height=.2\hsize, align=right] {a\par b\par c}&
+%D \framed[width=fit, height=broad, align=right] {a\par b\par c}&
+%D \framed[width=fit, height=fit, align=right] {a\par b\par c}\cr
+%D \noalign{\vskip1em}
+%D \framed[width=.2\hsize, height=.2\hsize, align=left] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=broad, align=left] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=fit, align=left] {a\par b\par c}&
+%D \framed[width=fit, height=.2\hsize, align=left] {a\par b\par c}&
+%D \framed[width=fit, height=broad, align=left] {a\par b\par c}&
+%D \framed[width=fit, height=fit, align=left] {a\par b\par c}\cr
+%D \noalign{\vskip1em}
+%D \framed[width=.2\hsize, height=.2\hsize, align=middle] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=broad, align=middle] {a\par b\par c}&
+%D \framed[width=.2\hsize, height=fit, align=middle] {a\par b\par c}&
+%D \framed[width=fit, height=.2\hsize, align=middle] {a\par b\par c}&
+%D \framed[width=fit, height=broad, align=middle] {a\par b\par c}&
+%D \framed[width=fit, height=fit, align=middle] {a\par b\par c}\cr}
+%D \stoplinecorrection
+%D \blank[2*big]
+%D \egroup
+%D \stoppostponing
+
+%D \macros
+%D {framednoflines, framedlastlength}
+%D
+%D It is possible to let the frame macro calculate the width
+%D of a centered box automatically (\type {fit}). When
+%D doing so, we need to reshape the box:
+
+\newcount\framednoflines
+\newdimen\framedlastlength
+
+\def\resetshapeframebox
+ {\framednoflines \zerocount
+ \framedlastlength\zeropoint}
+
+% The next implementation is frozen! It preserves the depth,
+% otherwise we get problems with framed display math and auto
+% width.
+
+\def\doreshapeframedbox % frozen
+ {\beginofshapebox
+ \unvcopy\framebox
+ \endofshapebox
+ \global\@@globalwidth\zeropoint
+ \resetshapeframebox
+ \reshapebox
+ {\setbox0\hbox
+ {\strut\ifhbox\shapebox\unhbox\else\box\fi\shapebox}%
+ \global\advance\framednoflines \plusone
+ \ifdim\framedlastlength>\zeropoint\else
+ \global\framedlastlength\wd0
+ \fi
+ \ifdim\wd0>\@@globalwidth
+ \global\@@globalwidth\wd0
+ \fi}%
+ \dosetraggedcommand\localformat
+ \raggedcommand
+ \ifboxhasheight
+ \setbox\framebox\vbox to \localheight
+ {\hsize\@@globalwidth
+ \reshapebox{\hbox to \hsize{\ifhbox\shapebox\unhbox\else\box\fi\shapebox}}%
+ \dobeforeframedbox
+ \innerflushshapebox
+ \doafterframedbox}%
+ \else
+ \scratchdimen\dp\framebox
+ \setbox\framebox\vbox to \ht\framebox
+ {\hsize\@@globalwidth
+ \reshapebox{\hbox to \hsize{\ifhbox\shapebox\unhbox\else\box\fi\shapebox}}%
+ \innerflushshapebox}%
+ \dp\framebox\scratchdimen % \strutdp otherwise problem with math
+ \fi
+ \ifdim\framedlastlength=\zeropoint\global\framednoflines\wd\framebox\fi
+ \ifcase\framednoflines\global\framednoflines\plusone\fi}
+
+%D The two variables \type {\framednoflines} and \type
+%D {\framedlastlength} can be used in a second pass to
+%D optimized framed material.
+
+%D The examples on the next page show how one can give the
+%D frame as well as the background an additional offset and
+%D even a bit more depth. The blue outline is the frame, the
+%D red box is the background and the small black outline is the
+%D visualization of the resulting box, that is, we applied
+%D \type{\ruledhbox} to the result.
+
+%D \startpostponing
+%D \bgroup
+%D \unprotect
+%D \dontcomplain
+%D
+%D \startbuffer
+%D \vbox to \vsize
+%D \bgroup
+%D \startalignment[middle]
+%D \vss
+%D \leavevmode\vbox to .8\vsize
+%D \bgroup
+%D \hsize=300pt
+%D \setupframed
+%D [background=color,
+%D backgroundcolorachtergrondkleur=darkred,
+%D width=300pt,
+%D height=60pt,
+%D framecolorkaderkleur=DemoBlue,
+%D rulethickness=2pt]
+%D \def\status%
+%D {backgroundoffset=\framedparameter\c!backgroundoffset\\
+%D frameoffset=\framedparameter\c!frameoffset\\
+%D depth=\framedparameter\c!depth}
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=0pt,frameoffset=0pt]{\status}}
+%D \vss
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=5pt,frameoffset=0pt]{\status}}
+%D \vss
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=0pt,frameoffset=5pt]{\status}}
+%D \vss
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=2pt,frameoffset=5pt]{\status}}
+%D \vss
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=5pt,frameoffset=2pt]{\status}}
+%D \vss
+%D \leavevmode \ruledhbox{\framed[backgroundoffset=5pt,frameoffset=5pt]{\status}}
+%D \egroup
+%D \vss
+%D \stopalignment
+%D \egroup
+%D \stopbuffer
+%D
+%D \getbuffer \page
+%D
+%D {\setupframed[depth=4pt]\getbuffer} \page
+%D
+%D \protect
+%D \egroup
+%D \stoppostponing
+
+%D When typesetting the framed box inline, we have to keep the
+%D baseline intact outside as well as inside the framed box.
+
+\def\doinlineframedbox
+ {\scratchdimen\strutdp
+ \advance\scratchdimen \ruledlinewidth
+ \ifboxhasoffset
+ \advance\scratchdimen \framedparameter\c!offset
+ \fi
+ \setbox\framebox\hbox{\lower\scratchdimen\box\framebox}%
+ \ht\framebox\strutht
+ \dp\framebox\strutdp
+ \box\framebox}
+
+%D We can also lower the box over the natural depth of the
+%D line.
+
+\def\doloweredframedbox
+ {\getboxheight\scratchdimen\of\box\framebox
+ \advance\scratchdimen -\strutdp
+ \ht\framebox\scratchdimen
+ \dp\framebox\strutdp
+ \box\framebox}
+
+%D Hanging the content is mainly meant for cases like the
+%D following:
+%D
+%D \starttyping
+%D \framed[strut=no]
+%D {\framed[height=2cm,location=hanging]{test}%
+%D \framed[height=1cm,location=hanging]{test}}
+%D \stoptyping
+
+\def\dohangingframedbox % best with strut=no
+ {\getboxheight\scratchdimen\of\box\framebox
+ \ht\framebox\zeropoint
+ \dp\framebox\scratchdimen}
+
+%D We can draw lines from left to right and top to bottom by
+%D using the normal \type{\hairline} command. Both directions
+%D need a different treatment.
+%D
+%D \startbuffer
+%D \framed[width=4cm] {alfa\hairline beta\hairline gamma}
+%D \framed[height=2cm] {alfa\hairline beta\hairline gamma}
+%D \framed[width=4cm,height=2cm]{alfa\hairline beta\hairline gamma}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \hbox{\getbuffer}
+%D \stoplinecorrection
+%D
+%D These macros try to adapt their behaviour as good as
+%D possible to the circumstances and act as natural as
+%D possible.
+
+\def\vboxedhairline
+ {\bgroup
+ \dimen2=\ifboxhasoffset \localoffset \else \zeropoint \fi
+ \dimen4=\dimen2
+ \advance\dimen4 \ruledlinewidth
+ \setbox0\vbox
+ {\advance\hsize 2\dimen4
+ \vskip\dimen2
+ \hrule
+ \!!height\ruledlinewidth
+ \!!depth\zeropoint
+ \!!width\hsize
+ \vskip\dimen2}%
+ %\endgraf\nointerlineskip\endgraf
+ %\moveleft\dimen4\box0
+ %\endgraf\nointerlineskip\localbegstrut
+ \endgraf\obeydepth\nointerlineskip
+ \moveleft\dimen4\box0
+ \endgraf\nointerlineskip\localbegstrut
+ \egroup}
+
+\def\hboxedhairline
+ {\bgroup
+ \dimen2=\ifboxhasoffset \localoffset \else \zeropoint \fi
+ \ifboxhasheight
+ \dimen4=\localheight \divide\dimen4 2
+ \dimen6=\dimen4
+ \advance\dimen4 \strutdp
+ \advance\dimen6 -\strutdp
+ \advance\dimen4 -2\ruledlinewidth
+ \advance\dimen6 2\ruledlinewidth
+ \else
+ \dimen4\strutht
+ \advance\dimen4 \dimen2
+ \dimen6\strutdp
+ \advance\dimen6 \dimen2
+ \fi
+ \unskip
+ \setbox0\hbox
+ {\hskip\dimen2
+ \vrule
+ \!!height\dimen4
+ \!!depth\dimen6
+ \!!width\ruledlinewidth
+ \hskip\dimen2}%
+ \ht0\strutht
+ \dp0\strutdp
+ \box0
+ \ignorespaces
+ \egroup}
+
+%D The argument of the frame command accepts \type{\\} as a
+%D sort of newline signal. In horizontal boxes it expands to a
+%D space.
+
+\def\vboxednewline
+ {\endgraf\ignorespaces}
+
+\def\hboxednewline
+ {\unskip\normalspace\ignorespaces}
+
+%D We can set each rule on or off. The default setting is
+%D inherited from \type{frame}. An earlier implementation
+%D use a bit different approach, but the new one seems more
+%D natural:
+%D
+%D \bgroup
+%D \setuptyping[margin=0pt]
+%D \startlinecorrection
+%D \startbuffer
+%D \framed[offset=overlay,frame=on]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D
+%D \startbuffer
+%D \framed[offset=overlay,frame=on,bottomframe=off]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D
+%D \startbuffer
+%D \framed[offset=overlay,frame=on,bottomframe=on]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D
+%D \startbuffer
+%D \framed[offset=overlay,frame=off]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D
+%D \startbuffer
+%D \framed[offset=overlay,frame=off,bottomframe=off]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D
+%D \startbuffer
+%D \framed[offset=overlay,frame=off,bottomframe=on]{\darkred\blackrule}
+%D \stopbuffer
+%D \hbox{\getbuffer\vbox{\typebuffer}}
+%D \stoplinecorrection
+%D \egroup
+
+%D \macros
+%D {setupblackrules}
+%D
+%D The graphic capabilities of \TEX\ do not go beyond simple
+%D filled rules, except of course when using specials. Let's
+%D start with a warning: using this commands is far more slower
+%D than using the \TEX\ primitives \type{\hrule} and
+%D \type{\vrule}, but they save us some tokens. The
+%D characteristics of these rule drawing command can be set by:
+%D
+%D \showsetup{setupblackrules}
+
+\def\setupblackrules
+ {\dodoubleargument\getparameters[\??bj]}
+
+%D \macros
+%D {blackrule}
+%D
+%D The simple command draws only one rule. Its optional
+%D argument can be used to specify the dimensions. By setting
+%D the width, height or depth to \type {max}, one gets the
+%D natural dimensions.
+%D
+%D \showsetup{blackrule}
+
+\def\doblackrule[#1]%
+ {\hbox\bgroup
+ \getparameters[\??bj][#1]%
+ \setstrut
+ \doif\@@bjwidth\v!max{\def\@@bjwidth{1em}}%
+ \doif\@@bjheight \v!max{\def\@@bjheight{\strutht}}%
+ \doif\@@bjdepth \v!max{\def\@@bjdepth{\strutdp}}%
+ \localstartcolor[\@@bjcolor]%
+ \vrule
+ \!!width \@@bjwidth
+ \!!height\@@bjheight
+ \!!depth \@@bjdepth
+ \localstopcolor
+ \egroup}
+
+\unexpanded\def\blackrule
+ {\dosingleempty\doblackrule}
+
+%D \macros
+%D {blackrules}
+%D
+%D One can call for a sequence of black rules, if needed
+%D equally spaced over the given width.
+%D
+%D \showsetup{blackrules}
+%D
+%D The two alternative calls are therefore:
+%D
+%D \startbuffer
+%D Tell me, is this according to the \blackrules[n=6]?
+%D These \blackrules[alternativevariant=b,n=10,distance=.2em,width=4cm] are quite clear.
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or:
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D We could of course have implemented this macro using
+%D \type{\leaders}, but this would probably have taken more
+%D tokens.
+
+\def\doblackrules[#1]%
+ {\hbox\bgroup
+ \getparameters[\??bj][#1]%
+ \!!widtha\@@bjwidth
+ \!!widthb\@@bjdistance
+ \doif\@@bjalternative\c!b
+ {\scratchcounter\@@bjn
+ \ifnum\scratchcounter=\plusone
+ \!!widthb\zeropoint
+ \else
+ \advance\scratchcounter \minusone
+ \advance\!!widtha -\scratchcounter\!!widthb
+ \divide \!!widtha \@@bjn
+ \fi}%
+ \localstartcolor[\@@bjcolor]%
+ \dorecurse\@@bjn
+ {\vrule
+ \!!width \!!widtha
+ \!!height\@@bjheight
+ \!!depth \@@bjdepth
+ \hskip\!!widthb}%
+ \unskip
+ \localstopcolor
+ \egroup}
+
+\unexpanded\def\blackrules
+ {\dosingleempty\doblackrules}
+
+%D The next commands can be used to draw margin rules. We
+%D support two methods: \marginrule{one for in||line use} and
+%D one that acts on a paragraph. Drawing a margin rule is
+%D rather straightforward because we can use the commands that
+%D put text in the margin.
+
+\def\dodrawmarginrule
+ {\setbox\scratchbox\hbox
+ {\vrule\!!depth\strutdepth\!!height\strutheight\!!width\@@karulethickness}%
+ \smashbox\scratchbox % no \vsmash !!!
+ \box\scratchbox}
+
+\def\drawmarginrule
+ {\strut\inleft{\dodrawmarginrule}}
+
+%D \macros
+%D {marginrule}
+%D
+%D The first method gobbles words and simply puts a bar in the
+%D margin. This method is not entirely robust.
+%D
+%D \showsetup{marginrule}
+
+\definecomplexorsimple\marginrule
+
+\def\simplemarginrule
+ {\let\processword\drawmarginrule
+ \processwords}
+
+\def\complexmarginrule[#1]%
+ {\ifnum#1<\@@kalevel\relax \else
+ \def\@@kadefaultwidth{#1}%
+ \expandafter\simplemarginrule
+ \fi}
+
+%D We need an auxiliary variable
+
+\def\@@kadefaultwidth{1}
+
+%D \macros
+%D {setupmarginrules}
+%D
+%D This macro definitions show us that we can pass an optional
+%D level, which is matched against the previous set one. The
+%D level can be set up with
+%D
+%D \showsetup{setupmarginrules}
+
+\def\setupmarginrules
+ {\dodoubleargument\getparameters[\??ka]}
+
+%D \macros
+%D {startmarginrule}
+%D
+%D The second method collects text and reformats it afterwards,
+%D using the shapebox macros. We prevent local margin rules.
+%D
+%D \showsetup{startmarginrule}
+
+\definecomplexorsimple\startmarginrule
+
+\def\simplestartmarginrule
+ {\bgroup
+ \let\drawmarginrule\relax
+ \let\stopmarginrule\dostopmarginrule
+ \beginofshapebox}
+
+\def\complexstartmarginrule[#1]%
+ {\bgroup
+ \let\drawmarginrule\relax
+ \ifnum#1<\@@kalevel\relax
+ \let\stopmarginrule\egroup
+ \else
+ \def\@@kadefaultwidth{#1}%
+ \let\stopmarginrule\dostopmarginrule
+ \expandafter\beginofshapebox
+ \fi}
+
+\def\dostopmarginrule
+ {\endofshapebox
+ \reshapebox
+ {\hbox{\inleftmargin{\dodrawmarginrule}\box\shapebox}}%
+ \flushshapebox
+ \egroup}
+
+%D \startbuffer
+%D \setupmarginrules[level=5]
+%D
+%D \startmarginrule[1]
+%D First we set the level at~5. Next we typeset this first
+%D paragraph as a level~1 one. As expected no rule show up.
+%D \stopmarginrule
+%D
+%D \startmarginrule[5]
+%D The second paragraph is a level~5 one. As we can see here,
+%D the marginal rule gets a width according to its level.
+%D \stopmarginrule
+%D
+%D \startmarginrule[8]
+%D It will of course be no surprise that this third paragraph
+%D has a even thicker margin rule. This behavior can be
+%D overruled by specifying the width explictly.
+%D \stopmarginrule
+%D \stopbuffer
+%D
+%D In next example we show most features. Watch the rule
+%D thickness adapting itself to the level.
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D We just said:
+%D
+%D \typebuffer
+
+%D \macros
+%D {vl, hl}
+%D
+%D The command \type{\vl} draws a vertical rule \vl\ with strut
+%D dimensions, multiplied with the factor specified in the
+%D optional argument. The height and depth are clipped \vl[3]
+%D to the baselinedistance. Its horizontal counterpart
+%D \type{\hl} draws a horizontal rule \hl\ with a width of 1em,
+%D multiplied with the optional factor. The horizontal rule is
+%D drawn on top of the baseline.
+%D
+%D \showsetup{vl}
+%D \showsetup{hl}
+
+\def\complexvl[#1]%
+ {\bgroup
+ \!!dimena#1\strutht
+ \!!dimenb#1\strutdp
+ \setbox\scratchbox\hbox
+ {\vrule
+ \!!width \linewidth
+ \!!height\!!dimena
+ \!!depth \!!dimenb}%
+ \dp\scratchbox\strutdp
+ \ht\scratchbox\strutht
+ \box\scratchbox
+ \egroup}
+
+\def\complexhl[#1]%
+ {\hbox
+ {\vrule
+ \!!width #1\s!em
+ \!!height\linewidth
+ \!!depth \zeropoint}}
+
+\definecomplexorsimple\vl \def\simplevl{\complexvl[1]}
+\definecomplexorsimple\hl \def\simplehl{\complexhl[1]}
+
+%D \macros
+%D {hairline, thinrule, thinrules, setupthinrules}
+%D
+%D Drawing thin lines can of course easily be accomplished by
+%D the \TEX\ primitives \type{\hrule} and \type{\vrule}. The
+%D next few macros however free us from some specifications.
+%D
+%D \startbuffer
+%D some text
+%D
+%D \hairline
+%D
+%D some more text
+%D
+%D \thinrule
+%D
+%D more and more text
+%D
+%D hi \thinrule\ there
+%D
+%D and then the final text
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D becomes
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D So we've got
+%D
+%D \showsetup{hairline}
+%D \showsetup{thinrule}
+%D
+%D Both can be set up with:
+%D
+%D \showsetup{setupthinrules}
+%D
+%D We also have
+%D
+%D \showsetup{thinrules}
+%D
+%D which looks like: \thinrules[n=2]
+
+\def\thinrule
+ {\strut
+ \bgroup
+ \chardef\ruletype\plusone
+ \processaction
+ [\@@dlalternative]
+ [ \v!a=>\chardef\ruletype0,% no line
+ %\v!b=>\chardef\ruletype1,% height/depth
+ \v!c=>\chardef\ruletype2,% topheight/botdepth
+ % 11=>\chardef\ruletype1,% fallback for backgrounds
+ 0=>\chardef\ruletype0,% compatible with backgrounds
+ % 1=>\chardef\ruletype1,% compatible with backgrounds
+ 2=>\chardef\ruletype2]% compatible with backgrounds
+ \doifsomething\@@dlrulethickness
+ {\linewidth\@@dlrulethickness}%
+ \ifdim\linewidth=\zeropoint
+ \chardef\ruletype\zerocount
+ \else
+ \doifnot\@@dlframe\v!on{\chardef\ruletype=0\relax}%
+ \fi
+ \ifnum\ruletype=\plusone
+ \doif\@@dlheight\v!max{\let\@@dlheight\!!plusone}%
+ \doif\@@dldepth\v!max{\let\@@dldepth\!!plusone}%
+ \else
+ \let\@@dlheight\!!plusone
+ \let\@@dldepth\!!plusone
+ \fi
+ \freezedimensionwithunit\@@dlheight\strutht
+ \freezedimensionwithunit\@@dldepth\strutdp
+ \divide\linewidth 2
+ \doifelse\@@dlbackground\v!color
+ {\startcolor[\@@dlbackgroundcolor]%
+ \dimen0=\@@dlheight
+ \dimen2=\@@dldepth
+ \ifnum\ruletype=2 % prevent overshoot due to rounding
+ \advance\dimen0 -.5\linewidth
+ \advance\dimen2 -.5\linewidth
+ \fi
+ \leaders\hrule\!!height\dimen0\!!depth\dimen2\hfill
+ \stopcolor
+ \ifcase\ruletype
+ % no rule
+ \or
+ \startcolor[\@@dlcolor]%
+ \hfillneg
+ \leaders\hrule\!!height\linewidth\!!depth\linewidth\hfill
+ \stopcolor
+ \or
+ \startcolor[\@@dlcolor]%
+ \dimen2=\@@dldepth\dimen0=-\dimen2 \advance\dimen0 \linewidth
+ \hfillneg\leaders\hrule\!!height\dimen0\!!depth\dimen2\hfill
+ \dimen2=\@@dlheight\dimen0=-\dimen2 \advance\dimen0 \linewidth
+ \hfillneg\leaders\hrule\!!height\dimen2\!!depth\dimen0\hfill
+ \stopcolor
+ \fi}
+ {\ifcase\ruletype \else
+ \startcolor[\@@dlcolor]%
+ \leaders\hrule\!!height\@@dlheight\!!depth\@@dldepth\hfill
+ \stopcolor
+ \fi}%
+ \strut
+ \carryoverpar\egroup}
+
+\def\hairline
+ {\endgraf
+ \thinrule
+ \endgraf}
+
+\def\dosetupthinrules[#1]%
+ {\getparameters[\??dl][#1]}
+
+\def\setupthinrules
+ {\dosingleargument\dosetupthinrules}
+
+\def\dothinrules[#1]%
+ {\bgroup
+ \dosetupthinrules[#1]%
+ \@@dlbefore
+ \assignvalue\@@dlinterlinespace\@@dlinterlinespace{1.0}{1.5}{2.0}%
+ \spacing\@@dlinterlinespace
+ \dorecurse\@@dln
+ {\ifnum\recurselevel=\@@dln \dothinrulesnobreak \else
+ \ifnum\recurselevel=2 \dothinrulesnobreak \fi\fi
+ \thinrule
+ \ifnum\recurselevel<\@@dln\relax
+ % test needed, else messed up whitespace
+ \ifx\@@dlinbetween\empty
+ \softbreak
+ \else
+ \endgraf
+ \nowhitespace
+ \@@dlinbetween
+ \fi
+ \fi}%
+ \doifelsenothing\@@dlafter
+ {\carryoverpar\egroup}
+ {\@@dlafter\egroup}}
+
+\def\thinrules
+ {\dosingleempty\dothinrules}
+
+%D A couple of examples are given below.
+%D
+%D \startbuffer
+%D \setupthinrules[n=3,inbetween=,color=gray]
+%D
+%D test test \thinrules\ test test \par
+%D test test \thinrules [color=green] test test \par
+%D test test \thinrules [height=max, depth=max] test test \par
+%D
+%D \setupthinrules[height=.9,depth=.9]
+%D
+%D test test \thinrules\ test test \par
+%D test test \thinrules [alternativevariant=b] test test \par
+%D test test \thinrules [alternativevariant=c] test test \par
+%D test test \thinrules [alternativevariant=c,inbetween=\vskip2ex] test test \par
+%D \stopbuffer
+%D
+%D \typebuffer {\getbuffer}
+%D
+%D There are a couple of alternative ways to visualize rules
+%D using backgrounds. At first sight these may look strange,
+%D but they make sense in educational settings. The
+%D alternatives are more or less compatible with the more
+%D advanced \METAPOST\ based implementation.
+%D
+%D \startbuffer[a]
+%D \setupthinrules
+%D [n=2,
+%D backgroundcolor=gray ,
+%D rulethickness=1pt,
+%D colorkleur=donkerblauw,
+%D after=\blank,
+%D before=\blank]
+%D \stopbuffer
+%D
+%D \typebuffer[a]
+%D
+%D \startbuffer[b]
+%D \thinrules[alternativevariant=a]
+%D \thinrules[alternativevariant=b]
+%D \thinrules[alternativevariant=c]
+%D \stopbuffer
+%D
+%D \typebuffer[b] \getbuffer[a,b]
+%D
+%D \startbuffer[b]
+%D \thinrules[alternativevariant=a,background=color]
+%D \thinrules[alternativevariant=b,background=color]
+%D \thinrules[alternativevariant=c,background=color]
+%D \stopbuffer
+%D
+%D \typebuffer[b] \getbuffer[a,b]
+%D
+%D \startbuffer[b]
+%D \thinrules[alternativevariant=a,height=.8,depth=.8,background=color]
+%D \thinrules[alternativevariant=b,height=.8,depth=.8,background=color]
+%D \thinrules[alternativevariant=c,height=.8,depth=.8,background=color]
+%D \stopbuffer
+%D
+%D \typebuffer[b] \getbuffer[a,b]
+
+%D \macros
+%D {optimizethinrules}
+%D
+%D By saying \type {\thinrulestrue} or \type {-false}, we
+%D can influence the way dangling lines are handled.
+
+\newif\ifoptimizethinrules \optimizethinrulestrue
+
+\def\dothinrulesnobreak
+ {\ifoptimizethinrules\penalty500\fi}
+
+%D \macros
+%D {startframedtext, setupframedtexts, defineframedtext}
+%D
+%D The general framing command we discussed previously, is not
+%D entirely suited for what we call framed texts, as for
+%D instance used in intermezzo's. The next examples show what
+%D we have in mind.
+%D
+%D \startbuffer[framed-0]
+%D \setupframedtexts
+%D [frame=off,
+%D width=\hsize,
+%D background=screen]
+%D
+%D \startframedtext
+%D By default the framed text is centered \dots
+%D \stopframedtext
+%D
+%D \startframedtext[right]
+%D \dots\ but we can also align left, middle and right.
+%D \stopframedtext
+%D \stopbuffer
+%D
+%D \startbuffer[framed-1]
+%D \defineframedtext
+%D [Example]
+%D [width=6cm,
+%D height=5cm]
+%D
+%D \startExample
+%D \typebuffer[framed-1]
+%D \stopExample
+%D \stopbuffer
+%D
+%D \startbuffer[framed-2]
+%D \defineframedtext
+%D [Example]
+%D [width=6cm]
+%D
+%D \startExample
+%D \typebuffer[framed-2]
+%D \stopExample
+%D \stopbuffer
+%D
+%D \startbuffer[framed-3]
+%D \defineframedtext
+%D [Example]
+%D [height=5cm]
+%D
+%D \startExample
+%D \typebuffer[framed-3]
+%D \stopExample
+%D \stopbuffer
+%D
+%D \startbuffer[framed-4]
+%D \defineframedtext
+%D [Example]
+%D [width=fit,height=broad]
+%D
+%D \Example{a very exciting example}
+%D \stopbuffer
+%D
+%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-0] \egroup
+%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-1] \egroup
+%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-2] \egroup
+%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-3] \egroup
+%D \bgroup \setuptyping[margin=0pt] \getbuffer[framed-4] \egroup
+%D
+%D Here we can see that we have a predefined framed text class
+%D as well as the tools for defining our own. So we have:
+%D
+%D \showsetup{setupframedtexts}
+%D
+%D as well as the definition command:
+%D
+%D \showsetup{defineframedtext}
+%D
+%D that generates two commands:
+%D
+%D \showsetup{start<<framedtext>>}
+%D \showsetup{<<framedtext>>}
+%D
+%D The next definition shows the defaults.
+
+\def\dodefineframedtext[#1][#2]%
+ {\presetlocalframed[\??kd#1]%
+ \getparameters[\??kd#1]
+ [\c!width=0.75\hsize,
+ \c!height=\v!fit,
+ \c!align=\v!yes,
+ \c!top=,
+ \c!bottom=\vfill,
+ \c!offset=1em,
+ \c!bodyfont=,
+ \c!style=,
+ \c!color=,
+ \c!left=,
+ \c!right=\hfill,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!inner=,
+ \c!frame=\v!on,
+ \c!topframe=,
+ \c!bottomframe=,
+ \c!leftframe=,
+ \c!rightframe=,
+ \c!radius=.5\bodyfontsize,
+ \c!corner=\v!rectangular,
+ \c!foregroundcolor=,
+ \c!foregroundstyle=,
+ \c!background=,
+ \c!backgroundcolor=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!linecorrection=\v!on,
+ \c!depthcorrection=\v!on,
+ \c!margin=\v!standard,
+ \c!orientation=,
+ #2]%
+ \setvalue{\e!start#1}{\dostartframedtext[#1]}%
+ \setvalue{\e!stop #1}{\dostopframedtext }%
+ \setvalue {#1}{\doframedtext [#1]}}
+
+\def\defineframedtext
+ {\dodoubleempty\dodefineframedtext}
+
+%D We define the general (and original) case by just saying:
+
+\defineframedtext[\v!framedtext]
+
+%D We need several steps before the actual job is done,
+%D because we have to handle an optional identifier (and
+%D because these commands evolved out of a single case).
+
+\def\framedtextparameter#1#2%
+ {\csname\??kd#1#2\endcsname}
+
+\def\dosetupframedtexts[#1][#2]%
+ {\ifsecondargument
+ \def\docommando##1{\getparameters[\??kd##1][#2]}%
+ \processcommacommand[#1]\docommando % new, #1 may be macro
+ \else
+ \getparameters[\??kd\v!framedtext][#1]%
+ \fi}
+
+\def\setupframedtexts
+ {\dodoubleempty\dosetupframedtexts}
+
+\def\dostartframedtext
+ {\bgroup\dotripleempty\dodostartframedtext}
+
+\def\dodostartframedtext[#1][#2][#3]%
+ {\doifassignmentelse{#2}
+ {\dododostartframedtext[#1][][#2]}
+ {\dododostartframedtext[#1][#2][#3]}}
+
+\def\checkframedtext
+ {\ifinsidefloat
+ \localhsize\hsize
+ \else\ifdim\sidefloatvsize>\zeropoint % will be proper handle
+ % \strut % rather clean way to invoke the sidefloat OTR
+ % \setbox0=\lastbox % and get the widths set, so from now on we
+ % \setlocalhsize % can have framed texts alongside sidefloats
+ \checksidefloat
+ \setlocalhsize
+ \else
+ \localhsize\hsize
+ \fi\fi}
+
+\def\dododostartframedtext[#1][#2][#3]%
+ {\doifsomething{#2}{\setvalue{\??kd#1\c!location}{#2}}%
+ \processaction % \v!low en \v!depth are already taken !
+ [\framedtextparameter{#1}\c!location]
+ [ \v!left=>\letvalue{\??kd#1\c!left }\relax
+ \letvalue{\??kd#1\c!right}\hfill,
+ \v!right=>\letvalue{\??kd#1\c!left }\hfill
+ \letvalue{\??kd#1\c!right}\relax,
+ \v!middle=>\letvalue{\??kd#1\c!left }\hfill
+ \letvalue{\??kd#1\c!right}\hfill,
+ \v!none=>\letvalue{\??kd#1\c!left }\relax % new
+ \letvalue{\??kd#1\c!right}\relax]% new
+ \letvalue{\??kd#1\c!location}\empty
+ % removed 06/2001
+ % \forgetparindent
+ % added 06/2001 [see demo-bbv]
+ \localhsize\hsize \checkframedtext
+ % so far
+ \setbox\framebox\vbox
+ \startboxedcontent
+ \hsize\localhsize
+ % \insidefloattrue % ? better
+ \expanded{\switchtobodyfont[\framedtextparameter{#1}\c!bodyfont]}%
+ \startcolor[\framedtextparameter{#1}\c!color]%
+ \localframed[\??kd#1][\c!strut=\v!no,#3]%
+ \bgroup
+ \let\\=\endgraf
+ \framedtextparameter{#1}\c!inner % oud spul
+ \doifvalue{\??kd#1\c!depthcorrection}\v!on % new, inside box
+ {\bgroup
+ \verticalstrut
+ % we need \nowhitespace in case of setups setting whitespace
+ % nb, not safe, text vs \vbox as next
+ \vskip-\struttotal
+ \nowhitespace % na vskip ! new 20/05/2004, fails with next content being box (\scale{..})
+ }%
+ \doinhibitblank % \blank[\v!disable]% plaatst signal
+ \doconvertfont{\framedtextparameter{#1}\c!style}\empty
+ \def\dostopframedtext{\dodostopframedtext{#1}{#2}}}
+
+%D The \type {none} option is handy for nested usage, as
+%D in the presentation styles, where we don't want
+%D interference.
+
+\def\dodostopframedtext#1#2% % no \baselinecorrection, see faq docs
+ {\endgraf
+ \removelastskip
+ \doifvalue{\??kd#1\c!depthcorrection}\v!on % local and global
+ {\forgetall
+ \vskip-\struttotal
+ \verticalstrut
+ \egroup
+ \forgetall
+ \vskip-\lineheight
+ % will be an option, not default
+ % \setbaselinecorrections
+ % \donegbotbaselinecorrection
+ \verticalstrut}
+ \stopboxedcontent
+ \stopcolor
+ \egroup
+ \doif{#2}\v!none\insidefloattrue % new
+ \ifinsidefloat
+ \box\framebox
+ \else
+ \doplacement[\??kd#1][\c!depthcorrection=\v!off]{\box\framebox}%
+ \fi
+ \egroup}
+
+%D The simple brace (or group) delimited case is typeset
+%D slightly different and is not aligned.
+
+\def\doframedtext
+ {\bgroup\dodoubleempty\dodoframedtext}
+
+\def\dodoframedtext[#1][#2]% beware!
+ {\expanded{\switchtobodyfont[\getvalue{\??kd#1\c!bodyfont}]}%
+ \localframed[\??kd#1][\c!strut=\v!no,#2]%
+ \bgroup
+ \blank[\v!disable]%
+ \let\\=\endgraf
+ \getvalue{\??kd#1\c!inner}% % kleur naar outer level
+ \dostartattributes{\??kd#1}\c!style\c!color\empty
+ \bgroup
+ \aftergroup\docloseframedtext
+ \let\next=}
+
+\def\docloseframedtext
+ {\removelastskip
+ \dostopattributes
+ \egroup
+ \egroup}
+
+%D \macros
+%D {defineframed}
+%D
+%D One can also define simple framed texts, using:
+%D
+%D \showsetup{defineframed}
+
+\def\defineframed
+ {\dodoubleempty\dodefineframed}
+
+\def\dodefineframed[#1][#2]%
+ {\iffirstargument
+ \setvalue{#1}{\dodoubleempty\doframed[#2]}%
+ \fi}
+
+\def\doframed[#1][#2]%
+ {\framed[#1,#2]}
+
+%D \macros
+%D {textrule, starttextrule, setuptextrules}
+%D
+%D Putting rules before and after a paragraph is very space
+%D sensitive, but the next command handles that quite well. It
+%D comes in two disguises:
+%D
+%D \startbuffer
+%D \textrule[top]{fragments}
+%D \input reich
+%D \textrule
+%D \stopbuffer
+%D
+%D \bgroup \typebuffer \getbuffer \egroup
+%D
+%D \startbuffer
+%D \setuptextrules
+%D [width=90pt,distance=12pt,rulecolor=blue,
+%D bodyfont=small,style=\sc,color=red]
+%D
+%D \starttextrule{Ship Building Tools}
+%D \nl \setuptolerance[tolerant] \input materie
+%D \stoptextrule
+%D \stopbuffer
+%D
+%D \bgroup \typebuffer \getbuffer \egroup
+%D
+%D \startbuffer
+%D \setuptextrules
+%D [location=inmargin,
+%D bodyfont=small,style=slantedbold]
+%D
+%D \starttextrule{wonderful}
+%D \input tufte
+%D \stoptextrule
+%D \stopbuffer
+%D
+%D \bgroup \typebuffer \getbuffer \egroup
+%D
+%D The formal definition of these commands is:
+%D
+%D \showsetup{textrule}
+%D \showsetup{starttextrule}
+%D \showsetup{setuptextrules}
+%D
+%D The implementation looks a bit complicated due to the
+%D optional arguments.
+
+\def\setuptextrules
+ {\dodoubleargument\getparameters[\??tl]}
+
+\def\complextextrule[#1]%
+ {\processaction
+ [#1]
+ [ \v!top=>\let\next\dotoptextrule,
+ \v!bottom=>\let\next\dobottomtextrule,
+ \s!default=>\let\next\dobottomtextrule,
+ \s!unknown=>\let\next\dobottomtextrule]%
+ \dosinglegroupempty\next}
+
+\definecomplexorsimple\textrule
+
+\def\simpletextrule
+ {\dosinglegroupempty\dounknowntextrule}
+
+\def\docomplextextrule#1%
+ {\bgroup
+ \advance\hsize -\rightskip
+ \advance\hsize -\leftskip
+ \setbox\scratchbox\hbox to \hsize
+ {\dimen4=.5ex
+ \dimen6=-.5ex
+ \advance\dimen4 .5\linewidth
+ \advance\dimen6 .5\linewidth
+ \dimen8=\@@tldistance
+ \doifnothing{#1}\firstargumentfalse
+ \iffirstargument
+ \doifelse\@@tllocation\v!inmargin
+ {\llap{\doattributes\??tl\c!style\c!color{#1}\hskip\leftmargindistance}}
+ {\color[\@@tlrulecolor]
+ {\vrule\!!height\dimen4\!!depth\dimen6\!!width\@@tlwidth}%
+ \hbox spread 2\dimen8
+ {\hss\doattributes\??tl\c!style\c!color{\strut#1}\hss}}%
+ \fi
+ \color[\@@tlrulecolor]
+ {\leaders\hrule\!!height\dimen4\!!depth\dimen6\hfill}}%
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \noindent\box\scratchbox
+%\nobreak\verticalstrut\kern-\struttotal
+% evt \witruimte
+ \egroup}
+
+\def\dotoptextrule#1%
+ {\page[\v!preference] % interferes
+ %\whitespace % no
+ \@@tlbefore
+ \docomplextextrule{#1}%
+% todo, option: \doifnothing{#1}{\ruledvskip-.5ex}
+ \nowhitespace
+ \@@tlinbetween
+ \endgraf}
+
+\def\dodobottomtextrule#1#2%
+ {\ifhmode
+ \endgraf
+ \fi
+ \dimen0\strutdp
+ \ifdim\prevdepth>\strutdp\else % was <\strutdp
+ \ifdim\prevdepth>\zeropoint
+ \advance\dimen0 -\prevdepth
+ \fi
+ \fi
+ \advance\dimen0 .5ex
+ \vskip\dimen0
+ \@@tlinbetween
+ \doifelsenothing{#2}
+ {\bgroup
+ \advance\hsize -\rightskip
+ \advance\hsize -\leftskip
+ \nointerlineskip
+ \moveleft-\leftskip\vbox
+ {\color[\@@tlrulecolor]
+ {\hrule\!!depth\linewidth\!!height\zeropoint\!!width\hsize}}%
+ \egroup}
+ {\docomplextextrule{#2}}%
+ \ifvmode\prevdepth\zeropoint\fi
+ #1%
+ \page[\v!preference]}
+
+\def\dobottomtextrule
+ {\dodobottomtextrule\@@tlafter}
+
+\def\domiddletextrule
+ {\dodobottomtextrule\@@tlinbetween}
+
+\def\dounknowntextrule
+ {\iffirstargument
+ \@EA\dotoptextrule
+ \else
+ \@EA\dobottomtextrule\@EA\empty
+ \fi}
+
+%D The grouped commands also supports bodyfont switching:
+
+\def\starttextrule#1%
+ {\bgroup
+ \def\dounknowntextrule{\domiddletextrule}
+ \dotoptextrule{#1}
+ \bgroup
+ \doifsomething\@@tlbodyfont{\switchtobodyfont[\@@tlbodyfont]}}
+
+\def\stoptextrule
+ {\par
+ \egroup
+ \dobottomtextrule\empty
+ \egroup}
+
+%D \macros
+%D {fillinrules, setupfillinrules}
+%D
+%D The next few commands do not really deserve a place in a
+%D core module, because they deal with specific typography.
+%D Nevertheless I decided to make them part of the core,
+%D because they permit us to make questionaires. Let's start
+%D with some examples.
+%D
+%D \fillinrules[n=2,width=fit]{first}
+%D \fillinrules[n=2,width=broad]{first}
+%D \fillinrules[n=2,width=3cm]{first}
+%D \fillinrules[n=2,width=3cm,distance=.5em,separator=:]{first}
+%D \fillinrules[n=2]{first}{last}
+%D \fillintext{first}{last} \input reich \par
+%D
+%D The main command is \type{\fillinrules}. This command takes
+%D one and an optional second argument and sets a paragraph with
+%D empty visualized lines.
+%D
+%D \showsetup{fillinrules}
+%D \showsetup{setupfillinrules}
+
+\def\setupfillinrules
+ {\dodoubleargument\getparameters[\??il]}
+
+\definecomplexorsimpleempty\fillinrules
+
+\def\complexfillinrules[#1]%
+ {\def\docomplexfillinrules##1##2%
+ {\dodocomplexfillinrules[#1]{##1}{##2}{\thinrules
+ [\c!n=\@@iln,\c!interlinespace=\@@ilinterlinespace,\c!before=,\c!after=]}}%
+ \dodoublegroupempty\docomplexfillinrules}
+
+\def\dodocomplexfillinrules[#1]#2#3#4%
+ {\endgraf
+ \@@ilbefore
+ \begingroup
+ \setupfillinrules[#1]%
+ \noindent
+ \doifelse\@@ilwidth\v!fit
+ {\let\@@ildistance\!!zeropoint
+ \hbox}
+ {\doifelse\@@ilwidth\v!broad
+ {\hbox}
+ {\hbox to \@@ilwidth}}
+ \bgroup
+ \doattributes\??il\c!style\c!color{\strut#2\hfill\@@ilseparator}%
+ \hskip\@@ildistance
+ \egroup
+ %\hangindent=\wd0\relax % tzt hang=yes,n
+ %\parindent=\hangindent
+ %\box0\relax
+ \setupwhitespace[\v!big]%
+ \ignorespaces
+ #4%
+ \doifsomething{#3}
+ {\kern\@@ildistance
+ \doattributes\??il\c!style\c!color{#3\strut}}%
+ \endgroup
+ \endgraf
+ \@@ilafter}
+
+%D \macros
+%D {fillintext}
+%D
+%D To provide compatible layouts when texts and lines are
+%D mixed, one can typeset a paragraph by using the command
+%D \type{\fillintext}.
+%D
+%D \showsetup{fillintext}
+
+\definecomplexorsimpleempty\fillintext
+
+\def\complexfillintext[#1]% rather rough, using an \unhbox is suboptimal
+ {\def\docomplexfillintext##1##2%
+ {\dowithnextbox
+ {\dodocomplexfillinrules[#1]{##1}{\hfill##2}{\unhbox\nextbox\unskip}}%
+ \hbox\bgroup\let\par\egroup\ignorespaces}%
+ \dodoublegroupempty\docomplexfillintext}
+
+%D \macros
+%D {fillinline, setupfillinlines}
+%D
+%D Another member of the family takes care of putting a (often
+%D small) rule after a piece of text, like
+%D
+%D \startbuffer
+%D \fillinline \input reich \par
+%D \fillinline[margin=0cm] \input reich \par
+%D \stopbuffer
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D which was typeset by saying:
+%D
+%D \typebuffer
+%D
+%D The two commands that take care of this are:
+%D
+%D \showsetup{fillinline}
+%D \showsetup{setupfillinlines}
+
+\def\setupfillinlines
+ {\dodoubleargument\getparameters[\??iv]}
+
+\definecomplexorsimpleempty\fillinline
+
+\def\complexfillinline[#1]%
+ {%\endgraf % interferes with \definedescription cum suis
+ \@@ivbefore
+ \begingroup
+ \setupfillinlines[#1]%
+ \advance\rightskip \@@ivmargin
+ \parfillskip\zeropoint
+ \def\par % very dangerous
+ {\let\par\endgraf % -)
+ \unskip\hfill
+ \dimen0=\@@ivwidth
+ \advance\dimen0 -\@@ivdistance
+ \ifdim\dimen0>\@@ivmargin\else\expandafter\rlap\fi
+ {\kern\@@ivdistance
+ \vrule
+ \!!width \dimen0
+ \!!height.5\linewidth
+ \!!depth .5\linewidth}%
+ \endgraf % !
+ \endgroup
+ \endgraf % !
+ \@@ilafter}}
+
+%D \stopdocumentation
+%D \bgroup
+%D
+%D \setupframedtexts
+%D [setuptext]
+%D [background=color,backgroundcolor=white]
+%D
+%D \startbuffer
+%D \setupbackground
+%D [backgroundoffset=4pt,
+%D background=screen,
+%D frame=on,
+%D framecolor=red,
+%D leftoffset=2pt]
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D \startbackground
+%D
+%D \macros
+%D {setupbackground,startbackground,background}
+%D
+%D The section deals with backgrounds in the running text. This
+%D means that texts is to be collected and split over pages. To
+%D show what can be done, we provide this part of the
+%D documentation with some gray background and a red frame.
+%D Both the background and frame can have all characteristics
+%D of \type{\framed}. This time we used the setting:
+%D
+%D \typebuffer
+%D
+%D The implementation is not that sophisticated, but suffices.
+%D The main problem with this kind of functionality is to get
+%D the spacing all right.
+
+%D Specifying the background is more or less the same as
+%D specifying a framed box.
+%D
+%D \showsetup{setupbackground}
+
+\presetlocalframed[\??ag]
+
+\def\dosetupbackground[#1]%
+ {\getparameters[\??ag][#1]%
+ \doifelse\@@agstate\v!start
+ {\let\startbackground\dostartbackground
+ \let\stopbackground \dostopbackground
+ \let\background \dobackground}
+ {\let\startbackground\relax
+ \let\stopbackground \relax
+ \let\background \relax}}
+
+\def\setupbackground
+ {\dosingleargument\dosetupbackground}
+
+%D Actually typesetting the background is implemented rather
+%D straightforward. We need to handle some spacing as well as
+%D the (often) a bit smaller horizontal size.
+%D
+%D \showsetup{startbackground}
+%D
+%D Although we could have used a scratch one, we first
+%D declare a boolean.
+
+\newif\ifbackgroundsplit
+
+%D The \type{\vbox to \lineheight{}\vskip\zeropoint}
+%D construction gives the first real line a decent height by
+%D adding a dummy line.
+
+\def\dostartbackground
+ {\endgraf
+ \bgroup
+ \setbox0\vbox\bgroup
+ \vbox to \lineheight{}\vskip\zeropoint
+ \blank[\v!disable]
+ \advance\hsize -\@@agleftoffset
+ \advance\hsize -\@@agrightoffset}
+
+%D This dummy line is removed by \type{\setbox2=\vsplit0 to
+%D \lineheight}. That way \type{\topskip} takes care of the
+%D lineheight. I'll probably forget to apply this trick
+%D elsewhere.
+
+\def\dostopbackground% improved version (i hope)
+ {\endgraf
+ \removelastskip
+ \egroup
+ \forgetall
+ \splitmaxdepth\boxmaxdepth
+ \splittopskip\topskip
+ \setbox2\vsplit0 to \lineheight % get rid of fake line
+ \loop
+ \ifdim\pagetotal=\zeropoint % empty page
+ \scratchdimen\textheight
+ \chardef\backgroundsplit1 % split to max height
+ \else
+ \scratchdimen\pagegoal
+ \setbox\scratchbox\vbox{\@@agbefore}%
+ \advance\scratchdimen -\ht\scratchbox
+ \advance\scratchdimen -\pagetotal
+ \chardef\backgroundsplit2 % split to partial height
+ \fi
+ \advance\scratchdimen -\@@agtopoffset
+ \advance\scratchdimen -\@@agbottomoffset \relax
+ \ifdim\scratchdimen>2\lineheight\relax % reasonable, will be configurable
+ \ifdim\ht0>\scratchdimen % larger than page
+ \setbox2\vsplit0 to \scratchdimen
+ \else
+ \setbox2\box0
+ \chardef\backgroundsplit0 % no split
+ \fi
+ \setbox2\vbox \ifcase\backgroundsplit\or to \textheight \fi % max split
+ {\vskip\@@agtopoffset
+ \popsplitproperties
+ \unvcopy2
+ \prevdepth\dp2
+ \obeydepth
+ \vskip\@@agbottomoffset
+ \vfill}
+ \@@agbefore
+ \ifcase\backgroundsplit\or\or % partial split
+\ifdim\pagegoal<\maxdimen
+ \pagegoal=1.2\pagegoal % be a bit more tolerant
+\fi
+ \fi
+ \startlinecorrection
+ \localframed
+ [\??ag][\c!offset=\v!overlay]
+ {\hskip\@@agleftoffset\box2\hskip\@@agrightoffset}%
+ \stoplinecorrection
+ \ifcase\backgroundsplit % no split
+ \@@agafter
+ \else % some split
+ \vfill\eject % geen \page !
+ \fi
+ \else
+ \page
+ \fi
+ \ifdim\ht0>\zeropoint \repeat
+ \egroup
+ \endgraf}
+
+%D As a bonus we also have a short command, that is of not
+%D much use, but kept there for historic reasons.
+%D
+%D \showsetup{background}
+
+\def\dobackground
+ {\bgroup
+ \dowithnextbox
+ {\localframed[\??ag][\c!offset=\v!overlay]{\flushnextbox}\egroup}
+ \vbox}
+
+%D \stopdocumentation
+%D \stopbackground
+%D \egroup
+
+%D New, for the moment private; let's see when GB finds out
+%D about this one and its obscure usage. It's used in:
+%D
+%D \startbuffer
+%D \defineframedtext
+%D [tabulateframe]
+%D [offset=overlay,
+%D backgroundoffset=3pt,
+%D background=color,
+%D backgroundcolor=green]
+%D
+%D \setuptabulate
+%D [tabulate]
+%D [frame=tabulateframe]
+%D
+%D \setuptables
+%D [frame=tabulateframe]
+%D
+%D \input tufte
+%D
+%D \starttabulate[|l|l|]
+%D \NC test \NC test \NC \NR \NC test \NC test \NC \NR
+%D \NC test \NC test \NC \NR \NC test \NC test \NC \NR
+%D \stoptabulate
+%D
+%D \input tufte
+%D
+%D \starttable[|l|l|]
+%D \NC test \NC test \NC \AR \NC test \NC test \NC \AR
+%D \NC test \NC test \NC \AR \NC test \NC test \NC \AR
+%D \stoptable
+%D \stopbuffer
+%D
+%D \typebuffer
+
+\def\defineframedcontent
+ {\dodoubleempty\dodefineframedcontent}
+
+\def\dodefineframedcontent[#1][#2]%
+ {\presetlocalframed[\??fc#1]%
+ \getparameters[\??fc#1]
+ [\c!leftoffset=\zeropoint,
+ \c!rightoffset=\getvalue{\??fc#1\c!leftoffset},
+ \c!topoffset=\zeropoint,
+ \c!bottomoffset=\getvalue{\??fc#1\c!topoffset},
+ \c!strut=\v!no,
+ \c!offset=\v!overlay,
+ \c!linecorrection=\v!no,
+ \c!left=,
+ \c!right=,
+ #2]}
+
+\let\setuplocalframed\getparameters
+
+\def\setupframedcontent
+ {\dodoubleempty\dosetupframedcontent}
+
+\def\dosetupframedcontent[#1][#2]%
+ {\def\docommando##1{\getparameters[\??fc##1][#2]}%
+ \processcommacommand[#1]\docommando}
+
+\def\startframedcontent[#1]%
+ {\bgroup
+ \let\stopframedcontent\egroup
+ \doifnot{#1}\v!off
+ {\doifdefined{\??fc#1\c!frame}
+ {\def\stopframedcontent{\dostopframedcontent{#1}}%
+ \dostartframedcontent{#1}}}}
+
+\def\dostartframedcontent#1%
+ {\setbox\framebox\hbox\bgroup
+ \setlocalhsize
+ \hsize\localhsize
+ \advance\hsize-\getvalue{\??fc#1\c!leftoffset}%
+ \advance\hsize-\getvalue{\??fc#1\c!rightoffset}%
+ \advance\vsize-\getvalue{\??fc#1\c!topoffset}%
+ \advance\vsize-\getvalue{\??fc#1\c!bottomoffset}%
+ \hskip\getvalue{\??fc#1\c!leftoffset}%
+ \vbox\bgroup
+ \vskip\getvalue{\??fc#1\c!topoffset}%
+ \vbox\bgroup
+ \forgetall
+ \blank[\v!disable]}
+
+\def\dostopframedcontent#1%
+ {\removelastskip
+ \egroup
+ \vskip\getvalue{\??fc#1\c!bottomoffset}%
+ \egroup
+ \hskip\getvalue{\??fc#1\c!rightoffset}%
+ \egroup
+ \doifvalue{\??fc#1\c!width}\v!fit
+ {\letvalue{\??fc#1\c!width}\v!fixed}% no shapebox
+ \ifinsidefloat
+ \donefalse
+ \else
+ \doifelsevalue{\??fc#1\c!linecorrection}\v!yes\donetrue\donefalse
+ \fi
+ % plaats ?
+ \ifdone\startlinecorrection\fi
+ \getvalue{\??fc#1\c!left}% new
+ \localframed[\??fc#1]{\box\framebox}%
+ \getvalue{\??fc#1\c!right}% new
+ \ifdone\stoplinecorrection\fi
+ \egroup}
+
+%D \macros
+%D {backgroundline}
+%D
+%D For the moment an undocumented feature, but a cancidate
+%D for going public.
+
+\def\backgroundline[#1]%
+ %{\doifsomething{#1}{\dobackgroundline{#1}}\hbox}
+ {\doifcolorelse{#1}{\dobackgroundline{#1}\hbox}\hbox}
+
+\def\dobackgroundline#1%
+ {\dowithnextbox
+ {\hbox
+ {\localcolortrue
+ \startcolor[#1]%
+ \vrule
+ \!!width \nextboxwd
+ \!!height\nextboxht
+ \!!depth \nextboxdp
+ \stopcolor
+ \hskip-\nextboxwd
+ \flushnextbox}}}
+
+%D \macros
+%D {encircled}
+%D
+%D Some not so robust left||overs (borrowed from Knuth,
+%D \TEX Book\ page 356):
+
+\def\encircled#1%
+ {{\ooalign{\hfil\raise0.07ex\hbox{{\tx#1}}\hfil\crcr\mathhexbox20D}}}
+
+\let\omcirkeld\encircled
+
+% \def\copyright {\encircled{C}}
+% \def\registered{\encircled{R}}
+
+% \setuprules
+% [\c!lijndikte=\v!middel]
+
+\setuplinewidth
+ [\v!medium]
+
+\setupframed
+ [\c!width=\v!fit,
+ \c!height=\v!broad,
+ \c!lines=,
+ \c!offset=0.25ex, % \defaultframeoffset
+ \c!empty=\v!no,
+ \c!frame=\v!on,
+ \c!topframe=,
+ \c!bottomframe=,
+ \c!leftframe=,
+ \c!rightframe=,
+ \c!radius=.5\bodyfontsize,
+ \c!rulethickness=\linewidth,
+ \c!corner=\v!rectangular,
+ \c!depth=\!!zeropoint,
+ \c!foregroundcolor=,
+ \c!foregroundstyle=,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=,
+ \c!backgroundoffset=\!!zeropoint,
+ \c!framecolor=,
+ \c!frameoffset=\!!zeropoint,
+ \c!component=,
+ \c!align=,
+ \c!bottom=\vss,
+ \c!top=,
+ \c!strut=\v!yes,
+ \c!location=\v!normal,
+ \c!orientation=,
+ \c!setups=]
+
+\setupscreens
+ [\c!factor=1.0,
+ \c!method=\v!external, % \c!method=\v!dot
+ \c!screen=0.95]
+
+\setupblackrules
+ [\c!n=3,
+ \c!width=1em,
+ \c!height=1ex,
+ \c!depth=\!!zeropoint,
+ \c!alternative=\c!a,
+ \c!distance=.25ex,
+ \c!color=]
+
+\setupmarginrules
+ [\c!level=0,
+ \c!rulethickness=\@@kadefaultwidth\linewidth]
+
+\setupthinrules
+ [\c!interlinespace=\v!small,
+ \c!n=3,
+ \c!before=,
+ \c!inbetween={\blank[\v!white]},
+ \c!after=,
+ \c!color=,
+ \c!height=.5\linewidth,
+ \c!depth=.5\linewidth,
+ \c!frame=\v!on, % compatible with textbackgrounds
+ \c!alternative=\v!b,
+ \c!backgroundcolor=,
+ \c!background=,
+ \c!rulethickness=]
+
+\setuptextrules
+ [\c!location=\v!left,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!inbetween=,
+ \c!width=2em,
+ \c!style=\v!bold,
+ \c!color=,
+ \c!rulecolor=,
+ \c!bodyfont=,
+ \c!distance=.5em]
+
+\setupfillinrules
+ [\c!width=\v!broad,
+ \c!distance=1em,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!n=1,
+ \c!interlinespace=\v!small,
+ \c!separator=,
+ \c!style=\v!normal,
+ \c!color=]
+
+\setupfillinlines
+ [\c!width=3cm,
+ \c!margin=\@@ivwidth,
+ \c!distance=1em,
+ \c!before=\blank,
+ \c!after=\blank]
+
+\setupbackground
+ [\c!leftoffset=.5\bodyfontsize,
+ \c!rightoffset=\@@agleftoffset,
+ \c!topoffset=\!!zeropoint,
+ \c!bottomoffset=\@@agtopoffset,
+ \c!state=\v!start,
+ \c!radius=.5\bodyfontsize,
+ \c!corner=\v!rectangular,
+ \c!frame=\v!off,
+ \c!color=,
+ \c!depth=\!!zeropoint,
+ \c!background=\v!screen,
+ \c!backgroundcolor=\@@agcolor,
+ \c!screen=\@@rsscreen,
+ \c!before=,
+ \c!after=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-sec.tex b/Master/texmf-dist/tex/context/base/core-sec.tex
new file mode 100644
index 00000000000..1d91e66e01d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-sec.tex
@@ -0,0 +1,2473 @@
+%D \module
+%D [ file=core-sec,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Sectioning,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% start-stop per section en dan combineren met sectieblok; in dat geval
+% eenvoudiger per-* acties
+
+% nummeren per sectieblok implementeren
+
+% this module needs a clean up, currently some manipulations
+% take place multiple times; also, some clever recursive level
+% thing makes more sense
+
+% in manual (zie prikkels) : tussen=\blanko is enige hook om
+% met kop-in-hoofd een spatiering af te dwingen
+
+\writestatus{loading}{Context Core Macros / Sectioning}
+
+\startmessages dutch library: structures
+ title: structuur
+ 1: begin van sectieblok --
+ 2: eind van sectieblok --
+\stopmessages
+
+\startmessages english library: structures
+ title: structure
+ 1: begin of sectionblock --
+ 2: end of sectionblock --
+\stopmessages
+
+\startmessages german library: structures
+ title: struktur
+ 1: Begin des Abschnittsblock --
+ 2: Ende des Abschnittsblock --
+\stopmessages
+
+\startmessages czech library: structures
+ title: struktury
+ 1: zacatek oddilu (sekce) --
+ 2: konec oddilu (sekce) --
+\stopmessages
+
+\startmessages italian library: structures
+ title: struttura
+ 1: inizio del blocco (sezione) --
+ 2: fine del blocco (sezione) --
+\stopmessages
+
+\startmessages norwegian library: structures
+ title: struktur
+ 1: starten av blokk -- (seksjon)
+ 2: slutten av blokk -- (seksjon)
+\stopmessages
+
+\startmessages romanian library: structures
+ title: structuri
+ 1: inceput de bloc sectiune --
+ 2: sfarsit de bloc sectiune --
+\stopmessages
+
+\unprotect
+
+% from now on, internaly numbers are separated by a period
+% and postprocessed on demand
+
+\def\numberseparator {.} % reasonable default
+\def\sectionseparator{:} % was : but is now -
+
+\def\@@filterfirstpart [#1::#2]{#1}
+\def\@@filtersecondpart [#1::#2]{#2}
+
+\def\@@filterblockpart [#1::#2::#3]{#1}
+\def\@@filternumberpart [#1::#2::#3]{#2}
+\def\@@filterpagepart [#1::#2::#3]{#3}
+\def\@@filterblocknumberpart[#1::#2::#3]{#1::#2}
+
+\def\@@filterheadpart[#1]{\@EA\@@dofilterheadpart\@EA[#1:0]}
+\def\@@filtertailpart[#1]{\@EA\@@dofiltertailpart\@EA[#1:0]}
+
+\def\@@dofilterheadpart[#1:#2]{#1}
+\def\@@dofiltertailpart[#1:#2]{#2}
+
+\def\@@filterlevelpart[#1::#2::#3]{\@@dofilterlevelpart[#2:0:0:0:0]}
+
+\def\@@dofilterlevelpart[#1:0:0:0:#2]{#1}
+
+\def\gobbleuntilrelax#1\relax{}
+
+\def\separatednumber #1{\doseparatednumber #1.\empty\relax}
+\def\removefirstprefix#1{\doremovefirstprefix#1.\empty\relax}
+\def\removeallprefixes#1{\doremoveallprefixes#1.\empty\relax}
+
+\def\doseparatednumber#1.#2%
+ {#1%
+ \ifx#2\empty
+ \@EA\gobbleuntilrelax
+ \else \numberseparator
+ \@EA\doseparatednumber
+ \fi#2}
+
+\def\doremoveallprefixes#1.#2%
+ {\ifx#2\empty
+ #1\@EA\gobbleuntilrelax
+ \else
+ \@EA\doremoveallprefixes
+ \fi#2}
+
+\def\doremovefirstprefix#1.#2%
+ {\ifx#2\empty
+ #1\@EA\gobbleuntilrelax
+ \else
+ \@EA\noremovefirstprefix
+ \fi#2}
+
+\def\noremovefirstprefix#1.\empty\relax
+ {#1}
+
+% we need to expand in order to get something separatable
+
+\def\dohandleheadnumber#1%
+ {\expanded{\separatednumber{#1}}}
+
+\def\dodochecknummer#1#2#3% will become ugly after speed up
+ {\bgroup
+ \doifinstringelse{.0}{.#2}
+ {\doifnot{#3}\v!by
+ {%\debuggerinfo\m!systems{number #1 #3 becomes \getnumbervariable{#1\c!way}}%
+ \setevalue{\@@thenumber{#1}\c!way}{#3}% geen \xdef, gaat mis met \subpage
+ \dochecknummer{#1}}} % tricky and ugly
+ {\doifnotvalue{\@@thenumber{#1}\s!check}{#2}
+ {\setcounter{\@@thenumber{#1}}{0\getvalue{\@@thenumber{#1}\c!start}}%
+ \setxvalue{\@@thenumber{#1}\c!way\c!local}%
+ {\getvalue{\@@thenumber{#1}\c!way}}%
+ \setxvalue{\@@thenumber{#1}\s!check}%
+ {#2}}}%
+ \egroup}
+
+\def\dochecknummer#1%
+ {\edef\currentsection{\csname\??by\csname\@@thenumber{#1}\c!way\endcsname\endcsname}%
+ \ifx\currentsection\empty\else
+ \dodochecknummer
+ {#1}%
+ {\csname\currentsection\c!number\endcsname}%
+ {\v!by\previoussection\currentsection}%
+ \fi}
+
+\def\checknummer#1%
+ {\bgroup
+ %\ifcase\blocklevel\else
+ \ifdoingblocks
+ \doifnotvalue{\@@thenumber{#1}\c!blockway}\v!no\setblockcounters
+ \fi
+ \dochecknummer{#1}%
+ \egroup}
+
+\def\rawsectionnumber#1%
+ {\countervalue{\??se#1}}
+
+\def\domakeprecedingsectionnumber[#1]% will become ugly after speed up
+ {\bgroup % added
+ \globallet\precedingsectionnumber\empty
+ \ifsectienummer
+ \doifvalue{\??sb\@@sectionblock\c!number}\v!yes % added
+ {\doifelsevalue{\@@thenumber{#1}\c!sectionnumber}\v!yes
+ \donetrue\donefalse
+ \doifvalue{\@@thenumber{#1}\c!sectionnumber}\v!number
+ {\donetrue\let\@@sectionconversion\gobbleoneargument}%
+ \ifdone
+ \edef\currentsection
+ {\getvalue{\??by\getvalue{\@@thenumber{#1}\c!way\c!local}}}%
+ \doifnot\currentsection\zerosection
+ {\doifnot{\@@sectionvalue\currentsection}{0}
+ {\xdef\precedingsectionnumber%
+ {\getvalue{\currentsection\c!number}.}}}%
+ \fi}%
+ \fi
+ \egroup}
+
+\def\makeprecedingsectionnumber[#1]%
+ {\bgroup
+ %\ifnum\blocklevel>0
+ %\ifcase\blocklevel\else
+ \ifdoingblocks
+ \doifnotvalue{\@@thenumber{#1}\c!blockway}\v!no\setblockcounters
+ \fi
+ \domakeprecedingsectionnumber[#1]%
+ \egroup}
+
+% \def\makesectionnumber[#1]%
+% {\makeprecedingsectionnumber[#1]%
+% \xdef\hetnummer%
+% {\precedingsectionnumber\convertednumber[#1]}}%
+%
+% hack needed for chinese and oldstyle in normal tex, will change
+
+\def\makesectionnumber[#1]%
+ {\bgroup
+ \forceunexpanded % i don't like this hack
+ \makeprecedingsectionnumber[#1]%
+ \xdef\hetnummer% was \xdef maar dat gaat fout met font switches
+ {\precedingsectionnumber\convertednumber[#1]}%
+ \egroup}
+
+\def\preparethenumber#1#2#3% {\??id#1} \number \result
+ {\doifelsevaluenothing{#1\c!separator}
+ {\let\numberseparator\empty
+ \let#3#2}
+ {% was \unexpanded \edef, but we need it unexpanded !
+ \edef\numberseparator{\getvalue{#1\c!separator}}%
+ \edef#3{\@EA\separatednumber\@EA{#2}}}} % hm, etex
+
+\def\lossenummer[#1]%
+ {\makesectionnumber[#1]%
+ \hetnummer}
+
+\def\currentnumber[#1]% kan tekst hier weg ?
+ {\dotextprefix{\getvalue{\@@thenumber{#1}\c!text}}\lossenummer[#1]}
+
+\def\nextnumber[#1][#2][#3]%
+ {\incrementnumber[#1]%
+ \currentnumber[#1]%
+ \rawreference{#2}{#3}{\hetnummer}}
+
+% sectioning
+
+\newcount\nofsections
+
+\let\zerosection \v!text
+\let\firstsection\empty
+\let\lastsection \empty
+\let\@@sectie \empty
+\let\@@koppeling \empty
+
+\makecounter{\??se\v!text}
+
+\letvalueempty{\??se\v!text\c!before}
+\letvalueempty{\??se\v!text\c!after }
+
+\setvalue {\v!text\c!number}{0}
+\letvalueempty{\v!text\s!format}
+
+\letvalueempty{\??sk\v!text}
+\letvalueempty{\??sk }
+
+\letvalue{\??by }\v!text
+\letvalue{\??by\v!text }\v!text
+\letvalue{\??by\v!all }\v!text
+\letvalue{\??by\v!by }\v!text
+\letvalue{\??by\v!by\v!text }\v!text
+\letvalue{\??by\v!by\v!all }\v!text
+\letvalue{\??by\v!by\v!page}\v!text % see footnotes
+
+%%%%%%%%% old
+
+\def\dosetupsection[#1][#2]%
+ {\getparameters[\??se#1][#2]%
+ \doifelsevalue{\??se#1\c!previousnumber}\v!yes
+ {\setvalue{#1\c!number}{\@@longsectionnumber{#1}}}
+ {\setvalue{#1\c!number}{\@@shortsectionnumber{#1}}}}
+
+\def\setupsection
+ {\dodoubleargument\dosetupsection}
+
+%%%%%%%%% new, multilingual
+
+\def\dosetupsection[#1][#2][#3]%
+ {\ifthirdargument
+ \getparameters[\??se#1#2][#3]%
+ \else
+ \getparameters[\??se#1][#2]%
+ \fi
+ \doifelsevalue{\??se#1\c!previousnumber}\v!yes
+ {\setvalue{#1\c!number}{\@@longsectionnumber {#1}}}
+ {\setvalue{#1\c!number}{\@@shortsectionnumber{#1}}}}
+
+\def\setupsection%
+ {\dotripleempty\dosetupsection}
+
+%%%%%%%%%
+
+\def\docouplemarking[#1][#2]%
+ {\doifdefinedelse{\??ko#2\c!section}
+ {\docouplemarking[#1][\getvalue{\??ko#2\c!section}]}
+ {\def\donexttrackcommando##1%
+ {\edef\coupledmarkings{\getvalue{\??se##1\c!marking}}%
+ \doifelse{##1}{#2}
+ {\addtocommalist{#1}\coupledmarkings}
+ {\removefromcommalist{#1}\coupledmarkings}%
+ \setevalue{\??se##1\c!marking}{\coupledmarkings}%
+ \donexttracklevel{##1}}%
+ \donexttracklevel{\zerosection}}} % \firstsection
+
+\def\couplemarking
+ {\dodoubleargument\docouplemarking}
+
+\def\decouplemarking[#1]%
+ {\couplemarking[#1][]}
+
+\def\definesection[#1]%
+ {\doifundefined{\??se#1}
+ {\doifelsenothing\firstsection
+ {\def\firstsection{#1}%
+ \setevalue{\??se#1\c!before}{\v!text}%
+ \setevalue{\??se\v!text\c!after}{#1}}
+ {\setevalue{\??se\commalistelement\c!after}{#1}%
+ \setevalue{\??se#1\c!before}{\lastsection}%
+ \setevalue{\??se\lastsection\c!after}{#1}}%
+ \advance\nofsections \plusone
+ \setevalue{\??se#1\c!level}{\the\nofsections}%
+ \letvalue{\??se#1\c!after}\empty
+ \setvalue{\e!next#1}{\@@nextsectionnumber{#1}}%
+ \setvalue{#1\c!number}{\@@longsectionnumber{#1}}%
+ \setvalue{#1\s!format}{\@@longformatnumber{#1}}%
+ \setevalue{\??by#1}{#1}%
+ \setevalue{\??by\v!by#1}{#1}%
+ \makecounter{\??se#1}%
+ \edef\lastsection{#1}%
+ \setvalue{\??sk#1}{#1}%
+ \letvalue{\??se#1\c!marking}\empty
+ \setupsection[#1][\c!previousnumber=\v!yes]}}%
+
+\def\previoussection#1{\csname\??se#1\c!before\endcsname}
+\def\nextsection #1{\csname\??se#1\c!after \endcsname}
+
+\def\@@setsectionnumber#1#2%
+ {\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean
+ \setcounter{\??se#1}{#2}%
+ \ifconditional\@@resetsubheadnumbers\resetsectioncounters{#1}\fi
+ \checkpagecounter}
+
+\def\@@nextsectionnumber#1%
+ {\letgvalueempty{\??se#1\s!start}% signal i.p.v. boolean
+ \pluscounter{\??se#1}%
+ \ifconditional\@@resetsubheadnumbers\resetsectioncounters{#1}\fi
+ \checkpagecounter}
+
+\def\@@sectionvalue#1% % nog niet overal doorgevoerd
+ {\countervalue{\??se#1}} % zoeken op \??se
+
+% \def\@@sectionconversion#1%
+% {\getvalue{\??cv\getvalue{\??se#1\@@sectionblock\c!conversion}}}
+
+% suited for chinese too:
+
+% \def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber
+% {\ifnum#2=0 0\else % else troubles with \uchar
+% \@EA\ifx\csname\??se#1\@@sectionblock\c!conversion\endcsname\relax
+% \@EA\ifx\csname\??se#1\c!conversion\endcsname\relax
+% #2%
+% \else
+% \getvalue{\??cv\getvalue{\??se#1\c!conversion}}{#2}%
+% \fi
+% \else
+% \getvalue{\??cv\getvalue{\??se#1\@@sectionblock\c!conversion}}{#2}%
+% \fi
+% \fi}
+
+\def\@@sectionconversion#1#2% a doublure with \@@shortsectionnumber
+ {\ifnum#2=0 0\else % else troubles with \uchar
+ \@EA\ifx\csname\??se#1\@@sectionblock\c!conversion\endcsname\relax
+ \@EA\ifx\csname\??se#1\c!conversion\endcsname\relax
+ #2%
+ \else
+ \convertnumber{\getvalue{\??se#1\c!conversion}}{#2}%
+ \fi
+ \else
+ \convertnumber{\getvalue{\??se#1\@@sectionblock\c!conversion}}{#2}%
+ \fi
+ \fi}
+
+\def\@@sectionlevel#1%
+ {\ifundefined{\??se#1\c!level}0\else\getvalue{\??se#1\c!level}\fi}
+
+% Omdat een markering kan worden herdefinieerd moeten we
+% eerst testen of er wel een keten||afhankelijkheid is.
+
+\def\resetsectionmarks#1%
+ {\ifundefined{\??se#1}%
+ \fastresetmarker[\mainmarking{#1}]% % redundant \mainmarking
+ \else
+ \let\donexttrackcommando\doresetsectionmarks
+ \donexttracklevel{#1}%
+ \fi}
+
+\def\doresetsectionmarks#1%
+ {\ifundefined{\??se#1\c!marking}\else % skip zero level
+ \fastresetmarkerlist[\csname\??se#1\c!marking\endcsname]%
+ \fi
+ \donexttracklevel{#1}}
+
+% I'm not sure if the next one is better:
+%
+% \def\doresetsectionmarks#1%
+% {\ifundefined{\??se#1\c!markering}% skip zero level
+% \donexttracklevel{#1}%
+% \else
+% \fastresetmarkerlist[\csname\??se#1\c!markering\endcsname]%
+% \fi}
+%
+% and indeed, it isn't, actually, it does not work at all, so let's drop it.
+
+% packaged:
+%
+% \def\resetsectioncounters#1%
+% {\def\donexttrackcommando##1%
+% {\resetcounter{\??se##1}%
+% \donexttracklevel{##1}}%
+% \donexttracklevel{#1}}
+%
+% nicer
+%
+% \def\doresetsectioncounters#1%
+% {\resetcounter{\??se#1}%
+% \donexttracklevel{#1}}
+%
+% obey eigennummer
+
+\def\doresetsectioncounters#1%
+ {\resetcounter{\??se#1}%
+ \letgvalue{\??se#1\c!ownnumber}\relax
+ \donexttracklevel{#1}}
+
+\def\resetsectioncounters % #1
+ {\let\donexttrackcommando\doresetsectioncounters
+ \donexttracklevel} % #1
+
+% bij checken kan geen prefix worden bekeken, anders vallen
+% er titels buiten de inhoudsopgave
+
+% evt ook level gaan opslaan tbv snelle selectie
+
+% \def\makesectionformat
+% {\edef\sectionformat
+% {\@@sectiontype\sectionseparator
+% \csname\lastsection\s!format\endcsname}}
+
+\unprotected \def\makesectionformat % we don't want eigennummers here
+ {\pushmacro\@@shortsectionnumber
+ \let\@@shortsectionnumber\@@sectionvalue
+ \edef\sectionformat
+ {\@@sectiontype\sectionseparator
+ \csname\lastsection\s!format\endcsname}%
+ \popmacro\@@shortsectionnumber}
+
+\def\dobacktracklevel#1%
+ {\doifnot{\previoussection{#1}}\zerosection
+ {\dobacktrackcommando{\previoussection{#1}}}}
+
+\def\donexttracklevel#1%
+ {\doifnot{#1}\lastsection
+ {\donexttrackcommando{\nextsection{#1}}}}
+
+\chardef\alltoclevels\zerocount
+
+\let\currentlevel\empty
+
+\def\dosetcurrentlevel#1%
+ {\global\chardef\alltoclevels\zerocount
+ \xdef\currentlevel{\getvalue{\lastsection\s!format}}}
+
+\def\dosetpreviouslevel#1%
+ {\global\chardef\alltoclevels\plusone
+ \globallet\currentlevel\empty
+ \def\dobacktrackcommando##1%
+ {\ifnum\countervalue{\??se##1}>\zerocount
+ \global\chardef\alltoclevels\zerocount
+ \xdef\currentlevel{\getvalue{\previoussection{##1}\s!format}}%
+ \else
+ \dobacktracklevel{##1}%
+ \fi}%
+ \dobacktrackcommando\lastsection}
+
+\def\dosettextlevel#1%
+ {\global\chardef\alltoclevels\plusone
+ \globallet\currentlevel\empty}
+
+\def\dosetotherlevel#1%
+ {\doifdefinedelse{\??ko#1\c!section} % beter alteratief: ook
+ {\edef\@@sectie{\getvalue{\??ko#1\c!section}}} % hoofdstuk\c!format
+ {\edef\@@sectie{#1}}%
+ \doifdefinedelse{\??se\@@sectie}
+ {\global\chardef\alltoclevels\zerocount
+ \xdef\currentlevel{\getvalue{\@@sectie\s!format}}}
+ {\global\chardef\alltoclevels\plusone
+ \globallet\currentlevel\empty
+ \def\dobacktrackcommando##1%
+ {\@EA\ifx\csname\??se##1\c!start\endcsname\relax
+ \dobacktracklevel{##1}%
+ \else
+ \ifnum\countervalue{\??se##1}>\zerocount
+ \global\chardef\alltoclevels\zerocount
+ \xdef\currentlevel{\getvalue{##1\s!format}}%
+ \else
+ \dobacktracklevel{##1}%
+ \fi
+ \fi}%
+ \dobacktrackcommando\lastsection}}
+
+\def\dosetfilterlevel#1#2% beware: this one is \let
+ {\bgroup
+ \edef\askedlevel{#1}%
+ \edef\askedfilter{#2}%
+ \ifx\askedlevel\v!current
+ \dosetcurrentlevel\askedlevel
+ \else\ifx\askedlevel\v!previous
+ \dosetpreviouslevel\askedlevel
+ \else\ifx\askedlevel\v!all
+ \global\chardef\alltoclevels\plusone
+ \else\ifx\askedlevel\v!text
+ \global\chardef\alltoclevels\plusone
+ \else
+ \edef\byaskedlevel{\csname\??by\askedlevel\endcsname}%
+ \ifx\byaskedlevel\v!text
+ \dosettextlevel\askedlevel
+ \else
+ \dosetotherlevel\askedlevel
+ \fi
+ \fi\fi\fi\fi
+ % experiment
+ \ifx\askedfilter\empty \else
+ \xdef\currentlevel{\currentlevel\sectionseparator\askedfilter}%
+ \fi
+ \egroup}
+
+% \def\dontsetfilterlevel#1#2%
+% {\let\currentlevel\somesavedlevel
+% \chardef\alltoclevels\zerocount}
+
+\def\dontsetfilterlevel#1#2%
+ {\let\currentlevel\somesavedlevel
+ \let\@@sectiontype\@@tocsectiontype
+ \chardef\alltoclevels\zerocount}
+
+\def\honorlocalfilterlevel % local lists will be real local
+ {\let\dosetfilterlevel\dontsetfilterlevel}
+
+% cleaner
+%
+% \def\doifnextlevelelse[#1::#2]#3#4%
+% {\ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}
+% {\doifinstringelse{=\currentlevel:0}{=:#2:}{#4}{#3}}
+% {#4}}
+% {#4}%
+% \else
+% #3%
+% \fi}
+%
+% \def\doifprevlevelelse[#1::#2]#3#4%
+% {\ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}{#3}{#4}}
+% {#4}%
+% \else
+% #3%
+% \fi}
+%
+% faster
+%
+% \def\doifnextlevelelse[#1::#2]%
+% {\ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}
+% {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
+% \donefalse}
+% \donefalse
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \def\doifprevlevelelse[#1::#2]%
+% {\ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
+% \donefalse
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% meaner
+%
+% \setuplist
+% [chapter]
+% [after={\startcolumns\placelist[section]\stopcolumns}]
+
+\def\somesavedlevel{0}
+
+% \def\dosavesomelevel[#1:0:0:0:#2]%
+% {\def\somesavedlevel{:#1}}
+
+% \def\doifnextlevelelse[#1::#2]%
+% {\dosavesomelevel[#2:0:0:0:0]%
+% \ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}
+% {\doifinstringelse{=\currentlevel:0}{=:#2:}\donefalse\donetrue}
+% \donefalse}
+% \donefalse
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \def\doifprevlevelelse[#1::#2]%
+% {\dosavesomelevel[#2:0:0:0:0]%
+% \ifcase\alltoclevels
+% \doifelse{\@@sectiontype}{#1}
+% {\doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse}
+% \donefalse
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% again faster:
+
+% \def\doifnextlevelelse[#1::#2]% beware: this one is \let
+% {\dosavesomelevel[#2:0:0:0:0]%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=#1
+% \def\levelstring{=:#2:}%
+% \doifincsnameelse{=\currentlevel:}\levelstring
+% {\doifincsnameelse{=\currentlevel:0}\levelstring\donefalse\donetrue}
+% \donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+%\def\doifprevlevelelse[#1::#2]% beware: this one is \let
+% {\dosavesomelevel[#2:0:0:0:0]%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=#1
+% \doifinstringelse{=\currentlevel:}{=:#2:}\donetrue\donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \let\doiftoclevelelse\doifnextlevelelse
+% \let\doifreglevelelse\doifprevlevelelse
+% \let\doifblklevelelse\doifprevlevelelse
+%
+% we want to be able to overload them globally
+
+% This will be reimplemented some day soon
+%
+% {nn}{xx}{yy}
+%
+% -> \scan{..}{..}{0} met 0 als sentinel
+
+% still not perfect
+%
+% \def\doifnextlevelelse[#1]% !! this one is \let / uti seperator --
+% {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
+% \edef\levelstring{=\sectionseparator\@@filternumberpart[#1]\sectionseparator}%
+% \doifincsnameelse{=\currentlevel\sectionseparator}\levelstring
+% {\doifincsnameelse{=\currentlevel\sectionseparator0}\levelstring
+% \donefalse
+% \donetrue}
+% \donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \def\doifprevlevelelse[#1]% !! this one is \let / uti seperator --
+% {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+% \ifcase\alltoclevels
+% \ifnum\@@sectiontype=\@@filterblockpart[#1]\relax
+% \doifinstringelse
+% {=\currentlevel\sectionseparator}
+% {=\sectionseparator\@@filternumberpart[#1]\sectionseparator}
+% \donetrue\donefalse
+% \else
+% \donefalse
+% \fi
+% \else
+% \donetrue
+% \fi
+% \ifdone
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
+\def\doifnextlevelelse[#1]% !! this one is \let / uti seperator --
+ {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+ \edef\@@tocsectiontype{\@@filterblockpart[#1]}% needed for nested tocs
+ \ifcase\alltoclevels
+ \ifnum\@@sectiontype=\@@tocsectiontype\relax
+ \edef\levelstring{=\sectionseparator\@@filternumberpart[#1]\sectionseparator}%
+ \doifincsnameelse{=\currentlevel\sectionseparator}\levelstring
+ {\doifincsnameelse{=\currentlevel\sectionseparator0}\levelstring
+ \donefalse
+ \donetrue}
+ \donefalse
+ \else
+ \donefalse
+ \fi
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\doifprevlevelelse[#1]% !! this one is \let / uti seperator --
+ {\edef\somesavedlevel{\sectionseparator\@@filterlevelpart[#1]}%
+ \edef\@@tocsectiontype{\@@filterblockpart[#1]}% needed for nested tocs
+ \ifcase\alltoclevels
+ \ifnum\@@sectiontype=\@@tocsectiontype\relax
+ \doifinstringelse
+ {=\currentlevel\sectionseparator}
+ {=\sectionseparator\@@filternumberpart[#1]\sectionseparator}
+ \donetrue\donefalse
+ \else
+ \donefalse
+ \fi
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+% we need to cover the special case of nested lists in section blocks
+%
+% \starttext
+%
+% \def\ChapterEntry#1#2#3%
+% {chapter : \hbox to \hsize{\strut\bf#2\hss#3}\endgraf\placelist[section]}
+%
+% \startfrontmatter % optional
+% \placelist[chapter][alternative=command,command=\ChapterEntry,criterium=text] \page
+% \stopfrontmatter % optional
+%
+% \startbodymatter % optional
+% \chapter{first} \section{one} test \section{two} test \page
+% \chapter{second} \section{alpha} test \section{beta} test \page
+% \stopbodymatter % optional
+%
+% \stoptext
+
+\def\doiftoclevelelse{\doifnextlevelelse}
+\def\doifreglevelelse{\doifprevlevelelse}
+\def\doifblklevelelse{\doifprevlevelelse}
+
+\def\@@longformatnumber#1%
+ {\csname\previoussection{#1}\s!format\endcsname
+ \sectionseparator
+ \@@shortsectionnumber{#1}}
+
+% \def\@@longsectionnumber#1%
+% {\ifnum\countervalue{\??se\previoussection{#1}}>\zerocount
+% \csname\previoussection{#1}\c!nummer\endcsname.%
+% \fi
+% \@@shortsectionnumber{#1}}
+
+\def\@@longsectionnumber#1%
+ {\ifreversesectionnumbers
+ \@@shortsectionnumber{#1}%
+ \ifnum\countervalue{\??se\previoussection{#1}}>\zerocount
+ .\csname\previoussection{#1}\c!number\endcsname
+ \fi
+ \else
+ \ifnum\countervalue{\??se\previoussection{#1}}>\zerocount
+ \csname\previoussection{#1}\c!number\endcsname.%
+ \fi
+ \@@shortsectionnumber{#1}%
+ \fi}
+
+% suited for chinese too:
+%
+% \def\@@shortsectionnumber#1%
+% {\@EA\ifx\csname\??se#1\@@sectionblock\c!conversie\endcsname\relax
+% \@@sectionvalue{#1}%
+% \else
+% \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+% \fi}
+%
+% obey eigennummer
+%
+% \def\@@shortsectionnumber#1%
+% {\@EA\ifx\csname\??se#1\c!eigennummer\endcsname\relax
+% \@EA\ifx\csname\??se#1\@@sectionblock\c!conversie\endcsname\relax
+% \@EA\ifx\csname\??se#1\c!conversie\endcsname\relax
+% \@@sectionvalue{#1}%
+% \else
+% \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+% \fi
+% \else
+% \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+% \fi
+% \else
+% \csname\??se#1\c!eigennummer\endcsname
+% \fi}
+
+\def\@@shortsectionnumber#1%
+ {\@EA\ifx\csname\??se#1\c!ownnumber\endcsname\relax
+ \@EA\ifx\csname\??se#1\@@sectionblock\c!conversion\endcsname\relax
+ \@EA\ifx\csname\??se#1\c!conversion\endcsname\relax
+ \@@sectionvalue{#1}%
+ \else
+ \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+ \fi
+ \else
+ \@@sectionconversion{#1}{\@@sectionvalue{#1}}%
+ \fi
+ \else
+ \csname\??se#1\c!ownnumber\endcsname
+ \fi}
+
+\def\dosetlocalsectionblock#1#2#3% new \edef's
+ {\edef\@@sectiontype {#1}%
+ \edef\@@sectionblock {#2}%
+ \edef\@@sectionblocks{#3}}
+
+% beware, the \resetsectionmarks generates some nodes that
+% will result in an additional last page, which needs to be
+% captured at the end
+
+% \def\doaroundsectionblock#1%
+% {\doifvaluesomething{\??sb#1\c!page}
+% {\ExpandFirstAfter\page[\getvalue{\??sb#1\c!page}]}%
+% \resetsectioncounters\zerosection % was firstsection
+% \resetsectionmarks\zerosection}
+
+% \def\dostartsectionblock#1#2%
+% {\begingroup
+% \doaroundsectionblock{#1}% % going to a new page or so
+% \getvalue{\??sb#1}% % set name of section block
+% \getsectionblockenvironment{#1}% % special settings, grouped
+% %\expandafter\csname#2true\endcsname % obsolete
+% \setsystemmode{#1}% % can be used in conditionals
+% \getvalue{\??sb\@@sectionblock\c!before}% this one is not to be moved!
+% \showmessage\m!structures1\@@sectionblocks}
+
+% \def\dostopsectionblock
+% {\showmessage\m!structures2\@@sectionblocks
+% \getvalue{\??sb\@@sectionblock\c!after}% don't move
+% \doaroundsectionblock\@@sectionblock
+% \endgroup}
+
+\def\doaroundsectionblock
+ {\doifvaluesomething{\??sb\@@sectionblock\c!page}
+ {\page[\getvalue{\??sb\@@sectionblock\c!page}]}%
+ \resetsectioncounters\zerosection % was firstsection
+ \resetsectionmarks\zerosection}
+
+\def\dostartsectionblock#1#2%
+ {\begingroup
+ \getvalue{\??sb#1}%
+ \doaroundsectionblock
+% \doifvaluesomething{\??sb\@@sectionblock\c!page}{\page[\getvalue{\??sb\@@sectionblock\c!page}]}%
+% \resetsectioncounters\zerosection % was firstsection
+% \resetsectionmarks\zerosection
+ \getsectionblockenvironment\@@sectionblock
+ \setsystemmode\@@sectionblock
+ \getvalue{\??sb\@@sectionblock\c!before}%
+ \showmessage\m!structures1\@@sectionblocks}
+
+\def\dostopsectionblock
+ {\showmessage\m!structures2\@@sectionblocks
+ \getvalue{\??sb\@@sectionblock\c!after}% don't move
+ \doaroundsectionblock
+% \doifvaluesomething{\??sb\@@sectionblock\c!page}{\page[\getvalue{\??sb\@@sectionblock\c!page}]}%
+% \resetsectioncounters\zerosection % was firstsection
+% \resetsectionmarks\zerosection
+ \endgroup}
+
+\def\dosetupsectionblock[#1]% [#2]
+ {\getparameters[\??sb#1]}
+
+\def\setupsectionblock
+ {\dodoubleargument\dosetupsectionblock}
+
+\long\def\setsectionblockenvironment#1#2%
+ {\long\setvalue{\??sb\s!do#1}{\do{#2}}}
+
+\def\getsectionblockenvironment#1%
+ {\let\do\firstofoneargument\getvalue{\??sb\s!do#1}}
+
+\setvalue{\e!start\v!sectionblockenvironment}%
+ {\dosingleargument\dostartsectionblockenvironment}
+
+\def\dostartsectionblockenvironment[#1]% evt \pushendofline \popendofline
+ {\long\def\do##1##2{\setsectionblockenvironment{#1}{##1##2}}%
+ \grabuntil{\e!stop\v!sectionblockenvironment}{\getvalue{\??sb\s!do#1}}}
+
+%D \starttyping
+%D \startsectionblockenvironment[frontpart]
+%D \setuppagenumbering[conversion=romannumerals]
+%D \stopsectionblockenvironment
+%D
+%D \startsectionblockenvironment[bodypart]
+%D \setuppagenumber[number=1]
+%D \stopsectionblockenvironment
+%D
+%D \startsectionblockenvironment[frontpart]
+%D \setuppagenumbering[conversion=character]
+%D \stopsectionblockenvironment
+%D
+%D \starttext
+%D \startfrontmatter \chapter{test} \stopfrontmatter
+%D \startbodymatter \chapter{test} \stopbodymatter
+%D \startappendices \chapter{test} \stopappendices
+%D \stoptext
+%D \stoptyping
+
+% We used to use the first char as id, but a counter is
+% better, because in english we get a name clash.
+
+\newcounter\currentsectionblock
+
+\def\currentsection{\@@sectionblock}
+
+\def\dodefinesectionblock[#1][#2][#3]%
+ {\getparameters
+ [\??sb#1]
+ [\c!number=\v!yes,
+ \c!page=\v!right, % anders worden marks te vroeg gereset !
+ %\c!before=,
+ %\c!after=,
+ #3]%
+ \expandafter\newif\csname if#2\endcsname % better a mode
+ \doglobal\increment\currentsectionblock
+ \setsectionblockenvironment{#1}{}%
+ \setevalue{\??sb#1}%
+ {\noexpand\dosetlocalsectionblock{\currentsectionblock}{#1}{#2}}%
+ \setvalue{\e!start#2}%
+ {\dostartsectionblock{#1}{#2}}%
+ \setvalue{\e!stop#2}%
+ {\dostopsectionblock}}
+
+\def\definesectionblock
+ {\dotripleargument\dodefinesectionblock}
+
+\def\sectionblocklabel#1#2%
+ {\@EA\ifx\csname\??ko#1\@@sectionblock\c!label\endcsname\relax
+ \labeltexts{#1}{#2}%
+ \else
+ \labeltexts{\getvalue{\??ko#1\@@sectionblock\c!label}}{#2}%
+ \fi}
+
+\dosetlocalsectionblock{2}{\v!bodypart}{\v!bodymatter} % hm, dirty
+
+\def\setsectiontype[#1]%
+ {\getvalue{\??sb#1}}
+
+\def\writesection#1#2#3% #3 -> \asciititle
+ {\bgroup
+ \edef\!!stringa{#1}%
+ \@EA\writestatus\@EA
+ {\!!stringa}
+ {\ifsectienummer#2\else(#2)\fi\normalspace\asciititle}%
+ \egroup}
+
+\def\@@kolevel{1} \def\headlevel{\@@kolevel}
+
+\def\dohandlepagebreakAA#1%
+ {\ifnum\lastpenalty>0
+ \global\paginageblokkeerdtrue
+ \fi}
+
+\def\dohandlepagebreakAB#1% will be replaced by a more clever (signaling) mechanism (in beta)
+ {\flushsidefloats
+ \getvalue{\??ko#1\c!before}%
+ %\whitespace vervangen door \noindent elders
+ \relax
+ \ifpaginageblokkeerd
+ \global\paginageblokkeerdfalse
+ \else
+ \!!countb\getvalue{\??se\@@sectie\c!level}\relax
+ \ifnum\!!countb>\@@kolevel\relax
+ \!!counta20000
+ \multiply\!!countb 500
+ \advance\!!counta \!!countb
+ \dosomebreak{\penalty\!!counta}%
+ \else
+ \dosomebreak\allowbreak
+ \fi
+ \fi
+ \xdef\@@kolevel{\getvalue{\??se\@@sectie\c!level}}}
+
+\def\dohandlepagebreakBB#1#2#3%
+ {\doifinset{\getvalue{\??tk#2\c!state}}{\v!normal,\v!start}
+ {\doifvaluesomething{\??ko#1#3}
+ {\setuplayouttext[#2][\c!state=\getvalue{\??ko#1#3}]}}}
+
+\def\dohandlepagebreakB#1%
+ {\doifvaluesomething{\??ko#1\c!page}
+ {\def\resetcurrentsectionmarks% toegevoegd, zie \page
+ {\resetsectionmarks{\previoussection\@@sectie}}%
+ \page[\getvalue{\??ko#1\c!page}]%
+ \dohandlepagebreakBB{#1}\v!header\c!header
+ \dohandlepagebreakBB{#1}\v!text \c!text
+ \dohandlepagebreakBB{#1}\v!footer\c!footer}}
+
+\def\dohandlepagebreakX#1% zie doordefinieren / boven
+ {\bgroup
+ \!!countb\@@kolevel
+ \advance\!!countb #1
+ \multiply\!!countb 500
+ \!!counta20000
+ \advance\!!counta \!!countb
+ \dosomebreak{\penalty\!!counta}%
+ \egroup}
+
+\def\handlepagebreak#1%
+ {\dohandlepagebreakAA{#1}%
+ \ifnum\countervalue{\??se\previoussection\@@sectie}>\zerocount\relax
+ \ifnum\countervalue{\??se\@@sectie}>\zerocount
+ \dohandlepagebreakB{#1}%
+ \else
+ \doifnotvalue{\??ko#1\c!continue}\v!yes{\dohandlepagebreakB{#1}}%
+ \fi
+ \else
+ \dohandlepagebreakB{#1}%
+ \fi
+ \dohandlepagebreakAB{#1}}
+
+\def\handlepagebreakC#1%
+ {\xdef\@@kolevel{\getvalue{\??se\@@sectie\c!level}}%
+ \nobreak}
+
+\def\localheadheight {\strutht}
+\def\localheaddepth {\strutdp}
+\def\localheadlineheight{\lineheight}
+
+\def\dolocalheadsetup#1% koppeling met standaard kopcommando / engels
+ {\forgetall % traag dus ...
+ \doifvaluesomething{\??ko#1\c!align} % wordt al expanded in spa
+ {\expanded{\setupalign[\getvalue{\??ko#1\c!align}]}}%
+ \doifvaluesomething{\??ko#1\c!tolerance} % wordt al expanded in spa
+ {\expanded{\setuptolerance[\getvalue{\??ko#1\c!tolerance}]}}%
+ \def\\{\crlf\strut\ignorespaces}}
+
+\def\localkopsetup{\localheadsetup} % kan tzt weg
+
+% todo: make them conditionals:
+
+\newif\ifincrementnumber
+\newif\ifreversesectionnumbers % todo: key/val
+\newif\ifsectienummer \sectienummertrue
+\newif\ifdisplaysectionhead \displaysectionheadtrue
+\newif\ifplacehead
+\newif\ifemptyhead
+\newif\ifwritetolist
+\newif\ifheadnumber
+\newif\ifcontinuoushead
+\newif\ifheadnumbercontent % niet meer wijzigen / wordt mode
+\newif\ifheadprefix
+\newif\ifsomeheadconversion
+
+% new
+
+\newconditional\@@resetsubheadnumbers
+
+\def\setsectieenkoppeling#1%
+ {\edef\@@koppeling{\getvalue{\??ko#1\c!coupling}}%
+ \edef\@@sectie{\getvalue{\??ko#1\c!section}}%
+ \doifnothing\@@koppeling
+ {\edef\@@koppeling{#1}}%
+ \doifnothing\@@sectie
+ {\edef\@@sectie{\getvalue{\??ko\@@koppeling\c!section}}}}
+
+% \handlepagebreak komt het eerst omdat eventueel
+% subpaginanummers moeten worden afgehandeld. Vervolgens
+% worden de nummers opgehoogd en referenties geset, dan
+% volgt de kop en tot slot de worden de marks en de prefix
+% geset.
+
+% \hoofdstuk {tekst}
+% \hoofdstuk tekst
+% \hoofdstuk <niets>
+
+\let\finalsectionnumber\empty
+
+\def\dofinalsectionnumber
+ {\ifundefined{\@@sectie\c!number}\else
+ \ifsomeheadconversion
+ \@@shortsectionnumber\@@sectie
+ \else
+ \getvalue{\@@sectie\c!number}%
+ \fi
+ \fi}
+
+\def\findsectionnumber#1#2#3% class file title / uti seperator --
+ {\begingroup
+ \setsectieenkoppeling{#1}%
+ \xdef\foundsectionnumber{1}%
+ \def\dolistelement##1##2##3##4##5##6%
+ {\doif{##1}{#1}
+ {\ConvertConstantAfter\doif{##4}{#3}
+ {\global\utilitydonetrue
+ \scratchcounter=0\getvalue{\??se\@@sectie\c!level}%
+ %
+ %\advance\scratchcounter 2
+ %\@EA\def\@EA\do\@EA####\@EA1\sectionseparator####2]%
+ % {\advance\scratchcounter -1
+ % \ifcase\scratchcounter
+ % \xdef\foundsectionnumber{####1}%
+ % \else
+ % \do####2]%
+ % \fi}%
+ %\do##5]}}}%
+ %
+ \def\do####1\relax % :/- clean
+ {\advance\scratchcounter \minusone
+ \ifcase\scratchcounter
+ \xdef\foundsectionnumber{\@@filterheadpart[####1]}%
+ \else
+ \@EAEAEA\do\@@filtertailpart[####1]\relax
+ \fi}%
+ \@EA\do\@@filternumberpart[##5]\relax}}}%
+ \setbox0\vbox
+ {\doutilities{#1}{#2}{#1}\relax\relax}%
+ \endgroup
+ \doifnumberelse\foundsectionnumber
+ {\doif\foundsectionnumber\!!zerocount
+ {\globallet\foundsectionnumber\!!plusone}}
+ {\globallet\foundsectionnumber\!!plusone}% an appendix or so
+ \setupheadnumber[#1][\foundsectionnumber]%
+ \setupheadnumber[#1][-1]}
+
+% \def\setsomeheadconversion#1#2%
+% {\someheadconversionfalse
+% \doifelsevalue{\??ko#1\c!eigennummer}\v!ja
+% {\def\someheadconversion{#2}}
+% {\bepaalkopnummer[#1]%
+% \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!kopconversie\endcsname\relax
+% \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\relax
+% \def\someheadconversion{#2}%
+% \else
+% \@EA\ifx\csname\??se\@@sectie\c!kopconversie\endcsname\empty
+% \def\someheadconversion{#2}%
+% \else
+% \someheadconversiontrue
+% \def\someheadconversion%
+% {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\c!kopconversie}}{#2}}%
+% \fi
+% \fi
+% \else
+% \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!kopconversie\endcsname\empty
+% \def\someheadconversion{#2}%
+% \else
+% \someheadconversiontrue
+% \def\someheadconversion%
+% {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\@@sectionblock\c!kopconversie}}{#2}}%
+% \fi
+% \fi}}
+%
+% deal with eigennummer
+
+\def\setsomeheadconversion#1#2%
+ {\someheadconversionfalse
+ \doifelsevalue{\??ko#1\c!ownnumber}\v!yes
+ {\setgvalue{\??se\@@sectie\c!ownnumber}{#2}%
+ \def\someheadconversion{#2}}
+ {\letgvalue{\??se\@@sectie\c!ownnumber}\relax
+ \determineheadnumber[#1]%
+ \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!headconversion\endcsname\relax
+ \@EA\ifx\csname\??se\@@sectie\c!headconversion\endcsname\relax
+ \def\someheadconversion{#2}%
+ \else
+ \@EA\ifx\csname\??se\@@sectie\c!headconversion\endcsname\empty
+ \def\someheadconversion{#2}%
+ \else
+ \someheadconversiontrue
+ \def\someheadconversion%
+ {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\c!headconversion}}{#2}}%
+ \fi
+ \fi
+ \else
+ \@EA\ifx\csname\??se\@@sectie\@@sectionblock\c!headconversion\endcsname\empty
+ \def\someheadconversion{#2}%
+ \else
+ \someheadconversiontrue
+ \def\someheadconversion%
+ {\fullsectionnumber{#1}{\getvalue{\??se\@@sectie\@@sectionblock\c!headconversion}}{#2}}%
+ \fi
+ \fi}}
+
+ \def \writtenfullsectionnumber {\string\fullsectionnumber}
+ \def \ignoredfullsectionnumber#1#2#3{#3}
+ \let \storedfullsectionnumber \relax
+% \def\expandablefullsectionnumber#1#2#3{#3}
+%\unexpanded\def \naturalfullsectionnumber#1#2#3{\sectionblocklabel{#1}{\getvalue{\??cv#2}{#3}}}
+%\unexpanded\def \limitedfullsectionnumber#1#2#3{\getvalue{\??cv#2}{#3}}
+
+% under test:
+%
+% \def\expandablefullsectionnumber#1#2#3{\getvalue{\??cv#2}{#3}}
+
+\def\expandablefullsectionnumber#1#2#3%
+ {\convertnumber{#2}{#3}}
+
+\unexpanded\def\naturalfullsectionnumber#1#2#3%
+ {\sectionblocklabel{#1}{\convertnumber{#2}{#3}}}
+
+\unexpanded\def\limitedfullsectionnumber#1#2#3%
+ {\convertnumber{#2}{#3}}
+
+\def\setfullsectionnumber#1%
+ {\doifelsevalue{#1\c!headconversion}\v!yes
+ {\doifelsevalue{#1\c!headlabel}\v!yes
+ {\let\fullsectionnumber\naturalfullsectionnumber}
+ {\let\fullsectionnumber\limitedfullsectionnumber}}
+ {\let\fullsectionnumber\ignoredfullsectionnumber}}
+
+\let\fullsectionnumber\limitedfullsectionnumber
+
+% \dodododosomekop IS NON GROUPED, SO WE NEED TO RESTORE !!!!
+%
+% dit kan dus beter \everyaroundhead zijn
+
+\let\currentheadnumber\empty
+\let\currentheadtext \empty
+
+\def\dodosomekop#1[#2]#3% [ref] {title}
+ {\doifelsevalue{\??ko#1\c!ownnumber}\v!yes
+ {\doquadruplegroupempty\dododosomekop{#1}{#2}{#3}}
+ {\fourthargumentfalse \dododosomekop{#1}{#2}{#3}{}}}
+
+\def\dododosomekop#1#2#3#4% [ref] {own} {title}
+ {\iffourthargument
+ \def\next{\dodododosomekop{#1}[#2]{#3}{#4}}%
+ \else
+ \def\next{\dodododosomekop{#1}[#2]{\finalsectionnumber}{#3}}%
+ \fi
+ \next}
+
+% pas met \ExpandFirstAfter op bij twee||taligheid
+
+\ifx\dohandleheadnumber\undefined
+ \let\dohandleheadnumber\firstofoneargument
+\fi
+
+\unexpanded\def\\{\space}
+
+\def\emptyheadcorrection % experimental, should work
+ {\ifemptyhead % well with na=\blank
+ \vskip-\lineheight
+ \dosomebreak\nobreak
+ \kern\zeropoint
+ \prevdepth\strutdepth
+ \fi}
+
+\let\localkopprefix\empty
+
+% \def\headparameter#1% to do: everywhere in core-sec
+% {\csname\??ko\currenthead#1\endcsname}
+
+\def\dodododosomekop#1[#2]#3#4% [ref] {number} {title}
+ {\def\currenthead{#1}% dus #1 overal vervangen
+ \let\finalsectionnumber\dofinalsectionnumber % overloaded ungrouped -)
+ \unexpanded\def\\{\space}%
+ \def\numberseparator{\getvalue{\??ko\currenthead\c!separator}}%
+ \flushingcolumnfloatsfalse % {number} can be \finalsectionnumber
+ \someheadconversionfalse
+ \let\fullsectionnumber\limitedfullsectionnumber
+ \setsectieenkoppeling{#1}%
+ \doifelsevaluenothing{\??ko#1\c!prefix}
+ \headprefixfalse\headprefixtrue
+ \ifheadprefix
+ \doifelsevalue{\??ko#1\c!prefix}{+}
+ {\doifelsenothing{#2}
+ {\def\localkopprefix{+}}
+ {\def\localkopprefix{#2}}} % eigenlijk alleen eerste
+ {\edef\localkoprefix{\getvalue{\??ko#1\c!prefix}}}%
+ \else
+ \let\localkoprefix\empty
+ \fi
+ \placeheadtrue
+ \processaction
+ [\getvalue{\??ko#1\c!placehead}]
+ [ \v!yes=>\emptyheadfalse,
+ \v!empty=>\emptyheadtrue,
+ \v!no=>\emptyheadtrue\placeheadfalse]%
+ \doifelsevalue{\??ko#1\c!resetnumber}\v!no
+ {\setfalse\@@resetsubheadnumbers}%
+ {\settrue \@@resetsubheadnumbers}%
+ \writetolistfalse
+ \processaction
+ [\getvalue{\??ko#1\c!incrementnumber}]
+ [ \v!yes=>\incrementnumbertrue,
+ \v!no=>\incrementnumberfalse,
+ \v!list=>\incrementnumberfalse
+ % beware, since no numbers are used, no nested lists are
+ % possible here
+ \writetolisttrue,
+ \s!unknown=>{\ifx\currentproduct\empty
+ \findsectionnumber{#1}\commalistelement{#4}%
+ \fi
+ \incrementnumbertrue}]%
+ \edef\numberheaddistance {\getvalue{\??ko#1\c!distance}}%
+ \edef\numberheadalternative{\getvalue{\??ko#1\c!alternative}}%
+ \doifelsevalue{\??ko:\numberheadalternative}\v!horizontal
+ \displaysectionheadfalse
+ \displaysectionheadtrue
+ \ifsectienummer
+ \doifelsevalue{\??sb\@@sectionblock\c!number}\v!yes
+ {\doifelsevalue{\??ko#1\c!number}\v!yes
+ \headnumbertrue
+ \headnumberfalse}
+ {\headnumberfalse}%
+ \else
+ \headnumberfalse
+ \fi
+ \convertexpanded{\getvalue{\??ko#1\c!expansion}}{#4}\asciititle
+ %
+ \gdef\currentheadtext{#4}% scheelt args
+ \globallet\currentheadnumber\empty
+ %
+ \ifincrementnumber
+ \ifplacehead
+ \checknexthead\handlepagebreak{#1}%
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \ifheadprefix
+ %\setupreferencing[\c!prefix=-]%
+ \setupreferenceprefix[-]%
+ \fi
+ \getvalue{\e!next\@@sectie}%
+ \ifheadnumber
+ \setsomeheadconversion{#1}{#3}%
+ \let\fullsectionnumber\expandablefullsectionnumber
+ \xdef\currentheadnumber{\someheadconversion}%
+ \getvalue{\??ko#1\c!inbetween}%
+ \ifsomeheadconversion
+ \let\fullsectionnumber\naturalfullsectionnumber
+ \doplaceheadnumbertext
+ {#1}
+ {\setsectionlistreference{\@@sectie}{#1}%
+ \pagetype[\@@koppeling]%
+ \let\fullsectionnumber\writtenfullsectionnumber
+ \rawreference\s!sec{#2}{{\someheadconversion}{\asciititle}}%
+ \resetsectionmarks\@@sectie
+ \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}%
+ \let\fullsectionnumber\writtenfullsectionnumber
+ \dowritetolist\@@koppeling\someheadconversion{#4}\v!head}%
+ {\dohandleheadnumber\someheadconversion}% handle is new
+ {#4}
+ {\marking[#1]{#4}%
+ \let\fullsectionnumber\storedfullsectionnumber
+ \expanded{\marking[#1\v!number]{\someheadconversion}}}%
+ \let\fullsectionnumber\ignoredfullsectionnumber
+ \writesection{#1}{\someheadconversion}{#4}%
+ \else
+ \doplaceheadnumbertext
+ {#1}
+ {\setsectionlistreference{\@@sectie}{#1}%
+ \pagetype[\@@koppeling]%
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}%
+ \resetsectionmarks\@@sectie
+ \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}%
+ \dowritetolist\@@koppeling{#3}{#4}\v!head}
+ {\sectionblocklabel{#1}{\dohandleheadnumber{#3}}}% handle is new
+ {#4}
+ {\marking[#1]{#4}%
+ \doifelsevalue{\??ko#1\c!ownnumber}\v!yes % rommelig omdat
+ {\edef\finalsectionnumber{#3}} % #3 al is toegekend
+ {\determineheadnumber[#1]}% migreert naar 3e argument
+ \expanded{\marking[#1\v!number]{\finalsectionnumber}}}%
+ \writesection{#1}{#3}{#4}%
+ \fi
+ \else
+ \getvalue{\??ko#1\c!inbetween}%
+ \doplaceheadtext
+ {#1}
+ {\setsectionlistreference{\@@sectie}{#1}%
+ \pagetype[\@@koppeling]%
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}%
+ \resetsectionmarks\@@sectie
+ \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}%
+\doifelsevalue{\??ko#1\c!ownnumber}\v!yes % brrr, new per 18/1/2005, sometimes we need
+ {\dowritetolist\@@koppeling{#3}{#4}\v!head} % entries in the list (special purpose) but
+ {\dowritetolist\@@koppeling {}{#4}\v!head}% not in the header, ok we could pop in a command
+}% \dowritetolist\@@koppeling{}{#4}\v!head}
+ {#4}
+ {\marking[#1]{#4}%
+ \doifelsevalue{\??ko#1\c!ownnumber}\v!yes % brrr
+ {\edef\finalsectionnumber{#3}}
+ {\determineheadnumber[#1]}%
+% todo : geen markering (leeg maken)
+ \expanded{\marking[#1\v!number]{\finalsectionnumber}}}%
+ \writesection{#1}{-}{#4}%
+ \fi
+ \ifheadprefix
+ \setupreferenceprefix[\localkopprefix]%
+ \fi
+ \ifdisplaysectionhead
+ \dosomebreak\nobreak
+ \emptyheadcorrection
+ \getvalue{\??ko#1\c!after}%
+ \fi
+ \else
+ % Whatever future tex's will do with nodes,
+ % we assume a node here, because other \c!after=\blank
+ % will fail! See 'prikkels'
+ %
+ % so, maybe we need an explicit \kern
+ %
+ % do nothing / should be vbox to 0pt
+ %
+ \checknexthead\dohandlepagebreakB{#1}% toegevoegd ivm subpaginanr / tug sheets
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \ifheadprefix
+ \setupreferenceprefix[-]%
+ \fi
+ \getvalue{\e!next\@@sectie}%
+ \ifheadnumber
+ \setsomeheadconversion{#1}{#3}%
+ \let\fullsectionnumber\expandablefullsectionnumber
+ \xdef\currentheadnumber{\someheadconversion}%
+ \fi
+ \getvalue{\??ko#1\c!inbetween}% documenteren, is enige hook
+ \bgroup
+ \setsectionlistreference{\@@sectie}{#1}%
+ \resetsectionmarks\@@sectie
+ \marking[#1]{#4}%
+ \doifelsevalue{\??ko#1\c!ownnumber}\v!yes
+ {\edef\finalsectionnumber{#3}}
+ {\determineheadnumber[#1]}%
+ \expanded{\marking[#1\v!number]{\finalsectionnumber}}%
+ \pagetype[\@@koppeling]%
+% \bgroup
+ \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}%
+ \ifheadnumber
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}%
+ \dowritetolist\@@koppeling{#3}{#4}\v!head
+ \writesection{#1}{#3}{#4}%
+ \else % hm, also no own number
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}%
+ \dowritetolist\@@koppeling{}{#4}\v!head
+ \writesection{#1}{-}{#4}%
+ \fi
+ \egroup
+ \ifheadprefix
+ \setupreferenceprefix[\localkopprefix]%
+ \fi
+ \fi
+ \else
+ % todo : ref prefix
+ \ifplacehead
+ \checknexthead\handlepagebreak{#1}%
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \getvalue{\??ko#1\c!inbetween}%
+ \doplaceheadtext
+ {#1}
+ {\forcesectiontolist{#1}{#4}%
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}} % #3 ?
+ {#4}
+ %{}% new:
+ {\marking[#1]{#4}%
+ \marking[#1\v!number]{}}%
+ \writesection{#1}{-}{#4}%
+ \ifdisplaysectionhead
+ \dosomebreak\nobreak
+ \emptyheadcorrection
+ \getvalue{\??ko#1\c!after}%
+ \fi
+ \else
+ % do nothing / should be vbox to 0pt
+ \checknexthead\handlepagebreak{#1}%
+ \setsectieenkoppeling{#1}% can be changed when [voor=\somehead{..}...]
+ \getvalue{\??ko#1\c!inbetween}%
+ \forcesectiontolist{#1}{#4}%
+ \rawreference\s!sec{#2}{{#3}{\asciititle}}% #3 ?
+ \marking[#1]{#4}%
+ \marking[#1\v!number]{}%
+ \writesection{#1}{-}{#4}%
+ \fi
+ \fi
+ \flushingcolumnfloatstrue
+ \someheadconversionfalse
+ \let\fullsectionnumber\limitedfullsectionnumber
+ \ifdisplaysectionhead\else\expandafter\GotoPar\fi}
+
+\def\forcesectiontolist#1#2%
+ {\ifwritetolist
+ % we need to make sure that there is a number set (non
+ % zero) else the list mechanism cannot determine the
+ % level
+ \bgroup
+ \setupheadnumber[#1][+1]% traag, wordt \getvalue{\c!next...}
+ \setlistparameter\@@koppeling\c!expansion{\getvalue{\??ko#1\c!expansion}}%
+ \dowritetolist\@@koppeling{}{#2}\v!head
+ \setupheadnumber[#1][-1]% traag, wordt \getvalue{\c!previous...}
+ \egroup
+ \fi}
+
+\let\previoussectionformat\empty
+\let\currentsectionformat \empty
+
+\let\updatelistreferences \relax
+\let\updatedlistreferences\empty
+
+\def\setsectionlistreference#1#2%
+ {\ifnum\countervalue{\??se\previoussection{#1}}>0\relax
+ \xdef\previoussectionformat{\@@longformatnumber{\previoussection{#1}}}%
+ \else
+ \globallet\previoussectionformat\empty
+ \fi
+ \xdef\currentsectionformat{\@@longformatnumber{#1}}}
+
+\def\startlistreferences#1%
+ {\thisissomeinternal{\s!lst}{#1\currentsectionformat}%
+ \setxvalue{\s!lst:#1}{\realfolio}% to be sure
+ \setxvalue{\s!lst:#1\currentsectionformat}{\realfolio}%
+ \setxvalue{\e!previouslocal#1}{\s!lst:#1\previoussectionformat}%
+ \setxvalue{\e!currentlocal#1}{\s!lst:#1\currentsectionformat}%
+ \doifelse{\currentsectionformat}{}
+ {\setglobalcrossreference
+ {\e!previous#1}{}{\realfolio}{}}
+%
+ {\setglobalsystemreference\rt!list
+ {\e!previous#1}{\getvalue{\e!previouslocal#1}}}%
+%
+% {\definereference[\e!previous#1][\getvalue{\e!previouslocal#1}]%
+%
+ \def\stoplistreferences{\dostoplistreferences}}
+
+\def\dostoplistreferences#1%
+ {\ifutilitydone
+ \addtocommalist{#1}\updatedlistreferences % nog global (\doglobal)
+ \globallet\updatedlistreferences\updatedlistreferences % een noodverbandje
+ \gdef\updatelistreferences%
+ {\def\docommando####1%
+%
+ {\setglobalsystemreference\rt!list
+ {\e!previous####1}{\getvalue{\e!currentlocal####1}}}%
+%
+% {\definereference[\e!previous####1][\getvalue{\e!currentlocal####1}]%
+%
+ \processcommacommand[\updatedlistreferences]\docommando
+ \globallet\updatelistreferences\relax
+ \globallet\updatedlistreferences\empty}%
+ \fi}
+
+\def\stoplistreferences%
+ {\gobbleoneargument}
+
+% \prevdepth\strutdp % is belangrijk, vergelijk naast elkaar:
+%
+% \subject{test} \input tufte
+% \subject{test} \strut \input tufte
+% \subject{test} \placelist[...]
+
+% todo: kap
+
+% to be documented: \placeheadtext \placeheadnumber
+
+\unexpanded\def\placeheadtext
+ {\doquintupleempty\doplaceheadtextornumber
+ [\c!textstyle][\c!textcolor][\empty]}
+
+\unexpanded\def\placeheadnumber
+ {\doquintupleempty\doplaceheadtextornumber
+ [\c!numberstyle][\c!numbercolor][\v!number]}
+
+\def\doplaceheadtextornumber[#1][#2][#3][#4][#5]%
+ {\bgroup
+ \edef\@@sectie{\??ko\iffifthargument#5\else#4\fi}%
+ \dostartattributes\@@sectie\c!style\c!color\empty
+ \dontconvertfont
+ \dostartattributes\@@sectie{#1}{#2}\empty
+ \setupinterlinespace
+ \begstrut\getmarking[\mainmarking{#4#3}]\endstrut
+ \endgraf
+ \dostopattributes
+ \dostopattributes
+ \egroup}
+
+\chardef\headtimingmode=0
+
+% \chardef\headtimingmode=1
+%
+% Martin Kolarik's problem:
+%
+% \setuphead[section][command=\doTitle]
+%
+% \def\doTitle#1#2%
+% {\ruledvbox{\forgetall \hsize=4cm
+% \ruledhbox{\ruledvtop{#1}\ruledvtop{#2}}}}
+%
+% \section{test test test test test test test test test test
+% test test test test test test test}
+
+\newevery \everyheadstart \relax
+
+\def\placeheadmargintexts#1%
+ {\the\everyheadstart
+ \doifvalue{\??ko#1\c!margintext}\v!yes\placemargincontent}
+
+\def\doplaceheadtext#1#2#3#4%
+ {\beginheadplacement{#1}%
+ \ifemptyhead % = needed
+ \setbox0=\ifvertical\vbox\else\hbox\fi to \zeropoint
+ {\headnumbercontentfalse
+ \resetsystemmode\v!sectionnumber
+ #2}%
+ \makestrutofbox0
+ \else % = needed
+ \setbox0=\ifvertical\vbox\else\hbox\fi % \vhbox
+ {\headnumbercontentfalse
+ \resetsystemmode\v!sectionnumber
+ % less interfering
+ \ifcase\headtimingmode\or#2\fi
+ % outerside font determines distance
+ \dosetfontattribute{\??ko#1}\c!style
+ % but we don't want color to influence user commands
+% todo: get the if-else out of it
+ \getvalue{\??ko#1\c!command}
+ {} % no number
+ {\dostartattributes{\??ko#1}\c!style\c!color\empty
+ \dostartattributes{\??ko#1}\c!textstyle\c!textcolor\empty
+ \dontconvertfont
+ \ifdisplaysectionhead
+ \setupinterlinespace
+ \else
+ \setupspacing
+ \fi
+% overwegen \dontleavehmode, else unwanted cr due to #2
+ \ifcase\headtimingmode#2\fi
+ \getvalue{\??ko#1\c!commandbefore}%
+ \placeheadmargintexts{#1}% binnen #3?
+ \ifdisplaysectionhead
+ \getvalue{\??ko#1\c!textcommand}%
+ {\setstrut\begstrut#3\endstrut}% can be nilled with \setnostrut
+ \xdef\localheadheight {\the\strutht}%
+ \xdef\localheaddepth {\the\strutdp}%
+ \xdef\localheadlineheight{\the\lineheight}%
+ % == \globallet\localheaddepth\strutdepth
+ \else
+ \getvalue{\??ko#1\c!textcommand}{#3}%
+ \fi
+ \getvalue{\??ko#1\c!commandafter}%
+ \ifdisplaysectionhead\endgraf\fi
+ \dostopattributes
+ \dostopattributes}}%
+ \fi
+ \endheadplacement{#1}{#4}}
+
+\def\doplaceheadnumbertext#1#2#3#4#5% maybe move modes outside box
+ {\beginheadplacement{#1}%
+ \ifemptyhead % = needed
+ \setbox0=\ifvertical\vbox\else\hbox\fi to \zeropoint
+ {\doiftextelse{#3}
+ {\setsystemmode \v!sectionnumber\headnumbercontenttrue }
+ {\resetsystemmode\v!sectionnumber\headnumbercontentfalse}%
+ #2}%
+ \makestrutofbox0
+ \else % = needed
+ \setbox0=\ifvertical\vbox\else\hbox\fi % \vhbox
+ {\doiftextelse{#3}
+ {\setsystemmode \v!sectionnumber\headnumbercontenttrue }
+ {\resetsystemmode\v!sectionnumber\headnumbercontentfalse}%
+ % less interfering
+ \ifcase\headtimingmode\or#2\fi
+ % outerside font determines distance
+ \dosetfontattribute{\??ko#1}\c!style
+ % but we don't want color to influence user commands
+ \getvalue{\??ko#1\c!command}%
+ {\dostartattributes{\??ko#1}\c!style\c!color\empty
+ \dostartattributes{\??ko#1}\c!numberstyle\c!numbercolor\empty
+ \getvalue{\??ko#1\c!commandbefore}%
+ \placeheadmargintexts{#1}% binnen #3?
+ \ifdisplaysectionhead
+ \getvalue{\??ko#1\c!numbercommand}%
+ {\setstrut\begstrut#3\endstrut}% can be nilled with \setnostrut
+ \else
+ \getvalue{\??ko#1\c!numbercommand}{#3}%
+ \fi
+ \dostopattributes
+ \dostopattributes}
+ {\dostartattributes{\??ko#1}\c!style\c!color\empty
+ \dostartattributes{\??ko#1}\c!textstyle\c!textcolor\empty
+ \dontconvertfont
+ \ifdisplaysectionhead
+ \setupinterlinespace
+ \else
+ \setupspacing
+ \fi
+% overwegen \dontleavehmode, else unwanted cr due to #2
+ \ifcase\headtimingmode#2\fi
+ \placeheadmargintexts{#1}% binnen #3?
+ \ifdisplaysectionhead
+ \getvalue{\??ko#1\c!textcommand}%
+ {\setstrut\begstrut#4\endstrut}% can be nilled with \setnostrut
+ \xdef\localheadheight {\the\strutht}%
+ \xdef\localheaddepth {\the\strutdp}%
+ \xdef\localheadlineheight{\the\lineheight}%
+ % == \globallet\localheaddepth\strutdepth
+ \else
+ \getvalue{\??ko#1\c!textcommand}{#4}%
+ \fi
+ \getvalue{\??ko#1\c!commandafter}%
+ \ifdisplaysectionhead\endgraf\fi
+ \dostopattributes
+ \dostopattributes}}%
+ \fi
+ \endheadplacement{#1}{#5}}
+
+\newsignal\headsignal
+\let\headlastlinewidth\!!zeropoint
+
+\def\beginheadplacement#1%
+ {\bgroup
+ \setsystemmode{#1}% to be documented
+ \ifgridsnapping\iftracegridsnapping\showstruts\fi\fi
+ \xdef\localheadheight {\the\strutht}%
+ \xdef\localheaddepth {\the\strutdp}%
+ \xdef\localheadlineheight{\the\lineheight}%
+ % == \globallet\localheaddepth\strutdp
+ \everypar\emptytoks % needed indeed
+ \noindent % ipv \whitespace elders, na \forgetall !
+ \bgroup
+ \doifelsevalue{\??ko#1\c!aligntitle}\v!yes % new
+ {\skip0 1\leftskip
+ \skip2 1\rightskip
+ \xdef\localheadskip{\the\skip0}%
+ \forgetall
+ \leftskip\skip0
+ \rightskip\skip2
+ \setlocalhsize\hsize\localhsize
+ \forgetbothskips}
+ {\globallet\localheadskip\!!zeropoint
+ \forgetall}%
+ \dontcomplain
+ \postponefootnotes
+ \iflocation\ifdisplaysectionhead\else\noninterferingmarks\fi\fi
+ \resetinteractionparameter\c!style
+ \resetinteractionparameter\c!color
+ \resetinteractionparameter\c!contrastcolor
+ \strictouterreferencestrue % tzt instelling
+ \def\localheadsetup{\dolocalheadsetup{#1}}%
+ \startsynchronization}
+
+% \def\endheadplacement#1#2%
+% {\doifelsevalue{\??rf#1\c!state}\v!start
+% {\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}}
+% {\autocrossdocumentfalse}%
+% % no message needed here, should be a proper switch
+% % \let\unknownreference\gobbleoneargument
+% \ifdisplaysectionhead
+% \let\headlastlinewidth\!!zeropoint
+% \snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox
+% {\hskip\localheadskip
+% \hskip\getvalue{\??ko#1\c!margin}\relax
+% \iflocation
+% \ifautocrossdocument
+% \doifreferencefoundelse{\getvalue{\??ko#1\c!file}::#1}
+% {\edef\currentinnerreference{\s!aut:\currenttextreference}% stored in
+% \gotoouterlocation{}{\box0}} % text slot
+% {\hbox{\box0}}%
+% \else
+% \hbox{\box0}%
+% \fi
+% \else
+% \hbox{\box0}%
+% \fi}%
+% \doflushnotes % new, not really needed
+% \endgraf
+% \nointerlineskip
+% \dosomebreak\nobreak
+% #2%
+% \else
+% \strut
+% \doflushnotes % new, here since we're in par mode
+% \iflocation
+% \ifautocrossdocument
+% \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\zeropoint\fi
+% \unhhbox0\with{\gotobox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}%
+% \advance\lasthhboxwidth by \numberheaddistance
+% \xdef\headlastlinewidth{\the\lasthhboxwidth}%
+% \else
+% \unhbox0
+% \globallet\headlastlinewidth\!!zeropoint
+% \fi
+% \else
+% \unhbox0
+% \globallet\headlastlinewidth\!!zeropoint
+% \fi
+% #2%
+% \dimen0=\numberheaddistance
+% \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0
+% \hskip\headsignal\ignorespaces
+% \fi
+% \ifdisplaysectionhead \ifvmode
+% \ifgridsnapping % important, font related depth, see comment
+% \prevdepth\strutdp
+% \else
+% \prevdepth\localheaddepth
+% \fi
+% \fi \fi
+% \stopsynchronization
+% \egroup
+% \egroup
+% \ifdisplaysectionhead
+% \dochecknextindentation{\??ko#1}%
+% \else
+% \nonoindentation % recently added, was a bug
+% \fi}
+
+% \setuphead[chapter] [style=\bfd,after=,hang=line] % fit broad 2
+% \setuphead[section] [style=\bfc,after=,hang=line]
+% \setuphead[subsection] [style=\bfb,after=,hang=line]
+% \setuphead[subsubsection] [style=\bfa,after=,hang=line]
+% \setuphead[subsubsubsection][style=\bf ,after=,hang=line]
+%
+% \chapter {Test} \input tufte \page
+% \section {Test} \input tufte \page
+% \subsection {Test} \input tufte \page
+% \subsubsection {Test} \input tufte \page
+% \subsubsubsection{Test} \input tufte \page
+%
+% \chapter {Test\\Test} \input tufte \page
+% \section {Test\\Test} \input tufte \page
+% \subsection {Test\\Test} \input tufte \page
+% \subsubsection {Test\\Test} \input tufte \page
+% \subsubsubsection{Test\\Test} \input tufte \page
+
+\def\hangheadplacement
+ {\scratchdimen\localheadlineheight
+ \bgroup
+ \openlineheight\scratchdimen
+ \scratchdimen\ht0
+ \advance\scratchdimen\dp0
+ \getnoflines\scratchdimen
+ \advance\noflines\minusone
+ \expanded{\egroup\noflines\the\noflines}% brrr
+ \setbox0\hbox{\lower\noflines\scratchdimen\box0}%
+ \scratchdimen\ht0
+ \advance\scratchdimen\dp0
+ \advance\scratchdimen-\localheadheight
+ \advance\scratchdimen+\strutdp
+ \ht0 \strutht
+ \dp0 \strutdp
+ \edef\localheaddepth{\the\strutdp}}
+
+\def\endheadplacement#1#2%
+ {\doifelsevalue{\??rf#1\c!state}\v!start
+ {\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}}
+ {\autocrossdocumentfalse}%
+ % no message needed here, should be a proper switch
+\noflines\zerocount
+ \ifdisplaysectionhead
+% new
+\processaction
+ [\getvalue{\??ko#1\c!hang}]
+ [ \v!line=>\hangheadplacement\noflines\zerocount,
+ \v!broad=>\hangheadplacement\getnoflines\scratchdimen,
+ \v!fit=>\hangheadplacement\getrawnoflines\scratchdimen,
+ \v!none=>\noflines\zerocount,
+ \v!default=>\noflines\zerocount,
+ \v!unknown=>\hangheadplacement\noflines0\commalistelement\advance\noflines\minusone]%
+% so far
+ \let\headlastlinewidth\!!zeropoint
+ \snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox
+ {\hskip\localheadskip
+ \hskip\getvalue{\??ko#1\c!margin}\relax
+ \iflocation
+ \ifautocrossdocument
+ \doifreferencefoundelse{\getvalue{\??ko#1\c!file}::#1}
+ {\edef\currentinnerreference{\s!aut:\currenttextreference}% stored in
+ \gotoouterlocation{}{\box0}} % text slot
+ {\hbox{\box0}}%
+ \else
+ \hbox{\box0}%
+ \fi
+ \else
+ \hbox{\box0}%
+ \fi}%
+ \doflushnotes % new, not really needed
+ \endgraf
+\ifnum\noflines>\zerocount
+ \dorecurse\noflines{\nointerlineskip\dosomebreak\nobreak\strut\endgraf}%
+\fi
+ \nointerlineskip
+ \dosomebreak\nobreak
+ #2%
+ \else
+ \strut
+ \doflushnotes % new, here since we're in par mode
+ \iflocation
+ \ifautocrossdocument
+ \hhboxindent=\ifcontinuoushead\headlastlinewidth\else\zeropoint\fi
+ \unhhbox0\with{\gotobox{\box\hhbox}[\getvalue{\??ko#1\c!file}::#1]}%
+ \advance\lasthhboxwidth by \numberheaddistance
+ \xdef\headlastlinewidth{\the\lasthhboxwidth}%
+ \else
+ \unhbox0
+ \globallet\headlastlinewidth\!!zeropoint
+ \fi
+ \else
+ \unhbox0
+ \globallet\headlastlinewidth\!!zeropoint
+ \fi
+ #2%
+ \dimen0=\numberheaddistance
+ \hskip\dimen0 \!!plus \dimen0 \!!minus .25\dimen0
+ \hskip\headsignal\ignorespaces
+ \fi
+ \ifdisplaysectionhead \ifvmode
+ \ifgridsnapping % important, font related depth, see comment
+ \prevdepth\strutdp
+ \else
+ \prevdepth\localheaddepth
+ \fi
+ \fi \fi
+ \stopsynchronization
+ \egroup
+ \egroup
+ \ifdisplaysectionhead
+ \dochecknextindentation{\??ko#1}%
+ \else
+ \nonoindentation % recently added, was a bug
+ \fi}
+
+\def\checknexthead#1#2% nog optioneel
+ {\ifhmode
+ \scratchcounter=\lastpenalty\unpenalty % no beauty in this
+ \ifdim\lastskip=\headsignal
+ \handlepagebreakC{#1}%
+ \global\continuousheadtrue
+ \else
+ \penalty\scratchcounter
+ \global\continuousheadfalse
+ #1{#2}%
+ \fi
+ \else
+ \global\continuousheadfalse
+ #1{#2}%
+ \fi}
+
+\def\dosetupheadnumber[#1][#2#3]% todo: = (don't reset)
+ {\bgroup
+ \setsectieenkoppeling{#1}%
+ \doifinstringelse{#2}{+-}
+ {\doifelsenothing{#3}
+ {\@@nextsectionnumber\@@sectie}
+ {\!!counta=#2#3\relax
+ \advance\!!counta \@@sectionvalue\@@sectie
+ \@@setsectionnumber\@@sectie\!!counta}}
+ {\@@setsectionnumber\@@sectie{#2#3}}%
+ \egroup}
+
+\def\setupheadnumber
+ {\dodoubleargument\dosetupheadnumber}
+
+\def\currentheadnumber{0}
+
+\def\determineheadnumber[#1]%
+ {\bgroup
+ \setsectieenkoppeling{#1}%
+ \xdef\currentheadnumber{\@@sectionvalue{\@@sectie}}%
+ \egroup}
+
+\def\complexheadnumber[#1]%
+ {\bgroup
+ \edef\currentheadnumber{#1}%
+ \doifinsetelse{-}{#1} % br undocumented
+ {\removefromcommalist{-}\currentheadnumber % br
+ \setsectieenkoppeling\currentheadnumber
+ \setupsection[\@@sectie][\c!previousnumber=\v!no]}%
+ {\setsectieenkoppeling\currentheadnumber}%
+ \xdef\currentheadnumber{\@@sectionvalue{\@@sectie}}%
+ \doifnot{\currentheadnumber}{0}{\finalsectionnumber}%
+ \egroup}
+
+\def\simpleheadnumber
+ {\currentheadnumber}
+
+\definecomplexorsimple\headnumber
+
+\def\alinea
+ {\par}
+
+% nice testcase
+%
+% \setupheads[aligntitle=yes]
+%
+% \startnarrower
+% \subject{\dorecurse{100}{x }}
+% \section{\dorecurse{100}{x }}
+% \input tufte \par
+% \setupheads[alternative=inmargin]
+% \subject{\dorecurse{100}{x }}
+% \section{\dorecurse{100}{x }}
+% \input tufte \par
+% \stopnarrower
+
+\let\numberheadalternative\v!normal
+
+\def\defineheadplacement
+ {\dodoubleargument\dodefineheadplacement}
+
+\def\dodefineheadplacement[#1][#2]% #3#4
+ {\setvalue{\??ko:#1}{#2}%
+ \setvalue{\??ko::#1}}
+
+\def\@@placehead
+ {\executeifdefined
+ {\??ko::\numberheadalternative}
+ {\getvalue{\??ko::\v!normal}}}
+
+\defineheadplacement[\v!paragraph][\v!vertical]#1#2%
+ {\vbox
+ {\localheadsetup
+ \begstrut\ifheadnumbercontent#1\hskip\numberheaddistance\fi#2}}
+
+\defineheadplacement[\v!normal][\v!vertical]#1#2%
+ {\ifheadnumbercontent
+ \setbox0\hbox{{#1}\hskip\numberheaddistance}%
+ \vbox
+ {\localheadsetup
+ \hangindent 1\wd0
+ \hangafter 1
+ \noindent
+ \unhbox0 % don't use \strut's here!
+ #2}%
+ \else
+ \vbox
+ {\localheadsetup\noindent#2}%
+ \fi}
+
+\def\placeheadmargin#1#2%
+ {\vbox
+ {\localheadsetup
+ \begstrut % use one \strut here!
+ \ifheadnumbercontent
+ \llap{\hbox to 5em{\hfill{#1}%
+ \hskip\localheadskip\hskip\leftmargindistance}}%
+ \fi
+ {#2}}}
+
+\defineheadplacement[\v!inmargin][\v!vertical]#1#2{\placeheadmargin{#1}{#2}}
+\defineheadplacement[\v!margin] [\v!vertical]#1#2{\placeheadmargin{#1}{#2}}
+
+\defineheadplacement[\v!middle][\v!vertical]#1#2%
+ {\vbox
+ {\localheadsetup
+ \veryraggedcenter
+ \let\\\endgraf
+ \let\crlf\endgraf
+ \ifheadnumbercontent\strut#1\par\fi\begstrut#2}}
+
+\defineheadplacement[\v!text][\v!horizontal]#1#2%
+ {\bgroup
+ \localheadsetup % no stretch in distance
+ \ifheadnumbercontent{#1}\kern\numberheaddistance\fi{\begstrut#2}%
+ \egroup}
+
+\def\placeheadlohi#1#2#3%
+ {\ifheadnumbercontent
+ \setbox0\hbox{#2}
+ \setbox2#1{\localheadsetup\advance\hsize-\wd0\relax#3}%
+ \hbox{\box0\hskip\numberheaddistance\box2}%
+ \else
+ #1{\localheadsetup\noindent#3}%
+ \fi}
+
+% onder/boven lijnt het nummer op de onderste/bovenste regel
+% uit van een meerregelige kop
+
+\defineheadplacement[\v!bottom][\v!vertical]#1#2{\placeheadlohi\vbox{#1}{#2}}
+\defineheadplacement[\v!top] [\v!vertical]#1#2{\placeheadlohi\vtop{#1}{#2}}
+
+% default == instellingen
+% koppeling == koppen, breaks, marks, enz.
+% sectie == nummering
+
+\let\@@kolist=\empty
+
+\def\dodefinehead[#1][#2]% % don't preset prefix to much
+ {\presetlabeltext[#1=]%
+ \getparameters
+ [\??ko#1]
+ [\c!numberstyle=\getvalue{\??ko#1\c!style},
+ \c!textstyle=\getvalue{\??ko#1\c!style},
+ \c!numbercolor=\getvalue{\??ko#1\c!color},
+ \c!textcolor=\getvalue{\??ko#1\c!color}]%
+ \doifassignmentelse{#2}
+ {\getparameters
+ [\??ko#1]
+ [\c!section=\getvalue{\??ko\getvalue{\??ko#1\c!coupling}\c!section},
+ \c!default=,
+ \c!coupling=,
+ \c!prefix=,
+ \c!before=,
+ \c!after=,
+ \c!distance=\!!zeropoint,
+ \c!page=,
+ \c!header=,
+ \c!text=,
+ \c!footer=,
+ \c!style=,
+ \c!numbercommand=,
+ \c!textcommand=,
+ \c!ownnumber=\v!no,
+ \c!number=\v!yes,
+ \c!color=,
+ \c!continue=\v!yes,
+ \c!placehead=\v!yes,
+ \c!resetnumber=\v!yes,
+ \c!incrementnumber=\v!yes,
+ \c!alternative=\@@koalternative,
+ \c!command=\@@placehead,
+ \c!separator=\@@koseparator,
+ \c!align=\@@koalign,
+ \c!aligntitle=\@@koaligntitle,
+ \c!tolerance=\@@kotolerance,
+ \c!indentnext=\@@koindentnext,
+ \c!hang=\@@kohang,
+ \c!file=,
+ \c!expansion=,
+ \c!grid=,
+ \c!margintext=,
+ \c!margin=\@@komargin,
+ #2]%
+ \ConvertToConstant\doifnot{#1}{\getvalue{\??ko#1\c!default}}
+ {\doifsomething{\getvalue{\??ko#1\c!default}}
+ {\copyparameters
+ [\??ko#1][\??ko\getvalue{\??ko#1\c!default}]
+ [\c!before,\c!after,\c!command,\c!file,\c!page,\c!continue,
+ \c!header,\c!text,\c!footer,\c!separator,\c!resetnumber,
+ \c!number,\c!ownnumber,\c!placehead,\c!incrementnumber,
+ \c!style,\c!color,\c!distance,\c!alternative,\c!indentnext,
+ % new per 20/03/3002 (o-pbu-l) / was too confusing
+ % \c!numberstyle,\c!textstyle,\c!expansion,
+ % again too confusing
+ \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang,
+ \c!numbercommand,\c!textcommand,\c!margintext,\c!margin]}}%
+ \getparameters[\??ko#1][#2]%
+ \doifsomething{\getvalue{\??ko#1\c!section}}
+ {\doifelsemarking{#1}% \doifundefined{\??mk#1}
+ {}% marking #1 already defined
+ {\definemarking[#1]%
+ \couplemarking[#1][\getvalue{\??ko#1\c!section}]%
+ \definemarking[#1\v!number]%
+% klopt dit wel ?
+ \couplemarking[#1\v!number][\getvalue{\??ko#1\c!section}]}}%
+% \couplemarking[#1\v!nummer][\getvalue{\??ko#1\c!sectie}\v!nummer]}}%
+ \doifundefined{\??li#1}{\definelist[#1]}}
+ {\ConvertToConstant\doifelse{#1}{#2}
+ {\doifundefined{\??li#1}{\definelist[#1]}}
+ {\copyparameters
+ [\??ko#1][\??ko#2]
+ [\c!level,\c!section,\c!coupling,\c!prefix,
+ \c!before,\c!after,\c!command,\c!file,\c!page,\c!continue,
+ \c!separator,
+ \c!header,\c!text,\c!footer,\c!resetnumber,
+ \c!number,\c!ownnumber,\c!placehead,\c!incrementnumber,
+ \c!style,\c!color,\c!distance,\c!alternative,\c!indentnext,
+ % new per 20/03/3002 (o-pbu-l) / was too confusing
+ % \c!numberstyle,\c!textstyle,\c!expansion,
+ % again too confusing
+ \c!align,\c!aligntitle,\c!tolerance,\c!grid,\c!hang,
+ \c!numbercommand,\c!textcommand,\c!margintext,\c!margin]%
+\getparameters[\??ko#1][\c!expansion=]% iig een value, rather fuzzy
+ \definemarking[#1][#2]%
+ \definemarking[#1\v!number][#2\v!number]%
+ \doifundefined{\??li#1}{\definelist[#1][#2]}}}%
+ \addtocommalist{#1}\@@kolist
+ \setevalue{\??sk#1}{\getvalue{\??ko#1\c!coupling}}%
+ \setevalue{\??by#1}{\getvalue{\??ko#1\c!section}}%
+ \setevalue{\??by\v!by#1}{\getvalue{\??ko#1\c!section}}%
+ \setvalue{#1}{\dodoubleempty\dosomekop[#1]}}
+
+\def\definehead
+ {\dodoubleemptywithset\dodefinehead}
+
+\def\dosomekop[#1][#2]%
+ {\dowithpargument{\dodosomekop{#1}[#2]}}
+
+\def\dosetuphead[#1][#2]%
+ {\getparameters[\??ko#1][#2]%
+ % The next check prevents hard to trace problems. I once
+ % set \c!command to nothing and (quite natural) got the
+ % wrong references etc. The whole bunch should be boxed!
+ \expandafter\convertcommand\csname\??ko#1\c!command\endcsname\to\ascii
+ \doifnothing\ascii{\setvalue{\??ko#1\c!command}{\@@placehead}}}
+
+\def\setuphead
+ {\dodoubleargumentwithset\dosetuphead}
+
+\def\dosetupheads[#1]%
+ {\getparameters[\??ko][#1]%
+ \doifelse{\@@kosectionnumber}\v!yes\sectienummertrue\sectienummerfalse}
+
+\def\setupheads
+ {\dosingleargument\dosetupheads}
+
+\def\systemsuppliedchapter {\getvalue{\v!chapter}}
+\def\systemsuppliedtitle {\getvalue{\v!title}}
+
+% a left over
+
+\def\complexbijlage[#1]#2%
+ {\page[\v!right]
+ \setuppagenumbering[\c!state=\v!stop]
+ \systemsuppliedchapter[#1]{#2}
+ \page[\v!right]
+ \setuppagenumbering[\c!state=\v!start]
+ \setuppagenumbering[\c!number=1]}
+
+\setvalue{\v!appendix}%
+ {\complexorsimpleempty\bijlage}
+
+\setupheads
+ [\c!alternative=\v!normal,
+ \c!sectionnumber=\v!yes,
+ \c!separator=.,
+ \c!limittext=\v!yes,
+ \c!align=,
+ \c!aligntitle=,
+ \c!tolerance=,
+ \c!indentnext=\v!no,
+ \c!margin=\zeropoint,
+ \c!hang=\v!none,
+ \c!command=]
+
+\definesectionblock [\v!frontpart] [\v!frontmatter] [\c!number=\v!no]
+\definesectionblock [\v!bodypart] [\v!bodymatter] [\c!number=\v!yes]
+\definesectionblock [\v!appendix] [\v!appendices] [\c!number=\v!yes]
+\definesectionblock [\v!backpart] [\v!backmatter] [\c!number=\v!no]
+
+\definesection[\v!sectionlevel-1] % part
+\definesection[\v!sectionlevel-2] % chapter
+\definesection[\v!sectionlevel-3] % section
+\definesection[\v!sectionlevel-4] % subsection
+\definesection[\v!sectionlevel-5] % subsubsection
+\definesection[\v!sectionlevel-6] % subsubsubsection
+\definesection[\v!sectionlevel-7] % subsubsubsubsection
+
+% \c!eigennummer ook hier?
+
+\definehead
+ [\v!part]
+ [\c!section=\v!sectionlevel-1]
+
+\definehead
+ [\v!chapter]
+ [\c!section=\v!sectionlevel-2]
+
+\definehead
+ [\v!section]
+ [\c!section=\v!sectionlevel-3]
+
+\definehead
+ [\v!subsection]
+ [\c!section=\v!sectionlevel-4,
+ \c!default=\v!section]
+
+\definehead
+ [\v!subsubsection]
+ [\c!section=\v!sectionlevel-5,
+ %\c!default=\v!section]
+ \c!default=\v!subsection] % nieuw
+
+\definehead
+ [\v!subsubsubsection]
+ [\c!section=\v!sectionlevel-6,
+ %\c!default=\v!section]
+ \c!default=\v!subsubsection] % nieuw
+
+\definehead
+ [\v!subsubsubsubsection]
+ [\c!section=\v!sectionlevel-7,
+ %\c!default=\v!section]
+ \c!default=\v!subsubsubsection] % nieuw
+
+\definehead
+ [\v!title]
+ [\c!coupling=\v!chapter,
+ \c!default=\v!chapter,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subject]
+ [\c!coupling=\v!section,
+ \c!default=\v!section,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubject]
+ [\c!coupling=\v!subsection,
+ \c!default=\v!subsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubject]
+ [\c!coupling=\v!subsubsection,
+ \c!default=\v!subsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubject]
+ [\c!coupling=\v!subsubsubsection,
+ \c!default=\v!subsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsection,
+ \c!default=\v!subsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\setupsection
+ [\v!sectionlevel-2]
+ [\v!appendix\c!conversion=\v!Character,
+ \c!previousnumber=\v!no]
+
+\setuphead
+ [\v!part]
+ [\c!placehead=\v!no]
+
+\setuphead
+ [\v!chapter]
+ [\v!appendix\c!label=\v!appendix,
+ \v!bodypart\c!label=\v!chapter] % bijlageconversie=\Character
+
+\setuphead
+ [\v!section]
+ [\v!appendix\c!label=\v!section,
+ \v!bodypart\c!label=\v!section] % bijlageconversie=\Character
+
+\setuphead
+ [\v!subsection]
+ [\v!appendix\c!label=\v!subsection,
+ \v!bodypart\c!label=\v!subsection] % bijlageconversie=\Character
+
+\setuphead
+ [\v!subsubsection]
+ [\v!appendix\c!label=\v!subsubsection,
+ \v!bodypart\c!label=\v!subsubsection] % bijlageconversie=\Character
+
+\setuphead
+ [\v!part,\v!chapter]
+ [%\c!align=,
+ %\c!indentnext=\v!no,
+ \c!continue=\v!no,
+ \c!page=\v!right,
+ \c!header=,
+ \c!style=\tfc,
+ \c!distance=.75em,
+ \c!before={\blank[2*\v!big]},
+ \c!after={\blank[2*\v!big]}]
+
+\setuphead
+ [\v!section]
+ [%\c!align=,
+ %\c!indentnext=\v!no,
+ \c!style=\tfa,
+ \c!distance=.75em,
+ \c!before={\blank[2*\v!big]},
+ \c!after=\blank]
+
+\setuphead % nieuw
+ [\v!subsection]
+ [\c!page=]
+
+\definecombinedlist
+ [\v!content]
+ [\v!part,
+ \v!chapter,
+ \v!section,
+ \v!subsection,
+ \v!subsubsection,
+ \v!subsubsubsection,
+ \v!subsubsubsubsection]
+ [\c!level=\v!subsubsubsubsection,
+ \c!criterium=\v!local]
+
+\setuplist
+ [\v!part]
+ [\c!before={\blank\page[\v!preference]},
+ \c!after=\blank,
+ \c!label=\v!yes,
+ \c!separator=:,
+ \c!distance=1em]
+
+\setuplist
+ [\v!chapter]
+ [\c!before={\blank\page[\v!preference]},
+ \c!after=]
+
+\setuplist [\v!part] [\c!width=0em]
+\setuplist [\v!chapter] [\c!width=2em]
+\setuplist [\v!section] [\c!width=3em]
+\setuplist [\v!subsection] [\c!width=4em]
+\setuplist [\v!subsubsection] [\c!width=5em]
+\setuplist [\v!subsubsubsection] [\c!width=6em]
+\setuplist [\v!subsubsubsubsection] [\c!width=7em]
+
+% hm
+
+\setuppagenumbering % na instellen hoofdteksten !
+ [\c!alternative=\v!singlesided,
+ \c!location={\v!header,\v!middle},
+ \c!conversion=\v!numbers,
+ \c!width=, % in geval van \v!marginedge
+ \c!left=,
+ \c!right=,
+ \c!way=\v!by\v!part,
+ \c!text=,
+ \v!chapter\v!number=\v!no, % v
+ \v!part\v!number=\v!yes, % v
+ \c!numberseparator=--,
+ \c!textseparator=\tfskip,
+ \c!state=\v!start,
+ \c!command=,
+ \c!strut=\v!yes, % nieuw
+ \c!style=, % \v!normal, % empty, otherwise conflict
+ \c!color=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-snc.tex b/Master/texmf-dist/tex/context/base/core-snc.tex
new file mode 100644
index 00000000000..55c6e15df51
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-snc.tex
@@ -0,0 +1,176 @@
+%D \module
+%D [ file=core-snc,
+%D version=2003.12.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Synchronization Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Synchronization}
+
+\unprotect
+
+\ifx\s!set \undefined \def\s!set {set} \fi
+\ifx\s!reset \undefined \def\s!reset {reset} \fi
+\ifx\s!preset \undefined \def\s!preset {preset} \fi
+\ifx\s!syncpos\undefined \def\s!syncpos{syncpos} \fi
+
+\def\definesyncpositions[#1]%
+ {\setcounter{\s!num:\s!syncpos:#1}{0}%
+ \doglobal\appendtoksonce\getvalue {\s!reset:\s!syncpos:#1}\to\resetsyncpositions
+ \doglobal\appendtoksonce\getvalue{\s!preset:\s!syncpos:#1}\to\presetsyncpositions
+ \setgvalue{\s!syncpos:#1}{sync_n[#1] := 0 ;}%
+ \setgvalue{\s!set:\s!syncpos:#1}{\dosetsyncpositions{#1}}}
+
+\def\syncposition
+ {\dodoubleempty\dosyncposition}
+
+\def\dosyncposition[#1][#2]%
+ {\letgvalue{\s!reset:\s!syncpos:#1}\relax
+ \letgvalue{\s!preset:\s!syncpos:#1}\relax
+ \dontleavehmode
+ \dodosyncposition{#1}{#2}\s!set
+ \ignorespaces}
+
+\def\doifelselastsyncposition#1#2%
+ {\doifelse{\lastsyncclass\lastsyncposition}{#1#2}}
+
+\def\dodosyncposition#1#2#3%
+ {\letgvalue{\s!reset:\s!syncpos:#1}\relax
+ \letgvalue{\s!preset:\s!syncpos:#1}\relax
+ \ifundefined{\s!syncpos:#1}%
+ \strut
+ \else
+ \pluscounter{\s!num:\s!syncpos:#1}%
+ \setsyncpositions{#1}%
+ % option: geen w/h, alleen p 0 0 0 data
+ \setpositionplus
+ {\s!syncpos:#1:\countervalue{\s!num:\s!syncpos:#1}}%
+ {#2}%
+ \hbox{\strut\traceposstring\llap\green{#3/\countervalue{\s!num:\s!syncpos:#1}/#1/#2>>}}%
+ \fi}
+
+\def\setsyncpositions#1%
+ {\enabletextarearegistration
+ \getvalue {\s!set:\s!syncpos:#1}%
+ \letgvalue{\s!set:\s!syncpos:#1}\relax}
+
+\def\dosetsyncpositions#1%
+ {\startnointerference % removing out of sync can best be done in mp
+ \!!dimena\maxdimen
+ \!!counta\zerocount
+ \!!countc\zerocount
+ \doloop
+ {\doifpositionelse{\s!syncpos:#1:\recurselevel}
+ {\!!dimenb\MPy{\s!syncpos:#1:\recurselevel}\relax
+ \!!countb\MPp{\s!syncpos:#1:\recurselevel}\relax
+ \ifnum\!!countb=\!!counta % same page
+ \ifdim\!!dimenb>\!!dimena
+ \donefalse % out of order nodes
+ \else
+ \donetrue % nodes in order
+ \fi
+ \else
+ \donetrue % different page
+ \fi
+ \ifdone
+ \!!counta\!!countb
+ \!!dimena\!!dimenb
+ \advance\!!countc\plusone
+ \edef\!!stringa{[#1][\the\!!countc]:=}%
+ \edef\!!stringc{\s!syncpos:#1:\the\!!countc}%
+ \edef\!!stringd{\MPplus\!!stringc{1}{0}}%
+ \setxvalue{\s!syncpos:#1}%
+ {\getsyncpositions{#1}%
+ sync_p \!!stringa \MPp \!!stringc ;
+ sync_xy\!!stringa \MPxy\!!stringc ;
+ sync_w \!!stringa \MPw \!!stringc ;
+ sync_h \!!stringa \MPh \!!stringc ;
+ sync_d \!!stringa \MPd \!!stringc ;
+ \ifx\!!stringd\empty \else sync_t \!!stringa \MPplus\!!stringc{1}{0} ; \fi}%
+ \fi}
+ {\setxvalue{\s!syncpos:#1}%
+ {\getsyncpositions{#1}%
+ sync_n[#1] := \the\!!countc ;}
+ \exitloop}}%
+ \stopnointerference}
+
+\def\getsyncpositions#1%
+ {\getvalue{\s!syncpos:#1}}
+
+\newtoks\resetsyncpositions
+\newtoks\presetsyncpositions
+
+\def\resyncposition {\dodoubleargument\doresyncposition}
+\def\presyncposition{\dodoubleargument\dopresyncposition}
+
+\def\dodoresyncposition #1#2{\dodosyncposition{#1}{#2}\s!reset}
+\def\dodopresyncposition#1#2{\dodosyncposition{#1}{#2}\s!preset}
+
+\def\doresyncposition [#1][#2]{\setxvalue{\s!reset :\s!syncpos:#1}{\noexpand\dodoresyncposition{#1}{#2}}}
+\def\dopresyncposition[#1][#2]{\setxvalue{\s!preset:\s!syncpos:#1}{\noexpand\dodopresyncposition{#1}{#2}}}
+
+\def\flushsyncpositions % this order !
+ {\the\presetsyncpositions
+ \the\resetsyncpositions}
+
+% \appendtoks \flushsyncpositions \to \everypar
+% \appendtoks \flushsyncpositions \to \everyheadstart
+
+% \explicitneverypar -> in grid snapper, eerst testen
+%
+% \appendtoks \flushsyncpositions \to \neverypar
+
+\def\flushsyncxxsets#1#2%
+ {\setbox\scratchbox\hbox{\the#1}%
+ \ifvoid\scratchbox\else
+ \smashbox\scratchbox
+ #2\box\scratchbox
+ \fi}
+
+\def\flushsyncresets {\flushsyncxxsets\resetsyncpositions \relax}
+\def\flushsyncpresets{\flushsyncxxsets\presetsyncpositions\prewordbreak} % check prewordbreak
+
+\protect \endinput
+
+\starttext
+
+\setupcolors[state=start]
+
+\definesyncpositions[1]
+
+\startuseMPgraphic{sync}
+ StartPage ;
+ \getsyncpositions{1} ;
+ SyncThreshold := 2LineHeight ;
+ SyncLeftOffset := -.5LeftMarginDistance ;
+ % SetSyncThreshold(1,3,3LineHeight) ;
+ SyncWidth := - (BackSpace + SyncLeftOffset) ;
+ SetSyncColor(1,1,\MPcolor{red}) ;
+ SetSyncColor(1,2,\MPcolor{green}) ;
+ SetSyncColor(1,3,\MPcolor{blue}) ;
+ SetSyncColor(1,4,\MPcolor{yellow}) ;
+ PrepareSyncTasks(1,true,true,false) ;
+ for i = 1 upto NOfSyncPaths :
+ fill SyncPaths[i]
+ withcolor TheSyncColor(CurrentSyncClass,sync_t[CurrentSyncClass][SyncTasks[i]]) ;
+ endfor ;
+ setbounds currentpicture to Page ;
+ StopPage ;
+\stopuseMPgraphic
+
+\defineoverlay[tempoverlay][\useMPgraphic{sync}]
+
+\setupbackgrounds[page][background=tempoverlay]
+
+\syncposition[1][1] \input ward \endgraf
+\syncposition[1][2] \input ward \endgraf
+\syncposition[1][3] \input ward \endgraf
+\syncposition[1][4] \input ward \endgraf
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/core-spa.tex b/Master/texmf-dist/tex/context/base/core-spa.tex
new file mode 100644
index 00000000000..cb3363f8c09
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-spa.tex
@@ -0,0 +1,4433 @@
+%D \module
+%D [ file=core-spa,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Spacing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Spacing Macros}
+
+% to be sorted out: dependencies, orderof initialization
+
+\unprotect
+
+\newevery \everybodyfont \EveryBodyFont % just to be sure
+\newevery \everyfontswitch \EveryFontSwitch % just to be sure
+\newevery \everydefinedfont \relax % just to be sure
+
+\appendtoks \spacing 1\to \everybodyfont
+\appendtoks \presetnormallineheight \to \everybodyfont
+\appendtoks \setnormalbaselines \to \everybodyfont % check if redundant
+\appendtoks \setstrut \to \everybodyfont % check if redundant
+\appendtoks \settopskip \to \everybodyfont
+\appendtoks \setmaxdepth \to \everybodyfont
+%appendtoks \spacing 1\to \everybodyfont
+\appendtoks \simplesetupindenting \to \everybodyfont
+\appendtoks \simplesetupblank \to \everybodyfont
+\appendtoks \simplesetupwhitespace \to \everybodyfont
+%appendtoks \checknotes \to \everybodyfont % not
+\appendtoks \simplesetupspacing \to \everybodyfont % nieuw
+\appendtoks \setdisplayskips \to \everybodyfont % nieuw
+
+\appendtoks \updateraggedskips \to \everyfontswitch % under test
+
+\prependtoks \let\par\endgraf \to \everypagebody % see \fillinline
+
+\appendtoks \simplesetupspacing \to \everydefinedfont
+
+% if you want to hyphenate the first word of a paragraph ... \appendtoks\hskip0pt\to\everypar
+
+\def\stelfactorenin
+ {\simplesetupwhitespace
+ \simplesetupblank
+ \settopskip
+ \setmaxdepth}
+
+\def\softbreak
+ {\relax\ifhmode\hskip\parfillskip\break\fi}
+
+\let\poplastnode\relax
+
+\def\pushlastnode
+ {\ifdim\lastskip=\zeropoint
+ \ifnum\lastpenalty=\zerocount
+ \ifnum\lastkern=\zerocount
+ \let\poplastnode\relax
+ \else
+ \edef\poplastnode{\kern\the\lastkern\relax}\kern-\lastkern % untested
+ \fi
+ \else
+ \edef\poplastnode{\penalty\the\lastpenalty\relax}\nobreak % untested
+ \fi
+ \else
+ \edef\poplastnode{\vskip\the\lastskip\relax}\vskip-\lastskip % \removelastskip
+ \fi}
+
+%D The dreadful sequence \type {\bgroup} \unknown\
+%D \type {\carryoverpar} \unknown\ \type {\egroup} is needed
+%D when for instance sidefloats are used in combination with
+%D something that starts with a group. This is because
+%D otherwise the indentation as set (by the output routine)
+%D inside the group are forgotten afterwards. (I must
+%D not forget its existence).
+
+\global\let\carriedoverpar\relax
+
+\def\carryoverpar#1%
+ {\expanded % \scratchtoks{#1}%
+ {\noexpand#1% \the\scratchtoks
+ \hangindent\the\hangindent
+ \hangafter \the\hangafter
+ \parskip \the\parskip
+ \leftskip \the\leftskip
+ \rightskip \the\rightskip}}
+
+%D A quick way to determine left|/|middle|/|right states
+%D (experimental).
+
+\setvalue{\??as\v!left }{0}
+\setvalue{\??as\v!middle}{1}
+\setvalue{\??as\v!right}{2}
+
+\def\setalignmentswitch#1%
+ {\chardef\alignmentswitch0\csname\??as#1\endcsname\relax}
+
+%D There are two ways to influence the interline spacing. The
+%D most general and often most consistent way is using
+%D
+%D \showsetup{setupinterlinespace}
+%D
+%D For instance
+%D
+%D \starttyping
+%D \setupinterlinespace[line=2.8ex]
+%D \stoptyping
+%D
+%D This setting adapts itself to the bodyfontsize, while for
+%D instance saying
+%D
+%D \starttyping
+%D \setupinterlinespace[line=12pt]
+%D \stoptyping
+%D
+%D sets things fixed for all sizes, which is definitely not
+%D what we want. Therefore one can also say:
+%D
+%D \starttyping
+%D \definebodyfontenvironment[9pt][interlinespace=11pt]
+%D \stoptyping
+%D
+%D One can still use \type{\setupinterlinespace} (without
+%D arguments) to set the interline space according to the
+%D current font, e.g. a \type{\bfa}.
+
+\newif\iflocalinterlinespace
+
+% font-ini
+
+\ifx\bodyfontinterlinespecs\undefined
+
+ \let\bodyfontinterlinespecs\empty
+ \let\bodyfontinterlinespace\empty
+
+\fi
+
+\def\presetnormallineheight
+ {\edef\normallineheight{\@@itline}%
+% done elsewhere : \spacing\!!plusone % new per 10/08/2004, else problems in otr / !! needed
+ \iflocalinterlinespace \else
+ \doifdefined\bodyfontinterlinespecs
+ {\doifsomething\bodyfontinterlinespace
+ {\edef\normallineheight{\bodyfontinterlinespace}}}%
+ \fi}
+
+\def\setupspecifiedinterlinespace[#1]%
+ {\getparameters[\??it][#1]%
+ \scratchdimen0\@@itheight\points
+ \advance\scratchdimen 0\@@itdepth\points
+ \ifdim\scratchdimen>\onepoint
+ \showmessage\m!layouts{10}{\@@itheight,\@@itdepth}%
+ \let\@@itheight\strutheightfactor
+ \let\@@itdepth \strutdepthfactor
+ \else
+ \let\strutheightfactor\@@itheight
+ \let\strutdepthfactor \@@itdepth
+ \fi
+ \let\minimumstrutheight \@@itminheight
+ \let\minimumstrutdepth \@@itmindepth
+ \let\minimumlinedistance\@@itdistance
+ \let\normallineheight \@@itline % let ! ! ! ! ! ivm ex
+ \doifelse\@@ittop\v!height % new, topskip does more bad than good
+ {\let\topskipfactor \@@itheight}
+ {\let\topskipfactor \@@ittop }%
+ \let\maxdepthfactor \@@itbottom
+ \let\baselinegluefactor \@@itstretch
+ \setfontparameters % redundant, can be \setstrut, test first
+ \updateraggedskips} % yes indeed
+
+\def\setuprelativeinterlinespace[#1]%
+ {\processallactionsinset % \regelwit = dummy !
+ [#1]
+ [ \v!on=>\oninterlineskip,
+ \v!off=>\offinterlineskip,
+ \v!reset=>\setfontparameters,% just \setstrut, test first
+ \s!unknown=>\assignvalue{#1}\regelwit{1.00}{1.25}{1.50}%
+ \spacing\regelwit]}
+
+\def\complexsetupinterlinespace[#1]% \commalistelement ipv #1
+ {\doifassignmentelse{#1}\setupspecifiedinterlinespace\setuprelativeinterlinespace[#1]}
+
+\def\setuplocalinterlinespace[#1]%
+ {\localinterlinespacetrue
+ \setupinterlinespace[#1]%
+ \localinterlinespacefalse}
+
+\def\simplesetupinterlinespace
+ {\localinterlinespacetrue
+ \setfontparameters
+ \updateraggedskips % funny one here
+ \localinterlinespacefalse}
+
+\definecomplexorsimple\setupinterlinespace
+
+% In earlier versions \type{\bigskipamount} was
+% \type{\ht\strutbox} and the stretch was plus or minus
+% \type{.4\dp\strutbox}. Don't ask me why. The most recent
+% implementation is based on a user supplied distance, which
+% is by default \type{.75\normalskipamount} where
+% \type{\normalskipamount} equals the current baseline
+% distance.
+
+% can be conditionals
+
+\newif\ifblanknowhite \blanknowhitefalse
+\newif\ifblankindeed \blankindeedfalse
+\newif\ifblankreset \blankresetfalse
+\newif\ifblankdisable \blankdisablefalse
+\newif\ifblankflexible \blankflexibletrue
+\newif\ifblankouter
+\newif\ifblankforce
+\newif\ifblankgoback
+
+\newskip\blankskip \blankskip=\bigskipamount
+\newskip\blankskipamount
+
+\def\skipfactor {.75}
+\def\skipgluefactor{.25}
+
+\def\normalskipamount
+ {\openlineheight
+ \ifgridsnapping \else \ifblankflexible
+ \!!plus \skipgluefactor\openlineheight
+ \!!minus\skipgluefactor\openlineheight
+ \fi \fi
+ \relax}
+
+\def\linedistance {\normalskipamount}
+\def\appliedblankskip{\skipfactor\linedistance}
+\def\lastblankskip {\blankskip}
+\def\currentblank {\v!big}
+\def\oldprevdepth {\prevdepth}
+\def\newprevdepth {-1001pt}
+\def\mindimen {1sp} % was: 0.00002pt
+
+\newif\iflocalblankfixed
+\newif\iflocalblankflexible
+\newif\iffuzzyvskip
+
+\def\geenblanko{\removelastskip} % will become obsolete
+
+%%%% pas op, wordt ook in core-pos gebruikt
+
+\def\doassignsomeskip#1\to#2% ook nog \v!halfline+fuzzysnap
+ {\doifelse{#1}\v!line
+ {#2\openlineheight}
+ {\ifgridsnapping
+ \assigndimension{#1}{#2}%
+ {.25\openlineheight}{.5\openlineheight}\openlineheight
+ \else
+ \assigndimension{#1}{#2}%
+ \smallskipamount\medskipamount\bigskipamount
+ \fi}}
+
+%%%% dus niet weg
+
+% replaced
+%
+% \def\dosingleblanko#1%
+% {\doassignsomeskip#1\to\blankskipamount
+% \global\advance\blankskip \blankskipamount}
+%
+% \def\doblank#1%
+% {\processallactionsinset % is maar een actie
+% [#1]
+% [ \v!groot=>\dosingleblanko\v!groot, % happens often
+% \v!buiten=>\ifvmode\ifinner\blankoutertrue\fi\fi,
+% \v!reset=>\global\blankresettrue,
+% \v!flexibel=>\global\localblankflexibletrue,
+% \v!vast=>\global\localblankfixedtrue,
+% \v!back=>\geenblanko,
+% \v!wit=>\global\advance\blankskip \parskip,
+% \v!formule=>\global\advance\blankskip \medskipamount,
+% \v!geenwit=>\global\blanknowhitetrue,
+% -\v!wit=>\global\advance\blankskip -\parskip,
+% \v!blokkeer=>\global\blankdisabletrue,
+% \v!forceer=>\global\blankforcetrue,
+% \v!regel=>\global\advance\blankskip \lineheight,
+% \v!halveregel=>\ifgridsnapping\global\fuzzyvskiptrue\fi
+% \global\advance\blankskip .5\lineheight,
+% \s!unknown=>\doindirectblanko{#1}]}
+%
+% \def\docomplexdoblank[#1]% pas op \relax's zijn nodig ivm volgende \if
+% {\global\blankresetfalse
+% \global\blankdisablefalse
+% \global\blanknowhitefalse
+% \global\localblankflexiblefalse
+% \global\localblankfixedfalse
+% \global\blankskip\zeropoint
+% \global\blankforcefalse
+% \blankouterfalse
+% \processcommalist[#1]\doblank
+% \ifdim\blankskip=\zeropoint\relax
+% \iflocalblankflexible \dosingleblanko\currentblank \fi
+% \iflocalblankfixed \dosingleblanko\currentblank \fi
+% \fi
+% \ifblankouter
+% \else
+% \par
+% \ifvmode %in pos fonts gaat dit mis
+% \ifblankforce %\ifdim\prevdepth>\zeropoint\else
+% % -1000pt signals top of page or column (\ejectcolumn)
+% \verticalstrut\kern-\struttotal
+% \fi
+% \ifblankdisable
+% \global\blankindeedfalse
+% \edef\oldprevdepth{\the\prevdepth}%
+% \prevdepth=\newprevdepth
+% \else
+% \global\blankindeedtrue
+% \fi
+% \ifblankreset
+% \global\blankindeedtrue
+% \ifdim\prevdepth=\newprevdepth
+% \prevdepth=\oldprevdepth
+% \fi
+% \fi
+% \ifblankindeed
+% \ifdim\lastskip<\blankskip\relax
+% % else when \blanko[2*groot] + \blanko[3*groot] with parskip
+% % equaling 1*groot, gives a groot=\parskip so adding a small
+% % value makes it distinguishable; can also be done at parskip
+% % setting time (better)
+% \global\advance\blankskip by \mindimen\relax % = skip
+% % test this on 2* + 3* and parskip groot
+% \ifblanknowhite
+% \global\advance\blankskip by -\parskip
+% \else
+% \ifdim\lastskip=\parskip
+% \else % force this due to previous comment
+% \ifdim\parskip>\zeropoint\relax
+% \ifdim\blankskip<\parskip\relax
+% \global\blankskip\zeropoint
+% \else
+% \global\advance\blankskip by -\parskip
+% \fi
+% \fi
+% \fi
+% \fi
+% \ifblankflexible \else
+% \blankskip=1\blankskip
+% \fi
+% \iflocalblankfixed
+% \blankskip=1\blankskip
+% \fi
+% \iflocalblankflexible
+% \blankskip=1\blankskip
+% \!!plus\skipgluefactor\blankskip
+% \!!minus\skipgluefactor\blankskip
+% \fi
+% \ifdim\prevdepth=\newprevdepth
+% \else
+% \iffuzzyvskip
+% \removelastfuzzyvskip
+% \fuzzyvskip\blankskip\relax
+% \else
+% \removelastskip
+% \vskip\blankskip\relax
+% \fi
+% \fi
+% \else
+% \iffuzzyvskip
+% \removelastfuzzyvskip
+% \fuzzyvskip\blankskip\relax
+% \fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \global\fuzzyvskipfalse
+% \presetindentation}
+%
+% \def\complexdodoblank[#1]%
+% {\flushnotes
+% \ifopelkaar
+% \ifinpagebody
+% \expanded{\docomplexdoblank[#1]}% \expanded=nieuw
+% \else
+% \par
+% \fi
+% \else
+% \expanded{\docomplexdoblank[#1]}% \expanded = nieuw
+% \fi}
+%
+% % old
+% %
+% % \def\doindirectblanko#1%
+% % {\ifundefined{\??bo#1}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\relax
+% % \expanded{\complexdodoblank[#1]}%
+% % \else
+% % \expandafter\complexdoblank\expandafter[\csname\??bo#1\endcsname]%
+% % \fi}
+% %
+% % \def\complexdoblank[#1]% enables [force,8\bodyfontsize]
+% % {\doifinstringelse{,}{#1}
+% % {\expanded{\complexdodoblank[#1]}}
+% % {\doifnumberelse{#1}
+% % {\expanded{\complexdodoblank[#1]}}
+% % {\doindirectblanko{#1}}}}
+% %
+% % new, more robust
+% %
+% % \def\doindirectblanko#1%
+% % {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+% % \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname\rel
+% % \dorepeatwithcommand[#1]\dosingleblanko
+% % \else
+% % \expandafter\complexdoblank\expandafter[\csname\??bo\ascii\endcsname]%
+% % \fi}
+% %
+% % even more robust
+%
+% \def\doindirectblanko#1%
+% {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+% \ifundefined{\??bo\ascii}% <-etex \expandafter\ifx\csname\??bo#1\endcsname
+% \expanded{\dorepeatwithcommand[#1]\noexpand\dosingleblanko}%
+% \else
+% \expandafter\complexdoblank\expandafter[\csname\??bo\ascii\endcsname]%
+% \fi}
+
+% \def\TestBlank[#1]%
+% {blank : {\convertargument#1\to\ascii\tttf\ascii}\blanko[#1]}
+%
+% \defineblank[whatever][2*big,2*big]
+% \TestBlank[]
+% \TestBlank[big]
+% \TestBlank[2*big]
+% \TestBlank[big,big,2*big]
+% \TestBlank[big]
+% \TestBlank[whatever]
+% \TestBlank[2*big,whatever]
+% \TestBlank[3\lineheight]
+
+% this will be replaced/enhanced
+
+\def\addblankskip#1#2#3{\global\advance\blankskip#1\ifgridsnapping#3\else#2\fi}
+
+\def\defineblankmethod[#1]#2{\setvalue{\??bo\??bo#1}{#2}}
+
+\defineblankmethod [\v!big] {\addblankskip+\bigskipamount \openlineheight}
+\defineblankmethod [-\v!big] {\addblankskip-\bigskipamount \openlineheight}
+\defineblankmethod [\v!medium] {\addblankskip+\medskipamount {.5\openlineheight}}
+\defineblankmethod [-\v!medium] {\addblankskip-\medskipamount {.5\openlineheight}}
+\defineblankmethod [\v!small] {\addblankskip+\smallskipamount{.25\openlineheight}}
+\defineblankmethod [-\v!small] {\addblankskip-\smallskipamount{.25\openlineheight}}
+\defineblankmethod [\v!white] {\addblankskip+\parskip \openlineheight}
+\defineblankmethod [-\v!white] {\addblankskip-\parskip \openlineheight}
+\defineblankmethod [\v!line] {\addblankskip+\openlineheight \openlineheight}
+\defineblankmethod [-\v!line] {\addblankskip-\openlineheight \openlineheight}
+
+\defineblankmethod [\v!formula] {\global\advance\blankskip\medskipamount}
+\defineblankmethod [\v!nowhite] {\global\blanknowhitetrue}
+\defineblankmethod [\v!disable] {\global\blankdisabletrue}
+\defineblankmethod [\v!force] {\global\blankforcetrue}
+\defineblankmethod [\v!outer] {\ifvmode\ifinner\blankoutertrue\fi\fi}
+\defineblankmethod [\v!reset] {\global\blankresettrue}
+\defineblankmethod [\v!flexible] {\global\localblankflexibletrue}
+\defineblankmethod [\v!fixed] {\global\localblankfixedtrue}
+\defineblankmethod [\v!back] {\global\blankgobacktrue} % {\geenblanko}
+\defineblankmethod [\v!halfline] {\ifgridsnapping\global\fuzzyvskiptrue\fi
+ \global\advance\blankskip .5\lineheight}
+
+\defineblankmethod [\v!none] {\global\blankresettrue}
+\defineblankmethod [\v!joinedup] {\ifvmode\nointerlineskip\fi}
+
+% happens often, so we speed this up:
+
+\defineblankmethod [2*\v!line] {\addblankskip+{2\openlineheight}{2\openlineheight}}
+\defineblankmethod [2*\v!big] {\addblankskip+{2\bigskipamount }{2\openlineheight}}
+
+% ETEX ! ! !
+
+\beginETEX \ifcsname
+
+\def\doblank#1%
+ {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+ \ifx\ascii\empty\else
+ \ifcsname\??bo\??bo\ascii\endcsname % internal def
+ \csname\??bo\??bo\ascii\endcsname
+ \else\ifcsname\??bo\ascii\endcsname % user def / slow
+ \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax
+ \else
+ \dorepeatwithcommand[#1]\redoblank
+ \fi\fi
+ \fi}
+
+\def\redoblank#1%
+ {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+ \ifx\ascii\empty\else
+ \ifcsname\??bo\??bo\ascii\endcsname % internal def
+ \csname\??bo\??bo\ascii\endcsname
+ \else\ifcsname\??bo\ascii\endcsname % user def / slow
+ \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax
+ \else
+ \global\advance\blankskip#1\relax
+ \fi\fi
+ \fi}
+
+\endETEX
+
+\beginTEX
+
+\def\doblank#1%
+ {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+ \ifx\ascii\empty\else
+ \@EA\ifx\csname\??bo\??bo\ascii\endcsname\relax
+ \@EA\ifx\csname\??bo\ascii\endcsname\relax
+ \dorepeatwithcommand[#1]\redoblank
+ \else
+ \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax
+ \fi
+ \else
+ \csname\??bo\??bo\ascii\endcsname
+ \fi
+ \fi}
+
+\def\redoblank#1%
+ {\edef\ascii{#1}\convertcommand\ascii\to\ascii
+ \ifx\ascii\empty\else
+ \@EA\ifx\csname\??bo\??bo\ascii\endcsname\relax
+ \@EA\ifx\csname\??bo\ascii\endcsname\relax
+ \global\advance\blankskip#1\relax
+ \else
+ \@EA\rawprocesscommalist\@EA[\csname\??bo\ascii\endcsname]\doblank\relax
+ \fi
+ \else
+ \csname\??bo\??bo\ascii\endcsname
+ \fi
+ \fi}
+
+\endTEX
+
+\unexpanded\def\blank % the \relax is definitely needed due to the many \if's
+ {\relax\complexorsimple\doblank}
+
+% \def\complexdoblank
+% {\flushnotes
+% \ifmmode
+% \let\next\nocomplexdoblank
+% \else
+% \ifopelkaar
+% \ifinpagebody
+% \let\next\docomplexdoblank
+% \else
+% \let\next\nocomplexdoblank
+% \fi
+% \else
+% \let\next\docomplexdoblank
+% \fi
+% \fi
+% \next}
+%
+% with \next removed
+
+\def\complexdoblank
+ {\flushnotes
+ \ifmmode
+ \@EA\nocomplexdoblank
+ \else
+ \ifopelkaar
+ \ifinpagebody
+ \@EA\@EAEAEA\@EA\docomplexdoblank
+ \else
+ \@EA\@EAEAEA\@EA\nocomplexdoblank
+ \fi
+ \else
+ \@EAEAEA\docomplexdoblank
+ \fi
+ \fi}
+
+\def\nocomplexdoblank[#1]%
+ {% evt blokkeerfalse
+ \ifmmode\else\par\fi}
+
+% Overloaded in cont-new!
+
+\newsignal\noblanksignal
+
+% \def\doinhibitblank
+% {\kern\noblanksignal}
+
+% \def\inhibitblank% the fast, local way
+% {\endgraf\ifvmode\prevdepth\newprevdepth\fi}
+
+% \def\docomplexdoblank[#1]% pas op \relax's zijn nodig ivm volgende \if
+% {\global\blankresetfalse
+% \global\blankdisablefalse
+% \global\blanknowhitefalse
+% \global\localblankflexiblefalse
+% \global\localblankfixedfalse
+% \global\blankskip\zeropoint
+% \global\blankforcefalse
+% \global\blankgobackfalse
+% \blankouterfalse
+% \expanded{\rawprocesscommalist[#1]}\doblank
+% \ifdim\blankskip=\zeropoint\relax
+% \iflocalblankflexible
+% \doglobal\advance\blankskip \currentblank
+% \else\iflocalblankfixed
+% \doglobal\advance\blankskip \currentblank
+% \fi\fi
+% \fi
+% \ifblankouter
+% \else
+% \par
+% \ifvmode
+% \ifblankgoback
+% \removelastskip
+% \fi
+% \ifblankforce
+% % dit gaat mis in pos fonts
+% % \ifdim\prevdepth>\zeropoint\else ...
+% % -1000pt signals top of page or column (\ejectcolumn)
+% \bgroup\forgeteverypar\verticalstrut\egroup\kern-\struttotal
+% \fi
+% \ifblankdisable
+% \global\blankindeedfalse
+% \ifgridsnapping
+% \ifdim\prevdepth<\zeropoint
+% % brrr
+% \else
+% % dirty trick: smaller blanks are ignored after
+% % a larger one, so 10 lines is probably safe; first make
+% % sure that we honor penalties
+% \scratchcounter\lastpenalty
+% % now comes the trick (cross our fingers that this works
+% % well in multi columns; maybe an ifinner test is needed
+% % \vskip-10\lineheight
+% % \ifnum\scratchcounter=\zerocount \else \penalty\lastpenalty \fi
+% % \vskip 10\lineheight
+% % allas, this leads to overfull pages, so we try this:
+% \kern-\noblanksignal
+% \ifnum\scratchcounter=\zerocount
+% \else
+% \penalty\lastpenalty
+% \fi
+% \kern\noblanksignal
+% % end-of-dirty-trick
+% \fi
+% \else
+% \ifdim\prevdepth<\zeropoint
+% % brrr
+% \else
+% % ensure at least a proper prevdepth, this should be
+% % an option
+% \vskip-\prevdepth
+% \vskip\strutdepth
+% \prevdepth\strutdepth
+% \fi
+% % the old crappy piece of code
+% \edef\oldprevdepth{\the\prevdepth}%
+% \prevdepth\newprevdepth
+% \fi
+% \else
+% \global\blankindeedtrue
+% \fi
+% \ifblankreset
+% \global\blankindeedtrue
+% \ifgridsnapping
+% % let's play safe and not fool around with the depth, if
+% % only because it took a lot of effort to sort out the grid
+% % stuff in the first place
+% \else
+% \ifdim\prevdepth=\newprevdepth
+% \prevdepth\oldprevdepth
+% \fi
+% \fi
+% \fi
+% \ifblankindeed
+% \ifdim1\lastskip<1\blankskip\relax
+% % else when \blanko[2*groot] + \blanko[3*groot] with parskip
+% % equaling 1*groot, gives a groot=\parskip so adding a small
+% % value makes it distinguishable; can also be done at parskip
+% % setting time (better)
+% \global\advance\blankskip \mindimen\relax % = skip
+% % test this on 2* + 3* and parskip groot
+% \ifblanknowhite
+% \global\advance\blankskip -\parskip
+% \else
+% \ifdim\lastskip=\parskip
+% \else % force this due to previous comment
+% \ifdim\parskip>\zeropoint\relax
+% \ifdim\blankskip<\parskip\relax
+% \global\blankskip\zeropoint
+% \else
+% \global\advance\blankskip -\parskip
+% \fi
+% \fi
+% \fi
+% \fi
+% \ifblankflexible \else
+% \blankskip1\blankskip
+% \fi
+% \iflocalblankfixed
+% \blankskip1\blankskip
+% \fi
+% \iflocalblankflexible
+% \blankskip1\blankskip
+% \!!plus\skipgluefactor\blankskip
+% \!!minus\skipgluefactor\blankskip
+% \fi
+% \ifdim\lastkern=\noblanksignal % controled and grid
+% \global\blankindeedfalse
+% \else\ifgridsnapping\else\ifdim\prevdepth=\newprevdepth
+% \global\blankindeedfalse
+% \fi\fi\fi
+% \ifblankindeed
+% \iffuzzyvskip
+% \removelastfuzzyvskip
+% \fuzzyvskip\blankskip\relax
+% \else
+% \removelastskip
+% \vskip\blankskip\relax
+% \fi
+% \fi
+% \else
+% \iffuzzyvskip
+% \removelastfuzzyvskip
+% \fuzzyvskip\blankskip\relax
+% \else
+% % new, test this on pascal
+% \ifdim\blankskip<\zeropoint
+% \advance\blankskip-\lastskip
+% \removelastskip
+% \ifdim\blankskip>\zeropoint
+% \vskip\blankskip
+% \else
+% \vskip\zeropoint
+% \fi
+% \else
+% % also new
+% \ifdim\blankskip=\zeropoint
+% \ifblanknowhite
+% \geenwitruimte
+% \fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \fi
+% \global\fuzzyvskipfalse
+% \presetindentation}
+
+% goback was broken:
+
+% \def\doinhibitblank
+% {\kern\noblanksignal}
+
+% \def\inhibitblank% the fast, local way
+% {\endgraf\ifvmode\prevdepth\newprevdepth\fi}
+
+% problem: we cannot look back in the mvl so we need 3 kinds of signals
+
+\def\noblankpsignal{1010101}
+
+\def\inhibitgridblank % was doinhibitblank
+ {\ifnum\lastpenalty<10000
+ \kern-\noblanksignal % new
+ \kern \noblanksignal
+ \else
+ \penalty\noblankpsignal
+ \fi}
+
+\def\inhibittextblank % was inhibitblank
+ {\endgraf
+ \ifvmode
+ \prevdepth\newprevdepth
+ \fi}
+
+% new macro
+%
+% \def\inhibitblank % need some work
+% {\endgraf
+% \ifvmode
+% \ifgridsnapping
+% \inhibitgridblank
+% \else
+% % this one spoils the grid
+% \inhibittextblank
+% \fi
+% \fi}
+
+\def\doinhibitblank{\inhibitgridblank}
+\def\inhibitblank {\inhibittextblank}
+
+% will become obsolete
+
+\ifx\undefined\savedlastskip \newskip \savedlastskip \fi
+\ifx\undefined\savedlastpenalty \newcount\savedlastpenalty \fi
+
+% beware, prevdepth can have funny values (e.g. mvl value when in box)
+
+\def\docomplexdoblank[#1]% pas op \relax's zijn nodig ivm volgende \if
+ {\global\blankresetfalse
+ \global\blankdisablefalse
+ \global\blanknowhitefalse
+ \global\localblankflexiblefalse
+ \global\localblankfixedfalse
+ \global\blankforcefalse
+ \global\blankgobackfalse
+ \blankouterfalse
+ \global\blankskip\zeropoint
+ \expanded{\rawprocesscommalist[#1]}\doblank
+ \ifdim\blankskip=\zeropoint\relax
+ \iflocalblankflexible
+ \doglobal\advance\blankskip \currentblank
+ \else\iflocalblankfixed
+ \doglobal\advance\blankskip \currentblank
+ \fi\fi
+ \fi
+ \ifblankouter
+ % do nothing
+ \else
+ \par
+ \ifvmode
+ \ifblankgoback
+ \ifdim\lastskip>\zeropoint \vskip-\lastskip \fi
+ \savedlastskip\zeropoint
+ \else\ifdim\lastskip>\zeropoint
+ \savedlastskip\lastskip
+ \else % todo: lastnode, dan namelijk geen skip !
+ \savedlastskip\zeropoint
+ \fi\fi
+ \ifblankforce
+ % dit gaat mis in pos fonts
+ % \ifdim\prevdepth>\zeropoint\else ...
+ % -1000pt signals top of page or column (\ejectcolumn)
+ \bgroup\forgeteverypar\verticalstrut\egroup\kern-\struttotal
+ \savedlastskip\zeropoint
+ \fi
+ \savedlastpenalty\lastpenalty % hm, now it gets lost
+ \ifblankdisable
+ \global\blankindeedfalse % keep this, i.e. disable current too
+ \ifgridsnapping
+ \ifdim\prevdepth<\zeropoint
+ % brrr
+ \else
+ % dirty trick: smaller blanks are ignored after a
+ % larger one, so 10 lines is probably safe; we need
+ % to make sure that we honor penalties; here comes the
+ % trick (cross our fingers that this works well in
+ % multi columns; maybe an ifinner test is needed
+ % \scratchcounter\lastpenalty
+ % \vskip-10\lineheight
+ % \ifnum\scratchcounter=\zerocount \else \penalty\lastpenalty \fi
+ % \vskip 10\lineheight
+ % alas, this leads to overfull pages, so we try this:
+ \inhibitgridblank
+ \fi
+ \else
+ \ifdim\prevdepth<\zeropoint
+ % brrr
+ \else
+ % ensure at least a proper prevdepth, this should be
+ % an option
+ \vskip-\prevdepth
+ \vskip\strutdepth
+ \prevdepth\strutdepth
+ \fi
+ % the old crappy piece of code
+ \edef\oldprevdepth{\the\prevdepth}%
+ \prevdepth\newprevdepth % == \inhibittextblank
+ \fi
+ \else
+ \global\blankindeedtrue
+ \fi
+ \ifblankreset
+ \global\blankindeedtrue
+ \ifgridsnapping
+ % let's play safe and not fool around with the depth, if
+ % only because it took a lot of effort to sort out the grid
+ % stuff in the first place
+ \else
+ \ifdim\prevdepth=\newprevdepth
+ \prevdepth\oldprevdepth
+ \fi
+ \fi
+ \fi
+ \ifblankindeed
+ \ifdim1\savedlastskip<1\blankskip\relax
+ % else when \blank[2*groot] + \blank[3*groot] with parskip
+ % equaling 1*groot, gives a groot=\parskip so adding a small
+ % value makes it distinguishable; can also be done at parskip
+ % setting time (better)
+ \global\advance\blankskip \mindimen\relax % = skip
+ % test this on 2* + 3* and parskip groot
+ \ifblanknowhite
+ \global\advance\blankskip -\parskip
+ \else
+ \ifdim\savedlastskip=\parskip
+ \else % force this due to previous comment
+ \ifdim\parskip>\zeropoint\relax
+ \ifdim\blankskip<\parskip\relax
+ \global\blankskip\zeropoint
+ \else
+ \global\advance\blankskip -\parskip
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifblankflexible \else
+ \blankskip1\blankskip
+ \fi
+ \iflocalblankfixed
+ \blankskip1\blankskip
+ \fi
+ \iflocalblankflexible
+ \blankskip1\blankskip
+ \!!plus \skipgluefactor\blankskip
+ \!!minus\skipgluefactor\blankskip
+ \fi
+ \ifdim\lastkern=\noblanksignal\relax % controlled and grid
+ \global\blankindeedfalse
+ \else\ifnum\savedlastpenalty=\noblankpsignal\relax % controlled and grid
+ \global\blankindeedfalse
+ \else\ifgridsnapping\else\ifdim\prevdepth=\newprevdepth
+ \global\blankindeedfalse
+ \fi\fi\fi\fi
+ \ifblankindeed
+ \iffuzzyvskip
+ \removelastfuzzyvskip
+ \fuzzyvskip\blankskip\relax
+ \else
+ \relax\ifdim\savedlastskip=\zeropoint\else
+ \vskip-\savedlastskip
+ \fi
+ \vskip\blankskip\relax
+ \fi
+ \fi
+ \else
+ \iffuzzyvskip
+ \removelastfuzzyvskip
+ \fuzzyvskip\blankskip\relax
+ \else
+ % new, test this on pascal
+ \ifdim\blankskip<\zeropoint
+ \relax\ifdim\savedlastskip=\zeropoint\else
+ \advance\blankskip-\savedlastskip
+ \vskip-\savedlastskip
+ \fi
+ \ifdim\blankskip>\zeropoint
+ \vskip\blankskip
+ \else
+ \vskip\zeropoint
+ \fi
+ \else
+ % also new
+ \ifdim\blankskip=\zeropoint
+ \ifblanknowhite
+ \nowhitespace
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \global\fuzzyvskipfalse
+ \presetindentation}
+
+%D For a long time we had:
+%D
+%D \starttyping
+%D \def\simpledoblank%
+%D {\doifelse{\currentwhitespace}{\v!geen}
+%D {\blank[\currentblank]}
+%D {\blank[\currentwhitespace]}}
+%D \stoptyping
+%D
+%D But Berend de Boer wanted more control, so now we have:
+
+\def\simpledoblank % ...
+ {\doifelse\currentwhitespace\v!none
+ {\blank[\currentblank]}
+ {\blank[\s!default]}}
+
+%D Another useful definition would be:
+%D
+%D \starttyping
+%D \defineblank
+%D [\s!default]
+%D [\v!groot]
+%D \stoptyping
+
+\def\dosetupblank#1% amount are an plain inheritance
+ {\bigskipamount#1\relax
+ \ifblankflexible \else
+ \bigskipamount1\bigskipamount
+ \fi
+ \medskipamount \bigskipamount \divide\medskipamount \plustwo
+ \smallskipamount\bigskipamount \divide\smallskipamount\plusfour}%
+
+\def\complexsetupblank[#1]% more \let's
+ {\ifgridsnapping
+ \blankflexiblefalse
+ \else
+ \ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!flexible=>\blankflexibletrue,
+ \v!fixed=>\blankflexiblefalse]%
+ \fi
+ \ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!flexible=>\dosetupblank\appliedblankskip,
+ \v!fixed=>\dosetupblank\appliedblankskip,
+ \v!line=>\edef\appliedblankskip{\linedistance}%
+ \dosetupblank\appliedblankskip
+ ,%\let\deblanko\v!big,
+ \v!halfline=>\scratchskip.5\linedistance
+ \edef\appliedblankskip{\the\scratchskip}%
+ \dosetupblank\appliedblankskip
+ ,%\let\deblanko\v!medium,
+ \v!big=>\ifgridsnapping
+ \edef\appliedblankskip{\linedistance}%
+ \dosetupblank\appliedblankskip
+ \fi
+ \let\currentblank\v!big % was \def, why ?
+ ,%\let\deblanko\v!big,
+ \v!medium=>\let\currentblank\v!medium % was \def, why ?
+ ,%\let\deblanko\v!medium,
+ \v!small=>\let\currentblank\v!small % was \def, why ?
+ ,%\let\deblanko\v!small,
+ \v!normal=>\dosetupblank\appliedblankskip
+ ,%\let\deblanko\v!big,
+ \v!standard=>\edef\appliedblankskip{\skipfactor\linedistance}%
+ \dosetupblank\appliedblankskip
+ ,%\let\deblanko\v!big,
+ \s!default=>\dosetupblank\appliedblankskip
+ ,%\let\deblanko\v!big,
+ \s!unknown=>\let\appliedblankskip\commalistelement
+ \dosetupblank\appliedblankskip
+ ]%\let\deblanko\v!big]%
+ \simplesetupwhitespace}
+
+% \definecomplexorsimpleempty\setupblank
+%
+% speed gain: 60 sec -> 30 sec
+
+\definecomplexorsimple\setupblank
+
+\def\simplesetupblank % == snelle \setupblank[\s!default]
+ {\ifgridsnapping
+ \blankflexiblefalse
+ \fi
+ \dosetupblank\appliedblankskip
+ % \let\deblanko\v!big
+ \simplesetupwhitespace}
+
+\def\restorestandardblank% \v!standard
+ {\edef\appliedblankskip{\skipfactor\linedistance}%
+ \dosetupblank\appliedblankskip
+ }%\let\deblanko\v!big}
+
+\def\dodefineblank[#1][#2]%
+ {\def\docommando##1{\setvalue{\??bo##1}{#2}}%
+ \processcommalist[#1]\docommando}
+
+\def\defineblank
+ {\dodoubleargument\dodefineblank}
+
+\def\savecurrentblank
+ {\edef\restorecurrentblank
+ {\bigskipamount\the\bigskipamount
+ \medskipamount\the\medskipamount
+ \smallskipamount\the\smallskipamount
+ \noexpand\def\noexpand\currentblank{\currentblank}%
+ \ifblankflexible
+ \noexpand\blankflexibletrue
+ \else
+ \noexpand\blankflexiblefalse
+ \fi}}
+
+%D Now.
+
+\defineblank [\s!default] [\v!white]
+\defineblank [\v!height] [\strutheight]
+\defineblank [\v!depth] [\strutdepth]
+
+% old implementation
+%
+% \let\currentindentation=\empty
+%
+% \newdimen\ctxparindent
+%
+% \newif\ifindentfirstparagraph % \indentfirstparagraphtrue
+%
+% \def\presetindentation
+% {\doifoutervmode{\ifindentfirstparagraph\else\noindentation\fi}}
+%
+% \definecomplexorsimple\setupindenting
+%
+% \def\complexsetupindenting[#1]%
+% {\processallactionsinset
+% [#1]
+% [ \v!first=>\indentfirstparagraphtrue,
+% \v!next=>\indentfirstparagraphfalse,
+% \s!default=>\simplesetupindenting,
+% \s!unknown=>\edef\currentindentation{\commalistelement}%
+% \simplesetupindenting]}
+%
+% \def\simplesetupindenting
+% {\assigndimension\currentindentation\ctxparindent{1em}{1.5em}{2em}%
+% \parindent\ctxparindent\relax}
+%
+% \def\indenting % watch out: \dodo and no \do
+% {\dosingleargument\dodoindenting}
+%
+% \def\dodoindenting[#1]% oeps, we needed a commalist handler here!
+% {\edef\currentindenting{#1}%
+% \processcommacommand[#1]\dododoindenting}
+%
+% \def\dododoindenting#1%
+% {\executeifdefined{\??in:#1}\donothing}
+%
+% \let\currentindenting\empty
+%
+% \def\defineindentingmethod[#1]#2%
+% {\setvalue{\??in:#1}{#2}}
+%
+% \defineindentingmethod [\v!no] {\parindent\ctxparindent\noindent}
+% \defineindentingmethod [\v!not] {\parindent\ctxparindent\noindent}
+%
+% \defineindentingmethod [\v!first] {\indentfirstparagraphtrue}
+% \defineindentingmethod [\v!next] {\indentfirstparagraphfalse}
+%
+% \defineindentingmethod [\v!yes] {\parindent\ctxparindent\relax} % no \indent !
+% \defineindentingmethod [\v!always] {\parindent\ctxparindent\relax} % no \indent !
+%
+% \defineindentingmethod [\v!never] {\parindent\zeropoint\relax} % no \indent !
+%
+% \def\noindenting{\indenting[\v!no,\v!next]} % was \nietinspringen
+% \def\doindenting{\indenting[\v!yes,\v!first]} % was \welinspringen
+%
+% \def\dochecknextindentation#1% internal one
+% {\checknextindentation[\getvalue{#1\c!indentnext}]}
+%
+% \def\checknextindentation[#1]%
+% {\processaction[#1][%\v!keep=>,
+% \v!yes=>\doindentation,
+% \v!no=>\noindentation,
+% \v!auto=>\autoindentation]}
+%
+% \def\doindentation% too simple
+% {\gdef\checkindentation{\global\indentationtrue}}
+%
+% \ifx\autoindentation\undefined
+% \let\autoindentation\relax
+% \fi
+%
+% \newif\ifindentation \indentationtrue % documenteren, naar buiten
+%
+% \let\checkindentation=\relax
+%
+% \def\donoindentation
+% {\ifdim\parindent=\zeropoint \else
+% \bgroup \setbox\scratchbox\lastbox \egroup
+% \fi}
+%
+% \def\noindentation % made global
+% {\ifinpagebody \else
+% \global\indentationfalse
+% \gdef\checkindentation
+% {\donoindentation
+% \gdef\checkindentation{\global\indentationtrue}}%
+% \fi}
+%
+% \def\nonoindentation % bv bij floats
+% {\ifinpagebody \else
+% \global\indentationtrue
+% \gdef\checkindentation{\global\indentationtrue}%
+% \fi}
+%
+% \def\indentation
+% {\ifvmode \ifdim\parindent=\zeropoint \else
+% % was : \hskip\parindent
+% % can be: \indent
+% % but we test:
+% \noindent\hskip\parindent
+% \fi \fi}
+
+\let\currentindentation\empty % amount/keyword
+% \let\normalindentation \empty % used for reinstating normal indentation
+\let\currentindenting \empty % method
+
+\newdimen\ctxparindent
+
+\newif\ifindentfirstparagraph % \indentfirstparagraphtrue
+
+\chardef\indentingtoggle\zerocount
+
+%D After a blank or comparable situation (left side floats) we
+%D need to check if the next paragraph has to be indented.
+
+\def\presetindentation
+ {\doifoutervmode{\ifindentfirstparagraph\else\noindentation\fi}}
+
+%D This sets up the (normally) global indentation behavior as well
+%D as the amounts.
+
+\definecomplexorsimple\setupindenting
+
+\def\complexsetupindenting[#1]%
+ {\edef\currentindenting{#1}%
+ \indentfirstparagraphtrue
+ \parindent\ctxparindent
+ \chardef\indentingtoggle\zerocount
+ \processcommalist[#1]\docomplexsetupindenting
+ \ifindentfirstparagraph\else\noindentation\fi % added
+ \toggleindentation}
+
+% \def\docomplexsetupindenting#1%
+% {\edef\!!stringa{#1}% catch #1=\somedimen
+% \convertcommand\!!stringa\to\!!stringa
+% \executeifdefined{\??in:\!!stringa}{\edef\currentindentation{#1}\simplesetupindenting}}
+
+\def\docomplexsetupindenting#1%
+ {\edef\!!stringa{#1}% catch #1=\somedimen
+ \convertcommand\!!stringa\to\!!stringa
+ \executeifdefined{\??in:\!!stringa}
+ {\edef\currentindentation{#1}%
+ \let\normalindentation\currentindentation
+ \simplesetupindenting}}
+
+\def\simplesetupindenting % empty case
+ {\assigndimension\currentindentation\ctxparindent{1em}{1.5em}{2em}}
+
+\def\indenting % kind of obsolete
+ {\dosingleargument\complexsetupindenting}
+
+% use \noindentation to suppress next indentation
+
+\def\defineindentingmethod[#1]#2%
+ {\setvalue{\??in:#1}{#2}}
+
+\defineindentingmethod [\v!no] {\parindent\zeropoint}% was: \ctxparindent\noindent}
+\defineindentingmethod [\v!not] {\parindent\zeropoint}% was: \ctxparindent\noindent}
+
+\defineindentingmethod [\v!first] {\indentfirstparagraphtrue}
+\defineindentingmethod [\v!next] {\indentfirstparagraphfalse}
+
+\defineindentingmethod [\v!yes] {\parindent\ctxparindent\relax} % no \indent !
+\defineindentingmethod [\v!always] {\parindent\ctxparindent\relax} % no \indent !
+
+\defineindentingmethod [\v!never] {\parindent\zeropoint\relax} % no \indent !
+
+\defineindentingmethod [\v!odd] {\chardef\indentingtoggle\plusone}
+\defineindentingmethod [\v!even] {\chardef\indentingtoggle\plustwo}
+
+\defineindentingmethod [\v!normal] {\ifx\normalindentation\empty\else
+ \let\currentindentation\normalindentation
+ \simplesetupindenting
+ \fi}
+
+\def\noindenting{\indenting[\v!no, \v!next ]}
+\def\doindenting{\indenting[\v!yes,\v!first]}
+
+%D This one sets up the local indentation behaviour (i.e. either or not
+%D a next paragraph will be indented).
+
+\def\dochecknextindentation#1% internal one
+ {\checknextindentation[\getvalue{#1\c!indentnext}]}
+
+\def\checknextindentation[#1]%
+ {\processaction
+ [#1]
+ [%\v!keep=>,
+ \v!yes=>\doindentation,
+ \v!no=>\noindentation,
+ \v!auto=>\autoindentation]}
+
+%D Here come the handlers.
+
+\newif\ifindentation \indentationtrue % documenteren, naar buiten
+
+\let\checkindentation\relax
+
+\ifx\autoindentation\undefined \let\autoindentation\relax \fi % hook
+
+\def\doindentation
+ {\gdef\checkindentation{\global\indentationtrue}}
+
+\def\noindentation % made global
+ {\ifinpagebody \else
+ \global\indentationfalse
+ \gdef\checkindentation
+ {\donoindentation
+ \gdef\checkindentation{\global\indentationtrue}}%
+ \fi}
+
+\def\nonoindentation % bv bij floats
+ {\ifinpagebody \else
+ \global\indentationtrue
+ \gdef\checkindentation{\global\indentationtrue}%
+ \fi}
+
+\def\donoindentation
+ {\ifdim\parindent=\zeropoint \else
+ \bgroup \setbox\scratchbox\lastbox \egroup
+ \fi}
+
+\def\indentation
+ {\ifvmode \ifdim\parindent=\zeropoint \else
+ % was : \hskip\parindent
+ % can be: \indent
+ % but we test:
+ \noindent\hskip\parindent
+ \fi \fi}
+
+\def\toggleindentation
+ {\ifcase\indentingtoggle
+ % nothing
+ \or
+ \notoggleindentation
+ \or
+ \dotoggleindentation
+ \fi}
+
+\def\dokillindentation
+ {\gdef\checkindentation{\global\indentationfalse\donoindentation}}
+
+\def\dotoggleindentation
+ {\gdef\checkindentation{\global\indentationfalse\notoggleindentation\donoindentation}}
+
+\def\notoggleindentation
+ {\gdef\checkindentation{\global\indentationtrue\dotoggleindentation}}
+
+% \frenchspacing leidt soms tot afbreken tussen -, vandaar
+% de variant \newfrenchspacing.
+
+\def\dofrenchspacing#1%
+ {\sfcode`\.#1 \sfcode`\,#1\relax
+ \sfcode`\?#1 \sfcode`\!#1\relax
+ \sfcode`\:#1 \sfcode`\;#1\relax}
+
+\def\frenchspacing {\dofrenchspacing{1000}}
+\def\newfrenchspacing{\dofrenchspacing{1050}}
+
+\def\nonfrenchspacing
+ {\sfcode`\.3000 \sfcode`\,1250
+ \sfcode`\?3000 \sfcode`\!3000
+ \sfcode`\:2000 \sfcode`\;1500 }
+
+\def\definespacingmethod[#1]#2{\setvalue{\??sg\??sg#1}{#2}}
+
+\definespacingmethod[\v!packed]{\newfrenchspacing}
+\definespacingmethod[\v!broad ]{\nonfrenchspacing}
+
+\def\complexsetupspacing[#1]%
+ {\executeifdefined{\??sg\??sg#1}\relax
+ \updateraggedskips}
+
+\def\simplesetupspacing
+ {\updateraggedskips}
+
+\definecomplexorsimple\setupspacing
+
+\catcode`\~=\@@active % to be sure
+
+\unexpanded\def~{\nonbreakablespace}
+
+\def\space { }
+\def\removelastspace{\ifhmode\unskip\fi}
+\def\nospace {\removelastspace\ignorespaces}
+
+% in tables we need:
+%
+% \def\fixedspace {\hskip.5em\relax}
+%
+% but, since not all fonts have .5em digits:
+
+\def\fixedspace
+ {\setbox\scratchbox\normalhbox\ifmmode{$0$}\else{0}\fi
+ \hskip\wd\scratchbox\relax}
+
+\def\fixedspaces
+ {\catcode`\~=\@@active
+ \def~{\fixedspace}}
+
+% \def\removeunwantedspaces{\ifhmode\unskip\unskip\unskip\unskip\unskip\fi}
+
+\def\removeunwantedspaces
+ {\ifhmode
+ \doloop{\ifdim\lastskip>\zeropoint\unskip\else\exitloop\fi}%
+ \fi}
+
+% better, but not done:
+%
+% \def\removelastspace
+% {\ifhmode \ifdim\lastskip=\spaceamount\relax
+% \unskip
+% \fi \fi}
+%
+% due to backward compability
+
+\let\space \space
+\let\hardespatie\fixedspace
+\let\geenspatie \nospace
+
+% \startbuffer
+% \startlines \tt \fixedspaces
+% 0~1~~2~~~3~~~~4~~~~~5
+% 0~~~~~~~~~~~~~~~~~~~5
+% $0~1~~2~~~3~~~~4~~~~~5$
+% $0~~~~~~~~~~~~~~~~~~~5$
+% \stoplines
+%
+% \starttabulate[|~|]
+% \NC 0~1~~2~~~3~~~~4~~~~~5 \NC \NR \NC 0~~~~~~~~~~~~~~~~~~~5 \NC \NR
+% \NC $0~1~~2~~~3~~~~4~~~~~5$ \NC \NR \NC $0~~~~~~~~~~~~~~~~~~~5$ \NC \NR
+% \stoptabulate
+%
+% \starttable[||]
+% \NC 0~1~~2~~~3~~~~4~~~~~5 \NC \AR \NC 0~~~~~~~~~~~~~~~~~~~5 \NC \AR
+% \NC $0~1~~2~~~3~~~~4~~~~~5$ \NC \AR \NC $0~~~~~~~~~~~~~~~~~~~5$ \NC \AR
+% \stoptable
+% \stopbuffer
+%
+% \setupbodyfont[cmr] \getbuffer
+% \setupbodyfont[lbr] \getbuffer
+
+\def\packed
+ {\nointerlineskip}
+
+\def\godown[#1]%
+ {\relax
+ \ifhmode\endgraf\fi
+ \ifvmode\nointerlineskip\vskip#1\relax}
+
+%D A couple of plain macros:
+
+\ifx\thinspace\undefined
+
+ \def\thinspace {\kern .16667em }
+ \def\negthinspace{\kern-.16667em }
+ \def\enspace {\kern .5em }
+
+\fi
+
+\ifx\quad\undefined
+
+ \def\enskip{\hskip.5em\relax}
+ \def\quad {\hskip 1em\relax}
+ \def\qquad {\hskip 2em\relax}
+
+\fi
+
+\let\emspace\quad
+
+\ifx\smallskip\undefined
+
+ \def\smallskip{\vskip\smallskipamount}
+ \def\medskip {\vskip\medskipamount}
+ \def\bigskip {\vskip\bigskipamount}
+
+\fi
+
+\ifx\allowbreak\undefined
+
+ \def\break {\penalty-\@M}
+ \def\nobreak {\penalty \@M}
+ \def\allowbreak{\penalty \z@}
+ \def\filbreak {\par\vfil\penalty-200\vfilneg}
+ \def\goodbreak {\par\penalty-500 }
+
+\fi
+
+%D Made slightly more readable:
+
+\ifx\vglue\undefined
+
+ \def\vglue {\afterassignment\dovglue\scratchskip=}
+ \def\hglue {\afterassignment\dohglue\scratchskip=}
+ \def\topglue{\nointerlineskip\vglue-\topskip\vglue}
+
+ \def\dovglue
+ {\par
+ \scratchdimen\prevdepth
+ \hrule\!!height\zeropoint
+ \nobreak\vskip\scratchskip
+ \prevdepth\scratchdimen}
+
+ \def\dohglue
+ {\leavevmode
+ \scratchcounter\spacefactor
+ \vrule\!!width\zeropoint
+ \nobreak\hskip\scratchskip
+ \spacefactor\scratchcounter}
+
+\fi
+
+\ifx\eject\undefined
+
+ \def\eject{\par\break}
+
+\fi
+
+\ifx\supereject\undefined
+
+ \def\supereject{\par\penalty-\@MM}
+
+\fi
+
+\ifx\dosupereject\undefined
+
+ \def\dosupereject
+ {\ifnum\insertpenalties>\z@ % something is being held over
+ \line{}
+ \kern-\topskip
+ \nobreak
+ \vfill\supereject
+ \fi}
+
+\fi
+
+%D We adapt plain's \type {\removelastskip} a bit:
+
+\ifx\removelastskip\undefined
+
+ \def\removelastskip
+ {\ifvmode \ifdim\lastskip=\zeropoint \else
+ \vskip-\lastskip
+ \fi \fi}
+
+\fi
+
+\ifx\smallbreak\undefined
+
+\def\smallbreak
+ {\par
+ \ifdim\lastskip<\smallskipamount
+ \removelastskip
+ \penalty-50
+ \smallskip
+ \fi}
+
+\def\medbreak
+ {\par
+ \ifdim\lastskip<\medskipamount
+ \removelastskip
+ \penalty-100
+ \medskip
+ \fi}
+
+\def\bigbreak
+ {\par
+ \ifdim\lastskip<\bigskipamount
+ \removelastskip
+ \penalty-200
+ \bigskip
+ \fi}
+
+\fi
+
+\newskip\ctxparskip \ctxparskip\zeropoint
+
+\newif\ifwitruimteflexibel \witruimteflexibeltrue
+
+\def\blankokleinmaat {\smallskipamount}
+\def\blankomiddelmaat {\medskipamount}
+\def\blankogrootmaat {\bigskipamount}
+\def\currentwhitespace {\zeropoint}
+
+% \def\stelwitruimteopnieuwin
+% {\expanded{\setupwhitespace[\currentwhitespace]}}
+%
+% \newif\ifwitruimteflexibel \witruimteflexibeltrue
+%
+% \definecomplexorsimple\setupwhitespace
+%
+% \def\complexsetupwhitespace[#1]%
+% {\expanded{\dosetupwhitespace[#1]}%
+% \dodosetupwhitespace}
+%
+% \def\dosetupwhitespace[#1]%
+% {\processallactionsinset
+% [#1]
+% [\v!herstel=>,
+% \v!vast=>\witruimteflexibelfalse,
+% \v!flexibel=>\witruimteflexibeltrue,
+% \v!regel=>\ctxparskip\baselineskip,
+% \v!halveregel=>\ctxparskip.5\baselineskip,
+% \s!default=>\doifnot\currentwhitespace\v!geen\stelwitruimteopnieuwin,
+% \s!unknown=>\@EA\assigndimension\@EA{\commalistelement} % \@EA is nodig
+% \ctxparskip\blankokleinmaat\blankomiddelmaat\blankogrootmaat]} % te vangen
+%
+% \def\dodosetupwhitespace
+% {\edef\currentwhitespace
+% {\ifdim\ctxparskip=\zeropoint
+% \v!geen
+% \else
+% \ifgridsnapping\the\baselineskip\else\the\ctxparskip\fi
+% \fi}%
+% \ifgridsnapping
+% \witruimteflexibelfalse
+% \ctxparskip1\ctxparskip
+% \ifdim\ctxparskip>\zeropoint
+% \ctxparskip\baselineskip
+% \fi
+% \else
+% \ifwitruimteflexibel \else \ctxparskip1\ctxparskip \fi
+% \fi
+% \parskip\ctxparskip}
+%
+% \def\simplesetupwhitespace% == snelle \setupwhitespace[\s!default]
+% {\doifnot\currentwhitespace\v!geen\stelwitruimteopnieuwin
+% \dodosetupwhitespace}
+
+\definecomplexorsimple\setupwhitespace
+
+\def\simplesetupwhitespace
+ {\doifnot\currentwhitespace\v!none\dosetupwhitespace}
+
+\def\complexsetupwhitespace[#1]%
+ {\doifelsenothing{#1}
+ {\simplesetupwhitespace}
+ {\edef\currentwhitespace{#1}%
+ \dosetupwhitespace}}
+
+\def\dosetupwhitespace
+ {\processcommacommand[\currentwhitespace]\dowhitespacemethod
+ \dodosetupwhitespace}
+
+\def\dodosetupwhitespace
+ {\ifgridsnapping
+ \witruimteflexibelfalse
+ \ctxparskip1\ctxparskip
+ \ifdim\ctxparskip>\zeropoint
+ \ctxparskip\baselineskip
+ \fi
+ \else
+ \ifwitruimteflexibel \else \ctxparskip1\ctxparskip \fi
+ \fi
+ \parskip\ctxparskip}
+
+\definesystemvariable {ws} % whitespace
+
+\def\definewhitespacemethod[#1]#2{\setvalue{\??ws\??ws#1}{#2}}
+
+\definewhitespacemethod [\v!fix] {}
+\definewhitespacemethod [\v!fixed] {\witruimteflexibelfalse}
+\definewhitespacemethod [\v!flexible] {\witruimteflexibeltrue}
+\definewhitespacemethod [\v!line] {\ctxparskip \baselineskip}
+\definewhitespacemethod [\v!halfline] {\ctxparskip.5\baselineskip}
+\definewhitespacemethod [\v!none] {\ctxparskip \zeropoint}
+\definewhitespacemethod [\v!big] {\ctxparskip \blankogrootmaat}
+\definewhitespacemethod [\v!medium] {\ctxparskip \blankomiddelmaat}
+\definewhitespacemethod [\v!small] {\ctxparskip \blankokleinmaat}
+
+\definewhitespacemethod [\s!default] {\stelwitruimteopnieuwin}
+
+\def\dowhitespacemethod#1%
+ {\executeifdefined{\??ws\??ws#1}{\ctxparskip#1}\relax}
+
+\def\nowhitespace
+ {\ifdim\parskip>\zeropoint\relax
+ \ifdim\lastskip=-\parskip
+ \else
+ \vskip-\parskip
+ \fi
+ \fi}
+
+\def\savecurrentwhitespace
+ {\edef\restorecurrentwhitespace
+ {\ctxparskip\the\ctxparskip
+ \parskip\the\parskip
+ \noexpand\def\noexpand\currentwhitespace{\currentwhitespace}%
+ \ifwitruimteflexibel
+ \noexpand\witruimteflexibeltrue
+ \else
+ \noexpand\witruimteflexibelfalse
+ \fi}}
+
+% deze variant is nodig binnen \startopelkaar
+% steeds testen:
+%
+% \hoofdstuk{..}
+% \plaatslijst[..]
+% \hoofdstuk{..}
+% \input tufte
+%
+% met/zonder witruimte
+
+\def\whitespace
+ {\par
+ \ifdim\parskip>\zeropoint\relax
+ %\ifdim\lastskip>\parskip \else
+ % \removelastskip interferes with blanko blokkeer en klein
+ \vskip\parskip
+ %\fi
+ \fi}
+
+\def\nonoblanko[#1]%
+ {\par}
+
+\def\noblanko
+ {\dosingleempty\nonoblanko}
+
+% De onderstaande macro handelt ook de situatie dat er geen
+% tekst tussen \start ... \stop is geplaatst. Daartoe wordt de
+% laatste skip over de lege tekst heen gehaald. Dit komt goed
+% van pas bij het plaatsen van (mogelijk lege) lijsten.
+
+\newif\ifopelkaar
+
+\newsignal \noparskipsignal % \def\noparskipsignal {0.00001pt}
+\def\lastdoneparskip {0pt}
+
+\def\startpacked
+ {\dosingleempty\dostartpacked}
+
+\def\dostartpacked[#1]% nesting afvangen
+ {\par
+ \ifvmode
+ \edef\lastdoneparskip {\the\lastskip}%
+ \edef\lastdoneprevdepth{\the\prevdepth}% zeer recent toegevoegd
+ \ifdim\prevdepth=-\thousandpoint % toegevoegd omdat binnen
+ \else % een vbox een extra skip
+ \whitespace % ongewenst is; dit kan
+ \baselinecorrection %% zie in \placeregister[n=1]
+ \vskip\noparskipsignal % waarschijnlijk ook in
+ \fi % blanko blokkeer
+ \bgroup
+ \doifelse{#1}\v!blank
+ \opelkaarfalse
+ \opelkaartrue
+ \blank[\v!disable] % dit is nog niet ok, gaat fout
+ \setupwhitespace[\v!none] % bovenin vtop (dwz, baseline)
+ \fi}
+
+\def\stoppacked
+ {\par
+ \ifvmode
+ \egroup
+ \ifdim\lastskip=\noparskipsignal\relax
+ \removelastskip
+ \nowhitespace
+ \vskip-\lastdoneparskip
+ \vskip+\lastdoneparskip
+ \prevdepth-\lastdoneprevdepth % zeer recent toegevoegd
+ \fi
+ \fi}
+
+\def\startunpacked
+ {\blank
+ \leavevmode
+ \bgroup}
+
+\def\stopunpacked
+ {\egroup
+ \blank}
+
+% De onderstaande macro's moeten nog eens nader worden uitgewerkt.
+% Ze spelen een rol bij de spatiering rond omkaderde teksten
+% en/of boxen zonder diepte.
+
+\def\toonregelcorrectie{\showbaselinecorrection}
+\def\regelcorrectie {\baselinecorrection}
+
+% \prevdepth crosses pageboundaries!
+%
+% todo: a version that works ok inside a box
+
+\let\doaroundlinecorrection\relax
+
+\def\startlinecorrection
+ {\dodoubleempty\dostartlinecorrection}
+
+\def\dostartlinecorrection[#1][#2]% #2 gobbles spaces
+ {\bgroup
+ \processaction
+ [#1]
+ [ \v!blank=>\let\doaroundlinecorrection\blank,
+ \s!default=>\let\doaroundlinecorrection\relax,
+ \s!unknown=>{\def\doaroundlinecorrection{\blank[#1]}}]%
+ \doaroundlinecorrection
+ \startbaselinecorrection
+ \offbaselinecorrection
+ \ignorespaces}
+
+\def\stoplinecorrection
+ {\stopbaselinecorrection
+ \doaroundlinecorrection
+ \egroup}
+
+\def\correctwhitespace
+ {\dowithnextbox
+ {\startbaselinecorrection
+ \flushnextbox
+ \stopbaselinecorrection}%
+ \vbox}
+
+\def\verticalstrut {\normalvbox{\hsize\zeropoint\strut}}
+\def\horizontalstrut{\normalhbox {\strut}}
+
+% Hieronder volgen enkele instellingen en macro's ten behoeve
+% van de interlinie en \strut. De waarden 2.8, 0.07, 0.72 en
+% 0.28 zijn ooit eens ontleend aan INRS-TEX en moeten wellicht
+% nog eens instelbaar worden.
+%
+% \lineheight : de hoogte van een regel
+% \spacing{getal} : instellen interlinie
+% \normalbaselines : instellen regelafstend
+%
+% \setstrut : instellen \strut
+% \setnostrut : resetten \strut, \endstrut, \begstrut
+%
+% \setteststrut : instellen zichtbare struts
+% \resetteststrut : instellen onzichtbare struts
+%
+% \setfontparameters : instellen na fontset
+%
+% De hoogte van een regel (\lineheight) is gelijk aan de
+% som van de hoogte (\ht) en diepte (\dp) van \strutbox.
+%
+% \strut : denkbeeldig blokje met hoogte en diepte
+%
+% Een \hbox kan als deze aan het begin van een regel staat
+% een breedte \hsize krijgen. Dit is soms te voorkomen met het
+% commando \leavevmode. Binnen een \vbox geeft dit echter
+% niet altijd het gewenste resultaat, vandaar het commando
+%
+% \leaveoutervmode
+
+% Pas op: niet zomaar \topskip en \baselineskip aanpassen
+% en zeker niet \widowpenalty. Dit kan ernstige gevolgen
+% hebben voor kolommen.
+%
+% Enige glue kan op zich geen kwaad, echter als blanko=vast,
+% dan moet ook de rek 0 zijn. Binnen kolommen is rek ook
+% niet bepaald mooi. Een hele kleine waarde (0.025) voldoet,
+% omdat een positieve glue eindeloos rekbaar is.
+
+\newdimen\strutdimen
+\newdimen\lineheight
+\newdimen\openlineheight
+\newdimen\openstrutheight
+\newdimen\openstrutdepth
+\newdimen\topskipgap
+\newdimen\struttotal
+
+\def\strutheightfactor {.72}
+\def\strutdepthfactor {.28}
+
+\def\baselinefactor {2.8}
+\def\baselinegluefactor {0}
+
+\def\minimumstrutheight {0pt}
+\def\minimumstrutdepth {0pt}
+
+\def\normallineheight {\baselinefactor ex}
+\def\minimumlinedistance {\lineskip}
+
+\def\strutheight {0pt}
+\def\strutdepth {0pt}
+\def\strutwidth {0pt}
+
+\def\spacingfactor {1}
+
+\def\topskipfactor {1.0}
+\def\maxdepthfactor {0.5}
+
+\def\systemtopskipfactor {\topskipfactor}
+\def\systemmaxdepthfactor {\maxdepthfactor}
+
+% De onderstaande definitie wordt in de font-module overruled
+
+\ifx\globalbodyfontsize\undefined
+ \newdimen\globalbodyfontsize
+ \globalbodyfontsize=12pt
+\fi
+
+\ifx\normalizedbodyfontsize\undefined
+ \def\normalizedbodyfontsize{12pt}
+\fi
+
+% door een \dimen. Dit is geen probleem omdat (1) de default
+% korpsgrootte 12pt is en (2) de fonts nog niet geladen zijn
+% en de instellingen bij het laden nogmaals plaatsvinden.
+
+% \def\topskipcorrection
+% {\ifdim\topskip>\openstrutheight
+% % == \vskip\topskipgap
+% \vskip\topskip
+% \vskip-\openstrutheight
+% \fi
+% \verticalstrut
+% \vskip-\struttotal}
+
+\def\topskipcorrection
+ {\simpletopskipcorrection
+ \vskip-\struttotal
+ \verticalstrut}
+
+\def\simpletopskipcorrection
+ {\ifdim\topskip>\openstrutheight
+ % == \vskip\topskipgap
+ \vskip\topskip
+ \vskip-\openstrutheight
+ \fi}
+
+% \def\settopskip % the extra test is needed for the lbr family
+% {\topskip\systemtopskipfactor\globalbodyfontsize
+% \ifgridsnapping \else
+% \ifr@ggedbottom\!!plus5\globalbodyfontsize\fi
+% \fi
+% \relax % the skip
+% \topskipgap\topskip
+% \advance\topskipgap -\openstrutheight\relax
+% \ifdim\topskip<\strutheightfactor\openlineheight
+% \topskip\strutheightfactor\openlineheight\relax
+% \fi}
+
+\def\settopskip % the extra test is needed for the lbr family
+ {\topskip\systemtopskipfactor\globalbodyfontsize
+ \ifgridsnapping \else
+ \ifr@ggedbottom\!!plus5\globalbodyfontsize\fi
+ \fi
+ \relax % the skip
+ \topskipgap\topskip
+ \advance\topskipgap -\openstrutheight\relax
+\ifdim\minimumstrutheight>\zeropoint
+ \ifdim\topskip<\minimumstrutheight
+ \topskip\minimumstrutheight\relax
+ \fi
+\else
+ \ifdim\topskip<\strutheightfactor\openlineheight
+ \topskip\strutheightfactor\openlineheight\relax
+ \fi
+\fi}
+
+\def\setmaxdepth
+ {\maxdepth\systemmaxdepthfactor\globalbodyfontsize}
+
+\def\normalbaselines
+ {\baselineskip \normalbaselineskip
+ \lineskip \normallineskip
+ \lineskiplimit\normallineskiplimit}
+
+% \def\setnormalbaselines
+% {\ifdim\normallineheight>\zeropoint
+% \lineheight\normallineheight
+% \fi
+% \openlineheight\spacingfactor\lineheight
+% \openstrutheight\strutheightfactor\openlineheight
+% \openstrutdepth \strutdepthfactor \openlineheight
+% \normalbaselineskip\openlineheight
+% \!!plus\baselinegluefactor\openlineheight
+% \!!minus\baselinegluefactor\openlineheight
+% \normallineskip\minimumlinedistance\relax % \onepoint\relax
+% \normallineskiplimit\zeropoint\relax
+% \normalbaselines}
+
+\def\setnormalbaselines
+ {\ifdim\normallineheight>\zeropoint
+ \lineheight\normallineheight
+ \fi
+ \openlineheight\spacingfactor\lineheight
+ \openstrutheight \ifdim\minimumstrutheight>\zeropoint
+ \minimumstrutheight % new
+ \else
+ \strutheightfactor\openlineheight
+ \fi
+ \openstrutdepth \ifdim\minimumstrutdepth>\zeropoint
+ \minimumstrutdepth % new
+ \else
+ \strutdepthfactor \openlineheight
+ \fi
+ \begingroup % avoid interference
+ \scratchdimen\minimumstrutdepth
+ \advance\scratchdimen\minimumstrutheight
+ \ifdim\scratchdimen>\zeropoint
+ \endgroup
+ \openlineheight\openstrutheight % new
+ \advance\openlineheight\openstrutdepth % new
+ \else
+ \endgroup
+ \fi
+ \normalbaselineskip\openlineheight
+\ifgridsnapping\else
+ \!!plus \baselinegluefactor\openlineheight
+ \!!minus\baselinegluefactor\openlineheight
+\fi
+ \normallineskip\minimumlinedistance\relax % \onepoint\relax
+ \normallineskiplimit\zeropoint\relax
+ \normalbaselines}
+
+\def\setspacingfactor#1\to#2\by#3\\%
+ {\strutdimen#2\points
+ \strutdimen#3\strutdimen
+ \edef#1{\withoutpt\the\strutdimen}}
+
+\def\spacing#1%
+ {\ifgridsnapping
+ %\doifnot{#1}{1}{\showmessage\m!layouts{11}{#1}}%
+ \ifdim#1\points=\onepoint\else\showmessage\m!layouts{11}{#1}\fi
+ \edef\spacingfactor{1}%
+ \else
+ \edef\spacingfactor{#1}%
+ \fi
+ \setspacingfactor\systemtopskipfactor \to\topskipfactor \by#1\\% why no \spacingfactor ?
+ \setspacingfactor\systemmaxdepthfactor\to\maxdepthfactor\by#1\\% why no \spacingfactor ?
+ \setnormalbaselines
+ \setstrut}
+
+\def\setstrutdimen#1#2#3% % een strut is n.m maal ex
+ {\strutdimen\normallineheight % wat niet per se \lineheight
+ \strutdimen#2\strutdimen % is omdat een strut lokaal
+ \strutdimen#3\strutdimen % kan afwijken van de globale
+ \edef#1{\the\strutdimen}} % macro % strut
+
+%D Sometimes one needs to freeze the interlinespacing
+%D
+%D \starttyping
+%D \rm \saveinterlinespace .... {\ss \restoreinterlinespace .... \endgraf}
+%D \stoptyping
+
+\let\restoreinterlinespace\relax
+
+\beginTEX
+
+\def\saveinterlinespace
+ {\scratchdimen\normallineheight
+ \edef\restoreinterlinespace
+ {\lineheight \the\lineheight
+ \openstrutheight \the\openstrutheight
+ \openstrutdepth \the\openstrutdepth
+ \openlineheight \the\openlineheight
+ \normalbaselineskip \the\normalbaselineskip
+ \normallineskip \the\normallineskip
+ \normallineskiplimit\the\normallineskiplimit
+ \noexpand\def\noexpand\normallineheight{\the\scratchdimen}%
+ \noexpand\normalbaselines}}
+
+\endTEX
+
+\beginETEX
+
+\def\saveinterlinespace
+ {\edef\restoreinterlinespace
+ {\lineheight \the\lineheight
+ \openstrutheight \the\openstrutheight
+ \openstrutdepth \the\openstrutdepth
+ \openlineheight \the\openlineheight
+ \normalbaselineskip \the\normalbaselineskip
+ \normallineskip \the\normallineskip
+ \normallineskiplimit\the\normallineskiplimit
+ \noexpand\def\noexpand\normallineheight{\the\dimexpr\normallineheight\relax}%
+ \noexpand\normalbaselines}}
+
+\endETEX
+
+% plain definition:
+%
+% \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+%
+% could be:
+%
+% \def\strut{\relax\ifmmode\copy\else\unhcopy\fi\strutbox}
+
+\ifx\strutbox\undefined
+
+ \newbox\strutbox
+
+ \setbox\strutbox=\normalhbox{\vrule height8.5pt depth3.5pt width\z@}
+
+ %\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+ \def\strut{\relax\ifmmode\copy\else\unhcopy\fi\strutbox}
+
+\fi
+
+\let\normalstrut=\strut
+
+% The double \hbox construction enables us to \backtrack
+% boxes.
+
+% \def\setstrut
+% {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
+% \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
+% \let\strut=\normalstrut
+% \setbox\strutbox=\normalhbox
+% {\normalhbox
+% {\vrule
+% \!!width \strutwidth
+% \!!height \strutheight
+% \!!depth \strutdepth
+% \normalkern-\strutwidth}}}
+
+% \def\setstrut
+% {\setstrutdimen\strutheight\strutheightfactor\spacingfactor
+% \setstrutdimen\strutdepth \strutdepthfactor \spacingfactor
+% \dosetstrut}
+
+% \def\setstrut
+% {\strutdimen\normallineheight
+% \strutdimen\strutheightfactor\strutdimen
+% \strutdimen\spacingfactor\strutdimen
+% \edef\strutheight{\the\strutdimen}%
+% \strutdimen\normallineheight
+% \ifgridsnapping
+% \advance\strutdimen-\strutheight
+% \else
+% \strutdimen\strutdepthfactor\strutdimen
+% \strutdimen\spacingfactor\strutdimen
+% \fi
+% \edef\strutdepth{\the\strutdimen}%
+% \dosetstrut}
+
+\def\setstrut
+ {% height
+ \strutdimen\normallineheight
+\ifdim\minimumstrutheight>\zeropoint
+ \strutdimen\minimumstrutheight
+\else
+ \strutdimen\strutheightfactor\strutdimen
+\fi
+ \strutdimen\spacingfactor\strutdimen
+ \edef\strutheight{\the\strutdimen}%
+ % depth
+ \strutdimen\normallineheight
+ \ifgridsnapping
+\ifdim\minimumstrutdepth>\zeropoint
+ \strutdimen\minimumstrutdepth
+\else
+ \advance\strutdimen-\strutheight
+\fi
+ \else
+\ifdim\minimumstrutdepth>\zeropoint
+ \strutdimen\minimumstrutdepth
+\else
+ \strutdimen\strutdepthfactor\strutdimen
+\fi
+ \strutdimen\spacingfactor\strutdimen
+ \fi
+ \edef\strutdepth{\the\strutdimen}%
+ % finish
+ \dosetstrut}
+
+\def\setcharstrut#1%
+ {\setbox\strutbox\normalhbox{#1}%
+ \edef\strutheight{\the\strutht}%
+ \edef\strutdepth {\the\strutdp}%
+ \dosetstrut}
+
+% \def\setfontstrut
+% {\setcharstrut{(}}
+%
+% better, since some fonts have small (but descending Q etc)
+
+\def\setfontstrut
+ {\setcharstrut{(gplQT}}
+
+\def\setcapstrut% could be M, but Q has descender
+ {\setcharstrut{Q}}
+
+%D Centered looks nicer:
+
+\def\dosetstrut
+ {\let\strut\normalstrut
+ \setbox\strutbox\normalhbox
+ {\normalhbox to \zeropoint
+ {% \hss % new, will be option
+ \vrule
+ \!!width \strutwidth
+ \!!height\strutheight
+ \!!depth \strutdepth
+ \hss}}%
+ \struttotal\strutht
+ \advance\struttotal\strutdp}
+
+%D The dimen \type {\struttotal} holds the exact size of the
+%D strut; occasionally a one scaled point difference can show
+%D up with the lineheight.
+
+%D Sometimes a capstrut comes in handy
+%D
+%D \starttabulate[|Tl|l|l|]
+%D \NC yes \NC normal strut \NC {\showstruts\setupstrut[yes]\strut} \NC \NR
+%D \NC no \NC no strut \NC {\showstruts\setupstrut[no]\strut} \NC \NR
+%D \NC kap \NC a capital strut (i.e. Q) \NC {\showstruts\setupstrut[cap]\strut} \NC \NR
+%D \NC A B \unknown \NC a character strut (e.g. A) \NC {\showstruts\setupstrut[A]\strut} \NC \NR
+%D \NC \NC a normal strut \NC {\showstruts\setupstrut\strut} \NC \NR
+%D \stoptabulate
+
+\def\setupstrut
+ {\dosingleempty\dosetupstrut}
+
+\def\dosetupstrut[#1]% yet undocumented, todo: fontstrut
+ {\processaction
+ [#1]
+ [ \v!yes=>\setstrut,
+ \v!auto=>\setautostrut,
+ \v!no=>\setnostrut,
+ \v!cap=>\setcapstrut,
+ \v!fit=>\setfontstrut,
+ \v!line=>\setstrut,
+ \s!default=>\setstrut,
+ \s!unknown=>\setcharstrut\commalistelement]}
+
+\def\setteststrut
+ {\def\strutwidth{.8pt}%
+ \setstrut}
+
+\def\autostrutfactor{1.1}
+
+\def\setautostrut
+ {\begingroup
+ \setbox\scratchbox\copy\strutbox
+ \setstrut
+ \ifdim\ht\strutbox>\autostrutfactor\ht\scratchbox
+ \endgroup \setstrut
+ \else\ifdim\dp\strutbox>\autostrutfactor\dp\scratchbox
+ \endgroup \setstrut
+ \else
+ \endgroup
+ \fi\fi}
+
+% simple version
+%
+% \def\begstrut
+% {\relax\ifcase\strutht\else
+% \strut
+% \normalpenalty\@M % \!!tenthousand
+% \normalhskip\zeropoint
+% \ignorespaces
+% \fi}
+%
+% \def\endstrut
+% {\relax\ifhmode\ifcase\strutht\else
+% \removeunwantedspaces
+% \normalpenalty\@M % \!!tenthousand
+% \normalhskip\zeropoint
+% \strut
+% \fi\fi}
+
+% when enabled, sigstruts will remove themselves if nothing
+% goes inbetween
+
+\newsignal\strutsignal \setfalse\sigstruts
+
+\def\begstrut
+ {\relax\ifcase\strutht\else
+ \ifconditional\sigstruts
+ \noindent\horizontalstrut
+ \normalpenalty\@M % \!!tenthousand
+ \normalhskip-\strutsignal
+ \normalhskip\strutsignal
+ \else
+ \strut
+ \normalpenalty\@M % \!!tenthousand
+ \normalhskip\zeropoint
+ \fi
+ \ignorespaces
+ \fi}
+
+\def\endstrut
+ {\relax\ifhmode\ifcase\strutht\else
+ \ifconditional\sigstruts
+ \ifdim\lastskip=\strutsignal
+ \unskip\unskip\unpenalty\setbox\scratchbox\lastbox
+ \else
+ \normalpenalty\@M % \!!tenthousand
+ \normalhskip\zeropoint
+ \strut
+ \fi
+ \else
+ \removeunwantedspaces
+ \normalpenalty\@M % \!!tenthousand
+ \normalhskip\zeropoint
+ \strut
+ \fi
+ \fi\fi}
+
+\newbox\nostrutbox \setbox\nostrutbox\normalhbox{\normalhbox{}}
+
+\def\setnostrut
+ {\setbox\strutbox\copy\nostrutbox
+ \let\strut\empty
+ \let\endstrut\empty
+ \let\begstrut\empty}
+
+% unsave:
+%
+% \def\pseudostrut
+% {\bgroup
+% \setnostrut
+% \normalstrut
+% \egroup}
+%
+% try:
+%
+% \startchemie
+% \chemie[ONE,Z0,SB15,MOV1,SB15,Z0][C,C]
+% \stopchemie
+%
+% so:
+
+\def\pseudostrut
+ {\noindent} % better: \dontleavehmode
+
+\let\pseudobegstrut\pseudostrut
+
+\let\pseudoendstrut\removeunwantedspaces
+
+\def\resetteststrut
+ {\let\strutwidth\zeropoint
+ \setstrut}
+
+\ifx\setfontparameters\undefined
+ % problems ! ! ! !
+ \def\setfontparameters{\the\everybodyfont}
+\fi
+
+%D Handy:
+
+\def\baselinedistance{\the\lineheight}
+
+%D We need \type{\normaloffinterlineskip} because the new
+%D definition contains an assignment, and |<|don't ask me
+%D why|>| this assignment gives troubles in for instance the
+%D visual debugger.
+
+%D The plain ones:
+
+\def\offinterlineskip
+ {\baselineskip-\thousandpoint
+ \lineskip\zeropoint
+ \lineskiplimit\maxdimen}
+
+\def\nointerlineskip
+ {\prevdepth-\thousandpoint}
+
+\let\normaloffinterlineskip=\offinterlineskip % knuth's original
+
+%D My own one:
+
+\def\offinterlineskip
+ {\ifdim\baselineskip>\zeropoint
+ \edef\oninterlineskip
+ {\baselineskip\the\baselineskip
+ \lineskip\the\lineskip
+ \lineskiplimit\the\lineskiplimit
+ \let\noexpand\offinterlineskip\noexpand\normaloffinterlineskip}%
+ \else
+ \let\oninterlineskip\setnormalbaselines
+ \fi
+ \normaloffinterlineskip}
+
+\let\oninterlineskip=\relax
+
+\def\leaveoutervmode
+ {\ifvmode\ifinner\else
+ \leavevmode
+ \fi\fi}
+
+% We stellen enkele penalties anders in dan Plain TEX:
+
+% oud
+%
+% \widowpenalty=\defaultwidowpenalty\relax
+% \clubpenalty =\defaultclubpenalty \relax
+
+\beginTEX widowpenalties clubpenalties interlinepenalties
+
+ \newcount \widowpenalties
+ \newcount \clubpenalties
+ \newcount \interlinepenalties
+
+\endTEX
+
+% \setpenalties\widowpenalties2\maxdimen
+%
+% expands to \widowpenalty \maxdimen \maxdimen \zeropoint
+
+\beginTEX
+
+ \let\resetpenalties \gobbleoneargument
+ \let\setpenalties \gobblethreearguments
+ \let\doexpandedrecurse\gobbletwoarguments
+
+\endTEX
+
+\beginETEX \numexpr
+
+ \def\resetpenalties#1%
+ {\ifx#1\undefined\else
+ #1\minusone
+ \fi}
+
+% \def\setpenalties#1#2#3%
+% {\ifx#1\undefined\else % space before #3 prevents lookahead problems, needed when #3=text
+% #1\numexpr(#2+1)\space\doexpandedrecurse{\the\numexpr(#2)}{ #3}\zerocount\relax
+% \fi}
+
+ \def\setpenalties#1#2#3%
+ {\ifx#1\undefined\else % space before #3 prevents lookahead problems, needed when #3=text
+ #1\numexpr#2+\plusone\relax\space\doexpandedrecurse{\the\numexpr#2\relax}{ #3}\zerocount\relax
+ \fi}
+
+% \def\doexpandedrecurse#1#2%
+% {\ifnum#1>\zerocount#2\@EA\doexpandedrecurse\@EA{\the\numexpr(#1-1)}{#2}\fi}
+
+ \def\doexpandedrecurse#1#2%
+ {\ifnum#1>\zerocount#2\@EA\doexpandedrecurse\@EA{\the\numexpr#1-1\relax}{#2}\fi}
+
+\endETEX
+
+%D \macros
+%D {keeplinestogether}
+%D
+%D Dirty hack, needed in margin content that can run of a page.
+
+\beginETEX
+
+ \def\keeplinestogether#1%
+ {\xdef\restoreinterlinepenalty{\global\resetpenalties\interlinepenalties}%
+ \global\setpenalties\interlinepenalties{#1}\!!tenthousand}
+
+\endETEX
+
+\beginTEX
+
+ \def\keeplinestogether#1%
+ {\xdef\restoreinterlinepenalty
+ {\global\let\restoreinterlinepenalty\relax
+ \global\interlinepenalty=\the\interlinepenalty}% keep = here
+ \global\interlinepenalty\!!tenthousand}
+
+\endTEX
+
+\newif\ifgridsnapping % to be sure
+
+\def\defaultwidowpenalty {2000} % was: 1000
+\def\defaultclubpenalty {2000} % was: 800
+
+\def\defaultgridwidowpenalty {0}
+\def\defaultgridclubpenalty {0}
+
+% The original approach:
+%
+% \def\setdefaultpenalties
+% {\ifgridsnapping
+% \widowpenalty\defaultgridwidowpenalty
+% \clubpenalty \defaultgridclubpenalty
+% \else
+% \widowpenalty\defaultwidowpenalty
+% \clubpenalty \defaultclubpenalty
+% \fi}
+%
+% However, we will use setups:
+
+% to be documented
+
+\def\nopenalties
+ {\widowpenalty \zerocount
+ \clubpenalty \zerocount
+ \brokenpenalty \zerocount
+ \doublehyphendemerits\zerocount
+ \finalhyphendemerits \zerocount
+ \adjdemerits \zerocount}
+
+\def\setdefaultpenalties
+ {\setups[\systemsetupsprefix\s!default]}
+
+\startsetups [\systemsetupsprefix\v!reset]
+ \resetpenalties\widowpenalties
+ \resetpenalties\clubpenalties
+ \resetpenalties\interlinepenalties
+\stopsetups
+
+\startsetups [\systemsetupsprefix\s!default]
+
+ \setups[\systemsetupsprefix\s!reset]
+
+ \widowpenalty\defaultwidowpenalty
+ \clubpenalty \defaultclubpenalty
+
+\stopsetups
+
+\startsetups [\v!grid] [\systemsetupsprefix\s!default]
+
+ \setups[\systemsetupsprefix\v!reset]
+
+ \widowpenalty\defaultgridwidowpenalty
+ \clubpenalty \defaultgridclubpenalty
+
+\stopsetups
+
+% as an illustration:
+
+\startsetups [\systemsetupsprefix\v!strict]
+
+ \setups[\v!reset]
+
+ \setpenalties\widowpenalties2\maxdimen
+ \setpenalties\clubpenalties 2\maxdimen
+ \brokenpenalty \maxdimen
+
+\stopsetups
+
+\setdefaultpenalties % will happen later in \setuplayout
+
+% Suggested by GB (not the name -):
+
+\def\rapfillskip{.5\hsize plus .092\hsize minus .5\hsize} % D.A.'s value
+
+% Bovendien definieren we enkele extra \fill's:
+
+\def\hfilll{\hskip\zeropoint\!!plus1filll\relax}
+\def\vfilll{\vskip\zeropoint\!!plus1filll\relax}
+
+% De onderstaande hulpmacro's moeten nog eens instelbaar worden
+% gemaakt.
+
+\def\tfskipsize{1em\relax}
+\def\tfkernsize{1ex\relax}
+
+\def\tfskip{\dotfskip\tfskipsize}
+\def\tfkern{\dotfkern\tfkernsize}
+
+\def\dotfskip#1{{\tf\hskip#1}}
+\def\dotfkern#1{{\tf\kern #1}}
+
+\newskip\ctxleftskip
+\newskip\ctxrightskip
+\newskip\ctxmidskip
+
+\def\dosinglenarrower#1%
+ {\processaction
+ [#1]
+ [ \v!left=>\global\advance\ctxleftskip \@@slleft,
+ \v!middle=>\global\advance\ctxmidskip \@@slmiddle,
+ \v!right=>\global\advance\ctxrightskip \@@slright,
+ \v!none=>,
+ \s!unknown=>\global\advance\ctxmidskip \commalistelement]}
+
+\def\donarrower[#1]%
+ {\processaction
+ [#1]
+ [ \v!left=>\global\advance\ctxleftskip \@@slleft,
+ \v!middle=>\global\advance\ctxmidskip \@@slmiddle,
+ \v!right=>\global\advance\ctxrightskip \@@slright,
+ \v!none=>,% handy for delimitedtexts
+ \s!unknown=>{\dorepeatwithcommand[#1]\dosinglenarrower}]}
+
+\def\complexstartnarrower[#1]%
+ {\par
+ \bgroup
+ \global\ctxleftskip \zeropoint
+ \global\ctxrightskip\zeropoint
+ \global\ctxmidskip \zeropoint
+ \processcommalistwithparameters[#1]\donarrower
+ \advance\leftskip \ctxleftskip
+ \advance\rightskip \ctxrightskip
+ \advance\leftskip \ctxmidskip
+ \advance\rightskip \ctxmidskip
+ \seteffectivehsize}
+
+\def\simplestartnarrower
+ {\startnarrower[\v!middle]}
+
+\definecomplexorsimple\startnarrower
+
+\def\stopnarrower
+ {\par % else skips forgotten
+ \egroup}
+
+\def\setupnarrower
+ {\dodoubleargument\getparameters[\??sl]}
+
+\newdimen\@@effectivehsize \def\effectivehsize {\hsize}
+\newdimen\@@effectiveleftskip \def\effectiveleftskip {\leftskip}
+\newdimen\@@effectiverightskip \def\effectiverightskip{\rightskip}
+
+\def\seteffectivehsize
+ {\setlocalhsize
+ \@@effectivehsize \localhsize
+ \@@effectiveleftskip \leftskip
+ \@@effectiverightskip \rightskip
+ \let\effectivehsize \@@effectivehsize
+ \let\effectiveleftskip \@@effectiveleftskip
+ \let\effectiverightskip\@@effectiverightskip}
+
+\def\dodefinehbox[#1][#2]%
+ {\setvalue{hbox#1}##1%
+ {\hbox to #2{\begstrut##1\endstrut\hss}}}
+
+\def\definehbox
+ {\dodoubleargument\dodefinehbox}
+
+\def\iobox#1#2#3#% here #3# is not really needed
+ {\vbox\bgroup % we want to return a vbox like the others
+ \hbox\bgroup% we need to pack the signal with the box
+ \signalrightpage
+ \dowithnextboxcontent
+ {\let\\=\endgraf\forgetall\doifrightpageelse#1#2}
+ {\box\nextbox\egroup\egroup}
+ \vbox#3}
+
+\def\obox{\iobox\raggedleft \raggedright} % outerbox
+\def\ibox{\iobox\raggedright\raggedleft} % innerbox
+
+\def\dosetraggedvbox#1%
+ {\processaction
+ [#1]
+ [ \v!left=>\let\raggedbox\lbox,
+ \v!right=>\let\raggedbox\rbox,
+ \v!middle=>\let\raggedbox\cbox,
+ \v!inner=>\let\raggedbox\ibox,
+ \v!outer=>\let\raggedbox\obox,
+ \v!flushleft=>\let\raggedbox\rbox,
+ \v!flushright=>\let\raggedbox\lbox,
+ \v!center=>\let\raggedbox\cbox,
+ \v!no=>\def\raggedbox{\vbox\bgroup\raggedright\let\next=},
+ \s!default=>\let\raggedbox\vbox,
+ \s!unknown=>\let\raggedbox\vbox]}
+
+\def\dosetraggedhbox#1%
+ {\processaction % slow
+ [#1]
+ [ \v!left=>\def\raggedbox{\doalignedline\v!left },
+ \v!right=>\def\raggedbox{\doalignedline\v!right },
+ \v!middle=>\def\raggedbox{\doalignedline\v!middle},
+ \v!inner=>\def\raggedbox{\doalignedline\v!inner },
+ \v!outer=>\def\raggedbox{\doalignedline\v!outer },
+ \v!flushleft=>\def\raggedbox{\doalignedline\v!right },
+ \v!flushright=>\def\raggedbox{\doalignedline\v!left },
+ \v!center=>\def\raggedbox{\doalignedline\v!middle},
+ \v!normal=>\let\raggedbox\hbox,
+ \s!default=>\let\raggedbox\hbox,
+ \s!unknown=>\let\raggedbox\hbox]}
+
+\def\dosetraggedcommand#1%
+ {\expanded{\dodosetraggedcommand{#1}}}
+
+\def\dodosetraggedcommand#1% beware: #1=empty is ignored, keep that!
+ {\let\raggedcommand \relax
+ \let\raggedtopcommand \empty
+ \let\raggedbottomcommand\empty
+ \chardef\raggedoneliner\zerocount
+ \doifsomething{#1}
+ {\doifinsetelse\v!broad{#1}\!!doneatrue\!!doneafalse
+ \doifinsetelse\v!wide {#1}\!!donebtrue\!!donebfalse
+ \!!donectrue
+ \rawprocesscommalist[#1]\dododosetraggedcommand}}
+
+\def\dododosetraggedcommand#1%
+ {\executeifdefined{\@@ragged@@command\string#1}\relax}
+
+\def\@@ragged@@command{@@raggedcommand}
+
+\setvalue{\@@ragged@@command\v!left}%
+ {\if!!donea \def\raggedcommand{\veryraggedleft}%
+ \else \def\raggedcommand{\raggedleft}%
+ \fi
+ \!!donecfalse}
+
+\setvalue{\@@ragged@@command\v!right}%
+ {\if!!donea \def\raggedcommand{\veryraggedright}%
+ \else \def\raggedcommand{\raggedright}%
+ \fi
+ \!!donecfalse}
+
+\setvalue{\@@ragged@@command\v!middle}%
+ {\if!!donec
+ \if!!doneb \def\raggedcommand{\raggedwidecenter}%
+ \else\if!!donea \def\raggedcommand{\veryraggedcenter}%
+ \else \def\raggedcommand{\raggedcenter}%
+ \fi\fi
+ \!!donecfalse
+ \else
+ \let\raggedbottomcommand\vfilll % bonus, pretty strong
+ \let\raggedtopcommand \vfilll % used with \framed for
+ \fi} % instance in tables
+
+\setvalue{\@@ragged@@command\v!flushleft }{\getvalue{\@@ragged@@command\v!right }}
+\setvalue{\@@ragged@@command\v!flushright}{\getvalue{\@@ragged@@command\v!left }}
+\setvalue{\@@ragged@@command\v!center }{\getvalue{\@@ragged@@command\v!middle}}
+
+\setvalue{\@@ragged@@command\v!high}%
+ {\let\raggedbottomcommand\vfilll} % and since we lack a
+
+\setvalue{\@@ragged@@command\v!low}%
+ {\let\raggedtopcommand\vfilll} % proper keyword, but
+
+\setvalue{\@@ragged@@command\v!lohi}%
+ {\let\raggedbottomcommand\vfilll % we do support the
+ \let\raggedtopcommand\vfilll} % ugly laho (lohi)
+
+\setvalue{\@@ragged@@command\v!no}%
+ {\def\raggedcommand{\raggedright}}
+
+\setvalue{\@@ragged@@command\v!yes}%
+ {\let\raggedcommand\notragged}
+
+\setvalue{\@@ragged@@command\v!normal}%
+ {\let\raggedcommand\notragged}
+
+\setvalue{\@@ragged@@command\v!inner}% not yet perfect
+ {\signalrightpage % may interfere
+ \doifrightpageelse
+ {\getvalue{\@@ragged@@command\v!right}}
+ {\getvalue{\@@ragged@@command\v!left}}}
+
+\setvalue{\@@ragged@@command\v!outer}% not yet perfect
+ {\signalrightpage % may interfere
+ \doifrightpageelse
+ {\getvalue{\@@ragged@@command\v!left}}
+ {\getvalue{\@@ragged@@command\v!right}}}
+
+\chardef\raggedoneliner\zerocount
+
+\setvalue{\@@ragged@@command\v!line}%
+ {\chardef\raggedoneliner\plusone}
+
+\def\@@startraggedoneliner
+ {\ifcase\raggedoneliner\else
+ \dontleavehmode\hbox\bgroup
+ \ifcase\raggedstatus\or\hss\or\hss\fi
+ \ignorespaces
+ \bgroup
+ \aftergroup\removeunwantedspaces
+ \fi}
+
+\def\@@stopraggedoneliner
+ {\ifcase\raggedoneliner\else
+ \egroup
+ \ifcase\raggedstatus\or\hss\or\or\hss\fi
+ \egroup
+ \ignorespaces
+ \fi}
+
+\def\@@handleoneliner
+ {\ifcase\raggedoneliner\else
+ \@@startraggedoneliner
+ \aftergroup\@@stopraggedoneliner
+ \fi}
+
+% Nodig i.v.m. inspringen eerste alineas
+
+\def\explicithmode{\unhbox\voidb@x} % can probably become \dontleavehmode
+
+% Nog doen:
+%
+% \goodbreak -> \allowbreak en \dosomebreak{..} in koppen
+%
+% bij koppen zowieso: \blanko[reset]
+
+% Nog in commando verwerken:
+%
+% \voorkeur … la \blanko
+%
+% Om ongewenste witruimte te voorkomen kan met \dosomebreak{\break}
+% een \penalty v¢¢r witruimte worden geplaatst.
+
+\def\removelastskip % a redefinition of plain
+ {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi}
+
+% first version:
+%
+% \def\dosomebreak#1%
+% {\scratchskip\lastskip
+% \removelastskip
+% %\type{#1}%
+% #1\relax
+% \ifdim\scratchskip=\zeropoint \else
+% \vskip\scratchskip
+% \fi}
+%
+% don't change the next improvement:
+
+\def\dosomebreak#1%
+ {\endgraf % beware, this forces a newline
+ \ifvmode
+ \ifdim\lastskip=\zeropoint
+ #1\relax
+ \else
+ \scratchskip\lastskip
+ \removelastskip
+ #1\relax
+ \vskip\scratchskip
+ \fi
+ \fi}
+
+% beter, vooral in \vbox; nog in \pagina toepassen s!
+
+\def\doifoutervmode#1%
+ {\ifvmode\ifinner\else#1\fi\fi}
+
+\def\dosomebreak#1%
+ {\doifoutervmode
+ {\scratchskip\lastskip
+ \removelastskip
+ %\leavevmode\type{#1}%
+ #1\relax
+ \ifdim\scratchskip=\zeropoint % else interference with footnotes
+ \else
+ \vskip\scratchskip
+ \fi}}
+
+\def\forgeteverypar
+ {\everypar{\the\neverypar}}
+
+%\def\forgetparindent
+% {\forgeteverypar
+% \indentfirstparagraphtrue % recently added
+% \setupindenting[\v!geen]}
+
+%\def\forgetparskip
+% {\setupwhitespace[\v!geen]}
+
+\def\forgetparindent
+ {\forgeteverypar
+ \indentfirstparagraphtrue % recently added
+ \let\currentindentation\v!none
+ \ctxparindent\zeropoint
+ \parindent\zeropoint\relax}
+
+\def\forgetparskip
+ {\let\currentwhitespace\v!none
+ \ctxparskip\zeropoint
+ \parskip\zeropoint\relax}
+
+\def\forgetbothskips
+ {\tolerance1500
+ \leftskip\zeropoint
+ \rightskip\zeropoint\relax}
+
+\def\forgetspacing
+ {\emergencystretch\zeropoint}
+
+\def\forgetall
+ {\the\everyforgetall}
+
+\newif\ifforgotten % rather good signal for inner
+
+\appendtoks \forgottentrue \to \everyforgetall
+\appendtoks \forgetragged \to \everyforgetall
+\appendtoks \forgetparskip \to \everyforgetall
+\appendtoks \forgetparindent \to \everyforgetall
+\appendtoks \forgetbothskips \to \everyforgetall
+\appendtoks \forgetspacing \to \everyforgetall % i.v.m. funny spacing in pagebody
+\appendtoks \spacing\!!plusone \to \everyforgetall % new per 10/08/2004, else problems in otr / !! needed
+\appendtoks \everypar\emptytoks \to \everyforgetall % indeed!
+
+\def\localvbox#1#%
+ {\vbox#1\bgroup
+ \forgetparskip
+ \setlocalhsize
+ \hsize\localhsize
+ \forgetparindent
+ \forgetbothskips
+ \forgeteverypar
+ \let\next=}
+
+% ach ja, hoort niet hier
+
+% \unexpanded\def\dostartattributes#1#2#3%
+% {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+% \doifdefinedelse{#1#2}
+% {\def\fontattribute{\getvalue{#1#2}}}
+% {\let\fontattribute=\empty}%
+% \doifdefinedelse{#1#3}
+% {\def\colorattribute{\getvalue{#1#3}}}
+% {\let\colorattribute=\empty}%
+% \startcolor[\colorattribute]%
+% \@EA\doconvertfont\@EA{\fontattribute}}
+%
+% \unexpanded\def\dostopattributes%
+% {\stopcolor
+% \endgroup}
+%
+% \unexpanded\def\doattributes#1#2#3#4%
+% {\dostartattributes{#1}{#2}{#3}{#4}\dostopattributes}
+
+%D A hardly faster implementation follows. We cannot use
+%D \type {csname} testing since the first argument can be
+%D anything, even a raw fontswitch. No a real improvement
+%D (some 5 seconds on 260 seconds for the maps bibliography).
+
+\let\dostopattributes\relax % in case these commands end up in an edef
+
+\beginTEX
+
+\unexpanded\def\dostartattributes#1#2#3%
+ {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+ \@EA\ifx\csname#1#3\endcsname\relax
+ \let\dostopattributes\@@nostopattributes
+ \else
+ \let\dostopattributes\@@dostopattributes
+ \startcolor[\csname#1#3\endcsname]%
+ \fi
+ \@EA\ifx\csname#1#2\endcsname\relax
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\doconvertfont
+ \fi{\csname#1#2\endcsname}}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\unexpanded\def\dostartattributes#1#2#3%
+ {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+ \ifcsname#1#3\endcsname
+ \let\dostopattributes\@@dostopattributes
+ \startcolor[\csname#1#3\endcsname]%
+ \else
+ \let\dostopattributes\@@nostopattributes
+ \fi
+ \ifcsname#1#2\endcsname
+ \expandafter\doconvertfont
+ \else
+ \expandafter\gobbleoneargument
+ \fi{\csname#1#2\endcsname}}
+
+\endETEX
+
+\unexpanded\def\@@dostopattributes
+ {\stopcolor
+ \endgroup}
+
+\unexpanded\def\@@nostopattributes
+ {\endgroup}
+
+\unexpanded\def\doattributes#1#2#3#4%
+ {\dostartattributes{#1}{#2}{#3}{#4}\dostopattributes}
+
+% An even faster \ETEX\ version:
+
+\beginETEX
+
+% \unexpanded\def\dostartattributes#1#2#3%
+% {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+% \ifcsname#1#3\endcsname
+% \let\dostopattributes\@@dostopattributes
+% \startcolor[\csname#1#3\endcsname]%
+% \else
+% \let\dostopattributes\@@nostopattributes
+% \fi
+% \ifcsname#1#2\endcsname
+% \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname
+% \fi}
+%
+% \unexpanded\def\@@dostopattributes%
+% {\stopcolor
+% \endgroup}
+%
+% \unexpanded\def\@@nostopattributes%
+% {\endgroup}
+
+\unexpanded\def\dostartattributes#1#2#3%
+ {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+ \ifincolor
+ \ifcsname#1#3\endcsname
+ \let\dostopattributes\@@dostopattributes
+ \doglobalstartcolor[\csname#1#3\endcsname]%
+ \else
+ \let\dostopattributes\@@nostopattributes
+ \fi
+ \else
+ \let\dostopattributes\@@nostopattributes
+ \fi
+ \ifcsname#1#2\endcsname
+ % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname
+ \@EA\doconvertfont\csname#1#2\@EA\endcsname
+ \fi}
+
+\unexpanded\def\@@dostopattributes
+ {\doglobalstopcolor
+ \endgroup}
+
+\unexpanded\def\@@nostopattributes
+ {\endgroup}
+
+\endETEX
+
+%D Bonus macro, see core-sec.tex
+
+\beginTEX
+
+\unexpanded\def\dosetfontattribute#1#2%
+ {\@EA\ifx\csname#1#2\endcsname\relax\else
+ \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname
+ \fi\empty}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\unexpanded\def\dosetfontattribute#1#2%
+ {\ifcsname#1#2\endcsname
+ % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname
+ \@EA\doconvertfont\csname#1#2\@EA\endcsname
+ \fi\empty}
+
+\endETEX
+
+%D Since this happens a lot, and sometimes large arguments
+%D are passed in \type {#4}, we just copy some code:
+
+\beginETEX \ifcsname
+
+\unexpanded\def\doattributes#1#2#3#4%
+ {\begingroup % geen \bgroup, anders in mathmode lege \hbox
+ \ifincolor
+ \ifcsname#1#3\endcsname
+ \let\dostopattributes\@@dostopattributes
+ \doglobalstartcolor[\csname#1#3\endcsname]%
+ \else
+ \let\dostopattributes\endgroup
+ \fi
+ \else
+ \let\dostopattributes\endgroup
+ \fi
+ \ifcsname#1#2\endcsname
+ % \@EAEAEA\doconvertfont\@EA\@EA\csname#1#2\endcsname
+ \@EA\doconvertfont\csname#1#2\@EA\endcsname
+ \fi
+ {#4}%
+ \dostopattributes}
+
+\endETEX
+
+% Kan vaker worden toegepast en moet bovendien sneller!
+
+\newskip\leftskipadaption
+\newskip\rightskipadaption
+
+\def\doadaptleftskip#1%
+ {\dosetleftskipadaption{#1}%
+ \advance\leftskip \leftskipadaption}
+
+\def\doadaptrightskip#1%
+ {\dosetrightskipadaption{#1}%
+ \advance\rightskip \rightskipadaption}
+
+\beginTEX
+
+\def\dosetleftskipadaption#1%
+ {\leftskipadaption\zeropoint
+ \processaction[#1]
+ [\v!standard=>\leftskipadaption
+ \ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi,
+ \v!yes=>\leftskipadaption
+ \ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi,
+ \v!no=>,
+ \s!unknown=>\leftskipadaption#1]}
+
+\def\dosetrightskipadaption#1%
+ {\rightskipadaption\zeropoint
+ \processaction[#1]
+ [\v!standard=>\rightskipadaption\@@slright,
+ \v!yes=>\rightskipadaption\@@slright,
+ \v!no=>,
+ \s!unknown=>\rightskipadaption#1]}
+
+\endTEX
+
+\beginETEX
+
+% installation
+
+\setvalue{@lsa@\v!standard}{\ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi}
+\setvalue{@lsa@\v!yes }{\ifdim\ctxparindent=\zeropoint\@@slleft\else\ctxparindent\fi}
+\letvalue{@lsa@\v!no }\zeropoint
+\letvalue{@lsa@\empty }\zeropoint
+\setvalue{@rsa@\v!standard}{\@@slright}
+\setvalue{@rsa@\v!yes }{\@@slright}
+\letvalue{@rsa@\v!no }\zeropoint
+\letvalue{@rsa@\empty }\zeropoint
+
+% not safe for 2\parindent
+%
+% \def\dosetleftskipadaption#1%
+% {\leftskipadaption
+% \ifcsname @lsa@#1\endcsname
+% \csname @lsa@#1\endcsname
+% \else
+% #1%
+% \fi
+% \relax}
+
+\def\dosetleftskipadaption#1%
+ {\edef\ascii{@lsa@#1}%
+ \convertcommand\ascii\to\ascii
+ \leftskipadaption
+ \ifcsname\ascii\endcsname
+ \csname\ascii\endcsname
+ \else
+ #1%
+ \fi
+ \relax}
+
+\def\dosetrightskipadaption#1%
+ {\edef\ascii{@rsa@#1}%
+ \convertcommand\ascii\to\ascii
+ \rightskipadaption
+ \ifcsname\ascii\endcsname
+ \csname\ascii\endcsname
+ \else
+ #1%
+ \fi
+ \relax}
+
+\endETEX
+
+% \definetwopasslist\s!paragraph
+%
+% \newcounter\nofraggedparagraphs
+%
+% \def\doparagraphreference% looks very much like domarginreference
+% {\doglobal\increment\nofraggedparagraphs
+% \edef\writeparref%
+% {\writeutilitycommand%
+% {\twopassentry%
+% {\s!paragraph}%
+% {\nofraggedparagraphs}%
+% {\noexpand\realfolio}}}%
+% \writeparref}
+%
+% \def\setraggedparagraphmode#1#2% combineren met \ifrightpage
+% {\ifinpagebody
+% \ifdubbelzijdig
+% \ifodd\realpageno\relax#1\else#2\fi
+% \else
+% #2\relax
+% \fi
+% \else\ifinner
+% \ifdubbelzijdig
+% \gettwopassdata\s!paragraph
+% \iftwopassdatafound
+% \ifodd\twopassdata\relax#1\else#2\fi
+% \else
+% \ifodd\realpageno\relax#1\else#2\fi
+% \fi
+% \doparagraphreference
+% \else
+% #2\relax
+% \fi
+% \else
+% #2\relax
+% \fi\fi}
+%
+% \def\doifrightpageelse % watch out: other default ! ! !
+% {\ifinpagebody
+% % optimalisation ?
+% \ifdubbelzijdig
+% \ifodd\realpageno\relax
+% \twopassdatafoundtrue \else \twopassdatafoundfalse
+% \fi
+% \else
+% \twopassdatafoundtrue
+% \fi
+% \else
+% \ifdubbelzijdig
+% \gettwopassdata\s!paragraph
+% \iftwopassdatafound
+% \ifodd\twopassdata\relax
+% \twopassdatafoundtrue \else \twopassdatafoundfalse
+% \fi
+% \else
+% \ifodd\realpageno\relax
+% \twopassdatafoundtrue \else \twopassdatafoundfalse
+% \fi
+% \fi
+% \else
+% \twopassdatafoundtrue
+% \fi
+% \fi
+% \iftwopassdatafound
+% \@EA\firstoftwoarguments
+% \else
+% \@EA\secondoftwoarguments
+% \fi}
+%
+% \def\signalrightpage
+% {\ifdubbelzijdig \ifinpagebody \else
+% \doparagraphreference
+% \fi \fi}
+
+% slightly adapted implementation
+
+\newcounter \noftrackedpagestates
+\newif \ifpagestatemismatch
+\let \realpagestateno \realfolio
+\chardef \frozenpagestate \zerocount
+
+\def\dotrackpagestate#1#2%
+ {\ifdubbelzijdig \ifinpagebody \else
+ \doforcedtrackpagestate{#1}{#2}%
+ \fi \fi}
+
+\def\doforcedtrackpagestate#1#2%
+ {\ifcase\frozenpagestate
+ \doglobal\increment\noftrackedpagestates
+ \doglobal\increment#2%
+ \edef\dodotrackpagestate
+ {\writeutilitycommand
+ {\twopassentry{#1}{\noftrackedpagestates}{#2:\noexpand\realfolio}}}%
+ %\llap{\infofont\noftrackedpagestates/#2}% tracing
+ \dodotrackpagestate
+ \fi}
+
+\def\doifrightpagestateelse#1#2%
+ {\ifcase\frozenpagestate
+ \pagestatemismatchfalse
+ \let\realpagestateno\realfolio
+ \ifinpagebody
+ \ifdubbelzijdig
+ \ifodd\realpageno\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \else
+ \twopassdatafoundtrue
+ \fi
+ \else\ifdubbelzijdig
+ \findtwopassdata{#1}{#2:}%
+ \iftwopassdatafound
+ \let\realpagestateno\twopassdata
+ \ifnum\twopassdata=\realpageno \else
+ \pagestatemismatchtrue
+ \fi
+ \ifodd\twopassdata\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \else
+ \ifodd\realpageno\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \fi
+ \else
+ \twopassdatafoundtrue
+ \fi\fi
+ \else
+ \ifodd\realpagestateno\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \fi
+ \iftwopassdatafound
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\def\doifforcedrightpagestateelse#1#2%
+ {\ifcase\frozenpagestate
+ \pagestatemismatchfalse
+ \let\realpagestateno\realfolio
+ \findtwopassdata{#1}{#2:}%
+ \iftwopassdatafound
+ \let\realpagestateno\twopassdata
+ \ifnum\twopassdata=\realpageno \else
+ \pagestatemismatchtrue
+ \fi
+ \ifodd\twopassdata\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \else
+ \ifodd\realpageno\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \fi
+ \else
+ \ifodd\realpagestateno\relax
+ \twopassdatafoundtrue \else \twopassdatafoundfalse
+ \fi
+ \fi
+ \iftwopassdatafound
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\def\freezepagestate {\chardef\frozenpagestate\plusone }
+\def\defrostpagestate{\chardef\frozenpagestate\zerocount}
+
+% we can make more of these on top, but how to deal with mixed frozen states
+
+\definetwopasslist\s!paragraph \newcounter\nofraggedparagraphs
+
+\def\signalrightpage {\dotrackpagestate \s!paragraph\nofraggedparagraphs}
+\def\doifrightpageelse{\doifrightpagestateelse\s!paragraph\nofraggedparagraphs}
+
+\newcounter\pagesignallevel
+
+\def\startsignalrightpage % one may do a \postsignalrightplace
+ {\increment\pagesignallevel
+ \presignalrightpage
+ \let\signalrightpage\relax
+ \let\presignalrightpage\relax
+ \let\startsignalrightpage\relax
+ \doifrightpageelse\donothing\donothing
+ \freezepagestate}
+
+\def\stopsignalrightpage
+ {\ifcase\pagesignallevel\or\postsignalrightpage\fi
+ \decrement\pagesignallevel}
+
+\def\setraggedparagraphmode{\signalrightpage\doifrightpageelse} % move it there
+
+\def\doifswappedrightpageelse#1#2% alleen in box construction !
+ {\doifrightpageelse
+ {#1}
+ {\scratchcounter\realpageno
+ \realpageno\realpagestateno\relax
+ \swapmargins
+ \realpageno\scratchcounter
+ #2}}
+
+\newbox\signaledrightpage % this way we can avoid interference, i.e. postpone placement
+
+\def\presignalrightpage {\global\setbox\signaledrightpage\hbox{\signalrightpage}}
+\def\postsignalrightpage{\ifvoid\signaledrightpage\else\box\signaledrightpage\fi}
+
+% The next feature is is used in:
+%
+% \definenumber[test][way=bypage]
+%
+% \def\Test
+% {\incrementnumber[test]\rawnumber[test]/%
+% \incrementnumber[test]\rawnumber[test]/%
+% \incrementnumber[test]\rawnumber[test]\space
+% \checkpagechange{oeps}\changedpage{oeps}\space
+% \ifpagechanged TRUE\else FALSE\fi}
+%
+% \Test\page \Test\par \Test\page \Test\par \Test\page \Test\page
+%
+% (adapted from cont-new.tex:)
+
+\newif\ifpagechanged \let\lastchangedpage\empty
+
+\def\docheckpagestatechange#1#2#3%
+ {\pagechangedfalse
+ \doforcedtrackpagestate{#2}{#3}%
+ \findtwopassdata{#2}{#3:}%
+ \iftwopassdatafound
+ \ifnum\twopassdata>0\getvalue{#2:p:#1}\relax
+ \pagechangedtrue
+ \fi
+ \fi
+ \ifpagechanged
+ \letgvalue{#2:p:#1}\twopassdata
+ \globallet\lastchangedpage\twopassdata
+ \else
+ \globallet\lastchangedpage\realfolio
+ \fi}
+
+\def\changedpagestate#1#2%
+ {\executeifdefined{#2:p:#1}{0}}
+
+\def\checkpagechange#1{\docheckpagestatechange{#1}\s!paragraph\nofraggedparagraphs}
+\def\changedpage #1{\changedpagestate{#1}\s!paragraph}
+
+% saved struts
+
+\ifx\savedstrutbox\undefined \newbox\savedstrutbox \fi
+
+\def\savestrut {\setbox\savedstrutbox\copy\strutbox}
+\def\savedstrut{\copy \savedstrutbox}
+
+% De onderstaande macro's zijn opgenomen in Plain TeX.
+%
+% \def\raggedright%
+% {\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
+%
+% \def\ttraggedright%
+% {\tttf\rightskip\z@ plus2em\relax}
+%
+% \newif\ifr@ggedbottom
+%
+% \def\raggedbottom%
+% {\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
+%
+% \def\normalbottom%
+% {\topskip 10\p@ \r@ggedbottomfalse}
+%
+% en worden hieronder wat aangepast.
+
+% the three boolean will become obsolete some day in favour
+% of \bottomraggedness
+
+\chardef\bottomraggedness=0 % 0=ragged 1=normal/align 2=baseline
+
+\def\bottomalignlimit{3\lineheight}
+
+\newif\ifn@rmalbottom
+\newif\ifr@ggedbottom
+\newif\ifb@selinebottom
+
+\def\normalbottom
+ {% \topskip 10pt
+ \r@ggedbottomfalse}
+
+\def\raggedbottom
+ {\chardef\bottomraggedness\zerocount
+ \n@rmalbottomfalse
+ \r@ggedbottomtrue
+ \b@selinebottomfalse
+ \settopskip}
+
+\def\alignbottom
+ {\chardef\bottomraggedness\plusone
+ \n@rmalbottomtrue
+ \r@ggedbottomfalse
+ \b@selinebottomfalse
+ \settopskip}
+
+\def\baselinebottom
+ {\chardef\bottomraggedness\plustwo
+ \n@rmalbottomfalse
+ \r@ggedbottomfalse
+ \b@selinebottomtrue
+ \settopskip}
+
+\let\normalbottom=\alignbottom % downward compatible
+
+% so, the new one will be
+%
+% \chardef\bottomraggedness=0 % 0=ragged 1=normal/align 2=baseline
+%
+% \def\bottomalignlimit{3\lineheight} % will be settable
+%
+% \def\raggedbottom {\chardef\bottomraggedness=0 \settopskip}
+% \def\alignbottom {\chardef\bottomraggedness=1 \settopskip}
+% \def\baselinebottom{\chardef\bottomraggedness=2 \settopskip}
+%
+% \let\normalbottom =\alignbottom
+
+% \hyphenpenalty = ( 2.5 * \hsize ) / \raggedness
+% \tolerance >= 1500 % was 200
+% \raggedness = 2 .. 6\korpsgrootte
+
+\chardef\raggedstatus=0 % normal left center right
+
+\def\leftraggedness {2\bodyfontsize}
+\def\rightraggedness {2\bodyfontsize}
+\def\middleraggedness {6\bodyfontsize}
+
+%D More hyphenation control, will be combined with align
+%D setup.
+
+\def\nohyphens
+ {\ifx\dohyphens\relax
+ \edef\dohyphens
+ {\hyphenpenalty\the\hyphenpenalty
+ \exhyphenpenalty\the\exhyphenpenalty\relax}%
+ \fi
+ \hyphenpenalty\@M
+ \exhyphenpenalty\@M}
+
+\let\dohyphens\relax
+
+%D To prevent unwanted side effects, we also have to check
+%D for hyphens here:
+
+% \def\setraggedness#1%
+% {\ifnum\tolerance<1500\relax % small values have
+% \tolerance1500\relax % unwanted side effects
+% \fi
+% \spaceskip2.5\hsize % we misuse these registers
+% \xspaceskip#1\relax % for temporary storage;
+% \divide\spaceskip \xspaceskip % they are changed anyway
+% \ifx\dohyphens\relax
+% \hyphenpenalty\spaceskip % \else no hyphens is active
+% \fi}
+
+\newskip\@@raggedskipa
+\newskip\@@raggedskipb
+
+\def\setraggedness#1%
+ {\ifnum\tolerance<1500\relax % small values have
+ \tolerance1500\relax % unwanted side effects
+ \fi
+ \ifx\dohyphens\relax
+ % this code will be reconsidered / kind of fuzzy (and old)
+ \@@raggedskipa 2.5\hsize
+ \@@raggedskipb #1\relax
+ \divide\@@raggedskipa \@@raggedskipb
+ \hyphenpenalty\@@raggedskipa
+ \fi}
+
+\let\updateraggedskips\relax
+
+\def\setraggedskips#1#2#3#4#5#6#7% never change this name
+ {\def\updateraggedskips{\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+ \updateraggedskips}
+
+\def\dosetraggedskips#1#2#3#4#5#6#7%
+ {\chardef \raggedstatus#1\relax
+ \leftskip 1\leftskip \!!plus#2\relax % zie: Tex By Topic 8.1.3
+ \rightskip 1\rightskip\!!plus#3\relax % zie: Tex By Topic 8.1.3
+ \spaceskip #4\relax
+ \xspaceskip #5\relax
+ \parfillskip\zeropoint\!!plus#6\relax
+ \parindent #7\relax}
+
+% \def\notragged%
+% {\setraggedskips{0}{0em}{0em}{0em}{0em}{1fil}{\parindent}}
+
+% todo
+
+\def\raggedfillamount {1fil}
+\def\raggedhalffillamount{.5fil}
+\def\raggedspaceamount {.3333em}
+\def\raggedxspaceamount {.5em}
+
+\def\notragged
+ {\chardef\raggedstatus\zerocount
+ \leftskip1\leftskip
+ \rightskip1\rightskip
+ \spaceskip\zeropoint
+ \xspaceskip\zeropoint
+ \parfillskip\zeropoint\!!plus\raggedfillamount\relax
+ \let\updateraggedskips\relax} % new
+
+\let\forgetragged\notragged
+
+\def\raggedleft
+ {\setraggedness\leftraggedness
+ \setraggedskips1\leftraggedness\zeropoint\raggedspaceamount
+ \raggedxspaceamount\zeropoint\zeropoint}
+
+\def\raggedcenter
+ {\setraggedness\middleraggedness
+ \setraggedskips2\middleraggedness\middleraggedness\raggedspaceamount
+ \raggedxspaceamount\zeropoint\zeropoint}
+
+%D We used to have:
+%D
+%D \starttyping
+%D \def\raggedright
+%D {\setraggedness\rightraggedness
+%D \setraggedskips{3}{0em}{\rightraggedness}{.3333em}{.5em}{0em}{\parindent}}
+%D \stoptyping
+%D
+%D However, the next alternative, suggested by Taco, is better.
+
+\def\raggedright
+ {\setraggedness\rightraggedness
+ \setraggedskips3\zeropoint\rightraggedness\raggedspaceamount
+ \raggedxspaceamount\raggedfillamount\parindent}
+
+\def\veryraggedleft
+ {\setraggedskips1\raggedfillamount\zeropoint\raggedspaceamount
+ \raggedxspaceamount\zeropoint\zeropoint}
+
+%D When we want the last line to have a natural width:
+%D
+%D \starttyping
+%D \def\veryraggedleft%
+%D {\setraggedskips{1}{1fil}{0em}{.3333em}{.5em}{0em}{-1fil}}
+%D \stoptyping
+%D
+%D but this one is not accepted by the macros.
+
+\def\veryraggedcenter
+ {\setraggedskips2\raggedfillamount\raggedfillamount\raggedspaceamount
+ \raggedxspaceamount\zeropoint\zeropoint}
+
+\def\veryraggedright
+ {\setraggedskips3\zeropoint\raggedfillamount\raggedspaceamount
+ \raggedxspaceamount\zeropoint\parindent}
+
+\def\ttraggedright
+ {\tttf
+ \setraggedskips3\zeropoint\rightraggedness
+ \zeropoint\zeropoint\zeropoint\parindent} % \ctxparindent
+
+%D A bonus one:
+
+\def\raggedwidecenter
+ {\setraggedness\middleraggedness
+ \setraggedskips2\raggedhalffillamount\raggedhalffillamount
+ \raggedspaceamount\raggedxspaceamount\zeropoint\zeropoint}
+
+\newif\if@@asragged \@@asraggedtrue % old method
+
+% todo
+%
+% \setuplayout[grid=yes,lines=44] \showgrid
+% \starttext
+% test \vfill test \endgraf \strut \endgraf \vskip-\lineheight \removedepth \pagina test
+% \stoptext
+
+% Keep this one:
+%
+% \def\setupalign
+% {\dosingleargument\dosetupalign}
+%
+% \def\dosetupalign[#1]%
+% {\expanded{\dodosetupalign[#1]}}
+%
+% \def\dodosetupalign[#1]%
+% {\doifinsetelse\v!broad {#1}\!!doneatrue\!!doneafalse
+% \doifinsetelse\v!wide{#1}\!!donebtrue\!!donebfalse
+% \ExpandFirstAfter\processallactionsinset % expansion redundant
+% [#1]
+% [ \v!line=>\baselinebottom,
+% \v!bottom=>\raggedbottom,
+% \v!height=>\normalbottom,
+% \v!width=>\notragged,
+% \v!normal=>\notragged,
+% \v!yes=>\notragged,
+% \v!no=>\raggedright,
+% \if@@asragged\v!inner\else\v!outer\fi=>\setraggedparagraphmode\raggedleft\raggedright,
+% \if@@asragged\v!outer\else\v!inner\fi=>\setraggedparagraphmode\raggedright\raggedleft,
+% \if@@asragged\v!left \else\v!right\fi=>\if!!donea\veryraggedleft \else\raggedleft \fi,
+% \if@@asragged\v!right\else\v!left \fi=>\if!!donea\veryraggedright \else\raggedright \fi,
+% \v!middle=>\if!!doneb\raggedwidecenter\else\if!!donea\veryraggedcenter\else\raggedcenter\fi\fi,
+% \v!flushleft=>\if!!donea\veryraggedright \else\raggedright \fi,
+% \v!flushright=>\if!!donea\veryraggedleft \else\raggedleft \fi,
+% \v!center=>\if!!doneb\raggedwidecenter\else\if!!donea\veryraggedcenter\else\raggedcenter\fi\fi,
+% \v!hanging=>\enableprotruding,
+% \v!nothanging=>\disableprotruding,
+% \v!hz=>\enableadjusting,
+% \v!nohz=>\disableadjusting,
+% \v!hyphenated=>\dohyphens,
+% \v!nothyphenated=>\nohyphens,
+% \v!new=>\@@asraggedfalse, % so new will give you consistency
+% \v!reset=>\notragged\normalbottom]}
+%
+% The next one is more than three times faster:
+
+\setvalue{@@align@@\v!line }{\baselinebottom}
+\setvalue{@@align@@\v!bottom }{\raggedbottom}
+\setvalue{@@align@@\v!height }{\normalbottom}
+\setvalue{@@align@@\v!width }{\notragged}
+\setvalue{@@align@@\v!normal }{\notragged}
+\setvalue{@@align@@\v!yes }{\notragged}
+\setvalue{@@align@@\v!no }{\raggedright}
+\setvalue{@@align@@\v!inner }{\if@@asragged
+ \setraggedparagraphmode\raggedleft\raggedright
+ \else
+ \setraggedparagraphmode\raggedright\raggedleft
+ \fi}
+\setvalue{@@align@@\v!outer }{\if@@asragged
+ \setraggedparagraphmode\raggedright\raggedleft
+ \else
+ \setraggedparagraphmode\raggedleft\raggedright
+ \fi}
+\setvalue{@@align@@\v!left }{\if@@asragged
+ \if!!donea\veryraggedleft\else\raggedleft\fi
+ \else
+ \if!!donea\veryraggedright\else\raggedright\fi
+ \fi}
+\setvalue{@@align@@\v!right }{\if@@asragged
+ \if!!donea\veryraggedright\else\raggedright\fi
+ \else
+ \if!!donea\veryraggedleft\else\raggedleft\fi
+ \fi}
+\setvalue{@@align@@\v!middle }{\if!!doneb\raggedwidecenter\else\if!!donea\veryraggedcenter\else\raggedcenter\fi\fi}
+\setvalue{@@align@@\v!flushleft }{\if!!donea\veryraggedright \else\raggedright \fi}
+\setvalue{@@align@@\v!flushright }{\if!!donea\veryraggedleft \else\raggedleft \fi}
+\setvalue{@@align@@\v!center }{\if!!doneb\raggedwidecenter\else\if!!donea\veryraggedcenter\else\raggedcenter\fi\fi}
+\setvalue{@@align@@\v!hanging }{\enableprotruding}
+\setvalue{@@align@@\v!nothanging }{\disableprotruding}
+\setvalue{@@align@@\v!hz }{\enableadjusting}
+\setvalue{@@align@@\v!nohz }{\disableadjusting}
+\setvalue{@@align@@\v!spacing }{\enablespacehandling}
+\setvalue{@@align@@\v!nospacing }{\disablespacehandling}
+\setvalue{@@align@@\v!hyphenated }{\dohyphens}
+\setvalue{@@align@@\v!nothyphenated}{\nohyphens}
+\setvalue{@@align@@\v!new }{\@@asraggedfalse} % so new will give you consistency
+\setvalue{@@align@@\v!reset }{\notragged\normalbottom}
+
+\setvalue{@@ngila@@\v!broad }{\!!doneatrue}
+\setvalue{@@ngila@@\v!wide }{\!!donebtrue}
+
+\def\dodosetupalign#1{\getvalue{@@align@@#1}}
+\def\dodosetupngila#1{\getvalue{@@ngila@@#1}}
+
+\def\setupalign
+ {\dosingleargument\dosetupalign}
+
+\def\dosetupalign[#1]%
+ {\!!doneafalse
+ \!!donebfalse
+ \processcommacommand[#1]\dodosetupngila
+ \processcommacommand[#1]\dodosetupalign}
+
+% \setupalign[flushleft] \input ward \par % lijnlinks
+% \setupalign[right] \input ward \par
+
+% \setupalign[flushright] \input ward \par % lijnrechts
+% \setupalign[left] \input ward \par
+
+% \setupalign[middle] \input ward \par % centreer
+% \setupalign[center] \input ward \par
+
+\def\startalignment
+ {\bgroup
+ \setupalign}
+
+\def\stopalignment
+ {\par
+ \egroup}
+
+\chardef\alignstrutmode=1
+
+% see later for the real definition, which in the simple case is:
+
+\def\doalignline#1#2% \\ == newline
+ {\bgroup
+ \setlocalhsize % new
+ \def\\{\egroup\par\doalignline{#1}{#2}\bgroup}%
+ \dowithnextbox
+ {\noindent
+ \hbox to \localhsize
+ {\ifcase\alignstrutmode\or\strut\fi
+ #1\unhbox\nextbox#2}\egroup}
+ \hbox}
+
+% directe commando's
+
+\def\leftaligned {\doalignline \relax \hss }
+\def\midaligned {\doalignline \hss \hss }
+\def\rightaligned{\doalignline \hss \relax}
+
+\def\regelbegrensd#1{\limitatetext{#1}{\hsize}{\unknown}} % to be translated
+
+% indirecte commando's
+
+\letvalue{\s!do\v!line\v!left }\leftaligned
+\letvalue{\s!do\v!line\v!right }\rightaligned
+\letvalue{\s!do\v!line\v!middle}\midaligned
+
+\letvalue{\s!do\v!line\v!flushleft }\rightaligned
+\letvalue{\s!do\v!line\v!flushright}\leftaligned
+\letvalue{\s!do\v!line\v!center }\midaligned
+
+\def\doalignedline#1{\csname\s!do\v!line#1\endcsname}
+
+%D Experimental:
+
+% simple version
+%
+% \def\doxalignline#1#2%
+% {\bgroup
+% \setlocalhsize
+% \def\\{\egroup\par\doxalignline{#1}{#2}\bgroup}% inefficient
+% \dowithnextbox
+% {\noindent\hbox to \localhsize
+% {\ifcase\alignstrutmode\or\strut\fi
+% \signalrightpage
+% \doifrightpageelse{#1\unhbox\nextbox#2}{#2\unhbox\nextbox#1}}%
+% \egroup}
+% \hbox}
+%
+% \setvalue{\s!do\v!regel\v!binnen}{\doxalignline\relax\hss}
+% \setvalue{\s!do\v!regel\v!buiten}{\doxalignline\hss\relax}
+%
+% more extensive:
+
+\def\doxalignline#1#2#3#4#5#6%
+ {\bgroup
+ \setlocalhsize
+ \def\\{\egroup\par\doxalignline#1#2#3#4#5#6\bgroup}% inefficient
+ \dowithnextbox
+ {\noindent
+ \hbox to \localhsize
+ {#1\hskip\ifdone#2\else#3\fi#4%
+ \hbox to \localhsize
+ {\ifcase\alignstrutmode\or\strut\fi
+ \ifdone#5\unhbox\nextbox#6\else#6\unhbox\nextbox#5\fi}%
+ \hss}%
+ \egroup}
+ \hbox}
+
+\def\doxcheckline
+ {\signalrightpage\doifrightpageelse\donetrue\donefalse}
+
+\setvalue{\s!do\v!line\v!inner }{\doxalignline\doxcheckline++\zeropoint \relax\hss }
+\setvalue{\s!do\v!line\v!outer }{\doxalignline\doxcheckline++\zeropoint \hss \relax}
+\setvalue{\s!do\v!line\v!innermargin}{\doxalignline\doxcheckline-+\innermargintotal\relax\hss }
+\setvalue{\s!do\v!line\v!outermargin}{\doxalignline\doxcheckline+-\outermargintotal\hss \relax}
+\setvalue{\s!do\v!line\v!inneredge }{\doxalignline\doxcheckline-+\inneredgetotal \relax\hss }
+\setvalue{\s!do\v!line\v!outeredge }{\doxalignline\doxcheckline+-\outeredgetotal \hss \relax}
+\setvalue{\s!do\v!line\v!backspace }{\doxalignline\doxcheckline-+\backspace \relax\hss }
+\setvalue{\s!do\v!line\v!cutspace }{\doxalignline\doxcheckline+-\cutspace \hss \relax}
+
+\setvalue{\s!do\v!line\v!leftmargin }{\doxalignline\donefalse --\leftmargintotal \hss \relax}
+\setvalue{\s!do\v!line\v!rightmargin}{\doxalignline\donefalse ++\rightmargintotal\relax\hss }
+\setvalue{\s!do\v!line\v!leftedge }{\doxalignline\donefalse --\leftedgetotal \hss \relax}
+\setvalue{\s!do\v!line\v!rightedge }{\doxalignline\donefalse ++\rightedgetotal \relax\hss }
+
+% ! ! ! beware, redefining \doalignline gives the wrong results ! ! !
+%
+% \def\doalignline{\doxalignline\donefalse++\zeropoint}
+
+%D Better:
+
+\def\doalignedline#1{\csname\s!do\v!line#1\endcsname}
+
+\def\alignedline#1#2% setting default
+ {\csname
+ \s!do\v!line
+ \ifundefined{\s!do\v!line#1}#2\else#1\fi
+ \endcsname}
+
+% \def\doalignedline#1%
+% {\alignedline{#1}\v!links}
+
+%D ...
+
+\def\dosetuptolerance[#1]%
+ {\doifinsetelse\v!vertical{#1}%
+ {\ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!verystrict=>\def\bottomtolerance{},
+ \v!strict=>\def\bottomtolerance{.050},
+ \v!tolerant=>\def\bottomtolerance{.075},
+ \v!verytolerant=>\def\bottomtolerance{.100}]}%
+ {\ExpandFirstAfter\processallactionsinset
+ [#1]
+ [ \v!stretch=>\emergencystretch\bodyfontsize,
+ \v!space=>\spaceskip.5em\!!plus.25em\!!minus.25em\relax,
+ \v!verystrict=>\tolerance 200,
+ \v!strict=>\tolerance1500,
+ \v!tolerant=>\tolerance3000,
+ \v!verytolerant=>\tolerance4500]}}
+
+\def\setuptolerance
+ {\dosingleargument\dosetuptolerance}
+
+% \def\woordrechts
+% {\groupedcommand{\hfill\hbox}{\parfillskip\zeropoint}}
+
+% beware: \wordright{whatever\kern-\rightskip} should work!
+% so, no funny boxing here
+
+\def\dowordright[#1]%
+ {% don't change
+ \groupedcommand
+ {\removeunwantedspaces
+ \hfill
+ \allowbreak % changed back from \hskip\zeropoint
+ \strut
+ \hfill
+ \quad % decent spacing
+ \hbox}
+ {\doifelse{#1}\v!right{\kern-\rightskip}{\doifsomething{#1}{\kern-#1}}%
+ \parfillskip\zeropoint
+ \par}}
+
+\def\wordright
+ {\dosingleempty\dowordright}
+
+% \dorecurse{5}{something } \wordright{--someone} \endgraf
+% \dorecurse{6}{something } \wordright{--someone} \endgraf
+% \dorecurse{7}{something } \wordright{--someone} \endgraf
+%
+% \dorecurse{5}{something } \wordright{--someone else entirely} \endgraf
+% \dorecurse{6}{something } \wordright{--someone else entirely} \endgraf
+% \dorecurse{7}{something } \wordright{--someone else entirely} \endgraf
+%
+% \wordright[\rightskip]{whatever}
+
+%D \macros
+%D {pushindentation,popindentation}
+%D
+%D The pushing and popping is done by:
+
+\newbox\indentationboxA
+\newbox\indentationboxB
+
+\def\pushindentation
+ {\bgroup
+ \ifhmode
+ \unskip
+ \setbox\indentationboxA\lastbox % get \strut if present
+ \unskip
+ \setbox\indentationboxB\lastbox % get \indent generated box
+ \unskip
+ \else
+ \hskip\zeropoint % switch to horizontal mode
+ \unskip
+ \setbox\indentationboxA\lastbox % get \indent generated box
+ \setbox\indentationboxB\box\voidb@x
+ \fi}
+
+\def\popindentation
+ {\box\indentationboxB\box\indentationboxA % put back the boxes
+ \egroup}
+
+%D The only complication lays in \type{\strut}. In \PLAIN\
+%D \TEX\ a \type{\strut} is defined as:
+%D
+%D \starttyping
+%D \def\strut%
+%D {\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+%D \stoptyping
+%D
+%D But what is a \type{\strut}? Normally it's a rule of width
+%D zero, but when made visual, it's a rule and a negative skip.
+%D The mechanism for putting things in the margins described
+%D here cannot handle this situation very well. One
+%D characteristic of \type{\strut} is that the \type{\unhcopy}
+%D results in entering horizontal mode, which in return leads
+%D to some indentation.
+%D
+%D To serve our purpose a bit better, the macro \type{\strut}
+%D can be redefined as:
+%D
+%D \starttyping
+%D \def\strut
+%D {\relax\ifmmode\else\hskip0pt\fi\copy\strutbox}
+%D \stoptyping
+%D
+%D Or more compatible:
+%D
+%D \starttyping
+%D \def\strut
+%D {\relax\ifmmode
+%D \copy\strutbox
+%D \else
+%D \bgroup\setbox\strutbox=\normalhbox{\box\strutbox}\unhcopy\strutbox\egroup
+%D \fi}
+%D \stoptyping
+%D
+%D In \CONTEXT\ however we save some processing time by putting
+%D an extra \type{\hbox} around the \type{\strutbox}.
+
+% moved from page-lin.tex to here (due to visualization added
+% in august 2003)
+%
+% \unexpanded \def\crlf
+% {\ifhmode\unskip\else\strut\fi\ifcase\raggedstatus\hfil\fi\break}
+
+\unexpanded \def\crlf
+ {\ifhmode
+ \unskip
+ \prewordbreak\crlfplaceholder
+ \ifcase\raggedstatus\hfil\or\or\or\hfil\fi
+ \break
+ \else
+ \crlfplaceholder
+ \endgraf
+ \fi}
+
+\def\crlfplaceholder
+ {\strut}
+
+\def\settestcrlf
+ {\def\crlfplaceholder
+ {\hbox to \zeropoint
+ {\strut{\infofont\kern.25em}\lohi{\infofont CR}{\infofont LF}\hss}}}
+
+%D \starttyping
+%D % \setuplayout[gridgrid=yes] \showgrid
+%D
+%D \startbuffer
+%D test 1\crlf
+%D test 2\crlf
+%D
+%D \crlf test 3
+%D
+%D test 4\crlf
+%D test 5
+%D
+%D \crlf
+%D \crlf
+%D \crlf
+%D test 6
+%D \stopbuffer
+%D
+%D \hbox
+%D {\hsize5em
+%D \ruledvtop{\getbuffer}\enspace
+%D \ruledvtop{\showstruts\getbuffer}\enspace
+%D \hsize15em \setuptyping[before=,after=]%
+%D \ruledvtop{\typebuffer}}
+%D \stoptyping
+
+\def\opeenregel % to be used grouped
+ {\def\crlf{\removelastspace\space}\let\\\crlf}
+
+\def\showstruts
+ {\setteststrut
+ \settestcrlf}
+
+\def\definehspace
+ {\dotripleempty\dodefinehspace}
+
+\def\dodefinehspace[#1][#2][#3]% #1 = optional namespace
+ {\ifthirdargument
+ \setvalue{\??hs#1:#2}{#3}%
+ \else
+ \setvalue{\??hs:#1}{#2}%
+ \fi}
+
+\unexpanded\def\hspace
+ {\dodoubleempty\dohspace}
+
+%\def\dohspace[#1][#2]%
+% {\ifhmode
+% \removeunwantedspaces
+% \hskip
+% \ifsecondargument
+% \hspaceamount{#1}{#2}%
+% \else
+% \hspaceamount\empty{\iffirstargument#1\else\s!default\fi}%
+% \fi
+% \expandafter\ignorespaces
+% \fi}
+
+\def\dohspace[#1][#2]%
+ {\ifsecondargument
+ \dodohspace[#1][#2]%
+ \else\iffirstargument
+ \hspace[][#1]%
+ \else
+ \hspace[][\s!default]%
+ \fi\fi}
+
+% \def\dodohspace[#1][#2#3]%
+% {\ifhmode
+% \removeunwantedspaces
+% \doifelse{#2}{-}
+% {{\scratchskip\hspaceamount{#1}{#3}\hskip-\scratchskip}}
+% {\hskip\hspaceamount{#1}{#2#3}}%
+% \expandafter\ignorespaces
+% \fi}
+%
+% not needed, tex handles -- as +
+
+\def\dodohspace[#1][#2]%
+ {\ifhmode
+ \removeunwantedspaces
+ \hskip\hspaceamount{#1}{#2}%
+ \expandafter\ignorespaces
+ \fi}
+
+\def\hspaceamount#1#2%
+ {\executeifdefined{\??hs#1:#2}{\executeifdefined{\??hs:#2}\zeropoint}}
+
+\def\emspaceamount{\fontdimen6\font}
+\def\spaceamount {\fontdimen2\font}
+
+\definehspace [\v!small] [.25\emspaceamount]
+\definehspace [\v!medium] [.5\emspaceamount]
+\definehspace [\v!big] [1\emspaceamount]
+\definehspace [\v!normal] [1\spaceamount]
+\definehspace [\v!default] [\spaceamount]
+
+%D Taken from Taco's math module (cq. \AMS\ macros), but
+%D adapted to \type {\hspace}:
+
+\unexpanded\def\textormathspace#1#2#3%
+ {\ifmmode\mskip#1#2\else\kern#1\hspaceamount\empty{#3}\fi\relax}
+
+\def\thinspace {\textormathspace+\thinmuskip 1}
+\def\medspace {\textormathspace+\medmuskip 2}
+\def\thickspace {\textormathspace+\thickmuskip3}
+\def\negthinspace {\textormathspace-\thinmuskip 1}
+\def\negmedspace {\textormathspace-\medmuskip 2}
+\def\negthickspace{\textormathspace-\thickmuskip3}
+
+\let \, \thinspace
+\let \: \medspace
+\let \; \thickspace
+\let \! \negthinspace
+
+\definehspace[1][.1667em]
+\definehspace[2][.2222em]
+\definehspace[3][.2777em]
+
+% this will become an alternative bunch of \blank settings
+%
+% \startlines
+% \scratchskip=.23pt plus 10pt minus 4pt \relax \number\scratchskip \space \the\scratchskip
+% \setsimplifiedskip\scratchskip1 \number\scratchskip \space \the\scratchskip
+% \setsimplifiedskip\scratchskip2 \number\scratchskip \space \the\scratchskip
+% \getsimplifiedskip\scratchskip\scratchcounter \number\scratchcounter
+% \stoplines
+%
+% \hrule width10cm \endgraf
+% \discardedskip{10pt}
+% \retainedskip {4pt}
+% \discardedskip {5pt}
+% \hrule width10cm \endgraf
+% \blockedskip{0pt}
+% \discardedskip{10pt}
+% \retainedskip {4pt}
+% \discardedskip {5pt}
+% \hrule width10cm \endgraf
+% \frozenskip {4cm}
+% \hrule width10cm \endgraf
+% \vskip10pt
+% \hrule width10cm \endgraf
+
+% ! ! ! etex only, evt splitskip macro gebruiken (syst-new)
+
+\newskip\simplifiedskip
+\newskip\simplifiedcounter
+
+\chardef\@@discardedskip1
+\chardef\@@retainedskip 2
+\chardef\@@forcedskip 3
+\chardef\@@blockedskip 4
+\chardef\@@frozenskip 5 % after heads, no break
+
+\def\setsimplifiedskip#1#2%
+ {#1\dimexpr(10\dimexpr(#1/10)) plus \gluestretch#1 minus \glueshrink#1\relax
+ \advance#1\numexpr(#2)sp\relax}
+
+\def\getsimplifiedskip#1#2%
+ {\simplifiedskip#1\relax
+ \ifzeropt\simplifiedskip % \ifdim\simplifiedskip=\zeropoint
+ #2\zerocount
+ \else
+ \simplifiedcounter\dimexpr10\dimexpr#1/10\relax\relax
+ \advance\simplifiedskip-\simplifiedcounter
+ #2\number\simplifiedskip\relax
+ \fi}
+
+\def\conditionalskip#1#2%
+ {\scratchskip#1\relax
+ \setsimplifiedskip\scratchskip#2\relax
+ \vskip\scratchskip\relax}
+
+\def\defrostskip
+ {\scratchskip\lastskip\penalty50000\normalvskip-\scratchskip\penalty50000\relax}
+
+\def\frozenskip#1%
+ {\endgraf
+ \ifvmode
+ \getsimplifiedskip\lastskip\scratchcounter
+ \ifdim\lastskip>#1\else
+ \defrostskip
+ \conditionalskip{#1}\@@frozenskip
+ \fi
+ \fi}
+
+\def\discardedskip#1%
+ {\endgraf
+ \ifvmode
+ \getsimplifiedskip\lastskip\scratchcounter
+ \ifcase\scratchcounter
+ \conditionalskip{#1}\@@discardedskip
+ \or % discard
+ \ifdim\lastskip>#1\else
+ \normalvskip-\lastskip
+ \conditionalskip{#1}\@@discardedskip
+ \fi
+ \or % retain
+ \ifdim\lastskip>#1\else
+ \normalvskip-\lastskip
+ \conditionalskip{#1}\@@discardedskip
+ \fi
+ \or % forced
+ \conditionalskip{#1}\@@discardedskip
+ \or % ignored
+ \or % frozen
+ \ifdim\lastskip>#1\else
+ \defrostskip
+ \conditionalskip{#1}\@@frozenskip
+ \fi
+ \else\ifdim#1=\zeropoint\else
+ \vskip#1\relax
+ \fi\fi
+ \fi}
+
+\def\retainedskip#1%
+ {\endgraf
+ \ifvmode
+ \getsimplifiedskip\lastskip\scratchcounter
+ \ifcase\scratchcounter
+ \conditionalskip{#1}\@@retainedskip
+ \or % discard
+ \normalvskip-\lastskip
+ \conditionalskip{#1}\@@retainedskip
+ \or % retain
+ \ifdim\lastskip>#1\else
+ \normalvskip-\lastskip
+ \conditionalskip{#1}\@@retainedskip
+ \fi
+ \or % forced
+ \conditionalskip{#1}\@@retainedskip
+ \or % ignored
+ \or % frozen
+ \ifdim\lastskip>#1\else
+ \defrostskip
+ \conditionalskip{#1}\@@frozenskip
+ \fi
+ \else\ifdim#1=\zeropoint\else
+ \vskip#1\relax
+ \fi\fi
+ \fi}
+
+\def\forcedskip#1%
+ {\endgraf
+ \ifvmode
+ \conditionalskip{#1}\@@forcedskip
+ \fi}
+
+\def\blockedskip#1%
+ {\endgraf
+ \ifvmode
+ \getsimplifiedskip\lastskip\scratchcounter
+ \ifcase\scratchcounter
+ \conditionalskip{#1}\@@blockedskip
+ \or % discard
+ \conditionalskip{#1}\@@blockedskip
+ \or % retain
+ \conditionalskip{#1}\@@blockedskip
+ \or % forced
+ \conditionalskip{#1}\@@blockedskip
+ \or % ignored
+ \or % frozen
+ \ifdim\lastskip>#1\else
+ \defrostskip
+ \conditionalskip{#1}\@@frozenskip
+ \fi
+ \else\ifdim#1=\zeropoint\else
+ \vskip#1\relax
+ \fi\fi
+ \fi}
+
+% beware, changing this will break some code (like pos/backgrounds)
+
+\newtoks\everyfirstparagraphintro
+\newtoks\everynextparagraphintro
+\newtoks\@@everyparagraphtoks
+
+\chardef\everyparagraphintro\zerocount
+
+\def\setupparagraphintro
+ {\dodoubleempty\dosetupparagraphintro}
+
+\def\dosetupparagraphintro[#1][#2]%
+ {\processallactionsinset
+ [#1]
+ [ \v!reset=>\global\chardef\everyparagraphintro\zerocount
+ \global\everyfirstparagraphintro\emptytoks
+ \global\everynextparagraphintro \emptytoks,
+ \v!first=>\global\chardef\everyparagraphintro\plusone
+ \doglobal\appendtoks#2\to\everyfirstparagraphintro,
+ \v!next=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro\plusone\fi
+ \doglobal\appendtoks#2\to\everynextparagraphintro,
+ \v!each=>\ifcase\everyparagraphintro\global\chardef\everyparagraphintro\plustwo\fi
+ \doglobal\appendtoks#2\to\everyfirstparagraphintro
+ \doglobal\appendtoks#2\to\everynextparagraphintro]}
+
+% \def\doinsertparagraphintro
+% {\ifcase\everyparagraphintro\relax
+% % no data
+% \@@everyparagraphtoks\emptytoks
+% \or
+% % first data
+% \global\chardef\everyparagraphintro\plustwo
+% \@@everyparagraphtoks\everyfirstparagraphintro
+% \global\everyfirstparagraphintro\emptytoks
+% \or
+% % next data
+% \@@everyparagraphtoks\everynextparagraphintro
+% \fi
+% \the\@@everyparagraphtoks}
+
+\def\doinsertparagraphintro
+ {\begingroup
+ \everypar\emptytoks
+ \ifcase\everyparagraphintro\relax
+ % no data
+ \@@everyparagraphtoks\emptytoks
+ \or
+ % first data
+ \global\chardef\everyparagraphintro\plustwo
+ \@@everyparagraphtoks\everyfirstparagraphintro
+ \global\everyfirstparagraphintro\emptytoks
+ \or
+ % next data
+ \@@everyparagraphtoks\everynextparagraphintro
+ \fi
+ \the\@@everyparagraphtoks
+ \endgroup}
+
+\def\insertparagraphintro
+ {\ifcase\everyparagraphintro\else\@EA\doinsertparagraphintro\fi}
+
+% \appendtoksonce\insertparagraphintro\to\everypar % should come last
+
+%D \starttyping
+%D \setupparagraphintro[first][\hbox to 3.5em{\tt FIRST \hss}]
+%D \setupparagraphintro[first][\hbox to 3.5em{\tt TSRIF \hss}]
+%D \setupparagraphintro[next] [\hbox to 3.5em{\tt NEXT \hss}]
+%D \setupparagraphintro[next] [\hbox to 3.5em{\tt TXEN \hss}]
+%D \setupparagraphintro[each] [\hbox to 3.0em{\tt EACH \hss}]
+%D \setupparagraphintro[each] [\hbox to 3.0em{\tt HCEA \hss}]
+%D
+%D some paragraph \par
+%D some paragraph \par
+%D some paragraph \par
+%D
+%D \definelabel[parnumber]
+%D
+%D \setupparagraphintro[reset,each][\inleft{\slxx\parnumber}]
+%D
+%D some paragraph \par
+%D some paragraph \par
+%D some paragraph \par
+%D \stoptyping
+
+%D \macros
+%D {flushatnextpar}
+%D
+%D This macro collects data that will be flushed at the next paragraph.
+%D By using this macro you can avoid interfering nodes (writes, etc).
+
+\newbox \postponednodedata
+
+\def\flushatnextpar
+ {\bgroup
+ \dowithnextbox
+ {\global\setbox\postponednodedata\hbox{\box\postponednodedata\box\nextbox}\egroup}%
+ \hbox}
+
+\def\flushpostponednodedata
+ {\ifvoid\postponednodedata\else
+ \hbox{\smashedbox\postponednodedata}%
+ \fi}
+
+% Very nasty but needed for margin stuff inside colored
+% paragraphs.
+
+\let\normalvadjust\vadjust
+
+% \def\graphicvadjust % bad, those low level color calls here
+% {\dowithnextbox
+% {\normalvadjust
+% {\dostartgraphicgroup
+% \localstarttextcolor
+% \unvbox\nextbox
+% \localstoptextcolor
+% \dostopgraphicgroup}}%
+% \vbox}
+
+% test this prikkels/pascal margin text before heads (mode
+% 1) as well as uitwerkingen (mode 2)
+
+%chardef\graphicvadjustmode=0 % fake
+%chardef\graphicvadjustmode=1 % normal
+\chardef\graphicvadjustmode=2 % normal + compensate (== default)
+
+\def\graphicvadjust % bad, those low level color calls here
+ {\dowithnextboxcontent
+ {\forgetall}
+ {\ifcase\graphicvadjustmode \@EA \fakedvadjust \else \@EA\normalvadjust \fi
+ {\dostartgraphicgroup % don't ask
+ \localstarttextcolor
+ \unvbox\nextbox
+ \localstoptextcolor % don't ask
+ \dostopgraphicgroup
+ \ifcase\graphicvadjustmode \or \or
+ % corrects for one line paragraphs
+ \nointerlineskip
+ \kern-\struttotal
+ \nointerlineskip
+ \verticalstrut
+ \fi}}%
+ \vbox}
+
+%D This works only in a properly strutted line, and is meant
+%D for deeply burried operations, like in heads.
+
+\def\fakedvadjust
+ {\dowithnextbox
+ {\setbox\nextbox\hbox{\llap{\lower\strutdepth\box\nextbox}}%
+ \smashedbox\nextbox}%
+ \vtop}
+
+\def\flexiblespaceamount#1#2#3%
+ {#1\fontdimen2\font
+ \!!plus#2\fontdimen3\font
+ \!!minus#3\fontdimen4\font}
+
+\def\fixedspaceamount#1%
+ {#1\fontdimen2\font}
+
+\setupwhitespace
+ [\v!none]
+
+\indenting
+ [\v!never]
+
+\setupindenting
+ [\v!none]
+
+\setupblank
+ [\v!standard,
+ \v!big]
+
+\defineblank[\v!default] [\currentblank]
+\defineblank[\v!before] [\v!default]
+\defineblank[\v!inbetween][\v!default]
+\defineblank[\v!after] [\v!before]
+
+\setupinterlinespace
+ [\c!minheight=0pt, % only special purpose
+ \c!mindepth=0pt, % only special purpose
+ \c!height=.72,
+ \c!depth=.28,
+ \c!top=1.0,
+ \c!bottom=0.4,
+ \c!distance=1pt,
+ \c!line=2.8ex,
+ \c!stretch=0]
+
+\setupnarrower
+ [\c!left=1.5em,
+ \c!right=1.5em,
+ \c!middle=1.5em]
+
+\setuptolerance
+ [\v!horizontal,\v!verystrict]
+
+\setuptolerance
+ [\v!vertical,\v!strict]
+
+\setupalign
+ [\v!bottom,
+ \v!width]
+
+\setupspacing
+ [\v!packed]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-syn.tex b/Master/texmf-dist/tex/context/base/core-syn.tex
new file mode 100644
index 00000000000..0b6685a30ef
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-syn.tex
@@ -0,0 +1,362 @@
+%D \module
+%D [ file=core-syn,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Synonyms and Sorts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Synonyms and Sorts}
+
+\unprotect
+
+% \checkdefined kan hierheen
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% synonym entry {tag} {pure} {text} {synonym}
+%
+% Deze file wordt met het programma TeXUtil omgezet in een
+% in te lezen TeXFile met de commando's:
+%
+% \synonymentry {tag} {pure} {text} {synonym}
+
+\newif\ifsynonymmeaning
+
+% todo: \def\synonymparameter#1{\csname\??sm\currentsynonym#1\endcsname}
+
+\def\dosetupsynonyms[#1][#2]%
+ {\getparameters[\??sm#1][#2]}
+
+\def\setupsynonyms
+ {\dodoubleargument\dosetupsynonyms}
+
+\def\doresetsynonym#1%
+ {\letvalue{#1\s!entry}\gobblethreearguments}
+
+\def\dohandlesynonymentry#1#2#3#4%
+ {\bgroup
+ \global\utilitydonetrue
+ \syndef
+ {\doattributes{\??sm#1}\c!textstyle\c!textcolor{#3}}
+ \ConvertToConstant\doifelse{#4}{}{\unknown}{#4}\par
+ \egroup}
+
+\def\synonymentry#1%
+ {\executeifdefined{#1\s!entry}\gobblethreearguments}
+
+\def\dosetsynonym#1%
+ {\doifdefinedelse{\??sm#1\c!command}
+ {\setvalue{#1\s!entry}{\getvalue{\??sm#1\c!command}}} % 3 argumenten
+ {\setvalue{#1\s!entry}{\dohandlesynonymentry{#1}}}}
+
+\def\doplacelistofsynonyms#1#2%
+ {\whitespace
+ \begingroup
+ \def\currentsynonym{#1}%
+ \definedescription % nog eens een class van maken, net als framed
+ [syndef]
+ [\c!location=\getvalue{\??sm#1\c!location},
+ \c!width=\getvalue{\??sm#1\c!width},
+ \c!distance=\getvalue{\??sm#1\c!distance},
+ \c!sample=\getvalue{\??sm#1\c!sample},
+ \c!hang=\getvalue{\??sm#1\c!hang},
+ \c!align=\getvalue{\??sm#1\c!align},
+ \c!before=\getvalue{\??sm#1\c!before},
+ \c!inbetween=\getvalue{\??sm#1\c!inbetween},
+ \c!after=\getvalue{\??sm#1\c!after},
+ \c!indentnext=\getvalue{\??sm#1\c!indentnext},
+ \c!headstyle=,
+ \c!style=]%
+ \setupwhitespace[\v!none]%
+ \doutilities{#1}\jobname{#2}\relax\par
+ \endgroup
+ \ifutilitydone\else\nowhitespace\fi}
+
+\def\docompletelistofsynonyms#1#2% expansion needed to avoid v! (due to french active !)
+ {\expanded{\systemsuppliedchapter[#1]{\noexpand\headtext{#2}}}%
+ \doplacelistofsynonyms{#1}{#2}%
+ \page[\v!yes]}
+
+\def\processsynonym#1#2#3%
+ {\begingroup % anders in mathmode lege \hbox, zie eenheden
+ \ifsynonymmeaning
+ \synonymmeaningfalse
+ \doattributes{\??sm#1}\c!synonymstyle\c!synonymcolor{#3}%
+ \else
+ \explicithmode
+ \doattributes{\??sm#1}\c!textstyle\c!textcolor{#2}%
+ \fi
+ \endgroup}
+
+\def\getsynonymmeaning#1#2#3%
+ {\bgroup
+ \doifundefined{#2#3}
+ {\setgvalue{#2#3}{{\tt[#3]}}%
+ \showmessage\m!systems{18}{#1,#3}}%
+ \synonymmeaningtrue
+ \getvalue{#2#3}%
+ \egroup}
+
+\def\dowritesynonym#1#2#3#4%
+ {\begingroup % anders in mathmode lege \hbox
+ \convertexpanded{\getvalue{\??sm#1\c!expansion}}{#3}\asciisynonym
+ \convertexpanded{\getvalue{\??sm#1\c!expansion}}{#4}\asciimeaning
+ \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {\asciimeaning}}%
+ \endgroup}
+
+\def\preexecutesynonym#1#2#3#4%
+ {\ifdoinpututilities \else
+ \dowritesynonym{#1}{#2}{#3}{#4}%
+ \unexpanded\setgvalue{#2}{\processsynonym{#1}{#3}{#4}}%
+ \fi}
+
+\def\executesynonym#1#2#3#4%
+ {\preexecutesynonym{#1}{#2}{#3}{#4}%
+ \processsynonym{#1}{#3}{#4}}
+
+\def\expandsynonym#1#2#3#4%
+ {{\synonymmeaningtrue
+ \processsynonym{#1}{#3}{#4}}}
+
+\def\dodoloadsynonym#1#2#3#4%
+ {\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}
+
+\def\doloadsynonym#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\doifelsenothing{##1}
+ {\dodoloadsynonym{#1}{##2}{##2}{##3}}
+ {\dodoloadsynonym{#1}{##1}{##2}{##3}}%
+ \global\utilitydonetrue}}
+
+\def\doloadsynonyms#1#2%
+ {\bgroup
+ \let\dosetsynonym\doloadsynonym
+ \showmessage\m!systems{19}{#2}%
+ \doutilities{#1}\jobname\empty\relax\relax
+ \egroup
+ \setvalue{\s!check#1}##1{}}
+
+\def\dodocomplexsynonym[#1][#2]#3#4%
+ {\doifsomething{#2}
+ {\getvalue{\s!check#1}{#2}%
+ \doglobal\appendtoks\setvalue{#2}{#2}\to\simplifiedcommands
+ \doifelsevalue{\??sm#1\c!conversion}\v!yes
+ {\unexpanded\setgvalue{#2}{\expandsynonym{#1}{#2}{#3}{#4}}}
+ {\doifelsevalue{\??sm#1\c!state}\v!start
+ {\doifelsevalue{\??sm#1\c!criterium}\v!all
+ {\preexecutesynonym{#1}{#2}{#3}{#4}}
+ {\unexpanded\setgvalue{#2}{\executesynonym{#1}{#2}{#3}{#4}}}}
+ {\unexpanded\setgvalue{#2}{\processsynonym{#1}{#3}{#4}}}}}}
+
+\def\docomplexsynonym[#1][#2][#3]#4#5%
+ {\ifthirdargument
+ \dodocomplexsynonym[#2][#1#3]{#4}{#5}%
+ \else
+ \dodocomplexsynonym[#2][#1#4]{#4}{#5}%
+ \fi}
+
+\def\dodefinesynonyms[#1][#2][#3][#4]%
+ {\iffourthargument
+ \unexpanded\def#4##1{\getsynonymmeaning{#1}{\??sm:#1:}{##1}}%
+ \ifthirdargument
+ \unexpanded\def#3##1{\getvalue{\??sm:#1:##1}}%
+ \fi
+ \setvalue{#1}{\dotripleempty\docomplexsynonym[\??sm:#1:][#1]}%
+ \else
+ \ifthirdargument
+ \unexpanded\def#3##1{\getsynonymmeaning{#1}{}{##1}}%
+ \fi
+ \setvalue{#1}{\dotripleempty\docomplexsynonym[][#1]}%
+ \fi
+ \dosetupsynonyms
+ [#1]%
+ [\c!synonymstyle=,\c!textstyle=,
+ \c!state=\v!start,\c!criterium=,
+ \c!location=\v!left,\c!width=5em,\c!distance=0pt,
+ \c!sample=,\c!hang=,\c!align=,
+ \c!before=,\c!inbetween=,\c!after=,
+ \c!indentnext=\v!no,
+ \c!expansion=]%
+ \presetheadtext[#2=\Word{#2}]% changes the \if...argument
+ \addutilityreset{#1}%
+ \setvalue{\e!setup #2\e!endsetup}{\dodoubleargument\getparameters[\??sm#1]}% to be obsolete
+ \setvalue{\s!set #1}{\dosetsynonym{#1}}%
+ \setvalue{\s!reset #1}{\doresetsynonym{#1}}%
+ \setvalue{\s!check #1}##1{\checkdefined{synonym}{#1}{##1}}%
+ \setvalue{\e!load #2}{\doloadsynonyms{#1}{#2}}%
+ \setvalue{\e!place\e!listof #2}{\doplacelistofsynonyms{#1}{#2}}%
+ \setvalue{\e!complete\e!listof#2}{\docompletelistofsynonyms{#1}{#2}}}
+
+\def\definesynonyms
+ {\doquadrupleempty\dodefinesynonyms}
+
+% Formaat tex-utility-input-file <jobname.tui>:
+%
+% synonym entry {tag} {pure} {text} {}
+%
+% Deze file wordt met het programma TeXUtil omgezet in een
+% in te lezen TeXFile met de commando's:
+%
+% \synonymentry {tag} {pure} {text} {}
+
+\def\dosetupsorting[#1][#2]%
+ {\getparameters[\??so#1][#2]}
+
+\def\setupsorting
+ {\dodoubleargument\dosetupsorting}
+
+\def\doresetsort#1%
+ {\letvalue{#1\s!entry}\gobblethreearguments}
+
+\def\dosetsort#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\def\dowritesort####1####2####3{}%
+ \global\utilitydonetrue
+ \bgroup
+ \doifdefinedelse{\??so#1\c!command}
+ {\getvalue{\??so#1\c!command}{##2}} % 1 argument
+ {\getvalue{\??so#1\c!before}%
+ \doattributes{\??so#1}\c!style\c!color{##2}%
+ \getvalue{\??so#1\c!after}}%
+ \egroup}}
+
+\def\doplacelistofsorts#1% NOG EEN RUWE VERSIE MAKEN
+ {\whitespace % ZONDER WITRUIMTE ETC ETC
+ \begingroup
+ \setupwhitespace[\v!none]%
+ \doutilities{#1}\jobname{#1}\relax\par
+ \endgroup
+ \ifutilitydone\else\nowhitespace\fi}
+
+\def\docompletelistofsorts#1#2%
+ {\expanded{\systemsuppliedchapter[#1]{\noexpand\headtext{#2}}}%
+ \doplacelistofsorts{#1}%
+ \page[\v!yes]}
+
+\def\processsort#1#2#3%
+ {\explicithmode
+ \bgroup
+ \doattributes{\??so#1}\c!style\c!color{#2}%
+ \egroup}
+
+\def\dowritesort#1#2#3%
+ {\bgroup
+ \convertexpanded{\getvalue{\??so#1\c!expansion}}{#3}\asciisynonym
+ \immediatewriteutility{s e {#1} {#2} {\asciisynonym} {}}%
+ \egroup}
+
+\def\synonymentry#1%
+ {\executeifdefined{#1\s!entry}\gobblethreearguments}
+
+\def\preexecutesort#1#2#3%
+ {\ifdoinpututilities \else
+ \dowritesort{#1}{#2}{#3}%
+ \unexpanded\setgvalue{#2}{\processsort{#1}{#3}{#2}}%
+ \fi}
+
+\def\executesort#1#2#3%
+ {\bgroup
+ \def\executesort##1##2##3{##3}% Trick needed for nested logo's.
+ \preexecutesort{#1}{#2}{#3}%
+ \processsort{#1}{#3}{#2}%
+ \egroup}
+
+\def\doloadsort#1%
+ {\setvalue{#1\s!entry}##1##2##3%
+ {\setgvalue{##1}{##2}%
+ \global\utilitydonetrue}}
+
+\def\doloadsort#1#2%
+ {\bgroup
+ \let\dosetsort\doloadsort
+ \showmessage\m!systems{20}{#2}%
+ \doutilities{#1}\jobname\empty\relax\relax
+ \egroup
+ \setvalue{\s!check#1}##1{}}
+
+\def\dodocomplexsort[#1][#2]#3%
+ {\doifsomething{#2}
+ {\getvalue{\s!check#1}{#2}%
+ \doglobal\appendtoks\setvalue{#2}{#2}\to\simplifiedcommands
+ \doifelsevalue{\??so#1\c!state}\v!start
+ {\doifelsevalue{\??so#1\c!criterium}\v!all
+ {\preexecutesort{#1}{#2}{#3}}
+ {\unexpanded\setgvalue{#2}{\executesort{#1}{#2}{#3}}}}
+ {\unexpanded\setgvalue{#2}{\processsort{#1}{#3}{#2}}}}}
+
+\def\docomplexsort[#1][#2][#3]#4%
+ {\ifthirdargument
+ \dodocomplexsort[#2][#1#3]{#4}%
+ \else
+ \dowritesort{#2}{#4}{#4}%
+ \fi}
+
+% if #3=\relax or \v!none, then no command but still protected
+
+\def\dodefinesorting[#1][#2][#3]%
+ {\getparameters[\??so#1]
+ [%\c!command=, % we test for defined !
+ \c!state=\v!start,
+ \c!criterium=,
+ \c!style=,
+ \c!before=,
+ \c!after=\endgraf,
+ \c!expansion=]%
+ \ifthirdargument
+ \ConvertConstantAfter\doifnot{#3}\v!none
+ {\ifx#3\relax \else
+ \def#3##1{\getvalue{\??so:#1:##1}}
+ \fi}%
+ \setvalue{#1}{\dotripleempty\docomplexsort[\??so:#1:][#1]}%
+ \else
+ \setvalue{#1}{\dotripleempty\docomplexsort[][#1]}%
+ \fi
+ \addutilityreset{#1}%
+ \presetheadtext[#2=\Word{#2}]% after \ifthirdargument -)
+ \setvalue{\e!setup#2\e!endsetup}[##1]{\getparameters[\??so#1][##1]}% to be obsolete
+ \setvalue{\s!set#1}{\dosetsort{#1}}%
+ \setvalue{\s!reset#1}{\doresetsort{#1}}%
+ \setvalue{\e!load#2}{\doloadsort{#1}{#2}}%
+ \setvalue{\s!check#1}##1{\checkdefined{sort}{#1}{##1}}%
+ \setvalue{\e!place\e!listof#2}{\doplacelistofsorts{#1}}%
+ \setvalue{\e!complete\e!listof#2}{\docompletelistofsorts{#1}{#2}}}
+
+\def\definesorting
+ {\dotripleempty\dodefinesorting}
+
+\definesynonyms
+ [\v!abbreviation]
+ [\v!abbreviations]
+ [\infull]
+
+\setupsynonyms
+ [\v!abbreviation]
+ [\c!textstyle=\v!capital,
+ \c!synonymstyle=,
+ \c!textcolor=,
+ \c!synonymcolor=,
+ \c!location=\v!left,
+ \c!width=5em,
+ \c!state=\v!start]
+
+\definesorting
+ [\v!logo]
+ [\v!logos]
+% no [\logogram]
+
+\definesynonyms
+ [\v!unit]
+ [\v!units]
+ [\unitmeaning]
+
+\setupsynonyms
+ [\v!unit]
+ [\c!textstyle=\dimension]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-sys.tex b/Master/texmf-dist/tex/context/base/core-sys.tex
new file mode 100644
index 00000000000..b90f2305b26
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-sys.tex
@@ -0,0 +1,310 @@
+%D \module
+%D [ file=core-sys, % moved from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=System,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros (System)}
+
+\unprotect
+
+\def\outputfilename{\@@svfile}
+\def\inputfilename {\@@svinputfile}
+
+\let\jobfilesuffix\c!tex
+
+\def\splitjobfilename
+ {\resetsystemmode{suffix-\jobfilesuffix}%
+ \edef\ascii{\inputfilename}\convertcommand\ascii\to\ascii
+ \splitstring\ascii\at.\to\jobfilename\and\jobfilesuffix
+ \lowercasestring\jobfilesuffix\to\jobfilesuffix
+ \doifnothing\jobfilename {\let\jobfilename \jobname}%
+ % todo and totest: \convertcommand\jobfilename\to\jobfilename
+ \doifnothing\jobfilesuffix{\let\jobfilesuffix\c!tex}%
+ \setsystemmode{suffix-\jobfilesuffix}}
+
+\appendtoks \splitjobfilename \to \everyjob
+
+% Some mechanisms (see x-res-01) use either \jobfilename or
+% \jobfilename.somesuffix, in which case we need to use the
+% full name if given or a default (like \jobfilename.xml);
+% this comes down to replacing the default tex suffix.
+
+\def\jobfullname{\jobfilename.\jobfilesuffix}
+
+\def\setjobfullname#1% #1 = default if not given
+ {\doifelsenothing\jobfilename
+ {\let\jobfullname\empty}
+ {\doif\jobfilesuffix\c!tex{\edef\jobfullname{\jobfilename.#1}}}}
+
+% ...
+
+\def\dosetupsystem[#1]%
+ {\getparameters[\??sv][#1]%
+ \setuprandomize[\@@svrandom]%
+ \beforesplitstring\@@svresolution\at dpi\to\@@svresolution
+ \let\outputresolution\@@svresolution
+ \ifcase\@@svn
+ % % 0 : unknown
+ \or
+ \setsystemmode\v!first % 1 : first run
+ \or
+ % % 2 : successive run
+ \or
+ \setsystemmode\v!first % 3 : first and only run
+ \or
+ \setsystemmode\v!last % 4 : extra last run
+ \fi
+ \splitjobfilename}
+
+\def\setupsystem
+ {\dosingleargument\dosetupsystem}
+
+%D The system modes set by the setup command can be used in
+%D situations like:
+%D
+%D \starttyping
+%D \startmode[*first]
+%D \executesystemcommand{cleanupxml text.xml clean-text.xml}
+%D \stopmode
+%D
+%D \starttext
+%D \typefile{clean-text.xml}
+%D \stoptext
+%D \stoptyping
+
+\def\setuprandomize[#1]%
+ {\doifsomething{#1}
+ {\bgroup
+ \setrandomseed\minusone % signals thrd-ran to reseed
+ % tex's time is in minutes
+ \processaction
+ [#1]
+ [ \v!small=>\divide\normaltime 15, % 900,
+ \v!medium=>\divide\normaltime 30, % 1800,
+ \v!big=>\divide\normaltime 60, % 3600,
+ \v!normal=>,
+ \s!default=>,
+ \s!unknown=>\normaltime=#1]%
+ \nextrandom
+ \egroup}}
+
+\setupsystem
+ [\c!directory=,
+ \c!n=0, % 0:unknown 1: one run 2: first 3: successive 4: final run
+ \c!resolution=600dpi,
+ \c!random=,
+ \c!file=\jobname,
+ \c!inputfile=\outputfilename,
+ \c!bodyfont=\normalizedlocalbodyfontsize] % of iets anders
+
+%D
+
+\def\dostartglobaldefs#1#2%
+ {\edef\!!stringa{\the\globaldefs}%
+ \ifnum\globaldefs#10
+ \globaldefs-\globaldefs
+ \fi
+ \advance\globaldefs #21
+ \setevalue{@gd@\the\globaldefs}{\!!stringa}}
+
+\def\dostopglobaldefs
+ {\doifdefinedelse{@gd@\the\globaldefs}
+ {\globaldefs\getvalue{@gd@\the\globaldefs}\relax}
+ {\globaldefs\zerocount}}
+
+\def\startlocal {\dostartglobaldefs>-}
+\def\stoplocal {\dostopglobaldefs}
+\def\startglobal {\dostartglobaldefs<+}
+\def\stopglobal {\dostopglobaldefs}
+
+\def\complexstart[#1]{\bgroup\getvalue{\e!start#1}}
+\def\complexstop [#1]{\getvalue{\e!stop #1}\egroup}
+
+\let\simplestart\bgroup
+\let\simplestop \egroup
+
+\definecomplexorsimple\start
+\definecomplexorsimple\stop
+
+\def\dododefinestartstop[#1][#2]% todo: use indirect commands
+ {\getparameters
+ [\??be#1]
+ [\c!before=,
+ \c!after=,
+ \c!inbetween=,
+ \c!commands=,
+ \c!style=,
+ #2]%
+ \unexpanded\setvalue{#1}%
+ {\groupedcommand
+ {\getvalue{\??be#1\c!commands}%
+ \dostartattributes{\??be#1}\c!style\c!color}
+ {\dostopattributes
+ \getvalue{\??be#1\c!inbetween}}}%
+ \setvalue{\e!start#1}%
+ {\getvalue{\??be#1\c!before}%
+ \bgroup
+ \getvalue{\??be#1\c!commands}%
+ \dostartattributes{\??be#1}\c!style\c!color\empty}%
+ \setvalue{\e!stop#1}%
+ {\dostopattributes
+ \egroup
+ \getvalue{\??be#1\c!after}}}
+
+\def\dodefinestartstop[#1][#2]%
+ {\def\docommando##1{\dododefinestartstop[##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\definestartstop
+ {\dodoubleargument\dodefinestartstop}
+
+\def\dosetupstartstop[#1][#2]%
+ {\def\docommando##1{\getparameters[\??be##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\setupstartstop
+ {\dodoubleargument\dosetupstartstop}
+
+% \docommando kan niet worden gebruikt omdat deze macro
+% soms lokaal wordt gebruikt
+
+% te zijner tijd:
+%
+% \definevariable {pc} % ProtectedCommand
+%
+% \def\executeprotected#1%
+% {\csname\??pc\string#1\endcsname}
+%
+% \def\defineprotected#1#2%
+% {\expandafter\def\csname\??pc\string#2\endcsname}
+%
+% \def\defineunprotected#1%
+% {\def#1}
+%
+% \def\doprotected%
+% {\ifx\next\define
+% \let\next=\defineprotected
+% \else
+% \let\next=\executeprotected
+% \fi
+% \next}
+%
+% \def\unexpanded%
+% {\futurelet\next\doprotected}
+%
+% \unexpanded\define\ziezo{ziezo}
+%
+% \unexpanded\ziezo
+
+\def\complexdefine[#1]#2#3%
+ {\ifx#2\undefined
+ \else
+ \showmessage\m!systems4{\string#2}%
+ \fi
+ \ifcase0#1\def#2{#3}%
+ \or\def#2##1{#3}%
+ \or\def#2##1##2{#3}%
+ \or\def#2##1##2##3{#3}%
+ \or\def#2##1##2##3##4{#3}%
+ \or\def#2##1##2##3##4##5{#3}%
+ \or\def#2##1##2##3##4##5##6{#3}%
+ \or\def#2##1##2##3##4##5##6##7{#3}%
+ \or\def#2##1##2##3##4##5##6##7##8{#3}%
+ \or\def#2##1##2##3##4##5##6##7##8##9{#3}%
+ \else\def#2{#3}%
+ \fi}
+
+\definecomplexorsimpleempty\define
+
+\unexpanded\def\macroname#1% brrr
+ {\executeifdefined{#1}\empty}
+
+\def\usecommands#1%
+ {\bgroup
+ \def\docommando##1{\setbox0\hbox{\getvalue{\string##1}##1}}%
+ \processcommalist[#1]\docommando
+ \egroup}
+
+\newif\ifforcefileexpansion % handy for document level overload
+
+%D The next implementation is about 4 times as faster than a
+%D processaction alternative on an string of average length.
+%D Since this feature is used in XML processing, it made sense
+%D to support this faster alternative. It's installable as well.
+
+\def\installexpander#1#2{\setvalue{\s!do\c!expansion#1}{#2}}
+
+% \long\def\convertexpanded#1#2#3% hm, first we need to make sure
+% {\csname % that we assign all exp a value
+% \s!do\c!expansion
+% \ifforcefileexpansion
+% \v!yes
+% \else\@EA\ifx\csname\s!do\c!expansion\csname#1\c!expansion\endcsname\endcsname\relax
+% \s!default
+% \else
+% \csname#1\c!expansion\endcsname
+% \fi\fi
+% \endcsname#2\to#3}
+
+\long\def\convertexpanded#1#2#3% hm, first we need to make sure
+ {\csname % that we assign all exp a value
+ \s!do\c!expansion
+ \ifforcefileexpansion
+ \v!yes
+ \else\@EA\ifx\csname\s!do\c!expansion#1\endcsname\relax
+ \s!default
+ \else
+ #1%
+ \fi\fi
+ \endcsname#2\to#3}
+
+\installexpander\v!command{\convertcommand }
+\installexpander\s!default{\convertargument}
+\installexpander\empty {\convertargument}
+\installexpander\v!no {\convertargument}
+\installexpander\v!yes {\convertmeaning }
+\installexpander\v!yes {\convertmeaning } % something lost ?
+\installexpander\v!strict {\reduceargument }
+
+\def\convertmeaning#1\to % watch the double expansion !
+ {\bgroup
+ \honorunexpanded
+ \dontexpandencoding % new
+ \xdef\@@globalexpanded{#1}%
+ \xdef\@@globalexpanded{\@@globalexpanded}%
+ \egroup
+ \convertcommand\@@globalexpanded\to}
+
+\def\reduceargument#1\to#2%
+ {\begingroup
+ \reducetocoding[raw]%
+ \edef\ascii{#1}%
+ \expandafter\endgroup\expandafter\edef\expandafter#2\expandafter{\ascii}}
+
+% \setvalue{statevalue\v!stop }{0}
+% \setvalue{statevalue\v!start }{1}
+% \setvalue{statevalue\v!normaal}{2}
+% \setvalue{statevalue\v!leeg }{3}
+% \setvalue{statevalue\v!geen }{4}
+%
+% \def\setcurrentstate#1%
+% {\chardef\currentstate=0\getvalue{statevalue\getvalue{#1\c!state}\relax}
+%
+% \ifcase\currentstate ...
+
+\def\redo{\dorepeat} % [n*10], kind of obsolete
+
+% obsolete, use \dorecurse instead
+%
+% \def\herhaler {\repeater}
+% \def\herhaalmetcommando {\dorepeatwithcommand}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-tab.tex b/Master/texmf-dist/tex/context/base/core-tab.tex
new file mode 100644
index 00000000000..51404e6897b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-tab.tex
@@ -0,0 +1,2654 @@
+%D \module
+%D [ file=core-tab,
+%D version=1997.10.10,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=\TABLE\ Embedding,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / TaBlE Embedding}
+
+% Don't change the splitter:
+%
+% ... \NR
+% \TABLEnoalign{\page}\TABLEhead
+% \NC ...
+
+% e-tex: reverse rows or vadjust or ... in tables
+% \ifalign
+% \xhrule : calls for 'special' with width
+% BUG:
+%
+% \starttable[|l|l|]
+% \HL
+% \RL\FR \VL Head 1 \VL Head 2 \VL\FR
+% \RL\LR \VL Head A \VL Head B \VL\LR % niet grijs ??
+% \HL
+% \VL 1 \VL 2 \VL\FR
+% \VL a \VL b \VL\LR
+% \HL
+% \stoptable
+
+% melden als in kleur conflict, uitgestelde test op \SR\SR
+
+% verengelsen
+% interface
+
+% footnotes flushen
+% \......TABLE........ namen
+% kolommen testen
+% unbreakable kop definieren
+% voetnoten
+% meldingen
+% als direct \use{max} dan fout
+% \BREAKPOINT
+% breedte lijn telt
+% errors: ook gray in handle
+
+% \AR -> als in DL dan \DR
+
+% nieuw:
+%
+% \NL / \NL[blanko] is skip, nog default?
+% geen \HL in a row
+% \HL[n]
+% \VL[n] + remembers
+% c{colorspec} key
+% \HC[color][width]
+% \VC[color]
+% meldingen row, column, use, advise
+% \AR: UITSTELLEN / EXPERIMENTEEL
+
+
+% WAARDELOZE ERROR HANDLER
+
+% THIS RENEWED MODULE WORKS OK BUT STILL LOOKS BAD
+
+%D We felt no need to write our own table building macros,
+%D simply because Michael Wichura made a terrific one. This
+%D package is quite complete and well documented. In \CONTEXT\
+%D we provide a shell for consistent spacing as well as color
+%D support. Implementing these features without adapting the
+%D original macros is not trivial. One easilly gets conflicts
+%D with \type{\omit}, \type{\span} and \type{\noalign}, which
+%D means that we end up postponing and overloading macros,
+%D mostly global. Now, let's start with loading the main
+%D macros:
+
+\doifundefined{BeginTable}{\doinputonce{table.tex}}
+
+\unprotect
+
+%D \macros
+%D {inintable, ifsplittables}
+%D
+%D First we declare some variables. These show a bit what we
+%D are dealing with. First we introdoce some booleans that
+%D enable us, inside as well as outside this module, to
+%D determine in what mode we are.
+
+\newif\ifintable
+\newif\ifsplittables
+
+%D \macros
+%D {tracetablestrue}
+%D
+%D When I documented this module, I felt the need for tracing
+%D options. After implementing this feature, I also added
+%D warnings, error recovery and automatic spacing.
+
+\newif\iftracetables
+
+%D We show this feature in an eample that also shows some of
+%D the basic table typesetting commands.
+%D
+%D \startbuffer
+%D \starttable[|||]
+%D \HL
+%D \VL first \VL second \VL\AR
+%D \HL
+%D \VL alfa \VL 1 \VL\AR
+%D \VL beta \VL 2 \VL\AR
+%D \VL gamma \VL 3 \VL\AR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \startcombination
+%D {\tracetablesfalse\getbuffer} {\type{\tracetablesfalse}}
+%D {\tracetablestrue\getbuffer} {\type{\tracetablestrue}}
+%D \stopcombination
+%D
+%D This table is specified as:
+%D
+%D \typebuffer
+%D
+%D This examples shows about the minimum of commands needed to
+%D typeset such a table. In this table, the \type {\AR} is
+%D automatically translated into the more primitive (but more
+%D verbose) commands \type {\SR}, \type {\FR}, \type {\MR} and
+%D \type {\LR} commands.
+%D
+%D \startbuffer
+%D \starttables[|||]
+%D \HL
+%D \VL first \VL second \VL\AR
+%D \HL
+%D \VL alfa \VL 1 \VL\AR
+%D \VL beta \VL 2 \VL\AR
+%D \VL gamma \VL 3 \VL\AR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D When we use the split table feature, we get a bit more
+%D information.
+%D
+%D {\tracetablesfalse\getbuffer}
+%D
+%D Sometimes in tables information shows up that is not typed
+%D in by the user. These messages give a cue in what aspect a
+%D table definition is wrong.
+%D
+%D \startbuffer
+%D \starttable[||||]
+%D \HL
+%D \VL first second \VL third \VL\AR
+%D \HL
+%D \VL alfa \VL 1 \VL a \VL\AR
+%D \VL beta \VL 2 \VL b \VL
+%D \VL gamma \VL \THREE{3} c \VL\AR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Those terrible table has three errors, which all show up in
+%D typeset messages. Errors cannot always recovered 100\% and
+%D therefore can result in two or more succesive messages, like
+%D in the last row.
+%D
+%D \getbuffer
+
+%D Bringing color into tables is complicated by the mere fact
+%D that color is not part of \TEX. The main complication is
+%D that we don't know in advance how wide a column will be. I
+%D implemented color support in tables in the early 90's
+%D because I needed it for some articles on color. I have to
+%D admit that I seldom use the mechanism.
+%D
+%D Most color support in \CONTEXT\ makes use of colored rules.
+%D At first sight, one is tempted to implement colors in tables
+%D in a similar way, but as said, we don't know the dimensions
+%D in advance. It turns out however that we don't have to,
+%D simply because alignments take care of stretching rules to
+%D the appropritate dimensions. This means that we can provide
+%D backgrounds by coloring rules with the height of a row,
+%D skipping upwards and finally drawing the content, like in:
+%D
+%D \gdef\ShowExample
+%D {\startfiguretext
+%D {none}
+%D {\getbuffer}
+%D \typebuffer
+%D \stopfiguretext}
+%D
+%D \startbuffer
+%D \starttable[|c|c|]
+%D \HL
+%D \BL[2] \SR
+%D \VL test \VL test \VL\SR
+%D \HL
+%D \VL test \VL test \VL\FR
+%D \VL test \VL test \VL\MR
+%D \VL test \VL test \VL\LR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D Just to be complete we show how the other columns can be
+%D given a background. Later we will provide more details over
+%D the commands used.
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \HL
+%D \BL[3] \SR
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \HL
+%D \BC \BL[2] \SR
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \HL
+%D \BC \BC \BL \SR
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \HL
+%D \BC \BL \SR
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \BL \BL \SR
+%D \HL
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+
+%D In these examples we can clearly see that for being a real
+%D background, the color or gray specification has to precede
+%D the content. Just to keep things simple, we can recall this
+%D specification later on:
+%D
+%D \startbuffer
+%D \starttable[|c|c|c|]
+%D \BC \BL \SR
+%D \HL
+%D \VL test \VL test \VL test \VL\SR
+%D \HL
+%D \BR\FR
+%D \VL test \VL test \VL test \VL\FR
+%D \BR\MR
+%D \VL test \VL test \VL test \VL\MR
+%D \BR\LR
+%D \VL test \VL test \VL test \VL\LR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D Close study learns that we can put the specification
+%D before or after the \type{\HL}, whatever suits best. Keeping
+%D track of these specifications is taken care of by the next
+%D variables:
+
+\newif \ifTABLEgrayline % executing gray line
+\newif \ifTABLEgraydone % gray line executed
+\newtoks \TABLEgraytoks % gray line specification
+
+%D A third major extension, besides spacing and color support,
+%D concerns splitting tables over pages. We don't give
+%D examples here, because its a waste of space.
+
+\newdimen\TABLEheight % These can be \newskimens
+\newdimen\TABLEmaxheight % given a few \relax's when
+\newdimen\TABLEheadheight % testing them with \ifdim.
+\newdimen\TABLEtailheight
+\newdimen\TABLEcaptionheight
+
+\newif\ifTABLEinbreak
+
+%D Nog vervangen:
+
+\def\c!Table{Table}
+\def\m!TABLE{TABLE}
+
+%D We already saw that the table macros report errors and
+%D provide automatic spacing. These features can only be
+%D implemented by keeping track of the state, often the last
+%D command on a row.
+
+\chardef\TABLEunknown = 0
+
+\chardef\TABLEseparaterow = 1
+\chardef\TABLEfirstrow = 2
+\chardef\TABLEmidrow = 3
+\chardef\TABLElastrow = 4
+\chardef\TABLErule = 5
+\chardef\TABLEskip = 6
+\chardef\TABLEautorow = 7
+
+\chardef\TABLEforcefirstrow = 1
+\chardef\TABLEforcelastrow = 2
+
+\chardef\TABLEmissingrow = 1
+\chardef\TABLEmissingcolumn = 2
+\chardef\TABLEspanoverflow = 3
+\chardef\TABLEdivisionoverflow = 4
+
+%D We store these states using efficient \type {\chardef}'s.
+%D Like most variables, these are global ones. When needed,
+%D especially when we flush the backgrounds, we can temporary
+%D disable the assignment.
+
+\newif\ifsetTABLEaction
+
+\def\setTABLEaction#1%
+ {\ifsetTABLEaction\global\chardef\TABLEaction#1\fi}
+
+\def\setTABLEforce#1%
+ {\ifsetTABLEaction\global\chardef\TABLEforce#1\fi}
+
+\def\setTABLEerror#1%
+ {\global\chardef\TABLEerror#1}
+
+%D Before we come to using these variables, we redefine and/or
+%D adapt some \TABLE\ macros. Within \TABLE's the \type{|} and
+%D \type{"} have special meanings in templates and are active
+%D during. Their meaning can therefore conflict with those
+%D elsewhere defined. To be compatible with traditional \TABLE\
+%D as well as \CONTEXT's \type{||} and the active \type{"}
+%D extensions for my german friends, we do some catcode magic.
+
+\newif\ifForgetTableBarAndQuote \ForgetTableBarAndQuotetrue
+
+% Old crappy code (live has changed):
+%
+% \bgroup
+%
+% \catcode`\|=\@@active
+% \catcode`\"=\@@active
+%
+% \gdef\pushouterbarandquote
+% {\ifForgetTableBarAndQuote
+% \ifnum\catcode`\|=\@@active \else
+% \catcode`\|=\@@active
+% \def|{\ifmmode\vert\else\char`\|\fi}%
+% \fi
+% \let\outertablebar=|%
+% \ifnum\catcode`\"=\@@active \else
+% \catcode`\"=\@@active
+% \def"{\char`\"}%
+% \fi
+% \let\outertablequote="%
+% \fi}
+%
+% \gdef\popouterbarandquote
+% {\ifForgetTableBarAndQuote
+% \let|\outertablebar
+% \let"\outertablequote
+% \else
+% \redefinetablebarandquote
+% \fi}
+%
+% \egroup
+%
+% probably better (untested):
+
+\bgroup
+
+\catcode`\|=\@@active
+\catcode`\"=\@@active
+
+\gdef\pushouterbarandquote
+ {\ifForgetTableBarAndQuote
+ \ifnum\catcode`\|=\@@active
+ \let\outertablebar|%
+ \else
+ \let\outertablebar\relax
+ \fi
+ \ifnum\catcode`\"=\@@active
+ \let\outertablequote"%
+ \else
+ \let\outertablequote\relax
+ \fi
+ \fi}
+
+\gdef\popouterbarandquote
+ {\ifForgetTableBarAndQuote
+ \ifx\outertablebar \relax\else\let|\outertablebar \fi
+ \ifx\outertablequote\relax\else\let"\outertablequote\fi
+ \else
+ \redefinetablebarandquote
+ \fi}
+
+\egroup
+
+\def\ObeyTableBarAndQuote
+ {\ForgetTableBarAndQuotefalse
+ \ifintable
+ \redefinetablebarandquote
+ \fi}
+
+%D \macros
+%D {ObeyTableBarAndQuote}
+%D
+%D As said, the \type{|} and \type{"} active characters are
+%D often used for other purposes. By default, the outside
+%D meanings are therefore preserved and available inside
+%D tables. If for some reason one wants to use the \TABLE\
+%D primitives, one can say:
+%D
+%D \starttyping
+%D \ObeyTableBarAndQuote
+%D \stoptyping
+%D
+%D To keep things verbose, as well as to show what \TABLE\
+%D commands we affect, we show some meanings.
+
+\def\normalTABLEshortrule {\!ttShortHrule} % \-
+\def\normalTABLElongrule {\!ttLongHrule} % \=
+\def\normalTABLEfullrule {\!ttFullHrule} % \_
+\def\normalTABLEendofrow {\!ttEndOfRow} % \\
+\def\normalTABLEsimplebar {\unskip\!ttRightGlue&&} % |
+\def\normalTABLEcomplexbar {\unskip\!ttRightGlue&\omit\!ttAlternateVrule} % \|
+\def\normalTABLEquote {\unskip\!ttRightGlue&\omit&} % "
+\def\normalTABLElineformat {\normalTABLEendofrow+}
+\def\normalTABLElineending {\normalTABLEendofrow0 }
+\def\normalTABLEsinglerule {&\normalTABLElongrule&}
+\def\normalTABLEmultirule#1{&\use{#1}\normalTABLElongrule&}
+
+%D The next hack is dedicated to Tobias, who found out that
+%D paragraph entries don't break well.
+
+\def\TABLEhack{\hskip\zeropoint}
+
+%D The first attemp to solve this problem was:
+%D
+%D \starttyping
+%D \def\normalTABLEquote%
+%D {\unskip\TABLEhack\!ttRightGlue&\omit&\TABLEhack}
+%D \stoptyping
+%D
+%D But, as usual, this interfered with \type {\omit}.
+%D
+%D The next attempt is redefining some core \TABLE\ macro:.
+%D This works ok, but breaks for instance the~\type{b}
+%D key handling.
+%D
+%D \starttyping
+%D \def\!tfAdjoinPriorColumn%
+%D {\ifnum\!taColumnNumber=0
+%D \!taPreamble=\!taRuleColumnTemplate
+%D ...
+%D \if!taOnceOnlyTabskip
+%D \!thToksEdef\!taDataColumnTemplate=
+%D {\TABLEhack####\TABLEhack\tabskip\the\!taLastRegularTabskip}
+%D \else
+%D \!taDataColumnTemplate{\TABLEhack##\TABLEhack}%
+%D \fi
+%D ...
+%D \ReadFormatKeys}
+%D \stoptyping
+
+\newdimen\TABLEparheight
+
+\def\BeginTableParBox#1%
+ {\setbox\scratchbox\vtop\bgroup % \setbox added
+ \hsize#1\relax
+ \normalbaselines
+ \let~\!ttTie
+ \let\-\!ttDH
+ \blank[\v!disable]% % added
+ \the\EveryTableParBox}
+
+\def\EndTableParBox
+ {\removelastskip % itemize or so
+ \par
+ \ifnum\prevgraf>\zerocount % we want at least
+ \verticalstrut \nowhitespace \vskip-\struttotal% one line of text
+ \egroup
+ \ifdim\dp\scratchbox>\lineheight % see (*) for an
+ \getnoflines{\dp\scratchbox}% % example of where
+ \dp\scratchbox\zeropoint % saving can go
+ \setbox\scratchbox % terrible wrong
+ \vtop to \noflines\lineheight{\box\scratchbox}%
+ \fi % esp between rows
+ \else % of paragraphs
+ \egroup
+ \fi
+ \getboxheight\scratchdimen\of\box\scratchbox\relax% compensate for
+ \ifdim\scratchdimen>\TABLEparheight % funny depth of
+ \global\TABLEparheight\scratchdimen % multi-line box
+ \fi % i.e. vtop
+ \box\scratchbox}
+
+% We also need to patch away the interfering math switch:
+
+% \mathpunctuationtrue
+
+% test, test
+% \starttable[|c|]
+% \NC1,,10\NC\AR
+% \stoptable
+% test, test
+
+\def\!ttBeginTableA[#1]{%
+ \if #1u% % "unboxed" table
+ \ifmmode
+ \def\!ttEndTable{% % user had better be in display math mode
+ \relax}% % and have only one table at the outer level
+ \else % user had better be in vertical mode
+ \bgroup
+ \def\!ttEndTable{%
+ \egroup}%
+ \fi
+ \else
+ %\hbox\bgroup $
+ %\def\!ttEndTable{%
+ % \egroup % for the \vtop, \vbox, or \vcenter, yet to come
+ % $% for math mode
+ % \egroup}% for the \hbox
+ %\if #1t%
+ % \vtop
+ %\else
+ % \if #1b%
+ % \vbox
+ % \else
+ % \vcenter % math mode was essential for this
+ % \fi
+ %\fi
+ %
+ \hbox\bgroup
+ \def\!ttEndTable{\egroup\egroup}%
+ \if#1t%
+ \vtop
+ \else\if#1b%
+ \vbox
+ \else
+ \def\!ttEndTable{\egroup$\egroup}%
+ %$\vcenter
+ \scratchtoks\everymath\everymath\emptytoks$\everymath\scratchtoks\vcenter
+ \fi\fi
+ %
+ \bgroup % for the \vtop, \vbox, or \vcenter
+ \fi
+ \advance\!taRecursionLevel 1 % RecursionLevel governs initialization
+ \let\!ttRightGlue=\relax % This may be changed by \JustCenter, etc
+ \everycr\emptytoks % ={}
+ \ifnum \!taRecursionLevel=1
+ \!ttInitializeTable
+ \fi}
+
+% (*) Try this one with \type {direction} and {girection};
+% the \PPCHTEX\ manual is a nice testcase.
+%
+% \startoverlay
+% {\starttable[ | l w(2cm) | w(8cm) | ]
+% \HL
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \FR
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \MR
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \LR
+% \HL
+% \stoptable}
+% {\starttable[ | l w(2cm) | p(8cm) | ]
+% \HL
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \FR
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \MR
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \LR
+% \HL
+% \stoptable}
+% \stopoverlay
+% \vskip2cm
+% \starttable[ | l w(2cm) | p(8cm) | ]
+% \HL
+% \VL direction \VL \showbaselines \dorecurse{3}{direction }\VL \FR
+% \VL direction \VL \showbaselines \dorecurse{8}{direction }\VL \LR
+% \HL
+% \stoptable
+% \vskip2cm
+% \starttable[ | l w(2cm) | p(8cm) | ]
+% \HL
+% \VL direction \VL \showbaselines \dorecurse{8}{direction }\VL \FR
+% \VL direction \VL \showbaselines \dorecurse{8}{direction }\VL \LR
+% \HL
+% \stoptable
+
+%D To give an impression of what the (well documented) source
+%D of \TABLE\ looks like, we first implement an alternative for
+%D the numeric keys. The quantity keys (\type{q} and \type{Q})
+%D support the more european way of writing numbers:
+%D
+%D \startnarrower
+%D 100.000.000,00 instead of 100,000,000.00
+%D \stopnarrower
+%D
+%D The next table shows how to use these keys. We use braces
+%D instead of brackets because we need brackets to specify the
+%D format.
+%D
+%D \startbuffer
+%D \starttable{|q[00,000]|Q[00,00]|}
+%D \HL
+%D \VL -1,2 \VL 12,35 \VL\FR
+%D \VL 11,203 \VL 2,4 \VL\LR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+%D
+%D Although a more efficient implementation is possible |<|we
+%D can for instance share common macros|>| we just adapt a copy
+%D of the numeric ones. To permit double loading of this
+%D module, we check for the existence of one of the macros.
+
+\letvalue{!tk<\string q>}=\undefined
+\letvalue{!tk<\string Q>}=\undefined
+
+%D We just copy the original {\em comments}.
+%D
+%D \em Key \type{q}: quantity item, non||math mode.
+
+\NewFormatKey q%
+ {\letempty\!tqStyle
+ \futurelet\!tnext\!tqTestForBracket}
+
+%D \em Key \type{Q}: quantity item, math mode.
+
+\NewFormatKey Q%
+ {\def\!tqStyle{$}%
+ \futurelet\!tnext\!tqTestForBracket}
+
+%D \em Note: the space between a quantity entry and the
+%D following \type{|}, \type{"}, or \type{\|} is mandatory.
+%D empty quantity entries are not allowed: use \type{{}} or
+%D \type{\omit} instead.
+%D
+%D \em Test for bracket: invoked by the keys \type{q} and
+%D \type{Q}.
+
+\def\!tqTestForBracket
+ {\ifx[\!tnext
+ \!thx\!tqGetArgument
+ \else
+ \!thx\!tqGetCode
+ \fi}
+
+%D \em Get code: e.g. \type{4}, or \type{4,0}, \type{0,4}, or
+%D \type{10,2}.
+
+\def\!tqGetCode#1 % note the blank
+ {\!tqConvertCode #1,,!}
+
+%D \em Convert code: e.g. converts above to \type{[0000]},
+%D \type{[0000,]}, \type{[,0000]}, \type{[0000000000,00]}.
+
+\def\!tqConvertCode #1,#2,#3!%
+ {\begingroup
+ \aftergroup\edef
+ \aftergroup\!ttemp
+ \aftergroup{%
+ \aftergroup[%
+ \!taCountA #1
+ \!thLoop
+ \ifnum \!taCountA>\zerocount
+ \advance\!taCountA \minusone
+ \aftergroup0
+ \repeat
+ \def\!ttemp{#3}%
+ \ifx\!ttemp\empty
+ \else
+ \aftergroup,
+ \!taCountA #2
+ \!thLoop
+ \ifnum\!taCountA>\zerocount
+ \advance\!taCountA \minusone
+ \aftergroup0
+ \repeat
+ \fi
+ \aftergroup]\aftergroup}%
+ \endgroup\relax
+ \!thx\!tqGetArgument\!ttemp}
+
+%D \em Get argument:
+%D
+%D \starttyping
+%D <sample left field> <optional, sample right field>
+%D \stoptyping
+
+\def\!tqGetArgument[#1]%
+ {\!tqMakeQuantityTemplate\!tqStyle#1,,!}
+
+%D \em Make quantity template.
+
+\def\!tqMakeQuantityTemplate#1#2,#3,#4!% #1=<empty> or $
+ {\def\!ttemp{#4}%
+ \ifx\!ttemp\empty
+ \!taDimenC\zeropoint
+ \else
+ \setbox0\hbox{\m@th #1,#3#1}%
+ \!taDimenC\wd0
+ \fi
+ \setbox0\hbox{\m@th #1#2#1}%
+ \!thToksEdef\!taDataColumnTemplate
+ ={\noexpand\!tqSetQuantityItem{\the\wd0 }{\the\!taDimenC}{#1}%
+ \the\!taDataColumnTemplate}%
+ \ReadFormatKeys}
+
+%D \em Set numeric item.
+
+\def\!tqSetQuantityItem #1#2#3#4 %
+ {\!tqSetQuantityItemA{#1}{#2}{#3}#4,,!}
+
+\def\!tqSetQuantityItemA #1#2#3#4,#5,#6!%
+ {\def\!ttemp{#6}%
+ \hbox to #1{\hss\m@th#3#4#3}%
+ \hbox to #2{\ifx\!ttemp\empty\else\m@th#3,#5#3\fi\hss}}
+
+%D Here ends the Q||extension. Did you watch the clever use
+%D of aftergroup in \type{\!tqConvertCode}.
+
+% %D We also (have to) define a key for \type{\cap}:
+%
+% \letvalue{!tk<\string K>}=\undefined
+%
+% \NewFormatKey K%
+% {\ReadFormatKeys b\smallcapped}
+
+%D A few pages back we saw backgrounds, further on we will see
+%D colored rules, and here we provide a means to color the
+%D entries in a column. (We can of course always use the normal
+%D color commands for individual entries.) We could not use the
+%D lowercase~\type{c}, because that one is used to force {\em
+%D centering}.
+%D
+%D \startbuffer
+%D \starttable[|C{red}|C{green}|C{blue}|]
+%D \VL R(ed) \VL G(reen) \VL B(lue) \VL\SR
+%D \stoptable
+%D \stopbuffer
+%D
+%D \ShowExample
+
+\letvalue{!tk<\string C>}=\undefined
+
+\NewFormatKey C#1%
+ {\ReadFormatKeys b{\localstartcolor[#1]} a{\localstopcolor}}
+
+%D So now we have three new keys:
+%D
+%D \starttable[|||]
+%D \HL
+%D \NC \bf key \NC \bf meaning \NC\AR
+%D \HL
+%D \NC Q[x,y] \NC math mode formatted numbers \NC\AR
+%D \NC q[x,y] \NC text mode formatted numbers \NC\AR
+%D \NC C{identifier} \NC column entry color \NC\AR
+%D \HL
+%D \stoptable
+
+%D To be compatible with the tabulate environment, we also
+%D support the \type {l}, \type {c} and \type {r} keys for
+%D paragraph entries.
+
+\letvalue{!tk<\string l>}=\undefined
+\letvalue{!tk<\string c>}=\undefined
+\letvalue{!tk<\string r>}=\undefined
+\letvalue{!tk<\string x>}=\undefined % not that needed
+
+\NewFormatKey c%
+ {\prependtoks\raggedcenter\to\!taDataColumnTemplate
+ \ReadFormatKeys \LeftGlue\hfil \RightGlue\hfil}
+
+\NewFormatKey l%
+ {\prependtoks\raggedright\to\!taDataColumnTemplate
+ \ReadFormatKeys \LeftGlue\empty \RightGlue\hfil}
+
+\NewFormatKey r%
+ {\prependtoks\raggedleft\to\!taDataColumnTemplate
+ \ReadFormatKeys \LeftGlue\hfil \RightGlue\empty}
+
+\NewFormatKey x%
+ {\prependtoks\notragged\to\!taDataColumnTemplate
+ \ReadFormatKeys \LeftGlue\hfil \RightGlue\empty}
+
+\appendtoks \TABLEparalignment \to \EveryTableParBox
+
+\def\!tfReFormat#1%
+ {\the \!taLeftGlue
+ \vbox{\forgetall\ialign{\span\the\!taDataColumnTemplate\cr#1\cr}}%
+ \the \!taRightGlue
+ \kern\zeropoint} % prevents \unskip / really needed
+
+%D Later on, we're going to implement multiple page table
+%D support, therefore the next \TABLE\ macro needs to be
+%D slightly adapted, i.c. the penalty is removed. We also
+%D add basic color support.
+
+\def\!ttFullHruleA
+ {\!ttGetHalfRuleThickness
+ \startglobalTABLEcolor % added
+ \hrule\!thHeight\dimen0\!thDepth\dimen0
+ \stopglobalTABLEcolor % added
+ %\penalty0 % removed
+ \egroup}
+
+%D We'll see that when we want to give a vertical rule a color,
+%D we have to set and reset states. After heavy testing it
+%D proved most useful to extend a \TABLE\ primitive with some
+%D hooks. One thing to keep in mind is that \type{&} keeps
+%D assignments local. Again, we add basic color support.
+
+\let\TABLEbeforebar\empty
+\let\TABLEafterbar \empty
+
+% \def\!ttInsertVrule
+% {\hfil
+% \TABLEbeforebar % added
+% \startglobalTABLEcolor % added
+% \vrule \!thWidth
+% \ifnum\!tgCode=\plusone
+% \ifx\!tgValue\empty
+% \LineThicknessFactor
+% \else
+% \!tgValue
+% \fi
+% \LineThicknessUnit
+% \else
+% \!tgValue
+% \fi
+% \stopglobalTABLEcolor % added
+% \TABLEafterbar % added
+% \hfil
+% &}
+
+\def\@VLn{1}
+\def\@VLd{.125em}
+
+\def\do!ttInsertVrule % will be merged in 2005
+ {\vrule \!thWidth
+ \ifnum\!tgCode=\plusone
+ \ifx\!tgValue\empty
+ \LineThicknessFactor
+ \else
+ \!tgValue
+ \fi
+ \LineThicknessUnit
+ \else
+ \!tgValue
+ \fi
+ \hskip\@VLd}
+
+\def\!ttInsertVrule
+ {\hfil
+ \TABLEbeforebar % added
+ \startglobalTABLEcolor % added
+ % we could do without this speedup, some day merge 'm
+ \ifcase\@VLn\or
+ \do!ttInsertVrule
+ \unskip
+ \else
+ \dorecurse\@VLn\do!ttInsertVrule
+ \gdef\@VLn{1}%
+ \unskip
+ \fi
+ \stopglobalTABLEcolor % added
+ \TABLEafterbar % added
+ \hfil
+ &}
+
+%D The next two macros are only adapted to basis rule
+%D color support.
+
+\def\!tfSetVrule
+ {\!thToksEdef\!taRuleColumnTemplate=
+ {\noexpand\hfil
+ \noexpand\startglobalTABLEcolor % added
+ \noexpand\vrule
+ \noexpand\!thWidth
+ \ifnum\!tgCode=\plusone
+ \ifx\!tgValue\empty
+ \the\LineThicknessFactor
+ \else
+ \!tgValue
+ \fi
+ \!taLTU
+ \else
+ \!tgValue
+ \fi
+ ####%
+ \noexpand\hfil
+ \noexpand\stopglobalTABLEcolor % added
+ \the\!taRuleColumnTemplate}%
+ \!tfAdjoinPriorColumn}
+
+\def\!ttShortHruleA
+ {\!ttGetHalfRuleThickness
+ \startglobalTABLEcolor % added
+ \leaders\hrule\!thHeight\dimen0\!thDepth\dimen0\hfill
+ \stopglobalTABLEcolor % added
+ \null
+ \ignorespaces}
+
+%D We already showed the next one, but here we slightly adapt
+%D the macro by adding an \type{\expandafter}. The space after
+%D \type{#1} is crucial!
+
+\def\normalTABLEcomplexbar#1%
+ {\unskip\!ttRightGlue&\omit\expandafter\!ttAlternateVrule#1 }
+
+%D To get rid of interfering \type{\omit}'s when we are
+%D checking the number of columns and reporting problems. The
+%D extensions concern the second level check, the first
+%D subbranch and advancing the column.
+
+\ifx\mscount\undefined \newcount\mscount \fi
+
+\def\!ttuse#1%
+ {\ifnum#1>\plusone
+ \omit
+\global\TABLEdivisionfalse
+ \scratchcounter\currentTABLEcolumn % added
+ \advance\scratchcounter #1% % added
+ \advance\scratchcounter \minusone % added
+ \ifnum\scratchcounter>\maxTABLEcolumn % added
+ \def\next % added
+ {\setTABLEerror\TABLEspanoverflow % added
+ \handleTABLEerror}% % added
+ \else % added
+ \def\next % added
+ {\global\advance\currentTABLEcolumn #1% % added
+ \global\advance\currentTABLEcolumn \minusone % added
+ \mscount#1% \mscount is in Plain
+ \advance\mscount \minusone
+ \advance\mscount \mscount
+ \!thLoop
+ \ifnum\mscount>\plusone
+ \sp@n % from Plain (\span\omit \advance\mscount\m@ne)
+ \repeat
+ \span}%
+ \fi % added
+ \else % added
+ \def\next % conflicts with possible next \omit % added
+ {\global\advance\currentTABLEcolumn \plusone}% % added
+ \fi
+ \next} % added
+
+% \starttable[|c|c|c|c|]
+% \HL
+% \VL {test} \VL \TWO{} \VL test \VL\FR
+% \DL \DC \DL\DR
+% \VL {test} \VL \TWO{} \VL test \VL\LR
+% \HL
+% \stoptable
+
+%D All commands that are executed between rows are to be put in
+%D \type {\noalign}. We can however not verify if we (that is
+%D \TABLE) does or did not enter this mode. A moderate dirty
+%D but useful trick is using our own alternative:\footnote{Once
+%D one has entered the stage of redefining \TEX\ primitives,
+%D such hacks become a second nature. However, redefining \type
+%D {\omit} and \type{\span} is not that easy.}
+
+\def\TABLEnoalign
+ {\noalign\bgroup\let\noalign\relax\let\next=}
+
+%D \macros
+%D {starttable}
+%D
+%D The rest of this module is not easy to comprehend, mainly
+%D because we have to take care of:
+%D
+%D \startitemize[packed]
+%D \item \type{\startitemize[template]}
+%D \item \type{\startitemize{template}}
+%D \item \type{\startitemize[predefined]}
+%D \stopitemize
+%D
+%D as well as:
+%D
+%D \startitemize[continue]
+%D \item restart after table break
+%D \stopitemize
+%D
+%D The official specification of the start command is:
+%D
+%D \showsetup{starttable}
+
+\def\starttable
+ {\bgroup
+ \doifelsenothing\@@tiframe
+ {\ifinsidefloat\else\startbaselinecorrection\fi}
+ {\startframedcontent[\@@tiframe]}%
+ \postponefootnotes
+ \firststagestartTABLE}
+
+\def\stoptable
+ {\TABLEtail
+ \globalletempty\@@TABLEhead
+ \globalletempty\@@TABLEtail
+ \finishTABLE
+ \doifelsenothing\@@tiframe
+ {\ifinsidefloat\else
+ \stopbaselinecorrection
+ \goodbreak % compensates all the nobreaks
+ \fi}
+ \stopframedcontent
+ \egroup}
+
+%D Before we can grab the argument, we have to make sure that
+%D the \CATCODES\ are set. The first stage takes care of that.
+
+\def\firststagestartTABLE
+ {\bgroup % kan-ie weg?
+ \global\intabletrue
+ \pushouterbarandquote
+ \catcode`\|=\@@other
+ \complexorsimple\secondstagestartTABLE}
+
+\def\simplesecondstagestartTABLE#1%
+ {\complexsecondstagestartTABLE[{#1}]}
+
+%D \macros
+%D {definetabletemplate}
+%D
+%D The complex (and main) start macro first takes care of the
+%D predefined case. Such a predefined setup looks like:
+%D
+%D \starttyping
+%D \definetabletemplate[test][|||]
+%D
+%D \starttable[test]
+%D \VL test \VL test \VL\AR
+%D \VL test \VL test \VL\AR
+%D \VL test \VL test \VL\AR
+%D \stoptable
+%D \stoptyping
+%D
+%D The implementation of the definition macro is not that
+%D complicated:
+
+%\def\dodefinetabletemplate[#1][#2]%
+% {\setgvalue{\c!Table#1}{\complexsecondstagestartTABLE[#2]}%
+% \egroup}
+%
+%\def\definetabletemplate%
+% {\bgroup
+% \catcode`\|=\@@other
+% \dodoubleargument\dodefinetabletemplate}
+
+
+% \TABLEnoalign{\page}\TABLEhead is valid
+
+\def\douseTABLEtemplate#1#2#3%
+ {\gdef\TABLEhead{\getvalue{@@TABLEhead#2}}%
+ \gdef\TABLEtail{\getvalue{@@TABLEtail#3}}%
+ \complexsecondstagestartTABLE[#1]}
+
+\def\dodefinetabletemplate[#1][#2][#3][#4]%
+ {\ifsecondargument
+ \setgvalue{\c!Table#1}{\douseTABLEtemplate{#2}{#3}{#4}}%
+ \fi
+ \egroup}
+
+\def\definetabletemplate
+ {\bgroup
+ \catcode`\|=\@@other
+ \doquadrupleempty\dodefinetabletemplate}
+
+%D The optional third and fourth arguments define which table
+%D head and tail to use.
+%D
+%D \starttyping
+%D \definetabletemplate[test][|||][before][after]
+%D \stoptyping
+%D
+%D This also means that one can define table heads and tails
+%D by name!
+%D
+%D \starttyping
+%D \starttablehead[before]
+%D \HL \VL first \VL second \VL \SR \HL
+%D \stoptablehead
+%D \stoptyping
+%D
+%D Templates defined this way get protected names, that cannot
+%D conflict with existing commands.
+%D
+%D \showsetup{definetabletemplate}
+%D
+%D The second half of the next macro prepares table
+%D splitting.
+
+% \def\complexsecondstagestartTABLE#1[#2]%
+% {\convertargument|\to\asciiA
+% \convertargument#2\to\asciiB
+% \doifinstringelse{\asciiA}{\asciiB}
+% {\gdef\restartTABLE{\thirdstagestartTABLE{#2}}}
+% {\doifdefinedelse{\c!Table#2}
+% {\gdef\restartTABLE{\getvalue{\c!Table#2}}}
+% {\gdef\restartTABLE{\getvalue{#2}}}}%
+% \prepareTABLEsplitting
+% \restartTABLE
+% \TABLEhead}
+
+\def\complexsecondstagestartTABLE#1[#2]%
+ {\convertargument|\to\asciiA
+ \convertargument#2\to\asciiB
+ \doifinstringelse\asciiA\asciiB
+ {\gdef\restartTABLE
+ {\gdef\restartTABLE{\thirdstagestartTABLE{#2}}%
+ \prepareTABLEsplitting
+ \restartTABLE
+ \TABLEhead}}
+ {\doifdefinedelse{\c!Table#2}
+ {\gdef\restartTABLE
+ {\getvalue{\c!Table#2}}}
+ {\gdef\restartTABLE
+ {\gdef\restartTABLE{\getvalue{#2}}%
+ \prepareTABLEsplitting
+ \restartTABLE
+ \TABLEhead}}}%
+ \restartTABLE}
+
+%D The third stage involves a lot of (re)sets, which we will
+%D explain later.
+
+%D The next definition is convenient and more in tune with
+%D \CONTEXT.
+
+\let \everytable \EveryTable
+
+%D We immediately use this register:
+
+\appendtoks \fixedspaces \to \everytable
+
+%D Now we can start the table.
+
+\def\thirdstagestartTABLE#1%
+ {\global\setTABLEactiontrue
+ \setTABLEaction\TABLEunknown
+ \setTABLEforce\TABLEunknown
+ \setTABLEerror\TABLEunknown
+ \global\TABLEgraylinefalse
+ \global\TABLEgraydonefalse
+ \globalletempty\TABLEgrayline
+ \globalletempty\nextTABLEgrayline
+ \globalletempty\TABLEgraylineerror
+ \globalletempty\TABLEgraylinestatus
+ \resetVLvalues
+ \appendtoks\popouterbarandquote\to\EveryTable
+ \appendtoks\localTABLEsetup\to\EveryTable
+ \BeginTable[\ifsplittables u\else b\fi]%
+ \defineTABLEunits
+ \defineTABLEsteps
+ \defineTABLErules
+ \defineTABLEdivisions
+ \defineTABLEshorthands
+ \defineTABLEbackgrounds
+ \defineTABLEendings
+ \forgetall % added
+ \doifsomething{#1}
+ {\def\TABLEformat{#1}%
+ \getTABLEnofcolumns\TABLEformat
+ \expandafter\BeginFormat\TABLEformat\EndFormat}}
+
+\def\finishTABLE
+ {\chuckTABLEautorow
+ \unskip\crcr
+ \EndTable
+ \global\intablefalse
+ \egroup}
+
+%D The preparation for split columns concerns some
+%D calculations. Although not explicitly needed, one can
+%D predefine a tablehead as well as a tail. Each table fragment
+%D is preceded by such a head and ends with a tail. This means
+%D that, in order to determine the available height, we have to
+%D take the head and tail into account. Because we want to
+%D support captions too, we will also reserve some space for
+%D those later on.
+
+\def\prepareTABLEsplitting
+ {\global\TABLEheight\zeropoint
+ \ifsplittables
+ \ifx\TABLEhead\empty
+ \global\TABLEheadheight\zeropoint
+ \else
+ \setbox0\vbox
+ \bgroup
+ \def\doEndOfTableLine##1##2##3{\normalTABLElineformat##2##3}%
+ \restartTABLE\TABLEhead
+ \finishTABLE
+ \global\TABLEheadheight\ht0
+ \fi
+ \ifx\TABLEtail\empty
+ \global\TABLEtailheight\zeropoint
+ \else
+ \setbox0\vbox
+ \bgroup
+ \def\doEndOfTableLine##1##2##3{\normalTABLElineformat##2##3}%
+ \restartTABLE\TABLEtail
+ \finishTABLE
+ \global\TABLEtailheight\ht0
+ \fi
+ \else
+ \global\TABLEheadheight\zeropoint
+ \global\TABLEtailheight\zeropoint
+ \fi
+ \global\TABLEheight\zeropoint
+ \calculatemaxTABLEheight\docalculatemaxTABLEheight}
+
+%D \macros
+%D {starttables}
+%D
+%D Split tables are specified using the plural form of the
+%D start and stop commands.
+%D
+%D \showsetup{starttables}
+%D
+%D For example:
+%D
+%D \starttyping
+%D \starttables[|||]
+%D \HL
+%D \VL element \VL atom weight \VL\AR
+%D \HL
+%D \VL ....... \VL ........... \VL\AR
+%D \VL ....... \VL ........... \VL\AR
+%D \HL
+%D \stoptables
+%D \stoptyping
+
+\def\starttables
+ {\bgroup
+ \ifinsidefloat\else
+ \baselinecorrection
+ \flushnotes
+ \topbaselinecorrection
+ \fi
+ \forgetall
+ \globallet\absmaxTABLEheight\zeropoint
+ \splittablestrue
+ \global\TABLEinbreakfalse
+ \firststagestartTABLE}
+
+\def\stoptables
+ {\TABLEtail
+ \finishTABLE
+ \ifinsidefloat\else
+ \flushnotes
+ \botbaselinecorrection
+ \fi
+ \egroup}
+
+%D When the table in the previous example is split across
+%D pages, only the first gets a head. We could have said
+%D something like:
+%D
+%D \starttyping
+%D \starttablekop
+%D \HL
+%D \VL element \VL atom weight \VL\AR
+%D \HL
+%D \stoptablekop
+%D
+%D \starttablestaart
+%D \HL
+%D \stoptablestaart
+%D
+%D \starttables[|||]
+%D \VL ....... \VL ........... \VL\AR
+%D \VL ....... \VL ........... \VL\AR
+%D \stoptables
+%D \stoptyping
+%D
+%D This time each split table gets a head line and ends with
+%D a rule. Keep in mind that such heads also apply to the
+%D unbroken ones and should be defined local (grouped) if
+%D needed. The rather complicated definition below is due to
+%D the fact that the stopcondition is interface language
+%D dependant.
+
+\let\@@TABLEhead\empty \def\TABLEhead{\@@TABLEhead}
+\let\@@TABLEtail\empty \def\TABLEtail{\@@TABLEtail}
+
+\letvalue{\e!start\v!tablehead}=\undefined
+\letvalue{\e!stop \v!tablehead}=\undefined
+\letvalue{\e!start\v!tabletail}=\undefined
+\letvalue{\e!stop \v!tabletail}=\undefined
+
+\expanded
+ {\def\csname\e!start\v!tablehead\endcsname##1\csname\e!stop\v!tablehead\endcsname%
+ {\noexpand\setTABLEhead##1\noexpand\end}}
+
+\expanded
+ {\def\csname\e!start\v!tabletail\endcsname##1\csname\e!stop\v!tabletail\endcsname%
+ {\noexpand\setTABLEtail##1\noexpand\end}}
+
+%D The second argument is a dummy one, by scanning for it, we
+%D get rid of interfering spaces.
+
+\def\setTABLEhead{\dodoubleempty\dosetTABLEhead}
+\def\setTABLEtail{\dodoubleempty\dosetTABLEtail}
+
+\def\dosetTABLEhead[#1][#2]#3\end{\setvalue{@@TABLEhead#1}{#3}}
+\def\dosetTABLEtail[#1][#2]#3\end{\setvalue{@@TABLEtail#1}{#3}}
+
+%D Redudant \type{\HL}'s are removed automatically, so
+%D mid||lines can be used without problems.
+
+%D When calculating the available height of a split table, we
+%D try to handle multi||column mode as good as possible. This
+%D algoritm evolved during the development of the split option
+%D and will probably be improved bit by bit.
+
+\def\docalculatemaxTABLEheight
+ {\ifinsidecolumns
+ \getcolumnstatus\column\scratchcounter\total\dimen0\goal\dimen2\\%
+ \else
+ \ifdim\pagegoal<\maxdimen
+ \dimen0\pagetotal
+ \dimen2\pagegoal
+ \else
+ \dimen0\zeropoint
+ \dimen2\textheight
+ \fi
+ \fi
+ \advance\dimen2 -\dimen0
+ \global\TABLEmaxheight\dimen2
+ \global\advance\TABLEmaxheight -\strutdp
+ \ifdim\prevdepth<\maxdimen\ifdim\prevdepth>\zeropoint
+ \global\advance\TABLEmaxheight -\strutdp
+ \global\advance\TABLEmaxheight -\parskip
+ \fi\fi}
+
+\def\nocalculatemaxTABLEheight
+ {\ifinsidecolumns
+ \getcolumnstatus\column\scratchcounter\total\dimen0\goal\dimen2\\%
+ \else
+ \dimen0\zeropoint
+ \dimen2\textheight
+ \fi
+ \advance\dimen2 -\dimen0
+ \global\TABLEmaxheight\dimen2
+ \global\advance\TABLEmaxheight -\strutdp}
+
+\def\calculatemaxTABLEheight#1%
+ {\ifsplittables
+ #1\relax
+ \ifdim\TABLEmaxheight<3\baselineskip \relax % instelbaar maken
+ \ifinsidecolumns
+ \nobreak
+ \kern\dimen2
+ \goodbreak
+ \else
+ \goodbreak % \page
+ \fi
+ \removeTABLEtopskip
+ \nocalculatemaxTABLEheight
+ \fi
+ \ifdim\TABLEmaxheight<\absmaxTABLEheight % forces equal columns
+ \global\TABLEmaxheight\absmaxTABLEheight
+ \else
+ \xdef\absmaxTABLEheight{\the\TABLEmaxheight}%
+ \fi
+ \global\TABLEheight\zeropoint
+ \else
+ \global\TABLEmaxheight\maxdimen
+ \fi}
+
+%D When splitting tables, we have to remove the top skip when
+%D we're in the main vertical list, else we remove whatever
+%D skip \TEX\ adds.
+
+\def\removeTABLEtopskip
+ {\ifinsidefloat
+ \verticalstrut\kern-\struttotal
+ \else
+ \hbox{}\kern-\topskip
+ \fi}
+
+%D We need an alternative for the normal complex or simple
+%D commands, because assignments in these system commands
+%D conflict with \type{\noalign}. This alternative is about
+%D as efficient as possible.
+
+\def\complexorsimpleTable#1#2%
+% {\getvalue{\if[\noexpand#2\s!complex\else\s!simple\fi\c!Table#1}#2}
+ {\csname\if[\noexpand#2\s!complex\else\s!simple\fi\c!Table#1\endcsname#2}
+
+%D The next one is used in \type{\VL} cum suis and honours
+%D the next grouping.
+
+\def\docomplexorsimpleTable#1#2%
+ {\ifx\next\bgroup\@EA#2\else\@EA\dodocomplexorsimpleTable\@EA#1\@EA#2\fi}
+
+\def\dodocomplexorsimpleTable#1#2#3%
+ {\if[\noexpand#3\@EA#1\else\@EA#2\fi#3}
+
+%D The order of the next macros is more or less random. First
+%D we implement error recovery. Errors are reported to the
+%D screen and log file as well as visualized in the table in
+%D teletype.
+
+\def\handleTABLEerror
+ {\ifTABLEgrayline \else
+ \ifnum\TABLEerror=\TABLEunknown \else
+ \setTABLEaction\TABLEunknown
+ \globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow
+ \fi
+ \ifcase\TABLEerror
+ % no error
+ \or
+ % \TABLEmissingrow
+ \tttf [missing row]%
+ \writestatus\m!TABLE{missing row}%
+ \SR
+ \or
+ % \TABLEmissingcolumn
+ \fillTABLEcolumns
+ \tttf [missing column]%
+ \writestatus\m!TABLE{missing column}%
+ \SR
+ \or
+ % \TABLEspanoverflow
+ \fillTABLEcolumns
+ \tttf [columnspan too large]%
+ \writestatus\m!TABLE{columnspan too large}%
+ \SR
+ \or
+ % \TABLEdivisionoverflow
+ \fillTABLEcolumns
+ \tttf [division line too long]%
+ \writestatus\m!TABLE{division line too long}%
+ \SR
+ \fi
+ \fi
+ \ifnum\TABLEerror=\TABLEunknown \else
+ \finishTABLErow
+ \fi}
+
+\def\finishTABLErow
+ {\crcr
+ \TABLEnoalign
+ {\nobreak
+ \setTABLEaction\TABLEunknown
+ \setTABLEerror\TABLEunknown
+ \globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow
+ \global\currentTABLEcolumn\zerocount}}
+
+\def\fillTABLEcolumns
+ {\ifnum\currentTABLEcolumn>\maxTABLEcolumn \else
+ \global\advance\currentTABLEcolumn \plusone
+ \normalTABLEquote
+ \expandafter\fillTABLEcolumns
+ \fi}
+
+%D Next we enter the more complicated area of column and row
+%D switching. I won't go into much detail from now on, but just
+%D mention the general principles.
+%D
+%D \startitemize[3*ruim]
+%D \sym{\type{\SR}} end a separate row (between rules)
+%D \sym{\type{\FR}} end a first row (after a rule)
+%D \sym{\type{\MR}} end a mid row (between text lines)
+%D \sym{\type{\LR}} end a last row (before a rule)
+%D \stopitemize
+%D
+%D and best of all:
+%D
+%D \startitemize[continue]
+%D \sym{\type{\AR}} end a row with automatic spacing
+%D \stopitemize
+%D
+%D As far as possible, we report confusing situations. In
+%D most cases one can use \type{\AR}, which transfigurates
+%D itself into one of the other types.
+%D
+%D \starttyping
+%D \starttable[||]
+%D \HL
+%D \VL a separate row \VL\SR
+%D \HL
+%D \VL a first row \VL\FR
+%D \VL a mid row \VL\MR
+%D \VL a last row \VL\LR
+%D \HL
+%D \stoptable
+%D \stoptyping
+%D
+%D In this example we could have used \type{\AR} without
+%D problems.
+%D
+%D Color or gray scale backgrounds precede the content. They
+%D are passed over horizontal (division) lines when needed.
+%D Errors in the color template are traced elsewhere. Here we
+%D only check for inconsistent spacing. Due to the way \TEX\
+%D handles alignments, we cannot automate spacing for colored
+%D rows and columns.
+
+\chardef\TABLErowzero=0
+
+\def\checkTABLErow#1% pure for message purposes
+ {\unskip % added
+ \ifTABLEgraydone
+ \convertargument #1\to\asciiA
+ \convertcommand\TABLEendBCL\to\asciiB
+ \ifx\asciiA\asciiB \else
+ \writestatus\m!TABLE{confusing \asciiA\space and \asciiB}%
+ \gdef\TABLEgraylineerror%
+ {\globalletempty\TABLEgraylineerror
+ [\asciiA\unskip<->\asciiB\unskip]}%
+ \fi
+ \global\TABLEgraydonefalse
+ \fi}
+
+\def\defineTABLEendings
+ {\let\SR\TableSR
+ \let\FR\TableFR
+ \let\MR\TableMR
+ \let\LR\TableLR
+ \let\AR\TableAR}
+
+\def\TableSR
+ {\ifTABLEgrayline \else
+ \ifnum\TABLEaction=\TABLEfirstrow
+ \writestatus\m!TABLE{change \string\SR\space into \string\MR/\string\LR}%
+ \else\ifnum\TABLEaction=\TABLEmidrow
+ \writestatus\m!TABLE{change \string\SR\space into \string\MR/\string\LR}%
+ \else\ifnum\TABLEaction=\TABLEmidrow
+ \writestatus\m!TABLE{change \string\SR\space into \string\MR/\string\LR}%
+ \fi\fi\fi
+ \fi
+ \checkTABLErow\SR
+ \endTABLErow\TABLEseparaterow\TABLErowfactor\TABLErowfactor}
+
+\def\TableFR
+ {\ifTABLEgrayline \else
+ \ifnum\TABLEaction=\TABLEmidrow
+ \writestatus\m!TABLE{change \string\FR\space into \string\MR/\string\LR}%
+ \else\ifnum\TABLEaction=\TABLElastrow
+ \writestatus\m!TABLE{change \string\FR\space into \string\MR/\string\LR}%
+ \fi\fi
+ \fi
+ \checkTABLErow\FR
+ \endTABLErow\TABLEfirstrow\TABLErowfactor\TABLErowzero}
+
+\def\TableMR
+ {\ifTABLEgrayline \else
+ \ifnum\TABLEaction=\TABLErule
+ \writestatus\m!TABLE{change \string\MR\space into \string\FR/\string\SR}%
+ \else\ifnum\TABLEaction=\TABLElastrow
+ \writestatus\m!TABLE{change \string\MR\space into \string\FR}%
+ \fi\fi
+ \fi
+ \checkTABLErow\MR
+ \endTABLErow\TABLEmidrow00}
+
+\def\TableLR
+ {\ifTABLEgrayline \else
+ \ifnum\TABLEaction=\TABLErule
+ \writestatus\m!TABLE{change \string\LR\space into \string\FR/\string\SR}%
+ \fi
+ \fi
+ \checkTABLErow\LR
+ \endTABLErow\TABLElastrow\TABLErowzero\TABLErowfactor}
+
+%D \macros
+%D {ifcheckTABLEcolums}
+%D
+%D
+%D The next macros handle the actual row ending. This macro
+%D also take care of space corrections due to table splitting
+%D when \type{\MR} and collegues are used. When tracing is
+%D enabled, the corrections as well as the values used to
+%D determine the available space are shown (in color). By default
+%D checking is off.
+
+\newif\ifcheckTABLEcolumns
+
+\let\beforeTABLEline\empty
+\let\afterTABLEline \empty
+
+\def\doendTABLErow#1#2#3%
+ {\handleTABLEbreak#2#3%
+ \beforeTABLEline
+ \ifcase#1\relax
+ % unknown
+ \or
+ \endofTABLEline[blue][\SR->\SR]\TABLErowfactor\TABLErowfactor
+ \or
+ \endofTABLEline[red][\FR->\FR]\TABLErowfactor\TABLErowzero
+ \or
+ \ifnum\TABLEforce=\TABLEforcelastrow
+ \endofTABLEline[red][\MR->\LR]\TABLErowzero\TABLErowfactor
+ \else\ifnum\TABLEforce=\TABLEforcefirstrow
+ \endofTABLEline[red][\MR->\FR]\TABLErowfactor\TABLErowzero
+ \else
+ \endofTABLEline[green][\MR->\MR]\TABLErowzero\TABLErowzero
+ \fi\fi
+ \or
+ \endofTABLEline[red][\LR->\LR]\TABLErowzero\TABLErowfactor
+ \fi
+ \TABLEnoalign
+ {\setTABLEforce\TABLEunknown
+ \global\currentTABLEcolumn\zerocount}%
+ \afterTABLEline}
+
+\def\endTABLErow#1#2#3%
+ {\setTABLEaction#1%
+ \ifTABLEgrayline
+ \finishTABLErow
+ \else
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \doendTABLErow{#1}{#2}{#3}%
+ \else\ifcheckTABLEcolumns
+ \setTABLEerror\TABLEmissingcolumn
+ \handleTABLEerror
+ \else
+ \doendTABLErow{#1}{#2}{#3}%
+ \fi\fi
+ \fi}
+
+%D Handling \type{\AR} is postponed till the next row. The
+%D check takes care of the first and mid rows, the chuck macro
+%D |<|how about that name|>| handles the last row.
+
+\def\TableAR
+ {\ifTABLEgraydone
+ \globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow
+ \global\TABLEgraydonefalse
+ \TABLEendBCL
+ \else
+ \globallet\checkTABLEautorow\docheckTABLEautorow
+ \globallet\chuckTABLEautorow\dochuckTABLEautorow
+ \fi}
+
+\let\checkTABLEautorow\empty
+\let\chuckTABLEautorow\empty
+
+\def\docheckTABLEautorow
+ {\globallet\checkTABLEautorow\empty
+ \ifnum\TABLEaction=\TABLErule \FR
+ \else\ifnum\TABLEaction=\TABLEunknown \FR
+ \else \MR
+ \fi\fi}
+
+\def\dochuckTABLEautorow
+ {\globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow
+ \ifnum\TABLEaction=\TABLErule \SR
+ \else\ifnum\TABLEaction=\TABLEunknown \SR
+ \else \LR
+ \fi\fi}
+
+%D When a table is split, we also add a tail and when present
+%D we repeat the table head.
+
+\def\handleTABLEbreak#1#2%
+ {\ifsplittables
+ \setbox0\hbox{\AugmentedTableStrut{#1}{#2}}%
+ \getboxheight\dimen0\of\box0\relax
+ \ifdim\TABLEparheight>\dimen0 % new
+ \advance\dimen0-\lineheight % newer
+ \ifdim\dimen0<\zeropoint % newer
+ \dimen2\zeropoint % newer
+ \fi % newer
+ \advance\dimen0 \TABLEparheight % new
+ \global\TABLEparheight\zeropoint % new
+ \fi % new
+ \ifTABLEgrayline \else
+ \global\advance\TABLEheight\dimen0
+ \fi
+ \ifTABLEinbreak
+ \globalletempty\beforeTABLEline
+ \gdef\afterTABLEline{\TABLEnoalign{\nobreak}}%
+ \else
+ \dimen2=\TABLEheight
+ \advance\dimen2 \strutdp
+ \advance\dimen2 \TABLEtailheight
+ \advance\dimen2 \TABLEcaptionheight
+ \advance\dimen2 \lineheight % we're ahead
+ \ifdim\dimen2>\TABLEmaxheight
+ \gdef\beforeTABLEline
+ {\setTABLEforce\TABLEforcelastrow}%
+ \gdef\afterTABLEline
+ {\TABLEnoalign
+ {\nobreak
+ \global\TABLEinbreaktrue}%
+ \TABLEtail
+ \TABLEnoalign
+ {\goodbreak
+ \calculatemaxTABLEheight\nocalculatemaxTABLEheight
+ \removeTABLEtopskip
+ \setTABLEaction\TABLEunknown
+ \setTABLEforce \TABLEunknown}%
+ \TABLEhead
+ \TABLEnoalign
+ {\nobreak
+ \global\TABLEinbreakfalse
+ \setTABLEforce\TABLEforcefirstrow}}%
+ \else
+ \globalletempty\beforeTABLEline
+ \gdef\afterTABLEline{\TABLEnoalign{\nobreak}}%
+ \fi
+ \fi
+ \else
+ \globalletempty\beforeTABLEline
+ \gdef\afterTABLEline{\TABLEnoalign{\nobreak}}%
+ \fi}
+
+%D When tables are split, the spacing before and after a
+%D horizontal rule is corrected according to what we expect.
+
+\def\endofTABLEline[#1][#2->#3]#4#5%
+ {\ifx#2#3\else
+ \writestatus\m!TABLE{\string#2\space changed into \string#3}%
+ \fi
+ \iftracetables
+ \bgroup
+ \tttf\space
+ \ifnum\TABLEerror=\TABLEunknown
+ \ifx#2#3\else\string#2->\fi
+ \else
+ ->%
+ \fi
+ \color[#1]{\string#3}%
+ \ifsplittables\space\the\TABLEmaxheight/\the\TABLEheight\fi
+ \ifx\TABLEgraylineerror\empty
+ \space\TABLEgraylinestatus
+ \else
+ \space\TABLEgraylineerror
+ \fi
+ \egroup
+ \else\ifx\TABLEgraylineerror\empty \else
+ % \bgroup
+ % \tttf\space\TABLEgraylineerror
+ % \egroup
+ \fi\fi
+ \globalletempty\TABLEgraylinestatus
+ \globalletempty\TABLEgraylineerror
+ \expandafter\normalTABLElineformat#4#5\crcr % \crcr nodig ?
+ \TABLEnoalign{\nobreak\global\setTABLEactiontrue}}
+
+%D In order to prevent (as good as possible) alignment overflow
+%D and therefore \TEX\ error messages, we check the maximum
+%D number of columns. We keep track of the current column and
+%D maximum column by means of two \COUNTERS. Keep in mind that
+%D the number of \type{|}'s and \type{\VL}'s or alike is always
+%D one more than the number of columns.
+
+\newcount\currentTABLEcolumn
+\newcount\maxTABLEcolumn
+
+%D While defining this macro we change the \CATCODE\ of
+%D \type{|}. When counting the bars, we use a non active
+%D representation of the bar, simply because we cannot be sure
+%D if the bar is active or not.\footnote{Normally it is, but
+%D \TABLE\ changes the catcode when needed.}
+
+\bgroup
+\catcode`\|=\@@active
+\gdef\protectTABLEbar{\let|\letterbar}
+\catcode`\|=\@@other
+\gdef\getTABLEnofcolumns#1%
+ {\bgroup
+ \cleanupfeatures % needed !
+ \protectTABLEbar % is still a feature
+ \expanded{\convertargument#1}\to\ascii
+ \@EA\doglobal\@EA\counttoken\@EA|\@EA\in\ascii\to\maxTABLEcolumn
+ \global\advance\maxTABLEcolumn \minusone
+ % in case of & counting, divide by 2
+ \egroup}
+\egroup
+
+\def\!ttDoHalign
+ {\baselineskip \zeropoint
+ \lineskiplimit\zeropoint
+ \lineskip \zeropoint
+ \tabskip \zeropoint
+ % does not work in normal tex
+ % \expanded{\getTABLEnofcolumns{\the\!taPreamble}}% added
+ \halign \the\!taTableSpread \bgroup
+ \span\the\!taPreamble
+ \ifx \!tfRowOfWidths \empty \else \!tfRowOfWidths \cr \fi}
+
+%D \startitemize[3*ruim]
+%D \sym{\type{\VL}} a vertical line
+%D \sym{\type{\VC}} a vertical colored line
+%D \sym{\type{\HL}} a horizontal line
+%D \sym{\type{\HC}} a horizontal colored line
+%D \stopitemize
+
+% \def\defineTABLErules
+% {\let\VL\TableVL
+% \let\VC\TableVC
+% \let\HL\TableHL
+% \let\HC\TableHC}
+
+\def\defineTABLErules
+ {\let\VL\TableVL
+ \let\VC\TableVC
+ \let\HL\TableHL
+ \let\HC\TableHC
+ \let\VS\TableVS
+ \let\VD\TableVD
+ \let\VT\TableVT
+ \let\VN\TableVN}
+
+\def\TableVL
+ {\checkTABLEautorow
+ \nextTABLEgrayline
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \setTABLEerror\TABLEmissingrow
+ \handleTABLEerror
+ \else
+ \global\advance\currentTABLEcolumn \plusone
+ \expandafter\doTableVL
+ \fi}
+
+\def\doTableVL
+ {\futurelet\next\dodoTableVL}
+
+\def\dodoTableVL
+ {\docomplexorsimpleTable\complexTableVL\simpleTableVL}
+
+\def\complexTableVL[#1]%
+ {\scratchcounter=0#1%
+ \multiply\scratchcounter \@@tiVLwidth
+ \setxvalue{wVL\the\currentTABLEcolumn}{\the\scratchcounter}%
+ \simpleTableVL}
+
+\def\simpleTableVL
+ {\doifundefined{wVL\the\currentTABLEcolumn}%
+ {\setgvalue{wVL\the\currentTABLEcolumn}{\@@tiVLwidth}}%
+ \gdef\TABLEbeforebar
+ {\getvalue{bVL\the\currentTABLEcolumn}%
+ \letgvalueempty{bVL\the\currentTABLEcolumn}}%
+ \gdef\TABLEafterbar
+ {\getvalue{eVL\the\currentTABLEcolumn}%
+ \letgvalueempty{eVL\the\currentTABLEcolumn}}%
+ \edef\@@tiVLwidth{\getvalue{wVL\the\currentTABLEcolumn}}%
+ \expanded{\normalTABLEcomplexbar\@@tiVLwidth\space}}% \relax breaks \use
+
+% \starttable[|||]
+% \HL
+% \VL test \VS test \VL \FR
+% \VL test \VD test \VL \MR
+% \VL test \VT test \VL \LR
+% \HL
+% \stoptable
+
+\def\TableVS {\VN1}
+\def\TableVD {\VN2}
+\def\TableVT {\VN3}
+\def\TableVN#1{\gdef\@VLn{#1}\VL}
+
+\def\resetVLvalues
+ {\dostepwiserecurse\zerocount\maxTABLEcolumn\plusone
+ {\setgvalue{wVL\recurselevel}{\@@tiVLwidth}%
+ \letgvalueempty{bVL\recurselevel}%
+ \letgvalueempty{eVL\recurselevel}}%
+ \global\currentTABLEcolumn\zerocount}
+
+\def\TableVC
+ {\checkTABLEautorow
+ \nextTABLEgrayline
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \setTABLEerror\TABLEmissingrow
+ \handleTABLEerror
+ \else
+ \global\advance\currentTABLEcolumn \plusone
+ \expandafter\doTableVC
+ \fi}
+
+\def\doTableVC
+ {\futurelet\next\dodoTableVC}
+
+\def\dodoTableVC
+ {\docomplexorsimpleTable\complexTableVC\simpleTableVC}
+
+\def\complexTableVC[#1]%
+ {\global\setvalue{bVC\the\currentTABLEcolumn}{\localstartcolor[#1]}%
+ \global\setvalue{eVC\the\currentTABLEcolumn}{\localstopcolor}%
+ \simpleTableVC}
+
+\def\simpleTableVC
+ {\global\setvalue{bVL\the\currentTABLEcolumn}%
+ {\getvalue{bVC\the\currentTABLEcolumn}}%
+ \global\setvalue{eVL\the\currentTABLEcolumn}%
+ {\getvalue{eVC\the\currentTABLEcolumn}}%
+ \doTableVL}
+
+\def\TableHL
+ {\ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \chuckTABLEautorow
+ \else\ifnum\currentTABLEcolumn=\zerocount
+ %\chuckTABLEautorow
+ \TABLEnoalign
+ {\globalletempty\checkTABLEautorow
+ \globalletempty\chuckTABLEautorow}%
+ \else
+ \setTABLEerror\TABLEmissingcolumn
+ \handleTABLEerror
+ \fi\fi
+ \complexorsimpleTable{HL}}
+
+\def\complexTableHL[#1]%
+ {\TABLEnoalign
+ {\scratchcounter0#1%
+ \multiply\scratchcounter \@@tiHLheight
+ \edef\@@tiHLheight{\the\scratchcounter}%
+ \simpleTableHL}}
+
+\def\simpleTableHL
+ {\TABLEnoalign
+ {\nobreak
+ \ifnum\TABLEaction=\TABLErule
+ \writestatus\m!TABLE{skipping \string\HL}% \statusmessage
+ \else
+ \ifnum\TABLEaction=\TABLEmidrow
+ \writestatus\m!TABLE{change \string\MR\space into \string\LR/\string\SR}%
+ \else\ifnum\TABLEaction=\TABLEfirstrow
+ \writestatus\m!TABLE{change \string\MR\space into \string\SR}%
+ \fi\fi
+ \startHLcommand
+ \expandafter\normalTABLEfullrule\@@tiHLheight
+ \stopHLcommand
+ \globalletempty\startHLcommand
+ \globalletempty\stopHLcommand
+ \accountTABLElinewidth
+ \fi
+ \setTABLEaction\TABLErule
+ \nobreak}}
+
+\let\startHLcommand\empty
+\let\stopHLcommand \empty
+
+\def\TableHC
+ {\complexorsimpleTable{HC}}
+
+\def\complexTableHC[#1]%
+ {\TABLEnoalign
+ {\gdef\startHCcommand{\localstartcolor[#1]}%
+ \gdef\stopHCcommand {\localstopcolor}}%
+ \simpleTableHC}
+
+\def\simpleTableHC
+ {\TABLEnoalign
+ {\globallet\startHLcommand\startHCcommand
+ \globallet\stopHLcommand \stopHCcommand}%
+ \HL}
+
+%D \startitemize[3*ruim]
+%D \sym{\type{\NL}} a vertical skip
+%D \sym{\type{\NR}} goto the next row
+%D \sym{\type{\NC}} goto the next column
+%D \sym{\type{\FC}} a first column
+%D \sym{\type{\MC}} a mid column
+%D \sym{\type{\LC}} a last column
+%D \stopitemize
+
+% n+1 uitleggen
+
+\def\defineTABLEsteps
+ {\let\NL\TableNL
+ \let\NR\TableNR
+ \let\NC\TableNC
+ \let\FC\TableNC
+ \let\MC\TableNC
+ \let\LC\TableNC}
+
+\def\TableNL
+ {\complexorsimpleTable{NL}}
+
+\def\complexTableNL[#1]%
+ {\TABLEnoalign
+ {\edef\@@tiNL{#1}%
+ \simpleTableNL}}%
+
+\def\simpleTableNL
+ {\TABLEnoalign
+ {\nobreak
+ \setbox0\vbox{\blank[\@@tiNL]}%
+ \global\advance\TABLEheight \ht0
+ \vskip\ht0
+ \nobreak}}
+
+\def\TableNR
+ {\ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \global\currentTABLEcolumn\zerocount
+ \normalTABLElineending
+ \else
+ \setTABLEerror\TABLEmissingcolumn
+ \handleTABLEerror
+ \fi
+ \TABLEnoalign
+ {\nobreak
+ \setTABLEaction\TABLEunknown}}
+
+\def\TableNC
+ {\checkTABLEautorow
+ \nextTABLEgrayline
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \setTABLEerror\TABLEmissingrow
+ \handleTABLEerror
+ \else
+ \global\advance\currentTABLEcolumn \plusone
+ \normalTABLEquote
+ \fi}
+
+\bgroup
+\catcode`\|=\@@active
+\catcode`\"=\@@active
+\gdef\redefinetablebarandquote%
+ {\def|{\VL}% % \normalTABLEsimplebar
+ \def\|##1{\VL[##1]}% % \normalTABLEcomplexbar
+ \def"{\NC}} % \normalTABLEquote
+\egroup
+
+%D \startitemize[3*ruim]
+%D \sym{\type{\DL}}
+%D \sym{\type{\DV}} (\type{\VD})
+%D \sym{\type{\DC}}
+%D \sym{\type{\DR}}
+%D \stopitemize
+
+\newif\ifTABLEdivision
+
+% \def\defineTABLEdivisions
+% {\global\TABLEdivisionfalse % in start
+% \let\DL\TableDL
+% \let\DC\TableDC
+% \let\DV\TableDV
+% \let\VD\TableDV
+% \let\DR\TableDR}
+
+\def\defineTABLEdivisions
+ {\global\TABLEdivisionfalse % in start
+ \let\DL\TableDL
+ \let\DC\TableDC
+ \let\DV\TableDV
+ \let\DR\TableDR}
+
+\def\checkTABLEdivision
+ {\ifTABLEdivision \else
+ \chuckTABLEautorow
+ \global\currentTABLEcolumn\zerocount
+ \global\TABLEdivisiontrue
+ \fi}
+
+\def\TableDL
+ {\checkTABLEdivision
+ \complexorsimpleTable{DL}}
+
+\def\simpleTableDL
+ {\complexTableDL[1]}
+
+\def\complexTableDL[#1]%
+ {\ifnum\TABLEaction=\TABLErule
+ \writestatus\m!TABLE{skipping \string\DL}%
+ \else
+ \ifnum\TABLEaction=\TABLEmidrow
+ \writestatus\m!TABLE{change \string\MR\space into \string\LR/\string\SR}%
+ \else\ifnum\TABLEaction=\TABLEfirstrow
+ \writestatus\m!TABLE{change \string\MR\space into \string\SR}%
+ \fi\fi
+ \setTABLEaction=\TABLEunknown
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \setTABLEerror\TABLEmissingrow
+ \handleTABLEerror
+ \fi
+ %\startHLcommand
+ \ifnum#1=\plusone
+ \global\advance\currentTABLEcolumn \plustwo
+ \let\next\normalTABLEsinglerule
+ \else
+ \ifnum#1<\maxTABLEcolumn
+ \global\advance\currentTABLEcolumn \plusone
+ \def\next{\normalTABLEmultirule{#1}}%
+ \else
+ \setTABLEerror\TABLEdivisionoverflow
+ \let\next\handleTABLEerror
+ \fi
+ \fi
+ \next
+ %\stopHLcommand
+ %\globalletempty\startHLcommand
+ %\globalletempty\stopHLcommand
+ \fi}
+
+\def\TableDV
+ {\TableDCV\normalTABLEsimplebar}
+
+\def\TableDC
+ {\TableDCV\normalTABLEquote}
+
+\def\TableDCV#1%
+ {\checkTABLEdivision
+ \checkTABLEautorow
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ \setTABLEerror\TABLEmissingrow
+ \handleTABLEerror
+ \else
+ \global\advance\currentTABLEcolumn \plusone
+ #1%
+ \fi}
+
+\def\TableDR
+ {\ifnum\currentTABLEcolumn<\maxTABLEcolumn % silent recovery
+ %\setTABLEerror\TABLEmissingcolumn % some day warning
+ %\handleTABLEerror
+ \finishTABLErow
+ \else
+ \global\currentTABLEcolumn\zerocount % nog check
+ \normalTABLElineending
+ \fi
+ \TABLEnoalign
+ {\nobreak
+ \global\TABLEdivisionfalse
+ \accountTABLElinewidth % temporary solution
+ \setTABLEaction\TABLErule}}
+
+\def\accountTABLElinewidth
+ {\scratchdimen\LineThicknessUnit
+ \global\advance\TABLEheight \@@tiHLheight\scratchdimen}
+
+%D \startitemize[3*ruim]
+%D \sym{\type{\BC}}
+%D \sym{\type{\BR}}
+%D \sym{\type{\BACKGROUND}}
+%D \sym{\type{\CL}}
+%D \sym{\type{\RL}}
+%D \sym{\type{\BL}}
+%D \sym{\type{\RASTER}}
+%D \sym{\type{\COLOR}}
+%D \stopitemize
+
+% definieer: \BC \BL
+% herhaal: \BR
+% definieer: \CL \RL (eerste \CL[green] = hele row! / \CL[1,green])
+% dus: \CL en \RL mix tussen \HL en \BL
+
+\def\defineTABLEbackgrounds
+ {\let\BC \TableBC
+ \let\BL \TableBL
+ \let\BR \TableBR
+ \let\BACKGROUND\TableBR
+ \let\CL \TableCL
+ \let\RL \TableRL
+ \let\COLOR \TableCOLOR
+ \let\RASTER \TableRASTER
+ \globallet\lastTABLEc\@@tibackgroundcolor
+ \globallet\lastTABLEr\@@tibackgroundscreen
+ \doifinsetelse\@@tibackground{c,color} % \v!color
+ {\global\chardef\TABLEcr\plusone}
+ {\global\chardef\TABLEcr\plustwo}}
+
+\def\TableBC
+ {\ifTABLEgrayline
+ \normalTABLEquote
+ \else
+ \TABLEnoalign\bgroup
+ \globallet\nextTABLEgrayline\executeTABLEgrayline
+ \globalletempty\TABLEgrayline % new
+ \let\BL\doTableBL
+ \let\BC\doTableBC
+ \expandafter\doTableBC
+ \fi}
+
+\def\doTableBC
+ {\addtoTABLEgrayline{\BC}%
+ \gobbleTableBCL}
+
+\def\TableBL
+ {\TABLEnoalign\bgroup
+ \globallet\nextTABLEgrayline\executeTABLEgrayline
+ \globalletempty\TABLEgrayline % new
+ \let\BL\doTableBL
+ \let\CL\doTableCL
+ \let\RL\doTableRL
+ \let\BC\doTableBC
+ \doTableBL}
+
+\def\doTableBL
+ {\complexorsimpleTable{BL}}
+
+\def\simpleTableBL
+ {\complexTableBL[,]}
+
+\def\complexTableBL[#1]%
+ {\analyzeTABLEcr[#1]%
+ \handleTABLEcr}
+
+\def\TableBR#1%
+ {\TABLEnoalign
+ {\globallet\nextTABLEgrayline\executeTABLEgrayline
+ \checkTABLEgrayline#1\BR
+ \global\TABLEgraylinetrue}}
+
+\def\analyzeTABLEcr[#1]%
+ {\doanalyzeTABLEcr[#1,,]}
+
+\def\doanalyzeTABLEcr[#1,#2,#3]%
+ {\doifnumberelse{#1x} % Is the x still needed here?
+ {\dodoanalyzeTABLEcr[#1,#2,#3]}
+ {\dodoanalyzeTABLEcr[1,#1,#2]}}
+
+\def\dodoanalyzeTABLEcr[#1,#2,#3]%
+ {\global\chardef\TABLEn#1\relax
+ \processaction
+ [#2]
+ [ c=>\global\chardef\TABLEcr1,%
+ color=>\global\chardef\TABLEcr1,%
+ r=>\global\chardef\TABLEcr2,%
+ raster=>\global\chardef\TABLEcr2]%
+ \ifcase\TABLEcr \or
+ \doifsomething{#3}{\xdef\lastTABLEc{#3}}%
+ \or
+ \doifsomething{#3}{\xdef\lastTABLEr{#3}}%
+ \fi}
+
+\def\handleTABLEcr
+ {\relax % else funny side effect
+ \ifcase\TABLEcr
+ % Can't happen!
+ \or
+ \addtoTABLEgrayline{\complexTableCOLOR[\the\TABLEn,\lastTABLEc]}%
+ \else
+ \addtoTABLEgrayline{\complexTableRASTER[\the\TABLEn,\lastTABLEr]}%
+ \fi
+ \gobbleTableBCL}
+
+\def\analyzeTABLEcrl#1[#2]%
+ {\doanalyzeTABLEcrl#1[#2,,]}
+
+\def\doanalyzeTABLEcrl#1[#2,#3,#4]%
+ {\doifnumberelse{#2x} % x ????????????????????
+ {\dodoanalyzeTABLEcr[#2,#1,#3]}
+ {\dodoanalyzeTABLEcr[\ifTABLEgrayline1\else\maxTABLEcolumn\fi,#1,#2]}}
+
+\def\TableCL
+ {\TABLEnoalign\bgroup
+ \globallet\nextTABLEgrayline\executeTABLEgrayline
+ \globalletempty\TABLEgrayline % new
+ \let\BL\doTableBL
+ \let\CL\doTableCL
+ \let\RL\doTableRL
+ \let\BC\doTableBC
+ \doTableCL}
+
+\def\doTableCL
+ {\complexorsimpleTable{CL}}
+
+\def\simpleTableCL% nog eens \'e\'en lijn van maken
+ {\BL[\the\maxTABLEcolumn,c,\lastTABLEc]}
+
+\def\complexTableCL[#1]%
+ {\analyzeTABLEcrl{c}[#1]%
+ \handleTABLEcr}
+
+\def\TableRL
+ {\TABLEnoalign\bgroup
+ \globallet\nextTABLEgrayline\executeTABLEgrayline
+ \globalletempty\TABLEgrayline % new
+ \let\BL\doTableBL
+ \let\CL\doTableCL
+ \let\RL\doTableRL
+ \let\BC\doTableBC
+ \doTableRL}
+
+\def\doTableRL
+ {\complexorsimpleTable{RL}}
+
+\def\simpleTableRL
+ {\BL[\the\maxTABLEcolumn,r,\lastTABLEr]}
+
+\def\complexTableRL[#1]%
+ {\analyzeTABLEcrl{r}[#1]%
+ \handleTABLEcr}
+
+\def\checkTABLEgrayline#1#2%
+ {\!!doneatrue
+ \ifx#1\AR
+ \!!doneafalse
+ \else\ifx#1\SR\else\ifx#1\FR\else\ifx#1\MR\else\ifx#1\LR\else
+ \!!doneafalse
+ \fi\fi\fi\fi\fi
+ \if!!donea
+ \gdef\TABLEgraylinestatus
+ {[\string#1]}%
+ \gdef\TABLEendBCL
+ {#1}%
+ \else
+ \gdef\TABLEgraylineerror
+ {[\string#2\string#1->\string#2\string\SR]}%
+ \gdef\TABLEendBCL
+ {\SR}%
+ \fi}
+
+\def\endTABLErowGL#1#2#3%
+ {\ifcase#1\relax
+ % unknown
+ \or
+ \doPreTableGL\TABLErowfactor\TABLErowfactor
+ \or
+ \doPreTableGL\TABLErowfactor\TABLErowzero
+ \or
+ \ifnum\TABLEforce=\TABLEforcelastrow
+ \doPreTableGL\TABLErowzero\TABLErowfactor
+ \else\ifnum\TABLEforce=\TABLEforcefirstrow
+ \doPreTableGL\TABLErowfactor\TABLErowzero
+ \else
+ \doPreTableGL\TABLErowzero\TABLErowzero
+ \fi\fi
+ \or
+ \doPreTableGL\TABLErowzero\TABLErowfactor
+ \fi}
+
+\def\doPreTableGL#1#2% betere namen
+ {\xdef\OldLineThicknessFactor{\the\LineThicknessFactor}%
+ \xdef\OldLineThicknessUnit{\the\LineThicknessUnit}%
+ \global\LineThicknessFactor\plusone
+ \setbox0\hbox{\AugmentedTableStrut{#1}{#2}}%
+ \getboxheight\dimen0\of\box0\relax
+ \xdef\TABLEgraylineHeight{\the\dimen0}%
+ \global\LineThicknessUnit\TABLEgraylineHeight}
+
+\def\doPostTableGL
+ {\global\LineThicknessFactor\OldLineThicknessFactor
+ \global\LineThicknessUnit \OldLineThicknessUnit}
+
+% kan simpeler
+
+\def\docomplexTableCOLOR[#1]%
+ {\dodocomplexTableGL\localstartcolor \localstopcolor [#1,\lastTABLEc,,]}
+
+\gdef\docomplexTableRASTER[#1]%
+ {\dodocomplexTableGL\localstartraster\localstopraster[#1,\lastTABLEr,,]}
+
+\def\dodocomplexTableGL#1#2[#3,#4,#5,#6]%
+ {\doifelsenothing{#4}{#1[#5]}{#1[#4]}%
+ \doPreTableGL\TABLEendofrowheight\TABLEendofrowdepth
+ \ifnum#3=\plusone % else conflict with \omit in \=
+ \let\next\normalTABLEsinglerule
+ \else
+ \def\next{\normalTABLEmultirule{#3}}%
+ \fi
+ \next
+ \doPostTableGL
+ #2}
+
+\def\TableBACKGROUND
+ {\TableBR}
+
+\def\simpleTableRASTER #1{\docomplexTableRASTER[1]#1}
+\def\complexTableRASTER[#1]{\docomplexTableRASTER[#1]}
+\def\simpleTableCOLOR {\docomplexTableCOLOR [1]}
+\def\complexTableCOLOR [#1]{\docomplexTableCOLOR [#1]}
+
+\def\TableRASTER{\complexorsimpleTable{RASTER}}
+\def\TableCOLOR {\complexorsimpleTable{COLOR}}
+
+\def\addtoTABLEgrayline#1%
+ {\TABLEgraytoks\expandafter{\TABLEgrayline}%
+ \xdef\TABLEgrayline{\the\TABLEgraytoks\noexpand#1}}
+
+\def\setTableBCL#1#2%
+ {\ifx#1#2%
+ \gdef\TABLEgraylinestatus{[\string#1]}%
+ \gdef\TABLEendBCL{#1}%
+ \addtoTABLEgrayline{#1}%
+ \else
+ \gdef\TABLEgraylineerror{[\string#1->\string#2]}%
+ \gdef\TABLEendBCL{#2}%
+ \addtoTABLEgrayline{#2}%
+ \fi}
+
+\def\gobbleTableBCL#1%
+ {\ifx#1\BC \let\next\doTableBC \else
+ \ifx#1\BL \let\next\doTableBL \else
+ \ifx#1\SR \setTableBCL\SR\SR \let\next\egroup \else
+ \ifx#1\FR \setTableBCL\FR\FR \let\next\egroup \else
+ \ifx#1\MR \setTableBCL\MR\MR \let\next\egroup \else
+ \ifx#1\LR \setTableBCL\LR\LR \let\next\egroup \else
+ \setTableBCL #1\SR \let\next\egroup
+ \fi\fi\fi\fi\fi\fi
+ \next}
+
+\def\executeTABLEgrayline
+ {\TABLEnoalign
+ {\def\BC
+ {\advance\currentTABLEcolumn \plusone}%
+ \def\dodocomplexTableGL##1##2[##3,##4,##5,##6]%
+ {\BC\advance\currentTABLEcolumn ##3 }%
+ \let\endTABLErow\endTABLEgrayrow
+ \currentTABLEcolumn\zerocount
+ \TABLEgrayline\TABLEendBCL % determine n of columns and height
+ \advance\currentTABLEcolumn \minusone
+ \ifnum\currentTABLEcolumn>\maxTABLEcolumn
+ % error message too long line
+ \globalletempty\TABLEgrayline
+ \else
+ % \message{n of color columns: \the\currentTABLEcolumn}\wait
+ \global\TABLEgraylinetrue % vanaf hier nog checken
+ \fi
+ \global\currentTABLEcolumn\zerocount}%
+ \unskip\TABLEgrayline\TABLEendBCL
+ \TABLEnoalign
+ {\nobreak
+ \vskip-\TABLEgraylineHeight
+ \nobreak
+ \global\setTABLEactiontrue
+ \global\currentTABLEcolumn\zerocount
+ \globalletempty\nextTABLEgrayline
+ \global\TABLEgraydonetrue
+ \global\TABLEgraylinefalse}}
+
+\def\endTABLEgrayrow#1#2#3%
+ {\ifcase#1\relax
+ \global\chardef\TABLEendofrowheight\TABLErowfactor
+ \global\chardef\TABLEendofrowdepth \TABLErowfactor
+ \or
+ \global\chardef\TABLEendofrowheight\TABLErowfactor
+ \global\chardef\TABLEendofrowdepth \TABLErowfactor
+ \or
+ \global\chardef\TABLEendofrowheight\TABLErowfactor
+ \global\chardef\TABLEendofrowdepth \TABLErowzero
+ \or
+ \ifnum\TABLEforce=\TABLEforcelastrow
+ \global\chardef\TABLEendofrowheight\TABLErowzero
+ \global\chardef\TABLEendofrowdepth \TABLErowfactor
+ \else\ifnum\TABLEforce=\TABLEforcefirstrow
+ \global\chardef\TABLEendofrowheight\TABLErowfactor
+ \global\chardef\TABLEendofrowdepth \TABLErowzero
+ \else
+ \global\chardef\TABLEendofrowheight\TABLErowzero
+ \global\chardef\TABLEendofrowdepth \TABLErowzero
+ \fi\fi
+ \or
+ \global\chardef\TABLEendofrowheight\TABLErowzero
+ \global\chardef\TABLEendofrowdepth \TABLErowfactor
+ \fi}
+
+\def\defineTABLEshorthands%
+ {\def\SPAN##1{\use{##1}}%
+ \def\TWO {\use2}%
+ \def\THREE {\use3}%
+ \def\FOUR {\use4}%
+ \def\FIVE {\use5}%
+ \def\SIX {\use6}%
+ \def\REF {\ReFormat}}
+
+\def\defineTABLEunits
+ {\processaction
+ [\@@tidistance]
+ [ \v!none=>\OpenUp00\def\LOW{\Lower6 },
+ \v!small=>\OpenUp00\def\LOW{\Lower6 }, % == baseline
+ \v!medium=>\OpenUp11\def\LOW{\Lower7 },
+ \v!big=>\OpenUp22\def\LOW{\Lower8 }]%
+ \doifelse\@@tidistance\v!none
+ {\chardef\TABLErowfactor\zerocount}
+ {\chardef\TABLErowfactor\plustwo }}
+
+\def\dohandlebar
+ {\ifmmode
+ \@EA\domathmodebar
+ \else\ifintable
+ \@EAEAEA\domathmodebar
+ \else
+ \@EAEAEA\dotextmodebar
+ \fi\fi}
+
+% De macro's t.b.v. instellingen.
+
+\def\setuptables
+ {\dosingleargument\dosetuptables}
+
+\def\dosetuptables[#1]%
+ {\getparameters[\??ti][#1]%
+ \processaction
+ [\@@tialign]
+ [ \v!right=>\def\TABLEparalignment{\raggedright},
+ \v!left=>\def\TABLEparalignment{\raggedleft},
+ \v!middle=>\def\TABLEparalignment{\raggedcenter},
+ \s!default=>\def\TABLEparalignment{\notragged},
+ \s!unknown=>\def\TABLEparalignment{\notragged}]%
+ \assignalfadimension\@@tiVL\@@tiVLwidth 246%
+ \assignalfadimension\@@tiHL\@@tiHLheight246}
+
+\def\localTABLEsetup
+ {\@@ticommands\relax
+ \expanded{\switchtobodyfont[\@@tibodyfont]}%
+ \StrutHeightFactor 8
+ \StrutDepthFactor 4
+ \LineThicknessFactor4
+ \NormalTLTU {.1pt}%
+ \NormalTSU {\normalbaselineskip\divide\StrutUnit 12 }%
+ \NormalTableUnits}
+
+%D And then I wrote the tabulate environment. That
+%D alternative supports setting the rule thickness and color,
+%D so here is the table alternative.
+
+\let\startglobalTABLEcolor\empty
+\let\stopglobalTABLEcolor \empty
+
+\def\localTABLEsetup
+ {\@@ticommands\relax
+ % bodyfont
+ \expanded{\switchtobodyfont[\@@tibodyfont]}%
+ % linecolor
+ \doifsomething\@@tirulecolor
+ {\def\startglobalTABLEcolor{\localstartcolor[\@@tirulecolor]}%
+ \def\stopglobalTABLEcolor {\localstopcolor}}%
+ % linethickness
+ \LineThicknessFactor4
+ \scratchdimen\@@tirulethickness
+ \divide\scratchdimen \LineThicknessFactor
+ \expanded{\NormalTLTU{\the\scratchdimen}}%
+ % spacing, was depth=4 height=8 (counters, sigh, now macros)
+ \doifelse\@@tiheight\v!strut
+ {\let\StrutHeightFactor\@@itheight}
+ {\let\StrutHeightFactor\@@tiheight}%
+ \doifelse\@@tidepth\v!strut
+ {\let\StrutDepthFactor\@@itdepth}
+ {\let\StrutDepthFactor\@@tidepth}%
+ \scratchdimen\StrutHeightFactor\points \multiply\scratchdimen 10%
+ \edef\StrutHeightFactor{\withoutpt\the\scratchdimen}%
+ \scratchdimen\StrutDepthFactor \points \multiply\scratchdimen 10%
+ \edef\StrutDepthFactor{\withoutpt\the\scratchdimen}%
+ % units
+ \NormalTSU{\normalbaselineskip\divide\StrutUnit 12 }%
+ \NormalTableUnits}
+
+\def\OpenUp#1#2%
+ {\scratchdimen\StrutHeightFactor \points \advance\scratchdimen #1\points
+ \edef\StrutHeightFactor{\withoutpt\the\scratchdimen}%
+ \scratchdimen\StrutDepthFactor \points \advance\scratchdimen #2\points
+ \edef\StrutDepthFactor{\withoutpt\the\scratchdimen}}
+
+%D As one can see, we didn't only add color, but also more
+%D control over spacing.
+%D
+%D \startbuffer[a]
+%D \starttable[|c|]
+%D \HL
+%D \VL \strut test \VL \FR
+%D \VL \strut test \VL \MR
+%D \VL \strut test \VL \MR
+%D \VL \strut test \VL \LR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \startbuffer[b]
+%D \starttabulate[|c|]
+%D \HL
+%D \NC test \NC \NR
+%D \NC test \NC \NR
+%D \NC test \NC \NR
+%D \NC test \NC \NR
+%D \HL
+%D \stoptabulate
+%D \stopbuffer
+%D
+%D In the next example, the first table is defined as:
+%D
+%D \typebuffer[a]
+%D
+%D and the second one as:
+%D
+%D \typebuffer[b]
+%D
+%D The first table is typeset using the default height and
+%D depth factors .8 and .4. The second table has both factors
+%D set to \type {strut}, and the third table shows what
+%D happens when we set the values to zero. The rightmost table
+%D is typeset using the tabulate environment.
+%D
+%D \startcombination[4*1]
+%D {$\vcenter{\getbuffer[a]}$}
+%D {\hbox{h=.8 d=.4}}
+%D {\setuptables[height=strut,depth=strut]$\vcenter{\getbuffer[a]}$}
+%D {\hbox{h=d=\type{strut}}}
+%D {\setuptables[height=0,depth=0]$\vcenter{\getbuffer[a]}$}
+%D {\hbox{h=d=0}}
+%D {$\vcenter{\getbuffer[b]}$}
+%D {\hbox{tabulate}}
+%D \stopcombination
+
+\setuptables
+ [HL=\v!medium,
+ VL=\v!medium,
+ NL=\v!small,
+ \c!frame=,
+ \c!align=\v!right,
+ \c!depth=.40, % \v!strut
+ \c!height=.80, % \v!strut
+ \c!rulethickness=\linewidth,
+ \c!rulecolor=,
+ \c!distance=\v!medium,
+ \c!bodyfont=\the\bodyfontsize,
+ \c!commands=,
+ \c!background=\v!screen,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=]
+
+\def\ifintabel{\ifintable} % upward compatible
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-tbl.tex b/Master/texmf-dist/tex/context/base/core-tbl.tex
new file mode 100644
index 00000000000..b33302da4bd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-tbl.tex
@@ -0,0 +1,1432 @@
+%D \module
+%D [ file=core-tbl,
+%D version=1998.11.03,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Text Flow Tabulation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Tabulation}
+
+% \processbetween gebruiken in head/tail macros
+
+\unprotect
+
+% WATCH OUT: don't change this model else trialtypesetting
+% compatibility problems
+
+% watch out, cells expand pretty late on a per row basis
+
+% |p2|p3| 2:3
+% spanning
+
+% Be careful with changing the hsize calculation in p mode;
+% the following code works quite well:
+%
+% \setupfield [line][location=low,height=1.2\lineheight,width=\hsize]
+% \definefield [test] [line] [line] []
+%
+% \starttabulate[|l|p|]
+% \NC test \NC \field [test] \NC \NR
+% \stoptabulate
+
+% In-text tabbing environment
+%
+% \starttabulate[| separated template] % eg [|l|p|] or [|l|p|p|]
+% \NC ... \NC ... \NC\NR
+% \stoptabulate
+%
+% with: two pass auto width calculation when no p-width
+% specified, even with multiple p's, see examples.
+
+% TaBlE compatible specifications:
+%
+% l align column/paragraph left
+% r align column/paragraph right
+% c align column/paragraph center
+% p p(dimen) of automatisch als alleen p
+% w column width
+% f font#1
+% B bold
+% I italic
+% S slanted
+% T type
+% R roman
+% m math
+% M display math
+% h hook (inner level or par lines)
+% b before (may be command#1)
+% a after
+% i i<n> skip left of column
+% j i<n> skip right of column
+% k i<n> skip around column
+
+% s setups
+
+% g g{char} align at char
+% . align at .
+% , align at ,
+
+% Still to be done
+
+% N math numbers (best hook into existing digits mechanism)
+% n numbers (best hook into existing digits mechanism)
+% Q math numbers (best hook into existing digits mechanism)
+% q numbers (best hook into existing digits mechanism)
+% ~ \hskip.5em
+% | check
+
+% nesting
+
+% 10 evt auto stack; dan wel andere signal dan void nodig
+
+% present but not yet 100% ok
+%
+% \FL top hrule
+% \ML mid hrule (with auto split)
+% \LL bottom hrule
+% \HL
+
+% \VL as soon as needed
+% color as soon as needed
+
+% \EQ \RQ \HQ equal (raw, hook)
+% \NC \RC \HC normal (raw, hook)
+%
+% \NR
+
+% \HR : rule with lineheight
+
+% \autotabulaterule : with lineheight, not first/last
+% \autotabulateline : spaced, not first/last
+% \tabulaterule : with lineheight
+% \tabulateline : spaced
+
+% tricky: align scans ahead, over # and expands ones before
+% while doing
+
+% new:
+%
+% \starttabulate[|cg{.}|cg{,}|cg{,}|]
+% \NC period \NC comma \NC comma \NC\NR
+% \NG 100.000,00 \NG 100.000,00 \NG 100,00 \NC\NR
+% \NG 10.000,00 \NG 10.000,00 \NG 1000,00 \NC\NR
+% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR
+% \NG 10 \NG 10 \NG 0,00 \NC\NR
+% \stoptabulate
+%
+% \starttabulate[|c.|c,|c,|]
+% \NC period \NC comma \NC comma \NC\NR
+% \NG 100.000,00 \NG 100.000,00 \NG 100,00 \NC\NR
+% \NG 10.000,00 \NG 10.000,00 \NG 1000,00 \NC\NR
+% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR
+% \NG 10 \NG 10 \NG 0,00 \NC\NR
+% \stoptabulate
+
+% nice demo (for BG)
+%
+% \starttabulate[|r|b{$\star$}|ra{\percent}|b{=}|r|]
+% \NC 500 \NC \NC 60 \NC \NC 300 \NC \NR
+% \NC 500 \NC \NC 55 \NC \NC 275 \NC \NR
+% \NC 500 \NC \NC 50 \NC \NC 250 \NC \NR
+% \NC 500 \NC \NC 45 \NC \NC 225 \NC \NR
+% \NC 500 \NC \NC 40 \NC \NC 200 \NC \NR
+% \NC 500 \NC \NC 35 \NC \NC 175 \NC \NR
+% \NC 500 \NC \NC 30 \NC \NC 150 \NC \NR
+% \NC 500 \NC \NC 25 \NC \NC 125 \NC \NR
+% \NC 500 \NC \NC 20 \NC \NC 100 \NC \NR
+% \stoptabulate
+
+\newtoks \tabulatepreamble
+\newtoks \tabulatebefore
+\newtoks \tabulateafter
+\newtoks \tabulatebmath
+\newtoks \tabulateemath
+\newtoks \tabulatefont
+\newtoks \tabulatesettings
+\newtoks \tabulatedummy
+
+\newcount \nofautotabulate % \newcounter \nofautotabulate
+\newcount \tabulatecolumns % \newcounter \tabulatecolumns
+
+\newcounter \tabulateminplines
+\newcounter \tabulatemaxplines
+
+\newif \ifautotabulate
+\newif \ifsplittabulate \splittabulatetrue
+
+\newif \ifhandletabulatepbreak \handletabulatepbreaktrue
+\newif \iftabulatenopbreak \tabulatenopbreakfalse
+
+\newif \iftabulateequal
+\newif \iftracetabulate
+\newif \ifframedtabulate
+
+\newdimen \tabulatepwidth
+\newdimen \tabulatewidth
+\newdimen \tabulateunit
+\newdimen \tabulatemaxpheight
+
+\newbox \tabulatebox
+
+% [|lg{.}|] => \NG 12.34 \NC
+
+\gdef\handletabulatecharalign#1 % space delimited !
+ {\edef\alignmentclass{\tabulatecolumn}%
+ \edef\alignmentcharacter{\getvalue{\@@tabalign@@\tabulatecolumn}}%
+ \ifcase\tabulatepass\or
+ \setfirstpasscharacteralign\checkalignment{#1}%
+ \fi % force hsize
+ \setsecondpasscharacteralign\checkalignment{#1}}
+
+\def\noftabcolumns{16}
+
+\def\@@tabbox@@ {@@tabbox@}
+\def\@@tabhook@@ {@@tabhook@}
+\def\@@tabalign@@ {@@tabalign@}
+\def\@@tabsetups@@{@@tabsetups@}
+
+% \dorecurse\noftabcolumns % quick and dirty stack
+% {\@EA\newbox\csname\@@tabbox@@\recurselevel\endcsname}
+
+\def\tablebox#1%
+ {\csname\@@tabbox@@\number#1\endcsname}
+
+\def\checktablebox#1%
+ {\ifundefinedelse{\@@tabbox@@\number#1}%
+ \expandafter\newbox\csname\@@tabbox@@\number#1\endcsname
+ \fi}
+
+\def\initializetablebox#1%
+ {\ifundefined{\@@tabbox@@\number#1}%
+ \expandafter\newbox\csname\@@tabbox@@\number#1\endcsname
+ \else
+ \global\setbox\csname\@@tabbox@@\number#1\endcsname\box\voidb@x
+ \fi}
+
+\def\initializetableboxes#1%
+ {\dorecurse#1{\initializetablebox\recurselevel}}
+
+\initializetableboxes\noftabcolumns
+
+\def\dotabulatenobreak
+ {\noalign
+ {\nobreak
+ \iftracetabulate
+ \red\hrule\!!height.5\linewidth\!!depth.5\linewidth
+ \par
+ \kern-\linewidth
+ \nobreak
+ \fi}}
+
+\let\notabulatehook\empty
+
+\def\checktabulatehook
+ {\ifnum\tabulatetype<\plustwo
+ \global\let\tabulatehook\notabulatehook
+ \else
+ \global\let\tabulatehook\dotabulatehook
+ \fi}
+
+\def\checktabulatesetups
+ {\getvalue{\@@tabsetups@@\tabulatecolumn}}
+
+% \def\dodosettabulatepreamble#1#2%
+% {\ifzeropt\tabulatewidth
+% \ifcase\tabulatemodus\relax
+% \let\preamblebox\empty
+% \else
+% \def\preamblebox{\autotabulatetrue}%
+% \fi
+% \else
+% \ifcase\tabulatemodus\relax
+% \edef\preamblebox{\hbox to \the\tabulatewidth}%
+% \else
+% \edef\preamblebox{\hsize\the\tabulatewidth}%
+% \fi
+% \fi
+% %
+% % less bytes
+% %
+% %\edef\preamblebox%
+% % {\ifcase\tabulatewidth
+% % \ifcase\tabulatemodus\relax\else\noexpand\autotabulatetrue\fi
+% % \els
+% % \ifcase\tabulatemodus\relax\hbox to\else\hsize\fi\the\tabulatewidth
+% % \fi}%
+% %
+% % 0 = NC column next EQ equal column
+% % 1 = RC column raw RQ equal column raw
+% % 2 = HC column hook HQ equal column hook
+% % some entries can be left out if we test for them being set
+% \@EA\appendtoks \@EA&\@EA\hskip\pretabskip##&\to\!!toksa
+% \appendtoks \ignorespaces\to\!!toksa
+% %\@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\tabulatecolumns}\to\!!toksa
+% \@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\the\tabulatecolumns}\to\!!toksa
+% \appendtoks \checktabulatesetups\to\!!toksa
+% \appendtoks \checktabulatehook\to\!!toksa
+% \@EA\appendtoks \preamblebox\to\!!toksa
+% \appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa
+% \appendtoks\ifnum\tabulatetype=\plusone \else \to\!!toksa
+% \@EA\appendtoks \the\tabulatebmath\to\!!toksa
+% \@EA\appendtoks \the\tabulatefont\to\!!toksa
+% \@EA\appendtoks \the\tabulatesettings\to\!!toksa
+% \@EA\appendtoks \the\tabulatebefore\to\!!toksa
+% \appendtoks\fi \to\!!toksa
+% \appendtoks \bgroup\ignorespaces\to\!!toksa
+% %
+% \appendtoks \tabulatehook##\to\!!toksa
+% %
+% %%\doifdefinedelse{\@@tabalign@@\tabulatecolumns}
+% %\doifdefinedelse{\@@tabalign@@\the\tabulatecolumns}
+% % {\appendtoks\handletabulatecharalign## \to\!!toksa}
+% % {\appendtoks\tabulatehook ##\to \!!toksa}%
+% % waarom kan ik hier geen \xx{##} geven, om een of
+% % andere reden passeert dan tex de hele regel (incl \NC's)
+% % als argument; elke delimiter <> space gaat trouwens fout
+% \appendtoks \unskip\unskip\ifmmode\else\endgraf\fi\egroup\to\!!toksa
+% \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa
+% \@EA\appendtoks \the\tabulateafter\to\!!toksa
+% \@EA\appendtoks \the\tabulateemath\to\!!toksa
+% \appendtoks\fi \to\!!toksa
+% \appendtoks #2\egroup\egroup\to\!!toksa
+% \@EA\appendtoks \@EA&\@EA\hskip\postabskip##\to\!!toksa
+% \appendtoks\NC\to\tabulatedummy
+% \let\bbskip\empty
+% \def\pretabskip{.5\tabulateunit}%
+% \let\postabskip\pretabskip
+% \let\gettabulateexit\dogettabulateexit
+% \tabulatewidth\zeropoint}
+
+\let\pretabrule \donothing
+\let\posttabrule\donothing
+
+\def\dodosettabulatepreamble#1#2%
+ {\ifzeropt\tabulatewidth
+ \ifcase\tabulatemodus\relax
+ \let\preamblebox\empty
+ \else
+ \def\preamblebox{\autotabulatetrue}%
+ \fi
+ \else
+ \ifcase\tabulatemodus\relax
+ \edef\preamblebox{\hbox to \the\tabulatewidth}%
+ \else
+ \edef\preamblebox{\hsize\the\tabulatewidth}%
+ \fi
+ \fi
+ %
+ % less bytes
+ %
+ %\edef\preamblebox%
+ % {\ifcase\tabulatewidth
+ % \ifcase\tabulatemodus\relax\else\noexpand\autotabulatetrue\fi
+ % \els
+ % \ifcase\tabulatemodus\relax\hbox to\else\hsize\fi\the\tabulatewidth
+ % \fi}%
+ %
+ % 0 = NC column next EQ equal column
+ % 1 = RC column raw RQ equal column raw
+ % 2 = HC column hook HQ equal column hook
+ % some entries can be left out if we test for them being set
+ \@EA\appendtoks \@EA&\@EA\hskip\pretabskip\pretabrule##&\to\!!toksa
+ \appendtoks \ignorespaces\to\!!toksa
+ %\@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\tabulatecolumns}\to\!!toksa
+ \@EA\appendtoks\@EA\xdef\@EA\tabulatecolumn\@EA{\the\tabulatecolumns}\to\!!toksa
+ \appendtoks \checktabulatesetups\to\!!toksa
+ \appendtoks \checktabulatehook\to\!!toksa
+ \@EA\appendtoks \preamblebox\to\!!toksa
+ \appendtoks \bgroup\bbskip\bgroup#1\to\!!toksa
+ \appendtoks\ifnum\tabulatetype=\plusone \else \to\!!toksa
+ \@EA\appendtoks \the\tabulatebmath\to\!!toksa
+ \@EA\appendtoks \the\tabulatefont\to\!!toksa
+ \@EA\appendtoks \the\tabulatesettings\to\!!toksa
+ \@EA\appendtoks \the\tabulatebefore\to\!!toksa
+ \appendtoks\fi \to\!!toksa
+ \appendtoks \bgroup\ignorespaces\to\!!toksa
+ %
+ \appendtoks \tabulatehook##\to\!!toksa
+ %
+ %%\doifdefinedelse{\@@tabalign@@\tabulatecolumns}
+ %\doifdefinedelse{\@@tabalign@@\the\tabulatecolumns}
+ % {\appendtoks\handletabulatecharalign## \to\!!toksa}
+ % {\appendtoks\tabulatehook ##\to \!!toksa}%
+ % waarom kan ik hier geen \xx{##} geven, om een of
+ % andere reden passeert dan tex de hele regel (incl \NC's)
+ % als argument; elke delimiter <> space gaat trouwens fout
+ \appendtoks \unskip\unskip\ifmmode\else\endgraf\fi\egroup\to\!!toksa
+ \appendtoks\ifnum\tabulatetype=1 \else \to\!!toksa
+ \@EA\appendtoks \the\tabulateafter\to\!!toksa
+ \@EA\appendtoks \the\tabulateemath\to\!!toksa
+ \appendtoks\fi \to\!!toksa
+ \appendtoks #2\egroup\egroup\to\!!toksa
+ \@EA\appendtoks \@EA&\@EA\posttabrule\@EA\hskip\postabskip##\to\!!toksa
+ \appendtoks\NC\to\tabulatedummy
+ \let\bbskip\empty
+ \def\pretabskip{.5\tabulateunit}%
+ \let\postabskip\pretabskip
+ \let\gettabulateexit\dogettabulateexit
+ \tabulatewidth\zeropoint}
+
+\def\dosettabulatepreamble
+ {\ifx\next\relax
+ \let\nextnext\relax % == \expandafter\gobbleoneargument
+ \else
+ \let\nextnext\settabulatepreamble
+ \ifx x\next \chardef\tabulatealign\zerocount % internal
+ \else\ifx l\next \chardef\tabulatealign\plusone
+ \else\ifx r\next \chardef\tabulatealign\plustwo
+ \else\ifx c\next \chardef\tabulatealign\plusthree
+ \else\ifx p\next \let\nextnext\gettabulateparagraph
+ \else\ifx s\next \let\nextnext\gettabulatesetups
+ \else\ifx w\next \let\nextnext\gettabulatewidth
+ \else\ifx f\next \let\nextnext\gettabulatefont
+ \else\ifx B\next \tabulatefont{\bf}%
+ \else\ifx I\next \tabulatefont{\it}%
+ \else\ifx S\next \tabulatefont{\sl}%
+ \else\ifx T\next \tabulatefont{\tt}%
+ \else\ifx R\next \tabulatefont{\rm}%
+ \else\ifx m\next \tabulatebmath{$}\tabulateemath{$}%
+ \else\ifx M\next \tabulatebmath{$\displaystyle}\tabulateemath{$}%
+ \else\ifx h\next \let\nextnext\gettabulatehook
+ \else\ifx b\next \let\nextnext\gettabulatebefore
+ \else\ifx a\next \let\nextnext\gettabulateafter
+ \else\ifx i\next \let\nextnext\gettabulatepreskip
+ \else\ifx j\next \let\nextnext\gettabulateposskip
+ \else\ifx k\next \let\nextnext\gettabulatepreposskip
+ \else\ifx X\next \let\nextnext\gettabulateexit % internal
+ \else\ifx e\next \appendtoks\global\tabulateequaltrue\to\tabulatesettings
+ \else\ifx ~\next \appendtoks\fixedspaces\to\tabulatesettings
+ \else\ifx g\next \let\nextnext\gettabulatealign
+ \else\ifx .\next \def\nextnext{\gettabulatealign.}%
+ \else\ifx ,\next \def\nextnext{\gettabulatealign,}%
+ \else \message{unknown preamble key [\meaning\next]}%
+ \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi
+ \fi
+ \nextnext}
+
+\def\dogettabulateexit
+ {\let\postabskip\!!zeropoint
+ \settabulatepreamble}
+
+\let\gettabulateexit\dogettabulateexit
+
+\def\gettabulatepreskip#1%
+ {\doifnumberelse{#1}
+ {\scratchdimen#1\tabulateunit\let\next\empty}
+ {\scratchdimen.5\tabulateunit\def\next{#1}}%
+ \edef\pretabskip{\the\scratchdimen}%
+ \@EA\settabulatepreamble\next}
+
+\def\gettabulateposskip#1%
+ {\doifnumberelse{#1}
+ {\scratchdimen#1\tabulateunit\let\next\empty}
+ {\scratchdimen.5\tabulateunit\def\next{#1}}%
+ \edef\postabskip{\the\scratchdimen}%
+ \let\gettabulateexit\settabulatepreamble
+ \@EA\settabulatepreamble\next}
+
+\def\gettabulatepreposskip#1%
+ {\doifnumberelse{#1}
+ {\scratchdimen#1\tabulateunit\let\next\empty}
+ {\scratchdimen.5\tabulateunit\def\next{#1}}%
+ \edef\pretabskip{\the\scratchdimen}%
+ \let\postabskip\pretabskip
+ \let\gettabulateexit\settabulatepreamble
+ \@EA\settabulatepreamble\next}
+
+\def\gettabulatesetups#1%
+ {\setvalue{\@@tabsetups@@\the\tabulatecolumns}{\setups[#1]}%
+ \settabulatepreamble}
+
+\def\gettabulatehook#1%
+ {\setvalue{\@@tabhook@@\the\tabulatecolumns}{#1}%
+ \settabulatepreamble}
+
+\def\gettabulatealign#1%
+ {\setvalue{\@@tabalign@@\the\tabulatecolumns}{#1}%
+ \settabulatepreamble}
+
+\def\gettabulatebefore#1%
+ {\tabulatebefore{#1}%
+ \settabulatepreamble}
+
+\def\gettabulateafter#1%
+ {\tabulateafter{#1}%
+ \settabulatepreamble}
+
+\def\gettabulatefont#1%
+ {\tabulatefont{#1}%
+ \settabulatepreamble}
+
+\def\gettabulatewidth
+ {\chardef\tabulatemodus\zerocount
+ \chardef\tabulatedimen\zerocount
+ \doifnextcharelse(\dogettabulatewidth\settabulatepreamble}
+
+\def\gettabulateparagraph
+ {\doifnextcharelse{(}
+ {\chardef\tabulatemodus\plusone
+ \chardef\tabulatedimen\plusone
+ \dogettabulatewidth}
+ {\chardef\tabulatemodus\plustwo
+ \chardef\tabulatedimen\zerocount
+ \settabulatepreamble}}
+
+% \def\dogettabulatewidth(#1)%
+% {\tabulatewidth#1\relax
+% \ifnum\tabulatedimen=\plusone
+% \global\advance\tabulatepwidth\tabulatewidth
+% \fi
+% \settabulatepreamble}
+
+% \def\dogettabulatewidth(#1)%
+% {\doifelse{#1}\v!passend
+% {\chardef\tabulatemodus\plusthree}
+% {\tabulatewidth#1\relax}%
+% \ifnum\tabulatedimen=\plusone
+% \global\advance\tabulatepwidth\tabulatewidth
+% \fi
+% \settabulatepreamble}
+
+% \startbuffer
+% \toplinebox{\framed[width=3cm,height=2cm]{tufte}}
+% \stopbuffer
+% \starttabulate[|p(fixed)|p|]
+% \dorecurse{100}{\NC \getbuffer \NC test \par test \par \NC \NR}
+% \stoptabulate
+% \starttabulate[|p(fit)|p|]
+% \dorecurse{100}{\NC \getbuffer \NC test \par test \par \NC \NR}
+% \stoptabulate
+
+\def\dogettabulatewidth(#1)%
+ {\processallactionsinset
+ [#1]%
+ [\v!fit=>\chardef\tabulatemodus\plusthree,
+ \v!fixed=>\chardef\tabulatemodus\plusthree
+ \tabulatenopbreaktrue,
+ \s!unknown=>\tabulatewidth#1\relax]%
+ \ifnum\tabulatedimen=\plusone
+ \global\advance\tabulatepwidth\tabulatewidth
+ \fi
+ \settabulatepreamble}
+
+\def\settabulatepreamble
+ {\afterassignment\dosettabulatepreamble\let\next=}
+
+\def\tabulateraggedright {\ifnum\tabulatetype=\plusone \else\raggedright \fi}
+\def\tabulateraggedcenter{\ifnum\tabulatetype=\plusone \else\raggedcenter\fi}
+\def\tabulateraggedleft {\ifnum\tabulatetype=\plusone \else\raggedleft \fi}
+\def\tabulatenotragged {\ifnum\tabulatetype=\plusone \else\notragged \fi}
+\def\tabulatehss {\ifnum\tabulatetype=\plusone \else\hss \fi}
+
+\def\nexttabulate#1|%
+ {\chardef\tabulatealign\@@tabulatealign
+ \chardef\tabulatemodus\zerocount
+ \chardef\tabulatedimen\zerocount
+ \tabulatebefore \emptytoks
+ \tabulateafter \emptytoks
+ \tabulatebmath \emptytoks
+ \tabulateemath \emptytoks
+ \tabulatefont \emptytoks
+ \tabulatesettings\emptytoks
+ \global\advance\tabulatecolumns\plusone
+ \letvalue{\@@tabsetups@@\the\tabulatecolumns}\donothing
+ \settabulatepreamble#1\relax\relax % permits i without n
+ \ifcase\tabulatemodus\relax
+ \ifcase\tabulatealign\relax
+ \dodosettabulatepreamble\empty \tabulatehss \or
+ \dodosettabulatepreamble\empty \tabulatehss \or
+ \dodosettabulatepreamble\tabulatehss\empty \or
+ \dodosettabulatepreamble\tabulatehss\tabulatehss \fi
+ \or % fixed width
+ \ifcase\tabulatealign\relax
+ \dodosettabulatepreamble \bskip \eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedright }\eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedleft }\eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedcenter}\eskip \fi
+ \or % auto width
+ \global\advance\nofautotabulate\plusone
+ \ifcase\tabulatealign\relax
+ \dodosettabulatepreamble \bskip \eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedright }\eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedleft }\eskip \or
+ \dodosettabulatepreamble{\bskip\tabulateraggedcenter}\eskip \fi
+ \or % simple
+ \dodosettabulatepreamble \xbskip \xeskip
+ \fi
+ \futurelet\next\donexttabulate}
+
+\def\donexttabulate
+ {\ifx\next\relax\else
+ \expandafter\nexttabulate
+ \fi}
+
+\def\splitofftabulatebox
+ {\dontcomplain
+ \global\setbox\tabulatebox % % % global ? % % %
+ \vsplit\tablebox\tabulatecolumn to \lineheight
+ \setbox\tabulatebox\normalvbox
+ {\unvbox\tabulatebox}%
+ \setbox\tabulatebox\hbox to \wd\tabulatebox
+ {\hss\dotabulatehook{\box\tabulatebox}\hss}%
+ \ht\tabulatebox\strutht
+ \dp\tabulatebox\strutdp
+ \box\tabulatebox}
+
+\def\dotabulatehook {\getvalue{\@@tabhook@@ \tabulatecolumn}}
+\def\dotabulatealign {\getvalue{\@@tabalign@@ \tabulatecolumn}}
+
+\def\resettabulatepheight
+ {\globallet\tabulateminplines\!!plusone
+ \getnoflines\tabulatemaxpheight
+ \xdef\tabulatemaxplines{\the\noflines}%
+ \global\tabulatemaxpheight\zeropoint}
+
+\def\settabulatepheight
+ {\scratchdimen\ht\tablebox\tabulatecolumn\relax
+ \ifdim\scratchdimen>\tabulatemaxpheight
+ \global\tabulatemaxpheight\scratchdimen
+ \fi}
+
+\def\handletabulatepbreak
+ {\TABLEnoalign
+ {\ifhandletabulatepbreak
+ \iftabulatenopbreak
+ \dotabulatenobreak
+ \else\ifnum\tabulatemaxplines>\plusone
+ \ifnum\tabulateminplines=\plusone
+ \dotabulatenobreak
+ \fi
+ \doglobal\increment\tabulateminplines
+ \ifnum\tabulateminplines=\tabulatemaxplines\relax
+ \dotabulatenobreak
+ \fi
+ \fi \fi
+ \fi}}
+
+%D \startbuffer
+%D \starttabulate[|c|p|p|]
+%D \NC \bf Alpha \NC \bf Beta \NC \bf Gamma \NC\NR
+%D \NC 1 \NC right indeed \NC definitely wrong \NC\NR
+%D \NC 2 \NC \thinrules[n=3] \NC \thinrules[n=3] \NC\NR
+%D \NC 3 \NC oh yes \NC simply no \NC\NR
+%D \NC 4 \NC very true \NC as false as can be \NC\NR
+%D \NC 5 \NC \thinrules[n=5] \NC \thinrules[n=5] \NC\NR
+%D \NC 6 \NC \thinrules[n=3] \NC \thinrules[n=4] \NC\NR
+%D \stoptabulate
+%D \stopbuffer
+%D
+%D \typebuffer {\tracetabulatetrue\getbuffer}
+%D
+%D \startbuffer
+%D \starttabulate[|c|p|p|]
+%D \NC \bf Alpha \NC \bf Beta \NC \bf Gamma \NC\NR
+%D \NC 1 \NC right indeed \NC definitely wrong \NC\NR
+%D \NC 2 \NC oh yes \NC simply no \NC\NR
+%D \NC 3 \NC very true \NC as false as can be \NC\NR
+%D \NC 4 \NC the whole truth \NC but the truth \NC\NR
+%D \stoptabulate
+%D \stopbuffer
+%D
+%D \typebuffer {\tracetabulatetrue\getbuffer}
+
+% \definetabulate
+% \redefinetabulate
+% \starttabulate[preamble]
+% \starttabulate -> \starttabulate[|l|p|]
+
+\def\definetabulate
+ {\dotripleempty\dodefinetabulate}
+
+\def\dodefinetabulate[#1][#2][#3]%
+ {\ifthirdargument
+ \doifundefined{\??tt#1::\c!unit}
+ {\copyparameters
+ [\??tt#1::][\??tt\v!tabulate::]%
+ [\c!frame,\c!distance,\c!unit,\c!before,\c!bodyfont,\c!after,
+ \c!inner,\c!indenting,\c!margin,\c!align,\c!header,\c!title,
+ \c!rulecolor,\c!rulethickness,\c!split,EQ]}%
+ \copyparameters
+ [\??tt#1::#2][\??tt#1::]%
+ [\c!unit,\c!distance,\c!before,\c!bodyfont,\c!after,
+ \c!inner,\c!indenting,\c!frame,\c!split,\c!header,\c!title,
+ \c!margin,\c!align,\c!rulecolor,\c!rulethickness,EQ]%
+ \setvalue{\e!start#1::#2}{\dofinalstarttabulate[#1][#2][#3]}%
+ \setvalue{\e!start#1}{\bgroup\dosubstarttabulate[#1]}%
+ \letvalue{\??tt#1-\v!header}\empty
+ \letvalue{\??tt#1-\v!footer }\empty
+ \else\ifsecondargument
+ \definetabulate[#1][][#2]%
+ \else
+ \definetabulate[#1][][|l|p|]%
+ \fi\fi}
+
+\let\tabulateheadcontent\empty
+\let\tabulatetailcontent\empty
+
+\newconditional\tabulatesomeamble
+
+\def\checkfulltabulatecontent % - needed, else confusion with \c!header
+ {\ifundefined{\??tt\currenttabulate-\v!header}%
+ \let\tabulateheadcontent\empty
+ \else
+ \def\tabulateheadcontent
+ {\TABLEnoalign{\global\settrue\tabulatesomeamble}%
+ \csname\??tt\currenttabulate-\v!header\endcsname
+ \TABLEnoalign{\global\setfalse\tabulatesomeamble}}%
+ \fi
+ \ifundefined{\??tt\currenttabulate-\v!footer}%
+ \let\tabulatetailcontent\empty
+ \else
+ \def\tabulatetailcontent
+ {\TABLEnoalign{\global\settrue\tabulatesomeamble}%
+ \csname\??tt\currenttabulate-\v!footer\endcsname
+ \TABLEnoalign{\global\setfalse\tabulatesomeamble}}%
+ \fi}
+
+% \def\fulltabulatecontent
+% {\tabulateheadcontent
+% \tabulatecontent
+% \tabulatetailcontent}
+
+\def\fulltabulatecontent
+ {\tabulateheadcontent
+ \tabulatecontent
+ \tabulatetailcontent
+ \removefunnytabulateline}
+
+\def\removefunnytabulateline
+ {\ifhmode
+ \strut\crcr
+ \TABLEnoalign{\kern-\lineheight}%
+ \fi}
+
+\setvalue{\e!start\v!tabulatehead}%
+ {\dosingleempty\dostartstarttabulatehead}
+
+\def\dostartstarttabulatehead[#1]%
+ {\processcontent{\e!stop\v!tabulatehead}\next
+ {\letvalue{\??tt\iffirstargument#1\else\v!tabulate\fi::-\v!header}\next}}
+
+\setvalue{\e!start\v!tabulatetail}%
+ {\dosingleempty\dostartstarttabulatetail}
+
+\def\dostartstarttabulatetail[#1]%
+ {\processcontent{\e!stop\v!tabulatetail}\next
+ {\letvalue{\??tt\iffirstargument#1\else\v!tabulate\fi::-\v!footer}\next}}
+
+\def\dosubstarttabulate
+ {\dodoubleempty\dodosubstarttabulate}
+
+\def\dodosubstarttabulate[#1][#2]%
+ {\getvalue{\e!start#1::\ifundefined{\e!start#1::#2}\else#2\fi}}
+
+\setvalue{\e!start\v!tabulate}%
+ {\bgroup\dodoubleempty\donormalstarttabulate}
+
+\def\donormalstarttabulate[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??tt\v!tabulate::][#2]%
+ \fi
+ \iffirstargument
+ \def\next{\dofinalstarttabulate[\v!tabulate][][#1]}%
+ \else
+ \def\next{\dofinalstarttabulate[\v!tabulate][][|l|p|]}%
+ \fi
+ \next}
+
+% The much neede hook:
+
+\newtoks\everytabulate
+
+% An example of its usage:
+
+\appendtoks \optimizeverbatimfalse \to \everytabulate
+
+% A status variable:
+
+\chardef\tabulatepass=0
+
+\def\dofinalstarttabulate[#1][#2][#3]% identifier sub preamble
+ {\edef\currenttabulate{#1::#2}%
+ \ifinsidefloat \else
+ \whitespace
+ \getvalue{\??tt\currenttabulate\c!before}%
+ \fi
+ \bgroup
+ \resetcharacteralign
+ % todo: spacing around tabulate when bodyfont is set
+ % expansion en test needed ?
+ \doifelsevalue{\??tt\currenttabulate\c!split}\v!yes
+ \splittabulatetrue\splittabulatefalse
+ \doifvaluesomething{\??tt\currenttabulate\c!bodyfont}
+ {\expanded{\switchtobodyfont
+ [\getvalue{\??tt\currenttabulate\c!bodyfont}]}}%
+ \postponefootnotes % new, to be tested / will be configurable
+ \chardef\tabulatepass\plusone
+ \widowpenalty\zerocount % otherwise lines are not broken
+ \clubpenalty \zerocount % but overlap in funny ways
+ \the\everytabulate
+ \getvalue{\??tt\currenttabulate\c!inner}%
+ \scratchdimen\leftskip
+ \advance\scratchdimen \hangindent
+ \doifvalue{\??tt\currenttabulate\c!indenting}\v!yes
+ {\advance\scratchdimen \parindent}% \ctxparindent
+ \edef\tabulateindent{\the\scratchdimen}%
+ \!!toksb\emptytoks
+ \def\dorepeat*##1##2%
+ {\dorecurse{##1}{\appendtoks##2\to\!!toksb}\do}%
+ \def\do
+ {\futurelet\next\dodo}%
+ \def\dodo % \@EAEAEA gebruiken
+ {\ifx\next\relax
+ % exit
+ \else\ifx*\next
+ \let\next\dorepeat
+ \else\ifx\bgroup\next
+ \let\next\dododo
+ \else
+ \let\next\dodododo
+ \fi\fi\fi
+ \next}%
+ \def\dododo##1%
+ {\appendtoks{##1}\to\!!toksb\do}%
+ \def\dodododo##1%
+ {\appendtoks##1\to\!!toksb\do}%
+ \globallet\tabulatecolumn\!!zerocount
+ \do#3\relax
+ \processcontent
+ {\e!stop#1}% \currenttabulate}
+ \tabulatecontent
+ {\@EA\processtabulate\@EA[\the\!!toksb]}}
+
+\chardef\tabulatetype=0
+
+% 0 = NC column next EQ equal column
+% 1 = RC column raw RQ equal column raw
+% 2 = HC column hook HQ equal column hook
+
+\newif\iftabulatefirstflushed
+
+\def\tabulateEQ
+ {\iftabulatefirstflushed\else\getvalue{\??tt\currenttabulate EQ}\fi
+ \global\tabulateequalfalse}
+
+% \def\tabulatenormalcolumn#1%
+% {&\iftabulateequal\tabulateEQ\fi&\global\chardef\tabulatetype#1&}
+%
+% \def\tabulateequalcolumn#1%
+% {&\tabulateEQ&\global\chardef\tabulatetype#1&}
+%
+% however, \unskip en \ignorespaces permit usage in complex XML/\starttabulate
+
+\def\tabulatenormalcolumn#1%
+ {\unskip&\iftabulateequal\tabulateEQ\fi&\global\chardef\tabulatetype#1&%
+ \ignorespaces}
+
+\def\tabulateequalcolumn#1%
+ {\unskip&\tabulateEQ&\global\chardef\tabulatetype#1&%
+ \ignorespaces}
+
+\def\tabulateautocolumn
+ {\tabulatenormalcolumn\zerocount
+ \ifnum\tabulatecolumn>\tabulatecolumns\relax
+ \expandafter\NR
+ \else
+ \expandafter\ignorespaces % interferes with the more tricky hooks
+ \fi}
+
+\def\setquicktabulate#1% see \startlegend \startgiven
+ {\let#1\tabulateautocolumn
+ \let\\\tabulateautocolumn}
+
+%\def\dotabulateruleseperator
+% {\vskip\strutdp}
+
+\def\dotabulateruleseperator
+ {\bgroup
+ \let\factor\!!plusone
+ \scratchskip\strutdp
+ \ExpandFirstAfter\processallactionsinset
+ [\getvalue{\??tt\currenttabulate\c!distance}]
+ [ \v!blank=>\scratchskip\bigskipamount,
+ \v!depth=>\scratchskip\strutdp,
+ \v!small=>\def\factor{.25},
+ \v!medium=>\def\factor{.5},
+ \v!big=>,
+ \v!none=>\scratchskip\zeropoint\def\factor{0},
+ \v!grid=>\scratchskip\zeropoint\def\factor{0},
+ \s!unknown=>\scratchskip\commalistelement]%
+ \scratchdimen\factor\scratchskip
+ \ifconditional\tabulatesomeamble\kern\else\vskip\fi\scratchdimen % new
+ \egroup}
+
+% \def\dotabulaterule
+% {\color
+% [\getvalue{\??tt\currenttabulate\c!lijnkleur}]
+% {\scratchdimen\getvalue{\??tt\currenttabulate\c!lijndikte}%
+% \hrule\!!height.5\scratchdimen\!!depth.5\scratchdimen\relax
+% \doifvalue{\??tt\currenttabulate\c!afstand}\v!grid
+% {\kern-\scratchdimen}}} % experimental tm-prikkels
+
+\def\dodotabulaterule#1%
+ {\color
+ [\getvalue{\??tt\currenttabulate\c!rulecolor}]
+ {\scratchdimen\getvalue{\??tt\currenttabulate\c!rulethickness}#1}}
+
+\def\dotabulaterule
+ {\dodotabulaterule
+ {\hrule\!!height.5\scratchdimen\!!depth.5\scratchdimen\relax
+ \doifvalue{\??tt\currenttabulate\c!distance}\v!grid
+ {\kern-\scratchdimen}}} % experimental tm-prikkels
+
+\def\dotabulatelinerule
+ {\multispan\totaltabulatecolumns % \multispan is a plain macro
+ % for the moment this one
+ \strut\hskip\getvalue{\??tt\currenttabulate\c!margin}%
+ % neg values are ok !
+ \hskip\tabulateindent % new august 2003
+ \dodotabulaterule
+ {\!!heighta.5\lineheight
+ \advance\!!heighta-\strutdepth
+ \!!deptha-\!!heighta
+ \advance\!!deptha\scratchdimen
+ \leaders\hrule\!!height\!!heighta\!!depth\!!deptha\hfill}%
+ \cr}
+
+%D When set to true, no (less) break optimization is done.
+
+\newif\iftolerantTABLEbreak
+
+%D The main processing macro is large but splitting it up
+%D would make things less clear.
+
+\def\doregistertabulateparoptions
+ {\iftrialtypesetting \else
+ \registerparoptions
+ \ifinsidefloat
+ % that is, an unbreakable one
+ \global\let\registertabulateparoptions\empty
+ \else
+ % unsafe in crossing pages, at each b...
+ % \global\let\registertabulateparoptions\empty
+ \fi
+ \fi}
+
+\appendtoks
+ \global\let\registertabulateparoptions\doregistertabulateparoptions
+\to \everytabulate
+
+\newtoks\everytabulaterow
+
+\appendtoks
+ \registertabulateparoptions
+\to \everytabulaterow
+
+\def\flushtabulateindent
+ {\ifnum\tabulatecolumn=\zerocount
+ \hbox to \tabulateindent
+ {% we now have a local hsize, and since we want to
+ % register positional info (i.e. real hsizes) we
+ % need to reconstitute the original hsize
+ \advance\hsize\tabulateindent
+ % this is indeed rather messy and took a few hours
+ % to dis/uncover
+ \the\everytabulaterow
+ \hss}%
+ \fi}
+
+\def\totaltabulatecolumns{0}
+
+\def\handletabulatedigits{\digits}
+
+%D Beware, we cannot use \type {\unexpanded} on \type {\HL}
+%D cum suis, since \TEX's hard coded noalign lookahead fails
+%D on it! I mistakenly added this for a while.
+
+\chardef\tabulaterepeathead\zerocount
+
+\def\processtabulate[|#1|]% in the process of optimizing
+ {\tabulateunit\getvalue{\??tt\currenttabulate\c!unit}%
+ \checkfulltabulatecontent
+ \globallet\tabulateruledepth \!!zeropoint
+ \globallet\tabulateruleheight\!!zeropoint
+ \ExpandFirstAfter\processaction % use \setalignmentswitch instead
+ [\getvalue{\??tt\currenttabulate\c!align}]
+ [\v!normal=>\def\@@tabulatealign{0},% = default value
+ \v!right=>\def\@@tabulatealign{1},% chardefs gebruiken
+ \v!left=>\def\@@tabulatealign{2},%
+ \v!middle=>\def\@@tabulatealign{3},%
+ \s!default=>\def\@@tabulatealign{0},%
+ \s!unknown=>\def\@@tabulatealign{0}]%
+ \let\pretabskip\!!zeropoint
+ \def\postabskip{.5\tabulateunit}%
+ \global\tabulatecolumns\zerocount
+ \global\nofautotabulate\zerocount
+ \doglobal\newcounter\noftabulatelines
+ \let\totalnoftabulatelines\noftabulatelines
+ \let\minusnoftabulatelines\noftabulatelines
+ \global\tabulatepwidth\zeropoint
+ \global\tabulateequalfalse
+ \resettabulatepheight
+ \ifinsidefloat \else
+ \processaction
+ [\getvalue{\??tt\currenttabulate\c!header}]
+ [\v!repeat=>\chardef\tabulaterepeathead\plusone,
+ \v!text=>\chardef\tabulaterepeathead\plustwo]%
+ \fi
+ \unexpanded \def\NC{\tabulatenormalcolumn0}%
+ \unexpanded \def\RC{\tabulatenormalcolumn1}%
+ \unexpanded \def\HC{\tabulatenormalcolumn2}%
+ \unexpanded \def\EQ{\tabulateequalcolumn 0}%
+ \unexpanded \def\RQ{\tabulateequalcolumn 1}%
+ \unexpanded \def\HQ{\tabulateequalcolumn 2}%
+ \unexpanded \def\NG{\NC\handletabulatecharalign}%
+ \unexpanded \def\NN{\NC\handletabulatedigits}% new, undocumented, test first
+ \unexpanded \def\ND{\NC\handletabulatedigits}% same, for old times sake
+ \def\tabulaterule{\HR}% a rule with lineheight
+ \def\tabulateline{\HL}% just a spaced rule
+ \def\tabulateautorule{\doHR\plusone}%
+ \def\tabulateautoline{\doHL\plusone}%
+ \def\HR{\doHR\zerocount}
+ \def\HL{\doHL\zerocount}
+ \unexpanded \def\NR % next row
+ {\doglobal\increment\noftabulatelines
+ \global\tabulatefirstflushedfalse
+ \global\tabulateequalfalse
+ \globallet\tabulatecolumn\!!zerocount
+ \resettabulatepheight
+ \unskip\unskip\crcr\flushtabulated
+ \TABLEnoalign
+ {\iftolerantTABLEbreak\else
+ \ifconditional\tabulatesomeamble \ifcase\tabulaterepeathead \else
+ \allowbreak
+ \fi \fi
+ \ifnum\noftabulatelines=\plusone
+ \dotabulatenobreak
+ \else\ifnum\noftabulatelines=\minusnoftabulatelines
+ \ifnum\tabulatemaxplines<\plustwo
+ \dotabulatenobreak
+ \else
+ \allowbreak % needed with pbreak prevention
+ \fi
+ \else
+ \allowbreak % needed with pbreak prevention
+ \fi\fi
+ \fi
+ \global\tabulatefirstflushedfalse}}%
+ \let\HL\empty % not needed
+ \let\SR\NR \let\AR\NR
+ \let\FL\empty \let\FR\NR
+ \let\ML\empty \let\MR\NR
+ \let\LL\empty \let\LR\NR
+ \let\doHR\gobbleoneargument
+ \let\doHL\gobbleoneargument
+ \global\let\flushtabulated\empty
+ \let\savedbar|\let|\nexttabulate
+ \tabskip\zeropoint
+ \ifdim\getvalue{\??tt\currenttabulate\c!margin}>\zeropoint
+ \!!toksa{&\flushtabulateindent\strut##%
+ \tabskip\getvalue{\??tt\currenttabulate\c!margin}\strut
+ &##\tabskip\zeropoint}%
+ \else
+ \!!toksa{&\flushtabulateindent\strut##%
+ &##\tabskip\zeropoint}%
+ \fi
+ \tabulatewidth\zeropoint
+ |#1X|\relax
+ \scratchcounter\tabulatecolumns
+ \multiply\scratchcounter3%
+ \advance\scratchcounter4%
+ \edef\totaltabulatecolumns{\the\scratchcounter}%
+ \tabulatewidth\zeropoint
+ % \dorecurse\tabulatecolumns % can be made faster
+ % {\doifundefinedelse{\@@tabbox@@\recurselevel}
+ % {\expandafter\newbox\csname\@@tabbox@@\recurselevel\endcsname}%
+ % {\global\setbox\csname\@@tabbox@@\recurselevel\endcsname\box\voidb@x}}%
+ \initializetableboxes\tabulatecolumns
+ \appendtoks&##\to\!!toksa
+ \appendtoks\doglobal\increment\tabulatecolumn\to\!!toksa
+ \appendtoks\NC\unskip\unskip\crcr\flushtabulated\to\tabulatedummy % no count
+ \globallet\tabulatecolumn\!!zerocount
+ \resettabulatepheight
+ \def\bskip
+ {\setbox\tabulatebox\vbox\bgroup
+ \global\let\tabulatehook\notabulatehook}%
+ \def\eskip
+ {\par\egroup
+ \global\let\tabulatehook\dotabulatehook}%
+ \def\xbskip
+ {\hbox\bgroup\vbox\bgroup
+ \global\let\tabulatehook\notabulatehook}%
+ \def\xeskip
+ {\par\egroup\egroup
+ \global\let\tabulatehook\dotabulatehook}%
+ \let|\savedbar
+ \global\let\tabulatehook\dotabulatehook
+ \doifvalue{\??tt\currenttabulate\c!indenting}\v!no\forgetparindent
+ \ifinsidefloat
+ \let\tabulateindent\!!zeropoint
+ \else
+ \setlocalhsize \hsize\localhsize
+ \fi
+ \dontcomplain
+ \forgetall % hm, interference with \forgetparindent ^^^ probably bug, to be solved
+ \setbox0\vbox % outside \if because of line counting
+ {\notesenabledfalse
+ \let\tabulateindent\!!zeropoint
+ \trialtypesettingtrue % very important
+ \@EA\halign\@EA{\the\!!toksa\crcr\fulltabulatecontent\crcr}}%
+ \ifnum\nofautotabulate>\zerocount
+ % so, even if the natural size is larger, in the final
+ % run, we force the calculated width
+ \tabulatewidth\hsize
+ \advance\tabulatewidth -\wd0
+ \advance\tabulatewidth -\tabulatepwidth
+ \ifnum\nofautotabulate>\zerocount
+ \divide\tabulatewidth \nofautotabulate\relax
+ \fi
+ \fi
+ \def\xbskip{\bskip}%
+ \def\xeskip{\eskip}%
+ \ifsplittabulate
+ \splittopskip\strutht
+ \global\let\flushtabulatedindeed\empty
+ \long\def\bbskip
+ {\ifvoid\tablebox\tabulatecolumn
+ \ifx\flushtabulatedindeed\empty\else
+ \setbox0\hbox
+ \fi
+ \fi}%
+ \def\bskip
+ {\ifvoid\tablebox\tabulatecolumn
+ \global\setbox\tablebox\tabulatecolumn\vbox
+ \bgroup
+ \global\let\tabulatehook\notabulatehook
+ \ifautotabulate\hsize\tabulatewidth\fi
+ % \begstrut % interferes with pre-\pars
+ % evt: \appendtoks\begstrut\to\everypar
+ \ignorespaces
+ \def\eskip
+ {\par\egroup
+ \settabulatepheight
+ \global\let\tabulatehook\dotabulatehook
+ \splitofftabulatebox}%
+ \else
+ \let\eskip\empty
+ \dontcomplain
+ \global\let\tabulatehook\dotabulatehook
+ \expandafter\splitofftabulatebox
+ \fi}%
+ \gdef\flushtabulated
+ {\TABLEnoalign % noalign % no interference !
+ {\global\let\flushtabulatedindeed\empty
+ \globallet\tabulatecolumn\!!zerocount
+ \handletabulatepbreak
+ \dorecurse\tabulatecolumns % was: \noftabcolumns
+ {\ifvoid\tablebox\recurselevel\else
+ \gdef\flushtabulatedindeed{\the\tabulatedummy}%
+ \fi}%
+ \global\tabulatefirstflushedtrue}%
+ \flushtabulatedindeed}%
+ \else
+ % tabhook op alles ?
+ \def\bskip
+ {\vtop\bgroup
+ \ifautotabulate\hsize\tabulatewidth\fi
+ % \begstrut % interferes with pre-\pars
+ % evt: \appendtoks\begstrut\to\everypar
+ \ignorespaces}%
+ \def\eskip % vertical strut added august 2003
+ {\par\verticalstrut\vskip-\struttotal\egroup}%
+ \fi
+ \let\totalnoftabulatelines\noftabulatelines
+ \let\minusnoftabulatelines\noftabulatelines
+ \decrement\minusnoftabulatelines
+ \doglobal\newcounter\noftabulatelines
+% not satisfying
+% \def\doHL##1%
+% {\TABLEnoalign
+% {\ifnum\noftabulatelines=\zerocount
+% \ifcase##1%
+% \@EAEAEA\ML
+% \or
+% \@EAEAEA\FL
+% \fi
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \ifcase##1%
+% \@EA\@EAEAEA\@EA\ML
+% \or
+% \@EA\@EAEAEA\@EA\LL
+% \fi
+% \else
+% \@EAEAEA\ML
+% \fi\fi}}%
+% not good either
+% \def\doHL##1%
+% {\TABLEnoalign
+% {\csname\ifnum\noftabulatelines=\zerocount
+% \ifcase##1M\or F\fi
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \ifcase##1M\or L\fi
+% \else
+% M%
+% \fi\fi L\endcsname}}%
+% ok
+% \def\doHL##1% ##1 ignored
+% {\TABLEnoalign
+% {\ifnum\noftabulatelines=\zerocount
+% \@EA\FL
+% \else\ifnum\noftabulatelines=\totalnoftabulatelines
+% \@EAEAEA\LL
+% \else
+% \@EAEAEA\ML
+% \fi\fi}}%
+% more fun
+ \def\doHL##1% ##1 ignored
+ {\TABLEnoalign
+ {\csname
+ \ifnum\noftabulatelines=\zerocount F\else
+ \ifnum\noftabulatelines=\totalnoftabulatelines L\else
+ M\fi\fi
+ L\endcsname}}%
+ \def\doHR##1% horizontal rule line (break untested)
+ {\TABLEnoalign
+ {\globallet\TABLEautoline\dotabulatelinerule
+ \ifcase##1\or
+ \ifnum\noftabulatelines=\zerocount
+ \gdef\TABLEautoline{\TABLEnoalign{}}%
+ \else\ifnum\noftabulatelines=\totalnoftabulatelines
+ \gdef\TABLEautoline{\TABLEnoalign{}}%
+ \fi\fi
+ \fi
+ \dotabulatenobreak}%
+ \TABLEautoline
+ \TABLEnoalign
+ {\nobreak
+ \ifx\TABLEautoline\dotabulatelinerule\kern-\lineheight\fi
+ \ifnum\noftabulatelines=\totalnoftabulatelines
+ \@EA\dotabulatenobreak
+ \else
+ \@EA\allowbreak
+ \fi}%
+ \TABLEautoline
+ \TABLEnoalign
+ {\dotabulatenobreak}}%
+ \doifelsevalue{\??tt\currenttabulate\c!rule}\v!line
+ {\let\HL \HR
+ \let\tabulateautoline\tabulateautorule
+ \let\tabulateline \tabulaterule}%
+ {\def\HL{\doHL\zerocount}}%
+ \def\tablebaselinecorrection
+ {\def\dobaselinecorrection
+ {\vskip-\prevdepth
+ \vskip\strutdp
+ \vskip\strutdp}%
+ \baselinecorrection}%
+ \def\FL{\TABLEnoalign
+ {\ifinsidefloat\else
+ \doifemptyvalue{\??tt\currenttabulate\c!before} % no expansion
+ {\tablebaselinecorrection}%
+ \fi
+ \dotabulaterule
+ \dotabulatenobreak
+ \dotabulateruleseperator
+ \prevdepth\strutdp
+ \dotabulatenobreak}}%
+ \def\ML{\TABLEnoalign
+ {\dotabulateruleseperator
+ \dotabulaterule
+ \ifnum\noftabulatelines>\plusone
+ \ifnum\noftabulatelines<\minusnoftabulatelines
+ \vskip\topskip\allowbreak\vskip-\topskip
+ \vskip-\getvalue{\??tt\currenttabulate\c!rulethickness}%
+ \dotabulaterule
+ \fi
+ \fi
+ \dotabulateruleseperator}}%
+ \def\LL{\TABLEnoalign
+ {\dotabulatenobreak
+ \dotabulateruleseperator
+ \dotabulatenobreak
+ \dotabulaterule
+ \ifinsidefloat\else
+ \doifemptyvalue{\??tt\currenttabulate\c!after} % no expansion
+ {\vskip\strutdp
+ \verticalstrut
+ \vskip-\struttotal}%
+ \fi}}%
+ \chardef\tabulatepass\plustwo
+ %
+ \ifcase\tabulaterepeathead
+ \startframedcontent[\getvalue{\??tt\currenttabulate\c!frame}]%
+ \else
+ \setbox\tabulatebox\vbox \bgroup
+ \fi
+ %
+ \@EA\halign\@EA{\the\!!toksa\crcr\fulltabulatecontent\crcr}%
+ \prevdepth\strutdp % nog eens beter, temporary hack
+ \doifvalue{\??tt\currenttabulate\c!distance}\v!grid
+ {\vskip-\strutdp}% experimental tm-prikkels
+ %
+ \ifcase\tabulaterepeathead
+ \stopframedcontent
+ \else
+ \egroup \splittabulatebox\tabulatebox
+ \fi
+ %
+ \egroup
+ \ifinsidefloat \else
+ \getvalue{\??tt\currenttabulate\c!after}%
+ \fi
+ \egroup}
+
+% \setuptabulate[split=yes,header=text,title=Vervolg van Tabel]
+%
+% % \starttabulatehead
+% % \NC test \NC hans\NC \NR
+% % \stoptabulatehead
+%
+% \starttabulate
+% \NC test \NC \input tufte \relax \NC \NR
+% \NC test \NC \input knuth \relax \NC \NR
+% \NC test \NC \input knuth \relax \NC \NR
+% \NC test \NC \input tufte \relax \NC \NR
+% \NC test \NC \input tufte \relax \NC \NR
+% \NC test \NC \input tufte \relax \NC \NR
+% \stoptabulate
+
+\def\splittabulatebox#1% #1 <> 0/2 / derived from the one in core-ntb.tex
+ {\ifinsidefloat
+ \unvbox#1%
+ \else
+ \ifcase\tabulaterepeathead\or
+ \setbox2\copy#1%
+ \setbox2\vsplit2 to \lineheight
+ \setbox2\vbox{\unvbox2}%
+ \fi
+ \doloop
+ {\setbox0\vsplit#1 to \onepoint % \lineheight
+ \ifdim\pagegoal<\maxdimen
+ \donetrue
+ \else\ifdim\pagetotal=\zeropoint
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \setbox0\vbox{\unvbox0}%
+ \dimen0\pagetotal
+ \advance\dimen0\dp0
+ \advance\dimen0\ht0
+ \ifdim\dimen0>\pagegoal
+ \bgroup \page \egroup % make sure that local vars are kept
+ \ifcase\tabulaterepeathead\or
+ \unvcopy2
+ \or
+ \hbox{\strut\getvalue{\??tt\currenttabulate\c!title}}%
+ \fi
+ \fi
+ \fi
+ % test this on icare checklists / quite hacky ! ! !
+ \ifdim\ht0>\getvalue{\??tt\currenttabulate\c!rulethickness}\else
+ \kern-2\ht0 % brrrr
+ \fi
+ %
+ \unvbox0
+ \allowbreak
+ \ifvoid#1 \exitloop \fi}%
+ \fi}
+
+%D \starttyping
+%D \setuptabulate[split=no,rule=line]
+%D
+%D \starttabulate
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \NC tufte \NC \input tufte \NC \NR \tabulateautorule
+%D \stoptabulate
+%D \stoptyping
+
+% \starttabulatie[|mc|]
+% \NC \digits{100.000,00} \NC\NR
+% \NC \digits{@10.000,00} \NC\NR
+% \NC \digits{@@@.100,00} \NC\NR
+% \NC \digits{@@@.@10,@@} \NC\NR
+% \NC \digits{@@@.@@1,@@} \NC\NR
+% \stoptabulatie
+%
+% \starttabulatie[|mc|]
+% \ND 100.000,00 \NC\NR
+% \ND @10.000,00 \NC\NR
+% \ND @@@.100,00 \NC\NR
+% \ND @@@.@10,@@ \NC\NR
+% \ND @@@.@@1,@@ \NC\NR
+% \stoptabulatie
+%
+% \starttabulatie[|c|]
+% \ND $100.000,00$ \NC\NR
+% \ND $@10.000,00$ \NC\NR
+% \ND $@@@.100,00$ \NC\NR
+% \ND $@@@.@10,@@$ \NC\NR
+% \ND $@@@.@@1,@@$ \NC\NR
+% \stoptabulatie
+%
+% \starttabulatie[|c|]
+% \NC $\digits 100.000,00 $ \NC\NR
+% \NC $\digits @10.000,00 $ \NC\NR
+% \NC $\digits @@@.100,00 $ \NC\NR
+% \NC $\digits @@@.@10,@@ $ \NC\NR
+% \NC $\digits @@@.@@1,@@ $ \NC\NR
+% \stoptabulatie
+%
+% \starttabulatie[|c|]
+% \NC \digits $100.000,00$ \NC\NR
+% \NC \digits $@10.000,00$ \NC\NR
+% \NC \digits $@@@.100,00$ \NC\NR
+% \NC \digits $@@@.@10,@@$ \NC\NR
+% \NC \digits $@@@.@@1,@@$ \NC\NR
+% \stoptabulatie
+
+\def\setuptabulate
+ {\dotripleempty\dosetuptabulate}
+
+\def\dosetuptabulate[#1][#2][#3]%
+ {\ifthirdargument
+ \getparameters[\??tt#1::#2][#3]%
+ \else\ifsecondargument
+ \getparameters[\??tt#1::][#2]%
+ \else
+ \getparameters[\??tt\v!tabulate::][#1]%
+ \fi\fi}
+
+\setuptabulate
+ [\c!unit=1em,
+ EQ={:},
+ \c!frame=\v!off,
+ \c!bodyfont=,
+ \c!rule=\v!normal,
+ \c!rulecolor=,
+ \c!rulethickness=\linewidth,
+ \c!inner=,
+ \c!before=\blank,
+ \c!after=\blank,
+ \c!distance={\v!depth,\v!medium},
+ \c!align=\v!normal,
+ \c!margin=\!!zeropoint,
+ \c!split=\v!yes,
+ \c!header=\v!yes,
+ \c!title=,
+ \c!indenting=\v!no]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-uti.tex b/Master/texmf-dist/tex/context/base/core-uti.tex
new file mode 100644
index 00000000000..a8dd993f6ca
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-uti.tex
@@ -0,0 +1,641 @@
+%D \module
+%D [ file=core-uti,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Utility File Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Utility File Handling}
+
+\unprotect
+
+% todo : safe lan etc too
+% todo : load all commands at once (tok)
+% todo : merge status info patch into tui file (language, encoding, etc),
+
+% Utility-file
+%
+% De onderstaande macro's ondersteunen het gebruik van de
+% zogeheten utility-file. Alle extern onder te brengen
+% informatie wordt opgeslagen in de file \jobname.tui, tenzij
+% er selectief pagina's worden gezet. In dat geval wordt de
+% file \jobname.tmp gebruikt. Informatie wordt ingelezen uit
+% de file \jobname.tuo, welke door TeXUtil wordt aangemaakt.
+
+\edef\utilityversion{1998.07.07} % was: 1996.03.15 % status variables
+\edef\utilityversion{1998.12.20} % was: 1998.07.07 % index attributes
+\edef\utilityversion{2003.07.19} % was: 1998.12.20 % object pages
+
+% Bepaalde commando's worden als string weggeschreven. Deze
+% zijn aan het eind van deze file gedefinieerd.
+
+% Om een opbouw van spaties te voorkomen (???) moet ^^M een
+% andere betekenis krijgen:
+%
+% \catcode`\^^M=14 (comment)
+%
+% read file
+%
+% \catcode`\^^M=5 (end of line)
+
+\newwrite\uti
+\newif\ifutilitydone
+
+\def\@@utilityerrormessage
+ {\showmessage\m!systems8\empty
+ \globallet\@@utilityerrormessage\relax}
+
+\def\thisisutilityversion#1%
+ {\doifelse\utilityversion{#1}%
+ {\checksectionseparator}
+ {\@@utilityerrormessage\resetutilities\endinput}}
+
+\def\checksectionseparator % catches backward compatibility conflict
+ {\doifnot\sectionseparator:\endinput} % this dependency may go in a few years
+
+\def\dosplitofffoliopart[#1::#2::#3]{#3}
+
+\def\thisissectionseparator#1%
+ {\bgroup
+ \globallet\checksectionseparator\relax
+ \convertcommand \sectionseparator\to\asciiA
+ \convertargument #1\to\asciiB
+ \expanded{\gdef\noexpand\dosplitofffoliopart[####1\sectionseparator
+ \sectionseparator####2\sectionseparator\sectionseparator####3]{####3}}%
+ \ifx\asciiA\asciiB
+ \egroup
+ \else
+ \egroup
+ % todo \@@utilityerrormessage
+ \resetutilities
+ \endinput
+ \fi}
+
+\def\writeutility {\write\uti}
+\def\writeutilitycommand#1{\write\uti{c \string#1}}
+
+% less tokens
+%
+% \def\immediatewriteutility {\immediate\writeutility}
+% \def\immediatewriteutilitycommand{\immediate\writeutilitycommand}
+%
+% more flexible (for overloading)
+
+\def\immediatewriteutility {\immediate\write\uti}
+\def\immediatewriteutilitycommand#1{\immediate\write\uti{c \string#1}}
+
+% as in:
+
+\def\cwriteutility#1%
+ {\write\uti{\noexpand\checkedutility{\number\nofshipouts}{#1}}}
+
+\def\cwriteutilitycommand#1%
+ {\write\uti{\noexpand\checkedutility{\number\nofshipouts}{c \string#1}}}
+
+% \def\cimmediatewriteutility
+% {\immediate\write\uti}
+%
+% \def\cimmediatewriteutilitycommand#1%
+% {\immediate\write\uti{c \string#1}}
+
+\let\checkedutility\secondoftwoarguments
+
+\def\docheckedutility#1#2{\ifnum#1=\nofshipouts#2\else\letterpercent\fi}
+
+\prependtoks
+ \let\checkedutility\docheckedutility
+\to \everybeforeshipout
+
+\edef\testbytesequence{\rawcharacter{7}\rawcharacter{27}\rawcharacter{227}}
+
+\def\thisisbytesequence#1%
+ {\ifx\testbytesequence\empty\else
+ \convertcommand\testbytesequence\to\testbytesequence
+ \convertargument#1\to\ascii
+ \ifx\testbytesequence\ascii \else
+ \writestatus\m!systems{possible problem with 8 bit output}%
+ \fi
+ \fi
+ \global\let\thisisbytesequence\gobbleoneargument}
+
+% Better use marks.
+
+\def\checkutilities
+ {\let\writeutility \cwriteutility
+ \let\writeutilitycommand \cwriteutilitycommand
+ %\let\immediatewriteutility \cimmediatewriteutility
+ %\let\immediatewriteutilitycommand\cimmediatewriteutilitycommand
+ \let\checkutilities \relax}
+
+% this trickery is used in s-pre-50
+
+\def\openutilities
+ {\immediate\openout\uti\jobname.\f!inputextension
+ \immediatewriteutilitycommand{\thisissectionseparator{\sectionseparator}}% for the moment
+ \immediatewriteutilitycommand{\thisisutilityversion {\utilityversion }}% in this order
+ \immediatewriteutilitycommand{\thisisbytesequence {\testbytesequence}}}
+
+\def\closeutilities
+ {\immediate\closeout\uti % niet echt nodig
+ \reportutilityproblems
+ % should be a message :
+ \let\writeutilitycommand \gobbleoneargument
+ \let\writeutility \gobbleoneargument
+ \let\immediatewriteutilitycommand\gobbleoneargument
+ \let\immediatewriteutility \gobbleoneargument}
+
+\def\reopenutilities
+ {\immediate\closeout\uti
+ \openutilities}
+
+\def\abortutilitygeneration
+ {\immediatewriteutilitycommand\utilitygenerationaborted
+ \immediatewriteutility{q {quit}}}
+
+\def\utilitygenerationaborted
+ {\showmessage\m!systems{21}\empty
+ \globallet\utilitygenerationaborted\endinput
+ \gdef\reportutilityproblems{\showmessage\m!systems{22}\empty}%
+ \endinput}
+
+\def\savecurrentvalue#1#2%
+ {\immediatewriteutilitycommand{\initializevariable\string#1{#2}}}
+
+\let\initializevariable\gdef
+
+\def\disableinitializevariables
+ {\globallet\initializevariable\gobbletwoarguments}
+
+\let\reportutilityproblems=\relax
+
+\let\utilityresetlist=\empty
+
+% the original
+%
+% \def\addutilityreset#1%
+% {\addtocommalist{\s!reset#1}\utilityresetlist}
+%
+% \def\resetutilities%
+% {\processcommacommand[\utilityresetlist]\getvalue}
+%
+% the more efficient
+%
+% \def\addutilityreset#1%
+% {\addtocommalist{#1}\utilityresetlist}
+%
+% \def\doresetutility#1%
+% {\getvalue{\s!reset#1}}
+%
+% \def\resetutilities%
+% {\processcommacommand[\utilityresetlist]\doresetutility}
+%
+% the fastest, about two times, but who cares, since this
+% can be neglected
+
+\newtoks\utilityresetlist
+
+\def\addutilityreset#1%
+ {\@EA\appendtoks\csname\s!reset#1\endcsname\to\utilityresetlist}
+
+\def\resetutilities
+ {\the\utilityresetlist}
+
+% #1=type
+% #2=file
+% #3=melding
+
+% #4=voor
+% #5=na
+
+% Er wordt gegroepeerd. Als binnen een lijst (bijvoorbeeld) de
+% \leftskip is aangepast, maar nog geen \par is gegeven, dan
+% geldt buiten de groep de oude \leftskip. Aan #5 kan dan
+% ook \par worden meegegeven om de paragraaf af te sluiten.
+
+\newif\ifdoinpututilities
+\newif\ifunprotectutilities % voor't geval er \v!xxxxxx's zijn
+
+% no longer needed, since texutil is now multi platform
+%
+% \def\utilitycheckmessage
+% {\showmessage\m!systems{12}{}%
+% \globallet\utilitycheckmessage=\relax}
+%
+% \def\saveutilityline#1 #2\txen% tricky maar ok, want achter \command
+% {\if #1c% commands % in \ascii staat een spatie; #1 kan
+% \write\scratchwrite{#2}% % \par in stringvorm zijn (eof)!
+% \else\if#1s% synoniems
+% \utilitycheckmessage
+% \else\if#1r% registers
+% \utilitycheckmessage
+% \fi\fi\fi}
+%
+% \def\checkutilityfile
+% {\doiflocfileelse{\jobname.\f!outputextension}
+% {}
+% {\doiflocfileelse{\jobname.\f!inputextension}
+% {\bgroup
+% \showmessage\m!systems{11}{}%
+% \openout\scratchwrite=\jobname.\f!outputextension
+% \openlocin\scratchread{\jobname.\f!inputextension}%
+% \def\doprocessline%
+% {\ifeof\scratchread
+% \def\doprocessline{\closein\scratchread}%
+% \else
+% \read\scratchread to \ascii
+% \convertcommand\ascii\to\ascii
+% \expandafter\saveutilityline\ascii\txen
+% \fi
+% \doprocessline}%
+% \doprocessline
+% \closeout\scratchwrite
+% \egroup}
+% {}}}
+
+\def\currentutilityfilename{\jobname}
+
+\long\def\doutilities#1#2#3#4#5% % introduceren in utility file
+ {\restorecatcodes
+ \resetutilities
+ % more than one utility thing can be handled in one pass,
+ % for instance lists, so we process ##1 as list
+ \def\douticommand##1{\csname\s!set##1\endcsname}%
+ \processcommacommand[#1]\douticommand
+ \begingroup
+ \def\currentutilityfilename{#2}%
+ \notesenabledfalse
+ \doinpututilitiestrue
+ \global\utilitydonefalse
+ \catcode`\\=\@@escape
+ \catcode`\{=\@@begingroup
+ \catcode`\}=\@@endgroup
+ \catcode`\%=\@@comment\relax
+ \pushendofline % geeft problemen zodra andere file wordt ingelezen
+ \ifunprotectutilities % nog nodig ?
+ \unprotect
+ \fi
+ \ifnum\catcode`\@=\@@active \else
+ \catcode`\@=\@@letter % permits expanded commands with \@'s
+ \fi
+ \ifnum\catcode`\!=\@@active \else
+ \catcode`\!=\@@letter % permits multilingual constants
+ \fi
+ #4%
+ \the\everybeforeutilityread
+ \readjobfile{#2.\f!outputextension}\donothing\donothing
+ \the\everyafterutilityread
+ #5%
+ \relax
+ \ifunprotectutilities
+ \protect
+ \fi
+ \popendofline
+ \ifutilitydone\else
+ \doifsomething{#3}
+ {\showmessage\m!systems9{{#3}}%
+ \doifconcepttracing
+ {\blank
+ \type{[\currentmessagetext]}%
+ \blank}}%
+ \fi
+ \disableinitializevariables
+ \endgroup}
+
+% Saving the sort vector:
+
+\def\savesortkeys
+ {\startnointerference
+ \def\flushsortkey##1##2##3##4%
+ {\convertargument{##1}{##2}{##3}{##4}\to\ascii
+ \immediatewriteutility{k {\currentlanguage}{\currentencoding}\ascii}}%
+ \let\definesortkey\flushsortkey
+ \flushsortkeys
+ \globallet\savesortkeys\relax
+ \stopnointerference}
+
+\prependtoks \savesortkeys \to \everystarttext
+
+% Commando's ten behoeve van two-pass lists. In principe
+% kan alles in een keer worden ingelezen. Omdat de macro's
+% groeien is de kans groot dat het (main) geheugen door
+% (de)allocatie volloopt. Vandaar dat we het toch maar niet
+% doen.
+%
+% \definetwopasslist{\s!xxx}
+%
+% \gettwopassdata{\s!xxx}
+% \getfrompassdata{\s!xxx}{n} n=index (getal)
+% \findtwopassdata{\s!xxx}{tag} bijvoorbeeld {label:}
+% \iftwopassdatafound
+% \twopassdata
+%
+% \twopassentry{\s!xxx}{nr}{data} nr alleen voor testdoeleinden
+%
+% also:
+%
+% \definerawpasslist{\s!xxx}
+% \moverawpasslist\s!xxx\to\somemacro
+
+\let\alltwopasslists\empty % with 0,0 -> stepwise commalist
+\let\allrawpasslists\empty % without 0,0 -> raw commalist
+
+\newif\iftwopassdatafound
+
+\def\settwopassentries
+ {\def\twopassentry##1{\executeifdefined{@@##1\s!pass}\gobbletwoarguments}}
+
+\def\resettwopassentries
+ {\let\twopassentry\gobblethreearguments}
+
+\addutilityreset{twopassentries}
+
+\resettwopassentries
+
+% \def\twopassentry#1%
+% {\executeifdefined{@@#1\s!pass}\gobbletwoarguments}
+
+%\def\appendtwopasselement#1#2#3%
+% {%\debuggerinfo{\m!systems}{twopass data #1 - #2 = #3}%
+% \@EA\ifx\csname#1:\s!list\endcsname\empty
+% \setxvalue{#1:\s!list}{#3}%
+% \else
+% \setxvalue{#1:\s!list}{\getvalue{#1:\s!list},#3}%
+% \fi}
+
+\def\appendtwopasselement#1#2#3% can sometimes become a large list
+ {%\debuggerinfo{\m!systems}{twopass data #1 - #2 = #3}%
+ \expandafter\xdef\csname#1:\s!list\endcsname
+ {\@EA\ifx\csname#1:\s!list\endcsname\empty \else
+ \csname#1:\s!list\endcsname,\fi#3}}
+
+\def\dodefinetwopasslist#1%
+ {\doifundefined{#1:\s!list}
+ {%\debuggerinfo\m!systems{defining twopass class #1}%
+ \doglobal\addutilityreset{#1\s!pass}%
+ \setgvalue{\s!set #1\s!pass}{\dosettwopasslist {#1}}%
+ \setgvalue{\s!reset#1\s!pass}{\doresettwopasslist{#1}}%
+ \getvalue {\s!reset#1\s!pass}}}
+
+\def\dosettwopasslist#1%
+ {\letgvalue{\s!set#1\s!pass}\gobbletwoarguments
+ \setgvalue{@@#1\s!pass}{\appendtwopasselement{#1}}}
+
+\def\doresettwopasslist#1%
+ {\letgvalue{@@#1\s!pass}\gobbletwoarguments}
+
+\def\definetwopasslist#1%
+ {\expanded{\dodefinetwopasslist{#1}}%
+ \doglobal\addtocommalist{#1}\alltwopasslists}
+
+\def\definerawpasslist#1%
+ {\expanded{\dodefinetwopasslist{#1}}%
+ \doglobal\addtocommalist{#1}\allrawpasslists}
+
+\def\doloadtwopassdata#1%
+ {\doifundefined{#1:\s!list}
+ {\startnointerference
+ \letgvalueempty{#1:\s!list}%
+ \protectlabels
+ \doutilities{twopassentries,#1\s!pass}\jobname\empty\relax\relax
+ \ifx\twopassdata\empty\else
+ \appendtwopasselement{#1}{0}\twopassdata
+ \fi
+ \stopnointerference}}
+
+\def\loadtwopassdata
+ {\ifx\alltwopasslists\empty\else
+ \def\twopassdata{0,0}% end condition
+ \processcommacommand[\alltwopasslists]\doloadtwopassdata
+ \globallet\alltwopassdata\empty
+ \fi
+ \ifx\allrawpasslists\empty\else
+ \let\twopassdata\empty
+ \processcommacommand[\allrawpasslists]\doloadtwopassdata
+ \globallet\allrawpassdata\empty
+ \fi}
+
+\def\moverawpasslist#1#2% erases the old one, like the others do
+ {\loadtwopassdata
+ \@EA\let\@EA#2\csname#1:\s!list\endcsname
+ \@EA\let\csname#1:\s!list\endcsname\empty}
+
+\let\twopassdata=\empty
+
+%\def\dogettwopassdata[#1,#2]#3%
+% {\doifelse{#1}{0} % \ifcase truukje gaat fout
+% {\twopassdatafoundfalse
+% \let\twopassdata\empty}
+% {\twopassdatafoundtrue
+% \setxvalue{#3:\s!list}{#2}%
+% \edef\twopassdata{#1}}}
+
+\def\notwopassdata{0}
+
+% \def\dogettwopassdata[#1,#2]#3%
+% {\edef\twopassdata{#1}%
+% \ifx\twopassdata\notwopassdata
+% \twopassdatafoundfalse
+% \let\twopassdata\empty
+% \else
+% \twopassdatafoundtrue
+% \setxvalue{#3:\s!list}{#2}%
+% \fi}
+%
+% \def\gettwopassdata#1%
+% {\loadtwopassdata
+% %\edef\!!stringa{\csname#1:\s!list\endcsname}%
+% %\debuggerinfo{\m!systems}{twopass get #1 - \!!stringa}%
+% %\expandafter\dogettwopassdata\expandafter[\!!stringa]{#1}}
+% \expanded{\dogettwopassdata[\csname#1:\s!list\endcsname]}{#1}}
+%
+% \def\findtwopassdata#1#2%
+% {\loadtwopassdata
+% \expanded{\dofindtwopassdata{#1}{#2}}}
+%
+% \def\dofindtwopassdata#1#2%
+% {\edef\!!stringa{,\csname#1:\s!list\endcsname}%
+% %\debuggerinfo{\m!systems}{twopass find #2 - \!!stringa}%
+% \def\dodofindtwopassdata[##1,##2#2##3,##4]%
+% {\edef\twopassdata{##3}%
+% \ifx\twopassdata\empty
+% \twopassdatafoundfalse
+% \else
+% \twopassdatafoundtrue
+% \fi}%
+% \@EA\dodofindtwopassdata\@EA[\!!stringa,#2,#2,]}
+%
+% \def\getfirsttwopassdata#1%
+% {\loadtwopassdata
+% \edef\!!stringa{\getvalue{#1:\s!list}}%
+% \expandafter\dogetfirsttwopassdata\expandafter[\!!stringa]{#1}}
+%
+% \def\dogetfirsttwopassdata[#1,#2]#3%
+% {\doifelse{#1}{0}
+% {\twopassdatafoundfalse
+% \let\twopassdata\empty}
+% {\twopassdatafoundtrue
+% \edef\twopassdata{#1}}}
+%
+% \def\getlasttwopassdata#1%
+% {\loadtwopassdata
+% \edef\twopassdata{0}\twopassdatafoundfalse
+% \newcounter\noftwopassitems
+% \def\docommando##1%
+% {\doifnot{##1}{0}
+% {\increment\noftwopassitems
+% \edef\twopassdata{##1}\twopassdatafoundtrue}}%
+% \processcommacommand[\getvalue{#1:\s!list}]\docommando}
+%
+% \def\getfromtwopassdata#1#2%
+% {\loadtwopassdata
+% \getfromcommacommand[\csname#1:\s!list\endcsname][#2]%
+% \doifelsenothing{\commalistelement}
+% {\twopassdatafoundfalse
+% \let\twopassdata\empty}
+% {\twopassdatafoundtrue
+% \let\twopassdata\commalistelement}}
+
+% todo: store each entry in hash, an load all uti commands at once
+
+% todo: use \expanded
+
+\def\dogettwopassdata[#1,#2]#3#4%
+ {\edef\twopassdata{#1}%
+ \ifx\twopassdata\notwopassdata
+ \twopassdatafoundfalse
+ \let\twopassdata\empty
+ \else
+ \twopassdatafoundtrue
+ \ifcase#4\or\setxvalue{#3:\s!list}{#2}\fi
+ \fi}
+
+\def\gettwopassdata#1%
+ {\loadtwopassdata \@EAEAEA\dogettwopassdata\@EA\@EA\@EA[\csname#1:\s!list\endcsname]{#1}\plusone}
+
+\def\checktwopassdata#1%
+ {\loadtwopassdata \@EAEAEA\dogettwopassdata\@EA\@EA\@EA[\csname#1:\s!list\endcsname]{#1}\zerocount}
+
+\def\findtwopassdata#1#2%
+ {\loadtwopassdata \expanded{\dofindtwopassdata{#1}{#2}}}
+
+\def\dofindtwopassdata#1#2%
+ {\def\dodofindtwopassdata[##1,##2#2##3,##4]{\edef\twopassdata{##3}}%
+ \@EAEAEA\dodofindtwopassdata\@EA\@EA\@EA[\@EA\@EA\@EA,\csname#1:\s!list\endcsname,#2,#2,]%
+ \ifx\twopassdata\empty
+ \twopassdatafoundfalse
+ \else
+ \twopassdatafoundtrue
+ \fi}
+
+\def\getfirsttwopassdata#1%
+ {\loadtwopassdata
+ \@EAEAEA\dogetfirsttwopassdata\@EA\@EA\@EA[\csname#1:\s!list\endcsname]{#1}}
+
+\def\dogetfirsttwopassdata[#1,#2]#3%
+ {\edef\twopassdata{#1}%
+ \ifx\twopassdata\notwopassdata
+ \twopassdatafoundfalse
+ \let\twopassdata\empty
+ \else
+ \twopassdatafoundtrue
+ \fi}
+
+\def\dogetlasttwopassdata#1%
+ {\edef\nexttwopassdata{#1}%
+ \ifx\nexttwopassdata\notwopassdata \else
+ \let\twopassdata\nexttwopassdata
+ \advance\scratchcounter \plusone
+ \twopassdatafoundtrue
+ \fi}
+
+\def\getlasttwopassdata#1%
+ {\loadtwopassdata
+ \scratchcounter\zerocount
+ \@EAEAEA\rawprocesscommalist\@EA\@EA\@EA[\csname#1:\s!list\endcsname]\dogetlasttwopassdata
+ \edef\noftwopassitems{\the\scratchcounter}%
+ \iftwopassdatafound\else
+ \let\twopassdata\empty
+ \fi}
+
+\def\getfromtwopassdata#1#2%
+ {\loadtwopassdata
+ \@EAEAEA\getfromcommalist\@EA\@EA\@EA[\csname#1:\s!list\endcsname][#2]%
+ \ifx\commalistelement\empty
+ \twopassdatafoundfalse
+ \let\twopassdata\empty
+ \else
+ \twopassdatafoundtrue
+ \let\twopassdata\commalistelement
+ \fi}
+
+% Default-instellingen (verborgen)
+
+\prependtoks \resetutilities \to \everyjob
+
+% Experiment
+%
+%\installprogram{Hello World}
+
+\def\installprogram#1%
+ {\immediatewriteutility{e p {#1}}}
+
+% \writeplugindata{texutil}{{alpha}}
+% \writeplugindata{texutil}{{beta}}
+% \writeplugindata{texutil}{{gamma}}
+% \writeplugindata{texutil}{{delta}}
+%
+% \loadplugindata {plugintest}
+
+\def\immediatewriteplugindata#1#2%
+ {\immediatewriteutility{p u {#1} #2}}
+
+\def\writeplugindata#1#2%
+ {\writeutility{p u {#1} #2}}
+
+\def\loadplugindata#1%
+ {\doutilities{#1}\jobname\empty\relax\relax}
+
+% \plugincommand{\command{}{}{}}
+%
+% this way we can catch undefined commands
+
+\long\def\plugincommand#1%
+ {\doplugincommand#1\relax}
+
+\long\def\doplugincommand#1%
+ {\ifx#1\undefined
+ \expandafter\noplugincommand
+ \else
+ \expandafter#1%
+ \fi}
+
+% shorter:
+%
+% \long\def\doplugincommand#1%
+% {\ifx#1\undefined\expandafter\noplugincommand\fi#1}
+
+\long\def\noplugincommand#1\relax
+ {}
+
+% \addutilityreset{plugintest}
+%
+% \def\resetplugintest{\let\plugintest\gobbletwoarguments}
+% \def\setplugintest {\let\plugintest\writestatus}
+%
+% \installplugin
+% {plugintest}
+% {\let\plugintest\gobbletwoarguments}
+% {\let\plugintest\writestatus}
+
+\long\def\installplugin#1#2#3%
+ {\addutilityreset {#1}%
+ \long\setvalue{\s!reset#1}{#2}%
+ \long\setvalue{\s!set #1}{#3}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-var.tex b/Master/texmf-dist/tex/context/base/core-var.tex
new file mode 100644
index 00000000000..1fe89af0e39
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-var.tex
@@ -0,0 +1,306 @@
+%D \module
+%D [ file=core-var,
+%D version=1998.02.21,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Variables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Variables}
+
+\unprotect
+
+%D \macros
+%D {every...}
+%D
+%D A few every's.
+
+\newevery \everyshipout \relax
+\newevery \everybeforeshipout \relax
+\newevery \everyaftershipout \relax
+\newevery \everyfirstshipout \relax
+\newevery \everylastshipout \relax
+\newevery \everybye \relax
+\newevery \everygoodbye \relax
+\newevery \everystarttext \relax
+\newevery \everystoptext \relax
+\newevery \everyforgetall \relax
+\newevery \everybeforepagebody \relax
+\newevery \everyafterpagebody \relax \let \everypagebody \everybeforepagebody % backward compatible
+\newevery \everybeforeutilityread \relax
+\newevery \everyafterutilityread \relax
+
+%newevery \everybeforeutilitywrite \relax
+
+\newevery \everycleanupfeatures \relax \def\cleanupfeatures{\the\everycleanupfeatures}
+\newevery \everyinsidefloat \relax
+\newevery \everyheadstart \relax
+\newevery \everyendoftextbody \relax
+\newevery \everybeginofpar \relax
+\newevery \everyendofpar \relax
+\newevery \everylistentry \relax
+
+%D For shared \type {\everymath} and \type {\everydisplay}:
+
+\newevery \everymathematics \relax
+
+\prependtoks \the\everymathematics \to \everymath
+\prependtoks \the\everymathematics \to \everydisplay
+
+% \newevery \everyparflush \relax % collected nodes
+
+%D Experimental (used in xml <p> .. </p>
+
+\def\bpar{\the\everybeginofpar\ignorespaces} % may interfere with \everypar
+\def\epar{\ifhmode\removeunwantedspaces\the\everyendofpar\fi} % test prevents problems with \bpar\epar
+
+%D More generic (used to be pushcolor etc)
+
+\newtoks\everypushproperties
+\newtoks\everypopproperties
+\newtoks\everypopsplitproperties
+
+\newtoks\everystarttextproperties
+\newtoks\everystoptextproperties
+
+\def\pushproperties {\the\everypushproperties}
+\def\popproperties {\the\everypopproperties}
+\def\popsplitproperties {\the\everypopsplitproperties}
+
+\def\starttextproperties{\the\everystarttextproperties}
+\def\stoptextproperties {\the\everystoptextproperties}
+
+%D \macros
+%D {defineinputmode,setinputmode}
+%D
+%D New. Some work needs to be done.
+
+\def\defineinputmode[#1]{\@EA\newtoks\csname every#1inputmode\endcsname}
+%def\setinputmode [#1]{\the \csname every#1inputmode\endcsname}
+\def\setinputmode [#1]{\the\executeifdefined{every#1inputmode}\emptytoks}
+
+\defineinputmode [TEX]
+\defineinputmode [XML]
+
+\setinputmode [TEX]
+
+%D \macros
+%D {trialtypesetting}
+%D
+%D We disable trial typesetting in the output routine,
+%D just to be sure.
+
+\prependtoks \trialtypesettingfalse \to \everybeforepagebody
+
+%D \macros
+%D {starttextdata}
+%D
+%D This is a user macro (appending to every last shipout is not
+%D really user friendly.
+
+\newtoks \collectedtextdata
+
+\long\def\starttextdata#1\stoptextdata
+ {\doglobal\appendtoks#1\to\collectedtextdata}
+
+\def\flushtextdata
+ {\vsmashed{\the\collectedtextdata}% all dimensions zero
+ \global\collectedtextdata\emptytoks
+ \globallet\flushtextdata\donothing}
+
+\prependtoks \flushtextdata \to \everylastshipout
+
+%D \macros
+%D {ifprocessingXML}
+%D
+%D We need this one even if no \XML\ is supported.
+
+\newif\ifprocessingXML
+
+%D \macros
+%D {ifproductionrun}
+%D
+%D This boolean can be used to bypass certain
+%D initializations.
+
+\newif\ifproductionrun \appendtoks \productionruntrue \to \everydump
+
+\appendtoks \ifcase\protectionlevel\else\reportunprotection\fi \to \everydump
+
+%D \macros
+%D {everyboxedcontent, ifboxedcontent,
+%D startboxedcontent, stopboxedcontent}
+%D
+%D This one is relatively new and will be used as a more
+%D robust test for inner situations.
+
+\newif \ifboxedcontent
+\newevery \everyboxedcontent \relax
+
+\appendtoks \boxedcontenttrue \to \everyboxedcontent
+
+\def\startboxedcontent{\bgroup\the\everyboxedcontent}
+\let\stopboxedcontent \egroup
+
+%D \macros
+%D {fastmode}
+%D
+%D The command \type {\fastmode} disables some time consuming
+%D typesetting.
+
+\let\normalwritestatus\writestatus
+
+\newevery \everyfastmode \relax
+
+\newif\iffastmode
+
+\def\fastmode
+ {\fastmodetrue
+ \the\everyfastmode}
+
+\def\silentmode % ook hier \everysilentmode net als \fastmode
+ {\showmessagesfalse
+ \showwarningsfalse
+ \let\writestatus\gobbletwoarguments}
+
+%D \macros
+%D {pdfoutput}
+%D
+%D There are some fundamental differences between producing
+%D \DVI\ and \PDF\ output, especially when we use \PDFTEX, like
+%D object reuse, one pass graphic inclusion and the lack of a
+%D postprocessing stage. Because we must make sure that
+%D \CONTEXT\ knows what it's up to, we always default to \DVI\
+%D mode, even when users explicitly ask for \PDF\ output in the
+%D \PDFTEX\ configuration file.
+
+\ifx\pdfoutput\undefined \else
+
+ \prependtoks \pdfoutput=0 \to \everyjob
+
+\fi
+
+%D \macros
+%D {setvariables,getvariable,getvariabledefault}
+%D
+%D \starttyping
+%D \setvariables[xx][title=]
+%D \setvariables[xx][title=test test]
+%D \setvariables[xx][title=test $x=1$ test] % fatal error reported
+%D \setvariables[xx][title=test {$x=1$} test]
+%D \setvariables[xx][title] % fatal error reported
+%D \setvariables[xx][titletitel=e]
+%D \stoptyping
+
+\def\??vars{@@vars}
+
+\def\setvariables {\dotripleargument\dosetvariables[\getrawparameters ]}
+\def\setevariables{\dotripleargument\dosetvariables[\getraweparameters]}
+\def\setgvariables{\dotripleargument\dosetvariables[\getrawgparameters]}
+\def\setxvariables{\dotripleargument\dosetvariables[\getrawxparameters]}
+
+\def\globalsetvariables % obsolete
+ {\dotripleargument\dosetvariables[\globalgetrawparameters]}
+
+\long\def\dosetvariables[#1][#2][#3]%
+ {\errorisfataltrue
+ \def\currentvariableclass{#2}%
+ \getvariable{#2}\s!reset
+ #1[\??vars:#2:][#3]%
+ \getvariable{#2}\s!set
+ \errorisfatalfalse}
+
+\beginTEX
+
+\def\getvariable#1#2% to be sped up
+ {\csname
+ \ifundefined{\??vars:#1:#2}\s!empty\else\??vars:#1:#2\fi
+ \endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\getvariable#1#2% to be sped up
+ {\csname
+ \ifcsname\??vars:#1:#2\endcsname\??vars:#1:#2\else\s!empty\fi
+ \endcsname}
+
+\endETEX
+
+\def\showvariable#1#2%
+ {\showvalue{\ifundefined{\??vars:#1:#2}\s!empty\else\??vars:#1:#2\fi}}
+
+\let\currentvariableclass\empty
+
+%D \macros
+%D {doifelsevariable,doifvariable,doifnotvariable}
+%D
+%D A few trivial macros:
+
+\def\doifelsevariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\def\doifvariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\def\doifnotvariable#1#2%
+ {\ifundefined{\??vars:#1:#2}%
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\getvariabledefault#1#2% #3%
+ {\executeifdefined{\??vars:#1:#2}}% {#3}
+
+%D \macros
+%D {checkvariables}
+%D
+%D I'll probably forget that this on exists.
+
+\def\checkvariables
+ {\dodoubleargument\docheckvariables}
+
+\def\docheckvariables
+ {\dogetparameters\docheckrawvalue}
+
+\def\docheckrawvalue#1#2#3%
+ {\doifundefined {\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}
+ {\doifvaluenothing{\??vars:#1:#2}{\setvalue{\??vars:#1:#2}{#3}}}}
+
+%D We store some original meanings, maybe in \type
+%D {math-ini}.
+
+\let\normalat \at
+\let\normalin \in
+\let\normalfrom \from
+\let\normalover \over
+\let\normalabout \about
+
+\let\normalabove \above
+\let\normalatop \atop
+
+\let\normaloverwithdelims \overwithdelims
+\let\normalabovewithdelims\abovewithdelims
+\let\normalatopwithdelims \atopwithdelims
+
+%D Add-ons:
+
+\let\startlayoutcomponent\gobbletwoarguments
+\let\stoplayoutcomponent \relax
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-ver.tex b/Master/texmf-dist/tex/context/base/core-ver.tex
new file mode 100644
index 00000000000..eb8363cf098
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-ver.tex
@@ -0,0 +1,1178 @@
+%D \module
+%D [ file=core-ver,
+%D version=2000.05.09,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Verbatim}
+
+\startmessages dutch library: verbatims
+ title: typen
+ 1: file -- bestaat niet
+\stopmessages
+
+\startmessages english library: verbatims
+ title: verbatim
+ 1: file -- does not exist
+\stopmessages
+
+\startmessages german library: verbatims
+ title: verbatim
+ 1: Datei -- existiert nicht
+\stopmessages
+
+\startmessages czech library: verbatims
+ title: verbatim
+ 1: soubor -- neexistuje
+\stopmessages
+
+\startmessages italian library: verbatims
+ title: verbatim
+ 1: il file -- non esiste
+\stopmessages
+
+\startmessages norwegian library: verbatims
+ title: verbatim
+ 1: fil -- eksisterer ikke
+\stopmessages
+
+\startmessages romanian library: verbatims
+ title: verbatim
+ 1: fisierul -- nu exista
+\stopmessages
+
+\unprotect
+
+% \type{ <crlf> char} geeft bagger
+
+%D We are going to embed the general verbatim support macros in
+%D a proper environment. First we show the common setup
+%D macro, so we know what features are supported. The options
+%D are hooked into the support macros via the \type{\obey}
+%D macros.
+
+\newprettytrue % movet to here from cont-sys.tex
+
+\def\prettyidentifier {TEX}
+\def\prettypalet {}
+
+\def\installprettytype
+ {\dodoubleargument\doinstallprettytype}
+
+\def\doinstallprettytype[#1][#2]% map #1 onto #2
+ {\uppercasestring#1\to\asciiA
+ \uppercasestring#2\to\asciiB
+ \setevalue{\??ty\??ty\asciiA}{\asciiB}}
+
+\def\setupprettiesintype#1%
+ {\uppercasestring#1\to\ascii
+ \edef\prettyidentifier
+ {\ifundefined{\??ty\??ty\ascii}TEX%
+ \else\getvalue{\??ty\??ty\ascii}\fi}%
+ \doifundefined{setuppretty\prettyidentifier type}%
+ {\bgroup
+ \setbox0\hbox % get rid of spaces when in-line \newpretty loading
+ {\restorecatcodes % also needed when loading during \newpretty
+ \startreadingfile % restore < and > if needed
+ \lowercasestring verb-\prettyidentifier.tex\to\filename
+ \readsysfile\filename\donothing\donothing
+ \stopreadingfile}%
+ \egroup}%
+ \doifdefinedelse{setuppretty\prettyidentifier type}%
+ {\let\uncatcodecharacters\uncatcodeallcharacters % ugly, should be switch
+ \def\setupprettytype{\getvalue{setuppretty\prettyidentifier type}}}
+ {\let\setupprettytype\relax}}
+
+\installprettytype [RAW] [RAW]
+
+\installprettytype [TEX] [TEX]
+
+\installprettytype [PERL] [PL]
+\installprettytype [PL] [PL]
+\installprettytype [PM] [PL]
+
+\installprettytype [METAPOST] [MP]
+\installprettytype [METAFONT] [MP]
+\installprettytype [MP] [MP]
+\installprettytype [MF] [MP]
+
+\installprettytype [JAVASCRIPT] [JS]
+\installprettytype [JAVA] [JV]
+\installprettytype [JS] [JS]
+\installprettytype [JV] [JV]
+
+\installprettytype [SQL] [SQL]
+
+\installprettytype [PASCAL] [PAS]
+\installprettytype [PAS] [PAS]
+\installprettytype [MODULA] [PAS]
+\installprettytype [MOD] [PAS]
+
+\installprettytype [EIFFEL] [EIF]
+\installprettytype [EIF] [EIF]
+\installprettytype [E] [EIF]
+
+\installprettytype [XML] [XML]
+
+\installnewpretty M {\setupprettiesintype {MP}\setupprettytype}
+\installnewpretty P {\setupprettiesintype {PL}\setupprettytype}
+\installnewpretty T {\setupprettiesintype{TEX}\setupprettytype}
+\installnewpretty J {\setupprettiesintype {JV}\setupprettytype}
+\installnewpretty S {\setupprettiesintype{SQL}\setupprettytype}
+\installnewpretty W {\setupprettiesintype{PAS}\setupprettytype} % Wirth
+\installnewpretty I {\setupprettiesintype{EIF}\setupprettytype} % E taken
+\installnewpretty X {\setupprettiesintype{XML}\setupprettytype}
+
+\def\setupcommonverbatim#1%
+ {\eightbitcharactersfalse % obey regime / encoding
+ %
+ \def\prettyidentifier{TEX}%
+ %
+ \doifelsevalue{#1\c!text}\v!yes
+ \naturaltextexttrue
+ \naturaltextextfalse
+ \def\prettyidentifierfont{\getvalue{#1\c!icommand}}%
+ \def\prettyvariablefont {\getvalue{#1\c!vcommand}}%
+ \def\prettynaturalfont {\getvalue{#1\c!ccommand}}%
+ %
+ \doifvalue{#1\c!space}\v!on
+ {\def\obeyspaces{\setcontrolspaces}}%
+ \doifvalue{#1\c!page }\v!no
+ {\def\obeypages {\ignorepages}}%
+ %
+ \doifelsevalue{#1\c!tab}\v!yes
+ {\def\obeytabs{\settabskips}}%
+ {\doifvalue{#1\c!tab}\s!ascii
+ {\chardef\tabskipmode\plustwo % quit on >127
+ \def\obeytabs{\settabskips}}%
+ {}}%
+ %
+ \ignorehyphens % default
+ \ExpandFirstAfter\processaction
+ [\getvalue{#1\c!lines}]
+ [ \v!yes=>\obeybreakpoints,
+ \v!hyphenated=>\obeyhyphens]%
+ %
+ \ExpandFirstAfter\processaction
+ [\getvalue{#1\c!option}]
+ [ \v!none=>\let\obeycharacters\relax,
+ \v!color=>\setupprettiesintype{TEX}%
+ \let\obeycharacters\setupprettytype
+ \let\obeytabs\ignoretabs,
+ \v!normal=>\let\obeycharacters\setupgroupedtype,
+ \v!commands=>\def\obeycharacters{\setupcommandsintype{#1}}%
+ \let\obeytabs\ignoretabs,
+ \v!slanted=>\let\obeycharacters\setupslantedtype
+ \let\obeytabs\ignoretabs,
+ \s!unknown=>\setupprettiesintype{\getvalue{#1\c!option}}%
+ \let\obeycharacters\setupprettytype
+ \let\obeytabs\ignoretabs]%
+ \doifnumberelse{\getvalue{#1\c!tab}}
+ {\def\obeytabs{\setfixedtabskips{\getvalue{#1\c!tab}}}}%
+ \donothing
+ \def\verbatimfont{\getvalue{#1\c!style}\normalnoligatures\font}%
+ \setupverbatimcolor{#1}}
+
+\ifx\normalnoligatures\undefined \let\normalnoligatures\gobbleoneargument \fi
+
+%D The verbatim commands have a rather long and turbulent
+%D history. Most users of \CONTEXT\ probably will never use
+%D some of the features, but I've kept in mind that when one is
+%D writing a users manual, about everything can and undoubtly
+%D will be subject to a verbatim treatment.
+%D
+%D Verbatim command are very sensitive to argument processing,
+%D which is a direct result of the \CATCODES\ being fixed at
+%D reading time. With our growing understanding of \TEX,
+%D especially of the mechanism that can be used for looking
+%D ahead and manipulating \CATCODES, the verbatim support
+%D became more and more advanced and natural.
+%D
+%D Typesetting inline verbatim can be accomplished by
+%D \type{\type}, which in this sentence was typeset by saying
+%D just \type{\type{\type}}, which in turn was typeset by
+%D \unknown. Using the normal grouping characters \type{{}} is
+%D the most natural way of using this command.
+%D
+%D A second, more or less redundant, alternative is delimiting
+%D the argument with an own character. This method was
+%D implemented in the context of a publication in the \MAPS,
+%D where this way of delimiting is recognized by \LATEX\ users.
+%D
+%D The third, more original alternative, is the one using
+%D \type{<<} and \type{>>} as delimiters. This alternative can
+%D be used in situations where slanted typeseting is needed.
+
+% todo: we can use \letter... here:
+
+\def\lesscharacter {<}
+\def\morecharacter {>}
+
+\chardef\texescape = `\\
+\chardef\leftargument = `\{
+\chardef\rightargument = `\}
+
+%D \macros
+%D {type}
+%D
+%D We define \type{\type} as a protected command. First we
+%D set the catcodes of \type{<} and \type{>} and then we start
+%D looking ahead.
+
+% \starttyping
+% normal: \par \type{xx<<..xx..<<xx <<xx>> >>..>>xx} \par \type<<....>> \par \type<<..<<xx>>..>> \par
+% normal: \par \type{xx<..xx..<xx <slanted> >..>xx} \par \type{<....>} \par \type{<..<xx>..>}
+% \setuptype[option=slanted]
+% slanted: \par \type{xx<<..sl..<<xx <<sl>> xx>>..sl..>>xx} \par \type<<..xx..>> \par \type<<..<<sl>>..>> \par
+% slanted: \par \type{xx<<..sl..<xx <sl> xx>..sl..>>xx} \par \type<<..xx..>> \par \type<<..<sl>..>> \par
+% \setuptype[option=none]
+% none: \par \type{xx<<..xx..<<xx <<xx>> >>..>>xx} \par \type<<....>> \par \type<<..<<xx>>..>> \par
+% \stoptyping
+
+\unexpanded\def\type
+ {\dotype\empty}
+
+\def\dotype#1%
+ {\bgroup
+ \strut % new, enables leading space in \type { abc } at par start
+ \edef\@@currenttype{#1}%
+ \catcode`\<=\@@other
+ \catcode`\>=\@@other
+ \futurelet\next\dodotype}
+
+%D Next we distinguish between the three alternatives and call
+%D for the appropriate macros.
+
+\def\dodotypeA
+ {\initializetype
+ \initializetypegrouping
+ \verbatimcolor
+ \afterassignment\protectfirsttype\let\next=}
+
+\def\dodotypeB
+ {\initializetype
+ \setupnotypegrouping
+ \verbatimcolor
+ \let\next=}
+
+\def\dodotypeC<#1%
+ {\initializetype
+ \verbatimcolor
+ \if#1<%
+ \@EA\setupalternativetypegrouping
+ \else
+ \@EA#1%
+ \fi}
+
+\def\dodotypeD#1%
+ {\initializetype
+ \verbatimcolor
+ \catcode`#1=\@@endgroup}
+
+\def\dodotype%
+ {\ifx\next\bgroup
+ \@EA\dodotypeA
+ \else\if\next<%
+ \doifelsevalue{\??ty\@@currenttype\c!option}\v!none
+ {\@EAEAEA\dodotypeB}{\@EAEAEA\dodotypeC}%
+ \else
+ \@EAEAEA\dodotypeD
+ \fi\fi}
+
+\bgroup
+\catcode`\[=\@@begingroup
+\catcode`\]=\@@endgroup
+\catcode`\{=\@@active
+\catcode`\}=\@@active
+\gdef\initializetypegrouping%
+ [\catcode`\{=\@@active
+ \catcode`\}=\@@endgroup % otherwise things go wrong ...
+ \def\activerightargument%
+ [\rightargument
+ \egroup]%
+ \def\activeleftargument%
+ [\bgroup
+ \leftargument %% this way TeXEdit can check: {
+ \catcode`\}=\@@active % ... in alignments (tables)
+ \let}=\activerightargument]%
+ \let{=\activeleftargument]% %% this way TeXEdit can check: }
+\egroup
+
+\bgroup
+\catcode`\<=\@@active
+\catcode`\>=\@@active
+\gdef\setupalternativetypegrouping
+ {\catcode`\<=\@@active
+ \catcode`\>=\@@active
+ \def\doless
+ {\ifx<\next
+ \def\next
+ {\bgroup\switchslantedtype
+ \let\next=}%
+ \else
+ \let\next\lesscharacter
+ \fi
+ \next}%
+ \def\domore
+ {\ifx>\next
+ \def\next
+ {\egroup
+ \let\next=}%
+ \else
+ \let\next\morecharacter
+ \fi
+ \next}%
+ \def<{\futurelet\next\doless}%
+ \def>{\futurelet\next\domore}}
+\egroup
+
+\def\setupnotypegrouping
+ {\catcode`\<=\@@begingroup
+ \catcode`\>=\@@endgroup}
+
+%D When writing the manual to \CONTEXT\ and documenting this
+%D source we needed to typeset \type{<<} and \type{>>}. Because
+%D we wanted to do this in the natural way, we've adapted the
+%D original definition a bit. We still show the original
+%D because we think it's shows a bit better what we are
+%D doing.
+%D
+%D \starttyping
+%D \bgroup
+%D \catcode`\<=\@@active
+%D \catcode`\>=\@@active
+%D \gdef\setupgroupedtype%
+%D {\catcode`\<=\@@active
+%D \catcode`\>=\@@active
+%D \def<%
+%D {\def\do%
+%D {\ifx\next<%
+%D \def\next{\bgroup\switchslantedtype\let\next=}%
+%D \else
+%D \let\next\lesscharacter
+%D \fi
+%D \next}%
+%D \futurelet\next\do}%
+%D \def>%
+%D {\def\do%
+%D {\ifx\next>%
+%D \def\next{\egroup\let\next=}%
+%D \else
+%D \let\next\morecharacter
+%D \fi
+%D \next}%
+%D \futurelet\next\do}}
+%D \egroup
+%D \stoptyping
+%D
+%D The final implementation looks a bit further and treats the
+%D lone \type{<<} and \type{>>} a bit different. The \type
+%D {\null} prevents ligatures, which unfortunately turn up
+%D in Lucida fonts.
+
+\def\doenterdoublelesstype
+ {\ifx\next\egroup
+ \lesscharacter\null\lesscharacter
+ \else
+ \bgroup\switchslantedtype
+ \let\doenterdoublemoretype\egroup
+ \fi}
+
+\def\doenterdoublemoretype
+ {\def\doenterdoubletype
+ {\ifx\next\egroup
+ \morecharacter\null\morecharacter
+ \fi}}
+
+\bgroup
+\catcode`\<=\@@active
+\catcode`\>=\@@active
+\gdef\setupgroupedtype
+ {\catcode`\<=\@@active
+ \catcode`\>=\@@active
+ \def\doless
+ {\ifx<\next
+ \def\next
+ {\def\enterdoubletype{\futurelet\next\doenterdoublelesstype}%
+ \afterassignment\enterdoubletype
+ \let\next=}%
+ \else
+ \let\next\lesscharacter
+ \fi
+ \next}%
+ \def\domore
+ {\ifx>\next
+ \def\next
+ {\def\enterdoubletype{\futurelet\next\doenterdoublemoretype}%
+ \afterassignment\enterdoubletype
+ \let\next=}%
+ \else
+ \let\next\morecharacter
+ \fi
+ \next}%
+ \def<{\futurelet\next\doless}%
+ \def>{\futurelet\next\domore}}
+\egroup
+
+\newif\ifslantedtypeactivated
+\newif\ifslantedtypepermitted
+
+\def\switchslantedtype
+ {\ifslantedtypepermitted
+ \ifslantedtypeactivated
+ \slantedtypeactivatedfalse\tttf
+ \else
+ \slantedtypeactivatedtrue\ttsl
+ \fi
+ \fi}
+
+\def\setupcommandsintype#1% can also be \string\
+ {\setupgroupedtype
+ \edef\\{\getvalue{#1\c!escape}}%
+ \letvalue{\\}=\\% for instance \/=/
+ \@EA\catcode\@EA`\\=\@@escape
+ \def\BTEX##1\ETEX##2% ##2 gobbles active space
+ {\naturaltextext##1\unskip\relax}}
+
+%D The following lines show what happens when we set
+%D \type {option=commands}.
+%D
+%D \startbuffer
+%D \starttyping
+%D test//test test/BTEX \footnote{test test test}/ETEX test
+%D test//test test/BTEX \footnote{test test test}/ETEX test
+%D test test test/BTEX \bf(nota bene)/ETEX test
+%D test test test /BTEX \bf(nota bene)/ETEX test
+%D \stoptyping
+%D \stopbuffer
+%D
+%D % \bgroup\setuptyping[option=commands]\getbuffer\egroup
+%D
+%D this was keyed in as:
+%D
+%D \typebuffer
+
+\def\setupslantedtype
+ {\setupgroupedtype
+ \slantedtypepermittedtrue}
+
+% the next one was \string, but this prevents coloring, one can make
+% it \string again if needed
+
+\let\protectedfirsttype\relax
+
+\bgroup
+\catcode`\<=\active
+\catcode`\>=\active
+\gdef\doprotectfirsttype
+ {\ifx\next<%
+ \let\next\relax
+ \else\ifx\next\bgroup
+ \let\next\relax
+ \else\ifx\next\egroup % takes care of \type{}
+ \let\next\relax
+ \else\ifx\next\activeleftargument
+ \let\next\relax
+ \else
+ \let\next\protectedfirsttype
+ \fi\fi\fi\fi
+ \next}
+\egroup
+
+\def\protectfirsttype
+ {\futurelet\next\doprotectfirsttype}
+
+%D The neccessary initializations are done by calling
+%D \type{\initializetype} which in return calls for the support
+%D macro \type{\setupinlineverbatim}.
+
+\let\@@currenttype\empty
+
+\def\initializetype
+ {\let\obeylines\ignorelines
+ \setupcommonverbatim{\??ty\@@currenttype}%
+ \setupinlineverbatim}
+
+%D \macros
+%D {setuptype}
+%D
+%D Some characteristics of \type{\type} can be set up by:
+
+%\def\setuptype%
+% {\dodoubleargument\getparameters[\??ty]}
+
+\def\setuptype
+ {\dodoubleempty\dosetuptype}
+
+\def\dosetuptype[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??ty#1][#2]%
+ \else
+ \getparameters[\??ty][#1]%
+ \fi}
+
+%D The setups for inline verbatim default to:
+
+\setuptype
+ [ \c!space=\v!off,
+ \c!color=,
+ \c!style=\tt\tf, % \tttf gives problems with {\tx \type...}
+ \c!page=\v!no,
+ \c!tab=\v!yes,
+ \c!palet=colorpretty,
+ \c!option=\v!normal]
+
+%D \macros
+%D {typ,obeyhyphens,obeybreakpoints}
+%D
+%D Although it's not clear from the macros, one character
+%D trait of this macros, which are build on top of the support
+%D module, is that they don't hyphenate. We therefore offer
+%D the alternative \type{\typ}. The current implementation
+%D works all right, but a decent hyphenation support of
+%D \type{\tt} text will be implemented soon.
+
+% \def\obeyhyphens
+% {\def\obeyedspace{\hskip\spaceskip}%
+% \edef\savedfont{\the\font}%
+% \ttsl\hyphenchar\font45
+% \tttf\hyphenchar\font45
+% \savedfont
+% \spaceskip.5em\!!plus.25em\!!minus.25em\relax}
+%
+% \def\obeybreakpoints
+% {\def\obeyedspace{\hskip\spaceskip}%
+% \spaceskip.5em
+% \veryraggedright}
+
+\def\obeyhyphens
+ {\def\obeyedspace {\hskip\spaceskip}%
+ \def\controlspace{\hskip\zeropoint\hbox{\char32}\hskip\zeropoint}%
+ \spaceskip.25em\!!plus.5em\!!minus.25em\relax}
+
+\def\obeybreakpoints
+ {\ignorehyphens
+ \veryraggedright}
+
+\def\ignorehyphens
+ {\def\obeyedspace {\null\hskip\spaceskip\null}%
+ \def\controlspace{\null\hskip\zeropoint\hbox{\char32}\hskip\zeropoint\null}%
+ \spaceskip.5em\relax}
+
+%\unexpanded\def\typ
+% {\bgroup
+% \obeyhyphens
+% \futurelet\next\dotype}
+
+%\unexpanded\def\typ
+% {\bgroup
+% \obeyhyphens
+% \futurelet\next\dodotype}
+
+\unexpanded\def\typ
+ {\bgroup
+ \let\@@tylines\v!hyphenated
+ \futurelet\next\dodotype}
+
+%D \macros
+%D {tex,arg,mat,dis}
+%D
+%D Sometimes, for instance when we pass verbatim text as an
+%D argument, the fixed \CATCODES\ interfere with our wishes. An
+%D experimental implementation of character by character
+%D processing of verbatim text did overcome this limitation,
+%D but we've decided not to use that slow and sometimes
+%D troublesome solution. Instead we stick to some 'old'
+%D \CONTEXT\ macros for typesetting typical \TEX\ characters.
+%D
+%D The next implementation is more clear but less versatile,
+%D so we treated it for a beter one.
+%D
+%D \starttyping
+%D \def\dospecialtype#1#2%
+%D {\bgroup
+%D \initializetype
+%D \catcode`\{=\@@begingroup
+%D \catcode`\}=\@@endgroup
+%D \def\dospecialtype%
+%D {\def\dospecialtype{#2\egroup}%
+%D \bgroup
+%D \aftergroup\dospecialtype
+%D #1}%
+%D \afterassignment\dospecialtype
+%D \let\next=}
+%D
+%D \unexpanded\def\tex{\dospecialtype\texescape\relax}
+%D \unexpanded\def\arg{\dospecialtype\leftargument\rightargument}
+%D \unexpanded\def\mat{\dospecialtype\$\$}
+%D \unexpanded\def\dis{\dospecialtype{\$\$}{\$\$}}
+%D \stoptyping
+%D
+% %D For sometime we used the better but less readable is
+% %D alternative
+% %D
+% %D \starttyping
+% %D \def\doprocessgroup#1#2#3%
+% %D {\bgroup
+% %D #1%
+% %D \def\doprocessgroup%
+% %D {\def\doprocessgroup{#3\egroup}%
+% %D \bgroup
+% %D \aftergroup\doprocessgroup
+% %D #2}%
+% %D \afterassignment\doprocessgroup
+% %D \let\next=}
+% %D
+% %D \def\setgroupedtype%
+% %D {\initializetype
+% %D \catcode`\{=\@@begingroup
+% %D \catcode`\}=\@@endgroup}
+% %D
+% %D \unexpanded\def\tex{\doprocessgroup\setgroupedtype\texescape\relax}
+% %D \unexpanded\def\arg{\doprocessgroup\setgroupedtype\leftargument\rightargument}
+% %D \unexpanded\def\mat{\doprocessgroup\setgroupedtype\$\$}
+% %D \unexpanded\def\dis{\doprocessgroup\setgroupedtype{\$\$}{\$\$}}
+% %D \stoptyping
+% %D
+%D
+%D But since \type{\groupedcommand} became available, we use
+%D however
+
+\def\setgroupedtype
+ {\initializetype
+ \catcode`\{=\@@begingroup
+ \catcode`\}=\@@endgroup}
+
+\unexpanded\def\tex{\groupedcommand{\setgroupedtype\texescape}{\relax}}
+\unexpanded\def\arg{\groupedcommand{\setgroupedtype\leftargument}{\rightargument}}
+\unexpanded\def\mat{\groupedcommand{\setgroupedtype\$}{\$}}
+\unexpanded\def\dis{\groupedcommand{\setgroupedtype\$\$}{\$\$}}
+
+%D \macros
+%D {starttyping}
+%D
+%D Display verbatim is realized far more easy, which is mostly
+%D due to the fact that we use \type{\stop...} as delimiter.
+%D The implementation inherits some features, for instance the
+%D support of linenumbering, which can best be studied in the
+%D documented support module.
+
+\def\initializetyping#1%
+ {%\donefalse
+ \switchtobodyfont[\getvalue{\??tp#1\c!bodyfont}]%
+ \donefalse
+ \scratchskip\getvalue{\??tp#1\c!oddmargin}\relax
+ \ifzeropt\scratchskip\else\donetrue\fi
+ \scratchskip\getvalue{\??tp#1\c!evenmargin}\relax
+ \ifzeropt\scratchskip\else\donetrue\fi
+ \ifdone
+ \def\doopenupverbatimline
+ {\getpagestatus
+ \ifrightpage
+ \hskip\getvalue{\??tp#1\c!oddmargin}\relax
+ \else
+ \hskip\getvalue{\??tp#1\c!evenmargin}\relax
+ \fi}%
+ \else
+ \doadaptleftskip{\getvalue{\??tp#1\c!margin}}%
+ \fi
+ \doifdefinedelse{\??bo\getvalue{\??tp#1\c!blank}}
+ {\edef\!!stringa{\csname\??bo\csname\??tp#1\c!blank\endcsname\endcsname}}
+ {\edef\!!stringa{\csname\??tp#1\c!blank\endcsname}}%
+ \processaction
+ [\!!stringa]
+ [\v!standard=>\scratchskip\ctxparskip,
+ \v!small=>\scratchskip\blankokleinmaat,
+ \v!medium=>\scratchskip\blankomiddelmaat,
+ \v!big=>\scratchskip\blankogrootmaat,
+ \v!halfline=>\scratchskip.5\baselineskip,
+ \v!line=>\scratchskip\baselineskip,
+ \v!none=>\scratchskip\zeropoint,
+ \s!unknown=>\scratchskip\commalistelement]%
+ \ifgridsnapping
+ \ifdim\scratchskip=.5\baselineskip\relax
+ \edef\verbatimbaselineskip{\the\scratchskip}% new
+ \else
+ \edef\verbatimbaselineskip{\the\baselineskip}%
+ \fi
+ \else
+ \edef\verbatimbaselineskip{\the\scratchskip}%
+ \fi
+ \setupcommonverbatim{\??tp#1}}
+
+%D The basic display verbatim commands are defined in an
+%D indirect way. As we will see, they are a specific case of a
+%D more general mechanism.
+
+\def\dostarttyping#1%
+ {\getvalue{\??tp#1\c!before}%
+ \startpacked % includes \bgroup
+ \initializetyping{#1}%
+ \startverbatimcolor
+ \expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
+
+\def\dostoptyping#1%
+ {\stopverbatimcolor
+ \stoppacked % includes \egroup
+ \getvalue{\??tp#1\c!after}%
+ \dochecknextindentation{\??tp#1}}
+
+%D \macros
+%D {setuptyping}
+%D
+%D The setup of typing accepts two arguments. The optional
+%D first one identifies the user defined ones. If only one
+%D argument is given, the values apply to both the standard
+%D command \type{\starttyping} and \type{\typefile}.
+
+%\indirect\def\setuptyping\dodoubleempty[#1][#2]%
+% {\iffirstargument
+% \getparameters[\??tp#1][#2]%
+% \else
+% \getparameters[\??tp][#1]%
+% \fi}
+%
+%\doubleemptied\def\setuptyping[#1][#2]%
+% {\iffirstargument
+% \getparameters[\??tp#1][#2]%
+% \else
+% \getparameters[\??tp][#1]%
+% \fi}
+
+\def\dosetuptyping[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??tp#1][#2]%
+ \else
+ \getparameters[\??tp][#1]%
+ \fi}
+
+\def\setuptyping
+ {\dodoubleempty\dosetuptyping}
+
+%D The setups for display verbatim and file verbatim are
+%D shared. One can adapt the extra defined typing environments,
+%D but they also default to the values below. Watch the
+%D alternative escape character.
+
+\setuptyping
+ [ \c!before=\blank,
+ \c!after=\blank,
+ \c!bodyfont=,
+ \c!color=,
+ \c!space=\v!off,
+ \c!page=\v!no,
+ \c!tab=\s!ascii,
+ \c!option=\v!none,
+ \c!palet=colorpretty,
+ \c!text=\v!no,
+ \c!style=\tttf,
+ \c!icommand=\ttsl,
+ \c!vcommand=,
+ \c!ccommand=\tttf,
+ \c!indentnext=\v!yes,
+ \c!margin=\!!zeropoint,
+ \c!evenmargin=\!!zeropoint,
+ \c!oddmargin=\!!zeropoint,
+ \c!blank=\v!line,
+ \c!escape=/, % beware \string\ , should also be accepted
+ \c!numbering=\v!no,
+ \c!lines=]
+
+%D \macros
+%D {definetype}
+%D
+%D Specific inline verbatim commands can be defined with the
+%D following command.
+
+\def\definetype
+ {\dodoubleempty\dodefinetype}
+
+\def\dodefinetype[#1][#2]%
+ {\unexpanded\setvalue{#1}{\dotype{#1}}%
+ \copyparameters
+ [\??ty#1][\??ty]
+ [\c!space,\c!palet,\c!color,\c!style,\c!page,\c!tab,\c!option]%
+ \getparameters[\??ty#1][#2]}
+
+%D \macros
+%D {definetyping}
+%D
+%D For most users the standard \type{\start}||\type{\stop}||pair
+%D will suffice, but for documentation purposes the next
+%D definition command can be of use:
+%D
+%D \starttyping
+%D \definetyping[extratyping][margin=3em]
+%D
+%D \startextratyping
+%D these extra ones are indented by 1 em
+%D \stopextratyping
+%D \stoptyping
+%D
+%D The definitions default to the standard typing values.
+
+\def\presettyping[#1][#2]%
+ {\copyparameters
+ [\??tp#1][\??tp]
+ [\c!before,\c!after,\c!space,\c!page,\c!tab,\c!color,\c!style,
+ \c!text,\c!icommand,\c!vcommand,\c!ccommand,\c!bodyfont,
+ \c!option,\c!palet,\c!margin,\c!evenmargin,\c!oddmargin,
+ \c!indentnext,\c!blank,\c!escape,\c!lines,\c!numbering]%
+ \getparameters
+ [\??tp#1]
+ [#2]}
+
+\def\dodefinetyping[#1][#2]%
+ {\setvalue{\e!start#1}{\dostarttyping{#1}}%
+ \setvalue{\e!stop #1}{\dostoptyping {#1}}%
+ \presettyping[#1][#2]}
+
+\def\definetyping
+ {\dodoubleempty\dodefinetyping}
+
+\definetyping[\v!typing]
+
+\definetyping[RAW] [\c!option=RAW]
+\definetyping[MP] [\c!option=MP]
+\definetyping[PL] [\c!option=PL]
+\definetyping[PM] [\c!option=PL]
+\definetyping[JS] [\c!option=JS]
+\definetyping[JV] [\c!option=JV]
+\definetyping[SQL] [\c!option=SQL]
+\definetyping[TEX] [\c!option=TEX]
+\definetyping[PAS] [\c!option=PAS]
+\definetyping[PASCAL][\c!option=PAS]
+\definetyping[MOD] [\c!option=PAS]
+\definetyping[MODULA][\c!option=PAS]
+\definetyping[DELPHI][\c!option=PAS]
+\definetyping[EIFFEL][\c!option=EIF]
+\definetyping[XML] [\c!option=XML]
+
+%D We use the \CONTEXT\ color system for switching to and from
+%D color mode. We can always redefine these colors afterwards.
+
+\definecolor [colorprettyone] [r=.9, g=.0, b=.0] % red
+\definecolor [colorprettytwo] [r=.0, g=.8, b=.0] % green
+\definecolor [colorprettythree] [r=.0, g=.0, b=.9] % blue
+\definecolor [colorprettyfour] [r=.8, g=.8, b=.6] % yellow
+
+\definecolor [grayprettyone] [s=.30]
+\definecolor [grayprettytwo] [s=.45]
+\definecolor [grayprettythree] [s=.60]
+\definecolor [grayprettyfour] [s=.75]
+
+\definepalet
+ [colorpretty]
+ [ prettyone=colorprettyone,
+ prettytwo=colorprettytwo,
+ prettythree=colorprettythree,
+ prettyfour=colorprettyfour]
+
+\definepalet
+ [graypretty]
+ [ prettyone=grayprettyone,
+ prettytwo=grayprettytwo,
+ prettythree=grayprettythree,
+ prettyfour=grayprettyfour]
+
+% ---> naar verb-* ? of predefine als undefined?
+
+\definepalet [TEXcolorpretty] [colorpretty]
+\definepalet [TEXgraypretty] [graypretty]
+\definepalet [PLcolorpretty] [colorpretty]
+\definepalet [PLgraypretty] [graypretty]
+\definepalet [PMcolorpretty] [colorpretty]
+\definepalet [PMgraypretty] [graypretty]
+\definepalet [MPcolorpretty] [colorpretty]
+\definepalet [MPgraypretty] [graypretty]
+\definepalet [JVcolorpretty] [colorpretty]
+\definepalet [JVgraypretty] [graypretty]
+\definepalet [JScolorpretty] [colorpretty]
+\definepalet [JSgraypretty] [graypretty]
+\definepalet [SQLcolorpretty] [colorpretty]
+\definepalet [SQLgraypretty] [graypretty]
+\definepalet [PAScolorpretty] [colorpretty]
+\definepalet [PASgraypretty] [graypretty]
+\definepalet [EIFcolorpretty] [colorpretty]
+\definepalet [EIFgraypretty] [graypretty]
+\definepalet [XMLcolorpretty] [colorpretty]
+\definepalet [XMLgraypretty] [graypretty]
+
+% Some real in-depth knowlegde of palets: `palet:color' it is!
+
+%D We can use some core color commands. These are faster than
+%D the standard color switching ones and work ok on a line by
+%D line basis.
+%D
+%D \starttyping
+%D \def\setupverbatimcolor#1%
+%D {\edef\prettypalet{\prettyidentifier\getvalue{#1\c!palet}}%
+%D \def\beginofpretty[##1]{\startcolormode{\prettypalet:##1}}%
+%D \def\endofpretty {\stopcolormode}}
+%D \stoptyping
+%D
+%D Since we support a global color too, the folowing
+%D definition is better:
+
+\def\setupverbatimcolor#1% fast and local versus slow and global
+ {\doifelsevaluenothing{#1\c!color}
+ {\def\beginofpretty[##1]{\startcolormode{\prettypalet:##1}}%
+ \let\endofpretty \restorecolormode % \stopcolormode
+ \let\startverbatimcolor \relax
+ \let\stopverbatimcolor \relax
+ \let\verbatimcolor \relax}
+ {\def\beginofpretty[##1]{\startcolor[\prettypalet:##1]}%
+ \let\endofpretty \stopcolor
+ \def\startverbatimcolor{\startcolor[\getvalue{#1\c!color}]}%
+ \let\stopverbatimcolor \stopcolor
+ \def\verbatimcolor {\getvalue{\getvalue{#1\c!color}}}}%
+ \doifelsevaluenothing{#1\c!palet}
+ {\let\prettypalet\empty
+ \let\endofpretty\relax
+ \def\beginofpretty[##1]{}}
+ {\edef\prettypalet{\prettyidentifier\getvalue{#1\c!palet}}}}
+
+\let\prettypalet \empty
+\let\startverbatimcolor\relax
+\let\stopverbatimcolor \relax
+\let\verbatimcolor \relax
+
+%D In the verbatim module, there are some examples given of
+%D the more obscure features of the verbatim environments.
+%D
+%D \startbuffer
+%D \startTEX
+%D \def\mathematics#1% % usage: \type {\mathematics{x^2}}
+%D {\ifmmode#1\else$#1$\fi} % becomes: \mathematics{x^2}
+%D \stopTEX
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This gives, as can be expected:
+%D
+%D \getbuffer
+%D
+%D When we want to see some typeset \TEX\ too, we can say:
+%D
+%D \startbuffer
+%D \startTEX
+%D \def\mathematics#1% %%\ N usage: \type {\mathematics{x^2}}
+%D {\ifmmode#1\else$#1$\fi} %%\ N becomes: \mathematics{x^2}
+%D \stopTEX
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or:
+%D
+%D \getbuffer
+%D
+%D In a similar way:
+%D
+%D \startbuffer
+%D \startSQL
+%D select * -- indeed, here we {\em do} select
+%D from tableA
+%D where 1 = 2
+%D \stopSQL
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives:
+%D
+%D \getbuffer
+%D
+%D The next examples sow how we can directly call for natural
+%D \TEX\ comments:
+%D
+%D \startbuffer
+%D \setuptyping
+%D [TEX]
+%D [text=yes]
+%D
+%D \startTEX
+%D \def\mathematics#1% % usage: \type {\mathematics{x^2}}
+%D {\ifmmode#1\else$#1$\fi} % becomes: \mathematics{x^2}
+%D \stopTEX
+%D
+%D \setuptyping
+%D [SQL]
+%D [text=yes,palet=,icommand=\bf,vcommand=,ccommand=\it]
+%D
+%D \startSQL
+%D select * -- indeed, here we {\em do} select
+%D from tableA
+%D where 1 = 2
+%D \stopSQL
+%D
+%D \setuptyping
+%D [SQL]
+%D [ccommand=\tf\underbar]
+%D
+%D \startSQL
+%D select * -- indeed, here we {\em do} select
+%D from tableA
+%D where 1 = 2
+%D \stopSQL
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Now watch:
+%D
+%D \getbuffer
+%D
+%D The natural \TEX\ typesetting was introduced when Tobias
+%D and Berend started using verbatim \JAVASCRIPT\ and \SQL.
+
+%D \macros
+%D {EveryPar, EveryLine, iflinepar}
+%D
+%D One of the features of these commands is the support of
+%D \type{\EveryPar}, \type{\EveryLine} and \type{\iflinepar}.
+%D In the documentation of the verbatim support module we give
+%D some examples of line- and paragraph numbering using these
+%D macros.
+
+%D \macros
+%D {typefile}
+%D
+%D Typesetting files verbatim (for the moment) only supports
+%D colorization of \TEX\ sources as valid option. The other
+%D setup values are inherited from display verbatim.
+%D The implementation of \type{\typefile} is straightforward:
+
+% new feature (not yet 100\% ok)
+%
+% \setuptyping[file][numbering=file]
+%
+% \typefile[start=2,nlines=3]{zapf}
+% \typefile[start=continue,nlines=13]{zapf}
+% \typefile{zapf}
+%
+% \setuptyping[file][numbering=line]
+%
+% \typefile[start=4,step=3]{zapf}
+% \typefile{zapf}
+
+\presettyping[\v!file][]
+
+\def\typefile
+ {\dodoubleempty\dotypefile}
+
+\def\dotypefile[#1][#2]#3%
+ {\ifsecondargument
+ \dodotypefile[#1][#2]{#3}%
+ \else\iffirstargument
+ \doifassignmentelse{#1}
+ {\dodotypefile[\v!file][#1]{#3}}
+ {\dodotypefile[#1][]{#3}}%
+ \else
+ \dodotypefile[\v!file][]{#3}%
+ \fi\fi}
+
+\unprotected \def\dosetuptypelinenumbering#1#2%
+ {\doifundefined{\??tp#1\c!start}{\setuptyping[#1][\c!start=1,\c!stop=,\c!step=1,\c!nlines=,#2]}%
+ \doifelsevalue{\??tp#1\c!numbering}\v!file
+ {\setuplinenumbering[\c!method=\v!file]%
+ \donetrue}
+ {\doifelsevalue{\??tp#1\c!numbering}\v!line
+ {% \setuplinenumbering defaults start/step to 1/1, so we need
+ \doifvaluenothing{\??tp#1\c!start}{\setvalue{\??tp#1\c!start}{1}}%
+ \doifvaluenothing{\??tp#1\c!step }{\setvalue{\??tp#1\c!step }{1}}%
+ \setuplinenumbering
+ [\c!method=\v!type,
+ \c!start=\getvalue{\??tp#1\c!start},
+ \c!step=\getvalue{\??tp#1\c!step}]%
+ \donetrue}
+ {\donefalse}}%
+ \ifdone
+ \def\beginofverbatimlines{\startlinenumbering}%
+ \def\endofverbatimlines {\stoplinenumbering }%
+ \fi}
+
+\setuptyping
+ [\v!file]
+ [\c!start=1,
+ \c!stop=,
+ \c!step=1,
+ \c!nlines=]
+
+\def\dodotypefile[#1][#2]#3%
+ {\getvalue{\??tp#1\c!before}%
+ \doiflocfileelse{#3}
+ {\startpacked % includes \bgroup
+ \dosetuptypelinenumbering{#1}{#2}%
+ \doifinset{\getvalue{\??tp#1\c!option}}{\v!commands,\v!slanted,\v!normal}
+ {\setuptyping[#1][\c!option=\v!none]}%
+ \doifvalue{\??tp#1\c!option}\v!color
+ {\expandafter\aftersplitstring#3\at.\to\prettyidentifier
+ \letvalue{\??tp#1\c!option}\prettyidentifier}%
+ \initializetyping{#1}%
+ \startverbatimcolor
+ \makelocreadfilename{#3}%
+ \doifundefinedelse{\??tp#3\v!global\c!start}
+ {\scratchcounter\zerocount}
+ {\scratchcounter\getvalue{\??tp#3\v!global\c!start}}%
+ \advance\scratchcounter\plusone
+ \setxvalue{\??tp#3\v!global\c!start}{\the\scratchcounter}%
+ \doifelsevaluenothing{\??tp#1\c!start}
+ {\processfileverbatim\readfilename}
+ {\doifvalue{\??tp#1\c!start}\v!continue
+ {\setevalue{\??tp#1\c!start}%
+ {\getvalue{\??tp#3\v!global\c!start}}}%
+ \doifelsevaluenothing{\??tp#1\c!stop}
+ {\doifelsevaluenothing{\??tp#1\c!nlines}
+ {\processfileverbatim\readfilename}
+ {\scratchcounter\getvalue{\??tp#1\c!start}%
+ \advance\scratchcounter\getvalue{\??tp#1\c!nlines}%
+ \advance\scratchcounter\minusone
+ \setxvalue{\??tp#3\v!global\c!start}%
+ {\the\scratchcounter}%
+ \processfilelinesverbatim\readfilename
+ {\getvalue{\??tp#1\c!start}}
+ {\getvalue{\??tp#3\v!global\c!start}}}}%
+ {\processfilelinesverbatim\readfilename
+ {\getvalue{\??tp#1\c!start}}
+ {\getvalue{\??tp#1\c!stop }}}}%
+ \stopverbatimcolor
+ \stoppacked} % includes \egroup
+ {\ifmmode\hbox\fi\bgroup
+ \expanded{\convertargument#3}\to\ascii
+ \tttf[\makemessage\m!verbatims1\ascii]%
+ \showmessage\m!verbatims1\ascii
+ \egroup}%
+ \getvalue{\??tp#1\c!after}}
+
+%D \macros
+%D {filename}
+%D
+%D Typesetting filenames in monospaced fonts is possible with
+%D
+%D \starttyping
+%D \filename{here/there/filename.suffix}
+%D \stoptyping
+%D
+%D The definition is not that spectacular.
+
+\unexpanded\def\filename#1{{\tttf\hyphenatedfile{#1}}}
+
+%D This leaves some settings:
+
+\permitshiftedendofverbatim
+\optimizeverbatimtrue
+
+%D And a bonus macro:
+
+\def\verbatim#1{\convertargument#1\to\ascii\ascii}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/core-vis.tex b/Master/texmf-dist/tex/context/base/core-vis.tex
new file mode 100644
index 00000000000..44a3eb37afe
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/core-vis.tex
@@ -0,0 +1,843 @@
+%D \module
+%D [ file=core-vis,
+%D version=1996.06.01,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Visualization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module adds some more visualization cues to the ones
+%D supplied in the support module.
+%D
+%D %\everypar dual character, \the\everypar and \everypar=
+%D %\hrule cannot be grabbed in advance, switches mode
+%D %\vrule cannot be grabbed in advance, switches mode
+%D %
+%D %\indent only explicit ones
+%D %\noindent only explicit ones
+%D %\par only explicit ones
+%D
+%D %\leftskip only if explicit one
+%D %\rightskip only if explicit one
+
+\writestatus{loading}{Context Support Macros / Visualization}
+
+\unprotect
+
+%D \macros
+%D {indent, noindent,
+%D leavevmode,
+%D par}
+%D
+%D \TeX\ acts upon paragraphs. In mosts documents paragraphs
+%D are separated by empty lines, which internally are handled as
+%D \type{\par}. Paragraphs can be indented or not, depending on
+%D the setting of \type{\parindent}, the first token of a
+%D paragraph and/or user suppressed or forced indentation.
+%D
+%D Because the actual typesetting is based on both explicit
+%D user and implicit system actions, visualization is only
+%D possible for the user supplied \type{\indent},
+%D \type{\noindent}, \type{\leavevmode} and \type{\par}. Other
+%D 'clever' tricks will quite certainly lead to more failures
+%D than successes, so we only support these three explicit
+%D primitives and one macro:
+
+\let\normalnoindent = \noindent
+\let\normalindent = \indent
+\let\normalpar = \par
+
+\let\normalleavevmode = \leavevmode
+
+\def\showparagraphcue#1#2#3#4#5%
+ {\bgroup
+ \scratchdimen#1\relax
+ \dontinterfere
+ \dontcomplain
+ \boxrulewidth5\testrulewidth
+ #3#4\relax
+ \setbox\scratchbox\normalhbox to \scratchdimen
+ {#2{\ruledhbox to \scratchdimen
+ {\vrule #5 20\testrulewidth \!!width \zeropoint
+ \normalhss}}}%
+ \smashbox\scratchbox
+ \normalpenalty\!!tenthousand
+ \box\scratchbox
+ \egroup}
+
+\def\ruledhanging
+ {\ifdim\hangindent>\zeropoint
+ \ifnum\hangafter<\zerocount
+ \normalhbox
+ {\boxrulewidth5\testrulewidth
+ \setbox\scratchbox\ruledhbox to \hangindent
+ {\scratchdimen\strutht
+ \advance\scratchdimen \strutdp
+ \vrule
+ \!!width \zeropoint
+ \!!height \zeropoint
+ \!!depth -\hangafter\scratchdimen}%
+ \normalhskip-\hangindent
+ \smashbox\scratchbox
+ \raise\strutht\box\scratchbox}%
+ \fi
+ \fi}
+
+\def\ruledparagraphcues
+ {\bgroup
+ \dontcomplain
+ \normalhbox to \zeropoint
+ {\ifdim\leftskip>\zeropoint\relax
+ \showparagraphcue\leftskip\llap\relax\relax\!!depth
+ \normalhskip-\leftskip
+ \fi
+ \ruledhanging
+ \normalhskip\hsize
+ \ifdim\rightskip>\zeropoint\relax
+ \normalhskip-\rightskip
+ \showparagraphcue\rightskip\relax\relax\relax\!!depth
+ \fi}%
+ \egroup}
+
+\def\ruledpar
+ {\relax
+ \ifhmode
+ \showparagraphcue{40\testrulewidth}\relax\rightrulefalse\relax\!!height
+ \fi
+ \normalpar}
+
+\def\rulednoindent
+ {\relax
+ \normalnoindent
+ \ruledparagraphcues
+ \showparagraphcue{40\testrulewidth}\llap\leftrulefalse\relax\!!height}
+
+\def\ruledindent
+ {\relax
+ \normalnoindent
+ \ruledparagraphcues
+ \ifdim\parindent>\zeropoint
+ \showparagraphcue\parindent\relax\relax\relax\!!height
+ \else
+ \showparagraphcue{40\testrulewidth}\llap\relax\relax\!!height
+ \fi
+ \normalhskip\parindent}
+
+\def\ruledleavevmode
+ {\relax
+ \normalleavevmode
+ \ifdim\parindent>\zeropoint
+ \normalhskip-\parindent
+ \ruledparagraphcues
+ \showparagraphcue\parindent\relax\leftrulefalse\rightrulefalse\!!height
+ \normalhskip\parindent
+ \else
+ \ruledparagraphcues
+ \showparagraphcue{40\testrulewidth}\llap\leftrulefalse\rightrulefalse\!!height
+ \fi}
+
+\def\dontshowimplicits
+ {\let\noindent \normalnoindent
+ \let\indent \normalindent
+ \let\leavevmode \normalleavevmode
+ \let\par \normalpar}
+
+\def\showimplicits
+ {\testrulewidth \defaulttestrulewidth
+ \let\noindent \rulednoindent
+ \let\indent \ruledindent
+ \let\leavevmode \ruledleavevmode
+ \let\par \ruledpar}
+
+%D The next few||line examples show the four cues. Keep in
+%D mind that we only see them when we explicitly open or close
+%D a paragraph.
+%D
+%D \bgroup
+%D \def\voorbeeld#1%
+%D {#1Visualizing some \TeX\ primitives and Plain \TeX\
+%D macros can be very instructive, at least it is to me.
+%D Here we see {\tt\string#1} and {\tt\string\ruledpar} in
+%D action, while {\tt\string\parindent} equals
+%D {\tt\the\parindent}.\ruledpar}
+%D
+%D \showimplicits
+%D
+%D \voorbeeld \indent
+%D \voorbeeld \noindent
+%D \voorbeeld \leavevmode
+%D
+%D \parindent=60pt
+%D
+%D \voorbeeld \indent
+%D \voorbeeld \noindent
+%D \voorbeeld \leavevmode
+%D
+%D \startnarrower
+%D \voorbeeld \indent
+%D \voorbeeld \noindent
+%D \voorbeeld \leavevmode
+%D \stopnarrower
+%D \egroup
+%D
+%D These examples also demonstrate the visualization of
+%D \type {\leftskip} and \type {\rightskip}. The macro
+%D \type {\nofruledbaselines} determines the number of lines
+%D shown.
+
+\newcounter\ruledbaselines
+
+\def\nofruledbaselines{3}
+
+\def\debuggertext#1%
+ {\ifx\ttxx\undefined
+ $\scriptscriptstyle#1$%
+ \else
+ {\ttxx#1}%
+ \fi}
+
+\def\ruledbaseline
+ {\vrule \!!width \zeropoint
+ \bgroup
+ \dontinterfere
+ \doglobal\increment\ruledbaselines
+ \scratchdimen\nofruledbaselines\baselineskip
+ \setbox\scratchbox\normalvbox to 2\scratchdimen
+ {\leaders
+ \normalhbox
+ {\strut
+ \vrule
+ \!!height \testrulewidth
+ \!!depth \testrulewidth
+ \!!width 120\points}
+ \normalvfill}%
+ \smashbox\scratchbox
+ \advance\scratchdimen \strutheightfactor\baselineskip
+ \setbox\scratchbox\normalhbox
+ {\normalhskip -48\points
+ \normalhbox to 24\points
+ {\normalhss\debuggertext\ruledbaselines\normalhskip6\points}%
+ \raise\scratchdimen\box\scratchbox}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \egroup}
+
+\def\showbaselines
+ {\testrulewidth\defaulttestrulewidth
+ \EveryPar{\ruledbaseline}}
+
+%D \macros
+%D {showpagebuilder}
+%D
+%D The next tracing option probaly is only of use to me and a
+%D few \CONTEXT\ hackers.
+
+\def\showpagebuilder
+ {\EveryPar{\doshowpagebuilder}}
+
+\def\doshowpagebuilder
+ {\strut\llap{\blue \vl
+ \high{\infofont v:\the\vsize }\vl
+ \high{\infofont g:\the\pagegoal }\vl
+ \high{\infofont t:\the\pagetotal}\vl}}
+
+%D \macros
+%D {makecutbox, cuthbox, cutvbox, cutvtop}
+%D
+%D Although mainly used for marking the page, these macros can
+%D also serve local use.
+%D
+%D \startbuffer
+%D \setbox0=\vbox{a real \crlf vertical box} \makecutbox0
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This marked \type{\vbox} shows up as:
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D The alternative macros are used as:
+%D
+%D \startbuffer
+%D \cuthbox{a made cut box}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This is typeset as:
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D By setting the next macros one can influence the length of
+%D the marks as well as the horizontal and vertical divisions.
+
+\def\cutmarklength {2\bodyfontsize}
+\chardef\horizontalcutmarks = 2
+\chardef\verticalcutmarks = 2
+\chardef\cutmarkoffset = 1
+\let\cutmarksymbol = \relax
+\let\cutmarktoptext = \empty
+\let\cutmarkbottomtext = \empty
+
+\def\horizontalcuts
+ {\normalhbox to \ruledwidth
+ {\dorecurse\horizontalcutmarks
+ {\vrule\!!width\boxrulewidth\!!height\cutmarklength\normalhfill}%
+ \unskip}}
+
+\def\verticalcuts
+ {\scratchdimen\ruledheight
+ \advance\scratchdimen \ruleddepth
+ \normalvbox to \scratchdimen
+ {\hsize\cutmarklength
+ \dorecurse\verticalcutmarks
+ {\vrule\!!height\boxrulewidth\!!width\hsize\normalvfill}%
+ \unskip}}
+
+\def\baselinecuts
+ {\ifdim\ruleddepth>\zeropoint
+ \scratchdimen\ruledheight
+ \advance\scratchdimen \ruleddepth
+ \normalvbox to \scratchdimen
+ {\scratchdimen\cutmarklength
+ \divide\scratchdimen 2
+ \hsize\scratchdimen
+ \normalvskip\zeropoint\!!plus\ruledheight
+ \vrule\!!height\boxrulewidth\!!width\hsize
+ \normalvskip\zeropoint\!!plus\ruleddepth}%
+ \fi}
+
+% \def\cutmarksymbols
+% {\setbox\scratchbox\normalvbox to \cutmarklength
+% {\normalvfill
+% \normalhbox to \cutmarklength
+% {\normalhfill\ssxx\cutmarksymbol\normalhfill}%
+% \normalvfill}%
+% \normalhbox to \ruledwidth
+% {\scratchdimen\cutmarklength
+% \divide\scratchdimen 2
+% \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+% \normalhfill
+% \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}}
+
+\def\cutmarksymbols#1%
+ {\normalhbox to \ruledwidth
+ {\setbox\scratchbox\normalhbox to \cutmarklength
+ {\normalhss\infofont\cutmarksymbol\normalhss}%
+ \normalhss
+ \normalvbox to \cutmarklength
+ {\scratchdimen\cutmarklength
+ \divide\scratchdimen \plustwo
+ \normalvss
+ \hbox to \ruledwidth
+ {\llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+ \normalhskip\scratchdimen\hss\infofont#1\hss\normalhskip\scratchdimen
+ \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}%
+ \normalvss}%
+ \normalhss}}
+
+% \def\makecutbox#1%
+% {\edef\ruledheight{\the\ht#1}%
+% \edef\ruleddepth {\the\dp#1}%
+% \edef\ruledwidth {\the\wd#1}%
+% \setbox#1\normalhbox
+% {\dontcomplain
+% \forgetall
+% \boxmaxdepth\maxdimen
+% \offinterlineskip
+% \scratchdimen\cutmarklength
+% \divide\scratchdimen 2
+% \hsize\ruledwidth
+% \setbox\scratchbox\normalvbox
+% {\setbox\scratchbox\normalhbox{\horizontalcuts}%
+% \normalvskip-\cutmarkoffset\scratchdimen
+% \normalvskip-2\scratchdimen
+% \copy\scratchbox
+% \normalvskip\cutmarkoffset\scratchdimen
+% \hbox to \ruledwidth
+% {\setbox\scratchbox\normalhbox{\verticalcuts}%
+% \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+% \bgroup
+% \setbox\scratchbox\normalhbox{\baselinecuts}%
+% \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+% \normalhfill
+% \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}%
+% \egroup
+% \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}%
+% \normalvskip\cutmarkoffset\scratchdimen
+% \copy\scratchbox}%
+% \ht\scratchbox\ruledheight
+% \dp\scratchbox\ruleddepth
+% \wd\scratchbox\zeropoint
+% \resetcolorseparation
+% \localstartcolor[\defaulttextcolor]%
+% \box\scratchbox
+% \ifx\cutmarksymbol\relax \else
+% \setbox\scratchbox\normalvbox
+% {\setbox\scratchbox\normalhbox{\cutmarksymbols}%
+% \vskip-\cutmarkoffset\scratchdimen
+% \vskip-\cutmarklength
+% \copy\scratchbox
+% \vskip\cutmarkoffset\scratchdimen
+% \vskip\ruledheight
+% \vskip\ruleddepth
+% \vskip\cutmarkoffset\scratchdimen
+% \copy\scratchbox}%
+% \ht\scratchbox\ruledheight
+% \dp\scratchbox\ruleddepth
+% \wd\scratchbox\zeropoint
+% \box\scratchbox
+% \fi
+% \localstopcolor
+% \box#1}%
+% \wd#1=\ruledwidth
+% \ht#1=\ruledheight
+% \dp#1=\ruleddepth}
+
+\def\makecutbox#1% simplier with layers, todo
+ {\edef\ruledheight{\the\ht#1}%
+ \edef\ruleddepth {\the\dp#1}%
+ \edef\ruledwidth {\the\wd#1}%
+ \setbox#1\normalhbox
+ {\dontcomplain
+ \forgetall
+ \boxmaxdepth\maxdimen
+ \offinterlineskip
+ \scratchdimen\cutmarklength
+ \divide\scratchdimen \plustwo
+ \hsize\ruledwidth
+ \setbox\scratchbox\normalvbox
+ {\setbox\scratchbox\normalhbox{\horizontalcuts}%
+ \normalvskip-\cutmarkoffset\scratchdimen
+ \normalvskip-2\scratchdimen
+ \copy\scratchbox
+ \normalvskip\cutmarkoffset\scratchdimen
+ \hbox to \ruledwidth
+ {\setbox\scratchbox\normalhbox{\verticalcuts}%
+ \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+ \bgroup
+ \setbox\scratchbox\normalhbox{\baselinecuts}%
+ \llap{\copy\scratchbox\normalhskip\cutmarkoffset\scratchdimen}%
+ \normalhfill
+ \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}%
+ \egroup
+ \rlap{\normalhskip\cutmarkoffset\scratchdimen\copy\scratchbox}}%
+ \normalvskip\cutmarkoffset\scratchdimen
+ \copy\scratchbox}%
+ \ht\scratchbox\ruledheight
+ \dp\scratchbox\ruleddepth
+ \wd\scratchbox\zeropoint
+ \resetcolorseparation
+ \localstartcolor[\defaulttextcolor]%
+ \box\scratchbox
+ \ifx\cutmarksymbol\relax \else
+ \setbox\scratchbox\normalvbox
+ {\vskip-\cutmarkoffset\scratchdimen
+ \vskip-\cutmarklength
+ \normalhbox{\cutmarksymbols\cutmarktoptext}%
+ \vskip\cutmarkoffset\scratchdimen
+ \vskip\ruledheight
+ \vskip\ruleddepth
+ \vskip\cutmarkoffset\scratchdimen
+ \normalhbox{\cutmarksymbols\cutmarkbottomtext}}%
+ \ht\scratchbox\ruledheight
+ \dp\scratchbox\ruleddepth
+ \wd\scratchbox\zeropoint
+ \box\scratchbox
+ \fi
+ \localstopcolor
+ \box#1}%
+ \wd#1=\ruledwidth
+ \ht#1=\ruledheight
+ \dp#1=\ruleddepth}
+
+\def\cuthbox
+ {\normalhbox\bgroup
+ \dowithnextbox{\makecutbox\nextbox\flushnextbox\egroup}\normalhbox}
+
+\def\cutvbox
+ {\normalvbox\bgroup
+ \dowithnextbox{\makecutbox\nextbox\flushnextbox\egroup}\normalvbox}
+
+\def\cutvtop
+ {\normalvtop\bgroup
+ \dowithnextbox{\makecutbox\nextbox\flushnextbox\egroup}\normalvtop}
+
+%D \macros
+%D {colormarkbox,rastermarkbox}
+%D
+%D This macro is used in the pagebody routine. No other use
+%D is advocated here.
+%D
+%D \starttyping
+%D \colormarkbox0
+%D \stoptyping
+
+\def\colormarkoffset{\cutmarkoffset}
+\def\colormarklength{\cutmarklength}
+
+\def\colorrangeA#1#2#3#4%
+ {\vbox
+ {\scratchdimen-\colormarklength
+ \multiply\scratchdimen 4
+ \advance\scratchdimen \ruledheight
+ \advance\scratchdimen \ruleddepth
+ \divide\scratchdimen 21
+ \def\docommando##1%
+ {\vbox
+ {\hsize3em % \scratchdimen
+ \definecolor
+ [\s!dummy]
+ [\c!c=#2##1\else0\fi,
+ \c!m=#3##1\else0\fi,
+ \c!y=#4##1\else0\fi,
+ \c!k=0]%
+ \localstartcolor[\s!dummy]%
+ \hrule
+ \!!width 3em
+ \!!height \scratchdimen
+ \!!depth \zeropoint
+ \localstopcolor
+ \ifdim\scratchdimen>1ex
+ \vskip-\scratchdimen
+ \vbox to \scratchdimen
+ {\vss
+ \hbox to 3em
+ {\hss
+ \localstartcolor[\s!white]%
+ \ifdim##1\points=\zeropoint#1\else##1\fi
+ \localstopcolor
+ \hss}%
+ \vss}%
+ \fi}}%
+ \offinterlineskip
+ \processcommalist[1.00,0.95,0.75,0.50,0.25,0.05,0.00]\docommando}}
+
+\def\colorrangeB
+ {\hbox
+ {\scratchdimen-\colormarklength
+ \multiply\scratchdimen \plustwo
+ \advance\scratchdimen \ruledwidth
+ \divide\scratchdimen 11
+ \def\docommando ##1 ##2 ##3##4##5##6%
+ {\definecolor
+ [\s!dummy]
+ [\c!c=##3##2\else0\fi,
+ \c!m=##4##2\else0\fi,
+ \c!y=##5##2\else0\fi,
+ \c!k=##6##2\else0\fi]%
+ \localstartcolor[\s!dummy]%
+ \vrule
+ \!!width \scratchdimen
+ \!!height \colormarklength
+ \!!depth \zeropoint
+ \localstopcolor
+ \ifdim\scratchdimen>2em
+ \hskip-\scratchdimen
+ \vbox to \colormarklength
+ {\vss
+ \hbox to \scratchdimen
+ {\hss
+ \localstartcolor[\s!white]%
+ \ifdim##2\points=.5\points##2~\fi##1%
+ \localstopcolor
+ \hss}
+ \vss}%
+ \fi}%
+ \docommando C .5 \iftrue \iffalse\iffalse\iffalse
+ \docommando M .5 \iffalse\iftrue \iffalse\iffalse
+ \docommando Y .5 \iffalse\iffalse\iftrue \iffalse
+ \docommando K .5 \iffalse\iffalse\iffalse\iftrue
+ \docommando C 1 \iftrue \iffalse\iffalse\iffalse
+ \docommando G 1 \iftrue \iffalse\iftrue \iffalse
+ \docommando Y 1 \iffalse\iffalse\iftrue \iffalse
+ \docommando R 1 \iffalse\iftrue \iftrue \iffalse
+ \docommando M 1 \iffalse\iftrue \iffalse\iffalse
+ \docommando B 1 \iftrue \iftrue \iffalse\iffalse
+ \docommando K 1 \iffalse\iffalse\iffalse\iftrue}}
+
+\def\colorrangeC
+ {\hbox
+ {\resetcolorseparation
+ \scratchdimen-\colormarklength
+ \multiply\scratchdimen 2
+ \advance\scratchdimen \ruledwidth
+ \divide\scratchdimen 14
+ \def\docommando##1%
+ {\definecolor[\s!dummy][\c!s=##1]%
+ \localstartcolor[\s!dummy]%
+ \vrule
+ \!!width \scratchdimen
+ \!!height \colormarklength
+ \!!depth \zeropoint
+ \localstopcolor
+ \ifdim\scratchdimen>2em
+ \hskip-\scratchdimen
+ \vbox to \colormarklength
+ {\vss
+ \localstartcolor[\s!white]%
+ \hbox to \scratchdimen{\hss##1\hss}
+ \localstopcolor
+ \vss}%
+ \fi}%
+ \processcommalist[1,.95,.9,.85,.8,.75,.7,.6,.5,.4,.3,.2,.1,0]\docommando}}
+
+\def\docolormarkbox#1#2%
+ {\edef\ruledheight{\the\ht#2}%
+ \edef\ruleddepth {\the\dp#2}%
+ \edef\ruledwidth {\the\wd#2}%
+ \setbox#2\hbox
+ {\scratchdimen\colormarklength
+ \divide\scratchdimen \plustwo
+ \forgetall
+ \ssxx
+ \setbox\scratchbox\vbox
+ {\offinterlineskip
+ \vskip-\colormarkoffset\scratchdimen
+ \vskip-2\scratchdimen\relax % relax needed
+ % beware: no \ifcase, due to nested \iftrue/\iffalse
+ % and lacking \fi's
+ \doifelse{#1}{0}%
+ {\vskip\colormarklength
+ \vskip\colormarkoffset\scratchdimen
+ \vskip\ruledheight}
+ {\hbox to \ruledwidth{\hss\hbox{\colorrangeB}\hss}%
+ \vskip\colormarkoffset\scratchdimen
+ \vbox to \ruledheight
+ {\vss
+ \hbox to \ruledwidth
+ {\llap{\colorrangeA C\iftrue\iffalse\iffalse\hskip\colormarkoffset\scratchdimen}%
+ \hfill
+ \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA R\iffalse\iftrue\iftrue}}%
+ \vss
+ \hbox to \ruledwidth
+ {\llap{\colorrangeA M\iffalse\iftrue\iffalse\hskip\colormarkoffset\scratchdimen}%
+ \hfill
+ \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA G\iftrue\iffalse\iftrue}}%
+ \vss
+ \hbox to \ruledwidth
+ {\llap{\colorrangeA Y\iffalse\iffalse\iftrue\hskip\colormarkoffset\scratchdimen}%
+ \hfill
+ \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA B\iftrue\iftrue\iffalse}}%
+ \vss}}%
+ \vskip\colormarkoffset\scratchdimen
+ \hbox to \ruledwidth
+ {\hss\lower\ruleddepth\hbox{\colorrangeC}\hss}}%
+ \ht\scratchbox\ruledheight
+ \dp\scratchbox\ruleddepth
+ \wd\scratchbox\zeropoint
+ \box\scratchbox
+ \box#2}%
+ \wd#2=\ruledwidth
+ \ht#2=\ruledheight
+ \dp#2=\ruleddepth}
+
+\def\colormarkbox % #1
+ {\ifincolor\@EA\docolormarkbox\else\@EA\gobbletwoarguments\fi1}
+
+\def\rastermarkbox % #1
+ {\ifincolor\@EA\docolormarkbox\else\@EA\gobbletwoarguments\fi0}
+
+%D \macros
+%D {showwhatsits, dontshowwhatsits}
+%D
+%D \TEX\ has three so called whatsits: \type {\mark}, \type
+%D {\write} and \type {\special}. The first one keeps track of
+%D the current state at page boundaries, the last two are used
+%D to communicate to the outside world. Due to fact that
+%D especially \type {\write} is often used in conjunction with
+%D \type {\edef}, we can only savely support that one in \ETEX.
+%D
+%D \bgroup \showwhatsits \setupcolors[state=start]
+%D
+%D Whatsits show up \color[blue]{in color} and are
+%D characterized bij their first character.\footnote [some note]
+%D {So we may encounter \type {w}, \type {m} and \type{s}.}
+%D They are \writestatus{dummy}{demo}\color[yellow]{stacked}.
+%D
+%D \egroup
+
+\newif\ifimmediatewrite
+
+\ifx\eTeXversion\undefined
+
+ \let\showwhatsits \relax
+ \let\dontshowwhatsits\relax
+
+\else
+
+ \let\supernormalmark \normalmark % mark may already superseded
+ \let\supernormalmarks \normalmarks % mark may already superseded
+
+ \def\showwhatsits
+ {\protected\def\normalmark {\visualwhatsit100+m\supernormalmark }%
+ \protected\def\normalmarks{\visualwhatsit100+m\supernormalmarks}%
+ \protected\def\special {\visualwhatsit0100s\normalspecial }%
+ \protected\def\write {\visualwhatsit001-w\normalwrite }%
+ \let\immediate\immediatewhatsit
+ \appendtoks\dontshowwhatsits\to\everystoptext}
+
+ \def\immediatewhatsit
+ {\bgroup\futurelet\next\doimmediatewhatsit}
+
+ \def\doimmediatewhatsit
+ {\ifx\next\write
+ \egroup\immediatewritetrue
+ \else
+ \egroup\expandafter\normalimmediate
+ \fi}
+
+ \def\dontshowwhatsits
+ {\let\immediate \normalimmediate
+ \let\normalmark\supernormalmark
+ \let\special \normalspecial
+ \let\write \normalwrite}
+
+ \def\visualwhatsit#1#2#3#4#5%
+ {\bgroup
+ \pushwhatsit
+ \dontinterfere
+ \dontcomplain
+ \dontshowcomposition
+ \dontshowwhatsits
+ \ttx
+ \ifvmode\donetrue\else\donefalse\fi
+ \setbox\scratchbox\hbox
+ {\ifdone\dostartgraycolormode0\else\dostartrgbcolormode#1#2#3\fi
+ #5\dostopcolormode}%
+ \setbox\scratchbox\hbox
+ {\ifdone\dostartrgbcolormode#1#2#3\else\dostartgraycolormode0\fi
+ \vrule\!!width\wd\scratchbox\dostopcolormode
+ \hskip-\wd\scratchbox\box\scratchbox}%
+ \scratchdimen1ex
+ \setbox\scratchbox\hbox
+ {\ifdone\hskip\else\raise#4\fi\scratchdimen\box\scratchbox}%
+ \smashbox\scratchbox
+ \ifdone\nointerlineskip\fi
+ \box\scratchbox
+ \ifvmode\nointerlineskip\fi
+ \popwhatsit
+ \egroup
+ \ifimmediatewrite
+ \immediatewritefalse
+ \expandafter\normalimmediate
+ \fi}
+
+ \def\pushwhatsit
+ {\ifzeropt\lastskip
+ \ifcase\lastpenalty
+ \ifzeropt\lastkern
+ \ifhmode
+ \let\popwhatsit\relax
+ \else
+ \edef\popwhatsit{\prevdepth\the\prevdepth}%
+ \fi
+ \else
+ \ifhmode
+ \edef\popwhatsit{\kern\the\lastkern}\unkern
+ \else
+ \edef\popwhatsit{\kern\the\lastkern\prevdepth\the\prevdepth}%
+ \kern-\lastkern
+ \fi
+ \fi
+ \else
+ \ifhmode
+ \edef\popwhatsit{\the\lastpenalty}%
+ \unpenalty
+ \else
+ \edef\popwhatsit{\penalty\the\lastpenalty\prevdepth\the\prevdepth}%
+ %\nobreak
+ \fi
+ \fi
+ \else
+ \ifhmode
+ \edef\popwhatsit{\hskip\the\lastskip}\unskip
+ \else
+ \edef\popwhatsit{\vskip\the\lastskip\prevdepth\the\prevdepth}%
+ \vskip-\lastskip
+ \fi
+ \fi}
+
+\fi
+
+%D The next macro can be used to keep track of classes of
+%D boxes (handy for development cq.\ tracing).
+
+\def\dodotagbox#1#2#3% can be reimplemented
+ {\def\next##1##2##3##4%
+ {\vbox to \ht#2{##3\hbox to \wd#2{##1#3##2}##4}}%
+ \processaction
+ [#1]
+ [ l=>\next\relax\hfill\vfill\vfill,
+ r=>\next\hfill\relax\vfill\vfill,
+ t=>\next\hfill\hfill\relax\vfill,
+ b=>\next\hfill\hfill\vfill\relax,
+ lt=>\next\relax\hfill\relax\vfill,
+ lb=>\next\relax\hfill\vfill\relax,
+ rt=>\next\hfill\relax\relax\vfill,
+ rb=>\next\hfill\relax\vfill\relax,
+ tl=>\next\relax\hfill\relax\vfill,
+ bl=>\next\relax\hfill\vfill\relax,
+ tr=>\next\hfill\relax\relax\vfill,
+ br=>\next\hfill\relax\vfill\relax,
+ \s!default=>\next\hfill\hfill\vfill\vfill,
+ \s!unknown=>\next\hfill\hfill\vfill\vfill]}
+
+\def\dotagbox[#1]#2%
+ {\bgroup
+ \dowithnextbox
+ {\setbox\scratchbox\flushnextbox
+ \setbox\nextbox\ifhbox\nextbox\hbox\else\vbox\fi
+ \bgroup
+ \startoverlay
+ {\copy\scratchbox}
+ {\dodotagbox{#1}\scratchbox{\framed
+ [\c!background=\v!screen,\c!backgroundscreen=1]{#2}}}
+ \stopoverlay
+ \egroup
+ \nextboxwd\the\wd\scratchbox
+ \nextboxht\the\ht\scratchbox
+ \nextboxdp\the\dp\scratchbox
+ \flushnextbox
+ \egroup}}
+
+\def\tagbox
+ {\dosingleempty\dotagbox}
+
+%D \macros
+%D {coloredhbox,coloredvbox,coloredvtop,
+%D coloredstrut}
+%D
+%D The following visualizations are used in some of the manuals:
+
+\definecolor[boxcolor:ht][r=.5,g=.75,b=.5]
+\definecolor[boxcolor:dp][r=.5,g=.5,b=.75]
+\definecolor[boxcolor:wd][r=.75,g=.5,b=.5]
+\definecolor[strutcolor] [r=.5,g=.25,b=.25]
+
+\def\coloredbox#1%
+ {\dowithnextbox{#1{\hbox
+ {\blackrule[\c!width=\nextboxwd,\c!height=\nextboxht,\c!depth=\zeropoint,\c!color=boxcolor:ht]%
+ \hskip-\nextboxwd
+ \blackrule[\c!width=\nextboxwd,\c!height=\zeropoint,\c!depth=\nextboxdp,\c!color=boxcolor:dp]%
+ \hskip-\nextboxwd
+ \box\nextbox}}}#1}
+
+\def\coloredhbox{\coloredbox\hbox}
+\def\coloredvbox{\coloredbox\vbox}
+\def\coloredvtop{\coloredbox\vtop}
+
+\def\coloredstrut
+ {\color[strutcolor]{\def\strutwidth{2\points}\setstrut\strut}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-acc.tex b/Master/texmf-dist/tex/context/base/enco-acc.tex
new file mode 100644
index 00000000000..e02536be6fe
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-acc.tex
@@ -0,0 +1,139 @@
+%D \module
+%D [ file=enco-acc,
+%D version=2000.20.12, % split from base file
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Composed Characters Commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen \& Ton Otten]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Although it is technically possible to redefine the commands
+%D that are responsible for building composed characters, this
+%D is seldom needed, since they map onto named glyphs. The
+%D meaning of these names glyphs may change, although their
+%D visual appearance seldom will.
+
+\startencoding[default]
+
+\defineaccent ^ A {\Acircumflex} \defineaccent ^ a {\acircumflex}
+\defineaccent ^ C {\Ccircumflex} \defineaccent ^ c {\ccircumflex}
+\defineaccent ^ E {\Ecircumflex} \defineaccent ^ e {\ecircumflex}
+\defineaccent ^ G {\Gcircumflex} \defineaccent ^ g {\gcircumflex}
+\defineaccent ^ H {\Hcircumflex} \defineaccent ^ h {\hcircumflex}
+\defineaccent ^ I {\Icircumflex} \defineaccent ^ i {\icircumflex} \defineaccent ^ {\i} {\icircumflex}
+\defineaccent ^ J {\Jcircumflex} \defineaccent ^ j {\jcircumflex} \defineaccent ^ {\j} {\jcircumflex}
+\defineaccent ^ O {\Ocircumflex} \defineaccent ^ o {\ocircumflex}
+\defineaccent ^ S {\Scircumflex} \defineaccent ^ s {\scircumflex}
+\defineaccent ^ U {\Ucircumflex} \defineaccent ^ u {\ucircumflex}
+\defineaccent ^ W {\Wcircumflex} \defineaccent ^ w {\wcircumflex}
+\defineaccent ^ Y {\Ycircumflex} \defineaccent ^ y {\ycircumflex}
+
+\defineaccent ` A {\Agrave} \defineaccent ` a {\agrave}
+\defineaccent ` E {\Egrave} \defineaccent ` e {\egrave}
+\defineaccent ` I {\Igrave} \defineaccent ` i {\igrave} \defineaccent ` {\i} {\igrave}
+\defineaccent ` O {\Ograve} \defineaccent ` o {\ograve}
+\defineaccent ` U {\Ugrave} \defineaccent ` u {\ugrave}
+\defineaccent ` Y {\Ygrave} \defineaccent ` y {\ygrave}
+
+\defineaccent ~ A {\Atilde} \defineaccent ~ a {\atilde}
+\defineaccent ~ I {\Itilde} \defineaccent ~ i {\itilde} \defineaccent ~ {\i} {\itilde}
+\defineaccent ~ O {\Otilde} \defineaccent ~ o {\otilde}
+\defineaccent ~ U {\Utilde} \defineaccent ~ u {\utilde}
+
+\defineaccent " A {\Adiaeresis} \defineaccent " a {\adiaeresis}
+\defineaccent " E {\Ediaeresis} \defineaccent " e {\ediaeresis}
+\defineaccent " I {\Idiaeresis} \defineaccent " i {\idiaeresis} \defineaccent " {\i} {\idiaeresis}
+\defineaccent " O {\Odiaeresis} \defineaccent " o {\odiaeresis}
+\defineaccent " U {\Udiaeresis} \defineaccent " u {\udiaeresis}
+\defineaccent " Y {\Ydiaeresis} \defineaccent " y {\ydiaeresis}
+
+\defineaccent ' A {\Aacute} \defineaccent ' a {\aacute}
+\defineaccent ' C {\Cacute} \defineaccent ' c {\cacute}
+\defineaccent ' E {\Eacute} \defineaccent ' e {\eacute}
+\defineaccent ' I {\Iacute} \defineaccent ' i {\iacute} \defineaccent ' {\i} {\iacute}
+\defineaccent ' L {\Lacute} \defineaccent ' l {\lacute}
+\defineaccent ' N {\Nacute} \defineaccent ' n {\nacute}
+\defineaccent ' O {\Oacute} \defineaccent ' o {\oacute}
+\defineaccent ' R {\Racute} \defineaccent ' r {\racute}
+\defineaccent ' S {\Sacute} \defineaccent ' s {\sacute}
+\defineaccent ' U {\Uacute} \defineaccent ' u {\uacute}
+\defineaccent ' Y {\Yacute} \defineaccent ' y {\yacute}
+\defineaccent ' Z {\Zacute} \defineaccent ' z {\zacute}
+
+\defineaccent . C {\Cdotaccent} \defineaccent . c {\cdotaccent}
+\defineaccent . E {\Edotaccent} \defineaccent . e {\edotaccent}
+\defineaccent . G {\Gdotaccent} \defineaccent . g {\gdotaccent}
+\defineaccent . I {\Idotaccent} \defineaccent . i {\idotaccent} \defineaccent . {\i} {\idotaccent}
+\defineaccent . Z {\Zdotaccent} \defineaccent . z {\zdotaccent}
+
+\defineaccent = A {\Amacron} \defineaccent = a {\amacron}
+\defineaccent = E {\Emacron} \defineaccent = e {\emacron}
+\defineaccent = I {\Imacron} \defineaccent = i {\imacron} \defineaccent = {\i} {\imacron}
+\defineaccent = O {\Omacron} \defineaccent = o {\omacron}
+\defineaccent = U {\Umacron} \defineaccent = u {\umacron}
+
+\defineaccent c C {\Ccedilla} \defineaccent c c {\ccedilla}
+\defineaccent c K {\Kcedilla} \defineaccent c k {\kcedilla}
+\defineaccent c L {\Lcedilla} \defineaccent c l {\lcedilla}
+\defineaccent c N {\Ncedilla} \defineaccent c n {\ncedilla}
+\defineaccent c R {\Rcedilla} \defineaccent c r {\rcedilla}
+\defineaccent c S {\Scedilla} \defineaccent c s {\scedilla}
+\defineaccent c T {\Tcedilla} \defineaccent c t {\tcedilla}
+
+\defineaccent H O {\Ohungarumlaut} \defineaccent H o {\ohungarumlaut}
+\defineaccent H u {\uhungarumlaut} \defineaccent H U {\Uhungarumlaut}
+
+\defineaccent k A {\Aogonek} \defineaccent k a {\aogonek}
+\defineaccent k E {\Eogonek} \defineaccent k e {\eogonek}
+\defineaccent k I {\Iogonek} \defineaccent k i {\iogonek}
+\defineaccent k U {\Uogonek} \defineaccent k u {\uogonek}
+
+\defineaccent r A {\Aring} \defineaccent r a {\aring}
+\defineaccent r U {\Uring} \defineaccent r u {\uring}
+
+\defineaccent u A {\Abreve} \defineaccent u a {\abreve}
+\defineaccent u E {\Ebreve} \defineaccent u e {\ebreve}
+\defineaccent u G {\Gbreve} \defineaccent u g {\gbreve}
+\defineaccent u I {\Ibreve} \defineaccent u i {\ibreve} \defineaccent u {\i} {\ibreve}
+\defineaccent u O {\Obreve} \defineaccent u o {\obreve}
+\defineaccent u U {\Ubreve} \defineaccent u u {\ubreve}
+
+\defineaccent v C {\Ccaron} \defineaccent v c {\ccaron}
+\defineaccent v D {\Dcaron} \defineaccent v d {\dcaron}
+\defineaccent v E {\Ecaron} \defineaccent v e {\ecaron}
+\defineaccent v L {\Lcaron} \defineaccent v l {\lcaron}
+\defineaccent v N {\Ncaron} \defineaccent v n {\ncaron}
+\defineaccent v R {\Rcaron} \defineaccent v r {\rcaron}
+\defineaccent v S {\Scaron} \defineaccent v s {\scaron}
+\defineaccent v T {\Tcaron} \defineaccent v t {\tcaron}
+\defineaccent v Z {\Zcaron} \defineaccent v z {\zcaron}
+
+\stopencoding
+
+\startencoding[default]
+
+% vietnamese: if needed, \useencoding[enco-vna]
+
+\stopencoding
+
+% For Tobias Burnus, who wants:
+%
+% \starttypen
+% \setupinteraction[state=start]
+% \setupinteractionscreen[option=bookmark]
+% \placebookmarks[chapter]
+%
+% \starttext \chapter{F\"ur Na\"ive und Na\"\i ve} \stoptext
+% \stoptypen
+
+\startencoding[default]
+
+ \defineaccent " {\i} {\idiaeresis}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-agr.tex b/Master/texmf-dist/tex/context/base/enco-agr.tex
new file mode 100644
index 00000000000..ff53e02ded1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-agr.tex
@@ -0,0 +1,356 @@
+%D \module
+%D [ file=enco-agr,
+%D version=2005.02.20,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Ancient Greek,
+%D author=Thomas A. Schmitz,
+%D date=\currentdate]
+
+\startencoding[agr]
+
+\definecharacter greeksigmalunate 1
+\definecharacter endash 2
+\definecharacter emdash 3
+\definecharacter apostrophe 4
+
+\definecharacter textbraceleft 8
+\definecharacter textbraceright 9
+\definecharacter textbreve 10
+
+\definecharacter textdoublebracketleft 11
+\definecharacter textdoublebracketright 12
+\definecharacter greekSigmalunate 13
+\definecharacter greekIotadialytika 14
+\definecharacter greekUpsilondialytika 15
+
+\definecharacter greekepsilonperispomeni 18
+\definecharacter greekomicronperispomeni 19
+\definecharacter greekepsilondasiaperispomeni 20
+\definecharacter greekomicrondasiaperispomeni 21
+\definecharacter greekepsilonpsiliperispomeni 22
+\definecharacter greekomicronpsiliperispomeni 23
+\definecharacter greekiotadialytikaperispomeni 24
+\definecharacter greekupsilondialytikaperispomeni 25
+\definecharacter greekdialytikaperispomeni 26
+
+\definecharacter textbottomdotsmall 31
+
+\definecharacter textbottomdot 33
+\definecharacter greeksampi 34
+\definecharacter greekdigamma 35
+\definecharacter greekstigma 36
+\definecharacter greeknumkoppa 37
+\definecharacter greekkoppa 38
+\definecharacter guilsingleright 39
+
+\definecharacter textdag 43
+
+\definecharacter oxia 47
+
+\definecharacter greekanoteleia 59
+\definecharacter dasia 60
+
+\definecharacter psili 62
+
+% Question, etc., look out of sync with Oxonia, however
+
+\definecharacter dialytika 64
+\definecharacter greekAlpha 65
+\definecharacter greekBeta 66
+\definecharacter greekomegaiotasub 67
+\definecharacter greekDelta 68
+\definecharacter greekEpsilon 69
+\definecharacter greekPhi 70
+\definecharacter greekGamma 71
+\definecharacter greekEta 72
+\definecharacter greekIota 73
+\definecharacter greekTheta 74
+\definecharacter greekKappa 75
+\definecharacter greekLambda 76
+\definecharacter greekMu 77
+\definecharacter greekNu 78
+\definecharacter greekOmicron 79
+\definecharacter greekPi 80
+\definecharacter greekChi 81
+\definecharacter greekRho 82
+\definecharacter greekSigma 83
+\definecharacter greekTau 84
+\definecharacter greekUpsilon 85
+\definecharacter greeketaiotasub 86
+\definecharacter greekOmega 87
+\definecharacter greekXi 88
+\definecharacter greekPsi 89
+\definecharacter greekZeta 90
+\definecharacter bracketleft 91
+\definecharacter greekvaria 92
+\definecharacter bracketright 93
+\definecharacter perispomeni 94
+
+\definecharacter guilsingleleft 96
+
+% the above is a quote character
+\definecharacter greekalpha 97
+\definecharacter greekbeta 98
+\definecharacter greekfinalsigma 99
+\definecharacter greekdelta 100
+\definecharacter greekepsilon 101
+\definecharacter greekphi 102
+\definecharacter greekgamma 103
+\definecharacter greeketa 104
+\definecharacter greekiota 105
+\definecharacter greektheta 106
+\definecharacter greekkappa 107
+\definecharacter greeklambda 108
+\definecharacter greekmu 109
+\definecharacter greeknu 110
+\definecharacter greekomicron 111
+\definecharacter greekpi 112
+\definecharacter greekchi 113
+\definecharacter greekrho 114
+\definecharacter greeksigma 115
+\definecharacter greektau 116
+\definecharacter greekupsilon 117
+\definecharacter greekalphaiotasub 118
+\definecharacter greekomega 119
+\definecharacter greekxi 120
+\definecharacter greekpsi 121
+\definecharacter greekzeta 122
+\definecharacter floorleft 123
+\definecharacter textbar 124
+\definecharacter floorright 125
+\definecharacter perispomeni 126
+
+\definecharacter quotedblleft 128
+\definecharacter quotedblright 129
+\definecharacter exclam 130
+\definecharacter greekiotadasia 131
+\definecharacter greekiotapsili 132
+\definecharacter greekiotaoxia 133
+\definecharacter greekiotadasiatonos 134
+\definecharacter greekiotapsilitonos 135
+\definecharacter greekiotavaria 136
+\definecharacter greekiotadasiavaria 137
+\definecharacter greekiotapsilivaria 138
+\definecharacter greekiotaperispomeni 139
+\definecharacter greekiotadasiaperispomeni 140
+\definecharacter greekiotapsiliperispomeni 141
+\definecharacter greekiotadialytika 142
+\definecharacter greekiotadialytikatonos 143
+\definecharacter greekiotadialytikavaria 144
+\definecharacter greekdasiaperispomeni 145
+\definecharacter greekpsiliperispomeni 146
+\definecharacter greekdasiatonos 147
+\definecharacter greekpsilitonos 148
+\definecharacter greekdasiavaria 149
+\definecharacter greekpsilivaria 150
+\definecharacter greekdialytikatonos 151
+\definecharacter greekepsilondasia 152
+\definecharacter greekepsilonpsili 153
+\definecharacter greekepsilonoxia 154
+\definecharacter greekepsilondasiatonos 155
+\definecharacter greekepsilonpsilitonos 156
+\definecharacter greekepsilonvaria 157
+\definecharacter greekepsilondasiavaria 158
+\definecharacter greekepsilonpsilivaria 159
+\definecharacter greekdialytikavaria 160
+\definecharacter greekalphadasia 161
+\definecharacter greekalphapsili 162
+\definecharacter greekalphaoxia 163
+\definecharacter greekalphadasiatonos 164
+\definecharacter greekalphapsilitonos 165
+\definecharacter greekalphavaria 166
+\definecharacter greekalphadasiavaria 167
+\definecharacter greekalphapsilivaria 168
+\definecharacter greekalphaperispomeni 169
+\definecharacter greekalphadasiaperispomeni 170
+\definecharacter greekalphapsiliperispomeni 171
+\definecharacter greekalphaiotasubdasia 172
+\definecharacter greekalphaiotasubpsili 173
+\definecharacter greekalphaiotasubtonos 174
+\definecharacter greekalphaiotasubdasiatonos 175
+\definecharacter greekalphaiotasubpsilitonos 176
+\definecharacter greekalphaiotasubvaria 177
+\definecharacter greekalphaiotasubdasiavaria 178
+\definecharacter greekalphaiotasubpsilivaria 179
+\definecharacter greekalphaiotasubperispomeni 180
+\definecharacter greekalphaiotasubdasiaperispomeni 181
+\definecharacter greekalphaiotasubpsiliperispomeni 182
+\definecharacter greekrhodasia 183
+\definecharacter greekrhopsili 184
+\definecharacter greeketadasia 185
+\definecharacter greeketapsili 186
+\definecharacter greeketaoxia 187
+\definecharacter greeketadasiatonos 188
+\definecharacter greeketapsilitonos 189
+\definecharacter greeketavaria 190
+\definecharacter greeketadasiavaria 191
+\definecharacter greeketapsilivaria 192
+\definecharacter greeketaperispomeni 193
+\definecharacter greeketadasiaperispomeni 194
+\definecharacter greeketapsiliperispomeni 195
+\definecharacter textslash 196
+\definecharacter greeketaiotasubdasia 197
+\definecharacter greeketaiotasubpsili 198
+\definecharacter greeketaiotasubtonos 199
+\definecharacter greeketaiotasubdasiatonos 200
+\definecharacter greeketaiotasubpsilitonos 201
+\definecharacter greeketaiotasubvaria 202
+\definecharacter greeketaiotasubdasiavaria 203
+\definecharacter greeketaiotasubpsilivaria 204
+\definecharacter greeketaiotasubperispomeni 205
+\definecharacter greeketaiotasubdasiaperispomeni 206
+\definecharacter greeketaiotasubpsiliperispomeni 207
+\definecharacter greekomicrondasia 208
+\definecharacter greekomicronpsili 209
+\definecharacter greekomicronoxia 210
+\definecharacter greekomicrondasiatonos 211
+\definecharacter greekomicronpsilitonos 212
+\definecharacter greekomicronvaria 213
+\definecharacter greekomicrondasiavaria 214
+\definecharacter greekomicronpsilivaria 215
+\definecharacter greekupsilondasia 216
+\definecharacter greekupsilonpsili 217
+\definecharacter greekupsilonoxia 218
+\definecharacter greekupsilondasiatonos 219
+\definecharacter greekupsilonpsilitonos 220
+\definecharacter greekupsilonvaria 221
+\definecharacter greekupsilondasiavaria 222
+\definecharacter greekupsilonpsilivaria 223
+\definecharacter greekupsilonperispomeni 224
+\definecharacter greekupsilondasiaperispomeni 225
+\definecharacter greekupsilonpsiliperispomeni 226
+\definecharacter greekupsilondiaeresis 227
+\definecharacter greekupsilondialytikatonos 228
+\definecharacter greekupsilondialytikavaria 229
+\definecharacter greekomegadasia 230
+\definecharacter greekomegapsili 231
+\definecharacter greekomegaoxia 232
+\definecharacter greekomegadasiatonos 233
+\definecharacter greekomegapsilitonos 234
+\definecharacter greekomegavaria 235
+\definecharacter greekomegadasiavaria 236
+\definecharacter greekomegapsilivaria 237
+\definecharacter greekomegaperispomeni 238
+\definecharacter greekomegadasiaperispomeni 239
+\definecharacter greekomegapsiliperispomeni 240
+\definecharacter greekomegaiotasubdasia 241
+\definecharacter greekomegaiotasubpsili 242
+\definecharacter greekomegaiotasubtonos 243
+\definecharacter greekomegaiotasubdasiatonos 244
+\definecharacter greekomegaiotasubpsilitonos 245
+\definecharacter greekomegaiotasubvaria 246
+\definecharacter greekomegaiotasubdasiavaria 247
+\definecharacter greekomegaiotasubpsilivaria 248
+\definecharacter greekomegaiotasubperispomeni 249
+\definecharacter greekomegaiotasubdasiaperispomeni 250
+\definecharacter greekomegaiotasubpsiliperispomeni 251
+\definecharacter greeknumeralsign 254
+\definecharacter greeknumeralsignlower 255
+
+\stopencoding
+
+\startencoding[default]
+
+\definecharacter greekAlphapsili {\psili \greekAlpha}
+\definecharacter greekAlphadasia {\dasia \greekAlpha}
+\definecharacter greekAlphapsilivaria {\greekpsilivaria \greekAlpha}
+\definecharacter greekAlphadasiavaria {\greekdasiavaria \greekAlpha}
+\definecharacter greekAlphapsilitonos {\greekpsilitonos \greekAlpha}
+\definecharacter greekAlphadasiatonos {\greekdasiatonos \greekAlpha}
+\definecharacter greekAlphapsiliperispomeni {\greekpsiliperispomeni \greekAlpha}
+\definecharacter greekAlphadasiaperispomeni {\greekdasiaperispomeni \greekAlpha}
+\definecharacter greekEpsilonpsili {\psili \greekEpsilon}
+\definecharacter greekEpsilondasia {\dasia \greekEpsilon}
+\definecharacter greekEpsilonpsilivaria {\greekpsilivaria \greekEpsilon}
+\definecharacter greekEpsilondasiavaria {\greekdasiavaria \greekEpsilon}
+\definecharacter greekEpsilonpsilitonos {\greekpsilitonos \greekEpsilon}
+\definecharacter greekEpsilondasiatonos {\greekdasiatonos \greekEpsilon}
+\definecharacter greekEtapsili {\psili \greekEta}
+\definecharacter greekEtadasia {\dasia \greekEta}
+\definecharacter greekEtapsilivaria {\greekpsilivaria \greekEta}
+\definecharacter greekEtadasiavaria {\greekdasiavaria \greekEta}
+\definecharacter greekEtapsilitonos {\greekpsilitonos \greekEta}
+\definecharacter greekEtadasiatonos {\greekdasiatonos \greekEta}
+\definecharacter greekEtapsiliperispomeni {\greekpsiliperispomeni \greekEta}
+\definecharacter greekEtadasiaperispomeni {\greekdasiaperispomeni \greekEta}
+\definecharacter greekIotapsili {\psili \greekIota}
+\definecharacter greekIotadasia {\dasia \greekIota}
+\definecharacter greekIotapsilivaria {\greekpsilivaria \greekIota}
+\definecharacter greekIotadasiavaria {\greekdasiavaria \greekIota}
+\definecharacter greekIotapsilitonos {\greekpsilitonos \greekIota}
+\definecharacter greekIotadasiatonos {\greekdasiatonos \greekIota}
+\definecharacter greekIotapsiliperispomeni {\greekpsiliperispomeni \greekIota}
+\definecharacter greekIotadasiaperispomeni {\greekdasiaperispomeni \greekIota}
+\definecharacter greekOmicronpsili {\psili \greekOmicron}
+\definecharacter greekOmicrondasia {\dasia \greekOmicron}
+\definecharacter greekOmicronpsilivaria {\greekpsilivaria \greekOmicron}
+\definecharacter greekOmicrondasiavaria {\greekdasiavaria \greekOmicron}
+\definecharacter greekOmicronpsilitonos {\greekpsilitonos \greekOmicron}
+\definecharacter greekOmicrondasiatonos {\greekdasiatonos \greekOmicron}
+\definecharacter greekUpsilondasia {\dasia \greekUpsilon}
+\definecharacter greekUpsilondasiavaria {\greekdasiavaria \greekUpsilon}
+\definecharacter greekUpsilondasiatonos {\greekdasiatonos \greekUpsilon}
+\definecharacter greekUpsilondasiaperispomeni {\greekdasiaperispomeni \greekUpsilon}
+\definecharacter greekOmegapsili {\psili \greekOmega}
+\definecharacter greekOmegadasia {\dasia \greekOmega}
+\definecharacter greekOmegapsilivaria {\greekpsilivaria \greekOmega}
+\definecharacter greekOmegadasiavaria {\greekdasiavaria \greekOmega}
+\definecharacter greekOmegapsilitonos {\greekpsilitonos \greekOmega}
+\definecharacter greekOmegadasiatonos {\greekdasiatonos \greekOmega}
+\definecharacter greekOmegapsiliperispomeni {\greekpsiliperispomeni \greekOmega}
+\definecharacter greekOmegadasiaperispomeni {\greekdasiaperispomeni \greekOmega}
+\definecharacter greekAlphaiotasubpsili {\psili \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubdasia {\dasia \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubpsilivaria {\greekpsilivaria \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubdasiavaria {\greeldasiavaria \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubpsilitonos {\greekpsilitonos \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubdasiatonos {\greekdasiatonos \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubpsiliperispomeni {\greekpsiliperispomeni \greekAlpha \greekiota}
+\definecharacter greekAlphaiotasubdasiaperispomeni {\greekdasiaperispomeni \greekAlpha \greekiota}
+\definecharacter greekEtaiotasubpsili {\psili \greekEta \greekiota}
+\definecharacter greekEtaiotasubdasia {\dasia \greekEta \greekiota}
+\definecharacter greekEtaiotasubpsilivaria {\greekpsilivaria \greekEta \greekiota}
+\definecharacter greekEtaiotasubdasiavaria {\greekdasiavaria \greekEta \greekiota}
+\definecharacter greekEtaiotasubpsilitonos {\greekpsilitonos \greekEta \greekiota}
+\definecharacter greekEtaiotasubdasiatonos {\greekdasiatonos \greekEta \greekiota}
+\definecharacter greekEtaiotasubpsiliperispomeni {\greekpsiliperispomeni \greekEta \greekiota}
+\definecharacter greekEtaiotasubdasiaperispomeni {\greekdasiaperispomeni \greekEta \greekiota}
+\definecharacter greekOmegaiotasubpsili {\psili \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubdasia {\dasia \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubpsilivaria {\greekpsilivaria \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubdasiavaria {\greekdasiavaria \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubpsilitonos {\greekpsilitonos \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubdasiatonos {\greekdasiatonos \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubpsiliperispomeni {\greekpsiliperispomeni \greekOmega \greekiota}
+\definecharacter greekOmegaiotasubdasiaperispomeni {\greekdasiaperispomeni \greekOmega \greekiota}
+\definecharacter greekAlphavaria {\varia \greekAlpha}
+\definecharacter greekAlphaoxia {\oxia \greekAlpha}
+\definecharacter greekAlphaiotasub {\greekAlpha \greekiota}
+\definecharacter greekEpsilonvaria {\varia \greekEpsilon}
+\definecharacter greekEpsilonoxia {\oxia \greekEpsilon}
+\definecharacter greekEtavaria {\varia \greekEta}
+\definecharacter greekEtaoxia {\oxia \greekEta}
+\definecharacter greekEtaiotasub {\greekEta \greekiota}
+\definecharacter greekIotavaria {\varia \greekIota}
+\definecharacter greekIotaoxia {\oxia \greekIota}
+\definecharacter greekUpsilonvaria {\varia \greekUpsilon}
+\definecharacter greekUpsilonoxia {\oxia \greekUpsilon}
+\definecharacter greekOmicronvaria {\varia \greekOmicron}
+\definecharacter greekOmicronoxia {\oxia \greekOmicron}
+\definecharacter greekOmegavaria {\varia \greekOmega}
+\definecharacter greekOmegaoxia {\oxia \greekOmega}
+\definecharacter greekOmegaiotasub {\greekOmega \greekiota}
+\definecharacter greekRhodasia {\dasia \greekRho}
+\definecharacter digamma {\greekdigamma}
+\definecharacter sampi {\greeksampi}
+\definecharacter stigma {\greekstigma}
+\definecharacter koppa {\greeknumkoppa}
+\definecharacter lunars {\greeksigmalunate}
+\definecharacter lunarS {\greekSigmalunate}
+\definecharacter halfbraceleft {\floorleft}
+\definecharacter halfbraceright {\floorright}
+\definecharacter crux {\textdag}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ans.tex b/Master/texmf-dist/tex/context/base/enco-ans.tex
new file mode 100644
index 00000000000..6c7acf73189
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ans.tex
@@ -0,0 +1,236 @@
+%D \module
+%D [ file=enco-ans,
+%D version=2000.05.07, % 1995.01.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=\YandY\ texnansi Encoding,
+%D author={Patrick Gundlach, Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is \YandY's texnansi encoding vector, which combines
+%D the best of the ansi encoding vector (prebuilt accented
+%D characters etc.) and some of \TEX's vectors.
+
+\startmapping[texnansi]
+
+\resetcaserange 128 to 158
+\resetcaserange 160 to 191
+\resetcaserange 215 to 215
+\resetcaserange 247 to 247
+
+\definecasemaps 192 to 214 lc +32 uc 0
+\definecasemaps 224 to 246 lc 0 uc -32
+\definecasemaps 216 to 222 lc +32 uc 0
+\definecasemaps 248 to 254 lc 0 uc -32
+
+\definecaseself 223
+\definecaseswap 156 140
+\definecaseswap 255 159
+
+% needed by some patterns:
+
+% \definecaseself 34 % quotedbl
+% \definecaseself 132 % quotedblbase
+% \definecaseself 147 % quotedblleft
+% \definecaseself 148 % quotedblright
+% \definecaseself 129 % quotesingle
+% \definecaseself 130 % quotesinglebase
+% \definecaseself 145 % quoteleft
+% \definecaseself 146 % quoteright
+
+\stopmapping
+
+\startencoding[texnansi]
+
+\definecharacter textacute 19
+\definecharacter textbreve 21
+\definecharacter textcaron 20
+\definecharacter textcedilla 184
+\definecharacter textcircumflex 94 % 136
+\definecharacter textdiaeresis 168
+\definecharacter textdotaccent 5
+\definecharacter textgrave 18
+\definecharacter texthungarumlaut 6
+\definecharacter textmacron 175
+\definecharacter textogonek 7
+\definecharacter textring 23
+\definecharacter texttilde 152
+
+\definecharacter dotlessi 16 % 105
+\definecharacter dotlessj 17
+
+\definecharacter endash 150 % lig
+\definecharacter emdash 151 % lig
+
+\definecharacter aeligature 230
+\definecharacter AEligature 198
+\definecharacter oeligature 156
+\definecharacter OEligature 140
+
+\definecharacter ssharp 223
+
+\definecharacter thorn 254
+\definecharacter Thorn 222
+
+\definecharacter Dstroke 208 % also Eth, mapped in enco-def
+\definecharacter eth 240
+
+\definecharacter exclamdown 161
+\definecharacter questiondown 191
+
+\definecharacter copyright 169
+\definecharacter registered 174
+\definecharacter trademark 153
+
+\definecharacter sectionmark 167
+\definecharacter paragraphmark 182
+
+\definecharacter onequarter 188
+\definecharacter onehalf 189
+\definecharacter threequarter 190
+
+\definecharacter onesuperior 185
+\definecharacter twosuperior 178
+\definecharacter threesuperior 179
+
+\definecharacter textcent 162 % ?
+\definecharacter textcurrency 164
+\definecharacter texteuro 1
+\definecharacter textflorin 131
+\definecharacter textsterling 163
+\definecharacter textyen 165
+
+\definecharacter percent 37
+\definecharacter perthousand 137
+
+\definecharacter softhyphen 45
+\definecharacter periodcentered 183
+
+\definecharacter textasciicircum 142
+\definecharacter textasciitilde 158
+\definecharacter textbackslash 92
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textunderscore 95
+
+\definecharacter textbrokenbar 166
+\definecharacter textbullet 149
+\definecharacter textdag 134
+\definecharacter textddag 135
+\definecharacter textdegree 176
+\definecharacter textdiv 247
+\definecharacter textellipsis 133
+\definecharacter textfraction 4
+\definecharacter textlognot 172
+\definecharacter textminus 143
+\definecharacter textmu 181
+\definecharacter textmultiply 215
+\definecharacter textpm 177
+
+\definecharacter quotedbl 34
+\definecharacter quotedblbase 132
+\definecharacter quotedblleft 147
+\definecharacter quotedblright 148
+
+\definecharacter quotesingle 129
+\definecharacter quotesinglebase 130
+
+\definecharacter quoteleft 145
+\definecharacter quoteright 146
+
+\definecharacter guilsingleleft 139
+\definecharacter guilsingleright 155
+\definecharacter leftguillemot 171
+\definecharacter rightguillemot 187
+
+\definecharacter aacute 225
+\definecharacter Aacute 193
+\definecharacter eacute 233
+\definecharacter Eacute 201
+\definecharacter iacute 237
+\definecharacter Iacute 205
+\definecharacter oacute 243
+\definecharacter Oacute 211
+\definecharacter uacute 250
+\definecharacter Uacute 218
+\definecharacter yacute 253
+\definecharacter Yacute 221
+
+\definecharacter scaron 154
+\definecharacter Scaron 138
+\definecharacter zcaron 157
+\definecharacter Zcaron 141
+
+\definecharacter ccedilla 231
+\definecharacter Ccedilla 199
+
+\definecharacter acircumflex 226
+\definecharacter Acircumflex 194
+\definecharacter ecircumflex 234
+\definecharacter Ecircumflex 202
+\definecharacter icircumflex 238
+\definecharacter Icircumflex 206
+\definecharacter ocircumflex 244
+\definecharacter Ocircumflex 212
+\definecharacter ucircumflex 251
+\definecharacter Ucircumflex 219
+
+\definecharacter adiaeresis 228
+\definecharacter Adiaeresis 196
+\definecharacter ediaeresis 235
+\definecharacter Ediaeresis 203
+\definecharacter idiaeresis 239
+\definecharacter Idiaeresis 207
+\definecharacter odiaeresis 246
+\definecharacter Odiaeresis 214
+\definecharacter udiaeresis 252
+\definecharacter Udiaeresis 220
+\definecharacter ydiaeresis 255
+\definecharacter Ydiaeresis 159
+
+\definecharacter agrave 224
+\definecharacter Agrave 192
+\definecharacter egrave 232
+\definecharacter Egrave 200
+\definecharacter igrave 236
+\definecharacter Igrave 204
+\definecharacter ograve 242
+\definecharacter Ograve 210
+\definecharacter ugrave 249
+\definecharacter Ugrave 217
+
+\definecharacter aring 229
+\definecharacter Aring 197
+
+\definecharacter Lstroke 128
+\definecharacter lstroke 144
+\definecharacter ostroke 248
+\definecharacter Ostoke 216
+
+\definecharacter atilde 227
+\definecharacter Atilde 195
+\definecharacter ntilde 241
+\definecharacter Ntilde 209
+\definecharacter otilde 245
+\definecharacter Otilde 213
+
+\stopencoding
+
+% will be replaced by math collection, fails anyway
+
+\startencoding[texnansi]
+
+\definecharacter mathgrave "7060
+\definecharacter mathacute "70B4
+\definecharacter mathhat "7088
+\definecharacter mathtilde "7098
+\definecharacter mathddot "70A8
+\definecharacter mathbar "70AF
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-cas.tex b/Master/texmf-dist/tex/context/base/enco-cas.tex
new file mode 100644
index 00000000000..61155ee5c3d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-cas.tex
@@ -0,0 +1,143 @@
+%D \module
+%D [ file=enco-cas,
+%D version=2005.08.23,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Named Glyph Case Mapping,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D For quite some years \CONTEXT\ used a rather compact way of
+%D defining encoded characters as well as case maps. When late
+%D 2000 more advanced remapping features were needed (like pdf
+%D unicode remapping), named glyphs were introduced to keep the
+%D coding tables more readable. At the same time, we introduced
+%D named glyph case mapping.
+
+\defineULcharacter Acircumflex acircumflex
+\defineULcharacter Ccircumflex ccircumflex
+\defineULcharacter Ecircumflex ecircumflex
+\defineULcharacter Gcircumflex gcircumflex
+\defineULcharacter Hcircumflex hcircumflex
+\defineULcharacter Icircumflex icircumflex
+\defineULcharacter Jcircumflex jcircumflex
+\defineULcharacter Ocircumflex ocircumflex
+\defineULcharacter Scircumflex scircumflex
+\defineULcharacter Ucircumflex ucircumflex
+\defineULcharacter Wcircumflex wcircumflex
+\defineULcharacter Ycircumflex ycircumflex
+
+\defineULcharacter Agrave agrave
+\defineULcharacter Egrave egrave
+\defineULcharacter Igrave igrave
+\defineULcharacter Ograve ograve
+\defineULcharacter Ugrave ugrave
+\defineULcharacter Ygrave ygrave
+
+\defineULcharacter Atilde atilde
+\defineULcharacter Itilde itilde
+\defineULcharacter Otilde otilde
+\defineULcharacter Ntilde ntilde
+\defineULcharacter Utilde utilde
+
+\defineULcharacter Adiaeresis adiaeresis
+\defineULcharacter Ediaeresis ediaeresis
+\defineULcharacter Idiaeresis idiaeresis
+\defineULcharacter Odiaeresis odiaeresis
+\defineULcharacter Udiaeresis udiaeresis
+\defineULcharacter Ydiaeresis ydiaeresis
+
+\defineULcharacter Aacute aacute
+\defineULcharacter Cacute cacute
+\defineULcharacter Eacute eacute
+\defineULcharacter Iacute iacute
+\defineULcharacter Lacute lacute
+\defineULcharacter Nacute nacute
+\defineULcharacter Oacute oacute
+\defineULcharacter Racute racute
+\defineULcharacter Sacute sacute
+\defineULcharacter Uacute uacute
+\defineULcharacter Yacute yacute
+\defineULcharacter Zacute zacute
+
+\defineULcharacter Dstroke dstroke
+\defineULcharacter Hstroke hstroke
+\defineULcharacter Lstroke lstroke
+\defineULcharacter Lslash lslash % = lstroke
+\defineULcharacter Ostroke ostroke
+\defineULcharacter Tstroke tstroke
+
+\defineULcharacter Cdotaccent cdotaccent
+\defineULcharacter Edotaccent edotaccent
+\defineULcharacter Gdotaccent gdotaccent
+\defineULcharacter Idotaccent idotaccent
+\defineULcharacter Zdotaccent zdotaccent
+
+\defineULcharacter Amacron amacron
+\defineULcharacter Emacron emacron
+\defineULcharacter Imacron imacron
+\defineULcharacter Omacron omacron
+\defineULcharacter Umacron umacron
+
+\defineULcharacter Ccedilla ccedilla
+\defineULcharacter Gcedilla gcedilla % = gcommaaccent
+\defineULcharacter Kcedilla kcedilla % = kcommaaccent
+\defineULcharacter Lcedilla lcedilla % = lcommaaccent
+\defineULcharacter Ncedilla ncedilla % = ncommaaccent
+\defineULcharacter Rcedilla rcedilla % = rcommaaccent
+\defineULcharacter Scedilla scedilla
+\defineULcharacter Tcedilla tcedilla
+
+\defineULcharacter Ccommaaccent ccommaaccent
+\defineULcharacter Gcommaaccent gcommaaccent
+\defineULcharacter Kcommaaccent kcommaaccent
+\defineULcharacter Lcommaaccent lcommaaccent
+\defineULcharacter Ncommaaccent ncommaaccent
+\defineULcharacter Rcommaaccent rcommaaccent
+\defineULcharacter Scommaaccent scommaaccent
+\defineULcharacter Tcommaaccent tcommaaccent
+
+\defineULcharacter Ohungarumlaut ohungarumlaut
+\defineULcharacter Uhungarumlaut uhungarumlaut
+
+\defineULcharacter Aogonek aogonek
+\defineULcharacter Eogonek eogonek
+\defineULcharacter Iogonek iogonek
+\defineULcharacter Uogonek uogonek
+
+\defineULcharacter Aring aring
+\defineULcharacter Uring uring
+
+\defineULcharacter Abreve abreve
+\defineULcharacter Ebreve ebreve
+\defineULcharacter Gbreve gbreve
+\defineULcharacter Ibreve ibreve
+\defineULcharacter Obreve obreve
+\defineULcharacter Ubreve ubreve
+
+\defineULcharacter Ccaron ccaron
+\defineULcharacter Dcaron dcaron
+\defineULcharacter Ecaron ecaron
+\defineULcharacter Lcaron lcaron
+\defineULcharacter Ncaron ncaron
+\defineULcharacter Rcaron rcaron
+\defineULcharacter Scaron scaron
+\defineULcharacter Tcaron tcaron
+\defineULcharacter Zcaron zcaron
+
+\defineULcharacter dotlessI dotlessi
+\defineULcharacter dotlessJ dotlessj
+
+\defineULcharacter AEligature aeligature
+\defineULcharacter OEligature oeligature
+\defineULcharacter Ssharp ssharp
+\defineULcharacter IJligature ijligature
+
+\defineULcharacter Eth eth
+\defineULcharacter Thorn thorn
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-chi.tex b/Master/texmf-dist/tex/context/base/enco-chi.tex
new file mode 100644
index 00000000000..5addd57e93c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-chi.tex
@@ -0,0 +1,261 @@
+%D \module
+%D [ file=enco-chi,
+%D version=1999.12.02,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Traditional and Simplified Chinese,
+%D author={Wang Lei \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% actually this is also a filter -> enco-fcn.tex
+
+%D This is an experimental definition. Since we are dealing
+%D with unicode's, the registered values are not saved, so
+%D actually we're dealing with an pseudo encoding. The digits
+%D on the other hand are encoding specific.
+
+% chinese classes: left=1|right=2|center=3
+
+\startencoding[big5]
+
+\defineuclass 1 161 93
+\defineuclass 1 161 95
+\defineuclass 1 161 97
+\defineuclass 1 161 99
+\defineuclass 1 161 101
+\defineuclass 1 161 103
+\defineuclass 1 161 105
+\defineuclass 1 161 107
+\defineuclass 1 161 111
+\defineuclass 1 161 111
+\defineuclass 1 161 113
+\defineuclass 1 161 115
+\defineuclass 1 161 117
+\defineuclass 1 161 119
+\defineuclass 1 161 121
+\defineuclass 1 161 123
+\defineuclass 1 161 125
+\defineuclass 1 161 161
+\defineuclass 1 161 163
+\defineuclass 1 161 165
+\defineuclass 1 161 167
+\defineuclass 1 161 169
+\defineuclass 1 161 171
+
+\defineuclass 3 161 69
+\defineuclass 3 161 75
+\defineuclass 3 161 76
+
+\defineuclass 2 161 65
+\defineuclass 2 161 66
+\defineuclass 2 161 67
+\defineuclass 2 161 68
+\defineuclass 2 161 70
+\defineuclass 2 161 71
+\defineuclass 2 161 72
+\defineuclass 2 161 73
+\defineuclass 2 161 74
+\defineuclass 2 161 77
+\defineuclass 2 161 78
+\defineuclass 2 161 79
+\defineuclass 2 161 80
+\defineuclass 2 161 81
+\defineuclass 2 161 82
+\defineuclass 2 161 83
+\defineuclass 2 161 84
+\defineuclass 2 161 88
+\defineuclass 2 161 94
+\defineuclass 2 161 96
+\defineuclass 2 161 98
+\defineuclass 2 161 100
+\defineuclass 2 161 102
+\defineuclass 2 161 104
+\defineuclass 2 161 106
+\defineuclass 2 161 108
+\defineuclass 2 161 110
+\defineuclass 2 161 112
+\defineuclass 2 161 114
+\defineuclass 2 161 116
+\defineuclass 2 161 118
+\defineuclass 2 161 120
+\defineuclass 2 161 122
+\defineuclass 2 161 124
+\defineuclass 2 161 126
+\defineuclass 2 161 162
+\defineuclass 2 161 164
+\defineuclass 2 161 166
+\defineuclass 2 161 168
+\defineuclass 2 161 170
+\defineuclass 2 161 172
+\defineuclass 2 161 196
+\defineuclass 2 161 227
+\defineuclass 2 162 88
+\defineuclass 2 163 223
+
+\defineudigit 0 162 179
+\defineudigit 1 164 64
+\defineudigit 2 164 71
+\defineudigit 3 164 84
+\defineudigit 4 165 124
+\defineudigit 5 164 173
+\defineudigit 6 164 187
+\defineudigit 7 164 67
+\defineudigit 8 164 75
+\defineudigit 9 164 69
+\defineudigit 10 164 81
+\defineudigit 100 166 202
+\defineudigit 1000 164 100
+\defineudigit 10000 201 69
+\defineudigit 100000000 187 245
+
+\defineudigit 0* 185 115
+\defineudigit 1* 179 252
+\defineudigit 2* 182 76
+\defineudigit 3* 176 209
+\defineudigit 4* 184 118
+\defineudigit 5* 165 238
+\defineudigit 6* 179 176
+\defineudigit 7* 172 110
+\defineudigit 8* 174 195
+\defineudigit 9* 168 104
+\defineudigit 10* 172 66
+\defineudigit 100* 168 213
+\defineudigit 1000* 165 97
+\defineudigit 10000* 184 85
+\defineudigit 100000000* 187 245
+
+\defineudigit 20 164 220
+\defineudigit 21 164 64
+\defineudigit 22 164 71
+\defineudigit 23 164 84
+\defineudigit 24 165 124
+\defineudigit 25 164 173
+\defineudigit 26 164 187
+\defineudigit 27 164 67
+\defineudigit 28 164 75
+\defineudigit 29 164 69
+
+\defineudigit 30 164 202
+\defineudigit 31 164 64
+\defineudigit 32 164 71
+\defineudigit 33 164 84
+\defineudigit 34 165 124
+\defineudigit 35 164 173
+\defineudigit 36 164 187
+\defineudigit 37 164 67
+\defineudigit 38 164 75
+\defineudigit 39 164 69
+
+\stopencoding
+
+\startencoding[gbk]
+
+\defineuclass 1 161 174
+\defineuclass 1 161 176
+\defineuclass 1 161 178
+\defineuclass 1 161 180
+\defineuclass 1 161 182
+\defineuclass 1 161 184
+\defineuclass 1 161 186
+\defineuclass 1 161 188
+\defineuclass 1 161 190
+\defineuclass 1 163 168
+\defineuclass 1 163 219
+\defineuclass 1 163 224
+\defineuclass 1 163 251
+
+\defineuclass 3 161 164
+\defineuclass 3 161 167
+\defineuclass 3 161 173
+\defineuclass 3 163 190
+
+\defineuclass 2 161 162
+\defineuclass 2 161 163
+\defineuclass 2 161 170
+\defineuclass 2 161 171
+\defineuclass 2 161 175
+\defineuclass 2 161 177
+\defineuclass 2 161 179
+\defineuclass 2 161 181
+\defineuclass 2 161 183
+\defineuclass 2 161 185
+\defineuclass 2 161 187
+\defineuclass 2 161 189
+\defineuclass 2 161 191
+\defineuclass 2 161 203
+\defineuclass 2 161 227
+\defineuclass 2 161 228
+\defineuclass 2 161 229
+\defineuclass 2 163 161
+\defineuclass 2 163 162
+\defineuclass 2 163 167
+\defineuclass 2 163 169
+\defineuclass 2 163 172
+\defineuclass 2 163 174
+\defineuclass 2 163 186
+\defineuclass 2 163 187
+\defineuclass 2 163 191
+\defineuclass 2 163 221
+\defineuclass 2 163 253
+
+\defineudigit 0 161 240
+\defineudigit 1 210 187
+\defineudigit 2 182 254
+\defineudigit 3 200 253
+\defineudigit 4 203 196
+\defineudigit 5 206 229
+\defineudigit 6 193 249
+\defineudigit 7 198 223
+\defineudigit 8 176 203
+\defineudigit 9 190 197
+\defineudigit 10 202 174
+\defineudigit 100 176 217
+\defineudigit 1000 199 167
+\defineudigit 10000 205 242
+\defineudigit 100000000 210 218
+
+\defineudigit 0* 193 227
+\defineudigit 1* 210 188
+\defineudigit 2* 183 161
+\defineudigit 3* 200 254
+\defineudigit 4* 203 193
+\defineudigit 5* 206 233
+\defineudigit 6* 194 189
+\defineudigit 7* 198 226
+\defineudigit 8* 176 198
+\defineudigit 9* 190 193
+\defineudigit 10* 202 176
+\defineudigit 100* 176 219
+\defineudigit 1000* 199 170
+\defineudigit 10000* 200 102
+\defineudigit 100000000* 210 218
+
+\defineudigit 20 216 165
+\defineudigit 21 210 187
+\defineudigit 22 182 254
+\defineudigit 23 200 253
+\defineudigit 24 203 196
+\defineudigit 25 206 229
+\defineudigit 26 193 249
+\defineudigit 27 198 223
+\defineudigit 28 176 203
+\defineudigit 29 190 197
+
+\defineudigit 30 216 166
+\defineudigit 31 210 187
+\defineudigit 32 182 254
+\defineudigit 33 200 253
+\defineudigit 34 203 196
+\defineudigit 35 206 229
+\defineudigit 36 193 249
+\defineudigit 37 198 223
+\defineudigit 38 176 203
+\defineudigit 39 190 197
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-com.tex b/Master/texmf-dist/tex/context/base/enco-com.tex
new file mode 100644
index 00000000000..42d0d4774ee
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-com.tex
@@ -0,0 +1,37 @@
+%D \module
+%D [ file=enco-com,
+%D version=2000.20.12, % split from base file
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Composed Characters Commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen \& Ton Otten]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Here we map some \quote {short} names onto the more
+%D verbose glyph names.
+
+\def\AA{\Aring}
+\def\aa{\aring}
+\def\AE{\AEligature}
+\def\ae{\aeligature}
+\def\CC{\Ccedilla}
+\def\cc{\ccedilla}
+\def \L{\Lstroke}
+\def \l{\lstroke}
+\def \O{\Ostroke}
+\def \o{\ostroke}
+\def\OE{\OEligature}
+\def\oe{\oeligature}
+\def\SZ{\Ssharp}
+\def\sz{\ssharp}
+\def\SS{\ssharp}
+\def\IJ{\IJligature}
+\def\ij{\ijligature}
+\def \i{\dotlessi}
+\def \j{\dotlessj}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-cyr.tex b/Master/texmf-dist/tex/context/base/enco-cyr.tex
new file mode 100644
index 00000000000..95ab4223157
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-cyr.tex
@@ -0,0 +1,1035 @@
+%D \module
+%D [ file=enco-cyr,
+%D version=2003.01.24,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Cyrillic,
+%D author=...,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The following kerning test is inspired by a test file
+%D provided by Victor Figurnov. I hope he still recognizes
+%D some bit and pieces.
+%D
+%D \starttyping
+%D \setupoutput[pdftex]
+%D
+%D \startMPenvironment[global]
+%D \useregime[cyr]
+%D \useencoding[cyr]
+%D \mainlanguage[ru]
+%D \enableregime[cp1251]
+%D \setupbodyfont[cyr]
+%D \stopMPenvironment
+%D
+%D \startbuffer
+%D \starttabulate[|l|l|l|]
+%D \NC \ruledhbox{Ãäå} \NC \ruledhbox{AV} \NC with kerning \NC \NR
+%D \NC \ruledhbox{Ã{}ä{}å} \NC \ruledhbox{A{}V} \NC without kerning \NC \NR
+%D \NC \ruledhbox{\tfd Ãäå} \NC \ruledhbox{\tfd AV} \NC with kerning \NC \NR
+%D \NC \ruledhbox{\tfd Ã{}ä{}å} \NC \ruledhbox{\tfd A{}V} \NC without kerning \NC \NR
+%D \stoptabulate
+%D
+%D \showkerning{Êàê ñäåëàòü äîêóìåíò}
+%D \stopbuffer
+%D
+%D \starttext
+%D
+%D \title{Kerning test}
+%D
+%D \typebuffer
+%D
+%D \rm \subject{Serif font} \getbuffer
+%D \ss \subject{SansSerif font} \getbuffer
+%D \tt \subject{MonoSpacec font} \getbuffer
+%D
+%D \stoptext
+%D \stoptyping
+
+%D We start with a fallback, define by HH, who assumes that
+%D this is phonetic.
+
+\startmapping[t2a]
+
+\resetcaserange 128 to 255
+
+\definecasemaps 192 to 223 lc +32 uc 0 % base letters (russian)
+\definecasemaps 224 to 255 lc 0 uc -32
+
+\definecasemaps 128 to 156 lc +32 uc 0 % extra letters (cyrillic and old-slav)
+\definecasemaps 160 to 188 lc 0 uc -32
+
+\definecasemap 73 105 73 \definecasemap 105 105 73 % cyrillicII
+\definecasemap 74 106 74 \definecasemap 106 106 74 % cyrillicJE
+\definecasemap 81 113 81 \definecasemap 113 113 81 % cyrillicQ
+\definecasemap 87 119 87 \definecasemap 119 119 87 % cyrillicW
+
+\stopmapping
+
+\startcoding[t2a]
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter texthungarumlaut 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter textogonek 12
+
+\definecharacter textcyrillicflex 18
+\definecharacter textdblgrave 19
+\definecharacter textcyrillicbreve 20
+
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter textcompwordmark 23
+\definecharacter textbackslash 92
+\definecharacter textasciicircum 94
+\definecharacter textunderscore 95
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textasciitilde 126
+\definecharacter textnumero 157
+\definecharacter textcurrency 158
+\definecharacter sectionmark 159
+
+\definecharacter quotedbl 34
+\definecharacter quoteleft 96
+\definecharacter upperleftsingleninequote 39
+\definecharacter quotedblleft 16
+\definecharacter quotedblright 17
+\definecharacter lowerleftdoubleninequote 189
+\definecharacter upperrightdoublesixquote 16
+\definecharacter upperrightdoubleninequote 17
+\definecharacter quotedblbase 189
+
+\definecharacter cyrillicpalochka 13
+\definecharacter cyrilliclangle 14
+\definecharacter cyrillicrangle 15
+
+\definecharacter leftguillemot 190
+\definecharacter rightguillemot 191
+\definecharacter dotlessi 25
+
+\definecharacter cyrillicA 192
+\definecharacter cyrillica 224
+\definecharacter cyrillicB 193
+\definecharacter cyrillicb 225
+\definecharacter cyrillicV 194
+\definecharacter cyrillicv 226
+\definecharacter cyrillicG 195
+\definecharacter cyrillicg 227
+\definecharacter cyrillicD 196
+\definecharacter cyrillicd 228
+\definecharacter cyrillicE 197
+\definecharacter cyrillice 229
+\definecharacter cyrillicZH 198
+\definecharacter cyrilliczh 230
+\definecharacter cyrillicZ 199
+\definecharacter cyrillicz 231
+\definecharacter cyrillicI 200
+\definecharacter cyrillici 232
+\definecharacter cyrillicISHRT 201
+\definecharacter cyrillicishrt 233
+\definecharacter cyrillicK 202
+\definecharacter cyrillick 234
+\definecharacter cyrillicL 203
+\definecharacter cyrillicl 235
+\definecharacter cyrillicM 204
+\definecharacter cyrillicm 236
+\definecharacter cyrillicN 205
+\definecharacter cyrillicn 237
+\definecharacter cyrillicO 206
+\definecharacter cyrillico 238
+\definecharacter cyrillicP 207
+\definecharacter cyrillicp 239
+\definecharacter cyrillicR 208
+\definecharacter cyrillicr 240
+\definecharacter cyrillicS 209
+\definecharacter cyrillics 241
+\definecharacter cyrillicT 210
+\definecharacter cyrillict 242
+\definecharacter cyrillicU 211
+\definecharacter cyrillicu 243
+\definecharacter cyrillicF 212
+\definecharacter cyrillicf 244
+\definecharacter cyrillicH 213
+\definecharacter cyrillich 245
+\definecharacter cyrillicC 214
+\definecharacter cyrillicc 246
+\definecharacter cyrillicCH 215
+\definecharacter cyrillicch 247
+\definecharacter cyrillicSH 216
+\definecharacter cyrillicsh 248
+\definecharacter cyrillicSHCH 217
+\definecharacter cyrillicshch 249
+\definecharacter cyrillicHRDSN 218
+\definecharacter cyrillichrdsn 250
+\definecharacter cyrillicERY 219
+\definecharacter cyrillicery 251
+\definecharacter cyrillicSFTSN 220
+\definecharacter cyrillicsftsn 252
+\definecharacter cyrillicEREV 221
+\definecharacter cyrillicerev 253
+\definecharacter cyrillicYU 222
+\definecharacter cyrillicyu 254
+\definecharacter cyrillicYA 223
+\definecharacter cyrillicya 255
+\definecharacter cyrillicGUP 128
+\definecharacter cyrillicgup 160
+\definecharacter cyrillicGHCRS 129
+\definecharacter cyrillicghcrs 161
+\definecharacter cyrillicDJE 130
+\definecharacter cyrillicdje 162
+\definecharacter cyrillicTSHE 131
+\definecharacter cyrillictshe 163
+\definecharacter cyrillicSHHA 132
+\definecharacter cyrillicshha 164
+\definecharacter cyrillicZHDSC 133
+\definecharacter cyrilliczhdsc 165
+\definecharacter cyrillicZDSC 134
+\definecharacter cyrilliczdsc 166
+\definecharacter cyrillicLJE 135
+\definecharacter cyrilliclje 167
+\definecharacter cyrillicYI 136
+\definecharacter cyrillicyi 168
+\definecharacter cyrillicKDSC 137
+\definecharacter cyrillickdsc 169
+\definecharacter cyrillicKBEAK 138
+\definecharacter cyrillickbeak 170
+\definecharacter cyrillicKVCRS 139
+\definecharacter cyrillickvcrs 171
+\definecharacter cyrillicAE 140
+\definecharacter cyrillicae 172
+\definecharacter cyrillicNDSC 141
+\definecharacter cyrillicndsc 173
+\definecharacter cyrillicNG 142
+\definecharacter cyrillicng 174
+\definecharacter cyrillicDZE 143
+\definecharacter cyrillicdze 175
+\definecharacter cyrillicOTLD 144
+\definecharacter cyrillicotld 176
+\definecharacter cyrillicSDSC 145
+\definecharacter cyrillicsdsc 177
+\definecharacter cyrillicUSHRT 146
+\definecharacter cyrillicushrt 178
+\definecharacter cyrillicY 147
+\definecharacter cyrillicy 179
+\definecharacter cyrillicYHCRS 148
+\definecharacter cyrillicyhcrs 180
+\definecharacter cyrillicHDSC 149
+\definecharacter cyrillichdsc 181
+\definecharacter cyrillicDZHE 150
+\definecharacter cyrillicdzhe 182
+\definecharacter cyrillicCHVCRS 151
+\definecharacter cyrillicchvcrs 183
+\definecharacter cyrillicCHRDSC 152
+\definecharacter cyrillicchrdsc 184
+\definecharacter cyrillicIE 153
+\definecharacter cyrillicie 185
+\definecharacter cyrillicSCHWA 154
+\definecharacter cyrillicschwa 186
+\definecharacter cyrillicNJE 155
+\definecharacter cyrillicnje 187
+\definecharacter cyrillicYO 156
+\definecharacter cyrillicyo 188
+\definecharacter cyrillicII 73
+\definecharacter cyrillicii 105
+\definecharacter cyrillicJE 74
+\definecharacter cyrillicje 106
+\definecharacter cyrillicQ 81
+\definecharacter cyrillicq 113
+\definecharacter cyrillicW 87
+\definecharacter cyrillicw 119
+
+% \definecharacter textperthousand {\%\char 24 }
+% \definecharacter textpertenthousand {\%\char 24\char 24 }
+
+\stopcoding
+
+\startmapping[t2b]
+
+\resetcaserange 128 to 255
+
+\definecasemaps 192 to 223 lc +32 uc 0 % base letters (russian)
+\definecasemaps 224 to 255 lc 0 uc -32
+
+\definecasemaps 128 to 156 lc +32 uc 0 % extra letters (cyrillic and old-slav)
+\definecasemaps 160 to 188 lc 0 uc -32
+
+\definecasemap 73 105 73 \definecasemap 105 105 73 % cyrillicII
+\definecasemap 74 106 74 \definecasemap 106 106 74 % cyrillicJE
+\definecasemap 81 113 81 \definecasemap 113 113 81 % cyrillicQ
+\definecasemap 83 115 83 \definecasemap 115 115 83 % cyrillicDZE
+\definecasemap 87 119 87 \definecasemap 119 119 87 % cyrillicW
+
+\stopmapping
+
+\startcoding[t2b]
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter texthungarumlaut 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter textogonek 12
+
+\definecharacter textcyrillicflex 18
+\definecharacter textdblgrave 19
+\definecharacter textcyrillicbreve 20
+
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter textcompwordmark 23
+\definecharacter textbackslash 92
+\definecharacter textasciicircum 94
+\definecharacter textunderscore 95
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textasciitilde 126
+\definecharacter textnumero 157
+\definecharacter textcurrency 158
+\definecharacter sectionmark 159
+\definecharacter quotedbl 34
+\definecharacter quoteleft 96
+\definecharacter upperleftsingleninequote 39
+\definecharacter quotedblleft 16
+\definecharacter quotedblright 17
+\definecharacter lowerleftdoubleninequote 189
+
+\definecharacter upperrightdoublesixquote 16
+\definecharacter upperrightdoubleninequote 17
+\definecharacter quotedblbase 189
+
+\definecharacter cyrillicpalochka 13
+\definecharacter cyrilliclangle 14
+\definecharacter cyrillicrangle 15
+
+\definecharacter leftguillemot 190
+\definecharacter rightguillemot 191
+\definecharacter dotlessi 25
+
+\definecharacter cyrillicA 192
+\definecharacter cyrillica 224
+\definecharacter cyrillicB 193
+\definecharacter cyrillicb 225
+\definecharacter cyrillicV 194
+\definecharacter cyrillicv 226
+\definecharacter cyrillicG 195
+\definecharacter cyrillicg 227
+\definecharacter cyrillicD 196
+\definecharacter cyrillicd 228
+\definecharacter cyrillicE 197
+\definecharacter cyrillice 229
+\definecharacter cyrillicZH 198
+\definecharacter cyrilliczh 230
+\definecharacter cyrillicZ 199
+\definecharacter cyrillicz 231
+\definecharacter cyrillicI 200
+\definecharacter cyrillici 232
+\definecharacter cyrillicISHRT 201
+\definecharacter cyrillicishrt 233
+\definecharacter cyrillicK 202
+\definecharacter cyrillick 234
+\definecharacter cyrillicL 203
+\definecharacter cyrillicl 235
+\definecharacter cyrillicM 204
+\definecharacter cyrillicm 236
+\definecharacter cyrillicN 205
+\definecharacter cyrillicn 237
+\definecharacter cyrillicO 206
+\definecharacter cyrillico 238
+\definecharacter cyrillicP 207
+\definecharacter cyrillicp 239
+\definecharacter cyrillicR 208
+\definecharacter cyrillicr 240
+\definecharacter cyrillicS 209
+\definecharacter cyrillics 241
+\definecharacter cyrillicT 210
+\definecharacter cyrillict 242
+\definecharacter cyrillicU 211
+\definecharacter cyrillicu 243
+\definecharacter cyrillicF 212
+\definecharacter cyrillicf 244
+\definecharacter cyrillicH 213
+\definecharacter cyrillich 245
+\definecharacter cyrillicC 214
+\definecharacter cyrillicc 246
+\definecharacter cyrillicCH 215
+\definecharacter cyrillicch 247
+\definecharacter cyrillicSH 216
+\definecharacter cyrillicsh 248
+\definecharacter cyrillicSHCH 217
+\definecharacter cyrillicshch 249
+\definecharacter cyrillicHRDSN 218
+\definecharacter cyrillichrdsn 250
+\definecharacter cyrillicERY 219
+\definecharacter cyrillicery 251
+\definecharacter cyrillicSFTSN 220
+\definecharacter cyrillicsftsn 252
+\definecharacter cyrillicEREV 221
+\definecharacter cyrillicerev 253
+\definecharacter cyrillicYU 222
+\definecharacter cyrillicyu 254
+\definecharacter cyrillicYA 223
+\definecharacter cyrillicya 255
+\definecharacter cyrillicGDSCHCRS 128
+\definecharacter cyrillicgdschcrs 160
+\definecharacter cyrillicGHCRS 129
+\definecharacter cyrillicghcrs 161
+\definecharacter cyrillicGDSC 130
+\definecharacter cyrillicgdsc 162
+\definecharacter cyrillicGHK 131
+\definecharacter cyrillicghk 163
+\definecharacter cyrillicSHHA 132
+\definecharacter cyrillicshha 164
+\definecharacter cyrillicZHDSC 133
+\definecharacter cyrilliczhdsc 165
+\definecharacter cyrillicDELTA 134
+\definecharacter cyrillicdelta 166
+\definecharacter cyrillicABHDZE 135
+\definecharacter cyrillicabhdze 167
+\definecharacter cyrillicLJE 136
+\definecharacter cyrilliclje 168
+\definecharacter cyrillicKDSC 137
+\definecharacter cyrillickdsc 169
+\definecharacter cyrillicLDSC 138
+\definecharacter cyrillicldsc 170
+\definecharacter cyrillicKHK 139
+\definecharacter cyrillickhk 171
+\definecharacter cyrillicLHK 140
+\definecharacter cyrilliclhk 172
+\definecharacter cyrillicNDSC 141
+\definecharacter cyrillicndsc 173
+\definecharacter cyrillicNG 142
+\definecharacter cyrillicng 174
+\definecharacter cyrillicNHK 143
+\definecharacter cyrillicnhk 175
+\definecharacter cyrillicOTLD 144
+\definecharacter cyrillicotld 176
+\definecharacter cyrillicSACRS 145
+\definecharacter cyrillicsacrs 177
+\definecharacter cyrillicUSHRT 146
+\definecharacter cyrillicushrt 178
+\definecharacter cyrillicY 147
+\definecharacter cyrillicy 179
+\definecharacter cyrillicHHCRS 148
+\definecharacter cyrillichhcrs 180
+\definecharacter cyrillicHDSC 149
+\definecharacter cyrillichdsc 181
+\definecharacter cyrillicHHK 150
+\definecharacter cyrillichhk 182
+\definecharacter cyrillicCHLDSC 151
+\definecharacter cyrillicchldsc 183
+\definecharacter cyrillicCHRDSC 152
+\definecharacter cyrillicchrdsc 184
+\definecharacter cyrillicNJE 153
+\definecharacter cyrillicnje 185
+\definecharacter cyrillicSCHWA 154
+\definecharacter cyrillicschwa 186
+\definecharacter cyrillicEPS 155
+\definecharacter cyrilliceps 187
+\definecharacter cyrillicYO 156
+\definecharacter cyrillicyo 188
+\definecharacter cyrillicII 73
+\definecharacter cyrillicii 105
+\definecharacter cyrillicJE 74
+\definecharacter cyrillicje 106
+\definecharacter cyrillicQ 81
+\definecharacter cyrillicq 113
+\definecharacter cyrillicDZE 83
+\definecharacter cyrillicdze 115
+\definecharacter cyrillicW 87
+\definecharacter cyrillicw 119
+
+\stopcoding
+
+\startmapping[t2c]
+
+\resetcaserange 128 to 255
+
+\definecasemaps 192 to 223 lc +32 uc 0 % base letters (russian)
+\definecasemaps 224 to 255 lc 0 uc -32
+
+\definecasemaps 128 to 156 lc +32 uc 0 % extra letters (cyrillic and old-slav)
+\definecasemaps 160 to 188 lc 0 uc -32
+
+\definecasemap 73 105 73 \definecasemap 105 105 73 % cyrillicII
+\definecasemap 74 106 74 \definecasemap 106 106 74 % cyrillicJE
+\definecasemap 81 113 81 \definecasemap 113 113 81 % cyrillicQ
+\definecasemap 83 115 83 \definecasemap 115 115 83 % cyrillicDZE
+\definecasemap 87 119 87 \definecasemap 119 119 87 % cyrillicW
+
+\stopmapping
+
+\startcoding[t2c]
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter texthungarumlaut 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter textogonek 12
+
+\definecharacter textcyrillicflex 18
+\definecharacter textdblgrave 19
+\definecharacter textcyrillicbreve 20
+
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter textcompwordmark 23
+\definecharacter textbackslash 92
+\definecharacter textasciicircum 94
+\definecharacter textunderscore 95
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textasciitilde 126
+\definecharacter textnumero 157
+\definecharacter textcurrency 158
+\definecharacter sectionmark 159
+\definecharacter quotedbl 34
+\definecharacter quoteleft 96
+\definecharacter upperleftsingleninequote 39
+\definecharacter quotedblleft 16
+\definecharacter quotedblright 17
+\definecharacter lowerleftdoubleninequote 189
+\definecharacter upperrightdoublesixquote 16
+\definecharacter upperrightdoubleninequote 17
+\definecharacter quotedblbase 189
+
+\definecharacter cyrillicpalochka 13
+\definecharacter cyrilliclangle 14
+\definecharacter cyrillicrangle 15
+
+\definecharacter leftguillemot 190
+\definecharacter rightguillemot 191
+
+\definecharacter dotlessi 25
+
+\definecharacter cyrillicA 192
+\definecharacter cyrillica 224
+\definecharacter cyrillicB 193
+\definecharacter cyrillicb 225
+\definecharacter cyrillicV 194
+\definecharacter cyrillicv 226
+\definecharacter cyrillicG 195
+\definecharacter cyrillicg 227
+\definecharacter cyrillicD 196
+\definecharacter cyrillicd 228
+\definecharacter cyrillicE 197
+\definecharacter cyrillice 229
+\definecharacter cyrillicZH 198
+\definecharacter cyrilliczh 230
+\definecharacter cyrillicZ 199
+\definecharacter cyrillicz 231
+\definecharacter cyrillicI 200
+\definecharacter cyrillici 232
+\definecharacter cyrillicISHRT 201
+\definecharacter cyrillicishrt 233
+\definecharacter cyrillicK 202
+\definecharacter cyrillick 234
+\definecharacter cyrillicL 203
+\definecharacter cyrillicl 235
+\definecharacter cyrillicM 204
+\definecharacter cyrillicm 236
+\definecharacter cyrillicN 205
+\definecharacter cyrillicn 237
+\definecharacter cyrillicO 206
+\definecharacter cyrillico 238
+\definecharacter cyrillicP 207
+\definecharacter cyrillicp 239
+\definecharacter cyrillicR 208
+\definecharacter cyrillicr 240
+\definecharacter cyrillicS 209
+\definecharacter cyrillics 241
+\definecharacter cyrillicT 210
+\definecharacter cyrillict 242
+\definecharacter cyrillicU 211
+\definecharacter cyrillicu 243
+\definecharacter cyrillicF 212
+\definecharacter cyrillicf 244
+\definecharacter cyrillicH 213
+\definecharacter cyrillich 245
+\definecharacter cyrillicC 214
+\definecharacter cyrillicc 246
+\definecharacter cyrillicCH 215
+\definecharacter cyrillicch 247
+\definecharacter cyrillicSH 216
+\definecharacter cyrillicsh 248
+\definecharacter cyrillicSHCH 217
+\definecharacter cyrillicshch 249
+\definecharacter cyrillicHRDSN 218
+\definecharacter cyrillichrdsn 250
+\definecharacter cyrillicERY 219
+\definecharacter cyrillicery 251
+\definecharacter cyrillicSFTSN 220
+\definecharacter cyrillicsftsn 252
+\definecharacter cyrillicEREV 221
+\definecharacter cyrillicerev 253
+\definecharacter cyrillicYU 222
+\definecharacter cyrillicyu 254
+\definecharacter cyrillicYA 223
+\definecharacter cyrillicya 255
+\definecharacter cyrillicPHK 128
+\definecharacter cyrillicphk 160
+\definecharacter cyrillicTETSE 129
+\definecharacter cyrillictetse 161
+\definecharacter cyrillicTDSC 130
+\definecharacter cyrillictdsc 162
+\definecharacter cyrillicGHK 131
+\definecharacter cyrillicghk 163
+\definecharacter cyrillicSHHA 132
+\definecharacter cyrillicshha 164
+\definecharacter cyrillicRDSC 133
+\definecharacter cyrillicrdsc 165
+\definecharacter cyrillicRTICK 134
+\definecharacter cyrillicrtick 166
+\definecharacter cyrillicABHDZE 135
+\definecharacter cyrillicabhdze 167
+\definecharacter cyrillicMDSC 136
+\definecharacter cyrillicmdsc 168
+\definecharacter cyrillicKDSC 137
+\definecharacter cyrillickdsc 169
+\definecharacter cyrillicLDSC 138
+\definecharacter cyrillicldsc 170
+\definecharacter cyrillicKHCRS 139
+\definecharacter cyrillickhcrs 171
+\definecharacter cyrillicLHK 140
+\definecharacter cyrilliclhk 172
+\definecharacter cyrillicNDSC 141
+\definecharacter cyrillicndsc 173
+\definecharacter cyrillicMHK 142
+\definecharacter cyrillicmhk 174
+\definecharacter cyrillicNHK 143
+\definecharacter cyrillicnhk 175
+\definecharacter cyrillicOTLD 144
+\definecharacter cyrillicotld 176
+\definecharacter cyrillicABHCH 145
+\definecharacter cyrillicabhch 177
+\definecharacter cyrillicABHCHDSC 146
+\definecharacter cyrillicabhchdsc 178
+\definecharacter cyrillicSEMISFTSN 147
+\definecharacter cyrillicsemisftsn 179
+\definecharacter cyrillicISHRTDSC 148
+\definecharacter cyrillicishrtdsc 180
+\definecharacter cyrillicHDSC 149
+\definecharacter cyrillichdsc 181
+\definecharacter cyrillicDZHE 150
+\definecharacter cyrillicdzhe 182
+\definecharacter cyrillicABHHA 151
+\definecharacter cyrillicabhha 183
+\definecharacter cyrillicCHRDSC 152
+\definecharacter cyrillicchrdsc 184
+\definecharacter cyrillicNLHK 153
+\definecharacter cyrillicnlhk 185
+\definecharacter cyrillicSCHWA 154
+\definecharacter cyrillicschwa 186
+\definecharacter cyrillicRHK 155
+\definecharacter cyrillicrhk 187
+\definecharacter cyrillicYO 156
+\definecharacter cyrillicyo 188
+\definecharacter cyrillicII 73
+\definecharacter cyrillicii 105
+\definecharacter cyrillicJE 74
+\definecharacter cyrillicje 106
+\definecharacter cyrillicQ 81
+\definecharacter cyrillicq 113
+\definecharacter cyrillicDZE 83
+\definecharacter cyrillicdze 115
+\definecharacter cyrillicW 87
+\definecharacter cyrillicw 119
+
+\stopcoding
+
+\startmapping[x2]
+
+\resetcaserange 128 to 255
+
+\definecasemaps 192 to 223 lc +32 uc 0 % base letters (russian)
+\definecasemaps 224 to 255 lc 0 uc -32
+
+\definecasemaps 128 to 156 lc +32 uc 0 % extra letters (cyrillic and old-slav)
+\definecasemaps 160 to 188 lc 0 uc -32
+
+\definecasemaps 65 to 90 lc +32 uc 0 % more extra letters (cyrillic and old-slav)
+\definecasemaps 97 to 122 lc 0 uc -32
+
+\definecasemap 28 29 28 \definecasemap 29 29 28 % cyrillicNLHK
+\definecasemap 30 31 30 \definecasemap 31 31 30 % cyrillicDELTA
+
+\stopmapping
+
+\startcoding[x2]
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter texthungarumlaut 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter textogonek 12
+
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter textcompwordmark 23
+\definecharacter textvisiblespace 32
+\definecharacter textdollar 36
+\definecharacter textless 60
+\definecharacter textgreater 62
+\definecharacter textbackslash 92
+\definecharacter textasciicircum 94
+\definecharacter textunderscore 95
+\definecharacter textbraceleft 123
+\definecharacter textbar 124
+\definecharacter textbraceright 125
+\definecharacter textasciitilde 126
+\definecharacter textnumero 157
+\definecharacter textcurrency 158
+\definecharacter textsection 159
+\definecharacter sectionmark 159
+\definecharacter textquotedbl 34
+
+\definecharacter cyrillicpalochka 13
+\definecharacter cyrilliclangle 14
+\definecharacter cyrillicrangle 15
+
+\definecharacter leftguillemot 190
+\definecharacter rightguillemot 191
+
+\definecharacter upperleftsinglesixquote 96
+\definecharacter upperleftsingleninequote 39
+\definecharacter upperleftdoublesixquote 16
+\definecharacter upperleftdoubleninequote 17
+\definecharacter lowerleftdoubleninequote 189
+
+\definecharacter upperrightsinglesixquote 96
+\definecharacter upperrightsingleninequote 39
+\definecharacter upperrightdoublesixquote 16
+\definecharacter upperrightdoubleninequote 17
+\definecharacter lowerrightdoubleninequote 189
+
+\definecharacter cyrillicA 192
+\definecharacter cyrillica 224
+\definecharacter cyrillicB 193
+\definecharacter cyrillicb 225
+\definecharacter cyrillicV 194
+\definecharacter cyrillicv 226
+\definecharacter cyrillicG 195
+\definecharacter cyrillicg 227
+\definecharacter cyrillicD 196
+\definecharacter cyrillicd 228
+\definecharacter cyrillicE 197
+\definecharacter cyrillice 229
+\definecharacter cyrillicZH 198
+\definecharacter cyrilliczh 230
+\definecharacter cyrillicZ 199
+\definecharacter cyrillicz 231
+\definecharacter cyrillicI 200
+\definecharacter cyrillici 232
+\definecharacter cyrillicISHRT 201
+\definecharacter cyrillicishrt 233
+\definecharacter cyrillicK 202
+\definecharacter cyrillick 234
+\definecharacter cyrillicL 203
+\definecharacter cyrillicl 235
+\definecharacter cyrillicM 204
+\definecharacter cyrillicm 236
+\definecharacter cyrillicN 205
+\definecharacter cyrillicn 237
+\definecharacter cyrillicO 206
+\definecharacter cyrillico 238
+\definecharacter cyrillicP 207
+\definecharacter cyrillicp 239
+\definecharacter cyrillicR 208
+\definecharacter cyrillicr 240
+\definecharacter cyrillicS 209
+\definecharacter cyrillics 241
+\definecharacter cyrillicT 210
+\definecharacter cyrillict 242
+\definecharacter cyrillicU 211
+\definecharacter cyrillicu 243
+\definecharacter cyrillicF 212
+\definecharacter cyrillicf 244
+\definecharacter cyrillicH 213
+\definecharacter cyrillich 245
+\definecharacter cyrillicC 214
+\definecharacter cyrillicc 246
+\definecharacter cyrillicCH 215
+\definecharacter cyrillicch 247
+\definecharacter cyrillicSH 216
+\definecharacter cyrillicsh 248
+\definecharacter cyrillicSHCH 217
+\definecharacter cyrillicshch 249
+\definecharacter cyrillicHRDSN 218
+\definecharacter cyrillichrdsn 250
+\definecharacter cyrillicERY 219
+\definecharacter cyrillicery 251
+\definecharacter cyrillicSFTSN 220
+\definecharacter cyrillicsftsn 252
+\definecharacter cyrillicEREV 221
+\definecharacter cyrillicerev 253
+\definecharacter cyrillicYU 222
+\definecharacter cyrillicyu 254
+\definecharacter cyrillicYA 223
+\definecharacter cyrillicya 255
+\definecharacter cyrillicGUP 128
+\definecharacter cyrillicgup 160
+\definecharacter cyrillicGHCRS 129
+\definecharacter cyrillicghcrs 161
+\definecharacter cyrillicGDSC 130
+\definecharacter cyrillicgdsc 162
+\definecharacter cyrillicGHK 131
+\definecharacter cyrillicghk 163
+\definecharacter cyrillicSHHA 132
+\definecharacter cyrillicshha 164
+\definecharacter cyrillicZHDSC 133
+\definecharacter cyrilliczhdsc 165
+\definecharacter cyrillicZDSC 134
+\definecharacter cyrilliczdsc 166
+\definecharacter cyrillicABHDZE 135
+\definecharacter cyrillicabhdze 167
+\definecharacter cyrillicYI 136
+\definecharacter cyrillicyi 168
+\definecharacter cyrillicKDSC 137
+\definecharacter cyrillickdsc 169
+\definecharacter cyrillicKBEAK 138
+\definecharacter cyrillickbeak 170
+\definecharacter cyrillicKHK 139
+\definecharacter cyrillickhk 171
+\definecharacter cyrillicLHK 140
+\definecharacter cyrilliclhk 172
+\definecharacter cyrillicNDSC 141
+\definecharacter cyrillicndsc 173
+\definecharacter cyrillicNG 142
+\definecharacter cyrillicng 174
+\definecharacter cyrillicNHK 143
+\definecharacter cyrillicnhk 175
+\definecharacter cyrillicOTLD 144
+\definecharacter cyrillicotld 176
+\definecharacter cyrillicSDSC 145
+\definecharacter cyrillicsdsc 177
+\definecharacter cyrillicUSHRT 146
+\definecharacter cyrillicushrt 178
+\definecharacter cyrillicY 147
+\definecharacter cyrillicy 179
+\definecharacter cyrillicYHCRS 148
+\definecharacter cyrillicyhcrs 180
+\definecharacter cyrillicHDSC 149
+\definecharacter cyrillichdsc 181
+\definecharacter cyrillicHHK 150
+\definecharacter cyrillichhk 182
+\definecharacter cyrillicCHLDSC 151
+\definecharacter cyrillicchldsc 183
+\definecharacter cyrillicCHRDSC 152
+\definecharacter cyrillicchrdsc 184
+\definecharacter cyrillicIE 153
+\definecharacter cyrillicie 185
+\definecharacter cyrillicSCHWA 154
+\definecharacter cyrillicschwa 186
+\definecharacter cyrillicEPS 155
+\definecharacter cyrilliceps 187
+\definecharacter cyrillicYO 156
+\definecharacter cyrillicyo 188
+\definecharacter cyrillicAE 65
+\definecharacter cyrillicae 97
+\definecharacter cyrillicDJE 66
+\definecharacter cyrillicdje 98
+\definecharacter cyrillicTSHE 67
+\definecharacter cyrillictshe 99
+\definecharacter cyrillicABHCH 68
+\definecharacter cyrillicabhch 100
+\definecharacter cyrillicABHCHDSC 69
+\definecharacter cyrillicabhchdsc 101
+\definecharacter cyrillicKVCRS 70
+\definecharacter cyrillickvcrs 102
+\definecharacter cyrillicKHCRS 71
+\definecharacter cyrillickhcrs 103
+\definecharacter cyrillicLDSC 72
+\definecharacter cyrillicldsc 104
+\definecharacter cyrillicII 73
+\definecharacter cyrillicii 105
+\definecharacter cyrillicJE 74
+\definecharacter cyrillicje 106
+\definecharacter cyrillicLJE 75
+\definecharacter cyrilliclje 107
+\definecharacter cyrillicMDSC 76
+\definecharacter cyrillicmdsc 108
+\definecharacter cyrillicNJE 77
+\definecharacter cyrillicnje 109
+\definecharacter cyrillicABHHA 78
+\definecharacter cyrillicabhha 110
+\definecharacter cyrillicPHK 79
+\definecharacter cyrillicphk 111
+\definecharacter cyrillicRDSC 80
+\definecharacter cyrillicrdsc 112
+\definecharacter cyrillicQ 81
+\definecharacter cyrillicq 113
+\definecharacter cyrillicTDSC 82
+\definecharacter cyrillictdsc 114
+\definecharacter cyrillicDZE 83
+\definecharacter cyrillicdze 115
+\definecharacter cyrillicTETSE 84
+\definecharacter cyrillictetse 116
+\definecharacter cyrillicDZHE 85
+\definecharacter cyrillicdzhe 117
+\definecharacter cyrillicCHVCRS 86
+\definecharacter cyrillicchvcrs 118
+\definecharacter cyrillicW 87
+\definecharacter cyrillicw 119
+\definecharacter cyrillicYAT 88
+\definecharacter cyrillicyat 120
+\definecharacter cyrillicBYUS 89
+\definecharacter cyrillicbyus 121
+\definecharacter cyrillicIZH 90
+\definecharacter cyrillicizh 122
+\definecharacter cyrillicNLHK 28
+\definecharacter cyrillicnlhk 29
+\definecharacter cyrillicDELTA 30
+\definecharacter cyrillicdelta 31
+
+\stopcoding
+
+\startmapping[lcy]
+
+\resetcaserange 128 to 255
+
+\definecasemaps 128 to 143 lc +32 uc 0
+\definecasemaps 160 to 175 lc 0 uc -32
+
+\definecasemaps 144 to 159 lc +80 uc 0
+\definecasemaps 224 to 239 lc 0 uc -80
+
+\definecasemap 240 241 240 \definecasemap 241 241 240 % cyrillicYO
+\definecasemap 242 243 242 \definecasemap 243 243 242 % cyrillicGUP
+\definecasemap 244 245 244 \definecasemap 245 245 244 % cyrillicIE
+\definecasemap 244 247 244 \definecasemap 247 247 244 % cyrillicII
+\definecasemap 248 249 248 \definecasemap 249 249 248 % cyrillicYI
+\definecasemap 250 251 240 \definecasemap 241 241 240 % cyrillicUSHRT
+
+\stopmapping
+
+\startcoding[lcy]
+
+%D Characters 0 to 127 are as in normal cmr slots
+
+\definecharacter cyrillicA 128
+\definecharacter cyrillicB 129
+\definecharacter cyrillicV 130
+\definecharacter cyrillicG 131
+\definecharacter cyrillicD 132
+\definecharacter cyrillicE 133
+\definecharacter cyrillicZH 134
+\definecharacter cyrillicZ 135
+\definecharacter cyrillicI 136
+\definecharacter cyrillicISHRT 137
+\definecharacter cyrillicK 138
+\definecharacter cyrillicL 139
+\definecharacter cyrillicM 140
+\definecharacter cyrillicN 141
+\definecharacter cyrillicO 142
+\definecharacter cyrillicP 143
+\definecharacter cyrillicR 144
+\definecharacter cyrillicS 145
+\definecharacter cyrillicT 146
+\definecharacter cyrillicU 147
+\definecharacter cyrillicF 148
+\definecharacter cyrillicH 149
+\definecharacter cyrillicC 150
+\definecharacter cyrillicCH 151
+\definecharacter cyrillicSH 152
+\definecharacter cyrillicSHCH 153
+\definecharacter cyrillicHRDSN 154
+\definecharacter cyrillicERY 155
+\definecharacter cyrillicSFTSN 156
+\definecharacter cyrillicEREV 157
+\definecharacter cyrillicYU 158
+\definecharacter cyrillicYA 159
+\definecharacter cyrillica 160
+\definecharacter cyrillicb 161
+\definecharacter cyrillicv 162
+\definecharacter cyrillicg 163
+\definecharacter cyrillicd 164
+\definecharacter cyrillice 165
+\definecharacter cyrilliczh 166
+\definecharacter cyrillicz 167
+\definecharacter cyrillici 168
+\definecharacter cyrillicishrt 169
+\definecharacter cyrillick 170
+\definecharacter cyrillicl 171
+\definecharacter cyrillicm 172
+\definecharacter cyrillicn 173
+\definecharacter cyrillico 174
+\definecharacter cyrillicp 175
+\definecharacter cyrillicr 224
+\definecharacter cyrillics 225
+\definecharacter cyrillict 226
+\definecharacter cyrillicu 227
+\definecharacter cyrillicf 228
+\definecharacter cyrillich 229
+\definecharacter cyrillicc 230
+\definecharacter cyrillicch 231
+\definecharacter cyrillicsh 232
+\definecharacter cyrillicshch 233
+\definecharacter cyrillichrdsn 234
+\definecharacter cyrillicery 235
+\definecharacter cyrillicsftsn 236
+\definecharacter cyrillicerev 237
+\definecharacter cyrillicyu 238
+\definecharacter cyrillicya 239
+\definecharacter cyrillicYO 240
+\definecharacter cyrillicyo 241
+\definecharacter cyrillicGUP 242
+\definecharacter cyrillicgup 243
+\definecharacter cyrillicIE 244
+\definecharacter cyrillicie 245
+\definecharacter cyrillicII 246
+\definecharacter cyrillicii 247
+\definecharacter cyrillicYI 248
+\definecharacter cyrillicyi 249
+\definecharacter cyrillicUSHRT 250
+\definecharacter cyrillicushrt 251
+
+\definecharacter emdash 196
+\definecharacter textcurrency 197
+\definecharacter textnumero 252
+\definecharacter leftguillemot 253
+\definecharacter rightguillemot 254
+\definecharacter quotedblbase 255
+
+\stopcoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-def.tex b/Master/texmf-dist/tex/context/base/enco-def.tex
new file mode 100644
index 00000000000..af59a799c05
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-def.tex
@@ -0,0 +1,832 @@
+%D \module
+%D [ file=enco-def,
+%D version=2000.05.07, % 2000.20.12, % split from less verbose base file
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Default Character Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Instead of overloading plain \TEX\ macros (and keeping them
+%D available as an escape), we now use the more verbose
+%D definitions in this file. Since memory is less a problem
+%D these days, this verbosity has only a small price, but we
+%D gain readability. The following definitions are based on
+%D usage of the the original \TEX\ fonts, where composed
+%D characters were not part of the design. So, occasionally
+%D we have to revert to hacks. Thanks to all those users who
+%D helped me to fill in the details.
+
+\startencoding[default]
+
+\definecharacter textcomma ,
+\definecharacter textperiod .
+
+\definecharacter textacute 19
+\definecharacter textbottomdot 46
+\definecharacter textbreve 21
+\definecharacter textcaron 20
+\definecharacter textcedilla 24
+\definecharacter textcircumflex 94
+\definecharacter textdiaeresis 127
+\definecharacter textdotaccent 95
+\definecharacter textgrave 18
+\definecharacter texthungarumlaut 125
+\definecharacter textmacron 22
+\definecharacter textogonek 24 % fake
+\definecharacter textring 23
+\definecharacter texttilde 126
+
+\definecharacter dotlessi {\char"10 }
+\definecharacter dotlessj {\char"11 }
+\definecharacter dotlessI {I}
+\definecharacter dotlessJ {J}
+
+\definecharacter endash 123
+\definecharacter emdash 124
+
+\definecharacter aeligature {\char26 } % "1A
+\definecharacter AEligature {\char29 } % "1D
+\definecharacter ijligature {ij}
+\definecharacter IJligature {IJ}
+\definecharacter oeligature {\char27 } % "1B
+\definecharacter OEligature {\char30 } % "1E
+
+\definecharacter ssharp {\char25 } % "19
+\definecharacter Ssharp {SS}
+
+\definecharacter thorn {\unknownchar}
+\definecharacter Thorn {\unknownchar}
+
+\definecharacter eth {\dstroke} % wrong but better that nothing
+\definecharacter Eth {\Dstroke} % wrong but better that nothing
+
+\definecharacter exclamdown 60
+\definecharacter questiondown 62
+
+\definecharacter copyright {\encircled{\txx C}}
+\definecharacter registered {\encircled{\txx R}}
+\definecharacter trademark {\high{\txx TM}}
+
+\definecharacter sectionmark {\mathematics{\mathhexbox278}}
+\definecharacter paragraphmark {\mathematics{\mathhexbox27B}}
+
+\definecharacter onequarter {\vulgarfraction{1}{4}}
+\definecharacter onehalf {\vulgarfraction{1}{2}}
+\definecharacter threequarter {\vulgarfraction{3}{4}}
+
+\definecharacter onesuperior {\high{1}}
+\definecharacter twosuperior {\high{2}}
+\definecharacter threesuperior {\high{3}}
+
+\definecharacter textcent {c}
+\definecharacter textcurrency {\unknownchar}
+\definecharacter textdollar {\fakedollar}
+\definecharacter texteuro {E}
+\definecharacter textflorin {\fakeflorin}
+\definecharacter textsterling {\fakesterling}
+\definecharacter textyen {Y}
+
+\definecharacter ordfeminine {\high{\txx a}}
+\definecharacter ordmasculine {\high{\txx o}}
+
+\definecharacter percent {\fakepercent}
+\definecharacter perthousand {\fakeperthousand}
+
+\definecharacter softhyphen 45
+\definecharacter periodcentered {\mathematics\cdot}
+\definecharacter compoundwordmark 23
+
+\definecharacter textasciicircum 94
+\definecharacter textasciitilde 126
+\definecharacter textslash 47
+\definecharacter textbackslash {\tex{}} % todo
+\definecharacter textbraceleft {\mathematics\{}
+\definecharacter textbraceright {\mathematics\}}
+\definecharacter textunderscore {\fakeunderscore}
+\definecharacter textvisiblespace {\fakevisiblespace}
+
+\definecharacter textbrokenbar {\mathematics\vert}
+\definecharacter textbullet {\mathematics\bullet}
+\definecharacter textdag {\mathematics\dag}
+\definecharacter textddag {\mathematics\ddag}
+\definecharacter textdegree {\mathematics{{}^{\circ}}}
+\definecharacter textdiv {\mathematics\div}
+\definecharacter textellipsis {\mathematics\cdots}
+\definecharacter textfraction {\mathematics/}
+\definecharacter textlognot {\mathematics\neg}
+\definecharacter textminus {\mathematics-}
+\definecharacter textmu {\mathematics\mu}
+\definecharacter textmultiply {\mathematics\times}
+\definecharacter textpm {\mathematics\pm}
+
+\definecharacter quotedbl {"}
+\definecharacter quotedblbase {,,}
+\definecharacter quotedblleft {``}
+\definecharacter quotedblright {''}
+
+\definecharacter quotesingle {`}
+\definecharacter quotesinglebase {,}
+
+\definecharacter quoteleft {`}
+\definecharacter quoteright {'}
+
+\definecharacter guilsingleleft {\fakeleftsubguillemot }
+\definecharacter guilsingleright {\fakerightsubguillemot}
+
+\definecharacter leftguillemot {\fakeleftguillemot }
+\definecharacter rightguillemot {\fakerightguillemot}
+
+\definecharacter Acircumflex {\buildtextaccent\textcircumflex A}
+\definecharacter acircumflex {\buildtextaccent\textcircumflex a}
+\definecharacter Ccircumflex {\buildtextaccent\textcircumflex C}
+\definecharacter ccircumflex {\buildtextaccent\textcircumflex c}
+\definecharacter Ecircumflex {\buildtextaccent\textcircumflex E}
+\definecharacter ecircumflex {\buildtextaccent\textcircumflex e}
+\definecharacter Gcircumflex {\buildtextaccent\textcircumflex G}
+\definecharacter gcircumflex {\buildtextaccent\textcircumflex g}
+\definecharacter Hcircumflex {\buildtextaccent\textcircumflex H}
+\definecharacter hcircumflex {\buildtextaccent\textcircumflex h}
+\definecharacter Icircumflex {\buildtextaccent\textcircumflex \dotlessI}
+\definecharacter icircumflex {\buildtextaccent\textcircumflex \dotlessi}
+\definecharacter Jcircumflex {\buildtextaccent\textcircumflex \dotlessJ}
+\definecharacter jcircumflex {\buildtextaccent\textcircumflex \dotlessj}
+\definecharacter Ocircumflex {\buildtextaccent\textcircumflex O}
+\definecharacter ocircumflex {\buildtextaccent\textcircumflex o}
+\definecharacter Scircumflex {\buildtextaccent\textcircumflex S}
+\definecharacter scircumflex {\buildtextaccent\textcircumflex s}
+\definecharacter Ucircumflex {\buildtextaccent\textcircumflex U}
+\definecharacter ucircumflex {\buildtextaccent\textcircumflex u}
+\definecharacter Wcircumflex {\buildtextaccent\textcircumflex W}
+\definecharacter wcircumflex {\buildtextaccent\textcircumflex w}
+\definecharacter Ycircumflex {\buildtextaccent\textcircumflex Y}
+\definecharacter ycircumflex {\buildtextaccent\textcircumflex y}
+
+\definecharacter Agrave {\buildtextaccent\textgrave A}
+\definecharacter agrave {\buildtextaccent\textgrave a}
+\definecharacter Egrave {\buildtextaccent\textgrave E}
+\definecharacter egrave {\buildtextaccent\textgrave e}
+\definecharacter Igrave {\buildtextaccent\textgrave \dotlessI}
+\definecharacter igrave {\buildtextaccent\textgrave \dotlessi}
+\definecharacter Ograve {\buildtextaccent\textgrave O}
+\definecharacter ograve {\buildtextaccent\textgrave o}
+\definecharacter Ugrave {\buildtextaccent\textgrave U}
+\definecharacter ugrave {\buildtextaccent\textgrave u}
+\definecharacter Ygrave {\buildtextaccent\textgrave Y}
+\definecharacter ygrave {\buildtextaccent\textgrave y}
+
+\definecharacter Atilde {\buildtextaccent\texttilde A}
+\definecharacter atilde {\buildtextaccent\texttilde a}
+\definecharacter Itilde {\buildtextaccent\texttilde \dotlessI}
+\definecharacter itilde {\buildtextaccent\texttilde \dotlessi}
+\definecharacter Ntilde {\buildtextaccent\texttilde N}
+\definecharacter ntilde {\buildtextaccent\texttilde n}
+\definecharacter Otilde {\buildtextaccent\texttilde O}
+\definecharacter otilde {\buildtextaccent\texttilde o}
+\definecharacter Utilde {\buildtextaccent\texttilde U}
+\definecharacter utilde {\buildtextaccent\texttilde u}
+\definecharacter Ytilde {\buildtextaccent\texttilde Y}
+\definecharacter ytilde {\buildtextaccent\texttilde y}
+
+\definecharacter Adiaeresis {\buildtextaccent\textdiaeresis A}
+\definecharacter adiaeresis {\buildtextaccent\textdiaeresis a}
+\definecharacter Ediaeresis {\buildtextaccent\textdiaeresis E}
+\definecharacter ediaeresis {\buildtextaccent\textdiaeresis e}
+\definecharacter Idiaeresis {\buildtextaccent\textdiaeresis \dotlessI}
+\definecharacter idiaeresis {\buildtextaccent\textdiaeresis \dotlessi}
+\definecharacter Odiaeresis {\buildtextaccent\textdiaeresis O}
+\definecharacter odiaeresis {\buildtextaccent\textdiaeresis o}
+\definecharacter Udiaeresis {\buildtextaccent\textdiaeresis U}
+\definecharacter udiaeresis {\buildtextaccent\textdiaeresis u}
+\definecharacter Ydiaeresis {\buildtextaccent\textdiaeresis Y}
+\definecharacter ydiaeresis {\buildtextaccent\textdiaeresis y}
+
+\definecharacter Aacute {\buildtextaccent\textacute A}
+\definecharacter aacute {\buildtextaccent\textacute a}
+\definecharacter Cacute {\buildtextaccent\textacute C}
+\definecharacter cacute {\buildtextaccent\textacute c}
+\definecharacter Eacute {\buildtextaccent\textacute E}
+\definecharacter eacute {\buildtextaccent\textacute e}
+\definecharacter Iacute {\buildtextaccent\textacute \dotlessI}
+\definecharacter iacute {\buildtextaccent\textacute \dotlessi}
+\definecharacter Lacute {\buildtextaccent\textacute L}
+\definecharacter lacute {\buildtextaccent\textacute l}
+\definecharacter Nacute {\buildtextaccent\textacute N}
+\definecharacter nacute {\buildtextaccent\textacute n}
+\definecharacter Oacute {\buildtextaccent\textacute O}
+\definecharacter oacute {\buildtextaccent\textacute o}
+\definecharacter Racute {\buildtextaccent\textacute R}
+\definecharacter racute {\buildtextaccent\textacute r}
+\definecharacter Sacute {\buildtextaccent\textacute S}
+\definecharacter sacute {\buildtextaccent\textacute s}
+\definecharacter Uacute {\buildtextaccent\textacute U}
+\definecharacter uacute {\buildtextaccent\textacute u}
+\definecharacter Yacute {\buildtextaccent\textacute Y}
+\definecharacter yacute {\buildtextaccent\textacute y}
+\definecharacter Zacute {\buildtextaccent\textacute Z}
+\definecharacter zacute {\buildtextaccent\textacute z}
+
+%definecharacter Dstroke {D}
+%definecharacter dstroke {d}
+
+\definecharacter dstroke {\pseudoencodeddj}
+\definecharacter Dstroke {\pseudoencodedDJ}
+\definecharacter Hstroke {H}
+\definecharacter hstroke {h}
+\definecharacter Tstroke {T}
+\definecharacter tstroke {t}
+
+\definecharacter Cdotaccent {\buildtextaccent\textdotaccent C}
+\definecharacter cdotaccent {\buildtextaccent\textdotaccent c}
+\definecharacter Edotaccent {\buildtextaccent\textdotaccent E}
+\definecharacter edotaccent {\buildtextaccent\textdotaccent e}
+\definecharacter Gdotaccent {\buildtextaccent\textdotaccent G}
+\definecharacter gdotaccent {\buildtextaccent\textdotaccent g}
+\definecharacter Idotaccent {\buildtextaccent\textdotaccent \dotlessI}
+\definecharacter idotaccent {\buildtextaccent\textdotaccent \dotlessi}
+\definecharacter Zdotaccent {\buildtextaccent\textdotaccent Z}
+\definecharacter zdotaccent {\buildtextaccent\textdotaccent z}
+
+\definecharacter Amacron {\buildtextaccent\textmacron A}
+\definecharacter amacron {\buildtextaccent\textmacron a}
+\definecharacter Emacron {\buildtextaccent\textmacron E}
+\definecharacter emacron {\buildtextaccent\textmacron e}
+\definecharacter Imacron {\buildtextaccent\textmacron \dotlessI}
+\definecharacter imacron {\buildtextaccent\textmacron \dotlessi}
+\definecharacter Omacron {\buildtextaccent\textmacron O}
+\definecharacter omacron {\buildtextaccent\textmacron o}
+\definecharacter Umacron {\buildtextaccent\textmacron U}
+\definecharacter umacron {\buildtextaccent\textmacron u}
+
+\definecharacter Ccedilla {\buildtextcedilla C}
+\definecharacter ccedilla {\buildtextcedilla c}
+\definecharacter Kcedilla {\buildtextcedilla K}
+\definecharacter kcedilla {\buildtextcedilla k}
+\definecharacter Lcedilla {\buildtextcedilla L}
+\definecharacter lcedilla {\buildtextcedilla l}
+\definecharacter Ncedilla {\buildtextcedilla N}
+\definecharacter ncedilla {\buildtextcedilla n}
+\definecharacter Rcedilla {\buildtextcedilla R}
+\definecharacter rcedilla {\buildtextcedilla r}
+\definecharacter Scedilla {\buildtextcedilla S}
+\definecharacter scedilla {\buildtextcedilla s}
+\definecharacter Tcedilla {\buildtextcedilla T}
+\definecharacter tcedilla {\buildtextcedilla t}
+
+\definecharacter Ohungarumlaut {\buildtextaccent\texthungarumlaut O}
+\definecharacter ohungarumlaut {\buildtextaccent\texthungarumlaut o}
+\definecharacter Uhungarumlaut {\buildtextaccent\texthungarumlaut U}
+\definecharacter uhungarumlaut {\buildtextaccent\texthungarumlaut u}
+
+\definecharacter Aogonek {\buildtextogonek A}
+\definecharacter aogonek {\buildtextogonek a}
+\definecharacter Eogonek {\buildtextogonek E}
+\definecharacter eogonek {\buildtextogonek e}
+\definecharacter Iogonek {\buildtextogonek I}
+\definecharacter iogonek {\buildtextogonek i}
+\definecharacter Uogonek {\buildtextogonek U}
+\definecharacter uogonek {\buildtextogonek u}
+
+\definecharacter Aring {\buildtextaccent\textring A}
+\definecharacter aring {\buildtextaccent\textring a}
+\definecharacter Uring {\buildtextaccent\textring U}
+\definecharacter uring {\buildtextaccent\textring u}
+
+\definecharacter Abreve {\buildtextaccent\textbreve A}
+\definecharacter abreve {\buildtextaccent\textbreve a}
+\definecharacter Ebreve {\buildtextaccent\textbreve E}
+\definecharacter ebreve {\buildtextaccent\textbreve e}
+\definecharacter Gbreve {\buildtextaccent\textbreve G}
+\definecharacter gbreve {\buildtextaccent\textbreve g}
+\definecharacter Ibreve {\buildtextaccent\textbreve \dotlessI}
+\definecharacter ibreve {\buildtextaccent\textbreve \dotlessi}
+\definecharacter Obreve {\buildtextaccent\textbreve O}
+\definecharacter obreve {\buildtextaccent\textbreve o}
+\definecharacter Ubreve {\buildtextaccent\textbreve U}
+\definecharacter ubreve {\buildtextaccent\textbreve u}
+
+\definecharacter Ccaron {\buildtextaccent\textcaron C}
+\definecharacter ccaron {\buildtextaccent\textcaron c}
+\definecharacter Dcaron {\buildtextaccent\textcaron D}
+\definecharacter dcaron {\buildtextaccent\textcaron d}
+\definecharacter Ecaron {\buildtextaccent\textcaron E}
+\definecharacter ecaron {\buildtextaccent\textcaron e}
+\definecharacter Lcaron {\buildtextaccent\textcaron L}
+\definecharacter lcaron {\buildtextaccent\textcaron l}
+\definecharacter Ncaron {\buildtextaccent\textcaron N}
+\definecharacter ncaron {\buildtextaccent\textcaron n}
+\definecharacter Rcaron {\buildtextaccent\textcaron R}
+\definecharacter rcaron {\buildtextaccent\textcaron r}
+\definecharacter Scaron {\buildtextaccent\textcaron S}
+\definecharacter scaron {\buildtextaccent\textcaron s}
+\definecharacter Tcaron {\buildtextaccent\textcaron T}
+\definecharacter tcaron {\buildtextaccent\textcaron t}
+\definecharacter Ycaron {\buildtextaccent\textcaron Y}
+\definecharacter ycaron {\buildtextaccent\textcaron y}
+\definecharacter Zcaron {\buildtextaccent\textcaron Z}
+\definecharacter zcaron {\buildtextaccent\textcaron z}
+
+\definecharacter Lstroke {\hsmash{\char32}L}
+\definecharacter lstroke {\hsmash{\char32}l}
+\definecharacter Ostroke {\char31 } % "1F
+\definecharacter ostroke {\char28 } % "1C
+
+\definecharacter aumlaut {\moveaccent{-.1ex}\adiaeresis}
+\definecharacter eumlaut {\moveaccent{-.1ex}\ediaeresis}
+\definecharacter iumlaut {\moveaccent{-.1ex}\idiaeresis}
+\definecharacter oumlaut {\moveaccent{-.1ex}\odiaeresis}
+\definecharacter uumlaut {\moveaccent{-.1ex}\udiaeresis}
+
+\definecharacter Aumlaut {\smashaccent\Adiaeresis}
+\definecharacter Eumlaut {\smashaccent\Ediaeresis}
+\definecharacter Iumlaut {\smashaccent\Idiaeresis}
+\definecharacter Oumlaut {\smashaccent\Odiaeresis}
+\definecharacter Uumlaut {\smashaccent\Udiaeresis}
+
+\definecharacter scommaaccent {s\quoteright}
+\definecharacter Scommaaccent {S\quoteright}
+\definecharacter tcommaaccent {t\quoteright}
+\definecharacter Tcommaaccent {T\quoteright}
+
+\definecharacter Etilde {\buildtextaccent\texttilde E}
+\definecharacter etilde {\buildtextaccent\texttilde e}
+
+\definecharacter Ahook {A}
+\definecharacter ahook {a}
+\definecharacter Ehook {E}
+\definecharacter ehook {e}
+\definecharacter Ihook {I}
+\definecharacter ihook {i}
+\definecharacter Ohook {O}
+\definecharacter ohook {o}
+\definecharacter Uhook {U}
+\definecharacter uhook {u}
+\definecharacter Yhook {Y}
+\definecharacter yhook {y}
+
+\definecharacter Acircumflexgrave {\Acircumflex}
+\definecharacter Acircumflexacute {\Acircumflex}
+\definecharacter Acircumflextilde {\Acircumflex}
+\definecharacter Acircumflexhook {\Acircumflex}
+\definecharacter acircumflexgrave {\acircumflex}
+\definecharacter acircumflexacute {\acircumflex}
+\definecharacter acircumflextilde {\acircumflex}
+\definecharacter acircumflexhook {\acircumflex}
+\definecharacter Ecircumflexgrave {\Ecircumflex}
+\definecharacter Ecircumflexacute {\Ecircumflex}
+\definecharacter Ecircumflextilde {\Ecircumflex}
+\definecharacter Ecircumflexhook {\Ecircumflex}
+\definecharacter ecircumflexgrave {\ecircumflex}
+\definecharacter ecircumflexacute {\ecircumflex}
+\definecharacter ecircumflextilde {\ecircumflex}
+\definecharacter ecircumflexhook {\ecircumflex}
+\definecharacter Ocircumflexgrave {\Ocircumflex}
+\definecharacter Ocircumflexacute {\Ocircumflex}
+\definecharacter Ocircumflextilde {\Ocircumflex}
+\definecharacter Ocircumflexhook {\Ocircumflex}
+\definecharacter ocircumflexgrave {\ocircumflex}
+\definecharacter ocircumflexacute {\ocircumflex}
+\definecharacter ocircumflextilde {\ocircumflex}
+\definecharacter ocircumflexhook {\ocircumflex}
+
+\definecharacter Abrevegrave {\Abreve}
+\definecharacter Abreveacute {\Abreve}
+\definecharacter Abrevetilde {\Abreve}
+\definecharacter Abrevehook {\Abreve}
+\definecharacter abrevegrave {\abreve}
+\definecharacter abreveacute {\abreve}
+\definecharacter abrevetilde {\abreve}
+\definecharacter abrevehook {\abreve}
+
+\definecharacter Adotbelow {\buildtextbottomdot A}
+\definecharacter adotbelow {\buildtextbottomdot a}
+\definecharacter Edotbelow {\buildtextbottomdot E}
+\definecharacter edotbelow {\buildtextbottomdot e}
+\definecharacter Idotbelow {\buildtextbottomdot I}
+\definecharacter idotbelow {\buildtextbottomdot i}
+\definecharacter Odotbelow {\buildtextbottomdot O}
+\definecharacter odotbelow {\buildtextbottomdot o}
+\definecharacter Udotbelow {\buildtextbottomdot U}
+\definecharacter udotbelow {\buildtextbottomdot u}
+\definecharacter Ydotbelow {\buildtextbottomdot Y}
+\definecharacter ydotbelow {\buildtextbottomdot y}
+\definecharacter Ohorndotbelow {\buildtextbottomdot O}
+\definecharacter ohorndotbelow {\buildtextbottomdot o}
+\definecharacter Uhorndotbelow {\buildtextbottomdot U}
+\definecharacter uhorndotbelow {\buildtextbottomdot u}
+
+\definecharacter Acircumflexdotbelow {\buildtextbottomdot\Acircumflex}
+\definecharacter acircumflexdotbelow {\buildtextbottomdot\acircumflex}
+\definecharacter Ecircumflexdotbelow {\buildtextbottomdot\Ecircumflex}
+\definecharacter ecircumflexdotbelow {\buildtextbottomdot\ecircumflex}
+\definecharacter Ocircumflexdotbelow {\buildtextbottomdot\Ocircumflex}
+\definecharacter ocircumflexdotbelow {\buildtextbottomdot\ocircumflex}
+\definecharacter Abrevedotbelow {\buildtextbottomdot\Abreve}
+\definecharacter abrevedotbelow {\buildtextbottomdot\abreve}
+
+\definecharacter Ohorn {O}
+\definecharacter Ohorngrave {\Ograve}
+\definecharacter Ohornacute {\Oacute}
+\definecharacter Ohorntilde {\Otilde}
+\definecharacter Ohornhook {O}
+\definecharacter ohorn {o}
+\definecharacter ohorngrave {\ograve}
+\definecharacter ohornacute {\oacute}
+\definecharacter ohorntilde {\otilde}
+\definecharacter ohornhook {o}
+\definecharacter Uhorn {U}
+\definecharacter Uhorngrave {\Ugrave}
+\definecharacter Uhornacute {\Uacute}
+\definecharacter Uhorntilde {\Utilde}
+\definecharacter Uhornhook {U}
+\definecharacter uhorn {u}
+\definecharacter uhorngrave {\ugrave}
+\definecharacter uhornacute {\uacute}
+\definecharacter uhorntilde {\utilde}
+\definecharacter uhornhook {u}
+
+\stopencoding
+
+%D Greek (moved to here):
+
+\startencoding[default]
+
+% Uppercase Greek letters
+
+\definecharacter greekAlpha {\Alpha}
+\definecharacter greekBeta {\Beta}
+\definecharacter greekGamma {\Gamma}
+\definecharacter greekDelta {\Delta}
+\definecharacter greekEpsilon {\Epsilon}
+\definecharacter greekZeta {\Zeta}
+\definecharacter greekEta {\Eta}
+\definecharacter greekTheta {\Theta}
+\definecharacter greekIota {\Iota}
+\definecharacter greekKappa {\Kappa}
+\definecharacter greekLambda {\Lambda}
+\definecharacter greekMu {\Mu}
+\definecharacter greekNu {\Nu}
+\definecharacter greekXi {\Xi}
+\definecharacter greekOmicron {\Omicron}
+\definecharacter greekPi {\Pi}
+\definecharacter greekRho {\Rho}
+\definecharacter greekSigma {\Sigma}
+\definecharacter greekTau {\Tau}
+\definecharacter greekUpsilon {\Upsilon}
+\definecharacter greekPhi {\Phi}
+\definecharacter greekChi {\Chi}
+\definecharacter greekPsi {\Psi}
+\definecharacter greekOmega {\Omega}
+
+% Lowercase Greek letters
+
+\definecharacter greekalpha {\alpha}
+\definecharacter greekbeta {\beta}
+\definecharacter greekgamma {\gamma}
+\definecharacter greekdelta {\delta}
+\definecharacter greekepsilon {\epsilon}
+\definecharacter greekzeta {\zeta}
+\definecharacter greeketa {\eta}
+\definecharacter greektheta {\theta}
+\definecharacter greekiota {\iota}
+\definecharacter greekkappa {\kappa}
+\definecharacter greeklambda {\lambda}
+\definecharacter greekmu {\mu}
+\definecharacter greeknu {\nu}
+\definecharacter greekxi {\xi}
+\definecharacter greekomicron {\omicron}
+\definecharacter greekpi {\pi}
+\definecharacter greekrho {\rho}
+\definecharacter greekfinalsigma {\sigma}
+\definecharacter greeksigma {\sigma}
+\definecharacter greektau {\tau}
+\definecharacter greekupsilon {\upsilon}
+\definecharacter greekphi {\phi}
+\definecharacter greekchi {\chi}
+\definecharacter greekpsi {\psi}
+\definecharacter greekomega {\omega}
+
+% Accented Uppercase Greek letters
+
+\definecharacter greekAlphatonos {'A}
+\definecharacter greekEpsilontonos {'E}
+\definecharacter greekEtatonos {'H}
+\definecharacter greekIotatonos {'I}
+\definecharacter greekOmicrontonos {'O}
+\definecharacter greekUpsilontonos {'U}
+\definecharacter greekOmegatonos {'W}
+\definecharacter greekIotadialytika {"I}
+\definecharacter greekUpsilondialytika {"U}
+
+% Accented Lowercase Greek letters
+
+\definecharacter greekalphatonos {'a}
+\definecharacter greekepsilontonos {'e}
+\definecharacter greeketatonos {'h}
+\definecharacter greekiotatonos {'i}
+\definecharacter greekomicrontonos {'o}
+\definecharacter greekupsilontonos {'u}
+\definecharacter greekomegatonos {'w}
+\definecharacter greekiotadialytika {"i}
+\definecharacter greekupsilondialytika {"u}
+\definecharacter greekiotadialytikatonos {'"i}
+\definecharacter greekupsilondialytikatonos {'"u}
+
+% Miscellaneous Greek symbols
+
+\definecharacter greekleftquot {((}
+\definecharacter greekrightquot {))}
+\definecharacter greektonos {'}
+\definecharacter greekdialytikatonos {'"}
+\definecharacter greekapostrophos {''}
+
+\stopencoding
+
+%D Cyrillic (moved to here):
+
+\startencoding[default]
+
+\definecharacter cyrillicA {A}
+\definecharacter cyrillicB {B}
+\definecharacter cyrillicV {V}
+\definecharacter cyrillicG {G}
+\definecharacter cyrillicD {D}
+\definecharacter cyrillicE {E}
+\definecharacter cyrillicZH {ZH}
+\definecharacter cyrillicZ {Z}
+\definecharacter cyrillicI {I}
+\definecharacter cyrillicISHRT {ISHRT}
+\definecharacter cyrillicK {K}
+\definecharacter cyrillicL {L}
+\definecharacter cyrillicM {M}
+\definecharacter cyrillicN {N}
+\definecharacter cyrillicO {O}
+\definecharacter cyrillicP {P}
+\definecharacter cyrillicR {R}
+\definecharacter cyrillicS {S}
+\definecharacter cyrillicT {T}
+\definecharacter cyrillicU {U}
+\definecharacter cyrillicF {F}
+\definecharacter cyrillicH {H}
+\definecharacter cyrillicC {C}
+\definecharacter cyrillicCH {CH}
+\definecharacter cyrillicSH {SH}
+\definecharacter cyrillicSHCH {SHCH}
+\definecharacter cyrillicHRDSN {HRDSN}
+\definecharacter cyrillicERY {ERY}
+\definecharacter cyrillicSFTSN {SFTSN}
+\definecharacter cyrillicEREV {EREV}
+\definecharacter cyrillicYU {YU}
+\definecharacter cyrillicYA {YA}
+\definecharacter cyrillicGUP {GUP}
+\definecharacter cyrillicGHCRS {GHCRS}
+\definecharacter cyrillicDJE {DJE}
+\definecharacter cyrillicTSHE {TSHE}
+\definecharacter cyrillicSHHA {SHHA}
+\definecharacter cyrillicZHDSC {ZHDSC}
+\definecharacter cyrillicZDSC {ZDSC}
+\definecharacter cyrillicLJE {LJE}
+\definecharacter cyrillicYI {YI}
+\definecharacter cyrillicKDSC {KDSC}
+\definecharacter cyrillicKBEAK {KBEAK}
+\definecharacter cyrillicKVCRS {KVCRS}
+\definecharacter cyrillicAE {AE}
+\definecharacter cyrillicNDSC {NDSC}
+\definecharacter cyrillicNG {NG}
+\definecharacter cyrillicDZE {DZE}
+\definecharacter cyrillicOTLD {OTLD}
+\definecharacter cyrillicSDSC {SDSC}
+\definecharacter cyrillicUSHRT {USHRT}
+\definecharacter cyrillicY {Y}
+\definecharacter cyrillicYHCRS {YHCRS}
+\definecharacter cyrillicHDSC {HDSC}
+\definecharacter cyrillicDZHE {DZHE}
+\definecharacter cyrillicCHVCRS {CHVCRS}
+\definecharacter cyrillicCHRDSC {CHRDSC}
+\definecharacter cyrillicIE {IE}
+\definecharacter cyrillicSCHWA {SCHWA}
+\definecharacter cyrillicNJE {NJE}
+\definecharacter cyrillicYO {YO}
+\definecharacter cyrillicII {II}
+\definecharacter cyrillicJE {JE}
+\definecharacter cyrillicQ {Q}
+\definecharacter cyrillicW {W}
+
+\definecharacter cyrillica {a}
+\definecharacter cyrillicb {b}
+\definecharacter cyrillicv {v}
+\definecharacter cyrillicg {g}
+\definecharacter cyrillicd {d}
+\definecharacter cyrillice {e}
+\definecharacter cyrilliczh {zh}
+\definecharacter cyrillicz {z}
+\definecharacter cyrillici {i}
+\definecharacter cyrillicishrt {ishrt}
+\definecharacter cyrillick {k}
+\definecharacter cyrillicl {l}
+\definecharacter cyrillicm {m}
+\definecharacter cyrillicn {n}
+\definecharacter cyrillico {o}
+\definecharacter cyrillicp {p}
+\definecharacter cyrillicr {r}
+\definecharacter cyrillics {s}
+\definecharacter cyrillict {t}
+\definecharacter cyrillicu {u}
+\definecharacter cyrillicf {f}
+\definecharacter cyrillich {h}
+\definecharacter cyrillicc {c}
+\definecharacter cyrillicch {ch}
+\definecharacter cyrillicsh {sh}
+\definecharacter cyrillicshch {shch}
+\definecharacter cyrillichrdsn {hrdsn}
+\definecharacter cyrillicery {ery}
+\definecharacter cyrillicsftsn {sftsn}
+\definecharacter cyrillicerev {erev}
+\definecharacter cyrillicyu {yu}
+\definecharacter cyrillicya {ya}
+\definecharacter cyrillicgup {gup}
+\definecharacter cyrillicghcrs {ghcrs}
+\definecharacter cyrillicdje {dje}
+\definecharacter cyrillictshe {tshe}
+\definecharacter cyrillicshha {shha}
+\definecharacter cyrilliczhdsc {zhdsc}
+\definecharacter cyrilliczdsc {zdsc}
+\definecharacter cyrilliclje {lje}
+\definecharacter cyrillicyi {yi}
+\definecharacter cyrillickdsc {kdsc}
+\definecharacter cyrillickbeak {kbeak}
+\definecharacter cyrillickvcrs {kvcrs}
+\definecharacter cyrillicae {ae}
+\definecharacter cyrillicndsc {ndsc}
+\definecharacter cyrillicng {ng}
+\definecharacter cyrillicdze {dze}
+\definecharacter cyrillicotld {otld}
+\definecharacter cyrillicsdsc {sdsc}
+\definecharacter cyrillicushrt {ushrt}
+\definecharacter cyrillicy {y}
+\definecharacter cyrillicyhcrs {yhcrs}
+\definecharacter cyrillichdsc {hdsc}
+\definecharacter cyrillicdzhe {dzhe}
+\definecharacter cyrillicchvcrs {chvcrs}
+\definecharacter cyrillicchrdsc {chrdsc}
+\definecharacter cyrillicie {ie}
+\definecharacter cyrillicschwa {schwa}
+\definecharacter cyrillicnje {nje}
+\definecharacter cyrillicyo {yo}
+\definecharacter cyrillicii {ii}
+\definecharacter cyrillicje {je}
+\definecharacter cyrillicq {q}
+\definecharacter cyrillicw {w}
+
+\stopencoding
+
+%D Hebrew:
+
+\startencoding[default]
+
+\definecharacter hebrewAlef {'} \definecharacter hebrewBet {b} \definecharacter hebrewGimel {g} \definecharacter hebrewDalet {d} \definecharacter hebrewHe {h} \definecharacter hebrewVav {w} \definecharacter hebrewZayin {z} \definecharacter hebrewHet {\hstroke} \definecharacter hebrewTet {\tcedilla} \definecharacter hebrewYod {y} \definecharacter hebrewKaffinal {k} \definecharacter hebrewKaf {k} \definecharacter hebrewLamed {l} \definecharacter hebrewMemfinal {m} \definecharacter hebrewMem {m} \definecharacter hebrewNunfinal {n} \definecharacter hebrewNun {n} \definecharacter hebrewSamekh {s} \definecharacter hebrewAyin {\gdotaccent} \definecharacter hebrewPefinal {p} \definecharacter hebrewPe {p} \definecharacter hebrewTsadifinal {\scedilla} \definecharacter hebrewTsadi {\scedilla} \definecharacter hebrewQof {q} \definecharacter hebrewResh {r} \definecharacter hebrewShin {\scaron} \definecharacter hebrewTav {th}
+
+\stopencoding
+
+%D A few goodies:
+
+\def\eszett {\ssharp}
+\def\Eszett {\Ssharp}
+
+\def\lslash {\lstroke}
+\def\Lslash {\Lstroke}
+\def\dslash {\dstroke}
+\def\Dslash {\Dstroke}
+\def\oslash {\ostroke}
+\def\Oslash {\Ostroke}
+
+\def\dcroat {\dstroke}
+\def\Dcroat {\Dstroke}
+
+% for plain tex's sake
+
+\def\S {\sectionmark }
+\def\P {\paragraphmark}
+
+% for latex users sake
+
+\def\textS {\sectionmark }
+\def\textP {\paragraphmark}
+
+% for old times sake
+
+\def\florin {\textflorin } \def\florijn{\textflorin}
+\def\dollar {\textdollar }
+\def\pound {\textsterling}
+\def\sterling{\textsterling}
+
+% idem
+
+\def\promille{\perthousand}
+\def\permille{\perthousand}
+\def\procent {\percent }
+\def\permine {\fakepermine}
+
+% some more
+
+\def\hyphen {\softhyphen}
+\def\cwm {\compoundwordmark}
+\def\nonbreakinghyphen {\hyphen}
+\def\breakinghyphen {\hyphen\prewordbreak}
+
+% quotes
+
+\def\lowerleftsingleninequote {\quotesinglebase}
+\def\lowerleftdoubleninequote {\quotedblbase}
+\def\lowerrightsingleninequote {\quotesinglebase}
+\def\lowerrightdoubleninequote {\quotedblbase}
+
+\def\upperleftsingleninequote {\quoteright}
+\def\upperleftdoubleninequote {\quotedblright}
+\def\upperrightsingleninequote {\quoteright}
+\def\upperrightdoubleninequote {\quotedblright}
+
+\def\upperleftsinglesixquote {\quoteleft}
+\def\upperleftdoublesixquote {\quotedblleft}
+\def\upperrightsinglesixquote {\quoteleft}
+\def\upperrightdoublesixquote {\quotedblleft}
+
+\def\leftsubguillemot {\guilsingleleft}
+\def\rightsubguillemot {\guilsingleright}
+
+%D A couple of fallbacks suggestion by users, slightly
+%D adapted and obscured by memory saving hacks.
+
+\unprotect
+
+\startencoding[default]
+
+\definecharacter textcent {c\rlap{\hskip-.2\s!em
+ \vrule\!!width.2\s!pt\!!height1.2\s!ex\!!depth.2\s!ex}}
+
+\definecharacter texteuro {C\rlap{\hskip-.75\s!em
+ \vrule\!!width.4\s!em\!!height.85\s!ex\!!depth-.8\s!ex}}
+
+\definecharacter textblacksquare {\dontleavehmode\hbox{%
+ \vrule\!!width.3\s!em\!!height.4\s!em\!!depth-.1\s!em}}
+
+\definecharacter textbrokenbar {\dontleavehmode\hbox{\kern.05\s!em
+ \vrule\!!width.4\s!pt\!!height1.8\s!ex\!!depth-.85\s!ex
+ \llap{%
+ \vrule\!!width.4\s!pt\!!height.35\s!ex\!!depth.6\s!ex}%
+ \kern.05\s!em}}
+
+\stopencoding
+
+\protect
+
+%D We also use symbolic names for math accents.
+
+\startencoding[default]
+
+\definecharacter mathacute "7013
+\definecharacter mathgrave "7012
+\definecharacter mathddot "707F
+\definecharacter mathtilde "707E
+\definecharacter mathbar "7016
+\definecharacter mathbreve "7015
+\definecharacter mathcheck "7014
+\definecharacter mathhat "705E
+\definecharacter mathvec "017E
+\definecharacter mathdot "705F
+\definecharacter mathwidetilde "0365
+\definecharacter mathwidehat "0362
+
+\stopencoding
+
+% \startencoding [default]
+
+% \definecommand prime {\mathematics{'}}
+% \definecommand doubleprime {\mathematics{''}}
+% \definecommand tripleprime {\mathematics{'''}}
+
+% \stopencoding
+
+\ifx\zdot\undefined \def\zdot{\zdotaccent} \fi
+\ifx\Zdot\undefined \def\Zdot{\Zdotaccent} \fi
+
+\ifx\greeklamda\undefined \def\greeklamda{\greeklambda} \fi
+\ifx\greekLamda\undefined \def\greekLamda{\greekLambda} \fi
+
+\ifx\leftguillemet \undefined \def\leftguillemet {\leftguillemot } \fi
+\ifx\rightguillemet\undefined \def\rightguillemet{\rightguillemot} \fi
+
+%D New:
+
+\startencoding[\s!default]
+
+\definecharacter schwa {\hbox{\rotate[\c!rotation=180,\c!location=\v!high]{\hbox{e}}}}
+\definecharacter schwagrave {\buildtextgrave\schwa}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ec.tex b/Master/texmf-dist/tex/context/base/enco-ec.tex
new file mode 100644
index 00000000000..aa8319e007f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ec.tex
@@ -0,0 +1,284 @@
+%D \module
+%D [ file=enco-ec,
+%D version=2000.05.07, % 1999.16.07,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=\LATEX\ EC Encoding,
+%D author={Patrick Gundlach, Hans Hagen, Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is \LATEX2e's T1 encoding vector. All standard \LATEX\
+%D accents will work, including \type{\k}. The only accent that
+%D does not work is \type{\t} (there is no tie in T1 encoding).
+%D
+%D Annoyingly, most \POSTSCRIPT\ fonts do not have \type
+%D {\dotlessj}, and T1 encoding does not make the various
+%D prebuilts with \type {j} available.
+%D
+%D There is hardly a point in supporting TS1 encoding.
+
+\startmapping[ec]
+
+\resetcaserange 141 to 141
+\resetcaserange 149 to 149
+\definecasemap 159 to 159
+\resetcaserange 173 to 173
+\resetcaserange 180 to 181
+\resetcaserange 184 to 184
+\resetcaserange 189 to 191
+
+\definecasemap 157 `i 157
+\definecasemap 158 158 `D
+
+\definecasemaps 128 to 156 lc +32 uc 0
+\definecasemaps 160 to 188 lc 0 uc -32
+
+\definecasemaps 192 to 222 lc +32 uc 0
+\definecasemaps 224 to 254 lc 0 uc -32
+
+\definecaseswap 255 223
+
+%D Some languages need this:
+
+% \definecaseself 34 % quotedbl
+% \definecaseself 18 % quotedblbase
+% \definecaseself 16 % quotedblleft
+% \definecaseself 17 % quotedblright
+% \definecaseself 39 % quotesingle
+% \definecaseself 13 % quotesinglebase
+% \definecaseself 96 % quoteleft
+% \definecaseself 39 % quoteright
+
+%D So far for the mapping.
+
+%D The following characters are kind of dangerous,
+%D that is, they are normally not part of fonts, unless
+%D explicitly constructed.
+%D
+%D \startitemize[columns,two]
+%D \item \type{\dotlessj}
+%D \item \type{\IJligature}
+%D \item \type{\ijligature}
+%D \item \type{\Ssharp}
+%D \item \type{\perthousand}
+%D \item \type{\compoundwordmark}
+% %D \item \type{\textvisiblespace}
+% %D \item \type{\tcaron}
+% %D \item \type{\tcedilla }
+% %D \item \type{\Tcedilla}
+% %D \item \type{\ydiaeresis}
+%D \stopitemize
+
+%D So, for the moment we nil them; we can always create
+%D another vector if needed.
+
+\stopmapping
+
+\startencoding[ec][ec] % second arg defines auto regime, needed here ?
+
+\definecharacter textacute 1
+\definecharacter textbreve 8
+\definecharacter textcaron 7
+\definecharacter textcedilla 11
+\definecharacter textcircumflex 2
+\definecharacter textdiaeresis 4
+\definecharacter textdotaccent 10
+\definecharacter textgrave 0
+\definecharacter texthungarumlaut 5
+\definecharacter textmacron 9
+\definecharacter textogonek 12
+\definecharacter textring 6
+\definecharacter texttilde 3
+
+\definecharacter dotlessi 25
+%definecharacter dotlessj 26
+
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter aeligature 230
+\definecharacter AEligature 198
+%definecharacter ijligature 188
+%definecharacter IJligature 156
+\definecharacter oeligature 247
+\definecharacter OEligature 215
+
+\definecharacter ssharp 255
+%definecharacter Ssharp 223
+
+\definecharacter thorn 254
+\definecharacter Thorn 222
+
+%definecharacter Eth 208 % no !
+\definecharacter Dstroke 208
+\definecharacter eth 240
+
+\definecharacter exclamdown 189 % lig
+\definecharacter questiondown 190 % lig
+
+\definecharacter sectionmark 159
+
+\definecharacter textsterling 191
+
+\definecharacter percent 37
+%definecharacter perthousand 24
+
+\definecharacter softhyphen 127 % ?
+%definecharacter compoundwordmark 23
+
+\definecharacter textasciicircum 94
+\definecharacter textasciitilde 126
+\definecharacter textbackslash 92
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textunderscore 95
+%definecharacter textvisiblespace 32
+
+\definecharacter quotedbl 34
+\definecharacter quotedblbase 18
+\definecharacter quotedblleft 16
+\definecharacter quotedblright 17
+
+\definecharacter quotesingle 39 % fake 'm
+\definecharacter quotesinglebase 13
+
+\definecharacter quoteleft 96
+\definecharacter quoteright 39
+
+\definecharacter guilsingleleft 14
+\definecharacter guilsingleright 15
+\definecharacter leftguillemot 19
+\definecharacter rightguillemot 20
+
+\definecharacter aacute 225
+\definecharacter Aacute 193
+\definecharacter cacute 162
+\definecharacter Cacute 130
+\definecharacter eacute 233
+\definecharacter Eacute 201
+\definecharacter iacute 237
+\definecharacter Iacute 205
+\definecharacter lacute 168
+\definecharacter Lacute 136
+\definecharacter Nacute 139
+\definecharacter Oacute 211
+\definecharacter nacute 171
+\definecharacter oacute 243
+\definecharacter racute 175
+\definecharacter Racute 143
+\definecharacter sacute 177
+\definecharacter Sacute 145
+\definecharacter uacute 250
+\definecharacter Uacute 218
+\definecharacter yacute 253
+\definecharacter Yacute 221
+\definecharacter zacute 185
+\definecharacter Zacute 153
+
+\definecharacter abreve 160
+\definecharacter Abreve 128
+\definecharacter gbreve 167
+\definecharacter Gbreve 135
+
+\definecharacter ccaron 163
+\definecharacter Ccaron 131
+\definecharacter dcaron 164
+\definecharacter Dcaron 132
+\definecharacter ecaron 165
+\definecharacter Ecaron 133
+\definecharacter lcaron 169
+\definecharacter Lcaron 137
+\definecharacter ncaron 172
+\definecharacter Ncaron 140
+\definecharacter rcaron 176
+\definecharacter Rcaron 144
+\definecharacter scaron 178
+\definecharacter Scaron 146
+\definecharacter tcaron 180
+\definecharacter Tcaron 148
+\definecharacter zcaron 186
+\definecharacter Zcaron 154
+
+\definecharacter ccedilla 231
+\definecharacter Ccedilla 199
+\definecharacter scedilla 179
+\definecharacter Scedilla 147
+\definecharacter tcedilla 181
+\definecharacter Tcedilla 149
+
+\definecharacter acircumflex 226
+\definecharacter Acircumflex 194
+\definecharacter ecircumflex 234
+\definecharacter Ecircumflex 202
+\definecharacter icircumflex 238
+\definecharacter Icircumflex 206
+\definecharacter ocircumflex 244
+\definecharacter Ocircumflex 212
+\definecharacter ucircumflex 251
+\definecharacter Ucircumflex 219
+
+\definecharacter adiaeresis 228
+\definecharacter Adiaeresis 196
+\definecharacter ediaeresis 235
+\definecharacter Ediaeresis 203
+\definecharacter idiaeresis 239
+\definecharacter Idiaeresis 207
+\definecharacter odiaeresis 246
+\definecharacter Odiaeresis 214
+\definecharacter udiaeresis 252
+\definecharacter Udiaeresis 220
+\definecharacter ydiaeresis 184
+\definecharacter Ydiaeresis 152
+
+\definecharacter Idotaccent 157
+\definecharacter zdotaccent 187
+\definecharacter Zdotaccent 155
+
+\definecharacter agrave 224
+\definecharacter Agrave 192
+\definecharacter egrave 232
+\definecharacter Egrave 200
+\definecharacter igrave 236
+\definecharacter Igrave 204
+\definecharacter ograve 242
+\definecharacter Ograve 210
+\definecharacter ugrave 249
+\definecharacter Ugrave 217
+
+\definecharacter ohungarumlaut 174
+\definecharacter Ohungarumlaut 142
+\definecharacter uhungarumlaut 182
+\definecharacter Uhungarumlaut 150
+
+%definecharacter dmacron 158 % no !
+\definecharacter dstroke 158
+
+\definecharacter aogonek 161
+\definecharacter Aogonek 129
+\definecharacter eogonek 166
+\definecharacter Eogonek 134
+
+\definecharacter aring 229
+\definecharacter Aring 197
+\definecharacter uring 183
+\definecharacter Uring 151
+
+\definecharacter lstroke 170
+\definecharacter Lstroke 138
+\definecharacter ostroke 248
+\definecharacter Ostroke 216
+
+\definecharacter atilde 227
+\definecharacter Atilde 195
+\definecharacter ntilde 241
+\definecharacter Ntilde 209
+\definecharacter otilde 245
+\definecharacter Otilde 213
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ecm.tex b/Master/texmf-dist/tex/context/base/enco-ecm.tex
new file mode 100644
index 00000000000..b744739607d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ecm.tex
@@ -0,0 +1,33 @@
+%D \module
+%D [ file=enco-ec,
+%D version=2000.05.07,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Glyphs that may not be present in EC,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The next typescript removes a few problematic characters
+%D from the ec encoding vector. So, in case of troubles, say
+%D
+%D \starttyping
+%D \useencoding[ecm] % ec minus
+%D \stoptyping
+
+\startencoding[ec][ec]
+
+\definecharacter ijligature {ij}
+\definecharacter IJligature {IJ}
+\definecharacter Ssharp {SS}
+\definecharacter tcaron {\buildtextaccent\textcaron t}
+\definecharacter Tcedilla {\buildtextcedilla T}
+\definecharacter tcedilla {\buildtextcedilla t}
+\definecharacter ydiaeresis {\buildtextaccent\textdiaeresis y}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-el.tex b/Master/texmf-dist/tex/context/base/enco-el.tex
new file mode 100644
index 00000000000..24729967bae
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-el.tex
@@ -0,0 +1,272 @@
+%D \module
+%D [ file=enco-el,
+%D version=2005.08.24,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=EuroLetter,
+%D author={Several Users},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This EuroLetter encoding vector, also known as Dense Encoding is
+%D the result of discussion among users, most noticably Adam Lindsay,
+%D Mojka Miklavec, Patrick Gundlach, Taco Hoekwater and \unknown.
+%D It was a follow up of a thread started long ago where we
+%D discussed an encoding without the weird, never used symbols, but
+%D with as many characters as possible in order to support the utf-8
+%D input regime.
+
+\startencoding[el]
+
+\definecasemaps 1 to 15 lc +16 uc 0
+\definecasemaps 17 to 31 lc 0 uc -16
+
+\definecasemaps 128 to 159 lc +32 uc 0
+\definecasemaps 160 to 191 lc 0 uc -32
+
+\definecasemaps 192 to 223 lc +32 uc 0
+\definecasemaps 224 to 255 lc 0 uc -32
+
+\definecasemap 92 92 124
+\definecasemap 92 124 92
+
+\definecharacter dotlessi 160
+\definecharacter endash 32
+\definecharacter emdash 16
+
+\definecharacter aeligature 230
+\definecharacter AEligature 198
+\definecharacter oeligature 247
+\definecharacter OEligature 215
+
+\definecharacter ssharp 38
+
+\definecharacter thorn 254
+\definecharacter Thorn 222
+
+\definecharacter eth 240
+\definecharacter Eth 208
+
+\definecharacter exclamdown 42
+\definecharacter questiondown 43
+
+\definecharacter quotedbl 35
+\definecharacter quotedblbase 36
+\definecharacter quotedblleft 34
+\definecharacter quotedblright 35
+
+\definecharacter quotesingle 39
+\definecharacter quotesinglebase 0
+
+\definecharacter quoteleft 96
+\definecharacter quoteright 39
+
+\definecharacter guilsingleleft 60
+\definecharacter guilsingleright 62
+
+\definecharacter leftguillemot 123
+\definecharacter rightguillemot 125
+
+\definecharacter Acircumflex 194
+\definecharacter acircumflex 226
+%definecharacter Ccircumflex {\buildtextaccent\textcircumflex C}
+%definecharacter ccircumflex {\buildtextaccent\textcircumflex c}
+\definecharacter Ecircumflex 202
+\definecharacter ecircumflex 234
+%definecharacter Gcircumflex {\buildtextaccent\textcircumflex G}
+%definecharacter gcircumflex {\buildtextaccent\textcircumflex g}
+%definecharacter Hcircumflex {\buildtextaccent\textcircumflex H}
+%definecharacter hcircumflex {\buildtextaccent\textcircumflex h}
+\definecharacter Icircumflex 206
+\definecharacter icircumflex 238
+%definecharacter Jcircumflex {\buildtextaccent\textcircumflex \dotlessJ}
+%definecharacter jcircumflex {\buildtextaccent\textcircumflex \dotlessj}
+\definecharacter Ocircumflex 212
+\definecharacter ocircumflex 244
+%definecharacter Scircumflex {\buildtextaccent\textcircumflex S}
+%definecharacter scircumflex {\buildtextaccent\textcircumflex s}
+\definecharacter Ucircumflex 219
+\definecharacter ucircumflex 251
+\definecharacter Wcircumflex 154
+\definecharacter wcircumflex 186
+\definecharacter Ycircumflex 156
+\definecharacter ycircumflex 188
+
+\definecharacter Agrave 192
+\definecharacter agrave 224
+\definecharacter Egrave 200
+\definecharacter egrave 232
+\definecharacter Igrave 204
+\definecharacter igrave 236
+\definecharacter Ograve 210
+\definecharacter ograve 242
+\definecharacter Ugrave 217
+\definecharacter ugrave 249
+\definecharacter Ygrave 155
+\definecharacter ygrave 187
+
+\definecharacter Atilde 195
+\definecharacter atilde 227
+%definecharacter Itilde {\buildtextaccent\texttilde \dotlessI}
+%definecharacter itilde {\buildtextaccent\texttilde \dotlessi}
+\definecharacter Ntilde 209
+\definecharacter ntilde 241
+\definecharacter Otilde 213
+\definecharacter otilde 245
+%definecharacter Utilde {\buildtextaccent\texttilde U}
+%definecharacter utilde {\buildtextaccent\texttilde u}
+%definecharacter Ytilde {\buildtextaccent\texttilde Y}
+%definecharacter ytilde {\buildtextaccent\texttilde y}
+
+\definecharacter Adiaeresis 196
+\definecharacter adiaeresis 228
+\definecharacter Ediaeresis 203
+\definecharacter ediaeresis 235
+\definecharacter Idiaeresis 207
+\definecharacter idiaeresis 239
+\definecharacter Odiaeresis 214
+\definecharacter odiaeresis 246
+\definecharacter Udiaeresis 220
+\definecharacter udiaeresis 252
+\definecharacter Ydiaeresis 223
+\definecharacter ydiaeresis 255
+
+\definecharacter Aacute 193
+\definecharacter aacute 225
+\definecharacter Cacute 4
+\definecharacter cacute 20
+\definecharacter Eacute 201
+\definecharacter eacute 233
+\definecharacter Iacute 205
+\definecharacter iacute 237
+\definecharacter Lacute 132
+\definecharacter lacute 164
+\definecharacter Nacute 136
+\definecharacter nacute 168
+\definecharacter Oacute 211
+\definecharacter oacute 243
+\definecharacter Racute 141
+\definecharacter racute 173
+\definecharacter Sacute 144
+\definecharacter sacute 176
+\definecharacter Uacute 218
+\definecharacter uacute 250
+\definecharacter Yacute 221
+\definecharacter yacute 253
+\definecharacter Zacute 157
+\definecharacter zacute 189
+
+\definecharacter Dstroke 8
+\definecharacter dstroke 24
+\definecharacter Hstroke 92
+\definecharacter hstroke 124
+%definecharacter Tstroke {T}
+%definecharacter tstroke {t}
+
+\definecharacter Cdotaccent 6
+\definecharacter cdotaccent 22
+\definecharacter Edotaccent 10
+\definecharacter edotaccent 26
+\definecharacter Gdotaccent 15
+\definecharacter gdotaccent 31
+\definecharacter Idotaccent 128
+%definecharacter idotaccent {\buildtextaccent\textdotaccent \dotlessi}
+\definecharacter Zdotaccent 159
+\definecharacter zdotaccent 191
+
+\definecharacter Amacron 2
+\definecharacter amacron 18
+\definecharacter Emacron 11
+\definecharacter emacron 27
+\definecharacter Imacron 129
+\definecharacter imacron 161
+\definecharacter Omacron 140
+\definecharacter omacron 172
+\definecharacter Umacron 152
+\definecharacter umacron 184
+
+\definecharacter Ccedilla 199
+\definecharacter ccedilla 231
+\definecharacter Scedilla 146
+\definecharacter scedilla 178
+
+\definecharacter Gcommaaccent 14
+\definecharacter gcommaaccent 30
+\definecharacter Kcommaaccent 131
+\definecharacter kcommaaccent 163
+\definecharacter Lcommaaccent 135
+\definecharacter lcommaaccent 167
+\definecharacter Ncommaaccent 138
+\definecharacter ncommaaccent 170
+\definecharacter Rcommaaccent 143
+\definecharacter rcommaaccent 175
+%definecharacter Tcedilla 149 % there is no tcedilla in encoding
+%definecharacter tcedilla 181
+
+\definecharacter Scommaaccent 147
+\definecharacter scommaaccent 179
+\definecharacter Tcommaaccent 149
+\definecharacter tcommaaccent 181
+
+\definecharacter Ohungarumlaut 139
+\definecharacter ohungarumlaut 171
+\definecharacter Uhungarumlaut 150
+\definecharacter uhungarumlaut 182
+
+\definecharacter Aogonek 3
+\definecharacter aogonek 19
+\definecharacter Eogonek 12
+\definecharacter eogonek 28
+\definecharacter Iogonek 130
+\definecharacter iogonek 162
+\definecharacter Uogonek 153
+\definecharacter uogonek 185
+
+\definecharacter Aring 197
+\definecharacter aring 229
+\definecharacter Uring 151
+\definecharacter uring 183
+
+\definecharacter Abreve 1
+\definecharacter abreve 17
+%definecharacter Ebreve {\buildtextaccent\textbreve E}
+%definecharacter ebreve {\buildtextaccent\textbreve e}
+\definecharacter Gbreve 13
+\definecharacter gbreve 29
+%definecharacter Ibreve {\buildtextaccent\textbreve \dotlessI}
+%definecharacter ibreve {\buildtextaccent\textbreve \dotlessi}
+%definecharacter Obreve {\buildtextaccent\textbreve O}
+%definecharacter obreve {\buildtextaccent\textbreve o}
+%definecharacter Ubreve {\buildtextaccent\textbreve U}
+%definecharacter ubreve {\buildtextaccent\textbreve u}
+
+\definecharacter Ccaron 5
+\definecharacter ccaron 21
+\definecharacter Dcaron 7
+\definecharacter dcaron 23
+\definecharacter Ecaron 9
+\definecharacter ecaron 25
+\definecharacter Lcaron 133
+\definecharacter lcaron 165
+\definecharacter Ncaron 137
+\definecharacter ncaron 169
+\definecharacter Rcaron 142
+\definecharacter rcaron 174
+\definecharacter Scaron 145
+\definecharacter scaron 177
+\definecharacter Tcaron 148
+\definecharacter tcaron 180
+%definecharacter Ycaron {\buildtextaccent\textcaron Y}
+%definecharacter ycaron {\buildtextaccent\textcaron y}
+\definecharacter Zcaron 158
+\definecharacter zcaron 190
+
+\definecharacter Lstroke 134
+\definecharacter lstroke 166
+\definecharacter Ostroke 216
+\definecharacter ostroke 248
+
+\stopencoding
diff --git a/Master/texmf-dist/tex/context/base/enco-fde.tex b/Master/texmf-dist/tex/context/base/enco-fde.tex
new file mode 100644
index 00000000000..92ce7cc96c2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-fde.tex
@@ -0,0 +1,125 @@
+%D \module
+%D [ file=enco-fde,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=German Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-ger.tex.
+
+\unprotect
+
+\startlanguagespecifics[\s!de]
+
+ \appendtoks \makecharacteractive " \to \everynormalcatcodes
+
+ \installcompoundcharacter "a {\aumlaut\midworddiscretionary}
+ \installcompoundcharacter "e {\eumlaut\midworddiscretionary}
+ \installcompoundcharacter "i {\iumlaut\midworddiscretionary}
+ \installcompoundcharacter "o {\oumlaut\midworddiscretionary}
+ \installcompoundcharacter "u {\uumlaut\midworddiscretionary}
+ \installcompoundcharacter "s {\ssharp}
+ \installcompoundcharacter "z {\ssharp}
+
+ \installcompoundcharacter "A {\Aumlaut}
+ \installcompoundcharacter "E {\Eumlaut}
+ \installcompoundcharacter "I {\Iumlaut}
+ \installcompoundcharacter "O {\Oumlaut}
+ \installcompoundcharacter "U {\Uumlaut}
+ \installcompoundcharacter "Z {SZ}
+ \installcompoundcharacter "S {SS}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!de]
+
+ \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
+ \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
+ \installcompoundcharacter "ll {\discretionary{ll-}{l}{ll}}
+ \installcompoundcharacter "mm {\discretionary{mm-}{m}{mm}}
+ \installcompoundcharacter "nn {\discretionary{nn-}{n}{nn}}
+ \installcompoundcharacter "pp {\discretionary{pp-}{p}{pp}}
+ \installcompoundcharacter "rr {\discretionary{rr-}{r}{rr}}
+ \installcompoundcharacter "tt {\discretionary{tt-}{t}{tt}}
+
+ \installcompoundcharacter "CK {\discretionary {K-}{K}{CK}}
+ \installcompoundcharacter "FF {\discretionary{FF-}{F}{FF}}
+ \installcompoundcharacter "LL {\discretionary{LL-}{L}{LL}}
+ \installcompoundcharacter "MM {\discretionary{MM-}{M}{MM}}
+ \installcompoundcharacter "NN {\discretionary{NN-}{N}{NN}}
+ \installcompoundcharacter "PP {\discretionary{PP-}{P}{PP}}
+ \installcompoundcharacter "RR {\discretionary{RR-}{R}{RR}}
+ \installcompoundcharacter "TT {\discretionary{TT-}{T}{TT}}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!de]
+
+ \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+ \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+ \installcompoundcharacter ". {\kern.1em\ignorespaces}
+
+ \def\setupDElanguage
+ {\setuplanguage
+ [\s!de]
+ [\c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\leftsubguillemot,
+ \c!rightsubsentence=\rightsubguillemot]}
+
+ \installcompoundcharacter "< {{\setupDElanguage|<|}}
+ \installcompoundcharacter "> {{\setupDElanguage|>|}}
+ \installcompoundcharacter "| {|*|}
+
+\stoplanguagespecifics
+
+% \hyphenatedword{hinauff|*|liegen}
+% \hyphenatedword{hinauff"|liegen}
+
+%D An experimental hack:
+
+% no {\simplifiedcompoundcharacter"}
+
+\startencoding[pdfdoc]
+ \startlanguagespecifics[\s!de]% hm, a % is needed
+ \defineactivecharacter " {\"}
+ \stoplanguagespecifics
+\stopencoding
+
+\startencoding[ec]
+ \startlanguagespecifics[\s!de]%
+ \installcompoundcharacter "a {\adiaeresis}
+ \installcompoundcharacter "e {\ediaeresis}
+ \installcompoundcharacter "i {\idiaeresis}
+ \installcompoundcharacter "o {\odiaeresis}
+ \installcompoundcharacter "u {\udiaeresis}
+ \installcompoundcharacter "A {\Adiaeresis}
+ \installcompoundcharacter "E {\Ediaeresis}
+ \installcompoundcharacter "I {\Idiaeresis}
+ \installcompoundcharacter "O {\Odiaeresis}
+ \installcompoundcharacter "U {\Udiaeresis}
+ \stoplanguagespecifics
+\stopencoding
+
+\startencoding[texnansi]
+ \startlanguagespecifics[\s!de]%
+ \installcompoundcharacter "a {\adiaeresis}
+ \installcompoundcharacter "e {\ediaeresis}
+ \installcompoundcharacter "i {\idiaeresis}
+ \installcompoundcharacter "o {\odiaeresis}
+ \installcompoundcharacter "u {\udiaeresis}
+ \installcompoundcharacter "A {\Adiaeresis}
+ \installcompoundcharacter "E {\Ediaeresis}
+ \installcompoundcharacter "I {\Idiaeresis}
+ \installcompoundcharacter "O {\Odiaeresis}
+ \installcompoundcharacter "U {\Udiaeresis}
+ \stoplanguagespecifics
+\stopencoding
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ffr.tex b/Master/texmf-dist/tex/context/base/enco-ffr.tex
new file mode 100644
index 00000000000..f321b100529
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ffr.tex
@@ -0,0 +1,41 @@
+%D \module
+%D [ file=enco-ffr,
+%D version=2002.05.07,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=French Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \definehspace[fr][:][.25em]
+% \definehspace[fr][;][.25em]
+% \definehspace[fr][!][.25em]
+% \definehspace[fr][?][.25em]
+
+\enablemode[activecolon] \usemodule[tryout] % for the moment
+
+\unprotect
+
+\startlanguagespecifics[\s!fr]
+
+ \defineactivecharacter : {\mathortext{:}{\directdiscretionary{:}}}
+ \defineactivecharacter ; {\mathortext{;}{\directdiscretionary{;}}}
+ \defineactivecharacter ! {\mathortext{!}{\directdiscretionary{!}}}
+ \defineactivecharacter ? {\mathortext{?}{\directdiscretionary{?}}}
+
+\stoplanguagespecifics
+
+% maybe tricky due to possible name clashes:
+%
+% \def\ieme {\highordinalstr{e}}
+% \def\iemes{\highordinalstr{es}}
+% \def\ier {\highordinalstr{er}}
+% \def\iers {\highordinalstr{ers}}
+% \def\iere {\highordinalstr{re}}
+% \def\ieres{\highordinalstr{res}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-fpl.tex b/Master/texmf-dist/tex/context/base/enco-fpl.tex
new file mode 100644
index 00000000000..ec9c81070cc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-fpl.tex
@@ -0,0 +1,94 @@
+%D \module
+%D [ file=enco-fpl,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Polish Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-sla.tex.
+
+\unprotect
+
+% todo : named glyphs
+
+\startlanguagespecifics[\s!pl]
+
+ \appendtoks \makecharacteractive / \to \everynormalcatcodes
+
+ \installcompoundcharacter /a {\k a}
+ \installcompoundcharacter /c {\'c}
+ \installcompoundcharacter /e {\k e}
+ \installcompoundcharacter /l {\l}
+ \installcompoundcharacter /n {\'n}
+ \installcompoundcharacter /o {\'o}
+ \installcompoundcharacter /s {\'s}
+ \installcompoundcharacter /x {\'z}
+ \installcompoundcharacter /z {\.z}
+ \installcompoundcharacter /A {\k A}
+ \installcompoundcharacter /C {\'C}
+ \installcompoundcharacter /E {\k E}
+ \installcompoundcharacter /L {\L}
+ \installcompoundcharacter /N {\'N}
+ \installcompoundcharacter /O {\'O}
+ \installcompoundcharacter /S {\'S}
+ \installcompoundcharacter /X {\'Z}
+ \installcompoundcharacter /Z {\.Z}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!pl]
+
+ \installcompoundcharacter /, {\handlequotation\c!leftquotation}
+ \installcompoundcharacter /' {\handlequotation\c!rightquotation}
+
+ \def\setupPLlanguage%
+ {\setuplanguage
+ [\s!pl]
+ [\c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\leftsubguillemot,
+ \c!rightsubsentence=\rightsubguillemot]}
+
+ \installcompoundcharacter /< {{\setupPLlanguage|<|}}
+ \installcompoundcharacter /> {{\setupPLlanguage|>|}}
+
+ \installcompoundcharacter /- {|-|}
+
+\stoplanguagespecifics
+
+\startlanguagespecifics[\s!pl]
+
+ \definesortkey {/a}{a}{a}{\k a}
+ \definesortkey {/A}{a}{a}{\k a}
+ \definesortkey {/c}{c}{a}{\'c}
+ \definesortkey {/C}{c}{a}{\'c}
+ \definesortkey {/e}{e}{a}{\k e}
+ \definesortkey {/E}{e}{a}{\k e}
+ \definesortkey {/l}{l}{a}{\l }
+ \definesortkey {/L}{l}{a}{\l }
+ \definesortkey {/n}{n}{a}{\'n}
+ \definesortkey {/N}{n}{a}{\'n}
+ \definesortkey {/o}{o}{a}{\'o}
+ \definesortkey {/O}{o}{a}{\'o}
+ \definesortkey {/s}{s}{a}{\'s}
+ \definesortkey {/S}{s}{a}{\'s}
+ \definesortkey {/x}{z}{a}{\'x}
+ \definesortkey {/X}{z}{a}{\'x}
+ \definesortkey {/z}{z}{b}{\.z}
+ \definesortkey {/Z}{z}{b}{\.z}
+
+\stoplanguagespecifics
+
+\startencoding[pdfdoc]
+ \startlanguagespecifics[pl]% hm
+ \defineactivecharacter / {\simplifiedcompoundcharacter/}
+ \stoplanguagespecifics
+\stopencoding
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-fro.tex b/Master/texmf-dist/tex/context/base/enco-fro.tex
new file mode 100644
index 00000000000..b811e207e46
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-fro.tex
@@ -0,0 +1,33 @@
+%D \module
+%D [ file=enco-fro,
+%D version=2000.08.20,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Romanian Input Filter,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of lang-ita.tex.
+
+\unprotect
+
+\startlanguagespecifics[\s!ro]
+
+ \installcompoundcharacter "a {\acircumflex}
+ \installcompoundcharacter "i {\icircumflex}
+ \installcompoundcharacter "s {\scedilla}
+ \installcompoundcharacter "t {\tcedilla}
+ \installcompoundcharacter "A {\Acircumflex}
+ \installcompoundcharacter "I {\Icircumflex}
+ \installcompoundcharacter "S {\Scedilla}
+ \installcompoundcharacter "T {\Tcedilla}
+ \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+ \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+
+\stoplanguagespecifics
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-fsl.tex b/Master/texmf-dist/tex/context/base/enco-fsl.tex
new file mode 100644
index 00000000000..86a41c88a37
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-fsl.tex
@@ -0,0 +1,32 @@
+%D \module
+%D [ file=enco-fsl,
+%D version=2005.08.17,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Slovenian Specialities,
+%D author={Hans Hagen, Mojka Miklavec},
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Usage:
+%D
+%D \starttyping
+%D \useencoding[fsl]
+%D
+%D \starttext
+%D \dstroke \language[sl] \dstroke
+%D \stoptext
+%D \stoptyping
+
+\unprotect
+
+\startlanguagespecifics[\s!sl]
+ \startencoding[\s!default]
+ \definecharacter dstroke {d\zcaron} % hm, expects a space delimiter
+ \stopencoding
+\stoplanguagespecifics
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-grk.tex b/Master/texmf-dist/tex/context/base/enco-grk.tex
new file mode 100644
index 00000000000..882a3c9b0cd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-grk.tex
@@ -0,0 +1,190 @@
+%D \module
+%D [ file=enco-grk,
+%D version=2003.03.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Greek,
+%D author=Apostolos Syropoulos,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startmapping[iso-8859-7]
+
+% Uppercase Greek letters
+
+\definecasemap 193 193 225 % greekAlpha
+\definecasemap 194 194 226 % greekBeta
+\definecasemap 195 195 227 % greekGamma
+\definecasemap 196 196 228 % greekDelta
+\definecasemap 197 197 229 % greekEpsilon
+\definecasemap 198 198 230 % greekZeta
+\definecasemap 199 199 213 % greekEta
+\definecasemap 200 200 232 % greekTheta
+\definecasemap 201 201 233 % greekIota
+\definecasemap 202 202 234 % greekKappa
+\definecasemap 203 203 235 % greekLambda
+\definecasemap 204 204 236 % greekMu
+\definecasemap 205 205 237 % greekNu
+\definecasemap 206 206 238 % greekXi
+\definecasemap 207 207 239 % greekOmicron
+\definecasemap 208 208 240 % greekPi
+\definecasemap 209 209 241 % greekRho
+\definecasemap 211 211 243 % greekSigma
+\definecasemap 212 212 244 % greekTau
+\definecasemap 213 213 245 % greekUpsilon
+\definecasemap 214 214 246 % greekPhi
+\definecasemap 215 215 247 % greekChi
+\definecasemap 216 216 248 % greekPsi
+\definecasemap 217 217 249 % greekOmega
+
+% Lowercase Greek letters
+
+\definecasemap 225 193 225 % greekalpha
+\definecasemap 226 194 226 % greekbeta
+\definecasemap 227 195 227 % greekgamma
+\definecasemap 228 196 228 % greekdelta
+\definecasemap 229 197 229 % greekepsilon
+\definecasemap 230 198 230 % greekzeta
+\definecasemap 213 199 213 % greeketa
+\definecasemap 232 200 232 % greektheta
+\definecasemap 233 201 233 % greekiota
+\definecasemap 234 202 234 % greekkappa
+\definecasemap 235 203 235 % greeklambda
+\definecasemap 236 204 236 % greekmu
+\definecasemap 237 205 237 % greeknu
+\definecasemap 238 206 238 % greekxi
+\definecasemap 239 207 239 % greekomicron
+\definecasemap 240 208 240 % greekpi
+\definecasemap 241 209 241 % greekrho
+\definecasemap 242 211 242 % greekfinalsigma
+\definecasemap 243 211 243 % greekSigma
+\definecasemap 244 212 244 % greekTau
+\definecasemap 245 213 245 % greekUpsilon
+\definecasemap 246 214 246 % greekPhi
+\definecasemap 247 215 247 % greekChi
+\definecasemap 248 216 248 % greekPsi
+\definecasemap 249 217 249 % greekOmega
+
+% Accented Uppercase Greek letters
+
+\definecasemap 182 193 220 % greekAlphatonos
+\definecasemap 184 197 221 % greekEpsilontonos
+\definecasemap 185 199 222 % greekEtatonos
+\definecasemap 186 201 223 % greekIotatonos
+\definecasemap 188 207 252 % greekOmicrontonos
+\definecasemap 190 213 253 % greekUpsilontonos
+\definecasemap 191 217 254 % greekOmegatonos
+\definecasemap 218 218 250 % greekIotadialytika
+\definecasemap 219 219 251 % greekUpsilondialytika
+
+% Accented Lowercase Greek letters
+
+\definecasemap 220 193 220 % greekalphatonos
+\definecasemap 221 197 221 % greekepsilontonos
+\definecasemap 222 199 222 % greeketatonos
+\definecasemap 223 201 223 % greekiotatonos
+\definecasemap 252 207 252 % greekomicrontonos
+\definecasemap 253 213 253 % greekupsilontonos
+\definecasemap 254 217 254 % greekomegatonos
+\definecasemap 250 218 250 % greekiotadialytika
+\definecasemap 251 219 251 % greekupsilondialytika
+\definecasemap 192 218 192 % greekiotadialytikatonos
+\definecasemap 224 219 224 % greekupsilondialytikatonos
+
+\stopmapping
+
+\startencoding[iso-8859-7]
+
+% Uppercase Greek letters
+
+\definecharacter greekAlpha 193
+\definecharacter greekBeta 194
+\definecharacter greekGamma 195
+\definecharacter greekDelta 196
+\definecharacter greekEpsilon 197
+\definecharacter greekZeta 198
+\definecharacter greekEta 199
+\definecharacter greekTheta 200
+\definecharacter greekIota 201
+\definecharacter greekKappa 202
+\definecharacter greekLambda 203
+\definecharacter greekMu 204
+\definecharacter greekNu 205
+\definecharacter greekXi 206
+\definecharacter greekOmicron 207
+\definecharacter greekPi 208
+\definecharacter greekRho 209
+\definecharacter greekSigma 211
+\definecharacter greekTau 212
+\definecharacter greekUpsilon 213
+\definecharacter greekPhi 214
+\definecharacter greekChi 215
+\definecharacter greekPsi 216
+\definecharacter greekOmega 217
+
+% Lowercase Greek letters
+
+\definecharacter greekalpha 225
+\definecharacter greekbeta 226
+\definecharacter greekgamma 227
+\definecharacter greekdelta 228
+\definecharacter greekepsilon 229
+\definecharacter greekzeta 230
+\definecharacter greeketa 231
+\definecharacter greektheta 232
+\definecharacter greekiota 233
+\definecharacter greekkappa 234
+\definecharacter greeklambda 235
+\definecharacter greekmu 236
+\definecharacter greeknu 237
+\definecharacter greekxi 238
+\definecharacter greekomicron 239
+\definecharacter greekpi 240
+\definecharacter greekrho 241
+\definecharacter greekfinalsigma 242
+\definecharacter greeksigma 243
+\definecharacter greektau 244
+\definecharacter greekupsilon 245
+\definecharacter greekphi 246
+\definecharacter greekchi 247
+\definecharacter greekpsi 248
+\definecharacter greekomega 249
+
+% Accented Uppercase Greek letters
+
+\definecharacter greekAlphatonos 182
+\definecharacter greekEpsilontonos 184
+\definecharacter greekEtatonos 185
+\definecharacter greekIotatonos 186
+\definecharacter greekOmicrontonos 188
+\definecharacter greekUpsilontonos 190
+\definecharacter greekOmegatonos 191
+\definecharacter greekIotadialytika 218
+\definecharacter greekUpsilondialytika 219
+
+% Accented Lowercase Greek letters
+
+\definecharacter greekalphatonos 220
+\definecharacter greekepsilontonos 221
+\definecharacter greeketatonos 222
+\definecharacter greekiotatonos 223
+\definecharacter greekomicrontonos 252
+\definecharacter greekupsilontonos 253
+\definecharacter greekomegatonos 254
+\definecharacter greekiotadialytika 250
+\definecharacter greekupsilondialytika 251
+\definecharacter greekiotadialytikatonos 192
+\definecharacter greekupsilondialytikatonos 224
+
+% Miscellaneous Greek symbols
+
+\definecharacter greekleftquot 171
+\definecharacter greekrightquot 187
+\definecharacter greektonos 180
+\definecharacter greekdialytikatonos 181
+\definecharacter greekapostrophos 162
+
+\stopencoding
diff --git a/Master/texmf-dist/tex/context/base/enco-heb.tex b/Master/texmf-dist/tex/context/base/enco-heb.tex
new file mode 100644
index 00000000000..44374575273
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-heb.tex
@@ -0,0 +1,16 @@
+%D \module
+%D [ file=enco-heb,
+%D version=2005.01.27,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Hebrew,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D To be done.
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ibm.tex b/Master/texmf-dist/tex/context/base/enco-ibm.tex
new file mode 100644
index 00000000000..48695ca5298
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ibm.tex
@@ -0,0 +1,7 @@
+% temporary module, needed for downward compatibility
+
+%\input regi-ibm.tex
+
+\enableregime[ibm]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-il2.tex b/Master/texmf-dist/tex/context/base/enco-il2.tex
new file mode 100644
index 00000000000..9fb87b2fd77
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-il2.tex
@@ -0,0 +1,157 @@
+%D \module
+%D [ file=enco-il2,
+%D version=2000.05.07, % 1998.12.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Czech and Slovak ISO Latin 2 Encoding,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This encoding will go but the regime will remain.
+
+%D This Czech/Slovak encoding is dedicated to Han The Thanh.
+%D The numbers are derived from some files he sent me. This
+%D definition file is (still) sort of beta.
+
+\startmapping[il2]
+
+\resetcaserange 127 to 255 % we map them all to themselves
+
+\definecaseswap 184 152
+\definecaseswap 181 165
+\definecaseswap 185 169
+\definecaseswap 187 171
+\definecaseswap 190 174
+\definecaseswap 224 192
+\definecaseswap 225 193
+\definecaseswap 228 196
+\definecaseswap 229 197
+\definecaseswap 232 200
+\definecaseswap 233 201
+\definecaseswap 236 204
+\definecaseswap 237 205
+\definecaseswap 239 207
+\definecaseswap 242 210
+\definecaseswap 243 211
+\definecaseswap 244 212
+\definecaseswap 246 214
+\definecaseswap 248 216
+\definecaseswap 249 217
+\definecaseswap 250 218
+\definecaseswap 252 220
+\definecaseswap 253 221
+
+\stopmapping
+
+\startencoding[il2][il2]
+
+\definecharacter textgrave 18
+\definecharacter textacute 19
+\definecharacter textcaron 20
+\definecharacter textbreve 21
+\definecharacter textmacron 22
+\definecharacter textring 23
+\definecharacter textcedilla 24
+\definecharacter textcircumflex 94
+\definecharacter textdotaccent 95
+\definecharacter texthungarumlaut 125
+\definecharacter texttilde 126
+\definecharacter textdiaeresis 127
+
+\definecharacter dotlessi 16
+\definecharacter dotlessj 17
+
+\definecharacter aeligature 26
+\definecharacter AEligature 29
+\definecharacter oeligature 27
+\definecharacter OEligature 30
+
+\definecharacter ssharp 25
+
+\definecharacter Racute 192
+\definecharacter Aacute 193
+\definecharacter Lacute 197
+\definecharacter Eacute 201
+\definecharacter Iacute 205
+\definecharacter Oacute 211
+\definecharacter Uacute 218
+\definecharacter Yacute 221
+\definecharacter racute 224
+\definecharacter aacute 225
+\definecharacter lacute 229
+\definecharacter eacute 233
+\definecharacter iacute 237
+\definecharacter oacute 243
+\definecharacter uacute 250
+\definecharacter yacute 253
+
+\definecharacter Lcaron 165
+\definecharacter Scaron 169
+\definecharacter Tcaron 171
+\definecharacter Zcaron 174
+\definecharacter lcaron 181
+\definecharacter scaron 185
+\definecharacter tcaron 187
+\definecharacter zcaron 190
+\definecharacter Ccaron 200
+\definecharacter Ecaron 204
+\definecharacter Dcaron 207
+\definecharacter Ncaron 210
+\definecharacter Rcaron 216
+\definecharacter ccaron 232
+\definecharacter ecaron 236
+\definecharacter dcaron 239
+\definecharacter ncaron 242
+\definecharacter rcaron 248
+
+\definecharacter Ocircumflex 212
+\definecharacter ocircumflex 244
+
+\definecharacter Adiaeresis 196
+\definecharacter Odiaeresis 214
+\definecharacter Udiaeresis 220
+\definecharacter adiaeresis 228
+\definecharacter odiaeresis 246
+\definecharacter udiaeresis 252
+
+\definecharacter Agrave 152
+\definecharacter agrave 184
+
+\definecharacter Ohungarumlaut 213
+\definecharacter Uhungarumlaut 219
+\definecharacter ohungarumlaut 245
+\definecharacter uhungarumlaut 251
+
+\definecharacter Uring 217
+\definecharacter uring 249
+\definecharacter Aring {\ilencodedrA}
+
+\definecharacter ostroke 28
+\definecharacter Ostroke 31
+\definecharacter Lstroke {\ilencodedL}
+\definecharacter lstroke {\ilencodedl}
+
+\def\ilencodedrA
+ {\dontleavehmode\hbox\bgroup
+ \setbox0\hbox{h}%
+ \dimen0=\ht0
+ \advance\dimen0 by -1ex
+ \rlap{\raise.67\dimen0\hbox{\char'27}}A%
+ \egroup}
+
+\def\ilencodedl
+ {\dontleavehmode{\char32l}}
+
+\def\ilencodedL
+ {\dontleavehmode\hbox\bgroup
+ \setbox0\hbox{L}%
+ \hbox to\wd0{\hss\char32L}%
+ \egroup}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-ini.tex b/Master/texmf-dist/tex/context/base/enco-ini.tex
new file mode 100644
index 00000000000..2b7c85fcd04
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-ini.tex
@@ -0,0 +1,1992 @@
+%D \module
+%D [ file=enco-ini,
+%D version=2000.12.27, % 1998.12.03,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is a reimplementation of the module that handled
+%D composed characters and non \ASCII\ characters. The changed
+%D are not that fundamental, and mainly concerns moving
+%D definitions of specific glyphs and accents to other files as
+%D well as moving plain handling of accents to this module
+%D instead of overloading plain \TEX\ commands.
+
+% \everyuppercase
+% \dotlessi
+% single/double quotes
+% hyphens
+% characterencoding => encoding
+% charactermapping => mapping
+
+%D Most of this module used to be part of the font and language
+%D modules. While implementing Czech support, I decided to
+%D isolate this code.
+
+%D Patterns are kind of mixed with font encodings and
+%D mappings. Alas.
+
+\ifx\synchronizepatterns\undefined \let\synchronizepatterns\relax \fi
+
+%D While dealing with input (the text source) and output (the
+%D glyphs), encoding comes into view. To summarize a few:
+%D
+%D \startitemize
+%D \item Bytes in the input file are mapped to an internal
+%D representation. An~\type {a} often stays an~\type {a},
+%D but~\type {\"e} can become either one code or become
+%D two codes (ending in overlapping glyphs).
+%D \item Characters can be made active and mapped onto another
+%D character.
+%D \item When changing case, characters are mapped onto
+%D themselves, their case||counterpart or a reasonable
+%D alternative, like~\"e onto~e.
+%D \item Single character representations in a \DVI\ file can
+%D be mapped onto one or more characters, either of not
+%D in more than one font file (virtual fonts).
+%D \item In the final format, fonts collections can be
+%D partially embedded, thereby losing the one||to||one
+%D relation between several instances of one font.
+%D \item For special purposes, individual characters should be
+%D mapped onto a dedicated encoding vector, for instance
+%D \PDF\ document encoding.
+%D \stopitemize
+%D
+%D These and other kind of mappings are to be dealt with, and
+%D the exact way of dealing often depends on the language to be
+%D typeset.
+
+\writestatus{loading}{Context Encoding Macros (ini)}
+
+\unprotect
+
+\startmessages dutch library: encodings
+ title: encoding
+ 1: codering --
+ 2: codering -- wordt geladen
+ 3: onbekende codering --
+\stopmessages
+
+\startmessages english library: encodings
+ title: encoding
+ 1: coding --
+ 2: coding -- is loaded
+ 3: unknown coding --
+\stopmessages
+
+\startmessages german library: encodings
+ title: Kodierung
+ 1: Kodierung --
+ 2: Kodierung -- ist geladen
+ 3: Unbekannte Kodierung --
+\stopmessages
+
+\startmessages czech library: encodings
+ title: kodovani
+ 1: kodovani --
+ 2: je nacteno kodovani --
+ 3: nezname kodovani --
+\stopmessages
+
+\startmessages italian library: encodings
+ title: codifica
+ 1: codifica --
+ 2: codifica -- caricata
+ 3: codifica sconosciuta --
+\stopmessages
+
+\startmessages norwegian library: encodings
+ title: koding
+ 1: koding --
+ 2: koding -- er lest inn
+ 3: ukjent koding --
+\stopmessages
+
+\startmessages romanian library: encodings
+ title: codificari
+ 1: codificarea --
+ 2: codificarea -- este Œncarcata
+ 3: codificarea -- este necunoscuta
+\stopmessages
+
+%D First we define a few local or not yet initialized constants.
+
+\def\@map@{@m@ap@} % mapping prefix
+\def\@reg@{@r@eg@} % regime prefix
+\def\@fha@{@f@ha@} % font prefix
+\def\@cas@{@c@as@} % casecom prefix
+
+\ifx\currentlanguage\undefined \let\currentlanguage\s!en \fi
+
+%D \macros
+%D {protectregime}
+%D
+%D The next boolean is used later on to prevent unwanted
+%D catcode changes. Use it with care.
+
+\newif\ifprotectregime \protectregimetrue
+
+\def\setregimecode#1#2%
+ {\ifprotectregime\ifnum\catcode#1=\active\else
+ \catcode#1=#2%\relax
+ \fi\else
+ \catcode#1=#2%\relax
+ \fi
+ \relax}
+
+%D \macros
+%D {startregime, enableregime}
+%D
+%D Sometimes it makes sense to activate the characters in the
+%D upper half of the character table. Such a bundle of
+%D characters can be packages in a regime. Later we will see
+%D encodings (that links characters slots to glyphs) and
+%D mappings (that take care of hyphenation and case changes).
+%D
+%D When character~231 is of category code letter, it
+%D directly maps to glyph~231 (unless of course some virtual
+%D font is used). By making character~231 active, we can map
+%D it onto for instance the glyph in slot 233. This mapping
+%D can in itself be indirect, in the sense that it is for
+%D instance handled by an accent command.
+%D
+%D Regimes are implemented roughly the same as mappings, but
+%D enabled under different circumstances. In the future, the
+%D low level implementation may change.
+
+\def\startregime[#1]%
+ {\pushmacro\characterregime
+ \edef\characterregime{@#1@}%
+ \checkregimetoks}
+
+\def\checkregimetoks
+ {\doifundefined{\@reg@\characterregime}
+ {\@EA\newtoks\csname\@reg@\characterregime\endcsname}}
+
+\def\stopregime
+ {\popmacro\characterregime}
+
+%\long\def\startregime[#1]#2\stopregime{}
+
+\def\setregimetoks
+ {\checkregimetoks
+ \@EA\let\@EA\regimetoks\csname\@reg@\characterregime\endcsname}
+
+\let\enabledregime\empty
+
+% \def\enableregime[#1]%
+% {\edef\characterregime{@#1@}%
+% \ifx\enabledregime\characterregime \else
+% \doifdefined{\@reg@\characterregime}
+% {\the\csname\@reg@\characterregime\endcsname}%
+% \let\enabledregime\characterregime
+% \fi}
+
+% \def\enableregime[#1]%
+% {\edef\characterregime{@#1@}%
+% \ifx\enabledregime\characterregime \else
+% \the\executeifdefined{\@reg@\characterregime}\emptytoks
+% \fi}
+
+\def\defineregimesynonym
+ {\dodoubleargument\dodefineregimesynonym}
+
+\def\dodefineregimesynonym[#1][#2]%
+ {\setevalue{\@reg@::#1}{#2}}
+
+\def\trueregimename#1%
+ {\executeifdefined{\@reg@::#1}{#1}}
+
+\def\enableregime[#1]%
+ {\edef\characterregime{@\trueregimename{#1}@}%
+ \ifx\enabledregime\characterregime \else
+ \the\executeifdefined{\@reg@\characterregime}\emptytoks
+ \fi}
+
+%D \macros
+%D {defineactivedecimal, defineactivedecimals, defineactivetoken}
+%D
+%D The following commands are rather ugly ones. It makes a
+%D character active and assigns it a value. When expanded,
+%D the decimal number of the character is passed as first
+%D argument.
+%D
+%D \starttyping
+%D \def\decimalcharacter#1{\message{#1 is now active}}
+%D
+%D \defineactivedecimal 122 {\decimalcharacter}
+%D
+%D \defineactivedecimals 128 to 255 as {\decimalcharacter}
+%D \stoptyping
+%D
+%D This command is typically used in coding definitions,
+%D like the \UNICODE\ one.
+
+%\def\dodefineactivedecimal#1#2% \unexpanded ? pdfdoc encoding
+% {\catcode#1=\active % maybe \protectregimetrue
+% \scratchcounter=\the\uccode`~
+% \uccode`~=#1\relax
+% \uppercase{\unexpanded\edef~{\noexpand#2{\number#1}}}%
+% \uccode`~=\scratchcounter}
+
+\def\dodefineactivedecimal#1#2% \unexpanded ? pdfdoc encoding
+ {\catcode#1\active
+ \scratchcounter\uccode\activehackcode
+ \uccode\activehackcode#1\relax
+ \uppercase{\unexpanded\edef~{\noexpand#2{\number#1}}}%
+ \uccode\activehackcode\scratchcounter}
+
+% \long\def\defineactivedecimal#1 #2 %
+% {\setregimetoks
+% \appendtoks\dodefineactivedecimal{#1}{#2}\to\regimetoks}
+%
+% \long\def\defineactivedecimals#1 to #2 as #3 %
+% {\setregimetoks
+% \dostepwiserecurse{#1}{#2}\plusone
+% {\@EA\appendtoks\@EA\dodefineactivedecimal\@EA{\recurselevel}{#3}\to\regimetoks}}
+%
+% \long\def\defineactivetoken #1 #2% no {} after #2, else no kern
+% {\setregimetoks
+% \appendtoks\defineactivecharacter#1 {#2}\to\regimetoks}
+%
+% \long\def\defineactiveinspector #1 #2% watch the missing {}
+% {\setregimetoks
+% \appendtoks\defineactivecharacter#1 {#2}\to\regimetoks}
+%
+% faster:
+
+\long\def\defineactivedecimal#1 #2 %
+ {\setregimetoks
+ \regimetoks\expandafter{\the\regimetoks\dodefineactivedecimal{#1}{#2}}}
+
+\long\def\defineactivedecimals#1 to #2 as #3 %
+ {\setregimetoks
+ \dostepwiserecurse{#1}{#2}\plusone
+ {\regimetoks\@EA\@EA\@EA{\@EA\the\@EA\regimetoks\@EA\dodefineactivedecimal\@EA{\recurselevel}{#3}}}}
+
+\beginETEX
+
+ % much faster, prelude to run time loading
+
+ % \def\doexpandactivedecimal#1#2#3%
+ % {\ifnum#1>#2 %
+ % \expandafter\gobblefourarguments
+ % \else
+ % \noexpand\dodefineactivedecimal{#1}{#3}%
+ % \expandafter\expandafter\expandafter\doexpandactivedecimal\expandafter
+ % \fi\expandafter{\the\numexpr#1+1\relax}{#2}{#3}}
+ %
+ % \long\def\defineactivedecimals#1 to #2 as #3 %
+ % {\setregimetoks
+ % \scratchcounter#2\relax
+ % \scratchtoks{#3}%
+ % \expanded{\regimetoks{\the\regimetoks\doexpandactivedecimal{#1}{#2}{\the\scratchtoks}}}%
+ % \ignorespaces}
+
+ \def\doexpandactivedecimal#1%
+ {\ifnum#1>\scratchcounter
+ \expandafter\gobbletwoarguments
+ \else
+ \noexpand\dodefineactivedecimal{#1}{\the\scratchtoks}%
+ \expandafter\expandafter\expandafter\doexpandactivedecimal\expandafter
+ \fi\expandafter{\the\numexpr#1+\plusone\relax}}
+
+ \long\def\defineactivedecimals#1 to #2 as #3 %
+ {\setregimetoks
+ \scratchcounter#2\relax
+ \scratchtoks{#3}%
+ \expanded{\regimetoks{\the\regimetoks\doexpandactivedecimal{#1}}}%
+ \ignorespaces}
+
+\endETEX
+
+\long\def\defineactivetoken #1 #2% no {} after #2, else no kern
+ {\setregimetoks
+ \regimetoks\expandafter{\the\regimetoks\defineactivecharacter#1 {#2}}}
+
+\long\def\defineactiveinspector #1 #2% watch the missing {}
+ {\setregimetoks
+ \regimetoks\expandafter{\the\regimetoks\defineactivecharacter#1 {#2}}}
+
+%D ....
+
+\edef\nocharacterregime{@\s!default @}
+
+\def\definetoken #1 % #1 = rawtoken or number
+ {\doifnumberelse{\string#1}
+ {\expanded{\dodefinetoken{\rawcharacter{#1}}}}
+ {\expanded{\dodefinetoken{\string#1}}}}
+
+\def\dodefinetoken#1#2%
+ {\defineactivecharacter#1 {\dohandletoken{#1}} %
+ \setvalue{\characterregime#1}{#2}}
+
+\beginTEX
+
+\def\dohandletoken#1%
+ {\csname\expandafter\ifx\csname\characterregime#1\endcsname\relax
+ \nocharacterregime\else\characterregime\fi#1\endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dohandletoken#1%
+ {\csname\ifcsname\characterregime#1\endcsname
+ \characterregime\else\nocharacterregime\fi#1\endcsname}
+
+\endETEX
+
+%D ....
+
+\def\doautosetregime#1#2%
+ {\ifnum#2>127
+ % \def\!!stringa{#2 }%
+ % \@EA\@EA\@EA\defineactivetoken\@EA\!!stringa\@EA{\csname#1\endcsname}%
+ \expanded{\defineactivetoken #2 \@EA\noexpand\csname#1\endcsname}%
+ \fi}
+
+%D \macros
+%D {setupencoding}
+%D
+%D The following setup command is used to tune encoding
+%D handling.
+
+\def\setupencoding
+ {\dosingleargument\dosetupencoding}
+
+\def\dosetupencoding[#1]%
+ {\getparameters[\??ec][#1]%
+ \edef\defaultencoding
+ {\ifx\@@ecdefault\empty\s!default\else\@@ecdefault\fi}}
+
+%D \macros
+%D {useencoding}
+%D
+%D Encodings things are defined in separate files and are
+%D loaded only once, using:
+%D
+%D \showsetup{useencoding}
+
+\def\douseencoding#1%
+ {\doifundefined{\c!file\f!encodingprefix#1}%
+ {\letvalue{\c!file\f!encodingprefix#1}\empty
+ \makeshortfilename[\f!encodingprefix#1]%
+ \startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!encodings2{#1}}
+ {\showmessage\m!encodings3{#1}}%
+ \stopreadingfile}}
+
+\def\useencoding[#1]%
+ {\processcommalist[#1]\douseencoding}
+
+%D \macros
+%D {startmapping,enablemapping}
+%D
+%D In order to process patterns, convert from lower to
+%D uppercase and vise versa and some more, we provide a
+%D mechanism to define mappings. The first real application
+%D of this command was:
+%D
+%D \starttyping
+%D \startmapping [something]
+%D \definecasemap 165 181 165
+%D \definecasemap 171 187 171
+%D ...
+%D \defineuppercasecom \i {I}
+%D \defineuppercasecom \l \L
+%D \definelowercasecom \AE \ae
+%D ...
+%D \stopmapping
+%D \stoptyping
+%D
+%D So, character 165 becomes 181 in uppercase and 165 in
+%D lowercase. A mapping is activated with \type {\enablemapping}.
+
+% quite slow, esp when done at runtime
+
+% \def\startmapping[#1]%
+% {\pushmacro\charactermapping
+% \edef\charactermapping{@#1@}%
+% \ifundefined{\@map@\charactermapping}%
+% \expandafter\newtoks\csname\@map@\charactermapping\endcsname
+% \fi}
+
+% \def\stopmapping
+% {%\setmappingtoks\showthe\mappingtoks
+% \popmacro\charactermapping}
+
+\def\startsavingmappingtoks#1%
+ {\bgroup
+ \edef\charactermapping{@#1@}%
+ \checkmappingtoks
+ \setmappingtoks
+ \the\mappingtoks}
+
+\def\stopsavingmappingtoks
+ {\global\mappingtoks\emptytoks
+ \dostepwiserecurse{128}{255}\plusone
+ {\edef\@@expanded
+ {\the\mappingtoks
+ \noexpand\checkregimecode\recurselevel\space
+ \lccode\recurselevel\ifnum\lccode\recurselevel=\zerocount\zerocount\else\space\the\lccode\recurselevel\space\fi
+ \uccode\recurselevel\ifnum\uccode\recurselevel=\zerocount\zerocount\else\space\the\uccode\recurselevel\space\fi
+ \ifnum\sfcode\recurselevel=\plusthousand\else\sfcode\recurselevel=\the\sfcode\recurselevel\space\fi
+ }%
+ \global\mappingtoks\expandafter{\@@expanded}}%
+ \egroup
+ \let\enabledmapping\empty
+ \enablemapping[\currentmapping]}
+
+\def\startmapping[#1]%
+ {\startsavingmappingtoks{#1}}
+
+\def\stopmapping
+ {\stopsavingmappingtoks}
+
+\def\optimizemapping[#1]%
+ {\startsavingmappingtoks{#1}%
+ % nothing, just an automatic cleanup
+ \stopsavingmappingtoks
+ % we need to resync
+ %\let\enabledmapping\relax
+ }%\enablemapping[\currentmapping]}
+
+\def\setmappingtoks
+ {\@EA\let\@EA\mappingtoks\csname\@map@\charactermapping\endcsname
+ \@EA\let\@EA\casecomtoks\csname\@cas@\charactermapping\endcsname}
+
+\def\checkmappingtoks
+ {\ifundefined{\@map@\charactermapping}%
+ \expandafter\newtoks\csname\@map@\charactermapping\endcsname
+ \fi
+ \ifundefined{\@cas@\charactermapping}%
+ \expandafter\newtoks\csname\@cas@\charactermapping\endcsname
+ \fi}
+
+\def\checkregimecode#1 %
+ {\ifprotectregime\ifnum\catcode#1=\active\else
+ \catcode#1\@@letter
+ \fi\else
+ \catcode#1\@@letter
+ \fi
+ \relax}
+
+% \def\definecasemap #1 #2 #3 % code lower upper
+% {\setmappingtoks
+% \doifelse{#2}{to}
+% {\appendtoks\presetcaserange{#1}{#3}\to\mappingtoks}
+% {\appendtoks\setcasemap #1 #2 #3 \to\mappingtoks}%
+% \ignorespaces}
+%
+% faster
+
+% \def\definecasemap #1 #2 #3 % code lower upper
+% {\setmappingtoks
+% \doifelse{#2}{to}
+% {\mappingtoks\@EA{\the\mappingtoks\presetcaserange{#1}{#3}}}
+% {\mappingtoks\@EA{\the\mappingtoks\setcasemap #1 #2 #3 }}%
+% \ignorespaces}
+
+\def\definecasemap #1 #2 #3 % code lower upper
+ {\doifelse{#2}{to}
+ {\presetcaserange{#1}{#3}}
+ {\lccode#1=#2\relax
+ \uccode#1=#3\relax}%
+ \ignorespaces}
+
+%D Saves a few tokens
+
+% \def\definecaseswap #1 #2 % lower upper
+% {\setmappingtoks
+% \mappingtoks\@EA{\the\mappingtoks\setcaseswap #1 #2 }%
+% \ignorespaces}
+
+\def\definecaseswap #1 #2 % lower upper
+ {\lccode#1=#1\relax
+ \uccode#2=#2\relax
+ \lccode#2=#1\relax
+ \uccode#1=#2\relax
+ \ignorespaces}
+
+% \def\definecaseself #1 % lower=upper=self
+% {\setmappingtoks
+% \mappingtoks\@EA{\the\mappingtoks\setcaseself #1 }%
+% \ignorespaces}
+
+\def\definecaseself #1 % lower=upper=self
+ {\lccode #1=#1\relax
+ \uccode #1=#1\relax
+ \ignorespaces}
+
+%D Watch the \type {\definecasemap 127 to 255} option!
+%D Dedicated to Taco there is also:
+
+% \def\definecasemaps #1 to #2 lc #3 uc #4 % from to lc+ uc+
+% {\dostepwiserecurse{#1}{#2}\plusone
+% {\!!counta\recurselevel\advance\!!counta #3\relax
+% \!!countb\recurselevel\advance\!!countb #4\relax
+% \expanded{\definecasemap
+% \recurselevel\space\the\!!counta\space\the\!!countb\space}}%
+% \ignorespaces}
+
+% \beginETEX
+
+% % much faster, prelude to run time loading
+
+% % \def\doexpandcasemaps#1#2#3#4%
+% % {\ifnum#1>#2 %
+% % \expandafter\gobblefivearguments
+% % \else
+% % \noexpand\setcasemap#1\space\the\numexpr#1+#3\relax\space\the\numexpr#1+#4\relax\space
+% % \expandafter\expandafter\expandafter\doexpandcasemaps\expandafter
+% % \fi\expandafter{\the\numexpr#1+1\relax}{#2}{#3}{#4}}
+% %
+% % \def\definecasemaps #1 to #2 lc #3 uc #4 % from to lc+ uc+
+% % {\setmappingtoks
+% % \expanded{\mappingtoks{\the\mappingtoks\doexpandcasemaps{#1}{#2}{#3}{#4}}}%
+% % \ignorespaces}
+
+% \def\doexpandcasemaps#1%
+% {\ifnum#1>\scratchcounter
+% \expandafter\gobbletwoarguments
+% \else
+% \noexpand\setcasemap#1\space\the\numexpr#1+\!!counta\relax\space\the\numexpr#1+\!!countb\relax\space
+% \expandafter\expandafter\expandafter\doexpandcasemaps\expandafter
+% \fi\expandafter{\the\numexpr#1+\plusone\relax}}
+
+% \def\definecasemaps #1 to #2 lc #3 uc #4 % from to lc+ uc+
+% {\setmappingtoks
+% \scratchcounter#2\relax
+% \!!counta#3\relax
+% \!!countb#4\relax
+% \expanded{\mappingtoks{\the\mappingtoks\doexpandcasemaps{#1}}}%
+% \ignorespaces}
+
+% \endETEX
+
+\def\definecasemaps #1 to #2 lc #3 uc #4 % from to lc+ uc+
+ {\dostepwiserecurse{#1}{#2}\plusone
+ {\scratchcounter\recurselevel\advance\scratchcounter#3\lccode\recurselevel=\scratchcounter
+ \scratchcounter\recurselevel\advance\scratchcounter#4\uccode\recurselevel=\scratchcounter}%
+ \ignorespaces}
+
+%D This can be used like:
+%D
+%D \starttyping
+%D \definecasemaps 128 to 156 lc 32 uc 0
+%D \definecasemaps 160 to 188 lc -32 uc 0
+%D \definecasemaps 160 to 188 lc -32 uc 0
+%D \definecasemaps 192 to 255 lc 32 uc 0
+%D \stoptyping
+%D
+%D and saves a lot of typing (copying).
+
+% \def\resetcaserange #1 to #2
+% {\dostepwiserecurse{#1}{#2}{1}
+% {\expanded{\definecasemap\recurselevel\space0\space0\space}}}
+
+% \def\resetcaserange #1 to #2
+% {\setmappingtoks
+% \dostepwiserecurse{#1}{#2}\plusone
+% {\edef\@@expanded{\recurselevel\space}%
+% \@EA\appendtoks\@EA\setcasemap\@@expanded 0 0 \to\mappingtoks}%
+% \ignorespaces}
+%
+% faster:
+
+% \def\resetcaserange #1 to #2
+% {\setmappingtoks
+% \dostepwiserecurse{#1}{#2}\plusone
+% {\edef\@@expanded{\recurselevel\space}%
+% \mappingtoks\@EA\@EA\@EA{\@EA\the\@EA\mappingtoks\@EA\setcasemap\@@expanded 0 0 }}%
+% \ignorespaces}
+
+% \beginETEX
+
+% % much faster, prelude to run time loading
+
+% % \def\doexpandcaserange#1#2%
+% % {\ifnum#1>#2 %
+% % \expandafter\gobblethreearguments
+% % \else
+% % \noexpand\setcasemap #1 0 0 %
+% % \expandafter\expandafter\expandafter\doexpandcaserange\expandafter
+% % \fi\expandafter{\the\numexpr#1+1\relax}{#2}}
+% %
+% % \def\resetcaserange #1 to #2
+% % {\setmappingtoks
+% % \expanded{\mappingtoks{\the\mappingtoks\doexpandcaserange{#1}{#2}}}%
+% % \ignorespaces}
+
+% \def\doexpandcaserange#1%
+% {\ifnum#1>\scratchcounter
+% \expandafter\gobbletwoarguments
+% \else
+% \noexpand\setcasemap #1 0 0 %
+% \expandafter\expandafter\expandafter\doexpandcaserange\expandafter
+% \fi\expandafter{\the\numexpr#1+\plusone\relax}}
+
+% \def\resetcaserange #1 to #2
+% {\setmappingtoks
+% \scratchcounter#2\relax
+% \expanded{\mappingtoks{\the\mappingtoks\doexpandcaserange{#1}}}%
+% \ignorespaces}
+
+% \endETEX
+
+\def\resetcaserange #1 to #2
+ {\dostepwiserecurse{#1}{#2}\plusone
+ {\lccode\recurselevel\zerocount
+ \uccode\recurselevel\zerocount}%
+ \ignorespaces}
+
+% \def\presetcaserange#1#2% could be pre-expanded
+% {\dostepwiserecurse{#1}{#2}\plusone
+% {\setregimecode\recurselevel\@@letter
+% \lccode \recurselevel=\recurselevel
+% \uccode \recurselevel=\recurselevel}}
+
+\def\presetcaserange#1#2% could be pre-expanded
+ {\dostepwiserecurse{#1}{#2}\plusone
+ {\lccode\recurselevel=\recurselevel
+ \uccode\recurselevel=\recurselevel}%
+ \ignorespaces}
+
+\def\setcasemap #1 #2 #3 %
+ {\setregimecode{#1}\@@letter
+ \lccode #1=#2
+ \uccode #1=#3 }
+
+\def\setcaseswap #1 #2 %
+ {\setregimecode{#1}\@@letter
+ \setregimecode{#2}\@@letter
+ \lccode #1=#1
+ \uccode #2=#2
+ \lccode #2=#1
+ \uccode #1=#2 }
+
+\def\setcaseself #1 %
+ {\setregimecode{#1}\@@letter
+ \lccode #1=#1
+ \uccode #1=#1 }
+
+% \def\definespacemap #1 #2 % code sfcode
+% {\setmappingtoks
+% \appendtoks\setspacemap #1 #2 \to\mappingtoks
+% \ignorespaces}
+
+% faster:
+
+% \def\definespacemap #1 #2 % code sfcode
+% {\setmappingtoks
+% \mappingtoks\expandafter{\the\mappingtoks\setspacemap #1 #2 }%
+% \ignorespaces}
+
+\def\definespacemap #1 #2 % code sfcode
+ {\sfcode#1=#2%
+ \ignorespaces}
+
+\def\setspacemap #1 #2 %
+ {\setregimecode{#1}\@@other
+ %\lccode #1=\zerocount
+ %\uccode #1=\zerocount
+ \sfcode #1=#2 }
+
+% \def\defineuppercasecom#1#2%
+% {\setmappingtoks
+% \appendtoks\setuppercasecom#1{#2}\to\mappingtoks
+% \ignorespaces}
+%
+% \def\definelowercasecom#1#2%
+% {\setmappingtoks
+% \appendtoks\setlowercasecom#1{#2}\to\mappingtoks
+% \ignorespaces}
+%
+% faster
+
+% \def\defineuppercasecom#1#2%
+% {\setmappingtoks
+% \mappingtoks\expandafter{\the\mappingtoks\setuppercasecom#1{#2}}%
+% \ignorespaces}
+
+% \def\definelowercasecom#1#2%
+% {\setmappingtoks
+% \mappingtoks\expandafter{\the\mappingtoks\setlowercasecom#1{#2}}%
+% \ignorespaces}
+
+% \def\defineuppercasecom#1#2%
+% {\setmappingtoks
+% \mappingtoks\expandafter{\the\mappingtoks\setuppercasecom#1{#2}}%
+% \ignorespaces}
+
+% \def\definelowercasecom#1#2%
+% {\setmappingtoks
+% \mappingtoks\expandafter{\the\mappingtoks\setlowercasecom#1{#2}}%
+% \ignorespaces}
+
+\def\defineuppercasecom#1#2%
+ {\global\casecomtoks\expandafter{\the\casecomtoks\setuppercasecom#1{#2}}%
+ \ignorespaces}
+
+\def\definelowercasecom#1#2%
+ {\global\casecomtoks\expandafter{\the\casecomtoks\setlowercasecom#1{#2}}%
+ \ignorespaces}
+
+\let\setuppercasecom\gobbletwoarguments
+\let\setlowercasecom\gobbletwoarguments
+
+\def\setcasecom#1#2{\def#1{#2}}
+
+\let\enabledmapping\empty % indirect, needed to handle default too
+
+\def\enablemapping[#1]%
+ {\edef\charactermapping{@#1@}%
+ \ifx\enabledmapping\charactermapping \else
+ \doifdefined{\@map@\charactermapping}
+ {\the\csname\@map@\charactermapping\endcsname}%
+ % == \the\executeifdefined{\@map@\charactermapping}\emptytoks
+ \edef\enabledmapping{\charactermapping}%
+ \enablelanguagespecifics[\currentlanguage]% new
+ % \edef\enabledmapping{\charactermapping\currentlanguage}% can be comma list
+ \fi
+ \synchronizepatterns}
+
+% on behalf of font switching:
+
+\def\fastenablemapping#1%
+ {\edef\charactermapping{@#1@}%
+ \ifx\enabledmapping\charactermapping \else
+ \@EA\ifx\csname\@map@\charactermapping\endcsname\relax\else
+ \the\csname\@map@\charactermapping\endcsname
+ \fi
+ % == \the\executeifdefined{\@map@\charactermapping}\emptytoks
+ \let\enabledmapping\charactermapping
+ \enablelanguagespecifics[\currentlanguage]% to faster
+ \fi}
+
+%D This macro wil be implemented in \type {lang-ini.tex}.
+
+\ifx\enablelanguagespecifics\undefined
+ \def\enablelanguagespecifics[#1]{}
+\fi
+
+%D Further on we have to take some precautions when dealing
+%D with special characters like~\type{~}, \type{_}
+%D and~\type{^}, so let us define ourselve some handy macros
+%D first.
+
+\def\protectfontcharacters
+ {\edef\unprotectfontcharacters
+ {\catcode`\noexpand ~=\the\catcode`~\relax
+ \catcode`\noexpand _=\the\catcode`_\relax
+ \catcode`\noexpand ^=\the\catcode`^\relax}%
+ \catcode`~=\@@letter
+ \catcode`_=\@@letter
+ \catcode`^=\@@letter\relax}
+
+%D The completeness of the Computer Modern Roman typefaces
+%D makes clear how incomplete other faces are. To honour 7~bit
+%D \ASCII, these fonts were designed using only the first 127
+%D values of the 256 ones that can be presented by one byte.
+%D Nowadays 8~bit character codings are more common, mainly
+%D because they permit us to predefine some composed
+%D characters, which are needed in most european languages.
+%D
+%D Supporting more than the standard \TEX\ encoding vector
+%D |<|which in itself is far from standard and differs per
+%D font|>| puts a burden on the fonts mechanism. The \CONTEXT\
+%D mechanism is far from complete, but can handle several
+%D schemes at once. The main problem lays in the accented
+%D characters and ligatures like~ff, although handling
+%D ligatures is not the responsibility of this module.
+%D
+%D By default, we use \PLAIN\ \TEX's approach of placing
+%D accents. All other schemes sooner or later give problems
+%D when we distribute \DVI||files are distributed across
+%D machines and platforms. Nevertheless, we have to take care
+%D of different encoding vectors, which tell us where to find
+%D the characters we need. This means that all kind of
+%D character placement macro's like \type{\"} and \type{\ae}
+%D have to be implemented and adapted in a way that suits
+%D these vectors.
+%D
+%D The main difference between different vector is the way
+%D accents are ordered and/or the availability of prebuilt
+%D accented characters. Accented characters can for instance be
+%D called for by sequences like \type{\"e}. Here the \type{\"}
+%D is defined as:
+%D
+%D \starttyping
+%D \def\"#1{{\accent"7F #1}}
+%D \stoptyping
+%D
+%D This macro places the accent \accent"7F {} on top of an~e
+%D gives \"e. Some fonts however can have prebuild accents and
+%D use a more direct approach like
+%D
+%D \starttyping
+%D \def\"#1{\if#1e\char 235\else ... \fi}
+%D \stoptyping
+%D
+%D The latter approach is not used in \CONTEXT, because we
+%D store relevant combinations of accents and characters in
+%D individual macros.
+
+%D We define character substitutes and commands with definition
+%D commands like:
+%D
+%D \starttyping
+%D \startcoding[texnansi]
+%D
+%D \defineaccent " a 228
+%D \defineaccent ^ e 234
+%D \defineaccent ' {\dotlessi} 237
+%D
+%D \definecharacter ae 230
+%D \definecharacter oe 156
+%D
+%D \definecommand b \texnansiencodedb
+%D \definecommand c \texnansiencodedc
+%D
+%D \stopcoding
+%D \stoptyping
+%D
+%D The last argument of \type{\defineaccent} and
+%D \type{\definecharacter} tells \TEX\ the position of the
+%D accented character in the encoding vector. In order to
+%D complish this, we tag each implementation with the character
+%D coding identifier. We therefore need two auxiliary variables
+%D \type{\characterencoding} and \type{\nocharacterencoding}. These
+%D contain the current and default encoding vectors and both
+%D default to the \PLAIN\ one.
+
+\edef\characterencoding {@\s!default @}
+\edef\nocharacterencoding {@\s!default @}
+\edef\charactermapping {@\s!default @}
+\edef\characterregime {@\s!default @}
+
+% todo, else \d j == \dj, print file and check
+
+\def\accentprefix {}%{*}
+\def\commandprefix {}%{=}
+\def\characterprefix{}%{-}
+
+%D \macros
+%D {startcoding, reducetocoding}
+%D
+%D Before we can redefine accents and special characters, we
+%D have to tell \CONTEXT\ what encoding is in force. The next
+%D command is responsible for doing this and also takes care of
+%D the definition of the recoding commands. We use the \type
+%D {\start}||\type {\stop}||commands for definitions and the
+%D \type {\reduceto}||command for local switching to
+%D simplified commands.
+
+% etex : \ifcsname
+
+\def\justhandleaccent#1#2% \empty makes #2={} save % no \unexpanded
+ {\ifundefined{\accentprefix\characterencoding#1\string#2\empty}%
+ #2%
+ \else
+ \csname\accentprefix\characterencoding#1\string#2\empty\endcsname
+ \fi}
+
+\def\justhandlecommand#1% % no \unexpanded, otherwise pdfdoc will fail
+ {\ifundefined{\commandprefix\characterencoding#1}% as well as hyph patterns
+ #1%
+ \else
+ \csname\commandprefix\characterencoding#1\endcsname
+ \fi}
+
+\def\enableencoding
+ {\dodoubleempty\doenableencoding}
+
+\def\doenableencoding[#1][#2]% main fallback
+ {\iffirstargument\edef\characterencoding{@#1@}\fi
+ \edef\nocharacterencoding{@\ifsecondargument#2\else\s!default\fi @}%
+ \synchronizepatterns}
+
+%\def\enablesimpleencoding#1% e.g. \enableencoding{raw}
+% {\edef\characterencoding{@#1@}% handy for XML key=val's
+% \edef\nocharacterencoding{@\s!default @}} % evt noppes
+
+% in font switch and xml simple k/v remapping
+
+\edef\xnocharacterencoding{@\s!default @}
+
+\def\fastenableencoding#1%
+ {\edef\characterencoding{@#1@}%
+ \let\nocharacterencoding\xnocharacterencoding}
+
+\def\startencoding
+ {\dodoubleempty\dostartencoding}
+
+% \def\dostartencoding[#1][#2]% encoding regime
+% {\doifelsenothing{#1}
+% {\let\stopencoding\relax}
+% {%\protectfontcharacters % problematic in language loading
+% %\showmessage\m!encodings1{#1}%
+% \pushmacro\dohandleaccent % still needed?
+% \pushmacro\dohandlecommand % still needed?
+% \pushmacro\definesortkey
+% \pushmacro\characterregime
+% \pushmacro\doautosetregime
+% \let\dohandleaccent\donthandleaccent % still needed?
+% \let\dohandlecommand\donthandlecommand % still needed?
+% \let\definesortkey\savesortkey
+% \doifelsenothing{#2}%
+% {\let\doautosetregime\gobbletwoarguments}
+% {\def\characterregime{@#2@}}%
+% \enableencoding[#1]%
+% \def\stopencoding%
+% {\popmacro\doautosetregime
+% \popmacro\characterregime
+% \popmacro\definesortkey
+% \popmacro\dohandlecommand % still needed?
+% \popmacro\dohandleaccent % still needed?
+% \enableencoding[\s!default]%
+% }}}% \unprotectfontcharacters}}} % ??
+
+\def\dostartencoding[#1][#2]% encoding regime
+ {%\showmessage\m!encodings1{#1}%
+ \pushmacro\characterencoding
+ \pushmacro\characterregime
+ \pushmacro\dohandleaccent % still needed?
+ \pushmacro\dohandlecommand % still needed?
+ \pushmacro\definesortkey
+ \pushmacro\doautosetregime
+ \let\dohandleaccent\donthandleaccent % still needed?
+ \let\dohandlecommand\donthandlecommand % still needed?
+ \let\definesortkey\savesortkey
+ \edef\characterencoding{@#1@}%
+ \doifelsenothing{#2}%
+ {\let\doautosetregime\gobbletwoarguments}
+ {\def\characterregime{@#2@}}}
+
+\def\stopencoding
+ {\popmacro\doautosetregime
+ \popmacro\definesortkey
+ \popmacro\dohandlecommand % still needed?
+ \popmacro\dohandleaccent % still needed?
+ \popmacro\characterregime
+ \popmacro\characterencoding}
+
+% probably obsolete (hm, not yet)
+
+\def\reducetocoding[#1]% use grouped!
+ {\doifsomething{#1}
+ {\let\dohandleaccent \justhandleaccent
+ \let\dohandlecommand\justhandlecommand
+ \enableencoding[#1]%
+ \enablelanguagespecifics[\currentlanguage]}}
+
+\let\startcoding \startencoding
+\def\stopcoding {\stopencoding}
+\let\enablecoding \enableencoding
+
+%D The use of these macros are not limited to font
+%D definition files, but may also be used when loading
+%D patterns.
+
+%D \macros
+%D {definesortkey,flushsortkeys,flushsortkey}
+%D
+%D Yet another definition concerns sorting of indexes and
+%D lists.
+%D
+%D \starttyping
+%D \definesortkey {\'e} {e} {a} {\'e}
+%D \stoptyping
+%D
+%D The first argument denotes the string to be treated. The
+%D second argument is the raw replacement, while the third
+%D argument determines the sort order given the replacement.
+%D The last argument is used as entry in the index (a, b, etc).
+%D
+%D The keys can be flushed using \type {\flushsortkeys}
+%D which in turn results in a sequence of calls to \type
+%D {\flushsortkey}, a macro taking 4~arguments.
+%D
+%D This mechanism is currently being tested and subjected to
+%D changes!
+
+\def\savesortkey#1#2#3#4%
+ {\let\flushsortkey\relax % important
+ \edef\!!stringa{sort:\characterencoding}%
+ \ifundefined\!!stringa
+ \let\!!stringb\empty
+ \else
+ \@EA\def\@EA\!!stringb\@EA{\csname\!!stringa\endcsname}%
+ \fi
+ \convertargument#1\to\asciiA \convertargument#2\to\asciiB
+ \convertargument#3\to\asciiC \convertargument#4\to\asciiD
+ \setevalue{\!!stringa}%
+ {\!!stringb\flushsortkey{\asciiA}{\asciiB}{\asciiC}{\asciiD}}}
+
+\def\definesortkey#1#2#3#4%
+ {}
+
+\def\flushsortkeys
+ {\enablelanguagespecifics[\currentlanguage]%
+ \getvalue{sort:\characterencoding}}
+
+\let\flushsortkey\relax
+
+%D \macros
+%D {defineaccent, definecharacter, definecommand}
+%D
+%D The actual definition of accents, special characters and
+%D commands is done with the next three commands.
+
+\def\defineaccent
+ {\protectfontcharacters
+ \dodefineaccent}
+
+\def\dodefineaccent#1 #2 %
+ {\unprotectfontcharacters
+ \dododefineaccent#1 #2 }
+
+\def\dododefineaccent#1 #2 #3 %
+ {\setvalue{#1}{\dohandleaccent{#1}}%
+ \doifnumberelse{\string#3}
+ {\setvalue{\accentprefix\characterencoding#1\string#2}{\char#3 }} % space added
+ {\setvalue{\accentprefix\characterencoding#1\string#2}{#3}}}
+
+\beginTEX
+
+\def\dohandleaccent#1#2%
+ {\@EA\ifx\csname\accentprefix\characterencoding#1\string#2\empty\endcsname\relax
+ \@EA\ifx\csname\accentprefix\nocharacterencoding#1\string#2\empty\endcsname\relax
+ \@EA\ifx\csname\accentprefix\characterencoding#1\endcsname\relax
+% \@EA\ifx\csname\accentprefix\nocharacterencoding#1\endcsname\relax
+% \donormaltextaccent{#1}{#2}%
+% \else
+ \csname\accentprefix\nocharacterencoding#1\endcsname{#2}%
+% \fi
+ \else
+ \csname\accentprefix\characterencoding#1\endcsname{#2}%
+ \fi
+ \else
+ \csname\accentprefix\nocharacterencoding#1\string#2\empty\endcsname
+ \fi
+ \else
+ \csname\accentprefix\characterencoding#1\string#2\empty\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dohandleaccent#1#2%
+ {\ifcsname\accentprefix\characterencoding#1\string#2\empty\endcsname
+ \csname\accentprefix\characterencoding#1\string#2\empty\endcsname
+ \else\ifcsname\accentprefix\nocharacterencoding#1\string#2\empty\endcsname
+ \csname\accentprefix\nocharacterencoding#1\string#2\empty\endcsname
+ \else\ifcsname\accentprefix\characterencoding#1\endcsname
+ \csname\accentprefix\characterencoding#1\endcsname{#2}%
+ \else%\ifcsname\accentprefix\nocharacterencoding#1\endcsname
+ \csname\accentprefix\nocharacterencoding#1\endcsname{#2}%
+% \else
+% \donormaltextaccent{#1}{#2}%
+ \fi\fi\fi}%\fi}
+
+\endETEX
+
+%D In patterns, characters have to be bytes. These will be
+%D mapped onto the compact pattern arrays.
+
+\let\normalpatterns \patterns
+\let\normalhyphenation\hyphenation
+
+\def\patternchar#1 {\rawcharacter{#1}} % space is part of character definition !
+
+\ifx \enablepatterntokens\undefined
+ \def\handlepatterntoken#1]{\csname#1\endcsname}
+\fi
+
+% we need to postpone catcode changes, e.g. hr patterns
+% have \catcode" -> which fails when " is letter
+
+% new patterns, some day
+%
+% \enableregime[utf]%
+
+\def\pathypsettings
+ {\ifx \enablepatterntokens\undefined
+ \defineactivecharacter [ {\handlepatterntoken}%
+ \else
+ \enablepatterntokens
+ \fi
+ \lccode16=16 % brrr, extra quote in ec (turkish)
+ \lccode17=17 % brrr, extra quote in ec (turkish)
+ \lccode`\-=`\-
+ \lccode`\'=`\'
+ \lccode`\"=`\"
+ \relax}
+
+\def\patterns {\pathypsettings\normalpatterns }
+\def\hyphenation{\pathypsettings\normalhyphenation}
+
+%D Because we don't want to use the second command grouped, we
+%D (re)define it as follows:
+
+\def\hyphenation
+ {\begingroup\def\hyphenation{\normalhyphenation{\the\scratchtoks}\endgroup}%
+ \pathypsettings\afterassignment\hyphenation\scratchtoks=}
+
+%D This is not needed for patterns because they are loaded grouped
+%D anyway and it saves us an assignment.
+
+\def\startpatternloading#1#2#3% % we should use \everypatternloading
+ {\startreadingfile
+ \bgroup
+ % let's get rid of interfering stuff
+ \let\everyjob\scratchtoks
+ \let\message \gobbleoneargument
+ % we want direct characters
+ \let\char\patternchar
+ \doifelsenothing{#2}{\enableencoding[ec]}{\enableencoding[#2]}%
+ \doifelsenothing{#3}{\enablemapping [ec]}{\enablemapping [#3]}%
+ \expanded{\doifinstring{\f!languageprefix}{#1}}
+ {\ifx \enablepatternxml\undefined \else
+ \enablepatternxml
+ \fi}%
+ \let\dohandleaccent\normaldohandleaccent}
+
+\def\stoppatternloading
+ {\egroup
+ \stopreadingfile}
+
+% \def\definecharacter#1 #2 %
+% {\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi
+% \doifnumberelse{\string#2}
+% {\setvalue{\characterprefix\characterencoding\string#1}{\char#2 }% watch the space
+% \doautosetregime{#1}{#2}}
+% {\setvalue{\characterprefix\characterencoding\string#1}{#2}}}
+
+\def\numcharacter#1{\char#1 }
+\let\dochar\numcharacter
+
+\def\definecharacter#1 #2 %
+ {\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi
+ \doifnumberelse{\string#2}
+ {\setevalue{\characterprefix\characterencoding\string#1}{\dochar{#2}}%
+ \doautosetregime{#1}{#2}}
+ {\setvalue{\characterprefix\characterencoding\string#1}{#2}}}
+
+% better
+%
+% \def\definecharacter#1 #2 %
+% {\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi
+% \doifnumberelse{\string#2}
+% {\setevalue{\characterprefix\characterencoding\string#1}{\noexpand\charofnum{\number#2}}% watch the space
+% \doautosetregime{#1}{#2}}
+% {\setvalue{\characterprefix\characterencoding\string#1}{#2}}}
+%
+% \def\charofnum#1{\char#1 }
+% \def\byteofnum#1{\rawcharacter{#1}}
+
+\beginTEX
+
+\def\dohandlecharacter#1%
+ {\csname\characterprefix\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax
+ \nocharacterencoding\else\characterencoding\fi#1\endcsname}
+
+% \def\dopatterncharacter#1%
+% {\csname\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax
+% \strippedcsname\fallbackpatternchar\else\characterprefix\characterencoding#1\fi\endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dohandlecharacter#1%
+ {\csname\characterprefix\ifcsname\characterprefix\characterencoding#1\endcsname
+ \characterencoding\else\nocharacterencoding\fi#1\endcsname}
+
+% \def\dopatterncharacter#1%
+% {\csname\ifcsname\characterprefix\characterencoding#1\endcsname
+% \characterprefix\characterencoding#1\else\strippedcsname\fallbackpatternchar\fi\endcsname}
+
+\endETEX
+
+% \def\fallbackpatternchar{x} % makes no sense, duplicate patterns
+
+\def\defaultcharacter#1%
+ {\csname\characterprefix\nocharacterencoding\strippedcsname#1\endcsname}
+
+%D Instead of numbers, a command may be entered.
+
+\def\definecommand#1 #2 %
+ {\setvalue{\string#1}{\dohandlecommand{#1}}%
+ %\redefinecommand #1 % just to be sure
+ \setvalue{\commandprefix\characterencoding\string#1}{#2}}
+
+% %D This one is needed in order to prevent problems with math (see \type
+% %D {\over} in dutch interface). This became a problem one when going
+% %D low level english.
+
+% \def\doifdefinedascommandelse#1%
+% {\bgroup
+% \convertargument\dohandlecommand{#1}\to\asciiA
+% \@EAEAEA\convertargument\csname#1\endcsname\to\asciiB
+% \ifx\asciiA\asciiB
+% \egroup\expandafter\firstoftwoarguments
+% \else
+% \egroup\expandafter\secondoftwoarguments
+% \fi}
+
+%D Here we see that redefining accents is characters is more
+%D or less the same as redefining commands. We also could have
+%D said:
+%D
+%D \starttyping
+%D \def\defineaccent#1 #2 {\definecommand#1\string#2 \char}
+%D \def\definecharacter#1 {\definecommand#1 \char}
+%D \stoptyping
+
+% obsolete
+%
+% %D \macros
+% %D {redefineaccent}
+% %D
+% %D Telling \CONTEXT\ how to treat accents and special
+% %D characters is a two stage process. First we signal the
+% %D system which commands are to be adapted, after which we can
+% %D redefine their behavior when needed. We showed this in the
+% %D previous paragraphs. These redefinitions are grouped at the
+% %D end of this file, but we show some examples here.
+% %D
+% %D Accents or accent generating commands are redefined by:
+% %D
+% %D \starttyping
+% %D \redefineaccent ' % grave
+% %D \redefineaccent " % diaeresis
+% %D \redefineaccent ^ % circumflex
+% %D \redefineaccent v % caron
+% %D \stoptyping
+% %D
+% %D The original \PLAIN\ \TEX\ meaning of each accent generating
+% %D command is saved first. Next these commands are redefined to
+% %D do an indirect call to a macro that acts according to the
+% %D encoding vector in use.
+%
+% \def\redefineaccent%
+% {\protectfontcharacters
+% \doredefineaccent}
+%
+% \def\doredefineaccent#1 %
+% {\def\!!stringa{\nocharacterencoding\string#1}%
+% \doifundefined{\!!stringa}
+% {\@EA\letvalue\@EA\!!stringa\@EA=\csname\string#1\endcsname}%
+% % no \unexpanded, else pdfdoc fails
+% \setvalue{\string#1}{\dohandleaccent#1}%
+% \unprotectfontcharacters}
+%
+% \def\doredefineaccent#1 %
+% {\setvalue{#1}{\dohandleaccent{#1}}%
+% \unprotectfontcharacters}
+
+%D \macros
+%D {defineaccentcommand}
+%D
+%D When needed, one can overload the default positions of the
+%D accents. The \PLAIN\ \TEX\ defaults are:
+%D
+%D \starttyping
+%D \defineaccentcommand ` 18
+%D \defineaccentcommand ' 19
+%D \defineaccentcommand v 20
+%D \defineaccentcommand u 21
+%D \defineaccentcommand = 22
+%D \defineaccentcommand ^ 94
+%D \defineaccentcommand . 95
+%D \defineaccentcommand H 125 % "7D
+%D \defineaccentcommand ~ 126 % "7E
+%D \defineaccentcommand " 127 % "7F
+%D \stoptyping
+
+\def\defineaccentcommand
+ {\protectfontcharacters
+ \dodefineaccentcommand}
+
+\def\dodefineaccentcommand#1 #2 % \string toegevoegd
+ {\doifnumberelse{\string#2}
+ {\setvalue{\accentprefix\characterencoding\string#1}##1{{\accent#2 ##1}}}
+ {\setvalue{\accentprefix\characterencoding\string#1}##1{{#2##1}}}%
+ \unprotectfontcharacters}
+
+%D We don't have to define them for the default \PLAIN\ case.
+%D Commands may be used instead of character codes.
+
+%D \macros
+%D {normalaccent,normalchar}
+%D
+%D Accents are either placed by \TEX's \type {\accent}
+%D primitive, or part of the glyph. By default the former
+%D method is used, unless overruled in the encoding
+%D definitions.
+
+\let\normalchar =\char
+\let\normalaccent=\accent
+
+% \beginETEX \ifcsname
+%
+% \unexpanded\def\dohandleaccent#1#2%
+% {\def\glyph{#2}%
+% \ifx\glyph\empty
+% \dohandleaccent#1\relax
+% \else\ifx\glyph\space
+% \dohandleaccent#1\relax
+% \else\ifcsname\characterencoding#1\string#2\empty\endcsname
+% \csname\characterencoding#1\string#2\endcsname
+% \else\ifcsname\characterencoding#1\endcsname
+% \csname\characterencoding#1\endcsname#2%
+% \else
+% \csname\nocharacterencoding#1\endcsname#2%
+% \fi\fi\fi\fi
+% \relax} % prevents further reading
+%
+% \endETEX
+%
+% \beginTEX
+%
+% \unexpanded\def\dohandleaccent#1#2%
+% {\def\glyph{#2}%
+% \ifx\glyph\empty
+% \dohandleaccent#1\relax
+% \else\ifx\glyph\space
+% \dohandleaccent#1\relax
+% \else\expandafter\ifx\csname\characterencoding#1\string#2\empty\endcsname\relax
+% \expandafter\ifx\csname\characterencoding#1\endcsname\relax
+% \csname\nocharacterencoding#1\endcsname#2%
+% \else
+% \csname\characterencoding#1\endcsname#2%
+% \fi
+% \else
+% \csname\characterencoding#1\string#2\endcsname
+% \fi\fi\fi
+% \relax} % prevents further reading
+%
+% \endTEX
+%
+% %D The trick with \type{\\} is needed to prevent spaces from
+% %D being gobbled after the accented character, should we have
+% %D used \type{\next}, we should have ended up with gobbled
+% %D spaces. The \type {\empty} after \type {#2} takes care of
+% %D empty arguments, so that we can savely say~\type{\"{}}
+% %D and alike.
+
+%D \macros
+%D {redefinecommand}
+%D
+%D Redefinition of encoding dependant commands like \type{\b}
+%D and \type{\c} can be triggered by:
+%D
+%D \starttyping
+%D \redefinecommand b % something math
+%D \redefinecommand c % something math
+%D \stoptyping
+%D
+%D Handling of characters is easier than handling accents
+%D because here we don't have to take care of arguments. We
+%D just call for the right glyph in the right place.
+%D
+%D The \type{\next} construction permits handling of commands
+%D that take arguments. This means that we can use this
+%D command to redefine accent handling commands too
+%D (although today the next is not needed any longer in test
+%D macros).
+
+\def\redefinecommand#1 %
+ {% no \unexpanded, else pdfdoc fails
+ \setvalue{\string#1}{\dohandlecommand{#1}}}%
+
+\beginETEX \ifcsname
+
+\def\dohandlecommand#1%
+ {\csname\commandprefix
+ \ifcsname\commandprefix\characterencoding#1\endcsname
+ \characterencoding
+ \else
+ \nocharacterencoding
+ \fi
+ #1\endcsname}
+
+\endETEX
+
+\beginTEX
+
+\def\dohandlecommand#1%
+ {\csname\commandprefix
+ \expandafter\ifx\csname\commandprefix\characterencoding#1\endcsname\relax
+ \nocharacterencoding
+ \else
+ \characterencoding
+ \fi
+ #1\endcsname}
+
+\endTEX
+
+% %D \macros
+% %D {redefinecharacter}
+% %D
+% %D Special characters, which differ from accented characters
+% %D in that they are to be presented as they are, are redefined
+% %D by
+% %D
+% %D \starttyping
+% %D \redefinecharacter ae % ae
+% %D \redefinecharacter cc % ccedilla
+% %D \stoptyping
+% %D
+% %D To keep things simple, we just copy this command:
+%
+% \let\redefinecharacter=\redefinecommand
+
+%D \macros
+%D {currentencoding, currentregime, currentmapping}
+%D
+%D When we show 'm, we don't want to see the protection
+%D measures.
+
+\def\currentencoding{\@EA\docurrentencoding\characterencoding}
+\def\currentregime {\@EA\docurrentencoding\characterregime }
+\def\currentmapping {\@EA\docurrentencoding\charactermapping }
+
+\def\docurrentencoding @#1@{#1}
+
+%D \macros
+%D {showaccents, showcharacters,
+%D showcharacterbounds, showhyphenations}
+%D
+%D Encoding is a tricky business. Therefore we provide a
+%D a few macros that show most of the characters involved. The
+%D next two tables show the result of \type {\showaccents}.
+%D
+%D \placetable
+%D {The special glyphs in default encoding.}
+%D {\showaccents}
+%D
+%D \placetable
+%D {The special glyphs in texnansi encoding.}
+%D {\switchtobodyfont[lbr]\showaccents}
+%D
+%D The command
+%D
+%D \starttyping
+%D \showhyphenations{doordefini\"eren}
+%D \stoptyping
+%D
+%D can be used to check the correct loading of hyphenation
+%D patterns.
+
+\fetchruntimecommand \showaccents {\f!encodingprefix\s!run}
+\fetchruntimecommand \showcharacters {\f!encodingprefix\s!run}
+\fetchruntimecommand \showcharacterbounds {\f!encodingprefix\s!run}
+\fetchruntimecommand \showhyphenations {\f!encodingprefix\s!run}
+\fetchruntimecommand \showmapping {\f!encodingprefix\s!run}
+
+%D \macros
+%D {everyuppercase, EveryUppercase,
+%D everyuppercase, EveryUppercase}
+%D
+%D When we want to uppercase strings of characters, we have to
+%D take care of those characters that have a special meaning or
+%D are only accessible by means of macros. The next hack was
+%D introduced when Tobias Burnus started translating head and
+%D label texts into spanish and italian. The first application
+%D of this token register therefore can be found in the module
+%D that deals with these texts.
+
+\newevery \everyuppercase \EveryUppercase
+\newevery \everylowercase \EveryLowercase
+
+%D This magic trick maps takes care of mapping from lower to
+%D upper case and reverse.
+
+\def\reloadmapping{\the\executeifdefined{\@cas@\charactermapping}\emptytoks}
+
+\appendtoks\let\setuppercasecom\setcasecom\to\everyuppercase
+\appendtoks\let\setlowercasecom\setcasecom\to\everylowercase
+
+\appendtoks\reloadmapping\to\everyuppercase % slow, will be sped up
+\appendtoks\reloadmapping\to\everylowercase % slow, will be sped up
+
+\newtoks\everyULmap
+
+\appendtoks\let\remapcase\remapuppercase\the\everyULmap\to\everyuppercase
+\appendtoks\let\remapcase\remaplowercase\the\everyULmap\to\everylowercase
+
+\let\remapcase\gobbletwoarguments
+
+\def\remapuppercase#1#2{\let#2#1} % more efficient:
+\def\remaplowercase#1#2{\let#1#2} \let\remaplowercase\let
+
+\def\defineLCcharacter #1 #2 %
+ {\appendtoks\let\to\everylowercase
+ \@EA\appendtoks\csname#1\endcsname\to\everylowercase
+ \@EA\appendtoks\csname#2\endcsname\to\everylowercase}
+
+\def\defineUCcharacter #1 #2 %
+ {\appendtoks\let\to\everyuppercase
+ \@EA\appendtoks\csname#1\endcsname\to\everyuppercase
+ \@EA\appendtoks\csname#2\endcsname\to\everyuppercase}
+
+\def\defineULcharacter #1 #2 %
+ {\appendtoks\remapcase\to\everyULmap
+ \@EA\appendtoks\csname#1\endcsname\to\everyULmap
+ \@EA\appendtoks\csname#2\endcsname\to\everyULmap}
+
+% slightly faster with \smallcapped's but far more hash and stringspace
+%
+% \newif\ifuppercase \appendtoks\uppercasetrue\to\everyuppercase
+% \newif\iflowercase \appendtoks\lowercasetrue\to\everylowercase
+%
+% \def\defineULcharacter #1 #2 %
+% {\def\!!stringa{@#1}\@EA\letvalue\@EA\!!stringa\csname#1\endcsname
+% \def\!!stringa{@#2}\@EA\letvalue\@EA\!!stringa\csname#2\endcsname
+% \setvalue{#1}{\getvalue{@\ifuppercase#2\else#1\fi}}%
+% \setvalue{#2}{\getvalue{@\iflowercase#1\else#2\fi}}}
+
+% 2 = tricky, since expanding \definedfont[lowcasename] ... goes wrong
+
+\chardef\uppercasemode\plusthree % 0=ignore 1=normal 2=expand 3=auto
+\chardef\casecommode \plusone % 0=noexpand 1=expand
+
+\def\setcasecom #1#2{\def#1{\ifcase\casecommode\noexpand#1\else#2\fi}}
+
+% \def\OEPS{whatever}
+%
+% \startmapping[ec]
+% \defineuppercasecom \oeps {\getvalue{OEPS}}
+% \stopmapping
+%
+% \WORD{xx \oeps}
+
+\def\douppercase#1%
+ {\bgroup
+ \let\douppercase\firstofoneargument
+ \the\everyuppercase % currently also checks uppercasemode
+ \let\dochar\rawcharacter
+ \ifcase\uppercasemode
+ #1%
+ \or % No expansion here, otherwise \getvalue problems! Default!!!
+ %\edef\next{#1}% keep this to prevent roll back
+ %\uppercase\expandafter{\next}% keep this to prevent roll back
+ \uppercase{#1}%
+ \or
+ \chardef\casecommode\zerocount
+ \let\docasecom\firstoftwoarguments
+ \edef\ascii{#1}%
+ \edef\ascii{\expandafter\uppercase\expandafter{\ascii}}% needed when in regime
+ \chardef\casecommode\plusone
+ \ascii
+ \else
+ % mode three may trigger setting 2 elsewhere (e.g. regime test)
+ \uppercase{#1}%
+ \fi
+ \egroup}
+
+\prependtoksonce
+ \doifnot\currentregime\s!default
+ {\ifnum\uppercasemode=\plusthree \chardef\uppercasemode\plustwo \fi}%
+\to \everyuppercase
+
+%D \macros
+%D {everysanitize, EverySanitize}
+%D
+%D Whenever we are sanitizing strings, like we sometimes do
+%D when we deal with specials, the next token register can be
+%D called.
+
+\newevery \everysanitize \EverySanitize
+
+%D \macros
+%D {retainlccodes}
+%D
+%D One way of manipulating characters is changing the their
+%D \type{\lccode} and applying \type{\lowcase}. An example of
+%D this can be found in \type{spec-mis}.
+
+\ifx\retainlccodes\undefined
+
+ \def\retainlccodes{\dostepwiserecurse{0}{255}{1}{\lccode\recurselevel=\recurselevel}\relax}
+
+\fi
+
+% %D \macros
+% %D {cc,CC}
+% %D
+% %D Hm, not in plain at all, those \cc's and \CC's.
+%
+% \def\CC{\c{C}}
+% \def\cc{\c{c}}
+%
+% %D \macros
+% %D {dotlessi,dotlessj}
+% %D
+% %D We also save both dotless~\dotlessi\ and~\dotlessj. This
+% %D way we still have them were we expect them, even when
+% %D macros of font providers redefine them.
+%
+% \let\dotlessi=\i
+% \let\dotlessj=\j
+
+%D \macros
+%D {defineuclass,defineudigit,udigit}
+%D
+%D The next few macros are experimental and needed for unicoded
+%D chinese characters.
+
+\def\defineuclass #1 #2 #3 {\setvalue{uc#2#3}{#1}}
+\def\defineudigit #1 #2 #3 {\setvalue{\characterencoding uc#1}{\uchar{#2}{#3}}}
+
+%D It may look strange, but for the moment, we want the encoding
+%D to be part of the digit specification. This may change!
+
+\unexpanded\def\udigit#1#2{\getvalue{@#1@uc\number#2}}
+
+%D \macros
+%D {uchar, octuchar, hexuchar}
+
+\ifx\uchar\undefined \def\uchar#1#2{(\number#1,\number#2)} \fi
+
+\def\octuchar#1#2{\uchar{`#1}{`#2}}
+\def\hexuchar#1#2{\uchar{"#1}{"#2}}
+
+% %D Just to be sure, we save the original values of \type {\ss}.
+%
+% \ifx\undefined\SS \let\SS=\ss \fi
+% \ifx\undefined\sz \let\sz=\ss \fi
+%
+% %D Here come the definitions.
+%
+% \redefineaccent ' % grave
+% \redefineaccent ` % acute
+% \redefineaccent " % diaeresis
+% \redefineaccent ^ % circumflex
+% \redefineaccent ~ % tilde
+% \redefineaccent v % caron
+% \redefineaccent u % breve
+% \redefineaccent . % dotaccent
+% \redefineaccent H % hungarumlaut
+% \redefineaccent t % ........
+% \redefineaccent r % ........
+% \redefineaccent =
+% \redefineaccent b
+% \redefineaccent c
+% \redefineaccent d
+% \redefineaccent k
+
+% obsolete (moved)
+%
+% \redefinecharacter ae % ae
+% \redefinecharacter AE % AE
+% \redefinecharacter oe % oe
+% \redefinecharacter OE % OE
+% \redefinecharacter o % ostroke
+% \redefinecharacter O % Ostroke
+% \redefinecharacter sz % germandbls
+% \redefinecharacter SS % germandbls
+% \redefinecharacter aa % aring
+% \redefinecharacter AA % Aring
+
+% \redefinecharacter th
+% \redefinecharacter TH
+% \redefinecharacter ng
+% \redefinecharacter NG
+% \redefinecharacter ij
+% \redefinecharacter IJ
+%
+% \redefinecharacter i \redefinecharacter dotlessi
+% \redefinecharacter j \redefinecharacter dotlessj
+%
+% \redefinecharacter l
+% \redefinecharacter L
+
+% replaced
+%
+% \defineaccent " i {\"\i} \defineaccent " j {\"\j}
+% \defineaccent ^ i {\^\i} \defineaccent ^ j {\^\j}
+% \defineaccent ` i {\`\i} \defineaccent ` j {\`\j}
+% \defineaccent ' i {\'\i} \defineaccent ' j {\'\j}
+% \defineaccent ~ i {\~\i} \defineaccent ~ j {\~\j}
+
+% \redefinecharacter leftguillemot
+% \redefinecharacter rightguillemot
+% \redefinecharacter leftsubguillemot
+% \redefinecharacter rightsubguillemot
+
+% obsolete
+%
+% %D Some more:
+%
+% \startmapping[\s!default]
+%
+% \defineuppercasecom \i {I}
+% \defineuppercasecom \j {J}
+% \defineuppercasecom \sz {SS}
+% \defineuppercasecom \SS {SS}
+% \defineuppercasecom \l \L
+% \defineuppercasecom \ae \AE
+% \defineuppercasecom \aa \AA
+% \defineuppercasecom \o \O
+% \defineuppercasecom \oe \OE
+% \definelowercasecom \L \l
+% \definelowercasecom \AE \ae
+% \definelowercasecom \AA \aa
+% \definelowercasecom \O \o
+% \definelowercasecom \OE \oe
+%
+% \stopmapping
+
+%D Basics and fallbacks.
+
+\newif\ifignoreaccent
+
+\let\textaccent \accent
+
+\let\normalaccent \accent
+\let\normaltextaccent\textaccent
+\let\normalmathaccent\mathaccent
+\let\normalchar \char
+
+% ** we will explicitly embrace the two arguments, since in definitions
+% this may not be the case, and we don't want faulty expansions like
+% "\dobuildtextaccent \char 18 a" but "\dobuildtextaccent {\char 18}{a}"
+% instead
+
+\def\buildtextaccent#1#2% **
+ {\ifignoreaccent
+ \expandafter\nobuildtextaccent
+ \else
+ \expandafter\dobuildtextaccent
+ \fi{#1}{#2}}
+
+\unexpanded\def\dobuildtextaccent#1#2%
+ {{\let\char\normalaccent#1\let\char\normalchar#2}}
+
+\unexpanded\def\nobuildtextaccent#1#2%
+ {#2}
+
+\def\buildmathaccent#1%
+ {\mathaccent#1 }
+
+% will be overloaded later
+
+%\def\definetextaccent#1 #2%
+% {\setvalue{\string#1}{#2}% will be overloaded
+% \setvalue{normaltextaccent\string#1}{#2}}
+%
+%\def\donormaltextaccent#1%
+% {\getvalue{normaltextaccent\string#1}}
+%
+%\definetextaccent ` {\buildtextaccent\textgrave}
+%\definetextaccent ' {\buildtextaccent\textacute}
+%\definetextaccent v {\buildtextaccent\textcaron}
+%\definetextaccent u {\buildtextaccent\textbreve}
+%\definetextaccent = {\buildtextaccent\textmacron}
+%\definetextaccent ^ {\buildtextaccent\textcircumflex}
+%\definetextaccent . {\buildtextaccent\textdotaccent}
+%\definetextaccent H {\buildtextaccent\texthungarumlaut}
+%\definetextaccent ~ {\buildtextaccent\texttilde}
+%\definetextaccent " {\buildtextaccent\textdiaeresis}
+
+\definecommand ` {\buildtextaccent\textgrave}
+\definecommand ' {\buildtextaccent\textacute}
+\definecommand r {\buildtextaccent\textring}
+\definecommand v {\buildtextaccent\textcaron}
+\definecommand u {\buildtextaccent\textbreve}
+\definecommand = {\buildtextaccent\textmacron}
+\definecommand ^ {\buildtextaccent\textcircumflex}
+\definecommand . {\buildtextaccent\textdotaccent}
+\definecommand H {\buildtextaccent\texthungarumlaut}
+\definecommand ~ {\buildtextaccent\texttilde}
+\definecommand " {\buildtextaccent\textdiaeresis}
+
+% some fake ones, name will change into build
+
+\unexpanded\def\bottomaccent#1#2#3#4#5% down right slantcorrection accent char
+ {\dontleavehmode % why this align mess
+ \vtop
+ {\forgetall
+ \baselineskip\zeropoint
+ \lineskip#1%
+ \everycr\emptytoks
+ \tabskip\zeropoint
+ \lineskiplimit\zeropoint
+ \setbox0\hbox{#4}%
+ \halign
+ {##\crcr\hbox{#5}\crcr
+ \hidewidth
+ \hskip#2\wd0
+ \hskip-#3\fontdimen1\font % in plain 1ex * dimenless value
+ \vbox to .2ex{\box0\vss}\hidewidth
+ \crcr}}}
+
+\def\buildtextmacron {\bottomaccent{.25ex}{0}{15}{\textmacron}}
+\def\buildtextbottomdot{\bottomaccent{.25ex}{0}{5}{\textbottomdot}}
+\def\buildtextcedilla {\bottomaccent{0ex}{0}{5}{\textcedilla}}
+\def\buildtextogonek {\bottomaccent{-.1ex}{.5}{0}{\textogonek}}
+
+%\definetextaccent c {\buildtextcedilla}
+%\definetextaccent b {\buildtextmacron}
+%\definetextaccent d {\buildtextbottomdot}
+%\definetextaccent k {\buildtextogonek}
+
+\definecommand c {\buildtextcedilla}
+\definecommand b {\buildtextmacron}
+\definecommand d {\buildtextbottomdot}
+\definecommand k {\buildtextogonek}
+
+%D Rarely needed but there:
+
+\unexpanded\def\topaccent#1#2#3#4#5% down right slantcorrection accent char
+ {\dontleavehmode
+ \bgroup
+ \setbox0\hbox{#4}%
+ \setbox2\hbox{#5}%
+ \hbox to \wd2 \bgroup
+ \hss\copy2\hss
+ \hskip-\wd2
+ \hss\hskip#2\wd0\hskip-#3\fontdimen1\font\raise#1\hbox{#4}\hss
+ \egroup
+ \egroup}
+
+\def\buildtextgrave{\topaccent{0pt}{0}{15}{\textgrave}} % e.g.
+
+% \definecharacter schwa {\hbox{\rotate[rotation=180,location=high]{\hbox{e}}}}
+% \definecharacter schwagrave {\buildtextgrave\schwa}
+
+% math stuff, will change
+
+\def\definemathaccent#1 #2%
+ {\setvalue{\string#1}{#2}%
+ \setvalue{normalmathaccent\string#1}{#2}}
+
+\def\donormalmathaccent#1%
+ {\getvalue{normalmathaccent\string#1}}
+
+\definemathaccent acute {\buildmathaccent\mathacute}
+\definemathaccent grave {\buildmathaccent\mathgrave}
+\definemathaccent ddot {\buildmathaccent\mathddot}
+\definemathaccent tilde {\buildmathaccent\mathtilde}
+\definemathaccent bar {\buildmathaccent\mathbar}
+\definemathaccent breve {\buildmathaccent\mathbreve}
+\definemathaccent check {\buildmathaccent\mathcheck}
+\definemathaccent hat {\buildmathaccent\mathhat}
+\definemathaccent vec {\buildmathaccent\mathvec}
+\definemathaccent dot {\buildmathaccent\mathdot}
+\definemathaccent widetilde {\buildmathaccent\mathwidetilde}
+\definemathaccent widehat {\buildmathaccent\mathwidehat}
+
+%D Some precautions:
+
+\ifx\usepdffontresource\undefined
+ \def\usepdffontresource #1 {} % this will be defined elsewhere
+\fi
+
+%D Some day \unknown\
+
+% \def\useencodingvector #1 % file tag
+% {\pushmacro\definecharacter
+% \pushmacro\startencoding
+% \pushmacro\stopencoding
+% \def\definecharacter ##1 ##2 %
+% {\doifnumberelse{##2}
+% {\ifnum##2>127
+% \def\!!stringa{##2 }%
+% \@EA\@EA\@EA\defineactivetoken\@EA\!!stringa\@EA{\csname##1\endcsname}%
+% \fi}
+% {}}%
+% \def\startencoding[##1]{}
+% \def\stopencoding{\endinput}
+% \readfile{xxxx-#1}\donothing\donothing
+% \popmacro\stopencoding
+% \popmacro\startencoding
+% \popmacro\definecharacter}
+%
+% \startregime[ec]
+% \useencodingvector ec
+% \stopregime
+
+% new, to be documented (oeps, conflicts with existing code)
+
+\def\dontexpandencoding
+ {\let\dohandleaccent \donthandleaccent
+ \let\dohandlecommand \donthandlecommand
+ \let\dohandlecharacter\donthandlecharacter}
+
+\def\donthandleaccent #1{\expandafter\string\csname#1\endcsname\space}
+\def\donthandlecommand #1{\expandafter\string\csname#1\endcsname\space}
+\def\donthandlecharacter#1{\expandafter\string\csname#1\endcsname\space}
+
+\def\keepencodedtokens
+ {\let\dohandleaccent \keephandleaccent
+ \let\dohandlecommand \keephandlecommand
+ \let\dohandlecharacter\keephandlecharacter}
+
+\def\literateencodedtokens
+ {% \let\dohandleaccent \keephandleaccent
+ % \let\dohandlecommand \keephandlecommand
+ \let\dohandlecharacter\keephandlecharacter}
+
+\def\keephandleaccent #1{\expandafter\noexpand\csname#1\endcsname}
+\def\keephandlecommand #1{\expandafter\noexpand\csname#1\endcsname}
+\def\keephandlecharacter#1{\expandafter\noexpand\csname#1\endcsname}
+
+\def\handleaccent #1{\csname#1\endcsname}
+\def\handlecommand #1{\csname#1\endcsname}
+\def\handlecharacter#1{\csname#1\endcsname}
+
+\unexpanded\def\uhandleaccent #1{\csname#1\endcsname}
+\unexpanded\def\uhandlecommand #1{\csname#1\endcsname}
+\unexpanded\def\uhandlecharacter#1{\csname#1\endcsname}
+
+\def\dontexpandencodedtokens
+ {\def\dohandleaccent {\uhandleaccent}%
+ \def\dohandlecommand {\uhandlecommand}%
+ \def\dohandlecharacter{\uhandlecharacter}}
+
+%D Still valid? To be checked:
+
+\def\ignoreencoding
+ {\let\dohandleaccent \doignoreaccent
+ \let\dohandlecommand \doignorecommand
+ \let\dohandlecharacter\doignorecharacter}
+
+\def\doignoreaccent #1#2{\string#1\string#2}%
+\def\doignorecommand #1{\string#1}
+\def\doignorecharacter#1{\string#1}
+
+\appendtoks
+ \ignoreencoding
+\to \everycleanupfeatures
+
+\appendtoks
+ \keepencodedtokens
+\to \everysafeexpanded
+
+%D Now we will not redefine any more, so:
+
+\let\normaldohandleaccent \dohandleaccent
+\let\normaldohandlecharacter\dohandlecharacter
+
+%D We preload several encodings:
+
+\useencoding[def,acc,raw,com,cas,mis] % mis should come first
+
+\useencoding[ans,il2,ec,tbo,pdf,uc,pol,qx,t5,cyr]
+
+\setupencoding[\s!default=ec] % was: [\s!default=\s!default]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-lat.tex b/Master/texmf-dist/tex/context/base/enco-lat.tex
new file mode 100644
index 00000000000..2623aae8d7d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-lat.tex
@@ -0,0 +1,7 @@
+% temporary module, needed for downward compatibility
+
+\input regi-lat.tex
+
+\enableregime[latin2]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-mis.tex b/Master/texmf-dist/tex/context/base/enco-mis.tex
new file mode 100644
index 00000000000..b089fe5695a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-mis.tex
@@ -0,0 +1,223 @@
+%D \module
+%D [ file=enco-mis,
+%D version=2000.05.07, % 1999.11.11,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Missing Glyphs,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this file we collect some definitions that construct
+%D pseudo characters. Some day we will move some definitions
+%D from \type {plain.tex} to this file. Some definitions are
+%D derived from definitions in the \LATEX\ distribution,
+%D especially Johannes Braams' Babel system.
+
+\startmapping[\s!default]
+
+\defineuppercasecom \dj \DJ
+\defineuppercasecom \Dj \dj
+\defineuppercasecom \DJ \dj
+
+\definecharacter dstroke {\pseudoencodeddj}
+\definecharacter Dstroke {\pseudoencodedDJ}
+
+\stopmapping
+
+%D We need proper names like in enco-com.tex!
+
+\definecharacter dj {\dstroke} % {\pseudoencodeddj}
+\definecharacter Dj {\Dstroke} % {\pseudoencodedDJ}
+\definecharacter DJ {\Dstroke} % {\pseudoencodedDJ}
+
+\unprotect
+
+% \def\pseudoencodeddj % like in babel
+% {\leavevmode\hbox\bgroup
+% \setbox0\hbox{d}%
+% \dimen0=\ht0
+% \advance\dimen0 1ex
+% \dimen0=.45\dimen0
+% \dimen2=\withoutpt\the\fontdimen1\font\dimen0
+% \advance\dimen2 .5ex
+% \rlap{\raise\dimen0\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
+% \box0
+% \egroup}
+%
+% \def\pseudoencodedDJ % like in babel
+% {\leavevmode
+% \hbox\bgroup
+% \setbox0\hbox{D}%
+% \dimen0=.55\ht0
+% \dimen2=\withoutpt\the\fontdimen1\font\dimen0
+% \advance\dimen2 .15ex
+% \advance\dimen2 -.15\fontdimen7\font
+% \rlap{\raise\dimen0\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.33em}}}%
+% \box0
+% \egroup}
+
+\def\pseudoencodeddj % like in babel, but safer
+ {\dontleavehmode\hbox\bgroup
+ \setbox\scratchbox\hbox{d}%
+ \scratchdimen\ht\scratchbox
+ \advance\scratchdimen 1ex
+ \scratchdimen.45\scratchdimen
+ \dimen2=\withoutpt\the\fontdimen1\font\dimen0
+ \advance\dimen2 .5ex
+ \hbox to \wd\scratchbox
+ {\box\scratchbox\hss
+ \raise\scratchdimen\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
+ \egroup}
+
+% \def\pseudoencodedDJ % like in babel, but safer
+% {\leavevmode
+% \hbox\bgroup
+% \setbox\scratchbox\hbox{D}%
+% \scratchdimen.55\ht\scratchbox
+% \dimen2=\withoutpt\the\fontdimen1\font\scratchdimen
+% \advance\dimen2 .15ex
+% \advance\dimen2 -.15\fontdimen7\font
+% \hbox to \wd\scratchbox
+% {\box\scratchbox\hss
+% \raise\scratchdimen\hbox{\kern\dimen2\vbox{\hrule\!!height0.1ex\!!width0.3em}}}%
+% \egroup}
+
+\def\pseudoencodedDJ % design: taco; quality assurance: mojca; cleanup: hans
+ {\dontleavehmode
+ \hbox\bgroup
+ \setbox\scratchbox\hbox{D}%
+ \dimen2=1.1ex
+ \dimen2=\withoutpt\the\fontdimen1\font\dimen2
+ \hbox to \wd\scratchbox
+ {\rlap
+ {\raise.52\ht\scratchbox
+ \hbox
+ {\kern\dimen2
+ \vbox{\hrule\!!height.04ex\!!depth.04ex\!!width.4\wd\scratchbox}}}%
+ \box\scratchbox}%
+ \egroup}
+
+% currency
+
+\def\fakedollar % pretty cmr dependent
+ {\bgroup
+ \ifnum\fam=\itfam
+ \sl
+ \else\ifnum\fam=\bifam
+ \bs
+ \fi\fi
+ \$%
+ \egroup}
+
+\def\fakesterling % pretty cmr dependent
+ {\bgroup
+ \ifnum\fam=\bffam
+ \bi
+ \else\ifnum\fam=\bifam
+ \bi
+ \else\ifnum\fam=\bsfam
+ \bi
+ \else
+ \it
+ \fi\fi\fi
+ \$%
+ \egroup}
+
+\def\fakeflorin
+ {\bgroup
+ \ifnum\fam=\bffam
+ \bi
+ \else\ifnum\fam=\bifam
+ \bi
+ \else\ifnum\fam=\bsfam
+ \bi
+ \else
+ \it
+ \fi\fi\fi
+ f%
+ \egroup}
+
+% perthings
+
+\def\fakeperthousand
+ {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle00}}}
+
+\def\fakepercent
+ {\mathematics{^{\scriptscriptstyle0}\kern-.25em/\kern-.2em_{\scriptscriptstyle0}}}
+
+\def\fakepermine
+ {\dontleavehmode
+ \bgroup
+ \setbox0\hbox
+ {\mathematics{+}}%
+ \hbox to \wd0
+ {\hss
+ \mathematics{^{\scriptscriptstyle-}\kern-.4em/\kern-.3em_{\scriptscriptstyle-}}%
+ \hss}%
+ \egroup}
+
+% guillemots
+
+%D Yes I know, they are ugly:
+
+\def\fakeleftguillemot
+ {\dontleavehmode\hbox{\raise.25ex\hbox{$\scriptscriptstyle\ll$}}}
+
+\def\fakerightguillemot
+ {\hbox{\raise.25ex\hbox{$\scriptscriptstyle\gg$}}}
+
+\def\fakeleftsubguillemot
+ {\dontleavehmode\hbox{\raise.25ex\hbox{$\scriptscriptstyle<$}}}
+
+\def\fakerightsubguillemot
+ {\hbox{\raise.25ex\hbox{$\scriptscriptstyle>$}}}
+
+%D Needed:
+
+\def\fakevisiblespace
+ {\leavevmode\hbox
+ {\setbox\scratchbox\hbox{(}%
+ \scratchdimen.1\dp\scratchbox
+ \setbox\scratchbox\hbox{\space}%
+ \hbox to \wd\scratchbox
+ {\vrule
+ \!!depth 5\scratchdimen
+ \!!width \scratchdimen
+ \!!height \zeropoint
+ \hss
+ \vrule
+ \!!depth 5\scratchdimen
+ \!!width \wd\scratchbox
+ \!!height-4\scratchdimen
+ \hss
+ \vrule
+ \!!depth 5\scratchdimen
+ \!!width \scratchdimen
+ \!!height \zeropoint}}}
+
+%\def\fakeunderscore{\leavevmode\kern.06em\vbox{\hrule\!!width.3em}}
+
+\def\fakeunderscore
+ {\leavevmode\hbox
+ {\setbox\scratchbox\hbox{(}%
+ \scratchdimen.2\dp\scratchbox
+ \setbox\scratchbox\hbox{\space}%
+ \vrule
+ \!!depth \scratchdimen
+ \!!width \wd\scratchbox
+ \!!height\zeropoint}}
+
+\ifx\mathunderscore\undefined \let\mathunderscore\fakeunderscore \fi
+\ifx\textunderscore\undefined \let\textunderscore\fakeunderscore \fi
+
+\def\_{\ifmmode\mathunderscore\else\textunderscore\fi}
+
+% Handy but obsolete, replaced by \unknownchar:
+%
+% \def\missingglyph{\ruledhbox{?}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-pdf.tex b/Master/texmf-dist/tex/context/base/enco-pdf.tex
new file mode 100644
index 00000000000..a03e81df25d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-pdf.tex
@@ -0,0 +1,278 @@
+%D \module
+%D [ file=enco-pdf,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=\YandY\ texnansi Encoding,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is the \PDF\ document encoding.
+
+\startencoding[pdfdoc] % \rawcharacter{number}
+
+\definecharacter oeligature ^^9c
+
+\definecharacter leftguillemot ^^ab
+\definecharacter rightguillemot ^^bb
+
+\definecharacter Agrave ^^c0
+\definecharacter Aacute ^^c1
+\definecharacter Acircumflex ^^c2
+\definecharacter Atilde ^^c3
+\definecharacter Adiaeresis ^^c4
+\definecharacter OAligature ^^c5
+\definecharacter AEligature ^^c6
+\definecharacter Ccedilla ^^c7
+\definecharacter Egrave ^^c8
+\definecharacter Eacute ^^c9
+\definecharacter Ecircumflex ^^ca
+\definecharacter Ediaeresis ^^cb
+\definecharacter Igrave ^^cc
+\definecharacter Iacute ^^cd
+\definecharacter Icircumflex ^^ce
+\definecharacter Idiaeresis ^^cf
+
+\definecharacter Ntilde ^^d1
+\definecharacter Ograve ^^d2
+\definecharacter Oacute ^^d3
+\definecharacter Ocircumflex ^^d4
+\definecharacter Otilde ^^d5
+\definecharacter Odiaeresis ^^d6
+
+\definecharacter Ugrave ^^d9
+\definecharacter Uacute ^^da
+\definecharacter Ucircumflex ^^db
+\definecharacter Udiaeresis ^^dc
+\definecharacter Yacute ^^dd
+
+\definecharacter ssharp ^^df
+\definecharacter agrave ^^e0
+\definecharacter aacute ^^e1
+\definecharacter acircumflex ^^e2
+\definecharacter atilde ^^e3
+\definecharacter adiaeresis ^^e4
+\definecharacter oaligature ^^e5
+\definecharacter aeligature ^^e6
+\definecharacter ccedilla ^^e7
+\definecharacter egrave ^^e8
+\definecharacter eacute ^^e9
+\definecharacter ecircumflex ^^ea
+\definecharacter ediaeresis ^^eb
+\definecharacter igrave ^^ec
+\definecharacter iacute ^^ed
+\definecharacter icircumflex ^^ee
+\definecharacter idiaeresis ^^ef
+
+\definecharacter ntilde ^^f1
+\definecharacter ograve ^^f2
+\definecharacter oacute ^^f3
+\definecharacter ocircumflex ^^f4
+\definecharacter otilde ^^f5
+\definecharacter odiaeresis ^^f6
+
+\definecharacter ugrave ^^f9
+\definecharacter uacute ^^fa
+\definecharacter ucircumflex ^^fb
+\definecharacter udiaeresis ^^fc
+\definecharacter yacute ^^fd
+
+\definecharacter ydiaeresis ^^ff
+
+\definecharacter leftsubguillemot {\leftguillemot}
+\definecharacter rightsubguillemot {\rightguillemot}
+
+\definecharacter Uhungarumlaut {\Ucircumflex}
+\definecharacter uhungarumlaut {\ucircumflex}
+\definecharacter Ohungarumlaut {\Ocircumflex}
+\definecharacter ohungarumlaut {\ocircumflex}
+
+\definecharacter Aogonek {A}
+\definecharacter aogonek {a}
+\definecharacter Eogonek {E}
+\definecharacter eogonek {e}
+\definecharacter Iogonek {I}
+\definecharacter iogonek {i}
+\definecharacter Uogonek {U}
+\definecharacter uogonek {u}
+
+\definecharacter Aring {A}
+\definecharacter aring {a}
+\definecharacter Uring {U}
+\definecharacter uring {u}
+
+\definecharacter Abreve {A}
+\definecharacter abreve {a}
+\definecharacter Ebreve {E}
+\definecharacter ebreve {e}
+\definecharacter Gbreve {G}
+\definecharacter gbreve {g}
+\definecharacter Ibreve {I}
+\definecharacter ibreve {i}
+\definecharacter Obreve {O}
+\definecharacter obreve {o}
+\definecharacter Ubreve {U}
+\definecharacter ubreve {u}
+
+\definecharacter Ccaron {C}
+\definecharacter ccaron {c}
+\definecharacter Dcaron {D}
+\definecharacter dcaron {d}
+\definecharacter Ecaron {E}
+\definecharacter ecaron {e}
+\definecharacter Lcaron {L}
+\definecharacter lcaron {l}
+\definecharacter Ncaron {N}
+\definecharacter ncaron {n}
+\definecharacter Rcaron {R}
+\definecharacter rcaron {r}
+\definecharacter Scaron {S}
+\definecharacter scaron {s}
+\definecharacter Tcaron {T}
+\definecharacter tcaron {t}
+\definecharacter Ycaron {Y}
+\definecharacter ycaron {y}
+\definecharacter Zcaron {Z}
+\definecharacter zcaron {z}
+
+\definecharacter Lstroke {L}
+\definecharacter lstroke {l}
+\definecharacter Ostroke {O}
+\definecharacter ostroke {o}
+
+\definecharacter aumlaut {\adiaeresis}
+\definecharacter eumlaut {\ediaeresis}
+\definecharacter iumlaut {\idiaeresis}
+\definecharacter oumlaut {\odiaeresis}
+\definecharacter uumlaut {\udiaeresis}
+
+\definecharacter Aumlaut {\Adiaeresis}
+\definecharacter Eumlaut {\Ediaeresis}
+\definecharacter Iumlaut {\Idiaeresis}
+\definecharacter Oumlaut {\Odiaeresis}
+\definecharacter Uumlaut {\Udiaeresis}
+
+\definecharacter scommaaccent {s}
+\definecharacter Scommaaccent {S}
+\definecharacter tcommaaccent {t}
+\definecharacter Tcommaaccent {T}
+
+\definecharacter Etilde {E}
+\definecharacter etilde {e}
+
+\definecharacter Ahook {A}
+\definecharacter ahook {a}
+\definecharacter Ehook {E}
+\definecharacter ehook {e}
+\definecharacter Ihook {I}
+\definecharacter ihook {i}
+\definecharacter Ohook {O}
+\definecharacter ohook {o}
+\definecharacter Uhook {U}
+\definecharacter uhook {u}
+\definecharacter Yhook {Y}
+\definecharacter yhook {y}
+
+\definecharacter Acircumflexgrave {\Acircumflex}
+\definecharacter Acircumflexacute {\Acircumflex}
+\definecharacter Acircumflextilde {\Acircumflex}
+\definecharacter Acircumflexhook {\Acircumflex}
+\definecharacter acircumflexgrave {\acircumflex}
+\definecharacter acircumflexacute {\acircumflex}
+\definecharacter acircumflextilde {\acircumflex}
+\definecharacter acircumflexhook {\acircumflex}
+\definecharacter Ecircumflexgrave {\Ecircumflex}
+\definecharacter Ecircumflexacute {\Ecircumflex}
+\definecharacter Ecircumflextilde {\Ecircumflex}
+\definecharacter Ecircumflexhook {\Ecircumflex}
+\definecharacter ecircumflexgrave {\ecircumflex}
+\definecharacter ecircumflexacute {\ecircumflex}
+\definecharacter ecircumflextilde {\ecircumflex}
+\definecharacter ecircumflexhook {\ecircumflex}
+\definecharacter Ocircumflexgrave {\Ocircumflex}
+\definecharacter Ocircumflexacute {\Ocircumflex}
+\definecharacter Ocircumflextilde {\Ocircumflex}
+\definecharacter Ocircumflexhook {\Ocircumflex}
+\definecharacter ocircumflexgrave {\ocircumflex}
+\definecharacter ocircumflexacute {\ocircumflex}
+\definecharacter ocircumflextilde {\ocircumflex}
+\definecharacter ocircumflexhook {\ocircumflex}
+
+\definecharacter Abrevegrave {A}
+\definecharacter Abreveacute {A}
+\definecharacter Abrevetilde {A}
+\definecharacter Abrevehook {A}
+\definecharacter abrevegrave {a}
+\definecharacter abreveacute {a}
+\definecharacter abrevetilde {a}
+\definecharacter abrevehook {a}
+
+\definecharacter Adotbelow {A}
+\definecharacter adotbelow {a}
+\definecharacter Edotbelow {E}
+\definecharacter edotbelow {e}
+\definecharacter Idotbelow {I}
+\definecharacter idotbelow {i}
+\definecharacter Odotbelow {O}
+\definecharacter odotbelow {o}
+\definecharacter Udotbelow {U}
+\definecharacter udotbelow {u}
+\definecharacter Ydotbelow {Y}
+\definecharacter ydotbelow {y}
+\definecharacter Ohorndotbelow {O}
+\definecharacter ohorndotbelow {o}
+\definecharacter Uhorndotbelow {U}
+\definecharacter uhorndotbelow {u}
+
+\definecharacter Acircumflexdotbelow {\Acircumflex}
+\definecharacter acircumflexdotbelow {\acircumflex}
+\definecharacter Ecircumflexdotbelow {\Ecircumflex}
+\definecharacter ecircumflexdotbelow {\ecircumflex}
+\definecharacter Ocircumflexdotbelow {\Ocircumflex}
+\definecharacter ocircumflexdotbelow {\ocircumflex}
+\definecharacter Abrevedotbelow {\Abreve}
+\definecharacter abrevedotbelow {\abreve}
+
+\definecharacter Ohorn {O}
+\definecharacter Ohorngrave {O}
+\definecharacter Ohornacute {O}
+\definecharacter Ohorntilde {O}
+\definecharacter Ohornhook {O}
+
+\definecharacter ohorn {o}
+\definecharacter ohorngrave {o}
+\definecharacter ohornacute {o}
+\definecharacter ohorntilde {o}
+\definecharacter ohornhook {o}
+
+\definecharacter Uhorn {U}
+\definecharacter Uhorngrave {U}
+\definecharacter Uhornacute {U}
+\definecharacter Uhorntilde {U}
+\definecharacter Uhornhook {U}
+
+\definecharacter uhorn {u}
+\definecharacter uhorngrave {u}
+\definecharacter uhornacute {u}
+\definecharacter uhorntilde {u}
+\definecharacter uhornhook {u}
+
+\definecharacter Utilde {U}
+\definecharacter utilde {u}
+\definecharacter Itilde {I}
+\definecharacter itilde {i}
+\definecharacter Ygrave {Y}
+\definecharacter ygrave {y}
+\definecharacter Ytilde {Y}
+\definecharacter ytilde {y}
+
+\definecharacter dstroke {d}
+\definecharacter Dstroke {D}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-pfr.tex b/Master/texmf-dist/tex/context/base/enco-pfr.tex
new file mode 100644
index 00000000000..9507d9e4e5b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-pfr.tex
@@ -0,0 +1,249 @@
+%D \module
+%D [ file=enco-pfr,
+%D version=2000.12.10, % adapted 2005.08.14 to more delayed loading
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=PDF Font Resource Inclusion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\pdffontresource\undefined\else\endinput\fi
+
+\writestatus{loading}{Context Encoding Macros (pdf)}
+
+%D This is an experimental module in which we implement
+%D font resource inclusion in \PDF. One reason to include
+%D font resources is that it enables a search engine to
+%D perform a search (I'm told). This feature ws requested by
+%D Petr Ferdus from Czech.
+
+%D A simple test file may look like this (watch how we first
+%D load the encoding and then the font; previous font
+%D definitions are left untouched.)
+%D
+%D \starttyping
+%D % output=pdftex interface=en
+%D
+%D \useencoding[pfr]
+%D \setupbodyfont[csr]
+%D
+%D \starttext
+%D test \`z \'z \bf test \sl test \bs quite funny \`z \page
+%D test \`z \'z \bf test \sl test \bs quite funny \`z \page
+%D \stoptext
+%D \stoptyping
+%D
+%D We do our best to include a (often large) font resources
+%D only once. The current implementation is not that
+%D general which is also due to the fact that \type
+%D {\pdffontattr} is expanded instantly and persistent. A
+%D more versatile (but also slower) approach is to keep track
+%D of the fonts and either flush the information at shipout
+%D time, or at the end of the document.
+
+\unprotect
+
+%D \macros
+%D {ifincludepdffontresources}
+%D
+%D You can turn of this feature using the following switch.
+
+\newif\ifincludepdffontresources \includepdffontresourcestrue
+
+% a problem is that there is always an ec vector added even when
+% we switch to texnansi early; this has to do with the fact that
+% we need to setup fonts at startup; this a pain when we have
+% textless documents, so we should have a way around, i.e. an
+% extension to pdftex where we can tag numbers inside user specs
+% and attributes.
+%
+% currently we need to use immediate so we end up with entries
+
+%D The name of the resource is stored in a macro, as is its
+%D object reference. A resource is only processed once. When
+%D done, the resource name is erased, and we use this fact to
+%D prevent redefinition as well as well as reloading. So, a
+%D macro defined with \type {\pdffontfileresource} can have
+%D three states:
+%D
+%D \startitemize[packed]
+%D \item undefined: not yet loaded, and not yet included
+%D \item some value: loaded, but not yet included
+%D \item empty: loaded, and already included
+%D \stopitemize
+
+\def\pdffontresource {pdfr:\currentencoding}
+\def\pdffontfileresource{pdff:\pdffontresource}
+
+%D A resource is defined in a file prefixed by \type {pdfr-}.
+%D The following \PDF\ code is composed by Ondrej Koala Vacha (I
+%D probably mispelled this name).
+%D
+%D \starttyping
+%D \startpdffontresource[il2]
+%D /CIDInit /ProcSet findresource begin
+%D 12 dict begin
+%D begincmap
+%D /CIDSystemInfo
+%D << /Registry (Adobe)
+%D /Ordering (T1UV)
+%D /Supplement 0
+%D >> def
+%D /CMapName /Adobe-Identity-UCS def
+%D /CMapType 1 def
+%D 1 begincodespacerange
+%D <00> <FF>
+%D endcodespacerange
+%D %%FontSpecificEncoding
+%D 191 beginbfrange
+%D <20> <20> <0020> % space dec: 32 oct:040 hex:20
+%D .... .... ...... . ........ .... .. ....... ......
+%D <ff> <ff> <00ff> % dotaccent dec:255 oct:377 hex:ff
+%D endbfrange
+%D endcmap
+%D CMapName currentdict /CMap defineresource pop end
+%D end
+%D \stoppdffontresource
+%D \stoptyping
+%D
+%D We don't preload such huge definitions, and process them
+%D run||time to save memory. Therefore, in the encoding
+%D vector, we only add an entry like:
+%D
+%D \starttyping
+%D \startencoding [il2]
+%D \usepdffontresource il2
+%D \stopencoding
+%D \stoptyping
+%D
+%D This macro is defined as follows.
+
+\def\usepdffontresource #1 %
+ {\doifundefinedelse\pdffontfileresource % okay, undefined, so either
+ {\setxvalue\pdffontfileresource{#1}} % brand new, or not yet loaded
+ {\doifvaluesomething\pdffontfileresource % only if not loaded in which
+ {\setxvalue\pdffontfileresource{#1}}}} % case it's made empty
+
+%D Watch how we check for duplicated loading. The resource
+%D itself, when asked for, is included immediately, after which
+%D we save its reference. Normally a document will have one
+%D such a resource.
+
+% \long\def\startpdffontresource[#1]#2\stoppdffontresource
+% {\doif{#1}\currentencoding
+% {\immediate\pdfobj useobjnum \getvalue{\pdffontresource} stream {#2}}}
+
+\long\def\startpdffontresource[#1]#2\stoppdffontresource
+ {\doif{#1}\currentencoding{\doifdefined\pdffontresource
+ {\immediate\pdfobj useobjnum \getvalue{\pdffontresource} stream {#2}}}}
+
+%D The reference to such a vector is to be handled at font
+%D definition time, which is why we hook it into the font
+%D loading routine. A little bit of indirectness speeds up
+%D the process when this feature is disabled and keeps the
+%D macros readable.
+
+% \newevery \everyfont \relax
+
+\appendtoksonce \includepdffontresource \to \everyfont
+
+\def\includepdffontresource
+ {\ifincludepdffontresources
+ \ifx\pdffontattr\undefined
+ % we're not using (a recent version of) pdftex
+ \else\ifcase\pdfoutput
+ % we're not in pdf mode
+ \else
+ \doincludepdffontresource
+ \fi\fi
+ \fi}
+
+\def\dododoincludepdffontresource#1% encoding
+ {\bgroup
+ \def\currentencoding{#1}%
+ \doifvaluesomething\pdffontfileresource
+ {\startreadingfile
+ \readsysfile{pdfr-\getvalue\pdffontfileresource}\donothing\donothing
+ \stopreadingfile
+ \letgvalue\pdffontfileresource\empty}%
+ \egroup}
+
+\beginETEX
+
+\def\doincludepdffontresource
+ {\ifcsname\s!ucmap\fontfile\endcsname\else
+ \dodoincludepdffontresource
+ \fi}
+
+\def\dodoincludepdffontresource
+ {% does this font has an encoding specified vector
+ \doifsomething\currentencoding % no \ifx
+ {% is there a pdf font encoding resource file defined
+ \ifcsname\pdffontresource\endcsname
+ % (fake) object defined
+ \else\ifcsname\pdffontfileresource\endcsname
+ % is there a resource already included
+ \doifsomething\pdffontfileresource
+ {\pdfobj reserveobjnum {}%
+ \setxvalue\pdffontresource{\the\pdflastobj}%
+ \doglobal\appendetoks
+ \noexpand\dododoincludepdffontresource{\currentencoding}%
+ \to \everybeforeshipout}% prevent multiple loading
+ \fi\fi
+ \ifcsname\pdffontresource\endcsname
+ \expanded{\pdffontattr\font{/ToUnicode \csname\pdffontresource\endcsname\space0 R}}%
+ % do it only once for each font
+ \letgvalue{\s!ucmap\fontfile}\empty
+ \fi}}
+
+\endETEX
+
+\beginTEX
+
+\def\doincludepdffontresource
+ {\expandafter\ifcsname\s!ucmap\fontfile\endcsname\relax
+ \dodoincludepdffontresource
+ \fi}
+
+\def\dodoincludepdffontresource
+ {\doifsomething\currentencoding % no \ifx
+ {\expandafter\ifx\csname\pdffontresource\endcsname\relax
+ \expandafter\ifx\csname\pdffontfileresource\endcsname\relax\else
+ \doifsomething\pdffontfileresource
+ {\pdfobj reserveobjnum {}%
+ \setxvalue\pdffontresource{\the\pdflastobj}%
+ \doglobal\appendetoks
+ \noexpand\dododoincludepdffontresource{\currentencoding}%
+ \to \everybeforeshipout}% prevent multiple loading
+ \fi
+ \fi
+ \expandafter\ifx\csname\pdffontresource\endcsname\relax\else
+ \expanded{\pdffontattr\font{/ToUnicode \csname\pdffontresource\endcsname\space0 R}}%
+ % do it only once for each font
+ \letgvalue{\s!ucmap\fontfile}\empty
+ \fi}}
+
+\endTEX
+
+%D For the moment, we keep this definition here, if only
+%D because \type {\usepdffontencoding} is not defined in the
+%D core. In the end, this will go to \type {enco-*.tex}.
+%D
+%D Test:
+%D
+%D \starttyping
+%D \useencoding[pfr] \usetypescript[palatino][ec] \setupbodyfont[palatino]
+%D
+%D \starttext
+%D fi ff ffi
+%D \stoptext
+%D \stoptyping
+
+\startencoding [il2] \usepdffontresource il2 \stopencoding
+\startencoding [ec] \usepdffontresource ec \stopencoding
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-pol.tex b/Master/texmf-dist/tex/context/base/enco-pol.tex
new file mode 100644
index 00000000000..d9f49a2dc6b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-pol.tex
@@ -0,0 +1,274 @@
+%D \module
+%D [ file=enco-pol,
+%D version=2000.05.07, % 1999.28.8,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Polish Mixed Encoding,
+%D author={Taco Hoekwater \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This encoding will go but the regime will remain.
+
+%D Polish native encoding; normally polish users will use
+%D translate=cp1250pl in combination with ec encoding.
+
+\startmapping[pl0]
+
+\resetcaserange 128 to 255
+
+\definecaseswap 161 129 % a ogonek
+\definecaseswap 162 130 % c acute
+\definecaseswap 166 134 % e ogonek
+\definecaseswap 170 138 % l crossed
+\definecaseswap 171 139 % n acute
+\definecaseswap 177 145 % s acute
+\definecaseswap 185 153 % z acute
+\definecaseswap 187 155 % z dotaccent
+\definecaseswap 243 211 % o acute
+
+% \definecasemap 161 161 129 % a ogonek
+% \definecasemap 162 162 130 % c acute
+% \definecasemap 166 166 134 % e ogonek
+% \definecasemap 170 170 138 % l crossed
+% \definecasemap 171 171 139 % n acute
+% \definecasemap 177 177 145 % s acute
+% \definecasemap 185 185 153 % z acute
+% \definecasemap 187 187 155 % z dotaccent
+% \definecasemap 243 243 211 % o acute
+
+% \definecasemap 129 161 129 % A ogonek
+% \definecasemap 130 162 130 % C acute
+% \definecasemap 134 166 134 % E ogonek
+% \definecasemap 138 170 138 % L crossed
+% \definecasemap 139 171 139 % N acute
+% \definecasemap 145 177 145 % S acute
+% \definecasemap 153 185 153 % Z acute
+% \definecasemap 155 187 155 % Z dotaccent
+% \definecasemap 211 243 211 % O acute
+
+\stopmapping
+
+\startmapping[pl0]
+
+\definespacemap 129 999 % A ogonek
+\definespacemap 130 999 % C acute
+\definespacemap 134 999 % E ogonek
+\definespacemap 138 999 % L crossed
+\definespacemap 139 999 % N acute
+\definespacemap 211 999 % O acute
+\definespacemap 145 999 % S acute
+\definespacemap 153 999 % Z acute
+\definespacemap 155 999 % Z dot
+
+\stopmapping
+
+\startencoding[pl0][pl0]
+
+\definecharacter Aogonek 129
+\definecharacter Cacute 130
+\definecharacter Eogonek 134
+\definecharacter Lstroke 138
+\definecharacter Nacute 139
+\definecharacter Sacute 145
+\definecharacter Zacute 153
+\definecharacter Zdotaccent 155
+\definecharacter aogonek 161
+\definecharacter cacute 162
+\definecharacter eogonek 166
+\definecharacter lstroke 170
+\definecharacter nacute 171
+\definecharacter sacute 177
+\definecharacter zacute 185
+\definecharacter zdotaccent 187
+\definecharacter Oacute 211
+\definecharacter oacute 243
+
+\stopencoding
+
+\startencoding[pl0][pl0]
+
+\definecharacter leftguillemot 174
+\definecharacter rightguillemot 175
+\definecharacter guilsingleleft 174
+\definecharacter guilsingleright 175
+
+\stopencoding
+
+\startencoding[pl0]
+
+\definesortkey {161} {a}{a}{\k a} \definesortkey {129} {a}{a}{\k a}
+\definesortkey {162} {c}{a}{\'c} \definesortkey {130} {c}{a}{\'c}
+\definesortkey {166} {e}{a}{\k e} \definesortkey {134} {e}{a}{\k e}
+\definesortkey {170} {l}{a}{\l } \definesortkey {138} {l}{a}{\l }
+\definesortkey {171} {n}{a}{\'n} \definesortkey {139} {n}{a}{\'n}
+\definesortkey {177} {s}{a}{\'s} \definesortkey {145} {s}{a}{\'s}
+\definesortkey {185} {z}{a}{\'z} \definesortkey {153} {z}{a}{\'z}
+\definesortkey {187} {z}{b}{\.z} \definesortkey {155} {z}{b}{\.z}
+\definesortkey {243} {o}{a}{\'o} \definesortkey {211} {o}{a}{\'o}
+
+\definesortkey {\'c} {c}{a}{\'c} \definesortkey {\'C} {c}{a}{\'c}
+\definesortkey {\'n} {n}{a}{\'n} \definesortkey {\'N} {n}{a}{\'n}
+\definesortkey {\'o} {o}{a}{\'o} \definesortkey {\'O} {o}{a}{\'o}
+\definesortkey {\'s} {s}{a}{\'s} \definesortkey {\'S} {s}{a}{\'s}
+\definesortkey {\'z} {z}{a}{\'z} \definesortkey {\'Z} {z}{a}{\'z}
+\definesortkey {\.z} {z}{b}{\.z} \definesortkey {\.Z} {z}{b}{\.z}
+\definesortkey {\k a}{a}{a}{\k a} \definesortkey {\k A}{a}{a}{\k a}
+\definesortkey {\k e}{e}{a}{\k e} \definesortkey {\k E}{e}{a}{\k e}
+\definesortkey {\l } {l}{a}{\l} \definesortkey {\L } {l}{a}{\l}
+
+\stopencoding
+
+%D Polish CP-1250 encoding.
+
+% \startmapping[pl1]
+%
+%
+% \resetcaserange 128 to 255
+%
+% \definecasemap 185 185 165 % a ogonek
+% \definecasemap 230 230 198 % c acute
+% \definecasemap 234 234 202 % e ogonek
+% \definecasemap 179 179 163 % l crossed
+% \definecasemap 241 241 209 % n acute
+% \definecasemap 243 243 211 % o acute
+% \definecasemap 156 156 140 % s acute
+% \definecasemap 159 159 143 % z acute
+% \definecasemap 191 191 175 % z dot
+%
+% \definecasemap 165 165 185 % A ogonek
+% \definecasemap 198 198 230 % C acute
+% \definecasemap 202 202 234 % E ogonek
+% \definecasemap 163 163 179 % L crossed
+% \definecasemap 209 209 241 % N acute
+% \definecasemap 211 211 243 % O acute
+% \definecasemap 140 140 156 % S acute
+% \definecasemap 143 143 159 % Z acute
+% \definecasemap 175 175 191 % Z dot
+%
+% \stopmapping
+%
+% \startmapping[pl1]
+%
+% \definespacemap 165 999 % A ogonek
+% \definespacemap 198 999 % C acute
+% \definespacemap 202 999 % E ogonek
+% \definespacemap 163 999 % L crossed
+% \definespacemap 209 999 % N acute
+% \definespacemap 211 999 % O acute
+% \definespacemap 140 999 % S acute
+% \definespacemap 143 999 % Z acute
+% \definespacemap 175 999 % Z dot
+%
+% \stopmapping
+%
+% \startencoding[pl1]
+%
+% \definecharacter Sacute 140
+% \definecharacter Zacute 143
+% \definecharacter sacute 156
+% \definecharacter zacute 159
+% \definecharacter Lstroke 163
+% \definecharacter Aogonek 165
+% \definecharacter Zdotaccent 175
+% \definecharacter lstroke 179
+% \definecharacter aogonek 185
+% \definecharacter zdotaccent 191
+% \definecharacter Cacute 198
+% \definecharacter Eogonek 202
+% \definecharacter Nacute 209
+% \definecharacter Oacute 211
+% \definecharacter cacute 230
+% \definecharacter eogonek 234
+% \definecharacter nacute 241
+% \definecharacter oacute 243
+%
+% \stopencoding
+%
+% \startencoding[pl1]
+%
+% \definecharacter leftguillemot 174
+% \definecharacter rightguillemot 175
+% \definecharacter guilsingleleft 174
+% \definecharacter guilsingleright 175
+%
+% \stopencoding
+
+%D Polish ISO-8859-2 encoding.
+
+% \startmapping[pl2]
+%
+% \resetcaserange 128 to 255
+%
+% \definecasemap 177 177 161 % a ogonek
+% \definecasemap 230 230 198 % c acute
+% \definecasemap 234 234 202 % e ogonek
+% \definecasemap 179 179 163 % l crossed
+% \definecasemap 241 241 209 % n acute
+% \definecasemap 243 243 211 % o acute
+% \definecasemap 182 182 166 % s acute
+% \definecasemap 188 188 172 % z acute
+% \definecasemap 191 191 175 % z dotaccent
+%
+% \definecasemap 161 161 177 % A ogonek
+% \definecasemap 198 198 230 % C acute
+% \definecasemap 202 202 234 % E ogonek
+% \definecasemap 163 163 179 % L crossed
+% \definecasemap 209 209 241 % N acute
+% \definecasemap 211 211 243 % O acute
+% \definecasemap 166 166 182 % S acute
+% \definecasemap 172 172 188 % Z acute
+% \definecasemap 175 175 191 % Z dotaccent
+%
+% \stopmapping
+%
+% \startmapping[pl2]
+%
+% \definespacemap 161 999 % A ogonek
+% \definespacemap 198 999 % C acute
+% \definespacemap 202 999 % E ogonek
+% \definespacemap 163 999 % L crossed
+% \definespacemap 209 999 % N acute
+% \definespacemap 211 999 % O acute
+% \definespacemap 166 999 % S acute
+% \definespacemap 172 999 % Z acute
+% \definespacemap 175 999 % Z dot
+%
+% \stopmapping
+%
+% \startencoding[pl2]
+%
+% \definecharacter Aogonek 161
+% \definecharacter Lstroke 163
+% \definecharacter Sacute 166
+% \definecharacter Zacute 172
+% \definecharacter Zdotaccent 175
+% \definecharacter aogonek 177
+% \definecharacter lstroke 179
+% \definecharacter sacute 182
+% \definecharacter zacute 188
+% \definecharacter zdotaccent 191
+% \definecharacter Cacute 198
+% \definecharacter Eogonek 202
+% \definecharacter Nacute 209
+% \definecharacter Oacute 211
+% \definecharacter cacute 230
+% \definecharacter eogonek 234
+% \definecharacter nacute 241
+% \definecharacter oacute 243
+%
+% \stopencoding
+%
+% \startencoding[pl2]
+%
+% \definecharacter leftguillemot 174
+% \definecharacter rightguillemot 175
+% \definecharacter guilsingleleft 174
+% \definecharacter guilsingleright 175
+%
+% \stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-qx.tex b/Master/texmf-dist/tex/context/base/enco-qx.tex
new file mode 100644
index 00000000000..407d60bd736
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-qx.tex
@@ -0,0 +1,266 @@
+%D \module
+%D [ file=enco-qx,
+%D version=2004.04.03,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Polish QX Encoding,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% to be done
+
+% 35 numbersign
+% 95 dotaccent
+% 132 greaterequal
+% 133 approxequal
+% 137 lessequal
+% 142 ell
+% 156 IJ
+% 173 infinity
+% 182 threequartersemdash
+% 188 ij
+% 247 anglearc
+% 248 diameter
+
+\startmapping[qx] % to be done
+
+\resetcaserange 128 to 128
+\resetcaserange 131 to 133
+\resetcaserange 136 to 137
+\resetcaserange 140 to 144
+\resetcaserange 148 to 148
+\resetcaserange 150 to 150
+\resetcaserange 157 to 160
+\resetcaserange 163 to 165
+\resetcaserange 168 to 169
+\resetcaserange 172 to 176
+\resetcaserange 180 to 180
+\resetcaserange 182 to 182
+\resetcaserange 189 to 191
+\resetcaserange 198 to 198
+\resetcaserange 215 to 216
+\resetcaserange 223 to 223
+\resetcaserange 230 to 230
+\resetcaserange 247 to 248
+\resetcaserange 255 to 255
+
+\definecaseswap 161 129
+\definecaseswap 162 130
+
+\definecaseswap 166 134
+\definecaseswap 167 135
+
+\definecaseswap 170 138
+\definecaseswap 171 139
+
+\definecaseswap 177 145
+\definecaseswap 178 146
+\definecaseswap 179 147
+
+\definecaseswap 181 149
+
+\definecasemaps 151 to 156 lc +32 uc 0
+\definecasemaps 183 to 188 lc 0 uc -32
+
+\definecasemaps 192 to 197 lc +32 uc 0
+\definecasemaps 224 to 229 lc 0 uc -32
+
+\definecasemaps 199 to 214 lc +32 uc 0
+\definecasemaps 231 to 246 lc 0 uc -32
+
+\definecasemaps 217 to 222 lc +32 uc 0
+\definecasemaps 249 to 254 lc 0 uc -32
+
+\stopmapping
+
+\startencoding[qx]
+
+\definecharacter textacute 19
+\definecharacter textbreve 21
+\definecharacter textcaron 20
+\definecharacter textcedilla 24
+\definecharacter textcircumflex 94
+\definecharacter textdiaeresis 127
+\definecharacter textdotaccent 94
+\definecharacter textgrave 18
+\definecharacter texthungarumlaut 125
+\definecharacter textmacron 22
+\definecharacter textogonek 150
+\definecharacter textring 23
+\definecharacter texttilde 126
+
+\definecharacter dotlessi 16
+\definecharacter dotlessj 17
+
+\definecharacter endash 123
+\definecharacter emdash 124
+
+\definecharacter aeligature 26
+\definecharacter AEligature 29
+\definecharacter oeligature 27
+\definecharacter OEligature 30
+
+\definecharacter ssharp 25
+%definecharacter Ssharp 25
+
+\definecharacter thorn 254
+\definecharacter Thorn 222
+
+\definecharacter Dstroke 208 % also Eth, mapped into enco-def
+\definecharacter eth 240
+
+\definecharacter exclamdown 60
+\definecharacter questiondown 62
+
+\definecharacter sectionmark 159
+
+\definecharacter percent 37
+\definecharacter perthousand 216
+
+\definecharacter textasciicircum 141
+\definecharacter textasciitilde 140
+\definecharacter textbackslash 198
+\definecharacter textbraceleft 157
+\definecharacter textbraceright 158
+\definecharacter textunderscore 230
+
+\definecharacter textcurrency 215
+\definecharacter textdollar 36
+\definecharacter texteuro 128
+
+\definecharacter periodcentered 189
+\definecharacter textdag 143
+\definecharacter textddag 144
+\definecharacter textdegree 148
+\definecharacter textbullet 180
+
+\definecharacter paragraphmark 176
+
+\definecharacter copyright 164
+\definecharacter registered 163
+
+\definecharacter textbrokenbar 223
+\definecharacter textellipsis 8
+\definecharacter textslash 47
+\definecharacter textpm 172
+\definecharacter textdiv 165
+\definecharacter textminus 168
+\definecharacter textmultiply 169
+\definecharacter textmu 7
+
+\definecharacter quotedbl 190
+\definecharacter quotedblbase 255
+\definecharacter quotedblleft 92
+\definecharacter quotedblright 34
+
+\definecharacter quotesingle 191
+
+\definecharacter quoteleft 96
+\definecharacter quoteright 39
+
+\definecharacter leftguillemot 174
+\definecharacter rightguillemot 175
+
+\definecharacter aacute 225
+\definecharacter Aacute 193
+\definecharacter cacute 162
+\definecharacter Cacute 130
+\definecharacter eacute 233
+\definecharacter Eacute 201
+\definecharacter iacute 237
+\definecharacter Iacute 205
+\definecharacter Nacute 139
+\definecharacter Oacute 211
+\definecharacter nacute 171
+\definecharacter oacute 243
+\definecharacter sacute 177
+\definecharacter Sacute 145
+\definecharacter uacute 250
+\definecharacter Uacute 218
+\definecharacter yacute 253
+\definecharacter Yacute 221
+\definecharacter zacute 185
+\definecharacter Zacute 153
+
+\definecharacter scaron 178
+\definecharacter Scaron 146
+\definecharacter zcaron 186
+\definecharacter Zcaron 154
+
+\definecharacter ccedilla 231
+\definecharacter Ccedilla 199
+
+\definecharacter acircumflex 226
+\definecharacter Acircumflex 194
+\definecharacter ecircumflex 234
+\definecharacter Ecircumflex 202
+\definecharacter icircumflex 238
+\definecharacter Icircumflex 206
+\definecharacter ocircumflex 244
+\definecharacter Ocircumflex 212
+\definecharacter ucircumflex 251
+\definecharacter Ucircumflex 219
+
+\definecharacter adiaeresis 228
+\definecharacter Adiaeresis 196
+\definecharacter ediaeresis 235
+\definecharacter Ediaeresis 203
+\definecharacter idiaeresis 239
+\definecharacter Idiaeresis 207
+\definecharacter odiaeresis 246
+\definecharacter Odiaeresis 214
+\definecharacter udiaeresis 252
+\definecharacter Udiaeresis 220
+\definecharacter ydiaeresis 184
+\definecharacter Ydiaeresis 152
+
+\definecharacter zdotaccent 187
+\definecharacter Zdotaccent 155
+
+\definecharacter agrave 224
+\definecharacter Agrave 192
+\definecharacter egrave 232
+\definecharacter Egrave 200
+\definecharacter igrave 236
+\definecharacter Igrave 204
+\definecharacter ograve 242
+\definecharacter Ograve 210
+\definecharacter ugrave 249
+\definecharacter Ugrave 217
+
+\definecharacter aogonek 161
+\definecharacter Aogonek 129
+\definecharacter eogonek 166
+\definecharacter Eogonek 134
+\definecharacter iogonek 167
+\definecharacter Iogonek 135
+\definecharacter uogonek 183
+\definecharacter Uogonek 151
+
+\definecharacter aring 229
+\definecharacter Aring 197
+
+\definecharacter lstroke 170
+\definecharacter Lstroke 138
+\definecharacter ostroke 28
+\definecharacter Ostroke 31
+
+\definecharacter atilde 227
+\definecharacter Atilde 195
+\definecharacter ntilde 241
+\definecharacter Ntilde 209
+\definecharacter otilde 245
+\definecharacter Otilde 213
+
+\definecharacter scommaaccent 179
+\definecharacter Scommaaccent 147
+\definecharacter tcommaaccent 181
+\definecharacter Tcommaaccent 149
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-raw.tex b/Master/texmf-dist/tex/context/base/enco-raw.tex
new file mode 100644
index 00000000000..02278e708e9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-raw.tex
@@ -0,0 +1,118 @@
+% default instelbaar maken: \enableencoding[main][fallback]
+
+\startencoding[raw]
+
+\definecharacter Acircumflex {A} \definecharacter acircumflex {a}
+\definecharacter Ccircumflex {C} \definecharacter ccircumflex {c}
+\definecharacter Ecircumflex {E} \definecharacter ecircumflex {e}
+\definecharacter Gcircumflex {G} \definecharacter gcircumflex {g}
+\definecharacter Hcircumflex {H} \definecharacter hcircumflex {h}
+\definecharacter Icircumflex {I} \definecharacter icircumflex {i}
+\definecharacter Jcircumflex {J} \definecharacter jcircumflex {j}
+\definecharacter Ocircumflex {O} \definecharacter ocircumflex {o}
+\definecharacter Scircumflex {S} \definecharacter scircumflex {s}
+\definecharacter Ucircumflex {U} \definecharacter ucircumflex {u}
+\definecharacter Wcircumflex {W} \definecharacter wcircumflex {w}
+\definecharacter Ycircumflex {Y} \definecharacter ycircumflex {y}
+
+\definecharacter Agrave {A} \definecharacter agrave {a}
+\definecharacter Egrave {E} \definecharacter egrave {e}
+\definecharacter Igrave {I} \definecharacter igrave {i}
+\definecharacter Ograve {O} \definecharacter ograve {o}
+\definecharacter Ugrave {U} \definecharacter ugrave {u}
+\definecharacter Ygrave {Y} \definecharacter ygrave {y}
+
+\definecharacter Atilde {A} \definecharacter atilde {a}
+\definecharacter Itilde {I} \definecharacter itilde {i}
+\definecharacter Otilde {O} \definecharacter otilde {o}
+\definecharacter Utilde {U} \definecharacter utilde {u}
+
+\definecharacter Adiaeresis {A} \definecharacter adiaeresis {a}
+\definecharacter Ediaeresis {E} \definecharacter ediaeresis {e}
+\definecharacter Idiaeresis {I} \definecharacter idiaeresis {i}
+\definecharacter Odiaeresis {O} \definecharacter odiaeresis {o}
+\definecharacter Udiaeresis {U} \definecharacter udiaeresis {u}
+\definecharacter Ydiaeresis {Y} \definecharacter ydiaeresis {y}
+
+\definecharacter Aacute {A} \definecharacter aacute {a}
+\definecharacter Cacute {C} \definecharacter cacute {c}
+\definecharacter Eacute {E} \definecharacter eacute {e}
+\definecharacter Iacute {I} \definecharacter iacute {i}
+\definecharacter Lacute {L} \definecharacter lacute {l}
+\definecharacter Nacute {N} \definecharacter nacute {n}
+\definecharacter Oacute {O} \definecharacter oacute {o}
+\definecharacter Racute {R} \definecharacter racute {r}
+\definecharacter Sacute {S} \definecharacter sacute {s}
+\definecharacter Uacute {U} \definecharacter uacute {u}
+\definecharacter Yacute {Y} \definecharacter yacute {y}
+\definecharacter Zacute {Z} \definecharacter zacute {z}
+
+\definecharacter Dstroke {D} \definecharacter dstroke {d}
+\definecharacter Hstroke {H} \definecharacter hstroke {h}
+\definecharacter Tstroke {T} \definecharacter tstroke {t}
+
+\definecharacter Cdotaccent {C} \definecharacter cdotaccent {c}
+\definecharacter Edotaccent {E} \definecharacter edotaccent {e}
+\definecharacter Gdotaccent {G} \definecharacter gdotaccent {g}
+\definecharacter Idotaccent {I} \definecharacter idotaccent {i}
+\definecharacter Zdotaccent {Z} \definecharacter zdotaccent {z}
+
+\definecharacter Amacron {A} \definecharacter amacron {a}
+\definecharacter Emacron {E} \definecharacter emacron {e}
+\definecharacter Imacron {I} \definecharacter imacron {i}
+\definecharacter Omacron {O} \definecharacter omacron {o}
+\definecharacter Umacron {U} \definecharacter umacron {u}
+
+\definecharacter Ccedilla {C} \definecharacter ccedilla {c}
+\definecharacter Kcedilla {K} \definecharacter kcedilla {k}
+\definecharacter Lcedilla {L} \definecharacter lcedilla {l}
+\definecharacter Ncedilla {N} \definecharacter ncedilla {n}
+\definecharacter Rcedilla {R} \definecharacter rcedilla {r}
+\definecharacter Scedilla {S} \definecharacter scedilla {s}
+\definecharacter Tcedilla {T} \definecharacter tcedilla {t}
+
+\definecharacter Ohungarumlaut {O} \definecharacter ohungarumlaut {o}
+\definecharacter Uhungarumlaut {U} \definecharacter uhungarumlaut {u}
+
+\definecharacter Aogonek {A} \definecharacter aogonek {a}
+\definecharacter Eogonek {E} \definecharacter eogonek {e}
+\definecharacter Iogonek {I} \definecharacter iogonek {i}
+\definecharacter Uogonek {U} \definecharacter uogonek {u}
+
+\definecharacter Aring {A} \definecharacter aring {a}
+\definecharacter Uring {U} \definecharacter uring {u}
+
+\definecharacter Abreve {A} \definecharacter abreve {a}
+\definecharacter Ebreve {E} \definecharacter ebreve {e}
+\definecharacter Gbreve {G} \definecharacter gbreve {g}
+\definecharacter Ibreve {I} \definecharacter ibreve {i}
+\definecharacter Obreve {O} \definecharacter obreve {o}
+\definecharacter Ubreve {U} \definecharacter ubreve {u}
+
+\definecharacter Ccaron {C} \definecharacter ccaron {c}
+\definecharacter Dcaron {D} \definecharacter dcaron {d}
+\definecharacter Ecaron {E} \definecharacter ecaron {e}
+\definecharacter Lcaron {L} \definecharacter lcaron {l}
+\definecharacter Ncaron {N} \definecharacter ncaron {n}
+\definecharacter Rcaron {R} \definecharacter rcaron {r}
+\definecharacter Scaron {S} \definecharacter scaron {s}
+\definecharacter Tcaron {T} \definecharacter tcaron {t}
+\definecharacter Zcaron {Z} \definecharacter zcaron {z}
+
+\definecharacter dotlessI {I} \definecharacter dotlessi {i}
+\definecharacter dotlessJ {J} \definecharacter dotlessj {j}
+
+\definecharacter AEligature {AE} \definecharacter aeligature {ae}
+\definecharacter Lstroke {L} \definecharacter lstroke {l}
+\definecharacter Ostroke {O} \definecharacter ostroke {o}
+\definecharacter OEligature {OE} \definecharacter oeligature {oe}
+\definecharacter Ssharp {SS} \definecharacter ssharp {ss}
+\definecharacter IJligature {IJ} \definecharacter ijligature {ij}
+
+\definecharacter Aumlaut {A} \definecharacter aumlaut {a}
+\definecharacter Eumlaut {E} \definecharacter eumlaut {e}
+\definecharacter Iumlaut {I} \definecharacter iumlaut {i}
+\definecharacter Oumlaut {O} \definecharacter oumlaut {o}
+\definecharacter Uumlaut {U} \definecharacter uumlaut {u}
+
+\stopencoding
diff --git a/Master/texmf-dist/tex/context/base/enco-run.tex b/Master/texmf-dist/tex/context/base/enco-run.tex
new file mode 100644
index 00000000000..8622a238802
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-run.tex
@@ -0,0 +1,149 @@
+%D \module
+%D [ file=enco-run,
+%D version=2000.27.12, % moved to runtime module
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen \& Ton Otten]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\gdef\visualizecharacters% {}'s needed
+ {\def\uchar##1##2{\hbox to 2.5em
+ {\ifcase##1\relax\red\or\blue\else\green\fi##1\hss##2}}%
+ \let\normalbuildtextaccent\buildtextaccent
+ \let\normalbottomaccent \bottomaccent
+ %\def\char{\green\normalchar}%
+ \def\char % can be used in \oalign
+ {\bgroup\def\char{\green\normalchar\scratchcounter\egroup}%
+ \afterassignment\char\scratchcounter}%
+ \def\buildtextaccent{\let\green\empty\blue\normalbuildtextaccent}%
+ \def\bottomaccent{\let\green\empty\red\normalbottomaccent}}
+
+\unexpanded\gdef\visualizecharacterslegend
+ {\hbox
+ {\edef\banner{\currentencoding\space\fontname\font}%
+ \tttf\banner:\space
+ {\blue composed}\space{\red bottom}\space{\green char}\space raw}}
+
+\gdef\showaccents
+ {\bgroup
+ \savefont
+ \setuptextrules[\c!bodyfont=,\c!style=]
+ \starttextrule{\visualizecharacterslegend}
+ \whitespace
+ \restorefont\setupinterlinespace
+ \visualizecharacters
+ \def\do##1%
+ {{\def\dodo####1%
+ {\hss\hbox to 1em{\hss\expanded{##1####1\recurselevel}\hss}}%
+ \hbox to \hsize
+ {\strut
+ \localcolortrue
+ \hbox to 2em{\tttf\string##1\hss}%
+ \dorecurse{26}{\dodo\character}}%
+ \hbox to \hsize
+ {\strut
+ \localcolortrue
+ \hskip2em
+ \dorecurse{26}{\dodo\Character}}}%
+ \par}
+ \do\'\do\`\do\^\do\~\do\"
+ \do\H\do\r\do\v\do\u\do\=
+ \do\.\do\b\do\d\do\k\do\c
+ \stoptextrule
+ \egroup}
+
+\gdef\showcharacters
+ {\bgroup
+ \savefont
+ \setuptextrules[\c!bodyfont=,\c!style=]
+ \starttextrule{\visualizecharacterslegend}
+ \whitespace
+ \dontcomplain
+ \forgetall
+ \def\startencoding[##1]{}
+ \def\stopencoding{\endinput}
+ \dimen0=\zeropoint
+ \dimen2=\zeropoint
+ \def\definecharacter ##1 ##2 %
+ {\setbox0=\hbox spread 1em{\getvalue{##1}}%
+ \ifdim\wd0>\dimen0 \dimen0=\wd0 \fi
+ \setbox2=\hbox spread 1em{\box0 \tttf##1}
+ \ifdim\wd2>\dimen2 \dimen2=\wd2 \fi}%
+ \readsysfile{\f!encodingprefix def}{}{}
+ \edef\encwidth{\the\dimen0}
+ \dimen0=\hsize
+ \advance\dimen0 2em
+ \advance\dimen2 2em
+ \divide \dimen0 by \dimen2 \advance\dimen0 1sp
+ \edef\enccols{\number\dimen0}
+ \visualizecharacters
+ \startcolumns[\c!n=\enccols,\c!distance=2em]
+ \restorefont\setupinterlinespace
+ \def\definecharacter ##1 ##2 %
+ {\setbox0=\hbox to \hsize{\localcolortrue\hbox to \encwidth{\getvalue{##1}\hss}\tttf##1}%
+ \ht0\strutheight \dp0\strutdepth \box0 \allowbreak}
+ \readsysfile{\f!encodingprefix def}{}{}
+ \stopcolumns
+ \stoptextrule
+ \egroup}
+
+% \hbox
+% {\font\test=uplr8t \test \ruledhbox{t}
+% \font\test=uplr8r \test \ruledhbox{t}}
+
+\beginETEX \fontcharwd
+
+\gdef\showcharacterbounds
+ {\bgroup
+ \localcolortrue
+ \dorecurse{255}
+ {\ifnum\fontcharwd\font\recurselevel>\zeropoint
+ \noindent\ruledhbox{\darkgray\char\recurselevel}\space
+ \fi}\unskip
+ \egroup}
+
+\endETEX
+
+\beginTEX
+
+\gdef\showcharacterbounds
+ {\bgroup
+ \localcolortrue
+ \dorecurse{255}
+ {\setbox\scratchbox\ruledhbox{\darkgray\char\recurselevel}%
+ \ifnum\wd\scratchbox>\zeropoint
+ \noindent\box\scratchbox\space
+ \fi}\unskip
+ \egroup}
+
+\endTEX
+
+\gdef\showhyphenations#1%
+ {\starttabulate[|le|l|]
+ \NC language \NC \currentlanguage (code:\the\normallanguage) \NC \NR
+ \NC font \NC \fontname\font \NC \NR
+ \NC encoding \NC \currentencoding \NC \NR
+ \NC mapping \NC \currentencoding \NC \NR
+ \NC sample \NC \hyphenatedword{#1} \NC \NR
+ \stoptabulate}
+
+\gdef\showmapping
+ {\dostepwiserecurse{128}{255}{1}
+ {\hbox\bgroup
+ \hbox to 2em{\hss\recurselevel}%
+ \hbox to 2em{\hss\char\recurselevel\hss}%
+ \hbox to 3em{\hss\ifcase\lccode\recurselevel\else\the \lccode\recurselevel\fi}%
+ \hbox to 2em{\hss\ifcase\lccode\recurselevel\else\char\lccode\recurselevel\fi\hss}%
+ \hbox to 3em{\hss\ifcase\lccode\recurselevel\else\the \uccode\recurselevel\fi}%
+ \hbox to 2em{\hss\ifcase\uccode\recurselevel\else\char\uccode\recurselevel\fi\hss}%
+ \egroup
+ \endgraf}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-t5.tex b/Master/texmf-dist/tex/context/base/enco-t5.tex
new file mode 100644
index 00000000000..ee9fa4856a6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-t5.tex
@@ -0,0 +1,244 @@
+%D \module
+%D [ file=enco-t5,
+%D version=2004.11.16,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=New Vietnamese Encoding,
+%D author=Hans Hagen \& Adam Lindsay,
+%D date=\currentdate,
+%D copyright=PRAGMA \& Adam Lindsay]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is derived from the enco-x5 encoding, but now
+%D approaches the world with named glyphs.
+
+\startencoding[t5]
+
+\definecasemaps 128 to 159 lc +32 uc 0
+
+\definecasemaps 160 to 191 lc 0 uc -32
+
+\definecasemaps 192 to 223 lc +32 uc 0
+
+\definecasemaps 224 to 225 lc 0 uc -32
+
+\definecasemap 26 26 27 \definecasemap 27 26 27
+\definecasemap 28 28 29 \definecasemap 29 28 29
+\definecasemap 30 30 31 \definecasemap 31 30 31
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter textbottomdot 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter texthookabove 12
+\definecharacter textogonek {}
+
+\definecharacter quotesinglebase 13
+\definecharacter guilsingleleft 14
+\definecharacter guilsingleright 15
+\definecharacter quotedblleft 16
+\definecharacter quotedblright 17
+\definecharacter quotedblbase 18
+\definecharacter leftguillemot 19
+\definecharacter rightguillemot 20
+\definecharacter endash 21
+\definecharacter emdash 22
+
+\definecharacter cwm 23
+\definecharacter zeroinferior 24
+\definecharacter Yhook 26
+\definecharacter yhook 27
+\definecharacter Ydotbelow 28
+\definecharacter ydotbelow 29
+\definecharacter Dstroke 30
+\definecharacter dstroke 31
+\definecharacter textvisiblespace 32
+
+\definecharacter dotlessi 25
+%definecharacter DJ 30
+%definecharacter dj 31
+\definecharacter Agrave 128
+\definecharacter Aacute 129
+\definecharacter Atilde 130
+\definecharacter Ahook 131
+\definecharacter Adotbelow 132
+\definecharacter Acircumflex 133
+\definecharacter Acircumflexgrave 134
+\definecharacter Acircumflexacute 135
+\definecharacter Acircumflextilde 136
+\definecharacter Acircumflexhook 137
+\definecharacter Acircumflexdotbelow 138
+\definecharacter Abreve 139
+\definecharacter Abrevegrave 140
+\definecharacter Abreveacute 141
+\definecharacter Abrevetilde 142
+\definecharacter Abrevehook 143
+\definecharacter Abrevedotbelow 144
+\definecharacter Egrave 145
+\definecharacter Eacute 146
+\definecharacter Etilde 147
+\definecharacter Ehook 148
+\definecharacter Edotbelow 149
+\definecharacter Ecircumflex 150
+\definecharacter Ecircumflexgrave 151
+\definecharacter Ecircumflexacute 152
+\definecharacter Ecircumflextilde 153
+\definecharacter Ecircumflexhook 154
+\definecharacter Ecircumflexdotbelow 155
+\definecharacter Igrave 156
+\definecharacter Iacute 157
+\definecharacter Itilde 158
+\definecharacter Ihook 159
+\definecharacter agrave 160
+\definecharacter aacute 161
+\definecharacter atilde 162
+\definecharacter ahook 163
+\definecharacter adotbelow 164
+\definecharacter acircumflex 165
+\definecharacter acircumflexgrave 166
+\definecharacter acircumflexacute 167
+\definecharacter acircumflextilde 168
+\definecharacter acircumflexhook 169
+\definecharacter acircumflexdotbelow 170
+\definecharacter abreve 171
+\definecharacter abrevegrave 172
+\definecharacter abreveacute 173
+\definecharacter abrevetilde 174
+\definecharacter abrevehook 175
+\definecharacter abrevedotbelow 176
+\definecharacter egrave 177
+\definecharacter eacute 178
+\definecharacter etilde 179
+\definecharacter ehook 180
+\definecharacter edotbelow 181
+\definecharacter ecircumflex 182
+\definecharacter ecircumflexgrave 183
+\definecharacter ecircumflexacute 184
+\definecharacter ecircumflextilde 185
+\definecharacter ecircumflexhook 186
+\definecharacter ecircumflexdotbelow 187
+\definecharacter igrave 188
+\definecharacter iacute 189
+\definecharacter itilde 190
+\definecharacter ihook 191
+\definecharacter Idotbelow 192
+\definecharacter Ograve 193
+\definecharacter Oacute 194
+\definecharacter Otilde 195
+\definecharacter Ohook 196
+\definecharacter Odotbelow 197
+\definecharacter Ocircumflex 198
+\definecharacter Ocircumflexgrave 199
+\definecharacter Ocircumflexacute 200
+\definecharacter Ocircumflextilde 201
+\definecharacter Ocircumflexhook 202
+\definecharacter Ocircumflexdotbelow 203
+\definecharacter Ohorn 204
+\definecharacter Ohorngrave 205
+\definecharacter Ohornacute 206
+\definecharacter Ohorntilde 207
+\definecharacter Ohornhook 208
+\definecharacter Ohorndotbelow 209
+\definecharacter Ugrave 210
+\definecharacter Uacute 211
+\definecharacter Utilde 212
+\definecharacter Uhook 213
+\definecharacter Udotbelow 214
+\definecharacter Uhorn 215
+\definecharacter Uhorngrave 216
+\definecharacter Uhornacute 217
+\definecharacter Uhorntilde 218
+\definecharacter Uhornhook 219
+\definecharacter Uhorndotbelow 220
+\definecharacter Ytilde 223
+\definecharacter idotbelow 224
+\definecharacter ograve 225
+\definecharacter oacute 226
+\definecharacter otilde 227
+\definecharacter ohook 228
+\definecharacter odotbelow 229
+\definecharacter ocircumflex 230
+\definecharacter ocircumflexgrave 231
+\definecharacter ocircumflexacute 232
+\definecharacter ocircumflextilde 233
+\definecharacter ocircumflexhook 234
+\definecharacter ocircumflexdotbelow 235
+\definecharacter ohorn 236
+\definecharacter ohorngrave 237
+\definecharacter ohornacute 238
+\definecharacter ohorntilde 239
+\definecharacter ohornhook 240
+\definecharacter ohorndotbelow 241
+\definecharacter ugrave 242
+\definecharacter uacute 243
+\definecharacter utilde 244
+\definecharacter uhook 245
+\definecharacter udotbelow 246
+\definecharacter uhorn 247
+\definecharacter uhorngrave 248
+\definecharacter uhornacute 249
+\definecharacter uhorntilde 250
+\definecharacter uhornhook 251
+\definecharacter uhorndotbelow 252
+\definecharacter ygrave 253
+\definecharacter yacute 254
+\definecharacter ytilde 255
+
+\stopencoding
+
+\endinput
+
+% \startencoding [x5]
+%
+% \definecharacter aa {\xfiveencodedaa}
+% \definecharacter AA {\xfiveencodedAA}
+%
+% \stopencoding
+%
+% \def\xfiveencodedaa%
+% {\accent23a}
+%
+% \def\xfiveencodedAA%
+% {\leavevmode
+% \setbox\z@\hbox{h}%
+% \dimen@\ht\z@
+% \advance\dimen@ -1ex
+% \rlap{\raise.67\dimen@\hbox{\char23}}A}
+
+% \quotesinglbase 13
+% \guilsinglleft 14
+% \guilsinglright 15
+% \textquotedblleft 16
+% \textquotedblright 17
+% \quotedblbase 18
+% \guillemotleft 19
+% \guillemotright 20
+% \textendash 21
+% \textemdash 22
+% \textcompwordmark 23
+% \textperthousand \% \char 24
+% \textpertenthousand \%\char 24\char 24
+% \textvisiblespace 32
+% \textquotedbl `\"
+% \textdollar `\$
+% \textquoteright `\'
+% \textless `\<
+% \textgreater `\>
+% \textbackslash `\
+% \textasciicircum `\^
+% \textunderscore 95
+% \textquoteleft `\`
+% \textbraceleft `\{
+% \textbar `\|
+% \textbraceright `\}
+% \textasciitilde `\~
diff --git a/Master/texmf-dist/tex/context/base/enco-tbo.tex b/Master/texmf-dist/tex/context/base/enco-tbo.tex
new file mode 100644
index 00000000000..475be4602f8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-tbo.tex
@@ -0,0 +1,222 @@
+%D \module
+%D [ file=enco-tbo,
+%D version=2000.05.07, % 2001.8.4,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=TeXBaseOne Encoding,
+%D author={Patrick Gundlach, Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startmapping[8r]
+
+\resetcaserange 128 to 255
+
+\definecasemap 228 228 196 \definecasemap 196 228 196
+\definecasemap 235 235 203 \definecasemap 203 235 203
+\definecasemap 239 239 207 \definecasemap 207 239 207
+\definecasemap 246 246 214 \definecasemap 214 246 214
+\definecasemap 252 252 220 \definecasemap 220 252 220
+\definecasemap 255 255 159 \definecasemap 159 255 159
+
+\definecasemap 225 225 193 \definecasemap 193 225 193
+\definecasemap 233 233 201 \definecasemap 201 233 201
+\definecasemap 237 237 205 \definecasemap 205 237 205
+\definecasemap 243 243 211 \definecasemap 211 243 211
+\definecasemap 250 250 218 \definecasemap 218 250 218
+\definecasemap 253 253 221 \definecasemap 221 253 221
+
+\definecasemap 224 224 192 \definecasemap 192 224 192
+\definecasemap 232 232 200 \definecasemap 200 232 200
+\definecasemap 236 236 204 \definecasemap 204 236 204
+\definecasemap 242 242 210 \definecasemap 210 242 210
+\definecasemap 249 249 217 \definecasemap 217 249 217
+
+\definecasemap 226 226 194 \definecasemap 194 226 194
+\definecasemap 234 234 202 \definecasemap 202 234 202
+\definecasemap 238 238 206 \definecasemap 206 238 206
+\definecasemap 244 244 212 \definecasemap 212 244 212
+\definecasemap 251 251 219 \definecasemap 219 251 219
+
+\definecasemap 227 227 195 \definecasemap 195 227 195
+\definecasemap 241 241 209 \definecasemap 209 241 209
+\definecasemap 245 245 213 \definecasemap 213 245 213
+
+\stopmapping
+
+\startencoding[8r]
+
+\definecharacter textacute 180
+\definecharacter textbreve 11
+\definecharacter textcaron 16
+\definecharacter textcedilla 184
+\definecharacter textcircumflex 136
+\definecharacter textdiaeresis 168
+\definecharacter textdotaccent 1
+\definecharacter textgrave 30
+\definecharacter texthungarumlaut 5
+\definecharacter textmacron 175
+\definecharacter textogonek 8
+\definecharacter textring 9
+\definecharacter texttilde 152
+
+\definecharacter dotlessi 17
+%definecharacter dotlessj 18
+
+\definecharacter endash 150
+\definecharacter emdash 151
+
+\definecharacter oeligature 156
+\definecharacter OEligature 140
+\definecharacter aeligature 230
+\definecharacter AEligature 198
+
+\definecharacter ssharp 223
+
+\definecharacter thorn 254
+\definecharacter Thorn 222
+
+\definecharacter exclamdown 161
+\definecharacter questiondown 191
+
+\definecharacter copyright 169
+\definecharacter registered 174
+\definecharacter trademark 153
+
+\definecharacter sectionmark 167
+\definecharacter paragraphmark 182
+
+\definecharacter onequarter 188
+\definecharacter onehalf 189
+\definecharacter threequarter 190
+\definecharacter onesuperior 185
+\definecharacter twosuperior 178
+\definecharacter threesuperior 179
+
+\definecharacter textcent 162
+\definecharacter textcurrency 164
+\definecharacter texteuro 128
+\definecharacter textflorin 131
+\definecharacter textsterling 163
+\definecharacter textyen 165
+
+\definecharacter percent 37
+\definecharacter perthousand 137
+
+\definecharacter periodcentered 183
+\definecharacter softhyphen 173
+
+\definecharacter textasciicircum 94
+\definecharacter textasciitilde 126
+\definecharacter textslash 47
+\definecharacter textbackslash 92
+\definecharacter textbraceleft 123
+\definecharacter textbraceright 125
+\definecharacter textunderscore 95
+
+\definecharacter textbrokenbar 166
+\definecharacter textbullet 149
+\definecharacter textdag 134
+\definecharacter textddag 135
+\definecharacter textdegree 176
+\definecharacter textdiv 247
+\definecharacter textellipsis 133
+\definecharacter textfraction 4
+\definecharacter textlognot 172
+\definecharacter textminus 12
+\definecharacter textmu 181
+\definecharacter textmultiply 215
+\definecharacter textpm 177
+
+\definecharacter quotedbl 34
+\definecharacter quotedblbase 132
+\definecharacter quotedblleft 147
+\definecharacter quotedblright 148
+
+\definecharacter quotesingle 31
+\definecharacter quotesinglebase 130
+
+\definecharacter quoteleft 96
+\definecharacter quoteright 39
+
+\definecharacter guilsingleleft 139
+\definecharacter guilsingleright 155
+\definecharacter leftguillemot 171
+\definecharacter rightguillemot 187
+
+\definecharacter aacute 225
+\definecharacter Aacute 193
+\definecharacter eacute 233
+\definecharacter Eacute 201
+\definecharacter iacute 237
+\definecharacter Iacute 205
+\definecharacter oacute 243
+\definecharacter Oacute 211
+\definecharacter uacute 250
+\definecharacter Uacute 218
+\definecharacter Yacute 221
+\definecharacter yacute 253
+
+\definecharacter scaron 154
+\definecharacter Scaron 138
+%definecharacter Zcaron 141
+
+\definecharacter ccedilla 231
+\definecharacter Ccedilla 199
+
+\definecharacter acircumflex 226
+\definecharacter Acircumflex 194
+\definecharacter ecircumflex 234
+\definecharacter Ecircumflex 202
+\definecharacter icircumflex 238
+\definecharacter Icircumflex 206
+\definecharacter ocircumflex 244
+\definecharacter Ocircumflex 212
+\definecharacter ucircumflex 251
+\definecharacter Ucircumflex 219
+
+\definecharacter adiaeresis 228
+\definecharacter Adiaeresis 196
+\definecharacter ediaeresis 235
+\definecharacter Ediaeresis 203
+\definecharacter idiaeresis 239
+\definecharacter Idiaeresis 207
+\definecharacter odiaeresis 246
+\definecharacter Odiaeresis 214
+\definecharacter udiaeresis 252
+\definecharacter Udiaeresis 220
+\definecharacter ydiaeresis 255
+\definecharacter Ydiaeresis 159
+
+\definecharacter agrave 224
+\definecharacter Agrave 192
+\definecharacter egrave 232
+\definecharacter Egrave 200
+\definecharacter igrave 236
+\definecharacter Igrave 204
+\definecharacter ograve 242
+\definecharacter Ograve 210
+\definecharacter ugrave 249
+\definecharacter Ugrave 217
+
+\definecharacter aring 229
+\definecharacter Aring 197
+
+\definecharacter lstroke 7
+\definecharacter Lstroke 6
+\definecharacter ostroke 248
+\definecharacter Ostroke 216
+
+\definecharacter atilde 227
+\definecharacter Atilde 195
+\definecharacter ntilde 241
+\definecharacter Ntilde 209
+\definecharacter otilde 245
+\definecharacter Otilde 213
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-uc.tex b/Master/texmf-dist/tex/context/base/enco-uc.tex
new file mode 100644
index 00000000000..fb709c82d17
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-uc.tex
@@ -0,0 +1,1070 @@
+%D \module
+%D [ file=enco-uc,
+%D version=2000.xx.xx, % and later
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Unicode (backwards mapping),
+%D author={Adam Lindsay \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D An alternative approach would be to misuse the utf vectors, but they
+%D don't carry enough info around.
+
+% todo : \defineucharacter hebrewAlef 5 "D0
+
+\startencoding[uc]
+
+\definecharacter Agrave {\uchar0{192}}
+\definecharacter Aacute {\uchar0{193}}
+\definecharacter Acircumflex {\uchar0{194}}
+\definecharacter Atilde {\uchar0{195}}
+\definecharacter Adiaeresis {\uchar0{196}}
+\definecharacter Aring {\uchar0{197}}
+\definecharacter AEligature {\uchar0{198}}
+\definecharacter Ccedilla {\uchar0{199}}
+\definecharacter Egrave {\uchar0{200}}
+\definecharacter Eacute {\uchar0{201}}
+\definecharacter Ediaeresis {\uchar0{203}}
+\definecharacter Igrave {\uchar0{204}}
+\definecharacter Iacute {\uchar0{205}}
+\definecharacter Icircumflex {\uchar0{206}}
+\definecharacter Idiaeresis {\uchar0{207}}
+\definecharacter Eth {\uchar0{208}}
+\definecharacter Ntilde {\uchar0{209}}
+\definecharacter Ograve {\uchar0{210}}
+\definecharacter Oacute {\uchar0{211}}
+\definecharacter Ocircumflex {\uchar0{212}}
+\definecharacter Otilde {\uchar0{213}}
+\definecharacter Odiaeresis {\uchar0{214}}
+
+\definecharacter Ostroke {\uchar0{216}}
+\definecharacter Ugrave {\uchar0{217}}
+\definecharacter Uacute {\uchar0{218}}
+\definecharacter Uhungarumlaut {\uchar0{219}}
+\definecharacter Udiaeresis {\uchar0{220}}
+\definecharacter Yacute {\uchar0{221}}
+\definecharacter Thorn {\uchar0{222}}
+\definecharacter ssharp {\uchar0{223}}
+\definecharacter agrave {\uchar0{224}}
+\definecharacter aacute {\uchar0{225}}
+\definecharacter acircumflex {\uchar0{226}}
+\definecharacter atilde {\uchar0{227}}
+\definecharacter adiaeresis {\uchar0{228}}
+\definecharacter aring {\uchar0{229}}
+\definecharacter aeligature {\uchar0{230}}
+\definecharacter ccedilla {\uchar0{231}}
+\definecharacter egrave {\uchar0{232}}
+\definecharacter eacute {\uchar0{233}}
+\definecharacter ecircumflex {\uchar0{234}}
+\definecharacter ediaeresis {\uchar0{235}}
+\definecharacter igrave {\uchar0{236}}
+\definecharacter iacute {\uchar0{237}}
+\definecharacter icircumflex {\uchar0{238}}
+\definecharacter idiaeresis {\uchar0{239}}
+\definecharacter eth {\uchar0{240}}
+\definecharacter ntilde {\uchar0{241}}
+\definecharacter ograve {\uchar0{242}}
+\definecharacter oacute {\uchar0{243}}
+\definecharacter ocircumflex {\uchar0{244}}
+\definecharacter otilde {\uchar0{245}}
+\definecharacter odiaeresis {\uchar0{246}}
+
+\definecharacter ostroke {\uchar0{248}}
+\definecharacter ugrave {\uchar0{249}}
+\definecharacter uacute {\uchar0{250}}
+\definecharacter ucircumflex {\uchar0{251}}
+\definecharacter udiaeresis {\uchar0{252}}
+\definecharacter yacute {\uchar0{253}}
+\definecharacter thorn {\uchar0{254}}
+\definecharacter ydiaeresis {\uchar0{255}}
+
+\definecharacter Amacron {\uchar1{0}}
+\definecharacter amacron {\uchar1{1}}
+\definecharacter Abreve {\uchar1{2}}
+\definecharacter abreve {\uchar1{3}}
+\definecharacter Aogonek {\uchar1{4}}
+\definecharacter aogonek {\uchar1{5}}
+\definecharacter Cacute {\uchar1{6}}
+\definecharacter cacute {\uchar1{7}}
+\definecharacter Ccircumflex {\uchar1{8}}
+\definecharacter ccircumflex {\uchar1{9}}
+\definecharacter Cdotaccent {\uchar1{10}}
+\definecharacter cdotaccent {\uchar1{11}}
+\definecharacter Ccaron {\uchar1{12}}
+\definecharacter ccaron {\uchar1{13}}
+\definecharacter Dcaron {\uchar1{14}}
+\definecharacter dcaron {\uchar1{15}}
+\definecharacter Dstroke {\uchar1{16}}
+\definecharacter dstroke {\uchar1{17}}
+\definecharacter Emacron {\uchar1{18}}
+\definecharacter emacron {\uchar1{19}}
+\definecharacter Ebreve {\uchar1{20}}
+\definecharacter ebreve {\uchar1{21}}
+\definecharacter Edotaccent {\uchar1{22}}
+\definecharacter edotaccent {\uchar1{23}}
+\definecharacter Eogonek {\uchar1{24}}
+\definecharacter eogonek {\uchar1{25}}
+\definecharacter Ecaron {\uchar1{26}}
+\definecharacter ecaron {\uchar1{27}}
+\definecharacter Gcircumflex {\uchar1{28}}
+\definecharacter gcircumflex {\uchar1{29}}
+\definecharacter Gbreve {\uchar1{30}}
+\definecharacter gbreve {\uchar1{31}}
+\definecharacter Gdotaccent {\uchar1{32}}
+\definecharacter gdotaccent {\uchar1{33}}
+\definecharacter Gcommaaccent {\uchar1{34}}
+\definecharacter gcommaaccent {\uchar1{35}}
+\definecharacter Hcircumflex {\uchar1{36}}
+\definecharacter hcircumflex {\uchar1{37}}
+\definecharacter Hstroke {\uchar1{38}}
+\definecharacter hstroke {\uchar1{39}}
+\definecharacter Itilde {\uchar1{40}}
+\definecharacter itilde {\uchar1{41}}
+\definecharacter Imacron {\uchar1{42}}
+\definecharacter imacron {\uchar1{43}}
+\definecharacter Ibreve {\uchar1{44}}
+\definecharacter ibreve {\uchar1{45}}
+\definecharacter Iogonek {\uchar1{46}}
+\definecharacter iogonek {\uchar1{47}}
+\definecharacter Idotaccent {\uchar1{48}}
+\definecharacter dotlessi {\uchar1{49}}
+\definecharacter IJligature {\uchar1{50}}
+\definecharacter ijligature {\uchar1{51}}
+\definecharacter Jcircumflex {\uchar1{52}}
+\definecharacter jcircumflex {\uchar1{53}}
+\definecharacter Kcommaaccent {\uchar1{54}}
+\definecharacter kcommaaccent {\uchar1{55}}
+\definecharacter kkra {\uchar1{56}}
+\definecharacter Lacute {\uchar1{57}}
+\definecharacter lacute {\uchar1{58}}
+\definecharacter Lcommaaccent {\uchar1{59}}
+\definecharacter lcommaaccent {\uchar1{60}}
+\definecharacter Lcaron {\uchar1{61}}
+\definecharacter lcaron {\uchar1{62}}
+\definecharacter Ldotmiddle {\uchar1{63}}
+\definecharacter ldotmiddle {\uchar1{64}}
+\definecharacter Lstroke {\uchar1{65}}
+\definecharacter lstroke {\uchar1{66}}
+\definecharacter Nacute {\uchar1{67}}
+\definecharacter nacute {\uchar1{68}}
+\definecharacter Ncommaaccent {\uchar1{69}}
+\definecharacter ncommaaccent {\uchar1{70}}
+\definecharacter Ncaron {\uchar1{71}}
+\definecharacter ncaron {\uchar1{72}}
+\definecharacter napostrophe {\uchar1{73}}
+\definecharacter Neng {\uchar1{74}}
+\definecharacter neng {\uchar1{75}}
+\definecharacter Omacron {\uchar1{76}}
+\definecharacter omacron {\uchar1{77}}
+\definecharacter Obreve {\uchar1{78}}
+\definecharacter obreve {\uchar1{79}}
+\definecharacter Ohungarumlaut {\uchar1{80}}
+\definecharacter ohungarumlaut {\uchar1{81}}
+\definecharacter OEligature {\uchar1{82}}
+\definecharacter oeligature {\uchar1{83}}
+\definecharacter Racute {\uchar1{84}}
+\definecharacter racute {\uchar1{85}}
+\definecharacter Rcommaaccent {\uchar1{86}}
+\definecharacter rcommaaccent {\uchar1{87}}
+\definecharacter Rcaron {\uchar1{88}}
+\definecharacter rcaron {\uchar1{89}}
+\definecharacter Sacute {\uchar1{90}}
+\definecharacter sacute {\uchar1{91}}
+\definecharacter Scircumflex {\uchar1{92}}
+\definecharacter scircumflex {\uchar1{93}}
+\definecharacter Scedilla {\uchar1{94}}
+\definecharacter scedilla {\uchar1{95}}
+\definecharacter Scaron {\uchar1{96}}
+\definecharacter scaron {\uchar1{97}}
+\definecharacter Tcedilla {\uchar1{98}}
+\definecharacter tcedilla {\uchar1{99}}
+\definecharacter Tcaron {\uchar1{100}}
+\definecharacter tcaron {\uchar1{101}}
+\definecharacter Tstroke {\uchar1{102}}
+\definecharacter tstroke {\uchar1{103}}
+\definecharacter Utilde {\uchar1{104}}
+\definecharacter utilde {\uchar1{105}}
+\definecharacter Umacron {\uchar1{106}}
+\definecharacter umacron {\uchar1{107}}
+\definecharacter Ubreve {\uchar1{108}}
+\definecharacter ubreve {\uchar1{109}}
+\definecharacter Uring {\uchar1{110}}
+\definecharacter uring {\uchar1{111}}
+\definecharacter Uhungarumlaut {\uchar1{112}}
+\definecharacter uhungarumlaut {\uchar1{113}}
+\definecharacter Uogonek {\uchar1{114}}
+\definecharacter uogonek {\uchar1{115}}
+\definecharacter Wcircumflex {\uchar1{116}}
+\definecharacter wcircumflex {\uchar1{117}}
+\definecharacter Ycircumflex {\uchar1{118}}
+\definecharacter ycircumflex {\uchar1{119}}
+\definecharacter Ydiaeresis {\uchar1{120}}
+\definecharacter Zacute {\uchar1{121}}
+\definecharacter zacute {\uchar1{122}}
+\definecharacter Zdotaccent {\uchar1{123}}
+\definecharacter zdotaccent {\uchar1{124}}
+\definecharacter Zcaron {\uchar1{125}}
+\definecharacter zcaron {\uchar1{126}}
+\definecharacter slong {\uchar1{127}}
+
+\stopencoding
+
+\startencoding[uc]
+
+\definecharacter endash {\uchar{32}{19}}
+\definecharacter emdash {\uchar{32}{20}}
+\definecharacter quoteleft {\uchar{32}{24}}
+\definecharacter quoteright {\uchar{32}{25}}
+\definecharacter quotesinglebase {\uchar{32}{26}}
+
+\definecharacter quotedblleft {\uchar{32}{28}}
+\definecharacter quotedblright {\uchar{32}{29}}
+\definecharacter quotedblbase {\uchar{32}{30}}
+
+\definecharacter leftguillemot {\uchar0{171}}
+\definecharacter rightguillemot {\uchar0{187}}
+
+\definecharacter guilsingleleft {\uchar{32}{57}}
+\definecharacter guilsingleright {\uchar{32}{58}}
+
+\stopencoding
+
+%D Adam Lindsay's additions
+
+\startencoding[uc]
+
+\definecharacter exclamdown {\uchar0{161}}
+\definecharacter textcent {\uchar0{162}}
+\definecharacter textsterling {\uchar0{163}}
+\definecharacter textcurrency {\uchar0{164}}
+\definecharacter textyen {\uchar0{165}}
+\definecharacter textbrokenbar {\uchar0{166}}
+\definecharacter sectionmark {\uchar0{167}}
+\definecharacter textdiaresis {\uchar0{168}}
+\definecharacter copyright {\uchar0{169}}
+
+\definecharacter textlognot {\uchar0{172}}
+\definecharacter softhyphen {\uchar0{173}}
+\definecharacter registered {\uchar0{174}}
+\definecharacter textmacron {\uchar0{175}}
+\definecharacter textdegree {\uchar0{176}}
+\definecharacter textpm {\uchar0{177}}
+\definecharacter twosuperior {\uchar0{178}}
+\definecharacter threesuperior {\uchar0{179}}
+\definecharacter textacute {\uchar0{180}}
+\definecharacter textmu {\uchar0{181}}
+\definecharacter paragraphmark {\uchar0{182}}
+\definecharacter periodcentered {\uchar0{183}}
+\definecharacter textcedilla {\uchar0{184}}
+\definecharacter onesuperior {\uchar0{185}}
+
+\definecharacter textgrave {\uchar3{0}}
+\definecharacter textacute {\uchar3{1}}
+\definecharacter textcircumflex {\uchar3{2}}
+\definecharacter texttilde {\uchar3{3}}
+\definecharacter textmacron {\uchar3{4}}
+\definecharacter textbreve {\uchar3{6}}
+\definecharacter textdotaccent {\uchar3{7}}
+\definecharacter textdiaeresis {\uchar3{8}}
+\definecharacter textring {\uchar3{10}}
+\definecharacter texthungarumlaut {\uchar3{11}}
+\definecharacter textcaron {\uchar3{12}}
+\definecharacter textogonek {\uchar3{40}}
+
+\definecharacter percent {\uchar0{37}}
+\definecharacter textunderscore {\uchar0{95}}
+
+\definecharacter ordfeminine {\uchar0{170}}
+\definecharacter ordmasculine {\uchar0{186}}
+\definecharacter onequarter {\uchar0{188}}
+\definecharacter onehalf {\uchar0{189}}
+\definecharacter threequarter {\uchar0{190}}
+\definecharacter questiondown {\uchar0{191}}
+
+\definecharacter textmultiply {\uchar0{215}}
+\definecharacter textdiv {\uchar0{247}}
+
+\definecharacter textminus {\uchar{32}{18}}
+\definecharacter textdag {\uchar{32}{32}}
+\definecharacter textddag {\uchar{32}{33}}
+\definecharacter textbullet {\uchar{32}{34}}
+\definecharacter textellipsis {\uchar{32}{38}}
+\definecharacter perthousand {\uchar{32}{48}}
+
+%new:
+\definecharacter Scommaaccent {\uchar2{24}}
+\definecharacter scommaaccent {\uchar2{25}}
+\definecharacter Tcommaaccent {\uchar2{26}}
+\definecharacter tcommaaccent {\uchar2{27}}
+
+\stopencoding
+
+%D Vietnamese:
+
+\startencoding[uc]
+
+\definecharacter Ohorn {\uchar1{160}}
+\definecharacter ohorn {\uchar1{161}}
+\definecharacter Uhorn {\uchar1{175}}
+\definecharacter uhorn {\uchar1{176}}
+
+\definecharacter Yhook {\uchar{30}{246}}
+\definecharacter yhook {\uchar{30}{247}}
+\definecharacter Ydotbelow {\uchar{30}{244}}
+\definecharacter ydotbelow {\uchar{30}{245}}
+\definecharacter Ahook {\uchar{30}{162}}
+\definecharacter Adotbelow {\uchar{30}{160}}
+\definecharacter Acircumflexgrave {\uchar{30}{166}}
+\definecharacter Acircumflexacute {\uchar{30}{164}}
+\definecharacter Acircumflextilde {\uchar{30}{170}}
+\definecharacter Acircumflexhook {\uchar{30}{168}}
+\definecharacter Acircumflexdotbelow {\uchar{30}{172}}
+\definecharacter Abrevegrave {\uchar{30}{176}}
+\definecharacter Abreveacute {\uchar{30}{174}}
+\definecharacter Abrevetilde {\uchar{30}{180}}
+\definecharacter Abrevehook {\uchar{30}{178}}
+\definecharacter Abrevedotbelow {\uchar{30}{182}}
+\definecharacter Ehook {\uchar{30}{186}}
+\definecharacter Edotbelow {\uchar{30}{184}}
+\definecharacter Ecircumflexgrave {\uchar{30}{192}}
+\definecharacter Ecircumflexacute {\uchar{30}{190}}
+\definecharacter Ecircumflextilde {\uchar{30}{196}}
+\definecharacter Ecircumflexhook {\uchar{30}{194}}
+\definecharacter Ecircumflexdotbelow {\uchar{30}{198}}
+\definecharacter Ihook {\uchar{30}{200}}
+\definecharacter ahook {\uchar{30}{163}}
+\definecharacter adotbelow {\uchar{30}{161}}
+\definecharacter acircumflexgrave {\uchar{30}{167}}
+\definecharacter acircumflexacute {\uchar{30}{165}}
+\definecharacter acircumflextilde {\uchar{30}{171}}
+\definecharacter acircumflexhook {\uchar{30}{169}}
+\definecharacter acircumflexdotbelow {\uchar{30}{173}}
+\definecharacter abrevegrave {\uchar{30}{177}}
+\definecharacter abreveacute {\uchar{30}{175}}
+\definecharacter abrevetilde {\uchar{30}{181}}
+\definecharacter abrevehook {\uchar{30}{179}}
+\definecharacter abrevedotbelow {\uchar{30}{183}}
+\definecharacter ehook {\uchar{30}{187}}
+\definecharacter edotbelow {\uchar{30}{185}}
+\definecharacter ecircumflexgrave {\uchar{30}{193}}
+\definecharacter ecircumflexacute {\uchar{30}{191}}
+\definecharacter ecircumflextilde {\uchar{30}{197}}
+\definecharacter ecircumflexhook {\uchar{30}{195}}
+\definecharacter ecircumflexdotbelow {\uchar{30}{199}}
+\definecharacter ihook {\uchar{30}{201}}
+\definecharacter Idotbelow {\uchar{30}{202}}
+\definecharacter Ohook {\uchar{30}{206}}
+\definecharacter Odotbelow {\uchar{30}{204}}
+\definecharacter Ocircumflexgrave {\uchar{30}{210}}
+\definecharacter Ocircumflexacute {\uchar{30}{208}}
+\definecharacter Ocircumflextilde {\uchar{30}{214}}
+\definecharacter Ocircumflexhook {\uchar{30}{212}}
+\definecharacter Ocircumflexdotbelow {\uchar{30}{216}}
+\definecharacter Ohorngrave {\uchar{30}{220}}
+\definecharacter Ohornacute {\uchar{30}{218}}
+\definecharacter Ohorntilde {\uchar{30}{224}}
+\definecharacter Ohornhook {\uchar{30}{222}}
+\definecharacter Ohorndotbelow {\uchar{30}{226}}
+\definecharacter Uhook {\uchar{30}{230}}
+\definecharacter Udotbelow {\uchar{30}{228}}
+\definecharacter Uhorngrave {\uchar{30}{234}}
+\definecharacter Uhornacute {\uchar{30}{232}}
+\definecharacter Uhorntilde {\uchar{30}{238}}
+\definecharacter Uhornhook {\uchar{30}{236}}
+\definecharacter Uhorndotbelow {\uchar{30}{240}}
+\definecharacter Ytilde {\uchar{30}{248}}
+\definecharacter idotbelow {\uchar{30}{203}}
+\definecharacter ohook {\uchar{30}{207}}
+\definecharacter odotbelow {\uchar{30}{205}}
+\definecharacter ocircumflexgrave {\uchar{30}{211}}
+\definecharacter ocircumflexacute {\uchar{30}{209}}
+\definecharacter ocircumflextilde {\uchar{30}{215}}
+\definecharacter ocircumflexhook {\uchar{30}{213}}
+\definecharacter ocircumflexdotbelow {\uchar{30}{217}}
+\definecharacter ohorngrave {\uchar{30}{221}}
+\definecharacter ohornacute {\uchar{30}{219}}
+\definecharacter ohorntilde {\uchar{30}{225}}
+\definecharacter ohornhook {\uchar{30}{223}}
+\definecharacter ohorndotbelow {\uchar{30}{227}}
+\definecharacter uhook {\uchar{30}{231}}
+\definecharacter udotbelow {\uchar{30}{229}}
+\definecharacter uhorngrave {\uchar{30}{235}}
+\definecharacter uhornacute {\uchar{30}{233}}
+\definecharacter uhorntilde {\uchar{30}{239}}
+\definecharacter uhornhook {\uchar{30}{237}}
+\definecharacter uhorndotbelow {\uchar{30}{241}}
+\definecharacter ytilde {\uchar{30}{249}}
+
+\definecharacter Etilde {\uchar{30}{188}}
+\definecharacter etilde {\uchar{30}{189}}
+\definecharacter Ygrave {\uchar{30}{242}}
+\definecharacter ygrave {\uchar{30}{243}}
+
+\stopencoding
+
+% Greek:
+
+\startencoding[uc]
+
+\definecharacter greekAlphatonos {\uchar3{134}}
+\definecharacter greekEpsilontonos {\uchar3{136}}
+\definecharacter greekEtatonos {\uchar3{137}}
+\definecharacter greekIotatonos {\uchar3{138}}
+\definecharacter greekOmicrontonos {\uchar3{140}}
+\definecharacter greekUpsilontonos {\uchar3{142}}
+\definecharacter greekOmegatonos {\uchar3{143}}
+\definecharacter greekiotadialytikatonos {\uchar3{144}}
+\definecharacter greekAlpha {\uchar3{145}}
+\definecharacter greekBeta {\uchar3{146}}
+\definecharacter greekGamma {\uchar3{147}}
+\definecharacter greekDelta {\uchar3{148}}
+\definecharacter greekEpsilon {\uchar3{149}}
+\definecharacter greekZeta {\uchar3{150}}
+\definecharacter greekEta {\uchar3{151}}
+\definecharacter greekTheta {\uchar3{152}}
+\definecharacter greekIota {\uchar3{153}}
+\definecharacter greekKappa {\uchar3{154}}
+\definecharacter greekLambda {\uchar3{155}}
+\definecharacter greekMu {\uchar3{156}}
+\definecharacter greekNu {\uchar3{157}}
+\definecharacter greekXi {\uchar3{158}}
+\definecharacter greekOmicron {\uchar3{159}}
+\definecharacter greekPi {\uchar3{160}}
+\definecharacter greekRho {\uchar3{161}}
+\definecharacter greekSigma {\uchar3{163}}
+\definecharacter greekTau {\uchar3{164}}
+\definecharacter greekUpsilon {\uchar3{165}}
+\definecharacter greekPhi {\uchar3{166}}
+\definecharacter greekChi {\uchar3{167}}
+\definecharacter greekPsi {\uchar3{168}}
+\definecharacter greekOmega {\uchar3{169}}
+
+\definecharacter greekalpha {\uchar3{177}}
+\definecharacter greekbeta {\uchar3{178}}
+\definecharacter greekgamma {\uchar3{179}}
+\definecharacter greekdelta {\uchar3{180}}
+\definecharacter greekepsilon {\uchar3{181}}
+\definecharacter greekzeta {\uchar3{182}}
+\definecharacter greeketa {\uchar3{183}}
+\definecharacter greektheta {\uchar3{184}}
+\definecharacter greekiota {\uchar3{185}}
+\definecharacter greekkappa {\uchar3{186}}
+\definecharacter greeklambda {\uchar3{187}}
+\definecharacter greekmu {\uchar3{188}}
+\definecharacter greeknu {\uchar3{189}}
+\definecharacter greekxi {\uchar3{190}}
+\definecharacter greekomicron {\uchar3{191}}
+\definecharacter greekpi {\uchar3{192}}
+\definecharacter greekrho {\uchar3{193}}
+\definecharacter greekfinalsigma {\uchar3{194}}
+\definecharacter greeksigma {\uchar3{195}}
+\definecharacter greektau {\uchar3{196}}
+\definecharacter greekupsilon {\uchar3{197}}
+\definecharacter greekphi {\uchar3{198}}
+\definecharacter greekchi {\uchar3{199}}
+\definecharacter greekpsi {\uchar3{200}}
+\definecharacter greekomega {\uchar3{201}}
+\definecharacter greekiotadialytika {\uchar3{202}}
+\definecharacter greekupsilondialytika {\uchar3{203}}
+\definecharacter greekomicrontonos {\uchar3{204}}
+\definecharacter greekupsilontonos {\uchar3{205}}
+\definecharacter greekomegatonos {\uchar3{206}}
+
+\definecharacter greekIotadialytika {\uchar3{170}}
+\definecharacter greekUpsilondialytika {\uchar3{171}}
+
+\definecharacter greekalphatonos {\uchar3{172}}
+\definecharacter greekepsilontonos {\uchar3{173}}
+\definecharacter greeketatonos {\uchar3{174}}
+\definecharacter greekiotatonos {\uchar3{175}}
+\definecharacter greekupsilondialytikatonos {\uchar3{176}}
+
+% new:
+\definecharacter greekthetaalt {\uchar3{209}}
+\definecharacter greekphialt {\uchar3{213}}
+\definecharacter greekpialt {\uchar3{214}}
+\definecharacter greekrhoalt {\uchar3{241}}
+\definecharacter greekepsilonalt {\uchar3{245}}
+
+\stopencoding
+
+% Cyrillic:
+
+\startencoding[uc]
+
+\definecharacter cyrillicA {\uchar4{16}}
+\definecharacter cyrillicB {\uchar4{17}}
+\definecharacter cyrillicV {\uchar4{18}}
+\definecharacter cyrillicG {\uchar4{19}}
+\definecharacter cyrillicD {\uchar4{20}}
+\definecharacter cyrillicE {\uchar4{21}}
+\definecharacter cyrillicZH {\uchar4{22}}
+\definecharacter cyrillicZ {\uchar4{23}}
+\definecharacter cyrillicI {\uchar4{24}}
+\definecharacter cyrillicISHRT {\uchar4{25}}
+\definecharacter cyrillicK {\uchar4{26}}
+\definecharacter cyrillicL {\uchar4{27}}
+\definecharacter cyrillicM {\uchar4{28}}
+\definecharacter cyrillicN {\uchar4{29}}
+\definecharacter cyrillicO {\uchar4{30}}
+\definecharacter cyrillicP {\uchar4{31}}
+\definecharacter cyrillicR {\uchar4{32}}
+\definecharacter cyrillicS {\uchar4{33}}
+\definecharacter cyrillicT {\uchar4{34}}
+\definecharacter cyrillicU {\uchar4{35}}
+\definecharacter cyrillicF {\uchar4{36}}
+\definecharacter cyrillicH {\uchar4{37}}
+\definecharacter cyrillicC {\uchar4{38}}
+\definecharacter cyrillicCH {\uchar4{39}}
+\definecharacter cyrillicSH {\uchar4{40}}
+\definecharacter cyrillicSHCH {\uchar4{41}}
+\definecharacter cyrillicHRDSN {\uchar4{42}}
+\definecharacter cyrillicERY {\uchar4{43}}
+\definecharacter cyrillicSFTSN {\uchar4{44}}
+\definecharacter cyrillicEREV {\uchar4{45}}
+\definecharacter cyrillicYU {\uchar4{46}}
+\definecharacter cyrillicYA {\uchar4{47}}
+
+\definecharacter cyrillica {\uchar4{48}}
+\definecharacter cyrillicb {\uchar4{49}}
+\definecharacter cyrillicv {\uchar4{50}}
+\definecharacter cyrillicg {\uchar4{51}}
+\definecharacter cyrillicd {\uchar4{52}}
+\definecharacter cyrillice {\uchar4{53}}
+\definecharacter cyrilliczh {\uchar4{54}}
+\definecharacter cyrillicz {\uchar4{55}}
+\definecharacter cyrillici {\uchar4{56}}
+\definecharacter cyrillicishrt {\uchar4{57}}
+\definecharacter cyrillick {\uchar4{58}}
+\definecharacter cyrillicl {\uchar4{59}}
+\definecharacter cyrillicm {\uchar4{60}}
+\definecharacter cyrillicn {\uchar4{61}}
+\definecharacter cyrillico {\uchar4{62}}
+\definecharacter cyrillicp {\uchar4{63}}
+\definecharacter cyrillicr {\uchar4{64}}
+\definecharacter cyrillics {\uchar4{65}}
+\definecharacter cyrillict {\uchar4{66}}
+\definecharacter cyrillicu {\uchar4{67}}
+\definecharacter cyrillicf {\uchar4{68}}
+\definecharacter cyrillich {\uchar4{69}}
+\definecharacter cyrillicc {\uchar4{70}}
+\definecharacter cyrillicch {\uchar4{71}}
+\definecharacter cyrillicsh {\uchar4{72}}
+\definecharacter cyrillicshch {\uchar4{73}}
+\definecharacter cyrillichrdsn {\uchar4{74}}
+\definecharacter cyrillicery {\uchar4{75}}
+\definecharacter cyrillicsftsn {\uchar4{76}}
+\definecharacter cyrillicerev {\uchar4{77}}
+\definecharacter cyrillicyu {\uchar4{78}}
+\definecharacter cyrillicya {\uchar4{79}}
+
+%D I tried to figure out what these were, but the unicode
+%D tables suggested they were the same as cyrillici, which was
+%D already defined! So, a temporary definition:
+
+% \def\cyrillicII{\cyrillicI}
+% \def\cyrillicii{\cyrillici}
+
+%D a guess derived from looking at enco-cyr suggests that this is
+%D identical to the Roman I/i pair. To me, that sounds like
+%D CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I in the UC tables!
+
+\definecharacter cyrillicII {\uchar4{6}}
+\definecharacter cyrillicii {\uchar4{86}}
+
+%D Guessing that tlir6a corresponds with t2a encoding as advertised,
+%D here are some more, cos I had some spare time: (AL)
+
+\definecharacter cyrillicDJE {\uchar4{2}}
+\definecharacter cyrillicTSHE {\uchar4{11}}
+%definecharacter cyrillicSHHA 132
+%definecharacter cyrillicZHDSC 133
+\definecharacter cyrillicZDSC {\uchar4{152}}
+\definecharacter cyrillicLJE {\uchar4{9}}
+\definecharacter cyrillicYI {\uchar4{7}}
+\definecharacter cyrillicAE {\uchar4{212}}
+%definecharacter cyrillicNDSC 141
+%definecharacter cyrillicNG 142
+\definecharacter cyrillicDZE {\uchar4{5}}
+%definecharacter cyrillicOTLD 144
+\definecharacter cyrillicSDSC {\uchar4{170}}
+\definecharacter cyrillicUSHRT {\uchar4{14}}
+%definecharacter cyrillicY 147
+%definecharacter cyrillicYHCRS 148
+%definecharacter cyrillicHDSC 149
+\definecharacter cyrillicDZHE {\uchar4{15}}
+\definecharacter cyrillicIE {\uchar4{4}}
+\definecharacter cyrillicNJE {\uchar4{10}}
+\definecharacter cyrillicYO {\uchar4{1}}
+
+\definecharacter cyrillicdje {\uchar4{82}}
+\definecharacter cyrillictshe {\uchar4{91}}
+%definecharacter cyrillicshha 164
+%definecharacter cyrilliczhdsc 165
+\definecharacter cyrilliczdsc {\uchar4{153}}
+\definecharacter cyrilliclje {\uchar4{89}}
+\definecharacter cyrillicyi {\uchar4{87}}
+\definecharacter cyrillicae {\uchar4{213}}
+%definecharacter cyrillicndsc 173
+%definecharacter cyrillicng 174
+\definecharacter cyrillicdze {\uchar4{85}}
+%definecharacter cyrillicotld 176
+\definecharacter cyrillicsdsc {\uchar4{171}}
+\definecharacter cyrillicushrt {\uchar4{94}}
+%definecharacter cyrillicy 179
+%definecharacter cyrillicyhcrs 180
+%definecharacter cyrillichdsc 181
+\definecharacter cyrillicdzhe {\uchar4{95}}
+\definecharacter cyrillicie {\uchar4{84}}
+\definecharacter cyrillicnje {\uchar4{90}}
+\definecharacter cyrillicyo {\uchar4{81}}
+
+% is there overlap with the above definitions
+
+\definecharacter cyrillicEgrave {\uchar4{0}}
+\definecharacter cyrillicGJE {\uchar4{3}}
+\definecharacter cyrillicJE {\uchar4{8}}
+\definecharacter cyrillicKJE {\uchar4{12}}
+\definecharacter cyrillicIgrave {\uchar4{13}}
+\definecharacter cyrillicegrave {\uchar4{80}}
+\definecharacter cyrillicgje {\uchar4{83}}
+\definecharacter cyrillicje {\uchar4{88}}
+\definecharacter cyrillickje {\uchar4{92}}
+\definecharacter cyrillicigrave {\uchar4{93}}
+\definecharacter cyrillicOMEGA {\uchar4{96}}
+\definecharacter cyrillicomega {\uchar4{97}}
+\definecharacter cyrillicYAT {\uchar4{98}}
+\definecharacter cyrillicyat {\uchar4{99}}
+\definecharacter cyrillicEiotified {\uchar4{100}}
+\definecharacter cyrilliceiotified {\uchar4{101}}
+\definecharacter cyrillicLITTLEYUS {\uchar4{102}}
+\definecharacter cyrilliclittleyus {\uchar4{103}}
+\definecharacter cyrillicLITTLEYUSiotified {\uchar4{104}}
+\definecharacter cyrilliclittleyusiotified {\uchar4{105}}
+\definecharacter cyrillicBIGYUS {\uchar4{106}}
+\definecharacter cyrillicbigyus {\uchar4{107}}
+\definecharacter cyrillicBIGYUSiotified {\uchar4{108}}
+\definecharacter cyrillicbigyusiotified {\uchar4{109}}
+\definecharacter cyrillicKSI {\uchar4{110}}
+\definecharacter cyrillicksi {\uchar4{111}}
+\definecharacter cyrillicPSI {\uchar4{112}}
+\definecharacter cyrillicpsi {\uchar4{113}}
+\definecharacter cyrillicFITA {\uchar4{114}}
+\definecharacter cyrillicfita {\uchar4{115}}
+\definecharacter cyrillicIZHITSA {\uchar4{116}}
+\definecharacter cyrillicizhitsa {\uchar4{117}}
+\definecharacter cyrillicIZHITSAdoublegrave {\uchar4{118}}
+\definecharacter cyrillicizhitsadoublegrave {\uchar4{119}}
+\definecharacter cyrillicUK {\uchar4{120}}
+\definecharacter cyrillicuk {\uchar4{121}}
+\definecharacter cyrillicOMEGAround {\uchar4{122}}
+\definecharacter cyrillicomegaround {\uchar4{123}}
+\definecharacter cyrillicOMEGAtitlo {\uchar4{124}}
+\definecharacter cyrillicomegatitlo {\uchar4{125}}
+\definecharacter cyrillicOT {\uchar4{126}}
+\definecharacter cyrillicot {\uchar4{127}}
+\definecharacter cyrillicKOPPA {\uchar4{128}}
+\definecharacter cyrillickoppa {\uchar4{129}}
+\definecharacter cyrillicTITLO {\uchar4{131}}
+\definecharacter cyrillicPALATALIZATION {\uchar4{132}}
+\definecharacter cyrillicDASIAPNEUMATA {\uchar4{133}}
+\definecharacter cyrillicPSILIPNEUMATA {\uchar4{134}}
+\definecharacter cyrillicISHRTtail {\uchar4{138}}
+\definecharacter cyrillicishrttail {\uchar4{139}}
+\definecharacter cyrillicSEMISOFT {\uchar4{140}}
+\definecharacter cyrillicsemisoft {\uchar4{141}}
+\definecharacter cyrillicERtick {\uchar4{142}}
+\definecharacter cyrillicertick {\uchar4{143}}
+\definecharacter cyrillicGHEupturn {\uchar4{144}}
+\definecharacter cyrillicgheupturn {\uchar4{145}}
+\definecharacter cyrillicGHEstroke {\uchar4{146}}
+\definecharacter cyrillicghestroke {\uchar4{147}}
+\definecharacter cyrillicGHEmidhook {\uchar4{148}}
+\definecharacter cyrillicghemidhook {\uchar4{149}}
+\definecharacter cyrillicZHEdescender {\uchar4{150}}
+\definecharacter cyrilliczhedescender {\uchar4{151}}
+\definecharacter cyrillicZDSC {\uchar4{152}}
+\definecharacter cyrilliczdsc {\uchar4{153}}
+\definecharacter cyrillicKADC {\uchar4{154}}
+\definecharacter cyrillickadc {\uchar4{155}}
+\definecharacter cyrillicKAvertstroke {\uchar4{156}}
+\definecharacter cyrillickavertstroke {\uchar4{157}}
+\definecharacter cyrillicKAstroke {\uchar4{158}}
+\definecharacter cyrillickastroke {\uchar4{159}}
+\definecharacter cyrillicKAbashkir {\uchar4{160}}
+\definecharacter cyrillickabashkir {\uchar4{161}}
+\definecharacter cyrillicENDC {\uchar4{162}}
+\definecharacter cyrillicendc {\uchar4{163}}
+\definecharacter cyrillicENGHE {\uchar4{164}}
+\definecharacter cyrillicenghe {\uchar4{165}}
+\definecharacter cyrillicPEmidhook {\uchar4{166}}
+\definecharacter cyrillicpemidhook {\uchar4{167}}
+\definecharacter cyrillicHA {\uchar4{168}}
+\definecharacter cyrillicha {\uchar4{169}}
+%definecharacter cyrillicSDSC {\uchar4{170}} % already defined
+%definecharacter cyrilliccdsc {\uchar4{171}} % already defined
+\definecharacter cyrillicTEDC {\uchar4{172}}
+\definecharacter cyrillictedc {\uchar4{173}}
+\definecharacter cyrillicYstr {\uchar4{174}}
+\definecharacter cyrillicystr {\uchar4{175}}
+\definecharacter cyrillicYstrstroke {\uchar4{176}}
+\definecharacter cyrillicystrstroke {\uchar4{177}}
+\definecharacter cyrillicHADC {\uchar4{178}}
+\definecharacter cyrillichadc {\uchar4{179}}
+\definecharacter cyrillicTETSE {\uchar4{180}}
+\definecharacter cyrillictetse {\uchar4{181}}
+\definecharacter cyrillicCHEDC {\uchar4{182}}
+\definecharacter cyrillicchedc {\uchar4{183}}
+\definecharacter cyrillicCHEvertstroke {\uchar4{184}}
+\definecharacter cyrillicchevertstroke {\uchar4{185}}
+\definecharacter cyrillicSHHA {\uchar4{186}}
+\definecharacter cyrillicshha {\uchar4{187}}
+\definecharacter cyrillicCHEabkhasian {\uchar4{188}}
+\definecharacter cyrilliccheabkhasian {\uchar4{189}}
+\definecharacter cyrillicCHEDCabkhasian {\uchar4{190}}
+\definecharacter cyrillicchedcabkhasian {\uchar4{191}}
+\definecharacter cyrillicPALOCHKA {\uchar4{192}}
+\definecharacter cyrillicZHEbreve {\uchar4{193}}
+\definecharacter cyrilliczhebreve {\uchar4{194}}
+\definecharacter cyrillicKAhook {\uchar4{195}}
+\definecharacter cyrillickahook {\uchar4{196}}
+\definecharacter cyrillicELtail {\uchar4{197}}
+\definecharacter cyrilliceltail {\uchar4{198}}
+\definecharacter cyrillicENhook {\uchar4{199}}
+\definecharacter cyrillicenhook {\uchar4{200}}
+\definecharacter cyrillicENtail {\uchar4{201}}
+\definecharacter cyrillicentail {\uchar4{202}}
+\definecharacter cyrillicCHEkhakassian {\uchar4{203}}
+\definecharacter cyrillicchekhakassian {\uchar4{204}}
+\definecharacter cyrillicEMtail {\uchar4{205}}
+\definecharacter cyrillicemtail {\uchar4{206}}
+\definecharacter cyrillicAbreve {\uchar4{208}}
+\definecharacter cyrillicabreve {\uchar4{209}}
+\definecharacter cyrillicAdiaeresis {\uchar4{210}}
+\definecharacter cyrillicadiaeresis {\uchar4{211}}
+%definecharacter cyrillicAE {\uchar4{212}} % already defined
+%definecharacter cyrillicae {\uchar4{213}} % already defined
+\definecharacter cyrillicEbreve {\uchar4{214}}
+\definecharacter cyrillicebreve {\uchar4{215}}
+\definecharacter cyrillicSCHWA {\uchar4{216}}
+\definecharacter cyrillicschwa {\uchar4{217}}
+\definecharacter cyrillicSCHWAdiaeresis {\uchar4{218}}
+\definecharacter cyrillicschwadiaeresis {\uchar4{219}}
+\definecharacter cyrillicZHEdiaeresis {\uchar4{220}}
+\definecharacter cyrilliczhediaeresis {\uchar4{221}}
+\definecharacter cyrillicZEdiaeresis {\uchar4{222}}
+\definecharacter cyrilliczediaeresis {\uchar4{223}}
+\definecharacter cyrillicDZEabkhasian {\uchar4{224}}
+\definecharacter cyrillicdzeabkhasian {\uchar4{225}}
+\definecharacter cyrillicImacron {\uchar4{226}}
+\definecharacter cyrillicimacron {\uchar4{227}}
+\definecharacter cyrillicIdiaeresis {\uchar4{228}}
+\definecharacter cyrillicidiaeresis {\uchar4{229}}
+\definecharacter cyrillicOdiaeresis {\uchar4{230}}
+\definecharacter cyrillicodiaeresis {\uchar4{231}}
+\definecharacter cyrillicObarred {\uchar4{232}}
+\definecharacter cyrillicobarred {\uchar4{233}}
+\definecharacter cyrillicObarreddiaeresis {\uchar4{234}}
+\definecharacter cyrillicobarreddiaeresis {\uchar4{235}}
+\definecharacter cyrillicEdiaeresis {\uchar4{236}}
+\definecharacter cyrillicediaeresis {\uchar4{237}}
+\definecharacter cyrillicUmacron {\uchar4{238}}
+\definecharacter cyrillicumacron {\uchar4{239}}
+\definecharacter cyrillicUdiaeresis {\uchar4{240}}
+\definecharacter cyrillicudiaeresis {\uchar4{241}}
+\definecharacter cyrillicUdoubleacute {\uchar4{242}}
+\definecharacter cyrillicudoubleacute {\uchar4{243}}
+\definecharacter cyrillicCHEdiaeresis {\uchar4{244}}
+\definecharacter cyrillicchediaeresis {\uchar4{245}}
+\definecharacter cyrillicYERUdiaeresis {\uchar4{248}}
+\definecharacter cyrillicyerudiaeresis {\uchar4{249}}
+
+\stopencoding
+
+% Greek Extended
+
+\startencoding[uc]
+
+\definecharacter greekalphapsili {\uchar{31}{0}}
+\definecharacter greekalphadasia {\uchar{31}{1}}
+\definecharacter greekalphapsilivaria {\uchar{31}{2}}
+\definecharacter greekalphadasiavaria {\uchar{31}{3}}
+\definecharacter greekalphapsilitonos {\uchar{31}{4}}
+\definecharacter greekalphadasiatonos {\uchar{31}{5}}
+\definecharacter greekalphapsiliperispomeni {\uchar{31}{6}}
+\definecharacter greekalphadasiaperispomeni {\uchar{31}{7}}
+\definecharacter greekAlphapsili {\uchar{31}{8}}
+\definecharacter greekAlphadasia {\uchar{31}{9}}
+\definecharacter greekAlphapsilivaria {\uchar{31}{10}}
+\definecharacter greekAlphadasiavaria {\uchar{31}{11}}
+\definecharacter greekAlphapsilitonos {\uchar{31}{12}}
+\definecharacter greekAlphadasiatonos {\uchar{31}{13}}
+\definecharacter greekAlphapsiliperispomeni {\uchar{31}{14}}
+\definecharacter greekAlphadasiaperispomeni {\uchar{31}{15}}
+\definecharacter greekepsilonpsili {\uchar{31}{16}} % 1f10
+\definecharacter greekepsilondasia {\uchar{31}{17}}
+\definecharacter greekepsilonpsilivaria {\uchar{31}{18}}
+\definecharacter greekepsilondasiavaria {\uchar{31}{19}}
+\definecharacter greekepsilonpsilitonos {\uchar{31}{20}}
+\definecharacter greekepsilondasiatonos {\uchar{31}{21}}
+\definecharacter greekEpsilonpsili {\uchar{31}{24}}
+\definecharacter greekEpsilondasia {\uchar{31}{25}}
+\definecharacter greekEpsilonpsilivaria {\uchar{31}{26}}
+\definecharacter greekEpsilondasiavaria {\uchar{31}{27}}
+\definecharacter greekEpsilonpsilitonos {\uchar{31}{28}}
+\definecharacter greekEpsilondasiatonos {\uchar{31}{29}}
+\definecharacter greeketapsili {\uchar{31}{32}} % 1f20
+\definecharacter greeketadasia {\uchar{31}{33}}
+\definecharacter greeketapsilivaria {\uchar{31}{34}}
+\definecharacter greeketadasiavaria {\uchar{31}{35}}
+\definecharacter greeketapsilitonos {\uchar{31}{36}}
+\definecharacter greeketadasiatonos {\uchar{31}{37}}
+\definecharacter greeketapsiliperispomeni {\uchar{31}{38}}
+\definecharacter greeketadasiaperispomeni {\uchar{31}{39}}
+\definecharacter greekEtapsili {\uchar{31}{40}}
+\definecharacter greekEtadasia {\uchar{31}{41}}
+\definecharacter greekEtapsilivaria {\uchar{31}{42}}
+\definecharacter greekEtadasiavaria {\uchar{31}{43}}
+\definecharacter greekEtapsilitonos {\uchar{31}{44}}
+\definecharacter greekEtadasiatonos {\uchar{31}{45}}
+\definecharacter greekEtapsiliperispomeni {\uchar{31}{46}}
+\definecharacter greekEtadasiaperispomeni {\uchar{31}{47}}
+\definecharacter greekiotapsili {\uchar{31}{48}} % 1f30
+\definecharacter greekiotadasia {\uchar{31}{49}}
+\definecharacter greekiotapsilivaria {\uchar{31}{50}}
+\definecharacter greekiotadasiavaria {\uchar{31}{51}}
+\definecharacter greekiotapsilitonos {\uchar{31}{52}}
+\definecharacter greekiotadasiatonos {\uchar{31}{53}}
+\definecharacter greekiotapsiliperispomeni {\uchar{31}{54}}
+\definecharacter greekiotadasiaperispomeni {\uchar{31}{55}}
+\definecharacter greekIotapsili {\uchar{31}{56}}
+\definecharacter greekIotadasia {\uchar{31}{57}}
+\definecharacter greekIotapsilivaria {\uchar{31}{58}}
+\definecharacter greekIotadasiavaria {\uchar{31}{59}}
+\definecharacter greekIotapsilitonos {\uchar{31}{60}}
+\definecharacter greekIotadasiatonos {\uchar{31}{61}}
+\definecharacter greekIotapsiliperispomeni {\uchar{31}{62}}
+\definecharacter greekIotadasiaperispomeni {\uchar{31}{63}}
+\definecharacter greekomicronpsili {\uchar{31}{64}} % 1f40
+\definecharacter greekomicrondasia {\uchar{31}{65}}
+\definecharacter greekomicronpsilivaria {\uchar{31}{66}}
+\definecharacter greekomicrondasiavaria {\uchar{31}{67}}
+\definecharacter greekomicronpsilitonos {\uchar{31}{68}}
+\definecharacter greekomicrondasiatonos {\uchar{31}{69}}
+\definecharacter greekOmicronpsili {\uchar{31}{72}}
+\definecharacter greekOmicrondasia {\uchar{31}{73}}
+\definecharacter greekOmicronpsilivaria {\uchar{31}{74}}
+\definecharacter greekOmicrondasiavaria {\uchar{31}{75}}
+\definecharacter greekOmicronpsilitonos {\uchar{31}{76}}
+\definecharacter greekOmicrondasiatonos {\uchar{31}{77}}
+\definecharacter greekupsilonpsili {\uchar{31}{80}} % 1f50
+\definecharacter greekupsilondasia {\uchar{31}{81}}
+\definecharacter greekupsilonpsilivaria {\uchar{31}{82}}
+\definecharacter greekupsilondasiavaria {\uchar{31}{83}}
+\definecharacter greekupsilonpsilitonos {\uchar{31}{84}}
+\definecharacter greekupsilondasiatonos {\uchar{31}{85}}
+\definecharacter greekupsilonpsiliperispomeni {\uchar{31}{86}}
+\definecharacter greekupsilondasiaperispomeni {\uchar{31}{87}}
+\definecharacter greekUpsilondasia {\uchar{31}{89}}
+\definecharacter greekUpsilondasiavaria {\uchar{31}{91}}
+\definecharacter greekUpsilondasiatonos {\uchar{31}{93}}
+\definecharacter greekUpsilondasiaperispomeni {\uchar{31}{95}}
+\definecharacter greekomegapsili {\uchar{31}{96}} % 1f60
+\definecharacter greekomegadasia {\uchar{31}{97}}
+\definecharacter greekomegapsilivaria {\uchar{31}{98}}
+\definecharacter greekomegadasiavaria {\uchar{31}{99}}
+\definecharacter greekomegapsilitonos {\uchar{31}{100}}
+\definecharacter greekomegadasiatonos {\uchar{31}{101}}
+\definecharacter greekomegapsiliperispomeni {\uchar{31}{102}}
+\definecharacter greekomegadasiaperispomeni {\uchar{31}{103}}
+\definecharacter greekOmegapsili {\uchar{31}{104}}
+\definecharacter greekOmegadasia {\uchar{31}{105}}
+\definecharacter greekOmegapsilivaria {\uchar{31}{106}}
+\definecharacter greekOmegadasiavaria {\uchar{31}{107}}
+\definecharacter greekOmegapsilitonos {\uchar{31}{108}}
+\definecharacter greekOmegadasiatonos {\uchar{31}{109}}
+\definecharacter greekOmegapsiliperispomeni {\uchar{31}{110}}
+\definecharacter greekOmegadasiaperispomeni {\uchar{31}{111}}
+\definecharacter greekalphavaria {\uchar{31}{112}} % 1f70
+\definecharacter greekalphaoxia {\uchar{31}{113}}
+\definecharacter greekepsilonvaria {\uchar{31}{114}}
+\definecharacter greekepsilonoxia {\uchar{31}{115}}
+\definecharacter greeketavaria {\uchar{31}{116}}
+\definecharacter greeketaoxia {\uchar{31}{117}}
+\definecharacter greekiotavaria {\uchar{31}{118}}
+\definecharacter greekiotaoxia {\uchar{31}{119}}
+\definecharacter greekomicronvaria {\uchar{31}{120}}
+\definecharacter greekomicronoxia {\uchar{31}{121}}
+\definecharacter greekupsilonvaria {\uchar{31}{122}}
+\definecharacter greekupsilonoxia {\uchar{31}{123}}
+\definecharacter greekomegavaria {\uchar{31}{124}}
+\definecharacter greekomegaoxia {\uchar{31}{125}}
+\definecharacter greekalphaiotasubpsili {\uchar{31}{128}} % 1f80
+\definecharacter greekalphaiotasubdasia {\uchar{31}{129}}
+\definecharacter greekalphaiotasubpsilivaria {\uchar{31}{130}}
+\definecharacter greekalphaiotasubdasiavaria {\uchar{31}{131}}
+\definecharacter greekalphaiotasubpsilitonos {\uchar{31}{132}}
+\definecharacter greekalphaiotasubdasiatonos {\uchar{31}{133}}
+\definecharacter greekalphaiotasubpsiliperispomeni {\uchar{31}{134}}
+\definecharacter greekalphaiotasubdasiaperispomeni {\uchar{31}{135}}
+\definecharacter greekAlphaiotasubpsili {\uchar{31}{136}}
+\definecharacter greekAlphaiotasubdasia {\uchar{31}{137}}
+\definecharacter greekAlphaiotasubpsilivaria {\uchar{31}{138}}
+\definecharacter greekAlphaiotasubdasiavaria {\uchar{31}{139}}
+\definecharacter greekAlphaiotasubpsilitonos {\uchar{31}{140}}
+\definecharacter greekAlphaiotasubdasiatonos {\uchar{31}{141}}
+\definecharacter greekAlphaiotasubpsiliperispomeni {\uchar{31}{142}}
+\definecharacter greekAlphaiotasubdasiaperispomeni {\uchar{31}{143}}
+\definecharacter greeketaiotasubpsili {\uchar{31}{144}} % 1f90
+\definecharacter greeketaiotasubdasia {\uchar{31}{145}}
+\definecharacter greeketaiotasubpsilivaria {\uchar{31}{146}}
+\definecharacter greeketaiotasubdasiavaria {\uchar{31}{147}}
+\definecharacter greeketaiotasubpsilitonos {\uchar{31}{148}}
+\definecharacter greeketaiotasubdasiatonos {\uchar{31}{149}}
+\definecharacter greeketaiotasubpsiliperispomeni {\uchar{31}{150}}
+\definecharacter greeketaiotasubdasiaperispomeni {\uchar{31}{151}}
+\definecharacter greekEtaiotasubpsili {\uchar{31}{152}}
+\definecharacter greekEtaiotasubdasia {\uchar{31}{153}}
+\definecharacter greekEtaiotasubpsilivaria {\uchar{31}{154}}
+\definecharacter greekEtaiotasubdasiavaria {\uchar{31}{155}}
+\definecharacter greekEtaiotasubpsilitonos {\uchar{31}{156}}
+\definecharacter greekEtaiotasubdasiatonos {\uchar{31}{157}}
+\definecharacter greekEtaiotasubpsiliperispomeni {\uchar{31}{158}}
+\definecharacter greekEtaiotasubdasiaperispomeni {\uchar{31}{159}}
+\definecharacter greekomegaiotasubpsili {\uchar{31}{160}} % 1fa0
+\definecharacter greekomegaiotasubdasia {\uchar{31}{161}}
+\definecharacter greekomegaiotasubpsilivaria {\uchar{31}{162}}
+\definecharacter greekomegaiotasubdasiavaria {\uchar{31}{163}}
+\definecharacter greekomegaiotasubpsilitonos {\uchar{31}{164}}
+\definecharacter greekomegaiotasubdasiatonos {\uchar{31}{165}}
+\definecharacter greekomegaiotasubpsiliperispomeni {\uchar{31}{166}}
+\definecharacter greekomegaiotasubdasiaperispomeni {\uchar{31}{167}}
+\definecharacter greekOmegaiotasubpsili {\uchar{31}{168}}
+\definecharacter greekOmegaiotasubdasia {\uchar{31}{169}}
+\definecharacter greekOmegaiotasubpsilivaria {\uchar{31}{170}}
+\definecharacter greekOmegaiotasubdasiavaria {\uchar{31}{171}}
+\definecharacter greekOmegaiotasubpsilitonos {\uchar{31}{172}}
+\definecharacter greekOmegaiotasubdasiatonos {\uchar{31}{173}}
+\definecharacter greekOmegaiotasubpsiliperispomeni {\uchar{31}{174}}
+\definecharacter greekOmegaiotasubdasiaperispomeni {\uchar{31}{175}}
+\definecharacter greekalphavrachy {\uchar{31}{176}} % 1fb0
+\definecharacter greekalphamacron {\uchar{31}{177}}
+\definecharacter greekalphaiotasubvaria {\uchar{31}{178}}
+\definecharacter greekalphaiotasub {\uchar{31}{179}}
+\definecharacter greekalphaiotasubtonos {\uchar{31}{180}}
+\definecharacter greekalphaperispomeni {\uchar{31}{182}}
+\definecharacter greekalphaiotasubperispomeni {\uchar{31}{183}}
+\definecharacter greekAlphavrachy {\uchar{31}{184}}
+\definecharacter greekAlphamacron {\uchar{31}{185}}
+\definecharacter greekAlphavaria {\uchar{31}{186}}
+\definecharacter greekAlphatonos {\uchar{31}{187}}
+\definecharacter greekAlphaiotasub {\uchar{31}{188}}
+\definecharacter greekCoronis {\uchar{31}{189}}
+\definecharacter greekprosgegrammeni {\uchar{31}{190}}
+\definecharacter greekpsili {\uchar{31}{191}}
+\definecharacter greekperispomeni {\uchar{31}{192}} % 1fc0
+\definecharacter greekdialytikaperispomeni {\uchar{31}{193}}
+\definecharacter greeketaiotasubvaria {\uchar{31}{194}}
+\definecharacter greeketaiotasub {\uchar{31}{195}}
+\definecharacter greeketaiotasubtonos {\uchar{31}{196}}
+\definecharacter greeketaperispomeni {\uchar{31}{198}}
+\definecharacter greeketaiotasubperispomeni {\uchar{31}{199}}
+\definecharacter greekEpsilonvaria {\uchar{31}{200}}
+\definecharacter greekEpsilontonos {\uchar{31}{201}}
+\definecharacter greekEtavaria {\uchar{31}{202}}
+\definecharacter greekEtatonos {\uchar{31}{203}}
+\definecharacter greekEtaiotasub {\uchar{31}{204}}
+\definecharacter greekpsilivaria {\uchar{31}{205}}
+\definecharacter greekpsilitonos {\uchar{31}{206}}
+\definecharacter greekpsiliperispomeni {\uchar{31}{207}}
+\definecharacter greekiotavrachy {\uchar{31}{208}} % 1fd0
+\definecharacter greekiotamacron {\uchar{31}{209}}
+\definecharacter greekiotadialytikavaria {\uchar{31}{210}}
+\definecharacter greekiotadialytikatonos {\uchar{31}{211}}
+\definecharacter greekiotaperispomeni {\uchar{31}{214}}
+\definecharacter greekiotadialytikaperispomeni {\uchar{31}{215}}
+\definecharacter greekIotavrachy {\uchar{31}{216}}
+\definecharacter greekIotamacron {\uchar{31}{217}}
+\definecharacter greekIotavaria {\uchar{31}{218}}
+\definecharacter greekIotatonos {\uchar{31}{219}}
+\definecharacter greekdasiavaria {\uchar{31}{221}}
+\definecharacter greekdasiatonos {\uchar{31}{222}}
+\definecharacter greekdasiaperispomeni {\uchar{31}{223}}
+\definecharacter greekupsilonvrachy {\uchar{31}{224}} % 1fe0
+\definecharacter greekupsilonmacron {\uchar{31}{225}}
+\definecharacter greekupsilondialytikavaria {\uchar{31}{226}}
+\definecharacter greekupsilondialytikatonos {\uchar{31}{227}}
+\definecharacter greekrhopsili {\uchar{31}{228}}
+\definecharacter greekrhodasia {\uchar{31}{229}}
+\definecharacter greekupsilonperispomeni {\uchar{31}{230}}
+\definecharacter greekupsilondialytikaperispomeni {\uchar{31}{231}}
+\definecharacter greekUpsilonvrachy {\uchar{31}{232}}
+\definecharacter greekUpsilonmacron {\uchar{31}{233}}
+\definecharacter greekUpsilonvaria {\uchar{31}{234}}
+\definecharacter greekUpsilontonos {\uchar{31}{235}}
+\definecharacter greekRhodasia {\uchar{31}{236}}
+\definecharacter greekdialytikavaria {\uchar{31}{237}}
+\definecharacter greekdialytikatonos {\uchar{31}{238}}
+\definecharacter greekvaria {\uchar{31}{239}}
+\definecharacter greekomegaiotasubvaria {\uchar{31}{242}}
+\definecharacter greekomegaiotasub {\uchar{31}{243}}
+\definecharacter greekomegaiotasubtonos {\uchar{31}{244}}
+\definecharacter greekomegaperispomeni {\uchar{31}{246}}
+\definecharacter greekomegaiotasubperispomeni {\uchar{31}{247}}
+\definecharacter greekOmicronvaria {\uchar{31}{248}}
+\definecharacter greekOmicrontonos {\uchar{31}{249}}
+\definecharacter greekOmegavaria {\uchar{31}{250}}
+\definecharacter greekOmegatonos {\uchar{31}{251}}
+\definecharacter greekOmegaiotasub {\uchar{31}{252}}
+\definecharacter greekoxia {\uchar{31}{253}}
+\definecharacter greekdasia {\uchar{31}{254}}
+\definecharacter greeksigmalunate {\uchar3{242}}
+\definecharacter greekSigmalunate {\uchar3{249}}
+\definecharacter greeksampi {\uchar3{225}}
+\definecharacter greekdigamma {\uchar3{221}}
+\definecharacter greekstigma {\uchar3{219}}
+\definecharacter greeknumkoppa {\uchar3{223}}
+\definecharacter greekkoppa {\uchar3{217}}
+\definecharacter greekupsilondiaeresis {\uchar3{203}}
+
+\stopencoding
+
+% Hebrew:
+
+\startencoding[uc]
+
+\definecharacter hebrewAlef {\uchar5{208}} % 05D0
+\definecharacter hebrewBet {\uchar5{209}}
+\definecharacter hebrewGimel {\uchar5{210}}
+\definecharacter hebrewDalet {\uchar5{211}}
+\definecharacter hebrewHe {\uchar5{212}}
+\definecharacter hebrewVav {\uchar5{213}}
+\definecharacter hebrewZayin {\uchar5{214}}
+\definecharacter hebrewHet {\uchar5{215}}
+\definecharacter hebrewTet {\uchar5{216}}
+\definecharacter hebrewYod {\uchar5{217}}
+\definecharacter hebrewKaffinal {\uchar5{218}}
+\definecharacter hebrewKaf {\uchar5{219}}
+\definecharacter hebrewLamed {\uchar5{220}}
+\definecharacter hebrewMemfinal {\uchar5{221}}
+\definecharacter hebrewMem {\uchar5{222}}
+\definecharacter hebrewNunfinal {\uchar5{223}}
+\definecharacter hebrewNun {\uchar5{224}}
+\definecharacter hebrewSamekh {\uchar5{225}}
+\definecharacter hebrewAyin {\uchar5{226}}
+\definecharacter hebrewPefinal {\uchar5{227}}
+\definecharacter hebrewPe {\uchar5{228}}
+\definecharacter hebrewTsadifinal {\uchar5{229}}
+\definecharacter hebrewTsadi {\uchar5{230}}
+\definecharacter hebrewQof {\uchar5{231}}
+\definecharacter hebrewResh {\uchar5{232}}
+\definecharacter hebrewShin {\uchar5{233}}
+\definecharacter hebrewTav {\uchar5{234}} % 05EA
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-uni.tex b/Master/texmf-dist/tex/context/base/enco-uni.tex
new file mode 100644
index 00000000000..c09c2e1bfb3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-uni.tex
@@ -0,0 +1,5 @@
+% temporary module, needed for downward compatibility
+
+% \input regi-uni.tex
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-vis.tex b/Master/texmf-dist/tex/context/base/enco-vis.tex
new file mode 100644
index 00000000000..3c1fd776566
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-vis.tex
@@ -0,0 +1,3 @@
+% temporary module, needed for downward compatibility
+
+\input regi-vis.tex \enableregime[viscii] \endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-vna.tex b/Master/texmf-dist/tex/context/base/enco-vna.tex
new file mode 100644
index 00000000000..05753f37b01
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-vna.tex
@@ -0,0 +1,145 @@
+%D \module
+%D [ file=enco-vna,
+%D version=1999.12.12,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Vietnamese Accents,
+%D author=Han The Thanh & Adam Lindsay & Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is originally derived from the some files Han The Thanh
+%D prepared for \LATEX. The dual accent support is still preliminary,
+%D but works ok. It's now adapted to named glyphs, and is activated by
+%D \type {\useencoding[thisfile]}.
+
+%D This was apparently buggy from the start: there is nothing to
+%D disambiguate \type {\ohorn} from \type {\ohook}. Both are entered
+%D with \type {\h{o}} (AL)!
+
+%D Once stable, this code will move to \type {enco-acc.tex}.
+
+\startencoding[default]
+
+\defineaccent h A {\Ahook}
+\defineaccent d A {\Adotbelow}
+\defineaccent ` ^A {\Acircumflexgrave}
+\defineaccent ' ^A {\Acircumflexacute}
+\defineaccent ~ ^A {\Acircumflextilde}
+\defineaccent h ^A {\Acircumflexhook}
+\defineaccent d ^A {\Acircumflexdotbelow}
+\defineaccent ` uA {\Abrevegrave}
+\defineaccent ' uA {\Abreveacute}
+\defineaccent ~ uA {\Abrevetilde}
+\defineaccent h uA {\Abrevehook}
+\defineaccent d uA {\Abrevedotbelow}
+\defineaccent h E {\Ehook}
+\defineaccent d E {\Edotbelow}
+\defineaccent ` ^E {\Ecircumflexgrave}
+\defineaccent ' ^E {\Ecircumflexacute}
+\defineaccent ~ ^E {\Ecircumflextilde}
+\defineaccent h ^E {\Ecircumflexhook}
+\defineaccent d ^E {\Ecircumflexdotbelow}
+\defineaccent h I {\Ihook}
+\defineaccent d I {\Idotbelow}
+\defineaccent h O {\Ohook}
+\defineaccent d O {\Odotbelow}
+\defineaccent ` ^O {\Ocircumflexgrave}
+\defineaccent ' ^O {\Ocircumflexacute}
+\defineaccent ~ ^O {\Ocircumflextilde}
+\defineaccent h ^O {\Ocircumflexhook}
+\defineaccent d ^O {\Ocircumflexdotbelow}
+%defineaccent h O {\Ohorn} % !!! conflict with \Ohook!
+\defineaccent ` hO {\Ohorngrave}
+\defineaccent ` {\Ohorn} {\Ohorngrave}
+\defineaccent ' hO {\Ohornacute}
+\defineaccent ' {\Ohorn} {\Ohornacute}
+\defineaccent ~ hO {\Ohorntilde}
+\defineaccent ~ {\Ohorn} {\Ohorntilde}
+\defineaccent h hO {\Ohornhook}
+\defineaccent h {\Ohorn} {\Ohornhook}
+\defineaccent d hO {\Ohorndotbelow}
+\defineaccent d {\Ohorn} {\Ohorndotbelow}
+\defineaccent h U {\Uhook}
+\defineaccent d U {\Udotbelow}
+%defineaccent h U {\Uhorn} % !!! conflict with \Uhook! honestly, people!
+\defineaccent ` hU {\Uhorngrave}
+\defineaccent ` {\Uhorn} {\Uhorngrave}
+\defineaccent ' hU {\Uhornacute}
+\defineaccent ' {\Uhorn} {\Uhornacute}
+\defineaccent ~ hU {\Uhorntilde}
+\defineaccent ~ {\Uhorn} {\Uhorntilde}
+\defineaccent h hU {\Uhornhook}
+\defineaccent h {\Uhorn} {\Uhornhook}
+\defineaccent d hU {\Uhorndotbelow}
+\defineaccent d {\Uhorn} {\Uhorndotbelow}
+\defineaccent ` Y {\Ygrave}
+\defineaccent ' Y {\Yacute}
+\defineaccent ~ Y {\Ytilde}
+\defineaccent h Y {\Yhook}
+\defineaccent d Y {\Ydotbelow}
+\defineaccent h a {\ahook}
+\defineaccent d a {\adotbelow}
+\defineaccent ` ^a {\acircumflexgrave}
+\defineaccent ' ^a {\acircumflexacute}
+\defineaccent ~ ^a {\acircumflextilde}
+\defineaccent h ^a {\acircumflexhook}
+\defineaccent d ^a {\acircumflexdotbelow}
+\defineaccent ` ua {\abrevegrave}
+\defineaccent ' ua {\abreveacute}
+\defineaccent ~ ua {\abrevetilde}
+\defineaccent h ua {\abrevehook}
+\defineaccent d ua {\abrevedotbelow}
+\defineaccent h e {\ehook}
+\defineaccent d e {\edotbelow}
+\defineaccent ` ^e {\ecircumflexgrave}
+\defineaccent ' ^e {\ecircumflexacute}
+\defineaccent ~ ^e {\ecircumflextilde}
+\defineaccent h ^e {\ecircumflexhook}
+\defineaccent d ^e {\ecircumflexdotbelow}
+\defineaccent h i {\ihook}
+\defineaccent d i {\idotbelow}
+\defineaccent h o {\ohook}
+\defineaccent d o {\odotbelow}
+\defineaccent ^ o {\ocircumflex}
+\defineaccent ` ^o {\ocircumflexgrave}
+\defineaccent ' ^o {\ocircumflexacute}
+\defineaccent ~ ^o {\ocircumflextilde}
+\defineaccent h ^o {\ocircumflexhook}
+\defineaccent d ^o {\ocircumflexdotbelow}
+%defineaccent h o {\ohorn} % !!!
+\defineaccent ` ho {\ohorngrave}
+\defineaccent ' ho {\ohornacute}
+\defineaccent ~ ho {\ohorntilde}
+\defineaccent h ho {\ohornhook}
+\defineaccent d ho {\ohorndotbelow}
+\defineaccent ` {\ohorn} {\ohorngrave}
+\defineaccent ' {\ohorn} {\ohornacute}
+\defineaccent ~ {\ohorn} {\ohorntilde}
+\defineaccent h {\ohorn} {\ohornhook}
+\defineaccent d {\ohorn} {\ohorndotbelow}
+\defineaccent h u {\uhook}
+\defineaccent d u {\udotbelow}
+%defineaccent h u {\uhorn} % !!!
+\defineaccent ` hu {\uhorngrave}
+\defineaccent ' hu {\uhornacute}
+\defineaccent ~ hu {\uhorntilde}
+\defineaccent h hu {\uhornhook}
+\defineaccent d hu {\uhorndotbelow}
+\defineaccent ` {\uhorn} {\uhorngrave}
+\defineaccent ' {\uhorn} {\uhornacute}
+\defineaccent ~ {\uhorn} {\uhorntilde}
+\defineaccent h {\uhorn} {\uhornhook}
+\defineaccent d {\uhorn} {\uhorndotbelow}
+\defineaccent ` y {\ygrave}
+\defineaccent ' y {\yacute}
+\defineaccent ~ y {\ytilde}
+\defineaccent h y {\yhook}
+\defineaccent d y {\ydotbelow}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-win.tex b/Master/texmf-dist/tex/context/base/enco-win.tex
new file mode 100644
index 00000000000..826371d8a68
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-win.tex
@@ -0,0 +1,7 @@
+% temporary module, needed for downward compatibility
+
+%\input regi-win.tex
+
+\enableregime[windows]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/enco-x5.tex b/Master/texmf-dist/tex/context/base/enco-x5.tex
new file mode 100644
index 00000000000..32a7399ca49
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/enco-x5.tex
@@ -0,0 +1,218 @@
+%D \module
+%D [ file=enco-x5,
+%D version=1999.12.12,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Vietnamese Encoding,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is derived from the some files Han The Thanh
+%D prepared for \LATEX. The dual accent support is still
+%D preliminary, but works ok.
+
+\startencoding[x5]
+
+\definecharacter textgrave 0
+\definecharacter textacute 1
+\definecharacter textcircumflex 2
+\definecharacter texttilde 3
+\definecharacter textdiaeresis 4
+\definecharacter texthungarumlaut 5
+\definecharacter textring 6
+\definecharacter textcaron 7
+\definecharacter textbreve 8
+\definecharacter textmacron 9
+\definecharacter textdotaccent 10
+\definecharacter textcedilla 11
+\definecharacter textogonek 12
+
+\definecharacter dotlessi 25
+\definecharacter DJ 30
+\definecharacter dj 31
+
+\defineaccent ` A 128
+\defineaccent ' A 129
+\defineaccent ~ A 130
+\defineaccent h A 131
+\defineaccent d A 132
+\defineaccent ^ A 133
+\defineaccent ` ^A 134
+\defineaccent ' ^A 135
+\defineaccent ~ ^A 136
+\defineaccent h ^A 137
+\defineaccent d ^A 138
+\defineaccent u A 139
+\defineaccent ` uA 140
+\defineaccent ' uA 141
+\defineaccent ~ uA 142
+\defineaccent h uA 143
+\defineaccent d uA 144
+\defineaccent ` E 145
+\defineaccent ' E 146
+\defineaccent ~ E 147
+\defineaccent h E 148
+\defineaccent d E 149
+\defineaccent ^ E 150
+\defineaccent ` ^E 151
+\defineaccent ' ^E 152
+\defineaccent ~ ^E 153
+\defineaccent h ^E 154
+\defineaccent d ^E 155
+\defineaccent ` I 156
+\defineaccent ' I 157
+\defineaccent ~ I 158
+\defineaccent h I 159
+\defineaccent d I 192
+\defineaccent ` O 193
+\defineaccent ' O 194
+\defineaccent ~ O 195
+\defineaccent h O 196
+\defineaccent d O 197
+\defineaccent ^ O 198
+\defineaccent ` ^O 199
+\defineaccent ' ^O 200
+\defineaccent ~ ^O 201
+\defineaccent h ^O 202
+\defineaccent d ^O 203
+\defineaccent h O 204
+\defineaccent ` hO 205
+\defineaccent ' hO 206
+\defineaccent ~ hO 207
+\defineaccent h hO 208
+\defineaccent d hO 209
+\defineaccent ` U 210
+\defineaccent ' U 211
+\defineaccent ~ U 212
+\defineaccent h U 213
+\defineaccent d U 214
+\defineaccent h U 215
+\defineaccent ` hU 216
+\defineaccent ' hU 217
+\defineaccent ~ hU 218
+\defineaccent h hU 219
+\defineaccent d hU 220
+\defineaccent ` Y 221
+\defineaccent ' Y 222
+\defineaccent ~ Y 223
+\defineaccent h Y 26
+\defineaccent d Y 28
+\defineaccent ` a 160
+\defineaccent ' a 161
+\defineaccent ~ a 162
+\defineaccent h a 163
+\defineaccent d a 164
+\defineaccent ^ a 165
+\defineaccent ` ^a 166
+\defineaccent ' ^a 167
+\defineaccent ~ ^a 168
+\defineaccent h ^a 169
+\defineaccent d ^a 170
+\defineaccent u a 171
+\defineaccent ` ua 172
+\defineaccent ' ua 173
+\defineaccent ~ ua 174
+\defineaccent h ua 175
+\defineaccent d ua 176
+\defineaccent ` e 177
+\defineaccent ' e 178
+\defineaccent ~ e 179
+\defineaccent h e 180
+\defineaccent d e 181
+\defineaccent ^ e 182
+\defineaccent ` ^e 183
+\defineaccent ' ^e 184
+\defineaccent ~ ^e 185
+\defineaccent h ^e 186
+\defineaccent d ^e 187
+\defineaccent ` i 188
+\defineaccent ' i 189
+\defineaccent ~ i 190
+\defineaccent h i 191
+\defineaccent d i 224
+\defineaccent ` o 225
+\defineaccent ' o 226
+\defineaccent ~ o 227
+\defineaccent h o 228
+\defineaccent d o 229
+\defineaccent ^ o 230
+\defineaccent ` ^o 231
+\defineaccent ' ^o 232
+\defineaccent ~ ^o 233
+\defineaccent h ^o 234
+\defineaccent d ^o 235
+\defineaccent h o 236
+\defineaccent ` ho 237
+\defineaccent ' ho 238
+\defineaccent ~ ho 239
+\defineaccent h ho 240
+\defineaccent d ho 241
+\defineaccent ` u 242
+\defineaccent ' u 243
+\defineaccent ~ u 244
+\defineaccent h u 245
+\defineaccent d u 246
+\defineaccent h u 247
+\defineaccent ` hu 248
+\defineaccent ' hu 249
+\defineaccent ~ hu 250
+\defineaccent h hu 251
+\defineaccent d hu 252
+\defineaccent ` y 253
+\defineaccent ' y 254
+\defineaccent ~ y 255
+\defineaccent h y 27
+\defineaccent d y 29
+
+\stopencoding
+
+\endinput
+
+% \startencoding [x5]
+%
+% \definecharacter aa {\xfiveencodedaa}
+% \definecharacter AA {\xfiveencodedAA}
+%
+% \stopencoding
+%
+% \def\xfiveencodedaa%
+% {\accent23a}
+%
+% \def\xfiveencodedAA%
+% {\leavevmode
+% \setbox\z@\hbox{h}%
+% \dimen@\ht\z@
+% \advance\dimen@ -1ex
+% \rlap{\raise.67\dimen@\hbox{\char23}}A}
+
+% \quotesinglbase 13
+% \guilsinglleft 14
+% \guilsinglright 15
+% \textquotedblleft 16
+% \textquotedblright 17
+% \quotedblbase 18
+% \guillemotleft 19
+% \guillemotright 20
+% \textendash 21
+% \textemdash 22
+% \textcompwordmark 23
+% \textperthousand \% \char 24
+% \textpertenthousand \%\char 24\char 24
+% \textvisiblespace 32
+% \textquotedbl `\"
+% \textdollar `\$
+% \textquoteright `\'
+% \textless `\<
+% \textgreater `\>
+% \textbackslash `\
+% \textasciicircum `\^
+% \textunderscore 95
+% \textquoteleft `\`
+% \textbraceleft `\{
+% \textbar `\|
+% \textbraceright `\}
+% \textasciitilde `\~
diff --git a/Master/texmf-dist/tex/context/base/filt-bas.tex b/Master/texmf-dist/tex/context/base/filt-bas.tex
new file mode 100644
index 00000000000..ca3bc3d7007
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/filt-bas.tex
@@ -0,0 +1,63 @@
+%D \module
+%D [ file=filt-bas,
+%D version=2000.09.19,
+%D title=\CONTEXT\ Filter Macros,
+%D subtitle=A Base Collection,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% BEWARE: THIS IS A TEST MODULE, NAMES MAY CHANGE!
+
+\definefiltersynonym [utf8 to unicode16] [inutf8]
+
+\definefiltersynonym [persian fix] [FarsiToArabic]
+\definefiltersynonym [arabic analysis] [uni2cuni]
+\definefiltersynonym [arabic glyphs] [cuni2oar]
+
+\definefiltersequence
+ [farsi]
+ [utf8 to unicode16,
+ persian fix,
+ arabic analysis,
+ arabic glyphs]
+
+\definefiltersynonym [basic context analysis step1] [bcaa-1]
+\definefiltersynonym [basic context analysis step2] [bcaa-2]
+\definefiltersynonym [basic context analysis step3] [bcaa-3]
+\definefiltersynonym [farsi processing for uomarab] [uomarab-farsi]
+
+\definefiltersynonym [basic presentation forms to sf] [bpftosf]
+
+\definefiltersynonym [omega persian fix] [FarsiToArabic]
+\definefiltersynonym [omega arabic analysis] [uni2cuni]
+\definefiltersynonym [omega arabic glyphs] [cuni2oar]
+
+\definefiltersequence
+ [farsi-1]
+ [utf8 to unicode16,
+ omega persian fix,
+ omega arabic analysis,
+ omega arabic glyphs]
+
+\definefiltersequence
+ [farsi-2]
+ [utf8 to unicode16,
+ basic context analysis step1,
+ basic context analysis step2,
+ basic context analysis step3,
+ farsi processing for uomarab]
+
+\definefiltersequence
+ [farsi-3]
+ [utf8 to unicode16,
+ basic context analysis step1,
+ basic context analysis step2,
+ basic context analysis step3,
+ basic presentation forms to sf]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/filt-ini.tex b/Master/texmf-dist/tex/context/base/filt-ini.tex
new file mode 100644
index 00000000000..ec4fa257b76
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/filt-ini.tex
@@ -0,0 +1,142 @@
+%D \module
+%D [ file=filt-ini,
+%D version=2000.09.19,
+%D title=\CONTEXT\ Filter Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Filter Macros (ini)}
+
+% \ifx\OmegaVersion\undefined
+
+% \let\definefiltersynonym \gobbledoubleempty
+% \let\definefiltersequence \gobbledoubleempty
+% \unexpanded\def\usefiltersequence {\gobblesingleempty}
+% \let\usefilter \gobblesingleempty
+% \let\truefiltername \gobbleoneargument
+
+% \expandafter \endinput
+% \fi
+
+\unprotect
+
+%D The real work starts here.
+
+\startmessages dutch library: filters
+ title: filter
+ 1: filter -- wordt geladen
+ 2: onbekend filter --
+\stopmessages
+
+\startmessages english library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages german library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages czech library: filters
+ title: filter
+ 1: filter -- is loaded
+ 2: unknown filter --
+\stopmessages
+
+\startmessages italian library: filters
+ title: filtri
+ 1: filtro -- caricato
+ 2: filtro sconosciuto --
+\stopmessages
+
+%D \macros
+%D {definefiltersynonym}
+
+\def\definefiltersynonym
+ {\dodoubleargument\dodefinefiltersynonym}
+
+\def\dodefinefiltersynonym[#1][#2]%
+ {\setvalue{\??or#1}{#2}}
+
+%D \macros
+%D {truefiltername}
+
+\def\truefiltername#1%
+ {\ifundefined{\??or#1}#1\else\truefiltername{\getvalue{\??or#1}}\fi}
+
+%D \macros
+%D {definefiltersequence}
+
+\def\definefiltersequence%
+ {\dodoubleargument\dodefinefiltersequence}
+
+\def\dodefinefiltersequence[#1][#2]%
+ {\setvalue{\??ot#1}{#2}}
+
+%D \macros
+%D {usefiltersequence}
+%D
+
+\def\magicocpnumber{1}
+
+% \def\dodousefiltersequence#1%
+% {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax
+% \@EA \appendtoks
+% \@EA \addbeforeocplist \@EA \magicocpnumber \csname\??or:#1\endcsname
+% \to \scratchtoks}
+
+% one can do:
+%
+% \definefiltersequence
+% [farsi]
+% [utf8 to unicode16=>5,
+% persian fix,
+% arabic analysis=>3,
+% arabic glyphs]
+%
+% so, => is used to signal a priority
+
+\def\dodousefiltersequence#1%
+ {\expandafter\ocp\csname\??or:#1\endcsname=\truefiltername{#1}\relax
+ \splitstring#1\at=>\to\!!stringa\and\!!stringb
+ \edef\!!stringb{\number\ifx\!!stringb\empty\magicocpnumber\else\!!stringb\fi}%
+ \appendetoks
+ \noexpand\addbeforeocplist
+ \!!stringb\space
+ \expandafter\noexpand\csname\??or:\!!stringa\endcsname
+ \to \scratchtoks}
+
+\unexpanded\def\usefiltersequence[#1]%
+ {\edef\currentfiltersequence{\getvalue{\??ot#1}}%
+ \scratchtoks\emptytoks
+ \processcommacommand[\currentfiltersequence]\dodousefiltersequence
+ % \showthe\scratchtoks
+ \expanded{\ocplist\csname\??ot:#1\endcsname=\the\scratchtoks}\nullocplist
+ \expanded{\pushocplist\csname\??ot:#1\endcsname}\relax}
+
+%D \macros
+%D {usefilter}
+
+\def\dousefilter#1%
+ {\doifundefined{\c!file\f!filterprefix#1}%
+ {\letvalue{\c!file\f!filterprefix#1}\empty
+ \makeshortfilename[\f!filterprefix#1]%
+ \startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!filters1{#1}}
+ {\showmessage\m!filters2{#1}}%
+ \stopreadingfile}}
+
+\def\usefilter[#1]%
+ {\processcommalist[#1]\dousefilter}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-arb.tex b/Master/texmf-dist/tex/context/base/font-arb.tex
new file mode 100644
index 00000000000..3ec0395f32a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-arb.tex
@@ -0,0 +1,5 @@
+\unprotected \writestatus\m!systems{load ARABTEX as a module instead}
+
+\usemodule[arabtex]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/font-bfm.tex b/Master/texmf-dist/tex/context/base/font-bfm.tex
new file mode 100644
index 00000000000..a7bf398ef13
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-bfm.tex
@@ -0,0 +1,196 @@
+%D \module
+%D [ file=font-bfm,
+%D version=2003.11.25,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Mixed Normal and Bold Math,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Font Macros / Mixed Bold Math Support}
+
+%D The following example demonstrates how to use normal, bold, and mixed
+%D normal|/|bold math. Since not everyone has the Lucida on his|/|her
+%D machine we don't show the result.
+%D
+%D \starttyping
+%D \setupformulas
+%D [method=bold]
+%D
+%D \definetypeface [mainface] [rm] [serif] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [mainface] [tt] [mono] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [mainface] [ss] [sans] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [mainface] [mm] [math] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [mainface] [mm] [bfmath] [lucida] [default] [encoding=texnansi]
+%D
+%D \definetypeface [boldmath] [rm] [serif] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [tt] [mono] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [ss] [sans] [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [mm] [boldmath] [lucida] [default] [encoding=texnansi]
+%D
+%D \switchtobodyfont[mainface]
+%D
+%D \startlines
+%D $\mainface x=10 \Gamma \Delta \alpha \delta \zeta$
+%D $\boldmath x=10 \Gamma \Delta \alpha \delta \zeta$
+%D \stoplines
+%D
+%D \startformula
+%D x=12=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[mainface]
+%D x=12=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath]
+%D x=12=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,8pt]
+%D x=8=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,12pt,small]
+%D x=12s=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,small]
+%D x=s=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,10pt]
+%D x=10=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,11pt,small]
+%D x=11s=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startformula[boldmath,9pt]
+%D x=9=\fontbody \Gamma \Delta \alpha \delta \zeta
+%D \stopformula
+%D
+%D \startlines
+%D \formula{1=2x}
+%D \formula[boldmath]{1=2x}
+%D \formula[mainface]{1=2x}
+%D \formula[mainface]{1 \theta \Gamma = \bfm 1 \beta \hbox{\sl test}\Gamma \alpha ' x x}
+%D \formula[mainface]{1 \theta \Gamma = {\bfm 1 \beta \hbox{\sl test}\Gamma \alpha ' x} x}
+%D \stoplines
+%D \stoptyping
+
+\unprotect
+
+%D \TEX\ has some hard wired expectations about where to look for
+%D certain characters. This means that we cannot overload the families
+%D 0 upto~3. Also, since we use C upto~F for math as well, we are left
+%D with the range 4 upto~B.
+
+\chardef\mrbffam\itfam \edef\c!mrbf{\c!mr\c!bf} \let\hexmrbffam\hexitfam % 4 it
+\chardef\exbffam\slfam \edef\c!exbf{\c!ex\c!bf} \let\hexexbffam\hexslfam % 5 sl
+\chardef\mibffam\bffam \edef\c!mibf{\c!mi\c!bf} \let\hexmibffam\hexbffam % 6 bf
+\chardef\sybffam\nnfam \edef\c!sybf{\c!sy\c!bf} \let\hexsybffam\hexnnfam % 7 nn
+\chardef\mabffam\bsfam \edef\c!mabf{\c!ma\c!bf} \let\hexmabffam\hexbsfam % 8 bs
+\chardef\mbbffam\bifam \edef\c!mbbf{\c!mb\c!bf} \let\hexmbbffam\hexbifam % 9 bi
+\chardef\mcbffam\scfam \edef\c!mcbf{\c!mc\c!bf} \let\hexmcbffam\hexscfam % A sc
+\chardef\mdbffam\scfam \edef\c!mdbf{\c!mc\c!bf} \let\hexmdbffam\hexscfam % B tf % tricky
+
+%D The next bunch of code looks horrible and tricky but one has to keep in
+%D mind that because \TEX\ makes several passes over the math list we need to
+%D make sure that grouping is handled well. Later assignments to a family
+%D overload previous ones, the last one counts.
+
+\newtoks \boldmathstrategies
+\newtoks \boldsymbstrategies
+
+\appendtoks
+ \dosetmathfamily\mrbffam\textface\scriptface\scriptscriptface\c!mrbf\mrfallback
+ \dosetmathfamily\mibffam\textface\scriptface\scriptscriptface\c!mibf\empty
+ \dosetmathfamily\sybffam\textface\scriptface\scriptscriptface\c!sybf\empty
+ \dosetmathfamily\exbffam\textface\textface \textface \c!exbf\empty
+ \dosetmathfamily\mabffam\textface\scriptface\scriptscriptface\c!mabf\empty
+ \dosetmathfamily\mbbffam\textface\scriptface\scriptscriptface\c!mbbf\empty
+ \dosetmathfamily\mcbffam\textface\scriptface\scriptscriptface\c!mcbf\empty
+\to \boldmathstrategies
+
+\appendtoks
+ \dosetskewchar\mifam\defaultskewcharmi
+ \dosetskewchar\syfam\defaultskewcharsy
+\to \boldmathstrategies
+
+\appendtoks
+ \dosetsymbfamily\mrbffam\textface\scriptface\scriptscriptface\c!mrbf
+ \dosetsymbfamily\mibffam\textface\scriptface\scriptscriptface\c!mibf
+ \dosetsymbfamily\sybffam\textface\scriptface\scriptscriptface\c!sybf
+ \dosetsymbfamily\exbffam\textface\textface \textface \c!exbf
+ \dosetsymbfamily\mabffam\textface\scriptface\scriptscriptface\c!mabf
+ \dosetsymbfamily\mbbffam\textface\scriptface\scriptscriptface\c!mbbf
+ \dosetsymbfamily\mcbffam\textface\scriptface\scriptscriptface\c!mcbf
+\to \boldsymbstrategies
+
+%D Here comes the real mess (due to semi||global settings en multiple
+%D passes over the math list once the input is expanded.
+
+\newevery \everyboldfacemath \relax
+\chardef \boldfacemathmethod \zerocount
+
+\appendtoks
+ \ifcase\boldfacemathmethod \else \the\boldmathstrategies \fi
+\to \mathstrategies
+
+\appendtoks
+ \ifcase\boldfacemathmethod \else \the\boldsymbstrategies \fi
+\to \symbstrategies
+
+\appendtoks
+ \let\mrfam\mrbffam \let\c!mr\c!mrbf \let\hexmrfam\hexmrbffam
+ \let\mifam\mibffam \let\c!mi\c!mibf \let\hexmifam\hexmibffam
+ \let\syfam\sybffam \let\c!sy\c!sybf \let\hexsyfam\hexsybffam
+ \let\exfam\exbffam \let\c!ex\c!exbf \let\hexexfam\hexexbffam
+ \let\mafam\mabffam \let\c!ma\c!mabf \let\hexmafam\hexmabffam
+ \let\mbfam\mbbffam \let\c!mb\c!mbbf \let\hexmbfam\hexmbbffam
+ \let\mcfam\mcbffam \let\c!mc\c!mcbf \let\hexmcfam\hexmcbffam
+\to \everyboldfacemath
+
+\appendtoks
+ \let\mathsubfamily\c!bf
+\to \everyboldfacemath
+
+\appendtoks
+ \synchronizemath \aftergroup\synchronizemath
+\to \everyboldfacemath
+
+%D \macros
+%D {boldfacemath, bfm, autoboldfacemath}
+%D
+%D These are the user commands, with \type {\bfm} being the most comfortable.
+
+\def\boldfacemath {\ifcase\boldfacemathmethod\else\the\everyboldfacemath\fi}
+\def\bfm {\boldfacemath} % no \let, so that we can redefine
+\def\autoboldfacemath{\appendtoks\ifcase\boldfacemathmethod\else\let\bf\boldfacemath\fi\to\everymathematics}
+
+%D We hook this feature into the formula mechanism.
+
+\setupformulas
+ [\c!method=\v!normal]
+
+\appendtoks
+ \doifelse{\formulaparameter\c!method}\v!bold
+ {\chardef\boldfacemathmethod\plusone}
+ {\chardef\boldfacemathmethod\zerocount}%
+\to \everysetupformulas
+
+%D Of course this only works when bfmath fonts are set up (see example at
+%D the top of this file) and bold math is enabled:
+%D
+%D \starttyping
+%D \setupformulas
+%D [method=bold]
+%D \stoptyping
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-chi.tex b/Master/texmf-dist/tex/context/base/font-chi.tex
new file mode 100644
index 00000000000..7a602d4ab83
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-chi.tex
@@ -0,0 +1,1159 @@
+%D \module
+%D [ file=font-chi,
+%D version=1999.10.10,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Chinese,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D suggestions=Wang Lei,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% NOT YET ADAPTED TO THE NEW FONT MACROS
+
+\writestatus{loading}{Context Font Macros / Chinese}
+
+% much will to typo-chi.tex
+
+%D Still to be implemented:
+%D
+%D \startitemize
+%D \item columns left right touch
+%D \item distance = (hsize-n*bodyfontsize)/(n-1)
+%D \item char grids
+%D \item char tables
+%D \item all kind of rotated combinations
+%D \item hanging puctuation
+%D \item a few more encodings
+%D \item rotation list
+%D \stopitemize
+
+%M \setupbodyfont[chi]
+%M
+%M \def\WangLei{\purechinese{\uchar{205}{245}\uchar{192}{218}}}
+
+\useencoding[chi]
+\loadmapfile[gbk]
+
+%D When \WangLei\ sent me a mail asking if \CONTEXT\ was able
+%D to support Chinese, I wasn't sure if the answer could be
+%D yes. I knew that those languages, rich of glyphs, were
+%D typeset by \TEX, so in principle it should be possible. I
+%D asked or some more input and was told that there were
+%D \LATEX\ styles regarding those languages. When I unzipped
+%D the accompanying files, it became clear that I had to
+%D implement support for Chinese from scratch. There was a
+%D multitude of font, with rather unfamiliar encodings, a
+%D large collection of files with |<|at least for me|>|
+%D unknown purposes, and worse, the documentation was mainly
+%D in Chinese.
+%D
+%D So, \WangLei\ and I started exchanging some emails and it
+%D soon became clear that supporting Chinese was not that
+%D complicated at all. It mostly came to dealing with handling
+%D \UNICODE\ fonts. It also became clear that everything
+%D Chinese took place in the upper region of the eight bit
+%D character set. I wrote some macros that could process the
+%D small \type {Hello World} file \WangLei\ had send me, and
+%D after some bug fixes real Chinese came out. I started to
+%D like the look and fel of Chinese glyphs, so on we went.
+%D
+%D The first comments concerned spacing. The mix of English
+%D and Chinese demands some rather deliberate handling of
+%D spacing. Breaking lines was not so much a problem, and
+%D could be solved by adding some glue between Chinese glyphs.
+%D
+%D In the meantime had asked \WangLei\ for some language bound
+%D labels and texts, and implementing these was rather
+%D straightforward. But, there were still some issues to deal
+%D with: conversion of numbers, date handling and index
+%D sorting.
+%D
+%D I consider(ed) writing Chinese support to be a nice puzzle,
+%D since I have to act on chinese \CONTEXT\ code, where I only
+%D understand the \CONTEXT\ part. The drawings \WangLei\ made
+%D me (in drawing packages) were of great help. Since I write
+%D these modules from scratch, although I fall back on some
+%D basic encoding and font modules, I consider them to be
+%D rather clean. This cannot be said of all \CONTEXT\ font
+%D modules \type {-)}.
+
+\unprotect
+
+%D Because Chinese glyphs have more height than the average
+%D Latin glyph, and at the same time don't have much depth,
+%D we adapt the scale.
+%D
+%D Before and after the glyph we have to deal with Chinese
+%D spacing. Special attention is given to punctuation.
+%D
+%D \starttyping
+%D [some short nice chinese text with () and english]
+%D \stoptyping
+%D
+%D We insert a bit of stretch and introduce a signal to
+%D keep track of previous characters. We use a similar
+%D method in the units module, which may be a nice
+%D introduction to using signals.
+
+%D \macros
+%D {chineseunicodescale, chineseinterglyphskip,
+%D chineseunicodeheight, chineseunicodedepth, chinesespace}
+%D
+%D There are a few variables, that can be (re|)|set
+%D depending on the current font. They default to:
+
+\def\chineseunicodescale {1.00} % not smaller than .85
+\def\chineseunicodeheight {1.00}
+\def\chineseunicodedepth {1.00}
+\def\chineseinterglyphskip{0pt plus .05em minus .01em}
+\def\chinesesurroundskip {.25em plus .15em minus .05em}
+
+%D We define a few signals. As said, another example of
+%D using signals can be found in the module \type {m-units}.
+
+\newsignal\chineseLsignal % left boundary character
+\newsignal\chineseRsignal % right boundary character
+\newsignal\chineseSsignal % any other character (symbol)
+
+\chardef\chineseBstatus=0 % 0=unknown 1=left 2=right 3=chinese 4=nospace
+\chardef\chineseAstatus=0 % 0=unknown 1=left 2=right 3=space
+\chardef\chineseSstatus=0 % 0=unknown 1=left 2=right
+
+\sfcode`(=2000 % a temporary hack
+
+\def\chinesenobreak
+ {\relax
+ \iftracechinese
+ \nobreak
+ \kern-.5pt\color[red]{\vrule\!!width1pt}\kern-.5pt
+ \nobreak
+ \else
+ \nobreak
+ \fi}
+
+\newif\ifcorrectchineseboundarychars
+
+\def\chineseunskip
+ {\unskip\unskip\unskip\unskip}
+
+\def\insertchineseglyph
+ {\iftracechinese\tracedchineseglyph\else\insertunicodeglyph\fi}
+
+\newif\ifverticalchinese
+
+\def\handlechineseunicodeglyph
+ {\ifinpagebody
+ \horizontalchineseunicodeglyph
+ \else\ifverticalchinese
+ \verticalchineseunicodeglyph
+ \else
+ \horizontalchineseunicodeglyph
+ \fi\fi}
+
+% This is a previous, very encoding specific, attempt. The
+% current implementation is more versatile.
+%
+% \starttypen
+% \def\chineseleftglyph {\chardef\chineseSstatus=1 }
+% \def\chineserightglyph {\chardef\chineseSstatus=2 }
+% \def\chinesecenterglyph {\chardef\chineseSstatus=3 }
+%
+% \def\analyzechineseunicodeglyph%
+% {% left
+% \ifnum\unicodeposition=161174 \chineseleftglyph \else
+% \ifnum\unicodeposition=161176 \chineseleftglyph \else
+% \ifnum\unicodeposition=161178 \chineseleftglyph \else
+% \ifnum\unicodeposition=161180 \chineseleftglyph \else
+% \ifnum\unicodeposition=161182 \chineseleftglyph \else
+% \ifnum\unicodeposition=161184 \chineseleftglyph \else
+% \ifnum\unicodeposition=161186 \chineseleftglyph \else
+% \ifnum\unicodeposition=161188 \chineseleftglyph \else
+% \ifnum\unicodeposition=161190 \chineseleftglyph \else
+% \ifnum\unicodeposition=163168 \chineseleftglyph \else
+% \ifnum\unicodeposition=163219 \chineseleftglyph \else
+% \ifnum\unicodeposition=163224 \chineseleftglyph \else
+% \ifnum\unicodeposition=163251 \chineseleftglyph \else
+% % right
+% \ifnum\unicodeposition=161162 \chineserightglyph \else
+% \ifnum\unicodeposition=161163 \chineserightglyph \else
+% \ifnum\unicodeposition=161175 \chineserightglyph \else
+% \ifnum\unicodeposition=161177 \chineserightglyph \else
+% \ifnum\unicodeposition=161179 \chineserightglyph \else
+% \ifnum\unicodeposition=161181 \chineserightglyph \else
+% \ifnum\unicodeposition=161183 \chineserightglyph \else
+% \ifnum\unicodeposition=161185 \chineserightglyph \else
+% \ifnum\unicodeposition=161187 \chineserightglyph \else
+% \ifnum\unicodeposition=161189 \chineserightglyph \else
+% \ifnum\unicodeposition=161191 \chineserightglyph \else
+% \ifnum\unicodeposition=161227 \chineserightglyph \else
+% \ifnum\unicodeposition=161228 \chineserightglyph \else
+% \ifnum\unicodeposition=161229 \chineserightglyph \else
+% \ifnum\unicodeposition=163161 \chineserightglyph \else
+% \ifnum\unicodeposition=163162 \chineserightglyph \else
+% \ifnum\unicodeposition=163167 \chineserightglyph \else
+% \ifnum\unicodeposition=163169 \chineserightglyph \else
+% \ifnum\unicodeposition=163172 \chineserightglyph \else
+% \ifnum\unicodeposition=163174 \chineserightglyph \else
+% \ifnum\unicodeposition=163186 \chineserightglyph \else
+% \ifnum\unicodeposition=163187 \chineserightglyph \else
+% \ifnum\unicodeposition=163191 \chineserightglyph \else
+% \ifnum\unicodeposition=163221 \chineserightglyph \else
+% \ifnum\unicodeposition=163253 \chineserightglyph \else
+% % center
+% \ifnum\unicodeposition=161164 \chinesecenterglyph \else
+% \ifnum\unicodeposition=161167 \chinesecenterglyph \else
+% \ifnum\unicodeposition=161173 \chinesecenterglyph \else
+% \ifnum\unicodeposition=163190 \chinesecenterglyph \else
+% % unknown
+% \chardef\chineseSstatus=0
+% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi
+% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi}
+% \stoptypen
+%
+% chinese classes: left=1|right=2|center=3
+
+\chardef\plusfour=4
+
+\def\analyzechineseunicodeglyph % beware, no zerocount !
+ {\chardef\chineseSstatus0\getvalue{uc\the\unicodeposition}\relax}
+
+\def\analyzechineseunicodeenviroment
+ {% left
+ \ifx (\nextglyph \chardef\chineseAstatus\plusone \else
+ \ifx [\nextglyph \chardef\chineseAstatus\plusone \else
+ % right
+ \ifx ,\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx .\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx ?\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx ;\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx :\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx !\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx )\nextglyph \chardef\chineseAstatus\plustwo \else
+ \ifx ]\nextglyph \chardef\chineseAstatus\plustwo \else
+ % space
+ \ifx\nextglyph\blankspace \chardef\chineseAstatus\plusthree \else
+ \ifx\nextglyph\space \chardef\chineseAstatus\plusthree \else
+ \chardef\chineseAstatus\zerocount
+ % unknown
+ \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi
+ % maybe save the last skip?
+ \chardef\chineseBstatus\ifdim\lastskip=\zeropoint\plusfour\else\zerocount\fi
+ \ifdim\lastskip=\chineseLsignal \chardef\chineseBstatus\plusone \else
+ \ifdim\lastskip=\chineseRsignal \chardef\chineseBstatus\plustwo \else
+ \ifdim\lastskip=\chineseSsignal \chardef\chineseBstatus\plusthree \else
+ \scratchskip=\lastskip \unskip
+ \ifdim\lastskip=\chineseLsignal \chardef\chineseBstatus\plusone \else
+ \ifdim\lastskip=\chineseRsignal \chardef\chineseBstatus\plustwo \else
+ \ifdim\lastskip=\chineseSsignal \chardef\chineseBstatus\plusthree \else
+ \space\scratchskip=\lastskip \unskip
+ \setbox\scratchbox=\hbox\bgroup
+ (\space
+ \ifdim\lastskip=\scratchskip
+ \egroup \chardef\chineseBstatus\plusone
+ \else
+ \egroup
+ \ifdim\scratchskip=\zeropoint \chardef\chineseBstatus\plusfour \fi
+ \fi
+ \fi\fi\fi
+ \fi\fi\fi}
+
+\def\horizontalchineseunicodeglyph
+ {\relax
+ \ifhmode\else\dontleavehmode\fi % added
+ \setunicodescale\chineseunicodescale
+ \setunicodestrut\chineseunicodeheight\chineseunicodedepth
+ \ifprocessingverbatim
+ \iftracechinese
+ \ruledhbox{\insertunicodeglyph}%
+ \else
+ \insertunicodeglyph
+ \fi
+ \else
+ \analyzechineseunicodeglyph
+ \analyzechineseunicodeenviroment
+ \ifcase\chineseSstatus\relax
+ \ifcase\chineseBstatus\relax
+ \chineseunskip
+ \hskip\chinesesurroundskip % unknown
+ \or
+ \chineseunskip
+ \chinesenobreak % left
+ \or
+ \ifcorrectchineseboundarychars\else\chineseunskip\fi
+ \hskip\chineseinterglyphskip % right
+ \or
+ \chineseunskip
+ \hskip\chineseinterglyphskip % chinese
+ \or
+ % whatever
+ \fi
+ \insertchineseglyph
+ \ifcase\chineseAstatus\relax
+ \hskip\chineseinterglyphskip % unknown
+ \hskip\chinesesurroundskip
+ \ifcase\chineseSstatus
+ \hskip\chineseSsignal
+ \or
+ \hskip\chineseLsignal
+ \else
+ \hskip\chineseRsignal
+ \fi
+ \or
+ \hskip\chineseinterglyphskip % left
+ \chinesenobreak
+ \hskip\chineseLsignal
+ \or
+ \chinesenobreak % right
+ \hskip\chineseinterglyphskip
+ \chinesenobreak
+ \hskip\chineseRsignal
+ \or
+ \hskip\chineseinterglyphskip % space
+ \hskip\chinesesurroundskip
+ \hskip\chineseSsignal
+ \fi
+ \or % left
+ \ifcorrectchineseboundarychars
+ \let\unicodecharcommand\chineseleftcharcommand
+ \fi
+ \chineseunskip
+ \insertchineseglyph
+ \chinesenobreak
+ \hskip\chineseLsignal
+ \or % right
+ \ifcorrectchineseboundarychars
+ \let\unicodecharcommand\chineserightcharcommand
+ \fi
+ \chineseunskip
+ \chinesenobreak
+ \insertchineseglyph
+ \hskip\chineseRsignal
+ \else % center
+ \chineseunskip
+ \chinesenobreak
+ \insertchineseglyph
+ \hskip\chineseinterglyphskip
+ \hskip\chineseRsignal
+ \fi
+ \aftergroup\ignorespaces % watch this
+ \fi}
+
+\def\verticalchineseunicodeglyph
+ {\relax
+ \ifprocessingverbatim % to do
+ \horizontalchineseunicodeglyph
+ \else
+ \setunicodescale\chineseunicodescale
+ \setunicodestrut\chineseunicodeheight\chineseunicodedepth
+ \analyzechineseunicodeglyph
+ \setbox\scratchbox\hbox to \hsize
+ {\hss
+ \ifcase\chineseSstatus\relax
+ \insertchineseglyph
+ \else % left / right
+ \setbox\scratchbox\hbox{\insertchineseglyph}%
+ \rotate[\c!rotation=270]{\box\scratchbox}%
+ \fi
+ \hss}%
+ \ht\scratchbox\unicodeheight\strutht
+ \dp\scratchbox\unicodedepth \strutdp
+ \ifvmode % catches \hbox{...}, actually \hbox should be \vbox -)
+ \nointerlineskip
+ \fi
+ \ifcase\prevchineseSstatus\relax
+ \ifnum\chineseSstatus=\plustwo \par\nobreak\else\allowbreak\fi
+ \or % left
+ \par\nobreak
+ \or % right
+ \ifnum\chineseSstatus=\plustwo \par\nobreak\else\allowbreak\fi
+ \fi
+ \global\chardef\prevchineseSstatus\chineseSstatus % pagebody ...
+ \box\scratchbox\par
+ \aftergroup\ignorespaces % watch this
+ \fi}
+
+%D \macros
+%D {setupchinese,startvertical,nochinese}
+%D
+%D The previous macros implement horizontal as well as
+%D vertical typesetting. Vertical typesetting is implemented
+%D on top of the multi||column routines.
+
+\def\setupchinese
+ {\dodoubleargument\getparameters[\??vt]}
+
+\def\startvertical
+ {\dosingleempty\dostartvertical}
+
+\def\dostartvertical[#1]%
+ {\bgroup
+ \def\maxnofcolumns{25}%
+ \verticalchinesetrue
+ \global\chardef\prevchineseSstatus\zerocount
+ \let\nochinese\nochineseinvertical
+ \doif\@@vtn\v!fit
+ {\dimen0=\textwidth \advance\dimen0 \@@vtdistance
+ \dimen2=\bodyfontsize \advance\dimen2 \@@vtdistance
+ \divide\dimen0 \number\dimen2
+ \edef\@@vtn{\number\dimen0}}%
+ \startcolumns
+ [\c!direction=\@@vtdirection,
+ \c!balance=\@@vtbalance,
+ \c!distance=\@@vtdistance,
+ \c!n=\@@vtn,
+ #1]}
+
+\def\stopvertical
+ {\stopcolumns
+ \egroup}
+
+\setupchinese
+ [\c!direction=\v!left,
+ \c!balance=\v!no,
+ \c!n=\v!fit,
+ \c!distance=1.5\bodyfontsize]
+
+%D We can set up vertical typesetting with \type
+%D {\setupchinese}.
+
+%D \macros
+%D {nochineseinvertical}
+%D
+%D English (non chinese) text is typeset rotated:
+
+\def\nochineseinvertical#1%
+ {\par
+ \setbox\scratchbox\hbox{\strut#1}
+ \getnoflines{\wd\scratchbox}
+ \setbox\scratchbox\hbox to \noflines\openlineheight
+ {\hss\box\scratchbox\hss}
+ \hbox to \hsize
+ {\hss
+ \rotate
+ [\c!rotation=270]
+ {\vbox to \ht\scratchbox{\vss\box\scratchbox\vss}}%
+ \hss}
+ \par}
+
+%D \macros
+%D {correctchineseboundarychars}
+%D
+%D Careful reading of the previous macro learns that we
+%D treat left and right glyphs differently. When we say
+%D
+%D \starttyping
+%D \correctchineseboundarycharstrue
+%D \stoptyping
+%D
+%D For the moment correction in on by default.
+
+\correctchineseboundarycharstrue
+
+\def\chineserightcharcommand#1%
+ {\iftracechinese\ruledhbox\else\hbox\fi \!!to .5em{#1\hss}%
+ \hskip.25em\!!plus .25em\relax}%
+
+\def\chineseleftcharcommand#1%
+ {\ifnum\chineseBstatus<4 \hskip.25em \!!plus .25em\relax\fi
+ \iftracechinese\ruledhbox\else\hbox\fi \!!to .5em{\hss#1}}%
+
+% \def\chineserightcharcommand#1%
+% {\setbox\scratchbox=\hbox{#1}%
+% \scratchdimen=.5em
+% \ifdim\wd\scratchbox>\scratchdimen
+% \iftracechinese\ruledhbox\else\hbox\fi \!!to \scratchdimen
+% {\box\scratchbox\hss}%
+% \hskip.5\scratchdimen\!!plus.5\scratchdimen\relax
+% \else
+% \box\scratchbox
+% \fi}
+
+% \def\chineseleftcharcommand#1%
+% {\setbox\scratchbox=\hbox{#1}%
+% \scratchdimen=.5em
+% \ifdim\wd\scratchbox>\scratchdimen
+% \ifnum\chineseBstatus<4
+% \hskip.5\scratchdimen\!!plus.5\scratchdimen\relax
+% \fi
+% \iftracechinese\ruledhbox\else\hbox\fi \!!to \scratchdimen
+% {\hss\box\scratchbox}%
+% \else
+% \box\scratchbox
+% \fi}
+
+%D The long list of numbers in the previous macro identify the
+%D characters where special care is needed for breaking lines.
+%D A linebreak is not permitted before:
+%D
+%D \def\DoIt #1 #2 %
+%D {\hbox{\hbox to 2em{\uchar{#1}{#2}\hss}#1 #2}\par}
+%D
+%D \startcolumns[n=5]
+%D \DoIt 161 162 \DoIt 161 163 \DoIt 161 164 \DoIt 161 167 \DoIt 161 173
+%D \DoIt 161 175 \DoIt 161 177 \DoIt 161 179 \DoIt 161 181 \DoIt 161 183
+%D \DoIt 161 185 \DoIt 161 187 \DoIt 161 189 \DoIt 161 191 \DoIt 161 227
+%D \DoIt 161 228 \DoIt 161 229 \DoIt 163 161 \DoIt 163 162 \DoIt 163 167
+%D \DoIt 163 169 \DoIt 163 172 \DoIt 163 174 \DoIt 163 186 \DoIt 163 187
+%D \DoIt 163 190 \DoIt 163 191 \DoIt 163 221 \DoIt 163 253
+%D \stopcolumns
+%D
+%D A linebreak is not permitted after the following glyphs:
+%D
+%D \startcolumns[n=5]
+%D \DoIt 161 174 \DoIt 161 176 \DoIt 161 178 \DoIt 161 180 \DoIt 161 182
+%D \DoIt 161 184 \DoIt 161 186 \DoIt 161 188 \DoIt 161 190 \DoIt 163 168
+%D \DoIt 163 219 \DoIt 163 224 \DoIt 163 251
+%D \stopcolumns
+
+%D \macros
+%D {tracechinesetrue, showchinesetracelegend}
+%D
+%D When we say \type {\tracechinesetrue}, we get some
+%D insight in the way \CONTEXT\ handles the Chinese glyphs.
+%D The symbols and color used represent:
+%D
+%D \showchinesetracelegend
+
+\newif\iftracechinese
+
+\def\showchinesetracelegend
+ {\definetabulate[\s!dummy][|c|l|l|l|]%
+ \startdummy
+ \HL
+ \NC \bf key \NC \bf meaning \NC \bf glyph \NC \bf keys \NC\NR
+ \HL
+ \NC u \NC unknown character type \NC \color[green]{current} \NC u l r \NC\NR
+ \NC l \NC left boundary character \NC \color[red]{previous} \NC u l r c n \NC\NR
+ \NC r \NC right boundary character \NC \color[blue]{next} \NC u l r s \NC\NR
+ \NC c \NC chinese character \NC \NC \NC\NR
+ \NC s \NC following space \NC \NC \NC\NR
+ \NC n \NC no preceding space \NC \NC \NC\NR
+ \HL
+ \stopdummy}
+
+\def\tracedchineseglyph
+ {\leavevmode
+ \ruledhbox
+ {\setbox\scratchbox\hbox{\insertunicodeglyph}%
+ \hbox to \wd\scratchbox
+ {\localcolortrue
+ \copy\scratchbox
+ \infofont
+ \hskip-\wd\scratchbox
+ \hbox to \wd\scratchbox
+ {\hss
+ \color[green]{\ifcase\chineseSstatus\relax u\or l\or r\fi}%
+ \hss}%
+ \hskip-\wd\scratchbox
+ \lower\dp\scratchbox\hbox to \wd\scratchbox
+ {\hss
+ \color[red]{\ifcase\chineseBstatus\relax u\or l\or r\or c\or n\fi}%
+ \hss
+ \color[blue]{\ifcase\chineseAstatus\relax u\or l\or r\or s\fi}%
+ \hss}}}}
+
+%D The following example shows how tracing works.
+%D
+%D \start \tracechinesetrue
+%D ÔÚÕâÒ»´Î¸üÐÂÖÐÎÒÃǽ«½éÉܶÔÖÐÎĵÄÖ§³Ö¡£µ±±¾ÎĵÄÖÐÎÄÒëÕßÍõÀÚ
+%D ѯÎÊÎÒ \nochinese{\CONTEXT} ÊÇ·ñÄÜ´¦ÀíººÓïʱ£¬ËûÒѾ­³¢ÊÔ¹ý
+%D ÔËÐÐÏÖÓеĺ꼯£¬µ«ÊÇûÓеõ½½á¹û¡£ÕâÒâζ×ŶÔÖÐÎĵÄÖ§³Ö»¹Ã»
+%D ÓÐʵÏÖ¡£
+%D
+%D ÔÚÕâÒ»(´Î¸üÐÂ)ÖÐÎÒÃÇ (½«½é) ÉܶÔÖÐÎĵÄÖ§³Ö¡£µ±±¾ÎĵÄÖÐÎÄÒë,
+%D ÕßÍõÀÚѯÎÊÎÒ\nochinese{\CONTEXT}ÊÇ·ñÄÜ´¦ÀíººÓïʱ£¬ËûÒѾ­³¢
+%D ÊÔ¹ýÔËÐÐÏÖÓеĺ꼯£¬µ«ÊÇûÓеõ½½á¹û¡£ÕâÒâζ×ŶÔÖÐÎĵÄÖ§³Ö
+%D »¹Ã»ÓÐʵÏÖ¡£.
+%D \stop
+
+%D Because fonts are defined each time a \UNICODE\ is
+%D encountered |<|which is less inefficient than one would
+%D imagine, because \TEX\ is optimized quite well in this
+%D repect|>| we can define macros like this to take care of
+%D font switches. When available, one can add definitions
+%D for italic, slanted, bold fonts and combinations of these.
+
+%D \macros
+%D {chinesenumber}
+%D
+%D The chinese numbering systems rather straightforward. First
+%D there are the digits:
+%D
+%D \starttabulate[|c|c|c|c|c|c|c|c|c|c|]
+%D \NC 0 \NC 1 \NC 2 \NC 3 \NC 4 \NC 5 \NC 6 \NC 7 \NC 8 \NC 9 \NC\NR
+%D \NC \chinesenumber{0} \NC \chinesenumber{1} \NC \chinesenumber{2}
+%D \NC \chinesenumber{3} \NC \chinesenumber{4} \NC \chinesenumber{5}
+%D \NC \chinesenumber{6} \NC \chinesenumber{7} \NC \chinesenumber{8}
+%D \NC \chinesenumber{9} \NC\NR
+%D \stoptabulate
+%D
+%D Apart from these numbers, we have dedicated representations
+%D of some powers of~$10$.
+%D
+%D \starttabulate[|c|c|c|c|c|]
+%D \NC 10 \NC 100 \NC 1000 \NC 10000 \NC 100000000 \NC\NR
+%D \NC \chinesenumber{10} \NC \chinesenumber{100}
+%D \NC \chinesenumber{1000} \NC \chinesenumber{10000}
+%D \NC \chinesenumber{100000000} \NC\NR
+%D \stoptabulate
+%D
+%D The number~12 is a combination of $1\times10+2$, or:
+%D \chinesenumber {12}, while~22 becomes \chinesenumber {22}.
+%D The numbers below 20 are treated a bit different, just like
+%D numbers with series of $0$'s. So $2\times10$ comes out as
+%D two glyphs, but $1\times10$ as one, because in the latter
+%D case the~$1$ is redundant. The same is true for the powers
+%D of~10.
+%D
+%D \starttabulate[|r|r|r|r|r|r|]
+%D \NC 1 \NC \chinesenumber {1} \NC
+%D 9 \NC \chinesenumber {9} \NC
+%D 4 \NC \chinesenumber {4} \NC\NR
+%D \NC 11 \NC \chinesenumber {11} \NC
+%D 99 \NC \chinesenumber {99} \NC
+%D 16 \NC \chinesenumber {16} \NC\NR
+%D \NC 111 \NC \chinesenumber {111} \NC
+%D 999 \NC \chinesenumber {999} \NC
+%D 256 \NC \chinesenumber {256} \NC\NR
+%D \NC 1111 \NC \chinesenumber {1111} \NC
+%D 9999 \NC \chinesenumber {9999} \NC
+%D 65536 \NC \chinesenumber {65536} \NC\NR
+%D \stoptabulate
+%D
+%D The implementation is rather simple. For internal purposes,
+%D we let zero expand to~0. The digits $0-9$ and numbers $10$,
+%D $100$, $1000$, $10000$ and $100000000$ are hard coded.
+
+% This was the first implementation, before \WangLei\ asked
+% me to look into Big Five encoding, so, like everthing in
+% \TEX, things become a bit more complicated, but also more
+% versatile.
+%
+% \starttypen
+% \def\chinesedigit#1%
+% {\ifnum #1=100000000 \uchar{210}{218}% 100000000
+% \else\ifnum #1=10000 \uchar{205}{242}% 10000
+% \else\ifnum #1=1000 \uchar{199}{167}% 1000
+% \else\ifnum #1=100 \uchar{176}{217}% 100
+% \else\ifnum #1=10 \uchar{202}{174}% 10
+% \else\ifcase#1 \uchar{193}{227}% 0
+% \or \uchar{210}{187}% 1
+% \or \uchar{182}{254}% 2
+% \or \uchar{200}{253}% 3
+% \or \uchar{203}{196}% 4
+% \or \uchar{206}{229}% 5
+% \or \uchar{193}{249}% 6
+% \or \uchar{198}{223}% 7
+% \or \uchar{176}{203}% 8
+% \or \uchar{190}{197}% 9
+% \fi\fi\fi\fi\fi\fi}
+% \stoptypen
+
+%D We will implement four methods, the one described earlier,
+%D a derived one with capitalized characters, an extended
+%D version of the first method, and a rather Arabic method.
+%D
+%D \starttabulate[|l|l|]
+%D \HL
+%D \NC \bf command \NC \bf number 39 \NC\NR
+%D \HL
+%D \NC \type{\normalchinesenumber} \NC \normalchinesenumber {39} \NC\NR
+%D \NC \type{\capitalizedchinesenumber} \NC \capitalizedchinesenumber{39} \NC\NR
+%D \NC \type{\arabicchinesenumber} \NC \arabicchinesenumber {39} \NC\NR
+%D \NC \type{\extendedchinesenumber} \NC \extendedchinesenumber {39} \NC\NR
+%D \HL
+%D \stoptabulate
+%D
+%D We use a dirty trick to enable Chinese Capital Digits. In
+%D the encoding vectors, we define these by appending a suffix
+%D \type {*} to the digit, which in the following macro is
+%D appended or not (by passing \type {\empty}).
+
+\def\chinesedigit#1#2% #2: suffix, here * or \empty
+ {\udigit{\chineseencoding}{\number#1#2}}
+
+% Normal Chinese Number
+
+\def\normalchinesenumber#1%
+ {\expandafter\dochinesenumber\number#1\relax\empty}
+
+\def\dochinesenumber#1#2\relax#3%
+ {\ifnum#1#2<10 % 1-10
+ \chinesedigit{#1}#3%
+ \else\ifnum#1#2<20 % 11-99
+ \chinesedigit{10}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else
+ \dodochinesenumber#1#2\relax#3%
+ \fi\fi}
+
+\def\dodochinesenumber#1#2\relax#3%
+ {\ifnum#1=0
+ \chinesedigit{0}#3%
+ \dododochinesenumber0#2\relax#3%
+ \else\ifnum#1#2<10 % 1-10
+ \chinesedigit{#1#2}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else\ifnum#1#2<100 % 11-99
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{10}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else\ifnum#1#2<1000 % 100-999
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{100}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else\ifnum#1#2<10000 % 1000-9999
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{1000}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else\ifnum#1#2<100000 % 10000-99999
+ \dodochinesenumber#1\relax#3%
+ \chinesedigit{10000}#3%
+ \dodochinesenumberA#2\relax#3%
+ \else\ifnum#1#2<1000000 % 100000-999999
+ \dodochinesenumberB#1#2\relax#3%
+ \else\ifnum#1#2<10000000 % 1000000-9999999
+ \dodochinesenumberC#1#2\relax#3%
+ \else\ifnum#1#2<100000000 % 10000000-99999999
+ \dodochinesenumberD#1#2\relax#3%
+ \else\ifnum#1#2<1000000000 % 10000000-99999999
+ \dochinesenumber#1\relax#3%
+ \chinesedigit{100000000}#3%
+ \dododochinesenumber#2\relax#3%
+ \else
+ \dodochinesenumberE#1#2\relax#3%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\dododochinesenumber#1#2\relax#3%
+ {\ifnum#1=0
+ \ifnum0#2>0 \dododochinesenumber#2\relax#3\fi
+ \else
+ \dodochinesenumber#1#2\relax#3%
+ \fi}
+
+\def\dodochinesenumberA#1\relax#2%
+ {\ifcase0#1 \else\dodochinesenumber#1\relax#2\fi}
+
+\def\dodochinesenumberB#1#2#3\relax#4%
+ {\dochinesenumber#1#2\relax#4%
+ \chinesedigit{10000}#4%
+ \dododochinesenumber#3\relax#4}
+
+\def\dodochinesenumberC#1#2#3#4\relax#5%
+ {\dochinesenumber#1#2#3\relax#5%
+ \chinesedigit{10000}#5%
+ \dododochinesenumber#4\relax#5}
+
+\def\dodochinesenumberD#1#2#3#4#5\relax#6%
+ {\dochinesenumber#1#2#3#4\relax#6%
+ \chinesedigit{10000}#6%
+ \dododochinesenumber#5\relax#6}
+
+\def\dodochinesenumberE#1#2#3\relax#4%
+ {\dochinesenumber#1#2\relax#4%
+ \chinesedigit{100000000}#4%
+ \dododochinesenumber#3\relax#4}
+
+% Capitalized Chinese Number
+
+\def\capitalizedchinesenumber#1%
+ {\expandafter\dochinesenumber\number#1\relax*}
+
+% Extended Chinese Number
+
+\def\extendedchinesenumber#1%
+ {\expandafter\doextendedchinesenumber\number#1\relax}
+
+\def\doextendedchinesenumber#1#2\relax%
+ {\ifnum #1#2<20 % 0-19
+ \dochinesenumber#1#2\relax\empty
+ \else\ifnum#1#2<30 % 20-29
+ \chinesedigit{20}\empty
+ \ifcase#2\else\chinesedigit{2#2}\fi
+ \else\ifnum#1#2<40 % 30-39
+ \chinesedigit{30}\empty
+ \ifcase#2\else\chinesedigit{3#2}\fi
+ \else
+ \dochinesenumber#1#2\relax\empty
+ \fi\fi\fi}
+
+% Arabic Chinese Number
+
+\def\arabicchinesenumber#1%
+ {\expandafter\doarabicchinesenumber\number#1@\relax}
+
+\def\doarabicchinesenumber#1#2\relax
+ {\if#1@\else
+ \chinesedigit{#1}\empty
+ \doarabicchinesenumber#2\relax
+ \fi}
+
+% The short call:
+
+\def\chinesenumber{\normalchinesenumber}
+
+% \dorecurse{40}
+% {\hbox
+% {\processingverbatimtrue
+% \hbox to 1cm{\hss\recurselevel}\quad
+% \hbox to 3cm{\hss\strut\normalchinesenumber {\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\capitalizedchinesenumber{\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\arabicchinesenumber {\recurselevel}}\quad
+% \hbox to 3cm{\hss\strut\extendedchinesenumber {\recurselevel}}\crlf}}
+
+%D The next table demonstates the correctness of the
+%D conversion macro.
+%D
+%D \startbuffer
+%D \starttable[|l|l|l|l|l|l|]
+%D \HL
+%D \NC number \NC converter \NC hard coded \NC
+%D number \NC converter \NC hard coded\NC \SR
+%D \HL
+%D \NC 1 \NC \chinesenumber{1} \NC Ò» \NC
+%D 0 \NC \chinesenumber{0} \NC Áã \NC\FR
+%D \NC 11 \NC \chinesenumber{11} \NC ʮһ \NC
+%D 10 \NC \chinesenumber{10} \NC Ê® \NC\MR
+%D \NC 111 \NC \chinesenumber{111} \NC Ò»°Ùһʮһ \NC
+%D 100 \NC \chinesenumber{100} \NC Ò»°Ù \NC\MR
+%D \NC 101 \NC \chinesenumber{101} \NC Ò»°ÙÁãÒ» \NC
+%D 120 \NC \chinesenumber{120} \NC Ò»°Ù¶þÊ® \NC\MR
+%D \NC 1111 \NC \chinesenumber{1111} \NC һǧһ°Ùһʮһ \NC
+%D 1000 \NC \chinesenumber{1000} \NC һǧ \NC\MR
+%D \NC 1001 \NC \chinesenumber{1001} \NC һǧÁãÒ» \NC
+%D 1020 \NC \chinesenumber{1020} \NC һǧÁã¶þÊ® \NC\MR
+%D \NC 11111 \NC \chinesenumber{11111} \NC Ò»Íòһǧһ°Ùһʮһ \NC
+%D 10000 \NC \chinesenumber{10000} \NC Ò»Íò \NC\MR
+%D \NC 10001 \NC \chinesenumber{10001} \NC Ò»ÍòÁãÒ» \NC
+%D 10200 \NC \chinesenumber{10200} \NC Ò»ÍòÁã¶þ°Ù \NC\LR
+%D \HL
+%D \NC 111111 \NC \chinesenumber{111111} \NC ʮһÍòһǧһ°Ùһʮһ \NC
+%D 100000 \NC \chinesenumber{100000} \NC Ê®Íò \NC\FR
+%D \NC 1111111 \NC \chinesenumber{1111111} \NC Ò»°ÙһʮһÍòһǧһ°Ùһʮһ \NC
+%D 1000000 \NC \chinesenumber{1000000} \NC Ò»°ÙÍò \NC\MR
+%D \NC 11111111 \NC \chinesenumber{11111111} \NC һǧһ°ÙһʮһÍòһǧһ°Ùһʮһ \NC
+%D 10000000 \NC \chinesenumber{10000000} \NC һǧÍò \NC\MR
+%D \NC 111111111 \NC \chinesenumber{111111111} \NC Ò»ÒÚһǧһ°ÙһʮһÍòһǧһ°Ùһʮһ \NC
+%D 100000000 \NC \chinesenumber{100000000} \NC Ò»ÒÚ \NC\MR
+%D \NC 1111111111 \NC \chinesenumber{1111111111} \NC ʮһÒÚһǧһ°ÙһʮһÍòһǧһ°Ùһʮһ \NC
+%D 1000000000 \NC \chinesenumber{1000000000} \NC Ê®ÒÚ \NC\LR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \placetable{Some Chinese number examples.}{\getbuffer}
+
+%D Although the conversion can be hooked into most commands
+%D that deal with numbers |<|those familiar with \TEX\ macro
+%D programming will notice that the macro if fully
+%D expandable|>| in many cases Chinese documents use western
+%D digits. So, in practice, the change that the next example
+%D shows up, is minimal.
+%D
+%D \starttabulate[|r|r|c|]
+%D \NC 2546 \NC \chinesenumber {2546} \NC \NC\NR
+%D \NC 9258 \NC \chinesenumber {9258} \NC $+$ \NC\NR
+%D \HL
+%D \NC 11804 \NC \chinesenumber {11804} \NC \NC\NR
+%D \stoptabulate
+%D
+%D While in arabic arithmics addition leads to more digits, in
+%D Chinese the number of glyphs can (temporary) decrease.
+%D Given that the number of people dealing with Chinese is
+%D considerably larger than the number of latin speaking
+%D people, a successor of \TEX\ definitely must provide a
+%D \type {\chinesenumeral} primitive.
+
+\defineconversion [c] [\normalchinesenumber]
+\defineconversion [chinese] [\normalchinesenumber]
+\defineconversion [nc] [\normalchinesenumber]
+\defineconversion [normalchinese] [\normalchinesenumber]
+\defineconversion [cc] [\capitalizedchinesenumber]
+\defineconversion [capitalizedchinese] [\capitalizedchinesenumber]
+\defineconversion [ec] [\extendedchinesenumber]
+\defineconversion [extendedchinese] [\extendedchinesenumber]
+\defineconversion [ac] [\arabicchinesenumber]
+\defineconversion [arabicchinese] [\arabicchinesenumber]
+
+%D Date conversion:
+
+\defineconversion [cn] [\v!day] [\chinesenumber]
+\defineconversion [cn] [\v!month] [\chinesenumber]
+\defineconversion [cn] [\v!year] [\chinesenumber]
+
+%D \macros
+%D {SimChi, TraChi}
+%D
+%D These components enable us to construct dedicated Chinese
+%D font switches, like:
+
+\setupunicodefont
+ [chinese]
+ [ \c!scale=\chineseunicodescale,
+ \c!height=\chineseunicodeheight,
+ \c!depth=\chineseunicodedepth,
+ \c!conversion=\chinesenumber,
+ \c!commands=\setchineseencoding, % needed for digits
+ \c!command=\handlechineseunicodeglyph]
+
+%D For the moment, this encoding is implemented rather ugly. The
+%D trick is to move the encoding value from the current font
+%D definition to the \type {\chineseencoding} macro.
+
+\let\chineseencoding\empty
+
+\def\setchineseencoding % normally SomeChineseRegular
+ {\getfontfileparameters\unicodestyle
+ \ifx\currentfontfileencoding\undefined \else
+ \let\chineseencoding\currentfontfileencoding
+ \fi}
+
+%D We could have said:
+%D
+%D \starttyping
+%D \defineunicodefont
+%D [SimChi]
+%D [SimplifiedChinese]
+%D [ \c!scale=\chineseunicodescale,
+%D \c!height=\chineseunicodeheight,
+%D \c!depth=\chineseunicodedepth,
+%D \c!conversion=\chinesenumber,
+%D \c!commands=\setchineseencoding, % needed for digits
+%D \c!command=\handlechineseunicodeglyph]
+%D \stoptyping
+%D
+%D However, the former definitions is more general. Next we
+%D map a few fonts:
+
+\definefontsynonym [SimplifiedChineseRegular] [gbsong] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseSlanted] [gbsongsl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseItalic] [gbsongsl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseBold] [gbhei] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseBoldSlanted] [gbheisl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseBoldItalic] [gbheisl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseRegular] [b5song] [encoding=big5]
+\definefontsynonym [TraditionalChineseSlanted] [b5songsl] [encoding=big5]
+\definefontsynonym [TraditionalChineseItalic] [b5songsl] [encoding=big5]
+\definefontsynonym [TraditionalChineseBold] [b5hei] [encoding=big5]
+\definefontsynonym [TraditionalChineseBoldSlanted] [b5heisl] [encoding=big5]
+\definefontsynonym [TraditionalChineseBoldItalic] [b5heisl] [encoding=big5]
+
+\defineunicodefont [SimChi] [SimplifiedChinese] [chinese]
+\defineunicodefont [TraChi] [TraditionalChinese] [chinese]
+
+%D We default to these so called Simplified Chinese fonts.
+
+\SimChi
+
+%D In addition to these fonts, we (pre|)|define some commonly
+%D used fonts:
+
+\definefontsynonym [SimplifiedChineseSongTiRegular] [gbsong] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseSongTiSlanted] [gbsongsl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseSongTiBold] [gbsong] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseSongTiBoldSlanted] [gbsongsl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseSongTiRegular] [b5song] [encoding=big5]
+\definefontsynonym [TraditionalChineseSongTiSlanted] [b5songsl] [encoding=big5]
+\definefontsynonym [TraditionalChineseSongTiBold] [b5song] [encoding=big5]
+\definefontsynonym [TraditionalChineseSongTiBoldSlanted] [b5songsl] [encoding=big5]
+
+\definefontsynonym [SimplifiedChineseHeiTiRegular] [gbhei] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseHeiTiSlanted] [gbheisl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseHeiTiBold] [gbhei] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseHeiTiBoldSlanted] [gbheisl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseHeiTiRegular] [b5hei] [encoding=big5]
+\definefontsynonym [TraditionalChineseHeiTiSlanted] [b5heisl] [encoding=big5]
+\definefontsynonym [TraditionalChineseHeiTiBold] [b5hei] [encoding=big5]
+\definefontsynonym [TraditionalChineseHeiTiBoldSlanted] [b5heisl] [encoding=big5]
+
+\definefontsynonym [SimplifiedChineseKaiTiRegular] [gbkai] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseKaiTiSlanted] [gbkaisl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseKaiTiBold] [gbkai] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseKaiTiBoldSlanted] [gbkaisl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseKaiTiRegular] [b5kai] [encoding=big5]
+\definefontsynonym [TraditionalChineseKaiTiSlanted] [b5kaisl] [encoding=big5]
+\definefontsynonym [TraditionalChineseKaiTiBold] [b5kai] [encoding=big5]
+\definefontsynonym [TraditionalChineseKaiTiBoldSlanted] [b5kaisl] [encoding=big5]
+
+\definefontsynonym [SimplifiedChineseFangSongRegular] [gbfs] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseFangSongSlanted] [gbfssl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseFangSongBold] [gbfs] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseFangSongBoldSlanted] [gbfssl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseFangSongRegular] [b5fs] [encoding=big5]
+\definefontsynonym [TraditionalChineseFangSongSlanted] [b5fssl] [encoding=big5]
+\definefontsynonym [TraditionalChineseFangSongBold] [b5fs] [encoding=big5]
+\definefontsynonym [TraditionalChineseFangSongBoldSlanted] [b5fssl] [encoding=big5]
+
+\definefontsynonym [SimplifiedChineseLiShuRegular] [gbli] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseLiShuSlanted] [gblisl] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseLiShuBold] [gbli] [encoding=gbk]
+\definefontsynonym [SimplifiedChineseLiShuBoldSlanted] [gblisl] [encoding=gbk]
+
+\definefontsynonym [TraditionalChineseLiShuRegular] [b5li] [encoding=big5]
+\definefontsynonym [TraditionalChineseLiShuSlanted] [b5lisl] [encoding=big5]
+\definefontsynonym [TraditionalChineseLiShuBold] [b5li] [encoding=big5]
+\definefontsynonym [TraditionalChineseLiShuBoldSlanted] [b5lisl] [encoding=big5]
+
+%D The following definitions provide us the commands to switch
+%D to these fonts.
+
+\defineunicodefont [SimSongTi] [SimplifiedChineseSongTi] [chinese]
+\defineunicodefont [TraSongTi] [TraditionalChineseSongTi] [chinese]
+
+\defineunicodefont [SimHeiTi] [SimplifiedChineseHeiTi] [chinese]
+\defineunicodefont [TraHeiTi] [TraditionalChineseHeiTi] [chinese]
+
+\defineunicodefont [SimKaiTi] [SimplifiedChineseKaiTi] [chinese]
+\defineunicodefont [TraKaiTi] [TraditionalChineseKaiTi] [chinese]
+
+\defineunicodefont [SimFangSong] [SimplifiedChineseFangSong] [chinese]
+\defineunicodefont [TraFangSong] [TraditionalChineseFangSong] [chinese]
+
+\defineunicodefont [SimLiShu] [SimplifiedChineseLiShu] [chinese]
+\defineunicodefont [TraLiShu] [TraditionalChineseLiShu] [chinese]
+
+% \definealternativestyle [ChineseTitleFont] [\bfd\SimKaiTi] []
+
+%D \macros
+%D {purechinese}
+%D
+%D Use this macro to suppress spacing around Chinese text.
+
+\def\purechinese#1% evt geen rek
+ {\hskip\chineseSsignal\relax
+ #1\unskip\unskip\unskip
+ \hskip\chineseSsignal\relax}
+
+%D \macros
+%D {stillchinese}
+%D
+%D Use the next macro when you want the next item to be put
+%D tight to the previous chinese character.
+
+\def\stillchinese
+ {\hskip\chineseSsignal\relax}
+
+%D \macros
+%D {nochinese}
+%D
+%D When we want to be sure of non||Chinese inline text,
+%D we can package the for instance english text in \type
+%D {\nochinese}.
+
+\def\nochinese#1%
+ {\unskip\unskip\unskip
+ \hskip\chinesesurroundskip
+ \hskip\chineseinterglyphskip\relax
+ #1%
+ \hskip\chineseinterglyphskip\relax
+ \hskip\chinesesurroundskip
+ \ignorespaces}
+
+%D \macros
+%D {chisize}
+%D
+%D Chinese font sizes are specified in a different way,
+%D using positive and negative numbers:
+
+\def\chisize#1%
+ {\ifnum#11<0 % a trick to catch -0
+ \ifcase#1\space36\or24\or18\or15\or12\or9\or\else6.5\fi
+ \else
+ \ifcase#1\space42\or26\or22\or16\or14\or10.5\or7.5\or5.5\else5\fi
+ \fi pt}
+
+%D So:
+%D
+%D \startbuffer
+%D [\chisize{-1}] [\chisize{7}] [\chisize{+4}]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D gives:
+%D
+%D \getbuffer
+%D
+%D The full range of sizes is:
+%D
+%D \starttabulate[|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|]
+%D \NC 8 \NC 7 \NC -6 \NC 6 \NC
+%D -5 \NC 5 \NC -4 \NC 4 \NC
+%D -3 \NC 3 \NC -2 \NC 2 \NC
+%D -1 \NC 1 \NC -0 \NC 0 \NC\NR
+%D \NC\chisize {8}\NC\chisize{7}\NC\chisize{-6}\NC\chisize{6}\NC
+%D \chisize{-5}\NC\chisize{5}\NC\chisize{-4}\NC\chisize{4}\NC
+%D \chisize{-3}\NC\chisize{3}\NC\chisize{-2}\NC\chisize{2}\NC
+%D \chisize{-1}\NC\chisize{1}\NC\chisize{-0}\NC\chisize{0}\NC\NR
+%D \stoptabulate
+
+%D Now it's time for some real Chinese. This example
+%D also shows that font switching is supported.
+%D
+%D \startnarrower
+%D \midaligned{\tfd Ë®µ÷¸èÍ·}
+%D \blank
+%D \midaligned{\tfb ±û³½ÖÐÇ»¶Òû´ïµ©£¬´ó×í×÷´Ëƪ£¬¼æ»³×ÓÓÉ¡£}
+%D \blank
+%D \midaligned{\tfb ËÕéø}
+%D \blank
+%D Ã÷Ô¼¸Ê±ÓУ¿°Ñ¾ÆÎÊÇàÌì¡£²»ÖªÌìÉϹ¬ãÚ£¬½ñϦÊǺÎÄꣿÎÒÓû³Ë·ç¹éÈ¥
+%D £¬ÓÖ¿ÖÇíÂ¥ÓñÓ¸ß´¦²»Ê¤º®¡£ÆðÎèŪÇåÓ°£¬ºÎËÆÔÚÈ˼䣿
+%D \blank
+%D תÖì¸ó£¬µÍ»§£¬ÕÕÎÞÃß¡£²»Ó¦Óкޣ¬ºÎÊÂÆ«Ïò±ðʱԲ£¿ÈËÓб¯»¶ÀëºÏ£¬
+%D ÔÂÓÐÒõÇçԲȱ£¬´ËʹÅÄÑÈ«¡£µ«Ô¸È˳¤¾Ã£¬Ç§Àﹲ濾ꡣ
+%D \stopnarrower
+%D
+%D The english translation is:
+%D
+%D \startnarrower
+%D \midaligned{\tfd Tune: Prelude to the Melody of Water}
+%D \blank
+%D \midaligned{\tfb On the night of the Mid||Autumn Festival of
+%D 1076, I drank happily till dawn and wrote this in my cups
+%D while thinking of Zi||you.}
+%D \blank
+%D \midaligned{\tfb Su Shi}
+%D \blank
+%D How long will the bright moon appear? Wine||cup in hand, I
+%D ask the sky. I do not know waht time of year it would be
+%D tonight in the palace on high. Riding the wind, there I
+%D would fly, yet I fear the crystal palace would be far too
+%D high and cold for me. I rise and dance, with my shadow I
+%D play. On high as on earth, would it be as gay?
+%D \blank
+%D The moon goes round the mansion red though gauze||draped
+%D windows soft to shed her light upon the sleepless bed.
+%D Against man she should have no spite. Why then when people
+%D part is she oft full and bright? Men have sorrow and joy,
+%D they part or meet again; The moon may be bright or dim, she
+%D may wax or wane. There has been nothing perfect since the
+%D olden days. So let us wish that man will live long as he
+%D can! Though miles apart, we'll share the beauty she
+%D displays.
+%D \stopnarrower
+
+%D This package is written in the city of Hasselt, a pretty
+%D small town in the |<|compare to China real small|>|
+%D Netherlands. Like most dutch cities, even this small one
+%D has a chinese restaurant, run by chinese, speaking chinese,
+%D and |<|indeed|>| writing chinese. Eating there will never
+%D be the same, since now I can at least pretend to know the
+%D glyphs all around the place. The numbers should pose me no
+%D problems, but I fear I will never manage to recognize those
+%D scribles they draw on their pads when thay take your order.
+
+%D To make our lives more easy, we put it here (too):
+
+\setuptyping[\c!tab=\v!no]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-heb.tex b/Master/texmf-dist/tex/context/base/font-heb.tex
new file mode 100644
index 00000000000..3ec0395f32a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-heb.tex
@@ -0,0 +1,5 @@
+\unprotected \writestatus\m!systems{load ARABTEX as a module instead}
+
+\usemodule[arabtex]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/font-ini.tex b/Master/texmf-dist/tex/context/base/font-ini.tex
new file mode 100644
index 00000000000..b2007ee3122
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-ini.tex
@@ -0,0 +1,4784 @@
+%D \module
+%D [ file=font-ini,
+%D version=1998.09.11, % (second)
+%D version=2001.02.20, % (third)
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Font Macros (ini)}
+
+\unprotect
+
+% \def\fontrange#1%
+% {\dofontrange{#1 =\bodyfontsize}}
+%
+% \def\dofontrange#1%
+% {\dodofontrange#1 \relax}% \fontstringA
+%
+% \def\dodofontrange#1 #2 %
+% {\ifdim\bodyfontsize#2%
+% #1\expandafter\gobbleuntilrelax
+% \else
+% \expandafter\dodofontrange
+% \fi}
+%
+% \definefont
+% [crap]
+% [\fontrange
+% {Regular <10pt
+% RegularBold <12pt
+% RegularSlanted <15pt
+% Regular} sa 1]
+%
+% may be better:
+%
+% \definefontrange
+% [crap]
+% [Regular <10pt
+% RegularBold <12pt
+% RegularSlanted <15pt]
+% [Regular sa 1]
+%
+%
+% \dostepwiserecurse{2}{15}{1}
+% {{\switchtobodyfont[\recurselevel pt]\crap test}\endgraf}
+
+% adapted, else wrong interlinespace
+
+\def\setfontparameters
+ {\synchronizefontsfalse
+ \the\everybodyfont
+ \synchronizefontstrue}
+
+% handy
+
+\newcounter\pushedfont
+
+\def\savefont
+ {\edef\savedfont{\the\font}%
+ \pushmacro\savedfont
+ \pushmacro\characterregime
+ \pushmacro\charactermapping
+ \pushmacro\characterencoding}
+
+\def\restorefont
+ {\popmacro\characterencoding
+ \popmacro\charactermapping
+ \popmacro\characterregime
+ \popmacro\savedfont
+ \savedfont}
+
+\def\pushcurrentfont
+ {\edef\popcurrentfont
+ {\noexpand\def\noexpand\fontbody{\fontbody}%
+ \noexpand\def\noexpand\fontstyle{\fontstyle}%
+ \noexpand\dosetcurrentfontalternative{\fontalternative}%
+ \noexpand\dosetcurrentfontsize{\fontsize}%
+ \noexpand\synchronizefont}}
+
+% \definetypeface[one][rm][serif][computer-roman][default]
+% \definetypeface[two][rm][serif][computer-roman][default][rscale=.9]
+%
+% {\one \bf test \two test}
+% {\one \bf test \pushcurrentfont \two \popcurrentfont test}
+
+%D \macros
+%D {definedfont,startfont,doiffontcharelse}
+%D
+%D A couple of relatively new macros:
+
+\newevery \everydefinedfont \relax
+
+\def\dodefinedfont[#1]%
+ {\iffirstargument\definefont[\string\thedefinedfont][#1]\fi
+ \csname\string\thedefinedfont\endcsname % can be \relax
+ \the\everydefinedfont}
+
+\unexpanded\def\definedfont
+ {\dosingleempty\dodefinedfont}
+
+\unexpanded\def\startfont
+ {\bgroup\definedfont}
+
+\def\stopfont
+ {\egroup}
+
+\def\doiffontcharelse#1#2%
+ {\bgroup
+ \definedfont[#1]%
+ \iffontchar\font#2\relax
+ \egroup\expandafter\firstoftwoarguments
+ \else
+ \egroup\expandafter\secondoftwoarguments
+ \fi}
+
+%%% message 14 added
+
+\startmessages dutch library: fonts
+ title: korps
+ 1: codering --
+ 2: variant -- wordt geladen
+ 3: onbekende variant --
+ 4: korps -- is niet gedefinieerd
+ 5: stijl -- is niet gedefinieerd
+ 6: -- wordt geladen
+ 7: onbekend formaat --
+ 8: stijl -- gedefinieerd
+% 9: mapping -- is geladen
+ 10: onbekende font file --
+ 14: korps -- is gedefinieerd (kan beter globaal plaatsvinden)
+\stopmessages
+
+\startmessages english library: fonts
+ title: bodyfont
+ 1: coding --
+ 2: variant -- is loaded
+ 3: unknown variant --
+ 4: bodyfont -- is not defined
+ 5: style -- is not defined
+ 6: -- is loaded
+ 7: unknown format --
+ 8: style -- defined
+% 9: mapping -- is loaded
+ 10: unknown font file --
+ 14: bodyfont -- is defined (can better be done global)
+\stopmessages
+
+\startmessages german library: fonts
+ title: Fliesstext
+ 1: Kodierung --
+ 2: Variante -- ist geladen
+ 3: Unbekannte Variante --
+ 4: Fliesstext -- ist nicht definiert
+ 5: Stil -- ist nicht definiert
+ 6: -- ist geladen
+ 7: unbekanntes Format --
+ 8: Stil -- definiert
+% 9: Map -- ist geladen
+ 10: unbekanntes Font --
+ 14: Fliesstext -- wurde definiert (besser waere globale Definition)
+\stopmessages
+
+\startmessages czech library: fonts
+ title: zakladnifont
+ 1: kodovani --
+ 2: varianta -- je nactena
+ 3: neznama varianta --
+ 4: zakladni font -- neni definovan
+ 5: styl -- neni definovan
+ 6: -- je nacten
+ 7: neznamy format --
+ 8: styl -- definovan
+% 9: mapovani -- je nacteno
+ 10: neznamy font --
+ 14: bodyfont -- is defined (can better be done global)
+\stopmessages
+
+\startmessages italian library: fonts
+ title: font del corpo
+ 1: codifica --
+ 2: variante -- caricata
+ 3: variante sconosciuta --
+ 4: corpo del testo -- non definito
+ 5: stile -- non definito
+ 6: -- caricato
+ 7: formato sconosciuto --
+ 8: stile -- definito
+% 9: mappatura -- caricata
+ 10: file di font sconosciuto --
+ 14: corpo del testo -- definito (sarebbe meglio globale)
+\stopmessages
+
+\startmessages norwegian library: fonts
+ title: hovedfont
+ 1: koding --
+ 2: variant -- er lest inn
+ 3: ukjent variant --
+ 4: hovedfont -- er ikke definert
+ 5: stil -- er ikke definert
+ 6: -- er lest inn
+ 7: ukjent format --
+ 8: stil -- definert
+% 9: avbildning -- er lest inn
+ 10: ukjent fontfil --
+ 14: bodyfont -- is defined (can better be done global)
+\stopmessages
+
+\startmessages romanian library: fonts
+ title: corp de litere
+ 1: codificarea --
+ 2: varianta -- este incarcata
+ 3: varianta necunoscuta --
+ 4: corpul de litere -- nu este definit
+ 5: stilul -- nu este definit
+ 6: -- este incarcat
+ 7: format necunoscut --
+ 8: stilul -- definit
+% 9: maparea -- este incarcat
+ 10: fisier font necunoscut --
+ 14: bodyfont -- is defined (can better be done global)
+\stopmessages
+
+%D This module is one of the oldest modules of \CONTEXT. The
+%D macros below evolved out of the \PLAIN\ \TEX\ macros and
+%D therefore use a similar naming scheme (\type{\rm},
+%D \type{\bf}, etc). This module grew out of our needs. We
+%D started with the \PLAIN\ \TEX\ definitions, generalized the
+%D underlaying macros, and extended those to a level at which
+%D probably no one will ever recognize them.
+%D
+%D In 2001 we ran into a couple of projects where more than
+%D one combined set of fonts was involved in a document. To
+%D make definitions more readable, as well as to overcome the
+%D problem of ever growing file name lists, and also because
+%D we needed to scale fonts relative to each other, the low
+%D level implementation was partly rewritten. Global
+%D font assignments, relative scaling, font classes and alike
+%D were added then. At the same time some macros were made a
+%D bit more readable, and math support was extended to the
+%D larger sizes.
+%D
+%D One important characteristic of the font mechanism presented
+%D here is the postponing of font loading. This makes it
+%D possible to distribute \type{fmt} files without bothering
+%D about the specific breed of \type{tfm} files.
+%D
+%D Another feature implemented here is the massive switching
+%D from roman to {\ss sans serif}, {\tt teletype} or else. This
+%D means one doesn't have to take care of all kind of relations
+%D between fonts.
+%D
+%D \page[bigpreference]
+
+%D \macros
+%D {rm,ss,tt,hw,cg}
+%D
+%D Fonts are defined in separate files. When we define a font,
+%D we distinguish between several styles. In most cases we will
+%D use:
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC roman regular serif \NC \type{\rm} \NC\FR
+%D \NC sansserif sans support \NC \type{\ss} \NC\MR
+%D \NC type teletype mono \NC \type{\tt} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D The number of styles is not limited to these three. When
+%D using Lucida Bright we can for instance also define:
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC handwritten \NC \type{\hw} \NC\FR
+%D \NC calligraphic \NC \type{\cg} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D Anyone who feels the need, can define additional ones, like
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC faxfont \NC \type{\ff} \NC\FR
+%D \NC blackboard \NC \type{\bb} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D Or even
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC hebrew \NC \type{\hb} \NC\SR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D Styles are grouped in font sets. At the moment there are
+%D three main sets defined:
+%D
+%D \startlinecorrection
+%D \starttable[|l|l||]
+%D \HL
+%D \NC Computer Modern Roman \NC Knuth \NC \type{cmr} \NC\FR
+%D \NC Lucida Bright \NC Bigelow \& Holmes \NC \type{lbr} \NC\MR
+%D \NC Standard Postscript Fonts \NC Adobe \NC \type{pos} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D There are also some Computer Modern Roman alternatives:
+%D
+%D \startlinecorrection
+%D \starttable[|l|l||]
+%D \HL
+%D \NC Computer Modern Roman \NC Knuth \& Sauter \NC \type{sau} \NC\FR
+%D \NC Euler fonts \NC Zapf \NC \type{eul} \NC\MR
+%D \NC Computer Modern Concrete \NC Knuth \& Zapf \NC \type{con} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D All these definitions are ordered in files with names like
+%D \type{font-cmr} and \type{font-pos}, where the last three
+%D characters specify the name as known to \CONTEXT.
+%D
+%D Within such a font set (\type{cmr}) and style (\type{\rm})
+%D we can define a number of text font alternatives:
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC typeface \NC \type{\tf} \NC\FR
+%D \NC boldface \NC \type{\bf} \NC\MR
+%D \NC slanted \NC \type{\sl} \NC\MR
+%D \NC italic \NC \type{\it} \NC\MR
+%D \NC boldslanted \NC \type{\bs} \NC\MR
+%D \NC bolditalic \NC \type{\bi} \NC\MR
+%D \NC smallcaps \NC \type{\sc} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+
+%D For old stylish Frans Goddijn we have:
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC oldstyle \NC \type{\os} \NC\SR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D The availability of these alternatives depends on the
+%D completeness of a font family and of course the definitions
+%D in the font files.
+%D
+%D But let's not forget math. In addition to the previous \TEX\
+%D families (the mysterious \type{\fam}'s) we've got some more:
+%D
+%D \startlinecorrection
+%D \starttable[|l||]
+%D \HL
+%D \NC Math Roman \NC \type{\mr} \NC\FR
+%D \NC Math Italic \NC \type{\mi} \NC\MR
+%D \NC Math Symbol \NC \type{\sy} \NC\MR
+%D \NC Math Extra \NC \type{\ex} \NC\MR
+%D \NC Math A \NC \type{\ma} \NC\MR
+%D \NC Math B \NC \type{\mb} \NC\MR
+%D \NC Math C \NC \type{\mc} \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D Users can call for specific fonts in many ways. Switches to
+%D other typefaces, like the switch from normal to bold, are as
+%D intuitive as possible, which means that all dependant fonts
+%D also switch. One can imagine that this takes quite some
+%D processing time.
+%D
+%D Internally fonts are stored as combination of size, style
+%D and alternative, e.g. \type{12pt}+\type{\ss}+\type{\bf}.
+%D Users are not confronted with sizes, but use the style or
+%D style+alternative to activate them.
+%D
+%D During the definition of a bodyfont one can also declare the
+%D available larger alternatives:
+%D
+%D \starttyping
+%D \tf \tfa \tfb \tfc ...
+%D \bf \bfa \bfb \bfc ...
+%D \sl \sla \slb \slc ...
+%D \stoptyping
+%D
+%D The smaller ones are automatically supplied and derived from
+%D the the bodyfont environment.
+%D
+%D \starttyping
+%D \tfx \tfxx
+%D \bfx \bfxx
+%D \slx \slxx
+%D \stoptyping
+%D
+%D There are only two smaller alternatives per style. The
+%D larger alternatives on the other hand have no limitations.
+%D
+%D These larger alternatives are mostly used in chapter and
+%D section titles or on title pages. When one switches to a
+%D larger alternative, the bold an other ones automatically
+%D adapt themselves:
+%D
+%D \startbuffer
+%D \tfd Hi \bf there\sl, here \tfb I \bf am
+%D \stopbuffer
+%D
+%S \startnarrower
+%D \typebuffer
+%S \stopnarrower
+%D
+%D therefore becomes:
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D Maybe this mechanism isn't always as logic, but as said
+%D before, we tried to make it as intuitive as possible.
+%D
+%D So a specific kind of glyph can be characterized by:
+%D
+%D \startnarrower
+%D family (cmr) + bodyfont (12pt) + style (rm) + alternative (bf) + size (a)
+%D \stopnarrower
+%D
+%D The last component (the size) is optional.
+%D
+%D We introduced \type{\tf} as command to call for the current
+%D normally sized typeface. This commands results in roman,
+%D sans serif, teletype or whatever style is in charge. Such
+%D rather massive switches of style sometimes take more
+%D processing time than comfortable. Of course there is a
+%D workaround for this: we can call fonts directly by means of
+%D commands like:
+%D
+%D \starttyping
+%D \rmtf \sssl \tttf \rmbsa
+%D \stoptyping
+%D
+%D One should realize that this fast calls have limitations,
+%D they lack for instance automatic super- and subscript
+%D support.
+%D
+%D This leaves us two more commands: \type{\tx} and
+%D \type{\txx}. These activate a smaller and even more smaller
+%D font than the current one and adapt themselves to the
+%D current alternative, so when \type{\bf} is active,
+%D \type{\tx} gives a smaller boldface, which in turn can be
+%D called directly by \type{\bfx}.
+%D
+%D These two smaller alternatives are specified by the bodyfont
+%D environment and therefore not necessarily have similar sizes
+%D as \type{\scriptsize} and \type{\scriptscriptsize}. The main
+%D reason for this incompatibility (which can easily be undone)
+%D lays in the fact that we often want a bit bigger characters
+%D than in math mode. In \CONTEXT\ for instance the \type{\tx}
+%D and \type{\txx} commands are used for surrogate
+%D \cap{smallcaps} which support both nesting and alternatives,
+%D like in {\bf\cap{a \cap{small} world}}, which was typeset by
+%D
+%D \starttyping
+%D \bf\cap{a \cap{small} world}
+%D \stoptyping
+%D
+%D And compare $\rm \scriptstyle THIS$ with the slightly larger
+%D \cap{THIS}: \ruledhbox{$\rm \scriptstyle scriptstyle: THIS$}
+%D or \ruledhbox{\cap{x style: THIS}} makes a big difference.
+
+%D The \type{x..d} sizes should be used grouped. If you
+%D don't group them, i.e. call them in a row, \CONTEXT\ will
+%D not be able to sort out your intention (\type {x} inside
+%D \type {d} inside \type {x}. etc.). The following table
+%D demonstrates this:
+%D
+%D \def\FontState{\setstrut\ruledhbox{\strut Hello}}
+%D
+%D \starttabulate[|||||]
+%D \HL
+%D \NC \rlap{\quad\bf grouped} \NC \NC \type {\tx} \NC \type {\txx} \NC \NR
+%D \HL
+%D \NC \type{\tfx} \NC \tfx \FontState \NC \tfx \tx \FontState \NC \tfx \txx \FontState \NC \NR
+%D \NC \type{\tfxx} \NC \tfxx \FontState \NC \tfxx\tx \FontState \NC \tfxx\txx \FontState \NC \NR
+%D \NC \type{\tf} \NC \tf \FontState \NC \tf \tx \FontState \NC \tf \txx \FontState \NC \NR
+%D \NC \type{\tfa} \NC \tfa \FontState \NC \tfa \tx \FontState \NC \tfa \txx \FontState \NC \NR
+%D \NC \type{\tfb} \NC \tfb \FontState \NC \tfb \tx \FontState \NC \tfb \txx \FontState \NC \NR
+%D \NC \type{\tfc} \NC \tfc \FontState \NC \tfc \tx \FontState \NC \tfc \txx \FontState \NC \NR
+%D \NC \type{\tfd} \NC \tfd \FontState \NC \tfd \tx \FontState \NC \tfd \txx \FontState \NC \NR
+%D \NC \type{\tfx} \NC \tfx \FontState \NC \tfx \tx \FontState \NC \tfx \txx \FontState \NC \NR
+%D \NC \type{\tfxx} \NC \tfxx \FontState \NC \tfxx\tx \FontState \NC \tfxx\txx \FontState \NC \NR
+%D \HL
+%D \stoptabulate
+%D
+%D \blank
+%D
+%D \starttabulate[|||||]
+%D \HL
+%D \NC \rlap{\quad\bf stacked} \NC \NC \type {\tx} \NC \type {\txx} \NC \NR
+%D \HL
+%D \NC \type{\tfx}
+%D \NC \tfx \FontState
+%D \NC \tfx \tx \FontState
+%D \NC \tfx \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfxx}
+%D \NC \tfx\tfxx \FontState
+%D \NC \tfx\tfxx \tx \FontState
+%D \NC \tfx\tfxx \txx \FontState
+%D \NC \NR
+%D \NC \type{\tf}
+%D \NC \tfx\tfxx\tf \FontState
+%D \NC \tfx\tfxx\tf \tx \FontState
+%D \NC \tfx\tfxx\tf \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfa}
+%D \NC \tfx\tfxx\tf\tfa \FontState
+%D \NC \tfx\tfxx\tf\tfa \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfb}
+%D \NC \tfx\tfxx\tf\tfa\tfb \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfc}
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfd}
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfd \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfd \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfd \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfx}
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx \txx \FontState
+%D \NC \NR
+%D \NC \type{\tfxx}
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx\tfxx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx\tfxx \tx \FontState
+%D \NC \tfx\tfxx\tf\tfa\tfb\tfc\tfx\tfxx \txx \FontState
+%D \NC \NR
+%D \HL
+%D \stoptabulate
+
+%D \macros
+%D {mf}
+%D
+%D Math fonts are a species in their own. They are tightly
+%D hooked into smaller and even smaller ones of similar breed
+%D to form a tight family. Let's first see how these are
+%D related:
+%D
+%D \startbuffer
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+ \bi x^2 =\rm 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+{\bi x^2}=\rm 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+ \bi x^2 =\tf 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+{\bi x^2}=\tf 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+ \bi x^2 =\bf 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+{\bi x^2}=\bf 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+ \bi x^2 =\sl 6x^2$
+%D $\tf x^2+\bf x^2+\sl x^2+\it x^2+\bs x^2+{\bi x^2}=\sl 6x^2$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Gives both an expected and unexpected result:
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D We see here that the character shapes change accordingly to
+%D the current family, but that the symbols are always typeset
+%D in the font assigned to \type{\fam0}.
+%D
+%D \startbuffer
+%D $\tf\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D $\bf\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D $\sl\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D $\bs\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D $\it\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D $\bi\mf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = 6x^2$
+%D \stopbuffer
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D In this example we see a new command \type{\mf} surface
+%D which means as much as {\em math font}. This commands
+%D reactivates the last font alternative and therefore equals
+%D \type{\bf}, \type{\sl} etc. but by default it equals
+%D \type{\tf}:
+
+\unexpanded\def\mf
+ {\dodosetmathfont\fontalternative
+ \csname\fontalternative\endcsname}
+
+%D The previous example was typeset saying:
+%D
+%D \typebuffer
+%D
+%D Beware: the exact location of \type{\mf} is not that
+%D important, we could as well has said
+%D
+%D \startbuffer
+%D $\bf x^2 + x^2 + x^2 + x^2 + x^2 + x^2 = \mf 6x^2$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This is due to the way \TEX\ handles fonts in math mode.
+%D
+%D Of course we'll have to redefine \type{\mf} every time we
+%D change the current \type{\fam}.
+
+%D \macros
+%D {mbox,enablembox,mathop}
+%D
+%D Now how can we put this to use? Will the next sequence
+%D give the desired result?
+%D
+%D \startbuffer
+%D $\bf x^2 + \hbox{\mf whatever} + \sin(2x)$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D It won't!
+%D
+%D \startvoorbeeld
+%D \let\mathop=\normalmathop \getbuffer
+%D \stopvoorbeeld
+%D
+%D The reason for this is that \type{\sin} is defined as:
+%D
+%D \starttyping
+%D \def\sin{\mathop{\rm sin}\nolimits}
+%D \stoptyping
+%D
+%D We can fix this by defining
+
+\let\normalmathop=\mathop
+
+\def\mathop
+ {\normalmathop
+ \bgroup
+ \let\rm\mf
+ \let\next=}
+
+%D We can fix arbitrary horizontal boxes by redefining the
+%D \TEX\ primitive \type{\hbox}:
+%D
+%D \starttyping
+%D \let\normalhbox=\hbox
+%D
+%D \def\hbox{\ifmmode\mbox\else\normalhbox\fi}
+%D \stoptyping
+%D
+%D with
+%D
+%D \starttyping
+%D \def\mbox#1#%
+%D {\normalhbox#1\bgroup\mf\let\next=}
+%D \stoptyping
+%D
+%D or more robust, that is, also accepting \type{\hbox\bgroup}:
+%D
+%D \starttyping
+%D \def\mbox%
+%D {\normalhbox\bgroup\mf
+%D \dowithnextbox{\flushnextbox\egroup}%
+%D \normalhbox}
+%D \stoptyping
+%D
+%D And now:
+%D
+%D \startbuffer
+%D $\bf x^2 + \hbox{whatever} + \sin(2x)$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Indeed gives:
+%D
+%D \startvoorbeeld
+%D \enablembox\getbuffer
+%D \stopvoorbeeld
+%D
+%D But, do we want this kind of trickery to be activated? No,
+%D simply because we cannot be sure of incompatibilities,
+%D although for instance unboxing goes ok. Therefore we
+%D introduce:
+
+% better use \dowithnextboxcontent
+
+\def\normalmbox
+ {\normalhbox\bgroup\mf
+ \dowithnextbox{\flushnextbox\egroup}\normalhbox}
+
+% to test:
+%
+% \def\normalmbox
+% {\dowithnextboxcontent\mf\flushnextbox\normalhbox}
+
+\def\mbox
+ {\ifmmode\normalmbox\else\normalhbox\fi}
+
+\def\enablembox
+ {\appendtoks
+ \ifx\normalhbox\undefined\let\normalhbox\hbox\fi
+ \let\hbox\mbox
+ \to\everymathematics}
+
+%D So in fact one can enable this feature if needed. I would say:
+%D go along, but use grouping if needed!
+
+%D \macros
+%D {mrfam,mifam,syfam,exfam,
+%D bsfam,bifam,scfam,tffam,
+%D mafam,mbfam,msfam}
+%D
+%D After this short mathematical excursion, we enter the world
+%D of fonts and fontswitching. We start with something very
+%D \TEX: \type{\fam} specified font families. \TEX\ uses
+%D families for managing fonts in math mode. Such a family has
+%D three members: text, script and scriptscript: $x^{y^z}$. In
+%D \CONTEXT\ we take a bit different approach than \PLAIN\
+%D \TEX\ does. \PLAIN\ \TEX\ needs at least four families for
+%D typesetting math. We use those but give them symbolic names.
+
+\chardef\mrfam = 0 % (Plain TeX) Math Roman
+\chardef\mifam = 1 % (Plain TeX) Math Italic
+\chardef\syfam = 2 % (Plain TeX) Math Symbol
+\chardef\exfam = 3 % (Plain TeX) Math Extra
+
+%D \PLAIN\ \TEX\ also defines families for {\it italic}, {\sl
+%D slanted} and {\bf bold} typefaces, so we don't have to
+%D define them here.
+
+\ifx\itfam\undefined
+
+\chardef\itfam = 4 % (Plain TeX) Italic
+\chardef\slfam = 5 % (Plain TeX) Slanted
+\chardef\bffam = 6 % (Plain TeX) Boldface
+
+\fi
+
+%D Family~7 in \PLAIN\ \TEX\ is not used in \CONTEXT, because
+%D we do massive switches from roman to sans serif, teletype or
+%D other faces.
+
+\ifx\ttfam\undefined
+
+\chardef\ttfam = 7 % (Plain TeX) can be reused!
+
+\fi
+
+%D We define ourselves some more families for {\bs bold
+%D slanted}, {\bi bold italic} and {\sc Small Caps}, so
+%D we can use them in math mode too. Instead of separate
+%D families for {\ss sans serif} and \type{teletype} we use the
+%D more general \type{\tffam}, which stands for typeface.
+
+\chardef\bsfam = 8 % (ConTeXt) BoldSlanted
+\chardef\bifam = 9 % (ConTeXt) BoldItalic
+\chardef\scfam = 10 % (ConTeXt) SmallCaps
+\chardef\tffam = 11 % (ConTeXt) TypeFace
+
+%D Because Taco needs a few more math families, we reuse
+%D family~7 for all those typefaces that have no related
+%D family, and therefore are grouped into one.
+
+\chardef\nnfam = 7 % (ReUsed) NoName
+
+%D Normally \type{\mrfam} equals \type{\tffam}, but a more
+%D distinctive alternatives are possible, for instance the
+%D Euler and Concrete Typefaces.
+%D
+%D After having defined all those in nature non||mathematical
+%D families, we define ourselves some real math ones. These are
+%D needed for the \AMS\ Symbol Fonts and Extended Lucida
+%D Bright.
+
+\chardef\mafam = 12 % (ConTeXt) Math A Fam (AmsTeX A)
+\chardef\mbfam = 13 % (ConTeXt) Math B Fam (AmsTeX B)
+\chardef\mcfam = 14 % (ConTeXt) Math C Fam (MathTime)
+\chardef\mdfam = 15 % (ConTeXt) Math D Fam (MathTime)
+
+%D Because there are 16~families and because \type{\ttfam}
+%D is reused, at the moment we have no so many families
+%D left. By default, we map any newly defined family on the
+%D last one (F).
+
+\def\newfam#1{\chardef#1=15 }
+
+%D This hack is also needed because in \ETEX\ we are going
+%D to reuse the \type {\newfam} allocation counter.
+
+%D To ease the support of font packages, we als define
+%D shortcuts to these familynames. This is necessary because
+%D the family names are in fact \type{\chardef}'s, which means
+%D that we're dealing with numbers (one can check this by
+%D applying \type{\showthe} and \type{\show}). In the
+%D specification of math symbols however we need hexadecimal
+%D numbers, so we have to convert the \type{\fam}'s value.
+
+\edef\hexmrfam {\hexnumber\mrfam} \edef\hexbsfam {\hexnumber\bsfam}
+\edef\hexmifam {\hexnumber\mifam} \edef\hexbifam {\hexnumber\bifam}
+\edef\hexsyfam {\hexnumber\syfam} \edef\hexscfam {\hexnumber\scfam}
+\edef\hexexfam {\hexnumber\exfam} \edef\hextffam {\hexnumber\tffam}
+\edef\hexitfam {\hexnumber\itfam} \edef\hexmafam {\hexnumber\mafam}
+\edef\hexslfam {\hexnumber\slfam} \edef\hexmbfam {\hexnumber\mbfam}
+\edef\hexbffam {\hexnumber\bffam} \edef\hexmcfam {\hexnumber\mcfam}
+\edef\hexnnfam {\hexnumber\nnfam} \edef\hexmdfam {\hexnumber\mdfam}
+
+%D \macros
+%D {uchar}
+%D
+%D This macro prepares \CONTEXT\ for \UNICODE\ support. By
+%D defining it here, we have at least an safeguard for utility
+%D file reading.
+
+\unexpanded\def\uchar#1#2{[#1,#2]}
+
+%D We define some (very private) constants to improve speed,
+%D memory usage and consistency.
+
+\def\@size@ {@f@si@} % bodyfont size prefix (12pt etc)
+\def\@style@ {@f@st@} % full style prefix (roman etc)
+\def\@shortstyle@ {@f@sh@} % short style prefix (rm etc)
+\def\@letter@ {@f@le@} % first alternative typeface
+\def\@noletter@ {@f@no@} % second alternative typeface
+
+%D The families can be grouped into math specific ones and
+%D more text related families, although text ones can be
+%D mapped onto the math ones to get for instance bold math.
+%D
+%D Both groups of families are handles by a couple of token
+%D list tagged as strategies. This implementation makes
+%D implementing extensions more comfortable.
+
+\newtoks \textstrategies
+\newtoks \mathstrategies
+\newtoks \symbstrategies
+
+\newif\ifsynchronizemathfonts \synchronizemathfontstrue
+
+\def\synchronizetext % stylish text in mmode
+ {\ifsynchronizemathfonts\the\textstrategies\fi} % \if...\fam\minusone\fi}
+
+\def\synchronizemath % math stuff in mmode
+ {\ifsynchronizemathfonts\the\mathstrategies\fi} % \if...\fam\minusone\fi}
+
+\def\synchronizesymb % stylish math stuff in mmode
+ {\ifsynchronizemathfonts\the\symbstrategies\fi} % \if...\fam\minusone\fi}
+
+%D By not setting the family we can append a font switch to \tyep
+%D {\everymath}. On the other hand, one never knows in what family
+%D state the strategies brought us.
+%D
+%D \starttyping
+%D {\bfa $\the\fam$} {\bfa \everymath{} $\the\fam$}
+%D \stoptyping
+
+%D \macros
+%D {textonly}
+%D
+%D We can inhibit this slow||downer with:
+
+\def\textonly{\synchronizemathfontsfalse} % document this
+
+\appendtoks
+ \dosettextfamily\c!tf
+ \dosettextfamily\c!bf
+ \dosettextfamily\c!sl
+ \dosettextfamily\c!it
+ \dosettextfamily\c!bs
+ \dosettextfamily\c!bi
+ \dosettextfamily\c!sc
+\to \textstrategies
+
+\def\dosettextfamily#1% better pass fontbody to dodoset
+ {\let\savedfontbody\fontbody
+ \let\fontfamily#1%
+ \let\fontbody\scriptscriptface\dodosettextfamily\scriptscriptfont
+ \let\fontbody\scriptface \dodosettextfamily \scriptfont
+ \let\fontbody\textface \dodosettextfamily \textfont
+ \let\fontbody\savedfontbody}
+
+% \def\s!nullfont{nullfont}
+
+\beginTEX
+
+\def\dodosettextfamily#1%
+ {\@EA\ifx\csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx\csname\fontclass\fontbody\c!mm\fontfamily\endcsname \relax
+ \@EA\ifx\csname\fontclass\fontbody\c!rm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx\csname\fontclass\fontbody\c!rm\fontfamily\endcsname \relax
+ \@EA\ifx\csname \fontbody\c!mm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx\csname \fontbody\c!mm\fontfamily\endcsname \relax
+ \@EA\ifx\csname \fontbody\c!rm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx\csname \fontbody\c!rm\fontfamily\endcsname \relax
+ \autofontsizetrue \nullfont \else
+ \autofontsizetrue \csname\fontbody\c!rm\fontfamily\endcsname \fi\else
+ \autofontsizefalse \csname\fontbody\c!rm\fontfamily\fontsize\endcsname\fi\else
+ \autofontsizetrue \csname\fontbody\c!mm\fontfamily\endcsname \fi\else
+ \autofontsizefalse \csname\fontbody\c!mm\fontfamily\fontsize\endcsname\fi\else
+ \autofontsizetrue \csname\fontclass\fontbody\c!rm\fontfamily\endcsname \fi\else
+ \autofontsizefalse \csname\fontclass\fontbody\c!rm\fontsize\endcsname\fi\else
+ \autofontsizetrue \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \fi\else
+ \autofontsizefalse \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname\fi
+ #1\csname\fontfamily\s!fam\endcsname\font}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+%\def\dodosettextfamily#1%
+% {\ifcsname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \else
+% \ifcsname\fontclass\fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+% \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \else
+% \ifcsname\fontclass\fontbody\c!rm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname\fontclass\fontbody\c!rm\fontfamily\fontsize\endcsname \else
+% \ifcsname\fontclass\fontbody\c!rm\fontfamily\endcsname \autofontsizetrue
+% \csname\fontclass\fontbody\c!rm\fontfamily\endcsname \else
+% \ifcsname \fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname \fontbody\c!mm\fontfamily\fontsize\endcsname \else
+% \ifcsname \fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+% \csname \fontbody\c!mm\fontfamily\endcsname \else
+% \ifcsname \fontbody\c!rm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname \fontbody\c!rm\fontfamily\fontsize\endcsname \else
+% \ifcsname \fontbody\c!rm\fontfamily\endcsname \autofontsizetrue
+% \csname \fontbody\c!rm\fontfamily\endcsname \else
+% \nullfont \autofontsizetrue
+% \fi\fi\fi\fi\fi\fi\fi\fi
+% #1\csname\fontfamily\s!fam\endcsname\font}
+%
+% slightly faster:
+
+\def\dodosettextfamily
+ {\ifx\fontclass\empty
+ \@EA\dodosettextfamilyA
+ \else
+ \@EA\dodosettextfamilyB
+ \fi}
+
+\def\dodosettextfamilyA#1%
+ {\ifcsname \fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname \fontbody\c!mm\fontfamily\fontsize\endcsname \else
+ \ifcsname \fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+ \csname \fontbody\c!mm\fontfamily\endcsname \else
+ \ifcsname \fontbody\c!rm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname \fontbody\c!rm\fontfamily\fontsize\endcsname \else
+ \ifcsname \fontbody\c!rm\fontfamily\endcsname \autofontsizetrue
+ \csname \fontbody\c!rm\fontfamily\endcsname \else
+ \nullfont \autofontsizetrue
+ \fi\fi\fi\fi
+ #1\csname\fontfamily\s!fam\endcsname\font}
+
+\def\dodosettextfamilyB#1%
+ {\ifcsname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \else
+ \ifcsname\fontclass\fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+ \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \else
+ \ifcsname\fontclass\fontbody\c!rm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname\fontclass\fontbody\c!rm\fontfamily\fontsize\endcsname \else
+ \ifcsname\fontclass\fontbody\c!rm\fontfamily\endcsname \autofontsizetrue
+ \csname\fontclass\fontbody\c!rm\fontfamily\endcsname \else
+ \dodosettextfamilyA#1%
+ \fi\fi\fi\fi
+ #1\csname\fontfamily\s!fam\endcsname\font}
+
+\endETEX
+
+\def\mrfallback{\c!rm\c!tf}
+
+\appendtoks
+ \dosetmathfamily\mrfam\textface\scriptface\scriptscriptface\c!mr\mrfallback
+ \dosetmathfamily\mifam\textface\scriptface\scriptscriptface\c!mi\empty
+ \dosetmathfamily\syfam\textface\scriptface\scriptscriptface\c!sy\empty
+ \dosetmathfamily\exfam\textface\textface \textface \c!ex\empty
+ \dosetmathfamily\mafam\textface\scriptface\scriptscriptface\c!ma\empty
+ \dosetmathfamily\mbfam\textface\scriptface\scriptscriptface\c!mb\empty
+ \dosetmathfamily\mcfam\textface\scriptface\scriptscriptface\c!mc\empty
+% \dosetmathfamily\mdfam\textface\scriptface\scriptscriptface\c!md\empty
+ \dosetmathfamily\nnfam\textface\scriptface\scriptscriptface\c!nn\empty
+\to \mathstrategies
+
+\appendtoks
+ \dosetskewchar\mifam\defaultskewcharmi % implemented later on
+ \dosetskewchar\syfam\defaultskewcharsy % implemented later on
+\to \mathstrategies
+
+\def\dosetmathfamily#1#2#3#4#5#6%
+ {\let\savedfontbody\fontbody % op hoger plan
+ \let\fontfamily#5%
+ \let\backfamily#6%
+ \let\fontbody #4\dodosetmathfamily\scriptscriptfont#1%
+ \let\fontbody #3\dodosetmathfamily \scriptfont#1%
+ \let\fontbody #2\dodosetmathfamily \textfont#1%
+ \let\fontbody\savedfontbody}
+
+\beginTEX
+
+\def\dodosetmathfamily#1#2%
+ {\@EA\ifx \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \relax
+ \@EA\ifx \csname\fontclass\fontbody\backfamily\fontsize\endcsname \relax
+ \@EA\ifx \csname\fontclass\fontbody\backfamily\endcsname \relax
+ \@EA\ifx \csname \fontbody\c!mm\fontfamily\fontsize\endcsname\relax
+ \@EA\ifx \csname \fontbody\c!mm\fontfamily\endcsname \relax
+ \@EA\ifx \csname \fontbody\backfamily\fontsize\endcsname \relax
+ \@EA\ifx \csname \fontbody\backfamily\endcsname \relax
+ \autofontsizetrue \nullfont \else
+ \autofontsizetrue \csname \fontbody\backfamily\endcsname \fi \else
+ \autofontsizefalse \csname \fontbody\backfamily\fontsize\endcsname \fi \else
+ \autofontsizetrue \csname \fontbody\c!mm\fontfamily\endcsname \fi \else
+ \autofontsizefalse \csname \fontbody\c!mm\fontfamily\fontsize\endcsname\fi \else
+ \autofontsizetrue \csname\fontclass\fontbody\backfamily\endcsname \fi \else
+ \autofontsizefalse \csname\fontclass\fontbody\backfamily\fontsize\endcsname \fi \else
+ \autofontsizetrue \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \fi \else
+ \autofontsizefalse \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname\fi
+ #1#2\font}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+%\def\dodosetmathfamily#1#2%
+% {\ifcsname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \else
+% \ifcsname\fontclass\fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+% \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \else
+% \ifcsname\fontclass\fontbody\backfamily\fontsize\endcsname \autofontsizefalse
+% \csname\fontclass\fontbody\backfamily\fontsize\endcsname \else
+% \ifcsname\fontclass\fontbody\backfamily\endcsname \autofontsizetrue
+% \csname\fontclass\fontbody\backfamily\endcsname \else
+% \ifcsname \fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+% \csname \fontbody\c!mm\fontfamily\fontsize\endcsname \else
+% \ifcsname \fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+% \csname \fontbody\c!mm\fontfamily\endcsname \else
+% \ifcsname \fontbody\backfamily\fontsize\endcsname \autofontsizefalse
+% \csname \fontbody\backfamily\fontsize\endcsname \else
+% \ifcsname \fontbody\backfamily\endcsname \autofontsizetrue
+% \csname \fontbody\backfamily\endcsname \else
+% \nullfont \autofontsizetrue
+% \fi\fi\fi\fi\fi\fi\fi\fi
+% #1#2\font}
+%
+% sligthly faster:
+
+\def\dodosetmathfamily
+ {\ifx\fontclass\empty
+ \@EA\dodosetmathfamilyA
+ \else
+ \@EA\dodosetmathfamilyB
+ \fi}
+
+\def\dodosetmathfamilyA#1#2%
+ {\ifcsname \fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname \fontbody\c!mm\fontfamily\fontsize\endcsname \else
+ \ifcsname \fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+ \csname \fontbody\c!mm\fontfamily\endcsname \else
+ \ifcsname \fontbody\backfamily\fontsize\endcsname \autofontsizefalse
+ \csname \fontbody\backfamily\fontsize\endcsname \else
+ \ifcsname \fontbody\backfamily\endcsname \autofontsizetrue
+ \csname \fontbody\backfamily\endcsname \else
+ \nullfont \autofontsizetrue
+ \fi\fi\fi\fi
+ #1#2\font}
+
+\def\dodosetmathfamilyB#1#2%
+ {\ifcsname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \autofontsizefalse
+ \csname\fontclass\fontbody\c!mm\fontfamily\fontsize\endcsname \else
+ \ifcsname\fontclass\fontbody\c!mm\fontfamily\endcsname \autofontsizetrue
+ \csname\fontclass\fontbody\c!mm\fontfamily\endcsname \else
+ \ifcsname\fontclass\fontbody\backfamily\fontsize\endcsname \autofontsizefalse
+ \csname\fontclass\fontbody\backfamily\fontsize\endcsname \else
+ \ifcsname\fontclass\fontbody\backfamily\endcsname \autofontsizetrue
+ \csname\fontclass\fontbody\backfamily\endcsname \else
+ \dodosetmathfamilyA#1#2%
+ \fi\fi\fi\fi
+ #1#2\font}
+
+\endETEX
+
+\appendtoks
+ \dosetsymbfamily\mrfam\textface\scriptface\scriptscriptface\c!mr
+ \dosetsymbfamily\mifam\textface\scriptface\scriptscriptface\c!mi
+ \dosetsymbfamily\syfam\textface\scriptface\scriptscriptface\c!sy
+ \dosetsymbfamily\exfam\textface\textface \textface \c!ex
+ \dosetsymbfamily\mafam\textface\scriptface\scriptscriptface\c!ma
+ \dosetsymbfamily\mbfam\textface\scriptface\scriptscriptface\c!mb
+ \dosetsymbfamily\mcfam\textface\scriptface\scriptscriptface\c!mc
+% \dosetsymbfamily\mdfam\textface\scriptface\scriptscriptface\c!md % also ?
+\to \symbstrategies
+
+\def\dosetsymbfamily#1#2#3#4#5%
+ {\let\savedfontbody\fontbody
+ \let\fontfamily#5%
+ \let\fontbody #4\dodosetsymbfamily\scriptscriptfont#1%
+ \let\fontbody #3\dodosetsymbfamily \scriptfont#1%
+ \let\fontbody #2\dodosetsymbfamily \textfont#1%
+ \let\fontbody\savedfontbody}
+
+\beginTEX
+
+\def\dodosetsymbfamily#1#2%
+ {\@EA\ifx\csname\fontclass\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname\relax
+ \@EA\ifx\csname\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname\relax
+ \else
+ \csname\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ #1#2\font
+ \fi
+ \else
+ \csname\fontclass\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ #1#2\font
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dodosetsymbfamily#1#2%
+ {\ifcsname\fontclass\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ \csname\fontclass\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ #1#2\font
+ \else\ifcsname\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ \csname\fontbody\c!mm\fontfamily\fontalternative\fontsize\endcsname
+ #1#2\font
+ \fi\fi}
+
+\endETEX
+
+%D All used styles, like rm, ss and tt, are saved in a comma
+%D separated list. Appart from practical limitations one can
+%D define as many styles as needed.
+
+\let\stylelist=\empty
+
+\def\fontsizelist{\s!text,\s!script,\s!scriptscript,\c!x,\c!xx,\c!big,\c!small}
+
+%D \macros
+%D {magfactor,magfactorhalf}
+%D
+%D There are several ways to specify a font. Three of them are
+%D pure \TeX\ ones, the fourth one is new:
+%D
+%D \starttyping
+%D \font\name=cmr12
+%D \font\name=cmr12 at 10pt
+%D \font\name=cmr12 scaled \magstep2
+%D \font\name=cmr12 sa 1.440
+%D \stoptyping
+%D
+%D The non||\TEX\ alternative \type{sa} stands for {\em scaled
+%D at}. This means as much as: scale the bodyfontsize with this
+%D factor. The value 1.440 in this example is derived
+%D from the \type{\magstep}'s as mentioned in
+%D \in{table}[tab:magstep]. We therefore introduce
+%D \type{\magfactor} as an alternative for \type{\magstep}.
+%D
+%D \placetable[here][tab:magstep]
+%D {Factors to be used with \type{sa.}}
+%D \starttable[|c|c|c|]
+%D \HL
+%D \NC \bf magstep \NC \bf equivalent \NC \bf factor \NC\SR
+%D \HL
+%D \NC 1 \NC \type{\magfactor1} \NC 1.200 \NC\FR
+%D \NC 2 \NC \type{\magfactor2} \NC 1.440 \NC\MR
+%D \NC 3 \NC \type{\magfactor3} \NC 1.728 \NC\MR
+%D \NC 4 \NC \type{\magfactor4} \NC 2.074 \NC\MR
+%D \NC 5 \NC \type{\magfactor5} \NC 2.488 \NC\LR
+%D \HL
+%D \stoptable
+
+\def\magstep#1% \relax removed, otherwise space after it sticks, else added
+ {\ifcase#1 \@m\or1200\or1440\or1728\or2074\or2488\or\@m\fi}
+
+\def\magstephalf
+ {1095}
+
+\def\magfactor#1%
+ {\ifcase#1 1.000\or1.200\or1.440\or1.728\or2.074\or2.488\or1\fi}
+
+\def\magfactorhalf
+ {1.095}
+
+%D These macros enable the use of definitions like \type{sa
+%D \magfactor3} which saves us both (mis|)|calculations and
+%D potential mistypings.
+%D
+%D Because \type {sa} (scaled at) and \type {mo} (mapped on)
+%D are not low level \TEX\ supported alternatives, we have to
+%D test for it ourselves. In doing so, we need an auxiliary
+%D \DIMENSION. We cannot use \type{\scratchdimen} because font
+%D loading can happen at any moment due to postponed loading.
+%D We could instead have used dirty grouping tricks, but this
+%D one works too.
+
+\let\defaultrelativefontsize \plusone
+\let\localrelativefontsize \plusone
+\def\localabsolutefontsize {\fontbody}
+
+\let\relativefontsize \defaultrelativefontsize
+
+\def\saverelativefontsize#1#2% #1=rm|ss|.. #2=waarde
+ {\setxvalue{\fontclass#1\s!rscale}{#2}}
+
+\beginTEX
+
+\def\checkrelativefontsize#1%
+ {\edef\relativefontsize
+ {\@EA\ifx\csname\fontclass#1\s!rscale\endcsname\relax
+ \defaultrelativefontsize
+ \else
+ \csname\fontclass#1\s!rscale\endcsname
+ \fi}}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\checkrelativefontsize#1%
+ {\edef\relativefontsize
+ {\ifcsname\fontclass#1\s!rscale\endcsname
+ \csname\fontclass#1\s!rscale\endcsname
+ \else
+ \defaultrelativefontsize
+ \fi}}
+
+\endETEX
+
+\newdimen\scaledfont
+
+\let\somefontspec\empty
+
+\def\@fs@{@fs@}
+
+% \def\parsefontspec#1%
+% {\xdef\somefontspec{#1\space\relax}%
+% \@EA\doparsefontspec\somefontspec]% =>#1 \relax]
+% \donoparsefontspec}
+%
+% but, better:
+
+\def\parsefontspec#1%
+ {\xdef\somefontspec{#1\space}%
+ \@EA\doparsefontspec\somefontspec\relax]% =>#1 \relax]
+ \donoparsefontspec}
+
+\def\doparsefontspec#1 #2%
+ {\def\somefontname{#1}%
+ \ifx\somefontname\empty % space before fontname
+ \@EA\doparsefontspec
+ \else\ifx#2\relax
+ \@EAEAEA\setnaturalfontspec
+ \else
+ \@EAEAEA\setforcedfontspec
+ \fi\fi
+ #2}
+
+\def\setnaturalfontspec#1]%
+ {\@fs@scaled\plusthousand\relax}
+
+\def\setforcedfontspec#1 #2\relax]%
+ {\csname\@fs@#1\endcsname#2\relax}
+
+\def\@fs@scaled
+ {\afterassignment\do@fs@scaled\scratchcounter}
+
+\def\do@fs@scaled#1\relax
+ {\scaledfont\number\scratchcounter\points
+ \scaledfont\localrelativefontsize\scaledfont
+ \ifautofontsize\scaledfont\currentfontbodyscale\scaledfont\fi
+ \scratchcounter\scaledfont % \scaledfont is now pretty large
+ \advance\scratchcounter \medcard
+ \divide\scratchcounter \maxcard
+ \xdef\somefontspec{ scaled \the\scratchcounter}}
+
+\def\@fs@at
+ {\afterassignment\do@fs@at\scaledfont}
+
+\def\do@fs@at#1\relax
+ {\scaledfont\localrelativefontsize\scaledfont
+ \ifautofontsize\scaledfont\currentfontbodyscale\scaledfont\fi
+ \xdef\somefontspec{ at \the\scaledfont}}
+
+\def\@fs@sa
+ {\scaledfont\localabsolutefontsize
+ \setsamofontspec}
+
+\def\@fs@mo
+ {\scaledfont\setmappedfontsize\localabsolutefontsize
+ \setsamofontspec}
+
+\def\setsamofontspec#1\relax
+ {\checkfontscale#1\end\scaledfont
+ \scaledfont\localrelativefontsize\scaledfont
+ \ifautofontsize\scaledfont\currentfontbodyscale\scaledfont\fi
+ \xdef\somefontspec{ at \the\scaledfont}}
+
+\def\getfontparameters
+ {\expandafter\dogetfontparameter\@@fontdata,]=,}
+
+\def\getglobalfontparameters
+ {\expandafter\dogetglobalfontparameter\@@fontdata,]=,}
+
+\def\dogetfontparameter#1=#2,%
+ {\if]#1\else
+ \expandafter\def\csname\??ff\@@fontfile#1\endcsname{#2}%
+ \expandafter\dogetfontparameter
+ \fi}
+
+\def\dogetglobalfontparameter#1=#2,%
+ {\if]#1\else
+ \expandafter\gdef\csname\??ff\@@fontfile#1\endcsname{#2}%
+ \expandafter\dogetglobalfontparameter
+ \fi}
+
+\let\@@fontencoding\empty
+\let\@@fontmapping \empty
+\let\@@fonthandling\empty
+\let\@@skewchar \empty
+\let\@@hyphenchar \empty % todo, will go to encoding
+
+%D This brings down maps processing from 466 to 309 seconds
+%D ($-33$\%) and mfonts from 42 to 34 seconds ($-15$\%).
+
+\newif\ifskipfontcharacteristics \skipfontcharacteristicstrue
+
+%D When fontclasses are used, we define the font global,
+%D since namespaces are used. Otherwise we parse the specs
+%D each time.
+
+% wrong: this way we cannot set encoding etc
+%
+% \def\donoparsefontspec#1%
+% {\edef\fontfile{\truefontname\somefontname}%
+% \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi
+% \edef\lastfontname{\fontfile\somefontspec}%
+% \ifx\fontclass\empty\else\global\fi
+% \expandafter\font\csname#1\endcsname\lastfontname\relax
+% \relax}
+
+\let\fontfile\s!unknown
+
+\def\donoparsefontspec % #1 == \cs
+ {\edef\fontfile{\truefontname\somefontname}%
+ \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi
+ \edef\lastfontname{\fontfile\somefontspec}%
+ \ifx\fontclass\empty
+ \expandafter\definefontlocal
+ \else
+ \expandafter\definefontglobal
+ \fi} % #1 == \cs
+
+\def\definefontlocal#1%
+ {\expandafter\font\csname#1\endcsname\lastfontname\relax}
+
+\def\definefontglobal#1% stores \somefontname=Mono and \fontfile=cmtt10
+ {\expandafter\xdef\csname#1\endcsname
+ {\noexpand\csname#1:\endcsname
+ \noexpand\reactivatefont{\somefontname}{\fontfile}}%
+ \global\expandafter\font\csname#1:\endcsname\lastfontname\relax}
+
+\def\reactivatefont#1%#2%
+ {\def\somefontname{#1}\def\fontfile}%{#2}}
+
+% can be handy for tracing purposes
+%
+% \def\reportfontdefinition
+% {\bgroup
+% \expanded{\infofont
+% [\lastfontidentifier
+% ->\newfontidentifier
+% ->\fontname\csname\newfontidentifier\endcsname]}%
+% \endgraf
+% \egroup}
+
+%D An additional the second \type {\font} definition can
+%D prevent fuzzy font refs
+%D
+%D \starttyping
+%D \expandafter\font\csname\dummyfontname\endcsname\lastfontname
+%D \stoptyping
+%D
+%D but somehow they changed \TEX\ so that it does not matter
+%D any more.
+
+\def\defaultfontfile{cmtt10}
+\edef\nullfontname {\fontname\nullfont}
+\edef\dummyfontname {font\strippedcsname\\}
+
+%D \macros
+%D {everyfont,everyfontswitch}
+%D
+%D For special purposes, we provide a hook.
+
+\newevery \everyfont \relax
+\newevery \everyfontswitch \relax
+
+% safer but sometimes introducing newlines in the log
+%
+% \batchmode
+% \font\lastloadedfont\fontfile\somefontspec\relax
+% \errorstopmode
+% \edef\lastfontname{\fontname\lastloadedfont}%
+% \ifx\lastfontname\nullfontname
+% \showmessage\m!fonts{10}{\fontfile}%
+% \expandafter\font\csname#1\endcsname=\defaultfontfile\somefontspec\relax
+% \else
+% \expandafter\let\csname#1\endcsname\lastloadedfont
+% \fi
+
+%D We also accept \type{sa a}||\type{sa d} as specification.
+
+\beginETEX \ifcsname
+
+\def\checkfontscale#1#2\end#3%
+ {#3\ifcsname\??ft\s!default\noexpand#1\endcsname
+ \csname\??ft\s!default\noexpand#1\endcsname\else#1#2%
+ \fi#3}
+
+\endETEX
+
+\beginTEX
+
+\def\checkfontscale#1#2\end#3%
+ {#3\expandafter\ifx\csname\??ft\s!default\noexpand#1\endcsname\relax
+ #1#2\else\csname\??ft\s!default\noexpand#1\endcsname
+ \fi#3}
+
+\endTEX
+
+%D The duplicate font definition, using the ever the same dummy
+%D font name, results in less fuzzy error messages. In the log
+%D file, for instance when overfull boxes are reported, the
+%D simple keyword `font' replaces the \TEX\ ordinated name. The
+%D latter can be too misleading, due to the fact that \TEX\ has
+%D a rather optimized font memory management. Thanks to Taco
+%D for helping me sort this out.
+
+%D \macros
+%D {definefontsynonym, doifelsefontsynonym,
+%D expandfontsynonym, truefontname, truefontdata}
+%D
+%D While looking for fonts, fontsynonyms are used for accessing
+%D the files!
+%D
+%D \starttyping
+%D \definefontsynonym[Serif][Lucida-Bright]
+%D \definefontsynonym[Lucida-Bright][lbr][encoding=texnansi]
+%D \stoptyping
+%D
+%D The definitions can be accessed by:
+%D
+%D \startlines
+%D name: \type {\truefontname{Lucida-Bright}}
+%D data: \type {\truefontdata{\truefontname{Lucida-Bright}}}
+%D \stoplines
+
+% \def\definefontsynonym
+% {\dotripleempty\dodefinefontsynonym}
+%
+% \def\dodefinefontsynonym[#1][#2][#3]%
+% {\@EA\edef\csname\??ff\fontclass#1\endcsname{#2}%
+% \ifthirdargument
+% \edef\@@fontdata{#3}%
+% \ifx\@@fontdata\empty \else
+% \edef\@@fontfile{#2}%
+% \ifx\fontclass\empty
+% \getfontparameters
+% \else
+% \getglobalfontparameters
+% \fi
+% \fi
+% \fi}
+%
+% slightly faster, noticable when loading many typefaces,
+%
+% \testfeatureonce{5000}{\definefontsynonym[somefont][somename]} \end
+
+\def\definefontsynonym[#1]#2[#3]%
+ {\edef\@@fontfile{#3}%
+ \@EA\let\csname\??ff\fontclass#1\endcsname\@@fontfile
+ \doifnextcharelse[\dodefinefontsynonym\donothing}
+
+\def\dodefinefontsynonym[#1]%
+ {\edef\@@fontdata{#1}%
+ \ifx\@@fontdata\empty \else \ifx\fontclass\empty
+ \getfontparameters
+ \else
+ \getglobalfontparameters
+ \fi \fi}
+
+\let\definefontfile\definefontsynonym % dedicated to Taco Hoekwater
+
+\def\setupfontsynonym
+ {\dodoubleempty\dosetupfontsynonym}
+
+\def\dosetupfontsynonym[#1][#2]%
+ {\edef\@@fontdata{#2}%
+ \ifx\@@fontdata\empty \else
+ \edef\@@fontfile{#1}%
+ \ifx\fontclass\empty
+ \getfontparameters
+ \else
+ \getglobalfontparameters
+ \fi
+ \fi}
+
+\beginTEX
+
+\def\truefontdata#1#2%
+ {\expandafter\ifx\csname\??ff#1#2\endcsname\relax
+ \expandafter\ifx\csname\??ff\fontclass#1\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\endcsname\relax
+ \expandafter\ifx\csname\??ff#2\endcsname\relax
+ \else
+ % raw(key)
+ \csname\??ff#2\endcsname
+ \fi
+ \else
+ % exp(Regular) raw(key)
+ \expandafter\truefontdata\csname\??ff#1\endcsname#2%
+ \fi
+ \else
+ % exp(palatino Regular) raw(key)
+ \expandafter\truefontdata\csname\??ff\fontclass#1\endcsname#2%
+ \fi
+ \else
+ % raw(Regular) raw(key)
+ \csname\??ff#1#2\endcsname
+ \fi}
+
+\def\truefontname#1%
+ {\expandafter\ifx\csname\??ff\fontclass#1\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\endcsname\relax
+ #1%
+ \else
+ \@EA\truefontname\csname\??ff#1\endcsname
+ \fi
+ \else
+ \@EA\truefontname\csname\??ff\fontclass#1\endcsname
+ \fi}
+
+\def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1)
+ {\@EA\ifx\csname\??ff\fontclass#2\endcsname\relax\else
+ \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}%
+ \fi}
+
+\def\doifelsefontsynonym#1%
+ {\@EA\ifx\csname\??ff\fontclass#1\endcsname\relax
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\truefontdata#1#2%
+ {\ifcsname\??ff#1#2\endcsname
+ % raw(Regular) raw(key)
+ \csname\??ff#1#2\endcsname
+ \else\ifcsname\??ff\fontclass#1\endcsname
+ % exp(palatino Regular) raw(key)
+ \expandafter\truefontdata\csname\??ff\fontclass#1\endcsname#2%
+ \else\ifcsname\??ff#1\endcsname
+ % exp(Regular) raw(key)
+ \expandafter\truefontdata\csname\??ff#1\endcsname#2%
+ \else\ifcsname\??ff#2\endcsname
+ % raw(key)
+ \csname\??ff#2\endcsname
+ \fi\fi\fi\fi}
+
+\def\truefontname#1%
+ {\ifcsname\??ff\fontclass#1\endcsname
+ \@EA\truefontname\csname\??ff\fontclass#1\endcsname
+ \else\ifcsname\??ff#1\endcsname
+ \@EA\truefontname\csname\??ff#1\endcsname
+ \else
+ #1%
+ \fi\fi}
+
+\def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1)
+ {\ifcsname\??ff\fontclass#2\endcsname
+ \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}%
+ \fi}
+
+\def\doifelsefontsynonym#1%
+ {\ifcsname\??ff\fontclass#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\endETEX
+
+% \definetypeface[palatino][rm][serif][palatino,allbold][default]
+%
+% \startfontclass[palatino]
+% \definefontsynonym [Serif] [SerifBold]
+% \definefontsynonym [SerifItalic] [SerifBoldItalic]
+% \definefontsynonym [SerifSlanted] [SerifBoldSlanted]
+% \definefontsynonym [SerifCaps] [SerifBold]
+% \stopfontclass
+%
+% \setupbodyfont[palatino]
+
+\def\startfontclass
+ {\dosingleempty\dostartfontclass}
+
+\def\dostartfontclass[#1]%
+ {\pushmacro\fontclass
+ \doifsomething{#1}{\def\fontclass{#1}}}
+
+\def\stopfontclass
+ {\popmacro\fontclass}
+
+%D \macros
+%D {tracedfontname}
+%D
+%D A goody:
+
+\beginTEX
+
+\def\tracedfontencoding#1%
+ {\expandafter\ifx\csname\??ff#1\s!encoding\endcsname\relax\else
+ \space[\csname\??ff#1\s!encoding\endcsname]%
+ \fi}
+
+\def\tracedfontname#1%
+ {\expandafter\ifx\csname\??ff\fontclass#1\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\endcsname\relax
+ #1%
+ \else
+ #1\tracedfontencoding{#1}\space->\space
+ \@EA\tracedfontname\csname\??ff#1\endcsname
+ \fi
+ \else
+ #1\tracedfontencoding{\fontclass#1}\space->\space
+ \@EA\tracedfontname\csname\??ff\fontclass#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX
+
+\def\tracedfontencoding#1%
+ {\ifcsname\??ff#1\s!encoding\endcsname
+ \space[\csname\??ff#1\s!encoding\endcsname]%
+ \fi}
+
+\def\tracedfontname#1%
+ {\ifcsname\??ff\fontclass#1\endcsname
+ #1\tracedfontencoding{\fontclass#1}\space->\space
+ \@EA\tracedfontname\csname\??ff\fontclass#1\endcsname
+ \else\ifcsname\??ff#1\endcsname
+ #1\tracedfontencoding{#1}\space->\space
+ \@EA\tracedfontname\csname\??ff#1\endcsname
+ \else
+ #1%
+ \fi\fi}
+
+\endETEX
+
+%D \macros
+%D {getfontfileparameters}
+%D
+%D For special purposes, one can use the next macro to
+%D access font file characteristics, for instance:
+%D
+%D \starttyping
+%D \getfontfileparameters{Regular}
+%D \stoptyping
+%D
+%D can result in:
+%D
+%D \starttyping
+%D \def\currentfontfileencoding{texnansi}
+%D \stoptyping
+
+% \def\@@currentfontfile{currentfontfile}
+%
+% \def\getfontfileparameters#1%
+% {\edef\fontdata{\truefontdata{\truefontname{#1}}}%
+% \expanded{\getparameters[\@@currentfontfile][\fontdata]}}
+
+\def\getfontfileparameters#1%
+ {\edef\@@truefontname{\truefontname{#1}}%
+ \edef\currentfontfileencoding{\truefontdata\@@truefontname\s!encoding}%
+ \edef\currentfontfilemapping {\truefontdata\@@truefontname\s!mapping }%
+ \edef\currentfontfilehandling{\truefontdata\@@truefontname\s!handling}}
+
+%D \macros
+%D {definefont}
+%D
+%D Before we implement the main definition macro, we first show
+%D one for local use:
+%D
+%D \starttyping
+%D \definefont[Some][LucidaBright at 100pt] \Some some
+%D \definefont[More][LucidaBright scaled 3000] \More more
+%D \definefont[Nice][LucidaBright mp 2] \Nice nice
+%D \definefont[Text][LucidaBright sa 5.4] \Text last
+%D \stoptyping
+%D
+%D The implementation one looks familiar:
+
+% The simple implementation is:
+%
+% \def\definefont
+% {\dodoubleargument\dodefinefont}
+%
+% \def\dodefinefont[#1][#2]%
+% {\doifinstringelse{ }{#2}
+% {\unexpanded\setvalue{#1}{\dododefinefont{#1}{#2}}}
+% {\dodefinefont[#1][#2 sa 1]}}
+
+\def\definefont
+ {\dotripleempty\dodefinefont}
+
+\def\dodefinefont[#1][#2][#3]% [name][spec][1.6 | line=10pt | setup_id]
+ {\doifinstringelse{ }{#2}
+ {\ifthirdargument
+ \unexpanded\setvalue{#1}{\redodefinefont{#1}{#2}{#3}}%
+ \else
+ \unexpanded\setvalue{#1}{\dododefinefont{#1}{#2}}%
+ \fi}
+ {\definefont[#1][#2 sa *][#3]}}
+
+%\def\redodefinefont#1#2#3%
+% {\dododefinefont{#1}{#2}%
+% \doifnumberelse{#3}
+% {\setupinterlinespace[#3]\setupspacing}
+% {\doifassignmentelse{#3}
+% {\setupinterlinespace[#3]\setupspacing}
+% {\setups[#3]}}} % so, we can have setups associated to fonts !
+
+\def\redodefinefont#1#2#3%
+ {\dododefinefont{#1}{#2}%
+ \doifsetupselse{#3}
+ {\setups[#3]} % don't forget to document this !
+ {\setuplocalinterlinespace[#3]%
+ \setupspacing}} % needed ?
+
+% \def\defineclassfont
+% {\doquadrupleempty\dodefineclassfont}
+%
+% \def\dodefineclassfont[#1][#2][#3][#4]% #2 = class
+% {\iffourthargument
+% \definefont[#1][#2#3][#4]%
+% %\else\ifthirdargument
+% % \definefont[#1][#2#3]%
+% \else
+% \definefont[#1][#2]%
+% \fi}
+
+%D The \type {*} makes the switch local, so that we can redefine a
+%D logical name and/or change the size in between.
+
+\newif\ifautofontsize \autofontsizetrue
+
+\let\lastfontidentifier\empty
+
+\def\rawfontidentifier{**\lastfontidentifier\fontsize**}
+\def\newfontidentifier{*\fontclass\lastfontidentifier\fontsize*}
+
+\def\dododefinefont#1#2%
+ {\edef\lastfontidentifier{#1}%
+ \let\localrelativefontsize\defaultrelativefontsize
+ \let\localabsolutefontsize\fontbody
+ \parsefontspec{#2}\rawfontidentifier
+ \let\localrelativefontsize\defaultrelativefontsize % not needed
+ \csname\rawfontidentifier\endcsname
+ \autofontsizefalse
+ \setfontcharacteristics
+ \the\everyfontswitch}
+
+\beginTEX
+
+\def\xxdododefinefont#1#2#3#4% \autofontsizetrue is set by calling routine
+ {\edef\lastfontidentifier{#3}%
+ \@EA\ifx\csname\newfontidentifier\endcsname\relax
+ \def\localrelativefontsize{#1}%
+ \def\localabsolutefontsize{#2}%
+ \parsefontspec{#4}\newfontidentifier
+ \let\localrelativefontsize\defaultrelativefontsize % not needed
+ \fi
+ \csname\newfontidentifier\endcsname
+ \autofontsizefalse
+ %\edef\lastfontidentifier{#3}%
+ \ifskipfontcharacteristics \else
+ \setfontcharacteristics
+ \the\everyfontswitch
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\xxdododefinefont#1#2#3#4% \autofontsizetrue is set by calling routine
+ {\edef\lastfontidentifier{#3}%
+ \ifcsname\newfontidentifier\endcsname\else
+ \def\localrelativefontsize{#1}%
+ \def\localabsolutefontsize{#2}%
+ \parsefontspec{#4}\newfontidentifier
+ \let\localrelativefontsize\defaultrelativefontsize % not needed
+ \fi
+ \csname\newfontidentifier\endcsname
+ \autofontsizefalse
+ %\edef\lastfontidentifier{#3}%
+ \ifskipfontcharacteristics \else
+ \setfontcharacteristics
+ \the\everyfontswitch
+ \fi}
+
+\endETEX
+
+%D I considered checking for mistakenly use of \PLAIN's
+%D \type{\magstep}'s but although it would take only a few
+%D lines of code, this would not add to consistent use. I
+%D therefore removed this check.
+
+%D \macros
+%D {mapfontsize}
+%D
+%D For special purposes, like in math, you may want to use
+%D slightly different sizes than the ones given. This happens
+%D for instance with the Math Times fonts. Mapped font sizes
+%D can be specified by using the \type {mo} key instead of
+%D \type {sa} in font definitions.
+%D
+%D \startbuffer
+%D \mapfontsize[10pt][11pt]
+%D \mapfontsize[11pt][12pt]
+%D \mapfontsize[12pt][13pt]
+%D
+%D \definefont[test][Serif]\test TEST \par
+%D \definefont[test][Serif sa 5]\test TEST \par
+%D \definefont[test][Serif mo 5]\test TEST \par
+%D \definefont[test][Serif sa d]\test TEST \par
+%D \definefont[test][Serif at 60pt]\test TEST \par
+%D \definefont[test][Serif scaled 6000]\test TEST \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startpacked
+%D \getbuffer
+%D \stoppacked
+
+\def\mapfontsize
+ {\dodoubleargument\domapfontsize}
+
+\def\domapfontsize[#1][#2]%
+ {\scratchdimen#1\relax % \relax is really needed here
+ \setvalue{\??ft*\the\scratchdimen}{#2}}
+
+\beginTEX
+
+\def\setmappedfontsize#1%
+ {\expandafter\ifx\csname\??ft*#1\endcsname\relax
+ #1%
+ \else
+ \csname\??ft*#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\setmappedfontsize#1%
+ {\ifcsname\??ft*#1\endcsname
+ \csname\??ft*#1\endcsname
+ \else
+ #1%
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {getfontname}
+%D
+%D The names of the fonts can be called with the rather simple
+%D macro \type{\getfontname}. When for instance we pass
+%D \type{12ptrmtf} as argument, we get \getfontname{12ptrmtf}.
+
+\def\getfontname#1%
+ {\csname\??ft#1\endcsname}
+
+%D To be documented.
+
+\let\sizelist\empty
+
+\def\definefontsize[#1]% sneller met toks
+ {\addtocommalist{#1}\sizelist
+ \def\docommando##1%
+ {\def\dodocommando####1%
+ {\def\dododocommando########1%
+ %{\checkbodyfont{}{########1}{####1}{##1}}%
+ {\checkbodyfont{########1}{####1}{##1}}%
+ \processcommacommand[\stylelist]\dododocommando}%
+ \processcommacommand[\alternativelist]\dodocommando}%
+ \processcommacommand[\sizelist]\docommando}
+
+\def\alternativetextlist{\c!tf,\c!bf,\c!it,\c!sl,\c!bs,\c!bi,\c!sc}
+\def\alternativemathlist{\c!mr,\c!mi,\c!sy,\c!ex,\c!ma,\c!mb}
+
+\let\alternativelist\alternativetextlist % upward compatible
+
+%\definefontsize[\c!a] \definefontsize[\c!b]
+%\definefontsize[\c!c] \definefontsize[\c!d]
+
+%D \macros
+%D {currentfontscale,currentfontbodyscale}
+%D
+%D Sometimes we need to have access to the font scale
+%D including the \type{a}||\type{d} sizes. The next macro
+%D returns the current scaling factor. Take a look at
+%D \type {cont-log.tex} for an example of its use.
+
+\beginTEX
+
+\def\currentfontscale
+ {\@EA\ifx\csname\??ft\s!default\xfontsize\endcsname\relax
+ \@EA\ifx\csname\??ft\s!default\s!text\endcsname\relax
+ 1%
+ \else
+ \csname\??ft\s!default\s!text\endcsname
+ \fi
+ \else
+ \csname\??ft\s!default\xfontsize\endcsname
+ \fi}
+
+\def\currentfontbodyscale
+ {\@EA\ifx\csname\??ft\s!default\fontsize\endcsname\relax
+ \@EA\ifx\csname\??ft\s!default\s!text\endcsname\relax
+ 1%
+ \else
+ \csname\??ft\s!default\s!text\endcsname
+ \fi
+ \else
+ \csname\??ft\s!default\fontsize\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\currentfontscale
+ {\csname\??ft\s!default
+ \ifcsname\??ft\s!default\xfontsize\endcsname \xfontsize \else
+ \ifcsname\??ft\s!default\s!text \endcsname \s!text \fi\fi
+ \endcsname}
+
+\def\currentfontbodyscale
+ {\csname\??ft\s!default
+ \ifcsname\??ft\s!default\fontsize\endcsname \fontsize \else
+ \ifcsname\??ft\s!default\s!text \endcsname \s!text \fi\fi
+ \endcsname}
+
+\endETEX
+
+\setvalue{\??ft\s!default}{1}
+
+%D Both alternatives use \type {\xfontsize}, a macro that
+%D expands to the current size in terms of \type {a} \unknown
+%D \type {d}, nothing, or \type {x} \unknown \type {xx}.
+
+\def\xfontsize{\ifcase\currentxfontsize\fontsize\or\c!x\else\c!xx\fi}
+
+%D A typical use of this command is in commands that switch
+%D to another font bypassing the font mechanism:
+%D
+%D \starttyping
+%D \font\myfont=\truefontname{MyFont} at \currentfontscale\bodyfontsize
+%D \stoptyping
+
+%D Now we enter the area of font switching. The switching
+%D mechanism has to take care of several situations, like:
+%D
+%D \startitemize[packed]
+%D \item changing the overal document fonts (including margins,
+%D headers and footers)
+%D \item changing local fonts (only the running text)
+%D \item smaller and even more smaller alternatives (super-
+%D and subscripts)
+%D \stopitemize
+%D
+%D \TEX\ offers a powerfull family mechanism for super- and
+%D subscripts in math mode. In text mode however, we don't use
+%D families for the smaller alternatives, and therefore have
+%D to take care of it otherwise.
+
+%D \macros
+%D {definebodyfontenvironment,setupbodyfontenvironment}
+%D
+%D The relationship between the several sizes of a font, is
+%D defined by:
+%D
+%D \showsetup{definebodyfontenvironment}
+%D
+%D Later on we will see how these parameters are used, so for
+%D the moment we stick with an example:
+%D
+%D \starttyping
+%D \definebodyfontenvironment
+%D [12pt]
+%D [ text=12pt,
+%D script=9pt,
+%D scriptscript=7pt,
+%D x=10pt,
+%D xx=8pt,
+%D big=12pt,
+%D small=10pt]
+%D \stoptyping
+%D
+%D The first argument specifies the bodyfont size to which the
+%D settings apply. All second parameters are specified in
+%D dimensions and tell us more about related sizes.
+%D
+%D Afterwards, one can change values with
+%D
+%D \showsetup{setupbodyfontenvironment}
+%D
+%D Due to the fact that \type{\c!text} and \type{\s!text} can
+%D have a similar meaning, and therefore can lead to an
+%D unwanted loop, we temporary redefine \type{\c!text}. For
+%D the moment this in only place that some trickery is needed
+%D to fool the multilingual interface.
+%D
+%D When instead of a size the keyword \type{unknown} is
+%D passed, fractions (relations) are used instead of fixed
+%D sizes.
+
+\let\bodyfontenvironmentlist\empty
+
+\newcount\@@fontdefhack
+
+\def\@@beginfontdef
+ {\ifcase\@@fontdefhack
+ \let\k!savedtext \k!text \let\k!text \s!text
+ \let\k!k!savedtext \k!k!text \let\k!k!text \!!plusone
+ \let\k!saveddefault \k!default \let\k!default \s!default
+ \let\k!k!saveddefault\k!k!default \let\k!k!default \!!plusone
+ \fi
+ \advance\@@fontdefhack \plusone }
+
+\def\@@endfontdef
+ {\advance\@@fontdefhack \minusone
+ \ifcase\@@fontdefhack
+ \let\k!k!default\k!k!saveddefault
+ \let\k!default \k!saveddefault
+ \let\k!k!text \k!k!savedtext
+ \let\k!text \k!savedtext
+ \fi}
+
+\def\definebodyfontenvironment
+ {\dotripleempty\dodefinebodyfontenvironment}
+
+\def\dodefinebodyfontenvironment[#1][#2][#3]% class size settings
+ {\ifthirdargument
+ \@@beginfontdef
+ \doifelse{#2}\s!default
+ {\getparameters[\??ft\s!default][#3]}
+ {\normalizebodyfontsize#2\to\tempbodyfontsize
+ \addtocommalist\tempbodyfontsize\bodyfontenvironmentlist
+ \@EA\dododefinebodyfontenvironment\@EA[\tempbodyfontsize][#1][#3]}%
+ \@@endfontdef
+ \else
+ \definebodyfontenvironment[\fontclass][#1][#2]% change */*
+ \fi}
+
+\def\dododefinebodyfontenvironment[#1][#2][#3]% size class settings
+ {\@@beginfontdef
+ \doifundefined{\??ft#2#1\c!em} % \s!text goes wrong in testing because
+ {\def\docommando##1% % the 12pt alternative will called when
+ {\scratchdimen#1\relax % typesetting the test (or so)
+ \scratchdimen\csname\??ft\s!default##1\endcsname\scratchdimen
+ \normalizebodyfontsize\scratchdimen\to\tempbodyfontsize
+ \setevalue{\??ft#2#1##1}{\tempbodyfontsize}}%
+ \processcommacommand[\fontsizelist]\docommando
+ \copyparameters
+ [\??ft#2#1][\??ft\s!default]
+ [\c!interlinespace,\c!em]}%
+ \getparameters[\??ft#2#1][#3]%
+ \@@endfontdef
+ % new code, see remark
+ \ifloadingfonts \else % only runtime
+ \doifundefined{\@size@#1} % only once
+ {\letvalue{\@size@#1}\empty % prevent loop
+ \defineunknownfont{#1}}% % safeguard
+ \fi
+ % so far
+ \setvalue{\@size@#1}{\docompletefontswitch[#1]}}
+
+%D {\bf Remark:} We need to cover the following cases,
+%D otherwise users can get confused:
+%D
+%D \starttyping
+%D \setupbodyfont[23pt]
+%D
+%D \definebodyfontenvironment[23pt]
+%D \setupbodyfont[23pt]
+%D
+%D \definebodyfontenvironment[23pt]
+%D \definebodyfont[23pt][rm,ss,tt][default]
+%D \setupbodyfont[23pt]
+%D \stoptyping
+
+%D Beware: while some font defs can be global, the bodyfont
+%D environment checks local. This means that multiple local
+%D checks resulting in definitions are not that efficient.
+%D So, apart from an occasional switch, one should define an
+%D environment at the outer level.
+
+\def\checkbodyfontenvironment[#1]%
+ {\definebodyfontenvironment[\fontclass][#1][]}
+
+% original
+%
+% \def\setupbodyfontenvironment
+% {\dotripleempty\dosetupbodyfontenvironment}
+%
+% \def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings
+% {\@@beginfontdef
+% \ifthirdargument
+% \getparameters[\??ft#1#2][#3]%
+% \else
+% \getparameters[\??ft#1][#2]%
+% \fi
+% \@@endfontdef}
+%
+% this one already catches both define/setup
+
+\def\setupbodyfontenvironment{\definebodyfontenvironment}
+
+% officially, but not needed (yet):
+%
+% \def\dosetupbodyfontenvironment[#1][#2][#3]% class size settings
+% {\ifthirdargument
+% \localbodyfontsize#2\relax
+% \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize
+% \doifundefinedelse{\??ft#1\normalizedbodyfontsize\c!em}
+% {\definebodyfontenvironment[#1][#2][#3]}%
+% {\getparameters[\??ft#1\normalizedbodyfontsize][#3]}%
+% \else
+% \localbodyfontsize#1\relax
+% \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize
+% \doifundefinedelse{\??ft\normalizedbodyfontsize\c!em}
+% {\definebodyfontenvironment[#1][#2]}%
+% {\getparameters[\??ft\normalizedbodyfontsize][#2]}%
+% \fi}
+
+%D Just a couple of interface macros:
+
+\beginTEX
+
+\def\bodyfontvariable#1%
+ {\??ft\@EA\ifx\csname\??ft\fontclass#1\endcsname\relax\else\fontclass\fi#1}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\bodyfontvariable#1%
+ {\??ft\ifcsname\??ft\fontclass#1\endcsname\fontclass\fi#1}
+
+\endETEX
+
+\def\bodyfontcsname
+ {\csname\bodyfontvariable}
+
+\def\bodyfontinterlinespecs
+ {\bodyfontvariable{\normalizedbodyfontsize\c!interlinespace}}
+
+\def\bodyfontinterlinespace
+ {\csname\bodyfontinterlinespecs\endcsname}
+
+%D We default all parameters to the main bodyfont size (begin
+%D \type{#1}), so the next setup is valid too:
+%D
+%D \starttyping
+%D \definebodyfontenvironment[24pt]
+%D \stoptyping
+%D
+%D All parameters can be redefined when needed, so one does
+%D not have to stick to the default ones.
+
+%D \macros
+%D {definebodyfont}
+%D
+%D The next step in defining a bodyfont involves the actual font
+%D files, which can be recognized by their extension
+%D \type{tfm}. Installing those file is often beyond the
+%D scope of the user and up to the system administrator.
+%D
+%D \showsetup{definebodyfont}
+%D
+%D This commands takes three arguments: a (series of) bodyfont
+%D size(s), the style group to which the definitions belong,
+%D and an alternative, as specified by the \TEX\ (math) families,
+%D extended with~a, b~\unknown.
+%D
+%D We show two examples, that show all the alternative
+%D scaling options. The \type{\tfa} alternatives can be
+%D extended with \type{\bfa}, \type{\slb}, etc. or even
+%D \type{e} and higher alternatives.
+%D
+%D \starttyping
+%D \definebodyfont [12pt] [rm]
+%D [tf=cmr12,
+%D bf=cmbx12,
+%D it=cmti12,
+%D sl=cmsl12,
+%D bi=cmbxti10 at 12pt,
+%D bs=cmbxsl10 at 12pt,
+%D tfa=cmr12 scaled \magstep1,
+%D tfb=cmr12 scaled \magstep2,
+%D tfc=cmr12 scaled \magstep3,
+%D tfd=cmr12 scaled \magstep4,
+%D sc=cmcsc10 at 12pt]
+%D
+%D \definebodyfont [12pt,11pt,10pt,9pt,8pt] [rm]
+%D [tf=lbr sa 1,
+%D bf=lbd sa 1,
+%D it=lbi sa 1,
+%D sl=lbsl sa 1,
+%D bi=lbdi sa 1,
+%D bs=lbdi sa 1,
+%D tfa=lbr sa 1.200,
+%D tfb=lbr sa 1.440,
+%D tfc=lbr sa 1.728,
+%D tfd=lbr sa 2.074,
+%D sc=lbr sa 0.833]
+%D \stoptyping
+%D
+%D The second example shows that we can define more sizes at
+%D once. The main difference between these examples is that the
+%D Computer Modern Roman come in many design sizes. This means
+%D that there we cannot define them in bulk using \type{sa}.
+%D Instead of \type{rm} (roman) one can define \type{ss} (sans
+%D serif), \type{tt} (teletype), \type{hw} (hand written),
+%D \type{cg} (calygraphic) and whatever styles.
+%D
+%D The first argument may be a comma separated list. This,
+%D combined with specifications using \type{sa} can save a lot
+%D of typing. Although all arguments should be specified, we
+%D treat the second argument as optional.
+%D
+%D Defining a bodyfont involves two actions: defining the
+%D specific style related alternatives, like \type{\rma},
+%D \type{\bfa} and \type{\rmsla}, and storing the definitions
+%D of their bodyfont size related fonts. The first step is
+%D bodyfont independant but executed every time. This permits
+%D user definitions like \type{\tfw} or \type{\bfq} for real
+%D large alternatives.
+
+\def\definebodyfont
+ {\doquadrupleempty\redefinebodyfont}
+
+\def\redefinebodyfont[#1][#2][#3][#4]%
+ {\iffourthargument
+ \processcommacommand[#1]{\reredefinebodyfont[#2][#3][#4]}%
+ \else
+ \dodefinebodyfont[#1][#2][#3]%
+ \fi}
+
+\def\reredefinebodyfont[#1][#2][#3]#4%
+ {\pushmacro\fontclass
+ \doifelse{#4}\s!default
+ {\let\fontclass\empty}
+ {\def\fontclass{#4}}%
+ \definebodyfont[#1][#2][#3]%
+ \popmacro\fontclass}
+
+\def\dodefinebodyfont[#1][#2][#3]% body|identifier style defs|identifier
+ {\ifthirdargument
+ \doifnumberelse{#1}
+ {\doifassignmentelse{#3}
+ {% [12pt] [style] [settings]
+ \doifundefined{#2}{\expanded{\definefontstyle[#2][#2]}}% new
+ \processcommalist[#1]{\dododefinebodyfont{#2}{#3}}}
+ {% [12pt] [style] [identifier]
+ \dodefinedefaultbodyfont[#1][#2][#3]}} % body style identifier
+ {% [identifier] [style] [settings] % see ***
+ \setvalue{\s!default#1#2}##1##2{\expanded{\xdodefinebodyfont[##1][##2][#3]}}}%
+ \else\ifsecondargument
+ \definebodyfont[#1][\c!rm][#2]%
+ \else
+ \doifundefined{\@size@#1} % Maybe there are default dependancies
+ {\defineunknownfont{#1}}% defined which we can use ([unknown])
+ \doifundefined{\@size@#1} % and if not, then we have at least to
+ {\definebodyfont[#1][\c!rm][]}% make sure some basics are set up.
+ \fi\fi}
+
+\def\xdodefinebodyfont[#1][#2][#3]% body|identifier style defs|identifier
+ {%\writestatus{[#1]}{[#2][#3]}%
+ \checkrelativefontsize{#2}% rather new, inherit from other defs
+ \ifundefined{#2}\expanded{\definefontstyle[#2][#2]}\fi % new
+ \processcommalist[#1]{\dododefinebodyfont{#2}{#3}}%
+ \let\relativefontsize\defaultrelativefontsize}
+
+\def\dododefinebodyfont#1#2#3% style defs body
+ {\checkbodyfontenvironment[#3]% just to be sure.
+ \processcommalist[#2]{\dodododefinebodyfont{#1}{#3}}}
+
+\def\dodododefinebodyfont#1#2#3% style body def
+ {\dododododefinebodyfont{#1}{#2}[#3]}
+
+\newif \ifresolvefontfile % protected by fontclass anyway
+
+\def\resolvefontname#1 {\truefontname{#1} }
+
+\def\iflocalclassfonts{\ifx\fontclass\empty}
+
+\def\dododododefinebodyfont#1#2[#3#4#5=#6]% style body def
+ {\ifundefined{#1#3#4#5}%
+ %\checkbodyfont{#2}{#1}{#3#4}{#5}% not \definefontsize[#5]
+ \checkbodyfont{#1}{#3#4}{#5}% not \definefontsize[#5]
+ \fi
+ \iflocalclassfonts
+ \letbeundefined{*\fontclass#2#1#3#4#5*}%
+ \scratchtoks{#6}%
+ \expanded{\unexpanded\noexpand\setvalue{#2#1#3#4#5}%
+ {\noexpand\xxdododefinefont{\relativefontsize}{#2}%
+ {#2#1#3#4#5}{\the\scratchtoks}}}%
+ \else
+ %\expanded{\writestatus{defining}{[\fontclass][#2#1#3#4#5] \resolvefontname#6 }}%
+ \global\letbeundefined{*\fontclass#2#1#3#4#5*}%
+ \ifresolvefontfile
+ \unexpanded\setxvalue{\fontclass#2#1#3#4#5}%
+ {\noexpand\xxdododefinefont{\relativefontsize}{#2}%
+ {#2#1#3#4#5}{\resolvefontname#6 }}%
+ \else
+ \scratchtoks{#6}%
+ \expanded{\unexpanded\noexpand\setgvalue{\fontclass#2#1#3#4#5}%
+ {\noexpand\xxdododefinefont{\relativefontsize}{#2}%
+ {#2#1#3#4#5}{\the\scratchtoks}}}%
+ \fi
+ \fi}
+
+% \def\checkbodyfont#1#2#3#4% body style alt size / gdef % #4 can be empty
+% {\def\c!!mm{#2}%
+% \ifx\c!!mm\c!mm % prevents \max and alike (re)defs
+% \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm
+% \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl
+% \else
+% \unexpanded\setgvalue {#2#4}{\setcurrentfontstylesize {#2}{#4}}% \rma
+% \unexpanded\setgvalue {#3#4}{\setcurrentfontalternativesize {#3}{#4}}% \sla
+% \unexpanded\setgvalue {#2#3#4}{\setcurrentfontstylealternativesize{#2}{#3}{#4}}% \rmsla
+% \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm
+% \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl
+% \unexpanded\setgvalue {#2\c!x}{\setcurrentfontxstylealternative {#2}}% \rmx
+% \unexpanded\setgvalue{#2\c!xx}{\setcurrentfontxxstylealternative {#2}}% \rmxx
+% \unexpanded\setgvalue {#3\c!x}{\setcurrentfontxalternative {#3}}% \slx
+% \unexpanded\setgvalue{#3\c!xx}{\setcurrentfontxxalternative {#3}}% \slxx
+% \unexpanded\setgvalue {#2#3}{\setcurrentfontstylealternative {#2}{#3}}% \rmsl
+% \fi}
+%
+% leaner
+
+\def\checkbodyfont#1% tests for ttsl mmbf
+ {\def\c!!mm{#1}%
+ \ifx\c!!mm\c!mm % prevents \max and alike (re)defs
+ \expandafter\checkmathbodyfont
+ \else
+ \expandafter\checktextbodyfont
+ \fi{#1}} % no \c!!mm, not expanded later on
+
+\def\checkmathbodyfont#1#2#3% style alt size / gdef % #3 can be empty
+ {%\message{!m #1 #2 #3!}%
+ % #1 #2 #3 = signal
+ \unexpanded\setgvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}% \mmsla
+ \unexpanded\setgvalue {#1}{\setcurrentfontstyle {#1}}% \mm
+ \unexpanded\setgvalue {#2}{\setcurrentfontalternative {#2}}}% \sl
+
+\def\checktextbodyfont#1#2#3% style alt size / gdef % #3 can be empty
+ {%\message{!t #1 #2 #3!}%
+ \unexpanded\setgvalue {#1#3}{\setcurrentfontstylesize {#1}{#3}}% \rma
+ \unexpanded\setgvalue {#2#3}{\setcurrentfontalternativesize {#2}{#3}}% \sla
+ \unexpanded\setgvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}% \rmsla
+ \unexpanded\setgvalue {#1}{\setcurrentfontstyle {#1}}% \rm
+ \unexpanded\setgvalue {#2}{\setcurrentfontalternative {#2}}% \sl
+ \unexpanded\setgvalue {#1\c!x}{\setcurrentfontxstylealternative {#1}}% \rmx
+ \unexpanded\setgvalue{#1\c!xx}{\setcurrentfontxxstylealternative {#1}}% \rmxx
+ \unexpanded\setgvalue {#2\c!x}{\setcurrentfontxalternative {#2}}% \slx
+ \unexpanded\setgvalue{#2\c!xx}{\setcurrentfontxxalternative {#2}}% \slxx
+ \unexpanded\setgvalue {#1#2}{\setcurrentfontstylealternative {#1}{#2}}}% \rmsl
+
+\def\dodefinedefaultbodyfont[#1][#2][#3]% sizes styles identifier
+ {\def\dododefinedefaultbodyfont##1%
+ {\def\dodododefinedefaultbodyfont####1%
+ {\def\dododododefinedefaultbodyfont########1%
+ {\doifdefined{\s!default########1####1}
+ {% [12pt] [style] [identifier]
+ \getvalue{\s!default########1####1}{##1}{####1}}}%
+ \processcommalist[#3]\dododododefinedefaultbodyfont}%
+ \processcommalist[#2]\dodododefinedefaultbodyfont}%
+ \processcommalist[#1]\dododefinedefaultbodyfont}
+
+%D Unknown families are added to the family list! For the
+%D moment we also set the direct calls here. Some day a better
+%D solution will be implemented. The good news is that unknown
+%D fonts are defined automatically.
+
+\newif\ifdefiningunknownfont
+
+% \def\defineunknownfont#1%
+% {\let\c!savedtext\c!text
+% \let\c!text\s!text
+% \donefalse
+% \def\docommando##1%
+% {\doifdefined{\??ft\s!default##1}
+% {\donetrue
+% \scratchdimen#1\relax
+% \scratchdimen\csname\??ft\s!default##1\endcsname\scratchdimen
+% \normalizebodyfontsize\scratchdimen\to\!!stringa
+% \letvalue{\??ft#1##1}\!!stringa}}%
+% \processcommacommand[\fontsizelist]\docommando
+% \let\c!text\c!savedtext
+% \ifdone
+% \donefalse
+% \def\defineunknownbodyfont##1% see ***
+% %{\doifdefined{\s!default##1}
+% % {\donetrue\getvalue{\s!default##1}{#1}}}%
+% {\doifdefined{\s!default\s!default##1}
+% {\donetrue\getvalue{\s!default\s!default##1}{#1}{##1}}}%
+% \processcommacommand
+% [\stylelist]
+% \defineunknownbodyfont
+% \ifdone
+% \setvalue{\@size@#1}{\docompletefontswitch[#1]}%
+% \ifdefiningunknownfont \else
+% \definingunknownfonttrue
+% \def\defineunknownsubfont##1%
+% {\doifundefined{\@size@\getvalue{\??ft#1##1}}
+% {\defineunknownfont{\getvalue{\??ft#1##1}}}}%
+% \processcommacommand[\fontsizelist]\defineunknownsubfont
+% \definingunknownfontfalse
+% \fi
+% \fi
+% \ifdone
+% \showmessage\m!fonts{14}{#1}%
+% \fi
+% \fi}
+
+\def\dodefineunknownfont#1#2%
+ {\doifdefined{\??ft\s!default#2}
+ {\donetrue
+ \scratchdimen#1\relax
+ \scratchdimen\csname\??ft\s!default#2\endcsname\scratchdimen
+ \normalizebodyfontsize\scratchdimen\to\!!stringa
+ \letvalue{\??ft#1#2}\!!stringa}}
+
+% \def\dodefineunknownbodyfont#1#2% see ***
+% {\doifdefined{\s!default\s!default#2}
+% {\donetrue
+% \getvalue{\s!default\s!default#2}{#1}{#2}}}
+%
+% but ... it needs to be as follows:
+%
+% \def\dodefineunknownbodyfont#1#2% see ***
+% {\doifdefined{\s!default\fontclass#2}% was \s!default\s!default (related to change */*)
+% {\donetrue
+% \getvalue{\s!default\fontclass#2}{#1}{#2}}}
+%
+% eh ... this does not work so we revert back to:
+
+\def\dodefineunknownbodyfont#1#2% see ***
+ {\doifdefined{\s!default\s!default#2}% somehow related to */*
+ {\donetrue
+ \getvalue{\s!default\s!default#2}{#1}{#2}}}
+
+\def\dodefineunknownsubfont#1#2%
+ {\doifundefined{\@size@\getvalue{\??ft#1#2}}
+ {\donetrue
+ \defineunknownfont{\getvalue{\??ft#1#2}}}}
+
+\def\defineunknownfont#1%
+ {\let\c!savedtext\c!text
+ \let\c!text\s!text
+ \donefalse
+ \processcommacommand[\fontsizelist]{\dodefineunknownfont{#1}}%
+ \let\c!text\c!savedtext
+ \ifdone
+ \donefalse
+ \processcommacommand
+ [\stylelist]
+ {\dodefineunknownbodyfont{#1}}%
+ \ifdone
+ \donefalse
+ \setvalue{\@size@#1}{\docompletefontswitch[#1]}%
+ \ifdefiningunknownfont \else
+ \definingunknownfonttrue
+ \processcommacommand[\fontsizelist]{\dodefineunknownsubfont{#1}}%
+ \definingunknownfontfalse
+ \fi
+ \fi
+ \ifdone
+ \showmessage\m!fonts{14}{#1}%
+ \fi
+ \fi}
+
+% \def\defineunknownfontstyles#1%
+% {\def\defineunknownbodyfont##1% see ***
+% {\executeifdefined{\s!default\s!default##1}\gobbletwoarguments{#1}{##1}}%
+% \rawprocesscommacommand[\stylelist]\defineunknownbodyfont}
+
+%D These macros show that quite some definitions take place.
+%D Fonts are not loaded yet! This means that at format
+%D generation time, no font files are preloaded.
+
+%D A previous implementation used:
+%D
+%D \starttyping
+%D \type {\setvalue{name}{\donottest...}}
+%D \stoptyping
+%D
+%D instead of the more memory hungry:
+%D
+%D \starttyping
+%D \unexpanded\setvalue{name}{...}
+%D \stoptyping
+%D
+%D The first alternative saves about 500 hash entries (about
+%D 2.5\% of the total number of entries used. The second
+%D alternative is currently used, because that one can more
+%D easily be made \ETEX\ aware.
+
+%D \macros
+%D {everybodyfont,Everybodyfont}
+%D
+%D Every change in bodyfont size has conseqences for the baseline
+%D distance and skips between paragraphs. These are initialized
+%D in other modules. Here we only provide the hooks that
+%D garantees their handling.
+
+\ifx\everybodyfont\undefined % permits reloading
+ \newevery \everybodyfont \EveryBodyFont
+\fi
+
+%D At the system level one can initialize thing like:
+%D
+%D \starttyping
+%D \appendtoks \setupspacing \to \everybodyfont
+%D \stoptyping
+%D
+%D While users can add their own non standard commands like:
+%D
+%D \starttyping
+%D \EveryBodyFont{\message{changing to bodyfont \the\bodyfontsize}}
+%D \stoptyping
+%D
+%D Personnaly I never felt the need for such extensions, but
+%D at least its possible.
+
+%D \macros
+%D {globalbodyfontsize,localbodyfontsize}
+%D
+%D Next we'll do the tough job of font switching. Here we
+%D have to distinguish between the global (overal) bodyfont
+%D size and the local (sometimes in the textflow) size. We
+%D store these dimensions in two \DIMENSION\ registers.
+
+\newdimen\globalbodyfontsize \globalbodyfontsize=12pt
+\newdimen\localbodyfontsize \localbodyfontsize =\globalbodyfontsize
+
+%D \macros
+%D {bodyfontsize}
+%D
+%D These two registers are not to be misused in calculations.
+%D For this purpose we keep a copy:
+
+\newdimen\bodyfontsize \bodyfontsize=\globalbodyfontsize
+
+%D \macros
+%D {outputresolution}
+%D
+%D Sometimes (to be honest: not in this module) we need to
+%D take the system resolution into account. Therefore we also
+%D define a macro:
+
+\def\outputresolution {600}
+
+%D \macros
+%D {bodyfontfactor,bodyfontpoints}
+%D
+%D For multiplication purposes we keep an auxiliary counter
+%D and macro (here the expansion is not explicitly needed):
+
+\newcount\bodyfontpoints \dimensiontocount\bodyfontsize\bodyfontpoints
+
+\edef\bodyfontfactor{\withoutpt\the\bodyfontsize}
+
+%D When we assign for instance 12pt to a \DIMENSION\ register
+%D the \type{\the}'d value comes out as 12.0pt, which is
+%D often not the way users specify the bodyfont size. Therefore
+%D we also store the normalized value.
+
+\chardef\fontdigits=1
+
+% \def\donormalizedbodyfontsize#1.#2#3#4\to#5%
+% {\edef#5%
+% {#1%
+% \ifcase\fontdigits\space
+% \or
+% \ifcase#2 \else.#2\fi % and not: \ifcase#2\else ...
+% \else
+% \ifcase#2#3 \else.#2\ifcase#3 \else#3\fi\fi % not: \ifcase#2#3\else ...
+% \fi
+% pt}}
+%
+% \def\normalizebodyfontsize#1\to#2%
+% {\scratchdimen#1\relax
+% \@EA\@EA\@EA\donormalizedbodyfontsize
+% \@EA\WITHOUTPT\the\scratchdimen00\to#2}
+
+\def\normalizebodyfontsize#1\to#2%
+ {\scratchdimen#1\relax
+ \ifcase\fontdigits\advance\scratchdimen.5\points\fi
+ \@EA\@EA\@EA\donormalizedbodyfontsize
+ \@EA\WITHOUTPT\the\scratchdimen00\to#2}
+
+\def\donormalizedbodyfontsize#1.#2#3#4\to#5% \points ?
+ {\edef#5%
+ {#1%
+ \ifcase\fontdigits\or
+ \ifcase#2 \else.#2\fi % and not: \ifcase#2\else ...
+ \else
+ \ifcase#2#3 \else.#2\ifcase#3 \else#3\fi\fi % not: \ifcase#2#3\else ...
+ \fi
+ \s!pt}}
+
+\normalizebodyfontsize\bodyfontsize\to\normalizedglobalbodyfontsize
+\normalizebodyfontsize\bodyfontsize\to\normalizedlocalbodyfontsize
+\normalizebodyfontsize\bodyfontsize\to\normalizedbodyfontsize
+
+%D To be internationalized:
+
+\def\korpsgrootte {\bodyfontsize}
+\def\korpspunten {\bodyfontpoints}
+
+%D some day.
+
+%D \macros
+%D {fontstyle,fontalternative,fontsize}
+%D
+%D Within a bodyfont, fonts can come in different sizes. For
+%D instance \type{\tf} is accompanied by \type{\tfa},
+%D \type{\tfb} etc. The first two characters denote the
+%D alternative, while the third character in these sequences
+%D represents the size. The actual size is saved in a macro
+%D
+%D The style, being roman (\type{\rm}), sans serif (\type{\ss})
+%D etc. is also available in a macro in \type{rm}, \type{ss}
+%D etc. form:
+
+\let\defaultfontalternative = \c!tf
+\let\defaultfontstyle = \empty
+\let\defaultfontsize = \empty
+
+\let\fontalternative = \defaultfontalternative
+\let\fontstyle = \defaultfontstyle
+\let\fontsize = \defaultfontsize
+
+%D {\em The following approach is obsolete.}
+%D
+%D All things related to fonts are grouped into files with
+%D names like \type{font-cmr}. These files are loaded by:
+
+\def\resetfontdefinitionfile[#1]%
+ {\letbeundefined{\c!file\f!fontprefix#1}}
+
+\newif\ifloadfontfileonce
+
+\def\doreadfontdefinitionfile#1#2% #1 = set/switch state
+ {\doifundefined{\c!file\f!fontprefix#2}%
+ {\ifloadfontfileonce
+ \letvalue{\c!file\f!fontprefix#2}\empty
+ \fi
+ \startreadingfile
+ \readsysfile{\truefilename{\f!fontprefix#2}}
+ {\showmessage\m!fonts2{#2}}
+ {\makeshortfilename[\truefilename{\f!fontprefix#2}]%
+ \readsysfile\shortfilename
+ {\showmessage\m!fonts2{#2}}
+ {\showmessage\m!fonts3{#2}}}%
+ \stopreadingfile}}
+
+% \def\doreadfontdefinitionfile#1#2% #1 = set/switch state
+% {\doifundefined{\c!file\f!fontprefix#2}%
+% {\ifloadfontfileonce
+% \letvalue{\c!file\f!fontprefix#2}\empty
+% \fi
+% \startreadingfile
+% \readsysfile{\truefilename{\f!fontprefix#2}}
+% {\showmessage\m!fonts2}
+% {\makeshortfilename[\truefilename{\f!fontprefix#2}]%
+% \readsysfile\shortfilename
+% {\showmessage\m!fonts2}
+% {\showmessage\m!fonts3}}%
+% {#2}% argument to \showmessage
+% \stopreadingfile}}
+
+%D When \type {\loadfontfileoncetrue}, such files are
+%D only loaded once! This permits redundant loading, but at
+%D the same time forced grouping when we want continuously mix
+%D all kind of font, which of course is a kind of
+%D typographically sin. The \type{"} is made inactive if
+%D needed to prevent problems with loading files that use this
+%D character in numbers.
+
+\def\doswitchpoints[#1]%
+ {\expanded{\dodoswitchpoints{#1}}}
+
+\def\dodoswitchpoints#1%
+ {\doifundefined{\@size@#1}
+ {\defineunknownfont{#1}}%
+ %\defineunknownfontstyles{#1}%
+ \doifdefinedelse{\@size@#1}
+ {\getvalue{\@size@#1}%
+ \localbodyfontsize#1\relax
+ \normalizebodyfontsize\localbodyfontsize\to\normalizedbodyfontsize
+ \checkbodyfontenvironment[\normalizedbodyfontsize]}
+ {\showmessage\m!fonts4{#1}}}
+
+\unprotected \def\doswitchstyle[#1]%
+ {\doifdefinedelse{\@style@#1}
+ {\getvalue{\@style@#1}%
+ \edef\fontstyle{#1}%
+ \ifmmode\mr\fi % in order to be compatible with \rm in math mode
+ }% \the\everybodyfont} % cleaner, in setting size as well as style
+ {\showmessage\m!fonts5{#1}}}
+
+%D \TEX\ loads font metric files like \type{cmr10.tfm} and
+%D \type{tir.tfm} only once. In \PLAIN\ \TEX\ some font files
+%D are {\em preloaded}. This means that the font files are
+%D loaded, but not accessible yet by name. This is accomplished
+%D by saying:
+%D
+%D \starttyping
+%D \font\preloaded=cmr10 at 11pt
+%D \stoptyping
+%D
+%D and using the name \type{\preloaded} again and again, so
+%D fonts are indeed loaded, but unnamed, and therefore
+%D unaccessible. In \CONTEXT\ we don't preload fonts, not even
+%D the \PLAIN\ \TEX\ ones, although users can access them. Now
+%D why is this done?
+
+%D Defining fonts using \type{\definebodyfont} takes time, so we
+%D prefer to predefine at least the Computer Modern Roman
+%D fonts. However, loading all those fonts at definition time
+%D would take both time and space. But even worse, once fonts
+%D are loaded into memory, their encoding vector is fixed,
+%D which is a handicap when we want to distribute the compact
+%D \type{fmt} files. So what we want to do is defining fonts in
+%D a way that postpones the loading. We accomplish this by only
+%D loading the fonts when we switch to another bodyfont size.
+%D Among the other alternatives, such as loading the font at
+%D the moment of activation and redefining the activation
+%D macro afterwards, this proved to be the most efficient
+%D alternative.
+%D
+%D The next few macros take care of the one exeption on this
+%D scheme. When at format generation time we load the default
+%D font file, the one that defines the Computer Modern Fonts,
+%D we don't want the fonts metrics to end up in the format
+%D file, so we temporary prohibit loading. This means that at
+%D runtime we have to load the default bodyfont size just before
+%D we start typesetting.
+%D
+%D Therefore we have to signal the font switching macros that
+%D we are preloading fonts. As long as the next boolean is,
+%D true, no loading is done.
+
+\newif\ifloadingfonts \loadingfontstrue
+
+%D \macros
+%D {preloadfonts}
+%D
+%D Preloading is only called for once, during the startup
+%D sequence of a session. After the loading job is done, the
+%D macro relaxes itself and reset the signal.
+
+\def\preloadfonts % never called, needs a clean up
+ {\showmessage\m!fonts6{\normalizedbodyfontsize\normalspace\fontstyle}%
+ \global\loadingfontsfalse
+ \doswitchpoints[\normalizedbodyfontsize]%
+ \doswitchstyle[\fontstyle]%
+ \the\everybodyfont
+ \saveinterlinespace
+ \global\let\preloadfonts\relax}
+
+% \prependtoks \preloadfonts \to \everydump % saves .1 s on a DELL P60 - 2GHZ
+
+%D Here comes the main font switching macros. These macros
+%D handle changes in size as well as returning to the global
+%D bodyfont size.
+
+\def\dosetfont#1#2% #1 = set/switch state
+ {\doifelse{#2}\v!global
+ {\restoreglobalbodyfont}
+ {\processcommacommand[#2]{\dodosetfont{#1}}% ##1 get also passed
+ \ifloadingfonts\else
+ \doswitchpoints[\normalizedbodyfontsize]%
+ \doswitchstyle[\fontstyle]%
+ \fi}%
+ \chardef\currentxfontsize\zerocount}
+
+\def\dodosetfont#1#2% #1 = set/switch state
+ {\dododosetfont{#1}{#2}{\showmessage\m!fonts4{#2}}}
+
+\def\dododosetfont#1#2#3% #1 = set/switch state
+ {\doifnumberelse{#2}
+ {\dodododosetfont{#1}{#2}{#3}}
+ {\doifdefinedelse{\??ft\normalizedbodyfontsize\interfaced{#2}}
+ {\edef\fontstep{\bodyfontcsname\normalizedbodyfontsize\interfaced{#2}\endcsname}%
+ \expanded{\dodododosetfont{#1}{\fontstep}}{#3}}
+ {\doifelse{#2}\v!reset
+ {\let\fontsize\empty}
+ {\doifdefinedelse{\@style@#2}
+ {\edef\fontstyle{#2}}
+ {\doreadfontdefinitionfile{#1}{#2}}}}}}
+
+\def\dodododosetfont#1#2#3% #1 = set/switch state
+ {\scratchdimen#2\relax
+ \normalizebodyfontsize\scratchdimen\to\normalizedsetfont
+ \doifundefined{\@size@\normalizedsetfont}
+ {\defineunknownfont{#2}}%
+ \doifdefinedelse{\@size@\normalizedsetfont}
+ {\localbodyfontsize\normalizedsetfont
+ \let\normalizedbodyfontsize\normalizedsetfont}
+ {#3\dosetsubstitutefont{#1}{#2}}}
+
+%D In the previous macros we use \type{\currentxfontsize} to
+%D hold the current x||size of the font. This enables us to
+%D support for instance \type{\sl} inside a \type{\tx} switch.
+
+\chardef\currentxfontsize=0
+
+%D When users specify for instance a 13 point bodyfont while no
+%D such bodyfont is defined, the system automatically tries to
+%D find a best fit, that is the nearest smaller defined
+%D bodyfontzize. A smaller one is definitely better than a larger
+%D one, simply because otherwise a lot of overfull box messages
+%D are more probable to occur. By taking a value slightly
+%D smaller than half a point, we can use the next method.
+
+\def\dosetsubstitutefont#1#2% #1 = set/switch state
+ {\scratchdimen#2\relax
+ \advance\scratchdimen .499\points
+ \dimensiontocount\scratchdimen\scratchcounter
+ \advance\scratchcounter \minusone
+ \ifnum\scratchcounter>\plusthree
+ \dododosetfont{#1}{\the\scratchcounter\s!pt}{}%
+ \fi}
+
+% The following bunch of macros deals with the (run time)
+% expansion of names onto the definitions made by \type
+% {\definebodyfont}.
+
+% \let\fontbody \empty % ... 10pt 11pt 12pt ...
+% \let\fontstyle \empty % rm ss tt mm hw cg ...
+% \let\fontalternative\empty % tf bf sl it bs bi sc ...
+% \let\fontsize \empty % xy-abcd ...
+
+\def\defaultfontbody{\normalizedbodyfontsize}
+
+\let\fontbody\defaultfontbody
+
+\let\fontclass\empty \let\globalfontclass\fontclass
+
+\def\setcurrentfontclass#1%
+ {\edef\fontclass{#1}}
+
+\let\defaultfontstyle \c!rm
+\let\defaultfontalternative \c!tf
+\let\defaultfontsize \empty
+
+%D \macros
+%D {bigmath,nobigmath}
+%D
+%D We can inhibit this slow||downer with:
+
+% these can best be combined
+
+% 0=never 1=everymath 2=always
+
+\chardef\synchronizebigmathflag=1
+
+\appendtoks
+ \ifcase\synchronizebigmathflag
+ % never
+ \or
+ \synchronizebigmath
+ \or
+ % always
+ \fi
+\to \everymathematics
+
+\def\nobigmath{\chardef\synchronizebigmathflag 0 }
+\def\bigmath {\chardef\synchronizebigmathflag 2 \synchronizebigmath}
+
+\let\bigmathfontsize\empty
+
+\def\synchronizebigmath
+ {\ifx\bigmathfontsize\fontsize
+ % already in sync
+ \else
+ \let\bigmathfontsize\fontsize
+ \synchronizemath \synchronizetext
+ \fi}
+
+\def\checkbigmathsynchronization
+ {\ifcase\synchronizebigmathflag
+ % never
+ \or
+ \ifmmode \synchronizebigmath \fi
+ \or
+ \synchronizebigmath
+ \fi}
+
+%D So far for synchronisation.
+
+\def\dosetcurrentfontsize#1%
+ {\edef\fontsize{#1}%
+ \checkbigmathsynchronization}
+
+\def\dosetcurrentfontalternative#1%
+ {\edef\fontalternative{#1}%
+ \ifmmode % maybe no test, or actually, an option
+ \fam\csname\fontalternative\s!fam\endcsname
+ \fi}
+
+\def\setcurrentfont#1#2#3#4%
+ {%\message{[1 #1 #2 #3 #4]}%
+ \edef\fontbody{#1}%
+ \edef\fontstyle{#2}%
+ \dosetcurrentfontalternative{#3}%
+ \dosetcurrentfontsize{#4}%
+ \synchronizefont}
+
+\def\setcurrentfontbody#1%
+ {%\message{[2 #1]}%
+ \edef\fontbody{#1}%
+ \synchronizefont}
+
+\def\setcurrentfontstyle#1%
+ {%\message{[3 #1]}%
+ \edef\fontstyle{#1}%
+ \ifmmode\mr\fi % otherwise \rm not downward compatible
+ \synchronizefont}
+
+\def\setcurrentfontbodyalternative#1#2%
+ {%\message{[4 #1 #2]}%
+ \edef\fontbody{#1}%
+ \dosetcurrentfontalternative{#2}%
+ \synchronizefont}
+
+\def\setcurrentfontalternative#1%
+ {%\message{[5 #1]}%
+ \dosetcurrentfontalternative{#1}%
+ \synchronizefont}
+
+\def\setcurrentfontsize#1%
+ {%\message{[6 #1]}%
+ \dosetcurrentfontsize{#1}%
+ \synchronizefont}
+
+\def\setcurrentfontstylealternative#1#2% \rmsl
+ {%\message{[7 #1 #2]}%
+ \edef\fontstyle{#1}%
+ \dosetcurrentfontalternative{#2}%
+ \synchronizefont}
+
+\def\setcurrentfontstylesize#1#2% \rmsla
+ {%\message{[8 #1 #2]}%
+ \edef\fontstyle{#1}%
+ \dosetcurrentfontsize{#2}%
+ \synchronizefont}
+
+\def\setcurrentfontalternativesize#1#2% \sla
+ {%\message{[9 #1 #2]}%
+ \dosetcurrentfontalternative{#1}%
+ \dosetcurrentfontsize{#2}%
+ \synchronizefont}
+
+\def\setcurrentfontstylealternativesize#1#2#3% \rmsla
+ {%\message{[10 #1 #2 #3]}%
+ \edef\fontstyle{#1}%
+ \dosetcurrentfontalternative{#2}%
+ \dosetcurrentfontsize{#3}%
+ \synchronizefont}
+
+%D In principle one can assign alternative fallback routines.
+%D Some day we will.
+
+\newtoks\fontstrategies
+\newif\iftryingfont
+
+% \def\synchronizefont
+% {\tryingfonttrue
+% \ifx\fontclass\empty\else
+% \let\fontstrategy\dofontclassstrategy
+% \the\fontstrategies \relax % \relax still needed ?
+% \fi
+% \iftryingfont
+% \let\fontstrategy\dofontstrategy
+% \the\fontstrategies \relax % \relax still needed ?
+% \fi
+% \ifskipfontcharacteristics
+% \setfontcharacteristics
+% \the\everyfontswitch
+% \fi}
+
+\let\fontstrategy\relax
+
+\def\synchronizefont
+ {\tryingfonttrue
+ \ifx\fontclass\empty\else
+ \global\let\fontstrategy\dofontclassstrategy
+ \the\fontstrategies \relax % \relax still needed ?
+ \fi
+ \iftryingfont
+ \global\let\fontstrategy\dofontstrategy
+ \the\fontstrategies \relax % \relax still needed ?
+ \fi
+ \ifskipfontcharacteristics
+ \setfontcharacteristics
+ \the\everyfontswitch
+ \fi}
+
+\beginTEX
+
+\def\dofontstrategy#1#2#3#4#5%
+ {\@EA\ifx\csname#2#3#4#5\endcsname\relax\else
+ #1\csname#2#3#4#5\endcsname \tryingfontfalse
+ \fi}
+
+\def\dofontclassstrategy#1#2#3#4#5%
+ {\@EA\ifx\csname\fontclass#2#3#4#5\endcsname\relax\else
+ #1\csname\fontclass#2#3#4#5\endcsname \tryingfontfalse
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dofontstrategy#1#2#3#4#5%
+ {\ifcsname#2#3#4#5\endcsname
+ #1\csname#2#3#4#5\endcsname \tryingfontfalse
+ \fi}
+
+\def\dofontclassstrategy#1#2#3#4#5%
+ {\ifcsname\fontclass#2#3#4#5\endcsname
+ #1\csname\fontclass#2#3#4#5\endcsname \tryingfontfalse
+ \fi}
+
+\endETEX
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- --- --- --- % pt tt bf a
+ \fontbody \fontstyle \fontalternative \fontsize
+\fi \to \fontstrategies
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- --- def % pt tt bf
+ \fontbody \fontstyle \fontalternative \defaultfontsize
+\fi \to \fontstrategies
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def --- % pt tt tf a
+ \fontbody \fontstyle \defaultfontalternative \fontsize
+\fi \to \fontstrategies
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def def % pt tt tf
+ \fontbody \fontstyle \defaultfontalternative \defaultfontsize
+\fi \to \fontstrategies
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- def def def % pt rm tf
+ \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize
+\fi \to \fontstrategies
+
+\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % def def def def % rm tf
+ \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize
+\fi \to \fontstrategies
+
+%D Let's synchronize:
+
+\newif\ifsynchronizefonts \synchronizefontstrue
+
+\prependtoks
+ \ifsynchronizefonts
+ \synchronizemath \synchronizetext \synchronizefont
+ \fi
+\to \everybodyfont
+
+%D Setting the normal sized as well as the x and xx smaller
+%D sizes is accomplished by the next set of macros. When in
+%D math mode, the commands \type{\tx} and \type{\txx} are
+%D just a switch to the script and double script styles, but
+%D in text mode the values defined by the bodyfontenvironment are
+%D used. Here we also set \type{\currentxfontsize}.
+
+\beginTEX
+
+\def\dosetcurrentfontxxxalternative#1#2#3#4%
+ {\chardef\currentxfontsize#2\relax
+ \ifmmode
+ #4%
+ \else\expandafter\ifx\csname\bodyfontvariable{\normalizedbodyfontsize#3}\endcsname\relax\else
+ \setcurrentfontbodyalternative{\bodyfontcsname\normalizedbodyfontsize#3\endcsname}{#1}%
+ \fi\fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dosetcurrentfontxxxalternative#1#2#3#4%
+ {\chardef\currentxfontsize#2\relax
+ \ifmmode
+ #4%
+ \else\ifcsname\bodyfontvariable{\normalizedbodyfontsize#3}\endcsname
+ \setcurrentfontbodyalternative{\bodyfontcsname\normalizedbodyfontsize#3\endcsname}{#1}%
+ \fi\fi}
+
+\endETEX
+
+\def\setcurrentfontxalternative#1%
+ {\dosetcurrentfontxxxalternative{#1}1\c!x\scriptstyle
+ \let\tx\txx}
+
+\def\setcurrentfontxxalternative#1%
+ {\dosetcurrentfontxxxalternative{#1}2\c!xx\scriptscriptstyle
+ \let\tx\empty
+ \let\txx\empty}
+
+\def\checknestedxfontsize % option
+ {\ifcase\currentxfontsize\else\ifx\fontsize\empty\else
+ \chardef\currentxfontsize\zeropoint
+ \let\fontsize\empty
+ \let\tx\normaltx
+ \let\txx\normaltxx
+ \fi\fi}
+
+\def\setcurrentfontxalternative#1%
+ {\checknestedxfontsize
+ \dosetcurrentfontxxxalternative{#1}1\c!x\scriptstyle
+ \let\tx\txx}
+
+\def\setcurrentfontxxalternative#1%
+ {\checknestedxfontsize
+ \dosetcurrentfontxxxalternative{#1}2\c!xx\scriptscriptstyle
+ \let\tx\empty
+ \let\txx\empty}
+
+% This alterative is not really needed, but for old time's sake
+% we keep it there. We can speed it up when needed.
+
+% \def\setcurrentfontxstylealternative #1{\csname#1\endcsname\tfx}
+% \def\setcurrentfontxxstylealternative#1{\csname#1\endcsname\tfxx}
+
+\def\setcurrentfontxstylealternative #1{\csname#1\endcsname\tx}
+\def\setcurrentfontxxstylealternative#1{\csname#1\endcsname\txx}
+
+%D These macros also show us that when we call for \type{\tx},
+%D this macro is redefined to be \type{\txx}. Therefore calls
+%D like:
+%D
+%D \startbuffer
+%D {small \tx is \tx beautiful}
+%D {small \tx is \txx beautiful}
+%D {small \txx is \tx beautiful}
+%D {small \txx is \txx beautiful}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D result in:
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D Setting the main size involves the style list and therefore
+%D takes a bit more time. Keep in mind that the fontsize is
+%D represented by a character or empty.
+
+\unexpanded\def\tx {\setcurrentfontxalternative \fontalternative}
+\unexpanded\def\txx{\setcurrentfontxxalternative\fontalternative}
+
+\let\normaltx \tx
+\let\normaltxx\txx
+
+%D \macros
+%D {definefontstyle}
+%D
+%D When setting of switching the overall style we can use the
+%D short identifier like rm and ss, but when defined we can
+%D also use more verbose names like roman or sansserif. Such
+%D names are defined by:
+%D
+%D \starttyping
+%D \definefontstyle [serif,rm] [rm]
+%D \definefontstyle [sansserif,ss] [ss]
+%D \stoptyping
+
+\def\dodefinefontstyle[#1][#2]%
+ {\rawdoifinsetelse{#2}{\stylelist}
+ {}%\debuggerinfo\m!fonts{unknown style #2}}
+ {\addtocommalist{#2}\stylelist
+ \showmessage\m!fonts8{#2 (#1)}}%
+ % check kan hier
+ \def\docommando##1%
+ {\setvalue{\@shortstyle@##1}{#2}%
+ \setvalue{\@style@##1}{\csname#2\endcsname}}%
+ \processcommalist[#1]\docommando}
+
+\def\definefontstyle
+ {\dodoubleargument\dodefinefontstyle}
+
+\def\setfontstyle#1#2% #1:name (roman, romaan) #2:style (rm)
+ {\edef\fontstyle{#1}%
+ \setcurrentfontstyle\normalizedbodyfontsize}
+
+\chardef\defaultskewcharmi=127 % '177
+\chardef\defaultskewcharsy= 48 % '60
+
+% \def\dosetskewchar#1%
+% {\skewchar\font\ifx\@@fontskewchar\empty#1\else\@@fontskewchar\fi}
+
+\def\dosetskewchar#1#2%
+ {\ifx\@@fontskewchar\empty
+ \skewchar\textfont #1#2%
+ \skewchar\scriptfont #1#2%
+ \skewchar\scriptscriptfont#1#2%
+ \else
+ \skewchar\textfont #1\@@fontskewchar
+ \skewchar\scriptfont #1\@@fontskewchar
+ \skewchar\scriptscriptfont#1\@@fontskewchar
+ \fi}
+
+%D The previous macros show that it's is not always
+%D neccessary to define the whole bunch of fonts, take for
+%D instance the sequence:
+%D
+%D \starttyping
+%D \setupbodyfont
+%D [ams]
+%D
+%D \definebodyfont [24pt] [mm]
+%D [ma=msam10 at 24pt,
+%D mb=msbm10 at 24pt]
+%D
+%D \switchtobodyfont
+%D [24pt]
+%D
+%D This is a 24pt $\blacktriangleleft$
+%D \stoptyping
+%D
+%D Here we didn't define the 24 point bodyfont environment, so
+%D it's defined automatically. Of course one can always use the
+%D \TEX\ primitive \type{\font} to switch to whatever font
+%D needed.
+
+%D When asking for a complete font switch, for instance from 10
+%D to 12~points, the next macro does the job. First we
+%D normalize the size, next we define the current range of
+%D text, script and scriptscript sizes, then we set the text
+%D fonts and the math families and finally we activate the
+%D default typeface and also set the font specific parameters
+%D assigned to \type{\everybodyfont}
+
+\def\dosetbodyfontface#1#2%
+ {\edef#1{\bodyfontcsname\normalizedbodyfontsize#2\endcsname}}
+
+\def\docompletefontswitch[#1]%
+ {\bodyfontsize#1\relax
+ \dimensiontocount\bodyfontsize\bodyfontpoints
+ \edef\bodyfontfactor{\withoutpt\the\bodyfontsize}%
+ \normalizebodyfontsize\bodyfontsize\to\normalizedbodyfontsize
+ \dosetbodyfontface \textface \s!text
+ \dosetbodyfontface \scriptface \s!script
+ \dosetbodyfontface \scriptscriptface \s!scriptscript}
+
+\docompletefontswitch[12pt] % init
+
+%D \macros
+%D {setupbodyfont,switchtobodyfont}
+%D
+%D The next two macros are user ones. With \type{\setupbodyfont}
+%D one can set the document bodyfont size, font family, style
+%D and/or options defined in files, for example:
+%D
+%D \starttyping
+%D \setupbodyfont[cmr,ams,12pt,roman]
+%D \stoptyping
+%D
+%D This command affects the document as a whole: text, headers
+%D and footers. The second macro however affects only the text:
+%D
+%D \starttyping
+%D \switchtobodyfont[10pt]
+%D \stoptyping
+%D
+%D So we've got:
+%D
+%D \showsetup{setupbodyfont}
+%D \showsetup{switchtobodyfont}
+%D
+%D Both macros look alike. The second one also has to take
+%D all kind of keywords into account.
+
+\ifx\saveinterlinespace \undefined \let\saveinterlinespace \relax \fi
+\ifx\restoreinterlinespace\undefined \let\restoreinterlinespace\relax \fi
+
+\chardef\bodyfontsetstate=0
+
+\definecomplexorsimple\setupbodyfont
+
+\def\simplesetupbodyfont
+ {\restoreglobalbodyfont
+ \saveinterlinespace}
+
+\def\complexsetupbodyfont[#1]%
+ {\doifsomething{#1}
+ {\dosetfont1{#1}%
+ \globalbodyfontsize\localbodyfontsize
+ \normalizebodyfontsize\globalbodyfontsize\to\normalizedglobalbodyfontsize
+ \let\globalfontstyle\fontstyle
+ \ifloadingfonts\else
+ \the\everybodyfont % indeed needed in case \dosetfont is not executed
+ \saveinterlinespace
+ \fi}}
+
+\unexpanded\def\switchtobodyfont[#1]%
+ {\doifsomething{#1}
+ {\doifdefinedelse{\??ft\normalizedbodyfontsize\interfaced{#1}}
+ {\setbodyfontstep{#1}} % so we have a fast [small] switch
+ {\dosetfont0{#1}}%
+ \the\everybodyfont}} % indeed needed in case nothing is executed
+
+%D The following alternative is meant for math||to||text
+%D switching and will be optimized.
+
+\beginTEX
+
+\def\fastswitchtobodyfont#1%
+ {\@EA\ifx\csname\??ft\normalizedbodyfontsize#1\endcsname\else
+ \edef\futurebodyfontsize
+ {\csname\??ft\normalizedbodyfontsize#1\endcsname}%
+ \@EA\ifx\csname\@size@\futurebodyfontsize\endcsname\else
+ \csname\@size@\futurebodyfontsize\endcsname
+ \localbodyfontsize\futurebodyfontsize\relax
+ \fi
+ \fi
+ \csname\@style@\fontstyle\endcsname
+ \the\everybodyfont}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\fastswitchtobodyfont#1%
+ {\ifcsname\??ft\normalizedbodyfontsize#1\endcsname
+ \edef\futurebodyfontsize
+ {\csname\??ft\normalizedbodyfontsize#1\endcsname}%
+ \ifcsname\@size@\futurebodyfontsize\endcsname
+ \csname\@size@\futurebodyfontsize\endcsname
+ \localbodyfontsize\futurebodyfontsize\relax
+ \fi
+ \fi
+ \csname\@style@\fontstyle\endcsname
+ \the\everybodyfont}
+
+\endETEX
+
+%D Because the last macro can appear in arguments or be assigned
+%D to parameters, we protect this one for unwanted expansion.
+
+\def\dodosetmathfont#1%
+ {\setcurrentfontalternative{#1}%
+ % \doifdefinedelse{#1\s!fam} % adapted
+ % {\edef\mffam{\getvalue{#1\s!fam}}}
+ % {\edef\mffam{\getvalue{\c!nn\s!fam}}}%
+ \textfont \mrfam\textfont \mffam
+ \scriptfont \mrfam\scriptfont \mffam
+ \scriptscriptfont\mrfam\scriptscriptfont\mffam}
+
+\beginTEX
+
+ \def\domffam#1%
+ {\csname\ifundefined{#1\s!fam}\c!nn\else#1\fi\s!fam\endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+ \def\domffam#1%
+ {\csname\ifcsname#1\s!fam\endcsname#1\else\c!nn\fi\s!fam\endcsname}
+
+\endETEX
+
+\def\mffam
+ {\domffam\fontalternative}
+
+\def\dosetmathfont
+ {\def\rm{\fam\mrfam}\dodosetmathfont}
+
+%D The font specific features are bound to the filename.
+
+\def\updatefontparameters
+ {\edef\@@fontencoding{\truefontdata\fontfile \s!encoding}%
+ \edef\@@fontmapping {\truefontdata\fontfile \s!mapping }%
+ \edef\@@fonthandling{\truefontdata\somefontname\s!handling}%
+ \edef\@@fontskewchar{\truefontdata\fontfile \s!skewchar}}
+
+\def\setfontcharacteristics
+ {\updatefontparameters
+ \fastenableencoding
+ {\ifx\@@fontencoding\empty
+ \s!default \else \@@fontencoding
+ \fi}%
+ \fastenablemapping
+ {\ifx\@@fontmapping\empty
+ \ifx\@@fontencoding\empty
+ \s!default \else \@@fontencoding
+ \fi
+ \else
+ \@@fontmapping
+ \fi}%
+ \fastenablehandling
+ {\ifx\@@fonthandling\empty
+ \s!default \else \@@fonthandling
+ \fi}%
+ {\lastfontidentifier}%
+ \the\everyfont
+ \synchronizepatterns}
+
+%D The next auxilliary macro is an alternative to \type
+%D {\fontname}.
+
+% \def\purefontname#1{\expandafter\splitoffpurefontname\fontname#1 \\}
+%
+% extra level is needed:
+
+\def\purefontname#1{\@EA\splitoffpurefontname\@EA{\@EA{\@EA\unstringed\fontname#1}} \\}
+
+\def\splitoffpurefontname#1 #2\\{#1}
+
+%D \macros
+%D {switchstyleonly}
+%D
+%D For switching a style but keeping the alternative, there
+%D is:
+%D
+%D \starttyping
+%D {\bf text \switchstyleonly\ss text}
+%D {\bf text \switchstyleonly[ss]text}
+%D {\sl text \switchstyleonly[sansserif]text}
+%D \stoptyping
+
+\definecomplexorsimple\switchstyleonly
+
+\def\simpleswitchstyleonly#1% stupid version
+ {\complexswitchstyleonly[\strippedcsname#1]}
+
+\def\complexswitchstyleonly[#1]% todo : check
+ {\setcurrentfontstyle{\getvalue{\@shortstyle@#1}}%
+ \the\everybodyfont} % needed ?
+
+%D \macros
+%D {os,frak, goth, cal}
+%D
+%D Old style numerals can be typeset with \type{\os} and look
+%D like {\os 1234567890} instead of the more common looking
+%D 1234567890.
+%D
+%D On behalf of {\frac Tobias Burnus}, we define some more of
+%D these. Later we will link these names to real file names.
+
+% older
+%
+% \definefont [os] [OldStyle sa *]
+% \definefont [frak] [Fraktur sa *]
+% \definefont [goth] [Gothic sa *]
+% \definefont [cal] [Calligraphic sa *]
+% \definefont [bbd] [Blackboard sa *]
+%
+% newer
+
+\def\os {\mathortext{\fam\purefamily {oldstyle}}{\symbolicfont {OldStyle}}}
+\def\frak{\mathortext{\fam\purefamily {fraktur}}{\symbolicfont {Fraktur}}}
+\def\goth{\mathortext{\fam\purefamily {gothic}}{\symbolicfont {Gothic}}}
+\def\cal {\mathortext{\fam\purefamily{calligraphic}}{\symbolicfont{Calligraphic}}}
+\def\bbd {\mathortext{\fam\purefamily {blackboard}}{\symbolicfont {Blackboard}}}
+
+\definefontsynonym [OldStyle] [Serif]
+\definefontsynonym [Fraktur] [Serif]
+\definefontsynonym [Gothic] [Serif]
+\definefontsynonym [Calligraphic] [Serif]
+\definefontsynonym [Blackboard] [Serif]
+
+%D \macros
+%D {fraktur, gothic, calligraphic, blackboard}
+%D
+%D These macros assume that we use text fonts, and not math
+%D families.
+
+\ifx\mathtext\undefined \let\mathtext\hbox \fi
+
+\def\fraktur #1{\mathortext\domathtext\donothing{\frak#1}}
+\def\gothic #1{\mathortext\domathtext\donothing{\goth#1}}
+\def\calligraphic#1{\mathortext\domathtext\donothing{\cal #1}}
+\def\blackboard #1{\mathortext\domathtext\donothing{\bbd#1}}
+
+%D Torture test:
+%D
+%D \starttyping
+%D \usetypescript[modern] [texnansi]
+%D \usetypescript[lucida] [texnansi]
+%D \usetypescript[palatino][texnansi]
+%D \usetypescript[times] [texnansi]
+%D \usetypescript[fourier] [ec]
+%D
+%D \startbuffer
+%D \section{\blackboard{T\high{\blackboard{T}}} \blackboard{E}\high{\blackboard{E}} \blackboard{X}\high{\blackboard{X}}}
+%D
+%D {\fontclass: 123 \os123 \cal TEX $\os 123$}
+%D
+%D $\blackboard{T}^{\blackboard{T}} \blackboard{E}^{\blackboard{E}} \blackboard{X}^{\blackboard{X}}$
+%D \blackboard{T}\high{\blackboard{T}} \blackboard{E}\high{\blackboard{E}} \blackboard{X}\high{\blackboard{X}}
+%D \stopbuffer
+%D
+%D {\setupbodyfont[lucida] \getbuffer}
+%D {\setupbodyfont[modern] \getbuffer}
+%D {\setupbodyfont[palatino] \getbuffer}
+%D {\setupbodyfont[times] \getbuffer}
+%D {\setupbodyfont[fourier] \getbuffer}
+%D \stoptyping
+
+%D \macros
+%D {definebodyfontswitch}
+%D
+%D \PLAIN\ \TEX\ defines some macro's like \type{\tenpoint}
+%D to switch to a specific bodyfontsize. Just for the sake of
+%D compatibility we can define them like:
+%D
+%D \starttyping
+%D \definebodyfontswitch [twelvepoint] [12pt]
+%D \stoptyping
+%D
+%D We don't support language specific synonyms here, mainly
+%D because \PLAIN\ \TEX\ is english anyway.
+
+\def\dodefinebodyfontswitch[#1][#2]%
+ {\def\docommando##1%
+ {\setvalue{##1}{\switchtobodyfont[#2]}}%
+ \processcommalist[#1]\docommando}
+
+\def\definebodyfontswitch
+ {\dodoubleargument\dodefinebodyfontswitch}
+
+%D \macros
+%D {setsmallbodyfont,setmainbodyfont,setbigbodyfont}
+%D
+%D When we're typesetting at for instance 10pt, we can call for
+%D the \type{small} as well as the \type{big} alternative,
+%D related to this main size, using \type{\switchtobodyfont[small]}.
+%D The three alternatives can be activated by the next three
+%D system calls and are defined by the bodyfontenvironment.
+
+\let\fontstep\empty % we can use \fontstep for tracing purposes
+
+\def\setbodyfontstep#1%
+ {\edef\fontstep{\bodyfontcsname\normalizedbodyfontsize\interfaced{#1}\endcsname}%
+ \doswitchpoints[\fontstep]%
+ \doswitchstyle[\fontstyle]}
+
+\unexpanded\def\setsmallbodyfont{\setbodyfontstep\v!small\the\everybodyfont}
+\unexpanded\def\setbigbodyfont {\setbodyfontstep\v!big \the\everybodyfont}
+
+\unexpanded\def\setmainbodyfont
+ {\doswitchpoints[\normalizedbodyfontsize]%
+ \doswitchstyle[\fontstyle]%
+ \the\everybodyfont
+ \saveinterlinespace}
+
+%D \macros
+%D {restoreglobalbodyfont}
+%D
+%D Users can set whatever font available while typesetting text.
+%D Pagenumbers, footers, headers etc. however must be typeset
+%D in the main bodyfont and style of the document. Returning to
+%D the global state can be done with the next macro:
+
+\let\mainfontclass\empty
+
+\def\fullrestoreglobalbodyfont
+ {\let\fontsize\defaultfontsize
+ \let\fontbody\defaultfontbody
+ \chardef\currentxfontsize\zerocount
+ \let\fontclass\globalfontclass
+ \doswitchpoints[\normalizedglobalbodyfontsize]%
+ \doswitchstyle[\globalfontstyle]%
+ \redoconvertfont % just in case a pagebreak occurs
+ \tf \the\everybodyfont
+ \saveinterlinespace}
+
+\def\partialrestoreglobalbodyfont
+ {\let\fontsize\defaultfontsize
+ \let\fontbody\defaultfontbody
+ \chardef\currentxfontsize\zerocount
+ \redoconvertfont
+ \tf
+ \saveinterlinespace}
+
+\def\restoreglobalbodyfont % ook style etc
+ {\ifx\fontclass\globalfontclass
+ \ifx\fontstyle\globalfontstyle
+ \ifx\normalizedbodyfontsize\normalizedglobalbodyfontsize
+ \partialrestoreglobalbodyfont
+ \else
+ \fullrestoreglobalbodyfont
+ \fi
+ \else
+ \fullrestoreglobalbodyfont
+ \fi
+ \else
+ \fullrestoreglobalbodyfont
+ \fi}
+
+% in case of troubles: \let\restorebodyfont\fullrestoreglobalbodyfont
+
+%D This macro has to be called when entering the pagebody
+%D handling routine as well as the footnote insert routine.
+%D Users can access this feature |<|for instance when one wants
+%D to typeset tables and alike in the main bodyfont and style
+%D while the running text is temporary set to a smaller one|>|
+%D by saying \type{\switchtobodyfont[global]}.
+
+%D \macros
+%D {rasterfont}
+%D
+%D There are (at the moment) two situations in which we want to
+%D have fast access to a particular font. When we are using
+%D \TEX\ to typeset rasters, we use small {\rasterfont.}'s
+%D (a rather small period indeed), the same as \PICTEX\ uses
+%D for drawing purposes.
+
+\definefont [rasterfont] [Serif at 5pt]
+
+%D \macros
+%D {infofont}
+%D
+%D The second situation occurs when we enable the info mode,
+%D and put all kind of status information in the margin. We
+%D don't want huge switches to the main bodyfont and style, so
+%D here too we use a direct method.
+
+% old mechanism
+%
+% \def\infofont%
+% {\getvalue{\!!sixpoint\c!tt\c!tf}\the\everybodyfont}
+
+\definefont [infofont] [Mono at 6pt] % todo \the\everybodyfont
+
+%D \macros
+%D {definealternativestyle}
+%D
+%D In the main modules we are going to implement lots of
+%D parameterized commands and one of these parameters will
+%D concern the font to use. To suit consistent use of fonts we
+%D here implement a mechanism for defining the keywords that
+%D present a particular style or alternative.
+%D
+%D \starttyping
+%D \definealternativestyle [keywords] [\style] [\nostyle]
+%D \stoptyping
+%D
+%D The first command is used in the normal textflow, while the
+%D second command takes care of headings and alike. Consider
+%D the next two definitions:
+%D
+%D \starttyping
+%D \definealternativestyle [bold] [\bf] []
+%D \definealternativestyle [cap] [\cap] [\cap]
+%D \stoptyping
+%D
+%D A change \type{\bf} in a heading which is to be set in
+%D \type{\tfd} does not look that well, so therefore we leave
+%D the second argument of \type{\definealternativestyle} empty.
+%D When we capatalize characters using the pseudo small cap
+%D command \type{\cap}, we want this to take effect in both
+%D text and headings, which is accomplished by assigning both
+%D arguments.
+
+\def\dodefinealternativestyle[#1][#2][#3]%
+ {\def\docommando##1%
+ {\doifundefined{##1}{\setvalue{##1}{\groupedcommand{#2}{}}}%
+ \setvalue{\@letter@ ##1}{#2}%
+ \setvalue{\@noletter@##1}{#3}}%
+ \processcommalist[#1]\docommando}
+
+\def\definealternativestyle
+ {\dotripleempty\dodefinealternativestyle}
+
+\def\definestyle{\definealternativestyle}
+
+%D This command also defines the keyword as command. This means
+%D that the example definition of \type{bold} we gave before,
+%D results in a command \type{\bold} which can be used as:
+%D
+%D \startbuffer
+%D He's a \bold{bold} man with a {\bold head}.
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D or
+%D
+%D \startvoorbeeld
+%D \definealternativestyle[bold][\bf][]\getbuffer
+%D \stopvoorbeeld
+%D
+%D Such definitions are of course unwanted for \type{\cap}
+%D because this would result in an endless recursive call.
+%D Therefore we check on the existance of both the command and
+%D the substitution. The latter is needed because for instance
+%D \type{\type} is an entirely diferent command. That command
+%D handles verbatim, while the style command would just switch
+%D to teletype font. This is just an example of a tricky
+%D naming coincidence.
+
+%D \macros
+%D {doconvertfont,noconvertfont,
+%D dontconvertfont,redoconvertfont}
+%D
+%D After having defined such keywords, we can call for them by
+%D using
+%D
+%D \starttyping
+%D \doconvertfont{keyword}{text}
+%D \stoptyping
+%D
+%D We deliberately pass an argument. This enables us to
+%D assign converters that handle one agrument, like
+%D \type{\cap}.
+%D
+%D By default the first specification is used to set the style,
+%D exept when we say \type{\dontconvertfont}, after which the
+%D second specification is used. We can also directly call for
+%D \type{\noconvertfont}. In nested calls, we can restore the
+%D conversion by saying \type{\redoconvertfont}.
+
+\def\@@dodoconvertfont#1{\csname\@letter@ #1\endcsname}
+\def\@@donoconvertfont#1{\csname\@noletter@#1\endcsname}
+
+\unexpanded\def\dodoconvertfont#1% #2% we need the protection
+ {\doifdefinedelse{\@letter@#1} % in testing
+ {\doifelsenothing{#1}\gobbleoneargument\@@dodoconvertfont}
+ {\doifdefinedelse{#1}\getvalue \firstofoneargument}%
+ {#1}} % {#2}}
+
+\let\doconvertfont=\dodoconvertfont
+
+\def\noconvertfont#1% #2%
+ {\doifdefinedelse{\@noletter@#1}
+ {\doifelsenothing{#1}\gobbleoneargument\@@donoconvertfont}\gobbleoneargument
+ {#1}} % {#2}}
+
+%D Extras:
+
+\unexpanded\def\dontconvertfont
+ {\let\doconvertfont\noconvertfont}
+
+\unexpanded\def\redoconvertfont
+ {\let\doconvertfont\dodoconvertfont}
+
+%D These commands are not grouped! Grouping is most probably
+%D done by the calling macro's and would lead to unnecessary
+%D overhead.
+
+%D \macros
+%D {em,emphasistypeface,emphasisboldface}
+%D
+%D The next macro started as a copy of Donald Arseneau's
+%D \type{\em} (\TUGNEWS\ Vol.~3, no.~1, 1994). His
+%D implementation was a bit more sophisticated version of the
+%D standard \LATEX\ one. We furter enhanced the macro, so now
+%D it also adapts itself to boldface mode. Because we favor
+%D {\sl slanted} type over {\it italic}, we made the emphasis
+%D adaptable, for instance:
+%D
+%D \starttyping
+%D \def\emphasistypeface {\it}
+%D \def\emphasisboldface {\bi}
+%D \stoptyping
+%D
+%D But we prefer:
+
+\def\emphasistypeface {\sl}
+\def\emphasisboldface {\bs}
+
+%D or even better:
+
+\def\doemphasistypeface#1#2%
+ {\doifelsevalue{\??ft\fontclass\normalizedbodyfontsize\c!em}\v!slanted#1%
+ {\doifelsevalue{\??ft\fontclass\normalizedbodyfontsize\c!em}\v!italic#2%
+ {\doifelsevalue{\??ft \normalizedbodyfontsize\c!em}\v!slanted#1%
+ {\doifvalue {\??ft \normalizedbodyfontsize\c!em}\v!italic#2}}}}
+
+\def\emphasistypeface{\doemphasistypeface\sl\it}
+\def\emphasisboldface{\doemphasistypeface\bs\bi}
+
+%D To be set with the default body font environment: \type
+%D {em} being \type {slanted} or \type {italic}.
+
+\newconditional\emneeded
+
+\unexpanded\def\em
+ {\relax
+ \ifdim\fontdimen1\font>\zeropoint
+ \settrue\emneeded
+ \else
+ \setfalse\emneeded
+ \fi
+ \setemphasisboldface % new
+ \ifx\fontalternative\c!it % \ifnum\fam=\itfam
+ \def\emphasistypeface{\it}\tf
+ \else\ifx\fontalternative\c!sl % \ifnum\fam=\slfam
+ \def\emphasistypeface{\sl}\tf
+ \else\ifx\fontalternative\c!bf % \ifnum\fam=\bffam
+ \emphasisboldface
+ \else\ifx\fontalternative\c!bs % \ifnum\fam=\bsfam
+ \def\emphasisboldface{\bs}\bf
+ \else\ifx\fontalternative\c!bi % \ifnum\fam=\bifam
+ \def\emphasisboldface{\bi}\bf
+ \else
+ \emphasistypeface
+ \fi\fi\fi\fi\fi
+ \ifconditional\emneeded\relax
+ \else
+ \expandafter\aftergroup
+ \fi
+ \emphasiscorrection}
+
+%D The next feature was not present in previous versions. It
+%D takes care of \type {\em \bf ...} sitiations.
+
+\def\setemphasisboldface
+ {\let\normalbf\bf
+ \let\setemphasisboldface\relax
+ \unexpanded\def\bf
+ {%\relax
+ \let\bf\relax % new
+ \ifx\fontalternative\c!it % \ifnum\fam=\itfam
+ \bi
+ \else\ifx\fontalternative\c!sl % \ifnum\fam=\slfam
+ \bs
+ \else
+ \normalbf
+ \fi\fi
+ \let\bf\normalbf}}
+
+%D Donald's (adapted) macros take the next character into
+%D account when placing italic correction. As a bonus we also
+%D look for something that looks like a dash, in which case we
+%D don't correct.
+
+\let\italiccorrection=\/
+
+\def\emphasiscorrection
+ {\ifhmode
+ \expandafter\emphasislook
+ \fi}
+
+\def\emphasislook
+ {\begingroup
+ \beginrobusttest
+ \futurelet\next\emphasistest}
+
+\def\emphasistest
+ {\normalifcat\noexpand\next,%
+ \endrobusttest\expandafter\doemphasiscorrection
+ \normalelse
+ \endrobusttest\expandafter\dododoemphasiscorrection
+ \normalfi}
+
+\def\doemphasiscorrection
+ {\futurelet\next\dodoemphasiscorrection}
+
+\def\dodoemphasiscorrection
+ {\setbox\scratchbox\hbox{\next}%
+ \ifdim\ht\scratchbox=\zeropoint % probably a space
+ \expandafter\dododoemphasiscorrection
+ \else\ifdim\ht\scratchbox<.3ex
+ \expandafter\expandafter\expandafter\endgroup
+ \else
+ \expandafter\expandafter\expandafter\dododoemphasiscorrection
+ \fi\fi}
+
+\def\dododoemphasiscorrection
+ {\scratchskip\lastskip
+ \ifdim\scratchskip=\zeropoint\relax % == \ifzeropt\scratchskip
+ \italiccorrection\relax
+ \else
+ \unskip\italiccorrection\hskip\scratchskip
+ \fi
+ \endgroup}
+
+%D We end with some examples which show the behavior when
+%D some punctuation is met. We also show how the mechanism
+%D adapts itself to bold, italic and slanted typing.
+%D
+%D \startbuffer
+%D test {test}test \par
+%D test {\sl test}test \par
+%D test {\em test}test \par
+%D test {\em test}--test \par
+%D
+%D test {test}, test \par
+%D test {\em test}, test \par
+%D
+%D test {\em test {\em test {\em test} test} test} test \par
+%D test {\bf test {\em test {\em test} test} test} test \par
+%D test {\sl test {\em test {\em test} test} test} test \par
+%D test {\it test {\em test {\em test} test} test} test \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D We get:
+%D
+%D \startvoorbeeld
+%D \startpacked
+%D \getbuffer
+%D \stoppacked
+%D \stopvoorbeeld
+
+%D \macros
+%D {emphbf,emphit,emphsl,emphtf}
+%D
+%D The next emphasis alternatives are for \THANH. They adapt
+%D their style as good as possible.
+
+\def\emphbf{\groupedcommand{\bf\def\emphit{\bi}\def\emphsl{\bs}}{}}
+\def\emphit{\groupedcommand{\it\def\emphbf{\bi}\def\emphsl{\sl}}{}}
+\def\emphsl{\groupedcommand{\sl\def\emphbf{\bs}\def\emphit{\it}}{}}
+\def\emphtf{\groupedcommand{\tf\def\emphbf{\bf}\def\emphit{\it}\def\emphsl{\sl}}{}}
+
+%D \startbuffer
+%D TEXT {\emphbf text \emphit text \emphtf text \emphsl text} TEXT
+%D TEXT \emphbf{text \emphit{text} \emphtf{text} \emphsl{text}} TEXT
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \startlines
+%D \getbuffer
+%D \stoplines
+
+%D \macros
+%D {setfont}
+%D
+%D Every now and then we want to define a font directly, for
+%D instance when we typeset title pages. The next macro saves
+%D some typing:
+
+\def\setfont% geen \dosetfont mogelijk
+ {\def\next{\nextfont\setupinterlinespace}%
+ \afterassignment\next\font\nextfont=}
+
+%D One can call this macro as:
+%D
+%D \starttyping
+%D \setfont cmr10 at 60pt
+%D \stoptyping
+%D
+%D After which the font is active and the baselines and
+%D struts are set.
+
+%D \macros
+%D {showbodyfont}
+%D
+%D One can call for a rather simple overview of a bodyfont and the
+%D relations between its alternative fonts.
+%D
+%D \showsetup{showbodyfont}
+%D
+%D The current bodyfont (here we omitted the argument) looks like:
+%D
+%D \showbodyfont
+%D
+%D The implementation is rather straightforward in using
+%D \type{\halign}.
+
+\fetchruntimecommand \showbodyfont {\f!fontprefix\s!run}
+
+%D \macros
+%D {showfontstrip, testminimalbaseline, showminimalbaseline}
+%D
+%D The next command can come in handy when combining
+%D different fonts into a collection (typeface) and
+%D determining optimal baseline distances.
+%D
+%D \showfontstrip \blank \showminimalbaseline
+
+\fetchruntimecommand \showfontstrip {\f!fontprefix\s!run}
+\fetchruntimecommand \testminimalbaseline {\f!fontprefix\s!run}
+\fetchruntimecommand \showminimalbaseline {\f!fontprefix\s!run}
+
+%D \macros
+%D {showkerning}
+%D
+%D A goody is:
+%D
+%D \showkerning{Can you guess what kerning is?}
+
+\fetchruntimecommand \showkerning {\f!fontprefix\s!run}
+
+%D \macros
+%D {showbodyfontenvironment}
+%D
+%D The current bodyfontenvironment is:
+%D
+%D \showbodyfontenvironment
+%D
+%D This overview is generated using:
+%D
+%D \showsetup{showbodyfontenvironment}
+
+\fetchruntimecommand \showbodyfontenvironment {\f!fontprefix\s!run}
+
+%D \macros
+%D {showfont,showfontstyle,showligatures}
+%D
+%D The following command generates a fontmap:
+%D
+%D \startbuffer
+%D \showfont[SansBold at 12pt]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Below the table the name, encoding, mapping and handling are
+%D shown. Special characters like the \type {\skewchar} and
+%D \type {\hyphenchar} als marked.
+%D
+%D \getbuffer
+
+% to be internationalized
+
+\fetchruntimecommand \showfont {\f!fontprefix\s!run}
+\fetchruntimecommand \showfontstyle {\f!fontprefix\s!run}
+\fetchruntimecommand \showligature {\f!fontprefix\s!run}
+\fetchruntimecommand \showligatures {\f!fontprefix\s!run}
+\fetchruntimecommand \showcharratio {\f!fontprefix\s!run}
+
+%D \macros
+%D {getglyph, symbolicfont}
+%D
+%D Individual glyphs can be accessed by using
+%D
+%D \starttyping
+%D \getglyph{fontname}{character}
+%D \stoptyping
+%D
+%D This macro is used in for instance the symbol modules and
+%D as one can see, it does obey the small and even smaller
+%D sizes. The \type {\symbolicfont} macro can be used to
+%D switch to a font named \type {fontname} (see \type
+%D {cont-log} and \type {symb-eur} for examples of symbolic
+%D definitions.
+
+\def\fontstringA
+ {\ifx\fontstyle\c!rm \s!Serif \else
+ \ifx\fontstyle\c!ss \s!Sans \else
+ \ifx\fontstyle\c!tt \s!Mono \else
+ \s!Serif \fi\fi\fi}
+
+\def\fontstringB
+ {\ifx\fontstyle\c!rm \s!Regular \else
+ \ifx\fontstyle\c!ss \s!Support \else
+ \ifx\fontstyle\c!tt \s!Type \else
+ \s!Serif \fi\fi\fi}
+
+\def\fontstringC
+ {\ifx\fontalternative\c!bf \s!Bold \else
+ \ifx\fontalternative\c!sl \s!Slanted \else
+ \ifx\fontalternative\c!it \s!Italic \else
+ \ifx\fontalternative\c!bs \s!BoldSlanted \else
+ \ifx\fontalternative\c!bi \s!BoldItalic \fi\fi\fi\fi\fi}
+
+\def\fontstringD % default fontstyle
+ {\expandafter\ifx\csname\??tf\fontclass\s!default\endcsname\c!rm \s!Serif \else
+ \expandafter\ifx\csname\??tf\fontclass\s!default\endcsname\c!ss \s!Sans \else
+ \expandafter\ifx\csname\??tf\fontclass\s!default\endcsname\c!tt \s!Mono \else
+ \s!Serif \fi\fi\fi}
+
+% potential generalization:
+
+% \letvalue{\??ff:t:\c!rm}\s!Serif
+% \letvalue{\??ff:t:\c!ss}\s!Sans
+% \letvalue{\??ff:t:\c!tt}\s!Mono
+%
+% \letvalue{\??ff:s:\c!bf}\s!Bold
+% \letvalue{\??ff:s:\c!sl}\s!Slanted
+% \letvalue{\??ff:s:\c!it}\s!Italic
+% \letvalue{\??ff:s:\c!bs}\s!BoldSlanted
+% \letvalue{\??ff:s:\c!bi}\s!BoldItalic
+%
+% \letvalue{\??ff:a:\c!rm}\s!Regular
+% \letvalue{\??ff:a:\c!ss}\s!Support
+% \letvalue{\??ff:a:\c!tt}\s!Type
+%
+% \def\fontstringA{\executeifdefined{\??ff:t:\fontstyle}\s!Serif}
+% \def\fontstringB{\executeifdefined{\??ff:a:\fontstyle}\s!Serif}
+% \def\fontstringC{\executeifdefined{\??ff:s:\fontstyle}\empty}
+% \def\fontstringD{\executeifdefined{\??ff:t:\csname\??tf\fontclass\s!default\endcsname}\s!Serif}
+
+\beginETEX \ifcsname
+
+\def\glyphfontfile#1%
+ {#1%
+ \ifcsname\??ff#1\fontstringA\fontstringC\endcsname
+ \fontstringA\fontstringC
+ \else\ifcsname\??ff#1\fontstringB\fontstringC\endcsname
+ \fontstringB\fontstringC
+ \else\ifcsname\??ff#1\fontstringA\endcsname
+ \fontstringA
+ \else\ifcsname\??ff#1\fontstringB\endcsname
+ \fontstringB
+ \else\ifcsname\??ff#1\fontstringC\endcsname
+ \fontstringC
+ \fi\fi\fi\fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\glyphfontfile#1%
+ {#1%
+ \expandafter\ifx\csname\??ff#1\fontstringA\fontstringC\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringB\fontstringC\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringA\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringB\endcsname\relax
+ \expandafter\ifx\csname\??ff#1\fontstringC\endcsname\relax
+ \else \fontstringC \fi
+ \else \fontstringB \fi
+ \else \fontstringA \fi
+ \else \fontstringB\fontstringC \fi
+ \else \fontstringA\fontstringC \fi}
+
+\endTEX
+
+%D The next macro can be used to make decisions based on the shape:
+
+\def\doifitalicelse#1#2%
+ {\ifx\fontalternative\c!sl#1\else
+ \ifx\fontalternative\c!it#1\else
+ \ifx\fontalternative\c!bs#1\else
+ \ifx\fontalternative\c!bi#1\else#2\fi\fi\fi\fi}
+
+%D For an example of usage of the following command,
+%D see \type {cont-log.tex}.
+%D
+%D \starttyping
+%D \def\symbolicfont#1%
+%D {\definedfont[\glyphfontfile{#1} sa *]}
+%D \stoptyping
+%D
+%D Since we know what scaling it to be applied, we can
+%D implement a much faster alternative:
+
+\let\thedefinedfont\relax
+
+\def\symbolicscaledfont#1#2%
+ {\scaledfont\fontbody
+ \scaledfont#1\scaledfont
+ \font\thedefinedfont\truefontname{\glyphfontfile{#2}} at
+ \currentfontbodyscale\scaledfont
+ \thedefinedfont}
+
+\unexpanded\def\symbolicfont
+ {\symbolicscaledfont\plusone}
+
+\unexpanded\def\getglyph#1#2% slow, faster, much faster
+ %{{\definefont[\s!dummy][\glyphfontfile{#1} sa \currentfontscale]\dummy#2}}
+ %{{\definefont[\s!dummy][\glyphfontfile{#1} sa *]\dummy#2}}
+ %{{\symbolicfont{#1}#2}}
+ {{\symbolicfont{#1}\doifnumberelse{#2}\char\donothing#2}}
+
+\unexpanded\def\getscaledglyph#1#2#3%
+ {{\symbolicscaledfont{#1}{#2}\doifnumberelse{#3}\char\donothing#3}}
+
+\unexpanded\def\getrawglyph#1#2% for simple symbols
+ {{\scaledfont\fontbody
+ \font\thedefinedfont=#1 at \currentfontbodyscale\scaledfont
+ \thedefinedfont\doifnumberelse{#2}\char\donothing#2}}
+
+%D The last implementation of \type {\getglyph} permits
+%D definitions like:
+%D
+%D \starttyping
+%D \definefontsynonym [EuroSans] [eurose]
+%D \definefontsynonym [EuroSansBold] [euroseb]
+%D \definefontsynonym [EuroSansItalic] [eurosei]
+%D \definefontsynonym [EuroSansSlanted] [eurosei]
+%D \definefontsynonym [EuroSansBoldItalic] [eurosebi]
+%D \definefontsynonym [EuroSansBoldSlanted] [eurosebi]
+%D
+%D \definesymbol [euro] [\getglyph{Euro}{\char160}]
+%D
+%D \def\euro{\symbol[euro]}
+%D \stoptyping
+%D
+%D These definitions guarantee that the next calls work okay:
+%D
+%D \starttyping
+%D \ss \tf\euro \bf\euro \sla\euro \itd\euro \bs\euro \bic\euro
+%D \stoptyping
+%D
+%D The shape as well as the size is adapted to the current
+%D environment.
+
+%D Fonts can only be used when loaded. In \CONTEXT\ we
+%D postpone the loading of fonts, even when we load \PLAIN.
+%D This means that we have to redefine one of the \PLAIN\
+%D macros. Let's tell that to the user first:
+
+\writestatus{loading}{Postponed Plain TeX Font Definitions}
+
+%D \macros
+%D {bordermatrix}
+%D
+%D In \PLAIN\ \TEX\ the width of a parenthesis is stored in
+%D the \DIMENSION\ \type{\p@renwd}. This value is derived from
+%D the width of \type{\tenrm B}, so let's take care of it now:
+
+\let\normalbordermatrix=\bordermatrix
+
+\def\bordermatrix%
+ {\bgroup
+ \setbox0\hbox{\getvalue{\textface\c!mm\c!ex}B}%
+ \global\p@renwd\wd0\relax
+ \egroup
+ \normalbordermatrix}
+
+%D Because we want to be as \PLAIN\ compatible as possible, we
+%D make most of \PLAIN's font mechanisme available to the
+%D \CONTEXT\ user.
+
+\def\setplainfonts#1#2%
+ {\setvalue {ten#1}{\getvalue{\!!tenpoint #2}}%
+ \setvalue{seven#1}{\getvalue{\!!sevenpoint#2}}%
+ \setvalue {five#1}{\getvalue{\!!fivepoint #2}}}
+
+\setplainfonts {\c!rm} {\c!rm\c!tf}
+\setplainfonts {\c!bf} {\c!rm\c!bf}
+\setplainfonts {\c!sl} {\c!rm\c!sl}
+\setplainfonts {\c!it} {\c!rm\c!it}
+\setplainfonts {\c!tt} {\c!rm\c!tt}
+\setplainfonts {\c!sy} {\c!mm\c!sy}
+\setplainfonts {\c!ex} {\c!mm\c!ex}
+\setplainfonts {\c!i} {\c!mm\c!mi}
+
+\let\setplainfonts=\undefined
+
+%D \macros
+%D {ss, SS, sz}
+%D
+%D We are going to redefine \type{\ss} but for those wo still
+%D want to have access to the german \SS, we save it's value in
+%D \type{\SS}. Ok, I should have used \type{\sf} instead of
+%D \type{\ss} in the first place.
+
+\ifx\undefined\SS \let\SS=\ss \fi
+\ifx\undefined\sz \let\sz=\ss \fi
+
+%D \macros
+%D {xi}
+%D
+%D We are going to redefine \type{\xi}, but fortunately this
+%D is a math mode character, so we can just say:
+
+\let\normalxi=\xi
+
+%D \macros
+%D {smashaccent}
+%D
+%D When we let \TEX\ put an accent on top of a character, such
+%D composed characters can get more height that height of a
+%D standard \type{\strut}. The next macro takes care of such
+%D unwanted compositions.
+%D
+%D We need to reach over the number that specifies the accent,
+%D and in doing so we use \type{\scratchcounter} as a placeholder
+%D because it accepts 8 bit numbers in octal, decimal or
+%D hexadecimal format. Next we set the height of the accented
+%D character to the natural height of the character.
+
+\unexpanded\def\smashaccent#1%
+ {\dontleavehmode
+ \bgroup
+ \setbox\scratchbox\hbox{#1}%
+ \ifdim\ht\scratchbox>\strutheight\relax\ht\scratchbox\strutheight\fi
+ \ifdim\dp\scratchbox>\strutdepth \relax\dp\scratchbox\strutdepth \fi
+ \box\scratchbox
+ \egroup}
+
+%D For instance we can say:
+%D
+%D \starttyping
+%D \smashaccent{\"Uberhaupt}
+%D \stoptyping
+%D
+%D But normally one will use it as a prefix in definitions.
+%D The difference is in the height:
+%D
+%D \leavevmode\ruledhbox
+%D {\ruledhbox{\smashaccent{\"U}berhaupt}\quad
+%D oder\quad
+%D \ruledhbox{\"Uberhaupt}}
+
+%D \macros
+%D {moveaccent}
+%D
+%D Exact positioning of accents can be realized by saying:
+%D
+%D \starttyping
+%D \moveaccent{-.1ex}{\"u}berhaupt
+%D \stoptyping
+%D
+%D Again, this one will mostly used as a prefix in definitions.
+%D Here the difference is in the position:
+%D
+%D \leavevmode\ruledhbox
+%D {\ruledhbox{\moveaccent{-.1ex}{\"}Uberhaupt}\quad
+%D oder\quad
+%D \ruledhbox{\"Uberhaupt}}
+
+\unexpanded\def\moveaccent#1#2%
+ {\smashaccent
+ {\dimen0\fontdimen5\font
+ \dimen2\dimen0
+ \advance\dimen2 -#1%
+ \fontdimen5\font\dimen2
+ #2\relax
+ \fontdimen5\font\dimen0}}
+
+%D Personally I think that using \TEX\ is complicated by the
+%D way fonts are handled. Apart from the many encodings, we
+%D also deal with different naming schemes. Confronted with
+%D this problem, I decided to change the definitions into:
+%D
+%D \starttyping
+%D \definebodyfont [12pt] [rm] [tf=Times-Roman at 12pt]
+%D \stoptyping
+%D
+%D combined with for instance:
+%D
+%D \starttyping
+%D \definefontsynonym [Times-Roman] [tir]
+%D \stoptyping
+
+%D Now we're up to some definitions.
+
+\definebodyfontenvironment
+ [\s!default]
+ [ \s!text=1.0,
+ \s!script=0.7,
+ \s!scriptscript=0.5,
+ \c!a=1.200,
+ \c!b=1.440,
+ \c!c=1.728,
+ \c!d=2.074,
+ *=\currentfontscale, % wildcard
+ \c!x=0.8,
+ \c!xx=0.6,
+ \c!big=1.2,
+ \c!small=0.8,
+ \c!interlinespace=,
+ \c!em=\v!slanted]
+
+\definebodyfontenvironment
+ [20.7pt]
+ [ \s!text=20.7pt,
+ \s!script=\!!fourteenpointfour,
+ \s!scriptscript=\!!twelvepoint,
+ \c!x=17.3pt,
+ \c!xx=\!!fourteenpointfour,
+ \c!big=20.7pt, % !!!!
+ \c!small=17.3pt]
+
+\definebodyfontenvironment
+ [17.3pt]
+ [ \s!text=17.3pt,
+ \s!script=\!!twelvepoint,
+ \s!scriptscript=\!!tenpoint,
+ \c!x=\!!fourteenpointfour,
+ \c!xx=\!!twelvepoint,
+ \c!big=20.7pt,
+ \c!small=\!!fourteenpointfour]
+
+\definebodyfontenvironment
+ [\!!fourteenpointfour]
+ [ \s!text=\!!fourteenpointfour,
+ \s!script=\!!elevenpoint,
+ \s!scriptscript=\!!ninepoint,
+ \c!x=\!!twelvepoint,
+ \c!xx=\!!tenpoint,
+ \c!big=17.3pt,
+ \c!small=\!!twelvepoint]
+
+\definebodyfontenvironment
+ [\!!twelvepoint]
+ [ \s!text=\!!twelvepoint,
+ \s!script=\!!ninepoint,
+ \s!scriptscript=\!!sevenpoint,
+ \c!x=\!!tenpoint,
+ \c!xx=\!!eightpoint,
+ \c!big=\!!fourteenpointfour,
+ \c!small=\!!tenpoint]
+
+\definebodyfontenvironment
+ [\!!elevenpoint]
+ [ \s!text=\!!elevenpoint,
+ \s!script=\!!eightpoint,
+ \s!scriptscript=\!!sixpoint,
+ \c!x=\!!ninepoint,
+ \c!xx=\!!sevenpoint,
+ \c!big=\!!twelvepoint,
+ \c!small=\!!ninepoint]
+
+\definebodyfontenvironment
+ [\!!tenpoint]
+ [ \s!text=\!!tenpoint,
+ \s!script=\!!sevenpoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!eightpoint,
+ \c!xx=\!!sixpoint,
+ \c!big=\!!twelvepoint,
+ \c!small=\!!eightpoint]
+
+\definebodyfontenvironment
+ [\!!ninepoint]
+ [ \s!text=\!!ninepoint,
+ \s!script=\!!sevenpoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!sevenpoint,
+ \c!xx=\!!fivepoint,
+ \c!big=\!!elevenpoint,
+ \c!small=\!!sevenpoint]
+
+\definebodyfontenvironment
+ [\!!eightpoint]
+ [ \s!text=\!!eightpoint,
+ \s!script=\!!sixpoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!sixpoint,
+ \c!xx=\!!fivepoint,
+ \c!big=\!!tenpoint,
+ \c!small=\!!sixpoint]
+
+\definebodyfontenvironment
+ [\!!sevenpoint]
+ [ \s!text=\!!sevenpoint,
+ \s!script=\!!sixpoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!sixpoint,
+ \c!xx=\!!fivepoint,
+ \c!big=\!!ninepoint,
+ \c!small=\!!fivepoint]
+
+\definebodyfontenvironment
+ [\!!sixpoint]
+ [ \s!text=\!!sixpoint,
+ \s!script=\!!fivepoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!fivepoint,
+ \c!xx=\!!fivepoint,
+ \c!big=\!!eightpoint,
+ \c!small=\!!fivepoint]
+
+\definebodyfontenvironment
+ [\!!fivepoint]
+ [ \s!text=\!!fivepoint,
+ \s!script=\!!fivepoint,
+ \s!scriptscript=\!!fivepoint,
+ \c!x=\!!fivepoint,
+ \c!xx=\!!fivepoint,
+ \c!big=\!!sevenpoint,
+ \c!small=\!!fivepoint]
+
+\definebodyfontenvironment
+ [\!!fourpoint]
+ [ \s!text=\!!fourpoint,
+ \s!script=\!!fourpoint,
+ \s!scriptscript=\!!fourpoint,
+ \c!x=\!!fourpoint,
+ \c!xx=\!!fourpoint,
+ \c!big=\!!sixpoint,
+ \c!small=\!!fourpoint]
+
+\definebodyfontswitch [fourteenpointfour] [\!!fourteenpointfour]
+\definebodyfontswitch [twelvepoint] [\!!twelvepoint]
+\definebodyfontswitch [elevenpoint] [\!!elevenpoint]
+\definebodyfontswitch [tenpoint] [\!!tenpoint]
+\definebodyfontswitch [ninepoint] [\!!ninepoint]
+\definebodyfontswitch [eightpoint] [\!!eightpoint]
+\definebodyfontswitch [sevenpoint] [\!!sevenpoint]
+\definebodyfontswitch [sixpoint] [\!!sixpoint]
+\definebodyfontswitch [fivepoint] [\!!fivepoint]
+\definebodyfontswitch [fourpoint] [\!!fourpoint]
+
+\definebodyfontswitch [xii] [\!!twelvepoint]
+\definebodyfontswitch [xi] [\!!elevenpoint]
+\definebodyfontswitch [x] [\!!tenpoint]
+\definebodyfontswitch [ix] [\!!ninepoint]
+\definebodyfontswitch [viii] [\!!eightpoint]
+\definebodyfontswitch [vii] [\!!sevenpoint]
+\definebodyfontswitch [vi] [\!!sixpoint]
+
+%D So far.
+
+\definefontstyle [\c!rm,\v!roman,\v!serif,\v!regular] [\c!rm]
+\definefontstyle [\c!ss,\v!sansserif,\v!sans,\v!support] [\c!ss]
+\definefontstyle [\c!tt,\v!teletype,\v!type,\v!mono] [\c!tt]
+\definefontstyle [\c!hw,\v!handwritten] [\c!hw]
+\definefontstyle [\c!cg,\v!calligraphic] [\c!cg]
+
+\definefontsize[\c!a] \definefontsize[\c!b]
+\definefontsize[\c!c] \definefontsize[\c!d]
+
+\definealternativestyle [\v!mediaeval] [\os] []
+\definealternativestyle [\v!normal] [\tf] []
+\definealternativestyle [\v!bold] [\bf] []
+\definealternativestyle [\v!type] [\tt] []
+\definealternativestyle [\v!slanted] [\sl] []
+\definealternativestyle [\v!italic] [\it] []
+\definealternativestyle [\v!boldslanted,\v!slantedbold] [\bs] []
+\definealternativestyle [\v!bolditalic,\v!italicbold] [\bi] []
+\definealternativestyle [\v!small,\v!smallnormal] [\tfx] []
+\definealternativestyle [\v!smallbold] [\bfx] []
+\definealternativestyle [\v!smalltype] [\ttx] []
+\definealternativestyle [\v!smallslanted] [\slx] []
+\definealternativestyle [\v!smallboldslanted,\v!smallslantedbold] [\bsx] []
+\definealternativestyle [\v!smallbolditalic,\v!smallitalicbold] [\bix] []
+
+%D Slow but handy:
+
+\definealternativestyle [\v!smallbodyfont] [\setsmallbodyfont] []
+\definealternativestyle [\v!bigbodyfont] [\setbigbodyfont] []
+
+%D We treat {\sc Small Caps} and \cap {Pseudo Caps} a bit
+%D different. We also provide an \WORD {uppercase} style.
+
+\definealternativestyle [\v!cap,\v!capital] [\smallcapped] [\smallcapped]
+\definealternativestyle [\v!smallcaps] [\sc] [\sc]
+\definealternativestyle [\v!WORD] [\WORD] [\WORD]
+
+%D \macros
+%D {...math}
+%D
+%D New or old?
+
+% tzt proper \define...
+%
+% watch out: \synchronizesymb resets the family so we need a second
+% \mf (or maybe \mr): messy and to be sorted out
+
+\def\tfmath{\tf\mf\synchronizesymb\mf}
+\def\bfmath{\bf\mf\synchronizesymb\mf}
+\def\slmath{\sl\mf\synchronizesymb\mf}
+\def\itmath{\it\mf\synchronizesymb\mf}
+\def\bsmath{\bs\mf\synchronizesymb\mf}
+\def\bimath{\bi\mf\synchronizesymb\mf}
+\def\scmath{\sc\mf\synchronizesymb\mf}
+\def\nnmath{\nn\mf\synchronizesymb\mf}
+
+\def\textmath {\synchronizesymb}
+
+%D \macros
+%D {fontstylesuffix}
+%D
+%D The next macro is used to map non latin fontnames on
+%D fonts. See \type {font-uni} for an example of its use.
+
+%\def\fontstylesuffix%
+% {\ifnum\fam=\tffam \s!Regular \else
+% \ifnum\fam=\bffam \s!Bold \else
+% \ifnum\fam=\slfam \s!Slanted \else
+% \ifnum\fam=\itfam \s!Italic \else
+% \ifnum\fam=\bsfam \s!BoldSlanted \else
+% \ifnum\fam=\bifam \s!BoldItalic \else
+% \s!Regular \fi\fi\fi\fi\fi\fi}%
+
+\def\fontstylesuffix% why the \s!Regular ? see \getglyph
+ {\ifx\fontalternative\c!tf \s!Regular \else
+ \ifx\fontalternative\c!bf \s!Bold \else
+ \ifx\fontalternative\c!sl \s!Slanted \else
+ \ifx\fontalternative\c!it \s!Italic \else
+ \ifx\fontalternative\c!bs \s!BoldSlanted \else
+ \ifx\fontalternative\c!bi \s!BoldItalic \else
+ \ifx\fontalternative\c!sc \s!Caps \else
+ \s!Regular \fi\fi\fi\fi\fi\fi\fi}%
+
+%D We still have to take care of \type{\xi}, so:
+
+\def\xi{\ifmmode\normalxi\else\elevenpoint\fi}
+
+%D \macros
+%D {definefontvariant,fontvariant,variant}
+%D
+%D A slightly adapted version of Adam Lindsays variant patches:
+%D
+%D \starttyping
+%D \usetypescriptfile[type-psc] \loadmapfile[texnansi-public-fpl]
+%D \usetypescript[palatino][texnansi] \setupbodyfont[palatino]
+%D
+%D \definefontvariant [Serif][osf] [OsF]
+%D
+%D \startlines
+%D {\sc abcdefgHIJKlmnop}
+%D 123{\Var[osf]456}789
+%D {\Var[osf] 123{\Var[reset]456}789}
+%D {\it 123{\Var[osf]456}789
+%D {\Var[osf]123{\Var[reset]456}789}}
+%D {\tfb\bf 123{\Var[osf]456}789
+%D {\Var[osf] 123{\Var[reset]456}789}}
+%D {\sc 123{\Var[osf]456}789
+%D {\Var[osf] 123{\Var[reset]456}789}}
+%D \stoplines
+%D \stoptyping
+
+\def\definefontvariant
+ {\dotripleargument\dodefinefontvariant}
+
+\def\dodefinefontvariant[#1][#2][#3]%
+ {\setvalue{\??fv#1#2}{#3}}
+
+\def\fontvariant#1#2{\executeifdefined{\??fv#1#2}\empty}
+
+% original:
+%
+% \def\variant[#1]%
+% {\expanded{\definedfont
+% [\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}}
+% at \currentfontscale\bodyfontsize]}}
+%
+% \beginXETEX \font
+%
+% \def\variant[#1]%
+% {\font\variantfont\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}}
+% at \currentfontscale\bodyfontsize
+% \variantfont}
+%
+% \endXETEX
+%
+% better
+
+\def\dosetscaledfont
+ {\checkrelativefontsize\fontstyle
+ \scaledfont\currentfontscale\bodyfontsize
+ \scaledfont\relativefontsize\scaledfont}
+
+\def\variant[#1]% slow
+ {\dosetscaledfont
+ \expanded{\definedfont
+ [\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}}
+ at \scaledfont]}}
+
+\beginXETEX \font
+
+ \def\variant[#1]%
+ {\dosetscaledfont
+ \font\variantfont\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}}
+ at \scaledfont
+ \variantfont}
+
+\endXETEX
+
+\ifx\Var\undefined \let\Var\variant \fi
+
+%D By default we load the Computer Modern Roman fonts (but
+%D not yet at this moment) and activate the 12pt roman
+%D bodyfont. Sans serif and teletype are also available and
+%D can be called for by \type{\ss} and \type{\tt}.
+
+\setupbodyfont [unk, rm]
+
+%D Also needed is:
+
+\definefont[tinyfont][Mono at 1ex]
+
+%D \macros
+%D {doiffontpresentelse}
+%D
+%D Some unused left||overs:
+%D
+%D \starttyping
+%D \def\doiffontpresentelse#1#2#3%
+%D {\bgroup
+%D \batchmode\font\dummy=\truefontname{#1}\errorstopmode
+%D \edef\lastfontname{\fontname\dummy}%
+%D \ifx\lastfontname\nullfontname\egroup#3\else\egroup#2\fi}
+%D
+%D \def\abortiffontnotfound#1%
+%D {\doiffontpresentelse{#1}{}{\showmessage\m!fonts{10}{\truefontname{#1}}\endinput}}
+%D \stoptyping
+%D
+%D We now provide (slow, but sometimes handy):
+%D
+%D \starttyping
+%D \doiffontpresentelse{texnansi-lmr10}{YES}{NO}
+%D \doiffontpresentelse{adam-lindsay-modern-serif}{YES}{NO}
+%D \stoptyping
+
+\beginTEX
+
+\def\doiffontpresentelse#1%
+ {\bgroup
+ \batchmode\font\dummy=\truefontname{#1}\errorstopmode
+ \edef\lastfontname{\fontname\dummy}%
+ \ifx\lastfontname\nullfontname
+ \egroup\expandafter\secondoftwoarguments
+ \else
+ \egroup\expandafter\firstoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX \interactionmode
+
+\def\doiffontpresentelse#1%
+ {\bgroup
+ \scratchcounter\interactionmode
+ \batchmode
+ \font\dummy=\truefontname{#1}\relax
+ \interactionmode\scratchcounter
+ \edef\lastfontname{\fontname\dummy}%
+ \ifx\lastfontname\nullfontname
+ \egroup\expandafter\secondoftwoarguments
+ \else
+ \egroup\expandafter\firstoftwoarguments
+ \fi}
+
+\endETEX
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-map.tex b/Master/texmf-dist/tex/context/base/font-map.tex
new file mode 100644
index 00000000000..33e7fd7ddc8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-map.tex
@@ -0,0 +1,125 @@
+%D \module
+%D [ file=font-map,
+%D version=1998.03.13,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Postscript for Maps,
+%D author=Taco Hoekwater,
+%D date=\currentdate,
+%D copyright=NTG Maps]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+% NOT YET ADAPTED TO THE NEW FONT MACROS
+
+\startnotmode[localfonts]
+
+\definefontsynonym [Mono] [pcrr7tn] [encoding=texnansi]
+\definefontsynonym [MonoSlanted] [pcrro7tn] [encoding=texnansi]
+\definefontsynonym [MonoBold] [pcrb7tn] [encoding=texnansi]
+\definefontsynonym [MonoBoldSlanted] [pcrbo7tn] [encoding=texnansi]
+\definefontsynonym [MonoBoldItalic] [pcrbo7tn] [encoding=texnansi]
+
+\definefontsynonym [Serif] [ptmr7d] [encoding=texnansi]
+\definefontsynonym [SerifBold] [ftb] [encoding=texnansi]
+\definefontsynonym [SerifItalic] [ptmri7d] [encoding=texnansi]
+\definefontsynonym [SerifSlanted] [ptmro9t] [encoding=texnansi]
+\definefontsynonym [SerifBoldItalic] [ftbi] [encoding=texnansi]
+\definefontsynonym [SerifBoldSlanted] [ftbi] [encoding=texnansi]
+\definefontsynonym [SerifCaps] [ptmrc9t] [encoding=texnansi]
+
+\definefontsynonym [Sans] [ftl] [encoding=texnansi]
+\definefontsynonym [SansBold] [ftb] [encoding=texnansi]
+\definefontsynonym [SansItalic] [ftli] [encoding=texnansi]
+\definefontsynonym [SansSlanted] [ftli] [encoding=texnansi]
+\definefontsynonym [SansBoldItalic] [ftbi] [encoding=texnansi]
+\definefontsynonym [SansBoldSlanted] [ftbi] [encoding=texnansi]
+\definefontsynonym [SansCaps] [ftr] [encoding=texnansi]
+
+\definefontsynonym [BigSerif] [ptmr7t] [encoding=texnansi]
+\definefontsynonym [BigSerifSlanted] [ptmro7t] [encoding=texnansi]
+
+\stopnotmode
+
+\startmode[localfonts]
+
+\definefontsynonym [BigSerif] [Serif]
+\definefontsynonym [BigSerifSlanted] [SerifSlanted]
+
+\stopmode
+
+\definebodyfont [14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt] [rm]
+ [tf=Serif sa 1.06,
+ bf=SerifBold sa 1,
+ it=SerifItalic sa 1.06,
+ sl=SerifSlanted sa 1.06,
+ bi=SerifBoldItalic sa 1,
+ bs=SerifBoldSlanted sa 1,
+ sc=SerifCaps sa 1.06]
+
+\definebodyfont [14.4pt,12pt,11pt,10pt,9pt,8pt] [rm]
+ [tfa=BigSerif sa 1.200,
+ tfb=BigSerif sa 1.440,
+ tfc=BigSerif sa 1.728,
+ tfd=BigSerif sa 2.074,
+ bfa=SerifBold sa 1.200,
+ bfb=SerifBold sa 1.440,
+ bfc=SerifBold sa 1.728,
+ bfd=SerifBold sa 2.074,
+ sla=BigSerifSlanted sa 1.200,
+ slb=BigSerifSlanted sa 1.440,
+ slc=BigSerifSlanted sa 1.728,
+ sld=BigSerifSlanted sa 2.074,
+ bsa=SerifBoldSlanted sa 1.200,
+ bsb=SerifBoldSlanted sa 1.440,
+ bsc=SerifBoldSlanted sa 1.728,
+ bsd=SerifBoldSlanted sa 2.074,
+ bia=SerifBoldItalic sa 1.200,
+ bib=SerifBoldItalic sa 1.440,
+ bic=SerifBoldItalic sa 1.728,
+ bid=SerifBoldItalic sa 2.074]
+
+\definebodyfont [22pt,17pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt] [ss]
+ [tf=Sans sa 1,
+ bf=SansBold sa 1,
+ it=SansItalic sa 1,
+ sl=SansSlanted sa 1,
+ bs=SansBoldSlanted sa 1,
+ bi=SansBoldSlanted sa 1,
+ sc=SansCaps sa .8,
+ tfa=Sans sa 1.200,
+ tfb=Sans sa 1.440,
+ tfc=Sans sa 1.728,
+ tfd=Sans sa 2.074,
+ bfa=SansBold sa 1.200,
+ bfb=SansBold sa 1.440,
+ bfc=SansBold sa 1.728,
+ bfd=SansBold sa 2.074,
+ bsa=SansBoldSlanted sa 1.200,
+ bsb=SansBoldSlanted sa 1.440,
+ bsc=SansBoldSlanted sa 1.728,
+ bsd=SansBoldSlanted sa 2.074]
+
+\definebodyfont [14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt] [tt]
+ [ tf=Mono sa 1,
+ sl=MonoSlanted sa 1,
+ bf=MonoBold sa 1,
+ bs=MonoBoldSlanted sa 1,
+ bi=MonoBoldSlanted sa 1,
+ tfa=Mono sa 1.200,
+ tfb=Mono sa 1.440,
+ tfc=Mono sa 1.728,
+ tfd=Mono sa 2.074,
+ sla=MonoSlanted sa 1.200,
+ slb=MonoSlanted sa 1.440,
+ slc=MonoSlanted sa 1.728,
+ sld=MonoSlanted sa 2.074]
+
+%D The Courier font does not contain \TEX's visual space. The
+%D next definition offers an alternative.
+
+\def\controlspace%
+ {\hbox{\font\next=cmtt10 at \bodyfontsize\next\char32}}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/font-run.tex b/Master/texmf-dist/tex/context/base/font-run.tex
new file mode 100644
index 00000000000..08537e374cf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-run.tex
@@ -0,0 +1,329 @@
+%D \module
+%D [ file=font-run,
+%D version=1998.09.11, % (second)
+%D version=2001.02.20, % (third)
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D [This code is hooked into the core macros and saves some
+%D format space.]
+
+\unprotect
+
+\gdef\dosetshowfonttitle#1%
+ {\tabskip\zeropoint
+ \parindent\zeropoint
+ \setlocalhsize
+ \doifelsenothing{#1}
+ {\def\title{[\the\bodyfontsize]}}
+ {\switchtobodyfont[#1]\def\title{[#1]}}
+ \doifsomething\fontclass
+ {\doifnot{[\fontclass]}\title
+ {\edef\title{[\fontclass]\space\title}}}}
+
+\gdef\showbodyfont%
+ {\dosingleempty\doshowbodyfont}
+
+\gdef\doshowbodyfont[#1]%
+ {\ifinsidefloat\else\startbaselinecorrection\fi
+ \vbox
+ {\dosetshowfonttitle{#1}%
+ \def\bigstrut##1##2%
+ {\hbox{\vrule
+ \!!height##1\strutht
+ \!!depth ##2\strutdp
+ \!!width \zeropoint}}
+ \def\next##1##2##3%
+ {&&##1&&##2\tf##3&&##2\sc##3%
+ &&##2\sl##3&&##2\it##3&&##2\bf##3&&##2\bs##3&&##2\bi##3%
+ &&##2\tfx##3&&##2\tfxx##3%
+ &&##2\tfa##3&&##2\tfb##3&&##2\tfc##3&&##2\tfd##3&\cr}%
+ \halign to \localhsize
+ {\bigstrut{1.5}{2}##&\vrule##
+ \tabskip=\!!zeropoint \!!plus 1fill
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&##\vrule
+ \tabskip=\!!zeropoint\cr
+ \noalign{\hrule}
+ &\multispan{29}{\vrule\hfil\tttf\strut\title\hfil
+ \llap{\string\mr\hbox to 1em{\hss:\hss}$\mr \languageparameter\c!text$\quad}\vrule}\cr
+ \noalign{\hrule}\next{}{\tt\string}{}
+ \noalign{\hrule}\next{\tt\string\rm}\rm{\languageparameter\c!text}
+ \noalign{\hrule}\next{\tt\string\ss}\ss{\languageparameter\c!text}
+ \noalign{\hrule}\next{\tt\string\tt}\tt{\languageparameter\c!text}
+ \noalign{\hrule}}}
+ \ifinsidefloat\else\stopbaselinecorrection\fi}
+
+\gdef\showbodyfontenvironment
+ {\dosingleempty\doshowbodyfontenvironment}
+
+\gdef\doshowbodyfontenvironment[#1]%
+ {\ifinsidefloat\else\startbaselinecorrection\fi
+ \vbox
+ {\dosetshowfonttitle{#1}%
+ \def\next##1%
+ {&&\getvalue{\bodyfontvariable{##1\s!text}}%
+ &&\getvalue{\bodyfontvariable{##1\s!script}}%
+ &&\getvalue{\bodyfontvariable{##1\s!scriptscript}}%
+ &&\getvalue{\bodyfontvariable{##1\c!x}}%
+ &&\getvalue{\bodyfontvariable{##1\c!xx}}%
+ &&\getvalue{\bodyfontvariable{##1\interfaced\v!small}}%
+ &&\getvalue{\bodyfontvariable{##1\interfaced\v!big}}%
+ &&\getvalue{\bodyfontvariable{##1\c!interlinespace}}&\cr
+ \noalign{\hrule}}
+ \halign to \localhsize
+ {##&\vrule##\strut
+ \tabskip=\!!zeropoint \!!plus 1fill
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##&\hfil##\hfil&\vrule##
+ &\hfil##\hfil&\vrule##&\hfil##\hfil&##\vrule
+ \tabskip\zeropoint\cr
+ \noalign{\hrule}
+ &\multispan{17}{\vrule\hfil\tttf\strut\title\hfil}\vrule\cr
+ \noalign{\hrule}
+ &&\tttf\tx\s!text&&\tttf\tx\s!script&&\tttf\tx\s!scriptscript
+ &&\tttf\tx\c!x&&\tttf\tx\c!xx&&\tttf\tx\v!small&&\tttf\tx\v!big
+ &&\tttf\tx\c!interlinespace&\cr
+ \noalign{\hrule}
+ \@EA\globalprocesscommalist\@EA[\bodyfontenvironmentlist]\next}}
+ \ifinsidefloat\else\stopbaselinecorrection\fi}
+
+\gdef\showfont
+ {\dodoubleempty\doshowfont}
+
+\beginTEX \iffontchar
+
+\gdef\iffontchar#1#2{\iftrue}
+
+\endTEX
+
+\gdef\doshowfont[#1][#2]%
+ {\bgroup
+ \boxrulewidth=.1pt
+ \setupcolors[\c!state=\v!local]%
+ \iffirstargument
+ \definefont[\s!dummy][#1]\dummy
+ \else\ifdim2.5em>.05\hsize \tx
+ \ifdim2.5em>.05\hsize \txx
+ \fi\fi\fi
+ \ifinsidefloat\else\startbaselinecorrection\fi
+ \vbox\bgroup
+ \forgetall
+ \startoverlay
+ {\vbox
+ {\tf \setstrut \dummy
+ \localcolortrue \offinterlineskip
+ \dostepwiserecurse{0}{15}{1}
+ {\let\row\recurselevel
+ \hbox
+ {\red
+ \dostepwiserecurse{0}{15}{1}
+ {\let\col\recurselevel
+ \@EA\scratchcounter\normaldblquote\hexnumber\row\hexnumber\col\relax
+ \edef\rowcol{\the\scratchcounter}%
+ \iffontchar\font\scratchcounter
+ \setbox\scratchbox\ruledhbox{\black\char\scratchcounter}%
+ \ifdim\wd\scratchbox>\zeropoint
+ \donetrue \else \donefalse
+ \fi
+ \else
+ \setbox\scratchbox\hbox{\gray\vrule\!!width1ex\!!height.5ex\!!depth.5ex}%
+ \fi
+ \startoverlay
+ {\tf\vbox to 2.5em
+ {\vss
+ \hbox to 2.5em
+ {\dummy\ifdim\fontdimen2\font=\zeropoint
+ \setbox\scratchbox\hbox
+ {\raise.5\dp\scratchbox\hbox
+ {\lower.5\ht\scratchbox\copy\scratchbox}}%
+ \ht\scratchbox\zeropoint
+ \dp\scratchbox\zeropoint
+ \else
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \strut
+ \fi
+ \hss\copy\scratchbox\hss}
+ \vss}}
+ {\tf\vbox to 2.3em
+ {\ifdone
+ \hsize2.4em
+ \blue
+ \edef\theshowfontspecs
+ {\ifnum\hyphenchar\font=\rowcol hyph\else
+ \ifnum\skewchar \font=\rowcol skew\fi\fi}%
+ \tinyfont % after \edef, else wrong font analyzed
+ \doifnot\v!unknown{#2}{{\red\theshowfontspecs}}\hfill\number\rowcol
+ \vfill
+ \octnumber\rowcol\hfill\lchexnumbers\rowcol
+ \par
+ \fi}}
+ \stopoverlay}}}
+ \par}}
+ {\tf\basegrid[\c!nx=16,\c!ny=16,\c!dx=2.5,\c!dy=2.5,\c!unit=em]}
+ \stopoverlay
+ \nointerlineskip
+ \vskip2pt
+ % the \noexpand before \blank is needed for non etex
+ \edef\ascii {name: {\noexpand\black\fontname\font}}
+ \doifelse\v!unknown{#2}
+ {\edef\theshowfontspecs
+ {name: {\noexpand\black\fontname\font}}}
+ {\edef\theshowfontspecs
+ {name: {\noexpand\black\fontname\font }\noexpand\quad
+ encoding: {\noexpand\black\currentencoding}\noexpand\quad
+ mapping: {\noexpand\black\currentmapping }\noexpand\quad
+ handling: {\noexpand\black\fonthandling }}}%
+ \tf % also sets em
+ \hbox to 40em{\blue\hfill\tinyfont\setstrut\strut\theshowfontspecs}
+ \egroup
+ \ifinsidefloat\else\stopbaselinecorrection\fi
+ \egroup}
+
+\gdef\showfontstyle
+ {\dotripleempty\doshowfontstyle}
+
+\gdef\doshowfontstyle[#1][#2][#3]%
+ {\ifthirdargument
+ \bgroup
+ \raggedright
+ \switchtobodyfont[#1]
+ \def\dodocommando##1##2%
+ {\starttextrule{\tttf #1 ##1 ##2}
+ \nobreak \getvalue{##2}%
+ \dorecurse{255}
+ {\iffontchar\font\recurselevel\relax
+ \char\recurselevel\relax\space
+ \fi}
+ \par \nobreak
+ \stoptextrule}
+ \def\docommando##1%
+ {\getvalue{##1}\processcommacommand[#3]{\dodocommando{##1}}}
+ \processcommalist[#2]\docommando
+ \egroup
+ \else\ifsecondargument
+ \showfontstyle[#1][#2][\alternativetextlist]%
+ \doif{#2}{\c!mm}{\showfontstyle[#1][#2][\alternativemathlist]}%
+ \else
+ \showfontstyle[#1][\c!rm]\showfontstyle[#1][\c!ss]
+ \showfontstyle[#1][\c!tt]\showfontstyle[#1][\c!mm]
+ \fi\fi}
+
+\gdef\showligature#1%
+ {\hbox{\type{#1}\enspace\red\ruledhbox{\black#1}}}
+
+\gdef\showligatures[#1]%
+ {\ifx\starttabulate\undefined
+ \blank{\tttf \type {\showligatures} is only available in thr english interface}\blank
+ \else
+ \bgroup
+ \setupcolors[\c!state=\v!local]%
+ \def\show##1{\hbox{\red\ruledhbox{\black##1}}}%
+ \definefont[\s!dummy][#1]\dummy
+ \starttabulate[|*{9}{c|}]
+ \NC\type{ff}\NC\type{fi}\NC\type{fl}\NC\type{ffi}\NC\type{ffl}\NC
+ \type{``}\NC\type{''}\NC\type{--}\NC\type{---}\NC\NR
+ \NC\show{ff}\NC\show{fi}\NC\show{fl}\NC\show{ffi}\NC\show{ffl}\NC
+ \show{``}\NC\show{''}\NC\show{--}\NC\show{---}\NC\NR
+ \stoptabulate
+ \egroup
+ \fi}
+
+\gdef\showfontstrip
+ {\dosingleempty\doshowfontstrip}
+
+\gdef\doshowfontstrip[#1]%
+ {\ifx\starttabulate\undefined
+ \blank{\tttf \type {\showfontstrip} is only available in thr english interface}\blank
+ \else
+ \bgroup
+ \def\dofontstripa##1##2%
+ {\tttf\string##1}
+ \def\dofontstripb##1##2%
+ {\ruledhbox{\switchtobodyfont[#1]##1{##2}}}
+ \def\dofontstripc##1##2%
+ {\setbox\scratchbox\hbox{\switchtobodyfont[#1]##1{##2}}%
+ \tt\tfx\the\ht\scratchbox}%
+ \def\dofontstripd##1##2%
+ {\setbox\scratchbox\hbox{\switchtobodyfont[#1]##1{##2}}%
+ \tt\tfx\the\wd\scratchbox}%
+ \def\fontstrip##1##2##3%
+ {\NC##2\rm{##3}\NC
+ ##2\ss{##3}\NC
+ ##2\tt{##3}\NC
+ ##2\mathematics{##3}\NC
+ \tttf##1\NR}
+ \starttabulate[|c|c|c|c|c|]
+ \fontstrip\relax\dofontstripa\empty
+ \TB
+ \fontstrip\relax\dofontstripb{xxxx}
+ \fontstrip\relax\dofontstripb{12345}
+ \fontstrip\relax\dofontstripb{(Agw)}
+ \TB
+ \fontstrip{(x height)}\dofontstripc{x}
+ \fontstrip{(m width)}\dofontstripd{m}
+ \stoptabulate
+ \egroup
+ \fi}
+
+\ifx\databox\undefined \newbox\databox \fi
+
+\gdef\testminimalbaseline#1%
+ {\setbox\databox\ruledhbox{#1}%
+ \scratchdimen\ht\databox
+ \advance\scratchdimen\dp\databox
+ \scratchtoks{#1}%
+ \expanded
+ {\NC \ruledhbox{\the\scratchtoks}
+ \noexpand \NC ->
+ \noexpand \NC \the\scratchdimen
+ \noexpand \NC =
+ \noexpand \NC \the\ht\databox
+ \noexpand \NC +
+ \noexpand \NC \the\dp\databox
+ \noexpand \NC \ifdim\scratchdimen<\baselineskip <
+ \else\ifdim\scratchdimen=\baselineskip =
+ \else > \fi\fi
+ \noexpand \NC \the\baselineskip
+ \noexpand \NC (\ifdim\scratchdimen>\baselineskip not \fi ok)
+ \noexpand \NC \noexpand \NR }}
+
+\gdef\showminimalbaseline
+ {\ifx\starttabulate\undefined
+ \blank{\tttf \type {\showminimalbaseline} is only available in thr english interface}\blank
+ \else
+ \starttabulate[||T|T|T|T|T|T|T|T|T|]
+ \testminimalbaseline{\hbox to 1em{\hss\showstruts\strut\hss}}%
+ \testminimalbaseline{(/)}%
+ \testminimalbaseline{$\frac{1}{2}x^2_3$}
+ \stoptabulate
+ \fi}
+
+\gdef\showkerning#1%
+ {\bgroup
+ \let\MPfshowcommand\ruledhbox
+ \setMPtext\s!dummy{#1}%
+ \startMPcode draw textext(\MPstring\s!dummy);\stopMPcode
+ \egroup}
+
+\gdef\showcharratio
+ {\dowithnextboxcontent
+ {\switchtobodyfont[10pt]}%
+ {(\expanded{\withoutpt\the\nextboxht},%
+ \expanded{\withoutpt\the\nextboxdp})}%
+ \hbox}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-uni.tex b/Master/texmf-dist/tex/context/base/font-uni.tex
new file mode 100644
index 00000000000..09fcf22ea5f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-uni.tex
@@ -0,0 +1,535 @@
+%D \module
+%D [ file=font-uni,
+%D version=1999.10.10,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=\UNICODE\ Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Font Macros / UNICODE Support}
+
+%D I wrote this module when Wang Lei asked me how to use
+%D Chinese in \CONTEXT. From the samples he sent me, I deduced
+%D that some mixture of one and two byte encoding was used,
+%D which he confirmed. Since \TEX\ normally does not use the
+%D characters $>127$, so as long as the two byte characters
+%D have a first character with code $>127$, we can use active
+%D characters to handle them. In an optimistic mood, I called
+%D this module the \UNICODE\ font module. In the module that
+%D handles Chinese, we will see that some more interpretation
+%D is involved, which is why the macros handling those
+%D characters look ahead.
+
+\startmessages dutch library: fonts
+ 21: het is veiliger om (pdf)eTeX te gebruiken
+\stopmessages
+
+\startmessages english library: fonts
+ 21: using (pdf)eTeX is more save
+\stopmessages
+
+\startmessages german library: fonts
+ 21: Verwenden von (pdf)eTeX ist sicherer
+\stopmessages
+
+\startmessages italian library: fonts
+ 21: l'uso di (pdf)eTeX è più sicuro
+\stopmessages
+
+\startmessages norwegian library: fonts
+ 21: å bruke (pdf)eTeX er tryggere
+\stopmessages
+
+\unprotect
+
+%D \macros
+%D {handleunicodeflowglyph, uchar,
+%D handleunicodeglyph, insertunicodeglyph,
+%D unicodeposition, unicodeone, unicodetwo}
+%D
+%D For the moment \UNICODE\ support is rather primitive but
+%D nevertheless effective. The reference to \UNICODE\ is not
+%D entirely correct, since in many cases one will use \quote
+%D {older} mappings, but in principle, \UNICODE\ can be
+%D supported.
+%D
+%D We expect each character to come as two eight bit
+%D characters. Those doubles are handled by making all
+%D characters in the range $>127$ active, so that they can
+%D pick up the next one, and act upon both their values.
+%D Internally only numbers are used. A first implementation
+%D simply internally prefixed the second part of the \UNICODE\
+%D pair with \type {\string} or \type {\char}, but this was
+%D not that handy when it came to testing those values.
+%D Because in principle we are dealing with an encoding, the
+%D making active is handled in \type {enco-uni}.
+%D
+%D There are two commands to handle unicode characters:
+%D
+%D \starttyping
+%D \handleunicodeflowglyph{number}{character}
+%D \uchar{number}{number}
+%D \stoptyping
+%D
+%D The first one can be assigned to an active character, the
+%D second one can be used to directly access a glyph. Both
+%D command call \type {\handleunicodeglyph} that in turn
+%D calls \type {\insertunicodeglyph}. Both can be overruled
+%D in specialized modules. The low level command \type
+%D {\unicodeglyph} can best be left untouched, which is not
+%D so much a problem because there is a hook into this macro:
+%D \type {\unicodecharcommand}.
+%D
+%D In most cases one will redefine \type {\handleunicodeglyph}
+%D in such a way that it identifies special situations first,
+%D takes some actions next, calls \type {\insertunicodeglyph},
+%D if needed with \type {\unicodecharcommand} changed, and
+%D finally does some finishing:
+%D
+%D \starttyping
+%D \def\handleunicodeglyph
+%D {take actions based on \unicodeone-two-position cq. \nextglyph
+%D redefine \unicodecharcommand if needed
+%D expand \insertunicodeglyph
+%D take some final actions}
+%D \stoptyping
+
+\newcount\unicodeposition
+
+% \def\handleunicodeflowglyph#1#2%
+% {\def\dohandleunicodeflowglyph{\dodohandleunicodeflowglyphA{#1}{#2}}%
+% \futurelet\nextglyph\dohandleunicodeflowglyph}
+%
+% %D The first alternative (A) takes a character as second
+% %D argument and is used in the primary handler introduced
+% %D earlier.
+%
+% \def\dodohandleunicodeflowglyphA#1#2%
+% {\bgroup
+% \def\unicodeone{#1}%
+% \edef\unicodetwo{\number\expandafter`\string#2}% takes also <128 !
+% \unicodeposition=\unicodeone\unicodetwo\relax
+% \handleunicodeglyph
+% \egroup}
+%
+% %D The second alternative (B) takes numbers and is used in
+% %D the \type {\uchar} command. This command takes two
+% %D decimal numbers.
+%
+% \def\dodohandleunicodeflowglyphB#1#2%
+% {\bgroup
+% \def\unicodeone{#1}%
+% \def\unicodetwo{#2}%
+% \unicodeposition=\unicodeone\unicodetwo\relax
+% \handleunicodeglyph
+% \egroup}
+%
+% \unexpanded\def\uchar%
+% {\let\nextglyph\relax
+% \dodohandleunicodeflowglyphB}
+
+%D The multistep approach is needed to pick up the second
+%D token, since this token can have any value and any
+%D catcode.
+
+%\def\handleunicodeflowglyph#1%
+% {\bgroup
+% \edef\unicodeone{#1}%
+% \@EA\afterassignment\@EA\dohandleunicodeflowglyph
+% \@EA\chardef\@EA\nexttoken\@EA`\string}
+%
+%\def\dohandleunicodeflowglyph
+% {\futurelet\nextglyph\dodohandleunicodeflowglyph}
+%
+%\def\dodohandleunicodeflowglyph%
+% {\edef\unicodetwo{\the\nexttoken}%
+% \unicodeposition\unicodeone\unicodetwo\relax
+% \handleunicodeglyph
+% \egroup}
+
+% the \relax trick prevents eating up the space (needed for
+% korean
+
+\def\handleunicodeflowglyph#1#2%
+ {\bgroup
+ \edef\unicodeone{#1}%
+ \@EA\afterassignment\@EA\dohandleunicodeflowglyph
+ \@EA\chardef\@EA\nexttoken\@EA`\string#2\relax}
+
+\def\dohandleunicodeflowglyph\relax
+ {\futurelet\nextglyph\dodohandleunicodeflowglyph}
+
+\def\dodohandleunicodeflowglyph
+ {\edef\unicodetwo{\the\nexttoken}%
+ \unicodeposition\unicodeone\unicodetwo\relax
+ \handleunicodeglyph
+ \egroup}
+
+\unexpanded\def\uchar#1#2% use as standalone glyph
+ {\bgroup
+ \let\nextglyph\relax
+ \edef\unicodeone{#1}%
+ \edef\unicodetwo{#2}%
+% \unicodeposition=\unicodeone\unicodetwo\relax
+ \unicodeposition\unicodeone\unicodetwo\relax
+ \handleunicodeglyph
+ \egroup}
+
+%D In \XETEX, unicode support is straightforward, so we
+%D simply output a \type {\char} with a 16||bit number.
+%D
+%D \starttyping
+%D \def\uchar#1#2{\char\numexpr(#2+(#1*256))\relax}
+%D \stoptyping
+
+\beginXETEX \uchar
+
+ \unexpanded\def\uchar#1#2{\char\numexpr#2+#1*\@cclvi\relax}
+
+\endXETEX
+
+\def\dohandleucflowglyph
+% {\unicodeposition=\unicodeone\unicodetwo\relax
+ {\unicodeposition\unicodeone\unicodetwo\relax
+ \handleunicodeglyph
+ \egroup}
+
+\unexpanded\def\uc#1#2% used in tricky situations
+ {\bgroup
+ \edef\unicodeone{#1}%
+ \edef\unicodetwo{#2}%
+ \futurelet\nextglyph\dohandleucflowglyph}
+
+% Alternative, handles [char >127]{number} too.
+%
+% \def\handleunicodeflowglyph#1%
+% {\bgroup
+% \edef\unicodeone{#1}%
+% \futurelet\nexttoken\dohandleunicodeflowglyph}
+%
+% \def\dohandleunicodeflowglyph%
+% {\ifx\nexttoken\bgroup
+% \expandafter\dohandleunicodeflowglyphA
+% \else
+% \expandafter\dohandleunicodeflowglyphB
+% \fi}
+%
+% \def\dohandleunicodeflowglyphA#1%
+% {\chardef\nexttoken=#1\relax
+% \dodohandleunicodeflowglyph}
+%
+% \def\dohandleunicodeflowglyphB%
+% {\@EA\afterassignment\@EA\dodohandleunicodeflowglyph
+% \@EA\chardef\@EA\nexttoken\@EA=\@EA`\string}
+%
+% \def\dodohandleunicodeflowglyph%
+% {\futurelet\nextglyph\dododohandleunicodeflowglyph}
+%
+% \def\dododohandleunicodeflowglyph%
+% {\edef\unicodetwo{\the\nexttoken}%
+% \unicodeposition=\unicodeone\unicodetwo\relax
+% \handleunicodeglyph
+% \egroup}
+%
+% Can be used with (the less byte hungry alternative):
+%
+% sub unirecode
+% { my ($a,$b) = @_ ;
+% if ((ord($b)<0x80)&&($b !~ /[a-zA-Z0-9]/))
+% { print "$b" ; ++$recoded ;
+% #return "\\uc\{" . ord($a) . "\}\{". ord($b) . "\}" }
+% return "$a\{". ord($b) . "\}" }
+% else
+% { return "$a$b" } }
+
+\def\insertunicodeglyph
+ {\unicodeglyph\unicodeone\unicodetwo}
+
+\let\handleunicodeglyph=\insertunicodeglyph
+
+%D One can use the \type {\unicodeposition} in the macros
+%D that handle pre and post material.
+
+%D \macros
+%D {unicodestyle, unicodecharcommand}
+%D
+%D Each character pair will become one glyph. Because \TEX\
+%D cannot handle fonts with more that 256 characters, we use
+%D \TFM\ files for each range. The first character of the pair
+%D is appended to the name of a font, and the second is used to
+%D access the glyph in that font. This means that a particular
+%D font is split up in subfonts with names in the range:
+%D
+%D \starttyping
+%D <filename>80 ... <filename>ff
+%D \stoptyping
+%D
+%D The \type {<filename>} as well as the composed name are
+%D mapped ones. The next macros take care of this mapping.
+%D Let us assume that the next mapping has taken place,
+%D
+%D \starttyping
+%D \definefontsynonym [UnicodeRegular] [gbsong]
+%D \stoptyping
+%D
+%D Let us also assume that we are dealing with the range \type
+%D {b1}. Given that a font name results from:
+%D
+%D \starttyping
+%D \truefontname{\truefontname{UnicodeRegular}b1}
+%D \stoptyping
+%D
+%D we get \type {gbsongb1}. The outer \type {\truefontname}
+%D takes care of additional mapping, so when we say:
+%D
+%D \starttyping
+%D \definefontsynonym [gbsongb1] [gbsong-b1]
+%D \stoptyping
+%D
+%D the filename used will be \type {gbsong-b1}. From the next
+%D definition it will be clear that other fontshapes are also
+%D supported. The prefix \type {Unicode} is mapped!
+%D
+%D The command \type {\unicodecharcommand} can be used to
+%D handle special cases. At that moment \type {1em} is known.
+
+\def\unicodestyle
+ {\truefontname\s!Unicode\fontstylesuffix}
+
+\let\unicodecharcommand\firstofoneargument
+
+% \unexpanded\def\unicodeglyph#1#2% watch the double mapping
+% {\bgroup
+% \bodyfontsize=\unicodescale\bodyfontsize
+% \font\unicodefont=\truefontname{\truefontname\unicodestyle\lchexnumbers{#1}}
+% at \currentfontscale\bodyfontsize
+% \unicodestrut\unicodefont\unicodecharcommand{\char#2\relax}%
+% \egroup}
+
+\unexpanded\def\unicodeglyph#1#2% watch the double mapping
+ {\bgroup
+ \getvalue{@@\currentucharmapping\strippedcsname\uchar}{#1}{#2}%
+ \bodyfontsize\unicodescale\bodyfontsize
+ \font\unicodefont=\truefontname{\truefontname\unicodestyle\unicodeone}
+ at \currentfontscale\bodyfontsize
+ \unicodestrut\unicodefont\unicodecharcommand{\char\unicodetwo\relax}%
+ \egroup}
+
+%D \macros
+%D {currentucharmapping,defineucharmapping}
+%D
+%D A (plane,char) pair can be remapped using a uchar mapping
+%D function. The default mapping is to convert the plane to a
+%D lowercase hexadecimal number, and leave the number
+%D untouched. The current remapping is kept in a macro.
+
+\let\currentucharmapping\s!default
+
+\def\defineucharmapping#1%
+ {\setvalue{@@#1\strippedcsname\uchar}}
+
+\defineucharmapping{\s!default}#1#2%
+ {\edef\unicodeone{\lchexnumbers{#1}}\edef\unicodetwo{#2}}
+
+%D An example of a remapping is the following:
+%D
+%D \starttyping
+%D \defineucharmapping{GBK}#1#2%
+%D {\unicodeposition=#1
+%D \advance\unicodeposition -129
+%D \multiply\unicodeposition 190
+%D \advance\unicodeposition #2
+%D \advance\unicodeposition-\ifnum#2>127 65\else64\fi
+%D \dorepositionunicode}
+%D \stoptyping
+%D
+%D This maps the GBK vector onto a compact GBK one. The
+%D auxiliary macro is defined here as a goody.
+
+\def\dorepositionunicode
+ {\dosetdivision\unicodeposition{256}\scratchcounter
+ %\DoDiv\unicodeposition by256to\scratchcounter
+ \advance\scratchcounter \plusone
+ \edef\unicodeone{\ifnum\scratchcounter<10 0\fi\the\scratchcounter}%
+ \dosetmodulo\unicodeposition{256}\scratchcounter
+ %\DoMod\unicodeposition by256to\scratchcounter
+ \edef\unicodetwo{\the\scratchcounter}}
+
+%D \macros
+%D {setunicodestrut, setunicodescale, nextglyph,
+%D handleunicodeglyph, insertunicodeglyph}
+%D
+%D A careful analysis of the previous macros, learns that the
+%D process of mapping comes down to:
+%D
+%D \startitemize[packed,n]
+%D \item taking care of preceding material (and spacing)
+%D \item defining the font at \type {\currentfontscale} $\times$
+%D \type {\unicodescale} $\times$ \type {\bodyfontsize}
+%D \item inserting a \type {\unicodestrut}
+%D \item inserting the character (glyph)
+%D \item executing some actions afterwards
+%D \stopitemize
+%D
+%D The actions before and after placing the glyph, is up to
+%D the user supplied handler. This handler (\type
+%D {\handleunicodeglpyh}) must, at a certain moment, insert
+%D the glyph using \type {\insertunicodeglyph}
+
+\def\setunicodescale#1%
+ {\def\unicodescale{#1}}
+
+\def\dosetunicodestrut#1#2% height depth
+ {\def\unicodestrut
+ {\vrule
+ \!!width \zeropoint
+ \!!height#1\strutht
+ \!!depth #2\strutdp
+ \relax}}
+
+\def\setunicodestrut#1#2% height depth
+ {\ifdim#1\strutht>\zeropoint
+ \dosetunicodestrut{#1}{#2}%
+ \else\ifdim#1\strutdp>\zeropoint
+ \dosetunicodestrut{#1}{#2}%
+ \else
+ \let\unicodestrut\empty
+ \fi\fi}
+
+%D The additional scaling and strut default to:
+
+\setunicodescale{1}
+\setunicodestrut{1}{1}
+
+%D The actual code for the additional actions as well as
+%D specific spacing is handled outside these routines. The
+%D character after the two that are under treatment is
+%D available in \type {\nextglyph}.
+
+%D \macros
+%D {defineunicodefont, setupunicodefont}
+%D
+%D Apart from this rather low level implementation, we also
+%D provide a more user friendly alternative. Given that one
+%D has defined:
+%D
+%D \starttyping
+%D \defineunicodefont
+%D [SimChi] [SimplifiedChinese]
+%D [ \c!scale=0.85,
+%D \c!height=1.25,
+%D \c!depth=1.00,
+%D \c!interlinespaceinterlinie=yes,
+%D \c!conversion=\chinesenumber,
+%D \c!command=\handlechineseunicodeglyph]
+%D \stoptyping
+%D
+%D Together with:
+%D
+%D \starttyping
+%D \definefontsynonym [SimplifiedChineseRegular] [gbsong]
+%D \definefontsynonym [SimplifiedChineseSlanted] [gbsongsl]
+%D \stoptyping
+%D
+%D we can now switch to Simplified Chinese by saying \type
+%D {SimChi}. Some values can be changed afterwards with
+%D
+%D \starttyping
+%D \setupunicodefont[SimChi][...=...]
+%D \stoptyping
+%D
+%D Specific initializations can be assigned to \type
+%D {commands}.
+
+\beginTEX
+
+ \def\unicodeTEXwarning
+ {\writeline\showmessage\m!fonts{21}\empty\writeline
+ \global\let\unicodeTEXwarning\relax}
+
+\endTEX
+
+\beginETEX
+
+ \let\unicodeTEXwarning\relax
+
+\endETEX
+
+\def\defineunicodefont
+ {\dotripleempty\dodefineunicodefont}
+
+\def\dodefineunicodefont[#1][#2][#3]%
+ {\unicodeTEXwarning
+ \doifassignmentelse{#3}
+ {\setupunicodefont[#1][#3]}
+ {\doifelsenothing{#3}
+ {\setupunicodefont[#1][#3]}
+ {\copyparameters
+ [\??uc#1][\??uc#3]
+ [\c!height,\c!depth,\c!scale,\c!commands,
+ \c!interlinespace,\c!command,\c!conversion]}}%
+ \doifelsenothing{#2}
+ {\setvalue{#1}{[uc font #1 undefined]}}
+ {\setvalue{\??uc#1\c!file}{#2}%
+ \doifundefined{\??ff#2\s!Bold}
+ {\definefontsynonym[#2\s!Bold] [#2\s!Regular]%
+ \definefontsynonym[#2\s!Slanted] [#2\s!Regular]%
+ \definefontsynonym[#2\s!Italic] [#2\s!Regular]%
+ \definefontsynonym[#2\s!BoldSlanted][#2\s!Slanted]%
+ \definefontsynonym[#2\s!BoldItalic] [#2\s!Italic]}%
+ \unexpanded\setvalue{#1}{\enableunicodefont{#1}}}}
+
+\def\setupunicodefont
+ {\dodoubleempty\dosetupunicodefont}
+
+\def\dosetupunicodefont[#1][#2]% also predefines
+ {\doifundefined{\??uc#1\c!command}
+ {\copyparameters
+ [\??uc#1][\??uc\s!default]
+ [\c!height,\c!depth,\c!scale,\c!commands,
+ \c!interlinespace,\c!command,\c!conversion]}%
+ \getparameters[\??uc#1][#2]}
+
+\def\enableunicodefont#1%
+ {\definefontsynonym[\s!Unicode][\getvalue{\??uc#1\c!file}]%
+ \def\unicodescale {\getvalue{\??uc#1\c!scale}}%
+ \def\unicodeheight {\getvalue{\??uc#1\c!height}}%
+ \def\unicodedepth {\getvalue{\??uc#1\c!depth}}%
+ \def\unicodedigits {\getvalue{\??uc#1\c!conversion}}%
+ \def\handleunicodeglyph {\getvalue{\??uc#1\c!command}}%
+ \enableregime[unicode]% the following \relax's are realy needed
+ \doifvalue{\??uc#1\c!interlinespace}\v!yes\setupinterlinespace\relax
+ \getvalue{\??uc#1\c!commands}\relax}
+
+%D \macros
+%D {unicodedigits}
+%D
+%D For convenience we also predefine a number conversion
+%D macro:
+
+\let\unicodedigits\number
+
+%D Because we cannot be sure of the pressence of all font
+%D styles, we remap some by default.
+
+\definefontsynonym [\s!Unicode\s!Bold] [\s!Unicode\s!Regular]
+\definefontsynonym [\s!Unicode\s!Slanted] [\s!Unicode\s!Regular]
+\definefontsynonym [\s!Unicode\s!Italic] [\s!Unicode\s!Regular]
+\definefontsynonym [\s!Unicode\s!BoldSlanted] [\s!Unicode\s!Slanted]
+\definefontsynonym [\s!Unicode\s!BoldItalic] [\s!Unicode\s!Italic]
+
+\setupunicodefont
+ [\s!default]
+ [\c!height=1,
+ \c!depth=1,
+ \c!scale=1,
+ \c!interlinespace=\v!yes,
+ \c!command=\insertunicodeglyph,
+ \c!conversion=\number]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/font-unk.tex b/Master/texmf-dist/tex/context/base/font-unk.tex
new file mode 100644
index 00000000000..4e450ae74e7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/font-unk.tex
@@ -0,0 +1,185 @@
+%D \module
+%D [ file=font-unk,
+%D version=1998.09.10,
+%D title=\CONTEXT\ Font Macros,
+%D subtitle=Unknown Defaults,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is rather important, because it enables us to
+%D define and call for not yet defined fonts in a way
+%D completely independant of real font names. First we map
+%D some meaningful names onto unknown filenames.
+
+\definefontsynonym [Serif] [unknown]
+\definefontsynonym [SerifBold] [unknown]
+\definefontsynonym [SerifItalic] [unknown]
+\definefontsynonym [SerifSlanted] [unknown]
+\definefontsynonym [SerifBoldItalic] [unknown]
+\definefontsynonym [SerifBoldSlanted] [unknown]
+\definefontsynonym [SerifCaps] [unknown]
+
+\definefontsynonym [Sans] [unknown]
+\definefontsynonym [SansBold] [unknown]
+\definefontsynonym [SansItalic] [unknown]
+\definefontsynonym [SansSlanted] [unknown]
+\definefontsynonym [SansBoldItalic] [unknown]
+\definefontsynonym [SansBoldSlanted] [unknown]
+\definefontsynonym [SansCaps] [unknown]
+
+\definefontsynonym [Mono] [unknown]
+\definefontsynonym [MonoBold] [unknown]
+\definefontsynonym [MonoItalic] [unknown]
+\definefontsynonym [MonoSlanted] [unknown]
+\definefontsynonym [MonoBoldItalic] [unknown]
+\definefontsynonym [MonoBoldSlanted] [unknown]
+\definefontsynonym [MonoCaps] [unknown]
+
+\definefontsynonym [MathRoman] [unknown]
+\definefontsynonym [MathExtension] [unknown]
+\definefontsynonym [MathItalic] [unknown]
+\definefontsynonym [MathSymbol] [unknown]
+
+\definefontsynonym [MathNoName] [unknown]
+
+\definefontsynonym [MathAlpha] [unknown]
+\definefontsynonym [MathBeta] [unknown]
+\definefontsynonym [MathGamma] [unknown]
+\definefontsynonym [MathDelta] [unknown]
+
+\definefontsynonym [MathRomanBold] [MathRoman]
+\definefontsynonym [MathExtensionBold] [MathExtension]
+\definefontsynonym [MathItalicBold] [MathItalic]
+\definefontsynonym [MathSymbolBold] [MathSymbol]
+\definefontsynonym [MathAlphaBold] [MathAlpha]
+\definefontsynonym [MathBetaBold] [MathBeta]
+\definefontsynonym [MathGammaBold] [MathGamma]
+\definefontsynonym [MathDeltaBold] [MathDelta]
+
+\definefontsynonym [Handwriting] [unknown]
+\definefontsynonym [Calligraphic] [unknown]
+
+%D This permit us to define (use) fonts that refer to the default
+%D style (so, Bold may expand to SansBold or SerifBold, depending
+%D on the default style in the typeface).
+
+% \def\setfontsynonym[#1]#2[#3]{\setvalue{\??ff\fontclass#1}{#3}}
+%
+% \setfontsynonym[\s!Normal] [\fontstringD]
+% \setfontsynonym[\s!Bold] [\fontstringD\s!Bold]
+% \setfontsynonym[\s!Italic] [\fontstringD\s!Italic]
+% \setfontsynonym[\s!Slanted] [\fontstringD\s!Slanted]
+% \setfontsynonym[\s!BoldItalic] [\fontstringD\s!BoldItalic]
+% \setfontsynonym[\s!BoldSlanted][\fontstringD\s!BoldSlanted]
+% \setfontsynonym[\s!Caps] [\fontstringD\s!Caps]
+
+\definefontsynonym[\s!Normal] [\noexpand\fontstringD]
+\definefontsynonym[\s!Bold] [\noexpand\fontstringD\noexpand\s!Bold]
+\definefontsynonym[\s!Italic] [\noexpand\fontstringD\noexpand\s!Italic]
+\definefontsynonym[\s!Slanted] [\noexpand\fontstringD\noexpand\s!Slanted]
+\definefontsynonym[\s!BoldItalic] [\noexpand\fontstringD\noexpand\s!BoldItalic]
+\definefontsynonym[\s!BoldSlanted][\noexpand\fontstringD\noexpand\s!BoldSlanted]
+\definefontsynonym[\s!Caps] [\noexpand\fontstringD\noexpand\s!Caps]
+
+%D Also handy:
+
+\definefontsynonym [Regular] [Serif]
+\definefontsynonym [RegularBold] [SerifBold]
+\definefontsynonym [RegularItalic] [SerifItalic]
+\definefontsynonym [RegularSlanted] [SerifSlanted]
+\definefontsynonym [RegularBoldItalic] [SerifBoldItalic]
+\definefontsynonym [RegularBoldSlanted] [SerifBoldSlanted]
+\definefontsynonym [RegularCaps] [SerifCaps]
+
+\definefontsynonym [Support] [Sans]
+\definefontsynonym [SupportBold] [SansBold]
+\definefontsynonym [SupportItalic] [SansItalic]
+\definefontsynonym [SupportSlanted] [SansSlanted]
+\definefontsynonym [SupportBoldItalic] [SansBoldItalic]
+\definefontsynonym [SupportBoldSlanted] [SansBoldSlanted]
+\definefontsynonym [SupportCaps] [SansCaps]
+
+%D Well, not that good an idea:
+
+\definefontsynonym [Roman] [Serif]
+\definefontsynonym [RomanBold] [SerifBold]
+\definefontsynonym [RomanItalic] [SerifItalic]
+\definefontsynonym [RomanSlanted] [SerifSlanted]
+\definefontsynonym [RomanBoldItalic] [SerifBoldItalic]
+\definefontsynonym [RomanBoldSlanted] [SerifBoldSlanted]
+\definefontsynonym [RomanCaps] [SerifCaps]
+
+\definefontsynonym [Type] [Mono]
+\definefontsynonym [TypeBold] [MonoBold]
+\definefontsynonym [TypeItalic] [MonoItalic]
+\definefontsynonym [TypeSlanted] [MonoSlanted]
+\definefontsynonym [TypeBoldItalic] [MonoBoldItalic]
+\definefontsynonym [TypeBoldSlanted] [MonoBoldSlanted]
+\definefontsynonym [TypeCaps] [MonoCaps]
+
+%D Next we define roman, sans and monospaced font sets.
+
+\definebodyfont [default] [rm]
+ [tf=Serif sa 1,
+ bf=SerifBold sa 1,
+ it=SerifItalic sa 1,
+ sl=SerifSlanted sa 1,
+ bi=SerifBoldItalic sa 1,
+ bs=SerifBoldSlanted sa 1,
+ sc=SerifCaps sa 1]
+
+\definebodyfont [default] [ss]
+ [tf=Sans sa 1,
+ bf=SansBold sa 1,
+ it=SansItalic sa 1,
+ sl=SansSlanted sa 1,
+ bi=SansBoldItalic sa 1,
+ bs=SansBoldSlanted sa 1,
+ sc=SansCaps sa 1]
+
+\definebodyfont [default] [tt]
+ [tf=Mono sa 1,
+ bf=MonoBold sa 1,
+ it=MonoItalic sa 1,
+ sl=MonoSlanted sa 1,
+ bi=MonoBoldItalic sa 1,
+ bs=MonoBoldSlanted sa 1,
+ sc=MonoCaps sa 1]
+
+\definebodyfont [default] [mm]
+ [mr=MathRoman mo 1,
+ ex=MathExtension mo 1,
+ mi=MathItalic mo 1,
+ sy=MathSymbol mo 1,
+ nn=MathNoName mo 1,
+ ma=MathAlpha mo 1,
+ mb=MathBeta mo 1,
+ mc=MathGamma mo 1,
+ md=MathDelta mo 1]
+
+\definebodyfont [bfmath] [mm]
+ [mrbf=MathRomanBold mo 1,
+ exbf=MathExtensionBold mo 1,
+ mibf=MathItalicBold mo 1,
+ sybf=MathSymbolBold mo 1,
+ mabf=MathAlphaBold mo 1,
+ mbbf=MathBetaBold mo 1,
+ mcbf=MathGammaBold mo 1,
+ mdbf=MathDeltaBold mo 1]
+
+\definebodyfont [default] [hw]
+ [tf=Handwriting sa 1]
+
+\definebodyfont [default] [cg]
+ [tf=Calligraphy sa 1]
+
+%D These definitions come into action as soon as names are
+%D mapped onto real file names (or names that themselves are
+%D mapped).
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/hand-def.tex b/Master/texmf-dist/tex/context/base/hand-def.tex
new file mode 100644
index 00000000000..591370cda85
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/hand-def.tex
@@ -0,0 +1,577 @@
+%D \module
+%D [ file=hand-def, % was enco-pro
+%D version=2000.29.09,
+%D title=\CONTEXT\ Handling Macros,
+%D subtitle=Default Protruding Factors,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is an experimental definition file. The protruding
+%D values we use here are those found from \THANH's thesis.
+
+\startfonthandling [pure]
+
+ \defineprotrudefactor , 0 1
+ \defineprotrudefactor . 0 1
+ \defineprotrudefactor : 0 1
+ \defineprotrudefactor ; 0 1
+ \defineprotrudefactor - 0 1
+
+ \defineprotrudefactor hyphen 0 1
+ \defineprotrudefactor endash 0 .5
+ \defineprotrudefactor emdash 0 .33 % .5
+
+\stopfonthandling
+
+\startfonthandling [punctuation]
+
+ \defineprotrudefactor ! 0 .2
+ \defineprotrudefactor ' 0 .7
+ \defineprotrudefactor ` .7 0
+ \defineprotrudefactor ( .05 0
+ \defineprotrudefactor ) 0 .05
+ \defineprotrudefactor [ .05 0
+ \defineprotrudefactor ] 0 .05
+ \defineprotrudefactor , 0 .7
+ \defineprotrudefactor - 0 .7
+ \defineprotrudefactor . 0 .7
+ \defineprotrudefactor : 0 .5
+ \defineprotrudefactor ; 0 .5
+
+ \defineprotrudefactor rightupperninequote 0 .5
+ \defineprotrudefactor leftupperninequote .5 0
+ \defineprotrudefactor endash 0 .3
+ \defineprotrudefactor emdash 0 .2
+
+ \defineprotrudefactor hyphen 0 .7
+
+\stopfonthandling
+
+\startfonthandling [alpha]
+
+ \defineprotrudefactor A .05 .05
+ \defineprotrudefactor F 0 .05
+ \defineprotrudefactor J .05 0
+ \defineprotrudefactor K 0 .05
+ \defineprotrudefactor L 0 .05
+ \defineprotrudefactor T .05 .05
+ \defineprotrudefactor V .05 .05
+ \defineprotrudefactor W .05 .05
+ \defineprotrudefactor X .05 .05
+ \defineprotrudefactor Y .05 .05
+
+ \defineprotrudefactor k 0 .05
+ \defineprotrudefactor r 0 .05
+ \defineprotrudefactor t 0 .05
+ \defineprotrudefactor v .05 .05
+ \defineprotrudefactor w .05 .05
+ \defineprotrudefactor x .05 .05
+ \defineprotrudefactor y .05 .05
+
+\stopfonthandling
+
+% ogoneks may need another treatment
+
+\startfonthandling [extended]
+
+ \inherithandling Acircumflex A
+ \inherithandling acircumflex a
+ \inherithandling Ccircumflex C
+ \inherithandling ccircumflex c
+ \inherithandling Ecircumflex E
+ \inherithandling ecircumflex e
+ \inherithandling Gcircumflex G
+ \inherithandling gcircumflex g
+ \inherithandling Hcircumflex H
+ \inherithandling hcircumflex h
+ \inherithandling Icircumflex I
+ \inherithandling icircumflex i
+ \inherithandling Jcircumflex J
+ \inherithandling jcircumflex j
+ \inherithandling Ocircumflex O
+ \inherithandling ocircumflex o
+ \inherithandling Scircumflex S
+ \inherithandling scircumflex s
+ \inherithandling Ucircumflex U
+ \inherithandling ucircumflex u
+ \inherithandling Wcircumflex W
+ \inherithandling wcircumflex w
+ \inherithandling Ycircumflex Y
+ \inherithandling ycircumflex y
+
+ \inherithandling Agrave A
+ \inherithandling agrave a
+ \inherithandling Egrave E
+ \inherithandling egrave e
+ \inherithandling Igrave I
+ \inherithandling igrave i
+ \inherithandling Ograve O
+ \inherithandling ograve o
+ \inherithandling Ugrave U
+ \inherithandling ugrave u
+ \inherithandling Ygrave Y
+ \inherithandling ygrave y
+
+ \inherithandling Atilde A
+ \inherithandling atilde a
+ \inherithandling Itilde I
+ \inherithandling itilde i
+ \inherithandling Ntilde N
+ \inherithandling ntilde n
+ \inherithandling Otilde O
+ \inherithandling otilde o
+ \inherithandling Utilde U
+ \inherithandling utilde u
+
+ \inherithandling Adiaeresis A
+ \inherithandling adiaeresis a
+ \inherithandling Ediaeresis E
+ \inherithandling ediaeresis e
+ \inherithandling Idiaeresis I
+ \inherithandling idiaeresis i
+ \inherithandling Odiaeresis O
+ \inherithandling odiaeresis o
+ \inherithandling Udiaeresis U
+ \inherithandling udiaeresis u
+ \inherithandling Ydiaeresis Y
+ \inherithandling ydiaeresis y
+
+ \inherithandling Aacute A
+ \inherithandling aacute a
+ \inherithandling Cacute C
+ \inherithandling cacute c
+ \inherithandling Eacute E
+ \inherithandling eacute e
+ \inherithandling Iacute I
+ \inherithandling iacute i
+ \inherithandling Lacute L
+ \inherithandling lacute l
+ \inherithandling Nacute N
+ \inherithandling nacute n
+ \inherithandling Oacute O
+ \inherithandling oacute o
+ \inherithandling Racute R
+ \inherithandling racute r
+ \inherithandling Sacute s
+ \inherithandling sacute s
+ \inherithandling Uacute U
+ \inherithandling uacute u
+ \inherithandling Yacute Y
+ \inherithandling yacute y
+ \inherithandling Zacute Z
+ \inherithandling zacute z
+
+ \inherithandling Dstroke D
+ \inherithandling dstroke d
+ \inherithandling Hstroke H
+ \inherithandling hstroke h
+ \inherithandling Tstroke T
+ \inherithandling tstroke t
+
+ \inherithandling Cdotaccent C
+ \inherithandling cdotaccent c
+ \inherithandling Edotaccent E
+ \inherithandling edotaccent e
+ \inherithandling Gdotaccent G
+ \inherithandling gdotaccent g
+ \inherithandling Idotaccent I
+ \inherithandling idotaccent i
+ \inherithandling Zdotaccent Z
+ \inherithandling zdotaccent z
+
+ \inherithandling Amacron A
+ \inherithandling amacron a
+ \inherithandling Emacron E
+ \inherithandling emacron e
+ \inherithandling Imacron I
+ \inherithandling imacron i
+ \inherithandling Omacron O
+ \inherithandling omacron o
+ \inherithandling Umacron U
+ \inherithandling umacron u
+
+ \inherithandling Ccedilla C
+ \inherithandling ccedilla c
+ \inherithandling Kcedilla K
+ \inherithandling kcedilla k
+ \inherithandling Lcedilla L
+ \inherithandling lcedilla l
+ \inherithandling Ncedilla N
+ \inherithandling ncedilla n
+ \inherithandling Rcedilla R
+ \inherithandling rcedilla r
+ \inherithandling Scedilla S
+ \inherithandling scedilla s
+ \inherithandling Tcedilla T
+ \inherithandling tcedilla t
+
+ \inherithandling Ohungarumlaut O
+ \inherithandling ohungarumlaut o
+ \inherithandling Uhungarumlaut U
+ \inherithandling uhungarumlaut u
+
+ \inherithandling Aogonek A
+ \inherithandling aogonek a
+ \inherithandling Eogonek E
+ \inherithandling eogonek e
+ \inherithandling Iogonek I
+ \inherithandling iogonek i
+ \inherithandling Uogonek U
+ \inherithandling uogonek u
+
+ \inherithandling Aring A
+ \inherithandling aring a
+ \inherithandling Uring U
+ \inherithandling uring u
+
+ \inherithandling Abreve A
+ \inherithandling abreve a
+ \inherithandling Ebreve E
+ \inherithandling ebreve e
+ \inherithandling Gbreve G
+ \inherithandling gbreve g
+ \inherithandling Ibreve I
+ \inherithandling ibreve i
+ \inherithandling Obreve O
+ \inherithandling obreve o
+ \inherithandling Ubreve U
+ \inherithandling ubreve u
+
+ \inherithandling Ccaron C
+ \inherithandling ccaron c
+ \inherithandling Dcaron D
+ \inherithandling dcaron d
+ \inherithandling Ecaron E
+ \inherithandling ecaron e
+ \inherithandling Lcaron L
+ \inherithandling lcaron l
+ \inherithandling Ncaron N
+ \inherithandling ncaron n
+ \inherithandling Rcaron R
+ \inherithandling rcaron r
+ \inherithandling Scaron S
+ \inherithandling scaron s
+ \inherithandling Tcaron T
+ \inherithandling tcaron t
+ \inherithandling Ycaron Y
+ \inherithandling ycaron y
+ \inherithandling Zcaron Z
+ \inherithandling zcaron z
+
+ \inherithandling AEligature E
+ \inherithandling aeligature e
+ \inherithandling Lstroke I
+ \inherithandling lstroke o
+ \inherithandling Ostroke O
+ \inherithandling ostroke o
+ \inherithandling OEligature O
+ \inherithandling oeligature o
+
+ \inherithandling Ssharp S
+ \inherithandling ssharp s
+ \inherithandling IJligature J
+ \inherithandling ijligature j
+
+ \inherithandling aumlaut a
+ \inherithandling eumlaut e
+ \inherithandling iumlaut i
+ \inherithandling oumlaut o
+ \inherithandling uumlaut u
+
+ \inherithandling Aumlaut A
+ \inherithandling Eumlaut E
+ \inherithandling Iumlaut I
+ \inherithandling Oumlaut O
+ \inherithandling Uumlaut U
+
+ \inherithandling Lslash L
+ \inherithandling lslash l
+ \inherithandling Dslash D
+ \inherithandling dslash d
+ \inherithandling Oslash O
+ \inherithandling oslash o
+
+ \inherithandling Eszett S
+ \inherithandling eszett s
+
+ \inherithandling Thorn P
+ \inherithandling thorn p
+
+ % vietnamese
+
+ \inherithandling Ahook A
+ \inherithandling ahook a
+ \inherithandling Ehook E
+ \inherithandling ehook e
+ \inherithandling Ihook I
+ \inherithandling ihook i
+ \inherithandling Ohook O
+ \inherithandling ohook o
+ \inherithandling Uhook U
+ \inherithandling uhook u
+ \inherithandling Yhook Y
+ \inherithandling yhook y
+
+ \inherithandling Acircumflexgrave A
+ \inherithandling Acircumflexacute A
+ \inherithandling Acircumflextilde A
+ \inherithandling Acircumflexhook A
+ \inherithandling acircumflexgrave a
+ \inherithandling acircumflexacute a
+ \inherithandling acircumflextilde a
+ \inherithandling acircumflexhook a
+ \inherithandling Ecircumflexgrave E
+ \inherithandling Ecircumflexacute E
+ \inherithandling Ecircumflextilde E
+ \inherithandling Ecircumflexhook E
+ \inherithandling ecircumflexgrave e
+ \inherithandling ecircumflexacute e
+ \inherithandling ecircumflextilde e
+ \inherithandling ecircumflexhook e
+ \inherithandling Ocircumflexgrave O
+ \inherithandling Ocircumflexacute O
+ \inherithandling Ocircumflextilde O
+ \inherithandling Ocircumflexhook O
+ \inherithandling ocircumflexgrave o
+ \inherithandling ocircumflexacute o
+ \inherithandling ocircumflextilde o
+ \inherithandling ocircumflexhook o
+
+ \inherithandling Abrevegrave A
+ \inherithandling Abreveacute A
+ \inherithandling Abrevetilde A
+ \inherithandling Abrevehook A
+ \inherithandling abrevegrave a
+ \inherithandling abreveacute a
+ \inherithandling abrevetilde a
+ \inherithandling abrevehook a
+
+ \inherithandling Adotbelow A
+ \inherithandling adotbelow a
+ \inherithandling Edotbelow E
+ \inherithandling edotbelow e
+ \inherithandling Idotbelow I
+ \inherithandling idotbelow i
+ \inherithandling Odotbelow O
+ \inherithandling odotbelow o
+ \inherithandling Udotbelow U
+ \inherithandling udotbelow u
+ \inherithandling Ydotbelow Y
+ \inherithandling ydotbelow y
+
+ \inherithandling Ohorndotbelow O
+ \inherithandling ohorndotbelow o
+ \inherithandling Uhorndotbelow U
+ \inherithandling uhorndotbelow u
+
+ \inherithandling Acircumflexdotbelow A
+ \inherithandling acircumflexdotbelow a
+ \inherithandling Ecircumflexdotbelow E
+ \inherithandling ecircumflexdotbelow e
+ \inherithandling Ocircumflexdotbelow O
+ \inherithandling ocircumflexdotbelow o
+
+ \inherithandling Abrevedotbelow A
+ \inherithandling abrevedotbelow a
+
+ \inherithandling Ohorn O
+ \inherithandling Ohorngrave O
+ \inherithandling Ohornacute O
+ \inherithandling Ohorntilde O
+ \inherithandling Ohornhook O
+ \inherithandling ohorn o
+ \inherithandling ohorngrave o
+ \inherithandling ohornacute o
+ \inherithandling ohorntilde o
+ \inherithandling ohornhook o
+ \inherithandling Uhorn U
+ \inherithandling Uhorngrave U
+ \inherithandling Uhornacute U
+ \inherithandling Uhorntilde U
+ \inherithandling Uhornhook U
+ \inherithandling uhorn u
+ \inherithandling uhorngrave u
+ \inherithandling uhornacute u
+ \inherithandling uhorntilde u
+ \inherithandling uhornhook u
+
+ \inherithandling Ytilde Y
+ \inherithandling ytilde y
+ \inherithandling Etilde E
+ \inherithandling etilde e
+
+\stopfonthandling
+
+\startfonthandling [hz]
+
+ \defineadjustfactor A .5
+ \defineadjustfactor B .7
+ \defineadjustfactor C .7
+ \defineadjustfactor D .5
+ \defineadjustfactor E .7
+ \defineadjustfactor F .7
+ \defineadjustfactor G .5
+ \defineadjustfactor H .7
+ \defineadjustfactor K .7
+ \defineadjustfactor M .7
+ \defineadjustfactor N .7
+ \defineadjustfactor O .5
+ \defineadjustfactor P .7
+ \defineadjustfactor Q .5
+ \defineadjustfactor R .7
+ \defineadjustfactor S .7
+ \defineadjustfactor U .7
+ \defineadjustfactor W .7
+ \defineadjustfactor Z .7
+
+ \defineadjustfactor a .7
+ \defineadjustfactor b .7
+ \defineadjustfactor c .7
+ \defineadjustfactor d .7
+ \defineadjustfactor e .7
+ \defineadjustfactor g .7
+ \defineadjustfactor h .7
+ \defineadjustfactor k .7
+ \defineadjustfactor m .7
+ \defineadjustfactor n .7
+ \defineadjustfactor o .7
+ \defineadjustfactor p .7
+ \defineadjustfactor q .7
+ \defineadjustfactor s .7
+ \defineadjustfactor u .7
+ \defineadjustfactor w .7
+ \defineadjustfactor z .7
+
+ \defineadjustfactor 2 .7
+ \defineadjustfactor 3 .7
+ \defineadjustfactor 6 .7
+ \defineadjustfactor 8 .7
+ \defineadjustfactor 9 .7
+
+% \defineadjustfactor hyphen ?
+% \defineadjustfactor endash ?
+% \defineadjustfactor emdash ?
+
+\stopfonthandling
+
+% no ligs other than fi fl etc, no --- and ''
+
+\startfonthandling[noligs]
+
+ \settagcode - {\notagcode}
+ \settagcode ' {\notagcode}
+ \settagcode ` {\notagcode}
+ \settagcode ? {\notagcode}
+ \settagcode ! {\notagcode}
+
+\stopfonthandling
+
+% \startfonthandling[noligs]
+% \dostepwiserecurse{0}{255}{1}{\expanded{\settagcode \recurselevel\space\notagcode\space}}
+% \stopfonthandling
+
+% \definefonthandling [noligs] [noligs] [type=tag]
+% \setupfontsynonym[Serif][handling=noligs]
+% \definefont[test][Serif at 12.34pt]
+%
+% {``fi--ffl---ffi'' \test ``fi--ffl---ffi''}
+
+\unprotect
+
+% beware: extended extends the preceding vector (both protruding and
+% adjusting) but as long as the normal ascii characters are not set
+% beforehand, they default to normal
+
+% protruding variants -- slanted/italic is yet incomplete
+
+\definefonthandling [pure] [pure] [\c!type=\v!hanging]
+\definefonthandling [purebold] [pure] [\c!type=\v!hanging]
+\definefonthandling [pureslanted] [pure] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [pureitalic] [pure] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [pureboldslanted] [pure] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [purebolditalic] [pure] [\c!type=\v!hanging,\c!right=1.5]
+
+\definefonthandling [normal] [punctuation,alpha,extended] [\c!type=\v!hanging]
+\definefonthandling [normalbold] [punctuation,alpha,extended] [\c!type=\v!hanging]
+\definefonthandling [normalslanted] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [normalitalic] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [normalboldslanted] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [normalbolditalic] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+
+% for old times sake
+
+\definefonthandling [bold] [punctuation,alpha,extended] [\c!type=\v!hanging]
+\definefonthandling [slanted] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [italic] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [boldslanted] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+\definefonthandling [bolditalic] [punctuation,alpha,extended] [\c!type=\v!hanging,\c!right=1.5]
+
+% hz variants
+
+\definefonthandling [hz] [hz,extended] [\c!type=\v!hz] % min=20 max=20 step=5
+
+% combined variants
+
+\definefonthandling [quality] [hz,pure]
+\definefonthandling [highquality] [hz,normal]
+
+% noligs (xml) : \definefonthandling [default] [noligs]
+
+\definefonthandling [noligs] [noligs] [\c!type=tag]
+
+% experimental values !
+%
+% \definefontsynonym[myfont][Serif][handling=prespacing]
+% \definefont[whatever][myfont sa 1]
+% \setupalign[spacing]
+%
+% \whatever look at this: we now have a proper spacing feature and, hurray,
+% get rid of active punctuation!
+
+\startfonthandling [flexspacing]
+
+ \definespacefactor : 0 1.25 .25 .25
+
+ \definespacefactor , 0 1 .25 .25
+ \inheritspacefactor ; ,
+
+ \definespacefactor . 0 1.5 .25 .25
+ \inheritspacefactor ! .
+ \inheritspacefactor ? .
+
+\stopfonthandling
+
+\definefonthandling[flexspacing][flexspacing][\c!type=\v!spacing]
+
+\startfonthandling [prespacing] % better name needed
+
+ \definespacefactor : .25 .25 0 0
+ \inheritspacefactor ; :
+ \inheritspacefactor ! :
+ \inheritspacefactor ? :
+
+\stopfonthandling
+
+\definefonthandling[prespacing][prespacing][\c!type=\v!spacing] % factor=.5
+
+% A special case of guillemots, beware: when used ungrouped,
+% it overloads all successive (current) encoding vector
+% instances! Will be obsolete soon.
+
+\startfonthandling [glm]
+
+ \overloadcharacter guilsingleleft {\defaultcharacter\guilsingleleft }
+ \overloadcharacter guilsingleright {\defaultcharacter\guilsingleright}
+ \overloadcharacter leftguillemot {\defaultcharacter\leftguillemot }
+ \overloadcharacter rightguillemot {\defaultcharacter\rightguillemot }
+
+\stopfonthandling
+
+\definefonthandling [glm] [glm]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/hand-ini.tex b/Master/texmf-dist/tex/context/base/hand-ini.tex
new file mode 100644
index 00000000000..588d635a969
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/hand-ini.tex
@@ -0,0 +1,670 @@
+%D \module
+%D [ file=hand-ini, % moved from enco-ini / pro
+%D version=2000.12.27, % 1998.12.03,
+%D title=\CONTEXT\ Handling Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Handling Macros (ini)}
+
+% \pushmacro -> dedicated fast one
+
+%D {\em This module is experimental and implements font
+%D specific features, like hanging punctuation.}
+
+\unprotect
+
+\startmessages dutch library: handlings
+ title: handling
+ 1: font afhandeling --
+ 2: font afhandeling -- wordt geladen
+ 3: onbekende font afhandeling --
+\stopmessages
+
+\startmessages english library: handlings
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\startmessages german library: handlings % to do
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\startmessages czech library: handlings % to do
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\startmessages italian library: handlings % to do
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\startmessages norwegian library: handlings % to do
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\startmessages romanian library: handlings % to do
+ title: handling
+ 1: font handling --
+ 2: font handling -- is loaded
+ 3: unknown font handling --
+\stopmessages
+
+\newif\iftracefonthandling % \tracefonthandlingtrue
+
+\newif\ifskiphandlingdef \skiphandlingdeffalse
+
+\newtoks\everyenablefonthandling
+
+% much in common with hz/protruding defs
+% todo: fix others
+
+\let\normalchar\char % also done in enco-ini
+
+\def\dosetsomehandling#1#2#3 #4 % no define since directly set
+ {\ifskiphandlingdef \else
+ \doifnumberelse{\string#2}
+ {#1{#2#3}{#4}}
+ {\doifelsenothing{#3}
+ {#1{`#2}{#4}}
+ {\let\char\empty
+ \doifnumberelse{\csname#2#3\endcsname}{#1{\csname#2#3\endcsname}{#4}}\donothing
+ \let\char\normalchar}}%
+ \fi}
+
+\def\dosetpairhandling#1#2#3 #4 #5 % no define since directly set
+ {\ifskiphandlingdef \else
+ \doifnumberelse{\string#2}
+ {#1{#2#3}{#4}{#5}}
+ {\doifelsenothing{#3}
+ {#1{`#2}{#4}{#5}}
+ {\let\char\empty
+ \doifnumberelse{\csname#2#3\endcsname}{#1{\csname#2#3\endcsname}{#4}{#5}}\donothing
+ \let\char\normalchar}}%
+ \fi}
+
+% \def\dosettriplethandling#1#2#3 #4 #5 #6 % no define since directly set
+% {\ifskiphandlingdef \else
+% \doifnumberelse{\string#2}
+% {#1{#2#3}{#4}{#5}{#6}}
+% {\doifelsenothing{#3}
+% {#1{`#2}{#4}{#5}{#6}}
+% {\let\char\empty
+% \doifnumberelse{\csname#2#3\endcsname}{#1{\csname#2#3\endcsname}{#4}{#5}{#6}}\donothing
+% \let\char\normalchar}}%
+% \fi}
+
+\def\dosetquartethandling#1#2#3 #4 #5 #6 #7 % no define since directly set
+ {\ifskiphandlingdef \else
+ \doifnumberelse{\string#2}
+ {#1{#2#3}{#4}{#5}{#6}{#7}}
+ {\doifelsenothing{#3}
+ {#1{`#2}{#4}{#5}{#6}{#7}}
+ {\let\char\empty
+ \doifnumberelse{\csname#2#3\endcsname}{#1{\csname#2#3\endcsname}{#4}{#5}{#6}{#7}}\donothing
+ \let\char\normalchar}}%
+ \fi}
+
+
+% \def\doinhsomehandling#1#2 #3 %
+% {\ifskiphandlingdef \else
+% \let\char\empty
+% \doifnumberelse{\csname#2\endcsname}{#1{\csname#2\endcsname}{`#3}}\donothing
+% \let\char\normalchar
+% \fi}
+
+\def\doinhsomehandling#1#2#3 #4 % to be checked
+ {\ifskiphandlingdef \else
+ \if#3\relax\relax
+ #1{`#2}{`#4}%
+ \else
+ \let\char\empty
+ \doifnumberelse{\csname#2#3\endcsname}{#1{\csname#2#3\endcsname}{`#4}}\donothing
+ \let\char\normalchar
+ \fi
+ \fi}
+
+% adjustspacing
+
+\newdimen\adjustdimen \let\handledfont\font
+
+\ifx\undefined\pdfadjustspacing % we don't use pdftex
+
+ \let\enableadjusting \relax
+ \let\disableadjusting \relax
+ \let\setadjusting \gobbletwoarguments
+
+ \def\defineadjustfactor #1 #2 {}
+ \def\inheritadjustfactor #1 #2 {}
+
+ \let\setfontadjusting \gobbleoneargument
+
+\else
+
+ \def\enableadjusting {\pdfadjustspacing\plustwo}
+ \def\disableadjusting {\pdfadjustspacing\zerocount}
+
+ \appendtoks \disableadjusting \to \everyforgetall % Here or not here?
+
+ \def\dododefineadjustfactor#1#2%
+ {\adjustdimen#2pt\multiply\adjustdimen\plusthousand\divide\adjustdimen\maxcard\relax
+ \efcode\handledfont#1\adjustdimen}
+
+ \beginETEX
+
+ \def\dododefineadjustfactor#1#2%
+% {\efcode\handledfont#1\dimexpr#2pt*\plusthousand/\maxcard\relax}
+ {\efcode\handledfont#1\dimexpr#2\onepoint*\plusthousand/\maxcard\relax}
+
+ \endETEX
+
+ \def\dodoinheritadjustfactor#1#2%
+ {\efcode\handledfont#1\efcode\handledfont#2\relax}
+
+ \def\defineadjustfactor#1 #2 %
+ {\setfonttoks
+ \let\inherithandling\inheritadjustfactor
+ \appendtoks\dosetsomehandling\dododefineadjustfactor#1 #2 \to\fonttoks}
+
+ \def\inheritadjustfactor#1 #2 %
+ {\setfonttoks
+ \appendtoks\doinhsomehandling\dodoinheritadjustfactor#1 #2 \to\fonttoks}
+
+ \ifnum\pdftexversion<120
+ \let\@@pdfexpandbonus\plusthousand
+ \else
+ \def\@@pdfexpandbonus{autoexpand}%
+ \fi
+
+ \def\setfontadjusting#1%
+ {\doifvalue{\@fha@\@fha@#1\c!type}\v!hz{\dosetfontadjusting{#1}}}
+
+ \def\dosetfontadjusting#1%
+ {\iftracefonthandling\showfontadjusting{#1}\fi
+ \pdffontexpand\handledfont
+ \csname\@fha@\@fha@#1\c!min \endcsname\space
+ \csname\@fha@\@fha@#1\c!max \endcsname\space
+ \csname\@fha@\@fha@#1\c!step\endcsname\space
+ \@@pdfexpandbonus\relax}
+
+ \def\showfontadjusting#1%
+ {\writestatus\m!handlings{[adjust]\space#1\space
+ \csname\@fha@\@fha@#1\c!min \endcsname/%
+ \csname\@fha@\@fha@#1\c!max \endcsname/%
+ \csname\@fha@\@fha@#1\c!step\endcsname\space
+ \fontname\handledfont}}
+\fi
+
+\ifx\setfontadjusting\gobbleoneargument \else
+ \appendtoks
+ \setfontadjusting\askedfonthandling
+ \to \everyenablefonthandling
+\fi
+
+% protruding
+
+\newif\ifembasedprotruding \embasedprotrudingfalse
+
+\newdimen\lproddimen \newdimen\rproddimen \let\handledfont\font
+
+\ifx\undefined\pdfprotrudechars % we don't use pdftex
+
+ \let\enableprotruding \relax
+ \let\disableprotruding \relax
+ \let\setprotrudingfactor \gobbleoneargument
+
+ \def\defineprotrudefactor #1 #2 #3 {}
+ \def\inheritprotrudefactor #1 #2 {}
+
+\else
+
+ \def\enableprotruding {\pdfprotrudechars\plustwo}
+ \def\disableprotruding{\pdfprotrudechars\zerocount}
+
+ \appendtoks \disableprotruding \to \everyforgetall % Here or not here?
+
+ \lproddimen1000\onepoint \divide\lproddimen\maxcard
+ \rproddimen1000\onepoint \divide\rproddimen\maxcard
+
+ \def\setprotrudingfactor#1%
+ {\doifvalue{\@fha@\@fha@#1\c!type}\v!hanging{\dosetprotrudingfactor{#1}}}
+
+ \beginTEX
+
+ \def\dosetprotrudingfactor#1% no \onepoint instead of pt
+ {\lproddimen\csname\@fha@\@fha@#1\c!left\endcsname\s!pt
+ \multiply\lproddimen\plusthousand\divide\lproddimen\maxcard\relax
+ \rproddimen\csname\@fha@\@fha@#1\c!right\endcsname\s!pt
+ \multiply\rproddimen\plusthousand\divide\rproddimen\maxcard\relax
+ \iftracefonthandling\showprotrudingfactor{#1}\fi}
+
+ \endTEX
+
+ \beginETEX \dimexpr
+
+ \def\dosetprotrudingfactor#1% no \onepoint instead of pt
+ {\lproddimen\dimexpr\csname\@fha@\@fha@#1\c!left \endcsname\onepoint*\plusthousand/\maxcard\relax
+ \rproddimen\dimexpr\csname\@fha@\@fha@#1\c!right\endcsname\onepoint*\plusthousand/\maxcard\relax
+ \iftracefonthandling\showprotrudingfactor{#1}\fi}
+
+ \endETEX
+
+ \def\showprotrudingfactor#1%
+ {\writestatus\m!handlings{[protrude]\space#1\space
+ \csname\@fha@\@fha@#1\c!left \endcsname\space
+ \csname\@fha@\@fha@#1\c!right\endcsname\space
+ \fontname\handledfont}}
+
+ \beginETEX \fontcharwd
+
+ % division before multiplication, else overflow with "sa>5"
+
+ \newdimen\protrudethreshold \protrudethreshold=36pt
+
+ % keep this
+
+ % \def\redodefineprotrudefactor#1%
+ % {\ifdim\fontdimen6\font>\protrudethreshold
+ % \divide\scratchdimen\fontdimen6\font
+ % \multiply\scratchdimen\fontcharwd\handledfont#1\relax
+ % \else
+ % \multiply\scratchdimen\fontcharwd\handledfont#1\relax
+ % \divide\scratchdimen\fontdimen6\font
+ % \fi}
+
+ % \def\dododefineprotrudefactor#1#2#3%
+ % {\scratchdimen#2\lproddimen
+ % \ifembasedprotruding \else
+ % \redodefineprotrudefactor{#1}%
+ % \fi
+ % \lpcode\handledfont#1\scratchdimen
+ % \scratchdimen#3\rproddimen
+ % \ifembasedprotruding \else
+ % \redodefineprotrudefactor{#1}%
+ % \fi
+ % \rpcode\handledfont#1\scratchdimen}
+
+ \def\dododefineprotrudefactor#1#2#3%
+ {\lpcode\handledfont#1\dimexpr#2\lproddimen
+ \ifembasedprotruding \else
+ \ifdim\fontdimen6\font>\protrudethreshold
+ /\fontdimen6\font*\fontcharwd\handledfont#1%
+ \else
+ *\fontcharwd\handledfont#1/\fontdimen6\font
+ \fi
+ \fi
+ \relax
+ \rpcode\handledfont#1\dimexpr#3\rproddimen
+ \ifembasedprotruding \else
+ \ifdim\fontdimen6\font>\protrudethreshold
+ /\fontdimen6\font*\fontcharwd\handledfont#1%
+ \else
+ *\fontcharwd\handledfont#1/\fontdimen6\font
+ \fi
+ \fi
+ \relax}
+
+ \endETEX
+
+ \beginTEX
+
+ \ifx\undefined\charbox \newbox\charbox \fi
+
+ \def\protrudethreshold{36\onepoint}
+
+ \def\redodefineprotrudefactor
+ {\ifdim\fontdimen6\font>\protrudethreshold
+ \divide\scratchdimen\fontdimen6\font
+ \multiply\scratchdimen\wd\charbox
+ \else
+ \multiply\scratchdimen\wd\charbox
+ \divide\scratchdimen\fontdimen6\font
+ \fi}
+
+ \def\dododefineprotrudefactor#1#2#3%
+ {\setbox\charbox{\handledfont\char#1}% ! yet untested !
+ \scratchdimen#2\lproddimen
+ \ifembasedprotruding \else
+ \redodefineprotrudefactor
+ \fi
+ \lpcode\handledfont#1\scratchdimen
+ \scratchdimen#3\rproddimen
+ \ifembasedprotruding \else
+ \redodefineprotrudefactor
+ \fi
+ \rpcode\handledfont#1\scratchdimen}
+
+ \endTEX
+
+ \def\dodoinheritprotrudefactor#1#2%
+ {\lpcode\handledfont#1\lpcode\handledfont#2\relax
+ \rpcode\handledfont#1\rpcode\handledfont#2\relax}
+
+ \def\defineprotrudefactor#1 #2 #3 %
+ {\setfonttoks
+ \let\inherithandling\inheritprotrudefactor
+ \appendtoks\dosetpairhandling\dododefineprotrudefactor#1 #2 #3 \to\fonttoks}
+
+ \def\inheritprotrudefactor#1 #2 %
+ {\setfonttoks
+ \appendtoks\doinhsomehandling\dodoinheritprotrudefactor#1 #2 \to\fonttoks}
+
+\fi
+
+\ifx\setprotrudingfactor\gobbleoneargument \else
+ \appendtoks
+ \setprotrudingfactor\askedfonthandling
+ \to \everyenablefonthandling
+\fi
+
+% Basic support for a new pdftex feature: space factors
+%
+% \knbccode -- kern before char code
+% \knbscode -- kern before space code
+% \stbscode -- stretch before space code
+% \shbscode -- shrink before space code
+%
+% Setting \knsbcode\font`\.=200 means that if a period sits before
+% a interword space (glue), then the interword glue will be increased
+% by an amount of 1em*200/1000, i.e. the value is given in thousandths
+% of an em. (HTT)
+
+\newdimen\spfacdimen
+
+\ifx\undefined\pdfadjustinterwordglue % we don't use pdftex
+
+ \let\enablespacehandling \relax
+ \let\disablespacehandling \relax
+
+ \let\setspacehandling \gobbleoneargument
+
+ \def\definespacefactor #1 #2 #3 #4 #5 {}
+ \def\inheritspacefactor #1 #2 {}
+
+\else
+
+ \def\enablespacehandling {\pdfadjustinterwordglue\plusone }
+ \def\disablespacehandling{\pdfadjustinterwordglue\minusone}
+
+ \appendtoks \disablespacehandling \to \everyforgetall % Here or not here?
+
+ \def\dosetspacehandling#1%
+ {\spfacdimen\csname\@fha@\@fha@#1\c!factor\endcsname\s!pt
+ \multiply\spfacdimen\plusthousand\divide\spfacdimen\maxcard\relax}
+
+ \def\setspacehandling#1%
+ {\doifvalue{\@fha@\@fha@#1\c!type}\v!spacing{\dosetspacehandling{#1}}}
+
+ \def\dododefinespacefactor#1#2#3#4#5%
+ {\sfcode#1\plusthousand
+ \knbccode\handledfont#1\dimexpr#2\spfacdimen\relax
+ \knbscode\handledfont#1\dimexpr#3\spfacdimen\relax
+ \stbscode\handledfont#1\dimexpr#4\spfacdimen\relax
+ \shbscode\handledfont#1\dimexpr#5\spfacdimen\relax}
+
+ \def\dodoinheritspacefactor#1#2%
+ {\sfcode#1\plusthousand
+ \knbccode\handledfont#1\knbccode\handledfont#2\relax
+ \knbscode\handledfont#1\knbscode\handledfont#2\relax
+ \stbscode\handledfont#1\stbscode\handledfont#2\relax
+ \shbscode\handledfont#1\shbscode\handledfont#2\relax}
+
+ \def\definespacefactor#1 #2 #3 #4 #5 %
+ {\setfonttoks
+ \let\inherithandling\inheritspacefactor
+ \appendtoks\dosetquartethandling\dododefinespacefactor#1 #2 #3 #4 #5 \to\fonttoks}
+
+ \def\inheritspacefactor#1 #2 %
+ {\setfonttoks
+ \appendtoks\doinhsomehandling\dodoinheritspacefactor#1 #2 \to\fonttoks}
+
+\fi
+
+\ifx\setspacehandling\gobbleoneargument \else
+ \appendtoks
+ \setspacehandling\askedfonthandling
+ \to \everyenablefonthandling
+\fi
+
+% font attributes
+
+\let\notagcode\minusone
+
+\ifx\tagcode\undefined
+
+ \def\settagcode #1 #2 {}
+
+\else
+
+ \def\dodosettagcode#1#2%
+ {\tagcode\handledfont#1 #2\relax}
+
+ \def\settagcode#1 #2 %
+ {\setfonttoks
+ \appendtoks\dosetsomehandling\dodosettagcode#1 #2 \to\fonttoks}
+
+\fi
+
+% hook into font mechanism
+
+\let\fonthandling\empty
+
+\beginTEX
+
+ \def\startfonthandling[#1]%
+ {\def\fonthandling{#1}%
+ \expandafter\ifx\csname\@fha@\fonthandling\endcsname\relax
+ \expandafter\newtoks\csname\@fha@\fonthandling\endcsname
+ \fi
+ \setfonttoks}
+
+\endTEX
+
+\beginETEX
+
+ \def\startfonthandling[#1]%
+ {\def\fonthandling{#1}%
+ \ifcsname\@fha@\fonthandling\endcsname\else
+ \expandafter\newtoks\csname\@fha@\fonthandling\endcsname
+ \fi
+ \setfonttoks}
+
+\endETEX
+
+\def\stopfonthandling
+ {\let\fonthandling\empty}
+
+\def\setfonttoks
+ {\@EA\let\@EA\fonttoks\csname\@fha@\fonthandling\endcsname}
+
+\def\definefonthandling
+ {\dotripleempty\dodefinefonthandling}
+
+\def\dodefinefonthandling[#1][#2][#3]%
+ {\ifthirdargument
+ \setvalue{\@fha@\@fha@#1}{#2}%
+ \getparameters
+ [\@fha@\@fha@#1]
+ [\c!type=\v!hanging,%
+ \c!left=1,\c!right=1,%
+ \c!min=20,\c!max=20,\c!step=5,%
+ \c!factor=1,%
+ #3]%
+ \else
+ \setvalue{\@fha@\@fha@\@fha@#1}{#2}%
+ \fi}
+
+\def\setupfonthandling
+ {\dodoubleempty\dosetupfonthandling}
+
+\def\dosetupfonthandling[#1][#2]%
+ {\getparameters[\@fha@\@fha@#1][#2]}
+
+\def\enablehandling
+ {\dodoubleempty\doenablehandling}
+
+\def\doenablehandling[#1][#2]% handling / symbolic fontname
+ {\fastenablehandling{#1}{#2}} % for the moment the same as:
+
+\beginTEX
+
+\def\fastenablehandling#1#2%
+ {\edef\askedfonthandling{#1}%
+ \edef\filoffonthandling{#2}%
+ \@EA\ifx\csname\@fha@\@fha@\@fha@\askedfonthandling\endcsname\relax
+ \@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname\relax
+ \@EAEAEA\nofastenablehandling
+ \else
+ \@EAEAEA\dofastenablehandling
+ \fi
+ \else
+ \@EA\redofastenablehandling
+ \fi}
+
+\def\xfastenablehandling#1%
+ {\edef\askedfonthandling{#1}%
+ \@EA\ifx\csname\@fha@\@fha@\askedfonthandling\endcsname
+ \@EA\nofastenablehandling
+ \else
+ \@EA\dofastenablehandling
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\fastenablehandling#1#2% also gets #2 passed
+ {\edef\askedfonthandling{#1}%
+ \edef\filoffonthandling{#2}%
+ \ifcsname\@fha@\@fha@\@fha@\askedfonthandling\endcsname
+ \@EA\redofastenablehandling
+ \else\ifcsname\@fha@\@fha@\askedfonthandling\endcsname
+ \@EAEAEA\dofastenablehandling
+ \else
+ \@EAEAEA\nofastenablehandling
+ \fi\fi}
+
+\def\xfastenablehandling#1%
+ {\edef\askedfonthandling{#1}%
+ \ifcsname\@fha@\@fha@\askedfonthandling\endcsname
+ \@EA\dofastenablehandling
+ \else
+ \@EA\nofastenablehandling
+ \fi}
+
+\endETEX
+
+\def\redofastenablehandling
+ {\edef\fonthandling{\csname\@fha@\@fha@\@fha@\askedfonthandling\endcsname}%
+ \rawprocesscommacommand[\fonthandling]\xfastenablehandling}
+
+\def\dofastenablehandling
+ {\the\everyenablefonthandling
+ \edef\fonthandling{\csname\@fha@\@fha@\askedfonthandling\endcsname}%
+ \checkfonthandling\filoffonthandling
+ \rawprocesscommacommand[\fonthandling]\dodoenablehandling
+ \registerfonthandling\filoffonthandling}
+
+\def\nofastenablehandling
+ {\the\everyenablefonthandling
+ \let\fonthandling\askedfonthandling
+ \dodoenablehandling\fonthandling}
+
+\beginTEX
+
+\def\dodoenablehandling#1%
+ {\@EA\ifx\csname\@fha@#1\endcsname\relax\else
+ \the\csname\@fha@#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\dodoenablehandling#1%
+ {\ifcsname\@fha@#1\endcsname
+ \the\csname\@fha@#1\endcsname
+ \fi}
+
+\endETEX
+
+%D We must not use \type {\purefontname} here (was a bug)!
+
+% not robust as long as tex reuses definitions internally
+%
+% \def\checkfonthandling#1% we need a fast compare
+% {\doifelsevalue{#1\s!handling\c!file}{\fontname\font}
+% \skiphandlingdeftrue\skiphandlingdeffalse}
+%
+% \def\registerfonthandling#1%
+% {\@EA\xdef\csname#1\s!handling\c!file\endcsname{\fontname\font}}
+
+\def\checkfonthandling #1{\skiphandlingdeffalse}
+\let\registerfonthandling \gobbleoneargument
+
+%D This one makes live easier (less definitions):
+
+\def\inherithandling #1 #2 %
+ {\inheritprotrudefactor #1 #2 %
+ \inheritadjustfactor #1 #2 }
+
+%D \macros
+%D {usehandling}
+%D
+%D Handling definitions are collected in dedicated files and
+%D loaded only once:
+%D
+%D % \showsetup{usehandling}
+
+\def\dousehandling#1% is the same as encoding
+ {\doifundefined{\c!file\f!handlingprefix#1}%
+ {\letvalueempty{\c!file\f!handlingprefix#1}%
+ \makeshortfilename[\f!handlingprefix#1]%
+ \startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!handlings2{#1}}
+ {\showmessage\m!handlings3{#1}}%
+ \stopreadingfile}}
+
+\def\usehandling[#1]%
+ {\processcommalist[#1]\dousehandling}
+
+%D New:
+
+\def\overloadcharacter#1 #2 %
+ {\setfonttoks
+ \doifnumberelse{\string#2}
+ {\appendtoks\dooverloadcharacter{#1}{\char#2 }\to\fonttoks}
+ {\appendtoks\dooverloadcharacter{#1}{#2}\to\fonttoks}}
+
+\def\dooverloadcharacter#1%
+ {\setvalue{\characterencoding\string#1}}
+
+%D Let's now see if this macro works:
+
+% \setupfonthandling
+% [\s!default]
+% [\c!links=1,\c!rechts=1,\c!min=20,\c!max=20,\c!stap=5]
+
+\usehandling [def]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/java-ans.tex b/Master/texmf-dist/tex/context/base/java-ans.tex
new file mode 100644
index 00000000000..636c894f931
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-ans.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=java-ans,
+%D version=1998.06.01,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Answer Analization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startJSpreamble{Do_Check_Answer} used later
+
+ function Do_Check_Answer (field, value)
+ { if (event.value.toLowerCase()==value.toLowerCase())
+ { event.target.hidden = true }
+ % { event.target.display = display.hidden }
+ return("\040") } // funny, "" does not work
+
+\stopJSpreamble
+
+\startJScode{Check_Answer} uses {Do_Check_Answer}
+ event.value = Do_Check_Answer(JS_S_1, JS_S_2) ;
+\stopJScode
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/java-exa.tex b/Master/texmf-dist/tex/context/base/java-exa.tex
new file mode 100644
index 00000000000..f40f70f84df
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-exa.tex
@@ -0,0 +1,395 @@
+%D \module
+%D [ file=java-exa,
+%D version=2002.??.??,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Example Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% XFDF versus HTML
+% localhost versus remote versus set
+
+% filename | filename-nr => name
+% fakename | fakename-nr => file upload, unless localhost
+%
+% we erase the list because otherwise we end up in browser remembering
+% problems; also, it is not possible to set upload fields 'manually'
+
+\startJSpreamble request_1 used now
+
+ var example_method = "HTML" ;
+ var example_host = "" ;
+ var example_port = "" ;
+ var example_url = "" ;
+ var example_file = "" ;
+
+ var example_log = true ; % false
+
+ function stripped_exa_value( name ) {
+ f = this.getField(name) ;
+ if (f) {
+ str = f.value ;
+ if (str.indexOf(name+'-')==0) {
+ str = str.substr(name.length+1) ;
+ }
+ return str ;
+ } else {
+ return "" ;
+ }
+ }
+
+ function identify_example_url ( ) {
+ if (example_log) {
+ console.clear ;
+ console.println("base url: "+this.baseURL) ;
+ console.println("this url: "+this.URL) ;
+ }
+ if (this.baseURL != "") {
+ example_url = this.baseURL ;
+ } else {
+ if (this.URL != "") {
+ example_url = this.URL
+ }
+ }
+ if (example_url.indexOf("file://")>=0) {
+ example_url = "" ;
+ }
+ str = stripped_exa_value("examplehost") ;
+ if (str != "auto") {
+ example_host = str ;
+ if (str == "localhost") {
+ example_port = "8061"
+ }
+ }
+ str = stripped_exa_value("exampleport") ;
+ if (str != "auto") {
+ example_port = str ;
+ }
+ if (example_log) {
+ console.println("example_url: "+example_url) ;
+ console.println("example_host: "+example_host) ;
+ console.println("example_port: "+example_port) ;
+ }
+ }
+
+ function check_example_url ( url ) {
+ if (url.indexOf("file://")>=0) {
+ url = "http://localhost:8061" ;
+ console.println("file url replaced by: "+url) ;
+ } else {
+ if (url.indexOf("://")<0) {
+ url = "http://" + url ;
+ }
+ if (example_log) {
+ console.println("url before check: "+url) ;
+ }
+% url = url.replace(/(http:\\\/\\\/.+)(\\\/.*$)/, "$1") ;
+ url = url.replace(/(https*:\\\/\\\/.+?)(\\\/.*$)/, "$1/exarequest") ;
+ if (example_log) {
+ console.println("url after check: "+url) ;
+ }
+ }
+ return url ;
+ }
+
+ function set_example_xfdf ( method ) {
+ example_method = method ;
+ }
+
+ function set_example_file ( file ) {
+ example_method = file ;
+ }
+
+ function set_example_host ( host ) {
+ example_host = host ;
+ }
+
+ function set_example_port ( port ) {
+ example_host = host ;
+ }
+
+ function do_erase_example_file(tag) {
+ f = this.getField(tag) ;
+ if (f) {
+ f.value = "" ;
+ }
+ }
+
+ function do_erase_example_list(tag) {
+ for (i=1;i<=100;i++) {
+ f = this.getField(tag+"-"+i) ;
+ if (f) {
+ f.value = "" ;
+ } else {
+ return
+ }
+ }
+ }
+
+ function do_submit_example_url ( url ) {
+ if ((example_method == "XFDF" ) || (url.indexOf("localhost")>=0)) {
+ do_erase_example_file("fakename") ;
+ do_erase_example_list("fakename") ;
+ }
+ url = check_example_url(url) ;
+ if (example_log) {
+ console.println("submitting form to "+url+" using method "+example_method) ;
+ }
+ if (example_file != "") {
+ url = url + "/" + example_file ;
+ }
+ % we need the bFDF for acrobat 5
+ this.submitForm({cURL : url, bFDF : false, cSubmitAs : example_method}) ;
+ }
+
+ function submit_example_form ( ) {
+ identify_example_url() ;
+ if (example_host != "") {
+ if (example_port != "") {
+ do_submit_example_url(example_host+":"+example_port) ;
+ } else {
+ do_submit_example_url(example_host) ;
+ }
+ } else {
+ if (example_url != "") {
+ do_submit_example_url(example_url) ;
+ } else {
+ if (example_port != "") {
+ do_submit_example_url("localhost"+":"+example_port) ;
+ } else {
+ do_submit_example_url("localhost:8061") ; % local exampler
+ }
+ }
+ }
+ resetfilename () ;
+ }
+
+ function submit_form ( host, port) {
+ set_example_host(host) ;
+ set_example_post(post) ;
+ submit_example_form ;
+ }
+
+\stopJSpreamble
+
+\startJSpreamble request_2 used now
+
+ var exa_command = "" ;
+ var exa_option = "" ;
+ var exa_filename = "" ;
+ var exa_filelist = "" ;
+ var exa_registered = "" ;
+
+ function set_request (command,option) {
+ exa_command = command ;
+ if (exa_command == "") {
+ exa_option = option ;
+ } else { if (option == "") {
+ exa_option = "" ;
+ } else { if (option.indexOf("--")<0) {
+ exa_option = "--action=" + option ;
+ } else {
+ exa_option = option ;
+ } } }
+ }
+
+ function assemble_request ( ) {
+ v = this.getField('filename') ;
+ if (v) {
+ exa_filename = v.value ;
+ }
+ v = this.getField('filelist') ;
+ if (v) {
+ exa_filelist = v.value ;
+ }
+% exa_filename = exa_filename.replace(/\\\\/g,'/') ;
+% exa_filelist = exa_filelist.replace(/\\\\/g,'/') ;
+ str = "<?xml version='1.0' ?>\\n" ;
+ str = str+"<exa:request xmlns:exa='http://www.pragma-ade.com/schemas/example.rng'><exa:application>" ;
+ if (exa_filelist == "") {
+ exa_filelist = exa_registered ;
+ } else { if (exa_registered != "") {
+ exa_filelist = exa_filelist + "\\n" + exa_registered ;
+ } }
+ if (exa_command != "") {
+ str = str+"<exa:command>"+exa_command+"</exa:command>" ;
+ }
+ if (exa_option != "") {
+ str = str+"<exa:option>"+exa_option+"</exa:option>" ;
+ }
+ if (exa_filename != "") {
+ str = str+"<exa:filename>"+exa_filename+"</exa:filename>" ;
+ }
+ var fls = "" ;
+ if (exa_filelist != "") {
+ % old method, soon obsolete
+ lst = exa_filelist.split(/\\s/) ;
+ for (i=0;i<lst.length;i++) {
+ fls = fls+"<exa:entry>"+lst[i]+"</exa:entry>" ;
+ }
+ } else { if (exa_multiple) {
+ for (i=1;i<=100;i++) {
+ % console.println("file field "+i) ;
+ f = this.getField("filename-"+ i) ;
+% if (f) { if (f.value != "") {
+% if (g) { if (g.value == "") {
+% fls = fls+"<exa:entry>"+f.value+"</exa:entry>" ;
+% } else {
+% fls = fls+"<exa:entry label='" + g.value + "'>"+f.value+"</exa:entry>" ;
+% } } else {
+% fls = fls+"<exa:entry>"+f.value+"</exa:entry>" ;
+% }
+% } }
+ if (f) { if (f.value != "") {
+ fls = fls + "<exa:entry" ;
+ g = this.getField("dataname-"+ i) ;
+ if (g) { if (g.value == "") {
+ % console.println("a") ;
+ fls = fls + ">" ;
+ } else {
+ % console.println("b") ;
+ fls = fls + " label='" + g.value + "'>" ;
+ } } else {
+ % console.println("c") ;
+ fls = fls + ">" ;
+ }
+ fls = fls + f.value + "</exa:entry>" ;
+ } }
+ }
+ } }
+ if (fls != "") {
+ str = str + "<exa:filelist>" + fls + "</exa:filelist>" ;
+ }
+ str = str + "</exa:application></exa:request>" ;
+ v = this.getField('exa:request') ;
+ if (v) {
+ v.value = str ;
+ }
+ }
+
+\stopJSpreamble
+
+\startJSpreamble request_3 used now
+
+ var exa_multiple = false ;
+
+ function setfilename ( suffixes ) {
+ if (event.targetName) {
+ var name = event.targetName ;
+ var fake = name.replace(/filename/,"fakename") ;
+ } else {
+ var name = 'filename' ;
+ var fake = 'fakename' ;
+ }
+ f = this.getField(fake) ;
+ if (f) {
+ f.browseForFileToSubmit() ;
+ if ((suffixes != "") && (f.value != "")) {
+ %
+ s = suffixes.replace(/,/g,"|") ;
+ r = new RegExp() ;
+ s = "\\\\.(" + s + ")$" ;
+ r.compile(s, "i") ;
+ if (f.value.search(r)<=0) {
+ f.value = "" ;
+ app.alert('This filetype is not permitted.') ;
+ %
+ % lst = suffixes.split(/,/) ;
+ % ok = false ;
+ % for (i=0;i<lst.length;i++) {
+ % if (f.value == lst[i]) {
+ % ok = true ;
+ % }
+ % }
+ % if (! ok) {
+ % f.value = "" ;
+ % app.alert('This filetype is not permitted.') ;
+ %
+ }
+ }
+ g = this.getField(name) ;
+ if (g) {
+ g.value = f.value ;
+ }
+% we need to set the value of the selector to empty else
+% we get some funny preloading of multimeg files in spite
+% of the specs that say that xml fields will not get sent
+% if (example_method == "XFDF" ) {
+% f.value = "" ;
+% } else {
+% identify_example_url ;
+% if (example_url.indexOf("localhost")>=0) {
+% f.value = "" ;
+% }
+% }
+ }
+ this.dirty = false ;
+ }
+
+ function addfilename () {
+ if (exa_multiple) {
+ h = this.getField("filelist") ;
+ g = this.getField("filename") ;
+ if ((g) && (h)) {
+ str = g.value ;
+ if (h.value == "") {
+ h.value = str ;
+ } else {
+ h.value = h.value + "\\n" + str ;
+ }
+ g.value = "" ;
+ this.value = "" ;
+ }
+ }
+ this.dirty = false ;
+ }
+
+ % this only works with client that assembles request
+
+ function registerfilename (str) {
+ if (str!="") {
+ h = this.getField("filelist") ;
+ if (h) {
+ if (h.value != "") {
+ h.value = h.value + "\\n" ;
+ }
+ h.value = h.value + str ;
+ } else {
+ if (exa_registered != "") {
+ exa_registered = exa_registered + "\\n" ;
+ }
+ exa_registered = exa_registered + str ;
+ }
+ }
+ console.show ;
+ console.println('registered files') ;
+ console.println("file: "+str) ;
+ console.println("list: "+exa_registered) ;
+ this.dirty = false ;
+ }
+
+ function checkfilename () {
+ }
+
+ function getfilename ( suffixes ) {
+ setfilename(suffixes) ;
+ checkfilename() ;
+ addfilename() ;
+ }
+
+ function resetfilename () {
+ do_erase_example_file("fakename") ;
+ do_erase_example_file("filename") ;
+ do_erase_example_file("filelist") ;
+ do_erase_example_list("filename") ;
+ do_erase_example_list("fakename") ;
+ }
+
+\stopJSpreamble
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/java-fil.tex b/Master/texmf-dist/tex/context/base/java-fil.tex
new file mode 100644
index 00000000000..4d79a2ace9e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-fil.tex
@@ -0,0 +1,48 @@
+%D \module
+%D [ file=java-fil,
+%D version=1998.06.01,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Filing and Printing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startJSpreamble Auxiliary used now
+
+ function DocumentFileName ()
+ { var Paths = this.path.split("/") ;
+ Paths = Paths[Paths.length-1].split(".") ;
+ return(Paths[0]) }
+
+ function Print_Page_Range(From, To) % gaat mis, nog geen args mogelijk
+ { if ((Number(From)>0)&&(Number(To)>=Number(From)))
+ { var myFrom = Number(From)-1 ;
+ var myTo = Number(To)-1 ;
+ this.print(false,myFrom,myTo,true) } }
+
+ function Print_This_Page ()
+ { this.print(false,this.pageNum,this.pageNum,true) }
+
+\stopJSpreamble
+
+\definereference
+ [PrintSubPaginas]
+ [JS(Print_Page_Range{\firstsubpage,\lastsubpage})]
+
+\definereference
+ [PrintSubPages]
+ [JS(Print_Page_Range{\firstsubpage,\lastsubpage})]
+
+\definereference
+ [PrintDezePagina]
+ [JS(Print_This_Page)]
+
+\definereference
+ [PrintThisPage]
+ [JS(Print_This_Page)]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/java-fld.tex b/Master/texmf-dist/tex/context/base/java-fld.tex
new file mode 100644
index 00000000000..e6e5ee03a50
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-fld.tex
@@ -0,0 +1,304 @@
+%D \module
+%D [ file=java-fld,
+%D version=1998.05.20,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Field Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% will be simplified, since we now parse functions
+
+% nu nog alles geladen, moet dus anders
+
+\startJSpreamble {Sanitize_TeX_Input} used later
+
+ function Sanitized_TeX_String (value)
+ { var v = value ;
+ % v = v.replace(/\\\\\\/L/g,"\\225") ; % problematic
+ % v = v.replace( /\\\\OE/g,"\\226") ; % problematic
+ % v = v.replace( /\\\\vS/g,"\\227") ; % problematic
+ % v = v.replace( /\\\\"Y/g,"\\230") ; % problematic
+ % v = v.replace( /\\\\vZ/g,"\\231") ; % problematic
+ % v = v.replace(/\\\\\\/l/g,"\\233") ; % problematic
+ v = v.replace( /\\\\oe/g,"\\234") ;
+ % v = v.replace( /\\\\vs/g,"\\235") ; % problematic
+ % v = v.replace( /\\\\vz/g,"\\236") ; % problematic
+ v = v.replace( /\\\\<</g,"\\253") ;
+ v = v.replace( /\\\\>>/g,"\\273") ;
+ v = v.replace( /\\\\`A/g,"\\300") ;
+ v = v.replace( /\\\\'A/g,"\\301") ;
+ v = v.replace( /\\\\^A/g,"\\302") ;
+ v = v.replace( /\\\\~A/g,"\\303") ;
+ v = v.replace( /\\\\"A/g,"\\304") ;
+ v = v.replace( /\\\\oA/g,"\\305") ;
+ v = v.replace( /\\\\AE/g,"\\306") ;
+ v = v.replace( /\\\\,C/g,"\\307") ;
+ v = v.replace( /\\\\`E/g,"\\310") ;
+ v = v.replace( /\\\\'E/g,"\\311") ;
+ v = v.replace( /\\\\^E/g,"\\312") ;
+ v = v.replace( /\\\\"E/g,"\\313") ;
+ v = v.replace( /\\\\`I/g,"\\314") ;
+ v = v.replace( /\\\\'I/g,"\\315") ;
+ v = v.replace( /\\\\^I/g,"\\316") ;
+ v = v.replace( /\\\\"I/g,"\\317") ;
+ v = v.replace( /\\\\~N/g,"\\321") ;
+ v = v.replace( /\\\\`O/g,"\\322") ;
+ v = v.replace( /\\\\'O/g,"\\323") ;
+ v = v.replace( /\\\\^O/g,"\\324") ;
+ v = v.replace( /\\\\~O/g,"\\325") ;
+ v = v.replace( /\\\\"O/g,"\\326") ;
+ % v = v.replace(/\\\\\\/O/g,"\\330") ; % problematic
+ v = v.replace( /\\\\`U/g,"\\331") ;
+ v = v.replace( /\\\\'U/g,"\\332") ;
+ v = v.replace( /\\\\^U/g,"\\333") ;
+ v = v.replace( /\\\\"U/g,"\\334") ;
+ v = v.replace( /\\\\'Y/g,"\\335") ;
+ v = v.replace( /\\\\ss/g,"\\337") ;
+ v = v.replace( /\\\\`a/g,"\\340") ;
+ v = v.replace( /\\\\'a/g,"\\341") ;
+ v = v.replace( /\\\\^a/g,"\\342") ;
+ v = v.replace( /\\\\~a/g,"\\343") ;
+ v = v.replace( /\\\\"a/g,"\\344") ;
+ v = v.replace( /\\\\oa/g,"\\345") ;
+ v = v.replace( /\\\\ae/g,"\\346") ;
+ v = v.replace( /\\\\,c/g,"\\347") ;
+ v = v.replace( /\\\\`e/g,"\\350") ;
+ v = v.replace( /\\\\'e/g,"\\351") ;
+ v = v.replace( /\\\\^e/g,"\\352") ;
+ v = v.replace( /\\\\"e/g,"\\353") ;
+ v = v.replace( /\\\\`i/g,"\\354") ;
+ v = v.replace( /\\\\'i/g,"\\355") ;
+ v = v.replace( /\\\\^i/g,"\\356") ;
+ v = v.replace( /\\\\"i/g,"\\357") ;
+ v = v.replace( /\\\\~n/g,"\\361") ;
+ v = v.replace( /\\\\`o/g,"\\362") ;
+ v = v.replace( /\\\\'o/g,"\\363") ;
+ v = v.replace( /\\\\^o/g,"\\364") ;
+ v = v.replace( /\\\\~o/g,"\\365") ;
+ v = v.replace( /\\\\"o/g,"\\366") ;
+ % v = v.replace(/\\\\\\/o/g,"\\370") ; % problematic
+ v = v.replace( /\\\\`u/g,"\\371") ;
+ v = v.replace( /\\\\'u/g,"\\372") ;
+ v = v.replace( /\\\\^u/g,"\\373") ;
+ v = v.replace( /\\\\"u/g,"\\374") ;
+ v = v.replace( /\\\\'y/g,"\\375") ;
+ v = v.replace( /\\\\"y/g,"\\377") ;
+ return(v) }
+
+ var TeX_Key_Mode = 0 ;
+
+ function Initialize_TeX_Keystroke ()
+ { TeX_Key_Char = "" ;
+ TeX_Key_Mode = 0 }
+
+ function Sanitized_TeX_Keystroke (change)
+ { if (change=="\\\\")
+ { TeX_Key_Mode = 1 ;
+ return("") }
+ else if (TeX_Key_Mode==1)
+ { TeX_Key_Mode = 2 ;
+ TeX_Key_Char = change ;
+ return("") }
+ else if (TeX_Key_Mode==2)
+ { TeX_Key_Mode = 0 ;
+ TeX_Key_Char = "\\\\"+TeX_Key_Char+change ;
+ return(Sanitized_TeX_String(TeX_Key_Char)) }
+ else
+ { TeX_Key_Mode = 0 ;
+ return(change) } }
+
+\stopJSpreamble
+
+\startJScode {Initialize_TeX_Key} uses {Sanitize_TeX_Input}
+ Initialize_TeX_Keystroke() ;
+\stopJScode
+
+\startJScode {Convert_TeX_Key} uses {Sanitize_TeX_Input}
+ if (!event.willCommit)
+ { event.change = Sanitized_TeX_Keystroke(event.change) }
+\stopJScode
+
+\startJScode{Convert_TeX_String} uses {Sanitize_TeX_Input}
+ event.value = Sanitized_TeX_String(event.value) ;
+\stopJScode
+
+\startJSpreamble fields_1 used now
+
+var visible_field = new Array() ; % no garbage collection !
+var visible_fields = 0 ;
+
+function PresetFields ( )
+ { this.syncAnnotScan() }
+
+function Preset_Fields ( )
+ { this.syncAnnotScan() }
+
+function Hide_When_Down ( )
+ { event.target.hidden = true }
+% { event.target.display = display.hidden }
+
+function Hide_Field ( Name )
+ { var v = this.getField(Name) ;
+ if (v)
+ { v.hidden = true ;
+ % { v.display = display.hidden ;
+ v.readonly = true ;
+ this.dirty = false } }
+
+function Do_Vide_Field ( Name, Closable )
+ { var v = this.getField(Name) ;
+ if (v)
+ { ++visible_fields ;
+ visible_field[visible_fields] = Name ;
+ v.hidden = false ;
+ % v.display = display.visible ;
+ if (Closable)
+ { v.readonly = false ;
+ v.value = "On" }
+ this.dirty = false } }
+
+function Vide_Field ( Name )
+ { Do_Vide_Field(Name,false) }
+
+function Vide_Hide_Field ( Name )
+ { Do_Vide_Field(Name,true) }
+
+function Hide_Fields ()
+ { while (visible_fields>0)
+ { Hide_Field(visible_field[visible_fields]) ;
+ --visible_fields } }
+
+function Vide_Fields ( Name ) % show only one field
+ { Hide_Fields () ;
+ Vide_Field ( Name) }
+
+function Vide_Hide_Fields ( Name ) % show only one field
+ { Hide_Fields () ;
+ Vide_Hide_Field ( Name) }
+
+function Toggle_Hide ( Name )
+ { var v = this.getField(Name) ;
+ if (v)
+ { v.hidden = !v.hidden ;
+ % if v.display == display.hidden
+ % { v.display = display.visible }
+ % else
+ % { v.display = display.hidden }
+ this.dirty = false } }
+
+function Field_On ( Name )
+ { v = this.getField(Name) ;
+ if (v) { v.value = "On" ; this.dirty = false } }
+
+function Field_Off ( Name )
+ { var v = this.getField(Name) ;
+ if (v) { v.value = "Off" ; this.dirty = false } }
+
+function Toggle_Value ( Name )
+ { var v = this.getField(Name) ;
+ if (v)
+ { if (v.value=="On")
+ { v.value = "Off" }
+ else
+ { v.value = "On" } }
+ this.dirty = false }
+
+function Toggle_Read ( Name )
+ { var v = this.getField(Name);
+ if (v) { v.readonly = !v.readonly } }
+
+function Flip_Fields ( Name )
+ { var Names = Name.split(",") ;
+ for (var i=0;i<Names.length;i++)
+ { v = this.getField(Names[i]) ;
+ if (v)
+ { v.hidden = !v.hidden ;
+ % if v.display == display.hidden
+ % { v.display = display.visible }
+ % else
+ % { v.display = display.hidden }
+ v.value = "On" } } }
+
+function Forget_Changes ()
+ { this.dirty = false }
+
+function ForgetChanges ()
+ { this.dirty = false }
+
+\stopJSpreamble
+
+%\startJScode{Hide_When_Down} Hide_When_Down() \stopJScode
+%\startJScode{Hide_Field} Hide_Field(JS_S_1) \stopJScode
+%\startJScode{Vide_Field} Vide_Field(JS_S_1) \stopJScode
+%\startJScode{Toggle_Hide} Toggle_Hide(JS_S_1) \stopJScode
+%\startJScode{Field_On} Field_On(JS_S_1) \stopJScode
+%\startJScode{Field_Off} Field_Off(JS_S_1) \stopJScode
+%\startJScode{Toggle_Value} Toggle_Value(JS_S_1) \stopJScode
+%\startJScode{Toggle_Read} Toggle_Read(JS_S_1) \stopJScode
+%\startJScode{Flip_Fields} Flip_Fields(JS_S_1) \stopJScode
+%
+%\startJScode{Forget_Changes} this.dirty = false \stopJScode
+
+\definereference[ForgetChanges][JS(Forget_Changes)]
+
+% This can be done more efficient, by keeping track of the
+% current top of the stack.
+
+\startJSpreamble FieldStack used later
+
+function Reset_Fields ( FieldSet )
+ { var i = 1 ;
+ while (true)
+ { v = this.getField(FieldSet+":"+i) ;
+ if (!v)
+ { break }
+ else
+ { v.value = "Off" }
+ i++ } }
+
+function Set_Fields ( FieldSet )
+ { var i = 1 ;
+ while (true)
+ { v = this.getField(FieldSet+":"+i) ;
+ if (!v)
+ { break }
+ else
+ { v.value = "On" }
+ i++ } }
+
+function Set_Field ( FieldSet, FieldName )
+ { Reset_Fields(FieldSet) ;
+ v = this.getField(FieldSet+":"+FieldName) ;
+ if (v) { v.value = "On" } }
+
+function Reset_Field ( FieldSet, FieldName )
+ { Set_Fields(FieldSet) ;
+ v = this.getField(FieldSet+":"+FieldName) ;
+ if (v) { v.value = "Off" } }
+
+function Walk_Field ( FieldSet )
+ { var i = 1 ;
+ while (true)
+ { v = this.getField(FieldSet+":"+i) ;
+ if (v)
+ { if (v.value=="On")
+ { v.value = "Off" ;
+ var ii = i ; ii++ ;
+ v = this.getField(FieldSet+":"+ii) ;
+ if (!v)
+ { v = this.getField(FieldSet+":"+1) }
+ if (v)
+ { v.value = "On" }
+ break }
+ i++ }
+ else
+ { break } } }
+
+\stopJSpreamble
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/java-ini.tex b/Master/texmf-dist/tex/context/base/java-ini.tex
new file mode 100644
index 00000000000..7ee080238db
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-ini.tex
@@ -0,0 +1,770 @@
+%D \module
+%D [ file=java-ini,
+%D version=1998.01.30,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context JavaScript Macros / Initialization}
+
+% BUG: preamble zonder used/used en split
+
+% JavaScript support is under development. In the near future
+% a slightly different model will be used. The JScode stuff
+% will probably become just auto function inclusion and the
+% JS_* things will disappear. First I have to find a way to
+% deal with global variables so the 'uses' thing will remain.
+
+% ook p{ref}
+% documentation should be corrected to JS(
+
+% Also, obeylines will be supported.
+
+\unprotect
+
+%D \JAVA\ support is not implemented as a generic support
+%D module. The main reason for this is that passing system
+%D variables to a \JAVASCRIPT\ is closely related to other core
+%D macros. First some messages:
+
+\startmessages dutch library: javascript
+ title: javascript
+ 1: script set -- wordt geladen
+ 2: onbekende preamble --
+\stopmessages
+
+\startmessages english library: javascript
+ title: javascript
+ 1: loading script set --
+ 2: unknown preamble --
+\stopmessages
+
+\startmessages german library: javascript
+ title: javascript
+ 1: Lade Scriptdatei --
+ 2: unbekannte Preamble --
+\stopmessages
+
+\startmessages czech library: javascript
+ title: javascript
+ 1: nacita se soubor skriptu --
+ 2: neznama preambule --
+\stopmessages
+
+\startmessages italian library: javascript
+ title: javascript
+ 1: caricamento dello script set --
+ 2: preambolo sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: javascript
+ title: javascript
+ 1: leser inn scriptsett --
+ 2: ukjent 'preamble' --
+\stopmessages
+
+\startmessages romanian library: javascript
+ title: javascript
+ 1: se incarca scriptul --
+ 2: preambul necunoscut --
+\stopmessages
+
+%D \TEX\ is not the right tool to check the \JAVA\ code; the
+%D most we can do is reporting some passed variables:
+
+\newif\iftraceJScode \traceJScodefalse
+
+\let\traceJScode\traceJScodetrue
+
+%D A bit out of place, but not dangerous:
+
+\bgroup
+\catcode127=\@@letter
+\gdef\delcharacter{^^7f}
+\egroup
+
+%D The number of passed variables is minimalized by setting the
+%D next switch.
+
+\newif\ifminimalizeJScode \minimalizeJScodetrue
+
+%D \macros
+%D {JS*}
+%D
+%D Because \JAVASCRIPT's are activated by the user, for
+%D instance by activating on a button, their support is closely
+%D related to the referencing mechanism. Integration takes
+%D place by
+%D
+%D \starttyping
+%D \goto{calculate total}[Sum()]
+%D \stoptyping
+%D
+%D The \type{()} classify this as a script. If they are absent,
+%D the keyword is treated as a normal reference.
+%D
+%D One can pass arguments to such a script by saying:
+%D
+%D \starttyping
+%D \goto{calculate total}[Sum(1.5,2.3)]
+%D \stoptyping
+%D
+%D References are passed by using the \type{R{}} classifier.
+%D
+%D \starttyping
+%D \goto{calculate total}[Sum(1.5,2.3,R{overflow})]
+%D \stoptyping
+%D
+%D The last call calls the script \type{Sum} and passes the
+%D next set of variables:
+%D
+%D \starttyping
+%D JS_S_1="1.5";
+%D JS_S_2="2.3";
+%D JS_R_3="overflow";
+%D JS_P_3=3;
+%D \stoptyping
+%D
+%D The first two parameters are just strings, the third one
+%D however is treated as a reference and results in passing the
+%D reference (if needed this references is prefixed) and the
+%D (real) page number. The alternative:
+%D
+%D \starttyping
+%D \goto{calculate total}[JS(Sum{V{1.5},V{2.3},R{overflow}})]
+%D \stoptyping
+%D
+%D does a verbose passing:
+%D
+%D \starttyping
+%D JS_V_1=1.5;
+%D JS_V_2=2.3;
+%D JS_R_3="overflow";
+%D JS_P_3=3;
+%D \stoptyping
+% %D
+% %D Finally we have a counter that tells\JAVA\ how many
+% %D arguments were passed,
+% %D
+% %D \starttyping
+% %D JS_N
+% %D \stoptyping
+
+%D We will also support direct function calls. In that case
+%D no intermediate variables are used.
+
+%D \macros
+%D {startJScode}
+%D
+%D A piece of \JAVASCRIPT\ code is defined by saying:
+%D
+%D \starttyping
+%D \startJScode{SomeScript}
+%D var Item=this.getField("item");
+%D N=Item.getArray();
+%D Total=this.getField("total");
+%D Total.value=0;
+%D for (j=0; j<N.length; j++)
+%D { if (N[j].value!="")
+%D { Total.value += N[j].value } } ;
+%D if ((JS_N>0) && (JS_R_1!=""))
+%D { gotoNamedDest(JS_R_1) };
+%D \stopJScode
+%D \stoptyping
+%D
+%D Such a piece of code is closely related to the interpreter
+%D used. Watch the last two lines, here the script adapts
+%D itself to the presence of a reference.
+%D
+%D While
+%D
+%D \starttyping
+%D \startJScode{name}
+%D name = 4 ;
+%D \stopJScode
+%D \stoptyping
+%D
+%D assumes uses no preamble or presumes that the preamble is
+%D always loaded, the next definition also tells \CONTEXT\ to
+%D actually include the preamble needed.
+%D
+%D \starttyping
+%D \startJScode{uses} uses {later}
+%D uses = 6 ;
+%D \stopJScode
+%D \stoptyping
+
+\long\def\startJScode#1 #2
+ {\doifelse{#2}{uses}
+ {\dostartJScodeA{#1}}
+ {\dostartJScodeB{#1} #2 }}
+
+\long\def\dostartJScodeA#1#2 #3\stopJScode
+ {\long\setgvalue{\r!java#1}{\do{#2}{#3}}}
+
+\long\def\dostartJScodeB#1#2\stopJScode
+ {\long\setgvalue{\r!java#1}{\do{}{#2}}}
+
+\let\stopJScode\relax
+
+%D \macros
+%D {presetJScode}
+%D
+%D The code can be retrieved by saying
+%D
+%D \starttyping
+%D \presetJScode{SomeScript}{template}
+%D \stoptyping
+%D
+%D Such a template is a comma separated list, where
+%D individual entries can optionally be transformed by
+%D \type{R{}} and \type{V{}}.
+%D
+%D After this call, the code is available in \type{\JScode}.
+
+\def\setverbosecscharacter#1%
+ {\edef#1{\string#1}}
+
+\def\setverbosecscharacters % temporary hack
+ {\setverbosecscharacter |\setverbosecscharacter ~%
+ \setverbosecscharacter\:\setverbosecscharacter\;%
+ \setverbosecscharacter\+\setverbosecscharacter\-%
+ \setverbosecscharacter\[\setverbosecscharacter\]%
+ \setverbosecscharacter\.\setverbosecscharacter\\%
+ \setverbosecscharacter\)\setverbosecscharacter\(%
+ \setverbosecscharacter\0\setverbosecscharacter\1%
+ \setverbosecscharacter\2\setverbosecscharacter\3%
+ \setverbosecscharacter\4\setverbosecscharacter\5%
+ \setverbosecscharacter\6\setverbosecscharacter\7%
+ \setverbosecscharacter\8\setverbosecscharacter\9%
+ \setverbosecscharacter\n\setverbosecscharacter\s%
+ \setverbosecscharacter\/}
+
+\newif\ifdirectJScode
+
+\def\presetJScode#1#2% #1=operation #2=arguments
+ {\setverbosecscharacters
+ \def\par{\delcharacter}% was: { }
+ \scratchcounter\zerocount
+ \globallet\JScode\empty
+ \def\do##1##2%
+ {\doifelse{##2}{!}\directJScodetrue\directJScodefalse}%
+ \getvalue{\r!java#1}%
+ \edef\!!stringa{#2}%
+ \ifx\!!stringa\empty \else
+ \processcommacommand[\!!stringa]\dopresetJSvariables
+ \fi
+ \def\docommando##1%
+ {\doifundefinedelse{\r!java\r!java##1}
+ {\showmessage\m!javascript2{##1}}
+ {\useJSpreamblenow{##1}}}%
+% {\doglobal\increment\currentJSpreamble
+% \doglobal\addtocommalist{##1}\allJSpreambles}}%
+ \def\do##1##2%
+ {\xdef\JScode{\ifdirectJScode#1(\JScode)\else\JScode##2\fi}%
+ %\xdef\JScode{JS\string_N=\the\scratchcounter;\JScode}%
+ \processcommalist[##1]\docommando}%
+ \getvalue{\r!java#1}}
+
+\def\dopresetJSvariables#1%
+ {\advance\scratchcounter \plusone
+ \donefalse
+ \dodopresetJSvariables#1\end}%
+
+\def\dodopresetJSvariables
+ {\doifnextcharelse R\dodopresetJSrefvariables
+ {\doifnextcharelse V\dodopresetJSvervariables
+ {\doifnextcharelse S\dodopresetJSstrvariables
+ \dodopresetJSrawvariables}}}
+
+\def\dodopresetJSrefvariables R#1\end
+ {\doifreferencefoundelse{#1}
+ {\donetrue \dododopresetJSvariables R{\referenceprefix#1}%
+ \donefalse\dododopresetJSvariables P{\currentrealreference}}
+ {\unknownreference{#1}}%
+ \ifminimalizeJScode \else
+ \donetrue\dododopresetJSvariables S{#1}%
+ \fi}
+
+\def\dodopresetJSvervariables V#1\end
+ {\donefalse\dododopresetJSvariables V{#1}%
+ \ifminimalizeJScode \else
+ \donetrue\dododopresetJSvariables S{#1}%
+ \fi}
+
+\def\dodopresetJSstrvariables S#1\end
+ {\donetrue\dododopresetJSvariables S{#1}}
+
+\def\dodopresetJSrawvariables #1\end
+ {\donetrue\dododopresetJSvariables S{#1}}
+
+\def\JSprefix#1%
+ {JS\string_#1\string_\the\scratchcounter}
+
+\def\dododopresetJSvariables#1#2%
+ {\iftraceJScode
+ \writestatus{JavaScript}{\JSprefix#1=#2}
+ \xdef\JScode{\JScode console.println("\JSprefix#1=#2"); }%
+ \fi
+ \ifdirectJScode
+ \xdef\JScode{\ifx\JScode\empty\else\JScode,\fi\ifdone"#2"\else#2\fi}%
+ \else
+ \xdef\JScode{\JScode\JSprefix#1=\ifdone"#2"\else#2\fi; }%
+ \fi}
+
+%D \macros
+%D {startJSpreamble, flushJSpreamble}
+%D
+%D One can define insert \JAVASCRIPT\ code at the document level
+%D by using:
+%D
+%D \starttyping
+%D \startJSpreamble{oeps}
+%D oeps = 1 ;
+%D \stopJSpreamble
+%D \stoptyping
+%D
+%D which is the same as:
+%D
+%D \starttyping
+%D \startJSpreamble{now} used now
+%D now = 2 ;
+%D \stopJSpreamble
+%D \stoptyping
+%D
+%D while the next definition is only included when actually
+%D used.
+%D
+%D \starttyping
+%D \startJSpreamble{later} used later
+%D later = 3 ;
+%D \stopJSpreamble
+%D \stoptyping
+%D
+%D This command may be used more that once, but always before
+%D the first page is shipped out.
+
+\newif\ifoneJSpreamble \oneJSpreamblefalse
+
+\let\allJSpreambles\empty
+\newcounter\nofJSpreambles
+\newcounter\currentJSpreamble
+
+\long\def\startJSpreamble#1 #2 %
+ {\bgroup % we need to restore the catcodes
+ \restoreendofline % just in case it happens while reading lists
+ \doifelse{#2}{used}
+ {\dostartJSpreamble#1 }
+ {\dostartJSpreamble#1 now #2 }}
+
+\long\def\dostartJSpreamble#1 #2 %
+ {\processaction
+ [#2]
+ [ later=>\chardef\JSstatus\zerocount,%
+ now=>\chardef\JSstatus\plusone ,%
+ \s!default=>\chardef\JSstatus\plustwo ,%
+ \s!unknown=>\chardef\JSstatus\plustwo ]%
+ \ifaddJSlinebreaks
+ \obeylines \let\obeyedline \normalpar
+ \obeyspaces \let\obeyedspace\normalspace
+ \fi
+ \dodostartJSpreamble{#1}}
+
+\long\def\dodostartJSpreamble#1#2\stopJSpreamble
+ {\presetJSfunctions #2function ()\end
+ \long\setgvalue{\r!java\r!java#1}{#2}%
+ \ifcase\JSstatus \else
+ \useJSpreamblenow{#1}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {setJSpreamble, addtoJSpreamble}
+%D
+%D In addition to the previous preamble definitions, we can
+%D set a preamble \quote {in||line} and add tokens to a
+%D preamble.
+
+\def\setJSpreamble#1#2%
+ {\doifundefined{\r!java\r!java#1}
+ {\setgvalue{\r!java\r!java#1}{#2;}%
+ \doglobal\increment\currentJSpreamble
+ \doglobal\addtocommalist{#1}\allJSpreambles}}
+
+\def\addtoJSpreamble#1#2%
+ {\doifdefinedelse{\r!java\r!java#1}
+ {\edef\!!stringa{\r!java\r!java#1}%
+ \edef\!!stringb{\csname\!!stringa\endcsname}%
+ \@EA\setgvalue\@EA\!!stringa\@EA{\!!stringb #2;}}
+ {\setJSpreamble{#1}{#2}}}
+
+%D \macros
+%D {useJSpreamblenow}
+%D
+%D The next macro can be used to force inclusion of postponed
+%D \JAVASCRIPT\ preambles.
+
+\def\useJSpreamblenow#1%
+ {\doglobal\increment\currentJSpreamble
+ \doglobal\addtocommalist{#1}\allJSpreambles}
+
+%D Because we want to check for valid calls, we preload the
+%D functions. This means that we can call them directly as
+%D well as indirectly when defined by \type {\startJScode} etc.
+
+% \long\def\presetJSfunctions#1function #2(#3)%
+% {\doifelsenothing{#2}
+% {\long\def\presetJSfunctions##1\end{}}
+% {\stripspaces\from#2\to\ascii
+% \doifundefined{\r!java\ascii}{\setgvalue{\r!java\ascii}{\do{}{!}}}}%
+% \presetJSfunctions}
+
+\long\def\presetJSfunctions#1function#2(#3)%
+ {\doifelse{#2}\space
+ {\long\def\presetJSfunctions##1\end{}}
+ {\stripspaces\from#2\to\ascii
+ \doifundefined{\r!java\ascii}{\setgvalue{\r!java\ascii}{\do{}{!}}}}%
+ \presetJSfunctions}
+
+\def\getJSpreamble#1%
+ {\getvalue{\r!java\r!java#1}}
+
+\def\presetJSpreamble
+ {\ifx\allJSpreambles\empty\else
+ \bgroup
+ \setverbosecscharacters
+ \def\par{\delcharacter}% was: { }
+ \globallet\JSpreamble\empty
+ \def\@@collectedJSpreamble{\r!java\r!java collected}%
+ \letvalue{\@@collectedJSpreamble}=\empty
+ \def\docommando##1%
+ {\xdef\JScode{\getvalue{\r!java\r!java##1}}%
+ \ifoneJSpreamble % \global\letcdcsname
+ \@EA\setxvalue\@EA\@@collectedJSpreamble\@EA
+ {\csname\@@collectedJSpreamble\endcsname\JScode}%
+ \else
+ \setxvalue{\r!java\r!java##1}{\JScode}%
+ \fi}%
+ \processcommacommand[\allJSpreambles]\docommando
+ \ifoneJSpreamble
+ \gdef\allJSpreambles{collected}%
+ \fi
+ \globallet\presetJSpreamble\relax
+ \egroup
+ \fi}
+
+\def\flushJSpreamble
+ {\iflocation\ifx\allJSpreambles\empty\else
+ \ifcase\nofJSpreambles\else\ifnum\nofJSpreambles=\currentJSpreamble
+ \bgroup
+ \presetJSpreamble
+ \expanded{\doflushJSpreamble{\allJSpreambles}}%
+ \globallet\flushJSpreamble\relax
+ \globallet\allJSpreambles\empty
+ \egroup
+ \fi\fi
+ \fi\fi}
+
+\def\finalflushJSpreamble
+ {\iflocation
+ \flushJSpreamble
+ \ifcase\currentJSpreamble\relax\else
+ \savecurrentvalue\nofJSpreambles\currentJSpreamble
+ \globallet\currentJSpreamble\nofJSpreambles
+ \fi
+ \fi}
+
+\prependtoks \flushJSpreamble \to \everyshipout
+\prependtoks \finalflushJSpreamble \to \everylastshipout
+
+%D \macros
+%D {doPSsanitizeJScode}
+%D
+%D Before the code can be passed to the (\POSTSCRIPT\ or \PDF)
+%D output file, some precautions must be made concerning the
+%D use of \type{(} and~\type{)}. Here we use a beautiful
+%D \type{\aftergroup} trick I discovered in the \TABLE\ format.
+
+\def\doPSsanitizeJScode#1\to#2%
+ {\begingroup
+ \scratchcounter\zerocount % \aftergroup counter
+ \aftergroup\xdef
+ \aftergroup#2%
+ \aftergroup{%
+ \expanded{\convertargument#1\noexpand\to\noexpand\JScode}%
+ \expandafter\handletokens\JScode\with\dodoPSsanitizeJScode
+ \aftergroup}%
+ \endgroup
+ \iftraceJScode
+ \writestatus{JS trace}{#2}%
+ \fi}
+
+%D I started with:
+%D
+%D \starttyping
+%D \def\dodoPSsanitizeJScode#1%
+%D {\aftergroup\string
+%D \if#1(%
+%D \expandafter\aftergroup\csname#1\endcsname
+%D \else\if#1)%
+%D \expandafter\aftergroup\csname#1\endcsname
+%D \else\if#1;%
+%D \aftergroup;\aftergroup\string\expandafter\aftergroup\
+%D \else
+%D \expandafter\aftergroup#1%
+%D \fi\fi\fi
+%D \advance\scratchcounter by 1
+%D \ifnum\scratchcounter=500
+%D \expandafter\dododoPSsanitizeJScode
+%D \fi}
+%D \stoptyping
+%D
+%D For pretty printing purposes, we need some way to signal
+%D \TEX\ macros. Therefore we introduce a special keyword
+%D \type{TEX}. When followed by a space, this keyword is
+%D ignored, that is, filtered from the stream. Now we have:
+
+\chardef\JSisTEX \zerocount
+\chardef\JScomment\zerocount
+
+\newif\ifaddJSlinebreaks \addJSlinebreakstrue
+
+\def\flushJSisTEX
+ {\ifcase\JSisTEX
+ \or \aftergroup T%
+ \or \aftergroup T\aftergroup E%
+ \or \aftergroup T\aftergroup E\aftergroup X%
+ \fi
+ \chardef\JSisTEX\zerocount}
+
+% \def\doJSlinebreak
+% {\ifaddJSlinebreaks
+% \aftergroup\string\aftergroup\n%
+% \fi}
+%
+% \def\dodoPSsanitizeJScode#1% % input stack>500 & TEX check
+% {\if#1/%
+% \ifnum\JScomment=0
+% \chardef\JScomment\plusone
+% \else\ifnum\JScomment=1
+% \chardef\JScomment\plustwo
+% \fi\fi
+% \else
+% \ifnum\JScomment=1
+% \aftergroup/%
+% \chardef\JScomment\zerocount
+% \fi
+% \ifnum\JScomment=2
+% \if#1\delcharacter
+% \chardef\JScomment\zerocount
+% \fi
+% \else
+% \if#1\delcharacter
+% \flushJSisTEX\doJSlinebreak
+% \else\if#1(%
+% \flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
+% \else\if#1)%
+% \flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
+% \else\if#1;%
+% \flushJSisTEX\aftergroup;\doJSlinebreak
+% \else\if#1T%
+% \ifnum\JSisTEX=0 \chardef\JSisTEX\plusone \else\flushJSisTEX\aftergroup T\fi
+% \else\if#1E%
+% \ifnum\JSisTEX=1 \chardef\JSisTEX\plustwo \else\flushJSisTEX\aftergroup E\fi
+% \else\if#1X%
+% \ifnum\JSisTEX=2 \chardef\JSisTEX\plusthree \else\flushJSisTEX\aftergroup X\fi
+% \else\if#1\normalspace
+% \ifnum\JSisTEX=3 \chardef\JSisTEX\zerocount \else\flushJSisTEX\aftergroup#1\fi
+% \else
+% \flushJSisTEX\aftergroup\string\expandafter\aftergroup#1%
+% \fi\fi\fi\fi\fi\fi\fi\fi
+% \fi
+% \fi
+% \dododoPSsanitizeJScode}
+
+% todo: "http:\\" -> simple. maar wel \" afvangen
+%
+% use new pdftex escape mechanism or make fully expandable version, not used that often btw
+
+\chardef\JSstring\zerocount
+
+\def\doJSlinebreak
+ {\chardef\JScomment\zerocount
+ \chardef\JSstring\zerocount
+ \ifaddJSlinebreaks
+ \aftergroup\string\aftergroup\n%
+ \fi}
+
+\def\dodoPSsanitizeJScode#1% % input stack>500 & TEX check
+ {\if#1/%
+ \ifnum\JSstring=0
+ \ifnum\JScomment=0
+ \chardef\JScomment\plusone
+ \else\ifnum\JScomment=1
+ \chardef\JScomment\plustwo
+ \fi\fi
+ \else
+ \aftergroup/%
+ \fi
+ \else
+ \ifnum\JScomment=1
+ \aftergroup/%
+ \chardef\JScomment\zerocount
+ \fi
+ % is the delchar trick still needed?
+ \ifnum\JScomment=2
+ \ifnum`#1=13 % brrr
+ \doJSlinebreak
+ \else\if#1\par
+ \doJSlinebreak
+ \else\if#1\delcharacter
+ \doJSlinebreak
+ \fi\fi\fi
+ \else
+ \ifnum`#1=13 % brrr
+ \flushJSisTEX\doJSlinebreak
+ \else\if#1\par
+ \flushJSisTEX\doJSlinebreak
+ \else\if#1\delcharacter
+ \flushJSisTEX\doJSlinebreak
+ \else\if#1(%
+ \flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
+ \else\if#1)%
+ \flushJSisTEX\aftergroup\string\expandafter\aftergroup\csname#1\endcsname
+ %\else\if#1;%
+ % \flushJSisTEX\aftergroup;\doJSlinebreak
+ \else\if#1T%
+ \ifnum\JSisTEX=0 \chardef\JSisTEX\plusone \else\flushJSisTEX\aftergroup T\fi
+ \else\if#1E%
+ \ifnum\JSisTEX=1 \chardef\JSisTEX\plustwo \else\flushJSisTEX\aftergroup E\fi
+ \else\if#1X%
+ \ifnum\JSisTEX=2 \chardef\JSisTEX\plusthree \else\flushJSisTEX\aftergroup X\fi
+ \else\if#1\normalspace
+ \ifnum\JSisTEX=3 \chardef\JSisTEX\zerocount \else\flushJSisTEX\aftergroup#1\fi
+ \else
+ % todo: "test\"test"
+ \if#1"%
+ \ifcase\JSstring
+ \chardef\JSstring\plusone
+ \else
+ \chardef\JSstring\zerocount
+ \fi
+ \fi
+ \flushJSisTEX\aftergroup\string\expandafter\aftergroup#1%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi % \fi
+ \fi
+ \fi
+ \dododoPSsanitizeJScode}
+
+%D Close reading learns that one line comments (\type{// ...})
+%D are removed from the stream. This permits switching in
+%D pretty printing \JAVASCRIPT\ sources as well as saves
+%D some bytes.
+
+%D The magic 500 in the next hack prevents the input stack from
+%D overflowing when large scripts are sanitized.
+
+%\beginTEX
+
+\def\dododoPSsanitizeJScode
+ {\ifcase\JSisTEX\ifcase\JScomment
+ \advance\scratchcounter \plusone
+ \fi\fi
+ \ifnum\scratchcounter=500
+ \expandafter\dodododoPSsanitizeJScode
+ \fi}
+
+\def\dodododoPSsanitizeJScode
+ {\let\next={%
+ \aftergroup}%
+ \endgroup
+ \begingroup
+ \aftergroup\xdef
+ \aftergroup\sanitizedJScode
+ \aftergroup{%
+ \aftergroup\sanitizedJScode
+ \let\next=}}
+
+%\endTEX
+%
+% Why is \aftergroup not doing what I expect?
+%
+% \beginETEX \aftergroup
+%
+% \let\dododoPSsanitizeJScode\relax
+%
+% \endETEX
+
+%D The macro \type{\doPSsanitizeJScode} converts its argument
+%D into the macro \type{\sanitizedJScode}, thereby prefixing
+%D each \type{(} and \type{)} by a slash.
+
+%D Hooking this mechanism into the general \CONTEXT\ reference
+%D mechanism does not take much effort:
+
+\definespecialtest{JS}%
+ {\doifdefinedelse{\r!java\currentreferenceoperation}}
+
+\definespeciallocation{JS}#1#2%
+ {\iflocation
+ \bgroup
+ \bgroup
+ \presetJScode
+ \currentreferenceoperation
+ \currentreferencearguments
+ \egroup
+ \dostartgoto
+ \data
+ {#2}%
+ \start
+ \dostartgotoJS\buttonwidth\buttonheight\JScode
+ \stop
+ \dostopgotoJS
+ \dostopgoto
+ \egroup
+ \else
+ {#2}%
+ \fi}
+
+%D \macros
+%D {useJSscripts}
+%D
+%D In due time, users will build their collections of scripts,
+%D which can be used (loaded) when applicable. Although not all
+%D public, we will provide some general purpose scripts,
+%D collected in files with names like \type{java-...}. One can
+%D load these scripts with \type{\useJSscripts}, like:
+%D
+%D \starttyping
+%D \useJSscripts[fld]
+%D \stoptyping
+%D
+%D The not so complicated implementation of this macro is:
+
+\def\dodouseJSscripts#1%
+ {\doifelse{#1}\v!reset
+ {\let\allJSpreambles\empty}
+ {\doifundefined{\c!file\f!javascriptprefix#1}
+ {\startnointerference
+ \letgvalueempty{\c!file\f!javascriptprefix#1}%
+ \makeshortfilename[\f!javascriptprefix#1]%
+ \showmessage\m!javascript1{#1}%
+ \startreadingfile
+ \readsysfile\shortfilename\donothing\donothing
+ \stopreadingfile
+ \stopnointerference}}}
+
+\def\douseJSscripts[#1][#2]%
+ {\processcommalist[#1]\dodouseJSscripts
+ \processcommalist[#2]\useJSpreamblenow}
+
+\def\useJSscripts
+ {\dodoubleempty\douseJSscripts}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/java-stp.tex b/Master/texmf-dist/tex/context/base/java-stp.tex
new file mode 100644
index 00000000000..fcb9d4f22d3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/java-stp.tex
@@ -0,0 +1,127 @@
+%D \module
+%D [ file=java-stp,
+%D version=2004.03.15,
+%D title=\CONTEXT\ JavaScript Macros,
+%D subtitle=Stepping,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startJSpreamble Steps used now
+
+ % we define ocglist global, otherwise we quickly run into a memory hog (even
+ % out of memory in a 512 Meg machine)
+
+ % we cannot use doc_visited[this.pageNum] instead of doc_currentstep because
+ % of some funny side effect (i.e. dup or so)
+
+ var doc_ocglist = this.getOCGs() ;
+ var doc_stepname = "step" ;
+ var doc_currentstep = 0 ;
+ var doc_maxstep = 50 ;
+ var doc_visited = new Array() ;
+ var doc_busy = new Array() ;
+
+ % for some reason, this function is not seen in time (funny initialization
+ % order again?) ...
+
+ function SetupStepper ( layername, laststep ) {
+ doc_stepname = layername ;
+ doc_maxstep = laststep ;
+ for (var i=0; i<=this.numPages; i++) {
+ doc_visited[i] = 0 ;
+ doc_busy[i] = 0 ;
+ }
+ }
+
+ % so, we do it the ugly way
+
+ for (var i=0; i<=this.numPages; i++) {
+ doc_visited[i] = 0 ;
+ doc_busy[i] = 0 ;
+ }
+
+ function GetOCG ( name ) {
+ for (var i=0; i < doc_ocglist.length; i++) {
+ if (doc_ocglist[i].name == name) {
+ return doc_ocglist[i] ;
+ }
+ }
+ return null ;
+ }
+
+ function CheckBusy ( ) {
+ var ocg = GetOCG("step:busy") ;
+ if (ocg != null) {
+ if (doc_visited[this.pageNum]==0) {
+ ocg.state = true ;
+ } else {
+ if (doc_visited[this.pageNum]<doc_busy[this.pageNum]) {
+ ocg.state = true ;
+ } else {
+ ocg.state = false ;
+ }
+ }
+ }
+ }
+
+ function SetStepper ( maxstep, state ) {
+ for (var i=1; i<=maxstep; i++) {
+ try {
+ var ocg = GetOCG(doc_stepname + ':' + String(i)) ;
+ if (ocg != null) {
+ ocg.state = state ;
+ }
+ } catch (e) {
+ return ;
+ }
+ }
+ }
+
+ function CheckStepper ( maxsteps ) {
+ SetStepper(doc_visited[this.pageNum], true) ;
+ doc_busy[this.pageNum] = Number(maxsteps) ;
+ doc_currentstep = doc_visited[this.pageNum] ;
+ CheckBusy() ;
+ }
+
+ function ResetStepper ( ) {
+ SetStepper(doc_maxstep, false) ;
+ doc_currentstep = 0 ;
+ }
+
+ function InvokeStepper ( ) {
+ try {
+% console.println("INVOKE "+doc_currentstep+" "+doc_busy[this.pageNum]) ;
+ if (doc_currentstep<doc_busy[this.pageNum]) {
+ doc_currentstep += 1 ;
+ doc_visited[this.pageNum] = doc_currentstep ;
+ var ocg = GetOCG(doc_stepname + ':' + String(doc_currentstep)) ;
+ if (ocg != null) {
+ ocg.state = true ;
+ }
+ } else {
+ if (this.pageNum+1==this.numPages) {
+ this.pageNum = 0 ;
+ } else {
+ this.pageNum += 1 ;
+ }
+ }
+ CheckBusy() ;
+ } catch (e) {
+ return ;
+ }
+ }
+
+\stopJSpreamble
+
+% \definereference [SetupStepper] [JS(SetupStepper{step,50})]
+% \definereference [ResetStepper] [JS(ResetStepper)]
+% \definereference [CheckStepper] [JS(CheckStepper{\StepCounter})]
+% \definereference [InvokeStepper] [JS(InvokeStepper)]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-all.xml b/Master/texmf-dist/tex/context/base/lang-all.xml
new file mode 100644
index 00000000000..c0dfc67653e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-all.xml
@@ -0,0 +1,340 @@
+<?xml version='1.0' standalone='yes'?>
+
+<!-- author: Willy Egger -->
+
+<descriptions>
+
+<description language='ba'>
+ <sourcefile>bahyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Basque language</title>
+ <copyright>
+ <year>1991</year>
+ <owner>Julio Sanchez (jsanchez@gmv.es)</owner>
+ <comment>These patterns have been derived from "On Word Division in Spanish"
+ Jos'e A. Ma~nas</comment>
+ </copyright>
+ <copyright>
+ <year>1997</year>
+ <owner>Juan M. Aguirregabiria (wtpagagj@lg.ehu.es)</owner>
+ <comment>Adaption to TeX based on shyphen.sh</comment>
+ </copyright>
+</description>
+
+<description language='ca'>
+ <sourcefile>cahyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Catalan language</title>
+ <remarks>Version 1.11</remarks>
+ <copyright>
+ <year>1991-1995 </year>
+ <owner>Gon\c{c}al Badenes,Francina Turon</owner>
+ </copyright>
+ <copyright>
+ <year>1991-2003</year>
+ <owner>Gon\c{c}al Badenes</owner>
+ </copyright>
+</description>
+
+<description language='cy'>
+ <sourcefile>cyhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Welsh Language</title>
+ <remarks>v3,GNU General Public License</remarks>
+ <copyright>
+ <year>1996</year>
+ <owner>Yannis Haralambous</owner>
+ <comment>Inputs cathyph.tex, patterns in EC/DC encoding</comment>
+ </copyright>
+</description>
+
+<description language='cz'>
+ <sourcefile>czhyphen.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Czech language</title>
+ <copyright>
+ <year>1991</year>
+ <owner>Karel Horak</owner>
+ <comment>List of exceptions</comment>
+ </copyright>
+ <copyright>
+ <year>1995</year>
+ <owner>Pavel Sevecek (\v{S}eve\v{c}ek) (pavel@lingea.cz)</owner>
+ <comment>Macros, adaption for TeX 2</comment>
+ </copyright>
+ <!-- samples>
+ <sample>au-to-ma-tic-ký</sample>
+ <sample>bram-bo-rák</sample>
+ <sample>da-ta-bá-ze</sample>
+ <sample>kr-ka-vec</sample>
+ <sample>Kro-me-ríš</sample>
+ <sample>ob-hos-po-da-ro-vat</sample>
+ <sample>rem-dich</sample>
+ <sample>scvrk-nout</sample>
+ <sample>za-les-nit</sample>
+ <sample>že-žu-lic-ka</sample>
+ </samples -->
+</description>
+
+<description language='da'>
+ <sourcefile>dkspecial.tex dkcommon.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Danish language</title>
+ <copyright/>
+</description>
+
+<description language='de'>
+ <sourcefile>dehyphn.tex</sourcefile>
+ <title>TeX hyphenation patterns for the German language (new orthography)</title>
+ <copyright>
+ <year>1988, 1991</year>
+ <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+ <comment>German hyphen patterns</comment>
+ </copyright>
+ <copyright>
+ <year>1993, 1994, 1999</year>
+ <owner>Bernd Raichle/DANTE e.V.</owner>
+ <comment>Macros, adaption for TeX 2</comment>
+ </copyright>
+ <copyright>
+ <year>1998-2001</year>
+ <owner>Walter Schmidt</owner>
+ <comment>Adaption to new German orthography</comment>
+ </copyright>
+</description>
+
+<description language='deo'>
+ <sourcefile>dehypht.tex</sourcefile>
+ <title>TeX hyphenation patterns for the German language (traditional orthography)</title>
+ <copyright>
+ <year>1988, 1991</year>
+ <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+ <comment>German hyphen patterns</comment>
+ </copyright>
+ <copyright>
+ <year>1993, 1994, 1999</year>
+ <owner>Bernd Raichle/DANTE e.V.</owner>
+ <comment>Macros, adaption for TeX 2</comment>
+ </copyright>
+</description>
+
+<description language='en'>
+ <sourcefile>hyphen.tex</sourcefile>
+ <title>Plain TeX hyphenation patterns for the English language (US) </title>
+ <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+ <copyright/>
+</description>
+
+<description language='es'>
+ <sourcefile>eshyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Spanish language</title>
+ <copyright>
+ <year>1993</year>
+ <owner>Francesc Carmona (franc@porthos.bio.ub.es)</owner>
+ </copyright>
+</description>
+
+<description language='fi'>
+ <sourcefile>fihyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Finnish language</title>
+ <copyright>
+ <year>1986</year>
+ <owner>Kauko Saarinen</owner>
+ <comment>First release</comment>
+ </copyright>
+ <copyright>
+ <year>1988</year>
+ <owner>Fred Karlsson</owner>
+ <comment>Completely rewritten patterns</comment>
+ </copyright>
+ <copyright>
+ <year>1989</year>
+ <owner>Fred Karlsson</owner>
+ <comment>Some vowel tripples added</comment>
+ </copyright>
+ <copyright>
+ <year>1995</year>
+ <owner>Thomas Esser</owner>
+ <comment>Added \uccode and \lccode </comment>
+ </copyright>
+</description>
+
+<description language='fr'>
+ <sourcefile>frhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the French language</title>
+ <remarks>V2.11</remarks>
+ <copyright>
+ <owner>Jacques Desarmenien, Norman Buckle, Michael Ferguson, Justin Bur, Daniel Flipo and Bernard Gaulle</owner>
+ </copyright>
+ <copyright>
+ <year>1996</year>
+ <owner>Bernd Raichle/DANTE e.V.</owner>
+ <comment>Adaption for TeX 3.x and MLTeX 3.x (2.x)</comment>
+ </copyright>
+</description>
+
+<description language='hr'>
+ <sourcefile> hrhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Croatian language</title>
+ <copyright>
+ <year>1994, 1996</year>
+ <owner>Marinovi\'c Igor (migor@student.math.hr)</owner>
+ </copyright>
+</description>
+
+<description language='hu'>
+ <sourcefile> huhyphn.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Hungarian language</title>
+</description>
+
+<description language='is'>
+ <sourcefile>dehyphn.tex</sourcefile>
+ <title>Plain TeX hyphenation patterns for the Icelandic language</title>
+ <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+ <copyright>
+ <year>1987</year>
+ <owner>Jorgen Pind</owner>
+ </copyright>
+</description>
+
+<description language='it'>
+ <sourcefile>ithyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Italian language</title>
+ <remarks>v4.8d</remarks>
+ <copyright>
+ <year>1998, 2001</year>
+ <owner>Claudio Beccari</owner>
+ </copyright>
+ <copyright>
+ <year>1993, 1994, 1999</year>
+ <owner>Bernd Raichle/DANTE e.V.</owner>
+ <comment>Macros, adaption for TeX 2</comment>
+ </copyright>
+</description>
+
+<description language='la'>
+ <sourcefile>lahyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Latin language</title>
+ <remarks>v3.0b</remarks>
+ <copyright>
+ <year>1999-2001</year>
+ <owner>Claudio Beccari</owner>
+ </copyright>
+ <copyright>
+ <year>1993, 1994, 1998, 1999</year>
+ <owner>Bernd Raichle/DANTE e.V.</owner>
+ <comment>Macro code in 'dehypht.tex'</comment>
+ </copyright>
+</description>
+
+<description language='nl'>
+ <sourcefile>nehyph96.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Dutch language</title>
+ <copyright>
+ <year>1996</year>
+ <owner> Piet Tutelaers (P.T.H.Tutelaers@tue.nl)</owner>
+ <comment>8-bit hyphenation patterns for TeX based upon the new Dutch
+ spelling, officially since 1 August 1996. These patterns follow
+ the new hyphenation rules in the `Woordenlijst Nederlandse
+ Taal, SDU Uitgevers, Den Haag 1995' (the so called `Groene
+ Boekje') described in section 5.2 (Het afbreekteken)</comment>
+ </copyright>
+</description>
+
+<description language='no'>
+ <sourcefile>nohyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Norwegian language</title>
+ <copyright>
+ <year>1992,1993</year>
+ <owner>Ivar Aavatsmark</owner>
+ <comment>nohyphen.tex based on danhyph.tex</comment>
+ </copyright>
+ <copyright>
+ <year>1994</year>
+ <owner>Preben Randhol, Jon Martin Solaas</owner>
+ </copyright>
+ <copyright>
+ <year>1995</year>
+ <owner>Thomas Esser (te@dbs.uni-hannover.de)</owner>
+ <comment>Make patterns work with non-T1 encoding</comment>
+ </copyright>
+</description>
+
+<description language='pl'>
+ <sourcefile>plhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Polish language</title>
+ <copyright/>
+</description>
+
+<description language='pt'>
+ <sourcefile>pthyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Portuguese language</title>
+ <copyright/>
+</description>
+
+<description language='ro'>
+ <sourcefile>rohyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Romanian language</title>
+ <copyright/>
+</description>
+
+<description language='sk'>
+ <sourcefile>skhyphen.tex skhyphen.ex</sourcefile>
+ <title>TeX hyphenation patterns for the Slovakian language</title>
+ <copyright>
+ <year>1992</year>
+ <owner>Jana Chlebikova</owner>
+ </copyright>
+ <copyright>
+ <year>1991</year>
+ <owner>Karel Horak</owner>
+ <comment>List of exceptions</comment>
+ </copyright>
+</description>
+
+<description language='sl'>
+ <sourcefile>sihyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Slovenian language</title>
+ <copyright>
+ <year>1990</year>
+ <owner>TeXCeX (SLO),TeXCeH Norbert Schwarz</owner>
+ </copyright>
+ <copyright>
+ <year>1994</year>
+ <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+ <comment>Use of code page 852 in patterns</comment>
+ </copyright>
+ <copyright>
+ <year>1995,1997</year>
+ <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+ <comment>Adaptaion of Slovenian hyphenation pattens, macros</comment>
+ </copyright>
+</description>
+
+<description language='sv'>
+ <sourcefile>svhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the Swedish language</title>
+ <copyright>
+ <year>1991,1994</year>
+ <owner>Jan Michael Rynning</owner>
+ </copyright>
+</description>
+
+<description language='tr'>
+ <sourcefile>tkhyph.tex</sourcefile>
+ <title>TeX hyphenation patterns for the modern Turkish language</title>
+ <copyright>
+ <year>1996</year>
+ <owner>Yannis Haralambous</owner>
+ <comment>A mechanically generated Turkish Hyphenation table for TeX,
+ using the University of Washington diacritical coding
+ developed by P. A. MacKay for the Ottoman Texts Project</comment>
+ </copyright>
+</description>
+
+<description language='uk'>
+ <sourcefile>ukhyphen.tex</sourcefile>
+ <title>TeX hyphenation patterns for the English language (UK)</title>
+ <copyright/>
+</description>
+
+<description language='vn'>
+ <comment>Vietnamese needs no patterns.</comment>
+</description>
+
+</descriptions>
diff --git a/Master/texmf-dist/tex/context/base/lang-alt.tex b/Master/texmf-dist/tex/context/base/lang-alt.tex
new file mode 100644
index 00000000000..d59df78bd5d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-alt.tex
@@ -0,0 +1,92 @@
+%D \module
+%D [ file=lang-alt,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Altaic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Altaic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Uigur, Uzbek
+% Azeri/Azerbaijani, Chuvash, Turkish, Turkmen
+% Kazakh, Kazar, Kireghiz, Noghay, Talar
+% Buryat, Kalmuck, Khalkha
+
+\unprotect
+
+\installlanguage
+ [\s!tr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!state=\v!stop]
+
+\installlanguage [turkish] [\s!tr]
+
+\setupheadtext [\s!tr] [\v!content=Fihrist]
+\setupheadtext [\s!tr] [\v!tables=Tablolar]
+\setupheadtext [\s!tr] [\v!figures=\Scedilla ekiller]
+\setupheadtext [\s!tr] [\v!graphics=Grafikler]
+\setupheadtext [\s!tr] [\v!intermezzi=...]
+\setupheadtext [\s!tr] [\v!index=\Idotaccent ndex]
+\setupheadtext [\s!tr] [\v!abbreviations=K\dotlessi saltmalar]
+\setupheadtext [\s!tr] [\v!logos=Logolar]
+\setupheadtext [\s!tr] [\v!units=Birimler]
+
+\setuplabeltext [\s!tr] [\v!table=Tablo ]
+\setuplabeltext [\s!tr] [\v!figure=\Scedilla ekil ]
+\setuplabeltext [\s!tr] [\v!intermezzo=... ]
+\setuplabeltext [\s!tr] [\v!graphic=Grafik ]
+\setuplabeltext [\s!tr] [\v!chapter=]
+\setuplabeltext [\s!tr] [\v!section=]
+\setuplabeltext [\s!tr] [\v!subsection=]
+\setuplabeltext [\s!tr] [\v!subsubsection=]
+\setuplabeltext [\s!tr] [\v!subsubsubsection=]
+\setuplabeltext [\s!tr] [\v!appendix=]
+\setuplabeltext [\s!tr] [\v!part=Cilt ]
+\setuplabeltext [\s!tr] [\v!line=sat\dotlessi r ]
+\setuplabeltext [\s!tr] [\v!lines=sat\dotlessi rlar ]
+
+\setuplabeltext [\s!tr] [\v!january=ocak]
+\setuplabeltext [\s!tr] [\v!february=\Scedilla ubat]
+\setuplabeltext [\s!tr] [\v!march=mart]
+\setuplabeltext [\s!tr] [\v!april=nisan]
+\setuplabeltext [\s!tr] [\v!may=may\dotlessi s]
+\setuplabeltext [\s!tr] [\v!june=haziran]
+\setuplabeltext [\s!tr] [\v!july=temmuz]
+\setuplabeltext [\s!tr] [\v!august=a\gbreve ustos]
+\setuplabeltext [\s!tr] [\v!september=eyl\udiaeresis l]
+\setuplabeltext [\s!tr] [\v!october=ekim]
+\setuplabeltext [\s!tr] [\v!november=kas\dotlessi m]
+\setuplabeltext [\s!tr] [\v!december=aral\dotlessi k]
+
+\setuplabeltext [\s!tr] [\v!sunday=pazar]
+\setuplabeltext [\s!tr] [\v!monday=pazartesi]
+\setuplabeltext [\s!tr] [\v!tuesday=sal\dotlessi]
+\setuplabeltext [\s!tr] [\v!wednesday=\ccedilla ar\scedilla amba]
+\setuplabeltext [\s!tr] [\v!thursday=per\scedilla embe]
+\setuplabeltext [\s!tr] [\v!friday=cuma]
+\setuplabeltext [\s!tr] [\v!saturday=cumartesi]
+
+%D \ShowAllLanguageValues [\s!tr] [turkish] {Turkish} {delight} % turks fruit
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ana.tex b/Master/texmf-dist/tex/context/base/lang-ana.tex
new file mode 100644
index 00000000000..336be50f275
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ana.tex
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=lang-ana,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Anatolian Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Anatolian Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+\unprotect
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-art.tex b/Master/texmf-dist/tex/context/base/lang-art.tex
new file mode 100644
index 00000000000..3f857e11e29
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-art.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=lang--art,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Artificial Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Artificial Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Esperanto
+
+\unprotect
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-bal.tex b/Master/texmf-dist/tex/context/base/lang-bal.tex
new file mode 100644
index 00000000000..c4e0f31f7d5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-bal.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=lang--bal,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Baltic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Baltic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Lettish/Latvian, Lithuanian
+
+\unprotect
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-cel.tex b/Master/texmf-dist/tex/context/base/lang-cel.tex
new file mode 100644
index 00000000000..abbeb10c6b1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-cel.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=lang-cel,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Celtic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Celtic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% Breton, Welsh, Irish, Manx, Scottish Gaelic
+
+\unprotect
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-chi.tex b/Master/texmf-dist/tex/context/base/lang-chi.tex
new file mode 100644
index 00000000000..b6c3ba20af1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-chi.tex
@@ -0,0 +1,192 @@
+%D \module
+%D [ file=lang-chi,
+%D version=2002.06.25, % 1998.10.10,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Chinese,
+%D author={Hans Hagen \& Wang Lei},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Language Macros / Chinese}
+
+%D This module is coded using the \UNICODE\ support built in
+%D \CONTEXT. Therefore, \type {\uchar} is used instead of latin
+%D characters.
+
+\unprotect
+
+\definesystemconstant {chinese} \definesystemconstant {cn}
+
+\installlanguage
+ [\s!cn]
+ [\c!leftsentence=\cnencoding\cnleftsentence,
+ \c!rightsentence=\cnencoding\cnrightsentence,
+ \c!leftsubsentence=\cnencoding\cnleftsubsentence,
+ \c!rightsubsentence=\cnencoding\cnrightsubsentence,
+ \c!leftquote=\cnencoding\cnupperleftsinglequote,
+ \c!rightquote=\cnencoding\cnupperrightsinglequote,
+ \c!leftquotation=\cnencoding\cnupperleftdoublequote,
+ \c!rightquotation=\cnencoding\cnupperrightdoublequote,
+ \c!date={\v!month,\ ,\v!day,{,\ },\v!year},
+ \c!state=\v!stop]
+
+\setupheadtext [\s!cn] [\v!content={\cnencoding\cnencodedcontents}]
+\setupheadtext [\s!cn] [\v!tables={\cnencoding\cnencodedtables}]
+\setupheadtext [\s!cn] [\v!figures={\cnencoding\cnencodedfigures}]
+\setupheadtext [\s!cn] [\v!graphics=Graphics]
+\setupheadtext [\s!cn] [\v!intermezzi=Intermezzos]
+\setupheadtext [\s!cn] [\v!index={\cnencoding\cnencodedindex}]
+\setupheadtext [\s!cn] [\v!abbreviations={\cnencoding\cnencodedabbreviations}]
+\setupheadtext [\s!cn] [\v!logos={\cnencoding\cnencodedlogos}]
+\setupheadtext [\s!cn] [\v!units={\cnencoding\cnencodedunits}]
+
+\setuplabeltext [\s!cn] [\v!table={\cnencoding\cnencodedtable}]
+\setuplabeltext [\s!cn] [\v!figure={\cnencoding\cnencodedfigure}]
+\setuplabeltext [\s!cn] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!cn] [\v!graphic=Illustration ]
+\setuplabeltext [\s!cn] [\v!appendix=]
+\setuplabeltext [\s!cn] [\v!part={\cnencoding\cnencodedintro,\cnencoding\cnencodedpart}]
+\setuplabeltext [\s!cn] [\v!chapter={\cnencoding\cnencodedintro,\cnencoding\cnencodedchapter}]
+\setuplabeltext [\s!cn] [\v!section={\cnencoding\cnencodedintro,\cnencoding\cnencodedsection}]
+\setuplabeltext [\s!cn] [\v!line=line ]
+\setuplabeltext [\s!cn] [\v!lines=lines ]
+
+\setuplabeltext [\s!cn] [\v!subsection=]
+\setuplabeltext [\s!cn] [\v!subsubsection=]
+\setuplabeltext [\s!cn] [\v!subsubsubsection=]
+
+%D From this definition one can deduce that language, input
+%D encoding, font encoding, and glyph meaning form a pretty
+%D complex four dimensional space.
+
+\startlanguagespecifics[\s!cn]
+
+\setuplabeltext [\s!cn] [\v!january=\cnencoding\cnencodedjanuary ]
+\setuplabeltext [\s!cn] [\v!february=\cnencoding\cnencodedfebrary ]
+\setuplabeltext [\s!cn] [\v!march=\cnencoding\cnencodedmarch ]
+\setuplabeltext [\s!cn] [\v!april=\cnencoding\cnencodedapril ]
+\setuplabeltext [\s!cn] [\v!may=\cnencoding\cnencodedmay ]
+\setuplabeltext [\s!cn] [\v!june=\cnencoding\cnencodedjune ]
+\setuplabeltext [\s!cn] [\v!july=\cnencoding\cnencodedjuly ]
+\setuplabeltext [\s!cn] [\v!august=\cnencoding\cnencodedaugust ]
+\setuplabeltext [\s!cn] [\v!september=\cnencoding\cnencodedseptember]
+\setuplabeltext [\s!cn] [\v!october=\cnencoding\cnencodedoctober ]
+\setuplabeltext [\s!cn] [\v!november=\cnencoding\cnencodednovember ]
+\setuplabeltext [\s!cn] [\v!december=\cnencoding\cnencodeddecember ]
+
+\setuplabeltext [\s!cn] [\v!sunday=\cnencoding\cnencodedsunday ]
+\setuplabeltext [\s!cn] [\v!monday=\cnencoding\cnencodedmonday ]
+\setuplabeltext [\s!cn] [\v!tuesday=\cnencoding\cnencodedtuesday ]
+\setuplabeltext [\s!cn] [\v!wednesday=\cnencoding\cnencodedwednesday]
+\setuplabeltext [\s!cn] [\v!thursday=\cnencoding\cnencodedthursday ]
+\setuplabeltext [\s!cn] [\v!friday=\cnencoding\cnencodedfriday ]
+\setuplabeltext [\s!cn] [\v!saturday=\cnencoding\cnencodedsaturday ]
+
+\stoplanguagespecifics
+
+%D One can specify a split labeltext, as demonstrated in
+%D the definition of the \type {part} label. Unfortunately
+%D the glyphs of both part depend on the encoding. Therefore,
+%D we have an encoding section here.
+
+\def\cnencoding{\enableencoding[\chineseencoding]} % ugly and temporary
+
+\startencoding[gbk]
+ \definecommand cnleftsentence {\uchar{161}{170}\uchar{161}{170}}
+ \definecommand cnrightsentence {\uchar{161}{170}\uchar{161}{170}}
+ \definecommand cnleftsubsentence {\uchar{161}{170}\uchar{161}{170}}
+ \definecommand cnrightsubsentence {\uchar{161}{170}\uchar{161}{170}}
+ \definecommand cnupperleftsinglequote {\uchar{161}{174}}
+ \definecommand cnupperrightsinglequote {\uchar{161}{175}}
+ \definecommand cnupperleftdoublequote {\uchar{161}{176}}
+ \definecommand cnupperrightdoublequote {\uchar{161}{177}}
+ \definecommand cnupperleftsinglequote-v {\uchar{161}{184}}
+ \definecommand cnupperrightsinglequote-v {\uchar{161}{185}}
+ \definecommand cnupperleftdoublequote-v {\uchar{161}{186}}
+ \definecommand cnupperrightdoublequote-v {\uchar{161}{187}}
+ \definecommand cnencodedcontents {\uchar{196}{191}\uchar{194}{188}}
+ \definecommand cnencodedtables {\uchar{177}{237}\uchar{184}{241}}
+ \definecommand cnencodedfigures {\uchar{205}{188}\uchar{208}{206}}
+ \definecommand cnencodedindex {\uchar{203}{247}\uchar{210}{253}}
+ \definecommand cnencodedabbreviations {\uchar{203}{245}\uchar{194}{212}\uchar{211}{239}}
+ \definecommand cnencodedlogos {\uchar{187}{213}\uchar{177}{225}}
+ \definecommand cnencodedunits {\uchar{188}{198}\uchar{193}{191}\uchar{181}{165}\uchar{206}{187}}
+ \definecommand cnencodedtable {\uchar{177}{237}}
+ \definecommand cnencodedfigure {\uchar{205}{188}}
+ \definecommand cnencodedintro {\uchar{181}{218}}
+ \definecommand cnencodedpart {\uchar{178}{191}\uchar{183}{214}}
+ \definecommand cnencodedchapter {\uchar{213}{194}}
+ \definecommand cnencodedsection {\uchar{189}{218}}
+ \definecommand cnencodedjanuary {\uchar{210}{187}\uchar{212}{194}}
+ \definecommand cnencodedfebrary {\uchar{182}{254}\uchar{212}{194}}
+ \definecommand cnencodedmarch {\uchar{200}{253}\uchar{212}{194}}
+ \definecommand cnencodedapril {\uchar{203}{196}\uchar{212}{194}}
+ \definecommand cnencodedmay {\uchar{206}{229}\uchar{212}{194}}
+ \definecommand cnencodedjune {\uchar{193}{249}\uchar{212}{194}}
+ \definecommand cnencodedjuly {\uchar{198}{223}\uchar{212}{194}}
+ \definecommand cnencodedaugust {\uchar{176}{203}\uchar{212}{194}}
+ \definecommand cnencodedseptember {\uchar{190}{197}\uchar{212}{194}}
+ \definecommand cnencodedoctober {\uchar{202}{174}\uchar{212}{194}}
+ \definecommand cnencodednovember {\uchar{202}{174}\uchar{210}{187}\uchar{212}{194}}
+ \definecommand cnencodeddecember {\uchar{202}{174}\uchar{182}{254}\uchar{212}{194}}
+ \definecommand cnencodedsunday {\uchar{208}{199}\uchar{198}{218}\uchar{200}{213}}
+ \definecommand cnencodedmonday {\uchar{208}{199}\uchar{198}{218}\uchar{210}{187}}
+ \definecommand cnencodedtuesday {\uchar{208}{199}\uchar{198}{218}\uchar{182}{254}}
+ \definecommand cnencodedwednesday {\uchar{208}{199}\uchar{198}{218}\uchar{200}{253}}
+ \definecommand cnencodedthursday {\uchar{208}{199}\uchar{198}{218}\uchar{203}{196}}
+ \definecommand cnencodedfriday {\uchar{208}{199}\uchar{198}{218}\uchar{206}{229}}
+ \definecommand cnencodedsaturday {\uchar{208}{199}\uchar{198}{218}\uchar{193}{249}}
+\stopencoding
+
+\startencoding[big5]
+ \definecommand cnleftsentence {\uchar{162}{119}\uchar{162}{119}}
+ \definecommand cnrightsentence {\uchar{162}{119}\uchar{162}{119}}
+ \definecommand cnleftsubsentence {\uchar{162}{119}\uchar{162}{119}}
+ \definecommand cnrightsubsentence {\uchar{162}{119}\uchar{162}{119}}
+ \definecommand cnupperleftsinglequote {\uchar{161}{165}}
+ \definecommand cnupperrightsinglequote {\uchar{161}{166}}
+ \definecommand cnupperleftdoublequote {\uchar{161}{167}}
+ \definecommand cnupperrightdoublequote {\uchar{161}{168}}
+ \definecommand cnupperleftsinglequote-v {\uchar{161}{117}}
+ \definecommand cnupperrightsinglequote-v {\uchar{161}{118}}
+ \definecommand cnupperleftdoublequote-v {\uchar{161}{121}}
+ \definecommand cnupperrightdoublequote-v {\uchar{161}{122}}
+ \definecommand cnencodecontents {\uchar{165}{216}\uchar{191}{253}}
+ \definecommand cnencodetables {\uchar{170}{237}\uchar{174}{230}}
+ \definecommand cnencodefigures {\uchar{185}{207}\uchar{167}{206}}
+ \definecommand cnencodeindex {\uchar{175}{193}\uchar{174}{222}}
+ \definecommand cnencodeabbreviations {\uchar{191}{89}\uchar{178}{164}\uchar{187}{121}}
+ \definecommand cnencodelogos {\uchar{192}{178}\uchar{188}{208}}
+ \definecommand cnencodeunits {\uchar{173}{112}\uchar{182}{113}\uchar{179}{230}\uchar{166}{236}}
+ \definecommand cnencodetable {\uchar{170}{237}}
+ \definecommand cnencodefigure {\uchar{185}{207}}
+ \definecommand cnencodedintro {\uchar{178}{196}}
+ \definecommand cnencodedpart {\uchar{179}{161}\uchar{164}{192}}
+ \definecommand cnencodedchapter {\uchar{179}{185}}
+ \definecommand cnencodedsection {\uchar{184} {96}}
+ \definecommand cnencodedjanuary {\uchar{164} {64}\uchar{164}{235}}
+ \definecommand cnencodedfebrary {\uchar{164} {71}\uchar{164}{235}}
+ \definecommand cnencodedmarch {\uchar{164} {84}\uchar{164}{235}}
+ \definecommand cnencodedapril {\uchar{165}{124}\uchar{164}{235}}
+ \definecommand cnencodedmay {\uchar{164}{173}\uchar{164}{235}}
+ \definecommand cnencodedjune {\uchar{164}{187}\uchar{164}{235}}
+ \definecommand cnencodedjuly {\uchar{164} {67}\uchar{164}{235}}
+ \definecommand cnencodedaugust {\uchar{164} {75}\uchar{164}{235}}
+ \definecommand cnencodedseptember {\uchar{164} {69}\uchar{164}{235}}
+ \definecommand cnencodedoctober {\uchar{164} {81}\uchar{164}{235}}
+ \definecommand cnencodednovember {\uchar{164} {81}\uchar{164} {64}\uchar{164}{235}}
+ \definecommand cnencodeddecember {\uchar{164} {81}\uchar{164} {71}\uchar{164}{235}}
+ \definecommand cnencodedsunday {\uchar{172} {80}\uchar{180}{193}\uchar{164}{233}}
+ \definecommand cnencodedmonday {\uchar{172} {80}\uchar{180}{193}\uchar{164} {64}}
+ \definecommand cnencodedtuesday {\uchar{172} {80}\uchar{180}{193}\uchar{164} {71}}
+ \definecommand cnencodedwednesday {\uchar{172} {80}\uchar{180}{193}\uchar{164} {84}}
+ \definecommand cnencodedthursday {\uchar{172} {80}\uchar{180}{193}\uchar{165}{124}}
+ \definecommand cnencodedfriday {\uchar{172} {80}\uchar{180}{193}\uchar{164}{173}}
+ \definecommand cnencodedsaturday {\uchar{172} {80}\uchar{180}{193}\uchar{164}{187}}
+\stopencoding
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ctx.tex b/Master/texmf-dist/tex/context/base/lang-ctx.tex
new file mode 100644
index 00000000000..b3a2e020fd5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ctx.tex
@@ -0,0 +1,47 @@
+%D \module
+%D [ file=lang-ctx,
+%D version=2005.02.12,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Generic Patterns,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Language Macros / Generic Patterns}
+
+\unprotect
+
+%D The \CONTEXT\ specific patterns are more generic and
+%D are more or less encoding independent. They are generated
+%D from the ones shipped with distributions using:
+%D
+%D \starttyping
+%D ctxtools --pattern --all
+%D \stoptyping
+
+%D In order to get 8 bit characters hyphenated, we need to load
+%D patterns under the right circumstances. In some countries, more
+%D than one font encoding is in use. I can add more defaults here
+%D if users let me know what encoding they use.
+
+\installlanguage [\s!nl] [\s!mapping={texnansi,ec},\s!encoding={texnansi,ec}]
+\installlanguage [\s!fr] [\s!mapping={texnansi,ec},\s!encoding={texnansi,ec}]
+\installlanguage [\s!de] [\s!mapping={texnansi,ec},\s!encoding={texnansi,ec}]
+\installlanguage [\s!it] [\s!mapping={texnansi,ec},\s!encoding={texnansi,ec}]
+
+\installlanguage [\s!pt] [\s!mapping={texnansi,ec},\s!encoding={texnansi,ec}]
+
+\installlanguage [\s!hr] [\s!mapping=ec,\s!encoding=ec] % no il2, misses cacute characters
+
+\installlanguage [\s!pl] [\s!mapping={pl0,ec,qx},\s!encoding={pl0,ec,qx}] % pl0 may go
+\installlanguage [\s!cz] [\s!mapping={il2,ec},\s!encoding={il2,ec}] % il2 may go
+\installlanguage [\s!sk] [\s!mapping={il2,ec},\s!encoding={il2,ec}] % il2 may go
+\installlanguage [\s!sl] [\s!mapping={il2,ec},\s!encoding={il2,ec}] % il2 may go
+
+\installlanguage [\s!vn] [\s!mapping=t5,\s!encoding=t5]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-cyr.tex b/Master/texmf-dist/tex/context/base/lang-cyr.tex
new file mode 100644
index 00000000000..34b5e78c391
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-cyr.tex
@@ -0,0 +1,369 @@
+%D \module
+%D [ file=lang-cyr,
+%D version=2003.01.24,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Cyrillic Languages,
+%D author=see below,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Cyrillic Languages}
+
+%D The cyrillic languages always use a dedicated input regime.
+%D Therefore we define the labels using symbolic names.
+%D Support for cyrillic is initiated by Olga Briginets who
+%D also layed the base for the language, encoding and font
+%D definition. Later Alexander Bokovoy and Victor Figurnov
+%D improved things. I (Hans Hagen) mainly cleaned things up
+%D a bit.
+
+\unprotect
+
+\installlanguage
+ [\s!ru]
+ [\s!lefthyphenmin=2,
+ \s!righthyphenmin=2,
+ \c!spacing=\v!packed,
+ \c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\lowerleftdoubleninequote,
+ \c!rightsubsentence=\upperrightdoubleninequote,
+ \c!leftquote=\lowerleftdoubleninequote,
+ \c!rightquote=\upperrightdoubleninequote,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!ua]
+ [\s!lefthyphenmin=2,
+ \s!righthyphenmin=2,
+ \c!spacing=\v!packed,
+ \c!leftsentence=\leftguillemot,
+ \c!rightsentence=\rightguillemot,
+ \c!leftsubsentence=\lowerleftdoubleninequote,
+ \c!rightsubsentence=\upperrightdoubleninequote,
+ \c!leftquote=\lowerleftdoubleninequote,
+ \c!rightquote=\upperrightdoubleninequote,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage [russian] [\s!ru]
+\installlanguage [ukrainian] [\s!ua]
+
+
+%D Labels and header texts.
+
+\setupheadtext [\s!ru] [ \v!content=\cyrillicS \cyrillico \cyrillicd
+ \cyrillice \cyrillicr \cyrilliczh
+ \cyrillica \cyrillicn \cyrillici
+ \cyrillice]
+\setupheadtext [\s!ua] [\v!content=\cyrillicZ \cyrillicm \cyrillicii
+ \cyrillics \cyrillict]
+
+\setupheadtext [\s!ru] [\v!tables=\cyrillicS \cyrillicp \cyrillici
+ \cyrillics \cyrillico \cyrillick
+ \space \cyrillict \cyrillica
+ \cyrillicb \cyrillicl \cyrillici
+ \cyrillicc]
+\setupheadtext [\s!ua] [\v!tables=\cyrillicP \cyrillice \cyrillicr
+ \cyrillice \cyrillicl \cyrillicii
+ \cyrillick \space \cyrillict
+ \cyrillica \cyrillicb \cyrillicl
+ \cyrillici \cyrillicc \cyrillicsftsn]
+
+\setupheadtext [\s!ru] [\v!figures=\cyrillicS \cyrillicp \cyrillici
+ \cyrillics \cyrillico \cyrillick
+ \space \cyrillici \cyrillicl
+ \cyrillicl \cyrillicyu\cyrillics
+ \cyrillict \cyrillicr \cyrillica
+ \cyrillicc \cyrillici \cyrillicishrt]
+\setupheadtext [\s!ua] [\v!figures=\cyrillicP \cyrillice \cyrillicr
+ \cyrillice \cyrillicl \cyrillicii
+ \cyrillick \space \cyrillicii
+ \cyrillicl \cyrillicyu\cyrillics
+ \cyrillict \cyrillicr \cyrillica
+ \cyrillicc \cyrillicii\cyrillicishrt]
+
+\setupheadtext [\s!ru] [\v!graphics=\cyrillicS \cyrillicp \cyrillici
+ \cyrillics \cyrillico \cyrillick
+ \space \cyrillicg \cyrillicr
+ \cyrillica \cyrillicf \cyrillici
+ \cyrillick \cyrillico \cyrillicv]
+\setupheadtext [\s!ua] [\v!graphics=\cyrillicP \cyrillice \cyrillicr
+ \cyrillice \cyrillicl \cyrillicii
+ \cyrillick \space \cyrillicg
+ \cyrillicr \cyrillica \cyrillicf
+ \cyrillicii\cyrillick \cyrillico
+ \cyrillicv]
+
+\setupheadtext [\s!ru] [\v!intermezzi=\cyrillicS \cyrillicp \cyrillici
+ \cyrillics \cyrillico \cyrillick
+ \space \cyrillicv \cyrillics
+ \cyrillict \cyrillica \cyrillicv
+ \cyrillico \cyrillick]
+\setupheadtext [\s!ua] [\v!intermezzi=\cyrillicP \cyrillice \cyrillicr
+ \cyrillice \cyrillicl \cyrillicii
+ \cyrillick \space \cyrillicv
+ \cyrillics \cyrillict \cyrillica
+ \cyrillicv \cyrillico \cyrillick]
+
+\setupheadtext [\s!ru] [\v!index=\cyrillicA \cyrillicl \cyrillicf
+ \cyrillica \cyrillicv \cyrillici
+ \cyrillict \cyrillicn \cyrillicery
+ \cyrillicishrt \space \cyrillicu
+ \cyrillick \cyrillica \cyrillicz
+ \cyrillica \cyrillict \cyrillice
+ \cyrillicl \cyrillicsftsn]
+\setupheadtext [\s!ua] [\v!index=\cyrillicP \cyrillico \cyrillick
+ \cyrillica \cyrilliczh\cyrillicch
+ \cyrillici \cyrillick]
+
+\setupheadtext [\s!ru] [\v!abbreviations=\cyrillicS \cyrillicp \cyrillici
+ \cyrillics \cyrillico \cyrillick
+ \space \cyrillics \cyrillico
+ \cyrillick \cyrillicr \cyrillica
+ \cyrillicshch \cyrillice
+ \cyrillicn
+ \cyrillici \cyrillicishrt]
+\setupheadtext [\s!ua] [\v!abbreviations=\cyrillicP \cyrillice \cyrillicr
+ \cyrillice \cyrillicl \cyrillicii
+ \cyrillick \space \cyrillics
+ \cyrillick \cyrillico \cyrillicr
+ \cyrillico \cyrillicch\cyrillice
+ \cyrillicn \cyrillicsftsn]
+
+\setupheadtext [\s!ru] [\v!logos=\cyrillicL \cyrillico \cyrillicg
+ \cyrillico \cyrillict \cyrillici
+ \cyrillicp \cyrillicery]
+\setupheadtext [\s!ua] [\v!logos=\cyrillicL \cyrillico \cyrillicg
+ \cyrillico \cyrillict \cyrillici
+ \cyrillicp \cyrillici]
+
+\setupheadtext [\s!ru] [\v!units=\cyrillicE \cyrillicd \cyrillici
+ \cyrillicn \cyrillici \cyrillicc
+ \cyrillicery \space \cyrillici
+ \cyrillicz \cyrillicm \cyrillice
+ \cyrillicr \cyrillice \cyrillicn
+ \cyrillici \cyrillicya]
+\setupheadtext [\s!ua] [\v!units=\cyrillicO \cyrillicd \cyrillici
+ \cyrillicn \cyrillici \cyrillicc
+ \cyrillicii\space \cyrillicv
+ \cyrillici \cyrillicm \cyrillicii
+ \cyrillicr \cyrillicu]
+
+\setuplabeltext [\s!ru] [\v!table=\cyrillicT \cyrillica \cyrillicb
+ \cyrillicl \cyrillici \cyrillicc
+ \cyrillica \space]
+\setuplabeltext [\s!ua] [\v!table=\cyrillicT \cyrillica \cyrillicb
+ \cyrillicl \cyrillici \cyrillicc
+ \cyrillicya\space]
+
+\setuplabeltext [\s!ru] [\v!figure=\cyrillicR \cyrillici \cyrillics
+ \cyrillicu \cyrillicn \cyrillico
+ \cyrillick \space]
+\setuplabeltext [\s!ua] [\v!figure=\cyrillicM \cyrillica \cyrillicl
+ \cyrillicyu\cyrillicn \cyrillico
+ \cyrillick \space]
+
+\setuplabeltext [\s!ru] [\v!intermezzo=\cyrillicV \cyrillics \cyrillict
+ \cyrillica \cyrillicv \cyrillick
+ \cyrillica \space]
+\setuplabeltext [\s!ua] [\v!intermezzo=\cyrillicV \cyrillics \cyrillict
+ \cyrillica \cyrillicv \cyrillick
+ \cyrillica \space]
+
+\setuplabeltext [\s!ru] [\v!graphic=\cyrillicG \cyrillicr \cyrillica
+ \cyrillicf \cyrillici \cyrillick
+ \space]
+\setuplabeltext [\s!ua] [\v!graphic=\cyrillicG \cyrillicr \cyrillica
+ \cyrillicf \cyrillici \cyrillick
+ \space]
+
+\setuplabeltext [\s!ru] [\v!chapter=]
+\setuplabeltext [\s!ua] [\v!chapter=]
+
+\setuplabeltext [\s!ru] [\v!section=]
+\setuplabeltext [\s!ua] [\v!section=]
+
+\setuplabeltext [\s!ru] [\v!subsection=]
+\setuplabeltext [\s!ua] [\v!subsection=]
+
+\setuplabeltext [\s!ru] [\v!subsubsection=]
+\setuplabeltext [\s!ua] [\v!subsubsection=]
+
+\setuplabeltext [\s!ru] [\v!subsubsubsection=]
+\setuplabeltext [\s!ua] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!ru] [\v!appendix=]
+\setuplabeltext [\s!ua] [\v!appendix=]
+
+\setuplabeltext [\s!ru] [\v!part=\cyrillicCH\cyrillica \cyrillics
+ \cyrillict \cyrillicsftsn
+ \space]
+\setuplabeltext [\s!ua] [\v!part=\cyrillicCH\cyrillica \cyrillics
+ \cyrillict \cyrillici \cyrillicn
+ \cyrillica \space]
+
+\setuplabeltext [\s!ru] [\v!line=\cyrillics \cyrillict \cyrillicr
+ \cyrillico \cyrillick \cyrillica
+ \space]
+\setuplabeltext [\s!ua] [\v!line=\cyrillicr \cyrillicya\cyrillicd
+ \cyrillico \cyrillick \space]
+
+\setuplabeltext [\s!ru] [\v!lines=\cyrillics \cyrillict \cyrillicr
+ \cyrillico \cyrillick \cyrillici
+ \space]
+\setuplabeltext [\s!ua] [\v!lines=\cyrillicr \cyrillicya\cyrillicd
+ \cyrillick \cyrillici \space]
+
+\setuplabeltext [\s!ru] [\v!page=\cyrillics \cyrillict \cyrillicr
+ \cyrillica \cyrillicn \cyrillici
+ \cyrillicc \cyrillica \space]
+\setuplabeltext [\s!ua] [\v!page=\cyrillics \cyrillict \cyrillico
+ \cyrillicr \cyrillicii\cyrillicn
+ \cyrillick \cyrillica \space ]
+
+\setuplabeltext [\s!ru] [\v!atpage=\cyrillicn \cyrillica \space
+ \cyrillics \cyrillict \cyrillicr
+ \cyrillica \cyrillicn \cyrillici
+ \cyrillicc \cyrillice \space]
+\setuplabeltext [\s!ua] [\v!atpage=\cyrillicn \cyrillica \space
+ \cyrillics \cyrillict \cyrillico
+ \cyrillicr \cyrillicii\cyrillicn
+ \cyrillicc \cyrillicii\space ]
+
+\setuplabeltext [\s!ru] [\v!hencefore=\cyrillics \cyrillicm.\space
+ \cyrillicv \cyrillicery \cyrillicsh
+ \cyrillice]
+\setuplabeltext [\s!ua] [\v!hencefore=\cyrillicya\cyrillick \space
+ \cyrillicp \cyrillico \cyrillick
+ \cyrillica \cyrillicz \cyrillica
+ \cyrillicn \cyrillico \space
+ \cyrillicv \cyrillici \cyrillicshch
+ \cyrillice]
+
+\setuplabeltext [\s!ru] [\v!hereafter=\cyrillics \cyrillicm.\space
+ \cyrillicn \cyrillici \cyrilliczh
+ \cyrillice]
+\setuplabeltext [\s!ua] [\v!hereafter=\cyrillicya\cyrillick \space
+ \cyrillicp \cyrillico \cyrillick
+ \cyrillica \cyrillicz \cyrillica
+ \cyrillicn \cyrillico \space
+ \cyrillicn \cyrillici \cyrilliczh
+ \cyrillicch\cyrillice]
+
+\setuplabeltext [\s!ru] [\v!see=\cyrillics \cyrillicm.\space]
+\setuplabeltext [\s!ua] [\v!see=\cyrillicd \cyrillici
+ \cyrillicv.\space ]
+
+\setuplabeltext [\s!ru] [\v!january=\cyrillicya\cyrillicn \cyrillicv
+ \cyrillica \cyrillicr \cyrillicya]
+\setuplabeltext [\s!ru] [\v!february=\cyrillicf \cyrillice \cyrillicv
+ \cyrillicr \cyrillica \cyrillicl
+ \cyrillicya]
+\setuplabeltext [\s!ru] [\v!march=\cyrillicm \cyrillica \cyrillicr
+ \cyrillict \cyrillica]
+\setuplabeltext [\s!ru] [\v!april=\cyrillica \cyrillicp \cyrillicr
+ \cyrillice \cyrillicl \cyrillicya]
+\setuplabeltext [\s!ru] [\v!may=\cyrillicm \cyrillica \cyrillicya]
+\setuplabeltext [\s!ru] [\v!june=\cyrillici \cyrillicyu\cyrillicn
+ \cyrillicya]
+\setuplabeltext [\s!ru] [\v!july=\cyrillici \cyrillicyu\cyrillicl
+ \cyrillicya]
+\setuplabeltext [\s!ru] [\v!august=\cyrillica \cyrillicv \cyrillicg
+ \cyrillicu \cyrillics \cyrillict
+ \cyrillica]
+\setuplabeltext [\s!ru] [\v!september=\cyrillics \cyrillice \cyrillicn
+ \cyrillict \cyrillicya\cyrillicb
+ \cyrillicr \cyrillicya]
+\setuplabeltext [\s!ru] [\v!october=\cyrillico \cyrillick \cyrillict
+ \cyrillicya\cyrillicb \cyrillicr
+ \cyrillicya]
+\setuplabeltext [\s!ru] [\v!november=\cyrillicn \cyrillico \cyrillicya
+ \cyrillicb \cyrillicr \cyrillicya]
+\setuplabeltext [\s!ru] [\v!december=\cyrillicd \cyrillice \cyrillick
+ \cyrillica \cyrillicb \cyrillicr
+ \cyrillicya]
+
+\setuplabeltext [\s!ua] [\v!january=\cyrillics \cyrillicii\cyrillicch
+ \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!february=\cyrillicl \cyrillicyu\cyrillict
+ \cyrillico \cyrillicg \cyrillico]
+\setuplabeltext [\s!ua] [\v!march=\cyrillicb \cyrillice \cyrillicr
+ \cyrillice \cyrillicz \cyrillicn
+ \cyrillicya]
+\setuplabeltext [\s!ua] [\v!april=\cyrillick \cyrillicv \cyrillicii
+ \cyrillict \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!may=\cyrillict \cyrillicr \cyrillica
+ \cyrillicv \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!june=\cyrillicch\cyrillice \cyrillicr
+ \cyrillicv \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!july=\cyrillicl \cyrillici \cyrillicp
+ \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!august=\cyrillics \cyrillice \cyrillicr
+ \cyrillicp \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!september=\cyrillicv \cyrillice \cyrillicr
+ \cyrillice \cyrillics \cyrillicn
+ \cyrillicya]
+\setuplabeltext [\s!ua] [\v!october=\cyrilliczh\cyrillico \cyrillicv
+ \cyrillict \cyrillicn \cyrillicya]
+\setuplabeltext [\s!ua] [\v!november=\cyrillicl \cyrillici \cyrillics
+ \cyrillict \cyrillico \cyrillicp
+ \cyrillica \cyrillicd \cyrillica]
+\setuplabeltext [\s!ua] [\v!december=\cyrillicg \cyrillicr \cyrillicu
+ \cyrillicd \cyrillicn \cyrillicya]
+
+\setuplabeltext [\s!ru] [\v!sunday=\cyrillicv \cyrillico \cyrillics
+ \cyrillick \cyrillicr \cyrillice
+ \cyrillics \cyrillice \cyrillicn
+ \cyrillicsftsn \cyrillice]
+\setuplabeltext [\s!ru] [\v!monday=\cyrillicp \cyrillico \cyrillicn
+ \cyrillice \cyrillicd \cyrillice
+ \cyrillicl \cyrillicsftsn
+ \cyrillicn \cyrillici \cyrillick]
+\setuplabeltext [\s!ru] [\v!tuesday=\cyrillicv \cyrillict \cyrillico
+ \cyrillicr \cyrillicn \cyrillici
+ \cyrillick]
+\setuplabeltext [\s!ru] [\v!wednesday=\cyrillics \cyrillicr \cyrillice
+ \cyrillicd \cyrillica]
+\setuplabeltext [\s!ru] [\v!thursday=\cyrillicch\cyrillice \cyrillict
+ \cyrillicv \cyrillice \cyrillicr
+ \cyrillicg]
+\setuplabeltext [\s!ru] [\v!friday=\cyrillicp \cyrillicya\cyrillict
+ \cyrillicn \cyrillici \cyrillicc
+ \cyrillica]
+\setuplabeltext [\s!ru] [\v!saturday=\cyrillics \cyrillicu \cyrillicb
+ \cyrillicb \cyrillico \cyrillict
+ \cyrillica]
+
+\setuplabeltext [\s!ua] [\v!sunday=\cyrillicn \cyrillice \cyrillicd
+ \cyrillicii\cyrillicl \cyrillicya]
+\setuplabeltext [\s!ua] [\v!monday=\cyrillicp \cyrillico \cyrillicn
+ \cyrillice \cyrillicd \cyrillicii
+ \cyrillicl \cyrillico \cyrillick]
+\setuplabeltext [\s!ua] [\v!tuesday=\cyrillicv \cyrillicii\cyrillicv
+ \cyrillict \cyrillico \cyrillicr
+ \cyrillico \cyrillick]
+\setuplabeltext [\s!ua] [\v!wednesday=\cyrillics \cyrillice \cyrillicr
+ \cyrillice \cyrillicd \cyrillica]
+\setuplabeltext [\s!ua] [\v!thursday=\cyrillicch\cyrillice \cyrillict
+ \cyrillicv \cyrillice \cyrillicr]
+\setuplabeltext [\s!ua] [\v!friday=\cyrillicp'\cyrillicya\cyrillict
+ \cyrillicn \cyrillici \cyrillicc
+ \cyrillicya]
+\setuplabeltext [\s!ua] [\v!saturday=\cyrillics \cyrillicu \cyrillicb
+ \cyrillico \cyrillict \cyrillica]
+
+
+%D \ShowAllLanguageValues [\s!ru] [russian] {Russian} {doll}
+%D \ShowAllLanguageValues [\s!ua] [ukranian] {Ukranian} {dance}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-dis.tex b/Master/texmf-dist/tex/context/base/lang-dis.tex
new file mode 100644
index 00000000000..58b95f68169
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-dis.tex
@@ -0,0 +1,59 @@
+%D \module
+%D [ file=lang-dis,
+%D version=2005.02.12,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Distribution Patterns,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This code used to be part of cont-usr.tex but now that we
+%D use more generic pattern files, we decided to isolate these
+%D mappings.
+
+\writestatus{loading}{Context Language Macros / Distribution Patterns}
+
+%D Hyphenation patterns are normally sought in filed named
+%D \type {lang-xx.pat}. When present on the system, those
+%D patterns take precedence. This list will be adapted to
+%D the actual situation, given that it's noticed.
+
+%D The us/uk hyph 1/2 files will go
+
+\unprotect
+
+\definefilefallback [lang-ca.pat] [cahyph.tex]
+\definefilefallback [lang-da.pat] [dkhyph.tex]
+\definefilefallback [lang-de.pat] [dehyphn.tex]
+\definefilefallback [lang-es.pat] [eshyph.tex]
+\definefilefallback [lang-fi.pat] [fihyph.tex]
+\definefilefallback [lang-fr.pat] [frhyph.tex]
+\definefilefallback [lang-hr.pat] [hrhyph.tex]
+\definefilefallback [lang-hu.pat] [huhyph.tex]
+\definefilefallback [lang-it.pat] [ithyph.tex]
+\definefilefallback [lang-la.pat] [lahyph7.tex]
+\definefilefallback [lang-no.pat] [nohyph.tex]
+\definefilefallback [lang-pl.pat] [plhyph.tex]
+\definefilefallback [lang-pt.pat] [pthyph.tex]
+\definefilefallback [lang-ro.pat] [rohyph.tex]
+\definefilefallback [lang-ru.pat] [ruenhyph.tex]
+\definefilefallback [lang-sl.pat] [sihyph.tex,slhyph.tex]
+\definefilefallback [lang-sv.pat] [svhyph.tex,sehyph.tex]
+\definefilefallback [lang-tr.pat] [tkhyph.tex,trhyph.tex]
+\definefilefallback [lang-ua.pat] [ukrenhyp.tex]
+\definefilefallback [lang-uk.pat] [ukhyphen.tex,ukhyph.tex]
+\definefilefallback [lang-us.pat] [ushyphmax.tex,ushyph.tex,ushyph1.tex,ushyph2.tex,hyphen.tex]
+\definefilefallback [lang-nl.pat] [nehyph96.tex,dutch96.pat,nehyph.tex]
+\definefilefallback [lang-cz.pat] [czhyphen.tex,czhyph.pat]
+\definefilefallback [lang-sk.pat] [skhyphen.tex,skhyph.pat]
+\definefilefallback [lang-deo.pat] [dehypht.tex]
+
+\definefilesynonym [lang-af.pat] [lang-nl.pat]
+\definefilesynonym [lang-en.pat] [lang-us.pat]
+\definefilesynonym [lang-en.hyp] [lang-us.hyp]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-frd.tex b/Master/texmf-dist/tex/context/base/lang-frd.tex
new file mode 100644
index 00000000000..6cc27080b78
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-frd.tex
@@ -0,0 +1,140 @@
+%D \module
+%D [ file=lang-frd,
+%D version=2004.01.15,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Language Frequency Table Data,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is expewrimental work!
+
+% http://www.onzetaal.nl/advies/letterfreq.html
+
+\startcharactertable[nl]
+ \charfreq a 7.47
+ \charfreq b 1.58
+ \charfreq c 1.24
+ \charfreq d 5.93
+ \charfreq e 18.91
+ \charfreq f .81
+ \charfreq g 3.4
+ \charfreq h 2.38
+ \charfreq i 6.5
+ \charfreq j 1.46
+ \charfreq k 2.25
+ \charfreq l 3.57
+ \charfreq m 2.21
+ \charfreq n 10.03
+ \charfreq o 6.06
+ \charfreq p 1.57
+ \charfreq q .009
+ \charfreq r 6.41
+ \charfreq s 3.73
+ \charfreq t 6.79
+ \charfreq u 1.99
+ \charfreq v 2.85
+ \charfreq w 1.52
+ \charfreq x .04
+ \charfreq y .035
+ \charfreq z 1.39
+\stopcharactertable
+
+% http://caislab.icu.ac.kr/course/2001/spring/ice605/down/010306.pdf
+
+% \startcharactertable[en]
+% \charfreq a 8.2
+% \charfreq b 1.5
+% \charfreq c 2.8
+% \charfreq d 4.3
+% \charfreq e 12.7
+% \charfreq f 2.2
+% \charfreq g 2
+% \charfreq h 6.1
+% \charfreq i 7
+% \charfreq j .2
+% \charfreq k .8
+% \charfreq l 4
+% \charfreq m 2.4
+% \charfreq n 6.7
+% \charfreq o 7.5
+% \charfreq p 1.9
+% \charfreq q .1
+% \charfreq r 6
+% \charfreq s 6.3
+% \charfreq t 9.1
+% \charfreq u 2.8
+% \charfreq v 1
+% \charfreq w 2.3
+% \charfreq x .1
+% \charfreq y 2
+% \charfreq z .1
+% \stopcharactertable
+
+% http://www.blankenburg.de/gat/pages/fach/info/analyse2.htm
+
+\startcharactertable[en]
+ \charfreq a 8.04
+ \charfreq b 1.54
+ \charfreq c 3.06
+ \charfreq d 3.99
+ \charfreq e 12.51
+ \charfreq f 2.3
+ \charfreq g 1.96
+ \charfreq h 5.49
+ \charfreq i 7.26
+ \charfreq j .16
+ \charfreq k .67
+ \charfreq l 4.14
+ \charfreq m 2.53
+ \charfreq n 7.09
+ \charfreq o 7.6
+ \charfreq p 2
+ \charfreq q .11
+ \charfreq r 6.12
+ \charfreq s 6.54
+ \charfreq t 9.25
+ \charfreq u 2.71
+ \charfreq v .99
+ \charfreq w 1.92
+ \charfreq x .19
+ \charfreq y 1.73
+ \charfreq z .09
+\stopcharactertable
+
+% http://www.blankenburg.de/gat/pages/fach/info/analyse2.htm
+
+\startcharactertable[de]
+ \charfreq a 6.47
+ \charfreq b 1.93
+ \charfreq c 2.68
+ \charfreq d 4.83
+ \charfreq e 17.48
+ \charfreq f 1.65
+ \charfreq g 3.06
+ \charfreq h 4.23
+ \charfreq i 7.73
+ \charfreq j .27
+ \charfreq k 1.46
+ \charfreq l 3.49
+ \charfreq m 2.58
+ \charfreq n 9.84
+ \charfreq o 2.98
+ \charfreq p .96
+ \charfreq q .02
+ \charfreq r 7.54
+ \charfreq s 6.83
+ \charfreq t 6.13
+ \charfreq u 4.17
+ \charfreq v .94
+ \charfreq w 1.48
+ \charfreq x .04
+ \charfreq y .08
+ \charfreq z 1.14
+\stopcharactertable
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-frq.tex b/Master/texmf-dist/tex/context/base/lang-frq.tex
new file mode 100644
index 00000000000..82441f9c09d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-frq.tex
@@ -0,0 +1,217 @@
+%D \module
+%D [ file=lang-frq,
+%D version=2004.01.15,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Language Frequency Table Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Language Frequency Table Support}
+
+\unprotect
+
+\ifx\s!en\undefined \def\v!en{en} \fi
+\ifx\??lg\undefined \def\??lg{@@lg} \fi
+
+%M \usemodule[layout]
+
+%D \macros
+%D {charwidthmethod}
+%D
+%D This module implements a method for determining the width of an
+%D average character in a language. It uses the dimensions of the
+%D current fonts.
+%D
+%D \def\ShwChrWd#1#2#3%
+%D {\chardef\charwidthmethod#1\relax
+%D \mainlanguage[#2#3]\the\dimexpr(\averagecharwidth)}
+%D
+%D \starttabulate[|c|c|c|c|c|c|]
+%D \HL
+%D \NC \NC\bf0=amount\NC\bf1=.5em\NC2=ex\NC\bf3=frequency\NC\bf4=list\NC\NR
+%D \HL
+%D \NC\bf en\NC\ShwChrWd0en\NC\ShwChrWd1en\NC\ShwChrWd2en\NC\ShwChrWd3en\NC\ShwChrWd4en\NC\NR
+%D \NC\bf nl\NC\ShwChrWd0nl\NC\ShwChrWd1nl\NC\ShwChrWd2nl\NC\ShwChrWd3nl\NC\ShwChrWd4nl\NC\NR
+%D \NC\bf de\NC\ShwChrWd0de\NC\ShwChrWd1de\NC\ShwChrWd2de\NC\ShwChrWd3de\NC\ShwChrWd4de\NC\NR
+%D \HL
+%D \stoptabulate
+%D
+%D Method~1 ignores the widths and assumes that each character has a
+%D width of .5em, which is true for most monospaced fonts. Method~2
+%D takes the x as starting point, and assumes that it's height kind of
+%D matches its width. Method~3 is the best one, and determines the
+%D average width based on the language specific character table.
+%D Method~4 is a mixture between the first two methods: character
+%D specific widths applied to an equal distribution. Method~0 reports
+%D the total count, which normally is~100.
+
+\chardef\charwidthmethod=3 % 0=amount 1=em 2=ex 3=frequency 4=flattened >4=ex
+
+%D \macros
+%D {charwidthlanguage}
+%D
+%D The language used for the calculations is defined as:
+
+\def\charwidthlanguage{\currentmainlanguage}
+
+%D \macros
+%D {charfreq}
+%D
+%D This method comes into action in the following macro:
+
+\def\charfreq#1 #2 % character fraction
+ {+(\ifcase\charwidthmethod
+ #2\dimexpr(100\onepoint)%
+ \or
+ #2\dimexpr(.5em)% \fontdimen6\font/2
+ \or
+ #2\dimexpr(\fontdimen5\font)%
+ \or
+ #2\fontcharwd\font`#1%
+ \or
+ \dimexpr(100\fontcharwd\font`#1/\charactertsize\charwidthlanguage)% ugly hack
+ \else
+ #2\dimexpr(\fontdimen5\font)%
+ \fi)}
+
+%D \macros
+%D {startcharactertable}
+%D
+%D A frequency table is defined with the following macro. The \type
+%D {charfreq} macro is used in this table.
+
+\def\startcharactertable[#1]#2\stopcharactertable % \dimexpr has fuzzy lookahead
+ {\startnointerference
+ \long\setgvalue{\??lg:w:#1}{#2}% the width vector
+ \scratchcounter\zerocount \def\charfreq##1 ##2 {\advance\scratchcounter\plusone} #2%
+ \long\setxvalue{\??lg:c:#1}{\the\scratchcounter}% the character count
+ \stopnointerference}
+
+%D \macros
+%D {charactertable,charactertsize}
+%D
+%D The table content as well as the number of entries can be fetched with
+%D the following two macros. The architecture of the table and calling
+%D macro permits a fully expandable application.
+
+\def\charactertable#1%
+ {\csname\??lg:w:\ifcsname\??lg:w:#1\endcsname#1\else\s!en\fi\endcsname}
+
+\def\charactertsize#1%
+ {\csname\??lg:c:\ifcsname\??lg:c:#1\endcsname#1\else\s!en\fi\endcsname}
+
+%D Although it is of hardly any use, you can inherit a character table:
+%D
+%D \starttyping
+%D \startcharactertable[cz] \charactertable{en} \stopcharactertable
+%D \stoptyping
+%D
+%D We define a default vector with 100\% x's.
+
+\startcharactertable[en] 100 x \stopcharactertable % kind of default
+
+%D \macros
+%D {averagecharwidth}
+%D
+%D This macro reports the average width for the current main
+%D language (\the \dimexpr (\averagecharwidth)).
+
+\beginTEX
+
+ \def\averagecharwidth{\the\fontdimen6\font}
+
+\endTEX
+
+\beginETEX \dimexpr
+
+ \def\averagecharwidth{\dimexpr((\zeropoint\charactertable\charwidthlanguage)/100)}
+
+\endETEX
+
+\def\showcharfreq
+ {\hbox\bgroup
+ \charwidthlanguage:%
+ \dostepwiserecurse041%
+ {\chardef\charwidthmethod\recurselevel\relax
+ \enspace\recurselevel/\the\dimexpr(\averagecharwidth)}%
+ \egroup}
+
+%D Just for fun, we show a few frequency tables as graphic (\in {figure}
+%D [fig:charfreq]).
+%D
+%D \startbuffer
+%D \definepalet [charfreq] [en=darkred, nl=darkgreen, de=darkblue]
+%D
+%D \def\charfreq#1 #2 %
+%D {\startMPdrawing
+%D interim linejoin := butt ;
+%D a := ASCII "#1" ;
+%D if (a >= (ASCII "a")) and (a <= (ASCII "z")) :
+%D draw ((0,#2*.25cm)--origin--(0,#2*.5cm))
+%D shifted (a*4mm+o,0)
+%D withpen pencircle scaled .5mm
+%D withcolor c;
+%D fi ;
+%D \stopMPdrawing}
+%D
+%D \resetMPdrawing
+%D \startMPdrawing
+%D numeric a, o ; a := o := 0 ;
+%D color c ; c := .5white ;
+%D string s ; s := "" ;
+%D \stopMPdrawing
+%D
+%D \startMPdrawing o := 0mm ; c := \MPcolor{charfreq:en} ; \stopMPdrawing
+%D \charactertable{en}
+%D
+%D \startMPdrawing o := 1mm ; c := \MPcolor{charfreq:nl} ; \stopMPdrawing
+%D \charactertable{nl}
+%D
+%D \startMPdrawing o := 2mm ; c := \MPcolor{charfreq:de} ; \stopMPdrawing
+%D \charactertable{de}
+%D
+%D \startMPdrawing
+%D for a := ASCII "a" upto ASCII "z" :
+%D draw textext.bot("\strut\tttf " & char a) shifted (a*4mm+1mm,-1mm) ;
+%D endfor ;
+%D \stopMPdrawing
+%D
+%D \MPdrawingdonetrue \getMPdrawing \resetMPdrawing
+%D \stopbuffer
+%D
+%D \placefigure
+%D [here]
+%D [fig:charfreq]
+%D {The character distributions for English, Dutch and German.}
+%D {\getbuffer}
+%D
+%D A few samples of usage of this mechanism are shown below:
+%D
+%D \startbuffer
+%D {\mainlanguage[en]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blank}
+%D {\mainlanguage[nl]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blank}
+%D {\mainlanguage[de]\hsize65\averagecharwidth\mainlanguage[en]\input ward \blank}
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D Although the widthts differ, the consequenes for breaking the paragraph
+%D into lines are minimal.
+
+%D \macros
+%D {freezeaveragecharacterwidth}
+%D
+%D This macro can be used to make sure that the width does not change during a
+%D page break when another font is used.
+
+\let\normalaveragecharacterwidth\averagecharacterwidth
+
+\def\freezeaveragecharacterwidth % global
+ {\xdef\averagecharacterwidth{\dimexpr(\the\normalaveragecharacterwidth)}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ger.tex b/Master/texmf-dist/tex/context/base/lang-ger.tex
new file mode 100644
index 00000000000..919748c691f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ger.tex
@@ -0,0 +1,700 @@
+%D \module
+%D [ file=lang-ger,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Germanic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Germanic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Norwegian \NC Hans Fredrik Nordhaug \NC \NR
+%D \NC Danish \NC Arne Jorgensen \NC \NR % check the o
+%D \NC Afrikaans \NC \NC \NR
+%D \stoptabulate
+
+% Danish, Faeroese, Icelandic, Norwegian, Swedish, German, Yiddish
+% Afrikaans, Dutch, English, Flemush, Frisian, Plattdeutsch
+
+\unprotect
+
+\installlanguage
+ [\s!nl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!en]
+ [\c!spacing=\v!broad,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!month,\ ,\v!day,{,\ },\v!year},
+ \c!state=\v!stop] % elders always preloaded!
+
+\installlanguage
+ [\s!de]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!da]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--\hskip.5em}},
+ \c!rightsentence={\hbox{\hskip.5em--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!sv]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\upperrightsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperrightdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!af]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!no]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \c!default=\s!nl, % patterns
+ \c!state=\v!stop]
+
+%D Extra:
+
+\installlanguage % old german
+ [deo]
+ [\c!spacing=\v!packed,
+ \c!default=\s!de,
+ \c!state=\v!stop]
+
+%D And some alternative (but very real) english patterns:
+
+\installlanguage
+ [uk]
+ [\c!default=\s!en,
+ \c!state=\v!stop]
+
+\installlanguage
+ [us]
+ [\c!default=\s!en,
+ \c!state=\v!stop]
+
+%D For compatibility reasons we also define:
+
+\installlanguage [du] [\s!de] % old times context
+%installlanguage [sp] [\s!es] % old times context /lang-ita
+
+\installlanguage [usenglish] [\s!us]
+\installlanguage [ukenglish] [\s!uk]
+\installlanguage [english] [\s!en]
+\installlanguage [dutch] [\s!nl]
+\installlanguage [german] [\s!de]
+\installlanguage [danish] [\s!da]
+\installlanguage [swedish] [\s!sv]
+\installlanguage [afrikaans] [\s!af]
+\installlanguage [norwegian] [\s!no]
+\installlanguage [norsk] [\s!no] % bonus switch
+
+% GERMAN
+%
+% %D The next section is dedicated to Tobias Burnus.
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "a {\moveaccent{-.1ex}\"a\midworddiscretionary}
+% \installcompoundcharacter "e {\moveaccent{-.1ex}\"e\midworddiscretionary}
+% \installcompoundcharacter "i {\moveaccent{-.1ex}\"\i\midworddiscretionary}
+% \installcompoundcharacter "o {\moveaccent{-.1ex}\"o\midworddiscretionary}
+% \installcompoundcharacter "u {\moveaccent{-.1ex}\"u\midworddiscretionary}
+% \installcompoundcharacter "s {\SS}
+% \installcompoundcharacter "z {\SS}
+%
+% \installcompoundcharacter "A {\smashaccent\"A}
+% \installcompoundcharacter "E {\smashaccent\"E}
+% \installcompoundcharacter "I {\smashaccent\"I}
+% \installcompoundcharacter "O {\smashaccent\"O}
+% \installcompoundcharacter "U {\smashaccent\"U}
+% \installcompoundcharacter "Z {SZ}
+% \installcompoundcharacter "S {SS}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
+% \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
+% \installcompoundcharacter "ll {\discretionary{ll-}{l}{ll}}
+% \installcompoundcharacter "mm {\discretionary{mm-}{m}{mm}}
+% \installcompoundcharacter "nn {\discretionary{nn-}{n}{nn}}
+% \installcompoundcharacter "pp {\discretionary{pp-}{p}{pp}}
+% \installcompoundcharacter "rr {\discretionary{rr-}{r}{rr}}
+% \installcompoundcharacter "tt {\discretionary{tt-}{t}{tt}}
+%
+% \installcompoundcharacter "CK {\discretionary {K-}{K}{CK}}
+% \installcompoundcharacter "FF {\discretionary{FF-}{F}{FF}}
+% \installcompoundcharacter "LL {\discretionary{LL-}{L}{LL}}
+% \installcompoundcharacter "MM {\discretionary{MM-}{M}{MM}}
+% \installcompoundcharacter "NN {\discretionary{NN-}{N}{NN}}
+% \installcompoundcharacter "PP {\discretionary{PP-}{P}{PP}}
+% \installcompoundcharacter "RR {\discretionary{RR-}{R}{RR}}
+% \installcompoundcharacter "TT {\discretionary{TT-}{T}{TT}}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!de]
+%
+% \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+% \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+% \installcompoundcharacter ". {\kern.1em\ignorespaces}
+%
+% \def\setupDElanguage%
+% {\setuplanguage
+% [\s!de]
+% [\c!leftsentence=\leftguillemot,
+% \c!rightsentence=\rightguillemot,
+% \c!leftsubsentence=\leftsubguillemot,
+% \c!rightsubsentence=\rightsubguillemot]}
+%
+% \installcompoundcharacter "< {{\setupDElanguage|<|}}
+% \installcompoundcharacter "> {{\setupDElanguage|>|}}
+%
+% \stoplanguagespecifics
+%
+% %D An experimental hack:
+%
+% \startencoding[pdfdoc]
+% \startlanguagespecifics[\s!de]% hm, a % is needed
+% \defineactivecharacter " {\"} % no {\simplifiedcompoundcharacter"}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% \startencoding[ec]
+% \startlanguagespecifics[\s!de]%
+% \installcompoundcharacter "a {\"a}
+% \installcompoundcharacter "e {\"e}
+% \installcompoundcharacter "i {\"\i}
+% \installcompoundcharacter "o {\"o}
+% \installcompoundcharacter "u {\"u}
+% \installcompoundcharacter "A {\"A}
+% \installcompoundcharacter "E {\"E}
+% \installcompoundcharacter "I {\"I}
+% \installcompoundcharacter "O {\"O}
+% \installcompoundcharacter "U {\"U}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% \startencoding[texnansi]
+% \startlanguagespecifics[\s!de]%
+% \installcompoundcharacter "a {\"a}
+% \installcompoundcharacter "e {\"e}
+% \installcompoundcharacter "i {\"\i}
+% \installcompoundcharacter "o {\"o}
+% \installcompoundcharacter "u {\"u}
+% \installcompoundcharacter "A {\"A}
+% \installcompoundcharacter "E {\"E}
+% \installcompoundcharacter "I {\"I}
+% \installcompoundcharacter "O {\"O}
+% \installcompoundcharacter "U {\"U}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% %D This hack should be perfected.
+
+%% NORWEGIAN
+%
+% These three letters (in this order) are the
+% last in the norwegian alphabet (and hence should
+% come after z in the latin alphabet).
+% I'm not sure about the syntax for
+% \definesortkey so I left some of it open ...
+%
+% \startlanguagespecifics[\s!no]
+%
+% \definesortkey {\ae}{z}{b}{\ae}
+% \definesortkey {\AE}{z}{b}{\AE}
+% \definesortkey {\o}{z} {c}{\o}
+% \definesortkey {\O}{z} {c}{\O}
+% \definesortkey {\aa}{z}{d}{\aa}
+% \definesortkey {\aring}{z}{d}{\aring}
+% \definesortkey {\AA}{z}{d}{\AA}
+% \definesortkey {\Aring}{z}{d}{\Aring}
+%
+% \stoplanguagespecifics
+%
+% \startencoding[texnansi]
+% \startlanguagespecifics[\s!no]%
+% \defineactivecharacter æ {\ae{}}
+% \defineactivecharacter Æ {\AE{}}
+% \defineactivecharacter ø {\o{}}
+% \defineactivecharacter Ø {\O{}}
+% \defineactivecharacter å {\aa{}}
+% \defineactivecharacter Å {\AA{}}
+% \stoplanguagespecifics
+% \stopencoding
+
+\setupheadtext [\s!en] [\v!content=Contents]
+\setupheadtext [\s!nl] [\v!content=Inhoud]
+\setupheadtext [\s!de] [\v!content=Inhalt]
+\setupheadtext [\s!da] [\v!content=Indhold]
+\setupheadtext [\s!sv] [\v!content=Inneh\aring ll]
+\setupheadtext [\s!af] [\v!content=Inhoud]
+\setupheadtext [\s!no] [\v!content=Innhold]
+
+\setupheadtext [\s!en] [\v!tables=Tables]
+\setupheadtext [\s!nl] [\v!tables=Tabellen]
+\setupheadtext [\s!de] [\v!tables=Tabellen]
+\setupheadtext [\s!da] [\v!tables=Tabeller]
+\setupheadtext [\s!sv] [\v!tables=Tabeller]
+\setupheadtext [\s!af] [\v!tables=Tabelle]
+\setupheadtext [\s!no] [\v!tables=Tabeller]
+
+\setupheadtext [\s!en] [\v!figures=Figures]
+\setupheadtext [\s!nl] [\v!figures=Figuren]
+\setupheadtext [\s!de] [\v!figures=Abbildungen]
+\setupheadtext [\s!da] [\v!figures=Figurer]
+\setupheadtext [\s!sv] [\v!figures=Figurer]
+\setupheadtext [\s!af] [\v!figures=Figure]
+\setupheadtext [\s!no] [\v!figures=Figurer]
+
+\setupheadtext [\s!en] [\v!graphics=Graphics]
+\setupheadtext [\s!nl] [\v!graphics=Grafieken]
+\setupheadtext [\s!de] [\v!graphics=Graphiken]
+\setupheadtext [\s!da] [\v!graphics=Grafik]
+\setupheadtext [\s!sv] [\v!graphics=Grafik]
+\setupheadtext [\s!af] [\v!graphics=Grafieke]
+\setupheadtext [\s!no] [\v!graphics=Grafikk]
+
+\setupheadtext [\s!en] [\v!intermezzi=Intermezzos]
+\setupheadtext [\s!nl] [\v!intermezzi=Intermezzo's]
+\setupheadtext [\s!de] [\v!intermezzi=Intermezzi]
+\setupheadtext [\s!da] [\v!intermezzi=Intermezzoer]
+\setupheadtext [\s!sv] [\v!intermezzi=Intermezzon]
+\setupheadtext [\s!af] [\v!intermezzi=Intermezzos]
+\setupheadtext [\s!no] [\v!intermezzi=Intermesso]
+
+\setupheadtext [\s!en] [\v!index=Index]
+\setupheadtext [\s!nl] [\v!index=Index]
+\setupheadtext [\s!de] [\v!index=Index]
+\setupheadtext [\s!da] [\v!index=Indeks]
+\setupheadtext [\s!sv] [\v!index=Sakregister]
+\setupheadtext [\s!af] [\v!index=Indeks]
+\setupheadtext [\s!no] [\v!index=Indeks]
+
+\setupheadtext [\s!en] [\v!abbreviations=Abbreviations]
+\setupheadtext [\s!nl] [\v!abbreviations=Afkortingen]
+\setupheadtext [\s!de] [\v!abbreviations=Abk\uumlaut rzungen]
+\setupheadtext [\s!da] [\v!abbreviations=Forkortelser]
+\setupheadtext [\s!sv] [\v!abbreviations=F\oumlaut rkortningar]
+\setupheadtext [\s!af] [\v!abbreviations=Afkortings]
+\setupheadtext [\s!no] [\v!abbreviations=Forkortelser]
+
+\setupheadtext [\s!en] [\v!logos=Logos]
+\setupheadtext [\s!nl] [\v!logos=Logo's]
+\setupheadtext [\s!de] [\v!logos=Logos]
+\setupheadtext [\s!da] [\v!logos=Logoer]
+\setupheadtext [\s!sv] [\v!logos=Loggor]
+\setupheadtext [\s!af] [\v!logos=Logos]
+\setupheadtext [\s!no] [\v!logos=Logoer]
+
+\setupheadtext [\s!en] [\v!units=Units]
+\setupheadtext [\s!nl] [\v!units=Eenheden]
+\setupheadtext [\s!de] [\v!units=Einheiten]
+\setupheadtext [\s!da] [\v!units=Enheder]
+\setupheadtext [\s!sv] [\v!units=Enheter]
+\setupheadtext [\s!af] [\v!units=Eenhede]
+\setupheadtext [\s!no] [\v!units=Enheter]
+
+\setuplabeltext [\s!en] [\v!table=Table ]
+\setuplabeltext [\s!nl] [\v!table=Tabel ]
+\setuplabeltext [\s!de] [\v!table=Tabelle ]
+\setuplabeltext [\s!da] [\v!table=Tabel ]
+\setuplabeltext [\s!sv] [\v!table=Tabell ]
+\setuplabeltext [\s!af] [\v!table=Tabel]
+\setuplabeltext [\s!no] [\v!table=Tabell ]
+
+\setuplabeltext [\s!en] [\v!figure=Figure ]
+\setuplabeltext [\s!nl] [\v!figure=Figuur ]
+\setuplabeltext [\s!de] [\v!figure=Abbildung ]
+\setuplabeltext [\s!da] [\v!figure=Figur ]
+\setuplabeltext [\s!sv] [\v!figure=Figur ]
+\setuplabeltext [\s!af] [\v!figure=Figuur ]
+\setuplabeltext [\s!no] [\v!figure=Figur ]
+
+\setuplabeltext [\s!en] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!nl] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!de] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!da] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!sv] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!af] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!no] [\v!intermezzo=Intermesso ]
+
+\setuplabeltext [\s!en] [\v!graphic=Graphic ]
+\setuplabeltext [\s!nl] [\v!graphic=Grafiek ]
+\setuplabeltext [\s!de] [\v!graphic=Graphik ]
+\setuplabeltext [\s!da] [\v!graphic=Grafik ]
+\setuplabeltext [\s!sv] [\v!graphic=Grafik ]
+\setuplabeltext [\s!af] [\v!graphic=Grafiek ]
+\setuplabeltext [\s!no] [\v!graphic=Grafikk ]
+
+\setuplabeltext [\s!en] [\v!chapter=]
+\setuplabeltext [\s!nl] [\v!chapter=]
+\setuplabeltext [\s!de] [\v!chapter=]
+\setuplabeltext [\s!da] [\v!chapter=]
+\setuplabeltext [\s!sv] [\v!chapter=]
+\setuplabeltext [\s!af] [\v!chapter=] % [\v!chapter=hoofstuk]
+\setuplabeltext [\s!no] [\v!chapter=]
+
+\setuplabeltext [\s!en] [\v!section=]
+\setuplabeltext [\s!nl] [\v!section=]
+\setuplabeltext [\s!de] [\v!section=]
+\setuplabeltext [\s!da] [\v!section=]
+\setuplabeltext [\s!sv] [\v!section=]
+\setuplabeltext [\s!af] [\v!section=] % [\v!section=paragraaf]
+\setuplabeltext [\s!no] [\v!section=]
+
+\setuplabeltext [\s!en] [\v!subsection=]
+\setuplabeltext [\s!nl] [\v!subsection=]
+\setuplabeltext [\s!de] [\v!subsection=]
+\setuplabeltext [\s!da] [\v!subsection=]
+\setuplabeltext [\s!sv] [\v!subsection=]
+\setuplabeltext [\s!af] [\v!subsection=]
+\setuplabeltext [\s!no] [\v!subsection=]
+
+\setuplabeltext [\s!en] [\v!subsubsection=]
+\setuplabeltext [\s!nl] [\v!subsubsection=]
+\setuplabeltext [\s!de] [\v!subsubsection=]
+\setuplabeltext [\s!da] [\v!subsubsection=]
+\setuplabeltext [\s!sv] [\v!subsubsection=]
+\setuplabeltext [\s!af] [\v!subsubsection=]
+\setuplabeltext [\s!no] [\v!subsubsection=]
+
+\setuplabeltext [\s!en] [\v!subsubsubsection=]
+\setuplabeltext [\s!nl] [\v!subsubsubsection=]
+\setuplabeltext [\s!de] [\v!subsubsubsection=]
+\setuplabeltext [\s!da] [\v!subsubsubsection=]
+\setuplabeltext [\s!sv] [\v!subsubsubsection=]
+\setuplabeltext [\s!af] [\v!subsubsubsection=]
+\setuplabeltext [\s!no] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!en] [\v!appendix=]
+\setuplabeltext [\s!nl] [\v!appendix=]
+\setuplabeltext [\s!de] [\v!appendix=]
+\setuplabeltext [\s!da] [\v!appendix=] % [\v!appendix=bilag]
+\setuplabeltext [\s!sv] [\v!appendix=]
+\setuplabeltext [\s!af] [\v!appendix=] % [\v!appendix=bylae]
+\setuplabeltext [\s!no] [\v!appendix=]
+
+\setuplabeltext [\s!en] [\v!part=Part ]
+\setuplabeltext [\s!nl] [\v!part=Deel ]
+\setuplabeltext [\s!de] [\v!part=Teil ]
+\setuplabeltext [\s!da] [\v!part=Del ]
+\setuplabeltext [\s!sv] [\v!part=Del ]
+\setuplabeltext [\s!af] [\v!part=Deel ]
+\setuplabeltext [\s!no] [\v!part=Del ]
+
+\setuplabeltext [\s!en] [\v!line=line ]
+\setuplabeltext [\s!nl] [\v!line=regel ]
+\setuplabeltext [\s!de] [\v!line=Zeile ]
+\setuplabeltext [\s!da] [\v!line=linie ] % or linje
+\setuplabeltext [\s!sv] [\v!line=rad ]
+\setuplabeltext [\s!af] [\v!line=re\ediaeresis l ]
+\setuplabeltext [\s!no] [\v!line=linje ]
+
+\setuplabeltext [\s!en] [\v!lines=lines ]
+\setuplabeltext [\s!nl] [\v!lines=regels ]
+\setuplabeltext [\s!de] [\v!lines=Zeilen ]
+\setuplabeltext [\s!da] [\v!lines=linier ] % or linjer
+\setuplabeltext [\s!sv] [\v!lines=rader ]
+\setuplabeltext [\s!af] [\v!lines=re\ediaeresis ls ]
+\setuplabeltext [\s!no] [\v!lines=linjer ]
+
+\setuplabeltext [\s!en] [\v!january=January]
+\setuplabeltext [\s!en] [\v!february=February]
+\setuplabeltext [\s!en] [\v!march=March]
+\setuplabeltext [\s!en] [\v!april=April]
+\setuplabeltext [\s!en] [\v!may=May]
+\setuplabeltext [\s!en] [\v!june=June]
+\setuplabeltext [\s!en] [\v!july=July]
+\setuplabeltext [\s!en] [\v!august=August]
+\setuplabeltext [\s!en] [\v!september=September]
+\setuplabeltext [\s!en] [\v!october=October]
+\setuplabeltext [\s!en] [\v!november=November]
+\setuplabeltext [\s!en] [\v!december=December]
+
+\setuplabeltext [\s!nl] [\v!january=januari]
+\setuplabeltext [\s!nl] [\v!february=februari]
+\setuplabeltext [\s!nl] [\v!march=maart]
+\setuplabeltext [\s!nl] [\v!april=april]
+\setuplabeltext [\s!nl] [\v!may=mei]
+\setuplabeltext [\s!nl] [\v!june=juni]
+\setuplabeltext [\s!nl] [\v!july=juli]
+\setuplabeltext [\s!nl] [\v!august=augustus]
+\setuplabeltext [\s!nl] [\v!september=september]
+\setuplabeltext [\s!nl] [\v!october=oktober]
+\setuplabeltext [\s!nl] [\v!november=november]
+\setuplabeltext [\s!nl] [\v!december=december]
+
+\setuplabeltext [\s!de] [\v!january=Januar]
+\setuplabeltext [\s!de] [\v!february=Februar]
+\setuplabeltext [\s!de] [\v!march=M\aumlaut rz]
+\setuplabeltext [\s!de] [\v!april=April]
+\setuplabeltext [\s!de] [\v!may=Mai]
+\setuplabeltext [\s!de] [\v!june=Juni]
+\setuplabeltext [\s!de] [\v!july=Juli]
+\setuplabeltext [\s!de] [\v!august=August]
+\setuplabeltext [\s!de] [\v!september=September]
+\setuplabeltext [\s!de] [\v!october=Oktober]
+\setuplabeltext [\s!de] [\v!november=November]
+\setuplabeltext [\s!de] [\v!december=Dezember]
+
+\setuplabeltext [\s!da] [\v!january=januar]
+\setuplabeltext [\s!da] [\v!february=februar]
+\setuplabeltext [\s!da] [\v!march=marts]
+\setuplabeltext [\s!da] [\v!april=april]
+\setuplabeltext [\s!da] [\v!may=maj]
+\setuplabeltext [\s!da] [\v!june=juni]
+\setuplabeltext [\s!da] [\v!july=juli]
+\setuplabeltext [\s!da] [\v!august=august]
+\setuplabeltext [\s!da] [\v!september=september]
+\setuplabeltext [\s!da] [\v!october=oktober]
+\setuplabeltext [\s!da] [\v!november=november]
+\setuplabeltext [\s!da] [\v!december=december]
+
+\setuplabeltext [\s!sv] [\v!january=januari]
+\setuplabeltext [\s!sv] [\v!february=februari]
+\setuplabeltext [\s!sv] [\v!march=mars]
+\setuplabeltext [\s!sv] [\v!april=april]
+\setuplabeltext [\s!sv] [\v!may=maj]
+\setuplabeltext [\s!sv] [\v!june=juni]
+\setuplabeltext [\s!sv] [\v!july=juli]
+\setuplabeltext [\s!sv] [\v!august=augusti]
+\setuplabeltext [\s!sv] [\v!september=september]
+\setuplabeltext [\s!sv] [\v!october=oktober]
+\setuplabeltext [\s!sv] [\v!november=november]
+\setuplabeltext [\s!sv] [\v!december=december]
+
+\setuplabeltext [\s!af] [\v!january=januarie]
+\setuplabeltext [\s!af] [\v!february=februarie]
+\setuplabeltext [\s!af] [\v!march=maart]
+\setuplabeltext [\s!af] [\v!april=april]
+\setuplabeltext [\s!af] [\v!may=mei]
+\setuplabeltext [\s!af] [\v!june=junie]
+\setuplabeltext [\s!af] [\v!july=julie]
+\setuplabeltext [\s!af] [\v!august=augustus]
+\setuplabeltext [\s!af] [\v!september=september]
+\setuplabeltext [\s!af] [\v!october=oktober]
+\setuplabeltext [\s!af] [\v!november=november]
+\setuplabeltext [\s!af] [\v!december=desember]
+
+\setuplabeltext [\s!no] [\v!january=januar]
+\setuplabeltext [\s!no] [\v!february=februar]
+\setuplabeltext [\s!no] [\v!march=mars]
+\setuplabeltext [\s!no] [\v!april=april]
+\setuplabeltext [\s!no] [\v!may=mai]
+\setuplabeltext [\s!no] [\v!june=juni]
+\setuplabeltext [\s!no] [\v!july=juli]
+\setuplabeltext [\s!no] [\v!august=august]
+\setuplabeltext [\s!no] [\v!september=september]
+\setuplabeltext [\s!no] [\v!october=oktober]
+\setuplabeltext [\s!no] [\v!november=november]
+\setuplabeltext [\s!no] [\v!december=desember]
+
+\setuplabeltext [\s!en] [\v!sunday=Sunday]
+\setuplabeltext [\s!en] [\v!monday=Monday]
+\setuplabeltext [\s!en] [\v!tuesday=Tuesday]
+\setuplabeltext [\s!en] [\v!wednesday=Wednesday]
+\setuplabeltext [\s!en] [\v!thursday=Thursday]
+\setuplabeltext [\s!en] [\v!friday=Friday]
+\setuplabeltext [\s!en] [\v!saturday=Saturday]
+
+\setuplabeltext [\s!nl] [\v!sunday=zondag]
+\setuplabeltext [\s!nl] [\v!monday=maandag]
+\setuplabeltext [\s!nl] [\v!tuesday=dinsdag]
+\setuplabeltext [\s!nl] [\v!wednesday=woensdag]
+\setuplabeltext [\s!nl] [\v!thursday=donderdag]
+\setuplabeltext [\s!nl] [\v!friday=vrijdag]
+\setuplabeltext [\s!nl] [\v!saturday=zaterdag]
+
+\setuplabeltext [\s!de] [\v!sunday=Sonntag]
+\setuplabeltext [\s!de] [\v!monday=Montag]
+\setuplabeltext [\s!de] [\v!tuesday=Dienstag]
+\setuplabeltext [\s!de] [\v!wednesday=Mittwoch]
+\setuplabeltext [\s!de] [\v!thursday=Donnerstag]
+\setuplabeltext [\s!de] [\v!friday=Freitag]
+\setuplabeltext [\s!de] [\v!saturday=Samstag]
+
+\setuplabeltext [\s!da] [\v!sunday=s\ostroke ndag]
+\setuplabeltext [\s!da] [\v!monday=mandag]
+\setuplabeltext [\s!da] [\v!tuesday=tirsdag]
+\setuplabeltext [\s!da] [\v!wednesday=onsdag]
+\setuplabeltext [\s!da] [\v!thursday=torsdag]
+\setuplabeltext [\s!da] [\v!friday=fredag]
+\setuplabeltext [\s!da] [\v!saturday=l\ostroke rdag]
+
+\setuplabeltext [\s!sv] [\v!sunday=s\oumlaut ndag]
+\setuplabeltext [\s!sv] [\v!monday=m\aring ndag]
+\setuplabeltext [\s!sv] [\v!tuesday=tisdag]
+\setuplabeltext [\s!sv] [\v!wednesday=onsdag]
+\setuplabeltext [\s!sv] [\v!thursday=torsdag]
+\setuplabeltext [\s!sv] [\v!friday=fredag]
+\setuplabeltext [\s!sv] [\v!saturday=l\oumlaut rdag]
+
+\setuplabeltext [\s!af] [\v!sunday=sondag]
+\setuplabeltext [\s!af] [\v!monday=maandag]
+\setuplabeltext [\s!af] [\v!tuesday=dinsdag]
+\setuplabeltext [\s!af] [\v!wednesday=woensdag]
+\setuplabeltext [\s!af] [\v!thursday=donderdag]
+\setuplabeltext [\s!af] [\v!friday=vrydag]
+\setuplabeltext [\s!af] [\v!saturday=saterdag]
+
+\setuplabeltext [\s!no] [\v!sunday=s\ostroke ndag]
+\setuplabeltext [\s!no] [\v!monday=mandag]
+\setuplabeltext [\s!no] [\v!tuesday=tirsdag]
+\setuplabeltext [\s!no] [\v!wednesday=onsdag]
+\setuplabeltext [\s!no] [\v!thursday=torsdag]
+\setuplabeltext [\s!no] [\v!friday=fredag]
+\setuplabeltext [\s!no] [\v!saturday=l\ostroke rdag]
+
+%D Rather new ...
+
+\setuplabeltext [\s!nl] [\v!page=pagina ]
+\setuplabeltext [\s!nl] [\v!atpage=op pagina ]
+\setuplabeltext [\s!nl] [\v!hencefore=hierboven]
+\setuplabeltext [\s!nl] [\v!hereafter=hieronder]
+\setuplabeltext [\s!nl] [\v!see=zie ]
+
+\setuplabeltext [\s!en] [\v!page=page ]
+\setuplabeltext [\s!en] [\v!atpage=at page ]
+\setuplabeltext [\s!en] [\v!hencefore=as we show above]
+\setuplabeltext [\s!en] [\v!hereafter=as we show below]
+\setuplabeltext [\s!en] [\v!see=see ]
+
+\setuplabeltext [\s!de] [\v!page=Seite ]
+\setuplabeltext [\s!de] [\v!atpage=auf Seite ]
+\setuplabeltext [\s!de] [\v!hencefore=siehe oben]
+\setuplabeltext [\s!de] [\v!hereafter=siehe unten]
+\setuplabeltext [\s!de] [\v!see=siehe ]
+
+\setuplabeltext [\s!da] [\v!page=Side ]
+\setuplabeltext [\s!da] [\v!atpage=p\aring\ side ]
+\setuplabeltext [\s!da] [\v!hencefore=se foroven]
+\setuplabeltext [\s!da] [\v!hereafter=se forneden]
+\setuplabeltext [\s!da] [\v!see=se ]
+
+\setuplabeltext [\s!sv] [\v!page=Sida ]
+\setuplabeltext [\s!sv] [\v!atpage=p\aring\ sida ]
+\setuplabeltext [\s!sv] [\v!hencefore=se ovan]
+\setuplabeltext [\s!sv] [\v!hereafter=se nedan]
+\setuplabeltext [\s!sv] [\v!see=se ]
+
+\setuplabeltext [\s!no] [\v!page=Side ]
+\setuplabeltext [\s!no] [\v!atpage=p\aring\ side ]
+\setuplabeltext [\s!no] [\v!hencefore=se foroven]
+\setuplabeltext [\s!no] [\v!hereafter=se forneden]
+\setuplabeltext [\s!no] [\v!see=se ]
+
+%D ... and to be completed!
+
+%D Next we implement couple of ordinal mumber converters:
+
+\def\enordinaldaynumber#1%
+ {#1\ifnum\lasttwodigits{#1}=11
+ \ordinalstr{th}%
+ \else\ifcase\lastdigit{#1}%
+ \ordinalstr{th}%
+ \or % 1
+ \ordinalstr{st}%
+ \or % 2
+ \ordinalstr{nd}%
+ \or % 3
+ \ordinalstr{rd}%
+ \else
+ \ordinalstr{th}%
+ \fi\fi}
+
+% \def\enordinaldaynumber#1%
+% {#1\ordinalstr{\ifnum\lasttwodigits{#1}=11 th\else\ifcase\lastdigit{#1}
+% th\or st\or nd\or rd\else th\fi\fi}}
+
+\def\nlordinaldaynumber#1%
+ {#1\highordinalstr{e}}
+
+%D \ShowAllLanguageValues [\s!en] [english] {English} {horn} % engelse humor
+%D \ShowAllLanguageValues [\s!nl] [dutch] {Dutch} {treat} % nederlandse zuinigheid
+%D \ShowAllLanguageValues [\s!de] [german] {German} {beer} % duitse degelijkheid
+%D \ShowAllLanguageValues [\s!da] [danish] {Danish} {pastry}
+%D \ShowAllLanguageValues [\s!sv] [swedish] {Swedish} {design}
+%D \ShowAllLanguageValues [\s!af] [afrikaans] {Afrikaaner} {boer} % afrikaanse gasvryheid
+%D \ShowAllLanguageValues [\s!no] [norwegian] {Norwegian} {wood}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-grk.tex b/Master/texmf-dist/tex/context/base/lang-grk.tex
new file mode 100644
index 00000000000..cd83daddbd3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-grk.tex
@@ -0,0 +1,86 @@
+%D \module
+%D [ file=lang-grk,
+%D version=2003.04.01,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Uralic Languages,
+%D author=Apostolos Syropoulos
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Greek Language}
+
+%D The framework of this module is set up by Hans Hagen while
+%D all the translations have been done by Apostolos Syropoulos
+
+\unprotect
+
+\installlanguage
+ [\s!gr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\greekleftquot,
+ \c!rightquote=\greekrightquot,
+ \c!leftquotation=\greekleftquot,
+ \c!rightquotation=\greekrightquot,
+ \c!date={\v!day\ \v!month\ \v!year},
+ \c!state=\v!stop]
+
+\installlanguage [greek] [\s!gr]
+
+\setupheadtext [\s!gr] [\v!content=\greekPi\greekepsilon\greekrho\greekiota\greekepsilon\greekchi\greekomicrontonos\greekmu\greekepsilon\greeknu\greekalpha]
+\setupheadtext [\s!gr] [\v!tables=\greekPi\greekiotatonos\greeknu\greekalpha\greekkappa\greekepsilon\greekfinalsigma]
+\setupheadtext [\s!gr] [\v!figures=\greekSigma\greekchi\greeketatonos\greekmu\greekalpha\greektau\greekalpha]
+\setupheadtext [\s!gr] [\v!graphics=\greekGamma\greekrho\greekalpha\greekphi\greekiota\greekkappa\greekalphatonos]
+\setupheadtext [\s!gr] [\v!intermezzi=\greekPi\greekalpha\greekupsilontonos\greeksigma\greekepsilon\greekiota\greekfinalsigma]
+\setupheadtext [\s!gr] [\v!index=\greekEpsilon\greekupsilon\greekrho\greekepsilon\greektau\greeketatonos\greekrho\greekiota\greekomicron]
+\setupheadtext [\s!gr] [\v!abbreviations=\greekSigma\greekupsilon\greeknu\greektau\greekomicron\greekmu\greekomicron\greekgamma\greekrho\greekalpha\greekphi\greekiotatonos\greekepsilon\greekfinalsigma]
+\setupheadtext [\s!gr] [\v!logos=\greekLambda\greekomicron\greekgamma\greekomicrontonos\greektau\greekupsilon\greekpi\greekalpha]
+\setupheadtext [\s!gr] [\v!units=\greekMu\greekomicron\greeknu\greekalphatonos\greekdelta\greekepsilon\greekfinalsigma]
+
+\setuplabeltext [\s!gr] [\v!table=\greekPi\greekiotatonos\greeknu\greekalpha\greekkappa\greekalpha\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!figure=\greekSigma\greekchi\greeketatonos\greekmu\greekalpha]
+\setuplabeltext [\s!gr] [\v!intermezzo=\greekPi\greekalpha\greekupsilontonos\greeksigma\greeketa]
+\setuplabeltext [\s!gr] [\v!graphic=\greekGamma\greekrho\greekalpha\greekphi\greekiota\greekkappa\greekomicrontonos]
+
+\setuplabeltext [\s!gr] [\v!chapter=\greekKappa\greekepsilon\greekphi\greekalphatonos\greeklambda\greekalpha\greekiota\greekomicron]
+\setuplabeltext [\s!gr] [\v!section=\greekEpsilon\greeknu\greekomicrontonos\greektau\greeketa\greektau\greekalpha]
+\setuplabeltext [\s!gr] [\v!subsection=\greekUpsilon\greekpi\greekomicrontonos\greekepsilon\greeknu\greekomicrontonos\greektau\greeketa\greektau\greekalpha]
+\setuplabeltext [\s!gr] [\v!subsubsection=]
+\setuplabeltext [\s!gr] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!gr] [\v!appendix=\greekPi\greekalpha\greekrho\greekalphatonos\greekrho\greektau\greeketa\greekmu\greekalpha]
+\setuplabeltext [\s!gr] [\v!part=\greekMu\greekepsilontonos\greekrho\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!line=\greekGamma\greekrho\greekalpha\greekmu\greekmu\greeketatonos]
+\setuplabeltext [\s!gr] [\v!lines=\greekGamma\greekrho\greekalpha\greekmu\greekmu\greekepsilontonos\greekfinalsigma]
+
+\setuplabeltext [\s!gr] [\v!january=\greekIota\greekalpha\greeknu\greekomicron\greekupsilon\greekalphatonos\greekrho\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!february=\greekPhi\greekepsilon\greekbeta\greekrho\greekomicron\greekupsilon\greekalphatonos\greekrho\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!march=\greekMu\greekalphatonos\greekrho\greektau\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!april=\greekAlpha\greekpi\greekrho\greekiotatonos\greeklambda\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!may=\greekMu\greekalphatonos\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!june=\greekIota\greekomicron\greekupsilontonos\greeknu\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!july=\greekIota\greekomicron\greekupsilontonos\greeklambda\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!august=\greekAlpha\greekupsilontonos\greekgamma\greekomicron\greekupsilon\greeksigma\greektau\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!september=\greekSigma\greekepsilon\greekpi\greektau\greekepsilontonos\greekmu\greekbeta\greekrho\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!october=\greekOmicron\greekkappa\greektau\greekomegatonos\greekbeta\greekrho\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!november=\greekNu\greekomicron\greekepsilontonos\greekmu\greekbeta\greekrho\greekiota\greekomicron\greekfinalsigma]
+\setuplabeltext [\s!gr] [\v!december=\greekDelta\greekepsilon\greekkappa\greekepsilontonos\greekmu\greekbeta\greekrho\greekiota\greekomicron\greekfinalsigma]
+
+\setuplabeltext [\s!gr] [\v!sunday=\greekKappa\greekupsilon\greekrho\greekiota\greekalpha\greekkappa\greeketatonos]
+\setuplabeltext [\s!gr] [\v!monday=\greekDelta\greekepsilon\greekupsilon\greektau\greekepsilontonos\greekrho\greekalpha]
+\setuplabeltext [\s!gr] [\v!tuesday=\greekTau\greekrho\greekiotatonos\greektau\greeketa]
+\setuplabeltext [\s!gr] [\v!wednesday=\greekTau\greekepsilon\greektau\greekalphatonos\greekrho\greektau\greeketa]
+\setuplabeltext [\s!gr] [\v!thursday=\greekPi\greekepsilontonos\greekmu\greekpi\greektau\greeketa]
+\setuplabeltext [\s!gr] [\v!friday=\greekPi\greekalpha\greekrho\greekalpha\greeksigma\greekkappa\greekepsilon\greekupsilon\greeketatonos]
+\setuplabeltext [\s!gr] [\v!saturday=\greekSigma\greekalphatonos\greekbeta\greekbeta\greekalpha\greektau\greekomicron]
+
+%D % \ShowAllLanguageValues [\s!gr] [\greekEpsilon\greeklambda\greeklambda\greeketa\greeknu\greekiota\greekkappa\greekalphatonos] {Greek} {love}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ind.tex b/Master/texmf-dist/tex/context/base/lang-ind.tex
new file mode 100644
index 00000000000..9cc6623cf0f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ind.tex
@@ -0,0 +1,26 @@
+%D \module
+%D [ file=lang--ind,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Indo||Iranian Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Indo-Iranian Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+
+% 34 languages
+
+\unprotect
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ini.tex b/Master/texmf-dist/tex/context/base/lang-ini.tex
new file mode 100644
index 00000000000..e435c2420cf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ini.tex
@@ -0,0 +1,923 @@
+%D \module
+%D [ file=lang-ini,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Todo : --language=pl,en,nl : nl incs number of language
+
+%D This module implements the (for the moment still simple)
+%D multi||language support of \CONTEXT, which should not be
+%D confused with the multi||lingual interface. This support
+%D will be extended when needed.
+
+\writestatus{loading}{Context Language Macros / Initialization}
+
+\unprotect
+
+\startmessages dutch library: linguals
+ title: taal
+ 1: afbreekpatronen -- voor -- geladen (n=--,e=--,m=--)
+ 2: geen afbreekpatronen -- voor -- (n=--,e=--,m=--) (--,--)
+ 3: afbreekdefinities -- voor -- geladen (n=--,e=--,m=--)
+ 4: geen afbreekdefinities -- voor -- (n=--,e=--,m=--)
+ 5: afbreekpatronen voor -- niet geladen
+ 6: taal -- is niet gedefinieerd
+ 7: taal specifieke opties [--] introduceren een skip van --
+ 8: taal specifieke opties [--] naadloos toegevoegd
+ 9: taal -- is actief
+ 10: patronen --geladen
+\stopmessages
+
+\startmessages english library: linguals
+ title: language
+ 1: patterns -- for -- loaded (n=--,e=--,m=--)
+ 2: no patterns -- for -- (n=--,e=--,m=--) (--,--)
+ 3: hyphenations -- for -- loaded (n=--,e=--,m=--)
+ 4: no hyphenations -- for -- (n=--,e=--,m=--)
+ 5: patterns for -- not loaded
+ 6: language -- is undefined
+ 7: language specific options [--] introduce a -- skip
+ 8: language specific options [--] seamless appended
+ 9: language -- is active
+ 10: patterns --loaded
+\stopmessages
+
+\startmessages german library: linguals
+ title: Sprache
+ 1: Trennmuster -- fuer -- geladen (n=--,e=--,m=--)
+ 2: Keine Trennmuster -- fuer -- (n=--,e=--,m=--) (--,--)
+ 3: Trenndefinitionen -- fuer -- geladen (n=--,e=--,m=--)
+ 4: Keine Trenndefinitionen -- fuer -- (n=--,e=--,m=--)
+ 5: Trennmuster fuer -- nicht geladen
+ 6: Sprache -- ist undefiniert
+ 7: Sprachenspezifische Option [--] fuegt eine Luecke von -- ein
+ 8: Sprachenspezifische Option [--] nahtlos hinzugefuegt
+ 9: Sprache -- ist aktiv
+ 10: Trennmuster --geladen
+\stopmessages
+
+% TOM: 9 and 10
+
+\startmessages czech library: linguals
+ title: jazyky
+ 1: vzory -- pro -- nacteny (n=--,e=--,m=--)
+ 2: zadne vzory -- pro -- (n=--,e=--,m=--) (--,--)
+ 3: deleni slov -- pro -- nacteno (n=--,e=--,m=--)
+ 4: zadne deleni slov -- pro -- (n=--,e=--,m=--)
+ 5: vzory pro -- nenacteny
+ 6: jazyk -- neni definovan
+ 7: specificke volby jazyka [--] zavadeji -- (zavlecenou) mezeru
+ 8: specificke volby jazyka [--] bez mezer pripojeny
+ 9: language -- is active
+ 10: vzory --nacteny
+\stopmessages
+
+\startmessages italian library: linguals
+ title: lingua
+ 1: schemi -- per -- caricati (n=--,e=--,m=--)
+ 2: niente schemi -- per -- (n=--,e=--,m=--) (--,--)
+ 3: sillabazione -- per -- caricata (n=--,e=--,m=--)
+ 4: niente sillabazione -- per -- (n=--,e=--,m=--)
+ 5: schemi per -- non caricati
+ 6: lingua -- non definita
+ 7: opzioni specifiche per la lingua [--] introducono un salto --
+ 8: opzioni specifiche per la lingua [--] aggiunte trasparentemente
+ 9: lingua -- attiva
+ 10: schemi -- caricati
+\stopmessages
+
+\startmessages norwegian library: linguals
+ title: språk
+ 1: orddelingsmønster -- for -- er lest inn (n=--,e=--,m=--)
+ 2: ingen orddelingsmønster -- for -- (n=--,e=--,m=--) (--,--)
+ 3: orddelingsdefinisjon -- for -- er lest inn (n=--,e=--,m=--)
+ 4: ingen orddelingsdefinisjon -- for -- (n=--,e=--,m=--)
+ 5: orddelingsmønster for -- er ikke lest inn
+ 6: språk -- er udefinert
+ 7: språk spesifikk opsjon [--] introduserer et -- hopp
+ 8: språk spesifikk opsjon [--] problemfritt tilføyd
+ 9: språk -- er aktivt
+ 10: orddelingsmønster -- er lest inn
+\stopmessages
+
+\startmessages romanian library: linguals
+ title: limbi
+ 1: sablonul -- pentru -- s-a incarcat (n=--,e=--,m=--)
+ 2: nu exista sabloane -- pentru -- (n=--,e=--,m=--) (--,--)
+ 3: despartirea in silabe -- pentru -- s-a incarcat (n=--,e=--,m=--)
+ 4: nu exista despartire in silabe -- pentru -- (n=--,e=--,m=--)
+ 5: sabloanele pentru -- nu sunt incarcate
+ 6: limba -- nu este definita
+ 7: optiunile specifice ale limbii [--] introduc un spatiu --
+ 8: optiunile specifice ale limbii [--] adaugate
+ 9: limba -- este activa
+ 10: sabloanele -- incarcate
+\stopmessages
+
+%D When loading hyphenation patterns, \TEX\ assign a number to
+%D each loaded table, starting with~0. Switching to a specific
+%D table is done by assigning the relevant number to the
+%D predefined \COUNTER\ \type{\language}. Unfortunately the
+%D name of this command suits very well the name of the
+%D language switching command we are to define, so let's save
+%D this primitive under another name:
+
+\let\normallanguage\language
+
+%D We keep track of the last loaded patterns by means of a
+%D pseudo \COUNTER. This just one of those situations in which
+%D we don't want to spent a real one. Language zero has no
+%D patterns, first of all because I like to start numbering
+%D at one. It may come in handy for special purposes as well.
+
+\normallanguage\zerocount \def\loadedlanguage{1}
+
+%D Let's start with setting the lowercase code of quotes, so
+%D that we get proper hyphenation in languages like Dutch,
+%D French and Czech.
+
+% elsewhere: \lccode`\'=`\'
+
+% \def\showlccodes
+% {\currentlanguage:\space
+% \dostepwiserecurse{0}{255}{1}
+% {\ifnum\lccode\recurselevel>0
+% \char\recurselevel:\the\lccode\recurselevel\relax\space
+% \fi}
+% \endgraf}
+
+% \de \hyphenatedword{Works''} \showlccodes
+% \nl \hyphenatedword{Works''} \showlccodes
+% \uk \hyphenatedword{Works''} \showlccodes
+
+%D \macros
+%D {currentlanguage, setupcurrentlanguage}
+%D
+%D Instead of numbers,we are going to use symbolic names for
+%D the languages. The current langage is saved in the macro
+%D \type {\currentlanguage}. The setup macro is mainly used
+%D for cosmetic purposes.
+
+\let\currentlanguage \empty
+\let\currentmainlanguage\empty
+
+\def\setupcurrentlanguage[#1]{\def\currentlanguage{#1}}
+
+%D The internal macros will be defined later.
+
+%D \macros
+%D {installlanguage}
+%D
+%D Hyphenation patterns can only be loaded when the format file
+%D is prepared. The next macro takes care of this loading. A
+%D language is specified with
+%D
+%D \showsetup{installlanguage}
+%D
+%D When \type {state} equals \type {start}, both patterns
+%D and additional hyphenation specifications are loaded. These
+%D files are seached for on the system path and are to be
+%D named:
+%D
+%D \starttyping
+%D \f!languageprefix-identifier.\f!patternsextension
+%D \f!languageprefix-identifier.\f!hyhensextension
+%D \stoptyping
+%D
+%D The \type{spacing} variable specifies how the spaces after
+%D punctuation has to be handled. English is by tradition more
+%D tolerant to inter||sentence spacing than other languages.
+%D
+%D This macro also defines \type {\identifier} as a shortcut
+%D switch to the language. Furthermore the command defined as
+%D being language specific, are executed. With
+%D \type {default} we can default to another language
+%D (patterns) at format generation time. This default language
+%D is overruled when the appropriate patterns are loaded (some
+%D implementations support run time addition of patterns to a
+%D preloaded format).
+
+\def\dodoinstalllanguage#1#2% #2 added
+ {\doifundefined{#1}{\setvalue{#1}{\complexlanguage[#2]}}%
+ \expanded{\noexpand\uppercase{\noexpand\edef\noexpand\ascii{#1}}}%
+ \doifundefined\ascii{\setvalue\ascii{\complexlanguage[#2]}}}
+
+%D \macros
+%D {preloadlanguages}
+%D
+%D We first try to load the files defined as file synonym
+%D for \type {lang-*.pat} and \type {lang-*.hyp}. After that we
+%D fall back on those files. The macro \type {\preloadpatterns}
+%D reports which patterns are loaded and what hyphenmin
+%D values are set.
+
+\let\preloadedpatterns\empty
+\let\preloadedpmessage\empty
+
+\def\doshowpatterns#1#2#3#4% language number encoding mapping
+ {#1->#3:#4->#2->\xxlanguageparameter{#1}\s!lefthyphenmin:\xxlanguageparameter{#1}\s!righthyphenmin\space}
+
+\def\preloadlanguages
+ {\doifsomething\preloadedpmessage{\showmessage\m!linguals{10}\preloadedpmessage}}
+
+\fetchruntimecommand \showpatterns {\f!languageprefix\s!run}
+
+\let\installedlanguages\empty
+
+\def\doiflanguageelse#1{\doifdefinedelse{\??la#1\c!state}}
+
+\def\doinstalllanguage[#1][#2]%
+ {%\ConvertConstantAfter\doifinstringelse{=}{#2}
+ \doifassignmentelse{#2}
+ {\doiflanguageelse{#1}
+ {\getparameters[\??la#1][#2]}
+ {\setvalue{\l!prefix!#1}{#1}%
+ \addtocommalist{#1}\installedlanguages
+ \dodoinstalllanguage{#1}{#1}%
+ \getparameters
+ [\??la#1]
+ [\c!state=\v!stop,
+ \c!default=,
+ \s!patterns=,
+ \s!mapping=,
+ \s!encoding=,
+ #2]}%
+ \doifvalue{\??la#1\c!default}{#1}{\letvalue{\??la#1\c!default}\empty}%
+ % loop in deo: \doifvalue{\??la#1\s!patterns}{#1}{\letvalue{\??la#1\c!default}\empty}%
+ \doifelsevalue{\??la#1\c!state}\v!start
+ {\doifelsevaluenothing{\??la#1\s!patterns}
+ {\edef\languagesuffix{#1}}
+ {\edef\languagesuffix{\getvalue{\??la#1\s!patterns}}}%
+ \doifundefinedelse{\??la\??la:\currentencoding:\currentmapping:\languagesuffix}
+ {\doloadpatterns{#1}\languagesuffix}
+ {\bgroup
+ \edef\loadedlanguage{\getvalue{\??la\??la:\currentencoding:\currentmapping:\languagesuffix}}%
+ \showmessage\m!linguals1{\languagesuffix,#1,\loadedlanguage,*,*}%
+ \showmessage\m!linguals3{\languagesuffix,#1,\loadedlanguage,*,*}%
+ \egroup}}
+ {\showmessage\m!linguals5{#1}}}
+ {\setvalue{\l!prefix!#1}{#2}%
+ \dodoinstalllanguage{#1}{#2}}}
+
+% ^^ \language[#1] gave unwanted side effect of loading language specifics
+
+\def\installlanguage
+ {\dodoubleargument\doinstalllanguage}
+
+%D Handy
+
+\def\preloadallpatterns
+ {\gdef\preloadallpatterns##1{\installlanguage[##1][\c!state=\v!start]}%
+ \processcommacommand[\installedlanguages]\preloadallpatterns
+ \global\let\preloadallpatterns\relax}
+
+%D When the second argument is a language identifier, a
+%D synonym is created. This feature is present because we
+%D used dutch mnemonics in the dutch version, but nowadays
+%D conform a standard.
+
+\let \patternencoding \s!default
+\let \patternmapping \s!default
+
+\def\doloadpatterns#1#2%
+ {\expanded{\getcommacommandsize[\getvalue{\??la#2\s!encoding}]}%
+ \ifnum\commalistsize>0
+ %\message{[nofpatterns #2: \commalistsize/\getvalue{\??la#2\s!encoding}]}%
+ \dorecurse\commalistsize
+ {\expanded{\getfromcommacommand[\getvalue{\??la#2\s!encoding}][\recurselevel]}%
+ \let\patternencoding\commalistelement
+ \expanded{\getfromcommacommand[\getvalue{\??la#2\s!mapping }][\recurselevel]}%
+ \let\patternmapping \commalistelement
+ %\message{[patterns: #1/#2/\patternencoding/\patternmapping]}%
+ \dodoloadpatterns{#1}{#2}\patternencoding\patternmapping}%
+ \else
+ %\message{[patterns: #1/#2]}%
+ \dodoloadpatterns{#1}{#2}{}{}%
+ \fi}
+
+\def\dodoloadpatterns#1#2#3#4% beware, loaded language also incr
+ {\normallanguage\loadedlanguage % when not really needed
+ \bgroup
+ % \startencoding[#3]%
+ % \enablemapping[#4]% hm, does a sync patterns
+ % \doifnothing\currentencoding{\let\currentencoding\s!default}%
+ % \doifnothing\currentmapping {\let\currentmapping \s!default}%
+ % better:
+ \let\synchronizepatterns\relax % needed?
+ \let\enabledmapping \empty % needed?
+ % old (original) patterns
+ \doifelsenothing{#3}{\enableencoding[\s!default]}{\enableencoding[#3]}%
+ \doifelsenothing{#4}{\enablemapping [\s!default]}{\enablemapping [#4]}%
+ % new patterns
+ % \enableregime[utf]%
+ %
+ \ifundefined{\??la\??la:\currentencoding:\currentmapping:#2}%
+ \let\doshowpatterns\relax
+ \edef\alreadyloadedlanguage
+ {\executeifdefined{\??la\??la:\currentencoding:\currentmapping:\truefilename{\f!languageprefix#2.\f!patternsextension}}\empty}%
+ \edef\alreadyloadedlanguage
+ {\executeifdefined{\??la\??la:\currentencoding:\currentmapping:\f!languageprefix#2.\f!patternsextension}\alreadyloadedlanguage}%
+ \ifx\alreadyloadedlanguage\empty
+ \letgvalue{\??la\??la:\currentencoding:\currentmapping:#2}\loadedlanguage
+ \doifundefined{\??la\??la:\s!default:\s!default:#2}{\letgvalue{\??la\??la:\s!default:\s!default:#2}\loadedlanguage}% fall back
+ \startpatternloading{\truefilename{\f!languageprefix#2.\f!patternsextension}}{#3}{#4}%
+ \readsysfile{\truefilename{\f!languageprefix#2.\f!patternsextension}}
+ {\setxvalue{\??la#1\s!patterns}{#2}%
+ \setxvalue{\??la\??la:\currentencoding:\currentmapping:\truefilename{\f!languageprefix#2.\f!patternsextension}}{\number\loadedlanguage}%
+ \xdef\preloadedpmessage{\preloadedpmessage\doshowpatterns{#2}{\number\normallanguage}{\currentencoding}{\currentmapping}}%
+ \doglobal\addtocommalist{#2}\preloadedpatterns
+ \showmessage\m!linguals1{#2,#1,\loadedlanguage,\currentencoding,\currentmapping}}
+ {\showmessage\m!linguals2{#2,#1,\loadedlanguage,\currentencoding,\currentmapping,\f!languageprefix#2.\f!patternsextension,\truefilename{\f!languageprefix#2.\f!patternsextension}}}%
+ \stoppatternloading
+ \startpatternloading{\truefilename{\f!languageprefix#2.\f!hyphensextension}}{#3}{#4}%
+ \readsysfile{\truefilename{\f!languageprefix#2.\f!hyphensextension}}
+ {\showmessage\m!linguals3{#2,#1,\loadedlanguage,\currentencoding,\currentmapping}}
+ {\showmessage\m!linguals4{#2,#1,\loadedlanguage,\currentencoding,\currentmapping}}%
+ \stoppatternloading
+ \doglobal\increment\loadedlanguage
+ % \stopencoding
+ \else % optimization, introduced 2004.08.24, while sorting out changes in tl
+ \letgvalue{\??la\??la:\currentencoding:\currentmapping:#2}\alreadyloadedlanguage
+ \doifundefined{\??la\??la:\s!default:\s!default:#2}{\letgvalue{\??la\??la:\s!default:\s!default:#2}\loadedlanguage}% fall back
+ \setxvalue{\??la#1\s!patterns}{#2}%
+ \xdef\preloadedpmessage{\preloadedpmessage\doshowpatterns{#2}{[\number\alreadyloadedlanguage]}{\currentencoding}{\currentmapping}}%
+ \doglobal\addtocommalist{#2}\preloadedpatterns
+ \showmessage\m!linguals1{#2,#1,[\alreadyloadedlanguage],\currentencoding,\currentmapping}%
+ \fi
+ \fi
+ \egroup}
+
+\def\doifpatternselse#1%
+ {\expanded{\doifinsetelse{#1}{\preloadedpatterns}}}
+
+%D Since we can only load patterns in ini\TeX, we nil the
+%D loading before dumping (which saves a bit of memory, but
+%D strangely enough not in the format).
+
+\appendtoks
+ \gdef\doloadpatterns{\doglobal\increment\loadedlanguage\gobbletwoarguments}%
+ \globallet\dodoloadpatterns\gobblefourarguments
+\to \everydump
+
+%D \macros
+%D {setuplanguage}
+%D
+%D Quick and dirty, but useful:
+%D
+%D \showsetup{setuplanguage}
+
+% \def\setuplanguage
+% {\dodoubleargument\dosetuplanguage}
+
+% \def\dosetuplanguage[#1][#2]%
+% {\getparameters[\??la#1][#2]%
+% \doif{#1}\currentlanguage\docomplexlanguage}
+
+\unprotected \def\setuplanguage
+ {\dodoubleempty\dosetuplanguage}
+
+\def\dosetuplanguage[#1][#2]% handy patch for testing
+ {\ifsecondargument
+ \getparameters[\??la#1][#2]%
+ \doif{#1}\currentlanguage\docomplexlanguage
+ \else
+ \getparameters[\??la\currentlanguage][#1]%
+ \docomplexlanguage
+ \fi}
+
+\setuplanguage
+ [\s!default]
+ [\s!lefthyphenmin=2,
+ \s!righthyphenmin=2,
+ \c!spacing=\v!packed,
+ \c!midsentence=---,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!leftspeech=\languageparameter\c!leftquotation,
+ \c!middlespeech=,
+ \c!rightspeech=\languageparameter\c!rightquotation,
+ \c!limittext=\unknown,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!text=Ag]
+
+% rather new, split and per language
+
+\setuplanguage
+ [\s!default]
+ [\c!compoundhyphen=\compoundhyphen,
+ \c!leftcompoundhyphen=\compoundhyphen,
+ \c!rightcompoundhyphen=]
+
+%D The values \type {leftsentence} and \type
+%D {rightsentence} can be (and are) used to implement
+%D automatic subsentence boundary glyphs, like in {\fr
+%D |<|french guillemots|>|} or {\de |<|german guillemots|>|} or
+%D {\nl |<|dutch dashes|>|} like situations. Furthermore \type
+%D {leftquotation} and \type {leftquote} come into view
+%D \quotation {when we quote} or \quote {quote} something.
+
+%D \macros
+%D {currentdatespecification}
+%D
+%D Just to make things easy we can ask for the current date
+%D specification by saying:
+
+\def\currentdatespecification{\languageparameter\c!date}
+
+%D This command is not meant for users.
+
+%D Carefull reading of these macros shows that it's legal to
+%D say
+%D
+%D \starttyping
+%D \installlanguage [du] [de]
+%D \stoptyping
+
+%D \macros
+%D {language,mainlanguage}
+%D
+%D Switching to another language (actually another hyphenation
+%D pattern) is done with:
+%D
+%D \starttyping
+%D \language[identifier]
+%D \stoptyping
+%D
+%D or with \type{\identifier}. Just to be compatible with
+%D \PLAIN\ \TEX, we still support the original meaning, so
+%D
+%D \starttyping
+%D \language=1
+%D \stoptyping
+%D
+%D is a valid operation, where the relation between number
+%D and language depends on the order in installing languages.
+%D
+%D \showsetup{language}
+%D \showsetup{mainlanguage}
+%D
+%D Both commands take a predefined language identifier as
+%D argument. We can use \type{\mainlanguage[identifier]} for
+%D setting the (indeed) main language. This is the language
+%D used for translating labels like {\em figure} and {\em
+%D table}. The main language defaults to the current language.
+%D
+%D We take care of local as well as standardized language
+%D switching (fr and fa, de and du, but nl and nl).
+
+% new, encoding specific patterns
+
+\ifx\synchronizepatterns\undefined \let\synchronizepatterns\relax \fi
+
+\beginTEX
+
+\def\dosetnormallanguage#1#2%
+ {\@EA\ifx\csname\??la\??la#1#2\endcsname\relax
+ \@EA\firstofoneargument
+ \else\@EA\ifx\csname\??la\??la#1#2\endcsname\empty
+ \@EAEAEA\firstofoneargument
+ \else
+ \donetrue
+ \@EA\xdef\csname\??la\currentlanguage\s!patterns\endcsname{#2}%
+ \normallanguage\csname\??la\??la#1#2\endcsname\relax % \relax is needed for lookahead problems
+ \@EAEAEA\gobbleoneargument
+ \fi\fi}
+
+\endTEX
+
+\beginETEX
+
+\def\dosetnormallanguage#1#2%
+ {\ifcsname\??la\??la#1#2\endcsname
+ \edef\thenormallanguage{\csname\??la\??la#1#2\endcsname}%
+ \ifx\thenormallanguage\empty
+ \@EAEAEA\firstofoneargument
+ \else
+ \donetrue
+ \@EA\xdef\csname\??la\currentlanguage\s!patterns\endcsname{#2}%
+ \normallanguage\thenormallanguage\relax % \relax is needed for lookahead problems
+ \@EAEAEA\gobbleoneargument
+ \fi
+ \else
+ \@EA\firstofoneargument
+ \fi}
+
+\endETEX
+
+\newevery \everylanguage \relax
+\newevery \everyresetlanguagespecifics \relax
+
+\def\disablelanguagespecifics
+ {\ignorecompoundcharacter}
+
+% \def\setnormallanguage#1%
+% {\dosetnormallanguage{:\currentencoding:\currentmapping:}{#1}{%
+% \dosetnormallanguage{:\currentencoding:\s!default :}{#1}{%
+% \dosetnormallanguage{:\s!default :\currentmapping:}{#1}{%
+% \dosetnormallanguage{:\s!default :\s!default :}{#1}\empty}}}}
+%
+% assume #1 = \cs
+
+\def\setnormallanguage#1%
+ {\dosetnormallanguage{:\currentencoding:\currentmapping:}#1{%
+ \dosetnormallanguage{:\currentencoding:\s!default :}#1{%
+ \dosetnormallanguage{:\s!default :\currentmapping:}#1{%
+ \dosetnormallanguage{:\s!default :\s!default :}#1\empty}}}}
+
+\def\docomplexlanguage% assumes that \currentlanguage is set
+ {\edef\currentdefaultlanguage{\defaultlanguage\currentlanguage}%
+ % called quite often, so we use \csname
+ % \def\synchronizepatterns{\setnormallanguage
+ % {\csname\??la\currentlanguage\s!patterns\endcsname}}% called often
+ % of even better pre-expand in an ugly way:
+ \@EA\def\@EA\synchronizepatterns\@EA{\@EA\setnormallanguage
+ \csname\??la\currentlanguage\s!patterns\endcsname}%
+ \donefalse
+ \synchronizepatterns
+ \ifdone\else
+ \def\synchronizepatterns{\setnormallanguage\currentlanguage}%
+ \synchronizepatterns
+ \ifdone\else
+ \ifx\currentdefaultlanguage\empty\else
+ % \def\synchronizepatterns{\setnormallanguage
+ % {\csname\??la\currentdefaultlanguage\s!patterns\endcsname}}%
+ \@EA\def\@EA\synchronizepatterns\@EA{\@EA\setnormallanguage
+ \csname\??la\currentdefaultlanguage\s!patterns\endcsname}%
+ \synchronizepatterns
+ \ifdone\else
+ \setnormallanguage\currentdefaultlanguage
+ \synchronizepatterns
+ \fi
+ \fi
+ \fi
+ \fi
+ \the\everylanguage
+ \enablelanguagespecifics[\currentlanguage]%
+ % strange, what is this doing here, dangerous for {il2,ec}
+ % \edef\languagemapping{\csname\??la\currentlanguage\s!mapping\endcsname}%
+ % \ifx\languagemapping\empty\else
+ % \fastenablemapping\languagemapping
+ % \fi
+ \lefthyphenmin 0\languageparameter\s!lefthyphenmin
+ \righthyphenmin0\languageparameter\s!righthyphenmin
+ \relax
+ % will be definable and move to core-spa !
+ \doifelse{\languageparameter\c!spacing}\v!broad
+ \nonfrenchspacing\frenchspacing}
+
+\ifx\enablelanguagespecifics\undefined
+
+ \def\enablelanguagespecifics[#1]{}
+
+\fi
+
+\beginETEX
+
+\def\complexlanguage[#1]%
+ {\edef\askedlanguage{#1}%
+ \ifx\askedlanguage\empty \else
+ \ifcsname\l!prefix!\askedlanguage\endcsname
+ \edef\askedlanguage{\csname\l!prefix!\askedlanguage\endcsname}%
+ \ifx\currentlanguage\askedlanguage \else
+ \let\currentlanguage\askedlanguage
+ \docomplexlanguage
+ \fi
+ \else
+ \showmessage\m!linguals6{#1}%
+ \fi
+ \fi}
+
+\endETEX
+
+\beginTEX
+
+\def\complexlanguage[#1]%
+ {\edef\askedlanguage{#1}%
+ \ifx\askedlanguage\empty \else
+ \@EA\ifx\csname\l!prefix!\askedlanguage\endcsname\relax
+ \showmessage\m!linguals6{#1}%
+ \else
+ \edef\askedlanguage{\csname\l!prefix!\askedlanguage\endcsname}%
+ \ifx\currentlanguage\askedlanguage \else
+ \let\currentlanguage\askedlanguage
+ \docomplexlanguage
+ \fi
+ \fi
+ \fi}
+
+\endTEX
+
+\let\simplelanguage\normallanguage
+
+\definecomplexorsimple\language
+
+\beginETEX
+
+\def\mainlanguage[#1]%
+ {\edef\askedlanguage{#1}%
+ \ifx\askedlanguage\empty \else
+ \ifcsname\l!prefix!\askedlanguage\endcsname
+ \edef\askedlanguage{\csname\l!prefix!\askedlanguage\endcsname}%
+ \ifx\currentmainlanguage\askedlanguage \else
+ \let\currentmainlanguage\askedlanguage
+ \let\currentlanguage\askedlanguage
+ \docomplexlanguage
+ \fi
+ \fi
+ \fi}
+
+\endETEX
+
+\beginTEX
+
+\def\mainlanguage[#1]%
+ {\edef\askedlanguage{#1}%
+ \ifx\askedlanguage\empty \else
+ \@EA\ifx\csname\l!prefix!\askedlanguage\endcsname\relax\else
+ \edef\askedlanguage{\csname\l!prefix!\askedlanguage\endcsname}%
+ \ifx\currentmainlanguage\askedlanguage \else
+ \let\currentmainlanguage\askedlanguage
+ \let\currentlanguage\askedlanguage
+ \docomplexlanguage
+ \fi
+ \fi
+ \fi}
+
+\endTEX
+
+%D \macros
+%D {defaultlanguage,languagedefault}
+%D
+%D The macro \type {\defaultlanguage{id}} expands into the
+%D default language, when defined, while \type
+%D {\languagedefault{id}\c!parameter} returns the default's
+%D parameter.
+
+\def\defaultlanguage#1%
+ {\@EA\ifx\csname\??la#1\c!default\endcsname\empty
+ #1%
+ \else
+ \@EA\defaultlanguage\csname\??la#1\c!default\endcsname
+ \fi}
+
+\def\languagedefault#1#2%
+ {\csname\??la\defaultlanguage{#1}#2\endcsname}
+
+% \def\languageparameter#1%
+% {\csname\??la\defaultlanguage\currentlanguage#1\endcsname}
+
+\def\languageparameter
+ {\@EA\dolanguageparameter\@EA{\defaultlanguage\currentlanguage}}
+
+\def\xxlanguageparameter#1%
+ {\@EA\dolanguageparameter\@EA{\defaultlanguage{#1}}}
+
+\beginETEX
+
+ \def\dolanguageparameter#1#2%
+ {\csname\??la
+ \ifcsname\??la\currentlanguage#2\endcsname
+ \currentlanguage
+ \else\ifcsname\??la#1#2\endcsname
+ \@EA\ifx\csname\??la#1#2\endcsname\empty\s!default\else#1\fi
+ \else
+ \s!default
+ \fi\fi
+ #2\endcsname}
+
+\endETEX
+
+\beginTEX
+
+ \def\dolanguageparameter#1#2%
+ {\csname\??la
+ \@EA\ifx\csname\??la\currentlanguage#2\endcsname\relax
+ \@EA\ifx\csname\??la#1#2\endcsname\relax
+ \s!default
+ \else
+ \@EA\ifx\csname\??la#1#2\endcsname\empty\s!default\else#1\fi
+ \fi
+ \else
+ \currentlanguage
+ \fi
+ #2\endcsname}
+
+\endTEX
+
+% moved
+%
+% %D \macros
+% %D {leftguillemot,rightguillemot,leftsubguillemot,rightsubguillemot,
+% %D ...single...quote,...double...quote}
+% %D
+% %D We assign logical names to all kind of quote and sentence
+% %D boundary characters.
+% %D
+% %D When using Computer Modern Roman, the next definitions
+% %D looks a bit better than the default ligatures.
+% %D
+% %D \starttyping
+% %D \def\lowerleftsingleninequote {,}
+% %D \def\lowerleftdoubleninequote {,\kern-.1em,}
+% %D \def\upperleftsingleninequote {'}
+% %D \def\upperleftdoubleninequote {''\kern-.1em}
+% %D \def\upperleftsinglesixquote {`}
+% %D \def\upperleftdoublesixquote {`\kern-.1em`}
+% %D
+% %D \def\lowerrightsingleninequote {,}
+% %D \def\lowerrightdoubleninequote {,\kern-.1em,}
+% %D \def\upperrightsingleninequote {'}
+% %D \def\upperrightdoubleninequote {''}
+% %D \def\upperrightsinglesixquote {`}
+% %D \def\upperrightdoublesixquote {\kern-.125em``}
+% %D \stoptyping
+% %D
+% %D But in other fonts, these definitions can give problems, so
+% %D we just say:
+%
+% \def\lowerleftsingleninequote {,}
+% \def\lowerleftdoubleninequote {,,}
+% \def\upperleftsingleninequote {'}
+% \def\upperleftdoubleninequote {''}
+% \def\upperleftsinglesixquote {`}
+% \def\upperleftdoublesixquote {``}
+%
+% \def\lowerrightsingleninequote {,}
+% \def\lowerrightdoubleninequote {,,}
+% \def\upperrightsingleninequote {'}
+% \def\upperrightdoubleninequote {''}
+% \def\upperrightsinglesixquote {`}
+% \def\upperrightdoublesixquote {``}
+%
+% %D Yes I know, they are ugly:
+%
+% \def\leftfakeguillemot
+% {\dontleavehmode\hbox{\raise.25ex\hbox{$\scriptscriptstyle\ll$}}}
+%
+% \def\rightfakeguillemot
+% {\hbox{\raise.25ex\hbox{$\scriptscriptstyle\gg$}}}
+%
+% \def\leftsubfakeguillemot
+% {\dontleavehmode\hbox{\raise.25ex\hbox{$\scriptscriptstyle<$}}}
+%
+% \def\rightsubfakeguillemot
+% {\hbox{\raise.25ex\hbox{$\scriptscriptstyle>$}}}
+
+%D New (see nomarking and nolist):
+
+\def\splitsequence#1#2%
+ {\doifelse{#1}\v!no{#2}{\doifelse{#1}\v!yes{\languageparameter\c!limittext}{#1}}}
+
+\def\splitsymbol#1%
+ {\splitsequence{#1}{\languageparameter\c!limittext}}
+
+%D Just like with subsentence boundary symbols, quotes
+%D placement depends on the current language, therefore we show
+%D the defaults here.
+%D
+%D \def\ShowLanguageValues [#1] [#2] #3 #4
+%D {\blank
+%D \startlinecorrection
+%D \vbox\bgroup
+%D \language[#1]%
+%D \setbox0=\hbox to \hsize{\hss\bf#2 subsentence symbol and quotes\hss}
+%D \dp0=0pt
+%D \box0
+%D \vskip.5em
+%D \hrule
+%D \vskip.5em
+%D \let\normalbar=|
+%D \hbox to \hsize
+%D {\hfil\quotation{#3 #4}\hfil\quote{#2}\hfil
+%D \let|=\normalbar\strut|<||<|#3|>|#4|>|\hfil}
+%D \vskip.5em
+%D \hrule
+%D \egroup
+%D \stoplinecorrection
+%D \blank}
+%D
+%D \ShowLanguageValues [af] [afrikaans] afrikaanse ...
+%D \ShowLanguageValues [ca] [catalan] catalan ...
+%D \ShowLanguageValues [cz] [czech] tjechisch tex
+%D \ShowLanguageValues [cz] [slovak] slowaakse ...
+%D \ShowLanguageValues [da] [danish] deense ...
+%D \ShowLanguageValues [de] [german] duitse degelijkheid
+%D \ShowLanguageValues [en] [english] engelse humor
+%D \ShowLanguageValues [fi] [finnish] finse ...
+%D \ShowLanguageValues [fr] [french] franse slag
+%D \ShowLanguageValues [it] [italian] italiaanse ...
+%D \ShowLanguageValues [la] [latin] latijnse missen
+%D \ShowLanguageValues [nl] [dutch] nederlandse zuinigheid
+%D \ShowLanguageValues [no] [norwegian] noorse ...
+%D \ShowLanguageValues [pl] [polish] poolse ...
+%D \ShowLanguageValues [pt] [portuguese] portugese ...
+%D \ShowLanguageValues [es] [spanish] spaans benauwd
+%D \ShowLanguageValues [sv] [swedish] zweedse ...
+%D \ShowLanguageValues [tr] [turkish] turks fruit
+
+%D We support a lot of languages. These are specified and
+%D loaded in separate files, according to their roots. Here
+%D we only take care of (postponed) setting of the current
+%D language.
+%D
+%D \unprotect
+%D \placetable{The germanic languages (\type{lang-ger})}
+%D \starttable[||||]
+%D \HL
+%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
+%D \HL
+%D \NC \s!nl \NC dutch \NC germanic \NC\FR
+%D \NC \s!en \NC english \NC germanic \NC\MR
+%D \NC \s!de \NC german \NC germanic \NC\MR
+%D \NC \s!da \NC danish \NC germanic \NC\MR
+%D \NC \s!sv \NC swedish \NC germanic \NC\MR
+%D \NC \s!af \NC afrikaans \NC germanic \NC\MR
+%D \NC \s!no \NC norwegian \NC germanic \NC\LR
+%D \HL
+%D \stoptable
+%D \protect
+%D
+%D \unprotect
+%D \placetable{The italic languages (\type{lang-ita})}
+%D \starttable[||||]
+%D \HL
+%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
+%D \HL
+%D \NC \s!fr \NC french \NC italic \NC\FR
+%D \NC \s!ca \NC catalan \NC italic \NC\MR
+%D \NC \s!es \NC spanish \NC italic \NC\MR
+%D \NC \s!it \NC italian \NC italic \NC\MR
+%D \NC \s!la \NC latin \NC italic \NC\MR
+%D \NC \s!pt \NC portuguese \NC italic \NC\LR
+%D \HL
+%D \stoptable
+%D \protect
+%D
+%D \unprotect
+%D \placetable{The slavic languages (\type{lang-sla})}
+%D \starttable[||||]
+%D \HL
+%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
+%D \HL
+%D \NC \s!pl \NC polish \NC slavic \NC\FR
+%D \NC \s!cz \NC czech \NC slavic \NC\MR
+%D \NC \s!sk \NC slavik \NC slavic \NC\LR
+%D \HL
+%D \stoptable
+%D \protect
+%D \unprotect
+%D
+%D \placetable{The altaic languages (\type{lang-alt})}
+%D \starttable[||||]
+%D \HL
+%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
+%D \HL
+%D \NC \s!tr \NC turkish \NC altaic \NC\SR
+%D \HL
+%D \stoptable
+%D
+%D \placetable{The uralic languages (\type{lang-ura})}
+%D \starttable[||||]
+%D \HL
+%D \NC \bf mnemonic \NC \bf language \NC \bf group \NC\SR
+%D \HL
+%D \NC \s!fi \NC finnish \NC uralic \NC\SR
+%D \HL
+%D \stoptable
+%D \protect
+
+% \bgroup \normallanguage255 \patterns{} \egroup
+% \def\nopatterns{\normallanguage255 }
+
+\def\nopatterns{\normallanguage\minusone}
+
+%D We default to the language belonging to the interface. This
+%D is one of the few places outside the interface modules where
+%D \type{\startinterface} is used.
+
+\let\normaldoublequote ="
+\let\normalforwardslash=/
+
+%D We default to english:
+
+\setupcurrentlanguage[\s!en]
+
+\appendtoks\mainlanguage[\currentlanguage]\to\everyjob
+
+\appendtoks\showmessage\m!linguals9\currentlanguage\to\everyjob
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ita.tex b/Master/texmf-dist/tex/context/base/lang-ita.tex
new file mode 100644
index 00000000000..f2640379ab3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ita.tex
@@ -0,0 +1,520 @@
+%D \module
+%D [ file=lang-ita,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Italic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Todo: replace \'.. by \namedglyph
+
+\writestatus{loading}{Italic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Italian \NC Giuseppe Bilotta \NC \NR
+%D \NC Rumanian \NC Dan Seracu \NC \NR
+%D \NC Portuguese \NC Pedro F. M. Mendon\c a \NC \NR
+%D \stoptabulate
+
+% Latin, Italian, Rhaeto-Romanic, Rumanian, Sardian
+% Catalan, French, Ladino, Portuguese, Proven\c{c}al, Spanish
+
+\unprotect
+
+\ifx\guillemotspace\undefined \let\guillemotspace\empty \fi
+\ifx\sentencespace \undefined \let\sentencespace \empty \fi
+
+\installlanguage
+ [\s!fr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=\emdash,
+ \c!rightsentence=\emdash,
+ \c!leftsubsentence=\emdash,
+ \c!rightsubsentence=\emdash,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\leftguillemot,
+ \c!rightquotation=\rightguillemot,
+ \c!date={\v!day+,\v!space,\v!month,\v!space,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!es]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage [sp] [\s!es] % old times context
+
+\installlanguage
+ [\s!ca]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+% Note GB left|/|right (sub)sentences are for \quote {incisi}.
+
+\installlanguage
+ [\s!it]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=--,
+ \c!rightsubsentence=--,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!leftspeech=\leftguillemot,
+ \c!middlespeech=\leftguillemot,
+ \c!rightspeech=\rightguillemot,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage % the same as italian
+ [\s!la]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\lowerrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\lowerrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!pt]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!ro]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\leftguillemot,
+ \c!rightquote=\rightguillemot,
+ \c!leftquotation=\lowerrightdoubleninequote,
+ \c!rightquotation=\upperleftdoublesixquote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+%D For compatibility reasons we also define:
+
+\installlanguage [fa] [\s!fr] % for dutchies only
+
+\installlanguage [french] [\s!fr]
+\installlanguage [spanish] [\s!es]
+\installlanguage [catalan] [\s!ca]
+\installlanguage [italian] [\s!it]
+\installlanguage [latin] [\s!la]
+\installlanguage [portuguese] [\s!pt]
+\installlanguage [romanian] [\s!ro]
+
+%D Labels and header texts.
+
+\setupheadtext [\s!fr] [\v!content=Table des mati\`eres]
+\setupheadtext [\s!es] [\v!content=\'Indice]
+\setupheadtext [\s!ca] [\v!content=\'Index de continguts]
+\setupheadtext [\s!it] [\v!content=Indice]
+\setupheadtext [\s!la] [\v!content=Quod in libro continetur] %Argumentum
+\setupheadtext [\s!pt] [\v!content=Conte\'udo]
+\setupheadtext [\s!ro] [\v!content=Cuprins]
+
+\setupheadtext [\s!fr] [\v!tables=Tables]
+\setupheadtext [\s!es] [\v!tables=Tablas]
+\setupheadtext [\s!ca] [\v!tables=Taules]
+\setupheadtext [\s!it] [\v!tables=Tabelle]
+\setupheadtext [\s!la] [\v!tables=Tabulae]
+\setupheadtext [\s!pt] [\v!tables=Tabelas]
+\setupheadtext [\s!ro] [\v!tables=Tabele]
+
+\setupheadtext [\s!fr] [\v!figures=Figures]
+\setupheadtext [\s!es] [\v!figures=Ilustraciones]
+\setupheadtext [\s!ca] [\v!figures=Figures]
+\setupheadtext [\s!it] [\v!figures=Figure]
+\setupheadtext [\s!la] [\v!figures=Imagines]
+\setupheadtext [\s!pt] [\v!figures=Figuras]
+\setupheadtext [\s!ro] [\v!figures=Figuri]
+
+\setupheadtext [\s!fr] [\v!graphics=Graphiques]
+\setupheadtext [\s!es] [\v!graphics=Gr\'aficos]
+\setupheadtext [\s!it] [\v!graphics=Grafici]
+\setupheadtext [\s!ca] [\v!graphics=Gr\`afiques]
+\setupheadtext [\s!la] [\v!graphics=Typi]
+\setupheadtext [\s!pt] [\v!graphics=Gr\'aficos]
+\setupheadtext [\s!ro] [\v!graphics=Grafice]
+
+\setupheadtext [\s!fr] [\v!intermezzi=Interm\`edes]
+\setupheadtext [\s!es] [\v!intermezzi=intermedios]
+\setupheadtext [\s!ca] [\v!intermezzi=intermedis]
+\setupheadtext [\s!it] [\v!intermezzi=Intermezzi]
+\setupheadtext [\s!la] [\v!intermezzi=Intermissa]
+\setupheadtext [\s!pt] [\v!intermezzi=Interm\'edios]
+\setupheadtext [\s!ro] [\v!intermezzi=Intermzzo]
+
+\setupheadtext [\s!fr] [\v!index=Index]
+\setupheadtext [\s!es] [\v!index=\'Indice alfab\'etico]
+\setupheadtext [\s!ca] [\v!index=\'Index alfab\`etic]
+\setupheadtext [\s!it] [\v!index=Indice]
+\setupheadtext [\s!la] [\v!index=Indices]
+\setupheadtext [\s!pt] [\v!index=\'Indice]
+\setupheadtext [\s!ro] [\v!index=Index]
+
+\setupheadtext [\s!fr] [\v!abbreviations=Abr\'eviations]
+\setupheadtext [\s!es] [\v!abbreviations=Abreviaciones]
+\setupheadtext [\s!ca] [\v!abbreviations=Abreviacions]
+\setupheadtext [\s!it] [\v!abbreviations=Abbreviazioni]
+\setupheadtext [\s!la] [\v!abbreviations=Notae]
+\setupheadtext [\s!pt] [\v!abbreviations=Abreviaturas]
+\setupheadtext [\s!ro] [\v!abbreviations=Abrevieri]
+
+\setupheadtext [\s!fr] [\v!logos=Logos]
+\setupheadtext [\s!es] [\v!logos=Logotipos]
+\setupheadtext [\s!ca] [\v!logos=Logotips]
+\setupheadtext [\s!it] [\v!logos=Logotipi]
+\setupheadtext [\s!la] [\v!logos=Typi negotiales]
+\setupheadtext [\s!pt] [\v!logos=Logotipos]
+\setupheadtext [\s!ro] [\v!logos=Logo-uri]
+
+\setupheadtext [\s!fr] [\v!units=Unit\'es]
+\setupheadtext [\s!es] [\v!units=Unidades]
+\setupheadtext [\s!ca] [\v!units=Unitats]
+\setupheadtext [\s!it] [\v!units=Unit\`a]
+\setupheadtext [\s!la] [\v!units=Modi]
+\setupheadtext [\s!pt] [\v!units=Unidades]
+\setupheadtext [\s!ro] [\v!units=Unit\u{a}\c{t}i]
+
+\setuplabeltext [\s!fr] [\v!table=Table ]
+\setuplabeltext [\s!es] [\v!table=Tablas ]
+\setuplabeltext [\s!ca] [\v!table=Taules ]
+\setuplabeltext [\s!it] [\v!table=Tabella ]
+\setuplabeltext [\s!la] [\v!table=Tabula ]
+\setuplabeltext [\s!pt] [\v!table=Tabela ]
+\setuplabeltext [\s!ro] [\v!table=Tabelul ]
+
+\setuplabeltext [\s!fr] [\v!figure=Figure ]
+\setuplabeltext [\s!es] [\v!figure=Ilustraci\'on ]
+\setuplabeltext [\s!ca] [\v!figure=Figura ]
+\setuplabeltext [\s!it] [\v!figure=Fig. ]
+\setuplabeltext [\s!la] [\v!figure=Imago ]
+\setuplabeltext [\s!pt] [\v!figure=Figura ]
+\setuplabeltext [\s!ro] [\v!figure=Figura ]
+
+\setuplabeltext [\s!fr] [\v!intermezzo=Interm\`ede ]
+\setuplabeltext [\s!es] [\v!intermezzo=intermedio ]
+\setuplabeltext [\s!ca] [\v!intermezzo=Intermedi ]
+\setuplabeltext [\s!it] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!la] [\v!intermezzo=Intermissum ]
+\setuplabeltext [\s!pt] [\v!intermezzo=Interm\'edio ]
+\setuplabeltext [\s!ro] [\v!intermezzo=Intermezzo ]
+
+\setuplabeltext [\s!fr] [\v!graphic=Illustration ]
+\setuplabeltext [\s!es] [\v!graphic=Gr\'afico ]
+\setuplabeltext [\s!ca] [\v!graphic=Gr\`afica ]
+\setuplabeltext [\s!it] [\v!graphic=Grafico ]
+\setuplabeltext [\s!la] [\v!graphic=Typus ]
+\setuplabeltext [\s!pt] [\v!graphic=Gr\'afico ]
+\setuplabeltext [\s!ro] [\v!graphic=Graficul ]
+
+\setuplabeltext [\s!fr] [\v!chapter=]
+\setuplabeltext [\s!es] [\v!chapter=]
+\setuplabeltext [\s!ca] [\v!chapter=]
+\setuplabeltext [\s!it] [\v!chapter=]
+\setuplabeltext [\s!la] [\v!chapter=]
+\setuplabeltext [\s!pt] [\v!chapter=]
+\setuplabeltext [\s!ro] [\v!chapter=]
+
+\setuplabeltext [\s!fr] [\v!section=]
+\setuplabeltext [\s!es] [\v!section=]
+\setuplabeltext [\s!ca] [\v!section=]
+\setuplabeltext [\s!it] [\v!section=]
+\setuplabeltext [\s!la] [\v!section=]
+\setuplabeltext [\s!pt] [\v!section=]
+\setuplabeltext [\s!ro] [\v!section=]
+
+\setuplabeltext [\s!fr] [\v!subsection=]
+\setuplabeltext [\s!es] [\v!subsection=]
+\setuplabeltext [\s!ca] [\v!subsection=]
+\setuplabeltext [\s!it] [\v!subsection=]
+\setuplabeltext [\s!la] [\v!subsection=]
+\setuplabeltext [\s!pt] [\v!subsection=]
+\setuplabeltext [\s!ro] [\v!subsection=]
+
+\setuplabeltext [\s!fr] [\v!subsubsection=]
+\setuplabeltext [\s!es] [\v!subsubsection=]
+\setuplabeltext [\s!ca] [\v!subsubsection=]
+\setuplabeltext [\s!it] [\v!subsubsection=]
+\setuplabeltext [\s!la] [\v!subsubsection=]
+\setuplabeltext [\s!pt] [\v!subsubsection=]
+\setuplabeltext [\s!ro] [\v!subsubsection=]
+
+\setuplabeltext [\s!fr] [\v!subsubsubsection=]
+\setuplabeltext [\s!es] [\v!subsubsubsection=]
+\setuplabeltext [\s!ca] [\v!subsubsubsection=]
+\setuplabeltext [\s!it] [\v!subsubsubsection=]
+\setuplabeltext [\s!la] [\v!subsubsubsection=]
+\setuplabeltext [\s!pt] [\v!subsubsubsection=]
+\setuplabeltext [\s!ro] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!fr] [\v!appendix=]
+\setuplabeltext [\s!es] [\v!appendix=]
+\setuplabeltext [\s!ca] [\v!appendix=]
+\setuplabeltext [\s!it] [\v!appendix=]
+\setuplabeltext [\s!la] [\v!appendix=]
+\setuplabeltext [\s!pt] [\v!appendix=]
+\setuplabeltext [\s!ro] [\v!appendix=]
+
+\setuplabeltext [\s!fr] [\v!part=Partie ]
+\setuplabeltext [\s!es] [\v!part=Parte ]
+\setuplabeltext [\s!ca] [\v!part=Part ]
+\setuplabeltext [\s!it] [\v!part=Parte ]
+\setuplabeltext [\s!la] [\v!part=Pars ]
+\setuplabeltext [\s!pt] [\v!part=Parte ]
+\setuplabeltext [\s!ro] [\v!part=Partea ]
+
+\setuplabeltext [\s!fr] [\v!line=ligne ]
+\setuplabeltext [\s!es] [\v!line=l\'\i nea ]
+\setuplabeltext [\s!ca] [\v!line=l\'\i nia ]
+\setuplabeltext [\s!it] [\v!line=riga ]
+\setuplabeltext [\s!la] [\v!line=versus ]
+\setuplabeltext [\s!pt] [\v!line=linha ]
+\setuplabeltext [\s!ro] [\v!line=linia ]
+
+\setuplabeltext [\s!fr] [\v!lines=lignes ]
+\setuplabeltext [\s!es] [\v!lines=l\'\i neas ]
+\setuplabeltext [\s!ca] [\v!lines=l\'\i nies ]
+\setuplabeltext [\s!it] [\v!lines=righe ]
+\setuplabeltext [\s!la] [\v!lines=versus ]
+\setuplabeltext [\s!pt] [\v!lines=linhas ]
+\setuplabeltext [\s!ro] [\v!lines=liniile ]
+
+\setuplabeltext [\s!fr] [\v!january=janvier]
+\setuplabeltext [\s!fr] [\v!february=f\'evrier]
+\setuplabeltext [\s!fr] [\v!march=mars]
+\setuplabeltext [\s!fr] [\v!april=avril]
+\setuplabeltext [\s!fr] [\v!may=mai]
+\setuplabeltext [\s!fr] [\v!june=juin]
+\setuplabeltext [\s!fr] [\v!july=juillet]
+\setuplabeltext [\s!fr] [\v!august=ao\^ut]
+\setuplabeltext [\s!fr] [\v!september=septembre]
+\setuplabeltext [\s!fr] [\v!october=octobre]
+\setuplabeltext [\s!fr] [\v!november=novembre]
+\setuplabeltext [\s!fr] [\v!december=d\'ecembre]
+
+\setuplabeltext [\s!es] [\v!january=enero]
+\setuplabeltext [\s!es] [\v!february=febrero]
+\setuplabeltext [\s!es] [\v!march=marzo]
+\setuplabeltext [\s!es] [\v!april=abril]
+\setuplabeltext [\s!es] [\v!may=mayo]
+\setuplabeltext [\s!es] [\v!june=junio]
+\setuplabeltext [\s!es] [\v!july=julio]
+\setuplabeltext [\s!es] [\v!august=agosto]
+\setuplabeltext [\s!es] [\v!september=septiembre]
+\setuplabeltext [\s!es] [\v!october=octubre]
+\setuplabeltext [\s!es] [\v!november=noviembre]
+\setuplabeltext [\s!es] [\v!december=diciembre]
+
+\setuplabeltext [\s!ca] [\v!january=gener]
+\setuplabeltext [\s!ca] [\v!february=febrer]
+\setuplabeltext [\s!ca] [\v!march=mar\c{c}]
+\setuplabeltext [\s!ca] [\v!april=abril]
+\setuplabeltext [\s!ca] [\v!may=maig]
+\setuplabeltext [\s!ca] [\v!june=juny]
+\setuplabeltext [\s!ca] [\v!july=juliol]
+\setuplabeltext [\s!ca] [\v!august=agost]
+\setuplabeltext [\s!ca] [\v!september=setembre]
+\setuplabeltext [\s!ca] [\v!october=octubre]
+\setuplabeltext [\s!ca] [\v!november=novembre]
+\setuplabeltext [\s!ca] [\v!december=desembre]
+
+\setuplabeltext [\s!it] [\v!january=gennaio]
+\setuplabeltext [\s!it] [\v!february=febbraio]
+\setuplabeltext [\s!it] [\v!march=marzo]
+\setuplabeltext [\s!it] [\v!april=aprile]
+\setuplabeltext [\s!it] [\v!may=maggio]
+\setuplabeltext [\s!it] [\v!june=giugno]
+\setuplabeltext [\s!it] [\v!july=luglio]
+\setuplabeltext [\s!it] [\v!august=agosto]
+\setuplabeltext [\s!it] [\v!september=settembre]
+\setuplabeltext [\s!it] [\v!october=ottobre]
+\setuplabeltext [\s!it] [\v!november=novembre]
+\setuplabeltext [\s!it] [\v!december=dicembre]
+
+\setuplabeltext [\s!la] [\v!january=Ianuarius]
+\setuplabeltext [\s!la] [\v!february=Februarius]
+\setuplabeltext [\s!la] [\v!march=Martius]
+\setuplabeltext [\s!la] [\v!april=Aprilis]
+\setuplabeltext [\s!la] [\v!may=Maius]
+\setuplabeltext [\s!la] [\v!june=Iunius]
+\setuplabeltext [\s!la] [\v!july=Iulius] % formerly Quintilis
+\setuplabeltext [\s!la] [\v!august=Augustus] % formerly Sextilis
+\setuplabeltext [\s!la] [\v!september=September]
+\setuplabeltext [\s!la] [\v!october=October]
+\setuplabeltext [\s!la] [\v!november=November]
+\setuplabeltext [\s!la] [\v!december=December]
+
+\setuplabeltext [\s!pt] [\v!january=janeiro]
+\setuplabeltext [\s!pt] [\v!february=fevereiro]
+\setuplabeltext [\s!pt] [\v!march=mar\c{c}o]
+\setuplabeltext [\s!pt] [\v!april=abril]
+\setuplabeltext [\s!pt] [\v!may=maio]
+\setuplabeltext [\s!pt] [\v!june=junho]
+\setuplabeltext [\s!pt] [\v!july=julho]
+\setuplabeltext [\s!pt] [\v!august=agosto]
+\setuplabeltext [\s!pt] [\v!september=setembro]
+\setuplabeltext [\s!pt] [\v!october=outubro]
+\setuplabeltext [\s!pt] [\v!november=novembro]
+\setuplabeltext [\s!pt] [\v!december=dezembro]
+
+\setuplabeltext [\s!ro] [\v!january=ianuarie]
+\setuplabeltext [\s!ro] [\v!february=februarie]
+\setuplabeltext [\s!ro] [\v!march=martie]
+\setuplabeltext [\s!ro] [\v!april=aprilie]
+\setuplabeltext [\s!ro] [\v!may=mai]
+\setuplabeltext [\s!ro] [\v!june=iunie]
+\setuplabeltext [\s!ro] [\v!july=iulie]
+\setuplabeltext [\s!ro] [\v!august=august]
+\setuplabeltext [\s!ro] [\v!september=septembrie]
+\setuplabeltext [\s!ro] [\v!october=octombrie]
+\setuplabeltext [\s!ro] [\v!november=noiembrie]
+\setuplabeltext [\s!ro] [\v!december=decembrie]
+
+\setuplabeltext [\s!fr] [\v!sunday=dimanche]
+\setuplabeltext [\s!fr] [\v!monday=lundi]
+\setuplabeltext [\s!fr] [\v!tuesday=mardi]
+\setuplabeltext [\s!fr] [\v!wednesday=mercredi]
+\setuplabeltext [\s!fr] [\v!thursday=jeudi]
+\setuplabeltext [\s!fr] [\v!friday=vendredi]
+\setuplabeltext [\s!fr] [\v!saturday=samedi]
+
+\setuplabeltext [\s!es] [\v!sunday=domingo]
+\setuplabeltext [\s!es] [\v!monday=lunes]
+\setuplabeltext [\s!es] [\v!tuesday=martes]
+\setuplabeltext [\s!es] [\v!wednesday=mi\'ercoles]
+\setuplabeltext [\s!es] [\v!thursday=jueves]
+\setuplabeltext [\s!es] [\v!friday=viernes]
+\setuplabeltext [\s!es] [\v!saturday=s\'abado]
+
+\setuplabeltext [\s!ca] [\v!sunday=diumenge]
+\setuplabeltext [\s!ca] [\v!monday=dilluns]
+\setuplabeltext [\s!ca] [\v!tuesday=dimarts]
+\setuplabeltext [\s!ca] [\v!wednesday=dimecres]
+\setuplabeltext [\s!ca] [\v!thursday=dijous]
+\setuplabeltext [\s!ca] [\v!friday=divendres]
+\setuplabeltext [\s!ca] [\v!saturday=dissabte]
+
+\setuplabeltext [\s!it] [\v!sunday=domenica]
+\setuplabeltext [\s!it] [\v!monday=luned\`\i]
+\setuplabeltext [\s!it] [\v!tuesday=marted\`\i]
+\setuplabeltext [\s!it] [\v!wednesday=mercoled\`\i]
+\setuplabeltext [\s!it] [\v!thursday=gioved\`\i]
+\setuplabeltext [\s!it] [\v!friday=venerd\`\i]
+\setuplabeltext [\s!it] [\v!saturday=sabato]
+
+\setuplabeltext [\s!la] [\v!sunday=Dies Solis]
+\setuplabeltext [\s!la] [\v!monday=Dies Lunae]
+\setuplabeltext [\s!la] [\v!tuesday=Dies Martis]
+\setuplabeltext [\s!la] [\v!wednesday=Dies Mercuri]
+\setuplabeltext [\s!la] [\v!thursday=Dies Iovis]
+\setuplabeltext [\s!la] [\v!friday=Dies Veneris]
+\setuplabeltext [\s!la] [\v!saturday=Dies Saturni]
+
+\setuplabeltext [\s!pt] [\v!sunday=domingo]
+\setuplabeltext [\s!pt] [\v!monday=segunda-feira]
+\setuplabeltext [\s!pt] [\v!tuesday=ter\c{c}a-feira]
+\setuplabeltext [\s!pt] [\v!wednesday=quarta-feira]
+\setuplabeltext [\s!pt] [\v!thursday=quinta-feira]
+\setuplabeltext [\s!pt] [\v!friday=sexta-feira]
+\setuplabeltext [\s!pt] [\v!saturday=s\'abado]
+
+\setuplabeltext [\s!ro] [\v!sunday=duminic\u{a}]
+\setuplabeltext [\s!ro] [\v!monday=luni]
+\setuplabeltext [\s!ro] [\v!tuesday=mar\c{t}i]
+\setuplabeltext [\s!ro] [\v!wednesday=miercuri]
+\setuplabeltext [\s!ro] [\v!thursday=joi]
+\setuplabeltext [\s!ro] [\v!friday=vineri]
+\setuplabeltext [\s!ro] [\v!saturday=s\^{a}mb\u{a}t\u{a}]
+
+% \startlanguagespecifics[\s!ro]
+%
+% \installcompoundcharacter "a {\u{a}}
+% \installcompoundcharacter "i {\^{\i}}
+% \installcompoundcharacter "s {\c{s}}
+% \installcompoundcharacter "t {\c{t}}
+% \installcompoundcharacter "A {\^{a}}
+% \installcompoundcharacter "I {\^{I}}
+% \installcompoundcharacter "S {\c{S}}
+% \installcompoundcharacter "T {\c{T}}
+% \installcompoundcharacter "` {\handlequotation\c!leftquotation}
+% \installcompoundcharacter "' {\handlequotation\c!rightquotation}
+%
+% \stoplanguagespecifics
+
+%D Rather new \unknown
+
+\setuplabeltext [\s!it] [\v!page=pagina ]
+\setuplabeltext [\s!it] [\v!atpage=a pagina ]
+\setuplabeltext [\s!it] [\v!hencefore=come mostrato sopra]
+\setuplabeltext [\s!it] [\v!hereafter=come mostrato sotto]
+\setuplabeltext [\s!it] [\v!see=cf. ]
+
+%D Ordinal converters:
+
+\def\frordinaldaynumber#1% date is masculine
+ {\number#1\ifcase#1\or
+ \highordinalstr{er}%
+ \fi}
+
+\defineconversion [\s!fr] [\v!day+] [\frordinaldaynumber]
+
+%D \ShowAllLanguageValues [\s!fr] [french] {French} {kiss} % franse slag
+%D \ShowAllLanguageValues [\s!es] [spanish] {Spanish} {guitar} % spaans benauwd
+%D \ShowAllLanguageValues [\s!ca] [catalan] {Catalan} {cream}
+%D \ShowAllLanguageValues [\s!it] [italian] {Italian} {aria}
+%D \ShowAllLanguageValues [\s!la] [latin] {Latin} {lover} % latijnse missen
+%D \ShowAllLanguageValues [\s!pt] [portuguese] {Portuguese} {fisherman}
+%D \ShowAllLanguageValues [\s!ro] [romanian] {Romanian} {traveller}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-lab.tex b/Master/texmf-dist/tex/context/base/lang-lab.tex
new file mode 100644
index 00000000000..350ae2dfcef
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-lab.tex
@@ -0,0 +1,277 @@
+%D \module
+%D [ file=lang-lab,
+%D version=1997.08.27,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Language Head and Label Texts,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Language Head and Label Texts}
+
+\unprotect
+
+%D In this module we deal with language dependant labels and
+%D prefixes, like in {\em Figure~12} and {\em Chapter 1}. In
+%D this file we set the default values. Users can easily
+%D overrule these.
+%D
+%D This module is dedicated to the grandfather of Tobias
+%D Burnus, who's extensive languages oriented library helped us
+%D a lot in finding the right translations. All those labels
+%D are collected in files that reflect their common ancestor.
+%D
+%D Not all languages can be satisfied with the labeling
+%D mechanism as provided here. Chinese for instance put a label
+%D in front as well as after a part number. This is why the
+%D current implementation of labels supports two labels too.
+
+%D \macros
+%D {setupheadtext, setuplabeltext}
+%D
+%D First we present some macros that deal with what we will
+%D call head and label texts. Such texts are defines by:
+%D
+%D \showsetup{setupheadtext}
+%D \showsetup{setuplabeltext}
+%D
+%D In a few paragraphs we'll show quite a lot of examples
+%D of its use.
+
+\let\handletextprefix\relax
+
+\def\setupheadtext {\dosetupsometextprefix[\c!title]}
+\def\setuplabeltext{\dosetupsometextprefix[\c!label]}
+
+\def\dosetupsometextprefix
+ {\let\dodocommando\xdosetupsometextprefix
+ \dotripleempty\dodosetupsometextprefix}
+
+\def\dodosetupsometextprefix[#1][#2][#3]%
+ {\ifthirdargument
+ \def\docommando##1{\dodocommando[#1#2][##1]}%
+ \processcommalist[#3]\docommando
+ \else
+ \def\docommando##1{\dodocommando[#1\currentmainlanguage][##1]}%
+ \processcommalist[#2]\docommando
+ \fi}
+
+\def\doassignsometextprefix[#1][#2,#3,#4]%
+ {\setvalue{#1}{\handletextprefix{#2}{#3}}}
+
+\def\xdosetupsometextprefix[#1][#2=#3]%
+ {\doassignsometextprefix[#1#2][#3,,]}
+
+%D By changing the meaning of \type {\handletextprefix} we
+%D can filter the left and right labeltext as well as convert
+%D labels to uppercase.
+%D
+%D These commands accept all kind of inputs:
+%D
+%D \starttyping
+%D \setuplabeltext [language] [labellabel=text]
+%D \setuplabeltext [language] [labellabel=text,labellabel=text,...]
+%D \setuplabeltext [labellabel=text]
+%D \setuplabeltext [labellabel=text,labellabel=text,...]
+%D \stoptyping
+%D
+%D The last two cases concern the current language.
+
+%D \macros
+%D {headtext,
+%D labeltext, leftlabeltext, rightlabeltext, labeltexts,
+%D LABELTEXT, LEFTLABELTEXT, RIGHTLABELTEXT, LABELTEXTS}
+%D
+%D Once defined, head and label texts can be called upon using:
+%D
+%D \showsetup{headtext}
+%D \showsetup{labeltext}
+%D
+%D The latter one has an upcased alternative \type{\LABELTEXT}.
+
+% \def\labellanguage{\currentmainlanguage}
+% \def\headlanguage {\currentmainlanguage}
+
+\def\labellanguage{\defaultlanguage\currentmainlanguage}
+\def\headlanguage {\defaultlanguage\currentmainlanguage}
+
+\unexpanded\def\headtext
+ {\let\handletextprefix\firstoftwoarguments
+ \let\reporttextprefixerror\doreporttextprefixerror
+ \global\labeltextdonetrue
+ \dogetupsometextprefix\headlanguage\c!title}
+
+\unexpanded\def\leftlabeltext
+ {\let\handletextprefix\firstoftwoarguments
+ \let\reporttextprefixerror\doreporttextprefixerror
+ \global\labeltextdonetrue
+ \dogetupsometextprefix\labellanguage\c!label}
+
+\unexpanded\def\rightlabeltext
+ {\let\handletextprefix\secondoftwoarguments
+ \let\reporttextprefixerror\doreporttextprefixerror
+ \global\labeltextdonetrue
+ \dogetupsometextprefix\labellanguage\c!label}
+
+\unexpanded\def\LEFTLABELTEXT
+ {\def\handletextprefix##1##2{\uppercase{##1}}\DOLABELTEXT}
+
+\unexpanded\def\RIGHTLABELTEXT
+ {\def\handletextprefix##1##2{\uppercase{##2}}\DOLABELTEXT}
+
+\def\DOLABELTEXT#1%
+ {\bgroup
+ \the\everyuppercase
+ \let\reporttextprefixerror\doreporttextprefixerror
+ \global\labeltextdonetrue
+ \dogetupsometextprefix\labellanguage\c!label{#1}% not \labeltext (see \MONTH)
+ \egroup}
+
+\let\labeltext \leftlabeltext
+\let\LABELTEXT \LEFTLABELTEXT
+
+\unexpanded\def\labeltexts#1#2{\leftlabeltext{#1}#2\rightlabeltext{#1}}
+\unexpanded\def\LABELTEXTS#1#2{\LEFTLABELTEXT{#1}#2\RIGHTLABELTEXT{#1}}
+
+\newif\iflabeltextdone % needs to be reset elsewhere
+\newif\iftracelabels % shows missing labels
+
+\def\doreporttextprefixerror#1#2#3%
+ {\iftracelabels{\tttf[#2:~#3/#1]~}\fi}
+
+\def\dosetexpandedheadlabeltext#1#2#3%
+ {\bgroup
+ \let\handletextprefix\firstoftwoarguments
+ \let\reporttextprefixerror\gobblethreearguments
+ \keepencodedtokens % test on multilingual pascal, ok in stretched
+ %\dontexpandencodedtokens % not usable in token handler
+ \expanded
+ {\egroup\noexpand\def\noexpand#2% watch out, no \edef
+ {\dogetupsometextprefix{\headlanguage}{#1}{#3}}}}
+
+\def\setexpandedheadtext {\dosetexpandedheadlabeltext\c!title}
+\def\setexpandedlabeltext{\dosetexpandedheadlabeltext\c!label}
+
+\beginETEX \ifcsname
+
+\def\dogetupsometextprefix#1#2#3%
+ {\ifcsname#2#1#3\endcsname
+ \csname#2#1#3\endcsname \else
+ \ifcsname#2#3\endcsname
+ \csname#2#3\endcsname \else
+ \ifcsname#2\defaultlanguage{#1}#3\endcsname
+ \csname#2\defaultlanguage{#1}#3\endcsname \else
+ \ifcsname#2\s!en#3\endcsname
+ \csname#2\s!en#3\endcsname \else
+ \ifcsname#2\s!nl#3\endcsname
+ \csname#2\s!nl#3\endcsname \else
+ \reporttextprefixerror{#1}{#2}{#3}%
+ \fi\fi\fi\fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\dogetupsometextprefix#1#2#3%
+ {\@EA\ifx\csname#2#1#3\endcsname\relax
+ \@EA\ifx\csname#2#3\endcsname\relax
+ \@EA\ifx\csname#2\defaultlanguage{#1}#3\endcsname\relax
+ \@EA\ifx\csname#2\s!en#3\endcsname\relax
+ \@EA\ifx\csname#2\s!nl#3\endcsname\relax
+ \reporttextprefixerror{#1}{#2}{#3}%
+ \else\csname#2\s!nl#3\endcsname
+ \fi\else\csname#2\s!en#3\endcsname
+ \fi\else\csname#2\defaultlanguage{#1}#3\endcsname
+ \fi\else\csname#2#3\endcsname
+ \fi\else\csname#2#1#3\endcsname
+ \fi}
+
+\endTEX
+
+\ifx\simplifiedcommands\undefined \newtoks\simplifiedcommands \fi
+
+\appendtoks
+ \let \headtext \firstofoneargument
+ \let \labeltext \firstofoneargument
+ \let \leftlabeltext \firstofoneargument
+ \let \rightlabeltext \firstofoneargument
+ \let \HEADTEXT \firstofoneargument
+ \let \LABELTEXT \firstofoneargument
+ \let \LEFTLABELTEXT \firstofoneargument
+ \let \RIGHTLABELTEXT \firstofoneargument
+\to \simplifiedcommands
+
+%D \macros
+%D {presetheadtext,presetlabeltext}
+%D
+%D The next two macros enable us to automatically define
+%D head and label texts without replacing predefined ones.
+%D These are internal macros.
+
+\def\xdopresetsometextprefix[#1][#2=#3]%
+ {\ifundefined{#1#2}\doassignsometextprefix[#1#2][#3,,]\fi}
+
+\def\dopresetsometextprefix
+ {\let\dodocommando\xdopresetsometextprefix
+ \dotripleempty\dodosetupsometextprefix}
+
+\def\presetheadtext {\dopresetsometextprefix[\c!title]}
+\def\presetlabeltext{\dopresetsometextprefix[\c!label]}
+
+%D \macros
+%D {translate}
+%D
+%D Sometismes macros contain language specific words that are to
+%D be typeset. Such macros can be made (more) language
+%D independant by using:
+%D
+%D \showsetup{translate}
+%D
+%D like for instance:
+%D
+%D \starttyping
+%D \translate[en=something,nl=iets]
+%D \stoptyping
+%D
+%D which expands to {\em something} or {\em iets}, depending on
+%D de current language.
+
+\def\dotranslate[#1]% don't group! SLOW if really used: speed up
+ {\getparameters[\??lg][#1]%
+ \doifdefinedelse{\??lg\currentlanguage}%
+ {\getvalue{\??lg\currentlanguage}}
+ {\doifdefinedelse{\??lg\s!en}
+ {\getvalue{\??lg\s!en}}
+ {\doifdefinedelse{\??lg\s!nl}
+ {\getvalue{\??lg\s!nl}}
+ {[translation #1]}}}}
+
+\unexpanded\def\translate
+ {\dosingleempty\dotranslate}
+
+%D When used without argument, the last defined values are
+%D used. This enables repetitive use like
+%D
+%D \starttyping
+%D \en \translate\ means \nl \translate
+%D \stoptyping
+
+%D \macros
+%D {assigntranslation}
+%D
+%D This macro is a system macro, and can be used to assign a
+%D translation to a macro. Its form is:
+%D
+%D \starttyping
+%D \assigntranslation[en=something,nl=iets]\to\command
+%D \stoptyping
+
+\def\assigntranslation[#1]\to#2%
+ {\getparameters[\??lg][#1]%
+ \edef#2{\csname\??lg\currentlanguage\endcsname}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-run.tex b/Master/texmf-dist/tex/context/base/lang-run.tex
new file mode 100644
index 00000000000..76e38e4c553
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-run.tex
@@ -0,0 +1,34 @@
+%D \module
+%D [ file=lang-run,
+%D version=2005.09.08,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D [This code is hooked into the core macros and saves some
+%D format space.]
+
+\unprotect
+
+\gdef\showpatterns
+ {\bgroup
+ \def\doshowpatterns##1##2##3##4% language number encoding mapping
+ {\NC##1\NC##3\NC##4\NC##2\NC
+ \xxlanguageparameter{##1}\s!lefthyphenmin\NC\xxlanguageparameter{##1}\s!righthyphenmin\NC\NR}%
+ \starttabulate[|c|c|c|c|c|c|]
+ \HL
+ \NC \bf language \NC \bf encoding \NC \bf mapping \NC \bf number \NC
+ \bf left\low{min} \NC \bf right\low{min} \NC \NR
+ \HL
+ \preloadedpmessage
+ \HL
+ \stoptabulate
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-sla.tex b/Master/texmf-dist/tex/context/base/lang-sla.tex
new file mode 100644
index 00000000000..428796e8a4d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-sla.tex
@@ -0,0 +1,555 @@
+%D \module
+%D [ file=lang-sla,
+%D version=1999.09.13, % 1997.09.03
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Slavic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Todo: replace \'.. by \namedglyph
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Czech \NC Tom Hidec, Petr Sojka \NC \NR
+%D \NC Polish \NC Grzegorz Sapijaszko \NC \NR
+%D \NC Croatian \NC \Zcaron eljko Vrba \NC \NR
+%D \NC Slovenian \NC Mojca Miklavec \NC \NR
+%D \stoptabulate
+
+% Belarussian, Russian, Ukrainian, Bulgarian, Macedonian,
+% Serbo-Croatian, Slovenian, Czech, Kushubian,
+% Lusatian/Sorbian/Wendish, Polish, Slovak, Albanian,
+% Illyrian, Armenian
+
+\writestatus{loading}{Slavic Languages}
+
+\unprotect
+
+% \unexpanded\def\textormathglue#1#2#3% submitted original
+% {\begingroup
+% \scratchdimen=#1\hspaceamount\empty{#3}%
+% \scratchskip=\zeropoint\!!plus.5\scratchdimen\!!minus.3\scratchdimen\relax
+% \ifmmode
+% \mskip#1#2%
+% \else
+% \kern#1\hspaceamount\empty{#3}%
+% \hskip\scratchskip
+% \fi
+% \endgroup}
+
+% actually we could use the new pdftex features
+
+\unexpanded\def\textormathglue#1#2#3% cleaned up one
+ {\begingroup
+ \ifmmode
+ \mskip#1#2%
+ \else
+ \scratchdimen#1\hspaceamount\empty{#3}%
+ \scratchskip\scratchdimen\!!plus.5\scratchdimen\!!minus.3\scratchdimen
+ \hskip\scratchskip
+ \fi
+ \endgroup}
+
+\def\thinglue {\textormathglue+\thinmuskip 1}
+\def\medglue {\textormathglue+\medmuskip 2}
+\def\thickglue{\textormathglue+\thickmuskip3}
+
+\installlanguage
+ [\s!pl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!cz]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=\thickglue--\thickglue\penalty-20\relax, % hh, \relax added
+ \c!rightsentence=\thickglue--\thickglue\penalty-20\relax,
+ \c!leftsubsentence=~---~\penalty-20\relax,
+ \c!rightsubsentence=~---~\penalty-20\relax,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!sk]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!hr]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!sl]
+ [\c!spacing=\v!packed,
+ \c!leftsentence={\hbox{--~}},
+ \c!rightsentence={\hbox{~--}},
+ \c!leftsubsentence={--},
+ \c!rightsubsentence={--},
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsinglesixquote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoublesixquote,
+ \c!date={\v!day,{.},\ ,\v!month,\ ,\v!year},
+ \c!state=\v!stop]
+
+\installlanguage [polish] [\s!pl]
+\installlanguage [czech] [\s!cz]
+\installlanguage [slovak] [\s!sk]
+\installlanguage [croatian] [\s!hr]
+\installlanguage [slovenian] [\s!sl]
+\installlanguage [slovene] [\s!sl] % both possible
+
+% specifics
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \installcompoundcharacter /a {\k a}
+% \installcompoundcharacter /c {\'c}
+% \installcompoundcharacter /e {\k e}
+% \installcompoundcharacter /l {\l}
+% \installcompoundcharacter /n {\'n}
+% \installcompoundcharacter /o {\'o}
+% \installcompoundcharacter /s {\'s}
+% \installcompoundcharacter /x {\'z}
+% \installcompoundcharacter /z {\.z}
+% \installcompoundcharacter /A {\k A}
+% \installcompoundcharacter /C {\'C}
+% \installcompoundcharacter /E {\k E}
+% \installcompoundcharacter /L {\L}
+% \installcompoundcharacter /N {\'N}
+% \installcompoundcharacter /O {\'O}
+% \installcompoundcharacter /S {\'S}
+% \installcompoundcharacter /X {\'Z}
+% \installcompoundcharacter /Z {\.Z}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \installcompoundcharacter /, {\handlequotation\c!leftquotation}
+% \installcompoundcharacter /' {\handlequotation\c!rightquotation}
+%
+% \def\setupPLlanguage%
+% {\setuplanguage
+% [\s!pl]
+% [\c!leftsentence=\leftguillemot,
+% \c!rightsentence=\rightguillemot,
+% \c!leftsubsentence=\leftsubguillemot,
+% \c!rightsubsentence=\rightsubguillemot]}
+%
+% \installcompoundcharacter /< {{\setupPLlanguage|<|}}
+% \installcompoundcharacter /> {{\setupPLlanguage|>|}}
+%
+% \installcompoundcharacter /- {|-|}
+%
+% \stoplanguagespecifics
+%
+% \startlanguagespecifics[\s!pl]
+%
+% \definesortkey {/a}{a}{a}{\k a}
+% \definesortkey {/A}{a}{a}{\k a}
+% \definesortkey {/c}{c}{a}{\'c}
+% \definesortkey {/C}{c}{a}{\'c}
+% \definesortkey {/e}{e}{a}{\k e}
+% \definesortkey {/E}{e}{a}{\k e}
+% \definesortkey {/l}{l}{a}{\l }
+% \definesortkey {/L}{l}{a}{\l }
+% \definesortkey {/n}{n}{a}{\'n}
+% \definesortkey {/N}{n}{a}{\'n}
+% \definesortkey {/o}{o}{a}{\'o}
+% \definesortkey {/O}{o}{a}{\'o}
+% \definesortkey {/s}{s}{a}{\'s}
+% \definesortkey {/S}{s}{a}{\'s}
+% \definesortkey {/x}{z}{a}{\'x}
+% \definesortkey {/X}{z}{a}{\'x}
+% \definesortkey {/z}{z}{b}{\.z}
+% \definesortkey {/Z}{z}{b}{\.z}
+%
+% \stoplanguagespecifics
+%
+% \startencoding[pdfdoc]
+% \startlanguagespecifics[pl]% hm
+% \defineactivecharacter / {\simplifiedcompoundcharacter/}
+% \stoplanguagespecifics
+% \stopencoding
+%
+% this can best be handled by \quotation and ||
+%
+% \startlanguagespecifics[\s!hr]
+%
+% %\installcompoundcharacter /, {\handlequotation\c!leftquotation}
+% %\installcompoundcharacter /' {\handlequotation\c!rightquotation}
+%
+% \def\setupHRlanguage%
+% {\setuplanguage
+% [\s!hr]
+% [\c!leftsentence=\leftguillemot,
+% \c!rightsentence=\rightguillemot,
+% \c!leftsubsentence=\leftsubguillemot,
+% \c!rightsubsentence=\rightsubguillemot]}
+%
+% \installcompoundcharacter /< {{\setupHRlanguage|<|}}
+% \installcompoundcharacter /> {{\setupHRlanguage|>|}}
+%
+% \installcompoundcharacter /- {|-|}
+%
+% \stoplanguagespecifics
+
+% labels
+
+\setupheadtext [\s!pl] [\v!content=Spis tre\sacute ci]
+\setupheadtext [\s!cz] [\v!content=Obsah]
+\setupheadtext [\s!sk] [\v!content=Obsah]
+\setupheadtext [\s!hr] [\v!content=Sadr\zcaron aj]
+\setupheadtext [\s!sl] [\v!content=Vsebina]
+
+\setupheadtext [\s!pl] [\v!tables=Tabele]
+\setupheadtext [\s!cz] [\v!tables=Tabulek]
+\setupheadtext [\s!sk] [\v!tables=Tabuliek]
+\setupheadtext [\s!hr] [\v!tables=Tablice]
+\setupheadtext [\s!sl] [\v!tables=Tabele]
+
+\setupheadtext [\s!pl] [\v!figures=Ilustracje]
+\setupheadtext [\s!cz] [\v!figures=Obr\aacute zk\uring]
+\setupheadtext [\s!sk] [\v!figures=Obr\aacute zkov]
+\setupheadtext [\s!hr] [\v!figures=Slike]
+\setupheadtext [\s!sl] [\v!figures=Slike]
+
+\setupheadtext [\s!pl] [\v!graphics=Grafika]
+\setupheadtext [\s!cz] [\v!graphics=Grafika] % new
+\setupheadtext [\s!sk] [\v!graphics=...]
+\setupheadtext [\s!hr] [\v!graphics=Slike]
+\setupheadtext [\s!sl] [\v!graphics=Slike]
+
+\setupheadtext [\s!pl] [\v!intermezzi=Intermezza]
+\setupheadtext [\s!cz] [\v!intermezzi=Intermezza]
+\setupheadtext [\s!sk] [\v!intermezzi=...]
+\setupheadtext [\s!hr] [\v!intermezzi=Intermezza]
+\setupheadtext [\s!sl] [\v!intermezzi=Intermezzi]
+
+\setupheadtext [\s!pl] [\v!index=Indeks]
+\setupheadtext [\s!cz] [\v!index=Rejst\rcaron\iacute k]
+\setupheadtext [\s!sk] [\v!index=Zoznam]
+\setupheadtext [\s!hr] [\v!index=Indeks]
+\setupheadtext [\s!sl] [\v!index=Kazalo]
+
+\setupheadtext [\s!pl] [\v!abbreviations=Skr\oacute cenie]
+\setupheadtext [\s!cz] [\v!abbreviations=Zkratky] % new
+\setupheadtext [\s!sk] [\v!abbreviations=...]
+\setupheadtext [\s!hr] [\v!abbreviations=Kratice]
+\setupheadtext [\s!sl] [\v!abbreviations=Kratice]
+
+\setupheadtext [\s!pl] [\v!logos=Znaki]
+\setupheadtext [\s!cz] [\v!logos=Loga] % new
+\setupheadtext [\s!sk] [\v!logos=...]
+\setupheadtext [\s!hr] [\v!logos=Znakovi]
+\setupheadtext [\s!sl] [\v!logos=Logotipi]
+
+\setupheadtext [\s!pl] [\v!units=Jednostki]
+\setupheadtext [\s!cz] [\v!units=Jednotky] % new
+\setupheadtext [\s!sk] [\v!units=...]
+\setupheadtext [\s!hr] [\v!units=Jednostki]
+\setupheadtext [\s!sl] [\v!units=Enote]
+
+\setuplabeltext [\s!pl] [\v!table=Tabela ]
+\setuplabeltext [\s!cz] [\v!table=Tabulka ]
+\setuplabeltext [\s!sk] [\v!table=Tabu\lcaron ka ]
+\setuplabeltext [\s!hr] [\v!table=T\aacute bl\aacute zat ] % [\v!table=Tablica ]
+\setuplabeltext [\s!sl] [\v!table=Tabela ]
+
+\setuplabeltext [\s!pl] [\v!figure=Ilustracja ]
+\setuplabeltext [\s!cz] [\v!figure=Obr\aacute zek ]
+\setuplabeltext [\s!sk] [\v!figure=... ]
+\setuplabeltext [\s!hr] [\v!figure=Slika ]
+\setuplabeltext [\s!sl] [\v!figure=Slika ]
+
+\setuplabeltext [\s!pl] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!cz] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!sk] [\v!intermezzo=... ]
+\setuplabeltext [\s!hr] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!sl] [\v!intermezzo=Intermezzo ]
+
+\setuplabeltext [\s!pl] [\v!graphic=Grafika ]
+\setuplabeltext [\s!cz] [\v!graphic=... ]
+\setuplabeltext [\s!sk] [\v!graphic=... ]
+\setuplabeltext [\s!hr] [\v!graphic=Slika ]
+\setuplabeltext [\s!sl] [\v!graphic=Slika ]
+
+\setuplabeltext [\s!pl] [\v!chapter=] % Rozdzia\l
+\setuplabeltext [\s!cz] [\v!chapter=] % Kapitola
+\setuplabeltext [\s!sk] [\v!chapter=] % Kapitola
+\setuplabeltext [\s!hr] [\v!chapter=] % Rozdzia\l
+\setuplabeltext [\s!sl] [\v!chapter=] % Poglavje
+
+\setuplabeltext [\s!pl] [\v!section=] % Podrozdzia\l
+\setuplabeltext [\s!cz] [\v!section=] % Sekce % new
+\setuplabeltext [\s!sk] [\v!section=]
+\setuplabeltext [\s!hr] [\v!section=] % Podrozdzia\l
+\setuplabeltext [\s!sl] [\v!section=]
+
+\setuplabeltext [\s!pl] [\v!subsection=]
+\setuplabeltext [\s!cz] [\v!subsection=] % Podsekce % new
+\setuplabeltext [\s!sk] [\v!subsection=]
+\setuplabeltext [\s!hr] [\v!subsection=]
+\setuplabeltext [\s!sl] [\v!subsection=]
+
+\setuplabeltext [\s!pl] [\v!subsubsection=]
+\setuplabeltext [\s!cz] [\v!subsubsection=] % Podpodsekce % new
+\setuplabeltext [\s!sk] [\v!subsubsection=]
+\setuplabeltext [\s!hr] [\v!subsubsection=]
+\setuplabeltext [\s!sl] [\v!subsubsection=]
+
+\setuplabeltext [\s!pl] [\v!subsubsubsection=]
+\setuplabeltext [\s!cz] [\v!subsubsubsection=] % Podpodpodsekce % new
+\setuplabeltext [\s!sk] [\v!subsubsubsection=]
+\setuplabeltext [\s!hr] [\v!subsubsubsection=]
+\setuplabeltext [\s!sl] [\v!subsubsubsection=]
+
+\setuplabeltext [\s!pl] [\v!appendix=] % Dodatek
+\setuplabeltext [\s!cz] [\v!appendix=P\rcaron\iacute loha] % new
+\setuplabeltext [\s!sk] [\v!appendix=]
+\setuplabeltext [\s!hr] [\v!appendix=Dodatak ]
+\setuplabeltext [\s!sl] [\v!appendix=Dodatek ]
+
+\setuplabeltext [\s!pl] [\v!part=Ust\eogonek p]
+\setuplabeltext [\s!cz] [\v!part=\Ccaron \aacute st]
+\setuplabeltext [\s!sk] [\v!part=\Ccaron as\tcaron{}]
+\setuplabeltext [\s!hr] [\v!part=Dio]
+\setuplabeltext [\s!sl] [\v!part=Del ]
+
+\setuplabeltext [\s!pl] [\v!line=wiersz ]
+\setuplabeltext [\s!cz] [\v!line=\rcaron\aacute dek] % new
+\setuplabeltext [\s!sk] [\v!line=... ]
+\setuplabeltext [\s!hr] [\v!line=red ]
+\setuplabeltext [\s!sl] [\v!line=vrstica ]
+
+\setuplabeltext [\s!pl] [\v!lines=wiersze ]
+\setuplabeltext [\s!cz] [\v!lines=\rcaron\aacute dky] % new
+\setuplabeltext [\s!sk] [\v!lines=... ]
+\setuplabeltext [\s!hr] [\v!lines=redovi ]
+\setuplabeltext [\s!sl] [\v!lines=vrstice ]
+
+\setuplabeltext [\s!pl] [\v!january=stycznia]
+\setuplabeltext [\s!pl] [\v!february=lutego]
+\setuplabeltext [\s!pl] [\v!march=marca]
+\setuplabeltext [\s!pl] [\v!april=kwietnia]
+\setuplabeltext [\s!pl] [\v!may=maja]
+\setuplabeltext [\s!pl] [\v!june=czerwca]
+\setuplabeltext [\s!pl] [\v!july=lipca]
+\setuplabeltext [\s!pl] [\v!august=sierpnia]
+\setuplabeltext [\s!pl] [\v!september=wrze\sacute nia]
+\setuplabeltext [\s!pl] [\v!october=pa\zacute dziernika]
+\setuplabeltext [\s!pl] [\v!november=listopada]
+\setuplabeltext [\s!pl] [\v!december=grudnia]
+
+\setuplabeltext [\s!cz] [\v!january=ledna]
+\setuplabeltext [\s!cz] [\v!february=\uacute nora]
+\setuplabeltext [\s!cz] [\v!march=b\rcaron ezna]
+\setuplabeltext [\s!cz] [\v!april=dubna]
+\setuplabeltext [\s!cz] [\v!may=kv\ecaron tna]
+\setuplabeltext [\s!cz] [\v!june=\ccaron ervna]
+\setuplabeltext [\s!cz] [\v!july=\ccaron ervence]
+\setuplabeltext [\s!cz] [\v!august=srpna]
+\setuplabeltext [\s!cz] [\v!september=z\aacute\rcaron\iacute{}]
+\setuplabeltext [\s!cz] [\v!october=\rcaron\iacute jna]
+\setuplabeltext [\s!cz] [\v!november=listopadu]
+\setuplabeltext [\s!cz] [\v!december=prosince]
+
+\setuplabeltext [\s!sk] [\v!january=janu\aacute ra]
+\setuplabeltext [\s!sk] [\v!february=febru\aacute ra]
+\setuplabeltext [\s!sk] [\v!march=marca]
+\setuplabeltext [\s!sk] [\v!april=apr\iacute la]
+\setuplabeltext [\s!sk] [\v!may=m\aacute ja]
+\setuplabeltext [\s!sk] [\v!june=j\uacute na]
+\setuplabeltext [\s!sk] [\v!july=j\uacute la]
+\setuplabeltext [\s!sk] [\v!august=augusta]
+\setuplabeltext [\s!sk] [\v!september=septembra]
+\setuplabeltext [\s!sk] [\v!october=okt\oacute bra]
+\setuplabeltext [\s!sk] [\v!november=novembra]
+\setuplabeltext [\s!sk] [\v!december=decembra]
+
+\setuplabeltext [\s!hr] [\v!january=sije\ccaron anj]
+\setuplabeltext [\s!hr] [\v!february=velja\ccaron a]
+\setuplabeltext [\s!hr] [\v!march=o\zcaron ujak]
+\setuplabeltext [\s!hr] [\v!april=travanj]
+\setuplabeltext [\s!hr] [\v!may=svibanj]
+\setuplabeltext [\s!hr] [\v!june=lipanj]
+\setuplabeltext [\s!hr] [\v!july=srpanj]
+\setuplabeltext [\s!hr] [\v!august=kolovoz]
+\setuplabeltext [\s!hr] [\v!september=rujan]
+\setuplabeltext [\s!hr] [\v!october=listopad]
+\setuplabeltext [\s!hr] [\v!november=studeni]
+\setuplabeltext [\s!hr] [\v!december=prosinac]
+
+\setuplabeltext [\s!sl] [\v!january=januar]
+\setuplabeltext [\s!sl] [\v!february=februar]
+\setuplabeltext [\s!sl] [\v!march=marec]
+\setuplabeltext [\s!sl] [\v!april=april]
+\setuplabeltext [\s!sl] [\v!may=maj]
+\setuplabeltext [\s!sl] [\v!june=junij]
+\setuplabeltext [\s!sl] [\v!july=julij]
+\setuplabeltext [\s!sl] [\v!august=avgust]
+\setuplabeltext [\s!sl] [\v!september=september]
+\setuplabeltext [\s!sl] [\v!october=oktober]
+\setuplabeltext [\s!sl] [\v!november=november]
+\setuplabeltext [\s!sl] [\v!december=december]
+
+\setuplabeltext [\s!pl] [\v!sunday=niedziela]
+\setuplabeltext [\s!pl] [\v!monday=poniedzia\lstroke ek]
+\setuplabeltext [\s!pl] [\v!tuesday=wtorek]
+\setuplabeltext [\s!pl] [\v!wednesday=\sacute roda]
+\setuplabeltext [\s!pl] [\v!thursday=czwartek]
+\setuplabeltext [\s!pl] [\v!friday=pi\aogonek tek]
+\setuplabeltext [\s!pl] [\v!saturday=sobota]
+
+% new
+\setuplabeltext [\s!cz] [\v!sunday=ned\ecaron le]
+\setuplabeltext [\s!cz] [\v!monday=pond\ecaron l\iacute]
+\setuplabeltext [\s!cz] [\v!tuesday=\uacute ter\yacute]
+\setuplabeltext [\s!cz] [\v!wednesday=st\rcaron eda]
+\setuplabeltext [\s!cz] [\v!thursday=\ccaron tvrtek]
+\setuplabeltext [\s!cz] [\v!friday=p\aacute tek]
+\setuplabeltext [\s!cz] [\v!saturday=sobota]
+
+\setuplabeltext [\s!hr] [\v!sunday=nedjelja]
+\setuplabeltext [\s!hr] [\v!monday=ponedjeljak]
+\setuplabeltext [\s!hr] [\v!tuesday=utorak]
+\setuplabeltext [\s!hr] [\v!wednesday=srijeda]
+\setuplabeltext [\s!hr] [\v!thursday=\ccaron etvrtak]
+\setuplabeltext [\s!hr] [\v!friday=petak]
+\setuplabeltext [\s!hr] [\v!saturday=subota]
+
+\setuplabeltext [\s!sl] [\v!sunday=nedelja]
+\setuplabeltext [\s!sl] [\v!monday=ponedeljek]
+\setuplabeltext [\s!sl] [\v!tuesday=torek]
+\setuplabeltext [\s!sl] [\v!wednesday=sreda]
+\setuplabeltext [\s!sl] [\v!thursday=\ccaron etrtek]
+\setuplabeltext [\s!sl] [\v!friday=petek]
+\setuplabeltext [\s!sl] [\v!saturday=sobota]
+
+%D Rather new ...
+%\installlanguage
+% [\s!cz]
+% [\c!spacing=\v!packed,
+% \c!leftsentence=---,
+% \c!rightsentence=---,
+% \c!leftsubsentence=---,
+% \c!rightsubsentence=---,
+% \c!leftquote=\lowerleftsingleninequote,
+% \c!rightquote=\upperrightsinglesixquote,
+% \c!leftquotation=\lowerleftdoubleninequote,
+% \c!rightquotation=\upperrightdoublesixquote,
+% \c!date={\v!day,\ ,\v!month,\ ,\v!year},
+% \c!state=\v!stop]
+
+
+\setuplabeltext [\s!sl] [\v!page=stran ]
+\setuplabeltext [\s!sl] [\v!atpage=na strani ]
+\setuplabeltext [\s!sl] [\v!hencefore=glej zgoraj]
+\setuplabeltext [\s!sl] [\v!hereafter=glej spodaj]
+\setuplabeltext [\s!sl] [\v!see=glej ]
+
+% new
+\setuplabeltext [\s!cz] [\v!page=strna ]
+\setuplabeltext [\s!cz] [\v!atpage=na stran\ecaron\ ]
+\setuplabeltext [\s!cz] [\v!hencefore=viz v\yacute\scaron e ]
+\setuplabeltext [\s!cz] [\v!hereafter=viz n\iacute\zcaron e ]
+\setuplabeltext [\s!cz] [\v!see=viz ]
+
+%D \ShowAllLanguageValues [\s!pl] [polish] {Polish} {furniture}
+%D \ShowAllLanguageValues [\s!cz] [czech] {Czech} {mate}
+%D \ShowAllLanguageValues [\s!sk] [slovak] {Slovakian} {face}
+%D \ShowAllLanguageValues [\s!hr] [croatian] {Croatian} {heartthrob}
+%D \ShowAllLanguageValues [\s!sl] [slovenian] {Slovenian} {mountains}
+
+%D A present from Brooks Moses and Hans hagen for Mojca Miklavec:
+
+\def\doconvertsloveniancharacters{\dodoconvertcharacters{25}}
+
+\def\sloveniancharacters{\doconvertsloveniancharacters\sloveniancharacter}
+\def\slovenianCharacters{\doconvertsloveniancharacters\slovenianCharacter}
+
+%D Define general-purpose macros for Slovenian character enumerations:
+
+\defineconversion [sloveniancharacter] [\sloveniancharacter]
+\defineconversion [slovenianCharacter] [\slovenianCharacter]
+
+\defineconversion [sloveniancharacters] [\sloveniancharacters]
+\defineconversion [slovenianCharacters] [\slovenianCharacters]
+
+%D Define these as the general character enumeration when
+%D language is Slovenian. If you feel uncomfortable with this,
+%D mail Mojca, since she promised to to take the heat.
+
+\defineconversion [sl] [character] [\sloveniancharacter]
+\defineconversion [sl] [Character] [\slovenianCharacter]
+
+\defineconversion [sl] [characters] [\sloveniancharacters]
+\defineconversion [sl] [Characters] [\slovenianCharacters]
+
+\defineconversion [sl] [a] [\sloveniancharacters]
+\defineconversion [sl] [A] [\slovenianCharacters]
+\defineconversion [sl] [AK] [\smallcapped\sloveniancharacters]
+\defineconversion [sl] [KA] [\smallcapped\sloveniancharacters]
+
+%D This may move to \type {core-con.tex}.
+
+\def\sloveniancharacter#1%
+ {\ifcase#1\unknowncharacter
+ \or a\or b\or c\or \ccaron\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m%
+ \or n\or o\or p\or r\or s\or \scaron\or t\or u\or v\or z\or \zcaron
+ \else
+ \unknowncharacter
+ \fi}
+
+\def\slovenianCharacter#1%
+ {\ifcase#1\unknowncharacter
+ \or A\or B\or C\or \Ccaron\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M%
+ \or N\or O\or P\or R\or S\or \Scaron\or T\or U\or V\or Z\or \Zcaron
+ \else
+ \unknowncharacter
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-spa.tex b/Master/texmf-dist/tex/context/base/lang-spa.tex
new file mode 100644
index 00000000000..83a4d52ab71
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-spa.tex
@@ -0,0 +1,76 @@
+%D \module
+%D [ file=lang-spa,
+%D version=2002.04.17,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Spacing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Language Macros / Spacing}
+
+%D This module was created in the process of enhancing
+%D support for French (with the help of Daniel Flipo).
+
+\unprotect
+
+\definehspace [\s!fr] [quotation] [\flexiblespaceamount{.8}{.3}{.8}]
+\definehspace [\s!fr] [sentence] [\fixedspaceamount{1}]
+
+%definehspace [\s!fr] [quote] [\flexiblespaceamount{.8}{.3}{.8}]
+%definehspace [\s!fr] [speech] [\flexiblespaceamount{.8}{.3}{.8}]
+
+\definehspace [\s!fr] [interquotation] [\zeropoint]
+\definehspace [\s!fr] [intersentence] [\zeropoint]
+
+\definehspace [\string :] [\zeropoint]
+\definehspace [\string ;] [\zeropoint]
+\definehspace [\string !] [\zeropoint]
+\definehspace [\string ?] [\zeropoint]
+
+\definehspace [\s!fr] [\string :] [\spaceamount]
+\definehspace [\s!fr] [\string ;] [.16667em]
+\definehspace [\s!fr] [\string !] [.16667em]
+\definehspace [\s!fr] [\string ?] [.16667em]
+
+\protect
+
+%D Alternative discretionary handlers:
+
+\definetextmodediscretionary :
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentlanguage{:}:}
+
+\definetextmodediscretionary ;
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentlanguage{;};}
+
+\definetextmodediscretionary ?
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentlanguage{?}?}
+
+\definetextmodediscretionary !
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\currentlanguage{!}!}
+
+%D \startbuffer
+%D \mainlanguage[en] \quotation{test \quotation{test} test}\par
+%D \mainlanguage[nl] \quotation{test \quotation{test} test}\par
+%D \mainlanguage[fr] \quotation{test \quotation{test} test}\par
+%D
+%D \mainlanguage[en] \quotation{\quotation{test} test}\par
+%D \mainlanguage[nl] \quotation{\quotation{test} test}\par
+%D \mainlanguage[fr] \quotation{\quotation{test} test}\par
+%D
+%D \mainlanguage[en] |<|test |<|test|>| test|>| \par
+%D \mainlanguage[nl] |<|test |<|test|>| test|>| \par
+%D \mainlanguage[fr] |<|test |<|test|>| test|>| \par
+%D
+%D \mainlanguage[en] |<||<|test|>| test|>| \par
+%D \mainlanguage[nl] |<||<|test|>| test|>| \par
+%D \mainlanguage[fr] |<||<|test|>| test|>| \par
+%D \stopbuffer
+%D
+%D \typebuffer {\getbuffer}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-spe.tex b/Master/texmf-dist/tex/context/base/lang-spe.tex
new file mode 100644
index 00000000000..c030c8045e3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-spe.tex
@@ -0,0 +1,265 @@
+%D \module
+%D [ file=lang-spe,
+%D version=2002.05.07, % 1996.01.25,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Specifics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This code was originally placed in the language
+%D initialization module, but isolating it is clearer. Language
+%D specifics evolved out of user demands for special features,
+%D like the german active quote. After a while I decided to
+%D associate them to languages in a more general way so that we
+%D could associate all kind of things with language switching.
+%D
+%D This is a typical example of functionality that occasionally
+%D gets improved based on user input and experience. Much of the
+%D code is pretty old and could probabbly be done in better ways.
+%D It's probably also the kind of code that has been and will be
+%D written over and over again by \TEX\ users around the world,
+%D so there are probably better implementations of similar
+%D functionality around. Therefore, users are invited to pop in
+%D their own handling as long as it does not interfere with
+%D existing code. Writing the more obscure macros that deal with
+%D this is a good learning experience (catcodes, lccodes, token
+%D lists, expansion, \unknown).
+
+\writestatus{loading}{Context Language Macros / Specifics}
+
+\unprotect
+
+%D \macros
+%D {everyresetlanguagespecifics,resetlanguagespecifics}
+%D
+%D Cleanup macros.
+
+\newevery \everyresetlanguagespecifics \relax
+
+\def\resetlanguagespecifics
+ {\ifcase\protectionlevel
+ \the\everyresetlanguagespecifics
+ \else % to be translated
+ % \writestatus\m!systems{don't change language in unprotected mode!}%
+ \fi}
+
+\appendtoks
+ \resetlanguagespecifics
+\to \everycleanupfeatures
+
+%D \macros
+%D {startlanguagespecifics,enablelanguagespecifics}
+%D
+%D Each language has its own typographic pecularities. Some of
+%D those can be influenced by parameters, others are handled by
+%D the interface, but as soon as specific commands come into
+%D view we need another mechanism. In the macro that activates
+%D a language, we call \type{\enablelanguagespecifics}. This
+%D macro in return calls for the setup of language specific
+%D macros. Such specifics are defined as:
+%D
+%D \starttyping
+%D \startlanguagespecifics[de]
+%D \installcompoundcharacter "a {\"a}
+%D \installcompoundcharacter "e {\"e}
+%D \installcompoundcharacter "s {\SS}
+%D \stoplanguagespecifics
+%D \stoptyping
+%D
+%D Instead of \type{[du]} we can pass a comma separated
+%D list, like \type{[du,nl]}. Next calls to this macro add the
+%D specifics to the current list.
+%D
+%D Before we actually read the specifics, we first take some
+%D precautions that will prevent spurious spaces to creep into
+%D the list.
+
+\def\startlanguagespecifics% % we use double to
+ {\bgroup
+ \catcode`\^^I=\@@ignore
+ \catcode`\^^M=\@@ignore
+ \catcode`\^^L=\@@ignore
+ \dodoubleempty\dostartlanguagespecifics} % get rid of spaces
+
+%D The main macro looks quite complicated but actually does
+%D nothing special. By embedding \type{\do} we can easily
+%D append to the lists and also execute them at will. Just to
+%D be sure, we check on spurious spaces. The second dummy
+%D argument gobbles spaces.
+
+\def\languageencoding
+ {\ifx\characterencoding\nocharacterencoding \else
+ \characterencoding-%
+ \fi}
+
+% \long\def\dostartlanguagespecifics[#1][#2]#3\stoplanguagespecifics%
+% {\egroup
+% \long\def\docommando##1%
+% {\doifdefinedelse{\??la\languageencoding##1\??la}
+% {\long\def\do####1####2####3%
+% {\setvalue{\??la\languageencoding####1\??la}{\do{####1}{####2####3}}}%
+% \getvalue{\??la\languageencoding##1\??la}{#3}}
+% {\setvalue{\??la\languageencoding##1\??la}{\do{##1}{#3}}}%
+% \bgroup
+% \setbox0\hbox{\enablelanguagespecifics[##1]}%
+% \ifdim\wd0>\zeropoint
+% \showmessage\m!linguals7{\currentencoding-##1,\the\wd0\space}\wait
+% \else
+% \showmessage\m!linguals8{\currentencoding-##1}%
+% \fi
+% \egroup
+% \doif{##1}{\currentmainlanguage}
+% {\enablelanguagespecifics[##1]}}%
+% \processcommalist[#1]\docommando}
+
+% This saves 3K in the fmt file.
+
+% This should be a token register, but alas, we run out of them and
+% \ETEX\ has a bug.
+
+\long\def\dostartlanguagespecifics[#1][#2]#3\stoplanguagespecifics
+ {\egroup
+ \processcommalist[#1]{\dosetlanguagespecifics{#3}}}
+
+% \long\def\dosetlanguagespecifics#1#2%
+% {\doifdefinedelse{\??la\languageencoding#2\??la}
+% {\long\def\do##1##2##3{\setvalue{\??la\languageencoding##1\??la}{\do{##1}{##2##3}}}%
+% \getvalue{\??la\languageencoding#2\??la}{#1}}
+% {\setvalue{\??la\languageencoding#2\??la}{\do{#2}{#1}}}%
+% \bgroup
+% \setbox\scratchbox\hbox{\enablelanguagespecifics[#2]}%
+% \ifdim\wd\scratchbox>\zeropoint
+% \showmessage\m!linguals7{\currentencoding-#2,\the\wd\scratchbox\space}\wait
+% \else
+% \showmessage\m!linguals8{\currentencoding-#2}%
+% \fi
+% \egroup
+% \doif{#2}\currentmainlanguage
+% {\enablelanguagespecifics[#2]}}
+
+\long\def\dosetlanguagespecifics#1#2%
+ {%ifundefined{\??la\languageencoding#2\??la}\letvalue{\??la\languageencoding#2\??la}\empty\fi
+ \ifundefined{\??la\languageencoding#2\??la}\forgetlanguagespecifics[#2]\fi
+ \appendvalue{\??la\languageencoding#2\??la}{#1}%
+ \bgroup
+ \setbox\scratchbox\hbox{\enablelanguagespecifics[#2]}%
+ \ifdim\wd\scratchbox>\zeropoint
+ \showmessage\m!linguals7{\currentencoding-#2,\the\wd\scratchbox\space}\wait
+ \else
+ \showmessage\m!linguals8{\currentencoding-#2}%
+ \fi
+ \egroup
+ \doif{#2}\currentmainlanguage{\enablelanguagespecifics[#2]}}
+
+\def\forgetlanguagespecifics[#1]%
+ {\letvalue{\??la\languageencoding#1\??la}\empty}
+
+%D Enabling them is rather straightforward. We only have to
+%D define \type{\do} in such a way that \type{{ }} is removed
+%D and the language key is gobbled.
+
+%\def\enablelanguagespecifics[#1]%
+% {\let\do\secondoftwoarguments
+% \doifvaluesomething{\??la#1\c!default}
+% {\getvalue{\??la\getvalue{\??la#1\c!default}\??la}%
+% \getvalue{\??la\languageencoding\??la}}%
+% \getvalue{\??la#1\??la}%
+% \getvalue{\??la\languageencoding#1\??la}}
+%
+% sped up since used often:
+
+\def\enablelanguagespecifics[#1]%
+ {%\let\do\secondoftwoarguments
+ \csname
+ \??la
+ \@EA\ifx\csname\??la#1\c!default\endcsname\relax
+ \languageencoding
+ \else
+ \csname\??la#1\c!default\endcsname
+ \fi
+ \??la
+ \endcsname
+ \csname\??la#1\??la\endcsname
+ \csname\??la\languageencoding#1\??la\endcsname} % dup ?
+
+%D \macros
+%D {deactivatelanguagespecific}
+%D
+%D The next code makes it possible to disable the specifics.
+
+\def\deactivatelanguagespecific#1%
+ {\ifundefined{l g s \string#1}%
+ \letgvalueempty{l g s \string#1}% signal to prevent dup def
+ \bgroup
+ \catcode`#1=\@@active
+ \uccode`~=`#1
+ \uppercase{\doglobal\appendtoks\dodeactivatetoken{~}\to\everyresetlanguagespecifics}%
+ \egroup
+ \expanded{\doglobal\noexpand\appendtoks{#1}{\the\catcode`#1}}\to\everyresetlanguagespecifics
+ \fi}
+
+% \def\dodeactivatetoken#1#2#3%
+% {\def#1{#2}\catcode`#2=#3\relax}
+
+\def\dodeactivatetoken#1#2#3% test needed to avoid clash with \unprotect
+ {\def#1{#2}\ifnum\catcode`#2=\@@active\catcode`#2=#3\relax\fi}
+
+%D We cannot hook this into the installer since language
+%D specifics can be anything. So far, we have the following
+%D potentially active characters.
+
+%D Beware, this should happen under an unprotected regime;
+%D thanks to Giuseppe Oblomov Bilotta, who first noticed
+%D that something was wrong.
+
+\protect
+
+\deactivatelanguagespecific "
+\deactivatelanguagespecific /
+\deactivatelanguagespecific :
+\deactivatelanguagespecific ;
+\deactivatelanguagespecific ?
+\deactivatelanguagespecific !
+
+\unprotect
+
+% yes or no (taco wins: no)
+
+% \startlanguagespecifics[nl,cz,sk,fr]
+% \lccode`\'=`\'
+% \stoplanguagespecifics
+
+%D \macros
+%D {ordinaldaynumber, highordinalstr, ordinalstr}
+%D
+%D Efficient general ordinal number converters are sometimes
+%D difficult to implement. Fortunately dates never exceed the
+%D number~31.
+
+\def\highordinalstr#1{\high{\nocap{#1}}}
+\def\ordinalstr #1{\nocap{#1}}
+
+\def\ordinaldaynumber#1% \strippedcsname\ordinaldaynumber
+ {\expanded{\executeifdefined{\currentlanguage ordinaldaynumber}%
+ \noexpand\firstofoneargument{\number#1}}}
+
+%D Language specific converters have definitions like:
+%D
+%D \starttyping
+%D \def\enordinaldaynumber#1{...}
+%D \stoptyping
+%D
+%D Examples can be found in the other \type {lang} modules.
+
+% \ifprocessingXML is a nasty dependency
+
+\appendtoks
+ \ifprocessingXML \else \resetlanguagespecifics \fi
+\to \everylanguage
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-ura.tex b/Master/texmf-dist/tex/context/base/lang-ura.tex
new file mode 100644
index 00000000000..2ecb31e6b0b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-ura.tex
@@ -0,0 +1,160 @@
+%D \module
+%D [ file=lang-sla,
+%D version=1997.09.03,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Uralic Languages,
+%D author=Hans Hagen / Tobias Burnus,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Todo: replace \'.. by \namedglyph
+
+\writestatus{loading}{Uralic Languages}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Finnish \NC \NC \NR
+%D \NC Hungarian \NC Balazs Nagy \NC \NR
+%D \stoptabulate
+
+% Cheremiss, Estonian, Finnish, Karelian, Laap, Mordvinian,
+% Permian tongues, Hungarian, Ostyak, Vogul, Samoyed
+
+\unprotect
+
+\installlanguage
+ [\s!fi]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\upperleftsinglesixquote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\upperleftdoublesixquote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,\ ,\v!month,\ ,\v!day},
+ \c!state=\v!stop]
+
+\installlanguage
+ [\s!hu]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\lowerleftsingleninequote,
+ \c!rightquote=\upperrightsingleninequote,
+ \c!leftquotation=\lowerleftdoubleninequote,
+ \c!rightquotation=\upperrightdoubleninequote,
+ \c!date={\v!year,.,\ ,\v!month,\ ,\v!day,.},
+ \c!state=\v!stop,
+ \s!mapping=ec,
+ \s!encoding=ec]
+
+\installlanguage [finish] [\s!fi]
+\installlanguage [hungarian] [\s!hu]
+
+\setupheadtext [\s!fi] [\v!content=Sis\"allys]
+\setupheadtext [\s!fi] [\v!tables=Taulukkoj]
+\setupheadtext [\s!fi] [\v!figures=Kuvi]
+\setupheadtext [\s!fi] [\v!graphics=Grafiikkaoi]
+\setupheadtext [\s!fi] [\v!intermezzi=Intermezzos]
+\setupheadtext [\s!fi] [\v!index=Indeksiluku]
+\setupheadtext [\s!fi] [\v!abbreviations=Lyhennyksi]
+\setupheadtext [\s!fi] [\v!logos=Vertauskuva]
+\setupheadtext [\s!fi] [\v!units=Yksik\"ot]
+
+\setupheadtext [\s!hu] [\v!content=Tartalom]
+\setupheadtext [\s!hu] [\v!tables=T\'abl\'azatok]
+\setupheadtext [\s!hu] [\v!figures=\'Abr\'ak]
+\setupheadtext [\s!hu] [\v!graphics=Grafik\'ak]
+\setupheadtext [\s!hu] [\v!intermezzi=Intermezzok]
+\setupheadtext [\s!hu] [\v!index=Index]
+\setupheadtext [\s!hu] [\v!abbreviations=R\"ovid\'it\'esek]
+\setupheadtext [\s!hu] [\v!logos=Fejl\'ecek]
+\setupheadtext [\s!hu] [\v!units=M\'ert\'ekegys\'egek]
+
+\setuplabeltext [\s!fi] [\v!table=Taulukko ]
+\setuplabeltext [\s!fi] [\v!figure=Kuva ]
+\setuplabeltext [\s!fi] [\v!intermezzo=Intermezzo ]
+\setuplabeltext [\s!fi] [\v!graphic=Grafiikka ]
+\setuplabeltext [\s!fi] [\v!chapter=]
+\setuplabeltext [\s!fi] [\v!section=]
+\setuplabeltext [\s!fi] [\v!subsection=]
+\setuplabeltext [\s!fi] [\v!subsubsection=]
+\setuplabeltext [\s!fi] [\v!subsubsubsection=]
+\setuplabeltext [\s!fi] [\v!appendix=]
+\setuplabeltext [\s!fi] [\v!part=Osa ]
+\setuplabeltext [\s!fi] [\v!line=rivi ]
+\setuplabeltext [\s!fi] [\v!lines=rivie ]
+
+\setuplabeltext [\s!hu] [\v!table={,.~t\'abl\'azat:}]
+\setuplabeltext [\s!hu] [\v!figure={,.~\'abra:}]
+\setuplabeltext [\s!hu] [\v!intermezzo={,.~intermezzo:}]
+\setuplabeltext [\s!hu] [\v!graphic={,.~k\'ep:}]
+\setuplabeltext [\s!hu] [\v!chapter={,.~fejezet:}]
+\setuplabeltext [\s!hu] [\v!section={,.}]
+\setuplabeltext [\s!hu] [\v!subsection={,.}]
+\setuplabeltext [\s!hu] [\v!subsubsection={,.}]
+\setuplabeltext [\s!hu] [\v!subsubsubsection={,.}]
+\setuplabeltext [\s!hu] [\v!appendix=]
+\setuplabeltext [\s!hu] [\v!part={,.~r\'esz:}]
+\setuplabeltext [\s!hu] [\v!line={,.~sor:}]
+\setuplabeltext [\s!hu] [\v!lines=sorok]
+
+\setuplabeltext [\s!fi] [\v!january=tammikuu]
+\setuplabeltext [\s!fi] [\v!february=helmikuu]
+\setuplabeltext [\s!fi] [\v!march=maaliskuu]
+\setuplabeltext [\s!fi] [\v!april=huhtikuu]
+\setuplabeltext [\s!fi] [\v!may=toukokuu]
+\setuplabeltext [\s!fi] [\v!june=kes\"akuu]
+\setuplabeltext [\s!fi] [\v!july=hein\"akuu]
+\setuplabeltext [\s!fi] [\v!august=elokuu]
+\setuplabeltext [\s!fi] [\v!september=syyskuu]
+\setuplabeltext [\s!fi] [\v!october=lokakuu]
+\setuplabeltext [\s!fi] [\v!november=marraskuu]
+\setuplabeltext [\s!fi] [\v!december=joulukuu]
+
+\setuplabeltext [\s!hu] [\v!january=janu\'ar]
+\setuplabeltext [\s!hu] [\v!february=febru\'ar]
+\setuplabeltext [\s!hu] [\v!march=m\'arcius]
+\setuplabeltext [\s!hu] [\v!april=\'aprilis]
+\setuplabeltext [\s!hu] [\v!may=m\'ajus]
+\setuplabeltext [\s!hu] [\v!june=j\'unius]
+\setuplabeltext [\s!hu] [\v!july=j\'ulius]
+\setuplabeltext [\s!hu] [\v!august=augusztus]
+\setuplabeltext [\s!hu] [\v!september=szeptember]
+\setuplabeltext [\s!hu] [\v!october=okt\'ober]
+\setuplabeltext [\s!hu] [\v!november=november]
+\setuplabeltext [\s!hu] [\v!december=december]
+
+\setuplabeltext [\s!fi] [\v!sunday=sunnuntai]
+\setuplabeltext [\s!fi] [\v!monday=maanantai]
+\setuplabeltext [\s!fi] [\v!tuesday=tiistai]
+\setuplabeltext [\s!fi] [\v!wednesday=keskiviikko]
+\setuplabeltext [\s!fi] [\v!thursday=torstai]
+\setuplabeltext [\s!fi] [\v!friday=perjantai]
+\setuplabeltext [\s!fi] [\v!saturday=lauantai]
+
+\setuplabeltext [\s!hu] [\v!sunday=vas\'arnap]
+\setuplabeltext [\s!hu] [\v!monday=h\'etf\H{o}]
+\setuplabeltext [\s!hu] [\v!tuesday=kedd]
+\setuplabeltext [\s!hu] [\v!wednesday=szerda]
+\setuplabeltext [\s!hu] [\v!thursday=cs\"ut\"ort\"ok]
+\setuplabeltext [\s!hu] [\v!friday=p\'entek]
+\setuplabeltext [\s!hu] [\v!saturday=szombat]
+
+%D \ShowAllLanguageValues [\s!fi] [finnish] {Finnish} {phone}
+%D \ShowAllLanguageValues [\s!hu] [hungarian] {Hungarian} {rhapsody}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/lang-vn.tex b/Master/texmf-dist/tex/context/base/lang-vn.tex
new file mode 100644
index 00000000000..800433a1408
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/lang-vn.tex
@@ -0,0 +1,91 @@
+%D \module
+%D [ file=lang-vn,
+%D version=2004.11.22, % 1999.12.12,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Vietnamese,
+%D author={Han The Thanh \& Adam Lindsay \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Vietnamese Language}
+
+%D The framework of this module is set up by Hans Hagen while
+%D many of the first translations were done by Tobias. Later
+%D on, corrections were made by users. If you have suggestions,
+%D or feel that your name missing here, don't hesitate to send
+%D us an email.
+%D
+%D \starttabulate[|lB|l|]
+%D \NC Vietnamese \NC \THANH\ \NC \NR
+%D \stoptabulate
+
+\unprotect
+
+\installlanguage
+ [\s!vn]
+ [\c!spacing=\v!packed,
+ \c!leftsentence=---,
+ \c!rightsentence=---,
+ \c!leftsubsentence=---,
+ \c!rightsubsentence=---,
+ \c!leftquote=\quoteleft,
+ \c!rightquote=\quoteright,
+ \c!leftquotation=\quotedblleft,
+ \c!rightquotation=\quotedblright,
+ \c!date={{ },dd,{/},mm,{/},yy},
+ \c!state=\v!stop]
+
+\installlanguage [vietnamese] [\s!vn]
+
+\setupheadtext [\s!vn] [\v!content=M\udotbelow c l\udotbelow c]
+\setupheadtext [\s!vn] [\v!tables=Danh s\aacute ch b\ahook ng]
+\setupheadtext [\s!vn] [\v!figures=Danh s\aacute ch h\igrave nh v\etilde]
+\setupheadtext [\s!vn] [\v!graphics=\Dstroke\ocircumflexgrave\ th\idotbelow]
+\setupheadtext [\s!vn] [\v!intermezzi=Intermezzos]
+\setupheadtext [\s!vn] [\v!index=Ch\ihook\ s\ocircumflexacute]
+\setupheadtext [\s!vn] [\v!abbreviations=Ch\uhorntilde\ vi\ecircumflexacute t t\abreveacute t]
+\setupheadtext [\s!vn] [\v!logos=Bi\ecircumflexhook u t\uhorn \ohorndotbelow ng]
+\setupheadtext [\s!vn] [\v!units=\Dstroke\ohorn n v\idotbelow]
+
+\setuplabeltext [\s!vn] [\v!table=B\ahook ng ]
+\setuplabeltext [\s!vn] [\v!figure=H\igrave nh ]
+\setuplabeltext [\s!vn] [\v!intermezzo=intermezzo]
+\setuplabeltext [\s!vn] [\v!graphic=\Dstroke\ocircumflexgrave\ th\idotbelow]
+\setuplabeltext [\s!vn] [\v!chapter=Ch\uhorn \ohorn ng ]
+\setuplabeltext [\s!vn] [\v!section=] % not set
+\setuplabeltext [\s!vn] [\v!subsection=] % not set
+\setuplabeltext [\s!vn] [\v!subsubsection=] % not set
+\setuplabeltext [\s!vn] [\v!subsubsubsection=] % not set
+\setuplabeltext [\s!vn] [\v!appendix=] % not set
+\setuplabeltext [\s!vn] [\v!part=Ph\acircumflexgrave n ]
+\setuplabeltext [\s!vn] [\v!line=d\ograve ng ]
+\setuplabeltext [\s!vn] [\v!lines=d\ograve ng ]
+
+\setuplabeltext [\s!vn] [\v!sunday=ch\uhook\ nh\acircumflexdotbelow t]
+\setuplabeltext [\s!vn] [\v!monday=th\uhornacute\ hai]
+\setuplabeltext [\s!vn] [\v!tuesday=th\uhornacute\ ba]
+\setuplabeltext [\s!vn] [\v!wednesday=th\uhornacute\ t\uhorn]
+\setuplabeltext [\s!vn] [\v!thursday=th\uhornacute\ n\abreve m]
+\setuplabeltext [\s!vn] [\v!friday=th\uhornacute\ s\aacute u]
+\setuplabeltext [\s!vn] [\v!saturday=th\uhornacute\ b\ahook y]
+
+\setuplabeltext [\s!vn] [\v!january=th\aacute ng gi\ecircumflex ng]
+\setuplabeltext [\s!vn] [\v!february=th\aacute ng hai]
+\setuplabeltext [\s!vn] [\v!march=th\aacute ng ba]
+\setuplabeltext [\s!vn] [\v!april=th\aacute ng t\uhorn]
+\setuplabeltext [\s!vn] [\v!may=th\aacute ng n\abreve m]
+\setuplabeltext [\s!vn] [\v!june=th\aacute ng s\aacute u]
+\setuplabeltext [\s!vn] [\v!july=th\aacute ng b\ahook y]
+\setuplabeltext [\s!vn] [\v!august=th\aacute ng t\aacute m]
+\setuplabeltext [\s!vn] [\v!september=th\aacute ng ch\iacute n]
+\setuplabeltext [\s!vn] [\v!october=th\aacute ng m\uhorn\ohorngrave i]
+\setuplabeltext [\s!vn] [\v!november=th\aacute ng m\uhorn\ohorngrave i m\ocircumflexdotbelow t]
+\setuplabeltext [\s!vn] [\v!december=th\aacute ng m\uhorn\ohorngrave i hai]
+
+%D \ShowAllLanguageValues [\s!vn] [vietnamese] {Vietnamese} {water||puppets}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-arabtex.tex b/Master/texmf-dist/tex/context/base/m-arabtex.tex
new file mode 100644
index 00000000000..6220835f505
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-arabtex.tex
@@ -0,0 +1,457 @@
+%D \module
+%D [ file=m-arabtex, % was font-arb,
+%D version=2003.02.22, % 1999.11.06,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Arabic,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% I still need to hook in some features into the setup
+% macro. I also have to (re)define farsi etc. in ways
+% similar to arab, so that we have dedicated environments.
+%
+% keywords needed: vocalize transscribe
+%
+% \startarabic[option=vocalize] % or vocalize=yes
+% ......
+% \stoparabic
+
+\writestatus{loading}{Context Font Macros / ArabTeX support}
+
+%D At the \NTG\ 10\high{th} anniversary meeting Klaus Lagally
+%D introduced the audience to arabic typesetting, and after
+%D that I knew that some day I really had to look into his
+%D generic package. And then, sort of simultaniously Maarten
+%D Wisse and Imran Ahsan Nyazee asked me if \CONTEXT\ could
+%D support \ARABTEX, a package that provides right to left
+%D typesetting of (several variants of) arab and hebrew.
+%D Having implemented support for chinese a few weeks before,
+%D I could not resist to build in support for arab and hebrew
+%D too. Writing support for languages that don't give me any
+%D cue on how to pronounce their script, is kind of special.
+
+%D This is a beta version, since I still have to take care of some
+%D macros that conflict with existing stuff.
+
+\unprotect
+
+\definesystemvariable{ARABTEX}
+
+\def\setupARABTEX
+ {\getparameters[\??ARABTEX]}
+
+\setupARABTEX
+ [\s!rscale=1.2,
+ \c!before=,
+ \c!after=,
+ \c!inner=\setarab,
+ \c!style=\setarabicfont\fontstylesuffix]
+
+%D A few (maybe too) simple hooks into the font mechanism. The
+%D hook into the language module is not yet done.
+
+% \unexpanded\def\setarabicfont#1% rscale
+% {\scratchdimen\@@ARABTEXrscale\bodyfontsize
+% \font\arbfont\truefontname{Arabic#1} at \currentfontscale\scratchdimen
+% \setx@skels
+% \newfonttrue
+% \arbfont}
+%
+% more modern
+%
+% \unexpanded\def\setarabicfont#1% rscale
+% {\definefont[arbfont][Arabic#1 sa \@@ARABTEXrscale]%
+% \setx@skels
+% \newfonttrue
+% \arbfont}
+%
+% more efficient
+
+\unexpanded\def\setarabicfont#1%
+ {\setx@skels
+ \newfonttrue
+ \definedfont[Arabic#1 sa \ARABTEXparameter\s!rscale]}
+
+%D Just to be compatible with Arab\TEX\ we define:
+
+\unexpanded\def\nash {\setarabicfont\s!Regular}
+\unexpanded\def\nashbf {\setarabicfont\s!Bold }
+\unexpanded\def\pnash {\setarabicfont\s!Regular}
+\unexpanded\def\pnashbf{\setarabicfont\s!Bold }
+\unexpanded\def\xnash {\setarabicfont\s!Regular}
+\unexpanded\def\xnashbf{\setarabicfont\s!Bold }
+
+%D The display arabic environment (will be an installable
+%D object) uses a few conditionals. Let's do it the
+%D \CONTEXT\ way and define an anvironment that we later can
+%D adapt.
+
+\newif\if@ignore
+\newif\if@endpe
+
+\def\setupARABTEXalternative[#1]%
+ {\dodoubleempty\getparameters[\??ARABTEX#1]}
+
+\def\defineARABTEXalternative
+ {\dodoubleempty\dodefineARABTEXalternative}
+
+\def\dodefineARABTEXalternative[#1][#2]%
+ {\iffirstargument % \startarab is defined but used already
+ \getparameters
+ [\??ARABTEX#1]
+ [\c!before=\@@ARABTEXbefore,
+ \c!after=\@@ARABTEXafter,
+ \c!inner=\@@ARABTEXinner,
+ \c!style=\@@ARABTEXstyle,
+ \s!rscale=\@@ARABTEXrscale,
+ #2]%
+ \setvalue {\e!start#1}{\displayARABTEXalternative{#1}}%
+ \unexpanded\setvalue{#1}{\inlineARABTEXalternative {#1}}%
+ \unexpanded\def\RL{\getvalue{#1}}%
+ \unexpanded\def\LR{\a@LR}%
+ \let\R=\RL
+ \let\L=\LR
+ \expandafter\all@wcmd\csname\e!stop#1\endcsname
+ \else
+ \defineARABTEXalternative[arabic]%
+ \fi}
+
+\def\initializeARABTEXinternals
+ {\ARABTEXparameter\c!inner
+ \the\everyARABTEXpreset}
+
+\newtoks \everyARABTEXpreset
+
+\let\currentARABTEXalternative\empty
+
+\def\ARABTEXparameter#1%
+ {\csname\??ARABTEX\currentARABTEXalternative#1\endcsname}
+
+\def\inlineARABTEXalternative#1#2%
+ {\bgroup
+ \edef\currentARABTEXalternative{#1}%
+ \initializeARABTEXinternals
+ \a@RL{#2}%
+ \egroup}
+
+\def\displayARABTEXalternative#1%
+ {\dodoubleempty\dostartARABTEXalternative[#1]}
+
+\def\dostartARABTEXalternative[#1][#2]%
+ {\begingroup
+ \edef\currentARABTEXalternative{#1}%
+ \getparameters[\??ARABTEX\currentARABTEXalternative][#2]%
+ \ifnum1<0\ARABTEXparameter\c!n\relax
+ \startcolumns
+ \else
+ \ARABTEXparameter\c!before
+ \fi
+ \initializeARABTEXinternals
+ \initializeARABTEXend
+ \arabtext
+ \initializeARABTEXalternative}
+
+\def\initializeARABTEXalternative
+ {\ARABTEXparameter\c!style}
+
+\def\initializeARABTEXend% \CONTEXT\ does use \end quite differently
+ {\long\def\end##1%
+ {\endarabtext
+ \ifnum1<0\ARABTEXparameter\c!n\relax
+ \stopcolumns
+ \else
+ \ARABTEXparameter\c!after
+ \fi
+ \endgroup}%
+ \let\a@l@end\end
+ \letvalue{\e!stop\currentARABTEXalternative}=\end
+ \long\def\end##1%
+ {\endarabtext
+ \endgroup
+ \if@ignore\global\@ignorefalse\expandafter\ignorespaces\fi}}
+
+%D Arabic verbatim.
+
+\def\typearab{\a@@verb}
+
+%D Some \LATEX\ macros.
+
+\def \makeatletter{\unprotect}
+\def \makeatother {\protect}
+\def \typeout {\writestatus{arabtex}}
+
+%D We have to save some macros.
+
+\let\ARABTEXversion=\empty
+
+\def\startloadingARABTEX% ugly hacks
+ {\catcode`!=12
+ \catcode`?=12
+ \pushmacro\output \let \output \scratchtoks
+ \pushmacro\LaTeX \let \LaTeX \undefined
+ \pushmacro\CJK \let \CJK \undefined
+% \pushmacro\peek@token \let \peek@token \undefined
+% \pushmacro\edmacloaded \let \edmacloaded \undefined
+ \pushmacro\year \let \year \normalyear
+ \pushmacro\month \let \month \normalmonth
+ \pushmacro\day \let \day \normalday
+ \pushmacro\input \def \input ##1 {\normalinput ##1 }
+ \pushmacro\linewidth
+ \pushmacro\datum \def\datum {\toks0}
+ \pushmacro\version \def\version {\toks2}
+ \pushmacro\theversion \let\theversion \ARABTEXversion
+ \pushmacro\emphasize
+ \pushmacro\cap}
+
+\def\stoploadingARABTEX
+ {\catcode`!=11
+ \catcode`?=11
+ \popmacro\cap
+ \popmacro\emphasize
+ \popmacro\theversion
+ \popmacro\version
+ \popmacro\datum
+ \popmacro\linewidth
+ \popmacro\input
+ \popmacro\day
+ \popmacro\month
+ \popmacro\year
+% \popmacro\edmacloaded
+% \popmacro\peek@token
+ \popmacro\CJK
+ \popmacro\LaTeX
+ \popmacro\output}
+
+%D We save some macros:
+
+\startloadingARABTEX
+
+%D When loading \ARABTEX\ we have to set back the~! and~?.
+
+\input arabtex.sty
+
+%D Since \ARABTEX\ has its own \type {\cap}, we save the
+%D new meaning. We also redefine some \PLAIN\ macros, which
+%D happen to have a different meaning in \LATEX.
+
+\let\ARABTEXversion\theversion
+\let\ARABTEXcap \cap
+
+\appendtoks
+ \let\cap\ARABTEXcap
+\to \everyARABTEXpreset
+
+\def\ARABTEXsh@ft#1%
+ {\dimen@.00#1ex
+ \multiply\dimen@\fontdimen1\font
+ \kern-.0156\dimen@}
+
+\appendtoks
+ \let\sh@ft\ARABTEXsh@ft
+\to \everyARABTEXpreset
+
+\def\ARABTEXd#1%
+ {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}%
+ .\hidewidth}}}
+
+\def\ARABTEXb#1%
+ {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%
+ \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
+
+\appendtoks
+ \let\b\ARABTEXb
+ \let\d\ARABTEXd
+\to \everyARABTEXpreset
+
+\def \ARABTEXbreakA {\hfill\break}
+\def \ARABTEXbreakB {\break}
+\edef\ARABTEXbar {\string|}
+\def \ARABTEXcomma {\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
+
+\appendtoks
+ \let\\=\ARABTEXbreakA
+ \let\|=\ARABTEXbreakB
+ \let |=\ARABTEXbar
+ \let\,=\ARABTEXcomma
+\to \everyARABTEXpreset
+
+\let\ARABTEXprotect\relax
+
+\appendtoks
+ \let\protect\ARABTEXprotect
+\to \everyARABTEXpreset
+
+%D Now we can pop the saved macros.
+
+\stoploadingARABTEX
+
+%D Ah, we have to get rid of some \type {\protect} stuff but
+%D to permit testing we add it in the \CONTEXT\ way.
+
+% \bgroup
+% \catcode`\<=\@other
+% \unexpanded\gdef\a@ins
+% {\ifmmode
+% \expandafter<%
+% \else
+% \dontleavehmode \bgroup
+% \arab@codes \set@arabfont \@waslafalse \@wasfalse
+% \expandafter\arab@insert
+% \fi}
+% \unexpanded\gdef\<{\a@ins}
+% \catcode`\<=\active
+% \global\let<=\a@ins
+% \egroup
+%
+% cleaner:
+
+\defineactivecharacter < {\a@ins} \unexpanded\gdef\<{\a@ins}%
+
+\def\normal@a@ins
+ {\dontleavehmode % context prefers this instead of \leavevmode
+ \bgroup
+ \arab@codes
+ \set@arabfont
+ \@waslafalse
+ \@wasfalse
+ \arab@insert}
+
+\unexpanded\gdef\a@ins
+ {\mathortext<\normal@a@ins}
+
+%D We also need to register a few macros:
+
+\all@wcmd\initializeARABTEXalternative % no argument, internal command
+\all@wcmd\tx % no argument, small font
+\all@wcmd\txx % no argument, smaller font
+
+%D We also hook it into the presetter.
+
+\appendtoks
+ \let\normaltx \tx \def\tx {\normaltx \setarabicfont\fontstylesuffix}%
+ \let\normaltxx\txx\def\txx{\normaltxx\setarabicfont\fontstylesuffix}%
+\to \everyARABTEXpreset
+
+%D The main definitions are:
+
+\definefontsynonym [ArabicRegular] [xnsh14]
+\definefontsynonym [ArabicBold] [xnsh14bf]
+
+\defineARABTEXalternative
+ [arabic]
+ [\c!inner=\setarab,
+ \c!style=\setarabicfont\fontstylesuffix]
+
+\defineARABTEXalternative
+ [farsi]
+ [\c!inner=\setfarsi,
+ \c!style=\setarabicfont\fontstylesuffix]
+
+\defineARABTEXalternative
+ [urdu]
+ [\c!inner=\seturdu,
+ \c!style=\setarabicfont\fontstylesuffix]
+
+\defineARABTEXalternative
+ [maghribi]
+ [\c!inner=\setmaghribi,
+ \c!style=\setarabicfont\fontstylesuffix]
+
+%D Apart from such definitions, one can adapt the settings
+%D using \type {\setupARABTEXalternative}.
+%D
+%D A few years ago at the Holland Festivities, I attended {\em
+%D The Cave}, one of the most impressive combinations of music
+%D and video I know. This composition of Steve Reich (music)
+%D and .. (video) concentrates on the common grounds of arabs
+%D and jews: their ancestor Abram. Listening to the \CDROM's
+%D of {\em The Cave}, provided me the right ambiance for
+%D filling in the details of this module. In {\em The Cave},
+%D interviews, music, and |<|believe it or not|>| rhythmic
+%D typography are the cornerstones. Remembering those big
+%D screens, it strikes me that like music, \TEX\ too is a
+%D perfect instrument to cross cultural and linguistic
+%D borders. So, let's load Hebrew support as well:
+
+% \unexpanded\def\sethebrewfont#1% strange font dimensions / scale
+% {\scratchdimen=10\bodyfontsize
+% \font\hebfont=\truefontname{Hebrew#1} at \currentfontscale\scratchdimen
+% \fontdimen5\hebfont=.8\fontdimen2\hebfont
+% \fontdimen6\hebfont=3\fontdimen5\hebfont
+% \hebfont}
+
+\unexpanded\def\sethebrewfont#1%
+ {\setx@skels
+ \newfonttrue
+ \definedfont[Hebrew#1 sa \ARABTEXparameter\s!rscale]}
+
+% \let \setheb \sethebrew
+
+\unexpanded\def\pheb {\sethebrewfont\s!Regular}
+\unexpanded\def\phebbf{\sethebrewfont\s!Bold}
+
+% \startloadingARABTEX
+
+% \ReadFile{hebtex.sty}
+% \ReadFile{apatch.sty}
+% \ReadFile{hepatch.sty}
+
+% \stoploadingARABTEX
+
+\definefontsynonym [HebrewRegular] [hclassic]
+\definefontsynonym [HebrewBold] [hcaption]
+
+\defineARABTEXalternative
+ [hebrew]
+ [\c!inner=\sethebrew,
+ \c!style=\sethebrewfont\fontstylesuffix]
+
+%D Now we're done:
+
+\protect \endinput
+
+% everyoutput : \charsubdefmax \arab@charsubdefmax
+
+% \defineconversion [abjad] [\abj@d]
+%
+% voetnoten verbatim lijsten indexen tabellen uitlijnen
+%
+% \v!hoofdstuk=al-fa.slu
+% \v!inhoud=al-mu.htawayAtu
+% \v!figuren=qA'imaTu al-.suwaru
+% \v!tabellen=qA'imaTu al-^gadAwilu
+% \v!grafieken=qA'imaTu al-rusUmu
+% \v!index=al-fihrisu
+% \v!bijlage=al-mul.haqu
+
+% \usemodule[arabtex]
+%
+% \usetypescript[postscript] \switchtotypeface[postscript]
+%
+% \setarab \novocalize
+%
+% \starttext
+%
+% \placecontent
+%
+% \section{\<mu.hammad>} % short arabic use \< .. >
+% \section{\<mu.hammad>} % short arabic use \< .. >
+%
+% \startarabic
+% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm
+%
+% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm
+% \stoparabic
+%
+% \section{\<al-maq.sad>}
+%
+% \startarabic
+% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm
+% \stoparabic
+%
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-chart.tex b/Master/texmf-dist/tex/context/base/m-chart.tex
new file mode 100644
index 00000000000..cc9114ff654
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-chart.tex
@@ -0,0 +1,1334 @@
+%D \module
+%D [ file=m-chart,
+%D version=1998.10.10,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Flow Charts,
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% to do: \localpushmacro/\localpopmacro (dohandleflowchart etc)
+
+% will be redone with layers
+
+%D This is an experimental module. Pieces of code will be moved
+%D to other modules. More features are possible but will be
+%D interfaces later.
+%D
+%D When finished this module will be documented. The main macro
+%D is still a rather big one and there is some redundant and
+%D slow code that needs a clean up.
+
+% arrow, dash
+% crossing
+% \goto -> \normalgoto
+% class -> class:name (ref prefix)
+% c, automatisch geen overlap zoeken
+% eind eerder chart connecties
+% relateren aan korps
+% check op bestaan naam, bestaan shape
+% auto als extern figuur
+% subchart
+% pijlen
+% focus
+% ook nog \MPmessage
+% areapath -> krappe vlak
+% clippath -> gehele vlak
+%
+% offset : clip offset
+% breedte : breedte cel
+% hoogte : hoogte cel
+% dx : halve afstand in breedte (grid breedte = breedte + 2dx)
+% dy : halve afstand in hoogte (grid hoogte = hoogte + 2dy)
+% x : x offset (clipping)
+% y : y offset (clipping)
+% nx : minimaal aantal cellen horizontaal
+% ny : minimaal aantal cellen vertikaal
+%
+% shape none en geen equivalent maken
+%
+% kaderkleur achtergrondkleur
+% lijnkleur lijndikte
+% focus focuskaderkleur focusachtergrondkleur
+% richting
+%
+% focus koppelen aan kleur
+
+\unprotect
+
+\definesorting [flowchart] [flowcharts] [\v!none] % no access
+\setupsorting [flowchart] [\c!state=\v!stop] % off by default
+
+\def\@FLOW@{@FLOW@}
+\def\@FLOC@{@FLOC@}
+\def\@FLOX@{@FLOX@}
+
+\def\@@FLOW{@@FLOW}
+\def\@@FLOL{@@FLOL}
+\def\@@FLOS{@@FLOS}
+\def\@@FLOF{@@FLOF}
+\def\@@FLOT{@@FLOT}
+\def\@@FLOX{@@FLOX}
+
+\def\@@MPx {@@MPx}
+\def\@@MPy {@@MPy}
+
+\def\FLOWbufferprefix{flw-}
+
+\def\processFLOWbuffer#1{\getbuffer[\FLOWbufferprefix#1]}
+\def\typeFLOWbuffer #1{\typebuffer[\FLOWbufferprefix#1]}
+
+\def\setFLOWname#1#2% funny hack that makes sure that we get
+ {\bgroup % names that are acceptable for METAPOST
+ \lccode`0=`a\lccode`1=`b\lccode`2=`c\lccode`3=`d\lccode`4=`e%
+ \lccode`5=`f\lccode`6=`g\lccode`7=`h\lccode`8=`i\lccode`9=`j%
+ \lccode` =`\_\lccode`-=`\_\lccode`_=`\_%
+ \lowercase{\gdef#1{#2}}%
+ \egroup}
+
+% een gobble als default is sneller, en dan alleen setten als
+% nodig
+
+\def\resetFLOWcell
+ {% variables
+ \global\let\FLOWname \empty
+ \global\let\FLOWalign \empty
+ \global\let\FLOWshape \empty
+ \global\let\FLOWlocation \empty
+ \global\let\FLOWtext \empty
+ \global\let\FLOWhelp \empty
+ \global\let\FLOWdestination\empty
+ \global\let\FLOWoverlay \empty
+ \global\let\FLOWfocus \empty
+ \global\let\tFLOWlabel \empty
+ \global\let\bFLOWlabel \empty
+ \global\let\lFLOWlabel \empty
+ \global\let\rFLOWlabel \empty
+ \global\let\bcFLOWlabel \empty
+ \global\let\tcFLOWlabel \empty
+ \global\let\lcFLOWlabel \empty
+ \global\let\rcFLOWlabel \empty
+ \global\let\tFLOWexit \empty
+ \global\let\bFLOWexit \empty
+ \global\let\lFLOWexit \empty
+ \global\let\rFLOWexit \empty
+ % commands
+ \let\name \doFLOWname
+ \let\shape \doFLOWshape
+ \let\destination\doFLOWdestination
+ \let\location \doFLOWlocation
+ \let\focus \doFLOWfocus
+ \let\overlay \doFLOWoverlay
+ \let\figure \doFLOWfigure
+ \let\text \doFLOWtext
+ \let\comment \doFLOWcomment
+ \let\label \doFLOWlabel
+ \let\help \doFLOWhelp
+ \let\connection \doFLOWconnection
+ \let\exit \doFLOWexit
+ % convenience commands
+ \let\locate \doFLOWlocate
+ \let\connect \doFLOWconnect}
+
+\let\FLOWcell \s!unknown
+\let\FLOWshape \s!unknown
+\let\FLOWdestination\s!unknown
+\let\FLOWfocus \s!unknown
+\let\FLOWoverlay \empty
+\let\FLOWtext \empty
+
+\def\doFLOWname#1%
+ {\def\FLOWcell{#1}\setFLOWname\FLOWname{name_#1}\ignorespaces}
+
+\def\doFLOWshape#1%
+ {\gdef\FLOWshape{#1}\ignorespaces}
+
+\def\doFLOWdestination#1%
+ {\gdef\FLOWdestination{#1}\ignorespaces}
+
+\def\doFLOWlocation#1%
+ {\setFLOWlocation#1\end\ignorespaces}
+
+\def\doFLOWfocus#1%
+ {\gdef\FLOWfocus{#1}\ignorespaces}
+
+\def\doFLOWoverlay#1%
+ {\gdef\FLOWoverlay{#1}\ignorespaces}
+
+\def\doFLOWfigure#1%
+ {\defineoverlay[\s!dummy][\overlayfigure{#1}]%
+ \overlay\s!dummy}
+
+\def\doFLOWtext
+ {\dosingleempty\dodoFLOWtext}
+
+\def\dodoFLOWtext[#1]% % #2%
+ {\gdef\FLOWalign{#1}\gdef\FLOWtext}% {#2}}
+
+\def\doFLOWcomment[#1]#2%
+ {\ignorespaces\dogobblesingleempty}
+
+\def\doFLOWlabel[#1]#2% wordt dit gebruikt ?
+ {\setgvalue{#1FLOWlabel}{#2}\ignorespaces}
+
+\def\doFLOWhelp#1%
+ {\gdef\FLOWhelp{#1}\ignorespaces}
+
+\def\doFLOWconnection
+ {\dodoubleempty\dodoFLOWconnection}
+
+\def\dodoFLOWconnection[#1][#2]#3%
+ {\ignorespaces}
+
+\def\doFLOWconnect%
+ {\connection}
+
+\def\doFLOWlocate%
+ {\location}
+
+\def\doFLOWexit[#1]#2%
+ {\setgvalue{#1FLOWexit}{#2}\ignorespaces}
+
+\def\startFLOWchart
+ {\bgroup
+ \let\stopFLOWchart\egroup
+ \obeylines % lelijk, buffers nog eens fatsoeneren
+ \dodoubleempty\dostartFLOWchart}
+
+\def\dostartFLOWchart[#1][#2]%
+ {\preparenextFLOWchart{#1}{#2}%
+ \dostartbuffer[\FLOWbufferprefix\nofFLOWcharts][startFLOWchart][stopFLOWchart]}
+
+\def\defineFLOWchart%
+ {\dodoubleempty\dodefineFLOWchart}
+
+\long\def\dodefineFLOWchart[#1][#2]#3%
+ {\preparenextFLOWchart{#1}{#2}%
+ \setbuffer[\FLOWbufferprefix\nofFLOWcharts]#3\endbuffer}
+
+\def\preparenextFLOWchart#1#2%
+ {\doglobal\increment\nofFLOWcharts
+ \flowchart{#1}%
+ \setxvalue{\@FLOW@-#1}{\noexpand\dohandleflowchart[\nofFLOWcharts][#2]}}
+
+\def\setupFLOWcharts{\dodoubleargument\getparameters[\@@FLOW]}
+\def\setupFLOWlines {\dodoubleargument\getparameters[\@@FLOL]}
+\def\setupFLOWshapes{\dodoubleargument\getparameters[\@@FLOS]}
+\def\setupFLOWfocus {\dodoubleargument\getparameters[\@@FLOF]}
+\def\setupFLOWsets {\dodoubleargument\getparameters[\@@FLOX]}
+
+\setupFLOWcharts
+ [\c!option=,
+ \c!bodyfont=,
+ \c!dot=, % private option
+ \c!width=12\bodyfontsize,
+ \c!height=7\bodyfontsize,
+ \c!maxwidth=,
+ \c!maxheight=,
+ \c!offset=\v!standard, % == auto offset
+ \c!dx=2\bodyfontsize,
+ \c!dy=2\bodyfontsize,
+ \c!nx=0, % 1,
+ \c!ny=0, % 1,
+ \c!x=1,
+ \c!y=1,
+ \c!autofocus=,
+ \c!focus=,
+ \c!background=, % \v!color,
+ \c!backgroundcolor=\s!white,
+ \c!rulethickness=\linewidth,
+ \c!frame=\v!off,
+ \c!framecolor=]
+
+\setupFLOWlines
+ [\c!corner=\v!round,
+ \c!arrow=\v!yes,
+ \c!dash=\v!no,
+ \c!radius=.375\bodyfontsize, % 2.5\c!rulethickness
+ \c!color=FLOWlinecolor,
+ \c!rulethickness=.15\bodyfontsize, % 2pt,
+ \c!offset=\v!none]
+
+\setupFLOWshapes
+ [\c!default=action,
+ \c!framecolor=FLOWframecolor,
+ \c!background=\v!color,
+ \c!backgroundcolor=FLOWbackgroundcolor,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!rulethickness=.15\bodyfontsize, % 2pt,
+ \c!offset=.5\bodyfontsize]
+
+\setupFLOWfocus
+ [\c!framecolor=FLOWfocuscolor,
+ \c!background=\@@FLOSbackground,
+ \c!backgroundcolor=\@@FLOSbackgroundcolor,
+ \c!backgroundscreen=\@@FLOSbackgroundscreen,
+ \c!rulethickness=\@@FLOSrulethickness,
+ \c!offset=\@@FLOSoffset]
+
+\definecolor [FLOWfocuscolor] [s=.2]
+\definecolor [FLOWlinecolor] [s=.5]
+\definecolor [FLOWframecolor] [s=.7]
+\definecolor [FLOWbackgroundcolor] [s=.9]
+
+\newcounter\includeFLOWx
+\newcounter\includeFLOWy
+
+\def\includeFLOWchart
+ {\dodoubleempty\doincludeFLOWchart}
+
+\def\doincludeFLOWchart[#1][#2]%
+ {\pushmacro\includeFLOWx
+ \pushmacro\includeFLOWy
+ \getparameters[FLOWi][x=1,y=1,#2]%
+ \increment(\includeFLOWx,0\FLOWix)\decrement\includeFLOWx
+ \increment(\includeFLOWy,0\FLOWiy)\decrement\includeFLOWy
+ \def\dodoincludeFLOWchart##1%
+ {\doifdefined{\@FLOW@-##1}
+ {\globalpushmacro\dohandleflowchart % was local
+ \gdef\dohandleflowchart[####1][####2]%
+ {\globalpopmacro\dohandleflowchart % was local
+ \resetFLOWlocation
+ \processFLOWbuffer{####1}}%
+ \getvalue{\@FLOW@-##1}}}%
+ \processcommalist[#1]\dodoincludeFLOWchart
+ \popmacro\includeFLOWx
+ \popmacro\includeFLOWy}
+
+%\def\setFLOWlocation#1,#2\end%
+% {\scratchcounter=0#1\advance\scratchcounter\includeFLOWx
+% \xdef\FLOWlocation{\the\scratchcounter}%
+% \scratchcounter=0#2\advance\scratchcounter\includeFLOWy
+% \xdef\FLOWlocation{\FLOWlocation,\the\scratchcounter}}
+
+\def\resetFLOWlocation
+ {\gdef\lastFLOWx{0}%
+ \gdef\lastFLOWy{0}}
+
+\def\dosetFLOWlocation[#1#2]#3#4%
+ {\processaction
+ [#1#2]
+ [ +=>\scratchcounter=#4\advance\scratchcounter+1,
+ -=>\scratchcounter=#4\advance\scratchcounter-1,
+ +#2=>\scratchcounter=#4\advance\scratchcounter+#2,
+ -#2=>\scratchcounter=#4\advance\scratchcounter-#2,
+ \s!default=>\scratchcounter=#4,
+ \s!unknown=>\scratchcounter=0#1#2]%
+ \advance\scratchcounter#3%
+ \xdef#4{\the\scratchcounter}}
+
+\def\setFLOWlocation#1,#2\end
+ {\dosetFLOWlocation[#1\empty]\includeFLOWx\lastFLOWx
+ \dosetFLOWlocation[#2\empty]\includeFLOWy\lastFLOWy
+ \xdef\FLOWlocation{\lastFLOWx,\lastFLOWy}}
+
+\def\FLOWshapes
+ {node, action, procedure, product, decision, archive,
+ loop, wait, subprocedure, singledocument, multidocument,
+ sub procedure, single document, multi document, up, down,
+ left, right}
+
+\def\FLOWlines
+ {up, down, left, right}
+
+\def\FLOWsetconnect#1%
+ {\donefalse
+ \let\cFLOWfrom\empty
+ \let\cFLOWto\empty
+ \def\zFLOWfrom{0}%
+ \def\zFLOWto{0}%
+ \handletokens#1\with\doFLOWsetconnect
+ \ifx\cFLOWto\empty\let\cFLOWfrom\empty\fi}
+
+\def\doFLOWsetconnect#1%
+ {\ifx #1p%
+ \ifdone\def\zFLOWto{+1}\else\def\zFLOWfrom{+1}\fi
+ \else\ifx#1+%
+ \ifdone\def\zFLOWto{+1}\else\def\zFLOWfrom{+1}\fi
+ \else\ifx#1n%
+ \ifdone\def\zFLOWto{-1}\else\def\zFLOWfrom{-1}\fi
+ \else\ifx#1-%
+ \ifdone\def\zFLOWto{-1}\else\def\zFLOWfrom{-1}\fi
+ \else\ifdone
+ \edef\cFLOWto{\FLOWconnector#1}%
+ \else
+ \edef\cFLOWfrom{\FLOWconnector#1}%
+ \donetrue
+ \fi\fi\fi\fi\fi}
+
+\def\FLOWconnector#1%
+ {\if#1bbottom\else\if#1ttop\else\if#1lleft\else\if#1rright\fi\fi\fi\fi}
+
+\newif\ifFLOWscaling \FLOWscalingtrue
+
+\def\@@FLOW@@offset{\@@FLOWoffset}
+
+\def\getFLOWchart
+ {\dodoubleempty\dogetFLOWchart}
+
+\def\dogetFLOWchart[#1][#2]%
+ {\doifundefinedelse{\@FLOW@-#1}
+ {\writestatus{FLOW}{unknown chart #1}%
+ \framed
+ [\c!width=12\bodyfontsize,\c!height=8\bodyfontsize]
+ {\tttf [chart #1]}}
+ {\dodogetFLOWchart[#1][#2]}}
+
+\def\dodogetFLOWchart[#1][#2]% to be split a bit more
+ {\vbox\bgroup
+ \insidefloattrue
+ \forgetall
+ \dontcomplain
+ % \offinterlineskip % we now explicitly use \nointerlineskip later on
+ \def\dohandleflowchart[##1][##2]%
+ {\def\currentFLOWnumber{##1}%
+ \getparameters[\@@FLOW][##2]}%
+ \getvalue{\@FLOW@-#1}%
+ \getparameters[\@@FLOW][#2]% dubbelop ?
+ \doifsomething{\@@FLOWautofocus}
+ {\checkFLOWautofocus}%
+ %\message{AUTOSHAPE 3: (\@@FLOWx,\@@FLOWy)->(\@@FLOWnx,\@@FLOWny)}\wait
+ \global\let\FLOWwidth \@@FLOWnx
+ \global\let\FLOWheight\@@FLOWny
+ \let\startFLOWcell\startFLOWcellA
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber
+ \ifcase\@@FLOWnx\relax \let\@@FLOWnx\FLOWwidth \fi
+ \ifcase\@@FLOWny\relax \let\@@FLOWny\FLOWheight \fi
+ \doifnothing{\@@FLOWmaxwidth\@@FLOWmaxheight}{\FLOWscalingfalse}%
+ \ifFLOWscaling
+ \doifnothing{\@@FLOWmaxwidth }{\let\@@FLOWmaxwidth \maxdimen}%
+ \doifnothing{\@@FLOWmaxheight}{\let\@@FLOWmaxheight\maxdimen}%
+ \scratchcounter=\bodyfontpoints
+ \doloop % NOG FONTSWITCH OM EX EN EM TE LATEN WERKEN
+ {\ifnum\scratchcounter>1 % NU DIMENSIONS IN TERMS OF BODYFONTSIZE
+ \bodyfontsize=\the\scratchcounter pt
+ \dimen0=\@@FLOWmaxwidth
+ \dimen2=\@@FLOWwidth
+ \dimen4=\@@FLOWdx
+ \advance\dimen2 2\dimen4
+ \dimen2=\@@FLOWnx\dimen2
+ \advance\dimen2 2\dimen4
+ \ifdim\dimen2>\dimen0
+ \advance\scratchcounter \minusone
+ \else
+ \dimen0=\@@FLOWmaxheight
+ \dimen2=\@@FLOWheight
+ \dimen4=\@@FLOWdy
+ \advance\dimen2 2\dimen4
+ \dimen2=\@@FLOWny\dimen2
+ \advance\dimen2 2\dimen4
+ \ifdim\dimen2>\dimen0
+ \advance\scratchcounter \minusone
+ \else
+ \exitloop
+ \fi
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \expanded{\switchtobodyfont[\the\scratchcounter pt]}%
+ \forgetall
+ % \offinterlineskip % needed ?
+ \else\ifx\@@FLOWbodyfont\empty\else
+ \expanded{\switchtobodyfont[\@@FLOWbodyfont]}% \expanded ?
+ \fi\fi
+ \global\let\FLOWcells\empty
+ \dimen0=\@@FLOWwidth
+ \edef\FLOWshapewidth{\the\dimen0}%
+ \dimen2=\@@FLOWdx
+ \advance\dimen0 2\dimen2
+ \edef\FLOWgridwidth{\the\dimen0}%
+ \dimen0=\@@FLOWheight
+ \edef\FLOWshapeheight{\the\dimen0}%
+ \dimen2=\@@FLOWdy
+ \advance\dimen0 2\dimen2
+ \edef\FLOWgridheight{\the\dimen0}%
+ \scratchdimen=\@@FLOSrulethickness
+ \edef\@@FLOSrulethickness{\the\scratchdimen}%
+ \scratchdimen=\@@FLOFrulethickness
+ \edef\@@FLOFrulethickness{\the\scratchdimen}%
+ \scratchdimen=\@@FLOLrulethickness
+ \edef\@@FLOLrulethickness{\the\scratchdimen}%
+ \ifdim\@@FLOLradius<2.5\scratchdimen
+ \scratchdimen=2.5\scratchdimen
+ \edef\@@FLOLradius{\the\scratchdimen}%
+ \ifdim\@@FLOLradius>\@@FLOWdx
+ \scratchdimen=\@@FLOWdx
+ \edef\@@FLOLradius{\the\scratchdimen}%
+ \fi
+ \ifdim\@@FLOLradius>\@@FLOWdy
+ \scratchdimen=\@@FLOWdy
+ \edef\@@FLOLradius{\the\scratchdimen}%
+ \fi
+ \else
+ \scratchdimen=\@@FLOLradius
+ \edef\@@FLOLradius{\the\scratchdimen}%
+ \fi
+ \processaction % magic 2.5
+ [\@@FLOWoffset]
+ [ \v!none=>\scratchdimen=-2.5\scratchdimen,
+ \v!overlay=>\scratchdimen=-2.5\scratchdimen,
+ \v!standard=>\scratchdimen=\scratchdimen,
+ \s!unknown=>\scratchdimen=\@@FLOWoffset,
+ \s!default=>\scratchdimen=-2.5\scratchdimen]%
+ \edef\@@FLOW@@offset{\the\scratchdimen}%
+ \forgetall
+ \offinterlineskip
+ \resetMPdrawing
+ \doglobal\newcounter\FLOWcomment
+ \startMPdrawing
+ if unknown context_char : input mp-char.mp ; fi ;
+ grid_width := \FLOWgridwidth ;
+ grid_height := \FLOWgridheight ;
+ shape_width := \FLOWshapewidth ;
+ shape_height := \FLOWshapeheight ;
+ connection_line_width := \@@FLOLrulethickness ;
+ connection_smooth_size := \@@FLOLradius ;
+ connection_arrow_size := \@@FLOLradius ;
+ connection_dash_size := \@@FLOLradius ;
+% \stopMPdrawing
+% \def\getFLOWlocationX##1,##2\end%
+% {\ifnum0##1>\FLOWwidth \xdef\FLOWwidth {##1}\fi
+% \ifnum0##2>\FLOWheight\xdef\FLOWheight{##2}\fi}%
+% \long\def\startFLOWcellX##1\stopFLOWcell%
+% {\resetFLOWcell
+% \ignorespaces##1\unskip
+% \expandafter\getFLOWlocationX\FLOWlocation\end
+% \ignorespaces}%
+% \let\startFLOWcell\startFLOWcellX
+% \resetFLOWlocation
+% \processFLOWbuffer\currentFLOWnumber
+% \ifnum\@@FLOWnx\@@FLOWny=11 % listig
+% \let\@@FLOWnx\FLOWwidth
+% \let\@@FLOWny\FLOWheight
+% \fi
+% \startMPdrawing
+ begin_chart(0,\FLOWwidth,\FLOWheight);
+ reverse_y := true ;
+ chart_offset := \@@FLOW@@offset ;
+ \stopMPdrawing
+ \doifelsenothing\@@FLOWbackgroundcolor
+ {\startMPdrawing
+ chart_background_color := white ;
+ \stopMPdrawing}
+ {\startMPdrawing
+ chart_background_color := \MPcolor{\@@FLOWbackgroundcolor} ;
+ \stopMPdrawing}%
+ \doif\@@FLOWoption\v!test
+ {\startMPdrawing
+ show_con_points := true ;
+ show_mid_points := true ;
+ show_all_points := true ;
+ \stopMPdrawing}%
+ \processaction % private
+ [\@@FLOWdot]
+ [ \v!yes=>\startMPdrawing
+ show_con_points := true ;
+ show_mid_points := true ;
+ show_all_points := true ;
+ \stopMPdrawing,
+ \s!unknown=>\startMPdrawing
+ show_\@@FLOWdot_points := true ;
+ \stopMPdrawing]%
+\doglobal\newcounter\FLOWcomment
+ \let\startFLOWcell\startFLOWcellB
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber
+\doglobal\newcounter\FLOWcomment
+ \let\startFLOWcell\startFLOWcellC
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber
+ \startMPdrawing
+ clip_chart(\@@FLOWx,\@@FLOWy,\@@FLOWnx,\@@FLOWny) ;
+ end_chart ;
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \setbox0\hbox
+ {\MPstaticgraphictrue
+ \MPshiftdrawingfalse
+ \getMPdrawing}%
+ \def\MPmessage##1%
+ {\writestatus{MP charts}{##1}}%
+ \def\MPposition##1##2##3%
+ {\setvalue{\@@MPx##1}{##2}\setvalue{\@@MPy##1}{##3}}%
+ \def\MPclippath##1##2##3##4%
+ {\def\clipMPllx{##1bp}\def\clipMPlly{##2bp}%
+ \def\clipMPurx{##3bp}\def\clipMPury{##4bp}}%
+ \def\MPareapath##1##2##3##4%
+ {\def\areaMPllx{##1bp}\def\areaMPlly{##2bp}%
+ \def\areaMPurx{##3bp}\def\areaMPury{##4bp}}%
+ \getMPdata
+ \doglobal\newcounter\FLOWcomment
+ \let\startFLOWcell\startFLOWcellD
+ \setbox2\vbox to \ht0
+ {\forgetall % \offinterlineskip
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber\vss}%
+ \setbox2\hbox
+ {\hskip\@@FLOW@@offset\lower\@@FLOW@@offset\box2}%
+ \wd2\wd0\ht2\ht0\dp2\dp0
+ \let\startFLOWcell\startFLOWcellE
+ \setbox4\vbox to \ht0
+ {\forgetall % \offinterlineskip
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber\vss}%
+ \setbox4\hbox
+ {\hskip\@@FLOW@@offset\lower\@@FLOW@@offset\box4}%
+ \wd4\wd0\ht4\ht0\dp4\dp0
+ \doifelse\@@FLOWoption\v!test
+ {\setbox6\vbox
+ {\forgetall
+ \vskip\@@FLOW@@offset
+ \hskip\@@FLOW@@offset
+ \basegrid
+ [\c!x=\@@FLOWx,\c!nx=\@@FLOWnx,\c!dx=\withoutpt\FLOWgridwidth,
+ \c!y=\@@FLOWy,\c!ny=\@@FLOWny,\c!dy=\withoutpt\FLOWgridheight,
+ \c!xstep=1,\c!ystep=1,
+ \c!unit=pt,\c!location=\v!middle]}%
+ \wd6\wd0\ht6\ht0\dp6\dp0
+ \setbox8\vbox
+ {\forgetall
+ \offinterlineskip
+ \vskip\@@FLOW@@offset
+ \dostepwiserecurse\@@FLOWy\@@FLOWny\plusone
+ {\vbox to \FLOWgridheight
+ {\vfill
+ \hskip\@@FLOW@@offset
+ \hbox
+ {\dostepwiserecurse\@@FLOWx\@@FLOWnx\plusone
+ {\hbox to \FLOWgridwidth
+ {\hfill
+ \framed
+ [\c!framecolor=red,
+ \c!width=\FLOWshapewidth,
+ \c!height=\FLOWshapeheight]
+ {}%
+ \hfill}}}
+ \vfill}}}%
+ \wd8\wd0\ht8\ht0\dp8\dp0
+ \framed
+ [\c!offset=\v!overlay,\c!framecolor=green]
+ {\hbox{\box4\hskip-\wd0\box0\hskip-\wd2\box2\hskip-\wd6\box6\hskip-\wd8\box8}}}
+ {\framed
+ [\c!offset=\v!overlay,
+ \c!frame=\@@FLOWframe,
+ \c!rulethickness=\@@FLOWrulethickness,
+ \c!framecolor=\@@FLOWframecolor,
+ \c!background=\@@FLOWbackground,
+ \c!backgroundcolor=\@@FLOWbackgroundcolor]
+ {\hbox{\box4\hskip-\wd0\box0\hskip-\wd2\box2}}}%
+ %\message{[\FLOWcells]}\wait
+ \egroup}
+
+% Pass A
+
+\long\def\startFLOWcellA#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \expandafter\getFLOWlocationA\FLOWlocation\end
+ \ignorespaces}
+
+\def\getFLOWlocationA#1,#2\end
+ {\ifnum0#1>\FLOWwidth \xdef\FLOWwidth {#1}\fi
+ \ifnum0#2>\FLOWheight\xdef\FLOWheight{#2}\fi}
+
+% Pass B
+%
+% beware: the - after \@FLOC@ is needed since name can be
+% empty and we don't want to redefine \@FLOC@ itself by
+% mistake
+
+\long\def\startFLOWcellB#1\stopFLOWcell
+ {\resetFLOWcell\ignorespaces#1\unskip
+ \setxvalue{\@FLOC@-\FLOWname}{\FLOWlocation}% kost veel cs's
+ \ifx\FLOWshape\empty
+ \global\let\FLOWshape\@@FLOSdefault
+ \fi
+ \doifnot\FLOWshape{none} % {\v!none}
+ {\ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWshapes}
+ {\edef\FLOWshapetag{shape_\FLOWshape}% beter \expanded
+ \@EA\setFLOWname\@EA\FLOWshapetag\@EA{\FLOWshapetag}}
+ {\doifnumberelse\FLOWshape
+ {\let\FLOWshapetag\FLOWshape}
+ {\let\FLOWshapetag\empty}}%
+ \ifx\FLOWshapetag\empty \else
+ \ExpandBothAfter\doifinsetelse{\FLOWshape}{\FLOWlines}
+ {\chardef\FLOWstate0 }
+ {\ExpandBothAfter\doifcommonelse{\FLOWcell,\FLOWfocus}{\@@FLOWfocus}
+ {\chardef\FLOWstate1 }
+ {\chardef\FLOWstate2 }}%
+ \startMPdrawing
+ begin_sub_chart ;
+ \ifcase\FLOWstate
+ shape_line_color := \MPcolor{\@@FLOLcolor} ;
+ shape_fill_color := \MPcolor{\@@FLOLcolor} ;
+ shape_line_width := \@@FLOLrulethickness ;
+ \or
+ shape_line_color := \MPcolor{\@@FLOFframecolor} ;
+ shape_fill_color := \MPcolor{\@@FLOFbackgroundcolor} ;
+ shape_line_width := \@@FLOFrulethickness ;
+ \or
+ shape_line_color := \MPcolor{\@@FLOSframecolor} ;
+ shape_fill_color := \MPcolor{\@@FLOSbackgroundcolor} ;
+ shape_line_width := \@@FLOSrulethickness ;
+ \fi
+ %\ifx\FLOWoverlay\empty
+ % peepshape := false ;
+ %\else
+ % peepshape := true ;
+ %\fi
+ peepshape := \ifx\FLOWoverlay\empty false \else true \fi ;
+ new_shape(\FLOWlocation,\FLOWshapetag) ;
+ end_sub_chart ;
+ \stopMPdrawing
+ \fi}%
+ \ignorespaces}
+
+% Pass C
+
+\long\def\startFLOWcellC#1\stopFLOWcell%
+ {\resetFLOWcell
+\pushmacro\lastFLOWx
+\pushmacro\lastFLOWy
+ \ignorespaces#1\unskip % makes sure that vars are set
+\popmacro\lastFLOWy
+\popmacro\lastFLOWx
+ \let\connection\doFLOWconnectionC
+ \ignorespaces#1\unskip}
+
+\def\FLOWorigin{0,0}
+
+\def\doFLOWdisplace[#1,#2,#3]% experiment
+ {dsp_x := #1 ; dsp_y := #2 ;}
+
+\def\doFLOWconnectionC
+ {\dodoubleempty\dodoFLOWconnectionC}
+
+\def\dodoFLOWconnectionC[#1][#2]#3%
+ {\doglobal\increment\FLOWcomment
+ \setFLOWname\otherFLOWname{name_#3}%
+ \doifdefinedelse{\@FLOC@-\FLOWname}
+ {\edef\FLOWfrom{\getvalue{\@FLOC@-\FLOWname}}}
+ {\let \FLOWfrom \FLOWorigin}%
+ \ifx\FLOWfrom\FLOWorigin \else
+ \doifdefinedelse{\@FLOC@-\otherFLOWname}
+ {\edef\FLOWto {\getvalue{\@FLOC@-\otherFLOWname}}}
+ {\let \FLOWto \FLOWorigin}%
+ \ifx\FLOWto\FLOWorigin \else
+ \FLOWsetconnect{#1}%
+ \ifx\cFLOWfrom\empty \else
+ \doifelse\@@FLOLcorner\v!round
+ {\startMPdrawing smooth := true ; \stopMPdrawing}
+ {\startMPdrawing smooth := false ; \stopMPdrawing}%
+ \doifelse\@@FLOLdash\v!yes
+ {\startMPdrawing dashline := true ; \stopMPdrawing}
+ {\startMPdrawing dashline := false ; \stopMPdrawing}%
+ \doifelse\@@FLOLarrow\v!yes
+ {\startMPdrawing arrowtip := true ; \stopMPdrawing}
+ {\startMPdrawing arrowtip := false ; \stopMPdrawing}%
+ \doifelse\@@FLOLoffset\v!none
+ {\startMPdrawing touchshape := true ; \stopMPdrawing}
+ {\startMPdrawing touchshape := false ; \stopMPdrawing}%
+%\doifsomething{#2}
+% {\startMPdrawing
+% \doFLOWdisplace[0#2,0,0]%
+% \stopMPdrawing}%
+ \startMPdrawing
+\doFLOWdisplace[0#2,0,0]%
+ connection_line_color := \MPcolor{\@@FLOLcolor} ;
+ connection_line_width := \@@FLOLrulethickness ;
+ connect_\cFLOWfrom_\cFLOWto (\FLOWfrom,\zFLOWfrom) (\FLOWto,\zFLOWto) ;
+\doFLOWdisplace[0,0,0]%
+ \stopMPdrawing
+ \fi
+ \fi
+ \fi
+ \ignorespaces}
+
+% Pass D
+
+\long\def\startFLOWcellD#1\stopFLOWcell
+ {\resetFLOWcell
+\pushmacro\lastFLOWx
+\pushmacro\lastFLOWy
+ \ignorespaces#1\unskip % presets vars
+\popmacro\lastFLOWy
+\popmacro\lastFLOWx
+ \let\doprocessFLOWcell\doprocessFLOWcellD
+ \expandafter\doprocessFLOWcellD\FLOWlocation\end
+ \let\connection\doFLOWconnectionD
+ \let\comment\doFLOWcommentD
+ \ignorespaces#1\unskip\ignorespaces}
+
+\def\doFLOWconnectionD
+ {\dodoubleempty\dodoFLOWconnectionD}
+
+\def\dodoFLOWconnectionD[#1][#2]#3%
+ {\doglobal\increment\FLOWcomment
+ \ignorespaces}
+
+\def\doFLOWcommentD[#1]#2%
+ {\bgroup
+ \let\FLOW \middlebox
+ \let\FLOWb \bottombox
+ \let\FLOWbl\bottomleftbox
+ \let\FLOWbr\bottomrightbox
+ \let\FLOWt \topbox
+ \let\FLOWtl\topleftbox
+ \let\FLOWtr\toprightbox
+ \let\FLOWl \leftbox
+ \let\FLOWlt\lefttopbox
+ \let\FLOWlb\leftbottombox
+ \let\FLOWr \rightbox
+ \let\FLOWrt\righttopbox
+ \let\FLOWrb\rightbottombox
+ \let\FLOWc \middlebox
+%\ifdefined{FLOW#1}%
+ \ifcase0\getvalue{\@@MPx\FLOWcomment}\getvalue{\@@MPy\FLOWcomment}\relax
+ \else
+ \ifdim\getvalue{\@@MPx\FLOWcomment}\s!bp<\areaMPllx\relax\else
+ \ifdim\getvalue{\@@MPx\FLOWcomment}\s!bp>\areaMPurx\relax\else
+ \ifdim\getvalue{\@@MPy\FLOWcomment}\s!bp<\areaMPlly\relax\else
+ \ifdim\getvalue{\@@MPy\FLOWcomment}\s!bp>\areaMPury\relax\else
+ \dimen0=\getvalue{\@@MPx\FLOWcomment}\s!bp
+ \advance\dimen0 -\@@FLOW@@offset
+ \advance\dimen0 -\clipMPllx
+ \dimen2=\clipMPury
+ \advance\dimen2 -\@@FLOW@@offset
+ \advance\dimen2 -\getvalue{\@@MPy\FLOWcomment}\s!bp
+ \setbox\scratchbox\hbox{\strut#2}%
+ \boxoffset.5\bodyfontsize
+ \setbox\scratchbox\hbox{\hskip\dimen0\lower\dimen2\getvalue{FLOW#1}{\box\scratchbox}}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \boxoffset\zeropoint
+ \nointerlineskip % really needed
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+%\fi
+ \egroup
+ \ignorespaces}
+
+% pass D
+
+\def\dophaseoneFLOWcellX#1#2%
+ {\!!counta#1\relax
+ \!!countb#2\relax
+ \!!countc\@@FLOWx
+ \!!countd\@@FLOWy
+ \advance\!!countc \@@FLOWnx
+ \advance\!!countd \@@FLOWny
+ \advance\!!countc \minusone
+ \advance\!!countd \minusone
+ \ifnum\!!counta<\@@FLOWx\relax \donefalse
+ \else\ifnum\!!counta>\!!countc \donefalse
+ \else\ifnum\!!countb<\@@FLOWy\relax \donefalse
+ \else\ifnum\!!countb>\!!countd \donefalse
+ \else \donetrue
+ \fi\fi\fi\fi}
+
+\def\dophasetwoFLOWcellX
+ {\advance\!!counta -\@@FLOWx
+ \advance\!!counta \plusone
+ \advance\!!countb -\@@FLOWy
+ \advance\!!countb \plusone
+ \dimen0=\FLOWgridwidth
+ \dimen0=\!!counta\dimen0
+ \advance\dimen0 -\FLOWgridwidth
+ \dimen4=\FLOWgridwidth
+ \advance\dimen4 -\FLOWshapewidth
+ \advance\dimen0 .5\dimen4
+ \dimen2=\FLOWgridheight
+ \dimen2=\!!countb\dimen2
+ \dimen4=\FLOWgridheight
+ \advance\dimen4 -\FLOWshapeheight
+ \advance\dimen2 -.5\dimen4
+ \edef\FLOWdx{\the\dimen0}%
+ \edef\FLOWdy{\the\dimen2}}
+
+\def\positionFLOWzero% assumes \FLOWdx and \FLOWdy are set
+ {\setbox0\hbox{\hskip\FLOWdx\lower\FLOWdy\box0}%
+ \smashbox0\box0
+ \nointerlineskip} % new, needed since we somehow reset that
+
+\def\doFLOWtlabel#1#2#3%
+ {\scratchdimen\ifcase#2 \zeropoint\else\@@FLOWdy\fi
+ \setbox0\hbox{\hskip\dimen2\raise\scratchdimen
+ \hbox{\raise\dimen4\hbox{#1{\strut#3}}}}%
+ \positionFLOWzero}%
+
+\def\doFLOWblabel#1#2#3%
+ {\scratchdimen\ifcase#2 \zeropoint\else\@@FLOWdy\fi
+ \setbox0\hbox{\hskip\dimen2\raise-\scratchdimen
+ \hbox{#1{\strut#3}}}%
+ \positionFLOWzero}%
+
+\def\doFLOWllabel#1#2#3%
+ {\scratchdimen\ifcase#2 \zeropoint\else\@@FLOWdx\fi
+ \setbox0\hbox{\hskip-\scratchdimen\raise\dimen6
+ \hbox{#1{\strut#3}}}%
+ \positionFLOWzero}%
+
+\def\doFLOWrlabel#1#2#3%
+ {\scratchdimen\ifcase#2 \zeropoint\else\@@FLOWdx\fi
+ \setbox0\hbox{\hskip\dimen0\hskip\scratchdimen
+ \hbox{\raise\dimen6\hbox{#1{\strut#3}}}}%
+ \positionFLOWzero}
+
+\def\doprocessFLOWcellD#1,#2\end
+ {\dophaseoneFLOWcellX{#1}{#2}%
+ \ifdone
+ \dophasetwoFLOWcellX
+ \doglobal\addtocommalist\FLOWcell\FLOWcells
+ \def\FLOWx{#1}%
+ \def\FLOWy{#2}%
+ \directsetup{flowcell}%
+ \setbox0\hbox
+ {\ifx\FLOWalign\empty\else
+ \setupframed
+ [\c!align=\v!normal,\c!bottom=\vfill,\c!top=\vfill]%
+ \@EA\processallactionsinset\@EA
+ [\FLOWalign]
+ [t=>{\setupframed[\c!bottom=\vfill,\c!top=]},
+ b=>{\setupframed[\c!bottom=,\c!top=\vfill]},
+ l=>{\setupframed[\c!align=\v!right]},
+ r=>{\setupframed[\c!align=\v!left]},
+ m=>{\setupframed[\c!align=\v!middle]},
+ c=>{\setupframed[\c!align=\v!middle]}]%
+ \fi
+ \doifelse\FLOWshape{none} % {\v!none}
+ {\setupframed[\c!offset=\v!overlay]}
+ {\setupframed[\c!offset=\@@FLOSoffset]}%
+ \framed
+ [\c!frame=\v!off,\c!background=flowcell,
+ \c!width=\FLOWshapewidth,\c!height=\FLOWshapeheight]
+ {\FLOWtext}}%
+ \showFLOWhelp0
+ \ifx\FLOWdestination\empty\else
+ \setbox0\hbox
+ {\setupinteraction[\c!color=,\c!contrastcolor=]%
+ \gotobox{\box0}[\FLOWdestination]}%
+ \fi
+ \positionFLOWzero
+ \dimen0=\FLOWshapewidth \dimen2=.5\dimen0
+ \dimen4=\FLOWshapeheight\dimen6=.5\dimen4
+ \boxoffset.5\bodyfontsize
+ \doFLOWtlabel \righttopbox0\tFLOWlabel
+ \doFLOWblabel\rightbottombox0\bFLOWlabel
+ \doFLOWllabel \lefttopbox0\lFLOWlabel
+ \doFLOWrlabel \righttopbox0\rFLOWlabel
+ \doFLOWtlabel \topbox0\tcFLOWlabel % for me only
+ \doFLOWblabel \bottombox0\bcFLOWlabel % for me only
+ \doFLOWllabel \leftbox0\lcFLOWlabel % for me only
+ \doFLOWrlabel \rightbox0\rcFLOWlabel % for me only
+ \ifnum#1=\@@FLOWx\relax \doFLOWllabel \leftbox1\lFLOWexit \fi
+ \ifnum#1=\!!countc \doFLOWrlabel \rightbox1\rFLOWexit \fi
+ \ifnum#2=\@@FLOWy\relax \doFLOWtlabel \topbox1\tFLOWexit \fi
+ \ifnum#2=\!!countd \doFLOWblabel \bottombox1\bFLOWexit \fi
+ \boxoffset\zeropoint
+ \fi}
+
+% For Willy Egger:
+%
+% \startsetups flowcell
+% \definelayer
+% [flowcell]
+% [width=\FLOWshapewidth,
+% height=\FLOWshapeheight]
+% \setlayerframed
+% [flowcell]
+% [preset=rightbottom,offset=1ex]
+% [frame=off]
+% {\tx(\FLOWx,\FLOWy)}
+% \stopsetups
+
+% Pass E
+
+\long\def\startFLOWcellE#1\stopFLOWcell
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \let\doprocessFLOWcell\doprocessFLOWcellE
+ \expandafter\doprocessFLOWcell\FLOWlocation\end}
+
+\def\doprocessFLOWcellE#1,#2\end % redundant
+ {\ifx\FLOWoverlay\empty \else
+ \dophaseoneFLOWcellX{#1}{#2}%
+ \ifdone
+ \dophasetwoFLOWcellX
+ \edef\FLOWdx{\the\dimen0}%
+ \edef\FLOWdy{\the\dimen2}%
+ \setbox0\hbox
+ {\framed
+ [%\c!frame=\v!off,
+ \c!background={\@@FLOWbackground,\FLOWoverlay},
+ \c!backgroundcolor=\@@FLOSbackgroundcolor,
+ \c!width=\FLOWshapewidth,\c!height=\FLOWshapeheight]
+ {}}%
+ \positionFLOWzero
+ \fi
+ \fi}
+
+% Pass F
+
+\def\checkFLOWautofocus
+ {\def\@@FLOWminx{100}\let\@@FLOWminy\@@FLOWminx
+ \def\@@FLOWmaxx {0}\let\@@FLOWmaxy\@@FLOWmaxx
+ \def\@@FLOWabsx {0}\let\@@FLOWabsy\@@FLOWabsx
+ \let\startFLOWcell\startFLOWcellF
+ \resetFLOWlocation
+ \processFLOWbuffer\currentFLOWnumber
+ %\message{AUTOSHAPE 1: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
+ \ifnum\@@FLOWabsx<\@@FLOWmaxx\let\@@FLOWmaxx\@@FLOWabsx\fi
+ \ifnum\@@FLOWabsy<\@@FLOWmaxy\let\@@FLOWmaxy\@@FLOWabsy\fi
+ %\message{AUTOSHAPE 2: (\@@FLOWminx,\@@FLOWminy)->(\@@FLOWmaxx,\@@FLOWmaxy)}%
+ \donetrue
+ \ifnum\@@FLOWminx=100 \donefalse\fi
+ \ifnum\@@FLOWminy=100 \donefalse\fi
+ \ifnum\@@FLOWmaxx=0 \donefalse\fi
+ \ifnum\@@FLOWmaxy=0 \donefalse\fi
+ \doFLOWcheckF\@@FLOWx\@@FLOWminx\@@FLOWmaxx\@@FLOWnx
+ \doFLOWcheckF\@@FLOWy\@@FLOWminy\@@FLOWmaxy\@@FLOWny}
+
+\def\startFLOWcellF#1\stopFLOWcell%
+ {\resetFLOWcell
+ \ignorespaces#1\unskip
+ \expandafter\doFLOWlocationF\FLOWlocation\end}%
+
+\def\doFLOWlocationF#1,#2\end%
+ {\ifnum#1>\@@FLOWabsx\def\@@FLOWabsx{#1}\fi
+ \ifnum#2>\@@FLOWabsy\def\@@FLOWabsy{#2}\fi
+ \ExpandBothAfter\doifinset{\FLOWcell}{\@@FLOWautofocus}
+ {\dodoFLOWlocationF{#1}<-\@@FLOWminx
+ \dodoFLOWlocationF{#1}>+\@@FLOWmaxx
+ \dodoFLOWlocationF{#2}<-\@@FLOWminy
+ \dodoFLOWlocationF{#2}>+\@@FLOWmaxy}}
+
+\def\dodoFLOWlocationF#1#2#3#4%
+ {\ifnum#1#2#4\relax
+ \!!counta=#1\advance\!!counta #31\relax
+ \edef#4{\ifnum\!!counta<1 1\else\the\!!counta\fi}%
+ \fi}
+
+\def\doFLOWcheckF#1#2#3#4%
+ {\ifdone
+ \let#1=#2%
+ \!!counta=#3%
+ \advance\!!counta \plusone\advance\!!counta -#2\relax
+ \ifnum\!!counta<1 \!!counta=1 \fi
+ \edef#4{\the\!!counta}%
+ \else
+ \def#1{1}\def#4{0}% no {1}
+ \fi}
+
+% \useFLOWchart[name][parent][setting,setting][additional settings]
+% \useFLOWchart[name][parent][additional settings]
+
+\let\currentFLOWchart\empty
+
+\def\useFLOWchart
+ {\doquadrupleempty\douseFLOWchart}
+
+\def\douseFLOWchart[#1][#2][#3][#4]% name parent sets mainsettings
+ {\iffourthargument
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][#3][#4,##1]}%
+ \else
+ \checkparameters[#3]%
+ \ifparameters
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][][#3,##1]}%
+ \else
+ \setvalue{\@FLOW@--#1}[##1]{\setgetFLOWchart[#2][#3][##1]}%
+ \fi
+ \fi}
+
+\def\setgetFLOWchart[#1][#2][#3]%
+ {\def\docommando##1{}% cell line focus ?
+ \processcommalist[#2]\docommando
+ \getFLOWchart[#1][#3]}
+
+\def\doFLOWchart[#1][#2]%
+ {\hbox\bgroup\vbox\bgroup % vmode suppresses spaces
+\def\currentFLOWchart{#1}%
+ \doifundefinedelse{\@FLOW@--#1}
+ {\getFLOWchart[#1][#2]}
+ {\getvalue{\@FLOW@--#1}[#2]}%
+ \egroup\egroup}
+
+\def\FLOWchart%
+ {\dodoubleempty\doFLOWchart}
+
+%D A hook into the help system.
+
+\def\showFLOWhelp#1%
+ {\doifhelpinfo\FLOWhelp
+ {\setbox#1=\hbox
+ {\setbox\scratchbox=\hbox{\lower\@@FLOWdy\hbox
+ {\helpbutton
+ [\c!width=\wd0,\c!color=,\c!height=\@@FLOWdy,\c!frame=\v!no]%
+ [\FLOWhelp]}}%
+ \smashbox\scratchbox
+ \setbox#1=\vbox
+ {\forgetall\offinterlineskip\box#1\box\scratchbox}%
+ \box#1}}}
+
+%D The next section is dedicated to splitting up charts.
+
+\def\getFLOWsize[#1]%
+ {\bgroup\let\dodogetFLOWchart\dogetFLOWsize\FLOWchart[#1]\egroup}
+
+\def\dogetFLOWsize[#1][#2]%
+ {\setbox\scratchbox=\vbox
+ {\xdef\FLOWmaxwidth {0}%
+ \xdef\FLOWmaxheight{0}%
+ \def\getFLOWlocation##1,##2\end
+ {\ifnum0##1>\FLOWmaxwidth \xdef\FLOWmaxwidth {##1}\fi
+ \ifnum0##2>\FLOWmaxheight\xdef\FLOWmaxheight{##2}\fi}%
+ \resetFLOWcell
+ \long\def\startFLOWcell##1\stopFLOWcell
+ {{##1\expandafter\getFLOWlocation\FLOWlocation\end}}%
+ \def\dohandleflowchart[##1][##2]%
+ {\resetFLOWlocation
+ \processFLOWbuffer{##1}}%
+ \getvalue{\@FLOW@-#1}}}
+
+\def\setupFLOWsplit%
+ {\dodoubleargument\getparameters[\@@FLOT]}
+
+\setupFLOWsplit%
+ [\c!nx=3,\c!ny=3,
+ \c!dx=1,\c!dy=1,
+ \c!command=,
+ \c!marking=\v!on,
+ \c!before=,\c!after=]
+
+\def\FLOWsplitx {1}
+\def\FLOWsplity {1}
+\def\FLOWsplitnx{1}
+\def\FLOWsplitny{1}
+
+\def\FLOWcharts%
+ {\dodoubleempty\doFLOWcharts}
+
+%D While splitting, the following variables are available:
+%D
+%D \starttyping
+%D \FLOWsplitnx \FLOWsplitny \FLOWsplitx \FLOWsplity
+%D \stoptyping
+
+\def\doFLOWcharts[#1][#2]%
+ {\bgroup
+ \getFLOWsize[#1]%
+ \dodoFLOWcharts\relax
+ \global\let\FLOWsplitnx\FLOWsplitx
+ \global\let\FLOWsplitny\FLOWsplity
+ \dodoFLOWcharts{\dododoFLOWcharts[#1][#2]}%
+ \egroup}
+
+\def\dodoFLOWcharts#1%
+ {\def\@@FLOTx{1}%
+ \global\let\FLOWsplitx\@@FLOTx
+ \doloop
+ {\def\@@FLOTy{1}%
+ \global\let\FLOWsplity\@@FLOTy
+ \doloop
+ {\bgroup
+ \scratchcounter\FLOWmaxwidth
+ \advance\scratchcounter -\@@FLOTx
+ \advance\scratchcounter \plusone
+ \ifnum\scratchcounter<\@@FLOTnx\edef\@@FLOTnx{\the\scratchcounter}\fi
+ \scratchcounter\FLOWmaxheight
+ \advance\scratchcounter -\@@FLOTy
+ \advance\scratchcounter \plusone
+ \ifnum\scratchcounter<\@@FLOTny\edef\@@FLOTny{\the\scratchcounter}\fi
+ #1% does something with the float, or not
+ \egroup
+ \increment(\@@FLOTy,\@@FLOTny)%
+ \ifnum\@@FLOTy>\FLOWmaxheight
+ \exitloop
+ \else
+ \doglobal\increment\FLOWsplity
+ \decrement(\@@FLOTy,\@@FLOTdy)%
+ \fi}%
+ \increment(\@@FLOTx,\@@FLOTnx)%
+ \ifnum\@@FLOTx>\FLOWmaxwidth
+ \exitloop
+ \else
+ \doglobal\increment\FLOWsplitx
+ \decrement(\@@FLOTx,\@@FLOTdx)%
+ \fi}}
+
+\def\dododoFLOWcharts[#1][#2]%
+ {\bgroup
+ \@@FLOTbefore
+ \doifnot\@@FLOTmarking\v!on{\let\cuthbox\hbox}%
+ \cuthbox
+ {\@@FLOTcommand
+ {\FLOWchart[#1][#2,
+ \c!x=\@@FLOTx,\c!nx=\@@FLOTnx,
+ \c!y=\@@FLOTy,\c!ny=\@@FLOTny]}}%
+ \@@FLOTafter
+ \egroup}
+
+%D An example of splitting is given below:
+%D
+%D \starttyping
+%D \setupFLOWsplit
+%D [nx=5,ny=10,
+%D dx=0,dy=0,
+%D before=,
+%D after=\page]
+%D
+%D \FLOWcharts[mybigflow]
+%D \stoptyping
+%D
+%D Or, one can say:
+%D
+%D \starttyping
+%D \splitfloat
+%D {\placefigure{What a big flowchart this is!}}
+%D {\FLOWcharts[mybigflow]}
+%D \stoptyping
+
+%D \macros
+%D {typeFLOWchart}
+%D
+%D For documentation purposes the following macro is
+%D provided. Watch the use of the first and last line hooks,
+%D which is needed because the start and stop commands are
+%D not part of the buffer.
+
+\def\typeFLOWchart[#1]%
+ {\bgroup
+ \def\dohandleflowchart[##1][##2]{\typeFLOWbuffer{##1}}%
+ \convertargument\startFLOWchart[#1]\to\firstverbatimfileline
+ \convertargument \stopFLOWchart\to\lastverbatimfileline
+ \getvalue{\@FLOW@-#1}
+ \egroup}
+
+%D New:
+%D
+%D \starttyping
+%D \setupFLOWcharts[command=\Whow]
+%D
+%D \startFLOWset[convert-en] % [tag][convert-en]
+%D \subFLOWchart[a][x=1,y=1,nx=3,ny=3]
+%D \subFLOWchart[b][x=1,y=2,nx=3,ny=3]
+%D \subFLOWchart[c][x=2,y=1,nx=3,ny=3]
+%D \stopFLOWset
+%D
+%D \def\Whow#1%
+%D {\ifnum\currentFLOWset=1 \framed{Some Chart}\fi}
+%D
+%D \FLOWset[convert-en] % [tag]
+%D
+%D \def\Whow#1%
+%D {\setuphead[state=high]
+%D \startstandardmakeup
+%D \centerbox{#1}
+%D \stopstandardmakeup}
+%D
+%D \FLOWset[convert-en] % [tag]
+%D \stoptyping
+
+\def\startFLOWset
+ {\dodoubleempty\dostartFLOWset}
+
+\def\dostartFLOWset[#1][#2]#3\stopFLOWset % tag name data
+ {\ifsecondargument
+ \long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#2}{#3}}%
+ \else
+ \long\setvalue{\@FLOX@#1}{\dohandleFLOWset{#1}{#1}{#3}}%
+ \fi}
+
+\long\def\dohandleFLOWset#1#2#3% tag name data
+ {\bgroup
+ \def\subFLOWchart
+ {\dodoubleempty\dosubFLOWchart}%
+ \def\dosubFLOWchart[##1][##2]% subtag settings
+ {\ifsecondargument
+ \dodohandleFLOWset{#1}{##1}{#2}{##2}%
+ \else
+ \subFLOWchart[][##1]%
+ \fi}%
+ #3%
+ \egroup}
+
+\def\dodohandleFLOWset#1#2#3#4% tag subtag name settings
+ {\increment\currentFLOWset
+ \bgroup
+ \@@FLOXcommand
+ {\ifnum\currentFLOWset=1 \pagereference[#1]\fi
+ \doifsomething{#2}
+ {\setupreferencing[\c!prefix=]%
+ \pagereference[#1:#2]% -:#1:#2
+ \setupreferencing[\c!prefix=#1:#2]}%
+ \FLOWchart[#3][#4]}%
+ \egroup}
+
+\def\FLOWset[#1]%
+ {\newcounter\currentFLOWset
+ \doifdefinedelse{\@FLOX@#1}
+ {\getvalue{\@FLOX@#1}}
+ {\dodohandleFLOWset{#1}{}{#1}{}}}
+
+\newcounter\currentFLOWset
+
+\setupFLOWsets
+ [\c!command=]
+
+%D This will be an option:
+
+% \def\startFLOWchart%
+% {\dodoubleempty\dostartFLOWchart}
+%
+% \long\def\dostartFLOWchart[#1][#2]#3\stopFLOWchart
+% {\preparenextFLOWchart{#1}{#2}%
+% \long\setgvalue{\FLOWbufferprefix\nofFLOWcharts}{#3}}
+%
+% \long\def\dodefineFLOWchart[#1][#2]#3%
+% {\preparenextFLOWchart{#1}{#2}%
+% \long\setgvalue{\FLOWbufferprefix\nofFLOWcharts}{#3}}
+%
+% \def\processFLOWbuffer#1{\getvalue{\FLOWbufferprefix#1}}
+% \def\typeFLOWbuffer #1{[Sorry, no verbatim chart #1 available.]}
+
+%D The XML interface [will be mode protected or separate x-chart file]
+
+\startXMLdefinitions flowchart
+
+\defineXMLargument [flowchartdefinition]
+ {\defineFLOWchart[\XMLpar{flowchartdefinition}{identifier}{unknown}]}
+
+\defineXMLpickup [flowcell]
+ {\startFLOWcell
+ \defineXMLargument[name]{\unspaceafter\name}%
+ \defineXMLargument[shape]{\unspaceafter\shape}%
+ \defineXMLnestedargument[text]{\text}}
+ {\stopFLOWcell}
+
+\defineXMLenvironment [location] % global unspace/store
+ {\bgroup\defineXMLpush[x]\defineXMLpush[y]}
+ {\XMLunspace{x}\XMLunspace{y}%
+ \expanded{\egroup\noexpand\location{\XMLpop{x},\XMLpop{y}}}}
+
+\defineXMLenvironment [connection]
+ {\bgroup\defineXMLpush[type]\defineXMLpush[name]}%
+ {\XMLunspace{type}\XMLunspace{name}%
+ \expanded{\egroup\noexpand\connection[\XMLpop{type}]{\XMLpop{name}}}}
+
+\defineXMLsingular [flowchart]
+ {\expanded{\FLOWchart[\XMLpar{flowchart}{identifier}{unknown}]}}
+
+\defineXMLdirective [flowchart] [shapes] \setupFLOWshapes
+\defineXMLdirective [flowchart] [lines] \setupFLOWlines
+
+\stopXMLdefinitions
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-chemic.tex b/Master/texmf-dist/tex/context/base/m-chemic.tex
new file mode 100644
index 00000000000..cfefdf83f4a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-chemic.tex
@@ -0,0 +1,27 @@
+%D \module
+%D [ file=ppchtex (m-chemic),
+%D version=1997.03.19,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten},
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\beginpicture\undefined
+ \let\normalgrid\grid
+ \let\normalaxis\axis
+ \input pictex.tex \relax
+ \let\pictexgrid\grid
+ \let\pictexaxis\axis
+ \let\grid\normalgrid
+ \let\axis\normalaxis
+\fi
+
+\input ppchtex.tex \relax
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/m-cweb.tex b/Master/texmf-dist/tex/context/base/m-cweb.tex
new file mode 100644
index 00000000000..65184ddae8a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-cweb.tex
@@ -0,0 +1,1371 @@
+%D \module
+%D [ file=m-cweb,
+%D version=1997.01.15,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\CWEB\ Pretty Printing Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D First some auxiliary stuff, to be moved to system module.
+
+\def\dodofindfirstcharacter#1%
+ {\ifx#1\relax
+ \let\next=\egroup
+ \else
+ \handlecase
+ {\expandafter\ifnum\expandafter\catcode\expandafter`#1=11
+ \def\next##1\relax{\egroup\def\firstcharacter{#1}}%
+ \fi}%
+ \fi
+ \next}
+
+\def\dofindfirstcharacter#1#2%
+ {\def\firstcharacter{}%
+ \bgroup
+ \convertargument#2\to\ascii
+ \let\next=\dodofindfirstcharacter
+ \let\handlecase=#1
+ \expandafter\next\ascii\relax}
+
+\def\normalcase#1%
+ {#1}
+
+\def\findfirstcharacter%
+ {\dofindfirstcharacter\lowercase}
+
+\def\FindFirstCharacter%
+ {\dofindfirstcharacter\normalcase}
+
+\def\FINDFIRSTCHARACTER%
+ {\dofindfirstcharacter\uppercase}
+
+% nog doen:
+%
+% \deactivateCWEB in output routine
+% status info
+% gelinkte entries
+% parskip en parindent
+
+%D \gdef\CWEBquote#1.{{\em Quote :}\ #1.} % checks the .
+
+%D This module (re)implements the \CWEB\ macros as defined in
+%D the file \type{cwebmac.tex}.
+%D
+%D \CWEB\ uses short, often one character long, names for
+%D macros. This is no real problem because no one is supposed
+%D to read and understand the files generated by \CWEB. The
+%D standard macros are meant for \PLAIN\ \TEX\ users. In
+%D \CONTEXT\ and other macro packages however, there is a
+%D potential conflict with format specific or user defined
+%D commands. Furthermore, the \CWEB\ macros implement their own
+%D output routines. When integrating \CWEB\ documents in
+%D another environment, the \CWEB\ specific macros have to be
+%D made local. The first part of this module is dedicated to
+%D this feature.
+%D
+%D Instead of using \type{\def} and \type{\let} for defining
+%D macros, we use:
+%D
+%D \starttyping
+%D \defCEBmacro arguments {meaning}
+%D \letCEBmacro arguments {meaning}
+%D \stoptyping
+%D
+%D \CWEB files contain implicit calls to macros that generate
+%D the table of contents, the lists of sections and the index.
+%D Because we want to be much more flexible, we implemented our
+%D own alternatives, and therefore have to bypass the original
+%D ones. The next macro is used for defining these obsolete
+%D \CWEB\ macros. The dummies take care of arguments.
+%D
+%D \starttyping
+%D \defCEBdummy arguments {meaning}
+%D \stoptyping
+%D
+%D The list of \CWEB\ specific macro names is saved in a
+%D \TOKENLIST. This serves two purposes. First it enables us to
+%D activate the \CWEB\ macros, which are saved under a
+%D different name, second it can be used to temporary restore
+%D the meanings, for instance when the output routine builds
+%D the page.
+
+\newtoks\CWEBmacros
+
+%D Activating and deactivating is done by means of:
+%D
+%D \starttyping
+%D \activateCWEB
+%D \deactivateCWEB
+%D \stoptyping
+%D
+%D Which are implemented as:
+
+\def\activateCWEB%
+ {\let\doCWEB=\activateCWEBmacro
+ \the\CWEBmacros}
+
+\def\deactivateCWEB%
+ {\let\doCWEB=\deactivateCWEBmacro
+ \the\CWEBmacros}
+
+%D The three definition macros append the name of the macro to
+%D the list. The first two macros save the meaning, the last one
+%D assigns \type{{}} to the macro and gobbles original meaning.
+
+\long\def\defCWEBmacro#1%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \setvalue{newCWEB\string#1}}
+
+\long\def\letCWEBmacro#1%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \letvalue{newCWEB\string#1}}
+
+\long\def\defCWEBdummy#1#2#%
+ {\appendtoks\doCWEB#1\to\CWEBmacros
+ \setvalue{newCWEB\string#1}#2{}%
+ \gobbleoneargument}
+
+%D The macro \type{\defCWEBdummy} of course takes care of the
+%D argument. This leaves the two (de|)|activating macros:
+
+\def\CWEBmacro#1%
+ {\getvalue{newCWEB\string#1}}
+
+\def\activateCWEBmacro#1%
+ {\letvalue{oldCWEB\string#1}=#1%
+ \def#1{\CWEBmacro#1}}
+
+\def\deactivateCWEBmacro#1%
+ {\expandafter\let\expandafter#1\expandafter=\csname oldCWEB\string#1\endcsname}
+
+%D I did consider loading the \CWEB\ macros using temporary
+%D substitutes of \type{\def}, \type{\font}, \type{\newbox} etc.
+%D The main problem is that the file contains more than
+%D definitions and taking all kind of assignments into account
+%D too would not make things easier. So I decided to stick to
+%D the method as just described.
+
+%D Now we're ready for the real job. What follows is a partial
+%D adaption of the file \type{cwebmac.tex}, version 3.1, dated
+%D September 1994 and written by Levy and Knuth. When possible
+%D we kept the original meaning, but we've granted ourselves
+%D the freedom to reformat the macro's for readibility.
+%D
+%D We'll only present the macros we actually use. The source
+%D however contains the original implementation.
+
+% standard macros for CWEB listings (in addition to plain.tex)
+% Version 3.1 --- September 1994.
+%
+% \ifx\documentstyle\undefined\else\endinput\fi % LaTeX will use other macros
+%
+% \xdef\fmtversion{\fmtversion+CWEB3.1}
+
+%D \macros{.}{}
+%D
+%D \CWEBquote preserve a way to get the dot accent (all
+%D other accents will still work as usual).
+
+\letCWEBmacro\: = \.
+
+% \parskip = 0pt % no stretch between paragraphs
+% \parindent = 1em % for paragraphs and for the first line of C text
+
+% \font\ninerm = cmr9
+% \let\mc = \ninerm % medium caps
+% \font\eightrm = cmr8
+% \let\sc = \eightrm % small caps (NOT a caps-and-small-caps font)
+% \let\mainfont = \tenrm
+% \let\cmntfont = \tenrm
+% \font\tenss = cmss10
+% \let\cmntfont = \tenss % alternative comment font
+% \font\titlefont = cmr7 scaled \magstep4 % title on the contents page
+% \font\ttitlefont = cmtt10 scaled \magstep2 % typewriter type in title
+% \font\tentex = cmtex10 % TeX extended character set (used in strings)
+% \fontdimen7\tentex = 0pt % no double space after sentences
+
+%D \macros{mc,sc,cmntfont,eightrm}{}
+%D
+%D The naming of the fonts in in line with those in \PLAIN\
+%D \TEX. Although \CONTEXT\ implements its own scheme, there is
+%D still support for the \PLAIN\ ones. We keep the original
+%D names, but change their meaning. That way the macros obey
+%D switching to other sizes or styles.
+
+\defCWEBmacro\mc {\tx}
+\defCWEBmacro\sc {\txx}
+\defCWEBmacro\cmntfont {\ss}
+\defCWEBmacro\eightrm {\tx}
+
+%D \macros{tentex,sevenrm,sevensy,teni}{}
+%D
+%D The next one uses a temporary solution. The \type{cmtex10}
+%D font is not part of the default mechanism. We make use of
+%D the \CONTEXT\ variables \type{\textface}, \type{\scriptface}
+%D and \type{\scriptscriptface}, which hold the current
+%D sizes.
+
+\defCWEBmacro\tentex%
+ {\font\next=cmtex10 at \textface
+ \fontdimen7\next=0pt
+ \next}
+
+\defCWEBmacro\sevenrm {\getvalue{\scriptface rmtf}}
+\defCWEBmacro\sevensy {\getvalue{\scriptface mmsy}}
+\defCWEBmacro\teni {\getvalue{\textface mmmi}}
+
+%D \macros{CWEBpt}{}
+%D
+%D The original macros are based on a 10~point bodyfont size. We
+%D therefore have to specify dimension in points a bit
+%D different. Specifications like .6pt are changed to
+%D \type{.06} times \type{\korpsgrootte}.
+
+\defCWEBmacro\CWEBpt {\korpsgrootte} % still dutch
+
+%D \macros{CEE,UNIX,TEX,CPLUSPLUS}{}
+%D
+%D Next come some logo's. It does not make much sense to use
+%D the \CONTEXT\ logo mechanism here, so we simply say:
+
+\defCWEBmacro \CEE/{{\mc C\spacefactor1000}}
+\defCWEBmacro \UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
+\defCWEBmacro \TEX/{\TeX}
+\defCWEBmacro\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
+\defCWEBmacro \Cee{\CEE/} % for backward compatibility
+
+%D \macros{\ }{}
+%D
+%D Now we come to the real work: the short commands that make
+%D up the typography.
+%D
+%D \CWEBquote italic type for identifiers.
+
+\defCWEBmacro\\#1%
+ {\leavevmode\hbox{\it#1\/\kern.05em}}
+
+%D \macros{\string|}{}
+%D
+%D \CWEBquote one letter identifiers look better this way.
+
+\defCWEBmacro\|#1%
+ {\leavevmode\hbox{$#1$}}
+
+%D \macros{\string&}{}
+%D
+%D \CWEBquote boldface type for reserved words.
+
+\defCWEBmacro\&#1%
+ {\leavevmode
+ \hbox
+ {\def\_%
+ {\kern.04em
+ \vbox{\hrule width.3em height .06\CWEBpt}% .6pt}%
+ \kern.08em}%
+ \bf#1\/\kern.05em}}
+
+%D \macros{.}{}
+%D
+%D Here we use the previously saved period. This macro
+%D takes care of special characters in strings.
+
+\defCWEBmacro\.#1%
+ {\leavevmode
+ \hbox
+ {\tentex % typewriter type for strings
+ \let\\=\BS % backslash in a string
+ \let\{=\LB % left brace in a string
+ \let\}=\RB % right brace in a string
+ \let\~=\TL % tilde in a string
+ \let\ =\SP % space in a string
+ \let\_=\UL % underline in a string
+ \let\&=\AM % ampersand in a string
+ \let\^=\CF % circumflex in a string
+ #1\kern.05em}}
+
+%D \macros{)}{}
+%D
+%D Some discretionary hack.
+
+\defCWEBmacro\)%
+ {\discretionary{\hbox{\tentex\BS}}{}{}}
+
+%D \macros{AT}{}
+%D
+%D \CWEBquote at sign for control text (not needed in versions
+%D $>=$ 2.9).
+
+\defCWEBmacro\AT{@}
+
+%D \macros{ATL,postATL,NOATL}{}
+%D
+%D A two step macro that handles whatever.
+
+\defCWEBmacro\ATL%
+ {\par
+ \noindent
+ \bgroup
+ \catcode`\_=12
+ \postATL}
+
+\defCWEBmacro\postATL#1 #2 %
+ {\bf letter \\{\uppercase{\char"#1}} tangles as \tentex "#2"%
+ \egroup
+ \par}
+
+\defCWEBmacro\noATL#1 #2 %
+ {}
+
+%D \macros{noatl}{}
+%D
+%D \CWEBquote suppress output from \type{@l}.
+
+\defCWEBmacro\noatl%
+ {\let\ATL=\noATL}
+
+% \defCWEBmacro\ATH%
+% {\X\kern-.5em:Preprocessor definitions\X}
+
+%D \macros{PB}
+%D
+%D \CWEBquote hook for program brackets {\tttf\string|...\string|}
+%D in TeX part or section name.
+
+\defCWEBmacro\PB%
+ {\relax}
+
+% \chardef\AM = `\& % ampersand character in a string
+% \chardef\BS = `\\ % backslash in a string
+% \chardef\LB = `\{ % left brace in a string
+% \chardef\RB = `\} % right brace in a string
+% \chardef\TL = `\~ % tilde in a string
+% \chardef\UL = `\_ % underline character in a string
+% \chardef\CF = `\^ % circumflex character in a string
+
+\defCWEBmacro\AM {\char`\&} % ampersand character in a string
+\defCWEBmacro\BS {\char`\\} % backslash in a string
+\defCWEBmacro\LB {\char`\{} % left brace in a string
+\defCWEBmacro\RB {\char`\}} % right brace in a string
+\defCWEBmacro\TL {\char`\~} % tilde in a string
+\defCWEBmacro\UL {\char`\_} % underline character in a string
+\defCWEBmacro\CF {\char`\^} % circumflex character in a string
+
+\defCWEBmacro\SP {{\tt\char`\ }} % (visible) space in a string
+
+% \newbox\PPbox \setbox\PPbox=\hbox
+% {\kern.5pt\raise1pt\hbox{\sevenrm+\kern-1pt+}\kern.5pt}
+% \newbox\MMbox \setbox\MMbox=\hbox
+% {\kern.5pt\raise1pt\hbox{\sevensy\char0\kern-1pt\char0}\kern.5pt}
+% \newbox\MGbox \setbox\MGbox=\hbox % symbol for ->
+% {\kern-2pt\lower3pt\hbox{\teni\char'176}\kern1pt}
+% \newbox\MODbox \setbox\MODbox=\hbox
+% {\eightrm\%}
+%
+% \def\PP {\copy\PPbox}
+% \def\MM {\copy\MMbox}
+% \def\MG {\copy\MGbox}
+% \def\MOD {\mathbin{\copy\MODbox}}
+
+\defCWEBmacro\PP% symbol for ++
+ {\kern.05\CWEBpt
+ \raise.1\CWEBpt\hbox{\sevenrm+\kern-.1\CWEBpt+}%
+ \kern.05\CWEBpt}
+
+\defCWEBmacro\MM%
+ {\kern.05\CWEBpt
+ \raise.1\CWEBpt\hbox{\sevensy\char0\kern-.1\CWEBpt\char0}%
+ \kern.05\CWEBpt}
+
+\defCWEBmacro\MG%
+ {\kern-.2\CWEBpt
+ \lower.3\CWEBpt\hbox{\teni\char'176}%
+ \kern .1\CWEBpt}
+
+\defCWEBmacro\MRL#1%
+ {\mathrel{\let\K==#1}}
+
+% \def\MRL#1%
+% {\KK#1}
+% \def\KK#1#2%
+% {\buildrel\;#1\over{#2}}
+
+\letCWEBmacro\GG = \gg
+\letCWEBmacro\LL = \ll
+\letCWEBmacro\NULL = \Lambda
+
+% \mathchardef\AND = "2026 % bitwise and; also \& (unary operator)
+
+\defCWEBmacro\AND% redefines itself (funny)
+ {\mathchardef\AND="2026 \AND} % bitwise and; also \& (unary operator)
+
+\letCWEBmacro\OR = \mid % bitwise or
+\letCWEBmacro\XOR = \oplus % bitwise exclusive or
+\defCWEBmacro\CM {{\sim}} % bitwise complement
+\defCWEBmacro\MOD {\mathbin{\eightrm\%}}
+\defCWEBmacro\DC {\kern.1em{::}\kern.1em} % symbol for ::
+\defCWEBmacro\PA {\mathbin{.*}} % symbol for .*
+\defCWEBmacro\MGA {\mathbin{\MG*}} % symbol for ->*
+\defCWEBmacro\this {\&{this}}
+
+% \newbox \bak % backspace one em
+% \newbox \bakk % backspace two ems
+%
+% \setbox\bak =\hbox to -1em{}
+% \setbox\bakk=\hbox to -2em{}
+
+\newcount\CWEBind % current indentation in ems
+
+\defCWEBmacro\1% indent one more notch
+ {\global\advance\CWEBind by 1
+ \hangindent\CWEBind em}
+
+\defCWEBmacro\2% indent one less notch
+ {\global\advance\CWEBind by -1 }
+
+\defCWEBmacro\3#1% optional break within a statement
+ {\hfil
+ \penalty#10
+ \hfilneg}
+
+\defCWEBmacro\4% backspace one notch
+ {\hbox to -1em{}}
+
+\defCWEBmacro\5% optional break
+ {\hfil
+ \penalty-1
+ \hfilneg
+ \kern2.5em
+ \hbox to -2em{}%
+ \ignorespaces}
+
+\defCWEBmacro\6% forced break
+ {\ifmmode
+ \else
+ \par
+ \hangindent\CWEBind em
+ \noindent
+ \kern\CWEBind em
+ \hbox to -2em{}%
+ \ignorespaces
+ \fi}
+
+\defCWEBmacro\7% forced break and a little extra space
+ {\Y
+ \6}
+
+\defCWEBmacro\8% no indentation
+ {\hskip-\CWEBind em
+ \hskip 2em}
+
+\defCWEBmacro\9#1%
+ {}
+
+\newcount\gdepth % depth of current major group, plus one
+\newcount\secpagedepth
+\secpagedepth=3 % page breaks will occur for depths -1, 0, and 1
+
+% \newtoks\gtitle % title of current major group
+% \newskip\intersecskip
+% \intersecskip=12pt minus 3pt % space between sections
+
+% \let\yskip=\smallskip
+
+\defCWEBmacro\?%
+ {\mathrel?}
+
+% \def\note#1#2.%
+% {\Y\noindent
+% {\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}}
+
+\defCWEBmacro\lapstar%
+ {\rlap{*}}
+
+% \def\stsec%
+% {\rightskip=0pt % get out of C mode (cf. \B)
+% \sfcode`;=1500
+% \pretolerance 200
+% \hyphenpenalty 50
+% \exhyphenpenalty 50
+% \noindent{\let\*=\lapstar\bf\secstar.\quad}}
+%
+% \let\startsection=\stsec
+
+\defCWEBmacro\defin#1%
+ {\global\advance\CWEBind by 2 \1\&{#1 } } % begin `define' or `format'
+
+% \def\A% xref for doubly defined section name
+% {\note{See also section}}
+%
+% \def\As% xref for multiply defined section name
+% {\note{See also sections}}
+
+\defCWEBmacro\B%
+ {\rightskip=0pt plus 100pt minus 10pt % go into C mode
+ \sfcode`;=3000
+ \pretolerance 10000
+ \hyphenpenalty 1000 % so strings can be broken (discretionary \ is inserted)
+ \exhyphenpenalty 10000
+ \global\CWEBind=2 \1\ \unskip}
+
+\defCWEBmacro\C#1%
+ {\5\5\quad$/\ast\,${\cmntfont #1}$\,\ast/$}
+
+% \let\SHC\C % "// short comments" treated like "/* ordinary comments */"
+
+\defCWEBmacro\SHC#1%
+ {\5\5\quad$//\,${\cmntfont#1}}
+
+% \def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$}
+% \def\SHC#1{\5\5\quad$\diamond\,${\cmntfont#1}}
+
+\defCWEBmacro\D% macro definition
+ {\defin{\#define}}
+
+\letCWEBmacro\E=\equiv % equivalence sign
+
+% \def\ET% conjunction between two section numbers
+% { and~}
+%
+% \def\ETs% conjunction between the last two of several section numbers
+% {, and~}
+
+\defCWEBmacro\F% format definition
+ {\defin{format}}
+
+\letCWEBmacro\G = \ge % greater than or equal sign
+
+% \H is long Hungarian umlaut accent
+
+\letCWEBmacro\I = \ne % unequal sign
+
+\defCWEBmacro\J% TANGLE's join operation
+ {\.{@\&}}
+
+% \let\K== % assignment operator
+
+\letCWEBmacro\K = \leftarrow % "honest" alternative to standard assignment operator
+
+% \L is Polish letter suppressed-L
+
+% \outer\def\M#1%
+% {\MN{#1}%
+% \ifon
+% \vfil
+% \penalty-100
+% \vfilneg % beginning of section
+% \vskip\intersecskip
+% \startsection
+% \ignorespaces}
+%
+% \outer\def\N#1#2#3.%
+% {\gdepth=#1%
+% \gtitle={#3}%
+% \MN{#2}% beginning of starred section
+% \ifon
+% \ifnum#1<\secpagedepth
+% \vfil
+% \eject % force page break if depth is small
+% \else
+% \vfil
+% \penalty-100
+% \vfilneg
+% \vskip\intersecskip
+% \fi
+% \fi
+% \message{*\secno}% progress report
+% \edef\next%
+% {\write\cont % write to contents file
+% {\ZZ{#3}{#1}{\secno}{\noexpand\the\pageno}}}%
+% \next % \ZZ{title}{depth}{sec}{page}
+% \ifon
+% \startsection
+% {\bf#3.\quad}%
+% \ignorespaces}
+%
+% \def\MN#1%
+% {\par % common code for \M, \N
+% {\xdef\secstar{#1}%
+% \let\*=\empty
+% \xdef\secno{#1}}% remove \* from section name
+% \ifx\secno\secstar
+% \onmaybe
+% \else
+% \ontrue
+% \fi
+% \mark{{{\tensy x}\secno}{\the\gdepth}{\the\gtitle}}}
+%
+% each \mark is {section reference or null}{depth plus 1}{group title}
+
+% \O is Scandinavian letter O-with-slash
+% \P is paragraph sign
+
+\defCWEBmacro\Q {\note{This code is cited in section}} % xref for mention of a section
+\defCWEBmacro\Qs {\note{This code is cited in sections}} % xref for mentions of a section
+
+% \S is section sign
+
+\defCWEBmacro\T#1%
+ {\leavevmode % octal, hex or decimal constant
+ \hbox
+ {$\def\?{\kern.2em}%
+ \def\$##1{\egroup_{\,\rm##1}\bgroup}% suffix to constant
+ \def\_{\cdot 10^{\aftergroup}}% power of ten (via dirty trick)
+ \let\~=\oct
+ \let\^=\hex
+ {#1}$}}
+
+\defCWEBmacro\U {\note{This code is used in section}} % xref for use of a section
+\defCWEBmacro\Us {\note{This code is used in sections}} % xref for uses of a section
+
+\letCWEBmacro\R = \lnot % logical not
+\letCWEBmacro\V = \lor % logical or
+\letCWEBmacro\W = \land % logical and
+
+% defined later on
+%
+% \def\X#1:#2\X%
+% {\ifmmode
+% \gdef\XX{\null$\null}%
+% \else
+% \gdef\XX{}%
+% \fi % section name
+% \XX$\langle\,${#2\eightrm\kern.5em#1}$\,\rangle$\XX}
+
+\unprotect
+
+\def\theCWEByskip {\blank[\v!small]}
+\def\theCWEBvskip {\blank[\v!big]}
+
+\protect
+
+\defCWEBmacro\Y%
+ {\par
+ \yskip}
+
+\defCWEBmacro\yskip%
+ {\theCWEByskip}
+
+\letCWEBmacro\Z = \le
+% \letCWEBmacro\ZZ = \let % now you can \write the control sequence \ZZ
+\letCWEBmacro\* = *
+
+\defCWEBmacro\oct%
+ {\hbox{$^\circ$\kern-.1em\it\aftergroup\?\aftergroup}}
+
+\defCWEBmacro\hex%
+ {\hbox{$^{\scriptscriptstyle\#}$\tt\aftergroup}}
+
+\defCWEBmacro\vb#1%
+ {\leavevmode
+ \hbox
+ {\kern.2\CWEBpt
+ \vrule
+ \vtop
+ {\vbox
+ {\hrule
+ \hbox{\strut\kern.2\CWEBpt\.{#1}\kern.2\CWEBpt}}
+ \hrule}%
+ \vrule
+ \kern.2\CWEBpt}} % verbatim string
+
+\def\onmaybe%
+ {\let\ifon=\maybe}
+
+\let\maybe=\iftrue
+
+\newif\ifon
+
+% \newif\iftitle
+% \newif\ifpagesaved
+%
+% \def\lheader%
+% {\mainfont
+% \the\pageno
+% \eightrm
+% \qquad
+% \grouptitle
+% \hfill
+% \title
+% \qquad
+% \mainfont
+% \topsecno} % top line on left-hand pages
+%
+% \def\rheader%
+% {\mainfont
+% \topsecno
+% \eightrm
+% \qquad
+% \title
+% \hfill
+% \grouptitle
+% \qquad
+% \mainfont
+% \the\pageno} % top line on right-hand pages
+%
+% \def\grouptitle
+% {\let\i=I
+% \let\j=J
+% \uppercase\expandafter{\expandafter\takethree\topmark}}
+%
+% \def\topsecno%
+% {\expandafter\takeone\topmark}
+%
+% \def\takeone #1#2#3{#1}
+% \def\taketwo #1#2#3{#2}
+% \def\takethree #1#2#3{#3}
+%
+% \def\nullsec%
+% {\eightrm
+% \kern-2em} % the \kern-2em cancels \qquad in headers
+%
+% \let\page=\pagebody % \def\page {\box255 }
+% \raggedbottom % \normalbottom % faster, but loses plain TeX footnotes
+%
+% \def\normaloutput#1#2#3%
+% {\shipout\vbox
+% {\ifodd
+% \pageno
+% \hoffset=\pageshift
+% \fi
+% \vbox to \fullpageheight
+% {\iftitle
+% \global\titlefalse
+% \else
+% \hbox to \pagewidth
+% {\vbox to 10pt{}%
+% \ifodd\pageno #3\else#2\fi}
+% \fi
+% \vfill#1}} % parameter #1 is the page itself
+% \global\advance\pageno by 1}
+%
+% \gtitle={\.{CWEB} output} % this running head is reset by starred sections
+%
+% \mark{\noexpand\nullsec0{\the\gtitle}}
+%
+% \def\title%
+% {\expandafter\uppercase\expandafter{\jobname}}
+%
+% \def\topofcontents%
+% {\centerline{\titlefont\title}
+% \vskip.7in
+% \vfill} % this material will start the table of contents page
+
+\def\botofcontents%
+ {\vfill
+ \centerline{\covernote}} % this material will end the table of contents page
+
+\def\covernote%
+ {}
+
+% some leftover
+
+\defCWEBmacro\contentspagenumber{0} % default page number for table of contents
+
+% \newdimen\pagewidth \pagewidth = 158mm % the width of each page
+% \newdimen\pageheight \pageheight = 223mm % the height of each page
+% \newdimen\fullpageheight \fullpageheight = 240mm % page height including headlines
+% \newdimen\pageshift \pageshift = 0in % shift righthand pages wrt lefthand ones
+%
+% \def\magnify#1%
+% {\mag=#1
+% \pagewidth=6.5truein
+% \pageheight=8.7truein
+% \fullpageheight=9truein
+% \setpage}
+%
+% \def\setpage%
+% {\hsize\pagewidth
+% \vsize\pageheight} % use after changing page size
+%
+% \def\contentsfile {\jobname.toc} % file that gets table of contents info
+% \def\readcontents {\input \contentsfile}
+% \def\readindex {\input \jobname.idx}
+% \def\readsections {\input \jobname.scn}
+%
+% \newwrite\cont
+% \output{\setbox0=\page % the first page is garbage
+% \openout\cont=\contentsfile
+% \write\cont{\catcode `\noexpand\@=11\relax} % \makeatletter
+% \global\output{\normaloutput\page\lheader\rheader}}
+% \setpage
+% \vbox to \vsize{} % the first \topmark won't be null
+
+\defCWEBdummy\magnify#1% magnify the page
+ {}
+
+\defCWEBmacro\ch%
+ {\note{The following sections were changed by the change file:}
+ \let\*=\relax}
+
+% \newbox\sbox % saved box preceding the index
+% \newbox\lbox % lefthand column in the index
+%
+% \def\inx%
+% {\par\vskip6pt plus 1fil % we are beginning the index
+% \def\page{\box255 }
+% \normalbottom
+% \write\cont{} % ensure that the contents file isn't empty
+% \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
+% \closeout\cont % the contents information has been fully gathered
+% \output
+% {\ifpagesaved
+% \normaloutput{\box\sbox}\lheader\rheader
+% \fi
+% \global\setbox\sbox=\page
+% \global\pagesavedtrue}
+% \pagesavedfalse
+% \eject % eject the page-so-far and predecessors
+% \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
+% \vsize=\pageheight
+% \advance\vsize by -\ht\sbox % the remaining height
+% \hsize=.5\pagewidth
+% \advance\hsize by -10pt
+% % column width for the index (20pt between cols)
+% \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
+% \def\lr{L} % this tells whether the left or right column is next
+% \output
+% {\if L\lr
+% \global\setbox\lbox=\page
+% \gdef\lr{R}
+% \else
+% \normaloutput
+% {\vbox to\pageheight
+% {\box\sbox
+% \vss
+% \hbox to\pagewidth{\box\lbox\hfil\page}}}
+% \lheader
+% \rheader
+% \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
+% \message{Index:}
+% \parskip 0pt plus .5pt
+% \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry
+% \def\[##1]{$\underline{##1}$} % underlined index item
+% \rm
+% \rightskip0pt plus 2.5em
+% \tolerance 10000
+% \let\*=\lapstar
+% \hyphenpenalty 10000
+% \parindent0pt
+% \readindex}
+%
+% \def\fin%
+% {\par\vfill\eject % this is done when we are ending the index
+% \ifpagesaved\null\vfill\eject\fi % output a null index column
+% \if L\lr\else\null\vfill\eject\fi % finish the current page
+% \parfillskip 0pt plus 1fil
+% \def\grouptitle{NAMES OF THE SECTIONS}
+% \let\topsecno=\nullsec
+% \message{Section names:}
+% \output={\normaloutput\page\lheader\rheader}
+% \setpage
+% \def\note##1##2.{\quad{\eightrm##1~##2.}}
+% \def\Q{\note{Cited in section}} % crossref for mention of a section
+% \def\Qs{\note{Cited in sections}} % crossref for mentions of a section
+% \def\U{\note{Used in section}} % crossref for use of a section
+% \def\Us{\note{Used in sections}} % crossref for uses of a section
+% \def\I{\par\hangindent 2em}\let\*=*
+% \readsections}
+%
+% \def\con%
+% {\par\vfill\eject % finish the section names
+% %\ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers
+% \rightskip = 0pt
+% \hyphenpenalty = 50
+% \tolerance = 200
+% \setpage
+% \output={\normaloutput\page\lheader\rheader}
+% \titletrue % prepare to output the table of contents
+% \pageno=\contentspagenumber
+% \def\grouptitle{TABLE OF CONTENTS}
+% \message{Table of contents:}
+% \topofcontents
+% \line{\hfil Section\hbox to3em{\hss Page}}
+% \let\ZZ=\contentsline
+% \readcontents\relax % read the contents info
+% \botofcontents
+% \end} % print the contents page(s) and terminate
+%
+% \def\contentsline#1#2#3#4%
+% {\ifnum#2=0
+% \smallbreak
+% \fi
+% \line{\consetup{#2}#1
+% \rm\leaders\hbox to .5em{.\hfil}\hfil\ #3\hbox to3em{\hss#4}}}
+%
+
+\defCWEBmacro\consetup#1%
+ {\ifcase#1 \bf % depth -1 (@**)
+ \or % depth 0 (@*)
+ \or \hskip2em % depth 1 (@*1)
+ \or \hskip4em % depth 2 (@*2)
+ \or \hskip6em % depth 3 (@*3)
+ \or \hskip8em % depth 4 (@*4)
+ \or \hskip10em % depth 5 (@*5)
+ \else \hskip12em
+ \fi} % depth 6 or more
+
+\defCWEBdummy \inx {} % index
+\defCWEBdummy \fin {} % finish
+\defCWEBdummy \con {} % table of contents and finish
+
+\defCWEBdummy \noinx {} % no indexes or table of contents
+\defCWEBdummy \nosecs {} % no index of section names or table of contents
+\defCWEBdummy \nocon {} % no table of contents
+
+\defCWEBmacro\,%
+ {\relax
+ \ifmmode
+ \mskip\thinmuskip
+ \else
+ \thinspace
+ \fi}
+
+% \def\noinx%
+% {\let\inx=\end}
+%
+% \def\nosecs%
+% {\let\FIN=\fin
+% \def\fin%
+% {\let\parfillskip=\end
+% \FIN}}
+%
+% \def\nocon%
+% {\let\con=\end}
+%
+% \newcount\twodigits
+%
+% \def\hours%
+% {\twodigits=\time
+% \divide\twodigits by 60
+% \printtwodigits
+% \multiply\twodigits by -60
+% \advance\twodigits by \time
+% :\printtwodigits}
+%
+% \def\gobbleone1{}
+%
+% \def\printtwodigits%
+% {\advance\twodigits by 100
+% \expandafter\gobbleone\number\twodigits
+% \advance\twodigits by -100 }
+%
+% \def\today%
+% {\ifcase\month
+% \or January\or February\or March\or April\or May\or June%
+% \or July\or August\or September\or October\or November\or December%
+% \fi
+% \space
+% \number\day, \number\year}
+%
+% \def\datethis%
+% {\def\startsection%
+% {\leftline{\sc\today\ at \hours}
+% \bigskip
+% \let\startsection=\stsec
+% \stsec}}
+%
+% \def\datecontentspage%
+% {\def\topofcontents%
+% {\leftline{\sc\today\ at \hours}
+% \bigskip
+% \centerline{\titlefont\title}
+% \vfill}}
+
+\defCWEBdummy\datethis {} % say `\datethis' in limbo, to get your listing timestamped before section 1
+\defCWEBdummy\datecontentspage {} % timestamps the contents page
+
+\defCWEBmacro\TeX%
+ {{\ifmmode\it\fi
+ \leavevmode
+ \hbox{T\kern-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}}
+
+% alternative implementation
+
+\newif\ifCWEBnotes
+
+\defCWEBmacro\Q {\CWEBnotesfalse \note{This code is cited in section}} % xref for mention of a section
+\defCWEBmacro\Qs {\CWEBnotestrue \note{This code is cited in sections}} % xref for mentions of a section
+
+\defCWEBmacro\U {\CWEBnotesfalse \note{This code is used in section}} % xref for use of a section
+\defCWEBmacro\Us {\CWEBnotestrue \note{This code is used in sections}} % xref for uses of a section
+
+\defCWEBmacro\A {\CWEBnotesfalse \note{See also section}} % xref for doubly defined section name
+\defCWEBmacro\As {\CWEBnotestrue \note{See also sections}} % xref for multiply defined section name
+
+\defCWEBmacro\ET% conjunction between two section numbers
+ { and~}
+
+\defCWEBmacro\ETs% conjunction between the last two of several section numbers
+ {, and~}
+
+%\def\processCWEBsectionnumbers[#1]%
+% {\bgroup
+% \def\CWEBcomma%
+% {\def\CWEBcomma{, }}%
+% \def\docommando##1%
+% {\bgroup
+% \def\[####1]{####1}%
+% \xdef\CWEBreference{##1}%
+% \egroup
+% \CWEBcomma{\naar{\donottest{##1}}[web:\CWEBreference]}}%
+% \processcommalist[{#1}]\docommando
+% \egroup}
+
+% \def\processCWEBsectionnumbers[#1]%
+% {\bgroup
+% \def\CWEBcomma%
+% {\def\CWEBcomma{, }}%
+% \def\docommando##1%
+% {\bgroup
+% \def\(####1){####1}%
+% \xdef\CWEBreference{##1}%
+% \egroup
+% \CWEBcomma
+% {\localcolortrue\naar{\donottest{##1}}[web:\CWEBreference]}}%
+% \bgroup
+% \def\[##1]{\(##1)}\let\(=\relax\xdef\CWEBreferences{#1}%
+% \egroup
+% \unexpanded\def\(##1){\[##1]}%
+% \processcommacommand[\CWEBreferences]\docommando
+% \egroup}
+
+\def\processCWEBsectionnumbers[#1]%
+ {\bgroup
+ \def\CWEBcomma%
+ {\def\CWEBcomma{, }}%
+ \def\docommando##1%
+ {\bgroup
+ \def\[####1]{####1}%
+ \xdef\CWEBreference{##1}%
+ \egroup
+ \CWEBcomma{\localcolortrue\goto{\donottest{##1}}[web:\CWEBreference]}}%
+ \processlist{(}{)}{,}\docommando(#1)
+ \egroup}
+
+\def\processCWEBsectionnotes%
+ {\catcode`\s=12
+ \doprocessCWEBsectionnotes}
+
+\def\doprocessCWEBsectionnotes#1.%
+ {\ifCWEBnotes
+ \def\next##1\ET##2##3.%
+ {\processCWEBsectionnumbers[##1]%
+ \if##2s%
+ {, and~\goto{##3}[web:##3]}%
+ \else
+ { and~\goto{##2##3}[web:##2##3]}%
+ \fi}%
+ \next#1.%
+ \else
+ \goto{#1}[web:#1]%
+ \fi
+ \afterCWEBnote % inside group!
+ \egroup}
+
+\let\afterCWEBnote=\relax
+
+\defCWEBmacro\note#1%
+ {\bgroup
+ \Y\noindent
+ \def\afterCWEBnote{\par}%
+ \hangindent2em
+ %\baselineskip10pt
+ \eightrm#1~\processCWEBsectionnotes}
+
+\def\oldCWEBmacroX#1:#2\X% original
+ {\ifmmode
+ \gdef\XX{\null$\null}%
+ \else
+ \gdef\XX{}%
+ \fi % section name
+ \XX$\langle\,${#2\eightrm\kern.5em#1}$\,\rangle$\XX}
+
+\defCWEBmacro\ATH%
+ {\oldCWEBmacroX\kern-.5em:Preprocessor definitions\X}
+
+\def\newCWEBmacroX#1:#2\X% original
+ {\ifmmode
+ \gdef\XX{\null$\null}%
+ \else
+ \gdef\XX{}%
+ \fi % section name
+ \XX$\langle\,$%
+ {#2\eightrm\kern.5em\processCWEBsectionnumbers[{#1}]}%
+ $\,\rangle$\XX}
+
+\defCWEBmacro\X#1:#2\X%
+ {\newCWEBmacroX#1:#2\X}
+
+\definemarking[CWEBfilename]
+\definemarking[CWEBsectiontitle]
+\definemarking[CWEBsectionnumber]
+\definemarking[CWEBsectiondepth]
+
+\defCWEBmacro\M#1%
+ {\MN{#1}%
+ \ifon
+ \vfil
+ \penalty-100
+ \vfilneg % beginning of section
+ \theCWEBvskip
+ \startsection
+ \pagereference[web:#1]%
+ \expanded{\marking[CWEBsectionnumber]{\secno}}%
+ \expanded{\marking[CWEBsectiondepth]{\the\gdepth}}%
+ \ignorespaces}
+
+\defCWEBmacro\N#1#2#3.%
+ {\gdepth=#1%
+ \MN{#2}% beginning of starred section
+ \ifon
+ \ifnum#1<\secpagedepth
+ \vfil
+ \eject % force page break if depth is small
+ \else
+ \vfil
+ \penalty-100
+ \vfilneg
+ \theCWEBvskip
+ \fi
+ \fi
+ \message{*\secno}% progress report
+ \makesectionformat % context
+ \convertargument#3\to\ascii
+ \edef\next%
+ {\write\CWEBcont % write to contents file
+ {\string\ZZ{\ascii}{#1}{\secno}%
+ {\sectionformat::\noexpand\userfolio}{\noexpand\realfolio}}}%
+ \next % \ZZ{title}{depth}{sec}{page}
+ \ifon
+ \startsection
+ \pagereference[web:#2]%
+ \marking[CWEBsectiontitle] {#3}%
+ \expanded{\marking[CWEBsectionnumber]{\secno}}%
+ \expanded{\marking[CWEBsectiondepth]{\the\gdepth}}%
+ {\bf#3.\quad}%
+ \ignorespaces}
+
+\defCWEBmacro\MN#1%
+ {\par % common code for \M, \N
+ {\xdef\secstar{#1}%
+ \let\*=\empty
+ \xdef\secno{#1}}% remove \* from section name
+ \ifx\secno\secstar
+ \onmaybe
+ \else
+ \ontrue
+ \fi}
+
+\newif\iflinktoCWEBfile
+
+\def\setCWEBlinkfile#1%
+ {\linktoCWEBfiletrue
+ \def\otherCWEBfile{#1}}
+
+\unprotect
+
+\def\gotoCWEBsection#1[#2]%
+ {\iflinktoCWEBfile
+ \bgroup
+ \setupinteraction[\c!color=,\c!style=]%
+ \let\savedreferenceprefix=\referenceprefix
+ \localcolortrue
+ \goto{#1}[\otherCWEBfile::\savedreferenceprefix web:#2]%
+ \egroup
+ \else
+ #1%
+ \fi}
+
+\protect
+
+\defCWEBmacro\startsection%
+ {\rightskip=0pt % get out of C mode (cf. \B)
+ \sfcode`;=1500
+ \pretolerance 200
+ \hyphenpenalty 50
+ \exhyphenpenalty 50
+ \noindent
+ \bgroup
+ \let\*=\lapstar
+ \gotoCWEBsection{\bf\secstar.\quad}[\secno]%
+ \egroup}
+
+\def\ignoreCWEBinput%
+ {\let\normalinput=\input
+ \def\input ##1 %
+ {\let\input=\normalinput}}
+
+\def\loadCWEBmacros#1%
+ {\let\oldN=\N
+ \def\N{\bgroup\setbox0=\vbox\bgroup\endinput}%
+ \ignoreCWEBinput
+ \ReadFile{#1.tex}%
+ \egroup\egroup
+ \let\N=\oldN}
+
+\def\resetCWEBcontext%
+ {\catcode`\|=12 % used in context discretionaries
+ \everypar{} % used for context indentation and floats
+ \parskip=0pt % no stretch between cweb paragraphs
+ \parindent=1em} % is related to cweb backspace etc
+
+\newwrite\CWEBcont
+
+\def\processCWEBsource #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \ignoreCWEBinput
+ \immediate\openout\CWEBcont=#1.toc
+ \write\CWEBcont{\noexpand\unprotect}
+ \message{Source:}
+ \marking[CWEBfilename]{#1}
+ \ReadFile{#1.tex}\relax
+ \write\CWEBcont{\noexpand\protect}
+ \closeout\CWEBcont
+ \par
+ \egroup}
+
+\def\resetCWEBindexentry%
+ {\xdef\currentCWEBindexentry{}}
+
+\def\showCWEBindexentry#1% can be redefined
+ {\theCWEBvskip
+ \vskip3\lineheight
+ \goodbreak
+ \vskip-3\lineheight
+ {\pagereference[web:#1]\bf#1}%
+ \theCWEBvskip}
+
+\def\checkCWEBindexentry#1%
+ {\bgroup
+ \def\\##1{##1}% a dummy that also removes the {}
+ \def\|##1{##1}% another dummy
+ \def\.##1{*##1}% and another (the typewriter one)
+ \def\&##1{##1}% and a last one
+ \def\9##1{##1}% hold this one
+ \catcode`*=11
+ \expandafter\def\expandafter\entry\expandafter{#1}%
+ \convertcommand\entry\to\ascii
+ \expanded{\FINDFIRSTCHARACTER{\ascii}}%
+ \doifnot{\currentCWEBindexentry}{\firstcharacter}
+ {\doifnot{\firstcharacter}{*} % signal for \firstbunch
+ {\global\let\currentCWEBindexentry=\firstcharacter
+ \showCWEBindexentry{\currentCWEBindexentry}}}%
+ \egroup}
+
+\def\theCWEBbeforeindex {\startcolumns}
+\def\theCWEBafterindex {\stopcolumns}
+
+\def\processCWEBindex #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \resetCWEBindexentry
+ \def\I##1, %
+ {\par
+ \checkCWEBindexentry{##1}%
+ \hangindent2em
+ \noindent##1:\kern1em%
+ \def\next####1.%
+ {\processCWEBsectionnumbers[{####1}]}%
+ \next}%
+ \def\[##1]%
+ {$\underline{##1}$}%
+ \let\*=\lapstar
+ \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
+% \parskip 0pt plus .5pt
+ \rightskip0pt plus 2.5em
+ \tolerance 10000
+ \hyphenpenalty 10000
+ \parindent0pt
+ \message{Index:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {index}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \theCWEBbeforeindex
+ \ReadFile{#1.idx}\relax
+ \theCWEBafterindex
+ \par
+ \egroup}
+
+\def\processCWEBsections #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \loadCWEBmacros{#1}
+ \parfillskip = 0pt plus 1fil
+ \parindent = 0pt
+ \let\topsecno=\nullsec
+ \def\note##1%
+ {\quad
+ \bgroup
+ \eightrm
+ ##1~\processCWEBsectionnotes}
+ \def\Q {\CWEBnotesfalse \note{Cited in section}} % crossref for mention of a section
+ \def\Qs{\CWEBnotestrue \note{Cited in sections}} % crossref for mentions of a section
+ \def\U {\CWEBnotesfalse \note{Used in section}} % crossref for use of a section
+ \def\Us{\CWEBnotestrue \note{Used in sections}} % crossref for uses of a section
+ \def\I {\par\hangindent 2em}%
+ \let\*=*
+ \message{Section names:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {sections}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \ReadFile{#1.scn}\relax
+ \par
+ \botofcontents
+ \par
+ \egroup}
+
+\def\processCWEBcontents #1 %
+ {\bgroup
+ \resetCWEBcontext
+ \activateCWEB
+ \loadCWEBmacros{#1}
+ \rightskip = 0pt
+ \hyphenpenalty = 50
+ \tolerance = 200
+ \parindent = 0pt
+ \line{\hfil Section\hbox to3em{\hss Page}}
+ \let\ZZ=\contentsline
+ \message{Table of contents:}
+ \marking[CWEBfilename] {#1}
+ \marking[CWEBsectiontitle] {table of contents}
+ \marking[CWEBsectionnumber]{}
+ \marking[CWEBsectiondepth]{}
+ \loadCWEBmacros{#1}
+ \ReadFile{#1.toc}\relax
+ \par
+ \egroup}
+
+\defCWEBmacro\contentsline#1#2#3#4#5%
+ {\ifnum#2=0
+ \smallbreak
+ \fi
+ \line{\consetup{#2}#1
+ \rm
+ \leaders\hbox to .5em{.\hfil}\hfil\
+ {\localcolortrue\goto{#3}[web:#3]}% below: \gotorealpage ? should be changed
+ \hbox to3em{\localcolortrue\hss\gotorealpage{}{}{#5}{\translatednumber[#4]\presetgoto}}}}
+
+%D A last hack, needed because a file can overload of the
+%D above. (Some day: a check like \type{\ifx#1\CWEBdefined}.)
+
+\def\outer#1#2%
+ {\ifx#2\undefined
+ \expandafter#1\expandafter#2%
+ \else
+ \expandafter#1\expandafter\ThrowAway
+ \fi}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/m-edtsnc.tex b/Master/texmf-dist/tex/context/base/m-edtsnc.tex
new file mode 100644
index 00000000000..d3a697b25b9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-edtsnc.tex
@@ -0,0 +1,207 @@
+%D \module
+%D [ file=m-editsnc,
+%D version=2003.12.23,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Editor Synchronization
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.edit for
+%C details.
+
+% \enablemode[demo]
+
+% This file is a variation of the file m-pdfsync. This time we do it
+% in a more abstract way and prepare ourselves for support in dvi
+% output.
+
+% \enableeditsync
+% \disableeditsync
+% \editsync
+% \editsynctext {string}
+% \editsyncnode {char}
+% \editsynctracemode [chardef: 0-4]
+
+\writestatus{editsync}{loading and enabling editor synchronization support}
+
+\unprotect % not really needed
+
+\ifx\pdfoutput\undefined
+ \donefalse
+\else\ifcase\pdfoutput
+ \donefalse
+\else\ifx\pdfsavepos\undefined
+ \donefalse
+\else
+ \donetrue
+\fi\fi\fi
+
+\chardef \editsyncstate \zerocount
+\chardef \editsynctracemode \zerocount
+\newcount \editsynccounter
+\newwrite \editsyncwrite
+
+\def\enableeditsync {\chardef\editsyncstate\plusone}
+\def\disableeditsync{\chardef\editsyncstate\zerocount}
+
+% The following definitions can go into the special drivers, but
+% for the moment we do it this way.
+
+\ifdone
+
+ \def\dostarteditsync
+ {\immediate\openout\editsyncwrite\jobname.pdfsync
+ \immediate\write\editsyncwrite{\jobname}%
+ \immediate\write\editsyncwrite{version 0}}
+
+ \def\dostopeditsync
+ {\closeout\editsyncwrite}
+
+ \def\doeditsyncregisterpage#1{\immediate\write\editsyncwrite{s\space\number#1}}
+ \def\doeditsyncopenfile #1{\immediate\write\editsyncwrite{(\space#1}}
+ \def\doeditsyncclosefile #1{\immediate\write\editsyncwrite{)}}
+
+ \def\doregistereditsyncnode#1#2#3% tag counter linenumber
+ {\pdfsavepos
+ \immediate\write\editsyncwrite{l\space\number#2\space\number#3}%
+ \expanded{\write\editsyncwrite{p\ifnum#1=\plusone*\fi\space\number#2\space\noexpand\the\pdflastxpos\space\noexpand\the\pdflastypos}}}
+
+\else
+
+ \let\dostarteditsync \relax
+ \let\dostopeditsync \relax
+
+ \let\doeditsyncregisterpage\gobbleoneargument
+ \let\doeditsyncopenfile \gobbleoneargument
+ \let\doeditsyncclosefile \gobbleoneargument
+ \let\doregistereditsyncnode\gobblethreearguments
+
+ % These specials could be filtered by a dvitopdf backend and
+ % written to a jobname.pdfsync file. In that case, the x and
+ % y coordinates have to be to be resolved by driver.
+
+ % \def\doeditsyncregisterpage#1{\special{pdfsync: s\space\number#1}}
+ % \def\doeditsyncopenfile #1{\special{pdfsync: ( #1}}
+ % \def\doeditsyncclosefile #1{\special{pdfsync: )}}
+
+ % \def\doregistereditsyncnode#1#2#3%
+ % {\special{pdfsync: l the\editsynccounter\space\number#3}%
+ % \special{pdfsync: p\ifnum#1=\plusone*\fi\space\number#2}}
+
+\fi
+
+\let\editsynctracer\gobbleoneargument
+
+\editsynccounter\minusone % counting starts at zero and we increment beforehand
+
+\def\registereditsyncnode#1% we assume #1 is one token
+ {\ifcase\editsyncstate
+ \expandafter\gobbleoneargument
+ \else
+ \global\advance\editsynccounter\plusone
+ \doregistereditsyncnode#1\editsynccounter\inputlineno
+ \expandafter\editsynctracer
+ \fi}
+
+\def\editsync {\registereditsyncnode\plusone *}
+\def\editsyncnode{\registereditsyncnode\zerocount}
+\def\editsynctext{\registereditsyncnode\plusone }
+
+\appendtoks \dostarteditsync \to \everystarttext
+%appendtoks \dostopeditsync \to \everystoptext
+\appendtoks \doeditsyncregisterpage\realfolio \to \everyshipout
+\appendtoks \doeditsyncopenfile\readfilename \to \everybeforereadfile
+\appendtoks \doeditsyncclosefile\readfilename \to \everyafterreadfile
+
+\appendtoks \enableeditsync \to \everystarttext
+\appendtoks \disableeditsync \to \everypagebody
+
+\def\editsynctracer#1%
+ {\ifcase\editsynctracemode\else
+ \begingroup
+ \forgetall
+ \disableeditsync
+ \ifcase\editsynctracemode\or % could be done more efficient, box around ifcase
+ \setbox\scratchbox\hbox to \zeropoint{\hss\infofont#1\hss}% 1
+ \else
+ \setbox\scratchbox\hbox to \zeropoint{\hss\traceboxplacementtrue\boxcursor\hss}% 2/3/4
+ \fi
+ \smashbox\scratchbox\box\scratchbox
+ \ifcase\editsynctracemode\or\or\or
+ \setbox\scratchbox\hbox to \zeropoint{\hss\raise1.25ex\hbox{\infofont#1}\hss}% 3
+ \smashbox\scratchbox\box\scratchbox
+ \or
+ \setbox\scratchbox\hbox to \zeropoint{\hss\lower1.25ex\hbox{\infofont#1}\hss}% 4
+ \smashbox\scratchbox\box\scratchbox
+ \fi
+ \endgroup
+ \fi}
+
+% \def\editsynctracer#1% more efficient but unreadable
+% {\ifcase\editsynctracemode\else
+% \ifcase\editsyncstate\else
+% \begingroup
+% \forgetall
+% \disableeditsync
+% \setbox\scratchbox\hbox to \zeropoint
+% {\hss
+% \ifcase\editsynctracemode\or
+% \infofont#1% 1
+% \else
+% \traceboxplacementtrue\boxcursor% 2/3/4
+% \fi
+% \hss}%
+% \smashbox\scratchbox\box\scratchbox
+% \setbox\scratchbox\hbox to \zeropoint
+% {\hss
+% \ifcase\editsynctracemode\or\or\or
+% \raise1.25ex\hbox{\infofont#1}% 3
+% \or
+% \lower1.25ex\hbox{\infofont#1}% 4
+% \fi
+% \hss}%
+% \smashbox\scratchbox\box\scratchbox
+% \endgroup
+% \fi
+% \fi}
+
+% beware, adding nodes this way will interfere with the typesetting
+
+\appendtoks \editsyncnode p\to \everypar
+\appendtoks \editsyncnode m\to \everymath
+\appendtoks \editsyncnode d\to \everydisplay
+\appendtoks \editsyncnode h\to \everyhbox
+
+% For compatibility with 'pdfsync4context' we provide:
+
+\let\pdfsyncstart\enableeditsync
+\let\pdfsyncstop \disablepdfsync
+\let\pdfsync \editsync
+
+\protect
+
+\doifnotmode{demo}{\endinput}
+
+\chardef\editsynctracemode=3
+
+\starttext
+
+\chapter{Test}
+
+\processfile{tufte}
+
+\startitemize
+\item first
+\item second
+\stopitemize
+
+\processfile{tufte}
+
+\startlines
+some local \editsync sync and \editsynctext{here}a marked point
+some local \editsync sync and \editsyncnode{here}a marked point
+\stoplines
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-educat.tex b/Master/texmf-dist/tex/context/base/m-educat.tex
new file mode 100644
index 00000000000..38567bf4e37
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-educat.tex
@@ -0,0 +1,250 @@
+%D \module
+%D [ file=m-educat,
+%D version=2003.03.05,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Educational Extras,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module will collect a few macros cq.\ definitions
+%D meant for educational use. Most of the code has been laying
+%D around for some time and has been (or is still) used in
+%D \PRAGMA\ projects.
+
+\unprotect
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ answerarea: antwoordgebied answerarea
+ answerarea answerarea
+ answerarea answerarea
+
+\stopvariables
+
+\startelements dutch english
+ german czech
+ italian romanian
+
+ answerspace: antwoordruimte answerspace
+ answerspace answerspace
+ answerspace answerspace
+ answerlines: antwoordregels answerlines
+ answerlines answerlines
+ answerlines answerlines
+
+\stopelements
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ setupanswerarea: stelantwoordgebiedin setupanswerarea
+ setupanswerarea setupanswerarea
+ setupanswerarea setupanswerarea
+
+\stopcommands
+
+\definesystemvariable{iv}
+
+\definecolor [answerareacolor] [s=.90]
+\definecolor [answerlinecolor] [white]
+
+\definetextbackground
+ [\v!answerarea]
+ [\c!location=\v!text,
+ \c!n=0,
+ \c!frame=\v!off,
+ \c!framecolor=answerlinecolor,
+ \c!rulethickness=2pt,
+ \c!background=\v!color,
+ \c!backgroundcolor=answerareacolor,
+ \c!alternative=2] % betweenline
+
+% n=gedwongen
+% m=extra auto
+
+\def\setupanswerarea
+ {\setuptextbackground[\v!answerarea]}
+
+\setvalue\e!answerspace
+ {\dosingleempty\doanswerspace}
+
+\def\doanswerspace[#1]%
+ {\begingroup
+ \dontcomplain
+ \setupanswerarea
+ [\c!n=0,\c!m=,#1,\c!location=\v!text]%
+ \doifelsenothing{\backgroundvariable\c!m}
+ {\expandafter\donoanswerspace}
+ {\expandafter\dodoanswerspace}%
+ [#1]}
+
+\def\donoanswerspace[#1]#2%
+ {\setupthinrules
+ [\c!alternative=\backgroundvariable\c!alternative,
+ \c!color=\backgroundvariable\c!framecolor,
+ \c!background=\backgroundvariable\c!background,
+ \c!backgroundcolor=\backgroundvariable\c!backgroundcolor,
+ \c!rulethickness=\backgroundvariable\c!rulethickness]%
+ \doifelse{\backgroundvariable\c!n}{*}
+ {\thinrule
+ \par}
+ {\scratchcounter0\backgroundvariable\c!n\relax
+ % tricky, guess
+ \def\processisolatedword##1%
+ {\setbox\scratchbox=\hbox{##1}%
+ \vbox{\hsize\wd\scratchbox\thinrule
+ \ifcase\scratchcounter\else
+ \setbox\scratchbox=\hbox{\space}%
+ \nobreak\hskip\zeropoint \!!minus \wd\scratchbox
+ \vbox{\hsize\wd\scratchbox\thinrule}%
+ \fi}}%
+ \processisolatedwords{#2}\processisolatedword
+ % so far
+ \ifcase\scratchcounter \else \ifnum\scratchcounter<3
+ \nobreak \vbox{\hsize\scratchcounter em\thinrule}%
+ \else % more
+ \advance \scratchcounter -2
+ \dorecurse\scratchcounter{\allowbreak\vbox{\hsize1em\thinrule}}%
+ \nobreak \vbox{\hsize2em\thinrule}%
+ \fi \fi}%
+ \endgroup}
+
+\def\dodoanswerspace[#1]#2% m case
+ {\getvalue{\e!start\v!answerarea}%
+ #2%
+ \doifelse{\backgroundvariable\c!m}{*}
+ {\hfill\strut
+ \getvalue{\e!stop\v!answerarea}%
+ \par}
+ {\scratchcounter0\backgroundvariable\c!m\relax
+ \ifcase\scratchcounter \else \ifnum\scratchcounter<3
+ \nobreak \hbox to \scratchcounter em{\strut\hss}%
+ \else % more
+ \advance \scratchcounter -2
+ \dorecurse\scratchcounter{\allowbreak\hbox to 1em{\strut\hss}}%
+ \nobreak \hbox to 2em{\strut\hss}%
+ \fi \fi
+ \getvalue{\e!stop\v!answerarea}}%
+ \endgroup}
+
+\setvalue{\e!start\e!answerlines}%
+ {\dosingleempty\dostartanswerlines}
+
+\def\dostartanswerlines[#1]%
+ {\begingroup
+ \dontcomplain
+ \setupanswerarea
+ [\c!n=0,\c!m=,#1,\c!location=\v!text]%
+ \doifnot{\backgroundvariable\c!option}\v!joinedup\softbreak
+ \doifelsenothing{\backgroundvariable\c!m}
+ {\expandafter\donostartanswerlines}
+ {\expandafter\dodostartanswerlines}%
+ [#1]}
+
+\def\donostartanswerlines[#1]%
+ {\setupthinrules
+ [\c!alternative=\backgroundvariable\c!alternative,
+ \c!color=\backgroundvariable\c!framecolor,
+ \c!background=\backgroundvariable\c!background,
+ \c!backgroundcolor=\backgroundvariable\c!backgroundcolor,
+ \c!rulethickness=\backgroundvariable\c!rulethickness]%
+ \thinrules[\c!n=\backgroundvariable\c!n]\par
+ \endgroup
+ \grabuntil{\e!stop\e!answerlines}}
+
+\def\dodostartanswerlines[#1]%
+ {\begingroup
+ \getvalue{\e!start\v!answerarea}%
+ \ignorespaces}
+
+\setvalue{\e!stop\e!answerlines}%
+ {\scratchcounter0\backgroundvariable\c!m\relax
+ % a \softbreak is more efficient in pos dan \par
+ \ifcase\scratchcounter
+ % nothing
+ \or
+ \softbreak
+ \else
+ \softbreak
+ \advance \scratchcounter \minusone
+ \dorecurse\scratchcounter{\strut\hfill\strut\softbreak}%
+ \fi
+ \strut\hfill\strut
+ \getvalue{\e!stop\v!answerarea}%
+ \par\endgroup\endgroup}
+
+\setvalue\e!answerlines
+ {\dosingleempty\doanswerlines}
+
+\def\doanswerlines[#1]#2%
+ {\getvalue{\e!start\e!answerlines}[#1]%
+ #2%
+ \getvalue{\e!stop\e!answerlines}}
+
+\protect \doifnotmode{demo}{\endinput}
+
+%D Test materiaal.
+
+\starttext
+
+\startnotmode[answers]
+
+ \setupanswerarea[level=+1]
+
+\stopnotmode
+
+\setupcolors[state=start]
+
+test test test \answerspace [n=10] {Whow}. test test test
+test tets test test \answerspace [n=10] {Whow}. test test
+test test tets test test \answerspace [n=10] {Whow}. test
+test test test tets test test \answerspace [n=10] {Whow}.
+test test test test test test \answerspace [n=*] {Whow.}
+
+test test test test test test test \startanswerlines
+[n=3] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[n=3,alternative=0] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[n=3,alternative=1] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[n=3,alternative=2] What A Junk Answer \stopanswerlines
+
+\startitemize[paragraph]
+\item \startanswerlines [option=seried,n=2] xxx \stopanswerlines
+\stopitemize
+
+test test test \answerspace [m=10] {Whow}. test test test
+test tets test test \answerspace [m=10] {Whow}. test test
+test test tets test test \answerspace [m=10] {Whow}. test
+test test test tets test test \answerspace [m=10] {Whow}.
+test test test test test test \answerspace [m=*] {Whow.}
+
+test test test test test test test \startanswerlines
+[m=2] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[m=2,alternative=0] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[m=2,alternative=1] What A Junk Answer \stopanswerlines
+
+test test test test test test test \startanswerlines
+[m=2,alternative=2] What A Junk Answer \stopanswerlines
+
+\startitemize[paragraph]
+\item \startanswerlines [option=seried,m=2] xxx \stopanswerlines
+\stopitemize
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-gamma.tex b/Master/texmf-dist/tex/context/base/m-gamma.tex
new file mode 100644
index 00000000000..698613db91b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-gamma.tex
@@ -0,0 +1,230 @@
+%D \module
+%D [ file=m-gamma,
+%D version=2002.05.15,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Basic \OMEGA\ Support,
+%D author={Idris Samawi Hamid, Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA-ADE, Idris Samawi Hamid}]
+%D
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Most of this module is written by Idris Samawi Hamid.
+
+%D We define a couple of symbolic \OTP\ filters and
+%D sequences. First the filters:
+%D
+%D Todo: better names, no funny abbreviations.
+
+\definefiltersynonym [utf8 to unicode16] [inutf8]
+\definefiltersynonym [IdOCP] [id]
+\definefiltersynonym [BasicLatinTexUni] [lat2uni]
+\definefiltersynonym [BasicLatinUniToFont][uni2lat]
+\definefiltersynonym [GrTexUni] [grpo2uni]
+\definefiltersynonym [GrUniToFont] [uni2greek]
+\definefiltersynonym [ArabUni] [7arb2uni]
+\definefiltersynonym [BerberUni] [7ber2uni]
+\definefiltersynonym [UrduUni] [7urd2uni]
+\definefiltersynonym [AfghaPashtoUni] [7pas2uni]
+\definefiltersynonym [PakiPashtoUni] [7pap2uni]
+\definefiltersynonym [SindhiUni] [7snd2uni]
+\definefiltersynonym [TifinaghUni] [7tbe2uni]
+\definefiltersynonym [LatinBerberUni] [7lbe2uni]
+\definefiltersynonym [UniCUni] [uni2cuni]
+\definefiltersynonym [CUniArab] [cuni2oar]
+\definefiltersynonym [NoKeshidehCUniArab] [cuni2nar]
+
+%D Next we define the sequences.
+
+\definefiltersequence
+ [NilOCP]
+ [IdOCP]
+
+\definefiltersequence
+ [BasicLatinOCP]
+ [BasicLatinTexUni,BasicLatinUniToFont]
+
+\definefiltersequence
+ [GreekOCP]
+ [GrTexUni,GrUniToFont]
+
+\definefiltersequence
+ [ArabicOCP]
+ [ArabUni,UniCUni,CUniArab]
+
+\definefiltersequence
+ [ArabicNoKeshidehOCP]
+ [ArabUni,UniCUni,NoKeshidehCUniArab]
+
+\definefiltersequence
+ [ArabicBerberOCP]
+ [BerberUni,UniCUni,CUniArab]
+
+\definefiltersequence
+ [TifinaghOCP]
+ [TifinaghUni,BasicLatinUniToFont]
+
+\definefiltersequence
+ [LatinBerberOCP]
+ [LatinBerberUni,BasicLatinUniToFont]
+
+\definefiltersequence
+ [UrduOCP]
+ [UrduUni,UniCUni,CUniArab]
+
+\definefiltersequence
+ [UrduNoKeshidehOCP]
+ [UrduUni,UniCUni,NoKeshidehCUniArab]
+
+\definefiltersequence
+ [AfghaPashtoOCP]
+ [AfghaPashtoUni,UniCUni,CUniArab]
+
+\definefiltersequence
+ [PakiPashtoOCP]
+ [PakiPashtoUni,UniCUni,CUniArab]
+
+\definefiltersequence
+ [SindhiOCP]
+ [SindhiUni,UniCUni,CUniArab]
+
+%D We wrap a couple of languages in environmen tmacros.
+%D beware: this solution is far from perfect!
+%D
+%D Todo: better interface to directional primitives.
+%D
+%D Todo: proper language support (labels etc).
+
+\definestartstop
+ [latin]
+ [commands=%
+ {\usefiltersequence[BasicLatinOCP]%
+ \switchtobodyfont[omlgc]}]
+
+\definestartstop
+ [greek]
+ [commands=%
+ {\usefiltersequence[GreekOCP]%
+ \switchtobodyfont[omlgc]%
+ \language=3\lefthyphenmin=2\righthyphenmin=2}]
+
+\definestartstop
+ [arab]
+ [commands=%
+ {\usefiltersequence[ArabicOCP]
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [smallarab]
+ [commands=%
+ {\usefiltersequence[ArabicNoKeshidehOCP]
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [latberber]
+ [commands=%
+ {\usefiltersequence[LatinBerberOCP]
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [tifinagh]
+ [commands=%
+ {\usefiltersequence[TifinaghOCP]
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [berber]
+ [commands=%
+ {\usefiltersequence[ArabicBerberOCP]
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [urdu]
+ [commands=%
+ {\usefiltersequence[UrduOCP]%
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [smallurdu]
+ [commands=%
+ {\usefiltersequence[UrduNoKeshidehOCP]%
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [pashto]
+ [commands=%
+ {\usefiltersequence[AfghaPashtoOCP]%
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [pashtop]
+ [commands=%
+ {\usefiltersequence[PakiPashtoOCP]%
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+\definestartstop
+ [sindhi]
+ [commands=%
+ {\usefiltersequence[SindhiOCP]%
+ \switchtobodyfont[omarb]%
+ \textdir TRT\pardir TRT}]
+
+
+\let\typeout\message \input grlccode.tex
+
+%D We (pre)define a couple of fonts:
+
+\usetypescriptfile[type-omg]
+
+\usetypescript[OmegaArab]
+\usetypescript[OmegaLGC]
+
+%D Dangerous definitions:
+
+\startencoding[omega]
+
+ \definecharacter textbraceleft {^^^^f07b}
+ \definecharacter textbraceright {^^^^f07d}
+ \definecharacter textbackslash {^^^^f05c}
+ \definecharacter textbullet {{\clearocplists\mm\sy\char"0F}}
+ \definecharacter dotlessi {^^^^0131}
+ \definecharacter ssharp {^^^^00df}
+
+\stopencoding
+
+\enableencoding [omega]
+
+%D Some logo's:
+
+\unexpanded \def\OMEGA {{\switchtobodyfont[omlgc]^^^^03a9}}
+\unexpanded \def\OTP {\OMEGA TP}
+
+%D A few funny definitions:
+
+\def\#{^^^^f023}
+\def\${^^^^f024}
+\def\%{^^^^f025}
+\def\&{^^^^f026}
+
+%D I have no idea what this has to do with omega:
+
+\def\heshe {\lohi{he} {she}}
+\def\himher{\lohi{him}{her}}
+\def\hisher{\lohi{his}{her}}
+
+% Brrr
+
+\setuptolerance [verytolerant]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/m-graph.tex b/Master/texmf-dist/tex/context/base/m-graph.tex
new file mode 100644
index 00000000000..5e45f255b6f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-graph.tex
@@ -0,0 +1,232 @@
+%D \module
+%D [ file=m-graph,
+%D version=2000.08.06,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\METAPOST\ graph module support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D I finally finished graph support, if only because I could
+%D not stand the idea that Karel Wesseling would revert to
+%D \PiCTeX.
+
+% pre 2000.08.06 version
+%
+% \forceMPTEXgraphictrue
+%
+% \appendtoks
+% initialize_numbers ; % make sure that pseudo typesetting is set up
+% input graph ; % load the graph package
+% Autoform := "@g" ; % change the % template char into @
+% \to \MPinitializations
+
+%D The latest version does things more automatically (and
+%D efficiently when no text processing is needed). For
+%D definitions embedded in your document, you need to
+%D use \type {@} as template character, in external files,
+%D \type {%} is also supported.
+
+\appendtoks input graph ; \to \MPinitializations
+
+%D Graphics that have \type {begingraph} in them are
+%D recognized as such and force handling of embedded \TEX\
+%D code.
+
+\forceMPTEXcheck{begingraph}
+
+%D If you run into troubles, try:
+%D
+%D \starttyping
+%D \forceMPTEXgraphictrue
+%D \stoptyping
+%D
+%D A demo can be run with:
+%D
+%D \starttyping
+%D texexec --mode=demo --pdf m-graph
+%D \stoptyping
+
+% No longer needed, since John will fix it.
+%
+% %D For the moment we need the following patch. Adam T. Lindsay
+% %D found out that the following code produced an error:
+% %D
+% %D \starttyping
+% %D \startMPcode
+% %D draw begingraph(130mm,35mm);
+% %D setrange(0,0,10,22000);
+% %D glabel.lft(btex {correct 0--22000} etex rotated 90, OUT);
+% %D autogrid(itick.bot,grid.lft) withcolor .75white ;
+% %D endgraph;
+% %D \stopMPcode
+% %D
+% %D \startMPcode
+% %D draw begingraph(130mm,35mm);
+% %D setrange(0,50,10,22000);
+% %D glabel.lft(btex {wrong 50--22000} etex rotated 90, OUT);
+% %D autogrid(itick.bot,grid.lft) withcolor .75white ;
+% %D endgraph;
+% %D \stopMPcode
+% %D
+% %D \startMPcode
+% %D draw begingraph(130mm,35mm);
+% %D setrange(0,110,10,30000);
+% %D glabel.lft(btex {failed 110--22000} etex rotated 90, OUT);
+% %D autogrid(itick.bot,grid.lft) withcolor .75white ;
+% %D endgraph;
+% %D \stopMPcode
+% %D \stoptyping
+% %D
+% %D The bug is a rather nasty one and needs some tweaking in
+% %D the low level graph code. John Hobby suggested for the
+% %D moment to initialize \type {setrange} as follows:
+% %D
+% %D \starttyping
+% %D setrange(0,0,"22000","22000")
+% %D \stoptyping
+% %D
+% %D Folowing this suggesion, I provide the following
+% %D extension:
+%
+% % \appendtoks
+% def begingraph(expr w, h) =
+% begingroup
+% save X_, Y_, Gfin_, Gcur_, Gcbb_, Gneedgr_, Gneedfr_, Gdidsc_;
+% save Gdpic_, Gppic_, Ggl_, Garw_;
+% picture Gfin_, Gcur_, Gcbb_, Gdpic_, Gppic_, Ggl_[];
+% boolean Gneedgr_, Gneedfr_, Gdidsc_;
+% Gfin_ = nullpicture;
+% Gcur_ = nullpicture;
+% Gcbb_ = nullpicture;
+% X_.ctyp = Y_.ctyp = linear;
+% Z_.gdim = (w,h);
+% X_.sc = Y_.sc = 0;
+% Gneedgr_ = true;
+% Gneedfr_ = true;
+% Gdidsc_ = false;
+% Gdpic_ = nullpicture;
+% Garw_ = 0;
+% scantokens everybegingraph ;
+% enddef;
+%
+% boolean fixsetrange ; fixsetrange := true ;
+%
+% vardef dosetrange(text t) =
+% interim warningcheck:=0;
+% save r_; r_=0;
+% string r_[]s;
+% for x_=
+% for p_=t: if pair p_: xpart p_, ypart fi p_, endfor:
+% r_[incr r_] if string x_: s fi = x_;
+% if r_>2:
+% Gsetr_ if r_=3: X_(Gxcvlin_) else: Y_(Gycvlin_) fi(
+% r_[r_-2] if unknown r_[r_-2]: s fi, x_);
+% fi
+% exitif r_=4;
+% endfor
+% enddef;
+%
+% vardef setrange(text t) =
+% if fixsetrange : dosetrange(0,0,20000,20000) ; fi ;
+% dosetrange(t) ;
+% enddef ;
+%
+% if unknown everybegingraph :
+% string everybegingraph ;
+% % everybegingraph := "setrange(0,0,20000,20000)" ;
+% fi ;
+% \to \MPinitializations
+
+\appendtoks
+ % @# is X_ or Y_; $ is Gxcvlin_ or Gycvlin_; l and h are numeric or string
+ % It would not be OK to set (@#low,@#high) to a pair expression because $ might
+ % try to rescale @#low when evaluating the right-hand side for @#high.
+ vardef Gsetr_@\#(suffix $)(expr l, h) =
+ Gclbnds_@\# ;
+ if @\#ctyp>0 :
+ @\#low = if abs @\#ctyp<>log: $ fi Mlog_Str l ;
+ @\#high = if abs @\#ctyp<>log: $ fi Mlog_Str h ;
+ else :
+ -@\#high = if abs @\#ctyp<>log: $ fi Mlog_Str l ;
+ -@\#low = if abs @\#ctyp<>log: $ fi Mlog_Str h ;
+ fi
+ enddef ;
+\to \MPinitializations
+
+\doifnotmode {demo} {\endinput}
+
+%D You need to have the data files in your path,
+%D otherwise the run is aborted.
+
+\doiffileelse {agepop91.d}
+ {} {\writestatus{graph}{no data files found}\wait\end}
+
+%D The test:
+
+\starttext
+
+\startMPpage
+draw begingraph(3in,2in);
+ gdraw "agepop91.d";
+ endgraph;
+\stopMPpage
+
+\startMPpage
+draw begingraph(3in,2in);
+ gdraw "agepop91.d" plot btex$\bullet$etex;
+ endgraph;
+\stopMPpage
+
+\startMPpage
+draw begingraph(3in,2in);
+ glabel.lft(btex \vbox{\hbox{Population} \hbox{in millions}} etex, OUT);
+ glabel.bot(btex Age in years etex, OUT);
+ gdraw "agepopm.d";
+ endgraph;
+\stopMPpage
+
+\startMPpage
+draw begingraph(3in,2in);
+ glabel.lft(btex \vbox{\hbox{Population} \hbox{in millions}} etex, OUT);
+ glabel.bot(btex Age in years etex, OUT);
+ setrange(origin, whatever,whatever);
+ gdraw "agepopm.d";
+ endgraph;
+\stopMPpage
+
+\startMPpage
+draw begingraph(2.3in,2in);
+ setcoords(log,log);
+ glabel.lft(btex Seconds etex,OUT);
+ glabel.bot(btex Matrix size etex,
+ OUT);
+ gdraw "matmul.d" dashed evenly;
+ glabel.ulft(btex Standard etex,8);
+ gdraw "matmul.d";
+ glabel.lrt(btex Strassen etex,7);
+ endgraph;
+\stopMPpage
+
+\startMPpage
+draw begingraph(6.5cm,4.5cm);
+ setrange(80,0, 90,whatever);
+ glabel.bot(btex Year etex, OUT);
+ glabel.lft(btex \vbox{\hbox{Emissions in} \hbox{thousands of}
+ \hbox{metric tons} \hbox{(heavy line)}}etex, OUT);
+ gdraw "lead.d" withpen pencircle scaled 1.5pt;
+ autogrid(,otick.lft);
+ setcoords(linear,linear);
+ setrange(80,0, 90,whatever);
+ glabel.rt(btex \vbox{\hbox{Micrograms} \hbox{per cubic}
+ \hbox{meter of air} \hbox{(thin line)}}etex, OUT);
+ gdraw "lead.d";
+ autogrid(otick.bot,otick.rt);
+ endgraph;
+\stopMPpage
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-layout.tex b/Master/texmf-dist/tex/context/base/m-layout.tex
new file mode 100644
index 00000000000..0ee71da474c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-layout.tex
@@ -0,0 +1,102 @@
+%D \module
+%D [ file=m-layout,
+%D version=2004.01.16,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Additional Layouts,
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA ADE/ Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% layout-preset - thf th tf
+
+%D This is a preliminary module, don't depend on these dimensions yet.
+
+\readsysfile{lang-frq}\donothing\donothing
+\readsysfile{lang-frd}\donothing\donothing
+
+\unprotect
+
+% \def\layouthwratio{\withoutpt\the\dimexpr8\paperheight/\dimexpr(\paperwidth/ 8192)\relax}
+% \def\layouthwratio{\withoutpt\the\dimexpr4\paperheight/\dimexpr(\paperwidth/16384)\relax}
+% \def\layouthwratio{\withoutpt\the\dimexpr2\paperheight/\dimexpr(\paperwidth/32768)\relax}
+
+\def\layouthwratio
+ {\withoutpt\the\dimexpr2\paperheight/(\paperwidth/32768)\relax}
+
+\def\layouthfheight
+ {\dimexpr\layoutparameter\c!header+\layoutparameter\c!headerdistance+
+ \layoutparameter\c!footer+\layoutparameter\c!footerdistance\relax}
+
+\startsetups[preset-1]
+
+ \xdef\layoutwidth {\dimexpr\layoutparameter\c!width\relax}
+ \gdef\layoutheight{\dimexpr\layouthwratio\dimexpr\layoutwidth\relax+\layouthfheight\relax}
+
+\stopsetups
+
+\definelayout
+ [preset-1-1]
+ [\c!preset=preset-1,
+ \c!backspace=\dimexpr(\paperwidth-\layoutwidth)/2\relax,
+ \c!width=\dimexpr2\paperwidth/3\relax,
+ \c!cutspace=\dimexpr(\paperwidth-\layoutwidth)/2\relax,
+ \c!margin=\dimexpr(\paperwidth-\layoutwidth)/3\relax,
+ \c!header=2\lineheight,
+ \c!headerdistance=\lineheight,
+ \c!height=\v!middle, % \layoutheight
+ \c!footerdistance=\layoutparameter\c!headerdistance, % \lineheight,
+ \c!footer=\layoutparameter\c!header, % 2\lineheight,
+ \c!topspace=\dimexpr1\dimexpr\paperheight-(\layoutheight+\layouthfheight)\relax/3\relax,
+ \c!bottomspace=\dimexpr2\dimexpr\paperheight-(\layoutheight+\layouthfheight)\relax/3\relax]
+
+\startsetups[preset-2]
+
+ \gdef\layouthstep{\dimexpr\paperwidth /\layoutparameter\c!columns\relax}
+ \gdef\layoutvstep{\dimexpr\paperheight/\layoutparameter\c!columns\relax}
+
+\stopsetups
+
+\definelayout
+ [preset-2-1]
+ [\c!preset=preset-2,
+ \c!columns=12,
+ \c!backspace=\layouthstep,
+ \c!width=\v!middle,
+ \c!cutspace=2\layouthstep,
+ \c!margin=\layouthstep,
+ \c!header=2\lineheight,
+ \c!headerdistance=\lineheight,
+ \c!height=\v!middle, % \layoutheight
+ \c!footerdistance=\layoutparameter\c!headerdistance,
+ \c!footer=\layoutparameter\c!header,
+ \c!topspace=\dimexpr\layoutvstep-\layoutparameter\c!header-\layoutparameter\c!headerdistance\relax,
+ \c!bottomspace=\dimexpr(2\layoutvstep)-\layoutparameter\c!header-\layoutparameter\c!headerdistance\relax]
+
+\definelayout
+ [preset-2-2]
+ [\c!preset=preset-2,
+ \c!columns=12,
+ \c!backspace=\layouthstep,
+ \c!width=\v!middle,
+ \c!cutspace=2\layouthstep,
+ \c!margin=\layouthstep,
+ \c!header=2\lineheight,
+ \c!headerdistance=\lineheight,
+ \c!height=\v!middle, % \layoutheight
+ \c!footerdistance=\layoutparameter\c!headerdistance,
+ \c!footer=\layoutparameter\c!header,
+ \c!topspace=\layoutvstep,
+ \c!bottomspace=\layoutvstep] % maybe 1.5
+
+% \setuplayout[preset-1-1] test \showframe \page
+% \setuplayout[preset-1-1][width=65\averagecharwidth] \setuplayout[preset-1-1] test \showframe \page
+% \setuplayout[preset-2-1] test \showframe \page
+% \setuplayout[preset-2-1][columns=10] \setuplayout[preset-2-1] test \showframe \page
+% \setuplayout[preset-2-2] test \showframe \page
+% \setuplayout[preset-2-2][columns=10] \setuplayout[preset-2-2] test \showframe \page
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-level.tex b/Master/texmf-dist/tex/context/base/m-level.tex
new file mode 100644
index 00000000000..67d5987332d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-level.tex
@@ -0,0 +1,94 @@
+%D \module
+%D [ file=level,
+%D version=2002.10.20,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Catching Nesting Errors,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\newcount\currentnesting
+
+\def\startnesting#1%
+ {\global\advance\currentnesting\plusone
+ \setxvalue{level::\number\currentnesting}{#1}}
+
+\def\stopnesting#1%
+ {\edef\nestingstring{#1}%
+ \relax\ifnum\currentnesting>\zerocount
+ \doifelsevalue{level::\number\currentnesting}\nestingstring
+ {\global\advance\currentnesting\minusone}
+ {\@EA\reportnestingerror\@EA\stoptext}
+ \else
+ \@EA\reportnestingerror\@EA\stoptext
+ \fi}
+
+\def\checknesting
+ {\relax\ifnum\currentnesting>\zerocount
+ \def\nestingstring{end of document}%
+ \@EA\reportnestingerror
+ \fi}
+
+\def\reportnestingerror
+ {\endgraf
+ \global\let\checknesting\relax
+ \bgroup \definedfont[Mono at 18pt]\incolortrue
+ \setupinterlinespace
+ \raggedright
+ \bgroup \red
+ \ifnum\currentnesting>\plusone
+ wrong end level
+ \else
+ too many end levels
+ \fi
+ at \nestingstring\space in line \number\inputlineno
+ \ifnum\currentnesting>\zerocount, stack:\fi\endgraf
+ \egroup
+ \dostepwiserecurse\currentnesting\plusone\minusone
+ {\space\getvalue{level::\recurselevel}}
+ \endgraf
+ \egroup
+ \writestatus\m!systems{quitting due to level error}\wait
+ \batchmode}
+
+\prependtoks
+ \checknesting
+\to \everystoptext
+
+\protect \doifnotmode{demo}{\endinput}
+
+\starttext
+
+% \startnesting{eerste}
+% \startnesting{tweede}
+% \startnesting{derde}
+% \startnesting{vierde}
+% test
+% \stopnesting{vierde}
+% \stopnesting{eerste}
+
+% \startnesting{eerste}
+% \startnesting{tweede}
+% test
+% \stopnesting{vierde}
+% \stopnesting{derde}
+% \stopnesting{tweede}
+% \stopnesting{eerste}
+
+\startnesting{eerste}
+ \startnesting{tweede}
+ \startnesting{derde}
+ \startnesting{vierde}
+ test
+ \stopnesting{vierde}
+ \stopnesting{derde}
+ \stopnesting{tweede}
+\stopnesting{eerste}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-narrowtt.tex b/Master/texmf-dist/tex/context/base/m-narrowtt.tex
new file mode 100644
index 00000000000..3a83b7d940f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-narrowtt.tex
@@ -0,0 +1,38 @@
+%D \module
+%D [ file=m-narrowtt,
+%D version=2005.09.08,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Narrow Verbatim,
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Test file
+%D
+%D \starttyping
+%D \usemodule[narrowtt]
+%D \starttext
+%D \starttyping
+%D Test test test.
+%D \stoptyping
+%D test \type {test} test \ntype{test} test
+%D \startntyping
+%D Test test test.
+%D \stopntyping
+%D \stoptext
+%D \stoptyping
+
+\unprotect
+
+\definetypeface
+ [narrowtt] [tt]
+ [mono] [modern-cond] [default] [encoding=\defaultencoding]
+
+\definetyping[n\v!typing][\v!typing] \setuptyping[n\v!typing][style=\narrowtt]
+\definetype [n\v!type] [\v!type] \setuptype [n\v!type] [style=\narrowtt]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-newmat.tex b/Master/texmf-dist/tex/context/base/m-newmat.tex
new file mode 100644
index 00000000000..6f5f3586a69
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-newmat.tex
@@ -0,0 +1,301 @@
+%D \module
+%D [ file=m-newmat,
+%D version=2000.11.16,
+%D title=\CONTEXT\ Math Module,
+%D subtitle=AMS-like math extensions,
+%D author={Taco Hoekwater \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA / Taco Hoekwater}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+%D This module collects macros that \TEX\ users kind of expect
+%D to be available when typesetting math. Most of them
+%D originate in the \AMS\ macro packages. We have taken the
+%D freedom to adapt them to \CONTEXT. This module is derived
+%D from the \type {m-math} module by Taco Hoekwater (partially
+%D derived from AMS math modules) and adapted|/|extended by
+%D Hans Hagen.
+
+%D Here we will add code on demand. So, just let us know what
+%D should go in here.
+
+%M \usemodule[newmat]
+
+\unprotect
+
+%D \macros
+%D {qedsymbol}
+%D
+%D [HH] The general Quod Erat Domonstrandum symbol is defined
+%D in such a way that we can configure it. Because this symbol
+%D is also used in text mode, we make it a normal text symbol
+%D with special behavior.
+
+\def\qedsymbol#1%
+ {\ifhmode
+ \unskip~\hfill#1\par
+ \else\ifmmode
+ \eqno#1\relax % Do we really need the \eqno here?
+ \else
+ \leavevmode\hbox{}\hfill#1\par
+ \fi\fi}
+
+\definesymbol [qed] [\qedsymbol{\mathematics{\square}}]
+
+%D \macros
+%D {QED}
+%D
+%D [HH] For compatbility reasons we also provide the \type
+%D {\QED} command. In case this command is overloaded, we still
+%D have the symbol available. \symbol[qed]
+
+\def\QED{\symbol[qed]}
+
+%D \macros
+%D {genfrac}
+%D
+%D [TH] The definition of \type {\genfrac} \& co. is not
+%D trivial, because it allows some flexibility. This is
+%D supposed to be a user||level command, but will fail quite
+%D desparately if called outside math mode (\CONTEXT\ redefines
+%D \type {\over})
+%D
+%D [HH] We clean up this macro a bit and (try) to make it
+%D understandable. The expansion is needed for generating
+%D the second argument to \type {\dogenfrac}, which is to
+%D be a control sequence like \type {\over}.
+
+\unexpanded\def\genfrac#1#2#3#4%
+ {\edef\!!stringa
+ {#1#2}%
+ \expanded
+ {\dogenfrac{#4}%
+ \csname
+ \ifx @#3@%
+ \ifx\!!stringa\empty
+ \strippedcsname\normalover
+ \else
+ \strippedcsname\normaloverwithdelims
+ \fi
+ \else
+ \ifx\!!stringa\empty
+ \strippedcsname\normalabove
+ \else
+ \strippedcsname\normalabovewithdelims
+ \fi
+ \fi
+ \endcsname}%
+ {#1#2#3}}
+
+\def\dogenfrac#1#2#3#4#5%
+ {{#1{\begingroup#4\endgroup#2#3\relax#5}}}
+
+%D \macros
+%D {dfrac, tfrac, frac, dbinom, tbinom, binom}
+%D
+%D [TH] No need to make these \type {\unexpanded} as well.
+
+%\def\dfrac {\genfrac\empty\empty\empty\displaystyle}
+%\def\tfrac {\genfrac\empty\empty\empty\textstyle}
+%\def\frac {\genfrac\empty\empty\empty\donothing}
+
+\def\dfrac {\genfrac{}{}{}\displaystyle}
+\def\tfrac {\genfrac{}{}{}\textstyle}
+\def\frac {\genfrac{}{}{}\donothing}
+
+\def\dbinom{\genfrac()\zeropoint\displaystyle}
+\def\tbinom{\genfrac()\zeropoint\textstyle}
+\def\binom {\genfrac()\zeropoint\donothing}
+
+\def\xfrac {\genfrac{}{}{}\scriptstyle}
+\def\xxfrac{\genfrac{}{}{}\scriptscriptstyle}
+
+%D Better:
+
+\unexpanded\def\frac#1#2{\mathematics{\genfrac{}{}{}\donothing{#1}{#2}}}
+
+%D [HH] This shows up as:
+%D
+%D \startbuffer
+%D $\dfrac {1}{2} \tfrac {1}{2} \frac {1}{2}$
+%D $\dbinom{1}{2} \tbinom{1}{2} \binom{1}{2}$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+%D \macros
+%D {text}
+%D
+%D [TH] \type {\text} is a command to typeset more or less
+%D ordinary text inside of super- and sub|-|scripts. It has to
+%D do a full font switch to get the sides right, so it will be
+%D quite slow. \type {\text} kind of replaces \CONTEXT's \type
+%D {\mathstyle} command.
+
+%D [HH] This macro is now also moved to the core, but we
+%D keep it here as well for completeness.
+%D
+%D \starttyping
+%D \unexpanded\def\mathtext
+%D {\mathortext\domathtext\hbox} % {\ifmmode\@EA\dotext\else\@EA\hbox\fi}
+%D
+%D \def\domathtext#1%
+%D {\mathchoice
+%D {\dodomathtext\displaystyle\textface {#1}}%
+%D {\dodomathtext\textstyle \textface {#1}}%
+%D {\dodomathtext\textstyle \scriptface {#1}}%
+%D {\dodomathtext\textstyle \scriptscriptface{#1}}}
+%D
+%D \def\dodomathtext#1#2#3% no \everymath !
+%D %{\hbox{\everymath{#1}\switchtobodyfont [#2]#3}} % 15 sec
+%D {\hbox{\everymath{#1}\setcurrentfontbody{#2}#3}} % 3 sec (no math)
+%D \stoptyping
+
+%D [HH] We use the following indirectness because \type {\text}
+%D is a natural candidate for user macros (actually, it is
+%D used in some modules).
+%D
+%D \starttyping
+%D \let\text\mathtext
+%D \stoptyping
+
+%D [HH] Actually, the font switch is not that slow when
+%D typefaces are used. If needed this macro can be sped up.
+%D
+%D \startbuffer
+%D ordinary text $x^{\text{extra ordinary text}}$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+%D \macros
+%D {mathhexbox}
+%D
+%D [TH] \type {\mathhexbox} is also user||level (already
+%D defined in Plain \TEX). It allows to get a math character
+%D inserted as if it was a text character.
+
+\gdef\mathhexbox#1#2#3{\mathtext{$\m@th\mathchar"#1#2#3$}}
+
+%D \macros
+%D {boxed}
+%D
+%D [HH] Another macro that users expect (slightly adapted):
+
+\def\boxed%
+ {\ifmmode\expandafter\mframed\else\expandafter\framed\fi}
+
+%D \macros
+%D {cfrac}
+%D
+%D [HH] Now let us see what this one does:
+%D
+%D \startbuffer
+%D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$
+%D $\cfrac{1}{23} \cfrac[l]{1}{23} \cfrac[c]{1}{23} \cfrac[r]{1}{23}$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+\definecomplexorsimple\cfrac
+
+\def\simplecfrac
+ {\complexcfrac[c]}
+
+\def\complexcfrac[#1]#2#3%
+ {{\displaystyle
+ \frac
+ {\strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}%
+ {#3}}%
+ \kern-\nulldelimiterspace}
+
+%D [HH] The next alternative is nicer:
+
+\def\simplecfrac {\docfrac[cc]}
+\def\complexcfrac[#1]{\docfrac[#1cc]}
+
+\def\docfrac[#1#2#3]#4#5%
+ {{\displaystyle
+ \frac
+ {\strut
+ \ifx r#1\hfill\fi#4\ifx l#1\hfill\fi}%
+ {\ifx r#2\hfill\fi#5\ifx l#2\hfill\fi}%
+ \kern-\nulldelimiterspace}}
+
+%D [HH] Now we can align every combination we want:
+%D
+%D \startbuffer
+%D $\cfrac{12}{3} \cfrac[l]{12}{3} \cfrac[c]{12}{3} \cfrac[r]{12}{3}$
+%D $\cfrac{1}{23} \cfrac[l]{1}{23} \cfrac[c]{1}{23} \cfrac[r]{1}{23}$
+%D $\cfrac[cl]{12}{3} \cfrac[cc]{12}{3} \cfrac[cr]{12}{3}$
+%D $\cfrac[lc]{1}{23} \cfrac[cc]{1}{23} \cfrac[rc]{1}{23}$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+
+\protect \endinput
+
+%D \macros
+%D {startsubarray,substack,startsmallmatrix}
+%D
+%D [HH] I wonder what these are supposed to do. An example
+%D will be inserted later. Contrary to the original we
+%D support an optional argument between either \type {{}} or
+%D \type {[]}.
+
+\def\startsubarray
+ {\doifnextcharelse\bgroup
+ \simplestartsubarray{\dosingleempty\complexstartsubarray}}
+
+\def\complexstartsubarray[#1]%
+ {\simplestartsubarray{#1}}
+
+\def\simplestartsubarray#1%
+ {\vcenter\bgroup
+ \baselineskip\fontdimen10 \scriptfont\tw@
+ \advance\baselineskip\fontdimen12 \scriptfont\tw@
+ \lineskip\thr@@\fontdimen8 \scriptfont\thr@@
+ \lineskiplimit\lineskip
+ \ialign\bgroup\ifx c#1\hfil\fi$\m@th\scriptstyle##$\hfil\crcr}
+
+\def\stopsubarray
+ {\crcr\egroup
+ \egroup}
+
+\def\startsubstack
+ {\doifnextcharelse\bgroup
+ \simplestartsubstack{\dosingleempty\complexstartsubstack}}
+
+\def\complexstartsubstack[#1]%
+ {\simplestartsubstack{#1}}
+
+\def\simplesubstack#1%
+ {\startsubarray[c]#1\stopsubarray}
+
+\def\startsmallmatrix
+ {\null
+ \,%
+ \vcenter\bgroup
+ \baselineskip6\ex@
+ \lineskip1.5\ex@
+ \lineskiplimit\lineskip
+ \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil
+ $\m@th\scriptstyle##$\hfil\crcr}
+
+\def\stopsmallmatrix
+ {\crcr\egroup
+ \egroup
+ \,}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-pdfsnc.tex b/Master/texmf-dist/tex/context/base/m-pdfsnc.tex
new file mode 100644
index 00000000000..81221842735
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-pdfsnc.tex
@@ -0,0 +1,200 @@
+%D \module
+%D [ file=m-pdfsnc,
+%D version=2003.12.23,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Editor Synchronization
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \enablemode[demo]
+
+% This file is a variation of the file pdfsync4context.tex that ships
+% with the pdfsync package (used by iTeXMac and TeXShop) by Piero
+% D'Ancona and Jérôme Laurens. I made the macros a bit more efficient
+% and added some basic tracing options as well as a few more options.
+% I made this one while playing a bit with the Mac and TeX). Maybe I'll
+% add a bit of support to the kernel in in order to get rid of redundant
+% markers. Also, this had better be rewritten in a bit less \pdf
+% dependent way so that it can also be supported by dvipdfmx. I could
+% write a generic file as well, but since there is already support for
+% other packages I'll not do that (now).
+
+% compatible commands:
+%
+% \pdfsyncstart \pdfsyncstop \pdfsync
+%
+% extra commands:
+%
+% \enablepdfsync \disablepdfsync \pdfsynctext \pdfsyncnode \pdfsynctracemode
+
+\ifx\pdfoutput\undefined
+ \donefalse
+\else\ifcase\pdfoutput
+ \donefalse
+\else\ifx\pdfsavepos\undefined
+ \donefalse
+\else
+ \donetrue
+\fi\fi\fi
+
+\chardef \pdfsyncstate \zerocount
+\chardef \pdfsynctracemode \zerocount
+
+\ifdone
+
+ \writestatus{pdfsync}{loading and enabling synchronization support}
+
+\else
+
+ \writestatus{pdfsync}{synchronization is only available with pdftex}
+
+ \let \pdfsyncstart \relax % brr, not per se symmetrically used, so
+ \let \pdfsyncstop \relax % enable and disable are better names
+ \let \pdfsync \relax
+
+ \let \pdfsynctext \gobbleoneargument
+ \let \pdfsyncnode \gobbleoneargument
+
+ \let \enablepdfsync \pdfsyncstart
+ \let \disablepdfsync \pdfsyncstop
+
+ \expandafter\endinput
+\fi
+
+\unprotect % not really needed
+
+\newcount \pdfsynccounter
+\newwrite \pdfsyncwrite
+
+\def\pdfsyncstart{\chardef\pdfsyncstate\plusone} \let\enablepdfsync \pdfsyncstart
+\def\pdfsyncstop {\chardef\pdfsyncstate\zerocount} \let\disablepdfsync\pdfsyncstop
+
+\def\dostartpdfsync
+ {\immediate\openout\pdfsyncwrite\jobname.pdfsync
+ \immediate\write\pdfsyncwrite{\jobname}%
+ \immediate\write\pdfsyncwrite{version 0}}
+
+\def\dostoppdfsync
+ {\immediate\closeout\pdfsyncwrite}
+
+\def\doregisterpdfsyncpage
+ {\immediate\write\pdfsyncwrite{s\space\realfolio}}
+
+\def\dopdfsyncopenfile
+ {\immediate\write\pdfsyncwrite{(\space\readfilename}}
+
+\def\dopdfsyncclosefile
+ {\immediate\write\pdfsyncwrite{)}}
+
+\def\doregisterpdfsyncnode#1%
+ {\ifcase\pdfsyncstate\else
+ \pdfsavepos
+ \immediate\write\pdfsyncwrite{l\space\the\pdfsynccounter\space\the\inputlineno}%
+ \expanded{\write\pdfsyncwrite{p\ifnum#1=\plusone*\fi\space\the\pdfsynccounter\space\noexpand\the\pdflastxpos\space\noexpand\the\pdflastypos}}%
+ \global\advance\pdfsynccounter\plusone
+ \fi}
+
+\let\pdfsynctracer\gobbleoneargument
+
+\def\pdfsync {\doregisterpdfsyncnode\plusone \pdfsynctracer*}
+\def\pdfsyncnode{\doregisterpdfsyncnode\zerocount\pdfsynctracer}
+\def\pdfsynctext{\doregisterpdfsyncnode\plusone \pdfsynctracer}
+
+\appendtoks \dostartpdfsync \to \everystarttext
+%appendtoks \dostoppdfsync \to \everystoptext
+\appendtoks \doregisterpdfsyncpage \to \everyshipout
+\appendtoks \dopdfsyncopenfile \to \everybeforereadfile
+\appendtoks \dopdfsyncclosefile \to \everyafterreadfile
+
+\appendtoks \enablepdfsync \to \everystarttext
+\appendtoks \disablepdfsync \to \everypagebody
+
+% beware, adding nodes this way will interfere with the typesetting
+
+\appendtoks \pdfsyncnode p\to \everypar
+\appendtoks \pdfsyncnode m\to \everymath
+\appendtoks \pdfsyncnode h\to \everyhbox
+
+% just for fun
+
+\def\pdfsynctracer#1%
+ {\ifcase\pdfsynctracemode\else
+ \ifcase\pdfsyncstate\else
+ \begingroup
+ \forgetall
+ \disablepdfsync
+ \ifcase\pdfsynctracemode\or % could be done more efficient, box around ifcase
+ \setbox\scratchbox\hbox to \zeropoint{\hss\infofont#1\hss}% 1
+ \else
+ \setbox\scratchbox\hbox to \zeropoint{\hss\traceboxplacementtrue\boxcursor\hss}% 2/3/4
+ \fi
+ \smashbox\scratchbox\box\scratchbox
+ \ifcase\pdfsynctracemode\or\or\or
+ \setbox\scratchbox\hbox to \zeropoint{\hss\raise1.25ex\hbox{\infofont#1}\hss}% 3
+ \smashbox\scratchbox\box\scratchbox
+ \or
+ \setbox\scratchbox\hbox to \zeropoint{\hss\lower1.25ex\hbox{\infofont#1}\hss}% 4
+ \smashbox\scratchbox\box\scratchbox
+ \fi
+ \endgroup
+ \fi
+ \fi}
+
+% \def\pdfsynctracer#1% more efficient but unreadable
+% {\ifcase\pdfsynctracemode\else
+% \ifcase\pdfsyncstate\else
+% \begingroup
+% \forgetall
+% \disablepdfsync
+% \setbox\scratchbox\hbox to \zeropoint
+% {\hss
+% \ifcase\pdfsynctracemode\or
+% \infofont#1% 1
+% \else
+% \traceboxplacementtrue\boxcursor% 2/3/4
+% \fi
+% \hss}%
+% \smashbox\scratchbox\box\scratchbox
+% \setbox\scratchbox\hbox to \zeropoint
+% {\hss
+% \ifcase\pdfsynctracemode\or\or\or
+% \raise1.25ex\hbox{\infofont#1}% 3
+% \or
+% \lower1.25ex\hbox{\infofont#1}% 4
+% \fi
+% \hss}%
+% \smashbox\scratchbox\box\scratchbox
+% \endgroup
+% \fi
+% \fi}
+
+\protect
+
+\doifnotmode{demo}{\endinput}
+
+\chardef\pdfsynctracemode=3
+
+\starttext
+
+\chapter{Test}
+
+\processfile{tufte}
+
+\startitemize
+\item first
+\item second
+\stopitemize
+
+\processfile{tufte}
+
+\startlines
+some local \pdfsync sync and \pdfsynctext{here}a marked point
+some local \pdfsync sync and \pdfsyncnode{here}a marked point
+\stoplines
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-pictex.tex b/Master/texmf-dist/tex/context/base/m-pictex.tex
new file mode 100644
index 00000000000..98c5ddbcd01
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-pictex.tex
@@ -0,0 +1,252 @@
+%D \module
+%D [ file=m-pictex,
+%D version=1997.01.15,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\PICTEX\ Loading Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is one big hack. This hack is not needed when
+%D using \ETEX, so there we simply load \PICTEX\ and quit.
+
+%D Not every package defines \type{\fiverm}, \PICTEX's pixel,
+%D so let's take care of that omision here. The actual loading
+%D of \PICTEX\ depends on the package. For \LATEX\ users we
+%D take care of loading the auxiliary ones too.
+
+\def\loadpictex%
+ {\ifx\grid\undefined \else \let\normalgrid\grid \fi
+ \ifx\axis\undefined \else \let\normalaxis\axis \fi
+ \ifx\undefined\fiverm
+ \font\fiverm=cmr5
+ \fi
+ \ifx\beginpicture\undefined
+ \ifx\newenvironment\undefined
+ \input pictex.tex \relax
+ \else
+ \input prepictex.tex \relax
+ \input pictex.tex \relax
+ \input postpictex.tex \relax
+ \fi
+ \fi
+ \ifx\normalgrid\undefined \else
+ \let\pictexgrid\grid
+ \let\grid\normalgrid
+ \fi
+ \ifx\normalaxis\undefined \else
+ \let\pictexaxis\axis
+ \let\axis\normalaxis
+ \fi}
+
+\ifx\eTeXversion\undefined \else \loadpictex \expandafter \endinput \fi
+
+%D When not in \ETEX\ and not in \CONTEXT, we load a few
+%D auxiliary macros.
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+
+\unprotect
+
+%D \TEX\ provides 256 \DIMENSIONS\ and 256 \SKIPS. In \CONTEXT\
+%D this is no problem, but in packages that have many
+%D authors, one can be quite sure that a lot of \DIMENSIONS\ are
+%D allocated. Packages that use \PICTEX\ can therefore run out
+%D of \DIMENSIONS\ quite fast. This module was written as a
+%D reaction to persistent problems with loading \PPCHTEX\ in
+%D \LATEX\ and \PICTEX\ deserves a solution. I therefore
+%D dedicate this module to Tobias Burnus and Dirk Kuypers, who
+%D use \PPCHTEX\ in a \LATEX\ environment and suggested a lot
+%D of extensions to the repertoire of \PPCHTEX\ commands.
+%D
+%D This module presents a solution that is quite effective: all
+%D \DIMENSIONS\ are drawn from the pool of \DIMENSIONS\ and
+%D \SKIPS, depending on the availability. This is possible
+%D because \DIMENSIONS\ are \SKIPS\ without a glue component.
+%D Therefore we can use \SKIPS\ as \DIMENSIONS. However, some
+%D incompatibility can result from assignments that look like:
+%D
+%D \starttyping
+%D \somedimen=\someskip
+%D \stoptyping
+%D
+%D In such cases the \DIMENSION\ equals the fixed part of the
+%D \SKIP\ or in other words: this assignment strips off the
+%D glue. Because \PICTEX\ uses no glue components, I thought
+%D I could interchange both register types without problems,
+%D but alas, this didn't hold for all \DIMENSIONS.
+
+%D In \PLAIN\ \TEX\ the allocation macros are defined with (as)
+%D \type{\outer}. This means that they cannot appear inside
+%D macros, not even in an indirect way. We therefore have to
+%D redefine both \type{\newdimen} and \type{\newskip} to
+%D non||\type{\outer} alternatives. In most macro packages this
+%D redefinition already took place. We save the original
+%D meanings, so we can restores them afterwards.
+
+\let\normalnewdimen = \newdimen
+\let\normalnewskip = \newskip
+
+\def\temporarynewdimen {\alloc@1\dimen\dimendef\insc@unt}
+\def\temporarynewskip {\alloc@2\skip \skipdef \insc@unt}
+
+%D Here comes the trick. Depending on how many \DIMENSIONS\ and
+%D \SKIPS\ are allocated, the \type{\newdimen} assigns a
+%D \DIMENSIONS\ or \SKIP. \PLAIN\ \TEX\ allocates 15 \DIMENSIONS\
+%D and 17 \SKIPS. After loading \PICTEX, 71 \DIMENSIONS\ and
+%D and 71 \SKIPS\ are allocated. Indeed, \PICTEX\ needs 110
+%D \DIMENSIONS !
+%D
+%D \starttyping
+%D \def\newdimen
+%D {\ifnum\count11>\count12
+%D \let\next\temporarynewskip
+%D \else
+%D \let\next\temporarynewdimen
+%D \fi
+%D \next}
+%D \stoptyping
+%D
+%D When I was testing a new version of \PPCHTEX\ in \PLAIN\
+%D \TEX\ I had to find out that this exchange of registers
+%D sometimes leads to unwanted results. It took me some hours
+%D to find out that the source of errors originated in
+%D constructions like:
+%D
+%D \starttyping
+%D \ifdim\DimenOne<\DimenTwo whatever you want \else or not \fi
+%D \stoptyping
+%D
+%D When \type{\DimenOne} is a \SKIP\ and \type{\DimenTwo} is a
+%D \DIMENSION, \TEX\ scans for some optional glue component,
+%D like in:
+%D
+%D \starttyping
+%D \skip0=\dimen0 plus 10pt minus 5pt
+%D \stoptyping
+%D
+%D The most robust solution to this problem is:
+%D
+%D \starttyping
+%D \ifdim\DimenOne<\DimenTwo\relax right \else wrong \fi
+%D \stoptyping
+%D
+%D Some close reading of the \PICTEX\ source however learned me
+%D that this problem could be solved best by just honoring the
+%D allocation of \DIMENSIONS\ when the name of the macro
+%D explictly stated the character sequence \type{dimen}. A next
+%D implementation therefore automatically declared all
+%D \DIMENSIONS\ with this sequence in their names with
+%D \type{\dimen}. Again I was too optimistic, so now we do it
+%D this way (the comments are from \PICTEX, which like \TABLE,
+%D is an example of a well documented package):
+
+\temporarynewdimen\!dimenA %.AW.X.DVEUL..OYQRST
+\temporarynewdimen\!dimenB %....X.DVEU...O.QRS.
+\temporarynewdimen\!dimenC %..W.X.DVEU......RS.
+\temporarynewdimen\!dimenD %..W.X.DVEU....Y.RS.
+\temporarynewdimen\!dimenE %..W........G..YQ.S.
+\temporarynewdimen\!dimenF %...........G..YQ.S.
+\temporarynewdimen\!dimenG %...........G..YQ.S.
+\temporarynewdimen\!dimenH %...........G..Y..S.
+\temporarynewdimen\!dimenI %...BX.........Y....
+\temporarynewdimen\!dxpos %..W......U..P....S.
+\temporarynewdimen\!dypos %..WB.....U..P......
+\temporarynewdimen\!xloc %..WB.....U.......S.
+\temporarynewdimen\!xpos %..........L.P..Q.ST
+\temporarynewdimen\!yloc %..WB.....U.......S.
+\temporarynewdimen\!ypos %..........L.P..Q.ST
+\temporarynewdimen\!zpt %.AWBX.DVEULGP.YQ.ST
+
+%D Tobias tested this module in all kind of \LATEX\ dialects
+%D so we were able to find out that we also needed to declare:
+
+\temporarynewdimen\linethickness
+
+%D After all, the new definition of \type{\newdimen} became:
+
+\def\newdimen#1%
+ {\ifx#1\undefined
+ \ifnum\count11>\count12\relax
+ \temporarynewskip#1\relax
+ \else
+ \temporarynewdimen#1\relax
+ \fi
+ %\edef\ascii{\meaning#1}%
+ %\immediate\write20{\string#1 becomes \ascii}%
+ \else
+ %\edef\ascii{\meaning#1}%
+ %\immediate\write20{\string#1 already is \ascii}%
+ \fi}
+
+% \def\newdimen#1%
+% {\bgroup
+% \escapechar=-1
+% \def\next##1##2%
+% {\def\next####1##1####2####3\next%
+% {\egroup
+% \if####2@
+% \temporarynewdimen#1\relax
+% \ifnum\count11>\count12
+% \temporarynewskip#1\relax
+% \else
+% \temporarynewdimen#1\relax
+% \fi\fi}%
+% \expandafter\next\string##2##1@@\next}%
+% \expandafter\next\expandafter{\string\dimen}#1}
+%
+% This macro is as unreadable, inefficient and as compact as
+% can be, but uses no extra hash entries, which sometimes are
+% scarce too. A more readable alternative, that also takes
+% explicit \SKIPS\ into account, is included in the source.
+%
+% \def\doifregisterpreferenceelse#1#2#3#4%
+% {\def\dodoifregisterpreferenceelse##1#1##2##3\war{\if##2@}%
+% \expandafter\dodoifregisterpreferenceelse\string#2#1@@\war
+% #4%
+% \else
+% #3%
+% \fi}
+%
+% \def\newdimen#1%
+% {\bgroup
+% \escapechar=-1
+% \expandafter\doifregisterpreferenceelse\expandafter{\string\dimen}#1
+% {\egroup
+% \temporarynewdimen#1}
+% {\expandafter\doifregisterpreferenceelse\expandafter{\string\skip}#1
+% {\egroup
+% \temporarynewskip#1}
+% {\egroup
+% \ifnum\count11>\count12
+% \temporarynewskip#1\relax
+% \else
+% \temporarynewdimen#1\relax
+% \fi}}}
+
+%D Curious readers can still find the previous solution in
+%D the source. The next macro is used instead of
+%D \type{\input}. This macro also reports some statistics.
+
+\def\dimeninput#1 %
+ {\message{[before: d=\the\count11,s=\the\count12]}%
+ \input #1 \relax
+ \message{[after: d=\the\count11,s=\the\count12]}}%
+
+%D Now we can load \PICTEX:
+
+\loadpictex
+
+%D Finally we restore the old definitions of \type{\newdimen}
+%D and \type{\newskip}:
+
+\let\newdimen=\normalnewdimen
+\let\newskip =\normalnewskip
+
+%D and just hope for the best.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-plus.tex b/Master/texmf-dist/tex/context/base/m-plus.tex
new file mode 100644
index 00000000000..a38c73129fa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-plus.tex
@@ -0,0 +1,29 @@
+%D \module
+%D [ file=m-plus,
+%D version=2003.03.16,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Loading extra features,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Somewhere in 2001 I started collecting new functionality
+%D in a module \type {m-yesno}. As the name suggests, I was
+%D not entirely sure if this functionality belonged in the
+%D kernel. When (again) on the \CONTEXT\ list a request for
+%D side bars was posted, I decided to move such code to plus
+%D modules. Users who want this additional functionality can
+%D put the following call in their \type {cont-sys.tex} file:
+%D
+%D \starttyping
+%D \usemodule[plus]
+%D \stoptyping
+
+\readfile {plus-rul} \donothing \donothing
+\readfile {plus-pag} \donothing \donothing
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/m-pstric.tex b/Master/texmf-dist/tex/context/base/m-pstric.tex
new file mode 100644
index 00000000000..707984d288f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-pstric.tex
@@ -0,0 +1,113 @@
+%D \module
+%D [ file=m-pstricks,
+%D version=1997.01.15,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\PSTRICKS\ Connections,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%M \usemodule[pstric]
+
+\chardef\oldbarcode\the\catcode`\| \catcode`\|=12
+
+\def\loadpstrickscolors#1%
+ {\pushmacro\dodefinecolor
+ \pushmacro\dodefinepalet
+ \pushmacro\dodefinecolorgroup
+ \def\dodefinecolor[##1][##2]%
+ {\doifassignmentelse{##2}
+ {\getparameters[pstricks][r=0,g=0,b=0,##2]%
+ \expanded{\newrgbcolor{##1}{{\pstricksr} {\pstricksg} {\pstricksb}}}}%
+ {}}%
+ \def\dodefinepalet [##1][##2]{}%
+ \def\dodefinecolorgroup[##1][##2][##3]{}%
+ \writestatus{pstricks}{loading colors from #1}%
+ \input #1 \relax
+ \popmacro\dodefinecolorgroup
+ \popmacro\dodefinepalet
+ \popmacro\dodefinecolor}
+
+\doifelse{\jobsuffix}{dvi}
+ {\input multido \relax
+ \input pstricks \relax
+ \input pst-plot \relax
+ \loadpstrickscolors{colo-rgb}}
+ {\writestatus{pstricks}{using indirect method; enable write18}}
+
+\catcode`\|=\oldbarcode
+
+%D The next piece of code is for John Culleton who suggested to
+%D handle \PSTRICKS\ in a similar fashion as \METAPOST, i.e.\
+%D using a child process. For the moment there is no support
+%D for passing environments, so these should be called
+%D explicitly inside this environment.
+
+\unprotect
+
+%D \startPSTRICKS[offset=2pt] ... \stopPSTRICKS
+%D
+%D works in both dvi and pdf mode
+%D
+%D % \usemodule[pstric]
+%D
+%D \startPSTRICKS
+%D \pspicture(0,0)(10,10)
+%D \dorecurse{10}{\psline(0,0)(\recurselevel,10)}
+%D \dorecurse{10}{\psline(0,0)(10,\recurselevel)}
+%D \endpspicture
+%D \stopPSTRICKS
+
+\def\startPSTRICKS
+ {\dosingleempty\dostartPSTRICKS}
+
+\ifx\startTEXapplication\undefined
+
+\long\def\dostartPSTRICKS[#1]#2\stopPSTRICKS
+ {\doifelse{\jobsuffix}{dvi}
+ {#2}
+ {\bgroup
+ \setbuffer[pstricks]%
+ \usemodule[pstric]%
+ \setbox\scratchbox\hbox{#2}%
+ % There is probably a nicer way to handle this
+ \immediate\openout\scratchwrite=\bufferprefix dim.tmp
+ \immediate\write\scratchwrite{\dimen0=\the\ht\scratchbox}%
+ \immediate\write\scratchwrite{\dimen2=\the\wd\scratchbox}%
+ \immediate\closeout\scratchwrite
+ % Quick and dirty
+ \startTEXpage[#1]\box\scratchbox\stopTEXpage
+ \endbuffer
+ % Here we go!
+ %\immediate\write18{texexec \bufferprefix pstricks.tmp --once --batch}%
+ %\immediate\write18{dvips -G0 -Ppdf \bufferprefix pstricks -o}%
+ %\immediate\write18{ps2pdf \bufferprefix pstricks.ps \bufferprefix pstricks.pdf}%
+ \executesystemcommand{texexec \bufferprefix pstricks.tmp --once --batch}%
+ \executesystemcommand{dvips -G0 -Ppdf \bufferprefix pstricks -o}%
+ \executesystemcommand{ps2pdf \bufferprefix pstricks.ps \bufferprefix pstricks.pdf}%
+ % We pick up the dimensions from the scratch file.
+ \readlocfile{\bufferprefix pstricks-dim.tmp}{}{}%
+ % Since the graphic is put on a page (sigh) by dvips/gs
+ % we need to shift it around a bit.
+ \setbox\scratchbox\hbox
+ {\externalfigure[\bufferprefix pstricks.pdf][\c!object=\v!no]}%
+ \setbox\scratchbox\hbox
+ {\lower\ht\scratchbox\hbox{\raise\dimen2\box\scratchbox}}%
+ \wd\scratchbox\dimen0
+ \ht\scratchbox\dimen2
+ \dp\scratchbox\zeropoint
+ \box\scratchbox
+ \egroup}}
+
+\fi
+
+\long\def\dostartPSTRICKS[#1]#2\stopPSTRICKS
+ {\doifelse{\jobsuffix}{dvi} % will some day move to app as switch
+ {\hbox{#2}}
+ {\startTEXapplication[#1]{\usemodule[pstric]}#2\stopTEXapplication}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-quest.tex b/Master/texmf-dist/tex/context/base/m-quest.tex
new file mode 100644
index 00000000000..d20c86c93b0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-quest.tex
@@ -0,0 +1,232 @@
+%D \module
+%D [ file=m-invull,
+%D version=1995.01.10,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Exercise,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%I Invuloefeningen kunnen worden vormgegeven met het
+%I de commando's:
+%I
+%I \definieerinvulwoord[trefwoord]{woord,woord}
+%I \invulwoord[trefwoord]
+%I \invulwoord{woord,woord,...}
+%I
+%I Daarbij kan het een en ander worden ingesteld met
+%I
+%I \stelinvullenin[status=,nummer=,links=,rechts=,letter=]
+%P
+%I Er zijn drie manieren om woorden in te vullen. De meest
+%I eenvoudige is die waarbij de in te vullen woorden in de
+%I tekst staan.
+%I
+%I bla bla \invulwoord{een,alfa} bla bla bla bla bla bla
+%I bla bla bla bla bla bla bla bla \invulwoord{twee,beta}.
+%I
+%I De gezette tekst hangt af van de instellingen:
+%I
+%I [status=leeg] ________
+%I [status=vol,nummer=1] 'een' respectievelijk 'twee'
+%I [status=vol,nummer=2] 'alfa' respectievelijk 'beta'
+%I
+%I Het nummer heeft dus betrekking op het volgnummer in de
+%I opgegeven reeks.
+%P
+%I Bij de tweede manier worden eerste de alternatieven
+%I gedefinieerd:
+%I
+%I \definieerinvulwoord{een,alfa}
+%I \definieerinvulwoord{twee,beta}
+%I
+%I die vervolgens worden opgeroepen:
+%I
+%I bla \invulwoord[+] bla bla bla bla bla bla bla bla bla
+%I bla bla bla bla bla bla bla bla bla bla \invulwoord[+].
+%I
+%I De mogelijke instellingen komen overeen met die van de
+%I eerste manier.
+%P
+%I De derde manier is een variant op de tweede. Bij grote
+%I teksten kan men het overzicht kwijtraken. Het is daarom
+%I mogelijk 'logische' namen toe te kennen aan woorden.
+%I
+%I \definieerinvulwoord[a]{een,alfa}
+%I \definieerinvulwoord[b]{twee,beta}
+%I
+%I die vervolgens worden opgeroepen:
+%I
+%I bla \invulwoord[a] bla bla bla bla bla bla bla bla bla
+%I bla bla bla bla bla bla bla bla bla bla \invulwoord[b].
+%I
+%I Dit maakt het bovendien mogelijk woorden meerdere malen
+%I (in een willekeurige volgorde op te roepen:
+%I
+%I bla \invulwoord[a] bla \invulwoord[b] bla bla bla bla
+%I bla bla bla bla \invulwoord[b] bla bla \invulwoord[a].
+%P
+%I Bij [status=leeg] wordt een streep gezet die in breedte
+%I overeenkomt met het woord dat er eigenlijk hoort te
+%I staan. De ingevulde tekst komt visueel daardoor overeen
+%I met de in te vullen tekst, wat vergelijken vereenvoudigd.
+%I
+%I Met [status=reset] worden enkele tellers weer op 0 gezet.
+%I Dit kan nodig zijn als meerdere invuloefeningen in een
+%I tekst worden gezet.
+%I
+%I Als \versie[voorlopig] is ingesteld, worden bij invullers
+%I zonder logische namen tussen haakjes de volgnummers
+%I getoond.
+
+%S \startsetup
+%S \command
+%S [stelinvullenin]
+%S \type
+%S [\c!vars!]
+%S \variable
+%S [\c!letter]
+%S [\v!normaal,\v!vet,\v!schuin,\v!vetschuin,\v!type,\v!kap,
+%S \v!klein...,\c!command!]
+%S [\v!vet]
+%S \variable
+%S [\c!links]
+%S [\c!text!]
+%S []
+%S \variable
+%S [\c!rechts]
+%S [\c!text!]
+%S []
+%S \variable
+%S [\c!status]
+%S [\v!leeg,\v!vol,\v!reset]
+%S [\v!vol]
+%S \variable
+%S [\c!nummer]
+%S [\c!number!]
+%S [1]
+%S \variable
+%S [\c!lijn]
+%S [\v!aan,\v!uit]
+%S [\v!aan]
+%S \stopsetup
+
+%S \startsetup
+%S \command
+%S [invulwoord]
+%S \type
+%S [\c!ref!,\c!opt!\c!val!\c!opt!\c!args!]
+%S \value
+%S [\c!text!]
+%S \stopsetup
+
+%S \startsetup
+%S \command
+%S [definieerinvulwoord]
+%S \type
+%S [\c!ref!,\c!opt!\c!val!\c!args!]
+%S \value
+%S [\c!text!]
+%S \stopsetup
+
+% Mogelijke uitbreidingen
+%
+% - [breedte=<maat>,passend,ruim]
+% - invullijst met nummers
+% - weergeven lijst tijdens definitie blokkeren
+% - door elkaar definieren
+
+\unprotect
+
+\definesystemvariable {iv}
+
+\definereferenceconstant {fillin} {:iv:}
+
+\newcount\invulteller \newcount\invulput \newcount\invulget
+
+\def\stelinvullenin
+ {\dosingleargument\dostelinvullenin}
+
+\def\dostelinvullenin[#1]%
+ {\getparameters[\??iv][#1]%
+ \doif\@@ivstate\v!reset
+ {\global\invulput\zerocount
+ \global\invulget\zerocount
+ \let\@@ivstate\empty}}
+
+\def\definieerinvulwoord
+ {\dosingleempty\dodefinieerinvulwoord}
+
+\def\dodefinieerinvulwoord[#1]#2%
+ {\iffirstargument
+ \setgvalue{\r!fillin#1}{\simpleinvulwoord{#2}}%
+ \else
+ \global\advance\invulput \plusone
+ \setgvalue{\r!fillin\the\invulput}{\simpleinvulwoord{#2}}%
+ \fi
+ \doifconcepttracing
+ {\ifnum\invulput>\zerocount
+ \setbox\scratchbox\hbox{~\ttx(\the\invulput)}%
+ \wd\scratchbox\zeropoint
+ \box\scratchbox
+ \par
+ \fi}}
+
+\def\dosimpleinvulwoord#1%
+ {\ifnum\@@ivnumber>\zerocount \advance\invulteller \plusone \fi
+ \ifnum\invulteller=\@@ivnumber\relax
+ \bgroup
+ \doconvertfont\@@ivstyle
+ {\@@ivleft
+ \doifelse\@@ivstate\v!empty
+ {\doifelse\@@ivrule\v!on\leeginvulwoord\geeninvulwoord}
+ {\doifelse\@@ivrule\v!on\underbar \firstofoneargument}%
+ {#1}%
+ \@@ivright}%
+ \egroup
+ \fi}%
+
+\def\simpleinvulwoord#1%
+ {\ifnum\@@ivnumber>0
+ \invulteller\zerocount
+ \processcommalist[#1]\dosimpleinvulwoord
+ \else
+ \dosimpleinvulwoord{#1}%
+ \fi}
+
+\def\complexinvulwoord[#1]%
+ {\bgroup
+ \doifsomething{#1}
+ {\global\advance\invulget \plusone
+ \doconvertfont\@@ivstyle
+ {\@@ivleft\getvalue{\r!fillin\the\invulget}\@@ivright}}
+ {\doconvertfont\@@ivstyle
+ {\@@ivleft\getvalue{\r!fillin #1}\@@ivright}}%
+ \egroup}
+
+\definecomplexorsimple\invulwoord
+
+\def\leeginvulwoord#1%
+ {{\let\redounderbar\dodounderbar
+ \def\dodounderbar##1{\redounderbar{\hphantom{##1}}}%
+ \underbar{#1}}}
+
+\def\geeninvulwoord#1%
+ {{\def\dodounderbar##1{\hphantom{##1}}%
+ \underbar{#1}}}
+
+% when nummer > 0, then commalist processing; beware of $(1,2)$, use { } there
+
+\stelinvullenin
+ [\c!number=0,
+ \c!style=\v!bold,
+ \c!rule=\v!on,
+ \c!left=,
+ \c!right=,
+ \c!state=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-steps.tex b/Master/texmf-dist/tex/context/base/m-steps.tex
new file mode 100644
index 00000000000..deda373eefe
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-steps.tex
@@ -0,0 +1,901 @@
+%D \module
+%D [ file=m-steps,
+%D version=2001.05.28,
+%D title=\CONTEXT\ Modules,
+%D subtitle=Step Charts \& Tables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% temp hack :
+
+% \ifx\v!kleinkorps\undefined \let\v!kleinkorps\setsmallbodyfont \fi
+
+% end of hack
+
+\definecolor [STEPlinecolor] [s=.5]
+\definecolor [STEPframecolor] [s=.7]
+\definecolor [STEPbackgroundcolor] [s=.9]
+
+\def\@@STPF{@@STPF} % frames
+
+\def\@@STPC{@@STPC} % charts
+\def\@@STPT{@@STPT} % tables
+
+\def\@@STEC{@@STEC} % cells
+\def\@@STET{@@STET} % tables
+\def\@@STEL{@@STEL} % lines
+
+\def\setupSTEPcharts{\dodoubleargument\getparameters[\@@STPC]}
+\def\setupSTEPtables{\dodoubleargument\getparameters[\@@STPT]}
+\def\setupSTEPcells {\dodoubleargument\getparameters[\@@STEC]}
+\def\setupSTEPtexts {\dodoubleargument\getparameters[\@@STET]}
+\def\setupSTEPlines {\dodoubleargument\getparameters[\@@STEL]}
+
+\setupSTEPcharts
+ [\c!before=\blank,
+ \c!after=\blank,
+ %\c!distance=.25em, % nvt
+ \c!hoffset=1em,
+ \c!voffset=1ex,
+ \c!method=1,
+ \c!height=2ex,
+ \c!offset=.15\bodyfontsize]
+
+\setupSTEPtables
+ [\c!before=\blank,
+ \c!after=\blank,
+ \c!distance=.25em,
+ %\c!hoffset=1em, % nvt
+ \c!voffset=1ex,
+ \c!method=1,
+ \c!width=4em,
+ \c!offset=.15\bodyfontsize]
+
+\setupSTEPcells
+ [\c!alternative=24,
+ \c!background=\v!color,
+ \c!backgroundcolor=STEPbackgroundcolor,
+ \c!rulethickness=.1\bodyfontsize,
+ \c!framecolor=STEPframecolor,
+ \c!offset=.25\bodyfontsize,
+ \c!style=,
+ \c!color=]
+
+\setupSTEPtexts
+ [\c!alternative=24,
+ \c!background=\v!color,
+ \c!backgroundcolor=STEPbackgroundcolor,
+ \c!rulethickness=.1\bodyfontsize,
+ \c!framecolor=STEPframecolor,
+ \c!offset=.25\bodyfontsize,
+ \c!style=\v!smallbodyfont,
+ \c!color=]
+
+\setupSTEPlines
+ [\c!alternative=1,
+ \c!rulethickness=.15\bodyfontsize,
+ \c!color=STEPlinecolor]
+
+\def\initializeSTEP
+ {\initializeSTET \initializeSTEC \initializeSTEL}
+
+\def\initializeSTPC
+ {\freezedimenmacro\@@STPCoffset
+ \startMPdrawing
+ line_v_offset := \@@STPCoffset ;
+ line_method := \@@STPCmethod ; % only charts
+ \stopMPdrawing}
+
+\def\initializeSTPT
+ {\freezedimenmacro\@@STPToffset
+ \startMPdrawing
+ line_h_offset := \@@STPToffset ;
+ line_method := \@@STPTmethod ; % only charts
+ \stopMPdrawing}
+
+\def\initializeSTET
+ {\freezedimenmacro\@@STETrulethickness
+ \freezedimenmacro\@@STEToffset}
+
+\def\initializeSTEC
+ {\freezedimenmacro\@@STECrulethickness
+ \freezedimenmacro\@@STECoffset}
+
+\def\initializeSTEL
+ {\freezedimenmacro\@@STELrulethickness}
+
+%D ...
+
+\defineXMLdirective [stepchart] [charts] \setupSTEPcharts
+\defineXMLdirective [stepchart] [cells] \setupSTEPcells
+\defineXMLdirective [stepchart] [texts] \setupSTEPtexts
+\defineXMLdirective [stepchart] [lines] \setupSTEPlines
+
+\defineXMLdirective [steptable] [tables] \setupSTEPtables
+\defineXMLdirective [steptable] [cells] \setupSTEPcells
+\defineXMLdirective [steptable] [texts] \setupSTEPtexts
+\defineXMLdirective [steptable] [lines] \setupSTEPlines
+
+%D ...
+
+\presetlocalframed[\@@STPF]
+
+\def\@@stepcell#1%
+ {\doattributes\@@STEC\c!style\c!color
+ {\localframed
+ [\@@STPF][\c!offset=\@@STECoffset,\c!frame=\v!off]
+ {\ignorespaces#1\unskip}}}
+
+\def\@@stepfake#1%
+ {\doattributes\@@STEC\c!style\c!color
+ {\ignorespaces#1\unskip}}
+
+\def\@@steptext#1%
+ {\doattributes\@@STET\c!style\c!color
+ {\localframed
+ [\@@STPF][\c!offset=\@@STEToffset,\c!frame=\v!off]
+ {\ignorespaces#1\unskip}}}
+
+%D The first attempt was purely \METAPOST\ based and spawned
+%D the typesetting to the \METAFUN\ handler. This method
+%D collects the cells, and directly passes them on to
+%D \METAPOST. This method is the cleanest, but has the
+%D disadvantage that one cannot embed hyperlinks or document
+%D dependent definitions in the cells. The implementation
+%D roughly looks as follows:
+%D
+%D \starttyping
+%D \def\startSTEPchart%
+%D {\bgroup
+%D \startMPdrawing
+%D input mp-step ; begin_step_chart ;
+%D \stopMPdrawing
+%D \initializeSTEP
+%D \let\cells\stepchartcells \def\cell{\cells{}}%
+%D \let\texts\stepcharttexts \def\text{\texts{}}}
+%D
+%D \def\stepchartcells#1#2%
+%D {\setMPtext{tdummy}{\strut\ignorespaces#1\unskip}% beter etex/btex
+%D \setMPtext{bdummy}{\strut\ignorespaces#2\unskip}% beter etex/btex
+%D \startMPdrawing
+%D set_step_chart_cells(\MPstring{tdummy},\MPstring{bdummy}) ;
+%D \stopMPdrawing}
+%D
+%D \def\stepcharttexts#1#2%
+%D {\setMPtext{tdummy}{\strut\ignorespaces#1\unskip}% beter etex/btex
+%D \setMPtext{bdummy}{\strut\ignorespaces#2\unskip}% beter etex/btex
+%D \startMPdrawing
+%D set_step_chart_texts(\MPstring{tdummy},\MPstring{bdummy}) ;
+%D \stopMPdrawing}
+%D
+%D \def\stopSTEPchart
+%D {\startMPdrawing
+%D end_step_chart ;
+%D \stopMPdrawing
+%D \MPdrawingdonetrue
+%D \getMPdrawing
+%D \resetMPdrawing
+%D \egroup}
+%D \stoptyping
+%D
+%D This method has the advantage that it does the job in
+%D (virtually) one pass, while the next methods need multiple
+%D passes: one to build the table, another to synchronize the
+%D positions, and a third one beause the dimensions may have
+%D changed. The last pass is a result from the fact that
+%D positions are related to the page.
+%D
+%D The second attempt was based on tabulations and used the
+%D build in position tracking mechanism, which uses two
+%D position nodes per cell.
+%D
+%D This method collects the content in token list registers
+%D and build a table from them. In the collecting pass, the
+%D graphics are build stepwise. We need to collect because the
+%D order of definitions is not the same as the order of
+%D typesetting. We show this alternative too because it
+%D demonstrates how to apply backgrounds to table cells.
+%D
+%D \starttyping
+%D \newtoks\stepsonetop \newtoks\stepstwotop
+%D \newtoks\stepsonebot \newtoks\stepstwobot
+%D \stoptyping
+%D
+%D During the collecting phase, we temporarily have to
+%D increment the name space counter.
+%D
+%D \starttyping
+%D \def\startSTEPchart%
+%D {\bgroup
+%D \resetMPdrawing
+%D \increment\noftabpositions % begin of preroll
+%D \startMPdrawing
+%D input mp-step ;
+%D begin_step_chart ;
+%D \stopMPdrawing
+%D \initializeSTEP
+%D \newcounter\cellcounter
+%D \stepsonetop\emptytoks \chardef\somesteponetop=1
+%D \stepsonebot\emptytoks \chardef\somesteponebot=1
+%D \stepstwotop\emptytoks \chardef\somesteptwotop=1
+%D \stepstwobot\emptytoks \chardef\somesteptwobot=1
+%D \let\cells\stepchartcells \def\cell{\cells{}}%
+%D \let\texts\stepcharttexts \def\text{\texts{}}}
+%D \stoptyping
+%D
+%D Now we collect the steps and texts, and in the process the
+%D graphic is built. Then we continue with building the table.
+%D
+%D Watch how we anchor the graphic to the main table box. This
+%D is needed since the graphic may be larger than the table
+%D itself. Actually, these small point took me the most time to
+%D digest, even with the right tools (anchors) already in
+%D place.
+%D
+%D \starttyping
+%D \def\stopSTEPchart
+%D {\splittabulatefalse
+%D \insidefloattrue
+%D \startMPdrawing
+%D nofcells := \cellcounter ;
+%D end_step_chart ;
+%D anchor_box(\MPpos{\tbPOSprefix origin}) ;
+%D \stopMPdrawing
+%D \MPdrawingdonetrue
+%D \decrement\noftabpositions % end of preroll
+%D \setbox0=\vbox
+%D {\getMPdrawing}
+%D \resetMPdrawing
+%D \increment(\cellcounter,\cellcounter)\decrement\cellcounter
+%D \setbox2=\vbox
+%D {\definetabulate[chart][|*{\cellcounter}{ck0|}] % k0 nills space
+%D \startchart
+%D \ifcase\somesteptwotop \the\stepstwotop \NC \NR \noalign{\kern2ex} \fi
+%D \ifcase\somesteponetop \the\stepsonetop \NC \NR \noalign{\kern2ex} \fi
+%D \ifcase\somesteponebot \the\stepsonebot \NC \NR \noalign{\kern2ex} \fi
+%D \ifcase\somesteptwobot \the\stepstwobot \NC \NR \noalign{\kern2ex} \fi
+%D \noalign{\kern-2ex}%
+%D \stopchart}
+%D \hbox
+%D {\scratchdimen\wd0
+%D \advance\scratchdimen \MPllx bp
+%D \raise\MPlly bp\box0
+%D \hskip-\scratchdimen
+%D \hpos{\tbPOSprefix origin}{\box2}}
+%D \egroup}
+%D \stoptyping
+%D
+%D The steps and texts fill the (at most 4) lines that make up
+%D the table. We also feed the (automatically registerd) cell
+%D dimensions to the graphic backend.
+%D
+%D \starttyping
+%D \newcounter\cellcounter
+%D \newcounter\textcounter
+%D
+%D \def\stepchartcells#1#2%
+%D {\doloop
+%D {\ifnum\cellcounter>\textcounter
+%D \stepcharttexts{}{}%
+%D \else
+%D \exitloop
+%D \fi}%
+%D \increment\cellcounter
+%D \doifelsenothing{#1}
+%D {\startMPdrawing
+%D cells[t][\cellcounter] := origin ;
+%D \stopMPdrawing
+%D \appendtoks\NC\NC\to\stepsonetop}
+%D {\chardef\somesteponetop=0
+%D \edef\stepidentifier{\cellcounter-t-c}%
+%D \startMPdrawing
+%D initialize_area(\MPpos{b:\tbPOSprefix\stepidentifier},
+%D \MPpos{e:\tbPOSprefix\stepidentifier}) ;
+%D cells[t][\cellcounter] := pxy ;
+%D \stopMPdrawing
+%D \@EA\appendtoks\@EA\stepidentifierposition\@EA{\stepidentifier}#1\NC\to\stepsonetop}%
+%D \doifelsenothing{#2}
+%D {\startMPdrawing
+%D cells[b][\cellcounter] := origin ;
+%D \stopMPdrawing
+%D \appendtoks\NC\NC\to\stepsonebot}
+%D {\chardef\somesteponebot=0
+%D \edef\stepidentifier{\cellcounter-b-c}%
+%D \startMPdrawing
+%D initialize_area(\MPpos{b:\tbPOSprefix\stepidentifier},
+%D \MPpos{e:\tbPOSprefix\stepidentifier}) ;
+%D cells[b][\cellcounter] := pxy ;
+%D \stopMPdrawing
+%D \@EA\appendtoks\@EA\stepidentifierposition\@EA{\stepidentifier}#2\NC\to\stepsonebot}}
+%D
+%D \def\stepcharttexts#1#2% \cellcounter = nofcells
+%D {\increment\textcounter
+%D \doifelsenothing{#1}
+%D {\startMPdrawing
+%D texts[t][\cellcounter][\textcounter] := origin ;
+%D \stopMPdrawing
+%D \appendtoks\NC\NC\to\stepstwotop}
+%D {\chardef\somesteptwotop=0
+%D \edef\stepidentifier{\cellcounter-\textcounter-t-t}%
+%D \startMPdrawing
+%D initialize_area(\MPpos{b:\tbPOSprefix\stepidentifier},
+%D \MPpos{e:\tbPOSprefix\stepidentifier}) ;
+%D texts[t][\cellcounter][\textcounter] := pxy ;
+%D \stopMPdrawing
+%D \@EA\appendtoks\@EA\NC\@EA\textcellposition\@EA{\stepidentifier}#1\to\stepstwotop}%
+%D \doifelsenothing{#2}
+%D {\startMPdrawing
+%D texts[b][\cellcounter][\textcounter] := origin ;
+%D \stopMPdrawing
+%D \appendtoks\NC\NC\to\stepstwobot}
+%D {\chardef\somesteptwobot=0
+%D \edef\stepidentifier{\cellcounter-\textcounter-b-t}%
+%D \startMPdrawing
+%D initialize_area(\MPpos{b:\tbPOSprefix\stepidentifier},
+%D \MPpos{e:\tbPOSprefix\stepidentifier}) ;
+%D texts[b][\cellcounter][\textcounter] := pxy ;
+%D \stopMPdrawing
+%D \@EA\appendtoks\@EA\NC\@EA\textcellposition\@EA{\stepidentifier}#2\to\stepstwobot}}
+%D \stoptyping
+%D
+%D Here are the hooks that take care of calculating the cell
+%D dimensions.
+%D
+%D \starttyping
+%D \def\textcellposition#1{\GSC[#1:text]}
+%D \def\stepidentifierposition#1{\GSC[#1:step]}
+%D \stoptyping
+%D
+%D We abandoned this method after some testing and went for
+%D a third one. It was this third method that evolved into the
+%D current mechanism.
+%D
+%D Since this method was not that efficient, a third one was
+%D implemented, which used one position per cell. So,
+%D
+%D \blank {\bf Here starts the real implementation!} \blank
+%D
+%D Because we want to build one graphic only we need to store
+%D the graphic directives. We also need to collect the cells,
+%D which are not defined in the order they show up. This
+%D solution uses multiple passes over the definitions. First
+%D the cells and texts are processed and the associated
+%D graphics are defined in the \METAPOST\ file. Next the
+%D lines are flushed. We need to do that in a second pass,
+%D because in order to determine the nature of the line,
+%D \METAPOST\ needs to know if the start and end cells exist.
+%D This need comes from the fact that we store the shapes
+%D and lines kind of directly with their associated colors and
+%D types, so that we can change the settings in between. So,
+%D changing for instance the line color, can take place
+%D locally.
+
+\newbox\stepboxone \newbox\stepboxtwo
+\newbox\textboxone \newbox\textboxtwo
+
+%D We need to define a dedicated name space counter.
+
+\newcounter\currentstepchart
+
+\def\stepchartprefix{@sc@-\currentstepchart-}
+
+%D Next we define the initialization part of the macros.
+
+\newcounter\cellcounter
+\newcounter\textcounter
+
+\def\startSTEPchart
+ {\dosingleempty\dostartSTEPchart}
+
+\long\def\dostartSTEPchart[#1]#2\stopSTEPchart
+ {\ifinsidefloat
+ \else
+ \whitespace
+ \@@STPCbefore
+ \startbaselinecorrection
+ \setlocalhsize
+ \noindent
+ \fi
+ \vbox\bgroup
+ \setupSTEPcharts[#1]%
+ \forgetall
+ \pushMPdrawing
+ \resetMPdrawing
+ \doglobal\increment\currentstepchart
+ \startMPdrawing
+ input mp-step ;
+ begin_step_chart ;
+ \stopMPdrawing
+ \initializeSTEP
+ \initializeSTPC
+ \global\chardef\somestepboxone\plusone
+ \global\chardef\sometextboxone\plusone
+ \global\chardef\somestepboxtwo\somestepboxone
+ \global\chardef\sometextboxtwo\sometextboxone
+ \def\startlines{\bgroup\setupSTEPlines}%
+ \def\stoplines {\egroup}%
+ \def\cells{\dosingleempty\dostepchartcells}
+ \def\texts{\dosingleempty\dostepcharttexts}
+ \def\cell {\dosingleempty\docell}%
+ \def\text {\dosingleempty\dotext}%
+ \def\docell[##1]{\dostepchartcells[##1]{}}%
+ \def\dotext[##1]{\dostepcharttexts[##1]{}}
+ \doglobal\newcounter\cellcounter
+ \doglobal\newcounter\textcounter
+ \let\dostepchartcells\doSTEPchartcellsA
+ \let\dostepcharttexts\doSTEPcharttextsA
+ {#2} % pass one: cells and texts {} keeps setting local
+ \startMPdrawing
+ nofcells := \cellcounter ;
+ analyze_step_chart ;
+ \stopMPdrawing
+ \doglobal\newcounter\cellcounter
+ \doglobal\newcounter\textcounter
+ \let\dostepchartcells\doSTEPchartcellsB
+ \let\dostepcharttexts\doSTEPcharttextsB
+ {#2} % pass two: lines
+ \startMPdrawing
+ end_step_chart ;
+ % if box_found(\MPpos{\stepchartprefix origin}) :
+ % initialize_box(\MPpos{\stepchartprefix origin}) ;
+ % draw pxy ;
+ % fi ;
+ anchor_box(\MPpos{\stepchartprefix origin}) ;
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \doifelse\@@STPCmethod{0}
+ {\setbox0\null}
+ {\setbox0\vbox{\MPstaticgraphictrue\getMPdrawing}}%
+ \resetMPdrawing
+ \setbox2\vbox
+ {\offinterlineskip
+ \scratchdimen\@@STPCheight
+ \advance\scratchdimen\@@STPCoffset
+ \advance\scratchdimen\@@STPCoffset
+ \ifcase\sometextboxone \box\textboxone \vskip\scratchdimen \fi
+ \ifcase\somestepboxone \box\stepboxone \vskip\@@STPCvoffset \fi
+ \ifcase\somestepboxtwo \box\stepboxtwo \vskip\scratchdimen \fi
+ \ifcase\sometextboxtwo \box\textboxtwo \vskip\@@STPCvoffset \fi
+ \global\resetbox\stepboxone \global\resetbox\stepboxtwo % needed indeed
+ \global\resetbox\textboxone \global\resetbox\textboxtwo % needed indeed
+ %\kern-\scratchdimen % no, instead:
+ \vskip-\lastskip}
+ \hbox
+ {\scratchdimen\wd0
+ \advance\scratchdimen \MPllx bp
+ \raise\MPlly bp\box0
+ \hskip-\scratchdimen
+ \hpos{\stepchartprefix origin}{\box2}}%
+ \popMPdrawing
+ \egroup
+ \ifinsidefloat \else \stopbaselinecorrection \@@STPCafter \fi}
+
+%D The next macro looks more complicated than it is. We collect
+%D the cells in boxes. Before adding a new step cell, we padd
+%D the text rows. After adding the step cells, we flush text
+%D cells that are defined but not yet processed.
+
+\def\doSTEPchartcellsA[#1]#2#3%
+ {% synchronize texts
+ \doSTEPchartcellsAB[#1]{#2}{#3}%
+ % package steps
+ \setbox0\hbox{\doifsomething{#2}{\@@stepcell{#2}}}%
+ \setbox2\hbox{\doifsomething{#3}{\@@stepcell{#3}}}%
+ \ifdim\wd0>\zeropoint \!!doneafalse \else \!!doneatrue \fi
+ \ifdim\wd2>\zeropoint \!!donebfalse \else \!!donebtrue \fi
+ \ifdim\wd0>\wd2
+ \setbox2\hbox to \wd0{\hss\box2\hss}%
+ \else
+ \setbox0\hbox to \wd2{\hss\box0\hss}%
+ \fi
+ \if!!donea
+ \startMPdrawing
+ cells[t][\cellcounter] := nullpicture ;
+ \stopMPdrawing
+ \else
+ \global\chardef\somestepboxone\zerocount
+ \edef\stepidentifier{\stepchartprefix\cellcounter-t-c}%
+ \setbox0\hbox{\hpos{\stepidentifier}{\box0}}%
+ \bgroup
+ \iffirstargument\setupSTEPcells[#1]\fi\initializeSTEC
+ \startMPdrawing
+ initialize_box(\MPpos{\stepidentifier}) ;
+ cells[t][\cellcounter] := \MPcellsgraphic ;
+ \stopMPdrawing
+ \egroup
+ \fi
+ \if!!doneb
+ \startMPdrawing
+ cells[b][\cellcounter] := nullpicture ;
+ \stopMPdrawing
+ \else
+ \global\chardef\somestepboxtwo\zerocount
+ \edef\stepidentifier{\stepchartprefix\cellcounter-b-c}%
+ \setbox2\hbox{\hpos{\stepidentifier}{\box2}}%
+ \bgroup
+ \iffirstargument\setupSTEPcells[#1]\fi\initializeSTEC
+ \startMPdrawing
+ initialize_box(\MPpos{\stepidentifier}) ;
+ cells[b][\cellcounter] := \MPcellsgraphic ;
+ \stopMPdrawing
+ \egroup
+ \fi
+ \global\setbox\stepboxone\hbox
+ {\ifdim\wd\stepboxone>\zeropoint
+ \box\stepboxone\hskip\@@STPChoffset\else
+ \fi\box0}%
+ \global\setbox\stepboxtwo\hbox
+ {\ifdim\wd\stepboxtwo>\zeropoint
+ \box\stepboxtwo\hskip\@@STPChoffset\else
+ \fi\box2}%
+ % flush saved texts
+ \doSTEPchartcellsBA}
+
+\def\doSTEPchartcellsB[#1]#2#3%
+ {\doSTEPchartcellsAB[#1]{#2}{#3}%
+ \doSTEPchartcellsBA}
+
+\def\doSTEPchartcellsAB[#1]#2#3%
+ {\doloop
+ {\ifnum\cellcounter>\textcounter
+ \texts{}{}\else\exitloop
+ \fi}%
+ \doglobal\increment\cellcounter}
+
+\def\doSTEPchartcellsBA
+ {\scratchtoks\stepchartbuffer
+ \stepchartbuffer\emptytoks
+ \the\scratchtoks}
+
+\def\MPcellsgraphic
+ {image ( drawshape (
+ \@@STECalternative, pxy enlarged (-.5*\@@STECoffset),
+ \@@STECrulethickness, \MPcolor{\@@STECframecolor},
+ \MPcolor{\@@STECbackgroundcolor} ) )}
+
+%D Although each step can have only one associated text, the
+%D place where the text is defined determines the starting
+%D point of the connecting arrow. Although several methods are
+%D possible, we've chosen a funny collector that flushes one
+%D step text at a time.
+
+\newtoks\stepchartbuffer
+
+\def\doSTEPcharttextsA[#1]% #2 #3
+ {\dodoSTEPcharttextsA{\cellcounter}{#1}}
+
+\def\dodoSTEPcharttextsA#1#2#3#4% #1=number #2=setup
+ {\dodoSTEPcharttextsAB{#1}{#2}{#3}{#4}\dodoSTEPcharttextsA
+ \ifnum\textcounter>\cellcounter\relax
+ \doglobal\decrement\textcounter\relax
+ \else
+ \setbox0\hbox{\doifsomething{#3}{\@@steptext{#3}}}%
+ \setbox2\hbox{\doifsomething{#4}{\@@steptext{#4}}}%
+ \ifdim\wd0>\zeropoint \!!doneafalse \else \!!doneatrue \fi
+ \ifdim\wd2>\zeropoint \!!donebfalse \else \!!donebtrue \fi
+ \if!!donea
+ \setbox0\hbox to \@@STPChoffset{\hss}%
+ \startMPdrawing
+ texts[t][#1][\textcounter] := nullpicture ;
+ \stopMPdrawing
+ \else
+ \global\chardef\sometextboxone\zerocount
+ \edef\stepidentifier{\stepchartprefix#1-\textcounter-t-t}%
+ \setbox0\hbox to \@@STPChoffset
+ {\hss\hpos{\stepidentifier}{\box0}\hss}%
+ \bgroup
+ \setupSTEPtexts[#2]\initializeSTET
+ \startMPdrawing
+ initialize_box(\MPpos{\stepidentifier}) ;
+ texts[t][#1][\textcounter] := \MPtextsgraphic ;
+ \stopMPdrawing
+ \egroup
+ \fi
+ \if!!doneb
+ \setbox2\hbox to \@@STPChoffset{\hss}%
+ \startMPdrawing
+ texts[b][#1][\textcounter] := nullpicture ;
+ \stopMPdrawing
+ \else
+ \global\chardef\sometextboxtwo\zerocount
+ \edef\stepidentifier{\stepchartprefix#1-\textcounter-b-t}%
+ \setbox2\hbox to \@@STPChoffset
+ {\hss\hpos{\stepidentifier}{\box2}\hss}%
+ \bgroup
+ \setupSTEPtexts[#2]\initializeSTET
+ \startMPdrawing
+ initialize_box(\MPpos{\stepidentifier}) ;
+ texts[b][#1][\textcounter] := \MPtextsgraphic ;
+ \stopMPdrawing
+ \egroup
+ \fi
+ \global\setbox\textboxone\hbox
+ {\hbox to \wd\stepboxone{\box\textboxone\hss}\box0}
+ \global\setbox\textboxtwo\hbox
+ {\hbox to \wd\stepboxtwo{\box\textboxtwo\hss}\box2}
+ \fi}
+
+\def\doSTEPcharttextsB[#1]% #2 #3
+ {\dodoSTEPcharttextsB{\cellcounter}{#1}}
+
+\def\dodoSTEPcharttextsB#1#2#3#4% #1=number #2=setup
+ {\dodoSTEPcharttextsAB{#1}{#2}{#3}{#4}\dodoSTEPcharttextsB
+ \ifnum\textcounter>\cellcounter\relax
+ \doglobal\decrement\textcounter\relax
+ \else
+ \bgroup
+ \initializeSTEL
+ \startMPdrawing
+ lines[t][#1][\textcounter] := \MPcharttoplinesgraphic{#1}\textcounter ;
+ lines[b][#1][\textcounter] := \MPchartbotlinesgraphic{#1}\textcounter ;
+ \stopMPdrawing
+ \egroup
+ \fi}
+
+\def\dodoSTEPcharttextsAB#1#2#3#4#5% #1=number #2=setup
+ {\doglobal\increment\textcounter\relax
+ \ifnum\textcounter>\cellcounter\relax
+ \@EA\appendtoks\@EA#5\@EA{#1}{#2}{#3}{#4}\to\stepchartbuffer
+ \fi}
+
+\def\MPtextsgraphic
+ {image(drawshape(
+ \@@STETalternative, pxy enlarged (-.5*\@@STEToffset),
+ \@@STETrulethickness, \MPcolor{\@@STETframecolor},
+ \MPcolor{\@@STETbackgroundcolor} ) )}
+
+\def\MPcharttoplinesgraphic#1#2%
+ {image(drawline(
+ \@@STELalternative, get_step_chart_top_line(#1,#2),
+ \@@STELrulethickness, \MPcolor{\@@STELcolor} ) )}
+
+\def\MPchartbotlinesgraphic#1#2%
+ {image(drawline(
+ \@@STELalternative, get_step_chart_bot_line(#1,#2),
+ \@@STELrulethickness, \MPcolor{\@@STELcolor} ) )}
+
+%D \XML\ coupling.
+
+\defineXMLpickup[stepchart][@@STPC]
+ {\bgroup
+ \defineXMLpush[top]%
+ \defineXMLpush[bot]%
+ \defineXMLenvironment[lines][@@STEL]
+ {\expanded{\startlines[\theXMLarguments{@@STEL}]}}
+ {\stoplines}%
+ \defineXMLenvironment[cells][@@STEC]
+ {\XMLerase{top}\XMLerase{bot}}
+ {\expanded{\cells[\theXMLarguments{@@STEC}]{\XMLpop{top}}{\XMLpop{bot}}}}%
+ \defineXMLenvironment[texts][@@STET]
+ {\XMLerase{top}\XMLerase{bot}}
+ {\expanded{\texts[\theXMLarguments{@@STET}]{\XMLpop{top}}{\XMLpop{bot}}}}%
+ \defineXMLenvironmentpush[cell][@@STEC]
+ {\XMLerase{cell}}
+ {\expanded{\cell [\theXMLarguments{@@STEC}]{\XMLpop{cell}}}}%
+ \defineXMLenvironmentpush [text] [@@STET]
+ {\XMLerase{text}}
+ {\expanded{\text [\theXMLarguments{@@STET}]{\XMLpop{text}}}}%
+ \expanded{\startSTEPchart[\theXMLarguments{@@STPC}]}}
+ {\stopSTEPchart
+ \egroup}
+
+%D Step tables are the vertical counterpart of stepcharts.
+
+\newcounter\currentsteptable
+
+\def\steptableprefix{@st@-\currentsteptable-}
+
+\def\startSTEPtable
+ {\dosingleempty\dostartSTEPtable}
+
+\def\dostartSTEPtable[#1]#2\stopSTEPtable
+ {\dostartSTEPaligntable[0][#1]#2\stopSTEPaligntable}
+
+\def\startSTEPaligntable
+ {\dodoubleempty\dostartSTEPaligntable[1]}
+
+\def\dostartSTEPaligntable[#1][#2]#3\stopSTEPaligntable % flag settings data
+ {\ifinsidefloat
+ \else
+ \whitespace
+ \@@STPTbefore
+ \startbaselinecorrection
+ \setlocalhsize
+ \noindent
+ \fi
+ \vbox\bgroup
+ \setupSTEPtables[#2]%
+ \forgetall
+ \pushMPdrawing
+ \doglobal\increment\currentsteptable
+ \startMPdrawing
+ input mp-step ;
+ begin_step_table ;
+ \stopMPdrawing
+ \initializeSTEP
+ \initializeSTPT
+ \def\startlines{\bgroup\setupSTEPlines}%
+ \def\stoplines {\egroup}%
+ \def\prep##1{\ignorespaces##1\unskip\enspace\ignorespaces}%
+ \def\cell {\dosingleempty\docell}%
+ \def\cells {\dosingleempty\docells}%
+ \def\text {\dosingleempty\dotext}%
+ % first graphic pass, also trial pass
+ \global\dimen1\zeropoint
+ \global\dimen3\zeropoint
+ \global\dimen5\zeropoint
+ \def\docell[##1]%
+ {\docells[##1]{}{}}%
+ \def\docells[##1]##2##3##4%
+ {\doglobal\increment\cellcounter
+ \bgroup
+ \iffirstargument\setupSTEPcells[##1]\fi
+ \initializeSTEC
+ \startMPdrawing
+ if box_found(\MPpos{\steptableprefix\cellcounter-c}) :
+ initialize_box(\MPpos{\steptableprefix\cellcounter-c}) ;
+ cells[\cellcounter] := \MPcellsgraphic ;
+ fi ;
+ \stopMPdrawing
+ \egroup
+ \def\do####1####2%
+ {\setbox\scratchbox\hbox{\@@stepfake{####2}}%
+ \ifdim\wd\scratchbox>\dimen####1\global\dimen####1=\wd\scratchbox\fi}%
+ \ifcase#1\else\do1{##2}\do3{##3}\fi\do5{##4}}%
+ \def\dotext[##1]##2%
+ {\bgroup
+ \iffirstargument\setupSTEPtexts[##1]\fi
+ \initializeSTET
+ \startMPdrawing
+ if box_found(\MPpos{\steptableprefix\cellcounter-t}) :
+ initialize_box(\MPpos{\steptableprefix\cellcounter-t}) ;
+ texts[\cellcounter] := \MPtextsgraphic ;
+ fi ;
+ \stopMPdrawing
+ \egroup}
+ \doglobal\newcounter\cellcounter#3
+ % second graphic pass pass, drawing lines
+ \def\docells[##1]##2##3##4%
+ {\doglobal\increment\cellcounter}
+ \def\dotext[##1]##2%
+ {\bgroup
+ \initializeSTEL
+ \startMPdrawing
+ lines[\cellcounter] := \MPtablelinesgraphic ;
+ \stopMPdrawing
+ \egroup}
+ \doglobal\newcounter\cellcounter#3
+ % finishing graphic touch
+ \startMPdrawing
+ nofcells := \cellcounter ;
+ end_step_table ;
+ anchor_box(\MPpos{\steptableprefix origin}) ;
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \doifelse\@@STPTmethod{0}
+ {\setbox0\null}
+ {\setbox0\vbox{\MPstaticgraphictrue\getMPdrawing}}%
+ \resetMPdrawing
+ % typesetting pass
+ \dimen6=\@@STPTdistance \dimen6=2\dimen6
+ % cell width
+ \dimen8=\dimen1
+ \advance\dimen8\dimen3
+ \advance\dimen8\dimen5
+ % offset width
+ \ifcase#1\else \advance\dimen8 \dimen6 \fi
+ % arrow width
+ \advance\dimen8 \@@STPTwidth
+ \advance\dimen8 \@@STPToffset
+ \advance\dimen8 \@@STPToffset
+ \def\docells[##1]##2##3##4%
+ {\doglobal\increment\cellcounter
+ \def\do####1####2####3####4% % strut really needed there !
+ {\hbox to \dimen####1{####2\@@stepfake{####3}\strut####4}}%
+ \setbox8\hbox
+ {\ifcase#1\else
+ \do1\hss{##2}\relax \hskip\@@STPTdistance
+ \do3\hss{##3}\hss \hskip\@@STPTdistance
+ \fi
+ \do5\relax{##4}\hss}%
+ \hpos{\steptableprefix\cellcounter-c}{\@@stepcell{\box8}}
+ \endgraf
+ \nointerlineskip
+ \kern\@@STPTvoffset}
+ \def\dotext[##1]##2%
+ {\bgroup
+ \hskip\dimen8
+ \advance\hsize-\dimen8
+ \advance\hsize-\dimen6 % twice the offset
+ \setbox0\hbox{\@@steptext{##2}}%
+% to do
+% \ifdim\wd0>\hsize
+% \setbox0=\vbox{\@@steptext{##2}}%
+% \fi
+% align
+ \hpos{\steptableprefix\cellcounter-t}{\box0}%
+ \endgraf
+ \egroup
+ \nointerlineskip
+ \kern\@@STPTvoffset}
+ \setbox2\vbox
+ {\doglobal\newcounter\cellcounter
+ #3\kern-\@@STPTvoffset}
+ \hbox
+ {\scratchdimen\wd0
+ \advance\scratchdimen \MPllx bp
+ \raise\MPlly bp\box0
+ \hskip-\scratchdimen
+ \hpos{\steptableprefix origin}{\box2}}
+ \popMPdrawing
+ \egroup
+ \ifinsidefloat \else \stopbaselinecorrection \@@STPTafter \fi}
+
+\def\MPtablelinesgraphic
+ {image ( drawline (
+ \@@STELalternative, get_step_table_line(\cellcounter),
+ \@@STELrulethickness, \MPcolor{\@@STELcolor} ) )}
+
+\defineXMLpickup[steptable][@@STPT]
+ {\bgroup
+ \defineXMLenvironment[lines][@@STEL]
+ {\expanded{\startlines[\theXMLarguments{@@STEL}]}}
+ {\stoplines}%
+ \defineXMLargument[cell][@@STEC]
+ {\expanded{\cell[\theXMLarguments{@@STEC}]}}%
+ \defineXMLargument[text][@@STET]
+ {\expanded{\text[\theXMLarguments{@@STET}]}}%
+ \defineXMLargument[prep]
+ {\prep}%
+ \expanded{\startSTEPtable[\theXMLarguments{@@STPT}]}}
+ {\stopSTEPtable
+ \egroup}
+
+\defineXMLpickup[stepaligntable][@@STPT]
+ {\bgroup
+ \defineXMLenvironment[lines][@@STEL]
+ {\expanded{\setupSTEPlines[\theXMLarguments{@@STEL}]}}
+ {}%
+ \defineXMLpush[c1]\defineXMLpush[c2]\defineXMLpush[c3]%
+ \defineXMLenvironment[cells][@@STEC]
+ {\XMLerase{c1}\XMLerase{c1}\XMLerase{c3}}
+ {\expanded{\cells[\theXMLarguments{@@STEC}]{\XMLpop{c1}}{\XMLpop{c2}}{\XMLpop{c3}}}}%
+ \defineXMLargument[text][@@STET]
+ {\expanded{\text[\theXMLarguments{@@STET}]}}%
+ \defineXMLargument[prep]
+ {\prep}%
+ \expanded{\startSTEPaligntable[\theXMLarguments{@@STPT}]}}
+ {\stopSTEPaligntable
+ \egroup}
+
+\protect \endinput
+
+% A simple paragraph-flow test:
+
+\starttext
+
+\startbuffer
+\startSTEPchart
+\cells {A} {B}
+\cells {one} {five} \texts{$+2$}{$-2$}
+\cells {two} {four} \texts{$+3$}{$-3$}
+\cells {three} {three} \texts{$+4$}{$-4$}
+\cells {four} {two} \texts{$+5$}{$-5$}
+\cells {five} {one}
+\stopSTEPchart
+\stopbuffer
+
+\getbuffer
+
+\startnarrower \getbuffer \stopnarrower
+
+\placefigure[left]{}{} \getbuffer
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/m-subsub.tex b/Master/texmf-dist/tex/context/base/m-subsub.tex
new file mode 100644
index 00000000000..3a29bc69f09
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-subsub.tex
@@ -0,0 +1,123 @@
+%D \module
+%D [ file=m-subsub,
+%D version=2000.12.14,
+%D title=\CONTEXT\ Private Modules,
+%D subtitle=More Section Levels,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. This module is not public.
+
+\unprotect
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ subsubsubsubsubsection: subsubsubsubsubparagraaf subsubsubsubsubsection
+ unterunterunterunterunterabsatz podpodpodpodpodsekce
+ sottosottosottosottosottocapoverso subsubsubsubsubsectiune
+
+ subsubsubsubsubsubsection: subsubsubsubsubsubparagraaf subsubsubsubsubsubsection
+ unterunterunterunterunterunterabsatz podpodpodpodpodpodsekce
+ sottosottosottosottosottosottocapoverso subsubsubsubsubsubsectiune
+
+ subsubsubsubsubsubsubsection: subsubsubsubsubsubsubparagraaf subsubsubsubsubsubsubsection
+ unterunterunterunterunterunterunterabsatz podpodpodpodpodpodpodsekce
+ sottosottosottosottosottosottosottocapoverso subsubsubsubsubsubsubsectiune
+
+ subsubsubsubsubsubsubsubsection: subsubsubsubsubsubsubsubparagraaf subsubsubsubsubsubsubsubsection
+ unterunterunterunterunterunterunterunterabsatz podpodpodpodpodpodpodpodsekce
+ sottosottosottosottosottosottosottosottocapoverso subsubsubsubsubsubsubsubsectiune
+
+subsubsubsubsubsubsubsubsubsection: subsubsubsubsubsubsubsubsubparagraaf subsubsubsubsubsubsubsubsubsection
+ unterunterunterunterunterunterunterunterunterabsatz podpodpodpodpodpodpodpodpodsekce
+ sottosottosottosottosottosottosottosottosottocapoverso subsubsubsubsubsubsubsubsubsectiune
+
+ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsubsubject
+ unterunterunterunterunterthema podpodpodpodpodtema
+ sottosottosottosottosottoargomento subsubsubsubsubsubiect
+
+ subsubsubsubsubsubsubject: subsubsubsubsubsubonderwerp subsubsubsubsubsubsubject
+ unterunterunterunterunterunterthema podpodpodpodpodpodtema
+ sottosottosottosottosottosottoargomento subsubsubsubsubsubsubiect
+
+ subsubsubsubsubsubsubsubject: subsubsubsubsubsubsubonderwerp subsubsubsubsubsubsubsubject
+ unterunterunterunterunterunterunterthema podpodpodpodpodpodpodtema
+ sottosottosottosottosottosottosottoargomento subsubsubsubsubsubsubsubiect
+
+ subsubsubsubsubsubsubsubsubject: subsubsubsubsubsubsubsubonderwerp subsubsubsubsubsubsubsubsubject
+ unterunterunterunterunterunterunterunterthema podpodpodpodpodpodpodpodtema
+ sottosottosottosottosottosottosottosottoargomento subsubsubsubsubsubsubsubsubiect
+
+subsubsubsubsubsubsubsubsubsubject: subsubsubsubsubsubsubsubsubonderwerp subsubsubsubsubsubsubsubsubsubject
+ unterunterunterunterunterunterunterunterunterthema podpodpodpodpodpodpodpodpodtema
+ sottosottosottosottosottosottosottosottosottoargomento subsubsubsubsubsubsubsubsubsubiect
+
+\stopvariables
+
+
+\definesection[\v!sectionlevel-8]
+\definesection[\v!sectionlevel-9]
+\definesection[\v!sectionlevel-10]
+\definesection[\v!sectionlevel-11]
+\definesection[\v!sectionlevel-12]
+
+\definehead
+ [\v!subsubsubsubsubsection]
+ [\c!section=\v!sectionlevel-8,
+ \c!default=\v!subsubsubsubsection]
+
+\definehead
+ [\v!subsubsubsubsubsubsection]
+ [\c!section=\v!sectionlevel-9,
+ \c!default=\v!subsubsubsubsubsection]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsection]
+ [\c!section=\v!sectionlevel-10,
+ \c!default=\v!subsubsubsubsubsubsection]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsubsection]
+ [\c!section=\v!sectionlevel-11,
+ \c!default=\v!subsubsubsubsubsubsubsection]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsubsubsection]
+ [\c!section=\v!sectionlevel-12,
+ \c!default=\v!subsubsubsubsubsubsubsubsection]
+
+\definehead
+ [\v!subsubsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsubsection,
+ \c!default=\v!subsubsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsubsubsection,
+ \c!default=\v!subsubsubsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsubsubsubsection,
+ \c!default=\v!subsubsubsubsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsubsubsubsubsection,
+ \c!default=\v!subsubsubsubsubsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\definehead
+ [\v!subsubsubsubsubsubsubsubsubsubject]
+ [\c!coupling=\v!subsubsubsubsubsubsubsubsubsection,
+ \c!default=\v!subsubsubsubsubsubsubsubsubsection,
+ \c!incrementnumber=\v!no]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-tex4ht.tex b/Master/texmf-dist/tex/context/base/m-tex4ht.tex
new file mode 100644
index 00000000000..8a3dc9dbb03
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-tex4ht.tex
@@ -0,0 +1,9 @@
+%D Preliminaty module
+
+\input tex4ht.sty
+
+\appendtoks
+ \Preamble{\env{ht-1},\env{ht-2},html}\EndPreamble
+\to \everystarttext
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/base/m-tryout.tex b/Master/texmf-dist/tex/context/base/m-tryout.tex
new file mode 100644
index 00000000000..ef6c502ba07
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-tryout.tex
@@ -0,0 +1,51 @@
+%D \module
+%D [ file=m-tryout,
+%D version=2002.05.10,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Tryout Features,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D The following macros make sure that active colons work well
+%D in French, a feature enabled with:
+%D
+%D \starttyping
+%D \useencoding[ffr] \mainlanguage[fr]
+%D \stoptyping
+%D
+%D This trick will disappear when proved robust.
+
+\startmode[activecolon]
+
+\gdef\sectionseparator{-}
+
+\gdef\@@filterfirstpart [#1--#2]{#1}
+\gdef\@@filtersecondpart [#1--#2]{#2}
+
+\gdef\@@filterblockpart [#1--#2--#3]{#1}
+\gdef\@@filternumberpart [#1--#2--#3]{#2}
+\gdef\@@filterpagepart [#1--#2--#3]{#3}
+\gdef\@@filterblocknumberpart[#1--#2--#3]{#1--#2}
+
+\gdef\@@filterheadpart[#1]{\@EA\@@dofilterheadpart\@EA[#1-0]}
+\gdef\@@filtertailpart[#1]{\@EA\@@dofiltertailpart\@EA[#1-0]}
+
+\gdef\@@dofilterheadpart[#1-#2]{#1}
+\gdef\@@dofiltertailpart[#1-#2]{#2}
+
+\gdef\@@filterlevelpart[#1--#2--#3]{\@@dofilterlevelpart[#2-0-0-0-0]}
+
+\gdef\@@dofilterlevelpart[#1-0-0-0-#2]{#1}
+
+\reopenutilities
+
+\stopmode
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/m-units.tex b/Master/texmf-dist/tex/context/base/m-units.tex
new file mode 100644
index 00000000000..35f870bbf62
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-units.tex
@@ -0,0 +1,817 @@
+%D \module
+%D [ file=m-units,
+%D version=1997.03.19,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Scientific Units,
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Scientific units can be typeset in math mode pretty well,
+%D but occasionally one has to take care of spacing.
+%D Furthermore, entering these units is not that natural as
+%D wanted. Therefore this module presents a more natural way of
+%D doing things, like:
+%D
+%D \starttyping
+%D 1.23 \Cubic \Meter \Per \Second
+%D \stoptyping
+%D
+%D This example shows that we use the order in which we say
+%D things, instead of typeset things. There is a separate
+%D manual for this module.
+
+%D Message number~1 deals with overruling the \type {\Degrees}
+%D macro defined in the core modules. Let's say that this is
+%D an upward compatibility issue.
+
+\startmessages dutch library: units
+ title: eenheden
+ 1: gebruik \string\Degrees\space\string\Celsius\space in plaats van \string\Celsius !
+\stopmessages
+
+\startmessages english library: units
+ title: units
+ 1: use \string\Degrees\space\string\Celsius\space instead of \string\Celsius !
+\stopmessages
+
+\startmessages german library: units
+ title: Einheiten
+ 1: Verwende \string\Degrees\space\string\Celsius\space statt \string\Celsius !
+\stopmessages
+
+\startmessages italian library: units
+ title: unità
+ 1: usare \string\Degrees\space\string\Celsius\space invece di \string\Celsius !
+\stopmessages
+
+\startmessages norwegian library: units
+ title: enheter
+ 1: bruk \string\Degrees\space\string\Celsius\space istedenfor \string\Celsius !
+\stopmessages
+
+\startmessages romanian library: units
+ title: unitati
+ 1: folositi \string\Degrees\space\string\Celsius\space in locul \string\Celsius !
+\stopmessages
+
+\unprotect
+
+%D This runtime loadable module implements a way of defining
+%D units. The core macro is \type {\dimension}, a rather clever
+%D one that is able to cooperate with some other dimension
+%D related macros. As said, this module enables user to enter:
+%D
+%D \startbuffer
+%D some 10 \Square \Meter \Per \Second or more
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D as:
+%D
+%D \typebuffer
+%D
+%D The units itself are implemented as synonyms.
+%D
+%D \starttyping
+%D \definesynonyms [unit] [units] [\unitmeaning]
+%D \setupsynonyms [unit] [textstyle=\dimension]
+%D \stoptyping
+%D
+%D This definition means that we can ask for the meaning of a
+%D unit using \type {\unitmeaning} and get a list of used
+%D units by saying \type {\placelistofunits}
+%D
+%D We have to use the command \type {\unitmeaning} instead
+%D of \type {\meaning}, simply because the latter is a \TEX\
+%D primitive we don't want to loose. We use the label text
+%D mechanism for translations.
+
+%D \macros
+%D {dimension}
+%D
+%D The core of this module is the low level macro \type
+%D {\dimension}. Before presenting this macro, it's best to
+%D look at some applications, because it's supposed to show
+%D some intelligence that can beter be understood from the
+%D context.
+%D
+%D The next useless examples show some of the cases we want
+%D to handle in a proper way.
+%D
+%D \startbuffer
+%D ... 10 \Square \Meter \Per \Volt \
+%D ... 10 \Square \Meter \Volt \
+%D ... 10 \Meter \Volt \
+%D ... 10 \Milli \Square \Meter \Per \Volt \
+%D ... 10 \Square \Milli \Meter \Per \Volt \
+%D ... 10 \Meter \Times \Meter \
+%D ... 10 \Square \Meter \Times \Meter \
+%D ... 10 \Square \Milli \Meter \Times \Meter \
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Becomes:
+%D
+%D \getbuffer
+
+%D \macros
+%D {mathematicstypeface, dimensiontypeface,
+%D dimensionhalfspace, dimensionbackspace}
+%D
+%D There are some low level constants, that can be changed
+%D when needed. Some day I will write a decent setup command.
+
+\def\mathematicstypeface{\rm}
+\def\dimensiontypeface {\tf}
+
+\def\dimensionhalfspace {\ifmmode\,\else\hskip+.1em\relax\fi}
+\def\dimensionbackspace {\ifmmode\!\else\hskip-.1em\relax\fi}
+
+%D \macros
+%D {smashdimensionpower}
+%D
+%D Sometimes the baseline distance is not enough to provide
+%D for superscripts, so we smash their height by default.
+
+\newif\ifsmashdimensionpower \smashdimensionpowertrue
+
+%D The dimension mechanism uses a lot of signals to keep
+%D track if the current state.
+
+\newsignal\dimensionsignal
+\newsignal\dimensionpowersignal
+\newsignal\dimensionmidfixsignal
+\newsignal\dimensionaddfixsignal
+
+\let\thedimensionprefix = \empty
+\let\thedimensionpower = \empty
+
+%D \macros
+%D {spaceddimensions,textdimensions}
+%D
+%D The actual definition of \type {\dimension} overruled the
+%D one in the core modules. The boolean can be used to
+%D force spacing between units. Vergelijk {\Newton \Meter}
+%D eens met {\spaceddimensionstrue \Newton \Meter}. The
+%D rather ugly test prevents problems with nested dimensions.
+
+\newif\ifspaceddimensions \spaceddimensionsfalse % user switch
+\newif\iftextdimensions \textdimensionsfalse % user switch
+
+%D You can see the consequence of forcing text dimensions
+%D when you compare the following code:
+%D
+%D \starttyping
+%D {\rm test \Square \Meter \Per \Second\ ziezo\Degrees} \par
+%D {\ss test \Square \Meter \Per \Second\ ziezo} \par
+%D {\tt test \Square \Meter \Per \Second\ ziezo}
+%D
+%D \textdimensionstrue
+%D
+%D {\rm test \Square \Meter \Per \Second\ ziezo} \par
+%D {\ss test \Square \Meter \Per \Second\ ziezo} \par
+%D {\tt test \Square \Meter \Per \Second\ ziezo}
+%D \stoptyping
+
+\newif\ifnesteddimension \nesteddimensionfalse % local switch
+
+\def\dodimensionpower#1%
+ {\iftextdimensions\expandafter\high\else\expandafter^\fi{#1}}
+
+\def\ustartmathmode {\iftextdimensions\else\startmathmode \fi}
+\def\ustopmathmode {\iftextdimensions\else\stopmathmode \fi}
+\def\umathematicstypeface{\iftextdimensions\else\mathematicstypeface\fi}
+
+%D In forced text mode, we ignore spacing in monospaced fonts.
+
+\def\udimensionhalfspace {\dodimensionspace\dimensionhalfspace}
+\def\udimensionbackspace {\dodimensionspace\dimensionbackspace}
+
+\def\dodimensionspace
+ {\iftextdimensions
+ \begingroup
+ \setbox0=\hbox{i}%
+ \setbox2=\hbox{m}%
+ \ifdim\wd0=\wd2
+ \endgroup
+ \@EAEAEA\gobbleoneargument
+ \else
+ \endgroup
+ \fi
+ \fi}
+
+\unexpanded\def\dimension#1%
+ {\begingroup
+ \global\let\savedthedimensionprefix\thedimensionprefix
+ \global\let\savedthedimensionpower\thedimensionpower
+ \unexpanded\def\dimension##1{\global\nesteddimensiontrue}%
+ \let\dimensionprefix\dimension
+ \let\dimensionmidfix\dimension
+ \let\dimensionsuffix\dimension
+ \let\dimensionpower \dimension
+ \global\nesteddimensionfalse
+ \setbox0=\hbox{\ustartmathmode#1\ustopmathmode}%
+ \global\let\thedimensionprefix\savedthedimensionprefix
+ \global\let\thedimensionpower \savedthedimensionpower
+ \endgroup
+ \ifnesteddimension#1\else\dodimension{#1}\fi}
+
+\def\dodimension#1%
+ {\dontbreakdimension
+ \ifdim\scratchdimen=\zeropoint\relax
+ \ifmmode
+ \udimensionhalfspace
+ \udimensionhalfspace
+ \fi
+ \ustartmathmode\dimensiontypeface
+ \else
+ \ustartmathmode\dimensiontypeface
+ \ifdim\scratchdimen=\dimensionsignal\relax
+ \ifspaceddimensions\udimensionhalfspace\fi
+ \fi
+ \fi
+ \umathematicstypeface\thedimensionprefix#1%
+ \ifx\thedimensionpower\empty
+ \else\ifsmashdimensionpower
+ \setbox\scratchbox=\hbox
+ {\iftextdimensions
+ \tx\thedimensionpower
+ \else
+ $\scriptstyle\thedimensionpower$%
+ \fi}%
+ \ht\scratchbox=\zeropoint
+ \dodimensionpower{\box\scratchbox}%
+ \else
+ \dodimensionpower{\thedimensionpower}%
+ \fi\fi
+ \ustopmathmode
+ % otherwise nobreak before space in 2 \Milli \Meter\ blabla
+ \doifnotmode{atpragma}{\nobreak}% this was always \nobreak
+ % only test this at pragma
+ \ifx\thedimensionpower\empty
+ \hskip\dimensionsignal
+ \else
+ \hskip\dimensionpowersignal
+ \fi
+ \global\let\thedimensionprefix\empty
+ \global\let\thedimensionpower\empty}
+
+%D \macros
+%D {dontbreakdimension,
+%D dimensionprefix, dimensionaddfix,
+%D dimensionnopfix, dimensionmidfix,
+%D dimensionpower}
+%D
+%D Here are some auxilliary macros.
+
+\def\dontbreakdimension%
+ {\scratchdimen=\lastskip
+ \unskip
+ \nobreak
+ \hskip\scratchdimen
+ \nobreak}
+
+\def\dimensionprefix#1%
+ {\gdef\thedimensionprefix{#1}}
+
+\def\dimensionaddfix#1%
+ {\unskip
+ %\mathematics{\umathematicstypeface#1}%
+ \ustartmathmode\umathematicstypeface#1\ustopmathmode
+ \nobreak
+ \hskip\dimensionaddfixsignal}
+
+\def\dimensionnopfix#1%
+ {\dontbreakdimension
+ \ifdim\scratchdimen=\dimensionpowersignal\relax
+ \ustartmathmode
+ \else
+ \ustartmathmode
+ \udimensionhalfspace
+ \nobreak
+ \fi
+ \umathematicstypeface#1%
+ \ustopmathmode
+ \nobreak
+ \hskip\dimensionsignal}
+
+\def\dimensionmidfix#1%
+ {\dontbreakdimension
+ \ifdim\scratchdimen=\dimensionpowersignal\relax
+ \ustartmathmode
+ \udimensionbackspace
+ \nobreak
+ \else
+ \ustartmathmode
+ \fi
+ \umathematicstypeface#1%
+ \ustopmathmode
+ \nobreak
+ \hskip\dimensionmidfixsignal}
+
+\def\dimensionpower#1%
+ {\gdef\thedimensionpower{#1}}
+
+%D \macros
+%D {SIunits, noSI, doSI}
+%D
+%D Some low level unit switching macros:
+
+\newif\ifSIunits \SIunitstrue
+
+\def\noSI#1{\begingroup\SIunitsfalse#1\endgroup}
+\def\doSI#1{\begingroup\SIunitstrue #1\endgroup}
+
+%D \macros
+%D {Degrees}
+%D
+%D We can fake the degrees symbol with:
+
+\def\Degrees{\dimensionaddfix{\mathematics{^\circ}}}
+
+%D \macros
+%D {Unit, NoUnit}
+%D
+%D When a dimension has no leading number, we can use \type
+%D {\Unit}, and when no unit is appended, \type {\NoUnit} is
+%D to be used, just to prevent the prefix migrating to the
+%D next occasion.
+
+\def\Unit {\hskip\dimensionsignal}
+\def\NoUnit {\dimension{}}
+
+%D The mechanism described at the top of this module, depends
+%D on several dimensional components, like prefixes:
+
+\def\Atto {\dimensionprefix{a}}
+\def\Femto {\dimensionprefix{f}}
+\def\Pico {\dimensionprefix{p}}
+\def\Nano {\dimensionprefix{n}}
+\def\Micro {\dimensionprefix{\iftextdimensions u\else\mu\fi}}
+\def\Milli {\dimensionprefix{m}}
+\def\Centi {\dimensionprefix{c}}
+\def\Deci {\dimensionprefix{d}}
+\def\Hecto {\dimensionprefix{h}}
+\def\Kilo {\dimensionprefix{k}}
+\def\Mega {\dimensionprefix{M}}
+\def\Giga {\dimensionprefix{G}}
+\def\Terra {\dimensionprefix{T}} % for old times sake
+\def\Tera {\dimensionprefix{T}}
+\def\Peta {\dimensionprefix{P}}
+\def\Exa {\dimensionprefix{E}}
+
+%D and operators:
+
+\def\Times {\dimensionnopfix{\iftextdimensions.\else\cdot\fi}}
+\def\Solidus {\dimensionmidfix{/}}
+\def\Per {\dimensionmidfix{/}}
+\def\OutOf {\dimensionnopfix{:}}
+
+%D and suffixes:
+
+\def\Linear {\dimensionpower{1}}
+\def\Square {\dimensionpower{2}}
+\def\Cubic {\dimensionpower{3}}
+
+\def\Inverse {\dimensionpower{-1}}
+\def\ILinear {\dimensionpower{-1}}
+\def\ISquare {\dimensionpower{-2}}
+\def\ICubic {\dimensionpower{-3}}
+
+%D Apart from these components, the units themselves are
+%D defined using the synonym mechanism. First we define some
+%D length and volume related units.
+
+\getvalue{\v!unit} [Meter] {m} {meter}
+\getvalue{\v!unit} [pMeter] {\Pico \Meter} {picometer}
+\getvalue{\v!unit} [nMeter] {\Nano \Meter} {nanometer}
+\getvalue{\v!unit} [uMeter] {\Micro \Meter} {micrometer}
+\getvalue{\v!unit} [mMeter] {\Milli \Meter} {millimeter}
+\getvalue{\v!unit} [cMeter] {\Centi \Meter} {centimeter}
+\getvalue{\v!unit} [dMeter] {\Deci \Meter} {decimeter}
+\getvalue{\v!unit} [hMeter] {\Hecto \Meter} {hectometer}
+\getvalue{\v!unit} [kMeter] {\Kilo \Meter} {kilometer}
+
+%D After some discussion on the \CONTEXT\ mailing list in
+%D february 2002 it was decided to go from L to l for liters
+%D (Karel Wesselings alternative: \mathematics{\ell}).
+
+\getvalue{\v!unit} [Liter] {l} {liter}
+\getvalue{\v!unit} [mLiter] {\Milli \Liter} {milliliter}
+\getvalue{\v!unit} [cLiter] {\Centi \Liter} {centiliter}
+\getvalue{\v!unit} [dLiter] {\Deci \Liter} {deciliter}
+
+%D Next we define time related units (\type {\ifSI} still dutch only).
+
+\getvalue{\v!unit} [Sec] {s} {\labeltext{u:sec}}
+\getvalue{\v!unit} [fSec] {\Femto \Sec} {\labeltext{u:fsec}}
+\getvalue{\v!unit} [pSec] {\Pico \Sec} {\labeltext{u:psec}}
+\getvalue{\v!unit} [nSec] {\Nano \Sec} {\labeltext{u:nsec}}
+\getvalue{\v!unit} [uSec] {\Micro \Sec} {\labeltext{u:usec}}
+\getvalue{\v!unit} [mSec] {\Milli \Sec} {\labeltext{u:msec}}
+\getvalue{\v!unit} [Year] {\ifSIunits a \else j\fi} {\labeltext{u:year}}
+\getvalue{\v!unit} [Month] {m} {\labeltext{u:month}}
+\getvalue{\v!unit} [Week] {w} {\labeltext{u:week}}
+\getvalue{\v!unit} [Day] {d} {\labeltext{u:day}}
+\getvalue{\v!unit} [Hour] {\ifSIunits h \else u\fi} {\labeltext{u:hour}}
+\getvalue{\v!unit} [Min] {min} {\labeltext{u:min}}
+
+\setuplabeltext
+ [\s!nl]
+ [u:sec=seconde,
+ u:psec=picoseconde,
+ u:fsec=femtoseconde,
+ u:nsec=nanoseconde,
+ u:usec=microseconde,
+ u:msec=milliseconde,
+ u:year=jaar,
+ u:month=maand,
+ u:week=week,
+ u:day=dag,
+ u:hour=uur,
+ u:min=minuten]
+
+\setuplabeltext
+ [\s!en]
+ [u:sec=second,
+ u:fsec=femtosecond,
+ u:psec=picosecond,
+ u:nsec=nanosecond,
+ u:usec=microsecond,
+ u:msec=millisecond,
+ u:year=year,
+ u:month=month,
+ u:week=week,
+ u:day=day,
+ u:hour=hour,
+ u:min=minutes]
+
+\setuplabeltext
+ [\s!de]
+ [u:sec=Sekunde,
+ u:fsec=Femtosekunde,
+ u:psec=Picosekunde,
+ u:nsec=Nanosekunde,
+ u:usec=Microsekunde,
+ u:msec=Millisekunde,
+ u:year=Jahr,
+ u:month=Monat,
+ u:week=Woche,
+ u:day=Tag,
+ u:hour=Stunde,
+ u:min=Minuten]
+
+\setuplabeltext
+ [\s!it]
+ [u:sec=secondo,
+ u:fsec=femtosecondo,
+ u:psec=picosecondo,
+ u:nsec=nanosecondo,
+ u:usec=microsecondo,
+ u:msec=millisecondo,
+ u:year=anno,
+ u:month=mese,
+ u:week=settimana,
+ u:day=giorno,
+ u:hour=ora,
+ u:min=minuti]
+
+%D Then we define some angles.
+
+\getvalue{\v!unit} [Rad] {rad} {\labeltext{u:rad}}
+\getvalue{\v!unit} [Deg] {{\mathematics{^\circ}}} {\labeltext{u:deg}}
+
+\setuplabeltext
+ [\s!nl]
+ [u:rad=hoek radialen,
+ u:deg=hoek graden]
+
+\setuplabeltext
+ [\s!en]
+ [u:rad=angle radians,
+ u:deg=angle degrees]
+
+\setuplabeltext
+ [\s!de]
+ [u:rad=Bogenma\SS,
+ u:deg=Gradma\SS]
+
+\setuplabeltext
+ [\s!it]
+ [u:rad=radianti,
+ u:deg=angoli sessagesimali]
+
+%D Rotation and frequency related units are defined by:
+
+\getvalue{\v!unit} [Hertz] {Hz} {Hertz}
+\getvalue{\v!unit} [kHertz] {\Kilo \Hertz} {kilo Hertz}
+\getvalue{\v!unit} [MHertz] {\Mega \Hertz} {mega Hertz}
+\getvalue{\v!unit} [GHertz] {\Giga \Hertz} {giga Hertz}
+\getvalue{\v!unit} [THertz] {\Tera \Hertz} {tera Hertz}
+\getvalue{\v!unit} [mHertz] {\Milli \Hertz} {milli Hertz}
+
+\getvalue{\v!unit} [RevPerSec] {RPS} {\labeltext{u:rps}}
+\getvalue{\v!unit} [RevPerMin] {RPM} {\labeltext{u:rpm}}
+
+\setuplabeltext
+ [\s!nl]
+ [u:rps=omwentelingen per seconde,
+ u:rpm=omwentelingen per minuut]
+
+\setuplabeltext
+ [\s!en]
+ [u:rps=revolutions per second,
+ u:rpm=revolutions per minute]
+
+\setuplabeltext
+ [\s!de]
+ [u:rps=Umdrehungen pro Sekunde,
+ u:rpm=Umdrehungen pro Minute]
+
+\setuplabeltext
+ [\s!it]
+ [u:rps=giri al secondo,
+ u:rpm=giri al minuto]
+
+%D Mass and force:
+
+\getvalue{\v!unit} [Gram] {g} {gram}
+\getvalue{\v!unit} [uGram] {\Micro \Gram} {microgram}
+\getvalue{\v!unit} [mGram] {\Milli \Gram} {milligram}
+\getvalue{\v!unit} [kGram] {\Kilo \Gram} {kilogram}
+\getvalue{\v!unit} [Atom] {u} {\labeltext{u:u}}
+
+\getvalue{\v!unit} [Newton] {N} {Newton}
+\getvalue{\v!unit} [kNewton] {\Kilo \Newton} {kilo Newton}
+
+\getvalue{\v!unit} [Pascal] {Pa} {Pascal}
+\getvalue{\v!unit} [mPascal] {\Milli \Pascal} {milli Pascal}
+\getvalue{\v!unit} [kPascal] {\Kilo \Pascal} {kilo Pascal}
+
+\setuplabeltext
+ [\s!nl]
+ [u:u=atomaire massa eenheid]
+
+\setuplabeltext
+ [\s!en]
+ [u:u=atom mass unit]
+
+\setuplabeltext
+ [\s!de]
+ [u:u=Atomare Masseneinheit]
+
+\setuplabeltext
+ [\s!it]
+ [u:u=unit\`a di massa atomica]
+
+%D Energy units comes in two alternatives:
+
+\getvalue{\v!unit} [Joule] {J} {Joule}
+\getvalue{\v!unit} [mJoule] {\Milli \Joule} {milli Joule}
+\getvalue{\v!unit} [kJoule] {\Kilo \Joule} {kilo Joule}
+\getvalue{\v!unit} [MJoule] {\Mega \Joule} {mega Joule}
+\getvalue{\v!unit} [GJoule] {\Giga \Joule} {giga Joule}
+
+\getvalue{\v!unit} [Watt] {W} {Watt}
+\getvalue{\v!unit} [mWatt] {\Milli \Watt} {milli Watt}
+\getvalue{\v!unit} [kWatt] {\Kilo \Watt} {kilo Watt}
+\getvalue{\v!unit} [MWatt] {\Mega \Watt} {mega Watt}
+\getvalue{\v!unit} [GWatt] {\Giga \Watt} {giga Watt}
+\getvalue{\v!unit} [TWatt] {\Tera \Watt} {tera Watt}
+
+%D Although Celsius is no longer permitted, we define it by
+%D saying:
+
+\getvalue{\v!unit} [Celsius] {C} {Celsius}
+\getvalue{\v!unit} [Kelvin] {K} {Kelvin}
+\getvalue{\v!unit} [Fahrenheit] {F} {Fahrenheit}
+
+%D Some chemic related units are:
+
+\getvalue{\v!unit} [Mol] {mol} {mol}
+\getvalue{\v!unit} [mMol] {\Milli \Mol} {millimol}
+\getvalue{\v!unit} [kMol] {\Kilo \Mol} {kilomol}
+\getvalue{\v!unit} [Molair] {M} {molair (\Mol \Per \Liter)}
+\getvalue{\v!unit} [Equivalent] {eq} {equivalent}
+\getvalue{\v!unit} [mEquivalent] {\Milli \Equivalent} {milli equivalent}
+
+%D There are quite a lot units related to electricity and
+%D magnetism:
+
+\getvalue{\v!unit} [Farad] {F} {Farad}
+\getvalue{\v!unit} [pFarad] {\Pico \Farad} {pico Farad}
+\getvalue{\v!unit} [nFarad] {\Nano \Farad} {nano Farad}
+\getvalue{\v!unit} [uFarad] {\Micro \Farad} {micro Farad}
+\getvalue{\v!unit} [mFarad] {\Milli \Farad} {milli Farad}
+
+\getvalue{\v!unit} [Ohm] {\Omega} {Ohm}
+\getvalue{\v!unit} [kOhm] {\Kilo \Ohm} {kilo Ohm}
+
+\getvalue{\v!unit} [Siemens] {S} {Siemens}
+
+\getvalue{\v!unit} [Ampere] {A} {Amp\`ere}
+\getvalue{\v!unit} [mAmpere] {\Milli \Ampere} {milli Amp\`ere}
+
+\getvalue{\v!unit} [Coulomb] {C} {Coulomb}
+
+\getvalue{\v!unit} [Volt] {V} {Volt}
+\getvalue{\v!unit} [mVolt] {\Milli \Volt} {milli Volt}
+\getvalue{\v!unit} [kVolt] {\Kilo \Volt} {kilo Volt}
+\getvalue{\v!unit} [eVolt] {eV} {electronvolt}
+\getvalue{\v!unit} [keVolt] {\Kilo \eVolt} {kilo electronvolt}
+\getvalue{\v!unit} [MeVolt] {\Mega \eVolt} {mega electronvolt}
+
+\getvalue{\v!unit} [Tesla] {T} {Tesla}
+
+\getvalue{\v!unit} [VoltAC] {V_{\xbox{ac}}} {\labeltext{u:vac}}
+\getvalue{\v!unit} [VoltDC] {V_{\xbox{dc}}} {\labeltext{u:vdc}}
+
+\setuplabeltext
+ [\s!nl]
+ [u:vac=wisselspanning,
+ u:vdc=gelijkspanning]
+
+\setuplabeltext
+ [\s!en]
+ [u:vac=alternating current,
+ u:vdc=different current]
+
+\setuplabeltext
+ [\s!de]
+ [u:vac=Wechselspannung,
+ u:vdc=Gleichspannung]
+
+\setuplabeltext
+ [\s!it]
+ [u:vac=corrente alternata,
+ u:vdc=corrente continua]
+
+%D Computer memory is specified in Bytes:
+
+\getvalue{\v!unit} [Baud] {Baud} {Baud (Bit/s)}
+\getvalue{\v!unit} [Bit] {Bit} {Bit}
+
+\getvalue{\v!unit} [Byte] {Byte} {Byte}
+\getvalue{\v!unit} [kByte] {\Kilo \Byte} {kilo Byte}
+\getvalue{\v!unit} [MByte] {\Mega \Byte} {mega Byte}
+\getvalue{\v!unit} [GByte] {\Giga \Byte} {giga Byte}
+\getvalue{\v!unit} [TByte] {\Tera \Byte} {tera Byte}
+
+%D Some radiation related units:
+
+\getvalue{\v!unit} [Bequerel] {Bq} {Bequerel}
+\getvalue{\v!unit} [MBequerel] {\Mega \Bequerel} {Bequerel}
+\getvalue{\v!unit} [Sievert] {Sv} {Sievert}
+\getvalue{\v!unit} [mSievert] {\Milli \Sievert} {milli Sievert}
+
+%D Light:
+
+\getvalue{\v!unit} [Candela] {cd} {Candela}
+
+%D and some sound ones:
+
+\getvalue{\v!unit} [Bell] {B} {Bell}
+\getvalue{\v!unit} [dBell] {\Deci \Bell} {decibel}
+
+%D We also define some non||regular, sometimes even forbidden,
+%D units:
+
+\getvalue{\v!unit} [At] {at} {\labeltext{u:at}}
+\getvalue{\v!unit} [Atm] {atm} {\labeltext{u:atm}}
+\getvalue{\v!unit} [Bar] {bar} {bar (100 \Kilo \Pascal)}
+\getvalue{\v!unit} [EVolt] {eV} {electronvolt}
+\getvalue{\v!unit} [Foot] {ft} {\labeltext{u:ft}}
+\getvalue{\v!unit} [Inch] {inch} {inch}
+\getvalue{\v!unit} [Cal] {cal} {\labeltext{u:cal}}
+\getvalue{\v!unit} [Force] {f} {\labeltext{u:f}}
+\getvalue{\v!unit} [kCal] {\Kilo \Cal} {\labeltext{u:kcal}}
+\getvalue{\v!unit} [Lux] {lux} {lux}
+
+
+\def\xPercent {\dimensionaddfix{\percent }}
+\def\xPromille{\dimensionaddfix{\promille}}
+
+\getvalue{\v!unit} [Percent] {\xPercent } {percent}
+\getvalue{\v!unit} [Permille] {\xPromille} {promille}
+\getvalue{\v!unit} [Promille] {\xPromille} {promille}
+
+%D Some more, thanks to Tobias:
+
+\getvalue{\v!unit} [Gray] {Gr} {Gray}
+\getvalue{\v!unit} [Weber] {Wb} {Weber}
+\getvalue{\v!unit} [Henry] {H} {Henry}
+\getvalue{\v!unit} [Sterant] {sr} {Sterant}
+\getvalue{\v!unit} [Angstrom] {\hbox{\Aring}} {\Aring ngstr\"om}
+\getvalue{\v!unit} [Gauss] {G} {Gauss}
+
+\setuplabeltext
+ [\s!nl]
+ [u:at=technische atmosfeer,
+ u:atm=fysische atmosfeer,
+ u:ft=voet,
+ u:cal=calorie,
+ u:f=kracht (force),
+ u:kcal=kilocalorie]
+
+\setuplabeltext
+ [\s!en]
+ [u:at=technical atmosferic pressure,
+ u:atm=physical atmosferic pressure,
+ u:ft=foot,
+ u:cal=calory,
+ u:f=force,
+ u:kcal=kilocalory]
+
+\setuplabeltext
+ [\s!de]
+ [u:at=Technischer atmosph\"arischer Druck,
+ u:atm=physkalischer atmosph\"arischer Druck
+ u:ft=Fu\SS,
+ u:cal=Kalorien,
+ u:f=Force,
+ u:kcal=Kilokalorien]
+
+\setuplabeltext
+ [\s!it]
+ [u:at=pressione atmosferica tecnica,
+ u:atm=pressione atmosfera fisica,
+ u:ft=piede,
+ u:cal=caloria,
+ u:f=forza,
+ u:kcal=chilocaloria]
+
+%D Here are some old ones, still there for compatibility
+%D reasons. These will probably be obsolete in a few years.
+
+\def\MeterTwee {\Square \Meter}
+\def\mMeterTwee {\Square \Milli \Meter}
+\def\cMeterTwee {\Square \Centi \Meter}
+\def\dMeterTwee {\Square \Deci \Meter}
+\def\kMeterTwee {\Square \Kilo \Meter}
+
+\def\MeterDrie {\Cubic \Meter}
+\def\mMeterDrie {\Cubic \Milli \Meter}
+\def\cMeterDrie {\Kubic \Centi \Meter}
+\def\dMeterDrie {\Cubic \Deci \Meter}
+\def\kMeterDrie {\Cubic \Kilo \Meter}
+
+\def\LiterTwee {\Square \Liter}
+\def\SecTwee {\Square \Sec}
+\def\SecMinEen {\Inverse \Sec}
+
+%D To make ourselves happy, we define some dutch specific
+%D units:
+
+\startinterface dutch
+
+ \getvalue{\v!unit} [PaardenKracht] {pk} {paardenkracht}
+ \getvalue{\v!unit} [Duits] {D} {duits}
+ \getvalue{\v!unit} [Kwik] {Hg} {kwikkolom}
+ \getvalue{\v!unit} [Hectare] {ha} {hectare}
+ \getvalue{\v!unit} [kGramForce] {\Kilo \Gram \Force} {kilogramforce}
+ \getvalue{\v!unit} [kWattUur] {\Kilo \Watt \Uur} {kilowattuur}
+ \getvalue{\v!unit} [MeterKwik] {\Meter \Kwik} {meter kwikkolom}
+ \getvalue{\v!unit} [Waterkolom] {WK} {waterkolom}
+ \getvalue{\v!unit} [MeterWater] {\Meter \Waterkolom} {meter waterkolom}
+ \getvalue{\v!unit} [DrogeStof] {ds} {droge stof}
+ \getvalue{\v!unit} [Normaal] {N} {normaal}
+
+ \getvalue{\v!unit} [Ton] {t} {ton}
+ \getvalue{\v!unit} [kTon] {\Kilo \Ton} {kiloton}
+
+ \let \OmwPerSec \RevPerSec
+ \let \OmwPerMin \RevPerMin
+ \let \Graden \Deg
+ \let \PaardeKracht \PaardenKracht
+ \let \Atoom \Atom
+ \let \Heure \Hour
+ \let \Jaar \Year
+ \let \Maand \Month
+ \let \Dag \Day
+ \let \Uur \Hour
+
+\stopinterface
+
+%D Finally we define some equivalents. By using \type {\let}
+%D we can be sure that they don't end up double in the lists of
+%D units.
+
+\let \Second \Sec
+\let \Kubic \Cubic
+\let \IKubic \ICubic
+
+%D Option:
+
+% \def\Micro{\dimensionprefix{\iftextdimensions\mathematics\mu \else\mu \fi}}
+% \def\Times{\dimensionnopfix{\iftextdimensions\mathematics\cdot\else\cdot\fi}}
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/m-visual.tex b/Master/texmf-dist/tex/context/base/m-visual.tex
new file mode 100644
index 00000000000..8e992b8557e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/m-visual.tex
@@ -0,0 +1,287 @@
+%D \module
+%D [ file=m-visual,
+%D version=2000.01.10,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Visualization and Faking,
+%D author={Hans Hagen \& Ton Otten},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D This module collect a few more visual debugger features. I
+%D needed them for manuals and styles. The macros are documented
+%D in a my way document.
+
+\definecolor[fakerulecolor] [black]
+\definecolor[fakebaselinecolor] [green]
+\definecolor[fakeparindentcolor][blue]
+
+\newif\iffakebaseline \fakebaselinetrue
+
+\def\fakerule#1%
+ {\strut
+% \startcolor[fakerulecolor]%
+ \iffakebaseline
+ \vrule\!!height1.25ex\!!depth-.05ex\!!width#1%
+ \kern-#1%
+ \vrule\!!height-.05ex\!!depth .25ex\!!width#1%
+ \else
+ \vrule\!!height1.25ex\!!depth .25ex\!!width#1%
+ \fi
+ \stopcolor
+ \allowbreak}
+
+% can be used in hbox, so %'s are really needed
+
+\unexpanded\def\fakelines#1#2% min max / 3 10
+ {\fakeparindent
+ \scratchdimen\hsize
+ \ifindentation
+ \advance\scratchdimen -\parindent
+ \fi
+ \fakerule\scratchdimen\break
+ \getrandomcount\scratchcounter{\ifcase0#1 3\else#1\fi}{\ifcase0#2 10\else#2\fi}%
+ \dorecurse\scratchcounter{\fakerule\hsize}%
+ \getrandomdimen\scratchdimen{.25\hsize}\hsize
+ \fakerule\scratchdimen
+ \par} % indeed
+
+\unexpanded\def\fakewords
+ {\ifvmode\fakeparindent\fi\onlyfakewords}
+
+\definepalet
+ [fakerule]
+ [fr1c=darkred,
+ fr2c=darkgreen,
+ fr3c=darkblue,
+ fr4c=darkyellow,
+ fr5c=darkgray]
+
+\unexpanded\def\onlyfakewords#1#2% min max / 10 40
+ {\getrandomcount\scratchcounter{\ifcase0#1 10\else#1\fi}{\ifcase0#2 40\else#2\fi}%
+ \dofakewords\scratchcounter
+ } % no \par
+
+\unexpanded\def\fakenwords#1#2% words seed
+ {\fakeparindent
+ \getrandomseed\fakedwordseed
+ \setrandomseed{\ifcase0#2 #1\else#2\fi}%
+ \dofakewords{#1}%
+ \setrandomseed\fakedwordseed
+ } % no \par
+
+\def\dofakewords#1%
+ {\bgroup
+ \dorecurse{#1}
+ {\getrandomcount\scratchcounter{1}{5}%
+ \dorecurse\scratchcounter
+ {\getrandomdimen\scratchdimen{.5em}{1.25em}%
+ \fakerule\scratchdimen}%
+ \space}%
+ \removeunwantedspaces
+ \egroup}
+
+\def\doshowfakewords#1%
+ {\bgroup
+ \setuppalet[fakerule]%
+ \definecolor[fakerulecolor]%
+ \dorecurse{#1}
+ {\getrandomcount\scratchcounter{1}{5}%
+ \dorecurse\scratchcounter
+ {\getrandomdimen\scratchdimen{.5em}{1.25em}%
+ \color[fr\recurselevel c]{\fakerule\scratchdimen}}%
+ \space}%
+ \removeunwantedspaces
+ \egroup}
+
+\def\showfakewords{\let\dofakewords\doshowfakewords}
+
+\def\fakeword
+ {\fakewords{1}{1}} % no \plusone
+
+\def\fakeparindent
+ {\noindent
+ \ifindentation
+ \ifx\dofakedroppedcaps\relax
+ {\fakeparindentcolor
+ \vrule
+ \!!height \strutheight % not longer .5ex
+ \!!depth \strutdepth % not longer 0pt
+ \!!width \parindent}%
+ \else
+ \dofakedroppedcaps \let\dofakedroppedcaps\relax
+ \fi
+% \else
+% \dontleavehmode
+ \fi}
+
+\let\dofakedroppedcaps\relax
+
+\unexpanded\def\fakedroppedcaps#1%
+ {\ifnum#1>0
+ \def\dofakedroppedcaps
+ {\setbox\scratchbox\hbox
+ {\setbox\scratchbox\hbox{W}%
+ \scratchdimen#1\lineheight
+ \advance\scratchdimen -\lineheight
+ \advance\scratchdimen \dp\strutbox
+ \vrule
+ \!!width#1\wd\scratchbox
+ \!!height\ht\scratchbox
+ \!!depth\scratchdimen}%
+ \ht\scratchbox\ht\strutbox
+ \dp\scratchbox\dp\strutbox
+ \hangindent\wd\scratchbox
+ \advance\hangindent .5em
+ \wd\scratchbox\hangindent
+ \hangafter-#1\noindent
+ \llap{\fakeparindentcolor\box\scratchbox}}%
+ \fi}
+
+\newcounter\noffakedfigures
+
+\unexpanded\def\showfakefigure
+ {\donetrue\dodoubleempty\dofakefigure}
+
+\unexpanded\def\fakefigure
+ {\donefalse\dodoubleempty\dofakefigure}
+
+\def\dofakefigure[#1][#2]#3#4#5#6% [] [] minwidth maxwidth minheight maxheight
+ {\doglobal\increment\noffakedfigures
+ \ifdone
+ \endgraf
+ \hbox to \hsize
+ {\hss\fakeparindentcolor
+ \strut\bf Figure \noffakedfigures
+ \doifsomething{#1}{\space(#1)}%
+ \hss}
+ \endgraf
+ \fi
+ \getvalue{\e!place\v!figure}
+ [#1][#2]%
+ {\freezerandomseed
+ \let\endstrut\relax
+ \let\begstrut\relax
+ \doifinsetelse{#1}{\v!left,\v!right}
+ {\fakewords{2}{4}}
+ {\fakewords{4}{10}}}%
+ {\getrandomdimen{\dimen0}{#3}{#4}%
+ \getrandomdimen{\dimen2}{#5}{#6}%
+ \doifinset{#1}{\v!left,\v!right}
+ {\dimen0=.75\dimen0
+ \ifdim\dimen0>.6\hsize \dimen0=.5\hsize\fi
+ \ifdim\dimen0<.3\hsize \dimen0=.3\hsize\fi}%
+ \framed
+ [\c!width=\dimen0,
+ \c!height=\dimen2,
+ \c!frame=\ifincolor\v!off\else\v!on\fi,
+ \c!background=\v!color,
+ \c!backgroundcolor=fakeparindentcolor]
+ {\bf\white#1}}%
+ \defrostrandomseed}
+
+\def\fakeformula
+ {\dimen0\zeropoint
+ \getrandomcount\scratchcounter{3}{6}%
+ \dorecurse\scratchcounter
+ {\getrandomdimen\scratchdimen{1em}{3em}%
+ \mathinner{\red\fakerule\scratchdimen}%
+ \ifnum\recurselevel<\scratchcounter+\fi
+ \advance\scratchdimen\dimen0}%
+ =\mathinner{\red\fakerule\scratchdimen}}
+
+\def\fakespacingformula
+ {\color[fakebaselinecolor]{\ruledbaseline}\fakeformula}
+
+%D test \bodyfontgrid\space test
+%D test \emexgrid \space test
+
+\def\smashedgrid
+ {\dosingleempty\dosmashedgrid}
+
+\def\dosmashedgrid[#1]%
+ {\hsmashed
+ {\setbox\scratchbox=\hbox
+ {\basegrid
+ [\c!nx=10,\c!ny=10,\c!dx=1,\c!dy=1,
+ \c!unit=\bodyfontsize,#1]}%
+ \hbox to \zeropoint
+ {\hss\lower.5\ht\scratchbox\box\scratchbox\hss}%
+ \hbox to \zeropoint
+ {\hss
+ \black\vrule\!!width6\linewidth\!!height3\linewidth\!!depth3\linewidth
+ \hss}}}
+
+\def\bodyfontgrid
+ {\hbox
+ {{\linewidth.1pt\yellow\smashedgrid[\c!nx=30,\c!ny=30,\c!scale=.3333]}%
+ {\linewidth.2pt\green \smashedgrid[\c!nx=20,\c!ny=20,\c!scale=.5]}%
+ {\linewidth.3pt\red \smashedgrid[\c!nx=10,\c!ny=10,\c!scale=1]}}}
+
+\def\emexgrid
+ {\hbox
+ {{\linewidth.15pt\green\smashedgrid[\c!nx=20,\c!ny=20,\c!unit=ex]}%
+ {\linewidth.15pt\red \smashedgrid[\c!nx=10,\c!ny=10,\c!unit=em]}}}
+
+%D The next few macros are not really public and kind of low
+%D level. They are obscure and a bit perverse.
+
+\definecolor[llblack][s=0.01]
+
+\def\lowlevelstream#1#2#3%
+ {\ifinotr \else
+ \dontleavehmode
+ \prewordbreak
+ \bgroup\bgroup % make sure aftergroup stuff is handled
+ %\let#1#2\optimizetransparencyfalse\black
+ \infofont\clap{\vl}\ignorespaces#3\unskip\clap{\vl}%
+ \egroup\egroup
+ \prewordbreak
+ \fi
+ #2{#3}}
+
+\let\normalPDFcode\PDFcode
+\let\normalspecial\special
+
+\def\showlowlevelstream
+ {\def\PDFcode{\lowlevelstream\PDFcode\normalPDFcode}%
+ \def\special{\lowlevelstream\special\normalspecial}}
+
+\def\showlowlevelstreamonly
+ {\def\PDFcode{\lowlevelstream\PDFcode\gobbleoneargument}%
+ \def\special{\lowlevelstream\special\gobbleoneargument}}
+
+\let\normaldostartgraymode \dostartgraymode
+\let\normaldostartgraycolormode\dostartgraycolormode
+\let\normaldostartrgbcolormode \dostartrgbcolormode
+\let\normaldostartcmykcolormode\dostartcmykcolormode
+\let\normaldostartspotcolormode\dostartspotcolormode
+
+\def\traceddostartgraymode#1%
+ {#1\normaldostartgraymode{#1}}
+
+\def\traceddostartgraycolormode#1%
+ {#1\normaldostartgraycolormode{#1}}
+
+\def\traceddostartrgbcolormode#1#2#3%
+ {#1 #2 #3\normaldostartrgbcolormode{#1}{#2}{#3}}
+
+\def\traceddostartcmykcolormode#1#2#3#4%
+ {#1 #2 #3 #4\normaldostartcmykcolormode{#1}{#2}{#3}{#4}}
+
+\def\traceddostartspotcolormode#1#2%
+ {#1 #2\normaldostartspotcolormode{#1}{#2}}
+
+\def\showcolormodes
+ {\let\dostartgraymode \traceddostartgraymode
+ \let\dostartgraycolormode\traceddostartgraycolormode
+ \let\dostartrgbcolormode \traceddostartrgbcolormode
+ \let\dostartcmykcolormode\traceddostartcmykcolormode
+ \let\dostartspotcolormode\traceddostartspotcolormode}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-ams.tex b/Master/texmf-dist/tex/context/base/math-ams.tex
new file mode 100644
index 00000000000..3df63ff489a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-ams.tex
@@ -0,0 +1,336 @@
+%D \module
+%D [ file=math-ams,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=AMS Specials,
+%D author={Hans Hagen \& Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% maybe we should just include these into the default tex one
+
+\definefamilysynonym [default] [blackboard] [mb]
+
+\startmathcollection [default]
+
+\definemathsymbol [varGamma] [ord] [letters] ["00]
+\definemathsymbol [varDelta] [ord] [letters] ["01]
+\definemathsymbol [varTheta] [ord] [letters] ["02]
+\definemathsymbol [varLambda] [ord] [letters] ["03]
+\definemathsymbol [varXi] [ord] [letters] ["04]
+\definemathsymbol [varPi] [ord] [letters] ["05]
+\definemathsymbol [varSigma] [ord] [letters] ["06]
+\definemathsymbol [varUpsilon] [ord] [letters] ["07]
+\definemathsymbol [varPhi] [ord] [letters] ["08]
+\definemathsymbol [varPsi] [ord] [letters] ["09]
+\definemathsymbol [varOmega] [ord] [letters] ["0A]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [internalAnd] [rel] [operators] ["26]
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathsymbol [boxdot] [bin] [ma] ["00]
+\definemathsymbol [boxplus] [bin] [ma] ["01]
+\definemathsymbol [boxtimes] [bin] [ma] ["02]
+\definemathsymbol [square] [ord] [ma] ["03]
+\definemathsymbol [Box] [ord] [ma] ["03] % square
+\definemathsymbol [blacksquare] [ord] [ma] ["04]
+\definemathsymbol [centerdot] [bin] [ma] ["05]
+\definemathsymbol [Diamond] [ord] [ma] ["06]
+\definemathsymbol [lozenge] [ord] [ma] ["06] % Diamond
+\definemathsymbol [blacklozenge] [ord] [ma] ["07]
+\definemathsymbol [circlearrowright] [rel] [ma] ["08]
+\definemathsymbol [circlearrowleft] [rel] [ma] ["09]
+\definemathsymbol [rightleftharpoons] [rel] [ma] ["0A]
+\definemathsymbol [leftrightharpoons] [rel] [ma] ["0B]
+\definemathsymbol [boxminus] [bin] [ma] ["0C]
+\definemathsymbol [Vdash] [rel] [ma] ["0D]
+\definemathsymbol [Vvdash] [rel] [ma] ["0E]
+\definemathsymbol [vDash] [rel] [ma] ["0F]
+\definemathsymbol [twoheadrightarrow] [rel] [ma] ["10]
+\definemathsymbol [twoheadleftarrow] [rel] [ma] ["11]
+\definemathsymbol [leftleftarrows] [rel] [ma] ["12]
+\definemathsymbol [rightrightarrows] [rel] [ma] ["13]
+\definemathsymbol [upuparrows] [rel] [ma] ["14]
+\definemathsymbol [downdownarrows] [rel] [ma] ["15]
+\definemathsymbol [upharpoonright] [rel] [ma] ["16]
+\definemathsymbol [restriction] [rel] [ma] ["16]
+\definemathsymbol [downharpoonright] [rel] [ma] ["17]
+\definemathsymbol [upharpoonleft] [rel] [ma] ["18]
+\definemathsymbol [downharpoonleft] [rel] [ma] ["19]
+\definemathsymbol [rightarrowtail] [rel] [ma] ["1A]
+\definemathsymbol [leftarrowtail] [rel] [ma] ["1B]
+\definemathsymbol [leftrightarrows] [rel] [ma] ["1C]
+\definemathsymbol [rightleftarrows] [rel] [ma] ["1D]
+\definemathsymbol [Lsh] [rel] [ma] ["1E]
+\definemathsymbol [Rsh] [rel] [ma] ["1F]
+\definemathsymbol [rightsquigarrow] [rel] [ma] ["20]
+\definemathsymbol [leadsto] [rel] [ma] ["20] % rightsquigarrow
+\definemathsymbol [leftrightsquigarrow] [rel] [ma] ["21]
+\definemathsymbol [looparrowleft] [rel] [ma] ["22]
+\definemathsymbol [looparrowright] [rel] [ma] ["23]
+\definemathsymbol [circeq] [rel] [ma] ["24]
+\definemathsymbol [succsim] [rel] [ma] ["25]
+\definemathsymbol [gtrsim] [rel] [ma] ["26]
+\definemathsymbol [gtrapprox] [rel] [ma] ["27]
+\definemathsymbol [multimap] [rel] [ma] ["28]
+\definemathsymbol [therefore] [rel] [ma] ["29]
+\definemathsymbol [because] [rel] [ma] ["2A]
+\definemathsymbol [doteqdot] [rel] [ma] ["2B]
+\definemathsymbol [Doteq] [rel] [ma] ["2B] % doteqdot
+\definemathsymbol [triangleq] [rel] [ma] ["2C]
+\definemathsymbol [precsim] [rel] [ma] ["2D]
+\definemathsymbol [lesssim] [rel] [ma] ["2E]
+\definemathsymbol [lessapprox] [rel] [ma] ["2F]
+\definemathsymbol [eqslantless] [rel] [ma] ["30]
+\definemathsymbol [eqslantgtr] [rel] [ma] ["31]
+\definemathsymbol [curlyeqprec] [rel] [ma] ["32]
+\definemathsymbol [curlyeqsucc] [rel] [ma] ["33]
+\definemathsymbol [preccurlyeq] [rel] [ma] ["34]
+\definemathsymbol [leqq] [rel] [ma] ["35]
+\definemathsymbol [leqslant] [rel] [ma] ["36]
+\definemathsymbol [lessgtr] [rel] [ma] ["37]
+\definemathsymbol [backprime] [ord] [ma] ["38]
+\definemathsymbol [dabar@] [ord] [ma] ["39] % @
+\definemathsymbol [risingdotseq] [rel] [ma] ["3A]
+\definemathsymbol [fallingdotseq] [rel] [ma] ["3B]
+\definemathsymbol [succcurlyeq] [rel] [ma] ["3C]
+\definemathsymbol [geqq] [rel] [ma] ["3D]
+\definemathsymbol [geqslant] [rel] [ma] ["3E]
+\definemathsymbol [gtrless] [rel] [ma] ["3F]
+\definemathsymbol [sqsubset] [rel] [ma] ["40]
+\definemathsymbol [sqsupset] [rel] [ma] ["41]
+\definemathsymbol [vartriangleright] [rel] [ma] ["42]
+\definemathsymbol [rhd] [bin] [ma] ["42]
+\definemathsymbol [lhd] [bin] [ma] ["43]
+\definemathsymbol [vartriangleleft] [rel] [ma] ["43]
+\definemathsymbol [trianglerighteq] [rel] [ma] ["44]
+\definemathsymbol [unrhd] [bin] [ma] ["44] % trianglerighteq
+\definemathsymbol [trianglelefteq] [rel] [ma] ["45]
+\definemathsymbol [unlhd] [bin] [ma] ["45] % trianglelefteq
+\definemathsymbol [bigstar] [ord] [ma] ["46]
+\definemathsymbol [between] [rel] [ma] ["47]
+\definemathsymbol [blacktriangledown] [ord] [ma] ["48]
+\definemathsymbol [blacktriangleright] [rel] [ma] ["49]
+\definemathsymbol [blacktriangleleft] [rel] [ma] ["4A]
+\definemathsymbol [vartriangle] [rel] [ma] ["4D]
+\definemathsymbol [triangleup] [ord] [ma] ["4D] % vartriangle
+\definemathsymbol [blacktriangle] [ord] [ma] ["4E]
+\definemathsymbol [triangledown] [ord] [ma] ["4F]
+\definemathsymbol [eqcirc] [rel] [ma] ["50]
+\definemathsymbol [lesseqgtr] [rel] [ma] ["51]
+\definemathsymbol [gtreqless] [rel] [ma] ["52]
+\definemathsymbol [lesseqqgtr] [rel] [ma] ["53]
+\definemathsymbol [gtreqqless] [rel] [ma] ["54]
+\definemathsymbol [Rrightarrow] [rel] [ma] ["56]
+\definemathsymbol [Lleftarrow] [rel] [ma] ["57]
+\definemathsymbol [veebar] [bin] [ma] ["59]
+\definemathsymbol [barwedge] [bin] [ma] ["5A]
+\definemathsymbol [doublebarwedge] [bin] [ma] ["5B]
+\definemathsymbol [angle] [ord] [ma] ["5C]
+\definemathsymbol [measuredangle] [ord] [ma] ["5D]
+\definemathsymbol [sphericalangle] [ord] [ma] ["5E]
+\definemathsymbol [varpropto] [rel] [ma] ["5F]
+\definemathsymbol [smallsmile] [rel] [ma] ["60]
+\definemathsymbol [smallfrown] [rel] [ma] ["61]
+\definemathsymbol [Subset] [rel] [ma] ["62]
+\definemathsymbol [Supset] [rel] [ma] ["63]
+\definemathsymbol [Cup] [bin] [ma] ["64]
+\definemathsymbol [doublecup] [bin] [ma] ["64] % Cup
+\definemathsymbol [Cap] [bin] [ma] ["65]
+\definemathsymbol [doublecap] [bin] [ma] ["65]
+\definemathsymbol [curlywedge] [bin] [ma] ["66]
+\definemathsymbol [curlyvee] [bin] [ma] ["67]
+\definemathsymbol [leftthreetimes] [bin] [ma] ["68]
+\definemathsymbol [rightthreetimes] [bin] [ma] ["69]
+\definemathsymbol [subseteqq] [rel] [ma] ["6A]
+\definemathsymbol [supseteqq] [rel] [ma] ["6B]
+\definemathsymbol [bumpeq] [rel] [ma] ["6C]
+\definemathsymbol [Bumpeq] [rel] [ma] ["6D]
+\definemathsymbol [llless] [rel] [ma] ["6E]
+\definemathsymbol [lll] [rel] [ma] ["6E] % llless
+\definemathsymbol [gggtr] [rel] [ma] ["6F]
+\definemathsymbol [ggg] [rel] [ma] ["6F] % gggtr
+\definemathsymbol [ulcorner] [open] [ma] ["70] [ma] ["70]
+\definemathsymbol [urcorner] [close] [ma] ["71] [ma] ["71]
+\definemathsymbol [circledS] [ord] [ma] ["73]
+\definemathsymbol [pitchfork] [rel] [ma] ["74]
+\definemathsymbol [dotplus] [bin] [ma] ["75]
+\definemathsymbol [backsim] [rel] [ma] ["76]
+\definemathsymbol [backsimeq] [rel] [ma] ["77]
+\definemathsymbol [llcorner] [open] [ma] ["78] [ma] ["78]
+\definemathsymbol [lrcorner] [close] [ma] ["79] [ma] ["79]
+\definemathsymbol [complement] [ord] [ma] ["7B]
+\definemathsymbol [intercal] [bin] [ma] ["7C]
+\definemathsymbol [circledcirc] [bin] [ma] ["7D]
+\definemathsymbol [circledast] [bin] [ma] ["7E]
+\definemathsymbol [circleddash] [bin] [ma] ["7F]
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathcommand [integers] {\blackboard{Z}}
+\definemathcommand [reals] {\blackboard{R}}
+\definemathcommand [rationals] {\blackboard{Q}}
+\definemathcommand [naturalnumbers] {\blackboard{N}}
+\definemathcommand [complexes] {\blackboard{C}}
+\definemathcommand [primes] {\blackboard{P}}
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathsymbol [lvertneqq] [rel] [mb] ["00]
+\definemathsymbol [gvertneqq] [rel] [mb] ["01]
+\definemathsymbol [nleq] [rel] [mb] ["02]
+\definemathsymbol [ngeq] [rel] [mb] ["03]
+\definemathsymbol [nless] [rel] [mb] ["04]
+\definemathsymbol [ngtr] [rel] [mb] ["05]
+\definemathsymbol [nprec] [rel] [mb] ["06]
+\definemathsymbol [nsucc] [rel] [mb] ["07]
+\definemathsymbol [lneqq] [rel] [mb] ["08]
+\definemathsymbol [gneqq] [rel] [mb] ["09]
+\definemathsymbol [nleqslant] [rel] [mb] ["0A]
+\definemathsymbol [ngeqslant] [rel] [mb] ["0B]
+\definemathsymbol [lneq] [rel] [mb] ["0C]
+\definemathsymbol [gneq] [rel] [mb] ["0D]
+\definemathsymbol [npreceq] [rel] [mb] ["0E]
+\definemathsymbol [nsucceq] [rel] [mb] ["0F]
+\definemathsymbol [precnsim] [rel] [mb] ["10]
+\definemathsymbol [succnsim] [rel] [mb] ["11]
+\definemathsymbol [lnsim] [rel] [mb] ["12]
+\definemathsymbol [gnsim] [rel] [mb] ["13]
+\definemathsymbol [nleqq] [rel] [mb] ["14]
+\definemathsymbol [ngeqq] [rel] [mb] ["15]
+\definemathsymbol [precneqq] [rel] [mb] ["16]
+\definemathsymbol [succneqq] [rel] [mb] ["17]
+\definemathsymbol [precnapprox] [rel] [mb] ["18]
+\definemathsymbol [succnapprox] [rel] [mb] ["19]
+\definemathsymbol [lnapprox] [rel] [mb] ["1A]
+\definemathsymbol [gnapprox] [rel] [mb] ["1B]
+\definemathsymbol [nsim] [rel] [mb] ["1C]
+\definemathsymbol [ncong] [rel] [mb] ["1D]
+\definemathsymbol [diagup] [ord] [mb] ["1E]
+\definemathsymbol [diagdown] [ord] [mb] ["1F]
+\definemathsymbol [varsubsetneq] [rel] [mb] ["20]
+\definemathsymbol [varsupsetneq] [rel] [mb] ["21]
+\definemathsymbol [nsubseteqq] [rel] [mb] ["22]
+\definemathsymbol [nsupseteqq] [rel] [mb] ["23]
+\definemathsymbol [subsetneqq] [rel] [mb] ["24]
+\definemathsymbol [supsetneqq] [rel] [mb] ["25]
+\definemathsymbol [varsubsetneqq] [rel] [mb] ["26]
+\definemathsymbol [varsupsetneqq] [rel] [mb] ["27]
+\definemathsymbol [subsetneq] [rel] [mb] ["28]
+\definemathsymbol [supsetneq] [rel] [mb] ["29]
+\definemathsymbol [nsubseteq] [rel] [mb] ["2A]
+\definemathsymbol [nsupseteq] [rel] [mb] ["2B]
+\definemathsymbol [nparallel] [rel] [mb] ["2C]
+\definemathsymbol [nmid] [rel] [mb] ["2D]
+\definemathsymbol [nshortmid] [rel] [mb] ["2E]
+\definemathsymbol [nshortparallel] [rel] [mb] ["2F]
+\definemathsymbol [nvdash] [rel] [mb] ["30]
+\definemathsymbol [nVdash] [rel] [mb] ["31]
+\definemathsymbol [nvDash] [rel] [mb] ["32]
+\definemathsymbol [nVDash] [rel] [mb] ["33]
+\definemathsymbol [ntrianglerighteq] [rel] [mb] ["34]
+\definemathsymbol [ntrianglelefteq] [rel] [mb] ["35]
+\definemathsymbol [ntriangleleft] [rel] [mb] ["36]
+\definemathsymbol [ntriangleright] [rel] [mb] ["37]
+\definemathsymbol [nleftarrow] [rel] [mb] ["38]
+\definemathsymbol [nrightarrow] [rel] [mb] ["39]
+\definemathsymbol [nLeftarrow] [rel] [mb] ["3A]
+\definemathsymbol [nRightarrow] [rel] [mb] ["3B]
+\definemathsymbol [nLeftrightarrow] [rel] [mb] ["3C]
+\definemathsymbol [nleftrightarrow] [rel] [mb] ["3D]
+\definemathsymbol [divideontimes] [bin] [mb] ["3E]
+\definemathsymbol [varnothing] [ord] [mb] ["3F]
+\definemathsymbol [nexists] [ord] [mb] ["40]
+\definemathsymbol [Finv] [ord] [mb] ["60]
+\definemathsymbol [Game] [ord] [mb] ["61]
+\definemathsymbol [mho] [ord] [mb] ["66]
+\definemathsymbol [eth] [ord] [mb] ["67]
+\definemathsymbol [eqsim] [rel] [mb] ["68]
+\definemathsymbol [beth] [ord] [mb] ["69]
+\definemathsymbol [gimel] [ord] [mb] ["6A]
+\definemathsymbol [daleth] [ord] [mb] ["6B]
+\definemathsymbol [lessdot] [bin] [mb] ["6C]
+\definemathsymbol [gtrdot] [bin] [mb] ["6D]
+\definemathsymbol [ltimes] [bin] [mb] ["6E]
+\definemathsymbol [rtimes] [bin] [mb] ["6F]
+\definemathsymbol [shortmid] [rel] [mb] ["70]
+\definemathsymbol [shortparallel] [rel] [mb] ["71]
+\definemathsymbol [smallsetminus] [bin] [mb] ["72]
+\definemathsymbol [thicksim] [rel] [mb] ["73]
+\definemathsymbol [thickapprox] [rel] [mb] ["74]
+\definemathsymbol [approxeq] [rel] [mb] ["75]
+\definemathsymbol [succapprox] [rel] [mb] ["76]
+\definemathsymbol [precapprox] [rel] [mb] ["77]
+\definemathsymbol [curvearrowleft] [rel] [mb] ["78]
+\definemathsymbol [curvearrowright] [rel] [mb] ["79]
+\definemathsymbol [digamma] [ord] [mb] ["7A]
+\definemathsymbol [varkappa] [ord] [mb] ["7B]
+\definemathsymbol [Bbbk] [ord] [mb] ["7C]
+\definemathsymbol [hslash] [ord] [mb] ["7D]
+\definemathsymbol [hbar] [ord] [mb] ["7E]
+\definemathsymbol [backepsilon] [rel] [mb] ["7F]
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathcommand [yen] [nothing] {\mathhexbox{\hexmafam}55}
+\definemathcommand [checkmark] [nothing] {\mathhexbox{\hexmafam}58}
+\definemathcommand [circledR] [nothing] {\mathhexbox{\hexmafam}72}
+\definemathcommand [maltese] [nothing] {\mathhexbox{\hexmafam}7A}
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathcommand [dashrightarrow] [rel] {\dabar@\dabar@ \mathchar"0C4B}%
+\definemathcommand [dashleftarrow] [rel] {\mathchar"0C4C\dabar@ \dabar@}%
+\definemathcommand [dasharrow] [rel] {\dabar@\dabar@ \mathchar"0C4B}%
+\definemathcommand [Join] [rel] {\mathchar"0D6F\mkern-13.8mu\mathchar"0D6E}
+\definemathcommand [implies] [rel] {\;\Longrightarrow\;}
+\definemathcommand [impliedby] [rel] {\;\Longleftarrow\;}
+\definemathcommand [And] [rel] {\;\internalAnd\;}
+
+\stopmathcollection
+
+\def\AMSwidehat#1%
+ {\setbox\scratchbox\hbox{$\m@th#1$}%
+ \ifdim\wd\scratchbox>2em
+ \mathaccent"0\purefamilyhex{mb}5B{#1}%
+ \else
+ \mathaccent"0\purefamilyhex{ex}62{#1}%
+ \fi}
+
+\def\AMSwidetilde#1%
+ {\setbox\scratchbox\hbox{$\m@th#1$}%
+ \ifdim\wd\scratchbox>2em
+ \mathaccent"0\purefamilyhex{mb}5D{#1}%
+ \else
+ \mathaccent"0\purefamilyhex{ex}65{#1}%
+ \fi}
+
+\startmathcollection [default]
+
+\definemathcommand [widehat] {\AMSwidehat}
+\definemathcommand [widetilde] {\AMSwidetilde}
+
+\stopmathcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-eul.tex b/Master/texmf-dist/tex/context/base/math-eul.tex
new file mode 100644
index 00000000000..230f7ae119e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-eul.tex
@@ -0,0 +1,247 @@
+%D \module
+%D [ file=math-eul,
+%D version=2003.02.03,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Virtual Euler Specials,
+%D author={Hans Hagen \& Taco Hoekwater \& Adam Lindsay},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details. Further modified by Adam Lindsay.
+
+\unprotect
+
+%D We follow the following mappings from type-eul:
+%D
+%D mr [MathRoman] [Euler-Roman] [zeurm10]
+
+%D mi [MathItalic] [Euler-Italic] [eufm10]
+
+%D ex [MathExtension] [Euler-Extension] [zeuex10]
+%D sy [MathSymbol] [Euler-Symbol] [zeusm10]
+
+%D mb [MathBeta] [Charter-Roman] [bchr8r] XXX
+%D mc [MathGamma] [Euler-Fraktur] [eufm10] XXX
+%D
+%D The inclusion of Bitstream Charter was originally for the text accents.
+%D Obviously, it's not a proper ``MathBeta'' font.
+
+%D The varrho and varsigma characters don't exist in eulervm,
+%D so we point at the normal types.
+
+\definefamilysynonym [eul] [calligraphic] [sy]
+\definefamilysynonym [eul] [oldstyle] [mi]
+\definefamilysynonym [eul] [gothic] [mi]
+\definefamilysynonym [eul] [fraktur] [mi]
+
+\definefamilysynonym [eul] [lcgreek] [mr]
+\definefamilysynonym [eul] [ucgreek] [mr]
+\definefamilysynonym [eul] [vargreek] [mr]
+
+%% Well, you don't know until you try!
+%\definefamilysynonym [eul] [accents] [Serif]
+
+\startmathcollection [eul]
+
+\definemathsymbol [varrho] [nothing] [vargreek] ["1A]
+\definemathsymbol [varsigma] [nothing] [vargreek] ["1B]
+
+%D Changes necessitated by collapsing mr \& mi into one:
+\definemathsymbol [imath] [nothing] [mr] ["7B]
+\definemathsymbol [jmath] [nothing] [mr] ["7C]
+\definemathsymbol [ell] [nothing] [mr] ["60]
+\definemathsymbol [wp] [nothing] [mr] ["7D]
+\definemathsymbol [partial] [nothing] [mr] ["40]
+
+\definemathsymbol [flat] [ord] [mr] ["5B]
+\definemathsymbol [natural] [ord] [mr] ["5C]
+\definemathsymbol [sharp] [ord] [mr] ["5D]
+
+\definemathsymbol [triangleleft] [bin] [mr] ["2F]
+\definemathsymbol [triangleright][bin] [mr] ["2E]
+
+\definemathsymbol [star] [bin] [mr] ["3F]
+
+\definemathsymbol [smile] [rel] [mr] ["5E]
+\definemathsymbol [frown] [rel] [mr] ["5F]
+\definemathsymbol [leftharpoonup] [rel] [mr] ["28]
+\definemathsymbol [leftharpoondown] [rel] [mr] ["29]
+\definemathsymbol [rightharpoonup] [rel] [mr] ["2A]
+\definemathsymbol [rightharpoondown] [rel] [mr] ["2B]
+\definemathsymbol [lhook] [rel] [mr] ["2C]
+\definemathsymbol [rhook] [rel] [mr] ["2D]
+
+\definemathsymbol [mathperiod] [ord] [mr] ["3A]
+\definemathsymbol [textperiod] [punct] [mr] ["3A]
+
+\definemathsymbol [mathcomma] [ord] [mr] ["3B]
+\definemathsymbol [textcomma] [punct] [mr] ["3B]
+
+\definemathsymbol [ldotp] [punct] [mr] ["3A]
+
+% extras from AMS:
+\definemathsymbol [hslash] [ord] [mr] ["80] %beauty over truth
+
+\stopmathcollection
+
+\startmathcollection [eul]
+% Ugh. no way around this to keep it compact in the font defs.
+
+\definemathcharacter [a] [nothing] [mr] ["61]
+\definemathcharacter [b] [nothing] [mr] ["62]
+\definemathcharacter [c] [nothing] [mr] ["63]
+\definemathcharacter [d] [nothing] [mr] ["64]
+\definemathcharacter [e] [nothing] [mr] ["65]
+\definemathcharacter [f] [nothing] [mr] ["66]
+\definemathcharacter [g] [nothing] [mr] ["67]
+\definemathcharacter [h] [nothing] [mr] ["68]
+\definemathcharacter [i] [nothing] [mr] ["69]
+\definemathcharacter [j] [nothing] [mr] ["6A]
+\definemathcharacter [k] [nothing] [mr] ["6B]
+\definemathcharacter [l] [nothing] [mr] ["6C]
+\definemathcharacter [m] [nothing] [mr] ["6D]
+\definemathcharacter [n] [nothing] [mr] ["6E]
+\definemathcharacter [o] [nothing] [mr] ["6F]
+\definemathcharacter [p] [nothing] [mr] ["70]
+\definemathcharacter [q] [nothing] [mr] ["71]
+\definemathcharacter [r] [nothing] [mr] ["72]
+\definemathcharacter [s] [nothing] [mr] ["73]
+\definemathcharacter [t] [nothing] [mr] ["74]
+\definemathcharacter [u] [nothing] [mr] ["75]
+\definemathcharacter [v] [nothing] [mr] ["76]
+\definemathcharacter [w] [nothing] [mr] ["77]
+\definemathcharacter [x] [nothing] [mr] ["78]
+\definemathcharacter [y] [nothing] [mr] ["79]
+\definemathcharacter [z] [nothing] [mr] ["7A]
+
+\definemathcharacter [A] [nothing] [mr] ["41]
+\definemathcharacter [B] [nothing] [mr] ["42]
+\definemathcharacter [C] [nothing] [mr] ["43]
+\definemathcharacter [D] [nothing] [mr] ["45]
+\definemathcharacter [E] [nothing] [mr] ["45]
+\definemathcharacter [F] [nothing] [mr] ["46]
+\definemathcharacter [G] [nothing] [mr] ["47]
+\definemathcharacter [H] [nothing] [mr] ["48]
+\definemathcharacter [I] [nothing] [mr] ["49]
+\definemathcharacter [J] [nothing] [mr] ["4A]
+\definemathcharacter [K] [nothing] [mr] ["4B]
+\definemathcharacter [L] [nothing] [mr] ["4C]
+\definemathcharacter [M] [nothing] [mr] ["4D]
+\definemathcharacter [N] [nothing] [mr] ["4E]
+\definemathcharacter [O] [nothing] [mr] ["4F]
+\definemathcharacter [P] [nothing] [mr] ["50]
+\definemathcharacter [Q] [nothing] [mr] ["51]
+\definemathcharacter [R] [nothing] [mr] ["52]
+\definemathcharacter [S] [nothing] [mr] ["53]
+\definemathcharacter [T] [nothing] [mr] ["54]
+\definemathcharacter [U] [nothing] [mr] ["55]
+\definemathcharacter [V] [nothing] [mr] ["56]
+\definemathcharacter [W] [nothing] [mr] ["57]
+\definemathcharacter [X] [nothing] [mr] ["58]
+\definemathcharacter [Y] [nothing] [mr] ["59]
+\definemathcharacter [Z] [nothing] [mr] ["5A]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathcharacter [!] [close] [sy] ["A1]
+\definemathcharacter [(] [open] [sy] ["A8]
+\definemathcharacter [)] [close] [sy] ["A9]
+\definemathcharacter [+] [bin] [sy] ["AB]
+\definemathcharacter [:] [rel] [sy] ["BA]
+\definemathcharacter [;] [punct] [sy] ["BB]
+\definemathcharacter [=] [rel] [sy] ["BD]
+\definemathcharacter [?] [close] [sy] ["BF]
+\definemathcharacter [91] [open] [sy] ["DB] % [
+\definemathcharacter [93] [close] [sy] ["DD] % ]
+
+\definemathcharacter [,] [punct] [mr] ["3B]
+\definemathcharacter [.] [ord] [mr] ["3A]
+\definemathcharacter [/] [ord] [mr] ["3D]
+\definemathcharacter [<] [rel] [mr] ["3C]
+\definemathcharacter [>] [rel] [mr] ["3E]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathcharacter [(] [nothing] [sy] ["A8] [ex] ["00]
+\definemathcharacter [)] [nothing] [sy] ["A9] [ex] ["01]
+\definemathcharacter [91] [nothing] [sy] ["DB] [ex] ["02] % [
+\definemathcharacter [93] [nothing] [sy] ["DD] [ex] ["03] % ]
+\definemathcharacter [/] [nothing] [mr] ["3D] [ex] ["0E]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathsymbol [hbar] [nothing] [mr] ["80]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathsymbol [ddagger] [bin] [sy] ["7A]
+\definemathsymbol [dagger] [bin] [sy] ["79]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathsymbol [colon] [punct] [sy] ["BA]
+
+\stopmathcollection
+
+%D This used to be very hackish; it brought in text
+%D accents from the well-matched Bitstream Charter.
+
+%D But now, these characters don't exist. I would prefer to pull
+%D them from the text font, but I don't know how.
+%D Instead, I'm just pointing to null characters!
+
+\startmathcollection [eul]
+
+\definemathsymbol [acute] [accent] [mr] ["90]
+\definemathsymbol [grave] [accent] [mr] ["91]
+\definemathsymbol [ddot] [accent] [mr] ["92]
+\definemathsymbol [tilde] [accent] [mr] ["93]
+\definemathsymbol [bar] [accent] [mr] ["94]
+\definemathsymbol [breve] [accent] [mr] ["95]
+\definemathsymbol [check] [accent] [mr] ["96]
+\definemathsymbol [hat] [accent] [mr] ["97]
+\definemathsymbol [dot] [accent] [mr] ["98]
+%\definemathsymbol [acute] [accent] [accents] ["B4]
+%\definemathsymbol [grave] [accent] [accents] ["1E]
+%\definemathsymbol [ddot] [accent] [accents] ["A8]
+%\definemathsymbol [tilde] [accent] [accents] ["98]
+%\definemathsymbol [bar] [accent] [accents] ["AF]
+%\definemathsymbol [breve] [accent] [accents] ["0B]
+%\definemathsymbol [check] [accent] [accents] ["10]
+%\definemathsymbol [hat] [accent] [accents] ["5E]
+%\definemathsymbol [dot] [accent] [accents] ["01]
+
+\definemathsymbol [vec] [accent] [mr] ["7E] % [ord]
+\definemathsymbol [hat] [accent] [sy] ["DE]
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathsymbol [lgroup] [open] [sy] ["A8] [ex] ["3A] % ?
+\definemathsymbol [rgroup] [close] [sy] ["A9] [ex] ["3B] % ?
+
+\stopmathcollection
+
+\startmathcollection [eul]
+
+\definemathsymbol [dag] [box] [sy] ["79]
+\definemathsymbol [ddag] [box] [sy] ["7A]
+\definemathsymbol [S] [box] [sy] ["78]
+\definemathsymbol [P] [box] [sy] ["7B]
+
+\stopmathcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-fou.tex b/Master/texmf-dist/tex/context/base/math-fou.tex
new file mode 100644
index 00000000000..8a72f128847
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-fou.tex
@@ -0,0 +1,196 @@
+%D \module
+%D [ file=math-fou,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Fourier Specials,
+%D author={Michel Biovani \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% see end of file for todo
+
+\unprotect
+
+\startmathcollection [fou]
+
+ \definemathsymbol [Gamma] [alpha] [mi] ["00]
+ \definemathsymbol [Delta] [alpha] [mi] ["01]
+ \definemathsymbol [Theta] [alpha] [mi] ["02]
+ \definemathsymbol [Lambda] [alpha] [mi] ["03]
+ \definemathsymbol [Xi] [alpha] [mi] ["04]
+ \definemathsymbol [Pi] [alpha] [mi] ["05]
+ \definemathsymbol [Sigma] [alpha] [mi] ["06]
+ \definemathsymbol [Upsilon] [alpha] [mi] ["07]
+ \definemathsymbol [Phi] [alpha] [mi] ["08]
+ \definemathsymbol [Psi] [alpha] [mi] ["09]
+ \definemathsymbol [Omega] [alpha] [mi] ["0A]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathcharacter [+] [bin] [sy] ["80]
+ \definemathcharacter [=] [rel] [sy] ["81]
+ \definemathcharacter [<] [rel] [sy] ["82]
+ \definemathcharacter [>] [rel] [sy] ["83]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [leqslant] [rel] [sy] ["84]
+ \definemathsymbol [geqslant] [rel] [sy] ["85]
+ \definemathsymbol [parallelslant] [rel] [sy] ["86]
+ \definemathsymbol [thething] [ord] [sy] ["87]
+ \definemathsymbol [vDash] [rel] [sy] ["88]
+ \definemathsymbol [blacktriangleleft] [rel] [sy] ["89]
+ \definemathsymbol [blacktriangleright] [rel] [sy] ["8A]
+ \definemathsymbol [nleqslant] [rel] [sy] ["8B]
+ \definemathsymbol [ngeqslant] [rel] [sy] ["8C]
+ \definemathsymbol [parallel] [rel] [sy] ["8D]
+ \definemathsymbol [nparallel] [rel] [sy] ["8E]
+ \definemathsymbol [nparallelslant] [rel] [sy] ["8F]
+ \definemathsymbol [nvDash] [rel] [sy] ["90]
+ \definemathsymbol [intercal] [bin] [sy] ["91]
+ \definemathsymbol [hslash] [ord] [sy] ["92]
+ \definemathsymbol [nexists] [ord] [sy] ["93]
+ \definemathsymbol [varsubsetneq] [rel] [sy] ["93]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathcharacter [(] [nothing] [mr] ["28] [ex] ["A1]
+ \definemathcharacter [)] [nothing] [mr] ["29] [ex] ["A2]
+ \definemathcharacter [91] [nothing] [mr] ["5B] [ex] ["A3] % [
+ \definemathcharacter [93] [nothing] [mr] ["5D] [ex] ["A4] % ]
+ \definemathcharacter [/] [nothing] [mr] ["2F] [ex] ["B1]
+
+ \definemathcharacter [124] [nothing] [sy] ["6A] [ex] ["AF] % |
+ \definemathcharacter [92] [nothing] [sy] ["6E] [ex] ["B2] % \
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [Vert] [nothing] [sy] ["6B] [ex] ["B0]
+ \definemathsymbol [vert] [nothing] [sy] ["6A] [ex] ["AF]
+ \definemathsymbol [VERT] [nothing] [sy] ["98] [ex] ["93]
+ \definemathsymbol [Downarrow] [rel] [sy] ["2B] [ex] ["C4]
+ \definemathsymbol [backslash] [nothing] [sy] ["6E] [ex] ["B2]
+ \definemathsymbol [rangle] [close] [sy] ["69] [ex] ["AE]
+ \definemathsymbol [langle] [open] [sy] ["68] [ex] ["AD]
+ \definemathsymbol [rbrace] [close] [sy] ["67] [ex] ["AA]
+ \definemathsymbol [lbrace] [open] [sy] ["66] [ex] ["A9]
+ \definemathsymbol [rceil] [close] [sy] ["65] [ex] ["A8]
+ \definemathsymbol [lceil] [open] [sy] ["64] [ex] ["A7]
+ \definemathsymbol [rfloor] [close] [sy] ["63] [ex] ["A6]
+ \definemathsymbol [lfloor] [open] [sy] ["62] [ex] ["A5]
+ \definemathsymbol [dblbrackleft] [open] [sy] ["99] [ex] ["85]
+ \definemathsymbol [dblbrackright] [close] [sy] ["9A] [ex] ["86]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [varkappa] [ord] [mi] ["80] % check this
+ \definemathsymbol [varvarrho] [ord] [mi] ["81] % check this
+ \definemathsymbol [xswordsup] [ord] [sy] ["96]
+ \definemathsymbol [xswordsdown] [ord] [sy] ["97]
+ \definemathsymbol [notowns] [rel] [sy] ["9C]
+ \definemathsymbol [hbar] [ord] [sy] ["9D]
+ \definemathsymbol [smallsetminus] [bin] [sy] ["9E]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [notin] [rel] [sy] ["9B]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [iintop] [op] [ex] ["CE]
+ \definemathsymbol [iiintop] [op] [ex] ["D0]
+ \definemathsymbol [oiintop] [op] [ex] ["D2]
+ \definemathsymbol [oiiintop] [op] [ex] ["D4]
+ \definemathsymbol [slashintop] [op] [ex] ["D6]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathcommand [iint] {\iintop \nolimits}
+ \definemathcommand [iiint] {\iiintop \nolimits}
+ \definemathcommand [oiint] {\oiintop \nolimits}
+ \definemathcommand [oiiint] {\oiiintop \nolimits}
+ \definemathcommand [slashint] {\slashintop\nolimits}
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [acute] [accent] [mr] ["1]
+ \definemathsymbol [grave] [accent] [mr] ["0]
+ \definemathsymbol [ddot] [accent] [mr] ["4]
+ \definemathsymbol [tilde] [accent] [mr] ["3]
+ \definemathsymbol [bar] [accent] [mr] ["9]
+ \definemathsymbol [breve] [accent] [mr] ["8]
+ \definemathsymbol [check] [accent] [mr] ["7]
+ \definemathsymbol [hat] [accent] [mr] ["2]
+ \definemathsymbol [dot] [accent] [mr] ["A]
+ \definemathsymbol [mathring] [accent] [mr] ["6]
+
+\stopmathcollection
+
+\startmathcollection [fou]
+
+ \definemathsymbol [otheralpha] [ord] [mi] ["0B]
+ \definemathsymbol [otherbeta] [ord] [mi] ["0C]
+ \definemathsymbol [othergamma] [ord] [mi] ["0D]
+ \definemathsymbol [otherdelta] [ord] [mi] ["0E]
+ \definemathsymbol [otherepsilon] [ord] [mi] ["0F]
+ \definemathsymbol [otherzeta] [ord] [mi] ["10]
+
+\stopmathcollection
+
+\protect \endinput
+
+% from a mail of Michel B / todo
+
+% \definemathsymbol [acute] [accent] [operators] ["1]
+% \definemathsymbol [grave] [accent] [operators] ["0]
+% \definemathsymbol [ddot] [accent] [operators] ["4]
+% \definemathsymbol [tilde] [accent] [operators] ["3]
+% \definemathsymbol [bar] [accent] [operators] ["9]
+% \definemathsymbol [breve] [accent] [operators] ["8]
+% \definemathsymbol [check] [accent] [operators] ["7]
+% \definemathsymbol [hat] [accent] [operators] ["2]
+% \definemathsymbol [dot] [accent] [operators] ["A]
+% \definemathsymbol [mathring] [accent] [operators] ["6]
+
+% \definemathsymbol [wideparen] [ord] [largesymbols] ["94]
+% \definemathsymbol [widearc] [accent] [largesymbols] ["D8]
+
+% check for definition of \overset (ams)
+
+% \def\FOUwidering#1%
+% {\overset{\smash{\vbox to .2ex{\hbox{$\mathring{}$}}}}{\wideparen{#1}}}
+
+% \startmathcollection [default] % [ams]
+%
+% \definemathcommand [widering] {\FOUwidering}
+%
+% \stopmathcollection
+
+% \definemathsymbol [otheralpha] [ord] [otherletters] ["0B]
+% \definemathsymbol [otherbeta] [ord] [otherletters] ["0C]
+% \definemathsymbol [othergamma] [ord] [otherletters] ["0D]
+% \definemathsymbol [otherdelta] [ord] [otherletters] ["0E]
+% \definemathsymbol [otherepsilon] [ord] [otherletters] ["0F]
+% \definemathsymbol [otherzeta] [ord] [otherletters] ["10]
diff --git a/Master/texmf-dist/tex/context/base/math-ini.tex b/Master/texmf-dist/tex/context/base/math-ini.tex
new file mode 100644
index 00000000000..d78a9e4fcbb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-ini.tex
@@ -0,0 +1,623 @@
+%D \module
+%D [ file=math-ini,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Basic Macros,
+%D author={Hans Hagen \& Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% todo: make all definitions global since file loaded only once
+
+%D This module provides namespaces for math fonts, thereby
+%D permitting mixed usage of math fonts. Although not strictly
+%D needed, we also provide a family name mapping mechanism as
+%D used in the (original) AMS math definition files, but here
+%D these names can recursively be remapped and if needed,
+%D dynamically be changed. We've tried to minimize the number
+%D of definition commands and use plain \TEX\ definitions as
+%D fallback. We've tried to follow a couple of conventions
+%D from plain and AMS math in order to achieve backward
+%D compatinility. We also kept an eye on future usage of these
+%D modules in the perspective of MathML and unicode fonts.
+
+\unprotect
+
+\def\@ml@{@ml@} % math list (used for collection)
+\def\@mf@{@mf@} % math family
+%def\@mh@{@mh@} % math handler (not used)
+\def\@mt@{@mt@} % math token
+\def\@mc@{@mc@} % math collection
+
+\def\@@mathlimopcomm#1{\mathop{#1}\limits}
+\def\@@mathnolopcomm#1{\mathop{#1}\nolimits}
+\def\@@mathboxcomm #1{\leavevmode\hbox{$\m@th#1$}}
+
+\chardef\mathordcode = 0 \let\mathordcomm \mathord
+\chardef\mathopcode = 1 \let\mathopcomm \mathop
+\chardef\mathbincode = 2 \let\mathbincomm \mathbin
+\chardef\mathrelcode = 3 \let\mathrelcomm \mathrel
+\chardef\mathopencode = 4 \let\mathopencomm \mathopen
+\chardef\mathclosecode = 5 \let\mathclosecomm \mathclose
+\chardef\mathpunctcode = 6 \let\mathpunctcomm \mathpunct
+\chardef\mathalphacode = 7 \let\mathalphacomm \firstofoneargument
+\chardef\mathinnercode = 0 \let\mathinnercomm \mathinner
+\chardef\mathnothingcode= 0 \let\mathnothingcomm \firstofoneargument
+\chardef\mathlimopcode = 1 \let\mathlimopcomm \@@mathlimopcomm
+\chardef\mathnolopcode = 1 \let\mathnolopcomm \@@mathnolopcomm
+\chardef\mathchoicecode = 0 \let\mathchoicecomm \@@mathchoicecomm
+\chardef\mathboxcode = 0 \let\mathboxcomm \@@mathboxcomm
+
+\chardef\mathaccentcode = 8
+\chardef\mathradicalcode= 9
+
+\def\@@mathchoicecomm#1{[todo #1]}
+
+\def\puremathcode#1{\the\csname math#1code\endcsname}
+\def\puremathcomm#1{\csname math#1comm\endcsname}
+
+\newif\iftracemathcollection
+
+% Simple variant:
+%
+% \beginETEX \ifcsname
+%
+% \def\dohandlemathtoken#1%
+% {\csname\@mt@
+% \ifcsname\@mt@\mathcollection#1\endcsname
+% \mathcollection
+% \else\ifcsname\@mt@\nomathcollection#1\endcsname
+% \nomathcollection
+% \fi\fi
+% #1\endcsname}
+%
+% \endETEX
+%
+% \beginTEX
+%
+% \def\dohandlemathtoken#1%
+% {\csname\@mt@
+% \@EA\ifx\csname\@mt@\mathcollection#1\endcsname\relax
+% \@EA\ifx\csname\@mt@\nomathcollection#1\endcsname\relax
+% \else
+% \nomathcollection
+% \fi
+% \else
+% \mathcollection
+% \fi
+% #1\endcsname}
+%
+% \endTEX
+
+%D Because a command can have a different meaning in math
+%D and in text mode, we provide a selector. We also provide
+%D the pure alternatives as \type {\mathcharacter} and \type
+%D {\textcharacter}.
+
+\ifx\dohandlecommand\undefined \wait \fi % troubles !
+
+\let\mathcharacter\dohandlemathtoken
+\let\textcharacter\dohandlecommand % better \dohandletexttoken
+
+% More clever layout:
+%
+% \beginETEX \ifcsname
+%
+% \def\dohandlemathtoken#1%
+% {\csname
+% \ifmmode
+% \ifcsname\@mt@\mathcollection#1\endcsname
+% \@mt@\mathcollection
+% \else\ifcsname\@mt@\nomathcollection#1\endcsname
+% \@mt@\nomathcollection
+% \else\ifcsname\characterencoding#1\endcsname
+% \characterencoding
+% \else
+% \nocharacterencoding
+% \fi\fi\fi
+% \else
+% \ifcsname\characterencoding#1\endcsname
+% \characterencoding
+% \else
+% \nocharacterencoding
+% \fi
+% \fi
+% #1\endcsname}
+%
+% \endETEX
+%
+% \beginTEX
+%
+% \def\dohandlemathtoken#1%
+% {\csname
+% \ifmmode
+% \@EA\ifx\csname\@mt@\mathcollection#1\endcsname\relax
+% \@EA\ifx\csname\@mt@\nomathcollection#1\endcsname\relax
+% \@EA\ifx\csname\characterencoding#1\endcsname\relax
+% \nocharacterencoding
+% \else
+% \characterencoding
+% \fi
+% \else
+% \@mt@\nomathcollection
+% \fi
+% \else
+% \@mt@\mathcollection
+% \fi
+% \else
+% \@EA\ifx\csname\characterencoding#1\endcsname\relax
+% \nocharacterencoding
+% \else
+% \characterencoding
+% \fi
+% \fi
+% #1\endcsname}
+%
+% \endTEX
+%
+% fallback to math when in text mode (handy for unicode vectors)
+
+\beginETEX
+
+\def\dohandlemathtoken#1%
+ {\csname
+ \ifmmode
+ \ifcsname\@mt@\mathcollection#1\endcsname
+ \@mt@\mathcollection
+ \else\ifcsname\@mt@\nomathcollection#1\endcsname
+ \@mt@\nomathcollection
+ \else\ifcsname\characterencoding#1\endcsname
+ \characterencoding
+ \else
+ \nocharacterencoding
+ \fi\fi\fi
+ \else
+ \ifcsname\characterencoding#1\endcsname
+ \characterencoding
+ \else\ifcsname\nocharacterencoding#1\endcsname
+ \nocharacterencoding
+ \else\ifcsname\@mt@\mathcollection#1\endcsname
+ \strippedcsname\mathematics\expandafter\endcsname\csname\@mt@\mathcollection
+ \else\ifcsname\@mt@\nomathcollection#1\endcsname
+ \strippedcsname\mathematics\expandafter\endcsname\csname\@mt@\nomathcollection
+ \else
+ \nocharacterencoding
+ \fi\fi\fi\fi
+ \fi
+ #1\endcsname}
+
+\endETEX
+
+\beginTEX
+
+\def\dohandlemathtoken#1%
+ {\csname
+ \ifmmode
+ \@EA\ifx\csname\@mt@\mathcollection#1\endcsname\relax
+ \@EA\ifx\csname\@mt@\nomathcollection#1\endcsname\relax
+ \@EA\ifx\csname\characterencoding#1\endcsname\relax
+ \nocharacterencoding
+ \else
+ \characterencoding
+ \fi
+ \else
+ \@mt@\nomathcollection
+ \fi
+ \else
+ \@mt@\mathcollection
+ \fi
+ \else
+ \@EA\ifx\csname\characterencoding#1\endcsname\relax
+ \@EA\ifx\csname\nocharacterencoding#1\endcsname\relax
+ \@EA\ifx\csname\@mt@\mathcollection#1\endcsname\relax
+ \@EA\ifx\csname\@mt@\nomathcollection#1\endcsname\relax
+ \nocharacterencoding
+ \else
+ \strippedcsname\mathematics\expandafter\endcsname\csname\@mt@\nomathcollection
+ \fi
+ \else
+ \strippedcsname\mathematics\expandafter\endcsname\csname\@mt@\mathcollection
+ \fi
+ \else
+ \nocharacterencoding
+ \fi
+ \else
+ \characterencoding
+ \fi
+ \fi
+ #1\endcsname}
+
+\endTEX
+
+%D Now we redefine the text encoding handler.
+
+\let\dohandlecommand\dohandlemathtoken
+
+\def\definefamilysynonym
+ {\dotripleempty\dodefinefamilysynonym}
+
+\def\dodefinefamilysynonym[#1][#2][#3]% [mathcollection] [] []
+ {\ifthirdargument
+ \setvalue{\@mf@#1#2}{#3}%
+ \else
+ \setvalue{\@mf@ #1}{#2}%
+ \fi}
+
+\let\mathsubfamily\empty
+
+\def\purefamily #1{\csname \truefamily{#1}\mathsubfamily\s!fam\endcsname}
+\def\purefamilyhex#1{\csname hex\truefamily{#1}\mathsubfamily\s!fam\endcsname}
+
+\beginETEX \ifcsname
+
+\def\truefamily#1%
+ {\ifcsname\@mf@\mathcollection#1\endcsname
+ \@EA\truefamily\csname\@mf@\mathcollection#1\endcsname
+ \else\ifcsname\@mf@#1\endcsname
+ \@EA\truefamily\csname\@mf@#1\endcsname
+ \else\ifcsname\@mf@\nomathcollection#1\endcsname
+ \@EA\truefamily\csname\@mf@\nomathcollection#1\endcsname
+ \else
+ #1%
+ \fi\fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\truefamily#1%
+ {\@EA\ifx\csname\@mf@\mathcollection#1\endcsname\relax
+ \@EA\ifx\csname\@mf@#1\endcsname\relax
+ \@EA\ifx\csname\@mf@\nomathcollection#1\endcsname\relax
+ #1%
+ \else
+ \@EA\truefamily\csname\@mf@\nomathcollection#1\endcsname
+ \fi
+ \else
+ \@EA\truefamily\csname\@mf@#1\endcsname
+ \fi
+ \else
+ \@EA\truefamily\csname\@mf@\mathcollection#1\endcsname
+ \fi}
+
+\endTEX
+
+\newif\ifdynamicmathfamilies \dynamicmathfamiliestrue % true per 2003.11.25; needed for mixed bold math
+
+\let\normalpurefamilyhex\purefamilyhex
+
+% todo: reset collection (tok legen) en opnieuw laden met true
+
+\def\definemathsymbol
+ {\dosixtupleempty\dodefinemathsymbol}
+
+\def\dodefinemathsymbol[#1][#2][#3][#4][#5][#6]%
+ {\unexpanded\setgvalue{#1}{\dohandlemathtoken{#1}}%
+ \ifdynamicmathfamilies \let\purefamilyhex\relax \fi
+ \setevalue{\@mt@\mathcollection#1}%
+ {\ifsixthargument
+ \ifnum\puremathcode{#2}=\mathradicalcode
+ \radical"%
+ \else
+ \delimiter"%
+ \ifnum\puremathcode{#2}>7 0\else\puremathcode{#2}\fi
+ \fi
+ \purefamilyhex{#3}\uchexnumbers{#4}%
+ \purefamilyhex{#5}\uchexnumbers{#6}\space
+ \else\iffourthargument
+ \ifnum\puremathcode{#2}=\mathaccentcode
+ \mathaccent\else\mathchar
+ \fi
+ "\ifnum\puremathcode{#2}>7 0\else\puremathcode{#2}\fi
+ \purefamilyhex{#3}\uchexnumbers{#4}\space
+ \fi\fi}%
+ \let\purefamilyhex\normalpurefamilyhex
+ \tracemathsymbol{#1}}
+
+\def\tracemathsymbol#1%
+ {\iftracemathcollection
+ {\endgraf
+ \hbox{\tex{#1}~:~{\mathematics{\getvalue{#1}{}}}}
+ \endgraf}%
+ \fi}
+
+\def\definemathcharacter
+ {\dosixtupleempty\dodefinemathcharacter}
+
+\def\dodefinemathcharacter[#1][#2][#3][#4][#5][#6]%
+ {\setmathtoks
+ \ifdynamicmathfamilies \let\purefamilyhex\relax \fi
+ \doifnumberelse{#1}
+ {\scratchcounter#1}
+ {\scratchcounter\@EA`\string#1}%
+ \appendetoks
+ \ifsixthargument
+ \delcode\the\scratchcounter="%
+ \ifnum\puremathcode{#2}>7 0\else\puremathcode{#2}\fi
+ \purefamilyhex{#3}\uchexnumbers{#4}%
+ \purefamilyhex{#5}\uchexnumbers{#6}\space
+ \else\iffourthargument
+ \mathcode\the\scratchcounter="%
+ \ifnum\puremathcode{#2}>7 0\else\puremathcode{#2}\fi
+ \purefamilyhex{#3}\uchexnumbers{#4}\space
+ \fi\fi\to\mathtoks
+ \let\purefamilyhex\normalpurefamilyhex
+ \tracemathcharacter{#1}}
+
+\def\tracemathcharacter#1%
+ {\iftracemathcollection
+ {\endgraf
+ \doifnumberelse{#1}
+ {\hbox{\tttf\rawcharacter{#1}~:~{\mathematics{\rawcharacter{#1}}}}}
+ {\hbox{\type{#1}~:~{\mathematics{#1}}}}
+ \endgraf}%
+ \fi}
+
+\def\definemathcommand
+ {\dotripleempty\dodefinemathcommand}
+
+\def\dodefinemathcommand[#1][#2][#3]#4% command class args meaning
+ {\unexpanded\setgvalue{#1}{\dohandlemathtoken{#1}}%
+ \ifthirdargument
+ \processaction
+ [#3]
+ [one=>\setvalue{\@mt@\mathcollection#1}##1{\puremathcomm{#2}{#4{##1}}},
+ two=>\setvalue{\@mt@\mathcollection#1}##1##2{\puremathcomm{#2}{#4{##1}{##2}}}]%
+ \else\ifsecondargument
+ \setvalue{\@mt@\mathcollection#1}{\puremathcomm{#2}{#4}}%
+ \else
+ \setvalue{\@mt@\mathcollection#1}{\puremathcomm{nothing}{#4}}%
+ \fi\fi
+ \tracemathcommand{#1}}
+
+\def\tracemathcommand#1%
+ {\iftracemathcollection
+ \endgraf\hbox{\tex{#1}~:~{\mathematics{\getvalue{#1}{}}}}\endgraf
+ \fi}
+
+\def\startmathcollection[#1]%
+ {\pushmacro\mathcollection
+ \setmathcollection{#1}}
+
+\def\setmathcollection#1%
+ {\edef\mathcollection{#1}%
+ \doifundefined{\@ml@\mathcollection}
+ {\expandafter\newtoks\csname\@ml@\mathcollection\endcsname}}
+
+\def\stopmathcollection
+ {\popmacro\mathcollection}
+
+\def\startrawmathcollection
+ {\startmathcollection}
+
+\def\stoprawmathcollection
+ {\stopmathcollection}
+
+\newtoks\mathtoks
+
+\def\setmathtoks
+ {\@EA\let\@EA\mathtoks\csname\@ml@\mathcollection\endcsname}
+
+\def\currentmathcollection{\mathcollection}
+
+\let\nomathcollection\s!default
+
+\def\enablemathcollection[#1]%
+ {\doifnot{#1}\s!default
+ {\setmathcollection\s!default
+ \the\csname\@ml@\mathcollection\endcsname}%
+ \setmathcollection{#1}%
+ \the\csname\@ml@\mathcollection\endcsname}
+
+% hook 'm into the font mechanism
+
+\definefilesynonym[\f!mathprefix\s!default][\f!mathprefix tex]
+
+\def\usemathcollection
+ {\dodoubleempty\dousemathcollection}
+
+\def\dousemathcollection[#1][#2]%
+ {\pushmacro\fontclass
+ \pushmacro\mathclass
+ \ifsecondargument
+ \edef\fontclass{#1}%
+ \edef\mathclass{#2}%
+ \else
+ \edef\mathclass{#1}%
+ \fi
+ \doinputonce{\truefilename{\f!mathprefix\mathclass}}%
+ \doifsomething\fontclass{\setevalue{\@mc@\fontclass\@mc@}{\mathclass}}%
+ \popmacro\mathclass
+ \popmacro\fontclass}
+
+\let\mathclass\nomathcollection
+
+\letvalue{\@mc@\@mc@}\nomathcollection
+
+% \def\autoenablemathcollection
+% {\doifdefinedelse{\@mc@\fontclass\@mc@}
+% {\enablemathcollection[\getvalue{\@mc@\fontclass\@mc@}]}
+% {\enablemathcollection[\s!default]}} % ? ? ?
+
+\def\autoenablemathcollection
+ {\expanded{\enablemathcollection[\executeifdefined{\@mc@\fontclass\@mc@}\nomathcollection]}}
+
+\appendtoks\autoenablemathcollection\to\mathstrategies
+
+\fetchruntimecommand \showmathcharacters {\f!mathprefix\s!run}
+\fetchruntimecommand \showmathtoken {\f!mathprefix\s!run}
+
+\def\resetmathcollection[#1]%
+ {\def\mathcollection{#1}%
+ \forgetdoingonce{\f!mathprefix\mathcollection}%
+ \setmathtoks
+ \ifx\mathtoks\relax\else\mathtoks\emptytoks\fi}
+
+%D \macros
+%D {ifmathpunctuation, enablemathpunctuation,
+%D definemathpunctuation}
+%D
+%D \starttyping
+%D \definemathpunctuation . mathperiod textperiod
+%D \definemathpunctuation , mathcomma textcomma
+%D \stoptyping
+
+\newif\ifmathpunctuation
+
+\def\enablemathpunctuation{\mathpunctuationtrue}
+
+\def\definemathpunctuation #1 #2 #3 %
+ {\appendtoks
+ \initializemathpunctuation{#1}{#2}{#3}%
+ \to\everymath}
+
+\def\initializemathpunctuation#1#2#3% sloowww
+ {\ifmathpunctuation
+ \mathcode`#1="8000
+ \defineactivecharacter #1 {\dohandlemathpunctuation{#2}{#3}}%
+ \fi}
+
+\unexpanded\def\dohandlemathpunctuation#1#2% \if fails in mathml interval
+ {\def\next{\csname\ifx\space\nexttoken#2\else#1\fi\endcsname}%
+ \futurelet\nexttoken\next}
+
+%D \startbuffer
+%D \enablemathpunctuation$(1,2) (1, 2) (1{,}2) \hbox{foo, not bar}$
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \blank{\getbuffer}\blank
+
+%D needed for sin, cos etc
+
+\def\mfunction#1{{\mr#1}}
+
+%D Taco posted this solution as response to a mail by Olivier, so
+%D let's integrate it here.
+
+\def\setmathfunctionstyle#1% \rm \ss \tt
+ {\def\mfunction##1% no families, just scaling a la text
+ {\mathchoice
+ {\hbox{\csname#1\endcsname\tf ##1}}
+ {\hbox{\csname#1\endcsname\tf ##1}}
+ {\hbox{\csname#1\endcsname\tfx ##1}}
+ {\hbox{\csname#1\endcsname\tfxx##1}}}}
+
+%D Usage:
+%D
+%D \starttyping
+%D \setmathfunctionstyle\fontstyle % or {rm} or {ss} or ..
+%D \rm test $\sin{(x^{\sin(x^{\sin(x)})})}$ test
+%D \ss test $\sin{(x^{\sin(x^{\sin(x)})})}$ test
+%D \tt test $\sin{(x^{\sin(x^{\sin(x)})})}$ test
+%D \stoptyping
+
+\edef\hexmrfam {0} \edef\hexbsfam {8}
+\edef\hexmifam {1} \edef\hexbifam {9}
+\edef\hexsyfam {2} \edef\hexscfam {A}
+\edef\hexexfam {3} \edef\hextffam {B}
+\edef\hexitfam {4} \edef\hexmafam {C}
+\edef\hexslfam {5} \edef\hexmbfam {D}
+\edef\hexbffam {6} \edef\hexmcfam {E}
+\edef\hexnnfam {7} \edef\hexmdfam {F}
+
+\definefamilysynonym [default] [letters] [mr]
+\definefamilysynonym [default] [operators] [sy]
+\definefamilysynonym [default] [lcgreek] [mi]
+\definefamilysynonym [default] [ucgreek] [mr]
+\definefamilysynonym [default] [vargreek] [mi]
+\definefamilysynonym [default] [mitfamily] [mi]
+\definefamilysynonym [default] [calfamily] [sy]
+
+\definefamilysynonym [default] [0] [mr]
+\definefamilysynonym [default] [1] [mi]
+\definefamilysynonym [default] [2] [sy]
+\definefamilysynonym [default] [3] [ex]
+
+\enablemathcollection[default]
+
+\usemathcollection [default] [tex]
+\usemathcollection [default] [ams]
+\usemathcollection [default] [uni]
+
+\enablemathcollection[default]
+
+%D Some goodies:
+
+\def\Angstrom{\nomathematics{\Aring}}
+
+%D Bold math:
+%D
+%D \starttyping
+%D \usetypescript [lucida] [texnansi]
+%D
+%D \definetypeface [boldmath] [rm] [serif]
+%D [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [tt] [mono]
+%D [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [ss] [sans]
+%D [lucida] [default] [encoding=texnansi]
+%D \definetypeface [boldmath] [mm] [boldmath]
+%D [lucida] [default] [encoding=texnansi]
+%D
+%D \switchtobodyfont[lucida,10pt]
+%D
+%D \showmathtoken{Gamma} $\Gamma \Delta \alpha \delta \zeta$
+%D
+%D \switchtobodyfont[boldmath,10pt]
+%D
+%D \showmathtoken{Gamma} $\Gamma \Delta \alpha \delta \zeta$
+%D \stoptyping
+
+\protect \endinput
+
+\tracemathcollectiontrue
+ \input math-tex \page
+\setupbodyfont[ams] \enablemathcollection[default] \input math-ams \page
+\setupbodyfont[lbr] \enablemathcollection[lbr] \input math-lbr \page
+\setupbodyfont[eul] \enablemathcollection[eul] \input math-eul \stoptext
+
+% to be checked, overloads supp-lan !
+
+\def\defineactivecharacter #1 #2%
+% {\scratchcounter=\the\uccode`~
+ {\scratchcounter\uccode`~\relax
+ \expandafter\doifnumberelse\expandafter{\string#1}
+ {\catcode #1=\@@active \uccode`~= #1\relax}
+ {\catcode`#1=\@@active \uccode`~=`#1\relax}%
+ \uppercase{\def\next{~}}%
+ % unexpanded goes wrong in pdfdoc
+ %\expandafter\unexpanded\expandafter\def\next{#2}%
+ % better
+ %\expandafter\def\next{#2}%
+ % math aware
+ \expandafter\def\next{\dohandleactivecharacter{#1}{#2}}% new
+ \uccode`~=\scratchcounter}
+
+\def\dohandleactivecharacter
+ {\ifmmode
+ \expandafter\dohandleactivemathcharacter
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\dohandleactivemathcharacter#1#2#3%
+ {\ifundefined{@ma@\string#2}%
+ \expandafter\firstofoneargument
+ \else
+ \getvalue{@ma@\string#2}%
+ \expandafter\gobbleoneargument
+ \fi{#3}}
+
+% \def\dohandleactivemathcharacter#1#2%
+% {\ifcsname @ma@\string#1\endcsname
+% \csname @ma@\string#1\expandafter\endcsname
+% \expandafter\gobbleoneargument
+% \else
+% \expandafter\firstofoneargument
+% \fi{#2}}
diff --git a/Master/texmf-dist/tex/context/base/math-lbr.tex b/Master/texmf-dist/tex/context/base/math-lbr.tex
new file mode 100644
index 00000000000..3df4a36d049
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-lbr.tex
@@ -0,0 +1,443 @@
+%D \module
+%D [ file=math-lbr,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Lucida Specials,
+%D author={Hans Hagen \& Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\definefamilysynonym [lbr] [calligrapahy] [sy]
+\definefamilysynonym [lbr] [oldstyle] [mi]
+
+\definefamilysynonym [lbr] [blackboard] [ma]
+\definefamilysynonym [lbr] [ucgreek] [mb]
+\definefamilysynonym [lbr] [vargreek] [mi]
+
+\startmathcollection[lbr]
+
+\definemathsymbol [boxdot] [bin] [sy] ["ED]
+\definemathsymbol [boxplus] [bin] [sy] ["EA]
+\definemathsymbol [boxtimes] [bin] [sy] ["EC]
+\definemathsymbol [square] [ord] [ma] ["02]
+\definemathsymbol [Box] [ord] [ma] ["02] % square
+\definemathsymbol [blacksquare] [ord] [ma] ["03]
+\definemathsymbol [centerdot] [bin] [ma] ["E1] % [sy] ["01]
+\definemathsymbol [Diamond] [ord] [sy] ["05]
+\definemathsymbol [lozenge] [ord] [sy] ["05] % Diamond
+\definemathsymbol [blacklozenge] [ord] [ma] ["09]
+\definemathsymbol [circlearrowright] [rel] [ma] ["8C]
+\definemathsymbol [circlearrowleft] [rel] [ma] ["8B]
+\definemathsymbol [rightleftharpoons] [rel] [sy] ["8E]
+\definemathsymbol [leftrightharpoons] [rel] [sy] ["8D]
+\definemathsymbol [boxminus] [bin] [sy] ["EB]
+\definemathsymbol [Vdash] [rel] [sy] ["F0]
+\definemathsymbol [Vvdash] [rel] [mb] ["D3]
+\definemathsymbol [vDash] [rel] [mb] ["D6]
+\definemathsymbol [twoheadrightarrow] [rel] [ma] ["25]
+\definemathsymbol [twoheadleftarrow] [rel] [ma] ["23]
+\definemathsymbol [leftleftarrows] [rel] [ma] ["71]
+\definemathsymbol [rightrightarrows] [rel] [ma] ["73]
+\definemathsymbol [upuparrows] [rel] [ma] ["72]
+\definemathsymbol [downdownarrows] [rel] [ma] ["74]
+\definemathsymbol [upharpoonright] [rel] [ma] ["75]
+\definemathsymbol [restriction] [rel] [ma] ["77]
+\definemathsymbol [downharpoonright] [rel] [ma] ["77]
+\definemathsymbol [upharpoonleft] [rel] [ma] ["76]
+\definemathsymbol [downharpoonleft] [rel] [ma] ["78]
+\definemathsymbol [rightarrowtail] [rel] [ma] ["29]
+\definemathsymbol [leftarrowtail] [rel] [ma] ["28]
+\definemathsymbol [leftrightarrows] [rel] [ma] ["6E]
+\definemathsymbol [rightleftarrows] [rel] [ma] ["6D]
+\definemathsymbol [Lsh] [rel] [ma] ["7B]
+\definemathsymbol [Rsh] [rel] [ma] ["7D]
+\definemathsymbol [rightsquigarrow] [rel] [ma] ["8E]
+\definemathsymbol [leadsto] [rel] [ma] ["8E] % rightsquigarrow
+\definemathsymbol [leftrightsquigarrow] [rel] [ma] ["91]
+\definemathsymbol [looparrowleft] [rel] [ma] ["3F]
+\definemathsymbol [looparrowright] [rel] [ma] ["40]
+\definemathsymbol [circeq] [rel] [sy] ["D0]
+\definemathsymbol [succsim] [rel] [sy] ["E1]
+\definemathsymbol [gtrsim] [rel] [sy] ["DD]
+\definemathsymbol [gtrapprox] [rel] [mb] ["DB]
+\definemathsymbol [multimap] [rel] [mb] ["C7]
+\definemathsymbol [therefore] [rel] [sy] ["90]
+\definemathsymbol [because] [rel] [sy] ["91]
+\definemathsymbol [doteqdot] [rel] [sy] ["CA]
+\definemathsymbol [Doteq] [rel] [sy] ["CA] % doteqdot
+\definemathsymbol [triangleq] [rel] [sy] ["D5]
+\definemathsymbol [precsim] [rel] [sy] ["E0]
+\definemathsymbol [lesssim] [rel] [sy] ["DC]
+\definemathsymbol [lessapprox] [rel] [mb] ["DA]
+\definemathsymbol [eqslantless] [rel] [mb] ["E2]
+\definemathsymbol [eqslantgtr] [rel] [mb] ["E3]
+\definemathsymbol [curlyeqprec] [rel] [mb] ["E6]
+\definemathsymbol [curlyeqsucc] [rel] [mb] ["E7]
+\definemathsymbol [preccurlyeq] [rel] [mb] ["E4]
+\definemathsymbol [leqq] [rel] [sy] ["DA]
+\definemathsymbol [leqslant] [rel] [mb] ["E0]
+\definemathsymbol [lessgtr] [rel] [sy] ["DE]
+\definemathsymbol [backprime] [ord] [mb] ["C8]
+\definemathsymbol [dabar@] [ord] [ma] ["03] % !! @
+\definemathsymbol [risingdotseq] [rel] [sy] ["CC]
+\definemathsymbol [fallingdotseq] [rel] [sy] ["CB]
+\definemathsymbol [succcurlyeq] [rel] [mb] ["E5]
+\definemathsymbol [geqq] [rel] [sy] ["DB]
+\definemathsymbol [geqslant] [rel] [mb] ["E1]
+\definemathsymbol [gtrless] [rel] [sy] ["DF]
+\definemathsymbol [sqsubset] [rel] [sy] ["E4]
+\definemathsymbol [sqsupset] [rel] [sy] ["E5]
+\definemathsymbol [vartriangleright] [rel] [mb] ["2E]
+\definemathsymbol [rhd] [bin] [mb] ["2E]
+\definemathsymbol [lhd] [bin] [mb] ["2F]
+\definemathsymbol [vartriangleleft] [rel] [mb] ["2F]
+\definemathsymbol [trianglerighteq] [rel] [sy] ["F5]
+\definemathsymbol [unrhd] [bin] [sy] ["F5] % trianglerighteq
+\definemathsymbol [trianglelefteq] [rel] [sy] ["F4]
+\definemathsymbol [unlhd] [bin] [sy] ["F4] % trianglelefteq
+\definemathsymbol [bigstar] [ord] [ma] ["AB]
+\definemathsymbol [between] [rel] [mb] ["F2]
+\definemathsymbol [blacktriangledown] [ord] [ma] ["07]
+\definemathsymbol [blacktriangleright] [rel] [mb] ["F1]
+\definemathsymbol [blacktriangleleft] [rel] [mb] ["F0]
+\definemathsymbol [vartriangle] [rel] [ma] ["04]
+\definemathsymbol [triangleup] [ord] [ma] ["04] % vartriangle
+\definemathsymbol [blacktriangle] [ord] [ma] ["05]
+\definemathsymbol [triangledown] [ord] [ma] ["06]
+\definemathsymbol [eqcirc] [rel] [sy] ["CF]
+\definemathsymbol [lesseqgtr] [rel] [mb] ["E8]
+\definemathsymbol [gtreqless] [rel] [mb] ["E9]
+\definemathsymbol [lesseqqgtr] [rel] [mb] ["EA]
+\definemathsymbol [gtreqqless] [rel] [mb] ["EB]
+\definemathsymbol [Rrightarrow] [rel] [ma] ["6C]
+\definemathsymbol [Lleftarrow] [rel] [ma] ["6A]
+\definemathsymbol [veebar] [bin] [mb] ["D2]
+\definemathsymbol [barwedge] [bin] [sy] ["F6]
+\definemathsymbol [doublebarwedge] [bin] [sy] ["D4]
+\definemathsymbol [angle] [ord] [sy] ["8B]
+\definemathsymbol [measuredangle] [ord] [sy] ["8C]
+\definemathsymbol [sphericalangle] [ord] [sy] ["8D]
+\definemathsymbol [varpropto] [rel] [sy] ["2F]
+\definemathsymbol [smallsmile] [rel] [mb] ["5E]
+\definemathsymbol [smallfrown] [rel] [mb] ["5F]
+\definemathsymbol [Subset] [rel] [sy] ["F8]
+\definemathsymbol [Supset] [rel] [sy] ["F9]
+\definemathsymbol [Cup] [bin] [sy] ["FA]
+\definemathsymbol [doublecup] [bin] [sy] ["FA] % Cup
+\definemathsymbol [Cap] [bin] [sy] ["FB]
+\definemathsymbol [doublecap] [bin] [sy] ["FB]
+\definemathsymbol [curlywedge] [bin] [sy] ["84]
+\definemathsymbol [curlyvee] [bin] [sy] ["85]
+\definemathsymbol [leftthreetimes] [bin] [mb] ["D0]
+\definemathsymbol [rightthreetimes] [bin] [mb] ["D1]
+\definemathsymbol [subseteqq] [rel] [mb] ["EE]
+\definemathsymbol [supseteqq] [rel] [mb] ["EF]
+\definemathsymbol [bumpeq] [rel] [sy] ["C8]
+\definemathsymbol [Bumpeq] [rel] [sy] ["C7]
+\definemathsymbol [llless] [rel] [mb] ["DE]
+\definemathsymbol [lll] [rel] [mb] ["DE] % llless
+\definemathsymbol [gggtr] [rel] [mb] ["DF]
+\definemathsymbol [ggg] [rel] [mb] ["DF] % gggtr
+\definemathsymbol [ulcorner] [open] [ma] ["5B] [ma] ["5B]
+\definemathsymbol [urcorner] [close] [ma] ["5C] [ma] ["5C]
+\definemathsymbol [circledS] [ord] [mb] ["CA]
+\definemathsymbol [pitchfork] [rel] [ma] ["F3]
+\definemathsymbol [dotplus] [bin] [sy] ["89]
+\definemathsymbol [backsim] [rel] [sy] ["24]
+\definemathsymbol [backsimeq] [rel] [sy] ["27]
+\definemathsymbol [llcorner] [open] [ma] ["5D] [ma] ["5D]
+\definemathsymbol [lrcorner] [close] [ma] ["5E] [ma] ["5E]
+\definemathsymbol [complement] [ord] [mb] ["94]
+\definemathsymbol [intercal] [bin] [ma] ["03] % !!
+\definemathsymbol [circledcirc] [bin] [sy] ["E6]
+\definemathsymbol [circledast] [bin] [sy] ["E7]
+\definemathsymbol [circleddash] [bin] [mb] ["CC]
+
+\stopmathcollection
+
+\startmathcollection [lbr]
+
+\definemathsymbol [lvertneqq] [rel] [ma] ["DE]
+\definemathsymbol [gvertneqq] [rel] [ma] ["DE]
+\definemathsymbol [nleq] [rel] [ma] ["9C]
+\definemathsymbol [ngeq] [rel] [ma] ["9D]
+\definemathsymbol [nless] [rel] [ma] ["9A]
+\definemathsymbol [ngtr] [rel] [ma] ["9B]
+\definemathsymbol [nprec] [rel] [ma] ["E5]
+\definemathsymbol [nsucc] [rel] [ma] ["E6]
+\definemathsymbol [lneqq] [rel] [ma] ["DC]
+\definemathsymbol [gneqq] [rel] [ma] ["DE]
+\definemathsymbol [nleqslant] [rel] [ma] ["D6]
+\definemathsymbol [ngeqslant] [rel] [ma] ["D7]
+\definemathsymbol [lneq] [rel] [ma] ["DA]
+\definemathsymbol [gneq] [rel] [ma] ["DB]
+\definemathsymbol [npreceq] [rel] [ma] ["E7]
+\definemathsymbol [nsucceq] [rel] [ma] ["E8]
+\definemathsymbol [precnsim] [rel] [ma] ["EB]
+\definemathsymbol [succnsim] [rel] [ma] ["EC]
+\definemathsymbol [lnsim] [rel] [ma] ["E0]
+\definemathsymbol [gnsim] [rel] [ma] ["E2]
+\definemathsymbol [nleqq] [rel] [ma] ["D8]
+\definemathsymbol [ngeqq] [rel] [ma] ["D9]
+\definemathsymbol [precneqq] [rel] [ma] ["E9]
+\definemathsymbol [succneqq] [rel] [ma] ["EA]
+\definemathsymbol [precnapprox] [rel] [ma] ["ED]
+\definemathsymbol [succnapprox] [rel] [ma] ["EE]
+\definemathsymbol [lnapprox] [rel] [ma] ["E4]
+\definemathsymbol [gnapprox] [rel] [ma] ["E3]
+\definemathsymbol [nsim] [rel] [ma] ["96]
+\definemathsymbol [ncong] [rel] [ma] ["99]
+\definemathsymbol [diagup] [ord] [mb] ["CD]
+\definemathsymbol [diagdown] [ord] [mb] ["D8]
+\definemathsymbol [varsubsetneq] [rel] [ma] ["D0]
+\definemathsymbol [varsupsetneq] [rel] [ma] ["D1]
+\definemathsymbol [nsubseteqq] [rel] [ma] ["CA]
+\definemathsymbol [nsupseteqq] [rel] [ma] ["CB]
+\definemathsymbol [subsetneqq] [rel] [ma] ["CE]
+\definemathsymbol [supsetneqq] [rel] [ma] ["CF]
+\definemathsymbol [varsubsetneqq] [rel] [ma] ["D2]
+\definemathsymbol [varsupsetneqq] [rel] [ma] ["D3]
+\definemathsymbol [subsetneq] [rel] [ma] ["CC]
+\definemathsymbol [supsetneq] [rel] [ma] ["CD]
+\definemathsymbol [nsubseteq] [rel] [ma] ["C8]
+\definemathsymbol [nsupseteq] [rel] [ma] ["C9]
+\definemathsymbol [nparallel] [rel] [ma] ["F7]
+\definemathsymbol [nmid] [rel] [ma] ["F6]
+\definemathsymbol [nshortmid] [rel] [ma] ["F4]
+\definemathsymbol [nshortparallel] [rel] [ma] ["F5]
+\definemathsymbol [nvdash] [rel] [ma] ["F8]
+\definemathsymbol [nVdash] [rel] [ma] ["F9]
+\definemathsymbol [nvDash] [rel] [ma] ["FA]
+\definemathsymbol [nVDash] [rel] [ma] ["FB]
+\definemathsymbol [ntrianglerighteq] [rel] [ma] ["F2]
+\definemathsymbol [ntrianglelefteq] [rel] [ma] ["F1]
+\definemathsymbol [ntriangleleft] [rel] [ma] ["EF]
+\definemathsymbol [ntriangleright] [rel] [ma] ["F0]
+\definemathsymbol [nleftarrow] [rel] [ma] ["32]
+\definemathsymbol [nrightarrow] [rel] [ma] ["33]
+\definemathsymbol [nLeftarrow] [rel] [ma] ["66]
+\definemathsymbol [nRightarrow] [rel] [ma] ["68]
+\definemathsymbol [nLeftrightarrow] [rel] [ma] ["67]
+\definemathsymbol [nleftrightarrow] [rel] [ma] ["34]
+\definemathsymbol [divideontimes] [bin] [mb] ["F7]
+\definemathsymbol [varnothing] [ord] [sy] ["53]
+\definemathsymbol [nexists] [ord] [ma] ["20]
+\definemathsymbol [Finv] [ord] [mb] ["90]
+\definemathsymbol [Game] [ord] [mb] ["91]
+\definemathsymbol [mho] [ord] [mb] ["92]
+\definemathsymbol [eth] [ord] [ma] ["03] % !!
+\definemathsymbol [eqsim] [rel] [sy] ["99]
+\definemathsymbol [beth] [ord] [mb] ["95]
+\definemathsymbol [gimel] [ord] [mb] ["96]
+\definemathsymbol [daleth] [ord] [mb] ["97]
+\definemathsymbol [lessdot] [bin] [mb] ["DC]
+\definemathsymbol [gtrdot] [bin] [mb] ["DD]
+\definemathsymbol [ltimes] [bin] [mb] ["CF]
+\definemathsymbol [rtimes] [bin] [mb] ["CE]
+\definemathsymbol [shortmid] [rel] [mb] ["F4]
+\definemathsymbol [shortparallel] [rel] [mb] ["F5]
+\definemathsymbol [smallsetminus] [bin] [mb] ["D8]
+\definemathsymbol [thicksim] [rel] [sy] ["18] % not that thick
+\definemathsymbol [thickapprox] [rel] [sy] ["19] % not that thick
+\definemathsymbol [approxeq] [rel] [sy] ["9D]
+\definemathsymbol [succapprox] [rel] [mb] ["ED]
+\definemathsymbol [precapprox] [rel] [mb] ["EC]
+\definemathsymbol [curvearrowleft] [rel] [ma] ["87]
+\definemathsymbol [curvearrowright] [rel] [ma] ["88]
+\definemathsymbol [digamma] [ord] [ma] ["03] % !!
+\definemathsymbol [varkappa] [ord] [mb] ["9B]
+\definemathsymbol [Bbbk] [ord] [ma] ["6B]
+\definemathsymbol [hslash] [ord] [mb] ["9D]
+\definemathsymbol [hbar] [ord] [ma] ["1B]
+\definemathsymbol [backepsilon] [rel] [ma] ["03] % !!
+
+\stopmathcollection
+
+\startmathcollection [lbr]
+
+\definemathsymbol [yen] [nothing] [ma] ["03] % !!
+\definemathsymbol [checkmark] [nothing] [ma] ["AC]
+\definemathsymbol [circledR] [nothing] [mb] ["C9]
+\definemathsymbol [maltese] [nothing] [mb] ["CB]
+
+\stopmathcollection
+
+\startmathcollection [lbr]
+
+\definemathsymbol [dashrightarrow] [rel] [ma] ["3A]
+\definemathsymbol [dashleftarrow] [rel] [ma] ["38]
+\definemathcommand [dasharrow] [rel] {\dashleftarrow\mkern-15.8mu\dashrightarrow}
+%definemathcommand [Join] [rel] {\mathchar"0D6F\mkern-15.8mu\mathchar"0D6E} % !!
+
+\stopmathcollection
+
+\startmathcollection[lbr]
+
+\definemathcharacter [91] [open] [mi] ["86]
+\definemathcharacter [93] [close] [mi] ["87]
+\definemathcharacter [(] [open] [mi] ["84]
+\definemathcharacter [)] [close] [mi] ["85]
+\definemathcharacter [/] [nothing] [mi] ["3D]
+\definemathcharacter [=] [rel] [sy] ["83]
+\definemathcharacter [+] [bin] [sy] ["82]
+
+\definemathcharacter [91] [nothing] [mi] ["86] [ex] ["02]
+\definemathcharacter [93] [nothing] [mi] ["87] [ex] ["03]
+\definemathcharacter [(] [nothing] [mi] ["84] [ex] ["00]
+\definemathcharacter [)] [nothing] [mi] ["85] [ex] ["01]
+\definemathcharacter [/] [nothing] [mi] ["3D] [ex] ["0E]
+
+\stopmathcollection
+
+% \startmathcollection[lbr]
+%
+% \definemathcharacter [:] [punct] [tf] ["3A] % unbelievable
+% \definemathcharacter [;] [punct] [tf] ["3B] % unbelievable
+%
+% \stopmathcollection
+
+\startmathcollection[lbr]
+
+\definemathsymbol [ldbrack] [open] [mi] ["82] [ex] ["82]
+\definemathsymbol [rdbrack] [close] [mi] ["83] [ex] ["83]
+\definemathsymbol [surfintop] [op] [ex] ["90]
+\definemathsymbol [midintop] [op] [ex] ["92]
+\definemathsymbol [midointop] [op] [ex] ["93]
+\definemathsymbol [midsurfintop] [op] [ex] ["94]
+\definemathsymbol [largeint] [op] [ex] ["5A] [ex] ["95]
+
+% \definemathcommand [surfint] [nolop] {\surfintop}
+% \definemathcommand [midint] [nolop] {\midintop}
+% \definemathcommand [midoint] [nolop] {\midointop}
+% \definemathcommand [midsurfint] [nolop] {\midsurfintop}
+
+\definemathsymbol [surfint] [nolop] [ex] ["90]
+\definemathsymbol [midint] [nolop] [ex] ["92]
+\definemathsymbol [midoint] [nolop] [ex] ["93]
+\definemathsymbol [midsurfint] [nolop] [ex] ["94]
+
+\definemathsymbol [dblint] [ord] [mi] ["88]
+\definemathsymbol [trplint] [ord] [mi] ["89]
+\definemathsymbol [contint] [ord] [mi] ["8A]
+\definemathsymbol [surfint] [ord] [mi] ["8B]
+\definemathsymbol [volint] [ord] [mi] ["8C]
+\definemathsymbol [clwint] [ord] [mi] ["8D]
+\definemathsymbol [cclwcint] [ord] [mi] ["8E]
+\definemathsymbol [clwcint] [ord] [mi] ["8F]
+\definemathsymbol [bowtie] [rel] [mi] ["F6]
+\definemathsymbol [models] [rel] [sy] ["EE]
+\definemathsymbol [doteq] [rel] [sy] ["C9]
+\definemathsymbol [cong] [rel] [sy] ["9B]
+\definemathsymbol [hbar] [ord] [mi] ["9D]
+\definemathsymbol [neq] [rel] [ma] ["94]
+\definemathsymbol [rightleftharpoons] [rel] [ma] ["7A]
+\definemathsymbol [leftrightharpoons] [rel] [ma] ["79]
+\definemathsymbol [hookleftarrow] [rel] [ma] ["3C]
+\definemathsymbol [hookrightarrow] [rel] [ma] ["3E]
+\definemathsymbol [mapsto] [rel] [ma] ["2C]
+
+\definemathcommand [longmapsto] {\mapstochar\longrightarrow}
+
+\stopmathcollection
+
+\startmathcollection[lbr]
+
+\definemathsymbol [Gamma] [alpha] [ucgreek] ["00]
+\definemathsymbol [Delta] [alpha] [ucgreek] ["01]
+\definemathsymbol [Theta] [alpha] [ucgreek] ["02]
+\definemathsymbol [Lambda] [alpha] [ucgreek] ["03]
+\definemathsymbol [Xi] [alpha] [ucgreek] ["04]
+\definemathsymbol [Pi] [alpha] [ucgreek] ["05]
+\definemathsymbol [Sigma] [alpha] [ucgreek] ["06]
+\definemathsymbol [Upsilon] [alpha] [ucgreek] ["07]
+\definemathsymbol [Phi] [alpha] [ucgreek] ["08]
+\definemathsymbol [Psi] [alpha] [ucgreek] ["09]
+\definemathsymbol [Omega] [alpha] [ucgreek] ["0A]
+
+\definemathsymbol [varGamma] [ord] [vargreek] ["00]
+\definemathsymbol [varDelta] [ord] [vargreek] ["01]
+\definemathsymbol [varTheta] [ord] [vargreek] ["02]
+\definemathsymbol [varLambda] [ord] [vargreek] ["03]
+\definemathsymbol [varXi] [ord] [vargreek] ["04]
+\definemathsymbol [varPi] [ord] [vargreek] ["05]
+\definemathsymbol [varSigma] [ord] [vargreek] ["06]
+\definemathsymbol [varUpsilon] [ord] [vargreek] ["07]
+\definemathsymbol [varPhi] [ord] [vargreek] ["08]
+\definemathsymbol [varPsi] [ord] [vargreek] ["09]
+\definemathsymbol [varOmega] [ord] [vargreek] ["0A]
+
+\stopmathcollection
+
+% we define the whole lot, although only a few differ (esp dot)
+
+\startmathcollection[lbr]
+
+\definemathsymbol [acute] [accent] [tf] ["13] % mr -> tf
+\definemathsymbol [grave] [accent] [tf] ["12] % mr -> tf
+\definemathsymbol [ddot] [accent] [tf] ["7F] % mr -> tf
+\definemathsymbol [tilde] [accent] [tf] ["7E] % mr -> tf
+\definemathsymbol [bar] [accent] [tf] ["16] % mr -> tf
+\definemathsymbol [breve] [accent] [tf] ["15] % mr -> tf
+\definemathsymbol [check] [accent] [tf] ["14] % mr -> tf
+\definemathsymbol [hat] [accent] [tf] ["5E] % mr -> tf
+\definemathsymbol [vec] [accent] [mi] ["7E] % [ord]
+\definemathsymbol [dot] [accent] [tf] ["05] % mr -> tf, 5F -> 05
+\definemathsymbol [widetilde] [accent] [ex] ["65] % [ord]
+\definemathsymbol [widehat] [accent] [ex] ["62] % [ord]
+
+\stopmathcollection
+
+\def\LBRroot#1#2%
+ {\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}
+ \dimen@\ht\z@ \advance\dimen@-\dp\z@
+ \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-7.5mu \box\z@}
+
+\def\LBRmatrix#1%
+ {\null\,\vcenter{\normalbaselines\m@th
+ \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
+ \mathstrut\crcr\noalign{\kern-0.9\baselineskip}
+ #1\crcr\mathstrut\crcr\noalign{\kern-0.9\baselineskip}}}\,}
+
+\startrawmathcollection[lbr]
+
+\definemathcommand [mathstrut] {\vphantom{f}}
+\definemathcommand [joinrel] {\mathrel{\mkern-4mu}}
+\definemathcommand [r@@t] {\LBRroot}
+\definemathcommand [matrix] {\LBRmatrix}
+
+\stoprawmathcollection
+
+\def\LBRbig {\@@dobig{8.20}}
+\def\LBRBig {\@@dobig{10.80}}
+\def\LBRbigg {\@@dobig{13.42}}
+\def\LBRBigg {\@@dobig{16.03}}
+\def\LBRbiggg{\@@dobig{17.72}}
+\def\LBRBiggg{\@@dobig{21.25}}
+
+\startrawmathcollection[lbr]
+
+\definemathcommand [big] {\LBRbig}
+\definemathcommand [Big] {\LBRBig}
+\definemathcommand [bigg] {\LBRbigg}
+\definemathcommand [Bigg] {\LBRBigg}
+\definemathcommand [biggg] {\LBRbiggg}
+\definemathcommand [Biggg] {\LBRBiggg}
+
+\stoprawmathcollection
+
+\startrawmathcollection[lbr]
+
+\definemathcommand [bigggl] [open] {\biggg}
+\definemathcommand [bigggr] [close] {\biggg}
+\definemathcommand [Bigggl] [open] {\Biggg}
+\definemathcommand [Bigggr] [close] {\Biggg}
+
+\stoprawmathcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-pln.tex b/Master/texmf-dist/tex/context/base/math-pln.tex
new file mode 100644
index 00000000000..73c12c973da
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-pln.tex
@@ -0,0 +1,345 @@
+%D \module
+%D [ file=math-pln,
+%D version=2001.11.16,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Efficient \PLAIN\ \TEX\ loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is a temporary module, some of this code will move to
+%D the other math modules.
+
+\unprotect
+
+\def\m@th{\mathsurround\z@}
+
+\newbox\rootbox
+
+\def\root#1\of%
+ {\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
+ \mathpalette\r@@t}
+
+\def\r@@t#1#2% will be overloaded
+ {\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}\dimen@\ht\z@
+ \advance\dimen@-\dp\z@
+ \mkern5mu\raise.6\dimen@\copy\rootbox
+ \mkern-10mu\box\z@}
+
+\def\mathhexbox#1#2#3%
+ {\leavevmode
+ \hbox{$\m@th\mathchar"#1#2#3$}}
+
+\def\oalign#1%
+ {\leavevmode
+ \vtop
+ {\baselineskip\z@skip \lineskip.25ex%
+ \ialign{##\crcr#1\crcr}}}
+
+\def\o@lign
+ {\lineskiplimit\z@ \oalign}
+
+\def\ooalign % chars over each other
+ {\lineskiplimit-\maxdimen
+ \oalign}
+
+{\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\
+
+\def\sh@ft#1% kern by #1 times the current slant
+ {\dimen@#1%
+ \kern\expandafter\getf@ctor\the\fontdimen1\font
+ \dimen@}
+
+% \def\copyright % will be overloaded
+% {{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}}
+
+\def\dots
+ {\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi}
+
+\def\hrulefill
+ {\leaders\hrule\hfill}
+
+\def\dotfill
+ {\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}
+
+\def\rightarrowfill
+ {$\m@th\smash-\mkern-7mu%
+ \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
+ \mkern-7mu\mathord\rightarrow$}
+
+\def\leftarrowfill
+ {$\m@th\mathord\leftarrow\mkern-7mu%
+ \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
+ \mkern-7mu\smash-$}
+
+% must go to math-tex
+
+\mathchardef\braceld="37A
+\mathchardef\bracerd="37B
+\mathchardef\bracelu="37C
+\mathchardef\braceru="37D
+
+\def\downbracefill
+ {$\m@th\setbox\z@\hbox{$\braceld$}%
+ \braceld\leaders\vrule\!!height\ht\z@\!!depth\z@\hfill\braceru
+ \bracelu\leaders\vrule\!!height\ht\z@\!!depth\z@\hfill\bracerd$}
+
+\def\upbracefill
+ {$\m@th\setbox\z@\hbox{$\braceld$}%
+ \bracelu\leaders\vrule\!!height\ht\z@\!!depth\z@\hfill\bracerd
+ \braceld\leaders\vrule\!!height\ht\z@\!!depth\z@\hfill\braceru$}
+
+\def\bye{\par\vfill\supereject\end}
+
+\let\sp=^
+\let\sb=_
+\def\,{\mskip\thinmuskip}
+\def\>{\mskip\medmuskip}
+\def\;{\mskip\thickmuskip}
+\def\!{\mskip-\thinmuskip}
+\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
+
+{\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
+
+\def\prim@s
+ {\prime\futurelet\next\pr@m@s}
+
+% \def\pr@m@s
+% {\ifx'\next
+% \let\nxt\pr@@@s
+% \else
+% \ifx^\next
+% \let\nxt\pr@@@t
+% \else
+% \let\nxt\egroup
+% \fi
+% \fi
+% \nxt}
+
+\def\pr@m@s
+ {\ifx'\next
+ \@EA\pr@@@s
+ \else\ifx^\next
+ \@EAEAEA\pr@@@t
+ \else
+ \@EAEAEA\egroup
+ \fi\fi}
+
+\def\pr@@@s#1%
+ {\prim@s}
+
+\def\pr@@@t#1#2%
+ {#2\egroup}
+
+{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_
+
+\def\relbar {\mathrel{\smash-}} % - has the same height as +
+\def\Relbar {\mathrel=}
+
+\def\Longrightarrow {\Relbar\joinrel\Rightarrow}
+\def\longrightarrow {\relbar\joinrel\rightarrow}
+\def\longleftarrow {\leftarrow\joinrel\relbar}
+\def\Longleftarrow {\Leftarrow\joinrel\Relbar}
+\def\longmapsto {\mapstochar\longrightarrow}
+\def\longleftrightarrow{\leftarrow\joinrel\rightarrow}
+\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
+
+\def\overrightarrow#1%
+ {\vbox{\m@th\ialign{##\crcr
+ \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+
+\def\overleftarrow#1%
+ {\vbox{\m@th\ialign{##\crcr
+ \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+
+\def\overbrace#1%
+ {\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}
+ \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
+
+\def\underbrace#1%
+ {\mathop{\vtop{\m@th\ialign{##\crcr
+ $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
+ \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
+
+\def\skew#1#2#3%
+ {{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@
+ #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}}
+
+\def\n@space
+ {\nulldelimiterspace\z@ \m@th}
+
+\def\choose{\atopwithdelims()}
+\def\brack {\atopwithdelims[]}
+\def\brace {\atopwithdelims\{\}}
+
+\def\mathpalette#1#2%
+ {\mathchoice
+ {#1\displaystyle {#2}}%
+ {#1\textstyle {#2}}%
+ {#1\scriptstyle {#2}}%
+ {#1\scriptscriptstyle{#2}}}
+
+\def\cong%
+ {\mathrel{\mathpalette\@vereq\sim}} % congruence sign
+
+\def\@vereq#1#2%
+ {\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@
+ \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
+
+\def\notin%
+ {\mathrel{\mathpalette\c@ncel\in}}
+
+\def\c@ncel#1#2%
+ {\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
+
+\def\rightleftharpoons%
+ {\mathrel{\mathpalette\rlh@{}}}
+
+\def\rlh@#1%
+ {\vcenter
+ {\m@th
+ \hbox
+ {\ooalign
+ {\raise2pt\hbox{$#1\rightharpoonup$}\crcr
+ $#1\leftharpoondown$}}}}
+
+\def\buildrel#1\over#2%
+ {\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
+
+\def\doteq
+ {\buildrel\textstyle.\over=}
+
+\def\bmod
+ {\nonscript
+ \mskip-\medmuskip
+ \mkern5mu
+ \mathbin{\rm mod}%
+ \penalty900
+ \mkern5mu
+ \nonscript
+ \mskip-\medmuskip}
+
+\def\pmod#1%
+ {\allowbreak
+ \mkern18mu
+ ({\rm mod}\,\,#1)}
+
+\def\cases#1%
+ {\left\{%
+ \,%
+ \vcenter
+ {\normalbaselines
+ \m@th
+ \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}%
+ \right.}
+
+\def\matrix#1%
+ {\null
+ \,%
+ \vcenter
+ {\normalbaselines\m@th
+ \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
+ \mathstrut\crcr\noalign{\kern-\baselineskip}
+ #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}%
+ \,}
+
+\def\pmatrix#1%
+ {\left(\matrix{#1}\right)}
+
+\newdimen\p@renwd
+
+% \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
+
+\def\bordermatrix#1%
+ {\begingroup
+ \m@th
+ \setbox\z@\vbox
+ {\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
+ \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil
+ &&\quad\hfil$##$\hfil\crcr
+ \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
+ #1\crcr\omit\strut\cr}}%
+ \setbox\tw@\vbox
+ {\unvcopy\z@\global\setbox\@ne\lastbox}%
+ \setbox\tw@\hbox
+ {\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
+ \setbox\tw@\hbox
+ {$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne
+ \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
+ \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
+ \null
+ \;%
+ \vbox{\kern\ht\@ne\box\tw@}%
+ \endgroup}
+
+\def\openup{\afterassignment\@penup\dimen@=}
+
+\def\@penup{\advance\lineskip\dimen@
+ \advance\baselineskip\dimen@
+ \advance\lineskiplimit\dimen@}
+
+\def\eqalign#1%
+ {\null
+ \,%
+ \vcenter
+ {\openup
+ \jot\m@th
+ \ialign
+ {\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr
+ #1\crcr}}%
+ \,}
+
+\newif\ifdt@p
+
+\def\displ@y
+ {\global\dt@ptrue
+ \openup\jot\m@th
+ \everycr
+ {\noalign
+ {\ifdt@p
+ \global\dt@pfalse
+ \ifdim\prevdepth>-1000\p@
+ \vskip-\lineskiplimit
+ \vskip\normallineskiplimit
+ \fi
+ \else
+ \penalty\interdisplaylinepenalty
+ \fi}}}
+
+\def\@lign % restore inside \displ@y
+ {\tabskip\z@skip
+ \everycr{}}
+
+\def\displaylines#1%
+ {\displ@y
+ \tabskip\z@skip
+ \halign
+ {\hbox to \displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
+ #1\crcr}}
+
+\def\eqalignno#1%
+ {\displ@y
+ \tabskip\centering
+ \halign to \displaywidth
+ {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
+ &\llap{$\@lign##$}\tabskip\z@skip\crcr
+ #1\crcr}}
+
+\def\leqalignno#1%
+ {\displ@y
+ \tabskip\centering
+ \halign to \displaywidth
+ {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
+ &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
+ &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr
+ #1\crcr}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-run.tex b/Master/texmf-dist/tex/context/base/math-run.tex
new file mode 100644
index 00000000000..acb5bce3fff
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-run.tex
@@ -0,0 +1,97 @@
+%D \module
+%D [ file=math-run,
+%D version=2001.23.04,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen \& Ton Otten]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\ifx\showmathmodern\undefined \global\chardef\showmathmodern\zerocount \fi
+
+\gdef\showmathcharacters% nearly \showcharacters
+ {\par
+ \bgroup
+ \ifcase\showmathmodern\or\ifx\modern\undefined\chardef\showmathmodern\zerocount\fi\fi
+ \setuptextrules[\c!bodyfont=,\c!style=]
+ \starttextrule{math characters -- \currentmathcollection}
+ \whitespace
+ \dontcomplain
+ \forgetall
+ \def\startmathcollection[##1]{}
+ \let\stopmathcollection\relax
+ \dimen0\zeropoint
+ \dimen2\zeropoint
+ \def\definemathsymbol {\dosixtupleempty\dodefinemathsymbol}
+ \def\definemathcharacter{\dosixtupleempty\dodefinemathcharacter}
+ \def\definemathcommand {\dotripleempty \dodefinemathcommand}
+ %\newcounter\mathcolor
+ \def\dodefinemathsymbol[##1][##2][##3][##4][##5][##6]%
+ {%\doifcolorelse{math \purefamilyhex{##3}}{}
+ % {\increment\mathcolor
+ % \definecolor[math \purefamilyhex{##3}][\mathcolor]}%
+ \setbox0\hbox spread 1em{\mathematics{\getvalue{##1}{}{}{}}}%
+ \ifdim\wd0>\dimen0 \dimen0=\wd0 \fi
+ \setbox2\hbox spread 1em{\hbox to 1em{\tttf\purefamilyhex{##3}\hss}\box0 ##1}%
+ \ifdim\wd2>\dimen2 \dimen2=\wd2 \fi}
+ \def\dodefinemathcharacter[##1][##2][##3][##4][##5][##6]{}
+ \def\dodefinemathcommand [##1][##2][##3]##4{}
+ \readsysfile{\f!mathprefix tex}\donothing\donothing
+ \readsysfile{\f!mathprefix ams}\donothing\donothing
+ \edef\encwidth{\the\dimen0}
+ \dimen0=\hsize
+ \advance\dimen0 2em
+ \advance\dimen2 2em
+ \ifcase\showmathmodern\or\advance\dimen2 4em\fi
+ \divide \dimen0 by \dimen2 \advance\dimen0 1sp
+ \edef\enccols{\number\dimen0}
+ \startcolumns[\c!n=\enccols,\c!distance=2em]
+ \def\dodefinemathsymbol[##1][##2][##3][##4][##5][##6]%
+ {%\localcolortrue
+ %\color
+ % [math \purefamilyhex{##3}]
+ {\hbox
+ {\ifcase\showmathmodern\or
+ \hbox to \encwidth{\modern\let\mathcollection\nomathcollection\mathematics{\getvalue{##1}{}{}{}}\hss}%
+ \fi
+ \hbox to \encwidth{\mathematics{\getvalue{##1}{}{}{}}\hss}%
+ \hbox to 1em{\tttf\purefamilyhex{##3}\hss}##1}\par}}
+ \readsysfile{\f!mathprefix tex}\donothing\donothing
+ \readsysfile{\f!mathprefix ams}\donothing\donothing
+ \stopcolumns
+ \stoptextrule
+ \egroup}
+
+% \definecolor[math \purefamilyhex{mr}] [darkred]
+% \definecolor[math \purefamilyhex{mi}] [darkgreen]
+% \definecolor[math \purefamilyhex{sy}] [darkblue]
+% \definecolor[math \purefamilyhex{ex}] [darkmagenta]
+% \definecolor[math \purefamilyhex{nn}] [darkyellow]
+% \definecolor[math \purefamilyhex{ma}] [lightred]
+% \definecolor[math \purefamilyhex{mb}] [lightgreen]
+% \definecolor[math \purefamilyhex{mc}] [lightblue]
+% \definecolor[math \purefamilyhex{md}] [lightmagenta]
+
+\gdef\showmathtoken#1%
+ {\starttabulate[|lT|lT|lT|l|]
+ \NC token \NC #1 \NC \NR
+ \NC collection \NC \ifcsname\@mt@\mathcollection#1\endcsname
+ \mathcollection
+ \else\ifcsname\@mt@\nomathcollection#1\endcsname
+ \nomathcollection
+ \else
+ ?%
+ \fi\fi \NC \NR
+ \NC visualization \NC \mathematics{\getvalue{#1}} \NC \NR
+ \NC definition \NC \tttf \@EA \convertcommand
+ \csname\@mt@\mathcollection#1\endcsname
+ \to \ascii \ascii \NC \NR
+ \stoptabulate}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-tex.tex b/Master/texmf-dist/tex/context/base/math-tex.tex
new file mode 100644
index 00000000000..8b547d00016
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-tex.tex
@@ -0,0 +1,553 @@
+%D \module
+%D [ file=math-tex,
+%D version=2001.04.12,
+%D subtitle=Plain Specials,
+%D author={Hans Hagen \& Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\mathcode`\ ="8000 \mathcode`\_="8000 \mathcode`\'="8000
+
+\definefamilysynonym [default] [calligraphic] [sy]
+\definefamilysynonym [default] [oldstyle] [mi]
+\definefamilysynonym [default] [blackboard] [mr]
+\definefamilysynonym [default] [gothic] [mr]
+\definefamilysynonym [default] [fraktur] [mr]
+
+\definefamilysynonym [default] [lcgreek] [mi]
+\definefamilysynonym [default] [ucgreek] [mr]
+\definefamilysynonym [default] [vargreek] [mi]
+
+\startmathcollection [default]
+
+\definemathsymbol [alpha] [nothing] [lcgreek] ["0B]
+\definemathsymbol [beta] [nothing] [lcgreek] ["0C]
+\definemathsymbol [gamma] [nothing] [lcgreek] ["0D]
+\definemathsymbol [delta] [nothing] [lcgreek] ["0E]
+\definemathsymbol [epsilon] [nothing] [lcgreek] ["0F]
+\definemathsymbol [zeta] [nothing] [lcgreek] ["10]
+\definemathsymbol [eta] [nothing] [lcgreek] ["11]
+\definemathsymbol [theta] [nothing] [lcgreek] ["12]
+\definemathsymbol [iota] [nothing] [lcgreek] ["13]
+\definemathsymbol [kappa] [nothing] [lcgreek] ["14]
+\definemathsymbol [lambda] [nothing] [lcgreek] ["15]
+\definemathsymbol [mu] [nothing] [lcgreek] ["16]
+\definemathsymbol [nu] [nothing] [lcgreek] ["17]
+\definemathsymbol [xi] [nothing] [lcgreek] ["18]
+\definemathsymbol [omicron] [nothing] [lcgreek] ["6F]
+\definemathsymbol [pi] [nothing] [lcgreek] ["19]
+\definemathsymbol [rho] [nothing] [lcgreek] ["1A]
+\definemathsymbol [sigma] [nothing] [lcgreek] ["1B]
+\definemathsymbol [tau] [nothing] [lcgreek] ["1C]
+\definemathsymbol [upsilon] [nothing] [lcgreek] ["1D]
+\definemathsymbol [phi] [nothing] [lcgreek] ["1E]
+\definemathsymbol [chi] [nothing] [lcgreek] ["1F]
+\definemathsymbol [psi] [nothing] [lcgreek] ["20]
+\definemathsymbol [omega] [nothing] [lcgreek] ["21]
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathsymbol [varepsilon] [nothing] [vargreek] ["22]
+\definemathsymbol [vartheta] [nothing] [vargreek] ["23]
+\definemathsymbol [varpi] [nothing] [vargreek] ["24]
+\definemathsymbol [varrho] [nothing] [vargreek] ["25]
+\definemathsymbol [varsigma] [nothing] [vargreek] ["26]
+\definemathsymbol [varphi] [nothing] [vargreek] ["27]
+
+\stopmathcollection
+
+\startmathcollection [default]
+
+\definemathsymbol [Alpha] [alpha] [ucgreek] ["41] % A
+\definemathsymbol [Beta] [alpha] [ucgreek] ["42] % B
+\definemathsymbol [Gamma] [alpha] [ucgreek] ["00]
+\definemathsymbol [Delta] [alpha] [ucgreek] ["01]
+\definemathsymbol [Epsilon] [alpha] [ucgreek] ["45] % E
+\definemathsymbol [Zeta] [alpha] [ucgreek] ["5A] % Z
+\definemathsymbol [Eta] [alpha] [ucgreek] ["48] % H
+\definemathsymbol [Theta] [alpha] [ucgreek] ["02]
+\definemathsymbol [Iota] [alpha] [ucgreek] ["49] % I
+\definemathsymbol [Kappa] [alpha] [ucgreek] ["4B] % K
+\definemathsymbol [Lambda] [alpha] [ucgreek] ["03]
+\definemathsymbol [Mu] [alpha] [ucgreek] ["4D] % M
+\definemathsymbol [Nu] [alpha] [ucgreek] ["4E] % N
+\definemathsymbol [Xi] [alpha] [ucgreek] ["04]
+\definemathsymbol [Omicron] [alpha] [ucgreek] ["4F] % O
+\definemathsymbol [Pi] [alpha] [ucgreek] ["05]
+\definemathsymbol [Rho] [alpha] [ucgreek] ["52] % R
+\definemathsymbol [Sigma] [alpha] [ucgreek] ["06]
+\definemathsymbol [Tau] [alpha] [ucgreek] ["54] % T
+\definemathsymbol [Upsilon] [alpha] [ucgreek] ["07]
+\definemathsymbol [Phi] [alpha] [ucgreek] ["08]
+\definemathsymbol [Chi] [alpha] [ucgreek] ["58] % X
+\definemathsymbol [Psi] [alpha] [ucgreek] ["09]
+\definemathsymbol [Omega] [alpha] [ucgreek] ["0A]
+
+\stopmathcollection
+
+% The \mfunction macro is an alternative for \hbox with a
+% controlable font switch.
+
+\startmathcollection[default]
+
+\definemathcommand [arccos] [nolop] {\mfunction{arccos}}
+\definemathcommand [arcsin] [nolop] {\mfunction{arcsin}}
+\definemathcommand [arctan] [nolop] {\mfunction{arctan}}
+\definemathcommand [arg] [nolop] {\mfunction{arg}}
+\definemathcommand [cosh] [nolop] {\mfunction{cosh}}
+\definemathcommand [cos] [nolop] {\mfunction{cos}}
+\definemathcommand [coth] [nolop] {\mfunction{coth}}
+\definemathcommand [cot] [nolop] {\mfunction{cot}}
+\definemathcommand [csc] [nolop] {\mfunction{csc}}
+\definemathcommand [deg] [nolop] {\mfunction{deg}}
+\definemathcommand [det] [limop] {\mfunction{det}}
+\definemathcommand [dim] [nolop] {\mfunction{dim}}
+\definemathcommand [exp] [nolop] {\mfunction{exp}}
+\definemathcommand [gcd] [limop] {\mfunction{gcd}}
+\definemathcommand [hom] [nolop] {\mfunction{hom}}
+\definemathcommand [inf] [limop] {\mfunction{inf}}
+\definemathcommand [injlim] [limop] {\mfunction{inj\,lim}}
+\definemathcommand [ker] [nolop] {\mfunction{ker}}
+\definemathcommand [lg] [nolop] {\mfunction{lg}}
+\definemathcommand [liminf] [limop] {\mfunction{lim\,inf}}
+\definemathcommand [limsup] [limop] {\mfunction{lim\,sup}}
+\definemathcommand [lim] [limop] {\mfunction{lim}}
+\definemathcommand [ln] [nolop] {\mfunction{ln}}
+\definemathcommand [log] [nolop] {\mfunction{log}}
+\definemathcommand [median] [limop] {\mfunction{median}}
+\definemathcommand [max] [limop] {\mfunction{max}}
+\definemathcommand [min] [limop] {\mfunction{min}}
+\definemathcommand [mod] [limop] {\mfunction{mod}}
+\definemathcommand [div] [limop] {\mfunction{div}}
+\definemathcommand [projlim] [limop] {\mfunction{proj\,lim}}
+\definemathcommand [Pr] [limop] {\mfunction{Pr}}
+\definemathcommand [sec] [nolop] {\mfunction{sec}}
+\definemathcommand [sinh] [nolop] {\mfunction{sinh}}
+\definemathcommand [sin] [nolop] {\mfunction{sin}}
+\definemathcommand [sup] [limop] {\mfunction{sup}}
+\definemathcommand [tanh] [nolop] {\mfunction{tanh}}
+\definemathcommand [tan] [nolop] {\mfunction{tan}}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathcommand [integers] {\mfunction{Z}}
+\definemathcommand [reals] {\mfunction{R}}
+\definemathcommand [rationals] {\mfunction{Q}}
+\definemathcommand [naturalnumbers] {\mfunction{N}}
+\definemathcommand [complexes] {\mfunction{C}}
+\definemathcommand [primes] {\mfunction{P}}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathcharacter [!] [close] [mr] ["21]
+\definemathcharacter [(] [open] [mr] ["28]
+\definemathcharacter [)] [close] [mr] ["29]
+\definemathcharacter [*] [bin] [sy] ["03]
+\definemathcharacter [+] [bin] [mr] ["2B]
+\definemathcharacter [,] [punct] [mi] ["3B]
+\definemathcharacter [-] [bin] [sy] ["00]
+\definemathcharacter [.] [ord] [mi] ["3A]
+\definemathcharacter [/] [ord] [mi] ["3D]
+\definemathcharacter [:] [rel] [mr] ["3A]
+\definemathcharacter [;] [punct] [mr] ["3B]
+\definemathcharacter [<] [rel] [mi] ["3C]
+\definemathcharacter [=] [rel] [mr] ["3D]
+\definemathcharacter [>] [rel] [mi] ["3E]
+\definemathcharacter [?] [close] [mr] ["3F]
+\definemathcharacter [91] [open] [mr] ["5B] % [
+\definemathcharacter [92] [ord] [sy] ["6E] % \
+\definemathcharacter [93] [close] [mr] ["5D] % ]
+\definemathcharacter [123] [open] [sy] ["66] % {
+\definemathcharacter [124] [ord] [sy] ["6A] % |
+\definemathcharacter [125] [close] [sy] ["67] % }
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathcharacter [(] [nothing] [mr] ["28] [ex] ["00]
+\definemathcharacter [)] [nothing] [mr] ["29] [ex] ["01]
+\definemathcharacter [91] [nothing] [mr] ["5B] [ex] ["02] % [
+\definemathcharacter [93] [nothing] [mr] ["5D] [ex] ["03] % ]
+\definemathcharacter [<] [nothing] [sy] ["68] [ex] ["0A]
+\definemathcharacter [>] [nothing] [sy] ["69] [ex] ["0B]
+\definemathcharacter [/] [nothing] [mr] ["2F] [ex] ["0E]
+\definemathcharacter [124] [nothing] [sy] ["6A] [ex] ["0C] % |
+\definemathcharacter [92] [nothing] [sy] ["6E] [ex] ["0F] % \
+
+\stopmathcollection
+
+\def\PLAINangle
+ {{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
+ \not\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}
+ \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}
+
+\startmathcollection[default]
+
+\definemathsymbol [aleph] [nothing] [sy] ["40]
+\definemathsymbol [imath] [nothing] [mi] ["7B]
+\definemathsymbol [jmath] [nothing] [mi] ["7C]
+\definemathsymbol [ell] [nothing] [mi] ["60]
+\definemathsymbol [wp] [nothing] [mi] ["7D]
+\definemathsymbol [Re] [nothing] [sy] ["3C]
+\definemathsymbol [Im] [nothing] [sy] ["3D]
+\definemathsymbol [partial] [nothing] [mi] ["40]
+\definemathsymbol [infty] [nothing] [sy] ["31]
+\definemathsymbol [prime] [nothing] [sy] ["30]
+\definemathsymbol [emptyset] [nothing] [sy] ["3B]
+\definemathsymbol [nabla] [nothing] [sy] ["72]
+\definemathsymbol [top] [nothing] [sy] ["3E]
+\definemathsymbol [bot] [nothing] [sy] ["3F]
+
+\definemathcommand [hbar] {{\mathchar'26\mkern-9muh}}
+\definemathcommand [surd] {{\mathchar"1270}} % ?
+\definemathcommand [angle] {\PLAINangle}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [triangle] [ord] [sy] ["34]
+\definemathsymbol [forall] [ord] [sy] ["38]
+\definemathsymbol [exists] [ord] [sy] ["39]
+\definemathsymbol [neg] [ord] [sy] ["3A]
+\definemathsymbol [flat] [ord] [mi] ["5B]
+\definemathsymbol [natural] [ord] [mi] ["5C]
+\definemathsymbol [sharp] [ord] [mi] ["5D]
+\definemathsymbol [clubsuit] [ord] [sy] ["7C]
+\definemathsymbol [diamondsuit] [ord] [sy] ["7D]
+\definemathsymbol [heartsuit] [ord] [sy] ["7E]
+\definemathsymbol [spadesuit] [ord] [sy] ["7F]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathcommand [square] {\hbox{\hsmash{$\sqcup$}$\sqcap$}}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [coprod] [op] [ex] ["60]
+\definemathsymbol [bigvee] [op] [ex] ["57]
+\definemathsymbol [bigwedge] [op] [ex] ["56]
+\definemathsymbol [biguplus] [op] [ex] ["55]
+\definemathsymbol [bigcap] [op] [ex] ["54]
+\definemathsymbol [bigcup] [op] [ex] ["53]
+\definemathsymbol [intop] [op] [ex] ["52]
+\definemathsymbol [prod] [op] [ex] ["51]
+\definemathsymbol [sum] [op] [ex] ["50]
+\definemathsymbol [bigotimes] [op] [ex] ["4E]
+\definemathsymbol [bigoplus] [op] [ex] ["4C]
+\definemathsymbol [bigodot] [op] [ex] ["4A]
+\definemathsymbol [ointop] [op] [ex] ["48]
+\definemathsymbol [bigsqcup] [op] [ex] ["46]
+\definemathsymbol [smallint] [op] [sy] ["73]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [triangleleft] [bin] [mi] ["2F]
+\definemathsymbol [triangleright] [bin] [mi] ["2E]
+\definemathsymbol [bigtriangleup] [bin] [sy] ["34]
+\definemathsymbol [bigtriangledown] [bin] [sy] ["35]
+\definemathsymbol [wedge] [bin] [sy] ["5E]
+\definemathsymbol [vee] [bin] [sy] ["5F]
+\definemathsymbol [cap] [bin] [sy] ["5C]
+\definemathsymbol [cup] [bin] [sy] ["5B]
+\definemathsymbol [ddagger] [bin] [sy] ["7A]
+\definemathsymbol [dagger] [bin] [sy] ["79]
+\definemathsymbol [sqcap] [bin] [sy] ["75]
+\definemathsymbol [sqcup] [bin] [sy] ["74]
+\definemathsymbol [uplus] [bin] [sy] ["5D]
+\definemathsymbol [amalg] [bin] [sy] ["71]
+\definemathsymbol [diamond] [bin] [sy] ["05]
+\definemathsymbol [bullet] [bin] [sy] ["0F]
+\definemathsymbol [wr] [bin] [sy] ["6F]
+\definemathsymbol [div] [bin] [sy] ["04]
+\definemathsymbol [odot] [bin] [sy] ["0C]
+\definemathsymbol [oslash] [bin] [sy] ["0B]
+\definemathsymbol [otimes] [bin] [sy] ["0A]
+\definemathsymbol [ominus] [bin] [sy] ["09]
+\definemathsymbol [oplus] [bin] [sy] ["08]
+\definemathsymbol [mp] [bin] [sy] ["07]
+\definemathsymbol [pm] [bin] [sy] ["06]
+\definemathsymbol [circ] [bin] [sy] ["0E]
+\definemathsymbol [bigcirc] [bin] [sy] ["0D]
+\definemathsymbol [setminus] [bin] [sy] ["6E]
+\definemathsymbol [cdot] [bin] [sy] ["01]
+\definemathsymbol [ast] [bin] [sy] ["03]
+\definemathsymbol [times] [bin] [sy] ["02]
+\definemathsymbol [star] [bin] [mi] ["3F]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [propto] [rel] [sy] ["2F]
+\definemathsymbol [sqsubseteq] [rel] [sy] ["76]
+\definemathsymbol [sqsupseteq] [rel] [sy] ["77]
+\definemathsymbol [parallel] [rel] [sy] ["6B]
+\definemathsymbol [mid] [rel] [sy] ["6A]
+\definemathsymbol [dashv] [rel] [sy] ["61]
+\definemathsymbol [vdash] [rel] [sy] ["60]
+\definemathsymbol [nearrow] [rel] [sy] ["25]
+\definemathsymbol [searrow] [rel] [sy] ["26]
+\definemathsymbol [nwarrow] [rel] [sy] ["2D]
+\definemathsymbol [swarrow] [rel] [sy] ["2E]
+\definemathsymbol [Leftrightarrow] [rel] [sy] ["2C]
+\definemathsymbol [Leftarrow] [rel] [sy] ["28]
+\definemathsymbol [Rightarrow] [rel] [sy] ["29]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathcommand [lnot] {\neg}
+\definemathcommand [int] {\intop\nolimits}
+\definemathcommand [oint] {\ointop\nolimits}
+\definemathcommand [land] {\wedge}
+\definemathcommand [lor] {\vee}
+\definemathcommand [neq] {\not=}
+\definemathcommand [ne] {\neq}
+\definemathcommand [le] {\leq}
+\definemathcommand [ge] {\geq}
+\definemathcommand [eq] {=}
+\definemathcommand [gt] {>}
+\definemathcommand [lt] {<}
+\definemathcommand [gets] {\leftarrow}
+\definemathcommand [owns] {\ni}
+\definemathcommand [to] {\rightarrow}
+\definemathcommand [mapsto] {\mapstochar\rightarrow}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [leq] [rel] [sy] ["14]
+\definemathsymbol [geq] [rel] [sy] ["15]
+\definemathsymbol [succ] [rel] [sy] ["1F]
+\definemathsymbol [prec] [rel] [sy] ["1E]
+\definemathsymbol [approx] [rel] [sy] ["19]
+\definemathsymbol [succeq] [rel] [sy] ["17]
+\definemathsymbol [preceq] [rel] [sy] ["16]
+\definemathsymbol [supset] [rel] [sy] ["1B]
+\definemathsymbol [subset] [rel] [sy] ["1A]
+\definemathsymbol [supseteq] [rel] [sy] ["13]
+\definemathsymbol [subseteq] [rel] [sy] ["12]
+\definemathsymbol [in] [rel] [sy] ["32]
+\definemathsymbol [ni] [rel] [sy] ["33]
+\definemathsymbol [gg] [rel] [sy] ["1D]
+\definemathsymbol [ll] [rel] [sy] ["1C]
+\definemathsymbol [not] [rel] [sy] ["36]
+\definemathsymbol [leftrightarrow] [rel] [sy] ["24]
+\definemathsymbol [leftarrow] [rel] [sy] ["20]
+\definemathsymbol [rightarrow] [rel] [sy] ["21]
+\definemathsymbol [mapstochar] [rel] [sy] ["37]
+\definemathsymbol [sim] [rel] [sy] ["18]
+\definemathsymbol [simeq] [rel] [sy] ["27]
+\definemathsymbol [perp] [rel] [sy] ["3F]
+\definemathsymbol [equiv] [rel] [sy] ["11]
+\definemathsymbol [asymp] [rel] [sy] ["10]
+\definemathsymbol [smile] [rel] [mi] ["5E]
+\definemathsymbol [frown] [rel] [mi] ["5F]
+\definemathsymbol [leftharpoonup] [rel] [mi] ["28]
+\definemathsymbol [leftharpoondown] [rel] [mi] ["29]
+\definemathsymbol [rightharpoonup] [rel] [mi] ["2A]
+\definemathsymbol [rightharpoondown] [rel] [mi] ["2B]
+\definemathsymbol [lhook] [rel] [mi] ["2C]
+\definemathsymbol [rhook] [rel] [mi] ["2D]
+
+\stopmathcollection
+
+\def\PLAINldots
+ {\ldotp\ldotp\ldotp}
+
+\def\PLAINcdots
+ {\cdotp\cdotp\cdotp}
+
+\def\PLAINvdots
+ {\vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+
+\def\PLAINddots
+ {\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}
+
+\startmathcollection[default]
+
+\definemathcommand [hookrightarrow] {\lhook\joinrel\rightarrow}
+\definemathcommand [hookleftarrow] {\leftarrow\joinrel\rhook}
+\definemathcommand [bowtie] {\mathrel\triangleright\joinrel\mathrel\triangleleft}
+\definemathcommand [models] {\mathrel|\joinrel=}
+\definemathcommand [iff] {\;\Longleftrightarrow\;}
+
+\definemathsymbol [ldotp] [punct] [mi] ["3A]
+\definemathsymbol [cdotp] [punct] [sy] ["01]
+\definemathsymbol [colon] [punct] [mr] ["3A]
+
+\definemathcommand [ldots] [inner] {\PLAINldots}
+\definemathcommand [cdots] [inner] {\PLAINcdots}
+\definemathcommand [vdots] [nothing] {\PLAINvdots}
+\definemathcommand [ddots] [inner] {\PLAINddots}
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [acute] [accent] [mr] ["13]
+\definemathsymbol [grave] [accent] [mr] ["12]
+\definemathsymbol [ddot] [accent] [mr] ["7F]
+\definemathsymbol [tilde] [accent] [mr] ["7E]
+\definemathsymbol [bar] [accent] [mr] ["16]
+\definemathsymbol [breve] [accent] [mr] ["15]
+\definemathsymbol [check] [accent] [mr] ["14]
+\definemathsymbol [hat] [accent] [mr] ["5E]
+\definemathsymbol [vec] [accent] [mi] ["7E] % [ord]
+\definemathsymbol [dot] [accent] [mr] ["5F]
+\definemathsymbol [widetilde] [accent] [ex] ["65] % [ord]
+\definemathsymbol [widehat] [accent] [ex] ["62] % [ord]
+
+\stopmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [lmoustache] [open] [ex] ["7A] [ex] ["40]
+\definemathsymbol [rmoustache] [close] [ex] ["7B] [ex] ["41]
+\definemathsymbol [lgroup] [open] [mr] ["28] [ex] ["3A] % ?
+\definemathsymbol [rgroup] [close] [mr] ["29] [ex] ["3B] % ?
+\definemathsymbol [arrowvert] [nothing] [sy] ["6A] [ex] ["3C]
+\definemathsymbol [Arrowvert] [nothing] [sy] ["6B] [ex] ["3D]
+\definemathsymbol [bracevert] [nothing] [ex] ["3E] % ?
+\definemathsymbol [Vert] [nothing] [sy] ["6B] [ex] ["0D]
+\definemathsymbol [vert] [nothing] [sy] ["6A] [ex] ["0C]
+\definemathsymbol [uparrow] [rel] [sy] ["22] [ex] ["78]
+\definemathsymbol [downarrow] [rel] [sy] ["23] [ex] ["79]
+\definemathsymbol [updownarrow] [rel] [sy] ["6C] [ex] ["3F]
+\definemathsymbol [Uparrow] [rel] [sy] ["2A] [ex] ["7E]
+\definemathsymbol [Downarrow] [rel] [sy] ["2B] [ex] ["7F]
+\definemathsymbol [Updownarrow] [rel] [sy] ["6D] [ex] ["77]
+\definemathsymbol [backslash] [nothing] [sy] ["6E] [ex] ["0F]
+\definemathsymbol [rangle] [close] [sy] ["69] [ex] ["0B]
+\definemathsymbol [langle] [open] [sy] ["68] [ex] ["0A]
+\definemathsymbol [rbrace] [close] [sy] ["67] [ex] ["09]
+\definemathsymbol [lbrace] [open] [sy] ["66] [ex] ["08]
+\definemathsymbol [rceil] [close] [sy] ["65] [ex] ["07]
+\definemathsymbol [lceil] [open] [sy] ["64] [ex] ["06]
+\definemathsymbol [rfloor] [close] [sy] ["63] [ex] ["05]
+\definemathsymbol [lfloor] [open] [sy] ["62] [ex] ["04]
+
+\definemathsymbol [sqrt] [radical] [sy] ["70] [ex] ["70]
+
+\stopmathcollection
+
+%D For brooks:
+%D
+%D \starttyping
+%D $\sqrt[3]{10}$
+%D \stoptyping
+
+\ifx\normalsqrt\undefined \let\normalsqrt\sqrt \fi % just set to: \dohandlemathtoken {sqrt}
+
+\def\notsosqrt[#1]{\root#1\of}
+
+\def\sqrt{\doifnextcharelse[\notsosqrt\normalsqrt}
+
+\def\PLAINbig {\@@dobig{0.85}}
+\def\PLAINBig {\@@dobig{1.15}}
+\def\PLAINbigg{\@@dobig{1.45}}
+\def\PLAINBigg{\@@dobig{1.75}}
+
+\startrawmathcollection [default]
+
+\definemathcommand [bigl] [open] [one] {\big}
+\definemathcommand [bigm] [rel] [one] {\big}
+\definemathcommand [bigr] [close] [one] {\big}
+\definemathcommand [Bigl] [open] [one] {\Big}
+\definemathcommand [Bigm] [rel] [one] {\Big}
+\definemathcommand [Bigr] [close] [one] {\Big}
+\definemathcommand [biggl] [open] [one] {\bigg}
+\definemathcommand [biggm] [rel] [one] {\bigg}
+\definemathcommand [biggr] [close] [one] {\bigg}
+\definemathcommand [Biggl] [open] [one] {\Bigg}
+\definemathcommand [Biggm] [rel] [one] {\Bigg}
+\definemathcommand [Biggr] [close] [one] {\Bigg}
+
+\definemathcommand [big] {\PLAINbig}
+\definemathcommand [Big] {\PLAINBig}
+\definemathcommand [bigg] {\PLAINbigg}
+\definemathcommand [Bigg] {\PLAINBigg}
+
+\stoprawmathcollection
+
+\startmathcollection[default]
+
+\definemathsymbol [dag] [box] [sy] ["79]
+\definemathsymbol [ddag] [box] [sy] ["7A]
+\definemathsymbol [S] [box] [sy] ["78]
+\definemathsymbol [P] [box] [sy] ["7B]
+\definemathsymbol [Orb] [box] [sy] ["0D]
+
+\stopmathcollection
+
+\def\PLAINroot#1#2%
+ {\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}\dimen@\ht\z@
+ \advance\dimen@-\dp\z@
+ \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu\box\z@}
+
+\def\PLAINmatrix#1%
+ {\null\,\vcenter{\normalbaselines\m@th
+ \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
+ \mathstrut\crcr\noalign{\kern-\baselineskip}
+ #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
+
+\startrawmathcollection[default]
+
+\definemathcommand [mathstrut] {\vphantom{(}}
+\definemathcommand [joinrel] {\mathrel{\mkern-3mu}}
+\definemathcommand [r@@t] {\PLAINroot}
+\definemathcommand [matrix] {\PLAINmatrix}
+
+\definemathcommand [over] {\normalover} % hack, to do
+
+\stoprawmathcollection
+
+\def\{{\lbrace}
+\def\}{\rbrace}
+
+%def\bbd{\fam\purefamily{blackboard}}
+%def\cal{\fam\purefamily{calfamily}}
+
+\def\mit{\fam\purefamily{mitfamily}}
+
+\def\Bbb{\blackboard} % conforming amstex
+
+\startmathcollection[default]
+
+ \definemathsymbol [mathperiod] [ord] [mi] ["3A]
+ \definemathsymbol [textperiod] [punct] [mi] ["3A]
+
+ \definemathsymbol [mathcomma] [ord] [mi] ["3B]
+ \definemathsymbol [textcomma] [punct] [mi] ["3B]
+
+\stopmathcollection
+
+\definemathpunctuation . mathperiod textperiod
+\definemathpunctuation , mathcomma textcomma
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/math-tim.tex b/Master/texmf-dist/tex/context/base/math-tim.tex
new file mode 100644
index 00000000000..de6561ba7e2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-tim.tex
@@ -0,0 +1,371 @@
+%D \module
+%D [ file=math-tim,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=Mathtime Specials,
+%D author={Hans Hagen \& Taco Hoekwater},
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\endinput % i will clean this up after taco has gone over it
+
+%D With thanks to Berthold Horn from YandY for providing me
+%D evaluation copies of the MathTimePlus fonts.
+
+% version 0 : Michael Spivak
+% version 1 : Taco Hoekwater
+% version 2 : Hans Hagen
+% version 3 : etc etc etc
+
+\unprotect
+
+%D We use the predefined spare families \type {\mcfam} and
+%D \type {\mdfam}.
+
+\let\cafam\mcfam \let\hexcafam\hexmcfam
+\let\gbfam\mdfam \let\hexgbfam\hexmdfam
+\let\gkfam\mdfam \let\hexgkfam\hexmdfam
+
+% Why is this needed?
+
+% \font\tenmd =mtgu at 10pt
+% \font\sevenmd=mtgu at 7.6pt
+% \font\fivemd =mtgu at 6pt
+% \font\tenmc =mtms at 10pt
+% \font\sevenmc=mtms at 7.6pt
+% \font\fivemc =mtms at 6pt
+%
+% \textfont \mcfam\tenmc \textfont \mdfam\tenmd
+% \scriptfont \mcfam\sevenmc \scriptfont \mdfam\sevenmd
+% \scriptscriptfont\mcfam\fivemc \scriptscriptfont\mdfam\fivemd
+
+% \addtocommalist{gk}\familylist
+% \addtocommalist{gb}\familylist
+%
+% \defineinterfaceconstant {ca} {ca} % boohoo!
+% \defineinterfaceconstant {gk} {gk} % boohoo!
+% \defineinterfaceconstant {gb} {gb} % boohoo!
+
+% \definealternativestyle[script] [\ca][\ca]
+% \definealternativestyle[greek] [\gk][\gk]
+% \definealternativestyle[boldgreek][\gb][\gb]
+
+% \definebodyfont
+% [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt] [rm]
+% [ca=mtms sa 1,
+% gk=mtgu sa 1,
+% gb=mtgub sa 1]
+
+%D Since a font size is a rather fuzzy thing, it will be no
+%D surprise that the Math Times fonts have different specs
+%D than the Computer Modern Roman fonts.
+%D
+%D \starttabulate[|Bl|c|c|c|c|c|c|c|c|c|c|]
+%D \NC Computer Modern\NC
+%D 5 \NC6 \NC7 \NC8 \NC9 \NC10 \NC11 \NC12 \NC14 \NC18\NC\NR
+%D \NC Math Times \NC
+%D 6.0\NC6.8\NC7.6\NC8.4\NC9.2\NC10.0\NC10.8\NC11.6\NC13.2\NC--\NC\NR
+%D \stoptabulate
+%D
+%D The following definitions presume the existence of \type
+%D {tio} and \type {tibio} font alternatives. Definitions for
+%D \type {\tf.} etc and \type {\sc} are left as they are.
+
+%D moved code
+
+%D The next lines set up coding dependant versions of math
+%D accents (for \type {texnansi} of course). These are needed
+%D in commands like \type {\bf} and \type {\it} (which use the
+%D text font encoding) a opposed to \type {_no spec_} and
+%D \type {mi} that use the math font encoding. This stuff
+%D should be made more general!
+
+% \daghex, \ddaghex and \dothex were wrong in my version of mtmacs
+
+\def\daghex {86} % to do
+\def\ddaghex {87}
+\def\Shex {A7}
+\def\Phex {B6}
+\def\barhex {16}
+\def\gravehex{12}
+\def\acutehex{13}
+\def\checkhex{14}
+\def\brevehex{15}
+\def\hathex {5E}
+\def\dothex {05}
+\def\tildehex{7E}
+\def\ddothex {7F}
+
+%D The \type {mtex} fonts need a recalculation of \type
+%D {\p@renwd}, which in \CONTEXT\ is done automatically.
+
+%D The following definitions are mostly copied from the file
+%D \type {mtmacs.tex}, which banner said:
+%D
+%D \starttyping
+%D MTMACS.TEX VERSION 1.1.1 (1996 Dec 8)
+%D COPYRIGHT (C) 1992, 1993, 1996 BY THE TEXPLORATORS CORPORATION
+%D ALL RIGHTS RESERVED
+%D \stoptyping
+%D
+%D We reformatted the macros and changed a few bits and
+%D pieces. A further cleanup with regards to the scratch
+%D registers will be done later.
+
+\mathchardef\Gamma = "0130
+\mathchardef\Delta = "0131
+\mathchardef\Theta = "0132
+\mathchardef\Lambda = "0133
+\mathchardef\Xi = "0134
+\mathchardef\Pi = "0135
+\mathchardef\Sigma = "0136
+\mathchardef\Upsilon = "0137
+\mathchardef\Phi = "0138
+\mathchardef\Psi = "0139
+\mathchardef\Omega = "017F
+\mathchardef\varGamma = "0100
+\mathchardef\varDelta = "0101
+\mathchardef\varTheta = "0102
+\mathchardef\varLambda = "0103
+\mathchardef\varXi = "0104
+\mathchardef\varPi = "0105
+\mathchardef\varSigma = "0106
+\mathchardef\varUpsilon = "0107
+\mathchardef\varPhi = "0108
+\mathchardef\varPsi = "0109
+\mathchardef\varOmega = "010A
+\mathchardef\varkappa = "017E
+
+\mathchardef\ldotp = "613A
+
+\mathchardef\triangleleft = "2247
+\mathchardef\triangleright = "2246
+\mathchardef\comp = "2242
+
+\mathchardef\Relbar = "3248
+\mathchardef\dagger = "20\daghex % to do
+\mathchardef\ddagger = "20\ddaghex % to do
+\mathchardef\dotacc = "0250
+
+\mathcode`\( = "412E
+\mathcode`\) = "512F
+\mathcode`\. = "013A
+\mathcode`\, = "613B
+\mathcode`\+ = "2243
+\mathcode`\= = "3244
+\mathcode`\; = "6249
+
+\delcode `\( = "12E300
+\delcode `\) = "12F301
+
+\let\mit=\undefined % to do
+
+\def\vec{\mathaccent"0245 }
+\def\t#1{{\edef\next{\the\font}\the\textfont2\accent"41\next#1}}
+
+% fam equals -1 unless the user has said something
+% like \rm (cf. the texbook page 290)
+
+\def\ifdefaultfamelse#1#2%
+ {\ifnum\fam=\m@ne\mathaccent#1\else\mathaccent#2\fi}
+
+\let\noaccents@\relax
+
+\def\grave {\ifdefaultfamelse{"024A}{"70\gravehex}}
+\def\acute {\ifdefaultfamelse{"024B}{"70\acutehex}}
+\def\check {\ifdefaultfamelse{"024C}{"70\checkhex}}
+\def\breve {\ifdefaultfamelse{"024D}{"70\brevehex}}
+\def\bar {\ifdefaultfamelse{"024E}{"70\barhex }}
+\def\hat {\ifdefaultfamelse{"024F}{"70\hathex }}
+\def\dot {\ifdefaultfamelse{"0250}{"70\dothex }}
+\def\tilde {\ifdefaultfamelse{"0251}{"70\tildehex}}
+\def\ddot {\ifdefaultfamelse{"0252}{"70\ddothex }}
+
+\def\widebar{\mathaccent"0253 }
+
+\def\mathhexbox@#1#2#3%
+ {\relax
+ \ifmmode
+ \mathpalette{}{\m@th\rm\mathchar"#1#2#3}%
+ \else
+ \leavevmode
+ \hbox{$\m@th\rm\mathchar"#1#2#3$}%
+ \fi}
+
+\def\dag {\edef\next@{0\daghex }\expandafter\mathhexbox@\next@}
+\def\ddag{\edef\next@{0\ddaghex}\expandafter\mathhexbox@\next@}
+
+\def\S{\edef\next@{0\Shex}\expandafter\mathhexbox@\next@}
+\def\P{\edef\next@{0\Phex}\expandafter\mathhexbox@\next@}
+
+\def\vdots%
+ {\vbox
+ {\baselineskip4\p@
+ \lineskiplimit\z@
+ \kern6\p@\hbox{$\m@th.$}\hbox{$\m@th.$}\hbox{$\m@th.$}}}
+
+\def\ddots%
+ {\mathinner
+ {\mkern1mu
+ \raise7\p@\vbox{\kern 7\p@\hbox{$\m@th.$}}\mkern2mu
+ \raise4\p@\hbox{$\m@th.$}\mkern2mu
+ \raise \p@\hbox{$\m@th.$}\mkern1mu}}
+
+\def\hbar
+ {{\mathchoice
+ {\hbox{\lower.07em \hbox{$\mathchar"\barhex$}}}
+ {\hbox{\lower.07em \hbox{$\mathchar"\barhex$}}}
+ {\hbox{\lower.049em\hbox{$\scriptstyle\mathchar"\barhex$}}}
+ {\hbox{\lower.035em\hbox{$\scriptscriptstyle\mathchar"\barhex$}}}%
+ \mkern-6.3muh}}
+
+\def\angle%
+ {{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
+ \not\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}
+ \mkern2.5mu\leaders\hrule height.48\p@\hfill\mkern2.5mu\crcr}}}}
+
+\newdimen\amstexex
+
+\amstexex = .2326ex
+
+\def\varinjlim%
+ {\mathop{\vtop{\ialign{##\crcr
+ \hfil\the\textfont\z@ lim\hfil\crcr
+ \noalign{\nointerlineskip}\rightarrowfill\crcr
+ \noalign{\nointerlineskip\kern-\amstexex}\crcr}}}}
+
+\def\varprojlim%
+ {\mathop{\vtop{\ialign{##\crcr
+ \hfil\the\textfont\z@ lim\hfil\crcr
+ \noalign{\nointerlineskip}\leftarrowfill\crcr
+ \noalign{\nointerlineskip\kern-\amstexex}\crcr}}}}
+
+\def\varliminf{\mathop{\underbar {lim}}} % context-ified
+\def\varlimsup{\mathop{\overstrike{lim}}} % context-ified
+
+\def\spdot {^{\hbox{\raise\amstexex\hbox{\the\textfont\z@ .}}}}
+\def\spddot {^{\hbox{\raise\amstexex\hbox{\the\textfont\z@ ..}}}}
+\def\spdddot {^{\hbox{\raise\amstexex\hbox{\the\textfont\z@ ...}}}}
+\def\spddddot{^{\hbox{\raise\amstexex\hbox{\the\textfont\z@....}}}}
+
+%D Here some code is merged in order to save strings.
+
+\def\domultidot#1#2%
+ {\setbox0\hbox{$#1#2$}%
+ \setbox2\hbox{$#1\infty$}%
+ \dimen0\ht2
+ \ifdim\ht0<\dimen0 \dimen0\ht0 \fi
+ \setbox2\hbox{$#1#2\mathchar"012D$}%
+ \dimen2\wd2
+ \advance\dimen2-\wd0
+ \setbox0\hbox{$#1\rhook$}%
+ \advance\dimen2-\wd0
+ \vbox
+ {\offinterlineskip
+ \ialign{\hfil$#1##$\hfil\cr
+ \kern\dimen2\dotacc\mkern-2.5mu\dotacc\mkern-2.5mu\dotacc\thirddot\cr
+ \noalign{\vskip-\dimen0}%
+ #2\cr}}}
+
+\def\dddot%
+ {\def\thirddot{}%
+ \mathpalette\domultidot}
+
+\def\ddddot%
+ {\def\thirddot{\mkern-2.5mu\dotacc}%
+ \mathpalette\domultidot}
+
+\newcount\uproot@
+\newcount\leftroot@
+
+\def\nonmatherr#1%
+ {\errmessage{\noexpand#1allowed only in math mode}}
+
+\def\uproot#1%
+ {\relax
+ \ifmmode
+ \uproot@#1\relax
+ \else
+ \nonmatherr\uproot
+ \fi}
+
+\def\leftroot#1%
+ {\relax
+ \ifmmode
+ \leftroot@#1\relax
+ \else
+ \nonmatherr\leftroot
+ \fi}
+
+\def\root#1\of#2%
+ {\setbox\rootbox=\hbox{$\m@th\scriptscriptstyle{#1}$}%
+ \mathpalette\r@@t{#2}}
+
+\def\r@@t#1#2%
+ {\setbox\z@=\hbox{$\uproot@\z@\leftroot\z@\m@th#1\sqrt{#2}$}%
+ \dimen@\ht\z@\advance\dimen@-\dp\z@
+ \dimen@ii\dimen@
+ \ifdim\dimen@>30\p@ \advance\dimen@ii-16\p@ \else
+ \ifdim\dimen@>24\p@ \advance\dimen@ii -8\p@ \else
+ \ifdim\dimen@>18\p@ \advance\dimen@ii -6\p@ \else
+ \ifdim\dimen@>12\p@ \advance\dimen@ii -4\p@ \else
+ \ifdim\dimen@>10\p@ \advance\dimen@ii -2\p@ \fi\fi\fi\fi\fi
+ \setbox\tw@=\hbox{$\m@th#1\mskip\uproot@ mu$}%
+ \advance\dimen@ii by1.667\wd\tw@
+ \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@ii\copy\rootbox
+ \mkern-8mu\mkern\leftroot@ mu\box\z@\leftroot\z@\uproot\z@}
+
+\def\space@.{\futurelet\space@\relax} \space@. % really needed ?
+
+\def\jadjust%
+ {\mkern-\tw@ mu}
+
+%D For the moment the following code is left unchanged. It is
+%D not used anyway.
+
+\newif\ifsubscriptcorrection \subscriptcorrectionfalse
+
+\ifsubscriptcorrection
+
+ \expandafter\let\csname subscript character \string_\endcsname_
+
+ \catcode`\_=\active
+
+ \def_%
+ {\ifmmode
+ \expandafter\sb@
+ \else
+ \expandafter\csname subscript character \string_\endcsname
+ \fi}
+
+ \let\sb_
+
+ \ifnum\catcode`\^^A=8 \catcode`\^^A\active\let^^A_\fi
+
+ \def\sb@#1%
+ {\csname subscript character \string_\endcsname
+ {\futurelet\next\sb@@#1}}
+
+ \def\sb@@%
+ {\ifx\next\space@
+ \def\next@. %
+ {\futurelet\next\sb@@}%
+ \else
+ \def\next@.%
+ {\ifx\next j%
+ \mkern-\tw@ mu\else
+ \ifx\next f%
+ \mkern-\tw@ mu\else
+ \ifx\next p%
+ \mkern-\@ne mu\fi\fi\fi}%
+ \fi
+ \next@.}
+
+\fi
+
+\protect
diff --git a/Master/texmf-dist/tex/context/base/math-uni.tex b/Master/texmf-dist/tex/context/base/math-uni.tex
new file mode 100644
index 00000000000..88698243fc3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/math-uni.tex
@@ -0,0 +1,78 @@
+%D \module
+%D [ file=math-uni,
+%D version=2005.06.11,
+%D title=\CONTEXT\ Math Macros,
+%D subtitle=unicode support,
+%D author=Nikolai Weibull,
+%D date=\currentdate,
+%D copyright={PRAGMA / Nikolai Weibull}]
+
+\unprotect
+
+% needed for unic-033
+
+\startmathcollection[default]
+
+ \definemathcommand [unic@leftarrowtobar] {\mapstochar\leftarrow}
+
+\stopmathcollection
+
+% needed for unic-034
+
+\startmathcollection[default]
+
+ \definemathcommand [unic@in] {\in}
+ \definemathcommand [unic@nin] {\not\in}
+ \definemathcommand [unic@nni] {\not\ni}
+ \definemathcommand [unic@minus] {-}
+ \definemathcommand [unic@divisionslash] {/}
+ \definemathcommand [unic@sqrt] {\sqrt{}}
+ \definemathcommand [unic@cubesqrt] {\root 3 \of {}}
+ \definemathcommand [unic@fourthsqrt] {\root 4 \of {}}
+ \definemathcommand [unic@divides] [op] {|} % TODO
+ \definemathcommand [unic@ndivides] [rel] {\mathop{\not|}} % TODO: horrible
+ \definemathcommand [unic@cap] {\cap}
+ \definemathcommand [unic@dblint] {\int\!\!\!\int}
+ \definemathcommand [unic@triint] {\int\!\!\!\int\!\!\!\int}
+ \definemathcommand [unic@ratio] [rel] {:}
+ \definemathcommand [unic@proportion] [rel] {::}
+ \definemathcommand [unic@excess] [op] {-\!\!:}
+ \definemathcommand [unic@geomprop] [op] {:\!\!\!-\!\!\!:}
+ \definemathcommand [unic@homothetic] [op] {\sim\!\!\!:}
+ \definemathcommand [unic@nsimeq] {\not\simeq}
+ \definemathcommand [unic@cong] {\cong}
+ \definemathcommand [unic@napproxeq] {\not\approxeq}
+ \definemathcommand [unic@napprox] {\not\approx}
+ \definemathcommand [unic@doteq] {\doteq}
+ \definemathcommand [unic@correspondsto] {\buildrel \frown \over =}
+ \definemathcommand [unic@estimates] {\buildrel \wedge \over =}
+ \definemathcommand [unic@equiangularto] {\buildrel \vee \over =}
+ \definemathcommand [unic@stareq] {\buildrel \star \over =}
+ \definemathcommand [unic@eqbydef] {\buildrel \rm def \over =}
+ \definemathcommand [unic@measuredby] {\buildrel \rm m \over =}
+ \definemathcommand [unic@questionedeq] {\buildrel \rm ? \over =}
+ \definemathcommand [unic@nequiv] {\not\equiv}
+ \definemathcommand [unic@nasymp] {\not\asymp}
+ \definemathcommand [unic@nlesssim] {\not\lesssim}
+ \definemathcommand [unic@ngtrsim] {\not\gtrsim}
+ \definemathcommand [unic@nlessgtr] {\not\lessgtr}
+ \definemathcommand [unic@ngtrless] {\not\gtrless}
+ \definemathcommand [unic@nsubset] {\not\subset}
+ \definemathcommand [unic@nsupset] {\not\supset}
+ \definemathcommand [unic@nsqsubseteq] {\not\sqsubseteq}
+ \definemathcommand [unic@nsqsupseteq] {\not\sqsupseteq}
+
+\stopmathcollection
+
+% needed for unic-039
+
+\startmathcollection[default]
+
+ \definemathcommand [unic@Lbracket] [open] {[\![}
+ \definemathcommand [unic@Rbracket] [close] {]\!]}
+ \definemathcommand [unic@Langle] [open] {\langle\!\langle}
+ \definemathcommand [unic@Rangle] [close] {\rangle\!\rangle}
+
+\stopmathcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-clp.tex b/Master/texmf-dist/tex/context/base/meta-clp.tex
new file mode 100644
index 00000000000..be2506b196c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-clp.tex
@@ -0,0 +1,164 @@
+%D \module
+%D [ file=meta-clp,
+%D version=2000.07.06,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Clipping,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this library, we define a bunch of clipping paths that
+%D can be fed to \type {\clip}.
+
+\startMPclip{ellipse}
+ clip currentpicture to unitcircle
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{negellipse}
+ clip currentpicture to (unitcircle peepholed unitsquare)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{urellipse}
+ clip currentpicture to urcircle scaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{ulellipse}
+ clip currentpicture to ulcircle scaled 2 shifted (1,0)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{llellipse}
+ clip currentpicture to llcircle scaled 2 shifted (1,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lrellipse}
+ clip currentpicture to lrcircle scaled 2 shifted (0,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{tellipse}
+ clip currentpicture to tcircle shifted (.5,0) yscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{bellipse}
+ clip currentpicture to bcircle shifted (.5,.5) yscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lellipse}
+ clip currentpicture to lcircle shifted (.5,.5) xscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{rellipse}
+ clip currentpicture to rcircle shifted (0,.5) xscaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{diamond}
+ clip currentpicture to unitdiamond
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{negdiamond}
+ clip currentpicture to (unitdiamond peepholed unitsquare)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{urtriangle}
+ clip currentpicture to urtriangle scaled 2
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{ultriangle}
+ clip currentpicture to ultriangle scaled 2 shifted (1,0)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lltriangle}
+ clip currentpicture to lltriangle scaled 2 shifted (1,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+\startMPclip{lrtriangle}
+ clip currentpicture to lrtriangle scaled 2 shifted (0,1)
+ xscaled \width yscaled \height ;
+\stopMPclip
+
+% More efficient:
+%
+% \def\dosimpleMPclip#1
+% {clip currentpicture to (#1) xscaled \width yscaled \height ;}
+%
+% \def\simpleMPclip#1#2%
+% {\startMPclip{#1}\dosimpleMPclip{#2}\stopMPclip}
+%
+% \simpleMPclip {ellipse} {unitcircle}
+% \simpleMPclip {diamond} {unitdiamond}
+%
+% \simpleMPclip {negellipse} {unitcircle peepholed unitsquare}
+% \simpleMPclip {negdiamond} {unitdiamond peepholed unitsquare}
+%
+% \simpleMPclip {urellipse} {urcircle scaled 2 shifted (0,0)}
+% \simpleMPclip {ulellipse} {ulcircle scaled 2 shifted (1,0)}
+% \simpleMPclip {llellipse} {llcircle scaled 2 shifted (1,1)}
+% \simpleMPclip {lrellipse} {lrcircle scaled 2 shifted (0,1)}
+%
+% \simpleMPclip {tellipse} {tcircle shifted (.5,0) yscaled 2}
+% \simpleMPclip {bellipse} {bcircle shifted (.5,.5) yscaled 2}
+% \simpleMPclip {lellipse} {lcircle shifted (.5,.5) xscaled 2}
+% \simpleMPclip {rellipse} {rcircle shifted (0,.5) xscaled 2}
+%
+% \simpleMPclip {urtriangle} {urtriangle scaled 2 shifted (0,0)}
+% \simpleMPclip {ultriangle} {ultriangle scaled 2 shifted (1,0)}
+% \simpleMPclip {lltriangle} {lltriangle scaled 2 shifted (1,1)}
+% \simpleMPclip {lrtriangle} {lrtriangle scaled 2 shifted (0,1)}
+
+%D \in {Figure} [fig:clipping paths] shows which paths are
+%D predefined. When applied to a whole picture, their usage
+%D is:
+%D
+%D \starttyping
+%D \clip[nx=1,ny=1,mp=ellipse]{some clippable content}
+%D \stoptyping
+%D
+%D \startbuffer
+%D \setupclipping [nx=1,ny=1,x=1,y=1]
+%D \setupblackrules[width=2cm,height=1cm]
+%D \startcombination[6*3] % \startcombination[6*3]
+%D {\clip[mp=urellipse] {\blackrule}} {urellipse}
+%D {\clip[mp=ulellipse] {\blackrule}} {ulellipse}
+%D {\clip[mp=llellipse] {\blackrule}} {llellipse}
+%D {\clip[mp=lrellipse] {\blackrule}} {lrellipse}
+%D {\clip[mp=ellipse] {\blackrule}} {ellipse}
+%D {\clip[mp=negellipse]{\blackrule}} {negellipse}
+%D {\clip[mp=tellipse] {\blackrule}} {tellipse}
+%D {\clip[mp=bellipse] {\blackrule}} {bellipse}
+%D {\clip[mp=lellipse] {\blackrule}} {lellipse}
+%D {\clip[mp=rellipse] {\blackrule}} {rellipse}
+%D {} {}
+%D {} {}
+%D {\clip[mp=urtriangle]{\blackrule}} {urtriangle}
+%D {\clip[mp=ultriangle]{\blackrule}} {ultriangle}
+%D {\clip[mp=lltriangle]{\blackrule}} {lltriangle}
+%D {\clip[mp=lrtriangle]{\blackrule}} {lrtriangle}
+%D {\clip[mp=diamond] {\blackrule}} {diamond}
+%D {\clip[mp=negdiamond]{\blackrule}} {negdiamond}
+%D \stopcombination % \stopcombination
+%D \stopbuffer
+%D
+%D \placefigure % \placefigure
+%D [here][fig:clipping paths]
+%D {The predefined clipping paths.}
+%D {\getbuffer} % {\getbuffer}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-dum.tex b/Master/texmf-dist/tex/context/base/meta-dum.tex
new file mode 100644
index 00000000000..47c5504773c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-dum.tex
@@ -0,0 +1,119 @@
+%D \module
+%D [ file=meta-dum,
+%D version=2003.03.21,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Dummy (External) Graphics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D This library overloads the normal external figure
+%D placeholder by a nicer one.
+%D
+%D \startbuffer
+%D \useMPlibrary[dum]
+%D
+%D \startlinecorrection
+%D \externalfigure[unknown-a][width=3cm,height=1cm]
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \externalfigure[unknown-b][width=4cm,height=5cm]
+%D \stoplinecorrection
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+% currently preparempvariables is unable to resolve number
+% fractions like reduction
+
+% June 22, 2003, this definition was patched to adapt itself
+% to transparent colors
+
+\startuseMPgraphic{placeholder}{width,height,color}
+ numeric w, h, d, r ; color c, b, cc ; path p ; boolean t ;
+ t := is_transparent(\MPvar{color}) ;
+ c := not_transparent(\MPvar{color}) ;
+ b := not_transparent(white) ;
+ w := \MPvar{width} ;
+ h := \MPvar{height} ;
+ r := \MPvar{reduction} ;
+ d := max(w,h) ;
+ p := unitsquare xyscaled (w,h) ;
+ cc := r[.5c,b] ;
+ fill p withcolor if t : transparent(1,.5,cc) else : cc fi ;
+ for i := 1 upto 60 :
+ cc := r[c randomized(.3,.9),b] ;
+ fill fullcircle
+ scaled (d/5 randomized (d/5))
+ shifted (center p randomized (d))
+ withcolor if t : transparent(1,.5,cc) else : cc fi ;
+ endfor ;
+ clip currentpicture to p ;
+\stopuseMPgraphic
+
+\definepalet
+ [placeholder]
+ [1=red,2=green,3=blue,4=cyan,5=magenta,6=yellow]
+
+% \newcounter \figurereplacementcycle
+
+\let\figurereplacementcycle\relax
+
+\setupexternalfigures
+ [\c!reduction=0,
+ \c!text=\v!yes]
+
+\def\externalfigurereplacement#1#2#3%
+ {\getpaletsize[placeholder]%
+ \ifx\figurereplacementcycle\relax
+ \getrandomnumber \figurereplacementcycle \!!plusone \paletsize
+ \globallet \figurereplacementcycle \figurereplacementcycle
+ \else
+ \doglobal\increment\figurereplacementcycle
+ \fi
+ \ifnum\figurereplacementcycle>\paletsize
+ \globallet\figurereplacementcycle\!!plusone
+ \fi
+ \weightGRAYfalse % monochrome anyway
+ \defineoverlay
+ [\s!dummy]
+ [\useMPgraphic
+ {placeholder}%
+ {width=\figurewidth,
+ height=\figureheight,
+ reduction=\@@efreduction,
+ color=placeholder:\figurereplacementcycle}]%
+ \expanded{\localframed
+ [\??ef]
+ [\c!width=\figurewidth,
+ \c!height=\figureheight,
+ \c!frame=\v!off,
+ \c!strut=\v!no,
+ \c!background=\s!dummy,
+ \c!foregroundcolor=\s!white]}%
+ {\doif\@@eftext\v!yes
+ {\infofont \setupinterlinespace \dohyphens % \nohyphens
+ \doifelse{#1}\s!dummy \!!doneafalse\!!doneatrue
+ \doifelse{#2}\s!dummy \!!donebfalse\!!donebtrue
+ \doifelse{#3}\s!unknown\!!donecfalse\!!donectrue
+ \if!!donea
+ name: \expanded{\verbatimstring{#1}}\strut\endgraf
+ \fi
+ \if!!doneb
+ \if!!donea file: \else \if!!donec file: \fi \fi
+ \expanded{\verbatimstring{#2}}\strut\endgraf
+ \fi
+ \if!!donec
+ state: \expanded{\verbatimstring{#3}}\strut\endgraf
+ \fi}}}
+
+\def\dummyfigure{\externalfigure[placeholder]}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-fig.tex b/Master/texmf-dist/tex/context/base/meta-fig.tex
new file mode 100644
index 00000000000..9a46b80d43a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-fig.tex
@@ -0,0 +1,84 @@
+%D \module
+%D [ file=meta-fig,
+%D version=2000.09.07,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Stand Alone Graphics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{MetaPost Graphics / Stand Alone Graphics}
+
+\unprotect
+
+%D This module implements a method for defining
+%D stand||alone||graphics, that is, each graphic gets is own
+%D page. Because graphics are wrapped in a \type {\framed},
+%D you can add overlays to the graphic directly, and since the
+%D whole \CONTEXT\ machinery is available, you can also add
+%D page backgrounds.
+%D
+%D \starttyping
+%D \setupMPpage
+%D [offset=1pt,
+%D background=color,
+%D backgroundcolor=green]
+%D
+%D \startMPpage
+%D fill fullcircle scaled 10cm withcolor red ;
+%D \stopMPpage
+%D
+%D \startMPpage
+%D fill fullsquare rotated 45 scaled 8cm withcolor blue ;
+%D \stopMPpage
+%D \stoptyping
+%D
+%D Although this is hardly of any use, you can mix these
+%D definitions with the text flow, since all settings are
+%D kept local. The page is clipped to the image size.
+
+\presetlocalframed[\??mg]
+
+\def\setupMPpage
+ {\dodoubleargument\getparameters[\??mg]}
+
+\def\startMPpage
+ {\dodoubleempty\dostartMPpage}
+
+\long\def\dostartMPpage[#1][#2]#3\stopMPpage % second arg gobbles space
+ {\dostartfittingpage[\??mg][#1]%
+ \startMPcode#3\stopMPcode
+ \dostopfittingpage}
+
+\setupMPpage
+ [\c!scale=1000,
+ \c!strut=\v!no,
+ \c!align=,
+ \c!offset=\v!overlay,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!frame=\v!off]
+
+%D \macros
+%D {MPfigure}
+%D
+%D A bit out of place, here but nevertheless:
+
+\def\MPfigure#1#2% test for dup figure
+ {\bgroup
+ \getfiguredimensionsonly[#1]% [\c!object=\v!no] already set
+ \freezedimenmacro\naturalfigurewidth
+ \freezedimenmacro\naturalfigureheight
+ \startMPcode
+ externalfigure "#1"
+ xscaled \naturalfigurewidth\space
+ yscaled \naturalfigureheight\space
+ #2 ;
+ \stopMPcode
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-ini.tex b/Master/texmf-dist/tex/context/base/meta-ini.tex
new file mode 100644
index 00000000000..d628e5e6c43
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-ini.tex
@@ -0,0 +1,970 @@
+%D \module
+%D [ file=meta-ini,
+%D version=1999.07.10,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% currently the running color influences the mp graphic in
+% pdftex, but this will change [i.e. become optional]; one
+% problem is that pdf has no grouping with regards to the
+% color
+
+\writestatus{loading}{MetaPost Graphics / Initializations}
+
+\unprotect
+
+\startmessages dutch library: metapost
+ title: metapost
+ 1: metapost bibliotheek -- wordt geladen
+\stopmessages
+
+\startmessages english library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages german library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages czech library: metapost
+ title: metapost
+ 1: loading metapost library --
+\stopmessages
+
+\startmessages italian library: metapost
+ title: metapost
+ 1: caricamento della libreria metapost --
+\stopmessages
+
+\startmessages norwegian library: metapost
+ title: metapost
+ 1: metapost bibliotek -- blir lest inn
+\stopmessages
+
+\startmessages romanian library: metapost
+ title: metapost
+ 1: se incarca biblioteca metapost --
+\stopmessages
+
+%D This module extends the functionality of the support module
+%D \type {supp-mps}, the module that is responsible for
+%D \METAPOST\ inclusion in \CONTEXT. Some basic macros will be
+%D extended. Since some support is depends on \METAPOST\
+%D macros. so let's first preload a few auxiliary \METAPOST\
+%D files.
+
+\maxnofMPgraphics = 4000 % metafun disables the 4K boundary
+
+\appendtoks
+ if unknown context_tool: input mp-tool; fi;
+ if unknown context_spec: input mp-spec; fi;
+ if unknown context_grph: input mp-grph; fi;
+\to \MPextensions
+
+%D Since we want lables to follow the document settings, we
+%D also set the font related variables.
+
+\appendtoks % scale is not yet ok
+ defaultfont:="\truefontname{Regular}";
+ defaultscale:=\the\bodyfontsize/10pt;
+\to \MPinitializations
+
+%D In order to support fancy text features (like outline
+%D fonts), we set:
+
+\appendtoks
+ graphictextformat:="context";
+ graphictextdirective "\the\everyMPTEXgraphic";
+\to \MPextensions
+
+% \appendtoks
+% textextdirective "\the\everyMPTEXgraphic";
+% \to \MPextensions
+
+%D A signal that we're in combines \CONTEXT||\METAFUN mode:
+
+\appendtoks
+ string contextversion;
+ contextversion:="\contextversion";
+\to \MPextensions
+
+%D Some safeguards:
+
+\appendtoks \cleanupfeatures \to \everyMPgraphic
+
+%D Another one:
+
+\prependtoks \MPstaticgraphictrue \to \everyoverlay
+\prependtoks \MPstaticgraphictrue \to \everypagebody
+
+%D We save the number of graphics for the sake of \TEXEXEC.
+
+\newcounter\totalnofMPgraphics
+
+\def\thenofMPgraphics{\the\nofMPgraphics} % from supp-mps
+
+\appendtoks
+ \savecurrentvalue\totalnofMPgraphics\thenofMPgraphics
+\to \everybye
+
+%D \macros
+%D {setupMPvariables}
+%D
+%D When we build collections of \METAPOST\ graphics, like
+%D background and buttons, the need for passing settings
+%D arises. By (mis|)|using the local prefix that belongs to
+%D \type {\framed}, we get a rather natural interface to
+%D backgrounds. To prevent conflicts, we will use the \type
+%D {-} in \METAPOST\ specific variables, like:
+%D
+%D \starttyping
+%D \setupMPvariables[meta:button][size=20pt]
+%D \stoptyping
+
+\def\@@meta{meta:}
+
+\def\setupMPvariables
+ {\dodoubleempty\dosetupMPvariables}
+
+\def\dosetupMPvariables[#1][#2]%
+ {\ifsecondargument
+ \getrawparameters[#1:][#2]% brr, todo: [\@@meta#1:]
+ \else
+ \getrawparameters[\@@meta][#1]%
+ \fi}
+
+\let\@@framed\s!unknown
+
+% \def\MPvariable#1%
+% {\getvalue{\ifundefined{\@@framed\@@meta#1}\else\@@framed\fi\@@meta#1}}
+
+\beginTEX
+
+\def\MPvariable#1%
+ {\csname
+ \@EA\ifx\csname\@@framed\@@meta#1\endcsname\relax\else\@@framed\fi\@@meta#1%
+ \endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\MPvariable#1%
+ {\csname
+ \ifcsname\@@framed\@@meta#1\endcsname\@@framed\fi\@@meta#1%
+ \endcsname}
+
+\endETEX
+
+\let\MPvar\MPvariable
+
+\let\setMPvariables\setupMPvariables
+
+\def\MPrawvar#1#2{\csname#1:#2\endcsname}
+
+%D \macros
+%D {startuniqueMPgraphic, uniqueMPgraphic}
+%D
+%D This macros is probably of most use to myself, since I like
+%D to use graphics that adapt themselves. The next \METAPOST\
+%D kind of graphic is both unique and reused when possible.
+%D
+%D \starttyping
+%D \defineoverlay[example][\uniqueMPgraphic{test}]
+%D
+%D \startuniqueMPgraphic {test}
+%D draw unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+%D \stopuniqueMPgraphic
+%D \stoptyping
+
+%D For educational purposes, we show the original version
+%D first. This one used a rather simple method for determining
+%D the uniqueness.
+%D
+%D \starttyping
+%D \long\def\startuniqueMPgraphic#1#2\stopuniqueMPgraphic%
+%D {\setvalue{\@@MPG#1}%
+%D {\startreusableMPgraphic{\overlaystamp:#1}#2\stopreusableMPgraphic
+%D \reuseMPgraphic{\overlaystamp:#1}}}
+%D
+%D \def\uniqueMPgraphic#1%
+%D {\getvalue{\@@MPG#1}}
+%D \stoptyping
+
+%\def\overlaystamp % watch the \MPcolor, since colors can be redefined
+% {\overlaywidth:\overlayheight:\overlaydepth
+% :\MPcolor{\overlaycolor}:\MPcolor{\overlaylinecolor}}
+
+\def\overlaystamp % watch the \MPcolor, since colors can be redefined
+ {\overlaywidth:\overlayheight:\overlaydepth
+ :\MPcolor\overlaycolor:\MPcolor\overlaylinecolor}
+
+%D A better approach is to let additional variables play a role
+%D in determining the uniqueness. In the next macro, the
+%D second, optional, argument is used to guarantee the
+%D uniqueness, as well as prepare variables for passing them to
+%D \METAPOST.
+%D
+%D \starttyping
+%D \startuniqueMPgraphic{meta:hash}{gap,angle,...}
+%D \stoptyping
+%D
+%D The calling macro also accepts a second argument. For
+%D convenient use in overlay definitions, we use \type {{}}
+%D instead of \type {[]}.
+%D
+%D \starttyping
+%D \uniqueMPgraphic{meta:hash}{gap=10pt,angle=30}
+%D \stoptyping
+
+\long\def\handleuniqueMPgraphic#1#2#3%
+ {\blabelgroup
+ \def\@@meta{#1:}%
+ \extendMPoverlaystamp{#2}% incl prepare
+ \ifundefined{\@@MPG\overlaystamp:#1}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \doifobjectssupportedelse\donothing\useMPboxfalse
+ \ifuseMPbox
+ \@EA\douseMPbox
+ \else
+ \@EA\nouseMPbox
+ \fi {\@@MPG\overlaystamp:#1}%
+ \fi
+ \getvalue{\@@MPG\overlaystamp:#1}%
+ \elabelgroup}
+
+\long\def\startuniqueMPgraphic
+ {\dodoublegroupempty\dostartuniqueMPgraphic}
+
+\long\def\dostartuniqueMPgraphic#1#2#3\stopuniqueMPgraphic%
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handleuniqueMPgraphic{#1}{#2}{#3}}%
+ \elabelgroup}
+
+\unexpanded\def\uniqueMPgraphic
+ {\dodoublegroupempty\douniqueMPgraphic}
+
+\def\douniqueMPgraphic#1#2%
+ {\blabelgroup
+ \setupMPvariables[#1][#2]%
+ \getvalue{\@@MPG#1}{}%
+ \elabelgroup}
+
+\long\def\handleuseMPgraphic#1#2#3%
+ {\blabelgroup
+ \def\@@meta{#1:}%
+ \prepareMPvariables{#2}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \ifMPrun \else % see mfun-004 : processing buffer
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \placeMPgraphic
+ \fi
+ \deallocateMPslot\currentMPgraphic
+ \elabelgroup}
+
+\long\def\startuseMPgraphic
+ {\dodoublegroupempty\dostartuseMPgraphic}
+
+\long\def\dostartuseMPgraphic#1#2#3\stopuseMPgraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
+ \elabelgroup}
+
+\long\def\startusableMPgraphic % redundant but handy
+ {\dodoublegroupempty\dostartusableMPgraphic}
+
+\long\def\dostartusableMPgraphic#1#2#3\stopusableMPgraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
+ \elabelgroup}
+
+\long\def\handlereusableMPgraphic#1#2#3%
+ {\blabelgroup
+ \def\@@meta{#1:}%
+ \prepareMPvariables{#2}%
+ \enableincludeMPgraphics
+ \startMPgraphic#3\stopMPgraphic
+ \doifobjectssupportedelse\donothing\useMPboxfalse
+ \ifuseMPbox
+ \@EA\douseMPbox
+ \else
+ \@EA\nouseMPbox
+ \fi {\@@MPG#1}%
+ \getvalue{\@@MPG#1}%
+ \elabelgroup}
+
+\long\def\startreusableMPgraphic
+ {\dodoublegroupempty\dostartreusableMPgraphic}
+
+% \long\def\dostartreusableMPgraphic#1#2#3\stopreusableMPgraphic%
+% {\ifundefined{\@@MPG#1}%
+% \long\setgvalue{\@@MPG#1}{\handlereusableMPgraphic{#1}{#2}{#3}}%
+% \fi}
+
+\long\def\dostartreusableMPgraphic#1#2#3\stopreusableMPgraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handlereusableMPgraphic{#1}{#2}{#3}}%
+ \elabelgroup}
+
+\unexpanded\def\useMPgraphic
+ {\dodoublegroupempty\douseMPgraphic}
+
+\def\douseMPgraphic#1#2%
+ {\blabelgroup
+ \setupMPvariables[#1][#2]%
+ \getvalue{\@@MPG#1}{}%
+ \elabelgroup}
+
+\let\reuseMPgraphic\useMPgraphic
+
+\def\enableincludeMPgraphics
+ {\let\handleuseMPgraphic \thirdofthreearguments
+ \let\handlereusableMPgraphic\thirdofthreearguments}
+
+% todo: each code/page/buffer a var class
+
+%D \macros
+%D {startuniqueMPpagegraphic,uniqueMPpagegraphic}
+%D
+%D Experimental.
+
+\def\MPpageprefix{\doifoddpageelse oe:}
+
+\def\overlaypagestamp
+ {\MPpageprefix\overlaywidth:\overlayheight:\overlaydepth
+ :\MPcolor\overlaycolor:\MPcolor\overlaylinecolor}
+
+\long\def\startuniqueMPpagegraphic
+ {\dodoublegroupempty\dostartuniqueMPpagegraphic}
+
+\long\def\dostartuniqueMPpagegraphic#1#2#3\stopuniqueMPpagegraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG o:#1}{\handleuniqueMPgraphic{o:#1}{#2}{#3}}%
+ \long\setgvalue{\@@MPG e:#1}{\handleuniqueMPgraphic{e:#1}{#2}{#3}}%
+ \elabelgroup}
+
+\unexpanded\def\uniqueMPpagegraphic
+ {\dodoublegroupempty\douniqueMPpagegraphic}
+
+% \def\douniqueMPpagegraphic#1#2%
+% {\blabelgroup
+% \let\overlaystamp\overlaypagestamp
+% \setupMPvariables[#1][#2]%
+% \getvalue{\@@MPG\MPpageprefix#1}{}%
+% \elabelgroup}
+
+\def\douniqueMPpagegraphic#1#2%
+ {\blabelgroup
+ \let\overlaystamp\overlaypagestamp
+ \setupMPvariables[\MPpageprefix#1][#2]% prefix is new here
+ \getvalue{\@@MPG\MPpageprefix#1}{}%
+ \elabelgroup}
+
+%D One way of defining a stamp is:
+%D
+%D \starttyping
+%D \def\extendMPoverlaystamp#1%
+%D {\def\docommando##1%
+%D {\edef\overlaystamp{\overlaystamp:\MPvariable{##1}}}%
+%D \processcommalist[#1]\docommando}
+%D \stoptyping
+
+%D Since we need to feed \METAPOST\ with expanded dimensions,
+%D we introduce a dedicated expansion engine.
+
+\def\prepareMPvariable#1%
+ {\ifundefined{\@@framed\@@meta#1}%
+ \doprepareMPvariable{\@@meta#1}%
+ \else
+ \doprepareMPvariable{\@@framed\@@meta#1}%
+ \fi}
+
+% \startlines
+% \def\xxx{\lineheight} \doprepareMPvariable{xxx} \xxx
+% \def\xxx{2pt} \doprepareMPvariable{xxx} \xxx
+% \def\xxx{2} \doprepareMPvariable{xxx} \xxx
+% \def\xxx{\scratchcounter} \doprepareMPvariable{xxx} \xxx
+% \def\xxx{red} \doprepareMPvariable{xxx} \xxx
+% \def\xxx{0.4} \doprepareMPvariable{xxx} \xxx
+% \stoplines
+
+\def\doprepareMPvariable#1%
+ {\edef\theMPvariable{\getvalue{#1}}%
+ \doifelsenothing\theMPvariable
+ {\setevalue{#1}{\MPcolor{black}}}
+ {\convertcommand\theMPvariable\to\ascii % otherwise problems
+ \doifcolorelse \ascii % with 2\bodyfontsize
+ {\setevalue{#1}{\MPcolor\theMPvariable}}
+ {% can be aux macro
+ \setbox\scratchbox\hbox{\scratchdimen\theMPvariable sp}%
+ \ifdim\wd\scratchbox=\zeropoint
+ % \scratchcounter\theMPvariable
+ % \setevalue{#1}{\the\scratchcounter}%
+ % also accepts 0.number :
+ \setevalue{#1}{\number\theMPvariable}%
+ \else
+ \scratchdimen\theMPvariable
+ \setevalue{#1}{\the\scratchdimen}%
+ \fi}}}
+
+%D We redefine \type {\extendMPoverlaystamp} to preprocess
+%D variables using \type {\prepareMPvariable}.
+
+\def\doextendMPoverlaystamp#1%
+ {\prepareMPvariable{#1}%
+ \edef\overlaystamp{\overlaystamp:\MPvariable{#1}}}
+
+\def\extendMPoverlaystamp#1%
+ {\processcommalist[#1]\doextendMPoverlaystamp}
+
+\def\prepareMPvariables#1%
+ {\processcommalist[#1]\prepareMPvariable}
+
+%D \macros
+%D {MPdatafile}
+%D
+%D We redefine a macro from \type {supp-mps.tex}:
+
+\def\MPdatafile
+ {\bufferprefix mpd-\the\currentMPgraphic.mpd}
+
+%D \macros
+%D {MPrunfile}
+%D
+%D This one is more abstract and does not assume knowledge
+%D of buffer prefixes.
+
+\def\MPrunfile#1%
+ {\bufferprefix mprun.#1}
+
+%D We also have to make sure that \METAPOST\ knows this:
+
+\appendtoks
+ if not known _data_prefix_:
+ string _data_prefix_,_data_suffix_;
+ fi;
+ _data_prefix_:="\bufferprefix mpd-";
+ _data_suffix_:=".mpd";
+\to \MPextensions
+
+%D \macros
+%D {getMPdata}
+%D
+%D The current data is loaded with:
+
+\def\getMPdata
+ {\startreadingfile
+ \readlocfile\MPdatafile\donothing\donothing
+ \stopreadingfile}
+
+%D When we collect graphics in one file, we run into
+%D troubles, since \METAPOST\ has a built in limit (of 4)
+%D on the number of files it can handle. It's therefore
+%D better to collect all data in one file and filter it.
+
+\def\getMPdata
+ {\long\def\MPdata##1##2%
+ {\ifnum##1=\currentMPgraphic\relax##2\fi}%
+ \startreadingfile
+ \readlocfile{\MPgraphicfile.mpd}\donothing\donothing
+ \stopreadingfile}
+
+%D We have to enable this mechanism with:
+
+\appendtoks
+ boolean collapse_data; collapse_data:=true;
+ _data_suffix_:=".mpd"; % overloads previous one
+\to \MPextensions
+
+%D For the moment, the next one is a private macro:
+
+\def\processMPbuffer
+ {\dosingleempty\doprocessMPbuffer}
+
+\def\doprocessMPbuffer[#1]%
+ {\doifelsenothing{#1}
+ {\doprocessMPbuffer[\jobname]}
+ {\bgroup
+ \setnormalcatcodes
+ %\let\par\empty % oeps, this makes dvi mode graphics hang when not found
+ \!!toksa\emptytoks
+ \def\copyMPbufferline{\expandafter\appendtoks\fileline\to\!!toksa}%
+ \def\dodoprocessMPbuffer##1%
+ {\doprocessfile\scratchread{\TEXbufferfile{##1}}\copyMPbufferline}%
+ \processcommalist[#1]\dodoprocessMPbuffer
+ \@EA\startMPcode\the\!!toksa\stopMPcode % more efficient
+ \egroup}}
+
+\def\runMPbuffer
+ {\dosingleempty\dorunMPbuffer}
+
+\def\dorunMPbuffer[#1]% processing only
+ {{\MPruntrue\doprocessMPbuffer[#1]}}
+
+%D \macros
+%D {startMPenvironment, resetMPenvironment}
+%D
+%D In order to synchronize the main \TEX\ run and the runs
+%D local to \METAPOST, environments can be passed.
+
+\ifx\everyMPTEXgraphic\undefined
+ \newtoks\everyMPTEXgraphic
+\fi
+
+%D A more general way of passing environments is:
+
+% ok but introduces \relax's
+%
+% \def\startMPenvironment % second arg gobbles spaces, so
+% {\dodoubleempty\dostartMPenvironment} % that reset gives \emptytoks
+%
+% \long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment%
+% {\doif{#1}\s!reset\resetMPenvironment % reset mp toks
+% \doif{#1}\v!globaal{#3}% % use in main doc too
+% \doif{#1}+{#3}% % use in main doc too
+% \convertargument#3\to\ascii
+% \expandafter\appendtoks\ascii\to\everyMPTEXgraphic}
+
+\def\startMPenvironment % second arg gobbles spaces, so that reset gives \emptytoks
+ {\bgroup
+ \catcode`\^^M=\@@space
+ \dodoubleempty\dostartMPenvironment}
+
+\long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment
+ {\egroup
+ \doif{#1}\s!reset\resetMPenvironment % reset mp toks
+ \doif{#1}\v!global{#3}% % use in main doc too
+ \doif{#1}+{#3}% % use in main doc too
+ \convertargument#3\to\ascii
+ \expandafter\appendtoks\ascii\to\everyMPTEXgraphic}
+
+\def\resetMPenvironment
+ {\everyMPTEXgraphic\emptytoks % = is really needed !
+ \startMPenvironment
+ \global\loadfontfileoncetrue
+ \stopMPenvironment}
+
+\resetMPenvironment
+
+%D This command takes \type {[reset]} as optional
+%D argument.
+%D
+%D \starttyping
+%D \startMPenvironment
+%D \setupbodyfont[pos,14.4pt]
+%D \stopMPenvironment
+%D
+%D \startMPcode
+%D draw btex \sl Hans Hagen etex scaled 5 ;
+%D \stopMPcode
+%D \stoptyping
+%D
+%D The \type {\resetMPenvironment} is a quick way to erase
+%D the token list.
+%D
+%D You should be aware of independencies. For instance, if you use a font
+%D in a graphic that is not used in the main document, you need to load the
+%D typescript at the outer level (either directly or by using the global
+%D option).
+%D
+%D \starttyping
+%D \usetypescript[palatino][texnansi]
+%D
+%D \startMPenvironment
+%D \usetypescript[palatino][texnansi]
+%D \enableregime[utf]
+%D \setupbodyfont[palatino]
+%D \stopMPenvironment
+%D
+%D \startMPpage
+%D draw btex aap‒noot coördinatie – één etex ;
+%D \stopMPpage
+%D \stoptyping
+
+%D We don't want spurious files, do we?
+
+%\def\initializeMPgraphics
+% {%\ifx\bufferprefix\empty \else
+% \immediate\openout\MPwrite\MPgraphicfile.mp
+% \immediate\write\MPwrite{end.}%
+% \immediate\closeout\MPwrite
+% }%\fi}
+
+% strange :
+
+% \def\initializeMPgraphicfile
+% {\bgroup
+% \doinitializeMPgraphicfile
+% \MPruntrue
+% \doinitializeMPgraphicfile
+% \egroup}
+
+% \def\doinitializeMPgraphicfile
+% {\immediate\openout\scratchwrite\MPgraphicfile.mp
+% \immediate\write\scratchwrite{end.}%
+% \immediate\closeout\scratchwrite}
+
+\def\initializeMPgraphicfile
+ {\immediate\openout\scratchwrite\MPgraphicfile.mp
+ \immediate\write\scratchwrite{end.}%
+ \immediate\closeout\scratchwrite}
+
+\def\initializeMPgraphics
+ {\bgroup
+ \initializeMPgraphicfile
+ \ifx\bufferprefix\empty\else
+ \let\bufferprefix\empty
+ \initializeMPgraphicfile
+ \fi
+ \egroup}
+
+%D Loading specific \METAPOST\ related definitions is
+%D accomplished by:
+
+\def\douseMPlibrary#1%
+ {\ifundefined{\c!file\f!javascriptprefix#1}%
+ \letvalueempty{\c!file\f!javascriptprefix#1}%
+ \makeshortfilename[\f!metapostprefix#1]
+ \showmessage\m!metapost1{#1}
+ \startreadingfile
+ \readsysfile\shortfilename\donothing\donothing
+ \stopreadingfile
+ \fi}
+
+\def\useMPlibrary[#1]%
+ {\processcommalist[#1]\douseMPlibrary}
+
+%D \macros
+%D {setMPtext, MPtext, MPstring, MPbetex}
+%D
+%D To be documented:
+%D
+%D \starttyping
+%D \setMPtext{identifier}{text}
+%D
+%D \MPtext {identifier}
+%D \MPstring{identifier}
+%D \MPbetex {identifier}
+%D \stoptyping
+
+\def\@@MPT{@MPT@}
+
+\def\forceMPTEXgraphic
+ {\long\def\checkMPTEXgraphic##1{\global\MPTEXgraphictrue}}
+
+\def\setMPtext#1#2% todo : #1 must be made : safe
+ {%\forceMPTEXgraphic
+ \convertargument#2\to\ascii
+ \dodoglobal\letvalue{\@@MPT#1}\ascii}
+
+\def\MPtext #1{\getvalue{\@@MPT#1}}
+\def\MPstring #1{"\getvalue{\@@MPT#1}"}
+\def\MPbetex #1{btex \getvalue{\@@MPT#1} etex}
+
+%D Unfortunately \METAPOST\ does not have \CMYK\ support
+%D built in, but by means of specials we can supply the
+%D information needed to handle them naturaly.
+
+\newif\ifMPcmykcolors \MPcmykcolorstrue
+\newif\ifMPspotcolors \MPspotcolorstrue
+
+\appendtoks
+ cmykcolors:=\ifMPcmykcolors true\else false\fi;
+ spotcolors:=\ifMPspotcolors true\else false\fi;
+\to \MPinitializations
+
+%D In order to communicate conveniently with the \TEX\
+%D engine, we introduce some typesetting variables.
+
+% todo : backgroundoffsets
+
+\appendtoks
+ color OverlayColor,OverlayLineColor;
+\to \MPextensions
+
+\appendtoks
+ OverlayWidth:=\overlaywidth;
+ OverlayHeight:=\overlayheight;
+ OverlayDepth:=\overlayheight;
+ OverlayColor:=\MPcolor{\overlaycolor};
+ OverlayLineWidth:=\overlaylinewidth;
+ OverlayLineColor:=\MPcolor{\overlaylinecolor};
+ %
+ BaseLineSkip:=\the\baselineskip;
+ LineHeight:=\the\baselineskip;
+ BodyFontSize:=\the\bodyfontsize;
+ %
+ TopSkip:=\the\topskip;
+ StrutHeight:=\strutheight;
+ StrutDepth:=\strutdepth;
+ %
+ CurrentWidth:=\the\hsize;
+ CurrentHeight:=\the\vsize;
+ %
+ EmWidth:=\the\fontdimen6\font;
+ ExHeight:=\the\fontdimen5\font;
+ %
+ PageNumber:=\the\pageno;
+ RealPageNumber:=\the\realpageno;
+ LastPageNumber:= lastpage;
+\to \MPinitializations
+
+\appendtoks
+ \baselineskip1\baselineskip
+ \lineheight 1\lineheight
+ \topskip 1\topskip
+\to \everyMPgraphic
+
+% this will become (more efficient)
+%
+% \startuseMPgraphic{init data}
+% tx1 := \the\baselineskip ;
+% tx2 := \the\baselineskip ;
+% tx3 := \the\bodyfontsize ;
+% tx4 := \strutheight ;
+% tx5 := \strutdepth ;
+% tx6 := \the\hsize ;
+% tx7 := \the\vsize ;
+% tx8 := \the\fontdimen6\font ;
+% tx9 := \the\fontdimen5\font ;
+% \stopuseMPgraphic
+%
+% def map_tx_variables =
+% BaseLineSkip := tx1 ;
+% LineHeight := tx2 ;
+% BodyFontSize := tx3 ;
+% StrutHeight := tx4 ;
+% StrutDepth := tx5 ;
+% CurrentWidth := tx6 ;
+% Currentheight := tx7 ;
+% EmWidth := tx8 ;
+% ExHeight := tx9 ;
+% enddef ;
+%
+% extra_begin_fig ....
+
+%D Alas, the prologue settings differ per driver.
+
+\ifx\undefined\MPprologues \def\MPprologues{0} \fi
+
+\appendtoks
+ prologues:=\MPprologues;
+\to \MPinitializations
+
+\appendtoks
+ \def\MPprologues{0}%
+ \def\MPOSTdriver{dvips}%
+\to \everyresetspecials
+
+%D \macros
+%D {PDFMPformoffset}
+%D
+%D In \PDF, forms are clipped and therefore we have to take
+%D precautions to get this right. Since this is related to
+%D objects, we use the same offset as used there.
+
+\def\PDFMPformoffset{\objectoffset}
+
+%D \macros
+%D {insertMPfile}
+%D
+%D Bypassing the special driver and figure mechanism is not
+%D that nice but saves upto 5\% time in embedding \METAPOST\
+%D graphics by using the low level \PDF\ converter directly,
+%D given of course that we use \PDFTEX. As a result we need to
+%D fool around with the object trigger.
+
+\newtoks\everyinsertMPfile
+
+%D First we present the reasonable fast alternative that we
+%D happily used for some time.
+%D
+%D \starttyping
+%D \def\insertMPfile#1#2%
+%D {\ifx\undefined\externalfigure
+%D \message{[insert file #1 here]}%
+%D \else
+%D \bgroup
+%D \the\everyinsertMPfile
+%D \externalfigure
+%D [#1]
+%D [\c!type=\c!mps,\c!object=\v!no,%
+%D \c!symbol=\v!yes,\c!reset=\v!yes,%
+%D \c!maxwidth=,\c!maxheight=,%
+%D \c!frame=\v!off,\c!background=,%
+%D #2]%
+%D \egroup
+%D \fi}
+%D \stoptyping
+%D
+%D However, on a 1 Gig Pentium, the next alternative saves
+%D us 20 seconds run time for the 300 page \METAFUN\ manual:
+
+\def\insertMPfile#1#2{\doinsertMPfile{#1}}
+
+\def\includeMPasEPS#1%
+ {\bgroup
+ \message{[MP as EPS #1]}%
+ \the\everyinsertMPfile
+ \dogetEPSboundingbox{#1}\!!widtha\!!heighta\!!widthb\!!heightb
+ \setbox\scratchbox\vbox to \!!heightb
+ {\vfill
+ \doinsertfile
+ {\c!mps,\c!mps}{#1,\empty}{100}{100}%
+ \!!widtha\!!heighta\!!widthb\!!heightb\zerocount}%
+ \wd\scratchbox\!!widthb
+ \dp\scratchbox\zeropoint
+ \box\scratchbox
+ \egroup}
+
+\def\includeMPasPDF#1%
+ {\bgroup
+ \the\everyinsertMPfile
+ \ifinobject \else \chardef\makeMPintoPDFobject\plustwo \fi % when needed
+ \convertMPtoPDF{#1}{1}{1}% no \plusone !
+ \egroup}
+
+%D So, using a low level approach (thereby avoiding the slower
+%D figure analysis macros) pays off. This kind of
+%D optimizations are a bit tricky since we must make sure that
+%D special resources end up in the (PDF) files. Because the
+%D \METAPOST\ to \PDF\ can handle objects itself, it is not
+%D that complicated.
+
+%D We hook a couple of initializations into the graphic
+%D macros.
+
+\appendtoks
+ \let\figuretypes\c!mps
+ \runutilityfilefalse
+ \consultutilityfilefalse
+\to \everyinsertMPfile
+
+%D One more: (still needed?)
+
+\appendtoks
+ def initialize_form_numbers =
+ do_initialize_numbers;
+ enddef;
+\to \MPextensions
+
+\appendtoks
+ HSize:=\the\hsize ;
+ VSize:=\the\vsize ;
+\to \MPinitializations
+
+\appendtoks
+ vardef ForegroundBox =
+ unitsquare xysized(HSize,VSize)
+ enddef ;
+ vardef PageFraction =
+ if \lastpage>1: (\realfolio-1)/(\lastpage-1) else: 1 fi
+ enddef ;
+\to \MPextensions
+
+%D And some more. These are not really needed since we
+%D don't use the normal figure inclusion macros any longer.
+
+\appendtoks
+ \externalfigurepostprocessors\emptytoks % safeguard
+\to \everyinsertMPfile
+
+%D We also take care of disabling fancy figure features, that
+%D can terribly interfere when dealing with symbols,
+%D background graphics and running (postponed) graphics.
+%D You won't believe me if I tell you what funny side effects
+%D can occur. One took me over a day to uncover when
+%D processing the screen version of the \METAFUN\ manual.
+
+%D For my eyes only:
+
+\def\doifelseMPgraphic#1{\doifdefinedelse{\@@MPG#1}}
+
+%D \macros
+%D {startMPcolor}
+%D
+%D The following time consuming method uses \METAPOST\ to
+%D calculate a color. This enables a match between colors
+%D resulting from a complex calculation (e.g. for a title
+%D page) and those in the text.
+
+% \startuseMPgraphic{somecolors}
+% color c[] ; c[1] := .7[red,green] ; c[2] := .7[blue,yellow] ;
+% \stopuseMPgraphic
+
+% \startMPcolor[shade-1][t=.2,a=1]
+% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[1] ;
+% \stopMPcolor
+
+% \startMPcolor[shade-2][t=.2,a=1]
+% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[2] ;
+% \stopMPcolor
+
+% \blackrule[width=\hsize,height=4cm,color=shade-1]
+% \blackrule[width=\hsize,height=4cm,color=shade-2]
+
+\def\startMPcolor
+ {\dodoubleempty\dostartMPcolor}
+
+\long\def\dostartMPcolor[#1][#2]#3\stopMPcolor % slow but sometimes handy
+ {\startnointerference
+ \def\handleMPgraycolor{\expanded{\defineglobalcolor[#1][s=\!MPgMPa1,#2]}}%
+ \def\handleMPrgbcolor {\expanded{\defineglobalcolor[#1][r=\!MPgMPa1,g=\!MPgMPa2,b=\!MPgMPa3,#2]}}%
+ \def\handleMPcmykcolor{\expanded{\defineglobalcolor[#1][c=\!MPgMPa1,m=\!MPgMPa2,y=\!MPgMPa3,k=\!MPgMPa4,#2]}}%
+ \startMPcode#3\stopMPcode
+ \stopnointerference}
+
+%D New:
+
+\definelayerpreset
+ [mp]
+ [\c!y=-\MPury bp,
+ \c!x=\MPllx bp,
+ \c!method=\v!fit]
+
+\definelayer
+ [mp]
+ [\c!preset=mp]
+
+%D Usage:
+%D
+%D \starttyping
+%D \defineproperty[one][layer][state=start]
+%D \defineproperty[two][layer][state=stop]
+%D
+%D \startuseMPgraphic{step-1}
+%D fill fullcircle scaled 10cm withcolor red ;
+%D \stopuseMPgraphic
+%D
+%D \startuseMPgraphic{step-2}
+%D fill fullcircle scaled 5cm withcolor green ;
+%D \stopuseMPgraphic
+%D
+%D \setlayer[mp]{\property[one]{\useMPgraphic{step-1}}}
+%D \setlayer[mp]{\property[two]{\useMPgraphic{step-2}}}
+%D
+%D \ruledhbox{\flushlayer[mp]}
+%D \stoptyping
+
+%D New:
+
+% \appendtoks \closeMPgraphicfiles \to \everystoptext
+
+\protect \endinput
+
+% also:
+%
+% linecap := rounded ;
+% linejoin := rounded ;
+% drawoptions () ;
diff --git a/Master/texmf-dist/tex/context/base/meta-nav.tex b/Master/texmf-dist/tex/context/base/meta-nav.tex
new file mode 100644
index 00000000000..9c1cbb4dbb4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-nav.tex
@@ -0,0 +1,65 @@
+%D \module
+%D [ file=meta-nav,
+%D version=2003.03.28,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Navigational Graphics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startuniqueMPgraphic{navplus}{size,color,type,mode}
+ color c ; numeric s, t ; path p ;
+ t := \MPvar{type} ; c := \MPvar{color} ; s := \MPvar{size} ;
+ if \MPvar{mode} = 1 : c := .5[c,white] fi ;
+ if t = 1 :
+ p := ((0,0)--(1/2,0)--(1,1/3)--(1,1)--(0,1)--(0,0)--cycle)
+ xyscaled (3,4) ;
+ elseif t = 2 :
+ p := ((0,0)--(1,0)--(1,1)--(0,1)--(1/2,2/5)--(1,1)--(0,1)--cycle)
+ xyscaled (4,3) ;
+ else :
+ p := fullsquare xyscaled (3,3) ;
+ fi ;
+ draw p withpen pencircle scaled (1/2) withcolor .75white ;
+ fill p withcolor c ;
+ draw p withpen pencircle scaled (1/3) withcolor .5c ;
+ currentpicture := currentpicture scaled s ;
+ currentpicture := currentpicture shifted -center currentpicture ;
+\stopuniqueMPgraphic
+
+\setupMPvariables
+ [navplus]
+ [size=1ex,
+ color=black,
+ type=1,
+ mode=0]
+
+\definepalet
+ [navplus]
+ [attach=darkred,
+ comment=darkblue]
+
+\definesymbol
+ [comment-normal]
+ [\uniqueMPgraphic{navplus}{type=1,color=navplus:comment}]
+\definesymbol
+ [comment-down]
+ [\uniqueMPgraphic{navplus}{type=1,color=navplus:comment,mode=1}]
+
+\definesymbol
+ [attach-normal]
+ [\uniqueMPgraphic{navplus}{type=2,color=navplus:attach}]
+\definesymbol
+ [attach-down]
+ [\uniqueMPgraphic{navplus}{type=2,color=navplus:attach,mode=1}]
+
+\unprotect
+
+\setupcomment [\c!symbol={comment-normal,comment-down}]
+\setupattachments[\c!symbol={attach-normal,attach-down}]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-pag.tex b/Master/texmf-dist/tex/context/base/meta-pag.tex
new file mode 100644
index 00000000000..32473cb7499
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-pag.tex
@@ -0,0 +1,208 @@
+%D \module
+%D [ file=meta-pag,
+%D version=1999.07.10,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These definitions used to be part of the old \type
+%D {core-mps} file, later changed into \type {meta-ini}, but
+%D keeping them separate is cleaner.
+
+\writestatus{loading}{MetaPost Graphics / Page Data Management}
+
+\unprotect
+
+\appendtoks
+ if unknown context_page: input mp-page; fi;
+\to \MPextensions
+
+%D The next few macros tell \METAPOST\ how the \CONTEXT\
+%D pagebody looks.
+
+\appendtoks
+ boolean PageStateAvailable,OnRightPage,InPageBody;
+ PageStateAvailable:=true;
+\to \MPextensions
+
+\appendtoks
+ OnRightPage:=true;
+ InPageBody:=\ifinpagebody true \else false \fi;
+\to \MPinitializations
+
+\appendtoks
+ def LoadPageState =
+ OnRightPage:=\MPonrightpage;
+ OnOddPage:=\MPonoddpage;
+ RealPageNumber:=\the\realpageno;
+ PageNumber:=\the\pageno;
+ NOfPages:=\lastpage;
+ PaperHeight:=\the\paperheight;
+ PaperWidth:=\the\paperwidth;
+ PrintPaperHeight:=\the\printpaperheight;
+ PrintPaperWidth:=\the\printpaperwidth;
+ TopSpace:=\the\topspace;
+ BottomSpace:=\the\bottomspace;
+ BackSpace:=\the\backspace;
+ CutSpace:=\the\cutspace;
+ MakeupHeight:=\the\makeupheight;
+ MakeupWidth:=\the\makeupwidth;
+ TopHeight:=\the\topheight;
+ TopDistance:=\the\topdistance;
+ HeaderHeight:=\the\headerheight;
+ HeaderDistance:=\the\headerdistance;
+ TextHeight:=\the\textheight;
+ FooterDistance:=\the\footerdistance;
+ FooterHeight:=\the\footerheight;
+ BottomDistance:=\the\bottomdistance;
+ BottomHeight:=\the\bottomheight;
+ LeftEdgeWidth:=\the\leftedgewidth;
+ LeftEdgeDistance:=\the\leftedgedistance;
+ LeftMarginWidth:=\the\leftmarginwidth;
+ LeftMarginDistance:=\the\leftmargindistance;
+ TextWidth:=\the\textwidth ;
+ RightMarginDistance:=\the\rightmargindistance;
+ RightMarginWidth:=\the\rightmarginwidth;
+ RightEdgeDistance:=\the\rightedgedistance;
+ RightEdgeWidth:=\the\rightedgewidth;
+ InnerMarginDistance:=\the\innermargindistance;
+ InnerMarginWidth:=\the\innermarginwidth;
+ OuterMarginDistance:=\the\outermargindistance;
+ OuterMarginWidth:=\the\outermarginwidth;
+ InnerEdgeDistance:=\the\inneredgedistance;
+ InnerEdgeWidth:=\the\inneredgewidth;
+ OuterEdgeDistance:=\the\outeredgedistance;
+ OuterEdgeWidth:=\the\outeredgewidth;
+ PageOffset:=\the\pageoffset;
+ PageDepth:=\the\pagedepth;
+ LayoutColumns:=\the\layoutcolumns;
+ LayoutColumnDistance:=\the\layoutcolumndistance;
+ LayoutColumnWidth:=\the\layoutcolumnwidth;
+ enddef;
+\to \MPinitializations
+
+\def\MPonrightpage{true}
+\def\MPonoddpage {true}
+
+\def\freezeMPpagelayout
+ {\doifbothsides
+ \def\MPonrightpage{true}%
+ \orsideone
+ \def\MPonrightpage{true}%
+ \orsidetwo
+ \def\MPonrightpage{false}%
+ \od
+ \edef\MPonoddpage{\doifoddpageelse{true}{false}}}
+
+\let\freezeMPlayout\relax % obsolete
+
+%D We need to freeze the pagelayout before the backgrounds
+%D are build, because the overlay will temporarily become
+%D zero (overlay).
+
+\appendtoks
+ \freezeMPpagelayout
+\to \everybeforepagebody
+
+%D By freezing these value every graphic, we can use layout
+%D variables that change halfways a page, whatever use that
+%D has.
+
+\prependtoks
+ \calculatereducedvsizes % this is really needed
+ \freezeMPpagelayout
+ \freezeMPlayout % to be used grouped
+\to \everyMPgraphic
+
+%D The next feature provides information about for instance
+%D column positions. This is an experimental feature,
+%D introduced when we needed backgrounds in columns (fill||in
+%D questions as implemented in a private module).
+%D
+%D See \type {mp-page.mp} for the definition of the macros:
+%D
+%D \starttabulate[|tl|l|p|]
+%D \NC ResetTextAreas \NC no arguments \NC
+%D reset areas on page \NC \NR
+%D \NC RegisterTextArea \NC x, y, w, h \NC
+%D adds area to the list \NC \NR
+%D \NC TextAreaX,Y,W,H,XY,WH \NC x and/or y \NC
+%D reports offsets and dimensions \NC \NR
+%D \stoptabulate
+%D
+%D The \type {TextArea*} macros can be used to determine
+%D overlap.
+
+\newcounter\currentMPtextareadata
+
+\newtoks\MPsavedtextareadata
+\newtoks\MPtextareadata
+\newtoks\MPlocaltextareadata
+
+% optimaliseren voor herhaling
+
+\def\registerMPtextarea#1%
+ {\ifpositioning
+ \bgroup
+ \doglobal\increment\currentMPtextareadata
+ %\hpos{gbd:\currentMPtextareadata}{#1}%
+ \hpos{gbd:\currentMPtextareadata}%
+ {\iftracetextareas\boxrulewidth1.5pt\ruledhbox\fi{#1}}%
+ \edef\!!stringa{gbd:\currentMPtextareadata}%
+ \edef\!!stringa{RegisterTextArea(%
+ \MPx\!!stringa,\MPy\!!stringa,%
+ \MPw\!!stringa,\MPh\!!stringa,\MPd\!!stringa);}%
+ \@EA \doglobal \@EA \appendtoks \!!stringa \to \MPtextareadata
+ \egroup
+ \else
+ \hbox{#1}%
+ \fi}
+
+\def\registerMPlocaltextarea#1%
+ {\ifpositioning
+ \bgroup
+ \doglobal\increment\currentMPtextareadata
+ %\hpos{gbd:\currentMPtextareadata}{#1}%
+ \hpos{gbd:\currentMPtextareadata}%
+ {\iftracetextareas\boxrulewidth3pt\ruledhbox\fi{#1}}%
+ \edef\!!stringa{gbd:\currentMPtextareadata}%
+ \edef\!!stringa{RegisterLocalTextArea(%
+ \MPx\!!stringa,\MPy\!!stringa,%
+ \MPw\!!stringa,\MPh\!!stringa,\MPd\!!stringa);}%
+ \global\MPlocaltextareadata\@EA{\!!stringa}%
+ \egroup
+ \else
+ \hbox{#1}%
+ \fi}
+
+\def\resetMPlocaltextarea
+ {\global\MPlocaltextareadata\emptytoks}
+
+\appendtoks
+ path PlainTextArea;
+\to \MPextensions
+
+\appendtoks
+ ResetTextAreas;
+ \the\MPsavedtextareadata;
+ SaveTextAreas;
+ ResetTextAreas;
+ \the\MPtextareadata;
+ \the\MPlocaltextareadata;
+ PlainTextArea:=boundingbox(\MPxy{text:\realfolio}--\MPxy{text:\realfolio}
+ shifted (\MPw{text:\realfolio},\MPh{text:\realfolio}));
+\to \MPinitializations
+
+\appendtoks
+ \global\MPsavedtextareadata\MPtextareadata
+ \global\MPtextareadata \emptytoks
+ \global\MPlocaltextareadata\emptytoks
+\to \everyshipout
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-pre.tex b/Master/texmf-dist/tex/context/base/meta-pre.tex
new file mode 100644
index 00000000000..cb861ff20d5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-pre.tex
@@ -0,0 +1,68 @@
+%D \module
+%D [ file=meta-pre,
+%D version=2001.03.21,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Predefined Goodies,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this library, we define a couple of handy graphics.
+
+% todo: use the predefine grid macros, mp code will move to
+% mp-* file
+
+\startuseMPgraphic{pagegrid}
+ StartPage ;
+ drawoptions(withcolor .8white) ;
+ fill Field[Text][Text] ;
+ drawoptions(withcolor .65white) ;
+ fill Field[Footer][Text] ;
+ fill Field[Header][Text] ;
+ fill Field[LeftMargin][Text] ;
+ fill Field[RightMargin][Text] ;
+ drawoptions(withcolor .65yellow) ;
+ fill Field[LeftEdge][Text] ;
+ fill Field[RightEdge][Text] ;
+ fill Field[Bottom][Text] ;
+ fill Field[Top][Text] ;
+ drawoptions(withpen pencircle scaled .3pt withcolor .65white) ;
+ for i=-3cm step 1cm until PaperWidth+3cm :
+ draw (i,-3cm)--(i,PaperHeight+3cm) ;
+ endfor ;
+ for i=PaperHeight+3cm step -1cm until -3cm :
+ draw (-3cm,i)--(PaperWidth+3cm,i) ;
+ endfor ;
+ drawoptions(withpen pencircle scaled .15pt) ;
+ for i=.5cm-3cm step 1cm until PaperWidth+3cm :
+ draw (i,-3cm)--(i,PaperHeight+3cm) ;
+ endfor ;
+ for i=PaperHeight-.5cm+3cm step -1cm until -3cm :
+ draw (-3cm,i)--(PaperWidth+3cm,i) ;
+ endfor ;
+ drawoptions(withpen pencircle scaled .3pt withcolor .65red) ;
+ for i=0 step 1cm until PaperWidth :
+ draw (i,0)--(i,PaperHeight) ;
+ endfor ;
+ for i=PaperHeight step -1cm until 0 :
+ draw (0,i)--(PaperWidth,i) ;
+ endfor ;
+ drawoptions(withpen pencircle scaled .15pt withcolor .65red) ;
+ for i=.5cm step 1cm until PaperWidth :
+ draw (i,0)--(i,PaperHeight) ;
+ endfor ;
+ for i=PaperHeight-.5cm step -1cm until 0 :
+ draw (0,i)--(PaperWidth,i) ;
+ endfor ;
+ drawoptions(withpen pencircle scaled 5pt withcolor .65red) ;
+ draw ulcorner Page ;
+ StopPage ;
+\stopuseMPgraphic
+
+\defineoverlay[pagegrid][\useMPgraphic{pagegrid}]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-txt.tex b/Master/texmf-dist/tex/context/base/meta-txt.tex
new file mode 100644
index 00000000000..6f8be2e67b6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-txt.tex
@@ -0,0 +1,298 @@
+%D \module
+%D [ file=meta-txt,
+%D version=2000.07.06,
+%D title=\METAPOST\ Graphics,
+%D subtitle=Text Tricks,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this library some handy text manipulations are
+%D defined. Some can and will be improved as soon as the
+%D \TEX||\METAPOST\ interface is stable. Some of the
+%D solutions may look weird, which is entirely my fault,
+%D since I implemented them in the process of getting grip
+%D on this kind of manipulations. Undoubtly better
+%D \METAPOST\ code is possible, but my way of learning
+%D this kind of trickery happens to be by \quote {trial
+%D and error} and \quote {look and feel} (as well as
+%D identifying tricks in Hobby's code).
+
+% textext ipv btex ... etex
+
+\unprotect
+
+\appendtoks
+ if unknown context_text: input mp-text; fi;
+\to \MPextensions
+
+%%%%%%%
+
+% \def\newchar#1{\chardef#1=0 }
+
+\newdimen\parwidth
+\newdimen\parheight
+\newdimen\parvoffset
+\newdimen\parhoffset
+\newcount\parlines
+\newtoks \partoks
+\newbox \shapetextbox
+\newif \ifparseries
+\chardef \parfirst=0
+
+\def\startshapetext[#1]%
+ {\global\newcounter\currentshapetext
+ \global\setbox\shapetextbox=\vbox\bgroup
+ \expanded{\switchtobodyfont[\@@shbodyfont]}%
+ \dontcomplain
+ \hsize\parwidth
+ \setuptolerance[\v!verytolerant,\v!stretch]%
+ \!!counta=0
+ \!!toksa=\emptytoks
+ \def\docommando##1%
+ {\setbox\scratchbox=\hbox{\useMPgraphic{##1}}%
+ \global\chardef\parfirst=0
+ \getMPdata % \readlocfile{\MPdatafile}{}{}%
+ \setshapecharacteristics
+ \advance\!!counta by \parlines
+ \expandafter\appendtoks\the\partoks\to\!!toksa}%
+ \processcommalist[#1]\docommando
+ \global\parseriestrue
+ \xdef\totalparlines{\the\!!counta}%
+ \global\partoks\!!toksa
+ %\ifx\partoks\emptytoks\else % safeguard
+ \expanded{\parshape \the\!!counta \the\!!toksa}%
+ %\fi
+ \setshapecharacteristics % extra dummy
+ \ifparseries\def\par{\endgraf\adaptparshape}\fi
+ \EveryPar{\begstrut}}
+
+\def\stopshapetext%
+ {\endstrut
+ %\removebottomthings
+ \egroup
+ \global\newcounter\currentshapetext
+ \getshapecharacteristics}
+
+\def\adaptparshape%
+ {\def\docommando##1%
+ {\ifcase\!!counta
+ \expandafter\appendtoks\space##1 \to\!!toksa
+ \else
+ \advance\!!counta \minusone
+ \fi}%
+ \!!counta\prevgraf
+ \doglobal\decrement(\totalparlines,\!!counta)%
+ \multiply\!!counta \plustwo
+ \!!toksa\emptytoks
+ \expanded{\processseparatedlist[\the\partoks][\space]}\docommando
+ \global\partoks\!!toksa
+ %\ifx\partoks\emptytoks\else % safeguard
+ \expanded{\parshape\totalparlines\the\partoks}%
+ }%\fi}
+
+\def\getshapecharacteristics%
+ {\doglobal\increment\currentshapetext
+ \doifdefinedelse{parlines:\currentshapetext}
+ {\global\parlines \getvalue{parlines:\currentshapetext}%
+ \global\chardef\parfirst \getvalue{parfirst:\currentshapetext}%
+ \global\parvoffset \getvalue{parvoffset:\currentshapetext}%
+ \global\parhoffset \getvalue{parhoffset:\currentshapetext}%
+ \global\parwidth \getvalue{parwidth:\currentshapetext}%
+ \global\parheight \getvalue{parheight:\currentshapetext}}
+ {\global\parlines 1
+ \global\chardef\parfirst 0
+ \global\parvoffset \zeropoint
+ \global\parhoffset \zeropoint
+ \global\parwidth \hsize
+ \global\parheight \vsize}}
+
+\def\setshapecharacteristics%
+ {\doglobal\increment\currentshapetext
+ \setxvalue{parlines:\currentshapetext }{\the\parlines}%
+ \setxvalue{parfirst:\currentshapetext }{\the\parfirst}%
+ \setxvalue{parvoffset:\currentshapetext}{\the\parvoffset}%
+ \setxvalue{parhoffset:\currentshapetext}{\the\parhoffset}%
+ \setxvalue{parwidth:\currentshapetext }{\the\parwidth}%
+ \setxvalue{parheight:\currentshapetext }{\the\parheight}}
+
+\def\getshapetext% option: unvbox
+ {\vbox\bgroup
+ \forgetall
+ \setbox\scratchbox\vbox to \parheight
+ {\expanded{\switchtobodyfont[\@@shbodyfont]}% evt strutheight en
+ \splittopskip\strutheight % lineheight opslaan
+ \vskip\parvoffset % scheelt switch en
+ \ifcase\parfirst\or\vskip\lineheight\fi % is ook veiliger
+ \hskip\parhoffset
+ \hbox{\vsplit\shapetextbox to \parlines\lineheight}}%
+ \wd\scratchbox\parwidth
+ \ht\scratchbox\parheight
+ \dp\scratchbox\zeropoint
+ \box\scratchbox
+ \getshapecharacteristics
+ \egroup}
+
+\def\setupshapetexts%
+ {\dodoubleempty\getparameters[\??sh]}
+
+\setupshapetexts%
+ [\c!bodyfont=]
+
+%%%%%%% rotfont nog definieren
+
+\doifundefined{RotFont}{\definefont[RotFont][RegularBold]}
+
+\def\processfollowingtoken#1% strut toegevoegd
+ {\appendtoks#1\to\MPtoks
+ \setbox\MPbox=\hbox{\RotFont\setstrut\strut\the\MPtoks}%
+ \startMPdrawing
+ n := n + 1 ; len[n] := \the\wd\MPbox ;
+ \stopMPdrawing
+ \startMPdrawing[-]
+ % pic[n] := textext{\RotFont\setstrut\strut#1} ; % btex \RotFont\setstrut\strut#1 etex ;
+ pic[n] := btex \RotFont\setstrut\strut#1 etex ;
+ \stopMPdrawing}
+
+\startuseMPgraphic{followtokens}
+ % we default to nothing
+\stopuseMPgraphic
+
+\def\followtokens#1%
+ {\vbox\bgroup
+ \forgetall
+ \dontcomplain
+ \startMPenvironment
+ \doifundefined{RotFont}{\definefont[RotFont][RegularBold]}
+ \stopMPenvironment
+ \MPtoks\emptytoks
+ \resetMPdrawing
+ \startMPdrawing
+ \includeMPgraphic{followtokens}
+ picture pic[] ; numeric len[], n ; n := 0 ;
+ \stopMPdrawing
+ \handletokens#1\with\processfollowingtoken
+ \startMPdrawing
+ if unknown RotPath : path RotPath ; RotPath := origin ; fi ;
+ if unknown RotColor : color RotColor ; RotColor := black ; fi ;
+ if unknown TraceRot : boolean TraceRot ; TraceRot := false ; fi ;
+ if unknown ExtraRot : numeric ExtraRot ; ExtraRot := 0 ; fi ;
+ numeric al, at, pl, wid, pos ; pair ap, ad ;
+ al := arclength RotPath ;
+ if al=0 :
+ al := len[n] + ExtraRot ;
+ RotPath := origin -- (al,0) ;
+ fi ;
+ if al<len[n]:
+ RotPath := RotPath scaled ((len[n]+ExtraRot)/al) ;
+ al := arclength RotPath ;
+ fi ;
+ pl := (al-len[n])/(if n>1 : (n-1) else : 1 fi) ;
+ if TraceRot :
+ draw RotPath withpen pencircle scaled 1pt withcolor blue ;
+ fi ;
+ for i=1 upto n :
+ wid := abs(xpart lrcorner pic[i] - xpart llcorner pic[i]) ;
+ pos := len[i]-wid/2 + (i-1)*pl ;
+ at := arctime pos of RotPath ;
+ ap := point at of RotPath ;
+ ad := direction at of RotPath ;
+ draw pic[i] shifted (-wid/2,0) rotated(angle(ad)) shifted ap
+ withcolor RotColor ;
+ if TraceRot :
+ draw boundingbox
+ pic[i] shifted (-wid/2,0) rotated(angle(ad)) shifted ap
+ withpen pencircle scaled .25pt withcolor red ;
+ draw ap
+ withpen pencircle scaled .50pt withcolor green ;
+ fi ;
+ endfor ;
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \getMPdrawing
+ \resetMPdrawing
+ \egroup}
+
+% \followtokens
+% {This is just a dummy text, kerned by T{\kern
+% -.1667em\lower .5ex\hbox {E}}{\kern -.125emX} and typeset
+% in a circle using {\setMFPfont M}{\setMFPfont
+% E}{\setMFPfont T}{\setMFPfont A}{\setMFPfont
+% P}{\setMFPfont O}{\setMFPfont S}{\setMFPfont T}.\quad}
+
+\startuseMPgraphic{fuzzycount}
+ begingroup
+ save height, span, drift, d, cp ;
+ height := 3/ 5 * \baselinedistance ;
+ span := 1/ 3 * height ;
+ drift := 1/10 * height ;
+ pickup pencircle scaled (1/12 * height) ;
+ def d = (uniformdeviate drift) enddef ;
+ for i := 1 upto \MPvar{n} :
+ draw
+ if (i mod 5)=0 : ((-d-4.5span,d)--(+d-0.5span,height-d))
+ else : ((-d,+d)--(+d,height-d)) fi
+ shifted (span*i,d-drift) ;
+ endfor;
+ picture cp ; cp := currentpicture ; % for readability
+ setbounds currentpicture to
+ (llcorner cp shifted (0,-ypart llcorner cp) --
+ lrcorner cp shifted (0,-ypart lrcorner cp) --
+ urcorner cp -- ulcorner cp -- cycle) ;
+ endgroup ;
+\stopuseMPgraphic
+
+\setupMPvariables
+ [fuzzycount]
+ [n=10]
+
+\def\fuzzycount#1%
+ {{\tx\useMPgraphic{fuzzycount}{n=#1}}}
+
+\defineconversion[fuzzy][\fuzzycount]
+
+%%%%%%%
+
+\setupMPvariables
+ [EnglishRule]
+ [height=1ex,
+ width=\the\localhsize, % without \the, problems in non e-tex
+ color=darkgray]
+
+\defineblank
+ [EnglishRule]
+ [medium]
+
+\startuniqueMPgraphic{EnglishRule}{height,width,color}
+ height = \MPvar{height} ;
+ x1 = 0 ; x3 = \MPvar{width} ; x2 = x4 = .5x3 ;
+ y1 = y3 = 0 ; y2 = -y4 = height/2 ;
+ fill z1..z2..z3 & z3..z4..z1 & cycle withcolor \MPvar{color} ;
+\stopuniqueMPgraphic
+
+\def\EnglishRule%
+ {\startlinecorrection[EnglishRule]
+ \setlocalhsize \noindent \reuseMPgraphic{EnglishRule}
+ \stoplinecorrection}
+
+%D The following macro returns a tight bound character
+%D sequence.
+%D
+%D \useMPlibrary[txt]
+%D
+%D \startlinecorrection
+%D \TightText{\ss\bf 123}{0cm}{3cm}{red}
+%D \stoplinecorrection
+
+\def\TightText#1#2#3#4%
+ {\hbox % \ruledhbox
+ {\startMPcode
+ picture p ; p := image (graphictext "#1" withfillcolor red) ;
+ draw p xsized #2 ysized #3 withcolor \MPcolor{#4} ;
+ \stopMPcode}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/meta-xml.tex b/Master/texmf-dist/tex/context/base/meta-xml.tex
new file mode 100644
index 00000000000..2138111f835
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/meta-xml.tex
@@ -0,0 +1,29 @@
+%D \module
+%D [ file=meta-xml,
+%D version=2002.11.27,
+%D title=\METAPOST\ Graphics,
+%D subtitle=XML Hacks,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{MetaPost Graphics / XML Hacks}
+
+%D When we are dealing with XML, we need to make sure that
+%D \METAPOST\ knows about it. The next macro expands its
+%D argument (think of widget XFDF) into \type {\getXMLentity}
+%D calls.
+
+\unprotect
+
+\def\setMPtextXML#1#2%
+ {\bgroup
+ \enableXML
+ \expanded{\convertcommand#2}\to\ascii
+ \expanded{\egroup\noexpand\dodoglobal\noexpand\setvalue{\@@MPT#1}{\ascii}}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/mult-com.tex b/Master/texmf-dist/tex/context/base/mult-com.tex
new file mode 100644
index 00000000000..3f8f616806a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mult-com.tex
@@ -0,0 +1,2117 @@
+%D \module
+%D [ file=mult-com,
+%D version=1996.06.01,
+%D title=\CONTEXT\ Multilingual Macros,
+%D subtitle=Commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
+
+%D In this module we define the commands. A more than quick
+%D glance at this list leans that it's incomplete. This is due
+%D to the fact that the system generated a lot of commands by
+%D means of the elements specified somewhere else.
+%D
+%D {\em Because the original interface to \CONTEXT\ is dutch,
+%D the words left of the \type{:} are in dutch. In the near
+%D future english will be the core language.}
+%D
+%D The German translations were provided by Tobias Burnus,
+%D the Czech ones by Tom Hudec, and the Italian ones
+%D by Giuseppe Bilotta. Here we include their comments.
+
+%D Giuseppe Bilotta: \quotation {Having to choose between a
+%D full|-|length name and a shortcut, I decided to resort to the
+%D latter, especially in the case of commonly used commands, or
+%D when shortened commands become too short. This led to one
+%D inconsistency: \tex{footer} (pi\`e di pagina in Italian) became
+%D \tex{piedipagina} as a standalone term, but is commonly
+%D shortened to \typ{-pdp}. \tex{setupfooter} becomes
+%D \tex{impostapdp}, and so for all composed words: \tex{footnote}
+%D (nota a pi\`e di pagina) becomes \tex{notapdp};
+%D \tex{footnotetext} (testo della nota a pi\`e di pagina) becomes
+%D \tex{testonotapdp}; and so on.}
+
+\writestatus{loading}{Context Multilingual Macros / Commands}
+
+\startlogginginterface context.com
+
+%D The commands are grouped according to their functionality.
+%D Although the \type{\stop} counterpart of the
+%D \type{\start}||commands could be generated automatically,
+%D we've chosen do define it explicitly.
+%D
+%D One complication of the english commands, is that we don't
+%D want them to overrule or conflict with Plain \TEX. The
+%D names therefore are not always optimal.
+
+%D \startcompressdefinitions
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ language: taal language
+ sprache jazyk
+ lingua limba
+ mainlanguage: hoofdtaal mainlanguage
+ hauptsprache hlavnijazyk
+ linguaprincipale limbaprincipala
+ translate: vertaal translate
+ uebersetzten prelozit
+ traduci traduce
+ installlanguage: installeertaal installlanguage
+ installieresprache instalacejazyka
+ installalingua instalarelimba
+ setuplanguage: steltaalin setuplanguage
+ stellespracheein nastavjazyk
+ impostalingua setarelimba
+ showmakeup: toonopmaak showmakeup
+ zeigeumbruch ukazupravu
+ mostramakeup afiseazamakeup
+ useencoding: usecodering useencoding
+ benutzekodierung uzijkodovani
+ usacodifica folosestecodificarea
+ usespecials: gebruikspecials usespecials
+ benutzespezielles uzijspeciality
+ usaspecialita folosestespeciale
+ defineoutput: definieeruitvoer defineoutput
+ defineoutput definujvystup
+ definiscioutput definesteoutput
+ setupoutput: steluitvoerin setupoutput
+ stelleausgabeein nastavvystup
+ impostaoutput setareoutput
+ defineaccent: definieeraccent defineaccent
+ definiereakzent definujakcent
+ definisciaccento definesteaccent
+ definecharacter: definieerkarakter definecharacter
+ definierezeichen definujznak
+ definiscicarattere definestecaracter
+ definecommand: definieercommando definecommand
+ definierebefehl definujprikaz
+ definiscicomando definestecomanda
+ startcoding: startcodering startcoding
+ startkodierung startkodovani
+ iniziacodifica startcodificare
+ stopcoding: stopcodering stopcoding
+ stopkodierung stopkodovani
+ terminacodifica stopcodificare
+ definebodyfontenvironment: definieerkorpsomgeving definebodyfontenvironment
+ definierefliesstextumgebung definujprostredizakladnihofontu
+ definisciambientefontdeltesto definestemediulfonttext
+ setupbodyfontenvironment: stelkorpsomgevingin setupbodyfontenvironment
+ stellefliesstextumgebungein nastavprostredizakladnihofontu
+ impostaambientefontdeltesto seteazamediulfonttext
+ definebodyfont: definieerkorps definebodyfont
+ definierefliesstext definujzakladnifont
+ definiscifontdeltesto definestefonttext
+ definefont: definieerfont definefont
+ definiereschrift definujfont
+ definiscifont definestefont
+ definefontsynonym: definieerfontsynoniem definefontsynonym
+ defineschriftsynonym definujsynonumumfontu
+ definiscisinonimofont definestesinonimfont
+ definestyle: definieerletter definestyle
+ definierestil definujstyl
+ definiscistile definestestil
+ definefontstyle: definieerfontstijl definefontstyle
+ definiereschriftstil definujstylfontu
+ definiscistilefont definestestilfont
+ setupstrut: stelstrutin setupstrut
+ setupstrut setupstrut
+ impostastrut seteazastrut
+ setuptype: steltypein setuptype
+ stelletipein nastavtype
+ impostatype seteazatype
+ type: type type
+ tippen opis
+ type type
+ typ: typ typ
+ tip pis
+ typ typ
+ arg: arg arg
+ arg arg
+ arg arg
+ tex: tex tex
+ tex tex
+ tex tex
+ definetyping: definieertypen definetyping
+ definieretippen definujopis
+ definiscityping definestetyping
+ definetype: definieertype definetype
+ definetype definetype
+ definiscitype definetype
+ setuptyping: steltypenin setuptyping
+ stelletippenein nastavopis
+ impostatyping seteazatyping
+ typefile: typefile typefile
+ tippedatei opissoubor
+ typefile typefile
+ setupfootnotes: stelvoetnotenin setupfootnotes
+ stellefussnotenein nastavpoznamkypodcarou
+ impostanotepdp seteazanotasubsol
+ setupfootnotedefinition: stelvoetnootdefinitiein setupfootnotedefinition
+ stellefussnotendefinitionein nastavdefinicipoznamekpodcarou
+ impostadefinizionenotepdp seteazadefinireanotasubsol
+ note: noot note
+ notiz poznamka
+ nota nota
+ footnote: voetnoot footnote
+ fussnote poznamkapodcarou
+ notapdp notasubsol
+ footnotetext: voetnoottekst footnotetext
+ footnotetext footnotetext
+ testonotapdp footnotetext
+ startlocalfootnotes: startlokalevoetnoten startlocalfootnotes
+ startlokalefussnoten startlokalnipoznamkypodcarou
+ inizianotepdplocali startnotesubsollocale
+ stoplocalfootnotes: stoplokalevoetnoten stoplocalfootnotes
+ stoplokalefussnoten stoplokalnipoznamkypodcarou
+ terminanotepdplocali stopnotesubsollocale
+ placelocalfootnotes: plaatslokalevoetnoten placelocalfootnotes
+ platzierelokalefussnoten umistilokalnipoznamkypodcarou
+ mettinotepdplocali punenotesubsollocale
+ placefootnotes: plaatsvoetnoten placefootnotes
+ platzierefussnoten umistipoznamkypodcarou
+ mettinotepdp punenotesubsol
+ currentdate: huidigedatum currentdate
+ heutigesdatum aktualnidatum
+ datadioggi datacurenta
+ date: datum date
+ datum datum
+ data data
+ weekday: weekdag weekday
+ wochentag vsedniden
+ giornosettimana zidinsaptamana
+ WEEKDAY: WEEKDAG WEEKDAY
+ WOCHENTAG VSEDNIDEN
+ GIORNOSETTIMANA ZIDINSAPTAMANA
+ month: maand month
+ monat mesic
+ mese luna
+ MONTH: MAAND MONTH
+ MONAT MESIC
+ MESE LUNA
+ Numbers: Cijfers Numbers
+ Ziffern Cisla
+ Numeri Numere
+ numbers: cijfers numbers
+ ziffern cisla
+ numeri numere
+ romannumerals: romeins romannumerals
+ roemischezahlen rimskecislice
+ numeriromani numereromane
+ Romannumerals: Romeins Romannumerals
+ Roemischezahlen Rimskecislice
+ Numeriromani Numereromane
+ character: letter character
+ buchstabe znak
+ lettera litera
+ Character: Letter Character
+ Buchstabe Znak
+ Lettera Litera
+ characters: letters characters
+ buchstaben znaky
+ lettere litere
+ Characters: Letters Characters
+ Buchstaben Znaky
+ Lettere Litere
+ unknown: onbekend unknown
+ unbekant neznamo
+ ignoto necunoscut
+ definesymbol: definieersymbool definesymbol
+ definieresymbol definujsymbol
+ definiscisimbolo definestesimbol
+ definefiguresymbol: definieerfiguursymbool definefiguresymbol
+ definiereabbsymbol definujobrazeksymbol
+ definiscifigurasimbolo definestesimbolfigura
+ symbol: symbool symbol
+ symbol symbol
+ simbolo simbol
+ setupsymbolset: stelsymboolsetin setupsymbolset
+ stellesymbolsetein nastavsadusymbolu
+ impostasetsimboli seteazasimbol
+ showsymbolset: toonsymboolset showsymbolset
+ showsymbolset ukazsadusymbolu
+ mostrasetsimboli afiseazasetsimboluri
+ startsymbolset: startsymboolset startsymbolset
+ startsymbolset startsadasymbolu
+ iniziasetsimboli startsetsimboluri
+ usesymbols: gebruiksymbolen usesymbols
+ verwendesymbole uzijsymbol
+ usasimboli folosestesimboluri
+ defineconversion: definieerconversie defineconversion
+ definierekonversion definujkonverzi
+ definisciconversione definesteconversie
+ convertnumber: converteernummer convertnumber
+ konvertierezahl konvertujcislo
+ convertinumero convertestenumar
+ setupcapitals: stelkapitalenin setupcapitals
+ stelleversalienein nastavkapitalky
+ impostamaiuscole seteazamajuscule
+ smallcapped: kap cap
+ kap kap
+ cap kap
+ notsmallcapped: nokap nocap
+ nokap nokap
+ nocap nokap
+ CAPPED: KAP CAP
+ KAP KAP
+ CAP KAP
+ SmallCapped: Kap Cap
+ Kap Kap
+ Cap Kap
+ SmallCaps: Kaps Caps
+ Kaps Kaps
+ Caps Kaps
+ WORD: WOORD WORD
+ WORT SLOVO
+ PAROLA CUVANT
+ WORDS: WOORDEN WORDS
+ WOERTER SLOVA
+ PAROLE CUVINTE
+ Word: Woord Word
+ Wort Slovo
+ Parola Cuvant
+ Words: Woorden Words
+ Woerter Slova
+ Parole Cuvinte
+ stretched: uitgerekt stretched
+ gestreckt roztazene
+ stirato intins
+ overstrike: doorstreep overstrike
+ durchgestrichen preskrtnuto
+ sbarrato liniepeste
+ overstrikes: doorstrepen overstrikes
+ durchstreichen preskrtnuti
+ sbarrati liniipeste
+ overbar: overstreep overbar
+ ueberstrichen nadtrzeno
+ sopralinea barasus
+ overbars: overstrepen overbars
+ ueberstreichen nadtrzeni
+ sopralinee supralinie
+ underbar: onderstreep underbar
+ unterstrichen podtrzeno
+ sottolinea sublinie
+ underbars: onderstrepen underbars
+ unterstreichen podtrzeni
+ sottolinee sublinii
+ setupunderbar: stelonderstrepenin setupunderbar
+ stelleunterstreichenein nastavpodtrzeni
+ impostasottolinea seteazasublinie
+ setupbodyfont: stelkorpsin setupbodyfont
+ stellefliesstextein nastavzakladnifont
+ impostafontdeltesto seteazafonttext
+ switchtobodyfont: switchnaarkorps switchtobodyfont
+ wechselezumfliesstext prepninazakladnifont
+ cambiaafontdeltesto trecilafonttext
+ showbodyfont: toonkorps showbodyfont
+ zeigefliesstext ukazzakladnifont
+ mostrafontdeltesto afiseazafonttext
+ showbodyfontenvironment: toonkorpsomgeving showbodyfontenvironment
+ zeigefliesstextumgebung ukazpostredizakladnihofontu
+ mostraambientefontdeltesto afiseazamediufonttext
+ headtext: koptekst headtext
+ ueberschrifttext texthlavicky
+ testoinstestazioni texttitlu
+ labeltext: labeltekst labeltext
+ labeltext textpopisku
+ testoetichetta texteticheta
+ LABELTEXT: LABELTEKST LABELTEXT
+ LABELTEXT TEXTPOPISKU
+ TESTOETICHETTA TEXTETICHETA
+ setupheadtext: stelkoptekstin setupheadtext
+ stelleueberschrifttextein nastavtexthlavicky
+ impostatestointestazioni seteazatexttitlu
+ setuplabeltext: stellabeltekstin setuplabeltext
+ stellelabeltextein nastavtextpopisku
+ impostatestoetichette seteazatexteticheta
+ marginrule: kantlijn marginrule
+ marginallinie marginalnilinka
+ lineamargine liniemargine
+ startmarginrule: startkantlijn startmarginrule
+ startmarginallinie startmarginalnilinka
+ inizialineamargine startliniemargine
+ stopmarginrule: stopkantlijn stopmarginrule
+ stopmarginallinie stopmarginalnilinka
+ terminalineamargine stopliniemargine
+ setupmarginrules: stelkantlijnin setupmarginrules
+ stellemarginallinieein nastavmarginalnilinky
+ impostalineemargine seteazaliniimargine
+ blackrule: blokje blackrule
+ rechteck cernalinka
+ lineanera linieneagra
+ blackrules: blokjes blackrules
+ rechtecke cernelinky
+ lineenere liniinegre
+ setupblackrules: stelblokjesin setupblackrules
+ stellerechteckein nastavcernelinky
+ impostalineenere seteazaliniinegre
+ setupscreens: stelrastersin setupscreens
+ stellerasterein nastavrastr
+ impostaschermi seteazaecrane
+ framed: omlijnd framed
+ umrahmt oramovani
+ incorniciato framed
+ inframed: inlijnd inframed
+ imumriss zaramovani
+ circondato inframed
+ mframed: wilijnd maframed
+ maumrise maoramovani
+ maframed maframed
+ inmframed: inwilijnd inmaframed
+ immaumrise mazaramovani
+ inmaframed inmaframed
+ setupframed: stelomlijndin setupframed
+ stelleumrahmtein nastavoramovani
+ impostaincorniciato seteazainconjurat
+ setuplinewidth: stellijndiktein setuplinewidth
+ stellelinienbreiteein nastavsirkucary
+ impostaampiezzariga seteazagrosimelinie
+ setupthinrules: steldunnelijnenin setupthinrules
+ stelleduennerumrissein nastavtenkelinky
+ impostalineesottili seteazaliniesubtire
+ thinrule: dunnelijn thinrule
+ duennelinie tenkalinka
+ lineasottile liniesubtire
+ thinrules: dunnelijnen thinrules
+ duennerumriss tenkelinky
+ lineesottili liniisubtiri
+ hairline: haarlijn hairline
+ haarlinie vlasovalinka
+ capello firdepar
+ vl: vl vl
+ vl vl
+ vl vl
+ hl: hl hl
+ hl hl
+ hl hl
+ defineframed: definieeromlijnd defineframed
+ definiereumrahmt definujoramovani
+ definisciincorniciato definesteinconjurare
+ defineframedtext: definieerkadertekst defineframedtext
+ definiereumrahmtertext definujoramovanytext
+ definiscitestoincorniciato definestetextinconjurat
+ setupframedtexts: stelkadertekstenin setupframedtexts
+ stelleumrahmtetexteein nastavoramovanetexty
+ impostatestiincorniciati definestetexteinconjurate
+ defineoverlay: definieeroverlay defineoverlay
+ definiereoverlay definujprekryv
+ definiscisovrapposizione definesteoverlay
+ definelayer: definieerlayer definelayer
+ definelayer definelayer
+ definelayer definelayer
+ background: achtergrond background
+ hintergrund pozadi
+ sfondo fundal
+ startbackground: startachtergrond startbackground
+ starthintergrund startpozadi
+ iniziasfondo startfundal
+ stopbackground: stopachtergrond stopbackground
+ stophintergrund stoppozadi
+ terminasfondo stopfundal
+ setupbackground: stelachtergrondin setupbackground
+ stellehintergrundein nastavpozadi
+ impostasfondo seteazafundal
+ fillinrules: invullijnen fillinrules
+ gefuelltesrechteck vyplnovelinky % ve formulari
+ lineeriempimento rigleumplere
+ setupfillinrules: stelinvullijnenin setupfillinrules
+ stellegefuelltesrechteckein nastavvyplnovelinky
+ impostalineeriempimento seteazarigleumplere
+ fillintext: invultekst fillintext
+ ausfuelltext vyplnenytext
+ testoriempimento textumplere
+ setupfillinlines: stelinvulregelsin setupfillinlines
+ stellegefuelltezeileein nastavvyplnoveradky
+ impostarigheriempimento seteazaliniiumplere
+ fillinline: invulregel fillinline
+ gefuelltezeile vyplnovyradek
+ rigariempimento linieumplere
+ setuptextrules: steltekstlijnenin setuptextrules
+ stelletextumrissein nastavtextovelinky
+ impostalineetesto seteazarigletext
+ textrule: tekstlijn textrule
+ textlinie textovalinka
+ lineatesto riglatext
+ starttextrule: starttekstlijn starttextrule
+ starttextlinie starttextovalinka
+ inizialineatesto startriglatext
+ stoptextrule: stoptekstlijn stoptextrule
+ stoptextlinie stoptextovalinka
+ terminalineatesto stopriglatext
+ usemodule: gebruikmodule usemodule
+ verwendemodul uzijmodul
+ usamodulo folosestemodul
+ usemodules: gebruikmodules usemodules
+ verwendemodule uzijmoduly
+ usamoduli folosestemodule
+ starttext: starttekst starttext
+ starttext starttext
+ iniziatesto starttext
+ stoptext: stoptekst stoptext
+ stoptext stoptext
+ terminatesto stoptext
+ margintitle: margetitel margintitle
+ marginaltitel marginalninadpis
+ titoloinmargine titlumarginal
+ marginword: margewoord marginword
+ marginalwort marginalnislovo
+ parolainmargine cuvantmarginal
+ margintext: margetekst margintext
+ marginaltext marginalnitext
+ testoinmargine textmarginal
+ inleft: inlinker inleft
+ imlinken vlevo
+ insinistra instanga
+ inmargin: inmarge inmargin
+ inmarginalie naokraj
+ inmargine marginal
+ inothermargin: inanderemarge inothermargin
+ inanderermarginale nadruhyokraj
+ inaltromargine inaltamargine
+ inright: inrechter inright
+ imrechten vpravo
+ indestra indreapta
+ininner: inbinnen ininner
+ ininner ininner
+ ininner ininner
+inouter: inbuiten inouter
+ inouter inouter
+ inouter inouter
+ startmarginblock: startmargeblok startmarginblock
+ startmarginalblock startmarginalniblok
+ iniziabloccomargine startblocmarginal
+ stopmarginblock: stopmargeblok stopmarginblock
+ stopmarginalblock stopmarginalniblok
+ terminabloccomargine stopblocmarginal
+defineinmargin: definieerinmarge defineinmargin
+ defineinmargin defineinmargin
+ defineinmargin defineinmargin
+ setupinmargin: stelinmargein setupinmargin
+ stelleinmarginalieein nastavmarginalie
+ impostainmargine seteazamarginal
+ setupmarginblocks: stelmargeblokkenin setupmarginblocks
+ stellemarginalblockein nastavmarginalniblok
+ impostablocchimargine seteazablocurimarginale
+ inleftedge: inlinkerrand inleftedge
+ imlinkenrand nalevo
+ inlatosinistro inparteastanga
+ inleftmargin: inlinkermarge inleftmargin
+ inlinkermarginale nalevyokraj
+ inmarginesinistro inmargineastanga
+ inrightmargin: inrechtermarge inrightmargin
+ inrechtermarginale napravyokraj
+ inmarginedestro inmargineadreapta
+ inrightedge: inrechterrand inrightedge
+ imrechtenrand napravo
+ inlatodestro inparteadreapta
+ atleftmargin: oplinkermarge atleftmargin
+ atleftmargin atleftmargin
+ atleftmargin atleftmargin
+atrightmargin: oprechtermarge atrightmargin
+ atrightmargin atrightmargin
+ atrightmargin atrightmargin
+
+ wordright: woordrechts wordright
+ wortrechts slovovpravo
+ paroladestra cuvantdreapta
+ defineblank: definieerblanko defineblank
+ definiereblanko definujpreskok
+ definiscirigovuoto definesteblanc
+ blank: blanko blank
+ blanko preskoc
+ rigovuoto blanc
+ setupblank: stelblankoin setupblank
+ stelleblankoein nastavpreskok
+ impostarigovuoto seteazablanc
+ correctwhitespace: corrigeerwitruimte correctwhitespace
+ korrigierezwischenraum korekcebilehomista
+ correggispaziobianco corecteazaspatiualb
+ fixedspaces: vastespaties fixedspaces
+ festesspatium tvrdemezery
+ spazifissi spatiifixate
+ fixedspace: vastespatie fixedspace
+ festesspatium tvrdamezera
+ spaziofisso spatiufixat
+ nospace: geenspatie nospace
+ keinspatium zadnamezera
+ nientespazio faraspatiu
+ space: spatie space
+ spatium mezera
+ spazio spatiu
+ nowhitespace: geenwitruimte nowhitespace
+ keinzwischenraum zadnebilemisto
+ nientespaziobianco faraspatiualb
+ packed: opelkaar packed
+ kleinerdurchschuss zhustene
+ impaccato impachetat
+ startpacked: startopelkaar startpacked
+ startkleinerdurchschuss startzhustene
+ iniziaimpaccato startimpachetat
+ stoppacked: stopopelkaar stoppacked
+ stopkleinerdurchschuss stopzhustene
+ terminaimpaccato stopimpachetat
+ startunpacked: startvanelkaar startunpacked
+ startgrosserdurchschuss startnezhustene
+ iniziaunpacked startneimpachetat
+ stopunpacked: stopvanelkaar stopunpacked
+ stopgrosserdurchschuss stopnezhustene
+ terminaunpacked stopneimpachetat
+ startlinecorrection: startregelcorrectie startlinecorrection
+ startzeilenkorrektur startkorekceradku
+ iniziacorrezioneriga startcorectielinie
+ stoplinecorrection: stopregelcorrectie stoplinecorrection
+ stopzeilenkorrektur stopkorekceradku
+ terminacorrezioneriga stopcorectielinie
+ godown: omlaag godown
+ nachunten jdidolu
+ vaigiu injos
+ whitespace: witruimte whitespace
+ zwischenraum bilemisto
+ spaziobianco spatiualb
+ noindenting: nietinspringen noindenting
+ nichteinziehen zadneodsazovani
+ nienterientro faraaliniat
+ indenting: inspringen indenting
+ einziehen odsazovani
+ rientro aliniat
+ setupindenting: stelinspringenin setupindenting
+ stelleeinziehenein nastavodsazovani
+ impostarientro seteazaaliniat
+ startalignment: startuitlijnen startalignment
+ startausrichtung startzarovnavani
+ iniziaallineamento startaliniere
+ stopalignment: stopuitlijnen stopalignment
+ stopausrichtung stopzarovnavani
+ terminaallineamento stopaliniere
+ startlines: startregels startlines
+ startzeilen startradky
+ iniziarighe startlinii
+ stoplines: stopregels stoplines
+ stopzeilen stopradky
+ terminarighe stoplinii
+ setupparagraphnumbering: stelparagraafnummerenin setupparagraphnumbering
+ stelleabsatznummerierungein nastavcislovaniodstavcu
+ impostanumerazionecapoversi seteazanumerotareparagrafe
+ setuplinenumbering: stelregelnummerenin setuplinenumbering
+ stellezeilennumerierungein nastavcislovaniradku
+ impostanumerazionerighe seteazanumerotarelinii
+ startlinenumbering: startregelnummeren startlinenumbering
+ startzeilennumerierung startcislovaniradku
+ inizianumerazionerighe startnumerotarelinii
+ stoplinenumbering: stopregelnummeren stoplinenumbering
+ stopzeilennumerierung stopcislovaniradku
+ terminanumerazionerighe stopnumerotarelinii
+ startline: startregel startline
+ startzeile startradek
+ iniziariga startlinie
+ stopline: stopregel stopline
+ stopzeile stopradek
+ terminariga stoplinie
+ someline: eenregel someline
+ einezeile nejakyradek
+ qualcheriga olinie
+ inline: inregel inline
+ inzeile vradku
+ inriga inlinie
+ crlf: crlf crlf
+ crlf crlf
+ crlf crlf
+emptylines: legeregels emptylines
+ emptylines emptylines
+ emptylines emptylines
+ setuplines: stelregelsin setuplines
+ stellezeilenein nastavradky
+ impostarighe seteazalinii
+ startnarrower: startsmaller startnarrower
+ startenger startzuzeni
+ iniziapiustretto startingust
+ stopnarrower: stopsmaller stopnarrower
+ stopenger stopzuzeni
+ terminapiustretto stopingust
+ setupnarrower: stelsmallerin setupnarrower
+ stelleengerein nastavzuzeni
+ impostapiustretto seteazaingust
+ definetabulate: definieertabulatie definetabulate
+ definieretabulator definujtabelaci
+ definiscitabulato definestetabulatori
+ setuptabulate: steltabulatiein setuptabulate
+ stelletabulatorein nastavtabelaci
+ impostatabulato seteazatabulatori
+ starttable: starttabel starttable
+ starttabelle starttabulka
+ iniziatabella starttabel
+ stoptable: stoptabel stoptable
+ stoptabelle stoptabulka
+ terminatabella stoptabel
+ starttables: starttabellen starttables
+ starttabellen starttabulky
+ iniziatabelle starttabele
+ stoptables: stoptabellen stoptables
+ stoptabellen stoptabulky
+ terminatabelle stoptabele
+ setuptables: steltabellenin setuptables
+ stelletabellenein nastavtabulky
+ impostatabelle seteazatabele
+ definetabletemplate: definieertabelvorm definetabletemplate
+ definieretabellenvorlage definujsablonutabulky
+ definiscimodellotabella definestesablontabel
+ page: pagina page
+ seite strana
+ pagina pagina
+ testcolumn: testkolom testcolumn
+ testcolumn testcolumn
+ testcolumn testcolumn
+ testpage: testpagina testpage
+ testpage testpage
+ testpage testpage
+ couplepage: koppelpagina couplepage
+ doppelseite parovastrana
+ accoppiapagina paginadubla
+ pagetype: soortpagina pagetype
+ seitentyp typstrany
+ tipopagina tippagina
+ processpage: verwerkpagina processpage
+ bearbeiteseite zpracujstranu
+ elaborapagina proceseazapagina
+ couplepaper: koppelpapier couplepaper
+ doppelseitigespapier dvoustrannypapir
+ accoppiacarta hartiedubla
+ selectpaper: selecteerpapier selectpaper
+ waehlepapieraus vyberpapir
+ selezionacarta selecteazahartie
+ screen: scherm screen
+ bildschirm obrazovka
+ schermo ecran
+ definesection: definieersectie definesection
+ definiereabschnitt definujsekci
+ definiscisezione definestesectiune
+ definesectionblock: definieersectieblok definesectionblock
+ definiereabschnittsblock definujbloksekce
+ definiscibloccosezione definesteblocsectiune
+ setupsectionblock: stelsectieblokin setupsectionblock
+ stelleabschnittsblockein nastavbloksekce
+ impostabloccosezione seteazablocsectiune
+ setupsection: stelsectiein setupsection
+ stelleabschnittein nastavsekci
+ impostasezione seteazasectiune
+ notopandbottomlines: geenbovenenonderregels notopandbottomlines
+ keinzeilenobenundunten zadnehorniadolniradky
+ nientelineecimafondo faraliniisussijos
+ noheaderandfooterlines: geenhoofdenvoetregels noheaderandfooterlines
+ keinekopfundfusszeilen zadnezahlaviaupati
+ nientelineintestazionepdp faraliniiantetsisubsol
+ setuptop: stelbovenin setuptop
+ stellenobenein nastavhorejsek
+ impostacima seteazasus
+ setuptoptexts: stelboventekstenin setuptoptexts
+ stelletextobenein nastavhornitexty
+ impostatesticima seteazatextesus
+ setupheader: stelhoofdin setupheader
+ stellekopfzeileein nastavzahlavi
+ impostainstestazione seteazaantet
+ setupheadertexts: stelhoofdtekstenin setupheadertexts
+ stellekopfzeilentextein nastavtextyzahlavi
+ impostatestiintestazioni seteazatexteantet
+ setuppagenumbering: stelpaginanummeringin setuppagenumbering
+ stelleseitennummeriernungein nastavcislovanistran
+ impostanumerazionepagina seteazanumerotarepagina
+ getnumber: haalnummer getnumber
+ getnumber getnumber
+ getnumber getnumber
+incrementnumber: verhoognummer incrementnumber
+ nummererhoehen zvysujicicislo
+ incrementanumero numarincrement
+decrementnumber: verlaagnummer decrementnumber
+ decrementnumber decrementnumber
+ decrementnumber decrementnumber
+ resetnumber: resetnummer resetnumber
+ resetnumber resetnumber
+ resetnumber resetnumber
+ setnumber: setnummer setnumber
+ setnumber setnumber
+ setnumber setnumber
+ setupnumber: stelnummerin setupnumber
+ setupnumber setupnumber
+ impostanumerazione setupnumber
+ setupbottom: stelonderin setupbottom
+ stelleuntenein nastavspodek
+ impostafondo seteazajos
+ setupbottomtexts: stelondertekstenin setupbottomtexts
+ stelletextuntenein nastavdolnitexty
+ impostatestifondo seteazatextejos
+ setupfooter: stelvoetin setupfooter
+ stellefusszeileein nastavupati
+ impostapdp seteazasubsol
+ setupfootertexts: stelvoettekstenin setupfootertexts
+ stellefusszeilentextein nastavtextyupati
+ impostatestipdp seteazatextesubsol
+ setuppagenumber: stelpaginanummerin setuppagenumber
+ stelleseitennummerein nastavcislostrany
+ impostanumeropagina seteazanumarpagina
+ setupsubpagenumber: stelsubpaginanummerin setupsubpagenumber
+ stelleunterseitennummerein nastavpodcislostrany
+ impostanumerosottopagina seteazanumarsubpagina
+subpagenumber: subpaginanummer subpagenumber
+ subpagenumber subpagenumber
+ subpagenumber subpagenumber
+ setuptext: steltekstin setuptext
+ stelletextein nastavtext
+ impostatesto seteazatext
+ setuptexttexts: stelteksttekstenin setuptexttexts
+ stelletexttexteein nastavtexttexty
+ impostatestotesti seteazatextetext
+ definetext: definieertekst definetext
+ definieretext definujtext
+ definiscitesto definestetext
+ pagenumber: paginanummer pagenumber
+ seitenummer cislostrany
+ numeropagina numarpagina
+ completepagenumber: volledigepaginanummer completepagenumber
+ completepagenumber completepagenumber % TOBIAS % TO
+ numeropaginacompleto completeazanumarpagina % TB TH
+ placepagenumber: plaatspaginanummer placepagenumber
+ placepagenumber placepagenumber % TOBIAS % TOM
+ mettinumeropagina punenumarpagina % TB TH
+ items: items items
+ posten polozky
+ elementi element
+ setupitems: stelitemsin setupitems
+ stellepostenein nastavpolozky
+ impostaelementi seteazaelemente
+ leftaligned: regellinks leftaligned
+ linksbuendig zarovnanovlevo
+ allineasinistra aliniatstanga
+ midaligned: regelmidden midaligned
+ zentriert zarovnanonastred
+ allineacentro aliniatcentru
+ rightaligned: regelrechts rightaligned
+ rechtsbuendig zarovnanovpravo
+ allineadestra aliniatdreapta
+ startcolumns: startkolommen startcolumns
+ startspalten startsloupce
+ iniziacolonne startcoloane
+ stopcolumns: stopkolommen stopcolumns
+ stopspalten stopsloupce
+ terminacolonne stopcoloane
+ setupcolumns: stelkolommenin setupcolumns
+ stellespaltenein nastavsloupce
+ impostacolonne seteazacoloane
+ column: kolom column
+ spalte sloupec
+ colonna coloana
+ head: kop head
+ kopf nadpis
+ testa titlu % GB
+ but: but but
+ but spodek
+ fondo but
+ item: som item
+ pos polozka
+ elemento element
+ nop: nop nop
+ nop nop
+ nop nop
+ mar: mar mar
+ mar okr
+ mar mar
+ sym: sym sym
+ sym sym
+ sim sim
+ its: its its
+ its pol % abbr. of polozka (it em)
+ el el % abbr. of elemento (it) element (ro)
+ ran: ran ran
+ ran ran
+ ran ran
+% new
+ headsym: kopsym headsym
+ headsym headsym
+ headsym headsym
+% new
+ defineitemgroup: definieeritemgroep defineitemgroup
+ defineitemgroup defineitemgroup
+ defineitemgroup defineitemgroup
+ setupitemgroup: stelitemgroepin setupitemgroup
+ setupitemgroup setupitemgroup
+ setupitemgroup setupitemgroup
+ setupitemgroups: stelitemgroepenin setupitemgroups
+ setupitemgroups setupitemgroups
+ setupitemgroups setupitemgroups
+
+% startitemize: startopsomming startitemize
+% startaufzaehlung startvycet
+% iniziaelenco startenumerare
+% setupitemize: stelopsommingin setupitemize
+% stelleaufzaehlungein nastavvycet
+% impostaelenco setareenumerare
+% stopitemize: stopopsomming stopitemize
+% stopaufzaehlung stopvycet
+% terminaelenco stopenumerare
+
+ % so far
+
+ definehead: definieerkop definehead
+ definiereueberschrift definujnadpis
+ definiscitesta definesteantet
+ setuphead: stelkopin setuphead
+ stelleueberschriftein nastavnadpis
+ impostatesta seteazatitlu
+ setupheads: stelkoppenin setupheads
+ stelleueberschriftenein nastavnadpisy
+ impostateste seteazatitluri
+ setupheadnumber: stelkopnummerin setupheadnumber
+ stellekopfzahlein nastavcislonadpisu
+ impostanumerotesta seteazanumartitlu
+ headnumber: kopnummer headnumber
+ kopfnummer cislonadpisu
+ numerotesta numartitlu
+ currentheadnumber: huidigekopnummer currentheadnumber
+ heutigeskopfnummer aktualnicislonadpisu
+ numerotestacorrente numartitlucurent
+ determineheadnumber: bepaalkopnummer determineheadnumber
+ bestimmekopfnummer stanovcislonadpisu
+ determinanumerotesta determinanumartitlu
+ resetmarking: resetmarkering resetmarking
+ ruecksetztenbeschriftung resetznaceni
+ reimpostamarcatura reseteazamarcaje
+ setupmarking: stelmarkeringin setupmarking
+ stellebeschriftungein nastavznaceni
+ impostamarcatura seteazamarcaje
+ definemarking: definieermarkering definemarking
+ definierebeschriftung definujznaceni
+ definiscimarcatura definestemarcaje
+ nomarking: geenmarkering nomarking
+ keinebeschriftung zadneznaceni
+ nientemarcatura faramarcaje
+ marking: markeer marking
+ beschriftung znaceni
+ marcatura marcaje
+ decouplemarking: ontkoppelmarkering decouplemarking
+ entknuepfebeschriftung rozpojeneznaceni
+ separamarcatura decupleazamarcaje % GB
+ couplemarking: koppelmarkering couplemarking
+ verknuepfebeschriftung propojeneznaceni
+ accoppiamarcatura cupleazamarcaje % GB
+ getmarking: haalmarkering getmarking
+ holebeschriftung ziskejznaceni
+ prendimarcatura adumarcaje % GB
+ definelayout: definieerlayout definelayout
+ definelayout definelayout
+ definiscilayout definelayout %%%
+ setuplayout: stellayoutin setuplayout
+ stellelayoutein nastavvzhled
+ impostalayout seteazaaspect
+ adaptlayout: paslayoutaan adaptlayout
+ passelayoutan prizpusobvzhled
+ adattalayout adapteazaaspect
+ placeongrid: plaatsopgrid placeongrid
+ amgitterausrichten umistinamrizku
+ mettiingriglia plaseazapegrid
+ moveongrid: verplaatsopgrid moveongrid
+ amgitterneuausrichten premistinamrizku
+ spostaagriglia mutapegrid
+ showsetups: tooninstellingen showsetups
+ zeigeeinstellungen ukaznastaveni
+ mostraimpostazioni afiseazasetari
+ showframe: toonkader showframe
+ zeigerahmen ukazramecek
+ mostracornice afiseazarama
+ showgrid: toongrid showgrid
+ zeigegitter ukazmrizku
+ mostragriglia afiseazagrid
+% toonopbouw: toonopbouw showbuildup
+% zeigeaufbau ukazstrukturu
+% mostrabuildup afiseazabuildup
+ showlayout: toonlayout showlayout
+ zeigelayout ukazvzhled
+ mostralyout afiseazaaspect
+ showprint: toonprint showprint
+ zeigedruck ukazvytisk
+ mostrastampa afiseazatiparire
+ showstruts: toonstruts showstruts
+ zeigestruts ukazpodpery
+ mostrastruts afiseazastruts
+ definepapersize: definieerpapierformaat definepapersize
+ definierepapierformat definujvelikostpapiru
+ definiscidimensionicarta definestedimensiunehartie
+ setuppapersize: stelpapierformaatin setuppapersize
+ stellepapierformatein nastavvelikostpapiru
+ impostadimensionicarta seteazadimensiunihartie
+setuppaper: stelpapierin setuppaper
+ setuppaper setuppaper
+ setuppaper setuppaper
+ setuparranging: stelarrangerenin setuparranging
+ stelleanordnenein nastavusporadani
+ impostaparranging seteazaaranjareapag
+ version: versie version
+ version verze
+ versione versiune
+ setupbackgrounds: stelachtergrondenin setupbackgrounds
+ stellehintergruendeein nastavpozadi
+ impostasfondi seteazafundaluri
+ setupalign: steluitlijnenin setupalign
+ stelleausrichtungein nastavzarovnani
+ impostaallineamento seteazaalinierea
+ setupwhitespace: stelwitruimtein setupwhitespace
+ stellezwischenraumein nastavbilamista
+ impostaspaziobianco seteazaspatiualb
+ setupinteraction: stelinteractiein setupinteraction
+ stelleinteraktionein nastavinterakci
+ impostainterazione seteazainteractiunea
+ setupinteractionmenu: stelinteractiemenuin setupinteractionmenu
+ stelleinteraktionsmenueein nastavinterakcnimenu
+ impostamenuinterazione seteazameniuinteractiune
+ defineinteractionmenu: definieerinteractiemenu defineinteractionmenu
+ definiereinteraktionsmenue definujinterakcnimenu
+ definiscimenuinterazione definestemeniuinteractiune
+ disableinteractionmenu: blokkeerinteractiemenu disableinteractionmenu
+ inaktiviereinteraktionsmenue zablokujinterakcnimenu
+ disabilitamenuinterazione dezactiveazameniuinteractiune
+ interactionmenu: interactiemenu interactionmenu
+ interaktionsmenue interaktivnimenu
+ menuinterattivo meniuinteractiune
+ interactionbuttons: interactiebuttons interactionbuttons
+ interaktionsknopfe interakcnitlacitka
+ pulsantinterazione butoaneinteractiune
+ interactionbar: interactiebalk interactionbar
+ interaktionsbalken interakcnilista
+ barrainterazione barainteractiune
+ setupinteractionbar: stelinteractiebalkin setupinteractionbar
+ stelleinteraktionsbalkenein nastavinterakcnilistu
+ impostabarrainterazione seteazabarainteractiune
+ setupinteractionscreen: stelinteractieschermin setupinteractionscreen
+ stelleinteraktionsbildschirmein nastavinterakcniobrazovku
+ impostaschermointerazione seteazaecraninteractiune
+ placebookmarks: plaatsbookmarks placebookmarks
+ platzierebookmarks umistizalozky
+ mettisegnalibro plaseazasemnecarte
+ bookmark: bookmark bookmark
+ bookmark zalozka
+ segnalibro semncarte
+ definelogo: definieerbeeldmerk definelogo
+ definierelogo definujlogo
+ definiscilogo definestelogo
+ placelogos: plaatsbeeldmerken placelogos
+ platzierelogo umistiloga
+ mettiloghi punelogouri
+ definecolor: definieerkleur definecolor
+ definierefarbe definujbarvu
+ definiscicolore definesteculoare
+%definespotcolor: definespotcolor definespotcolor
+% definespotcolor definespotcolor
+% definespotcolor definespotcolor
+ definecolorgroup: definieerkleurgroep definecolorgroup
+ definierefarbengruppe definujskupinubarev
+ definiscigruppocolori definestegrupculori
+ definepalet: definieerpalet definepalet
+ definierepalette definujpaletu
+ definiscitavolozza definestepaleta
+ graycolor: grijskleur graycolor
+ graufarbe sedabarva
+ coloregrigio culoaregri
+ color: kleur color
+ farbe barva
+ colore culoare
+ startcolor: startkleur startcolor
+ startfarbe startbarva
+ iniziacolore startculoare
+ stopcolor: stopkleur stopcolor
+ stopfarbe stopbarva
+ terminacolore stopculoare
+ setupcolors: stelkleurenin setupcolors
+ stellefarbenein nastavbarvy
+ impostacolori seteazaculori
+ setupcolor: stelkleurin setupcolor
+ stellefarbeein nastavbarvu
+ impostacolore seteazaculoare
+ setuppalet: stelpaletin setuppalet
+ stellepaletteein nastavpaletu
+ impostatavolozza seteazapaleta
+ showcolor: toonkleur showcolor
+ zeigefarbe ukazbarvu
+ mostracolore afiseazaculoare
+ showcolorgroup: toonkleurgroep showcolorgroup
+ zeigefarbengruppe ukazskupinubarev
+ mostragruppocolori afiseazagrupculoare
+ showpalet: toonpalet showpalet
+ zeigepalette ukazpaletu
+ mostratavolozza afiseazapaleta
+ comparecolorgroup: vergelijkkleurgroep comparecolorgroup
+ vergleichefarbengruppe porovnejskupinubarev
+ confrontagruppocolori comparagrupculoare
+ comparepalet: vergelijkpalet comparepalet
+ vergleichepalette porovnejpaletu
+ confrontatavolozza comparapaleta
+ colorvalue: kleurwaarde colorvalue
+ farbewert hodnotabarvy
+ valorecolore valoareculoare
+ greyvalue: grijswaarde greyvalue
+ grauwert hodnotasedi
+ valoregrigio valoaregri
+ startraster: startraster startraster
+ startraster startrastr
+ iniziaraster startraster % GB
+ stopraster: stopraster stopraster
+ stopraster stoprastr
+ terminaraster stopraster
+ defineblock: definieerblok defineblock
+ definiereblock definujblok
+ definisciblocco definestebloc
+ setupblock: stelblokin setupblock
+ stelleblockein nastavblok
+ impostablocco seteazabloc
+ useblocks: gebruikblokken useblocks
+ verwendebloecke uzijbloky
+ usablocco folosestebloc
+ processblocks: verwerkblokken processblocks
+ bearbeitebloecke zpracujbloky
+ elaborablocchi proceseazabloc
+ keepblocks: handhaafblokken keepblocks
+ behaltebloecke zachovejbloky
+ tieniblocchi pastreazablocuri
+ selectblocks: selecteerblokken selectblocks
+ waehlebloeckeaus vyberbloky
+ selezionablocchi selecteazablocuri
+ hideblocks: verbergblokken hideblocks
+ verbergebloecke schovejbloky
+ nascondiblocchi ascundeblocuri
+ bypassblocks: passeerblokken bypassblocks
+ bypassblocks bypassblocks
+ saltablocchi saripesteblocuri
+ forceblocks: forceerblokken forceblocks
+ forceblocks forceblocks
+ forzablocchi forteazablocuri
+ nomoreblocks: geenblokkenmeer nomoreblocks
+ keinebloeckemehr zadnedalsibloky
+ bastablocchi gatablocuri
+ definelist: definieerlijst definelist
+ definiereliste definujseznam
+ definiscielenco definestelista
+ definecombinedlist: definieersamengesteldelijst definecombinedlist
+ definierezusammengestellteliste definujkombinovanyseznam
+ definiscielencocombinato definestelistacombinata
+listsymbol: lijstsymbool listsymbol
+ listsymbol listsymbol
+ listsymbol listsymbol
+ placelist: plaatslijst placelist
+ platziereliste umistiseznam
+ mettielenco punelista
+ plaatsruwelijst: plaatsruwelijst placerawlist
+ placerawlist placerawlist
+ placerawlist placerawlist
+ placecombinedlist: plaatssamengesteldelijst placecombinedlist
+ platzierezusammengestellteliste umistikombinovanyseznam
+ mettielencocombinato punelistacombinata
+ writetolist: schrijfnaarlijst writetolist
+ schreibezurliste zapisdoseznamu
+ scriviinelenco scrieinlista
+ writebetweenlist: schrijftussenlijst writebetweenlist
+ schreibezwischenliste zapismeziseznam
+ scrividentroelenco scrieintreliste
+
+% new
+
+ immediatetolist: directnaarlijst immediatetolist
+ immediatetolist immediatetolist
+ immediatetolist immediatetolist
+
+ immediatebetweenlist: directtussenlijst immediatebetweenlist
+ immediatebetweenlist immediatebetweenlist
+ immediatebetweenlist immediatebetweenlist
+
+ setuplist: stellijstin setuplist
+ stellelisteein nastavseznam
+ impostaelenco seteazalista
+ setupcombinedlist: stelsamengesteldelijstin setupcombinedlist
+ stellezusammengestelltelisteein nastavkombinovanyseznam
+ impostaelencocombinato seteazalistacombinata
+ determinelistcharacteristics: bepaallijstkenmerken determinelistcharacteristics
+ bestimmelistencharakeristika stanovcharakteristickuseznamu
+ determinacarattersticheelenco determinacaracteristicilelistei
+ listlength: lijstlengte listlength
+ listenlaenge delkaseznamu
+ lunghezzaelenco lungimelista
+ listwidth: lijstbreedte listwidth
+ listenbreite sirkaseznamu
+ ampiezzaelenco latimelista
+ listheight: lijsthoogte listheight
+ listenhoehe vyskaseznamu
+ altezzaelenco inaltimelista
+ nolist: geenlijst nolist
+ keineliste zadnyseznam
+ nienteelenco faralista
+ definereferencelist: definieerreferentielijst definereferencelist
+ definierereferenzliste definujseznamodkazu
+ definiscilistariferimenti definestelistareferinte
+ placereferencelist: plaatsreferentielijst placereferencelist
+ platzierereferenzliste umistiseznamodkazu
+ mettilistariferimenti punelistareferinte
+ writetoreferencelist: schrijfnaarreferentielijst writetoreferencelist
+ schreibezurreferenzliste zapisdoseznamuodkazu
+ scriviinlistariferimenti scrieinlistareferinte
+ setupreferencelist: stelreferentielijstin setupreferencelist
+ stellereferenzlisteein nastavseznamodkazu
+ impostalistariferimenti seteazalistareferinte
+ definefloat: definieerplaatsblok definefloat
+ definieregleitobjekt definujplvouciobjekt
+ definiscioggettomobile definestefloat
+ setupfloat: stelplaatsblokin setupfloat
+ stellegleitobjektein nastavplvouciobjekt
+ impostaoggettomobile seteazafloat
+ setupfloats: stelplaatsblokkenin setupfloats
+ stellegleitobjekteein nastavplvouciobjekty
+ impostaoggettimobili seteazafloats
+ splitfloat: splitsplaatsblok splitfloat
+ teilegleitobjekt rozdelplvouciobjekt
+ spezzaoggettomobile impartefloat
+ setupfloatsplitting: stelplaatsbloksplitsenin setupfloatsplitting
+ stelleplatziegeteiltegleitobjekt nastavdeleniplvoucichobjektu
+ impostaspezzamentooggettomobile seteazaimpartireafloat
+ placefloat: plaatsplaatsblok placefloat
+ placefloat placefloat
+ placefloat placefloat %%%
+ movesidefloat: verplaatszijblok movesidefloat
+ movesidefloat movesidefloat
+ movesidefloat movesidefloat
+defineplacement: definieerplaats defineplacement
+ defineplacement defineplacement
+ defineplacement defineplacement
+ setupplacement: stelplaatsin setupplacement
+ setupplacement setupplacement
+ setupplacement setupplacement
+ definecombination: definieercombinatie definecombination
+ definecombination definecombination
+ definecombination definecombination
+ startcombination: startcombinatie startcombination
+ startkombination startspojeni
+ iniziacombinazione startcombinare
+ stopcombination: stopcombinatie stopcombination
+ stopkombination stopspojeni
+ terminacombinazione stopcombinare
+ placesidebyside: plaatsnaastelkaar placesidebyside
+ platzierenebeneinander umistivedlesebe
+ mettifiancoafianco punefatainfata
+ placeontopofeachother: plaatsonderelkaar placeontopofeachother
+ platziereuntereinander umistinadsebe
+ mettiunosullaltro punedeasuprafiecareia
+ setupcaption: stelblokkopjein setupcaption
+ stellebildunterschriftein nastavpopisek
+ impostacaption seteazalegenda % GB
+ setupcaptions: stelblokkopjesin setupcaptions
+ stellebilderunterschriftein nastavpopisky
+ impostacaptions seteazalegendele % GB
+ setupcombinations: stelcombinatiesin setupcombinations
+ stellekombinationein nastavspojeni
+ impostacombinazioni seteazacombinari
+ startoverlay: startoverlay startoverlay
+ startoverlay startprekryv
+ iniziasovrapposizione startoverlay
+ stopoverlay: stopoverlay stopoverlay
+ stopoverlay stopprekryv
+ terminasovrapposizione stopoverlay
+ defineregister: definieerregister defineregister
+ definiereregister definujrejstrik
+ definisciregistro definesteregistru
+ coupleregister: koppelregister coupleregister
+ verknuepfregister propojenyrejstrik
+ accoppiaregistro cupleazaregistru
+ setupregister: stelregisterin setupregister
+ stelleregisterein nastavrejstrik
+ impostaregistro seteazaregistru
+ writetoregister: schrijfnaarregister writetoregister
+ schreibezumregister zapisdorejstriku
+ scriviinregistro scrieinregistru
+completeregister: volledigregister completeregister
+ completeregister completeregister
+ completeregister completeregister
+ placeregister: plaatsregister placeregister
+ platziereregister umistirejstrik
+ mettiregistro puneregistru
+determineregistercharacteristics: bepaalregisterkenmerken determineregistercharacteristics
+ bestimmeregistercharakteristika urcicharakteristikurejstriku
+ determinacaratteristicheregistro determinacaracteristiciregistru
+ definesorting: definieersorteren definesorting
+ definieresortieren definujtrideni
+ definisciordinamento definestesortare
+ definesynonyms: definieersynoniemen definesynonyms
+ definieresynonyme definujsynonyma
+ definiscisinonimi definestesinonim
+ setupsorting: stelsorterenin setupsorting
+ stellesortierenein nastavtrideni
+ impostaordinamento seteazasortare
+ setupsynonyms: stelsynoniemenin setupsynonyms
+ stellesynonymein nastavsynonyma
+ impostasinonimi seteazasinonime
+ startsynchronization: startsynchronisatie startsynchronization
+ startsynchronisation startsynchronizace
+ iniziasincronizzazione startsincronizare
+ stopsynchronization: stopsynchronisatie stopsynchronization
+ stopsynchronisation stopsynchronizace
+ terminasincronizzazione stopsincronizare
+ setupsynchronizationbar: stelsynchronisatiebalkin setupsynchronizationbar
+ stellesynchronisationsbalkenein nastavsynchronizacnilistu
+ impostabarrasincronizzazione setarebarasincronizare
+ setupsynchronization: stelsynchronisatiein setupsynchronization
+ stellesynchronisationein nastavsynchronizaci
+ impostasincronizzazione setaresincronizare
+ synchronizationbar: synchronisatiebalk synchronizationbar
+ synchronisationsbalken synchronizacnilista
+ barrasincronizzazione barasincronizare
+ synchronize: synchroniseer synchronize
+ synchronisieren synchronizovat
+ sincronizza sincronizeaza
+ useexternaldocument: gebruikexterndocument useexternaldocument
+ verwendeexteresdokument uzijexternidokument
+ usadocumentoesterno folosestedocumentextern
+ useURL: gebruikURL useURL
+ verwendeURL uzijURL
+ usaURL folosesteURL
+ useurl: gebruikurl useurl
+ verwendeurl uzijurl
+ usaurl folosesteurl
+ setupurl: stelurlin setupurl
+ stelleurlein nastavurl
+ impostaurl seteazaurl
+ coupledocument: koppeldocument coupledocument
+ verknuepfedokument propojenydokument
+ accoppiadocumento cupleazadocument
+ setupprograms: stelprogrammasin setupprograms
+ stelleprogrammein nastavprogramy
+ impostaprogrammi seteazaprograme
+ defineprogram: definieerprogramma defineprogram
+ definiereprogramme definujprogram
+ definisciprogramma definesteprogram
+ program: programma program
+ programm program
+ programma program
+ setuppagetransitions: stelpaginaovergangenin setuppagetransitions
+ stelleseitenuebergangein nastavprechodstrany
+ impostatransizionepagina seteazatranzitiepagina
+ defineprofile: definieerprofiel defineprofile
+ definiereprofil definujprofil
+ definisciprofilo definesteprofil
+ defineversion: definieerversie defineversion
+ definiereversion definujverzi
+ definisciversion definesteversiune
+ markversion: markeerversie markversion
+ beschrifteversion oznacverzi
+ marcaversione marcheazaversiune % GB
+ selectversion: selecteerversie selectversion
+ waehleversionaus vyberverzi
+ selezionaversione selecteazaversiune % GB
+ startprofile: startprofiel startprofile
+ startprofil startprofil
+ iniziaprofilo startprofil
+ startversion: startversie startversion
+ startversion startverze
+ iniziaversione startversiune
+ setupprofiles: stelprofielenin setupprofiles
+ stelleprofilein nastavprofily
+ impostaprofili seteazaprofile
+ setupversions: stelversiesin setupversions
+ stelleversionein nastavverze
+ impostaversioni seteazaversiuni
+ stopprofile: stopprofiel stopprofile
+ stopprofil stopprofil
+ terminaprofili stopprofil
+ stopversion: stopversie stopversion
+ stopversion stopverze
+ terminaversioni stopversiune
+ followprofile: volgprofiel followprofile
+ folgeprofil dodrzujprofil
+ seguiprofilo urmeazaprofil
+ followprofileversion: volgprofielversie followprofileversion
+ folgeprofilversion dodrzujverziprofilu
+ seguiversioneprofilo urmeazaversiuneprofil
+ followversion: volgversie followversion
+ folgeversion dodrzujverzi
+ seguiversione urmeazaversiune
+ definedescription: doordefinieren definedescription
+ definierebeschreibung definujpopis
+ definiscidescrizione definestedescriere
+ definelabel: doorlabelen definelabel
+ definierelabel definujpopisek
+ definiscietichetta definesteeticheta
+ defineenumeration: doornummeren defineenumeration
+ definierenummerierung definujvycet
+ definiscienumerazione definesteenumerare
+ defineindenting: doorspringen defineindenting
+ definiereeinzug definujodsazovani
+ definiscirientro definestealiat
+ setupdescriptions: steldoordefinierenin setupdescriptions
+ definierebeschreibungen nastavpopisy
+ impostadescrizioni seteazadescriere
+ setupenumerations: steldoornummerenin setupenumerations
+ stellebeschreibungein nastavvycty
+ impostaenumerazioni seteazaenumerare
+ setupindentations: steldoorspringenin setupindentations
+ stelleeinzuegein nastavodsazovani
+ impostarientri seteazaaliniate
+ setuptab: steltabin setuptab
+ stelletabein nastavtab
+ impostatab seteazatab
+ tab: tab tab
+ tab tab
+ tab tab
+ setupexternalfigures: stelexternefigurenin setupexternalfigures
+ stelleexterneabbildungenein nastavexterniobrazy
+ impostafigureesterne seteazafiguriexterne
+ showexternalfigures: toonexternefiguren showexternalfigures
+ zeigeexterneabbildungen ukazexterniobrazy
+ mostrafiguresterne afiseazafiguriexterne
+ externalfigure: externfiguur externalfigure
+ externeabbildung externiobraz
+ figuraesterna figuraexterna
+ useexternalfigure: gebruikexternfiguur useexternalfigure
+ verwendeexterneabbildung uzijexterniobraz
+ usafiguraesterna folosestefiguraexterna
+ startfigure: startfiguur startfigure
+ startabbildung startobraz
+ iniziafigura startfigura
+ referring: refereer referring
+ referieren odkazujici
+ referring referring % GB
+ remark: toelichting remark
+ bemerkung oznaceni
+ commento remarca
+ colorbar: kleurenbalk colorbar
+ farbbalken barevnalista
+ barracolori baraculoare
+ grid: rooster grid
+ gitter mrizka
+ griglia grid
+ button: button button
+ knopf tlacitko
+ pulsante buton
+ menubutton: menubutton menubutton
+ menueknopf tlacitkomenu
+ pulsantemenu butonmeniu
+ setupbuttons: stelbuttonsin setupbuttons
+ stelleknopfein nastavtlacitka
+ impostapulsanti seteazabutoane
+ usereferences: gebruikreferenties usereferences
+ verwendereferenzen uzijodkazy
+ usariferimenti folosestereferinte
+ placereferencelist: plaatsreferentielijst placereferencelist
+ placereferencelist placereferencelist
+ placereferencelist placereferencelist
+ setupreferencelist: stelreferentielijstin setupreferencelist
+ stellereferenzlisteein nastavseznamodkazu
+ impostalistariferimenti seteazalistareferinte
+ setupreferencing: stelrefererenin setupreferencing
+ stellereferenzierenein nastavodkazovani
+ impostariferimento seteazareferinte
+ textreference: tekstreferentie textreference
+ textreferenz odkaznatext
+ riferimentotesto referintatext
+ pagereference: paginareferentie pagereference
+ seitenreferenz odkaznastranu
+ riferimentopagina referintapagina
+ reference: referentie reference
+ referenz odkaz
+ riferimento referinta
+ definereference: definieerreferentie definereference
+ definierereferenz definujodkaz
+ definisciriferimento definestereferinte
+ definereferenceformat: definieerreferentieformaat definereferenceformat
+ definierereferenzformat definujformatodkazu
+ definisciformatoriferimento definesteformatreferinte
+ useJSscripts: gebruikJSscripts useJSscripts
+ verwendeJSscript uzijJSscripts
+ usaJSscripts folosestescriptJS
+ from: uit from
+ von zref
+ da din
+ in: in in
+ in tref
+ in in
+ at: op at
+ bei pref
+ al la % GB
+ about: - about
+ ueber oref
+ intorno despre
+ goto: naar goto
+ zu jdina
+ vaia dute
+ atpage: oppagina atpage
+ aufseite nastrane
+ apagina lapagina
+ somewhere: ergens somewhere
+ irgendwo nekde
+ daqualcheparte undeva
+navigating: navigerend navigating
+ navigating navigating
+ navigating navigating
+ ref: ref ref
+ ref ref
+ rif ref
+ gotobox: naarbox gotobox
+ zurbox jdinabox
+ vaiabox dutebox % GB
+ gotopage: naarpagina gotopage
+ zurseite jdinastranu
+ vaiapagina dutepagina
+ placeformula: plaatsformule placeformula
+ platziereformel umistirovnici
+ mettiformula puneformula
+ placesubformula: plaatssubformule placesubformula
+ platziereunterformel umistipodrovnici
+ mettisottoformula punesubformula
+moveformula: verplaatsformule moveformula
+ moveformula moveformula
+ spostaformula moveformula
+ setupformulas: stelformulesin setupformulae
+ stelleformelnein nastavrovnice
+ impostaformule seteazaformule
+ formulanumber: formulenummer formulanumber
+ formelnummer cislorovnice
+ numeroformula numarformula
+ subformulanumber: subformulenummer subformulanumber
+ unterformelnummer cislopodrovnice
+ numerosottoformula numarsubformula
+ leg: leg leg
+ leg leg
+ leg leg
+ fact: geg fact
+ geg fakt
+ fatto fact
+ mathematics: wiskunde mathematics
+ mathematik matematika
+ matematica matematica
+ dimension: dimensie dimension
+ dimension rozmer
+ dimensione dimensiune
+ nodimension: geendimensie nodimension
+ keindimension zadnyrozmer
+ nientedimensioni faradimensiune
+ startenvironment: startomgeving startenvironment
+ startumgebung startprostredi
+ iniziaambiente startmediu
+ stopenvironment: stopomgeving stopenvironment
+ stopumgebung stopprostredi
+ terminaambiente stopmediu
+ startcomponent: startonderdeel startcomponent
+ startkomponente startkomponenta
+ iniziacomponente startcomponenta
+ stopcomponent: stoponderdeel stopcomponent
+ stopkomponente stopkomponenta
+ terminacomponente stopcomponenta
+ startproduct: startprodukt startproduct
+ startprodukt startprodukt
+ iniziaprodotto startprodus
+ stopproduct: stopprodukt stopproduct
+ stopprodukt stopprodukt
+ terminaprodotto stopprodus
+ startproject: startproject startproject
+ startprojekt startprojekt
+ iniziaprogetto startproiect
+ stopproject: stopproject stopproject
+ stopprojekt stopprojekt
+ terminaprogetto stopproiect
+ setups: instellingen setups
+ einstellungen nastaveni
+ impostazioni setari
+ project: project project
+ projekt projekt
+ progetto proiect
+ component: onderdeel component
+ komponente komponenta
+ componenet componenta
+ product: produkt product
+ produkt produkt
+ prodotto produs
+ environment: omgeving environment
+ umgebung prostredi
+ ambiente mediu
+ nomorefiles: geenfilesmeer nomorefiles
+ keinedateienmehr zadnedalsisoubory
+ bastafile farafisiere
+ getbuffer: haalbuffer getbuffer
+ holepuffer ziskejbuffer
+ prendibuffer adubuffer
+ setupbuffer: stelbufferin setupbuffer
+ stellepufferein nastavbuffer
+ impostabuffer seteazabuffer
+ typebuffer: typebuffer typebuffer
+ tippepuffer typebuffer
+ typebuffer scriebuffer % GB
+ definebuffer: definieerbuffer definebuffer
+ definierepuffer definujbuffer
+ definiscibuffer definestebuffer
+ unitmeaning: betekenis unitmeaning
+ bedeutung vyznam
+ nomeunita numeunitate % GB
+ infull: voluit infull
+ volleswort plnezneni
+ perlungo pelung
+ quotation: citaat quotation
+ zitat citace
+ citazione citat
+ quote: citeer quote
+ zitieren citovat
+ menzione minicitat
+ startquotation: startcitaat startquotation
+ startzitat startcitace
+ iniziacitazione startcitat
+ stopquotation: stopcitaat stopquotation
+ stopzitat stopcitace
+ terminacitazione stopcitat
+ setupquote: stelciterenin setupquote
+ stellezitierenein nastavcitaci
+ impostamenzione seteazaminicitat
+ define: definieer define
+ definieren definuj
+ definisci defineste
+ redo: herhaal redo
+ wiederholen opakovat
+ rifai refa
+ usecommands: gebruikcommandos usecommands
+ verwendebefehl uzijprikazy
+ usacomandi folosestecomenzi
+ definestartstop: definieerstartstop definestartstop
+ definierestartstop definujstartstop
+ definisciiniziatermina definestestartstop
+ setupstartstop: stelstartstopin setupstartstop
+ setupstartstop setupstartstop
+ impostainiziatermina setupstartstop
+ startlocal: startlokaal startlocal
+ startlokal startlokalni
+ inizialocale startlocal
+ stoplocal: stoplokaal stoplocal
+ stoplokal stoplokalni
+ terminalocale stoplocal
+ startglobal: startglobaal startglobal
+ startglobal startglobalni
+ iniziaglobale startglobal
+ stopglobal: stopglobaal stopglobal
+ stopglobal stopglobalni
+ terminaglobale stopblobal
+ macroname: naam name
+ name jmeno
+ nome nume
+ definemakeup: definieeropmaak definemakeup
+ definiereumbruch definujupravu
+ definiscimakeup definestemakeup % GB
+ setupmakeup: stelopmaakin setupmakeup
+ stelleumbruchein nastavupravu
+ impostamakeup seteazamakeup
+ startmakeup: startopmaak startmakeup
+ startumbruch startuprava
+ iniziamakeup startmakeup
+ stopmakeup: stopopmaak stopmakeup
+ stopumbruch stopuprava
+ terminamakeup stopmakeup
+ useexternalsoundtrack: gebruikexterngeluidsfragment useexternalsoundtrack
+ verwendeexternestonstueck uzijexternizvuk
+ usacolonnasonoraesterna folosestemuzicaexterna
+ useexternalfile: gebruikexternefile useexternalfile
+ verwendeexternedatei uzijexternisoubor
+ usafileesterno folosestefisierextern
+ useexternalfiles: gebruikexternefiles useexternalfiles
+ verwendeexternedateien uzijexternisoubory
+ usafileesterni folosestefisiereexterne
+ referral: kenmerk referral
+ verweis odkaz
+ referral referit % GB
+ referraldate: kenmerkdatum referraldate
+ verweisdatum odkaznadatum
+ datareferral datareferit
+ high: hoog high
+ hoch vysoky
+ ap inalt
+ lohi: laho lohi
+ tiho nivy
+ pedap jossus
+ low: laag low
+ tief nizky
+ ped jos
+ fraction: breuk fraction
+ bruch zlomek
+ frazione fractie
+ chem: chem chem
+ chem chem
+ chim chem
+ startopposite: startnaast startopposite
+ startgegenueber startprotejsek
+ iniziaopposto startopozit
+ stopopposite: stopnaast stopopposite
+ stopgegenueber stopprotejsek
+ terminaopposto stopopozit
+ setupoppositeplacing: stelnaastplaatsenin setupoppositeplacing
+ stellegegenueberplatzierenein nastavumisteniprotejsku
+ impostaposizionamentoopposti seteazaplasareaopozita
+ startpositioning: startpositioneren startpositioning
+ startpositionieren startumistovani
+ iniziaposizionamento startpozitionare
+ stoppositioning: stoppositioneren stoppositioning
+ stoppositionieren stopumistovani
+ terminaposizionamento stoppozitionare
+ position: positioneer position
+ position pozice
+ posizione pozitie
+ setuppositioning: stelpositionerenin setuppositioning
+ stellepositionierenein nastavumistovani
+ impostaposizionamento setarepozitie
+ rotate: roteer rotate
+ drehen otocit
+ ruota roteste % GB
+ setuprotate: stelroterenin setuprotate
+ stelledrehenein nastavotoceni
+ impostarotazione seteazarotare
+ mirror: spiegel mirror
+ spiegeln zrcadlit
+ riflessione reflexie
+ scale: schaal scale
+ format meritko
+ scala scala % GB
+ setupnumbering: stelnummerenin setupnumbering
+ stellenummerierungein nastavcislovani
+ impostanumerazione seteazanumerotare
+ reset: reset reset
+ ruecksetzten reset
+ reimposta reset
+ setuppublications: stelpublicatiesin setuppublications
+ stellepublikationein nastavpublikace
+ impostapubblicazioni seteazapublicatii
+ publication: publicatie publication
+ publikation publikace
+ pubblicazione publicatie
+ definehbox: definieerhbox definehbox
+ definierehbox definujhbox
+ definiscihbox definestehbox
+ adding: toevoegen adding
+ zusatz scitani
+ adding adauga % GB
+ periods: punten periods
+ punkt tecky
+ punti puncte
+ setuphyphenmark: stelkoppeltekenin setuphyphenmark
+ stellebindestrichein nastavdelitko
+ impostasegnosillabazione seteazaliniesilabe % GB
+ setupinterlinespace: stelinterliniein setupinterlinespace
+ stellezeilenabstandein nastavmeziradkovoumezeru
+ impostainterlinea seteazaspatiuinterliniar
+ setupspacing: stelspatieringin setupspacing
+ stellespatiumein nastavradkovani
+ impostaspaziatura seteazaspatiu
+ setuptolerance: steltolerantiein setuptolerance
+ stelletoleranzein nastavtoleranci
+ impostatolleranza seteazatoleranta
+ setupsystem: stelsysteemin setupsystem
+ stellesystemein nastavsystem
+ impostasistema seteazasistem
+ usepath: gebruikgebied usedirectory
+ benutzeverzeichnis uzijadresar % TOBIAS
+ usacartella folosestedirector % GB
+ defineparagraphs: definieeralineas defineparagraphs
+ definiereabsaetze definujodstavce
+ definiscicapoversi definesteparagraf
+ setupparagraphs: stelalineasin setupparagraphs
+ stelleabsaetzeein nastavodstavce
+ impostacapoversi seteazaparagrafe
+ donttest: geentest donttest
+ keintest zadnytest
+ notest nutesta
+ setupcomment: stelcommentaarin setupcomment
+ stellekommentarein nastavkomentar
+ impostacommento seteazacomentariu
+ comment: commentaar comment
+ kommentar komentar
+ commento comentariu
+ definefield: definieerveld definefield
+ definierefeld definujpole
+ definiscicampo definestecamp
+ definemainfield: definieerhoofdveld definemainfield
+ definierehauptfeld definujhlavnipole
+ definiscicampoprincipale definestecampprincipal
+ definesubfield: definieersubveld definesubfield
+ definieresubfeld definujpodpole
+ definiscisottocampo definestesubcamp
+ clonefield: kloonveld clonefield
+ klonierefeld klonujpole
+ clonacampo cloneazacamp
+ copyfield: copieerveld copyfield
+ kopierefeld kopirujpole
+ copiacampo copiazacamp
+ setupfield: stelveldin setupfield
+ stellefeldein nastavpole
+ impostacampo seteazacamp
+ setupfields: stelveldenin setupfields
+ stellefelderin nastavvsechnapole
+ impostacampi seteazacampuri
+ field: veld field
+ feld pole
+ campi camp
+ fitfield: passendveld fitfield
+ passendfeld prizpusobivepole % or vhodnepole
+ adattacampo potrivestecamp
+ logfields: registreervelden logfields
+ registrierefelder zaznamovepole
+ logcampi logcampuri % GB
+ showfields: toonvelden showfields
+ zeigefelder ukazpole
+ mostracampi afiseazacampuri
+ tooltip: suggestie tooltip
+ tooltip bublinkovanapoveda
+ tooltip tooltip % GB
+ fillinfield: invulveld fillinfield
+ ausfuellfeld vyplnovepole
+ camporiempimento campumplere
+ definefieldstack: definieerveldstapel definefieldstack
+ definierefeldstapel definujzasobnikpoli
+ definiscistackcampi definestestivacampuri % GB
+ fieldstack: veldstapel fieldstack
+ feldstapel zasobnikpoli
+ stackcampi stivacampuri
+ setupforms: stelformulierenin setupforms
+ setupforms setupforms
+ impostaforms seteazaformulare % GB
+ setupclipping: stelclipin setupclipping
+ stelleausschnittein nastavorez
+ impostaclippling seteazaclipping % GB
+ clip: clip clip
+ ausschnitt orez
+ clip clip
+ placelegend: plaatslegenda placelegend
+ platzierelegende umistilegendu
+ mettilegenda punelegenda
+ setuplegend: stellegendain setuplegend
+ stellelegendeein nastavlegendu
+ impostalegenda seteazalegenda
+ setuppagecomment: stelpaginacommentaarin setuppagecomment
+ stelleseitenkommentarein nastavkomentarstrany
+ impostacommentopagina seteazacomentariupagina
+ setupstrut: stelstrutin setupstrut
+ setupstrut setupstrut
+ impostastrut seteazastrut
+ definerule: definieerlijn definerule
+ definerule definerule
+ definiscilinea definesterigla
+ placerule: plaatslijn placerule
+ placerule placerule
+ mettilinea punerigla
+ setuprule: stellijnin setuprule
+ setuprule setuprule
+ impostalinea seteazarigla
+ definetextvariable: definieertekstvariabele definetextvariable
+ definetextvariable definetextvariable
+ definiscivariabiletesto definestevariabilatext
+ setuptextvariable: steltekstvariabelein setuptextvariable
+ setuptextvariable setuptextvariable
+ impostavariabiletesto seteazavariabilatext
+ settextvariable: kentekstvariabeletoe settextvariable
+ settextvariable settextvariable
+ setvariabiletesto setvariabilatext % GB
+ placetextvariable: plaatstekstvariabele placetextvariable
+ placetextvariable placetextvariable
+ mettivariabiletesto punevariabilatext
+ textvariable: tekstvariabele textvariable
+ textvariable textvariable
+ variabiletesto variabilatext
+ definetextposition: definieertekstpositie definetextposition
+ definetextposition definetextposition
+ definisciposizionetesto definestepozitietext
+ setuptextposition: steltekstpositiein setuptextposition
+ setuptextposition setuptextposition
+ impostaposizionetesto seteazapozitietext
+ positiontext: positioneertekst positiontext
+ positiontext positiontext
+ posizionatesto pozitietext % GB
+ definerawfont: definerawfont definerawfont
+ definerawfont definerawfont
+ definiscifontgrezzo definestefontraw
+ switchtorawfont: switchtorawfont switchtorawfont
+ switchtorawfont switchtorawfont
+ passaafontgrezzo trecilafontraw
+
+ placeheadtext: plaatskoptekst placeheadtext
+ placeheadtext placeheadtext
+ posizionatestotesta placeheadtext
+
+placeheadnumber: plaatskopnummer placeheadnumber
+ placeheadnumber placeheadnumber
+ posizionanumerotesta placeheadnumber
+
+ definepagebreak: definieerpaginaovergang definepagebreak
+ definepagebreak definepagebreak
+ definepagebreak definepagebreak
+definecolumnbreak: definieerkolomovergang definecolumnbreak
+ definecolumnbreak definecolumnbreak
+ definecolumnbreak definecolumnbreak
+
+\stopcommands
+
+% ^ ^ ^ nadenken over \settextvariable vs \setuptextvariable in nl
+
+%D For downward compatibilities sake:
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+
+ setupitemgroups: stelopsommingenin setupitemizations
+ stelleaufzaehlungenein nastavvycty
+ impostaelencazioni setareitemization
+
+\stopcommands
+
+%D \stopcompressdefinitions
+
+%D There are a lot of variables that users can use in setups
+%D and dedicated macros. ({\em I still have to check the
+%D english names.})
+
+%D \startcompressdefinitions
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ topheight: bovenhoogte topheight
+ hoeheoben vyskahorejsku
+ altezzacima inaltimesus
+ topdistance: bovenafstand topdistance
+ abstandoben vzdalenosthorejsku
+ distanzacima distantasus
+ headerheight: hoofdhoogte headerheight
+ kopfzeilenhoehe vyskazahlavi
+ altezzaintestazione inaltimeantet
+ headerdistance: hoofdafstand headerdistance
+ kopfzeilenabstand vzdalenostzahlavi
+ distanzaintestazione distantaantet
+ textheight: teksthoogte textheight
+ texthoehe vyskatextu
+ altezzatesto inaltimetext
+ footerdistance: voetafstand footerdistance
+ fusszeileabstand vzdalenostupati
+ distanzapdp distantasubsol
+ footerheight: voethoogte footerheight
+ fusszeilenhoehe vyskaupati
+ altezzapdp inaltimesubsol
+ bottomdistance: onderafstand bottomdistance
+ abstandunten vzdalenostspodku
+ distanzafondo distantajos
+ bottomheight: onderhoogte bottomheight
+ hoeheunten vyskaspodku
+ altezzafondo inaltimejos
+ marginwidth: margebreedte marginwidth
+ marginalbreite sirkamarginalie
+ ampiezzamargine latimemargine % GB
+ leftmarginwidth: linkermargebreedte leftmarginwidth
+ linkemarginalbreite sirkalevemarginalie
+ ampiezzamarginesinistro latimemarginestanga
+ rightmarginwidth: rechtermargebreedte rightmarginwidth
+ rechtemarginalbreite sirkapravemarginalie
+ ampiezzamarginedestro latimemarginedreapta
+ margindistance: margeafstand margindistance
+ marginalafstand vzdalenostmarginalie
+ distanzamargine distantamargine
+ leftmargindistance: linkermargeafstand leftmargindistance
+ linkemarginalafstand vzdalenostlevemarginalie
+ distanzamarginesinistro distantamarginestanga
+ rightmargindistance: rechtermargeafstand rightmargindistance
+ rechtemarginalafstand vzdalenostpravemarginalie
+ distanzamarginedestro distantamarginedreapta
+ edgewidth: randbreedte edgewidth
+ randbreite sirkaokraje
+ ampiezzabordo latimecolturi
+ leftedgewidth: linkerrandbreedte leftedgewidth
+ breitelinkerrand sirkalevehookraje
+ ampiezzabordosinistro latimecoltstanga
+ rightedgewidth: rechterrandbreedte rightedgewidth
+ breiterechterrand sirkapravehookraje
+ ampiezzabordodestro latimecoltdreapta
+ edgedistance: randafstand edgedistance
+ randabstand vzdalenostokraje
+ distanzabordo distantacolt
+ leftedgedistance: linkerrandafstand leftedgedistance
+ abstandlinkerrand vzdalenostlevehookraje
+ distanzabordosinistro distantacoltstanga
+ rightedgedistance: rechterrandafstand rightedgedistance
+ abstandrechterrand vzdalenostpravehookraje
+ distanzabordodestro distantacoltdreapta
+ innermarginwidth: binnenmargebreedte innermarginwidth
+ innermarginwidth innermarginwidth
+ innermarginwidth innermarginwidth
+ outermarginwidth: buitenmargebreedte outermarginwidth
+ outermarginwidth outermarginwidth
+ outermarginwidth outermarginwidth
+innermargindistance: binnenmargeafstand innermargindistance
+ innermargindistance innermargindistance
+ innermargindistance innermargindistance
+outermargindistance: buitenmargeafstand outermargindistance
+ outermargindistance outermargindistance
+ outermargindistance outermargindistance
+ inneredgewidth: binnenrandbreedte inneredgewidth
+ inneredgewidth inneredgewidth
+ inneredgewidth inneredgewidth
+ outeredgewidth: buitenrandbreedte outeredgewidth
+ outeredgewidth outeredgewidth
+ outeredgewidth outeredgewidth
+ inneredgedistance: binnenrandafstand inneredgedistance
+ inneredgedistance inneredgedistance
+ inneredgedistance inneredgedistance
+ outeredgedistance: buitenrandafstand outeredgedistance
+ outeredgedistance outeredgedistance
+ outeredgedistance outeredgedistance
+ textwidth: tekstbreedte textwidth
+ textbreite sirkatextu
+ ampiezzatesto latimetext
+ makeupwidth: zetbreedte makeupwidth
+ satzbreite sirkasazby
+ ampiezzamakeup latimemakeup % GB
+ makeupheight: zethoogte makeupheight
+ satzhoehe vyskasazby
+ altezzamakeup inaltimemakeup
+ topspace: kopwit topspace
+ kopfweite odsazenishora
+ spaziocima spatiusus
+ bottomspace: bodemwit bottomspace
+ bottomspace bottomspace
+ spaziofondo spatiujos
+ backspace: rugwit backspace
+ rumpfweite odsazenizleva
+ spaziodietro spatiuspate % GB
+ cutspace: snijwit cutspace
+ cutspace cutspace
+ cutspace cutspace % GB
+ paperwidth: papierbreedte paperwidth
+ papierbreite sirkapapiru
+ ampiezzacarta latimehartie
+ paperheight: papierhoogte paperheight
+ papierhoehe vyskapapiru
+ altezzacarta inaltimehartie
+ printpaperwidth: printpapierbreedte printpaperwidth
+ printpapierbreite sirkatiskpapiru
+ ampiezzacartastampa latimehartieimprimanta % GB
+ printpaperheight: printpapierhoogte printpaperheight
+ printpapierhoehe vyskatiskpapiru
+ altezzacartastampa inaltimehartieimprimanta % GB
+ pageoffset: paginaoffset pageoffset
+ pageoffset pageoffset
+ pageoffset pageoffset
+ pagedepth: paginadiepte pagedepth
+ pagedepth pagedepth
+ pagedepth pagedepth
+ headlevel: kopniveau headlevel
+ kopfniveau hlavniuroven
+ livellotesta niveltitlu % GB
+ linewidth: lijndikte linethickness
+ liniendicke tloustkacary
+ spessoreriga grosimelinie
+ totalnumberofpages: totaalaantalpaginas totalnumberofpages
+ gesamtseitenanzahl celkovypocetstran
+ numerototaledipagine numartotalpagini
+numberofsubpages: aantalsubpaginas numberofsubpages
+ numberofsubpages numberofsubpages
+ numberofsubpages numberofsubpages
+ useXMLfilter: gebruikXMLfilter useXMLfilter
+ useXMLfilter useXMLfilter
+ useXMLfilter useXMLfilter
+
+definecolumnset: definieerkolomgroep definecolumnset
+ definecolumnset definecolumnset
+ definiscigruppocolonne definecolumnset
+ setupcolumnset: stelkolomgroepin setupcolumnset
+ setupcolumnset setupcolumnset
+ impostagruppocolonne setupcolumnset
+ startcolumnset: startkolomgroep startcolumnset
+ startcolumnset startcolumnset
+ iniziagruppocolonne startcolumnset
+ stopcolumnset: stopkolomgroep stopcolumnset
+ stopcolumnset stopcolumnset
+ terminagruppocolonne stopcolumnset
+
+ setupcolumnsetlines: stelkolomgroepregelsin setupcolumnsetlines
+ setupcolumnsetlines setupcolumnsetlines
+ setupcolumnsetlines setupcolumnsetlines
+ setupcolumnsetstart: stelkolomgroepstartin setupcolumnsetstart
+ setupcolumnsetstart setupcolumnsetstart
+ setupcolumnsetstart setupcolumnsetstart
+
+startcolumnmakeup: startkolomopmaak startcolumnmakeup
+ startcolumnmakeup startcolumnmakeup
+ startcolumnmakeup startcolumnmakeup
+
+ stopcolumnmakeup: stopkolomopmaak stopcolumnmakeup
+ stopcolumnmakeup stopcolumnmakeup
+ stopcolumnmakeup stopcolumnmakeup
+
+ usetypescript: gebruiktypescript usetypescript
+ usetypescript usetypescript
+ usetypescript usetypescript
+
+\stopcommands
+
+%D \stopcompressdefinitions
+
+%D At \PRAGMA\ we use an extended version of \CONTEXT. The
+%D commands below are part of this. Beware of conflicts when
+%D defining your own.
+
+%D \startcompressdefinitions
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ startdocument: startdocument startdocument
+ startdokument startdokument
+ iniziadocumento startdocument
+ stopdocument: stopdocument stopdocument
+ stopdokument stopdokument
+ terminadocumento stopdocument
+ startoverzicht: startoverzicht startoverview
+ startueberblick startprehled
+ iniziaoverview startoverview % GB
+ stopoverzicht: stopoverzicht stopoverview
+ stopueberblick stopprehled
+ terminaoverview stopoverview
+ label: label label
+ label poppisek
+ etichetta eticheta
+%
+% obsolete
+%
+% stelbrievenin: stelbrievenin setupcorrespondence
+% stellekorrespondenzein nastavkorespondenci
+% impostacorrispondenza seteazacorespondenta
+% brieven: brieven letters
+% briefe dopisy
+% lettere litere
+% brief: brief letter
+% brief dopis
+% lettera litera
+% sheet: sheet sheet
+% blatt list
+% foglio sheet
+% stelstickersin: stelstickersin setupstickers
+% stellestickerein nastavetikety
+% impostafrancobolli seteazastickers % GB
+% stelsheetsin: stelsheetsin setupsheets
+% stelleblattein nastavlisty
+% impostafogli seteazasheets
+%
+ labels: labels labels
+ labels popisky
+ etichette etichete
+ domicile: woonplaats domicile
+ wohnort bydliste
+ domicilio domiciliu
+
+\stopcommands
+
+%D \stopcompressdefinitions
+
+\stoplogginginterface
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/mult-con.tex b/Master/texmf-dist/tex/context/base/mult-con.tex
new file mode 100644
index 00000000000..9a506832107
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mult-con.tex
@@ -0,0 +1,2949 @@
+%D \module
+%D [ file=mult-con,
+%D version=2000.09.12,
+%D title=\CONTEXT\ Multilingual Macros,
+%D subtitle=Constants,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% additions are marked as % new
+
+%D In this rather large definition file we are going to tell
+%D \CONTEXT\ which constants, variables and elements we use.
+%D
+%D The German translations were provided by Tobias Burnus,
+%D the Czech ones by Tom Hudec, the Italian ones by Giuseppe
+%D Bilotta.
+
+\writestatus{loading}{Context Multilingual Macros / Constants}
+
+\startlogginginterface context.con
+
+%D First come some variables. These are used as keywords and
+%D therefore need a different treatment.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ one: een one
+ eins jedna
+ uno unu
+ two: twee two
+ zwei dve
+ due doi
+ three: drie three
+ drei tri
+ tre trei
+ four: vier four
+ vier ctyri
+ quattro patru
+ five: vijf five
+ fuenf pet
+ cinque cinci
+\stopvariables
+
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ environment: omgeving environment
+ umgebung prostredi
+ ambiente mediu
+ component: onderdeel component
+ komponente komponenta
+ componente componenta
+ product: produkt product
+ produkt produkt
+ prodotto produs
+ project: project project
+ projekt projekt
+ progetto proiect
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D Of course we need the names of the months.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ sunday: zondag sunday
+ sonntag nedele
+ domenica duminica
+ monday: maandag monday
+ montag pondeli
+ lunedi luni
+ tuesday: dinsdag tuesday
+ dienstag utery
+ martedi marti
+ wednesday: woensdag wednesday
+ mittwoch streda
+ mercoledi miercuri
+ thursday: donderdag thursday
+ donnerstag ctvrtek
+ giovedi joi
+ friday: vrijdag friday
+ freitag patek
+ venerdi vineri
+ saturday: zaterdag saturday
+ samstag sobota
+ sabato sambata
+\stopvariables
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ january: januari January
+ Januar leden
+ gennaio ianuarie
+ february: februari February
+ Februar unor
+ febbraio februarie
+ march: maart March
+ Maerz brezen
+ marzo martie
+ april: april April
+ April duben
+ aprile aprilie
+ may: mei May
+ Mai kveten
+ maggio mai
+ june: juni June
+ Juni cerven
+ giugno iunie
+ july: juli July
+ Juli cervenec
+ luglio iulie
+ august: augustus August
+ August srpen
+ agosto august
+ september: september September
+ September zari
+ settembre septembrie
+ october: oktober October
+ Oktober rijen
+ ottobre octombrie
+ november: november November
+ November listopad
+ novembre noiembrie
+ december: december December
+ Dezember prosinec
+ dicembre decembrie
+\stopvariables
+
+%D Next we introduce some general label bound variables:
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ atpage: oppagina atpage
+ aufseite nastrance
+ apagina lapagina
+ hencefore: hierboven hencefore
+ vorher vyse
+ precedente precedent
+ hereafter: hieronder hereafter
+ nachher nize
+ seguente urmator
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D User defined commands are language specific, so we have to
+%D use variables when defining them. First we define some
+%D general structuring variables:
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ sectionlevel: sectie section
+ abschnitt oddil
+ paragrafo sectiune
+ part: deel part
+ teil cast
+ parte parte
+ chapter: hoofdstuk chapter
+ kapitel kapitola
+ capitolo capitol
+ subject: onderwerp subject
+ thema tema
+ argomento subiect
+ section: paragraaf section
+ absatz sekce
+ capoverso sectiune
+ title: titel title
+ titel titul
+ titolo titlu
+ margintitle: margetitel margintitle
+ marginaltitel titulmarginalie
+ titoloinmargine titlumarginal
+ content: inhoud content
+ inhalt obsah
+ indice cuprins
+ contents: inhouden contents
+ inhalte obsah
+ indici cuprinsuri
+ appendix: bijlage appendix
+ anhang dodatek
+ appendice apendix
+ appendices: bijlagen appendices
+ anhaenge dodatky
+ appendici apendixuri
+ bodypart: hoofdtekst bodypart
+ haupttext hlavnicast
+ testoprincipale principal % GB
+ bodymatter: hoofdteksten bodymatter
+ haupttexte hlavnicasti
+ testiprincipali principalul % GB
+ frontpart: inleiding frontpart
+ einleitung prednicast
+ prefazione prolog
+ frontmatter: inleidingen frontmatter
+ einleitungen prednicasti
+ preambolo prologul
+ backpart: uitleiding backpart
+ epilog epilog
+ postfazione epilog % GB
+ backmatter: uitleidingen backmatter
+ epiloge epilogy
+ postambolo epilogul % GB
+ footnote: voetnoot footnote
+ fussnote poznamkapodcarou
+ notapdp notasubsol
+ endnote: eindnoot endnote
+ endnote endnote
+ endnote endnote
+ system: systeem system
+ systeme system
+ sistema sistem
+
+\stopvariables
+
+%D For Taco:
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ subsection: subparagraaf subsection
+ unterabsatz podsekce
+ sottocapoverso subsectiune
+
+ subsubsection: subsubparagraaf subsubsection
+ unterunterabsatz podpodsekce
+ sottosottocapoverso subsubsectiune
+
+ subsubsubsection: subsubsubparagraaf subsubsubsection
+ unterunterunterabsatz podpodpodsekce
+ sottosottosottocapoverso subsubsubsectiune
+
+ subsubsubsubsection: subsubsubsubparagraaf subsubsubsubsection
+ unterunterunterunterabsatz podpodpodpodsekce
+ sottosottosottosottocapoverso subsubsubsubsectiune
+
+subsubsubsubsubsection: subsubsubsubsubparagraaf subsubsubsubsubsection
+ unterunterunterunterunterabsatz podpodpodpodpodsekce
+ sottosottosottosottosottocapoverso subsubsubsubsubsectiune
+
+ subsubject: subonderwerp subsubject
+ unterthema podtema
+ sottoargomento subsubiect
+
+ subsubsubject: subsubonderwerp subsubsubject
+ unterunterthema podpodtema
+ sottosottoargomento subsubsubiect
+
+ subsubsubsubject: subsubsubonderwerp subsubsubsubject
+ unterunterunterthema podpodpodtema
+ sottosottosottoargomento subsubsubsubiect
+
+ subsubsubsubsubject: subsubsubsubonderwerp subsubsubsubsubject
+ unterunterunterunterthema podpodpodpodtema
+ sottosottosottosottoargomento subsubsubsubsubiect
+
+subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsubsubject
+ unterunterunterunterunterthema podpodpodpodpodtema
+ sottosottosottosottosottoargomento subsubsubsubsubsubiect
+
+\stopvariables
+
+%D For the confused (to be translated):
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ flushleft: lijnlinks flushleft
+ flushleft flushleft
+ flushleft flushleft
+ flushright: lijnrechts flushright
+ flushright flushright
+ flushright flushright
+ center: centreer center
+ center center
+ center center
+
+\stopvariables
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ typing: typen typing
+ tippen typing
+ typing typing % GB
+ file: file file
+ datei soubor
+ file fisier
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D As we can see below, there are some more variables needed,
+%D for instance for the definition of macro's for handling
+%D floating bodies.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ formula: formule formula
+ formel rovnice
+ formula formula
+ formulae: formules formulae
+ formeln rovnice
+ formule formule
+ figure: figuur figure
+ abbildung obrazek
+ figura figura
+ figures: figuren figures
+ abbildungen obrazky
+ figure figure
+ table: tabel table
+ tabelle tabulka
+ tabella tabelul
+ tables: tabellen tables
+ tabellen tabulky
+ tabelle tabelele
+ graphic: grafiek graphic
+ grafik graf
+ grafico graficul
+ graphics: grafieken graphics
+ grafiken grafy
+ grafici graficele
+ intermezzo: intermezzo intermezzo
+ intermezzo intermezzo
+ intermezzo intermezzo
+ intermezzi: intermezzos intermezzi
+ intermezzi intermezzi
+ intermezzi intermezzi
+ index: index index
+ index rejstrik
+ indiceanalitico index
+ indices: indices indices
+ indizies rejstriky
+ indicianalitici indexuri
+ abbreviation: afkorting abbreviation
+ abkuerzung zkratka
+ abbreviazione abreviere
+ abbreviations: afkortingen abbreviations
+ abkuerzungen zkratky
+ abbreviazioni abrevieri
+ logo: logo logo
+ logo logo
+ logo logo
+ logos: logos logos
+ logos loga
+ loghi logos
+ unit: eenheid unit
+ einheit jednotka
+ unita unitate
+ units: eenheden units
+ einheiten jednotky
+ unita unitati
+ line: regel line
+ zeile radek
+ riga linia
+ lines: regels lines
+ zeilen radky
+ righe linii
+ framedtext: kadertekst framedtext
+ umrahmtertext oramovanytext
+ testoincorniciato textinconjurat
+ quotation: citaat quotation
+ zitat citace
+ citazione citat
+ quote: citeer quote
+ zitieren citovat
+ menzione minicitat
+ speech: spraak speech
+ speech speech
+ speech speech
+ itemize: opsomming itemize
+ aufzaehlung vycet
+ elenco enumerare
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D The setup commands can take a lot of different arguments,
+%D often in the form \type{variable=value}. Here we define the
+%D variable part. Keep in mind that for the system, user defined
+%D variables have a constant character.
+
+%D \startcompressdefinitions
+
+\startconstants dutch english
+ german czech
+ italian romanian
+
+ leftquotation: linkercitaat leftquotation
+ linkerzitat citacevlevo
+ citazionesinistra citatstanga
+ rightquotation: rechtercitaat rightquotation
+ rechterzitat citacevpravo
+ citazionedestra citatdreapta
+ leftquote: linkerciteer leftquote
+ linkerzitieren citovatvlevo
+ menzionesinistra minicitatstanga
+ rightquote: rechterciteer rightquote
+ rechterzitieren citovatvpravo
+ menzionedestra minicitatdreapta
+ compoundhyphen: koppelteken compoundhyphen
+ compoundhyphen compoundhyphen
+ compoundhyphen compoundhyphen
+ leftcompoundhyphen: linkerkoppelteken leftcompoundhyphen
+ leftcompoundhyphen leftcompoundhyphen
+ leftcompoundhyphen leftcompoundhyphen
+rightcompoundhyphen: rechterkoppelteken rightcompoundhyphen
+ rightcompoundhyphen rightcompoundhyphen
+ rightcompoundhyphen rightcompoundhyphen
+midsentence: middenzin midsentence
+ midsentence midsentence
+ midsentence midsentence
+ leftsentence: linkerzin leftsentence
+ linkersatz vetavlevo
+ frasesinistra propozitiestanga
+ rightsentence: rechterzin rightsentence
+ rechtersatz vetavpravo
+ frasedestra propozitiedreapta
+ leftsubsentence: linkersubzin leftsubsentence
+ linkersubsatz podvetavlevo
+ sottofrasesinistra subpropozitiestanga
+ rightsubsentence: rechtersubzin rightsubsentence
+ rechtersubsatz podvetavpravo
+ sottofrasedestra subpropozitiedreapta
+
+ leftspeech: linkeruitspraak leftspeech
+ leftspeech leftspeech
+ leftspeech leftspeech %%%
+ middlespeech: middenuitspraak middlespeech
+ middlespeech middlespeech
+ middlespeech middlespeech %%%
+ rightspeech: rechteruitspraak rightspeech
+ rightspeech rightspeech
+ rightspeech rightspeech %%%
+
+ limittext: limiettekst limittext
+ limittext limittext
+ limittext limittext
+
+ date: datum date
+ datum datum
+ data data
+ spacebefore: voorwit spacebefore
+ vorspatium mezerapred
+ spazioprima spatiuinainte
+ spaceinbetween: tussenwit spaceinbetween
+ spaceinbetween spaceinbetween
+ spaceinbetween spaceinbetween
+ spaceafter: nawit spaceafter
+ nachspatium mezeraza
+ spaziodopo spatiudupa
+ sidespacebefore: zijvoorwit sidespacebefore
+ nebenvorspatium bocnimezerapred
+ spaziolateraleprima spatiulateralinainte
+ sidespaceafter: zijnawit sidespaceafter
+ nebennachspatium bocnimezeraza
+ spaziolateraledopo spatiulateraldupa
+ to: aan to
+ zu na
+ verso catre
+ indicator: aanduiding indicator
+ indikator indikator
+ indicatore indicator
+ background: achtergrond background
+ hintergrund pozadi
+ sfondo fundal
+ backgrounddepth: achtergronddiepte backgrounddepth
+ hintergrundtiefe hloubkapozadi
+ profonditasfondo adancimefundal
+ backgroundcorner: achtergrondhoek backgroundcorner
+ hintergrundwinkel rohpozadi
+ angolosfondo coltfundal
+ splitcolor: splitskleur splitcolor
+ splitcolor splitcolor
+ splitcolor splitcolor
+ backgroundcolor: achtergrondkleur backgroundcolor
+ hintergrundfarbe barvapozadi
+ coloresfondo culoarefundal
+ foregroundcolor: voorgrondkleur foregroundcolor
+ foregroundcolor foregroundcolor
+ coloreprimopiano foregroundcolor
+ foregroundstyle: voorgrondletter foregroundstyle
+ foregroundstyle foregroundstyle
+ foregroundstyle foregroundstyle
+clipoffset: clipoffset clipoffset
+ clipoffset clipoffset
+ clipoffset clipoffset
+ backgroundoffset: achtergrondoffset backgroundoffset
+ hintergrundoffset offsetpozadi
+ offsetsfondo offsetfundal
+ backgroundscreen: achtergrondraster backgroundscreen
+ hintergrundraster rastrpozadi
+ schermosfondo ecranfundal
+ backgroundradius: achtergrondstraal backgroundradius
+ hintergrundradius polomerpozadi
+ raggiosfondo razafundal
+ address: adres address
+ adresse adresa
+ indirizzo adresa
+ stopper: afsluiter stopper
+ abschnitttrenner predel
+ stopper stopper
+ distance: afstand distance
+ abstand vzdalenost
+ distanza distanta
+ paragraph: alinea paragraph
+ absatz odstavec
+ capoverso paragraf
+ axis: assenstelsel axis
+ achsen osa
+ asse axa
+ author: auteur author
+ autor autor
+ autore autor
+ auto: auto auto
+ auto auto
+ auto auto
+ autofile: autofile autofile
+ autofile autofile
+ autofile autofile % TB TH
+ balance: balanceren balance
+ ausgleichen rovnovaha
+ bilanciamento balanta
+ wfactor: bfactor wfactor
+ bfaktor sfaktor
+ wfactor factorw % GB
+ inner: binnen inner
+ innen vnitrni
+ interno intern
+ blank: blanko blank
+ blanko prazdny
+ rigovuoto blanc
+ obstruction: blokkade obstruction
+ gesperrt prekazka
+ ostruzione obstructie
+ blockway: blokwijze blockway
+ blockauf dobloku
+ blockway blockway % GB
+ bottomspace: bodemwit bottomspace
+ bottomspace bottomspace
+ spaziofondo spatiujos
+ top: boven top
+ oben vrsek
+ cima sus
+ topdistance: bovenafstand topdistance
+ obenabstand vzdalenostvrsku
+ distanzacima distantasus
+ topframe: bovenkader topframe
+ obenrahmen rameceknahore
+ cornicecima framesus
+ topoffset: bovenoffset topoffset
+ obenoffset offsetvrsku
+ offsetcima offsetsus
+ topstate: bovenstatus topstate
+ statusoben statusvrsku
+ statocima staresus
+ width: breedte width
+ breite sirka
+ ampiezza latime
+ maxwidth: maxbreedte maxwidth
+ maxbreite maxsirka
+ ampiezzamax latimemaxima
+ minwidth: minbreedte minwidth
+ minbreite minsirka
+ ampiezzamin latimeminima % TB TH
+ source: bron source
+ quelle zdroj
+ origine sursa
+ command: commando command
+ befehl prikaz
+ comando comanda
+ commands: commandos commands
+ befehle prikazy
+ comandi comenzi
+component: component component
+ component component
+ component component
+ contrastcolor: contrastkleur contrastcolor
+ kontrastfarbe kontrastnibarva
+ colorecontrasto culoarecontrast
+ conversion: conversie conversion
+ konversion konverze
+ conversione conversie
+ headconversion: kopconversie headconversion
+ headconversion konverzehlavicky
+ conversionetesta conversietitlu % TB
+ headlabel: koplabel headlabel
+ headlabel popisekhlavicky
+ etichettatesta etichetatitlu % TB
+ criterium: criterium criterium
+ kriterium kriterium
+ criterio criteriu
+ date: datum date
+ datum datum
+ data data
+ default: default default
+ default implicitni
+ implicito implicit
+ depth: diepte depth
+ tiefe hloubka
+ profondita inaltime
+ depthcorrection: dieptecorrectie depthcorrection
+ tiefekorrektur korekcehloubky
+ correzioneprofondita corectieadancime
+% dikte: dikte thickness
+% dicke tloustka
+% spessore grosime
+ continue: doorgaan continue
+ fortsetzen pokracovat
+ continua continua
+ doublesided: dubbelzijdig doublesided
+ doppelseitig oboustranne
+ doppiafaccia douafete
+ dummy: dummy dummy
+ dummy dummy
+ dummy dummy
+ unit: eenheid unit
+ einheit jednotka
+ unita unitate
+ ownnumber: eigennummer ownnumber
+ eigenenummer vlastnicislo
+ numeroproprio numarpropriu
+% new
+% eigenschap: eigenschap property
+% property property
+% property property
+ evenmargin: evenmarge evenmargin
+ geraderand sudamarginalie
+ marginepari marginepara
+ expansion: expansie expansion
+ expansion expanzen
+ espansione expansiune
+keyexpansion: sleutelexpansie keyexpansion
+ keyexpansion keyexpansion
+ keyexpansion keyexpansion
+ factor: factor factor
+ faktor faktor
+ fattore factor
+ convertfile: converteerfile convertfile
+ konvertieredatei konverzesouboru
+ convertifile convertestefisier
+ file: file file
+ datei soubor
+ file fisier
+ inputfile: inputfile inputfile
+ inputfile inputfile
+ inputfile inputfile % !!
+ size: formaat size
+ groesse velikost
+ dimensione dimensiune
+ autofocus: autofocus autofocus
+ autofocus autoostreni
+ autofocus autofocus
+ focus: focus focus
+ focus zaostreni
+ focus focus % GB
+ directory: gebied directory
+ verzeichnis adresar
+ directory director
+ cache: cache cache
+ cache cache
+ cache cache
+ grid: grid grid
+ gritter mrizka
+ griglia grid
+ big: groot big
+ gross velky
+ grande mare
+ get: haal get
+ hole ziskat
+ prendi adu
+ hang: hang hang
+ haengend zaveseni
+ sospendi suspenda
+ repeat: herhaal repeat
+ wiederholen opakovat
+ ripeti repeta
+ hfactor: hfactor hfactor
+ hfaktor vfaktor
+ hfactor hfactor % GB
+ corner: hoek corner
+ winkel roh
+ angolo colt
+ hoffset: hoffset hoffset
+ hoffset hoffset
+ hoffset hoffset % GB
+ frames: hokjes frames
+ umrahmen ramecky
+ cornici frames
+ header: hoofd header
+ kopfzeile zahlavi
+ intestazione antet
+ headerdistance: hoofdafstand headerdistance
+ kopfzeilenabstand vzdalenostzahlavi
+ distanzaintestazione distantaantet
+ headerstate: hoofdstatus headerstate
+ kopfzeilenstatus statuszahlavi
+ statointestazione stareantet
+ height: hoogte height
+ hoehe vyska
+ altezza inaltime
+ maxheight: maxhoogte maxheight
+ maxhoehe maxvyska
+ altezzamax inaltimemaxima
+ minheight: minhoogte minheight
+ minhoehe minvyska
+ altezzamin inaltimeminima
+ mindepth: mindiepte mindepth
+ mindepth mindepth
+ mindeoth mindepth % new GB
+ current: huidige current
+ aktuell aktualni
+ corrente curent
+ in: in in
+ in v
+ in in
+ indenting: inspringen indenting
+ einziehen odsazovani
+ rientro aliniat
+ interaction: interactie interaction
+ interaktion interakce
+ interazione interactiune
+ interlinespace: interlinie interlinespace
+ zeilenabstande meziradkovamezera
+ interlinea spatiereinterliniara
+ items: items items
+ posten polozky
+ elementi elemente
+ frame: kader frame
+ rahmen ramecek
+ cornice frame
+ framedepth: kaderdiepte framedepth
+ rahmentiefe hloubkaramecku
+ profonditacornice adancimeframe
+ framecorner: kaderhoek framecorner
+ rahmenwinkel rohramecku
+ angolocornice coltframe
+ framecolor: kaderkleur framecolor
+ rahmenfarbe barvaramecku
+ colorecornice culoareframe
+ frameoffset: kaderoffset frameoffset
+ rahmenoffset offsetramecku
+ offsetcornice offsetframe
+ frameradius: kaderstraal frameradius
+ rahmenradius polomerramecku
+ raggiocornice razaframe
+ marginedge: kantlijn marginedge
+ marginalkante textovahrana
+ bordomargine coltbordura
+ marginedgetext: kantlijntekst marginedgetext
+ marginalkantetext textmarginalnihookraje
+ testobordomargine textcoltbordura
+ aligncharacter: karakteruitlijnen aligncharacter
+ aligncharacter aligncharacter
+ allineacarattere aliniazacaracter % TB TH
+ alignmentcharacter: uitlijnkarakter alignmentcharacter
+ alignmentcharacter alignmentcharacter
+ carattereallineamento alierecaracter % TB TH
+ small: klein small
+ klein male
+ piccolo mic
+ color: kleur color
+ farbe barva
+ colore culoare
+ column: kolom column
+ spalte sloupec
+ colonna coloana
+ columns: kolommen columns
+ spalten sloupce
+ colonne coloane
+ columndistance: kolomafstand columndistance
+ spaltenabstand vzdalenostsloupcu
+ distanzacolonne distantacoloane
+ headcommand: kopcommando headcommand
+ headcommand headcommand
+ headcommand headcommand
+ headcolor: kopkleur headcolor
+ kopffarbe barvahlavicky
+ coloretesta culoaretitlu
+ headstyle: kopletter headstyle
+ kopfstil stylhlavicky
+ stiletesta stiltitlu
+ afterhead: kopna afterhead
+ nachkopf pohlavicce
+ dopotesta dupatitlu
+ veroffset: kopoffset veroffset
+ kopfoffset offsethlavicky
+ veroffset veroffset % GB
+ coupling: koppeling coupling
+ verknuepfung propojeni
+ accoppiamento cuplare
+ couplingway: koppelwijze couplingway
+ verkopplungsart zpusobpropojeni
+ modoaccoppiamento modcuplare
+ beforehead: kopvoor beforehead
+ vorkopf predhlavickou
+ primaditesta inaintetitlu
+ topspace: kopwit topspace
+ kopfspatium svrchnimezera
+ spaziocima spatiusus
+ bodyfont: korps bodyfont
+ fliesstext zakladnifont
+ fonttesto fonttext
+ label: label label
+ label popisek
+ etichetta eticheta
+ empty: leeg empty
+ leer prazdne
+ vuoto gol
+ style: letter style
+ stil pismeno
+ stile stil
+ rule: lijn rule
+ linie linka
+ linea rigla
+ rulethickness: lijndikte rulethickness
+ liniendicke tloustkalinky
+ spessorelinea grosimerigla
+ rulecolor: lijnkleur rulecolor
+ linienfarbe barvalinky
+ colorelinea culoarerigla
+ list: lijst list
+ liste seznam
+ elenco lista
+ leftwidth: linkerbreedte leftwidth
+ linkerbreite sirkavlevo
+ ampiezzasinistra latimestanga
+ leftframe: linkerkader leftframe
+ linkerrahmen ramecekvlevo
+ cornicesinistra framestanga
+ leftcolor: linkerkleur leftcolor
+ linkerfarbe barvavlevo
+ coloresinistra culoarestanga
+ leftstyle: linkerletter leftstyle
+ linkerstil stylvlevo
+ stilesinistra stilstanga
+ leftmargin: linkermarge leftmargin
+ linkerrand levyokraj
+ marginesinistro marginestanga
+ leftmargindistance: linkermargeafstand leftmargindistance
+ linkerrandabstand vzdalenostlevehookraje
+ distanzamarginesinistro distantamarginestanga
+ leftoffset: linkeroffset leftoffset
+ linkeroffset levyoffset
+ offsetsinistro offsetstanga
+ leftedge: linkerrand leftedge
+ linkekante levahrana
+ bordosinistro bordurastanga
+ leftedgedistance: linkerrandafstand leftedgedistance
+ linkerkantenabstand vzdalenostlevehrany
+ distanzabordosinistro distantabordurastanga
+ lefttext: linkertekst lefttext
+ linkertext textvlevo
+ testosinistro textstanga % GB
+ left: links left
+ links vlevo
+ sinistra stanga
+ nleft: nlinks nleft
+ nlinks nvlevo
+ nsinistra nstanga
+ logo: logo logo
+ logo logo
+ logo logo
+ logos: logos logos
+ logos loga
+ loghi logos
+ local: lokaal local
+ lokal lokalne
+ locale local
+ margin: marge margin
+ marginalie marginalie
+ margine margine
+ margindistance: margeafstand margindistance
+ marginalabstand vzdalenostokraje
+ distanzamargine distantamargine
+ margintext: margetekst margintext
+ marginaltext textmarginalie
+ testomargine textmargine
+ marking: markering marking
+ beschriftung znaceni
+ marcatura marcaje
+ marcolor: markleur marcolor
+ beschrfarbe barvaznacky
+ coloremarcatura culoaremarcaj
+ marstyle: marletter marstyle
+ beschrstil stylsnacky
+ stilemarcatura stilmarcaj
+ menu: menu menu
+ menue menu
+ menu meniu
+ splitmethod: splitsmethode splitmethod
+ splitmethod splitmethod
+ splitmethod splitmethod
+ textmethod: tekstmethode textmethod
+ textmethod textmethod
+ textmethod textmethod
+ sidemethod: zijmethode sidemethod
+ sidemethod sidemethod
+ sidemethod sidemethod
+ method: methode method
+ methode metoda
+ metodo metoda
+ middle: midden middle
+ mittig stredni
+ centro mijloc % GB
+ middletext: middentekst middletext
+ mittigertext strednitext
+ testocentro textmijloc % GB
+ max: max max
+ max max
+ max max
+ min: min min
+ min min
+ min min
+ sample: monster sample
+ muster vzor
+ campione exemplu
+ after: na after
+ nach po
+ dopo dupa
+ name: naam name
+ name jmeno
+ nome nume
+ commandafter: nacommando commandafter
+ zumbefehl prikazpo
+ comdandodopo comandadupa
+ ntop: nboven ntop
+ noben nvrsek
+ ncima nsus
+ level: niveau level
+ niveau uroven
+ livello nivel
+ levels: niveaus levels
+ niveaus urovne
+ livelli nivele
+ nbottom: nonder nbottom
+ nunten nspodek
+ nfondo njos
+ norm: norm norm
+ norm norm
+ norma norm
+ nlines: nregels nlines
+ zzeile nradky
+ nrighe nlinii
+ number: nummer number
+ nummer cislo
+ numero numar
+ numbercommand: nummercommando numbercommand
+ nummerbefehl ciselnyprikaz
+ comandonumero comandanumar
+ numbering: nummeren numbering
+ nummerierung cislovani
+ numerazione numerotare
+ numbercolor: nummerkleur numbercolor
+ nummernfarbe barvacisla
+ colorenumero culoarenumar
+ numberstyle: nummerletter numberstyle
+ nummernstil stylcisla
+ stilenumero stilnumar
+ numberseparator: nummerscheider numberseparator
+ nummernseperator oddelovaccisla
+ separatorenumero separatornumar
+ object: object object
+ objekt objekt
+ oggetto obiect
+ offset: offset offset
+ offset offset
+ offset offset
+ bottom: onder bottom
+ unten spodek
+ fondo jos
+ bottomdistance: onderafstand bottomdistance
+ abstandunten vzdalenostspodku
+ distanzafondo distantajos
+ bottomframe: onderkader bottomframe
+ untenrahmen ramecekdole
+ cornicefondo framejos
+ bottomoffset: onderoffset bottomoffset
+ untenoffset offsetspodku
+ offsetfondo offsetjos
+ bottomstate: onderstatus bottomstate
+ untenstatus statusspodku
+ statofondo starejos
+ oddmargin: onevenmarge oddmargin
+ ungeraderand lichyokraj
+ marginedispari margineimpara
+ at: op at
+ bei u
+ ad la
+ option: optie option
+ option volba
+ opzione optiune
+ page: pagina page
+ seite stranka
+ pagina pagina
+ pagecommand: paginacommando pagecommand
+ seitenbefehl strankovyprikaz
+ comandopagina comandapagina
+ pagecolor: paginakleur pagecolor
+ seitenfarbe barvastranky
+ colorepagina culoarepagina
+ pagestyle: paginaletter pagestyle
+ seitenstil stylstranky
+ stilepagina stilpagina
+ pagenumber: paginanummer pagenumber
+ seitennummer cislostranky
+ numeropagina numarpagina
+ headnumber: kopnummer headnumber
+ kopfnummer cislonadpisu
+ numerotesta numartitlu
+ pageboundaries: paginaovergangen pageboundaries
+ seitenbegrenzung hranicestranky
+ limitipagina marginipagina
+ pagestate: paginastatus pagestate
+ pagestate pagestate
+ statopagina pagestate % TODO
+ palet: palet palet
+ palette paleta
+ tavolozza paleta
+ paper: papier paper
+ papier papir
+ carta hartie
+ location: plaats location
+ platz misto
+ luogo locatie
+ placestopper: plaatsafsluiter placestopper
+ setzetrenner predelmista
+ mettistopper punestopper % GB
+ place: plaatsen place
+ platziere umistit
+ metti pune % GB
+ placehead: plaatskop placehead
+ setzekopf umistihlavicku
+ mettitesta punetitlu % GB
+ position: positie position
+ position position
+ posizione pozitie % TB TH
+ prefix: prefix prefix
+ prefix prefix
+ prefisso prefix
+ preset: preset preset
+ voreinstellung prednastaveni
+ preimpostato preset % GB
+ preview: preview preview
+ vorschau nahled
+ anteprima previzualizare
+process: proces process
+ process process
+ process process
+ spot: spot spot
+ spot spot
+ spot spot
+ dot: punt dot
+ punkt tecka
+ punto punct
+ arrow: pijl arrow
+ pfeil sipka
+ freccia sageata
+ edge: rand edge
+ kante hrana
+ bordo bordura
+ edgedistance: randafstand edgedistance
+ kantenabstand vzdalenosthrany
+ distanzabordo distantabordura
+ screen: raster screen
+ raster rastr
+ schermo ecran
+ rightwidth: rechterbreedte rightwidth
+ rechterbreite sirkavpravo
+ ampiezzadestra marginedreapta
+ rightframe: rechterkader rightframe
+ rechterrahmen ramecekvpravo
+ cornicedestra framedreapta
+ rightcolor: rechterkleur rightcolor
+ rechterfarbe barvavpravo
+ coloredestra culoaredreapta
+ rightstyle: rechterletter rightstyle
+ rechterstil stylvpravo
+ stiledestra stildreapta
+ rightmargin: rechtermarge rightmargin
+ rechterrand pravyokraj
+ marginedestro marginedreapta
+ rightmargindistance: rechtermargeafstand rightmargindistance
+ rechterrandabstand vzdalenostpravehookraje
+ distanzamarginedestro distantamarginedreapta
+ rightoffset: rechteroffset rightoffset
+ rechterabstand pravyoffset
+ offsetdestro offsetdreapta
+ rightedge: rechterrand rightedge
+ rechtekante pravahrana
+ bordodestro borduradreapta
+ rightedgedistance: rechterrandafstand rightedgedistance
+ rechterkantenabstand vzdalenostpravehrany
+ distanzabordodestro distantacoltdreapta
+ righttext: rechtertekst righttext
+ rechtertext textvpravo
+ testodestro textdreapta % GB
+ right: rechts right
+ rechts vpravo
+ destra dreapta
+ nright: nrechts nright
+ nrechts nvpravo
+ ndestra ndreapta
+ reduction: reductie reduction
+ reduktion redukce
+ riduzione reducere
+ referencing: refereren referencing
+ referieren odkazujici
+ referencing referinta % GB
+ line: regel line
+ zeile radek
+ riga linie
+ linecorrection: regelcorrectie linecorrection
+ zeilekorrektur korekceradku
+ correzioneriga corectielinie
+ lines: regels lines
+ zeilen radky
+ righe linii
+ stretch: rek stretch
+ strecken natahnout
+ dilata dilatat % CHECK
+ resolution: resolutie resolution
+ aufloesung rozliseni
+ risoluzione rezolutie
+ rotation: rotatie rotation
+ rotation rotace
+ rotazione rotatie
+% new
+ orientation: orientatie orientation
+ orientation orientation
+ orientation orientation
+
+ horoffset: rugoffset horoffset
+ rumpfabstand horoffset
+ horoffset offsetoriz % GB
+ backspace: rugwit backspace
+ rumpfspatium zpetnamezera
+ backspace spatiuspate % GB
+ direction: richting direction
+ richtung smer
+ direzione directie
+ scale: schaal scale
+ format meritko
+ scala scala
+ separator: scheider separator
+ seperator oddelovac
+ separatore separator
+ display: scherm display
+ bildschirm obrazovka
+ display display % GB
+ scope: scope scope
+ bereich rozsah
+ scope scop % GB
+ section: sectie section
+ abschnitt oddil
+ sezione sectiune
+ sectionnumber: sectienummer sectionnumber
+ abschnittsnummer cislooddilu
+ numerosezione numarsectiune
+setups: setups setups
+ setups setups
+ setups setups
+ cutspace: snijwit cutspace
+ cutspace cutspace
+ cutspace cutspace % GB
+ family: soort family
+ familie rodina
+ famiglia familie
+ space: spatie space
+ spatium mezera
+ spazio spatiu
+ spacing: spatiering spacing
+ spatiumausgleich mezerovani
+ spaziatura spatiere
+ split: splitsen split
+ split split
+ separa split % TB TH
+splitoffset: splitsoffset splitoffset
+ splitoffset splitoffset
+ splitoffset splitoffset % TB TH
+ indentnext: springvolgendein indentnext
+ ziehefolgendeein odsadpristi
+ rientrasuccessivo aliniaturmator
+ step: stap step
+ schritt krok
+ passo pas
+ stack: stapel stack
+ stack stack
+ stack stack % TB GB
+ start: start start
+ start start
+ inizia start
+ state: status state
+ status status
+ stato stare
+ stop: stop stop
+ stop stop
+ termina stop
+ radius: straal radius
+ radius polomer
+ raggio raza
+ dash: streep dash
+ strich pomlcka
+ dash dash % GB
+ sub: sub sub
+ unter pod
+ sotto sub
+ subtitle: subtitel subtitle
+ untertitel podtitulek
+ sottotitolo subtitlu
+ symbol: symbool symbol
+ symbol symbol
+ simbolo simbol
+ symbolset: symboolset symbolset
+ symbolset sadasymbolu
+ setsimboli setsimbol
+ symcolor: symkleur symcolor
+ symfarbe barvasymbolu
+ coloresimbolo culoaresimbol
+ symstyle: symletter symstyle
+ symstil stylsymboly
+ stilesimbolo stilsimbol
+ synonym: synoniem synonym
+ synonym synonymum
+ sinonimo sinonim
+ synonymcolor: synoniemkleur synonymcolor
+ synonymfarbe barvasynonyma
+ coloresinonimi culoaresinonim
+ synonymstyle: synoniemletter synonymstyle
+ synonymstil stylsynonyma
+ stilesinonimi stilsinonim
+ tab: tab tab
+ tab tab
+ tab tab
+ sign: teken sign
+ zeichen znak
+ segno semn
+ text: tekst text
+ text text
+ testo text
+ listtext: lijsttekst listtext
+ listtext listtext
+ listtext listtext
+ textwidth: tekstbreedte textwidth
+ textbreite sirkatextu
+ ampiezzatesto latimetext
+ textcommand: tekstcommando textcommand
+ textbefehl textovyprikaz
+ comandotesto comandatext
+ textsize: tekstformaat textsize
+ textgroesse velikosttextu
+ dimensionetesto dimensiunetext
+ textcolor: tekstkleur textcolor
+ textfarbe barvatextu
+ coloretesto culoaretext
+ textstyle: tekstletter textstyle
+ textstil styltextu
+ stiletesto stiltext
+ textseparator: tekstscheider textseparator
+ textseparator oddelovactextu
+ separatoretesto separatortext
+ textstate: tekststatus textstate
+ textstatus statustextu
+ statotesto staretext
+ title: titel title
+ titel titul
+ titolo titlu
+ titlestyle: titelletter titlestyle
+ titelstil styltitulek
+ stiletitolo stiltitlu
+ titlecolor: titelkleur titlecolor
+ titelfarbe barvatitulek
+ coloretitolo culoaretitlu
+ titledistance: titelafstand titledistance
+ titelabstand vzdalenosttitulek
+ distanzatitolo distantatitlu
+ aligntitle: titeluitlijnen aligntitle
+ titelausrichten zarovnejtitul
+ allineatitolo alinieretitlu
+ tolerance: tolerantie tolerance
+ toleranz tolerance
+ tolleranza toleranta
+ inbetween: tussen inbetween
+ zwischen mezi
+ tra intre
+ type: type type
+ typ typ
+ type type % GB
+ align: uitlijnen align
+ ausrichtung zarovnani
+ allinea aliniere
+ urlspace: urlspatie urlspace
+ urlspatium prostorurl
+ spaziourl spatiuurl
+ urlalternative: urlvariant urlalternative
+ urlalternative urlalternativa
+ alternativaurl urlalternativ
+ from: van from
+ von z
+ da dela
+ alternative: variant alternative
+ alternative alternativa
+ alternativa alternativ
+ increment: verhoog increment
+ erhoehen zvysit
+ incremento increment % GB
+ incrementnumber: verhoognummer incrementnumber
+ nummererhoehen zvysujicicislo
+ incrementanumero numarincrement
+resetnumber: resetnummer resetnumber
+ resetnumber resetnumber
+ resetnumber resetnumber
+ reference: verwijzing reference
+ referenz odkaz
+ riferimento referinta
+ unknownreference: onbekendeverwijzing unknownreference
+ unbekantereferenz neznamyodkaz
+ riferimentoingoto referintanecunoscuta
+ footer: voet footer
+ fusszeile upati
+ piedipagina subsol
+ footerdistance: voetafstand footerdistance
+ fusszeilenabstand vzdalenostupati
+ distanzapdp distantasubsol
+ footerstate: voetstatus footerstate
+ fusszeilenstatus statusupati
+ statopdp staresubsol
+ voffset: voffset voffset
+ voffset voffset
+ voffset voffset
+ next: volgende next
+ folgende dalsi
+ successivo urmatorul
+ before: voor before
+ vor pred
+ prima inainte
+ commandbefore: voorcommando commandbefore
+ vorbefehl predchoziprikaz
+ comandoprima comandainainte
+ previous: vorige previous
+ vorige predchozi
+ precedente precendent
+ previousnumber: vorigenummer previousnumber
+ vorigenummer predchozicislo
+ numeroprecedente numarprecedent
+ delay: wachttijd delay
+ wartezeit prodleva
+ attesa intarziere
+ way: wijze way
+ art zpusob
+ modo mod
+ random: willekeur random
+ zufaellig nahodne
+ casuale aleator
+ white: wit white
+ weiss bily
+ bianco alb
+ xfactor: xfactor xfactor
+ xfaktor xfaktor
+ xfactor xfactor %GB
+ xmax: xmax xmax
+ xmax xmax
+ xmax xmax % GB
+ xoffset: xoffset xoffset
+ xoffset xoffset
+ xoffset xoffset % GB
+ xscale: xschaal xscale
+ xformat xmeritko
+ xscale xscala % GB
+ xstep: xstap xstep
+ xschritt xkrok
+ xstep xstep % GB
+ yfactor: yfactor yfactor
+ yfaktor yfaktor
+ yfactor yfactor % GB
+ ymax: ymax ymax
+ ymax ymax
+ ymax ymax % GB
+ yoffset: yoffset yoffset
+ yoffset yoffset
+ yoffset yoffset % GB
+ yscale: yschaal yscale
+ yformat ymeritko
+ yscale yscala % GB
+ ystep: ystap ystep
+ yschritt ykrok
+ ystep ystep % GB
+ samepage: zelfdepagina samepage
+ selbeseite stejnastranka
+ stessapagina aceeasipagina
+ sidealign: zijuitlijnen sidealign
+ sidealign sidealign
+ sidealign sidealign
+ side: zij side
+ objektabstand pocitat
+ lato parte
+% new
+ fieldlayer: veldlaag fieldlayer
+ fieldlayer fieldlayer
+ fieldlayer fieldlayer
+textlayer: tekstlaag textlayer
+ textlayer textlayer
+ textlayer textlayer
+ fieldbackgroundcolor: veldachtergrondkleur fieldbackgroundcolor
+ feldhintergrundfarbe barvapozadipole
+ coloresfondocampo culoarefundalcamp
+ fieldframecolor: veldkaderkleur fieldframecolor
+ feldrahmenfarbe barvarameckupole
+ colorecornicecampo culoareframecamp
+ fieldoffset: veldoffset fieldoffset
+ feldoffset offsetpole
+ offsetcampo offsetcamp
+ openaction: openactie openaction
+ oeffenaktion otevriakci
+ azioneapri actiunedeschidere
+ closeaction: sluitactie closeaction
+ schliessenaktion zavriakci
+ azionechiudi actiuneinchidere
+ openpageaction: openpaginaactie openpageaction
+ openpageaction akceotevrenistranky
+ azioneapripagina actiunedeschiderepagina % TB
+ closepageaction: sluitpaginaactie closepageaction
+ closepageaction akcezavrenistranky
+ azionechiudipagina actiuneinchiderepagina % TB
+ clickin: klikin clickin
+ klickin klikuvnitr
+ clickdentro clickintru
+ clickout: klikuit clickout
+ klickaus klikvne
+ clickfuori clickies
+ regionin: gebiedin regionin
+ regionin oblastuvnitr
+ entraregione regiuneintrare
+ regionout: gebieduit regionout
+ regionaus oblastvne
+ esciregione regiuneiesire
+ focusin: focusin focusin
+ focusin focusin
+ focusin focusin
+ focusout: focusuit focusout
+ focusout focusout
+ focusout focusout
+ afterkey: natoets afterkey
+ nachtaste klavesapo
+ dopotasto dupatasta
+ format: formatteer format
+ formatieren formatovat
+ format format % GB
+ validate: valideer validate
+ validieren validovat
+ verifica verifica
+ calculate: bereken calculate
+ berechnen pocitat
+ calcola calculeaza
+ click: klik click
+ klick klik
+ click click
+ vcommand: vcommando vcommand
+ vbefehl vprikaz
+ vcomando comandav
+ icommand: icommando icommand
+ ibefehl iprikaz
+ icomando comandai
+ ccommand: ccommando ccommand
+ cbefehl cprikaz
+ ccomando comandac
+
+ textdistance: tekstafstand textdistance
+ textdistance textdistance
+ distanzatesto textdistance % TB TH
+ textmargin: tekstmarge textmargin
+ textmargin textmargin
+ textmargin textmargin % TB TH
+
+ keyword: trefwoord keyword
+ keyword keyword
+ parolachiave keyword
+
+\stopconstants
+
+%D This one is a private one, used for very dirty hooks.
+
+\startconstants dutch english
+ german czech
+ italian romanian
+
+ extras: extras extras
+ extras extras
+ extras extras
+
+\stopconstants
+
+%D \stopcompressdefinitions
+
+%D The keywords of values are very language specific and
+%D therefore variables for the systems. This list shows some
+%D overlap with the previous one.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ on: aan on
+ an zap
+ attivo on
+ serried: aanelkaar serried
+ kleinerabstand semknuto
+ vicino serried
+ joinedup: aansluitend joinedup
+ keinabstand spojeno
+ unito unit
+ absolute: absoluut absolute
+ absolut absolutni
+ assoluto absolut
+ background: achtergrond background
+ hintergrund pozadi
+ sfondo fundal
+ backward: achteruit backward
+ rueckwaerts zpet
+ indietro inapoi
+ subbackward: subachteruit subbackward
+ unterrueckwaerts podzpet
+ sottoindietro subinapoi
+ action: actie action
+ aktion akce
+ azione actiune
+ stopper: afsluiter stopper
+ trenner predel
+ stopper stopper
+ paragraph: alinea paragraph
+ absatz odstavec
+ capoverso paragraf
+ all: alles all
+ alles vse
+ tutti tot
+ always: altijd always
+ immer vzdy
+ sempre totdeauna
+ auto: auto auto
+ auto auto
+ auto auto
+ autointro: autointro autointro
+ autointro autouvod
+ autointro autointro
+ both: beide both
+ beide obe
+ entrambi ambele
+ inner: binnen inner
+ innen uvnitr
+ interno intern
+ blank: blanko blank
+ blanko prazdny
+ rigovuoto blank
+ disable: blokkeer disable
+ sperren zablokovat
+ disattiva dezactivat
+ top: boven top
+ oben vrsek
+ cima sus
+ wide: breed wide
+ breit siroce
+ ampio larg
+ width: breedte width
+ breite sirka
+ ampiezza latime
+ outer: buiten outer
+ aussen vnejsi
+ esterno extern
+ numbers: cijfers numbers
+ ziffern cisla
+ numeri numere
+ Numbers: Cijfers Numbers
+ Ziffern Cisla
+ Numeri Numere
+ command: commando command
+ befehl prikaz
+ comando comanda
+ commands: commandos commands
+ befehle prikazy
+ comandi comenzi
+ concept: concept concept
+ konzept koncept
+ concetto concept
+ day: dag day
+ tag den
+ giorno zi
+ date: datum date
+ datum datum
+ data data
+ default: default default
+ default implicitni
+ implicito implicit
+ final: definitief final
+ endfassung finalni
+ finale final
+ depth: diepte depth
+ tiefe podlehloubky
+ profondita adancime
+ doublesided: dubbelzijdig doublesided
+ doppelseitig dvoustranny
+ doppiafaccia douafete
+ first: eerste first
+ erste prvni
+ primo primul
+ each: elk each
+ jede kazdy
+ ogni fiecare
+ singlesided: enkelzijdig singlesided
+ einzelseitig jednostranne
+ facciasingola ofata
+ somewhere: ergens somewhere
+ irgendwo nekde
+ daqualcheparte undeva
+ nowhere: nergens nowhere
+ nirgens nikde
+ danessunaparte niciunde
+ even: even even
+ gerade sude
+ pari par
+ external: extern external
+ extern externi
+ esterno extern
+ file: file file
+ datei soubor
+ file fisier
+ flexible: flexibel flexible
+ flexibel prizpusobive
+ flessibile flexibil
+ force: forceer force
+ zwinge sila
+ forza fortat
+ used: gebruikt used
+ verwende uzito
+ usato folosit
+ none: geen none
+ kein zadny
+ nessuno niciunul
+ nomarking: geenmarkering nomarking
+ keinebeschriftung zadneznaceni
+ nomarcature faramarcare
+ nonumber: geennummer nonumber
+ nonumber nonumber
+ nonumber nonumber % GB ETC NEW
+% geentekst: geentekst notext
+% notext notext
+% notext notext % GB ETC NEW
+ nowhite: geenwit nowhite
+ keinweiss zadnabila
+ nobianco faraalb
+ rotated: geroteerd rotated
+ gedreht otoceno
+ ruotato rotat
+ mirrored: gespiegeld mirrored
+ gespiegelt zrcadleno
+ riflesso oglindit
+ global: globaal global
+ global globalne
+ globale global
+ grid: grid grid
+ gritter mrizka
+ griglia grila
+ big: groot big
+ gross velke
+ grande mare
+ bigbodyfont: grootkorps bigbodyfont
+ bigbodyfont bigbodyfont
+ grossofontdeltesto bigbodyfont %%
+ bigpreference: grotevoorkeur bigpreference
+ grosszuegig vysokapriorita
+ grandepreferenza preferintamare
+ gray: grijs gray
+ grau seda
+ grigio gri
+ halfline: halveregel halfline
+ halbezeile pulradku
+ mezzariga jumatatelinie
+ keep: handhaaf keep
+ behalte drzet
+ mantieni mentine
+ hanging: hangend hanging
+ haengend visici
+ sospeso suspendat
+ spacing: spatiering spacing
+ spatiumausgleich mezerovani
+ spaziatura spatiere
+ nospacing: geenspatiering nospacing
+ nospacing nospacing
+ nospacing nospacing
+ repeat: herhaal repeat
+ wiederholen opakovat
+ ripeti repetat
+ fix: herstel fix
+ stellewiederher fixuj
+ fisso fix
+ here: hier here
+ hier zde
+ qui aici
+ header: hoofd header
+ kopfzeile zahlavi
+ intestazione antet
+ high: hoog high
+ hoch vysoko
+ alto inalt
+ height: hoogte height
+ hoehe vyska
+ altezza inaltime
+ horizontal: horizontaal horizontal
+ horizontal horizontalne
+ orizzontale orizontal
+ current: huidige current
+ aktuell aktualni
+ corrente curent
+ hz: hz hz
+ hz hz
+ hz hz
+ nohz: geenhz nohz
+ nohz nohz
+ nohz nohz
+ italic: italic italic
+ italic kurziva
+ corsivo italic
+ inherit: erf inherit
+ inherit inherit
+ inherit inherit % new
+ inleft: inlinker inleft
+ imlinken vlevo
+ insinistra instanga
+ inmargin: inmarge inmargin
+ imrand naokraji
+ inmargine inmargine
+ inright: inrechter inright
+ imrechten vpravo
+ indestra indreapta
+ interaction: interactie interaction
+ interaktion interakce
+ interazione interactiune
+ intext: intekst intext
+ imtext dotextu
+ intesto intext
+ intro: intro intro
+ intro uvod
+ intro intro
+ its: its its
+ its pol
+ its propriu % GB
+ yes: ja yes
+ ja ano
+ si da
+ year: jaar year
+ jahr rok
+ anno an
+ frame: kader frame
+ rahmen ramecek
+ cornice incadrat
+ marginedge: kantlijn marginedge
+ marginalkante textovahrana
+ bordomargine marginebordura
+ cap: kap cap
+ kap kap
+ cap cap
+ capital: kapitaal capital
+ versalien kapitalky
+ maiuscolo majuscula
+ referral: kenmerk referral
+ merkmal znacka
+ referral referinta
+ small: klein small
+ klein male
+ piccolo mic
+ smallnormal: kleinnormaal smallnormal
+ kleinnormal malenormalni
+ piccolonormale micnormal
+ smallslanted: kleinschuin smallslanted
+ kleingeneigt malesklonene
+ piccoloinclinato micinclinat
+ smallslantedbold: kleinschuinvet smallslantedbold
+ kleingeneigtfett malesklonenetucne
+ piccoloinclinatograssetto micinclinataldin
+ smallitalic: kleinitalic smallitalic
+ kleinitalic malekurzivni
+ piccolocorsivo micitalic
+ smallitalicbold: kleinitalicvet smallitalicbold
+ kleinitalicfett malekurzivnitucne
+ piccolocorsivograssetto micitalicaldin
+ smalltype: kleintype smalltype
+ kleintippen maletype
+ piccolotype mictype
+ smallbold: kleinvet smallbold
+ kleinfett maletucne
+ piccolograssetto micaldin
+ smallboldslanted: kleinvetschuin smallboldslanted
+ kleinfettgeneigt maletucnesklonene
+ piccolograssettoinclinato micaldininclinat
+ smallbolditalic: kleinvetitalic smallbolditalic
+ kleinfettitalic maletucnekurzivni
+ piccolograssettocorsivo micaldininclinat
+ smallbodyfont: kleinkorps smallbodyfont
+ smallbodyfont smallbodyfont
+ piccolofontdelcorpo smallbodyfont %%
+ toggle: toggle wissel
+ toggle toggle
+ toggle toggle
+ color: kleur color
+ farbe barevne
+ colore culoare
+ column: kolom column
+ column column
+ colonna coloana % TB TH
+ columns: kolommen columns
+ spalten sloupce
+ colonne coloane
+ head: kop head
+ kopf hlavicka
+ testa antet % GB
+ low: laag low
+ tief nizko
+ basso jos
+ last: laatste last
+ letzte posledni
+ ultimo ultim
+ label: label label
+ label popisek
+ etichetta eticheta
+ lohi: laho lohi
+ hoti nivy
+ pedap lohi % TB TH
+ tall: lang tall
+ lang vysoko
+ alto inalt % GB
+ empty: leeg empty
+ leer prazdne
+ vuoto gol
+ Character: Letter Character
+ Buchstabe Pismeno
+ Lettera Caracter
+ character: letter character
+ buchstabe pismeno
+ lettera caracter
+ Characters: Letters Characters
+ Buchstaben Pismena
+ Lettere Caractere
+ characters: letters characters
+ buchstaben pismena
+ lettere caractere
+ landscape: liggend landscape
+ querformat nasirku
+ orizzontale vedere
+ rule: lijn rule
+ linie linka
+ linea rigla
+ list: lijst list
+ liste seznam
+ elenco lista
+ leftmargin: linkermarge leftmargin
+ linkerrand levyokraj
+ marginesinistro marginestanga
+ leftpage: linkerpagina leftpage
+ linkerseite levastranka
+ paginasinistra paginastanga
+ leftedge: linkerrand leftedge
+ linkekante levahrana
+ bordosinistro bordurastanga
+ left: links left
+ links vlevo
+ sinistra stanga
+ local: lokaal local
+ lokal lokalne
+ locale local
+ new: nieuw new
+ neu novy
+ nuovo nou
+ MONTH: MAAND MONTH
+ MONAT MESIC
+ MESE LUNA
+ month: maand month
+ monat mesic
+ mese luna
+ mar: mar mar
+ mar mar
+ mar mar
+ margin: marge margin
+ marginalie marginalie
+ margine margine
+ max: max max
+ max max
+ max max
+ min: min min
+ min min
+ min min
+ mediaeval: mediaeval mediaeval
+ mittelalterlich stredoveky
+ medievale medieval
+ medium: middel medium
+ mittel stredni
+ medio mediu
+ middle: midden middle
+ mittig nastred
+ centro centru
+ after: na after
+ nach po
+ dopo dupa
+ name: naam name
+ name jmeno
+ nome nume
+ opposite: naast opposite
+ gegenueber naproti
+ opposto opus
+ no: nee no
+ nein ne
+ no nu
+ negative: negatief negative
+ negativ negativ
+ negativo negativ
+ positive: positief positive
+ positiv positiv
+ positivo positiv
+ not: niet not
+ nicht ne
+ non nu
+ never: nooit never
+ nie nikdy
+ mai niciodata
+ normal: normaal normal
+ normal normalni
+ normale normal
+ number: nummer number
+ nummer cislo
+ numero numar
+ offset: offset offset
+ offset offset
+ offset offset
+ unknown: onbekend unknown
+ unbekannt neznamy
+ ignoto necunoscut
+ bottom: onder bottom
+ unten spodek
+ fondo subsol
+ odd: oneven odd
+ ungerade liche
+ dispari impar
+ packed: opelkaar packed
+ gepackt zhustene
+ impaccato impachetat
+ unpacked: vanelkaar unpacked
+ ungepackt rozbalene
+ unpacked despachetat
+ makeup: opmaak makeup
+ umbruch zlom
+ makeup marcaj
+ atmargin: opmarge atmargin
+ amrand naokraji
+ almargine lamargine
+ overlay: overlay overlay
+ overlay prekryv
+ sovrapponi overlay
+ page: pagina page
+ seite stranka
+ pagina pagina
+ pagenumber: paginanummer pagenumber
+ seitennummer cislostranky
+ numeropagina numarpagina
+ paper: papier paper
+ papier papir
+ carta foaie
+ display: scherm display
+ bildschirm obrazovka
+ schermo display % new
+ reverse: omgekeerd reverse
+ reverse reverse
+ invertito reverse % new
+ fit: passend fit
+ passend prizpusobive
+ adatta ajustat
+ postscript: postscript postscript
+ postscript postscript
+ postscript postscript
+ preview: preview preview
+ vorschau nahled
+ anteprima previzualizare
+ program: programma program
+ programm program
+ programma program
+process: proces process
+ process process
+ process process
+ spot: spot spot
+ spot spot
+ spot spot
+ dot: punt dot
+ punkt tecka
+ punto punct
+ ran: ran ran
+ ran rozsah
+ corse rulat
+ edge: rand edge
+ kante hrana
+ bordo bordura
+ screen: raster screen
+ raster rastr
+ schermo ecran
+ rectangular: recht rectangular
+ rechteckig pravouhly
+ rettangolare rectangular
+ rightmargin: rechtermarge rightmargin
+ rechterrand pravyokraj
+ marginedestro marginedreapta
+ rightpage: rechterpagina rightpage
+ rechterseite pravastranka
+ paginadestra paginadreapta
+ rightedge: rechterrand rightedge
+ rechterkante pravahrana
+ bordodestro borduradreapta
+ right: rechts right
+ rechts vpravo
+ destra dreapta
+ line: regel line
+ zeile radek
+ riga linie
+ register: register register
+ register rejstrik
+ registro registru
+ relative: relatief relative
+ relativ relativni
+ relativo relativ
+ reset: reset reset
+ zuruecksetzten reset
+ reimposta reset
+ Romannumerals: Romeins Romannumerals
+ Roemischezahlen Rimskecislice
+ Numeriromani Numereromane
+ romannumerals: romeins romannumerals
+ roemischezahlen rimskecislice
+ numeriromani numereromane
+ greek: grieks greek
+ griechisch recky
+ greco grec
+ Greek: Grieks Greek
+ Griechisch Recky
+ Greco Grec
+ round: rond round
+ rund zaobleny
+ rotondo rotund
+ rotate: roteer rotate
+ drehe otoc
+ ruota rotit
+ stretch: rek stretch
+ strecken natahnout
+ dilata dilatat
+ backspace: rugwit backspace
+ rumpfspatium zpetnamezera
+ backspace spatiuspate % GB
+ broad: ruim broad
+ breit siroky
+ ampio broad
+ row: rij row
+ row row
+ row rand
+ slanted: schuin slanted
+ geneigt sklonene
+ inclinato inclinat
+ slantedbold: schuinvet slantedbold
+ geneigtfett sklonenetucne
+ inclinatograssetto inclinataldin
+ synchronize: synchroniseer synchronize
+ synchronize synchronize
+ synchronize synchronize
+ italicbold: italicvet italicbold
+ italicfett kurzivnitucne
+ corsivograssetto italicaldin
+ sectionnumber: sectienummer sectionnumber
+ abschnittsnummer cislooddilu
+ numerosezione numarsetiune
+ narrow: smal narrow
+ schmall uzky
+ stretto ingust
+ cutspace: snijwit cutspace
+ cutspace cutspace
+ cutspace cutspace % GB
+ tolerant: soepel tolerant
+ tolerant tolerantni
+ tollerante tolerant
+ space: spatie space
+ spatium mezera
+ spazio spatiu %% check
+ standard: standaard standard
+ standard standardni
+ standard standard
+ start: start start
+ start start
+ inizia start
+ stop: stop stop
+ stop stop
+ termina stop
+ strict: streng strict
+ streng striktni
+ rigido strict
+ strut: strut strut
+ strut strut
+ strut strut
+ sub: sub sub
+ unter pod
+ sotto sub
+ sym: sym sym
+ sym sym
+ sim sym
+ symbol: symbool symbol
+ symbol symbol
+ simbolo simbol
+ text: tekst text
+ text text
+ testo text
+ back: terug back
+ zurueck zpet
+ dietro inapot
+ test: test test
+ test test
+ test text
+ inbetween: tussen inbetween
+ zwischen mezi
+ tra intre
+ type: type type
+ tippen type
+ type type % GB
+ off: uit off
+ aus vyp
+ disattivo dezactivat
+ url: url url
+ url url
+ url url
+ URL: URL URL
+ URL URL
+ URL URL
+ fixed: vast fixed
+ fest fixne
+ fisso fixat
+ loose: los loose
+ lose uvolnene
+ lento larg
+ continue: verder continue
+ fortsetzten pokracovat
+ continua continuu
+ vertical: vertikaal vertical
+ vertikal vertikalne
+ verticale vertical
+ bold: vet bold
+ fett tucne
+ grassetto aldin
+ boldslanted: vetschuin boldslanted
+ fettgeneigt tucnesklonene
+ grassettoinclinato aldininclinat
+ bolditalic: vetitalic bolditalic
+ fettitalic tucnekurzivni
+ grassettocorsivo aldinitalic
+ quadruple: viertal quadruple
+ viertel ctyrnasobny
+ quadruplo cvadrupul
+ footer: voet footer
+ fusszeile upati
+ piedipagina subsol
+ next: volgende next
+ folgende dalsi
+ successivo urmatorul
+ before: voor before
+ vor pred
+ prima inainte
+ foreground: voorgrond foreground
+ vordergrund popredi
+ foreground primplan
+ preference: voorkeur preference
+ einstellung nastaveni
+ preferenza preferinta
+ temporary: voorlopig temporary
+ temporaer docasne
+ temporaneo temporar
+ forward: vooruit forward
+ vorwaerts vpred
+ avanti avans
+ subforward: subvooruit subforward
+ untervorwaerts podvpred
+ sottoavanti subavans
+ previous: vorige previous
+ vorig predchozi
+ precedente precedent
+ value: waarde value
+ wert hodnota
+ valore valoare
+ week: week week
+ woche tyden
+ settimana saptamana
+ weekday: weekdag weekday
+ wochentag vsedniden
+ giornosettimana zisaptamana
+ WEEKDAY: WEEKDAG WEEKDAY
+ WOCHENTAG VSEDNIDEN
+ GIORNOSETTIMANA ZISAPTAMANA
+ random: willekeurig random
+ zufaellig nahodny
+ casuale aleator
+ white: wit white
+ weiss bily
+ bianco alb
+ very: zeer very
+ sehr velmi
+ molto foarte
+ verytolerant: zeersoepel verytolerant
+ sehrtolerant velmitolerantni
+ moltotollerante foartetolerant
+ verystrict: zeerstreng verystrict
+ sehrstreng velmistriktni
+ moltorigido foartestrict % GB
+ see: zie see
+ sieh viz
+ vedi vezi
+ smallcaps: smallcaps smallcaps
+ smallcaps kapitalky
+ maiuscoletto majusculemici
+ WORD: WOORD WORD
+ WORT SLOVO
+ PAROLA CUVANT
+ firstpage: eerstepagina firstpage
+ ersteseite prvnistranka
+ primapagina primapagina
+ firstcolumn: eerstekolom firstcolumn
+ firstcolumn firstcolumn
+ firstcolumn firstcolumn
+ previouspage: vorigepagina previouspage
+ vorigeseite predchozistranka
+ paginaprecedente paginaanterioara
+ nextpage: volgendepagina nextpage
+ folgendeseite dalsistranka
+ paginasuccessiva paginaurmatoare
+ lastpage: laatstepagina lastpage
+ letzteseite poslednistrana
+ ultimapagina ultimapagina
+ lastcolumn: laatstekolom lastcolumn
+ lastcolumn lastcolumn
+ lastcolumn lastcolumn
+ lastpagenumber: laatstepaginanummer lastpagenumber
+ lastpagenumber lastpagenumber
+ lastpagenumber lastpagenumber
+ subpage: subpagina subpage
+ unterseite podstranka
+ sottopagina subpagina
+ firstsubpage: eerstesubpagina firstsubpage
+ ersteunterseite prvnipodstranka
+ primasottopagina primasubpagina
+ previoussubpage: vorigesubpagina previoussubpage
+ vorigeunterseite predchozipodstranka
+ sottopaginaprecedente subpaginaanterioara
+ nextsubpage: volgendesubpagina nextsubpage
+ folgendeunterseite dalsipodstranka
+ sottopaginasuccessiva urmatoareasubpagina
+ lastsubpage: laatstesubpagina lastsubpage
+ letzteunterseite poslaednipodstranka
+ ultimasottopagina ultimasubpagina
+ nextevenpage: volgendeevenpagina nextevenpage
+ naechstegeradeseite dalsisudastranka
+ paginaparisuccessiva paginaparaurmatoarea
+ nextoddpage: volgendeonevenpagina nextoddpage
+ naechsteungeradeseite dalsilichastranka
+ paginadisparisuccessiva paginaimparaurmatoarea
+ previousevenpage: vorigeevenpagina previousevenpage
+ vorigegeradeseite predchozisudastranka
+ paginapariprecedente paginaparaprecedenta
+ previousoddpage: vorigeonevenpagina previousoddpage
+ vorigeungeradeseite predchozilichastranka
+ paginadispariprecedente paginaimparaprecedenta
+ readonly: alleenleesbaar readonly
+ nurlesbar pouzeprocteni
+ solalettura readonly
+ required: verplicht required
+ obligatorisch pozadovane
+ richiestp obligatoriu
+ protected: beschermd protected
+ geschuetzt chranene
+ protetto protejat
+ sorted: gesorteerd sorted
+ sortiert tridene
+ ordinato sortat
+ unavailable: nietbeschikbaar unavailable
+ nichtverfuegbar nedostupne
+ nondisponibile nedisponibil
+ hidden: verborgen hidden
+ versteckt skryte
+ nascosto ascuns
+ printable: printbaar printable
+ druckbar tisknutelne
+ stampabile tiparibil
+ bookmark: bookmark bookmark
+ bookmark zalozka
+ segnalibro semncarte
+
+ nocheck: geencontrole nocheck
+ nocheck nocheck
+ nocheck nocheck
+
+% GB TB TH :
+
+ innermargin: binnenmarge innermargin
+ innermargin innermargin
+ margineinterno innermargin
+ outermargin: buitenmarge outermargin
+ outermargin outermargin
+ margineesterno outermargin
+ inneredge: binnenrand inneredge
+ inneredge inneredge
+ bordointerno inneredge
+ outeredge: buitenrand outeredge
+ outeredge outeredge
+ bordoesterno outeredge
+
+ controls: sturing controls
+ controls controls
+ controlli controale
+ nothanging: niethangend nothanging
+ nothanging nothanging
+ nonsospeso nothanging
+ hyphenated: afgebroken hyphenated
+ hyphenate hyphenated
+ sillabato despsilabe
+ nothyphenated: nietafgebroken nothyphenated
+ nothyphenated nothyphenated
+ nonsillabato nedespsilabe
+
+ overprint: overprint overprint
+ overprint overprint
+ overprint overprint % new
+ knockout: knockout knockout
+ knockout knockout
+ knockout knockout % new
+
+ xml: xml xml
+ xml xml
+ xml xml
+
+ enumeration: doornummering enumeration
+ nummerierung vycet
+ enumerazione enumerare
+ description: doordefinitie description
+ beschreibung popis
+ descrizione descriere
+
+\stopvariables
+
+\startconstants dutch english
+ german czech
+ italian romanian
+
+ controls: sturing controls
+ controls controls
+ controlli controale
+ global: globaal global
+ global globalne
+ globale global
+
+ overprint: overprint overprint
+ overprint overprint
+ overprint overprint % new
+
+\stopconstants
+
+% so far
+
+%D \stopcompressdefinitions
+
+%D Maybe it's better to make the next few variables into
+%D elements as well.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ conversion: conversie conversion
+ konversion konverze
+ coversione conversie
+ by: per by
+ pro skrz
+ da de
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D The next setup shows the use of the keyword \type{all}.
+%D These constants are the same for all languages.
+
+%D \startcompressdefinitions
+
+\startconstants all
+
+ dx: dx
+ dy: dy
+ nx: nx
+ ny: ny
+ nr: nr
+ nl: nl
+ nc: nc
+ sx: sx
+ sy: sy
+ n: n
+ vfil: vfil
+ hfil: hfil
+ strut: strut
+ reset: reset
+ set: set
+ escape: escape
+ apa: apa
+
+\stopconstants
+
+%D \stopcompressdefinitions
+
+%D We need some font family switching names both as constant
+%D and as variable.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ calligraphic: calligrafie calligraphic
+ kalligraphie kaligraficke
+ calligrafico caligrafic
+ handwritten: handschrift handwritten
+ handschrift rukopisne
+ grafiamanuale scrismanual
+ sansserif: schreefloos sansserif
+ grotesk bezserifu
+ sansserif sansserif % GB
+ roman: romaan roman
+ antiqua antikva
+ roman roman % GB
+ teletype: teletype teletype
+ fernschreiber strojopis
+ teletype teletype % GB
+ type: type type
+ tippen opis
+ type type % GB
+ serif: serif serif
+ serif serif
+ serif serif % GB
+ regular: regular regular
+ regular pravidelne
+ regolare regular
+ support: support support
+ support podpora
+ supporto suport
+ sans: sans sans
+ sans sans
+ sans sans
+ mono: mono mono
+ mono mono
+ mono mono
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D All relevent commands of \CONTEXT\ are specified in a
+%D structured way that enables the generation of reference
+%D cards. This specification is setup in a language independant
+%D way. The next category of variables is only used in this
+%D context.
+
+%D \startcompressdefinitions
+
+\startsetupvariables dutch english
+ german czech
+ italian romanian
+
+ enumeration: doornummering enumeration
+ nummerierung vycet
+ enumerazione enumerare
+ description: doordefinitie description
+ beschreibung popis
+ descrizione descriere
+ indentation: doorsprong indentation
+ einzug odsazovani
+ rientro indentare
+ labeling: doorlabel labeling
+ beschriften oznacovani
+ etichettatura etichetare
+ combinedlist: samengesteldelijst combinedlist
+ kombiniereliste kombinovanyseznam
+ elencocombinato listacombinata
+ section: sectie section
+ abschnitt oddil
+ sezione sectiune
+ register: register register
+ register rejstrik
+ registro registru
+ interaction: interactie interaction
+ interaktion interakce
+ interazione interactiune
+ synonym: synoniem synonym
+ synonym synonymum
+ sinonimo sinonim
+ synonyms: synoniemen synonyms
+ synonyme synonyma
+ sinonimi sinonime
+ sort: sorteer sort
+ sortiere trid
+ sort sortare % GB
+ sorts: sorteren sorts
+ sortieren tridit
+ sorts sortari % GB
+ name: naam name
+ name jmeno
+ nome nume
+ float: blok float
+ gleitobjekt plvouciobjekt
+ oggettomobile obiectmobil
+ floats: blokken floats
+ gleitobjekte plvouciobjekty
+ oggettimobili obiectemobile
+ paragraph: alinea paragraph
+ absatz odstavec
+ capoverso paragraf
+ framedtext: kadertekst framedtext
+ umrahmtertext oramovanytext
+ testoincorniciato textinconjurat
+ itemgroup: itemgroup itemgroup
+ itemgroup itemgroup
+ itemgroup itemgroup
+ typing: typen typing
+ tippen typing
+ typing typing % GB
+ buffer: buffer buffer
+ puffer buffer
+ buffer buffer
+ formula: formule formula
+ formel rovnice
+ formula formula
+ subformula: subformule subformula
+ unterformel podrovnice
+ sottoformula subformula
+ tabulate: tabulatie tabulate
+ tabulator tabelator
+ tabulato tabulate
+
+\stopsetupvariables
+
+%D \stopcompressdefinitions
+
+%D The number of elements used for composing user defined
+%D commands is rather small. We use a \type{-} for empty
+%D elements.
+
+%D \startcompressdefinitions
+
+\startelements dutch english
+ german czech
+ italian romanian
+
+ begin: beginvan begin
+ anfang zacatek
+ inizio inceput
+ end: eindvan end
+ ende konec
+ fine sfarsit
+ coupled: gekoppelde coupled
+ verknuepft propojene
+ accoppiato cuplat
+ get: haal get
+ get ziskat
+ prendi get
+ currentlocal: huidigelokale currentlocal
+ aktuelllokal aktualnelokalni
+ correntelocale localcurent
+ endsetup: in -
+ ein -
+ - -
+ load: laad load
+ laden nacist
+ carica incarca
+ emptyone: leeg empty
+ vuoto leer
+ prazdne gol
+ emptytwo: lege empty
+ leer prazdne
+ vuoti gol
+ list: lijst list
+ auflisten seznam
+ elenco lista
+ listof: lijstmet listof
+ auflistenvon seznam
+ elencodi listade
+ local: lokale local
+ lokal lokalne
+ locale local
+ place: plaats place
+ platziere umisti
+ metti pune
+ reserve: reserveer reserve
+ reservieren rezervovat
+ riserva rezervat
+ start: start start
+ start start
+ inizia start
+ setup: stel setup
+ stelle nastaveni
+ imposta setare
+ stop: stop stop
+ stop stop
+ termina stop
+ increment: verhoog increment
+ erhoehen zvysit
+ incrementa increment
+ next: volgende next
+ folgende dalsi
+ successivo urmatorul
+ complete: volledige complete
+ vollende uplny
+ completo complet
+ previous: vorige previous
+ vorige predchozi
+ precedente precedent
+ previouslocal: vorigelokale previouslocal
+ voriglokal predchozilokalni
+ precedentelocale precedentlocal
+ see: zie see
+ sieh viz
+ vedi vezi
+ type: type type
+ type opis
+ type type % GB
+ makeup: opmaak makeup
+ umbruch zlom
+ makeup makeup % GB
+ text: tekst text
+ text text
+ testo text
+
+\stopelements
+
+%D These are predefined instances. To be cleaned up.
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ buffer: buffer buffer
+ puffer buffer
+ buffer buffer
+ linenote: regelnoot linenote
+ linenote linenote
+ linenote linenote
+ comment: commentaar comment
+ kommentar komentar
+ commento comentariu
+ interactionmenu: interactiemenu interactionmenu
+ interaktionsmenue interaktivnimenu
+ menuinterattivo meniuinteractiune
+ postponing: uitstellen postponing
+ verschieben odlozit
+ posporre postponing % GB
+ hiding: verbergen hiding
+ verbergen skryt
+ nascondere ascundere
+ tabulate: tabulatie tabulate
+ tabulator tabelator
+ tabulato tabulate
+ tabulatehead: tabulatiekop tabulatehead
+ tabulatehead tabulatehead
+ testatabulato tabulatehead %
+ tabulatetail: tabulatiestaart tabulatetail
+ tabulatetail tabulatetail
+ codatabulato tabulatetail %
+ fact: gegeven fact
+ gegeben fakt
+ fatto fapt
+ legend: legenda legend
+ legende legenda
+ legenda legenda
+ formula: formule formula
+ formel rovnice
+ formula formula
+ tablehead: tabelkop tablehead
+ tabellenueberschrift zahlavitabulky
+ testatabella antettabel
+ tabletail: tabelstaart tabletail
+ tabellenende konectabulky
+ codatabella subsoltabel
+ setups: instellingen setups
+ impostazioni einstellungen
+ nastaveni setari
+ helptext: helptekst helptext
+ hilfetext textnapovedy
+ testoaiuto textajutator
+ localenvironment: deelomgeving localenvironment
+ lokaleumgebung lokalnihoprostredi
+ ambientelocale mediulocal
+ sectionblockenvironment: sectieblokomgeving sectionblockenvironment
+ sectionblockenvironment sectionblockenvironment
+ ambientebloccosezione blocsectiuneambient % TB TH
+ pagecomment: paginacommentaar pagecomment
+ pagecomment komentarstranky
+ commentopagina comentariupagina % TB
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D The next set of definitions is used when accessing viewer
+%D capabilities. Their foreign nature is reflected by using
+%D Capitals.
+
+%D \startcompressdefinitions
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ FirstPage: EerstePagina FirstPage
+ ErsteSeite PrvniStrana
+ PrimaPagina PrimaPagina
+ PreviousPage: VorigePagina PreviousPage
+ VorigeSeite PredchoziStrana
+ PaginaPrecedente PaginaPrecedenta
+ NextPage: VolgendePagina NextPage
+ FolgendeSeite DalsiStrana
+ PaginaSuccessiva PaginaUrmatoare
+ LastPage: LaatstePagina LastPage
+ LetzteSeite PosledniStrana
+ UltimaPagina UltimaPagina
+ PreviousJump: VorigeSprong PreviousJump
+ VorigerSprung PredchoziSkok
+ SaltoPrecedente SaltPrecedent
+ NextJump: VolgendeSprong NextJump
+ NaechsterSprung NasledujiciSkok
+ SaltoSuccessivo SaltUrmator
+ ToggleViewer: WisselViewer ToggleViewer
+ WechseleViewer ZmenitProhlizec
+ ScambiaVisualizzatore SchimbaVizualizator
+ ExitViewer: VerlaatViewer ExitViewer
+ BeendeViewer UkoncitProhlizec
+ EsciVisualizzatore IesireVizualizator
+ CloseDocument: SluitDocument CloseDocument
+ SchliesseDokument ZavritDokument
+ ChiudiDocumento InchideDocument
+ SaveDocument: BewaarDocument SaveDocument
+ SpeichereDokument UlozitDokument
+ SalvaDocumento SalvareDocument
+ SaveNamedDocument: BewaarDocumentOpNaam SaveNamedDocument
+ SaveNamedDocument SaveNamedDocument
+ SaveNamedDocument SaveNamedDocument
+ OpenNamedDocument: OpenDocumentOpNaam OpenNamedDocument
+ OpenNamedDocument OpenNamedDocument
+ OpenNamedDocument OpenNamedDocument
+ ViewerHelp: ViewerHelp ViewerHelp
+ ViewerHilfe NapovedaProhlizece
+ AiutoVisualizzatore AjutorVizualizator
+ PrintDocument: PrintDocument PrintDocument
+ DruckeDokument VytisknoutDokument
+ StampaDocumento TiparesteDocument
+ SearchDocument: DoorzoekDocument SearchDocument
+ DokumentDurchsuchen ProhledatDokument
+ CercaDocumento CautaDocument
+ SearchAgain: HerhaalZoeken SearchAgain
+ WeiterSuchen HledatZnovu
+ CercaAncora CautaDinNou
+ Query: RaadpleegDocument Query
+ Query Query
+ Richiesta Query % TB TH GB
+ QueryAgain: HerhaalRaadplegen QueryAgain
+ QueryAgain QueryAgain
+ RinnovaRichiesta QueryAgain % TB TH GB
+ GotoPage: GaNaarPagina GotoPage
+ GotoPage JdiNaStranku
+ VaiAPagina LaPagina % TB
+ StartMovie: StartFilm StartMovie
+ StartFilm SpustitFilm
+ IniziaFilm StartFilm
+ StopMovie: StopFilm StopMovie
+ StopFilm ZastavitFilm
+ FermaFilm StopFilm
+ PauseMovie: PauzeerFilm PauseMovie
+ PauseFilm PozastavitFilm
+ PausaFilm PauzaFilm
+ ResumeMovie: HervatFilm ResumeMovie
+ FortsetzenFilm PokracovatFilm
+ RiprendiFilm RepornesteFilm
+ StartSound: StartGeluid StartSound
+ StartSound StartZvuk
+ IniziaSuono StartSunet % TB
+ StopSound: StopGeluid StopSound
+ StopSound StopZvuk
+ FermaSuono StopSunet % TB
+ PauseSound: PauzeerGeluid PauseSound
+ PauseSound PozastavitZvuk
+ PausaSuono PauzaSunet % TB
+ ResumeSound: HervatGeluid ResumeSound
+ ResumeSound PokracovatZvuk
+ RiprendiSuono RepornesteSunet % TB
+
+% new
+
+ StartRendering: StartRendering StartRendering
+ StartRendering StartRendering
+ StartRendering StartRendering
+ StopRendering: StopRendering StopRendering
+ StopRendering StopRendering
+ StopRendering StopRendering
+ PauseRendering: PauzeerRendering PauseRendering
+ PauseRendering PauseRendering
+ PauseRendering PauseRendering
+ ResumeRendering: HervatRendering ResumeRendering
+ ResumeRendering ResumeRendering
+ ResumeRendering ResumeRendering
+
+% new
+
+ SaveForm: BewaarFormulier SaveForm
+ SpeicheFormular UlozitFormular
+ SalvaForm SalveazaFormular
+ LoadForm: LaadFormulier LoadForm
+ LadeFormular NacistFormular
+ CaricaForm IncarcaFormular
+ ResetForm: ResetFormulier ResetForm
+ ZuruecksetzenFormular ResetFormulare
+ ReimpostaForm ResetareFormular
+ SubmitForm: VerzendFormulier SubmitForm
+ VersendeFormular PoslatFormular
+ MandaForm TrimiteFormular
+ HideField: VerbergVeld HideField
+ VerbergeFeld SkryjPole
+ NascondiCampo AscundeCamp
+ ShowField: ToonVeld ShowField
+ ZeigeFeld UkazPole
+ MostraCampo AfiseazaCamp
+
+ FitWidth: BreedtePassend FitWidth
+ BreitePassend FitWidth
+ FitWidth AjustatLatime
+ FitHeight: HoogtePassend FitHeight
+ HoehePassend FitHeight
+ FitHeight AjustatInaltime
+
+ HideLayer: VerbergLaag HideLayer
+ HideLayer HideLayer
+ HideLayer HideLayer
+ VideLayer: ToonLaag VideLayer
+ VideLayer VideLayer
+ VideLayer VideLayer
+ToggleLayer: WisselLaag ToggleLayer
+ ToggleLayer ToggleLayer
+ ToggleLayer ToggleLayer
+
+\stopvariables
+
+%D Here are some symbol names. We capitalize them because they are
+%D viewer specific.
+
+\startvariables dutch english
+ german czech
+ italian romanian
+
+ New: Nieuw New
+ Neu Novy
+ Nuovo Nou
+ Balloon: Ballon Balloon
+ Ballon Bublinka
+ Pallone Balon
+ Addition: Toevoeging Addition
+ Zusatz Pridavek
+ Aggiunta Adaugare
+ Help: Help Help
+ Hilfe Napoveda
+ Aiuto Ajutor
+ Paragraph: Paragraaf Paragraph
+ Absatz Odstavec
+ Capoverso Paragraf
+ Key: Sleutel Key
+ Schluessel Klavesa
+ Tasto Cheie
+\stopvariables
+
+%D \stopcompressdefinitions
+
+%D Last we define some constants and variables that are used
+%D in the \PRAGMA\ extensions of \CONTEXT.
+
+%D \startcompressdefinitions
+
+\startconstants all
+
+ bet: bet
+ dat: dat
+ ken: ken
+ ref: ref
+
+\stopconstants
+
+\startvariables all
+
+ formeel: formeel
+ informeel: informeel
+ rekening: rekening
+ sticker: sticker
+ sheet: sheet
+ brief: brief
+ ls: ls
+
+\stopvariables
+
+%D \stopcompressdefinitions
+
+\stoplogginginterface
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/mult-ini.tex b/Master/texmf-dist/tex/context/base/mult-ini.tex
new file mode 100644
index 00000000000..abc01562a56
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mult-ini.tex
@@ -0,0 +1,1556 @@
+%D \module
+%D [ file=mult-ini,
+%D version=1996.06.01,
+%D title=\CONTEXT\ Multilingual Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module implements the multi||lingual interface to
+%D \CONTEXT. These capabilities concern messages, commands and
+%D parameters. Currently the following interfaces are
+%D supported:
+%D
+%D \starttabulate[|l|l|c|c|]
+%D \NC\bf language\NC\bf translator \NC\bf messages\NC\bf interface\NC\NR
+%D \NC dutch \NC Hans Hagen \NC yes \NC yes \NC\NR
+%D \NC english \NC Hans Hagen \NC yes \NC yes \NC\NR
+%D \NC german \NC Tobias Burnus \NC yes \NC yes \NC\NR
+%D \NC czech \NC Tom Hudec \NC yes \NC yes \NC\NR
+%D \NC italian \NC Giuseppe Bilotta \NC yes \NC yes \NC\NR
+%D \NC norwegian \NC Hans Fredrik Nordhaug\NC yes \NC no \NC\NR
+%D \stoptabulate
+
+\writestatus{loading}{Context Multilingual Macros / Initialization}
+
+\unprotect
+
+%D \macros
+%D [constanten,variabelen,commands]
+%D {v!,c!,k!,s!,e!,m!,l!,r!,f!,p!,x!,y!}
+%D
+%D In the system modules we introduced some prefixed constants,
+%D variables (both macros) and registers. Apart from a
+%D tremendous saving in terms of memory and a gain in speed we
+%D use from now on prefixes when possible for just another
+%D reason: consistency and multi||linguality. Systematically
+%D using prefixed macros enables us to implement a
+%D multi||lingual user interface. Redefining these next set of
+%D prefixes therefore can have desastrous results.
+%D
+%D \startlinecorrection
+%D \starttable[|c|c|c|]
+%D \HL
+%D \NC \bf prefix \NC \bf meaning \NC \bf application \NC\SR
+%D \HL
+%D \NC \type{\c!prefix!} \NC c! \NC constant (direct) \NC\FR
+%D \NC \type{\e!prefix!} \NC e! \NC element \NC\MR
+%D \NC \type{\f!prefix!} \NC f! \NC file \NC\MR
+%D \NC \type{\k!prefix!} \NC k! \NC constant (indirect) \NC\MR
+%D \NC \type{\l!prefix!} \NC l! \NC language \NC\MR
+%D \NC \type{\m!prefix!} \NC m! \NC message \NC\MR
+%D \NC \type{\p!prefix!} \NC p! \NC procedure \NC\MR
+%D \NC \type{\r!prefix!} \NC r! \NC reference \NC\MR
+%D \NC \type{\s!prefix!} \NC s! \NC system \NC\MR
+%D \NC \type{\v!prefix!} \NC v! \NC variable \NC\MR
+%D \NC \type{\x!prefix!} \NC x! \NC setup constant \NC\MR
+%D \NC \type{\y!prefix!} \NC y! \NC setup variable \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D In the single||lingual version we used \type{!}, \type{!!},
+%D \type{!!!} and \type{!!!!}.
+
+\def\c!prefix!{c!} \def\e!prefix!{e!} \def\f!prefix!{f!}
+\def\k!prefix!{k!} \def\l!prefix!{l!} \def\m!prefix!{m!}
+\def\p!prefix!{p!} \def\r!prefix!{r!} \def\s!prefix!{s!}
+\def\v!prefix!{v!} \def\x!prefix!{x!} \def\y!prefix!{y!}
+\def\t!prefix!{t!}
+
+%D \macros
+%D [constants,variables,commands]
+%D {@@,??}
+%D
+%D Variables generated by the system can be recognized on their
+%D prefix \type{@@}. They are composed of a command (class)
+%D specific tag, which can be recognized on \type{??}, and a
+%D system constant, which has the prefix \type{c!}. We'll se
+%D some more of this.
+
+\def\??prefix {??}
+\def\@@prefix {@@}
+
+%D Just to be complete we repeat some of the already defined
+%D system constants here. Maybe their prefix \type{\s!} now
+%D falls into place.
+
+\def\s!next {next} \def\s!default {default}
+\def\s!dummy {dummy} \def\s!unknown {unknown}
+
+\def\s!do {do} \def\s!dodo {dodo}
+
+\def\s!complex {complex} \def\s!start {start}
+\def\s!simple {simple} \def\s!stop {stop}
+
+\def\!!width {width} \def\!!plus {plus}
+\def\!!height {height} \def\!!minus {minus}
+\def\!!depth {depth} \def\!!to {to}
+
+%D \macros
+%D {defineinterfaceconstant,
+%D defineinterfacevariable,
+%D defineinterfaceelement,
+%D definesystemvariable,
+%D definesystemconstant,
+%D definemessageconstant,
+%D definereferenceconstant,
+%D definefileconstant}
+%D
+%D The first part of this module is dedicated to dealing with
+%D multi||lingual constants and variables. When \CONTEXT\ grew
+%D bigger and bigger in terms of bytes and used string space,
+%D we switched to predefined constants. At the cost of more
+%D hash table entries, the macros not only becase more compact,
+%D they became much faster too. Maybe an even bigger advantage
+%D was that mispelling could no longer lead to problems. Even a
+%D multi||lingual interface became possible.
+%D
+%D Constants --- we'll introduce the concept of variables later
+%D on --- are preceded by a type specific prefix, followed by a
+%D \type{!}. To force consistency, we provide a few commands
+%D for defining such constants.
+%D
+%D \starttyping
+%D \defineinterfaceconstant {name} {meaning}
+%D \defineinterfacevariable {name} {meaning}
+%D \defineinterfaceelement {name} {meaning}
+%D \stoptyping
+%D
+%D Which is the same as:
+%D
+%D \starttyping
+%D \def\c!name{meaning}
+%D \def\v!name{meaning}
+%D \def\e!name{meaning}
+%D \stoptyping
+
+\def\defineinterfaceconstant #1#2{\setvalue{\c!prefix!#1}{#2}}
+\def\defineinterfacevariable #1#2{\setvalue{\v!prefix!#1}{#2}}
+\def\defineinterfaceelement #1#2{\setvalue{\e!prefix!#1}{#2}}
+
+%D Next come some interface independant constants:
+%D
+%D \starttyping
+%D \definereferenceconstant {name} {meaning}
+%D \definefileconstant {name} {meaning}
+%D \stoptyping
+
+\def\definereferenceconstant #1#2{\setvalue{\r!prefix!#1}{#2}}
+\def\definefileconstant #1#2{\setvalue{\f!prefix!#1}{#2}}
+
+%D A new one:
+
+\def\definetypescriptconstant#1#2{\setvalue{\t!prefix!#1}{#2}}
+
+%D And finaly we have the one argument, space saving constants
+%D
+%D \starttyping
+%D \definesystemconstant {name}
+%D \definemessageconstant {name}
+%D \stoptyping
+
+\def\definesystemconstant #1{\setvalue{\s!prefix!#1}{#1}}
+\def\definemessageconstant #1{\setvalue{\m!prefix!#1}{#1}}
+
+%D In a parameter driven system, some parameters are shared
+%D by more system components. In \CONTEXT\ we can distinguish
+%D parameters by a unique prefix. Such a prefix is defined
+%D with:
+%D
+%D \starttyping
+%D \definesystemvariable {name}
+%D \stoptyping
+
+\def\definesystemvariable#1{\setevalue{\??prefix#1}{\@@prefix#1}}
+
+\definesystemvariable{ms}
+
+%D \macros
+%D {selectinterface,
+%D defaultinterface, currentinterface, currentresponses}
+%D
+%D With \type{\selectinterface} we specify the language we are
+%D going to use. The system asks for the language wanted, and
+%D defaults to \type{\currentinterface} when we just give
+%D \type{enter}. By default the message system uses the
+%D current interface language, but \type{\currentresponses}
+%D can specify another language too.
+%D
+%D Because we want to generate formats directly too, we do
+%D not ask for interface specifications when these are already
+%D defined (like in cont-nl.tex and alike).
+
+\ifx\undefined\scratchwrite \newwrite\scratchwrite \fi
+\ifx\undefined\scratchread \newwrite\scratchread \fi
+
+\immediate\openin\scratchread=mult-def.tex % may overload the defaults
+
+\ifeof\scratchread % no high level commands yet
+ \immediate\closein\scratchread
+\else
+ \immediate\closein\scratchread \input mult-def.tex
+\fi
+
+\ifx\defaultinterface\undefined
+
+ \def\defaultinterface{english}
+
+ \def\selectinterface
+ {\def\docommando##1##2%
+ {\bgroup
+ \endlinechar\minusone
+ \global\read16 to ##1
+ \egroup
+ \doifnothing\currentinterface{\let##1=##2}%
+ \doifundefined{\s!prefix!##1}{\let##1=##2}}%
+ \docommando\currentinterface\defaultinterface
+ \writestatus{interface}{defining \currentinterface\space interface}%
+ \writeline
+ \docommando\currentresponses\currentinterface
+ \writestatus{interface}{using \currentresponses\space messages}%
+ \writeline
+ \let\selectinterface\relax}
+
+\else
+
+ \def\selectinterface
+ {\writestatus{interface}{defining \currentinterface\space interface}%
+ \writeline
+ \writestatus{interface}{using \currentresponses\space messages}%
+ \writeline
+ \let\selectinterface\relax}
+
+\fi
+
+\ifx\currentinterface\undefined \let\currentinterface=\defaultinterface \fi
+\ifx\currentresponses\undefined \let\currentresponses=\defaultinterface \fi
+
+%D \macros
+%D {startinterface}
+%D
+%D Sometimes we want to define things only for specific
+%D interface languages. This can be done by means of the
+%D selector:
+%D
+%D \starttyping
+%D \startinterface language
+%D
+%D language specific definitions & commands
+%D
+%D \stopinterface
+%D \stoptyping
+
+%\def\startinterface #1
+% {\doifinsetelse{\currentinterface}{#1}
+% {\let\next\relax}
+% {\long\def\next##1\stopinterface{}}%
+% \next}
+
+\def\startinterface #1
+ {\doifnotinset\currentinterface{#1}{\gobbleuntil\stopinterface}}
+
+\let\stopinterface=\relax
+
+%D \macros
+%D {startmessages,
+%D getmessage,
+%D showmessage,
+%D makemessage}
+%D
+%D A package as large as \CONTEXT\ can hardly function without
+%D a decent message mechanism. Due to its multi||lingual
+%D interface, the message subsystem has to be multi||lingual
+%D too. A major drawback of this feature is that we have to
+%D code messages. As a result, the source becomes less self
+%D documented. On the other hand, consistency will improve.
+%D
+%D Because the overhead in terms of entries in the (already
+%D exhausted) hash table has to be minimal, messages are packed
+%D in libraries. We can extract a message from such a library
+%D in three ways:
+%D
+%D \starttyping
+%D \getmessage {library} {tag}
+%D \showmessage {library} {tag} {data}
+%D \makemessage {library} {tag} {data}
+%D \stoptyping
+%D
+%D The first command gets the message \type{tag} from the
+%D \type{library} specified. The other commands take an extra
+%D argument: a list of items to be inserted in the message
+%D text. While \type{\showmessage} shows the message at the
+%D terminal, the other commands generate the message as text.
+%D Before we explain the \type{data} argument, we give an
+%D example of a library.
+%D
+%D \starttyping
+%D \startmessages english library: alfa
+%D title: something
+%D 1: first message
+%D 2: second (--) message --
+%D \stopmessages
+%D \stoptyping
+%D
+%D The first message is a simple one and can be shown with:
+%D
+%D \starttyping
+%D \showmessage {alfa} {1} {}
+%D \stoptyping
+%D
+%D The second message on the other hand needs some extra data:
+%D
+%D \starttyping
+%D \showmessage {alfa} {2} {and last,to you}
+%D \stoptyping
+%D
+%D This message is shown as:
+%D
+%D \starttyping
+%D something : second (and last) message to you
+%D \stoptyping
+%D
+%D As we can see, the title entry is shown with the message.
+%D The data fields are comma separated and are specified in the
+%D message text by \type{--}.
+%D
+%D It is not required to define all messages in a library at
+%D once. We can add messages to a library in the following way:
+%D
+%D \starttyping
+%D \startmessages english library: alfa
+%D 10: tenth message
+%D \stopmessages
+%D \stoptyping
+%D
+%D Because such definitions can take place in different
+%D modules, the system gives a warning when a tag occurs more
+%D than once. The first occurrence takes preference over later
+%D ones, so we had better use a save offset, as shown in the
+%D example. As we can see, the title field is specified only
+%D the first time!
+%D
+%D Because we want to check for duplicate tags, the macros
+%D are a bit more complicated than neccessary. The \NEWLINE\
+%D token is used as message separator.
+%D
+%D For internal purposes one can use \type {\dogetmessage},
+%D which puts the message text asked for in \type
+%D {\currentmessagetext}.
+
+\def\findinterfacemessage#1#2%
+ {\let#2\empty
+ \def\dofindinterfacemessage##1 #1: ##2\relax##3\end{\def#2{##2}}%
+ \edef\!!stringa{\getvalue{\??ms\currentmessagelibrary} #1: \relax}%
+ \expandafter\dofindinterfacemessage\!!stringa\end}
+
+\def\composemessagetext#1--#2--#3--#4--#5--#6--#7--#8--#9\\%
+ {\def\docomposemessagetext##1,##2,##3,##4,##5,##6,##7,##8,##9\\%
+ {\edef\currentmessagetext{#1##1#2##2#3##3#4##4#5##5#6##6#7##7#8##8}}%
+ \docomposemessagetext}
+
+\def\dogetmessage#1#2%
+ {\def\currentmessagelibrary{#1}%
+ \findinterfacemessage{#2}\currentmessagetext}
+
+\unexpanded\def\getmessage#1#2%
+ {\def\currentmessagelibrary{#1}%
+ \findinterfacemessage{#2}\currentmessagetext
+ \currentmessagetext}
+
+\unexpanded\def\makemessage#1#2#3%
+ {\def\currentmessagelibrary{#1}%
+ \findinterfacemessage{#2}\currentmessagetext
+ \@EA\composemessagetext\currentmessagetext----------------\\#3,,,,,,,,\\%
+ \currentmessagetext}
+
+\def\showmessage#1#2#3%
+ {\def\currentmessagelibrary{#1}%
+ \findinterfacemessage{#2}\currentmessagetext
+ \findinterfacemessage{title}\currentmessagetitle
+ \ifx\currentmessagetext\empty
+ \def\currentmessagetext{<unknown message #2>}%
+ \else
+ \@EA\composemessagetext\currentmessagetext----------------\\#3,,,,,,,,\\%
+ \fi
+ \@EA\writestatus\@EA{\currentmessagetitle}{\currentmessagetext}}
+
+\def\doaddinterfacemessage#1#2%
+ {\findinterfacemessage{#1}\currentmessagetext
+ \doifelsenothing\currentmessagetext
+ {\setxvalue{\??ms\currentmessagelibrary}%
+ {\getvalue{\??ms\currentmessagelibrary} #1: #2\relax}}
+ {\debuggerinfotrue % we consider this an important error
+ \debuggerinfo
+ {message}
+ {duplicate tag #1
+ in library \currentmessagelibrary\space
+ of interface \currentresponses}}%
+ \futurelet\next\getinterfacemessage}
+
+\bgroup
+\obeylines
+\gdef\addinterfacemessage#1: #2
+ {\doaddinterfacemessage{#1}{#2}}%
+\egroup
+
+\def\getinterfacemessage
+ {\ifx\next\stopmessages
+ \egroup\expandafter\gobbleoneargument
+ \else
+ \expandafter\addinterfacemessage
+ \fi}
+
+\def\startmessages #1 library: #2
+ {\definemessageconstant{#2}% handy for modules
+ \bgroup
+ \obeylines
+ \doifinsetelse{#1}{\currentresponses,all}
+ {\def\next
+ {\def\currentmessagelibrary{#2}%
+ \doifundefined{\??ms\currentmessagelibrary}
+ {\letgvalueempty{\??ms\currentmessagelibrary}}%
+ \futurelet\next\getinterfacemessage}}
+ {\long\def\next##1\stopmessages{\egroup}}%
+ \next}
+
+%D Here, the messages are stored in a way that saves hash
+%D entries, i.e. they are packed in one macro per library.
+%D This was important in the days when we used \TEX's with
+%D hash tables of about 10.000. The next, less efficient way
+%D of storing the message, makes \CONTEXT\ run upto 5\%
+%D faster by storing each message in a macro. In July 2000,
+%D this costs some 185 additional hash entries, and since
+%D we run large \TEX's, let do it!
+
+\def\startmessages #1 library: #2
+ {\definemessageconstant{#2}% handy for modules
+ \bgroup
+ \obeylines
+ \doifinsetelse{#1}{\currentresponses,all}
+ {\def\next
+ {\def\currentmessagelibrary{#2}%
+ \futurelet\next\getinterfacemessage}}
+ {\long\def\next##1\stopmessages{\egroup}}%
+ \next}
+
+\def\findinterfacemessage#1#2%
+ {\edef#2{\getvalue{\??ms\currentmessagelibrary#1}}}
+
+\def\doaddinterfacemessage#1#2%
+ {\doifdefined{\??ms\currentmessagelibrary#1}
+ {\debuggerinfotrue % we consider this an important error
+ \debuggerinfo
+ {message}
+ {duplicate tag #1
+ in library \currentmessagelibrary\space
+ of interface \currentresponses}}%
+ \setxvalue{\??ms\currentmessagelibrary#1}{#2}%
+ \futurelet\next\getinterfacemessage}
+
+%D \macros
+%D {ifshowwarnings, ifshowmessages}
+%D
+%D Sometimes displaying message can slow down processing
+%D considerably. We therefore introduce warnings. Users can
+%D turn of warnings and messages by saying:
+%D
+%D \starttyping
+%D \showwarningstrue
+%D \showmessagestrue
+%D \stoptyping
+%D
+%D Turning off messages also turns off warnings, which is
+%D quote logical because they are less important.
+
+\newif\ifshowwarnings \showwarningstrue
+\newif\ifshowmessages \showmessagestrue
+
+\let\normalshowmessage=\showmessage
+
+\def\showwarning
+ {\ifshowwarnings
+ \expandafter\showmessage
+ \else
+ \expandafter\gobblethreearguments
+ \fi}
+
+\def\showmessage
+ {\ifshowmessages
+ \expandafter\normalshowmessage
+ \else
+ \expandafter\gobblethreearguments
+ \fi}
+
+%D \macros
+%D {dosetvalue,dosetevalue,dosetgvalue,dosetxvalue,docopyvalue,doresetvalue} % dogetvalue
+%D
+%D We already defined these auxiliary macros in the system
+%D modules. Starting with this module however, we have to take
+%D multi||linguality a bit more serious.
+%D
+%D First we show a well||defined (simplified) alternative:
+%D
+%D \starttyping
+%D \def\dosetvalue#1#2#3%
+%D {\doifdefinedelse{\c!prefix!#2}
+%D {\setvalue{#1\getvalue{\c!prefix!#2}}{#3}}
+%D {\setvalue{#1#2}{#3}}}
+%D
+%D \def\docopyvalue#1#2#3%
+%D {\doifdefinedelse{\c!prefix!#3}
+%D {\setvalue{#1\getvalue{\c!prefix!#3}}%
+%D {\getvalue{#2\getvalue{\c!prefix!#3}}}}
+%D {\setvalue{#1#3}%
+%D {\getvalue{#2#3}}}}
+%D \stoptyping
+%D
+%D These macros are called upon quite often and so we optimized
+%D them a bit.
+%D
+%D \starttyping
+%D \def\dosetvalue#1#2#3%
+%D {\let\c!internal!\c!internal!n
+%D \p!doifundefined{\k!prefix!#2}%
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\def\csname#1#2\endcsname{#3}%
+%D \else
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\def\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+%D \fi}
+%D
+%D \def\dosetevalue#1#2#3%
+%D {\let\c!internal!\c!internal!n
+%D \p!doifundefined{\k!prefix!#2}%
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\edef\csname#1#2\endcsname{#3}%
+%D \else
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+%D \fi}
+%D
+%D \def\dosetgvalue#1#2#3%
+%D {\let\c!internal!\c!internal!n
+%D \p!doifundefined{\k!prefix!#2}%
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\gdef\csname#1#2\endcsname{#3}%
+%D \else
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest
+%D \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+%D \fi}
+%D
+%D \def\docopyvalue#1#2#3%
+%D {\let\c!internal!\c!internal!n
+%D \p!doifundefined{\k!prefix!#3}%
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest % still needed ?
+%D \@EA\def\csname#1#3\endcsname%
+%D {\csname#2#3\endcsname}%
+%D \else
+%D \let\c!internal!\c!internal!y
+%D \let\donottest\doprocesstest % still needed ?
+%D \@EA\def\csname#1\csname\k!prefix!#3\endcsname\endcsname%
+%D {\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+%D \fi}
+%D \stoptyping
+
+\def\doresetvalue#1#2%
+ {\dosetvalue{#1}{#2}{}}
+
+\def\doignorevalue#1#2#3%
+ {\dosetvalue{#1}{#2}{}}
+
+% \def\dogetvalue#1#2%
+% {\csname#1\csname\k!prefix!#2\endcsname\endcsname}
+
+%D Although maybe not clearly visible, there is a
+%D considerable profit in further optimization. By expanding
+%D the embedded \type {\csname} we can reduce the format file
+%D by about 5\% (60~KB out of 1.9~MB).
+%D
+%D \starttyping
+%D \def\docopyvalue#1#2#3% c -> k
+%D {\p!doifundefined{\k!prefix!#3}%
+%D \let\donottest\doprocesstest
+%D \@EAEAEA\def\@EA
+%D \csname\@EA#1\@EA#3\@EA
+%D \endcsname\@EA{\csname#2#3\endcsname}%
+%D \else
+%D \let\donottest\doprocesstest
+%D \@EAEAEA\def\@EA
+%D \csname\@EA#1\@EA\csname\@EA\k!prefix!\@EA#3\@EA\endcsname\@EA
+%D \endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+%D \fi}
+%D \stoptyping
+%D
+%D The next alternatives are slightly faster.
+
+\beginTEX
+
+% \def\dosetvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+% \let\c!internal!\c!internal!y
+% \@EA\def\csname#1#2\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\def\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \fi}
+%
+% \def\dosetevalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+% \let\c!internal!\c!internal!y
+% \@EA\edef\csname#1#2\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \fi}
+%
+% \def\dosetgvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+% \let\c!internal!\c!internal!y
+% \@EA\gdef\csname#1#2\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \fi}
+%
+% cleaner (not that much faster) don't pass #3 yet:
+
+\def\dosetvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\def\@EA\@EA\csname#1#2\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\def\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+ \fi}
+
+\def\dosetevalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\edef\@EA\@EA\csname#1#2\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\edef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+ \fi}
+
+\def\dosetgvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\gdef\@EA\@EA\csname#1#2\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\gdef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+ \fi}
+
+\def\dosetxvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \@EA\ifx\csname\k!prefix!#2\endcsname\relax
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\xdef\@EA\@EA\csname#1#2\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\xdef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+ \fi}
+
+% so far
+
+\def\docopyvalue#1#2#3%
+ {\let\c!internal!\c!internal!n
+ \@EA\ifx\csname\k!prefix!#3\endcsname\relax
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\def\@EA
+ \csname\@EA#1\@EA#3\@EA
+ \endcsname\@EA{\csname#2#3\endcsname}%
+ \else
+ \let\c!internal!\c!internal!y
+ \@EAEAEA\def\@EA
+ \csname\@EA#1\@EA\csname\@EA\k!prefix!\@EA#3\@EA\endcsname\@EA
+ \endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+ \fi}
+
+\endTEX
+
+\beginETEX \protected
+
+% \def\dosetvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EA\def\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\def\csname#1#2\endcsname{#3}%
+% \fi}
+%
+% \def\dosetevalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EA\edef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\edef\csname#1#2\endcsname{#3}%
+% \fi}
+%
+% \def\dosetgvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\gdef\csname#1#2\endcsname{#3}%
+% \fi}
+%
+% \def\dosetxvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EA\xdef\csname#1\csname\k!prefix!#2\endcsname\endcsname{#3}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EA\xdef\csname#1#2\endcsname{#3}%
+% \fi}
+%
+% cleaner (not that much faster) don't pass #3 yet:
+%
+% \def\dosetvalue#1#2%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\def\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+% \else
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\def\@EA\@EA\csname#1#2\endcsname
+% \fi}
+%
+% \def\dosetevalue#1#2%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\edef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+% \else
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\edef\@EA\@EA\csname#1#2\endcsname
+% \fi}
+%
+% \def\dosetgvalue#1#2%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\gdef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+% \else
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\gdef\@EA\@EA\csname#1#2\endcsname
+% \fi}
+%
+% \def\dosetxvalue#1#2%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#2\endcsname
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\xdef\@EA\@EA\csname#1\csname\k!prefix!#2\endcsname\endcsname
+% \else
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\xdef\@EA\@EA\csname#1#2\endcsname
+% \fi}
+%
+% \def\docopyvalue#1#2#3%
+% {\let\c!internal!\c!internal!n
+% \ifcsname\k!prefix!#3\endcsname
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\def\@EA
+% \csname\@EA#1\@EA\csname\@EA\k!prefix!\@EA#3\@EA\endcsname\@EA
+% \endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+% \else
+% \let\c!internal!\c!internal!y
+% \@EAEAEA\def\@EA
+% \csname\@EA#1\@EA#3\@EA
+% \endcsname\@EA{\csname#2#3\endcsname}%
+% \fi}
+%
+% slightly more efficient (but not faster in day to day runs)
+
+\def\dosetvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \ifcsname\k!prefix!#2\endcsname
+ \let\c!internal!\c!internal!y
+ \@EA\def\csname#1\csname\k!prefix!#2\endcsname%\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EA\def\csname#1#2%\endcsname
+ \fi\endcsname}
+
+\def\dosetevalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \ifcsname\k!prefix!#2\endcsname
+ \let\c!internal!\c!internal!y
+ \@EA\edef\csname#1\csname\k!prefix!#2\endcsname%\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EA\edef\csname#1#2%\endcsname
+ \fi\endcsname}
+
+\def\dosetgvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \ifcsname\k!prefix!#2\endcsname
+ \let\c!internal!\c!internal!y
+ \@EA\gdef\csname#1\csname\k!prefix!#2\endcsname%\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EA\gdef\csname#1#2%\endcsname
+ \fi\endcsname}
+
+\def\dosetxvalue#1#2%
+ {\let\c!internal!\c!internal!n
+ \ifcsname\k!prefix!#2\endcsname
+ \let\c!internal!\c!internal!y
+ \@EA\xdef\csname#1\csname\k!prefix!#2\endcsname%\endcsname
+ \else
+ \let\c!internal!\c!internal!y
+ \@EA\xdef\csname#1#2%\endcsname
+ \fi\endcsname}
+
+\def\docopyvalue#1#2#3% real tricky expansion, quite unreadable
+ {\let\c!internal!\c!internal!n
+ \ifcsname\k!prefix!#3\endcsname
+ \let\c!internal!\c!internal!y
+ % \@EAEAEA\def\@EA\@EA
+ % \csname#1\csname\k!prefix!#3\endcsname
+ % \endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+ \@EA\def\csname#1\csname\k!prefix!#3\endcsname
+ \@EA\endcsname\@EA{\csname#2\csname\k!prefix!#3\endcsname\endcsname}%
+ \else
+ \let\c!internal!\c!internal!y
+ %\@EAEAEA\def\@EA\@EA\csname#1#3\endcsname\@EA{\csname#2#3\endcsname}%
+ \@EA\def\csname#1#3\@EA\endcsname\@EA{\csname#2#3\endcsname}%
+ \fi}
+
+\endETEX
+
+%D We can now redefine some messages that will be
+%D introduced in the multi||lingual system module.
+
+\def\showassignerror #1#2{\showmessage\m!check1{#1,#2}\waitonfatalerror}
+\def\showargumenterror#1#2{\showmessage\m!check2{#1,#2}\waitonfatalerror}
+\def\showdefinederror #1#2{\showmessage\m!check3{#1,#2}\waitonfatalerror}
+
+%D \CONTEXT\ is a parameter driven package. This means that
+%D users instruct the system by means of variables, values and
+%D keywords. These instructions take the form:
+%D
+%D \starttyping
+%D \setupsomething[some variable=some value, another one=a keyword]
+%D \stoptyping
+%D
+%D or by keyword only:
+%D
+%D \starttyping
+%D \dosomething[this way,that way,no way]
+%D \stoptyping
+%D
+%D Because the same variables can occur in more than one setup
+%D command, we have to be able to distinguish them. This is
+%D achieved by assigning them a unique prefix.
+%D
+%D Imagine a setup command for boxed text, that enables us to
+%D specify the height and width of the box. Behide the scenes
+%D the command
+%D
+%D \starttyping
+%D \setupbox [width=12cm, height=3cm]
+%D \stoptyping
+%D
+%D results in something like
+%D
+%D \starttyping
+%D \<box><width> {12cm}
+%D \<box><height> {3cm}
+%D \stoptyping
+%D
+%D while a similar command for specifying the page dimensions
+%D of an \cap{A4} page results in:
+%D
+%D \starttyping
+%D \<page><width> {21.0cm}
+%D \<page><height> {27.9cm}
+%D \stoptyping
+%D
+%D The prefixes \type{<box>} and \type{<page>} are hidden from
+%D users and can therefore be language independant. Variables
+%D on the other hand, differ for each language:
+%D
+%D \starttyping
+%D \<box><color> {<blue>}
+%D \<box><kleur> {<blauw>}
+%D \<box><couleur> {<blue>}
+%D \stoptyping
+%D
+%D In this example we can see that the assigned values or
+%D keywords are language dependant too. This will be a
+%D complication when defining multi||lingual setup files.
+%D
+%D A third phenomena is that variables and values can have a
+%D similar meaning.
+%D
+%D \starttyping
+%D \<pagenumber><location> {<left>}
+%D \<skip><left> {12cm}
+%D \stoptyping
+%D
+%D A (minor) complication is that where in english we use
+%D \type{<left>}, in dutch we find both \type{<links>} and
+%D \type{<linker>}. This means that when we use some sort of
+%D translation table, we have to distinguish between the
+%D variables at the left side and the fixed values at the
+%D right.
+%D
+%D The same goes for commands that are composed of different
+%D user supplied and/or language specific elements. In english
+%D we can use:
+%D
+%D \starttyping
+%D \<empty><figure>
+%D \<empty><intermezzo>
+%D \stoptyping
+%D
+%D But in dutch we have the following:
+%D
+%D \starttyping
+%D \<lege><figuur>
+%D \<leeg><intermezzo>
+%D \stoptyping
+%D
+%D These subtle differences automatically lead to a solution
+%D where variables, values, elements and other components have
+%D a similar logical name (used in macro's) but a different
+%D meaning (supplied by the user).
+%D
+%D Our solution is one in which the whole system is programmed
+%D in terms of identifiers with language specific meanings. In
+%D such an implementation, each fixed variable is available as:
+%D
+%D \starttyping
+%D \<prefix><variable>
+%D \stoptyping
+%D
+%D This means that for instance:
+%D
+%D \starttyping
+%D \setupbox[width=12cm]
+%D \stoptyping
+%D
+%D expands to something like:
+%D
+%D \starttyping
+%D \def\boxwidth{12cm}
+%D \stoptyping
+%D
+%D because we don't want to recode the source, a setup command
+%D in another language has to expand to this variable, so:
+%D
+%D \starttyping
+%D \setupblock[width=12cm]
+%D \stoptyping
+%D
+%D has to result in the definition of \type{\boxwidth} too.
+%D This method enables us to build compact, fast and readable
+%D code.
+%D
+%D An alternative method, which we considered using, uses a
+%D more indirect way. In this case, both calls generate a
+%D different variable:
+%D
+%D \starttyping
+%D \def\boxwidth {12cm}
+%D \def\boxbreedte {12cm}
+%D \stoptyping
+%D
+%D And because we don't want to recode those megabytes of
+%D already developed code, this variable has to be called with
+%D something like:
+%D
+%D \starttyping
+%D \valueof\box\width
+%D \stoptyping
+%D
+%D where \type{\valueof} takes care of the translation of
+%D \type{width} or \type{breedte} to \type{width} and
+%D combining this with \type{box} to \type{\boxwidth}.
+%D
+%D One advantage of this other scheme is that, within certain
+%D limits, we can implement an interface that can be switched
+%D to another language at will, while the current approach
+%D fixes the interface at startup. There are, by the way,
+%D other reasons too for not choosing this scheme. Switching
+%D user generated commands is for instance impossible and a
+%D dual interface would therefore give a strange mix of
+%D languages.
+%D
+%D Now let's work out the first scheme. Although the left hand
+%D of the assignment is a variable from the users point of
+%D view, it is a constant in terms of the system. Both
+%D \type{width} and \type{breedte} expand to \type{width}
+%D because in the source we only encounter \type{width}. Such
+%D system constants are presented as
+%D
+%D \starttyping
+%D \c!width
+%D \stoptyping
+%D
+%D This constant is always equivalent to \type{width}. As we
+%D can see, we use \type{c!} to mark this one as constant. Its
+%D dutch counterpart is:
+%D
+%D \starttyping
+%D breedte
+%D \stoptyping
+%D
+%D When we interpret a setup command each variable is
+%D translated to it's \type{c!} counterpart. This means that
+%D \type{breedte} and \type{width} expand to \type{breedte}
+%D and \type{\c!width} which both expand to \type{width}. That
+%D way user variables become system constants.
+%D
+%D The interpretation is done by means of a general setup
+%D command \type{\getparameters} that we introduced in the
+%D system module. Let us define some simple setup command:
+%D
+%D \starttyping
+%D \def\setupbox[#1]%
+%D {\getparameters[\??bx][#1]}
+%D \stoptyping
+%D
+%D This command can be used as:
+%D
+%D \starttyping
+%D \setupbox [width=3cm, height=1cm]
+%D \stoptyping
+%D
+%D Afterwards we have two variables \type{\@@bxwidth} and
+%D \type{\@@bxheight} which have the values \type{3cm} and
+%D \type{1cm} assigned. These variables are a combinatiom of
+%D the setup prefix \type{\??bx}, which expands to \type{@@bx}
+%D and the translated user supplied variables \type{width} and
+%D \type{height} or \type{breedte} and \type{hoogte},
+%D depending on the actual language. In dutch we just say:
+%D
+%D \starttyping
+%D \setupblock [width=3cm, height=1cm]
+%D \stoptyping
+%D
+%D and get ourselves \type{\@@bxwidth} and \type{\@@bxheight}
+%D too. In the source of \CONTEXT, we can recognize constants
+%D and variables on their leading \type{c!}, \type{v!} etc.,
+%D prefixes on \type{??} and composed variables on \type{@@}.
+%D
+%D We already saw that user supplied keywords need some
+%D special treatment too. This time we don't translate the
+%D keyword, but instead use in the source a variable which
+%D meaning depends on the interface language.
+%D
+%D \starttyping
+%D \v!left
+%D \stoptyping
+%D
+%D Which can be used in macro's like:
+%D
+%D \starttyping
+%D \processaction
+%D [\@@bxlocation]
+%D [ \v!left=>\dosomethingontheleft,
+%D \v!middle=>\dosomthinginthemiddle,
+%D \v!right=>\dosomethingontheright]
+%D \stoptyping
+%D
+%D Because variables like \type{\@@bxlocation} can have a lot
+%D of meanings, including tricky expandable tokens, we cannot
+%D translate this meaning when we compare. This means that
+%D \type{\@@bxlocation} can be \type{left} of \type{links} of
+%D whatever meaning suits the language. But because
+%D \type{\v!left} also has a meaning that suits the language,
+%D we are able to compare.
+%D
+%D Although we know it sounds confusing we want to state two
+%D important characteristics of the interface as described:
+%D
+%D \startnarrower \em
+%D user variables become system constants
+%D \stopnarrower
+%D
+%D and
+%D
+%D \startnarrower \em
+%D user constants (keywords) become system variables
+%D \stopnarrower
+%D
+
+%D \macros
+%D {startconstants,startvariables}
+%D
+%D It's time to introduce the macro's that are responsible for
+%D this translations process, but first we show how constants
+%D and variables are defined. We only show two languages and
+%D a few words.
+%D
+%D \starttyping
+%D \startconstants english dutch
+%D
+%D width: width breedte
+%D height: height hoogte
+%D
+%D \stopconstants
+%D \stoptyping
+%D
+%D Keep in mind that what users see as variables, are constants
+%D for the system.
+%D
+%D \starttyping
+%D \startvariables english dutch
+%D
+%D location: left links
+%D text: text tekst
+%D
+%D \stopvariables
+%D \stoptyping
+%D
+%D The macro's responsible for interpreting these setups are
+%D shared. They take care of empty lines and permit a more or
+%D less free format. All setups accept the keyword \type{all}
+%D which equals every language.
+
+%D The next few macros come into action when we generate
+%D interface log files:
+
+\newif\iflogginginterface
+
+\def\flushinterfaceelementline
+ {\iflogginginterface
+ \immediate\write\scratchwrite{\interfaceelementline}%
+ \let\interfaceelementline\empty
+ \fi}
+
+\def\saveinterfaceelementline#1%
+ {\iflogginginterface
+ \edef\interfaceelementline{\interfaceelementline#1\space}%
+ \fi}
+
+\def\startlogginginterface #1 %
+ {\logginginterfacetrue
+ \let\interfaceelementline\empty
+ \immediate\openout\scratchwrite=./#1\relax}
+
+\def\stoplogginginterface
+ {\flushinterfaceelementline
+ \immediate\closeout\scratchwrite
+ \logginginterfacefalse}
+
+%D By default we don't log at all.
+
+\def\startlogginginterface #1 {}
+\def\stoplogginginterface {}
+
+%D These logging commands are used in the next macros.
+
+\def\nointerfaceobject{-}
+
+\def\startinterfaceobjects#1#2%
+ {\!!counta\plusone
+ \let\dogetinterfaceobject\dogetinterfacetemplate
+ \let\dowithinterfaceelement#1%
+ \def\dodogetinterfaceobjects
+ {\ifx\next#2%
+ \flushinterfaceelementline
+ \flushinterfaceelementline
+ \def\next####1{#2}% was: \let\next\gobbleoneargument
+ \else\ifx\next\par
+ \long\def\next####1{\dogetinterfaceobjects}%
+ \else\ifx\next\empty
+ \def\next####1{\dogetinterfaceobjects}%
+ \else
+ \def\next####1 {\dogetinterfaceobject[####1:\relax]\dogetinterfaceobjects}%
+ \fi\fi\fi
+ \next}%
+ \def\dogetinterfaceobjects{\futurelet\next\dodogetinterfaceobjects}%
+ \dogetinterfaceobjects}
+
+\def\dogetinterfacetemplate[#1:#2]%
+ {\saveinterfaceelementline{#1}%
+ \doifinsetelse{#1}{\currentinterface,all}
+ {\let\dogetinterfaceobject\doskipinterfaceobject}
+ {\advance\!!counta\plusone}}
+
+\def\doskipinterfaceobject[#1:#2#3]%
+ {\if#2:%
+ \let\dogetinterfaceobject\dogetinterfaceelement
+ \dogetinterfaceobject[#1:#2#3]%
+ \else
+ \saveinterfaceelementline{#1}%
+ \fi}
+
+\let\interfaceelementline\empty
+
+\def\dogetinterfaceelement[#1:#2#3]%
+ {\ifx#2:%
+ \!!countb\zerocount
+ \def\!!stringa{#1}%
+ \flushinterfaceelementline
+ \else
+ \advance\!!countb\plusone
+ \saveinterfaceelementline{#1}%
+ \ifnum\!!countb=\!!counta
+ \@EA\dowithinterfaceelement\@EA{\!!stringa}{#1}%
+ \let\dogetinterfaceobject\doskipinterfaceobject
+ \fi
+ \fi}
+
+%D The constants and variables are defined as described. When
+%D \type {\interfacetranslation} is \type{true}, we also
+%D generate a reverse translation. Because we don't want to put
+%D too big a burden on \TEX's hash table, this is no default
+%D behavior. Reverse translation is used in the commands that
+%D generate the quick reference cards. We are going to define
+%D the real \CONTEXT\ commands in an abstract way and generate
+%D those reference cards for each language without further
+%D interference.
+
+%D Anno 2003 I've forgotten why the \type {\c!internal} is
+%D still in there; it's probably a left over from an experiment.
+
+%D Once we're gone XML we can drop some of the extra mappings.
+
+\let\c!internal!y \string
+\def\c!internal!n {-}
+\let\c!internal! \c!internal!y
+
+\def\setinterfaceconstant#1#2%
+ {\setvalue{\c!prefix!#1}{\c!internal!#1}%
+ \doifelse{#2}\nointerfaceobject % ?
+ {\debuggerinfo{constant}{#1 defined as #1 by default}%
+ }% \setvalue{\k!prefix!#1}{#1}} % was #2 -> #1
+ {\debuggerinfo{constant}{#1 defined as #2}%
+ \ifinterfacetranslation
+ \setvalue{\x!prefix!#1}{#2}%
+ \fi
+ \checksetvalue{\k!prefix!#2}{#1}%
+ \setvalue{\k!prefix!#2}{#1}}}
+
+\def\setinterfacevariable#1#2%
+ {\doifelse{#2}\nointerfaceobject
+ {\debuggerinfo{variable}{#1 defined as #1 by default}%
+ \checksetvalue{\v!prefix!#1}{#1}%
+ \setvalue{\v!prefix!#1}{#1}}
+ {\debuggerinfo{variable}{#1 defined as #2}%
+ \checksetvalue{\v!prefix!#1}{#2}%
+ \setvalue{\v!prefix!#1}{#2}}}
+
+\def\checksetvalue#1#2%
+ {\doifdefined{#1}{\doifvaluesomething{#1}{\doifnotvalue{#1}{#2}
+ {\writestatus{problems}{set #1 to #2 overloads \getvalue{#1}}}}}}
+
+\def\startvariables{\startinterfaceobjects\setinterfacevariable\stopvariables}
+\def\startconstants{\startinterfaceobjects\setinterfaceconstant\stopconstants}
+
+\let\stopvariables\relax
+\let\stopconstants\relax
+
+%D \macros
+%D {defineinterfaceconstant}
+%D
+%D Next we redefine a previously defined macro to take care of
+%D interface translation too. It's a bit redundant, because
+%D in these situations we could use the c||version, but for
+%D documentation purposes the x||alternative comes in handy.
+
+\def\defineinterfaceconstant#1#2%
+ {\setvalue{\c!prefix!#1}{#2}%
+ \ifinterfacetranslation
+ \setvalue{\x!prefix!#1}{#2}%
+ \fi}
+
+%D \macros
+%D {startinterfacesetupconstant}
+%D
+%D The next command, \type{\startinterfacesetupconstant}, which
+%D behavior also depends on the boolean, is used for constants
+%D that are only needed in these quick reference macro's. The
+%D following, more efficient approach does not work here,
+%D because it sometimes generates spaces.
+%D
+%D \starttyping
+%D \def\setinterfacesetupconstant
+%D {\ifinterfacetranslation
+%D \expandafter\setinterfaceconstant
+%D \fi}
+%D \stoptyping
+%D
+%D We therefore use the more redundant but robust method:
+
+\def\setinterfacesetupvariable#1#2%
+ {\ifinterfacetranslation
+ \doifelse{#2}\nointerfaceobject
+ {\setvalue{\y!prefix!#1}{#1}}
+ {\setvalue{\y!prefix!#1}{#2}}%
+ \fi}
+
+\def\startsetupvariables{\startinterfaceobjects\setinterfacesetupvariable\stopsetupvariables}
+
+\let\stopsetupvariables\relax
+
+%D \macros
+%D {startelements}
+%D
+%D Due to the object oriented nature of \CONTEXT, we also need
+%D to define the elements that are used to build commands:
+%D
+%D \starttyping
+%D \startelements english dutch
+%D
+%D beginvan: begin beginvan
+%D eindvan: end eindvan
+%D start: start start
+%D stop: stop stop
+%D
+%D \stopelements
+%D \stoptyping
+%D
+%D Such elements sometimes are the same in diferent
+%D languages, but mostly they differ. Things can get even
+%D confusing when we look at for instance the setup commands.
+%D In english we say \type{\setup<something>}, but in dutch we
+%D have: \type{\stel<iets>in}. Such split elements are no
+%D problem, because we just define two elements. When no second
+%D part is needed, we use a \type{-}:
+%D
+%D \starttyping
+%D \startelements english dutch
+%D
+%D setupa: setup stel
+%D setupb: - in
+%D
+%D \stopelements
+%D \stoptyping
+%D
+%D Element translation is realized by means of:
+
+\def\setinterfaceelement#1#2%
+ {\doifelse{#2}\nointerfaceobject
+ {\debuggerinfo{element}{#1 defined as <empty>}%
+ \resetvalue{\e!prefix!#1}}
+ {\doifdefinedelse{\e!prefix!#1}
+ {\doifnotvalue{\e!prefix!#1}{#2}
+ {\debuggerinfo{element}{#1 redefined as #2}%
+ \setvalue{\e!prefix!#1}{#2}}}
+ {\debuggerinfo{element}{#1 defined as #2}%
+ \setvalue{\e!prefix!#1}{#2}}}}
+
+\def\startelements{\startinterfaceobjects\setinterfaceelement\stopelements}
+
+\let\stopelements\relax
+
+%D \macros
+%D {startcommands}
+%D
+%D The last setup has to do with the commands themselve.
+%D Commands are defined as:
+%D
+%D \starttyping
+%D \startcommands english dutch
+%D
+%D starttekst: starttext starttekst
+%D stoptekst: stoptext stoptekst
+%D omlijnd: framed omlijnd
+%D margewoord: marginword margewoord
+%D
+%D \stopcommands
+%D \stoptyping
+%D
+%D Here we also have to take care of the optional translation
+%D needed for reference cards.
+
+% \ifx\doifdefinedascommandelse\undefined
+% \let\doifdefinedascommandelse\thirdofthreearguments
+% \else
+% % this one will be defined in the encoding modules
+% \fi
+
+\def\setinterfacecommand#1#2%
+ {\doifelse{#2}\nointerfaceobject
+ {\debuggerinfo{command}{no link to #1}%
+ \setinterfacesetupvariable{#1}{#1}}
+ {\doifelse{#1}{#2}
+ {\debuggerinfo{command}{#1 remains #1}}
+ {\doifdefinedelse{#2}
+ {\debuggerinfo{command}{core command #2 redefined as #1}}%
+ {\debuggerinfo{command}{#2 defined as #1}}%
+ %\@EAEAEA\def\@EA\csname\@EA#2\@EA\endcsname\@EA{\csname#1\endcsname}}%
+ \@EA\def\csname#2\@EA\endcsname\@EA{\csname#1\endcsname}}% ugly but faster
+ \setinterfacesetupvariable{#1}{#2}}}
+
+\def\startcommands{\startinterfaceobjects\setinterfacecommand\stopcommands}
+
+\let\stopcommands\relax
+
+%D \macros
+%D {getinterfaceconstant, getinterfacevariable}
+%D
+%D Generating the interface translation macro's that are used
+%D in the reference lists, is enabled by setting the boolean:
+%D
+%D \starttyping
+%D \interfacetranslationtrue
+%D \stoptyping
+%D
+%D Keep in mind that enabling interfacetranslation costs a
+%D bit of hash space.
+
+\newif\ifinterfacetranslation
+
+% for a long time:
+%
+% \def\getinterfaceconstant#1%
+% {\ifinterfacetranslation
+% \doifdefinedelse{\x!prefix!#1}
+% {\getvalue{\x!prefix!#1}}
+% {#1}%
+% \else
+% #1%
+% \fi}
+%
+% \def\getinterfacevariable#1%
+% {\ifinterfacetranslation
+% \doifdefinedelse{\y!prefix!#1}
+% {\getvalue{\y!prefix!#1}}
+% {#1}%
+% \else
+% #1%
+% \fi}
+%
+% more compact
+
+\def\getinterfaceconstant#1%
+ {\ifinterfacetranslation
+ \executeifdefined{\x!prefix!#1}{#1}%
+ \else
+ #1%
+ \fi}
+
+\def\getinterfacevariable#1%
+ {\ifinterfacetranslation
+ \executeifdefined{\y!prefix!#1}{#1}%
+ \else
+ #1%
+ \fi}
+
+%D When a reference list is generated, one does not need to
+%D generate a new format. Just reloading the relevant
+%D definition files suits:
+%D
+%D \starttyping
+%D \interfacetranslationtrue
+%D \input mult-con
+%D \input mult-com
+%D \stoptyping
+
+%D \macros
+%D {interfaced}
+%D
+%D The setup commands translate the constants automatically.
+%D When we want to translate 'by hand' we can use the simple
+%D but effective command:
+%D
+%D \starttyping
+%D \interfaced {something}
+%D \stoptyping
+%D
+%D Giving \type{\interfaced{breedte}} results in \type{width}
+%D or, when not defined, in \type{breedte} itself. This
+%D macro is used in the font switching mechanism.
+
+\beginTEX
+
+\def\interfaced#1%
+ {\expandafter\ifx\csname\k!prefix!#1\endcsname\relax
+ #1%
+ \else
+ \csname\k!prefix!#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\interfaced#1%
+ {\ifcsname\k!prefix!#1\endcsname
+ \csname\k!prefix!#1\endcsname
+ \else
+ #1%
+ \fi}
+
+\endETEX
+
+%D So much for the basic multi||lingual interface commands. The
+%D macro's can be enhanced with more testing facilities, but
+%D for the moment they suffice.
+
+%D Out of convenience we define the banners here.
+
+\edef\contextbanner
+ {ConTeXt \space
+ ver: \noexpand \contextversion \space \space
+ fmt: \noexpand \formatversion \space \space
+ int: \noexpand \currentinterface \space \space
+ mes: \noexpand \currentresponses}
+
+\def\showcontextbanner
+ {\writeline\writestring{\contextbanner}\writeline}
+
+\edef\formatversion
+ {\ifx\normalyear \undefined\the\year \else\the\normalyear \fi.%
+ \ifx\normalmonth\undefined\the\month\else\the\normalmonth\fi.%
+ \ifx\normalday \undefined\the\day \else\the\normalday \fi}
+
+\ifx\contextversion\undefined
+ \def\contextversion{unknown}
+ \def\contextversionnumber{0}
+\else
+ \def\contextversionnumber#1.#2.#3\relax{#1\ifnum#2<10 0\fi#2\ifnum#3<10 0\fi#3}
+ \edef\contextversionnumber{\expandafter\contextversionnumber\contextversion\relax}
+\fi
+
+\ifx\undefined\normaldump
+ \newtoks\everydump
+ \let\normaldump\dump
+ \def\dump{\the\everydump\normaldump}
+\fi
+
+\appendtoks \showcontextbanner \to \everydump
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/mult-sys.tex b/Master/texmf-dist/tex/context/base/mult-sys.tex
new file mode 100644
index 00000000000..5a398b25df3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/mult-sys.tex
@@ -0,0 +1,839 @@
+%D \module
+%D [ file=mult-sys,
+%D version=1996.06.01,
+%D title=\CONTEXT\ Multilingual Macros,
+%D subtitle=System,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In boring module we define a lot of obscure but useful
+%D system constants. By doing so we save lots of memory while
+%D at the same time we prevent ourself from typing errors.
+
+\writestatus{loading}{Context Multilingual Macros / System}
+
+\unprotect
+
+%D The constants are grouped in such a way that there is a
+%D minimal change of conflicts.
+%D
+%D \starttyping
+%D \definesystemconstants {word}
+%D \definemessageconstant {word}
+%D \stoptyping
+%D
+%D This commands generate \type{\s!word} and \type{\m!word}.
+
+%D First we define some system constants used for both the
+%D multi||lingual interface and multi||linguag typesetting.
+
+\definesystemconstant {afrikaans} \definesystemconstant {af}
+\definesystemconstant {catalan} \definesystemconstant {ca}
+\definesystemconstant {chinese} \definesystemconstant {cn}
+\definesystemconstant {croation} \definesystemconstant {hr}
+\definesystemconstant {czech} \definesystemconstant {cz}
+\definesystemconstant {danish} \definesystemconstant {da}
+\definesystemconstant {dutch} \definesystemconstant {nl}
+\definesystemconstant {english} \definesystemconstant {en}
+\definesystemconstant {finish} \definesystemconstant {fi}
+\definesystemconstant {french} \definesystemconstant {fr}
+\definesystemconstant {german} \definesystemconstant {de}
+\definesystemconstant {hungarian} \definesystemconstant {hu}
+\definesystemconstant {italian} \definesystemconstant {it}
+\definesystemconstant {latin} \definesystemconstant {la}
+\definesystemconstant {norwegian} \definesystemconstant {no}
+\definesystemconstant {polish} \definesystemconstant {pl}
+\definesystemconstant {portuguese} \definesystemconstant {pt}
+\definesystemconstant {romanian} \definesystemconstant {ro}
+\definesystemconstant {russian} \definesystemconstant {ru}
+\definesystemconstant {slovak} \definesystemconstant {sk}
+\definesystemconstant {slovenian} \definesystemconstant {sl}
+\definesystemconstant {slovene}
+\definesystemconstant {spanish} \definesystemconstant {es}
+\definesystemconstant {swedish} \definesystemconstant {sv}
+\definesystemconstant {turkish} \definesystemconstant {tr}
+\definesystemconstant {ukenglish} \definesystemconstant {uk}
+\definesystemconstant {ukrainian} \definesystemconstant {ua}
+\definesystemconstant {usenglish} \definesystemconstant {us}
+\definesystemconstant {greek} \definesystemconstant {gr}
+\definesystemconstant {vietnamese} \definesystemconstant {vn}
+
+%D For proper \UNICODE\ support we need a few font related
+%D constants.
+
+\definesystemconstant {BoldItalic}
+\definesystemconstant {BoldSlanted}
+\definesystemconstant {Bold}
+\definesystemconstant {Italic}
+\definesystemconstant {Regular}
+\definesystemconstant {Slanted}
+\definesystemconstant {Unicode}
+
+\definesystemconstant {Serif} \definesystemconstant {Regular}
+\definesystemconstant {Sans} \definesystemconstant {Support}
+\definesystemconstant {Mono} \definesystemconstant {Type}
+
+\definesystemconstant {Normal}
+\definesystemconstant {Caps}
+
+%D As the name of their define command states, the next set of
+%D constants is used in the message macro's.
+
+\definemessageconstant {colors}
+\definemessageconstant {columns}
+\definemessageconstant {encodings}
+\definemessageconstant {figures}
+\definemessageconstant {files}
+\definemessageconstant {floatblocks}
+\definemessageconstant {fonts}
+\definemessageconstant {handlings}
+\definemessageconstant {interactions}
+\definemessageconstant {javascript}
+\definemessageconstant {layouts}
+\definemessageconstant {linguals}
+\definemessageconstant {references}
+\definemessageconstant {specials}
+\definemessageconstant {structures}
+\definemessageconstant {symbols}
+\definemessageconstant {systems}
+\definemessageconstant {textblocks}
+\definemessageconstant {verbatims}
+\definemessageconstant {versions}
+
+%D The word \type{height} takes 6~token memory cells. The
+%D control sequence \type{\height} on the other hand uses only
+%D one. Knowing this, we can improve the performance of \TEX,
+%D both is terms of speed and memory usage, by using control
+%D sequences instead of the words written in full.
+%D
+%D Where in the \ASCII\ file the second lines takes nine extra
+%D characters, \TEX\ saves us 13~tokens.
+%D
+%D \starttyping
+%D \hrule width 10pt height 2pt depth 1pt
+%D \hrule \!!width 10pt \!!height 2pt \!!depth 1pt
+%D \stoptyping
+%D
+%D One condition is that we have defined \type{\!!height},
+%D \type{\!!width} and \type{\!!depth} as respectively
+%D \type{height}, \type{width} and \type{depth}. Using this
+%D scheme therefore only makes sense when a token sequence is
+%D used more than once. Savings like this should of course be
+%D implemented in english, just because \TEX\ is english.
+
+\def\!!width {width}
+\def\!!height {height}
+\def\!!depth {depth}
+\def\!!plus {plus}
+\def\!!minus {minus}
+\def\!!fill {fill}
+\def\!!to {to}
+
+%D The same goes for some \CONTEXT\ constants, used in the
+%D definition of private commands:
+
+\definesystemconstant {next}
+\definesystemconstant {pickup}
+
+\definesystemconstant {ascii}
+\definesystemconstant {default}
+\definesystemconstant {unknown}
+
+\definesystemconstant {action}
+\definesystemconstant {compare}
+
+\definesystemconstant {do}
+\definesystemconstant {dodo}
+
+\definesystemconstant {complex}
+\definesystemconstant {simple}
+
+\definesystemconstant {start}
+\definesystemconstant {stop}
+
+\definesystemconstant {dummy}
+
+\definesystemconstant {local}
+\definesystemconstant {global}
+
+\definesystemconstant {done}
+
+\definesystemconstant {font}
+
+%D A more experienced \TEX\ user will recognize the next four
+%D constants. We need these because font-definitions are
+%D partially english.
+
+\definesystemconstant {run}
+
+\definesystemconstant {fam}
+\definesystemconstant {text}
+\definesystemconstant {script}
+\definesystemconstant {scriptscript}
+
+\definesystemconstant {lefthyphenmin}
+\definesystemconstant {righthyphenmin}
+
+\definesystemconstant {skewchar}
+\definesystemconstant {hyphenchar}
+\definesystemconstant {encoding}
+\definesystemconstant {mapping}
+\definesystemconstant {language}
+\definesystemconstant {patterns}
+\definesystemconstant {rscale}
+\definesystemconstant {handling}
+\definesystemconstant {ucmap}
+
+\definesystemconstant {property}
+\definesystemconstant {overprint}
+\definesystemconstant {layer}
+\definesystemconstant {effect}
+\definesystemconstant {negative}
+
+\definesystemconstant {black}
+\definesystemconstant {white}
+
+%D Just to be complete we define the standard \TEX\ units.
+
+\definesystemconstant {cm}
+\definesystemconstant {em}
+\definesystemconstant {ex}
+\definesystemconstant {mm}
+\definesystemconstant {pt}
+\definesystemconstant {sp}
+\definesystemconstant {bp}
+\definesystemconstant {in}
+
+%D These constants are used for internal and utility
+%D commands.
+
+\definesystemconstant {check}
+\definesystemconstant {reset}
+\definesystemconstant {set}
+
+\definesystemconstant {entrya}
+\definesystemconstant {entryb}
+\definesystemconstant {entryc}
+\definesystemconstant {entry}
+\definesystemconstant {see}
+\definesystemconstant {from}
+\definesystemconstant {to}
+\definesystemconstant {page}
+\definesystemconstant {line}
+
+\definesystemconstant {synonym}
+
+\definesystemconstant {reference}
+\definesystemconstant {main}
+
+\definesystemconstant {list}
+
+\definesystemconstant {item}
+\definesystemconstant {itemcount}
+
+\definesystemconstant {number}
+\definesystemconstant {references}
+\definesystemconstant {between}
+\definesystemconstant {format}
+\definesystemconstant {old}
+
+\definesystemconstant {thisisblock}
+\definesystemconstant {thiswasblock}
+
+\definesystemconstant {figurepreset}
+
+\definesystemconstant {empty}
+
+%D Some \CONTEXT\ commands take a two||pass aproach to
+%D optimize the typesetting. Each two||pass object has its
+%D own tag.
+
+\definesystemconstant {pass}
+
+\definesystemconstant {data}
+\definesystemconstant {float}
+\definesystemconstant {list}
+\definesystemconstant {page}
+\definesystemconstant {subpage}
+\definesystemconstant {margin}
+\definesystemconstant {profile}
+\definesystemconstant {versionbegin}
+\definesystemconstant {versionend}
+\definesystemconstant {cross}
+\definesystemconstant {paragraph}
+
+%D A lot of macros use tags to distinguish between different
+%D objects, e.g. lists and registers.
+
+\definesystemconstant {prt} % part (deel)
+\definesystemconstant {chp} % chapter (hoofdstuk)
+\definesystemconstant {sec} % section (paragraaf)
+\definesystemconstant {tit} % title (titel)
+\definesystemconstant {sub} % subject (onderwerp)
+\definesystemconstant {mar} % margin (marge)
+\definesystemconstant {num} % number (doornummeren)
+\definesystemconstant {def} % definition (doordefinieren)
+\definesystemconstant {for} % formula (formule)
+\definesystemconstant {fnt} % footnote (voetnoot)
+\definesystemconstant {ind} % index (register)
+\definesystemconstant {lin} % linked index
+\definesystemconstant {lst} % list (opsomming)
+\definesystemconstant {flt} % float (plaatsblok)
+\definesystemconstant {pag} % page (pagina)
+\definesystemconstant {txt} % text (tekst)
+\definesystemconstant {ref} % reference (verwijzing)
+\definesystemconstant {lab} % label (label)
+\definesystemconstant {aut} % automatic (inhoud, index)
+\definesystemconstant {vwa} % automatic (illustrations)
+\definesystemconstant {vwb} % automatic (illustrations)
+
+\definesystemconstant {kop} % kop % still dutch
+
+%D Reference labels can be tagged by users, for instance by
+%D means of \type{tag:}. The reference mechanism itself uses
+%D some tags too. These are definitely not to be used by users.
+%D Here they are:
+
+\definereferenceconstant {cross} {:c:} % cross reference
+\definereferenceconstant {view} {:v:} % view reference
+\definereferenceconstant {viewa} {:a:} % view reference test a
+\definereferenceconstant {viewb} {:b:} % view reference test b
+\definereferenceconstant {page} {:p:} % page referece
+\definereferenceconstant {list} {:l:} % list reference
+\definereferenceconstant {exec} {:e:} % execution reference
+\definereferenceconstant {form} {:m:} % form reference
+\definereferenceconstant {syst} {:s:} % system reference
+
+\definereferenceconstant {from} {:f:} % from list reference
+\definereferenceconstant {to} {:t:} % to list reference
+
+\definereferenceconstant {object} {:o:} % object reference
+\definereferenceconstant {driver} {:d:} % driver object reference
+\definereferenceconstant {widget} {:w:} % field chain reference
+
+\definereferenceconstant {java} {:j:} % java scripts
+
+%D When we use numbers and dimensions the same applies as
+%D with the keywords like \type{width} and \type{plus}
+%D mentioned earlier.
+
+\def\!!ten {10}
+\def\!!twelve {12}
+\def\!!hundred {100}
+\def\!!thousand {1000}
+\def\!!tenthousand {10000}
+\def\!!maxcard {65536}
+\def\!!medcard {32768}
+
+\def\!!zeropoint {0pt}
+\def\!!onepoint {1pt}
+\def\!!twopoint {2pt}
+\def\!!threepoint {3pt}
+\def\!!fourpoint {4pt}
+\def\!!fivepoint {5pt}
+\def\!!sixpoint {6pt}
+\def\!!sevenpoint {7pt}
+\def\!!eightpoint {8pt}
+\def\!!ninepoint {9pt}
+\def\!!tenpoint {10pt}
+\def\!!elevenpoint {11pt}
+\def\!!twelvepoint {12pt}
+\def\!!fourteenpointfour {14.4pt}
+
+\newdimen \zeropoint \zeropoint = 0pt
+\newdimen \onepoint \onepoint = 1pt
+\newdimen \onebasepoint \onebasepoint = 1bp
+\chardef \scaledpoint = 1
+
+\let\onerealpoint\onepoint % needed for latex
+
+\newcount\medcard \medcard\!!medcard % used in font module
+\newcount\maxcard \maxcard\!!maxcard % used in font module
+
+\ifx\thousandpoint\undefined \newdimen\thousandpoint \fi
+
+\thousandpoint=1000pt
+
+%D Another optimization is:
+
+\let\points\onepoint
+
+%D A rough test is:
+%D
+%D \starttyping
+%D \def\TestMe % 7.75 sec on a P4/2G
+%D {\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points
+%D \dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points\dimen0=10\points}
+%D
+%D \def\TestMe % 11.5 sec on a P4/2G
+%D {\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt%
+%D \dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt\dimen0=10pt}
+%D
+%D \def\TestMe % 12.5 sec on a P4/2G
+%D {\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt%
+%D \dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt\dimen0=10\s!pt}
+%D
+%D \testfeatureonce {500000}{\TestMe}
+%D \stoptyping
+
+%D Variables are composed of a command specific tag and a user
+%D supplied variable (system constant). The first tag \type{ag}
+%D for instance is available as \type{\??ag} and expands to
+%D \type{@@ag} in composed variables.
+
+% vervallen : hd hr hm vt vr vm tr tn te br bm bo on om or
+
+\definesystemvariable {ab} % AlignedBoxes
+\definesystemvariable {ag} % AchterGrond
+\definesystemvariable {al} % ALinea's
+\definesystemvariable {am} % interActieMenu
+\definesystemvariable {an} % ANchor
+\definesystemvariable {as} % AlignmentSwitch
+\definesystemvariable {ba} % synchronisatieBAlk
+\definesystemvariable {be} % startstop (BeginEnd)
+\definesystemvariable {bj} % BlokJe
+\definesystemvariable {bk} % Blokken (floats)
+\definesystemvariable {bl} % BLanko
+\definesystemvariable {bg} % BleedinG
+\definesystemvariable {bo} % BlankO (definitions)
+\definesystemvariable {bs} % SelecteerBlokken
+\definesystemvariable {bt} % BuTton
+\definesystemvariable {bu} % BUffer
+\definesystemvariable {bv} % Brieven
+\definesystemvariable {by} % Per
+\definesystemvariable {cb} % CollectBox
+\definesystemvariable {cc} % Comment
+\definesystemvariable {ci} % CItaat
+\definesystemvariable {cl} % kleur (CoLor setup)
+\definesystemvariable {cn} % CollumN
+\definesystemvariable {co} % COmbinaties
+\definesystemvariable {cp} % CliP
+\definesystemvariable {cr} % kleur (ColoR)
+\definesystemvariable {cs} % kleur (ColorSeparation
+\definesystemvariable {cv} % ConVersie
+\definesystemvariable {cy} % CrYteria
+\definesystemvariable {da} % DAte
+\definesystemvariable {dc} % DroppedCaps
+\definesystemvariable {dd} % DoorDefinieren
+\definesystemvariable {de} % DEel
+\definesystemvariable {dl} % DunneLijnen
+\definesystemvariable {dn} % DoorNummeren
+\definesystemvariable {dm} % DefineMeasure
+\definesystemvariable {do} % DefinieerOpmaak
+\definesystemvariable {du} % DUmmy
+\definesystemvariable {ds} % DoorSpringen
+\definesystemvariable {ef} % ExternFiguur
+\definesystemvariable {ec} % EnCoding
+\definesystemvariable {en} % ENvironments
+\definesystemvariable {ep} % ExternfiguurPreset
+\definesystemvariable {er} % external resources
+\definesystemvariable {ex} % ExterneFiguren
+\definesystemvariable {ht} % HiddenText
+\definesystemvariable {fc} % FramedContent
+\definesystemvariable {fd} % FielD
+\definesystemvariable {fe} % FoxetExtensions
+\definesystemvariable {ff} % FontFile
+\definesystemvariable {fg} % FiGuurmaten
+\definesystemvariable {fi} % FIle
+\definesystemvariable {fl} % Floats
+\definesystemvariable {fm} % ForMules
+\definesystemvariable {fp} % FilegroeP
+\definesystemvariable {fr} % ForM
+\definesystemvariable {fs} % FileSynonym
+\definesystemvariable {ft} % FonTs
+\definesystemvariable {fv} % FontVariant
+\definesystemvariable {fx} % FoXet
+\definesystemvariable {ha} % HAng
+\definesystemvariable {hs} % HSpace
+\definesystemvariable {ia} % Interactie
+\definesystemvariable {ib} % InteractieBalk
+\definesystemvariable {id} % Index
+\definesystemvariable {ig} % ItemGroup
+\definesystemvariable {ih} % InHoudsopgave
+\definesystemvariable {ii} % stelIndexIn
+\definesystemvariable {il} % stelInvulRegelsin
+\definesystemvariable {im} % InMarge
+\definesystemvariable {in} % INspringen
+\definesystemvariable {ip} % InsertPages
+\definesystemvariable {is} % Items
+\definesystemvariable {it} % stelInTerliniein
+\definesystemvariable {iv} % stelInvulLijnenin
+\definesystemvariable {ka} % KAntlijn
+\definesystemvariable {kd} % KaDerteksten
+\definesystemvariable {kj} % KopJes (floats)
+\definesystemvariable {kk} % Kapitalen
+\definesystemvariable {kl} % KoLommen
+\definesystemvariable {km} % KenMerk
+\definesystemvariable {ko} % KOp(pen)
+\definesystemvariable {kp} % KopPelteken
+\definesystemvariable {kr} % KoRps
+\definesystemvariable {ks} % KolomSpan
+\definesystemvariable {kt} % KonTakten
+\definesystemvariable {kw} % KontaktWaarde
+\definesystemvariable {la} % LAnguage
+\definesystemvariable {lb} % LaBels
+\definesystemvariable {ld} % LegenDa
+\definesystemvariable {le} % LinetablE
+\definesystemvariable {lg} % taal (LanGuage)
+\definesystemvariable {li} % LIjst
+\definesystemvariable {ll} % Layers
+\definesystemvariable {lx} % LayerteXt
+\definesystemvariable {ln} % LijNen
+\definesystemvariable {lo} % LOgos
+\definesystemvariable {lt} % LiTeratuur
+\definesystemvariable {ly} % LaYout
+\definesystemvariable {ma} % MargeAchtergrond
+\definesystemvariable {mb} % MargeBlokken
+\definesystemvariable {mg} % Metapost paGe
+\definesystemvariable {mk} % MarKering
+\definesystemvariable {mt} % inline MaTh
+\definesystemvariable {mo} % Math Options
+\definesystemvariable {nm} % Nummering
+\definesystemvariable {np} % NaastPlaatsen
+\definesystemvariable {nr} % Nummeren
+\definesystemvariable {of} % OFfset
+\definesystemvariable {oi} % OmlijndInstellingen
+\definesystemvariable {ol} % OmLijnd
+\definesystemvariable {on} % ONderstreep
+\definesystemvariable {oo} % OpsOmmingen
+\definesystemvariable {op} % OPsomming
+\definesystemvariable {or} % OtpfilteR
+\definesystemvariable {os} % OffSet
+\definesystemvariable {ot} % OTpsequence
+\definesystemvariable {ov} % OVerlay
+\definesystemvariable {ox} % OffsetBox
+\definesystemvariable {pa} % PAlet
+\definesystemvariable {pb} % PuBlicatie
+\definesystemvariable {pc} % PageComment
+\definesystemvariable {pe} % PagEhandler
+\definesystemvariable {pf} % ProFiel
+\definesystemvariable {pg} % KoppelPagina
+\definesystemvariable {ph} % ParagrapH
+\definesystemvariable {pl} % PLaats
+\definesystemvariable {pn} % PaginaNummer
+\definesystemvariable {pp} % PaPier
+\definesystemvariable {pr} % PRogrammas
+\definesystemvariable {ps} % PoSitioneren
+\definesystemvariable {pt} % PageshifT
+\definesystemvariable {py} % PropertYs
+\definesystemvariable {rd} % RenDering
+\definesystemvariable {rf} % ReFereren
+\definesystemvariable {rg} % ReGel
+\definesystemvariable {rl} % ReferentieLijst
+\definesystemvariable {rn} % RegelNummer
+\definesystemvariable {ro} % ROteren
+\definesystemvariable {rr} % linenotes
+\definesystemvariable {rs} % RaSters
+\definesystemvariable {rt} % RoosTers
+\definesystemvariable {rv} % ReserVeerfiguur
+\definesystemvariable {rw} % RenderingWindow
+\definesystemvariable {sa} % ScAle
+\definesystemvariable {sb} % SectieBlok
+\definesystemvariable {sc} % SCherm
+\definesystemvariable {sd} % SounD
+\definesystemvariable {se} % SEctie
+\definesystemvariable {sf} % SpeciFics
+\definesystemvariable {sg} % SpacinG
+\definesystemvariable {sh} % ShapeText
+\definesystemvariable {si} % SplIt
+\definesystemvariable {sk} % SectieKop
+\definesystemvariable {sl} % SmalLer
+\definesystemvariable {sm} % SynonieMen
+\definesystemvariable {sn} % SubNummer
+\definesystemvariable {so} % SOrteren
+\definesystemvariable {sp} % SelecteerPapier
+\definesystemvariable {sr} % SpacehandleR
+\definesystemvariable {ss} % Symbool
+\definesystemvariable {st} % STickers
+\definesystemvariable {su} % SetUp
+\definesystemvariable {sv} % SysteemVariabelen
+\definesystemvariable {sy} % SYnchronisatie
+\definesystemvariable {ta} % TAb
+\definesystemvariable {tb} % TekstBlokken
+\definesystemvariable {td} % TextbackgrounDs
+\definesystemvariable {te} % TEmplate
+\definesystemvariable {tf} % TypeFace
+\definesystemvariable {tg} % Tex paGe
+\definesystemvariable {ti} % TabelInstellingen
+\definesystemvariable {tk} % Teksten
+\definesystemvariable {tl} % TekstLijnen
+\definesystemvariable {tm} % TypesynonyM
+\definesystemvariable {tp} % TyPen
+\definesystemvariable {tx} % TeXtflow
+\definesystemvariable {ts} % TypeScript
+\definesystemvariable {tt} % TabulaTe
+\definesystemvariable {ty} % TYpe
+\definesystemvariable {uc} % Unicode
+\definesystemvariable {ui} % UItvoer
+\definesystemvariable {ur} % URl
+\definesystemvariable {ve} % VErsie
+\definesystemvariable {vn} % VoetNoten
+\definesystemvariable {vt} % VerTical
+\definesystemvariable {wr} % WitRuimte
+\definesystemvariable {xf} % XML File
+\definesystemvariable {xp} % XML Processing
+\definesystemvariable {xy} % schaal
+\definesystemvariable {za} % ZetspiegelAanpassing
+
+%D Next we define some language independant one letter
+%D variables and keywords.
+
+\defineinterfaceconstant {x} {x} % x offset
+\defineinterfaceconstant {y} {y} % y offset
+\defineinterfaceconstant {w} {w} % width
+\defineinterfaceconstant {h} {h} % height
+\defineinterfaceconstant {s} {s} % size
+\defineinterfaceconstant {t} {t} % title
+\defineinterfaceconstant {c} {c} % creator
+\defineinterfaceconstant {e} {e} % extension
+\defineinterfaceconstant {f} {f} % file
+
+\defineinterfaceconstant {a} {a} % kunnen weg
+\defineinterfaceconstant {b} {b} % kunnen weg
+\defineinterfaceconstant {c} {c} % kunnen weg
+\defineinterfaceconstant {d} {d} % kunnen weg
+\defineinterfaceconstant {e} {e} % kunnen weg
+
+\defineinterfaceconstant {s} {s}
+\defineinterfaceconstant {r} {r}
+\defineinterfaceconstant {g} {g}
+\defineinterfaceconstant {b} {b}
+\defineinterfaceconstant {c} {c}
+\defineinterfaceconstant {m} {m}
+\defineinterfaceconstant {y} {y}
+\defineinterfaceconstant {k} {k}
+\defineinterfaceconstant {a} {a} % alternative
+\defineinterfaceconstant {t} {t} % transparency
+\defineinterfaceconstant {p} {p} % percentage
+
+\defineinterfaceconstant {t} {t}
+\defineinterfaceconstant {h} {h}
+\defineinterfaceconstant {b} {b}
+
+\defineinterfaceconstant {rgb} {rgb}
+\defineinterfacevariable {rgb} {rgb}
+
+\defineinterfaceconstant {cmyk} {cmyk}
+\defineinterfacevariable {cmyk} {cmyk}
+
+\defineinterfaceconstant {mp} {mp}
+\defineinterfacevariable {mp} {mp}
+
+\defineinterfacevariable {s} {s}
+
+\defineinterfacevariable {a} {a}
+\defineinterfacevariable {b} {b}
+\defineinterfacevariable {c} {c}
+\defineinterfacevariable {d} {d}
+
+%D The names of files and their extensions are fixed.
+%D \CONTEXT\ uses as less files as possible. Utility files can
+%D be recognized by the first two characters of the extension:
+%D \type{tu}.
+
+\definefileconstant {utilityfilename} {texutil}
+
+\definefileconstant {blockextension} {tub}
+\definefileconstant {figureextension} {tuf}
+\definefileconstant {inputextension} {tui}
+\definefileconstant {outputextension} {tuo} % tup for previous run
+\definefileconstant {optionextension} {top}
+\definefileconstant {temporaryextension} {tmp}
+\definefileconstant {patternsextension} {pat}
+\definefileconstant {hyphensextension} {hyp}
+\definefileconstant {fontmapextension} {map}
+
+%D These files are loaded at start||up. They may contain system
+%D specific setups (or calls to other files), old macro's, to
+%D garantee compatibility and new macro's noy yet present in
+%D the format.
+
+\definefileconstant {errfilename} {cont-err}
+\definefileconstant {sysfilename} {cont-sys}
+\definefileconstant {oldfilename} {cont-old}
+\definefileconstant {newfilename} {cont-new}
+\definefileconstant {filfilename} {cont-fil}
+\definefileconstant {modfilename} {cont-mod}
+
+%D Handy for typescripts:
+
+\definetypescriptconstant {name} {name}
+\definetypescriptconstant {default} {default}
+\definetypescriptconstant {map} {map}
+\definetypescriptconstant {special} {special}
+\definetypescriptconstant {size} {size}
+
+%D The next two files specify user settings as well as
+%D \TEXEXEC\ settings when generating a format.
+
+\definefileconstant {usrfilename} {cont-usr}
+\definefileconstant {fmtfilename} {cont-fmt}
+
+%D The setup files for the language, font, color and special
+%D subsystems have a common prefix. This means that we have at
+%D most three characters for unique filenames.
+
+\definefileconstant {colorprefix} {colo-}
+\definefileconstant {encodingprefix} {enco-}
+\definefileconstant {filterprefix} {filt-}
+\definefileconstant {fontprefix} {font-}
+\definefileconstant {handlingprefix} {hand-}
+\definefileconstant {javascriptprefix} {java-}
+\definefileconstant {languageprefix} {lang-}
+\definefileconstant {mathprefix} {math-}
+\definefileconstant {metapostprefix} {meta-}
+\definefileconstant {regimeprefix} {regi-}
+\definefileconstant {specialprefix} {spec-}
+\definefileconstant {symbolprefix} {symb-}
+\definefileconstant {typeprefix} {type-}
+\definefileconstant {xtagprefix} {xtag-}
+\definefileconstant {propprefix} {prop-}
+\definefileconstant {unicprefix} {unic-}
+\definefileconstant {sortprefix} {sort-}
+
+\definefileconstant {moduleprefix} {m-}
+\definefileconstant {styleprefix} {s-}
+\definefileconstant {xstyleprefix} {x-}
+\definefileconstant {privateprefix} {p-}
+\definefileconstant {thirdprefix} {t-}
+
+%definefileconstant {beforeprefix} {b-}
+%definefileconstant {afterprefix} {a-}
+
+%D \CONTEXT\ follows different strategies for finding files.
+%D The macros that are responsible for this 'clever' searching
+%D make use of two (very important) path specifiers.
+
+\definefileconstant {pathseparator} {/}
+\definefileconstant {currentpath} {.}
+\definefileconstant {parentpath} {..}
+
+%D The way fonts are defined and called upon is language
+%D independant. We follow the scheme laid down by Knuth in
+%D Plain \TEX. We'll explain their meaning later.
+
+\defineinterfaceconstant {tf} {tf}
+\defineinterfaceconstant {bf} {bf}
+\defineinterfaceconstant {bs} {bs}
+\defineinterfaceconstant {bi} {bi}
+\defineinterfaceconstant {sl} {sl}
+\defineinterfaceconstant {it} {it}
+\defineinterfaceconstant {sc} {sc}
+\defineinterfaceconstant {rm} {rm}
+\defineinterfaceconstant {ss} {ss}
+\defineinterfaceconstant {tt} {tt}
+\defineinterfaceconstant {hw} {hw}
+\defineinterfaceconstant {cg} {cg}
+\defineinterfaceconstant {os} {os}
+\defineinterfaceconstant {mm} {mm}
+\defineinterfaceconstant {i} {i}
+\defineinterfaceconstant {nn} {nn}
+
+\defineinterfaceconstant {x} {x}
+\defineinterfaceconstant {xx} {xx}
+
+\defineinterfaceconstant {em} {em}
+
+\defineinterfaceconstant {mi} {mi}
+\defineinterfaceconstant {sy} {sy}
+\defineinterfaceconstant {ex} {ex}
+\defineinterfaceconstant {mr} {mr}
+
+\defineinterfaceconstant {ma} {ma}
+\defineinterfaceconstant {mb} {mb}
+\defineinterfaceconstant {mc} {mc}
+
+%D For figure inclusion we need:
+
+\defineinterfaceconstant {tif} {tif}
+\defineinterfaceconstant {eps} {eps}
+\defineinterfaceconstant {mps} {mps}
+\defineinterfaceconstant {jpg} {jpg}
+\defineinterfaceconstant {pdf} {pdf}
+\defineinterfaceconstant {png} {png}
+\defineinterfaceconstant {avi} {avi}
+\defineinterfaceconstant {mov} {mov}
+\defineinterfaceconstant {svg} {svg}
+\defineinterfaceconstant {tex} {tex}
+\defineinterfaceconstant {tmp} {tmp}
+
+%D A careful reader will have noticed that in the module
+%D \type{mult-ini} we defined \type{\selectinterface}. We were
+%D not yet able to actually select an interface, because we
+%D still had to define the constants and variables. Now we've
+%D done so, selection is permitted.
+
+\selectinterface
+
+%D And only after this selection is done, we can define
+%D messages, otherwise the default language is in use.
+
+\ifinterfacetranslation \else
+
+\startmessages dutch library: check
+ title: controle
+ 1: '=' ontbreekt of zonder {} na '--' in regel --
+ 2: -- argument(en) verwacht in regel --
+ 3: -- -- vervangt een macro, gebruik HOOFDLETTERS!
+\stopmessages
+
+\startmessages english library: check
+ title: check
+ 1: missing or ungrouped '=' after '--' in line --
+ 2: -- argument(s) expected in line --
+ 3: -- -- replaces a macro, use CAPITALS!
+\stopmessages
+
+% 1: to be adapted
+
+\startmessages german library: check
+ title: check
+ 1: Fehlendes '=' nach '--' in Zeile --
+ 2: -- Argument(e) in Zeile -- erwartet
+ 3: -- -- ersetzt ein Makro, verwende VERSALIEN!
+\stopmessages
+
+\startmessages czech library: check
+ title: kontrola
+ 1: postradam '=' po '--' na radku --
+ 2: ocekavam -- argument(y) na radku --
+ 3: -- -- nahrazuje makro, uzijte VERZALKY!
+\stopmessages
+
+\startmessages italian library: check
+ title: controllo
+ 1: '=' mancante o non raggruppato dopo '--' alla riga --
+ 2: -- argomento/i attesi alla riga --
+ 3: -- -- sostituisce una macro, usare le MAIUSCOLE!
+\stopmessages
+
+\startmessages norwegian library: check
+ title: kontroll
+ 1: manglende '=' etter '--' i linje --
+ 2: -- argument forventet i linje --
+ 3: -- -- overskygger en makro, bruk STORE BOKSTAVER!
+\stopmessages
+
+\startmessages romanian library: check
+ title: verificari
+ 1: lipseste '=' dupa '--' in linia --
+ 2: argumentul(ele) -- sunt asteptate in linia --
+ 3: -- -- inlocuieste un macro, folositi MAJUSCULE!
+\stopmessages
+
+\fi
+
+%D Ok, here are some more, because we've got ouselves some
+%D extensions to \CONTEXT.
+
+\definemessageconstant {addresses}
+\definemessageconstant {documents}
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/page-app.tex b/Master/texmf-dist/tex/context/base/page-app.tex
new file mode 100644
index 00000000000..6a9a10d33dd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-app.tex
@@ -0,0 +1,172 @@
+%D \module
+%D [ file=page-app, % from meta-fig
+%D version=1998.01.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Independent page building,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Applications}
+
+%D The fitting page code is moved from \type {meta-fig} to
+%D here.
+
+\unprotect
+
+\definepapersize
+ [\??fp\s!dummy]
+ [\c!width=\fittingwd,
+ \c!height=\fittinght]
+
+\definelayout
+ [\??fp\s!dummy]
+ [\c!width=\fittingwd,\c!height=\fittinght,\c!location=\v!middle,
+ \c!topspace=\!!zeropoint,\c!backspace=\!!zeropoint,
+ \c!cutspace=\!!zeropoint,\c!bottomspace=\!!zeropoint,
+ \c!textdistance=\!!zeropoint,\c!lines=0,\c!grid=\v!no,
+ \c!top=\!!zeropoint,\c!bottom=\!!zeropoint,
+ \c!margin=\!!zeropoint,\c!edge=\!!zeropoint,
+ \c!leftmargin=\!!zeropoint,\c!leftedge=\!!zeropoint,
+ \c!rightmargin=\!!zeropoint,\c!rightedge=\!!zeropoint,
+ \c!header=\!!zeropoint,\c!footer=\!!zeropoint]
+
+\def\dostartfittingpage[#1][#2]%
+ {\page % this is kind of tricky! there can be preceding page refs
+ \bgroup % resulting in a zero height page; test fig-make !
+ \def\currentfittingpage{#1}%
+ \dontcomplain
+ % runs under current page regime, i.e. page variables passed to mp
+ \getparameters[\currentfittingpage][\c!paper=,#2]% auto or size or nothing
+ \setbox\scratchbox\hbox
+ \bgroup
+ % needed later \getparameters[\currentfittingpage][\c!paper=,#2]% auto or size or nothing
+ \doifvalue{\currentfittingpage\c!margin}\v!page % undocumented
+ {\offsetbox
+ [\c!leftoffset=\backspace,
+ \c!rightoffset=\cutspace,
+ \c!topoffset=\topspace,
+ \c!bottomoffset=\bottomspace]\hbox}%
+ \bgroup
+ \scale[\c!scale=\getvalue{\currentfittingpage\c!scale}]%
+ \bgroup\localframed[\currentfittingpage]%
+ \bgroup}
+
+\def\dostopfittingpage
+ {\egroup % localframed
+ \egroup % scale
+ \egroup % offsetbox
+ \egroup % scratchbox
+ \edef\fittingwd{\the\wd\scratchbox}%
+ \edef\fittinght{\the\ht\scratchbox}%
+ \startlocallayout
+ \ifdim\fittinght<\lineheight
+ % write status : too small
+ \setbox\scratchbox\vbox to \lineheight{\vss\box\scratchbox\vss}%
+ \edef\fittinght{\the\lineheight}%
+ \fi
+ \let\checkcurrentlayout\relax % else interference with odd/even layout
+ \processaction
+ [\getvalue{\currentfittingpage\c!paper}]
+ [ \v!auto=>\let\fittingpapersize\printpapersize,
+ \s!unknown=>\let\fittingpapersize\commalistelement,
+ \s!default=>\def\fittingpapersize{\??fp\s!dummy}]%
+ \expanded{\setuppapersize[\??fp\s!dummy][\fittingpapersize]}%
+ \definelayout
+ [\v!page]%
+ [\c!location=\v!middle,
+ \c!width=\fittingwd,
+ \c!height=\fittinght]%
+ \setuplayout
+ [\v!page]%
+ \startmakeup[\v!standard][\c!textstate=\v!empty,\c!doublesided=\v!no,\c!page=]%
+ \centerbox{\box\scratchbox}%
+ \stopmakeup
+ \stoplocallayout
+ \egroup}
+
+%D \TEX\ pages (for \METAPOST\ pages, see \type {meta-fig}):
+
+\presetlocalframed[\??tg]
+
+\def\setupTEXpage
+ {\dodoubleargument\getparameters[\??tg]}
+
+\def\startTEXpage
+ {\dosingleempty\dostartTEXpage}
+
+\def\dostartTEXpage[#1]%
+ {\dostartfittingpage[\??tg][#1]\gobblespacetokens}
+
+\def\stopTEXpage
+ {\removelastspace
+ \dostopfittingpage}
+
+\setupTEXpage
+ [\c!scale=1000,
+ \c!strut=\v!no,
+ \c!align=\v!normal, % needed, else problems !
+ \c!offset=\v!overlay,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!frame=\v!off]
+
+%D Application pages (for an example, see \type {m-pstric}):
+
+\def\@@texapp{texapp}
+\def\@@texdim{texdim}
+
+\def\saveTEXapplication#1#2%
+ {\immediate\openout\scratchwrite=\bufferprefix\@@texdim.tmp
+ \immediate\write\scratchwrite{\dimen#1=\the\ht\scratchbox}%
+ \immediate\write\scratchwrite{\dimen#2=\the\wd\scratchbox}%
+ \immediate\closeout\scratchwrite}
+
+\def\restoreTEXapplication
+ {\readlocfile{\bufferprefix\@@texdim.tmp}\donothing\donothing}
+
+\def\startTEXapplication
+ {\dosingleempty\dostartTEXapplication}
+
+\long\def\dostartTEXapplication[#1]#2#3\stopTEXapplication
+ {\bgroup
+ \bgroup
+ \let\f!temporaryextension\c!tex
+ \setbuffer[\@@texapp]%
+ \starttext
+ #2% preamble
+ \startTEXpage[#1]%
+ \topskip\zeropoint
+ \setbox\scratchbox\hbox{#3}%
+ \saveTEXapplication02% dimensions
+ \box\scratchbox
+ \stopTEXpage
+ \stoptext
+ \endbuffer
+ \egroup
+ \doifelse\jobsuffix{dvi}\donetrue\donefalse
+ \executesystemcommand{texexec \bufferprefix\@@texapp.tex --once --batch}%
+ \ifdone % eps
+ \executesystemcommand{dvips -E* -o \@@texapp.eps \@@texapp}%
+ \else % pdf
+ \executesystemcommand{dvips \bufferprefix\@@texapp}%
+ \executesystemcommand{ps2pdf \bufferprefix\@@texapp.ps \bufferprefix\@@texapp.pdf}%
+ \fi
+ \restoreTEXapplication % dimensions
+ \setbox\scratchbox\hbox
+ {\expanded{\externalfigure
+ [\bufferprefix\@@texapp.\ifdone eps\else pdf\fi]
+ [\c!object=\v!no]}}%
+ \setbox\scratchbox\hbox
+ {\lower\ht\scratchbox\hbox{\raise\dimen2\box\scratchbox}}%
+ \wd\scratchbox\dimen0
+ \ht\scratchbox\dimen2
+ \dp\scratchbox\zeropoint
+ \box\scratchbox
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-bck.tex b/Master/texmf-dist/tex/context/base/page-bck.tex
new file mode 100644
index 00000000000..e95ab8bf6ca
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-bck.tex
@@ -0,0 +1,636 @@
+%D \module
+%D [ file=page-bck, % copied from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Backgrounds,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Backgrounds}
+
+\unprotect
+
+\startmessages dutch library: layouts
+ 8: achtergronden berekenen
+\stopmessages
+
+\startmessages english library: layouts
+ 8: calculating backgrounds
+\stopmessages
+
+\startmessages german library: layouts
+ 8: berechne Hintergrund
+\stopmessages
+
+\startmessages czech library: layouts
+ 8: pocita se pozadi
+\stopmessages
+
+\startmessages italian library: layouts
+ 8: calcolo dello sfondo
+\stopmessages
+
+\startmessages norwegian library: layouts
+ 8: beregner bakgrunn
+\stopmessages
+
+\startmessages romanian library: layouts
+ 8: se calculeaza fundalurile
+\stopmessages
+
+%D \macros
+%D {recalculatebackgrounds}
+%D
+%D We use a couple of switches so that we can minimize the
+%D amount of background calculations. The main switch is set
+%D by the recalculate directive.
+%D
+%D \starttyping
+%D \recalculatebackgrounds
+%D \stoptyping
+%D
+%D Other modules may not directly set the switches
+%D themselves.
+
+\newif\ifnewbackground
+\newif\ifsomebackground
+
+%D For special purposes, users can question the \type
+%D {*background} mode. This mode is only available when
+%D typesetting the pagebody.
+%D
+%D \starttyping
+%D \startmode[*background] ...
+%D \stoptyping
+
+\appendtoks
+ \ifsomebackground \ifnewbackground \setsystemmode\v!background \fi \fi
+\to \everybeforepagebody
+
+%D \macros
+%D {addmainbackground, addtextbackground,
+%D addpagebackground, addprintbackground}
+%D
+%D Apart from the previously mentioned directive, the
+%D interface between this module and the other modules
+%D is made up by four macros that add background to parts of
+%D the layout.
+%D
+%D \starttyping
+%D \addmainbackground <box>
+%D \addtextbackground <box>
+%D \addpagebackground <box>
+%D \addprintbackground <box>
+%D \stoptyping
+
+%D To minimize calculations, we keep track of the state of the
+%D background of each area. A previous implementation did
+%D check each call to the background calculation macro, but
+%D using an intermediate usage flag instead of testing each
+%D time saves about 3\% on a run with a couple of backgrounds.
+%D (On the 824 pages maps bibliography runtime went down from
+%D 309 to 299 seconds.)
+
+\def\checkbackground#1%
+ {\edef\!!stringe{\??ma#1}%
+ \doifelsevaluenothing{\!!stringe\c!background }
+ {\doifelsevaluenothing{\!!stringe\c!foregroundcolor}
+ {\doifelsevalue{\!!stringe\c!frame }\v!on\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!leftframe }\v!on\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!rightframe}\v!on\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!topframe }\v!on\!!doneatrue
+ {\doifelsevalue{\!!stringe\c!bottomframe }\v!on\!!doneatrue
+ \!!doneafalse}}}}}
+ \!!doneatrue}
+ \!!doneatrue
+ \if!!donea
+ \setusage \!!stringe
+ \else
+ \resetusage\!!stringe
+ \fi}
+
+\def\ifsomebackgroundfound#1%
+ {\ifusage{\??ma#1}}
+
+% \def\doifsomebackgroundelse#1#2#3%
+% {\ifusage{\??ma#1}#2\else#3\fi}
+
+\def\doifsomebackgroundelse#1%
+ {\ifusage{\??ma#1}%
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D The background mechanism falls back on the \type {\framed}
+%D macro. This means that all normal frame and overlay
+%D features can be used.
+
+\def\addsomebackground#1#2#3#4% area box width height / zero test added
+ {\ifsomebackgroundfound#1\ifdim#3>\zeropoint\ifdim#4>\zeropoint
+ \doifvaluesomething{\??ma#1\c!setups}{\setups[\getvalue{\??ma#1\c!setups}]}% should not produce funny spaces !
+ \setbox#2\vbox\fastlocalframed
+ [\??ma#1]
+ [\c!component=#1,\c!strut=\v!no,\c!offset=\v!overlay,\c!setups=,%
+ \c!width=#3,\c!height=#4]
+ {\dp#2\zeropoint\box#2}%
+ \fi\fi\fi}
+
+%D There are quite some backgrounds. At the bottom layer,
+%D there is the {\em paper} background. This one is only
+%D used for special purposes, like annotations to documents.
+
+\def\addprintbackground#1%
+ {\addsomebackground
+ \v!paper#1\printpaperwidth\printpaperheight}
+
+%D The page backgrounds can be put behind the {\em left
+%D page}, the {\em right page} or {\em each page}. As with
+%D the paper background, these are calculated on each page.
+
+\def\addpagebackground#1%
+ {\doifbothsidesoverruled
+ \addsomebackground\v!rightpage#1\paperwidth\paperheight
+ \orsideone
+ \addsomebackground\v!rightpage#1\paperwidth\paperheight
+ \orsidetwo
+ \addsomebackground\v!leftpage #1\paperwidth\paperheight
+ \od
+ \addsomebackground\v!page #1\paperwidth\paperheight}
+
+%D Then there are the 25 areas that make up the layout: {\em
+%D top, header, text, footer, bottom} times {\em left edge,
+%D left margin, text, right margin, right edge}. These are
+%D only recalculated when they change or when the \type
+%D {status} is set to \type {repeat}.
+
+\newbox\leftbackground
+\newbox\rightbackground
+
+\def\addmainbackground#1% todo: dimension spec
+ {\ifsomebackground
+ \ifnewbackground \setbackgroundboxes \fi
+ \setbox#1\vbox
+ {\offinterlineskip
+ \doifmarginswapelse
+ {\copy\leftbackground}{\copy\rightbackground}%
+ \box#1}%
+ \fi}
+
+%D Finaly there is an aditional {\em text} background, again
+%D useful for special purposes only. This one is calculated
+%D each time. The hidden backgrounds are not meant for users!
+
+\newconditional\hiddenbackgroundenabled
+
+\def\addtextbackground#1%
+ {\ifconditional\hiddenbackgroundenabled
+ \addsomebackground\v!hidden#1\makeupwidth\textheight % mine !
+ \fi
+ \addsomebackground\v!text#1\makeupwidth\textheight}
+
+% \def\addtextbackground#1%
+% {\ifconditional\hiddenbackgroundenabled
+% \addsomebackground\v!verborgen #1\zetbreedte\teksthoogte % mine !
+% \fi
+% \doifbothsidesoverruled
+% \addsomebackground\v!rechtertekst#1\zetbreedte\teksthoogte
+% \orsideone
+% \addsomebackground\v!rechtertekst#1\zetbreedte\teksthoogte
+% \orsidetwo
+% \addsomebackground\v!linkertekst #1\zetbreedte\teksthoogte
+% \od
+% \addsomebackground\v!tekst #1\zetbreedte\teksthoogte}
+
+%D The next couple of macros implement the area backgrounds.
+%D As said, these are cached in dedicated boxes. The offsets
+%D and depth of the page are used for alignment purposes.
+
+\newdimen\pageoffset % bleed
+\newdimen\pagedepth
+
+\let\pagebackgroundhoffset = \!!zeropoint
+\let\pagebackgroundvoffset = \!!zeropoint
+\let\pagebackgrounddepth = \!!zeropoint
+
+% \def\setbackgroundboxes
+% {\showmessage\m!layouts8\empty
+% \setbackgroundbox\leftbackground\relax
+% \ifdubbelzijdig
+% \setbackgroundbox\rightbackground\doswapmargins
+% \fi
+% \doifnot\@@mastatus\v!herhaal{\global\newbackgroundfalse}}
+
+%D We need a bit more clever mechanism in order to handle
+%D layers well. This means that we cannot calculate both
+%D background at the same time since something may have
+%D changed halfway a page.
+
+\chardef\newrightbackground0
+\chardef\newleftbackground 0
+
+\def\recalculatebackgrounds
+ {\global\newbackgroundtrue}
+
+\def\setbackgroundboxes
+ {\ifnewbackground
+ \global\chardef\newrightbackground\plusone
+ \global\chardef\newleftbackground\plusone
+ \global\setbox\leftbackground\emptybox
+ \global\setbox\rightbackground\emptybox
+ \fi
+ \doifbothsides
+ \ifcase\newleftbackground \else
+ % \showmessage\m!layouts8\empty
+ \setbackgroundbox\leftbackground\relax
+ \global\chardef\newleftbackground\zerocount
+ \global\chardef\newrightbackground\zerocount
+ \fi
+ \orsideone
+ \ifcase\newleftbackground \else
+ % \showmessage\m!layouts8\empty
+ \setbackgroundbox\leftbackground\relax
+ \global\chardef\newleftbackground\zerocount
+ %\global\chardef\newrightbackground\zerocount
+ \fi
+ \orsidetwo
+ \ifcase\newrightbackground \else
+ % \showmessage\m!layouts8\empty
+ \setbackgroundbox\rightbackground\doswapmargins
+ \global\chardef\newrightbackground\zerocount
+ \fi
+ \od
+ \ifx\@@mastate\v!repeat\else\global\newbackgroundfalse\fi}
+
+\def\addmainbackground#1% todo: dimension spec
+ {\ifsomebackground
+ \setbackgroundboxes
+ \setbox#1\vbox
+ {\offinterlineskip
+ \doifmarginswapelse
+ {\copy\leftbackground}
+ {\copy\rightbackground}
+ \box#1}%
+ \fi}
+
+\def\setbackgroundoffsets
+ {\ifsomebackground \ifnewbackground
+ \global\let\pagebackgroundhoffset\!!zeropoint
+ \global\let\pagebackgroundvoffset\!!zeropoint
+ \global\let\pagebackgrounddepth \!!zeropoint
+ \doifsomebackgroundelse{\v!text\v!text}\donetrue\donefalse
+ \ifdone\else\doifsomebackgroundelse\v!text\donetrue\donothing\fi
+ \ifdone
+ \bgroup
+ \scratchdimen\getvalue{\??ma\v!page\c!offset}%
+ \doifsomebackgroundelse{\v!top\v!text}\donothing
+ {\doifsomebackgroundelse{\v!bottom\v!text}\donothing
+ {\xdef\pagebackgroundhoffset{\the\scratchdimen}}}%
+ \doifsomebackgroundelse{\v!text\v!rightedge}\donothing
+ {\doifsomebackgroundelse{\v!text\v!leftedge}\donothing
+ {\xdef\pagebackgroundvoffset{\the\scratchdimen}%
+ \scratchdimen\getvalue{\??ma\v!page\c!depth}%
+ \xdef\pagebackgrounddepth{\the\scratchdimen}}}%
+ \egroup
+ \fi
+ \fi \fi}
+
+\appendtoks \setbackgroundoffsets \to \everybeforepagebody
+
+\newconditional\swapbackgroundmargins \settrue\swapbackgroundmargins
+
+\def\setbackgroundbox#1#2%
+ {\global\setbox#1\vbox
+ {\dontcomplain
+ \swapmargins
+ \ifconditional\swapbackgroundmargins
+ \doifmarginswapelse \donothing
+ {\swapmacros\v!rightmargin\v!leftmargin
+ \swapmacros\v!rightedge \v!leftedge}%
+ \fi
+ \calculatereducedvsizes
+ \offinterlineskip
+ #2\relax
+ \vskip-\topheight
+ \vskip-\topdistance
+ \dodopagebodybackground\v!top\topheight
+ \vskip\topdistance
+ \dodopagebodybackground\v!header\headerheight
+ \vskip\headerdistance
+ \dodopagebodybackground\v!text\textheight
+ \vskip\footerdistance
+ \dodopagebodybackground\v!footer\footerheight
+ \vskip\bottomdistance
+ \dodopagebodybackground\v!bottom\bottomheight
+ \vfilll}%
+ \smashbox#1}
+
+\def\dodopagebodybackground#1#2%
+ {\ifdim#2>\zeropoint % added, faster
+ \setbox\scratchbox\vbox to #2
+ \bgroup\hbox\bgroup
+ % \swapmargins
+ \goleftonpage
+ \dododopagebodybackground\leftedgewidth #2#1\v!leftedge
+ \hskip\leftedgedistance
+ \dododopagebodybackground\leftmarginwidth #2#1\v!leftmargin
+ \hskip\leftmargindistance
+ \dododopagebodybackground\makeupwidth #2#1\v!text
+ \hskip\rightmargindistance
+ \dododopagebodybackground\rightmarginwidth#2#1\v!rightmargin
+ \hskip\rightedgedistance
+ \dododopagebodybackground\rightedgewidth #2#1\v!rightedge
+ \egroup\egroup
+ \wd\scratchbox\zeropoint
+ \box\scratchbox\relax
+ \fi}
+
+\def\dododopagebodybackground#1#2#3#4% width height pos pos
+ {\ifsomebackgroundfound{#3#4}%
+ \ifdim#2>\zeropoint\relax
+ \ifdim#1>\zeropoint\relax
+ \doifvaluesomething{\??ma#3#4\c!setups}{\setups[\getvalue{\??ma#3#4\c!setups}]}% should not produce funny spaces !
+ \fastlocalframed
+ [\??ma#3#4]
+ [\c!component=#3-#4,\c!width=#1,\c!height=#2,\c!offset=\v!overlay,\c!setups=]
+ {\getvalue{\??ma#3#4\c!command}}% {\hsize=#1\vsize=#2....}
+ \else
+ \hskip#1%
+ \fi
+ \else
+ \hskip#1%
+ \fi
+ \else
+ \hskip#1%
+ \fi}
+
+%D The background mechanism is quite demanding in terms or
+%D resources. We used to delay these definitions till runtime
+%D usage, but since today's \TEX's are large, we now do the
+%D work on forehand.
+%D
+%D \starttyping
+%D \setupbackgrounds [settings]
+%D \setupbackgrounds [paper,page,text,..] [settings]
+%D \setupbackgrounds [top,...] [leftedge,...] [settings]
+%D \stoptyping
+%D
+%D \showsetup{setupbackgrounds}
+%D
+%D Because the number of arguments runs from one to three,
+%D we need to check for it.
+
+\def\setupbackgrounds
+ {\dotripleempty\dosetupbackgrounds}
+
+\def\dosetupbackgrounds[#1][#2][#3]%
+ {\ifthirdargument
+ \global\somebackgroundtrue
+ \def\docommando##1%
+ {\doifinsetelse{##1}{\v!paper,\v!page,\v!leftpage,\v!rightpage}
+ {\getparameters[\??ma##1][#3]\checkbackground{##1}}
+ {\def\dodocommando####1%
+ {\getparameters[\??ma##1####1][#3]\checkbackground{##1####1}}%
+ \processcommalist[#2]\dodocommando}}%
+ \processcommalist[#1]\docommando
+ \else\ifsecondargument
+ \global\somebackgroundtrue
+ \doifcommonelse{#1}{\v!text,\v!hidden,%
+ %\v!linkertekst,\v!rechtertekst,%
+ \v!paper,\v!page,\v!leftpage,\v!rightpage}
+ {\def\docommando##1%
+ {\getparameters[\??ma##1][#2]\checkbackground{##1}}%
+ \processcommalist[#1]\docommando}%
+ {\setupbackgrounds
+ [#1]%
+ [\v!leftedge,\v!leftmargin,\v!text,\v!rightmargin,\v!rightedge]%
+ [#2]}%
+ \else\iffirstargument
+ \getparameters[\??ma][#1]%
+ \fi\fi\fi
+ \doifelsevalue{\??ma\v!page\c!offset}\v!overlay
+ {\global\pageoffset\zeropoint}
+ {\global\pageoffset\getvalue{\??ma\v!page\c!offset}}%
+ \global\pagedepth\getvalue{\??ma\v!page\c!depth}%
+ \xdef\pagebackgroundoffset{\the\pageoffset}%
+ \xdef\pagebackgrounddepth {\the\pagedepth }%
+ \doifelse\@@mastate\v!stop
+ {\global\newbackgroundfalse}
+ {\global\newbackgroundtrue }}
+
+\let\pagebackgroundoffset\!!zeropoint
+\let\pagebackgrounddepth \!!zeropoint
+
+\appendtoks\global\newbackgroundfalse\to\everyjob
+
+%D Each areas (currently there are $1+3+25+1=30$ of them)
+%D has its own low level framed object associated.
+
+\presetlocalframed [\??ma\v!paper]
+\presetlocalframed [\??ma\v!page]
+\presetlocalframed [\??ma\v!leftpage]
+\presetlocalframed [\??ma\v!rightpage]
+
+\copyparameters
+ [\??ma\v!paper\c!frame][\??ma\v!page]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!paper\c!background][\??ma\v!page]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!page\c!frame][\??ma\v!page]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!page\c!background][\??ma\v!page]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!leftpage\c!frame][\??ma\v!leftpage]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!leftpage\c!background][\??ma\v!leftpage]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!rightpage\c!frame][\??ma\v!rightpage]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+\copyparameters
+ [\??ma\v!rightpage\c!background][\??ma\v!rightpage]
+ [\c!offset,\c!depth,\c!radius,\c!corner,\c!color,\c!screen]
+
+%D We save some keying by defining the areas using
+%D intermediate commands. The inheritance macro makes sure
+%D that copies are efficient.
+
+\def\dodocommando#1#2%
+ {\copylocalframed
+ [\??ma#1#2][\??ma\v!page]%
+ \getparameters
+ [\??ma#1#2]
+ [\c!background=,\c!frame=,\c!color=,\c!screen=\@@rsscreen,
+ \c!bottomframe=,\c!topframe=,\c!leftframe=,\c!rightframe=]%
+ \inheritparameter[\??ma][#1#2\c!color][\v!page\c!color]%
+ \inheritparameter[\??ma][#1#2\c!screen][\v!page\c!screen]%
+ \inheritparameter[\??ma][#1#2\c!framecolor][\v!page\c!framecolor]%
+ \inheritparameter[\??ma][#1#2\c!backgroundcolor][\v!page\c!backgroundcolor]%
+ \inheritparameter[\??ma][#1#2\c!backgroundscreen][\v!page\c!backgroundscreen]}
+
+%D The stand alone text area inherits from the page too.
+
+\dodocommando\v!text \empty
+%dodocommando\v!linkertekst \empty
+%dodocommando\v!rechtertekst\empty
+\dodocommando\v!hidden \empty
+
+%D We now define all 25 main areas in a row.
+
+\def\docommando#1%
+ {\dodocommando#1\v!leftedge
+ \dodocommando#1\v!leftmargin
+ \dodocommando#1\v!text
+ \dodocommando#1\v!rightmargin
+ \dodocommando#1\v!rightedge}
+
+\docommando\v!top
+\docommando\v!header
+\docommando\v!text
+\docommando\v!footer
+\docommando\v!bottom
+
+%D We need some cleanup now.
+
+\let\dodocommando\relax \let\docommando\relax
+
+%D We now set up the individual areas to use reasonable
+%D defaults.
+
+\setupbackgrounds
+ [\c!state=\c!start]
+
+\setupbackgrounds
+ [\v!paper,\v!page,\v!leftpage,\v!rightpage]
+ [\c!frame=\v!off,
+ \c!radius=.5\korpsgrootte,
+ \c!corner=\v!rectangular,
+ \c!background=,
+ \c!screen=\@@rsscreen,
+ \c!color=,
+ %\c!frameoffset=\getvalue{\??ma\v!page\c!offset},
+ %\c!backgroundoffset=\getvalue{\??ma\v!page\c!offset},
+ \c!offset=\!!zeropoint, % later set to \v!overlay, watch out !
+ \c!depth=\!!zeropoint]
+
+\def\docommando#1%
+ {\inheritparameter[\??ma][#1\c!frameoffset][\v!page\c!offset]%
+ \inheritparameter[\??ma][#1\c!backgroundoffset][\v!page\c!offset]}
+
+\docommando\v!paper
+\docommando\v!page
+\docommando\v!leftpage
+\docommando\v!rightpage
+
+%D Again we clean up temporary macros.
+
+\let\docommando\relax
+
+%D The hidden layer can be populated by extending the
+%D following comma separated list. This only happens in core
+%D modules.
+
+% todo page-2 .. page+2 achter pagina -> bleed
+% spread-2 .. spread+2 achter spread -> spread (repeat 2 times)
+
+\def\enablehiddenbackground
+ {\global\settrue\hiddenbackgroundenabled
+ \global\somebackgroundtrue
+ \recalculatebackgrounds}
+
+\def\disablehiddenbackground
+ {\global\setfalse\hiddenbackgroundenabled}
+
+\def\hiddenbackground
+ {\v!text-2,\v!text-1,\v!foreground,\v!text+1,\v!text+2}
+
+\setupbackgrounds
+ [\v!hidden]
+ [\c!background=\hiddenbackground]
+
+% The next series is used in local (for instance floating)
+% backgrounds.
+
+\presetlocalframed
+ [\??ma\v!local]
+
+\def\localbackground
+ {\v!local-2,\v!local-1,\v!foreground,\v!local+1,\v!local+2}
+
+\defineoverlay[\v!local-2][\positionoverlay{\v!local-2}]
+\defineoverlay[\v!local-1][\positionoverlay{\v!local-1}]
+\defineoverlay[\v!local+1][\positionoverlay{\v!local+1}]
+\defineoverlay[\v!local+2][\positionoverlay{\v!local+2}]
+
+\def\addlocalbackgroundtobox
+ {\ifconditional\hiddenbackgroundenabled
+ \expandafter\doaddlocalbackground
+ \else
+ \resetglobal \expandafter\gobbleoneargument
+ \fi}
+
+\def\doaddlocalbackground#1%
+ {\edef\next
+ {\noexpand\redoglobal\wd#1\the\wd#1%
+ \noexpand\redoglobal\ht#1\the\ht#1%
+ \noexpand\dodoglobal\dp#1\the\dp#1}%
+ \dodoglobal\setbox#1\hbox
+ {\fastlocalframed
+ [\??ma\v!local]
+ [\c!component=local,\c!frame=\v!off,\c!offset=\v!overlay,\c!setups=,%
+ \c!width=\wd#1,hoogte=\ht#1,% no diepte=\dp#1 in cont-exp.tex, to be checked !
+ \c!background=\localbackground]%
+ {\registerMPlocaltextarea{\box#1}}}%
+ \next
+ \doglobal\increment\localpositionnumber\relax} % afterwards !
+
+% Test how previous macro behaves with depth:
+%
+% \startcolumnset
+% \input tufte
+% \placefigure{none}{\framed[lines=5]{xxx}}
+% \input tufte
+% \placefigure{none}{\starttabulate\NC test\nc test\NC\NR\stoptabulate}
+% \input tufte
+% \stopcolumnset
+
+%D Because we haven't really set up backgrounds yet, we set
+%D the main efficiency switch to false.
+
+\somebackgroundfalse
+
+\protect \endinput
+
+%D Removed \quote {features}:
+%D
+%D \starttyping
+%D \startinteraction
+%D \doifmarginswapelse
+%D {\copy\leftbackground}
+%D {\copy\rightbackground}%
+%D \stopinteraction
+%D \stoptyping
+%D
+%D \starttyping
+%D \edef\setpagebackgrounddepth%
+%D {\dp#2=\the\dp#2}%
+%D \setbox#2=\vbox\localframed[\??ma#1]{...}
+%D \setpagebackgrounddepth
+%D \stoptyping
diff --git a/Master/texmf-dist/tex/context/base/page-flt.tex b/Master/texmf-dist/tex/context/base/page-flt.tex
new file mode 100644
index 00000000000..67c8013d3cc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-flt.tex
@@ -0,0 +1,2171 @@
+%D \module
+%D [ file=page-flt,
+%D version=2000.10.20,
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Floating Bodies,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context OTR Macros / Floating Bodies}
+
+%D This module is currently a mess, due to splitting float
+%D handlers over specific otr's. Consider it work in progress.
+
+%D Some of the sidefloat settings should move to page-sid; now it's quite
+%D fuzzy the way the variables are set/reset.
+
+\unprotect
+
+% naar supp-box.tex
+
+\def\voidbox{\box\voidb@x}
+
+\def\spreadhbox#1% rebuilds \hbox{<box><hss><box><hss><box>}
+ {\bgroup
+ \ifhbox#1\relax
+ \setbox2\voidbox
+ \unhbox#1%
+ \doloop
+ {\unpenalty\unskip\unpenalty\unskip\unpenalty\unskip
+ \setbox0\lastbox
+ \ifvoid0
+ \exitloop
+ \else
+ \setbox2\hbox
+ {\ifhbox0 \spreadhbox0\else\box0\fi
+ \ifvoid2 \else\hss\unhbox2\fi}%
+ \fi}%
+ \ifvoid2\else\unhbox2\fi
+ \else
+ \box#1%
+ \fi
+ \egroup}
+
+\def\placefloats{\doflushfloats} % keep this one
+
+\startmessages dutch library: floatblocks
+ title: plaatsblokken
+ 1: -- hernummerd / -- => --
+ 2: -- bewaard
+ 3: -- verplaatst
+ 4: -- geplaatst
+ 5: volgorde aangepast
+ 6: maximaal -- boven
+ 7: maximaal -- onder
+ 8: minder dan -- regels
+ 9: volgorde verstoord
+ 10: -- begrensd
+ 11: geen blok opgegeven
+ 12: niet gedefinieerd
+\stopmessages
+
+\startmessages english library: floatblocks
+ title: floatblocks
+ 1: -- renumbered / -- => --
+ 2: -- saved
+ 3: -- moved
+ 4: -- placed
+ 5: order adapted
+ 6: n of top floats limited to --
+ 7: n of bottom floats limited to --
+ 8: less than -- lines
+ 9: order disturbed
+ 10: -- limited
+ 11: no block given
+ 12: undefined
+\stopmessages
+
+\startmessages german library: floatblocks
+ title: Gleitobjektbloecke
+ 1: -- neu nummeriert / -- => --
+ 2: -- gespeichert
+ 3: -- verschoben
+ 4: -- plaziert
+ 5: Reihenfolge angepasst
+ 6: Anz. der oberen Gleitobjekte beschraengt auf --
+ 7: Anz. der unteren Gleitobjekte beschraengt auf --
+ 8: weniger als -- zeilen
+ 9: Reigenfolge gestoert
+ 10: -- begrenzt
+ 11: kein Block gegeben
+ 12: undefiniert
+\stopmessages
+
+\startmessages czech library: floatblocks
+ title: plovouciobjekty
+ 1: -- precislovano / -- => --
+ 2: -- ulozeno
+ 3: -- presunuto
+ 4: -- umisteno
+ 5: poradi prizpusobeno
+ 6: pocet hornich plovoucich objektu je omezen na --
+ 7: pocet spodnich plovoucich objektu je omezen na --
+ 8: radku je mene nez --
+ 9: poradi naruseno
+ 10: -- omezeno
+ 11: nedan zadny blok
+ 12: nedefinovano
+\stopmessages
+
+\startmessages italian library: floatblocks
+ title: oggetti mobili
+ 1: -- rinumerato / -- => --
+ 2: -- salvato
+ 3: -- mosso
+ 4: -- sistemato
+ 5: ordine aggiustato
+ 6: n di top floats limitato a --
+ 7: n di bottom floats limitato a --
+ 8: meno di -- righe
+ 9: ordine disturbato
+ 10: -- limitato
+ 11: nessun oggetto specificato
+ 12: non definito
+\stopmessages
+
+\startmessages norwegian library: floatblocks
+ title: flytblokker
+ 1: -- renummerert / -- => --
+ 2: -- lagret
+ 3: -- flyttet
+ 4: -- plassert
+ 5: rekkefølge tilpasset
+ 6: maksimalt -- flytblokker øverst
+ 7: maksimalt -- flytblokker nederst
+ 8: mindre enn -- linjer
+ 9: rekkefølge endret
+ 10: -- begrenset
+ 11: ingen blokk oppgitt
+ 12: udefinert
+\stopmessages
+
+\startmessages romanian library: floatblocks
+ title: Blocuri
+ 1: -- renumerotat / -- => --
+ 2: -- salvat
+ 3: -- mutat
+ 4: -- plasat
+ 5: ordinea adaptata
+ 6: nr. cadrelor de sus limitat la --
+ 7: nr. blocurilor de jos limitat la --
+ 8: mai putin de -- linii
+ 9: ordinea deranjata
+ 10: -- limitat
+ 11: nu este dat nici un bloc
+ 12: nedefinit
+\stopmessages
+
+\def\setupfloats
+ {\dodoubleargument\getparameters[\??bk]}
+
+\def\setupcaptions
+ {\dodoubleargument\getparameters[\??kj]}
+
+\def\dosetupfloat[#1][#2]%
+ {\def\docommando##1{\getparameters[\??fl##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\setupfloat
+ {\dodoubleargument\dosetupfloat}
+
+\def\dosetupcaption[#1][#2]%
+ {\def\docommando##1{\getparameters[\??kj##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+\def\setupcaption
+ {\dodoubleargument\dosetupcaption}
+
+\def\doemptyblock#1%
+ {\localframed
+ [\??fl#1][\c!frame=\v!on]%
+ {\getmessage\m!floatblocks{12}}}
+
+% A complication is that we may have to handle a pagebreak
+% first, which in turn may issue a (postponed) float.
+% Therefore we may not trust on variable assignments before
+% we're realy dealing with the float. Some day I'll root out
+% the global settings.
+
+\def\docomplexplacefloat[#1][#2]% [#3]#4%
+ {\edef\floattype{#1}%
+ \doifelsenothing\floattype
+ {\let\floattype\v!figure}
+ {\doifundefined{\??fl#1\c!default}{\let\floattype\v!figure}}%
+ \doifelsenothing{#2}
+ {\edef\floatlocation{\getvalue{\??fl\floattype\c!default}}}
+ {\edef\floatlocation{#2}}%
+ \expanded{\dodocomplexplacefloat[\floattype][\floatlocation]}}
+
+\def\dodocomplexplacefloat[#1][#2][#3]#4%
+ {\flushnotes
+\flushsidefloats % here !
+ \ifsomefloatwaiting
+ % this was \checkwaitingfloats spread all over
+ \doifinsetelse\v!always{#2}
+ {\showmessage\m!floatblocks5\empty}
+ {\doifcommonelse
+ {#2}
+ {\v!left,\v!right,\v!inner,\v!outer,%
+ \v!backspace,\v!cutspace,%
+ \v!inleft,\v!inright,\v!inmargin,%
+ \v!leftmargin,\v!rightmargin,\v!leftedge,\v!rightedge,%
+ \v!innermargin,\v!outermargin,\v!inneredge,\v!outeredge,%
+ \v!text,\v!opposite}% \v!page
+ {\doflushfloats}
+ {}}%
+ % but which should be done before using box \floatbox
+ \fi
+ \ifmargeblokken % waarschijnlijk gebroken ! ! ! !
+ \doifinset\v!margin{#2}
+ {\endgraf
+ \bgroup\everypar{\egroup\the\everypar}%
+ \hsize\@@mbwidth}%
+ \fi
+ \global\insidefloattrue
+ \begingroup % **
+ \the\everyinsidefloat
+ \let\@@extrafloat\empty
+ \presetmorefloatvariables{#2}%
+ \dowithnextboxcontent % better a \the\everyfloattoks
+ {\setlocalfloathsize
+ \getvalue{\??fl#1\c!inner}%
+ \fuzzysnappingfalse
+ \postponenotes} % new
+ {\xdocompletefloat{#1}{#3}{#1}{#2}{#1}{#4}% ** not yet done
+ % we need to carry over the par because of side floats
+ \doifnotinset\v!text{#2}{\carryoverpar\endgroup}%
+ \global\sidefloatdownshift \zeropoint
+ \global\sidefloatextrashift\zeropoint
+ \ifparfloat
+ \doifinset\v!reset{#2}\forgetsidefloats
+ \doinhibitblank
+ \fi}% better move this to side floats
+ \vbox}
+
+\def\xxdocompletefloat#1#2%
+ {\rightorleftpageaction{\let\@@extrafloat#1}{\let\@@extrafloat#2}}
+
+\chardef\textfloatmethod=0 % 0=raw 1=safe (.99) 2=tight (-1pt)
+\chardef\sidefloatmethod=1 % 0=raw 1=safe (.99) 2=tight (-1pt)
+
+\let\floatrotation\!!zerocount
+
+\def\presetfloatvariables#1#2#3#4%
+ {\doifcommonelse
+ {#2}
+ {\v!left,\v!right,\v!inner,\v!outer,%
+ \v!inleft,\v!inright,\v!inmargin,%
+ \v!backspace,\v!cutspace,%
+ \v!innermargin,\v!outermargin,\v!inneredge,\v!outeredge,%
+ \v!leftmargin,\v!leftedge,\v!rightmargin,\v!rightedge}
+ {\global\parfloattrue}
+ {\global\parfloatfalse}%
+ \ifinsidecolumns
+ \global\parfloatfalse
+ \fi
+ \global\sidefloatshift\zeropoint
+ \global\sidefloatmaximum\zeropoint
+ \global\chardef\sidefloatmethod\getvalue{\??fl#1\c!sidemethod}%
+ \global\chardef\textfloatmethod\getvalue{\??fl#1\c!textmethod}%
+ \global\chardef\sidefloatalign\zerocount
+ \globallet\floatrotation\!!zerocount
+ \calculatefloatskips{#1}%
+ \ifparfloat
+ \processaction
+ [\getvalue{\??fl#1\c!sidealign}]
+ [\v!height=>\global\chardef\sidefloatalign\plusone,%
+ \v!line=>\global\chardef\sidefloatalign\plustwo,% (***)
+ \v!depth=>\global\chardef\sidefloatalign\plusthree,%
+ \v!grid=>\global\chardef\sidefloatalign4,%
+ \v!halfline=>\global\chardef\sidefloatalign5]%
+% todo (test first): \doifinset\v!lokaal{#2}{\chardef\sidefloatalign\zerocount}%
+ \ifcase\sidefloatalign\relax % todo: optie v!lokaal => \else
+ \doifinset\v!height {#2}{\global\chardef\sidefloatalign\plusone}%
+ \doifinset\v!line {#2}{\global\chardef\sidefloatalign\plustwo}%
+ \doifinset\v!depth {#2}{\global\chardef\sidefloatalign\plusthree}%
+ \doifinset\v!grid {#2}{\global\chardef\sidefloatalign4}%
+ \doifinset\v!halfline{#2}{\global\chardef\sidefloatalign5}% meant for 'none'
+ \fi
+ \doifinset\v!high{#2}{\global\sidefloattopskip \zeropoint}%
+ \doifinset\v!low {#2}{\global\sidefloatbottomskip\zeropoint}%
+ \doifinset\v!fit {#2}
+ {\global\sidefloattopskip \zeropoint
+ \global\sidefloatbottomskip\zeropoint
+ \global\floatsideskip \zeropoint}%
+ \else
+ \processallactionsinset
+ [#2]
+ [ 90=>\globallet\floatrotation\commalistelement,%
+ 180=>\globallet\floatrotation\commalistelement,%
+ 270=>\globallet\floatrotation\commalistelement]%
+ \fi
+ \doifinsetelse\v!nonumber{#2}
+ {\global\nofloatnumbertrue}
+ {\doifelsevalue{\??kj#1\c!number}\v!yes
+ {\global\nofloatnumberfalse}
+ {\global\nofloatnumbertrue}}%
+ \ConvertToConstant\doifelse{#4}{}
+ {\global\emptyfloatcaptiontrue}
+ {\global\emptyfloatcaptionfalse}%
+ \doifinsetelse\v!none{#2}
+ {\global\nofloatcaptiontrue}
+ {\ConvertToConstant\doifelse{#4}\v!none
+ {\global\nofloatcaptiontrue}
+ {\global\nofloatcaptionfalse}}%
+ \ifemptyfloatcaption \ifnofloatnumber
+ \global\nofloatcaptiontrue
+ \fi \fi}
+
+% documenteren in details
+
+\def\presetmorefloatvariables#1%
+ {\doifelse\@@bklocal\v!yes % fout keyword
+ \globalcenterfloatboxtrue
+ \globalcenterfloatboxfalse
+ \ifglobalcenterfloatbox
+ \localcenterfloatboxtrue
+ \else
+ \doifinsetelse\v!local{#1}
+ \localcenterfloatboxtrue
+ \localcenterfloatboxfalse
+ \fi
+ \doifnotcommon{\v!always,\v!here,\v!force}{#1} % ! ! ! ! ! !
+ {\globalcenterfloatboxfalse
+ \localcenterfloatboxfalse}}
+
+\def\setlocalfloathsize
+ {\iflocalcenterfloatbox
+ \seteffectivehsize
+ \hsize\localhsize
+ \fi}
+
+\newevery \everyinsidefloat \relax
+
+\appendtoks
+ \everyinsidefloat\emptytoks % in case it's called earlier
+ \dogetfloatdata
+\to \everyinsidefloat
+
+%\appendtoks
+% \fuzzysnappingfalse
+%\to \everyinsidefloat
+
+%\def\doifrightpagefloatelse % watch out: other default ! ! !
+% {\ifdubbelzijdig
+% \ifodd\purenumber\twopassfloatdata\space
+% \@EAEAEA\firstoftwoarguments
+% \else
+% \@EAEAEA\secondoftwoarguments
+% \fi
+% \else
+% \@EA\firstoftwoarguments
+% \fi}
+
+\def\doifrightpagefloatelse
+ {\ifdubbelzijdig
+ \ifenkelzijdig
+ \@EAEAEA\firstoftwoarguments
+ \else
+ \@EAEAEA\doifoddfloatpageelse
+ \fi
+ \else
+ \@EA\firstoftwoarguments
+ \fi}
+
+\def\doifoddfloatpageelse
+ {\ifodd\purenumber\twopassfloatdata\space
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\appendtoks
+ \let\rightorleftpageaction\doifrightpagefloatelse
+\to \everyinsidefloat
+
+\newif\ifextrafloatactions \extrafloatactionstrue
+
+% \let\movesidefloat\gobbleoneargument
+
+% new : \place...[leftmargin,-2*line]; we need to catch fxtb:2*3
+% watch out: line alone aligns on the line ! ! !
+
+\def\movesidefloat[#1]% (-)line|x=,y=
+ {\global\sidefloatdownshift \zeropoint
+ \global\sidefloatextrashift\zeropoint
+ \doifassignmentelse{#1}%
+ {\bgroup
+ \getparameters[\??fl][\c!x=\zeropoint,\c!y=\zeropoint,#1]%
+ \ifgridsnapping
+ \getnoflines\@@fly
+ \global\sidefloatdownshift\noflines\lineheight
+ \else
+ \global\sidefloatdownshift\@@fly
+ \fi
+ \global\sidefloatextrashift\@@flx
+ \egroup}
+ {\movedownsidefloat[#1]}}
+
+\def\movedownsidefloat[#1]% already in core
+ {\bgroup
+ \cleanupfeatures
+ \doifinstringelse{:}{#1}
+ \donothing
+ {\donefalse
+ \def\movedownsidefloat##1%
+ {\processaction
+ [##1]%
+ [ \v!line=>\docommando+,%
+ +\v!line=>\docommando+,%
+ -\v!line=>\docommando-]}%
+ \def\docommando##1%
+ {\ifdone\else\global\sidefloatdownshift\zeropoint\donetrue\fi
+ \global\advance\sidefloatdownshift##1\lineheight}%
+ \expanded{\dorepeatwithcommand[#1]}\movedownsidefloat}%
+ \egroup}
+
+\def\hangsidefloat[#1]%
+ {\global\sidefloatsidelines#1\relax}
+
+\def\xdocompletefloat#1#2#3#4#5#6%
+ {\ifextrafloatactions
+ \doifinsetelse\v!text{#4}
+ {% fuzzy, text overloads left, since then it's a directive
+ \docompletefloat{#1}{#2}{#3}{#4}{#5}{#6}\nextbox}
+ {\let\@@extrafloat\empty
+ % \sidefloatdownshift will be reset afterwards, and can
+ % already be set at this point
+ \processallactionsinset
+ [#4] % ininner/inouter : for old times sake
+ [ \v!inner=>\xxdocompletefloat\v!left \v!right,
+ \v!outer=>\xxdocompletefloat\v!right \v!left,
+ \v!innermargin=>\xxdocompletefloat\v!leftmargin \v!rightmargin,
+ \v!outermargin=>\xxdocompletefloat\v!rightmargin\v!leftmargin,
+ \v!inneredge=>\xxdocompletefloat\v!leftedge \v!rightedge,
+ \v!outeredge=>\xxdocompletefloat\v!rightedge \v!leftedge,
+ \v!backspace=>\xxdocompletefloat\v!backspace \v!cutspace,
+ \v!cutspace=>\xxdocompletefloat\v!cutspace \v!backspace,
+ \v!left=>\xxdocompletefloat\v!left \v!left,
+ \v!right=>\xxdocompletefloat\v!right \v!right,
+ \v!line=>, % only -n*line is handled (see ***)
+ \s!unknown=>{\movedownsidefloat[\commalistelement]}]%
+ \ifx\@@extrafloat\empty
+ \docompletefloat{#1}{#2}{#3}{#4}{#5}{#6}\nextbox
+ \else
+ \docompletefloat{#1}{#2}{#3}{\@@extrafloat,#4}{#5}{#6}\nextbox
+ \fi}%
+ \else % downward compatible
+ \docompletefloat{#1}{#2}{#3}{#4}{#5}{#6}\nextbox
+ \fi}
+
+% pas op, maxbreedte niet instellen als plaats=links/rechts
+
+\def\setlocalfloatdimensions#1#2#3#4% experimental / #3 box number #4 prefix
+ {\global\sidefloatshift \zeropoint % duplicate
+ \global\sidefloatmaximum\zeropoint\relax % duplicate
+ \ifextrafloatactions
+ \ifdim\sidefloatdownshift=\zeropoint\else
+ #4\setbox#3\vbox
+ {\vskip\sidefloatdownshift\nointerlineskip\box#3}%
+ \fi
+ \doifvaluesomething{\??fl#1\c!minwidth}
+ {\scratchdimen\getvalue{\??fl#1\c!minwidth}\relax
+ \ifdim\wd#3<\scratchdimen
+ #4\setbox#3\hbox to \scratchdimen
+ {\doifnotvalue{\??fl#1\c!location}\v!left \hss
+ \box#3%
+ \doifnotvalue{\??fl#1\c!location}\v!right\hss}%
+ \fi}%
+ % todo: rand / rug
+ \doifinset\v!hanging{#2}
+ {\doifcommonelse{\v!inleft,\v!leftmargin}{#2}
+ {\letvalue{\??fl#1\c!maxwidth}\leftmarginwidth}%
+ {\doifcommon{\v!inright,\v!rightmargin}{#2}
+ {\letvalue{\??fl#1\c!maxwidth}\rightmarginwidth}}}%
+ \doifvaluesomething{\??fl#1\c!maxwidth}
+ {\scratchdimen\getvalue{\??fl#1\c!maxwidth}\relax
+ \ifdim\wd#3>\scratchdimen
+ \doifcommonelse{\v!inright,\v!rightmargin,\v!rightedge
+ \v!inleft,\v!leftmargin,\v!leftedge}{#2}
+ {\global\sidefloatmaximum\scratchdimen}
+ {#4\setbox#3\hbox to \scratchdimen
+ {\doifcommonelse{\v!right,\v!left}{#2}
+ {\doifnotinset\v!right{#2}\hss
+ \box#3%
+ \doifnotinset\v!left{#2}\hss}%
+ {\doifnotvalue{\??fl#1\c!location}\v!left\hss
+ \box#3%
+ \doifnotvalue{\??fl#1\c!location}\v!right\hss}}}%
+ \fi}%
+ \fi}
+
+\def\docomplexstarttextblock[#1][#2][#3]%
+ {\flushnotes
+ \flushsidefloats % hoort eigenlijk niet hier
+ \docomplexplacefloat[#1][\v!text,#2,\v!left][#3]}
+
+\def\docomplexreserveblock[#1][#2][#3][#4]#5%
+ {\getvalue{\e!place#1}[#3][#4]{#5}{\localframed[\??fl#1][#2]{#1}}}
+
+\def\docomplexstartreservetextblock[#1][#2][#3][#4]%
+ {\flushsidefloats % hoort eigenlijk niet hier
+ \docomplexreserveblock[#1][#2][\v!text,#3,\v!left][#4]}
+
+\def\definefloat
+ {\dotripleempty\dodefinefloat}
+
+\def\dodefinefloat[#1][#2][#3]% #1=naam #2=meervoud #3=parent
+ {\ifthirdargument
+ \redodefinefloat[#1][#2][#3]%
+ \else\ifsecondargument
+ \dododefinefloat[#1][#2]%
+ \else
+ \dododefinefloat[#1][#1]%
+ \fi\fi}
+
+\def\dododefinefloat[#1][#2]%
+ {\presetlocalframed[\??fl#1]%
+ \setupfloat
+ [#1]
+ [\c!width=8\lineheight, % 15\korpsgrootte,
+ \c!height=6\lineheight, % 10\korpsgrootte,
+ \c!minwidth=,
+ \c!maxwidth=,
+ \c!maxheight=,
+ \c!criterium=,
+ \c!sidespacebefore=\@@bksidespacebefore,
+ \c!sidespaceafter=\@@bksidespaceafter,
+ \c!sidealign=\@@bksidealign, % \v!line
+ \c!margin=\@@bkmargin,
+ \c!leftmargindistance=\@@bkleftmargindistance,
+ \c!rightmargindistance=\@@bkrightmargindistance,
+ \c!frame=\@@bkframe,
+ \c!radius=\@@bkradius,
+ \c!corner=\@@bkcorner,
+ \c!location=\@@bklocation,
+ \c!background=\@@bkbackground,
+ \c!backgroundscreen=\@@bkbackgroundscreen,
+ \c!backgroundcolor=\@@bkbackgroundcolor,
+ \c!backgroundoffset=\@@bkbackgroundoffset,
+ \c!topframe=\@@bktopframe,
+ \c!bottomframe=\@@bkbottomframe,
+ \c!leftframe=\@@bkleftframe,
+ \c!rightframe=\@@bkrightframe,
+ \c!frameoffset=\@@bkframeoffset,
+ %\c!local=\@@bklocal,
+ \c!pageboundaries=,
+ \c!textmethod=\@@bktextmethod,
+ \c!sidemethod=\@@bksidemethod,
+ \c!default=]%
+ \setupcaption
+ [#1]
+ [\c!location=\@@kjlocation,
+ \c!grid=\@@kjgrid,
+ %\c!before=\@@kjbefore,
+ \c!inbetween=\@@kjinbetween,
+ %\c!after=\@@kjafter,
+ \c!width=\@@kjwidth,
+ \c!minwidth=\@@kjminwidth,
+ \c!headstyle=\@@kjheadstyle,
+ \c!headcolor=\@@kjheadcolor,
+ \c!textstyle=\@@kjtextstyle,
+ \c!textcolor=\@@kjtextcolor,
+ \c!style=\@@kjstyle,
+ \c!color=\@@kjcolor,
+ \c!align=\@@kjalign,
+ \c!number=\@@kjnumber,
+ \c!way=\@@kjway,
+ \c!blockway=\@@kjblockway,
+ \c!sectionnumber=\@@kjsectionnumber,
+ \c!distance=\@@kjdistance,
+ \c!separator=\@@kjseparator,
+ \c!command=\@@kjcommand,
+ \c!conversion=\@@kjconversion]%
+ \definenumber % \definelabel
+ [#1]
+ [\c!text=#1,
+ \c!location=\v!intext,
+ \c!way=\getvalue{\??kj#1\c!way},
+ \c!blockway=\getvalue{\??kj#1\c!blockway},
+ \c!sectionnumber=\getvalue{\??kj#1\c!sectionnumber},
+ \c!conversion=\getvalue{\??kj#1\c!conversion}]%
+ \presetlabeltext[#1=\Word{#1}~]%
+ \dodefinefloatcommands[#1][#2]}
+
+\def\dodefinefloatcommands[#1][#2]%
+ {\definelist[#1]%
+ \presetheadtext[#2=\Word{#2}]%
+ \setvalue {\e!place\e!listof#2}{\dodoubleempty\doplacelist[#1]}%
+ \setvalue {\e!complete\e!listof#2}{\dotripleempty\dodocompletelist[#1][#2]}%
+ \setvalue {\e!place#1}{\dotripleempty\docomplexplacefloat[#1]}%
+ \setvalue {\e!reserve#1}{\doquadrupleempty\docomplexreserveblock[#1]}%
+ \setvalue {\e!start#1\e!text}{\dotripleempty\docomplexstarttextblock[#1]}%
+ \setvalue {\e!stop#1\e!text}{\dostoptextfloat}%
+ \setvalue{\e!start\e!reserve#1\e!text}{\doquadrupleempty\docomplexstartreservetextblock[#1]}%
+ \setvalue {\e!stop\e!reserve#1\e!text}{\dostoptextfloat}%
+ \setvalue {\e!emptyone#1}{\doemptyblock{#1}}%
+ \setvalue {\e!emptytwo#1}{\doemptyblock{#1}}}
+
+% \setupfloat[...][leftmargindistance=1cm,default={left,none}]
+
+\def\redodefinefloat[#1][#2][#3]% same label/number
+ {\presetlocalframed[\??fl#1]%
+ \copylocalframed[\??fl#1][\??fl#3]%
+ \copyparameters[\??fl#1][\??fl#3]
+ [\c!width,\c!height,%\c!local,
+ \c!maxwidth,\c!maxheight,\c!minwidth,
+ \c!margin,\c!sidespacebefore,\c!sidespaceafter,\c!sidealign,
+ \c!leftmargindistance,\c!rightmargindistance,\c!criterium,
+ \c!frame,\c!radius,\c!corner,\c!location,\c!background,\c!framecolor,
+ \c!backgroundscreen,\c!backgroundcolor,\c!backgroundoffset,
+ \c!topframe,\c!bottomframe,\c!leftframe,\c!rightframe,
+ \c!frameoffset,\c!pageboundaries,\c!default,
+ \c!textmethod,\c!sidemethod]%
+ \copyparameters[\??kj#1][\??kj#3]
+ [\c!location,\c!before,\c!inbetween,\c!after,
+ \c!width,\c!headstyle,\c!headcolor,\c!style,\c!color,
+ \c!textstyle,\c!textcolor,\c!minwidth,
+ \c!align,\c!number,\c!way,\c!blockway,
+ \c!sectionnumber,\c!separator,\c!distance,\c!conversion]%
+ \definenumber[#1][#3]%
+ \presetlabeltext[#1=\labeltext{#3}]%
+ \dodefinefloatcommands[#1][#2]}
+
+\def\placefloat
+ {\dotripleempty\docomplexplacefloat}
+
+\installinsertion\topins \newdimen\topinserted
+\installinsertion\botins \newdimen\botinserted
+
+%D Extra float registers.
+
+\newif\ifsomefloatwaiting \somefloatwaitingfalse
+\newif\ifroomforfloat \roomforfloattrue
+\newif\ifnofloatpermitted \nofloatpermittedfalse
+
+\newcount\totalnoffloats \totalnoffloats =0
+\newcount\savednoffloats \savednoffloats =0
+\newcount\noffloatinserts \noffloatinserts=0
+
+\newbox\floatlist
+\newbox\savedfloatlist
+
+\newif\ifflushingfloats \flushingfloatsfalse
+
+\newbox\floattext
+
+\newdimen\floattextwidth
+\newdimen\floattextheight
+
+\newbox\floatbox
+\newbox\savedfloatbox
+
+\newdimen\floatwidth
+\newdimen\floatheight
+
+% the tricky part of getting float related two pass data is
+% that we should fetch is early but can only save it with
+% the composed float box; this determines the order: get it
+% before saving it
+
+\definetwopasslist{\s!float\s!data} \newcounter\noffloatdata
+
+\let\twopassfloatdata\realpageno
+
+\def\dosavefloatdata % \expanded
+ {\bgroup
+ \edef\dosavefloatdata
+ {\writeutilitycommand
+ {\twopassentry
+ {\s!float\s!data}%
+ {\noffloatdata}%
+ {\noffloatpages::\noexpand\realfolio}}}% later {}{}{}{} and \getfirst...
+ \dosavefloatdata
+ \egroup}
+
+\def\dogetfloatdata % precedes save !
+ {\doglobal\increment\noffloatpages
+ \findtwopassdata{\s!float\s!data}{\noffloatpages::}%
+ \iftwopassdatafound
+ \globallet\twopassfloatdata\twopassdata
+ \else
+ \globallet\twopassfloatdata\realpageno % \realfolio
+ \fi}
+
+% Er wordt bij \v!altijd als dat nodig is hernummerd.
+% Daarbij wordt gebruik gemaakt van de opgeslagen nummers en
+% volgorde.
+
+\definetwopasslist\s!float
+
+% \def\dofloatreference
+% {\doglobal\increment\numberedfloat
+% \edef\dodofloatreference
+% {\writeutilitycommand
+% {\twopassentry
+% {\s!float}%
+% {\numberedfloat}%
+% {\hetnummer}}}%
+% \dodofloatreference}
+
+% \def\redofloatorder#1%
+% {\doglobal\increment\nofplacedfloats\relax
+% \gettwopassdata\s!float
+% \iftwopassdatafound
+% \doifnot\hetnummer\twopassdata
+% {\edef\oldhetnummer{\hetnummer}%
+% \xdef\hetnummer{\twopassdata}%
+% \showmessage\m!floatblocks1{\nofplacedfloats,#1 \oldhetnummer,\hetnummer}}%
+% \fi}
+
+\def\dofloatreference
+ {\doifnot\@@bknumbering\v!nocheck
+ {\doglobal\increment\numberedfloat
+ \expanded{\writeutilitycommand
+ {\noexpand\twopassentry
+ {\s!float}%
+ {\numberedfloat}%
+ {\hetnummer}}}}}
+
+\def\redofloatorder#1%
+ {\doifnot\@@bknumbering\v!nocheck
+ {\doglobal\increment\nofplacedfloats\relax
+ \gettwopassdata\s!float
+ \iftwopassdatafound
+ \doifnot\hetnummer\twopassdata
+ {\edef\oldhetnummer{\hetnummer}%
+ \xdef\hetnummer{\twopassdata}%
+ \showmessage\m!floatblocks1{\nofplacedfloats,#1 \oldhetnummer,\hetnummer}}%
+ \fi}}
+
+% In \dofloatinfomessage wordt {{ }} gebruikt omdat anders
+% binnen \startpostponing...\stoppostponing geen goede
+% melding in de marge volgt: \ifinner is dan namelijk true.
+
+\def\dofloatinfomessage#1#2#3%
+ {\bgroup
+ \showmessage\m!floatblocks{#2}{#3}%
+ \@EA\floatinfo\@EA#1\@EA{\currentmessagetext}%
+ \egroup}
+
+\def\dosavefloatinfo
+ {\dofloatinfomessage>2{\the\totalnoffloats}}
+
+\def\dofloatflushedinfo
+ {\bgroup
+ \!!counta\totalnoffloats
+ \advance\!!counta -\savednoffloats
+ \dofloatinfomessage<3{\the\!!counta}%
+ \egroup}
+
+\def\doinsertfloatinfo
+ {\dofloatinfomessage<4{\the\totalnoffloats}}
+
+\def\dogetfloat
+ {\ifsomefloatwaiting
+ \global\setbox\floatlist\vbox
+ {\unvbox\floatlist
+ \global\setbox\globalscratchbox\lastbox}%
+ \ifcenterfloatbox
+ \ifdim\wd\globalscratchbox<\hsize
+ \setbox\floatbox\hbox to \hsize{\hss\box\globalscratchbox\hss}%
+ \else
+ \setbox\floatbox\box\globalscratchbox % local !
+ \fi
+ \else
+ \setbox\floatbox\box\globalscratchbox % local !
+ \fi
+ \global\advance\savednoffloats \minusone
+ \ifcase\savednoffloats
+ \global\somefloatwaitingfalse
+ \fi
+ \else
+ \global\savednoffloats\zerocount
+ \global\setbox\floatbox\box\voidb@x
+ \fi}
+
+\def\uncenteredfloatbox
+ {\ifcenterfloatbox
+ \ifhbox\floatbox\relax % remove centering
+ \ifdim\wd\floatbox=\hsize
+ \ifhbox\floatbox
+ \setbox\scratchbox\hbox
+ {\unhbox\floatbox
+ \unskip\unskip
+ \global\setbox\globalscratchbox\lastbox}%
+ \box\globalscratchbox
+ \else
+ \box\floatbox
+ \fi
+ \else
+ \box\floatbox
+ \fi
+ \else
+ \box\floatbox
+ \fi
+ \else
+ \box\floatbox
+ \fi}
+
+\def\dosavefloat
+ {\global\setbox\floatlist\vbox
+ {\nointerlineskip
+ \uncenteredfloatbox
+ \unvbox\floatlist}%
+ \global\advance\savednoffloats \plusone
+ \global\somefloatwaitingtrue
+ \dosavefloatinfo
+ \nonoindentation}
+
+\def\doresavefloat
+ {\global\setbox\floatlist\vbox
+ {\nointerlineskip
+ \unvbox\floatlist
+ \uncenteredfloatbox}%
+ \global\advance\savednoffloats \plusone
+ \global\somefloatwaitingtrue}
+
+\def\doreversesavefloat
+ {\global\setbox\floatlist\vbox
+ {\nointerlineskip
+ \unvbox\floatlist
+ \uncenteredfloatbox}%
+ \global\advance\savednoffloats \plusone
+ \global\somefloatwaitingtrue
+ \dosavefloatinfo}
+
+\def\dosavefloatstatus
+ {\global\setbox\savedfloatlist\copy\floatlist
+ \global\setbox\savedfloatbox \copy\floatbox
+ \xdef\dorestorefloatstatus
+ {\global\setbox\floatlist\box\savedfloatlist
+ \global\setbox\floatbox \box\savedfloatbox
+ \global\savednoffloats\the\savednoffloats}}
+
+\let\dorestorefloatstatus\relax
+
+\ifx\doflushfloats\undefined \let\doflushfloats\relax \fi
+\ifx\flushfloatbox\undefined \let\flushfloatbox\relax \fi
+
+\newif\iftopofinsert
+\newif\iftestfloatbox
+\newif\ifcenterfloatbox \centerfloatboxtrue
+\newif\iflocalcenterfloatbox \localcenterfloatboxfalse
+\newif\ifglobalcenterfloatbox \globalcenterfloatboxfalse
+
+% beter de laatste skip buiten de \insert uitvoeren,
+% bovendien bij volle flush onder baseline.
+
+\def\betweenfloatblanko% assumes that \@@bkspaceafter is present
+ {\bgroup
+ \setbox0\vbox{\strut\blank[\@@bkspacebefore]\strut}%
+ \setbox2\vbox{\strut\blank[\@@bkspaceafter ]\strut}%
+ \ifdim\ht0>\ht2
+ \blank[-\@@bkspaceafter,\@@bkspacebefore]
+ \fi
+ \egroup}
+
+\def\doplacefloatbox
+ {%\forgetall % NJET!
+ \whitespace
+ \blank[\@@bkspacebefore]
+ \flushfloatbox
+ \blank[\@@bkspaceafter]}
+
+\ifx\someherefloat\undefined \let\someherefloat\doplacefloatbox \fi
+\ifx\somefixdfloat\undefined \let\somefixdfloat\doplacefloatbox \fi
+\ifx\somepagefloat\undefined \let\somepagefloat\doplacefloatbox \fi
+\ifx\sometopsfloat\undefined \let\sometopsfloat\doplacefloatbox \fi
+\ifx\somebotsfloat\undefined \let\somebotsfloat\doplacefloatbox \fi
+
+\ifx\somesidefloat\undefined \let\somesidefloat\doplacefloatbox \fi
+\ifx\somefacefloat\undefined \let\somefacefloat\doplacefloatbox \fi
+\ifx\sometextfloat\undefined \let\sometextfloat\doplacefloatbox \fi
+
+% brr, wordt deze niet overladen in page-one? weg er mee
+
+\def\somepagefloat[#1]% links, rechts, midden, hoog, midden, laag
+ {%\checkwaitingfloats{#1}%
+ \global\setbox\collectedpagefloats\vbox
+ {\unvbox\collectedpagefloats
+ \vbox to \textheight
+ {\doifnotinset\v!high{#1}\vfill
+ \box\floatbox
+ \doifnotinset\v!low{#1}\vfill}%
+ \goodbreak}%
+ \doinsertfloatinfo}
+
+\def\sometextfloat[#1]% lang, links, rechts, hoog, midden, laag, offset
+ {%\checkwaitingfloats{#1}%
+ \gdef\dostoptextfloat{\dodostoptextfloat[#1]}% brr global
+ \global\floattextwidth\hsize
+ \global\floatwidth\wd\floatbox
+ \global\floatheight\ht\floatbox % forget about the depth
+ \global\advance\floattextwidth -\floatwidth
+ \global\advance\floattextwidth -\@@bkmargin\relax % was \tfskipsize
+ \doifinsetelse\v!tall{#1}
+ {\floattextheight\pagegoal
+ \advance\floattextheight -\pagetotal
+ \advance\floattextheight -\bigskipamount % lelijk
+ \ifdim\floattextheight>\textheight
+ \floattextheight\textheight
+ \fi
+ \boxmaxdepth\zeropoint \relax % toegevoegd
+ \ifdim\floattextheight<\floatheight
+ \floattextheight\floatheight
+ \fi
+ \setbox\floattext\vbox to \floattextheight}
+ {\setbox\floattext\vbox}%
+ \bgroup
+ \forgetall \setupblank \setupwhitespace % new, also needed for footnotes
+ \blank[\v!disable]
+ \hsize\floattextwidth
+ \ignorespaces}
+
+\def\dodostoptextfloat[#1]% % de tekst kan beter in een soort
+ {\egroup % kadertekst zonder kader, is flexibeler
+ \doifnotinset\v!tall{#1}% en beter
+ {\ifdim\ht\floattext<\floatheight
+ \floattextheight\floatheight
+ \else
+ \floattextheight\ht\floattext
+ \fi}%
+ \setbox\floatbox\vbox to \floattextheight
+ {\hsize\floatwidth
+ \doifinsetelse\v!both{#1}%
+ {\doifinsetelse\v!low{#1}
+ {\vfill\box\floatbox}
+ {\doifinsetelse\v!middle{#1}
+ {\vfill\box\floatbox\vfill}
+ {\box\floatbox\vfill}}}
+ {\box\floatbox\vfill}}%
+ \setbox\floattext\vbox to \floattextheight
+ {\hsize\floattextwidth
+ \doifinsetelse\v!low{#1}
+ {\vfill
+ \box\floattext
+ \doifinset\c!offset{#1}{\whitespace\blank}}
+ {\doifinsetelse\v!middle{#1}
+ {\vfill
+ \box\floattext
+ \vfill}
+ {\doifinset\v!offset{#1}{\whitespace\blank}%
+ \box\floattext
+ \vfill}}}%
+ \doifinsetelse\v!right{#1}%
+ {\setbox\floatbox\hbox to \hsize
+ {\box\floattext
+ \hfill
+ \box\floatbox}}
+ {\setbox\floatbox\hbox to \hsize
+ {\box\floatbox
+ \hfill
+ \box\floattext}}%
+ \baselinecorrection
+ \whitespace
+ \blank[\@@bkspacebefore]%
+ \doifnotinset\v!tall{#1}%
+ {\dp\floatbox\openstrutdepth}% dp\strutbox}% % toegevoegd
+ \box\floatbox
+ \blank[\@@bkspaceafter]%
+ \endgroup % **
+ \doinsertfloatinfo}
+
+\def\somefacefloat[#1]% links, rechts, midden, hoog, midden, laag
+ {%\checkwaitingfloats{#1}%
+ \startopposite\box\floatbox\stopopposite
+ \doinsertfloatinfo}
+
+\def\someelsefloat[#1]%
+ {\doifinsetelse\v!here{#1}
+ {\doifinsetelse\v!always{#1}
+ {\page[\v!preference]%
+ \docheckiffloatfits
+ \ifroomforfloat
+ \placesomeherefloat[#1]%
+ \else
+ \showmessage\m!floatblocks9\empty
+ \doreversesavefloat
+ \fi}
+ {\ifsomefloatwaiting
+ \dosavefloat
+ \else
+ \page[\v!preference]%
+ \docheckiffloatfits
+ \ifroomforfloat
+ \placesomeherefloat[#1]%
+ \else
+ \dosavefloat
+ \fi
+ \fi}}
+ {\doifinsetelse\v!always{#1}
+ {\docheckiffloatfits
+ \ifroomforfloat
+ \doifinsetelse\v!top{#1}
+ {\placesometopsfloat[#1]}
+ {\doifinsetelse\v!bottom{#1}
+ {\placesomebotsfloat[#1]}
+ {\placesomeherefloat[#1]}}%
+ % more compact and efficient, but quite ugly
+ % \doifinsetelse\v!top{#1}
+ % \placesometopsfloat
+ % {\doifinsetelse\v!bottom{#1}
+ % \placesomebotsfloat
+ % \placesomeherefloat}[#1]%
+ \else
+ \showmessage\m!floatblocks9\empty
+ \doreversesavefloat
+ \fi}
+ {\docheckiffloatfits
+ \ifroomforfloat
+ \doifinsetelse\v!top{#1}
+ {\placesometopsfloat[#1]}
+ {\doifinsetelse\v!bottom{#1}
+ {\placesomebotsfloat[#1]}
+ {\placesomeherefloat[#1]}}%
+ \else
+ \dosavefloat
+ \fi}}}
+
+% De onderstaande macro wordt gebruikt bij de macros
+% voor het plaatsen van tabellen en figuren (klopt niet
+% meer).
+%
+% \dofloat {plaats} {label1} {label2} {kader}
+%
+% \docompletefloat {nummer} {referentie} {lijst}
+% {plaats} {label1} {label2} {inhoud}
+%
+% \box\floatbox inhoud+referentie
+%
+% \do???float#1 #1 = boxnummer
+%
+% \ifinsidefloat wordt \true gezet voor \docompletefloat en \false
+% na float plaatsen; kan worden gebruikt om in
+% andere commando's witruimte te onderdrukken
+
+\newdimen\floatsideskip \floatsideskip =12pt
+\newdimen\floattopskip \floattopskip =\floattopskip
+\newdimen\floatbottomskip \floatbottomskip=\floattopskip
+
+\newdimen\sidefloattopskip \sidefloattopskip =\floattopskip
+\newdimen\sidefloatbottomskip \sidefloatbottomskip=\floatbottomskip
+
+\newskip\sidefloatdownshift
+\newskip\sidefloatleftshift
+\newskip\sidefloatrightshift
+
+\def\sidefloattopoffset {\openstrutdepth} % {\strutdp}
+
+\newcount\noftopfloats \noftopfloats=2
+\newcount\nofbotfloats \nofbotfloats=0
+
+\newif\ifnofloatcaption
+\newif\ifnofloatnumber
+\newif\ifemptyfloatcaption
+
+\def\docalculatefloatskip#1#2%
+ {\doifelsenothing{#2}
+ {\global#1\zeropoint}
+ {\doifelse{#2}\v!none
+ {\global#1\zeropoint}
+ {\setbox0\vbox{\whitespace\@EA\blank\@EA[#2]}%
+ \global#1\ht0}}}
+
+\def\calculatefloatskips#1%
+ {{\docalculatefloatskip\floattopskip \@@bkspacebefore
+ \docalculatefloatskip\floatbottomskip \@@bkspaceafter
+ \docalculatefloatskip\sidefloattopskip {\getvalue{\??fl#1\c!sidespacebefore}}% \@@bksidespacebefore
+ \docalculatefloatskip\sidefloatbottomskip{\getvalue{\??fl#1\c!sidespaceafter}}% \@@bksidespaceafter
+ \gdef\sidefloattopoffset{\openstrutdepth}% was \def
+ \global\floatsideskip\getvalue{\??fl#1\c!margin}%
+ \global\sidefloatleftshift \getvalue{\??fl#1\c!leftmargindistance}%
+ \global\sidefloatrightshift\getvalue{\??fl#1\c!rightmargindistance}%
+ \global\noftopfloats \@@bkntop\relax
+ \global\nofbotfloats \@@bknbottom\relax}}
+
+\newif\ifinsidefloat
+
+\let\floatcaptionsuffix\empty % an optional suffix
+\let\floatcaptionnumber\empty % a logical counter
+
+% obsolete ?
+%
+% \def\dosetfloatcaption#1#2#3% name will change
+% {\def\dofloattekst%
+% {{\doattributes{\??kj#1}\c!sttle\c!color{#3}}}%
+% \doifelsevalue{\??kj#1\c!number}\v!yes
+% {\def\dofloatnummer%
+% {{\xdef\floatcaptionnumber{#1}%
+% \hbox{\doattributes{\??kj#1}\c!headstyle\c!headcolor
+% {\strut#2\floatcaptionsuffix}}}%
+% \ConvertToConstant\doifnot{#3}{}
+% {\tfskip\emergencystretch=.5em}}}
+% {\let\dofloatnummer\empty}}
+
+% Quite experimental !
+
+% the split is needed when for instance the float goes into
+% a multi page field and the list of figs becomes larger than
+% one page: cycle between 'only flush when object ref ok'
+% and 'one/many page fig list'; see "uguide finometer"
+%
+% potential sync bug with sectionblocks, see uguide.tex
+
+\def\placefloatcaption
+ {\dodoubleempty\doplacefloatcaption}
+
+\def\doplacefloatcaption[#1][#2]#3%
+ {\setfloatcaption[#1][#2]{#3}%
+ \placefloatcaptiontext[#1]%
+ \placefloatcaptionreference[#1]}
+
+\def\setfloatcaption % \dosetfloatcaption already in use
+ {\dodoubleempty\dodosetfloatcaption} % beware, name clash
+
+\def\dodosetfloatcaption[#1][#2]#3% to do namespace for number/ascii
+ {\ifnofloatnumber % also handle trialtypesetting
+ \letgvalue{@fl@r@#1}\relax
+ \letgvalue{@fl@t@#1}\relax
+ \else
+ \incrementnumber[#1]%
+ \makesectionnumber[#1]%
+ % \globallet\flhetnummer\hetnummer % beware, not unique should be done on a per class base
+ \letgvalue{@fl@n@#1}\hetnummer
+ % indirect macro can be more efficient
+ \setgvalue{@fl@r@#1}%
+ {\dofloatreference
+ \redofloatorder{#1}%
+ % \dowritetolist{#1}{\flhetnummer}{#3}{#1}%
+ \dowritetolist{#1}{\getvalue{@fl@n@#1}}{#3}{#1}%
+ \doglobal\convertargument#3\to\flasciititle % \asciititle is global
+ % \doifsomething{#2}{\rawreference\s!flt{#2}{{\flhetnummer}{\flasciititle}}}%
+ \doifsomething{#2}{\rawreference\s!flt{#2}{{\getvalue{@fl@n@#1}}{\flasciititle}}}%
+ \letgvalue{@fl@r@#1}\relax}% nils
+ \setgvalue{@fl@t@#1}%
+ % {\preparethenumber{\??kj#1}\flhetnummer\preparednumber
+ {\preparethenumber{\??kj#1}{\getvalue{@fl@n@#1}}\preparednumber
+ \doattributes{\??kj#1}\c!style\c!color
+ {\doattributes{\??kj#1}\c!headstyle\c!headcolor
+ {\labeltexts{#1}{\preparednumber}}%
+ \doattributes{\??kj#1}\c!textstyle\c!textcolor
+ {\dotfskip{\getvalue{\??kj#1\c!distance}}#3}}}%
+ \fi}
+
+\def\placefloatcaptiontext [#1]{\getvalue{@fl@t@#1}}
+\def\placefloatcaptionreference[#1]{\getvalue{@fl@r@#1}}
+
+% still needed for uguide
+
+\let\placefloatlabel \placefloatcaption
+\let\placefloatlabeltext \placefloatcaptiontext
+\let\placefloatlabelreference \placefloatcaptionreference
+
+\def\borderedfloatbox#1%
+ {\localframed
+ [\??fl#1]
+ [\c!width=\@@bkwidth,
+ \c!height=\@@bkheight,
+ \c!location=\v!normal,
+ \c!offset=\@@bkoffset]%
+ {\box\floatbox}}
+
+\newbox\captionbox
+
+% \floatparameter
+
+% \def\putcompletecaption#1#2#3#4%
+% {\noindent
+% \xdef\lastcaptiontag{\strut#2\floatcaptionsuffix}%
+% \xdef\floatcaptionnumber{#1}%
+% \dostartattributes{\??kj#1}\c!style\c!color\empty
+% \ifnofloatnumber
+% \else
+% \hbox{\doattributes{\??kj#1}\c!headstyle\c!headcolor{\strut#2\floatcaptionsuffix}}%
+% \ifnofloatcaption \else \ifemptyfloatcaption \else
+% \ifcase#4\relax
+% \scratchskip\@@kjkjdistance\relax
+% \dotfskip\scratchskip\emergencystretch.5\scratchskip
+% \else
+% \ifx\@@kjkjinbetween\empty\else\unskip\@@kjkjinbetween\fi
+% \fi
+% \fi \fi
+% \fi
+% \ifnofloatcaption \else
+% \doattributes{\??kj#1}\c!textstyle\c!textcolor
+% {\begstrut#3\endstrut\endgraf}%
+% \fi
+% \dostopattributes}
+
+\def\putcompletecaption#1#2#3#4%
+ {\noindent
+ \xdef\lastcaptiontag{\strut#2\floatcaptionsuffix}%
+ \xdef\floatcaptionnumber{#1}%
+ \dostartattributes{\??kj#1}\c!style\c!color\empty
+ \ifnofloatnumber
+ \else
+ \hbox{\doattributes{\??kj#1}\c!headstyle\c!headcolor{\strut#2\floatcaptionsuffix}}%
+ \ifnofloatcaption \else \ifemptyfloatcaption \else
+ \ifcase#4\relax
+ \scratchskip\@@kjkjdistance\relax
+ \dotfskip\scratchskip\emergencystretch.5\scratchskip
+ \else
+ \ifx\@@kjkjinbetween\empty\else\unskip\@@kjkjinbetween\fi
+ \fi
+ \fi \fi
+ \fi
+ \ifnofloatcaption
+ \globallet\lastcaptionht\!!zeropoint
+ \globallet\lastcaptiondp\!!zeropoint
+ \else
+ \doattributes{\??kj#1}\c!textstyle\c!textcolor
+ {\xdef\lastcaptionht{\strutheight}%
+ \xdef\lastcaptiondp{\strutdepth}%
+ \begstrut#3\endstrut\endgraf}%
+ \fi
+ \dostopattributes}
+
+\let\lastcaptionht\!!zeropoint
+\let\lastcaptiondp\!!zeropoint
+
+% new
+
+\newbox\tempfloatbox
+\newbox\tempcaptionbox
+
+%\stelblokkopjesin[\c!width=5cm]
+%\stelblokkopjesin[\c!align=\v!left]
+%\stelblokkopjesin[\c!align=\v!right]
+
+\def\docheckcaptioncontent#1#2#3#4%
+ {\ifnofloatcaption \else
+ \setbox\tempcaptionbox\hbox
+ {\trialtypesettingtrue\notesenabledfalse\putcompletecaption{#4}{#2}{#3}{0}}%
+ % new, \placefigure{\XMLflush{somecaption}}{} passes earlier empty check
+ % so here we misuse the scratch box; actually this means that the previous
+ % test can go away (some day, when i redo this module)
+ \ifdim\wd\tempcaptionbox=\zeropoint
+ \global\emptyfloatcaptiontrue
+ \ifnofloatnumber
+ \global\nofloatcaptiontrue
+ \fi
+ \fi
+ \fi}
+
+% minwidth=fit,width=max : no overshoot, as wide as graphic
+
+\ifx\moveboxontogrid\undefined \let\movecaptionontogrid\gobblethreearguments \fi
+
+\def\dosetpagfloat#1#2#3#4% \copy wegwerken
+ {\bgroup
+ \setlocalfloathsize
+\ifnum\floatrotation>0
+ \swapdimens\hsize\vsize
+\fi
+ \forgetall
+ \postponenotes
+ \dontcomplain
+ \setbox\tempfloatbox\vbox{\borderedfloatbox{#4}}%
+ \def\locatefloat
+ {\chardef\alignstrutmode\zerocount
+ \alignedline\@@flfllocation\v!middle}%
+ \docheckcaptioncontent{#1}{#2}{#3}{#4}%
+ \ifnofloatcaption
+ \dopreparenocaption{#1}{#2}{#3}{#4}%
+ \edef\width{\the\wd\floatbox}%
+ \doglobal\addlocalbackgroundtobox\floatbox
+ \else
+ % todo: installable maken, variant/method=auto vs macro
+ \doifinsetelse\@@kjkjlocation{\v!high,\v!middle,\v!low}
+ {\dopreparesidecaption{#1}{#2}{#3}{#4}}
+ {\doifelse\@@kjkjminwidth\v!fit
+ {\doifelse\@@kjkjwidth\v!max
+ {\dopreparestackcaptionmax{#1}{#2}{#3}{#4}}
+ {\ifdim\wd\tempcaptionbox>\wd\tempfloatbox % wider caption
+ \doifelse\@@kjkjwidth\v!fit
+ {\dopreparestackcaptionaut{#1}{#2}{#3}{#4}}
+ {\dopreparestackcaptionwid{#1}{#2}{#3}{#4}}%
+ \else
+ \dopreparestackcaptionmin{#1}{#2}{#3}{#4}%
+ \fi}}
+ {\dopreparestackcaptionfix{#1}{#2}{#3}{#4}}}% new, special effects (see icare)
+ \edef\width{\the\wd\tempfloatbox}%
+ \addlocalbackgroundtobox\tempfloatbox
+ \setbox\tempcaptionbox\hbox{\@@kjkjcommand{\box\tempcaptionbox}}%
+ \moveboxontogrid\tempcaptionbox\@@kjkjgrid\lastcaptionht
+ \addlocalbackgroundtobox\tempcaptionbox
+ \buildfloatbox
+ \fi
+ \ifnum\floatrotation>0
+ \global\setbox\floatbox\vbox
+ {\rotate[\c!rotation=\floatrotation]{\box\floatbox}}%
+ \edef\width{\the\wd\tempfloatbox}%
+ \else
+ \postcenterfloatbox\width
+ \fi
+ \egroup}
+
+\ifx\addlocalbackgroundtobox\undefined
+ \def\addlocalbackgroundtobox{\resetglobal\gobbleoneargument}%
+\fi
+
+\def\captionminwidth {15\korpsgrootte}
+\def\captionovershoot {2em}
+
+\def\dopreparenocaption#1#2#3#4%
+ {\global\setbox\floatbox\vbox % pas op als wd groter dan hsize
+ {\ifinsidecolumns\ifdim\wd\tempfloatbox>\hsize
+ \let\locatefloat\relax
+ \fi\fi
+ \locatefloat{\copy\tempfloatbox}}}
+
+\def\dopreparestackcaptionfix#1#2#3#4%
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\@@kjkjminwidth % special effects
+ \putcompletecaption{#4}{#2}{#3}{0}}}
+
+\def\dopreparestackcaptionmax#1#2#3#4%
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\wd\tempfloatbox
+ \putcompletecaption{#4}{#2}{#3}{0}}}
+
+\def\dopreparestackcaptionwid#1#2#3#4%
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\@@kjkjwidth
+ \putcompletecaption{#4}{#2}{#3}{0}}}
+
+\def\dopreparestackcaptionmin#1#2#3#4%
+ {\raggedcenter % the default
+ \dosetraggedvbox\@@kjkjalign % when given
+ \setbox\tempcaptionbox\raggedbox % vbox, keeps footnotes
+ {\hsize\wd\tempfloatbox
+ \putcompletecaption{#4}{#2}{#3}{0}}}
+
+\def\dopreparestackcaptionaut#1#2#3#4%
+ {\doifsomething\@@kjkjalign
+ {\ExpandBothAfter\doifnotinset\v!middle\@@kjkjalign
+ {\let\captionovershoot\!!zeropoint}}%
+ \edef\captionhsize{\the\wd\tempfloatbox}%
+ \ifdim\captionhsize>\hsize
+ % float is wider than \hsize
+ \dosetraggedvbox\@@kjkjalign
+ \setbox\scratchbox\raggedbox % trial run
+ {\hsize\captionhsize
+ \notesenabledfalse
+ \putcompletecaption{#4}{#2}{#3}{0}}%
+ \ifdim\ht\scratchbox>\lineheight % more lines
+ \dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\captionhsize
+ \advance\hsize -\captionovershoot\relax
+ \ifdim\hsize<\captionminwidth\relax
+ \hsize\captionhsize
+ \fi
+ \putcompletecaption{#4}{#2}{#3}{0}}%
+ \else
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\captionhsize
+ \putcompletecaption{#4}{#2}{#3}{0}}%
+ \fi
+ \else
+ % float is smaller of equal to \hsize
+ \ifdim\captionhsize<\captionminwidth\relax
+ \scratchdimen\captionminwidth % float smaller than min width
+ \edef\captionhsize{\the\scratchdimen}%
+ \fi
+ \setbox\scratchbox\vbox % test with overshoot
+ {\scratchdimen\captionhsize
+ \advance\scratchdimen \captionovershoot
+ \advance\scratchdimen 3em % an average word length
+ \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
+ \notesenabledfalse
+ \putcompletecaption{#4}{#2}{#3}{0}}%
+ \ifdim\ht\scratchbox>\lineheight
+ % at least an average word longer than a line
+ \dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\scratchdimen\captionhsize
+ \advance\scratchdimen \captionovershoot
+ \ifdim\scratchdimen<\hsize \hsize\scratchdimen \fi
+ \putcompletecaption{#4}{#2}{#3}{0}}%
+ \else
+ % just over a line, don't use an overshoot
+ \expanded{\doifcommonelse{\@@kjkjalign}}{\v!left,\v!right,\v!flushleft,\v!flushright}
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\captionhsize
+ % strange : \raggedcenter
+ \putcompletecaption{#4}{#2}{#3}{0}}}
+ {% nicer
+ \setbox\tempcaptionbox\cbox
+ {\hsize\captionhsize
+ \putcompletecaption{#4}{#2}{#3}{0}}}%
+ \fi
+ \fi}
+
+\def\dopreparesidecaption#1#2#3#4%
+ {\dimen0\hsize
+ \advance\dimen0 -\wd\tempfloatbox
+ \advance\dimen0 -\@@bkmargin\relax % was \tfskipsize\relax
+ \ifdim\wd\tempcaptionbox>\dimen0
+ \dimen2=1.3\dimen0
+ \ifdim\wd\tempcaptionbox<\dimen2
+ \dimen0=0.8\dimen0
+ \fi
+ \fi
+ \setbox\tempcaptionbox\vbox
+ {\hsize\dimen0
+ \raggedright
+ \putcompletecaption{#4}{#2}{#3}{1}}}
+
+\def\buildfloatbox % todo: installable, also vertical align caption relative to floatbox
+ {\global\setbox\floatbox\vbox
+ {\setlocalfloathsize
+ \forgetall
+ \processaction
+ [\@@kjkjlocation]
+ [ \v!top=>\locatefloat{\box\tempcaptionbox}%
+ \endgraf\nointerlineskip\@@kjkjinbetween
+ \locatefloat{\box\tempfloatbox},
+ \v!bottom=>\locatefloat{\box\tempfloatbox}%
+ \endgraf\nointerlineskip\@@kjkjinbetween
+ \locatefloat{\box\tempcaptionbox},
+ \v!high=>\locatefloat
+ {\doifelse\@@flfllocation\v!left
+ {\box\tempfloatbox
+ \dotfskip\@@kjkjdistance
+ \vbox to\ht\tempfloatbox{\@@kjkjinbetween\box\tempcaptionbox\vfill}}
+ {\vbox to\ht\tempfloatbox{\@@kjkjinbetween\box\tempcaptionbox\vfill}%
+ \tfskip
+ \box\tempfloatbox}},
+ \v!low=>\locatefloat
+ {\doifelse\@@flfllocation\v!left
+ {\box\tempfloatbox
+ \dotfskip\@@kjkjdistance
+ \vbox to\ht\tempfloatbox
+ {\vfill\box\tempcaptionbox\@@kjkjinbetween}}
+ {\vbox to\ht\tempfloatbox
+ {\vfill\box\tempcaptionbox\@@kjkjinbetween}%
+ \dotfskip\@@kjkjdistance
+ \box\tempfloatbox}},
+ \v!middle=>\locatefloat
+ {\doifelse\@@flfllocation\v!left
+ {\box\tempfloatbox
+ \dotfskip\@@kjkjdistance
+ \vbox to\ht\tempfloatbox{\vfill\box\tempcaptionbox\vfill}}
+ {\vbox to\ht\tempfloatbox{\vfill\box\tempcaptionbox\vfill}%
+ \dotfskip\@@kjkjdistance
+ \box\tempfloatbox}},
+ \s!unknown=>\locatefloat{\box\tempfloatbox},
+ \v!none=>\locatefloat{\box\tempfloatbox}]}}
+
+\newif\ifpostponecolumnfloats \postponecolumnfloatsfalse % don't change
+
+%\def\postcenterfloatbox#1%
+% {\ifinsidecolumns
+% \ifpostponecolumnfloats
+% \scratchdimen=\zetbreedte
+% \else
+% \scratchdimen=#1\relax
+% \fi
+% \else\ifdim#1>\hsize
+% \scratchdimen=\hsize
+% \else
+% \scratchdimen=\wd\floatbox
+% \fi\fi
+% \global\setbox\floatbox=\hbox to \scratchdimen
+% {\hfill\box\floatbox\hfill}} % geen \hss, gaat mis in kolommen !
+
+% \def\postcenterfloatbox#1% 2 of 4
+% {\global\floatwidth\wd\ifdim\wd2>\wd4 2 \else 4 \fi
+% \ifdim\floatwidth>\zetbreedte
+% \global\floatwidth\zetbreedte
+% \else\ifdim\floatwidth<\hsize
+% \global\floatwidth\hsize
+% \fi\fi
+% \global\setbox\floatbox=\hbox to \floatwidth
+% {\hss\box\floatbox\hss}}
+
+% \def\postcenterfloatbox#1% 2 of 4
+% {\global\setbox\floatbox=\hbox to \width % \wd\ifdim\wd2>\wd4 2\else4\fi
+% {\hss\box\floatbox\hss}%
+% \ifdim\wd\floatbox>\zetbreedte
+% \global\setbox\floatbox=\hbox to \zetbreedte
+% {\hss\box\floatbox\hss}%
+% \else\ifcenterfloatbox\ifdim\wd\floatbox<\hsize
+% % \global\setbox\floatbox=\hbox to \hsize
+% % {\hss\box\floatbox\hss}%
+% \fi\fi\fi
+% \global\floatwidth\wd\floatbox}
+
+%\def\postcenterfloatbox#1%
+% {\ifinsidecolumns
+% \ifpostponecolumnfloats
+% \scratchdimen\zetbreedte
+% \else
+% \scratchdimen#1\relax
+% \fi
+% \else\ifdim#1>\hsize
+% \scratchdimen\hsize
+% \else
+% \scratchdimen\wd\floatbox
+% \fi\fi
+% \global\setbox\floatbox\hbox to \scratchdimen
+% % {\hfill\box\floatbox\hfill}} % geen \hss, gaat mis in kolommen !
+% {\hss \box\floatbox\hss }} % wel \hss, anders mis in colset
+
+\def\postcenterfloatbox#1%
+ {\scratchdimen \ifinsidecolumns
+ \ifpostponecolumnfloats\makeupwidth\else#1\fi
+ \else\ifdim#1>\hsize
+ \hsize
+ \else
+ \wd\floatbox
+ \fi\fi
+ \global\setbox\floatbox\hbox to \scratchdimen
+ % {\hfill\box\floatbox\hfill}} % geen \hss, gaat mis in kolommen !
+ % {\hss \box\floatbox\hss }} % wel \hss, anders mis in colset
+ {\ifglobalcenterfloatbox
+ \donetrue
+ \else\iflocalcenterfloatbox
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdim\scratchdimen>\effectivehsize
+ \donefalse
+ \fi
+ \hss\ifdone\hskip\effectiveleftskip\fi
+ \box\floatbox
+ \ifdone\hskip\effectiverightskip\fi\hss}}
+
+\def\dosetparfloat#1#2#3#4%
+ {\bgroup
+ \forgetall
+ \postponenotes
+ \dontcomplain
+ %\showcomposition
+ \setbox\tempfloatbox\vbox{\borderedfloatbox{#4}}%
+ \addlocalbackgroundtobox\tempfloatbox % no \doglobal
+ \docheckcaptioncontent{#1}{#2}{#3}{#4}%
+ \ifnofloatcaption
+ \global\setbox\floatbox\vbox{\box\tempfloatbox}%
+ \else
+ \doifelse\@@kjkjwidth\v!max
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\wd\tempfloatbox\putcompletecaption{#4}{#2}{#3}{0}}}%
+ {\doifelse\@@kjkjwidth\v!fit
+ {\ifdim\wd\tempcaptionbox>\wd\tempfloatbox\relax
+ \setbox\tempcaptionbox\vbox
+ {\forgetall\hsize\wd\tempfloatbox\putcompletecaption{#4}{#2}{#3}{0}}%
+ \else
+ \setbox\tempcaptionbox\hbox to \wd\tempfloatbox
+ {\hss\box\tempcaptionbox\hss}%
+ \fi}
+ {\dosetraggedvbox\@@kjkjalign
+ \setbox\tempcaptionbox\raggedbox
+ {\hsize\wd\tempfloatbox\putcompletecaption{#4}{#2}{#3}{0}}}}%
+ \setbox\tempcaptionbox\hbox{\@@kjkjcommand{\box\tempcaptionbox}}%
+ \moveboxontogrid\tempcaptionbox\@@kjkjgrid\lastcaptionht
+ \addlocalbackgroundtobox\tempcaptionbox % no \doglobal
+ \global\setbox\floatbox\vbox
+ {\processaction
+ [\@@kjkjlocation]
+ [ \v!top=>\box\tempcaptionbox
+ \endgraf\nointerlineskip\@@kjkjinbetween
+ \box\tempfloatbox,
+ \v!bottom=>\box\tempfloatbox
+ \endgraf\nointerlineskip\@@kjkjinbetween
+ \box\tempcaptionbox,
+ \v!none=>\box\tempfloatbox,
+ \s!unknown=>\box\tempfloatbox
+ \endgraf\nointerlineskip\@@kjkjinbetween
+ \box\tempcaptionbox]}%
+ \fi
+% \doglobal\addlocalbackgroundtobox\floatbox
+ \egroup}
+
+\newif\ifparfloat
+
+\long\def\dosetfloatbox#1#2#3#4% todo : \global\setbox
+ {\ifvisible
+ \par
+ \edef\@@kjkjlocation {\getvalue{\??kj#4\c!location}}%
+ \edef\@@kjkjgrid {\getvalue{\??kj#4\c!grid}}% new
+ \def\@@kjkjinbetween{\getvalue{\??kj#4\c!inbetween}}% no \edef
+ \def\@@kjkjcommand {\getvalue{\??kj#4\c!command}}% no \edef
+ \edef\@@kjkjwidth {\getvalue{\??kj#4\c!width}}%
+ \edef\@@kjkjminwidth {\getvalue{\??kj#4\c!minwidth}}% in geval van automatisch
+ \edef\@@kjkjdistance {\getvalue{\??kj#4\c!distance}}%
+ \edef\@@kjkjalign {\getvalue{\??kj#4\c!align}}%
+ \edef\@@flfllocation {\getvalue{\??fl#4\c!location}}%
+ \ifparfloat
+ \@EA\dosetparfloat % {#1}{#2}{#3}{#4}%
+ \else
+ \@EA\dosetpagfloat % {#1}{#2}{#3}{#4}%
+ \fi{#1}{#2}{#3}{#4}%
+ \setlocalfloatdimensions{#4}{#1}\floatbox\global % tzt arg 3/4 weg
+ \setbox\floatbox\hbox
+ {\dosavefloatdata\restoretextcolor{\box\floatbox}}%
+ \global\floatheight\ht\floatbox
+ \global\advance\floatheight \dp\floatbox
+ \global\floatwidth\wd\floatbox
+ \global\advance\totalnoffloats \plusone
+ \doifnotinset\v!margin{#1} % gaat namelijk nog fout
+ {\setbox\floatbox\vbox
+ {\parindent\zeropoint
+ \doifconcepttracing{\inleftmargin{\framed{\infofont\the\totalnoffloats}}}%
+ \box\floatbox}}%
+ \wd\floatbox\floatwidth
+ \dimen0=\floatheight
+ \advance\dimen0 \lineheight
+ \ifdim\dimen0<\textheight
+ \else
+ \global\floatheight\textheight
+ \global\advance\floatheight -\lineheight
+ \ht\floatbox\floatheight
+ \dp\floatbox\zeropoint
+ \showmessage\m!floatblocks{10}{\the\totalnoffloats}%
+ \fi
+ \fi}
+
+\newcounter\noxfloatlocations
+
+\long\def\dofloat#1#2#3#4%
+ {\dosetfloatbox{#1}{#2}{#3}{#4}%
+ \doifelsevaluenothing{\??fl#4\c!criterium}
+ {\dogetfloatbox{#1}\empty}
+ {\ifdim\wd\floatbox>\getvalue{\??fl#4\c!criterium}\relax
+ \postcenterfloatbox{\wd\floatbox}% else we get left aligned
+ \dogetfloatbox{#1}\v!here % see details/pascal
+ \else
+ \dogetfloatbox{#1}\empty
+ \fi}}
+
+\let\naturalfloatheight\!!zeropoint
+\let\naturalfloatwidth \!!zeropoint
+\let\naturalfloatdepth \!!zeropoint
+
+\def\setnaturalfloatdimensions#1%
+ {\xdef\naturalfloatheight{\the\ht#1}%
+ \xdef\naturalfloatwidth {\the\wd#1}%
+ \xdef\naturalfloatdepth {\the\dp#1}}
+
+\long\def\docompletefloat#1#2#3#4#5#6#7% #7 = box number
+ {%\flushsidefloats % moved
+ \presetfloatvariables{#1}{#4}{#2}{#6}%
+ \bgroup
+ \setnaturalfloatdimensions#7%
+ \global\setbox\floatbox\vbox
+ {\executeifdefined{\??fl#1\c!command}\firstofoneargument{\box#7}}%
+ \setnaturalfloatdimensions\floatbox
+ \dimen0 \ht\floatbox
+ \advance\dimen0 \dp\floatbox
+ \ifdim\dimen0=\zeropoint
+ \showmessage\m!floatblocks{11}\empty
+ \global\setbox\floatbox\vbox{\doemptyblock{#3}}%
+ \fi
+ \ifnofloatcaption
+ \global\setbox\floatbox\vbox
+ {\unvbox\floatbox
+ \vss % gets rid of the depth (unless tabulate)
+ \rawpagereference\s!flt{#2}}%
+ \egroup
+ \dofloat{#4}{}{#6}{#1}%
+ \else
+ \doglobal\convertargument#6\to\asciititle % \asciititle is global
+ \ifnofloatnumber
+ \global\setbox\floatbox\vbox
+ {\unvbox\floatbox % no \vss, keep the depth
+ \rawreference\s!flt{#2}{{}{\asciititle}}}%
+ \egroup
+ \dofloat{#4}{}{#6}{#1}%
+ \else
+ \incrementnumber[#1]%
+ \makesectionnumber[#1]%
+ \global\setbox\floatbox\vbox
+ {\unvbox\floatbox % no \vss, keep the depth
+ \dofloatreference
+ \redofloatorder{#1}%
+ \rawreference\s!flt{#2}{{\hetnummer}{\asciititle}}%
+ \dowritetolist{#3}{\hetnummer}{#6}{#3}}%
+ \egroup
+ \preparethenumber{\??kj#1}\hetnummer\preparednumber
+ \dofloat{#4}{\labeltexts{#5}{\preparednumber}}{#6}{#1}%
+ \fi
+ \fi
+ \global\insidefloatfalse}
+
+\newif\ifmargeblokken
+
+\def\dosetupmarginblocks[#1]%
+ {\getparameters[\??mb][#1]%
+ \doifelse\@@mbstate\v!start
+ {\showmessage\m!layouts4\empty
+ \margeblokkentrue
+ \let\somenextfloat\dosomenextfloat
+ \let\startmarginblock\dostartmarginblock
+ \let\stopmarginblock\dostopmarginblock}%
+ {\showmessage\m!layouts5\empty
+ \margeblokkenfalse
+ \def\somenextfloat[##1]%
+ {\someelsefloat[##1,\v!here]}%
+ \let\startmarginblock\dontstartmargeblok
+ \let\stopmarginblock\dontstopmargeblok}}
+
+\def\setupmarginblocks
+ {\dosingleargument\dosetupmarginblocks}
+
+\newbox\marginbox
+
+\def\dosomenextfloat[#1]%
+ {\global\setbox\marginbox\vbox
+ {\hsize\@@mbwidth
+ \unvcopy\marginbox
+ \ifvoid\marginbox\else\expandafter\@@mbinbetween\fi
+ \box\floatbox\filbreak}%
+ \ifdim\ht\marginbox>\textheight
+ \dosavefloatinfo
+ \else
+ \doinsertfloatinfo
+ \fi}
+
+\newbox\preparedmarginbox
+
+\def\reshapemargin
+ {\ifdim\ht\preparedmarginbox>\zeropoint
+ \beginofshapebox
+ \unvbox\preparedmarginbox
+ \endofshapebox
+ \reshapebox
+ {\box\shapebox}%
+ \setbox\preparedmarginbox\vbox to \textheight
+ {\@@mbtop
+ \flushshapebox
+ \@@mbbottom}%
+ \fi}
+
+\def\plaatsrechtermargeblok
+ {\hskip\rightmarginwidth}
+
+\def\plaatslinkermargeblok
+ {\hskip\leftmarginwidth}
+
+\def\checkmargeblokken
+ {\ifvoid\marginbox\else\docheckmargeblokken\fi}
+
+\def\docheckmargeblokken % erg inefficient
+ {\setbox\preparedmarginbox\vbox
+ {\forgetall
+ \splittopskip\topskip
+ \ifvoid\marginbox\else
+ \ifdim\ht\marginbox>\textheight
+ \vsplit\marginbox to \textheight
+ \else
+ \unvbox\marginbox
+ \fi
+ \fi}%
+ \reshapemargin
+ \setbox\preparedmarginbox\vbox
+ {\@@mbbefore\box\preparedmarginbox\@@mbafter}%
+ \def\rightmarginbox
+ {\def\plaatsrechtermargeblok
+ {\setbox\preparedmarginbox\hbox to \rightmarginwidth
+ {\@@mbleft\box\preparedmarginbox\@@mbright}%
+ \vsmashbox\preparedmarginbox
+ \box\preparedmarginbox}}%
+ \def\leftmarginbox
+ {\def\plaatslinkermargeblok
+ {\setbox\preparedmarginbox\hbox to \leftmarginwidth
+ {\@@mbright\box\preparedmarginbox\@@mbleft}%
+ \vsmashbox\preparedmarginbox
+ \box\preparedmarginbox}}%
+ \processaction % traag
+ [\@@mblocation]
+ [ \v!inmargin=>\doifbothsidesoverruled
+ \rightmarginbox
+ \orsideone
+ \rightmarginbox
+ \orsidetwo
+ \leftmarginbox
+ \od,
+ \v!middle=>\doifbothsidesoverruled
+ \rightmarginbox
+ \orsideone
+ \leftmarginbox
+ \orsidetwo
+ \rightmarginbox
+ \od,
+ \v!left=>\leftmarginbox,
+ \v!right=>\rightmarginbox,
+ \s!unknown=>\setbox\preparedmarginbox\hbox{}]}
+
+\def\dostartmarginblock % 2 maal \vbox ivm \unvbox elders
+ {\global\setbox\marginbox\vtop\bgroup\vbox\bgroup
+ \hsize\@@mbwidth
+ \ifvoid\marginbox\else
+ \unvbox\marginbox
+ \@@mbinbetween
+ \fi
+ \setupalign[\@@mbalign]%
+ \dostartattributes\??mb\c!style\c!color{}%
+ \begstrut\ignorespaces}
+
+\def\dostopmarginblock
+ {\unskip\endstrut
+ \dostopattributes
+ \egroup
+ \egroup}
+
+\def\dontstartmargeblok
+ {\@@mbbefore
+ \bgroup
+ \dostartattributes\??mb\c!style\c!color\empty}
+
+\def\dontstopmargeblok
+ {\dostopattributes
+ \egroup
+ \@@mbafter}
+
+\newcounter\nofpostponedblocks
+
+\newif\ifinpostponing
+
+\newevery\everytopofpage\relax
+
+\appendtoks \the\everytopofpage \to\everystarttext
+\appendtoks\global\everytopofpage\emptytoks\to\everystoptext
+
+% \startpostponing [pagenumber] [+pageoffset]
+%
+% \startpostponing[2]
+% PAGE 2 \blank
+% \stoppostponing
+%
+% \startpostponing[+1]
+% PAGE +1 \blank
+% \stoppostponing
+%
+% \startpostponing[+2]
+% PAGE +2 \blank
+% \stoppostponing
+%
+% \starttext \dorecurse{4}{\input tufte \page} \stoptext
+
+\newtoks \postponedpageblocks
+\newcounter\nofpostponedpageblocks
+
+% \ifinpostponing: handhaven, want gebruikt in stijlen ! ! ! ! !
+
+\def\dopostponeblock
+ {\bgroup % new may 2004
+ \setsystemmode\v!postponing % new may 2004
+ \the\everytopofpage
+ \ifvoid\collectedpagefloats\else
+ % message
+ \unvbox\collectedpagefloats
+ \fi
+ \donefalse
+ \ifinpostponing \else
+ \ifcase\nofpostponedblocks \else \donetrue \fi
+ \ifcase\nofpostponedpageblocks \else \donetrue \fi
+ \fi
+ \ifdone
+ \bgroup % we need the color/font switch, else problems inside split verbatim
+ \setnormalcatcodes % postponing in verbatim
+ \edef\savedtopofpagecolor{\topofpagecolor}%
+ \doifsomething\savedtopofpagecolor\restorecolormode % \stopcolormode
+ \restoreglobalbodyfont % The \nof-test is
+ \global\pagetotal\zeropoint % recently added and
+ \global\inpostponingtrue % definitely needed else
+ \the\postponedpageblocks % we can loose or disorder
+ \dorecurse\nofpostponedblocks % floats; anyhow, this
+ {\getbuffer[pbuf-\recurselevel]} % mechanism is still
+ \doflushfloats % new but potential dangerous % suboptimal and needs a
+ \doglobal\newcounter\nofpostponedblocks % proper analysis
+ \global\inpostponingfalse
+ \doifsomething\savedtopofpagecolor\startcolormode\savedtopofpagecolor
+ \egroup
+ \fi
+ \egroup} % new may 2004
+
+\def\getpostponedblock#1#2%
+ {\doif{#1}\realfolio{\getbuffer[rbuf-#2]}} % no \ifnum, avoid \fi
+
+% beware, \dosingleempty conflicts with buffers (feeds back the \par)
+
+\setvalue{\e!start\v!postponing}%
+ {\bgroup
+ \obeylines
+ \doifnextcharelse[%
+ {\egroup\nodostartpostponing}{\egroup\dodostartpostponing}}
+
+\def\nodostartpostponing[#1]%
+ {\doglobal\increment\nofpostponedpageblocks
+ \bgroup % a little bit of misusing grouping
+ \doifinstring{+}{#1}\advance \realpageno#1\relax % ugly but efficient
+ \doglobal\appendetoks\noexpand\getpostponedblock
+ {\realfolio}{\nofpostponedpageblocks}\to\postponedpageblocks
+ \egroup
+ \showmessage\m!layouts3\nofpostponedpageblocks
+ \dostartbuffer[rbuf-\nofpostponedpageblocks]%
+ [\e!start\v!postponing][\e!stop\v!postponing]}
+
+\def\dodostartpostponing
+ {\doglobal\increment\nofpostponedblocks
+ \showmessage\m!layouts3\nofpostponedblocks
+ \dostartbuffer[pbuf-\nofpostponedblocks]%
+ [\e!start\v!postponing][\e!stop\v!postponing]}
+
+\definenumber
+ [\??si]
+ [\c!way=\v!by\v!text,
+ \c!conversion=\@@siconversion]
+
+\def\setupfloatsplitting
+ {\dodoubleargument\getparameters[\??si]}
+
+% ook (continued)
+
+\def\dosplitfloat[#1]#2% nog dubbele refs
+ {\ifinsidecolumns % tzt ook nog figuren splitten
+ % not yet supported
+ \else
+ \bgroup
+ \insidefloattrue
+ \getparameters[\??si][#1]%
+ \resetnumber[\??si]%
+ \def\floatcaptionsuffix{\convertednumber[\??si]}%
+ \TABLEcaptionheight\@@silines\lineheight % brrr
+ \simplifypagebreak % \page becomes \goodbreak
+ \dowithnextbox
+ {\forgetall
+ \dontcomplain
+ \doloop
+ {\setbox2\vsplit\nextbox to \lineheight
+ \setbox2\vbox{\unvbox2}
+ \ifdim\ht2>\lineheight
+ \incrementnumber[\??si]%
+ \ifcase\rawnumber[\??si]\or \ifdim\nextboxht=\zeropoint
+ \let\floatcaptionsuffix\empty
+ \fi \fi
+ \bgroup
+ #2{\unvbox2}
+ \egroup
+ \ifdim\nextboxht>\zeropoint
+ \page
+ \decrementnumber[\floatcaptionnumber]%
+ \fi
+ \fi
+ \ifdim\nextboxht>\zeropoint\else
+ \expandafter\exitloop
+ \fi}%
+ \egroup}
+ \vbox
+ \fi}
+
+\def\splitfloat
+ {\dosingleempty\dosplitfloat}
+
+\def\dooutput{\sidefloatoutput} % redefinition of \dooutput
+
+\setupmarginblocks
+ [\c!state=\v!start,
+ \c!location=\v!inmargin,
+ \c!width=\rightmarginwidth,
+ \c!style=,
+ \c!color=,
+ \c!align=,
+ \c!left=,
+ \c!right=,
+ \c!top=,
+ \c!inbetween=\blank,
+ \c!bottom=\vfill,
+ \c!before=,
+ \c!after=]
+
+\definefloat
+ [\v!figure]
+ [\v!figures]
+
+\definefloat
+ [\v!table]
+ [\v!tables]
+
+\setupfloat
+ [\v!table]
+ [\c!frame=\v!off]
+
+\definefloat
+ [\v!intermezzo]
+ [\v!intermezzi]
+
+\definefloat
+ [\v!graphic]
+ [\v!graphics]
+
+\setupcaptions
+ [\c!location=\v!bottom,
+ \c!grid=,
+ \c!before=\blank,
+ \c!inbetween={\blank[\v!medium]},
+ \c!after=\blank,
+ \c!width=\v!fit,
+ \c!minwidth=\v!fit, % id est: the width of the floatbox in some cases
+ \c!headstyle=\v!bold,
+ \c!headcolor=,
+ \c!style=\v!normal,
+ \c!color=,
+ \c!textstyle=,
+ \c!textcolor=,
+ \c!align=,
+ \c!number=\v!yes,
+ \c!way=\@@nrway,
+ \c!blockway=\@@nrblockway,
+ \c!sectionnumber=\@@nrsectionnumber,
+ \c!separator=\@@koseparator,
+ \c!distance=1em,
+ \c!command=,
+ \c!conversion=\v!numbers]
+
+\setupfloats
+ [\c!location=\v!middle,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!offset=\v!overlay,
+ \c!frame=\v!off,
+ \c!radius=.5\korpsgrootte,
+ \c!corner=\v!rectangular,
+ \c!background=,
+ \c!backgroundscreen=\@@rsscreen,
+ \c!backgroundcolor=,
+ \c!backgroundoffset=\!!zeropoint,
+ \c!topframe=,
+ \c!bottomframe=,
+ \c!leftframe=,
+ \c!rightframe=,
+ \c!frameoffset=\!!zeropoint,
+ \c!before=,
+ \c!after=,
+ \c!spacebefore=\v!big,
+ \c!spaceafter=\v!big,
+ \c!sidespacebefore=\@@bkspacebefore,
+ \c!sidespaceafter=\@@bkspaceafter,
+ \c!sidealign=\v!normal,
+ \c!textmethod=\ifgridsnapping2\else0\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt)
+ \c!sidemethod=\ifgridsnapping2\else1\fi, % 0=raw 1=safe (.99pg) 2=tight (-1pt)
+ \c!indentnext=\v!no,
+ \c!margin=1em,
+ \c!leftmargindistance=\zeropoint,
+ \c!rightmargindistance=\@@bkleftmargindistance,
+ \c!ntop=2,
+ \c!nbottom=0,
+ \c!nlines=4,
+ \c!local=,
+ \c!default=\v!figure,
+ \c!numbering=\v!yes]
+
+\setupfloatsplitting
+ [\c!conversion=\v!character, % \v!romannumerals
+ \c!lines=3]
+
+% float strategy, replaces some of the above macros
+
+\let\floatmethod\empty
+\let\floatcolumn\empty
+\let\floatrow \empty
+
+\def\dogetfloatbox#1#2%
+ {\ifvisible
+ \doifelsenothing{#2}
+ {\getfromcommalist[#1][1]%
+ \@EA\beforesplitstring\commalistelement\at:\to\floatmethod
+ \@EA\aftersplitstring \commalistelement\at:\to\floatcolumn
+ \@EA\aftersplitstring \floatcolumn\at*\to\floatrow
+ \@EA\beforesplitstring\floatcolumn\at*\to\floatcolumn
+ % todo: nog algemeen otr
+ \ifx\OTRSETsetpreferedcolumnslot\undefined\else
+ \OTRSETsetpreferedcolumnslot\floatcolumn\floatrow
+ \fi}
+ {\let\floatcolumn\empty
+ \let\floatrow\empty
+ \edef\floatmethod{#2}}%
+ \doifundefined{\string\floatmethod\floatmethod}
+ {\let\floatmethod\v!here}%
+ \getvalue{\string\floatmethod\floatmethod}[#1]%
+ \fi}
+
+\def\installfloathandler#1#2% #1=keyword #2=handler
+ {\setvalue{\string\floatmethod#1}{#2}}
+
+\installfloathandler \v!here \someherefloat
+\installfloathandler \v!force \somefixdfloat
+\installfloathandler \v!left \someleftsidefloat
+\installfloathandler \v!right \somerightsidefloat
+\installfloathandler \v!text \sometextfloat
+\installfloathandler \v!top \sometopfloat
+\installfloathandler \v!bottom \somebottomfloat
+\installfloathandler \v!margin \somemarginfloat
+\installfloathandler \v!opposite \somefacefloat
+\installfloathandler \v!page \somepagefloat
+\installfloathandler \v!inmargin \someinmarginfloat
+\installfloathandler \v!inleft \someinleftmarginfloat
+\installfloathandler \v!inright \someinrightmarginfloat
+\installfloathandler \v!leftmargin \someinleftmarginfloat
+\installfloathandler \v!rightmargin \someinrightmarginfloat
+\installfloathandler \v!leftedge \someinleftedgefloat
+\installfloathandler \v!rightedge \someinrightedgefloat
+
+\installfloathandler \v!backspace \somebackspacefloat
+\installfloathandler \v!cutspace \somecutspacefloat
+
+\installfloathandler {tblr} \someslotfloat
+\installfloathandler {lrtb} \someslotfloat
+\installfloathandler {tbrl} \someslotfloat
+\installfloathandler {rltb} \someslotfloat
+\installfloathandler {btlr} \someslotfloat
+\installfloathandler {lrbt} \someslotfloat
+\installfloathandler {btrl} \someslotfloat
+\installfloathandler {rlbt} \someslotfloat
+\installfloathandler {fxtb} \someslotfloat
+\installfloathandler {fxbt} \someslotfloat
+
+\def\placesomeslotfloat {\OTRcommand\someslotfloat}
+\def\placesomeherefloat {\OTRcommand\someherefloat}
+\def\placesomefixdfloat {\OTRcommand\somefixdfloat}
+\def\placesomepagefloat {\OTRcommand\somepagefloat}
+\def\placesometopsfloat {\OTRcommand\sometopsfloat}
+\def\placesomebotsfloat {\OTRcommand\somebotsfloat}
+\def\placesomesidefloat {\OTRcommand\somesidefloat}
+\def\placesomefacefloat {\OTRcommand\somefacefloat}
+
+\def\someleftsidefloat [#1]{\somesidefloat[#1]\presetindentation}
+\def\somerightsidefloat [#1]{\somesidefloat[#1]}
+\def\sometopfloat [#1]{\someelsefloat[#1]\nonoindentation}
+\def\somebottomfloat [#1]{\someelsefloat[#1]}
+\def\somemarginfloat [#1]{\somenextfloat[#1]\nonoindentation}
+\def\someinleftmarginfloat [#1]{\somesidefloat[#1]}
+\def\someinrightmarginfloat[#1]{\somesidefloat[#1]}
+\def\someinleftedgefloat [#1]{\somesidefloat[#1]}
+\def\someinrightedgefloat [#1]{\somesidefloat[#1]}
+\def\someinmarginfloat [#1]{\somesidefloat[#1]}
+\def\someherefloat [#1]{\someelsefloat[\v!here,#1]}
+
+\def\somebackspacefloat [#1]{\somesidefloat[#1]}
+\def\somecutspacefloat [#1]{\somesidefloat[#1]}
+
+\def\somefixdfloat {\placesomefixdfloat}
+\def\somepagefloat {\placesomepagefloat}
+\def\somefacefloat {\placesomefacefloat}
+\def\someslotfloat {\placesomeslotfloat}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-flw.tex b/Master/texmf-dist/tex/context/base/page-flw.tex
new file mode 100644
index 00000000000..1a8ffd3c422
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-flw.tex
@@ -0,0 +1,107 @@
+%D \module
+%D [ file=page-flw,
+%D version=2003.04.19, % from test-002 (1997) profile experiment
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Text Flows,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context OTR Macros / Text Flows}
+
+%D This is high experimental and especially flushing may change (proper
+%D spacing is the driving force here).
+
+\unprotect
+
+\def\definetextflow
+ {\dodoubleempty\dodefinetextflow}
+
+\def\dodefinetextflow[#1][#2]% flow settings
+ {\iffirstargument
+ \doiftextflowcollectorelse{#1}
+ {\setbox\textflowcollector{#1}\emptybox}
+ {\@EA\newbox\csname\??tx:c:#1\endcsname}%
+ \getparameters[\??tx:p:#1]
+ [\c!width=\hsize,\c!style=,#2]%
+ \fi}
+
+\def\textflowparameter#1#2{\csname\??tx:p:#1#2\endcsname}
+\def\textflowcollector #1{\csname\??tx:c:#1\endcsname}
+
+\def\doiftextflowcollectorelse#1{\doifdefinedelse{\??tx:c:#1}}
+
+\def\doiftextflowelse#1%
+ {\doiftextflowcollectorelse{#1}
+ {\ifvoid\textflowcollector{#1}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+ {\secondoftwoarguments}}
+
+\def\doiftextflow#1%
+ {\doiftextflowelse{#1}\firstofoneargument\gobbleoneargument}
+
+\def\starttextflow[#1]%
+ {\doiftextflowcollectorelse{#1}
+ {\global\setbox\textflowcollector{#1}\vbox
+ \bgroup
+ \unvbox\textflowcollector{#1}%
+ \hsize\textflowparameter{#1}\c!width
+ \doifsomething{\textflowparameter{#1}\c!style}%
+ {\doconvertfont{\textflowparameter{#1}\c!style}}%
+ \def\stoptextflow{\endgraf\egroup}}
+ {\let\stoptextflow\relax}}
+
+\def\flushtextflow#1%
+ {\doiftextflow{#1}
+ {\ifdim\ht\textflowcollector{#1}>\vsize
+ \setbox\scratchbox\vsplit\textflowcollector{#1} to \vsize
+ \unvbox\scratchbox
+ \else
+ \unvbox\textflowcollector{#1}%
+ \fi}}
+
+\protect \endinput
+
+% Example (dutch)
+%
+% \stelpapierformaatin [S6]
+% \steltolerantiein [soepel,rek]
+% \stelkleurenin [status=start]
+% \stelvoetin [strut=nee]
+% \stelwitruimtein [groot]
+%
+% \stellayoutin
+% [rechterrand=5cm,breedte=passend,marge=0pt,randafstand=1cm,
+% voet=4cm,voetafstand=1cm,hoofd=0cm]
+%
+% \stelteksttekstenin[rand][][\vbox{\flushtextflow{alpha}}]
+% \stelvoettekstenin [rand][][\vbox{\flushtextflow{beta}}]
+% \stelvoettekstenin [\vbox{\flushtextflow{gamma}}][]
+%
+% \definetextflow [alfa] [breedte=\rechterrandbreedte]
+% \definetextflow [beta] [breedte=\rechterrandbreedte]
+% \definetextflow [gamma] [breedte=\voethoogte]
+%
+% \starttekst
+%
+% \dorecurse{50}
+% {\getrandomnumber{\funny}{0}{8}
+% \ifcase\funny \starttextflow[alfa] \input tufte.tex \stoptextflow
+% \or \starttextflow[beta] \input knuth.tex \stoptextflow
+% \or \starttextflow[gamma] \input materie.tex \stoptextflow
+% \or {\bf TUFTE}\quad \input tufte \par
+% \or {\bf TUFTE}\quad \input tufte \par
+% \or {\bf KNUTH}\quad \input knuth \par
+% \or {\bf KNUTH}\quad \input knuth \par
+% \or {\bf MATERIE}\quad \input materie \par
+% \else {\bf MATERIE}\quad \input materie \par
+% \fi}
+%
+% \stoptekst
diff --git a/Master/texmf-dist/tex/context/base/page-imp.tex b/Master/texmf-dist/tex/context/base/page-imp.tex
new file mode 100644
index 00000000000..b54dcfa99c5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-imp.tex
@@ -0,0 +1,1241 @@
+%D \module
+%D [ file=page-imp, % was: core-pag,
+%D version=1998.01.15,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Pagebody Building (Imposition),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% much of this can more to run time loading !
+
+\writestatus{loading}{Context Core Macros / Pagebody Building}
+
+\unprotect
+
+% sizing bug:
+%
+% \setuppapersize[A4][A4,landscape] \setuparranging[2UP] \showframe
+%
+% \starttext \dorecurse{10}{\input tufte \par} \stoptext
+
+% to be moved code:
+
+\newif\ifclipprintbox \clipprintboxtrue
+%newif\ifclippagebox \clippageboxtrue
+
+\def\clippedprintbox#1#2% can be made more efficient, see other clipper
+ {\ifclipprintbox
+ \!!widthc\pagebackgroundoffset
+ \!!widtha \paperwidth
+ \advance\!!widtha \!!widthc
+ \!!heighta\paperheight
+ \advance\!!heighta\!!widthc
+ \advance\!!heighta\!!widthc
+ \setbox#2\vbox to \paperheight{\vfill\box#2}%
+ \ht#2\paperheight
+ \wd#2\paperwidth
+ \setbox#2\vbox
+ {\framed
+ [\c!offset=\!!widthc,\c!strut=\v!no,\c!frame=\v!off]
+ {\box#2}}%
+ \setbox#2\hbox to \paperwidth
+ {\ifcase#1\relax
+ \!!widthb\zeropoint
+ \hskip-\!!widthc
+ \else
+ \!!widthb\!!widthc
+ \fi
+ \lower\!!widthc\hbox
+ {\clip
+ [\c!width=\!!widtha,\c!height=\!!heighta,
+ \c!hoffset=\!!widthb,\c!voffset=\zeropoint]
+ {\box#2}}}%
+ \wd#2\paperwidth
+ \ht#2\paperheight
+ \fi
+ \box#2\relax}
+
+\let\clippagebox \gobbleoneargument
+\let\clipprintbox\gobbleoneargument
+
+% \setuppagenumbering[alternative=doublesided]
+% \setupcolors[state=start]
+% \setuppapersize[A4][A4,oversized]
+% \setuplayout[location=middle,clipoffset=5mm]
+% \setupbackgrounds
+% [page]
+% [frame=on,rulethickness=1mm,
+% backgroundoffset=10mm,background=color,backgroundcolor=red]
+% \starttext \dorecurse{10}{\input tufte \par} \stoptext
+
+\def\clippagebox#1%
+ {\ifdim\@@lyclipoffset>\zeropoint
+ \!!widtha \wd#1%
+ \!!heighta\ht#1%
+ \!!deptha \dp#1%
+ \setbox#1\hbox
+ {\!!widthb \@@lyclipoffset
+ \advance\!!heighta\!!deptha
+ \advance\!!heighta2\!!widthb
+ \advance\!!widtha \!!widthb
+ \doifbothsides
+ \advance\!!widtha\!!widthb
+ \!!widthc-\!!widthb
+ \hskip\!!widthc
+ \orsideone
+ \!!widthc\zeropoint
+ \orsidetwo
+ \!!widthc-\!!widthb
+ \hskip\!!widthc
+ \od
+ \lower\!!widthb\hbox
+ {\clip
+ [\c!hoffset=\!!widthc,
+ \c!voffset=-\!!widthb,
+ \c!width=\!!widtha,
+ \c!height=\!!heighta]%
+ {\box#1}}}%
+ \wd#1\!!widtha
+ \ht#1\!!heighta
+ \dp#1\!!deptha
+ \fi}
+
+% moved code:
+
+\def\myshipout#1%
+ {\voorpagina % voor de pagebody dus !
+ \dontshowcomposition
+ \ifarrangingpages\@EA\actualarrange\else\@EA\actualshipout\fi
+ {\thisisrealpage\realfolio#1}%
+ \gotonextrealpage
+ \napagina}
+
+\newbox\postponedcontent
+
+\def\flushatshipout
+ {\dowithnextbox
+ {\global\setbox\postponedcontent\hbox to \zeropoint
+ {%\hskip-\maxdimen % niet hier, gaat mis in acrobat (clipt)
+ \box\postponedcontent\flushnextbox}%
+ \global\ht\postponedcontent\zeropoint
+ \global\dp\postponedcontent\zeropoint
+ \global\wd\postponedcontent\zeropoint}%
+ \hbox}
+
+% \starttypen
+% \def\pagestoshipout{1,3,5}
+% \stoptypen
+
+\newcount\shippedoutpages
+
+\let\pagestoshipout\empty % {1,3,6}
+\chardef\whichpagetoshipout=0 % 0=all 1=odd 2=even
+
+\def\actualshipout#1%
+ {\global\advance\shippedoutpages\plusone
+ % this is not resource safe!
+ \ifx\pagestoshipout\empty
+ \ifcase\whichpagetoshipout\relax
+ \donetrue
+ \or % 1
+ \ifodd\shippedoutpages\relax\donetrue\else\donefalse\fi
+ \or % 2
+ \ifodd\shippedoutpages\relax\donefalse\else\donetrue\fi
+ \else
+ \donetrue
+ \fi
+ \else % testen, aangepast / expanded nodig ?
+ \expanded{\doifinsetelse{\the\shippedoutpages}{\pagestoshipout}}%
+ \donetrue\donefalse
+ \fi
+ \ifdone
+ \shipout\vbox
+ {\forgetall
+ \offinterlineskip
+ \dontcomplain
+ \scratchdimen-1in
+ \vskip\scratchdimen
+ \hskip\scratchdimen
+ \hbox % \setbox0=\box.. is nicer
+ {\setbox0\hbox{#1}% just in case there are objects there
+ \setbox\scratchbox\hbox
+ {% before the main one !
+ \ifcase\realfolio \or
+ \the\everyfirstshipout
+ \global\everyfirstshipout\emptytoks
+ \fi
+ % the main one
+ \the\everyshipout\relax
+ % always last (and after the main one)
+ \ifnum\realpageno=\lastpage\relax
+ \the\everylastshipout
+ \global\everylastshipout\emptytoks
+ \fi}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \box\postponedcontent % evt ver naar links !
+ \box0}}%
+ \else
+ \message
+ {[\ifarrangingpages arranged \fi page
+ \ifarrangingpages\the\arrangeno\else\the\realpageno\fi\normalspace
+ not flushed]}%
+ \setbox0\hbox{#1}%
+ \deadcycles\zerocount
+ \fi}
+
+\def\actualarrange#1%
+ {\setbox0\hbox{\thisisrealpage{\realfolio}#1}%
+ \pusharrangedpage0%
+ \deadcycles\zerocount}
+
+%D We need a couple of boxes for duplex printing \unknown
+
+\newbox\arrangedpageA \newbox\arrangedpageB
+
+%D \unknown\ and some for simulating big sheets.
+
+\newbox\arrangedpageC \newbox\arrangedpageD
+\newbox\arrangedpageE \newbox\arrangedpageF
+\newbox\arrangedpageG \newbox\arrangedpageH
+
+\newif\ifswaparranged
+\newif\ifnegatearranged
+\newif\ifmirrorarranged
+\newif\ifdoublearranged
+
+\newif\ifarrangingdisabled
+
+\def\arrangedrotationO{0}
+\def\arrangedrotationE{0}
+
+\newcounter\arrangedpageN
+\newcounter\arrangedpageM
+
+\chardef\arrangedpageT=1
+\chardef\arrangedpageX=1
+\chardef\arrangedpageY=1
+
+\def\calculatepaperoffsets#1%
+ {\scratchdimen\getvalue{\??pp#1\c!offset}%
+ \divide\scratchdimen \arrangedpageX
+ \global\advance\paperwidth -2\scratchdimen
+ \scratchdimen\getvalue{\??pp#1\c!offset}%
+ \divide\scratchdimen \arrangedpageY
+ \global\advance\paperheight -2\scratchdimen}
+
+\def\setuparranging[#1]%
+ {\ifarrangingdisabled \else
+ \doifelse{#1}\v!disable
+ {\global\arrangingdisabledtrue}
+ {\global\arrangingdisabledfalse}%
+ \global\arrangingpagestrue
+ \global\negatearrangedfalse
+ \global\mirrorarrangedfalse
+ \global\doublearrangedfalse
+ \gdef\arrangedrotationO{0}%
+ \gdef\arrangedrotationE{180}%
+ \processallactionsinset
+ [#1]
+ [ \v!mirrored=>\global\mirrorarrangedtrue,
+ \v!doublesided=>\global\doublearrangedtrue,
+ \v!negative=>\global\negatearrangedtrue,
+ \v!rotated=>\gdef\arrangedrotationO {90}\gdef\arrangedrotationE{270},
+ 90=>\gdef\arrangedrotationO {90}\gdef\arrangedrotationE{270},
+ 180=>\gdef\arrangedrotationO{180}\gdef\arrangedrotationE{0},
+ 270=>\gdef\arrangedrotationO{270}\gdef\arrangedrotationE{90},
+ \s!reset=>\global\arrangingpagesfalse,
+ \s!unknown=>\checkinstalledpagearrangement\commalistelement]%
+ % no \s!default=> we can have aaa,,bbb
+ \ifx\handlearrangedpage\undefined
+ \global\arrangingpagesfalse
+ \fi
+ \doifcommonelse{#1}{90,270,\v!rotated}
+ {\swapmacros\horizontalcutmarks\verticalcutmarks}{}% ugly solution
+ \setuppapersize
+ \ifarrangingpages
+ \abortutilitygeneration
+ \fi
+ \fi}
+
+\def\installpagearrangement #1 %
+ {\setgvalue{\??pp\??pp#1}}
+
+\def\checkinstalledpagearrangement#1% can be empty: aaa,,bbb
+ {\executeifdefined{\??pp\??pp#1}\donothing}
+
+\def\dosetuparrangement#1#2#3#4#5#6#7#8%
+ {\global\chardef\arrangedpageX #1%
+ \global\chardef\arrangedpageY #2%
+ \global\chardef\arrangedpageT #3%
+ \global\chardef\horizontalcutmarks#4%
+ \global\chardef\verticalcutmarks #5%
+ \global\let \pusharrangedpage #6%
+ \global\let \poparrangedpages #7%
+ \global\let \handlearrangedpage#8}
+
+\installpagearrangement {\v!normal}
+ {\global\arrangingpagesfalse}
+
+\installpagearrangement 2*16
+ {\dosetuparrangement{4}{4}{16}{5}{5}%
+ \pusharrangedpageTHIRTYTWO\poparrangedpagesAB\relax}
+
+\installpagearrangement 2*8
+ {\dosetuparrangement{4}{2}{8}{5}{3}%
+ \pusharrangedpageSIXTEEN\poparrangedpagesAB\relax}
+
+\installpagearrangement 2*4
+ {\dosetuparrangement{2}{2}{4}{3}{3}%
+ \pusharrangedpageEIGHT\poparrangedpagesAB\relax}
+
+\installpagearrangement 2*2
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
+ \pusharrangedpageFOURA\poparrangedpagesAB\relax}
+
+\installpagearrangement 2**2
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
+ \pusharrangedpageFOURB\poparrangedpagesAB\relax}
+
+\installpagearrangement 2SIDE
+ {\dosetuparrangement{2}{1}{2}{3}{2}%
+ \pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageSIDE}
+
+\installpagearrangement 2TOP
+ {\dosetuparrangement{1}{2}{2}{2}{3}%
+ \pusharrangedpageSIDETOP\poparrangedpagesTWO\handlearrangedpageTOP}
+
+\installpagearrangement 2UP
+ {\dosetuparrangement{2}{1}{4}{3}{2}%
+ \pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWOUP}
+
+\installpagearrangement 2DOWN
+ {\dosetuparrangement{1}{2}{4}{2}{3}%
+ \pusharrangedpageTWO\poparrangedpagesTWO\handlearrangedpageTWODOWN}
+
+\installpagearrangement 2*4*2 % one defined by Willy Egger:
+ {\dosetuparrangement{2}{2}{4}{3}{2}%
+ \pusharrangedpageSIXTEENTWO\poparrangedpagesAtoD\relax}
+
+\installpagearrangement 2*2*4 % onother one of Willy Egger
+ {\dosetuparrangement{2}{1}{8}{3}{2}%
+ \pusharrangedpageSIXTEENFOUR\poparrangedpagesAtoH\relax}
+
+\installpagearrangement 2TOPSIDE
+ {\dosetuparrangement{1}{2}{4}{2}{3}%
+ \pusharrangedpageTWOTOPSIDE\poparrangedpagesTWOTOPSIDE\handlearrangedpageTOP}
+
+% \def\filluparrangedpages % beware: \realpageno is 1 ahead
+% {\ifarrangingpages
+% \scratchcounter-\realpageno
+% \divide\scratchcounter \arrangedpageT
+% \multiply\scratchcounter \arrangedpageT
+% \advance\scratchcounter \realpageno
+% \advance\scratchcounter \minusone
+% \dorecurse\scratchcounter{\noheaderandfooterlines\ejectdummypage}%
+% \fi}
+
+\def\filluparrangedpages % beware: \realpageno is 1 ahead
+ {\ifarrangingpages
+ \scratchcounter\realpageno
+ \advance\scratchcounter \minusone
+ \dosetmodulo\scratchcounter\arrangedpageT\scratchcounter
+ \ifcase\scratchcounter\else
+ \advance\scratchcounter \plusone
+ \dostepwiserecurse\scratchcounter\arrangedpageT\plusone
+ {\noheaderandfooterlines\ejectdummypage}%
+ \fi
+ \fi}
+
+\def\handlearrangedpageXandY#1#2#3#4#5%
+ {\global\setbox#5\hbox to \arrangedpageX\paperwidth
+ {\setbox\scratchbox\vbox to \arrangedpageY\paperheight
+ {\forgetall
+ \offinterlineskip
+ \dontcomplain
+ \vskip#4\paperheight
+ \hskip#3\paperwidth
+ \dorotatebox{\ifcase#2 0\else180\fi}\hbox{\box#1}%
+ \vfill}%
+ \wd\scratchbox\zeropoint
+ \box\scratchbox\box#5\hss}}
+
+\def\gotonextarrangepage
+ {\global\advance\arrangeno \plusone
+ \def\pagecutmarksymbol{\the\arrangeno}}
+
+\def\outputarrangedbox#1%
+ {\bgroup
+ \gotonextarrangepage
+ \ifnum\arrangedrotationO\arrangedrotationE>\zerocount
+ \setbox#1\vbox
+ {\ifdoublearranged
+ \ifodd\arrangeno
+ \dorotatebox\arrangedrotationO\hbox{\box#1}%
+ \else
+ \dorotatebox\arrangedrotationE\hbox{\box#1}%
+ \fi
+ \else
+ \dorotatebox\arrangedrotationO\hbox{\box#1}%
+ \fi}%
+ \fi
+ \ifmirrorarranged
+ \setbox#1\vbox{\domirrorbox\vbox{\box#1}}%
+ \fi
+ \ifnegatearranged
+ \negatecolorbox{#1}%
+ \fi
+ \finishpagebox#1
+ \actualshipout{\box#1}%
+ \egroup}
+
+%D The format file can be 16K smaller when we postpone the
+%D real arrangments. Some day ...
+
+% TOP
+
+% 32/16/8/4/SIDE
+
+\def\poparrangedpagesAB
+ {\ifnum\arrangedpageN>\zerocount
+ \dontcomplain
+ \paperwidth\arrangedpageX\paperwidth
+ \paperheight\arrangedpageY\paperheight
+ \outputarrangedbox\arrangedpageA
+ \outputarrangedbox\arrangedpageB
+ \doglobal\newcounter\arrangedpageN
+ \fi}
+
+\def\pusharrangedpageTHIRTYTWO#1% taco's challenge
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}033\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}003\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}130\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}130\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}033\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}003\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}102\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}132\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}031\arrangedpageB % 11
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 12
+ \or \handlearrangedpageXandY{#1}031\arrangedpageA % 13
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 14
+ \or \handlearrangedpageXandY{#1}102\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}132\arrangedpageA % 16
+ \or \handlearrangedpageXandY{#1}122\arrangedpageA % 17
+ \or \handlearrangedpageXandY{#1}112\arrangedpageB % 18
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 19
+ \or \handlearrangedpageXandY{#1}021\arrangedpageA % 20
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 21
+ \or \handlearrangedpageXandY{#1}021\arrangedpageB % 22
+ \or \handlearrangedpageXandY{#1}122\arrangedpageB % 23
+ \or \handlearrangedpageXandY{#1}112\arrangedpageA % 24
+ \or \handlearrangedpageXandY{#1}013\arrangedpageA % 25
+ \or \handlearrangedpageXandY{#1}023\arrangedpageB % 26
+ \or \handlearrangedpageXandY{#1}120\arrangedpageB % 27
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 28
+ \or \handlearrangedpageXandY{#1}120\arrangedpageA % 29
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 30
+ \or \handlearrangedpageXandY{#1}013\arrangedpageB % 31
+ \or \handlearrangedpageXandY{#1}023\arrangedpageA % 32
+ \poparrangedpages
+ \fi}
+
+\def\pusharrangedpageSIXTEEN#1% changed to match the official way of doing
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}031\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}031\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}130\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}130\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}120\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}120\arrangedpageB % 11
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 12
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 13
+ \or \handlearrangedpageXandY{#1}021\arrangedpageB % 14
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}021\arrangedpageA % 16
+ \poparrangedpages
+ \fi}
+
+\def\pusharrangedpageEIGHT#1% changed to match the official way of doing
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 3
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 5
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 6
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 8
+ \poparrangedpages
+ \fi}
+
+\def\pusharrangedpageFOURA{\pusharrangedpageFOURdo01}
+\def\pusharrangedpageFOURB{\pusharrangedpageFOURdo10}
+
+\def\pusharrangedpageFOURdo#1#2#3%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#3}010\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#3}0{#1}0\arrangedpageB % 2/3 not {1}
+ \or \handlearrangedpageXandY{#3}0{#2}0\arrangedpageB % 3/2 not {1}
+ \or \handlearrangedpageXandY{#3}000\arrangedpageA % 4
+ \poparrangedpages
+ \fi}
+
+\def\pusharrangedpageSIDETOP#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}000\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageB % 2
+ \poparrangedpages
+ \fi}
+
+\def\handlearrangedpageSIDE
+ {\global\wd\arrangedpageA\paperwidth
+ \global\wd\arrangedpageB\paperwidth
+ \global\setbox\arrangedpageA\hbox
+ {\box\arrangedpageA\box\arrangedpageB}%
+ \global\ht\arrangedpageA\paperheight
+ \global\setbox\arrangedpageB\box\scratchbox} % ?
+
+\def\handlearrangedpageTOP
+ {\global\ht\arrangedpageA\paperheight
+ \global\ht\arrangedpageB\paperheight
+ \global\setbox\arrangedpageA\vbox
+ {\forgetall\offinterlineskip\vskip\paperheight
+ \box\arrangedpageA\box\arrangedpageB}%
+ \global\setbox\arrangedpageB\box\scratchbox} % ?
+
+% 2UP/2DOWN / 1pt prevents overflow
+
+\def\splitoffarrangedpagesTWO
+ {\splittopskip\zeropoint
+ \global\setbox\arrangedpageA\vsplit\arrangedpageB to \onepoint
+ \scratchdimen\ht\arrangedpageB
+ \advance\scratchdimen -\onepoint
+ \ifdim\scratchdimen>\onepoint
+ \setbox\scratchbox\vsplit\arrangedpageB to \scratchdimen
+ \fi}
+
+\def\handlearrangedpageTWOUP
+ {\splitoffarrangedpagesTWO
+ \ifswaparranged
+ \global\setbox\arrangedpageA\hbox
+ {\clippedprintbox0\arrangedpageA
+ \clippedprintbox1\arrangedpageB}%
+ \swaparrangedfalse
+ \else
+ \global\setbox\arrangedpageA\hbox
+ {\clippedprintbox0\arrangedpageB
+ \clippedprintbox1\arrangedpageA}%
+ \swaparrangedtrue
+ \fi
+ \global\ht\arrangedpageA\paperheight
+ \global\setbox\arrangedpageB\box\scratchbox}
+
+\def\handlearrangedpageTWODOWN
+ {\splitoffarrangedpagesTWO
+ \global\ht\arrangedpageA\paperheight
+ \global\ht\arrangedpageB\paperheight
+ \ifswaparranged
+ \global\setbox\arrangedpageA\vbox
+ {\forgetall\offinterlineskip\vskip\paperheight
+ \box\arrangedpageA\box\arrangedpageB}%
+ \swaparrangedfalse
+ \else
+ \global\setbox\arrangedpageA\vbox
+ {\forgetall\offinterlineskip\vskip\paperheight
+ \box\arrangedpageB\box\arrangedpageA}%
+ \swaparrangedtrue
+ \fi
+ \global\setbox\arrangedpageB\box\scratchbox}
+
+\def\poparrangedpagesTWO
+ {\ifnum\arrangedpageN>\zerocount
+ \dontcomplain
+ \swaparrangedfalse
+ \doloop
+ {\handlearrangedpage
+ \bgroup
+ \paperwidth\arrangedpageX\paperwidth
+ \paperheight\arrangedpageY\paperheight
+ \ht\arrangedpageA\paperheight
+ \wd\arrangedpageA\paperwidth
+ \outputarrangedbox\arrangedpageA
+ \egroup
+ \ifdim\ht\arrangedpageB=\zeropoint
+ \exitloop
+ \fi}%
+ \doglobal\newcounter\arrangedpageN
+ \fi}
+
+\def\pusharrangedpageTWO#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \global\setbox\arrangedpageB\vbox
+ {\forgetall
+ \offinterlineskip
+ \unvbox\arrangedpageB
+ \allowbreak
+ \ht#1\onepoint
+ \dp#1\zeropoint
+ \vbox{\box#1}}}
+
+\def\poparrangedpagesTWOTOPSIDE
+ {\ifnum\arrangedpageN>\zerocount
+ \bgroup
+ \gdef\arrangedpageN{2}\poparrangedpagesTWO
+ \let\arrangedpageA\arrangedpageC
+ \let\arrangedpageB\arrangedpageD
+ \gdef\arrangedpageN{2}\poparrangedpagesTWO
+ \doglobal\newcounter\arrangedpageN
+ \egroup
+ \fi}
+
+\def\pusharrangedpageTWOTOPSIDE#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}000\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageC % 2
+ \or \handlearrangedpageXandY{#1}000\arrangedpageB % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageD % 2
+ \poparrangedpages
+ \fi}
+
+%D Willy Egger's sheet simulations:
+
+\def\poparrangedpagesAtoH
+ {\ifnum\arrangedpageN>\zerocount
+ \dontcomplain
+ \paperwidth\arrangedpageX\paperwidth
+ \paperheight\arrangedpageY\paperheight
+ \outputarrangedbox\arrangedpageA
+ \outputarrangedbox\arrangedpageB
+ \outputarrangedbox\arrangedpageC
+ \outputarrangedbox\arrangedpageD
+ \outputarrangedbox\arrangedpageE
+ \outputarrangedbox\arrangedpageF
+ \outputarrangedbox\arrangedpageG
+ \outputarrangedbox\arrangedpageH
+ \doglobal\newcounter\arrangedpageN
+ \fi}
+
+% to arrange 16 pages on 2 sheets to form one booklet
+
+\def\poparrangedpagesAtoD
+ {\ifnum\arrangedpageN>\zerocount
+ \dontcomplain
+ \paperwidth\arrangedpageX\paperwidth
+ \paperheight\arrangedpageY\paperheight
+ \outputarrangedbox\arrangedpageA
+ \outputarrangedbox\arrangedpageB
+ \outputarrangedbox\arrangedpageC
+ \outputarrangedbox\arrangedpageD
+ \doglobal\newcounter\arrangedpageN
+ \fi}
+
+% to arrange 16 pages on 4 sheets to form one booklet
+
+\def\pusharrangedpageSIXTEENFOUR#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}010\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}000\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}010\arrangedpageC % 3
+ \or \handlearrangedpageXandY{#1}000\arrangedpageD % 4
+ \or \handlearrangedpageXandY{#1}010\arrangedpageE % 5
+ \or \handlearrangedpageXandY{#1}000\arrangedpageF % 6
+ \or \handlearrangedpageXandY{#1}010\arrangedpageG % 7
+ \or \handlearrangedpageXandY{#1}000\arrangedpageH % 8
+ \or \handlearrangedpageXandY{#1}010\arrangedpageH % 9
+ \or \handlearrangedpageXandY{#1}000\arrangedpageG % 10
+ \or \handlearrangedpageXandY{#1}010\arrangedpageF % 11
+ \or \handlearrangedpageXandY{#1}000\arrangedpageE % 12
+ \or \handlearrangedpageXandY{#1}010\arrangedpageD % 13
+ \or \handlearrangedpageXandY{#1}000\arrangedpageC % 14
+ \or \handlearrangedpageXandY{#1}010\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}000\arrangedpageA % 16
+ \poparrangedpages
+ \fi}
+
+% to arrange 16 pages on 2 sheets to form one booklet
+
+\def\pusharrangedpageSIXTEENTWO#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \ifcase\arrangedpageN
+ \or \handlearrangedpageXandY{#1}011\arrangedpageA % 1
+ \or \handlearrangedpageXandY{#1}001\arrangedpageB % 2
+ \or \handlearrangedpageXandY{#1}011\arrangedpageC % 3
+ \or \handlearrangedpageXandY{#1}001\arrangedpageD % 4
+ \or \handlearrangedpageXandY{#1}100\arrangedpageD % 5
+ \or \handlearrangedpageXandY{#1}110\arrangedpageC % 6
+ \or \handlearrangedpageXandY{#1}100\arrangedpageB % 7
+ \or \handlearrangedpageXandY{#1}110\arrangedpageA % 8
+ \or \handlearrangedpageXandY{#1}100\arrangedpageA % 9
+ \or \handlearrangedpageXandY{#1}110\arrangedpageB % 10
+ \or \handlearrangedpageXandY{#1}100\arrangedpageC % 11
+ \or \handlearrangedpageXandY{#1}110\arrangedpageD % 12
+ \or \handlearrangedpageXandY{#1}011\arrangedpageD % 13
+ \or \handlearrangedpageXandY{#1}001\arrangedpageC % 14
+ \or \handlearrangedpageXandY{#1}011\arrangedpageB % 15
+ \or \handlearrangedpageXandY{#1}001\arrangedpageA % 16
+ \poparrangedpages
+ \fi}
+
+% % handy for stickers etc, this way we can treat them as page
+%
+% \setuppapersize [XY][A4]
+% \setuppaper [topspace=5mm,backspace=5mm,dx=1mm,dy=1mm,nx=2,ny=6]
+% \setuplayout [page] [topspace=5mm,backspace=5mm]
+% \setuplayout [page]
+% \setuplayout [location=middle]
+% \setuparranging [XY]
+% \showframe
+%
+% \starttext \dorecurse{30}{test \recurselevel \page} \stoptext
+
+\def\pusharrangedpageXY#1%
+ {\doglobal\increment\arrangedpageN
+ \reportarrangedpage\arrangedpageN
+ \doglobal\increment\arrangedpageM
+ \global\setbox\arrangedpageB\hbox
+ \ifdim\@@ppwidth>\zeropoint to \@@ppwidth \fi
+ {\ifvoid\arrangedpageB\else
+ \unhbox\arrangedpageB\hss\hskip\@@ppdx\hss
+ \fi
+ \box#1}%
+ \ifnum\arrangedpageM<\arrangedpageX\else
+ \global\setbox\arrangedpageA\vbox
+ \ifdim\@@ppheight>\zeropoint to \@@ppheight \fi
+ {\offinterlineskip
+ \ifvoid\arrangedpageA\else
+ \unvbox\arrangedpageA\vss\vskip\@@ppdy\vss
+ \fi
+ \box\arrangedpageB}%
+ \doglobal\newcounter\arrangedpageM
+ \fi
+ \ifnum\arrangedpageN<\arrangedpageT\else
+ \poparrangedpages
+ \fi}
+
+\def\poparrangedpagesXY
+ {\ifnum\arrangedpageN>\zerocount
+ \dontcomplain
+ \paperwidth\arrangedpageX\paperwidth
+ \paperheight \arrangedpageY\paperheight
+ \outputarrangedbox\arrangedpageA
+ \doglobal\newcounter\arrangedpageN
+ \doglobal\newcounter\arrangedpageM
+ \fi}
+
+\installpagearrangement XY
+ {\dosetuparrangement\@@ppnx\@@ppny\@@ppxy\!!zerocount\!!zerocount
+ \pusharrangedpageXY\poparrangedpagesXY\relax}
+
+\beginETEX \dimexpr
+
+\definepapersize
+ [XY]
+ [\c!width=\dimexpr(\dimexpr(\@@ppwidth-\numexpr(\@@ppnx-1)\dimexpr(\@@ppdx))/\@@ppnx),
+ \c!height =\dimexpr(\dimexpr(\@@ppheight -\numexpr(\@@ppny-1)\dimexpr(\@@ppdy))/\@@ppny)]
+
+\setuppaper
+ [\c!width=\dimexpr(\printpaperwidth-2\dimexpr(\@@ppbackspace)),
+ \c!height =\dimexpr(\printpaperheight -2\dimexpr(\@@pptopspace))]
+
+\endETEX
+
+% \definepageshift[test][horizontal][10pt,20pt,30pt,40pt,50pt]
+% \definepageshift[test][vertical] [10pt,20pt,30pt,40pt,50pt]
+%
+% \setuppageshift[test]
+% \setuppageshift[test][test]
+% \setuppageshift[test][none]
+% \setuppageshift[none][test]
+% \setuppageshift[paper][test][test] % arrange only
+% \setuppageshift[paper][test] % arrange only
+% \setuppageshift[print][test][test]
+%
+% \showframe \dorecurse{100}{\input tufte \par}
+
+% #1=name #2=horizontal|vertical #3=shiftlist
+
+\def\definepageshift
+ {\dotripleargument\dodefinepageshift}
+
+\def\dodefinepageshift[#1][#2][#3]%
+ {\setvalue{\??pt#2:#1}{#3}}
+
+\letempty \hpageshifts \newcounter\nofhpageshifts
+\letempty \vpageshifts \newcounter\nofvpageshifts
+
+% \let\shiftprintpagebox\gobbleoneargument
+% \let\shiftpaperpagebox\gobbleoneargument
+
+\def\dogetpageshift#1#2#3% #1=\dimenx #2=\xpageshifts #3=\nofxpageshifts
+ {\ifx#2\empty
+ #1\zeropoint
+ \else
+ \doglobal\increment#3%
+ \getfromcommacommand[#2][#3]%
+ \ifx\commalistelement\empty
+ \globallet#3\!!plusone
+ \getfromcommacommand[#2][#3]%
+ \fi
+ \ifx\commalistelement\empty
+ #1\zeropoint
+ \else
+ #1=\commalistelement
+ \donetrue
+ \fi
+ \fi}
+
+\def\shiftpagebox#1%
+ {\donefalse
+ \dogetpageshift{\dimen0}\hpageshifts\nofhpageshifts
+ \dogetpageshift{\dimen2}\vpageshifts\nofvpageshifts
+ \ifdone % see also layout offsets, maybe \movebox
+ \edef\next{\wd#1\the\wd#1\ht#1\the\ht#1\dp#1\the\dp#1}%
+ \setbox#1\vbox % \forgetall already done
+ {\offinterlineskip\vskip\dimen2\hskip\dimen0\box#1}%
+ \next
+ \fi}
+
+\def\setuppageshift
+ {\dotripleempty\dosetuppageshift}
+
+\def\dosetuppageshift[#1][#2][#3]% page|paper horizontal vertical
+ {\ifthirdargument % paper=arrange
+ \let\hpageshifts\empty
+ \let\vpageshifts\empty
+ \let\shiftprintpagebox\gobbleoneargument
+ \let\shiftpaperpagebox\gobbleoneargument
+ \doifdefined{\??pt\v!horizontal:#2}
+ {\edef\hpageshifts{\getvalue{\??pt\v!horizontal:#2}}}%
+ \doifdefined{\??pt\v!vertical :#3}
+ {\edef\vpageshifts{\getvalue{\??pt\v!vertical :#3}}}%
+ \doif{#1}\v!page{\let\shiftprintpagebox\shiftpagebox}%
+ \doif{#1}\v!paper{\let\shiftpaperpagebox\shiftpagebox}%
+ \else\ifsecondargument
+ \doifinsetelse{#1}{\v!page,\v!paper}
+ {\setuppageshift[#1][#2][#2]}
+ {\setuppageshift[\v!page][#1][#2]}%
+ \else\iffirstargument
+ \setuppageshift[\v!page][#1][#1]%
+ \fi\fi}
+
+%D One can (mis)use this mechanism, in close cooperation
+%D with \PDFTEX\ to arrange pages of already produced files.
+%D
+%D \starttyping
+%D \insertpages[file.pdf][1,3][n=30,width=18cm]
+%D \stoptyping
+%D
+%D The pages are inserted in the text area, and even pages
+%D are repositioned according to the width. In this example
+%D empty pages are added after page 1 and 3.
+%D
+%D Selecting pages can be accomplished by:
+%D
+%D \starttyping
+%D \filterpages[file.pdf][1,3,5][n=30,width=18cm]
+%D \stoptyping
+%D
+%D One may pass \type {odd} or \type {even} instead of a
+%D comma separated list. A third alternative is:
+%D
+%D \starttyping
+%D \copypages[file.pdf][n=30,scale=950]
+%D \stoptyping
+%D
+%D This macros inserts the page, according to the settings
+%D provided.
+
+\def\insertpages
+ {\dotripleempty\doinsertpages}
+
+\def\doinsertpages[#1][#2][#3]%
+ {\doifassignmentelse{#2}
+ {\dodoinsertpages[#1][][#2]}
+ {\dodoinsertpages[#1][#2][#3]}}
+
+\def\dodoinsertpages[#1][#2][#3]%
+ {\bgroup
+ \dontcomplain
+ \getfiguredimensions[#1]%
+ \getparameters[\??ip][\c!n=\noffigurepages,\c!width=\!!zeropoint,#3]%
+ \doifinset0{#2}{\null\page}%
+ \dorecurse\@@ipn
+ {\dofilterpage{#1}\recurselevel
+ \doifinset\recurselevel{#2}{\null\page}}%
+ \egroup}
+
+\def\filterpages
+ {\dotripleempty\dofilterpages}
+
+\def\dofilterpages[#1][#2][#3]% % \noffigurepages not yet supported
+ {\bgroup
+ \dontcomplain
+ \getfiguredimensions[#1]%
+ \getparameters[\??ip][\c!n=\noffigurepages,\c!width=\!!zeropoint,#3]%
+ \doifelse{#2}\v!even
+ {\dorecurse\@@ipn
+ {\ifodd\recurselevel\relax\else\dofilterpage{#1}\recurselevel\fi}}
+ {\doifelse{#2}\v!odd
+ {\dorecurse\@@ipn
+ {\ifodd\recurselevel\relax\dofilterpage{#1}\recurselevel\fi}}
+ {\def\dodocommando##1%
+ {\ifnum##1>\@@ipn\else\dofilterpage{#1}{##1}\fi}%
+ \def\docommando##1%
+ {\dowithrange{##1}\dodocommando}%
+ \processcommalist[#2]\docommando}}%
+ \egroup}
+
+\def\dofilterpage#1#2%
+ {\hbox to \textwidth
+ {\ifdubbelzijdig\ifdim\@@ipwidth>\zeropoint\relax\ifodd\realpageno\else
+ \hfill
+ \def\dowithfigure{\hskip-\@@ipwidth}%
+ \fi\fi\fi
+ \setbox0\hbox
+ {\externalfigure[#1][\c!page=#2,\c!height=\textheight]}%
+ \wd0\zeropoint
+ \box0}
+ \page}
+
+\def\copypages
+ {\dodoubleempty\docopypages}
+
+\def\docopypages[#1][#2]%
+ {\bgroup
+ \getfiguredimensions[#1]%
+ \getparameters[\??ip]
+ [\c!n=\noffigurepages,
+ \c!marking=\v!off,
+ \c!scale=\!!thousand,
+ \c!offset=\!!zeropoint,
+ #2]%
+ \dorecurse\@@ipn
+ {\vbox to \textheight
+ {\hsize\textwidth
+ \scratchdimen\@@ipoffset
+ \centeredbox
+ {\doifelse\@@ipmarking\v!on\cuthbox\hbox
+ {\ifdim\scratchdimen>\zeropoint\relax
+ \advance\vsize -2\scratchdimen
+ \advance\hsize -2\scratchdimen
+ \externalfigure[#1][\c!page=\recurselevel,#2,\c!scale=,\c!factor=\v!max,\c!offset=\v!overlay]%
+ \else
+ \externalfigure[#1][\c!page=\recurselevel,#2,\c!offset=\v!overlay]%
+ \fi}}}
+ \page}
+ \egroup}
+
+%D \macros
+%D {combinepages}
+%D
+%D Yet another way of postprocessing is handles by \type
+%D {\combinepages}. This macro builds a matrix of pages from a
+%D file, for example:
+%D
+%D \starttyping
+%D \setuppapersize
+%D [A4][A4] % or [A4,landscape][A4,landscape]
+%D
+%D \setuplayout
+%D [header=0pt,footer=1cm,
+%D backspace=1cm,topspace=1cm,
+%D width=middle,height=middle]
+%D
+%D \setupfootertexts
+%D [presentation---\currentdate\space---\space\pagenumber]
+%D
+%D \starttext
+%D \combinepages[slides][nx=2,ny=3,frame=on]
+%D \stoptext
+%D \starttyping
+%D
+%D One can influence the way the pages are combined. (This
+%D will be explained some time.)
+
+\def\combinepages
+ {\dodoubleempty\docombinepages}
+
+\def\docombinepages[#1][#2]% a=perpag b=free
+ {\bgroup
+ \dontcomplain
+ \getfiguredimensions[#1]%
+ \getparameters
+ [\??ip]
+ [\c!alternative=\v!a,
+ \c!n=\noffigurepages,\c!nx=2,\c!ny=2,\c!start=1,\c!stop=\!!maxcard,
+ \c!distance=\bodyfontsize,
+ \c!bottom=\vfill,\c!top=\vss,
+ \c!left=\hss,\c!right=\hss,
+ \c!before=\page,\c!after=\page,\c!inbetween=\blank,
+ \c!frame=,\c!background=,\c!backgroundcolor=,
+ #2]%
+ \@@ipbefore
+ %\doglobal\newcounter\combinedpagescounter
+ \globallet\combinedpagescounter\@@ipstart
+ \doifelse\@@ipalternative\v!b\!!doneafalse\!!doneatrue
+ \if!!donea
+ \doloop
+ {\vbox to \textheight
+ {\hsize\textwidth % ? ?
+ \scratchdimen\@@ipdistance
+ \!!widtha\hsize
+ \advance\!!widtha -\@@ipnx\scratchdimen
+ \advance\!!widtha \scratchdimen
+ \divide \!!widtha \@@ipnx
+ \!!heighta\vsize
+ \advance\!!heighta -\@@ipny\scratchdimen
+ \advance\!!heighta \scratchdimen
+ \divide \!!heighta \@@ipny
+ \dorecurse\@@ipny
+ {\hbox to \hsize
+ {\dorecurse\@@ipnx
+ {\vbox to \!!heighta
+ {\hsize\!!widtha
+ \vsize\!!heighta
+ \@@iptop
+ \hbox to \hsize
+ {\@@ipleft
+ \ifnum\combinedpagescounter>\@@ipstop\relax
+ \globallet\@@ipn\!!zerocount
+ \else\ifnum\combinedpagescounter>\@@ipn \else
+ \externalfigure[#1]
+ [\c!object=\v!no,
+ \c!page=\combinedpagescounter,
+ \c!factor=\v!max,
+ \c!background=\@@ipbackground,
+ \c!backgroundcolor=\@@ipbackgroundcolor,
+ \c!frame=\@@ipframe]%
+ \fi\fi
+ \@@ipright}
+ \@@ipbottom}%
+ \doglobal\increment\combinedpagescounter
+ \hfil}%
+ \hfilneg}
+ \vfil}%
+ \vfilneg}%
+ \page
+ \ifnum\combinedpagescounter>\@@ipn \exitloop\fi}
+ \else
+ \doloop
+ {\startbaselinecorrection
+ \scratchdimen\@@ipdistance
+ \!!widtha\hsize
+ \advance\!!widtha -\@@ipnx\scratchdimen
+ \advance\!!widtha \scratchdimen
+ \divide \!!widtha \@@ipnx
+ \hbox to \hsize
+ {\dorecurse\@@ipnx
+ {\doglobal\increment\combinedpagescounter
+ \ifnum\combinedpagescounter>\@@ipn \else
+ \expanded{\externalfigure[#1]
+ [\c!page=\combinedpagescounter,
+ \c!width=\the\!!widtha,% todo \freezedimenmacro
+ \c!background=\@@ipbackground,
+ \c!backgroundcolor=\@@ipbackgroundcolor,
+ \c!frame=\@@ipframe]}%
+ \hfill
+ \fi}\hfillneg}%
+ \stopbaselinecorrection
+ \ifnum\combinedpagescounter<\@@ipn\relax
+ \@@ipinbetween
+ \else
+ \exitloop
+ \fi}
+ \fi
+ \@@ipafter
+ \egroup}
+
+%D \macros
+%D {setuppagecomment,startpagecomment}
+%D
+%D This command is not yet documented. Usage:
+%D
+%D \starttyping
+%D \setuppagecomment[state=start,location=right]
+%D
+%D \startpagecomment
+%D \input knuth
+%D \stoppagecomment
+%D \stoptyping
+
+\def\setuppagecomment
+ {\dosingleempty\dosetuppagecomment}
+
+\def\dosetuppagecomment[#1]%
+ {\getparameters[\??pc][#1]%
+ \doifelse\@@pcstate\v!start
+ {\doifinsetelse\@@pclocation{\v!bottom,\v!top}
+ {\setuppapersize[\c!left=\hskip\@@pcoffset]%
+ \adddimenmacro\paperheight\@@pcoffset\@@pcoffset\@@pcdistance\@@pcheight\to\@@pcpaperheight
+ \adddimenmacro\paperwidth\@@pcoffset\@@pcoffset\to\@@pcpaperwidth
+ \defineoverlay[\v!pagecomment][\placepagecommentTB]}
+ {\setuppapersize[\c!top=\vskip\@@pcoffset]%
+ \adddimenmacro\paperheight\@@pcoffset\@@pcoffset\to\@@pcpaperheight
+ \adddimenmacro\paperwidth\@@pcoffset\@@pcoffset\@@pcdistance\@@pcwidth\to\@@pcpaperwidth
+ \defineoverlay[\v!pagecomment][\placepagecommentLR]}%
+ \processaction
+ [\@@pclocation]
+ [ \v!bottom=>{\setuppapersize[\c!bottom =\vss,\c!top =\vskip\@@pcoffset]},
+ \v!top=>{\setuppapersize[\c!top =\vss,\c!bottom =\vskip\@@pcoffset]},
+ \v!left=>{\setuppapersize[\c!left =\hss,\c!right=\hskip\@@pcoffset]},
+ \v!right=>{\setuppapersize[\c!right=\hss,\c!left =\hskip\@@pcoffset]}]%
+ \definepapersize
+ [\v!pagecomment]
+ [\c!height=\@@pcpaperheight,
+ \c!width=\@@pcpaperwidth]%
+ \let\@@pcprintpapersize\printpapersize
+ \setuppapersize[\papersize][\v!pagecomment]%
+ \setupbackgrounds[\v!paper][\c!background=\v!pagecomment]}
+ {\doif\@@pcstate\v!stop % else initialization invokes backgrounds
+ {% this should be tested first
+ % \expanded{\setuppapersize[\papersize][\@@pcprintpapersize]}%
+ \setupbackgrounds[\v!paper][\c!background=]}}}
+
+\def\@@pcprintpapersize{\printpapersize}
+
+\def\placepagecommentTB
+ {\vbox to \printpaperheight
+ {\forgetall
+ \hsize\printpaperwidth
+ \vskip\@@pcoffset
+ \doifelse\@@pclocation\v!bottom{\vskip\paperheight\vskip\@@pcdistance}\vss
+ \hskip\@@pcoffset
+ \vbox to \@@pcheight
+ {\forgetall
+ \hsize\paperwidth
+ \ifpagecomment
+ \getbuffer[\v!pagecomment]%
+ \global\pagecommentfalse
+ \fi}%
+ \hfill
+ \doifelse\@@pclocation\v!bottom\vss{\vskip\paperheight\vskip\@@pcdistance}
+ \vskip\@@pcoffset}}
+
+\def\placepagecommentLR
+ {\hbox to \printpaperwidth
+ {\hskip\@@pcoffset
+ \doifelse\@@pclocation\v!right{\hskip\paperwidth\hskip\@@pcdistance}\hss
+ \vbox to \printpaperheight
+ {\forgetall
+ \vskip\@@pcoffset
+ \hsize\@@pcwidth
+ \ifpagecomment
+ \getbuffer[\v!pagecomment]%
+ \global\pagecommentfalse
+ \fi
+ \vss}%
+ \doifelse\@@pclocation\v!right\hss{\hskip\paperwidth\hskip\@@pcdistance}%
+ \hskip\@@pcoffset}}
+
+\newif\ifpagecomment
+
+\setvalue{\e!start\v!pagecomment}%
+ {\global\pagecommenttrue
+ \dostartbuffer[\v!pagecomment][\e!start\v!pagecomment][\e!stop\v!pagecomment]}
+
+\setuppagecomment
+ [\c!state=, % \v!stop would invoke background calculation
+ \c!location=\v!bottom,
+ \c!offset=.5cm,
+ \c!distance=.5cm,
+ \c!height=5cm,
+ \c!width=10cm]
+
+% This macro cuts a page into n parts that can be pasted
+% together.
+
+\def\slicepages
+ {\dotripleempty\doslicepages}
+
+\def\doslicepages[#1][#2][#3]%
+ {\ifthirdargument
+ \dodoslicepages[#1][#2][#3]%
+ \else
+ \dodoslicepages[#1][#2][#2]%
+ \fi}
+
+\newcounter\slicedpagenumber
+
+\def\dodoslicepages[#1][#2][#3]%
+ {\bgroup
+ \dontcomplain
+ \globallet\slicedpagenumber\!!zerocount
+ \getfiguredimensions[#1]
+ \getparameters
+ [\??ip]
+ [\c!n=1,
+ \c!offset=\!!zeropoint,
+ \c!hoffset=\!!zeropoint,\c!voffset=\!!zeropoint,
+ \c!width=\figurewidth,\c!height=\figureheight,#2]
+ \ifnum\@@ipn>\zerocount
+ \definepapersize
+ [\s!dummy][\c!height=\@@ipheight,\c!width=\@@ipwidth]
+ \setuppapersize
+ [\s!dummy][\s!dummy]
+ \setuplayout
+ [\c!backspace=\!!zeropoint,\c!topspace=\!!zeropoint,
+ \c!height=\v!middle,\c!width=\v!middle,
+ \c!textdistance=\!!zeropoint,
+ \c!header=\!!zeropoint,\c!footer=\!!zeropoint]
+ \fi
+ \dorecurse\noffigurepages
+ {\global\let\slicedpagenumber\recurselevel
+ \ifnum\@@ipn>\plusone
+ \dorecurse\@@ipn
+ {\let\xslice\recurselevel
+ \dorecurse\@@ipn
+ {\let\yslice\recurselevel
+ \clip
+ [\c!nx=\@@ipn,\c!ny=\@@ipn,\c!x=\xslice,\c!y=\yslice]
+ {\scale
+ [\c!scale=\@@ipn000]
+ {\externalfigure[#1][\c!page=\slicedpagenumber]}}
+ \page}}
+ \else
+ \ifodd\slicedpagenumber\relax
+ \getparameters[\??ip][#2]
+ \else
+ \getparameters[\??ip][#3]
+ \fi
+ \hskip\@@ipoffset
+ \clip
+ [\c!hoffset=\@@iphoffset,\c!voffset=\@@ipvoffset,
+ \c!height=\@@ipheight,\c!width=\@@ipwidth]
+ {\externalfigure[#1][\c!page=\slicedpagenumber]}
+ \page
+ \fi}
+ \egroup}
+
+% \starttext \slicepages[slice1.pdf][n=3] \stoptext
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-ini.tex b/Master/texmf-dist/tex/context/base/page-ini.tex
new file mode 100644
index 00000000000..7c1ff78d3e5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-ini.tex
@@ -0,0 +1,2004 @@
+%D \module
+%D [ file=page-ini,
+%D version=2000.10.20,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Initializations,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Initializations}
+
+%D This class of modules implements the output routines and
+%D floating body support. Although the modules are relatively
+%D new, the code herein is rather old. This reordering was
+%D needed when column sets were implemented and sharing code
+%D started to make sense.
+
+%D The history shows from the code, since both column
+%D mechanism use a different way of looping over columns.
+
+\unprotect
+
+% message will be distributed
+
+\startmessages dutch library: systems
+ title: systeem
+ 1: laden hulpfile uitgesteld (typemode)
+ 2: -- geladen
+% 3: probeer LaTeX eens
+ 4: commando -- is al gedefinieerd
+ 5: module -- geladen
+ 6: geen module -- gevonden
+ 7: module -- reeds geladen
+ 8: nieuwe versie hulpfile, tweede run nodig
+ 9: -- niet gevonden/geplaatst
+ 10: gebruik geen em in --
+ 11: aanmaken basale hulpfile
+ 12: de hulpfile is niet gesorteerd, gebruik texutil
+ 13: markering -- gedefinieerd --
+ 14: geforceerde paginaovergang in lijst voor --
+ 15: wegschrijven buffer --
+ 16: inlezen buffer --
+ 17: verbatim inlezen buffer --
+ 18: synoniem -- -- bestaat niet
+ 19: betekenissen (synoniemen) van -- geladen
+ 20: betekenissen (sorteren) van -- geladen
+ 21: de hulpfile is niet geladen
+ 22: gebruik een goede hulpfile
+ 23: -- gearrangeerd op --
+ 24: Plaatsblokken
+ 25: Verwijzingen
+ 26: Registers
+ 27: Versie
+\stopmessages
+
+\startmessages english library: systems
+ title: system
+ 1: loading utility-file postponed (typemode)
+ 2: -- loaded
+% 3: try LaTeX
+ 4: command -- is already defined
+ 5: module -- loaded
+ 6: module -- not found
+ 7: module -- already loaded
+ 8: new version of utility file, second pass needed
+ 9: -- not found/processed
+ 10: don't use em in --
+ 11: building simple util
+ 12: the utility-file is not sorted, use texutil
+ 13: mark -- defined --
+ 14: forced newpage in list at --
+ 15: saving buffer --
+ 16: typesetting buffer --
+ 17: typesetting verbatim buffer --
+ 18: synonym -- -- does not exist
+ 19: meaning (synonyms) of -- loaded
+ 20: meaning (sorts) of -- loaded
+ 21: no utility data is loaded
+ 22: use a valid utilityfile
+ 23: -- arranged at --
+ 24: Floatblocks
+ 25: References
+ 26: Registers
+ 27: Version
+\stopmessages
+
+\startmessages german library: systems
+ title: system
+ 1: Laden der Hilfsdatei verschoben (tippenmodus)
+ 2: -- geladen
+% 3: Versuche LaTeX
+ 4: Befehl -- ist bereits definiert
+ 5: Modul -- geladen
+ 6: Modul -- gefunden
+ 7: Modul -- bereits geladen
+ 8: Neue Version der Hilfsdatei, zweiter Durchlauf benoetigt
+ 9: -- nicht gefunden/verarbeitet
+ 10: Benutzte kein em in --
+ 11: Erstelle einfache Hilfdatei
+ 12: Die Hilfdatei ist nicht sortiert, verwende texutil
+ 13: Beschriftung -- definiert --
+ 14: Erzwungendes Seitenumbruch in Liste bei --
+ 15: Speichere Buffer --
+ 16: Setzte Buffer --
+ 17: Setzte tippen-Buffer --
+ 18: Synonym -- -- existiert nicht
+ 19: Bedeutung (synonyme) von -- geladen
+ 20: Bedeutung (sortieren) von -- geladen
+ 21: Die Hilfsdatei ist nicht geladen
+ 22: Benoetige gueltige Hilfsdateie
+ 23: -- angeordnet auf --
+ 24: Fliessbloecke
+ 25: Referenzen
+ 26: Register
+ 27: Version
+\stopmessages
+
+\startmessages czech library: systems
+ title: system
+ 1: nacteni pomocneho souboru odlozeno (typemode)
+ 2: -- nacteno
+% 3: zkuste LaTeX
+ 4: prikaz -- je jiz definovan
+ 5: makra z -- nactena
+ 6: zadna makra v -- nenalezena
+ 7: makra z -- jsou jiz nactena
+ 8: nova verze pomocneho souboru, je treba druheho behu
+ 9: -- nenalezeno/nezpracovano
+ 10: nepouzivejte em v --
+ 11: vytvarim jednoduchy pomocny soubor
+ 12: pomosny soubor neni setriden, pouzijte texutil
+ 13: znacka -- definovana --
+ 14: vynucena nova stranka v seznamu na --
+ 15: uklada se buffer --
+ 16: sazi se buffer --
+ 17: sazi se doslovny (verbatim) buffer --
+ 18: synonymum -- -- neexistuje
+ 19: vyznam (synonyma) -- nacten
+ 20: vyznam (trideni) -- nacten
+ 21: pomocny soubor necten
+ 22: pouzijte platny pomocny soubor
+ 23: -- upraveno na --
+ 24: plovouci bloky
+ 25: reference
+ 26: registry
+ 27: verze
+\stopmessages
+
+\startmessages italian library: systems
+ title: sistema
+ 1: caricamento dei file supplementari posticipato (typemode)
+ 2: -- caricato
+% 3: provare LaTeX
+ 4: comando -- già definito
+ 5: macro del modulo -- caricate
+ 6: nessuna macro trovata nel modulo --
+ 7: macro del modulo -- già caricate
+ 8: nuova versione del file supplementare, seconda passata necessaria
+ 9: -- non trovato/elaborato
+ 10: non usare em in --
+ 11: costruzione di un semplice supplemento
+ 12: file di supplemento non ordinato, usare texutil
+ 13: marcatura -- definita --
+ 14: nuova pagina obbligata in lista a --
+ 15: salvataggio del buffer --
+ 16: composizione del buffer --
+ 17: composizione verbatim del buffer --
+ 18: sinonimo -- -- non esistente
+ 19: significato (sinonimi) di -- caricato
+ 20: significato (specie) di -- caricato
+ 21: nessuna informazione supplementare caricata
+ 22: usare un file supplementare valido
+ 23: -- sistemato a --
+ 24: Oggetti mobili
+ 25: Riferimenti
+ 26: Registri
+ 27: Versione
+\stopmessages
+
+\startmessages norwegian library: systems
+ title: system
+ 1: innlesning av hjelpefila utsatt (typemode)
+ 2: -- er lest inn
+% 3: forsøker LaTeX
+ 4: kommando -- er allerede definert
+ 5: makroene i modul -- er lest inn
+ 6: ingen makroer funnet i modul ---
+ 7: makroene i modul -- er allerede lest inn
+ 8: ny versjon av hjelpefil, andre gjennomkjøring nødvendig
+ 9: -- ikke funnet/behandlet
+ 10: ikke bruk em i --
+ 11: lager enkel hjelpefil
+ 12: hjelpefila er ikke sortert, bruk texutil
+ 13: markering -- definert --
+ 14: tvunget sideskift i liste ved --
+ 15: lagrer Buffer --
+ 16: tegnsetter buffer --
+ 17: tegnsetter verbatim-buffer --
+ 18: synonym -- -- eksisterer ikke
+ 19: betydning (synonymer) av -- er lest inn
+ 20: betydning (sorterer) av -- er lest inn
+ 21: hjelpefila er ikke lest inn
+ 22: bruk en gyldig hjelpefil
+ 23: -- arrangert på --
+ 24: Flytblokker
+ 25: Referanser
+ 26: Registere
+ 27: Versjon
+\stopmessages
+
+\startmessages romanian library: systems
+ title: sistem
+ 1: se incarca utilitarul-fisierul este amanat (typemode)
+ 2: -- s-a incarcat
+% 3: incercati LaTeX
+ 4: comanda -- este deja definita
+ 5: macro-urile din modulul -- s-au incarcat
+ 6: nu s-au gasit macro-uri in modulul --
+ 7: macro-urile din modulul -- s-au incarcat deja
+ 8: o noua versiune de fisier utilitar, este necesara o noua trecere
+ 9: -- nu este gasit/procesat
+ 10: nu folositi em in --
+ 11: se creeaza un utilitar simplu
+ 12: fisierul utilitar nu este sortat, folositi texutil
+ 13: marcajul -- definit --
+ 14: s-a fortat trecere pa pagina noua in lista la --
+ 15: buffer salvat --
+ 16: buffer-ul -- s-a cules
+ 17: se culege buffer-ul verbatim --
+ 18: sinonimul -- -- nu exista
+ 19: intelesul (sinonimele) pentru -- incarcat
+ 20: intelesul (ordinea) pentru -- incarcat
+ 21: nici o data utilitara nu este incarcata
+ 22: folositi un fisier utilitar valid
+ 23: -- aranjat la --
+ 24: Blocuri
+ 25: Referinte
+ 26: Registri
+ 27: Versiune
+\stopmessages
+
+\startmessages dutch library: layouts
+ title: layout
+ 1: teksthoogte aangepast met -- op pagina --
+ 2: -- maal uitgestelde tekst tussengevoegd
+ 3: -- maal tekst plaatsen uitstellen
+ 4: margeblokken actief
+ 5: margeblokken inactief
+ 6: subpagina reeks -- verwerkt (aantal --)
+% 7: beeldmerken berekenen
+% 8: achtergronden berekenen
+ 10: -- en -- tellen niet op tot 1.0
+ 11: interlinie -- niet toegestaan in gridmode
+\stopmessages
+
+\startmessages english library: layouts
+ title: layout
+ 1: textheight adapted with -- at page --
+ 2: -- times postponed text placed
+ 3: -- times text postponed
+ 4: marginblocks active
+ 5: marginblocks inactive
+ 6: subpage set -- processed (size --)
+% 7: calculating logospace
+% 8: calculating backgrounds
+ 10: -- and -- don't add up to 1.0
+ 11: spacing -- not permitted in gridmode
+\stopmessages
+
+\startmessages german library: layouts
+ title: Layout
+ 1: Texthoehe angepasst mit -- auf Seite --
+ 2: -- mal verschobener Text plaziert
+ 3: -- mal Text verschoben
+ 4: marginalbloecke aktiv
+ 5: marginalbloecke inaktiv
+ 6: Unterseitenfolge -- verarbeitet (Groesse --)
+% 7: berechne Platz des Logo
+% 8: berechne Hintergrund
+ 10: -- und -- ergeben zusammen nicht 1.0
+ 11: Zwischenraum -- nicht im Grittermoduserlau
+\stopmessages
+
+\startmessages czech library: layouts
+ title: layout
+ 1: vyska textu prizpusobena s -- na strane --
+ 2: -- krat odlozeny text umisten
+ 3: -- krat text odlozen
+ 4: okrajove bloky aktivni
+ 5: okrajove bloky neaktivni
+ 6: sada stran -- zpracovana (velikost --)
+% 7: pocita se misto pro logo
+% 8: pocita se pozadi
+ 10: -- a -- nedava dohromady 1.0
+ 11: svisla mezera -- neni povolena v pevnem radkovem rejstriku
+\stopmessages
+
+\startmessages italian library: layouts
+ title: layout
+ 1: altezza del testo adattata con -- a pagina --
+ 2: posizionato testo posticipato -- volte
+ 3: testo posticipato -- volte
+ 4: blocchi in margine attivi
+ 5: blocchi in margine inattivi
+ 6: gruppo di sottopagine -- elaborato (dimensione --)
+% 7: calcolo dello spazio per logo
+% 8: calcolo dello sfondo
+ 10: -- e -- non sommano a 1.0
+ 11: spaziatura -- non permessa in modo griglia
+\stopmessages
+
+\startmessages norwegian library: layouts
+ title: layout
+ 1: teksthøyde tilpasset med -- på side --
+ 2: -- ganger forskjøvet tekst plassert
+ 3: -- ganger tekst forskjøvet
+ 4: margblokker aktive
+ 5: margblokker inaktive
+ 6: delside sett -- behandlet (størrelse --)
+% 7: beregner plass for logo
+% 8: beregner bakgrunn
+ 10: -- og -- er ikke 1.0 til sammen
+ 11: mellomrom -- ikke tillatt i gridmodus
+\stopmessages
+
+\startmessages romanian library: layouts
+ title: aranjamente
+ 1: textheight adaptat cu -- la pagina --
+ 2: textul amanat de -- ori a fost plasat
+ 3: textul amanat de -- ori
+ 4: blocuri marginale active
+ 5: blocuri marginale inactive
+ 6: setul -- de subpagini procesat (dimensiunea --)
+% 7: se calculeaza spatiul pentru logo
+% 8: se calculeaza fundalurile
+ 10: -- si -- nu se adauga pana la 1.0
+ 11: spatierea -- nu este permisa in gridmode
+\stopmessages
+
+\def\m!otr{otr}
+
+\chardef\normalpagebox=255
+
+\newbox\pagebox
+
+\ifx\recalculatelayout\undefined
+
+ \let \recalculatelayout \relax
+
+\fi
+
+\ifx\recalculatelogos\undefined
+
+ \let \recalculatelogos \relax
+ \let \addlogobackground \gobbleoneargument % <box>
+
+\fi
+
+\ifx\recalculatebackgrounds\undefined
+
+ \let \recalculatebackgrounds \relax
+ \let \addmainbackground \gobbleoneargument % <box>
+ \let \addtextbackground \gobbleoneargument % <box>
+ \let \addpagebackground \gobbleoneargument % <box>
+ \let \addprintbackground \gobbleoneargument % <box>
+ \let \addstatusinfo \gobbleoneargument % <box>
+
+\fi
+
+\ifx\realpageno\undefined
+
+ \countdef\realpageno\zerocount \realpageno\plusone
+
+\fi
+
+\ifx\realfolio\undefined
+
+ \def\realfolio{\the\realpageno}
+
+\fi
+
+\newcount\nofshipouts
+
+\appendtoks
+ \global\advance\nofshipouts\plusone
+\to \everyaftershipout
+
+% principle:
+%
+% multiple otr's
+%
+% (1) single column, simple routine (old one)
+% (2) multi column, collect and split routine (old one)
+% (3) multi column, page by page (new one, needed for taco)
+% (4) single column, spread handling (for fun)
+% (5) multi column, page by page, spread handling (as challenge)
+%
+% common components
+%
+% (1) float placement
+% (2) float flushing
+% (3) page body building
+% (4) ...
+%
+% ort
+%
+% + balancing
+% - mixed / one / multi / balancetofit
+% + backgrounds
+% + pre / post
+% + distances / heights
+% + ragged / baseline / normal
+% - pos sync
+% - last page
+%
+% - itemize / subtexts -> old mechanism
+%
+% floats
+%
+% - top / bottom / side / page / column / spead
+% - flush / packed flush / current page / next page / area
+%
+% footnotes
+%
+% + carry over pre column / local to column
+% + last column / pre last column / each column
+% - multiple classes
+% - area / page / end
+%
+% areas
+%
+% - top / bottom / mid in spread
+%
+% IMPORTANT
+%
+% switchtobodyfont in between ivm top
+
+% floats:
+%
+% tricky in balancing mode, a la huidige multi columns
+
+\startmessages dutch library: columns
+ title: kolommen
+ 1: maximaal -- kolommen
+ 2: gebruik eventueel \string\filbreak
+ 3: probleempje, probeer [balanceren=nee]
+ 4: plaatsblok boven nog niet mogelijk
+ 5: plaatsblok onder nog niet mogelijk
+ 6: -- plaatsblok(en) opgeschort
+ 7: balanceren afgebroken na 100 stappen
+ 8: gebalanceerd in -- stap(pen)
+ 9: uitlijnen controleren!
+ 10: (minder dan) 1 regel over
+ 11: plaatsblok te breed voor kolom
+ 12: plaatsblok verplaatst naar volgende kolom / --
+ 13: breed figuur geplaatst boven kolommen
+\stopmessages
+
+\startmessages english library: columns
+ title: columns
+ 1: only -- columns possible
+ 2: use \string\filbreak\space as alternative
+ 3: problems, disable balancing
+ 4: top float not yet supported
+ 5: bottom float not yet supported
+ 6: -- float(s) postponed
+ 7: balancing aborted after 100 steps
+ 8: balanced in -- step(s)
+ 9: check raggedness
+ 10: (less than) 1 line left
+ 11: float to wide for column
+ 12: float moved to next column / --
+ 13: wide float moved to top of columns
+\stopmessages
+
+\startmessages german library: columns
+ title: Spalten
+ 1: nur -- Spalten moeglich
+ 2: benutzte \string\filbreak\space als Alternative
+ 3: Problem, verwende [ausgleich=nein]
+ 4: Gleitobjekt oben ncoh nicht unterstuetzt
+ 5: Gleitobjekt unten ncoh nicht unterstuetzt
+ 6: -- Gleitobjekt(e) verschoben
+ 7: ausgleich nach 100 Schritten abgebrocheb
+ 8: ausgeglichen nach -- Schritt(en)
+ 9: Ausrichtung ueberpruefen
+ 10: (weniger als) 1 Zeile uebrig
+ 11: Gleitobjekt zu breit fuer Spalte
+ 12: Gleitobjekt in naechste Zeile verschoben / --
+ 13: breites Gleitobjekt an den Anfang der Spalten verschoben
+\stopmessages
+
+\startmessages czech library: columns
+ title: sloupce
+ 1: je mozno pouze -- sloupcu
+ 2: pouzijte \string\filbreak\space jako alternativu
+ 3: problem, vypina se vyvazovani
+ 4: horni plovouci objekt jeste neni podporovan
+ 5: spodni plovouci objekt jeste neni podporovan
+ 6: -- plovouci objekt(y) odlozeny
+ 7: vyvazovani ukonceno po 100 krocich
+ 8: vyvazeno v -- krocich
+ 9: kontrola nerovnost
+ 10: zbyl (mene nez) 1 radek
+ 11: plovouci objekt je pro sloupec prilis siroky
+ 12: plovouci objekt je presunut do nasledujiciho sloupce / --
+ 13: siroky plovouci objekt je presunut nad sloupce
+\stopmessages
+
+\startmessages italian library: columns
+ title: colonne
+ 1: solo -- colonne possibili
+ 2: in alternativa, usare \string\filbreak
+ 3: problemi, disabilitare il bilanciamento
+ 4: float in cima non ancora supportato
+ 5: float in fondo non ancora supportato
+ 6: -- float(s) posticipate
+ 7: bilanciamento annullato dopo 100 passi
+ 8: bilanciamento in -- passo/i
+ 9: controllare seghettamento
+ 10: (meno di) una riga rimasta
+ 11: oggetto mobile troppo ampio per la colonna
+ 12: oggetto mobile spostata alla colonna successiva / --
+ 13: oggetto mobile ampio spostato sopra le colonne
+\stopmessages
+
+\startmessages norwegian library: columns
+ title: kolonner
+ 1: maksimalt -- kolonner
+ 2: bruk \string\filbreak\space som et alternativ
+ 3: problemer, slår av balansering
+ 4: flytblokker øverst er ikke støttet enda
+ 5: flytblokker nedert er ikke støttet enda
+ 6: -- flytblokk forskjøvet
+ 7: balansering avbrutt etter 100 iterasjoner
+ 8: balansert etter -- iterasjoner
+ 9: kontroller tekstlayout!
+ 10: (mindre enn) 1 linje igjen
+ 11: flytblokk for bredt for kolonna
+ 12: flytblokk forskjøvet til neste kolonne / --
+ 13: bred flytblokk forksjøvet til toppen av kolonnene
+\stopmessages
+
+\startmessages romanian library: columns
+ title: coloane
+ 1: este posibil numai -- coloane
+ 2: folositi \string\filbreak\space ca alternativa
+ 3: probleme, se dezactiveaza alinierea
+ 4: cadrele top (top float) nu sunt inca suportate
+ 5: cadrele bottom (bottom float) nu sunt inca suportate
+ 6: -- blocurile sunt amanate
+ 7: alinierea este oprita dupa 100 de incercari
+ 8: aliniat in -- pas(i)
+ 9: verificat alinierea
+ 10: a mai ramas (mai putin de) 1 linie
+ 11: blocul este prea lat pentru coloana
+ 12: blocul este mutat pe urmatoarea coloana / --
+ 13: blocul lat este mutat in partea de sus a coloanelor
+\stopmessages
+
+\ifx\dosetuplayout\undefined % overloaded in page-lay !
+
+ \def\setuplayout{\dodoubleempty\getparameters[\??ly]}
+
+\fi
+
+%D In case we're not running \ETEX, we need to bypass a
+%D couple of primitives.
+
+\beginTEX \...discards
+
+ \chardef \savingvdiscards \zerocount
+ \let \splitdiscards \relax
+ \let \pagediscards \relax
+
+\endTEX
+
+% ONE = single column
+% MUL = multi column
+% SET = columns sets
+
+\def\@@OTR{OTR}
+
+\let\OTRdefault\empty
+
+\beginETEX \ifcsname
+
+\def\OTRcommand#1%
+ {\csname\@@OTR
+ \ifcsname\@@OTR\OTRidentifier\strippedcsname#1\endcsname
+ \OTRidentifier
+ \else\ifcsname\@@OTR\OTRdefault\strippedcsname#1\endcsname % fallback
+ \OTRdefault
+ \fi\fi
+ \strippedcsname#1\endcsname}
+
+\endETEX
+
+\beginTEX
+
+\def\OTRcommand#1%
+ {\csname\@@OTR
+ \@EA\ifx\csname\@@OTR\OTRidentifier\strippedcsname#1\endcsname\relax
+ \@EA\ifx\csname\@@OTR\OTRdefault\strippedcsname#1\endcsname\relax % fallback
+ \else
+ \OTRdefault
+ \fi
+ \else
+ \OTRidentifier
+ \fi
+ \strippedcsname#1\endcsname}
+
+\endTEX
+
+% obsolete
+
+\def\installotr#1% andere naam, beter \connectotr of zo
+ {\def\OTRidentifier{#1}}
+
+\def\activateotr#1#2%
+ {\def\OTRidentifier{#1}%
+ \def\OTRdefault {#2}}
+
+%D The initialization of the \type {\hsize} and \type {\vsize}
+%D depends on the OTR used.
+
+\def\setvsize {\OTRcommand\setvsize}
+\def\sethsize {\OTRcommand\sethsize}
+\def\finalsidefloatoutput {\OTRcommand\finalsidefloatoutput}
+\def\dopagecontents {\OTRcommand\dopagecontents}
+
+\def\dosettopinserts {\OTRcommand\dosettopinserts}
+\def\dosetbotinserts {\OTRcommand\dosetbotinserts}
+\def\dotopinsertions {\OTRcommand\dotopinsertions}
+\def\dobotinsertions {\OTRcommand\dobotinsertions}
+\def\dosetbothinserts {\OTRcommand\dosetbothinserts}
+
+\def\doflushfloats {\OTRcommand\doflushfloats}
+\def\flushfloatbox {\OTRcommand\flushfloatbox}
+\def\docheckiffloatfits {\OTRcommand\docheckiffloatfits}
+
+\def\someherefloat {\OTRcommand\someherefloat}
+\def\somefixdfloat {\OTRcommand\somefixdfloat}
+\def\somepagefloat {\OTRcommand\somepagefloat}
+\def\sometopsfloat {\OTRcommand\sometopsfloat}
+\def\somebotsfloat {\OTRcommand\somebotsfloat}
+\def\somesidefloat {\OTRcommand\somesidefloat}
+
+\def\flushsavedfloats {\OTRcommand\flushsavedfloats}
+
+\def\synchronizehsize {\OTRcommand\synchronizehsize}
+
+\def\gotonextpage {\OTRcommand\gotonextpage }
+\def\gotonextpageX{\OTRcommand\gotonextpageX} % will become obsolete
+
+% beter een \installotr#1 met #1 = macro en auto test
+
+\newif \iftraceotr
+\newif \ifinotr
+\newtoks \mainoutput
+\newcount\otrlevel
+
+% When issuing two \par\penalty-\@M's, only the first
+% triggers the otr; obscure feature or optimization?
+
+\def\outputcounter{-100010} % -10010
+
+\def\doinvokeoutput
+ {\iftraceotr
+ \expandafter\dodotracedoutput
+ \else
+ \expandafter\dodoinvokeoutput
+ \fi}
+
+\def\outputmessage#1#2#3%
+ {\iftraceotr\writestatus\m!otr{#1 #2 \number#3}\fi}
+
+\def\dodoinvokeoutput#1%
+ {\outputmessage+{special}{#1}%
+ \bgroup\par\penalty#1\relax\egroup
+ \outputmessage-{special}{#1}}
+
+\def\dodotracedoutput#1%
+ {\outputmessage+{traced}{#1/\the\outputpenalty}%
+ \writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}%
+ \dodoinvokeoutput{#1}%
+ \writestatus\m!otr{c:\number\mofcolumns,v:\the\vsize,g:\the\pagegoal,t:\the\pagetotal}%
+ \outputmessage-{traced}{#1/\the\outputpenalty}}
+
+\def\installoutput#1#2% \invoke \action
+ {\decrement\outputcounter
+ \edef#1{\noexpand\doinvokeoutput{\outputcounter}}%
+ \setvalue{\@@OTR\outputcounter}{#2}}
+
+\def\invokeoutputroutine
+ {\outputmessage+{trying}\outputpenalty
+ \executeifdefined{\@@OTR\the\outputpenalty}\dodonormaloutput
+ \outputmessage-{trying}\outputpenalty}
+
+\def\dodonormaloutput
+ {\outputmessage+{normal}\outputpenalty
+ \the\OTRcommand\output
+ \outputmessage-{normal}\outputpenalty}
+
+\mainoutput{\invokeoutputroutine} \output{\inotrtrue\the\mainoutput}
+
+\installoutput\synchronizeoutput % maybe add pagediscards
+ {\ifvoid\normalpagebox\else\unvbox\normalpagebox\fi}
+
+\installoutput\discardpage
+ {\setbox\scratchbox\box\normalpagebox}
+
+%D In order to force consistent use of variables, we
+%D predefine a lot of them here.
+
+%D The next two registers can be used to store pre column
+%D material as well as footnotes or so.
+
+\newbox\precolumnbox \newdimen\precolumnboxheight
+\newbox\postcolumnbox \newdimen\postcolumnboxheight
+
+%D We reserve a counter for the number of columns as well as
+%D the current column. Both are not to be changed by users!
+
+\newcount\nofcolumns \nofcolumns = 1
+\newcount\mofcolumns \mofcolumns = 1
+
+\chardef\maxnofcolumns = 50
+\chardef\allocatednofcolumns = 0
+
+%D The next dimensions reports the final column height
+
+\newdimen\finalcolumnheights
+\newcount\finalcolumnlines
+
+%D During initialization the temporary boxes are allocated.
+%D This enables us to use as much columns as we want, without
+%D exhausting the pool of boxes too fast. We could have packed
+%D them in one box, but we've got enough boxes.
+%D
+%D Two sets of boxes are declared, the txtboxes are used for
+%D the text, the topboxes are for moved column floats.
+
+\def\@col@{@col@}
+
+\def\initializecolumns#1%
+ {\ifnum#1>\maxnofcolumns
+ \showmessage\m!columns1\maxnofcolumns
+ \nofcolumns\maxnofcolumns
+ \else
+ \nofcolumns#1\relax
+ \fi
+ \ifnum\nofcolumns>\allocatednofcolumns
+ \dorecurse\nofcolumns
+ {\ifnum\recurselevel>\allocatednofcolumns\relax
+ % \newbox\next \letgvalue{\@col@-\recurselevel-t}=\next
+ \@EA\newbox\csname\@col@-\recurselevel-t\endcsname % text
+ \@EA\newbox\csname\@col@-\recurselevel-f\endcsname % foot
+ \@EA\newbox\csname\@col@-\recurselevel-h\endcsname % top insert
+ \@EA\newbox\csname\@col@-\recurselevel-l\endcsname % top insert
+ \fi}%
+ \global\chardef\allocatednofcolumns=\nofcolumns
+ \fi}
+
+\def\firstcolumnbox {\columntextbox\plusone}
+\def\currentcolumnbox {\columntextbox\mofcolumns}
+\def\lastcolumnbox {\columntextbox\nofcolumns}
+
+\def\firsttopcolumnbox {\columntopbox \plusone}
+\def\currenttopcolumnbox{\columntopbox \mofcolumns}
+\def\lasttopcolumnbox {\columntopbox \nofcolumns}
+
+\def\columntextbox#1{\csname\@col@-\number#1-t\endcsname}
+\def\columnfootbox#1{\csname\@col@-\number#1-f\endcsname}
+\def\columntopbox #1{\csname\@col@-\number#1-h\endcsname}
+\def\columnbotbox #1{\csname\@col@-\number#1-l\endcsname}
+
+\def\columnsettextbox{\global\setbox\columntextbox}
+\def\columnsetfootbox{\global\setbox\columnfootbox}
+\def\columnsettopbox {\global\setbox\columntopbox}
+\def\columnsetbotbox {\global\setbox\columnbotbox}
+
+\def\columngettextbox{\copy\columntextbox}
+\def\columngetfootbox{\copy\columnfootbox}
+\def\columngettopbox {\copy\columntopbox}
+\def\columngetbotbox {\copy\columnbotbox}
+
+\def\columnerasetextboxes{\dorecurse\allocatednofcolumns{\columnsettextbox\recurselevel\emptybox}}
+\def\columnerasefootboxes{\dorecurse\allocatednofcolumns{\columnsetfootbox\recurselevel\emptybox}}
+\def\columnerasetopboxes {\dorecurse\allocatednofcolumns{\columnsettopbox \recurselevel\emptybox}}
+\def\columnerasebotboxes {\dorecurse\allocatednofcolumns{\columnsetbotbox \recurselevel\emptybox}}
+
+%D Without going in details we present two macro's which handle
+%D the columns. The action which is transfered by the the first
+%D and only parameter can do something with \type
+%D {\currentcolumnbox}. In case of the mid columns, \type
+%D {\firstcolumnbox} and \type {\lastcolumnbox} are handled
+%D outside these macro's.
+
+\def\dohandlecolumn#1%
+ {\mofcolumns\recurselevel
+ \let\currentcolumn\recurselevel
+ #1\relax}
+
+\def\dohandleallcolumns#1%
+ {\dorecurse\nofcolumns{\dohandlecolumn{#1}}}
+
+\def\dohandlerevcolumns#1%
+ {\dostepwiserecurse\nofcolumns\plusone\minusone{\dohandlecolumn{#1}}}
+
+\def\dohandlemidcolumns#1%
+ {\dohandleallcolumns
+ {\ifnum\recurselevel>\plusone
+ \ifnum\recurselevel<\nofcolumns
+ \dohandlecolumn{#1}%
+ \fi
+ \fi}}
+
+%D This register can be used as a temporary storage for page
+%D content.
+
+\newbox\restofpage
+
+%D Features.
+
+\newif\ifintermediatefootnotes
+\newif\ifcarryoverfootnotes %\carryoverfootnotestrue
+\newif\iflastcolumnfootnotes %\lastcolumnfootnotestrue
+\newif\ifbalancecolumns %\balancecolumnstrue
+\newif\ifbalancetoheight %\balancetoheighttrue
+\newif\ifforcecolumngrid \forcecolumngridtrue
+\newif\ifstretchcolumns \stretchcolumnsfalse
+\newif\ifinheritcolumns \inheritcolumnsfalse
+\newif\ifheightencolumns \heightencolumnsfalse
+
+\newif\ifbalancingcolumns
+\newif\ifcollectingcontent
+\newif\ifcolumnoverflow
+\newif\iffinalflushingfloats
+\newif\ifpackflushedfloats \packflushedfloatstrue % for the moment
+
+\newdimen\intercolumnwidth
+\newdimen\localcolumnwidth
+\newdimen\savedpagetotal
+
+\chardef\columndirection=0 % 0:lr 1:rl
+
+\def\minbalancetoplines {1}
+\def\minfreecolumnlines {2}
+
+\newif\ifrecentercolumnbox \recentercolumnboxtrue
+\newif\ifrerecentercolumnbox \rerecentercolumnboxtrue
+\newif\ifpackcolumnfloats \packcolumnfloatstrue
+
+\newbox\collectedpagefloats
+
+%D The \type {\ifdim} test is needed, because otherwise the
+%D last line of a text end up on top of the baseline instead of
+%D on the baseline, as is the case with preceding pages.
+%D Also, a \type {\vfil} better than a \type {\vfill}.
+
+% to be replaced by \page[now] \page[final] / merged
+
+% \def\eject {\par\penalty-\@M } % == {\par\break} % plain
+% \def\supereject {\par\penalty-\@MM} % also plain
+
+\def\eject {\par\ifvmode\penalty-\@M \fi\resetpagebreak} % == {\par\break} % plain
+\def\supereject {\par\ifvmode\penalty-\@MM\fi\resetpagebreak} % also plain
+
+\def\doejectpage {\par\ifvmode\ifdim\pagetotal>\pagegoal\else\normalvfil\fi\fi}
+\def\ejectpage {\doejectpage\eject}
+\def\superejectpage{\doejectpage\supereject}
+
+% floats
+%
+% \def\ejectinsert
+% {\flushnotes
+% \bgroup
+% \noftopfloats\plusthousand
+% \nofbotfloats\zerocount
+% \doflushfloats
+% \egroup}
+
+\def\ejectinsert
+ {\flushnotes
+ \bgroup
+ \noftopfloats\plusthousand
+ \nofbotfloats\zerocount
+ % this is needed in case a float that has been stored
+ % ends up at the current page; this border case occurs when
+ % the calculated room is 'eps' smaller that the room available
+ % when just flushing; so now we have (maybe optional):
+ \pagebaselinecorrection
+ % alas, this is tricky but needed (first surfaced in prikkels)
+ \doflushfloats
+ \egroup}
+
+\def\ejectdummypage
+ {\endgraf \ifvmode
+ \ejectinsert
+ \hardespatie % will be different
+ \vfill
+ \gotonextpage
+ \fi}
+
+\def\beforefinaloutput
+ {}
+
+\def\afterfinaloutput
+ {\forgetall
+ \vskip\zeropoint\relax
+ \ifvoid\normalpagebox \else
+ \unvbox\normalpagebox
+ \penalty\outputpenalty
+ \fi
+ % not really needed, replaced by \flushsavedfloats
+ \ifnum\outputpenalty>-\@MM \else % better use a proper otr signal
+ \dosupereject
+ \fi
+ % but does not hurt either (we're still in the otr!)
+ \inpagebodytrue % needed for enabling \blank !
+ \flushsavedfloats % was \dosetbothinserts; only otr one !
+ \setvsize % this is needed for interacting components, like floats and multicolumns
+ \adaptfuzzypagegoal} % watch this hack!
+
+% \def\dofinaloutput#1#2%
+% {\beforefinaloutput
+% \the\everybeforeshipout
+% \ifspecialbasedsettings
+% \myshipout{\hbox{\hbox to \zeropoint{\the\pageboundsettings}%
+% \hbox{\dopagebody#1#2\setpagecounters}}}%
+% \else
+% \the\pageboundsettings
+% \myshipout{\hbox{\dopagebody#1#2\setpagecounters}}%
+% \fi
+% \the\everyaftershipout
+% \afterfinaloutput
+% \popproperties} % ... and here ...
+
+\def\dofinaloutput#1#2% \vbox: prevents spurious spaces in every..pagebody
+ {\beforefinaloutput
+ \the\everybeforeshipout
+ \ifspecialbasedsettings
+ \myshipout{\hbox{\hbox to \zeropoint{\the\pageboundsettings}%
+ \hbox{\vbox{\dopagebody#1#2\setpagecounters}}}}%
+ \else
+ \the\pageboundsettings
+ \myshipout{\hbox{\vbox{\dopagebody#1#2\setpagecounters}}}%
+ \fi
+ \the\everyaftershipout
+ \afterfinaloutput
+ \popproperties} % ... and here ...
+
+\def\donofinaloutput#1#2%
+ {\beforefinaloutput
+ \the\everybeforeshipout
+ \setpagecounters
+ \message{[-\the\realpageno]}%
+ \setbox\scratchbox\hbox
+ {%\the\everyshipout % still needed here ?
+ \dopagebody#1#2}%
+ \deadcycles\zerocount
+ \gotonextrealpage
+ \the\everyaftershipout
+ \afterfinaloutput
+ \popproperties} % ... and here
+
+% beware: \ifverwerken is in use
+
+\def\finaloutput#1#2%
+ {\checkpageversion
+ \ifverwerken
+ \ifgeselecteerd
+ \@EAEAEA\dofinaloutput
+ \else
+ \@EAEAEA\donofinaloutput
+ \fi
+ \else
+ \ifgeselecteerd
+ \@EAEAEA\donofinaloutput
+ \else
+ \@EAEAEA\dofinaloutput
+ \fi
+ \fi#1#2%
+ \resetselectiepagina
+ \verhoogpaginanummer
+ \checkpagedimensions
+ \ifnum\outputpenalty>-\@MM \else
+ \dosupereject
+ \fi
+ \doflushspread
+ \dopostponeblock}
+
+\ifx\doflushspread\undefined \let\doflushspread\relax \fi
+
+\def\dooutput
+ {\finaloutput\unvbox\normalpagebox}
+
+\maxdeadcycles=1000
+
+% will be installable tracer; better use chardef
+
+% this needs a real cleanup
+
+\chardef\conceptmode\zerocount
+
+\def\doifconcepttracing
+ {\ifnum\conceptmode>\plustwo
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\doplaceversiontext#1#2%
+ {\doifsomething{#2}
+ {\@EA\convertargument#2\to\ascii
+ \space#1:\space\ascii\space
+ \!!doneatrue}}
+
+\def\placeversioninfo % nog engels maken
+ {\ifcase\conceptmode
+ % 0 : nothing
+ \or
+ % 1 : simple
+ \vskip\!!sixpoint
+ \hbox to \makeupwidth
+ {\infofont
+ \v!concept:\space\currentdate
+ \hss\reportpagedimensions}%
+ \else
+ % 2/3 : extensive
+ \vskip\!!sixpoint
+ \hbox to \makeupwidth
+ {\infofont
+ \getmessage\m!systems{27}:\space\currentdate\space
+ \doplaceversiontext\v!project \currentproject
+ \doplaceversiontext\v!product \currentproduct
+ \doplaceversiontext\v!component\currentcomponent
+ \if!!donea\else\space\v!file:\space\jobname\fi
+ \hss\reportpagedimensions}%
+ \fi}
+
+% tot hier
+
+\def\doversion[#1]%
+ {\chardef\conceptmode\zerocount
+ \overfullrule\zeropoint
+ \processaction % \v!final=>
+ [#1]
+ [ \v!concept=>\chardef\conceptmode\plusone, % simple banner
+ \v!file=>\chardef\conceptmode\plustwo, % full banner
+ \v!temporary=>\chardef\conceptmode\plusthree % full banner plus
+ \overfullrule5\points]} % info in the margin
+
+\def\version
+ {\dosingleargument\doversion}
+
+\def\addstatusinfo
+ {\ifcase\conceptmode
+ \@EA\gobbleoneargument
+ \else
+ \@EA\doaddstatusinfo
+ \fi}
+
+\def\doaddstatusinfo#1%
+ {\setbox#1\vbox to \paperheight
+ {\vsmashbox#1\box#1%
+ \offinterlineskip
+ \vskip\topspace
+ \hsize\paperwidth
+ \hfill\hbox{\placetestinfo\hskip.5cm}\vss
+ \settexthoffset\hskip\texthoffset % brrrr
+ %\tlap{\placeversioninfo}\vskip.5cm}}
+ \vbox to 1cm{\vss\placeversioninfo\vss}}}
+
+\def\dotestinfo#1#2#3%
+ {\ifinpagebody\else\ifnum\conceptmode=\plusthree
+ \begingroup
+ \@EA\convertargument#3\to\ascii
+ \xdef\extratestinfo
+ {#2\space\ascii}%
+ \gdef\totaltestinfo
+ {\global\setbox#1\vbox
+ {\unvbox#1\relax
+ \infofont \setupinterlinespace
+ \hbox
+ {\strut
+ \expanded{\doboundtext{\extratestinfo}{12em}{..}}%
+ \quad}}}%
+ \endgroup
+ \ifinner
+ \aftergroup\totaltestinfo
+ \else
+ \totaltestinfo
+ \fi
+ \fi\fi}
+
+% this will be inserts some day
+
+% \installinsertion\referentieinfobox
+% \installinsertion\registerinfobox
+% \installinsertion\floatinfobox
+
+\newbox\referentieinfobox
+\newbox\registerinfobox
+\newbox\floatinfobox
+
+\def\referentieinfo{\dotestinfo\referentieinfobox}
+\def\registerinfo {\dotestinfo\registerinfobox}
+\def\floatinfo {\dotestinfo\floatinfobox}
+
+\def\placetestinfo
+ {\vbox to \makeupheight
+ {\forgetall
+ \infofont
+ \hsize10em
+ \ifvoid\floatinfobox\else
+ \strut \getmessage\m!systems{24}%
+ \vskip\!!sixpoint
+ \unvbox\floatinfobox
+ \vskip\!!twelvepoint
+ \fi
+ \ifvoid\referentieinfobox\else
+ \strut \getmessage\m!systems{25}%
+ \vskip\!!sixpoint
+ \unvbox\referentieinfobox
+ \vskip\!!twelvepoint
+ \fi
+ \ifvoid\registerinfobox\else
+ \strut \getmessage\m!systems{26}%
+ \vskip\!!sixpoint
+ \unvbox\registerinfobox
+ \fi
+ \vss}}
+
+\version[\v!final]
+
+\newif\ifinpagebody
+
+% bewaren tvb documentatie
+%
+% \hbox to \hsize
+% {\en
+% \switchnaarkorps[5pt]%
+% \emergencystretch2em
+% \dimen0=\baselineskip
+% \baselineskip=\dimen0 plus 1pt
+% \hsize=.2\hsize
+% \vsize=2\hsize
+% \ruledvbox to \vsize{\input tufte \par}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern0pt}\hss
+% \ruledvbox to \vsize{\input tufte \par\vfill}\hss
+% \ruledvbox to \vsize{\input tufte \par\kern-\prevdepth\vfill}}
+%
+% \hbox to \hsize
+% {\en
+% \switchnaarkorps[5pt]%
+% \emergencystretch2em
+% \dimen0=\baselineskip
+% \baselineskip=\dimen0 plus 1pt
+% \hsize=.18\hsize
+% \vsize=2.5\hsize
+% \setbox0=\vbox{\input tufte\relax}%
+% \ruledvbox to \vsize{\unvcopy0}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern-\dp0}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern0pt}\hss
+% \ruledvbox to \vsize{\unvcopy0\vfill}\hss
+% \ruledvbox to \vsize{\unvcopy0\kern-\dp0\vfill}}
+
+\newtoks\afterpage \newtoks\aftereverypage
+\newtoks\beforepage \newtoks\beforeeverypage
+
+\chardef\showgridstate=0
+
+\def\showgrid
+ {\dosingleempty\doshowgrid}
+
+\def\doshowgrid[#1]%
+ {\chardef\showgridstate\plusone % downward compatible default
+ \processaction
+ [#1]%
+ [\v!reset=>\chardef\showgridstate\zerocount,
+ %\v!bottom=>\chardef\showgridstate\plusone,
+ \v!top=>\chardef\showgridstate\plustwo]}
+
+\def\buildpagebox#1%
+ {\setbox#1\vbox to \paperheight
+ {\hsize\paperwidth
+ \vskip\topspace
+ \doifbothsides
+ \hskip\backspace
+ \orsideone
+ \hskip\backspace
+ \orsidetwo
+ \hskip\paperwidth
+ \hskip-\backspace
+ \hskip-\makeupwidth
+ \od
+ \box#1}%
+ \dp#1\zeropoint}
+
+% \newif\ifpagebodyornaments \pagebodyornamentstrue
+%
+% \appendtoks
+% \global\pagebodyornamentstrue
+% \to \everyaftershipout
+
+\newif\ifarrangingpages \arrangingpagesfalse
+
+\chardef\pageornamentstate\zerocount % 0=on 1=one-off 2=always-off
+
+\def\pagebodyornamentstrue {\chardef\pageornamentstate\zerocount} % for a while
+\def\pagebodyornamentsfalse{\chardef\pageornamentstate\plusone} % for a while
+
+\appendtoks
+ \ifcase\pageornamentstate\or
+ \chardef\pageornamentstate\zerocount
+ \fi
+\to \everyaftershipout
+
+\let\poparrangedpages\relax
+\let\pusharrangedpage\relax
+
+\ifx\shiftprintpagebox\undefined
+ \let\shiftprintpagebox\gobbleoneargument
+ \let\shiftpaperpagebox\gobbleoneargument
+\fi
+
+\ifx\registerpageposition\undefined
+ \let\registerpageposition\gobbleoneargument
+\fi
+
+\def\reportarrangedpage#1%
+ {\showmessage\m!systems
+ {23}{\the\realpageno.\the\pageno\ifnum\subpageno>0 .\the\subpageno\fi,#1}}
+
+\newif\ifsavepagebody \newbox\savedpagebody
+
+% beware, \??ly is used before defined, i.e. bad module design
+
+\setuplayout[\c!method=\v!normal]
+
+\def\buildpagebody#1#2%
+ {\ifsavepagebody\global\setbox\savedpagebody\fi
+ \vbox
+ {\beginrestorecatcodes
+ \forgetall % igv problemen, check: \boxmaxdepth\maxdimen
+ \boxmaxdepth\maxdimen % new
+ \dontcomplain
+ % the following plugin uses and sets pagebox; beware: this
+ % will change and is for my (hh) personal experiments
+ \executeifdefined{\??ly\c!method\@@lymethod}%
+ {\getvalue{\??ly\c!method\v!normal}}#1#2%
+ % the finishing touch
+ \ifcase\pageornamentstate
+ \addpagebackground \pagebox
+ \fi
+ \registerpageposition\pagebox
+ \ifarrangingpages
+ \shiftpaperpagebox \pagebox % \v!paper
+ \else
+ \clippagebox \pagebox
+ \addpagecutmarks \pagebox
+ \replicatepagebox \pagebox
+ \scalepagebox \pagebox
+ \mirrorpaperbox \pagebox
+ \orientpaperbox \pagebox
+ \addpagecolormarks \pagebox
+ \centerpagebox \pagebox
+ \addprintbackground\pagebox
+ \mirrorprintbox \pagebox
+ \orientprintbox \pagebox
+ \shiftprintpagebox \pagebox % \v!page
+ \offsetprintbox \pagebox
+ \negateprintbox \pagebox
+ \fi
+ \box\pagebox
+ \endrestorecatcodes}%
+ \ifsavepagebody\copy\savedpagebody\fi}
+
+\setvalue{\??ly\c!method\v!normal}#1#2%
+ {\setbox\pagebox\vbox
+ {\offinterlineskip
+ \ifcase\pageornamentstate
+ \bgroup % else footnotes get inconsistent font/baseline
+ \dostartattributes\??ly\c!style\c!color\empty
+ \offinterlineskip
+ \gettextboxes
+ \dostopattributes
+ \egroup
+ \fi
+ \getmainbox#1#2}% including footnotes
+ \ifcase\pageornamentstate
+ \addmainbackground \pagebox
+ \addlogobackground \pagebox
+ \fi
+ \buildpagebox \pagebox
+ \addstatusinfo \pagebox}
+
+\def\finishpagebox#1%
+ {\ifarrangingpages
+ \addpagecutmarks #1%
+ \addpagecolormarks#1%
+ \centerpagebox #1%
+ \mirrorprintbox #1%
+ \orientprintbox #1%
+ \offsetprintbox #1%
+ \negateprintbox #1%
+ \fi}
+
+\appendtoks \restoreglobalbodyfont \to \everybeforepagebody
+\appendtoks \restorecolumnsettings \to \everybeforepagebody
+
+\ifx\nestednewbox\undefined \newbox\nestednextbox \fi
+
+\prependtoks \let\nextbox\nestednextbox \to \everybeforepagebody
+
+\def\dopagebody#1#2%
+ {%\getallmarks % now in following token register
+ \the\everybeforepagebody
+ \starttextproperties
+ \gotonextsubpage % nog eens: als in pagina (tbv standaard opmaak)
+ \dontshowboxes % dan hier blokkeren en verderop resetten
+% \shipoutfacingpage
+ \checkreferences
+ \checkmargeblokken
+ \dotoks\beforeeverypage
+ \flushtoks\beforepage
+ \inpagebodytrue\buildpagebody#1#2%
+ \flushtoks\afterpage
+ \dotoks\aftereverypage
+ \resetpagebreak
+ \updatelistreferences
+ \resetlayouttextlines % will go to \aftereverypage
+ \stoptextproperties
+ \the\everyafterpagebody}
+
+\newtoks\pageboundsettings
+
+\prependtoks \initializepaper \to \pageboundsettings
+
+\let\checkpageversion=\relax
+
+% not here
+
+\newif\ifpaginageblokkeerd \paginageblokkeerdfalse
+
+% \chardef\testpagemethod=0 % todo: \testnewpage[method=,lines=,voffset=]
+%
+% \def\testpage {\dotripleempty\dotestpage[\plusone]}
+% \def\testpageonly{\dotripleempty\dotestpage[\plustwo]}
+%
+% \def\dotestpage[#1][#2][#3]%
+% {%\relax % needed before \if
+% \endgraf
+% \ifpaginageblokkeerd
+% % do nothing
+% \else
+% %ifnum#1=\plusone\synchronizeoutput\fi
+% \ifdim\pagegoal<\maxdimen \relax
+% \ifdim\pagetotal<\pagegoal \relax
+% \scratchdimen\lineheight
+% \multiply\scratchdimen#2\relax
+% \advance\scratchdimen \pagetotal
+% \ifdim\lastskip<\parskip
+% \advance\scratchdimen \parskip
+% \fi
+% \ifthirdargument
+% \advance\scratchdimen#3\relax
+% \fi
+% \ifcase\testpagemethod
+% \ifdim\scratchdimen>.99\pagegoal
+% \vfill\eject % \penalty-\!!tenthousand\relax
+% \fi
+% \or
+% \advance\scratchdimen-\pagegoal
+% \ifdim\scratchdimen>-\lineheight
+% \vfill\eject % \penalty-\!!tenthousand\relax
+% \fi
+% \or
+% \getnoflines\pagegoal
+% \advance\scratchdimen-\noflines\lineheight \relax
+% \ifdim\scratchdimen>-\lineheight
+% \vfill\eject % \penalty-\!!tenthousand\relax
+% \fi
+% \or % same as 0 but more accurate
+% \advance\scratchdimen-10\s!sp\relax
+% \ifdim\scratchdimen>\pagegoal
+% \vfill\eject % \penalty-\!!tenthousand\relax
+% \fi
+% \fi
+% \else
+% % force page break / new
+% % \vfill\eject % \penalty-\!!tenthousand\relax
+% \fi
+% \else
+% \ifnum#1=\plusone\goodbreak\fi
+% \fi
+% \fi}
+
+\chardef\testpagemethod \zerocount % todo: \testnewpage[method=,lines=,voffset=]
+\chardef\testpagetrigger\zerocount
+
+\def\testpage {\dotripleempty\dotestpage[\plusone]} %
+\def\testpageonly{\dotripleempty\dotestpage[\plustwo]} % no penalties added to the mvl
+
+\def\dotestpage[#1][#2][#3]% don't change, only add more methods
+ {%\relax % needed before \if
+ \ifpaginageblokkeerd
+ \endgraf
+ \else
+ % new from here
+ \ifcase\testpagetrigger
+ \endgraf
+ \or
+ \ifvmode
+ \dosomebreak\allowbreak
+ \else % indeed?
+ \vadjust{\allowbreak}%
+ \endgraf
+ \fi
+ \fi
+ % till here
+ \ifdim\pagegoal<\maxdimen \relax
+ \ifdim\pagetotal<\pagegoal \relax
+ \scratchdimen\lineheight
+ \multiply\scratchdimen#2\relax
+ \advance\scratchdimen \pagetotal
+ \ifdim\lastskip<\parskip
+ \advance\scratchdimen \parskip
+ \fi
+ \ifthirdargument
+ \advance\scratchdimen#3\relax
+ \fi
+ \ifcase\testpagemethod
+ \ifdim\scratchdimen>.99\pagegoal
+ \penalty-\!!tenthousand\relax
+ \fi
+ \or
+ \advance\scratchdimen-\pagegoal
+ \ifdim\scratchdimen>-\lineheight
+ \penalty-\!!tenthousand\relax
+ \fi
+ \or
+ \getnoflines\pagegoal
+ \advance\scratchdimen-\noflines\lineheight \relax
+ \ifdim\scratchdimen>-\lineheight
+ \penalty-\!!tenthousand\relax
+ \fi
+ \or % same as 0 but more accurate
+ \advance\scratchdimen-10\s!sp\relax
+ \ifdim\scratchdimen>\pagegoal
+ \penalty-\!!tenthousand\relax
+ \fi
+ \fi
+ \else
+ % force page break / new / does not work as expected
+ % never: \penalty-\!!tenthousand\relax
+ \fi
+ \else
+ \ifnum#1=\plusone\goodbreak\fi
+ \fi
+ \fi}
+
+\def\testcolumn
+ {\dodoubleempty\dotestcolumn}
+
+\def\dotestcolumn[#1][#2]%
+ {%\relax % needed before \if !
+ \endgraf
+ \ifdim\pagegoal<\maxdimen \ifdim\pagetotal<\pagegoal % \relax
+ \scratchdimen\pagegoal
+ \advance\scratchdimen-\pagetotal
+ \ifdim\lastskip<\parskip
+ \advance\scratchdimen \parskip
+ \fi
+ \ifsecondargument
+ \advance\scratchdimen#2%
+ \fi
+ \getrawnoflines\scratchdimen % raw !
+ % \message{[\number#1>\number\noflines ?}\wait
+ \ifnum#1>\noflines
+ \column
+ \fi
+ \else
+ \penalty-\!!tenthousand % untested ! ! \column
+ \fi \fi}
+
+\let\resetcurrentsectionmarks\relax
+
+% was: \resetsectionmarks\firstsection, zie \handlepagebreak
+
+\def\page {\pagebreak} % the short form of \pagebreak (mult-com one)
+\def\page{\pagebreak} % for the moment, keep this one
+
+\def\resetpagebreak
+ {\global\paginageblokkeerdfalse}
+
+\def\simplifypagebreak
+ {\def\dopagebreak[##1]{\goodbreak}}
+
+\def\executepagebreakhandler#1%
+ {\edef\@@pagespecification{#1}%
+ \doifdefinedelse{\??pe:\@@pagespecification}
+ {\getvalue{\??pe:\@@pagespecification}}
+ {\doifdefinedelse{\??pe::\@@pagespecification}
+ {\executepagebreakhandlers{\getvalue{\??pe::\@@pagespecification}}}
+ {\getvalue{\??pe:\s!unknown}}}}
+
+\long\def\installpagebreakhandler#1#2%
+ {\long\setvalue{\??pe:#1}{#2}}
+
+% \definecomplexorsimple\pagebreak
+
+% \def\simplepagebreak
+% {\executepagebreakhandler\v!ja}
+
+% \def\complexpagebreak[#1]% if empty, do nothing and avoid processing,
+% {\flushnotes % see head's; watch how we group
+% \doifsomething{#1}{\bgroup\executepagebreakhandlers{#1}\egroup}}
+
+\def\pagebreak
+ {\dosingleempty\dopagebreak}
+
+\def\dopagebreak[#1]% so, page ornaments are reset after a pagebreak command, unless set
+ {\bgroup
+ \edef\prevrealpageno{\the\realpageno}%
+ \ifcase\pageornamentstate \or
+ % disable reset after shipout
+ \global\chardef\pageornamentstate\plustwo
+ \fi
+ \iffirstargument % or if empty i.e. []
+ \flushnotes\executepagebreakhandlers{#1}%
+ \else % so, no pagebreak when \pagebreak[] ! ! !
+ \flushnotes\executepagebreakhandler\v!yes
+ \fi
+ \ifnum\prevrealpageno<\realpageno
+ \global\chardef\pageornamentstate\zerocount
+ \fi
+ \egroup}
+
+\def\executepagebreakhandlers#1%
+ {\processcommacommand[#1]\executepagebreakhandler}
+
+\installpagebreakhandler \s!dummy
+ {\ejectinsert
+ \gotonextpage
+ \ejectdummypage}
+
+\installpagebreakhandler \v!frame
+ {\page\bgroup\showframe\page[\v!empty]\egroup}
+
+\installpagebreakhandler \s!unknown
+ {\doifinstringelse{+}\@@pagespecification
+ {\ejectinsert
+ \gotonextpage
+ \dorecurse\@@pagespecification\ejectdummypage}
+ {\doifnumberelse\@@pagespecification
+ {\ejectinsert
+ \gotonextpage
+ \doloop
+ {\ifnum\userpageno<\@@pagespecification\relax
+ \ejectdummypage
+ \else
+ \exitloop
+ \fi}}
+ {}}}
+
+\installpagebreakhandler \s!default
+ {} % do nothing if empty
+
+\installpagebreakhandler \v!reset
+ {% better not: \global\chardef\pageornamentstate\zerocount
+ \resetpagebreak}
+
+\installpagebreakhandler \v!disable
+ {\global\paginageblokkeerdtrue}
+
+\installpagebreakhandler \v!yes
+ {\ifpaginageblokkeerd\else
+ \ejectinsert
+ \gotonextpage
+ \ifinsidecolumns % this will move to MUL
+ \ejectpage % anders soms geen overgang
+ \fi
+ \fi}
+
+\installpagebreakhandler \v!makeup % ??
+ {\ifpaginageblokkeerd\else
+ \eject
+ \fi}
+
+\installpagebreakhandler \v!blank
+ {\ifcase\pageornamentstate
+ \global\chardef\pageornamentstate\plusone
+ \fi}
+
+\installpagebreakhandler \v!no
+ {\ifpaginageblokkeerd\else
+ \dosomebreak\nobreak
+ \fi}
+
+\installpagebreakhandler \v!preference
+ {\ifpaginageblokkeerd\else
+ \ifinsidecolumns % this will move to MUL
+ \dosomebreak\goodbreak
+ \else
+ \testpage[3][\zeropoint]%
+ \fi
+ \fi}
+
+\installpagebreakhandler \v!bigpreference
+ {\ifpaginageblokkeerd\else
+ \ifinsidecolumns % this will move to MUL
+ \dosomebreak\goodbreak
+ \else
+ \testpage[5][\zeropoint]%
+ \fi
+ \fi}
+
+\installpagebreakhandler \v!empty
+ {\ejectinsert
+ \gotonextpage
+ \doifnotvalue{\??tk\v!header\c!state}\v!stop{\setupheader[\c!state=\v!empty]}%
+ \doifnotvalue{\??tk\v!footer\c!state}\v!stop{\setupfooter[\c!state=\v!empty]}%
+ \ejectdummypage}
+
+\installpagebreakhandler \v!left
+ {\ejectinsert
+ \gotonextpageX % will become \gotonextpage
+ \doifbothsidesoverruled
+ \orsideone
+ \resetcurrentsectionmarks
+ \ejectdummypage
+ \orsidetwo
+ \od}
+
+\installpagebreakhandler \v!right
+ {\ejectinsert
+ \gotonextpageX % will become \gotonextpage
+ \doifbothsidesoverruled
+ \orsideone
+ \orsidetwo
+ \resetcurrentsectionmarks
+ \ejectdummypage
+ \od}
+
+\installpagebreakhandler \v!even
+ {\page
+ \doifoddpageelse{\resetcurrentsectionmarks\ejectdummypage}\donothing}
+
+\installpagebreakhandler \v!odd
+ {\page
+ \doifoddpageelse\donothing{\resetcurrentsectionmarks\ejectdummypage}}
+
+\installpagebreakhandler \v!quadruple % not yet ok inside columnsets
+ {\ifdubbelzijdig
+ \!!counta\realpageno
+ \!!countb\realpageno
+ \divide\!!counta 4
+ \divide\!!countb 2
+ \ifnum\!!counta=\!!countb
+ \else
+ \executepagebreakhandler\v!yes
+ \executepagebreakhandler\v!empty
+ \executepagebreakhandler\v!empty
+ \fi
+ \fi}
+
+\installpagebreakhandler \v!last
+ {\ejectinsert
+ \gotonextpageX % will become \gotonextpage
+ \relax
+ \doifbothsidesoverruled
+ \shipoutfacingpage
+ \orsideone
+ \orsidetwo
+ \noheaderandfooterlines
+ \ejectdummypage
+ \od
+ \filluparrangedpages}
+
+\installpagebreakhandler \v!lastpage % handy for backpage preceded by empty pages
+ {\executepagebreakhandler\v!yes
+ \ifdubbelzijdig
+ \executepagebreakhandler\v!left
+ \executepagebreakhandler\v!empty
+ \executepagebreakhandler\v!empty
+ \fi}
+
+\installpagebreakhandler \v!start
+ {\globallet\shipout\normalshipout}
+
+\installpagebreakhandler \v!stop
+ {\globallet\shipout\noshipout}
+
+% nb: \executepagebreakhandler\v!hoofd in other ones
+
+\installpagebreakhandler \v!header
+ {\doifnotvalue{\??tk\v!header\c!state}\v!stop{\setupheader[\c!state=\v!empty]}}
+
+\installpagebreakhandler \v!footer
+ {\doifnotvalue{\??tk\v!footer\c!state}\v!stop{\setupfooter[\c!state=\v!empty]}}
+
+% \definepagebreak
+% [chapter]
+% [yes,header,right]
+%
+% \setuphead
+% [chapter]
+% [page=chapter,
+% header=empty,
+% footer=chapter]
+%
+% \definepagebreak % untested
+% [lastpage]
+% [left,{empty,right},{empty,left}]
+
+% public page handler, beware: definepage already in use (core-ref)
+%
+% \definepagebreak[instance][forsure]
+% \definepagebreak[forsure][yes,+4]
+
+\def\definepagebreak
+ {\dodoubleargument\dodefinepagebreak}
+
+\def\dodefinepagebreak[#1][#2]% non recursive, meant for simple mappings
+ {\setvalue{\??pe::#1}{#2}}
+
+% hier nog uti blokkeren
+
+% don't change this / test case:
+%
+% \setupbackgrounds[state=repeat]
+% \setupbackgrounds[text][text][background=whatever]
+% \couplepage[chapter][before={\defineoverlay[whatever][ON]}]
+% \setuphead[chapter][before={\pagetype[chapter]}]
+% \chapter{First} \page test \chapter{second} \page test
+
+\long\def\installcolumnbreakhandler#1#2#3% #1=otr-id #2=tag
+ {\long\setvalue{\??cn:#1:#2}{#3}}
+
+\def\definecolumnbreak
+ {\dodoubleargument\dodefinecolumnbreak}
+
+\def\dodefinecolumnbreak[#1][#2]% non recursive, meant for simple mappings
+ {\setvalue{\??cn::#1}{#2}}
+
+%\def\columnbreak
+% {\dosingleempty\docolumnbreak}
+%
+%\def\docolumnbreak[#1]%
+% {\expanded{\nextcolumn[\executeifdefined{\??cn::#1}{#1}]}}
+
+\definecomplexorsimple\columnbreak
+
+\def\simplecolumnbreak
+ {\executecolumnbreakhandler\v!yes}
+
+\def\complexcolumnbreak[#1]% if empty, do nothing and avoid processing
+ {\doifsomething{#1}{\executecolumnbreakhandlers{#1}}}
+
+\def\executecolumnbreakhandlers#1%
+ {\processcommacommand[#1]\executecolumnbreakhandler}
+
+\def\executecolumnbreakhandler#1% here no commalist
+ {\edef\@@columnspecification{#1}%
+ \doifdefinedelse{\??cn:\OTRidentifier:\@@columnspecification}
+ {\getvalue{\??cn:\OTRidentifier:\@@columnspecification}}
+ {\doifdefinedelse{\??cn::\@@columnspecification}
+ {\executecolumnbreakhandlers{\getvalue{\??cn::\@@columnspecification}}}
+ {\getvalue{\??cn:\OTRidentifier:\s!unknown}}}}
+
+%let\nextcolumn\columnbreak
+\let\column \columnbreak
+
+% We don't want spurious last pages (due to left over marks):
+
+\ifx\undefined\normalshipout \let\normalshipout=\shipout \fi
+
+\def\noshipout
+ {\writestatus\m!systems{ignoring further shipouts}%
+ \dowithnextbox{\deadcycles\zerocount}}
+
+% \def\doignorerestoftext
+% {\ifarrangingpages \else \ifnum\textlevel>\zerocount \else
+% \globallet\shipout\noshipout
+% \fi \fi}
+%
+% better:
+
+\def\doignorerestoftext
+ {\ifarrangingpages \else \ifnum\textlevel=\plusone
+ \globallet\shipout\noshipout
+ \fi \fi}
+
+\let\ignorerestoftext\donothing
+
+\prependtoks % only ignore in a symmetrical doc
+ \globallet\ignorerestoftext\doignorerestoftext
+\to \everystarttext
+
+% \appendtoks
+% \ignorerestoftext
+% \to \everylastshipout
+
+\newif\ifgeselecteerd \geselecteerdtrue
+\newif\ifselecteren \selecterenfalse
+\newif\ifverwerken \verwerkentrue
+
+\let\selectie \empty
+\let\paginasoort\empty
+\let\napagina \relax
+\let\voorpagina \relax
+
+\def\dodovoorpagina#1%
+ {\global\let\voorpagina\relax
+ \getvalue{\??pg#1\c!before}}
+
+\def\dovoorpagina
+ {\doifsomething\paginasoort
+ {\processcommacommand[\paginasoort]\dodovoorpagina}}
+
+\def\dododonapagina#1%
+ {\global\let\napagina\relax
+ \global\let\paginasoort\empty
+ \getvalue{\??pg#1\c!after}}
+
+\def\dodonapagina#1%
+ {\doifelsevalue{\??pg#1\c!option}\v!doublesided
+ {\doifbothsidesoverruled
+ \dododonapagina{#1}%
+ \orsideone
+ \dododonapagina{#1}%
+ \orsidetwo
+ \od}
+ {\dododonapagina{#1}}}
+
+\def\donapagina
+ {\doifsomething\paginasoort
+ {\processcommacommand[\paginasoort]\dodonapagina}}
+
+% Dit wordt eigenlijk nooit en moet worden vervangen door
+% het meer algemene mechanisme.
+
+\def\dopagetype[#1]%
+ {\edef\desoortpagina{#1}%
+ \ifx\desoortpagina\empty \else
+ \@EA\doglobal\@EA\addtocommalist\@EA{\desoortpagina}\paginasoort
+ \ifselecteren
+ \fullexpandtwoargsafter\doifcommon\desoortpagina\selectie
+ {\global\geselecteerdtrue}%
+ \fi
+ \gdef\voorpagina{\dovoorpagina}%
+ \gdef\napagina {\donapagina }%
+ \fi}
+
+\def\pagetype
+ {\dosingleargument\dopagetype}
+
+\def\docouplepage[#1][#2]%
+ {\getparameters
+ [\??pg]
+ [\c!before=,
+ \c!after=,
+ \c!option=,
+ #2]%
+ \def\docommando##1%
+ {\getparameters
+ [\??pg##1]
+ [\c!before=\@@pgbefore,
+ \c!after=\@@pgafter,
+ \c!option=\@@pgoption]}%
+ \processcommalist[#1]\docommando}%
+
+\def\couplepage
+ {\dodoubleargument\docouplepage}
+
+\def\doprocesspage[#1][#2]%
+ {\processaction
+ [#2]
+ [\v!yes=>\global\verwerkentrue,
+ \v!no=>\global\verwerkenfalse]%
+ \gdef\selectie{#1}%
+ \global\selecterentrue
+ \global\geselecteerdfalse}
+
+\def\processpage
+ {\dodoubleargument\doprocesspage}
+
+\def\resetselectiepagina
+ {\ifselecteren
+ \doifbothsidesoverruled
+ \global\geselecteerdfalse
+ \orsideone
+ \orsidetwo
+ \global\geselecteerdfalse
+ \od
+ \fi}
+
+\newif\ifregistertextareas
+\newif\iftracetextareas
+
+\newbox\registertextbox
+
+% \def\registeredtextarea#1#2#3% #1=lower-dp #2=correct-ht #3=box
+% {\hbox{\box#3}}
+
+\def\enabletextarearegistration{\global\registertextareastrue}
+
+\def\registeredtextarea#1#2#3% #1=lower-dp #2=correct-ht #3=box
+ {\hbox\bgroup
+ \ifregistertextareas \ifx\registerMPtextarea\undefined \else
+ \setbox\registertextbox\null
+ \wd\registertextbox\wd#3%
+ \ht\registertextbox\ht#3%
+ \dp\registertextbox\dp#3%
+ \ifcase#1\or % 1
+ \setbox\registertextbox\hbox{\lower\strutdp\box\registertextbox}%
+ \fi
+ \ifcase#2\or % 1
+ \setbox\registertextbox\hbox{\raise\topskip\hbox{\lower\strutht\box\registertextbox}}%
+ \dp\registertextbox\strutdp
+ \fi
+ \dp\registertextbox\strutdp % needed
+ %\setbox\registertextbox\hbox
+ % {\iftracetextareas\gray\boxrulewidth2pt\ruledhbox\fi
+ % {\registerMPtextarea{\box\registertextbox}}}%
+ \setbox\registertextbox\hbox
+ {\registerMPtextarea{\box\registertextbox}}%
+ \smashbox\registertextbox
+ \box\registertextbox
+ \fi \fi
+ \box#3%
+ \egroup}
+
+%D \macros
+%D {setupoppositeplacing,startopposite}
+%D
+%D \starttyping
+%D \starttext
+%D test \startopposite \blackrule[width=3cm,height=4cm] \stopopposite test
+%D test \startopposite \blackrule[width=3cm,height=4cm] \stopopposite test
+%D \stoptext
+%D \stoptyping
+
+% Moved from page-mar.tex, made english, cleaned up, but still to be
+% redesigned
+
+\newbox\facingpage
+
+\def\setupoppositeplacing
+ {\dodoubleargument\getparameters[\??np]}
+
+\def\startopposite
+ {\dowithnextboxcontent
+ {\hsize\makeupwidth}%
+ {\global\setbox\facingpage\vbox
+ {\ifvoid\facingpage
+ \@@npbefore
+ \else
+ \@@npinbetween
+ \unvbox\facingpage
+ \fi
+ \box\nextbox}}%
+ \vbox\bgroup}
+
+\def\stopopposite
+ {\egroup}
+
+\def\finishfacingpage
+ {\ifvoid\facingpage\else
+ \global\setbox\facingpage\vbox to \makeupheight
+ {\unvbox\facingpage
+ \@@npafter
+ \vss}%
+ \fi}
+
+\def\shipoutfacingpage
+ {\doif\@@npstate\v!start
+ {\ifvoid\facingpage\else
+ \ifnum\realpageno>\plusone
+ \bgroup
+ \chardef\pageornamentstate\plusone
+ \finishfacingpage
+ \myshipout{\buildpagebody\box\facingpage}%
+ \egroup
+ \else
+ \global\setbox\facingpage\emptybox
+ \fi
+ \fi}}
+
+\setupoppositeplacing
+ [\c!state=\v!start,
+ \c!before=,
+ \c!inbetween=\blank,
+ \c!after=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-lay.tex b/Master/texmf-dist/tex/context/base/page-lay.tex
new file mode 100644
index 00000000000..5a5bafe24be
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-lay.tex
@@ -0,0 +1,1430 @@
+%D \module
+%D [ file=page-lay,
+%D version=2000.10.20, % copied from main-001
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Layout Specification,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Layout Specification}
+
+% to be translated into english
+
+% hoofdhoogte wordt bij status=hoog niet aangepast op outer
+% level, wel binnen bepaalde berekeningen
+
+%D Before you start wondering why some of the page related
+%D modules skip upward or left in order to place elements, you
+%D must realize that the reference point is the top left
+%D corner of the main typesetting area. One reason for this
+%D choice is that it suited some viewers that displayed page
+%D areas. Another reason is that margins, edges and top and
+%D bottom areas are kind of virtual, while the header, text
+%D and footer areas normally determine the text flow.
+
+\unprotect
+
+%D First we get rid of the funny \TEX\ offset defaults of one
+%D inch by setting them to zero.
+
+\voffset = 0pt % setting this to -1in let's go metapost crazy
+\hoffset = 0pt % setting this to -1in let's go metapost crazy
+
+%D The dimensions related to layout areas are represented by
+%D real dimensions.
+
+\newdimen\paperheight \paperheight = 297mm
+\newdimen\paperwidth \paperwidth = 210mm
+
+\newdimen\printpaperheight \printpaperheight = \paperheight
+\newdimen\printpaperwidth \printpaperwidth = \paperwidth
+
+\newdimen\makeupheight % calculated
+\newdimen\makeupwidth % calculated
+
+\newdimen\textheight % calculated
+\newdimen\textwidth % calculated
+
+\newdimen\topspace \topspace = 2cm
+\newdimen\backspace \backspace = \topspace
+\newdimen\cutspace \cutspace = 0pt
+\newdimen\bottomspace \bottomspace = 0pt
+
+\newdimen\headerheight \headerheight = 2cm
+\newdimen\footerheight \footerheight = \headerheight
+
+\newdimen\kopoffset \kopoffset = 0pt
+\newdimen\rugoffset \rugoffset = \kopoffset
+
+\newdimen\leftmarginwidth \leftmarginwidth = 3cm
+\newdimen\rightmarginwidth \rightmarginwidth = \leftmarginwidth
+
+\newdimen\leftedgewidth \leftedgewidth = 3cm
+\newdimen\rightedgewidth \rightedgewidth = \leftedgewidth
+
+\newdimen\topheight \topheight = 0cm
+\newdimen\bottomheight \bottomheight = \topheight
+
+\newcount\layoutlines \layoutlines = 0
+\newcount\layoutcolumns \layoutcolumns = 0
+\newdimen\layoutcolumndistance \layoutcolumndistance = 0pt
+\newdimen\layoutcolumnwidth \layoutcolumnwidth = 0pt
+
+%D We can save some tokens and fuzzy parameters by using a
+%D symbolic name for the current set of layout parameters.
+
+\let\currentlayout\empty
+
+%\def\layoutparameter#1%
+% {\ifundefined{\??ly\currentlayout#1}%
+% \getvalue{\??ly#1}%
+% \else
+% \getvalue{\??ly\currentlayout#1}%
+% \fi}
+%
+% faster
+
+\def\layoutparameter#1%
+ {\csname\??ly
+ \ifundefined{\??ly\currentlayout#1}\else\currentlayout\fi
+ #1\endcsname}
+
+\def\namedlayoutparameter#1#2%
+ {\ifundefined{\??ly#1#2}%
+ \layoutparameter{#2}%
+ \else
+ \getvalue{\??ly#1#2}%
+ \fi}
+
+%D Look how ugly a speed up looks:
+
+\beginTEX
+
+\def\layoutparameter#1%
+ {\csname\??ly\@EA\ifx\csname
+ \??ly\currentlayout#1\endcsname\relax\else\currentlayout
+ \fi#1\endcsname}
+
+\def\namedlayoutparameter#1#2%
+ {\csname\??ly
+ \@EA\ifx\csname\??ly#1#2\endcsname\relax
+ \@EA\ifx\csname\??ly\currentlayout#2\endcsname\relax
+ \else\currentlayout\fi
+ \else#1\fi
+ \fi#2\endcsname}
+
+\endTEX
+
+%D Its \ETEX\ counterpart is:
+
+\beginETEX \ifcsname
+
+\def\layoutparameter#1%
+ {\csname\??ly\ifcsname
+ \??ly\currentlayout#1\endcsname\currentlayout
+ \fi#1\endcsname}
+
+\def\namedlayoutparameter#1#2%
+ {\csname\??ly\ifcsname\??ly #1#2\endcsname#1\else
+ \ifcsname\??ly\currentlayout#2\endcsname\currentlayout
+ \fi\fi#2\endcsname}
+
+\endETEX
+
+%D Beause normal \TEX\ has at most 256 dimensions (of which a
+%D substantial part is already in use), we provide a way to
+%D generate a format with macro based alternatives. For a long
+%D time, this used to be the default case. Beware: only fixed
+%D dimensions can be used in calculations! By the way, the
+%D gain in speed can hardly be called impressive and is roughly
+%D 1 second on a 35 second run of 850 empty pages with a
+%D couple of backgrounds only (which is far less than one
+%D percent on a normal document).
+
+%D The next series of dimensions are complemented by left
+%D and rights ones.
+
+\newdimen \margindistance
+\newdimen \edgedistance
+\newdimen \marginwidth
+\newdimen \edgewidth
+
+%D Because a distance does not really makes sense when there
+%D is no area, we use a zero distance in case there is no
+%D area.
+
+\def\layoutdistance#1#2%
+ {\ifdim\zeropoint<#1\layoutparameter#2\else\zeropoint\fi}
+
+%D The horizontal distances are:
+
+\newdimen \leftedgedistance
+\newdimen \rightedgedistance
+\newdimen \leftmargindistance
+\newdimen \rightmargindistance
+
+%D The vertical distances are:
+
+\newdimen \topdistance
+\newdimen \headerdistance
+\newdimen \footerdistance
+\newdimen \bottomdistance
+
+%D We need to calculate the extra distances:
+
+\def\setlayoutdimensions
+ {\global\marginwidth \layoutparameter\c!margin
+ \global\edgewidth \layoutparameter\c!edge
+ \global\margindistance \layoutparameter\c!margindistance
+ \global\edgedistance \layoutparameter\c!edgedistance
+ \global\leftedgedistance \layoutdistance \leftedgewidth \c!leftedgedistance
+ \global\rightedgedistance \layoutdistance \rightedgewidth \c!rightedgedistance
+ \global\leftmargindistance \layoutdistance \leftmarginwidth \c!leftmargindistance
+ \global\rightmargindistance\layoutdistance \rightmarginwidth \c!rightmargindistance
+ \global\topdistance \layoutdistance \topheight \c!topdistance
+ \global\headerdistance \layoutdistance \headerheight \c!headerdistance
+ \global\footerdistance \layoutdistance \footerheight \c!footerdistance
+ \global\bottomdistance \layoutdistance \bottomheight \c!bottomdistance}
+
+\def\setlayoutdistances % local in \setreducedvsize
+ {\headerdistance\layoutdistance\headerheight\c!headerdistance
+ \footerdistance \layoutdistance\footerheight \c!footerdistance}
+
+\def\outermarginwidth {\rightorleftpageaction\rightmarginwidth \leftmarginwidth }
+\def\innermarginwidth {\rightorleftpageaction\leftmarginwidth \rightmarginwidth}
+\def\outermargindistance{\rightorleftpageaction\rightmargindistance\leftmargindistance }
+\def\innermargindistance{\rightorleftpageaction\leftmargindistance \rightmargindistance}
+
+\def\outeredgewidth {\rightorleftpageaction\rightedgewidth \leftedgewidth }
+\def\inneredgewidth {\rightorleftpageaction\leftedgewidth \rightedgewidth}
+\def\outeredgedistance {\rightorleftpageaction\rightedgedistance\leftedgedistance }
+\def\inneredgedistance {\rightorleftpageaction\leftedgedistance \rightedgedistance}
+
+\def\outerspacewidth {\rightorleftpageaction\cutspace\backspace}
+\def\innerspacewidth {\rightorleftpageaction\backspace\cutspace}
+
+\newtoks\extralayoutcalculations \def\calculatelayoutextras{\the\extralayoutcalculations}
+
+\appendtoks
+ \scratchdimen\leftmarginwidth \advance\scratchdimen\leftmargindistance \xdef\leftmargintotal {\the\scratchdimen}%
+ \scratchdimen\rightmarginwidth \advance\scratchdimen\rightmargindistance \xdef\rightmargintotal{\the\scratchdimen}%
+ \scratchdimen\leftedgewidth \advance\scratchdimen\leftedgedistance \xdef\leftedgetotal {\the\scratchdimen}%
+ \scratchdimen\rightedgewidth \advance\scratchdimen\rightedgedistance \xdef\rightedgetotal {\the\scratchdimen}%
+ \scratchdimen\leftmarginwidth \advance\scratchdimen\leftedgetotal \xdef\leftsidetotal {\the\scratchdimen}%
+ \scratchdimen\rightmarginwidth \advance\scratchdimen\rightedgetotal \xdef\rightsidetotal {\the\scratchdimen}%
+ \scratchdimen\leftmargintotal \advance\scratchdimen\leftedgetotal \xdef\leftcombitotal {\the\scratchdimen}%
+ \scratchdimen\rightmargintotal \advance\scratchdimen\rightedgetotal \xdef\rightcombitotal {\the\scratchdimen}%
+ %
+ \scratchdimen\innermarginwidth \advance\scratchdimen\innermargindistance \xdef\innermargintotal{\the\scratchdimen}%
+ \scratchdimen\outermarginwidth \advance\scratchdimen\outermargindistance \xdef\outermargintotal{\the\scratchdimen}%
+ \scratchdimen\inneredgewidth \advance\scratchdimen\inneredgedistance \xdef\inneredgetotal {\the\scratchdimen}%
+ \scratchdimen\outeredgewidth \advance\scratchdimen\outeredgedistance \xdef\outeredgetotal {\the\scratchdimen}%
+ \scratchdimen\innermargintotal \advance\scratchdimen\inneredgetotal \xdef\innercombitotal {\the\scratchdimen}%
+ \scratchdimen\outermargintotal \advance\scratchdimen\outeredgetotal \xdef\outercombitotal {\the\scratchdimen}%
+ \scratchdimen\innermarginwidth \advance\scratchdimen\inneredgetotal \xdef\innersidetotal {\the\scratchdimen}%
+ \scratchdimen\outermarginwidth \advance\scratchdimen\outeredgetotal \xdef\outersidetotal {\the\scratchdimen}%
+\to \extralayoutcalculations
+
+\newtoks\everyswapmargins % watch the order !
+
+\appendtoks
+ \swapdimens\leftmargindistance\rightmargindistance
+ \swapdimens\leftedgedistance \rightedgedistance
+ \swapdimens\leftmarginwidth \rightmarginwidth
+ \swapdimens\leftedgewidth \rightedgewidth
+\to \everyswapmargins
+
+\appendtoks
+ \swapmacros\leftmargintotal \rightmargintotal
+ \swapmacros\leftedgetotal \rightedgetotal
+ \swapmacros\leftsidetotal \rightsidetotal
+ \swapmacros\leftcombitotal \rightcombitotal
+ \swapmacros\innermargintotal\outermargintotal
+ \swapmacros\inneredgetotal \outeredgetotal
+ \swapmacros\innercombitotal \outercombitotal
+ \swapmacros\innersidetotal \outersidetotal
+\to \everyswapmargins
+
+%D \macros
+%D {definepapersize}
+%D
+%D Before we start calculating layout dimensions, we will
+%D first take care of paper sizes. The first argument can be
+%D either an assignment (for defaults) or an identifier, in
+%D which case the second argument is an assignment.
+%D
+%D \showsetup{definepapersize}
+
+\def\definepapersize
+ {\dodoubleempty\dodefinepapersize}
+
+\def\dodefinepapersize[#1][#2]%
+ {\ifsecondargument
+ \doifsomething{#1} % to be sure
+ {\getparameters
+ [\??pp#1] % geen \c!scale, scheelt hash ruimte
+ [\c!width=\@@ppwidth,\c!height=\@@ppheight,\c!offset=\@@ppoffset,#2]}%
+ \else
+ \getparameters[\??pp][#1]%
+ \setuppapersize
+ \fi}
+
+%D For the moment we need to fake this macro.
+
+\ifx\setuppapersize\undefined
+ \let\setuppapersize\relax
+\fi
+
+%D We set the defaults to the dimensions of an A4 sheet of
+%D paper.
+
+\definepapersize
+ [\c!width=210mm,\c!height=297mm,\c!offset=\!!zeropoint]
+
+%D \macros
+%D {setuppaper,setuppapersize}
+%D
+%D When setting up the papersize on which to typeset and
+%D print, we can also determine some more characteristics.
+%D
+%D \showsetup{setuppapersize}
+%D
+%D We keep track of these features with the following
+%D variables.
+
+\chardef\papermirror =0 \chardef\printmirror =0
+\chardef\paperorientation=0 \chardef\printorientation=0
+\chardef\paperreverse =0 \chardef\printreverse =0
+\chardef\paperlandscape =0 \chardef\printlandscape =0
+
+\let\papersize\empty \let\printpapersize\empty
+
+\def\paperscale{1} \newif\ifnegateprintbox
+
+% \def\dosetuppapersize[#1][#2]%
+% {\doifassignmentelse{#1}
+% {\getparameters[\??pp][#1]}
+% {\doifassignmentelse{#2}
+% {\getparameters[\??pp#1][#2]}
+% {\dodosetuppapersize[#1][#2]}}}
+%
+% The next version is more extensive; here we can
+% associate paper and page with key/value like settinsg,
+% which is handy in 'example' when we use setups
+
+\def\setuppaper[#1]%
+ {\getparameters[\??pp][\c!paper=,\c!page=,#1]%
+ \scratchcounter\@@ppnx
+ \multiply\scratchcounter\@@ppny
+ \edef\@@ppxy{\the\scratchcounter}%
+ \doifelsenothing\@@pppage
+ {\doifsomething\@@pppaper
+ {\dodosetuppapersize[\papersize][\@@pppaper]}}
+ {\doifelsenothing\@@pppaper
+ {\dodosetuppapersize[\@@pppage][\printpapersize]}
+ {\dodosetuppapersize[\@@pppage][\@@pppaper]}}}
+
+\def\setuppapersize
+ {\dodoubleempty\dosetuppapersize}
+
+\def\dosetuppapersize[#1][#2]%
+ {\doifassignmentelse{#1}
+ {\setuppaper[#1]}
+ {\doifassignmentelse{#2}
+ {\getparameters[\??pp#1][#2]}
+ {\dodosetuppapersize[#1][#2]}}}
+
+\def\dodosetuppapersize[#1][#2]%
+ {\ifsecondargument
+ \expanded{\dododosetuppapersize[#1][#2]}%
+ \calculatehsizes
+ \calculatevsizes
+ \recalculatelogos
+ \recalculatebackgrounds
+ \recalculatelayout
+ \else\iffirstargument
+ \setuppapersize[#1][#2]%
+ \else\ifx\papersize\undefined\else
+ \restorepapersize
+ \fi\fi\fi}
+
+\def\dododosetuppapersize[#1][#2]%
+ {\xdef\restorepapersize
+ {\noexpand\setuppapersize[#1][#2]}%
+ \dosetuppaperorientation{#1}\paperlandscape\paperorientation\paperreverse\papermirror
+ \dosetuppaperorientation{#2}\printlandscape\printorientation\printreverse\printmirror
+ \def\docommando##1%
+ {\doifsomething{##1}{\doifdefined{\??pp##1\c!width}
+ {\global\paperwidth\getvalue{\??pp##1\c!width}%
+ \global\paperheight\getvalue{\??pp##1\c!height}%
+ \calculatepaperoffsets{##1}%
+ \xdef\papersize{##1}}}}%
+ \processcommacommand[#1]\docommando
+ \doifdefinedelse{\??pp#1\c!scale}
+ {\edef\paperscale{\getvalue{\??pp#1\c!scale}}}
+ {\edef\paperscale{1}}%
+ \def\docommando##1%
+ {\doifsomething{##1}{\doifdefined{\??pp##1\c!width}
+ {\global\printpaperwidth\getvalue{\??pp##1\c!width}%
+ \global\printpaperheight\getvalue{\??pp##1\c!height}%
+ \xdef\printpapersize{##1}}}}%
+ \processcommacommand[#2]\docommando
+ \global\setdimentoatleast\paperwidth \onepoint
+ \global\setdimentoatleast\paperheight \onepoint
+ \global\setdimentoatleast\printpaperwidth \onepoint
+ \global\setdimentoatleast\printpaperheight\onepoint
+ \ifcase\paperlandscape\else
+ \doglobal\swapdimens\paperwidth\paperheight
+ \fi
+ \ifcase\printlandscape\else
+ \doglobal\swapdimens\printpaperwidth\printpaperheight
+ \fi
+ % this check can be confusing, so we've added the possibility
+ % to bypass this test: \setuppapersize[option=fit]
+ \doif\@@ppoption\v!max % \v!fit is
+ {\bgroup
+ % we need to pre-swap else we get the wrong paper size
+ \doifinset\paperorientation{90,270}{\swapdimens\paperwidth\paperheight}%
+ \doifinset\printorientation{90,270}{\swapdimens\printpaperwidth\printpaperheight}%
+ \ifdim\paperheight>\printpaperheight
+ \global\printpaperheight\paperheight
+ \writestatus\m!systems{print height forced to paper height}%
+ \fi
+ \ifdim\paperwidth>\printpaperwidth
+ \global\printpaperwidth\paperwidth
+ \writestatus\m!systems{print width forced to paper width}%
+ \fi
+ \egroup}}
+
+\def\dosetuppaperorientation#1#2#3#4#5%
+ {\global\chardef#2\zerocount
+ \global\chardef#5\zerocount
+ \globallet#3\!!zerocount
+ \globallet#4\!!zerocount
+ \global\negateprintboxfalse
+ \processallactionsinset
+ [#1]
+ [ \v!landscape=>\global\chardef#2\plusone,
+ \v!mirrored=>\global\chardef#5\plusone,
+ \v!rotated=>\gdef#3{90}\gdef#4{270},
+ \v!negative=>\global\negateprintboxtrue,
+ 90=>\gdef#3{90}\gdef#4{270},
+ 180=>\gdef#3{180}\gdef#4{0},
+ 270=>\gdef#3{270}\gdef#4{90}]}
+
+\ifx\calculatepaperoffsets\undefined
+
+ \def\calculatepaperoffsets#1%
+ {\scratchdimen\getvalue{\??pp#1\c!offset}%
+ \global\advance\paperwidth -2\scratchdimen
+ \global\advance\paperheight-2\scratchdimen}
+
+\fi
+
+\let\restorepapersize\relax
+
+\def\checkforems[#1]%
+ {\def\docommando##1%
+ {\beforesplitstring##1\at em\to\asciia
+ \doifnot\asciia{##1}
+ {\aftersplitstring\asciia\at=\to\asciia
+ \doifsomething\asciia
+ {\showmessage\m!systems{10}{##1}}}}%
+ \processcommalist[#1]\docommando}
+
+\ifx\setups\undefined \def\setups[#1]{\setdefaultpenalties} \fi
+
+% \newtoks \everybeforelayout \relax
+% \newtoks \everyafterlayout \relax
+
+\def\recalculatelayout
+ {\doifsomething{\layoutparameter\c!page\layoutparameter\c!paper}
+ {\expanded{\dododosetuppapersize[\layoutparameter\c!page][\layoutparameter\c!paper]}}%
+ \dorecalculatelayout}
+
+\def\dorecalculatelayout
+ {%\the\everybeforelayout
+ \setups[\layoutparameter\c!preset]%
+ \global\leftmarginwidth \layoutparameter\c!leftmargin
+ \global\rightmarginwidth\layoutparameter\c!rightmargin
+ \global\leftedgewidth \layoutparameter\c!leftedge
+ \global\rightedgewidth \layoutparameter\c!rightedge
+ \global\headerheight \layoutparameter\c!header
+ \global\footerheight \layoutparameter\c!footer
+ \global\bottomheight \layoutparameter\c!bottom
+ \global\topheight \layoutparameter\c!top
+ \global\backspace \layoutparameter\c!backspace
+ \global\topspace \layoutparameter\c!topspace
+ \setlayoutdimensions % the rest of the `dimensions'
+ \doifelse\@@lygrid\v!yes\gridsnappingtrue\gridsnappingfalse
+ \ifgridsnapping
+ \setsystemmode\v!grid
+ \else
+ \resetsystemmode\v!grid
+ \fi
+ \setups[\layoutparameter\c!setups]% depends on gridsnapping !
+ \simplesetupwhitespace
+ \simplesetupblank
+ \global\cutspace\layoutparameter\c!cutspace
+ \relax
+ \doifelse{\layoutparameter\c!width}\v!middle
+ {\ifdim\cutspace=\zeropoint
+ \global\cutspace\backspace
+ \fi
+ \global\makeupwidth\paperwidth
+ \global\advance\makeupwidth -\backspace
+ \global\advance\makeupwidth -\cutspace}
+ {\doifelse{\layoutparameter\c!width}\v!fit
+ {\ifdim\cutspace=\zeropoint
+ \global\cutspace\backspace
+ \fi
+ \global\makeupwidth\paperwidth
+ \global\advance\makeupwidth -\cutspace
+ \scratchdimen\backspace
+ \advance\scratchdimen -\leftedgewidth
+ \advance\scratchdimen -\leftedgedistance
+ \advance\scratchdimen -\leftmarginwidth
+ \advance\scratchdimen -\leftmargindistance\relax
+ \ifdim\scratchdimen<\zeropoint
+ \scratchdimen\zeropoint
+ \fi
+ \global\advance\makeupwidth -\rightmargindistance
+ \global\advance\makeupwidth -\rightmarginwidth
+ \global\advance\makeupwidth -\rightedgedistance
+ \global\advance\makeupwidth -\rightedgewidth
+ \global\advance\makeupwidth -\scratchdimen}
+ {\global\makeupwidth\layoutparameter\c!width\relax
+ \ifdim\cutspace=\zeropoint
+ \global\cutspace\paperwidth
+ \global\advance\cutspace-\makeupwidth
+ \global\advance\cutspace-\backspace
+ % \else
+ % A kind of inconsistent specification, but used
+ % in for instance s-pre-19.tex; the cutspace is
+ % used only for determining some kind of right
+ % margin; don't use this in doublesided mode
+ \fi}}%
+ \scratchdimen\layoutparameter\c!bottomspace\relax
+ %\ifdim\scratchdimen=\zeropoint
+ % \scratchdimen\topspace
+ %\fi
+ \global\bottomspace\layoutparameter\c!bottomspace\relax
+ \global\layoutlines0\number\layoutparameter\c!lines\relax % may be empty
+ \ifcase\layoutlines
+ \doifelse{\layoutparameter\c!height}\v!middle
+ {\ifdim\bottomspace=\zeropoint
+ \global\bottomspace\topspace
+ \fi
+ \global\makeupheight\paperheight
+ \global\advance\makeupheight -\topspace
+ \global\advance\makeupheight -\bottomspace}
+ {\doifelse{\layoutparameter\c!height}\v!fit
+ {\ifdim\bottomspace=\zeropoint
+ \global\bottomspace\topspace
+ \fi
+ \global\makeupheight\paperheight
+ \global\advance\makeupheight -\bottomspace
+ \scratchdimen\topspace
+ \advance\scratchdimen -\topheight
+ \advance\scratchdimen -\topdistance\relax
+ \ifdim\scratchdimen<\zeropoint
+ \scratchdimen\zeropoint
+ \fi
+ \global\advance\makeupheight -\bottomdistance
+ \global\advance\makeupheight -\bottomheight
+ \global\advance\makeupheight -\scratchdimen}
+ {\global\makeupheight\layoutparameter\c!height\relax
+ \ifdim\bottomspace=\zeropoint
+ \global\bottomspace\paperheight
+ \global\advance\bottomspace-\makeupheight
+ \global\advance\bottomspace-\topspace
+ \else
+ % inconsistent specification
+ \fi}}%
+ \else
+ % beware, when the bodyfont changes (switched) this will change as well; implementing
+ % a global lineheight is tricky: should we take the bodyfont interlinespace or the one set
+ % independent of the bodyfont (before or after a layout spec); way too fuzzy, so we
+ % stick to the current method (after a night of experimenting ...2003/10/13)
+ \global\makeupheight\layoutparameter\c!lines\lineheight
+ % new, cleaner
+ \global\advance\makeupheight-\strutheight
+ \global\advance\makeupheight \topskip
+ % new, was a bug
+ \global\advance\makeupheight \headerdistance
+ \global\advance\makeupheight \footerdistance
+ % so far
+ \global\advance\makeupheight \headerheight
+ \global\advance\makeupheight \footerheight
+ \fi
+ \rugoffset\layoutparameter\c!horoffset
+ \kopoffset\layoutparameter\c!veroffset
+ \global\setdimentoatleast\makeupwidth\onepoint
+ \global\setdimentoatleast\makeupheight \onepoint
+ % \checkcurrentlayout % here ?
+ % \the\everyafterlayout
+ \calculatelayoutextras
+ \calculatehsizes
+ \calculatevsizes
+ \calculatepseudocolumns
+ \checkgridsnapping
+ \recalculatelogos
+ \recalculatebackgrounds}
+
+\def\calculatepseudocolumns
+ {\global\layoutcolumns\layoutparameter\c!columns
+ \global\layoutcolumndistance\layoutparameter\c!columndistance
+ \global\layoutcolumnwidth-\layoutcolumns\layoutcolumndistance
+ \global\advance\layoutcolumnwidth\layoutcolumndistance
+ \global\advance\layoutcolumnwidth\makeupwidth
+ \global\divide\layoutcolumnwidth\layoutcolumns
+ \dorecurse\layoutcolumns
+ {\scratchdimen\layoutcolumnwidth
+ \advance\scratchdimen\layoutcolumndistance
+ \scratchcounter\recurselevel
+ \advance\scratchcounter\minusone
+ \scratchdimen\scratchcounter\scratchdimen
+ \setxvalue{\??ly:c:\recurselevel}{\the\scratchdimen}}}
+
+%\dorecurse\layoutcolumns
+% {\setxvalue{\??ly:c:\recurselevel}{\the\dimexpr
+% (\numexpr(\recurselevel-1)\dimexpr(\layoutcolumnwidth+\layoutcolumndistance))}}
+
+\def\layoutcolumnoffset#1%
+ {\executeifdefined{\??ly:c:#1}\!!zeropoint}
+
+\def\checklayout
+ {\ifdim\makeupheight=\layoutlines\lineheight \else \recalculatelayout \fi}
+
+\appendtoks \checklayout \to \everystarttext
+
+% document:
+%
+% \setuplayout[odd][state=stop] \setuplayout[even][state=stop] \setuplayout[page]
+%
+% \startstandardmakeup[page=blank] ... \stopstandardmakeup
+
+\def\checkcurrentlayout % public and used in naw, so keep this name
+ {\ifundefined{\??ly\realfolio\c!state}%
+ \doifoddpageelse\checkcurrentoddlayout\checkcurrentevenlayout
+ \else
+ \doifvalue{\??ly\realfolio\c!state}\v!start
+ {\xdef\currentlayout{\realfolio}\recalculatelayout}% new, global
+ \fi}
+
+\def\checkcurrentoddlayout
+ {\ifundefined{\??ly\v!odd\c!state}\else
+ \doifvalue{\??ly\v!odd\c!state}\v!start
+ {\globallet\currentlayout\v!odd\recalculatelayout}% new, global
+ \fi}
+
+\def\checkcurrentevenlayout
+ {\ifundefined{\??ly\v!even\c!state}\else
+ \doifvalue{\??ly\v!even\c!state}\v!start
+ {\globallet\currentlayout\v!even\recalculatelayout}% new, global
+ \fi}
+
+\appendtoks \checkcurrentlayout \to \everyaftershipout
+
+\newif\ifdoublesidedprint
+
+\def\presetcenterpagebox % in \setuplayout !!!!!!!!!!!!!!!!
+ {\doublesidedprintfalse
+ \ExpandFirstAfter\processallactionsinset
+ [\@@lylocation]
+ [ \v!middle=>{\setuppapersize[\c!left=\hss,\c!right=\hss,\c!top=\vss,\c!bottom=\vss]},
+ \v!left=>{\setuppapersize[\c!left=,\c!right=\hss]},
+ \v!right=>{\setuppapersize[\c!left=\hss,\c!right=]},
+ \v!bottom=>{\setuppapersize[\c!top=\vss,\c!bottom=]},
+ \v!top=>{\setuppapersize[\c!top=,\c!bottom=\vss]},%
+ \v!doublesided=>\doublesidedprinttrue,
+ \v!singlesided=>\doublesidedprintfalse]}
+
+\def\definelayout
+ {\dodoubleargument\dodefinelayout}
+
+\def\dodefinelayout[#1][#2]%
+ {\getparameters[\??ly#1][\c!state=\v!start,#2]}
+
+\def\dodosetuplayout[#1][#2]%
+ {\ConvertToConstant\doifnot{#2}\v!reset % #2 ?
+ {\getparameters[\??ly#1][#2]%
+ \checkforems[#2]}}
+
+% \def\dosetuplayout[#1][#2]%
+% {\let\currentlayout\empty
+% \ifsecondargument
+% \dodosetuplayout[#1][#2]%
+% \else\iffirstargument
+% \doifassignmentelse{#1}
+% {\dodosetuplayout[][#1]}
+% {\doifnot{#1}\v!reset{\def\currentlayout{#1}}}%
+% \fi\fi
+% \recalculatelayout
+% \checkcurrentlayout % here ?
+% \presetcenterpagebox}
+
+% global needed for non-doublesided standardmakeup
+
+\def\dosetuplayout[#1][#2]%
+ {\globallet\currentlayout\empty % new, global
+ \ifsecondargument
+ \dodosetuplayout[#1][#2]%
+ \else\iffirstargument
+ \doifassignmentelse{#1}
+ {\dodosetuplayout[][#1]}
+ {\doifnot{#1}\v!reset{\xdef\currentlayout{#1}}}% new, global
+ \fi\fi
+ \recalculatelayout
+ \checkcurrentlayout % here ?
+ \presetcenterpagebox}
+
+\def\setuplayout
+ {\dodoubleempty\dosetuplayout}
+
+\let\@@zaheight=\!!zeropoint
+
+\def\dopushpagedimensions
+ {\xdef\oldtextheight {\the\textheight }%
+ \xdef\oldfooterheight{\the\footerheight}%
+ \global\let\@@zaheight\@@zaheight}
+
+\def\dopoppagedimensions
+ {\global\textheight \oldtextheight
+ \global\footerheight\oldfooterheight
+ \recalculatelayout
+ \global\let\pushpagedimensions\dopushpagedimensions
+ \global\let\poppagedimensions\relax}
+
+\let\poppagedimensions = \relax
+\let\pushpagedimensions = \dopushpagedimensions
+
+% Elke \csname ... \endcsname wordt ook aangemaakt, dus ook
+% in een test met \doifdefined. Bij veel bladzijden kan dit
+% te veel macro's kosten. Vandaar de set \adaptedpages. Het
+% kost tijd, maar scheelt macro's.
+
+\let\adaptedpages\empty
+
+\def\adaptpagedimensions
+ {\ifx\adaptedpages\empty\else
+ \rawdoifinsetelse\realfolio\adaptedpages
+ {\getvalue{\??za\realfolio}%
+ \letbeundefined{\??za\realfolio}}
+ \donothing
+ \fi}
+
+\def\checkpagedimensions
+ {\poppagedimensions
+ \adaptpagedimensions}
+
+\def\reportpagedimensions
+ {\ifx\poppagedimensions\relax \else
+ \space\@@zaheight\space-\space
+ \fi
+ \realfolio}
+
+\def\dodoadaptlayout[#1]%
+ {\getparameters[\??za][\c!height=,\c!lines=0,#1]%
+ \pushpagedimensions
+ \ifcase\@@zalines\relax
+ \showmessage\m!layouts1{\@@zaheight,\realfolio}%
+ \else
+ \showmessage\m!layouts1{\@@zalines\space\v!lines,\realfolio}%
+ \def\@@zaheight{\@@zalines\openlineheight}%
+ \fi
+ \doifelse\@@zaheight\v!max
+ {\balancedimensions\textheight\footerheight\footerheight}
+ {\balancedimensions\textheight\footerheight\@@zaheight}%
+ \ifdim\footerheight<\zeropoint
+ \global\advance\textheight \footerheight
+ \global\footerheight\zeropoint
+ \global\xdef\@@zaheight{\layoutparameter\c!footer\space(\v!max)}%
+ \fi
+ \setvsize
+ \global\pagegoal\vsize % nog corrigeren voor insertions ?
+ \recalculatelogos
+ \recalculatebackgrounds
+ \global\let\pushpagedimensions\relax
+ \global\let\poppagedimensions\dopoppagedimensions}
+
+\def\doadaptlayout[#1][#2]%
+ {\doifelsenothing{#2}
+ {\dodoadaptlayout[#1]}
+ {\def\docommando##1%
+ {\addtocommalist{##1}\adaptedpages
+ \setgvalue{\??za##1}{\dodoadaptlayout[#2]}}%
+ \processcommalist[#1]\docommando
+ \adaptpagedimensions}}
+
+\def\adaptlayout
+ {\dodoubleempty\doadaptlayout}
+
+% describe interface
+
+%D Centering the paper area on the print area is determined
+%D by the \type {top}, \type {bottom}, \type {left} and \type
+%D {right} parameters.
+
+\def\centerpagebox#1%
+ {\printpaperwidth\paperscale\printpaperwidth
+ \printpaperheight \paperscale\printpaperheight
+ \setbox#1\vbox to \printpaperheight
+ {\@@pptop
+ \hbox to \printpaperwidth
+ {\ifdoublesidedprint
+ \doifbothsides \@@ppleft \box#1\@@ppright
+ \orsideone \@@ppleft \box#1\@@ppright
+ \orsidetwo \@@ppright\box#1\@@ppleft
+ \od \else \@@ppleft \box#1\@@ppright
+ \fi}%
+ \par
+ \@@ppbottom}}
+
+\def\offsetprintbox#1%
+ {\ifdim\kopoffset=\zeropoint % \relax
+ \ifdim\rugoffset=\zeropoint
+ \donefalse
+ \else
+ \donetrue
+ \fi
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \edef\next{\wd#1\the\wd#1\ht#1\the\ht#1\dp#1\the\dp#1}%
+ \setbox#1\vbox
+ {%\forgetall
+ \offinterlineskip
+ \vskip\kopoffset
+ \doifbothsides
+ \hskip\rugoffset
+ \orsideone
+ \hskip\rugoffset
+ \orsidetwo
+ \hskip-\rugoffset
+ \od
+ \box#1}%
+ \next
+ \fi}
+
+% \def\replicatebox#1#2#3%
+% {\setbox#1=\vbox
+% {%\forgetall
+% \offinterlineskip
+% \dorecurse{#3}
+% {\hbox{\dorecurse{#2}{\copy#1\hskip\@@lydx}\unskip}%
+% \vskip\@@lydy}
+% \unskip}}
+%
+% \def\replicatepagebox#1%
+% {\ifnum\@@lynx>0 \ifnum\@@lyny>0
+% \replicatebox{#1}{\@@lynx}{\@@lyny}%
+% \fi\fi}
+
+\def\replicatepagebox#1%
+ {\ifnum\@@lynx>\plusone
+ \donetrue
+ \else\ifnum\@@lyny>\plusone
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \setbox#1\vbox
+ {%\forgetall
+ \offinterlineskip
+ \dorecurse\@@lyny
+ {\hbox{\dorecurse\@@lynx{\copy#1\hskip\@@lydx}\unskip}%
+ \vskip\@@lydy}
+ \unskip}%
+ \fi}
+
+\def\orientpagebodybox#1#2#3%
+ {\ifnum#2#3>\zerocount
+ \setbox#1\vbox
+ {\edef\somerotation{\ifdubbelzijdig\ifodd\realpageno#2\else#3\fi\else#2\fi}%
+ \dorotatebox\somerotation\hbox{\box#1}}%
+ \fi}
+
+\def\orientpaperbox#1%
+ {\orientpagebodybox{#1}\paperorientation\paperreverse}
+
+\def\orientprintbox#1%
+ {\orientpagebodybox{#1}\printorientation\printreverse}
+
+\def\mirrorpagebodybox#1#2%
+ {\ifcase#2\or
+ \setbox#1\vbox
+ {\domirrorbox\vbox{\box#1}}%
+ \fi}
+
+\def\mirrorpaperbox#1%
+ {\mirrorpagebodybox{#1}\papermirror}
+
+\def\mirrorprintbox#1%
+ {\mirrorpagebodybox{#1}\printmirror}
+
+\def\scalepagebox#1%
+ {\ifdim\@@lyscale\points=\onepoint \else
+ \setbox#1\vbox
+ {\scale[\c!sx=\@@lyscale,\c!sy=\@@lyscale]{\box#1}}%
+ \paperwidth\@@lyscale\paperwidth
+ \paperheight \@@lyscale\paperheight
+ \fi}
+
+\def\negateprintbox#1%
+ {\ifnegateprintbox
+ \negatecolorbox{#1}%
+ \fi}
+
+\def\pagecutmarksymbol {\the\realpageno}
+\def\pagecutmarklength {.5cm}
+\let\pagecutmarktoptext \empty
+\let\pagecutmarkbottomtext \empty
+
+\def\extrapagecutmarkbottomtext
+ {\rlap{\jobname}\hfill\currentdate\space-\space\currenttime\hfill\llap{\realfolio}}
+
+\def\makepagecutbox % #1
+ {\let\cutmarksymbol \pagecutmarksymbol
+ \let\cutmarklength \pagecutmarklength
+ \let\cutmarktoptext \pagecutmarktoptext
+ \let\cutmarkbottomtext\pagecutmarkbottomtext
+ \makecutbox}
+
+\def\addpagecutmarks % #1
+ {\doifelse\@@lymarking\v!on
+ \makepagecutbox
+ {\doifelse\@@lymarking\v!empty
+ {\let\pagecutmarksymbol\empty
+ \let\pagecutmarktoptext\empty
+ \let\pagecutmarkbottomtext\empty
+ \makepagecutbox}
+ {\doifelse\@@lymarking\v!text
+ {\let\pagecutmarksymbol\empty
+ \let\pagecutmarkbottomtext\extrapagecutmarkbottomtext
+ \makepagecutbox}
+ \gobbleoneargument}}}
+
+\def\addpagecolormarks % #1
+ {\doifelse\@@lymarking\v!color
+ {\doaddpagecolormarks\colormarkbox}
+ {\doifelse\@@lymarking\v!screen
+ {\doaddpagecolormarks\rastermarkbox}
+ \gobbleoneargument}}
+
+\def\doaddpagecolormarks#1#2%
+ {\makepagecutbox{#2}%
+ \ifnum\horizontalcutmarks>2 \chardef\colormarkoffset4 \fi
+ \ifnum\verticalcutmarks >2 \chardef\colormarkoffset4 \fi
+ #1{#2}}
+
+\newif\ifdubbelzijdig \dubbelzijdigfalse
+\newif\ifenkelzijdig \enkelzijdigtrue
+
+\def\doifsometextlineelse#1%
+ {\edef\!!stringa{\csname\??tk#1\c!state\endcsname}%
+ \ifx\!!stringa\v!none
+ \@EA\secondoftwoarguments
+ \else\ifx\!!stringa\v!high
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi\fi}
+
+% NOG EENS NAGAAN WANNEER NU GLOBAL EN WANNEER NIET
+
+\def\calculatevsizes % global needed in \recalculatelayoutregel
+ {\redoglobal\textheight\makeupheight
+ \doifsometextlineelse \v!header
+ {\redoglobal\advance\textheight -\headerheight
+ \redoglobal\advance\textheight -\headerdistance}%
+ \donothing
+ \doifsometextlineelse \v!footer
+ {\redoglobal\advance\textheight -\footerheight
+ \redoglobal\advance\textheight -\footerdistance}%
+ \donothing
+ \ifzeropt\headerheight
+ \resetsystemmode\v!header
+ \else
+ \setsystemmode\v!header
+ \fi
+ \ifzeropt\footerheight
+ \resetsystemmode\v!footer
+ \else
+ \setsystemmode\v!footer
+ \fi
+ \resetglobal
+ \setvsize}
+
+\def\calculatereducedvsizes
+ {\textheight\makeupheight
+ \doifsometextlineelse \v!header
+ {\advance\textheight -\headerheight
+ \advance\textheight -\headerdistance}%
+ {\headerheight\zeropoint
+ \setlayoutdistances}%
+ \doifsometextlineelse \v!footer
+ {\advance\textheight -\footerheight
+ \advance\textheight -\footerdistance}%
+ {\footerheight\zeropoint
+ \setlayoutdistances}}
+
+\def\freezetextwidth % \makeupwidth may be set to \textwidth
+ {\textwidth\makeupwidth % which is a tricky but valid value
+ \doifsomething{\layoutparameter\c!textwidth}%
+ {\textwidth\layoutparameter\c!textwidth}% % local
+ \doifsomething{\layoutparameter\c!textmargin}%
+ {\advance\textwidth-\layoutparameter\c!textmargin % local
+ \advance\textwidth-\layoutparameter\c!textmargin}} % local
+
+\def\calculatehsizes
+ {\freezetextwidth
+ \sethsize}
+
+% De onderstaande macro voert commando's uit, afhankelijk van
+% het karakter van het paginanummer.
+%
+% \doifoddpageelse{then-commando}{else-commando}
+
+%D When we start at an even page, we need to swap the layout
+%D differently. We cannot adapt the real page number, since
+%D it is used in cross referencing. The next switch is set
+%D when we start at an even page.
+
+\newif\ifshiftedrealpageno
+
+% \def\doifoddpageelse#1#2%
+% {\ifshiftedrealpageno
+% \ifodd\realpageno#2\else#1\fi
+% \else
+% \ifodd\realpageno#1\else#2\fi
+% \fi}
+
+\def\doifoddpageelse
+ {\ifshiftedrealpageno
+ \ifodd\realpageno
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi
+ \else
+ \ifodd\realpageno
+ \@EAEAEA\firstoftwoarguments
+ \else
+ \@EAEAEA\secondoftwoarguments
+ \fi
+ \fi}
+
+\let\doifonevenpaginaelse\doifoddpageelse
+
+% what are those \relax'es doing there?
+
+\def\doifbothsidesoverruled#1\orsideone#2\orsidetwo#3\od
+ {\ifdubbelzijdig
+ \doifoddpageelse{#2}{#3}\relax
+ \else
+ #1\relax
+ \fi}
+
+\def\doifbothsides#1\orsideone#2\orsidetwo#3\od
+ {\ifdubbelzijdig
+ \ifenkelzijdig
+ #1\relax
+ \else
+ \doifoddpageelse{#2}{#3}\relax
+ \fi
+ \else
+ #1\relax
+ \fi}
+
+\newdimen\texthoffset
+
+\def\settexthoffset
+ {\doifbothsides
+ \texthoffset\backspace
+ \orsideone
+ \texthoffset\backspace
+ \orsidetwo
+ \texthoffset\paperwidth
+ \advance\texthoffset-\backspace
+ \advance\texthoffset-\makeupwidth
+ \od}
+
+\def\goleftonpage
+ {\hskip-\leftmargindistance
+ \hskip-\leftmarginwidth
+ \hskip-\leftedgedistance
+ \hskip-\leftedgewidth}
+
+\def\doifmarginswapelse#1#2%
+ {\doifbothsides#1\orsideone#1\orsidetwo#2\od}
+
+\def\swapmargins
+ {\doifmarginswapelse\relax\doswapmargins}
+
+\def\doswapmargins
+ {\let\swapmargins \relax % to prevent local swapping
+ \let\doswapmargins\relax % to prevent local swapping
+ \the\everyswapmargins}
+
+\def\rightorleftpageaction
+ {\ifdubbelzijdig
+ \ifenkelzijdig
+ \@EAEAEA\firstoftwoarguments
+ \else
+ \@EAEAEA\doifoddpageelse
+ \fi
+ \else
+ \@EA\firstoftwoarguments
+ \fi}
+
+\def\outermarginwidth {\rightorleftpageaction\rightmarginwidth \leftmarginwidth }
+\def\innermarginwidth {\rightorleftpageaction\leftmarginwidth \rightmarginwidth}
+\def\outermargindistance{\rightorleftpageaction\rightmargindistance\leftmargindistance }
+\def\innermargindistance{\rightorleftpageaction\leftmargindistance \rightmargindistance}
+
+\def\outeredgewidth {\rightorleftpageaction\rightedgewidth \leftedgewidth }
+\def\inneredgewidth {\rightorleftpageaction\leftedgewidth \rightedgewidth}
+\def\outeredgedistance {\rightorleftpageaction\rightedgedistance\leftedgedistance }
+\def\inneredgedistance {\rightorleftpageaction\leftedgedistance \rightedgedistance}
+
+\def\outerspacewidth {\rightorleftpageaction\cutspace \backspace }
+\def\innerspacewidth {\rightorleftpageaction\backspace\cutspace}
+
+\beginETEX \dimexpr
+
+ \def\leftmargintotal {\dimexpr\leftmarginwidth +\leftmargindistance \relax}
+ \def\rightmargintotal{\dimexpr\rightmarginwidth+\rightmargindistance\relax}
+ \def\leftedgetotal {\dimexpr\leftedgewidth +\leftedgedistance \relax}
+ \def\rightedgetotal {\dimexpr\rightedgewidth +\rightedgedistance \relax}
+
+ \def\leftsidetotal {\dimexpr\leftmarginwidth +\leftedgetotal \relax}
+ \def\rightsidetotal {\dimexpr\rightmarginwidth+\rightedgetotal\relax}
+ \def\leftcombitotal {\dimexpr\leftmargintotal +\leftedgetotal \relax}
+ \def\rightcombitotal {\dimexpr\rightmargintotal+\rightedgetotal\relax}
+
+ \def\innermargintotal{\dimexpr\innermarginwidth+\innermargindistance\relax}
+ \def\outermargintotal{\dimexpr\outermarginwidth+\outermargindistance\relax}
+ \def\inneredgetotal {\dimexpr\inneredgewidth +\inneredgedistance \relax}
+ \def\outeredgetotal {\dimexpr\outeredgewidth +\outeredgedistance \relax}
+
+ \def\innercombitotal {\dimexpr\innermargintotal+\inneredgetotal\relax}
+ \def\outercombitotal {\dimexpr\outermargintotal+\outeredgetotal\relax}
+ \def\innersidetotal {\dimexpr\innermarginwidth+\inneredgetotal\relax}
+ \def\outersidetotal {\dimexpr\outermarginwidth+\outeredgetotal\relax}
+
+\endETEX
+
+%D \macros
+%D {startlocallayout}
+%D
+%D These macros should be used with care. They permit local
+%D layouts (as used in fitting pages, see \type {page-app.tex}).
+
+%D This is kind of obsolete now that we have \type
+%D {\definelayout}, so this hack will disappear in future
+%D versions.
+
+\def\startlocallayout
+ {\globalpushmacro\restorepapersize
+ \globalpushmacro\currentlayout}
+
+\def\stoplocallayout
+ {\globalpopmacro\currentlayout
+ \globalpopmacro\restorepapersize
+ \restorepapersize
+ \setuplayout}
+
+%D \macros
+%D {showprint, showframe, showlayout, showsetups}
+%D
+%D We predefine a couple of tracing macros.
+%D
+%D \showsetup{showprint}
+%D \showsetup{showframe}
+%D \showsetup{showlayout}
+%D \showsetup{showsetups}
+%D %showsetup{showmargins}
+
+\fetchruntimecommand \showprint {page-run}
+\fetchruntimecommand \showframe {page-run}
+\fetchruntimecommand \showlayout {page-run}
+\fetchruntimecommand \showsetups {page-run}
+\fetchruntimecommand \showmargins {page-run}
+
+%D The default dimensions are quite old and will not change.
+%D The funny fractions were introduced when we went from fixed
+%D dimensions to relative ones. Since \CONTEXT\ is a dutch
+%D package, the dimensions are based on the metric system. The
+%D asymmetrical layout is kind of handy for short
+%D quick||and||dirty stapled documents.
+%D
+%D Although valid, it is not a real good idea to use
+%D dimensions based on the \type {em} unit. First of all,
+%D since there are no fonts loaded yet, this dimension makes
+%D no sense, and second, you would loose track of values,
+%D since they could change while going to a new page,
+%D depending on the current font setting.
+
+\setuplayout
+ [ \c!topspace=.08417508418\paperheight, % 2.5cm
+ \c!top=\!!zeropoint,
+ \c!topdistance=\!!zeropoint,
+ \c!header=.06734006734\paperheight, % 2.0cm
+ \c!headerdistance=\!!zeropoint,
+ \c!height=.84175084175\paperheight, % 25.0cm
+ \c!footerdistance=\layoutparameter\c!headerdistance,
+ \c!footer=.06734006734\paperheight, % 2.0cm
+ \c!bottomdistance=\layoutparameter\c!topdistance,
+ \c!bottom=\!!zeropoint,
+ \c!backspace=.11904761905\paperwidth, % 2.5cm
+ \c!edge=\!!zeropoint,
+ \c!edgedistance=\layoutparameter\c!margindistance,
+ \c!margin=.12649983170\paperwidth, % snijwit-2*afstand
+ \c!margindistance=.02008341748\paperwidth, % 12.0pt
+ \c!leftedge=\layoutparameter\c!edge,
+ \c!leftedgedistance=\layoutparameter\c!edgedistance,
+ \c!leftmargin=\layoutparameter\c!margin,
+ \c!leftmargindistance=\layoutparameter\c!margindistance,
+ \c!width=.71428571429\paperwidth, % 15.0cm
+ \c!rightmargindistance=\layoutparameter\c!margindistance,
+ \c!rightmargin=\layoutparameter\c!margin,
+ \c!rightedgedistance=\layoutparameter\c!edgedistance,
+ \c!rightedge=\layoutparameter\c!edge,
+ \c!veroffset=\!!zeropoint,
+ \c!bottomspace=\!!zeropoint,
+ \c!horoffset=\!!zeropoint,
+ \c!cutspace=\!!zeropoint,
+ \c!textwidth=, % dangerous option -> centered / local
+ \c!textmargin=, % dangerous option -> both sides
+ \c!textdistance=\!!zeropoint, % shift down on grid
+ \c!style=,
+ \c!color=,
+ \c!marking=\v!off,
+ \c!location=, % \v!singlesided, but empty is signal
+ \c!scale=1,
+ \c!nx=1,
+ \c!ny=1,
+ \c!dx=\!!zeropoint,
+ \c!dy=\!!zeropoint,
+ \c!grid=\v!no,
+ \c!preset=,
+ \c!setups=\systemsetupsprefix\s!default,
+ \c!clipoffset=\!!zeropoint,
+ \c!lines=0,
+ \c!paper=, % for foxet
+ \c!page=, % for foxet
+ \c!columns=1,
+ \c!columndistance=\!!zeropoint]
+
+%D First we define a whole range of (DIN) papersizes,
+%D of which the A-series makes most sense. We enable checking.
+
+%D We also set some of the parameters that will be used when
+%D positioning the typeset paper onto the print paper.
+
+\setuppaper % (size) % only used in XY imposition
+ [\c!width=\zeropoint,
+ \c!height=\zeropoint,
+ \c!topspace=\zeropoint,
+ \c!backspace=\zeropoint,
+ \c!dx=\zeropoint,
+ \c!dy=\zeropoint,
+ \c!nx=1,
+ \c!ny=1]
+
+\setuppapersize
+ [\c!option=\v!max,
+ \c!top=,
+ \c!bottom=\vss,
+ \c!left=,
+ \c!right=\hss]
+
+\definepapersize [A0] [\c!width=841mm,\c!height=1189mm]
+\definepapersize [A1] [\c!width=594mm,\c!height=841mm]
+\definepapersize [A2] [\c!width=420mm,\c!height=594mm]
+\definepapersize [A3] [\c!width=297mm,\c!height=420mm]
+\definepapersize [A4] [\c!width=210mm,\c!height=297mm]
+\definepapersize [A5] [\c!width=148mm,\c!height=210mm]
+\definepapersize [A6] [\c!width=105mm,\c!height=148mm]
+\definepapersize [A7] [\c!width=74mm,\c!height=105mm]
+\definepapersize [A8] [\c!width=52mm,\c!height=74mm]
+\definepapersize [A9] [\c!width=37mm,\c!height=52mm]
+\definepapersize [A10] [\c!width=26mm,\c!height=37mm]
+
+\definepapersize [B0] [\c!width=1000mm,\c!height=1414mm]
+\definepapersize [B1] [\c!width=707mm,\c!height=1000mm]
+\definepapersize [B2] [\c!width=500mm,\c!height=707mm]
+\definepapersize [B3] [\c!width=353mm,\c!height=500mm] % [\c!width=354mm,\c!height=500mm]
+\definepapersize [B4] [\c!width=250mm,\c!height=353mm] % [\c!width=250mm,\c!height=354mm]
+\definepapersize [B5] [\c!width=176mm,\c!height=250mm] % [\c!width=177mm,\c!height=250mm]
+\definepapersize [B6] [\c!width=125mm,\c!height=176mm] % [\c!width=125mm,\c!height=177mm]
+\definepapersize [B7] [\c!width=88mm,\c!height=125mm]
+\definepapersize [B8] [\c!width=62mm,\c!height=88mm] % [\c!width=63mm,\c!height=88mm]
+\definepapersize [B9] [\c!width=44mm,\c!height=62mm] % [\c!width=44mm,\c!height=63mm]
+\definepapersize [B10] [\c!width=31mm,\c!height=44mm]
+
+\definepapersize [C0] [\c!width=917mm,\c!height=1297mm]
+\definepapersize [C1] [\c!width=648mm,\c!height=917mm] % [\c!width=649mm,\c!height=917mm]
+\definepapersize [C2] [\c!width=458mm,\c!height=648mm] % [\c!width=459mm,\c!height=649mm]
+\definepapersize [C3] [\c!width=324mm,\c!height=458mm] % [\c!width=324mm,\c!height=459mm]
+\definepapersize [C4] [\c!width=229mm,\c!height=324mm]
+\definepapersize [C5] [\c!width=162mm,\c!height=229mm]
+\definepapersize [C6] [\c!width=114mm,\c!height=162mm] % [\c!width=115mm,\c!height=162mm]
+\definepapersize [C7] [\c!width=81mm,\c!height=114mm] % [\c!width=81mm,\c!height=115mm]
+\definepapersize [C8] [\c!width=57mm,\c!height=81mm]
+\definepapersize [C9] [\c!width=40mm,\c!height=57mm]
+\definepapersize [C10] [\c!width=28mm,\c!height=40mm]
+
+%D Per August 2004 the rounding of some (seldom used) sizes
+%D were corrected top the latest DIN specifications. Peter
+%D Rolf came up with these and a few more missing sizes.
+%D Watch out: spaces and slashes!
+
+\definepapersize [4 A0] [\c!width=1682mm,\c!height=2378mm]
+\definepapersize [2 A0] [\c!width=1189mm,\c!height=1682mm]
+\definepapersize [C6/C5] [\c!width=114mm,\c!height=229mm]
+
+%D Because there are no standardized screen sizes, we define
+%D a bunch of sizes with $4:3$ ratios. The \type {S6} size is
+%D nearly as wide as a sheet of \type {A4} paper.
+
+\definepapersize [S3] [\c!width=300pt,\c!height=225pt]
+\definepapersize [S4] [\c!width=400pt,\c!height=300pt]
+\definepapersize [S5] [\c!width=500pt,\c!height=375pt]
+\definepapersize [S6] [\c!width=600pt,\c!height=450pt]
+\definepapersize [S8] [\c!width=800pt,\c!height=600pt]
+\definepapersize [SW] [\c!width=800pt,\c!height=450pt]
+\definepapersize [SM] [\c!width=720pt,\c!height=450pt]
+
+%D These are handy too:
+
+\definepapersize [S33] [\c!width=300pt,\c!height=300pt]
+\definepapersize [S44] [\c!width=400pt,\c!height=400pt]
+\definepapersize [S55] [\c!width=500pt,\c!height=500pt]
+\definepapersize [S66] [\c!width=600pt,\c!height=600pt]
+
+%D One may wonder if \TEX\ should be used for typesetting
+%D \CDROM\ covers, but it does not hurt to have the paper size
+%D ready.
+
+\definepapersize [CD] [\c!width=120mm,\c!height=120mm]
+
+%D The next series is for our English speaking friends who
+%D decided to stick to non metric values. Thanks to Nelson
+%D Beebe for completing the inch based list.
+
+\definepapersize [letter] [\c!width=8.5in,\c!height=11in]
+\definepapersize [ledger] [\c!width=11in,\c!height=17in]
+\definepapersize [tabloid] [\c!width=17in,\c!height=11in]
+
+\definepapersize [legal] [\c!width=8.5in,\c!height=14in]
+\definepapersize [folio] [\c!width=8.5in,\c!height=13in]
+\definepapersize [executive] [\c!width=7.25in,\c!height=10.5in]
+
+\definepapersize [A] [\c!width=8.5in,\c!height=11in] % 1 sheet
+\definepapersize [B] [\c!width=11in,\c!height=17in] % 2 sheets
+\definepapersize [C] [\c!width=17in,\c!height=22in] % 4 sheets
+
+%D The next set is for Tobias Burnus, who gave me the sizes.
+
+\definepapersize [envelope 9] [\c!width=8.88in,\c!height=3.88in]
+\definepapersize [envelope 10] [\c!width=9.5in,\c!height=4.13in]
+\definepapersize [envelope 11] [\c!width=10.38in,\c!height=4.5in]
+\definepapersize [envelope 12] [\c!width=11.0in,\c!height=4.75in]
+\definepapersize [envelope 14] [\c!width=11.5in,\c!height=5.0in]
+\definepapersize [monarch] [\c!width=7.5in,\c!height=3.88in]
+\definepapersize [check] [\c!width=8.58in,\c!height=3.88in]
+\definepapersize [DL] [\c!width=110mm,\c!height=220mm] % [\c!width=220mm,\c!height=110mm]
+\definepapersize [E4] [\c!width=280mm,\c!height=400mm]
+
+%D The next three sets are supplied by Taco:
+
+\definepapersize [RA0] [\c!width=860mm,\c!height=1220mm]
+\definepapersize [RA1] [\c!width=610mm,\c!height=860mm]
+\definepapersize [RA2] [\c!width=430mm,\c!height=610mm]
+\definepapersize [RA3] [\c!width=305mm,\c!height=430mm]
+\definepapersize [RA4] [\c!width=215mm,\c!height=305mm]
+
+%D ISO SRA (supplementary raw A) sizes:
+
+\definepapersize [SRA0] [\c!width=900mm,\c!height=1280mm]
+\definepapersize [SRA1] [\c!width=640mm,\c!height=900mm]
+\definepapersize [SRA2] [\c!width=450mm,\c!height=640mm]
+\definepapersize [SRA3] [\c!width=320mm,\c!height=450mm]
+\definepapersize [SRA4] [\c!width=225mm,\c!height=320mm]
+
+%D Industry invention:
+
+\definepapersize [A3plus] [\c!width=329mm,\c!height=483mm]
+
+%D We can now default to a reasonable size. We match the print
+%D paper size with the typeset paper size. This setting should
+%D come after the first layout specification (already done).
+
+\setuppapersize
+ [A4][A4]
+
+%D A few goodies:
+
+\beginETEX \dimexpr
+
+\definepapersize
+ [oversized]
+ [\c!width=\dimexpr(\paperwidth+1.5cm),
+ \c!height=\dimexpr(\paperheight+1.5cm)]
+
+\definepapersize
+ [doublesized]
+ [\c!width=\dimexpr(\paperwidth),
+ \c!height=\dimexpr(2\paperheight)]
+
+\definepapersize
+ [doubleoversized]
+ [\c!width=\dimexpr(\paperheight+1.5cm),
+ \c!height=\dimexpr(2\paperwidth+1.5cm)]
+
+%D For orthogonality:
+
+\definepapersize
+ [undersized]
+ [\c!width=\dimexpr(\paperwidth-1.5cm),
+ \c!height=\dimexpr(\paperheight-1.5cm)]
+
+\endETEX
+
+\definelayout
+ [\v!page]
+ [\c!backspace=\zeropoint,
+ \c!cutspace=\zeropoint,
+ \c!topspace=\zeropoint,
+ \c!bottomspace=\zeropoint,
+ \c!margin=\zeropoint,
+ \c!edge=\zeropoint,
+ \c!header=\zeropoint,
+ \c!footer=\zeropoint,
+ \c!top=\zeropoint,
+ \c!bottom=\zeropoint,
+ \c!leftmargin=\zeropoint,
+ \c!rightmargin=\zeropoint,
+ \c!leftedge=\zeropoint,
+ \c!rightedge=\zeropoint,
+ \c!textdistance=\zeropoint,
+ \c!width=\v!middle,
+ \c!height=\v!middle,
+ \c!lines=0,
+ \c!grid=\v!no]
+
+\definelayout
+ [\v!middle]
+ [\c!width=\v!middle,
+ \c!height=\v!middle]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-lin.tex b/Master/texmf-dist/tex/context/base/page-lin.tex
new file mode 100644
index 00000000000..dfb99ca95c4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-lin.tex
@@ -0,0 +1,501 @@
+%D \module
+%D [ file=page-lin, % copied from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Line Numbering,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Line Numbering}
+
+\unprotect
+
+\newif\ifnumberinglines
+\newif\iftypesettinglines
+
+\newcount\linenumber
+\newcount\linestepper
+
+\chardef\linenumberlocation=0
+
+\newtoks\beforeeverylinenumbering
+\newtoks\aftereverylinenumbering
+
+\def\setuplines
+ {\dodoubleargument\getparameters[\??rg]}
+
+% old
+%
+% \def\startlines
+% {\@@rgbefore
+% \whitespace
+% %\page[\v!preference]} gaat mis na koppen, nieuw: later \nobreak
+% \begingroup
+% \def \@@rgstepyes {\parindent\zeropoint}%
+% \def \@@rgstepno {\parindent\zeropoint}%
+% \edef\@@rgparindent{\the\parindent}%
+% \globallet\@@rglinesteptoggle\!!plusone
+% \processaction
+% [\@@rgindenting]
+% [ \v!yes=>\def\@@rgstepyes{\parindent\@@rgparindent}%
+% \def\@@rgstepno {\parindent\@@rgparindent},
+% \v!odd=>\def\@@rgstepyes{\parindent\zeropoint }%
+% \def\@@rgstepno {\parindent\@@rgparindent},
+% \v!even=>\def\@@rgstepno {\parindent\zeropoint }%
+% \def\@@rgstepyes{\parindent\@@rgparindent}]%
+% \typesettinglinestrue
+% \setupwhitespace[\v!none]%
+% \obeylines
+% \let\checkindentation\relax
+% \@@rgstepno
+% \ignorespaces
+% \gdef\afterfirstobeyedline % tzt two pass, net als opsomming
+% {\gdef\afterfirstobeyedline
+% {\nobreak
+% \global\let\afterfirstobeyedline\relax}}%
+% \def\obeyedline
+% {\par
+% \let\checkindentation\relax % else problems with odd/even
+% \afterfirstobeyedline
+% \ifdim\lastskip>\zeropoint
+% \globallet\@@rglinesteptoggle\!!zerocount
+% \else
+% \doglobal\increment\@@rglinesteptoggle
+% \fi
+% \ifodd\@@rglinesteptoggle\relax
+% \@@rgstepyes
+% \else
+% \@@rgstepno
+% \fi
+% \futurelet\next\dobetweenthelines}%
+% \activatespacehandler\@@rgspace
+% \GotoPar}
+%
+% \def\stoplines
+% {\endgroup
+% \@@rgafter}
+
+\def\startlines
+ {\@@rgbefore
+ \pushmacro\checkindentation
+ \whitespace
+ %\page[\v!preference]} gaat mis na koppen, nieuw: later \nobreak
+ \begingroup
+ \setupindenting[\@@rgindenting]%
+ \typesettinglinestrue
+ \setupwhitespace[\v!none]%
+ \obeylines
+ \ignorespaces
+ \gdef\afterfirstobeyedline % tzt two pass, net als opsomming
+ {\gdef\afterfirstobeyedline
+ {\nobreak
+ \global\let\afterfirstobeyedline\relax}}%
+ \def\obeyedline
+ {\par
+ \afterfirstobeyedline
+ \futurelet\next\dobetweenthelines}%
+ \activatespacehandler\@@rgspace
+ \GotoPar}
+
+\def\stoplines
+ {\endgroup
+ \popmacro\checkindentation
+ \@@rgafter}
+
+%D When spacing is active we need to handle commands in
+%D a special way:
+%D
+%D \starttyping
+%D \setuplines[space=on]
+%D
+%D \startlines
+%D Let's talk about this{\ttsl\gobbleoneargument or}that.
+%D \stoplines
+%D
+%D \startlines
+%D Let's talk about this{\getvalue{ttsl}or}that.
+%D \stoplines
+%D \stoptyping
+%D
+%D One can indent in several ways:
+%D
+%D \starttyping
+%D \setupindenting[medium] \setuplines[indenting=odd] % no yes odd even
+%D
+%D \startlines
+%D first
+%D second
+%D third
+%D fourth
+%D \stoplines
+%D \stoptyping
+
+% this is not the natural place
+
+\def\installspacehandler#1#2% needs to set \obeyedspace
+ {\setvalue{\??sr#1}{#2}}
+
+\installspacehandler \v!on
+ {\obeyspaces
+ \def\obeyedspace{\mathortext\normalspace{\dontleavehmode{\tt\controlspace}}}%
+ \let\ =\obeyedspace}
+
+\installspacehandler \v!yes
+ {\obeyspaces
+ \def\obeyedspace{\mathortext\normalspace{\dontleavehmode \normalspace }}%
+ \let\ =\obeyedspace}
+
+\installspacehandler \v!off
+ {\normalspaces
+ \let\obeyedspace\normalspace
+ \let\ =\normalspace}
+
+\def\activatespacehandler#1%
+ {\executeifdefined{\??sr#1}{\activatespacehandler\v!off}}
+
+% \def\dobetweenthelines%
+% {\convertcommand \next \to\!!stringa % very ugly and fuzzy
+% \convertargument\obeyedline\to\!!stringb % but needed anyway
+% \ifx\!!stringa\!!stringb % but alas, it fails
+% \@@rgtussen % hopelessly in non
+% \fi} % etex
+
+\def\dobetweenthelines
+ {\doifmeaningelse\next\obeyedline\@@rginbetween\donothing}
+
+% het gebruik van \setlocalreference scheelt een hash entry
+
+\def\dodoshowlinenumber % for use elsewhere, to be extended
+ {\doplacelinenumber
+ \global\advance\linenumber \plusone}
+
+\def\completelinenumber
+ {\@@rnleft\convertnumber\@@rnconversion\linenumber\@@rnright}
+
+\def\dosetuplinenumbering[#1]%
+ {\getparameters[\??rn][\c!start=1,\c!step=1,#1]%
+ \global\linenumber\plusone}
+
+\def\setuplinenumbering
+ {\dosingleargument\dosetuplinenumbering}
+
+\def\dostartnummerenLINE
+ {\EveryPar{\placelinenumber}} % why not append to everypar ? better
+
+\def\dostopnummerenLINE
+ {\the\aftereverylinenumbering
+ \egroup}
+
+\def\dostartnummerenVERB
+ {\EveryLine{\placelinenumber}}
+
+\def\dostopnummerenVERB
+ {\the\aftereverylinenumbering
+ \egroup}
+
+\newevery \everylinenumber \relax
+
+\def\dodoplacelinenumber
+ {% beware of em's, the font is already switched !
+ \setbox\scratchbox\hbox
+ {\setbox0\hbox{\@@rncommand{\completelinenumber}}\vsmashbox0%
+ \ifcase\linenumberlocation
+ \rlap{\hbox to \@@rnwidth{\box0\hss}}% was \llap, nog testen !!
+ \or
+ \inleftmargin
+ {\forgetall
+ \doifelse\@@rnwidth\v!margin
+ {\hsize\leftmarginwidth}{\hsize\@@rnwidth}%
+ \alignedline\@@rnalign\v!right{\box0\hskip\@@rndistance}}%
+ \else
+ \inrightmargin
+ {\forgetall
+ \doifelse\@@rnwidth\v!margin
+ {\hsize\rightmarginwidth}{\hsize\@@rnwidth}%
+ \alignedline\@@rnalign\v!left{\hskip\@@rndistance\box0}}%
+ \fi}%
+ \vsmashbox\scratchbox
+ \box\scratchbox
+ \the\everylinenumber}
+
+\def\complexstartlinenumbering[#1]%
+ {\doifnot{#1}\v!continue
+ {\doifnumberelse{#1}
+ {\global\linenumber#1\relax}
+ {\doifelsenothing\@@rnstart
+ {\global\linenumber\plusone}
+ {\global\linenumber\@@rnstart}}}%
+ \chardef\linenumberlocation\zerocount
+ \processaction
+ [\@@rnlocation]
+ [ \v!inmargin=>\chardef\linenumberlocation\plusone,
+ \v!inleft=>\chardef\linenumberlocation\plusone,
+ \v!inright=>\chardef\linenumberlocation\plustwo,
+ \v!margin=>\chardef\linenumberlocation\plusone]%
+ % \v!text=>\chardef\linenumberlocation\zerocount,
+ %\s!unknown=>\chardef\linenumberlocation\zerocount,
+ %\s!default=>\chardef\linenumberlocation\zerocount]%
+ \ifcase\linenumberlocation % text
+ \advance\leftskip \@@rnwidth\relax
+ \fi
+ \chardef\@@rn@@rnmethod
+ \ifprocessingverbatim\zerocount\else\iftypesettinglines\plusone\else\plustwo\fi\fi
+ \processaction
+ [\@@rnmethod]
+ [ \v!type=>\chardef\@@rn@@rnmethod\zerocount,
+ \v!line=>\chardef\@@rn@@rnmethod\plusone,
+ \v!text=>\chardef\@@rn@@rnmethod\plustwo,
+ \v!file=>\chardef\@@rn@@rnmethod\plusthree]%
+ \ifcase\@@rn@@rnmethod % verbatim, line by line
+ \typesettinglinestrue
+ \let\dostartnummeren\dostartnummerenVERB
+ \let\stoplinenumbering\dostopnummerenVERB
+ \def\placelinenumber
+ {\doplacelinenumber
+ \global\advance\linenumber \plusone}%
+ \or % text, line by line
+ \let\dostartnummeren\dostartnummerenLINE
+ \let\stoplinenumbering\dostopnummerenLINE
+ \def\placelinenumber
+ {\doplacelinenumber
+ \global\advance\linenumber \plusone}%
+ \or % text, whole lot
+ \let\dostartnummeren\dostartnummerenPAR
+ \let\stoplinenumbering\dostopnummerenPAR
+ \def\placelinenumber
+ {\global\advance\linenumber \minusone
+ \doplacelinenumber}%
+ \or % verbatim, selective line by line
+ \typesettinglinestrue
+ \let\dostartnummeren\dostartnummerenVERB
+ \let\stoplinenumbering\dostopnummerenVERB
+ \def\placelinenumber
+ {\global\linenumber\verbatimlinenumber
+ \doplacelinenumber}%
+ \fi
+ \dostartnummeren}
+
+\def\startlinenumbering
+ {\bgroup
+ \the\beforeeverylinenumbering
+ \numberinglinestrue
+ \complexorsimpleempty\startlinenumbering}
+
+\def\doplacelinenumber
+ {\ifnum\linenumber<\@@rnstart\relax
+ \else
+ \!!counta\linenumber
+ \divide\!!counta \@@rnstep
+ \multiply\!!counta \@@rnstep\relax
+ \ifnum\!!counta=\linenumber
+ \doattributes\??rn\c!style\c!color\dodoplacelinenumber
+ \fi
+ \fi}
+
+\def\someline[#1]%
+ {\dolinereference0[#1]\ignorespaces}
+
+\def\startline[#1]%
+ {\dolinereference1[#1]\ignorespaces}
+
+\def\stopline[#1]%
+ {\removelastspace\dolinereference2[#1]}
+
+\def\inline#1[#2]%
+ {\doifelsenothing{#1}
+ {\doifinstringelse{--}\currenttextreference
+ {\in{\leftlabeltext\v!lines}{\rightlabeltext\v!lines}[\@@rnprefix#2]}
+ {\in{\leftlabeltext\v!line }{\rightlabeltext\v!line }[\@@rnprefix#2]}}
+ {\in{#1}[\@@rnprefix#2]}}
+
+\def\dostartnummerenPAR
+ {\beginofshapebox
+ \doglobal\newcounter\linereference}
+
+% localcrossref heroverwegen
+
+\def\setlinereference#1#2#3#4%
+ {\setxvalue{lrf:#1}{\noexpand\dogetlinereference{#2}{#3}{#4}}}
+
+\def\getlinereference#1%
+ {\getvalue{lrf:#1}}
+
+\def\dogetlinereference#1#2#3%
+ {\edef\linereferencename{#1}%
+ \edef\linereferenceline{#2}%
+ \edef\linereferenceplus{#3}}
+
+% 1 xxx xxx xxx xxx xxx xxx xxx
+% 2 xxx yyy yyy yyy yyy yyy yyy <= start y
+% 3 yyy yyy yyy yyy yyy yyy yyy
+% 4 yyy yyy yyy yyy yyy xxx xxx <= stop y
+% 5 xxx xxx xxx xxx xxx xxx xxx
+
+\def\dolinereference#1[#2]%
+ {\bgroup
+ \dimen0=\strutdp
+ \doif\@@rnreferencing\v!on
+ {\doglobal\increment\linereference
+ % start 1=>(n=y,l=0,p=1)
+ % stop 2=>(n=y,l=0,p=2)
+ \setlinereference{\linereference}{\@@rnprefix#2}{0}{#1}%
+ \advance\dimen0 \linereference sp}%
+ \prewordbreak
+ \vrule \!!width \zeropoint \!!depth \dimen0 \!!height \zeropoint
+ \prewordbreak
+ \egroup}
+
+\def\dostopnummerenPAR % dp's -> openstrutdepth
+ {\endofshapebox
+ \checkreferences
+ \linestepper\zerocount
+ \reshapebox{\global\advance\linestepper \plusone}%
+ \global\advance\linenumber \linestepper
+ \doifelse\@@rnreferencing\v!on
+ {\reshapebox % We are going back!
+ {\global\advance\linenumber \minusone
+ \dimen0=\dp\shapebox
+ \advance\dimen0 -\strutdp\relax
+ \ifdim\dimen0>\zeropoint
+ % 1=>4 | 2=>4 1=>2
+ % start 1=>(n=y,l=2,p=1)
+ % stop 2=>(n=y,l=4,p=2)
+ \dostepwiserecurse\plusone{\number\dimen0}\plusone
+ {\getlinereference\recurselevel
+ \setlinereference\recurselevel
+ {\linereferencename}{\the\linenumber}{\linereferenceplus}}%
+ \fi}%
+ \global\advance\linenumber \linestepper
+ \ifnum\linereference>\zerocount % anders vreemde loop in paragraphs+recurse
+ \dorecurse\linereference
+ {\getlinereference\recurselevel
+ \ifnum\linereferenceplus=2 % stop
+ % ref y: text = 4 / Kan dit buiten referentie mechanisme om?
+ \expanded{\setlocalcrossreference
+ {\referenceprefix\linereferencename}{}{}{\linereferenceline}}%
+ \fi}%
+ \dorecurse\linereference
+ {\getlinereference\recurselevel
+ \ifnum\linereferenceplus<2 % start / lone
+ \ifnum\linereferenceplus=1 % start
+ \getreferenceelements\linereferencename % text = 4
+ \ifnum\linereferenceline<0\currenttextreference\relax % 0 prevents error
+ \edef\linereferenceline{\linereferenceline--\currenttextreference}%
+ \fi
+ \fi
+ \expanded{\setlocalcrossreference
+ {\referenceprefix\linereferencename}{}{}{\linereferenceline}}%
+ \fi}%
+ \global\let\scratchline\linenumber % We are going back!
+ \reshapebox
+ {\doglobal\decrement\scratchline
+ \hbox
+ {\dorecurse\linereference
+ {\getlinereference\recurselevel
+ \getreferenceelements\linereferencename
+ \beforesplitstring\currenttextreference--\at--\to\firstline
+ \ifnum\firstline=\scratchline\relax
+ % beter een rawtextreference, i.e. expanded
+ % \textreference[\linereferencename]{\currenttextreference}%
+ \rawtextreference\s!lin\linereferencename\currenttextreference
+ \expanded{\setlocalcrossreference
+ {\referenceprefix\linereferencename}{}{}{0}}% ==done
+ \fi}%
+ \dimen0\dp\shapebox
+ \advance\dimen0 -\strutdp\relax
+ \ifdim\dimen0>\zeropoint
+ \dp\shapebox\strutdp
+ \fi
+ \placelinenumber\box\shapebox}}% no \strut !
+ \else
+ \reshapebox{\hbox{\placelinenumber\box\shapebox}}% no \strut !
+ \fi}
+ {\reshapebox{\global\advance\linenumber \minusone}%
+ \global\advance\linenumber \linestepper
+ \reshapebox{\hbox{\placelinenumber\box\shapebox}}}% no \strut !
+ \global\advance\linenumber \linestepper
+ \flushshapebox
+ \the\aftereverylinenumbering
+ \egroup}
+
+\def\emptylines
+ {\dosingleempty\doemptylines}
+
+\def\doemptylines[#1]%
+ {\endgraf\dorecurse{\iffirstargument#1\else3\fi}\crlf}
+
+\newcount\internalparagraphnumber
+
+\def\setupparagraphnumbering%
+ {\dosingleempty\dosetupparagraphnumbering}
+
+\def\dosetupparagraphnumbering[#1]%
+ {\getparameters
+ [\??ph][#1]%
+ \processaction
+ [\@@phstate]
+ [\v!start=>\let\showparagraphnumber\doshowparagraphnumberA,
+ \v!stop=>\let\showparagraphnumber\relax,
+ \v!line=>\let\showparagraphnumber\doshowparagraphnumberB,
+ \v!reset=>\global\internalparagraphnumber\zerocount
+ \let\showparagraphnumber\doshowparagraphnumberA]}
+
+\def\dodoshowparagraphnumber
+ {\global\advance\internalparagraphnumber \plusone
+ \inleftmargin % \tf normalizes em
+ {\tf{\doattributes\??ph\c!style\c!color{\the\internalparagraphnumber}}%
+ \kern\@@phdistance}}
+
+\def\doshowparagraphnumberA
+ {\ifprocessingverbatim
+ \iflinepar\dodoshowparagraphnumber\fi
+ \else
+ \dodoshowparagraphnumber
+ \fi}
+
+\def\doshowparagraphnumberB
+ {\ifnumberinglines
+ \doshowparagraphnumberA
+ \fi}
+
+\setuplinenumbering
+ [\c!method=,
+ \c!conversion=\v!numbers,
+ \c!start=1,
+ \c!step=1,
+ \c!location=\v!margin,
+ \c!style=,
+ \c!color=,
+ \c!width=2em,
+ \c!prefix=,
+ \c!referencing=\v!on]
+
+% new
+
+\setuplinenumbering
+ [\c!width=\ifcase\linenumberlocation2em\else\v!margin\fi,
+ \c!left=,
+ \c!right=,
+ \c!command=,
+ \c!distance=\zeropoint,
+ \c!align=\ifcase\linenumberlocation\v!right\or\v!right\or\v!left\fi]
+
+\setupparagraphnumbering
+ [\c!state=\v!stop,
+ \c!style=,
+ \c!color=,
+ \c!distance=\ifcase\linenumberlocation2em\else\!!zeropoint\fi]
+
+\setuplines
+ [\c!before=\blank,
+ \c!after=\blank,
+ \c!inbetween=\blank,
+ \c!indenting=\v!no,
+ \c!space=\v!default]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-log.tex b/Master/texmf-dist/tex/context/base/page-log.tex
new file mode 100644
index 00000000000..19411065e52
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-log.tex
@@ -0,0 +1,236 @@
+%D \module
+%D [ file=page-log, % moved here from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Logos,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Logos}
+
+\unprotect
+
+\startmessages dutch library: layouts
+ 7: beeldmerken berekenen
+\stopmessages
+
+\startmessages english library: layouts
+ 7: calculating logospace
+\stopmessages
+
+\startmessages german library: layouts
+ 7: berechne Platz des Logo
+\stopmessages
+
+\startmessages czech library: layouts
+ 7: pocita se misto pro logo
+\stopmessages
+
+\startmessages italian library: layouts
+ 7: calcolo dello spazio per logo
+\stopmessages
+
+\startmessages norwegian library: layouts
+ 7: beregner plass for logo
+\stopmessages
+
+\startmessages romanian library: layouts
+ 7: se calculeaza spatiul pentru logo
+\stopmessages
+
+%D Although logos can conveniently be implemented on top of
+%D background and text areas, we provide a dedicated mechanism
+%D here. One reason is that such a separate mechanism cannot
+%D interfere with the other ones, but an even more important
+%D reason is that logos are kind of special in the sense that
+%D they have a short life span and may change after the first
+%D page.
+
+%D \macros
+%D {recalculatelogos,addlogobackground}
+%D
+%D The interface to the other low level page building routines
+%D is provided by a macro that signals changes in layout
+%D specifications:
+%D
+%D \starttyping
+%D \recalculatelogos
+%D \stoptyping
+%D
+%D as well as a simple placement macro:
+%D
+%D \starttyping
+%D \addlogobackground <box>
+%D \stoptyping
+%D
+%D In no way the following boolean switch should be used
+%D directly.
+
+\newif\ifnewlogos
+
+\def\recalculatelogos
+ {\global\newlogostrue}
+
+%D The current state of logos is registered in a status
+%D variable \type {\logostatus}.
+%D
+%D \starttabulate[|l|l|l|]
+%D \NC 0 \NC don't place \NC remains 0 \NC \NR
+%D \NC 1 \NC place now \NC remains 1 \NC \NR
+%D \NC 2 \NC calulate and place \NC becomes 1 \NC \NR
+%D \NC 3 \NC calculate and place once \NC becomes 2 \NC \NR
+%D \stoptabulate
+
+\chardef\logostatus=0
+
+\def\addlogobackground#1% todo: dimension spec
+ {\ifcase\logostatus \else
+ \ifcase\logostatus
+ % no logos to take care of
+ \or % 1
+ \ifnewlogos
+ \chardef\logostatus2
+ \setlogoboxes
+ \chardef\logostatus1
+ \global\newlogosfalse
+ \fi
+ \or % 2
+ \setlogoboxes
+ \chardef\logostatus1
+ \or % 3
+ \setlogoboxes
+ \global\chardef\logostatus2
+ \fi
+ \setbox#1\vbox
+ {\offinterlineskip
+ \doifmarginswapelse
+ {\copy\leftlogos}
+ {\copy\rightlogos}
+ \box#1}%
+ \fi}
+
+%D For efficiency reasons (and since logos seldom change inside
+%D a document) we can save the left and right hand (or first
+%D and following page) logos in boxes. The areas are slightly
+%D different from the ones used in backgrounds and text
+%D placement, but still related to the page layout. The {\em
+%D left} and {\em right edge}, as well as {\em top} and {\em
+%D bottom} touch the bounding box of the paper and are
+%D therefore not the sams as their background adn text
+%D counterparts. In addition there are {\em left}, {\em right}
+%D and {\em middle} areas as well as a {\em page} one.
+
+\newbox\leftlogos
+\newbox\rightlogos
+
+\def\setlogoboxes
+ {\showmessage\m!layouts7\empty
+ \dosetlogobox\leftlogos\relax
+ \ifdubbelzijdig
+ \dosetlogobox\rightlogos\doswapmargins
+ \fi}
+
+\def\dosetlogobox#1#2%
+ {\global\setbox#1\vbox to \paperheight
+ {\dontcomplain % needed here ?
+ \calculatereducedvsizes % needed here ?
+ \offinterlineskip
+ #2\relax
+ \vskip-\topspace
+ \dodosetlogobox\v!top\blap
+ \vskip\topspace
+ \dodosetlogobox\v!header\blap
+ \vskip\headerheight
+ \vskip\headerdistance
+ \dodosetlogobox\v!text\blap
+ \vskip\textheight
+ \vskip\footerdistance
+ \vskip\footerheight
+ \dodosetlogobox\v!footer \tlap
+ \vfilll
+ \dodosetlogobox\v!bottom\tlap
+ \vskip\topspace}
+ \smashbox#1}
+
+\def\dodosetlogobox#1#2%
+ {\hbox % width equals \makeupwidth
+ {\def\docommando##1%
+ {\donefalse
+ \ifnum\logostatus=3 \ExpandBothAfter
+ \doifinset{\getvalue{\??lo#1##1}}\requestedlogos\donetrue
+ \else
+ \doifvalue{\??lo#1##1\c!state}\v!start\donetrue
+ \fi
+ \ifdone
+ #2{\hbox{\getvalue{\??lo#1##1\c!command}}}%
+ \fi}%
+ \def\dodocommando##1##2##3##4##5##6%
+ {\hsmash
+ {\hskip-\texthoffset
+ \hbox to \paperwidth
+ {\rlap{\docommando##1}\hss\llap{\docommando##6}}%
+ \hskip-\paperwidth
+ \hbox to \paperwidth
+ {\hskip\texthoffset
+ \hskip-\leftmarginwidth
+ \hskip-\leftmargindistance
+ \hbox to \leftmarginwidth{\docommando##2\hss}%
+ \hskip\leftmargindistance
+ \hbox to \makeupwidth{\docommando##3\hss\docommando##4}%
+ \hskip\rightmargindistance
+ \hbox to \rightmarginwidth{\hss\docommando##5}%
+ \hfill}}}%
+ \normalbaselines
+ \settexthoffset
+ \hsmash
+ {\hbox to \makeupwidth{\hss\docommando\c!middle\hss}}%
+ \hsmash
+ {\hskip-\texthoffset
+ \hbox to \paperwidth{\docommando\v!page\hss}}%
+ \swapmargins
+ \doifbothsidesoverruled
+ \dodocommando
+ \v!leftedge \v!leftmargin \v!left
+ \v!right \v!rightmargin \v!rightedge
+ \orsideone
+ \dodocommando
+ \v!leftedge \v!leftmargin \v!left
+ \v!right \v!rightmargin \v!rightedge
+ \orsidetwo
+ \dodocommando
+ \v!rightedge \v!rightmargin \v!right
+ \v!left \v!leftmargin \v!leftedge
+ \od}}
+
+%D The user interface is relatively simple and provides
+%D macros for assigning logos to logo areas as well as
+%D forcing placement.
+%D
+%D \showsetup{definelogo}
+%D \showsetup{placelogos}
+
+\let\definedlogos \empty
+\let\requestedlogos\empty
+
+\long\def\dodefinelogo[#1][#2][#3][#4]%
+ {\addtocommalist{#1}\definedlogos
+ \long\setvalue{\??lo#2#3}{#1}%
+ \getparameters[\??lo#2#3][#4]%
+ \global\chardef\logostatus2 }
+
+\def\definelogo
+ {\doquadrupleargument\dodefinelogo}
+
+\def\placelogos
+ {\dosingleempty\doplacelogos}
+
+\def\doplacelogos[#1]%
+ {\xdef\requestedlogos{\iffirstargument#1\else\definedlogos\fi}%
+ \global\chardef\logostatus3 }
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-lyr.tex b/Master/texmf-dist/tex/context/base/page-lyr.tex
new file mode 100644
index 00000000000..c1a9499f09d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-lyr.tex
@@ -0,0 +1,733 @@
+%D \module
+%D [ file=page-lyr,
+%D version=2000.10.20,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Layers,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Layers}
+
+% todo : first / last / next / +... => page key
+% test on left/right box when no doublesided option given
+
+\unprotect
+
+% When being backgrounds layers get the background offset
+% displacement. Should be an option, on by default
+% (compatibility).
+
+% positie=forceer == ja maar dan ook in status=herhaal
+
+%D The layering mechanism implemented here is independent of
+%D the output routine, but future extensions may depend on a
+%D more close cooperation.
+
+%D First we overload a macro from \type {core-rul}. From now on
+%D we accept a (optional) argument: the specific layer it
+%D will go in. This means that we can move an overlay from one
+%D background to the other using the dimensions of the parent.
+
+%D ! ! ! ! to be documented ! ! ! !
+
+\ifx\undefined\defineoverlay \message{loaded to early} \wait \fi
+
+\def\defineoverlay
+ {\dotripleempty\dodefineoverlay}
+
+\def\dodefineoverlay[#1][#2][#3]% overlay [layer] content
+ {\ifthirdargument
+ \writestatus{BEWARE}{This (overlay definition) has changed!}% temp
+ \def\docommando##1%
+ {\setvalue{\??ov##1}####1####2####3####4####5####6####7%
+ {\setlayer[#2]{\executedefinedoverlay
+ ##1\\#3\\{####1}{####2}{####3}{####4}{####5}{####6}{####7}}}}%
+ \else
+ \def\docommando##1%
+ {\setvalue{\??ov##1}{\executedefinedoverlay
+ ##1\\#2\\}}%
+ \fi
+ \processcommalist[#1]\docommando}
+
+%D When tracing is turned on, a couple of boxes will
+%D show up as well as the reference point.
+
+\newif\iftracelayers % \tracelayerstrue
+
+%D This handy constant saved some string memory.
+
+\def\@@layerbox{@@layerbox}
+
+%D \macros
+%D {definelayer}
+%D
+%D Each layer gets its own (global) box. This also means that
+%D the data that goes into a layer, is typeset immediately.
+%D Each layer automatically gets an associated overlay,
+%D which can be used in any background assignment.
+
+% todo : links/rechts
+
+\def\definelayer
+ {\dodoubleargument\dodefinelayer}
+
+\def\dodefinelayer[#1][#2]% \zeropoint ipv \!!zeropoint
+ {\setuplayer
+ [#1]
+ [\c!doublesided=,\c!preset=,
+ \c!state=\v!start,\c!direction=\v!normal,\c!option=,
+ \c!x=\zeropoint,\c!y=\zeropoint,\c!position=\v!no,
+ \c!line=0,\c!column=0,
+ \c!width=\nextboxwd,\c!height=\nextboxht,
+ \c!offset=\zeropoint,\c!rotation=, % geen 0 !
+ \c!hoffset=\zeropoint,\c!voffset=\zeropoint,
+ \c!dx=\zeropoint,\c!dy=\zeropoint,
+ \c!location=rb,\c!position=\v!no,\c!page=,
+ \c!method=\v!overlay,
+ \c!sx=1,\c!sy=1,\c!corner=,#2]%
+ \doifvalue{\??ll#1\c!doublesided}\v!yes
+ {\dopresetlayerbox{\v!left #1}%
+ \dopresetlayerbox{\v!right#1}}%
+ \dopresetlayerbox{#1}%
+ \defineoverlay[#1][\composedlayer{#1}]}
+
+\def\dopresetlayerbox#1%
+ {\ifundefined{\@@layerbox#1}%
+ \expandafter\newbox\csname\@@layerbox#1\endcsname
+ \else
+ \resetlayer[#1]%
+ \fi}
+
+%D \macros
+%D {setuplayer}
+%D
+%D After a layer is defined, you can change its
+%D characteristics.
+
+\def\setuplayer
+ {\dodoubleargument\dosetuplayer}
+
+\def\dosetuplayer[#1][#2]%
+ {\def\docommando##1{\getparameters[\??ll##1][#2]}%
+ \processcommalist[#1]\docommando}
+
+%D \macros
+%D {setlayer}
+%D
+%D Data is moved into a layer with the following macro. When
+%D \type {position} is set, relative positioning is used, with
+%D the current point as reference point. Otherwise the topleft
+%D corner is used as reference point.
+%D
+%D \starttyping
+%D \setlayer [identifier] [optional parameters] {data}
+%D \stoptyping
+
+\def\currentlayerdata{0}
+
+\def\setlayer
+ {\dotripleempty\dosetlayer}
+
+\def\dosetlayer[#1][#2][#3]% #4 == box do \fi is ok
+ {\doifelsevalue{\??ll#1\c!state}\v!stop
+ {\dowithnextbox\donothing\hbox}
+ {\ifthirdargument
+ \dodosetlayer[#1][#2][#3]%
+ \else
+ \dodosetlayer[#1][][#2]%
+ \fi}}
+
+\def\dodosetlayer[#1][#2][#3]% #2 = links/rechts
+ {\bgroup
+ \recalculatebackgrounds
+ \recalculatelogos
+ \doglobal\increment\currentlayerdata
+ \forgetall
+ \dontcomplain
+ \doifvalue{\??ll#1\c!option}\v!test\tracelayerstrue
+ \iftracelayers\traceboxplacementtrue\fi
+ \dowithnextbox % sneller als aparte macro
+ {\ifundefined{\@@layerbox#1}%
+ \writestatus{layer}{unknown layer #1}%
+ \else
+ \doifelse{#2}\v!even
+ {\ifodd\realpageno
+ % discard nextbox
+ \else
+ \dododosetlayer[#1][\v!left][#3]%
+ \fi}%
+ {\doifelse{#2}\v!odd
+ {\ifodd\realpageno
+ \dododosetlayer[#1][\v!right][#3]%
+ %\else
+ % discard nextbox
+ \fi}%
+ {\dododosetlayer[#1][#2][#3]}}%
+ \fi
+ \egroup}
+ \hbox}
+
+\newbox\layerbox
+
+\newdimen\@@layerxsiz \newdimen\@@layerxoff \newdimen\@@layerxpos
+\newdimen\@@layerysiz \newdimen\@@layeryoff \newdimen\@@layerypos
+
+\let\lastlayerxpos\!!zeropoint
+\let\lastlayerypos\!!zeropoint
+\let\lastlayerwd \!!zeropoint
+\let\lastlayerht \!!zeropoint
+\let\lastlayerdp \!!zeropoint
+
+% todo left/right
+
+\def\setlastlayerpos#1%
+ {\edef\layerpage{\MPp{lyr:\currentlayerdata}}%
+ \scratchdimen\MPx{lyr:#1:\layerpage}%
+ \scratchdimen-\scratchdimen
+ \advance\scratchdimen\MPx{lyr:\currentlayerdata}%
+ \xdef\lastlayerxpos{\the\scratchdimen}%
+ \scratchdimen\MPy{lyr:#1:\layerpage}%
+ \advance\scratchdimen-\MPy{lyr:\currentlayerdata}%
+ \xdef\lastlayerypos{\the\scratchdimen}}
+
+\def\definelayerpreset
+ {\dodoubleargument\dodefinelayerpreset}
+
+\def\dodefinelayerpreset[#1][#2]%
+ {\setvalue{\??ll\??ll#1}{\dopresetlayer{#2}}}
+
+\def\dopresetlayer#1#2#3% #1=list #2=tag #3=list
+ {\getparameters[\??ll#2][#1,#3]}
+
+\letempty\currentlayer
+
+\def\layerparameter#1{\csname\??ll\currentlayer#1\endcsname}
+
+\newdimen\layerwidth
+\newdimen\layerheight
+
+\chardef\@@lacome=1 % LAyerCOnstructionMEthod / temp, will be default
+
+\def\dododosetlayer[#1][#2][#3]% will be sped up
+ {% we use the global width, never change this
+ \def\currentlayer{#1}%
+ \@@layerxsiz\layerparameter\c!width
+ \@@layerysiz\layerparameter\c!height
+ \layerwidth \@@layerxsiz
+ \layerheight\@@layerysiz
+ % preroll
+ \getparameters[\??ll\currentlayer][#3]%
+ % presets and real roll
+ \executeifdefined{\??ll\??ll\layerparameter\c!preset}\gobbletwoarguments\currentlayer{#3}%
+ % that was real slow
+ \doif{\layerparameter\c!position}\v!overlay % slow
+ {\getparameters[\??ll\currentlayer][\c!width=\zeropoint,\c!height=\zeropoint,\c!position=\v!yes]}%
+ \doifsomething{\layerparameter\c!rotation}
+ {\setbox\nextbox\hbox
+ {\rotate % to be checked with new rotation
+ [\c!location=\v!high,\c!rotation=\layerparameter\c!rotation]
+ {\flushnextbox}}}%
+ % no, not local
+ % \@@layerxsiz\layerparameter\c!width
+ % \@@layerysiz\layerparameter\c!height
+ % never change that
+ \@@layerxpos\layerparameter\c!x
+ \@@layerypos\layerparameter\c!y
+ \doifelse{\layerparameter\c!hoffset}\v!max
+ {\@@layerxoff\@@layerxsiz}{\@@layerxoff\layerparameter\c!hoffset}%
+ \doifelse{\layerparameter\c!voffset}\v!max
+ {\@@layeryoff\@@layerysiz}{\@@layeryoff\layerparameter\c!voffset}%
+ \advance\@@layerxoff\layerparameter\c!offset
+ \advance\@@layeryoff\layerparameter\c!offset
+\advance\@@layerxoff\layerparameter\c!dx % internal, can be used in preset
+\advance\@@layeryoff\layerparameter\c!dy % internal, can be used in preset
+ \@@layerxpos\layerparameter\c!sx\@@layerxpos
+ \@@layerypos\layerparameter\c!sy\@@layerypos
+ \@@layerxoff\layerparameter\c!sx\@@layerxoff
+ \@@layeryoff\layerparameter\c!sy\@@layeryoff
+ \doifelse{\layerparameter\c!position}\v!yes % combine ^
+ {\setlastlayerpos{#2\currentlayer}% todo l/r %%%%%%%%%%%%
+ \@@layerxpos\lastlayerxpos
+ \@@layerypos\lastlayerypos
+ \letgvalue{\??ll\currentlayer\layerpage\c!position}\v!yes
+ \letgvalue{\??ll\currentlayer\c!state}\v!start % needed ?
+ \setbox\layerbox\vbox to \@@layerysiz
+ {\hbox to \@@layerxsiz{\xypos{lyr:\currentlayerdata}\hss}\vss}}
+ {\setbox\layerbox\emptybox
+ \globallet\lastlayerxpos\!!zeropoint
+ \globallet\lastlayerypos\!!zeropoint
+ \ExpandBothAfter\doifinset\v!bottom{\layerparameter\c!corner}
+ {\ifnum\layerparameter\c!line=\zerocount\else % can be < 0
+ \scratchcounter\layerparameter\c!line
+ \scratchcounter-\scratchcounter
+ \advance\scratchcounter\layoutlines
+ \advance\scratchcounter\plusone
+ \setevalue{\??ll\currentlayer\c!line}{\the\scratchcounter}%
+ \fi
+ \ifdim\@@layerysiz>\zeropoint
+ \advance\@@layerypos-\@@layerysiz
+ \@@layerypos-\@@layerypos
+ \@@layeryoff-\@@layeryoff
+ \fi}%
+ \ExpandBothAfter\doifinset\v!right{\layerparameter\c!corner}
+ {\ifnum\layerparameter\c!column=\zerocount\else % can be < 0
+ \scratchcounter\layerparameter\c!column
+ \scratchcounter-\scratchcounter
+ \advance\scratchcounter \layoutcolumns
+ \advance\scratchcounter \plusone
+ \setevalue{\??ll\currentlayer\c!column}{\the\scratchcounter}%
+ \fi
+ \ifdim\@@layerxsiz>\zeropoint
+ \advance\@@layerxpos-\@@layerxsiz
+ \@@layerxpos-\@@layerxpos
+ \@@layerxoff-\@@layerxoff
+ \fi}%
+ \ExpandBothAfter\doif\v!middle{\layerparameter\c!corner}
+ {\ifdim\@@layerxsiz>\zeropoint
+ \advance\@@layerxpos.5\@@layerxsiz
+ \fi
+ \ifdim\@@layerysiz>\zeropoint
+ \advance\@@layerypos.5\@@layerysiz
+ \fi}%
+ \edef\layerpage{\layerparameter\c!page}}%
+ \doifsomething\layerpage
+ {\edef\layerpage{:\layerpage}%
+ \doifundefined{\@@layerbox#2\currentlayer\layerpage}
+ {\global\expandafter\newbox\csname\@@layerbox#2\currentlayer\layerpage\endcsname}}%
+ \dontcomplain % more comfortable
+ \chardef\layerpagebox\csname\@@layerbox#2\currentlayer\layerpage\endcsname
+ \ifvoid\layerpagebox
+ \gsetboxllx\layerpagebox\zeropoint
+ \gsetboxlly\layerpagebox\zeropoint
+ \fi
+ \global\setbox\layerpagebox\vbox %to \layerparameter\c!height % new, otherwise no negative y possible
+ {\offinterlineskip
+ %postpone, to after nextboxwd correction % \hsize\layerparameter\c!width % new, keep box small
+ %\ifvoid\csname\@@layerbox\currentlayer\layerpage\endcsname\else % why not #2#1
+ \ifvoid\layerpagebox
+ \let\lastlayerwidth \zeropoint
+ \let\lastlayerheight\zeropoint
+ \else
+ \edef\lastlayerwidth {\the\wd\layerpagebox}%
+ \edef\lastlayerheight{\the\ht\layerpagebox}%
+ \ht\layerpagebox\zeropoint
+ \dp\layerpagebox\zeropoint
+ \wd\layerpagebox\zeropoint
+ \doifnot{\layerparameter\c!direction}\v!reverse{\box\layerpagebox}%
+ \fi
+ % don't move
+ \xdef\lastlayerwd{\the\nextboxwd}%
+ \xdef\lastlayerht{\the\nextboxht}% % not entirely ok when grid !
+ \xdef\lastlayerdp{\the\nextboxdp}% % not entirely ok when grid !
+ % this code
+ \doifelse{\layerparameter\c!location}\v!grid\donetrue\donefalse
+ \ifdone
+ \nextboxht\strutheight
+ \nextboxdp\strutdepth
+ \else
+ \setbox\nextbox\hbox{\alignedbox[\layerparameter\c!location]\vbox{\flushnextbox}}%
+ \fi
+ \ifnum\layerparameter\c!line=\zerocount\else % no \ifcase, can be negative
+ \advance\@@layerypos \layerparameter\c!line\lineheight
+ \advance\@@layerypos \topskip
+ \advance\@@layerypos-\lineheight
+ \advance\@@layerypos-\nextboxht
+ \fi
+ \ifnum\layerparameter\c!column=\zerocount\else % no \ifcase, can be negative
+ \advance\@@layerxpos \layoutcolumnoffset{\layerparameter\c!column}%
+ \fi
+ \ifdone
+ \setbox\nextbox\hbox{\alignedbox[rb]\vbox{\flushnextbox}}%
+ \fi
+ % ll registration
+ \scratchdimen\@@layerxpos
+ \advance\scratchdimen\@@layerxoff
+ \ifdim\scratchdimen<\getboxllx\layerpagebox
+ \gsetboxllx\layerpagebox\scratchdimen
+ \fi
+ \ifcase\@@lacome\or % this test will become obsolete
+ \advance\scratchdimen\nextboxwd
+ \nextboxwd\ifdim\scratchdimen>\lastlayerwidth \scratchdimen \else \lastlayerwidth \fi
+ \fi
+ \scratchdimen\@@layerypos
+ \advance\scratchdimen\@@layeryoff
+ \ifdim\scratchdimen<\getboxlly\layerpagebox
+ \gsetboxlly\layerpagebox\scratchdimen
+ \fi
+ % ll compensation
+ \ifcase\@@lacome\or % this test will become obsolete
+ \advance\scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \nextboxht\ifdim\scratchdimen>\lastlayerheight \scratchdimen \else \lastlayerheight \fi
+ \nextboxdp\zeropoint
+ \fi
+ % placement
+ \hsize\layerparameter\c!width % new, keep box small
+ \vbox to \layerparameter\c!height \bgroup
+ \smashbox\nextbox
+ \vskip\@@layerypos
+ \vskip\@@layeryoff
+ \hskip\@@layerxpos
+ \hskip\@@layerxoff
+ \flushnextbox
+ \ifvoid\layerpagebox
+ % already flushed
+ \else
+ % the reverse case % check !
+ \vskip-\@@layerypos
+ \vskip-\@@layeryoff
+ \box\layerpagebox
+ \fi
+ \egroup}%
+ % when position is true, the layerbox holds the compensation and needs
+ % to be placed; never change this !
+ \ifvoid\layerbox\else\box\layerbox\fi}
+
+%D Given the task to be accomplished, the previous macro is
+%D not even that complicated. It mainly comes down to skipping
+%D to the right place and placing a box on top of or below the
+%D existing content. In the case of position tracking, another
+%D reference point is chosen.
+
+%D \macros
+%D {doifelselayerdata}
+%D
+
+\def\doifelselayerdata#1%
+ {\ifundefined{\@@layerbox#1}%
+ \@EA\secondoftwoarguments
+ \else\ifvoid\csname\@@layerbox#1\endcsname
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi\fi}
+
+%D \macros
+%D {flushlayer}
+%D
+%D When we flush a layer, we flush both the main one and the
+%D page dependent one (when defined). This feature is more
+%D efficient in \ETEX\ since there testing for an undefined
+%D macro does not takes hash space.
+
+\unexpanded\def\flushlayer[#1]%
+ {\doifelsevalue{\??ll#1\c!state}\v!next
+ {\global\letvalue{\??ll#1\c!state}\v!start} % dangerous, stack-built-up
+ {\doifelsevalue{\??ll#1\c!state}\v!continue
+ {\global\letvalue{\??ll#1\c!state}\v!repeat} % dangerous, stack-built-up
+ {\doifelsevalue{\??ll#1\c!doublesided}\v!yes
+ {\doifundefinedelse{\@@layerbox#1}%
+ {\dodoflushlayerA[#1]}
+ {\doifbothsidesoverruled
+ \dodoflushlayerB\v!left [#1]% left
+ \orsideone
+ \dodoflushlayerB\v!right[#1]% right
+ \orsidetwo
+ \dodoflushlayerB\v!left [#1]% left
+ \od}}
+ {\dodoflushlayerA[#1]}}}}
+
+\def\dodoflushlayerA[#1]%
+ {\doifnotvalue{\??ll#1\c!state}\v!stop
+ {\startoverlay
+ {\dodoflushlayer1{#1}{#1}}
+ {\dodoflushlayer0{#1}{#1:\realfolio}}
+ \stopoverlay}}
+
+\def\dodoflushlayerB#1[#2]%
+ {\doifnotvalue{\??ll#2\c!state}\v!stop
+ {\startoverlay
+ {\dodoflushlayer1{#2}{#2}}
+ {\dodoflushlayer0{#2}{#2:\realfolio}}
+ {\dodoflushlayer1{#2}{#1#2}}
+ {\dodoflushlayer0{#2}{#1#2:\realfolio}}
+ \stopoverlay}}
+
+\def\dodoflushlayer#1#2#3%
+ {\ifundefined{\@@layerbox#3}%
+ \ifcase#1\else\writestatus{layer}{unknown layer #3}\fi
+ \else
+ \bgroup
+ \forgetall
+ \offinterlineskip
+ % needed because we need to handle method
+ \executeifdefined{\??ll\??ll\getvalue{\??ll#2\c!preset}}\gobbletwoarguments{#2}{}%
+ %
+ \doifvalue{\??ll#2\c!option}\v!test\tracelayerstrue
+ \iftracelayers\traceboxplacementtrue\fi
+ \!!doneafalse
+ \!!donebfalse
+ \doifvalue{\??ll#2\c!method}\v!overlay\!!doneatrue
+ \doifvalue{\??ll#2\c!method}\v!fit\!!donebtrue
+ \!!donectrue
+ \ifcase#1\else
+ \doifnotvalue{\??ll#2\c!position}\v!yes
+ {\doifvalue{\??ll#2\c!repeat}\v!yes\!!donecfalse
+ \doifvalue{\??ll#2\c!state}\v!repeat\!!donecfalse}%
+ \fi
+ \chardef\layerbox\csname\@@layerbox#3\endcsname
+ % we need to copy in order to retain the negative offsets for a next
+ % stage of additions, i.e. llx/lly accumulate in repeat mode and the
+ % compensation may differ each flush depending on added content
+ \setbox\nextbox \if!!doneb
+ \vbox
+ {\scratchdimen\getboxlly\layerbox
+ \vskip-\scratchdimen
+ \scratchdimen\getboxllx\layerbox
+ \hskip-\scratchdimen
+ \advance\scratchdimen-\wd\layerbox
+ \hsize-\scratchdimen
+ \if!!donec\box\else\copy\fi\layerbox}%
+ \else
+ \if!!donec\box\else\copy\fi\layerbox % sorry for the delay due to copying
+ \fi
+ % todo: method=offset => overlayoffset right/down (handy for backgrounds with offset)
+ \iftracelayers \ruledvbox \else \vbox \fi \if!!donea to \overlayheight \fi
+ {\hbox \if!!donea to \overlaywidth \fi
+ {% klopt dit? #3 en niet #2 ?
+ \doifvalue{\??ll#3\realfolio\c!position}\v!yes{\xypos{lyr:#3:\realfolio}}%
+ \doifoverlayelse{#3}
+ {\box\nextbox}
+ {\startlayoutcomponent{l:#3}{layer #3}\box\nextbox\stoplayoutcomponent}%
+ \hss}%
+ \vss}%
+ \if!!donec
+ \gsetboxllx\layerbox\zeropoint
+ \gsetboxlly\layerbox\zeropoint
+ \fi
+ \egroup
+ \fi}
+
+% \definelayer[test][method=fit] \setupcolors[state=start] \tracelayerstrue
+%
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{aa}\setlayer[test][x=10pt]{g}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{aa}\setlayer[test][x=-10pt]{bb}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test][x=-20pt]{cccccc}\flushlayer[test]}
+% \framed[framecolor=red,offset=overlay]{\setlayer[test]{dd}\setlayer[test][x=-20pt,y=-3pt]{eeeeee}\flushlayer[test]}
+
+%D \macros
+%D {composedlayer,placelayer,tightlayer}
+%D
+%D This is a handy shortcut, which saves a couple of braces
+%D when we use it as parameter. This name also suits better
+%D to other layering commands.
+
+\def\composedlayer#1{\flushlayer[#1]}
+
+\let\placelayer\flushlayer
+
+\def\tightlayer[#1]%
+ {\hbox
+ {\def\currentlayer{#1}% todo: left/right
+ \setbox\nextbox\emptybox % hoogte/breedte are \wd\nextbox/\ht\nextbox
+ \hsize\layerparameter\c!width % \overlaywidth = \hsize
+ \vsize\layerparameter\c!height % \overlaywheight = \vsize
+ \composedlayer{#1}}}
+
+%D \macros
+%D {resetlayer}
+%D
+%D This macro hardly needs an explanation (and is seldom
+%D needed as well).
+
+\def\doresetlayer#1%
+ {\ifundefined{\@@layerbox#1}\else
+ \global\setbox\csname\@@layerbox#1\endcsname\emptybox
+ \fi}
+
+\def\resetlayer[#1]%
+ {\doresetlayer{#1}%
+ \doifvalue{\??ll#1\c!doublesided}\v!yes % kind of redundant test
+ {\doresetlayer{\v!left #1}%
+ \doresetlayer{\v!right#1}}%
+ \doresetlayer{#1:\realfolio}}
+
+%D \macros
+%D {setMPlayer}
+%D
+%D The following layer macro uses the positions that are
+%D registered by \METAPOST.
+%D
+%D \starttyping
+%D \definelayer[test]
+%D
+%D \setMPlayer [test] [somepos-1] {Whatever we want here!}
+%D \setMPlayer [test] [somepos-2] {Whatever we need there!}
+%D \setMPlayer [test] [somepos-3] {\externalfigure[cow.mps][width=2cm]}
+%D
+%D \startuseMPgraphic{oeps}
+%D draw fullcircle scaled 10cm withcolor red ;
+%D register ("somepos-1",2cm,3cm,center currentpicture) ;
+%D register ("somepos-2",8cm,5cm,(-1cm,-2cm)) ;
+%D register ("somepos-3",0cm,0cm,(-2cm,2cm)) ;
+%D \stopuseMPgraphic
+%D
+%D \getMPlayer[test]{\useMPgraphic{oeps}}
+%D \stoptyping
+%D
+%D The last line is equivalent to
+%D
+%D \starttyping
+%D \framed
+%D [background={foreground,test},offset=overlay]
+%D {\useMPgraphic{oeps}}
+%D \stoptyping
+
+\def\setMPlayer
+ {\dotripleempty\dosetMPlayer}
+
+\def\MPlayerwidth {\hsize}
+\def\MPlayerheight{\vsize}
+
+\def\dosetMPlayer[#1][#2][#3]%
+ {\checkpositions % new, else only support after \starttext
+ \edef\MPlayerwidth {\MPw{#2}}%
+ \edef\MPlayerheight{\MPh{#2}}%
+ \setlayer[#1][\c!x=\MPx{#2},\c!y=\MPy{#2},\c!position=\v!no,#3]}
+
+\def\getMPlayer
+ {\dodoubleempty\dogetMPlayer}
+
+\def\dogetMPlayer[#1][#2]%
+ {\framed
+ [\c!background={\v!foreground,#1},
+ \c!frame=\v!off,
+ \c!offset=\v!overlay,#2]}
+
+% Some day this (old) mechanism will be combined/integrated
+% in overlays
+
+\newskip\xposition \newskip\yposition
+\newskip\xdimension \newskip\ydimension
+\newskip\xoffset \newskip\yoffset
+
+\newbox\positionbox
+
+\def\startpositioning
+ {\bgroup
+ \xposition \zeropoint \yposition \zeropoint
+ \xdimension\zeropoint \ydimension\zeropoint
+ \xoffset \zeropoint \yoffset \zeropoint
+ \hfuzz \paperwidth \vfuzz \paperheight
+ \setbox\positionbox\hbox\bgroup}
+
+\def\stoppositioning
+ {\doifnot\@@psoffset\v!yes
+ {\global\xoffset\zeropoint
+ \global\yoffset\zeropoint}%
+ \global\advance\xdimension \xoffset
+ \global\advance\ydimension \yoffset
+ \egroup
+ \vbox to \ydimension
+ {\vskip\yoffset
+ \hbox to \xdimension
+ {\hskip\xoffset
+ \box\positionbox
+ \hfill}
+ \vfill}%
+ \egroup}
+
+\def\resetpositioning
+ {\getparameters[\??ps]
+ [\c!state=\v!start,%
+ \c!unit=\s!cm,%
+ \c!factor=1,%
+ \c!scale=1,%
+ \c!xfactor=\@@psfactor,%
+ \c!yfactor=\@@psfactor,%
+ \c!xscale=\@@psscale,%
+ \c!yscale=\@@psscale,%
+ \c!xstep=\v!absolute,%
+ \c!ystep=\v!absolute,%
+ \c!xoffset=\!!zeropoint,%
+ \c!yoffset=\!!zeropoint]}
+
+\def\setuppositioning
+ {\resetpositioning
+ \dodoubleargument\getparameters[\??ps]}
+
+\def\calculateposition#1#2#3#4#5#6#7#8#9%
+ {\setdimensionwithunit\scratchskip{#1}\@@psunit
+ \scratchskip#8\scratchskip
+ \scratchskip#9\scratchskip
+ \advance\scratchskip #4\relax
+ \doif{#2}\v!relative
+ {\advance\scratchskip #3%
+ \let#4\!!zeropoint}%
+ #3\scratchskip\relax
+ \doifnot\@@psstate\v!overlay
+ {\scratchskip#5\relax
+ \advance\scratchskip #3\relax
+ \ifdim#3<-#7\relax \global#7-#3\relax \fi
+ \ifdim\scratchskip>#6\relax \global#6\scratchskip\relax \fi}}
+
+\def\position
+ {\dosingleempty\doposition}
+
+\def\doposition[#1]#2(#3,#4)%
+ {\dowithnextbox
+ {\bgroup
+ \getparameters[\??ps][#1]%
+ \dontcomplain
+ \calculateposition{#3}\@@psxstep\xposition
+ \@@psxoffset{\nextboxwd}\xdimension\xoffset
+ \@@psxscale\@@psxfactor
+ \scratchdimen\nextboxht \advance\scratchdimen \nextboxdp
+ \calculateposition{#4}\@@psystep\yposition
+ \@@psyoffset\scratchdimen\ydimension\yoffset
+ \@@psyscale\@@psyfactor
+ \vbox to \zeropoint % kan beter.
+ {\vskip\yposition
+ \hbox to \zeropoint
+ {\hskip\xposition
+ \flushnextbox
+ \hss}
+ \vss}%
+ \xdef\dopoppositioning
+ {\xposition\the\xposition
+ \yposition\the\yposition
+ \noexpand\def\noexpand\@@psxoffset{\@@psxoffset}%
+ \noexpand\def\noexpand\@@psyoffset{\@@psyoffset}}%
+ \egroup
+ \dopoppositioning
+ \ignorespaces}
+ \hbox}
+
+\resetpositioning
+
+\setuppositioning
+ [\c!unit=\s!cm,
+ \c!factor=1,
+ \c!scale=1,
+ \c!xstep=\v!absolute,
+ \c!ystep=\v!absolute,
+ \c!offset=\v!yes,
+ \c!xoffset=\!!zeropoint,
+ \c!yoffset=\!!zeropoint]
+
+%D Watch out, a redefinition:
+
+\ifx\settextpagecontent\undefined \writestatus\m!systems{error in page-lyr.tex} \wait \fi
+
+\let\normalsettextpagecontent\settextpagecontent
+
+\definelayer[OTRTEXT] \setuplayer[OTRTEXT][\c!width=\makeupwidth,\c!height=\textheight]
+
+% will be overloaded in page-spr
+
+\def\settextpagecontent#1#2#3% #2 and #3 will disappear
+ {\doifelselayerdata{OTRTEXT}
+ {\setbox#1\hbox to \makeupwidth
+ {\startoverlay
+ {\normalsettextpagecontent{#1}{#2}{#3}\box#1}
+ {\tightlayer[OTRTEXT]}
+ \stopoverlay}%
+ \dp#1\zeropoint}%
+ {\normalsettextpagecontent{#1}{#2}{#3}}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-mak.tex b/Master/texmf-dist/tex/context/base/page-mak.tex
new file mode 100644
index 00000000000..a6e5a66fd0a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-mak.tex
@@ -0,0 +1,226 @@
+%D \module
+%D [ file=page-mak, % copied from main-001,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Simple MakeUp,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / MakeUp}
+
+\unprotect
+
+%D \macros
+%D {definemakeup, setupmakeup, startmakeup}
+%D
+%D A makeup is a separate page, like a title page or colofon.
+%D There is one standard makeup page, but you can define more
+%D if needed.
+%D
+%D \starttyping
+%D \startstandardmakeup
+%D My Fancy Title
+%D \stopstandardmakeup
+%D \stoptyping
+%D
+%D The associated commands are:
+%D
+%D \showsetup{definemakeup}
+%D \showsetup{setupmakeup}
+%D \showsetup{startmakeup}
+
+\def\definemakeup
+ {\dodoubleargument\dodefinemakeup}
+
+\def\dodefinemakeup[#1][#2]%
+ {\getparameters
+ [\??do#1]%
+ [\c!width=\makeupwidth, % example in manual
+ \c!height=\textheight, % example in manual
+ \c!voffset=\!!zeropoint, % example in manual
+ \c!hoffset=\!!zeropoint, % example in manual
+ \c!commands=,
+ \c!setups=,
+ \c!page=\v!right,
+ \c!doublesided=\v!empty,
+ \c!before=,
+ \c!top=\vss,
+ \c!bottom=\vss,
+ \c!after=,
+ \c!bottomstate=\v!normal,
+ \c!topstate=\v!normal,
+ \c!textstate=\v!normal,
+ \c!headerstate=\v!stop,
+ \c!footerstate=\v!stop,
+ \c!pagestate=\v!stop, % in manual ! ! !
+ \c!color=,
+ \c!align=,
+ #2]%
+ \setvalue{\e!start#1\e!makeup}{\startmakeup[#1]}%
+ \setvalue{\e!stop #1\e!makeup}{\stopmakeup}}
+
+\def\setupmakeup
+ {\dodoubleargument\dosetupmakeup}
+
+\def\dosetupmakeup[#1]%
+ {\getparameters[\??do#1]}
+
+%D This will save us some 375 bytes in the format file.
+
+\def\makeupparameter#1{\getvalue{\??do\currentmakeup#1}}
+
+%D The \type{\start}||\type{\stop} macros are used for both
+%D the direct and indirect way. The parameterless call will
+%D build a simple box.
+
+\newtoks\everymakeup
+
+\appendtoks \postponemarks \to \everymakeup
+
+\let\currentmakeup\empty
+
+\def\startmakeup
+ {\dodoubleempty\dostartmakeup}
+
+\def\dostartmakeup[#1][#2]%
+ {\bgroup
+ \edef\currentmakeup{#1}%
+ \the\everymakeup
+ \iffirstargument
+ \setupmakeup[\currentmakeup][#2]%
+ \let\stopmakeup\dodostopmakeup
+ \expandafter \dodostartmakeup
+ \else
+ \let\stopmakeup\donostopmakeup
+ \expandafter \donostartmakeup
+ \fi}
+
+%D The simple case:
+
+\def\donostartmakeup
+ {\page
+ \setupheader[\c!state=\v!empty]%
+ \setupfooter[\c!state=\v!empty]%
+ \setsystemmode\v!makeup
+ \vbox to \textheight\bgroup\hsize\textwidth}
+
+\def\donostopmakeup
+ {\egroup
+ \flushmarks % new, here, else empty pages
+ \page
+ \egroup}
+
+%D The normal one:
+
+\newbox\makeupbox
+
+\def\dodostartmakeup
+ {\doifvaluesomething{\??do\currentmakeup\c!page}
+ {\ExpandFirstAfter\page[\makeupparameter\c!page]}%
+ \pagetype[\currentmakeup]%
+ \setsystemmode\v!makeup
+ \setupmakeuplayout
+ \makeupparameter\c!commands % hm, what is this one doing here ?
+ \startregistercolor[\makeupparameter\c!color]%
+ \global\setbox\makeupbox\vbox to \makeupparameter\c!height
+ \bgroup
+ \forgetall
+ \setups[\makeupparameter\c!setups]%
+ \hsize\makeupparameter\c!width
+ \doifsomething{\makeupparameter\c!align}
+ {\setupalign[\makeupparameter\c!align]}%
+ \makeupparameter\c!top}
+
+\def\dodostopmakeup
+ {\endgraf
+ \makeupparameter\c!bottom
+ \egroup
+ \flushmarks % new, here, else empty pages
+\stopregistercolor
+ \doflushmakeup
+ \egroup
+ \calculatehsizes
+ \calculatevsizes}
+
+%D Selective page processing is handled here. (Why?)
+
+\def\doflushmakeup
+ {\ifverwerken
+ \ifgeselecteerd
+ \doshipoutmakeup
+ \fi
+ \else
+ \ifgeselecteerd \else
+ \doshipoutmakeup
+ \fi
+ \fi
+ \ifselecteren
+ \global\geselecteerdfalse
+ \fi}
+
+\def\doshipoutmakeup
+ {\globalpushmacro\@@pnstate % new
+ \makeupparameter\c!before
+ \vbox{\hbox{\color[\makeupparameter\c!color]{\box\makeupbox}}}%
+ \setuppagenumber[\c!state=\makeupparameter\c!pagestate]%
+ \setupmakeuplayout
+ \page
+ \makeupparameter\c!after
+ \relax % voor fi
+ \ifdubbelzijdig \ifodd\realpageno\else
+ \processaction
+ [\makeupparameter\c!doublesided]
+ [ \v!yes=>\null
+ \page,
+ % \verlaagpaginanummer, % new
+ \v!empty=>{\setupmakeuplayout
+ \page[\v!blank]%
+ \null
+ \page}]%
+ % \verlaagpaginanummer]% % new
+ \fi \fi
+ % \verlaagpaginanummer % new
+ \globalpopmacro\@@pnstate} % new
+
+%D The text surrounding the main body text can be influenced
+%D by setting their associated status variables. The
+%D connection between them is made by the following macro
+
+\def\setupmakeuplayout
+ {\setupfooter[\c!state=\makeupparameter\c!footerstate]%
+ \setupheader[\c!state=\makeupparameter\c!headerstate]%
+ \setuptext [\c!state=\makeupparameter\c!textstate]%
+ \setupbottom[\c!state=\makeupparameter\c!bottomstate]%
+ \setuptop [\c!state=\makeupparameter\c!topstate]%
+ % this is needed, but no \setuplayout here; fails in texexec --fig=c
+ \recalculatelayout}
+
+%D The standard page template is defined as follows:
+
+\definemakeup
+ [\v!standard]
+ [\c!width=\makeupwidth,
+ \c!height=\textheight,
+ \c!voffset=\!!zeropoint,
+ \c!hoffset=\!!zeropoint,
+ \c!page=\v!right,
+ \c!doublesided=\v!empty]
+
+\definemakeup
+ [\v!text]
+ [\c!topstate=\v!start,
+ \c!headerstate=\v!start,
+ \c!textstate=\v!start,
+ \c!footerstate=\v!start,
+ \c!bottomstate=\v!start,
+ \c!doublesided=\v!no,
+ \c!page=\v!yes,
+ \c!top=\pseudostrut\ignorespaces,
+ \c!bottom=\obeydepth\vss]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-mar.tex b/Master/texmf-dist/tex/context/base/page-mar.tex
new file mode 100644
index 00000000000..6cec52d04ee
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-mar.tex
@@ -0,0 +1,784 @@
+%D \module
+%D [ file=page-mar, % moved here from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Marginal Things
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Support for margin words is one of the reasons for writing
+%D \CONTEXT. Over time support for marginal content has been
+%D extended en enhanced. Therefore it's always good to watch
+%D out for unexpected side effects.
+
+\writestatus{loading}{Context Core Macros / Maginal Things}
+
+\unprotect
+
+%D There are three categories and their historically grown meaning is
+%D as follows:
+%D
+%D marginlines: these are flushed relative to the start of a line and
+%D need to be invoked there.
+%D
+%D marginwords: these can be issued in the text flow and will migrate
+%D sidewards; in spite of the name, it can be a paragraph of text as
+%D well, but normally it's words.
+%D
+%D margintexts: these can be set beforehand and are flushed at the
+%D next paragraph of text (of header)
+%D
+%D While these mechanisms were rather separated, they now are slightly
+%D more integrated. Instead of low level instances we now have a mechanism
+%D for defining additional ones.
+
+%D \macros
+%D {inleftedge,inleftmargin,inrightmargin,inrightedge}
+%D
+%D The fast and clean way of putting things in the margin is
+%D using \type{\rlap} or \type{\llap}. Unfortunately these
+%D macro's don't handle indentation, left and right skips. We
+%D therefore embed them in some macro's that (force and)
+%D remove the indentation and restore it afterwards.
+
+\def\definemarginline
+ {\dodoubleargument\dodefinemarginline}
+
+\def\dodefinemarginline[#1][#2]%
+ {\getparameters
+ [\??im\??im#1]
+ [\c!location=\v!left,
+ \c!distance=\zeropoint,
+ \c!width=\leftmarginwidth,
+ \c!hoffset=\leftmargindistance,
+ \c!command=,
+ #2]%
+ \setvalue{#1}{\domarginline{#1}}}
+
+\def\domarginline#1% #2
+ {\getvalue{\s!do\??im\??im\executeifdefined{\??im\??im#1\c!location}\v!left}{#1}} % {#2}
+
+\def\doleftmarginline#1#2%
+ {\pushindentation
+ \llap
+ {\postsignalrightpage
+ \hsize\getvalue{\??im\??im#1\c!width}\relax
+ \executeifdefined{\??im\??im#1\c!command}\firstofoneargument{#2}\relax
+ \hskip\leftskip
+ \hskip\getvalue{\??im\??im#1\c!hoffset }\relax
+ \hskip\getvalue{\??im\??im#1\c!distance}}%
+ \popindentation
+ \ignorespaces}
+
+\def\dorightmarginline#1#2%
+ {\pushindentation
+ \rlap
+ {\postsignalrightpage
+ \hskip\hsize
+ \hskip-\rightskip
+ \hskip\getvalue{\??im\??im#1\c!hoffset }\relax
+ \hskip\getvalue{\??im\??im#1\c!distance}\relax
+ \hsize\getvalue{\??im\??im#1\c!width }\relax
+ \executeifdefined{\??im\??im#1\c!command}\firstofoneargument{#2}}%
+ \popindentation
+ \ignorespaces}
+
+\setvalue{\s!do\??im\??im\v!left }{\doleftmarginline}
+\setvalue{\s!do\??im\??im\v!right}{\dorightmarginline}
+\setvalue{\s!do\??im\??im\v!inner}{\presignalrightpage\doifrightpageelse\doleftmarginline \dorightmarginline}
+\setvalue{\s!do\??im\??im\v!outer}{\presignalrightpage\doifrightpageelse\dorightmarginline\doleftmarginline }
+
+\definemarginline[inleftmargin] [\c!location=\v!left, \c!width=\leftmarginwidth, \c!distance=\leftmargindistance]
+\definemarginline[inrightmargin][\c!location=\v!right,\c!width=\rightmarginwidth,\c!distance=\rightmargindistance]
+\definemarginline[inleftedge] [\c!location=\v!left, \c!width=\leftedgewidth, \c!distance=\leftedgedistance, \c!hoffset=\leftmargintotal]
+\definemarginline[inrightedge] [\c!location=\v!right,\c!width=\rightedgewidth, \c!distance=\rightedgedistance,\c!hoffset=\rightmargintotal]
+
+\definemarginline[inoutermargin][\c!location=\v!outer,\c!width=\outermarginwidth,\c!distance=\outermargindistance]
+\definemarginline[ininnermargin][\c!location=\v!inner,\c!width=\innermarginwidth,\c!distance=\innermargindistance]
+\definemarginline[inouteredge] [\c!location=\v!outer,\c!width=\outeredgewidth, \c!distance=\outeredgedistance,\c!hoffset=\outermargintotal]
+\definemarginline[ininneredge] [\c!location=\v!inner,\c!width=\inneredgewidth, \c!distance=\inneredgedistance,\c!hoffset=\innermargintotal]
+
+\definemarginline[atleftmargin] [\c!location=\v!left, \c!command=\lrlap,\c!width=\zeropoint,\c!distance=\zeropoint,\c!hoffset=\zeropoint]
+\definemarginline[atrightmargin][\c!location=\v!right,\c!command=\rllap,\c!width=\zeropoint,\c!distance=\zeropoint,\c!hoffset=\zeropoint]
+
+\ifx\lrlap\undefined \def\lrlap#1{\llap{\rlap{#1}}} \fi
+\ifx\rllap\undefined \def\rllap#1{\rlap{\llap{#1}}} \fi
+
+\def\lrlap#1{\llap{\rlap{#1}}}
+\def\rllap#1{\rlap{\hskip\hsize\llap{#1}}}
+
+%D We want to keep things efficient and therefore only handle
+%D situations like:
+%D
+%D \startbuffer
+%D \inleftedge {fine} some text \par
+%D \strut \inleftmargin {fine} some text \par
+%D \noindent \inrightmargin {fine} some text \par
+%D \noindent \strut \inrightedge {fine} some text \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D which looks like:
+%D
+%D \bgroup
+%D \getbuffer
+%D \parindent 30pt
+%D \getbuffer
+%D \egroup
+%D
+%D A torture test:
+%D
+%D \starttyping
+%D \def\TestLine#1#2{\backgroundline[#1]{\strut\white\tttf#2~\recurselevel}}
+%D
+%D \startbuffer
+%D \inleftmargin {\TestLine{red} {lm}} test test test \par
+%D \inrightmargin{\TestLine{green} {rm}} test test test \par
+%D \inleftedge {\TestLine{red} {le}} test test test \par
+%D \inrightedge {\TestLine{green} {re}} test test test \par
+%D \inoutermargin{\TestLine{blue} {om}} test test test \par
+%D \ininnermargin{\TestLine{yellow}{im}} test test test \par
+%D \inouteredge {\TestLine{blue} {oe}} test test test \par
+%D \ininneredge {\TestLine{yellow}{ie}} test test test \par
+%D \atleftmargin {\TestLine{red} {alm}} \hfill test \par
+%D \atrightmargin{\TestLine{green} {arm}} test \hfill \par
+%D \stopbuffer
+%D
+%D \dorecurse{40}\getbuffer \page
+%D \stoptyping
+
+%D New, yet undocumented:
+%D
+%D used for pascal:
+%D
+%D \starttyping
+%D \index {test} test \index {west} west \index {rest} rest
+%D
+%D \startnarrower
+%D \placeregister[index][alternative=b,command=\atleftmargin]
+%D \stopnarrower
+%D \stoptyping
+
+% todo: compensate distance when setuplayout[textwidth=..]
+% todo: generalize margin/edge model, now too much duplication
+
+%D The next bunch of macros looks messy which is due to its
+%D multi-purpose character.
+
+\chardef\margincontentdisplacement \zerocount
+\let \margincontentdistance \!!zeropoint
+\let \margincontenthoffset \!!zeropoint
+\def \margincontentlines {1}
+\def \margincontenttag {0}
+\let \margincontentseparator \empty
+\def \margincontentstrutheight {\strutht}
+
+\newcounter\margincontentlevel
+\newdimen \margincontentheight
+
+\def\setupinmargin
+ {\dodoubleempty\dosetupinmargin}
+
+\def\dosetupinmargin[#1][#2]%
+ {\ifsecondargument
+ \processcommalist[#1]{\dodosetupinmargin[#2]}% becomes [#2]{##1}
+ \else
+ \getparameters[\??im][#1]%
+ \fi}
+
+\def\dodosetupinmargin[#1]#2% [settings]{class}
+ {\checkinmargin[#2]%
+ \getparameters[\??im#2][#1]}
+
+\def\checkinmargin[#1]%
+ {\ifundefined{\??im#1\c!offset}% this offset is related to framed !
+ \addtocommalist{#1}\inmargintaglist
+ \presetmargintext[#1]%
+ \fi}
+
+\def\presetmargintext[#1]%
+ {\presetlocalframed
+ [\??im#1]%
+ \getparameters
+ [\??im#1]
+ [\c!frame=\v!off,
+ \c!offset=\v!overlay,
+ \c!line=1,
+ \c!separator=,
+ \c!width=\v!broad,
+ \c!distance=, % empty = signal
+ \c!hoffset=\zeropoint,
+ \c!style=\@@imstyle,
+ \c!color=\@@imcolor,
+ \c!strut=\@@imstrut,
+ \c!location=\@@imlocation,
+ \c!align=\@@imalign,
+ \c!before=\@@imbefore,
+ \c!after=\@@imafter]}
+
+\newdimen\naturalmargincontentheight
+
+\def\makemargintextblock#1#2#3% width l r content
+ {\bgroup
+ \forgetall % added, else problems with 'center' and nested itemize
+ \dontcomplain
+ \hsize\getvalue{\??im#1\c!width}\relax
+ \doifnumberelse\margincontenttag
+ {\ifcase\margincontenttag\relax
+ \edef\margincontenttag{#1}% first one is setups id as well
+ \fi}
+ \donothing
+ \doifnumberelse\margincontenttag
+ {\ifnum\margincontenttag>25 % to be translated
+ \writestatus\m!systems{potential margin stack overflow (\margincontenttag)}%
+ \fi}
+ \donothing
+ % we need to preserve {a,b,c} kind of settings
+ \let\margincontentalign#1%
+ \processallactionsinset
+ [\getvalue{\??im\margincontenttag\c!align}]
+ [ \v!yes=>\let\margincontentalign#1,
+ \v!no=>\let\margincontentalign\v!normal,
+ \v!inner=>\let\margincontentalign#1,
+ \v!outer=>\let\margincontentalign#2,
+ \v!left=>\let\margincontentalign\v!left,
+ \v!middle=>\let\margincontentalign\v!middle,
+ \v!right=>\let\margincontentalign\v!right]%
+ \doifvaluesomething{\??im\margincontenttag\c!align} % watch {} around set
+ {\edef\margincontentalign{{\getvalue{\??im\margincontenttag\c!align},\margincontentalign}}}%
+ %
+ \expanded{\getparameters[\??im\margincontenttag][\c!align=\margincontentalign]}%
+ %
+ \edef\margincontentstrut{\getvalue{\??im\margincontenttag\c!strut}}%
+ \savestrut %
+ \setbox\scratchbox\vbox\localframed
+ [\??im\margincontenttag]
+ [\c!strut=\v!no,\c!offset=\v!overlay] % strut handled internally
+ {\decrement\margincontentlines
+ \dorecurse\margincontentlines{\savedstrut\endgraf\nointerlineskip}% ! savedstrut
+ \@@imbefore
+ \dostartattributes{\??im\margincontenttag}\c!style\c!color\empty
+ \dosetupstrut[\margincontentstrut]% was: \setstrut % yes or no
+ \begstrut#3\endstrut\endgraf
+ \xdef\margincontentstrutheight{\the\strutht}% so that it's known outside the framed
+ \dostopattributes
+ \@@imafter}%
+ \global \naturalmargincontentheight\ht\scratchbox
+ \global\advance\naturalmargincontentheight\dp\scratchbox
+ \doif\@@imstack\v!yes
+ {\def\overlappingmargin{-20\scaledpoint}% test value, maybe .25\strutboxdp, maybe configurable
+ \setbox\scratchbox\vbox{\stackeddown\vbox{\box\scratchbox}}}% new
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp % nieuw
+ \box\scratchbox
+ \egroup}
+
+%D The stacker permits constructs like:
+%D
+%D \starttyping
+%D \setupinmargin[stack=yes]
+%D
+%D \inleft{test 1}test\break
+%D \inleft{test 2}test\break
+%D \inleft{test 1}
+%D \input tufte
+%D \inleft{test 1}
+%D \inleft{test 2}
+%D \inleft{test 3}
+%D \input tufte
+%D \inleft{test 1}
+%D \inleft{test 2\endgraf test 3}
+%D \inleft{test 4}
+%D \input tufte
+%D \inleft{test 1}
+%D \inleft{test 2\endgraf test 3}
+%D \inleft{test 4\endgraf test 5\endgraf test 6}
+%D \inleft{test 7\endgraf test 8\endgraf test 9}
+%D \input tufte
+%D \stoptyping
+
+%D This approach permits us to implement a better mechanism
+%D later. We need the \type {\graphicvadjust} in order to
+%D handle:
+%D
+%D \starttyping
+%D \inleft{test} {\red \dorecurse{40}{test }\par}
+%D {\red \inleft{test} \dorecurse{40}{test }\par}
+%D \stoptyping
+%D
+%D The outer margin color is either black or color set as
+%D main text color.
+
+\newif\ifrightmargin % documenteren
+
+\ifx\dopositionmarginbox\undefined
+ \def\dopositionmarginbox#1{\graphicvadjust{\box#1}}
+\fi
+
+% watch out, margin dimensions are swapped locally (\swapmargins)
+
+% with \margincontentmethod one can control pagebreaks
+%
+% 0 no break
+% 1 each entry is one line
+% 2 only natural height
+% 3 also stack height
+
+\chardef\margincontentmethod \plusthree % beware: 1 = old method
+\chardef\marginpagecheckmethod\plusone
+
+\def\margincontentextralines{1} % old method, play safe
+\def\nofmargincontentlines {0}
+
+\def\doplacemargintext#1#2#3#4%
+ {\dontcomplain
+ \strut
+ \doifsomething{#1}
+ {\def\margincontenttag{#1}}%
+ \doifinsetelse{\margincontenttag}{\v!left,\v!right} % ugly hack
+ {\let \margincontentdistance \empty % signal
+ \let \margincontenthoffset \zeropoint}
+ {\edef\margincontentdistance{\executeifdefined{\??im\margincontenttag\c!distance }\empty }% signal
+ \edef\margincontenthoffset {\executeifdefined{\??im\margincontenttag\c!hoffset }\zeropoint}}%
+ \edef\margincontentlines {\executeifdefined{\??im\margincontenttag\c!line }\plusone }%
+ \edef\margincontentseparator {\executeifdefined{\??im\margincontenttag\c!separator}\donothing}%
+ \setbox\scratchbox\hbox{#4}% % todo: make sure that color stack works
+ \ifcase\margincontentmethod
+ \scratchdimen\zeropoint
+ \or % old method
+ \scratchdimen\ht\scratchbox
+ \advance\scratchdimen\dp\scratchbox
+ \or
+ \scratchdimen\naturalmargincontentheight
+ \or
+ \scratchdimen\naturalmargincontentheight
+ \ifx\laststackvmove\undefined\else\global\advance\scratchdimen\laststackvmove\fi
+ \fi
+ \ifdim\scratchdimen>\margincontentheight
+ \global\margincontentheight\scratchdimen
+ \fi
+ \setbox\scratchbox\hbox
+ {#2{\hskip#3\strut
+ \ifcase\margincontentdisplacement
+ % normal, move strutheight up
+ \scratchdimen\strutdp
+ \advance\scratchdimen \margincontentstrutheight
+ \advance\scratchdimen -\strutht
+ \raise\scratchdimen
+ \or
+ % low, obey vadjust
+ \fi
+ \box\scratchbox}}%
+ \ht\scratchbox\zeropoint
+ \dp\scratchbox\zeropoint
+ \gdef\margincontentstrutheight{\the\strutht}%
+ %\graphicvadjust{\box\scratchbox}} % fails in high math lines, let it be
+ %\hbox{\lower\strutdp\box\scratchbox}} % alas, wrong lapping, therefore useless
+ \dopositionmarginbox\scratchbox}
+
+\def\domarginblockskip#1%
+ {\hskip\margincontenthoffset
+ \doifelsenothing\margincontentdistance
+ {\hskip\getvalue{\??im#1\c!distance}}
+ {\hskip\margincontentdistance}%
+ \relax}
+
+\def\doleftmarginblock#1#2%
+ {\doplacemargintext{#1}\llap\zeropoint
+ {\llap{\placemargincontentseparator}%
+ \makemargintextblock\v!left\v!right{#2}%
+ \domarginblockskip\v!left}}
+
+\def\dorightmarginblock#1#2%
+ {\doplacemargintext{#1}\rlap\hsize
+ {\hskip\textwidth\hskip-\hsize % new: hsize correction
+ \domarginblockskip\v!right
+ \makemargintextblock\v!right\v!left{#2}%
+ \rlap{\placemargincontentseparator}}}
+
+\def\placemargincontentseparator
+ {\ifnum\margincontentlevel>\zerocount
+ \ifx\margincontentseparator\empty\else
+ \bgroup
+ \scratchdimen\margincontentlines\lineheight
+ \advance\scratchdimen -\lineheight
+ \lower\scratchdimen\hbox{\margincontentseparator}%
+ \egroup
+ \fi
+ \fi}
+
+\newbox\marginconstructbox
+
+\def\doinmarginswapped#1#2#3#4%
+ {\iffirstsidefloatparagraph\nowhitespace\fi % zo laat mogelijk
+ \setbox\marginconstructbox\hbox\bgroup % prevents page break in the middle of construction
+ \startsignalrightpage
+ \doifswappedrightpageelse
+ {\rightmargintrue #2}
+ {\rightmarginfalse#1}
+ {#3}% setups
+ {#4}% content
+ \stopsignalrightpage
+ \egroup
+ \unhbox\marginconstructbox}
+
+% history made this a bit complicated, the +/- was needed before
+% we had enough mem/hash to do the page correction
+
+\edef\inmargintaglist{+,-,\v!low,\v!left,\v!right,\v!inner,\v!outer}
+
+% the old one:
+%
+% \def\doinmargin[#1][#2][#3][#4][#5]% #6 #7
+% {\doifcommonelse{+,-,\v!laag}{#4}
+% {\dodoinmargin[#1][#2][#3][#4][#5]}
+% {\dodoinmargin[#1][#2][#3][][#4]}}
+%
+% an alternative:
+%
+% \letvalue{\??im\v!laag\c!offset}\empty
+% \letvalue{\??im +\c!offset}\empty
+% \letvalue{\??im -\c!offset}\empty
+%
+% \def\doinmargin[#1][#2][#3][#4][#5]% #6 #7
+% {\doifnumberelse{#4}
+% {\dodoinmargin[#1][#2][#3][#4][#5]}
+% {\doifdefinedelse{\??im#4\c!offset}
+% {\dodoinmargin[#1][#2][#3][#4][#5]}
+% {\dodoinmargin[#1][#2][#3][][#4]}}}
+%
+% the problem is that we need to keep downward compatibility
+% with respect to the first argument thing a reference or a
+% directive; the alternative is to force users to pass a
+% directive along with a reference; anyhow, as long as one
+% does not use references that have the same name as a
+% directive we can use the (slow) alternative
+
+\def\doinmargin[#1][#2][#3][#4][#5]% #6 #7
+ {\expanded{\doifinsetelse{#4}{\inmargintaglist}}
+ {\dodoinmargin[#1][#2][#3][#4][#5]}
+ {\dodoinmargin[#1][#2][#3][][#4]}}
+
+\def\defineinmargin
+ {\doquadrupleempty\dodefineinmargin}
+
+\def\dodefineinmargin[#1][#2][#3][#4]%
+ {\doifassignmentelse{#4}
+ {\setupinmargin[#1][#4]%
+ \setvalue{#1}{\indentation\doquintupleempty\doinmargin[#2][#3][#1]}}
+ {\setvalue{#1}{\indentation\doquintupleempty\doinmargin[#2][#3][#4]}}}
+
+\defineinmargin [inleft] [\v!left] [\v!normal] % takes left settings
+\defineinmargin [inright] [\v!right] [\v!normal] % takes right settings
+\defineinmargin [ininner] [\v!inner] [\v!normal] % takes left/right settings
+\defineinmargin [inouter] [\v!outer] [\v!normal] % takes left/right settings
+\defineinmargin [inmargin] [\@@imlocation] [\v!normal] % takes left/right settings
+\defineinmargin [inother] [\@@imlocation] [\v!reverse] % takes left/right settings
+
+\def\inothermargin{\inother}
+
+%D This permits definitions like:
+%D
+%D \starttyping
+%D \defineinmargin [SomePlace] [inner] [normal] [distance=1cm]
+%D \defineinmargin [SomePlace] [inner] [normal] [SomePlace] \setupinmargin[SomePlace][distance=1cm]
+%D \defineinmargin [MyPlace] [inner] [normal] [SomePlace]
+%D \defineinmargin [YourPlace] [inner] [normal] [SomePlace]
+%D \stoptyping
+%D
+%D A torture test:
+%D
+%D \starttyping
+%D \startbuffer
+%D \inleft {\TestLine{red} {l}} test test test \par
+%D \inright {\TestLine{green} {r}} test test test \par
+%D \inmargin {\TestLine{blue} {m}} test test test \par
+%D \inothermargin{\TestLine{yellow} {x}} test test test \par
+%D \ininner {\TestLine{cyan} {i}} test test test \par
+%D \inouter {\TestLine{magenta}{o}} test test test \par
+%D \stopbuffer
+%D
+%D \dorecurse{80}\getbuffer \page
+%D stoptypen
+%D
+%D and
+%D
+%D \starttyping
+%D \defineinmargin [InOuterA] [outer] [normal] [distance=0cm]
+%D \defineinmargin [InOuterB] [outer] [normal] [distance=1cm]
+%D \defineinmargin [InOuterC] [outer] [normal] [distance=2cm,line=2]
+%D
+%D \startbuffer
+%D \InOuterA{\TestLine{red} {A}} test test test \par
+%D \InOuterB{\TestLine{green}{B}} test test test \par
+%D \InOuterC{\TestLine{blue} {C}} test test test \par
+%D \stopbuffer
+%D
+%D \dorecurse{80}\getbuffer \page
+%D
+%D \dorecurse{10}{\inleft {one} test \inleft {two} test } \page
+%D
+%D \start
+%D \margintext {one} \margintext {two} \input thuan \par
+%D \setupinmargin[1][line=3,distance=1cm]
+%D \margintext [1]{one}
+%D \margintext [2]{two}
+%D \input thuan \page
+%D \stop
+%D
+%D \setupinmargin[3][location=inner,distance=1cm]
+%D \setupinmargin[4][location=outer,distance=2cm]
+%D
+%D % \setupinmargin[left] [line=2]
+%D % \setupinmargin[right][line=2]
+%D
+%D \dorecurse
+%D {10}
+%D {\margintext {\kern3cm\TestLine{blue}{none}}
+%D \margintext[3] {\TestLine{darkgray}{3}}
+%D \margintext[4] {\TestLine{darkgray}{4}}
+%D \margintext[left] {\TestLine{red} {left}}
+%D \margintext[right]{\TestLine{green} {right}}
+%D \margintext[inner]{\TestLine{cyan} {inner}}
+%D \margintext[outer]{\TestLine{magenta} {outer}}
+%D \input thuan \endgraf}
+%D
+%D \dorecurse{10}{\margintext{test\\test\\test} \input thuan \endgraf}
+%D \stoptyping
+
+% Test case:
+%
+% \setuppagenumbering[alternative=doublesided] \setupwhitespace[medium]
+%
+% \placefigure[right]{}{\externalfigure[dummy][width=2cm]}
+% \input tufte \inothermargin{test} \input tufte
+
+\def\dodoinmargin[#1][#2][#3][#4][#5]#6%
+ {\bgroup
+ \forgetall % otherwise sidefloat problems, added 2005/07/20, maybe dangerous
+ \postponefootnotes % group is (somehow) needed
+ \doifinsetelse\v!low{#4}
+ {\chardef\margincontentdisplacement\plusone}
+ {\chardef\margincontentdisplacement\zerocount}%
+ \doif\v!reverse{#2}
+ {\swapmacros\dorightmarginblock\doleftmarginblock}%
+ \processaction
+ [#1]
+ [ \v!left=>\let\next\doleftmarginblock, % no swapping
+ \v!right=>\let\next\dorightmarginblock, % no swapping
+ \v!inner=>\def\next{\doinmarginswapped\dorightmarginblock\doleftmarginblock },
+ \v!outer=>\def\next{\doinmarginswapped\doleftmarginblock \dorightmarginblock},
+ \s!unknown=>\ifdubbelzijdig
+ \doifcommonelse{+,-}{#4}
+ {\def\next{\doinmarginswapped\dorightmarginblock\doleftmarginblock }}
+ {\def\next{\doinmarginswapped\doleftmarginblock \dorightmarginblock}}%
+ \else
+ \let\next\doleftmarginblock
+ \fi]%
+ \next{#3}{#6}%
+ \rawpagereference\s!mar{#5}% naar binnen ! ! ! !
+ \flushnotes
+ \egroup % don't forget the group
+ \ignorespaces}
+
+% dit zijn voorlopig lokale commando's / vervallen
+%
+% \def\woordinmarge {\indentation\doquintupleempty\doinmargin[\@@implaats][\inleftmargin][\inrightmarge]}
+%
+% \def\woordinlinker {\inleftmargin } % vervallen
+% \def\woordinrechter{\inrechtermarge} % vervallen
+
+% Some day: \definemarking[\v!margetitel]
+
+%D Now come the margin text collectors. The collected content is
+%D flushed at every paragraph by the following macro. Note for
+%D myself: here the location (plaats) is no longer a tag (number).
+
+% gone: \def\doflushmargincontent{\doinmargin[\@@implaats][\v!normaal][]} % + [#1][#2]{#3}}
+
+%D These are now all the same (long ago they had different
+%D implementations, somewhere in Sork time if I remember
+%D right).
+
+\def\margintext {\dodoubleempty\domargincontent}
+\def\marginword {\margintext}
+\def\margintitle{\margintext} % txt mark as well
+
+\newtoks\collectedmargintexts
+\chardef\margintextcollected \zerocount
+
+\def\domargincontent[#1][#2]#3% we used to check for #2/#1 being number, no longer now
+ {\global\chardef\margintextcollected\plusone
+ \edef\margincontenttag{#1}%
+ \ifx\margincontenttag\empty
+ \doglobal\increment\margincontentlevel
+ \let\margincontenttag\margincontentlevel
+ \fi
+ \checkinmargin[\margincontenttag]%
+ \doglobal \appendetoks
+ \noexpand \checkinmargin[\margincontenttag]%
+ \noexpand \doinmargin[\executeifdefined{\??im\margincontenttag\c!location}\@@imlocation][\v!normal][\margincontenttag][\margincontenttag][#2]%
+ \to \collectedmargintexts
+ \doglobal \appendtoks
+ {#3}%
+ \to \collectedmargintexts}
+
+\let\restoreinterlinepenalty\relax
+
+\def\flushmargincontents % plural
+ {\restoreinterlinepenalty % here?
+ \ifcase\margintextcollected\else % called quite often, so we
+ \expandafter\doflushmargincontents % speed up the \fi scan by
+ \fi} % using a \do..
+
+\def\doflushmargincontents % links + rechts
+ {\bgroup
+ \forgetall
+ \global\margincontentheight\zeropoint
+ \startsignalrightpage
+ \the\collectedmargintexts
+ \signalrightpage
+ \stopsignalrightpage
+ \resetmargincontent
+ % dirty tricks
+ \ifcase\margincontentmethod
+ \donefalse
+ \else\ifinsidecolumns % brrrr
+ \donetrue % how fuzzy
+ \else\ifdim\margincontentheight>\lineheight\relax
+ \donetrue % how dirty
+ \else
+ \donefalse % how needed
+ \fi\fi\fi
+ \savemargincontentlines
+ \ifdone
+ \advance\margincontentheight \margincontentextralines\lineheight
+ \ifdim\pagegoal>\pagetotal
+ \bgroup % preserve \margincontentheight
+ \advance\margincontentheight \pagetotal
+ \ifdim\margincontentheight>\pagegoal
+ \egroup
+ \ifcase\marginpagecheckmethod
+ % disabled
+ \or
+ \setmargincontentpenalties
+ \or
+ % potentially dangerous, maybe better a \goodbreak; the problem is that
+ % there can be a penalty there, which we then overload and we also introduce
+ % nasty side effects, so, we drop this option
+ % \vadjust pre {\page}%
+ \fi
+ \else
+ \egroup
+ \fi
+ \fi
+ \else % We need the above because interlinepenalties overrule vadjusted \nobreaks.
+ % a bit dangerous
+ \vadjust{\nobreak}%
+ \fi
+ \egroup}
+
+\def\setmargincontentpenalties
+ {\getnoflines\margincontentheight
+ \keeplinestogether\noflines}
+
+\def\savemargincontentlines
+ {\bgroup
+ \advance\margincontentheight \margincontentextralines\lineheight % 1 by default
+ \getnoflines\margincontentheight
+ \xdef\nofmargincontentlines{\the\noflines}%
+ \egroup}
+
+\def\fillupmargincontentlines % etex ! ! !
+ {\endgraf
+ \begingroup
+ \scratchcounter\numexpr\nofmargincontentlines-\prevgraf\relax\relax
+ \ifnum\scratchcounter>\zerocount
+ \forgetall\dorecurse\scratchcounter{\nobreak\crlf}%
+ \fi
+ \endgroup}
+
+% Yet undocumented, for a manual flush in for instance headers.
+
+\def\resetmargincontent
+ {\doglobal\newcounter\margincontentlevel
+ \global\chardef\margintextcollected\zerocount
+ \global\collectedmargintexts\emptytoks}
+
+% \def\placemargincontent
+% {\ifcase\margintextcollected\else
+% \bgroup
+% \chardef\graphicvadjustmode\zerocount
+% \doflushmargincontents
+% \egroup
+% \fi}
+%
+% font fix:
+
+\def\placemargincontent
+ {\ifcase\margintextcollected\else % was level check
+ \bgroup
+ \redoconvertfont % !!
+ \chardef\graphicvadjustmode\zerocount
+ \doflushmargincontents
+ \egroup
+ \fi}
+
+% For old times sake (i use it in project styles) we provide
+
+\def\placemargintexts {\placemargincontent}
+\def\resetmargetitels {\resetmargincontent}
+\def\margewoordpositie{\margewoord} % obsolete, now no longer range
+
+% but never use them yourself since they may disappear.
+
+\def\oplinker#1%
+ {\strut
+ \graphicvadjust
+ {\dontcomplain
+ \setbox\scratchbox\vtop{\forgetall\strut#1}%
+ \getboxheight\scratchdimen\of\box\scratchbox
+ \vskip-\scratchdimen % waarom stond hier een \ ?
+ \box\scratchbox}}
+
+\setupinmargin
+ [\c!style=\v!bold,
+ \c!color=,
+ \c!strut=\v!auto,
+ \c!location=\v!both,
+ \c!align=\v!inner,
+ \c!stack=\v!no,
+ \c!before=,
+ \c!after=]
+
+\setupinmargin
+ [\v!left]
+ [\c!distance=\leftmargindistance,
+ \c!width=\leftmarginwidth,
+ %\c!align=\v!left, % no
+ \c!location=\v!left]
+
+\setupinmargin
+ [\v!right]
+ [\c!distance=\rightmargindistance,
+ \c!width=\rightmarginwidth,
+ %\c!align=\v!right, % no
+ \c!location=\v!right]
+
+% bonus needed when [inner/outer] is used as tag
+
+\setupinmargin[\v!inner][\c!location=\v!inner,\c!align=\v!inner]
+\setupinmargin[\v!outer][\c!location=\v!outer,\c!align=\v!inner]
+
+% more efficient (5K less fotmat file)
+%
+% \letvalue{\??im\v!inner\c!location}\v!inner \letvalue{\??im\v!inner\c!align}\v!inner
+% \letvalue{\??im\v!outer\c!location}\v!outer \letvalue{\??im\v!outer\c!align}\v!inner
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-mul.tex b/Master/texmf-dist/tex/context/base/page-mul.tex
new file mode 100644
index 00000000000..c68a4dcf280
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-mul.tex
@@ -0,0 +1,1679 @@
+%D \module
+%D [ file=page-mul, % was: core-mul
+%D version=1998.03.15,
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Multi Column Output,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context OTR Macros / Simple Multi Column}
+
+%D This module is mostly a copy from the original multi column
+%D routine as implemented in \type {core-mul}. When the main
+%D OTR macro's were isolated in modules and column sets were
+%D introduced, this module became part of the OTR modules. As
+%D a result this module is no longer generic. It also needs
+%D an overhaul.
+
+\unprotect
+
+% TO DO !
+
+\let\OTRMULsetvsize \OTRONEsetvsize
+\let\OTRMULsethsize \OTRONEsethsize
+\let\OTRMULdopagecontents \OTRONEdopagecontents
+\let\OTRMULfinalsidefloatoutput\OTRONEfinalsidefloatoutput
+\let\OTRMULflushfloatbox \OTRONEflushfloatbox
+
+\let\OTRMULdosettopinserts \relax
+\let\OTRMULdosetbotinserts \relax
+\let\OTRMULdotopinsertions \relax
+\let\OTRMULdobotinsertions \relax
+\let\OTRMULdosetbothinserts \relax
+\let\OTRMULflushsavedfloats \relax
+
+\newtoks \OTRMULoutput
+
+\def\OTRMULgotonextpage
+ {\ejectpage}
+
+\def\OTRMULgotonextpageX % will become obsolete
+ {\superejectpage}
+
+% check \count<insert> multiplications
+
+% some day try this in balancing routine
+%
+% \ifdim\pagetotal>\pagegoal
+% \eject
+% \else
+% \goodbreak
+% \fi
+
+%D The following macro's implement a multi||column output
+%D routine. The original implementation was based on Donald
+%D Knuth's implementation, which was adapted by Craig Platt to
+%D support balancing of the last page. I gradually adapted
+%D Platt's version to our needs but under certain
+%D circumstances things still went wrong. I considered all
+%D calls to Platt's \type{\balancingerror} as undesirable.
+
+%D This completely new implementation can handle enough
+%D situations for everyday documents, but is still far from
+%D perfect. While at the moment the routine doesn't support
+%D all kind of floats, it does support:
+%D
+%D \startitemize[packed]
+%D \item an unlimitted number of columns
+%D \item ragged or not ragged bottoms
+%D \item optional balancing without \type{\balancingerrors}
+%D \item different \type{\baselineskips}, \type{\spacing},
+%D \type{\topskip} and \type{\maxdepth}
+%D \item left- and right indentation, e.g. within lists
+%D \item moving columns floats to the next column or page
+%D \item handling of floats that are to wide for a columns
+%D \stopitemize
+%D
+%D One could wonder why single and multi||columns modes are
+%D still separated. One reason for this is that \TeX\ is not
+%D suited well for handling multi||columns. As a result, the
+%D single columns routines are more robust. Handling one
+%D column as a special case of multi||columns is posible but at
+%D the cost of worse float handling, worse page breaking,
+%D worse etc. Complicated multi||column page handling should
+%D be done in \cap{DTP}||systems anyway.
+%D
+%D There are three commands provided for entering and leaving
+%D multi||column mode and for going to the next column:
+%D
+%D \interface \type{\beginmulticolumns} \\ \\
+%D \interface \type{\endmulticolumns} \\ \\
+%D \interface \type{\ejectcolumn} \\ \\
+%D
+%D This routines are sort of stand||alone. They communicate
+%D with the rest of \CONTEXT\ by means of some interface
+%D macro's, which we only mention.
+%D
+%D \interface \type{\nofcolumns} \\
+%D the number of columns \\
+%D \interface \type{\minbalancetoplines} \\
+%D the minimum number op balanced top lines \\
+%D \interface \type{\betweencolumns} \\
+%D the stuff between columns \\
+%D \interface \type{\finaloutput{action}{box}} \\
+%D some kind of \type{\pagebody} and \type{\shipout} \\
+%D
+%D \interface \type{\ifbalancecolumns} \\
+%D balancing the colums or not \\
+%D \interface \type{\ifstretchcolumns} \\
+%D ragging the bottom or not \\
+%D
+%D \interface \type{\ifheightencolumns} \\
+%D fix the heigh tor not \\
+%D \interface \type{\fixedcolumnheight} \\
+%D the optional fixed height \\
+%D
+%D \interface \type{\ifinheritcolumns} \\
+%D handle ragging or not \\
+%D \interface \type{\ifr@ggedbottom} \\
+%D use ragged bottoms \\
+%D \interface \type{\ifb@selinebottom} \\
+%D put the bottom line on the baseline \\
+%D \interface \type{\ifnormalbottom} \\
+%D put the bottom line at the baseline \\
+%D
+%D \interface \type{\ifreversecolumns} \\
+%D reverse the order in wich columns are flushed \\
+%D
+%D \interface \type{\usercolumnwidth} \\
+%D the calculated width of a column \\
+%D \interface \type{\columntextwidth} \\
+%D the maximum width of a column \\
+%D \interface \type{\columntextheight} \\
+%D the minimum width of a column \\
+%D
+%D \interface \type{\spacingfactor} \\
+%D the spacing factor \\
+%D \interface \type{\bodyfontsize} \\
+%D the (local) bodyfontsize \\
+%D \interface \type{\openlineheight} \\
+%D the lineheight (including \type{\spacing}) \\
+%D
+%D \interface \type{\EveryBodyFont} \\
+%D communication channel to font switching routines \\
+%D
+%D \interface \type{\global\settopskip} \\
+%D set \type{\topskip} \\
+%D \interface \type{\setvsize} \\
+%D set \type{\vsize} and \type{\pagegoal} \\
+%D \interface \type{\sethsize} \\
+%D set \type{\hsize} \\
+%D
+%D \interface \type{\flushcolumnfloats} \\
+%D push saved column floats (next page) \\
+%D \interface \type{\flushcolumnfloat} \\
+%D push saved column floats (next column) \\
+%D \interface \type{\setcolumnfloats} \\
+%D initialize column floats \\
+%D
+%D \interface \type{\finishcolumnbox} \\
+%D do something special (a hook) \\
+%D \interface \type{\postprocesscolumnpagebox} \\
+%D do something with each columnbox (also a hook) \\
+%D \interface \type{\postprocesscolumnbox} \\
+%D do something with each columnbox (also a hook) \\
+%D \interface \type{\postprocesscolumnline} \\
+%D do something with each columnline (also a hook) \\
+%D \interface \type{\currentcolumn} \\
+%D the current column \\
+%D
+%D These interface macro's are called upon or initialized
+%D by the multi||column macro's.
+
+%D A lot of footnote stuff added!
+
+\def\finalcolumntextwidth {\makeupwidth}
+\def\finalcolumntextheight {\textheight}
+\def\columntextwidth {\makeupwidth}
+\def\columntextheight {\textheight}
+\def\usercolumnwidth {\textwidth}
+\def\columntextoffset {\!!zeropoint}
+
+\def\fixedcolumnheight {\textheight}
+\def\betweencolumns {\hskip\bodyfontsize}
+
+\let\setcolumnfloats \relax % in CONTEXT used for floats
+\let\flushcolumnfloats \relax % in CONTEXT used for floats
+\let\flushcolumnfloat \relax % in CONTEXT used for floats
+\let\finishcolumnbox \relax % in CONTEXT used for backgrounds
+
+% %D In fact, the column height and width are set by means of
+% %D two macro's. One can change their meaning if needed:
+%
+% \def\setcolumntextheight
+% {\def\columntextheight{\teksthoogte}}
+%
+% \def\setcolumntextwidth
+% {\def\columntextwidth{\zetbreedte}}
+
+%D Both macros are redefined in \CONTEXT\ when backgrounds
+%D are applied to columns. The final values are used when
+%D flushing the columns.
+
+\newtoks\singlecolumnout % remove that one
+
+%D It's more convenient to use \type {\columnwidth} instead
+%D of messing around with boxes each time.
+
+\newdimen\columnwidth
+\newdimen\gutterwidth
+
+\def\determinecolumnwidth
+ {\bgroup
+ \setbox\scratchbox\hbox
+ {\setcolumnhsize
+ \global\columnwidth\usercolumnwidth
+ \global\gutterwidth\intercolumnwidth}%
+ \egroup}
+
+%D Going to a new columns is done by means of a
+%D \type{\ejectcolumn}. The following definition does not
+%D always work.
+
+\def\ejectcolumn
+ {\goodbreak\showmessage\m!columns2\empty}
+
+%D The next macro should never be called so let's deal with it.
+%D There were several solutions to these kind of errors. First
+%D we check for a good breakpoint before firing up the
+%D multi||column routine (\type{\break} or \type{\allowbreak}).
+%D We do the same at the end of the routine
+%D (\type{\allowbreak}). These allowances are definitely
+%D needed!
+%D
+%D Some on first sight redundant calls to for instance
+%D \type{\setvsize} in the flushing, splitting and balancing
+%D macro's can definitely not be omitted! Some are just there
+%D to handle situations that only few times arise. One of
+%D those can be that the output routine is invoked before
+%D everything is taken care of. This happens when we
+%D flush (part of) the current page with an \type{\unvbox}
+%D with a \type{\pagetotal}~$\approx$ \type{\pagegoal}. One
+%D simply cannot balance columns that are just balanced.
+%D
+%D I hope one never sees the following message. Because it
+%D took me a lot of time to develop the multi||columns
+%D routines, every (although seldom) warning gives me the
+%D creeps!
+
+\def\balancingerror
+ {\showmessage\m!columns3\empty
+ \finaloutput\unvbox\normalpagebox}
+
+\def\OTRMULsometopsfloat{\showmessage\m!columns4\empty \someherefloat}
+\def\OTRMULsomebotsfloat{\showmessage\m!columns5\empty \someherefloat}
+
+\def\OTRMULsomeherefloat{\OTRONEsomeherefloat}
+
+%D The local column width is available in the dimension
+%D register \type{\localcolumnwidth}, which is calculated as:
+
+\def\setcolumnhsize % beware, this one is available for use in macros
+ {\setbox\scratchbox\hbox{\parindent\zeropoint\betweencolumns}%
+ \intercolumnwidth\wd\scratchbox
+ \localcolumnwidth\columntextwidth
+ \advance\localcolumnwidth -\leftskip
+ \advance\localcolumnwidth -\rightskip
+ % new
+ \advance\localcolumnwidth -\colleftskip
+ \advance\localcolumnwidth -\colrightskip
+ %
+ \advance\localcolumnwidth -\nofcolumns\intercolumnwidth
+ \advance\localcolumnwidth \intercolumnwidth
+ \divide \localcolumnwidth \nofcolumns
+ \scratchdimen\columntextoffset
+ \multiply\scratchdimen \plustwo
+ \advance\localcolumnwidth -\scratchdimen
+ \usercolumnwidth\localcolumnwidth
+ \hsize\localcolumnwidth} % we don't do it \global
+
+%D Torture test:
+%D
+%D \startbuffer
+%D \startbuffer[b]
+%D \startcolumns
+%D \input tufte
+%D \stopcolumns
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startnarrower
+%D \input tufte
+%D \stopnarrower
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startcolumns \startnarrower
+%D \input tufte
+%D \stopnarrower \stopcolumns
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startnarrower \startcolumns
+%D \input tufte
+%D \stopcolumns \stopnarrower
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startcolumns \startnarrower[left]
+%D \input tufte
+%D \stopnarrower \stopcolumns
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startnarrower[left] \startcolumns
+%D \input tufte
+%D \stopcolumns \stopnarrower
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startnarrower \startcolumns \startnarrower
+%D \input tufte
+%D \stopnarrower\stopcolumns \stopnarrower
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D
+%D \startbuffer[b]
+%D \startnarrower[left] \startcolumns \startnarrower
+%D \input tufte
+%D \stopnarrower\stopcolumns \stopnarrower
+%D \stopbuffer
+%D \typebuffer[b] \getbuffer[b]
+%D \stopbuffer
+%D
+%D \start
+%D \def\postprocesscolumnline#1{\ruledhbox{\strut\box#1}\hss}
+%D \getbuffer
+%D \stop
+
+%D One should be aware that when font related dimensions are
+%D used in typesetting the in||between material, these
+%D dimensions are influenced by bodyfont switches inside
+%D multi||column mode.
+
+% \def\setcolumnvsize
+% {%\global\vsize\columntextheight
+% \global\vsize-\columntextoffset
+% \global\multiply\vsize \plustwo
+% \global\advance\vsize \columntextheight
+% \ifdim\precolumnboxheight>\zeropoint
+% \global\advance\vsize -\precolumnboxheight
+% \fi
+% %\getinsertionheights\to\dimen0\\%
+% %\global\advance\vsize -\dimen0
+% \settotalinsertionheight
+% \global\advance\vsize -\totalinsertionheight
+% %%%\ifgridsnapping % evt altijd, nog testen, testing now, see columned tocs
+% \getnoflines\vsize
+% \vsize\noflines\openlineheight
+% \advance\vsize .5\openlineheight % collect enough data
+% %%%\fi
+% \global\vsize\nofcolumns\vsize
+% \global\pagegoal\vsize} % let's do it only here
+
+\newdimen\mcscratchdimen
+\newcount\nofcolumnlines
+
+\def\getmulticolumnlines
+ {\mcscratchdimen-\columntextoffset
+ \multiply\mcscratchdimen \plustwo
+ \advance\mcscratchdimen \columntextheight
+ \ifdim\precolumnboxheight>\zeropoint
+ \advance\mcscratchdimen -\precolumnboxheight
+ \fi
+ \settotalinsertionheight
+ \advance\mcscratchdimen -\totalinsertionheight
+ \getnoflines\mcscratchdimen
+ % added 30/7/2004
+ \ifnum\layoutlines>\zerocount \ifnum\noflines>\layoutlines
+ \noflines\layoutlines
+ \fi \fi
+ \nofcolumnlines\noflines}
+
+% probaby better, test first, don't replace yet
+%
+% \def\getmulticolumnlines
+% {\mcscratchdimen-\columntextoffset
+% \multiply\mcscratchdimen \plustwo
+% % \advance\mcscratchdimen \columntextheight
+% \ifdim\precolumnboxheight>\zeropoint
+% \advance\mcscratchdimen -\precolumnboxheight
+% \fi
+% \settotalinsertionheight
+% \advance\mcscratchdimen -\totalinsertionheight
+% \getnoflines\mcscratchdimen
+% \ifnum\layoutlines>\zerocount
+% \noflines-\noflines
+% \advance\noflines\layoutlines
+% \ifnum\noflines<\zerocount
+% \noflines\zerocount
+% \fi
+% \fi
+% \nofcolumnlines\noflines}
+
+\def\setcolumnvsize
+ {\getmulticolumnlines
+ \mcscratchdimen\nofcolumnlines\openlineheight
+ \advance\mcscratchdimen .5\openlineheight % collect enough data
+ \global\vsize\nofcolumns\mcscratchdimen
+ \global\pagegoal\vsize} % let's do it only here
+
+%D It really starts here. After some checks and initializations
+%D we change the output routine to continous multi||column
+%D mode. This mode handles columns that fill the current and
+%D next full pages. The method used is (more or less)
+%D multiplying \type{\vsize} and dividing \type{\hsize} by
+%D \type{\nofcolumns}. More on this can be found in the
+%D \TeX book. We save the top of the current page in box
+%D \type{\precolumnbox}.
+%D
+%D We manipulate \type{\topskip} a bit, just to be shure that
+%D is has no flexibility. This has te be done every time a
+%D font switch takles place, because \type{\topskip} can depend
+%D on this.
+%D
+%D Watch the trick with the \type{\vbox}. This way we get the
+%D right interlining and white space.
+
+\def\beginmulticolumns
+ {\par
+ \flushnotes
+ \xdef\precolumndepth{\the\prevdepth}%
+ \begingroup
+ % new
+ \leftskip1\leftskip
+ \rightskip1\rightskip
+ \edef\colleftskip {\the\leftskip}%
+ \edef\colrightskip{\the\rightskip}%
+ \leftskip\zeropoint
+ \rightskip\zeropoint
+ %
+ \dontshowcomposition
+ %\setcolumntextwidth\relax
+ %\setcolumntextheight\relax
+ \widowpenalty\zerocount % is gewoon beter
+ \clubpenalty \zerocount % zeker bij grids
+ \ifsomefloatwaiting
+ \showmessage\m!columns6{\the\savednoffloats}%
+ \global\setbox\savedfloatlist\box\floatlist
+ \xdef\restoresavedfloats%
+ {\global\savednoffloats\the\savednoffloats
+ \global\setbox\floatlist\box\savedfloatlist
+ \global\noexpand\somefloatwaitingtrue}%
+ \global\savednoffloats\zerocount
+ \global\somefloatwaitingfalse
+ \else
+ \global\let\restoresavedfloats\relax
+ \fi
+ \dimen0\pagetotal
+ \advance\dimen0 \parskip
+ \advance\dimen0 \openlineheight
+ \ifdim\dimen0<\pagegoal
+ \allowbreak
+ \else
+ \break % Sometimes fails
+ \fi
+ \appendtoks\topskip1\topskip\to\everybodyfont
+ \the\everybodyfont % ugly here
+\saveinterlinespace % uglu here
+ \initializecolumns\nofcolumns
+ \hangafter\zerocount
+ \hangindent\zeropoint
+ \everypar\emptytoks
+ \ifdim\pagetotal=\zeropoint \else
+ \verticalstrut
+ \vskip-\struttotal
+ \fi
+ \global\savedpagetotal\pagetotal
+ \global\singlecolumnout\output
+ %\global\output{\global\setbox\precolumnbox\vbox{\unvbox\normalpagebox}}%
+ \global\output{\global\setbox\precolumnbox\vbox{\dotopinsertions\unvbox\normalpagebox}}%
+ \eject % no \holdinginserts=1, can make footnote disappear !
+ \global\precolumnboxheight\ht\precolumnbox
+ \global\output{\continuousmulticolumnsout}%
+ \setcolumnfloats
+ \dohandleallcolumns
+ {\global\setbox\currenttopcolumnbox\box\voidb@x}%
+ \checkbegincolumnfootnotes
+ \activateotr{MUL}{ONE}% todo ! ! ! !
+ \let\sethsize\setcolumnhsize
+ \let\setvsize\setcolumnvsize
+ \sethsize
+ \setvsize
+ \showcomposition}
+
+%D When we leave the multi||column mode, we have to process the
+%D not yet shipped out part of the columns. When we don't
+%D balance, we simply force a continuous output, but a balanced
+%D output is more tricky.
+
+%D First we try to fill up the page and when all or something
+%D is left we try to balance things. This is another useful
+%D adaption of the ancesters of these macro's. It takes some
+%D reasoning to find out what happens and maybe I'm making
+%D some mistake, but it works.
+%D
+%D Voiding box \type{\precolumnbox} is sometimes necessary,
+%D e.g. when there is no text given between \type{\begin..}
+%D and \type{\end..}. The \type{\par} is needed!
+
+% \def\endmulticolumns
+% {%\par
+% \vskip\lineheight\vskip-\lineheight % take footnotes into account
+% \dontshowcomposition
+% \doflushcolumnfloat % added recently
+% %\doflushcolumnfloats % no, since it results in wrong top floats
+% \flushnotes % before start of columns
+% \par
+% \ifbalancecolumns
+% \global\output{\continuousmulticolumnsout}%
+% \goodbreak
+% \global\output{\balancedmulticolumnsout}%
+% \else
+% \goodbreak
+% \fi
+% \eject % the prevdepth is important, try e.g. toclist in
+% \prevdepth\zeropoint % columns before some noncolumned text text
+% \global\output\singlecolumnout
+% \global\output{\the\mainoutput}% % % % % todo
+% \ifvoid\precolumnbox\else
+% \unvbox\precolumnbox
+% \fi
+% \global\precolumnboxheight\zeropoint
+% \endgroup % here
+% \nofcolumns\plusone
+% \setvsize % the outer one!
+% \checkendcolumnfootnotes
+% \dosomebreak\allowbreak
+% \restoresavedfloats}
+
+\def\endmulticolumns
+ {%\par
+ \vskip\lineheight\vskip-\lineheight % take footnotes into account
+ \dontshowcomposition
+ \doflushcolumnfloat % added recently
+ %\doflushcolumnfloats % no, since it results in wrong top floats
+ \flushnotes % before start of columns
+ \par
+ \ifbalancecolumns
+ \global\output{\continuousmulticolumnsout}%
+ \goodbreak
+ \global\output{\balancedmulticolumnsout}%
+ \else
+ \goodbreak
+ \fi
+ \eject % the prevdepth is important, try e.g. toclist in
+ \prevdepth\zeropoint % columns before some noncolumned text text
+ \global\output\singlecolumnout
+ \global\output{\the\mainoutput}% % % % % todo
+ \ifvoid\precolumnbox\else
+ \unvbox\precolumnbox
+ \fi
+ \global\precolumnboxheight\zeropoint
+ \endgroup % here
+ \nofcolumns\plusone
+ \setvsize % the outer one!
+ \synchronizeoutput % new may 2004 / we need to: \pagegoal\vsize
+ \checkendcolumnfootnotes
+ \dosomebreak\allowbreak
+ \restoresavedfloats}
+
+%D Because some initializations happen three times, we
+%D defined a macro for them. Erasing \type{\everypar} is
+%D needed because we don't want anything to interfere.
+
+\def\setmulticolumnsout
+ {\everypar\emptytoks
+ \dontcomplain
+ \settopskip
+ \setmaxdepth
+ \topskip1\topskip
+ \splittopskip\topskip
+ \splitmaxdepth\maxdepth
+ \boxmaxdepth\maxdepth % dangerous
+ \emergencystretch\zeropoint\relax} % sometimes needed !
+
+%D Flushing the page comes to pasting the columns together and
+%D appending the result to box \type{\precolumnbox}, if not
+%D void. I've seen a lot of implementations in which some skip
+%D was put between normal text and multi||column text. When we
+%D don't want this, the baselines can be messed up. I hope the
+%D seemingly complicated calculation of a correction
+%D \type{\kern} is adequate to overcome this. Although not
+%D watertight, spacing is taken into account and even multiple
+%D mode changes on one page go well. But cross your fingers and
+%D don't blame me.
+%D
+%D One of the complications of flushing out the boxes is that
+%D \type{\precolumnbox} needs to be \type{\unvbox}'ed, otherwise
+%D there is too less flexibility in the page when using
+%D \type{\r@ggedbottom}. It took a lot of time before these
+%D kind of problems were overcome. Using \type{\unvbox} at the
+%D wrong moment can generate \type{\balancingerror}'s.
+%D
+%D One can use the macros \type {\maxcolumnheight} and \type
+%D {\maxcolumndepth} when generating material between columns
+%D as well as postprocessing column lines.
+
+\let\maxcolumnheight=\zeropoint
+\let\maxcolumndepth =\zeropoint
+
+\newbox\columnpagebox
+
+\def\setmaxcolumndimensions
+ {\let\maxcolumnheight\!!zeropoint
+ \let\maxcolumndepth \!!zeropoint
+ \dohandleallcolumns
+ {\ifdim\ht\currentcolumnbox>\maxcolumnheight
+ \edef\maxcolumnheight{\the\ht\currentcolumnbox}%
+ \fi
+ \ifdim\dp\currentcolumnbox>\maxcolumndepth
+ \edef\maxcolumndepth{\the\dp\currentcolumnbox}%
+ \fi}}
+
+\def\flushcolumnedpage
+ {\bgroup
+ \forgetall
+ \setmulticolumnsout
+ \showcomposition
+ \setmaxcolumndimensions
+ \postprocesscolumns
+ \dohandleallcolumns % \hbox i.v.m. \showcomposition
+ {\global\setbox\currentcolumnbox\hbox to \localcolumnwidth
+ {\box\currentcolumnbox
+ \global\wd\currentcolumnbox\localcolumnwidth
+ \ifheightencolumns
+ \global\ht\currentcolumnbox\fixedcolumnheight
+ \fi}}%
+ \setmaxcolumndimensions
+ \overlaycolumnfootnotes
+ \setbox\columnpagebox\vbox
+ {\hbox to \finalcolumntextwidth
+ {\hskip\colleftskip\relax % new, \relax needed
+ \ifreversecolumns
+ \@EA\dohandlerevcolumns
+ \else
+ \@EA\dohandleallcolumns
+ \fi
+ {\finishcolumnbox{\hbox
+ {\ifx\finishcolumnbox\relax\else\strut\fi
+ \box\currentcolumnbox}}%
+ \hfil}%
+ \unskip
+ \hskip\colrightskip}}% new
+ \scratchdimen\zeropoint
+ \dohandleallcolumns
+ {\ifdim-\ht\currenttopcolumnbox<\scratchdimen
+ \scratchdimen-\ht\currenttopcolumnbox
+ \fi
+ \global\setbox\currenttopcolumnbox\box\voidb@x}%
+ \advance\scratchdimen \ht\columnpagebox
+ \setbox\scratchbox\hbox to \columntextwidth
+ {\vrule
+ \!!width\zeropoint
+ \!!height\scratchdimen
+ \!!depth\dp\columnpagebox
+ \dostepwiserecurse2\nofcolumns1{\hfil\betweencolumns}\hfil}%
+ \setbox\columnpagebox\hbox
+ {\box\columnpagebox
+ \hskip-\columntextwidth
+ \restoretextcolor{\box\scratchbox}}%
+ \postprocesscolumnpagebox % new, acts upon \box\columnpagebox
+ \ifvoid\precolumnbox
+ \else
+ % next some incredible crappy code
+ \ifgridsnapping
+ % somehow this junk fails in pascal
+ \scratchdimen\savedpagetotal
+ \advance\scratchdimen -\ht\precolumnbox
+ \advance\scratchdimen -\dp\precolumnbox
+ \advance\scratchdimen -\topskip
+ \box\precolumnbox
+ \kern\scratchdimen
+ \else
+ \unvbox\precolumnbox
+ \fi
+ \fi
+ \global\precolumnboxheight\zeropoint
+ \setvsize
+ \dosomebreak\nobreak
+ % wrong, but keep it as a reminder
+ % \ifgridsnapping \else
+ % \scratchdimen\topskip
+ % \advance\scratchdimen -\openstrutheight
+ % \nointerlineskip
+ % \vskip-\scratchdimen
+ % \fi
+ % so that we don't add it again
+ \prevdepth\openstrutdepth
+ \nointerlineskip
+ \dp\columnpagebox\zeropoint
+ \global\finalcolumnheights\ht\columnpagebox
+ \getnoflines\finalcolumnheights
+ \global\finalcolumnlines\noflines
+ \box\columnpagebox
+ \egroup}
+
+%D In case one didn't notice, finaly \type{\finishcolumnbox} is
+%D applied to all boxes. One can use these hooks for special
+%D purposes.
+%D
+%D Once upon a time I wanted to manipulate the individual lines
+%D in a column. This feature is demonstrated in the two examples
+%D below.
+%D
+%D \startbuffer
+%D \def\postprocesscolumnline#1% or \postprocesscolumnbox
+%D {\ruledhbox{\box#1}\hss}
+%D
+%D \startcolumns[n=4]
+%D \dorecurse{25}{line: \recurselevel\par}
+%D \stopcolumns
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here we show the natural width of the lines:
+%D
+%D {\getbuffer}
+%D
+%D The next example does a bit more advanced manipulation:
+%D
+%D \startbuffer
+%D \def\postprocesscolumnline#1%
+%D {\ifodd\currentcolumn
+%D \hfill\unhbox#1\relax
+%D \else
+%D \relax\unhbox#1\hfill
+%D \fi}
+%D
+%D \startcolumns[n=4]
+%D \dorecurse{25}{line \recurselevel\par}
+%D \stopcolumns
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here we also see an application of \type{\currentcolumn}:
+%D
+%D {\getbuffer}
+%D
+%D This feature is implemented using the reshape macros
+%D presented in \type{supp-box}.
+
+\def\postprocesscolumns
+ {\ifx\postprocesscolumnline\undefined \else
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vtop
+ {\beginofshapebox
+ \unvbox\currentcolumnbox
+ \unskip\unskip
+ \endofshapebox
+ \reshapebox
+ {\dimen0\ht\shapebox
+ \dimen2\dp\shapebox
+ \setbox\shapebox\hbox to \hsize
+ {\postprocesscolumnline\shapebox}%
+ \ht\shapebox\dimen0
+ \dp\shapebox\dimen2
+ \box\shapebox}%
+ \flushshapebox
+ \everypar\emptytoks
+ \parskip\zeropoint % = \forgetall
+ \verticalstrut
+ \vskip-\struttotal
+ \vfil}}%
+ \fi
+ \ifx\postprocesscolumnbox\undefined \else
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\hbox
+ {\postprocesscolumnbox\currentcolumnbox}}
+ \fi}
+
+%D We default to doing nothing!
+
+\let\postprocesscolumnline =\undefined
+\let\postprocesscolumnbox =\undefined
+\let\postprocesscolumnpagebox=\relax
+
+%D \macros
+%D {reversecolumnstrue}
+%D
+%D We can force the macro that takes care of combining
+%D the columns, to flush them in the revere order. Of
+%D course, by default we don't reverse.
+
+\newif\ifreversecolumns
+
+%D Here comes the simple splitting routine. It's a bit
+%D longer than expected because of ragging bottoms or not.
+%D This part can be a bit shorter but I suppose that I will
+%D forget what happens. The splitting takes some already
+%D present material (think of floats) into account!
+%D
+%D First we present some auxiliary routines. Any material,
+%D like for instance floats, that is already present in the
+%D boxes is preserved.
+
+\def\splitcolumn#1from \box#2to \dimen#3 top \box#4%
+ {\bgroup
+ \ifdim\ht#4>\zeropoint
+ \dimen0\dimen#3\relax
+ \dimen2\dimen0
+ \advance\dimen0 -\ht#4%
+ \columnfootnotecorrection{#1}{\dimen0}%
+ \setbox0\vsplit#2 to \dimen0
+ \global\setbox#1\vbox to \dimen2
+ {\ifgridsnapping
+ \dimen0-\openstrutheight
+ \advance\dimen0 \topskip
+ \vskip\dimen0\copy#4\vskip-\dimen0
+ \else
+ \unvcopy#4%
+ \fi
+ \fuzzysnappedbox\unvbox0
+ \fakecolumnfootnotes{#1}}%
+ \else
+ \ifcase\clevernotes
+ \global\setbox#1\vsplit#2 to \dimen#3%
+ \global\setbox#1\vbox
+ {\fuzzysnappedbox\unvbox{#1}}% % or \box ?
+ \else
+ \columnfootnotecorrection{#1}{\dimen#3}%
+ \setbox0\vsplit#2 to \dimen#3%
+ \global\setbox#1\vbox to \dimen#3%
+ {\fuzzysnappedbox\unvbox0
+ \fakecolumnfootnotes{#1}}%
+ \fi
+ \fi
+ \egroup}
+
+\def\splitcurrentcolumn from \box#1to \dimen#2%
+ {\splitcolumn\currentcolumnbox from \box#1 to \dimen#2 top \box\currenttopcolumnbox}
+
+\def\splitfirstcolumn from \box#1to \dimen#2%
+ {\splitcolumn\firstcolumnbox from \box#1 to \dimen#2 top \box\firsttopcolumnbox}
+
+\def\splitlastcolumn from \box#1to \dimen#2%
+ {\global\setbox\lastcolumnbox\vbox
+ {\unvcopy\lasttopcolumnbox
+ \fuzzysnappedbox\unvbox{#1}%
+ \fakecolumnfootnotes\lastcolumnbox}}
+
+%D NEW: still to be documented.
+
+\def\fakecolumnfootnotes#1%
+ {\relax
+ \ifcase\clevernotes\else
+ \ifnum#1=\lastcolumnbox
+ \fakenotes
+ \fi
+ \fi}
+
+\def\columnfootnotecorrection#1#2%
+ {\relax
+ \ifcase\clevernotes
+ % page notes
+ \or
+ \ifnum#1=\firstcolumnbox\relax
+ \calculatetotalclevernoteheight
+ \advance#2 -\totalnoteheight
+ \fi
+ \else
+ \ifnum#1=\lastcolumnbox\relax
+ \calculatetotalclevernoteheight
+ \advance#2 -\totalnoteheight
+ \fi
+ \fi}
+
+% \def\overlaycolumnfootnotes % VERVANGEN !!!
+% {\relax
+% \ifcase\clevernotes\else
+% \checknotepresence
+% \ifnotespresent
+% % the note box has the depth of the notefont
+% % because a column (i.e. first column has no depth,
+% % we need to anchor top down)
+% \bgroup
+% \scratchdimen\ht\firstcolumnbox
+% \advance\scratchdimen -\openstrutdepth % \strutdp
+% \getnoflines\scratchdimen
+% \advance\noflines -2
+% \scratchdimen\noflines\lineheight
+% \advance\scratchdimen \topskip
+% \setbox0\hbox
+% {\lower\scratchdimen\vbox{\placenoteinserts}}%
+% \ht0=\openstrutheight % \strutht
+% \dp0=\openstrutdepth % \strutdp
+% \scratchdimen\ht\lastcolumnbox
+% \global\setbox\lastcolumnbox\vbox to \scratchdimen
+% {\box\lastcolumnbox
+% \vskip-\scratchdimen
+% \restoretextcolor{\box0}}%
+% \egroup
+% \fi
+% \fi}
+
+\def\overlaycolumnfootnotes
+ {\relax
+ \ifcase\clevernotes
+ % page notes
+ \else
+ \checknotepresence
+ \ifnotespresent
+ % the note box has the depth of the notefont
+ % because a column (i.e. first column has no depth,
+ % we need to anchor top down)
+ \bgroup
+ \ifcase\clevernotes\or
+ \getmulticolumnlines
+ \advance\nofcolumnlines -2 % ?
+ \scratchdimen\nofcolumnlines\lineheight
+ \advance\scratchdimen \topskip
+ \setbox0\hbox
+ {\lower\scratchdimen\vbox{\placenoteinserts}}%
+ \ht0=\openstrutheight % \strutht
+ \dp0=\openstrutdepth % \strutdp
+ \scratchdimen\ht\firstcolumnbox
+ \global\setbox\firstcolumnbox\vbox to \scratchdimen
+ {\box\firstcolumnbox
+ \vskip-\scratchdimen
+ \restoretextcolor{\box0}}%
+ \else
+ % maybe here also \getmulticolumnlines
+ \scratchdimen\ht\firstcolumnbox
+ \advance\scratchdimen -\openstrutdepth % \strutdp
+ \getnoflines\scratchdimen
+ \advance\noflines -2
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen \topskip
+ \setbox0\hbox
+ {\lower\scratchdimen\vbox{\placenoteinserts}}%
+ \ht0=\openstrutheight % \strutht
+ \dp0=\openstrutdepth % \strutdp
+ \scratchdimen\ht\lastcolumnbox
+ \global\setbox\lastcolumnbox\vbox to \scratchdimen
+ {\box\lastcolumnbox
+ \vskip-\scratchdimen
+ \restoretextcolor{\box0}}%
+ \fi
+ \egroup
+ \fi
+ \fi}
+
+%D Here comes the routine that splits the long box in columns.
+%D The macro \type{\flushcolumnfloats} can be used to flush
+%D either floats that were present before the multi||column
+%D mode was entered, or floats that migrate to next columns.
+%D Flushing floats is a delicate process.
+
+\def\continuousmulticolumnsout
+ {\bgroup
+ \forgetall
+ \setmulticolumnsout
+ \dontshowcomposition
+% \dimen0=\columntextheight
+% \advance\dimen0 -\precolumnboxheight
+% \settotalinsertionheight
+% \advance\dimen0 -\totalinsertionheight
+% \ifgridsnapping % evt altijd, nog testen
+% \getnoflines{\dimen0}
+% \dimen0=\noflines\openlineheight
+% \fi
+ \getmulticolumnlines
+ \dimen0=\nofcolumnlines\openlineheight
+ \dohandleallcolumns
+ {\splitcurrentcolumn from \box\normalpagebox to \dimen0}
+ \setbox\restofpage\vbox{\unvbox\normalpagebox}%
+ \ifinheritcolumns
+ \ifr@ggedbottom % vreemd
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vbox to \ht\firstcolumnbox
+ {\dimen0\dp\currentcolumnbox
+ \unvbox\currentcolumnbox
+ \vskip-\dimen0
+ \vskip\openstrutdepth % \strutdp
+ \prevdepth\openstrutdepth % \strutdp
+ \vfill}}%
+ \ifbottomnotes \else
+ \dimen0\ht\firstcolumnbox
+ \fi
+ \fi
+ \ifn@rmalbottom
+ \advance\dimen0 \maxdepth
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vbox to \dimen0
+ {\unvbox\currentcolumnbox}}%
+ \fi
+ \ifb@selinebottom
+ % the columns are on top of the baseline
+ \fi
+ \else
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vbox to \dimen0
+ {\ifstretchcolumns
+ \unvbox\currentcolumnbox
+ \else
+ \unvbox\currentcolumnbox % wel of niet \unvbox ?
+ \vfill
+ \fi}}%
+ \dohandleallcolumns
+ {\global\ht\currentcolumnbox\dimen0}%
+ \fi
+ \setbox\precolumnbox\vbox{\flushcolumnedpage}%
+ \finaloutput\box\precolumnbox
+ \sethsize
+ \setvsize
+ \flushcolumnfloats
+ \unvbox\restofpage
+ % \penalty\outputpenalty % gaat gruwelijk mis in opsommingen
+ \egroup}
+
+%D And this is the balancing stuff. Again, part of the routine
+%D is dedicated to handling ragged bottoms, but here we also
+%D see some handling concerning the stretching of columns.
+%D We set \type{\widowpenalty} at~0, which enables us to
+%D balance columns with few lines. The use of \type{\box2} and
+%D \type{\box4} garantees a more robust check when skips are
+%D used.
+
+\def\balancedmulticolumnsout
+ {\bgroup
+ \setmulticolumnsout
+ \dontshowcomposition
+ \widowpenalty\zerocount
+ \setbox0\vbox{\unvbox\normalpagebox}%
+\ifdim\ht0>\openlineheight % at least one line
+ \ifnum\minbalancetoplines<2 % balance anyway
+ \donetrue
+ \else % check criterium to available lines
+ \getnoflines{\ht0}%
+ \divide\noflines \nofcolumns \relax
+ \ifnum\noflines<\minbalancetoplines \relax
+ \dimen0\ht0
+ \advance\dimen0 \ht\firsttopcolumnbox
+ \advance\dimen0 \openlineheight \relax % let's play safe
+ \ifdim\dimen0>\columntextheight % column exceeding text height
+ \donetrue
+ \else % it seems to fit
+ \donefalse
+ \fi
+ \else % balance indeed
+ \donetrue
+ \fi
+ \fi
+\else % balancing does not make sense
+ \donefalse
+\fi
+\ifdone % start balancing
+ %\ifdim\ht0>\openlineheight
+ \dimen0\ht0
+ \advance\dimen0 \topskip
+ \advance\dimen0 -\baselineskip
+ \dohandleallcolumns
+ {\advance\dimen0 \ht\currenttopcolumnbox}%
+ \divide\dimen0 \nofcolumns
+ \vbadness\!!tenthousand\relax
+ \count255=\zerocount
+ \bgroup
+ \ifgridsnapping
+ \dimen2\lineheight
+ \else
+ \dimen2=\onepoint % RUBISH
+ \dimen2=\spacingfactor\dimen2
+ \fi
+ \loop
+ \advance\count255 \plusone
+ \global\setbox\restofpage\copy0\relax
+ \splitfirstcolumn from \box\restofpage to \dimen0
+ \dohandlemidcolumns
+ {\splitcurrentcolumn from \box\restofpage to \dimen0}%
+ \splitlastcolumn from \box\restofpage to \dimen0
+ \setbox2\vbox{\unvcopy\firstcolumnbox}%
+ \dimen4\zeropoint
+ \dohandleallcolumns
+ {\setbox4\vbox
+ {\unvcopy\currentcolumnbox
+ %rather new, test this on pdftex-z.tex
+ \unpenalty\unskip\unpenalty\unskip}% maybe better in main splitter
+ %\writestatus{balance}{\the\currentcolumnbox: \the\ht4}%
+ \dimen6\ht4
+ \ifdim\dimen6>\dimen4 \dimen4=\dimen6 \fi}%
+ \advance\dimen4 -.0005pt % get rid of accurracy problem, pretty new
+ \ifnum\count255>100
+ \donefalse
+ \else\ifdim\dimen4>\ht2
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \advance\dimen0 \dimen2\relax
+ \repeat
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vbox{\unvcopy\currentcolumnbox}}% NIEUW
+ \ifnum\count255>100\relax
+ \showmessage\m!columns7\empty
+ \else
+ \showmessage\m!columns8{\the\count255\space}%
+ \fi
+ \egroup
+ \ifinheritcolumns
+ \dimen0\ht\firstcolumnbox
+ \dimen2\ht\firstcolumnbox
+ \advance\dimen2 -\openlineheight
+ \dohandleallcolumns
+ {\dimen4\ht\currentcolumnbox
+ \dimen6=10\openlineheight
+ \global\setbox\currentcolumnbox\vbox to \dimen0
+ {\unvbox\currentcolumnbox
+ \ifdim\dimen4>\dimen6
+ \ifdim\dimen4<\dimen0
+ \ifdim\dimen4>\dimen2
+ \vskip\zeropoint % !!
+ \else
+ \vskip\openlineheight
+ \vfill
+ \fi
+ \else
+ \vskip\zeropoint
+ \fi
+ \else
+ \vskip\openlineheight
+ \vfill
+ \fi}}%
+ \else
+ \bgroup
+ \ifstretchcolumns
+ \dimen0\ht\firstcolumnbox
+ \dimen2=\bottomtolerance\ht\firstcolumnbox
+ \setbox0\vbox{\unvcopy\lastcolumnbox}%
+ \advance\dimen0 -\ht0\relax
+ \advance\dimen0 -\dp0\relax
+ \ifdim\dimen0>\openlineheight\relax
+ \ifdim\dimen0>\dimen2\relax
+ % \stretchcolumnsfalse % beter goed slecht dan slecht goed
+ \showmessage\m!columns9\empty
+ \fi
+ \fi
+ \fi
+ \dohandleallcolumns
+ {\global\setbox\currentcolumnbox\vbox to \ht\firstcolumnbox
+ {\ifstretchcolumns
+ \unvbox\currentcolumnbox
+ \else
+ \box\currentcolumnbox
+ \vfill
+ \fi}}%
+ \egroup
+ \fi
+ \else
+ \showmessage\m!columns{10}\empty
+ \global\setbox\firstcolumnbox\vbox{\unvbox0}%
+ \fi
+ \global\output{\balancingerror}%
+ \b@selinebottomtrue % forces depth in separation rule
+ \flushcolumnedpage
+ \allowbreak
+ \egroup}
+
+%D The multicolumn mechanism is incorporated in a \CONTEXT\
+%D interface, which acts like:
+%D
+%D \starttyping
+%D \startcolumns[n=4,balance=no]
+%D some text
+%D \stopcolumns
+%D \stoptyping
+%D
+%D The setup is optional. The default behaviour of columns
+%D can be set up with:
+%D
+%D \starttyping
+%D \setupcolumns
+%D [n=2,
+%D balance=yes]
+%D \stoptyping
+%D
+%D In this case, stretching is according to the way it's
+%D done outside columns (\type{\inheritcolumnstrue}). Also
+%D we can setup the \type{tolerance} within a column, the
+%D \type{distance} between columns and the fixed
+%D \type{height} of a column.
+
+%D Multi||column output: the float routines
+%D
+%D Here come the routines that handle the placement of column
+%D floats. Floats that are to big migrate to the next
+%D column. Floats that are too wide, migrate to the top of the
+%D next page, where they span as much columns as needed.
+%D Floats that are left over from outside the multi||column
+%D mode are flushed first. In macro \type{\finaloutput} the
+%D topfloats that are left from previous text should be set.
+%D
+%D When there are some floats in the queue, we inhibit the
+%D flushing of floats on top of columns. The number of
+%D waiting floats is preswent in \type{\savednoftopfloats} and
+%D is saved. As long as there are floats waiting, the topfloats
+%D are places as if we are outside multi||column mode. This is
+%D neccessary for e.g. multicolumn lists.
+%D
+%D When all those floats are flushed, we switch to the local
+%D flushing routine.
+
+\def\setcolumnfloats
+ {\xdef\globalsavednoffloats{\the\savednoffloats}%
+ \ifnum\globalsavednoffloats>\zerocount
+ \setglobalcolumnfloats
+ \else
+ \setlocalcolumnfloats
+ \fi}
+
+\def\setglobalcolumnfloats
+ {\everypar\emptytoks
+ \let\flushcolumnfloat\relax
+ %\let\doroomfloat\relax
+ \let\docheckiffloatfits\relax
+ \let\flushcolumnfloats\noflushcolumnfloats}
+
+\def\setlocalcolumnfloats
+ {\everypar
+ {\flushnotes\flushcolumnfloat\flushmargincontents\checkindentation}%
+ \let\flushcolumnfloat\doflushcolumnfloat
+ %\let\doroomfloat\docolumnroomfloat
+ \let\docheckiffloatfits\docolumnroomfloat
+ \let\flushcolumnfloats\doflushcolumnfloats
+ \let\doflushfloats\doflushcolumnfloats % new
+ \let\dosetbothinserts\relax
+ \let\dotopinsertions\relax}
+
+\def\noflushcolumnfloats
+ {\bgroup
+ \xdef\localsavednoffloats{\the\savednoffloats}%
+ \global\savednoffloats\globalsavednoffloats
+ \dotopinsertions
+ \xdef\globalsavenoffloats{\the\savednoffloats}%
+ \ifnum\globalsavednoffloats=\zerocount
+ \setlocalcolumnfloats
+ \fi
+ \global\savednoffloats\localsavednoffloats
+ \egroup}
+
+%D We need to calculate the amount of free space in a columns.
+%D When there is not enough room, we migrate the float to the
+%D next column. These macro's are alternatives (and
+%D look||alikes) of \type{\doroomfloat}. When a float is to
+%D wide, for one column, it is moved to the top of the next
+%D page. Of course such moved floats have to be taken into
+%D account when we calculate the available space. It's a pitty
+%D that such things are no integral part of \TEX.
+
+\def\getcolumnstatus\column#1\total#2\goal#3\\%
+ {\dimen0=\ifdim\pagegoal<\maxdimen \pagetotal \else \zeropoint \fi
+ \dimen2=\zeropoint
+ \count255=\zerocount
+ \dimen8=\columntextheight
+ \advance\dimen8 -\precolumnboxheight
+ \def\dogetcolumnstatus
+ {\advance\count255 \plusone
+ \advance\dimen2 \ht\currenttopcolumnbox
+ \advance\dimen2 \dp\currenttopcolumnbox
+ \dimen4\dimen2
+ \advance\dimen4 \dimen0
+ \dimen6=\count255\dimen8
+ \ifdim\dimen4>\dimen6
+ \else
+ \let\dogetcolumnstatus\relax
+ \fi}%
+ \dohandleallcolumns{\dogetcolumnstatus}%
+ \ifnum\count255=0 \count255=1 \fi
+ #1=\count255
+ #2=\dimen4
+ #3=\dimen6 }
+
+\def\getinsertionheight
+ {\ifdim\pagegoal<\maxdimen
+ \bgroup
+ \dimen0=\columntextheight
+ \advance\dimen0 -\pagegoal
+ \xdef\insertionheight{\the\dimen0}%
+ \egroup
+ \else
+ \global\let\insertionheight\zeropoint
+ \fi}
+
+\def\docolumnroomfloat
+ {\ifpostponecolumnfloats
+ \global\roomforfloatfalse
+ \else\ifnofloatpermitted
+ \global\roomforfloatfalse
+ \else
+ \bgroup
+ \getcolumnstatus\column\count255\total\dimen0\goal\dimen2\\%
+ \advance\dimen0 2\openlineheight % nog nodig ?
+ %\ifnum\count255=\nofcolumns
+ % \getinsertionheight
+ % %\message{\insertionheight}\wait
+ % \advance\dimen0 \insertionheight
+ %\fi
+ \setbox\scratchbox\vbox % tricky met objecten ?
+ {\blank[\@@bkspacebefore]
+ \snaptogrid\vbox{\copy\floatbox}}%
+ \advance\dimen0 \ht\scratchbox
+ \advance\dimen0 .5\lineheight % needed because goal a bit higher
+ %\message{column: \the\count255; total: \the\dimen0; goal: \the\dimen2}\wait
+ \ifdim\dimen0>\dimen2
+ \global\roomforfloatfalse
+ \else
+ \global\roomforfloattrue
+ \fi
+ \ifdim\wd\floatbox>\hsize
+ \showmessage\m!columns{11}\empty
+ \global\roomforfloatfalse
+ \fi
+ \egroup
+ \fi\fi}
+
+%D Flushing one float is done as soon as possible, i.e.
+%D \type{\everypar}. This means that (at the moment)
+%D sidefloats are not supported (overulled)!
+
+\newif\ifflushingcolumnfloats \flushingcolumnfloatstrue
+
+\def\doflushcolumnfloat
+ {\ifpostponecolumnfloats\else\ifflushingcolumnfloats\ifprocessingverbatim\else\ifsomefloatwaiting
+ \bgroup
+ \forgetall
+ \let\doflushcolumnfloat\relax
+ \getcolumnstatus\column\mofcolumns\total\dimen0\goal\dimen2\\%
+ \ifdim\dimen0>\zeropoint
+ \dogetfloat
+ \ifdim\wd\floatbox>\hsize
+ \doresavefloat
+ \else
+ %\setbox2=\vbox
+ % {\blank[\@@bkspacebefore]
+ % \snaptogrid\vbox{\copy\floatbox}%
+ % \blank[\@@bkspaceafter]
+ \setbox2=\vbox
+ {\blank[\@@bkspacebefore]
+ \snaptogrid\vbox{\copy\floatbox}}%
+ \advance\dimen0 \ht2
+ \ifdim\dimen0>\dimen2
+ \ifnum\mofcolumns<\nofcolumns
+ \advance\mofcolumns \plusone
+%% bug %% \edef\currenttopcolumnbox{\getvalue{\@@topcol\the\count255}}%
+ \ifdim\ht\currenttopcolumnbox=\zeropoint
+ \global\setbox\currenttopcolumnbox\vbox
+ {\snaptogrid\vbox{\copy\floatbox}
+ \whitespace % nodig ?
+ \blank[\@@bkspaceafter]}%
+ \dimen4=\ht\currenttopcolumnbox
+ \advance\dimen4 \dp\currenttopcolumnbox
+ \global\advance\vsize -\dimen4
+ \advance\dimen4 -\pagegoal
+ \global\pagegoal-\dimen4
+ \showmessage\m!columns{12}a%
+ \else
+ \showmessage\m!columns{12}b%
+ \doresavefloat
+ \fi
+ \else
+ \showmessage\m!columns{12}c%
+ \doresavefloat
+ \fi
+ \else
+ \ifhmode{\setbox0\lastbox}\fi% waar is die er in geslopen
+ \par
+ \ifdim\prevdepth<\zeropoint \else % anders bovenaan kolom witruimte
+ \nobreak
+ \blank[\@@bkspacebefore]
+ \nobreak
+ \fi
+ \flushfloatbox
+ \blank[\@@bkspaceafter]
+ \fi
+ \fi
+ \fi
+ \egroup
+ \fi\fi\fi\fi}
+
+%D This one looks complicated. Upto \type{\nofcolumns} floats
+%D are placed, taking the width of a float into account. This
+%D routine can be improved on different ways:
+%D
+%D \startitemize[intro,packed]
+%D \item taking into account some imaginary baseline, just to
+%D get the captions in line
+%D \item multipass flushing until as many floats are displaced
+%D as possible
+%D \stopitemize
+%D
+%D When handling lots of (small) floats spacing can get worse
+%D because of lining out the columns.
+
+\def\doflushcolumnfloats
+ {\ifpostponecolumnfloats\else
+ \bgroup
+ \forgetall
+ \ifsomefloatwaiting
+ \dimen8\zeropoint
+ \dimen4\zeropoint
+ \count0\zerocount % count0 can be used local
+ \count2\nofcolumns % count2 can be used local
+ \dohandleallcolumns
+ {\ifnum\count0>\zerocount % the wide one's reserved space
+ \global\setbox\currenttopcolumnbox\vbox
+ {\snaptogrid\vbox
+ {\copy\currenttopcolumnbox
+ \hbox{\vphantom{\copy\floatbox}}}
+ \whitespace % nodig ?
+ \blank[\@@bkspaceafter]}%
+ \else
+ \dogetfloat
+ \ifdim\wd\floatbox>\finalcolumntextwidth % better somewhere else too
+ \global\setbox\floatbox\hbox to \finalcolumntextwidth{\hss\box\floatbox\hss}%
+ \fi % otherwise the graphic may disappear
+ \ifdim\wd\floatbox>\hsize
+ \dimen0\wd\floatbox
+ \advance\dimen0 \intercolumnwidth
+ \dimen2\hsize
+ \advance\dimen2 \intercolumnwidth
+ \advance\dimen0 .5pt % hm, why 1
+ \advance\dimen2 .5pt % hm, why 2
+ \divide\dimen0 \dimen2
+ \count0\dimen0
+ \advance\count0 \plusone
+ \ifnum\count0>\count2
+ \doresavefloat
+ \count0\zerocount
+ \else
+ \dimen0=\count0\hsize
+ \advance\dimen0 \count0\intercolumnwidth
+ \advance\dimen0 -\intercolumnwidth
+ \global\setbox\floatbox\hbox to \dimen0
+ %{\hss\hbox{\copy\floatbox}\hss}%
+ {\processaction[\@@bklocation] % how easy to forget
+ [ \v!left=>\copy\floatbox\hss,
+ \v!right=>\hss\copy\floatbox,
+ \s!default=>\hss\copy\floatbox\hss,
+ \s!unknown=>\hss\copy\floatbox\hss]}%
+ \fi
+ \showmessage\m!columns{13}\empty
+ \else
+ % \showmessage\m!columns{13}\empty
+ \fi
+ \ifdim\ht\floatbox>\zeropoint\relax
+ \global\setbox\currenttopcolumnbox\vbox
+ {\snaptogrid\vbox
+ {\copy\currenttopcolumnbox
+ \copy\floatbox}
+ \whitespace % nodig ?
+ \blank[\@@bkspaceafter]}%
+ \fi
+ \dimen6\ht\currenttopcolumnbox
+ \advance\dimen6 \dp\currenttopcolumnbox
+ \fi
+ \ifdim\dimen4<\ht\currenttopcolumnbox
+ \dimen4\ht\currenttopcolumnbox
+ \fi
+ \advance\dimen8 \dimen6
+ \advance\count2 \minusone
+ \advance\count0 \minusone }%
+ \setvsize
+ \global\advance\vsize -\dimen8
+ \global\pagegoal\vsize
+ \else
+ %\doflushfloats % does not snap!
+ \fi
+ \egroup
+ \fi}
+
+%D This were the multi||column routines. They can and need to
+%D be improved but at the moment their behaviour is acceptable.
+%D
+%D One inprovement can be to normalize the height of floats
+%D to $n\times$\type{\lineheight} with a macro like:
+%D
+%D \starttyping
+%D \normalizevbox{...}
+%D \stoptyping
+
+% border case, should fit on one page
+%
+% \startcolumns
+%
+% 1 \input tufte \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{1}}
+% 2 \input tufte \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{2}}
+% 3 \input tufte \par \plaatsfiguur{}{\omlijnd[breedte=\hsize,hoogte=3cm]{3}}
+%
+% \stopcolumns
+
+\newif\ifinsidecolumns
+\newif\if@@klbalanceren
+\newif\if@@kluitlijnen
+
+\insidecolumnsfalse
+
+\def\setupcolumns
+ {\dosingleempty\dosetupcolumns}
+
+\def\dosetupcolumns[#1]%
+ {\getparameters[\??kl][#1]%
+ \nofcolumns\@@kln\relax
+ \processaction
+ [\@@klrule]
+ [ \v!on=>\let\betweencolumns\linebetweencolumns,
+ \v!off=>\let\betweencolumns\spacebetweencolumns,
+ \s!default=>\let\betweencolumns\spacebetweencolumns,
+ \s!unknown=>\let\betweencolumns\@@klrule]}
+
+\def\linebetweencolumns
+ {\bgroup
+ \starttextproperties
+ \ifdim\@@kldistance>\zeropoint
+ \dimen0=\@@kldistance
+ \else
+ \dimen0=\linewidth
+ \fi
+ \advance\dimen0 -\linewidth
+ \hskip.5\dimen0
+ \vrule
+ \!!width\linewidth
+ \ifb@selinebottom\!!depth\strutdepth\fi
+ \hskip.5\dimen0\relax
+ \stoptextproperties
+ \egroup}
+
+\def\spacebetweencolumns
+ {\hskip\@@kldistance}
+
+\presetlocalframed[\??kl]
+
+\def\backgroundfinishcolumnbox
+ {\doifinsetelse\@@kloffset{\v!none,\v!overlay}
+ {\let\@@kloffset\!!zeropoint}
+ {\scratchdimen\@@kloffset
+ \advance\scratchdimen -\@@klrulethickness
+ \edef\@@kloffset{\the\scratchdimen}}%
+ \localframed
+ [\??kl]
+ [\c!strut=\v!no,
+ \c!width=\v!fit,
+ \c!height=\v!fit,
+ \c!align=]}
+
+\let\restorecolumnsettings\relax
+
+\definecomplexorsimpleempty\startcolumns
+
+\def\complexstartcolumns[#1]% %% \startcolumns
+ {\bgroup
+ \let\stopcolumns\egroup
+ \ifinsidecolumns
+ \else
+ \setupcolumns[#1]%
+ \ifnum\@@kln>1\relax
+ \whitespace
+ \begingroup
+ \doif\@@kloption\v!background
+ {\let\finishcolumnbox\backgroundfinishcolumnbox
+ \let\columntextoffset\@@kloffset}%
+ \ifx\@@klcommand\empty\else
+ \let\postprocesscolumnline\@@klcommand
+ \fi
+ \doifelsenothing\@@klheight
+ \heightencolumnsfalse
+ \heightencolumnstrue
+ \doifelse\@@kldirection\v!right
+ \reversecolumnsfalse
+ \reversecolumnstrue
+ \doifelse\@@klbalance\v!yes
+ \balancecolumnstrue
+ \balancecolumnsfalse
+ \processaction % ook nog: laatsteuitlijnen
+ [\@@klalign]
+ [ \v!yes=>\stretchcolumnstrue
+ \inheritcolumnsfalse,
+ \v!no=>\stretchcolumnsfalse
+ \inheritcolumnsfalse,
+ \v!text=>\stretchcolumnsfalse
+ \inheritcolumnstrue]%
+ \nofcolumns=\@@kln
+ %
+ % probably more is needed, and how about nesting save's
+ %
+ \savecurrentblank
+ \savecurrentwhitespace
+ \def\restorecolumnsettings
+ {\boxmaxdepth\maxdimen % done elsewhere
+ \restorecurrentblank
+ \restorecurrentwhitespace}%
+ %
+ \edef\fixedcolumnheight{\@@klheight}%
+ \edef\minbalancetoplines{\@@klntop}%
+ \setuptolerance[\@@kltolerance]% %% \startcolumns
+ \setupblank[\@@klblank]%
+ \ifdim\ctxparskip>\zeropoint\relax
+ \setupwhitespace[\@@klblank]%
+ \fi
+ \def\stopcolumns
+ {\endmulticolumns
+ \global\insidecolumnsfalse
+ \endgroup
+ \egroup}%
+ \global\insidecolumnstrue
+ \beginmulticolumns
+ \fi
+ \fi}
+
+\installcolumnbreakhandler {MUL} \v!preference
+ {\goodbreak}
+
+\installcolumnbreakhandler {MUL} \v!yes
+ {\par % todo: since
+ {\testrulewidth\zeropoint\ruledvskip\textheight} % we misuse a
+ \penalty-200 % side effect
+ \vskip-\textheight
+ \prevdepth-\thousandpoint} % signals top of column to \blank
+
+\setupcolumns
+ [\c!n=2,
+ \c!ntop=1,
+ \c!command=,
+ \c!direction=\v!right,
+ \c!rule=\v!off,
+ \c!tolerance=\v!tolerant,
+ \c!distance=1.5\korpsgrootte, % influenced by switching
+ \c!height=,
+ \c!balance=\v!yes,
+ \c!align=\v!text,
+ \c!blank={\v!line,\v!fixed},
+ \c!option=,
+ \c!rulethickness=\linewidth,
+ \c!offset=.5\korpsgrootte]
+
+%D Undocumented and still under development.
+
+\def\startsimplecolumns
+ {\dosingleempty\dostartsimplecolumns}
+
+\def\dostartsimplecolumns[#1]%
+ {\bgroup
+ \nopenalties
+ \getparameters[\??kl]
+ [\c!width=\hsize,\c!distance=1.5\korpsgrootte,%
+ \c!n=2,\c!lines=0,#1]%
+ \let\rigidcolumnlines\@@kllines
+ \setrigidcolumnhsize\@@klwidth\@@kldistance\@@kln
+ \setbox\scratchbox\vbox\bgroup
+ \forgetall} % \blank[\v!disable]
+
+\def\stopsimplecolumns
+ {\removebottomthings
+ \egroup
+ \rigidcolumnbalance\scratchbox
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-new.tex b/Master/texmf-dist/tex/context/base/page-new.tex
new file mode 100644
index 00000000000..8158f2e9786
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-new.tex
@@ -0,0 +1,265 @@
+\unprotect
+
+% % % NOT ENGLISH % % %
+
+% clean up footnotes to notes
+
+% We need to set the \dimen globally since we are in the
+% OTR. Unfortunately this interferes with local settings,
+% although we may assume that they will not cross page
+% boundaries.
+
+\def\OTRSETcheckcontent
+ {\bgroup
+ \donefalse
+ \def\OTRSETcheckcontent##1%
+ {\setbox\scratchbox##1\recurselevel
+ \setbox\scratchbox\vbox{\unvbox\scratchbox}%
+ \ifdim\ht\scratchbox>\zeropoint\donetrue\fi}%
+ \dorecurse{\nofcolumns}
+ {\OTRSETcheckcontent\columngettextbox
+ \OTRSETcheckcontent\columngetfootbox
+ \OTRSETcheckcontent\columngettopbox
+ \OTRSETcheckcontent\columngetbotbox}%
+ \ifdone\egroup\donefalse\else\egroup\donetrue\fi}
+
+\def\OTRSETgetcolumntextheight#1% max - boven - top
+ {\scratchdimen=\OTRSETgetparameter\c!maxhoogte#1%
+ \advance\scratchdimen -\OTRSETgetparameter\c!bovenoffset#1%
+ \advance\scratchdimen -\ht\columntopbox#1%
+ \advance\scratchdimen -\getvalue{\??mc\number\mofcolumns-f}%
+ \advance\scratchdimen -\ht\columnbotbox#1} % not used
+
+\def\OTRSETgetcolumnnaturalheight#1% max - boven - top
+ {\setbox\scratchbox\vbox{\unvcopy\columntextbox#1}%
+ \scratchdimen\ht\scratchbox
+ \advance\scratchdimen \OTRSETgetparameter\c!bovenoffset#1%
+ \advance\scratchdimen \ht\columntopbox#1%
+ \advance\scratchdimen -\getvalue{\??mc\number\mofcolumns-f}%
+ \advance\scratchdimen \ht\columnbotbox#1} % not used
+
+\def\OTRSETdobalance% splitten in met en zonder footnotes
+ {\bgroup
+ \maxdeadcycles=1000
+ % collect content and notes
+ \bgroup
+ \OTRSEToutput
+ {\global\setbox1\vbox{\unvbox\normalpagebox}%
+ \global\setbox3\vbox{\unvbox\footins}}%
+ \verticalstrut\vskip-\struttotal % makes footnotes flush
+ \eject
+ \global\collectingcontentfalse
+ % check for footnotes only
+ \ifdim\ht1<\topskip % real dirty
+ \global\setbox1=\vbox{}
+ % fix height of first line
+ \ifdim\ht3>\!!zeropoint
+ \global\setbox3\vbox
+ {\setfootnotebodyfont
+ \kern-\strutht
+ \kern\topskip
+ \unvbox3}
+ \fi
+ % prepare trial box
+ \global\setbox5\vbox
+ {\ifdim\ht1>\zeropoint
+ \unvcopy1 \ifdim\ht3>\zeropoint \kern\skip\footins \fi
+ \fi
+ \ifdim\ht3>\zeropoint \unvcopy3 \fi}
+ \egroup
+ % erase old stuff
+ \columnerasetextboxes
+ \columnerasefootboxes
+ % prepare floats
+ \OTRSETdotopinsertions
+ \OTRSETdobotinsertions % not used can be removed
+ % calculate available space
+ \!!heighta\zeropoint % available total height
+ \dorecurse{\nofcolumns}
+ {\OTRSETgetcolumntextheight\recurselevel
+ \OTRSETcalculatelines\scratchdimen
+ \advance\!!heighta \scratchdimen}
+ % quick check
+ \ifdim\ht5>\!!heighta
+ % use normal routine
+ \columnerasetextboxes
+ \columnerasefootboxes
+ % TEMP, TODO, FORCE NEXT PASS !
+ \unvbox1
+ \unvbox3
+ \doglobal\addtocommalist{-\realfolio}\OTRSETbalancinglist
+ \donefalse
+ %\writestatus\m!columns{no balancing, text overflows height}%
+ \else\ifdim\ht5>\zeropoint \relax
+ % some text and/or notes
+ \donetrue
+ \else
+ \donefalse
+ \dorecurse\nofcolumns
+ {\ifdim\ht\columntopbox\recurselevel>\zeropoint \donetrue \fi}%
+ \ifdone
+ % no text and notes, but figures
+ \else
+ % no text, no notes, no figures
+ \doglobal\addtocommalist{-\realfolio}\OTRSETbalancinglist
+ \writestatus\m!columns{no balancing, nothing to be placed}%
+ \fi
+ \fi\fi
+ \ifdone
+ \ifdim\ht5>\zeropoint \relax
+ % balancing text and notes
+ %\writestatus\m!columns{text may fit, balancing}%
+ \newcounter\loopcounter
+ \newcounter\balancinglines
+ \doloop
+ {\increment\loopcounter\relax
+ % initialize
+ \columnerasetextboxes
+ \columnerasefootboxes
+ \setbox0=\copy5
+ \splittopskip\topskip
+ % pre-split loop and quality calculation
+ %\writestatus\m!columns{pass \loopcounter: correction -\balancinglines}
+ \dorecurse\nofcolumns
+ {\OTRSETgetcolumntextheight\recurselevel
+ \OTRSETcalculatelines\scratchdimen
+ \!!heightc\scratchdimen
+ \ifnum\recurselevel<\nofcolumns
+ \advance\!!heightc -\balancinglines\lineheight
+ \fi
+ \columnsettextbox\recurselevel\vsplit0 to \!!heightc}
+ % just one method
+ \OTRSETgetcolumnnaturalheight1 \dimen4\scratchdimen
+ \OTRSETgetcolumnnaturalheight\nofcolumns \dimen6\scratchdimen
+ %\writestatus\m!columns{first column: \the\dimen4}%
+ %\writestatus\m!columns{last column: \the\dimen6}%
+ \ifdim\dimen4=\dimen6
+ \donetrue % perfect balance
+ \else\ifdim\dimen4>\dimen6
+ \donefalse % not yet good enough
+ \increment\balancinglines % try again
+ \edef\balancingcount{\the\!!counta}
+ \else
+ \donetrue % worse balance
+ \ifnum\balancinglines>0 % take previous
+ \decrement\balancinglines
+ \fi
+ \fi\fi
+ % extra check
+ % \ifdim\ht0>\zeropoint\relax \donefalse \fi
+ % another check
+ \ifdone
+ %\writestatus\m!columns{balancing finished in pass \loopcounter}%
+ \else \ifnum\loopcounter>100 \donetrue
+ %\writestatus\m!columns{balancing aborted after pass \loopcounter}%
+ \else
+ %\writestatus\m!columns{balancing continued after pass \loopcounter}%
+ \fi \fi
+ % final balancing pass
+ \ifdone
+ \setbox0\copy1
+ \setbox2\copy3
+ \columnerasetextboxes
+ \columnerasefootboxes
+ \dorecurse\nofcolumns
+ {\OTRSETgetcolumntextheight\recurselevel
+ \OTRSETcalculatelines\scratchdimen
+ \!!heightc\scratchdimen
+ \ifnum\recurselevel<\nofcolumns
+ \advance\!!heightc -\balancinglines\lineheight
+ \fi
+ % split off text
+ \ifdim\ht0>\zeropoint
+ \columnsettextbox\recurselevel\vsplit0 to \!!heightc
+ \setbox4\vbox{\unvcopy\columntextbox\recurselevel}
+ \advance\!!heightc -\ht4
+ \ifdim\ht0>\zeropoint
+ \columnsettextbox\recurselevel\box4
+ \advance\!!heightc \skip\footins
+ \fi
+ \fi
+ % split off footnotes
+ \ifdim\ht0>\zeropoint\relax \else
+ \ifdim\ht2>\zeropoint\relax
+ \setbox4\vsplit2 to \!!heightc
+ \setbox\footins=\vbox{\unvbox4} % ugly and dirty trick
+ \ifdim\ht\columntextbox\recurselevel=\zeropoint\relax
+ \columnsettextbox\recurselevel\hbox
+ {\raise\strutdp\hbox % ugly but needed
+ {\setfootnotebodyfont % both these moves
+ \lower\strutdp\hbox{\placebottomnotes}}}
+ \else
+ \columnsetfootbox\recurselevel\hbox{\placebottomnotes}
+ \fi
+ \fi
+ \fi}
+ \exitloop
+ \fi}
+ \else
+ % no reason to balance floats
+ \fi
+ \fi
+ \doglobal\addtocommalist{\realfolio}\OTRSETbalancinglist
+ \OTRSETdoflush
+ \fi
+ \egroup}
+
+\protect \endinput
+
+% \def\OTRSETsetbalanceht#1#2% var col
+% {#1\getvalue{\??mc\OTRSETidentifier\number#2\c!regels}\relax
+% \ifcase#1#1\getvalue{\??mc\OTRSETidentifier\c!regels}\relax\fi
+% \ifcase#1#1\savedcolumnmaxcells\relax\fi}
+
+% \def\OTRSETinitbalancing
+% {\ifbalancecolumns
+% \let\savedcolumnmaxcells\columnmaxcells
+% \ifnum\realpageno=\balancingpageno\relax
+% \ifnum\mofcolumns=\plusone\relax
+% \ifcase\OTRSETbottombalance \else
+% \!!countc\zeropoint
+% \dorecurse\nofcolumns
+% {\OTRSETsetbalanceht\!!countb\recurselevel
+% \ifnum\!!countb>\!!countc\!!countc\!!countb\fi}%
+% \fi
+% \dorecurse\nofcolumns
+% {\!!counta\recurselevel\relax
+% % can be an option: absolute versus relative
+% \ifcase\OTRSETbottombalance
+% \OTRSETsetbalanceht\!!countb\recurselevel
+% \advance\!!countb\precolumnlines
+% \ifnum\!!countb>\localcolumnmaxcells\relax
+% \xdef\localcolumnmaxcells{\the\!!countb}%
+% \fi
+% \advance\!!countb \plusone
+% \dostepwiserecurse\!!countb\columnmaxcells\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \else
+% \globallet\localcolumnmaxcells\columnmaxcells
+% \!!countb\!!countc
+% \advance\!!countb-\columnmaxcells
+% \!!countb-\!!countb
+% \advance\!!countb \minusone
+% \ifnum\!!countb>\zerocount
+% \dostepwiserecurse\plusone\!!countb\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \OTRSETsetbalanceht\!!countb\recurselevel
+% \ifnum\!!countc>\!!countb
+% \!!countd\columnmaxcells
+% \advance\!!countd-\!!countc
+% \advance\!!countd+\!!countb
+% \dostepwiserecurse\!!countd\columnmaxcells\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \fi
+% \fi
+% \fi}%
+% \OTRSETsetvsize % ! ! !
+% \fi
+% \fi
+% \fi}
diff --git a/Master/texmf-dist/tex/context/base/page-not.tex b/Master/texmf-dist/tex/context/base/page-not.tex
new file mode 100644
index 00000000000..151f957f4bd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-not.tex
@@ -0,0 +1,72 @@
+%D \module
+%D [ file=page-nnt,
+%D version=2002.04.16,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Footnotes,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Footnotes}
+
+%D Terrible hacks: we need to share save/restore
+
+%D We've moved some footnote handling to a separate page
+%D module. The macros below are used in the single and multi
+%D column page handlers and permit mixed usage of column and
+%D page notes.
+
+\unprotect
+
+\def\checkbegincolumnfootnotes % should happen inside otr
+ {\ifcase\clevernotes
+ \erasenotebackup
+ \else
+ \doflushnotes
+ \savenotecontent
+ \fi
+ \savenotedata
+ \checknotes}
+
+\def\checkendcolumnfootnotes
+ {\restorenotedata % maybe better just \checknotes
+ \ifcase\clevernotes\else
+ \restorenotecontent
+ \fi}
+
+\def\checksinglecolumnfootnotes
+ {\checknotes} % njet : \restorenotedata
+
+\newdimen\totalinsertionheight
+
+\def\settotalinsertionheight
+ {\calculatetotalnoteheight
+ \totalinsertionheight\totalnoteheight
+ \addinsertionheight\topins\to\totalinsertionheight
+ \addinsertionheight\botins\to\totalinsertionheight}
+
+% hm
+
+\def\checkbegincolumnfootnotes % should happen inside otr
+ {\ifcase\clevernotes
+ \erasenotebackup
+ \else
+ \doflushnotes
+ \savenotecontent
+ \fi
+ \savenotedata
+ \checknotes}
+
+\def\checkendcolumnfootnotes
+ {\restorenotedata
+ \ifinsidecolumns
+ \ifcase\clevernotes\else
+ \restorenotecontent
+ \fi
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-num.tex b/Master/texmf-dist/tex/context/base/page-num.tex
new file mode 100644
index 00000000000..358a30275fa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-num.tex
@@ -0,0 +1,558 @@
+%D \module
+%D [ file=page-num, % moved here from main-001
+%D version=1997.03.31,
+%D title=\CONTEXT\ Core Macros,
+%D subtitle=Numbering,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Core Macros / Numbering}
+
+% todo: {}{}{} ipv ...--...-...-...--... in pag ref
+
+\unprotect
+
+% \gotonextsubpage : voor de pagebody
+% \subpaginanummer : alleen in de voet/kopregels
+% \aantalsubpaginas : alleen in de voet/kopregels
+
+% \firstsubpage : eerste \realpageno, voor interne doeleinden
+% \prevsubpage : vorige \realpageno, voor interne doeleinden
+% \nextsubpage : volgende \realpageno, voor interne doeleinden
+% \lastsubpage : laatste \realpageno, voor interne doeleinden
+% \nofsubpages : laatste subpage (in berekeningen)
+% \subpageno : huidige subpage (in berekeningen)
+
+\newif\ifsubpaging
+\newif\ifshowingsubpage
+
+\definenumber
+ [\s!subpage]
+
+\setupnumber
+ [\s!subpage]
+ [\c!way=\@@snway]
+
+% hard to sync
+%
+% \def\resetsubpagenumber
+% {\resetnumber[\s!subpage]%
+% \global\subpageno=\rawnumber[\s!subpage]}
+%
+% better sync
+
+\newif\ifresettingsubpagenumber
+
+\def\resetsubpagenumber
+ {\global\resettingsubpagenumbertrue}
+
+% so far for sync, see \gotonext...
+
+\def\dosetupsubpagenumber[#1]%
+ {\doifelse{#1}\v!reset
+ \resetsubpagenumber % \resetnumber[\s!subpage]
+ {\getparameters[\??sn][#1]%
+ \processaction
+ [\@@snstate]
+ [ \v!stop=>\ifsubpaging
+ \resetsubpagenumber % new, see sync
+ \else
+ \subpagingfalse
+ \fi
+ \showingsubpagefalse,
+ \v!start=>\subpagingtrue
+ \showingsubpagetrue,
+ \v!none=>\subpagingtrue
+ \showingsubpagefalse]}}
+
+\def\numberofsubpages
+ {\ifshowingsubpage\nofsubpages\else0\fi}
+
+\def\subpagenumber
+ {\ifshowingsubpage\the\subpageno\else0\fi}
+
+\def\setupsubpagenumber
+ {\dosingleargument\dosetupsubpagenumber}
+
+\def\newnofsubpages{0}
+\def\nofsubpages {0}
+\def\firstsubpage {1}
+\def\prevsubpage {1}
+\def\nextsubpage {1}
+\def\lastsubpage {1}
+
+\def\nextpage {1}
+\def\prevpage {1}
+
+\definetwopasslist\s!subpage
+
+\def\savenofsubpages
+ {\ifsubpaging
+ \showmessage\m!layouts6{\newnofsubpages,\the\subpageno}%
+ \immediatewriteutilitycommand{\twopassentry{\s!subpage}{\newnofsubpages}{\the\subpageno}}%
+ \fi}
+
+\def\setsubpagenumbers
+ {\iftwopassdatafound
+ \bgroup
+ \xdef \nofsubpages {\twopassdata}%
+ \xdef \firstsubpage {\realfolio}%
+ \advance\realpageno \nofsubpages
+ \advance\realpageno \minusone
+ \xdef \lastsubpage {\realfolio}%
+ \egroup
+ \else
+ \xdef \nofsubpages{0}%
+ \fi}
+
+\def\gotonextsubpage % overlapt behoorlijk met realpage macro
+ {\global\let\checksubpages\relax
+ \ifresettingsubpagenumber
+ \resetnumber[\s!subpage]%
+ \global\resettingsubpagenumberfalse
+ \fi
+ \ifsubpaging
+ \edef\oldsubpage{\the\subpageno}%
+ \incrementnumber[\s!subpage]%
+ \global\subpageno\rawnumber[\s!subpage]\relax
+ \ifnum\subpageno=\plusone
+ \gettwopassdata\s!subpage
+ \setsubpagenumbers
+ \ifnum\oldsubpage>\zerocount
+ \showmessage\m!layouts6{\newnofsubpages,\oldsubpage}%
+ \edef\next % \expanded
+ {\writeutilitycommand%
+ {\twopassentry%
+ {\s!subpage}%
+ {\newnofsubpages}%
+ {\oldsubpage}}}%
+ \next
+ \fi
+ \doglobal\increment\newnofsubpages\relax
+ \fi
+ \setglobalsystemreference\rt!page\v!firstsubpage\firstsubpage
+ \setglobalsystemreference\rt!page\v!lastsubpage\lastsubpage
+ \bgroup
+ \ifnum\realpageno=\firstsubpage\relax
+ \global\let\prevsubpage\firstsubpage
+ \setglobalsystemreference\rt!page\v!subbackward\lastsubpage
+ \else
+ \xdef\prevsubpage{\realfolio}%
+ \doglobal\decrement\prevsubpage
+ \setglobalsystemreference\rt!page\v!subbackward\prevsubpage
+ \fi
+ \setglobalsystemreference\rt!page\v!previoussubpage\prevsubpage
+ \ifnum\realpageno=\lastsubpage\relax
+ \global\let\nextsubpage\lastsubpage
+ \setglobalsystemreference\rt!page\v!subforward\firstsubpage
+ \else
+ \xdef\nextsubpage{\realfolio}%
+ \doglobal\increment\nextsubpage
+ \setglobalsystemreference\rt!page\v!subforward\nextsubpage
+ \fi
+ \setglobalsystemreference\rt!page\v!nextsubpage\nextsubpage
+ \egroup
+ \fi}
+
+\def\checksubpages
+ {\getfromtwopassdata\s!subpage1%
+ \setsubpagenumbers
+ \global\let\checksubpages\relax}
+
+% Omdat \gotonextrealpage gebruik maakt van de hulpfile,
+% moet het initialiseren van \realpageno plaatsvinden in
+% een later stadium, namelijk zodra referenties worden
+% gebruikt (anders gaat het mis op nog niet gedefinieerde
+% lijstcommando's e.d.). De eerst aanroep vindt dan ook
+% plaats vlak nadat de hulpfile voor de eerste maal is
+% ingelezen.
+
+\countdef\realpageno = 0 \realpageno = 1
+\countdef\userpageno = 1 \userpageno = 1
+\countdef\subpageno = 2 \subpageno = 0 % !!
+\countdef\arrangeno = 3 \arrangeno = 0 % !!
+
+% we don't want conflicts when \pageno is used by other
+% packages, like CWEB, so we redefine \pageno
+
+\newcount\pageno \pageno = 1
+
+\def\setuserpageno#1%
+ {\global\userpageno#1\relax
+ \global\pageno\userpageno}
+
+\def\realfolio {\the\realpageno}
+\def\folio {\the\userpageno}
+\def\firstpage {1}
+\def\lastpage {1}
+\def\currentpage {\the\realpageno}
+\def\lastpagenumber{1}
+
+\def\gotonextrealpage
+ {\global\advance\realpageno \plusone\relax
+ \ifnum\realpageno>\lastpage
+ \xdef\lastpage{\realfolio}%
+ \fi
+ \setglobalsystemreference\rt!page\v!firstpage \firstpage
+ \setglobalsystemreference\rt!page\v!lastpage\lastpage
+ \bgroup
+ \ifnum\realpageno>\plusone
+ \advance\realpageno \minusone
+ \xdef\prevpage{\realfolio}%
+ \setglobalsystemreference\rt!page\v!backward\prevpage
+ \else
+ \global\let\prevpage\firstpage
+ \setglobalsystemreference\rt!page\v!backward\lastpage
+ \fi
+ \setglobalsystemreference\rt!page\v!previouspage\prevpage
+ \egroup
+ \bgroup
+ \ifnum\realpageno<\lastpage\relax
+ \advance\realpageno \plusone
+ \xdef\nextpage{\realfolio}%
+ \setglobalsystemreference\rt!page\v!page\nextpage
+ \setglobalsystemreference\rt!page\v!forward\nextpage
+ \bgroup
+ \xdef\nextnextpage{\realfolio}%
+ \ifodd\realpageno
+ \setglobalsystemreference\rt!page\v!nextoddpage\nextnextpage
+ \else
+ \setglobalsystemreference\rt!page\v!nextevenpage\nextnextpage
+ \fi
+ \advance\realpageno \plusone
+ \xdef\nextnextpage{\realfolio}%
+ \ifnum\realpageno>\lastpage\relax
+ %\ifodd\realpageno
+ % \setglobalsystemreference\rt!page\v!nextoddpage\lastpage
+ %\else
+ % \setglobalsystemreference\rt!page\v!nextevenpage\lastpage
+ %\fi
+ \else
+ \ifodd\realpageno
+ \setglobalsystemreference\rt!page\v!nextoddpage\nextnextpage
+ \else
+ \setglobalsystemreference\rt!page\v!nextevenpage\nextnextpage
+ \fi
+ \fi
+ \egroup
+ \else
+ \global\let\nextpage\lastpage
+ \setglobalsystemreference\rt!page\v!page\firstpage
+ \setglobalsystemreference\rt!page\v!forward\firstpage
+ \setglobalsystemreference\rt!page\v!nextoddpage\lastpage
+ \setglobalsystemreference\rt!page\v!nextevenpage\lastpage
+ \fi
+ \setglobalsystemreference\rt!page\v!nextpage\realfolio
+ \egroup}
+
+\def\checkrealpage
+ {\global\realpageno\zerocount
+ \gotonextrealpage
+ \global\let\checkrealpage\relax}
+
+\def\savenofpages
+ {\bgroup
+ \advance\realpageno \minusone
+ \savecurrentvalue\lastpage\realfolio
+ \advance\userpageno \minusone
+ \savecurrentvalue\lastpagenumber\folio
+ \egroup}
+
+\def\totalnumberofpages
+ {\lastpage}
+
+\def\setpagecounters
+ {\setuserpageno{\rawnumber[\s!page]}%
+ \doifelse\@@snstate\v!stop
+ {\global\subpageno\zerocount}
+ {\global\subpageno\rawnumber[\s!subpage]}\relax}
+
+% Standaard is \count0 in Plain TeX de paginateller. Omwille
+% van de afhandeling van lokaal nummeren, definieren we
+% echter een eigen nummer.
+
+\definenumber
+ [\s!page]
+ [\c!conversion=\@@nmconversion,
+ \c!way=\@@nmway,
+ \c!state=\@@nmstate,
+ \c!start=1]
+
+% \@@pnstatus global, but \@@nmstatus local and only start/stop
+
+\global\let\@@pnstate\@@pnstate
+
+\def\dosetuppagenumber[#1]%
+ {\getparameters[\??pn][\c!number=,#1]%
+ \global\let\@@pnstate\@@pnstate
+ \doifsomething\@@pnnumber
+ {\setnumber[\s!page]{\@@pnnumber}%
+ \setuserpageno{\rawnumber[\s!page]}}%
+ % this makes starting at an even page possible
+ \ifnum\realpageno=1 \ifodd\pageno \else
+ \global\shiftedrealpagenotrue
+ \fi \fi}
+
+\def\setuppagenumber
+ {\dosingleargument\dosetuppagenumber}
+
+% long time used alternative
+%
+% \def\verlaagpaginanummer
+% {\doifinset{\@@pnstatus}{\v!start,\v!leeg,\v!geen}
+% {\decrementnumber[\s!page]%
+% \setuserpageno{\rawnumber[\s!page]}}}
+%
+% \def\verhoogpaginanummer
+% {\doifinset{\@@pnstatus}{\v!start,\v!leeg,\v!geen}
+% {\incrementnumber[\s!page]%
+% \setuserpageno{\rawnumber[\s!page]}}%
+% \doifinset{\@@pnstatus}{\v!handhaaf,\v!leeg}
+% {\global\let\@@pnstatus\v!start}}
+%
+% alternative, saves some 3 sec on 10K pages on a 1G machine
+% (needed during a test / prelude to installable methods)
+
+\def\dodecrementpagenumber
+ {\decrementnumber[\s!page]\setuserpageno{\rawnumber[\s!page]}}
+
+\def\doincrementpagenumber
+ {\incrementnumber[\s!page]\setuserpageno{\rawnumber[\s!page]}}
+
+\def\dosynchronizepagenumber
+ {\global\let\@@pnstate\v!start}
+
+\def\verlaagpaginanummer{\getvalue{\??pn-\@@pnstate}}
+\def\verhoogpaginanummer{\getvalue{\??pn+\@@pnstate}}
+
+\letvalue{\??pn-\v!start }\dodecrementpagenumber
+\letvalue{\??pn-\v!none }\dodecrementpagenumber
+\letvalue{\??pn-\v!empty }\dodecrementpagenumber
+
+\letvalue{\??pn+\v!start }\doincrementpagenumber
+\letvalue{\??pn+\v!none }\doincrementpagenumber
+\setvalue{\??pn+\v!empty }{\doincrementpagenumber
+ \dosynchronizepagenumber}
+\letvalue{\??pn+\v!keep}\dosynchronizepagenumber
+
+% so far
+
+\def\checkpagecounter
+ {\checknummer{\s!page}}
+
+% \getpagestatus
+% \ifrightpage als odd/enkelzijdig
+
+\newif\ifrightpage \rightpagetrue
+
+\newcounter \nofpagesets
+
+\definetwopasslist\s!page
+
+\def\dopagesetreference
+ {\doglobal\increment\nofpagesets\relax
+ \edef\writepagref
+ {\writeutilitycommand
+ {\twopassentry
+ {\s!page}%
+ {\nofpagesets}%
+ {\noexpand\realfolio}}}%
+ \writepagref}
+
+\def\getpagestatus % hierboven gebruiken
+ {\ifdubbelzijdig
+ \gettwopassdata\s!page
+ \iftwopassdatafound \else
+ \let\twopassdata\realpageno
+ \fi
+ \ifodd\twopassdata
+ \global\rightpagetrue
+ \else
+ \global\rightpagefalse
+ \fi
+ \dopagesetreference
+ \else
+ \global\rightpagetrue
+ \fi}
+
+\def\@@nmin {} % kan vervallen (upward compatibility)
+\def\@@nmlocation {} % mag {plaats, in} zijn
+
+\newcounter\@@pagenumberlocation
+
+\def\do@@plaatspaginanummer#1%
+ {\ifnum#1=\@@pagenumberlocation\@@plaatspaginanummer\fi}
+
+\def\dodosetpagenumberlocation#1% tricky because of ...texts
+ {\increment\@@pagenumberlocation
+ \ifx\@@nmlocation\empty\else
+ \def\dododosetpagenumberlocation##1%
+ {\donetrue
+ \setevalue{\??tk#1##1}{\noexpand\do@@plaatspaginanummer{\@@pagenumberlocation}}}%
+ \donefalse
+ \ExpandFirstAfter\processallactionsinset
+ [\@@nmlocation]
+ [ \v!middle=>\dododosetpagenumberlocation{\v!text\c!middletext},
+ \v!left=>\dododosetpagenumberlocation{\v!text\c!lefttext},
+ \v!right=>\dododosetpagenumberlocation{\v!text\c!righttext},
+ \v!inleft=>\dododosetpagenumberlocation{\v!margin\c!lefttext},
+ \v!inright=>\dododosetpagenumberlocation{\v!margin\c!righttext},
+ \v!inmargin=>\dododosetpagenumberlocation{\v!margin\ifdubbelzijdig\c!margintext\else\c!righttext\fi},
+ \v!margin=>\dododosetpagenumberlocation{\v!margin\ifdubbelzijdig\c!margintext\else\c!righttext\fi},
+ \v!atmargin=>\dododosetpagenumberlocation{\v!text\c!marginedgetext},
+ \v!marginedge=>\dododosetpagenumberlocation{\v!text\c!marginedgetext}]%
+ \ifdone \else
+ \dododosetpagenumberlocation{\v!text\c!middletext}% default
+ \fi
+ \fi}
+
+\def\dosetpagenumberlocation
+ {\ExpandBothAfter\doifinsetelse\v!header{\@@nmlocation,\@@nmin}
+ {\dodosetpagenumberlocation\v!header}
+ {\dodosetpagenumberlocation\v!footer }}
+
+\def\dosetuppagenumbering[#1]%
+ {\getparameters[\??nm][#1]%
+ \preparepageprefix\??nm
+ \enkelzijdigfalse
+ \dubbelzijdigfalse
+ \ExpandFirstAfter\processallactionsinset
+ [\@@nmalternative]
+ [ \v!singlesided=>\enkelzijdigtrue,
+ \v!doublesided=>\dubbelzijdigtrue]%
+ \ifx\trackingmarginnotestrue\undefined\else
+ \ifdubbelzijdig
+ \trackingmarginnotestrue
+ \else
+ \trackingmarginnotesfalse
+ \fi
+ \fi
+ \dosetpagenumberlocation
+ \recalculatebackgrounds
+ \recalculatelogos}
+
+\def\setuppagenumbering
+ {\dosingleempty\dosetuppagenumbering}
+
+\let\stelnummeringin\setuppagenumbering
+
+% listig: hangt af van \@@kolijst
+
+% erg fout
+%
+% \def\preparepageprefix#1%
+% {\def\dopreparepageprefix##1%
+% {\doifvalue{#1##1\c!nummer}{\v!ja}
+% {\setvalue{#1\getvalue{\??by##1}\c!nummer}{\v!ja}}}%
+% \processcommacommand[\@@kolijst]\dopreparepageprefix}
+%
+% nog fouter
+%
+% \def\preparepageprefix#1%
+% {\def\dopreparepageprefix##1%
+% {\doifelsevalue{#1##1\v!nummer}{\v!ja} % v
+% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!ja}} % v
+% {\setvalue{#1\getvalue{\??by##1}\v!nummer}{\v!nee}}}% % v
+% \processcommacommand[\@@kolijst]\dopreparepageprefix}
+%
+% best, beware, chapter (yes) can be followed by title (no)
+
+\def\preparepageprefix#1%
+ {\def\dopreparepageprefix##1%
+ {\letvalue{#1\getvalue{\??by##1}\v!number}\v!no}% %v
+ \rawprocesscommalist[\@@kolist]\dopreparepageprefix
+ \def\dopreparepageprefix##1%
+ {\doifvalue{#1##1\v!number}\v!yes %v
+ {\letvalue{#1\getvalue{\??by##1}\v!number}\v!yes}}%
+ \rawprocesscommalist[\@@kolist]\dopreparepageprefix}
+
+\def\dodopageprefix#1% uti seperator --
+ {\let\normaluchar\uchar \let\uchar\relax % ugly but needed
+ \doifelsevalue{\pageprefixtype#1\v!number}\v!yes % \v! and no \c!
+ {\edef\preprefix {\@@filterheadpart[\postprefix]}%
+ \edef\postprefix{\@@filtertailpart[\postprefix]}%
+ \let\uchar\normaluchar % ugly but needed
+ \ifx\preprefix\empty \else
+ \ifx\preprefix\zerocountervalue\else
+ \preprefix\@@nmnumberseparator
+ \fi
+ \fi}
+ {\edef\postprefix{\@@filtertailpart[\postprefix]}%
+ \let\uchar\normaluchar}} % ugly but needed
+
+\def\dopageprefix#1%
+ {\dodopageprefix{#1}%
+ \donexttracklevel{#1}}
+
+\def\pageprefix#1[#2]%
+ {\bgroup
+ \edef\pageprefixtype{#1}%
+ \edef\postprefix{\@@filternumberpart[#2]}%
+ \let\donexttrackcommando\dopageprefix
+ \donexttrackcommando\firstsection
+ \egroup}
+
+%D It was Marco Kuhlmann who uncovered the missing strut. This
+%D was a pretty old bug kind of covered up by the fact that non
+%D oldstyle numbers are about as high as strutheight. Rather
+%D interesting that it went unnoticed for so long.
+
+\unexpanded\def\@@plaatspaginanummer % called in empty tests
+ {\doif{\@@nmstate\@@pnstate}{\v!start\v!start}
+ {{\doif\@@nmstrut\v!yes\strut
+ \@@nmcommand{\doattributes\??nm\c!style\c!color{\completepagenumber}}}}}
+
+\def\@@plaatspaginascheider% still used ?
+ {\doif{\@@nmstate\@@pnstate}{\v!start\v!start}\@@nmtextseparator}
+
+\def\userfolio {\convertednumber[\s!page]} % naast realfolio
+\def\pagenumber{\userfolio}
+
+\def\pageprefixes
+ {\let\donexttrackcommando\dopageprefixes
+ \donexttrackcommando\firstsection}
+
+\def\dopageprefixes#1%
+ {\doifvalue{\??nm#1\v!number}\v!yes % v
+ {\ifnum\countervalue{\??se#1}>\zerocount
+ \getvalue{#1\c!number}\@@nmnumberseparator
+ \fi}%
+ \doifsomething\@@nmtext{\@@nmtext\@@nmnumberseparator}% strange option, what was the purpose of text?
+ \donexttracklevel{#1}}
+
+\unexpanded\def\completepagenumber
+ {\doif{\@@nmstate\@@pnstate}{\v!start\v!start}
+ {\@@nmleft\labeltexts\v!pagenumber{\pageprefixes\pagenumber}\@@nmright}}
+
+\unexpanded\def\placepagenumber
+ {\doif{\@@nmstate\@@pnstate}{\v!start\v!start}
+ {\labeltexts\v!pagenumber{\pagenumber}}}
+
+% Nog een variant; wat is een goeie naam?
+
+% \unexpanded\def\placexxpagenumber
+% {\@@plaatspaginanummer}
+
+% \def\translatednumber[#1::#2::#3]{#3}
+
+\def\translatednumber{\@@filterpagepart}
+
+\unexpanded\def\referencepagenumber[#1]%
+ {\doifelsenothing{#1}{?}%
+ {\preparepageprefix\??rf
+ \pageprefix\??rf[#1]\translatednumber[#1]}}
+
+\setuppagenumber
+ [\c!state=\v!start,
+ \c!number=1]
+
+\setupsubpagenumber
+ [\c!way=\v!by\v!part,
+ \c!state=\v!stop]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-one.tex b/Master/texmf-dist/tex/context/base/page-one.tex
new file mode 100644
index 00000000000..124232868cd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-one.tex
@@ -0,0 +1,639 @@
+%D \module
+%D [ file=page-one,
+%D version=2000.10.20,
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Default Routine,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context OTR Macros / Default Routine}
+
+%D This is just the good old \CONTEXT\ output routine, which
+%D has been there right from the start.
+
+\unprotect
+
+% OTRONE: basic single column
+
+\activateotr{ONE}{} % the default one
+
+\newtoks\OTRONEoutput
+
+\def\OTRONEgotonextpage
+ {\ejectpage}
+
+\def\OTRONEgotonextpageX % will become obsolete
+ {\superejectpage}
+
+\def\OTRONEsethsize
+ {\global\hsize\textwidth}
+
+% keep (original one)
+%
+% \def\OTRONEsetvsize
+% {\ifdim\vsize=\teksthoogte \else
+% \bgroup
+% \scratchdimen-\vsize
+% \advance\scratchdimen \teksthoogte
+% \global\advance\vsize \scratchdimen
+% \relax \ifdim\pagegoal<\maxdimen
+% \advance\scratchdimen \pagegoal
+% \global\pagegoal\scratchdimen
+% \fi
+% \egroup
+% \fi}
+%
+% no (keep)
+%
+% \def\OTRONEsetvsize
+% {\ifdim\vsize=\teksthoogte \else
+% \bgroup
+% \scratchdimen-\vsize
+% \advance\scratchdimen \teksthoogte
+% \ifgridsnapping
+% \getrawnoflines\scratchdimen
+% \scratchdimen\noflines\openlineheight
+% \ifdim\scratchdimen>\noflinesheight % available afterwards
+% \advance\scratchdimen-\openlineheight
+% \fi
+% \ifdim\scratchdimen<\zeropoint
+% \scratchdimen\zeropoint
+% \fi
+% \fi
+% \global\advance\vsize \scratchdimen
+% \relax \ifdim\pagegoal<\maxdimen
+% \advance\scratchdimen \pagegoal
+% \global\pagegoal\scratchdimen
+% \fi
+% \egroup
+% \fi}
+
+% \def\OTRONEsetvsize
+% {\ifgridsnapping
+% \ifcase\layoutlines
+% \getrawnoflines\teksthoogte
+% \else
+% \noflines\layoutlines
+% \fi
+% \global\vsize\noflines\openlineheight
+% \else
+% \global\vsize\teksthoogte
+% \fi
+% \ifdim\pagegoal<\maxdimen
+% \global\pagegoal\vsize
+% \fi}
+
+\newdimen\oldvsize
+
+\def\OTRONEsetvsize
+ {\ifgridsnapping
+ \ifcase\layoutlines
+ \getrawnoflines\textheight
+ \else
+ \noflines\layoutlines
+ \fi
+ \global\vsize\noflines\openlineheight
+ \else
+ \global\vsize\textheight
+ \fi
+ \ifdim\pagegoal<\maxdimen
+ \ifdim\oldvsize=\vsize
+ % let's assume that the layout didn't change
+ \else
+ \bgroup
+ \global\oldvsize\vsize
+ \advance\vsize-\topinserted
+ \advance\vsize-\botinserted
+ \global\pagegoal\vsize
+ \egroup
+ \fi
+ \fi}
+
+\chardef\kindofpagetextareas=2 % whole page (public variable! never change)
+
+\def\OTRONEregisteredtextarea#1%
+ {\ifregistertextareas
+ \setbox0\vbox{#1}%
+ \wd0\makeupwidth % somehow a space creeps in
+ \vbox{\registeredtextarea000}%
+ \else
+ #1%
+ \fi}
+
+\let\OTRONEregisteredtextareaA\firstofoneargument
+\let\OTRONEregisteredtextareaB\firstofoneargument
+
+\def\OTRONEdopagecontents#1#2% \box<n> \unvbox<n>
+ {\bgroup % niet breedte zetten, kan fractie zijn!
+ \ifcase\kindofpagetextareas
+ \or % partial page
+ \let\OTRONEregisteredtextareaA\OTRONEregisteredtextarea
+ \or % whole page
+ \let\OTRONEregisteredtextareaB\OTRONEregisteredtextarea
+ \fi
+ \setbox0\vbox \ifbottomnotes to \textheight \fi
+ {\edef\currentpagedepth{\the\dp#2}% still to be derived from #1
+ \dotopinsertions
+ \ifgridsnapping
+ \OTRONEregisteredtextareaA{#1#2}%
+ \vskip-\currentpagedepth\vskip\openstrutdepth
+ \pushproperties % moved from just after #1#2
+ \prevdepth\openstrutdepth
+ \dobotinsertions
+ \vfil
+ \else\ifr@ggedbottom
+ \OTRONEregisteredtextareaA{#1#2}%
+ \vskip-\currentpagedepth\vskip\openstrutdepth
+ \pushproperties % moved from just after #1#2
+ \prevdepth\openstrutdepth
+ \dobotinsertions
+ \vfil
+ \else\ifb@selinebottom
+ \OTRONEregisteredtextareaA{#1#2}%
+ \kern-\currentpagedepth\kern\maxdepth
+ \pushproperties % moved from just after #1#2
+ \dobotinsertions
+ \else
+ \OTRONEregisteredtextareaA{#1#2}%
+ \pushproperties % moved from just after #1#2
+ \dobotinsertions % added
+ \fi\fi\fi
+ \fakepagenotes}% was \fakenotes, but wrong! (check with \setupalign[height])
+ \ifbottomnotes
+ \ifgridsnapping
+ \getnoflines\textheight
+ \advance\noflines \minusone
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen \topskip
+ \else
+ \scratchdimen\ht0
+ \fi
+ \else
+ \scratchdimen\zeropoint
+ \fi
+ \setbox2\hbox
+ {\checksinglecolumnfootnotes
+ \lower\scratchdimen\vbox{\placebottomnotes}}%
+ \smashbox2% % needed here
+ \ifbottomnotes
+ \ht0\zeropoint
+ \fi
+ \OTRONEregisteredtextareaB
+ {\vbox to \textheight
+ {\box0\box2\ifbottomnotes\else\vfill\fi}}%
+ \egroup}
+
+\def\OTRONEfinalsidefloatoutput
+ {\finaloutput\unvbox\normalpagebox}
+
+\OTRONEoutput
+ {\sidefloatoutput}
+
+%D Insertions
+
+\newif\iftopofinsert
+
+\def\OTRONEdosettopinserts
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts\zerocount
+ \let\totaltopinserted\!!zeropoint
+ \OTRONEdodosettopinserts
+ \ifnum\@@bknbottom=\zerocount
+ \ifnum\@@bknlines>\zerocount
+ \ifdim\totaltopinserted>\zeropoint\relax
+ \dimen0=\lineheight
+ \dimen0=\@@bknlines\dimen0
+ \advance\dimen0 \totaltopinserted\relax
+ \ifdim\dimen0>\textheight
+ \showmessage\m!floatblocks8\@@bknlines
+ \vfilll\eject
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \egroup}
+
+\def\OTRONEdodosettopinserts
+ {\ifnum\noffloatinserts<\noftopfloats
+ \dogetfloat
+ \ifdim\topinserted=\zeropoint
+ \topofinserttrue
+ \else
+ \topofinsertfalse
+ \fi
+ \global\advance\topinserted \ht\floatbox
+ \global\advance\topinserted \dp\floatbox
+ \global\advance\topinserted \floatbottomskip\relax
+ \ifdim\topinserted<\textheight\relax
+ \xdef\totaltopinserted{\the\topinserted}%
+ \insert\topins
+ {\forgetall
+ \iftopofinsert
+ \topskipcorrection % [xx] new: see icare topbleed
+ \kern-\lineskip\par
+ \prevdepth\maxdimen
+ \else
+ %\blank[-\@@bkspaceafter,\@@bkspacebefore]% inserts can't look back
+ \betweenfloatblanko
+ \fi
+ \flushfloatbox
+ \blank[\@@bkspaceafter]}%
+ \ifsomefloatwaiting
+ \advance\noffloatinserts \plusone
+ \else
+ \noffloatinserts\noftopfloats\relax
+ \fi
+ \dofloatflushedinfo
+ \else
+ \doresavefloat
+ \noffloatinserts\noftopfloats\relax
+ \fi
+ \else
+ \ifsomefloatwaiting
+ \showmessage\m!floatblocks6{\the\noftopfloats}%
+ \fi
+ \let\OTRONEdodosettopinserts\relax
+ \fi
+ \OTRONEdodosettopinserts}
+
+\def\OTRONEdosetbotinserts
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts\zerocount
+ \OTRONEdodosetbotinserts
+ \fi
+ \egroup}
+
+\def\OTRONEdodosetbotinserts
+ {\ifnum\noffloatinserts<\nofbotfloats\relax
+ \dogetfloat
+ \global\advance\botinserted \ht\floatbox\relax
+ \global\advance\botinserted \dp\floatbox\relax
+ \global\advance\botinserted \floattopskip\relax
+ \ifdim\botinserted<\pagegoal\relax
+ \insert\botins
+ {\forgetall
+ \blank[\@@bkspacebefore]%
+ \flushfloatbox}%
+ \ifsomefloatwaiting
+ \advance\noffloatinserts \plusone
+ \else
+ \noffloatinserts\nofbotfloats
+ \fi
+ \dofloatflushedinfo
+ \else
+ \doresavefloat
+ \noffloatinserts\nofbotfloats\relax
+ \fi
+ \global\nofloatpermittedtrue % vgl topfloats s!
+ \else
+ \ifsomefloatwaiting
+ \showmessage\m!floatblocks7{\the\nofbotfloats}%
+ \fi
+ \let\OTRONEdodosetbotinserts\relax
+ \fi
+ \OTRONEdodosetbotinserts}
+
+\def\OTRONEdosetbothinserts
+ {\global\topinserted\zeropoint
+ \global\botinserted\zeropoint
+ \ifflushingfloats \else
+ \OTRONEdosettopinserts
+ \OTRONEdosetbotinserts
+ \fi}
+
+% \def\OTRONEdotopinsertions
+% {\ifvoid\topins\else
+% \ifgridsnapping
+% \box\topins % not \topsnaptogrid{\box\topins}%
+% \else
+% \unvbox\topins
+% \fi
+% \fi
+% \global\topinserted\zeropoint}
+
+\def\OTRONEdotopinsertions
+ {\ifvoid\topins\else
+ \ifgridsnapping
+ \box\topins
+ \vskip-\topskip \vskip\strutheight % [xx] new: see icare topbleed
+ \else
+ \unvbox\topins
+ \fi
+ \fi
+ \global\topinserted\zeropoint}
+
+\def\OTRONEdobotinsertions
+ {\ifvoid\botins\else
+ \ifgridsnapping
+ \snaptogrid\hbox{\box\botins}%
+ \else
+ \unvbox\botins
+ \fi
+ \fi
+ \global\botinserted\zeropoint
+ \global\nofloatpermittedfalse}
+
+\def\OTRONEdoflushfloats
+ {\global\flushingfloatstrue
+ \ifsomefloatwaiting
+ \par
+ % if kept, then option and definitely off in gridmode ! ! ! !
+ % \ifvmode \prevdepth\maxdimen \fi % prevents whitespace; problematic in icare tests
+ \OTRONEdodoflushfloats
+ \fi
+ \global\savednoffloats\zerocount
+ \global\somefloatwaitingfalse
+ \global\flushingfloatsfalse}
+
+\def\OTRONEflushfloatbox % nog verder doorvoeren en meer info in marge
+ {\ifcenterfloatbox \ifdim\wd\floatbox<\hsize
+ \setbox\floatbox\hbox to \hsize{\hss\box\floatbox\hss}%
+ \fi \fi
+ \snaptogrid\hbox{\iftestfloatbox\ruledhbox\fi{\copy\floatbox}}}
+
+% \def\OTRONEdodoflushfloats % moet nog beter: als precies passend, niet onder baseline
+% {\ifsomefloatwaiting
+% \bgroup % \box\floatbox can be in use!
+% \dogetfloat
+% \doplacefloatbox
+% \egroup
+% \dofloatflushedinfo
+% \expandafter\OTRONEdodoflushfloats
+% \fi}
+
+\def\OTRONEdodoflushfloats % much in common with OTRSET
+ {\ifsomefloatwaiting
+ \ifpackflushedfloats
+ \centerfloatboxfalse
+ \dogetfloat
+ \ifdim\wd\floatbox>\makeupwidth
+ \global\setbox\floatbox\hbox to \makeupwidth{\hss\box\floatbox\hss}%
+ \fi
+ \OTRONEsetvsize
+ \!!widtha\wd\floatbox
+ \dofloatflushedinfo
+ \doloop
+ {\ifsomefloatwaiting
+ \dosavefloatstatus
+ \dogetfloat
+ \advance\!!widtha 1em % variable
+ \advance\!!widtha \wd\floatbox\relax
+ \ifdim\!!widtha>\hsize
+ \dorestorefloatstatus
+ \global\somefloatwaitingtrue
+ \exitloop
+ \else
+ \global\setbox\floatbox\hbox
+ {\ifcase\columndirection % nog document wide
+ \ifvoid\savedfloatbox\else
+ \ifhbox\savedfloatbox\unhbox\else\box\fi\savedfloatbox\hfil
+ \fi
+ \ifhbox\floatbox\unhbox\else\box\fi\floatbox
+ \else
+ \ifhbox\floatbox\unhbox\else\box\fi\floatbox
+ \ifvoid\savedfloatbox\else
+ \hfil\ifhbox\savedfloatbox\unhbox\else\box\fi\savedfloatbox
+ \fi
+ \fi}%
+ \dofloatflushedinfo
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \global\setbox\floatbox\hbox to \hsize
+ {\hfil\ifhbox\floatbox\unhbox\else\box\fi\floatbox\hfil}%
+ \else
+ %\bgroup % \box\floatbox can be in use!? messy
+ \dogetfloat
+ %\doplacefloatbox
+ %\egroup
+ \dofloatflushedinfo
+ \fi
+ % there is a chance that due to rounding errors, the float
+ % fits on a page where it was first rejected, in which case
+ % the prevdepth is -maxdimen and we cannot obey the grid
+ \doplacefloatbox
+ \expandafter\OTRONEdodoflushfloats
+ \fi}
+
+% \def\OTRONEdocheckiffloatfits % vervangen ivm downward comp
+% {\ifnofloatpermitted
+% \global\roomforfloatfalse
+% \else
+% \dimen0 \pagetotal
+% \advance\dimen0 \ht\floatbox
+% \advance\dimen0 \dp\floatbox
+% \advance\dimen0 \floattopskip
+% % \advance\dimen0 -\pageshrink % toegevoegd
+% %\message{c:\the\mofcolumns,t:\the\pagetotal,g:\the\pagegoal}%\wait
+% \ifdim\dimen0>\pagegoal
+% \global\roomforfloatfalse
+% \else
+% \global\roomforfloattrue
+% \fi
+% \fi}
+
+% \def\OTRONEdocheckiffloatfits % vervangen ivm downward comp
+% {\ifnofloatpermitted
+% \global\roomforfloatfalse
+% \else
+% \dimen0 \pagetotal
+% \advance\dimen0 \ht\floatbox
+% \advance\dimen0 \dp\floatbox
+% \advance\dimen0 \floattopskip
+% \advance\dimen0 -\pageshrink % toegevoegd
+% %\message{c:\the\mofcolumns,t:\the\pagetotal,g:\the\pagegoal}%\wait
+% \dimen2\pagegoal
+% \relax % needed
+% \ifcase\textfloatmethod
+% % method 0 : raw
+% \or
+% % method 1 : safe
+% \dimen2 .99\pagegoal
+% \or
+% % method 2 : tight
+% \advance\dimen0 -\onepoint
+% \fi
+% \relax % really needed ! ! ! !
+% \ifdim\dimen0>\dimen2
+% \global\roomforfloatfalse
+% \else
+% \global\roomforfloattrue
+% \fi
+% \fi}
+
+\def\OTRONEdocheckiffloatfits % vervangen ivm downward comp
+ {\ifnofloatpermitted
+ \global\roomforfloatfalse
+ \else
+ % new per 31/5/2004, should be an option, only one column mode
+ \begingroup
+ \scratchdimen\pagetotal
+ \advance\scratchdimen\lineheight % maybe strutheight
+ \ifdim\scratchdimen>\pagegoal
+ \goodbreak % hack ? needed in icare-az
+ \fi
+ % should be an option
+ \endgroup
+ \dimen0 \pagetotal
+ \advance\dimen0 \ht\floatbox
+ \advance\dimen0 \dp\floatbox
+ \advance\dimen0 \floattopskip
+ \advance\dimen0 -\pageshrink % toegevoegd
+ %\message{c:\the\mofcolumns,t:\the\pagetotal,g:\the\pagegoal}%\wait
+ \dimen2\pagegoal
+ \relax % needed
+ \ifcase\textfloatmethod
+ % method 0 : raw
+ \or
+ % method 1 : safe
+ \dimen2 .99\pagegoal
+ \or
+ % method 2 : tight
+ \advance\dimen0 -\onepoint
+ \fi
+ \relax % really needed ! ! ! !
+ \ifdim\dimen0>\dimen2
+ \global\roomforfloatfalse
+ \else
+ \global\roomforfloattrue
+ \fi
+ \fi}
+
+\def\OTRONEflushsavedfloats
+ {\dosetbothinserts}
+
+% TODO: TEST FIRST, NO CORRECTION NEEDED IN GRID MODE, EVT OPTION
+
+\def\OTRONEsomeherefloat[#1]% spacing between two successive must be better
+ {\baselinecorrection % not really needed in grid mode:
+ %\ifgridsnapping \else \baselinecorrection \fi % ! ! ! test test test ! ! ! !
+ \doplacefloatbox
+ \doinsertfloatinfo
+ \dochecknextindentation\??bk}
+
+% \def\OTRONEsomefixdfloat % [#1]
+% {\docheckiffloatfits
+% \ifroomforfloat\else
+% \goodbreak
+% \fi
+% \showmessage\m!floatblocks9\empty
+% \someherefloat} % [#1]
+%
+% better:
+%
+% \dorecurse{50}
+% {[before normal] \input thuan
+% \placefigure{normal}{\framed[height=1cm,width=8cm]{}}
+% \placefigure{normal}{\framed[height=2cm,width=8cm]{}}
+% [before force] \input thuan
+% \placefigure[force]{force}{\framed[height=8cm,width=8cm]{}}}
+
+\chardef\fixedfloatmethod=3
+
+\def\OTRONEsomefixdfloat % [#1]
+ {\docheckiffloatfits
+ \ifroomforfloat\else
+ \ifzeropt\pagetotal
+ % let's assume that there is room
+ \else
+ \ifcase\fixedfloatmethod
+ % disabled
+ \or % 1 (old method)
+ \goodbreak
+ \or % 2 (safe method)
+ \page
+ \or % 3 (keeps in stream)
+ \vskip-.5\floatheight % play safe
+ \vskip\textheight
+ \fi
+ \fi
+ \fi
+ \showmessage\m!floatblocks9\empty
+ \someherefloat} % [#1]
+
+\def\OTRONEsomesidefloat[#1]% links, rechts NOG TESTEN EN AANPASSEN
+ {\ifinsidecolumns
+ \someelsefloat[\v!here]%
+ \else
+ %\checkwaitingfloats{#1}%
+ \def\logsidefloat
+ {\doinsertfloatinfo}%
+ \setbox\floatbox\vbox{\box\floatbox}%
+ \wd\floatbox\floatwidth
+ \processfirstactioninset
+ [#1]
+ [ \v!left=>\leftfloat {\box\floatbox},
+ \v!right=>\rightfloat {\box\floatbox},
+ \v!inleft=>\leftmarginfloat {\box\floatbox},
+ \v!inright=>\rightmarginfloat{\box\floatbox},
+ \v!leftmargin=>\leftmarginfloat {\box\floatbox},
+ \v!rightmargin=>\rightmarginfloat{\box\floatbox},
+ \v!leftedge=>\leftedgefloat {\box\floatbox},
+ \v!rightedge=>\rightedgefloat {\box\floatbox},
+ \v!backspace=>\backspacefloat {\box\floatbox},
+ \v!cutspace=>\cutspacefloat {\box\floatbox},
+ \v!inmargin=>{\doinmargenormal\leftmarginfloat
+ \rightmarginfloat{\box\floatbox}}]%
+ \doifinset\v!tall{#1}\flushsidefloatsafterpar
+ \fi}
+
+\def\OTRONEsomepagefloat[#1]%
+ {%\checkwaitingfloats{#1}%
+ \global\setbox\collectedpagefloats\vbox
+ {\unvbox\collectedpagefloats
+ \vbox to \textheight
+ {\doifnotinset\v!high{#1}\vfill
+ \box\floatbox
+ \doifnotinset\v!low{#1}\vfill}%
+ \goodbreak}%
+ \doinsertfloatinfo}
+
+\def\OTRONEsometopsfloat[#1]%
+ {\ifdim\topinserted=\zeropoint
+ \topofinserttrue
+ \else
+ \topofinsertfalse
+ \fi
+ \global\advance\topinserted \ht\floatbox
+ \global\advance\topinserted \dp\floatbox
+ \global\advance\topinserted \floatbottomskip
+ \insert\topins
+ {\forgetall
+ \iftopofinsert
+ \topskipcorrection % [xx] new: see icare topbleed
+ \kern-\lineskip\par\prevdepth\maxdimen
+ \else
+ %\blank[-\@@bkspaceafter,\@@bkspacebefore]% inserts can't look back
+ \betweenfloatblanko
+ \fi
+ \flushfloatbox
+ \blank[\@@bkspaceafter]}%
+ \doinsertfloatinfo}
+
+\def\OTRONEsomebotsfloat[#1]%
+ {\global\advance\botinserted \ht\floatbox
+ \global\advance\botinserted \dp\floatbox
+ \global\advance\botinserted \floattopskip
+ \insert\botins
+ {\forgetall
+ \blank[\@@bkspacebefore]%
+ \flushfloatbox}%
+ %\global\nofloatpermittedtrue
+ \doinsertfloatinfo}
+
+\def\OTRONEsomefacefloat[#1]% untested
+ {\startopposite\flushfloatbox\stopopposite}
+
+\def\OTRONEnextcolumn[#1]%
+ {}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-run.tex b/Master/texmf-dist/tex/context/base/page-run.tex
new file mode 100644
index 00000000000..b44662d3c95
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-run.tex
@@ -0,0 +1,382 @@
+%D \module
+%D [ file=page-run,
+%D version=2000.10.20,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Runtime Macros}
+
+\unprotect
+
+\gdef\doshowprint[#1][#2][#3]%
+ {\framed
+ [\c!offset=\v!overlay,
+ \c!strut=\v!no]
+ {\forgetall
+ \dontcomplain
+ \globaldefs\minusone
+ \dimen0\pagegoal
+ \definepapersize[X][\c!width=4em, \c!height=6em]%
+ \definepapersize[Y][\c!width=12em,\c!height=14em]%
+ \setuppapersize[#1,X][#2,Y]%
+ \setuplayout[#3]%
+ \setbox0\vbox
+ {\framed
+ [\c!offset=\v!overlay,\c!strut=\v!no,
+ \c!width=\paperwidth,\c!height=\paperheight]
+ {\ss ABC\par DEF}}%
+ \dubbelzijdigfalse
+ \def\cutmarklength{.5em}%
+ \addpagecutmarks0%
+ \replicatepagebox0%
+ \scalepagebox0%
+ \mirrorpaperbox0%
+ \orientpaperbox0%
+ \centerpagebox0%
+ \mirrorprintbox0%
+ \orientprintbox0%
+ \offsetprintbox0%
+ \pagegoal\dimen0
+ \box0}}
+
+\gdef\showprint
+ {\dotripleempty\doshowprint}
+
+% \switchnaarkorps[8pt]
+%
+% \startcombinatie[4*4]
+% {\toonprint} {\strut}
+% {\toonprint[][][plaats=midden]} {\type{plaats=midden}}
+% {\toonprint[][][plaats=midden,markering=aan]} {\type{markering=aan}\break
+% \type{plaats=midden}}
+% {\toonprint[][][plaats=midden,markering=aan,nx=2]} {\type{markering=aan}\break
+% \type{plaats=midden}\break
+% \type{nx=2}}
+% {\toonprint[][][plaats=links]} {\type{plaats=links}}
+% {\toonprint[][][plaats=rechts]} {\type{plaats=rechts}}
+% {\toonprint[][][plaats={links,onder}]} {\type{plaats={links,onder}}}
+% {\toonprint[][][plaats={rechts,onder}]} {\type{plaats={rechts,onder}}}
+% {\toonprint[][][nx=2,ny=1]} {\type{nx=2,ny=1}}
+% {\toonprint[][][nx=1,ny=2]} {\type{nx=1,ny=2}}
+% {\toonprint[][][nx=2,ny=2]} {\type{nx=2,ny=2}}
+% {\toonprint[][][nx=2,ny=2,plaats=midden]} {\type{nx=2,ny=2}\break
+% \type{plaats=midden}}
+% {\toonprint[][][rugoffset=3pt]} {\type{rugoffset=.5cm}}
+% {\toonprint[][][kopoffset=3pt]} {\type{kopoffset=.5cm}}
+% {\toonprint[][][schaal=1.5]} {\type{schaal=1.5}}
+% {\toonprint[][][schaal=0.8]} {\type{schaal=0.8}}
+% \stopcombinatie
+%
+% \startcombinatie[3*4]
+% {\toonprint[liggend][][plaats=midden]} {\type{liggend}}
+% {\toonprint[][liggend][plaats=midden]} {\strut\break\type{liggend}}
+% {\toonprint[liggend][liggend][plaats=midden]} {\type{liggend}\break\type{liggend}}
+% {\toonprint[90][][plaats=midden]} {\type{90}}
+% {\toonprint[][90][plaats=midden]} {\strut\break\type{90}}
+% {\toonprint[90][90][plaats=midden]} {\type{90}\break\type{90}}
+% {\toonprint[180][][plaats=midden]} {\type{180}}
+% {\toonprint[][180][plaats=midden]} {\strut\break\type{180}}
+% {\toonprint[180][180][plaats=midden]} {\type{180}\break\type{180}}
+% {\toonprint[gespiegeld][][plaats=midden]} {\type{gespiegeld}}
+% {\toonprint[][gespiegeld][plaats=midden]} {\strut\break\type{gespiegeld}}
+% {\toonprint[gespiegeld][gespiegeld][plaats=midden]} {\type{gespiegeld}\break\type{gespiegeld}}
+% \stopcombinatie
+
+\gdef\doshowframe[#1][#2]%
+ {\ifsecondargument
+ \setupbackgrounds
+ [\v!page]
+ [\c!frame=\v!on,
+ \c!corner=\v!rectangular,
+ \c!frameoffset=\!!zeropoint,
+ \c!framedepth=\!!zeropoint,
+ \c!framecolor=layout:page]
+ \setupbackgrounds
+ [#1][#2]
+ [\c!background=,
+ \c!frame=\v!on,
+ \c!corner=\v!rectangular,
+ \c!frameoffset=\!!zeropoint,
+ \c!framedepth=\!!zeropoint,
+ \c!framecolor=]
+ \else\iffirstargument
+ \showframe
+ [\v!header,\v!text,\v!footer]
+ [#1]
+ \else
+ \showframe
+ [\v!header,\v!text,\v!footer]
+ [\v!leftedge,\v!leftmargin,
+ \v!text,
+ \v!rightmargin,\v!rightedge]
+ \fi\fi
+ \setupbackgrounds
+ [\c!state=\v!repeat]}
+
+\gdef\showframe{\dodoubleempty\doshowframe}
+
+\gdef\showsetupA#1#2%
+ {#1&\PtToCm{\the#2}&\the#2&\tttf\string#2\cr}
+
+\gdef\showsetupB#1#2#3%
+ {#1&&#2#3&\tttf\string#3\cr}
+
+% \startinterface english % english is fallback
+
+\gdef\showsetups
+ {\noindent
+ \vbox
+ {\forgetall
+ \dontcomplain
+ \switchtobodyfont[\v!small]
+ \tabskip\zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \showsetupA{paperheight} \paperheight
+ \showsetupA{paperwidth} \paperwidth
+ \showsetupA{printpaperheight} \printpaperheight
+ \showsetupA{printpaperwidth} \printpaperwidth
+ \showsetupA{topspace} \topspace
+ \showsetupA{backspace} \backspace
+ \showsetupA{height} \makeupheight
+ \showsetupA{width} \makeupwidth
+ \showsetupA{top} \topheight
+ \showsetupA{topdistance} \topdistance
+ \showsetupA{header} \headerheight
+ \showsetupA{headerdistance} \headerdistance
+ \showsetupA{textheight} \textheight
+ \showsetupA{footerdistance} \footerdistance
+ \showsetupA{footer} \footerheight
+ \showsetupA{bottomdistance} \bottomdistance
+ \showsetupA{bottom} \bottomheight
+ \showsetupA{leftedge} \leftedgewidth
+ \showsetupA{leftedgedistance} \leftedgedistance
+ \showsetupA{leftmargin} \leftmarginwidth
+ \showsetupA{leftmargindistance} \leftmargindistance
+ \showsetupA{textwidth} \textwidth
+ \showsetupA{rightmargindistance}\rightmargindistance
+ \showsetupA{rightmargin} \rightmarginwidth
+ \showsetupA{rightedgedistance} \rightedgedistance
+ \showsetupA{rightedge} \rightedgewidth
+ \showsetupB{bodyfontsize} \the \globalbodyfontsize
+ \showsetupB{line} \relax \normallineheight
+ \showsetupB{height} \relax \strutheightfactor
+ \showsetupB{depth} \relax \strutdepthfactor
+ \showsetupB{topskip} \relax \topskipfactor
+ \showsetupB{maxdepth} \relax \maxdepthfactor}}}
+
+% \stopinterface
+
+\startinterface dutch
+
+\gdef\showsetups
+ {\noindent
+ \vbox
+ {\forgetall
+ \dontcomplain
+ \switchtobodyfont[\v!small]
+ \tabskip\zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \showsetupA{papierhoogte} \papierhoogte
+ \showsetupA{papierbreedte} \papierbreedte
+ \showsetupA{printpapierhoogte} \printpapierhoogte
+ \showsetupA{printpapierbreedte} \printpapierbreedte
+ \showsetupA{kopwit} \kopwit
+ \showsetupA{rugwit} \rugwit
+ \showsetupA{snijwit} \snijwit
+ \showsetupA{hoogte} \zethoogte
+ \showsetupA{breedte} \zetbreedte
+ \showsetupA{boven} \bovenhoogte
+ \showsetupA{bovenafstand} \bovenafstand
+ \showsetupA{hoofd} \hoofdhoogte
+ \showsetupA{hoofdafstand} \hoofdafstand
+ \showsetupA{teksthoogte} \teksthoogte
+ \showsetupA{voetafstand} \voetafstand
+ \showsetupA{voet} \voethoogte
+ \showsetupA{onderafstand} \onderafstand
+ \showsetupA{onder} \onderhoogte
+ \showsetupA{linkerrand} \linkerrandbreedte
+ \showsetupA{linkerrandafstand} \linkerrandafstand
+ \showsetupA{linkermarge} \linkermargebreedte
+ \showsetupA{linkermargeafstand} \linkermargeafstand
+ \showsetupA{tekstbreedte} \tekstbreedte
+ \showsetupA{rechtermargeafstand}\rechtermargeafstand
+ \showsetupA{rechtermarge} \rechtermargebreedte
+ \showsetupA{rechterrandafstand} \rechterrandafstand
+ \showsetupA{rechterrand} \rechterrandbreedte
+ \showsetupB{korps} \the \globalbodyfontsize
+ \showsetupB{regel} \relax \normallineheight
+ \showsetupB{hoogte} \relax \strutheightfactor
+ \showsetupB{diepte} \relax \strutdepthfactor
+ \showsetupB{boven} \relax \topskipfactor
+ \showsetupB{onder} \relax \maxdepthfactor}}}
+
+\stopinterface
+
+% todo: \showsetupA{rugwit} \rugwit
+
+\startinterface german
+
+\gdef\showsetups%
+ {\noindent
+ \vbox
+ {\forgetall
+ \dontcomplain
+ \switchtobodyfont[\v!small]
+ \tabskip\zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \showsetupA{papierhoehe} \papierhoehe
+ \showsetupA{papierbreite} \papierbreite
+ \showsetupA{printpapierhoehe} \printpapierhoehe
+ \showsetupA{printpapierbreite} \printpapierbreite
+ \showsetupA{kopfweite} \kopfweite
+ \showsetupA{rumpfweite} \rumpfweite
+ \showsetupA{hoehe} \satzhoehe
+ \showsetupA{breite} \satzbreite
+ \showsetupA{oben} \hoeheoben
+ \showsetupA{abstandoben} \abstandoben
+ \showsetupA{kopfzeile} \kopfzeilenhoehe
+ \showsetupA{kopfzeilenabstand} \kopfzeilenabstand
+ \showsetupA{texthoehe} \texthoehe
+ \showsetupA{fusszeileabstand} \fusszeileabstand
+ \showsetupA{fusszeilen} \fusszeilenhoehe
+ \showsetupA{abstandunten} \abstandunten
+ \showsetupA{hoeheunten} \hoeheunten
+ \showsetupA{linkerrand} \breitelinkerrand
+ \showsetupA{abstandlinkerrand} \abstandlinkerrand
+ \showsetupA{linkemarginal} \linkemarginalbreite
+ \showsetupA{linkemarginalafstand} \linkemarginalafstand
+ \showsetupA{textbreite} \textbreite
+ \showsetupA{rechtemarginalafstand}\rechtemarginalafstand
+ \showsetupA{rechtemarginal} \rechtemarginalbreite
+ \showsetupA{abstandrechterrand} \abstandrechterrand
+ \showsetupA{rechterrand} \breiterechterrand
+ \showsetupB{fliesstext} \the \globalbodyfontsize
+ \showsetupB{linie} \relax \normallineheight
+ \showsetupB{hoehe} \relax \strutheightfactor
+ \showsetupB{tiefe} \relax \strutdepthfactor
+ \showsetupB{topskip} \relax \topskipfactor
+ \showsetupB{maxdepth} \relax \maxdepthfactor}}}
+
+\stopinterface
+
+\startinterface czech
+
+\gdef\showsetups%
+ {\noindent
+ \vbox
+ {\forgetall
+ \dontcomplain
+ \switchtobodyfont[\v!small]
+ \tabskip\zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \showsetupA{vyskapapiru} \vyskapapiru
+ \showsetupA{sirkapapiru} \sirkapapiru
+ \showsetupA{vyskatiskpapiru} \vyskatiskpapiru
+ \showsetupA{sirkatiskpapiru} \sirkatiskpapiru
+ \showsetupA{hornimezera} \hornimezera
+ \showsetupA{spodnimezera} \spodnimezera
+ \showsetupA{vyska} \vyskasazby
+ \showsetupA{breite} \sirkasazby
+ \showsetupA{vyskatextu} \vyskatextu
+ \showsetupA{sirkatextu} \sirkatextu
+ \showsetupA{horejsek} \vyskahorejsku
+ \showsetupA{vzdalenosthorejsku} \vzdalenosthorejsku
+ \showsetupA{zahlavi} \vyskazahlavi
+ \showsetupA{vzdalenostzahlavi} \vzdalenostzahlavi
+ \showsetupA{fusszeileabstand} \vzdalenostupati
+ \showsetupA{upati} \vyskaupati
+ \showsetupA{vzdalenostspodku} \vzdalenostspodku
+ \showsetupA{spodek} \vyakaspodku
+ \showsetupA{levyokraj} \sirkalevehookraje
+ \showsetupA{vzdalenostlevehookraje} \vzdalenostlevehookraje
+ \showsetupA{levamarginalie} \sirkalevemarginalie
+ \showsetupA{vzdalenostlevemarginalie} \vzdalenostlevemarginalie
+ \showsetupA{vzdalenostpravemarginalie}\vzdalenostpravemarginalie
+ \showsetupA{pravamarginalie} \sirkapravemarginalie
+ \showsetupA{vzdalenostpravehookraje} \vzdalenostpravehookraje
+ \showsetupA{pravyokraj} \sirkapravehookraje
+ \showsetupB{zakladnivelikost} \the \globalbodyfontsize
+ \showsetupB{linka} \relax \normallineheight
+ \showsetupB{vyska} \relax \strutheightfactor
+ \showsetupB{hloubka} \relax \strutdepthfactor
+ \showsetupB{topskip} \relax \topskipfactor
+ \showsetupB{maxdepth} \relax \maxdepthfactor}}}
+
+\stopinterface
+
+\startinterface romanian
+
+\gdef\showsetups%
+ {\noindent
+ \vbox
+ {\forgetall
+ \dontcomplain
+ \switchtobodyfont[\v!small]
+ \tabskip\zeropoint
+ \halign
+ {\strut##\quad\hss&##\quad\hss&##\quad\hss&##\hss\cr
+ \showsetupA{paperheight} \paperheight
+ \showsetupA{paperwidth} \paperwidth
+ \showsetupA{printpaperheight} \printpaperheight
+ \showsetupA{printpaperwidth} \printpaperwidth
+ \showsetupA{topspace} \topspace
+ \showsetupA{backspace} \backspace
+ \showsetupA{height} \makeupheight
+ \showsetupA{width} \makeupwidth
+ \showsetupA{top} \topheight
+ \showsetupA{topdistance} \topdistance
+ \showsetupA{header} \headerheight
+ \showsetupA{headerdistance} \headerdistance
+ \showsetupA{textheight} \textheight
+ \showsetupA{footerdistance} \footerdistance
+ \showsetupA{footer} \footerheight
+ \showsetupA{bottomdistance} \bottomdistance
+ \showsetupA{bottom} \bottomheight
+ \showsetupA{leftedge} \leftedgewidth
+ \showsetupA{leftedgedistance} \leftedgedistance
+ \showsetupA{leftmargin} \leftmarginwidth
+ \showsetupA{leftmargindistance} \leftmargindistance
+ \showsetupA{textwidth} \textwidth
+ \showsetupA{rightmargindistance}\rightmargindistance
+ \showsetupA{rightmargin} \rightmarginwidth
+ \showsetupA{rightedgedistance} \rightedgedistance
+ \showsetupA{rightedge} \rightedgewidth
+ \showsetupB{bodyfontsize} \the \globalbodyfontsize
+ \showsetupB{line} \relax \normallineheight
+ \showsetupB{height} \relax \strutheightfactor
+ \showsetupB{depth} \relax \strutdepthfactor
+ \showsetupB{topskip} \relax \topskipfactor
+ \showsetupB{maxdepth} \relax \maxdepthfactor}}}
+
+\stopinterface
+
+\gdef\showlayout % interfereert lelijk met een \typefile er na
+ {\bgroup
+ \page
+ \showframe
+ \setuplayout[\c!marking=\v!on]
+ \dorecurse{4}{\showsetups\page}
+ \egroup}
+
+\gdef\showmargins
+ {\starttabulate
+ \NC asynchrone \NC \doifoddpageelse {odd} {even} \NC \NR
+ \NC synchrone \NC \doifrightpageelse {right} {left} \NC \NR
+ \NC right margin \NC \the\rightmarginwidth \NC \NR
+ \NC left margin \NC \the\leftmarginwidth \NC \NR
+ \NC outer margin \NC \the\outermarginwidth \NC \NR
+ \NC inner margin \NC \the\innermarginwidth \NC \NR
+ \stoptabulate}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-set.tex b/Master/texmf-dist/tex/context/base/page-set.tex
new file mode 100644
index 00000000000..76866c563d5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-set.tex
@@ -0,0 +1,2782 @@
+%D \module
+%D [ file=page-set,
+%D version=2000.10.20,
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Column Sets,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% getnoflines vs getrawnoflines
+
+% some day: cleanup and go etex
+
+\writestatus{loading}{Context OTR Macros / Column Sets}
+
+% todo : last longer than previous
+% todo : block span over last column if footnotes
+% todo : diagnosis balancing run
+% todo : separate footnote placement
+% todo : go on on same page with colset
+% todo : test page areas per page
+% todo : leftmargin/rightmargin (better than afstand(1))
+
+% use the OTRSET layer for more purposes, like the footnotes !
+
+\unprotect
+
+\newcount\tofcolumns % total
+\newcount\lofcolumns % left
+\newcount\rofcolumns % right
+
+\newcount\columnfirstcell \columnfirstcell=1
+\newcount\columnlastcell
+\newcount\columnfreecells
+\newcount\currenthcell
+\newcount\currentvcell
+\newcount\columnhcells
+\newcount\columnvcells
+
+\newif\ifenoughcolumncells
+\newif\ifsomefreecolumncells
+\newif\ifcolumnspread
+\newif\iftracecolumnset % \tracecolumnsettrue
+
+\def\columnmaxcells {75} % runtime
+\def\columnmaxfreecells {0} % runtime
+\def\columngaplimit {0} % {5}
+
+\def\@otr@{otr}
+
+\def\OTRSETgridcell #1#2{\csname \@otr@:\number#1:\number#2\endcsname}
+\def\OTRSETgetgridcell#1#2{\box\csname \@otr@:\number#1:\number#2\endcsname}
+\def\OTRSETsetgridcell#1#2{\global\setbox\csname\@otr@:\number#1:\number#2\endcsname}
+
+\long\def\OTRSETdoifcellelse#1#2%
+ {\relax\ifvoid\csname\@otr@:\number#1:\number#2\endcsname
+ \@EA\secondoftwoarguments\else\@EA\firstoftwoarguments
+ \fi}
+
+% The following two macros are used to compensate for a switch in body fonts
+% as in:
+%
+% \definecolumnset [two] [n=2,balancing=yes]
+% \definecolumnset [three] [n=3,balancing=yes]
+%
+% \setupcolumnsetlines[two][1][1][7]
+% \setupcolumnsetlines[two][1][2][10]
+%
+% \setupcolumnsetlines[three][1][1][40]
+% \setupcolumnsetlines[three][1][2][40]
+% \setupcolumnsetlines[three][1][3][40]
+%
+% \setupcolumnsetstart[three][1][1][15]
+% \setupcolumnsetstart[three][1][2][20]
+% \setupcolumnsetstart[three][1][3][20]
+%
+% \starttext
+% \startcolumnset [two] \dorecurse {1}{\input tufte \par} \stopcolumnset
+% \switchtobodyfont[small]
+% \startcolumnset [three] \dorecurse {1}{\input tufte \par} \stopcolumnset
+% \stoptext
+
+%D test case of Vit Zika (context list):
+%D
+%D \starttyping
+%D \setuplayout[height=middle,width=middle,grid=yes]
+%D
+%D \starttext
+%D \startcolumnset
+%D \dorecurse{10}
+%D {\input thuan \endgraf
+%D \bgroup
+%D \ss\restoreinterlinespace
+%D \dorecurse{3}{\input hawking \endgraf}
+%D \egroup
+%D \input bryson \endgraf}
+%D \stopcolumnset
+%D \stoptext
+%D \stoptyping
+
+\def\OTRSETsetcorrectnofcells#1%
+ {\bgroup
+ \!!counta#1\relax
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ \restoreinterlinespace
+ \else
+ \!!dimena-\!!counta\lineheight
+ \restoreglobalbodyfont % slow, we need a fast one
+ \advance\!!dimena\!!counta\lineheight
+ \getnoflines\!!dimena
+ \advance\!!counta\noflines
+ \ifnum\!!counta<#1\else
+ \!!counta#1\relax
+ \fi
+ \fi
+ \relax % needed ! ! ! ! else lookahead over \fi and \@EA
+ \@EA\egroup\@EA\scratchcounter\the\!!counta\relax}
+
+\def\OTRSETsetcorrectcellht
+ {\bgroup
+ \!!dimena-\strutht\relax
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ \restoreinterlinespace
+ \else
+ \restoreglobalbodyfont
+ \fi
+ \advance\!!dimena\strutht
+ \relax % needed ! ! ! ! else lookahead over \fi and \@EA
+ \@EA\egroup\@EA\scratchdimen\the\!!dimena\relax}
+
+\beginETEX \ifcsname
+
+\def\columnerasegridboxes % maybe dedicated loops
+ {\bgroup
+ \increment\columnmaxcells\relax
+ \ifodd\realpageno
+ \else % we are on the other page
+ \columnspreadfalse
+ \fi
+ \ifcolumnspread
+ \dorecurse\nofcolumns
+ {\let\!!stringa\recurselevel
+ \scratchcounter\recurselevel \advance\scratchcounter\lofcolumns
+ \edef\!!stringb{\the\scratchcounter}%
+ \dostepwiserecurse \zerocount \columnmaxcells \plusone
+ {\ifcsname\@otr@:\!!stringa:\recurselevel\endcsname
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box
+ \ifcsname\@otr@:\!!stringb:\recurselevel\endcsname
+ \csname\@otr@:\!!stringb:\recurselevel\endcsname
+ %\global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \else
+ \voidb@x
+ %\global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\voidb@x
+ \expandafter\newbox\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \fi
+ \else
+ \expandafter\newbox\csname\@otr@:\!!stringa:\recurselevel\endcsname
+ \ifcsname\@otr@:\!!stringb:\recurselevel\endcsname
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \else
+ \expandafter\newbox\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \fi
+ \fi}}%
+ \else
+ \dorecurse \tofcolumns
+ {\let\!!stringa\recurselevel
+ \dostepwiserecurse \zerocount \columnmaxcells \plusone
+ {\ifcsname\@otr@:\!!stringa:\recurselevel\endcsname
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\voidb@x
+ \else
+ \expandafter\newbox\csname\@otr@:\!!stringa:\recurselevel\endcsname
+ \fi}}%
+ \fi
+ \dorecurse\tofcolumns
+ {\global\setbox\csname\@otr@:\recurselevel:\columnmaxcells\endcsname\copy\placeholderboxa}%
+ \global\columnfirstcell\zerocount
+ \global\columnlastcell\columnfirstcell
+ \global\columnfreecells\columnfirstcell
+ \egroup}
+
+\endETEX
+
+\beginTEX
+
+\def\columnerasegridboxes
+ {\bgroup
+ \increment\columnmaxcells\relax
+ \ifodd\realpageno \else % we are on the other page
+ \columnspreadfalse
+ \fi
+ \ifcolumnspread
+ \dorecurse\nofcolumns
+ {\let\!!stringa\recurselevel
+ \scratchcounter\recurselevel \advance\scratchcounter\lofcolumns
+ \edef\!!stringb{\the\scratchcounter}%
+ \dostepwiserecurse \zerocount \columnmaxcells \plusone
+ {\expandafter\ifx\csname\@otr@:\!!stringa:\recurselevel\endcsname\relax
+ \expandafter\newbox\csname\@otr@:\!!stringa:\recurselevel\endcsname
+ \expandafter\ifx\csname\@otr@:\!!stringb:\recurselevel\endcsname\relax
+ \expandafter\newbox\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \else
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \fi
+ \else
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box
+ \expandafter\ifx\csname\@otr@:\!!stringb:\recurselevel\endcsname\relax
+ \voidb@x
+ %\global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\voidb@x
+ \expandafter\newbox\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \else
+ \csname\@otr@:\!!stringb:\recurselevel\endcsname
+ %\global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\csname\@otr@:\!!stringb:\recurselevel\endcsname
+ \fi
+ \fi}}%
+ \else
+ \dorecurse\tofcolumns
+ {\let\!!stringa\recurselevel
+ \dostepwiserecurse \zerocount \columnmaxcells \plusone
+ {\expandafter\ifx\csname\@otr@:\!!stringa:\recurselevel\endcsname\relax
+ \expandafter\newbox\csname\@otr@:\!!stringa:\recurselevel\endcsname
+ \else
+ \global\setbox\csname\@otr@:\!!stringa:\recurselevel\endcsname\box\voidb@x
+ \fi}}%
+ \fi
+ \dorecurse\tofcolumns
+ {\global\setbox\csname\@otr@:\recurselevel:\columnmaxcells\endcsname\copy\placeholderboxa}%
+ \global\columnfirstcell\zerocount
+ \global\columnlastcell\columnfirstcell
+ \global\columnfreecells\columnfirstcell
+ \egroup}
+
+\endTEX
+
+\def\doOTRSETsetgridcells#1#2#3#4#5#6% placeholder col row wid hei {data}
+ {\!!countd#2\advance\!!countd#4\advance\!!countd\minusone
+ \!!counte#3\advance\!!counte#5\advance\!!counte\minusone
+ \dostepwiserecurse{#2}\!!countd\plusone
+ {\!!countf\recurselevel
+ \dostepwiserecurse{#3}\!!counte\plusone
+ {\OTRSETsetgridcell\!!countf\recurselevel#1}}%
+ \dostepwiserecurse{#3}\!!counte\plusone
+ {\global\wd\OTRSETgridcell{#2}\recurselevel\hsize}%
+ \OTRSETsetgridcell{#2}\!!counte#6}
+
+\def\OTRSETsetgridcells
+ {\doOTRSETsetgridcells{\copy\placeholderboxb}}
+
+\def\OTRSETerasegridcells#1#2#3#4%
+ {\doOTRSETsetgridcells{\box\voidb@x}{#1}{#2}{#3}{#4}{\box\voidb@x}}
+
+\def\setupcolumnsetlines{\doquintupleempty\dosetupcolumnsettrick[l]}
+\def\setupcolumnsetstart{\doquintupleempty\dosetupcolumnsettrick[s]}
+
+\def\dosetupcolumnsettrick[#1][#2][#3][#4][#5]% tag id page col value
+ {% not needed, is already relative
+ % \doifinstringelse{+}{#3}{\scratchcounter\realpageno}{\scratchcounter\zerocount}%
+ % \advance\scratchcounter#3\relax % \relax needed
+ % \setevalue{\??mc:#1:#2:\the\scratchcounter:\number#4}{\number#5}}
+ \iffifthargument
+ \setevalue{\??mc:#1:#2:\number#3:\number#4}{\number#5}%
+ \else
+ \setevalue{\??mc:#1:#2:\number#3:0}{\number#4}%
+ \fi}
+
+\def\currentcolumnmaxcellstag #1{\??mc:l:\OTRSETidentifier:\columnsetpage:\number#1}
+\def\currentcolumnstartcelltag#1{\??mc:s:\OTRSETidentifier:\columnsetpage:\number#1}
+
+\beginTEX
+
+ \def\doresetcolumnsetlines#1%
+ {\ifundefined{\currentcolumnmaxcellstag{#1}}\else
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi
+ \ifundefined{\currentcolumnmaxcellstag{#1}}\else
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi}
+
+ \def\currentcolumnsomecells#1#2%
+ {\expandafter\ifx\csname#1\mofcolumns\endcsname\relax
+ \expandafter\ifx\csname#10\endcsname\relax
+ #2%
+ \else
+ \ifnum\csname#10\endcsname=\zerocount
+ #2\else\csname#10\endcsname
+ \fi
+ \fi
+ \else
+ \ifnum\csname#1\mofcolumns\endcsname=\zerocount
+ #2\else\csname#1\mofcolumns\endcsname
+ \fi
+ \fi}
+
+\endTEX
+
+\beginETEX \numexpr
+
+ \def\doresetcolumnsetlines#1%
+ {\ifcsname\currentcolumnmaxcellstag{#1}\endcsname
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi
+ \ifcsname\currentcolumnmaxcellstag{#1}\endcsname
+ \letgvalue{\currentcolumnmaxcellstag{#1}}\zerocount
+ \fi}
+
+ \def\currentcolumnsomecells#1#2%
+ {\ifcsname#1\mofcolumns\endcsname
+ \ifnum\csname#1\mofcolumns\endcsname=\zerocount
+ #2%
+ \else
+ \number\numexpr(\ifnum\csname#1\mofcolumns\endcsname<\zerocount
+ \columnmaxcells+\fi\csname#1\mofcolumns\endcsname)%
+ \fi
+ \else\ifcsname#10\endcsname
+ \ifnum\csname#10\endcsname=\zerocount
+ #2%
+ \else
+ \number\numexpr(\ifnum\csname#10\endcsname<\zerocount
+ \columnmaxcells+\fi\csname#10\endcsname)%
+ \fi
+ \else
+ #2%
+ \fi\fi}
+
+\endETEX
+
+\def\currentcolumnmaxcells {\currentcolumnsomecells\currentcolumnmaxcellstag \columnmaxcells}
+\def\currentcolumnstartcell{\currentcolumnsomecells\currentcolumnstartcelltag\plusone}
+
+\def\OTRSETsetfreecells#1#2% col start
+ {\bgroup
+ \global\columnfirstcell\ifnum#2=0 1\else#2\fi\relax
+ \OTRSETsetcorrectnofcells\currentcolumnmaxcells % sets \scratchcounter
+ \edef\columnmaxcells{\the\scratchcounter}%
+ \ifnum\columnfirstcell>\columnmaxcells
+ \global\columnfreecells\zerocount
+ \global\columnfirstcell\plusone
+ \global\columnlastcell \zerocount
+ \global\somefreecolumncellsfalse
+ %\message{no cells a}%
+ \else
+ \doloop
+ {\ifnum\columnfirstcell>\columnmaxcells\relax
+ \exitloop
+ \else
+ \OTRSETdoifcellelse{#1}\columnfirstcell
+ {\global\advance\columnfirstcell\plusone}\exitloop
+ \fi}%
+ \global\columnlastcell\columnfirstcell
+ \doloop
+ {\ifnum\columnlastcell>\columnmaxcells\relax
+ \exitloop
+ \else
+ \OTRSETdoifcellelse{#1}\columnlastcell
+ {\global\advance\columnlastcell \minusone \exitloop}
+ {\global\advance\columnlastcell \plusone }%
+ \fi}%
+ \ifnum\columnfirstcell>\columnmaxcells
+ \global\columnfreecells\zerocount
+ \global\columnfirstcell\plusone
+ \global\columnlastcell \zerocount
+ \global\somefreecolumncellsfalse
+ %\message{no cells b}%
+ \else
+ \ifnum\columnlastcell>\columnmaxcells
+ \global\columnlastcell\columnmaxcells
+ \fi
+ \global\columnfreecells\columnlastcell
+ \global\advance\columnfreecells -\columnfirstcell
+ \global\advance\columnfreecells \plusone
+ \global\somefreecolumncellstrue
+ %\message{\number\columnfirstcell-\number\columnlastcell=\number\columnfreecells}%
+ \fi
+ \fi
+ \egroup}
+
+\def\OTRSETgetmaxfreecells#1#2% col start
+ {\let\columnmaxfreecells\!!zerocount
+ \let\columnfrmfreecells\!!zerocount
+ \pushmacro \columnmaxcells
+\OTRSETsetcorrectnofcells\currentcolumnmaxcells % sets \scratchcounter
+\edef\columnmaxcells{\the\scratchcounter}%
+ \scratchcounter\zerocount
+ \dostepwiserecurse{#2}\columnmaxcells\plusone
+ {\OTRSETdoifcellelse{#1}\recurselevel
+ {\ifnum\columnmaxfreecells<\scratchcounter
+ \edef\columnmaxfreecells{\the\scratchcounter}%
+ \let\columnfrmfreecells\recurselevel
+ \fi
+ \scratchcounter\zerocount}
+ {\advance\scratchcounter\plusone}}%
+ \popmacro\columnmaxcells}
+
+\long\def\OTRSETrecurseRL#1%
+ {\dostepwiserecurse\nofcolumns\plusone\minusone
+ {#1\hskip\OTRSETgetparameter\c!distance\recurselevel}}
+
+\def\OTRSETmakegridbox
+ {\ifcase\columndirection
+ \OTRSETdomakegridbox\plusone\nofcolumns\plusone
+ \else
+ \OTRSETdomakegridbox\nofcolumns\plusone\minusone
+ \fi}
+
+\def\OTRSETdomakegridbox#1#2#3%
+ {\hbox\bgroup
+ \dontcomplain
+ \forgetall % can go once in \flush
+ \!!heighta \textheight
+ % test first !
+ \hbox to \makeupwidth
+ {\dostepwiserecurse{#1}{#2}{#3}
+ {\mofcolumns\recurselevel
+ \localcolumnwidth\OTRSETlocalwidth\mofcolumns
+ \setbox\scratchbox\hbox\localframed
+ [\??mc\OTRSETidentifier\number\mofcolumns]%
+ [\c!width=\localcolumnwidth,\c!height=\!!heighta,\c!lines=]%
+ {}%
+ \wd\scratchbox\localcolumnwidth
+ \ht\scratchbox\!!heighta
+ \ifcase\columndirection
+ \hskip\OTRSETgetparameter\c!distance\recurselevel
+ \box\scratchbox
+ \else
+ \box\scratchbox
+ \hskip\OTRSETgetparameter\c!distance\recurselevel
+ \fi}}%
+ \hskip-\makeupwidth
+ % main text
+ \hbox to \makeupwidth
+ {\dostepwiserecurse{#1}{#2}{#3}
+ {\mofcolumns\recurselevel
+ \localcolumnwidth\OTRSETlocalwidth\mofcolumns
+ \offinterlineskip
+ \setbox\scratchbox\vbox to \!!heighta
+ {\topskipcorrection % not needed
+ \ifcase\OTRSETbalancemethod
+ % no
+ \or
+ % yes
+ \doifelselayerdata{OTRTEXT}\vfill\relax % temp hack
+ \or
+ % top
+ \or
+ % bottom
+ \vfill
+ \fi
+ \dorecurse\columnmaxcells
+ {\setbox\scratchbox\hbox{\OTRSETgetgridcell\mofcolumns\recurselevel}%
+% {\setbox\scratchbox\hbox
+% {\localstarttextcolor
+% \OTRSETgetgridcell\mofcolumns\recurselevel
+% \localstoptextcolor}%
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \ifcase\columndirection
+ \box\scratchbox
+ \else
+ \hbox to \localcolumnwidth
+ {\hskip\localcolumnwidth\llap{\box\scratchbox}}%
+ \fi
+ \par}%
+ \ifcase\OTRSETbalancemethod
+ % no
+ \else
+ % yes, top, bottom
+ \ifdim\globalbodyfontsize=\localbodyfontsize
+ \removedepth
+ \restoreglobalbodyfont
+ \vskip\strutdepth
+ \fi
+ \kern\zeropoint
+ \vss
+ \fi}%
+ \wd\scratchbox\localcolumnwidth % \textwidth
+ \ifcase\columndirection
+ \hskip\OTRSETgetparameter\c!distance\recurselevel\box\scratchbox
+ \else
+ \box\scratchbox\hskip\OTRSETgetparameter\c!distance\recurselevel
+ \fi}}%
+ \egroup}
+
+\let\OTRSETbalht\zeropoint
+
+\def\OTRSETreducegridbox % for the moment no difference between methods
+ {\globallet\OTRSETbalht\zeropoint
+ \ifcase\OTRSETbalancemethod
+ % no balancing
+ \else
+ \bgroup
+ \!!counta\columnmaxcells
+ \donetrue
+ \doloop
+ {\dorecurse\nofcolumns{\OTRSETdoifcellelse\recurselevel\!!counta\donefalse\donothing}%
+ \ifdone
+ \ifnum\!!counta>\plusone\advance\!!counta\minusone\else\exitloop\fi
+ \else
+ \exitloop
+ \fi}%
+ \ifnum\!!counta>\plusone
+ \!!heighta\lineheight
+ \multiply\!!heighta \!!counta
+ \advance\!!heighta \topskip
+ \advance\!!heighta -\lineheight
+ \else
+ \!!heighta\zeropoint
+ \fi
+ \xdef\OTRSETbalht{\the\!!heighta}%
+ \egroup
+ \fi}
+
+\def\OTRSETflushfinalfootnotes
+ {\ifcase\lastcolumnlastcell \else
+ \setbox\scratchbox\hbox
+ {\placebottomnotes}%
+ \ifdim\ht\scratchbox>\zeropoint
+ \setbox\scratchbox\hbox
+ {\hbox to \zeropoint{\OTRSETgetgridcell\nofcolumns\lastcolumnlastcell}%
+ \box\scratchbox}%
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \OTRSETsetgridcell\nofcolumns\lastcolumnlastcell\box\scratchbox
+ \fi
+ \global\lastcolumnlastcell\zerocount
+ \fi}
+
+\def\OTRSETdoflush
+ {\ifcollectingcontent
+ \global\mofcolumns\plusone
+ \else
+ \OTRSETdofinalflush
+ \OTRSETdofinaloutput
+\ifnum\columnsetpage>0
+ \dorecurse\nofcolumns{\doresetcolumnsetlines\recurselevel}%
+\fi
+\doglobal\increment\columnsetpage
+ \OTRSETinitializecolumns
+ %\OTRSETdoflushfloats
+ \OTRSETstartnextpage
+ \initializecolumntextareas
+ \fi}
+
+\newbox\OTRfinalpagebox
+
+\def\OTRSETdofinalflush % see \OTRSETdoflush
+ {\OTRSETflushfinalfootnotes
+ \placecolumntextareas
+ \OTRSETcentergridcells
+ \bgroup % we want to keep the reduction local
+ \OTRSETreducegridbox
+ \global\setbox\OTRfinalpagebox\OTRSETmakegridbox
+ \egroup % otherwise we get the wrong number of free cells
+ %\gdef\localcolumnmaxcells{0}% here ?
+ \global\mofcolumns\nofcolumns} % otherwise problems in finaloutput
+
+% \def\OTRSETdofinaloutput
+% {\ifdim\ht\OTRfinalpagebox=\teksthoogte
+% % \bgroup \let\OTRSETsetvsize\relax % prevents useless search for gap
+% \ifcase\OTRSETbalancemethod
+% \finaloutput\box\OTRfinalpagebox
+% \else\ifdim\OTRSETbalht>\zeropoint
+% \global\setbox\OTRfinalpagebox \iftracecolumnset\ruledvbox\else\vbox\fi to \OTRSETbalht
+% {\box\OTRfinalpagebox}%
+% \global\dp\OTRfinalpagebox\strutdepth
+% \box\OTRfinalpagebox
+% \else
+% \finaloutput\box\OTRfinalpagebox
+% \fi \fi
+% \globallet\OTRSETbalht\zeropoint
+% % \egroup
+% \fi}
+
+\def\OTRSETdofinaloutput
+ {\ifdim\ht\OTRfinalpagebox=\textheight
+ \bgroup % \let\OTRSETsetvsize\relax % prevents useless search for gap
+ \ifcase\OTRSETbalancemethod
+ \finaloutput\box\OTRfinalpagebox
+ \else\ifdim\OTRSETbalht>\zeropoint
+ % catch a bordercase
+ \scratchdimen\OTRSETbalht
+ \advance\scratchdimen\lineheight\relax
+ \ifdim\scratchdimen>\textheight
+ % full page
+ \finaloutput\box\OTRfinalpagebox
+ \else
+ % same page
+ \global\setbox\OTRfinalpagebox \iftracecolumnset\ruledvbox\else\vbox\fi to \OTRSETbalht
+ {\box\OTRfinalpagebox\vss}%
+ \setlayer[OTRTEXT]{\box\OTRfinalpagebox}%
+ \snaptogrid\vbox{\vskip\OTRSETbalht}% hack
+ \fi
+ \else
+ \finaloutput\box\OTRfinalpagebox
+ \fi \fi
+ \globallet\OTRSETbalht\zeropoint
+ \egroup
+ \fi}
+
+\definesystemvariable {mc}
+\definesystemvariable {mt}
+\definesystemconstant {colset}
+
+\definetwopasslist\s!colset
+
+\newdimen \OTRSETtextswidth
+\newdimen \OTRSETtextsheight
+\let \OTRSETidentifier=\empty
+
+\newtoks \OTRSEToutput
+
+\def\OTRSETgetparameter#1#2{\csname\??mc\OTRSETidentifier\number#2#1\endcsname}
+\def\OTRSETsetparameter#1#2{\setvalue{\??mc\OTRSETidentifier\number#2#1}}
+
+\def\OTRSETskipstart
+ {\scratchcounter\executeifdefined{\??mc\OTRSETidentifier\c!start}\zerocount
+ \relax % needed !
+ \ifcase\scratchcounter\else
+ \advance\scratchcounter\plusone
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxe}
+ \plusone\plusone\nofcolumns\scratchcounter
+ \null
+ \fi}
+
+\def\OTRSETsetvsize % snap per sectie (gap here?)
+ {\ifcollectingcontent \else % can be assigndimen
+\OTRSETskipstart % not that well tested
+ \OTRSETcheckinsert % added
+ \OTRSETsetfreecells\mofcolumns\columnfirstcell
+ \ifsomefreecolumncells
+ \global\vsize\columnfreecells\lineheight
+ \ifinotr % else problems with floats, see extreme
+ \global\pagegoal\vsize % niet nodig, tenzij binnen otr
+ \fi
+ \synchronizeoutput % fails on example
+ % \allowbreak % hm
+ \fi
+ \synchronizenotes
+ \fi}
+
+\def\OTRSETsethsize % of course this does not migrate outside the otr
+ {\localcolumnwidth\OTRSETlocalwidth\mofcolumns
+ \textwidth\localcolumnwidth
+ \hsize\localcolumnwidth}
+
+\def\OTRSETsynchronizehsize
+ {\ifcase0\getvalue{\??mc\??mc\c!width}\else % some width set
+ \bgroup
+ \scratchdimen\OTRSETlocalwidth\mofcolumns
+ \ifdim\scratchdimen=\textwidth
+ \egroup
+ \else
+ % only if change in width and \column/\break
+ \egroup \OTRSETsethsize
+ \fi
+ \fi}
+
+\def\OTRSETcheckfreelines
+ {\OTRSETsetvsize}
+
+\def\doOTRSETcolumnseparator
+ {\hbox to \zeropoint{\hss\red\vl\hss}}
+
+\let\OTRSETcolumnseparator\relax
+
+\def\showbreaks
+ {\let\OTRSETcolumnseparator\doOTRSETcolumnseparator}
+
+% \installcolumnbreakhandler {SET} \v!ja
+% {% hmmm:
+% \ifhmode
+% \bgroup
+% \removeunwantedspaces
+% \parfillskip\zeropoint
+% \OTRSETcolumnseparator
+% \par
+% \egroup
+% \fi
+% % brrr:
+% \ejectinsert
+% \ejectpage
+% \OTRSETsynchronizehsize} % no \OTRSETsethsize, can be mid smaller (like tabulate)
+%
+% \installcolumnbreakhandler {SET} \v!forceer
+% {\OTRSETgotocolumn[\v!forceer]}
+% \installcolumnbreakhandler {SET} \v!eerste
+% {\OTRSETgotocolumn[\v!eerste]}
+% \installcolumnbreakhandler {SET} \v!laatste
+% {\OTRSETgotocolumn[\v!laatste]}
+%
+% \installcolumnbreakhandler {SET} \v!pagina
+% {\simplepagebreak % \flushnotes \executepagebreakhandler\v!ja
+% \ifnum\mofcolumns>\plusone
+% \OTRSETgotocolumn[\v!laatste,\v!forceer]%
+% \fi}
+
+\def\OTRSETcolumnhbreak
+ {\ifhmode
+ \bgroup
+ \removeunwantedspaces
+ \parfillskip\zeropoint
+ \OTRSETcolumnseparator
+ \par
+ \egroup
+ \fi}
+
+\installcolumnbreakhandler {SET} \v!local
+ {\OTRSETcolumnhbreak
+ \ejectinsert
+ \ejectpage % brrr
+ % no \OTRSETsethsize, can be mid smaller (like tabulate)
+ % also, this one should be executed at the outer level
+ % (setting hsize inside otr does not work)
+ \OTRSETsynchronizehsize}
+
+% We need to make sure that we really leave the column; mid
+% column we may end up in an empty gap, and we don't want to
+% stay there (basically such a gap is a small empty page
+% then).
+
+\installcolumnbreakhandler {SET} \v!yes
+ {\OTRSETcolumnhbreak
+ \edef\savedmofcolumns{\the\mofcolumns}%
+ \edef\savedrealpageno{\the\realpageno}%
+ \ejectinsert
+ \ejectpage % brrr
+ \doloop
+ {\ifnum\savedmofcolumns=\mofcolumns
+ \ifnum\savedrealpageno=\realpageno
+ \OTRSETdummycolumn
+ \else
+ \exitloop
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \OTRSETsynchronizehsize}
+
+\installcolumnbreakhandler {SET} \s!unknown
+ {\expanded{\OTRSETgotocolumn[\@@columnspecification]}}
+
+\installcolumnbreakhandler {SET} \v!page
+ {\vfill\eject % \doejectpage\eject
+ \OTRSETgotonextpage}
+
+\newtoks\OTRSETeverystartofcolumn
+
+\newbox\OTRSETsavedfootnotes
+
+% \installoutput\OTRSETflushtextsofar % spacing goes wrong
+
+%\def\OTRSETflushtextsofar
+% {\ifvoid\normalpagebox \else
+% \setbox\scratchbox\vbox{\unvbox\normalpagebox}%
+% \OTRSETsavenotes
+% \OTRSEThandleflushedtext0
+% \fi}
+
+% The complication is in the fact that when the HERE float
+% is placed, the otr is not invoked when there is not yet
+% enough content; this can lead to a change in order (turning
+% on the tracer with option 0 is very instructive, watch the
+% small numbers in the margin)
+%
+% 0 = no flushing, so no interference but user should handle
+% border cases of placement
+% 1 = the normal otr, rather untested
+% 2 = a solution that works ok, is experimental and above
+% all messy
+
+\chardef\OTRSETflushtextmode=0
+
+\def\OTRSETflushtextsofar
+ {\ifcase\OTRSETflushtextmode
+ % don't mess around
+ \or
+ % the normal one
+ \ifvoid\normalpagebox\else
+ \OTRSETnaturalflush
+ \OTRSETcheckfreelines
+ \fi
+ \or
+ % way to complicated, but kind of ok
+ \doOTRSETflushtextsofar
+ \fi}
+
+\newskip\lastskipinotr
+
+\installoutput\doOTRSETflushtextsofar % experimental
+ {\ifvoid\normalpagebox\else
+ \scratchdimen\dp\normalpagebox
+ \setbox\scratchbox\vbox
+ {\forgetall
+ \unvbox\normalpagebox
+ \global\lastskipinotr\lastskip\relax
+ \ifdim\lastskipinotr>\zeropoint\relax
+ \removelastskip
+ \else
+ \kern-\scratchdimen % handle depth
+ \fi}%
+ \ifdim\lastskipinotr>\zeropoint
+ \scratchskip\ht\scratchbox
+ \setbox\scratchbox\hbox
+ {\lower\strutdepth\box\scratchbox}%
+ \dp\scratchbox\scratchdimen
+ \ht\scratchbox\scratchskip
+ \fi
+ \OTRSETsavenotes
+ \OTRSEThandleflushedtext\zerocount
+ \ifdim\lastskipinotr>\zeropoint
+ %\vskip \lastskipinotr % hm, gets lost anyway
+ \else
+ % we should not discard skips after here; tricky
+ \fi
+ \OTRSETsetvsize
+ \fi}
+
+\def\OTRSETplacebottomnotes
+ {\iflastcolumnfootnotes
+ \ifnum\nofcolumns=\mofcolumns
+ \ifintermediatefootnotes \placebottomnotes \fi
+ \fi
+ \else
+ \placebottomnotes
+ \fi}
+
+\def\OTRSETflushsavednotes
+ {\iflastcolumnfootnotes
+ \ifnum\nofcolumns=\mofcolumns
+ \flushsavednotes
+ \fi
+ \else
+ \flushsavednotes
+ \fi}
+
+\def\OTRSETsavenotes
+ {\iflastcolumnfootnotes
+ \ifnum\nofcolumns=\mofcolumns \else
+ \savenotes
+ \fi
+ \fi}
+
+\appendtoks \OTRSETflushsavednotes \to \OTRSETeverystartofcolumn
+
+\def\OTRSETnaturalflush
+ {\bgroup
+ \forgetall % new, needed !
+ \setbox0\vbox to \columnfreecells\lineheight
+ {\vskip-\topskip
+ \vskip\lineheight
+ \prevdepth\strutdp
+ \unvbox\normalpagebox
+ \vfill}%
+ \setbox2\hbox
+ {\OTRSETplacebottomnotes}%
+ \setbox\scratchbox\hbox
+ {\wd0\zeropoint\box0\box2}%
+ \dp\scratchbox\strutdp
+ \OTRSEThandleflushedtext\plusone
+ \egroup}
+
+\newcount\lastcolumnlastcell
+
+\def\OTRSEThandleflushedtext#1%
+ {\getnoflines{\ht\scratchbox}%
+ %\wd\scratchbox\textwidth % geen \hsize kan < zijn in bv split tabulate
+ \wd\scratchbox\OTRSETlocalwidth\mofcolumns
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxf}
+ \mofcolumns\columnfirstcell\plusone\noflines
+ {\registeredtextarea1\columnfirstcell\scratchbox}% == \hbox / tricky htcorr == \columnfirstcell
+ \global\columnlastcell\columnfirstcell
+ \global\advance\columnlastcell \noflines
+ \global\lastcolumnlastcell\columnlastcell
+ \global\advance\lastcolumnlastcell \minusone
+ % find next (acceptable) gap, todo: deadcycle
+ \ifcase#1\else
+ \OTRSETfillgapsbetweencells\mofcolumns\columnlastcell
+ \fi
+ \OTRSETfindnextgap
+ % \message{\the\mofcolumns,\the\columnfirstcell,\the\columnfreecells}%
+ % \wait
+ % we cannot adapt the hsize since it may have changed (like
+ % inside a tabulate) so we only change it when there is a
+ % reason to do so
+ \OTRSETsynchronizehsize
+ \OTRSETsetvsize}
+
+\def\OTRSETfindnextgap
+ {\OTRSETsetfreecells\mofcolumns\columnlastcell
+ \ifsomefreecolumncells
+ % okay
+ \else
+ \global\advance\mofcolumns \plusone
+ \ifnum\mofcolumns>\nofcolumns
+ \OTRSETdoflush
+ \global\columnlastcell\plusone
+ \global\columnfirstcell\zerocount
+ \OTRSETdoflushfloats
+ \else
+ \the\OTRSETeverystartofcolumn
+ \global\columnlastcell\plusone
+ \global\columnfirstcell\zerocount
+ \fi
+ \fi}
+
+\let\OTRSETcheckfreelines\donothing
+
+\def\OTRSETfillgapsbetweencells#1#2% col
+ {\ifnum\columngaplimit>\zerocount
+ \donefalse
+ \dostepwiserecurse{#2}\columnmaxcells\plusone
+ {\OTRSETdoifcellelse{#1}\recurselevel
+ {\ifdone
+ \!!countb\recurselevel \advance\!!countb -\!!counta\relax
+ \ifnum\!!countb>\plusone
+ \advance\!!countb \minusone
+ \ifnum\!!countb<\columngaplimit\relax
+ \!!countb\recurselevel \advance\!!countb \minusone
+ \dostepwiserecurse\!!counta\!!countb\plusone
+ {\OTRSETsetgridcell{#1}\recurselevel\copy\placeholderboxc}%
+ %\message{[gap]}%
+ \fi
+ \fi
+ \fi
+ \donefalse}
+ {\ifdone \else
+ \donetrue
+ \!!counta\recurselevel
+ \fi}}%
+ \fi}
+
+\appendtoks
+ \OTRSETfillgapsbetweencells\mofcolumns\plusone
+\to \OTRSETeverystartofcolumn
+
+%\def\OTRSETfreezeminimumgap#1%
+% {\OTRSETgetmaxfreecells{#1}{1}%
+% \ifnum\columnmaxfreecells>0
+% \!!countb=\columnfrmfreecells
+% \!!counta=\!!counta \advance\!!counta -\columnmaxfreecells
+% \dorecurse{\columnmaxcells}
+% {\ifnum\recurselevel<\!!counta\relax
+% \donetrue
+% \else\ifnum\recurselevel>\!!countb
+% \donetrue
+% \else
+% \donefalse
+% \fi\fi
+% \ifdone
+% \OTRSETdoifcellelse{#1}{\recurselevel}
+% {}{\OTRSETsetgridcell{#1}\recurselevel\copy\placeholderboxc}%
+% \fi}%
+% \fi}
+%
+%\def\OTRSETfillgaps#1#2#3% col from to
+% {\dostepwiserecurse{#2}{#3}{1}
+% {\OTRSETdoifcellelse{#1}{\recurselevel}
+% {}{\OTRSETsetgridcell{#1}\recurselevel\copy\placeholderboxc}}}
+%
+%\def\OTRSETfillbotgaps#1#2% col first
+% {\OTRSETfillgaps{#1}{#2}{\columnmaxcells}}
+%
+%\def\OTRSETfilltopgaps#1#2% col last
+% {\OTRSETfillgaps{#1}{1}{#2}}
+
+\newif\ifspancolumnslots \spancolumnslotstrue
+\newif\ifcheckcolumnspan \checkcolumnspantrue
+
+\def\OTRSETcheckwidthgap#1#2% box size
+ {\ifcheckcolumnspan
+ \bgroup
+ \scratchdimen#2%
+ \advance\scratchdimen-\wd#1\relax
+ \ifdim-10\scaledpoint>\scratchdimen
+ \egroup
+ \else\ifdim10\scaledpoint<\scratchdimen
+ \egroup
+ \else
+ \egroup
+ \wd#1=#2%
+ \fi\fi
+ \fi}
+
+\def\OTRSETcheckcolumnslot#1%
+ {\enoughcolumncellstrue
+ \ifspancolumnslots\else
+ \OTRSETcheckwidthgap#1\hsize
+ \ifdim\wd#1>\hsize
+ \enoughcolumncellsfalse
+ \fi
+ \fi
+ \ifenoughcolumncells
+ \getnoflines\pagetotal
+ \scratchcounter\noflines
+ \getnoflines{\ht#1}%
+ \columnvcells\noflines
+ \columnhcells\plusone
+ \advance\scratchcounter \columnvcells \relax
+ \ifnum\scratchcounter>\columnfreecells
+ \enoughcolumncellsfalse
+ \fi
+ \fi}
+
+\def\OTRSETstoreincolumnslotPAGE#1%
+ {\ifenoughcolumncells
+ % to do
+ \OTRSETsavebox{#1}%
+ \else
+ \OTRSETsavebox{#1}%
+ \fi}
+
+\def\OTRSETstoreincolumnslotTOPS#1%
+ {\OTRSETprepareforcolumnslot1{#1}%
+ \OTRSETcheckcolumnslot{#1}%
+ \ifenoughcolumncells
+ \OTRSETcheckcolumnspace\mofcolumns\columnfirstcell{#1}%
+ \fi
+ \ifenoughcolumncells
+ \OTRSETsetgridcells\mofcolumns\columnfirstcell\columnhcells\columnvcells
+ {\hbox{\copy#1}}%
+ \OTRSETsetvsize
+ \else
+ \OTRSETsavebox{#1}%
+ \fi}
+
+\def\OTRSETstoreincolumnslotBOTS#1%
+ {\OTRSETprepareforcolumnslot3{#1}%
+ \edef\savedcolumnlastcell{\the\columnlastcell}%
+ \OTRSETcheckcolumnslot{#1}%
+ \ifenoughcolumncells
+ \advance\columnlastcell -\columnvcells \advance\columnlastcell \plusone
+% \OTRSETcheckcolumnspace\mofcolumns\columnfirstcell{#1}%
+ \OTRSETcheckcolumnspace\mofcolumns\columnlastcell{#1}%
+ \fi
+ \ifenoughcolumncells
+ \OTRSETsetgridcells\mofcolumns\columnlastcell\columnhcells\columnvcells{\copy#1}%
+ \OTRSETfillgapsbetweencells\mofcolumns\savedcolumnlastcell % -)
+ \OTRSETsetvsize
+ \else
+ \columnlastcell\savedcolumnlastcell
+ \OTRSETsavebox{#1}%
+ \fi}
+
+\newdimen\totalcolumnspace
+
+\def\columnspacetopoffset{0}
+\def\columnspacebotoffset{0}
+
+\def\OTRSETcheckcolumnspace#1#2#3% col row box
+ {\columnhcells\plusone
+ \totalcolumnspace\zeropoint
+ \scratchcounter#1%
+ \enoughcolumncellstrue
+ \doloop
+ {\advance\totalcolumnspace \OTRSETlocalwidth\scratchcounter\relax % needed
+\OTRSETcheckwidthgap#3\totalcolumnspace
+ \ifnum\wd#3>\totalcolumnspace\relax
+ \ifnum\scratchcounter=\nofcolumns
+ \enoughcolumncellsfalse
+ \exitloop
+ \else
+ \advance\columnhcells \plusone
+ \advance\scratchcounter \plusone
+ \advance\totalcolumnspace \OTRSETgetparameter\c!distance\scratchcounter
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \ifenoughcolumncells
+ \getnoflines{\ht#3}%
+ \columnvcells\noflines
+ \OTRSETcheckcolumncells{#1}{#2}\columnhcells\columnvcells
+ \fi}
+
+\def\OTRSETcheckcolumncells#1#2#3#4% col row wid hei
+ {\!!countd#1\advance\!!countd#3\advance\!!countd\minusone
+ \!!counte#2\advance\!!counte#4\advance\!!counte\minusone
+ \ifnum\!!counte>\columnmaxcells\relax
+ \enoughcolumncellsfalse
+ \else
+ \enoughcolumncellstrue
+%\let\columnspacetopoffset\zerocount
+%\scratchcounter#2\advance\scratchcounter\minusone
+%\ifnum\scratchcounter>0
+% \dostepwiserecurse{#1}\!!countd\plusone
+% {\ifdim\wd\OTRSETgridcell\recurselevel\scratchcounter>\zeropoint
+% \let\columnspacetopoffset\plusone
+% \else\ifdim\dp\OTRSETgridcell\recurselevel\scratchcounter>\zeropoint
+% \let\columnspacetopoffset\plusone
+% \fi\fi}%
+% \advance\!!counte \columnspacetopoffset \relax
+% \advance\columnvcells \columnspacetopoffset \relax
+%\fi
+%\let\columnspacebotoffset\zerocount
+%\scratchcounter\!!counte
+%\advance\scratchcounter \columnvcells \relax
+%\ifnum\scratchcounter>\columnmaxcells\else
+% \dostepwiserecurse{#1}\!!countd\plusone
+% {\ifdim\wd\OTRSETgridcell\recurselevel\scratchcounter>\zeropoint
+% \let\columnspacebotoffset\plusone
+% \else\ifdim\dp\OTRSETgridcell\recurselevel\scratchcounter>\zeropoint
+% \let\columnspacebotoffset\plusone
+% \fi\fi}%
+% \advance\!!counte \columnspacebotoffset \relax
+% \advance\columnvcells \columnspacebotoffset \relax
+%\fi
+ \dostepwiserecurse{#1}\!!countd\plusone % cols
+ {\ifenoughcolumncells
+ \!!countf\recurselevel\relax
+ \dostepwiserecurse{#2}\!!counte\plusone % rows
+ {\ifenoughcolumncells
+ \OTRSETdoifcellelse\!!countf\recurselevel
+ {\enoughcolumncellsfalse}{}%
+ \fi}%
+ \fi}%
+ \fi}
+
+\def\OTRSETsetpreferedcolumnslot#1#2%
+ {\doifsomething{#1}{\edef\preferedcolumn{#1}}%
+ \doifsomething{#2}{\edef\preferedrow {#2}}}
+
+\OTRSETsetpreferedcolumnslot{\nofcolumns}{1} % default ?
+
+\let\pofcolumns\mofcolumns
+\let\qofcolumns\mofcolumns
+
+\newif\ifquitincurrentcolumn
+
+\def\OTRSETstoreincolumnslotLRTB#1%
+ {\OTRSETprepareforcolumnslot1{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \mofcolumns\nofcolumns+\currenthcell
+ \plusone\columnmaxcells+\currentvcell{#1}}
+
+\def\OTRSETstoreincolumnslotLRBT#1%
+ {\OTRSETprepareforcolumnslot3{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \mofcolumns\nofcolumns+\currenthcell
+ \columnmaxcells\plusone-\currentvcell{#1}}
+
+\def\OTRSETstoreincolumnslotRLTB#1%
+ {\OTRSETprepareforcolumnslot1{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETcheckprefered
+ \OTRSETstoreincolumnslotindeed
+ \nofcolumns\qofcolumns-\currenthcell
+ \plusone\columnmaxcells+\currentvcell{#1}}
+
+\def\OTRSETstoreincolumnslotRLBT#1%
+ {\OTRSETprepareforcolumnslot3{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETcheckprefered
+ \OTRSETstoreincolumnslotindeed
+ \nofcolumns\qofcolumns-\currenthcell
+ \columnmaxcells\plusone-\currentvcell{#1}}
+
+\def\OTRSETstoreincolumnslotTBLR#1%
+ {\OTRSETprepareforcolumnslot1{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \plusone\columnmaxcells+\currentvcell
+ \mofcolumns\nofcolumns+\currenthcell{#1}}
+
+\def\OTRSETstoreincolumnslotTBRL#1%
+ {\OTRSETprepareforcolumnslot1{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETcheckprefered
+ \OTRSETstoreincolumnslotindeed
+ \plusone\columnmaxcells+\currentvcell
+ \nofcolumns\qofcolumns-\currenthcell{#1}}
+
+\def\OTRSETstoreincolumnslotBTLR#1%
+ {\OTRSETprepareforcolumnslot3{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \columnmaxcells\plusone-\currentvcell
+ \mofcolumns\nofcolumns+\currenthcell{#1}}
+
+\def\OTRSETstoreincolumnslotBTRL#1%
+ {\OTRSETprepareforcolumnslot3{#1}%
+ \OTRSETflushtextsofar
+ \OTRSETcheckprefered
+ \OTRSETstoreincolumnslotindeed
+ \columnmaxcells\plusone-\currentvcell
+ \nofcolumns\qofcolumns-\currenthcell{#1}}
+
+\def\OTRSETstoreincolumnslotFXTB#1% fixed column
+ {\OTRSETcheckprefered
+ \OTRSETdoifcellelse\pofcolumns\plusone
+ {\OTRSETprepareforcolumnslot2}{\OTRSETprepareforcolumnslot1}{#1}% % 1/2 dependent of place, todo
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \pofcolumns \pofcolumns +\currenthcell
+ \preferedrow\columnmaxcells+\currentvcell{#1}}
+
+\def\OTRSETstoreincolumnslotFXBT#1% fixed column
+ {\OTRSETcheckprefered
+ \OTRSETdoifcellelse\pofcolumns\columnmaxcells
+ {\OTRSETprepareforcolumnslot2}{\OTRSETprepareforcolumnslot3}{#1}% % 3/2 dependent of place, todo
+ \OTRSETflushtextsofar
+ \OTRSETstoreincolumnslotindeed
+ \pofcolumns \pofcolumns +\currenthcell
+ \columnmaxcells\preferedrow-\currentvcell{#1}}
+
+% \def\OTRSETstoreincolumnslotHERE#1% fixed column
+% {\OTRSETprepareforcolumnslot2{#1}%
+% \OTRSETflushtextsofar
+% \getnoflines\pagetotal \advance\noflines\columnfirstcell
+% \OTRSETstoreincolumnslotindeed
+% \mofcolumns\mofcolumns+\currenthcell
+% \noflines\columnmaxcells+\currentvcell{#1}%
+% \OTRSETsetvsize}
+
+\chardef\OTRSETforcefixedfloats=0
+
+\def\OTRSETstoreincolumnslotHERE#1% fixed column
+ {\ifcase\OTRSETforcefixedfloats
+ \OTRSETstoreincolumnslotSOMEWHERE2{#1}%
+ \else
+ \OTRSETstoreincolumnslotFIXD{#1}%
+ \fi}
+
+% this one looses too wide graphics
+%
+% \def\OTRSETstoreincolumnslotFIXD#1% fixed column
+% {\OTRSETprepareforcolumnslot2{#1}%
+% % no flush text sofar here, beware: no width test
+% \snaptogrid\vbox{\box#1}}
+%
+% still imperfect
+
+\def\OTRSETstoreincolumnslotFIXD#1% fixed column
+ {\OTRSETflushtextsofar
+ \ifdim\wd#1>\textwidth
+ \OTRSETstoreincolumnslotSOMEWHERE2{#1}%
+ \else
+ % crappy test / needed for o-pbu-f / will be replaced
+ \getnoflines{\ht#1}%
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen\lineheight
+ \advance\scratchdimen\pagetotal\relax
+ \ifdim\scratchdimen<\pagegoal
+ %OTRSETprepareforcolumnslot3{#1}%
+ %ruledvskip\columnslotspacing\lineheight
+ \blank[\columnslotspacing*\v!line]%
+ \snaptogrid\hbox to \hsize{\hss\box#1\hss}% strange, why the centering
+ \blank[\columnslotspacing*\v!line]%
+ \else
+ \OTRSETstoreincolumnslotSOMEWHERE2{#1}%
+ \fi
+ \fi}
+
+\def\OTRSETstoreincolumnslotSOMEWHERE#1#2%
+ {\OTRSETprepareforcolumnslot{#1}{#2}%
+ \OTRSETflushtextsofar
+ \getnoflines\pagetotal \advance\noflines\columnfirstcell
+ \OTRSETstoreincolumnslotindeed
+ \mofcolumns\mofcolumns+\currenthcell
+ \noflines\columnmaxcells+\currentvcell{#2}%
+ \OTRSETsetvsize}
+
+\def\OTRSETcheckprefered
+ {\ifnum\preferedcolumn<\mofcolumns
+ \let\pofcolumns\mofcolumns
+ \else
+ \let\pofcolumns\preferedcolumn
+ \fi
+ \ifquitincurrentcolumn
+ \ifnum\mofcolumns=\nofcolumns
+ \def\qofcolumns{\mofcolumns}%
+ \else
+ \scratchcounter\mofcolumns
+ \advance\scratchcounter \plusone
+ \edef\qofcolumns{\the\scratchcounter}%
+ \fi
+ \else
+ \let\qofcolumns\mofcolumns
+ \fi}
+
+\def\OTRSETstoreincolumnslotindeed#1#2#3#4#5#6#7#8#9%
+ {\OTRSETcheckprefered
+ \enoughcolumncellsfalse
+ \donefalse
+ \dostepwiserecurse{#1}{#2}{#31}
+ {\ifdone
+ \exitloop
+ \else
+ #4=\recurselevel
+ \dostepwiserecurse{#5}{#6}{#71}
+ {\ifdone
+ \exitloop
+ \else
+ #8=\recurselevel
+ \OTRSETcheckcolumnspace\currenthcell\currentvcell{#9}%
+ \ifenoughcolumncells \donetrue \fi
+ \fi}%
+ \fi}%
+ \ifdone
+ \enoughcolumncellstrue
+ \else
+ \enoughcolumncellsfalse
+ \fi
+ \ifenoughcolumncells
+% \ifnum\columnspacetopoffset>0\message{[+++]}\fi
+% \ifnum\columnspacebotoffset>0\message{[---]}\fi
+% \OTRSETsetgridcells\currenthcell\currentvcell\columnhcells\columnvcells
+% {\vbox
+% {\ifcase\columnspacetopoffset\else\ruledvskip\columnspacetopoffset\lineheight\fi
+% \copy#9
+% \ifcase\columnspacebotoffset\else\ruledvskip\columnspacebotoffset\lineheight\fi}}%
+ \OTRSETsetgridcells\currenthcell\currentvcell\columnhcells\columnvcells
+ {\copy#9}%
+ \ifnum\currenthcell=\mofcolumns\relax
+ \ifdim\ht\OTRSETsavedfootnotes>\zeropoint
+ \OTRSETsetfreecells\mofcolumns\columnfirstcell
+ \ifsomefreecolumncells
+ \getnoflines{\ht\OTRSETsavedfootnotes}\relax
+ \ifnum\columnfreecells<\noflines
+ \global\somefreecolumncellsfalse
+ \else
+ %\message{[flt]}% float
+ \fi
+ \fi
+ \ifsomefreecolumncells
+ % ok, enough room for notes
+ %\message{[flt]}% float
+ \else % ?
+ \OTRSETsavebox{#9}%
+ \OTRSETerasegridcells\currenthcell\currentvcell\columnhcells\columnvcells
+ %\message{[clr]}% save box
+ \fi
+ \else
+ %\message{[flt]}% float
+ \fi
+ \else
+ %\message{[flt]}% float
+ \fi
+ \OTRSETsetvsize
+ %\message{[fnt]}% float
+ \else
+ %\message{[rej]}% save box
+ \OTRSETsavebox{#9}%
+ \fi}
+
+\chardef\columnslotspacing \plusone
+
+\def\OTRSETstoreincolumnslot#1% #2 % {method} {box} % alleen last
+ {% no messing around here
+ % \dp#2=\zeropoint
+ % \ifcase\columnslotspacing\else
+ % \setbox#2=\vbox spread \columnslotspacing\lineheight
+ % {\vss\box#2\vss}%
+ % \fi
+ % and don't change this any more
+% \doifdefinedelse{\strippedcsname\OTRSETstoreincolumnslot#1}
+% {\getvalue{\strippedcsname\OTRSETstoreincolumnslot#1}{#2}}
+% {\OTRSETstoreincolumnslotUNKNOWN{#2}}}
+ \executeifdefined{\strippedcsname\OTRSETstoreincolumnslot#1}
+ \OTRSETstoreincolumnslotUNKNOWN} % {#2}}
+
+\def\OTRSETstoreincolumnslotUNKNOWN#1%
+ {\OTRSETprepareforcolumnslot2{#1}\copy#1} % {} ?
+
+% \def\OTRSETprepareforcolumnslot#1#2% 1=hoog 2=midden 3=laag
+% {\dp#2\zeropoint
+% \ifcase\columnslotspacing\else
+% \scratchdimen\columnslotspacing\lineheight
+% \ifnum#1=2 \scratchdimen2\scratchdimen \fi
+% \setbox#2\vbox spread \scratchdimen
+% {\ifnum#1>1\vss\fi\box#2\relax\ifnum#1<3\vss\fi}%
+% \fi}
+
+\def\OTRSETprepareforcolumnslot#1#2% 1=hoog 2=midden 3=laag
+ {\dp#2\zeropoint
+ \ifcase\columnslotspacing\else
+ \scratchdimen\columnslotspacing\lineheight
+ \ifnum#1=2 \scratchdimen2\scratchdimen \fi
+ \begingroup
+ \advance\scratchdimen\ht#2\relax
+ \ifdim\scratchdimen<\columnmaxcells\lineheight
+ \endgroup \setbox#2\vbox spread \scratchdimen \bgroup
+ \else
+ \endgroup \setbox#2\vbox to \columnmaxcells\lineheight \bgroup
+ \vskip\strutdepth
+ \fi
+ \ifnum#1>1\vss\fi
+ \box#2\relax
+ \ifnum#1<3\vss\fi
+ \egroup
+ \fi}
+
+\def\OTRSETdocheckiffloatfits % eigenlijk moet else float anders
+ {\global\ifnofloatpermitted\roomforfloatfalse\else\roomforfloattrue\fi}
+
+\def\OTRSETunpreparebox#1%
+ {\ifhbox#1% spans and so
+ \global\setbox\floatbox\vbox{\box#1}%
+ \else
+ \setbox\scratchbox\vbox
+ {\unvbox#1\unskip\unskip\unskip
+ \global\setbox\floatbox\lastbox}%
+ \fi}
+
+\def\OTRSETsavebox#1% clean up the skips
+ {\OTRSETunpreparebox{#1}%
+ \dosavefloat}
+
+\def\OTRSETresavebox#1% clean up the skips
+ {\OTRSETunpreparebox{#1}%
+ \doresavefloat}
+
+\def\OTRSETflushfloatbox % nog verder doorvoeren en meer info in marge
+ {\iftestfloatbox\ruledhbox\fi{\box\floatbox}}
+
+\def\OTRSETdoflushfloats
+ {\bgroup
+ \def\OTRSETsavebox##1{\!!doneafalse}%
+ \doloop
+ {\ifsomefloatwaiting
+\OTRSETskipstart
+ \dogetfloat
+ \ifdim\wd\floatbox>\zeropoint
+ \!!doneatrue
+ \dp\floatbox\zeropoint
+ \OTRSETstoreincolumnslot{TBLR}\floatbox
+ \if!!donea
+ %\message{[flu]}%
+ \else
+ \OTRSETresavebox\floatbox
+ \exitloop
+ \fi
+ \else
+ %\message{[err]}% happens but why?
+ \fi
+ \else
+ \exitloop
+ \fi}
+ \egroup}
+
+\newif\ifcentergridcells \centergridcellstrue
+
+\newif\ifcentergridcellonly \centergridcellonlyfalse
+\newif\ifautocentergridcellonly \autocentergridcellonlytrue
+
+\def\OTRSETcentergridcells
+ {\ifcentergridcells
+ \dorecurse\nofcolumns
+ {\currenthcell\recurselevel
+ \ifautocentergridcellonly
+ % we prevent centering when the next column is empty
+ % to be checked ! ! ! !
+ \advance\currenthcell \plusone
+ \centergridcellonlytrue
+ \ifnum\currenthcell>\nofcolumns
+ % ok already
+ \else
+ % only span if there is a next column with content
+ \dorecurse\columnmaxcells
+ {\ifdim\ht\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
+ \centergridcellonlyfalse
+ \else\ifdim\dp\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
+ \centergridcellonlyfalse
+ \fi\fi}%
+ \fi
+ \fi
+ \currenthcell\recurselevel
+ \dorecurse\columnmaxcells
+ {\currentvcell\recurselevel\relax
+ \ifdim\ht\OTRSETgridcell\currenthcell\currentvcell>\zeropoint
+ \ifdim\dp\OTRSETgridcell\currenthcell\currentvcell=\zeropoint
+ \bgroup
+ \setbox\scratchbox\OTRSETgetgridcell\currenthcell\currentvcell
+ \getnoflines{\ht\scratchbox}%
+ \!!counta\currentvcell
+ \advance\!!counta -\noflines
+ \advance\!!counta \plusone
+ % first col always ok
+ \!!countb\currenthcell
+ \!!countc\currenthcell
+ \advance\!!countc \plusone
+ \!!donebtrue
+ \ifcentergridcellonly
+ \!!countc\maxdimen
+ \fi
+ \dostepwiserecurse\!!countc\nofcolumns\plusone
+ {\if!!doneb
+ \let\xrecurselevel\recurselevel
+ \dostepwiserecurse\!!counta\currentvcell\plusone
+ {\ifdim\ht\OTRSETgridcell\xrecurselevel\recurselevel>\zeropoint
+ \!!donebfalse
+ \else\ifdim\wd\OTRSETgridcell\xrecurselevel\recurselevel>\zeropoint
+ \!!donebfalse
+ \fi\fi}%
+ \if!!doneb
+ \!!countb\xrecurselevel
+ \fi
+ \fi}%
+ \totalcolumnspace\OTRSETlocalwidth\currenthcell
+ \dostepwiserecurse\!!countc\!!countb\plusone
+ {\advance\totalcolumnspace \OTRSETlocalwidth\recurselevel
+ \advance\totalcolumnspace \OTRSETgetparameter\c!distance\recurselevel}%
+ \ifdim\totalcolumnspace>\wd\scratchbox
+ \setbox\scratchbox\hbox to \totalcolumnspace{\hss\box\scratchbox\hss}%
+ \fi
+ \OTRSETsetgridcell\currenthcell\currentvcell\box\scratchbox
+ \egroup
+ \fi
+ \fi}}%
+ \fi}
+
+\def\OTRSETinitializecolumns% once per page
+ {\columnspreadtrue % todo
+ \ifcolumnspread
+ \global\rofcolumns\getvalue{\??mc\OTRSETidentifier\c!nright}%
+ \global\lofcolumns\getvalue{\??mc\OTRSETidentifier\c!nleft}%
+ \global\tofcolumns\rofcolumns \relax
+ \ifodd\realpageno\relax
+ \global\nofcolumns\rofcolumns
+ \else
+ \global\advance\tofcolumns\lofcolumns
+ \global\nofcolumns\lofcolumns
+ \fi
+ \else
+ \global\nofcolumns\getvalue{\??mc\OTRSETidentifier\c!n}%
+ \global\rofcolumns\nofcolumns
+ \global\lofcolumns\nofcolumns
+ \global\tofcolumns\nofcolumns
+ \fi
+ \OTRSETassignwidths
+ \global\mofcolumns\plusone
+ \columnerasegridboxes}
+
+% vanaf hier:
+
+\def\definecolumnset
+ {\dodoubleargument\dodefinecolumnset}
+
+\def\dodefinecolumnset[#1][#2]%
+ {\getparameters[\??mc#1]
+ [\c!direction=\v!right,
+ \c!balance=\v!no,
+ \c!distance=1.5\bodyfontsize, % controleren
+ \c!n=2,
+ \c!nleft=\getvalue{\??mc#1\c!n},
+ \c!nright=\getvalue{\??mc#1\c!n},
+ \c!width=\v!fit,
+ \c!lines=0,
+ \c!start=0,
+ #2]%
+ \dorecurse{\getvalue{\??mc#1\c!nleft}} % todo
+ {\dododefinecolumnset[#1][\recurselevel]}%
+ \dorecurse{\getvalue{\??mc#1\c!nright}} % todo
+ {\dododefinecolumnset[#1][\recurselevel]}%
+ % redo framed settings
+ \setupcolumnset[#1][1][\c!distance=\!!zeropoint]}
+
+\def\dododefinecolumnset[#1][#2]%
+ {\presetlocalframed
+ [\??mc#1#2]%
+ \setupcolumnset
+ [#1][#2]
+ [\c!offset=\v!overlay,
+ \c!frame=\v!off,
+ \c!align=,
+ \c!lines=0,% really needed since c!regels is now part of framed
+ \c!width=\getvalue{\??mc#1\c!width},
+ \c!distance=\getvalue{\??mc#1\c!distance}]}
+
+\def\setupcolumnset
+ {\dotripleargument\dosetupcolumnset}
+
+\def\dosetupcolumnset[#1][#2][#3]%
+ {\ifthirdargument
+ \def\docommando##1%
+ {\doifelse{##1}\v!each
+ {\dorecurse{\getvalue{\??mc#1\c!n}}{\docommando\recurselevel}}
+ {\getparameters[\??mc#1##1][#3]}}%
+ \processcommalist[#2]\docommando
+ \else
+ \getparameters[\??mc#1][#2]%
+ \fi}
+
+\definecolumnset[\s!default][\c!n=2] % fallback
+
+\def\OTRSETgotonextpage
+ {\vfill\eject
+ \relax\ifnum\mofcolumns>\plusone
+ \OTRSETgotocolumn[\v!last]%
+ \ifnum\mofcolumns>\plusone
+ \OTRSETgotocolumn[\v!force]%
+ \fi
+ \fi}
+
+\let\OTRSETgotonextpageX\OTRSETgotonextpage % will become obsolete
+
+\def\OTRSETgotocolumn
+ {\dosingleempty\doOTRSETgotocolumn}
+
+\def\doOTRSETgotoCOLROW#1% <number>|<number>*<number>
+ {\bgroup % really needed
+ \splitstring#1\at*\to\column\and\row
+ \bgroup
+ \ifx\column\empty\else\expanded{\doOTRSETgotoCOLUMN{\column}}\fi
+ \egroup
+ \bgroup
+ \ifx\row \empty\else\expanded{\doOTRSETgotoROW {\row }}\fi
+ \egroup
+ \egroup}
+
+\def\doOTRSETgotoCOLUMN#1%
+ {\ifnum\mofcolumns=#1\else
+ \vfill\eject % \doejectpage\eject
+ \doloop
+ {\ifnum\mofcolumns=#1\relax
+ \exitloop \else \OTRSETdummycolumn
+ \fi}%
+ \fi}
+
+\def\doOTRSETgotoROW#1%
+ {\ifnum#1>1
+ \scratchcounter\zerocount
+ \currenthcell\mofcolumns
+ \currentvcell#1\advance\currentvcell \minusone
+ \dorecurse\currentvcell
+ {\OTRSETdoifcellelse\mofcolumns\recurselevel\donothing
+ {\advance\scratchcounter\plusone}}
+ \getnoflines\pagetotal
+ \advance\scratchcounter-\noflines
+ \ifnum\scratchcounter>\zerocount
+ \dorecurse\scratchcounter{\line{\strut}}%
+ \fi
+ \fi
+ \OTRSETsetvsize}
+
+\def\doOTRSETgotocolumn[#1]% yes|force|first|last|<number>|<number>*<number>
+ {\processallactionsinset
+ [#1]
+ [ \v!yes=>\OTRSETdummycolumn,
+ \v!no=>,% not supported
+ \v!force=>\OTRSETdummycolumn,
+ \v!first=>\expanded{\doOTRSETgotoCOLUMN{1}},
+ \v!last=>\expanded{\doOTRSETgotoCOLUMN{\the\nofcolumns}},
+ \s!default=>\OTRSETdummycolumn,
+ \s!unknown=>\expanded{\doOTRSETgotoCOLROW{\commalistelement}}]}
+
+% to be documented and tested, not yet that robust
+
+% \def\OTRSETgotocell#1#2%
+% {\endgraf
+% \gdef\gotocellcounter{0}%
+% \doloop
+% {\ifnum\mofcolumns<#1\relax
+% \doglobal\increment\gotocellcounter\relax
+% \ifnum\gotocellcounter>#1\relax
+% \line{\strut}\crlf
+% \line{\strut}\crlf
+% \column
+% \writestatus{columnset}{quitting goto cell}%
+% \exitloop
+% \else
+% \column
+% \fi
+% \else
+% \exitloop
+% \fi}%
+% \ifnum\mofcolumns=#1\relax
+% \ifnum#2>1
+% \scratchcounter\zerocount
+% \currenthcell\mofcolumns
+% \currentvcell#2\advance\currentvcell \minusone
+% \dorecurse\currentvcell
+% {\OTRSETdoifcellelse\mofcolumns\recurselevel\donothing
+% {\advance\scratchcounter\plusone}}
+% \getnoflines\pagetotal
+% \advance\scratchcounter-\noflines
+% \ifnum\scratchcounter>\zerocount
+% \dorecurse\scratchcounter{\line{\strut}}%
+% \fi
+% \fi
+% \fi
+% \OTRSETsetvsize}
+
+\def\OTRSETgotocell#1#2% obsolete: now \column[#1*#2]
+ {\endgraf
+ \doOTRSETgotoCOLUMN{#1}%
+ \doOTRSETgotoROW {#2}}
+
+\def\OTRSETdummycolumn
+ {\verticalstrut
+ \vskip-\struttotal
+ \vfill
+ \eject}
+
+\newcounter\columnsetlevel
+\let\currentcolumnset\empty
+\chardef\OTRSETfinish\zerocount
+
+\def\startcolumnset
+ {\dodoubleempty\dostartcolumnset}
+
+\def\dostartcolumnset[#1][#2]%
+ {\increment\columnsetlevel\relax
+ \globallet\localcolumnmaxcells\!!zerocount
+ \global\chardef\OTRSETfinish\zerocount
+ \ifnum\columnsetlevel=\plusone
+ \bgroup
+ \saveinterlinespace
+ \globallet\columnsetpage\!!plusone
+ \def\currentcolumnset{#2}%
+ \insidecolumnstrue % will be different flag
+ \activateotr{SET}{ONE}% andere naam, activate or so
+ \doifelsenothing{#1}
+ {\globallet\OTRSETlist\s!default}
+ {\xdef\OTRSETlist{#1}}%
+ \OTRSETstartnextpage
+ \OTRSETassignwidths
+ \OTRSETsethsize
+ \else
+ \bgroup
+ \fi}
+
+\def\stopcolumnset
+ {\relax
+ \ifnum\columnsetlevel=\plusone
+ \endgraf % needed, else wrong vsize in one par case
+ \global\chardef\OTRSETfinish\plusone
+ % no, extra page \pagebreak % (test on pascal toc)
+ \dostopcolumnset
+ \egroup
+ \global\notelimittrue % brrr, untested and fuzzy
+ \setvsize
+ \sethsize
+ \ifvoid\OTRfinalpagebox\else
+ % probably balanced
+ \ifdim\ht\OTRfinalpagebox<\textheight
+ \snaptogrid[\v!page]\hbox{\box\OTRfinalpagebox}%
+ \else
+ \box\OTRfinalpagebox
+ \fi
+ \fi
+ \global\chardef\OTRSETfinish\zerocount
+ \ifsomefloatwaiting \setvsize \pagebreak \setvsize \fi
+ \else
+ \egroup
+ \fi
+ \decrement\columnsetlevel\relax}
+
+\chardef\OTRSETbalancemethod\zerocount
+
+\def\dostopcolumnset
+ {%\OTRSETdofinalflushfloats % yes/no
+ \ifcase\OTRSETbalancemethod
+ \OTRSETnobalance
+ \else
+ \OTRSETdobalance
+ \fi}
+
+\def\OTRSETdobalance
+ {\OTRSETnobalance}
+
+\def\localcolumnmaxcells{0}
+
+% currently line represents real line, i.e. on the grid, and
+% not something noflines (also, watch out for switching from
+% 2-3 columns on one page with both sets balanced: the
+% second set does not see the first set
+
+% \def\OTRSETinitbalancing
+% {\ifcase\OTRSETbalancemethod\or
+% \let\savedcolumnmaxcells\columnmaxcells
+% \ifnum\realpageno=\balancingpageno\relax
+% \ifnum\mofcolumns=\plusone
+% \dorecurse\nofcolumns
+% {\!!counta\recurselevel\relax
+% \!!countb\getvalue{\??mc\OTRSETidentifier\number\!!counta\c!regels}\relax
+% \ifcase\!!countb
+% \!!countb\getvalue{\??mc\OTRSETidentifier\c!regels}\relax
+% \fi
+% \ifcase\!!countb
+% \!!countb \savedcolumnmaxcells\relax
+% \fi
+% % can be an option: absolute versus relative
+% \ifnum\OTRSETbalancemethod=\plusthree
+% \advance\!!countb\precolumnlines
+% \ifnum\!!countb>\localcolumnmaxcells\relax
+% \xdef\localcolumnmaxcells{\the\!!countb}%
+% \fi
+% \advance\!!countb \plusone
+% \dostepwiserecurse\!!countb\columnmaxcells\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \else
+% \globallet\localcolumnmaxcells\columnmaxcells
+% \advance\!!countb-\columnmaxcells
+% \!!countb-\!!countb
+% \advance\!!countb \minusone
+% \ifnum\!!countb>\zerocount
+% \dostepwiserecurse\plusone\!!countb\plusone
+% {\ifvoid\OTRSETgridcell\!!counta\recurselevel
+% \OTRSETsetgridcell\!!counta\recurselevel\copy\placeholderboxe
+% \fi}%
+% \fi
+% \fi}%
+% \OTRSETsetvsize % ! ! !
+% \fi
+% \fi
+% \fi}
+%
+% \def\OTRSETpresetbalancing
+% {\doifvaluesomething{\??mc\OTRSETidentifier\c!regels}%
+% {\getcommacommandsize[\csname\??mc\OTRSETidentifier\c!regels\endcsname]%
+% \ifnum\commalistsize>\plusone
+% \scratchcounter\zerocount
+% \def\docommando##1%
+% {\advance\scratchcounter\plusone
+% \setvalue{\??mc\OTRSETidentifier\the\scratchcounter\c!regels}{##1}}%
+% \processcommacommand
+% [\csname\??mc\OTRSETidentifier\c!regels\endcsname]\docommando
+% \setvalue{\??mc\OTRSETidentifier\c!regels}{0}%
+% \fi}}
+
+% don't loose empty 1page/1column with area (example **)
+%
+% \definecolumntextarea[title][x=1,y=4,nx=2,ny=7,state=start]
+% \setupcolumntextareatext[title][\vtop to 5cm{a\\b\\b\\d}]
+%
+% \starttext
+% \startcolumnset \dorecurse{1}{\input tufte \par} \stopcolumnset
+% \stoptext
+
+% better:
+
+\def\definecolumnsetarea {\definecolumntextarea}
+\def\setupcolumnsetarea {\setupcolumntextarea}
+\def\setupcolumnsetareatext{\setupcolumntextareatext}
+
+% so this will be changed
+
+% \def\OTRSETnobalance
+% {\iflastcolumnfootnotes % testen ! optie
+% % inhibit flush of floats !
+% % todo: nothing if no footnotes, else empty page
+% \dostepwiserecurse\mofcolumns\nofcolumns\plusone
+% {\vskip-\struttotal\verticalstrut\vfill\eject}%
+% \else
+% \ifdim\pagetotal>\zeropoint % no, see example **
+% \ifnum\mofcolumns=\nofcolumns
+% \OTRSETflushfinalfootnotes
+% \else
+% % probably todo
+% \fi
+% \vfill
+% \eject
+% % brr, may result in empty page after nicely fit text
+% % or if left, then lost of first column only text
+% \ifnum\mofcolumns>1
+% \OTRSETdofinalflush
+% \OTRSETdofinaloutput
+% \fi
+% \fi
+% \fi}
+
+\def\OTRSETnobalance
+ {\iflastcolumnfootnotes % testen ! optie
+ % inhibit flush of floats !
+ % todo: nothing if no footnotes, else empty page
+ \dostepwiserecurse\mofcolumns\nofcolumns\plusone
+ {\vskip-\struttotal\verticalstrut\vfill\eject}%
+ \else
+ \ifnum\mofcolumns>\plusone
+ \donetrue
+ \else\ifdim\pagetotal>\zeropoint % too dangerous, we loose data
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \ifnum\mofcolumns=\nofcolumns
+ \OTRSETflushfinalfootnotes
+ \else
+ % probably todo
+ \fi
+ \vfill
+ \eject
+ % brr, may result in empty page after nicely fit text
+ % or if left, then lost of first column only text
+ \ifnum\mofcolumns>\plusone
+ \OTRSETdofinalflush
+ \OTRSETdofinaloutput
+ \fi
+ \fi
+ \fi}
+
+\def\OTRSETstartnextpage
+ {\doifsomething\OTRSETlist
+ {\getfromcommacommand[\OTRSETlist][1]%
+ \global\let\OTRSETidentifier\commalistelement
+ \doifundefined{\??mc\OTRSETidentifier\c!n}
+ {\globallet\OTRSETidentifier\s!default}%
+ \let\newcommalistelement\empty
+ \doglobal\replaceincommalist\OTRSETlist1%
+ \OTRSETrestart}}
+
+\def\OTRSETrestart % weed
+ {\OTRSETinitializefeatures
+ \OTRSETflushpreposttext
+ \OTRSETinitializecolumns
+ \OTRSETcheckinsert
+ \OTRSETcheckgrid
+ \OTRSETsetvsize
+ \OTRSETsethsize % or local ?
+ \OTRSETsetplaceholders
+ \OTRSEThandlepreposttext
+ \initializecolumntextareas % name !
+ \OTRSETcheckstartcells
+ \OTRSETsetvsize}
+
+% \def\OTRSETcheckstartcells
+% {\dorecurse\nofcolumns
+% {\bgroup
+% \mofcolumns\recurselevel
+% \scratchcounter\currentcolumnstartcell % uses \mofcolumns, returns 1 or more
+% \advance\scratchcounter \minusone
+% \dorecurse\scratchcounter
+% {\OTRSETdoifcellelse\mofcolumns\recurselevel
+% \donothing{\OTRSETsetgridcell\mofcolumns\recurselevel\copy\placeholderboxe}}%
+% \egroup}}
+
+\def\OTRSETcheckstartcells
+ {\dorecurse\nofcolumns
+ {\bgroup
+ \mofcolumns\recurselevel
+\OTRSETsetcorrectnofcells\currentcolumnstartcell
+\advance\scratchcounter \minusone
+ \dorecurse\scratchcounter
+ {\OTRSETdoifcellelse\mofcolumns\recurselevel
+ \donothing{\OTRSETsetgridcell\mofcolumns\recurselevel\copy\placeholderboxe}}%
+ \egroup}}
+
+\OTRSEToutput
+ {\dontcomplain % new, get rid of overfull message (to be sorted out)
+ \OTRSETnaturalflush
+ %\OTRSETstartnextpage
+ \OTRSETdoflushfloats % actually belongs in \flushsavedfloats (but goes wrong)
+ \OTRSETcheckfreelines
+ \OTRSETchecksidefloat}
+
+\def\OTRSETinitializefeatures
+ {% number of lines
+ % new: raw
+ \getrawnoflines\textheight\xdef\columnmaxcells{\the\noflines}%
+ % direction
+ \doifelsevalue{\??mc\OTRSETidentifier\c!direction}\v!right
+ {\chardef\columndirection\zerocount}
+ {\chardef\columndirection\plusone}%
+ % balancing
+ \chardef\OTRSETbalancemethod\zerocount
+ \processaction
+ [\getvalue{\??mc\OTRSETidentifier\c!balance}]
+ [ \v!yes=>\chardef\OTRSETbalancemethod\plusone,
+ \v!top=>\chardef\OTRSETbalancemethod\plustwo,
+ \v!bottom=>\chardef\OTRSETbalancemethod\plusthree]}
+
+% keep 'm for a while
+%
+% \installoutput\OTRSETflushpreposttext
+% {\global\setbox\precolumnbox\vbox{\unvbox\normalpagebox}%
+% \ifcarryoverfootnotes \else
+% \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
+% \fi}
+%
+% to be tested on 'boekinhoud' in 'pascal/demo-bbi'
+%
+% junk ! ! ! ! !
+%
+%\installoutput\OTRSETflushpreposttext
+% {\global\setbox\precolumnbox\vbox
+% {\unvbox\normalpagebox
+% \strut\vskip-2\lineheight\strut}% we want a proper depth
+% \ifcarryoverfootnotes \else
+% \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
+% \fi}
+%
+% \starttext
+% \definecolumnset[two][n=2]
+% \startcolumnset[two] \dorecurse{4}{\input tufte } \stopcolumnset
+% \input tufte
+% \startcolumnset[two] \input tufte \stopcolumnset
+% \stoptext
+%
+% \installoutput\OTRSETflushpreposttext
+% {\global\setbox\precolumnbox\vbox{\unvbox\normalpagebox}%
+% \global\dp\precolumnbox\strutdepth
+% \ifcarryoverfootnotes \else
+% \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
+% \fi}
+
+% test:
+%
+% \definecolumnset[two] [n=2,balance=yes]
+% \definecolumnset[three][n=3,balance=yes]
+% \setupcolumnset [two] [1] [lines=10]
+% \setupcolumnset [two] [2] [lines=10]
+%
+% \startcolumnset[two] \dorecurse{14}{\input tufte \par} \stopcolumnset
+% \startcolumnset[three] \dorecurse{12}{\input tufte \par} \stopcolumnset
+%
+% with:
+%
+% \installoutput\OTRSETflushpreposttext
+% {%\ifvoid\normalpagebox
+% % \global\setbox\precolumnbox\vbox{}%
+% %\else
+% \global\setbox\precolumnbox\vbox
+% {\unvcopy\normalpagebox}%
+% \global\setbox\precolumnbox\vbox to \ht\precolumnbox
+% {\box\normalpagebox}%
+% %\fi
+% \global\dp\precolumnbox\strutdepth
+% \ifcarryoverfootnotes \else
+% \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
+% \fi}
+
+% testcase : pascal demo-bbi, paragraaf/aanduiding koppen
+
+\ifx\lastskipinotr\undefined \newskip\lastskipinotr \fi
+
+\installoutput\OTRSETflushpreposttext
+ {\global\setbox\precolumnbox\vbox
+ {\unvbox\normalpagebox
+ \global\lastskipinotr\lastskip}%
+ \ifdim\lastskipinotr>\zeropoint
+ \global\setbox\precolumnbox\hbox
+ {\lower\strutdepth\box\precolumnbox}%
+ \fi
+ \global\dp\precolumnbox\strutdepth
+ \ifcarryoverfootnotes \else
+ \global\setbox\postcolumnbox\vbox{\placebottomnotes}%
+ \fi}
+
+\let\precolumnlines \!!zerocount
+\let\postcolumnlines\!!zerocount
+
+% \def\OTRSEThandlepreposttext
+% {\ifdim\ht\precolumnbox>\zeropoint % new
+% \getnoflines{\ht\precolumnbox}%
+% \edef\precolumnlines{\the\noflines}%
+% \doOTRSETsetgridcells
+% {\copy\placeholderboxe}
+% \plusone\plusone\nofcolumns\noflines
+% {\box\precolumnbox}%
+% \else
+% \let\precolumnlines\!!zerocount
+% \fi
+% \ifdim\ht\postcolumnbox>\zeropoint % new, otherwise empty bottom line
+% \getnoflines{\ht\postcolumnbox}%
+% \edef\postcolumnlines{\the\noflines}%
+% \advance\columnfreecells -\noflines
+% \advance\columnfreecells \plusone
+% \doOTRSETsetgridcells
+% {\copy\placeholderboxe}
+% \plusone\columnfreecells\nofcolumns\noflines
+% {\box\postcolumnbox}%
+% \else
+% \let\postcolumnlines\!!zerocount
+% \fi}
+
+\def\OTRSEThandlepreposttext
+ {\ifdim\ht\precolumnbox>\zeropoint % new
+ \getnoflines{\ht\precolumnbox}%
+ \edef\precolumnlines{\the\noflines}%
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxe}
+ \plusone\plusone\nofcolumns\noflines
+ % normal version (single column set)
+ % {\box\precolumnbox}%
+ % compensated for bodyfont change
+ {\hbox
+ {\OTRSETsetcorrectcellht
+ \raise\scratchdimen\box\precolumnbox}}%
+ \else
+ \let\precolumnlines\!!zerocount
+ \fi
+ \ifdim\ht\postcolumnbox>\zeropoint % new, otherwise empty bottom line
+ \getnoflines{\ht\postcolumnbox}%
+ \edef\postcolumnlines{\the\noflines}%
+ \advance\columnfreecells -\noflines
+ \advance\columnfreecells \plusone
+ \doOTRSETsetgridcells
+ {\copy\placeholderboxe}
+ \plusone\columnfreecells\nofcolumns\noflines
+ {\box\postcolumnbox}%
+ \else
+ \let\postcolumnlines\!!zerocount
+ \fi}
+
+\def\OTRSETchecksidefloat
+ {} % {\sidefloatoutput}
+
+\def\OTRSETfinalsidefloatoutput
+ {}
+
+\def\OTRSETcheckgrid
+ {\topskip1\topskip
+ \ifforcecolumngrid
+ \widowpenalty\zerocount
+ \clubpenalty\zerocount
+ \brokenpenalty\zerocount
+ \fi}
+
+\def\OTRSETcheckinsert
+ {\iflastcolumnfootnotes
+ \ifnum\nofcolumns=\mofcolumns
+ \OTRSETforceinserts
+ \else
+ \OTRSETinhibitinserts
+ \fi
+ \else
+ \OTRSETforceinserts
+ \fi}
+
+\def\OTRSETforceinserts
+ {\enablenotes}
+
+\def\OTRSETinhibitinserts
+ {\disablenotes}
+
+% interface to footnotes
+
+\def\OTRSETassignwidths
+ {%\scratchdimen\makeupwidth
+ \freezetextwidth \scratchdimen\textwidth
+ %
+ \scratchcounter\zerocount
+ \dorecurse\nofcolumns
+ {\doifelsevalue{\??mc\OTRSETidentifier\recurselevel\c!width}\v!fit
+ {\advance\scratchcounter \plusone }
+ {\advance\scratchdimen -\getvalue{\??mc\OTRSETidentifier\recurselevel\c!width}}%
+ \advance\scratchdimen -\getvalue{\??mc\OTRSETidentifier\recurselevel\c!distance}}%
+ \ifcase\scratchcounter\else
+ \divide\scratchdimen \scratchcounter
+ \fi
+ \setgvalue{\??mc\??mc\c!width}{0}%
+ \dorecurse\nofcolumns
+ {\doifelsevalue{\??mc\OTRSETidentifier\recurselevel\c!width}\v!fit
+ {\dimen0=\scratchdimen}
+ {\setgvalue{\??mc\??mc\c!width}{1}%
+ \dimen0=\getvalue{\??mc\OTRSETidentifier\recurselevel\c!width}}%
+ \setxvalue{\??mc\recurselevel\??mc\c!width}{\the\dimen0}}}
+
+\def\OTRSETlocalwidth#1%
+ {\getvalue{\??mc\number#1\??mc\c!width}}
+
+\newbox\placeholderboxa
+\newbox\placeholderboxb
+\newbox\placeholderboxc
+\newbox\placeholderboxd
+\newbox\placeholderboxe
+\newbox\placeholderboxf
+
+\def\columnplaceholder#1#2%
+ {\hbox
+ {\localcolortrue
+ \setbox\scratchbox\hbox to \hsize
+ {\iftracecolumnset \incolortrue \localcolortrue
+ \hskip-.5ex%
+ \startcolor[columnset:#2]\vrule\!!width1ex\!!height.5ex\!!depth.5ex\stopcolor
+ \fi
+ \hss}%
+ \ifcase#1\relax
+ \ht\scratchbox\zeropoint
+ \dp\scratchbox\zeropoint
+ \wd\scratchbox\zeropoint
+ \else
+ \wd\scratchbox\hsize
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \fi
+ \box\scratchbox}}
+
+\definepalet
+ [columnset]
+ [a=cyan,b=green,c=blue,d=red,e=magenta,f=darkgray]
+
+\def\OTRSETsetplaceholders
+ {\global\setbox\placeholderboxa\columnplaceholder0a%
+ \global\setbox\placeholderboxb\columnplaceholder0b%
+ \global\setbox\placeholderboxc\columnplaceholder0c%
+ \global\setbox\placeholderboxd\columnplaceholder0d%
+ \global\setbox\placeholderboxe\columnplaceholder0e%
+ \global\setbox\placeholderboxf\columnplaceholder1f}
+
+\def\doOTRSETshowstatus
+ {\llap{\incolortrue \localcolortrue \tt\tfxx\blue
+ (\the\vsize->\number\columnfirstcell\#\number\columnfreecells)%
+ \hskip\leftskip}}
+
+\def\OTRSETshowstatus
+ {\iftracecolumnset \doOTRSETshowstatus \fi}
+
+% \appendtoks \OTRSETshowstatus \to \everypar
+
+% page contents
+
+\def\OTRSETdopagecontents#1#2% takes two args: \box<n> \unvbox<n>
+ {\vbox to \textheight{\forgetall#1#2\pushproperties}}
+
+\def\OTRSETsomepagefloat {\def\floatmethod{PAGE}\OTRSETsomeslotfloat} % check
+\def\OTRSETsomeherefloat {\def\floatmethod{HERE}\OTRSETsomeslotfloat} % check
+\def\OTRSETsomeelsefloat {\def\floatmethod{HERE}\OTRSETsomeslotfloat} % check
+\def\OTRSETsomefixdfloat {\def\floatmethod{FIXD}\OTRSETsomeslotfloat} % check
+\def\OTRSETsometopfloat {\def\floatmethod{TOPS}\OTRSETsomeslotfloat} % check
+\def\OTRSETsomebottomfloat{\def\floatmethod{BOTS}\OTRSETsomeslotfloat} % check
+
+\def\OTRSETflushfloatbox % nog verder doorvoeren en meer info in marge
+ {\iftestfloatbox\ruledhbox\fi{\box\floatbox}}
+
+\def\OTRSETsomeslotfloat[#1]%
+ {\setbox\floatbox\vbox{\flushfloatbox}%
+ \dp\floatbox\strutdp
+ \@EA\uppercasestring\floatmethod\to\floatmethod
+ \OTRSETstoreincolumnslot\floatmethod\floatbox
+ \doinsertfloatinfo}
+
+% kind of new, looks much like OTRONE, but not entirely
+
+\def\OTRSETdosettopinserts
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts\zerocount
+ \let\totaltopinserted\!!zeropoint
+ \OTRSETdodosettopinserts
+ \ifnum\@@bknbottom=\zerocount
+ \ifnum\@@bknlines>\zerocount
+ \ifdim\totaltopinserted>\zeropoint\relax
+ \dimen0\lineheight
+ \dimen0=\@@bknlines\dimen0
+ \advance\dimen0 \totaltopinserted\relax
+ \ifdim\dimen0>\textheight % \vsize %%%%%%%%% \textheight
+ \showmessage\m!floatblocks8{\@@bknlines}%
+ \vfilll\eject
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \egroup}
+
+\def\OTRSETdodosettopinserts
+ {\ifnum\noffloatinserts<\noftopfloats
+ \dogetfloat
+ \ifdim\topinserted=\zeropoint\relax
+ \topofinserttrue
+ \else
+ \topofinsertfalse
+ \fi
+ \setbox\scratchbox\vbox % kan beter !
+ {\forgetall
+ \iftopofinsert
+ \ifdim\OTRSETtopoffset=\zeropoint
+ \moveongrid[\v!top]
+ \fi
+ \else
+ \betweenfloatblanko % inserts can't look back
+ \fi
+ \flushfloatbox
+ \blank[\@@bkspaceafter]}%
+ \global\advance\topinserted \ht\scratchbox\relax
+ \ifdim\topinserted>\vsize % was \textheight\relax
+ \OTRSETresavebox\floatbox
+ \noffloatinserts\noftopfloats\relax
+ \global\advance\topinserted -\ht\scratchbox
+ \let\OTRSETdodosettopinserts\relax % to be tested
+ \else
+ \xdef\totaltopinserted{\the\topinserted}%
+ \insert\topins{\forgetall\box\scratchbox}% interlineskip ?
+ \ifsomefloatwaiting
+ \advance\noffloatinserts \plusone
+ \else
+ \noffloatinserts\noftopfloats\relax
+ \fi
+ \dofloatflushedinfo
+ \fi
+ \else
+ \ifsomefloatwaiting
+ \showmessage\m!floatblocks6{\the\noftopfloats}%
+ \fi
+ \let\OTRSETdodosettopinserts\relax
+ \fi
+ \OTRSETdodosettopinserts}
+
+\def\OTRSETdosetbotinserts
+ {\bgroup
+ \ifsomefloatwaiting
+ \noffloatinserts\zerocount
+ \OTRSETdodosetbotinserts
+ \fi
+ \egroup}
+
+\def\OTRSETdodosetbotinserts
+ {\ifnum\noffloatinserts<\nofbotfloats\relax
+ \dogetfloat
+ \global\advance\botinserted \ht\floatbox\relax
+ \global\advance\botinserted \dp\floatbox\relax
+ \global\advance\botinserted \floattopskip\relax
+ \ifdim\botinserted<\pagegoal\relax
+ \insert\botins
+ {\forgetall
+ \blank[\@@bkspacebefore]%
+ \flushfloatbox}%
+ \ifsomefloatwaiting
+ \advance\noffloatinserts \plusone
+ \else
+ \noffloatinserts\nofbotfloats
+ \fi
+ \dofloatflushedinfo
+ \else
+ \OTRSETresavebox\floatbox
+ \noffloatinserts\nofbotfloats\relax
+ \fi
+ \global\nofloatpermittedtrue % vgl topfloats s!
+ \else
+ \ifsomefloatwaiting
+ \showmessage\m!floatblocks7{\the\nofbotfloats}%
+ \fi
+ \let\OTRSETdodosetbotinserts\relax
+ \fi
+ \OTRSETdodosetbotinserts}
+
+\let\OTRSETdosetbothinserts\relax
+
+\def\OTRSETdotopinsertions
+ {\ifvoid\topins\else
+ \ifvoid\columntopbox\mofcolumns
+ \columnsettopbox\mofcolumns\box\topins
+ \else
+ \columnsettopbox\mofcolumns\vbox % temp, must be better
+ {\forgetall
+ \offinterlineskip
+ \box\columntopbox\mofcolumns
+ \box\topins}
+ \fi
+ \fi
+ \global\topinserted\zeropoint\relax} % goes away
+
+\def\OTRSETdobotinsertions
+ {\ifvoid\botins \else
+ \columnsetbotbox\mofcolumns\box\botins
+% \else
+% \columnsetbotbox\mofcolumns\vbox % temp, must be better
+% {\forgetall
+% \offinterlineskip
+% \box\botins
+% \box\columnbotbox\mofcolumns}
+ \fi
+ \global\botinserted\zeropoint\relax} % goes away
+
+% set ipv text
+
+% left right 1 2 3 +1 +2 +3
+
+\let\columnleftareas \empty
+\let\columnrightareas\empty
+
+% links rechts => odd, even, n, named
+
+\def\definecolumntextarea
+ {\dotripleempty\dodefinecolumntextarea}
+
+\def\dodefinecolumntextarea[#1][#2][#3]% y=0 is mogelijke en handig !
+ {\ifthirdargument
+ \doifinsetelse{#2}{\v!both,\v!fixed}
+ {\definecolumntextarea[#1][\v!left ][\c!type=#2,#3]%
+ \definecolumntextarea[#1][\v!right][\c!type=#2,#3]}
+ {\doifelse{#2}\v!next
+ {\doifoddpageelse
+ {\definecolumntextarea[#1][\v!right][\c!type=#2,#3]}
+ {\definecolumntextarea[#1][\v!left ][\c!type=#2,#3]}}
+ {\presetlocalframed
+ [\??mt#1#2]%
+ \processaction[#2] % \doglobal voorkomt stack build up
+ [ \v!left=>\doglobal\addtocommalist{#1}\columnleftareas,
+ \v!right=>\doglobal\addtocommalist{#1}\columnrightareas]%
+ \getparameters[\??mt#1#2]
+ [\c!x=1,\c!y=1,\c!nx=1,\c!ny=1,\c!clipoffset=2\lineheight,
+ \c!offset=\v!overlay,\c!strut=\v!no,\c!frame=\v!off,
+ \c!type=#2,\c!page=1,\c!state=\v!stop,#3]}}%
+ \else
+ \definecolumntextarea[#1][\v!next][#2]%
+ \fi}
+
+\def\setupcolumntextarea
+ {\dotripleempty\dosetupcolumntextarea}
+
+\def\dosetupcolumntextarea[#1][#2][#3]%
+ {\ifthirdargument
+ \doifelse{#2}\v!both
+ {\setupcolumntextarea[#1][\v!left ][#3]%
+ \setupcolumntextarea[#1][\v!right][#3]}
+ {\doifelse{#2}\v!next
+ {\doifoddpageelse
+ {\setupcolumntextarea[#1][\v!right][#3]}
+ {\setupcolumntextarea[#1][\v!left][#3]}}
+ {\getparameters[\??mt#1#2][#3]}}%
+ \else
+ \setupcolumntextarea[#1][\v!next][#2]%
+ \fi}
+
+\def\docheckcolumnsetareapage#1#2%
+ {\ifnum\getvalue{\??mt#1\c!page}>\plusone
+ \doifelsevalue{\??mt#1\c!type}\v!fixed
+ {\ifnum\columnsetpage=\getvalue{\??mt#1\c!page}\relax
+ \donetrue\else\donefalse
+ \fi}
+ {\ifnum\columnsetpage<\getvalue{\??mt#1\c!page}\relax
+ \donefalse\else\donetrue
+ \fi}%
+ \else
+ \donetrue
+ \fi}
+
+\def\initializecolumntextareas
+ {\ifodd\realpageno
+ \doinitializecolumntextareas\columnrightareas\v!right
+ \else
+ \doinitializecolumntextareas\columnleftareas\v!left
+ \fi}
+
+\def\doinitializecolumntextareas#1#2%
+ {\def\docommando##1%
+ {\docheckcolumnsetareapage{##1#2}\plusone
+ \ifdone
+ \donefalse
+ \processaction
+ [\getvalue{\??mt##1#2\c!state}]
+ [ \v!start=>\donetrue,
+ \v!repeat=>\donetrue,
+ \s!unknown=>\doperformtest\commalistelement\donetrue\donefalse]%
+ \ifdone\dodoinitializecolumntextareas{##1}{#2}\fi
+ \fi}%
+ \processcommacommand[#1]\docommando}
+
+\def\dodoinitializecolumntextareas#1#2%
+ {\doOTRSETsetgridcells
+ {\copy\placeholderboxd}
+ {\getvalue{\??mt#1#2\c!x }}{\getvalue{\??mt#1#2\c!y }}
+ {\getvalue{\??mt#1#2\c!nx}}{\getvalue{\??mt#1#2\c!ny}}
+ {\copy\placeholderboxd}}
+
+\def\placecolumntextareas
+ {\ifodd\realpageno
+ \doplacecolumntextareas\columnrightareas\v!right
+ \else
+ \doplacecolumntextareas\columnleftareas\v!left
+ \fi}
+
+\def\doplacecolumntextareas#1#2% global ?
+ {\bgroup
+ \forgetall
+ \def\docommando##1%
+ {\docheckcolumnsetareapage{##1#2}\zerocount
+ \ifdone
+ \donefalse
+ \processaction
+ [\getvalue{\??mt##1#2\c!state}]
+ [ \v!start=>\donetrue\doglobal\removefromcommalist{##1}#1,
+ \v!repeat=>\donetrue,
+ \s!unknown=>\doperformtest\commalistelement\donetrue\donefalse]%
+ \ifdone
+ \dodoplacecolumntextareas{##1}{#2}%
+ \else
+ \doglobal\removefromcommalist{##1}#1%
+ \fi
+ \fi}%
+ \processcommacommand[#1]\docommando
+ \egroup}
+
+\def\columntextlastbackspace{\backspace}
+
+% beware, we have clipping offsets of 2\lineheight by default
+
+\def\columntextareaparameter#1%
+ {\csname\??mt\currentcolumntestarea#1\endcsname}
+
+\def\dodoplacecolumntextareas#1#2%
+ {\def\currentcolumntestarea{#1#2}%
+ \!!counta\columntextareaparameter\c!x
+ \!!countb\columntextareaparameter\c!nx
+ \docalculatecolumnsetspan
+ \!!heighta\columntextareaparameter\c!ny\lineheight
+ % wrong
+ % \ifnum\columntextareaparameter\c!y=\zerocount
+ % \advance\!!heighta -\lineheight
+ % \advance\!!heighta \topskip
+ % \fi
+ % \advance\!!heighta -\lineheight % option
+ \ifnum\columntextareaparameter\c!y=\plusone
+ \advance\!!heighta -\lineheight
+ \advance\!!heighta \topskip
+ \fi
+ %
+ \setbox\scratchbox\vbox
+ {\donetrue\localframed
+ [\??mt\currentcolumntestarea]
+ [\c!location=,% new (*)
+ \c!width=\!!widtha,\c!height=\!!heighta,\c!lines=]
+ {\columntextareaparameter\empty}}%
+ \!!counta\columntextareaparameter\c!x
+ \!!countb\columntextareaparameter\c!y
+ \advance\!!countb \columntextareaparameter\c!ny
+ \advance\!!countb \minusone
+ % new (*)
+ \doif{\columntextareaparameter\c!location}\v!depth
+ {\setbox\scratchbox\hbox{\lower\strutdepth\box\scratchbox}%
+ \dp\scratchbox\zeropoint
+ \ht\scratchbox\!!heighta}%
+ %
+ \setbox0\hbox
+ {\ifcase\!!countc
+ \copy\scratchbox % \box
+ \else
+ \clip
+ [ %\c!topoffset=\columntextareaparameter\c!clipoffset,%
+ %\c!bottomoffset=\columntextareaparameter\c!clipoffset,%
+ %\c!leftoffset=\columntextareaparameter\c!clipoffset,%
+ \c!offset=\columntextareaparameter\c!clipoffset,%
+ \c!rightoffset=\zeropoint,%
+ \c!width=\!!widthb,%
+ \c!height=\!!heighta]%
+ {\copy\scratchbox}%
+ \fi}%
+ \OTRSETsetgridcell\!!counta\!!countb\box0
+ \ifcase\!!countc\else
+ \advance\!!counta \columntextareaparameter\c!nx
+ \advance\!!counta -\!!countc
+ \advance\!!widtha -\!!widthb
+ \setbox0\hbox
+ {\hskip-\namedlayoutparameter\v!odd\c!backspace
+ \clip
+ [ %\c!topoffset=\columntextareaparameter\c!clipoffset,%
+ %\c!bottomoffset=\columntextareaparameter\c!clipoffset,%
+ %\c!rightoffset=\columntextareaparameter\c!clipoffset,%
+ \c!offset=\columntextareaparameter\c!clipoffset,%
+ \c!leftoffset=\zeropoint,%
+ \c!width=\!!widtha,%
+ \c!height=\!!heighta,%
+ \c!hoffset=\!!widthb]%
+ {\copy\scratchbox}}%
+ \OTRSETsetgridcell\!!counta\!!countb\box0%
+ \fi}
+
+\def\setupcolumntextareatext
+ {\dotripleempty\dosetupcolumntextareatext}
+
+\long\def\dosetupcolumntextareatext[#1][#2][#3]%
+ {\ifthirdargument
+ \doifelse{#2}\v!both
+ {\setvalue{\??mt#1\v!left }{#3}%
+ \setvalue{\??mt#1\v!right}{#3}}
+ {\doifelse{#2}\v!next
+ {\doifoddpageelse
+ {\setvalue{\??mt#1\v!right}{#3}}%
+ {\setvalue{\??mt#1\v!left }{#3}}}%
+ {\setvalue{\??mt#1#2}{#3}}}%
+ \else
+ \setupcolumntextareatext[#1][\v!next][{#2}]%
+ \fi}
+
+\def\docalculatecolumnsetspan
+ {% \!!counta <= x
+ % \!!countb <= nx
+ % \!!widtha => total width
+ % \!!widthb => left width
+ % \!!countc => left cols
+ \!!widtha\!!countb\textwidth % we assume equal widths
+ \advance\!!countb \!!counta
+ \advance\!!countb \minusone
+ \ifnum\!!countb>\nofcolumns
+ \!!countc\!!countb
+ \advance\!!countc -\nofcolumns
+ \!!countb\nofcolumns
+ \else
+ \!!countc\zerocount
+ \fi
+ \advance\!!counta \plusone
+ \dostepwiserecurse\!!counta\!!countb\plusone
+ {\advance\!!widtha\OTRSETgetparameter\c!distance\recurselevel}%
+ \!!widthb\!!widtha
+ \advance\!!widthb -\!!countc\textwidth
+ \ifodd\realpageno \else % tricky, assumes that we keep there
+ \ifcase\!!countc\else
+ % nog niet ok voor enkel/dubbelzijdig
+ \advance\!!widtha \namedlayoutparameter\v!even\c!backspace
+ \advance\!!widtha \namedlayoutparameter\v!odd \c!backspace
+ \advance\!!widthb \namedlayoutparameter\v!even\c!backspace
+ \dorecurse\!!countc
+ {\advance\!!widtha\OTRSETgetparameter\c!distance\recurselevel}%
+ \fi
+ \fi}
+
+\def\columnsetspanhsize{\textwidth}
+
+\def\setcolumnsetspanhsize#1#2% x nx / uses counta/b
+ {\!!counta#1\!!countb#2\docalculatecolumnsetspan
+ \edef\columnsetspanhsize{\the\!!widtha}}
+
+\def\definecolumnsetspan
+ {\dodoubleempty\dodefinecolumnsetspan}
+
+\def\dodefinecolumnsetspan[#1][#2]%
+ {%\ifsecondargument
+ \defineframedtext
+ [cs:#1]
+ [\c!frame=\v!off,
+ \c!before=,
+ \c!after=,
+ \c!offset=\v!overlay,
+ \c!location=\v!left,
+ \c!linecorrection=\v!off,
+ \c!depthcorrection=\v!off,
+ \c!n=2,
+ \c!nlines=0,
+ \c!indentnext=\v!yes,
+ \c!default=HERE,
+ \c!alternative=\v!a,
+ #2]%
+ %\else
+ % \definecolumnspan[][#1]%
+ }%\fi}
+
+\definecolumnsetspan[\s!default]
+
+\def\setupcolumnsetspan
+ {\dodoubleempty\dosetupcolumnsetspan}
+
+\def\dosetupcolumnsetspan[#1][#2]%
+ {\ifsecondargument
+ \setupframedtexts[cs:#1][#2]%
+ \else
+ \setupcolumnsetspan[\s!default][#1]%
+ \fi}
+
+\def\startcolumnsetspan
+ {\dotripleempty\dostartcolumnsetspan}
+
+%%%%%%%%%%%%%%%% TODO
+
+\def\dostartcolumnsetspan[#1][#2][#3]% [#3] gobbles space
+ {\endgraf % else rubish output if forgotten
+ \vskip \zeropoint % make sure otr is done, otherwise last line problems
+ \bgroup
+ \forgetall
+ \ifnum\columnsetlevel>\zerocount\else
+ % of course we needed a one-column fall back for tm
+ \columnsetspanhsize\hsize
+ \nofcolumns\plusone
+ \mofcolumns\plusone
+ \fi
+ \setupframedtexts[cs:#1]
+ [\c!width=\columnsetspanhsize,
+ \c!linecorrection=\v!off,
+ \c!depthcorrection=\v!off,
+ #2]%
+ % determine widths
+ \!!countc\framedtextparameter{cs:#1}\c!n
+ % \!!countd\numexpr(\nofcolumns-\mofcolumns+\plusone)%
+ \!!countd\nofcolumns
+ % n <= n of columns
+ \ifnum\!!countc>\!!countd \!!countc\!!countd \fi
+ \advance\!!countd -\mofcolumns
+ \advance\!!countd \plusone
+ % n <= n of available columns (alternative a)
+ \doif{\framedtextparameter{cs:#1}\c!alternative}\v!a
+ {\ifnum\!!countc>\!!countd \!!countc\!!countd \fi}%
+ % here it all starts
+ \setcolumnsetspanhsize\mofcolumns\!!countc % a/b used
+ \hsize\columnsetspanhsize
+ \setbox\scratchbox\vbox\bgroup
+ \dostartframedtext[cs:#1][\v!none]% geen nils placement
+ % spoils spacing : \vskip-\struttotal\par\verticalstrut\par
+ \ifnum\columnsetlevel>\zerocount
+ \framedtextparameter{cs:#1}\c!before
+ \fi
+ \def\stopcolumnsetspan{\dostopcolumnsetspan{#1}}}
+
+\def\dostopcolumnsetspan#1%
+ {\par
+ \verticalstrut
+ \kern-2\struttotal
+ \verticalstrut
+ \ifnum\columnsetlevel>\zerocount
+ \doifsomething{\framedtextparameter{cs:#1}\c!after}
+ {\framedtextparameter{cs:#1}\c!after
+ \kern\zeropoint}% otherwise blanks disappear, better be a switch
+ \else
+ \endgraf
+ \fi
+ \dostopframedtext
+ \egroup
+ % frozen keeps grid snapping okay
+ \setbox\scratchbox\frozenhbox to \hsize
+ {\dontcomplain
+ \alignedline{\framedtextparameter{cs:#1}\c!location}\v!middle
+ {\lower\strutdepth\box\scratchbox}}%
+ \dp\scratchbox\zeropoint % else wrong snap insidefloat
+%
+% to be tested first:
+%
+% \setbox\scratchbox\frozenhbox to \hsize
+% {\dontcomplain
+% \chardef\alignstrutmode\zerocount
+% \alignedline{\framedtextparameter{cs:#1}\c!plaats}\v!midden
+% {\box\scratchbox}}%
+%
+ \ifinsidefloat
+ \box\scratchbox
+ \else\ifnum\columnsetlevel>\zerocount
+ % we only set \columnsetspacing when asked for, else bottom problems
+ % don't change this any more (test naw)
+ \chardef\columnslotspacing\framedtextparameter{cs:#1}\c!nlines\relax
+ % todo: nboven/onder & \chardef\columnslotlocation2
+ %\OTRSETstoreincolumnslotHERE\scratchbox
+ \edef\floatmethod{\framedtextparameter{cs:#1}\c!default}%
+ \@EA\uppercasestring\floatmethod\to\floatmethod
+ % todo : \v!here -> here enzovoorts
+ \OTRSETstoreincolumnslot\floatmethod\scratchbox
+ % watch out: no \dochecknextindentation{tag}
+ \checknextindentation[\framedtextparameter{cs:#1}\c!indentnext]
+ \else
+ % of course we needed a one-column fall back for tm; brrr, the box has now too
+ % much height (try \ruledvbox); don't change this without testing techniek
+ \scratchdimen\ht\scratchbox
+ \advance\scratchdimen-\strutdp
+ \ht\scratchbox\scratchdimen
+ \framedtextparameter{cs:#1}\c!before
+ \snaptogrid\vbox{\box\scratchbox}%
+ \framedtextparameter{cs:#1}\c!after
+ \fi\fi
+ \egroup
+ \endgraf}
+
+% \startcolumnset[two]
+% \input tufte
+% \startcolumnsetspan[two][width=20cm,location=middle] \input tufte \stopcolumnsetspan
+% \startcolumnsetspan[two][default=btlr] \input tufte \stopcolumnsetspan
+% \input tufte \par
+% \input tufte \par
+% \startcolumnsetspan[two] \emptylines[5] \stopcolumnsetspan
+% \startcolumnsetspan[two] \input tufte \stopcolumnsetspan
+% \stopcolumnset
+
+\protect \endinput
+
+% extreme examples (1)
+%
+% \setupfloats[numbering=nocheck]
+%
+% \definecolumnset [first] [n=2,start=0]
+% \definecolumnset [next] [n=2,start=3]
+%
+% \setuptexttexts[\vbox to \textheight{\topskipcorrection \hsize\makeupwidth left \hfill right\vfill}]
+%
+% \setuphead[chapter][text=empty]
+%
+% \starttext
+%
+% \startcolumnset[first,next]
+% \placefigure[btrl]{}{}
+% \placefigure[tblr]{}{}
+% \chapter{thuan} \dorecurse{25}{\recurselevel: \input thuan \endgraf}
+% \stopcolumnset
+%
+% \startcolumnset[first,next]
+% \chapter{thuan} \dorecurse{25}{\input thuan \endgraf\placefigure{}{}}
+% \stopcolumnset
diff --git a/Master/texmf-dist/tex/context/base/page-sid.tex b/Master/texmf-dist/tex/context/base/page-sid.tex
new file mode 100644
index 00000000000..882464fc375
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-sid.tex
@@ -0,0 +1,867 @@
+%D \module
+%D [ file=page-sid,
+%D version=2000.10.20,
+%D title=\CONTEXT\ OTR Macros,
+%D subtitle=Side Floats,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context OTR Macros / Side Floats}
+
+\unprotect
+
+% These macro deal with side floats. We started with Daniel
+% Comenetz macros as published in TUGBoat Volume 14 (1993),
+% No.\ 1: Anchored Figures at Either Margin. I extended and
+% patched the macros to suite our needs which results in a
+% messy module. Therefore, this module badly needs an update
+% because it's now a mixture of old and new macros.
+
+% afhankelijke variabelen
+%
+% \overgap vervangen door \floatsidetopskip
+% \sidegap vervangen door \floatsideskip
+% \undergap vervangen door \floatsidebottomskip
+%
+% \prskp vervangen door \ctxparskip
+
+% toegevoegde macro's/aanroepen
+%
+% \logsidefloat : loginformatie
+% \flushsidefloats : nodig voor koppen
+
+% recente wijzigingen:
+%
+% namen aangepast: \float... enz. i.p.v. \pic
+
+% Pas op: \EveryPar{\EveryPar{}\margetitel{whatever}}
+% \plaatsfiguur[links]{}{} moet goed gaan. In dat geval
+% begint de tekst terecht wat lager.
+
+\newdimen\sidefloatheight % includes the topskip
+\newdimen\sidefloatwidth
+\newdimen\sidefloathsize
+\newdimen\sidefloatshift
+\newdimen\sidefloatextrashift
+\newdimen\sidefloatvsize \def\nofloatvsize{-1pt }
+\newdimen\sidefloatprogress
+\newdimen\sidefloatpagetotal
+
+\newbox\floatbottom
+
+\newcount\sidefloatsidelines
+\newcount\sidefloatlinesdone
+
+% 1 = backspace
+% 2 = leftedge
+% 3 = leftmargin
+% 4 = leftside
+% 5 = rightside
+% 6 = rightmargin
+% 7 = rightedge
+% 8 = cutspace
+
+\chardef\sidefloattype\zerocount
+
+\def\backspacefloat {\global\chardef\sidefloattype1 \putsidefloat}
+\def\leftedgefloat {\global\chardef\sidefloattype2 \putsidefloat}
+\def\leftmarginfloat {\global\chardef\sidefloattype3 \putsidefloat}
+\def\leftfloat {\global\chardef\sidefloattype4 \putsidefloat}
+\def\rightfloat {\global\chardef\sidefloattype5 \putsidefloat}
+\def\rightmarginfloat {\global\chardef\sidefloattype6 \putsidefloat}
+\def\rightedgefloat {\global\chardef\sidefloattype7 \putsidefloat}
+\def\cutspacefloat {\global\chardef\sidefloattype8 \putsidefloat}
+
+\newif\ifroomforfloat
+\newif\iffloatshort
+\newif\iffloatflag
+\newif\iffloatrighteqo
+\newif\iffloatlefteqo
+
+\newdimen\sidefloatleftskip
+\newdimen\sidefloatrightskip
+\newdimen\sidefloatmaximum
+
+\def\checksidefloatshift
+ {\ifdim\sidefloatmaximum>\zeropoint
+ \ifcase\sidefloattype
+ % invalid
+ \or
+ % backspace
+ \or
+ \global\sidefloatshift-\sidefloatmaximum
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance
+ \or
+ \global\sidefloatshift-\sidefloatmaximum
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance
+ \or
+ % left
+ \or
+ % right
+ \or
+ \global\sidefloatshift-\sidefloatmaximum
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance
+ \or
+ \global\sidefloatshift-\sidefloatmaximum
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftedgedistance \rightedgedistance
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmarginwidth \rightmarginwidth
+ \global\advance\sidefloatshift-\rightorleftpageaction \leftmargindistance \rightmargindistance
+ \or
+ % cutspace
+ \fi
+ \fi}
+
+\def\setsidefloatskips
+ {\global\sidefloatrightskip\zeropoint
+ \global\sidefloatleftskip \zeropoint
+ \ifcase\sidefloattype
+ \or % backspace
+ \global \sidefloatleftskip \rightorleftpageaction \backspace \cutspace
+ \or % leftedge
+ \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance
+ \global\advance\sidefloatleftskip \rightorleftpageaction \leftmarginwidth\rightmarginwidth
+ \global\advance\sidefloatleftskip \rightorleftpageaction \leftedgedistance\rightedgedistance
+ \or % leftmargin
+ \global \sidefloatleftskip \rightorleftpageaction \leftmargindistance\rightmargindistance
+ \or % leftside
+ \or % rightside
+ \or % rightmargin
+ \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance
+ \or % rightedge
+ \global \sidefloatrightskip\rightorleftpageaction \rightmargindistance\leftmargindistance
+ \global\advance\sidefloatrightskip\rightorleftpageaction \rightmarginwidth\leftmarginwidth
+ \global\advance\sidefloatrightskip\rightorleftpageaction \rightedgedistance\leftedgedistance
+ \or % cutspace
+ \global \sidefloatrightskip\rightorleftpageaction \cutspace\backspace
+ \fi
+ \ifdim\sidefloatrightskip>\zeropoint
+ \doglobal\advance\sidefloatrightskip\rightskip
+ \fi
+ \ifdim\sidefloatleftskip>\zeropoint
+ \doglobal\advance\sidefloatleftskip\leftskip
+ \fi}
+
+% eq is still crap
+
+\ifx\normalleqno\undefined
+
+ \let\floatrighteqo=\eqno
+ \let\floatleftleqo=\leqno
+
+\else
+
+ \let\floatrighteqo=\normaleqno
+ \let\floatleftleqo=\normalleqno
+
+\fi
+
+% Watch it even more! In inner, gaat't mis omdat daar
+% pagetotal enz niet zijn aangepast. Inner kan overigens niet
+% betrouwbaar worden getest!
+
+% \def\flushsidefloats%
+% {\par
+% \sidefloatprogress=\sidefloatvsize
+% \advance\sidefloatprogress by -\pagetotal
+% \ifdim\sidefloatprogress>\zeropoint
+% \witruimte % nog checken op interferentie
+% \kern\sidefloatprogress
+% \fi
+% \global\sidefloatvsize=\nofloatvsize
+% \global\floatflagfalse}
+%
+% no, too buggy, leads to top of page crap
+%
+%\def\flushsidefloats
+% {\par
+% \dochecksidefloat
+% \scratchcounter=-\hangafter
+% \dorecurse{\scratchcounter}{\strut\hfill\strut\par}}
+%
+%\def\flushsidefloats
+% {\par
+% \!!heighta\sidefloatvsize
+% \advance\!!heighta -\pagetotal
+% \ifdim\!!heighta>\zeropoint
+% % to be checked for interference
+% \witruimte
+% % will be option
+% \getnoflines\!!heighta
+% \!!heighta\noflines\lineheight
+% % so far for option
+% \kern\!!heighta
+% \fi
+% % == \forgetsidefloats
+% \global\sidefloatvsize\nofloatvsize
+% \global\floatshortfalse
+% \global\floatflagfalse}
+
+% \def\flushsidefloats
+% {\par
+% \!!heighta\sidefloatvsize
+% \advance\!!heighta -\pagetotal
+% \ifdim\!!heighta>\zeropoint
+% % to be checked for interference
+% \witruimte
+% % will be option
+% \getnoflines\!!heighta
+% \!!heighta\noflines\lineheight
+% % so far for option
+% \ifdim\sidefloatbottomskip>\zeropoint\relax
+% \ifdim\!!heighta>\sidefloatbottomskip
+% \advance\!!heighta-\sidefloatbottomskip
+% \kern\!!heighta
+% \vskip\sidefloatbottomskip
+% \else
+% \kern\!!heighta
+% \fi
+% \else
+% \kern\!!heighta
+% \fi
+% \fi
+% % == \forgetsidefloats
+% \global\sidefloatvsize\nofloatvsize
+% \global\floatshortfalse
+% \global\floatflagfalse}
+
+\newif\iftracesidefloats
+
+\def\flushsidefloats
+ {\par
+ \!!heighta\sidefloatvsize
+ \advance\!!heighta -\pagetotal
+ \ifnum\!!heighta>\zeropoint
+ \global\advance\sidefloatvsize -\sidefloatbottomskip
+ \ifdim\!!heighta>\zeropoint
+ \bgroup
+ \let\flushsidefloats\relax
+ \forgetall
+ \doloop
+ {\strut
+ \iftracesidefloats
+ \color[darkgray]%
+ {\baselinerulefalse
+ \boxrulewidth.5\points
+ \ruledhbox{\strut\kern\sidefloatwidth}}%
+ \fi
+ \par
+ \!!heighta\sidefloatvsize
+ \advance\!!heighta -\pagetotal
+ \ifdim\!!heighta>\zeropoint
+ \ifnum\recurselevel>\plushundred
+ \exitloop
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \egroup
+ \ifdim\parskip>\zeropoint
+ \ifdim\sidefloatbottomskip>\parskip
+ \nowhitespace
+ \vskip\sidefloatbottomskip
+ \fi
+ \fi
+ \else\ifdim\sidefloatbottomskip>\parskip
+ \vskip\sidefloatbottomskip
+ \fi\fi
+ \fi
+ % not entirely the same as \forgetsidefloats
+ \global\sidefloatvsize\nofloatvsize
+ % \global\sidefloatsidelines\zerocount % no, we flush before a side float
+ \global\floatshortfalse % so this will get lost
+ % also here if used at all \global\holdinginserts\zerocount
+ \global\floatflagfalse}
+
+\def\flushsidefloatsafterpar
+ {\xdef\oldpagetotal{\the\pagetotal}%
+ \gdef\checksidefloat
+ {\dochecksidefloat
+ \ifdim\oldpagetotal=\pagetotal \else
+ \global\let\checksidefloat\dochecksidefloat
+ \flushsidefloats
+ \global\sidefloatsidelines\zerocount % here !
+ \fi}}
+
+\def\forgetsidefloats
+ {\global\sidefloatvsize\nofloatvsize
+ \global\sidefloatsidelines\zerocount
+ % also here if used at all \global\holdinginserts\zerocount
+ \global\floatshortfalse
+ \global\floatflagfalse}
+
+\let\logsidefloat=\relax
+
+\def\pushpenalties % needed ? and right
+ {\widowpenalty\plusone
+ \clubpenalty\plustwo
+ \brokenpenalty\plusone
+ \let\pushpenalties\relax
+ \edef\poppenalties
+ {\widowpenalty \the\widowpenalty
+ \clubpenalty \the\clubpenalty
+ \brokenpenalty\the\brokenpenalty
+ \let\poppenalties\relax}}
+
+% shouldn;t that be:
+%
+% \def\pushpenalties % needed?
+% {\let\pushpenalties\relax
+% \edef\poppenalties
+% {\widowpenalty \the\widowpenalty
+% \clubpenalty \the\clubpenalty
+% \brokenpenalty\the\brokenpenalty
+% \let\poppenalties\relax}%
+% \widowpenalty\plusone
+% \clubpenalty\plustwo
+% \brokenpenalty\plusone}
+
+\let\poppenalties=\relax
+
+\def\restorepenalties
+ {\ifnum\outputpenalty=\!!tenthousand\else
+ \penalty\outputpenalty
+ \fi}
+
+\def\sidefloatoutput
+ {\iffloatshort
+ \unvbox\normalpagebox
+ \setbox\floatbottom\lastbox
+ \ifdim\wd\floatbottom>\sidefloathsize
+ \penalty-201
+ \box\floatbottom
+ \else
+ \ifvoid\floatbottom
+ \else
+ \restoreleftindent
+ \ifdim\wd\floatbottom<\sidefloathsize
+ \parskip\zeropoint
+ %\noindent
+ \vadjust{\penalty\minusone}%
+ \iffloatlefteqo
+ \global\floatlefteqofalse
+ \else
+ \global\advance\sidefloathsize -\wd\floatbottom
+ \iffloatrighteqo
+ \global\floatrighteqofalse
+ \else
+ \global\divide\sidefloathsize \plustwo
+ \fi
+ \hskip\sidefloathsize
+ \fi
+ \fi
+ \box\floatbottom
+ \restorepenalties
+ \fi
+ \fi
+ % why was this \global\holdinginserts\zerocount
+ \global\floatshortfalse
+ \else
+ \finalsidefloatoutput % new
+ \global\sidefloatvsize\nofloatvsize
+ \global\sidefloatsidelines\zerocount
+ % we can end up in fig lock, so \global\holdinginserts\zerocount here too ?
+ \poppenalties
+ \fi}
+
+\def\finalsidefloatoutput% new
+ {\finaloutput\unvbox\normalpagebox}
+
+\def\restoreleftindent
+ {\relax \ifnum\sidefloattype>4 \else
+ \parskip\zeropoint % here ?
+ \ifdim\sidefloatwidth>\zeropoint % new, see prikkels
+ \noindent
+ \vadjust{\penalty\minusone}%
+ \hskip\sidefloatwidth
+ %\else
+ % we have a margin or edge float
+ \fi
+ \fi}
+
+\ifx\normaleqno\undefined
+
+ \def\normaleqno
+ {\iffloatshort
+ \global\floatrighteqotrue
+ \fi
+ \floatrighteqo}
+
+\else
+
+ \def\eqno
+ {\iffloatshort
+ \global\floatrighteqotrue
+ \fi
+ \floatrighteqo}
+
+\fi
+
+% \def\putsidefloat#1% grid (4) is rather experimental
+% {\par
+% \witruimte
+% % moved here dec 2001
+% {\everypar\emptytoks\forgetall\verticalstrut\vskip-\struttotal}% moved
+% \checksidefloatshift
+% \ifdim\sidefloatshift=\zeropoint \relax
+% \ifnum\sidefloattype=4
+% \global\advance\sidefloatshift\sidefloatextrashift
+% \global\sidefloatextrashift\zeropoint
+% \else\ifnum\sidefloattype=5
+% \global\advance\sidefloatshift\sidefloatextrashift
+% \global\sidefloatextrashift\zeropoint
+% \fi\fi
+% \else
+% \ifnum\sidefloattype<4
+% \global\chardef\sidefloattype4
+% \else\ifnum\sidefloattype>5
+% \global\chardef\sidefloattype5
+% \fi\fi
+% \fi
+% \previoussidefloat
+% \stallsidefloat
+% %\global\setbox\floatbox\hbox
+% % {\ifmarginfloat\else\ifrightfloat\else\kern\sidefloatleftshift\fi\fi
+% % \hskip\ifrightfloat-\sidefloatextrashift\else\sidefloatshift\fi
+% % \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}%
+% % \kern\ifrightfloat\sidefloatshift\else-\sidefloatextrashift\fi
+% % \ifmarginfloat\else\ifrightfloat\kern\sidefloatrightshift\fi\fi}%
+% \global\setbox\floatbox\hbox % no \hskip, but \kern here
+% {\ifnum\sidefloattype=4
+% \hskip\sidefloatleftshift
+% \else\ifnum\sidefloattype=1
+% \hskip\sidefloatleftshift
+% \fi\fi
+% \ifnum\sidefloattype>4
+% \hskip-\sidefloatextrashift
+% \else
+% \hskip\sidefloatshift
+% \fi
+% \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}%
+% \ifnum\sidefloattype>4
+% \kern\sidefloatshift
+% \else
+% \kern-\sidefloatextrashift
+% \fi
+% \ifnum\sidefloattype=8
+% \kern\sidefloatrightshift
+% \else\ifnum\sidefloattype=5
+% \kern\sidefloatrightshift
+% \fi\fi}%
+% \ifnum\sidefloatalign=4
+% \getnoflines{\ht\floatbox}%
+% \scratchdimen\noflines\lineheight
+% \advance\scratchdimen-\strutdepth
+% \getrawnoflines\sidefloattopskip
+% \advance\scratchdimen\noflines\lineheight
+% % todo: maybe rounding problem here
+% % \global\setbox\floatbox\hbox{\lower\lineheight\box\floatbox}%
+% \global\setbox\floatbox\hbox{\lower\strutdepth\box\floatbox}%
+% \global\ht\floatbox\scratchdimen
+% \global\dp\floatbox\zeropoint
+% \fi
+% \ifcase\sidefloatalign \else
+% \global\sidefloattopskip\zeropoint
+% \fi
+% \scratchdimen
+% \ifnum\sidefloattype<4
+% \sidefloattopskip
+% \else\ifnum\sidefloattype>5
+% \sidefloattopskip
+% \else
+% \zeropoint
+% \fi\fi
+% % the top of the box is at the previous baseline
+% \ifcase\sidefloatalign
+% % 0 normal
+% \advance\scratchdimen\strutdepth % == \sidefloattopoffset
+% \or % 1 height
+% \advance\scratchdimen\strutdepth % == \sidefloattopoffset
+% \or % 2 line
+% \or % 3 depth
+% \advance\scratchdimen\lineheight
+% \advance\scratchdimen\strutdepth
+% \or % 4 grid
+% \scratchdimen\zeropoint
+% \fi
+% % new
+% \global\sidefloatlinesdone\zerocount
+% \ifnum\sidefloatsidelines>\zerocount
+% \advance\scratchdimen\sidefloatsidelines\lineheight
+% \fi
+% % new
+% \global\setbox\floatbox\hbox
+% {\vbox{\vskip\scratchdimen\nointerlineskip\box\floatbox}}%
+% \ifnum\sidefloattype<4
+% \global\sidefloattopskip\zeropoint
+% \else\ifnum\sidefloattype>5
+% \global\sidefloattopskip\zeropoint
+% \fi\fi
+% \global\sidefloatdownshift\zeropoint
+% \measuresidefloat
+% \ifroomforfloat \else
+% \tosssidefloat
+% \measuresidefloat
+% \stallsidefloat
+% \fi
+% \setsidefloat}
+
+% externfiguur -> grid =ja|hoogte|diepte|halveregel|passend -> helemaal in details
+% stelplaatsblokin -> zijuitlijnen=hoogte|diepte|regel|halveregel|grid -> halveregel in 'details'
+
+\def\putsidefloat#1% grid (4) is rather experimental
+ {\par
+ \whitespace
+ % moved here dec 2001
+ {\everypar\emptytoks\forgetall\verticalstrut\vskip-\struttotal}% moved
+ \checksidefloatshift
+ \ifdim\sidefloatshift=\zeropoint \relax
+ \ifnum\sidefloattype=4
+ \global\advance\sidefloatshift\sidefloatextrashift
+ \global\sidefloatextrashift\zeropoint
+ \else\ifnum\sidefloattype=5
+ \global\advance\sidefloatshift\sidefloatextrashift
+ \global\sidefloatextrashift\zeropoint
+ \fi\fi
+ \else
+ \ifnum\sidefloattype<4
+ \global\chardef\sidefloattype4
+ \else\ifnum\sidefloattype>5
+ \global\chardef\sidefloattype5
+ \fi\fi
+ \fi
+ \previoussidefloat
+ \stallsidefloat
+ %\global\setbox\floatbox\hbox
+ % {\ifmarginfloat\else\ifrightfloat\else\kern\sidefloatleftshift\fi\fi
+ % \hskip\ifrightfloat-\sidefloatextrashift\else\sidefloatshift\fi
+ % \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}%
+ % \kern\ifrightfloat\sidefloatshift\else-\sidefloatextrashift\fi
+ % \ifmarginfloat\else\ifrightfloat\kern\sidefloatrightshift\fi\fi}%
+ \global\setbox\floatbox\hbox % no \hskip, but \kern here
+ {\ifnum\sidefloattype=4
+ \hskip\sidefloatleftshift
+ \else\ifnum\sidefloattype=1
+ \hskip\sidefloatleftshift
+ \fi\fi
+ \ifnum\sidefloattype>4
+ \hskip-\sidefloatextrashift
+ \else
+ \hskip\sidefloatshift
+ \fi
+ \vbox{#1\ifnum\sidefloatalign=4 \removedepth\fi}%
+ \ifnum\sidefloattype>4
+ \kern\sidefloatshift
+ \else
+ \kern-\sidefloatextrashift
+ \fi
+ \ifnum\sidefloattype=8
+ \kern\sidefloatrightshift
+ \else\ifnum\sidefloattype=5
+ \kern\sidefloatrightshift
+ \fi\fi}%
+ \ifnum\sidefloatalign=4
+ \getnoflines{\ht\floatbox}%
+ \scratchdimen\noflines\lineheight
+ \advance\scratchdimen-\strutdepth
+ \getrawnoflines\sidefloattopskip
+ \advance\scratchdimen\noflines\lineheight
+ % todo: maybe rounding problem here
+ % \global\setbox\floatbox\hbox{\lower\lineheight\box\floatbox}%
+ \global\setbox\floatbox\hbox{\lower\strutdepth\box\floatbox}%
+ \global\ht\floatbox\scratchdimen
+ \global\dp\floatbox\zeropoint
+ \fi
+ \ifcase\sidefloatalign \else
+ \global\sidefloattopskip\zeropoint
+ \fi
+ \scratchdimen
+ \ifnum\sidefloattype<4
+ \sidefloattopskip
+ \else\ifnum\sidefloattype>5
+ \sidefloattopskip
+ \else
+ \zeropoint
+ \fi\fi
+ % the top of the box is at the previous baseline
+ \ifcase\sidefloatalign
+ % 0 normal
+ \advance\scratchdimen\strutdepth % == \sidefloattopoffset
+ \or % 1 height
+ \advance\scratchdimen\strutdepth % == \sidefloattopoffset
+ \or % 2 line
+ \or % 3 depth
+ \advance\scratchdimen\lineheight
+ \advance\scratchdimen\strutdepth
+ \or % 4 grid
+ \scratchdimen\zeropoint
+ \or
+ \advance\scratchdimen\strutheight
+ \fi
+ % new
+ \global\sidefloatlinesdone\zerocount
+ \ifnum\sidefloatsidelines>\zerocount
+ \advance\scratchdimen\sidefloatsidelines\lineheight
+ \fi
+ % new
+ \global\setbox\floatbox\hbox
+ {\vbox
+ {\vskip\scratchdimen
+ \nointerlineskip
+ \box\floatbox
+ \ifnum\sidefloatalign=5 \vskip-\lineheight \fi}}%
+ \ifnum\sidefloattype<4
+ \global\sidefloattopskip\zeropoint
+ \else\ifnum\sidefloattype>5
+ \global\sidefloattopskip\zeropoint
+ \fi\fi
+ \global\sidefloatdownshift\zeropoint
+ \measuresidefloat
+ \ifroomforfloat \else
+ \tosssidefloat
+ \measuresidefloat
+ \stallsidefloat
+ \fi
+ \setsidefloat}
+
+\def\progresssidefloat
+ {\sidefloatprogress\sidefloatvsize
+ \iffloatflag
+ \advance\sidefloatprogress -\sidefloatpagetotal
+ \global\floatflagfalse
+ \else
+ \advance\sidefloatprogress -\pagetotal
+ \fi}
+
+\def\tosssidefloat
+ {\vfill\eject}
+
+\def\measuresidefloat
+ {\global\floatflagtrue
+ \global\sidefloatpagetotal \pagetotal % global
+ \ifnum\sidefloattype<4
+ \global \sidefloatwidth \zeropoint
+ \else\ifnum\sidefloattype>5
+ \global \sidefloatwidth \zeropoint
+ \else
+ \global \sidefloatwidth \wd\floatbox
+ \global\advance\sidefloatwidth \floatsideskip
+ \fi\fi
+ \ifdim\sidefloatwidth<\zeropoint
+ \global\sidefloatwidth\zeropoint
+ \fi
+ \global \sidefloathsize \hsize
+ \global\advance\sidefloathsize -\sidefloatwidth
+ \global \sidefloatheight \ht\floatbox
+ \global\advance\sidefloatheight \dp\floatbox
+ \global\advance\sidefloatheight \sidefloattopskip
+ \global \sidefloatvsize \sidefloatheight
+ \global\advance\sidefloatvsize \sidefloatpagetotal
+ \dimen0\sidefloatvsize
+ \dimen2\pagegoal
+ \relax
+ \ifcase\sidefloatmethod
+ % method 0 : raw
+ \or
+ % method 1 : safe
+ \dimen2 .99\pagegoal
+ \or
+ % method 2 : tight
+ \advance\dimen0 -\onepoint
+ \fi
+ \relax % really needed ! ! ! !
+ \ifdim\dimen0>\dimen2
+ \global\roomforfloatfalse
+ \else
+ \dimen0=\pagegoal
+ \advance\dimen0 -\sidefloatvsize
+ \ifdim\dimen0<\sidefloatbottomskip
+ \global\advance\sidefloatvsize \dimen0
+ \global\floatshorttrue
+ \pushpenalties
+ % why was this \global\holdinginserts\plusone
+ \else
+ \global\advance\sidefloatvsize \sidefloatbottomskip
+ \global\floatshortfalse
+ \fi
+ \global\roomforfloattrue
+ \fi}
+
+\def\setsidefloat% nilling everypar saves time and redudant pos's
+ {% removed here dec 2001
+ % {\everypar\emptytoks\forgetall\verticalstrut\vskip-\struttotal}%
+ \ifnum\sidefloattype=4 \kern\sidefloattopskip \fi
+ \ifnum\sidefloattype=5 \kern\sidefloattopskip \fi
+ \edef\presidefloatdepth{\the\prevdepth}%
+ \nointerlineskip
+ \bgroup
+ \everypar\emptytoks
+ \parskip\zeropoint
+ %\checksidefloatshift
+ \setsidefloatskips
+ \logsidefloat
+ \relax
+ \ifcase\sidefloattype
+ % invalid
+ \or % backspace
+ \noindent\llap{\rlap{\box\floatbox}\hskip\sidefloatleftskip}\hfill
+ \or % leftedge
+ \noindent\llap{\box\floatbox\hskip\sidefloatleftskip}\hfill
+ \or % leftmargin
+ \noindent\llap{\box\floatbox\hskip\sidefloatleftskip}\hfill
+ \or % leftside
+ \noindent\box\floatbox\hfill
+ \or % rightside
+ \hfill\box\floatbox
+ \or % rightmargin
+ \hfill\rlap{\hskip\sidefloatrightskip\box\floatbox}%
+ \or % rightedge
+ \hfill\rlap{\hskip\sidefloatrightskip\box\floatbox}%
+ \or % cutspace
+ \hfill\rlap{\hskip\sidefloatrightskip\llap{\box\floatbox}}%
+ \fi
+ \egroup
+ \par
+ \kern-\sidefloatheight
+ \penalty10001 % oeps, this will change
+ \normalbaselines
+ \prevdepth\presidefloatdepth
+ % \noindent
+ \resetsidefloatparagraph
+ \ignorespaces} % not really needed
+
+\newcount\sidefloatparagraph
+
+\def\iffirstsidefloatparagraph
+ {\ifcase\sidefloatparagraph\or}
+
+% without sidefloat lines
+%
+% \def\setsidefloatparagraph
+% {%\advance\sidefloatprogress \sidefloatbottomskip
+% %\!!counta\sidefloatprogress
+% \scratchdimen\sidefloatprogress
+% \advance\scratchdimen \strutht
+% \advance\scratchdimen -\roundingeps % new, needed in prikkels, prevent rounding errors
+% \!!counta\scratchdimen
+% \divide\!!counta \baselineskip
+% \ifnum\!!counta>0
+% \hangindent \ifnum\sidefloattype>4 -\fi\sidefloatwidth
+% \hangafter-\!!counta
+% \fi
+% \global\advance\sidefloatparagraph \plusone
+% \iftracesidefloats
+% \hskip-\sidefloatwidth
+% \color[darkgray]%
+% {\vrule\!!height.5\points\!!depth.5\points\!!width\sidefloatwidth
+% %\hskip-.25\bodyfontsize\showstruts\strut\hskip.25\bodyfontsize}%
+% \llap{\showstruts\strut\hskip.25\bodyfontsize}}%
+% \fi}
+
+\def\setsidefloatparagraph
+ {%\advance\sidefloatprogress \sidefloatbottomskip
+ %\!!counta\sidefloatprogress
+ \scratchdimen\sidefloatprogress
+ \advance\scratchdimen \strutht
+ \advance\scratchdimen -\roundingeps % new, needed in prikkels, prevent rounding errors
+ \!!counta\scratchdimen
+ \divide\!!counta \baselineskip\relax
+ \ifnum\!!counta>0
+ % new from here
+ \ifcase\sidefloatsidelines\else
+ \ifcase\sidefloatlinesdone
+ \global\sidefloatlinesdone\!!counta
+ \else
+ \scratchcounter\sidefloatlinesdone
+ \advance\scratchcounter-\!!counta
+ \global\advance\sidefloatsidelines-\scratchcounter
+ \fi
+ \fi
+ \ifnum\sidefloatsidelines>\zerocount
+ \scratchtoks\emptytoks
+ \scratchcounter\sidefloatsidelines
+ \scratchdimen\hsize
+ \advance\scratchdimen-\sidefloatwidth
+ \dorecurse\sidefloatsidelines
+ {\appendtoks \zeropoint \hsize \to \scratchtoks}%
+ \ifnum\!!counta>\sidefloatsidelines
+ \advance\!!counta -\sidefloatsidelines\relax
+ \advance\scratchcounter\!!counta
+ \dorecurse\!!counta
+ {\ifnum\sidefloattype>4
+ \appendtoks \zeropoint \scratchdimen \to \scratchtoks
+ \else
+ \appendtoks \sidefloatwidth \scratchdimen \to \scratchtoks
+ \fi}%
+ \fi
+ \advance\scratchcounter \plusone
+ \parshape \scratchcounter \the\scratchtoks \zeropoint \hsize\relax
+ \else
+ % new till here
+ \hangindent \ifnum\sidefloattype>4 -\fi\sidefloatwidth
+ \hangafter-\!!counta
+ \fi
+ \fi
+ \global\advance\sidefloatparagraph \plusone
+ \iftracesidefloats
+ \hskip-\sidefloatwidth
+ \color[darkgray]%
+ {\vrule\!!height.5\points\!!depth.5\points\!!width\sidefloatwidth
+ %\hskip-.25\bodyfontsize\showstruts\strut\hskip.25\bodyfontsize}%
+ \llap{\showstruts\strut\hskip.25\bodyfontsize}}%
+ \fi}
+
+\def\resetsidefloatparagraph
+ {\global\sidefloatparagraph\zerocount }
+
+\def\dochecksidefloat
+ {\progresssidefloat
+ \ifdim\sidefloatprogress>\zeropoint
+ \setsidefloatparagraph
+ \else
+ \resetsidefloatparagraph
+ \fi
+ \parskip\ctxparskip}
+
+\def\checksidefloat
+ {\dochecksidefloat}
+
+\def\synchronizesidefloats
+ {\ifinner \else \checksidefloat \fi}
+
+\def\doadjustsidefloatdisplaylines
+ {\par
+ \vskip-\parskip
+ \noindent
+ \ignorespaces}
+
+\def\adjustsidefloatdisplaylines
+ {\aftergroup\doadjustsidefloatdisplaylines}
+
+\def\previoussidefloat
+ {\progresssidefloat
+ \ifdim\sidefloatprogress>\zeropoint \relax
+ \iffloatshort
+ \global\floatshortfalse
+ \tosssidefloat
+ \else
+ \kern\sidefloatprogress
+ \fi
+ \fi}
+
+\def\stallsidefloat
+ {\!!counta\pageshrink
+ \divide\!!counta \baselineskip
+ \advance\!!counta \plusone
+ \parskip\zeropoint
+ \dorecurse\!!counta{\line{}}
+ \kern-\!!counta\baselineskip
+ \penalty\zerocount }
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/page-spr.tex b/Master/texmf-dist/tex/context/base/page-spr.tex
new file mode 100644
index 00000000000..c90e9cf0f8b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-spr.tex
@@ -0,0 +1,104 @@
+%D \module
+%D [ file=page-spr,
+%D version=2002.11.11,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Spreading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Page Macros / Spreading}
+
+% This module is experimental and not yet official!
+
+\unprotect
+
+\newbox\spreadbox
+\newif \ifinspread
+
+\chardef\showspreadmode=1
+
+% beware, ugly overload, to be redone
+
+\def\normalsettextpagecontent#1#2#3% #2 and #3 will disappear
+ {\setbox#1\hbox
+ {\vbox to \textheight
+ {\offinterlineskip
+ \freezetextwidth
+ \hsize\textwidth % local variant of \sethsize
+ \boxmaxdepth\maxdepth
+ \noindent % content can be < \hsize
+ \dopagecontents#2#3}}%
+ \dp#1\zeropoint
+ \setbox#1\hbox to \makeupwidth
+ {\ifinspread
+ \ifvoid\spreadbox
+ \global\setbox\spreadbox\box#1%
+ \copy\spreadbox\hss % left page
+ \else
+ % prevent duplicate writes in normal run
+ \ifarrangingpages \else \ifcase\showspreadmode
+ \global\setbox\spreadbox\null
+ \wd\spreadbox\makeupwidth
+ \ht\spreadbox\textheight
+ \fi \fi
+ \hss\box\spreadbox % right page
+ \fi
+ \else
+ \hss\box#1\hss % never change the \hss's
+ \fi}}
+
+\def\doflushspread
+ {\ifinspread \ifvoid\spreadbox\else
+ % this page will be discarded later
+ \null \page
+ \fi \fi }
+
+\def\startspread
+ {\bgroup
+ \ifdubbelzijdig
+ \page[\v!left]%
+ %\setsystemmode{spread}%
+ \inspreadtrue
+ \scratchdimen2\textwidth
+ \advance\scratchdimen2\backspace
+ \expanded{\setuplayout[\c!textwidth=\the\scratchdimen]}%
+ \def\startspread{\bgroup\let\stopspread\egroup}%
+ \let\stopspread\dostopspread
+ \else
+ \let\stopspread\egroup
+ \fi}
+
+\let\stopspread\relax
+
+\def\dostopspread
+ {\kern\zeropoint\page
+ \inspreadfalse
+ \setuplayout[\c!textwidth=\textwidth]
+ \page[\v!left]
+ \egroup}
+
+\protect \endinput
+
+% texexec --arr --pdf test
+%
+% \setuplayout[width=middle]
+% \setuppapersize[A4][A3,landscape]
+% \setuppagenumbering[alternative=doublesided]
+% \setuparranging[2UP]
+%
+% \starttext
+%
+% \dorecurse{3}{\input tufte }
+%
+% \startspread
+% \dorecurse{10}{\input tufte }
+% \stopspread
+%
+% \dorecurse{3}{\input tufte }
+%
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/page-txt.tex b/Master/texmf-dist/tex/context/base/page-txt.tex
new file mode 100644
index 00000000000..a36bf92568e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-txt.tex
@@ -0,0 +1,725 @@
+%D \module
+%D [ file=page-txt, % copied from main-001,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Texts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \setuplayouttext in manual
+
+\writestatus{loading}{Context Page Macros / Texts}
+
+\unprotect
+
+\let\dodummypageskip\gobbleoneargument % obsolete
+
+%D Interfacing between this and other modules is handled by
+%D the following macros. The current state of a text line
+%D (header, footer, etc.) is checked by:
+%D
+%D \starttyping
+%D \resetlayouttextlines
+%D \stoptyping
+%D
+%D The main text box is finished by the following macro:
+%D
+%D \starttyping
+%D \getmainbox <box> <\vbox|\unvbox>
+%D \stoptyping
+%D
+%D The text lines are collected with:
+%D
+%D \starttyping
+%D \gettextboxes
+%D \stoptyping
+%D
+%D It is possible to extens the default content of the text
+%D areas by appending content to the following token list
+%D registers:
+
+\newtoks\toptextcontent \newtoks\leftedgetextcontent
+\newtoks\headertextcontent \newtoks\leftmargintextcontent
+\newtoks\footertextcontent \newtoks\rightmargintextcontent
+\newtoks\bottomtextcontent \newtoks\rightedgetextcontent
+
+\newtoks\texttextcontent
+
+%D \macros
+%D {setuptop, setupheader, setuptext,
+%D setupfooter, setupbottom}
+%D
+%D The macros in this module sometimes look a bit more complicated
+%D than needed, which is a direct result of the fact that their
+%D ancestors are quite old and upward compatibility is a must.
+%D
+%D \showsetup{setuptop}
+%D \showsetup{setupheader}
+%D \showsetup{setuptext}
+%D \showsetup{setupfooter}
+%D \showsetup{setupbottom}
+
+\def\setuplayouttext
+ {\dotripleempty\dosetuplayouttext}
+
+\def\dosetuplayouttext[#1][#2][#3]%
+ {\ifthirdargument
+ \getparameters[\??tk#1#2][#3]%
+ \else
+ %\getparameters[\??tk#1\v!text][#2]%
+ \getparameters[\??tk#1][#2]%
+ \fi
+ %\checkcurrentlayout % no
+ \calculatevsizes}
+
+\def\setuptop {\dotripleempty\dosetuplayouttext[\v!top]}
+\def\setupheader {\dotripleempty\dosetuplayouttext[\v!header]}
+\def\setuptext {\dotripleempty\dosetuplayouttext[\v!text]}
+\def\setupfooter {\dotripleempty\dosetuplayouttext[\v!footer]}
+\def\setupbottom {\dotripleempty\dosetuplayouttext[\v!bottom]}
+
+%D \macros
+%D {noheaderandfooterlines,notopandbottomlines}
+%D
+%D Although not really needed, the following shortcuts
+%D sometimes come in handy.
+%D
+%D \showsetup{noheaderandfooterlines}
+%D \showsetup{notopandbottomlines}
+
+\def\noheaderandfooterlines
+ {\setupheader[\c!state=\v!empty]%
+ \setupfooter[\c!state=\v!empty]}
+
+\def\notopandbottomlines
+ {\setuptop [\c!state=\v!empty]%
+ \setupbottom[\c!state=\v!empty]}
+
+%D \macros
+%D {setuptoptexts, setupheadertexts, setuptexttexts,
+%D setupfootertexts, setupbottomtexts}
+%D
+%D The next macros take one or more arguments. The exact setup
+%D depends on the number of arguments. Although not that
+%D intuitive, the current scheme evolved out of the original.
+%D When margin and edge texts as well as middle texts showed
+%D up, the current odd|/|even scheme surfaced.
+%D
+%D \showsetup{setuptoptexts}
+%D \showsetup{setupheadertexts}
+%D \showsetup{setuptexttexts}
+%D \showsetup{setupfootertexts}
+%D \showsetup{setupbottomtexts}
+
+\def\setuptoptexts {\dosixtupleempty\dosetuptexts[\v!top]}
+\def\setupheadertexts {\dosixtupleempty\dosetuptexts[\v!header]}
+\def\setuptexttexts {\dosixtupleempty\dosetuptexts[\v!text]}
+\def\setupfootertexts {\dosixtupleempty\dosetuptexts[\v!footer ]}
+\def\setupbottomtexts {\dosixtupleempty\dosetuptexts[\v!bottom]}
+
+%D The left, right and center variables can also be set
+%D directly using the previously discussed macros.
+
+\def\dosetuptexts[#1][#2][#3][#4][#5][#6]%
+ {\ifsixthargument
+ \setvalue{\??tk#1#2\c!lefttext}%
+ {\dodoubletexts{\??tk#1}{#2}%
+ {\c!leftstyle \c!leftcolor \c!leftwidth }{#3}%
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#6}}%
+ \setvalue{\??tk#1#2\c!righttext}%
+ {\dodoubletexts{\??tk#1}{#2}%
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#4}%
+ {\c!leftstyle \c!leftcolor \c!leftwidth }{#5}}%
+ \else\iffifthargument
+ \setvalue{\??tk#1\v!text\c!lefttext}%
+ {\dodoubletexts{\??tk#1}\v!text
+ {\c!leftstyle \c!leftcolor \c!leftwidth }{#2}%
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#5}}%
+ \setvalue{\??tk#1\v!text\c!righttext}%
+ {\dodoubletexts{\??tk#1}\v!text
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#3}%
+ {\c!leftstyle \c!leftcolor \c!leftwidth }{#4}}%
+ \else\iffourthargument
+ \setvalue{\??tk#1#2\c!lefttext}%
+ {\dodoubletexts{\??tk#1}{#2}
+ {\c!leftstyle\c!leftcolor\c!leftwidth}{#3}%
+ {\c!leftstyle\c!leftcolor\c!leftwidth}{#3}}%
+ \setvalue{\??tk#1#2\c!righttext}%
+ {\dodoubletexts{\??tk#1}{#2}
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#4}%
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#4}}%
+ \else\ifthirdargument
+ \setvalue{\??tk#1\v!text\c!lefttext}%
+ {\dodoubletexts{\??tk#1}\v!text
+ {\c!leftstyle\c!leftcolor\c!leftwidth}{#2}%
+ {\c!leftstyle\c!leftcolor\c!leftwidth}{#2}}%
+ \setvalue{\??tk#1\v!text\c!righttext}%
+ {\dodoubletexts{\??tk#1}\v!text
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#3}%
+ {\c!rightstyle\c!rightcolor\c!rightwidth}{#3}}%
+ \else\ifsecondargument % new
+ \letvalue{\??tk#1\v!text\c!lefttext }\empty
+ \letvalue{\??tk#1\v!text\c!righttext}\empty
+ \setvalue{\??tk#1\v!text\c!middletext }%
+ {\dosingletexts{\??tk#1}\v!text\c!style\c!color\c!width{#2}}%
+ \else
+ \dosixtupleempty\dosetuptexts[#1][\v!text][][][][]%
+ \dosixtupleempty\dosetuptexts[#1][\v!margin][][][][]%
+ \dosixtupleempty\dosetuptexts[#1][\v!edge ][][][][]%
+ \fi\fi\fi\fi\fi}
+
+%D Left and right texts are swapped on odd and even pages, but
+%D only when double sided typesetting is enabled.
+
+\def\dodoubletexts#1#2#3#4#5#6%
+ {\doifoddpageelse
+ {\dosingletexts{#1}{#2}#3{#4}} % #3 => provides three arguments
+ {\dosingletexts{#1}{#2}#5{#6}}} % #5 => provides three arguments
+
+%D The next macro will be cleaned up amd made less messy and
+%D dependent.
+
+\def\placetextlinestrut#1%
+ {\doifvalue{#1\c!strut}\v!yes{\setstrut\strut}}
+
+\def\dosingletexts#1#2#3#4#5#6%
+ {\bgroup
+ \convertargument#6\to\ascii
+ \doifsomething\ascii
+ {\doattributes{#1#2}#3#4%
+ {\placetextlinestrut{#1}% here !
+ %\doifdefinedelse{\??mk\ascii\c!coupling} % brrr
+ \doifelsemarking\ascii
+ {\dolimitatetexts{#1#2#5}{\getmarking[\ascii][\v!first]}}
+ {\ConvertConstantAfter\doifelse\v!pagenumber{#6}
+ \@@plaatspaginanummer
+ {\ConvertConstantAfter\doifelse\v!date{#6}
+ {\currentdate}
+ {% #6{}{}{} -> {} needed for macros that look
+ % ahead, like \uniqueMPgraphic
+ \opeenregel\dolimitatetexts{#1#2#5}{#6{}{}{}}}}}}}%
+ \egroup}
+
+%D When specified, the texts are automatically limited in
+%D length.
+
+\def\dolimitatetexts#1#2%
+ {\doifelsevaluenothing{#1}{#2}{\limitatetext{#2}{\getvalue{#1}}{\unknown}}}
+
+%D The placement of text is hooked into the token lists
+%D associated to the area at hand.
+
+\appendtoks \placelayouttextline\v!top \topheight \to \toptextcontent
+\appendtoks \placelayouttextline\v!header\headerheight \to \headertextcontent
+\appendtoks \placelayouttextline\v!text \textheight \to \texttextcontent
+\appendtoks \placelayouttextline\v!footer\footerheight \to \footertextcontent
+\appendtoks \placelayouttextline\v!bottom\bottomheight \to \bottomtextcontent
+
+%D Texts can be disables, moved up and ignored, depending in
+%D the \type {status} variable. This is handled by the next
+%D couple of macros.
+
+\def\settextlinestatus #1{\edef\textlinestatus{\csname\??tk#1\c!state\endcsname}}
+\def\resettextlinestatus#1{\letgvalue{\??tk#1\c!state}\v!normal}
+
+\def\placelayouttextline#1% #2
+ {\settextlinestatus{#1}%
+ \csname\string\placelayouttextline
+ \ifundefined{\string\placelayouttextline\textlinestatus}%
+ \s!unknown
+ \else
+ \textlinestatus
+ \fi
+ \endcsname{#1}} % {#2}
+
+\setvalue{\string\placelayouttextline\v!normal}{\doplacelayouttextline}
+\setvalue{\string\placelayouttextline }{\doplacelayouttextline}
+\letvalue{\string\placelayouttextline\v!none }\gobbletwoarguments
+\letvalue{\string\placelayouttextline\v!high }\gobbletwoarguments
+
+\setvalue{\string\placelayouttextline\v!empty}#1#2%
+ {\resettextlinestatus{#1}}
+
+\setvalue{\string\placelayouttextline\v!start}#1#2%
+ {\resettextlinestatus{#1}%
+ \doplacelayouttextline{#1}{#2}}
+
+\setvalue{\string\placelayouttextline\v!stop}#1#2%
+ {}
+
+\setvalue{\string\placelayouttextline\v!nomarking}#1#2%
+ {\bgroup
+ \resettextlinestatus{#1}%
+ \let\dogetmarking\nogetmarking
+ \doplacelayouttextline{#1}{#2}%
+ \egroup}
+
+\setvalue{\string\placelayouttextline\s!unknown}#1#2%
+ {\bgroup % new
+ \resettextlinestatus{#1}%
+ \getvalue{\??tk#1\textlinestatus}%
+ \getvalue{\??tk#1\v!text\textlinestatus}%
+ \getvalue{\??tk#1\v!margin\textlinestatus}%
+ \getvalue{\??tk#1\v!edge\textlinestatus}%
+ \doplacelayouttextline{#1}{#2}%
+ \egroup}
+
+%D The following macro has to be called after a page
+%D is flushed.
+
+\def\resetlayouttextline#1% beware: global assignment
+ {\doifvalue{\??tk#1\c!state}\v!high
+ {\resettextlinestatus{#1}%
+ \donetrue}}
+
+\def\resetlayouttextlines
+ {\donefalse
+ \resetlayouttextline\v!top
+ \resetlayouttextline\v!header
+ \resetlayouttextline\v!text
+ \resetlayouttextline\v!footer
+ \resetlayouttextline\v!bottom
+ \ifdone
+ \doglobal\calculatevsizes
+ \recalculatebackgrounds
+ \recalculatelogos
+ \fi}
+
+%D The next series of macros is not that easy to read,
+%D because they hook into the main page building macros. By
+%D using token list registers for the text content, we can
+%D easily hook in other code, like menu generators.
+
+\newbox\scratchpagebox
+
+\def\gettextboxes
+ {\setbox\scratchpagebox\vbox
+ {\dontcomplain
+ \calculatereducedvsizes
+ \swapmargins
+ \offinterlineskip
+ \vskip-\topheight
+ \vskip-\topdistance
+ \ifdim\topheight>\zeropoint
+ \the\toptextcontent
+ \vskip\topheight
+ \fi
+ \vskip\topdistance
+ \ifdim\headerheight>\zeropoint
+ \the\headertextcontent
+ \vskip\headerheight
+ \fi
+ \vskip\headerdistance
+ \placepositionanchors
+ \vskip-\textheight
+ \the\texttextcontent
+ \vskip\textheight
+ \the\everyendoftextbody
+ \vskip\footerdistance
+ \ifdim\footerheight>\zeropoint
+ \the\footertextcontent
+ \vskip\footerheight
+ \fi
+ \vskip\bottomdistance
+ \ifdim\bottomheight>\zeropoint
+ \the\bottomtextcontent
+ \vskip\bottomheight
+ \fi
+ \vfilll}%
+ \smashbox\scratchpagebox
+ \box\scratchpagebox}
+
+\def\getmainbox#1#2%
+ {\setbox\scratchpagebox\vbox
+ {\offinterlineskip % na \paginaletter !
+ \calculatereducedvsizes
+ \calculatehsizes
+ \swapmargins
+ \vskip\headerheight
+ \vskip\headerdistance
+ \vskip\layoutparameter\c!textdistance
+ \hbox to \makeupwidth
+ {\bgroup
+ \swapmargins
+ \goleftonpage
+ \ifdim\leftedgewidth>\zeropoint
+ \the\leftedgetextcontent
+ \hskip\leftedgewidth
+ \fi
+ \hskip\leftedgedistance
+ \ifdim\leftmarginwidth>\zeropoint
+ \the\leftmargintextcontent
+ \hskip\leftmarginwidth
+ \fi
+ \hskip\leftmargindistance
+ \egroup
+ \settextpagecontent\scratchpagebox{#1}{#2}%
+\setbox\scratchpagebox\vbox
+ {\startlayoutcomponent{textbody}{text body}%
+ \box\scratchpagebox
+ \stoplayoutcomponent}%
+ \addtextbackground\scratchpagebox
+ \addtextgridlayer\scratchpagebox
+ \localstarttextcolor
+ \box\scratchpagebox
+ \localstoptextcolor
+ \bgroup
+ \hskip\rightmargindistance
+ \ifdim\rightmarginwidth>\zeropoint
+ \the\rightmargintextcontent
+ \hskip\rightmarginwidth
+ \fi
+ \hskip\rightedgedistance
+ \ifdim\rightedgewidth>\zeropoint
+ \the\rightedgetextcontent
+ \hskip\rightedgewidth
+ \fi
+ \egroup
+ \hss}}%
+ \smashbox\scratchpagebox
+ \box\scratchpagebox}
+
+%D The main text area has to be combined with some additional
+%D (tracing) information.
+
+% will be overloaded in page-lyr
+
+\def\settextpagecontent#1#2#3% #2 and #3 will disappear
+ {\setbox#1\hbox to \makeupwidth
+ {\hss % so don't change this
+ \vbox to \textheight
+ {\offinterlineskip
+ \freezetextwidth
+ \hsize\textwidth % local variant of \sethsize
+ \boxmaxdepth\maxdepth
+ \noindent % content can be < \hsize
+ \dopagecontents#2#3}%
+ \hss}%
+ \dp#1\zeropoint}
+
+\definepalet
+ [layout]
+ [grid=red,
+ page=green]
+
+\def\addtextgridlayer#1% tzt run time
+ {\ifcase\showgridstate\else % 1=bottom 2=top
+ \setgridbox\scratchbox\makeupwidth\textheight
+ \setbox#1\hbox
+ {\ifcase\showgridstate\or\or\box#1\hskip-\makeupwidth\fi
+ \bgroup % color
+ \startlayoutcomponent{gridcolumns}{grid columns}%
+ \incolortrue
+ \ifcase\layoutcolumns\else
+ \gray
+ \hbox to \makeupwidth
+ {\dorecurse\layoutcolumns
+ {\hskip\layoutcolumnwidth
+ \ifnum\recurselevel<\layoutcolumns
+ \vrule
+ \!!height\ht\scratchbox
+ \!!depth\dp\scratchbox
+ \!!width\layoutcolumndistance
+ \fi}}%
+ \hskip-\makeupwidth
+ \fi
+ \stoplayoutcomponent
+ \startlayoutcomponent{gridlines}{grid lines}%
+ \startcolor[layout:grid]\box\scratchbox\stopcolor
+ \stoplayoutcomponent
+ \egroup
+ \ifcase\showgridstate\or\hskip-\makeupwidth\box#1\fi}%
+ \fi}
+
+%D The placement of a whole line is handled by the next two
+%D macros. These are hooked into the general purpose token
+%D list registers mentioned before.
+
+\def\ignoredlinebreak{\unskip\space\ignorespaces}
+
+\def\doplacelayouttextline#1#2%
+ {\ifdim#2>\zeropoint\relax % prevents pagenumbers when zero height
+ \goleftonpage
+ \hbox
+ {\setbox\scratchpagebox\vbox to #2
+ {%\forgetall
+ \vsize#2\relax
+ \normalbaselines
+ \let\\\ignoredlinebreak
+ \let\crlf\ignoredlinebreak
+ %\getvalue{\??tk#1\v!text\c!before}%
+ \getvalue{\??tk#1\c!before}%
+ \doifbothsidesoverruled
+ \dodoplacelayouttextline#1\c!lefttext\c!middletext\c!righttext
+ \gobbleoneargument\getvalue
+ \orsideone
+ \dodoplacelayouttextline#1\c!lefttext\c!middletext\c!righttext
+ \gobbleoneargument\getvalue
+ \orsidetwo
+ \dodoplacelayouttextline#1\c!righttext\c!middletext\c!lefttext
+ \getvalue\gobbleoneargument
+ \od
+ %\getvalue{\??tk#1\v!text\c!after}%
+ \getvalue{\??tk#1\c!after}%
+ \kern\zeropoint}% keep the \dp, beware of \vtops, never change this!
+ \dp\scratchpagebox\zeropoint
+ \box\scratchpagebox}%
+ \vskip-#2\relax
+ \fi}
+
+\def\dodoplacelayouttextline#1#2#3#4#5#6% \hsize toegevoegd, \hss's niet meer wijzigen
+ {\hbox
+ {\ifdim\leftedgewidth>\zeropoint
+ \dododoplacelayouttextline\leftedgewidth{#1}\v!edge
+ {\hss\getvalue{\??tk#1\v!edge#2}}%
+ \hskip\leftedgedistance
+ \fi
+ \ifdim\leftmarginwidth>\zeropoint
+ \dododoplacelayouttextline\leftmarginwidth{#1}\v!margin
+ {\hbox to \leftmarginwidth
+ {\hss\getvalue{\??tk#1\v!margin#2}}%
+ \hskip-\leftmarginwidth
+ \hbox to \leftmarginwidth
+ {\hss#5{\??tk#1\v!margin\c!margintext}}}%
+ \hskip\leftmargindistance
+ \fi
+ \ifdim\makeupwidth>\zeropoint
+ \dododoplacelayouttextline\makeupwidth{#1}\v!text
+ {\hbox to \makeupwidth
+ {\@@nmpre{#5{\??tk#1\v!text\c!marginedgetext}}%
+ \getvalue{\??tk#1\v!text#2}\hss}%
+ \hskip-\makeupwidth
+ \hbox to \makeupwidth
+ {\hss\getvalue{\??tk#1\v!text#3}\hss}%
+ \hskip-\makeupwidth
+ \hbox to \makeupwidth
+ {\hss\getvalue{\??tk#1\v!text#4}%
+ \@@nmpos{#6{\??tk#1\v!text\c!marginedgetext}}}}%
+ \fi
+ \ifdim\rightmarginwidth>\zeropoint
+ \hskip\rightmargindistance
+ \dododoplacelayouttextline\rightmarginwidth{#1}\v!margin
+ {\hbox to \rightmarginwidth
+ {\getvalue{\??tk#1\v!margin#4}\hss}%
+ \hskip-\rightmarginwidth
+ \hbox to \rightmarginwidth
+ {#6{\??tk#1\v!margin\c!margintext}\hss}}%
+ \fi
+ \ifdim\rightedgewidth>\zeropoint
+ \hskip\rightedgedistance
+ \dododoplacelayouttextline\rightedgewidth{#1}\v!edge
+ {\getvalue{\??tk#1\v!edge#4}\hss}%
+ \fi}}
+
+% \def\dododoplacelayouttextline#1#2#3#4%
+% {\vbox % to \vsize
+% {\hsize#1\relax
+% \getvalue{\??tk#2#3\c!voor}
+% \hbox to #1{#4}%
+% \getvalue{\??tk#2#3\c!na}}}
+
+\def\dododoplacelayouttextline#1#2#3#4%
+ {\vbox % to \vsize
+ {\hsize#1\relax
+ \getvalue{\??tk#2#3\c!before}%
+ \startlayoutcomponent{t:#2:#3}{area #2 #3}%
+ \hbox to #1{#4}%
+ \stoplayoutcomponent
+ \getvalue{\??tk#2#3\c!after}}}
+
+%D Although it is far better to use backgrounds for this
+%D purpose, one can add a rule in the following way. This
+%D method makes the rules disappear in case of an empty text
+%D line. Consider this a feature.
+%D
+%D \starttyping
+%D \setupheadertexts[left][right]
+%D
+%D \setupheader[text][after=\hrule,style=bold]
+%D
+%D \starttext
+%D \input tufte \page
+%D \setupheader[state=empty]
+%D \input tufte \page
+%D \stoptext
+%D \stoptyping
+
+%D The next twosome will be done differently (using an
+%D existing auxiliary macro).
+
+% \def\@@nmpre#1{\setbox0\hbox{#1}\ifdim\wd0=\zeropoint\else\unhbox0\tfskip\fi}
+% \def\@@nmpos#1{\setbox0\hbox{#1}\ifdim\wd0=\zeropoint\else\tfskip\unhbox0\fi}
+
+% cleaner
+
+\def\@@nmpre#1{\doiftext{#1}{{#1}\tfskip}}
+\def\@@nmpos#1{\doiftext{#1}{\tfskip{#1}}}
+
+% newer
+
+\def\@@nmprepos#1#2#3#4#5%
+ {\doifelsenothing\@@nmwidth
+ {\doiftext{#5}{#1{#5}#2}}
+ {\doiftext{#5}{\hbox to \@@nmwidth{#3{#5}#4}}}}
+
+\def\@@nmpre{\@@nmprepos\empty\tfskip\relax\hss}
+\def\@@nmpos{\@@nmprepos\tfskip\empty\hss\relax}
+
+%D This code will move to \type {page-flt.tex}.
+
+\appendtoks
+ \plaatsrechtermargeblok \hskip-\rightmarginwidth
+\to \rightmargintextcontent
+
+\appendtoks
+ \plaatslinkermargeblok \hskip-\leftmarginwidth
+\to \leftmargintextcontent
+
+%D The next hook will later be used for keeping track of
+%D positions, i.e.\ it will provide a proper (page
+%D dependent) reference point.
+
+\ifx\undefined\placepositionanchors
+ \def\placepositionanchors{\vskip\textheight}
+\fi
+
+%D \macros
+%D {definetext}
+%D
+%D Some macros ago, we implemented the \type {status} option
+%D \type {unknown}. This one is used to take care of
+%D symbolic texts handlers.
+%D
+%D \showsetup{definetext}
+%D
+%D The next example demonstrates how we can use this
+%D mechanism to provide page (event) dependent text lines.
+%D
+%D \starttyping
+%D \definetext[chapter][footer][pagenumber]
+%D \setuphead[chapter][header=high,footer=chapter]
+%D \setupheadertexts[pagenumber]
+%D \setupfootertexts[left][right]
+%D \chapter{eerste} \dorecurse{20}{\input tufte \relax}
+%D \chapter{tweede} \dorecurse{20}{\input tufte \relax}
+%D \stoptyping
+
+\def\definetext
+ {\doseventupleempty\dodefinetext}
+
+\def\dodefinetext[#1][#2][#3][#4][#5][#6][#7]%
+ {\ifseventhargument
+ \setvalue{\??tk#2#3#1}{\dosixtupleempty\dosetuptexts[#2][#3][#4][#5][#6][#7]}%
+ \else\ifsixthargument
+ \setvalue{\??tk #2#1}{\dosixtupleempty\dosetuptexts[#2][#3][#4][#5][#6]}%
+ \else\iffifthargument
+ \setvalue{\??tk#2#3#1}{\dosixtupleempty\dosetuptexts[#2][#3][#4][#5]}%
+ \else\iffourthargument
+ \setvalue{\??tk #2#1}{\dosixtupleempty\dosetuptexts[#2][#3][#4]}%
+ \else
+ \setvalue{\??tk #2#1}{\dosixtupleempty\dosetuptexts[#2][#3]}%
+ \fi\fi\fi\fi}
+
+%D The rest of this file is dedicated to setting up the
+%D texts. This code is not that impressive.
+
+\setupheadertexts [\v!text] [] []
+\setupheadertexts [\v!margin] [] []
+\setupheadertexts [\v!edge] [] []
+
+\setupfootertexts [\v!text] [] []
+\setupfootertexts [\v!margin] [] []
+\setupfootertexts [\v!edge] [] []
+
+\setuptexttexts [\v!text] [] []
+\setuptexttexts [\v!margin] [] []
+\setuptexttexts [\v!edge] [] []
+
+\setupbottomtexts [\v!text] [] []
+\setupbottomtexts [\v!margin] [] []
+\setupbottomtexts [\v!edge] [] []
+
+\setuptoptexts [\v!text] [] []
+\setuptoptexts [\v!margin] [] []
+\setuptoptexts [\v!edge] [] []
+
+% alternative
+%
+% \def\resetlayouttekst%
+% {\dodoubleempty\doresetlayouttekst}
+%
+% \def\doresetlayouttekst[#1][#2]%
+% {\ifsecondargument
+% \dodoresetlayouttekst[#1][#2]%
+% \else
+% \dodoresetlayouttekst[#1][\v!tekst]%
+% \fi}
+%
+% \def\dodoresetlayouttekst[#1][#2]%
+% {...}
+%
+% \def\docommando#1%
+% {\resetlayouttekst[#1][\v!tekst]%
+% \resetlayouttekst[#1][\v!marge]%
+% \resetlayouttekst[#1][\v!rand]}
+
+%D We combine a lot of similar settings in a macro that
+%D we will later dispose.
+
+\def\dodocommando[#1][#2]%
+ {\getparameters
+ [\??tk#1#2]
+ [%\c!state=\v!normal, % moved
+ \c!before=, % both global and local are used
+ \c!after=, % both global and local are used
+ \c!strut=, % the local one, not (yet) used
+ \c!style=\getvalue{\??tk#1\c!style},% hm, got lost
+ \c!color=\getvalue{\??tk#1\c!color}, % hm, got lost
+ \c!lefttext=,
+ \c!middletext=,
+ \c!righttext=,
+ \c!marginedgetext=,
+ \c!margintext=,
+ \c!width=]%
+ \inheritparameter[\??tk#1#2][\c!leftstyle ][\c!style ]%
+ \inheritparameter[\??tk#1#2][\c!rightstyle ][\c!style ]%
+ \inheritparameter[\??tk#1#2][\c!leftcolor ][\c!color ]%
+ \inheritparameter[\??tk#1#2][\c!rightcolor ][\c!color ]%
+ \inheritparameter[\??tk#1#2][\c!leftwidth ][\c!width]%
+ \inheritparameter[\??tk#1#2][\c!rightwidth][\c!width]}
+
+\def\docommando#1%
+ {\dodocommando[#1][\v!text]%
+ \dodocommando[#1][\v!margin]%
+ \dodocommando[#1][\v!edge]}
+
+\docommando\v!top
+\docommando\v!header
+\docommando\v!footer
+\docommando\v!text
+\docommando\v!bottom
+
+\let\docommando \relax
+\let\dodocommando\relax
+
+%D While the header and footer lines are moved away from the
+%D main text, the top and bottom lines are centered.
+
+\setuptop [\c!state=\v!normal,\c!before=\vss,\c!after=\vss,\c!strut=]
+\setupheader[\c!state=\v!normal,\c!before=, \c!after=\vss,\c!strut=\v!yes]
+\setuptext [\c!state=\v!normal,\c!before=\vss,\c!after=\vss,\c!strut=]
+\setupfooter[\c!state=\v!normal,\c!before=\vss,\c!after=, \c!strut=\v!yes]
+\setupbottom[\c!state=\v!normal,\c!before=\vss,\c!after=\vss,\c!strut=]
+
+\setuptop [\c!style=,\c!color=]
+\setupheader[\c!style=,\c!color=]
+\setuptext [\c!style=,\c!color=]
+\setupfooter[\c!style=,\c!color=]
+\setupbottom[\c!style=,\c!color=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/pdfr-ec.tex b/Master/texmf-dist/tex/context/base/pdfr-ec.tex
new file mode 100644
index 00000000000..b6604984cf8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/pdfr-ec.tex
@@ -0,0 +1,145 @@
+%D \module
+%D [ file=pdfr-ec,
+%D version=2005.07.27,
+%D title=\CONTEXT\ PDF Font Resources,
+%D subtitle=EC encoding,
+%D author={Vladimir Volovich / Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This vector is derived (but reformatted a bit) from
+%D the one in \LaTeX's CMap package
+
+\startpdffontresource[ec]
+/CIDInit /ProcSet findresource begin
+12 dict begin
+ begincmap
+ /CIDSystemInfo
+ << /Registry (TeX)
+ /Ordering (T1)
+ /Supplement 0
+ >> def
+ /CMapName /TeX-T1-0 def
+ /CMapType 2 def
+ 1 begincodespacerange
+ <00> <FF>
+ endcodespacerange
+ 10 beginbfrange
+ <0E> <0F> <2039>
+ <10> <12> <201C>
+ <15> <16> <2013>
+ <21> <26> <0021>
+ <28> <5F> <0028>
+ <61> <7E> <0061>
+ <C0> <D6> <00C0>
+ <D8> <DE> <00D8>
+ <E0> <F6> <00E0>
+ <F8> <FE> <00F8>
+ endbfrange
+ 95 beginbfchar
+ <00> <0060>
+ <01> <00B4>
+ <02> <02C6>
+ <03> <02DC>
+ <04> <00A8>
+ <05> <02DD>
+ <06> <02DA>
+ <07> <02C7>
+ <08> <02D8>
+ <09> <00AF>
+ <0A> <02D9>
+ <0B> <00B8>
+ <0C> <02DB>
+ <0D> <201A>
+ <13> <00AB>
+ <14> <00BB>
+ <17> <200C>
+ <19> <0131>
+ <1B> <00660066>
+ <1C> <00660069>
+ <1D> <0066006C>
+ <1E> <006600660069>
+ <1F> <00660066006C>
+ <20> <2423>
+ <27> <2019>
+ <60> <2018>
+ <7F> <002D>
+ <80> <0102>
+ <81> <0104>
+ <82> <0106>
+ <83> <010C>
+ <84> <010E>
+ <85> <011A>
+ <86> <0118>
+ <87> <011E>
+ <88> <0139>
+ <89> <013D>
+ <8A> <0141>
+ <8B> <0143>
+ <8C> <0147>
+ <8D> <014A>
+ <8E> <0150>
+ <8F> <0154>
+ <90> <0158>
+ <91> <015A>
+ <92> <0160>
+ <93> <015E>
+ <94> <0164>
+ <95> <021A>
+ <96> <0170>
+ <97> <016E>
+ <98> <0178>
+ <99> <0179>
+ <9A> <017D>
+ <9B> <017B>
+ <9C> <0132>
+ <9D> <0130>
+ <9E> <0111>
+ <9F> <00A7>
+ <A0> <0103>
+ <A1> <0105>
+ <A2> <0107>
+ <A3> <010D>
+ <A4> <010F>
+ <A5> <011B>
+ <A6> <0119>
+ <A7> <011F>
+ <A8> <013A>
+ <A9> <013E>
+ <AA> <0142>
+ <AB> <0144>
+ <AC> <0148>
+ <AD> <014B>
+ <AE> <0151>
+ <AF> <0155>
+ <B0> <0159>
+ <B1> <015B>
+ <B2> <0161>
+ <B3> <015F>
+ <B4> <0165>
+ <B5> <021B>
+ <B6> <0171>
+ <B7> <016F>
+ <B8> <00FF>
+ <B9> <017A>
+ <BA> <017E>
+ <BB> <017C>
+ <BC> <0133>
+ <BD> <00A1>
+ <BE> <00BF>
+ <BF> <00A3>
+ <D7> <0152>
+ <DF> <00530053>
+ <F7> <0153>
+ <FF> <00DF>
+ endbfchar
+ endcmap
+CMapName currentdict /CMap defineresource pop end
+end
+\stoppdffontresource
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/pdfr-il2.tex b/Master/texmf-dist/tex/context/base/pdfr-il2.tex
new file mode 100644
index 00000000000..70bcb25da38
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/pdfr-il2.tex
@@ -0,0 +1,233 @@
+%D \module
+%D [ file=pdfr-il2,
+%D version=2000.12.10,
+%D title=\CONTEXT\ PDF Font Resources,
+%D subtitle=ISO Latin 2,
+%D author={Ondrej Koala Vacha, Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This vector is derived (but reformatted a bit) from a
+%D sample send to me by Petr Ferdus. There was some Czech
+%D comment in which I could recognize the name of Ondrej
+%D Koala Vacha. More information on setting up such a vector
+%D can be found in the \PDF\ reference manual.
+
+\startpdffontresource[il2]
+/CIDInit /ProcSet findresource begin
+12 dict begin
+ begincmap
+ /CIDSystemInfo
+ << /Registry (Adobe)
+ /Ordering (T1UV)
+ /Supplement 0
+ >> def
+ /CMapName /Adobe-Identity-UCS def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <00> <FF>
+ endcodespacerange
+ %%FontSpecificEncoding
+ 191 beginbfrange
+ <20> <20> <0020> % space dec: 32 oct:040 hex:20
+ <21> <21> <0021> % exclam dec: 33 oct:041 hex:21
+ <22> <22> <0022> % quotedbl dec: 34 oct:042 hex:22
+ <23> <23> <0023> % numbersign dec: 35 oct:043 hex:23
+ <24> <24> <0024> % dollar dec: 36 oct:044 hex:24
+ <25> <25> <0025> % percent dec: 37 oct:045 hex:25
+ <26> <26> <0026> % ampersand dec: 38 oct:046 hex:26
+ <27> <27> <0027> % quotesingle dec: 39 oct:047 hex:27
+ <28> <28> <0028> % parenleft dec: 40 oct:050 hex:28
+ <29> <29> <0029> % parenright dec: 41 oct:051 hex:29
+ <2a> <2a> <002a> % asterisk dec: 42 oct:052 hex:2a
+ <2b> <2b> <002b> % plus dec: 43 oct:053 hex:2b
+ <2c> <2c> <002c> % comma dec: 44 oct:054 hex:2c
+ <2d> <2d> <002d> % hyphen dec: 45 oct:055 hex:2d
+ <2e> <2e> <002e> % period dec: 46 oct:056 hex:2e
+ <2f> <2f> <002f> % slash dec: 47 oct:057 hex:2f
+ <30> <30> <0030> % zero dec: 48 oct:060 hex:30
+ <31> <31> <0031> % one dec: 49 oct:061 hex:31
+ <32> <32> <0032> % two dec: 50 oct:062 hex:32
+ <33> <33> <0033> % three dec: 51 oct:063 hex:33
+ <34> <34> <0034> % four dec: 52 oct:064 hex:34
+ <35> <35> <0035> % five dec: 53 oct:065 hex:35
+ <36> <36> <0036> % six dec: 54 oct:066 hex:36
+ <37> <37> <0037> % seven dec: 55 oct:067 hex:37
+ <38> <38> <0038> % eight dec: 56 oct:070 hex:38
+ <39> <39> <0039> % nine dec: 57 oct:071 hex:39
+ <3a> <3a> <003a> % colon dec: 58 oct:072 hex:3a
+ <3b> <3b> <003b> % semicolon dec: 59 oct:073 hex:3b
+ <3c> <3c> <003c> % less dec: 60 oct:074 hex:3c
+ <3d> <3d> <003d> % equal dec: 61 oct:075 hex:3d
+ <3e> <3e> <003e> % greater dec: 62 oct:076 hex:3e
+ <3f> <3f> <003f> % question dec: 63 oct:077 hex:3f
+ <40> <40> <0040> % at dec: 64 oct:100 hex:40
+ <41> <41> <0041> % A dec: 65 oct:101 hex:41
+ <42> <42> <0042> % B dec: 66 oct:102 hex:42
+ <43> <43> <0043> % C dec: 67 oct:103 hex:43
+ <44> <44> <0044> % D dec: 68 oct:104 hex:44
+ <45> <45> <0045> % E dec: 69 oct:105 hex:45
+ <46> <46> <0046> % F dec: 70 oct:106 hex:46
+ <47> <47> <0047> % G dec: 71 oct:107 hex:47
+ <48> <48> <0048> % H dec: 72 oct:110 hex:48
+ <49> <49> <0049> % I dec: 73 oct:111 hex:49
+ <4a> <4a> <004a> % J dec: 74 oct:112 hex:4a
+ <4b> <4b> <004b> % K dec: 75 oct:113 hex:4b
+ <4c> <4c> <004c> % L dec: 76 oct:114 hex:4c
+ <4d> <4d> <004d> % M dec: 77 oct:115 hex:4d
+ <4e> <4e> <004e> % N dec: 78 oct:116 hex:4e
+ <4f> <4f> <004f> % O dec: 79 oct:117 hex:4f
+ <50> <50> <0050> % P dec: 80 oct:120 hex:50
+ <51> <51> <0051> % Q dec: 81 oct:121 hex:51
+ <52> <52> <0052> % R dec: 82 oct:122 hex:52
+ <53> <53> <0053> % S dec: 83 oct:123 hex:53
+ <54> <54> <0054> % T dec: 84 oct:124 hex:54
+ <55> <55> <0055> % U dec: 85 oct:125 hex:55
+ <56> <56> <0056> % V dec: 86 oct:126 hex:56
+ <57> <57> <0057> % W dec: 87 oct:127 hex:57
+ <58> <58> <0058> % X dec: 88 oct:130 hex:58
+ <59> <59> <0059> % Y dec: 89 oct:131 hex:59
+ <5a> <5a> <005a> % Z dec: 90 oct:132 hex:5a
+ <5b> <5b> <005b> % bracketleft dec: 91 oct:133 hex:5b
+ <5c> <5c> <005c> % backslash dec: 92 oct:134 hex:5c
+ <5d> <5d> <005d> % bracketright dec: 93 oct:135 hex:5d
+ <5e> <5e> <005e> % asciicircum dec: 94 oct:136 hex:5e
+ <5f> <5f> <005f> % underscore dec: 95 oct:137 hex:5f
+ <60> <60> <0060> % grave dec: 96 oct:140 hex:60
+ <61> <61> <0061> % a dec: 97 oct:141 hex:61
+ <62> <62> <0062> % b dec: 98 oct:142 hex:62
+ <63> <63> <0063> % c dec: 99 oct:143 hex:63
+ <64> <64> <0064> % d dec:100 oct:144 hex:64
+ <65> <65> <0065> % e dec:101 oct:145 hex:65
+ <66> <66> <0066> % f dec:102 oct:146 hex:66
+ <67> <67> <0067> % g dec:103 oct:147 hex:67
+ <68> <68> <0068> % h dec:104 oct:150 hex:68
+ <69> <69> <0069> % i dec:105 oct:151 hex:69
+ <6a> <6a> <006a> % j dec:106 oct:152 hex:6a
+ <6b> <6b> <006b> % k dec:107 oct:153 hex:6b
+ <6c> <6c> <006c> % l dec:108 oct:154 hex:6c
+ <6d> <6d> <006d> % m dec:109 oct:155 hex:6d
+ <6e> <6e> <006e> % n dec:110 oct:156 hex:6e
+ <6f> <6f> <006f> % o dec:111 oct:157 hex:6f
+ <70> <70> <0070> % p dec:112 oct:160 hex:70
+ <71> <71> <0071> % q dec:113 oct:161 hex:71
+ <72> <72> <0072> % r dec:114 oct:162 hex:72
+ <73> <73> <0073> % s dec:115 oct:163 hex:73
+ <74> <74> <0074> % t dec:116 oct:164 hex:74
+ <75> <75> <0075> % u dec:117 oct:165 hex:75
+ <76> <76> <0076> % v dec:118 oct:166 hex:76
+ <77> <77> <0077> % w dec:119 oct:167 hex:77
+ <78> <78> <0078> % x dec:120 oct:170 hex:78
+ <79> <79> <0079> % y dec:121 oct:171 hex:79
+ <7a> <7a> <007a> % z dec:122 oct:172 hex:7a
+ <7b> <7b> <007b> % braceleft dec:123 oct:173 hex:7b
+ <7c> <7c> <007c> % bar dec:124 oct:174 hex:7c
+ <7d> <7d> <007d> % braceright dec:125 oct:175 hex:7d
+ <7e> <7e> <007e> % asciitilde dec:126 oct:176 hex:7e
+ <a0> <a0> <00a0> % nbspace dec:160 oct:240 hex:a0
+ <a1> <a1> <0104> % Aogonek dec:161 oct:241 hex:a1
+ <a2> <a2> <00a2> % breve dec:162 oct:242 hex:a2
+ <a3> <a3> <00a3> % Lslash dec:163 oct:243 hex:a3
+ <a4> <a4> <00a4> % currency dec:164 oct:244 hex:a4
+ <a5> <a5> <013d> % Lcaron dec:165 oct:245 hex:a5
+ <a6> <a6> <015a> % Sacute dec:166 oct:246 hex:a6
+ <a7> <a7> <00a7> % section dec:167 oct:247 hex:a7
+ <a8> <a8> <00a8> % dieresis dec:168 oct:250 hex:a8
+ <a9> <a9> <0160> % Scaron dec:169 oct:251 hex:a9
+ <aa> <aa> <015e> % Scedilla dec:170 oct:252 hex:aa
+ <ab> <ab> <0164> % Tcaron dec:171 oct:253 hex:ab
+ <ac> <ac> <0179> % Zacute dec:172 oct:254 hex:ac
+ <ad> <ad> <00ad> % sfthyphen dec:173 oct:255 hex:ad
+ <ae> <ae> <017d> % Zcaron dec:174 oct:256 hex:ae
+ <af> <af> <00af> % Zdotaccent dec:175 oct:257 hex:af
+ <b0> <b0> <00b0> % ring dec:176 oct:260 hex:b0
+ <b1> <b1> <0105> % aogonek dec:177 oct:261 hex:b1
+ <b2> <b2> <00b2> % ogonek dec:178 oct:262 hex:b2
+ <b3> <b3> <00b3> % lslash dec:179 oct:263 hex:b3
+ <b4> <b4> <00b4> % acute dec:180 oct:264 hex:b4
+ <b5> <b5> <013e> % lcaron dec:181 oct:265 hex:b5
+ <b6> <b6> <015b> % sacute dec:182 oct:266 hex:b6
+ <b7> <b7> <00b7> % caron dec:183 oct:267 hex:b7
+ <b8> <b8> <00b8> % cedilla dec:184 oct:270 hex:b8
+ <b9> <b9> <0161> % scaron dec:185 oct:271 hex:b9
+ <ba> <ba> <015f> % scedilla dec:186 oct:272 hex:ba
+ <bb> <bb> <0165> % tcaron dec:187 oct:273 hex:bb
+ <bc> <bc> <017a> % zacute dec:188 oct:274 hex:bc
+ <bd> <bd> <00bd> % hungarumlaut dec:189 oct:275 hex:bd
+ <be> <be> <017e> % zcaron dec:190 oct:276 hex:be
+ <bf> <bf> <00bf> % zdotaccent dec:191 oct:277 hex:bf
+ <c0> <c0> <0154> % Racute dec:192 oct:300 hex:c0
+ <c1> <c1> <00c1> % Aacute dec:193 oct:301 hex:c1
+ <c2> <c2> <00c2> % Acircumflex dec:194 oct:302 hex:c2
+ <c3> <c3> <0102> % Abreve dec:195 oct:303 hex:c3
+ <c4> <c4> <00c4> % Adieresis dec:196 oct:304 hex:c4
+ <c5> <c5> <0139> % Lacute dec:197 oct:305 hex:c5
+ <c6> <c6> <0106> % Cacute dec:198 oct:306 hex:c6
+ <c7> <c7> <00c7> % Ccedilla dec:199 oct:307 hex:c7
+ <c8> <c8> <010c> % Ccaron dec:200 oct:310 hex:c8
+ <c9> <c9> <00c9> % Eacute dec:201 oct:311 hex:c9
+ <ca> <ca> <0118> % Eogonek dec:202 oct:312 hex:ca
+ <cb> <cb> <00cb> % Edieresis dec:203 oct:313 hex:cb
+ <cc> <cc> <011a> % Ecaron dec:204 oct:314 hex:cc
+ <cd> <cd> <00cd> % Iacute dec:205 oct:315 hex:cd
+ <ce> <ce> <00ce> % Icircumflex dec:206 oct:316 hex:ce
+ <cf> <cf> <010e> % Dcaron dec:207 oct:317 hex:cf
+ <d0> <d0> <00d0> % Dslash dec:208 oct:320 hex:d0
+ <d1> <d1> <0143> % Nacute dec:209 oct:321 hex:d1
+ <d2> <d2> <0147> % Ncaron dec:210 oct:322 hex:d2
+ <d3> <d3> <00d3> % Oacute dec:211 oct:323 hex:d3
+ <d4> <d4> <00d4> % Ocircumflex dec:212 oct:324 hex:d4
+ <d5> <d5> <00d5> % Ohungarumlaut dec:213 oct:325 hex:d5
+ <d6> <d6> <00d6> % Odieresis dec:214 oct:326 hex:d6
+ <d7> <d7> <00d7> % multiply dec:215 oct:327 hex:d7
+ <d8> <d8> <0158> % Rcaron dec:216 oct:330 hex:d8
+ <d9> <d9> <016e> % Uring dec:217 oct:331 hex:d9
+ <da> <da> <00da> % Uacute dec:218 oct:332 hex:da
+ <db> <db> <00db> % Uhungarumlaut dec:219 oct:333 hex:db
+ <dc> <dc> <00dc> % Udieresis dec:220 oct:334 hex:dc
+ <dd> <dd> <00dd> % Yacute dec:221 oct:335 hex:dd
+ <de> <de> <00de> % Tcommaaccent dec:222 oct:336 hex:de
+ <df> <df> <00df> % germandbls dec:223 oct:337 hex:df
+ <e0> <e0> <0155> % racute dec:224 oct:340 hex:e0
+ <e1> <e1> <00e1> % aacute dec:225 oct:341 hex:e1
+ <e2> <e2> <00e2> % acircumflex dec:226 oct:342 hex:e2
+ <e3> <e3> <0103> % abreve dec:227 oct:343 hex:e3
+ <e4> <e4> <00e4> % adieresis dec:228 oct:344 hex:e4
+ <e5> <e5> <013a> % lacute dec:229 oct:345 hex:e5
+ <e6> <e6> <0107> % cacute dec:230 oct:346 hex:e6
+ <e7> <e7> <00e7> % ccedilla dec:231 oct:347 hex:e7
+ <e8> <e8> <010d> % ccaron dec:232 oct:350 hex:e8
+ <e9> <e9> <00e9> % eacute dec:233 oct:351 hex:e9
+ <ea> <ea> <0119> % eogonek dec:234 oct:352 hex:ea
+ <eb> <eb> <00eb> % edieresis dec:235 oct:353 hex:eb
+ <ec> <ec> <011b> % ecaron dec:236 oct:354 hex:ec
+ <ed> <ed> <00ed> % iacute dec:237 oct:355 hex:ed
+ <ee> <ee> <00ee> % icircumflex dec:238 oct:356 hex:ee
+ <ef> <ef> <010f> % dcaron dec:239 oct:357 hex:ef
+ <f0> <f0> <00f0> % dmacron dec:240 oct:360 hex:f0
+ <f1> <f1> <0144> % nacute dec:241 oct:361 hex:f1
+ <f2> <f2> <0148> % ncaron dec:242 oct:362 hex:f2
+ <f3> <f3> <00f3> % oacute dec:243 oct:363 hex:f3
+ <f4> <f4> <00f4> % ocircumflex dec:244 oct:364 hex:f4
+ <f5> <f5> <00f5> % ohungarumlaut dec:245 oct:365 hex:f5
+ <f6> <f6> <00f6> % odieresis dec:246 oct:366 hex:f6
+ <f7> <f7> <00f7> % divide dec:247 oct:367 hex:f7
+ <f8> <f8> <0159> % rcaron dec:248 oct:370 hex:f8
+ <f9> <f9> <016f> % uring dec:249 oct:371 hex:f9
+ <fa> <fa> <00fa> % uacute dec:250 oct:372 hex:fa
+ <fb> <fb> <00fb> % uhungarumlaut dec:251 oct:373 hex:fb
+ <fc> <fc> <00fc> % udieresis dec:252 oct:374 hex:fc
+ <fd> <fd> <00fd> % yacute dec:253 oct:375 hex:fd
+ <fe> <fe> <00fe> % tcommaaccent dec:254 oct:376 hex:fe
+ <ff> <ff> <00ff> % dotaccent dec:255 oct:377 hex:ff
+ endbfrange
+ endcmap
+CMapName currentdict /CMap defineresource pop end
+end
+\stoppdffontresource
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/plus-rul.tex b/Master/texmf-dist/tex/context/base/plus-rul.tex
new file mode 100644
index 00000000000..57d94cfb1a9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/plus-rul.tex
@@ -0,0 +1,184 @@
+%D \module
+%D [ file=plus-rul,
+%D version=2003.03.16,
+%D title=\CONTEXT\ Plus Macros,
+%D subtitle=Ruled Stuff Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Plus Macros / Ruled Content Handling}
+
+\unprotect
+
+%D \definesidebar[whow][rulecolor=green,distance=]
+%D
+%D \input tufte \par
+%D \startsidebar
+%D \input tufte \par
+%D \input tufte \par
+%D \startsidebar[whow]
+%D \input tufte \par
+%D \input tufte \par
+%D \input tufte
+%D \stopsidebar \par
+%D \input tufte \par
+%D \input tufte
+%D \stopsidebar \par
+%D \input tufte \par
+%D \input tufte \par
+%D \startsidebar
+%D \input tufte \par
+%D \input tufte \par
+%D \input tufte \par
+%D \input tufte \par
+%D \input tufte
+%D \stopsidebar \par
+%D \input tufte \par
+%D \input tufte \par
+%D \startsidebar
+%D \input tufte
+%D \input tufte
+%D \input tufte
+%D \input tufte
+%D \input tufte
+%D \stopsidebar
+
+\newcounter\currentsidebar
+\newdimen \sidebardistance
+
+\definesystemvariable{sr}
+
+\def\setupsidebars
+ {\dodoubleargument\dosetupsidebars}
+
+\def\dosetupsidebars[#1][#2]%
+ {\ifsecondargument
+ \getparameters[\??sr#1][#2]%
+ \else
+ \getparameters[\??sr][#1]%
+ \fi}
+
+% \setupMPvariables
+% [mpos:bar]
+% [linecolor=red,
+% linewidth=2pt,
+% distance=5pt]
+
+\setupsidebars
+ [\c!rulethickness=2pt,
+ \c!rulecolor=red,
+ \c!distance=.5\bodyfontsize]
+
+\def\definesidebar
+ {\dodoubleempty\dodefinesidebar}
+
+\def\dodefinesidebar[#1][#2]%
+ {\copyparameters
+ [\??sr#1][\??sr]
+ [\c!rulethickness,\c!rulecolor,\c!distance]%
+ \getparameters
+ [\??sr#1][#2]}
+
+\def\startsidebar
+ {\dosingleempty\dostartsidebar}
+
+\def\dostartsidebar[#1]%
+ {\bgroup
+ \dontleavehmode
+ \checktextbackgrounds
+ \doglobal\increment\currentsidebar
+ \doifelsenothing{#1}
+ {\advance\sidebardistance\@@srdistance}
+ {\doifelsevaluenothing{\??sr#1\c!distance}
+ {\advance\sidebardistance\@@srdistance}
+ {\sidebardistance\getvalue{\??sr#1\c!distance}}}%
+ \startpositionoverlay{text-1}%
+ \expanded{\setMPpositiongraphicrange
+ {b:side:\currentsidebar}%
+ {e:side:\currentsidebar}%
+ {mpos:bar}%
+ {self=side:\currentsidebar,
+ linewidth=\getvalue{\??sr#1\c!rulethickness},
+ linecolor=\getvalue{\??sr#1\c!rulecolor},
+ distance=\the\sidebardistance}}%
+ \stoppositionoverlay
+ \edef\stopsidebar{\noexpand\dostopsidebar{\currentsidebar}}%
+ \bpos{side:\currentsidebar}\ignorespaces}
+
+\def\dostopsidebar#1%
+ {\removelastspace\tpos{side:#1}\carryoverpar\egroup}
+
+\startMPpositionmethod{mpos:bar}
+ \startMPpositiongraphic{mpos:bar}{linecolor,linewidth,distance}%
+ StartPage ;
+ path p ; p :=
+ if \MPp\MPbself=\MPp\MPeself :
+ (xpart ulcorner Field[Text][Text],\MPy\MPbself+\MPh\MPbself) --
+ (xpart llcorner Field[Text][Text],\MPy\MPeself-\MPd\MPeself) ;
+ elseif RealPageNumber=\MPp\MPbself :
+ (xpart ulcorner Field[Text][Text],\MPy\MPbself+\MPh\MPbself) --
+ (llcorner Field[Text][Text]) ;
+ elseif RealPageNumber=\MPp\MPeself :
+ (ulcorner Field[Text][Text]) --
+ (xpart llcorner Field[Text][Text],\MPy\MPeself-\MPd\MPeself) ;
+ else :
+ (ulcorner Field[Text][Text]) --
+ (llcorner Field[Text][Text]) ;
+ fi ;
+ p := p shifted (-llcorner Field[Text][Text]-(\MPvar{distance},0)) ;
+ interim linecap := butt ;
+ draw p
+ withpen pencircle scaled \MPvar{linewidth}
+ withcolor \MPvar{linecolor} ;
+ StopPage ;
+ \stopMPpositiongraphic
+ \MPpositiongraphic{mpos:bar}{}%
+\stopMPpositionmethod
+
+%D We now reimplement the margin rules handler defined in
+%D \type {core-rul}:
+%D
+%D \setupmarginrules[level=5]
+%D
+%D \startmarginrule[1]
+%D First we set the level at~5. Next we typeset this first
+%D paragraph as a level~1 one. As expected no rule show up.
+%D \stopmarginrule
+%D
+%D \startmarginrule[5]
+%D The second paragraph is a level~5 one. As we can see here,
+%D the marginal rule gets a width according to its level.
+%D \stopmarginrule
+%D
+%D \startmarginrule[8]
+%D It will of course be no surprise that this third paragraph
+%D has a even thicker margin rule. This behavior can be
+%D overruled by specifying the width explictly.
+%D \stopmarginrule
+
+\definesidebar
+ [\v!margin]
+ [\c!rulecolor=\s!black,
+ \c!rulethickness=\@@karulethickness,
+ \c!distance=\dimexpr(\leftmargindistance-\@@karulethickness/2)]
+
+\def\complexstartmarginrule[#1]%
+ {\bgroup
+ \ifnum#1<\@@kalevel\relax
+ \let\stopmarginrule\egroup
+ \else
+ \def\@@kadefaultwidth{#1}%
+ \let\stopmarginrule\dostopmarginrule
+ \@EA\startsidebar\@EA[\@EA\v!margin\@EA]%
+ \fi}
+
+\def\dostopmarginrule
+ {\stopsidebar
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/ppchtex.tex b/Master/texmf-dist/tex/context/base/ppchtex.tex
new file mode 100644
index 00000000000..25037018aa1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/ppchtex.tex
@@ -0,0 +1,3432 @@
+%D \module
+%D [ file=ppchtex (m-chemie),
+%D version=1997.03.19,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=\PPCHTEX\ (Plain Pictex Context cHemie \TEX),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten},
+%D suggestions={Tobias Burnus, Dirk Kuypers \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% option=test => boxes
+% dummy => file
+% final => file / local run
+%
+% constante van phantom in definitie ONE: \setchemicaltextwidth 300
+%
+% it would be interesting to rewrite this module with todays
+% experiences and new context functionality, mybe ...
+
+% Deze module ondersteunt het zetten van chemische
+% (structuur)formules. Hoewel de macro' zijn afgestemd op
+% CONTEXT, zijn ze ook buiten deze zetomgeving te gebruiken.
+%
+% Dit is, afgezien van updates, de definitieve versie van
+% PPCHTEX. Gebruikersgemak, eenvoud, flexibiliteit, en
+% snelheid zijn inmiddels redelijk geoptimaliseerd. Dit neemt
+% niet weg dat hier en daar nog verbetering mogelijk is. Dit
+% zal dan ook nog gebeuren.
+%
+% Volgende versies zullen tenminste dezelfde functionaliteit
+% hebben. We houden ons natuurlijk het recht voor de kwaliteit
+% van de output te verbeteren. Daarnaast staan nog op het
+% wensenlijstje:
+%
+% - optimaliseren in termen van proces-tijd
+% - aanpassen naamgeving van interne macro's
+% - toevoegen van functionaliteit
+% - in \x!-vorm omzetten van GIVES, TB enz.
+%
+% De mix tussen engels en nederlands lijkt soms verwarrend.
+% Meestal zijn verborgen macro's engels en zichtbare macro's
+% nederlands. Het gebruik van [ ] en { } sluit aan op andere
+% Context-macro's. Hetzelfde geldt voor instellingen en
+% \start-\stop-constructies.
+%
+% De schijnbaar overbodige \bgroup-\egroup constructie
+% garandeert aansluiting bij de Context-macro's voor het
+% plaatsen van figuren, tabellen en andere floats.
+%
+% Binnen Context worden de macro's geladen met
+% \gebruikextras[chemie]. Daarbij wordt een passende melding
+% getoont. Buiten Context genereren we een melding:
+
+\doifundefined{usemodule}
+ {\writestatus{loading}{Context Chemical Macro's / 1996.3.1}}
+
+% Er kan gebruik worden gemaakt van PiCTeX of PStricks. Een
+% van deze pakketten moet van te voren zijn geladen.
+%
+% \input prepictex.tex (i.g.v. LaTeX)
+% \input pictex.tex
+% \input postpictex.tex (i.g.v. LaTeX)
+%
+% of:
+%
+% \input multido.tex
+% \input pstricks.tex
+% \input pst-plot.tex
+%
+% In \CONTEXT\ kan men de modules m-pictex en m-pstricks
+% gebruiken. De eerste module laad of efficiente wijze PiCTeX
+% en de tweede module koppelt het PSTRICKS kleurmechanisme
+% aan dat van \CONTEXT.
+%
+
+% PSTricks: {-\chemicalangle} instead of {*0}, which produces
+% faulty ps code when \chemicalangle=0
+
+\startcommands dutch english german
+
+ gotochemical: naarchemie gotochemical zurchemie
+ setupchemical: stelchemiein setupchemical stellechemieein
+ startchemical: startchemie startchemical startchemie
+ stopchemical: stopchemie stopchemical stopchemie
+ definechemical: definieerchemie definechemical definierechemie
+ chemical: chemie chemical chemie
+ toptext: boventekst toptext textueber
+ bottext: ondertekst bottext textunter
+ midtext: middentekst midtext textmitte
+
+\stopcommands
+
+\doifundefined{fiverm} % In the more recent LaTeX versions
+ {\font\fiverm=cmr5 } % \fiverm is no longer (pre)defined.
+
+\doifdefinedelse{beginpicture} % PiCTeX
+ {\doifdefinedelse{startMPdrawing}
+ {\chardef\chemicaldrawingmode=2 } % MetaPost
+ {\chardef\chemicaldrawingmode=0 }} % raw
+ {\doifdefinedelse{psaxes}
+ {\chardef\chemicaldrawingmode=1 } % PSTricks
+ {\chardef\chemicaldrawingmode=3 }} % unknown
+
+\ifcase\chemicaldrawingmode
+ \writestatus{ppchtex}{using PiCTeX}
+\or
+ \writestatus{ppchtex}{using PSTricks (still experimental)}
+ \writestatus{ppchtex}{automatic sizing not (yet) supported}
+\or
+ \writestatus{ppchtex}{using PiCTeX and MetaPost}
+\else
+ \writestatus{ppchtex}{load PiCTeX (+pre/post) or PSTricks (+pst_plot) first}
+ \bgroup
+ \read16 to \exit
+ \egroup
+ \expandafter\endinput
+\fi
+
+% De onderstaande help-informatie (%I) kan worden opgeroepen
+% in TeXEdit. De daaropvolgende setup-informatie (%S) kan
+% nadat zij is uit deze file is gefilterd met TeXUtil, in
+% handleidingen worden gebruikt. In deze file opgenomen
+% documentatie (%D en %M) kan worden gebruikt voor een
+% technische handleiding. Met %T kunnen templates worden
+% gedefinieerd voor TeXEdit.
+
+%I n=Chemie
+%I c=\stelchemiein,\chemie
+%I
+%I Chemische formules kunnen worden gezet met behulp van de
+%I onderstaande commando's:
+%I
+%I buiten $ en $$ :
+%I
+%I \chemie[segmenten][symbolen]
+%I
+%I \startchemie[instellingen]
+%I \chemie...
+%I \chemie...
+%I \stopchemie
+%I
+%I en binnen $ en $$:
+%I
+%I \chemie{}{}
+%I
+%I Voor tekst, uitleg en voorbeelde verwijzen we vooralsnog
+%I naar de handleiding.
+%P
+%I Het gedrag van de macro's kan worden ingesteld met:
+%I
+%I \stelchemiein[breedte=,hoogte=,links=,rechts=,boven=,
+%I onder=,korps=,schaal=,status=,assenstelsel=,kader=,
+%I variant=,optie=,formaat=,tekstformaat=,resolutie=,
+%I offset=,letter=]
+%I
+%I Structuren kunnen worden voorgedefinieerd met het commando
+%I
+%I \definieerchemie[naam]{\chemie...}
+
+%S \startsetup
+%S \command
+%S [\!stelchemiein]
+%S \type
+%S [\c!vars!]
+%S \variable
+%S [\c!breedte]
+%S [\c!number!,\v!passend]
+%S [0]
+%S \variable
+%S [\c!hoogte]
+%S [\c!number!,\v!passend]
+%S [0]
+%S \variable
+%S [\c!links]
+%S [\c!number!]
+%S [0]
+%S \variable
+%S [\c!rechts]
+%S [\c!number!]
+%S [0]
+%S \variable
+%S [\c!boven]
+%S [\c!number!]
+%S [0]
+%S \variable
+%S [\c!onder]
+%S [\c!number!]
+%S [0]
+%S \variable
+%S [\c!resolutie]
+%S [\c!number!]
+%S [\outputresolution]
+%S \variable
+%S [\c!korps]
+%S [10pt,11pt,12pt]
+%S [\bodyfontsize]
+%S \variable
+%S [\c!schaal]
+%S [\v!klein,\v!middel,\v!groot]
+%S [\v!middel]
+%S \variable
+%S [\c!formaat]
+%S [\v!klein,\v!middel,\v!groot]
+%S [\v!groot]
+%S \variable
+%S [\c!tekstformaat]
+%S [\v!klein,\v!middel,\v!groot]
+%S [\v!groot]
+%S \variable
+%S [\c!status]
+%S [\v!start,\v!stop]
+%S [\v!start]
+%S \variable
+%S [\c!kader]
+%S [\v!aan,\v!uit]
+%S [\v!uit]
+%S \variable
+%S [\c!assenstelsel]
+%S [\v!aan,\v!uit]
+%S [\v!uit]
+%S \variable
+%S [\c!optie]
+%S [\v!test]
+%S []
+%S \variable
+%S [\c!variant]
+%S [1,2]
+%S [1]
+%S \variable
+%S [\c!offset]
+%S [HIGH,LOW]
+%S [LOW]
+%S \variable
+%S [\c!letter]
+%S [\c!command!]
+%S [\rm]
+%S \stopsetup
+
+%S \startsetup
+%S \command
+%S [\v!startchemie]
+%S \type
+%S [\c!vars!\c!stp!]
+%S \inheritvariable
+%S [\v!stelchemiein]
+%S []
+%S \stopsetup
+
+%S \startsetup
+%S \command
+%S [\v!chemie]
+%S \type
+%S [\c!vals!\c!vals!]
+%S \value
+%S [\c!list!]
+%S []
+%S \value
+%S [\c!list!]
+%S []
+%S \stopsetup
+
+%S \startsetup
+%S \command
+%S [definieerchemie]
+%S \type
+%S [\c!val!\c!arg!]
+%S \value
+%S [\c!text!]
+%S []
+%S \stopsetup
+
+\unprotect
+
+% Om te voorkomen dat sub- en superscripts botsen passen we
+% wat fontdimen's aan (Knuth, The TeXBook, p179). Helaas
+% kunnen deze instellingen niet lokaal worden gehouden door
+% groeperen, vandaar dat een en ander moet worden geset ‚n
+% gereset.
+%
+% Er dient een relatie te worden gelegd met de afmetingen
+% van de letters. In een eerdere versie werden daartoe de
+% \fontdimen's opgehoogd. Omdat dit problemen gaf bij
+% scaled fonts, is bij nader inzien gekozen voor de
+% onderstaande oplossing, waarbij de nieuwe waarden worden
+% afgeleid van de x-height (\fontdimen5). De factor 0.70
+% is min of meer experimenteel vastgesteld. Soms worden de
+% regels iets verder uit elkaar gezet. Jammer. Italic fonts
+% hebben grotere cijfers en vallen min of meer uit de boot.
+
+\newif\ifloweredsubscripts
+
+% Due to some upward incompatibality of LaTeX to LaTeX2.09
+% and/or LaTeX2e we had to force \@@dochemicalstyle. Otherwise
+% some weird \nullfont error comes up.
+
+\def\beginlatexmathmodehack%
+ {\ifmmode
+ \let\endlatexmathmodehack=\relax
+ \else
+ \def\endlatexmathmodehack{$}$\@@dochemicalstyle\empty
+ \fi}
+
+\def\setsubscripts%
+ {\beginlatexmathmodehack
+ \def\dosetsubscript##1##2##3%
+ {\dimen0=##3\fontdimen5##2%
+ \setxvalue{@@\string##1\string##2}{\the##1##2\relax}%
+ ##1##2=\dimen0\relax}%
+ \def\dodosetsubscript##1##2%
+ {\dosetsubscript{##1}{\textfont 2}{##2}%
+ \dosetsubscript{##1}{\scriptfont 2}{##2}%
+ \dosetsubscript{##1}{\scriptscriptfont2}{##2}}%
+ %\dodosetsubscript{\fontdimen14}{?}%
+ \dodosetsubscript{\fontdimen16}{.7}%
+ \dodosetsubscript{\fontdimen17}{.7}%
+ \global\loweredsubscriptstrue
+ \endlatexmathmodehack}
+
+\def\resetsubscripts%
+ {\ifloweredsubscripts
+ \beginlatexmathmodehack
+ \def\doresetsubscript##1##2%
+ {\dimen0=\getvalue{@@\string##1\string##2}\relax
+ ##1##2=\dimen0}%
+ \def\dodoresetsubscript##1%
+ {\doresetsubscript{##1}{\textfont2}%
+ \doresetsubscript{##1}{\scriptfont2}%
+ \doresetsubscript{##1}{\scriptscriptfont2}}%
+ %\dodoresetsubscript{\fontdimen14}%
+ \dodoresetsubscript{\fontdimen16}%
+ \dodoresetsubscript{\fontdimen17}%
+ \global\loweredsubscriptsfalse
+ \endlatexmathmodehack
+ \fi}
+
+\def\doresetsubscripts%
+ {\resetsubscripts}
+
+\def\sethighsubscripts%
+ {\resetsubscripts
+ \let\dosetsubscripts=\relax}
+
+\def\setlowsubscripts%
+ {\def\dosetsubscripts{\setsubscripts}}
+
+\setlowsubscripts
+
+\newcount\horchemical % t.z.t. \newcounter
+\newcount\verchemical % t.z.t. \newcounter
+\newcount\txtchemical % t.z.t. \newcounter
+\newcount\levchemical % t.z.t. \newcounter
+
+\newif\ifinchemical \inchemicalfalse
+\newif\iffixedchemical \fixedchemicalfalse
+
+\newbox\chemicalsymbols
+
+% Eigenlijk moeten de constanten en variabelen in cont-nl.tex
+% staan. Dit pakket is echter relatief onafhankelijk van CONTEXT.
+
+\definesystemvariable {chemical}
+
+\definesystemconstant {chemical}
+
+\definesystemconstant {translate}
+\definesystemconstant {distance}
+\definesystemconstant {mirror}
+\definesystemconstant {rotate}
+\definesystemconstant {substitute}
+\definesystemconstant {angle}
+
+\definesystemconstant {executechemical}
+\definesystemconstant {chemicaltextelement}
+\definesystemconstant {chemicallinesegment}
+\definesystemconstant {chemicalcircsegment}
+
+\def\chemicalspace {\quad}
+
+% begin van experiment:
+%
+% De onderstaande twee macro's kunnen worden gebruikt voor
+% bijvoorbeeld een interactiemechanisme.
+%
+% \localgotochemical {verwijzing} {tekst}
+% \localthisischemical {verwijzing}
+
+\def\dowithchemical%
+ {}
+
+\doifdefinedelse{@@iastate}
+ {\def\localgotochemical#1#2{\naarbox{#2}[#1]}%
+ \def\localthisischemical#1{\pagereference[#1]}}
+ {\def\localgotochemical#1{}%
+ \def\localthisischemical#1{}}
+
+% eind van experiment
+
+\def\setchemicalmaximum #1
+ {\def\maxchemical{#1}}
+
+\def\doifchemicalnumber#1#2#3%
+ {\doifnumberelse{#1}
+ {\ifnum#1>\maxchemical
+ \writestatus{ppchtex}{number #1 is skipped}%
+ \else
+ #3%
+ \fi}
+ {\unknownchemical{#2}}}%
+
+\newif\ifsmallchemicaltext
+
+\let\@@localchemicalstyle\empty
+
+\def\setupchemicalformat[#1]%
+ {\processaction
+ [\getvalue{#1\c!size}]
+ [ \v!small=>\def\@@localchemicalformat{\scriptscriptstyle},
+ \v!medium=>\def\@@localchemicalformat{\ifsmallchemicaltext\scriptscriptstyle\else\scriptstyle\fi},
+ \v!big=>\def\@@localchemicalformat{\ifsmallchemicaltext\scriptstyle\else\textstyle\fi},
+ \s!unknown=>\def\@@localchemicalformat{\getvalue{#1\c!size}}]%
+ \processaction
+ [\getvalue{#1\c!textsize}]
+ [ \v!small=>\def\@@localchemicalstyle{\scriptscriptstyle},
+ \v!medium=>\def\@@localchemicalstyle{\ifsmallchemicaltext\scriptscriptstyle\else\scriptstyle\fi},
+ \v!big=>\def\@@localchemicalstyle{\ifsmallchemicaltext\scriptstyle\else\textstyle\fi},
+ \s!unknown=>\def\@@localchemicalstyle{\getvalue{#1\c!textsize}}]%
+ \processaction
+ [\getvalue{#1\c!scale}]
+ [ \v!small=>\def\@@localchemicalscale{500},
+ \v!medium=>\def\@@localchemicalscale{625},
+ \v!big=>\def\@@localchemicalscale{750},
+ \s!unknown=>\def\@@localchemicalscale{\getvalue{#1\c!scale}}]}
+
+\def\@@currentchemicalformat
+ {\ifinchemical
+ \@@localchemicalformat
+ \else
+ \@@localchemicalstyle
+ \fi}
+
+\def\dosetupchemical[#1]%
+ {\getparameters[\??chemical\s!chemical][#1]%
+ \doifelse{\@@chemicalchemicaloffset}{LOW}
+ {\setlowsubscripts}
+ {\sethighsubscripts}%
+ \setupchemicalformat[\??chemical\s!chemical]%
+ \ignorespaces}
+
+\def\setupchemical
+ {\dosingleargument\dosetupchemical}
+
+\def\@@dochemicalstyle% % default mapping
+ {\@@chemicalstyle}
+
+\def\@@dochemicalcolor% % no mapping yet
+ {}
+
+\def\@@chemicalstyle % $inner-style$ % (overloaded)
+ {\@@chemicalchemicalstyle} % $$outer-style$$
+
+\def\@@writechemicalstate#1#2%
+ {}
+
+\def\@@beginchemicallocalpicture
+ {\ifcase\chemicaldrawingmode
+ \beginpicture
+ \or
+ \pspicture(0,0)(0,0) % is this permitted ?
+ \or
+ \pushMPdrawing
+ \startMPdrawing
+ %prologues := 1 ;
+ %input mp-tool ;
+ u := 10*\@@chemicalunit;
+ bboxmargin := 0pt ;
+ pickup pencircle scaled 2u ; % ???
+ \stopMPdrawing
+ \beginpicture
+ \fi}
+
+\def\@@endchemicallocalpicture#1#2%
+ {\ifcase\chemicaldrawingmode
+ \endpicture
+ \or
+ \endpspicture
+ \or
+ \resetchemicalcoordinates
+ \setbox2\hbox{\MPshiftdrawingtrue\MPstaticgraphictrue\getMPdrawing}%
+ \wd2=\!!zeropoint
+ \ht2=\!!zeropoint
+ \dp2=\!!zeropoint
+ \put {\box2} at 0 0
+ \endpicture
+ \popMPdrawing
+ \fi}
+
+\def\@@beginchemicalpicture#1#2#3#4%
+ {\ifnum\chemicaldrawingmode=1
+ \pspicture(#1,#3)(#2,#4)%
+ \def\account##1##2{}%
+ \psaxes[axesstyle=none,labels=none,ticks=none](#1,#3)(#2,#4)%
+ \else
+ \beginpicture
+ \setplotarea
+ x from {#1} to {#2},
+ y from {#3} to {#4}
+ \iffixedchemical
+ \accountingon
+ \def\account##1##2%
+ {\put {} at {##1} {##2} }%
+ \else
+ \accountingoff
+ \def\account##1##2{}%
+ \fi
+ \fi
+ \ignorespaces}
+
+\def\@@endchemicalpicture%
+ {\ifcase\chemicaldrawingmode
+ \put {\box\chemicalsymbols} at 0 0 % elders
+ \endpicture
+ \or
+ \rput(0,0){\box\chemicalsymbols}%
+ \endpspicture
+ \or
+ \put {\box\chemicalsymbols} at 0 0 % elders
+ \ifMPdrawingdone
+ \resetchemicalcoordinates
+ \setbox2\hbox{\MPshiftdrawingtrue\MPstaticgraphictrue\getMPdrawing}%
+ \wd2=\!!zeropoint
+ \ht2=\!!zeropoint
+ \dp2=\!!zeropoint
+ \put {\box2} at 0 0 %
+ \fi
+ \endpicture
+ \fi}
+
+\def\@@setchemicalcoordinatesystem#1%
+ {\edef\@@chemicalunit{#1}%
+ \ifcase\chemicaldrawingmode
+ \setcoordinatesystem units <\@@chemicalunit,\@@chemicalunit> %
+ \or
+ \psset{unit=\@@chemicalunit}%
+ \or
+ \setcoordinatesystem units <\@@chemicalunit,\@@chemicalunit> %
+ \startMPdrawing
+ %input mp-tool ;
+ %prologues := 1 ;
+ u := 10*#1;
+ bboxmargin := 0pt ;
+ pickup pencircle scaled 2u ; % ???
+ \stopMPdrawing
+ \fi}
+
+\def\@@setchemicalaxis#1#2#3#4%
+ {\ifcase\chemicaldrawingmode
+ \axis
+ bottom shiftedto y=0
+ ticks from {#1} to {#2} by 500 /
+ \axis
+ left shiftedto x=0
+ ticks from {#3} to {#4} by 500 / %
+ \or
+ \psaxes[labels=none,Dx=500,Dy=500](0,0)(#1,#3)(#2,#4)%
+ \or
+ \global\MPdrawingdonetrue
+ \startMPdrawing
+ x1 := \MPdivten[#1]u ; x2 := \MPdivten[#2]u;
+ y1 := \MPdivten[#3]u ; y2 := \MPdivten[#4]u;
+ draw z1--(x2,y1)--z2--(x1,y2)--cycle ;
+ d := 50u ; dd := 10u ;
+ draw (x1,0)--(x2,0) ;
+ draw (0,y1)--(0,y2) ;
+ for i=d step -d until x1: draw (i,dd)--(i,-dd) ; endfor ;
+ for i=d step d until x2: draw (i,dd)--(i,-dd) ; endfor ;
+ for i=d step -d until y1: draw (-dd,i)--(dd,i) ; endfor ;
+ for i=d step d until y2: draw (-dd,i)--(dd,i) ; endfor ;
+ \stopMPdrawing
+ \fi}
+
+\def\@@setsecondchemicalplotsymbol%
+ {\ifcase\chemicaldrawingmode
+ \!!widtha=50.8mm
+ \divide\!!widtha by \@@chemicalresolution\relax
+ \plotsymbolspacing=\!!widtha
+ \setplotsymbol({\vrule\!!height\!!widtha\!!width\!!widtha})%
+ \fi}
+
+% Something for Dirk:
+
+\newcount \currentchemical
+
+%\newif \ifskipchemical
+
+\def\setchemicaldimensions#1#2#3%
+ {\bgroup
+ \global\advance\currentchemical by 1
+ \dimen0=#1\relax
+ \dimen2=#2\relax
+ \dimen4=#3\relax
+ \setxvalue{chemical::\the\currentchemical}%
+ {\noexpand\docommando{\the\dimen0}{\the\dimen2}{\the\dimen4}}%
+ \egroup}
+
+%\def\getchemicaldimensions#1#2#3%
+% {\global\advance\currentchemical by 1
+% \def\docommando##1##2##3%
+% {#1=##1\relax#2=##2\relax#3=##3\relax}%
+% \doifdefinedelse{chemical::\the\currentchemical}
+% {\getvalue{chemical::\the\currentchemical}}
+% {\docommando{6cm}{4cm}{0cm}}}
+%
+%\def\savechemicaldimensions%
+% {\bgroup
+% \writestatus{ppchtex}{saving dimensions in ppchtex.dim}%
+% \def\docommando##1##2##3%
+% {\immediate\write\scratchwrite
+% {\noexpand\setchemicaldimensions{##1}{##2}{##3}}}%
+% \immediate\openout\scratchwrite=ppchtex.dim
+% \scratchcounter=0
+% \loop
+% \ifnum\scratchcounter<\currentchemical
+% \advance\scratchcounter by 1
+% \getvalue{chemical::\the\scratchcounter}%
+% \repeat
+% \immediate\closeout\scratchwrite
+% \egroup}
+%
+%\def\loadchemicaldimensions% oh, how nice it would be to use
+% {\bgroup % one of the context read commands
+% \global\currentchemical=0
+% \immediate\openin\scratchread=./ppchtex.dim
+% \ifeof\scratchread
+% \immediate\closein\scratchread
+% \global\skipchemicalfalse
+% \else
+% \immediate\closein\scratchread
+% \input ./ppchtex.dim\relax
+% \ifnum\currentchemical>0
+% \writestatus{ppchtex}{loading dimensions from ppchtex.dim}%
+% \global\skipchemicaltrue
+% \else
+% \global\skipchemicalfalse
+% \fi
+% \global\currentchemical=0
+% \global\let\savechemicaldimensions=\relax
+% \fi
+% \egroup
+% \global\let\loadchemicaldimensions=\relax}
+
+\ifx\normalchemicalframe\undefined
+ \let\normalchemicalframe\hbox % hook for educational purposes
+\fi
+
+\unexpanded\def\complexstartchemical[#1]%
+ {\copyparameters
+ [\??chemical][\??chemical\s!chemical]
+ [\c!width,\c!height,\c!left,\c!right,\c!top,\c!bottom,
+ \c!bodyfont,\c!size,\c!scale,\c!state,\c!frame,\c!axis,\c!factor,
+ \c!location,\c!option,\c!alternative,\c!resolution,\c!offset,\c!style,
+ \c!color,\c!rulecolor,\c!rulethickness]%
+ \getparameters
+ [\??chemical]
+ [#1]%
+ %
+ \setupchemicalformat[\??chemical]%
+ %
+ \ifnum\chemicaldrawingmode=2
+ \resetMPdrawing
+ \fi
+ %
+ \doif{\@@chemicalalternative}{2}
+ {\@@setsecondchemicalplotsymbol}%
+ %
+ \doif{\@@chemicalaxis}\v!on
+ {\let\chemicalframe\hbox}%
+ %
+ \!!counta=250000
+ \divide\!!counta by \@@localchemicalscale
+ \!!widtha=\@@chemicalbodyfont
+ \divide\!!widtha by \!!counta
+ \@@setchemicalcoordinatesystem{\the\!!widtha}%
+ %
+ % \!!counta = -x \!!countc = -y
+ % \!!countb = +x \!!countd = +y
+ %
+ \def\calculateaxis##1##2##3##4##5%
+ {##1=##3\relax
+ ##2=##4\relax
+ \ifnum##5=0
+ \ifnum##3=0
+ \ifnum##4=0
+ ##1=2000
+ ##2=2000
+ \fi
+ \fi
+ \else
+ \ifnum##3=0
+ \ifnum##4=0
+ ##1=##5\relax
+ \divide##1 by 2
+ ##2=##1\relax
+ \else
+ ##1=##5\relax
+ \advance##1 by -##2\relax
+ \fi
+ \else
+ \ifnum##4=0
+ ##2=##5\relax
+ \advance##2 by -##1\relax
+ \fi
+ \fi
+ \fi}%
+ \fixedchemicalfalse
+ \doif\@@chemicalwidth\v!fit
+ {\edef\@@chemicalwidth
+ {\ifnum\chemicaldrawingmode=1 2000 \else 1 \fi}%
+ \fixedchemicaltrue}%
+ \doif\@@chemicalheight\v!fit
+ {\edef\@@chemicalheight
+ {\ifnum\chemicaldrawingmode=1 2000 \else 1 \fi}%
+ \fixedchemicaltrue}%
+ \doifelse\@@chemicallocation\v!intext
+ {\!!counta=0 \!!countb=0
+ \!!counta=0 \!!countd=0 }
+ {\calculateaxis
+ \!!counta\!!countb
+ \@@chemicalleft\@@chemicalright\@@chemicalwidth
+ \calculateaxis
+ \!!countc\!!countd
+ \@@chemicalbottom\@@chemicaltop\@@chemicalheight}%
+ %
+ \edef\@@chemheight {\the\!!countc}%
+ \edef\@@chemdepth {\the\!!countd}%
+ \edef\@@chemicaltop{\the\!!countc}%
+ \edef\@@chemicalbottom{\the\!!countd}%
+ %
+ \doifinsetelse\v!on{\@@chemicalframe,\@@chemicalaxis}
+ {\def\@@chemicalborder{\chemicalframe}}
+ {\def\@@chemicalborder{\normalchemicalframe}}%
+ %
+ \setbox0=\hbox\bgroup % this was a \vbox which took \hsize
+ %
+ \@@beginchemicalpicture
+ {-\the\!!counta}{\the\!!countb}
+ {-\the\!!countc}{\the\!!countd}%
+ \doif{\@@chemicalstate}\v!start
+ {\doif\@@chemicalaxis\v!on
+ {\@@setchemicalaxis
+ {-\the\!!counta}{\the\!!countb}
+ {-\the\!!countc}{\the\!!countd}}}%
+ \doifelse\@@chemicaloption\v!test
+ {\def\@@writechemicalstate##1##2%
+ {\convertargument##2\to\ascii
+ \writestatus{##1}{\ascii}}}
+ {\def\@@writechemicalstate##1##2{}}%
+ \ignorespaces}
+
+\def\dostartchemical%
+ {\catcode`\^=\@@superscript% t.b.v. \enableduplication
+ \catcode`\_=\@@subscript % t.b.v. de zekerheid
+ \begingroup
+ \inchemicaltrue
+ \def\toptext##1{\gdef\thetoptext{##1}\ignorespaces}\toptext{}%
+ \def\bottext##1{\gdef\thebottext{##1}\ignorespaces}\bottext{}%
+ \def\midtext##1{\gdef\themidtext{##1}\ignorespaces}\midtext{}%
+ \def\@@chemicalpostponed{}%
+ \complexorsimpleempty\startchemical}
+
+\def\startchemical%
+ {\bgroup % t.b.v. ungrouped floats
+% \loadchemicaldimensions
+% \ifskipchemical
+% \def\dostartchemical%
+% {\def\dummy[####1]{}\dosingleempty\dummy}%
+% \def\chemical%
+% {\def\dummy[####1][####2][####3]{}\dotripleempty\dummy}%
+% \def\toptext##1{}%
+% \def\midtext##1{}%
+% \def\bottext##1{}%
+% \fi
+ \dostartchemical}
+
+\def\stopchemical%
+ {%\ifskipchemical
+ % \getchemicaldimensions{\dimen0}{\dimen2}{\dimen4}%
+ % \dimen8=\dimen2\advance\dimen8 by \dimen4
+ % \setbox0=\vbox to \dimen8
+ % {\vss\hbox to \dimen0{\hss\the\currentchemical\hss}\vss}%
+ % \wd0=\dimen0\ht0=\dimen2\dp0=\dimen4
+ % \chemicalframe{\box0}%
+ %\else
+ \checkchemicalpicture
+ \@@endchemicalpicture
+ \egroup
+ \ifnum\chemicaldrawingmode=1
+ \dimen0=\@@chemicalunit
+ \setbox0=\hbox{\lower\@@chemdepth\dimen0\box0}%
+ \ht0=\@@chemheight\dimen0
+ \dp0=\@@chemdepth\dimen0
+ \fi
+ \dimen0=\ht0
+ \advance\dimen0 by \dp0
+ \inchemicalfalse % enables \chemie{} in text
+ \setbox4=\alignedchemical\themidtext
+ \setbox6=\alignedchemical\thetoptext
+ \setbox8=\alignedchemical\thebottext
+ \setbox4=\hbox to \wd0
+ {\strut\hss$\vcenter{\box4}$\hss}%
+ \setbox2=\vbox to \dimen0
+ {\hbox to \wd0{\strut\hss\box6\hss}
+ \vfill
+ \hbox to \wd0{\strut\hss\box8\hss}
+ \vss}% disables the depth
+ \wd0=0pt \wd4=0pt
+ \ht2=\ht0 \dp2=\dp0
+ \ht4=\ht0 \dp4=\dp0
+ %\setchemicaldimensions{\wd2}{\ht2}{\dp2}%
+ \@@chemicalborder{\box0\box4\box2}% text on top of chemicals
+ \endgroup
+ %\fi
+ \ignorespaces
+ \egroup} % t.b.v. ungrouped floats
+
+\def\alignedchemical#1%
+ {\vtop
+ {\def\par{\egroup\hbox\bgroup\strut}%
+ \let\\=\par
+ \let\endgraf=\par
+ \hbox\bgroup\strut#1\egroup}}
+
+% \setchemicalcoordinates{#1}{#2}
+%
+% #1: verplaatsing in x-richting
+% #2: verplaatsing in y-richting
+
+\newif\ifchemicaldirection
+
+\def\checkchemicaldirection#1#2%
+ {\ifchemicaldirection
+ \ifnum#1>0 \advance\horchemical -\chemicaldirection \fi
+ \ifnum#1<0 \advance\horchemical +\chemicaldirection \fi
+ \ifnum#2>0 \advance\verchemical -\chemicaldirection \fi
+ \ifnum#2<0 \advance\verchemical +\chemicaldirection \fi
+ \chemicaldirectionfalse
+ \fi}
+
+\def\processchemicaldirection%
+ {\chemicaldirectiontrue\processchemicaltranslate}
+
+\def\setchemicalcoordinates#1#2%
+ {\advance\horchemical #1\relax
+ \advance\verchemical #2\relax
+ \checkchemicaldirection{#1}{#2}%
+ \!!counta=-\horchemical\edef\chemicalxoffset{\the\!!counta}%
+ \!!countb=-\verchemical\edef\chemicalyoffset{\the\!!countb}%
+ \ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \setcoordinatesystem point at {\the\horchemical} {\the\verchemical}
+ \fi}
+
+\def\resetchemicalcoordinates%
+ {\horchemical=0
+ \verchemical=0
+ \edef\chemicalxoffset{0}%
+ \edef\chemicalyoffset{0}%
+ \ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \setcoordinatesystem point at 0 0
+ \fi}
+
+\def\restorechemicalcoordinates%
+ {%\writestatus{ppchtex}{restoring \the\horchemical,\the\verchemical}%
+ \edef\chemicalxoffset{\the\horchemical}%
+ \edef\chemicalyoffset{\the\verchemical}%
+ \ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \setcoordinatesystem point at {\the\horchemical} {\the\verchemical}
+ \fi}
+
+\def\setchemicaltranslate #1 #2 #3
+ {\setvalue{\s!translate#1}{\setchemicalcoordinates{#2}{#3}}}
+
+\def\processchemicaltranslate#1%
+ {\def\doprocess[##1##2]%
+ {\doifchemicalnumber{##1}{MOV#1}
+ {\ifnum##1=0
+ \def\chemicaloffset{0}% incompatible change
+ \resetchemicalcoordinates
+ \else
+ \getvalue{\s!translate##1}%
+ \dochemicaloffset{##1}%
+ \def\chemicaloffset{0}%
+ \fi}}%
+ \doprocess[#1]}
+
+\def\setchemicaldistance #1
+ {\setvalue{\s!distance1}{\setchemicalcoordinates{-#1}{ 0}}%
+ \setvalue{\s!distance2}{\setchemicalcoordinates{ 0}{ #1}}%
+ \setvalue{\s!distance3}{\setchemicalcoordinates{ #1}{ 0}}%
+ \setvalue{\s!distance4}{\setchemicalcoordinates{ 0}{-#1}}}
+
+\def\setchemicaldirection #1
+ {\def\chemicaldirection{#1}}
+
+\def\processchemicaldistance#1%
+ {\def\doprocess[##1##2]%
+ {\doifchemicalnumber{##1}{ADJ#1}
+ {\ifnum##1=0
+ \resetchemicalcoordinates
+ \else
+ \def\@@chemicalpostponed{\getvalue{\s!distance##1}}%
+ \@@chemicalpostponed
+ \fi}}%
+ \doprocess[#1]}
+
+\def\setchemicalsubstitute #1
+ {\setvalue{\s!substitute1}{\setchemicalcoordinates{-#1}{ 0}}%
+ \setvalue{\s!substitute2}{\setchemicalcoordinates{ 0}{ #1}}%
+ \setvalue{\s!substitute3}{\setchemicalcoordinates{ #1}{ 0}}%
+ \setvalue{\s!substitute4}{\setchemicalcoordinates{ 0}{-#1}}}
+
+\def\processchemicalsubstitute#1%
+ {\def\doprocess[##1##2]%
+ {\doifchemicalnumber{##1}{SUB#1}
+ {\ifnum##1=0
+ \resetchemicalcoordinates
+ \else
+ \def\@@chemicalpostponed{\getvalue{\s!substitute##1}}%
+ \@@chemicalpostponed
+ \fi}}%
+ \doprocess[#1]}
+
+% Het is mogelijk een offset of move meerdere malen uit te
+% voeren, door een nummer voor het commando te plaatsen.
+
+\def\chemicalrepeat {1}
+
+\def\redoprocesschemical[#1#2]%
+ {\doifinstringelse{#1}{0123456789.}
+ {\edef\chemicalrepeat{\chemicalrepeat#1}%
+ \redoprocesschemical[#2]}
+ {\processchemical[#1#2]%
+ \def\chemicalrepeat{1}}}
+
+\def\doprocesschemical[#1#2]#3%
+ {\doifinstringelse{#1}{0123456789.}
+ {\def\chemicalrepeat{#1}%
+ \redoprocesschemical[#2]}
+ {#3}}
+
+% \dochemicaloffset{#1}
+%
+% #1: binding
+
+\def\chemicaloffset{0}
+
+\def\processchemicaloffset#1%
+ {\dimen0=62500 sp % real calc on cardinals, funny number
+ \dimen0=\chemicalrepeat\dimen0
+ \divide\dimen0 by \@@localchemicalscale
+ \!!counta=\dimen0
+ \def\doprocess[##1##2]%
+ {\doifinstringelse{##1}{128}
+ {\edef\chemicaloffset{\the\!!counta}}
+ {\doifinstringelse{##1}{456}
+ {\edef\chemicaloffset{-\the\!!counta}}
+ {\doifelse{##1}{0}
+ {\edef\chemicaloffset{0}}
+ {\unknownchemical{OFF#1}}}}}%
+ \doprocess[#1]}
+
+\def\dochemicaloffset#1%
+ {\ifnum\chemicaloffset=0
+ \def\undochemicaloffset{}%
+ \else
+ \setchemicalcoordinates{-\chemicaloffset}{0}%
+ \def\undochemicaloffset%
+ {\setchemicalcoordinates{\chemicaloffset}{0}%
+ \def\undochemicaloffset{}}%
+ \fi}
+
+\def\processchemicalphantom#1#2%
+ {\setbox0=\hbox
+ {\def\splitoff##1????{##1}%
+ $\@@dochemicalstyle{\@@localchemicalformat\splitoff#2}$}%
+ \dimen0=.25\wd0
+ \divide\dimen0 by \@@localchemicalscale
+ \!!counta=\dimen0
+ \doifinstringelse{#1}{128}
+ {\edef\chemicaloffset{\the\!!counta}}
+ {\doifinstringelse{#1}{456}
+ {\edef\chemicaloffset{-\the\!!counta}}
+ {\doifelse{#1}{0}
+ {\edef\chemicaloffset{0}}
+ {\unknownchemical{OF#1:#2}}}}}
+
+% \dosetchemicalrotation{#1}{#2}
+%
+% #1: cos(phi)
+% #2: sin(phi)
+
+\def\chemicalrotation {1}
+\def\chemicalangle {0}
+\def\chemicalxoffset {0}
+\def\chemicalyoffset {0}
+
+\def\setchemicalmirror#1%
+ {\setvalue{\s!mirror#1}{*}}
+
+\def\resetchemicalmirror#1%
+ {\resetvalue{\s!mirror#1}}
+
+\def\togglechemicalmirror#1%
+ {\doifelse{\getvalue{\s!mirror#1}}{*}
+ {\resetchemicalmirror{#1}}
+ {\setchemicalmirror{#1}}}
+
+\def\setchemicalrotation #1 #2 #3 #4 #5 #6 #7 #8 #9
+ {\setvalue{\s!rotate1.#1}{\dosetchemicalrotation{#2}{#3}}%
+ \setvalue{\s!rotate2.#1}{\dosetchemicalrotation{#4}{#5}}%
+ \setvalue{\s!rotate3.#1}{\dosetchemicalrotation{#6}{#7}}%
+ \setvalue{\s!rotate4.#1}{\dosetchemicalrotation{#8}{#9}}}
+
+\def\setchemicalangle #1 #2 #3 #4 #5
+ {\setvalue{\s!angle1.#1}{\dosetchemicalangle{#2}}%
+ \setvalue{\s!angle2.#1}{\dosetchemicalangle{#3}}%
+ \setvalue{\s!angle3.#1}{\dosetchemicalangle{#4}}%
+ \setvalue{\s!angle4.#1}{\dosetchemicalangle{#5}}}
+
+\def\chemicalrotate[#1]%
+ {\doifdefinedelse{\s!mirror#1}
+ {\getvalue{\s!rotate\chemicalrotation.#1\getvalue{\s!mirror#1}}%
+ \getvalue{\s!angle\chemicalrotation.#1\getvalue{\s!mirror#1}}}
+ {\getvalue{\s!rotate\chemicalrotation.#1}%
+ \getvalue{\s!angle\chemicalrotation.#1}}}
+
+\def\dosetchemicalangle#1% zwak zie onder
+ {\def\chemicalangle{#1}}
+
+\def\dosetchemicalrotation#1#2%
+ {\ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \startrotation by {#1} {#2} %% \stoprotation (t.b.v. testen)
+ \fi}
+
+\def\doresetchemicalrotation
+ {\ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \stoprotation
+ \fi}
+
+\def\processchemicalrotation#1%
+ {\def\doprocess[##1##2]%
+ {\doifnumberelse{##1}
+ {\def\chemicalrotation{##1}}
+ {\unknownchemical{ROT#1}}}%
+ \doprocess[#1]}
+
+% \filtertextelement[#1][#2][#3][#4]
+%
+% #1: volgnummer
+% #2: offset in uitlijningen
+% #3: lijst met uitlijningen -> \chemicalloca
+% #4: lijst met teksten -> \chemicaltext
+
+\def\setchemicallocation#1%
+ {\doifelse{#1}{}
+ {\edef\chemicalloca{c}}
+ {\edef\chemicalloca{#1}}}
+
+\newif\iffixedchemicaltext
+
+\def\filterchemicaltextelement[#1][#2][#3][#4]%
+ {\ifchemicaltextconstant
+ \def\chemicaltext{#4}%
+ \setchemicallocation{}%
+ \else
+ \ifnum#1=0\relax
+ \setchemicallocation{}%
+ \else
+ \iffixedchemicaltext
+ \!!counta#2
+ \else
+ \!!counta=\chemicalrotation
+ \advance\!!counta -1
+ \multiply\!!counta #2
+ \advance\!!counta #1
+ \fi
+ \getfromcommalist[#3][\the\!!counta]%
+ \setchemicallocation\commalistelement
+ \fi
+ \ifchemicalpicture
+ \let\chemicaltext\relax
+ \else
+ \advance\txtchemical 1
+ \getfromcommalist[#4][\txtchemical]%
+ \let\chemicaltext\commalistelement
+ \fi
+ \fi
+ \fixedchemicaltextfalse}
+
+% \putchemicaltext{#1}{#2}
+%
+% #1 : x-coordinaat
+% #2 : y-coordinaat
+%
+% \chemicaltext en \chemicalloca worden met \gettextelement
+% opgehaald uit de tweede set bij \chemie
+%
+% Ten behoeve van testdoeleinden wordt gebruik gemaakt van
+% \chemicalframe in plaats van het meer sjieke, maar tevens
+% meer trage \framed.
+
+\ifx\ruledhbox\undefined
+ \def\chemicalframe#1%
+ {\hbox
+ {\vrule\hskip-.4pt
+ \vbox{\hrule\vskip-.4pt\hbox{#1}\vskip-.4pt\hrule}%
+ \hskip-.4pt\vrule}}
+\else
+ \def\chemicalframe#1%
+ {\ruledhbox{#1}}
+\fi
+
+\def\doputchemicaltext#1 [#2] at #3 #4 %
+ {\ifnum\chemicaldrawingmode=1
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\expanded{\rput[#2]{\chemicalangle}(#3,#4){#1}}}%
+ \else
+ \put {#1} [#2] at {#3} {#4} %
+ \fi}
+
+\def\dodoifsinglelocation#1#2\\#3%
+ {\ifx#2\relax#3\fi}
+
+\def\doifsinglelocationelse#1%
+ {\expandafter\dodoifsinglelocationelse#1\relax\\}
+
+\def\putchemicaltext#1#2%
+ {\enablechemicalspecials
+ \ifchemicalpicture
+ \setchemicalpicture{#1}{#2}%
+ \else
+ \doifelse\@@chemicaloption\v!test
+ {\def\@@chemicalframe{\chemicalframe}}
+ {\def\@@chemicalframe{}}%
+ \dosetsubscripts
+ \setbox2=\hbox{$\@@dochemicalstyle{\@@localchemicalformat \chemicaltext}$}%
+ \setbox4=\hbox{$\@@dochemicalstyle{\@@localchemicalformat C_2^2}$}%
+ \setbox6=\hbox{$\@@dochemicalstyle{\@@localchemicalformat O}$}% or C
+ \doresetsubscripts
+ \doifnot\@@chemicallocation\v!intext
+ {\ht2=\ht4
+ \dp2=\dp4}%
+ \setbox2=\hbox{\@@chemicalframe{\@@dochemicalcolor\box2}}%
+ \ifdim\wd2>\wd6
+ \doifelse{#1}{0}
+ {\doifnot{#2}{0}{\wd2=\wd6}}
+ {%\doifsinglelocation\chemicalloca
+ {\doifinset{\chemicalloca}{t,b}{\wd2=\wd6}}}% common ?
+ \fi
+ \expanded
+ {\doputchemicaltext
+ {\noexpand\dowithchemical{\copy2}} % per se \copy2 i.p.v. \box2
+ [\chemicalloca] at {#1} {#2} }
+ \nomoreaccounting
+ \fi
+ \disablechemicalspecials}
+
+\def\setchemicaltextelement #1 #2 #3
+ {\setvalue{\s!chemicaltextelement#1}{\putchemicaltext{#2}{#3}}}
+
+\def\getchemicalfixedtextelement%
+ {\fixedchemicaltexttrue
+ \getchemicaltextelement}
+
+\def\getchemicaltextelement[#1][#2][#3][#4][#5]%
+ {\filterchemicaltextelement[#2][#3][#4][#5]%
+ \doifelse{#2}{0}
+ {\dochemicaloffset{#2}% % incompatible change
+ \putchemicaltext{0}{0}%
+ \undochemicaloffset} % incompatible change
+ {\chemicalrotate[#2]%
+ \dochemicaloffset{#2}%
+ \def\chemicaltextelementnumber{#2}%
+ \getvalue{\s!chemicaltextelement#1}%
+ \getvalue{\s!chemicaltextelement#11}%
+ \getvalue{\s!chemicaltextelement#12}%
+ \getvalue{\s!chemicaltextelement#13}%
+ \undochemicaloffset}}
+
+\def\processchemicaltextelement#1#2#3#4#5%
+ {\def\doprocess[##1##2##3##4##5]%
+ {\doifelse{##1}{?}
+ {\doprocess[1..\maxchemical ????]}
+ {\doifchemicalnumber{##1}{#1#2}
+ {\doifelse{##2##3}{..}
+ {\doifchemicalnumber{##4}{#1#2}
+ {\getchemicaltextelement[#1][##1][#4][#5][#3]%
+ \doifnot{##1}{##4}
+ {\!!counta=##1\relax
+ \advance\!!counta by 1
+ \edef\nextsegment{\the\!!counta}%
+ \doprocess[\nextsegment..##4##5]}}}
+ {\getchemicaltextelement[#1][##1][#4][#5][#3]%
+ \doifnot{##2}{?}{\doprocess[##2##3##4##5]}}}}}%
+ \doprocess[#2]%
+ \smallchemicaltextfalse}
+
+\def\processchemicalsmalltextelement%
+ {\smallchemicaltexttrue\processchemicaltextelement}
+
+\def\processchemicalsmalltextconstant%
+ {\smallchemicaltexttrue\processchemicaltextconstant}
+
+\def\processchemicalunrotatedtextelement#1#2#3#4#5#6%
+ {\bgroup
+ \xdef\@@xxx{0}%
+ \xdef\@@yyy{0}%
+ \def\putchemicaltext##1##2%
+ {\xdef\@@xxx{##1}%
+ \xdef\@@yyy{##2}}%
+ \getvalue{\s!chemicaltextelement#1}%
+ \egroup
+ \bgroup
+ \def\doputchemicaltext##1 [##2] at ##3 ##4 %
+ {\ifnum\chemicaldrawingmode=1
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\rput{\chemicalangle}(\@@xxx,\@@yyy){\expanded{\rput[##2](##3,##4){##1}}}}%
+ \else
+ \put
+ {\stoprotation \setcoordinatesystem point at 0 0
+ \expanded{\put {##1} [##2] at {##3} {##4} }}
+ at {\@@xxx} {\@@yyy}
+ \fi}%
+ \processchemicaltextelement{#2}{#3}{#4}{#5}{#6}%
+ \egroup}
+
+\newif\ifchemicaltextconstant
+
+\def\processchemicaltextconstant#1#2#3#4%
+ {\chemicaltextconstanttrue
+ \let\@@oldchemicalframe\@@chemicalframe
+ \let\@@chemicalframe\relax
+ \processchemicaltextelement{#1}{#2}{#3}{#4}{}%
+ \let\@@chemicalframe\@@oldchemicalframe
+ \chemicaltextconstantfalse}
+
+% \plotchemicalline{#1}{#2}{#3}{#4}
+%
+% #1: x-coordinaat beginpunt
+% #2: y-coordinaat beginpunt
+% #3: x-coordinaat eindpunt
+% #4: y-coordinaat eindpunt
+
+\chardef\chemicallinetype=0
+
+\def\doplotchemicalline
+ {\!!counte=\!!countc \advance\!!counte by -\!!counta
+ \!!countf=\!!countd \advance\!!countf by -\!!countb
+ \bgroup
+ \ifcase\chemicaldrawingmode
+ \ifcase\chemicallinetype
+ % 0 : normal line
+ \plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /%
+ \or
+ % 1 : normal arrow
+ \arrow <5pt> [.2,.67] from {\!!counta} {\!!countb} to {\!!countc} {\!!countd}
+ \or
+ % 2 : reverse arrow
+ \arrow <5pt> [.2,.67] from {\!!countc} {\!!countd} to {\!!counta} {\!!countb}
+ \or
+ % 3 : unrotated line
+ \put {\stoprotation \setcoordinatesystem point at 0 0
+ \plot 0 0 {\!!counte} {\!!countf} /}
+ [\chemicallineposition] at {\!!counta} {\!!countb}
+ \else
+ % 4 : dashed line
+ \findlength {\plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /}%
+ \setdashesnear <2pt> for <\totalarclength>%
+ \plot {\!!counta} {\!!countb} {\!!countc} {\!!countd} /%
+ \fi
+ \or
+ \ifcase\chemicallinetype
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psline(\!!counta,\!!countb)(\!!countc,\!!countd)}%
+ \or
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psline{->}(\!!counta,\!!countb)(\!!countc,\!!countd)}%
+ \or
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psline{<-}(\!!counta,\!!countb)(\!!countc,\!!countd)}%
+ \or
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\expanded{\rput[\chemicallineposition]{-\chemicalangle}%
+ (\!!counta,\!!countb){\psline(0,0)(\!!counte,\!!countf)}}}%
+ \else
+ \psset{linestyle=dashed}%
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psline(\!!counta,\!!countb)(\!!countc,\!!countd)}%
+ \fi
+ \or
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ x0 := \MPdivten[\chemicalxoffset]u ;
+ y0 := \MPdivten[\chemicalyoffset]u ;
+ x1 := \MPdivten[\the\!!counta]u ;
+ y1 := \MPdivten[\the\!!countb]u ;
+ x2 := \MPdivten[\the\!!countc]u ;
+ y2 := \MPdivten[\the\!!countd]u ;
+ x3 := \MPdivten[\the\!!counte]u ;
+ y3 := \MPdivten[\the\!!countf]u ;
+ \ifcase\chemicallinetype
+ % 0 : normal line
+ draw ((z1--z2) rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \or
+ % 1 : normal arrow
+ drawarrow ((z1--z2) rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \or
+ % 2 : reverse arrow
+ drawarrow ((z2--z1) rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \or
+ % 3 : unrotated line % nog \chemicalineposition: t/b
+ draw (origin--z3)
+ shifted (z1 rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \else
+ % 4 : dashed line
+ draw ((z1--z2) rotatedaround(origin,-\chemicalangle))
+% shifted z0 dashed evenly ;
+ shifted z0 dashed dashpattern(on 5.5u off 6u) ;
+ \fi
+ \stopMPdrawing
+ \fi
+ \egroup
+ \account\!!counta\!!countb
+ \account\!!countc\!!countd}
+
+\def\plotchemicalline#1#2#3#4%
+ {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax
+ \doplotchemicalline}
+
+\def\plotchemicalfactorline#1#2#3#4%
+ {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax
+ \ifdim\@@chemicalfactor\onepoint=\onepoint \else
+ \scratchdimen\!!counta\s!sp \multiply\scratchdimen1000 \scratchdimen\@@chemicalfactor\scratchdimen \divide\scratchdimen1000 \!!counta\scratchdimen
+ \scratchdimen\!!countc\s!sp \multiply\scratchdimen1000 \scratchdimen\@@chemicalfactor\scratchdimen \divide\scratchdimen1000 \!!countc\scratchdimen
+ \fi
+ \doplotchemicalline}
+
+\def\plotchemicalzline#1#2#3#4%
+ {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax
+ \ifnum\chemicaldrawingmode=2
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ x0 := \MPdivten[\chemicalxoffset]u ;
+ y0 := \MPdivten[\chemicalyoffset]u ;
+ x1 := \MPdivten[\the\!!counta]u ;
+ y1 := \MPdivten[\the\!!countb]u ;
+ x2 := \MPdivten[\the\!!countc]u ;
+ y2 := \MPdivten[\the\!!countd]u ;
+ filldraw ((
+ \ifnum\chemicalangle>180
+ z1--z2
+ \else\ifnum\chemicalangle<90
+ z1--(z2 shifted (-2u,+2u))--(z2 shifted (+2u,-2u))
+ \else\ifnum\chemicalangle=90
+ (z1 shifted (-2u,+2u))--(z1 shifted (+2u,-2u))--
+ (z2 shifted (+2u,+2u))--(z2 shifted (-2u,-2u))
+ \else
+ (z1 shifted (+2u,+2u))--(z1 shifted (-2u,-2u))--z2
+ \fi\fi\fi
+ --cycle) rotatedaround(origin,-\chemicalangle)) shifted z0 ;
+ \stopMPdrawing
+ \else
+ \doplotchemicalline
+ \ifnum\chemicalangle>180 \else
+ \ifnum\chemicalangle=90
+ \advance\!!counta by -20 \advance\!!countc by -20
+ \doplotchemicalline
+ \advance\!!counta by 40 \advance\!!countc by 40
+ \else\ifnum\chemicalangle<90
+ \advance\!!countc by -20 \advance\!!countd by +20
+ \doplotchemicalline
+ \advance\!!countc by +40 \advance\!!countd by -40
+ \else
+ \advance\!!counta by 20 \advance\!!countb by 20
+ \doplotchemicalline
+ \advance\!!counta by -40 \advance\!!countb by -40
+ \fi\fi
+ \fi
+ \doplotchemicalline
+ \fi}
+
+\def\plotchemicaldeltaline#1#2#3#4%
+ {\!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax
+ \ifnum\chemicaldrawingmode=2
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ x0 := \MPdivten[\chemicalxoffset]u ;
+ y0 := \MPdivten[\chemicalyoffset]u ;
+ x1 := \MPdivten[\the\!!counta]u ;
+ y1 := \MPdivten[\the\!!countb]u ;
+ x2 := \MPdivten[\the\!!countc]u ;
+ y2 := \MPdivten[\the\!!countd]u ;
+ filldraw ((z1--(z2 rotatedaround(z1,5))--(z2 rotatedaround(z1,-5))
+ --cycle) rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \stopMPdrawing
+ \account{#1}{#2}%
+ \account{#3}{#4}%
+ \else
+ \doplotchemicalline
+ \advance\!!countc by 16 \advance\!!countd by -21
+ \doplotchemicalline
+ \advance\!!countc by -4 \advance\!!countd by 7
+ \doplotchemicalline
+ \advance\!!countc by -4 \advance\!!countd by 7
+ \doplotchemicalline
+ \advance\!!countc by -8 \advance\!!countd by 14
+ \doplotchemicalline
+ \advance\!!countc by -4 \advance\!!countd by 7
+ \doplotchemicalline
+ \advance\!!countc by -4 \advance\!!countd by 7
+ \doplotchemicalline
+ \advance\!!countc by -4 \advance\!!countd by 7
+ \doplotchemicalline
+ \fi}
+
+\def\setchemicallinesegment #1 #2 #3 #4 #5
+ {\setvalue{\s!chemicallinesegment#1}{\plotchemicalline{#2}{#3}{#4}{#5}}}
+
+\def\setchemicalfactorlinesegment #1 #2 #3 #4 #5
+ {\setvalue{\s!chemicallinesegment#1}{\plotchemicalfactorline{#2}{#3}{#4}{#5}}}
+
+\def\getchemicallinesegment[#1][#2]%
+ {\chemicalrotate[#1]%
+ \dochemicaloffset{#1}%
+ \getvalue{\s!chemicallinesegment#2}%
+ \getvalue{\s!chemicallinesegment#21}%
+ \getvalue{\s!chemicallinesegment#22}%
+ \undochemicaloffset}
+
+
+\def\getprivatechemicallinesegment[#1][#2]%
+ {\chemicalrotate[#1]%
+ \getvalue{\s!chemicallinesegment#2#1}}
+
+\def\doprocesschemicallinesegment#1#2#3#4#5%
+ {\chardef\chemicallinetype=#1
+ \def\chemicallineposition{#2}%
+ \def\doprocess[##1##2##3##4##5]%
+ {\doifelse{##1}{?}
+ {\doprocess[1..\maxchemical ????]}
+ {\doifchemicalnumber{##1}{#4#5}
+ {\doifelse{##2##3}{..}
+ {\doifchemicalnumber{##4}{#4#5}
+ {#3[##1][#4]%
+ \doifnot{##1}{##4}
+ {\!!counta=##1\relax
+ \advance\!!counta by 1
+ \edef\nextsegment{\the\!!counta}%
+ \doprocess[\nextsegment..##4##5]}}}
+ {#3[##1][#4]%
+ \doifnot{##2}{?}
+ {\doprocess[##2##3##4##5]}}}}}%
+ \doprocess[#5]}
+
+\def\processchemicallinesegment
+ {\doprocesschemicallinesegment0c\getchemicallinesegment}
+
+\def\processchemicalzlinesegment#1#2%
+ {%\doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}%
+ \bgroup
+ \def\plotchemicalline{\plotchemicalzline}%
+ \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}%
+ \egroup}
+
+\def\processchemicaldeltalinesegment#1#2%
+ {%\doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}%
+ \bgroup
+ \def\plotchemicalline{\plotchemicaldeltaline}%
+ \doprocesschemicallinesegment0c\getchemicallinesegment{#1}{#2}%
+ \egroup}
+
+\def\processprivatechemicallinesegment%
+ {\doprocesschemicallinesegment0c\getprivatechemicallinesegment}
+
+\def\processchemicaldownarrowsegment%
+ {\doprocesschemicallinesegment1c\getchemicallinesegment}
+
+\def\processchemicaluparrowsegment%
+ {\doprocesschemicallinesegment2c\getchemicallinesegment}
+
+\def\processchemicalunrotatedlinesegment#1%
+ {\doprocesschemicallinesegment3{#1}\getchemicallinesegment}
+
+\def\processchemicaldashedlinesegment%
+ {\doprocesschemicallinesegment4c\getchemicallinesegment}
+
+\def\processchemicalopenend#1#2%
+ {\doprocesschemicallinesegment0c\doprocesschemicalopenend{#1}{#2}}
+
+\def\doprocesschemicalopenend[#1][#2]%
+ {\chemicalrotate[#1]%
+ \dochemicaloffset{#1}%
+ \ifcase\chemicaldrawingmode
+ \beginpicture
+ \setquadratic\plot
+ 300 0 400 0
+ 500 0 550 75
+ 600 0 650 -75
+ 700 0 750 75
+ 800 0 850 -75
+ 900 0 950 0
+ 1050 0 /
+ \endpicture
+ \or
+ \rput{-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psline(300,0)(500,0)%
+ \rput(500,0){\psplot[yunit=75,plotstyle=curve]{0}{720}{x sin}}%
+ \psline(950,0)(1050,0)}%
+ \or
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ x0 := \MPdivten[\chemicalxoffset]u ;
+ y0 := \MPdivten[\chemicalyoffset]u ;
+ draw
+ (((30.0u,0)--(50.0u,0){up}..(55.0u,7.5u)..
+ (60.0u,0)..(65.0u,-7.5u)..(70.0u,0)..
+ (75.0u,7.5u)..(80.0u,0)..(85.0u,-7.5u)..{up}
+ (90.0u,0)--(105.0u,0)) rotatedaround(origin,-\chemicalangle))
+ shifted z0 ;
+ \stopMPdrawing
+ \fi
+ \undochemicaloffset}
+
+% \plotchemicalcircle{#1}{#2}{#3}{#4}
+%
+% #1: lengte van de boog in graden
+% #2: x-coordinaat eindpunt
+% #3: y-coordinaat eindpunt
+
+\newif\ifchemicaldotted
+
+\def\plotchemicalcircle#1#2#3#4#5#6%
+ {\bgroup
+ \ifcase\chemicaldrawingmode
+ \ifchemicaldotted
+ \findlength{\circulararc {#4} degrees from {#5} {#6} center at {0} {0} }%
+ \divide\totalarclength by 6
+ \def\b{\the\totalarclength}%
+ \divide\totalarclength by 2
+ \def\a{\the\totalarclength}%
+ \setdashpattern <\a,\b,\b,\b,\b,\b,\a>
+ \fi
+ \circulararc {#4} degrees from {#5} {#6} center at {0} {0} %
+ \or
+ \ifchemicaldotted
+ \psset{linestyle=dashed}%
+ \fi
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\psarc(0,0){#3}{#1}{#2}}%
+ \or
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ r := \MPdivten[#3]*2u;
+ x0 := \MPdivten[\chemicalxoffset]u ;
+ y0 := \MPdivten[\chemicalyoffset]u ;
+ draw ((subpath (#1/45,#2/45) of (fullcircle scaled (r)))
+ rotatedaround (origin,\chemicalangle+150))
+ shifted z0 \ifchemicaldotted dashed withdots \fi ;
+ \stopMPdrawing
+ \fi
+ \egroup}
+
+\def\setchemicalcircsegment #1 #2 #3 #4 #5 #6 #7
+ {\setvalue{\s!chemicalcircsegment#1}{\plotchemicalcircle{#2}{#3}{#4}{#5}{#6}{#7}}}
+
+\def\getchemicalcircsegment[#1][#2]%
+ {\chemicalrotate[#1]%
+ \getvalue{\s!chemicalcircsegment#2}}
+
+\def\doprocesschemicalcircsegment#1#2%
+ {\def\doprocess[##1##2##3##4##5]%
+ {\doifelse{##1}{?}
+ {\doprocess[1..\maxchemical ????]}
+ {\doifchemicalnumber{##1}{#1#2}
+ {\doifelse{##2##3}{..}
+ {\doifchemicalnumber{##4}{#1#2}
+ {\getchemicalcircsegment[##1][#1]%
+ \doifnot{##1}{##4}
+ {\!!counta=##1\relax
+ \advance\!!counta by 1
+ \edef\nextsegment{\the\!!counta}%
+ \doprocess[\nextsegment..##4##5]}}}
+ {\getchemicalcircsegment[##1][#1]%
+ \doifnot{##2}{?}
+ {\doprocess[##2##3##4##5]}}}}}%
+ \doprocess[#2]}
+
+\def\processchemicalcircsegment%
+ {\chemicaldottedfalse\doprocesschemicalcircsegment}
+
+\def\processchemicaldottsegment%
+ {\chemicaldottedtrue\doprocesschemicalcircsegment}
+
+\let\endchemicalpicture = \relax
+\let\checkchemicalpicture = \relax
+\let\nomoreaccounting = \relax
+
+\newif\ifchemicalpicture
+
+\def\beginchemicalpicture#1% NO PSTRICKS SUPPORT YET
+ {\checkchemicalpicture
+ \bgroup % DOES NOT HANDLE AUTOWIDTH/HEIGHT
+ \chemicalpicturetrue
+ \processchemical[#1]}
+
+\def\setchemicalpicture#1#2%
+ {\chemicalpicturefalse
+ \def\endchemicalpicture%
+ {\@@endchemicallocalpicture{#1}{#2}%
+ \egroup
+ \ifnum\chemicaldrawingmode=1
+ \rput
+ {-\chemicalangle}(\chemicalxoffset,\chemicalyoffset)%
+ {\expanded{\rput[\chemicalloca]{\chemicalangle}(#1,#2){\box\nextbox}}}%
+ \else
+ \expanded{\put{\box\nextbox}[\chemicalloca] at {#1} {#2} }
+ \fi
+ \egroup}%
+ \def\checkchemicalpicture%
+ {\ifx\endchemicalpicture\relax \else
+ \writestatus{ppchtex}{missing end of picture (PE)}%
+ \endchemicalpicture
+ \fi}%
+ \setbox\nextbox=\hbox\bgroup
+ \@@beginchemicallocalpicture
+ % alternatief: gewoon accounting, en zelf l,r afhandelen
+ \ifnum\chemicaldrawingmode=1
+ % njet
+ \else
+ \accountingon
+ \let\nomoreaccounting=\accountingoff
+ \fi}
+
+\def\doskipchemical[#1][#2]%
+ {{\tt[ppchtex]}}
+
+\def\skipchemical%
+ {\dodoubleargument\doskipchemical}
+
+\def\complexchemical% met \expandafter
+ {\ifinchemical
+ \expandafter\dochemical
+ \else
+ \writestatus{ppchtex}{the [][]-alternative is not permitted here}%
+ \expandafter\skipchemical
+ \fi}
+
+\newif\ifinnerchemical
+
+\def\dosimplechemical#1#2#3%
+ {\doifdefinedelse{\??chemical\c!location}
+ {\writestatus{ppchtex}{the {}{}-alternative is not permitted here}}
+ {\ifinnerchemical
+ \let\chemicalsign = \chemicalinnersign
+ \let\chemicalmolecule = \chemicalinnermolecule
+ \let\chemicalsinglearrow = \chemicalsingleinnerarrow
+ \let\chemicaldoublearrow = \chemicaldoubleinnerarrow
+ \let\chemicaltwintiparrow = \chemicaltwintipinnerarrow
+ \else
+ \let\chemicalsign = \chemicaloutersign
+ \let\chemicalmolecule = \chemicaloutermolecule
+ \let\chemicalsinglearrow = \chemicalsingleouterarrow
+ \let\chemicaldoublearrow = \chemicaldoubleouterarrow
+ \let\chemicaltwintiparrow = \chemicaltwintipouterarrow
+ \fi
+ \disablechemicalspecials
+ \unexpandedprocessallactionsinset
+ [#1]
+ [ HIGH=>\sethighsubscripts,
+ LOW=>\setlowsubscripts,
+ PLUS=>\chemicalsign{+},
+ GIVES=>\chemicalsinglearrow{#2}{#3},
+ EQUILIBRIUM=>\chemicaldoublearrow{#2}{#3},
+ MESOMERIC=>\chemicaltwintiparrow{#2}{#3},
+ SINGLE=>\singlechemicalbond,
+ DOUBLE=>\doublechemicalbond,
+ TRIPLE=>\triplechemicalbond,
+ +=>\chemicalsign{+},
+ ->=>\chemicalsinglearrow{#2}{#3},
+ <->=>\chemicaldoublearrow{#2}{#3},
+ <>=>\chemicaltwintiparrow{#2}{#3},
+ -=>\singlechemicalbond,
+ --=>\doublechemicalbond,
+ ---=>\triplechemicalbond,
+ \s!unknown=>\enablechemicalspecials
+ \chemicalmolecule{\commalistelement}{#2}{#3}]}}
+
+%\def\dosimplechemicalA#1#2#3%
+% {\let\chemicalspace=\relax
+% \def\dodosimplechemical##1%
+% {\dosimplechemical{##1}{}{}}%
+% \@EA\processcommalist\@EA[\@@chemicalchemicaloffset,#1]\dodosimplechemical
+% \egroup}
+
+\def\dosimplechemicalA#1#2#3% % evt: {#1,\relax}
+ {\let\chemicalspace=\relax
+ \@EA\dosimplechemical\@EA{\@@chemicalchemicaloffset,#1}{#2}{#3}%
+ \egroup}
+
+\def\dosimplechemicalB#1#2#3%
+ {\dosimplechemical{#1}{#2}{#3}%
+ \egroup}
+
+\def\dosimplechemicalC#1#2#3%
+ {$\simplechemical{#1}{#2}{#3}$%
+ \egroup} % erbij
+
+\def\simplechemical%
+ {\ifinner
+ \innerchemicaltrue
+ \else
+ \innerchemicalfalse
+ \fi
+ \bgroup
+ \catcode`\^=\@@superscript % t.b.v. \enableduplication
+ \catcode`\_=\@@subscript % t.b.v. de zekerheid
+ \ifmmode
+ \ifinnerchemical
+ \def\next{\dotriplegroupempty\dosimplechemicalA}%
+ \else
+ \def\next{\dotriplegroupempty\dosimplechemicalB}%
+ \fi
+ \else
+ \def\next{\dotriplegroupempty\dosimplechemicalC}%
+ \fi
+ \next}
+
+\definecomplexorsimple\chemical
+
+\def\dogotochemical#1#2%
+ {\def\dowithchemical% % experiment
+ {\localgotochemical{#1}}% % experiment
+ \chemical} % experiment
+
+\def\gotochemical% % experiment
+ {\dosingleargument\dogotochemical} % experiment
+
+\def\dododochemical#1[#2][#3]% % experiment
+ {\def\simpledododochemical% % experiment
+ {#1[#2][#3]}% % experiment
+ \def\complexdododochemical[##1]% % experiment
+ {\def\dowithchemical% % experiment
+ {\localthisischemical{#2}}% % experiment
+ #1[#3][##1]}% % experiment
+ \complexorsimple\dododochemical} % experiment
+
+\def\dodochemical[#1][#2]%
+ {\ignorespaces
+ \ifinchemical
+ \drawchemical[#1][#2]%
+ \ignorespaces
+ \else
+ \startchemical[\c!location=\v!intext]%
+ \drawchemical[#1][#2]%
+ \expandafter\stopchemical
+ \fi
+ \ignorespaces}
+
+\def\dochemical[#1]%
+ {\def\simpledochemical%
+ {\@@writechemicalstate{ppchtex}{[#1][]}%
+ \dodochemical[#1][]}%
+ %
+ \def\complexdochemical[##1]%
+ {\@@writechemicalstate{ppchtex}{[#1][##1]}%
+ \txtchemical=0%
+ \dodochemical[#1][##1]}%
+ %
+ \def\complexdochemical[##1]% % experiment
+ {\@@writechemicalstate{ppchtex}{[#1][##1]}% % experiment
+ \txtchemical=0% % experiment
+ \dododochemical\dodochemical[#1][##1]}% % experiment
+ %
+ \complexorsimple\dochemical}
+
+% \processlocalchemicals{#1}
+%
+% #1: commando's
+
+\def\dodoprocesschemical#1%
+ {\processchemical[#1????]}
+
+\def\processlocalchemicals#1%
+ {\processcommalist[#1]\dodoprocesschemical}
+
+% \drawchemical[#1][#2]
+%
+% #1: bindingen enz.
+% #2: atomen enz.
+
+\def\localdodochemical[#1][#2]%
+ {\@@writechemicalstate{ppchtex}{[#1][#2]}%
+ %\bgroup % koppelen en afmetingen gaat fout, vandaar:
+ \advance\levchemical 1
+ \letvalue{\??chemical\s!unknown\the\levchemical}\unknownchemical
+ \setevalue{\??chemical\c!text\the\levchemical}{\the\txtchemical}%
+ \txtchemical=0
+ \dodochemical[#1][#2]%
+ % \@EA\txtchemical\@EA\csname\??chemical\c!text\the\levchemical\endcsname
+ \txtchemical\csname\??chemical\c!text\the\levchemical\endcsname
+ \@EA\let\@EA\unknownchemical\csname\??chemical\s!unknown\the\levchemical\endcsname
+ \advance\levchemical -1
+ %\egroup
+ \ignorespaces}
+
+\def\drawchemical[#1][#2]%
+ {\ignorespaces
+ \def\dodochemical[##1][##2]%
+ {\drawchemical[##1][##2]%
+ \ignorespaces}%
+ \def\dochemical[##1]%
+ {\def\simpledochemical%
+ {\@@writechemicalstate{ppchtex}{[##1][#2]}%
+ \dodochemical[##1][#2]%
+ \ignorespaces}%
+ \def\complexdochemical[####1]%
+ {\dododochemical\localdodochemical[##1][####1,#2]}%
+ \complexorsimple\dochemical}%
+ \doif\@@chemicalstate\v!start
+ {\doifelse\chemicalname\s!unknown
+ {\getvalue{\s!executechemical\defaultchemical}[#2]}
+ {\getvalue{\s!executechemical\chemicalname}[#2]}%
+ \def\unknownchemical##1%
+ {\processunknownchemical[##1][#2]}%
+ \processcommalist[\@@chemicaloffset,#1]\dodoprocesschemical}%
+ \ignorespaces}
+
+\def\chemicaloxidation#1#2#3%
+ {\chemicaltop
+ {\ifnum#20=0
+ 0%
+ \else
+ #1\expandafter\uppercase\expandafter{\romannumeral#2}%
+ \fi}
+ {#3}}
+
+\def\chemicaltfraction{\ifinchemical.60\else.8\fi}
+\def\chemicalbfraction{\ifinchemical.45\else.6\fi}
+\def\chemicallfraction{\ifinchemical.1\else.1\fi}
+\def\chemicalrfraction{\ifinchemical.1\else.1\fi}
+
+\def\chemicaltighttext%
+ {\def\chemicaltfraction{\ifinchemical.3\else.6\fi}%
+ \def\chemicalbfraction{\ifinchemical.2\else.4\fi}%
+ \def\chemicallfraction{\ifinchemical0\else0\fi}%
+ \def\chemicalrfraction{\ifinchemical0\else0\fi}}
+
+\def\dochemicaltop#1#2#3#4%
+ {\vbox
+ {\@@dochemicalcolor
+ \baselineskip=\chemicaltfraction\baselineskip \lineskip0pt
+ \halign
+ {#1###2\cr
+ $\@@dochemicalstyle{\scriptscriptstyle#3}$\cr
+ $\@@dochemicalstyle{\@@currentchemicalformat#4}$\cr}}}
+
+\def\dochemicalbottom#1#2#3#4%
+ {\vtop
+ {\@@dochemicalcolor
+ \baselineskip=\chemicalbfraction\baselineskip \lineskip0pt
+ \halign
+ {#1###2\cr
+ $\@@dochemicalstyle{\@@currentchemicalformat#4}$\cr
+ $\@@dochemicalstyle{\scriptscriptstyle#3}$\cr}}}
+
+\def\chemicalleft#1#2%
+ {\hbox
+ {\@@dochemicalcolor
+ $\@@dochemicalstyle{\scriptscriptstyle#1}$%
+ $\@@dochemicalstyle{\@@currentchemicalformat\hskip\chemicallfraction em#2}$}}
+
+\def\chemicalright#1#2%
+ {\hbox
+ {\@@dochemicalcolor
+ $\@@dochemicalstyle{\@@currentchemicalformat#2\hskip\chemicalrfraction em}$%
+ $\@@dochemicalstyle{\scriptscriptstyle#1}$}}
+
+\def\chemicalcentered#1%
+ {\setbox0=\hbox{$\@@dochemicalstyle{\scriptscriptstyle#1}$}%
+ \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}%
+ \dimen0=.5\ht2
+ \advance\dimen0 by -.5\ht0
+ \advance\dimen0 by \dp0
+ \hbox{\@@dochemicalcolor\raise\dimen0\box0}}
+
+\def\chemicalleftcentered#1#2%
+ {\hbox
+ {\@@dochemicalcolor
+ \chemicalcentered{#1}%
+ $\@@dochemicalstyle{\@@currentchemicalformat\hskip\chemicallfraction em#2}$}}
+
+\def\chemicalrightcentered#1#2%
+ {\hbox
+ {\@@dochemicalcolor
+ $\@@dochemicalstyle{\@@currentchemicalformat#2\hskip\chemicalrfraction em}$%
+ \chemicalcentered{#1}}}
+
+\def\chemicaltop {\dochemicaltop \hss \hss }
+\def\chemicallefttop {\dochemicaltop \relax \hss }
+\def\chemicalrighttop {\dochemicaltop \hss \relax}
+\def\chemicalbottom {\dochemicalbottom \hss \hss }
+\def\chemicalleftbottom {\dochemicalbottom \relax \hss }
+\def\chemicalrightbottom {\dochemicalbottom \hss \relax}
+
+\def\chemicaltopleft #1{\chemicalleft {\chemicallefttop {#1}{}}}
+\def\chemicalbottomleft #1{\chemicalleft {\chemicalleftbottom{#1}{}}}
+\def\chemicaltopright #1{\chemicalright{\chemicallefttop {#1}{}}}
+\def\chemicalbottomright#1{\chemicalright{\chemicalleftbottom{#1}{}}}
+
+\def\chemicalsmashedleft#1%
+ {\hbox\bgroup
+ \@@dochemicalcolor
+ \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}%
+ \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}%
+ \wd2=\wd0
+ \box2
+ \egroup}
+
+\def\chemicalsmashedmiddle#1%
+ {\hbox\bgroup
+ \@@dochemicalcolor
+ \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}%
+ \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}%
+ \hbox{\hskip-.5\wd2\hskip.5\wd0\box2}
+ \egroup}
+
+\def\chemicalsmashedright#1%
+ {\hbox\bgroup
+ \@@dochemicalcolor
+ \setbox0=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat C}$}%
+ \setbox2=\hbox{$\@@dochemicalstyle{\@@currentchemicalformat#1}$}%
+ \hbox to \wd0{\hskip-\wd2\hskip\wd0\box2}%
+ \egroup}
+
+\def\+{\tabalign} % is \long in Plain
+
+\def\chemicalforever#1#2%
+ {\bgroup
+ \setbox0=\hbox
+ {\@@dochemicalcolor
+ $\@@dochemicalstyle{\scriptscriptstyle\hskip-.15em#2}$}%
+ \wd0=0pt
+ \big#1_{\hskip.1em\box0}%
+ \egroup}
+
+\def\disablechemicalspecials%
+ {\def\+##1{##1}\def\-##1{##1}%
+ \def\[{[}\def\]{]}%
+ \def\1{}\def\2{}\def\3{}\def\4{}\def\5{}\def\6{}\def\7{}%
+ \def\X{}%
+ \def\T{}\def\B{}\def\L{}\def\R{}\def\LC{}\def\RC{}%
+ \def\TL{}\def\BL{}\def\TR{}\def\BR{}%
+ \def\LT{}\def\LB{}\def\RT{}\def\RB{}%
+ \def\SL{}\def\SM{}\def\SR{}}
+
+\def\enablechemicalspecials%
+ {\def\+{\dodoublegroupempty\chemicaloxidation{+}}% {} needed!
+ \def\-{\dodoublegroupempty\chemicaloxidation{-}}% {} needed!
+ \def\[{\dodoublegroupempty\chemicalforever {[}}% {} needed!
+ \def\]{\dodoublegroupempty\chemicalforever {]}}% {} needed!
+ \def\1{\chemicaloxidation\relax1}%
+ \def\2{\chemicaloxidation\relax2}%
+ \def\3{\chemicaloxidation\relax3}%
+ \def\4{\chemicaloxidation\relax4}%
+ \def\5{\chemicaloxidation\relax5}%
+ \def\6{\chemicaloxidation\relax6}%
+ \def\7{\chemicaloxidation\relax7}%
+ \def\X{\chemicaltighttext}%
+ \def\T{\chemicaltop}%
+ \def\B{\chemicalbottom}%
+ \def\L{\chemicalleft}%
+ \def\LC{\chemicalleftcentered}%
+ \def\R{\chemicalright}%
+ \def\RC{\chemicalrightcentered}%
+ \def\TL{\chemicaltopleft}%
+ \def\BL{\chemicalbottomleft}%
+ \def\TR{\chemicaltopright}%
+ \def\BR{\chemicalbottomright}%
+ \def\LT{\chemicallefttop}%
+ \def\LB{\chemicalleftbottom}%
+ \def\RT{\chemicalrighttop}%
+ \def\RB{\chemicalrightbottom}%
+ \def\SL{\chemicalsmashedleft}%
+ \def\SM{\chemicalsmashedmiddle}%
+ \def\SR{\chemicalsmashedright}}
+
+% \reversechemical#1#2#3
+%
+% #1: prefix
+% #2: volgnummer enz
+% #3: tegengestelde volgnummers
+
+\def\reversechemical#1#2#3%
+ {\def\doprocess[##1##2]%
+ {\doifchemicalnumber{##1}{#1#2}%
+ {\getfromcommalist[#3][##1]%
+ \let\reversechemicalaction=\commalistelement
+ \processchemical[#1\reversechemicalaction##2]}}%
+ \doprocess[#2]}
+
+% \processunknownchemical[#1????][#2]
+%
+% #1: bindingen enz.
+% #2: atomen enz.
+
+\def\defaultchemical%
+ {SIX}
+
+\def\processunknownchemical[#1????][#2]%
+ {\processaction
+ [#1]
+ [ SAVE=>\executechemicalSAVE,
+ RESTORE=>\executechemicalRESTORE,
+ HIGH=>\sethighsubscripts,
+ LOW=>\setlowsubscripts,
+ \s!default=>,
+ \s!unknown=>\doifdefinedelse{\s!executechemical#1}
+ {\def\chemicalrotation{1}%
+ \def\chemicaloffset{0}%
+ \doifdefined{\s!executechemical#1}
+ {\getvalue{\s!executechemical#1}[#2]}%
+ \@@chemicalpostponed}
+ {\getpredefinedchemical{#1}}]}
+
+\newcount\chemicalstack % tzt \newwounter
+
+\setvalue{\s!chemical\c!x1}{0}
+\setvalue{\s!chemical\c!y1}{0}
+
+\def\executechemicalSAVE%
+ {%\writestatus{ppchtex}{saving \the\horchemical,\the\verchemical}%
+ \advance\chemicalstack by 1
+ \letvalue {\s!chemical n\the\chemicalstack}=\chemicalname
+ %\letvalue {\s!chemical p\the\chemicalstack}=\@@chemicalpostponed
+ \setevalue{\s!chemical x\the\chemicalstack}{\the\horchemical}%
+ \setevalue{\s!chemical y\the\chemicalstack}{\the\verchemical}}
+
+\def\restorechemicalvalues#1%
+ {\let\oldprocesschemical=\processchemical
+ \doifdefined{\s!executechemical#1}{\getvalue{\s!executechemical#1}[]}%
+ \let\processchemical=\oldprocesschemical}
+
+\def\executechemicalRESTORE%
+ {\ifnum\chemicalstack=0\relax
+ \horchemical=\getvalue{\s!chemical x1}\relax
+ \verchemical=\getvalue{\s!chemical y1}\relax
+ \else
+ \restorechemicalvalues{\getvalue{\s!chemical n\the\chemicalstack}}%
+ %\@EA\let\@EA\@@chemicalpostponed\@EA=\csname\s!chemical p\the\chemicalstack\endcsname
+ \let\@@chemicalpostponed=\relax
+ \horchemical=\getvalue{\s!chemical x\the\chemicalstack}\relax
+ \verchemical=\getvalue{\s!chemical y\the\chemicalstack}\relax
+ \advance\chemicalstack by -1
+ \fi
+ \restorechemicalcoordinates}
+
+% De onderstaande macro's zijn verantwoordelijk voor het zetten
+% van de + en pijlen. De +, en dus ook de pijlen, worden omhoog
+% gehaald. Dit oogt m.i. fraaier.
+
+\def\chemicalinnerclip#1%
+ {{\setbox0=\hbox{#1}\ht0\ht\strutbox\dp0\dp\strutbox\box0}}
+
+\def\chemicalraise#1#2%
+ {\chemicalinnerclip
+ {\setbox0=\hbox{$#1+$}%
+ \raise\dp0\hbox{$#1#2$}}}
+
+\def\chemicalinnersign#1% todo: \@@chemicaltextcolor
+ {\chemicalraise{\@@localchemicalstyle}{#1}}
+
+\def\chemicaloutersign#1%
+ {\chemicalraise{}{\@@dochemicalcolor#1}}
+
+\def\chemicalsingleinnerarrow#1#2%
+ {\chemicalraise{\@@localchemicalstyle}{\longrightarrow}}
+
+\def\chemicaldoubleinnerarrow#1#2% todo: \@@chemicaltextcolor
+ {\chemicalinnerclip
+ {\lower.2ex\hbox
+ {\setbox0=\hbox{$\@@localchemicalstyle\longrightarrow$}%
+ \setbox2=\hbox{$\@@localchemicalstyle\longleftarrow$}%
+ \wd0=0pt\raise\ht0\box0\box2}}}
+
+\def\chemicaltwintipinnerarrow#1#2% todo: \@@chemicaltextcolor
+ {\chemicalinnerclip
+ {\setbox0=\hbox{\chemicalraise{\@@localchemicalstyle}{\longrightarrow}}%
+ \setbox2=\hbox{\chemicalraise{\@@localchemicalstyle}{\longleftarrow}}%
+ \wd0=0pt\box0\box2}}
+
+\def\dochemicalouterarrow#1#2#3%
+ {\bgroup
+ \setbox0=\hbox{$\longrightarrow$}%
+ \setbox2=\hbox{$\@@dochemicalstyle{\scriptstyle\quad#2\quad}$}%
+ \setbox4=\hbox{$\@@dochemicalstyle{\scriptstyle\quad#3\quad}$}%
+ \dimen2=\wd0 % \dimen0 is used elsewhere
+ \ifdim\wd2>\dimen2 \dimen0=\wd2 \fi
+ \ifdim\wd4>\dimen2 \dimen0=\wd4 \fi
+ \chemicaloutermolecule
+ {#1}
+ {\ifdim\ht2>\!!zeropoint\box2\fi} % expands to \empty in test
+ {\ifdim\ht4>\!!zeropoint\box4\fi}% % expands to \empty in test
+ \egroup}
+
+\def\chemicalsingleouterarrow%
+ {\dochemicalouterarrow
+ {\hbox to \dimen2{\rightarrowfill}}}
+
+\def\chemicaldoubleouterarrow%
+ {\dochemicalouterarrow
+ {\lower.5\ht0\vbox
+ {\offinterlineskip
+ \hbox to \dimen2{\rightarrowfill}
+ \hbox to \dimen2{\leftarrowfill}}}}
+
+\def\chemicaltwintipouterarrow%
+ {\dochemicalouterarrow
+ {\hbox
+ {\hbox to \dimen2{\rightarrowfill}%
+ \hskip-\dimen2
+ \hbox to \dimen2{\leftarrowfill}}}}
+
+\def\chemicalinnermolecule#1#2#3% no mathop here, can generate space
+ {\chemicalspace % todo: \@@chemicaltextcolor
+ \chemicalinnerclip
+ {\dosetsubscripts
+ $\@@dochemicalstyle{\@@localchemicalstyle\strut#1}$%
+ \doresetsubscripts}%
+ \chemicalspace}
+
+\def\chemicaloutermolecule#1#2#3%
+ {\chemicalspace
+ \bgroup
+ \@@dochemicalcolor
+ \setbox0=\hbox % else the font is reset
+ {\dosetsubscripts
+ \hbox{$\@@dochemicalstyle{\strut#1}$}%
+ \doresetsubscripts}%
+ \mathop{\box0}%
+ \ifthirdargument
+ \doifnot{#2}{}
+ {^{\@@dochemicalstyle{\strut#2}}}%
+ \doifnot{#3}{}
+ {_{\@@dochemicalstyle{\strut#3}}}%
+ \else
+ \doifnot{#2}{}
+ {_{\@@dochemicalstyle{\strut#2}}}%
+ \fi
+ \egroup
+ \chemicalspace}
+
+\def\chemicalsinglepicturearrow#1%
+ {\lower.5ex\hbox
+ {\@@dochemicalstyle
+ $\chemicalspace
+ \buildrel
+ \@@dochemicalstyle{\scriptstyle\quad#1\quad}%
+ \over{\overrightarrow
+ {\hphantom{\@chemicalstyle{\scriptstyle\quad#1\quad}}}}%
+ \chemicalspace$}}
+
+\def\chemicaldoublepicturearrow#1%
+ {\lower.5ex\hbox
+ {\@@dochemicalstyle
+ $\chemicalspace
+ \buildrel
+ \@@dochemicalstyle{\scriptstyle\quad#1\quad}%
+ \over{\overrightarrow{\overleftarrow
+ {\hphantom{\@@dochemicalstyle{\scriptstyle\quad#1\quad}}}}}%
+ \chemicalspace$}}
+
+% Bij de in-line bindingen wordt gebruik gemaakt van
+% een \hrule. De maatvoering wordt bepaald door een
+% kunstmatige em (\wd0).
+
+\def\somechemicalbond%
+ {\hrule width \wd0 height .4pt}
+
+\def\dochemicalbonds#1#2#3% todo: \@@chemicaltextstyle
+ {{\setbox0=\hbox
+ {${\@@localchemicalstyle M}$}%
+ \vbox to \ht0
+ {\@@dochemicalcolor
+ \hsize\wd0
+ \vskip.1\wd0#1\vfill#2\vfill#3\vskip.1\wd0}}}
+
+\def\singlechemicalbond%
+ {\dochemicalbonds{}{\somechemicalbond}{}}
+
+\def\doublechemicalbond%
+ {\dochemicalbonds{\somechemicalbond}{}{\somechemicalbond}}
+
+\def\triplechemicalbond%
+ {\dochemicalbonds{\somechemicalbond}{\somechemicalbond}{\somechemicalbond}}
+
+% In plaats van \def\naam{\chemie[...]...} kan beter gebruik
+% worden gemaakt van het commando
+%
+% \definieerchemie[naam]{commando's}
+%
+% De naam krijgt, om problemen met bestaande macro's te
+% voorkomen, een prefix. Bij het ophalen van een commando
+% worden beide definities afgehandeld.
+
+\def\dodefinechemical[#1]#2%
+ {\doifdefined{\??chemical#1}
+ {\writestatus{ppchtex}{chemical definition #1 is redefined}}%
+ \setvalue{\??chemical#1}{#2}}
+
+\def\definechemical%
+ {\dosingleargument\dodefinechemical}
+
+\def\getpredefinedchemical#1%
+ {\doifdefinedelse{\??chemical#1}
+ {\getvalue{\??chemical#1}}
+ {\doifdefinedelse{#1}
+ {\getvalue{#1}}
+ {\writestatus{ppchtex}{unknown chemical definition #1}}}}
+
+% Hieronder zijn de definities van de structuren opgenomen. De
+% naam van de structuur is als volgt opgebouwd:
+%
+% \executechemicalNUMBER[#1]
+%
+% waarbij [#1] betrekking heeft op de tekstelementen van \chemie,
+% de [tweede lijst] dus.
+%
+% De aan \chemie[#1][#2] meegegeven lijst van segmenten wordt
+% deels door de in \execute gedefinieerde macro's afgehandeld,
+% deels door algemene macro's. Segmenten hebben de vorm:
+%
+% [+|-|]identifier[X|XYZ|X..Y]
+%
+% Voorbeelden van segmenten zijn:
+%
+% R1
+% R1..4
+% R135
+% -R1
+% +R35
+
+\setchemicalmaximum 0
+
+\def\processchemical[#1]%
+ {\unknownchemical{#1}}
+
+\def\setchemicalname#1 %
+ {\def\chemicalname{#1}}
+
+\let\chemicalname=\s!unknown
+
+% Vooruitlopend op een gedetailleerde documentatie, zijn hier
+% vast enkele gebruikte afmetingen:
+%
+% lengte radikalen : 500
+% afstand radikalen : 100
+% afstand dubbele radikalen : 260
+% afstand substituenten : +125
+
+\def\executechemicalONE[#1]%
+ {\setchemicalname ONE
+ %
+ \setchemicalmaximum 8
+ \setchemicaldistance 0
+ \setchemicalsubstitute 625
+ \setchemicaldirection 303
+ %
+ \setchemicalrotation 1 1 0 1 0 1 0 1 0
+ \setchemicalrotation 2 0.707 -0.707 0.707 -0.707 0.707 -0.707 0.707 -0.707
+ \setchemicalrotation 3 0 -1 0 -1 0 -1 0 -1
+ \setchemicalrotation 4 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707 -0.707
+ \setchemicalrotation 5 -1 0 -1 0 -1 0 -1 0
+ \setchemicalrotation 6 -0.707 0.707 -0.707 0.707 -0.707 0.707 -0.707 0.707
+ \setchemicalrotation 7 0 1 0 1 0 1 0 1
+ \setchemicalrotation 8 0.707 0.707 0.707 0.707 0.707 0.707 0.707 0.707
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 45 135 225 315
+ \setchemicalangle 3 90 180 270 0
+ \setchemicalangle 4 135 225 315 45
+ \setchemicalangle 5 180 270 0 90
+ \setchemicalangle 6 225 315 45 135
+ \setchemicalangle 7 270 0 90 180
+ \setchemicalangle 8 315 45 135 225
+ %
+ \setchemicaltranslate 1 -1000 0
+ \setchemicaltranslate 2 -1000 1000
+ \setchemicaltranslate 3 0 1000
+ \setchemicaltranslate 4 1000 1000
+ \setchemicaltranslate 5 1000 0
+ \setchemicaltranslate 6 1000 -1000
+ \setchemicaltranslate 7 0 -1000
+ \setchemicaltranslate 8 -1000 -1000
+ %
+ \setchemicallinesegment SB 300 0 700 0
+ \setchemicallinesegment DB1 300 50 700 50
+ \setchemicallinesegment DB2 300 -50 700 -50
+ %
+ %setchemicallinesegment EP 200 125 200 -125
+ \setchemicalfactorlinesegment EP 200 125 200 -125
+ %
+ \setchemicaltextelement ES 200 0
+ \setchemicaltextelement ED1 200 50
+ \setchemicaltextelement ED2 200 -50
+ \setchemicaltextelement ET1 200 75
+ \setchemicaltextelement ET2 200 0
+ \setchemicaltextelement ET3 200 -75
+ \setchemicaltextelement HB1 300 0
+ \setchemicaltextelement HB2 475 0
+ \setchemicaltextelement HB3 650 0
+ %
+ \setchemicaltextelement Z 800 0
+ \setchemicaltextelement RZ 950 0
+ \setchemicaltextelement ZN 500 0
+ \setchemicaltextelement ZTN 500 150
+ \setchemicaltextelement ZBN 500 -150
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\doprocesschemical[##1##2##3##4##5]
+ {\processaction
+ [##1##2##3##4##5]
+ [ PB:##4##5=>\beginchemicalpicture{##4##5},
+ PE????=>\endchemicalpicture,
+ SUB##4##5=>\processchemicalsubstitute{##4##5},
+ ADJ##4##5=>\processchemicaldistance{##4##5},
+ MOV##4##5=>\processchemicaltranslate{##4##5},
+ DIR##4##5=>\processchemicaldirection{##4##5},
+ OFF##4##5=>\processchemicaloffset{##4##5},
+CCD##4##5=>\processchemicaldottsegment{CC}{##4##5},
+ LDD##4##5=>\processchemicaldashedlinesegment{DB1}{##4##5}%
+ \processchemicallinesegment{DB2}{##4##5},
+ RDD##4##5=>\processchemicallinesegment{DB1}{##4##5}%
+ \processchemicaldashedlinesegment{DB2}{##4##5},
+ OF##3:##5=>\processchemicalphantom{##3}{##5},
+ OE##3##4##5=>\processchemicalopenend{OE}{##3##4##5},
+ EP##3##4##5=>\processchemicallinesegment{EP}{##3##4##5},
+ ES##3##4##5=>\processchemicaltextconstant{ES}{##3##4##5}{\hbox{$\cdot$}}{0},
+ ED##3##4##5=>\processchemicaltextconstant{ED}{##3##4##5}{\hbox{$\cdot$}}{0},
+ ET##3##4##5=>\processchemicaltextconstant{ET}{##3##4##5}{\hbox{$\cdot$}}{0},
+ HB##3##4##5=>\processchemicaltextconstant{HB}{##3##4##5}{\hbox{$\cdot$}}{0},
+ SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5},
+ DB##3##4##5=>\processchemicallinesegment{DB}{##3##4##5},
+ SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5},
+ BB##3##4##5=>\processchemicaldeltalinesegment{SB}{##3##4##5},
+ SD##3##4##5=>\processchemicaldashedlinesegment{SB}{##3##4##5},
+ TB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5}%
+ \processchemicallinesegment{DB}{##3##4##5},
+ CZ##3##4##5=>\processchemicaltextelement{RZ}{##3##4##5}{#1}{0}{},
+ ZTN##4##5=>\processchemicalsmalltextconstant{ZTN}{##4##5}{\chemicaltextelementnumber}{0},
+ ZTT##4##5=>\processchemicalsmalltextelement{ZTN}{##4##5}{#1}{0}{},
+ ZBN##4##5=>\processchemicalsmalltextconstant{ZBN}{##4##5}{\chemicaltextelementnumber}{0},
+ ZBT##4##5=>\processchemicalsmalltextelement{ZBN}{##4##5}{#1}{0}{},
+ ZN##3##4##5=>\processchemicaltextconstant{ZN}{##3##4##5}{\chemicaltextelementnumber}{0},
+ ZT##3##4##5=>\processchemicaltextelement{ZN}{##3##4##5}{#1}{0}{},
+ Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}
+ {l,l,t,r,r,r,b,l},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}}
+
+\def\executechemicalTHREE[#1]%
+ {\setchemicalname THREE
+ %
+ \setchemicalmaximum 3
+ \setchemicaldistance 289
+ \setchemicalsubstitute 952
+ %
+ \setchemicalrotation 1 1 0 0 -1 -1 0 0 1
+ \setchemicalrotation 2 -0.5 -0.866 -0.866 0.5 0.5 0.866 0.866 -0.5
+ \setchemicalrotation 3 -0.5 0.866 0.866 0.5 0.5 -0.866 -0.866 -0.5
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 120 210 300 30
+ \setchemicalangle 3 240 330 60 150
+ %
+ \setchemicaltranslate 1 -1000 0
+ \setchemicaltranslate 2 0 1000
+ \setchemicaltranslate 3 1000 0
+ \setchemicaltranslate 4 0 -1000
+ %
+ \setchemicallinesegment B 577 0 -289 -500
+ \setchemicallinesegment SB 352 -130 -64 -370
+ \setchemicallinesegment -SB 352 -130 -289 -500
+ \setchemicallinesegment +SB 577 0 -64 -370
+ \setchemicallinesegment DB1 327 -87 -89 -327
+ \setchemicallinesegment DB2 377 -172 -39 -413
+ \setchemicallinesegment R 577 0 1077 0
+ \setchemicallinesegment -R 577 0 1010 250
+ \setchemicallinesegment +R 577 0 1010 -250
+ \setchemicallinesegment ER1 577 50 1077 50
+ \setchemicallinesegment ER2 577 -50 1077 -50
+ \setchemicallinesegment SR 837 0 1077 0
+ \setchemicallinesegment -SR 802 130 1010 250
+ \setchemicallinesegment +SR 802 -130 1010 -250
+ \setchemicallinesegment DR1 837 50 1077 50
+ \setchemicallinesegment DR2 837 -50 1077 -50
+ %
+ \setchemicaltextelement Z 577 0
+ \setchemicaltextelement RZ 1177 0
+ \setchemicaltextelement -RZ 1097 300
+ \setchemicaltextelement +RZ 1097 -300
+ \setchemicaltextelement CRZ 1077 0
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\processaction
+ [##1##2##3##4]
+ [ ROT##4=>\processchemicalrotation{##4},
+ MOV##4=>\processchemicaltranslate{##4},
+ SUB##4=>\processchemicalsubstitute{##4},
+ ADJ##4=>\processchemicaldistance{##4},
+ -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{3}
+ {l,t,r, l,r,l, r,b,l, r,l,r},
+ +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{3}
+ {l,r,b, r,r,l, r,l,t, l,l,r},
+ -SB##4=>\processchemicallinesegment{-SB}{##4},
+ +SB##4=>\processchemicallinesegment{+SB}{##4},
+ -SR##4=>\processchemicallinesegment{-SR}{##4},
+ +SR##4=>\processchemicallinesegment{+SR}{##4},
+ CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0}
+ {},
+ DB##3##4=>\processchemicallinesegment{DB}{##3##4},
+ DR##3##4=>\processchemicallinesegment{DR}{##3##4},
+ RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{3}
+ {l,r,r, t,r,l, r,l,l, b,l,r},
+ ER##3##4=>\processchemicallinesegment{ER}{##3##4},
+ SB##3##4=>\processchemicallinesegment{SB}{##3##4},
+ SR##3##4=>\processchemicallinesegment{SR}{##3##4},
+ -R##3##4=>\processchemicallinesegment{-R}{##3##4},
+ +R##3##4=>\processchemicallinesegment{+R}{##3##4},
+ B##2##3##4=>\processchemicallinesegment{B}{##2##3##4},
+ R##2##3##4=>\processchemicallinesegment{R}{##2##3##4},
+ Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+\def\executechemicalFOUR[#1]%
+ {\setchemicalname FOUR
+ %
+ \setchemicalmaximum 4
+ \setchemicaldistance 500
+ \setchemicalsubstitute 0
+ %
+ \setchemicalrotation 1 1 0 0 -1 -1 0 0 1
+ \setchemicalrotation 2 0 -1 -1 0 0 1 1 0
+ \setchemicalrotation 3 -1 0 0 1 1 0 0 -1
+ \setchemicalrotation 4 0 1 1 0 0 -1 -1 0
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 90 180 270 0
+ \setchemicalangle 3 180 270 0 90
+ \setchemicalangle 4 270 0 90 180
+ %
+ \setchemicaltranslate 1 -1000 0
+ \setchemicaltranslate 2 0 1000
+ \setchemicaltranslate 3 1000 0
+ \setchemicaltranslate 4 0 -1000
+ %
+ \setchemicallinesegment B 500 500 500 -500
+ \setchemicallinesegment SB 500 240 500 -240
+ \setchemicallinesegment -SB 500 240 500 -500
+ \setchemicallinesegment +SB 500 500 500 -240
+ \setchemicallinesegment DB1 450 240 450 -240
+ \setchemicallinesegment DB2 550 240 550 -240
+ \setchemicallinesegment EB 360 300 360 -300
+ \setchemicallinesegment R 500 500 854 854
+ \setchemicallinesegment -R 500 500 500 1000
+ \setchemicallinesegment +R 500 500 1000 500
+ \setchemicallinesegment ER1 465 535 819 889
+ \setchemicallinesegment ER2 535 465 889 819
+ \setchemicallinesegment SR 684 684 854 854
+ \setchemicallinesegment -SR 500 760 500 1000
+ \setchemicallinesegment +SR 760 500 1000 500
+ \setchemicallinesegment DR1 649 719 819 889
+ \setchemicallinesegment DR2 719 649 889 819
+ %
+ \setchemicaltextelement Z 500 500
+ \setchemicaltextelement RZ 925 925
+ \setchemicaltextelement -RZ 500 1100
+ \setchemicaltextelement +RZ 1100 500
+ \setchemicaltextelement CRZ 1038 1038
+ %
+ \setchemicaltextelement ZN 350 350
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\processaction
+ [##1##2##3##4]
+ [ PB:##4=>\beginchemicalpicture{##4},
+ PE????=>\endchemicalpicture,
+ ROT##4=>\processchemicalrotation{##4},
+ SUB##4=>\processchemicalsubstitute{##4},
+ ADJ##4=>\processchemicaldistance{##4},
+ MOV##4=>\processchemicaltranslate{##4},
+ -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{4}
+ {b,l,t,r, l,t,r,b, t,r,b,l, r,b,l,t},
+ +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{4}
+ {l,t,r,b, t,r,b,l, r,b,l,t, b,l,t,r},
+ -SB##4=>\processchemicallinesegment{-SB}{##4},
+ +SB##4=>\processchemicallinesegment{+SB}{##4},
+ -SR##4=>\processchemicallinesegment{-SR}{##4},
+ +SR##4=>\processchemicallinesegment{+SR}{##4},
+ CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0}{},
+ ZN##3##4=>\processchemicaltextconstant{ZN}{##3##4}{\chemicaltextelementnumber}{0},
+ ZT##3##4=>\processchemicaltextelement{ZN}{##3##4}{#1}{0}{},
+ DB##3##4=>\processchemicallinesegment{DB}{##3##4},
+ DR##3##4=>\processchemicallinesegment{DR}{##3##4},
+ EB##3##4=>\processchemicallinesegment{EB}{##3##4},
+ ER##3##4=>\processchemicallinesegment{ER}{##3##4},
+ RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{4}
+ {lb,lt,rt,rb, lt,rt,rb,lb, rt,rb,lb,lt, rb,lb,lt,rt},
+ SB##3##4=>\processchemicallinesegment{SB}{##3##4},
+ SR##3##4=>\processchemicallinesegment{SR}{##3##4},
+ -R##3##4=>\processchemicallinesegment{-R}{##3##4},
+ +R##3##4=>\processchemicallinesegment{+R}{##3##4},
+ B##2##3##4=>\processchemicallinesegment{B}{##2##3##4},
+ R##2##3##4=>\processchemicallinesegment{R}{##2##3##4},
+ Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+\def\executechemicalFIVE[#1]%
+ {\setchemicalname FIVE
+ %
+ \setchemicalmaximum 5
+ \setchemicaldistance 688
+ \setchemicalsubstitute 1226
+ %
+ \setchemicalrotation 1 1 0 0 -1 -1 0 0 1
+ \setchemicalrotation 2 0.309 -0.951 -0.951 -0.309 -0.309 0.940 0.951 0.309
+ \setchemicalrotation 3 -0.809 -0.588 -0.588 0.809 0.809 0.588 0.588 -0.809
+ \setchemicalrotation 4 -0.809 0.588 0.588 0.809 0.809 -0.588 -0.588 -0.809
+ \setchemicalrotation 5 0.309 0.951 0.951 -0.309 -0.309 -0.951 -0.951 0.309
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 72 162 252 342
+ \setchemicalangle 3 144 234 324 54
+ \setchemicalangle 4 216 306 36 126
+ \setchemicalangle 5 288 18 108 198
+ %
+ \setchemicaltranslate 1 -1376 0
+ \setchemicaltranslate 2 -425 1304
+ \setchemicaltranslate 3 1113 809
+ \setchemicaltranslate 4 1113 -809
+ \setchemicaltranslate 5 -425 -1304
+ %
+ \setchemicallinesegment A 1188 500 1188 -500
+ \setchemicallinesegment B 688 500 688 -500
+ \setchemicallinesegment S -263 808 688 -500
+ \setchemicallinesegment SS -116 606 541 -298
+ \setchemicallinesegment -SS -263 808 541 -298
+ \setchemicallinesegment +SS -116 606 688 -500
+ \setchemicallinesegment SB 688 240 688 -240
+ \setchemicallinesegment -SB 688 240 688 -500
+ \setchemicallinesegment +SB 688 500 688 -240
+ \setchemicallinesegment DB1 638 240 638 -240
+ \setchemicallinesegment DB2 738 240 738 -240
+ \setchemicallinesegment EB 548 340 548 -340
+ \setchemicallinesegment R 688 500 1093 794
+ \setchemicallinesegment -R 688 500 688 1000
+ \setchemicallinesegment +R 688 500 1163 345
+ \setchemicallinesegment ER1 659 540 1064 834
+ \setchemicallinesegment ER2 727 460 1122 754
+ \setchemicallinesegment SR 898 653 1093 794
+ \setchemicallinesegment -SR 688 760 688 1000
+ \setchemicallinesegment +SR 935 420 1163 345
+ \setchemicallinesegment DR1 869 693 1064 834
+ \setchemicallinesegment DR2 927 613 1122 754
+ %
+ \setchemicaltextelement Z 688 500
+ \setchemicaltextelement RZ 1188 863
+ \setchemicaltextelement -RZ 688 1100
+ \setchemicaltextelement +RZ 1258 315
+ \setchemicaltextelement CRZ 1323 947
+ %
+ \setchemicalcircsegment C -36 36 590 72 475 -345
+ \setchemicalcircsegment CC -72 0 590 72 182 -561
+ %
+ \setchemicaltextelement ZN 468 350
+ \setchemicaltextelement RN 860 625 % 1.25 Z
+ \setchemicaltextelement RTN 785 728 % .12 / 103 75
+ \setchemicaltextelement RBN 935 522
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\processaction
+ [##1##2##3##4]
+ [ FRONT????=>{\executechemicalFIVEFRONT[#1]},
+ PB:##4=>\beginchemicalpicture{##4},
+ PE????=>\endchemicalpicture,
+ ROT##4=>\processchemicalrotation{##4},
+ SUB##4=>\processchemicalsubstitute{##4},
+ ADJ##4=>\processchemicaldistance{##4},
+ MOV##4=>\processchemicaltranslate{##4},
+ -RZ##4=>\processchemicaltextelement{-RZ}{##4}{#1}{5}
+ {b,l,t,r,r, l,t,r,r,l, t,r,r,l,l, r,b,l,t,r},
+ +RZ##4=>\processchemicaltextelement{+RZ}{##4}{#1}{5}
+ {l,t,r,r,b, t,r,r,l,l, r,r,l,l,r, b,l,l,r,r},
+ -SB##4=>\processchemicallinesegment{-SB}{##4},
+ +SB##4=>\processchemicallinesegment{+SB}{##4},
+ -SR##4=>\processchemicallinesegment{-SR}{##4},
+ +SR##4=>\processchemicallinesegment{+SR}{##4},
+ -RD##4=>\processchemicaldashedlinesegment{-R}{##4},
+ +RD##4=>\processchemicaldashedlinesegment{+R}{##4},
+ -RB##4=>\processchemicaldeltalinesegment{-R}{##4},
+ +RB##4=>\processchemicaldeltalinesegment{+R}{##4},
+ CRZ##4=>\processchemicaltextelement{CRZ}{##4}{#1}{0}{},
+RTN##4=>\processchemicaltextconstant{RTN}{##4}{\chemicaltextelementnumber}{0},
+RTT##4=>\processchemicaltextelement{RTN}{##4}{#1}{0}{},
+RBN##4=>\processchemicaltextconstant{RBN}{##4}{\chemicaltextelementnumber}{0},
+RBT##4=>\processchemicaltextelement{RBN}{##4}{#1}{0}{},
+ -SS##4=>\processchemicallinesegment{-SS}{##4},
+ +SS##4=>\processchemicallinesegment{+SS}{##4},
+ CCD##4=>\processchemicaldottsegment{CC}{##4},
+ SS##3##4=>\processchemicallinesegment{SS}{##3##4},
+ RD##3##4=>\processchemicaldashedlinesegment{R}{##3##4},
+ RB##3##4=>\processchemicaldeltalinesegment{R}{##3##4},
+ ZN##3##4=>\processchemicaltextconstant{ZN}{##3##4}{\chemicaltextelementnumber}{0},
+ ZT##3##4=>\processchemicaltextelement{ZN}{##3##4}{#1}{0}{},
+RN##3##4=>\processchemicaltextconstant{RN}{##3##4}{\chemicaltextelementnumber}{0},
+RT##3##4=>\processchemicaltextelement{RN}{##3##4}{#1}{0}{},
+ AU##3##4=>\processchemicaluparrowsegment{A}{##3##4},
+ AD##3##4=>\processchemicaldownarrowsegment{A}{##3##4},
+ CC##3##4=>\processchemicalcircsegment{CC}{##3##4},
+ CD##3##4=>\processchemicaldottsegment{C}{##3##4},
+ DB##3##4=>\processchemicallinesegment{DB}{##3##4},
+ DR##3##4=>\processchemicallinesegment{DR}{##3##4},
+ EB##3##4=>\processchemicallinesegment{EB}{##3##4},
+ ER##3##4=>\processchemicallinesegment{ER}{##3##4},
+ RZ##3##4=>\processchemicaltextelement{RZ}{##3##4}{#1}{5}
+ {l,l,r,r,r, l,r,r,b,l, r,r,b,l,t, r,l,l,t,r},
+ SB##3##4=>\processchemicallinesegment{SB}{##3##4},
+ SR##3##4=>\processchemicallinesegment{SR}{##3##4},
+ -R##3##4=>\processchemicallinesegment{-R}{##3##4},
+ +R##3##4=>\processchemicallinesegment{+R}{##3##4},
+ B##2##3##4=>\processchemicallinesegment{B}{##2##3##4},
+ C##2##3##4=>\processchemicalcircsegment{C}{##2##3##4},
+ R##2##3##4=>\processchemicallinesegment{R}{##2##3##4},
+ S##2##3##4=>\processchemicallinesegment{S}{##2##3##4},
+ Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+\def\executechemicalSIX[#1]%
+ {\setchemicalname SIX
+ %
+ \setchemicalmaximum 6
+ \setchemicalsubstitute 1375
+ \setchemicaldistance 866
+ %
+ \setchemicalrotation 1 1 0 0 -1 -1 0 0 1
+ \setchemicalrotation 2 0.5 -0.866 -0.866 -0.5 -0.5 0.866 0.866 0.5
+ \setchemicalrotation 3 -0.5 -0.866 -0.866 0.5 0.5 0.866 0.866 -0.5
+ \setchemicalrotation 4 -1 0 0 1 1 0 0 -1
+ \setchemicalrotation 5 -0.5 0.866 0.866 0.5 0.5 -0.866 -0.866 -0.5
+ \setchemicalrotation 6 0.5 0.866 0.866 -0.5 -0.5 -0.866 -0.866 0.5
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 60 150 240 330
+ \setchemicalangle 3 120 210 300 30
+ \setchemicalangle 4 180 270 0 90
+ \setchemicalangle 5 240 330 60 150
+ \setchemicalangle 6 300 30 120 210
+ %
+ \setchemicaltranslate 1 -1732 0
+ \setchemicaltranslate 2 -866 1500
+ \setchemicaltranslate 3 866 1500
+ \setchemicaltranslate 4 1732 0
+ \setchemicaltranslate 5 866 -1500
+ \setchemicaltranslate 6 -866 -1500
+ %
+ \setchemicallinesegment A 1386 500 1386 -500
+ \setchemicallinesegment S 0 1000 866 -500
+ \setchemicallinesegment SS 125 783 741 -283
+ \setchemicallinesegment -SS 0 1000 741 -283
+ \setchemicallinesegment +SS 125 783 866 -500
+ \setchemicallinesegment B 866 500 866 -500
+ \setchemicallinesegment SB 866 240 866 -240
+ \setchemicallinesegment -SB 866 240 866 -500
+ \setchemicallinesegment +SB 866 500 866 -240
+ \setchemicallinesegment DB1 816 240 816 -240
+ \setchemicallinesegment DB2 916 240 916 -240
+ \setchemicallinesegment EB 726 340 726 -340
+ \setchemicallinesegment R 866 500 1299 750
+ \setchemicallinesegment -R 866 500 866 1000
+ \setchemicallinesegment +R 866 500 1299 250
+ \setchemicallinesegment ER1 841 543 1274 793
+ \setchemicallinesegment ER2 891 457 1324 707
+ \setchemicallinesegment SR 1091 630 1299 750
+ \setchemicallinesegment -SR 866 740 866 1000
+ \setchemicallinesegment +SR 1091 370 1299 250
+ \setchemicallinesegment DR1 1066 673 1274 793
+ \setchemicallinesegment DR2 1116 588 1324 707
+ \setchemicallinesegment MID1 0 1000 -150 200
+ \setchemicallinesegment MID2 0 -1000 -150 -200
+ \setchemicallinesegment MIDS1 0 1000 -180 0
+ \setchemicallinesegment MIDS2 0 -1000 -180 0
+ %
+ \setchemicalcircsegment C -30 30 700 60 600 -346
+ \setchemicalcircsegment CC -60 0 700 60 350 -606
+ %
+ \setchemicaltextelement Z 866 500
+ \setchemicaltextelement RZ 1386 800
+ \setchemicaltextelement -RZ 866 1100
+ \setchemicaltextelement +RZ 1386 200
+ \setchemicaltextelement CRZ 1524 880
+ \setchemicaltextelement MIDZ -150 0
+ %
+ \setchemicaltextelement ZN 589 350
+ \setchemicaltextelement RN 1083 625 % 1.25 Z
+ \setchemicaltextelement RTN 1008 755 % .12 / 130 75
+ \setchemicaltextelement RBN 1158 495
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\processaction
+ [##1##2##3##4##5]
+ [ FRONT????=>{\executechemicalSIXFRONT[#1]},
+ MID????=>\processchemicallinesegment{MID}{1????},
+ MIDS????=>\processchemicallinesegment{MIDS}{1????},
+ MIDZ????=>\processchemicaltextelement{MIDZ}{1????}{#1}{0}{},
+ PB:##4##5=>\beginchemicalpicture{##4##5},
+ PE????=>\endchemicalpicture,
+ ROT##4##5=>\processchemicalrotation{##4##5},
+ SUB##4##5=>\processchemicalsubstitute{##4##5},
+ ADJ##4##5=>\processchemicaldistance{##4##5},
+ MOV##4##5=>\processchemicaltranslate{##4##5},
+ -RZ##4##5=>\processchemicaltextelement{-RZ}{##4##5}{#1}{6}
+ {b,l,l,t,r,r, l,l,r,r,r,l, t,r,r,b,l,l, r,r,l,l,l,r},
+ +RZ##4##5=>\processchemicaltextelement{+RZ}{##4##5}{#1}{6}
+ {l,t,r,r,b,l, r,r,r,l,l,l, r,b,l,l,t,r, l,l,l,r,r,r},
+ -SB##4##5=>\processchemicallinesegment{-SB}{##4##5},
+ +SB##4##5=>\processchemicallinesegment{+SB}{##4##5},
+ -SR##4##5=>\processchemicallinesegment{-SR}{##4##5},
+ +SR##4##5=>\processchemicallinesegment{+SR}{##4##5},
+ -RD##4##5=>\processchemicaldashedlinesegment{-R}{##4##5},
+ +RD##4##5=>\processchemicaldashedlinesegment{+R}{##4##5},
+ -RB##4##5=>\processchemicaldeltalinesegment{-R}{##4##5},
+ +RB##4##5=>\processchemicaldeltalinesegment{+R}{##4##5},
+ CRZ##4##5=>\processchemicaltextelement{CRZ}{##4##5}{#1}{0}{},
+ -SS##4##5=>\processchemicallinesegment{-SS}{##4##5},
+ +SS##4##5=>\processchemicallinesegment{+SS}{##4##5},
+ CCD##4##5=>\processchemicaldottsegment{CC}{##4##5},
+RTN##4##5=>\processchemicaltextconstant{RTN}{##4##5}{\chemicaltextelementnumber}{0},
+RTT##4##5=>\processchemicaltextelement{RTN}{##4##5}{#1}{0}{},
+RBN##4##5=>\processchemicaltextconstant{RBN}{##4##5}{\chemicaltextelementnumber}{0},
+RBT##4##5=>\processchemicaltextelement{RBN}{##4##5}{#1}{0}{},
+ SS##3##4##5=>\processchemicallinesegment{SS}{##3##4##5},
+ RD##3##4##5=>\processchemicaldashedlinesegment{R}{##3##4##5},
+ RB##3##4##5=>\processchemicaldeltalinesegment{R}{##3##4##5},
+ ZN##3##4##5=>\processchemicaltextconstant{ZN}{##3##4##5}{\chemicaltextelementnumber}{0},
+ ZT##3##4##5=>\processchemicaltextelement{ZN}{##3##4##5}{#1}{0}{},
+RN##3##4##5=>\processchemicaltextconstant{RN}{##3##4##5}{\chemicaltextelementnumber}{0},
+RT##3##4##5=>\processchemicaltextelement{RN}{##3##4##5}{#1}{0}{},
+ AU##3##4##5=>\processchemicaluparrowsegment{A}{##3##4##5},
+ AD##3##4##5=>\processchemicaldownarrowsegment{A}{##3##4##5},
+ CD##3##4##5=>\processchemicaldottsegment{C}{##3##4##5},
+ CC##3##4##5=>\processchemicalcircsegment{CC}{##3##4##5},
+ DB##3##4##5=>\processchemicallinesegment{DB}{##3##4##5},
+ EB##3##4##5=>\processchemicallinesegment{EB}{##3##4##5},
+ ER##3##4##5=>\processchemicallinesegment{ER}{##3##4##5},
+ RZ##3##4##5=>\processchemicaltextelement{RZ}{##3##4##5}{#1}{6}
+ {l,l,t,r,r,b, l,r,r,r,l,l, r,r,b,l,l,t, r,l,l,l,r,r},
+ SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5},
+ SR##3##4##5=>\processchemicallinesegment{SR}{##3##4##5},
+ DR##3##4##5=>\processchemicallinesegment{DR}{##3##4##5},
+ -R##3##4##5=>\processchemicallinesegment{-R}{##3##4##5},
+ +R##3##4##5=>\processchemicallinesegment{+R}{##3##4##5},
+ B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5},
+ C##2##3##4##5=>\processchemicalcircsegment{C}{##2##3##4##5},
+ R##2##3##4##5=>\processchemicallinesegment{R}{##2##3##4##5},
+ S##2##3##4##5=>\processchemicallinesegment{S}{##2##3##4##5},
+ Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}
+
+\def\executechemicalSEVEN[#1]% incomplete !
+ {\setchemicalname SEVEN
+ %
+ \setchemicalmaximum 7
+ \setchemicalsubstitute -
+ \setchemicaldistance 1038
+ %
+ \setchemicalrotation 1 .623 .782 - - - - - -
+ \setchemicalrotation 2 -.223 .975 - - - - - -
+ \setchemicalrotation 3 -.901 .434 - - - - - -
+ \setchemicalrotation 4 -.901 -.434 - - - - - -
+ \setchemicalrotation 5 -.223 -.975 - - - - - -
+ \setchemicalrotation 6 .623 -.782 - - - - - -
+ \setchemicalrotation 7 1 0 - - - - - -
+ %
+ \setchemicalangle 1 0 - - -
+ \setchemicalangle 2 51.429 - - -
+ \setchemicalangle 3 102.857 - - -
+ \setchemicalangle 4 154.286 - - -
+ \setchemicalangle 5 205.714 - - -
+ \setchemicalangle 6 257.143 - - -
+ \setchemicalangle 7 308.571 - - -
+ %
+ \setchemicaltranslate 1 - -
+ \setchemicaltranslate 2 - -
+ \setchemicaltranslate 3 - -
+ \setchemicaltranslate 4 - -
+ \setchemicaltranslate 5 - -
+ \setchemicaltranslate 6 - -
+ \setchemicaltranslate 7 - -
+ %
+ \setchemicallinesegment B 1038 500 1038 -500
+ \setchemicallinesegment SB 1038 240 1038 -240
+ \setchemicallinesegment -SB 1038 240 1038 -500
+ \setchemicallinesegment +SB 1038 500 1038 -240
+ %
+ \setchemicaltextelement Z 1038 500
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\processaction
+ [##1##2##3##4##5]
+ [ PB:##4##5=>\beginchemicalpicture{##4##5},
+ PE????=>\endchemicalpicture,
+ %ROT##4##5=>\processchemicalrotation{##4},
+ %SUB##4##5=>\processchemicalsubstitute{##4##5},
+ %ADJ##4##5=>\processchemicaldistance{##4##5},
+ %MOV##4##5=>\processchemicaltranslate{##4##5},
+ -SB##4##5=>\processchemicallinesegment{-SB}{##4##5},
+ +SB##4##5=>\processchemicallinesegment{+SB}{##4##5},
+ SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5},
+ B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5},
+ Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}
+
+\def\executechemicalEIGHT[#1]% incomplete !
+ {\setchemicalname EIGHT
+ %
+ \setchemicalmaximum 8
+ %\setchemicalsubstitute 1307
+ \setchemicaldistance 1207
+ %
+ \setchemicalrotation 1 .707 .707 - - - - - -
+ \setchemicalrotation 2 0 1 - - - - - -
+ \setchemicalrotation 3 -.707 .707 - - - - - -
+ \setchemicalrotation 4 -1 0 - - - - - -
+ \setchemicalrotation 5 -.707 -.707 - - - - - -
+ \setchemicalrotation 6 0 -1 - - - - - -
+ \setchemicalrotation 7 .707 -.707 - - - - - -
+ \setchemicalrotation 8 1 0 - - - - - -
+ %
+ \setchemicalangle 1 45 - - -
+ \setchemicalangle 2 90 - - -
+ \setchemicalangle 3 135 - - -
+ \setchemicalangle 4 180 - - -
+ \setchemicalangle 5 225 - - -
+ \setchemicalangle 6 270 - - -
+ \setchemicalangle 7 315 - - -
+ \setchemicalangle 8 0 - - -
+ %
+ \setchemicaltranslate 1 -2414 0
+ \setchemicaltranslate 2 -1706 1706
+ \setchemicaltranslate 3 0 2414
+ \setchemicaltranslate 4 1706 1706
+ \setchemicaltranslate 5 2414 0
+ \setchemicaltranslate 6 1706 -1706
+ \setchemicaltranslate 7 0 -2414
+ \setchemicaltranslate 8 -1706 -1706
+ %
+ \setchemicallinesegment B 1207 500 1207 -500
+ \setchemicallinesegment SB 1207 240 1207 -240
+ \setchemicallinesegment -SB 1207 240 1207 -500
+ \setchemicallinesegment +SB 1207 500 1207 -240
+ %
+ \setchemicaltextelement Z 1207 500
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\processaction
+ [##1##2##3##4##5]
+ [ PB:##4##5=>\beginchemicalpicture{##4##5},
+ PE????=>\endchemicalpicture,
+ %SUB##4##5=>\processchemicalsubstitute{##4##5},
+ ADJ##4##5=>\processchemicaldistance{##4##5},
+ MOV##4##5=>\processchemicaltranslate{##4##5},
+ -SB##4##5=>\processchemicallinesegment{-SB}{##4##5},
+ +SB##4##5=>\processchemicallinesegment{+SB}{##4##5},
+ SB##3##4##5=>\processchemicallinesegment{SB}{##3##4##5},
+ B##2##3##4##5=>\processchemicallinesegment{B}{##2##3##4##5},
+ Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}
+
+\def\executechemicalFIVEFRONT[#1]%
+ {\executechemicalFIVE[]%
+ %
+ \setchemicalname FIVEFRONT
+ %
+ \setchemicallinesegment -R 688 500 688 100
+ \setchemicallinesegment +R 688 500 688 900
+ %
+ \setchemicaltextelement -RZ 0 -1300
+ \setchemicaltextelement +RZ 0 1300
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\def\chemicalrotation{2}%
+ \processaction
+ [##1##2##3##4]
+ [ -RZ##4=>\processchemicalunrotatedtextelement{Z}{-RZ}{##4}{#1}{5}
+ {,,,,, t,t,t,t,t},
+ +RZ##4=>\processchemicalunrotatedtextelement{Z}{+RZ}{##4}{#1}{5}
+ {,,,,, b,b,b,b,b},
+ -SB##4=>\processchemicallinesegment{-SB}{##4},
+ +SB##4=>\processchemicallinesegment{+SB}{##4},
+ SB##3##4=>\processchemicallinesegment{SB}{##3##4},
+ -R##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##3##4},
+ +R##3##4=>\processchemicalunrotatedlinesegment{b}{+R}{##3##4},
+ BB##3##4=>\processchemicalzlinesegment{B}{##3##4},
+ R##2##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##2##3##4}%
+ \processchemicalunrotatedlinesegment{b}{+R}{##2##3##4},
+ B##2##3##4=>\processchemicallinesegment{B}{##2##3##4},
+ Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+\def\executechemicalSIXFRONT[#1]%
+ {\executechemicalSIX[]%
+ %
+ \setchemicalname SIXFRONT
+ %
+ \setchemicallinesegment -R 866 500 866 100
+ \setchemicallinesegment +R 866 500 866 900
+ %
+ \setchemicaltextelement -RZ 0 -1300
+ \setchemicaltextelement +RZ 0 1300
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\def\chemicalrotation{2}%
+ \processaction
+ [##1##2##3##4]
+ [ -RZ##4=>\processchemicalunrotatedtextelement{Z}{-RZ}{##4}{#1}{6}
+ {,,,,,, t,t,t,t,t,t},
+ +RZ##4=>\processchemicalunrotatedtextelement{Z}{+RZ}{##4}{#1}{6}
+ {,,,,,, b,b,b,b,b,b},
+ -SB##4=>\processchemicallinesegment{-SB}{##4},
+ +SB##4=>\processchemicallinesegment{+SB}{##4},
+ SB##3##4=>\processchemicallinesegment{SB}{##3##4},
+ -R##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##3##4},
+ +R##3##4=>\processchemicalunrotatedlinesegment{b}{+R}{##3##4},
+ BB##3##4=>\processchemicalzlinesegment{B}{##3##4},
+ R##2##3##4=>\processchemicalunrotatedlinesegment{t}{-R}{##2##3##4}%
+ \processchemicalunrotatedlinesegment{b}{+R}{##2##3##4},
+ B##2##3##4=>\processchemicallinesegment{B}{##2##3##4},
+ Z##2##3##4=>\processchemicaltextelement{Z}{##2##3##4}{#1}{0}{},
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+% 1 : 0
+% 2 : -115
+% 3* : -195
+% 3 : -165
+% 4 : -245
+
+\def\executechemicalCARBON[#1]%
+ {\setchemicalname CARBON
+ %
+ \setchemicalmaximum 4
+ \setchemicaldistance 0
+ \setchemicalsubstitute 0
+ %
+ \setchemicalrotation 1 1 0 0 -1 -1 0 0 1
+ \setchemicalrotation 2 -0.423 -0.906 -0.906 0.423 0.423 0.906 0.906 -0.423
+ \setchemicalrotation 3 -0.966 -0.259 -0.259 0.966 0.966 0.259 0.259 -0.966
+ \setchemicalrotation 3* -0.966 0.259 0.259 0.966 0.966 -0.259 -0.259 -0.966
+ \setchemicalrotation 4 -0.423 0.906 0.906 0.423 0.423 -0.906 -0.906 -0.423
+ %
+ \setchemicalangle 1 0 90 180 270
+ \setchemicalangle 2 115 205 295 25
+ \setchemicalangle 3 165 255 345 75
+ \setchemicalangle 3* 195 285 15 105
+ \setchemicalangle 4 245 335 65 155
+ %
+ \setchemicaltranslate 1 -1500 0
+ \setchemicaltranslate 2 0 1500
+ \setchemicaltranslate 3 1500 0
+ \setchemicaltranslate 4 0 -1500
+ %
+ \setchemicallinesegment B1 500 0 1000 0
+ \setchemicallinesegment B2 300 0 1000 0
+ \setchemicallinesegment B3 500 0 1000 0
+ \setchemicallinesegment B4 300 0 1000 0
+ %
+ \setchemicaltextelement Z 1100 0
+ %
+ \setchemicalcircsegment C 0 360 500 360 0 -500
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\processaction
+ [##1##2##3##4##5]
+ [ MIR????=>\setchemicalmirror{3},
+ -MIR????=>\resetchemicalmirror{3},
+ *MIR????=>\togglechemicalmirror{3},
+ CB????=>\processlocalchemicals{B,C,Z},
+ C????=>\processchemicalcircsegment{C}{1????},
+ -ROT##5=>\reversechemical{ROT}{##5}{3,4,1,2},
+ ROT##4##5=>\processchemicalrotation{##4##5},
+ MOV##4##5=>\processchemicaltranslate{##4##5},
+ CB##3##4##5=>\processlocalchemicals
+ {ROT##3,C,B,Z2..4,
+ MOV##3,*MIR,-ROT##3,C,B,Z2..4},
+ B##2##3##4##5=>\processprivatechemicallinesegment{B}{##2##3##4##5},
+ Z##2##3##4##5=>\processchemicaltextelement{Z}{##2##3##4##5}{#1}{4}
+ {l,t,r,b, t,r,b,l, r,b,l,t, b,l,t,r},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}
+
+% 1: 45 2: -90 3: -225
+% 4: -45 5: -135 6: -270
+
+\newif\ifNEWMANstagger \NEWMANstaggertrue
+
+\def\executechemicalNEWMANSTAGGER%
+ {\NEWMANstaggertrue\executechemicalNEWMAN}
+
+\def\executechemicalNEWMANECLIPSE%
+ {\NEWMANstaggerfalse\executechemicalNEWMAN}
+
+\def\executechemicalNEWMAN[#1]%
+ {\setchemicalname NEWMAN
+ %
+ \setchemicalmaximum 6
+ \setchemicaldistance 0
+ \setchemicalsubstitute 0
+ %
+ \ifNEWMANstagger
+ \setchemicalrotation 1 0.707 0.707 0.707 -0.707 -0.707 -0.707 -0.707 0.707
+ \setchemicalrotation 2 0 -1 -1 0 0 1 1 0
+ \setchemicalrotation 3 -0.707 0.707 0.707 0.707 0.707 -0.707 -0.707 -0.707
+ \else
+ \setchemicalrotation 1 .866 -.5 -.5 -.866 -.866 .5 .5 .866
+ \setchemicalrotation 2 -.259 .966 .966 .259 .259 -.966 -.966 -.259
+ \setchemicalrotation 3 -.5 -.866 -.866 .5 .5 .866 .866 -.5
+ \fi
+ \setchemicalrotation 4 0.707 -0.707 -0.707 -0.707 -0.707 0.707 0.707 0.707
+ \setchemicalrotation 5 -0.707 -0.707 -0.707 0.707 0.707 0.707 0.707 -0.707
+ \setchemicalrotation 6 0 1 1 0 0 -1 -1 0
+ %
+ \ifNEWMANstagger
+ \setchemicalangle 1 315 45 135 225
+ \setchemicalangle 2 90 180 270 0
+ \setchemicalangle 3 225 315 45 135
+ \else
+ \setchemicalangle 1 30 120 210 300
+ \setchemicalangle 2 255 345 75 165
+ \setchemicalangle 3 120 210 300 30
+ \fi
+ \setchemicalangle 4 45 135 225 315
+ \setchemicalangle 5 135 225 315 45
+ \setchemicalangle 6 270 0 90 180
+ %
+ \setchemicaltranslate 1 -1500 0
+ \setchemicaltranslate 2 0 1500
+ \setchemicaltranslate 3 1500 0
+ \setchemicaltranslate 4 0 -1500
+ %
+ \setchemicallinesegment B1 0 0 1000 0
+ \setchemicallinesegment B2 0 0 1000 0
+ \setchemicallinesegment B3 0 0 1000 0
+ \setchemicallinesegment B4 500 0 1000 0
+ \setchemicallinesegment B5 500 0 1000 0
+ \setchemicallinesegment B6 500 0 1000 0
+ %
+ \setchemicaltextelement Z 1100 0
+ %
+ \setchemicalcircsegment C 0 360 500 360 0 -500
+ %
+ \def\processchemical[##1##2##3##4]%
+ {\processaction
+ [##1##2##3##4]
+ [STAGGER????=>{\executechemicalNEWMANSTAGGER[#1]},
+ ECLIPSE????=>{\executechemicalNEWMANECLIPSE[#1]},
+ B????=>\processlocalchemicals{B1..6},
+ CB????=>\processlocalchemicals{B1..6,C,Z1..6},
+ C????=>\processchemicalcircsegment{C}{1????},
+ ROT##4=>\processchemicalrotation{##4},
+ MOV##4=>\processchemicaltranslate{##4},
+ B##2##3##4=>\processprivatechemicallinesegment{B}{##2##3##4},
+ Z##2##3##4=>\ifNEWMANstagger
+ \processchemicaltextelement{Z}{##2##3##4}{#1}{6}
+ {l,t,r,l,r,b, l,r,l,r,r,l, r,b,l,r,l,t, r,l,r,l,l,r}%
+ \else
+ \processchemicaltextelement{Z}{##2##3##4}{#1}{6}
+ {l,r,t,t,r,b, t,b,r,r,b,l, r,l,b,b,l,t, b,t,l,l,t,r}%
+ \fi,
+ \s!unknown=>\unknownchemical{##1##2##3##4}]}}
+
+\def\executechemicalCHAIR[#1]% smaller
+ {\setchemicalname CHAIR
+ %
+ \setchemicalmaximum 6
+ %
+ \setchemicallinesegment B1 1600 800 2800 -800
+ \setchemicallinesegment B2 2800 -800 800 0
+ \setchemicallinesegment B3 800 0 -1600 -800
+ \setchemicallinesegment B4 -1600 -800 -2800 800
+ \setchemicallinesegment B5 -2800 800 -800 0
+ \setchemicallinesegment B6 -800 0 1600 800
+ %
+ \setchemicallinesegment +R1 1600 800 1600 1600
+ \setchemicallinesegment +R2 2800 -800 2800 -1600
+ \setchemicallinesegment +R3 800 0 800 800
+ \setchemicallinesegment +R4 -1600 -800 -1600 -1600
+ \setchemicallinesegment +R5 -2800 800 -2800 1600
+ \setchemicallinesegment +R6 -800 0 -800 -800
+ %
+ \setchemicallinesegment -R1 1600 800 2350 522 % 750 278
+ \setchemicallinesegment -R2 2800 -800 3493 -400
+ \setchemicallinesegment -R3 800 0 1329 -600 % 528 600
+ \setchemicallinesegment -R4 -1600 -800 -2350 -522 % 750 278
+ \setchemicallinesegment -R5 -2800 800 -3493 400
+ \setchemicallinesegment -R6 -800 0 -1329 600 % 528 600
+ %
+ \setchemicaltextelement +RZ1 1600 1800
+ \setchemicaltextelement +RZ2 2800 -1800
+ \setchemicaltextelement +RZ3 800 1000
+ \setchemicaltextelement +RZ4 -1600 -1800
+ \setchemicaltextelement +RZ5 -2800 1800
+ \setchemicaltextelement +RZ6 -800 -1000
+ %
+ \setchemicaltextelement -RZ1 2538 453 % 200 lang
+ \setchemicaltextelement -RZ2 3666 -300
+ \setchemicaltextelement -RZ3 1460 -750
+ \setchemicaltextelement -RZ4 -2538 -453
+ \setchemicaltextelement -RZ5 -3666 300
+ \setchemicaltextelement -RZ6 -1460 750
+ %
+ \def\processchemical[##1##2##3##4##5]%
+ {\def\chemicalrotation{1}%
+ \processaction
+ [##1##2##3##4##5]
+ [ B????=>\processlocalchemicals{B1,B2,B3,B4,B5,B6},
+ -R????=>\processlocalchemicals{-R1,-R2,-R3,-R4,-R5,-R6},
+ +R????=>\processlocalchemicals{+R1,+R2,+R3,+R4,+R5,+R6},
+ B##2????=>{\getchemicallinesegment[0][B##2]},
+ -RZ##4????=>{\getchemicalfixedtextelement[-RZ##4][1][##4][l,l,tc,r,r,bc][#1]},
+ +RZ##4????=>{\getchemicalfixedtextelement[+RZ##4][1][##4][c][#1]},
+ -R##3????=>{\getchemicallinesegment[0][-R##3]},
+ +R##3????=>{\getchemicallinesegment[0][+R##3]},
+ \s!unknown=>\unknownchemical{##1##2##3##4##5}]}}
+
+\def\executechemicalarrow#1#2[#3]%
+ {\dogetcommalistelement1\from#3\to\toptext
+ \dogetcommalistelement2\from#3\to\bottext
+ \def\dochemicaltext##1%
+ {\dosetsubscripts%
+ $\@@dochemicalstyle{\@@localchemicalformat\strut##1}$%
+ \doresetsubscripts}%
+ \doifelse\@@chemicallocation\v!intext
+ {#1{\dochemicaltext\toptext}}%
+ {\setbox\chemicalsymbols=\hbox
+ {\box\chemicalsymbols
+ \vbox{\halign{##\cr
+ \hbox to 3em{\hss\dochemicaltext{\toptext}\hss}\cr
+ #2%
+ \hbox to 3em{\hss\dochemicaltext{\bottext}\hss}\cr}}}}}
+
+\def\executechemicalGIVES
+ {\executechemicalarrow
+ {\chemicalsinglepicturearrow}% nodig
+ {\rightarrowfill\cr}}
+
+\def\executechemicalEQUILIBRIUM
+ {\executechemicalarrow
+ {\chemicaldoublepicturearrow}% nodig
+ {\rightarrowfill\cr\leftarrowfill\cr}}
+
+\def\executechemicalMESOMERIC
+ {\executechemicalarrow
+ {\chemicalsinglepicturearrow}% nodig
+ {$\leftarrow\hskip-1em$\rightarrowfill\cr}}
+
+\def\executechemicalsign#1[#2]%
+ {\doifelse\@@chemicallocation\v!intext
+ {\dosetsubscripts
+ $\@@dochemicalstyle{\@@localchemicalformat#1}$%
+ \doresetsubscripts}
+ {\setbox\chemicalsymbols\hbox
+ {\box\chemicalsymbols
+ \dosetsubscripts
+ $\@@dochemicalstyle{\@@localchemicalformat#1}$%
+ \doresetsubscripts}}}
+
+\def\executechemicalPLUS
+ {\executechemicalsign{+}}
+
+\def\executechemicalMINUS
+ {\executechemicalsign{-}}
+
+\def\executechemicalEQUAL
+ {\executechemicalsign{=}}
+
+\def\executechemicalSPACE[#1]%
+ {\doifnot\@@chemicallocation\v!intext
+ {\setbox\chemicalsymbols\hbox
+ {\box\chemicalsymbols
+ \quad}}}
+
+\def\executechemicalCHEM[#1]%
+ {\doifnot\@@chemicallocation\v!intext
+ {\setbox\chemicalsymbols\hbox
+ {\box\chemicalsymbols
+ $\@@dochemicalstyle{\@@localchemicalformat#1}$}}}
+
+\def\executechemicalTEXT[#1]%
+ {\doifnot\@@chemicallocation\v!intext
+ {\setbox\chemicalsymbols\hbox
+ {\box\chemicalsymbols#1}}}
+
+%\def\executechemicalLOW[#1]%
+% {\setlowsubscripts}
+%
+%\def\executechemicalHIGH[#1]%
+% {\sethighsubscripts}
+
+\def\putchemicalrule#1#2#3#4%
+ {\ifcase\chemicaldrawingmode
+ \putrule from {#1} {#2} to {#3} {#4}
+ \or
+ \psline(#1,#2)(#3,#4)%
+ \or
+ \bgroup
+ \!!counta=#1\!!countb=#2\!!countc=#3\!!countd=#4\relax
+ \global\MPdrawingdonetrue
+ \setchemicalattributes
+ \startMPdrawing
+ x1 := \MPdivten[\the\!!counta]u ;
+ y1 := \MPdivten[\the\!!countb]u ;
+ x2 := \MPdivten[\the\!!countc]u ;
+ y2 := \MPdivten[\the\!!countd]u ;
+ draw z1--z2 ;
+ \stopMPdrawing
+ \egroup
+ \fi}
+
+\def\executechemicalcomplex#1%
+ {\bgroup
+ \putchemicalrule {0} {-\@@chemicalbottom} {0} {\@@chemicaltop}%
+ \putchemicalrule {0} {\@@chemicaltop} {#1150} {\@@chemicaltop}%
+ \putchemicalrule {0} {-\@@chemicalbottom} {#1150} {-\@@chemicalbottom}%
+ \egroup}
+
+\def\executechemicalOPENCOMPLEX[#1]%
+ {\executechemicalcomplex+\ignorespaces
+ \executechemicalSPACE[]}
+
+\def\executechemicalCLOSECOMPLEX[#1]%
+ {\executechemicalSPACE[]%
+ \executechemicalcomplex-\ignorespaces}
+
+% nog niet door midden as!
+
+\def\executechemicalverticalsymbol#1#2%
+ {\executechemicalTEXT
+ [$\left#1\relax
+ \dimen0=\@@chemicalunit
+ \scratchcounter=\@@chemicaltop
+ \advance\scratchcounter by \@@chemicalbottom
+ \dimen0=\scratchcounter\dimen0
+ \vcenter to \dimen0{}
+ \dimen2=\@@chemicalunit
+ \dimen2=\@@chemicalright\dimen0
+ \vcenter{\leftskip1em\hsize\dimen2\relax\strut#2\strut}%
+ \right.$]}%
+
+\def\executechemicalUPARROW[#1]%
+ {\executechemicalverticalsymbol\uparrow{#1}}
+
+\def\executechemicalDOWNARROW[#1]%
+ {\executechemicalverticalsymbol\downarrow{#1}}
+
+\def\executechemicalUPDOWNARROW[#1]%
+ {\executechemicalverticalsymbol\updownarrow{#1}}
+
+\let\setchemicalattributes\relax
+
+\setupchemical
+ [\c!width=0,
+ \c!height=0,
+ \c!left=0,
+ \c!right=0,
+ \c!top=0,
+ \c!bottom=0,
+ \c!bodyfont=\the\bodyfontsize,
+ \c!resolution=\outputresolution,
+ \c!scale=\v!medium,
+ \c!size=\v!medium,
+ \c!textsize=\v!big,
+ \c!frame=\v!off,
+ \c!axis=\v!off,
+ \c!state=\v!start,
+ \c!style=\rm,
+ \c!location=,
+ \c!option=,
+ \c!offset=LOW,
+ \c!alternative=1,
+ \c!color=,
+ \c!rulethickness=,
+ \c!rulecolor=,
+ \c!factor=1]
+
+% Tijdelijk plaatsen we deze extra macro's hier.
+%
+% mathontop: \mtop {} {}
+% textontop: \ttop {} {}
+
+\def\putontop#1#2%
+ {\vbox
+ {\halign
+ {\strut\hss##\hss\cr
+ #1\cr
+ #2\cr}}}
+
+\def\ttop#1#2%
+ {\putontop{\tx#1}{#2}}
+
+\def\mtop#1#2%
+ {\vbox
+ {\offinterlineskip
+ \halign
+ {\hss##\hss\cr
+ $\scriptscriptstyle#1$\cr
+ \noalign{\vskip.5ex}%
+ $#2$\cr}}}
+
+\def\ctop#1#2%
+ {\vbox
+ {\offinterlineskip
+ \halign
+ {\hss##\hss\cr
+ $\@@dochemicalstyle{\@@localchemicalformat\scriptscriptstyle#1}$\cr
+ \noalign{\vskip.5ex}%
+ $\@@dochemicalstyle{\@@localchemicalformat#2}$\cr}}}
+
+%D Here are a couple of \CONTEXT\ goodies:
+%D
+%D \startitemize
+%D \item styles hooked into \CONTEXT\ style mechanism
+%D \item support for color and rulethickness (mp mode only)
+%D \item position tracking
+%D \stopopsoming
+
+\ifCONTEXT \else \protect \endinput \fi
+
+\def\setchemicalattributes
+ {\scratchdimen\@@chemicalchemicalrulethickness
+ \def\chemicalattributes
+ {withpen pencircle scaled \the\scratchdimen\space
+ withcolor }%
+ \doifelsenothing\@@chemicalchemicalrulecolor
+ {\edef\chemicalattributes{\chemicalattributes black}}
+ {\edef\chemicalattributes
+ {\chemicalattributes \MPcolor{\@@chemicalchemicalrulecolor}}}%
+ \startMPdrawing
+ drawoptions (\chemicalattributes) ;
+ \stopMPdrawing}
+
+\let\@@chemicalcolor\empty
+
+\def\@@dochemicalcolor
+ {\doifsomething\@@chemicalcolor{\color[\@@chemicalcolor]}}
+
+\def\@@dochemicalstyle
+ {\doconvertfont\@@chemicalstyle}
+
+\setupchemical
+ [\c!rulethickness=\linewidth,
+ \c!rulecolor=,
+ \c!color=]
+
+\def\cpos#1#2%
+ {\iftrialtypesetting
+ #2%
+ \else
+ \bgroup
+ \globalpushmacro\dowithchemical
+ \gdef\dowithchemical##1{\hpos{#1}{##1}\globalpopmacro\dowithchemical}%
+ #2%
+ \egroup
+ \fi}
+
+\protect \endinput
+
+% \startchemical[axis=on,frame=yes]
+% \chemical[SIX,ROT2,B,R36,RZ6][CH_3]
+% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H]
+% \stopchemical
+
+% \startchemical[size=big,scale=small,axis=on,frame=yes,factor=1.5]
+% \chemical[SIX,ROT2,B,R36,RZ6][CH_3]
+% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H]
+% \stopchemical
+
+% \startchemical[size=big,scale=medium,axis=on,frame=yes,factor=1.5]
+% \chemical[SIX,ROT2,B,R36,RZ6][CH_3]
+% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H]
+% \stopchemical
+
+% \startchemical[size=big,scale=big,axis=on,frame=yes,factor=1.5]
+% \chemical[SIX,ROT2,B,R36,RZ6][CH_3]
+% \chemical[PB:RZ3,ONE,Z05,SB5,EP37,PE][O,H]
+% \stopchemical
+
diff --git a/Master/texmf-dist/tex/context/base/prop-ini.tex b/Master/texmf-dist/tex/context/base/prop-ini.tex
new file mode 100644
index 00000000000..db6a45c8d6b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/prop-ini.tex
@@ -0,0 +1,184 @@
+%D \module
+%D [ file=prop-ini,
+%D version=2003.04.20,
+%D title=\CONTEXT\ Property Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Property Macros / initialization}
+
+%D Welcome to the third alternative of this yet undocumented module,
+%D which means that there is no public interface yet!
+
+\unprotect
+
+\newcount\propertylevel
+
+\def\currentpropertylevel {\csname\??py:l:\currentpropertytype\endcsname} % counter
+\def\previouspropertylevel{\csname\??py:p:\currentpropertytype\endcsname} % counter
+
+\def\currentproperty {\csname\??py:c:\number\currentpropertylevel \endcsname} % string
+\def\previousproperty {\csname\??py:c:\number\previouspropertylevel\endcsname} % string
+
+% more efficient:
+
+\def\currentproperty {\csname\??py:c:\number\propertylevel\endcsname} % string
+
+% \def\previouspropertylevel{\numexpr(\csname\??py:p:\currentpropertytype\endcsname+1)}
+% \letvalue{\??py:p:0}\empty
+
+\def\currentpropertytype {\csname\??py\currentproperty\c!type\endcsname}
+
+\def\docheckproperty % watch the s instead of e
+ {\csname\s!check\currentpropertytype property\endcsname
+ \global\expandafter\let\csname\??py\s!check\currentproperty\endcsname\empty}
+
+% \def\checkproperty[#1]%
+% {\bgroup
+% \def\currentproperty{#1}%
+% \docheckproperty
+% \egroup}
+%
+% oeps, was wrong, no reset
+
+\def\checkproperty[#1]%
+ {\bgroup
+ \def\currentproperty{#1}%
+ \csname\??py\s!check\currentproperty\endcsname
+ \egroup}
+
+\unexpanded\def\property[#1]%
+ {\groupedcommand{\dostartproperty{#1}}\dostopproperty}
+
+\unexpanded\def\startproperty[#1]%
+ {\dostartproperty{#1}}
+
+\unexpanded\def\stopproperty
+ {\dostopproperty}
+
+\def\dostartgproperty
+ {\begingroup\dostartproperty}
+
+\def\dostopgproperty
+ {\dostopproperty\endgroup}
+
+\def\dostartproperty#1% evt pack: {current}{level}{
+ {\global\advance\propertylevel\plusone
+ \@EAEAEA\xdef\currentproperty{#1}%
+ \global\advance\previouspropertylevel\plusone
+ \global\advance\currentpropertylevel\plusone
+ \csname\??py\s!check\currentproperty\endcsname
+ \csname\s!start\currentpropertytype\s!property\endcsname}
+
+\def\dostopproperty
+ {\csname\s!stop\currentpropertytype\s!property\endcsname
+ \global\advance\currentpropertylevel\minusone
+ \global\advance\previouspropertylevel\minusone
+ \global\advance\propertylevel\minusone}
+
+% \def\propertyparameter #1{\csname\??py\currentproperty#1\endcsname}
+% \def\checkedpropertyparameter#1{\executeifdefined{\??py\currentproperty#1}}
+
+\def\defineproperty
+ {\dotripleempty\dodefineproperty}
+
+% \def\dodefineproperty[#1][#2][#3]% global ! ! !
+% {\ifundefined{\??py#1\c!globaal}%
+% ... actions ...
+% \fi}
+%
+% since we may perform tests each time before a call, we prefer the faster:
+
+\def\defineproperty
+ {\dotripleempty\dodefineproperty}
+
+\def\dodefineproperty[#1]%
+ {\ifundefined{\??py#1\c!global}%
+ \expandafter\dododefineproperty
+ \else
+ \expandafter\nododefineproperty
+ \fi[#1]}
+
+% due to initializations/counters, definitions are always global
+%
+% global : yes : ungrouped
+% no : grouped
+% method : command : define commands
+% none : no commands
+
+\def\dododefineproperty[#1][#2][#3]% global ! ! !
+ {\getgparameters[\??py#1][\c!global=\v!no,\c!type=#2,\c!method=\v!none,#3]% global ! ! ! !
+ \expandafter\newcount\csname\??py:l:#2\endcsname % current level
+ \expandafter\newcount\csname\??py:p:#2\endcsname % previous level
+ \global\csname\??py:p:#2\endcsname\minusone
+ \global\expandafter\expandafter\let\csname\??py:c:0\endcsname\empty
+ \letgvalue{\??py\s!check#1}\docheckproperty
+ \doifelsevalue{\??py#1\c!method}\v!command
+ {\doifelsevalue{\??py#1\c!global}\v!yes
+ {\setgvalue{\e!start#1}{\dostartproperty{#1}}%
+ \letgvalue{\e!stop#1}\dostopproperty}%
+ {\setgvalue{\e!start#1}{\dostartgproperty{#1}}%
+ \letgvalue{\e!stop#1}\dostopgproperty}}%
+ {\doifelsevalue{\??py#1\c!global}\v!yes
+ {\setgvalue{\e!start#2}[##1]{\dostartproperty{##1}}%
+ \letgvalue{\e!stop#2}\dostopproperty}%
+ {\setgvalue{\e!start#2}[##1]{\dostartgproperty{##1}}%
+ \letgvalue{\e!stop#2}\dostopgproperty}}}
+
+\def\nododefineproperty[#1][#2][#3]%
+ {}
+
+\def\doifelseproperty#1{\doifdefinedelse{\??py#1\c!global}}
+
+\def\setupproperty
+ {\dodoubleempty\dosetupproperty}
+
+\def\dosetupproperty[#1][#2]% local
+ {\ifsecondargument
+ \getparameters[\??py#1][#2]%
+ \else
+ \getparameters[\??py][#1]%
+ \fi}
+
+% \def\propertyparameter#1% expands to #1 when not defined (see \define...)
+% {\csname\??py
+% \ifcsname\??py\currentproperty#1\endcsname
+% \currentproperty#1%
+% \else\ifcsname\??py\currentpropertytype#1\endcsname
+% \currentpropertytype#1%
+% \else
+% :n:\currentproperty
+% \fi\fi
+% \endcsname}
+
+\letvalue{\??py\s!empty}\empty
+
+% beware, normally \*parameter concerns the current one
+
+\def\propertyparameter#1#2% expands to #1 when not defined (see \define...)
+ {\csname\??py
+ \ifcsname\??py#1#2\endcsname
+ #1#2%
+ \else\ifcsname\??py\csname\??py#1\c!type\endcsname#2\endcsname
+ \csname\??py#1\c!type\endcsname#2%
+ \else
+ \s!empty
+ \fi\fi
+ \endcsname}
+
+\def\currentpropertyparameter % self and class
+ {\propertyparameter\currentproperty}
+
+\def\checkedpropertyparameter#1% only self
+ {\executeifdefined{\??py\currentproperty#1}}
+
+\def\definepropertyhandler#1{\setvalue{\??py*#1}}
+\def\propertyhandler #1{\getvalue{\??py*#1}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/prop-lay.tex b/Master/texmf-dist/tex/context/base/prop-lay.tex
new file mode 100644
index 00000000000..749848fa812
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/prop-lay.tex
@@ -0,0 +1,124 @@
+%D \module
+%D [ file=prop-lay,
+%D version=2003.04.20,
+%D title=\CONTEXT\ Property Macros,
+%D subtitle=Layers,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Property Macros / layers}
+
+%D Highly experimental, will probably change/evolve.
+
+\unprotect
+
+% \def\checklayerproperty
+% {\dodefineviewerlayer
+% \currentproperty % tag
+% {\checkedpropertyparameter\c!title\currentproperty}%
+% {\checkedpropertyparameter\c!state\v!start}% visible or hidden
+% {0}% type (1=frozen)
+% {0}}% printable
+
+\def\checklayerproperty
+ {\doifelse{\checkedpropertyparameter\v!printable\currentproperty}\v!no
+ {\def\printviewerlayer{0}}%
+ {\def\printviewerlayer{1}}
+ \dodefineviewerlayer
+ \currentproperty % tag
+ {\checkedpropertyparameter\c!title\currentproperty}%
+ {\checkedpropertyparameter\c!state\v!start}% visible or hidden
+ {0}% type (1=frozen)
+ {\printviewerlayer}}% 1=printable
+
+\def\startlayerproperty
+ {\dostartviewerlayer\currentproperty}
+
+\def\stoplayerproperty
+ {\dostopviewerlayer}
+
+\setglobalsystemreference \rt!exec \v!HideLayer {hidelayer}
+\setglobalsystemreference \rt!exec \v!VideLayer {videlayer}
+\setglobalsystemreference \rt!exec \v!ToggleLayer {togglelayer}
+
+\setexecutecommandcheck {hidelayer} \domakelayerpropertylist
+\setexecutecommandcheck {videlayer} \domakelayerpropertylist
+\setexecutecommandcheck {togglelayer} \domakelayerpropertylist
+
+\def\domakelayerpropertylist
+ {\iflocation
+ \expandafter\domakeviewerlayerlist
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+% \defineproperty [debugging] [\s!layer] [title=debugging]
+% \defineproperty [navigation] [\s!layer] [title=navigation]
+
+%D \starttext
+%D
+%D \setuppapersize[S4][S4]
+%D \setuplayout[middle]
+%D \setupcolors[state=start]
+%D \setupinteraction[state=start,color=,contrastcolor=]
+%D
+%D \defineproperty [L1] [layer] [title=layer 1]
+%D \defineproperty [L2] [layer] [title=layer 2]
+%D
+%D \button{HIDE L1}[HideLayer{L1}]
+%D \button{VIDE L1}[VideLayer{L1}]
+%D \button{TOGGLE L1}[ToggleLayer{L1}]
+%D
+%D \button{HIDE L2}[HideLayer{L2}]
+%D \button{VIDE L2}[VideLayer{L2}]
+%D \button{TOGGLE L2}[ToggleLayer{L2}]
+%D
+%D \noheaderandfooterlines \centerbox{\startoverlay
+%D {\definedfont[Mono at 150pt]%
+%D \startproperty[L1]\red TEST\stopproperty}
+%D {\definedfont[Mono at 150pt]%
+%D \startproperty[L2]\green TEST\stopproperty}
+%D \stopoverlay} \page
+%D
+%D \noheaderandfooterlines \centerbox{\startoverlay
+%D {\definedfont[Mono at 15pt]%
+%D \goto{\startproperty[L1]\red TEST\stopproperty}[CloseDocument]}
+%D {\definedfont[Mono at 15pt]%
+%D \goto{\startproperty[L2]\green TEST\stopproperty}[CloseDocument]}
+%D \stopoverlay} \page
+%D
+%D \startproperty[L1]
+%D level 1 \startproperty[L2]level 2 \stopproperty level 1
+%D \stopproperty
+%D
+%D \startproperty[L1]
+%D level 1 \page \startproperty[L2]level 2 \stopproperty level 1
+%D \stopproperty
+%D
+%D \stoptext
+
+\fetchruntimecommand \showlayoutcomponents {\f!propprefix\s!run}
+
+\protect \endinput
+
+% \def\remaplayering
+% {\dodoubleargument\doremaplayering}
+%
+% \def\remaplayering[#1][#2]%
+% {\setvalue{\??lm#1}{#2}}
+%
+% \def\remappedlayering#1%
+% {\ifcsname\??lm#1\endcsname
+% \@EA\remappedlayering\csname\??lm#1\endcsname\else#1%
+% \fi}
+%
+% \def\startshowlayering#1#2%
+% {\ifshowlayering
+% \defineproperty[\remappedlayering{#1}][\s!layer][\c!titel=#2]%
+% \startproperty[\remappedlayering{#1}]%
+% \fi}
diff --git a/Master/texmf-dist/tex/context/base/prop-mis.tex b/Master/texmf-dist/tex/context/base/prop-mis.tex
new file mode 100644
index 00000000000..769fc33f4ef
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/prop-mis.tex
@@ -0,0 +1,224 @@
+%D \module
+%D [ file=prop-mis,
+%D version=2004.05.29, % some code moved from private modules
+%D title=\CONTEXT\ Property Macros,
+%D subtitle=Miscelaneous,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Property Macros / initialization}
+
+%D This module contains some code that has been in use in some
+%D private modules (p-*). These features depend on the fact
+%D that pdftex writes the page content as one stream.
+
+%D EXPERIMENTAL
+
+\unprotect
+
+%D Stream based overprint and knockout:
+
+\defineproperty[\v!overprint][\s!overprint] [\c!method=\v!command]
+\defineproperty[\v!knockout] [\s!overprint] [\c!method=\v!command]
+
+\definepropertyhandler \v!overprint {\dostartoverprint}
+\definepropertyhandler \v!knockout {\dostopoverprint }
+
+\def\startoverprintproperty
+ {\ifincolor
+ \propertyhandler\currentproperty
+ \dooverprintmark\currentproperty
+ \fi}
+
+\def\stopoverprintproperty
+ {\ifincolor
+ \ifcase\currentpropertylevel\or
+ \dostopoverprint
+ \dooverprintmark\empty
+ \else
+ \propertyhandler\previousproperty
+ \dooverprintmark\previousproperty
+ \fi
+ \fi}
+
+\rawnewmark\overprintmark
+
+\def\dooverprintmark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\overprintmark{#1}}%
+ \fi \fi}
+
+\def\pushoverprintproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}\dostopoverprint}
+
+\def\popoverprintproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}%
+ {\propertyhandler{\rawgetbotmark\overprintmark}}}
+
+\def\popsplitoverprintproperty
+ {\getsplitmarks\overprintmark % hier wel
+ \doifsomething{\rawgetsplitbotmark\overprintmark}%
+ {\propertyhandler{\rawgetsplitbotmark\overprintmark}}}
+
+\appendtoks \pushoverprintproperty \to \everypushproperties
+\appendtoks \popoverprintproperty \to \everypopproperties
+\appendtoks \popsplitoverprintproperty \to \everypopsplitproperties
+
+%D Negation.
+
+\defineproperty [\v!negative] [\s!negative] [\c!method=\v!command]
+\defineproperty [\v!positive] [\s!negative] [\c!method=\v!command]
+
+\definepropertyhandler \v!negative {\dostartnegative}
+\definepropertyhandler \v!positive {\dostopnegative }
+
+\def\startnegativeproperty
+ {\ifincolor
+ \propertyhandler\currentproperty
+ \donegativemark\currentproperty
+ \fi}
+
+\def\stopnegativeproperty
+ {\ifincolor
+ \ifcase\currentpropertylevel\or
+ \dostopnegative
+ \donegativemark\empty
+ \else
+ \propertyhandler\previousproperty
+ \donegativemark\previousproperty
+ \fi
+ \fi}
+
+\rawnewmark\negativemark
+
+\def\donegativemark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\negativemark{#1}}%
+ \fi \fi}
+
+\def\pushnegativeproperty
+ {\doifsomething{\rawgetbotmark\negativemark}\dostopnegative}
+
+\def\popnegativeproperty
+ {\doifsomething{\rawgetbotmark\overprintmark}%
+ {\propertyhandler{\rawgetbotmark\negativemark}}}
+
+\def\popsplitnegativeproperty
+ {\getsplitmarks\negativemark % hier wel
+ \doifsomething{\rawgetsplitbotmark\negativemark}%
+ {\propertyhandler{\rawgetsplitbotmark\negativemark}}}
+
+\appendtoks \pushnegativeproperty \to \everypushproperties
+\appendtoks \popnegativeproperty \to \everypopproperties
+\appendtoks \popsplitnegativeproperty \to \everypopsplitproperties
+
+%D Special font effects.
+
+\setupproperty
+ [\s!effect]
+ [\c!rulethickness=.25pt,
+ \c!stretch=1]
+
+\defineproperty [\v!inner] [\s!effect]
+\defineproperty [\v!outer] [\s!effect]
+\defineproperty [\v!both] [\s!effect]
+\defineproperty [\v!normal] [\s!effect]
+\defineproperty [\v!hidden] [\s!effect]
+
+\definepropertyhandler \v!normal {0}
+\definepropertyhandler \v!inner {0}
+\definepropertyhandler \v!outer {1}
+\definepropertyhandler \v!both {2}
+\definepropertyhandler \v!hidden {3}
+
+% \def\handleeffectproperty#1%
+% {\expanded{\dostartfonteffect
+% {\propertyhandler{#1}}%
+% {\propertyparameter{#1}\c!lijndikte}%
+% {\propertyparameter{#1}\c!rek}}}
+
+% \def\starteffectproperty
+% {\handleeffectproperty\currentproperty
+% \doeffectmark\currentproperty}
+
+% \def\stopeffectproperty
+% {\dostopfonteffect
+% \ifcase\currentpropertylevel\or
+% \doeffectmark\empty
+% \else
+% \handleeffectproperty\previousproperty
+% \doeffectmark\previousproperty
+% \fi}
+
+% \rawnewmark\effectmark
+
+% \def\doeffectmark#1%
+% {\ifinpagebody \else \ifinframed \else
+% \expanded{\rawsetmark\noexpand\effectmark{#1}}% could be number
+% \fi \fi}
+
+% \def\pusheffectproperty
+% {\doifsomething{\rawgetbotmark\effectmark}\dostopfonteffect}
+
+% \def\popeffectproperty
+% {\doifsomething{\rawgetbotmark\effectmark}%
+% {\handleeffectproperty{\rawgetbotmark\effectmark}}}
+
+% \def\popspliteffectproperty
+% {\getsplitmarks\effectmark
+% \doifsomething{\rawgetsplitbotmark\effectmark}%
+% {\handleeffectproperty{\rawgetsplitbotmark\effectmark}}}
+
+% \appendtoks \pusheffectproperty \to \everypushproperties
+% \appendtoks \popeffectproperty \to \everypopproperties
+% \appendtoks \popspliteffectproperty \to \everypopsplitproperties
+
+% %
+
+\def\effectpropertydata#1%
+ {{\propertyhandler{#1}}%
+ {\propertyparameter{#1}\c!rulethickness}%
+ {\propertyparameter{#1}\c!stretch}}
+
+\def\starteffectproperty
+ {\expanded{\dostartfonteffect\effectpropertydata\currentproperty}%
+ \doeffectmark{\effectpropertydata\currentproperty}}
+
+\def\stopeffectproperty
+ {\dostopfonteffect
+ \ifcase\currentpropertylevel\or
+ \doeffectmark\empty
+ \else
+ \expanded{\dostartfonteffect\effectpropertydata\previousproperty}%
+ \doeffectmark{\effectpropertydata\previousproperty}%
+ \fi}
+
+\rawnewmark\effectmark
+
+\def\doeffectmark#1%
+ {\ifinpagebody \else \ifinframed \else
+ \expanded{\rawsetmark\noexpand\effectmark{#1}}% could be number
+ \fi \fi}
+
+\def\pusheffectproperty
+ {\doifsomething{\rawgetbotmark\effectmark}\dostopfonteffect}
+
+\def\popeffectproperty
+ {\doifsomething{\rawgetbotmark\effectmark}%
+ {\expanded{\dostartfonteffect\rawgetbotmark\effectmark}}}
+
+\def\popspliteffectproperty
+ {\getsplitmarks\effectmark
+ \doifsomething{\rawgetsplitbotmark\effectmark}%
+ {\expanded{\dostartfonteffect\rawgetsplitbotmark\effectmark}}}
+
+\appendtoks \pusheffectproperty \to \everypushproperties
+\appendtoks \popeffectproperty \to \everypopproperties
+\appendtoks \popspliteffectproperty \to \everypopsplitproperties
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/prop-run.tex b/Master/texmf-dist/tex/context/base/prop-run.tex
new file mode 100644
index 00000000000..4eb853b42c2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/prop-run.tex
@@ -0,0 +1,39 @@
+%D \module
+%D [ file=prop-run,
+%D version=2003.04.20,
+%D title=\CONTEXT\ Property Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\doglobal\newif\ifshowcomponents
+
+\gdef\showlayoutcomponents
+ {\showcomponentstrue}
+
+% By postponing loading of the next two macro's till their usage, we
+% don't put a burden on the system when they are not used.
+
+\gdef\startlayoutcomponent#1#2%
+ {\ifshowcomponents
+ \doifelseproperty{#1}
+ \donothing
+ {\doifelsenothing{#2}%
+ {\defineproperty[#1][\s!layer]}% [\c!title=#1]
+ {\defineproperty[#1][\s!layer][\c!title=#2]}}%
+ \startproperty[#1]%
+ \fi}
+
+\gdef\stoplayoutcomponent
+ {\ifshowcomponents
+ \stopproperty
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-cyp.tex b/Master/texmf-dist/tex/context/base/regi-cyp.tex
new file mode 100644
index 00000000000..7d134df50be
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-cyp.tex
@@ -0,0 +1,1169 @@
+%D \module
+%D [ file=regi-cyp,
+%D version=2003.01.24,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Cyrillic Plus,
+%D author=...,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D In this file several rarely user cyrillic input regimes
+%D are defined.
+
+\startregime[cp855]
+
+\defineactivetoken 128 {\cyrillicdje}
+\defineactivetoken 129 {\cyrillicDJE}
+\defineactivetoken 130 {\'\cyrillicg}
+\defineactivetoken 131 {\'\cyrillicG}
+\defineactivetoken 132 {\cyrillicyo}
+\defineactivetoken 133 {\cyrillicYO}
+\defineactivetoken 134 {\cyrillicie}
+\defineactivetoken 135 {\cyrillicIE}
+\defineactivetoken 136 {\cyrillicdze}
+\defineactivetoken 137 {\cyrillicDZE}
+\defineactivetoken 138 {\cyrillicii}
+\defineactivetoken 139 {\cyrillicII}
+\defineactivetoken 140 {\cyrillicyi}
+\defineactivetoken 141 {\cyrillicYI}
+\defineactivetoken 142 {\cyrillicje}
+\defineactivetoken 143 {\cyrillicJE}
+\defineactivetoken 144 {\cyrilliclje}
+\defineactivetoken 145 {\cyrillicLJE}
+\defineactivetoken 146 {\cyrillicnje}
+\defineactivetoken 147 {\cyrillicNJE}
+\defineactivetoken 148 {\cyrillictshe}
+\defineactivetoken 149 {\cyrillicTSHE}
+\defineactivetoken 150 {\'\cyrillick}
+\defineactivetoken 151 {\'\cyrillicK}
+\defineactivetoken 152 {\cyrillicushrt}
+\defineactivetoken 153 {\cyrillicUSHRT}
+\defineactivetoken 154 {\cyrillicdzhe}
+\defineactivetoken 155 {\cyrillicDZHE}
+\defineactivetoken 156 {\cyrillicyu}
+\defineactivetoken 157 {\cyrillicYU}
+\defineactivetoken 158 {\cyrillichrdsn}
+\defineactivetoken 159 {\cyrillicHRDSN}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicA}
+\defineactivetoken 162 {\cyrillicb}
+\defineactivetoken 163 {\cyrillicB}
+\defineactivetoken 164 {\cyrillicc}
+\defineactivetoken 165 {\cyrillicC}
+\defineactivetoken 166 {\cyrillicd}
+\defineactivetoken 167 {\cyrillicD}
+\defineactivetoken 168 {\cyrillice}
+\defineactivetoken 169 {\cyrillicE}
+\defineactivetoken 170 {\cyrillicf}
+\defineactivetoken 171 {\cyrillicF}
+\defineactivetoken 172 {\cyrillicg}
+\defineactivetoken 173 {\cyrillicG}
+\defineactivetoken 174 {\leftguillemot}
+\defineactivetoken 175 {\rightguillemot}
+\defineactivetoken 181 {\cyrillich}
+\defineactivetoken 182 {\cyrillicH}
+\defineactivetoken 183 {\cyrillici}
+\defineactivetoken 184 {\cyrillicI}
+\defineactivetoken 189 {\cyrillicishrt}
+\defineactivetoken 190 {\cyrillicISHRT}
+\defineactivetoken 198 {\cyrillick}
+\defineactivetoken 199 {\cyrillicK}
+\defineactivetoken 207 {\textcurrency}
+\defineactivetoken 208 {\cyrillicl}
+\defineactivetoken 209 {\cyrillicL}
+\defineactivetoken 210 {\cyrillicm}
+\defineactivetoken 211 {\cyrillicM}
+\defineactivetoken 212 {\cyrillicn}
+\defineactivetoken 213 {\cyrillicN}
+\defineactivetoken 214 {\cyrillico}
+\defineactivetoken 215 {\cyrillicO}
+\defineactivetoken 216 {\cyrillicp}
+\defineactivetoken 221 {\cyrillicP}
+\defineactivetoken 222 {\cyrillicya}
+\defineactivetoken 224 {\cyrillicYA}
+\defineactivetoken 225 {\cyrillicr}
+\defineactivetoken 226 {\cyrillicR}
+\defineactivetoken 227 {\cyrillics}
+\defineactivetoken 228 {\cyrillicS}
+\defineactivetoken 229 {\cyrillict}
+\defineactivetoken 230 {\cyrillicT}
+\defineactivetoken 231 {\cyrillicu}
+\defineactivetoken 232 {\cyrillicU}
+\defineactivetoken 233 {\cyrilliczh}
+\defineactivetoken 234 {\cyrillicZH}
+\defineactivetoken 235 {\cyrillicv}
+\defineactivetoken 236 {\cyrillicV}
+\defineactivetoken 237 {\cyrillicsftsn}
+\defineactivetoken 238 {\cyrillicSFTSN}
+\defineactivetoken 239 {\textnumero}
+\defineactivetoken 240 {\-}
+\defineactivetoken 241 {\cyrillicery}
+\defineactivetoken 242 {\cyrillicERY}
+\defineactivetoken 243 {\cyrillicz}
+\defineactivetoken 244 {\cyrillicZ}
+\defineactivetoken 245 {\cyrillicsh}
+\defineactivetoken 246 {\cyrillicSH}
+\defineactivetoken 247 {\cyrillicerev}
+\defineactivetoken 248 {\cyrillicEREV}
+\defineactivetoken 249 {\cyrillicshch}
+\defineactivetoken 250 {\cyrillicSHCH}
+\defineactivetoken 251 {\cyrillicch}
+\defineactivetoken 252 {\cyrillicCH}
+\defineactivetoken 253 {\sectionmark}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+
+\stopregime
+
+\startregime[cp866av]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\cyrillicYO}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 252 {\textnumero}
+\defineactivetoken 253 {\textcurrency}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+\defineactivetoken 246 {\mathematics\rightarrow}
+\defineactivetoken 247 {\mathematics\leftarrow}
+\defineactivetoken 248 {\mathematics\downarrow}
+\defineactivetoken 249 {\mathematics\uparrow}
+\defineactivetoken 250 {\textdiv}
+\defineactivetoken 251 {\textpm}
+
+\stopregime
+
+\startregime[cp866mav]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\cyrillicYO}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 248 {\textdegree}
+\defineactivetoken 249 {\textbullet}
+\defineactivetoken 250 {\periodcentered}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+\defineactivetoken 242 {\mathematics\geq}
+\defineactivetoken 243 {\mathematics\leq}
+\defineactivetoken 246 {\textdiv}
+\defineactivetoken 247 {\mathematics\sim}
+\defineactivetoken 251 {\textsurd}
+\defineactivetoken 252 {\high{\txx n}}
+\defineactivetoken 253 {\twosuperior}
+
+\stopregime
+
+\startregime[cp866tat]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\cyrillicYO}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 242 {\cyrillicSCHWA}
+\defineactivetoken 243 {\cyrillicschwa}
+\defineactivetoken 244 {\cyrillicOTLD}
+\defineactivetoken 245 {\cyrillicotld}
+\defineactivetoken 246 {\cyrillicY}
+\defineactivetoken 247 {\cyrillicy}
+\defineactivetoken 248 {\cyrillicZHDSC}
+\defineactivetoken 249 {\cyrilliczhdsc}
+\defineactivetoken 250 {\cyrillicNDSC}
+\defineactivetoken 251 {\cyrillicndsc}
+\defineactivetoken 252 {\cyrillicSHHA}
+\defineactivetoken 253 {\cyrillicshha}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+
+\stopregime
+
+\startregime[ctt]
+
+\defineactivetoken 171 {\leftguillemot}
+\defineactivetoken 187 {\rightguillemot}
+\defineactivetoken 192 {\cyrillicA}
+\defineactivetoken 193 {\cyrillicB}
+\defineactivetoken 194 {\cyrillicV}
+\defineactivetoken 195 {\cyrillicG}
+\defineactivetoken 196 {\cyrillicD}
+\defineactivetoken 197 {\cyrillicE}
+\defineactivetoken 168 {\cyrillicYO}
+\defineactivetoken 198 {\cyrillicZH}
+\defineactivetoken 199 {\cyrillicZ}
+\defineactivetoken 200 {\cyrillicI}
+\defineactivetoken 201 {\cyrillicISHRT}
+\defineactivetoken 202 {\cyrillicK}
+\defineactivetoken 203 {\cyrillicL}
+\defineactivetoken 204 {\cyrillicM}
+\defineactivetoken 205 {\cyrillicN}
+\defineactivetoken 206 {\cyrillicO}
+\defineactivetoken 170 {\cyrillicOTLD}
+\defineactivetoken 207 {\cyrillicP}
+\defineactivetoken 208 {\cyrillicR}
+\defineactivetoken 209 {\cyrillicS}
+\defineactivetoken 210 {\cyrillicT}
+\defineactivetoken 211 {\cyrillicU}
+\defineactivetoken 175 {\cyrillicY}
+\defineactivetoken 212 {\cyrillicF}
+\defineactivetoken 213 {\cyrillicH}
+\defineactivetoken 214 {\cyrillicC}
+\defineactivetoken 215 {\cyrillicCH}
+\defineactivetoken 216 {\cyrillicSH}
+\defineactivetoken 217 {\cyrillicSHCH}
+\defineactivetoken 218 {\cyrillicHRDSN}
+\defineactivetoken 219 {\cyrillicERY}
+\defineactivetoken 220 {\cyrillicSFTSN}
+\defineactivetoken 221 {\cyrillicEREV}
+\defineactivetoken 222 {\cyrillicYU}
+\defineactivetoken 223 {\cyrillicYA}
+\defineactivetoken 224 {\cyrillica}
+\defineactivetoken 225 {\cyrillicb}
+\defineactivetoken 226 {\cyrillicv}
+\defineactivetoken 227 {\cyrillicg}
+\defineactivetoken 228 {\cyrillicd}
+\defineactivetoken 229 {\cyrillice}
+\defineactivetoken 184 {\cyrillicyo}
+\defineactivetoken 230 {\cyrilliczh}
+\defineactivetoken 231 {\cyrillicz}
+\defineactivetoken 232 {\cyrillici}
+\defineactivetoken 233 {\cyrillicishrt}
+\defineactivetoken 234 {\cyrillick}
+\defineactivetoken 235 {\cyrillicl}
+\defineactivetoken 236 {\cyrillicm}
+\defineactivetoken 237 {\cyrillicn}
+\defineactivetoken 238 {\cyrillico}
+\defineactivetoken 186 {\cyrillicotld}
+\defineactivetoken 239 {\cyrillicp}
+\defineactivetoken 240 {\cyrillicr}
+\defineactivetoken 241 {\cyrillics}
+\defineactivetoken 242 {\cyrillict}
+\defineactivetoken 243 {\cyrillicu}
+\defineactivetoken 191 {\cyrillicy}
+\defineactivetoken 244 {\cyrillicf}
+\defineactivetoken 245 {\cyrillich}
+\defineactivetoken 246 {\cyrillicc}
+\defineactivetoken 247 {\cyrillicch}
+\defineactivetoken 248 {\cyrillicsh}
+\defineactivetoken 249 {\cyrillicshch}
+\defineactivetoken 250 {\cyrillichrdsn}
+\defineactivetoken 251 {\cyrillicery}
+\defineactivetoken 252 {\cyrillicsftsn}
+\defineactivetoken 253 {\cyrillicerev}
+\defineactivetoken 254 {\cyrillicyu}
+\defineactivetoken 255 {\cyrillicya}
+
+\stopregime
+
+\startregime[dbk]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicYO}
+\defineactivetoken 135 {\cyrillicZH}
+\defineactivetoken 136 {\cyrillicZ}
+\defineactivetoken 137 {\cyrillicI}
+\defineactivetoken 139 {\cyrillicISHRT}
+\defineactivetoken 140 {\cyrillicK}
+\defineactivetoken 142 {\cyrillicL}
+\defineactivetoken 143 {\cyrillicM}
+\defineactivetoken 144 {\cyrillicN}
+\defineactivetoken 145 {\cyrillicO}
+\defineactivetoken 146 {\cyrillicOTLD}
+\defineactivetoken 147 {\cyrillicP}
+\defineactivetoken 148 {\cyrillicR}
+\defineactivetoken 149 {\cyrillicS}
+\defineactivetoken 150 {\cyrillicT}
+\defineactivetoken 151 {\cyrillicU}
+\defineactivetoken 152 {\cyrillicY}
+\defineactivetoken 153 {\cyrillicF}
+\defineactivetoken 154 {\cyrillicH}
+\defineactivetoken 155 {\cyrillicC}
+\defineactivetoken 156 {\cyrillicCH}
+\defineactivetoken 157 {\cyrillicSH}
+\defineactivetoken 158 {\cyrillicSHCH}
+\defineactivetoken 159 {\cyrillicHRDSN}
+\defineactivetoken 160 {\cyrillicERY}
+\defineactivetoken 161 {\cyrillicSFTSN}
+\defineactivetoken 162 {\cyrillicEREV}
+\defineactivetoken 163 {\cyrillicYU}
+\defineactivetoken 164 {\cyrillicYA}
+\defineactivetoken 165 {\cyrillica}
+\defineactivetoken 166 {\cyrillicb}
+\defineactivetoken 167 {\cyrillicv}
+\defineactivetoken 168 {\cyrillicg}
+\defineactivetoken 169 {\cyrillicd}
+\defineactivetoken 170 {\cyrillice}
+\defineactivetoken 171 {\cyrillicyo}
+\defineactivetoken 172 {\cyrilliczh}
+\defineactivetoken 173 {\cyrillicz}
+\defineactivetoken 174 {\cyrillici}
+\defineactivetoken 175 {\cyrillicishrt}
+\defineactivetoken 225 {\cyrillick}
+\defineactivetoken 226 {\cyrillicl}
+\defineactivetoken 227 {\cyrillicm}
+\defineactivetoken 228 {\cyrillicn}
+\defineactivetoken 229 {\cyrillico}
+\defineactivetoken 230 {\cyrillicotld}
+\defineactivetoken 231 {\cyrillicp}
+\defineactivetoken 232 {\cyrillicr}
+\defineactivetoken 233 {\cyrillics}
+\defineactivetoken 234 {\cyrillict}
+\defineactivetoken 235 {\cyrillicu}
+\defineactivetoken 236 {\cyrillicy}
+\defineactivetoken 237 {\cyrillicf}
+\defineactivetoken 238 {\cyrillich}
+\defineactivetoken 239 {\cyrillicc}
+\defineactivetoken 241 {\cyrillicch}
+\defineactivetoken 242 {\cyrillicsh}
+\defineactivetoken 243 {\cyrillicshch}
+\defineactivetoken 244 {\cyrillichrdsn}
+\defineactivetoken 245 {\cyrillicery}
+\defineactivetoken 246 {\cyrillicsftsn}
+\defineactivetoken 247 {\cyrillicerev}
+\defineactivetoken 248 {\cyrillicyu}
+\defineactivetoken 249 {\cyrillicya}
+
+\stopregime
+
+\startregime[iso88595]
+
+\defineactivetoken 160 {\nonbreakablespace}
+\defineactivetoken 161 {\cyrillicYO}
+\defineactivetoken 162 {\cyrillicDJE}
+\defineactivetoken 163 {\'\cyrillicG}
+\defineactivetoken 164 {\cyrillicIE}
+\defineactivetoken 165 {\cyrillicDZE}
+\defineactivetoken 166 {\cyrillicII}
+\defineactivetoken 167 {\cyrillicYI}
+\defineactivetoken 168 {\cyrillicJE}
+\defineactivetoken 169 {\cyrillicLJE}
+\defineactivetoken 170 {\cyrillicNJE}
+\defineactivetoken 171 {\cyrillicTSHE}
+\defineactivetoken 172 {\'\cyrillicK}
+\defineactivetoken 173 {\-}
+\defineactivetoken 174 {\cyrillicUSHRT}
+\defineactivetoken 175 {\cyrillicDZHE}
+\defineactivetoken 176 {\cyrillicA}
+\defineactivetoken 177 {\cyrillicB}
+\defineactivetoken 178 {\cyrillicV}
+\defineactivetoken 179 {\cyrillicG}
+\defineactivetoken 180 {\cyrillicD}
+\defineactivetoken 181 {\cyrillicE}
+\defineactivetoken 182 {\cyrillicZH}
+\defineactivetoken 183 {\cyrillicZ}
+\defineactivetoken 184 {\cyrillicI}
+\defineactivetoken 185 {\cyrillicISHRT}
+\defineactivetoken 186 {\cyrillicK}
+\defineactivetoken 187 {\cyrillicL}
+\defineactivetoken 188 {\cyrillicM}
+\defineactivetoken 189 {\cyrillicN}
+\defineactivetoken 190 {\cyrillicO}
+\defineactivetoken 191 {\cyrillicP}
+\defineactivetoken 192 {\cyrillicR}
+\defineactivetoken 193 {\cyrillicS}
+\defineactivetoken 194 {\cyrillicT}
+\defineactivetoken 195 {\cyrillicU}
+\defineactivetoken 196 {\cyrillicF}
+\defineactivetoken 197 {\cyrillicH}
+\defineactivetoken 198 {\cyrillicC}
+\defineactivetoken 199 {\cyrillicCH}
+\defineactivetoken 200 {\cyrillicSH}
+\defineactivetoken 201 {\cyrillicSHCH}
+\defineactivetoken 202 {\cyrillicHRDSN}
+\defineactivetoken 203 {\cyrillicERY}
+\defineactivetoken 204 {\cyrillicSFTSN}
+\defineactivetoken 205 {\cyrillicEREV}
+\defineactivetoken 206 {\cyrillicYU}
+\defineactivetoken 207 {\cyrillicYA}
+\defineactivetoken 208 {\cyrillica}
+\defineactivetoken 209 {\cyrillicb}
+\defineactivetoken 210 {\cyrillicv}
+\defineactivetoken 211 {\cyrillicg}
+\defineactivetoken 212 {\cyrillicd}
+\defineactivetoken 213 {\cyrillice}
+\defineactivetoken 214 {\cyrilliczh}
+\defineactivetoken 215 {\cyrillicz}
+\defineactivetoken 216 {\cyrillici}
+\defineactivetoken 217 {\cyrillicishrt}
+\defineactivetoken 218 {\cyrillick}
+\defineactivetoken 219 {\cyrillicl}
+\defineactivetoken 220 {\cyrillicm}
+\defineactivetoken 221 {\cyrillicn}
+\defineactivetoken 222 {\cyrillico}
+\defineactivetoken 223 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\textnumero}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 242 {\cyrillicdje}
+\defineactivetoken 243 {\'\cyrillicg}
+\defineactivetoken 244 {\cyrillicie}
+\defineactivetoken 245 {\cyrillicdze}
+\defineactivetoken 246 {\cyrillicii}
+\defineactivetoken 247 {\cyrillicyi}
+\defineactivetoken 248 {\cyrillicje}
+\defineactivetoken 249 {\cyrilliclje}
+\defineactivetoken 250 {\cyrillicnje}
+\defineactivetoken 251 {\cyrillictshe}
+\defineactivetoken 252 {\'\cyrillick}
+\defineactivetoken 253 {\sectionmark}
+\defineactivetoken 254 {\cyrillicushrt}
+\defineactivetoken 255 {\cyrillicdzhe}
+
+\stopregime
+
+\startregime[isoir111]
+
+\defineactivetoken 225 {\cyrillicA}
+\defineactivetoken 226 {\cyrillicB}
+\defineactivetoken 247 {\cyrillicV}
+\defineactivetoken 231 {\cyrillicG}
+\defineactivetoken 228 {\cyrillicD}
+\defineactivetoken 229 {\cyrillicE}
+\defineactivetoken 179 {\cyrillicYO}
+\defineactivetoken 246 {\cyrillicZH}
+\defineactivetoken 250 {\cyrillicZ}
+\defineactivetoken 233 {\cyrillicI}
+\defineactivetoken 234 {\cyrillicISHRT}
+\defineactivetoken 235 {\cyrillicK}
+\defineactivetoken 236 {\cyrillicL}
+\defineactivetoken 237 {\cyrillicM}
+\defineactivetoken 238 {\cyrillicN}
+\defineactivetoken 239 {\cyrillicO}
+\defineactivetoken 240 {\cyrillicP}
+\defineactivetoken 242 {\cyrillicR}
+\defineactivetoken 243 {\cyrillicS}
+\defineactivetoken 244 {\cyrillicT}
+\defineactivetoken 245 {\cyrillicU}
+\defineactivetoken 230 {\cyrillicF}
+\defineactivetoken 232 {\cyrillicH}
+\defineactivetoken 227 {\cyrillicC}
+\defineactivetoken 254 {\cyrillicCH}
+\defineactivetoken 251 {\cyrillicSH}
+\defineactivetoken 253 {\cyrillicSHCH}
+\defineactivetoken 255 {\cyrillicHRDSN}
+\defineactivetoken 249 {\cyrillicERY}
+\defineactivetoken 248 {\cyrillicSFTSN}
+\defineactivetoken 252 {\cyrillicEREV}
+\defineactivetoken 224 {\cyrillicYU}
+\defineactivetoken 241 {\cyrillicYA}
+\defineactivetoken 193 {\cyrillica}
+\defineactivetoken 194 {\cyrillicb}
+\defineactivetoken 215 {\cyrillicv}
+\defineactivetoken 199 {\cyrillicg}
+\defineactivetoken 196 {\cyrillicd}
+\defineactivetoken 197 {\cyrillice}
+\defineactivetoken 163 {\cyrillicyo}
+\defineactivetoken 214 {\cyrilliczh}
+\defineactivetoken 218 {\cyrillicz}
+\defineactivetoken 201 {\cyrillici}
+\defineactivetoken 202 {\cyrillicishrt}
+\defineactivetoken 203 {\cyrillick}
+\defineactivetoken 204 {\cyrillicl}
+\defineactivetoken 205 {\cyrillicm}
+\defineactivetoken 206 {\cyrillicn}
+\defineactivetoken 207 {\cyrillico}
+\defineactivetoken 208 {\cyrillicp}
+\defineactivetoken 210 {\cyrillicr}
+\defineactivetoken 211 {\cyrillics}
+\defineactivetoken 212 {\cyrillict}
+\defineactivetoken 213 {\cyrillicu}
+\defineactivetoken 198 {\cyrillicf}
+\defineactivetoken 200 {\cyrillich}
+\defineactivetoken 195 {\cyrillicc}
+\defineactivetoken 222 {\cyrillicch}
+\defineactivetoken 219 {\cyrillicsh}
+\defineactivetoken 221 {\cyrillicshch}
+\defineactivetoken 223 {\cyrillichrdsn}
+\defineactivetoken 217 {\cyrillicery}
+\defineactivetoken 216 {\cyrillicsftsn}
+\defineactivetoken 220 {\cyrillicerev}
+\defineactivetoken 192 {\cyrillicyu}
+\defineactivetoken 209 {\cyrillicya}
+\defineactivetoken 160 {\nonbreakablespace}
+\defineactivetoken 161 {\cyrillicdje}
+\defineactivetoken 162 {\'\cyrillicg}
+\defineactivetoken 164 {\cyrillicie}
+\defineactivetoken 165 {\cyrillicdze}
+\defineactivetoken 166 {\cyrillicii}
+\defineactivetoken 167 {\cyrillicyi}
+\defineactivetoken 168 {\cyrillicje}
+\defineactivetoken 169 {\cyrilliclje}
+\defineactivetoken 170 {\cyrillicnje}
+\defineactivetoken 171 {\cyrillictshe}
+\defineactivetoken 172 {\'\cyrillick}
+\defineactivetoken 173 {\-}
+\defineactivetoken 174 {\cyrillicushrt}
+\defineactivetoken 175 {\cyrillicdzhe}
+\defineactivetoken 176 {\textnumero}
+\defineactivetoken 177 {\cyrillicDJE}
+\defineactivetoken 178 {\'\cyrillicG}
+\defineactivetoken 180 {\cyrillicIE}
+\defineactivetoken 181 {\cyrillicDZE}
+\defineactivetoken 182 {\cyrillicII}
+\defineactivetoken 183 {\cyrillicYI}
+\defineactivetoken 184 {\cyrillicJE}
+\defineactivetoken 185 {\cyrillicLJE}
+\defineactivetoken 186 {\cyrillicNJE}
+\defineactivetoken 187 {\cyrillicTSHE}
+\defineactivetoken 188 {\'\cyrillicK}
+\defineactivetoken 189 {\textcurrency}
+\defineactivetoken 190 {\cyrillicUSHRT}
+\defineactivetoken 191 {\cyrillicDZHE}
+
+\stopregime
+
+\startregime[mik]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 176 {\cyrillicr}
+\defineactivetoken 177 {\cyrillics}
+\defineactivetoken 178 {\cyrillict}
+\defineactivetoken 179 {\cyrillicu}
+\defineactivetoken 180 {\cyrillicf}
+\defineactivetoken 181 {\cyrillich}
+\defineactivetoken 182 {\cyrillicc}
+\defineactivetoken 183 {\cyrillicch}
+\defineactivetoken 184 {\cyrillicsh}
+\defineactivetoken 185 {\cyrillicshch}
+\defineactivetoken 186 {\cyrillichrdsn}
+\defineactivetoken 187 {\cyrillicery}
+\defineactivetoken 188 {\cyrillicsftsn}
+\defineactivetoken 189 {\cyrillicerev}
+\defineactivetoken 190 {\cyrillicyu}
+\defineactivetoken 191 {\cyrillicya}
+\defineactivetoken 213 {\textnumero}
+\defineactivetoken 214 {\sectionmark}
+\defineactivetoken 248 {\textdegree}
+\defineactivetoken 249 {\textbullet}
+\defineactivetoken 250 {\periodcentered}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+\defineactivetoken 224 {\mathematics\alpha}
+\defineactivetoken 225 {\mathematics\beta}
+\defineactivetoken 226 {\mathematics\Gamma}
+\defineactivetoken 227 {\mathematics\pi}
+\defineactivetoken 228 {\mathematics\Sigma}
+\defineactivetoken 229 {\mathematics\sigma}
+\defineactivetoken 230 {\textmu}
+\defineactivetoken 231 {\mathematics\tau}
+\defineactivetoken 232 {\mathematics\Phi}
+\defineactivetoken 233 {\mathematics\Theta}
+\defineactivetoken 234 {\mathematics\Omega}
+\defineactivetoken 235 {\mathematics\delta}
+\defineactivetoken 236 {\mathematics\infty}
+\defineactivetoken 237 {\mathematics\emptyset}
+\defineactivetoken 238 {\mathematics\in}
+\defineactivetoken 239 {\mathematics\cap}
+\defineactivetoken 240 {\mathematics\equiv}
+\defineactivetoken 241 {\textpm}
+\defineactivetoken 242 {\mathematics\geq}
+\defineactivetoken 243 {\mathematics\leq}
+\defineactivetoken 246 {\textdiv}
+\defineactivetoken 247 {\mathematics\sim}
+\defineactivetoken 251 {\textsurd}
+\defineactivetoken 252 {\high{\txx n}}
+\defineactivetoken 253 {\twosuperior}
+
+\stopregime
+
+\startregime[mls]
+
+% The symbols 194 to 253 are defined in Mongolian fonts in
+% the Mon\TeX\ package (?)
+
+\defineactivetoken 128 {\cyrillicB}
+\defineactivetoken 129 {\cyrillicy}
+\defineactivetoken 130 {\cyrillicD}
+\defineactivetoken 131 {\cyrillicYO}
+\defineactivetoken 132 {\cyrillicerev}
+\defineactivetoken 133 {\cyrillicZH}
+\defineactivetoken 134 {\cyrillicZ}
+\defineactivetoken 135 {\cyrillicI}
+\defineactivetoken 136 {\cyrillicISHRT}
+\defineactivetoken 137 {\cyrillicyo}
+\defineactivetoken 138 {\cyrillicL}
+\defineactivetoken 139 {\cyrillicishrt}
+\defineactivetoken 140 {\cyrillicOTLD}
+\defineactivetoken 141 {\cyrillicP}
+\defineactivetoken 142 {\cyrillicEREV}
+\defineactivetoken 143 {\cyrillicU}
+\defineactivetoken 144 {\cyrillicF}
+\defineactivetoken 145 {\cyrillicC}
+\defineactivetoken 146 {\cyrillicCH}
+\defineactivetoken 147 {\cyrillicSH}
+\defineactivetoken 148 {\cyrillicotld}
+\defineactivetoken 149 {\cyrillicSHCH}
+\defineactivetoken 150 {\cyrillicHRDSN}
+\defineactivetoken 151 {\cyrillicERY}
+\defineactivetoken 152 {\cyrillicSFTSN}
+\defineactivetoken 153 {\cyrillicOTLD}
+\defineactivetoken 154 {\cyrillicY}
+\defineactivetoken 155 {\cyrillicEREV}
+\defineactivetoken 156 {\cyrillicYU}
+\defineactivetoken 157 {\cyrillicYA}
+\defineactivetoken 158 {\cyrillicb}
+\defineactivetoken 159 {\cyrillicv}
+\defineactivetoken 160 {\cyrillicg}
+\defineactivetoken 161 {\cyrillicd}
+\defineactivetoken 162 {\cyrilliczh}
+\defineactivetoken 163 {\cyrillicz}
+\defineactivetoken 164 {\cyrillici}
+\defineactivetoken 165 {\cyrillicishrt}
+\defineactivetoken 166 {\cyrillick}
+\defineactivetoken 167 {\cyrillicl}
+\defineactivetoken 168 {\cyrillicm}
+\defineactivetoken 169 {\cyrillicn}
+\defineactivetoken 170 {\cyrillicotld}
+\defineactivetoken 171 {\cyrillicp}
+\defineactivetoken 172 {\cyrillict}
+\defineactivetoken 173 {\cyrillicy}
+\defineactivetoken 174 {\leftguillemot}
+\defineactivetoken 175 {\rightguillemot}
+\defineactivetoken 176 {\cyrillicf}
+\defineactivetoken 177 {\cyrillicc}
+\defineactivetoken 178 {\cyrillicch}
+\defineactivetoken 180 {\cyrillicsh}
+\defineactivetoken 181 {\cyrillicshch}
+\defineactivetoken 182 {\cyrillichrdsn}
+\defineactivetoken 183 {\cyrillicery}
+\defineactivetoken 184 {\cyrillicsftsn}
+\defineactivetoken 189 {\cyrillicerev}
+\defineactivetoken 190 {\cyrillicyu}
+\defineactivetoken 193 {\cyrillicya}
+\defineactivetoken 226 {\cyrillicG}
+\defineactivetoken 225 {\ss}
+\defineactivetoken 231 {\mathematics{\gamma}}
+\defineactivetoken 255 {\nonbreakablespace}
+\defineactivetoken 194 {\titem}
+\defineactivetoken 195 {\shud}
+\defineactivetoken 197 {\secondaryshud}
+\defineactivetoken 198 {\shilbe}
+\defineactivetoken 199 {\gedes}
+\defineactivetoken 207 {\secondarygedes}
+\defineactivetoken 208 {\cegteishud}
+\defineactivetoken 209 {\lewer}
+\defineactivetoken 210 {\suuliinlewer}
+\defineactivetoken 211 {\tertiarylewer}
+\defineactivetoken 212 {\mewer}
+\defineactivetoken 213 {\suuliinmewer}
+\defineactivetoken 214 {\xewteeqix}
+\defineactivetoken 215 {\dawxarcegtxewteeqix}
+\defineactivetoken 216 {\halfnum}
+\defineactivetoken 219 {\num}
+\defineactivetoken 220 {\halfnumtgedes}
+\defineactivetoken 221 {\numtaigedes}
+\defineactivetoken 222 {\buruuxarsangedes}
+\defineactivetoken 223 {\gedesteishilbe}
+\defineactivetoken 224 {\erweeljinshilbe}
+\defineactivetoken 227 {\secerweeljin}
+\defineactivetoken 228 {\bosooshilbe}
+\defineactivetoken 229 {\etgershilbe}
+\defineactivetoken 230 {\zawj}
+\defineactivetoken 232 {\suuliinzawj}
+\defineactivetoken 233 {\dawxarcegtzawj}
+\defineactivetoken 234 {\sereeewer}
+\defineactivetoken 235 {\matgarshilbe}
+\defineactivetoken 236 {\bituushilbe}
+\defineactivetoken 237 {\secondaryqagt}
+\defineactivetoken 238 {\qagt}
+\defineactivetoken 239 {\secnumtdelbenqix}
+\defineactivetoken 240 {\numtdelbenqix}
+\defineactivetoken 241 {\secsertenqixtnum}
+\defineactivetoken 242 {\sertenqixtnum}
+\defineactivetoken 243 {\zadgaizardigt}
+\defineactivetoken 244 {\bituuzardigt}
+\defineactivetoken 245 {\malgaitaititem}
+\defineactivetoken 246 {\suul}
+\defineactivetoken 247 {\orxic}
+\defineactivetoken 248 {\biodoisuul}
+\defineactivetoken 249 {\bagodoisuul}
+\defineactivetoken 250 {\nceg}
+\defineactivetoken 251 {\gceg}
+\defineactivetoken 252 {\ceg}
+\defineactivetoken 253 {\dorwoljin}
+
+\stopregime
+
+\startregime[mnk]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicYO}
+\defineactivetoken 135 {\cyrillicZH}
+\defineactivetoken 136 {\cyrillicZ}
+\defineactivetoken 137 {\cyrillicI}
+\defineactivetoken 138 {\cyrillicISHRT}
+\defineactivetoken 139 {\cyrillicK}
+\defineactivetoken 140 {\cyrillicL}
+\defineactivetoken 141 {\cyrillicM}
+\defineactivetoken 142 {\cyrillicN}
+\defineactivetoken 143 {\cyrillicO}
+\defineactivetoken 144 {\cyrillicOTLD}
+\defineactivetoken 145 {\cyrillicP}
+\defineactivetoken 146 {\cyrillicR}
+\defineactivetoken 147 {\cyrillicS}
+\defineactivetoken 148 {\cyrillicT}
+\defineactivetoken 149 {\cyrillicU}
+\defineactivetoken 150 {\cyrillicY}
+\defineactivetoken 151 {\cyrillicF}
+\defineactivetoken 152 {\cyrillicH}
+\defineactivetoken 153 {\cyrillicC}
+\defineactivetoken 154 {\cyrillicCH}
+\defineactivetoken 155 {\cyrillicSH}
+\defineactivetoken 156 {\cyrillicSHCH}
+\defineactivetoken 157 {\cyrillicHRDSN}
+\defineactivetoken 158 {\cyrillicERY}
+\defineactivetoken 159 {\cyrillicSFTSN}
+\defineactivetoken 160 {\cyrillicEREV}
+\defineactivetoken 161 {\cyrillicYU}
+\defineactivetoken 162 {\cyrillicYA}
+\defineactivetoken 163 {\cyrillica}
+\defineactivetoken 164 {\cyrillicb}
+\defineactivetoken 165 {\cyrillicv}
+\defineactivetoken 166 {\cyrillicg}
+\defineactivetoken 167 {\cyrillicd}
+\defineactivetoken 168 {\cyrillice}
+\defineactivetoken 169 {\cyrillicyo}
+\defineactivetoken 170 {\cyrilliczh}
+\defineactivetoken 173 {\cyrillicz}
+\defineactivetoken 224 {\cyrillici}
+\defineactivetoken 225 {\cyrillicishrt}
+\defineactivetoken 226 {\cyrillick}
+\defineactivetoken 227 {\cyrillicl}
+\defineactivetoken 228 {\cyrillicm}
+\defineactivetoken 229 {\cyrillicn}
+\defineactivetoken 230 {\cyrillico}
+\defineactivetoken 231 {\cyrillicotld}
+\defineactivetoken 232 {\cyrillicp}
+\defineactivetoken 233 {\cyrillicr}
+\defineactivetoken 234 {\cyrillics}
+\defineactivetoken 235 {\cyrillict}
+\defineactivetoken 236 {\cyrillicu}
+\defineactivetoken 237 {\cyrillicy}
+\defineactivetoken 238 {\cyrillicf}
+\defineactivetoken 239 {\cyrillich}
+\defineactivetoken 240 {\cyrillicc}
+\defineactivetoken 241 {\cyrillicch}
+\defineactivetoken 242 {\cyrillicsh}
+\defineactivetoken 243 {\cyrillicshch}
+\defineactivetoken 244 {\cyrillichrdsn}
+\defineactivetoken 245 {\cyrillicery}
+\defineactivetoken 248 {\cyrillicsftsn}
+\defineactivetoken 252 {\cyrillicerev}
+\defineactivetoken 253 {\cyrillicyu}
+\defineactivetoken 254 {\cyrillicya}
+
+\stopregime
+
+\startregime[mos]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 160 {\cyrillicYO}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 153 {\cyrillicOTLD}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 154 {\cyrillicY}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 164 {\cyrillicSHCH}
+\defineactivetoken 162 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 224 {\cyrillica}
+\defineactivetoken 225 {\cyrillicb}
+\defineactivetoken 226 {\cyrillicv}
+\defineactivetoken 227 {\cyrillicg}
+\defineactivetoken 228 {\cyrillicd}
+\defineactivetoken 229 {\cyrillice}
+\defineactivetoken 161 {\cyrillicyo}
+\defineactivetoken 230 {\cyrilliczh}
+\defineactivetoken 231 {\cyrillicz}
+\defineactivetoken 232 {\cyrillici}
+\defineactivetoken 233 {\cyrillicishrt}
+\defineactivetoken 234 {\cyrillick}
+\defineactivetoken 235 {\cyrillicl}
+\defineactivetoken 236 {\cyrillicm}
+\defineactivetoken 237 {\cyrillicn}
+\defineactivetoken 238 {\cyrillico}
+\defineactivetoken 249 {\cyrillicotld}
+\defineactivetoken 239 {\cyrillicp}
+\defineactivetoken 240 {\cyrillicr}
+\defineactivetoken 241 {\cyrillics}
+\defineactivetoken 242 {\cyrillict}
+\defineactivetoken 243 {\cyrillicu}
+\defineactivetoken 250 {\cyrillicy}
+\defineactivetoken 244 {\cyrillicf}
+\defineactivetoken 245 {\cyrillich}
+\defineactivetoken 246 {\cyrillicc}
+\defineactivetoken 247 {\cyrillicch}
+\defineactivetoken 248 {\cyrillicsh}
+\defineactivetoken 165 {\cyrillicshch}
+\defineactivetoken 163 {\cyrillichrdsn}
+\defineactivetoken 251 {\cyrillicery}
+\defineactivetoken 252 {\cyrillicsftsn}
+\defineactivetoken 253 {\cyrillicerev}
+\defineactivetoken 254 {\cyrillicyu}
+\defineactivetoken 168 {\cyrillicya}
+
+\stopregime
+
+\startregime[ncc]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicYO}
+\defineactivetoken 135 {\cyrillicZH}
+\defineactivetoken 136 {\cyrillicZ}
+\defineactivetoken 137 {\cyrillicI}
+\defineactivetoken 139 {\cyrillicISHRT}
+\defineactivetoken 140 {\cyrillicK}
+\defineactivetoken 142 {\cyrillicL}
+\defineactivetoken 143 {\cyrillicM}
+\defineactivetoken 144 {\cyrillicN}
+\defineactivetoken 145 {\cyrillicO}
+\defineactivetoken 146 {\cyrillicOTLD}
+\defineactivetoken 147 {\cyrillicP}
+\defineactivetoken 148 {\cyrillicR}
+\defineactivetoken 149 {\cyrillicS}
+\defineactivetoken 150 {\cyrillicT}
+\defineactivetoken 151 {\cyrillicU}
+\defineactivetoken 152 {\cyrillicY}
+\defineactivetoken 153 {\cyrillicF}
+\defineactivetoken 154 {\cyrillicH}
+\defineactivetoken 155 {\cyrillicC}
+\defineactivetoken 156 {\cyrillicCH}
+\defineactivetoken 157 {\cyrillicSH}
+\defineactivetoken 158 {\cyrillicSHCH}
+\defineactivetoken 159 {\cyrillicHRDSN}
+\defineactivetoken 160 {\cyrillicERY}
+\defineactivetoken 161 {\cyrillicSFTSN}
+\defineactivetoken 162 {\cyrillicEREV}
+\defineactivetoken 163 {\cyrillicYU}
+\defineactivetoken 164 {\cyrillicYA}
+\defineactivetoken 165 {\cyrillica}
+\defineactivetoken 166 {\cyrillicb}
+\defineactivetoken 167 {\cyrillicv}
+\defineactivetoken 168 {\cyrillicg}
+\defineactivetoken 169 {\cyrillicd}
+\defineactivetoken 170 {\cyrillice}
+\defineactivetoken 171 {\cyrillicyo}
+\defineactivetoken 172 {\cyrilliczh}
+\defineactivetoken 173 {\cyrillicz}
+\defineactivetoken 225 {\cyrillici}
+\defineactivetoken 226 {\cyrillicishrt}
+\defineactivetoken 227 {\cyrillick}
+\defineactivetoken 228 {\cyrillicl}
+\defineactivetoken 229 {\cyrillicm}
+\defineactivetoken 230 {\cyrillicn}
+\defineactivetoken 231 {\cyrillico}
+\defineactivetoken 232 {\cyrillicotld}
+\defineactivetoken 233 {\cyrillicp}
+\defineactivetoken 234 {\cyrillicr}
+\defineactivetoken 235 {\cyrillics}
+\defineactivetoken 236 {\cyrillict}
+\defineactivetoken 237 {\cyrillicu}
+\defineactivetoken 238 {\cyrillicy}
+\defineactivetoken 239 {\cyrillicf}
+\defineactivetoken 240 {\cyrillich}
+\defineactivetoken 241 {\cyrillicc}
+\defineactivetoken 242 {\cyrillicch}
+\defineactivetoken 243 {\cyrillicsh}
+\defineactivetoken 244 {\cyrillicshch}
+\defineactivetoken 245 {\cyrillichrdsn}
+\defineactivetoken 246 {\cyrillicery}
+\defineactivetoken 247 {\cyrillicsftsn}
+\defineactivetoken 248 {\cyrillicerev}
+\defineactivetoken 249 {\cyrillicyu}
+\defineactivetoken 251 {\cyrillicya}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-cyr.tex b/Master/texmf-dist/tex/context/base/regi-cyr.tex
new file mode 100644
index 00000000000..134cc572858
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-cyr.tex
@@ -0,0 +1,855 @@
+%D \module
+%D [ file=regi-cyr,
+%D version=2003.01.24,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Cyrillic,
+%D author=...,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Here are input regimes for cyrillic encodings:
+%D
+%D \startitemize
+%D \item windows
+%D \item two variants of dos
+%D \item three variants of koi-8 for *nix: russian,
+%D ukrainian and mixed
+%D \item two variants for the mac
+%D \stopitemize
+%D
+%D Other, not so popular regimes, can be found in \type
+%D {regi-cy2}.
+
+\startregime[cp1251]
+
+\defineactivetoken 192 {\cyrillicA}
+\defineactivetoken 193 {\cyrillicB}
+\defineactivetoken 194 {\cyrillicV}
+\defineactivetoken 195 {\cyrillicG}
+\defineactivetoken 196 {\cyrillicD}
+\defineactivetoken 197 {\cyrillicE}
+\defineactivetoken 198 {\cyrillicZH}
+\defineactivetoken 199 {\cyrillicZ}
+\defineactivetoken 200 {\cyrillicI}
+\defineactivetoken 201 {\cyrillicISHRT}
+\defineactivetoken 202 {\cyrillicK}
+\defineactivetoken 203 {\cyrillicL}
+\defineactivetoken 204 {\cyrillicM}
+\defineactivetoken 205 {\cyrillicN}
+\defineactivetoken 206 {\cyrillicO}
+\defineactivetoken 207 {\cyrillicP}
+\defineactivetoken 208 {\cyrillicR}
+\defineactivetoken 209 {\cyrillicS}
+\defineactivetoken 210 {\cyrillicT}
+\defineactivetoken 211 {\cyrillicU}
+\defineactivetoken 212 {\cyrillicF}
+\defineactivetoken 213 {\cyrillicH}
+\defineactivetoken 214 {\cyrillicC}
+\defineactivetoken 215 {\cyrillicCH}
+\defineactivetoken 216 {\cyrillicSH}
+\defineactivetoken 217 {\cyrillicSHCH}
+\defineactivetoken 218 {\cyrillicHRDSN}
+\defineactivetoken 219 {\cyrillicERY}
+\defineactivetoken 220 {\cyrillicSFTSN}
+\defineactivetoken 221 {\cyrillicEREV}
+\defineactivetoken 222 {\cyrillicYU}
+\defineactivetoken 223 {\cyrillicYA}
+\defineactivetoken 224 {\cyrillica}
+\defineactivetoken 225 {\cyrillicb}
+\defineactivetoken 226 {\cyrillicv}
+\defineactivetoken 227 {\cyrillicg}
+\defineactivetoken 228 {\cyrillicd}
+\defineactivetoken 229 {\cyrillice}
+\defineactivetoken 230 {\cyrilliczh}
+\defineactivetoken 231 {\cyrillicz}
+\defineactivetoken 232 {\cyrillici}
+\defineactivetoken 233 {\cyrillicishrt}
+\defineactivetoken 234 {\cyrillick}
+\defineactivetoken 235 {\cyrillicl}
+\defineactivetoken 236 {\cyrillicm}
+\defineactivetoken 237 {\cyrillicn}
+\defineactivetoken 238 {\cyrillico}
+\defineactivetoken 239 {\cyrillicp}
+\defineactivetoken 240 {\cyrillicr}
+\defineactivetoken 241 {\cyrillics}
+\defineactivetoken 242 {\cyrillict}
+\defineactivetoken 243 {\cyrillicu}
+\defineactivetoken 244 {\cyrillicf}
+\defineactivetoken 245 {\cyrillich}
+\defineactivetoken 246 {\cyrillicc}
+\defineactivetoken 247 {\cyrillicch}
+\defineactivetoken 248 {\cyrillicsh}
+\defineactivetoken 249 {\cyrillicshch}
+\defineactivetoken 250 {\cyrillichrdsn}
+\defineactivetoken 251 {\cyrillicery}
+\defineactivetoken 252 {\cyrillicsftsn}
+\defineactivetoken 253 {\cyrillicerev}
+\defineactivetoken 254 {\cyrillicyu}
+\defineactivetoken 255 {\cyrillicya}
+\defineactivetoken 128 {\cyrillicDJE}
+\defineactivetoken 129 {\'\cyrillicG}
+\defineactivetoken 130 {\lowerleftsingleninequote}
+\defineactivetoken 131 {\'\cyrillicg}
+\defineactivetoken 132 {\lowerleftdoubleninequote}
+\defineactivetoken 133 {\textellipsis}
+\defineactivetoken 134 {\textdag}
+\defineactivetoken 135 {\textddag}
+\defineactivetoken 136 {\texteuro}
+\defineactivetoken 137 {\perthousand}
+\defineactivetoken 138 {\cyrillicLJE}
+\defineactivetoken 139 {\leftsubguillemot}
+\defineactivetoken 140 {\cyrillicNJE}
+\defineactivetoken 141 {\'\cyrillicK}
+\defineactivetoken 142 {\cyrillicTSHE}
+\defineactivetoken 143 {\cyrillicDZHE}
+\defineactivetoken 144 {\cyrillicdje}
+\defineactivetoken 145 {\upperleftsinglesixquote}
+\defineactivetoken 146 {\upperrightsingleninequote}
+\defineactivetoken 147 {\upperleftdoublesixquote}
+\defineactivetoken 148 {\upperrightdoubleninequote}
+\defineactivetoken 149 {\textbullet}
+\defineactivetoken 150 {\endash}
+\defineactivetoken 151 {\emdash}
+\defineactivetoken 152 {\unknownchar}
+\defineactivetoken 153 {\trademark}
+\defineactivetoken 154 {\cyrilliclje}
+\defineactivetoken 155 {\rightsubguillemot}
+\defineactivetoken 156 {\cyrillicnje}
+\defineactivetoken 157 {\'\cyrillick}
+\defineactivetoken 158 {\cyrillictshe}
+\defineactivetoken 159 {\cyrillicdzhe}
+\defineactivetoken 160 {\nonbreakablespace}
+\defineactivetoken 161 {\cyrillicUSHRT}
+\defineactivetoken 162 {\cyrillicushrt}
+\defineactivetoken 163 {\cyrillicJE}
+\defineactivetoken 164 {\textcurrency}
+\defineactivetoken 165 {\cyrillicGUP}
+\defineactivetoken 166 {\textbrokenbar}
+\defineactivetoken 167 {\sectionmark}
+\defineactivetoken 168 {\cyrillicYO}
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 170 {\cyrillicIE}
+\defineactivetoken 171 {\leftguillemot}
+\defineactivetoken 173 {\hyphen}
+\defineactivetoken 174 {\registered}
+\defineactivetoken 175 {\cyrillicYI}
+\defineactivetoken 176 {\textdegree}
+\defineactivetoken 178 {\cyrillicII}
+\defineactivetoken 179 {\cyrillicii}
+\defineactivetoken 180 {\cyrillicgup}
+\defineactivetoken 182 {\paragraphmark}
+\defineactivetoken 183 {\periodcentered}
+\defineactivetoken 184 {\cyrillicyo}
+\defineactivetoken 185 {\textnumero}
+\defineactivetoken 186 {\cyrillicie}
+\defineactivetoken 187 {\rightguillemot}
+\defineactivetoken 188 {\cyrillicje}
+\defineactivetoken 189 {\cyrillicDZE}
+\defineactivetoken 190 {\cyrillicdze}
+\defineactivetoken 191 {\cyrillicyi}
+\defineactivetoken 172 {\textlognot}
+\defineactivetoken 177 {\textpm}
+\defineactivetoken 181 {\textmu}
+
+\stopregime
+
+\startregime[cp866]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\cyrillicYO}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 242 {\cyrillicIE}
+\defineactivetoken 243 {\cyrillicie}
+\defineactivetoken 244 {\cyrillicYI}
+\defineactivetoken 245 {\cyrillicyi}
+\defineactivetoken 246 {\cyrillicUSHRT}
+\defineactivetoken 247 {\cyrillicushrt}
+\defineactivetoken 248 {\textdegree}
+\defineactivetoken 249 {\bullet}
+\defineactivetoken 250 {\periodcentered}
+\defineactivetoken 252 {\textnumero}
+\defineactivetoken 253 {\textcurrency}
+\defineactivetoken 254 {\textblacksquare}
+\defineactivetoken 255 {\nonbreakablespace}
+\defineactivetoken 251 {\textsurd}
+
+\stopregime
+
+\startregime[cp866nav]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\cyrillica}
+\defineactivetoken 161 {\cyrillicb}
+\defineactivetoken 162 {\cyrillicv}
+\defineactivetoken 163 {\cyrillicg}
+\defineactivetoken 164 {\cyrillicd}
+\defineactivetoken 165 {\cyrillice}
+\defineactivetoken 166 {\cyrilliczh}
+\defineactivetoken 167 {\cyrillicz}
+\defineactivetoken 168 {\cyrillici}
+\defineactivetoken 169 {\cyrillicishrt}
+\defineactivetoken 170 {\cyrillick}
+\defineactivetoken 171 {\cyrillicl}
+\defineactivetoken 172 {\cyrillicm}
+\defineactivetoken 173 {\cyrillicn}
+\defineactivetoken 174 {\cyrillico}
+\defineactivetoken 175 {\cyrillicp}
+\defineactivetoken 224 {\cyrillicr}
+\defineactivetoken 225 {\cyrillics}
+\defineactivetoken 226 {\cyrillict}
+\defineactivetoken 227 {\cyrillicu}
+\defineactivetoken 228 {\cyrillicf}
+\defineactivetoken 229 {\cyrillich}
+\defineactivetoken 230 {\cyrillicc}
+\defineactivetoken 231 {\cyrillicch}
+\defineactivetoken 232 {\cyrillicsh}
+\defineactivetoken 233 {\cyrillicshch}
+\defineactivetoken 234 {\cyrillichrdsn}
+\defineactivetoken 235 {\cyrillicery}
+\defineactivetoken 236 {\cyrillicsftsn}
+\defineactivetoken 237 {\cyrillicerev}
+\defineactivetoken 238 {\cyrillicyu}
+\defineactivetoken 239 {\cyrillicya}
+\defineactivetoken 240 {\cyrillicYO}
+\defineactivetoken 241 {\cyrillicyo}
+\defineactivetoken 242 {\cyrillicGUP}
+\defineactivetoken 243 {\cyrillicgup}
+\defineactivetoken 244 {\cyrillicIE}
+\defineactivetoken 245 {\cyrillicie}
+\defineactivetoken 246 {\cyrillicII}
+\defineactivetoken 247 {\cyrillicii}
+\defineactivetoken 248 {\cyrillicYI}
+\defineactivetoken 249 {\cyrillicyi}
+\defineactivetoken 250 {\cyrillicUSHRT}
+\defineactivetoken 251 {\cyrillicushrt}
+\defineactivetoken 252 {\textnumero}
+\defineactivetoken 253 {\leftguillemot}
+\defineactivetoken 254 {\rightguillemot}
+\defineactivetoken 255 {\nonbreakablespace}
+
+\stopregime
+
+\startregime[koi8-r]
+
+\defineactivetoken 225 {\cyrillicA}
+\defineactivetoken 226 {\cyrillicB}
+\defineactivetoken 247 {\cyrillicV}
+\defineactivetoken 231 {\cyrillicG}
+\defineactivetoken 228 {\cyrillicD}
+\defineactivetoken 229 {\cyrillicE}
+\defineactivetoken 179 {\cyrillicYO}
+\defineactivetoken 246 {\cyrillicZH}
+\defineactivetoken 250 {\cyrillicZ}
+\defineactivetoken 233 {\cyrillicI}
+\defineactivetoken 234 {\cyrillicISHRT}
+\defineactivetoken 235 {\cyrillicK}
+\defineactivetoken 236 {\cyrillicL}
+\defineactivetoken 237 {\cyrillicM}
+\defineactivetoken 238 {\cyrillicN}
+\defineactivetoken 239 {\cyrillicO}
+\defineactivetoken 240 {\cyrillicP}
+\defineactivetoken 242 {\cyrillicR}
+\defineactivetoken 243 {\cyrillicS}
+\defineactivetoken 244 {\cyrillicT}
+\defineactivetoken 245 {\cyrillicU}
+\defineactivetoken 230 {\cyrillicF}
+\defineactivetoken 232 {\cyrillicH}
+\defineactivetoken 227 {\cyrillicC}
+\defineactivetoken 254 {\cyrillicCH}
+\defineactivetoken 251 {\cyrillicSH}
+\defineactivetoken 253 {\cyrillicSHCH}
+\defineactivetoken 255 {\cyrillicHRDSN}
+\defineactivetoken 249 {\cyrillicERY}
+\defineactivetoken 248 {\cyrillicSFTSN}
+\defineactivetoken 252 {\cyrillicEREV}
+\defineactivetoken 224 {\cyrillicYU}
+\defineactivetoken 241 {\cyrillicYA}
+\defineactivetoken 193 {\cyrillica}
+\defineactivetoken 194 {\cyrillicb}
+\defineactivetoken 215 {\cyrillicv}
+\defineactivetoken 199 {\cyrillicg}
+\defineactivetoken 196 {\cyrillicd}
+\defineactivetoken 197 {\cyrillice}
+\defineactivetoken 163 {\cyrillicyo}
+\defineactivetoken 214 {\cyrilliczh}
+\defineactivetoken 218 {\cyrillicz}
+\defineactivetoken 201 {\cyrillici}
+\defineactivetoken 202 {\cyrillicishrt}
+\defineactivetoken 203 {\cyrillick}
+\defineactivetoken 204 {\cyrillicl}
+\defineactivetoken 205 {\cyrillicm}
+\defineactivetoken 206 {\cyrillicn}
+\defineactivetoken 207 {\cyrillico}
+\defineactivetoken 208 {\cyrillicp}
+\defineactivetoken 210 {\cyrillicr}
+\defineactivetoken 211 {\cyrillics}
+\defineactivetoken 212 {\cyrillict}
+\defineactivetoken 213 {\cyrillicu}
+\defineactivetoken 198 {\cyrillicf}
+\defineactivetoken 200 {\cyrillich}
+\defineactivetoken 195 {\cyrillicc}
+\defineactivetoken 222 {\cyrillicch}
+\defineactivetoken 219 {\cyrillicsh}
+\defineactivetoken 221 {\cyrillicshch}
+\defineactivetoken 223 {\cyrillichrdsn}
+\defineactivetoken 217 {\cyrillicery}
+\defineactivetoken 216 {\cyrillicsftsn}
+\defineactivetoken 220 {\cyrillicerev}
+\defineactivetoken 192 {\cyrillicyu}
+\defineactivetoken 209 {\cyrillicya}
+\defineactivetoken 148 {\textblacksquare}
+\defineactivetoken 149 {\textbullet}
+\defineactivetoken 154 {\nonbreakablespace}
+\defineactivetoken 156 {\textdegree}
+\defineactivetoken 158 {\periodcentered}
+\defineactivetoken 191 {\copyright}
+\defineactivetoken 150 {\textsurd}
+\defineactivetoken 151 {\mathematics\sim}
+\defineactivetoken 152 {\mathematics\leq}
+\defineactivetoken 153 {\mathematics\geq}
+\defineactivetoken 157 {\twosuperior}
+\defineactivetoken 159 {\textdiv}
+
+\stopregime
+
+\startregime[koi8-ru]
+
+\defineactivetoken 225 {\cyrillicA}
+\defineactivetoken 226 {\cyrillicB}
+\defineactivetoken 247 {\cyrillicV}
+\defineactivetoken 231 {\cyrillicG}
+\defineactivetoken 228 {\cyrillicD}
+\defineactivetoken 229 {\cyrillicE}
+\defineactivetoken 179 {\cyrillicYO}
+\defineactivetoken 246 {\cyrillicZH}
+\defineactivetoken 250 {\cyrillicZ}
+\defineactivetoken 233 {\cyrillicI}
+\defineactivetoken 234 {\cyrillicISHRT}
+\defineactivetoken 235 {\cyrillicK}
+\defineactivetoken 236 {\cyrillicL}
+\defineactivetoken 237 {\cyrillicM}
+\defineactivetoken 238 {\cyrillicN}
+\defineactivetoken 239 {\cyrillicO}
+\defineactivetoken 240 {\cyrillicP}
+\defineactivetoken 242 {\cyrillicR}
+\defineactivetoken 243 {\cyrillicS}
+\defineactivetoken 244 {\cyrillicT}
+\defineactivetoken 245 {\cyrillicU}
+\defineactivetoken 230 {\cyrillicF}
+\defineactivetoken 232 {\cyrillicH}
+\defineactivetoken 227 {\cyrillicC}
+\defineactivetoken 254 {\cyrillicCH}
+\defineactivetoken 251 {\cyrillicSH}
+\defineactivetoken 253 {\cyrillicSHCH}
+\defineactivetoken 255 {\cyrillicHRDSN}
+\defineactivetoken 249 {\cyrillicERY}
+\defineactivetoken 248 {\cyrillicSFTSN}
+\defineactivetoken 252 {\cyrillicEREV}
+\defineactivetoken 224 {\cyrillicYU}
+\defineactivetoken 241 {\cyrillicYA}
+\defineactivetoken 193 {\cyrillica}
+\defineactivetoken 194 {\cyrillicb}
+\defineactivetoken 215 {\cyrillicv}
+\defineactivetoken 199 {\cyrillicg}
+\defineactivetoken 196 {\cyrillicd}
+\defineactivetoken 197 {\cyrillice}
+\defineactivetoken 163 {\cyrillicyo}
+\defineactivetoken 214 {\cyrilliczh}
+\defineactivetoken 218 {\cyrillicz}
+\defineactivetoken 201 {\cyrillici}
+\defineactivetoken 202 {\cyrillicishrt}
+\defineactivetoken 203 {\cyrillick}
+\defineactivetoken 204 {\cyrillicl}
+\defineactivetoken 205 {\cyrillicm}
+\defineactivetoken 206 {\cyrillicn}
+\defineactivetoken 207 {\cyrillico}
+\defineactivetoken 208 {\cyrillicp}
+\defineactivetoken 210 {\cyrillicr}
+\defineactivetoken 211 {\cyrillics}
+\defineactivetoken 212 {\cyrillict}
+\defineactivetoken 213 {\cyrillicu}
+\defineactivetoken 198 {\cyrillicf}
+\defineactivetoken 200 {\cyrillich}
+\defineactivetoken 195 {\cyrillicc}
+\defineactivetoken 222 {\cyrillicch}
+\defineactivetoken 219 {\cyrillicsh}
+\defineactivetoken 221 {\cyrillicshch}
+\defineactivetoken 223 {\cyrillichrdsn}
+\defineactivetoken 217 {\cyrillicery}
+\defineactivetoken 216 {\cyrillicsftsn}
+\defineactivetoken 220 {\cyrillicerev}
+\defineactivetoken 192 {\cyrillicyu}
+\defineactivetoken 209 {\cyrillicya}
+\defineactivetoken 147 {\upperleftsinglesixquote}
+\defineactivetoken 148 {\textblacksquare}
+\defineactivetoken 149 {\textbullet} % Changed by V.F. 07/02/2003 (was: \bullet)
+\defineactivetoken 150 {\upperrightdoubleninequote}
+\defineactivetoken 151 {\emdash}
+\defineactivetoken 152 {\textnumero}
+\defineactivetoken 153 {\trademark} % Changed by V.F. 07/02/2003 (was: \texttrademark)
+\defineactivetoken 154 {\nonbreakablespace}
+\defineactivetoken 155 {\rightguillemot}
+\defineactivetoken 156 {\registered}
+\defineactivetoken 157 {\leftguillemot}
+\defineactivetoken 158 {\periodcentered} % Changed by V.F. 07/02/2003 (was: \textperiodcentered)
+\defineactivetoken 159 {\textcurrency}
+\defineactivetoken 164 {\cyrillicie}
+\defineactivetoken 166 {\cyrillicii}
+\defineactivetoken 167 {\cyrillicyi}
+\defineactivetoken 173 {\cyrillicgup}
+\defineactivetoken 174 {\cyrillicushrt}
+\defineactivetoken 180 {\cyrillicIE}
+\defineactivetoken 182 {\cyrillicII}
+\defineactivetoken 183 {\cyrillicYI}
+\defineactivetoken 189 {\cyrillicGUP}
+\defineactivetoken 190 {\cyrillicUSHRT}
+\defineactivetoken 191 {\copyright}
+
+\stopregime
+
+\startregime[koi8-u]
+
+\defineactivetoken 225 {\cyrillicA}
+\defineactivetoken 226 {\cyrillicB}
+\defineactivetoken 247 {\cyrillicV}
+\defineactivetoken 231 {\cyrillicG}
+\defineactivetoken 228 {\cyrillicD}
+\defineactivetoken 229 {\cyrillicE}
+\defineactivetoken 179 {\cyrillicYO}
+\defineactivetoken 246 {\cyrillicZH}
+\defineactivetoken 250 {\cyrillicZ}
+\defineactivetoken 233 {\cyrillicI}
+\defineactivetoken 234 {\cyrillicISHRT}
+\defineactivetoken 235 {\cyrillicK}
+\defineactivetoken 236 {\cyrillicL}
+\defineactivetoken 237 {\cyrillicM}
+\defineactivetoken 238 {\cyrillicN}
+\defineactivetoken 239 {\cyrillicO}
+\defineactivetoken 240 {\cyrillicP}
+\defineactivetoken 242 {\cyrillicR}
+\defineactivetoken 243 {\cyrillicS}
+\defineactivetoken 244 {\cyrillicT}
+\defineactivetoken 245 {\cyrillicU}
+\defineactivetoken 230 {\cyrillicF}
+\defineactivetoken 232 {\cyrillicH}
+\defineactivetoken 227 {\cyrillicC}
+\defineactivetoken 254 {\cyrillicCH}
+\defineactivetoken 251 {\cyrillicSH}
+\defineactivetoken 253 {\cyrillicSHCH}
+\defineactivetoken 255 {\cyrillicHRDSN}
+\defineactivetoken 249 {\cyrillicERY}
+\defineactivetoken 248 {\cyrillicSFTSN}
+\defineactivetoken 252 {\cyrillicEREV}
+\defineactivetoken 224 {\cyrillicYU}
+\defineactivetoken 241 {\cyrillicYA}
+\defineactivetoken 193 {\cyrillica}
+\defineactivetoken 194 {\cyrillicb}
+\defineactivetoken 215 {\cyrillicv}
+\defineactivetoken 199 {\cyrillicg}
+\defineactivetoken 196 {\cyrillicd}
+\defineactivetoken 197 {\cyrillice}
+\defineactivetoken 163 {\cyrillicyo}
+\defineactivetoken 214 {\cyrilliczh}
+\defineactivetoken 218 {\cyrillicz}
+\defineactivetoken 201 {\cyrillici}
+\defineactivetoken 202 {\cyrillicishrt}
+\defineactivetoken 203 {\cyrillick}
+\defineactivetoken 204 {\cyrillicl}
+\defineactivetoken 205 {\cyrillicm}
+\defineactivetoken 206 {\cyrillicn}
+\defineactivetoken 207 {\cyrillico}
+\defineactivetoken 208 {\cyrillicp}
+\defineactivetoken 210 {\cyrillicr}
+\defineactivetoken 211 {\cyrillics}
+\defineactivetoken 212 {\cyrillict}
+\defineactivetoken 213 {\cyrillicu}
+\defineactivetoken 198 {\cyrillicf}
+\defineactivetoken 200 {\cyrillich}
+\defineactivetoken 195 {\cyrillicc}
+\defineactivetoken 222 {\cyrillicch}
+\defineactivetoken 219 {\cyrillicsh}
+\defineactivetoken 221 {\cyrillicshch}
+\defineactivetoken 223 {\cyrillichrdsn}
+\defineactivetoken 217 {\cyrillicery}
+\defineactivetoken 216 {\cyrillicsftsn}
+\defineactivetoken 220 {\cyrillicerev}
+\defineactivetoken 192 {\cyrillicyu}
+\defineactivetoken 209 {\cyrillicya}
+\defineactivetoken 164 {\cyrillicie}
+\defineactivetoken 166 {\cyrillicii}
+\defineactivetoken 167 {\cyrillicyi}
+\defineactivetoken 173 {\cyrillicgup}
+\defineactivetoken 180 {\cyrillicIE}
+\defineactivetoken 182 {\cyrillicII}
+\defineactivetoken 183 {\cyrillicYI}
+\defineactivetoken 189 {\cyrillicGUP}
+
+\stopregime
+
+\startregime[maccyr]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\textdag} % Changed by V.F. 07/02/2003 (was: dag)
+\defineactivetoken 161 {\textdegree}
+\defineactivetoken 162 {\textcent}
+\defineactivetoken 163 {\textsterling} % Changed by V.F. 07/02/2003 (was: \sterling)
+\defineactivetoken 164 {\sectionmark} % Changed by V.F. 07/02/2003 (was: \S)
+\defineactivetoken 165 {\textbullet} % Changed by V.F. 07/02/2003 (was: \bullet}
+\defineactivetoken 166 {\paragraphmark} % Changed by V.F. 07/02/2003 (was: \P)
+\defineactivetoken 167 {\cyrillicII}
+\defineactivetoken 168 {\registered}
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 170 {\trademark} % Changed by V.F. 07/02/2003 (was: \texttrademark}
+\defineactivetoken 171 {\cyrillicDJE}
+\defineactivetoken 172 {\cyrillicdje}
+\defineactivetoken 174 {\'\cyrillicG}
+\defineactivetoken 175 {\'\cyrillicg}
+\defineactivetoken 180 {\cyrillicii}
+\defineactivetoken 183 {\cyrillicJE}
+\defineactivetoken 184 {\cyrillicIE}
+\defineactivetoken 185 {\cyrillicie}
+\defineactivetoken 186 {\cyrillicYI}
+\defineactivetoken 187 {\cyrillicyi}
+\defineactivetoken 188 {\cyrillicLJE}
+\defineactivetoken 189 {\cyrilliclje}
+\defineactivetoken 190 {\cyrillicNJE}
+\defineactivetoken 191 {\cyrillicnje}
+\defineactivetoken 192 {\cyrillicje}
+\defineactivetoken 193 {\cyrillicDZE}
+\defineactivetoken 196 {\textflorin} % Changed by V.F. 07/02/2003 (was: \florijn)
+\defineactivetoken 199 {\leftguillemot}
+\defineactivetoken 200 {\rightguillemot}
+\defineactivetoken 201 {\textellipsis} % Changed by V.F. 07/02/2003 (was: \dots)
+\defineactivetoken 202 {\nonbreakablespace}
+\defineactivetoken 203 {\cyrillicTSHE}
+\defineactivetoken 204 {\cyrillictshe}
+\defineactivetoken 205 {\'\cyrillicK}
+\defineactivetoken 206 {\'\cyrillick}
+\defineactivetoken 207 {\cyrillicdze}
+\defineactivetoken 208 {\endash}
+\defineactivetoken 209 {\emdash}
+\defineactivetoken 210 {\upperleftdoublesixquote} % Changed by V.F. 07/02/2003
+ % (was: \upperleftsinglesixquote)
+\defineactivetoken 211 {\upperrightdoubleninequote}
+\defineactivetoken 212 {\upperleftsinglesixquote}
+\defineactivetoken 213 {\upperrightsingleninequote}
+\defineactivetoken 215 {\lowerleftdoubleninequote}
+\defineactivetoken 216 {\cyrillicUSHRT}
+\defineactivetoken 217 {\cyrillicushrt}
+\defineactivetoken 218 {\cyrillicDZHE}
+\defineactivetoken 219 {\cyrillicdzhe}
+\defineactivetoken 220 {\textnumero}
+\defineactivetoken 221 {\cyrillicYO}
+\defineactivetoken 222 {\cyrillicyo}
+\defineactivetoken 223 {\cyrillicya}
+\defineactivetoken 224 {\cyrillica}
+\defineactivetoken 225 {\cyrillicb}
+\defineactivetoken 226 {\cyrillicv}
+\defineactivetoken 227 {\cyrillicg}
+\defineactivetoken 228 {\cyrillicd}
+\defineactivetoken 229 {\cyrillice}
+\defineactivetoken 230 {\cyrilliczh}
+\defineactivetoken 231 {\cyrillicz}
+\defineactivetoken 232 {\cyrillici}
+\defineactivetoken 233 {\cyrillicishrt}
+\defineactivetoken 234 {\cyrillick}
+\defineactivetoken 235 {\cyrillicl}
+\defineactivetoken 236 {\cyrillicm}
+\defineactivetoken 237 {\cyrillicn}
+\defineactivetoken 238 {\cyrillico}
+\defineactivetoken 239 {\cyrillicp}
+\defineactivetoken 240 {\cyrillicr}
+\defineactivetoken 241 {\cyrillics}
+\defineactivetoken 242 {\cyrillict}
+\defineactivetoken 243 {\cyrillicu}
+\defineactivetoken 244 {\cyrillicf}
+\defineactivetoken 245 {\cyrillich}
+\defineactivetoken 246 {\cyrillicc}
+\defineactivetoken 247 {\cyrillicch}
+\defineactivetoken 248 {\cyrillicsh}
+\defineactivetoken 249 {\cyrillicshch}
+\defineactivetoken 250 {\cyrillichrdsn}
+\defineactivetoken 251 {\cyrillicery}
+\defineactivetoken 252 {\cyrillicsftsn}
+\defineactivetoken 253 {\cyrillicerev}
+\defineactivetoken 254 {\cyrillicyu}
+\defineactivetoken 255 {\textcurrency}
+\defineactivetoken 173 {\mathematics{\neq}} % Added by V.F. 07/02/2003
+\defineactivetoken 176 {\mathematics{\infty}} % Added by V.F. 07/02/2003
+\defineactivetoken 177 {\textpm} % Added by V.F. 07/02/2003
+\defineactivetoken 178 {\mathematics{\leq}} % Added by V.F. 07/02/2003
+\defineactivetoken 179 {\mathematics{\geq}} % Added by V.F. 07/02/2003
+\defineactivetoken 181 {\textmu} % Added by V.F. 07/02/2003
+\defineactivetoken 182 {\mathematics{\partial}} % Added by V.F. 07/02/2003
+\defineactivetoken 194 {\textlognot} % Added by V.F. 07/02/2003
+\defineactivetoken 195 {\textsurd} % Added by V.F. 07/02/2003
+\defineactivetoken 197 {\mathematics{\approx}} % Added by V.F. 07/02/2003
+\defineactivetoken 198 {\mathematics{\Delta}} % Added by V.F. 07/02/2003
+\defineactivetoken 214 {\textdiv} % Added by V.F. 07/02/2003
+
+\stopregime
+
+\startregime[macukr]
+
+\defineactivetoken 128 {\cyrillicA}
+\defineactivetoken 129 {\cyrillicB}
+\defineactivetoken 130 {\cyrillicV}
+\defineactivetoken 131 {\cyrillicG}
+\defineactivetoken 132 {\cyrillicD}
+\defineactivetoken 133 {\cyrillicE}
+\defineactivetoken 134 {\cyrillicZH}
+\defineactivetoken 135 {\cyrillicZ}
+\defineactivetoken 136 {\cyrillicI}
+\defineactivetoken 137 {\cyrillicISHRT}
+\defineactivetoken 138 {\cyrillicK}
+\defineactivetoken 139 {\cyrillicL}
+\defineactivetoken 140 {\cyrillicM}
+\defineactivetoken 141 {\cyrillicN}
+\defineactivetoken 142 {\cyrillicO}
+\defineactivetoken 143 {\cyrillicP}
+\defineactivetoken 144 {\cyrillicR}
+\defineactivetoken 145 {\cyrillicS}
+\defineactivetoken 146 {\cyrillicT}
+\defineactivetoken 147 {\cyrillicU}
+\defineactivetoken 148 {\cyrillicF}
+\defineactivetoken 149 {\cyrillicH}
+\defineactivetoken 150 {\cyrillicC}
+\defineactivetoken 151 {\cyrillicCH}
+\defineactivetoken 152 {\cyrillicSH}
+\defineactivetoken 153 {\cyrillicSHCH}
+\defineactivetoken 154 {\cyrillicHRDSN}
+\defineactivetoken 155 {\cyrillicERY}
+\defineactivetoken 156 {\cyrillicSFTSN}
+\defineactivetoken 157 {\cyrillicEREV}
+\defineactivetoken 158 {\cyrillicYU}
+\defineactivetoken 159 {\cyrillicYA}
+\defineactivetoken 160 {\textdag} % Changed by V.F. 07/02/2003 (was: \dag)
+\defineactivetoken 161 {\textdegree}
+\defineactivetoken 162 {\cyrillicGUP}
+\defineactivetoken 163 {\textsterling} % Changed by V.F. 07/02/2003 (was: \sterling)
+\defineactivetoken 164 {\sectionmark} % Changed by V.F. 07/02/2003 (was: \S)
+\defineactivetoken 165 {\textbullet} % Changed by V.F. 07/02/2003 (was: \bullet}
+\defineactivetoken 166 {\paragraphmark} % Changed by V.F. 07/02/2003 (was: \P)
+\defineactivetoken 167 {\cyrillicII}
+\defineactivetoken 168 {\registered}
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 170 {\trademark} % Changed by V.F. 07/02/2003 (was: \texttrademark}
+\defineactivetoken 171 {\cyrillicDJE}
+\defineactivetoken 172 {\cyrillicdje}
+\defineactivetoken 174 {\'\cyrillicG}
+\defineactivetoken 175 {\'\cyrillicg}
+\defineactivetoken 180 {\cyrillicii}
+\defineactivetoken 182 {\cyrillicgup}
+\defineactivetoken 183 {\cyrillicJE}
+\defineactivetoken 184 {\cyrillicIE}
+\defineactivetoken 185 {\cyrillicie}
+\defineactivetoken 186 {\cyrillicYI}
+\defineactivetoken 187 {\cyrillicyi}
+\defineactivetoken 188 {\cyrillicLJE}
+\defineactivetoken 189 {\cyrilliclje}
+\defineactivetoken 190 {\cyrillicNJE}
+\defineactivetoken 191 {\cyrillicnje}
+\defineactivetoken 192 {\cyrillicje}
+\defineactivetoken 193 {\cyrillicDZE}
+\defineactivetoken 196 {\textflorin} % Changed by V.F. 07/02/2003 (was: \florijn)
+\defineactivetoken 199 {\leftguillemot}
+\defineactivetoken 200 {\rightguillemot}
+\defineactivetoken 201 {\textellipsis} % Changed by V.F. 07/02/2003 (was: \dots)
+\defineactivetoken 202 {\nonbreakablespace}
+\defineactivetoken 203 {\cyrillicTSHE}
+\defineactivetoken 204 {\cyrillictshe}
+\defineactivetoken 205 {\'\cyrillicK}
+\defineactivetoken 206 {\'\cyrillick}
+\defineactivetoken 207 {\cyrillicdze}
+\defineactivetoken 208 {\endash}
+\defineactivetoken 209 {\emdash}
+\defineactivetoken 210 {\upperleftdoublesixquote} % Changed by V.F. 07/02/2003
+ % (was: \upperleftsinglesixquote)
+\defineactivetoken 211 {\upperrightdoubleninequote}
+\defineactivetoken 212 {\upperleftsinglesixquote}
+\defineactivetoken 213 {\upperrightsingleninequote}
+\defineactivetoken 215 {\lowerleftdoubleninequote}
+\defineactivetoken 216 {\cyrillicUSHRT}
+\defineactivetoken 217 {\cyrillicushrt}
+\defineactivetoken 218 {\cyrillicDZHE}
+\defineactivetoken 219 {\cyrillicdzhe}
+\defineactivetoken 220 {\textnumero}
+\defineactivetoken 221 {\cyrillicYO}
+\defineactivetoken 222 {\cyrillicyo}
+\defineactivetoken 223 {\cyrillicya}
+\defineactivetoken 224 {\cyrillica}
+\defineactivetoken 225 {\cyrillicb}
+\defineactivetoken 226 {\cyrillicv}
+\defineactivetoken 227 {\cyrillicg}
+\defineactivetoken 228 {\cyrillicd}
+\defineactivetoken 229 {\cyrillice}
+\defineactivetoken 230 {\cyrilliczh}
+\defineactivetoken 231 {\cyrillicz}
+\defineactivetoken 232 {\cyrillici}
+\defineactivetoken 233 {\cyrillicishrt}
+\defineactivetoken 234 {\cyrillick}
+\defineactivetoken 235 {\cyrillicl}
+\defineactivetoken 236 {\cyrillicm}
+\defineactivetoken 237 {\cyrillicn}
+\defineactivetoken 238 {\cyrillico}
+\defineactivetoken 239 {\cyrillicp}
+\defineactivetoken 240 {\cyrillicr}
+\defineactivetoken 241 {\cyrillics}
+\defineactivetoken 242 {\cyrillict}
+\defineactivetoken 243 {\cyrillicu}
+\defineactivetoken 244 {\cyrillicf}
+\defineactivetoken 245 {\cyrillich}
+\defineactivetoken 246 {\cyrillicc}
+\defineactivetoken 247 {\cyrillicch}
+\defineactivetoken 248 {\cyrillicsh}
+\defineactivetoken 249 {\cyrillicshch}
+\defineactivetoken 250 {\cyrillichrdsn}
+\defineactivetoken 251 {\cyrillicery}
+\defineactivetoken 252 {\cyrillicsftsn}
+\defineactivetoken 253 {\cyrillicerev}
+\defineactivetoken 254 {\cyrillicyu}
+\defineactivetoken 255 {\textcurrency}
+\defineactivetoken 173 {\mathematics{\neq}} % Added by V.F. 07/02/2003
+\defineactivetoken 176 {\mathematics{\infty}} % Added by V.F. 07/02/2003
+\defineactivetoken 177 {\textpm} % Added by V.F. 07/02/2003
+\defineactivetoken 178 {\mathematics{\leq}} % Added by V.F. 07/02/2003
+\defineactivetoken 179 {\mathematics{\geq}} % Added by V.F. 07/02/2003
+\defineactivetoken 181 {\textmu} % Added by V.F. 07/02/2003
+\defineactivetoken 194 {\textlognot} % Added by V.F. 07/02/2003
+\defineactivetoken 195 {\textsurd} % Added by V.F. 07/02/2003
+\defineactivetoken 197 {\mathematics{\approx}} % Added by V.F. 07/02/2003
+\defineactivetoken 198 {\mathematics{\Delta}} % Added by V.F. 07/02/2003
+\defineactivetoken 214 {\textdiv} % Added by V.F. 07/02/2003
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-def.tex b/Master/texmf-dist/tex/context/base/regi-def.tex
new file mode 100644
index 00000000000..e26709c77e7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-def.tex
@@ -0,0 +1,21 @@
+%D \module
+%D [ file=regi-def,
+%D version=2000.20.12, % split from less verbose base file
+%D title=\CONTEXT\ Regime Macros,
+%D subtitle=Default Character Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=Hans Hagen \& Ton Otten]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startregime[default]
+
+\dostepwiserecurse{128}{255}{1}
+ {\expanded{\defineactivetoken\recurselevel\space{\rawcharacter\recurselevel}}}%
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-grk.tex b/Master/texmf-dist/tex/context/base/regi-grk.tex
new file mode 100644
index 00000000000..848a4aba52f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-grk.tex
@@ -0,0 +1,117 @@
+%D \module
+%D [ file=regi-grk,
+%D version=2003.03.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Greek,
+%D author=Apostolos Syropoulos,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startregime[grk]
+
+%
+% Uppercase Greek letters
+%
+
+\defineactivetoken 193 {\greekAlpha}
+\defineactivetoken 194 {\greekBeta}
+\defineactivetoken 195 {\greekGamma}
+\defineactivetoken 196 {\greekDelta}
+\defineactivetoken 197 {\greekEpsilon}
+\defineactivetoken 198 {\greekZeta}
+\defineactivetoken 199 {\greekEta}
+\defineactivetoken 200 {\greekTheta}
+\defineactivetoken 201 {\greekIota}
+\defineactivetoken 202 {\greekKappa}
+\defineactivetoken 203 {\greekLambda}
+\defineactivetoken 204 {\greekMu}
+\defineactivetoken 205 {\greekNu}
+\defineactivetoken 206 {\greekXi}
+\defineactivetoken 207 {\greekOmicron}
+\defineactivetoken 208 {\greekPi}
+\defineactivetoken 209 {\greekRho}
+\defineactivetoken 211 {\greekSigma}
+\defineactivetoken 212 {\greekTau}
+\defineactivetoken 213 {\greekUpsilon}
+\defineactivetoken 214 {\greekPhi}
+\defineactivetoken 215 {\greekChi}
+\defineactivetoken 216 {\greekPsi}
+\defineactivetoken 217 {\greekOmega}
+
+%
+% Lowercase Greek letters
+%
+
+\defineactivetoken 225 {\greekalpha}
+\defineactivetoken 226 {\greekbeta}
+\defineactivetoken 227 {\greekgamma}
+\defineactivetoken 228 {\greekdelta}
+\defineactivetoken 229 {\greekepsilon}
+\defineactivetoken 230 {\greekzeta}
+\defineactivetoken 231 {\greeketa}
+\defineactivetoken 232 {\greektheta}
+\defineactivetoken 233 {\greekiota}
+\defineactivetoken 234 {\greekkappa}
+\defineactivetoken 235 {\greeklambda}
+\defineactivetoken 236 {\greekmu}
+\defineactivetoken 237 {\greeknu}
+\defineactivetoken 238 {\greekxi}
+\defineactivetoken 239 {\greekomicron}
+\defineactivetoken 240 {\greekpi}
+\defineactivetoken 241 {\greekrho}
+\defineactivetoken 242 {\greekfinalsigma}
+\defineactivetoken 243 {\greeksigma}
+\defineactivetoken 244 {\greektau}
+\defineactivetoken 245 {\greekupsilon}
+\defineactivetoken 246 {\greekphi}
+\defineactivetoken 247 {\greekchi}
+\defineactivetoken 248 {\greekpsi}
+\defineactivetoken 249 {\greekomega}
+
+%
+% Accented Uppercase Greek letters
+%
+
+\defineactivetoken 182 {\greekAlphatonos}
+\defineactivetoken 184 {\greekEpsilontonos}
+\defineactivetoken 185 {\greekEtatonos}
+\defineactivetoken 186 {\greekIotatonos}
+\defineactivetoken 188 {\greekOmicrontonos}
+\defineactivetoken 190 {\greekUpsilontonos}
+\defineactivetoken 191 {\greekOmegatonos}
+\defineactivetoken 218 {\greekIotadialytika}
+\defineactivetoken 219 {\greekUpsilondialytika}
+
+%
+% Accented Lowercase Greek letters
+%
+
+\defineactivetoken 220 {\greekalphatonos}
+\defineactivetoken 221 {\greekepsilontonos}
+\defineactivetoken 222 {\greeketatonos}
+\defineactivetoken 223 {\greekiotatonos}
+\defineactivetoken 252 {\greekomicrontonos}
+\defineactivetoken 253 {\greekupsilontonos}
+\defineactivetoken 254 {\greekomegatonos}
+\defineactivetoken 250 {\greekiotadialytika}
+\defineactivetoken 251 {\greekupsilondialytika}
+\defineactivetoken 192 {\greekiotadialytikatonos}
+\defineactivetoken 224 {\greekupsilondialytikatonos}
+
+%
+% Miscellaneous Greek symbols
+%
+
+\defineactivetoken 171 {\greekleftquot}
+\defineactivetoken 187 {\greekrightquot}
+\defineactivetoken 180 {\greektonos}
+\defineactivetoken 181 {\greekdialytikatonos}
+\defineactivetoken 162 {\greekapostrophos}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-ibm.tex b/Master/texmf-dist/tex/context/base/regi-ibm.tex
new file mode 100644
index 00000000000..1fad9545aa9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-ibm.tex
@@ -0,0 +1,73 @@
+%D \module
+%D [ file=regi-ibm,
+%D version=1995.01.01,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=The Good Old MSDOS IBM codepage,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module activates the \cap{IBM PC} high \ASCII\
+%D characters, such as ‰ and á.
+
+\startregime [ibm]
+
+\defineactivetoken 145 {\aeligature} % ‘
+\defineactivetoken 146 {\AEligature} % ’
+\defineactivetoken 152 {\ijligature} % ˜
+
+\defineactivetoken 225 {\ssharp} % á
+
+\defineactivetoken 160 {\aacute} %  
+\defineactivetoken 130 {\eacute} % ‚
+\defineactivetoken 144 {\Eacute} %
+\defineactivetoken 161 {\iacute} % ¡
+\defineactivetoken 162 {\oacute} % ¢
+\defineactivetoken 163 {\uacute} % £
+
+\defineactivetoken 135 {\ccedilla} % ‡
+\defineactivetoken 128 {\Ccedilla} % €
+
+\defineactivetoken 132 {\adiaeresis} % „
+\defineactivetoken 142 {\Adiaeresis} % Ž
+\defineactivetoken 137 {\ediaeresis} % ‰
+\defineactivetoken 139 {\idiaeresis} % ‹
+\defineactivetoken 148 {\odiaeresis} % ”
+\defineactivetoken 153 {\Odiaeresis} % ™
+\defineactivetoken 129 {\udiaeresis} %
+\defineactivetoken 154 {\Udiaeresis} % š
+
+\defineactivetoken 164 {\ntilde} % ¤
+\defineactivetoken 165 {\Ntilde} % ¥
+
+\defineactivetoken 134 {\aring} % †
+\defineactivetoken 143 {\Aring} %
+
+\defineactivetoken 131 {\acircumflex} % ƒ
+\defineactivetoken 136 {\ecircumflex} % ˆ
+\defineactivetoken 140 {\icircumflex} % Œ
+\defineactivetoken 147 {\ocircumflex} % “
+\defineactivetoken 150 {\ucircumflex} % –
+
+\defineactivetoken 133 {\agrave} % …
+\defineactivetoken 138 {\egrave} % Š
+\defineactivetoken 141 {\igrave} %
+\defineactivetoken 149 {\ograve} % •
+\defineactivetoken 151 {\ugrave} % —
+
+\stopregime
+
+% todo
+
+\startregime [ibm]
+
+\defineactivetoken ® {\ifvmode\leavevmode\fi\leftguillemot\prewordbreak}
+\defineactivetoken ¯ {\prewordbreak\rightguillemot}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-il1.tex b/Master/texmf-dist/tex/context/base/regi-il1.tex
new file mode 100644
index 00000000000..7c1838feccb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-il1.tex
@@ -0,0 +1,154 @@
+%D \module
+%D [ file=regi-il1,
+%D version=2000.05.07,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=ISO Latin 1 keys,
+%D author={Daniel Flipo, Hans Hagen, Denis Roegel},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module is not yet finished since some characters
+%D need to be mapped onto symbols, which is work in progress.
+
+\startregime [il1]
+
+\defineactivetoken 180 {\textacute}
+\defineactivetoken 146 {\textacute} % also see 180
+\defineactivetoken 150 {\textbreve}
+\defineactivetoken 159 {\textcaron}
+\defineactivetoken 184 {\textcedilla}
+\defineactivetoken 147 {\textcircumflex}
+\defineactivetoken 168 {\textdiaeresis}
+\defineactivetoken 151 {\textdotaccent}
+\defineactivetoken 145 {\textgrave}
+\defineactivetoken 157 {\texthungarumlaut}
+\defineactivetoken 175 {\textmacron}
+\defineactivetoken 149 {\textmacron}
+\defineactivetoken 158 {\textogonek}
+\defineactivetoken 154 {\textring}
+\defineactivetoken 148 {\texttilde}
+
+\defineactivetoken 144 {\dotlessi}
+
+\defineactivetoken 162 {\textcent}
+\defineactivetoken 163 {\textsterling}
+\defineactivetoken 164 {\textcurrency}
+\defineactivetoken 165 {\textyen}
+
+\defineactivetoken 167 {\sectionmark}
+\defineactivetoken 182 {\paragraphmark}
+
+\defineactivetoken 171 {\ifvmode\leavevmode\fi\leftguillemot\prewordbreak}
+\defineactivetoken 187 {\prewordbreak\rightguillemot}
+
+\defineactivetoken 173 {\softhyphen}
+\defineactivetoken 160 {\nonbreakablespace} % ?
+
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 174 {\registered}
+
+\defineactivetoken 185 {\textonesuperior}
+\defineactivetoken 178 {\texttwosuperior}
+\defineactivetoken 179 {\textthreesuperior}
+
+\defineactivetoken 188 {\textonequarter}
+\defineactivetoken 189 {\textonehalf}
+\defineactivetoken 190 {\textthreequarters}
+
+%defineactivetoken 183 {\textperiodcentered}
+
+\defineactivetoken 166 {\textbrokenbar}
+\defineactivetoken 176 {\textdegree}
+\defineactivetoken 247 {\textdiv}
+\defineactivetoken 172 {\textlognot}
+\defineactivetoken 215 {\textmultiply}
+\defineactivetoken 181 {\textmu}
+\defineactivetoken 177 {\textpm}
+
+\defineactivetoken 254 {\thorn}
+\defineactivetoken 222 {\Thorn}
+
+\defineactivetoken 223 {\ssharp}
+
+\defineactivetoken 208 {\Eth}
+\defineactivetoken 240 {\eth}
+
+\defineactivetoken 198 {\AEligature}
+\defineactivetoken 230 {\aeligature}
+
+\defineactivetoken 225 {\aacute}
+\defineactivetoken 193 {\Aacute}
+\defineactivetoken 233 {\eacute}
+\defineactivetoken 201 {\Eacute}
+\defineactivetoken 237 {\iacute}
+\defineactivetoken 205 {\Iacute}
+\defineactivetoken 243 {\oacute}
+\defineactivetoken 211 {\Oacute}
+\defineactivetoken 250 {\uacute}
+\defineactivetoken 218 {\Uacute}
+\defineactivetoken 253 {\yacute}
+\defineactivetoken 221 {\Yacute}
+
+\defineactivetoken 231 {\ccedilla}
+\defineactivetoken 199 {\Ccedilla}
+
+\defineactivetoken 226 {\acircumflex}
+\defineactivetoken 194 {\Acircumflex}
+\defineactivetoken 234 {\ecircumflex}
+\defineactivetoken 202 {\Ecircumflex}
+\defineactivetoken 238 {\icircumflex}
+\defineactivetoken 206 {\Icircumflex}
+\defineactivetoken 244 {\ocircumflex}
+\defineactivetoken 212 {\Ocircumflex}
+\defineactivetoken 251 {\ucircumflex}
+\defineactivetoken 219 {\Ucircumflex}
+
+\defineactivetoken 228 {\adiaeresis}
+\defineactivetoken 196 {\Adiaeresis}
+\defineactivetoken 235 {\ediaeresis}
+\defineactivetoken 203 {\Ediaeresis}
+\defineactivetoken 239 {\idiaeresis}
+\defineactivetoken 207 {\Idiaeresis}
+\defineactivetoken 246 {\odiaeresis}
+\defineactivetoken 214 {\Odiaeresis}
+\defineactivetoken 252 {\udiaeresis}
+\defineactivetoken 220 {\Udiaeresis}
+\defineactivetoken 255 {\ydiaeresis}
+
+\defineactivetoken 224 {\agrave}
+\defineactivetoken 192 {\Agrave}
+\defineactivetoken 232 {\egrave}
+\defineactivetoken 200 {\Egrave}
+\defineactivetoken 236 {\igrave}
+\defineactivetoken 204 {\Igrave}
+\defineactivetoken 242 {\ograve}
+\defineactivetoken 210 {\Ograve}
+\defineactivetoken 249 {\ugrave}
+\defineactivetoken 217 {\Ugrave}
+
+\defineactivetoken 229 {\aring}
+\defineactivetoken 197 {\Aring}
+
+\defineactivetoken 248 {\ostroke}
+\defineactivetoken 216 {\Ostroke}
+
+\defineactivetoken 227 {\atilde}
+\defineactivetoken 195 {\Atilde}
+\defineactivetoken 241 {\ntilde}
+\defineactivetoken 209 {\Ntilde}
+\defineactivetoken 245 {\otilde}
+\defineactivetoken 213 {\Otilde}
+
+\stopregime
+
+\endinput
+
+% \defineactivetoken 186 {\textordmasculine}
+% \defineactivetoken 170 {\textordfeminine}
+
+% \defineactivetoken 161 {!`}
+% \defineactivetoken 191 {?`}
diff --git a/Master/texmf-dist/tex/context/base/regi-ini.tex b/Master/texmf-dist/tex/context/base/regi-ini.tex
new file mode 100644
index 00000000000..1c3fceb55f7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-ini.tex
@@ -0,0 +1,42 @@
+%D \module
+%D [ file=regi-ini,
+%D version=2000.12.27, % 1998.12.03,
+%D title=\CONTEXT\ Regime Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D For the moment regimes are implemented in \type
+%D {enco-ini.tex} module, but some day we will move the
+%D code here.
+
+% also needed: message
+
+\unprotect
+
+\def\douseregime#1% nearly identical to encoding
+ {\doifundefined{\c!file\f!regimeprefix#1}%
+ {\setvalue{\c!file\f!regimeprefix#1}{}%
+ \makeshortfilename[\f!regimeprefix#1]%
+ \startreadingfile
+ \readsysfile\shortfilename
+ {\showmessage\m!encodings2{#1}}
+ {\showmessage\m!encodings3{#1}}%
+ \stopreadingfile}}
+
+\def\useregime[#1]%
+ {\processcommalist[#1]\douseregime}
+
+\fetchruntimecommand \showregime {regi-run}
+
+\protect
+
+% \useregime[def,uni,ibm,win,il1,mac]
+\useregime[def,uni,lat,win,il1,mac]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-lat.tex b/Master/texmf-dist/tex/context/base/regi-lat.tex
new file mode 100644
index 00000000000..7c1666ac6e3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-lat.tex
@@ -0,0 +1,124 @@
+%D \module
+%D [ file=regi-lat,
+%D version=2005.07.20, % 1999.11.16
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Iso Latin 2,
+%D author={Mojca Miklavec \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file implements the ISO-8859-2 Central European character
+%D set.
+
+\startregime[latin2]
+
+\defineactivetoken 160 {\nonbreakablespace} %   00A0 NO-BREAK SPACE
+\defineactivetoken 161 {\Aogonek} % ¡ 0104 LATIN CAPITAL LETTER A WITH OGONEK
+\defineactivetoken 162 {\textbreve} % ¢ 02D8 BREVE
+\defineactivetoken 163 {\Lstroke} % £ 0141 LATIN CAPITAL LETTER L WITH STROKE
+\defineactivetoken 164 {\textcurrency} % ¤ 00A4 CURRENCY SIGN
+\defineactivetoken 165 {\Lcaron} % ¥ 013D LATIN CAPITAL LETTER L WITH CARON
+\defineactivetoken 166 {\Sacute} % ¦ 015A LATIN CAPITAL LETTER S WITH ACUTE
+\defineactivetoken 167 {\sectionmark} % § 00A7 SECTION SIGN
+\defineactivetoken 168 {\textdiaeresis} % ¨ 00A8 DIAERESIS
+\defineactivetoken 169 {\Scaron} % © 0160 LATIN CAPITAL LETTER S WITH CARON
+\defineactivetoken 170 {\Scedilla} % ª 015E LATIN CAPITAL LETTER S WITH CEDILLA
+\defineactivetoken 171 {\Tcaron} % « 0164 LATIN CAPITAL LETTER T WITH CARON
+\defineactivetoken 172 {\Zacute} % ¬ 0179 LATIN CAPITAL LETTER Z WITH ACUTE
+\defineactivetoken 173 {\softhyphen} % ­ 00AD SOFT HYPHEN
+\defineactivetoken 174 {\Zcaron} % ® 017D LATIN CAPITAL LETTER Z WITH CARON
+\defineactivetoken 175 {\Zdotaccent} % ¯ 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
+
+\defineactivetoken 176 {\textdegree} % ° 00B0 DEGREE SIGN
+\defineactivetoken 177 {\aogonek} % ± 0105 LATIN SMALL LETTER A WITH OGONEK
+\defineactivetoken 178 {\textogonek} % ² 02DB OGONEK
+\defineactivetoken 179 {\lstroke} % ³ 0142 LATIN SMALL LETTER L WITH STROKE
+\defineactivetoken 180 {\textacute} % ´ 00B4 ACUTE ACCENT
+\defineactivetoken 181 {\lcaron} % µ 013E LATIN SMALL LETTER L WITH CARON
+\defineactivetoken 182 {\sacute} % ¶ 015B LATIN SMALL LETTER S WITH ACUTE
+\defineactivetoken 183 {\textcaron} % · 02C7 CARON
+\defineactivetoken 184 {\textcedilla} % ¸ 00B8 CEDILLA
+\defineactivetoken 185 {\scaron} % ¹ 0161 LATIN SMALL LETTER S WITH CARON
+\defineactivetoken 186 {\scedilla} % º 015F LATIN SMALL LETTER S WITH CEDILLA
+\defineactivetoken 187 {\tcaron} % » 0165 LATIN SMALL LETTER T WITH CARON
+\defineactivetoken 188 {\zacute} % ¼ 017A LATIN SMALL LETTER Z WITH ACUTE
+\defineactivetoken 189 {\texthungarumlaut} % ½ 02DD DOUBLE ACUTE ACCENT
+\defineactivetoken 190 {\zcaron} % ¾ 017E LATIN SMALL LETTER Z WITH CARON
+\defineactivetoken 191 {\zdotaccent} % ¿ 017C LATIN SMALL LETTER Z WITH DOT ABOVE
+
+\defineactivetoken 192 {\Racute} % À 0154 LATIN CAPITAL LETTER R WITH ACUTE
+\defineactivetoken 193 {\Aacute} % Á 00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\defineactivetoken 194 {\Acircumflex} % Â 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 195 {\Abreve} % Ã 0102 LATIN CAPITAL LETTER A WITH BREVE
+\defineactivetoken 196 {\Adiaeresis} % Ä 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\defineactivetoken 197 {\Lacute} % Å 0139 LATIN CAPITAL LETTER L WITH ACUTE
+\defineactivetoken 198 {\Cacute} % Æ 0106 LATIN CAPITAL LETTER C WITH ACUTE
+\defineactivetoken 199 {\Ccedilla} % Ç 00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\defineactivetoken 200 {\Ccaron} % È 010C LATIN CAPITAL LETTER C WITH CARON
+\defineactivetoken 201 {\Eacute} % É 00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\defineactivetoken 202 {\Eogonek} % Ê 0118 LATIN CAPITAL LETTER E WITH OGONEK
+\defineactivetoken 203 {\Ediaeresis} % Ë 00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\defineactivetoken 204 {\Ecaron} % Ì 011A LATIN CAPITAL LETTER E WITH CARON
+\defineactivetoken 205 {\Iacute} % Í 00CD LATIN CAPITAL LETTER I WITH ACUTE
+\defineactivetoken 206 {\Icircumflex} % Î 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 207 {\Dcaron} % Ï 010E LATIN CAPITAL LETTER D WITH CARON
+
+\defineactivetoken 208 {\Dstroke} % Ð 0110 LATIN CAPITAL LETTER D WITH STROKE
+\defineactivetoken 209 {\Nacute} % Ñ 0143 LATIN CAPITAL LETTER N WITH ACUTE
+\defineactivetoken 210 {\Ncaron} % Ò 0147 LATIN CAPITAL LETTER N WITH CARON
+\defineactivetoken 211 {\Oacute} % Ó 00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\defineactivetoken 212 {\Ocircumflex} % Ô 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 213 {\Ohungarumlaut} % Õ 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 214 {\Odiaeresis} % Ö 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\defineactivetoken 215 {\textmultiply} % × 00D7 MULTIPLICATION SIGN
+\defineactivetoken 216 {\Rcaron} % Ø 0158 LATIN CAPITAL LETTER R WITH CARON
+\defineactivetoken 217 {\Uring} % Ù 016E LATIN CAPITAL LETTER U WITH RING ABOVE
+\defineactivetoken 218 {\Uacute} % Ú 00DA LATIN CAPITAL LETTER U WITH ACUTE
+\defineactivetoken 219 {\Uhungarumlaut} % Û 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 220 {\Udiaeresis} % Ü 00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\defineactivetoken 221 {\Yacute} % Ý 00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\defineactivetoken 222 {\Tcedilla} % Þ 0162 LATIN CAPITAL LETTER T WITH CEDILLA
+\defineactivetoken 223 {\ssharp} % ß 00DF LATIN SMALL LETTER SHARP S
+
+\defineactivetoken 224 {\racute} % à 0155 LATIN SMALL LETTER R WITH ACUTE
+\defineactivetoken 225 {\aacute} % á 00E1 LATIN SMALL LETTER A WITH ACUTE
+\defineactivetoken 226 {\acircumflex} % â 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\defineactivetoken 227 {\abreve} % ã 0103 LATIN SMALL LETTER A WITH BREVE
+\defineactivetoken 228 {\adiaeresis} % ä 00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\defineactivetoken 229 {\lacute} % å 013A LATIN SMALL LETTER L WITH ACUTE
+\defineactivetoken 230 {\cacute} % æ 0107 LATIN SMALL LETTER C WITH ACUTE
+\defineactivetoken 231 {\ccedilla} % ç 00E7 LATIN SMALL LETTER C WITH CEDILLA
+\defineactivetoken 232 {\ccaron} % è 010D LATIN SMALL LETTER C WITH CARON
+\defineactivetoken 233 {\eacute} % é 00E9 LATIN SMALL LETTER E WITH ACUTE
+\defineactivetoken 234 {\eogonek} % ê 0119 LATIN SMALL LETTER E WITH OGONEK
+\defineactivetoken 235 {\ediaeresis} % ë 00EB LATIN SMALL LETTER E WITH DIAERESIS
+\defineactivetoken 236 {\ecaron} % ì 011B LATIN SMALL LETTER E WITH CARON
+\defineactivetoken 237 {\iacute} % í 00ED LATIN SMALL LETTER I WITH ACUTE
+\defineactivetoken 238 {\icircumflex} % î 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\defineactivetoken 239 {\dcaron} % ï 010F LATIN SMALL LETTER D WITH CARON
+
+\defineactivetoken 240 {\dstroke} % ð 0111 LATIN SMALL LETTER D WITH STROKE
+\defineactivetoken 241 {\nacute} % ñ 0144 LATIN SMALL LETTER N WITH ACUTE
+\defineactivetoken 242 {\ncaron} % ò 0148 LATIN SMALL LETTER N WITH CARON
+\defineactivetoken 243 {\oacute} % ó 00F3 LATIN SMALL LETTER O WITH ACUTE
+\defineactivetoken 244 {\ocircumflex} % ô 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\defineactivetoken 245 {\ohungarumlaut} % õ 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+\defineactivetoken 246 {\odiaeresis} % ö 00F6 LATIN SMALL LETTER O WITH DIAERESIS
+\defineactivetoken 247 {\textdiv} % ÷ 00F7 DIVISION SIGN
+\defineactivetoken 248 {\rcaron} % ø 0159 LATIN SMALL LETTER R WITH CARON
+\defineactivetoken 249 {\uring} % ù 016F LATIN SMALL LETTER U WITH RING ABOVE
+\defineactivetoken 250 {\uacute} % ú 00FA LATIN SMALL LETTER U WITH ACUTE
+\defineactivetoken 251 {\uhungarumlaut} % û 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+\defineactivetoken 252 {\udiaeresis} % ü 00FC LATIN SMALL LETTER U WITH DIAERESIS
+\defineactivetoken 253 {\yacute} % ý 00FD LATIN SMALL LETTER Y WITH ACUTE
+\defineactivetoken 254 {\tcedilla} % þ 0163 LATIN SMALL LETTER T WITH CEDILLA
+\defineactivetoken 255 {\textdotaccent} % ÿ 02D9 DOT ABOVE
+
+\stopregime
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/context/base/regi-mac.tex b/Master/texmf-dist/tex/context/base/regi-mac.tex
new file mode 100644
index 00000000000..b3c281ec0b0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-mac.tex
@@ -0,0 +1,147 @@
+%D \module
+%D [ file=regi-mac,
+%D version=2001.03.18,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Mac Encoding,
+%D author={Michel Bovani \& Adam Lindsay \& Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startregime [mac]
+
+\defineactivetoken 128 {\Adiaeresis}
+\defineactivetoken 129 {\Aring}
+\defineactivetoken 130 {\Ccedilla}
+\defineactivetoken 131 {\Eacute}
+\defineactivetoken 132 {\Ntilde}
+\defineactivetoken 133 {\Odiaeresis}
+\defineactivetoken 134 {\Udiaeresis}
+\defineactivetoken 135 {\aacute}
+\defineactivetoken 136 {\agrave}
+\defineactivetoken 137 {\acircumflex}
+\defineactivetoken 138 {\adiaeresis}
+\defineactivetoken 139 {\atilde}
+\defineactivetoken 140 {\aring}
+\defineactivetoken 141 {\ccedilla}
+\defineactivetoken 142 {\eacute}
+\defineactivetoken 143 {\egrave}
+\defineactivetoken 144 {\ecircumflex}
+\defineactivetoken 145 {\ediaeresis}
+\defineactivetoken 146 {\iacute}
+\defineactivetoken 147 {\igrave}
+\defineactivetoken 148 {\icircumflex}
+\defineactivetoken 149 {\idiaeresis}
+\defineactivetoken 150 {\ntilde}
+\defineactivetoken 151 {\oacute}
+\defineactivetoken 152 {\ograve}
+\defineactivetoken 153 {\ocircumflex}
+\defineactivetoken 154 {\odiaeresis}
+\defineactivetoken 155 {\otilde}
+\defineactivetoken 156 {\uacute}
+\defineactivetoken 157 {\ugrave}
+\defineactivetoken 158 {\ucircumflex}
+\defineactivetoken 159 {\udiaeresis}
+\defineactivetoken 160 {\textdag}
+\defineactivetoken 161 {\textdegree}
+\defineactivetoken 162 {\textcent}
+\defineactivetoken 163 {\textsterling}
+\defineactivetoken 164 {\sectionmark}
+\defineactivetoken 165 {\textbullet}
+\defineactivetoken 166 {\paragraphmark}
+\defineactivetoken 167 {\ssharp}
+\defineactivetoken 168 {\registered}
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 170 {\trademark}
+\defineactivetoken 171 {\textacute}
+\defineactivetoken 172 {\textdiaeresis}
+\defineactivetoken 173 {\mathematics\neq}
+\defineactivetoken 174 {\AEligature}
+\defineactivetoken 175 {\Ostroke}
+\defineactivetoken 176 {\mathematics\infty}
+\defineactivetoken 177 {\textpm}
+\defineactivetoken 178 {\mathematics\leq}
+\defineactivetoken 179 {\mathematics\geq}
+\defineactivetoken 180 {\textyen}
+\defineactivetoken 181 {\textmu}
+\defineactivetoken 182 {\mathematics\partial}
+\defineactivetoken 183 {\mathematics\Sigma}
+\defineactivetoken 184 {\mathematics\Pi}
+\defineactivetoken 185 {\mathematics\pi}
+\defineactivetoken 186 {\mathematics\smallint}
+\defineactivetoken 187 {\ordfeminine}
+\defineactivetoken 188 {\ordmasculine}
+\defineactivetoken 189 {\mathematics\Omega}
+\defineactivetoken 190 {\aeligature}
+\defineactivetoken 191 {\ostroke}
+\defineactivetoken 192 {\questiondown}
+\defineactivetoken 193 {\exclamdown}
+\defineactivetoken 194 {\textlognot}
+\defineactivetoken 195 {\mathematics{\sqrt{}}}
+\defineactivetoken 196 {\textflorin}
+\defineactivetoken 197 {\mathematics\approx}
+\defineactivetoken 198 {\mathematics\Delta}
+\defineactivetoken 199 {\leftguillemot}
+\defineactivetoken 200 {\rightguillemot}
+\defineactivetoken 201 {\dots}
+\defineactivetoken 202 {\nonbreakablespace}
+\defineactivetoken 203 {\Agrave}
+\defineactivetoken 204 {\Atilde}
+\defineactivetoken 205 {\Otilde}
+\defineactivetoken 206 {\OEligature}
+\defineactivetoken 207 {\oeligature}
+\defineactivetoken 208 {\endash}
+\defineactivetoken 209 {\emdash}
+\defineactivetoken 210 {\quotedblleft}
+\defineactivetoken 211 {\quotedblright}
+\defineactivetoken 212 {\quoteleft}
+\defineactivetoken 213 {\quoteright}
+\defineactivetoken 214 {\textdiv}
+\defineactivetoken 215 {\mathematics\diamond}
+\defineactivetoken 216 {\ydiaeresis}
+\defineactivetoken 217 {\Ydiaeresis}
+\defineactivetoken 218 {\textfraction}
+\defineactivetoken 219 {\texteuro}
+\defineactivetoken 220 {\guilsingleleft}
+\defineactivetoken 221 {\guilsingleright}
+\defineactivetoken 222 {fi}
+\defineactivetoken 223 {fl}
+\defineactivetoken 224 {\textddag}
+\defineactivetoken 225 {\periodcentered}
+\defineactivetoken 226 {\quotesinglebase}
+\defineactivetoken 227 {\quotedblbase }
+\defineactivetoken 228 {\perthousand}
+\defineactivetoken 229 {\Acircumflex}
+\defineactivetoken 230 {\Ecircumflex}
+\defineactivetoken 231 {\Aacute}
+\defineactivetoken 232 {\Ediaeresis}
+\defineactivetoken 233 {\Egrave}
+\defineactivetoken 234 {\Iacute}
+\defineactivetoken 235 {\Icircumflex}
+\defineactivetoken 236 {\Idiaeresis}
+\defineactivetoken 237 {\Igrave}
+\defineactivetoken 238 {\Oacute}
+\defineactivetoken 239 {\Ocircumflex}
+%defineactivetoken 240 % No definition for Apple logo glyph yet.
+\defineactivetoken 241 {\Ograve}
+\defineactivetoken 242 {\Uacute}
+\defineactivetoken 243 {\Ucircumflex}
+\defineactivetoken 244 {\Ugrave}
+\defineactivetoken 245 {\dotlessi}
+\defineactivetoken 246 {\textcircumflex}
+\defineactivetoken 247 {\texttilde}
+\defineactivetoken 248 {\textmacron}
+\defineactivetoken 249 {\textbreve}
+\defineactivetoken 250 {\textdotaccent}
+\defineactivetoken 251 {\textring}
+\defineactivetoken 252 {\textcedilla}
+\defineactivetoken 253 {\texthungarumlaut}
+\defineactivetoken 254 {\textogonek}
+\defineactivetoken 255 {\textcaron}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-uni.tex b/Master/texmf-dist/tex/context/base/regi-uni.tex
new file mode 100644
index 00000000000..2b749967fc9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-uni.tex
@@ -0,0 +1,23 @@
+%D \module
+%D [ file=enco-uni,
+%D version=1998.10.18,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Unicode,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module activates all characters in the upper range
+%D and sets them to the basic unicodehandler.
+
+\startregime[unicode]
+
+\defineactivedecimals 128 to 255 as {\handleunicodeflowglyph}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-utf.tex b/Master/texmf-dist/tex/context/base/regi-utf.tex
new file mode 100644
index 00000000000..b529406e135
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-utf.tex
@@ -0,0 +1,45 @@
+%D \module
+%D [ file=regi-utf,
+%D version=2002.12.03,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=UTF-8,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This regime activates the characters $>192$ and let them
+%D handle \UTF\ encoded content streams. This regime runs on
+%D top of the \type {unic} modules. We use an active inspector
+%D instead of a active token handler because here we don't want
+%D the \type {{}}. We only support this in \ETEX.
+
+\beginTEX
+ \expandafter \endinput
+\endTEX
+
+\unprotect
+
+\startregime[utf]
+
+\dostepwiserecurse{192}{223}{1}
+ {\expanded{\defineactiveinspector{\recurselevel} % space delimited
+ {\noexpand\utftwouniglph{\recurselevel}}}%
+ }%\letvalue{\@@univector\recurselevel}\gobbleoneargument}
+
+\dostepwiserecurse{224}{239}{1}
+ {\expanded{\defineactiveinspector{\recurselevel} % space delimited
+ {\noexpand\utfthreeuniglph{\recurselevel}}}%
+ }%\letvalue{\@@univector\recurselevel}\gobbetwoarguments}
+
+\dostepwiserecurse{240}{247}{1}
+ {\expanded{\defineactiveinspector{\recurselevel} % space delimited
+ {\noexpand\utffouruniglph{\recurselevel}}}%
+ }%\letvalue{\@@univector\recurselevel}\gobblethreearguments}
+
+\stopregime
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-vis.tex b/Master/texmf-dist/tex/context/base/regi-vis.tex
new file mode 100644
index 00000000000..ceac691c417
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-vis.tex
@@ -0,0 +1,152 @@
+% temporary module
+
+\startregime[viscii]
+
+\defineactivetoken 2 {\h{uA}}
+\defineactivetoken 5 {\~{uA}}
+\defineactivetoken 6 {\~{^A}}
+\defineactivetoken 20 {\h{Y}}
+\defineactivetoken 23 {\h{Y}}
+\defineactivetoken 24 {\d{Y}}
+\defineactivetoken 25 {\~{Y}}
+\defineactivetoken 30 {\d{Y}}
+
+\defineactivetoken 128 {\d{A}}
+\defineactivetoken 129 {\'{uA}}
+\defineactivetoken 130 {\`{uA}}
+\defineactivetoken 131 {\d{uA}}
+\defineactivetoken 132 {\'{^A}}
+\defineactivetoken 133 {\`{^A}}
+\defineactivetoken 134 {\h{^A}}
+\defineactivetoken 135 {\d{^A}}
+\defineactivetoken 136 {\~{E}}
+\defineactivetoken 137 {\d{E}}
+\defineactivetoken 138 {\'{^E}}
+\defineactivetoken 139 {\`{^E}}
+\defineactivetoken 140 {\h{^E}}
+\defineactivetoken 141 {\~{^E}}
+\defineactivetoken 142 {\d{^E}}
+\defineactivetoken 143 {\'{^O}}
+
+\defineactivetoken 144 {\`{^O}}
+\defineactivetoken 145 {\h{^O}}
+\defineactivetoken 146 {\~{^O}}
+\defineactivetoken 147 {\d{^O}}
+\defineactivetoken 148 {\d{hO}}
+\defineactivetoken 149 {\'{hO}}
+\defineactivetoken 150 {\`{hO}}
+\defineactivetoken 151 {\h{hO}}
+\defineactivetoken 152 {\d{I}}
+\defineactivetoken 153 {\h{O}}
+\defineactivetoken 154 {\d{O}}
+\defineactivetoken 155 {\h{I}}
+\defineactivetoken 156 {\h{U}}
+\defineactivetoken 157 {\~{U}}
+\defineactivetoken 158 {\d{U}}
+\defineactivetoken 159 {\`{Y}}
+
+\defineactivetoken 160 {\~{O}}
+\defineactivetoken 161 {\'{ua}}
+\defineactivetoken 162 {\`{ua}}
+\defineactivetoken 163 {\d{ua}}
+\defineactivetoken 164 {\'{^a}}
+\defineactivetoken 165 {\`{^a}}
+\defineactivetoken 166 {\h{^a}}
+\defineactivetoken 167 {\d{^a}}
+\defineactivetoken 168 {\~{e}}
+\defineactivetoken 169 {\d{ e}}
+\defineactivetoken 170 {\'{^e}}
+\defineactivetoken 171 {\`{^e}}
+\defineactivetoken 172 {\h{^e}}
+\defineactivetoken 173 {\~{^e}}
+\defineactivetoken 174 {\d{^e}}
+\defineactivetoken 175 {\'{^o}}
+
+\defineactivetoken 176 {\`{^o}}
+\defineactivetoken 177 {\h{^o}}
+\defineactivetoken 178 {\~{^o}}
+\defineactivetoken 179 {\~{hO}}
+\defineactivetoken 180 {\h{O}}
+\defineactivetoken 181 {\d{^o}}
+\defineactivetoken 182 {\`{ho}}
+\defineactivetoken 183 {\h{ho}}
+\defineactivetoken 184 {\d{i}}
+\defineactivetoken 185 {\d{hU}}
+\defineactivetoken 186 {\'{hU}}
+\defineactivetoken 187 {\`{hU}}
+\defineactivetoken 188 {\h{hU}}
+\defineactivetoken 189 {\h{o}}
+\defineactivetoken 190 {\'{ho}}
+\defineactivetoken 191 {\h{U}}
+
+\defineactivetoken 192 {\`{A}}
+\defineactivetoken 193 {\'{A}}
+\defineactivetoken 194 {\^{A}}
+\defineactivetoken 195 {\~{A}}
+\defineactivetoken 196 {\h{A}}
+\defineactivetoken 197 {\u{A}}
+\defineactivetoken 198 {\h{ua}}
+\defineactivetoken 199 {\~{ua}}
+\defineactivetoken 200 {\`{E}}
+\defineactivetoken 201 {\'{E}}
+\defineactivetoken 202 {\^{E}}
+\defineactivetoken 203 {\h{E}}
+\defineactivetoken 204 {\`{I}}
+\defineactivetoken 205 {\'{I}}
+\defineactivetoken 206 {\~{I}}
+\defineactivetoken 207 {\`{y}}
+
+\defineactivetoken 208 {\DJ{}}
+\defineactivetoken 209 {\'{hu}}
+\defineactivetoken 210 {\`{O}}
+\defineactivetoken 211 {\'{O}}
+\defineactivetoken 212 {\^{O}}
+\defineactivetoken 213 {\d{a}}
+\defineactivetoken 214 {\h{y}}
+\defineactivetoken 215 {\`{hu}}
+\defineactivetoken 216 {\h{hu}}
+\defineactivetoken 217 {\`{U}}
+\defineactivetoken 218 {\'{U}}
+\defineactivetoken 219 {\~{y}}
+\defineactivetoken 220 {\d{y}}
+\defineactivetoken 221 {\'{Y}}
+\defineactivetoken 222 {\~{ho}}
+\defineactivetoken 223 {\h{u}}
+
+\defineactivetoken 224 {\`{a}}
+\defineactivetoken 225 {\'{a}}
+\defineactivetoken 226 {\^{a}}
+\defineactivetoken 227 {\~{a}}
+\defineactivetoken 228 {\h{a}}
+\defineactivetoken 229 {\u{a}}
+\defineactivetoken 230 {\~{hu}}
+\defineactivetoken 231 {\~{^a}}
+\defineactivetoken 232 {\`{e}}
+\defineactivetoken 233 {\'{e}}
+\defineactivetoken 234 {\^{e}}
+\defineactivetoken 235 {\h{e}}
+\defineactivetoken 236 {\`{i}}
+\defineactivetoken 237 {\'{i}}
+\defineactivetoken 238 {\~{i}}
+\defineactivetoken 239 {\h{i}}
+
+\defineactivetoken 240 {\dj{}}
+\defineactivetoken 241 {\d{hu}}
+\defineactivetoken 242 {\`{o}}
+\defineactivetoken 243 {\'{o}}
+\defineactivetoken 244 {\^{o}}
+\defineactivetoken 245 {\~{o}}
+\defineactivetoken 246 {\h{o}}
+\defineactivetoken 247 {\d{o}}
+\defineactivetoken 248 {\d{u}}
+\defineactivetoken 249 {\`{u}}
+\defineactivetoken 250 {\'{u}}
+\defineactivetoken 251 {\~{u}}
+\defineactivetoken 252 {\h{u}}
+\defineactivetoken 253 {\'{y}}
+\defineactivetoken 254 {\d{ho}}
+\defineactivetoken 255 {\~{hU}}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/regi-win.tex b/Master/texmf-dist/tex/context/base/regi-win.tex
new file mode 100644
index 00000000000..c9a301dff27
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/regi-win.tex
@@ -0,0 +1,150 @@
+%D \module
+%D [ file=regi-win,
+%D version=1997.08.29,
+%D title=\CONTEXT\ Encoding Macros,
+%D subtitle=Windows 1252 ANSI keys,
+%D author={Tobias Burnus \& Hans Hagen \& Victor Figurnov},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module activates the (western) \MSWINDOWS\ high \ANSI\
+%D characters, such as ë and á.
+
+\startregime [windows]
+
+\defineactivetoken 128 {\texteuro}
+\defineactivetoken 129 {\unknownchar}
+\defineactivetoken 130 {\lowerleftsingleninequote}
+\defineactivetoken 131 {\textflorin}
+\defineactivetoken 132 {\lowerleftdoubleninequote}
+\defineactivetoken 133 {\dots}
+\defineactivetoken 134 {\textdag}
+\defineactivetoken 135 {\textddag}
+\defineactivetoken 136 {\textcircumflex}
+\defineactivetoken 137 {\perthousand}
+\defineactivetoken 138 {\Scaron}
+\defineactivetoken 139 {\leftsubguillemot}
+\defineactivetoken 140 {\OEligature}
+\defineactivetoken 141 {\unknownchar}
+\defineactivetoken 142 {\unknownchar}
+\defineactivetoken 143 {\unknownchar}
+\defineactivetoken 144 {\unknownchar}
+\defineactivetoken 145 {\upperleftsinglesixquote}
+\defineactivetoken 146 {\upperrightsingleninequote}
+\defineactivetoken 147 {\upperleftdoublesixquote}
+\defineactivetoken 148 {\upperrightdoubleninequote}
+\defineactivetoken 149 {\textbullet}
+\defineactivetoken 150 {\endash}
+\defineactivetoken 151 {\emdash}
+\defineactivetoken 152 {\texttilde}
+\defineactivetoken 153 {\trademark}
+\defineactivetoken 154 {\scaron}
+\defineactivetoken 155 {\rightsubguillemot}
+\defineactivetoken 156 {\oeligature}
+\defineactivetoken 157 {\unknownchar}
+\defineactivetoken 158 {\unknownchar}
+\defineactivetoken 159 {\Ydiaeresis}
+\defineactivetoken 160 {\nonbreakablespace}
+\defineactivetoken 161 {\exclamdown}
+\defineactivetoken 162 {\textcent}
+\defineactivetoken 163 {\textsterling}
+\defineactivetoken 164 {\textcurrency}
+\defineactivetoken 165 {\textyen}
+\defineactivetoken 166 {\textbrokenbar}
+\defineactivetoken 167 {\sectionmark}
+\defineactivetoken 168 {\textdiaeresis}
+\defineactivetoken 169 {\copyright}
+\defineactivetoken 170 {\ordfeminine}
+\defineactivetoken 171 {\leftguillemot}
+\defineactivetoken 172 {\textlognot}
+\defineactivetoken 173 {\hyphen}
+\defineactivetoken 174 {\registered}
+\defineactivetoken 175 {\textmacron}
+\defineactivetoken 176 {\textdegree}
+\defineactivetoken 177 {\textpm}
+\defineactivetoken 178 {\twosuperior}
+\defineactivetoken 179 {\threesuperior}
+\defineactivetoken 180 {\textacute}
+\defineactivetoken 181 {\textmu}
+\defineactivetoken 182 {\paragraphmark}
+\defineactivetoken 183 {\periodcentered}
+\defineactivetoken 184 {\textcedilla}
+\defineactivetoken 185 {\onesuperior}
+\defineactivetoken 186 {\ordmasculine}
+\defineactivetoken 187 {\rightguillemot}
+\defineactivetoken 188 {\onequarter}
+\defineactivetoken 189 {\onehalf}
+\defineactivetoken 190 {\threequarter}
+\defineactivetoken 191 {\questiondown}
+\defineactivetoken 192 {\Agrave}
+\defineactivetoken 193 {\Aacute}
+\defineactivetoken 194 {\Acircumflex}
+\defineactivetoken 195 {\Atilde}
+\defineactivetoken 196 {\Adiaeresis}
+\defineactivetoken 197 {\Aring}
+\defineactivetoken 198 {\AEligature}
+\defineactivetoken 199 {\Ccedilla}
+\defineactivetoken 200 {\Egrave}
+\defineactivetoken 201 {\Eacute}
+\defineactivetoken 202 {\Ecircumflex}
+\defineactivetoken 203 {\Ediaeresis}
+\defineactivetoken 204 {\Igrave}
+\defineactivetoken 205 {\Iacute}
+\defineactivetoken 206 {\Icircumflex}
+\defineactivetoken 207 {\Idiaeresis}
+\defineactivetoken 208 {\Eth}
+\defineactivetoken 209 {\Ntilde}
+\defineactivetoken 210 {\Ograve}
+\defineactivetoken 211 {\Oacute}
+\defineactivetoken 212 {\Ocircumflex}
+\defineactivetoken 213 {\Otilde}
+\defineactivetoken 214 {\Odiaeresis}
+\defineactivetoken 215 {\textmultiply}
+\defineactivetoken 216 {\Ostroke}
+\defineactivetoken 217 {\Ugrave}
+\defineactivetoken 218 {\Uacute}
+\defineactivetoken 219 {\Ucircumflex}
+\defineactivetoken 220 {\Udiaeresis}
+\defineactivetoken 221 {\Ygrave}
+\defineactivetoken 222 {\thorn}
+\defineactivetoken 223 {\ssharp}
+\defineactivetoken 224 {\agrave}
+\defineactivetoken 225 {\aacute}
+\defineactivetoken 226 {\acircumflex}
+\defineactivetoken 227 {\atilde}
+\defineactivetoken 228 {\adiaeresis}
+\defineactivetoken 229 {\aring}
+\defineactivetoken 230 {\aeligature}
+\defineactivetoken 231 {\ccedilla}
+\defineactivetoken 232 {\egrave}
+\defineactivetoken 233 {\eacute}
+\defineactivetoken 234 {\ecircumflex}
+\defineactivetoken 235 {\ediaeresis}
+\defineactivetoken 236 {\igrave}
+\defineactivetoken 237 {\iacute}
+\defineactivetoken 238 {\icircumflex}
+\defineactivetoken 239 {\idiaeresis}
+\defineactivetoken 240 {\eth}
+\defineactivetoken 241 {\ntilde}
+\defineactivetoken 242 {\ograve}
+\defineactivetoken 243 {\oacute}
+\defineactivetoken 244 {\ocircumflex}
+\defineactivetoken 245 {\otilde}
+\defineactivetoken 246 {\odiaeresis}
+\defineactivetoken 247 {\textdiv}
+\defineactivetoken 248 {\ostroke}
+\defineactivetoken 249 {\ugrave}
+\defineactivetoken 250 {\uacute}
+\defineactivetoken 251 {\ucircumflex}
+\defineactivetoken 252 {\udiaeresis}
+\defineactivetoken 253 {\ygrave}
+\defineactivetoken 254 {\Thorn}
+\defineactivetoken 255 {\ydiaeresis}
+
+\stopregime
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-abr-01.tex b/Master/texmf-dist/tex/context/base/s-abr-01.tex
new file mode 100644
index 00000000000..3c45346ea3a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-abr-01.tex
@@ -0,0 +1,265 @@
+%D \module
+%D [ file=s-abr-01,
+%D version=1996.01.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=General Abbreviations 1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\setupsorting[logo][\c!style=\v!capital]
+
+\setupcapitals[\c!title=\v!no]
+
+\protect
+
+\logo [ACROBAT] {Acro\-bat}
+\logo [AFM] {afm}
+\logo [ALEPH] {Aleph} % {\mathematics{\aleph}}
+\logo [ALGOL] {ALGOL}
+\logo [ARABTEX] {Arab\TeX}
+\logo [AMSLATEX] {\AmSLaTeX}
+\logo [AMSTEX] {\AmSTeX}
+\logo [AMS] {ams}
+\logo [ANSI] {ansi}
+\logo [ASCIITEX] {ascii\TeX}
+\logo [ASCII] {ascii}
+\logo [BIBTEX] {bib\TeX}
+\logo [BLUESKY] {BlueSky}
+\logo [BSD] {bsd}
+\logo [CDROM] {cdrom}
+\logo [CD] {cd}
+\logo [CMR] {cmr}
+\logo [CMYK] {cmyk}
+\logo [CODHOST] {CodHost}
+\logo [CONTEXT] {\ConTeXt}
+\logo [CSS] {css}
+\logo [CTAN] {ctan}
+\logo [CWEB] {cweb}
+\logo [DANTE] {Dante}
+\logo [DISTILLER] {distiller}
+\logo [DSC] {dsc}
+\logo [DTD] {dtd}
+\logo [DTK] {dtk}
+\logo [DTP] {dtp}
+\logo [DVD] {dvd}
+\logo [DVIPSONE] {dvipsone}
+\logo [DVIPDFM] {dvipdfm}
+\logo [DVIPDFMX] {dvipdfmx}
+\logo [DVIPOS] {dvipos}
+\logo [DVIPS] {dvips}
+\logo [DVISCR] {dviscr}
+\logo [DVIWINDO] {dviwindo}
+\logo [DVI] {dvi}
+\logo [EC] {ec}
+\logo [EIFFEL] {Eiffel}
+\logo [EMACS] {emacs}
+\logo [EMTEX] {em\TeX}
+\logo [ENCTEX] {enc\TeX}
+\logo [EPS] {eps}
+\logo [EXAMPLEX] {examplex}
+\logo [EXAMPLET] {examplet}
+\logo [EXAMPLER] {exampler}
+\logo [EXAMPLEQ] {exampleq}
+\logo [EXAMPLED] {exampled}
+\logo [EXAMPLE] {eXaMpLe}
+\logo [EXIMPLE] {eXiMpLe}
+\logo [ETEX] {\eTeX}
+\logo [EUROMATH] {EuroMath}
+\logo [EUROTEX] {Euro\TeX}
+\logo [FAQ] {faq}
+%logo [FGA] {fga}
+\logo [FDF] {fdf}
+%logo [FGBBS] {fgbbs}
+\logo [FPTEX] {fp\TeX}
+\logo [FREEBSD] {FreeBSD}
+\logo [FOXET] {foXet}
+\logo [FTP] {ftp}
+\logo [GHOSTSCRIPT]{Ghost\-Script}
+\logo [GHOSTVIEW] {Ghost\-View}
+\logo [GIF] {gif}
+\logo [GNU] {gnu}
+\logo [GS] {Ghost\-Script}
+\logo [GUST] {Gust}
+\logo [GWTEX] {gw\TeX}
+\logo [HZ] {hz}
+\logo [HTTP] {http}
+\logo [HSB] {hsb}
+\logo [HTML] {html}
+\logo [IBM] {ibm}
+\logo [IMAGEMAGICK]{ImageMagick}
+\logo [INRSTEX] {inrs\TeX}
+\logo [IRCNET] {IRCnet}
+\logo [ISO] {iso}
+\logo [JAVASCRIPT] {Java\-Script}
+\logo [JAVA] {Java}
+\logo [JPEG] {jpeg}
+\logo [JPG] {jpg}
+\logo [KPSE] {kpse}
+\logo [KPSEWHICH] {kpsewhich}
+\logo [LAMSTEX] {\LamSTeX}
+\logo [LATEXTE] {\LaTeX2e}
+\logo [LATEXTN] {\LaTeX2.09}
+\logo [LATEX] {\LaTeX}
+\logo [LINUX] {linux}
+\logo [LISP] {Lisp}
+\logo [LUA] {Lua}
+\logo [MACOSX] {MacOSX}
+\logo [MAKEMPY] {MakeMPY}
+\logo [MAPS] {Maps}
+\logo [MATHML] {MathML}
+\logo [METAFONT] {\MetaFont}
+\logo [METAPOST] {\MetaPost}
+\logo [MIKTEX] {Mik\TeX}
+\logo [MLTEX] {ml\TeX}
+\logo [MODULA] {Modula}
+\logo [MOV] {mov}
+\logo [MPS] {mps}
+\logo [MPTOPDF] {mptopdf}
+\logo [MSDOS] {msdos}
+\logo [MSWINDOWS] {MS~Windows}
+\logo [NETPBM] {NetPBM}
+\logo [NTG] {ntg}
+\logo [NTS] {nts}
+\logo [OMEGA] {Omega}
+\logo [OPI] {opi}
+\logo [OTP] {otp}
+\logo [PASCAL] {Pascal}
+\logo [PCTEX] {pc\TeX}
+\logo [PDFETEX] {pdfe\TeX}
+\logo [PDFTEX] {pdf\TeX}
+\logo [PDFTOPS] {pdftops}
+\logo [PDF] {pdf}
+\logo [PERLTK] {Perl/Tk}
+\logo [PERL] {Perl}
+\logo [PICTEX] {\PiCTeX}
+\logo [PLAIN] {Plain}
+\logo [PNG] {png}
+\logo [POSIX] {posix}
+\logo [POSTSCRIPT] {Post\-Script}
+\logo [PPCHTEX] {\PPCHTeX}
+\logo [PRAGMA] {Pragma ADE}
+\logo [PRESS] {press}
+\logo [PRIFIL] {prifil}
+\logo [PSCHECK] {pscheck}
+\logo [PSTOPAGE] {pstopage}
+\logo [PSTOPDF] {pstopdf}
+\logo [PSTRICKS] {pstricks}
+\logo [PSTOEDIT] {pstoedit}
+\logo [PS] {Post\-Script}
+\logo [READER] {Acro\-bat Reader}
+\logo [RELAXNG] {Relax\kern.125emNG}
+\logo [RUBY] {Ruby}
+\logo [RGB] {rgb}
+\logo [SCITE] {SciTE}
+\logo [SGML] {sgml}
+\logo [SI] {si}
+\logo [SQL] {sql}
+\logo [TABLE] {\TaBlE}
+\logo [TCPIP] {tcp/ip}
+\logo [TDS] {tds} % no sc te
+\logo [TETEX] {te\TeX} % no sc te
+\logo [TEXADRES] {\TeX adress}
+\logo [TEXBASE] {\TeX base}
+\logo [TEXEDIT] {\TeX edit}
+\logo [TEXEXEC] {\TeX exec}
+\logo [TEXFORM] {\TeX form}
+\logo [TEXLIVE] {\TeX Live}
+\logo [TEXMF] {texmf}
+\logo [TEXNL] {TEX-NL}
+\logo [TEXSHOW] {\TeX show}
+\logo [TEXSPELL] {\TeX spell}
+\logo [TEXUTIL] {\TeX util}
+\logo [TEXWORK] {\TeX work}
+\logo [TEXFONT] {\TeX font}
+\logo [TEXTOOLS] {textools}
+\logo [XMLTOOLS] {xmltools}
+\logo [PDFTOOLS] {pdftools}
+\logo [RLXTOOLS] {rlxtools}
+\logo [CTXTOOLS] {ctxtools}
+\logo [TMFTOOLS] {tmftools}
+\logo [TEXMFSTART] {texmfstart}
+\logo [TEXSYNC] {texsync}
+\logo [TEX] {\TeX}
+\logo [TFM] {tfm}
+\logo [TIFFINFO] {tiffinfo}
+\logo [TIFFTAGS] {tifftags}
+\logo [TIFF] {tiff}
+\logo [TIF] {tif}
+\logo [TPIC] {tpic}
+\logo [TUGBOAT] {Tug\-Boat}
+\logo [TUGNEWS] {Tug\-News}
+\logo [TUG] {tug}
+\logo [UNICODE] {Uni\-code}
+\logo [UNIX] {unix}
+\logo [URI] {uri}
+\logo [URL] {url}
+\logo [USA] {usa}
+\logo [USENET] {usenet}
+\logo [UTF] {utf}
+\logo [WDT] {wdt}
+\logo [WEBC] {web2c}
+\logo [WEB] {web}
+\logo [WINNT] {WinNT}
+\logo [WINNX] {Win9x}
+\logo [WWW] {www}
+\logo [WYSIWYG] {wysiwyg}
+\logo [XDVI] {Xdvi}
+\logo [XINDY] {Xindy}
+\logo [XML] {xml}
+\logo [XFDF] {xfdf}
+\logo [XPDFETEX] {xpdfe\TeX}
+\logo [XSLT] {xslt}
+\logo [XSLTPROC] {xsltproc}
+\logo [XSL] {xsl}
+\logo [XETEX] {XeTeX}
+\logo [XSLFO] {xsl-fo}
+\logo [XYPIC] {XYPIC} % wrong logo
+\logo [YandY] {y\&y}
+
+\def\METAFUN {\MetaFun}
+
+\logo [METAFUN] {\MetaFun}
+
+\def\SystemSpecialA#1{$\langle\it#1\rangle$}
+\def\SystemSpecialB#1{{\tttf<#1>}}
+
+\def\CATCODE {\SystemSpecialA{catcode}}
+\def\CATCODES {\SystemSpecialA{catcodes}}
+\def\DIMENSION {\SystemSpecialA{dimension}}
+\def\DIMENSIONS {\SystemSpecialA{dimensions}}
+\def\COUNTER {\SystemSpecialA{counter}}
+\def\COUNTERS {\SystemSpecialA{counters}}
+\def\HBOX {\SystemSpecialA{hbox}}
+\def\HBOXES {\SystemSpecialA{hboxes}}
+\def\VBOX {\SystemSpecialA{vbox}}
+\def\VBOXES {\SystemSpecialA{vboxes}}
+\def\BOX {\SystemSpecialA{box}}
+\def\BOXES {\SystemSpecialA{boxes}}
+\def\TOKENLIST {\SystemSpecialA{token list}}
+\def\TOKENLISTS {\SystemSpecialA{token lists}}
+\def\NEWLINE {\SystemSpecialA{newline}}
+\def\SKIP {\SystemSpecialA{skip}}
+\def\SKIPS {\SystemSpecialA{skips}}
+\def\MUSKIP {\SystemSpecialA{muskip}}
+\def\MUSKIPS {\SystemSpecialA{muskips}}
+\def\MARK {\SystemSpecialA{mark}}
+\def\MARKS {\SystemSpecialA{marks}}
+
+\def\SPACE {\SystemSpecialB{space}}
+\def\EOF {\SystemSpecialB{eof}}
+\def\TAB {\SystemSpecialB{tab}}
+\def\NEWPAGE {\SystemSpecialB{newpage}}
+\def\NEWLINE {\SystemSpecialB{newline}}
+
+\def\THANH {H\`an Th\^e\llap{\raise 0.5ex\hbox{\'{}}} Th\`anh}
+
+%def\THANH {H\`an Th\ecircumflexacute\ Th\`anh}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-abr-02.tex b/Master/texmf-dist/tex/context/base/s-abr-02.tex
new file mode 100644
index 00000000000..e2cdbfb72da
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-abr-02.tex
@@ -0,0 +1,24 @@
+%D \module
+%D [ file=s-abr-02,
+%D version=1996.01.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=General Abbreviations 2,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[abr-01]
+
+\unprotect
+
+\setupsorting[logo][\c!style=\v!smallcaps]
+
+\setupcapitals[\c!title=\v!no]
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-abr-03.tex b/Master/texmf-dist/tex/context/base/s-abr-03.tex
new file mode 100644
index 00000000000..43068b9a5f6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-abr-03.tex
@@ -0,0 +1,22 @@
+%D \module
+%D [ file=s-abr-03,
+%D version=1998.08.10,
+%D title=\CONTEXT\ Style File,
+%D subtitle=General Abbreviations 3,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[abr-01]
+
+\unprotect
+
+\setupsorting[logo][\c!style=\v!WORD]
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-chi-00.tex b/Master/texmf-dist/tex/context/base/s-chi-00.tex
new file mode 100644
index 00000000000..bb41b5b05e1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-chi-00.tex
@@ -0,0 +1,53 @@
+%D \module
+%D [ file=s-chi-00,
+%D version=1999.12.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Basic Chinese Style,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D suggestions=Wang Lei,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\mainlanguage[cn]
+
+\setupbodyfont[chi]
+
+\unprotect
+
+\setupsection [\v!sectionlevel-1] [\c!headconversion=\s!chinese]
+\setupsection [\v!sectionlevel-2] [\c!headconversion=\s!chinese]
+\setupsection [\v!sectionlevel-3] [\c!headconversion=\s!chinese]
+
+\setupsection [\v!sectionlevel-2] [\v!appendix\c!conversion=]
+
+\setuphead [\v!chapter] [\c!distance=1.25em]
+\setuphead [\v!section] [\c!distance=1.25em]
+\setuphead [\v!subsection] [\c!distance=1.00em]
+
+\setuplist [\v!chapter] [\c!headlabel=\v!yes,\c!headconversion=\v!yes,\c!width=5em]
+\setuplist [\v!section] [\c!headlabel=\v!yes,\c!headconversion=\v!yes,\c!width=5em]
+
+\setupmarking [\v!chapter\v!number] [\c!headlabel=\v!yes,\c!headconversion=\v!yes]
+\setupmarking [\v!section\v!number] [\c!headlabel=\v!yes,\c!headconversion=\v!yes]
+
+\setuplabeltext [cn] [\v!subsection={\symbol[S]\kern.25em}]
+\setuplabeltext [cn] [\v!subsubsection={\symbol[S]\kern.25em}]
+\setuplabeltext [cn] [\v!subsubsubsection={\symbol[S]\kern.25em}]
+\setuplabeltext [cn] [\v!subsubsubsubsection={\symbol[S]\kern.25em}]
+
+% nog taalonafhankelijk maken -> \e!tabel enz
+
+\definereferenceformat [intable] [\c!label=\v!table]
+\definereferenceformat [infigure] [\c!label=\v!figure]
+\definereferenceformat [inchapter] [\c!label=\v!chapter]
+\definereferenceformat [insection] [\c!label=\v!section]
+
+% important
+
+\setuptyping[\c!tab=\v!no]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/s-faq-00.tex b/Master/texmf-dist/tex/context/base/s-faq-00.tex
new file mode 100644
index 00000000000..11859936c8d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-faq-00.tex
@@ -0,0 +1,93 @@
+%D \module
+%D [ file=s-faq-00,
+%D version=1997.21.08,
+%D title=\CONTEXT\ Style File,
+%D subtitle=FAQ Common Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[abr-01]
+
+\defineblock[question]
+\defineblock[answer]
+
+\def\ScreenFAQ {fs-\TagOfFAQ-\LanguageOfFAQ}
+\def\PaperFAQ {fp-\TagOfFAQ-\LanguageOfFAQ}
+\def\FileNameOfFAQ {fa-\TagOfFAQ-\LanguageOfFAQ}
+
+\language
+ [\HyphenationOfFAQ]
+
+\setupwhitespace
+ [big]
+
+\setupbodyfont
+ [ams]
+
+\setuptolerance
+ [tolerant]
+
+\setupregister
+ [index]
+ [indicator=no]
+
+\setupframedtexts
+ [width=\hsize]
+
+\setupblock
+ [question]
+ [before=\startframedtext,
+ after=\stopframedtext]
+
+\setupblock
+ [answer]
+ [after=\EndAnswer]
+
+\def\EndAnswer {}
+
+\def\AuthorOfFAQ {}
+\def\IndexOfFAQ {}
+
+\def\FrequentlyAskedQuestion#1#2%
+ {\page
+ \doglobal\increment\CurrentNOfFAQ
+ \pagereference[faq:\CurrentNOfFAQ]
+ \gdef\IndexOfFAQ{#1}
+ \gdef\AuthorOfFAQ{#2}}
+
+\newcounter\CurrentNOfFAQ
+
+\setuplabeltext [nl] [FAQ=Vaak gestelde vragen]
+\setuplabeltext [du] [FAQ=Oft gestellte Fragen]
+\setuplabeltext [en] [FAQ=Frequently Asked Questions]
+
+\setuplabeltext [nl] [about=over]
+\setuplabeltext [du] [about=zu]
+\setuplabeltext [en] [about=about]
+
+\setuplabeltext [nl] [version=Versie]
+\setuplabeltext [du] [version=Version]
+\setuplabeltext [en] [version=Version]
+
+\setuplabeltext [nl] [goback=terug]
+\setuplabeltext [du] [goback=zur\"uck]
+\setuplabeltext [en] [goback=go back]
+
+\setuplabeltext [nl] [paper=papier]
+\setuplabeltext [du] [paper=Papier]
+\setuplabeltext [en] [paper=paper]
+
+\setuplabeltext [nl] [faqs=FAQ's]
+\setuplabeltext [du] [faqs=FAQs]
+\setuplabeltext [en] [faqs=FAQ's]
+
+\setuplabeltext [nl] [index=index]
+\setuplabeltext [du] [index=Index]
+\setuplabeltext [en] [index=index]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-faq-01.tex b/Master/texmf-dist/tex/context/base/s-faq-01.tex
new file mode 100644
index 00000000000..8c116e0f78e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-faq-01.tex
@@ -0,0 +1,215 @@
+%D \module
+%D [ file=s-faq-01,
+%D version=1997.21.08,
+%D title=\CONTEXT\ Style File,
+%D subtitle=FAQ Interactive Version,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[faq-00]
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [topspace=.5cm,
+ backspace=.5cm,
+ margin=0pt,
+ height=fit,
+ header=0pt,
+ width=fit,
+ footer=0pt,
+ bottomdistance=12pt,
+ bottom=18pt]
+
+\setupinteractionscreen
+ [width=fit,
+ height=fit,
+ option=max]
+
+\setupinteraction
+ [state=start,
+ page=yes,
+ color=darkred,
+ contrastcolor=black,
+ menu=on]
+
+\setupcolors
+ [state=start]
+
+\setupbackgrounds
+ [state=repeat]
+
+\setupbackgrounds
+ [page]
+ [offset=3pt]
+
+\setupbackgrounds
+ [text]
+ [text]
+ [background={screen,go-on}]
+
+\setupbackgrounds
+ [bottom]
+ [text]
+ [background=screen]
+
+\setupframedtexts
+ [background=MyFrame,
+ backgroundcolor=white,
+ framecolor=darkred,
+ frame=overlay]
+
+\defineoverlay[go-on][\overlaybutton{forward}]
+
+\useexternaldocument
+ [paperfaq]
+ [\PaperFAQ]
+ []
+
+\setupregister
+ [index]
+ [coupling=yes,
+ unknownreference=none,
+ interaction=text]
+
+\coupleregister
+ [index]
+
+\defineinteractionmenu [bottom 1] [bottom] [state=stop]
+\defineinteractionmenu [bottom 2] [bottom] [state=stop]
+
+\setupinteractionmenu
+ [bottom, bottom 1, bottom 2]
+ [background=MyFrame,
+ backgroundcolor=white,
+ color=black,
+ contrastcolor=black,
+ frame=overlay,
+ framecolor=darkred,
+ dummy=yes,
+ middle=\hskip1em,
+ height=\bottomheight,
+ distance=overlay]
+
+\setupinteractionmenu
+ [bottom 1]
+ [{\hfill},
+ {\labeltext{paper}[paperfaq::]},
+ {\labeltext{goback}[PreviousJump]},
+ {\labeltext{faqs}[faqs]},
+ {\labeltext{index}[index]},
+ {\gobackwardcharacter[previouspage]},
+ {\goforwardcharacter[nextpage]}]
+
+\setupinteractionmenu
+ [bottom 2]
+ [{\CurrentIndexOfFAQ},
+ {\hfill},
+ {\labeltext{paper}[paperfaq::faq:\CurrentNOfFAQ]},
+ {\labeltext{goback}[PreviousJump]},
+ {\labeltext{faqs}[faqs]},
+ {\labeltext{index}[index]},
+ {\gobackwardcharacter[previouspage]},
+ {\goforwardcharacter[nextpage]}]
+
+\def\CurrentIndexOfFAQ%
+ {\bgroup
+ \setupinteraction[color=]%
+ \menubox[bottom]%
+ {\hskip-.5em\def\index{\hskip.5em\coupledindex}\IndexOfFAQ}%
+ \egroup}
+
+\setupinteractionmenu
+ [bottom 1]
+ [state=start]
+
+\def\EndAnswer
+ {\vfill
+ \bgroup
+ \tfx\setstrut
+ \framed
+ [frame=overlay,
+ framecolor=darkred,
+ background=MyFrame,
+ backgroundcolor=white]
+ {\AuthorOfFAQ}
+ \egroup}
+
+\def\TitlePage
+ {\startstandardmakeup
+ \blank[3*big]
+ \midaligned{\bfd \labeltext{FAQ}}
+ \blank[3*big]
+ \midaligned{\bfd \labeltext{about} \NameOfFAQ}
+ \blank[3*big]
+ \midaligned{\bfb \labeltext{version}: \currentdate}
+ \blank[3*big]
+ \midaligned{\tta \ListOfFAQ}
+ \vfill
+ \midaligned{\tta pragma@wxs.nl}
+ \blank[3*big]
+ \stopstandardmakeup}
+
+\def\StartReadingFAQ
+ {\setupinteractionmenu[bottom 1][state=stop]
+ \setupinteractionmenu[bottom 2][state=start]
+ \page}
+
+\def\StopReadingFAQ
+ {\page
+ \setupinteractionmenu[bottom 2][state=stop]
+ \setupinteractionmenu[bottom 1][state=start]}
+
+\def\FileWithFAQs
+ {\StartReadingFAQ
+ \input \FileNameOfFAQ \relax
+ \StopReadingFAQ}
+
+\def\IndexPage
+ {\page
+ \def\CurrentIndexOfFAQ{}
+ \def\NameOfFAQ{}
+ \pagereference[index]
+ \placeregister[index]
+ \page}
+
+\def\BeginFAQ
+ {\doglobal\increment\CurrentNOfFAQ
+ \setbox0=\vbox\bgroup
+ \setupframedtexts[before=,after=,linecorrection=off]
+ \startframedtext}
+
+\def\EndFAQ
+ {\stopframedtext
+ \egroup
+ \button
+ [color=,contrastcolor=,frame=overlay,offset=overlay]
+ {\copy0}
+ [faq:\CurrentNOfFAQ]
+ \vskip6pt}
+
+\def\AllFAQs
+ {\page
+ \def\CurrentIndexOfFAQ{}
+ \def\NameOfFAQ{}
+ \newcounter\CurrentNOfFAQ
+ \setupblock[question][before=\BeginFAQ,after=\EndFAQ]
+ \pagereference[faqs]
+ \useblocks[question]}
+
+\startuniqueMPgraphic{Frame}
+ path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+ pickup pencircle scaled 2pt ;
+ fill p withcolor \MPcolor{\overlaycolor} ;
+ draw p withcolor \MPcolor{\overlaylinecolor} ;
+\stopuniqueMPgraphic
+
+\defineoverlay[MyFrame][\uniqueMPgraphic{Frame}]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-faq-02.tex b/Master/texmf-dist/tex/context/base/s-faq-02.tex
new file mode 100644
index 00000000000..02287bde413
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-faq-02.tex
@@ -0,0 +1,63 @@
+%D \module
+%D [ file=s-faq-02,
+%D version=1997.21.08,
+%D title=\CONTEXT\ Style File,
+%D subtitle=FAQ Paper Version,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[faq-00]
+
+\setuplayout
+ [header=0pt]
+
+\setuppagenumbering
+ [location=]
+
+\setupfootertexts
+ [\labeltext{FAQ}: \NameOfFAQ\IndexOfFAQ][pagenumber]
+
+\def\EndAnswer%
+ {\blank[2*big]
+ \page[no]
+ (\AuthorOfFAQ)}
+
+\def\TitlePage%
+ {\startstandardmakeup
+ \midaligned{\bfd \labeltext{FAQ}}
+ \blank[3*big]
+ \midaligned{\bfd \labeltext{about} \NameOfFAQ}
+ \blank[3*big]
+ \midaligned{\bfb \labeltext{version}: \currentdate}
+ \blank[3*big]
+ \midaligned{\tta \ListOfFAQ}
+ \vfill
+ \midaligned{\tta pragma@wxs.nl}
+ \blank[3*big]
+ \stopstandardmakeup}
+
+\def\StartReadingFAQ
+ {\page}
+
+\def\StopReadingFAQ
+ {\page}
+
+\def\FileWithFAQs
+ {\StartReadingFAQ
+ \input \FileNameOfFAQ \relax
+ \StopReadingFAQ}
+
+\def\IndexPage
+ {\page
+ \setupfootertexts[\labeltext{index}][]
+ \placeregister[index]}
+
+\def\AllFAQs
+ {}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-faq-03.tex b/Master/texmf-dist/tex/context/base/s-faq-03.tex
new file mode 100644
index 00000000000..4f556f71348
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-faq-03.tex
@@ -0,0 +1,70 @@
+%D \module
+%D [ file=s-faq-03,
+%D version=1997.21.08,
+%D title=\CONTEXT\ Style File,
+%D subtitle=FAQ General Framework,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\def\StartFAQ[#1]%
+ {\getrawparameters[FAQ][name=,label=,language=,hyphenation=,url=,#1]
+ \let\NameOfFAQ \FAQname
+ \let\TagOfFAQ \FAQlabel
+ \let\LanguageOfFAQ \FAQlanguage
+ \let\HyphenationOfFAQ \FAQhyphenation
+ \let\ListOfFAQ \FAQurl
+ \doifmodeelse{screen}
+ {\usemodule[faq-01]}
+ {\usemodule[faq-02]}
+ \starttext
+ \TitlePage
+ \StartReadingFAQ}
+
+\def\StopFAQ
+ {\StopReadingFAQ
+ \IndexPage
+ \AllFAQs
+ \stoptext}
+
+\def\ProcessFAQ[#1]%
+ {\StartFAQ[#1]
+ \input \FileNameOfFAQ \relax
+ \StopFAQ}
+
+% for old times sake:
+
+\def\PDFscreenFAQ \name #1 \tag #2 \language #3 \hyphenation #4 \list #5
+ {\def\NameOfFAQ {#1}
+ \def\TagOfFAQ {#2}
+ \def\LanguageOfFAQ {#3}
+ \def\HyphenationOfFAQ {#4}
+ \def\ListOfFAQ {#5}
+ \usemodule[faq-01]
+ \starttext
+ \TitlePage
+ \FileWithFAQs
+ \IndexPage
+ \AllFAQs
+ \stoptext}
+
+\def\PDFpaperFAQ \name #1 \tag #2 \language #3 \hyphenation #4 \list #5
+ {\def\NameOfFAQ {#1}
+ \def\TagOfFAQ {#2}
+ \def\LanguageOfFAQ {#3}
+ \def\HyphenationOfFAQ {#4}
+ \def\ListOfFAQ {#5}
+ \usemodule[faq-02]
+ \starttext
+ \TitlePage
+ \FileWithFAQs
+ \IndexPage
+ \stoptext}
+
+\let\DVIpaperFAQ\PDFscreenFAQ
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-fnt-01.tex b/Master/texmf-dist/tex/context/base/s-fnt-01.tex
new file mode 100644
index 00000000000..a0ff16a222f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-fnt-01.tex
@@ -0,0 +1,61 @@
+%D \module
+%D [ file=s-tnf-01,
+%D version=2001.08.22,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Font Environment 1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file is used by the \type {texfont.pl} installation
+%D script.
+
+%D Modes: compact
+
+\dontcomplain
+
+\setupbodyfont
+ [10pt]
+
+\setuplayout
+ [backspace=30pt,
+ topspace=30pt,
+ footer=0pt,
+ header=36pt,
+ width=middle,
+ height=middle]
+
+\setupcolors
+ [state=start]
+
+\def\ShowFont
+ {\dotripleempty\doShowFont}
+
+\def\doShowFont[#1][#2][#3]%
+ {\doifsomething{#1}
+ {\bgroup
+ \ifthirdargument
+ \definefontsynonym[WhateverName][#2][encoding=#3]
+ \definefont[WhateverFont][WhateverName]
+ \setupheadertexts[\tttf#2\quad#1\quad#3]
+ \WhateverFont
+ \setupinterlinespace
+ \showfont[WhateverName]
+ \showligatures[WhateverName]
+ \doifnotmode{compact}{\showaccents\showcharacters}
+ \else
+ \definefontsynonym[WhateverName][#2]
+ \definefont[WhateverFont][WhateverName]
+ \setupheadertexts[\tttf#2\quad#1\quad(special font)]
+ \WhateverFont
+ \setupinterlinespace
+ \showfont[WhateverName]
+ \fi
+ \page
+ \egroup}}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-fnt-02.tex b/Master/texmf-dist/tex/context/base/s-fnt-02.tex
new file mode 100644
index 00000000000..c3ffeb9b4c5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-fnt-02.tex
@@ -0,0 +1,106 @@
+% output=pdftex modes=demo
+
+% nice example:
+%
+% \usemodule[s-fnt-02]
+%
+% \usetypescriptfile[type-ghz.tex]
+%
+% \usetypescript [sans] [optima,optima-nova] [texnansi]
+%
+% \setvariables
+% [glyphs]
+% [name-1=OptimaLT,
+% name-2=OptimaNovaLT-Regular]
+%
+% \starttext
+%
+% \setups[show-glyphs]
+%
+% \stoptext
+%
+% see end, for other example (or run texexec s-fnt-02 --mode=demo)
+
+\setvariables
+ [glyphs]
+ [frame=on,
+ name-1=cmr10,
+ name-2=cmtt10,
+ map-1=,
+ map-2=]
+
+\setuppapersize[S4][S4]
+
+\setupcolors[state=start]
+
+\setuplayout[page]
+
+\definecolor[Gray] [s=.2]
+\definecolor[ColorNone][s=1,t=.5,a=1]
+\definecolor[ColorOne] [r=1,t=.5,a=1]
+\definecolor[ColorTwo] [g=1,t=.5,a=1]
+\definecolor[BackOne] [b=1,t=.5,a=1]
+\definecolor[BackTwo] [r=1,g=1,t=.5,a=1]
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=Gray]
+
+\startsetups[show-glyphs]
+
+ \doifnothing{\getvariable{glyphs}{name-1}}{\endinput}
+ \doifnothing{\getvariable{glyphs}{name-2}}{\endinput}
+
+ \doifsomething{\getvariable{glyphs}{map-1}}{\loadmapfile[\getvariable{glyphs}{map-1}]}
+ \doifsomething{\getvariable{glyphs}{map-2}}{\loadmapfile[\getvariable{glyphs}{map-2}]}
+
+ \definefont[FontOne][\getvariable{glyphs}{name-1} at 280pt]
+ \definefont[FontTwo][\getvariable{glyphs}{name-2} at 280pt]
+
+ \dostepwiserecurse{0}{255}{1}
+ {\doiffontcharelse{\getvariable{glyphs}{name-1}}{\recurselevel}
+ {\doiffontcharelse{\getvariable{glyphs}{name-2}}{\recurselevel}
+ {\startstandardmakeup
+ \doifelse{\getvariable{glyphs}{frame}}{on} % too many box calculations when off, but who cares
+ {\boxrulewidth=2pt}
+ {\boxrulewidth=0pt}
+ \setbox 0=\hbox{\white\ruledhbox{\FontOne \char\recurselevel}}
+ \setbox 2=\hbox{\white\ruledhbox{\FontTwo \char\recurselevel}}
+ \setbox 4=\hbox{\FontOne \ColorOne \char\recurselevel}
+ \setbox 6=\hbox{\FontTwo \ColorTwo \char\recurselevel}
+ \setbox 8=\hbox{\BackOne \ruledhbox{\FontOne \phantom{\char\recurselevel}}}
+ \setbox10=\hbox{\BackTwo \ruledhbox{\FontTwo \phantom{\char\recurselevel}}}
+ \vfill
+ \hbox{\dostepwiserecurse{0}{10}{2}{\hbox to \hsize{\hss\box\recurselevel\hss}\hskip-\hsize}}
+ \vfill
+ \tttf
+ \setstrut
+ \hbox to \hsize{\strut\hss
+ {\ColorOne \getvariable{glyphs}{name-1}}\quad
+ {\ColorTwo \getvariable{glyphs}{name-2}}\quad
+ {\ColorNone char \recurselevel }\hss}
+ \stopstandardmakeup}
+ {}}
+ {}}
+
+\stopsetups
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+ \setupencoding[default=ec]
+
+ \loadmapline [=][aer10 <cmr10.pfb]
+ \loadmapline [=][\defaultencoding-lmr10 <\defaultencoding.enc <lmr10.pfb]
+
+ \setvariables
+ [glyphs]
+ [frame=on,
+ name-1=aer10,
+ name-2=\defaultencoding-lmr10]
+
+ \setups[show-glyphs]
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-grk-00.tex b/Master/texmf-dist/tex/context/base/s-grk-00.tex
new file mode 100644
index 00000000000..ec5ddf1f7f2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-grk-00.tex
@@ -0,0 +1,77 @@
+%D \module
+%D [ file=s-grk-00,
+%D version=2004.08.23,
+%D title=\CONTEXT\ Style File,
+%D subtitle=CB Greek Support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D suggestions=Giuseppe Bilotta,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usetypescriptfile[type-cbg]
+
+\usetypescript [all] [cbgreek-medium]
+
+\startsetups [cbgreek]
+
+ \catcode`~=\other
+ \catcode`|=\other
+
+ \language[greek]
+ \switchtobodyfont[cbgreek]
+
+\stopsetups
+
+\definestartstop
+ [greek]
+ [commands=\directsetup{cbgreek}]
+
+\doifnotmode{demo}{\endinput}
+
+% The following sample file was submitted to the \CONTEXT\
+% mailing list by Giuseppe Bilotta, along with the right
+% typescripts.
+
+% already loaded: \usemodule[greek]
+
+\mainlanguage[english]
+
+\starttext
+
+We can easily use plain English for normal text, and then switch
+to greek when we want; as a first try we type the lower and
+upper case 26 letters of the latin alphabet and see how they come
+out in greek:
+
+\startgreek
+a b c d e f g h i j k l m n o p q r s t u v w x y z \par
+A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+\stopgreek
+
+As it can be observed, some uppercase letters have strange
+outcomes; also, j gives \greek{j} and c gives the
+end-of-word sigma \greek{c}; interestingly, s gives either the
+normal sigma or the end-of-word one, depending on whether it's at
+the end of the word or not: \greek{satrapws}.
+
+Of course we can use the various diacritical signs: accents
+(\greek{`a, 'a, ~a}), breathings (\greek{<r, >w, a"}) and
+subscribed iotas (\greek{a|, h|, w|}) (these last are pretty ugly in my
+opinion); observe how they automatically get the correct position
+with uppercase letters: (\greek{`A, 'A, ~A, <A, >A, A|}).
+
+Can the thing be used for serious work?
+
+\startgreek
+>>'Andra moi >'ennepe, Mo~usa, pol'utropon, >'os m'ala poll`a\hfill\break
+pl'agqjh, >epe`i Tro'ihs <er`on ptol'iejron >'eperse;\hfill\break
+poll~wn d" >anjr'wpwn >'iden >'astea ka`i n'oon >'egnw,\hfill\break
+poll`a d" <'o g" >en p'ontw| p'ajen >'algea <`on kat`a jum'on,\hfill\break
+>>arn'umenos <'hn te yuq`hn ka`i n'oston <eta'irwn.
+\stopgreek
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-mag-01.tex b/Master/texmf-dist/tex/context/base/s-mag-01.tex
new file mode 100644
index 00000000000..38a1662c7d2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-mag-01.tex
@@ -0,0 +1,399 @@
+%D \module
+%D [ file=s-mag-01,
+%D version=2002.12.14,
+%D title=\CONTEXT\ Style File,
+%D subtitle=\CONTEXT\ Magazine Base Style,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This style is used for producing explanationary documents.
+% Don't misuse it for other purposes, since it may confuse
+% users. Don't change the title either, since it provides a
+% way to categorize documents. Numbers are disabled in
+% instances produced outside PRAGMA ADE.
+%
+% The layout setup is such that one has several text areas
+% available: headers and footers, margins and edges as well
+% as the main text area. The surrounding (gray) makes the
+% main page stand out and is suitable for viewing in spread
+% mode.
+%
+% Since this style is under constant construction, messing
+% around with settings will produce unwanted side effects.
+% So, if some feature or settings is needed, let me know.
+
+% todo: mp frames
+
+\setvariables[magazine][number=0]
+\setvariables[magazine][author=]
+\setvariables[magazine][title={Zero Issue}]
+\setvariables[magazine][date=\currentdate]
+
+% These are reserved for PRAGMA-ADE, don't use them yourself!
+
+% \setvariables[magazine][main=Tricky]
+% \setvariables[magazine][main=Update]
+% \setvariables[magazine][main=HOWTO]
+
+% \setvariables[magazine][main=This Way] % preludes to a/the manual
+% \setvariables[magazine][main=A Better Way] % dirty versus clean
+% \setvariables[magazine][main=No Way] % how users should not do it
+% \setvariables[magazine][main=Your Way] % how users do it
+% \setvariables[magazine][main=My Way] % how users do it
+% \setvariables[magazine][main=Our Way] % how we do things at pragma
+% \setvariables[magazine][main=Their Way] % how to do latex things in context
+
+\setvariables[magazine][main=My Way]
+
+\startmode[atpragma]
+ \setvariables[magazine][main=This Way]
+\stopmode
+
+\definepapersize
+ [magazine]
+ [width=\dimexpr(\paperwidth-.1\paperwidth),
+ height=\dimexpr(\paperheight-.1\paperheight)]
+
+\setuppapersize
+ [magazine]
+ [A4]
+
+\setupinteractionscreen
+ [option=doublesided]
+
+\definecolor[OuterColor][s=.3]
+\definecolor[InnerColor][s=.8]
+\definecolor[MainColor] [s=.2]
+\definecolor[TitleColor][s=.7]
+
+\definecolor[MyRed] [r=.6]
+\definecolor[MyGreen][g=.6]
+\definecolor[MyBlue] [b=.6]
+
+\startuseMPgraphic{paper}
+ sh := define_circular_shade(a,a,0,bbheight(OverlayBox),
+ \MPcolor{InnerColor},\MPcolor{OuterColor}) ;
+ fill OverlayBox withshade sh ;
+\stopuseMPgraphic
+
+\startreusableMPgraphic{middlepaper}
+ pair a ; a := center OverlayBox ;
+ \includeMPgraphic{paper}
+\stopreusableMPgraphic
+
+\startreusableMPgraphic{rightpaper}
+ pair a ; a := .5[urcorner OverlayBox,lrcorner OverlayBox] ;
+ \includeMPgraphic{paper}
+\stopreusableMPgraphic
+
+\startreusableMPgraphic{leftpaper}
+ pair a ; a := .5[ulcorner OverlayBox,llcorner OverlayBox] ;
+ \includeMPgraphic{paper}
+\stopreusableMPgraphic
+
+\startreusableMPgraphic{page}
+ fill OverlayBox withcolor white ;
+\stopreusableMPgraphic
+
+\startusableMPgraphic{text}
+ StartPage ;
+ for i = Header,Text,Footer :
+ for j = LeftEdge, LeftMargin, Text, RightMargin, RightEdge :
+ draw Field[i][j] withpen pencircle scaled .5pt ;
+ endfor ;
+ endfor ;
+ StopPage ;
+ setbounds currentpicture to Field[Text][Text] ;
+\stopusableMPgraphic
+
+\startsetups[paper]
+
+ \doifmodeelse{*makeup}
+ {\reuseMPgraphic{middlepaper}}
+ {\doifoddpageelse
+ {\reuseMPgraphic{rightpaper}}
+ {\reuseMPgraphic{leftpaper}}}
+
+\stopsetups
+
+\defineoverlay[paper] [\setups{paper}]
+\defineoverlay[page] [\reuseMPgraphic{page}]
+\defineoverlay[text] [\doifmode{frame}{\useMPgraphic{text}}]
+
+\setupbackgrounds [paper] [background=paper]
+\setupbackgrounds [page] [background={page,title}]
+\setupbackgrounds [text] [background=text]
+
+\definelayer
+ [title]
+ [state=repeat,
+ hoffset=-1cm,
+ voffset=1cm,
+ width=\paperwidth,
+ height=\paperheight]
+
+\setupoutput
+ [pdftex]
+
+\setuplayout
+ [width=middle,
+ topspace=1.5cm,
+ height=middle,
+ header=1.5cm,
+ footer=1cm,
+ %grid=yes,
+ headerdistance=.25cm,
+ footerdistance=.5cm,
+ backspace=3cm,
+ margin=1.5cm,
+ margindistance=.25cm,
+ edge=.75cm,
+ edgedistance=.25cm,
+ bottomdistance=1.5cm,
+ bottom=.1\printpaperheight]
+
+\definelayout
+ [makeup]
+ [topspace=1cm,
+ backspace=1cm,
+ header=0pt,
+ footer=0pt,
+ bottom=0pt]
+
+\setuppagenumbering
+ [alternative=doublesided]
+
+\setupcolors
+ [state=start]
+
+\usetypescript
+ [palatino][\defaultencoding]
+
+\setupbodyfont
+ [palatino,10pt]
+
+\setuptolerance
+ [verytolerant]
+
+\appendtoks\setups[papershift]\to\beforeeverypage
+
+\startsetups[papershift]
+
+ \setuppapersize[top=\vskip.5cm,bottom=\vss]
+
+ \doifmodeelse{*makeup}
+ {\setuppapersize[left=\hfill,right=\hfill]}
+ {\doifoddpageelse
+ {\setuppapersize[right=\hfill]}
+ {\setuppapersize[left=\hfill]}}
+
+\stopsetups
+
+\setupbottomtexts
+ [\setups{rightbanner}] []
+ [] [\setups{leftbanner}]
+
+\startsetups [leftbanner]
+
+ \definedfont[Regular at \bottomheight]
+ \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
+ \ht\scratchbox1ex
+ \dp\scratchbox\zeropoint
+ \MainColor
+ \definedfont[Regular sa 2]
+ \doifsomething{\getvariable{magazine}{number}}
+ {\doifnot{\getvariable{magazine}{number}}{0}
+ {\#\getvariable{magazine}{number}}}
+ \quad
+ \currentdate
+ \quad
+ \scale[height=.25\bottomheight]{\box\scratchbox}
+ \quad
+ \hbox to 1.5em{\hss\pagenumber\hss}
+ \quad
+ \hskip-\backspace
+
+\stopsetups
+
+\startsetups [rightbanner]
+
+ \definedfont[Regular at \bottomheight]
+ \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
+ \ht\scratchbox1ex
+ \dp\scratchbox\zeropoint
+ \MainColor
+ \hskip-\backspace
+ \definedfont[Regular sa 2]
+ \quad
+ \hbox to 1.5em{\hss\pagenumber\hss}
+ \quad
+ \scale[height=.25\bottomheight]{\box\scratchbox}
+ \quad
+ \currentdate
+ \quad
+ \doifmode{atpragma}{\#\getvariable{magazine}{number}}
+
+\stopsetups
+
+\startsetups[titlepage]
+
+ \disablemode[frame]
+
+ \setuplayout[makeup]
+
+ \startstandardmakeup[doublesided=no]
+
+ \definelayer
+ [makeup]
+ [width=\textwidth,
+ height=\textheight]
+
+ \setlayerframed
+ [makeup]
+ [corner={left,top},location={right,bottom}]
+ [frame=off,
+ foregroundcolor=MainColor]
+ {\scale
+ [width=\makeupwidth]
+ {\definedfont[Regular sa 10]%
+ \getvariable{magazine}{main}}}
+
+ \setlayerframed
+ [makeup]
+ [corner={right,top},location={left},y=.4\textheight]
+ [frame=off,
+ foregroundcolor=MainColor,
+ width=\textwidth,
+ align=left]
+ {\definedfont[Regular sa 2.5]\setupinterlinespace
+ \startmode[atpragma]
+ \strut \ConTeXt\ magazine \#\getvariable{magazine}{number}\endgraf
+ \stopmode
+ \strut \getvariable{magazine}{date} \endgraf
+ \blank
+ \strut \getvariable{magazine}{title}\endgraf
+ \doifsomething{\getvariable{magazine}{author}}
+ {\strut \getvariable{magazine}{author}\endgraf}
+ \doifsomething{\getvariable{magazine}{affiliation}}
+ {\strut \getvariable{magazine}{affiliation}\endgraf}}
+
+ \setlayerframed
+ [makeup]
+ [corner={right,bottom},location={left,top}]
+ [frame=off,
+ align=normal, % left,
+ width=.8\textwidth,
+ foregroundcolor=MainColor]
+ {\getbuffer[abstract]}
+
+ \flushlayer[makeup]
+
+ \stopstandardmakeup
+
+ \setuplayout[reset]
+
+\stopsetups
+
+\startsetups[listing]
+
+ \page \disablemode[frame]
+
+ \setuptexttexts [][] \setuptexttexts []
+ \setupheadertexts[][] \setupheadertexts[source code of this document]
+ \setupfootertexts[][] \setupfootertexts[]
+
+ \typefile[TEX]{\inputfilename} % \jobname
+
+\stopsetups
+
+\startsetups[lastpage]
+
+ \page \disablemode[frame] \page[even]
+
+ \doifoddpageelse
+ {}
+ {\setuplayout[makeup]
+ \startstandardmakeup[doublesided=no,page=]
+ \stopstandardmakeup
+ \setuplayout[reset]}
+
+\stopsetups
+
+\startsetups[title]
+
+ \disablemode[frame]
+
+ \setlayerframed
+ [title]
+ [corner={left,top},location={left,bottom},
+ rotation=90]
+ [frame=off,
+ foregroundcolor=MainColor]
+ {\definedfont[RegularBold sa 2]\strut\getvariable{magazine}{title}}
+
+ \setlayerframed
+ [title]
+ [corner={right,top},
+ rotation=270]
+ [frame=off,
+ foregroundcolor=MainColor]
+ {\definedfont[RegularBold sa 2]\strut\getvariable{magazine}{title}}
+
+\stopsetups
+
+\startbuffer[abstract]
+ % no abstract
+\stopbuffer
+
+\setuphead
+ [chapter]
+ [page=yes,
+ after={\blank[2*big]},
+ color=MainColor,
+ style=\bfc]
+
+\setuphead
+ [section]
+ [before={\blank[2*big]},
+ after=\blank,
+ color=MainColor,
+ style=\bfb]
+
+\setuphead
+ [subsection]
+ [before=\blank,
+ after=,
+ color=MainColor,
+ style=\bf]
+
+\setupwhitespace
+ [big]
+
+\definetyping[xtyping] [style=\ttx]
+\definetyping[xxtyping][style=\ttxx]
+
+\doifnotmode{demo}{\endinput}
+
+\startbuffer[abstract]
+ \input tufte
+\stopbuffer
+
+\starttext
+
+ % \showframe
+
+ \setups[titlepage] \setups[title]
+
+ \chapter{E.R. Tufte} \input tufte \page
+ \chapter{D.E.K. Knuth} \input knuth \page
+ \chapter{H. Zapf} \input zapf \page
+ \chapter{D. Hofstadter} \input douglas \page
+
+ \setups[lastpage]
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-mod-00.tex b/Master/texmf-dist/tex/context/base/s-mod-00.tex
new file mode 100644
index 00000000000..d585b04f9dc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-mod-00.tex
@@ -0,0 +1,507 @@
+%D \module
+%D [ file=s-mod-00,
+%D version=very-old,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Documentation Base Environment,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module looks like crap, is not documented, will
+%D change, and used to be called modu-*.tex.
+
+% todo:
+%
+% file inclusions -> hyperlinks
+
+\mainlanguage[en] % better not here
+
+\usemodule[units]
+
+\enableactivediscretionaries \newprettytrue
+
+\unprotect
+
+% beter:
+%
+% group -> title
+% title -> category
+% subtitle -> subtitle
+
+% herzien ivm fonts
+
+% nog eens \interface \\ \\ verder doorvoeren
+
+\def\resetmodule
+ {\getrawparameters
+ [Module]
+ [ file=\jobname,
+ version={\currentdate[\v!year,{.},\v!month,{.},\v!day]},
+ system=\CONTEXT,
+ title=,
+ subtitle=,
+ author=Hans Hagen,
+ date=\currentdate,
+ copyright={PRAGMA / Hans Hagen \& Ton Otten},
+ suggestions=]}
+
+\resetmodule
+
+\def\dostartmodule[#1]%
+ {\newcounter\ParagraphNumber
+ \resetmodule
+ \getrawparameters[Module][type=tex,#1]}
+
+\def\startmodule
+ {\dosingleempty\dostartmodule}
+
+\def\complexmodule[#1]%
+ {\startglobal % i.v.m. \bgroup in \startdocumentation
+ \getrawparameters[Module][#1]
+ \stopglobal % i.v.m. \bgroup in \startdocumentation
+ \moduletitle}
+
+\def\stopmodule
+ {\page
+ \placeregister
+ [\v!index]
+ [\c!balance=\v!yes,
+ \c!indicator=\v!no,
+ \c!criterium=\v!text]}
+
+\def\simplemodule#1%
+ {\type{#1}}
+
+\definecomplexorsimple\module
+
+% \startmode[atpragma]
+%
+% \def\TitlePage#1% can be done more efficient
+% {\startMPrun
+% mpgraph := #1 ;
+% input mp-cont ;
+% \stopMPrun
+% \externalfigure
+% [\bufferprefix mprun.#1]
+% [\c!height=\vsize,
+% \c!width=\hsize]}
+%
+% \defineoverlay[titlepage][\TitlePage{512}]
+%
+% \stopmode
+
+\startuseMPgraphic{titlepage}
+
+ width := PaperWidth ;
+ height := PaperHeight ;
+
+ color local_red, local_white, local_blue ;
+
+ local_white := white ;
+
+ local_blue := local_white randomized (.6,.8) ;
+ local_red := local_white randomized (.3,.4) ;
+
+ u := width/400 ;
+
+ def a_module (expr dx, dy) =
+ picture p ; p := image
+ ( ddy := 0 ; sx := 60u ;
+ for i=1 upto (4 randomized 2) :
+ sy := 7u randomized 3u ;
+ fill unitsquare xyscaled(sx,sy) shifted (0,ddy)
+ withcolor local_red ;
+ ddy := ddy + sy + 4u ;
+ endfor ) ;
+ p := p shifted (dx,dy) shifted - center p ;
+ fill boundingbox p enlarged 8u withcolor local_white ;
+ fill boundingbox p enlarged 4u withcolor local_blue ;
+ draw p ;
+ enddef ;
+
+ set_grid(width, height, width/15, height/15) ;
+ forever:
+ if new_on_grid(uniformdeviate width,uniformdeviate height):
+ a_module(dx,dy) ;
+ fi ;
+ exitif grid_full ;
+ endfor ;
+
+ clip currentpicture to unitsquare xyscaled(width,height) ;
+\stopuseMPgraphic
+
+\defineoverlay
+ [titlepage]
+ [\useMPgraphic{titlepage}]
+
+\doifmode{atpragma}{\readfile{s-mod-04.tex}{}{}}
+
+\defineframed
+ [TitleFrame]
+ [\c!background=\v!color,
+ \c!backgroundcolor=white,
+ \c!align=\v!right,
+ \c!offset=12pt,
+ \c!strut=\v!no,
+ \c!frame=\v!off,
+ \c!bottom=]
+
+\definelayout
+ [titlepage]
+ [\c!backspace=0pt,
+ \c!topspace=0pt,
+ \c!header=0pt,
+ \c!footer=0pt,
+ \c!height=\v!middle,
+ \c!width=\v!middle]
+
+\def\moduletitle
+ {\setuplayout[titlepage]
+ \ifx\ModuleNumber\undefined \else
+ \ifnum\ModuleNumber<10
+ \edef\ModuleNumber{00\ModuleNumber}
+ \else\ifnum\ModuleNumber<100
+ \edef\ModuleNumber{0\ModuleNumber}
+ \fi\fi
+ \setupbackgrounds
+ [\v!page]
+ [\c!background=titlepage]
+ \fi
+ \startmakeup[\v!standard][\c!headerstate=\v!none,\c!footerstate=\v!none]
+ \switchtobodyfont[14.4pt,ss]
+ \bgroup
+ \def\CONTEXT {Con\kern-.15em\TeX t}
+ \def\TEXUTIL {\TeX Util}
+ \def\PPCHTEX {PPCH\TeX}
+ \def\METAPOST{MetaPost}
+ \hfill
+ {\definedfont[SansBold at 96pt]\setstrut
+ \TitleFrame{\Modulesystem}}
+ \vfill
+ \definetabulate[temp][|l|l|]%
+ \switchtobodyfont[17.3pt,ss]
+ \hfill
+ {\bf\setstrut
+ \TitleFrame
+ {\insidefloattrue\setuptabulate[\c!before=,\c!after=]%
+ \starttemp
+ \doifsomething{\Moduletitle}
+ {\NC title \EQ \Moduletitle \NC\NR}%
+ \doifsomething{\Modulesubtitle}
+ {\NC subtitle \EQ \Modulesubtitle \NC\NR}%
+ \doifsomething{\Moduleauthor}
+ {\NC author \EQ \Moduleauthor \NC\NR}%
+ \NC date \EQ \currentdate \NC\NR
+ %\doifsomething{\Modulesuggestions} % todo: generates space
+ % {\NC suggestions \NC \Modulesuggestions \NC\NR}%
+ \stoptemp}}
+ \egroup
+ \stopmakeup
+ \ifx\ModuleNumber\undefined \else
+ \setupbackgrounds
+ [\v!page]
+ [\c!background=]
+ \fi
+ \setuplayout}
+
+\let\stopdocumentation=\relax
+
+\def\startdocumentation
+ {\bgroup
+ \doglobal\newcounter\NOfMarginLines
+ \def\stopdocumentation{\par\egroup}}
+
+\newif\ifcompressdefinitions
+
+\def\startcompressdefinitions {\global\compressdefinitionstrue}
+\def\stopcompressdefinitions {\global\compressdefinitionsfalse}
+
+\gdef\CompressDefinitions%
+ {\ifcompressdefinitions
+ \switchtobodyfont[\v!small]%
+ \fi}
+
+\startnotmode[nocode]
+
+ \definetyping
+ [definition]
+
+ \setuptyping
+ [definition]
+ [\c!before={\page[\v!preference]}\blank\PresetParagraphNumber\CompressDefinitions,
+ \c!after=\ResetParagraphNumber\blank,
+ \c!option=\Moduletype]
+
+\stopnotmode
+
+\startmode[nocode]
+
+% \definieerbuffer[definition] % ignore
+
+ \long\def\startdefinition#1\stopdefinition{}
+
+\stopmode
+
+\definetyping [PL] [\c!option=PL, \c!margin=\v!standard]
+\definetyping [JV] [\c!option=JV, \c!margin=\v!standard]
+\definetyping [MP] [\c!option=MP, \c!margin=\v!standard]
+\definetyping [TEX] [\c!option=TEX,\c!margin=\v!standard]
+
+\setuptyping [\v!typing] [\c!margin=\v!standard]
+\setuptyping [\v!file] [\c!margin=\v!standard]
+\setuptyping [definition] [\c!margin=0pt]
+
+\newcounter\NOfMarginLines
+\newcounter\ParagraphNumber
+
+\def\ResetParagraphNumber
+ {\egroup}
+
+\def\PresetParagraphNumber
+ {\bgroup
+ \xdef\NOfTextLines%
+ {\the\prevgraf}%
+ \doglobal\decrement\NOfMarginLines
+ \doglobal\increment\ParagraphNumber
+ \message{.}%
+ \gdef\ShowParagraphNumber%
+ {\llap{\slx\ParagraphNumber\hskip\leftmargindistance}}%
+ \gdef\ShowParagraphNumberA%
+ {\ifnum\NOfMarginLines>\NOfTextLines\relax
+ \doglobal\increment\NOfTextLines
+ \else
+ \ShowParagraphNumber
+ \global\let\ShowParagraphNumberA=\relax
+ \global\let\ShowParagraphNumberB=\ShowParagraphNumber
+ \doglobal\newcounter\NOfMarginLines
+ \fi}%
+ \gdef\ShowParagraphNumberB%
+ {}%
+ \EveryLine
+ {\ShowParagraphNumberA}%
+ \EveryPar
+ {\vadjust{\nobreak}%
+ \ShowParagraphNumberB}}
+
+\EveryPar % skip one
+ {\EveryPar
+ {\doglobal\newcounter\NOfMarginLines}}
+
+\def\dodomargeaanduidingen[#1]#2%
+ {\def\docommando##1%
+ {\indent\hbox
+ {\ifx#2\relax
+ \index{##1}%
+ \else
+ \index{#2{##1}}%
+ \fi
+ #2{\doboundtext{##1}{\leftmarginwidth}{..}}}%
+ \doglobal\increment\NOfMarginLines
+ \endgraf}%
+ \processcommalist[#1]\docommando}
+
+\def\margeaanduidingen#1[#2]%
+ {\def\domargeaanduidingen##1##2%
+ {\margintitle[#2]%
+ {\switchtobodyfont[\v!small]%
+ \doglobal\newcounter\NOfMarginLines
+ \dodomargeaanduidingen[##1]#1%
+ \scratchcounter=\NOfMarginLines
+ \multiply\scratchcounter by 10
+ \divide\scratchcounter by 12
+ \advance\scratchcounter by 1
+ \xdef\NOfMarginLines{\the\scratchcounter}%
+ \processcommalist[##2]\index}}%
+ \dodoublegroupempty\domargeaanduidingen}
+
+\def\complexmacros{\margeaanduidingen\tex }
+\def\complexextras{\margeaanduidingen\relax}
+
+\def\complexelements
+ {\margeaanduidingen\someelement}
+
+\def\someelement#1{\type{<#1>}}
+
+\definecomplexorsimpleempty\macros
+\definecomplexorsimpleempty\extras
+\definecomplexorsimpleempty\elements
+
+\def\showelements{\dodoubleempty\doshowelements}
+
+\def\doshowelements[#1][#2]
+ {\bgroup
+ \processXMLbuffer
+ \typebuffer
+ \setupcolors[\c!state=\v!stop]
+ \showXSDcomponent[#1][#2]
+ \egroup}
+
+% \macros{a,b}
+% \macros{a,b}{b}
+% \macros[a]{a,b}{b}
+
+% weg ermee
+
+\defineparagraphs [interface] [\c!n=2]
+\setupparagraphs [interface] [1] [\c!width=4cm]
+
+\def\startexample{\par\startnarrower} \let\startvoorbeeld\startexample
+\def\stopexample {\stopnarrower} \let\stopvoorbeeld \stopexample
+
+\gdef\VisualizeLastSpace{\ifdim\lastskip>0pt\unskip\tttf\char32\fi}
+
+\gdef\ShowHeadText #1{\tttf#1\VL\mainlanguage[\currentlanguage]\headtext {#1}\VisualizeLastSpace}
+\gdef\ShowLabelText#1{\tttf#1\VL\mainlanguage[\currentlanguage]\labeltext{#1}\VisualizeLastSpace}
+
+\startbuffer[lang-a]
+\starttable[|l|l|]
+ \HL
+ \VL \bf head key \VL \bf current value \VL\SR
+ \HL
+ \VL \ShowHeadText \v!abbreviations \VL\FR
+ \VL \ShowHeadText \v!units \VL\MR
+ \VL \ShowHeadText \v!figures \VL\MR
+ \VL \ShowHeadText \v!graphics \VL\MR
+ \VL \ShowHeadText \v!index \VL\MR
+ \VL \ShowHeadText \v!content \VL\MR
+ \VL \ShowHeadText \v!intermezzi \VL\MR
+ \VL \ShowHeadText \v!logos \VL\MR
+ \VL \ShowHeadText \v!tables \VL\LR
+ \HL
+\stoptable
+\stopbuffer
+
+\startbuffer[lang-b]
+\starttable[|l|l|]
+ \HL
+ \VL \bf label key \VL \bf current value \VL\SR
+ \HL
+ \VL \ShowLabelText \v!table \VL\FR
+ \VL \ShowLabelText \v!figure \VL\MR
+ \VL \ShowLabelText \v!intermezzo \VL\MR
+ \VL \ShowLabelText \v!graphic \VL\MR
+ \VL \ShowLabelText \v!chapter \VL\MR
+ \VL \ShowLabelText \v!section \VL\MR
+ \VL \ShowLabelText \v!subsection \VL\MR
+ \VL \ShowLabelText \v!subsubsection \VL\MR
+ \VL \ShowLabelText \v!appendix \VL\MR
+ \VL \ShowLabelText \v!part \VL\MR
+ \VL \ShowLabelText \v!line \VL\MR
+ \VL \ShowLabelText \v!lines \VL\LR
+ \HL
+\stoptable
+\stopbuffer
+
+\startbuffer[lang-c]
+\starttable[|l|l|]
+ \HL
+ \VL \bf label key \VL \bf current value \VL\SR
+ \HL
+ \VL \ShowLabelText \v!january \VL\FR
+ \VL \ShowLabelText \v!february \VL\MR
+ \VL \ShowLabelText \v!march \VL\MR
+ \VL \ShowLabelText \v!april \VL\MR
+ \VL \ShowLabelText \v!may \VL\MR
+ \VL \ShowLabelText \v!june \VL\MR
+ \VL \ShowLabelText \v!july \VL\MR
+ \VL \ShowLabelText \v!august \VL\MR
+ \VL \ShowLabelText \v!september \VL\MR
+ \VL \ShowLabelText \v!october \VL\MR
+ \VL \ShowLabelText \v!november \VL\MR
+ \VL \ShowLabelText \v!december \VL\LR
+ \HL
+\stoptable
+\stopbuffer
+
+\startbuffer[lang-d]
+\starttable[|l|l|]
+ \HL
+ \VL \bf label key \VL \bf current value \VL\SR
+ \HL
+ \VL \ShowLabelText \v!sunday \VL\FR
+ \VL \ShowLabelText \v!monday \VL\MR
+ \VL \ShowLabelText \v!tuesday \VL\MR
+ \VL \ShowLabelText \v!wednesday \VL\MR
+ \VL \ShowLabelText \v!thursday \VL\MR
+ \VL \ShowLabelText \v!friday \VL\MR
+ \VL \ShowLabelText \v!saturday \VL\LR
+ \HL
+\stoptable
+\stopbuffer
+
+\gdef\ShowTextsValues[#1][#2]%
+ {\vbox\bgroup
+ \language[#1]%
+ \setbox\scratchbox\hbox to \hsize{\hss\bfb#2 language defaults\hss}
+ \dp\scratchbox\zeropoint
+ \box\scratchbox
+ \vskip1em
+ \hrule
+ \vskip2em
+ \halign
+ {\hss##\hss&##\hskip1em&\hss##\hss\cr
+ $\vcenter{\getbuffer[lang-a]}$&&$\vcenter{\getbuffer[lang-b]}$\cr
+ \noalign{\vskip1em}
+ $\vcenter{\getbuffer[lang-c]}$&&$\vcenter{\getbuffer[lang-d]}$\cr}%
+ \egroup}
+
+\gdef\ShowLanguageValues[#1][#2]#3#4%
+ {\hbox to \hsize
+ {\hss
+ \vbox
+ \bgroup
+ \language[#1]%
+ \let\normalbar=|
+ \starttable[||||]
+ \HL
+ \VL \THREE{\bf subsentence symbol and quotes} \VL\SR
+ \HL
+ \VL \quotation{#3 #4} \VL \quote{#2} \VL \let|=\normalbar |<||<|#3|>|#4|>| \VL\FR
+ \VL \quotation{#3 #4} \VL \quote{#2} \VL |<||<|#3|>|#4|>| \VL\LR
+ \HL
+ \stoptable
+ \egroup
+ \hss}}
+
+\gdef\doShowAllLanguageValues[#1][#2]#3#4%
+ {\vbox
+ {\ShowTextsValues[#1][#2]
+ \vskip2em
+ \ShowLanguageValues[#1][#2]{#3}{#4}}
+ \protect
+ \page}
+
+\gdef\ShowAllLanguageValues
+ {\page
+ \unprotect
+ \dodoubleargument\doShowAllLanguageValues}
+
+\protect
+
+%D Command references:
+
+% \input setupa
+% \input setupb
+
+\usemodule[int-load] \loadsetups
+
+\unprotect
+
+% \def\showsetup
+% {\doglobal\newcounter\CurrentArgument
+% \setup}
+
+\def\showsetup#1%
+ {{\def\y##1{\writestatus{setups}{warning: remove y! from #1}}%
+ \setup{#1}}}
+
+\setupframedtexts
+ [setuptext]
+ [\c!background=\v!screen,
+ \c!frame=\v!off]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/s-mod-01.tex b/Master/texmf-dist/tex/context/base/s-mod-01.tex
new file mode 100644
index 00000000000..0e834049f44
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-mod-01.tex
@@ -0,0 +1,148 @@
+%D \module
+%D [ file=s-mod-01,
+%D version=very-old,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Documentation Paper Environment,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module looks like crap, is not documented, will
+%D change, and used to be called modu-*.tex.
+
+\usemodule[mod-00]
+
+\unprotect
+
+\setupbodyfont
+ [10pt,ams]
+
+\mainlanguage
+ [en]
+
+\setupwhitespace
+ [\v!big]
+
+\setuptolerance
+ [\v!tolerant]
+
+\emergencystretch=5em
+
+\setuplayout
+ [\c!backspace=3.5cm,
+ \c!leftmargin=1.75cm,
+ \c!rightmargin=0cm,
+ \c!margindistance=.5cm,
+ \c!leftedgedistance=.25cm,
+ \c!rightedgedistance=.5cm,
+ \c!edge=1.5cm,
+ \c!width=15.55333cm, % 13.998cm at 9pt => 15.55333 at 10pt
+ \c!topspace=2cm,
+ \c!header=1.25cm,
+ \c!footer=1.25cm,
+ \c!height=25cm,
+ \c!style=\ss]
+
+\setupsetup
+ [\c!reference=1]
+
+\startnotmode[single]
+
+ \setuppagenumbering
+ [\c!alternative={\v!doublesided,\v!singlesided}]
+
+\stopnotmode
+
+\setuppagenumbering
+ [\c!location=]
+
+\setupfootertexts
+ [\v!edge]
+ [][\v!pagenumber]
+
+\startmode[single]
+
+ \setupfootertexts
+ [\v!margin]
+ [\tt\Modulefile][]
+
+\stopmode
+
+\startnotmode[single]
+
+ \setupfootertexts
+ [\v!margin]
+ [\tt\Modulefile][]
+ [\tt\Modulefile][]
+
+\stopnotmode
+
+\setupfootertexts
+ [\v!text]
+ [\CONTEXT]
+ [\Moduletitle]
+
+\setupheadertexts
+ [\v!text]
+ []
+ [\Modulesubtitle]
+
+\setupinmargin
+ [\c!location=\v!left]
+
+\setupheads
+ [\c!alternative=\v!inmargin]
+
+\setuphead
+ [\v!chapter]
+ [\c!style=\ssc,
+ \c!page=\v!right,
+ \c!header=\v!empty]
+
+\setuphead
+ [\v!section]
+ [\c!style=\ssb,
+ \c!page=\v!right]
+
+\setuplist
+ [\v!chapter]
+ [\c!style=\v!bold,
+ \c!after=\blank]
+
+\setupcombinedlist
+ [\v!content]
+ [\c!width=3em,
+ \c!aligntitle=\v!yes]
+
+\setupregister
+ [\v!index]
+ [\c!balance=\v!yes,
+ \c!indicator=\v!no]
+
+\startnotmode[nocolor]
+
+\setupcolors
+ [\c!state=\v!start]
+
+\stopnotmode
+
+\startnotmode[color]
+
+ \setupcolors
+ [\c!conversion=\v!always]
+
+ \setuptyping
+ [\c!palet=graypretty]
+
+\stopnotmode
+
+\setupinteraction
+ [\c!state=\v!start,
+ \c!color=,
+ \c!style=]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/s-mod-02.tex b/Master/texmf-dist/tex/context/base/s-mod-02.tex
new file mode 100644
index 00000000000..b6260ab3801
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-mod-02.tex
@@ -0,0 +1,417 @@
+%D \module
+%D [ file=s-mod-02,
+%D version=very-old,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Documentation Screen Environment,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module looks like crap, is not documented, will
+%D change, and used to be called modu-*.tex.
+
+% Macro's
+
+\usemodule[mod-00]
+
+% todo: internationalize + setups
+
+\setuphead[paragraaf][expansion=command]
+
+\def\complexmodule[#1]% redefined
+ {\startglobal % i.v.m. \bgroup in \startdocumentation
+ \getparameters[Module][#1]
+ \stopglobal % i.v.m. \bgroup in \startdocumentation
+ \section{\Modulesubtitle}
+ \WriteLists}
+
+\def\stopmodule % redefined
+ {\page
+ \determineregistercharacteristics
+ [index]
+ [criterium=section]
+ \ifutilitydone
+ \pagereference
+ [index]
+ \placeregister
+ [index]
+ [balance=yes,
+ indicator=no,
+ criterium=section]
+ \fi}
+
+\let\ComposeLists=\relax
+
+\newcounter\ModuleNumber
+
+\newwrite\BatchFile \openout\BatchFile=\jobname.bat
+
+\def\WriteBatchFile
+ {\doglobal\increment\ModuleNumber
+% \immediate\write\BatchFile{call modu-run \FileName\space \ModuleNumber}}
+% \immediate\write\BatchFile{texmfstart texutil --modu \FileName}}
+ \immediate\write\BatchFile{texmfstart texexec --pdf --modu \FileName}}
+
+\newif\ifProcessingPublic
+
+\def\WriteLists
+ {\writetolist[FileNames] {}{\FileName}
+ \writetolist[GroupItems]{}{\GroupItem}}
+
+\def\moduletitle{}
+
+\def\TypeZeroModule#1%
+ {\section{[to be extracted: #1]}
+ {\em This module is not yet split off.}
+ \WriteLists}
+
+\def\TypeOneModule#1%
+ {\section{[to be documented: #1]}
+ {\em This module is not yet fully documented.}
+ \WriteLists}
+
+\def\TypeTwoModule#1%
+ {\ifProcessingPublic
+ \readfile{#1.ted}{}{}%
+ \WriteBatchFile
+ \else
+ \section{[not yet public: #1]}
+ {\em This module is documented but not yet public.}
+ \WriteLists
+ \fi}
+
+\def\TypeThreeModule#1%
+ {\readfile{#1.ted}{}{}%
+ \WriteBatchFile}
+
+\def\processmodule#1#2%
+ {\page
+ \bgroup
+ \def\FileName{#1}
+ \setupreferencing[prefix=#1]
+ \useexternaldocument[PaperVersion][#1][]
+ \aftersplitstring#1\at-\to\GroupItem
+ \ComposeLists
+ \ifcase#2
+ \TypeZeroModule{#1}
+ \or
+ \TypeOneModule{#1}
+ \or
+ \TypeTwoModule{#1}
+ \or
+ \TypeThreeModule{#1}
+ \fi
+ \page
+ \setupreferencing[prefix=]
+ \egroup}
+
+\def\ModuleGroup#1#2%
+ {\page
+ \let\Modulefile=\empty
+ \setupreferencing[prefix=#1]
+ \def\FileGroup{#1}
+ \writetolist[FileGroups]{}{\FileGroup}
+ \chapter[content]{#2}
+ \MakeListOfItems
+ \MakeListOfNames
+ \MakeListOfGroups
+ \placecontent[criterium=chapter,level=section]}
+
+% Layout
+
+\setupbodyfont
+ [9pt]
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [backspace=72.5pt,
+ leftmargin=50pt,
+ leftmargindistance=12.5pt,
+ rightmargin=0pt,
+ rightedge=80pt,
+ rightedgedistance=10pt,
+ leftedge=0pt,
+ width=430pt,
+ topspace=10pt,
+ header=0pt,
+ footer=30pt,
+ bottomdistance=10pt,
+ bottom=15pt,
+ height=410pt,
+ style=\ss]
+
+\setuptyping
+ [palet=colorpretty]
+
+\setupsetup
+ [reference=3]
+
+\definecolor [AchtergrondKleur] [s=.6]
+\definecolor [ButtonKleur] [r=.2,g=.2,b=.6]
+\definecolor [TekstKleur] [r=.6,g=.2,b=.2]
+
+\definecolor [colorprettyone] [r=.6,g=.0,b=.0] % red
+\definecolor [colorprettytwo] [r=.0,g=.6,b=.0] % green
+\definecolor [colorprettythree] [r=.0,g=.0,b=.6] % blue
+\definecolor [colorprettyfour] [r=.6,g=.6,b=.0] % yellow
+
+\setupinteraction
+ [state=start,
+ page=yes,
+ contrastcolor=,
+ menu=on,
+ color=]
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=AchtergrondKleur,
+ offset=2.5pt] % this offset influences the menus!
+
+\setupbackgrounds
+ [text,footer]
+ [text,leftmargin]
+ [background=color,
+ backgroundcolor=white]
+
+\setupsubpagenumber
+ [way=bysection,
+ state=start]
+
+\setupinteractionbar
+ [frame=off,
+ offset=0pt,
+ height=fit]
+
+\setupwhitespace
+ [big]
+
+\setuptyping
+ [typing]
+ [option=color]
+
+\setuptyping
+ [definition]
+ [option=color]
+
+\setuptyping
+ [file]
+ [option=color]
+
+\setuppagenumbering
+ [alternative=singlesided,
+ way=bysection,
+ state=none]
+
+\setupinmargin
+ [location=left]
+
+\setupheads
+ [alternative=inmargin]
+
+\setuphead
+ [chapter]
+ [style=\ssc,
+ page=right]
+
+\setuphead
+ [section]
+ [style=\ssb,
+ page=right]
+
+\setuplist
+ [chapter]
+ [style=bold,
+ after=\blank]
+
+\setupcontent
+ [width=2em]
+
+\setupindex
+ [balance=yes,
+ indicator=no]
+
+\setupcolors
+ [state=start]
+
+\def\TitelBlad#1%
+ {\startstandardmakeup
+ \definefont[GrootFont] [SansBold at 72pt]
+ \definefont[MiddelFont][Sans at 32pt]
+ \definefont[KleinFont] [Sans at 24pt]
+ \startcolor[AchtergrondKleur]
+ \vskip12pt
+ \midaligned{\GrootFont\setstrut\strut Con\TeX t}
+ \vskip24pt
+ \midaligned{\MiddelFont\setstrut\strut #1}
+ \vskip24pt
+ \midaligned{\KleinFont\setstrut\strut Hans Hagen}
+ \vfilll
+ \midaligned{\KleinFont\setstrut\strut PRAGMA ADE}
+ \vskip24pt
+ \midaligned{\KleinFont\setstrut\strut www.pragma-ade.com --- \currentdate}
+ \vskip12pt
+ \stopcolor
+ \stopstandardmakeup}
+
+\def\ColofonBlad
+ {\startmode[atpragma]
+ \page
+ \bgroup
+ \def\PragmaHoogte {\makeupheight}
+ \def\PragmaBreedte{\textwidth}
+ \def\PragmaKopwit {\topspace}
+ \def\PragmaRugwit {\backspace}
+ \def\PragmaMarge {0pt}
+ \PragmaLijnentrue
+ \PlaatsPragmaLogo[ADE]
+ \vfill
+ todo: colofon
+ \startnarrower[3*middle]
+ This is the official documentation of \CONTEXT\ version
+ \referraldate, a \TEX\ macropackage developed by J.~Hagen
+ \& A.F.~Otten, who both hold the copyrights.
+ \stopnarrower
+ \vfill
+ \page
+ \egroup
+ \stopmode}
+
+\def\ColofonBlad
+ {}
+
+\newbox\ListOfItems
+\newbox\ListOfGroups
+\newbox\ListOfNames
+
+\definelist[FileNames] \def\FileName {}
+\definelist[FileGroups] \def\FileGroup {}
+\definelist[GroupItems] \def\GroupItem {}
+
+\setuplist
+ [FileNames,FileGroups,FileGroups]
+ [expansion=yes,
+ pagenumber=no,
+ style=\ss\bf]
+
+\setuplist
+ [FileNames]
+ [command=\FileNameEntry,
+ after=\endgraf,
+ alternative=none] % horizontal
+
+\setuplist
+ [FileGroups]
+ [command=\FileGroupEntry,
+ after=\hss,
+ alternative=horizontal]
+
+\def\FileNameEntry#1#2#3%
+ {\strut\hbox{#2}\endgraf}
+
+\def\FileGroupEntry#1#2#3%
+ {\strut\hbox{#2}\endgraf}
+
+\def\MakeListOfItems
+ {\setbox\ListOfItems=\vbox
+ {\ss\bf
+ \placelist[GroupItems][color=ButtonKleur,contrastcolor=white,criterium=chapter]}}
+
+\def\MakeListOfNames
+ {\setbox\ListOfNames=\vbox
+ {\hsize\rightedgewidth
+ \ss\bf\setupinterlinespace
+ \startsimplecolumns[distance=10pt]
+ \placelist[FileNames][color=ButtonKleur,contrastcolor=white,criterium=chapter]
+ \stopsimplecolumns}}
+
+\def\MakeListOfGroups
+ {\setbox\ListOfGroups=\hbox to \textwidth
+ {\ss\bf
+ \setupinteraction[color=ButtonKleur]%
+ \placelist[FileGroups][color=ButtonKleur,contrastcolor=white,criterium=all]\unskip\unskip}}
+
+\setbox\ListOfGroups=\hbox{}
+
+%\setupfootertexts
+% [rand]
+% []
+% [{\interactiebalk[variant=g]}]
+
+\setupinteractionmenu
+ [right,bottom]
+ [state=start,
+ frame=off,
+ color=AchtergrondKleur,
+ contrastcolor=white,
+ style=\ss\bf,
+ height=15pt,
+ offset=0pt,
+ inbetween=\vskip5pt,
+ background=color,
+ backgroundcolor=ButtonKleur]
+
+\startinteractionmenu[right]
+ \boxofsize \vbox \textheight \footerdistance \footerheight 5pt
+ \bgroup
+ \copy\ListOfNames
+ \vfill
+ \but [\FileGroup:content] local contents \\
+ \but [\FileName:index] local register \\
+ \but [PaperVersion::begin] paper version \\
+ \but [content] main contents \\
+ \but [index] main register \\
+ \but [PreviousJump] previous jump \\
+ \but [CloseDocument] close document \\
+ \unskip
+ \egroup
+\stopinteractionmenu
+
+\startinteractionmenu[bottom]
+ \unhcopy\ListOfGroups
+\stopinteractionmenu
+
+\def\placemoduleregister
+ {\startbackmatter
+ \setupsubpagenumber[reset]
+ \title[-:index]{Register}
+ \placeregister[index]
+ \stopbackmatter}
+
+\def\placemodulecontent
+ {\startfrontmatter
+ \title[-:content]{Contents}
+ \setupinteractionbar[state=stop]
+ \placecontent[criterium=text,level=chapter]
+ \stopfrontmatter}
+
+\setupcontent
+ [pagenumber=no,
+ level=chapter,
+ interaction=all,
+ style=,
+ before=,
+ after=]
+
+\setupfootertexts
+ [margin]
+ [\tt\Modulefile]
+ []
+
+\setupfootertexts
+ [text]
+ [chapter][chapter]
+
+\setupindex
+ [symbol=1]
+
+\setuptolerance
+ [verytolerant]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-00.tex b/Master/texmf-dist/tex/context/base/s-pre-00.tex
new file mode 100644
index 00000000000..7b22e2fd9a0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-00.tex
@@ -0,0 +1,202 @@
+%D \module
+%D [ file=s-pre-00,
+%D version=1997.07.22,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 0,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module provides some non core functionality that can
+%D be used in the presentations styles. This module contains
+%D experimental macros.
+%D
+%D The presentation environments are independent of each other.
+%D Although they have much in common, and in many cases can be
+%D exchanged, the common components are not collected in this
+%D file. That way they can serve as examples of style
+%D definitions.
+
+\unprotect
+
+\newbox \presentationstack
+\newcounter \presentationcounter
+\newdimen \presentationheight
+
+\appendtoks\doglobal\newcounter\presentationcounter\to\everyshipout
+
+\defineframedtext
+ [presentationshield]
+
+\setupframedtexts
+ [presentationshield]
+ [\c!background=\v!color,
+ \c!backgroundcolor=StepColor,
+ \c!offset=\v!overlay,
+ \c!frame=\v!off]
+
+\definecolor[StepColor][white]
+
+\def\enablepresentationstep%
+ {\let\enablepresentationstep\relax
+ \useJSpreamblenow{presentation}%
+ \setuptexttexts
+ [\vbox to \textheight
+ {\dopresentationstep1\box\presentationstack\vfill}]}
+
+\def\presentationstep
+ {\dopresentationstep0}
+
+\def\dopresentationstep#1% not ok yet
+ {\global\setbox\presentationstack=\vbox
+ {\ifnum\presentationcounter=0
+ \global\presentationheight=\!!zeropoint
+ \fi
+ \ifcase#1\relax
+ \scratchdimen=\pagetotal
+ \else
+ \scratchdimen=\textheight
+ \fi
+ \advance\scratchdimen by -\presentationheight
+ \edef\presentationstepheight{\the\scratchdimen}
+ \global\presentationheight=\pagetotal
+ \forgetall
+ \offinterlineskip
+ \dontcomplain
+ \box\presentationstack
+ \doglobal\increment\presentationcounter
+ \scratchcounter=\realpageno \multiply\scratchcounter by 100
+ \advance\scratchcounter by \presentationcounter
+ \edef\presentationtag{presentation:\the\scratchcounter}
+ \setupfield
+ [presentation]
+ [\c!width=\v!fit,\c!height=\v!fit,\c!offset=\v!overlay,
+ \c!strut=\v!no,\c!frame=\v!off,\c!option=\v!readonly]
+ \definesymbol
+ [\presentationtag]
+ [\presentationshade]
+ \def\presentationshade
+ {\presentationshield
+ [\c!width=\textwidth,\c!height=\presentationstepheight]{}}
+ \definefield[\presentationtag][check][presentation][\presentationtag,\v!none][\presentationtag]
+ \fitfield[\presentationtag]}}
+
+\startJSpreamble {presentation} used later
+ var presentation = new Array() ;
+ for (i=1;i<=\lastpage;i++)
+ { presentation[i] = 0 }
+ this.dirty = false ;
+ function NextPresentation (pagenumber)
+ { % ++presentation[pagenumber] ;
+ presentation[pagenumber] = presentation[pagenumber] + 1 ;
+ var dummy = 100*pagenumber + presentation[pagenumber] ;
+ var v = this.getField("presentation:"+dummy) ;
+ if (v)
+ { v.hidden = true }
+ % { v.display = display.hidden }
+ else
+ { ++pagenumber ;
+ if (pagenumber<=\lastpage)
+ { presentation[pagenumber] = presentation[pagenumber] + 1 ;
+ dummy = 100*(pagenumber) + presentation[pagenumber] ;
+ v = this.getField("presentation:"+dummy) ;
+ if (v) { v.hidden = true }
+ % if (v) { v.display = display.hidden }
+ ++this.pageNum } }
+ this.dirty = false }
+\stopJSpreamble
+
+\definereference[NextStep][JS(NextPresentation{\realfolio})]
+
+%D \macros
+%D {presentationstep}
+%D
+%D The macro \type {\presentationstep} provides a basic slide
+%D show functionality. It sort of records pieces of the page
+%D that will show up stepwise. It can be used like:
+%D
+%D \starttyping
+%D \startitemize
+%D \item eerste
+%D \item tweede
+%D \stopitemize
+%D
+%D \presentationstep
+%D
+%D \startformula
+%D ax^2+bx+c
+%D \stopformula
+%D
+%D \presentationstep
+%D \stoptyping
+%D
+%D When the document is opened, the two text fragments are
+%D covered by a shield. Each page has its own shield stack. The
+%D logical reference \type {NextStep} can be used to hide the
+%D shield.
+%D
+%D \starttyping
+%D \setupfootertexts[{\button{Show Up}[NextStep]}]
+%D \stoptyping
+%D
+%D In case of presentation style 2, you can say:
+%D
+%D \starttyping
+%D \definereference[Whatever][JS(NextPresentation{\realfolio})]
+%D \stoptyping
+%D
+%D Depending of the viewer, you need to reset the fields at
+%D startup:
+%D
+%D \starttyping
+%D \setupinteraction[openaction=ResetForm]
+%D \stoptyping
+%D
+%D Fixed spacing give you the best results:
+%D
+%D \starttyping
+%D \setupwhitespace[fixed]
+%D \setupblank[fixed]
+%D \stoptyping
+%D
+%D Sometimes you need to set the color of the background, as
+%D with style 2:
+%D
+%D \starttyping
+%D \definecolor[StepColor][Page]
+%D \stoptyping
+%D
+%D Special effects can be reached with:
+%D
+%D \starttyping
+%D \setupframedtexts
+%D [presentationshield]
+%D [background=color,backgroundcolor=red]
+%D \stoptyping
+%D
+%D There is also:
+%D
+%D \starttyping
+%D \autopresentationsteptrue
+%D \stoptyping
+%D
+%D One can enable this feature as \type {step} mode.
+
+\newif\ifautopresentationstep
+
+\appendtoks \ifautopresentationstep\presentationstep\fi \to \everypar
+
+\doifmode{step} {\enablepresentationstep}
+\doifmode{autostep}{\autopresentationsteptrue\enablepresentationstep}
+
+%D When in \type {comment} mode, embedded page comments are
+%D processed and put below the page. The default space of
+%D 5cm should be adequate but can of course be changed.
+
+\doifmode{comment}{\setuppagecomment[state=start,location=bottom]}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-01.tex b/Master/texmf-dist/tex/context/base/s-pre-01.tex
new file mode 100644
index 00000000000..2cc8c6e359c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-01.tex
@@ -0,0 +1,384 @@
+%D \module
+%D [ file=s-pre-01,
+%D version=1997.07.22,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This environment can be used to typeset interactive
+%D presentations. This module was first used at the 1997 \TUG\
+%D meeting.
+
+\usemodule[pre-general]
+
+%D \macros
+%D {language}
+%D
+%D Because this module is defined in english, we default to the
+%D english hyphenation patterns and labels too.
+
+\language
+ [en]
+
+%D \macros
+%D {setupbodyfont,setuplayout}
+%D
+%D For screen reading, a Lucida Bright font looks nice. We use
+%D a 14.4 point bodyfont for the main text, but switch back to
+%D 12 points for ornaments.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+\setuplayout
+ [style=smallbodyfont]
+
+%D \macros
+%D {setupcolors,definecolor}
+%D
+%D Screen presentations without color just look dull, so we
+%D enable color support. We define ourselves a yellowish
+%D backgroundcolor and a not too dark blue interactioncolor.
+
+\setupcolors
+ [state=start]
+
+\definecolor [BackgroundColor] [r=1, g=1, b=.7]
+\definecolor [InteractionColor] [r=.1, g=.5, b=.8]
+\definecolor [ContrastColor] [r=.9, g=.5, b=.2]
+
+%D \macros
+%D {setuppapersize,setuplayout,setupinteractionscreen}
+%D
+%D
+%D We use a nice large screen, and dedicate the right edge and
+%D bottom part to navigational tools. We automatically set
+%D the width and height of the page and start up full screen.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [topspace=12pt,
+ header=0pt,
+ footer=0pt,
+ height=402pt, % 450 - 12 - 15 - 12 - 12 + 3
+ bottomdistance=15pt,
+ bottom=12pt,
+ backspace=12pt,
+ margin=0pt,
+ width=fit,
+ edgedistance=12pt,
+ rightedge=96pt]
+
+\setupinteractionscreen
+ [option=max]
+
+%D \macros
+%D {setupbackgrounds}
+%D
+%D We set the pagecolor to yellow except the part of the screen
+%D that is used to display the running text. By seting the
+%D offset to 3pt the text will not touch the yellow parts. We
+%D do not set the depth.
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=BackgroundColor,
+ offset=3pt]
+
+\setupbackgrounds
+ [text][text]
+ [background=color,
+ backgroundcolor=white]
+
+%D I considered the next setup too, but finaly decided to
+%D comment it out.
+%D
+%D \starttyping
+%D \setupbackgrounds
+%D [bottom][text]
+%D [frame=on,
+%D framecolor=white]
+%D \stoptyping
+
+%D \macros
+%D {setupinteraction}
+%D
+%D We did not enable interactive text support yet, so let's do
+%D that now. We force page reference to circumvent problems
+%D with named destinations in buggy viewers.
+
+\setupinteraction
+ [page=yes,
+ color=InteractionColor,
+ contrastcolor=ContrastColor,
+ menu=on,
+ state=start]
+
+%D \macros
+%D {setupinteractionmenu,startinteractionmenu}
+%D
+%D At the bottom of the screen we show two navigational bars.
+%D At the left we show the subpage bar, at the right we use a
+%D non default backward|/|forward bar.
+
+\setupinteractionmenu
+ [bottom]
+ [leftoffset=-3pt,
+ rightoffset=-3pt]
+
+\startinteractionmenu[bottom]
+ \txt \InteractionBar \\
+ \txt \InteractionButtons \\
+\stopinteractionmenu
+
+%D \macros
+%D {interactionbar}
+%D
+%D The left bar gets a white border (on the yellow background).
+%D Because we don't want to typeset an empty frame when no
+%D subpage bar is shown, we check for the number of subpages.
+
+\def\InteractionBar%
+ {\ifnum\nofsubpages>1
+ \framed
+ [framecolor=white,rulethickness=1pt,
+ height=\bottomheight,strut=no]
+ {\interactionbar[alternative=f,width=.5\makeupwidth,height=1ex]}
+ \fi}
+
+%D \macros
+%D {setupinteractionbar, interactionbuttons}
+%D
+%D The right hand buttons enable us to jump backward and forward,
+%D as well as to the previous and next jump. We also enable to
+%D close the presentation.
+
+\setupinteractionbar
+ [framecolor=white,rulethickness=1pt,
+ height=\bottomheight,strut=no]
+
+\def\InteractionButtons%
+ {\interactionbuttons
+ [width=15em]
+ [PreviousJump,NextJump,
+ firstpage,
+ firstsubpage,previouspage,nextpage,lastsubpage,
+ lastpage,
+ CloseDocument]}
+
+%D \macros
+%D {StartTitlePage, TitlePage}
+%D
+%D The titlepage is rather simple and can be typeset in two
+%D ways:
+%D
+%D \starttyping
+%D \StartTitlePage
+%D text \\ text \\ text
+%D \StopTitlepage
+%D \stoptyping
+%D
+%D or more straightforward:
+%D
+%D \starttyping
+%D \TitlePage{text\\text\\text}
+%D \stoptyping
+%D
+%D The first alternative can be used for more complicated
+%D title pages.
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \let\\=\vfil}
+
+\def\StopTitlePage%
+ {\vfil\vfil\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D \macros
+%D {TitlePage, Topics, Topic, Subject}
+%D
+%D A presentation after loading this module looks like:
+%D
+%D \starttyping
+%D \TitlePage {About Whatever\\Topics}
+%D
+%D \Topics {Todays Talk}
+%D
+%D \Topic {Some topic}
+%D
+%D \Subject {Alfa}
+%D
+%D .....
+%D
+%D \Subject {Beta}
+%D
+%D .....
+%D \stoptyping
+
+%D \macros
+%D {definehead}
+%D
+%D The commands \type{\Topic} and \type{\Subject} are defined
+%D as copies of head. We use \type{\Nopic} for internal
+%D purposes.
+
+\definehead [Topic] [chapter]
+\definehead [Subject] [section]
+
+\definehead [Nopic] [title]
+
+%D \macros
+%D {setuphead}
+%D
+%D Because chapters and sections do not make sense in
+%D presentations, we use our own command for typesetting the
+%D titles. Sectionnumbers are of course hidden from viewing.
+%D Each topic is followed by a list of subjects that belong
+%D to the topic.
+
+\setuphead
+ [Topic, Nopic, Subject]
+ [command=\HeadLine,
+ page=yes,
+ style=\tfb,
+ after=\blank,
+ sectionnumber=no]
+
+\setuphead
+ [Topic]
+ [after=\PlaceSubjectList]
+
+\setuphead
+ [Subject]
+ [continue=no]
+
+%D \macros
+%D {framed, midalined}
+%D
+%D The command used to typeset the head lines is rather simple.
+%D We just center the framed title. The frame macro optimizes
+%D the alignment and at the same time enables us to typeset a
+%D nice colored rule.
+
+\def\HeadLine#1#2%
+ {\midaligned
+ {\framed
+ [framecolor=BackgroundColor,rulethickness=1pt,
+ width=.8\hsize,align=middle,strut=no]
+ {#2}}}
+
+%D \macros
+%D {setuplist}
+%D
+%D The subject list is automatically placed. We center each
+%D subject line by using one of the default alternatives (g). We
+%D could have said:
+%D
+%D \starttyping
+%D \setuplist
+%D [Subject]
+%D [alternative=none,
+%D command=\SubjectListLine,
+%D interaction=all]
+%D
+%D \def\SubjectListLine#1#2#3%
+%D {\midaligned{#2}}
+%D \stoptyping
+%D
+%D But why should we complicate things when we can use
+%D alternative~\type{g}. The test is only needed if one
+%D does not automatically goes a new page with each subject.
+
+\def\PlaceSubjectList%
+ {\blank
+ \determinelistcharacteristics[Subject]
+ % \ifnum\utilitylistlength>0 \placelist[Subject] \fi}
+ \doifmode{*list}{\placelist[Subject]}}
+
+\setuplist
+ [Subject, Topic]
+ [alternative=g,
+ interaction=all,
+ before=,
+ after=]
+
+% %D \macros
+% %D {setuptexttexts}
+% %D
+% %D The topics will be listed in the right edge, using:
+%
+% \setuptexttexts
+% [edge]
+% [][\TopicList]
+
+%D \macros
+%D {setuplist, placelist,startinteractionmenu}
+%D
+%D The actual topic list is typeset using a \type{\vbox}. We
+%D have to specify \type{criteriumcriterium=all} because otherwise no
+%D list will be typeset. (By default lists are typeset
+%D locally.)
+
+\startinteractionmenu[right]
+ \placelist
+ [Topic]
+ [alternative=f, % command, % none,
+ maxwidth=\hsize,
+ width=\hsize,
+ offset=0pt,
+ criterium=all,
+ align=left,
+ style=\setsmallbodyfont\bfx]
+\stopinteractionmenu
+
+\def\Topics#1% temporary hack
+ {\Nopic{#1}
+ \placelist[Topic][criterium=all]}
+
+\def\Subjects%
+ {}
+
+%D \macros
+%D {setuptexttexts, button}
+%D
+%D During a presentation, we want to use the cursor to point to
+%D parts of the text. Furthermore we want to be able to jump to
+%D the next page, without the need to move the cursor on buttons.
+%D Therefore we make the text part of the screen into an
+%D invisible button.
+
+\setuptexttexts
+ [\GotoNextPage][]
+
+\def\GotoNextPage
+ {\button[width=\hsize,height=\vsize,frame=off]{}[nextpage]}
+
+%D \macros
+%D {setupsubpagenumber}
+%D
+%D The left bottom navigation bar shows the subpages, which will
+%D be counted by text. One can change this in the preentation
+%D itself by saying \type {[way=byTopic]}.
+
+\setupsubpagenumber
+ [way=bytext, % Topic,
+ state=start]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-02.tex b/Master/texmf-dist/tex/context/base/s-pre-02.tex
new file mode 100644
index 00000000000..4cd450f84a1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-02.tex
@@ -0,0 +1,361 @@
+%D \module
+%D [ file=s-pre-02,
+%D version=1998.04.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 2,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This environment can be used to typeset interactive
+%D presentations. This module was first used at the 1998
+%D publishers conference of the European Portable Document
+%D Association (now merged into a graphics association).
+
+\usemodule[pre-general]
+
+%D \macros
+%D {setupbodyfont, switchtobodyfont, setuplayout}
+%D
+%D At \PRAGMA\ we prefer using the Lucida Bright fonts, but
+%D one can of course load another typeface.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+\setuplayout
+ [style=smallbodyfont]
+
+%D \macros
+%D {setuppapersize, setuplayout}
+%D
+%D The papersize suits the screen dimensions. The layout is
+%D rather simple. We use the whole width of the screen and only
+%D have navigational tools at the bottom of the screen.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [backspace=1cm,
+ topspace=1cm,
+ margin=0pt,
+ header=0pt,
+ footer=0pt,
+ bottomdistance=.875cm,
+ bottom=1cm,
+ width=fit,
+ height=fit]
+
+%D \macros
+%D {setupwhitespace, setuptyping}
+%D
+%D We don't have much height, so we use a more cramped
+%D spacing. Verbatim text looks better when indented.
+%D
+
+\setupwhitespace
+ [medium]
+
+\setuptyping
+ [margin=standard]
+
+%D \macros
+%D {definecolor, setupcolors}
+%D
+%D Of course we enable color. We define some logical colors,
+%D of which most default to the same green shade.
+
+\definecolor [BackgroundColor] [r=.8, g=.8, b=.8]
+\definecolor [OrnamentColor] [r= 0, g=.7, b=.4]
+
+\setupcolors
+ [state=start]
+
+%D \macros
+%D {setupinteraction, setupinteractionscreen}
+%D
+%D We still have to enable interaction mode. We go full
+%D screen!
+
+\setupinteraction
+ [state=start,
+ color=OrnamentColor,
+ contrastcolor=OrnamentColor]
+
+\setupinteractionscreen
+ [option=max,
+ width=fit,
+ height=fit]
+
+%D \macros
+%D {setupitemize}
+%D
+%D And why not bring some color in itemizations too?
+
+\setupitemize
+ [color=OrnamentColor]
+
+%D \macros
+%D {defineoverlay, setupbackgrounds}
+%D
+%D The navigational elements and the backgrounds are
+%D provided by \METAPOST.
+%D
+%D When \METAPOST\ is used, it makes sense to generate the
+%D graphics at runtime. This is supported when one enables
+%D system calls in the local \type {texmf.cnf} file and add the
+%D switch \type {\runMPgraphicstrue} to the local file \type
+%D {cont-sys.tex}. When direct processing is disabled or not
+%D supported, \TEXEXEC\ will take care of graphic generation.
+
+\startuniqueMPgraphic{PageBackground}
+ fill unitsquare
+ xyscaled(OverlayWidth,OverlayHeight)
+ withcolor OverlayColor ;
+ draw unitsquare
+ xyscaled(OverlayWidth,OverlayHeight)
+ enlarged (-2*OverlayLineWidth)
+ withpen pencircle scaled OverlayLineWidth
+ withcolor OverlayLineColor ;
+\stopuniqueMPgraphic
+
+\defineoverlay
+ [PageBackground]
+ [\uniqueMPgraphic{PageBackground}]
+
+\setupbackgrounds
+ [page]
+ [background=PageBackground,
+ backgroundcolor=BackgroundColor,
+ rulethickness=.125cm,
+ framecolor=OrnamentColor]
+
+%D \macros
+%D {setuptexttexts}
+%D
+%D By clicking on the text area, one goes to the next page.
+%D We hook this feature into the text backgrounds.
+
+\startuniqueMPgraphic{TextBackground}
+ draw unitsquare
+ xyscaled(OverlayWidth,OverlayHeight)
+ enlarged (4*OverlayLineWidth)
+ withpen pencircle scaled OverlayLineWidth
+ withcolor OverlayLineColor ;
+\stopuniqueMPgraphic
+
+\defineoverlay
+ [TextBackground]
+ [\uniqueMPgraphic{TextBackground}]
+
+\defineoverlay
+ [NextPage]
+ [\overlaybutton{nextpage}]
+
+\setupbackgrounds
+ [text]
+ [background={TextBackground,NextPage},
+ backgroundcolor=BackgroundColor,
+ rulethickness=.0625cm,
+ framecolor=OrnamentColor]
+
+%D \macros
+%D {setupinteractionmenu,startinteractionmenu}
+%D
+%D At the bottom of the screen, we show three buttons. These
+%D direct us to the previous or next jump or exit the document.
+
+\setupMPvariables[RightArrow][height=\bottomheight]
+\setupMPvariables[LeftArrow] [height=\bottomheight]
+\setupMPvariables[Circle] [height=\bottomheight]
+\setupMPvariables[UpArrow] [height=\bottomheight]
+
+\startuniqueMPgraphic{RightArrow}{height}
+ z1=(0,0) ; z2=(\MPvar{height},.5y3) ; z3=(0,\MPvar{height}) ;
+ drawfill z1--z2--z3--cycle
+ withpen pencircle scaled (\MPvar{height}/5)
+ withcolor \MPcolor{OrnamentColor} ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{LeftArrow}{height}
+ z1=(\MPvar{height},0) ; z2=(0,.5y3) ; z3=(\MPvar{height},\MPvar{height}) ;
+ drawfill z1--z2--z3--cycle
+ withpen pencircle scaled (\MPvar{height}/5)
+ withcolor \MPcolor{OrnamentColor} ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{Circle}{height}
+ drawfill fullcircle scaled \MPvar{height}
+ withpen pencircle scaled (\MPvar{height}/5)
+ withcolor \MPcolor{OrnamentColor} ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{UpArrow}{height}
+ z1=(0,0) ; z2=(\MPvar{height},0) ; z3=(.5x2,\MPvar{height}) ;
+ drawfill z1--z2--z3--cycle
+ withpen pencircle scaled (\MPvar{height}/5)
+ withcolor \MPcolor{OrnamentColor} ;
+\stopuniqueMPgraphic
+
+\setupinteractionmenu
+ [bottom]
+ [state=start,
+ frame=off,
+ width=.3\textwidth,
+ height=\bottomheight]
+
+\setupinteraction
+ [menu=on]
+
+\def\WhateverButton
+ {\doifreferencefoundelse{Whatever}
+ {\raw [Whatever] \uniqueMPgraphic{UpArrow} \\}
+ {}}
+
+\startinteractionmenu[bottom]
+ \but [Topics] \\ % secret button
+ \hfill
+ \WhateverButton % user specific
+ \kern2\bottomheight
+ \raw [previouspage] \uniqueMPgraphic{LeftArrow} \\
+ \kern.5\bottomheight
+ \raw [CloseDocument] \uniqueMPgraphic{Circle} \\
+ \kern.5\bottomheight
+ \raw [nextpage] \uniqueMPgraphic{RightArrow} \\
+ \kern.5\bottomheight
+\stopinteractionmenu
+
+%D \macros
+%D {TitlePage, Topics, Topic, Subject}
+%D
+%D A presentation after loading this module looks like:
+%D
+%D \starttyping
+%D \TitlePage {About Whatever\\Topics}
+%D
+%D \Topics {Todays Talk}
+%D
+%D \Topic {Some topic}
+%D
+%D .....
+%D
+%D \Topic {Next Topic}
+%D
+%D .....
+%D \stoptyping
+
+%D \macros
+%D {StartTitlePage, TitlePage}
+%D
+%D The titlepage is rather simple and can be typeset in two
+%D ways:
+%D
+%D \starttyping
+%D \StartTitlePage
+%D text \\ text \\ text
+%D \StopTitlepage
+%D \stoptyping
+%D
+%D or as one||liner:
+%D
+%D \starttyping
+%D \TitlePage{text\\text\\text}
+%D \stoptyping
+%D
+%D The first alternative can be used for more complicated
+%D title pages.
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \let\\=\vfil}
+
+\def\StopTitlePage%
+ {\vfil\vfil\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D \macros
+%D {definehead}
+%D
+%D The commands \type{\Topic} and \type{\Subject} are defined
+%D as copies of head. We use \type{\Nopic} for internal
+%D purposes.
+
+\definehead [Topic] [chapter]
+\definehead [Subject] [section]
+
+\definehead [Nopic] [title]
+
+%D \macros
+%D {setuphead}
+%D
+%D We use our own command for typesetting the titles. We hide
+%D sectionnumbers from viewing. Each topic is followed by a
+%D list of subjects that belong to the topic.
+
+\setuphead
+ [Topic, Nopic]
+ [after={\blank[3*medium]},
+ number=no,
+ style=\tfb,
+ page=yes,
+ alternative=middle]
+
+\setuphead
+ [Subject]
+ [after=\blank,
+ number=no,
+ page=yes,
+ continue=no,
+ style=\tfa]
+
+%D \macros
+%D {setuplist}
+%D
+%D When found, the subject list is automatically placed
+%D after the topic head.
+
+\setuplist
+ [Topic,Subject]
+ [alternative=g,
+ interaction=all,
+ before=,
+ after=]
+
+\setuplist
+ [Topic]
+ [criterium=all]
+
+\def\Topics#1%
+ {\determinelistcharacteristics[Topic]
+ \doifmode{*list}
+ {\Nopic[Topics]{#1}
+ \startcolumns
+ \placelist[Topic]
+ \stopcolumns}}
+
+\setuplist
+ [Subject]
+ [criterium=Topic]
+
+\def\Subjects%
+ {\determinelistcharacteristics[Subject]
+ \doifmode{*list}
+ {\placelist[Subject]}}
+
+\setuphead
+ [Topic]
+ [after={\blank[3*medium]\Subjects}]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-03.tex b/Master/texmf-dist/tex/context/base/s-pre-03.tex
new file mode 100644
index 00000000000..c7420ba3779
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-03.tex
@@ -0,0 +1,237 @@
+%D \module
+%D [ file=s-pre-03,
+%D version=1998.09.06,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 3,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is the third environment for typesetting interactive
+%D presentations. I used this style for a talk on \TEX\ and
+%D \JAVASCRIPT\ at \TUG98, mainly because I didn't want to
+%D use the same style three times. Therefore this is a rather
+%D simple, silly style.
+
+\usemodule[pre-general]
+
+%D \macros
+%D {setupbodyfont}
+%D
+%D We use a large bodyfont. Combined with the fancy
+%D background, this does not leave that much room for text, but
+%D presentations should use much text anyway.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+%D \macros
+%D {setuppapersize,setuplayout,setupinteractionscreen}
+%D
+%D The page dimensions are set to size \type {S6}, being
+%D 600pt by 450pt. We use wide margins and discard headers
+%D and footers. We also launch the document full screen.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=middle,
+ height=middle,
+ topspace=75pt,
+ backspace=100pt,
+ header=0pt,
+ footer=0pt]
+
+\setupinteractionscreen
+ [option=max]
+
+%D \macros
+%D {setupcolors,definecolor}
+%D
+%D Next, color support is turned on and a dark red color is
+%D defined. Other red shades will be derived from this one
+%D color.
+
+\setupcolors
+ [state=start]
+
+\definecolor [PageColor] [black]
+\definecolor [BackgroundColor] [s=.85]
+\definecolor [OrnamentColor] [r=.75]
+
+%D \macros
+%D {setupinteraction}
+%D
+%D We turn on interaction mode and use the same color for
+%D hyperlinks and redundant hyperlinks (the ones that point
+%D to the current page).
+
+\setupinteraction
+ [state=start,
+ contrastcolor=OrnamentColor,
+ color=OrnamentColor]
+
+%D \macros
+%D {defineoverlay, setupbackgrounds}
+%D
+%D The joke in this presentation is the elliptical shape of
+%D which the bottom part includes a page indication.
+
+\defineoverlay
+ [PageShape][\useMPgraphic{PageShape}]
+
+% \startuseMPgraphic{PageShape}
+% lin := 20pt ; off := .75lin ;
+% wid := \overlaywidth ; hei := \overlayheight ;
+% pos := \currentpage ; tot := \lastpage ;
+% path bb; bb := unitsquare xscaled wid yscaled hei ;
+% filldraw bb withcolor \MPcolor{PageColor} ;
+% pickup pencircle xscaled .5lin yscaled lin rotated 45 ;
+% pair r, t, l, b ;
+% r := (wid-off,.5hei) ; t := (.5wid,hei-off) ;
+% l := (off,.5hei) ; b := (.5wid,off) ;
+% path p; p := superellipse(r,t,l,b,.8) ;
+% fill p withcolor \MPcolor{Backgroundcolor} ;
+% draw p withcolor \MPcolor{OrnamentColor} ;
+% color contrastcolor ; contrastcolor = 2/3 * \MPcolor{OrnamentColor} ;
+% if (pos>0) and (tot>0):
+% pair pa ; pa := point 5 of p ;
+% pair pb ; pb := point 7 of p ;
+% draw pa withcolor contrastcolor ;
+% draw pb withcolor contrastcolor ;
+% len := 2/tot ;
+% pair pa ; pa := point (5+len*pos) of p ;
+% pair pb ; pb := point (5+len*(pos-1)) of p ;
+% p := p cutafter pa ;
+% p := p cutbefore pb ;
+% draw p withcolor contrastcolor ;
+% fi ;
+% setbounds currentpicture to bb ;
+% \stopuseMPgraphic
+
+\startuseMPgraphic{PageShape}
+ StartPage ;
+ path p ; pair pa, pb ; numeric len ; color contrastcolor ;
+ fill Page withcolor \MPcolor {PageColor} ;
+ pickup pencircle rotated 45 xscaled 10pt yscaled 20pt ;
+ p := Page enlarged (-10pt,-15pt) superellipsed .8 ;
+ p := p shifted (-1.5pt,0) ; % looks better
+ fill p withcolor \MPcolor{BackgroundColor} ;
+ draw p withcolor \MPcolor{OrnamentColor} ;
+ contrastcolor = 2/3 * \MPcolor{OrnamentColor} ;
+ if (PageNumber>0) and (NOfPages>0):
+ draw point 5 of p withcolor contrastcolor ;
+ draw point 7 of p withcolor contrastcolor ;
+ len := 2/NOfPages ;
+ pa := point (5+len*PageNumber) of p ;
+ pb := point (5+len*(PageNumber-1)) of p ;
+ draw (p cutafter pa) cutbefore pb
+ withcolor contrastcolor ;
+ fi ;
+ StopPage ;
+\stopuseMPgraphic
+
+%D We use the viewer provided feature to go to the previous or
+%D next page.
+
+\defineoverlay[PrevButton][\overlaybutton{PreviousPage}]
+\defineoverlay[NextButton][\overlaybutton{NextPage}]
+
+\setupbackgrounds
+ [page]
+ [background={PageShape,PrevButton}]
+
+\setupbackgrounds
+ [text][text]
+ [background=NextButton]
+
+% or using hard coded next/prev pages:
+%
+% \defineoverlay[PrevButton][\overlaybutton{previouspage}]
+% \defineoverlay[NextButton][\overlaybutton{nextpage}]
+%
+% \setupbackgrounds[state=repeat]
+% \setupbackground[text][text][background=NextButton]
+%
+% or simply (using an repeated layer):
+%
+% \setupbackground[text][background=NextButton]
+
+%D \macros
+%D {definehead, setuphead}
+%D
+%D Like the other presentation styles, we use \type {\Topic}
+%D instead of \type {\chapters}. This time we don't provide
+%D an additional sectioning. So we have:
+%D
+%D \starttyping
+%D \TitlePage{How nice}
+%D
+%D \Topics{This is about ...}
+%D
+%D \Topic{The first one}
+%D
+%D \Topic{Another one}
+%D \stoptyping
+
+\definehead [Topic] [chapter]
+\definehead [Nopic] [title]
+
+\setuphead
+ [Topic,Nopic]
+ [after={\blank[3*medium]},
+ number=no,
+ style=\tfb,
+ page=yes,
+ alternative=middle]
+
+\setuplist
+ [Topic]
+ [alternative=g,
+ interaction=all,
+ before=,
+ after=]
+
+\def\Subject
+ {\Topic}
+
+%D The tables of contents is associated with \type
+%D {\Topics}.
+
+\def\Topics#1%
+ {\Nopic[Topics]{#1}
+ \placelist[Topic][criterium=all]}
+
+\def\Subjects
+ {}
+
+%D Instead of \type {\TitlePage}, one can use the pair
+%D \type {\StartTitlePage} -- \type {\StopTitlePage}:
+%D
+%D \starttyping
+%D \StartTitlePage
+%D A Self Made Title
+%D \StopTitlePage
+%D \stoptyping
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \def\\{\vfil\bfb\setupinterlinespace}}
+
+\def\StopTitlePage%
+ {\vfil\vfil\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-04.tex b/Master/texmf-dist/tex/context/base/s-pre-04.tex
new file mode 100644
index 00000000000..29b040a8b89
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-04.tex
@@ -0,0 +1,357 @@
+%D \module
+%D [ file=s-pre-04,
+%D version=1998.09.06,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 4,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[pre-general]
+
+%D \macros
+%D {setupbodyfont}
+%D
+%D This is just another environment for typesetting interactive
+%D presentations. I wrote this module on behalf of a course I
+%D gave for the United Kingdom \TeX\ users group.
+
+\setupbodyfont[ams,pos,14.4pt]
+
+%D \macros
+%D {setupcolors,definecolor}
+%D
+%D I started using dark blue for the navigational elements. In
+%D that context, dark red is a logical choice for the contrast
+%D color. While playing around with the navigational elements
+%D I decided to use the not so dominant color yellow for the
+%D status bar.
+%D
+%D A few days before I wrote this style, the recent acquisition
+%D of Mondriaans last painting by the Dutch governement was a
+%D hot topic in the dutch news scenary. Therefore I decided to
+%D replace the rather dull title page by something more
+%D colorful, in mondriaan colors, but far more random than any
+%D of his paintings. For consistence we remap the already
+%D defined primary colors.
+
+\setupcolors [state=start]
+
+\definecolor [NoneColor] [s=.6]
+\definecolor [GotoColor] [b=.6] \definecolor[blue] [GotoColor]
+\definecolor [ExitColor] [r=.6] \definecolor[red] [ExitColor]
+\definecolor [JumpColor] [s=.6]
+\definecolor [UserColor] [g=.6] \definecolor[green] [UserColor]
+\definecolor [StepColor] [r=.6,g=.6] \definecolor[yellow][StepColor]
+
+\definecolor [PageColor] [s=.80] \definecolor[gray] [PageColor]
+\definecolor [TextColor] [s=.90]
+
+%D \macros
+%D {setuppapersize}
+%D
+%D As usual, we take a screen oriented paper size:
+
+\setuppapersize
+ [S6][S6]
+
+%D \macros
+%D {setuplayout,setupinteractionscreen}
+%D
+%D The layout definition fits into this $600\times450$ point
+%D area, but the dimensions are somewhat diffused by the text
+%D background offset.
+
+\setuplayout
+ [width=530pt,
+ height=400pt,
+ header=0pt,
+ footer=0pt,
+ backspace=15pt,
+ topspace=15pt,
+ bottomdistance=15pt,
+ bottom=10pt,
+ margin=0pt,
+ rightedgedistance=15pt,
+ rightedge=30pt]
+
+\setupinteractionscreen
+ [option=max]
+
+%D \macros
+%D {setupbackgrounds}
+%D
+%D Both the page and the text area have a gray background.
+%D The \type {[text,text]} area also has an offset. Later we
+%D will see that we have to compensate for that in the
+%D navigational areas.
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=PageColor]
+
+\setupbackgrounds
+ [text][text]
+ [background=color,
+ backgroundcolor=TextColor,
+ backgroundoffset=5pt]
+
+%D \macros
+%D {setupinteraction}
+%D
+%D For convenient navigation, we turn on interaction.
+
+\setupinteraction
+ [state=start,
+ menu=on,
+ color=UserColor,
+ contrastcolor=NoneColor]
+
+%D \macros
+%D {setupsubpagenumber}
+%D
+%D When navigating the document, we keep the title page out
+%D of sight, therefore we use sub page numbers.
+
+\setupsubpagenumber
+ [state=start,
+ way=bytext]
+
+%D \macros
+%D {setupinteractionmenu}
+%D
+%D There is only one interaction menu, located in the right
+%D edge of the screen. Both offsets enlarge the edge by the
+%D same amount as the text background offset.
+
+\setupinteractionmenu
+ [right]
+ [state=start,
+ frame=off,
+ strut=no,
+ offset=0pt,
+ inbetween=,
+ bottomoffset=-5pt,
+ topoffset=-5pt]
+
+%D \macros
+%D {startinteractionmenu}
+%D
+%D The menu itself is not that spectacular. We use the
+%D start||stop alternative for setting the content. The macro
+%D \type {\interactioncolor} expands into either the
+%D interaction color or the contrast color, the latter only
+%D when no jump is possible.
+
+\startinteractionmenu[right]
+ \setupinteraction[color=GotoColor]
+ \but [previoussubpage] \Triangle {90}\framedwidth\interactioncolor \\
+ \vskip10pt
+ \but [nextsubpage] \Triangle{270}\framedwidth\interactioncolor \\
+ \vfill
+ \but [PreviousJump] \Triangle{180}\framedwidth{NoneColor} \\
+ \vskip-5pt
+ \but [NextJump] \Triangle {0}\framedwidth{NoneColor} \\
+\stopinteractionmenu
+
+%D \macros
+%D {setupinteractionbar}
+%D
+%D The interaction bar at the bottom is also larger than the
+%D normal width of the bottom area.
+
+\setupinteractionbar
+ [alternative=f,
+ width=\textwidth,
+ height=\bottomheight,
+ distance=10pt,
+ color=NoneColor,
+ contrastcolor=StepColor]
+
+%D \macros
+%D {setupbottomtexts}
+%D
+%D The bar is centered in the middle.
+
+\setupbottomtexts
+ [\interactionbar]
+
+%D We can exit viewing with a close button, located on the
+%D rightmost bottom area.
+
+\def\CloseButton
+ {\button
+ [width=\rightedgewidth,height=\bottomheight,offset=overlay,
+ background=color,backgroundcolor=ExitColor,frame=off]
+ {}%
+ [CloseDocument]}
+
+\setupbottomtexts
+ [edge][][\CloseButton]
+
+%D \macros
+%D {definesymbol,setupitemize}
+%D
+%D Because some prominent things are rectangular or triangular,
+%D we prefer some different symbols in itemizations:
+
+\definesymbol[1][$\blacktriangleright$]
+\definesymbol[2][$\blacktriangledown$]
+\definesymbol[3][$\blacktriangleright$]
+\definesymbol[4][$\blacktriangledown$]
+
+\setupitemize[each][color=NoneColor]
+
+%D \macros
+%D {TitlePage,defineoverlay,button,setupalign,
+%D setupbackgrounds,setupinteraction,setupinteractionbar,
+%D startstandardmakeup,switchtobodyfont,setupinterlinespace}
+%D
+%D Now the main layout and navigational definitions are
+%D done, it makes sense to define and tune some structuring
+%D commands. First we build the titlepage.
+
+\defineoverlay [TitleGraphic] [\useMPgraphic{title}]
+\defineoverlay [NextPage] [\overlaybutton{nextpage}]
+
+\def\StartTitlePage
+ {\setupbackgrounds[page][background={color,TitleGraphic,NextPage}]
+ \setupbackgrounds[text][text][background=]
+ \setupinteraction[menu=off]
+ \setupinteractionbar[state=stop]
+ \startstandardmakeup
+ \switchtobodyfont[24pt]
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \let\\=\vfil}
+
+\def\StopTitlePage
+ {\vfil\vfil\vfil
+ \stopstandardmakeup
+ \setupinteraction[menu=on]
+ \setupinteractionbar[state=start]
+ \setupbackgrounds[page][background=color]
+ \setupbackgrounds[text][text][background=color]
+ \setupsubpagenumber[reset]}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D \macros
+%D {Topic, Nopic, Subject,
+%D definehead, setuphead}
+%D
+%D We use \type {\Topic} and \type {\Subject} instead of
+%D chapters and sections. The \type {\Nopic} alternative is
+%D meant for internal use.
+
+\definehead [Topic] [chapter]
+\definehead [Nopic] [title]
+\definehead [Subject] [section]
+
+\setuphead
+ [Topic, Nopic]
+ [after={\blank[3*medium]},
+ number=no,
+ style=\tfb,
+ page=yes,
+ alternative=middle]
+
+\setuphead
+ [Subject]
+ [after=\blank,
+ number=no,
+ page=yes,
+ continue=no,
+ style=\tfa]
+
+%D \macros
+%D {Topics, Subjects,
+%D setuplist, placelist, startcolumns}
+%D
+%D This style is meant for the more large presentations, and
+%D therefore provided for a list of topics as well as local
+%D lists of subjects. When many topics are introduces, the
+%D list is typeset in columns.
+
+\setuplist
+ [Topic,Subject]
+ [alternative=g,
+ interaction=all,
+ before=,
+ after=]
+
+\setuplist
+ [Topic]
+ [criterium=all]
+
+\def\Topics#1%
+ {\determinelistcharacteristics[Topic]
+ \ifnum\utilitylistlength>0
+ \Nopic[Topics]{#1}
+ \ifnum\utilitylistlength>12
+ \startcolumns
+ \placelist[Topic]
+ \stopcolumns
+ \else
+ \placelist[Topic]
+ \fi
+ \fi}
+
+\def\Subjects%
+ {\placelist[Subject]}
+
+%D Last we define the overlays. Look at the way colors are
+%D linked into the macros.
+
+\startMPinclusions
+ def triangle (expr wid, rot, col) =
+ x1 := x3 := y1 := 0 ; x2 := y3 := wid ; y2 := .5y3 ;
+ fill (z1--z2--z3--cycle) rotated rot withcolor col ;
+ currentpicture := currentpicture xysized (wid,wid) ;
+ enddef ;
+\stopMPinclusions
+
+\setupMPvariables
+ [triangle]
+ [width=1cm,
+ rotation=0,
+ color=black]
+
+\startuniqueMPgraphic{triangle}{width,rotation,color}
+ triangle(\MPvar{width},\MPvar{rotation},\MPvar{color}) ;
+\stopuniqueMPgraphic
+
+\def\Triangle#1#2#3%
+ {\uniqueMPgraphic{triangle}{rotation=#1,width=#2,color=#3}}
+
+\startuseMPgraphic{title} % can be simplified with "randomized"
+ color c ; path p ;
+ for i=1 upto 250 :
+ x0 := uniformdeviate \overlaywidth ;
+ y0 := uniformdeviate \overlayheight ;
+ sx := uniformdeviate 20 ;
+ sy := uniformdeviate 20 ;
+ cc := round(uniformdeviate 2) ;
+ if cc=0 : c := \MPcolor{GotoColor} fi ;
+ if cc=1 : c := \MPcolor{ExitColor} fi ;
+ if cc=2 : c := \MPcolor{StepColor} fi ;
+ qq := round(uniformdeviate 1) ;
+ if qq=0 :
+ p := unitsquare xscaled sx yscaled sy ;
+ else :
+ rr := round(uniformdeviate 3) * 90 ;
+ x1 := x3 := y1 := 0 ; x2 := y3 := sx; y2 := .5y3 ;
+ p := (z1--z2--z3--cycle) rotated rr ;
+ fi ;
+ fill p shifted z0 withcolor c ;
+ endfor ;
+\stopuseMPgraphic
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-05.tex b/Master/texmf-dist/tex/context/base/s-pre-05.tex
new file mode 100644
index 00000000000..f095ae09156
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-05.tex
@@ -0,0 +1,220 @@
+%D \module
+%D [ file=s-pre-05,
+%D version=1998.12.12,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 5,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[pre-general]
+
+%D As all styles sofar, this one has the same structuring
+%D commands.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+\setupcolors [state=start]
+
+\definecolor [BackgroundColor] [s=.95]
+\definecolor [OrnamentColor] [r=.6,g=.7,b=.8]
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=430pt,
+ height=400pt,
+ header=0pt,
+ footer=0pt,
+ margin=0pt,
+ backspace=25pt,
+ topspace=25pt,
+ rightedgedistance=20pt,
+ rightedge=110pt]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupbackgrounds
+ [state=repeat]
+
+\setupbackgrounds
+ [page]
+ [backgroundcolor=white]
+
+\setupbackgrounds
+ [text][text]
+ [background={HashFrameA,NextPage},
+ backgroundoffset=20pt]
+
+\defineoverlay
+ [HashFrameA]
+ [\useMPgraphic{HashFrameA}]
+
+\defineoverlay
+ [HashFrameB]
+ [\useMPgraphic{HashFrameB}]
+
+\setupinteraction
+ [state=start,
+ menu=on,
+ color=OrnamentColor,
+ contrastcolor=OrnamentColor]
+
+%D Watch how we use a list alternative that matches the
+%D menu.
+
+\setupinteractionmenu
+ [right]
+ [background=HashFrameB,
+ style=smallbold,
+ frame=off,
+ offset=10pt,
+ height=35pt,
+ before=,
+ after=,
+ inbetween=\endgraf,
+ width=\rightedgewidth]
+
+\startinteractionmenu[right]
+ \placelist
+ [Topic]
+ [criterium=all,
+ alternative=right,
+ maxwidth=.8\rightedgewidth,
+ interaction=all,
+ before=,
+ after=]
+ \vfill
+ \setupinteractionmenu
+ [right]
+ [height=30pt]
+ \but [CloseDocument] Close \\
+\stopinteractionmenu
+
+\setupwhitespace
+ [big]
+
+\setupblank
+ [big]
+
+%D \macros
+%D {TitlePage}
+%D
+%D Now the main layout and navigational definitions are
+%D done, it makes sense to define and tune some structuring
+%D commands. First we build the titlepage.
+
+\defineoverlay [TitleGraphic] [\useMPgraphic{TitleGraphic}]
+\defineoverlay [NextPage] [\overlaybutton{forward}]
+
+\def\StartTitlePage%
+ {\setupbackgrounds[page][background={color,TitleGraphic,NextPage}]
+ \setupbackgrounds[text][text][background=]
+ \setupinteraction[menu=off]
+ \setupinteractionbar[state=stop]
+ \setuplayout[width=550pt,rightedge=0pt]
+ \startstandardmakeup
+ \switchtobodyfont[24pt]
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \let\\=\vfil}
+
+\def\StopTitlePage%
+ {\vfil\vfil\vfil
+ \stopstandardmakeup
+ \setuplayout[width=430pt,rightedge=110pt]
+ \setupinteraction[menu=on]
+ \setupinteractionbar[state=start]
+ \setupbackgrounds[page][background=color]
+ \setupbackgrounds[text][text][background={HashFrameA,NextPage}]}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D \macros
+%D {Topics,Subjects}
+%D
+%D Since the lists are in the menu, we don't honor list
+%D placement macros.
+
+\def\Topics#1{}
+\def\Subjects{}
+
+%D \macros
+%D {Topic, Nopic, Subject}
+%D
+%D Since t his style is meant for rather flat structured
+%D documents, only \type {\Topic} makes sense.
+
+\definehead [Topic] [chapter]
+\definehead [Nopic] [title]
+\definehead [Subject] [section]
+
+\setuphead
+ [Topic, Nopic]
+ [after={\blank[3*medium]},
+ number=no,
+ style=\tfb,
+ page=yes,
+ alternative=middle]
+
+\setuphead
+ [Subject]
+ [after=\blank,
+ number=no,
+ page=yes,
+ continue=no,
+ style=\tfa]
+
+%D We use only one kind of base graphic, which is sligthly
+%D tuned for the different usage.
+
+\startMPinclusions
+ def random_hash_frame (expr width, height, offset, linewidth ) =
+
+ def delta = ((uniformdeviate .5offset) + .25offset) enddef ;
+ x1 := offset ; y1 := offset ; x2 := width-offset ; y2 := height-offset ;
+
+ drawoptions(withpen pencircle scaled linewidth withcolor \MPcolor{BackgroundColor}) ;
+ fill z1--(x2,y1)--z2--(x1,y2)--cycle ;
+
+ drawoptions(withpen pencircle scaled linewidth withcolor \MPcolor{OrnamentColor}) ;
+ draw (x1-delta,y1)--(x2+delta,y1) ;
+ draw (x2,y1-delta)--(x2,y2+delta) ;
+ draw (x2+delta,y2)--(x1-delta,y2) ;
+ draw (x1,y2+delta)--(x1,y1-delta) ;
+
+ drawoptions();
+ setbounds currentpicture to unitsquare xscaled width yscaled height ;
+ enddef ;
+\stopMPinclusions
+
+\startuseMPgraphic{HashFrameA}
+ random_hash_frame(OverlayWidth,OverlayHeight,15pt,2pt) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{HashFrameB}
+ random_hash_frame(OverlayWidth,OverlayHeight, 5pt,2pt) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{TitleGraphic}
+ for i=1 upto 300 :
+ offset := uniformdeviate 10pt ;
+ width := 2*offset + 30pt + uniformdeviate 30pt ;
+ height := 2*offset + 10pt + uniformdeviate 10pt ;
+ addto currentpicture also
+ image(random_hash_frame(width,height,offset,1pt)) shifted
+ (uniformdeviate OverlayWidth, uniformdeviate OverlayHeight) ;
+ endfor ;
+\stopuseMPgraphic
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-06.tex b/Master/texmf-dist/tex/context/base/s-pre-06.tex
new file mode 100644
index 00000000000..d3b99d9b77e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-06.tex
@@ -0,0 +1,295 @@
+%D \module
+%D [ file=s-pre-06,
+%D version=1999.04.28,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 6,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D I wrote this sixth presentation style on behalf of a
+%D presentation at Bachotek~'99. The joke in this style is
+%D (ab)using the Antikwa Torunska, a rather Polish font. When I
+%D was first confronted with this font, the backward slant
+%D stoke me as very characteristic.
+%D
+%D Each page has a slightly different background consisting of
+%D three O's. Although \TEX\ could do the randomization,
+%D scaling and placement, I prefered to use \METAPOST. The
+%D backward slant is also reflected in the stepwise increasing
+%D left margin. Due to this characteristic and the trick used,
+%D this style is only suited for simple presentations, using
+%D itemizations.
+
+\usemodule[pre-general]
+
+%D \macros
+%D {setupbodyfont}
+%D
+%D As said, we will use the Antikwa Torunska, and because we
+%D want it to show up well, we use it large.
+
+\setupbodyfont
+ [ant,14.4pt]
+
+%D \macros
+%D {definecolor, setupcolors}
+%D
+%D Thus style only uses gray scales, but nevertheless we turn
+%D on color. We only use a few logical color names.
+
+\setupcolors
+ [state=start]
+
+\definecolor [BackgroundColor] [s=.8]
+\definecolor [ContrastColor] [s=.9]
+\definecolor [InteractionColor] [s=.6]
+
+%D \macros
+%D {setuppapersize}
+%D
+%D As (nearly) always, we use a 600 pt times 450 pt screen
+%D width, mapped on ditto paper dimensions.
+
+\setuppapersize
+ [S6][S6]
+
+%D \macros
+%D {setuplayout}
+%D
+%D The layout is rather symmetrical. We don't use headers and
+%D footers, and thereby automatically turn off the page
+%D numbering: no room, no number. We use the bottom to present
+%D a rather trivial menu.
+
+\setuplayout
+ [backspace=2cm,
+ topspace=2cm,
+ width=middle,
+ header=0pt,
+ height=middle,
+ footer=0pt,
+ bottomdistance=.5cm,
+ bottom=1cm]
+
+%D \macros
+%D {setupinteractionmenu,startinteractionmenu}
+%D
+%D This menu is slighly moved to the right because that looks
+%D better. The menu itself has one goto (\type {\got}) entry,
+%D which is forced to the right.
+
+\setupinteractionmenu
+ [bottom]
+ [rightoffset=-1cm]
+
+\startinteractionmenu[bottom]
+ \hfill \got [CloseDocument] \bfd Quit \\
+\stopinteractionmenu
+
+%D \macros
+%D {setupbackgrounds}
+%D
+%D Page background are calculated at each page, opposite to the
+%D other backgrounds, that are reused and only calculated when
+%D \CONTEXT\ is explictly told to do so. There are three
+%D overlays: a gray fill, the graphic, and a button that
+%D circulates the pages.
+
+\setupbackgrounds
+ [page]
+ [background={color,Joke,GoAround},
+ backgroundcolor=BackgroundColor]
+
+%D \macros
+%D {defineoverlay}
+%D
+%D The \type {forward} reference action circulates over the
+%D pages, so, at the last page, we are led back to the first.
+
+\defineoverlay [GoAround] [\overlaybutton{forward}]
+
+%D The joke is a simple \METAPOST\ routine. The picture is
+%D actually larger than the screen, but is clipped of when
+%D included.
+
+\defineoverlay [Joke] [\useMPgraphic{background}]
+
+\startuseMPgraphic{background}
+ input mp-tool ;
+ width := \overlaywidth ;
+ height := \overlayheight ;
+ picture p ; p := char 79 infont "\truefontname{Regular}" scaled 1 ;
+ pwidth := xpart urcorner bbox p - xpart llcorner bbox p ;
+ pheight := ypart urcorner bbox p - ypart llcorner bbox p ;
+ def do (expr r) =
+ addto currentpicture also p shifted - center p scaled r
+ xscaled (width/pwidth) yscaled (height/pheight)
+ withcolor \MPcolor{ContrastColor} ;
+ enddef ;
+ do (0.9+uniformdeviate0.1) ;
+ do (1.4+uniformdeviate0.1) ;
+ do (1.9+uniformdeviate0.1) ;
+\stopuseMPgraphic
+
+%D \macros
+%D {setupinteraction,setupinteractionscreen}
+%D
+%D We did not yet turn on the interaction, so let's do that
+%D now. When opened, the document will fil the screen.
+
+\setupinteraction
+ [state=start,
+ color=InteractionColor,
+ contrastcolor=InteractionColor,
+ menu=on]
+
+\setupinteractionscreen
+ [option=max]
+
+%D \macros
+%D {TitlePage, Topics, Topic}
+%D
+%D A presentation normally consists of a title page, a list of
+%D topics, and the content itself. In this style, a further
+%D subdivision does not make sense, but because we want to be
+%D compatible with the other styles, they are added. A
+%D presentation looks like:
+%D
+%D \starttyping
+%D \usemodule[pre-antikwa]
+%D
+%D \startext
+%D
+%D \TitlePage{The Title}
+%D
+%D \Topics{Contents}
+%D
+%D \Topic{Some Topic}
+%D
+%D \startitemize
+%D \item first
+%D \item second
+%D \stopitemize
+%D
+%D \Topic{Some Topic}
+%D
+%D ...
+%D
+%D \stoptext
+%D \stoptyping
+
+%D \macros
+%D {definehead, Topic, Subject}
+%D
+%D We use dedicated sectioning commands.
+
+\definehead [Topic] [chapter]
+\definehead [Subject] [section]
+
+\definehead [Nopic] [title]
+
+%D \macros
+%D {setuphead}
+%D
+%D We turn of numbering. The assignment to \type {after} takes
+%D care of the increasing indentation. This indentation is the
+%D only low level \TEX\ code needed. Including this
+%D functionality in the core of \CONTEXT\ is not that useful
+%D and I would forget about this feature being present anyway.
+
+\setuphead
+ [Topic, Nopic, Subject]
+ [number=no,
+ after={\blank[2*big]\ToTheLeft\everypar{\ToTheRight}}]
+
+%D After section titles we set the \type {\leftskip} to a value
+%D that suits the Antikwa slant.
+
+\def\ToTheLeft%
+ {\gdef\LeftSkip{30}%
+ \rightskip0pt\relax
+ \leftskip30pt\relax}
+
+%D Each new paragraph adds to the \type {\leftskip}.
+
+\def\ToTheRight%
+ {\doglobal\increment(\LeftSkip,20)%
+ \leftskip=\LeftSkip pt\relax}
+
+%D \macros
+%D {Topics}
+%D
+%D The \type {\Topics} command uses a bot of low level
+%D \CONTEXT. We could have done with:
+%D
+%D \starttyping
+%D \def\Topics#1%
+%D {\Nopic[Topics]{#1}
+%D \placelist[Topic][criteriumcriterium=all]}
+%D \stoptyping
+%D
+%D but the next alternative sort of ignores this command when
+%D no list is found.
+
+\def\Topics#1%
+ {\determinelistcharacteristics[Topic]
+ \ifcase\utilitylistlength\else
+ \Nopic[Topics]{#1}
+ \placelist[Topic][criterium=all]
+ \fi}
+
+%D \macros
+%D {setuplist}
+%D
+%D We use the single item command to achieve a result similar
+%D to the itemizations.
+
+\setuplist
+ [Topic]
+ [alternative=command,
+ command=\TopicListCommand]
+
+\def\TopicListCommand#1#2#3%
+ {\item#2\par}
+
+%D A dummy command, needed to be compatible with the other
+%D presentation styles.
+
+\def\Subjects%
+ {}
+
+%D \macros
+%D {StartTitlePage}
+%D
+%D We use a nested \type {\everypar}; everything in there
+%D will be put in front of each paragraph. The nesting prevents
+%D the first paragraph from indenting. The struts give the
+%D lines a decent height, which looks better inrelation to the
+%D next pages.
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \bfd\setupinterlinespace
+ \everypar{\everypar{\advance\leftskip30pt\relax}}
+ \let\\=\blank
+ \begstrut}
+
+\def\StopTitlePage%
+ {\endstrut
+ \vfill
+ \stopstandardmakeup}
+
+%D \macros
+%D {TitlePage}
+%D
+%D The title page can be generated with one command:
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-07.tex b/Master/texmf-dist/tex/context/base/s-pre-07.tex
new file mode 100644
index 00000000000..65514403a0a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-07.tex
@@ -0,0 +1,196 @@
+%D \module
+%D [ file=s-pre-07,
+%D version=1999.08.20,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 7,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style was made for the \NTS\ presentation at
+%D \EUROTEX\ 1999. It's a wink to programming in a webbed way.
+%D This is just one way of implementing such a style. Today
+%D we have more \METAPOST\ interfacing available, and
+%D thereby moore tools and alternative ways to reach such a
+%D goal. I must admit that the main macro looks fuzzy. On
+%D the other hand, the presentation can look quite structured.
+%D
+%D \starttyping
+%D \Topics{...}
+%D
+%D \StartIdeas
+%D \Topic{...}
+%D \StartIdea ... \StopIdea
+%D \StartIdea ... \StopIdea
+%D \StopIdeas
+%D \stoptyping
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+\usemodule
+ [abr-02]
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [topspace=0cm,
+ backspace=0cm,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle]
+
+\setupinteractionscreen
+ [option=max]
+
+%D In order to prevent loops due to random placement, we
+%D keep the random seed reasonable constant.
+
+\setupsystem
+ [random=big]
+
+\setupcolors
+ [state=start]
+
+\definecolor[gray] [s=.4]
+\definecolor[lightgray][s=.9]
+
+\definecolor[red] [r=.4] \definecolor[cyan] [g=.4,b=.4]
+\definecolor[green][g=.4] \definecolor[magenta][r=.4,b=.4]
+\definecolor[blue] [b=.4] \definecolor[yellow] [r=.4,g=.4]
+
+\definecolor[PageColor][gray]
+\definecolor[TextColor][lightgray]
+\definecolor[LineColor][yellow]
+
+\definecolor[linecolor 1][red] \definecolor[linecolor 5][cyan]
+\definecolor[linecolor 2][green] \definecolor[linecolor 6][magenta]
+\definecolor[linecolor 3][blue] \definecolor[linecolor 4][yellow]
+
+\setupinteraction
+ [state=start,
+ display=new,
+ color=LineColor,
+ contrastcolor=LineColor]
+
+\startuseMPgraphic{shape}
+ path p ; color c, w ; numeric width, height ;
+ c := \MPcolor{LineColor} ; w := \MPcolor{TextColor} ;
+ width := \overlaywidth ; height := \overlayheight ;
+ pickup pencircle scaled .5cm ;
+ p := unitcircle
+ xscaled \MPw{\Idea} yscaled \MPh{\Idea}
+ shifted \MPxy{\Idea} ;
+ for z = (0,.5height), (width,.5height), (.5width,0), (.5width,height),
+ (0,0), (width,height), (0,height), (width,0) :
+ draw center p -- z withcolor c ;
+ endfor ;
+ fill p withcolor w ;
+ draw p withcolor c ;
+ p := unitcircle
+ xscaled \MPw{\Page} yscaled \MPh{\Page}
+ shifted \MPxy{\Page} ;
+ pickup pencircle scaled .25cm ;
+ fill p withcolor w ;
+ draw p withcolor c ;
+ draw unitsquare xscaled width yscaled height withcolor c ;
+\stopuseMPgraphic
+
+\defineoverlay [shape] [\useMPgraphic{shape}]
+\defineoverlay [nextpage] [\overlaybutton{nextpage}]
+\defineoverlay [previouspage] [\overlaybutton{previouspage}]
+\defineoverlay [content] [\overlaybutton{content}]
+\defineoverlay [forward] [\overlaybutton{forward}]
+
+\setupbackgrounds
+ [page]
+ [background={color,previouspage,shape},
+ backgroundcolor=PageColor]
+
+\def\StartIdea%
+ {\xdef\Idea{idea:\realfolio}
+ \xdef\Page{page:\realfolio}
+ \startstandardmakeup
+ \dontcomplain
+ \vbox to \makeupheight \bgroup
+ \getrandomdimen\scratchdimen{75pt}{600pt}\vskip 0pt plus \scratchdimen
+ \hbox to \makeupwidth \bgroup
+ \getrandomdimen\scratchdimen{75pt}{600pt}\hskip 0pt plus \scratchdimen
+ \hpos{idea:\realfolio} \bgroup
+ \framed
+ [width=.6\hsize,height=fit,offset=2cm,align=middle,
+ frame=off,strut=no,background=forward]
+ \bgroup
+ \setupwhitespace[big]}
+
+\def\StopIdea%
+ {\egroup
+ \egroup
+ \getrandomdimen\scratchdimen{75pt}{600pt}\hskip 0pt plus \scratchdimen
+ \egroup
+ \getrandomdimen\scratchdimen{75pt}{600pt}\vskip 0pt plus \scratchdimen
+ \egroup
+ \ifx\CurrentTopic\empty \else
+ \vskip-\makeupheight
+ \vbox to \makeupheight
+ {\vfill
+ \ifx\CurrentListTopic\empty\else
+ \writetolist[Topic]{}{\CurrentListTopic}
+ \fi
+ \hbox to \makeupwidth
+ {\hfill
+ \hpos{page:\realfolio}
+ {\framed
+ [offset=.5cm,frame=off,background=content]
+ {\bf\ignorespaces\CurrentTopic\unskip}}%
+ \hskip.5cm}
+ \vskip.5cm}
+ \fi
+ \stopstandardmakeup
+ \let\CurrentListTopic\empty}
+
+\definelist
+ [Topic]
+
+\setuplist
+ [Topic]
+ [alternative=f,
+ expansion=command]
+
+\let\CurrentTopic\empty
+\let\CurrentListTopic\empty
+
+\long\def\StartTopic#1\StopTopic
+ {\long\def\CurrentTopic{#1}
+ \let\CurrentListTopic\CurrentTopic}
+
+\def\Topic#1%
+ {\StartTopic#1\StopTopic}
+
+\def\Topics#1%
+ {\StartIdeas
+ \def\CurrentTopic{#1}
+ \StartIdea
+ \pagereference[content]
+ \placelist[Topic][criterium=all]
+ \StopIdea
+ \StopIdeas}
+
+\newcounter\CurrentIdeas
+
+\def\StartIdeas%
+ {\ifnum\CurrentIdeas=6 \doglobal\newcounter\CurrentIdeas \fi
+ \doglobal\increment\CurrentIdeas
+ \definecolor[LineColor][linecolor \CurrentIdeas]}
+
+\def\StopIdeas%
+ {}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-08.tex b/Master/texmf-dist/tex/context/base/s-pre-08.tex
new file mode 100644
index 00000000000..42531029908
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-08.tex
@@ -0,0 +1,271 @@
+%D \module
+%D [ file=s-pre-08,
+%D version=1999.09.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 8,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is one of the 6 styles made for the \NTS\ presentation
+%D at \EUROTEX\ 1999. The idea was to demonstrate a couple of
+%D nasty things that one can do with \PDFTEX, being an example
+%D of an extension. Afterwards it was provded that this could
+%D also be done using traditional \TEX.
+%D
+%D This version is nearly the same as the original, although
+%D since then the \METAPOST\ related macro have become more
+%D smooth. The original used a couple of boxes, skipt and
+%D fills, while this version uses the layer mechanism that
+%D came available in fall 2000. This style is actually more a
+%D demonstration gimmick than a real useful one.
+
+%D You may want to turn on layer tracing:
+%D
+%D \starttyping
+%D \tracelayerstrue
+%D \stoptyping
+
+\setuppapersize
+ [S6][S6]
+
+\setupbodyfont
+ [pos,10pt]
+
+%D We use the whole page and have no margins.
+
+\setuplayout
+ [topspace=0cm,
+ backspace=0cm,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle]
+
+\setupcolors
+ [state=start]
+
+\definecolor[TextColor][s=.9]
+\definecolor[PageColor][r=.5,g=.4,b=.3]
+\definecolor[LineColor][r=.7,g=.6,b=.5]
+
+\definecolor[ColorPage][r=.5,g=.6,b=.7]
+\definecolor[ColorLine][r=.3,g=.4,b=.5]
+
+\setupinteraction
+ [state=start,
+ display=new]
+
+\setupinteractionscreen
+ [option=max]
+
+%D The page, sample text and pagenumber will have a background
+%D graphic.
+
+\defineoverlay [page] [\uniqueMPgraphic{page}]
+\defineoverlay [graphic] [\uniqueMPgraphic{graphic}]
+\defineoverlay [number] [\uniqueMPgraphic{number}]
+
+%D Each element will also be a button.
+
+\defineoverlay [nextpage] [\overlaybutton{nextpage}]
+\defineoverlay [previouspage] [\overlaybutton{previouspage}]
+\defineoverlay [forward] [\overlaybutton{forward}]
+
+%D We are going to put all three elements on a layer.
+
+\definelayer [main]
+\defineoverlay [main] [\composedlayer{main}]
+
+%D The page backgrounds are as follows:
+
+\setupbackgrounds
+ [page]
+ [background={previouspage,page}]
+
+%D We could have put the main layer on the page overlay, but
+%D the next solution makes us independent of the back and top
+%D margins. The \type {idea} layer is for user purposes.
+
+\setupbackgrounds
+ [text]
+ [background={main,idea}]
+
+%D The page number, sample text and explanation all have
+%D associated framed texts. The two overlays \type {sample}
+%D and \type {text} and there for special (user) purposes.
+
+\defineframedtext
+ [PageText]
+ [width=fit,offset=.5cm,
+ before=,after=,frame=off,background={number,forward}]
+
+\defineframedtext
+ [SampleText]
+ [width=.6\makeupwidth,height=fit,offset=2cm,align=middle,
+ before=,after=,frame=off,background={graphic,sample,nextpage}]
+
+\defineframedtext
+ [TextText]
+ [width=.6\makeupwidth,height=fit,offset=2cm,align=middle,
+ before=,after=,frame=off,background={text,nextpage}]
+
+%D Nothing goes on the page directly, since we use layers. The
+%D \type {\null} command makes sure that at least something is
+%D on the page so that the page is flushed. Here we also take
+%D care of placing the page number.
+
+\def\StartIdea
+ {\null \dontcomplain}
+
+\def\StopIdea
+ {\setlayer
+ [main]
+ [x=\makeupwidth,y=.5cm,hoffset=-.5cm,location=lb]
+ {\PageText{\pagenumber}}
+ \page}
+
+%D Both texts get their position registered.
+
+\def\StartSample
+ {\setlayer
+ [main]
+ [hoffset=.75cm,voffset=.75cm]
+ \bgroup \hpos {SampText:\realfolio} \bgroup \startSampleText [none]}
+
+\def\StopSample
+ {\stopSampleText \egroup \egroup}
+
+%D Here the position of the sample text and explanationary
+%D text are passed on to the graphic that concerns the latter.
+
+% use setlayertext instead
+
+\def\StartText
+ {\setMPpositiongraphic
+ {TextText:\realfolio}{text}{other=SampText:\realfolio}
+ \setlayer
+ [main]
+ [x=\makeupwidth,y=\makeupheight,
+ hoffset=-.75cm,voffset=-.75cm,
+ location=lt]
+ \bgroup \noindent \hpos {TextText:\realfolio} \bgroup \startTextText [none]}
+
+\def\StopText
+ {\stopTextText \egroup \egroup}
+
+%D The graphics that encircle the two texts are related to
+%D their position. This is because when they overlay, a shine
+%D through is shown. This only shows up when there is enough
+%D text to make them overlap.
+
+\startuniqueMPgraphic{page}
+ StartPage ;
+ pickup pencircle scaled .5cm ;
+ fill Page withcolor \MPcolor{PageColor} ;
+ draw Page withcolor \MPcolor{LineColor} ;
+ StopPage ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{number}
+ path p ; p := fullcircle xscaled OverlayWidth yscaled OverlayHeight;
+ pickup pencircle scaled .25cm ;
+ fill p withcolor \MPcolor{TextColor} ;
+ draw p withcolor (white-\MPcolor{PageColor}) ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{graphic}
+ path p ; p := fullcircle xscaled OverlayWidth yscaled OverlayHeight;
+ pickup pencircle scaled .5cm ;
+ fill p withcolor \MPcolor{TextColor} ;
+ draw p withcolor \MPcolor{LineColor} ;
+\stopuniqueMPgraphic
+
+%D This graphic is calculated when a position is flushed that
+%D has this graphics as attached. The \type {self} reference
+%D is provided by \CONTEXT\ itself.
+
+\startMPpositiongraphic{text}
+ initialize_box(\MPpos{\MPvar{other}}) ;
+ path p ; p := fullcircle xscaled wxy yscaled hxy shifted cxy ;
+ initialize_box(\MPpos{\MPvar{self}}) ;
+ path q ; q := fullcircle xscaled wxy yscaled hxy shifted cxy ;
+ pickup pencircle scaled .5cm ;
+ fill q withcolor \MPcolor{TextColor} ;
+ draw p withcolor (white-\MPcolor{PageColor}) ;
+ clip currentpicture to q ;
+ draw q withcolor \MPcolor{LineColor} ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+\stopMPpositiongraphic
+
+%D In order to be complete, we also define a title page.
+%D Here suddenly the text background shows up.
+
+\def\StartTitlePage
+ {\startstandardmakeup
+ \dontcomplain
+ \setupframedtexts[TextText][width=fit]
+ \StartText
+ \bfd\setupinterlinespace
+ \def\\{\blank\bfc\setupinterlinespace\def\\{\blank}}}
+
+\def\StopTitlePage
+ {\StopText
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D For this purpose, we redefine the position graphic to
+%D handle a text only case:
+
+\startMPpositiongraphic{text}
+ if box_found(\MPpos{\MPvar{other}}) :
+ initialize_box(\MPpos{\MPvar{other}}) ;
+ path p ; p := fullcircle xscaled wxy yscaled hxy shifted cxy ;
+ fi ;
+ initialize_box(\MPpos{\MPvar{self}}) ;
+ path q ; q := fullcircle xscaled wxy yscaled hxy shifted cxy ;
+ pickup pencircle scaled .5cm ;
+ fill q withcolor \MPcolor{TextColor} ;
+ if box_found(\MPpos{\MPvar{other}}) :
+ draw p withcolor (white-\MPcolor{PageColor}) ;
+ clip currentpicture to q ;
+ draw q withcolor \MPcolor{LineColor} ;
+ else :
+ draw q withcolor (white-\MPcolor{PageColor}) ;
+ fi ;
+ anchor_box(\MPanchor{\MPvar{self}}) ;
+% setbounds currentpicture to boundingbox origin ;
+\stopMPpositiongraphic
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\TitlePage
+ {Fancy Styles:\\layers}
+
+\StartIdea
+ \StartSample
+ \input tufte
+ \StopSample
+ \StartText
+ \input reich
+ \StopText
+\StopIdea
+
+\StartIdea
+ \StartSample
+ \input knuth
+ \StopSample
+ \StartText
+ \input reich
+ \StopText
+\StopIdea
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-09.tex b/Master/texmf-dist/tex/context/base/s-pre-09.tex
new file mode 100644
index 00000000000..a829dd6e2d9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-09.tex
@@ -0,0 +1,380 @@
+%D \module
+%D [ file=s-pre-09,
+%D version=unknown,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 9,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D I made this style when I had to give a presentation on
+%D the \MAPS\ bibliography production for several user group
+%D meetings. This style is rather tuned for combinations of
+%D examples and explanations. The colors match the \MAPS\
+%D bibliography colors.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+%D A couple of years later, in 2001 this style was documented
+%D and made public. While documenting, I also changed box
+%D building on top of overlays into the now available layer
+%D positioning. So, this styles demonstrates quite some
+%D tricks.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [topspace=0cm,
+ backspace=0cm,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle]
+
+%D Local environments can be set by using the setups commands.
+%D For downward compatibility, we keep supporting the \type
+%D {\...Settings} hooks. Using local environments is seldom
+%D needed.
+
+\let\TextSettings \empty
+\let\SampleSettings\empty
+
+\startsetups [text] \TextSettings \stopsetups
+\startsetups [sample] \SampleSettings \stopsetups
+
+%D The dimensions are kind of fixed.
+
+\def\FrameWidth {448pt}
+\def\FrameHeight {348pt}
+\def\FrameOffset {24pt}
+\def\FrameSkip {12pt}
+
+%D But they {\em can} and {\em will} be changed.
+
+\def\FrameWidth {408pt}
+\def\FrameHeight {318pt}
+
+%D The funny values come from the $3:4$ display aspect
+%D ratio.
+
+\setupcolors
+ [state=start]
+
+\definecolor[PageColor] [s=.40]
+\definecolor[TextColor] [s=.90]
+\definecolor[InteractionColor][r=.40]
+\definecolor[LineColor] [r=.60,g=.60]
+
+%D Of course we go interactive and since we will probably
+%D open other documents, we make sure that the viewer opens a
+%D new window.
+
+\setupinteraction
+ [color=InteractionColor,
+ contrastcolor=LineColor,
+ display=new,
+ state=start]
+
+\setupinteractionscreen
+ [option=max]
+
+%D Before we come to the real macros, we do a little bit of
+%D tuning.
+
+\setupitemize
+ [1][packed]
+
+\setuptyping
+ [blank=medium]
+
+%D Apart from the titlepage, the page gets a simple colored
+%D background. Later we will activate the background.
+
+\setupbackgrounds
+ [page]
+ [backgroundcolor=PageColor]
+
+%D Everything gets frames by a nice \METAPOST\ frame.
+
+\defineoverlay [background] [\uniqueMPgraphic{background}]
+
+\startuniqueMPgraphic{background}
+ path p ; color c, w, d ;
+ c := \MPcolor{PageColor} ;
+ w := \MPcolor{TextColor} ;
+ d := \MPcolor{LineColor} ;
+ p := unitsquare xscaled OverlayWidth yscaled OverlayHeight ;
+ pickup pencircle scaled (1.5*\FrameSkip) ;
+ draw p withcolor c ;
+ pickup pencircle scaled \FrameSkip ;
+ fill p withcolor w ;
+ draw p withcolor d ;
+\stopuniqueMPgraphic
+
+%D We will present samples and explanation pair||wise, so
+%D we need a hyperlink that skips a page.
+
+\defineoverlay [nextpage] [\overlaybutton{nextpage}]
+\defineoverlay [previouspage] [\overlaybutton{previouspage}]
+\defineoverlay [skippage] [\overlaybutton{page(+2)}]
+
+%D Layers are normally used to position multiple content on
+%D a specific overlay. Here we will use them to position
+%D only and since the samples and text will swap place, we
+%D will use quite a few layers.
+
+\defineoverlay [text] [\composedlayer{text}]
+\defineoverlay [sample] [\composedlayer{sample}]
+\defineoverlay [common] [\composedlayer{common}]
+
+%D There are three positions. When combined, the sample and
+%D text windows overlap, otherwise the lone window is
+%D centered. We could have used one layer and reversed the
+%D order by setting the \type {direction} parameter, but
+%D this approach is more readable.
+
+\definelayer
+ [text]
+ [x=\makeupwidth,y=\makeupheight,location=lt,
+ hoffset=-\FrameSkip,voffset=-\FrameSkip]
+
+\definelayer
+ [sample]
+ [hoffset=\FrameSkip,voffset=\FrameSkip]
+
+\definelayer
+ [common]
+ [x=.5\makeupwidth,y=.5\makeupheight,location=c]
+
+%D The topic is put in the lower right corner of the text
+%D window.
+
+\defineoverlay [topic] [\composedlayer{topic}]
+
+\definelayer
+ [topic]
+ [x=\FrameWidth,y=\FrameHeight,location=lt,
+ hoffset=-\FrameOffset,voffset=-\FrameSkip]
+
+%D The topic is put in a framed box. That way we can make
+%D sure that it gets a background, which looks better when
+%D it covers something else. Otherwise we could have stuct
+%D to:
+%D
+%D \starttyping
+%D \def\Topic#1%
+%D {\setlayer[topic]{\color[PageColor]{\bfb\setstrut#1}}}
+%D \stoptyping
+%D
+%D But, we go for the nice alternative:
+
+\def\Topic#1%
+ {\doifsomething{#1}
+ {\setlayer [topic]
+ {\bfb\setstrut
+ \inframed
+ [frame=off,foregroundcolor=PageColor,offset=0pt,
+ background=color,backgroundcolor=TextColor]
+ {#1}}}}
+
+%D The sample as well as the explanation will be collected in
+%D a buffer. That way we can reuse the content. We could
+%D have used a box instead, but can we be sure that the content
+%D is not adapting itself? So, buffers we use.
+
+\resetbuffer[sample]
+\resetbuffer[text]
+
+%D Both the sample and explanation are kind of windowed.
+
+\defineframedtext
+ [SampleText]
+ [width=\FrameWidth,height=\FrameHeight,offset=\FrameOffset,
+ frame=off,align=normal,strut=no,before=,after=,
+ background={background,nextpage}]
+
+%D We safe some keying in by combining things in one macro.
+
+\def\DoSampleText#1#2#3% kind layer overlays
+ {\setupframedtexts[SampleText][background={background,#3}]
+ \setlayer[#2]
+ {\startSampleText[none]
+ \setups[#1]
+ \getbuffer[#1]
+ \stopSampleText}}
+
+\def\StartSample{\dostartbuffer[sample][StartSample][StopSample]}
+\def\StartText {\dostartbuffer[text] [StartText] [StopText]}
+
+%D The following definitions apply at the outer level.
+
+\def\StopSample
+ {\startstandardmakeup
+ \DoSampleText{sample}{common}{nextpage}
+ \stopstandardmakeup
+ \resetbuffer[sample]}
+
+\def\StopText
+ {\startstandardmakeup
+ \DoSampleText{text}{common}{topic,nextpage}
+ \stopstandardmakeup
+ \resetbuffer[text]}
+
+\setupbackgrounds[page][background={color,nextpage}]
+\setupbackgrounds[text][background=common]
+
+%D When we combine sample and text, we get slightly
+%D different definitions. As you can see we generate two
+%D pages. Watch how we manipulate the order of the
+%D overlays and teh nature of the buttons. Here data
+%D abstraction really pays off.
+
+\def\StartIdea
+ {\bgroup
+ \let\StopSample\relax
+ \let\StopText \relax}
+
+\def\StopIdea%
+ {\setupbackgrounds[page][background={color,skippage}]
+ \setupbackgrounds[text][background={text,sample}]
+ \startstandardmakeup
+ \DoSampleText{sample}{sample}{previouspage}
+ \DoSampleText{text} {text} {topic,nextpage}
+ \stopstandardmakeup
+ \setupbackgrounds[page][background={color,nextpage}]
+ \setupbackgrounds[text][background={sample,text}]
+ \startstandardmakeup
+ \DoSampleText{sample}{sample}{previouspage}
+ \DoSampleText{text} {text} {topic,nextpage}
+ \stopstandardmakeup
+ \egroup}
+
+%D The rest of the definitions takes care of the title page.
+%D Please don't steal this one for your own documents.
+
+\defineoverlay[joke] [\useMPgraphic{joke}{n=0}] % not to be changed!
+
+\startuseMPgraphic{joke}{n}
+ StartPage ;
+ path p, q ; numeric w ; pair xy ;
+ set_grid(OverlayWidth,OverlayHeight,OverlayWidth/8,OverlayHeight/8) ;
+ if \MPvar{n}=1 :
+ p := fulldiamond ; fill Page withcolor \MPcolor{TextColor} ;
+ else :
+ p := fullsquare ; fill Page withcolor \MPcolor{PageColor} ;
+ fi ;
+ forever :
+ xy := center Page randomized (OverlayWidth,OverlayHeight) ;
+ if new_on_grid(xpart xy, ypart xy) :
+ q := (p xyscaled (OverlayWidth/5,OverlayHeight/5))
+ randomized (\FrameSkip,\FrameSkip)
+ shifted xy ;
+ w := (\FrameSkip) randomized (\FrameSkip/2) ;
+ draw q withcolor \MPcolor{PageColor} withpen pencircle scaled (1.5w) ;
+ fill q withcolor \MPcolor{TextColor} ;
+ draw q withcolor \MPcolor{LineColor} withpen pencircle scaled ( w) ;
+ fi ;
+ exitif grid_full ;
+ endfor ;
+ StopPage ;
+\stopuseMPgraphic
+
+\defineoverlay[fuzzy][\useMPgraphic{fuzzy}]
+
+\startuseMPgraphic{fuzzy}
+ path p ; numeric w ;
+ p := (fullsquare xyscaled (OverlayWidth,OverlayHeight))
+ randomized (\FrameSkip,\FrameSkip) ;
+ w := (\FrameSkip) randomized (\FrameSkip/2) ;
+ draw p withcolor \MPcolor{PageColor} withpen pencircle scaled (1.5w) ;
+ fill p withcolor \MPcolor{TextColor} ;
+ draw p withcolor \MPcolor{LineColor} withpen pencircle scaled ( w) ;
+\stopuseMPgraphic
+
+%D This time we use a fit window, but with a slightly randomized
+%D frame, our trademark so to say.
+
+\def\StartTitlePage
+ {\bgroup
+ \setupbackgrounds[page][background={joke,nextpage}]
+ \startstandardmakeup
+ \switchtobodyfont[big]
+ \setupframedtexts
+ [SampleText]
+ [background=fuzzy,
+ foregroundcolor=PageColor,
+ width=fit,
+ height=fit,
+ align=middle]
+ \startSampleText[middle]
+ \bfd\setupinterlinespace
+ \def\\{\bfb\setupinterlinespace\vfil\def\\{\vfil}}}
+
+\def\StopTitlePage
+ {\stopSampleText
+ \stopstandardmakeup
+ \egroup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D Let's nill some error prone presentation macros.
+
+\let\Subject \Topic
+\let\Topics \gobbleoneargument
+\let\Subjects \relax
+
+%D We will avoid \quote {overfull} messages.
+
+\dontcomplain
+
+\doifnotmode{demo}{\endinput}
+
+%D The (rather silly) demo section.
+
+\starttext
+
+\setupbodyfont[12pt]
+
+\TitlePage{Quotes, Quotes\\and more quotes}
+
+\StartIdea
+ \StartSample
+ \input knuth \par
+ \StopSample
+ \StartText
+ \Topic{Tufte}
+ \input tufte \par
+ \StopText
+ \StopIdea
+
+\StartIdea
+ \StartSample
+ \input materie \par
+ \StopSample
+ \StartText
+ \input reich \par
+ \StopText
+\StopIdea
+
+\StartText
+ \input tufte \par
+\StopText
+
+\StartIdea
+ \StartSample
+ \input knuth \par
+ \StopSample
+ \StartText
+ \input tufte \par
+ \StopText
+\StopIdea
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-10.tex b/Master/texmf-dist/tex/context/base/s-pre-10.tex
new file mode 100644
index 00000000000..67a867ec74c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-10.tex
@@ -0,0 +1,308 @@
+%D \module
+%D [ file=s-pre-10,
+%D version=unknown,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 10,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style is derived from the ninth style, which was
+%D used first at \EUROTEX\ 99 and later at \TUG\ 2000. This
+%D alternative build up a page.
+
+\startmode [demo]
+ \disablemode[demo] \usemodule[pre-09] \enablemode[demo]
+\stopmode
+
+\startnotmode [demo]
+ \usemodule[pre-09]
+\stopnotmode
+
+%D We use blue colors instead of yellow ones. Since we have
+%D used symbolic names, we can easily overload the existing
+%D scheme.
+
+\definecolor[LineColor][r=.40,g=.40,b=1.00]
+
+%D Here we don't use fixed dimensions, but fit the sample
+%D windows and derive the text windows's width from this one.
+
+\setupframedtexts
+ [SampleText]
+ [width=fit,height=fit,
+ background={background,nextpage}]
+
+%D The topic goes to the top right corner of the screen which
+%D means that it is positioned left down to the reference
+%D point. Watch how we make data on this layer (here only
+%D the topic but it can be more) persistent.
+
+\setuplayer
+ [topic]
+ [y=0pt,x=\makeupwidth,location=lb,state=repeat,
+ hoffset=-\FrameSkip,voffset=\FrameSkip]
+
+%D Clicking on the page brings us back.
+
+\setupbackgrounds
+ [page]
+ [background={previouspage,color,topic}]
+
+%D All layers end up on the text area. This could have been
+%D the page area too since these have the same dimensions.
+
+\setupbackgrounds
+ [text]
+ [background={common,sample,text}]
+
+%D Because we build up the text window step by step, we will
+%D separate the entries by white space.
+
+\startsetups [always]
+ \setupwhitespace[big]
+ \setupblank[big]
+\stopsetups
+
+%D The \type {\Topic} commands can be simplified to:
+
+\def\Topic#1%
+ {\resetlayer[topic]
+ \setlayer[topic]{\bfb\setstrut\color[TextColor]{#1}}}
+
+%D We also provide a way to erase the topic.
+
+\def\NoTopic
+ {\resetlayer[topic]}
+
+%D We have to redefine the structuring commands to support
+%D the resetting of buffer counters.
+
+\newcounter\TextN
+
+\def\StartSample
+ {\doglobal\newcounter\TextN
+ \dostartbuffer[sample][StartSample][StopSample]}
+
+\def\StartText
+ {\doglobal\newcounter\TextN
+ \dostartbuffer[text][StartText][StopText]}
+
+\def\StartSubText
+ {\doglobal\increment\TextN
+ \dostartbuffer[text-\TextN][StartSubText][StopSubText]}
+
+\def\StopText
+ {\startstandardmakeup
+ \DoSampleText{text}{common}{nextpage}
+ \stopstandardmakeup}
+
+\def\StopSubText
+ {\startstandardmakeup
+ \DoSampleText{text}{common}{nextpage}
+ \stopstandardmakeup}
+
+%D The \type {\DoSampleText} command is adapted to support
+%D addition of subtexts (each subtext goes into its own
+%D buffer).
+
+\def\DoSampleText#1#2#3%
+ {\setupframedtexts[SampleText][background={background,#3}]
+ \bgroup
+ \setups[#1]%
+ \setups[always]%
+ \setbox\nextbox=\hbox
+ {\startSampleText[none]
+ \getbuffer[#1]\par
+ \doif{#1}{text}
+ {\dorecurse{\TextN}{\getbuffer[text-\recurselevel]\par}}
+ \stopSampleText}
+ \xdef\SampleTextWidth{\the\wd\nextbox}
+ \setlayer[#2]{\box\nextbox}%
+ \egroup}
+
+%D Since we are no longer swapping windows, we end up with a
+%D much simplier \type {\Stopidea} macro. We don't reset
+%D samples at the inner level.
+
+\def\StartIdea%
+ {\bgroup
+ \let\StopSample \relax
+ \let\StopText \relax
+ \let\StopSubText\relax
+ \def\StartSample{\dostartbuffer[sample][StartSample][StopSample]}}
+
+\def\StopIdea%
+ {\startstandardmakeup
+ \DoSampleText{sample}{sample}{nextpage}
+ \SetTextWidth
+ \DoSampleText{text} {text} {nextpage}
+ \stopstandardmakeup
+ \egroup}
+
+%D Here we determine the width of the text window. It is
+%D derived from the width of the sample and stays the same
+%D within a sequence.
+
+\def\SetTextWidth
+ {\ifnum\TextN<1 % yes or no, may change
+ \scratchdimen=\makeupwidth
+ \advance\scratchdimen by -\SampleTextWidth
+ \advance\scratchdimen by \FrameSkip
+ \xdef\SampleWidth{\the\scratchdimen}%
+ \fi
+ \setupframedtexts
+ [SampleText]
+ [width=\SampleWidth]}
+
+%D We use the (already implemented) second alternative of
+%D the titlepage graphic. Please don't change this.
+
+\defineoverlay[joke] [\useMPgraphic{joke}{n=1}] % not to be changed !
+
+\doifnotmode{demo}{\endinput}
+
+%D The demo section. The original presentation uses proper
+%D graphics and has better spacing.
+
+\def\SomeSymbol#1#2{\definedfont[ContextNavigation at #1]\char#2}
+
+\setupcombinations[distance=\FrameOffset,inbetween=\vskip\FrameOffset]
+
+\starttext
+
+\TitlePage{Some Famous Symbols}
+
+\Topic{Symbols}
+
+\StartSample
+ \startcombination[2*2]
+ {\SomeSymbol{5cm}{1}} {}
+ {\SomeSymbol{5cm}{3}} {}
+ {\SomeSymbol{5cm}{2}} {}
+ {\SomeSymbol{5cm}{4}} {}
+ \stopcombination
+\StopSample
+
+\Topic{Previous}
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{7cm}{1}
+ \StopSample
+ \StartText
+ This symbol can be used to indicate a hyperlink to a
+ previous page.
+ \StopText
+\StopIdea
+
+\StartIdea
+ \StartSubText
+ As one can expect there is also a symbol for going to
+ the next page.
+ \StopSubText
+\StopIdea
+
+\Topic{Previous}
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{9cm}{2}
+ \StopSample
+ \StartText
+ This symbol is actually just a mirrored version of the
+ first symbol we showed.
+ \StopText
+\StopIdea
+
+\NoTopic
+
+\StartText
+ Is this nice or not?
+\StopText
+
+\Topic{First and Last}
+
+\StartSample
+ \SomeSymbol{11cm}{3}
+\StopSample
+
+\StartSample
+ \SomeSymbol{11cm}{4}
+\StopSample
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{5cm}{3}
+ \StopSample
+ \StartText
+ A few screens back, we saw this symbol.
+ \StopText
+\StopIdea
+
+\StartIdea
+ \StartSubText
+ This symbol represents the beginning of something.
+ \StopSubText
+\StopIdea
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{5cm}{4}
+ \StopSample
+ \StartSubText
+ Just like this one represents an end.
+ \StopSubText
+\StopIdea
+
+\StartIdea
+ \StartSubText
+ They look just like the symbols found on audio and
+ video players.
+ \StopSubText
+\StopIdea
+
+\Topic{Summary}
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{6cm}{1}
+ \StopSample
+ \StartText
+ So we have a symbol for previous \unknown
+ \StopText
+\StopIdea
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{6cm}{2}
+ \StopSample
+ \StartSubText
+ \unknown\ and one for next \unknown
+ \StopSubText
+\StopIdea
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{6cm}{3}
+ \StopSample
+ \StartSubText
+ \unknown\ and yet another for first \unknown
+ \StopSubText
+\StopIdea
+
+\StartIdea
+ \StartSample
+ \SomeSymbol{6cm}{4}
+ \StopSample
+ \StartSubText
+ \unknown\ and of course for last.
+ \StopSubText
+\StopIdea
+
+\stoptext
+
diff --git a/Master/texmf-dist/tex/context/base/s-pre-13.tex b/Master/texmf-dist/tex/context/base/s-pre-13.tex
new file mode 100644
index 00000000000..a7b68dd69b9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-13.tex
@@ -0,0 +1,282 @@
+%D \module
+%D [ file=s-pre-13,
+%D version=1999.08.20,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 13,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is again one of the \EUROTEX\ 99 styles. It's one of
+%D the quick and dirty styles supporting basic structuring.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=middle,
+ height=middle,
+ header=0pt,
+ footer=0pt,
+ bottomdistance=.5cm,
+ bottom=1cm,
+ topspace=2cm,
+ backspace=2cm]
+
+%D This style is meant to be used with lucida handwriting
+%D fonts. If you don't have that font, you may reconsider
+%D using this style.
+
+\startmode[asintended] \setupbodyfont[lbr,hw] \stopmode
+
+%D These colors will mostly be used in the graphics drawn by
+%D \METAPOST.
+
+\setupcolors
+ [state=start]
+
+\definecolor[PageColor] [s=.6]
+\definecolor[TextColor] [s=.8]
+\definecolor[LineColor] [g=.4]
+\definecolor[SymbolColor][r=.4]
+
+%D When interacting, we will use button shaped that are
+%D quite random and thereby regenerated for each instance.
+
+\setupinteractionscreen
+ [option=max]
+
+\setupinteractionmenu
+ [bottom]
+ [state=start,
+ height=1cm,
+ middle=\hskip1cm]
+
+\setupinteraction
+ [state=start,
+ menu=on,
+ display=new,
+ click=no,
+ color=SymbolColor,
+ contrastcolor=SymbolColor]
+
+\startinteractionmenu[bottom]
+ \hfill
+ \got [previouspage] \symbol[prevmark] \\
+ \got [nextpage] \symbol[nextmark] \\
+ \got [CloseDocument] \symbol[stopmark] \\
+ \txt \tfd \SymbolColor \pagenumber \\
+\stopinteractionmenu
+
+%D When not processed at runtime, the itemmark graphics can
+%D result in processing loops due to funny dimensions.
+%D Therefore, from now on, the itemize macros limit the height
+%D and depth.
+
+\definesymbol[itemmark][\useMPgraphic{itemmark}]
+\definesymbol[stopmark][\useMPgraphic{stopmark}]
+\definesymbol[nextmark][\useMPgraphic{nextmark}]
+\definesymbol[prevmark][\useMPgraphic{prevmark}]
+
+%D Of course we have some backgrounds.
+
+\defineoverlay [page] [\useMPgraphic{page}]
+\defineoverlay [next] [\overlaybutton{forward}]
+\defineoverlay [prev] [\overlaybutton{PreviousJump}]
+
+\setupbackgrounds
+ [page]
+ [background={page,prev}]
+
+\setupbackgrounds
+ [text]
+ [background=next]
+
+\setuphead
+ [chapter]
+ [alternative=middle,
+ number=no,
+ color=SymbolColor,
+ style=\tfc]
+
+%D A little bit of tweaking.
+
+\setupwhitespace
+ [big]
+
+\setupitemize
+ [1]
+ [symbol=itemmark,
+ width=3\bodyfontsize]
+
+\def\StartTitlePage%
+ {\setupinteractionmenu[bottom][state=stop] % will be named page block
+ \startstandardmakeup
+ \setupalign[middle]
+ \def\\%
+ {\stopcolor
+ \vfil
+ \bfb\setupinterlinespace
+ \startcolor[black]}
+ \bfd\setupinterlinespace
+ \vfil
+ \startcolor[SymbolColor]}
+
+\def\StopTitlePage
+ {\stopcolor
+ \vfil\vfil
+ \stopstandardmakeup
+ \setupinteractionmenu[bottom][state=start]}
+
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\definehead[Topic][chapter]
+\definehead[Nopic][title]
+
+\setuplist
+ [Topic]
+ [criterium=all,
+ alternative=g,
+ interaction=all,
+ after=\blank]
+
+\def\Topics#1%
+ {\Nopic{#1}
+ \bgroup
+ \setupinteraction
+ [color=,
+ contrastcolor=]
+ \determinelistcharacteristics[Topic]
+ \ifnum\utilitylistlength>12
+ \startcolumns[n=2]
+ \placelist[Topic]
+ \stopcolumns
+ \else
+ \placelist[Topic]
+ \fi
+ \egroup}
+
+%D We don't support another level of structuring.
+
+\let\Subject \Topic
+\let\Subjects\relax
+
+%D Most of this style is \METAPOST\ definitions. We could
+%D have shared some code, but it would not on forehand make
+%D things more readable, so we stick to the following
+%D definitions.
+
+\startuseMPgraphic{page}
+
+ width := \overlaywidth ;
+ height := \overlayheight ;
+
+ d := 15 ; dd := d ; dd := 10 ;
+
+ def fuzzy (expr p,dx,dy) =
+ (xpart p +dx-uniformdeviate dx,ypart p+dy-uniformdeviate dy)
+ enddef ;
+
+ pair ll, lr, ur, ul ;
+
+ ll := (d,d) ;
+ lr := (width-d,d) ;
+ ur := (width-d,height-d) ;
+ ul := (d,height-d) ;
+
+ path p, q, r, s ;
+
+ p := ll.. for i=.1 step .1 until .9 : fuzzy (i[ll,lr],0,+dd).. endfor lr ;
+ q := lr.. for i=.1 step .1 until .9 : fuzzy (i[lr,ur],-dd,0).. endfor ur ;
+ r := ur.. for i=.1 step .1 until .9 : fuzzy (i[ur,ul],0,-dd).. endfor ul ;
+ s := ul.. for i=.1 step .1 until .9 : fuzzy (i[ul,ll],+dd,0).. endfor ll ;
+
+ fill unitsquare xscaled width yscaled height withcolor \MPcolor{PageColor} ;
+
+ fill p & q & r & s -- cycle withcolor \MPcolor{TextColor} ;
+
+ color c ; c := \MPcolor{LineColor} ;
+
+ draw p withpen pencircle xscaled 20 yscaled 5 rotated 30 withcolor c ;
+ draw q withpen pencircle xscaled 5 yscaled 20 rotated 30 withcolor c ;
+ draw r withpen pencircle xscaled 20 yscaled 5 rotated 30 withcolor c ;
+ draw s withpen pencircle xscaled 5 yscaled 20 rotated 30 withcolor c ;
+
+\stopuseMPgraphic
+
+\startuseMPgraphic{itemmark}
+ width := BodyFontSize ; height := width/4 ;
+ maxheight := StrutHeight ; line := 3width/2 ;
+
+ def fuzzy = -(height/4)+uniformdeviate (height/2) enddef ;
+
+ draw
+ ((0,0+fuzzy)--(width,height+fuzzy/2))
+ shifted (line/2,0)
+ withpen pencircle
+ xscaled line yscaled (line/4)
+ rotated (25+uniformdeviate 10) withcolor \MPcolor{SymbolColor} ;
+
+ setbounds currentpicture to unitsquare xyscaled(width,maxheight) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{nextmark}
+ LoadPageState ; width := BottomHeight ; height := line := width/2 ;
+
+ def fuzzy = -(height/8)+uniformdeviate (height/4) enddef ;
+
+ z1 = (0,0+fuzzy) ; z2 = (width,height/2+fuzzy/2) ; z3 = (0,height+fuzzy) ;
+
+ draw
+ (z1..{right}z2 & z2{left}..z3)
+ withpen pencircle
+ xscaled line yscaled (line/4)
+ rotated 30 withcolor \MPcolor{SymbolColor} ;
+
+ setbounds currentpicture to unitsquare xyscaled(width,height) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{prevmark}
+ LoadPageState ; width := BottomHeight ; height := line := width/2 ;
+
+ def fuzzy = -(height/8)+uniformdeviate (height/4) enddef ;
+
+ z1 = (width,0+fuzzy) ; z2 = (0,height/2+fuzzy/2) ; z3 = (width,height+fuzzy) ;
+
+ draw
+ (z1..{left}z2 & z2{right}..z3)
+ withpen pencircle
+ xscaled line yscaled (line/4)
+ rotated 30 withcolor \MPcolor{SymbolColor} ;
+
+ setbounds currentpicture to unitsquare xyscaled(width,height) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{stopmark}
+ LoadPageState ; width := BottomHeight ; height := line := width/2 ;
+
+ def fuzzy = -(height/8)+uniformdeviate (height/4) enddef ;
+
+ z1 = (0,0+fuzzy) ;
+ z2 = (width,height+fuzzy) ;
+ z3 = (width,0+fuzzy) ;
+ z4 = (0,height+fuzzy) ;
+ z5 = (width/2,height/2) ;
+
+ drawoptions
+ (withpen pencircle
+ xscaled line yscaled (line/4)
+ rotated 30 withcolor \MPcolor{SymbolColor}) ;
+
+ draw z1..{right}z5..z2 ; draw z3..{left}z5..z4 ;
+
+ setbounds currentpicture to unitsquare xyscaled(width,height) ;
+\stopuseMPgraphic
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-14.tex b/Master/texmf-dist/tex/context/base/s-pre-14.tex
new file mode 100644
index 00000000000..7a777c27edf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-14.tex
@@ -0,0 +1,264 @@
+%D \module
+%D [ file=s-pre-14,
+%D version=1999.08.20,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 14,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+
+%D In the process of making a couple of simple styles for
+%D \EUROTEX\ 99, I came to this one. The joke is in the
+%D pagenumber. This style can be used for short presentations
+%D with much text.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+%D Since we expect text, we can best be very tolerant.
+
+\setuptolerance
+ [verytolerant,stretch]
+
+%D As most styles we choose a large screen page size.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=fit,
+ rightedge=3cm,
+ margin=0pt,
+ rightedgedistance=2cm,
+ height=middle,
+ header=0pt,
+ footer=0pt,
+ topspace=1cm,
+ backspace=1cm]
+
+%D We only use two colors, named \type {One} and \type
+%D {Two}:
+
+\setupcolors
+ [state=start]
+
+\definecolor [One] [r=.6,g=.4,b=.4]
+\definecolor [Two] [r=.4,g=.6,b=.6]
+
+%D If you've looked at the demo file, you will have noticed
+%D that the background consists of four pieces: two filled
+%D rectangles and two half numbers. These are put on th epage
+%D using four overlays:
+
+\setupbackgrounds
+ [page]
+ [background={one,two,three,four}]
+
+%D When we code this in \TEX, we get the following
+%D definitions. As an alternative we coudl have used layers
+%D but I'm afraid that it would not have led to less code.
+
+\defineoverlay
+ [one]
+ [{\framed
+ [frame=off,background=color,backgroundcolor=Two,
+ width=\overlaywidth,height=\overlayheight]
+ {}}]
+
+\defineoverlay
+ [three]
+ [{\hbox to \overlaywidth
+ {\hfill\SetOverlayWidth
+ \framed
+ [frame=off,background=color,backgroundcolor=One,
+ width=\overlaywidth,height=\overlayheight]
+ {}}}]
+
+%D We could have used the main backgroundcolor instead of
+%D overlay \type {one}.
+
+\definefont[NumberFont][RegularBold at 3cm]
+
+\defineoverlay
+ [two]
+ [{\framed
+ [frame=off,width=\overlaywidth,height=\overlayheight,
+ offset=overlay]
+ {\vfill
+ \NumberFont\setstrut\SetOverlayWidth
+ \hbox to \hsize
+ {\hfill
+ \setupinteraction[style=,color=]%
+ \setbox0=\hbox{\strut\One\pagenumber}%
+ \hbox to 0pt{\hss\gotobox{\box0}[previouspage]\hss}%
+ \hskip\overlaywidth}}}]
+
+\defineoverlay
+ [four]
+ [{\framed
+ [frame=off,width=\overlaywidth,height=\overlayheight,offset=overlay]
+ {\vfill
+ \hbox to \hsize
+ {\hfill
+ \SetOverlayWidth
+ \framed
+ [frame=off,width=\overlaywidth,height=\overlayheight,offset=overlay]
+ {\vfill\NumberFont\setstrut
+ \setbox0=\hbox{\strut\Two\pagenumber}%
+ \setbox2=\hbox{\clip[nx=2,ny=1,x=2,y=1]{\copy0}}%
+ \dp2=\dp0
+ \hbox to \hsize{\hbox to 0pt{\hss\hskip.5\wd0\box2\hss}\hfill}}}}}]
+
+\def\SetOverlayWidth%
+ {\scratchdimen = \rightedgedistance
+ \divide\scratchdimen by 2
+ \advance\scratchdimen by \rightedgewidth
+ \advance\scratchdimen by \backspace
+ \edef\overlaywidth{\the\scratchdimen}}
+
+%D A much cleaner implementation is the following. If you hate
+%D \METAPOST, you can run this style in the specified mode:
+
+\startnotmode[no-metapost]
+
+\setupbackgrounds
+ [page]
+ [background={number}]
+
+\defineoverlay[number][\useMPgraphic{number}]
+
+\startuseMPgraphic{number}
+ StartPage ;
+ path Vage ; picture Left, Right ;
+ x1 = x2 = xpart (llcorner Field[Text][RightEdge] shifted (-RightEdgeDistance/2,0)) ;
+ y1 = ypart llcorner Page ;
+ y2 = ypart ulcorner Page ;
+ Vage := llcorner Page -- z1 -- z2 -- ulcorner Page -- cycle ;
+ fill Page withcolor \MPcolor {One} ;
+ fill Vage withcolor \MPcolor {Two} ;
+ if PageNumber>0 :
+ defaultfont := "\truefontname{RegularBold}" ;
+ Left := Right := thelabel("\folio",origin) ysized 3cm ;
+ clip Right to boundingbox Right shifted (bbwidth(Right)/2,0) ;
+ draw Left shifted z1 shifted (0,2.25cm) withcolor \MPcolor {One} ;
+ draw Right shifted z1 shifted (0,2.25cm) withcolor \MPcolor {Two} ;
+ fi ;
+ StopPage ;
+\stopuseMPgraphic
+
+\stopnotmode
+
+%D We use the simple label typesetting present in \METAPOST\
+%D because digits are seldom kerned so real \TEX ing is not
+%D needed. As in the previous method, we let the graphics
+%D overlap so that we don't get white lines due to rounding
+%D problems in viewers.
+%D
+%D We put a button behind the text (this overlay is calculated
+%D each page).
+
+\defineoverlay
+ [nextpage]
+ [\overlaybutton{nextpage}]
+
+\setupbackgrounds
+ [text]
+ [backgroundoffset=.5cm,
+ background=nextpage]
+
+%D We still have to turn on interaction mode.
+
+\setupinteraction
+ [state=start,
+ display=new,
+ menu=on]
+
+\setupinteraction
+ [color=,
+ contrastcolor=]
+
+%D Next we define structuring commands.
+
+\definehead[Topic] [chapter] \setuphead[Topic] [style=\bfc]
+\definehead[Subject][section] \setuphead[Subject][style=\bfa]
+
+\setuphead
+ [Topic, Subject]
+ [number=no,
+ after={\blank[big]}]
+
+%D Because we will provide a menu, we don't offer lists.
+
+\let\Topics \gobbleoneargument
+\let\Subjects\relax
+
+%D The table of contents goes to the right edge.
+
+\startinteractionmenu[right]
+ \setupinteraction
+ [color=black,
+ contrastcolor=Two]
+ \placelist
+ [Topic]
+ [alternative=e,
+ frame=off,
+ criterium=all]
+ \vfill
+\stopinteractionmenu
+
+\setuplist
+ [Topic]
+ [width=\rightedgewidth,
+ maxwidth=\rightedgewidth,
+ style=\bfa]
+
+%D We safe some space:
+
+\setupwhitespace
+ [medium]
+
+\setupblank
+ [medium]
+
+%D In the titlepage, we still use the \TEX\ overlays,
+%D so that we don't have to define a second graphic.
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\def\StartTitlePage%
+ {\bgroup
+ \setupbackgrounds[page][background={one,three}]
+ \startstandardmakeup
+ \setupalign[middle]
+ \def\\{\vfil\bfb\setupinterlinespace}
+ \bfd\setupinterlinespace
+ \vfil}
+
+\def\StopTitlePage%
+ {\vfil\vfil\vfil
+ \stopstandardmakeup
+ \egroup}
+
+%D This is it.
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\TitlePage{Some Quotes\\(that you probably know by now)}
+
+\Topic{Tufte} \input tufte
+\Topic{Knuth} \input knuth
+\Topic{Reich} \input reich
+\Topic{Zapf} \input zapf
+\Topic{Materie} \input materie
+\Topic{Stork} \input stork
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-15.tex b/Master/texmf-dist/tex/context/base/s-pre-15.tex
new file mode 100644
index 00000000000..c9a157abb86
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-15.tex
@@ -0,0 +1,186 @@
+%D \module
+%D [ file=s-pre-15,
+%D version=1999.09.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 15,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is one of the styles I made for the presentation on
+%D the \NTS\ project at Euro\TeX\ 1998. You need balls to let
+%D \TEX\ typeset graphics, but this style demonstrates that it
+%D can be done.
+%D
+%D This presentation is meant for presentations that build up
+%D an idea stepwise.
+%D
+%D \starttyping
+%D \TitlePage{Do you know \TEX ?}
+%D
+%D \StartIdea
+%D \StartItem We use \TEX\ for typesetting \unknown \StopItem
+%D \StartItem mathematical text \unknown \StopItem
+%D \StartItem but also for text that has no math \unknown \StopItem
+%D \StartItem or presentations like this \unknown \StopItem
+%D \StartItem and whatever you can come up with! \StopItem
+%D \StopIdea
+%D \stoptyping
+
+%D The basic layout is rather simple and used as much of the
+%D screen as possible.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [backspace=25pt,
+ topspace=25pt,
+ width=middle,
+ height=middle,
+ header=0pt,
+ footer=0pt]
+
+\setupinteraction
+ [state=start,
+ display=new,
+ color=LineColor,
+ contrastcolor=LineColor,
+ click=no]
+
+\setupinteractionscreen
+ [option=max]
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+%D We use a lot of color. You can remap them if you want
+%D differend ones. The ideas circulate over the colors.
+
+\setupcolors
+ [state=start]
+
+\definecolor[TextColor][s=.8]
+\definecolor[PageColor][s=.6]
+\definecolor[LineColor][s=.4]
+
+\definecolor[red] [r=.4] \definecolor[cyan] [g=.4,b=.4]
+\definecolor[green][g=.4] \definecolor[magenta][r=.4,b=.4]
+\definecolor[blue] [b=.4] \definecolor[yellow] [r=.4,g=.4]
+
+\definecolor[linecolor 1][red] \definecolor[linecolor 5][cyan]
+\definecolor[linecolor 2][green] \definecolor[linecolor 6][magenta]
+\definecolor[linecolor 3][blue] \definecolor[linecolor 4][yellow]
+
+%D We use variables to make sure that the graphics are reused
+%D but unique.
+
+\setupMPvariables[pageframe][pagecolor=PageColor,linecolor=LineColor]
+\setupMPvariables[textframe][textcolor=TextColor,linecolor=LineColor]
+
+\setupbackgrounds
+ [page]
+ [background={pageframe,nextpage}]
+
+\defineoverlay [pageframe] [\uniqueMPgraphic{pageframe}]
+\defineoverlay [textframe] [\uniqueMPgraphic{textframe}]
+\defineoverlay [nextpage] [\overlaybutton{forward}]
+
+\startuniqueMPgraphic{pageframe}{pagecolor,linecolor}
+ path p ; p := fullsquare xyscaled (\overlaywidth,\overlayheight) ;
+ pickup pencircle scaled 10pt ;
+ fill p withcolor \MPvar{pagecolor} ;
+ draw p withcolor \MPvar{linecolor} ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{textframe}{textcolor,linecolor}
+ path p ; p := fullcircle xyscaled (\overlaywidth,\overlayheight) ;
+ pickup pencircle scaled 10pt ;
+ fill p withcolor \MPvar{textcolor} ;
+ draw p withcolor \MPvar{linecolor} ;
+\stopuniqueMPgraphic
+
+%D The rest of the file implements the nasty part: typesetting
+%D text embedded in a graphic. The text is collected in a box
+%D so that we can reuse it.
+
+\newbox\CollectedIdeas
+\newcounter\CurrentTopic
+
+\def\StartItem%
+ {\setbox\CollectedIdeas=\hbox\bgroup
+ \ifdim\wd\CollectedIdeas>0pt \unhbox\CollectedIdeas\hskip25pt \fi
+ \setbox\scratchbox=\hbox\bgroup
+ \framed
+ [width=160pt,height=160pt,align=middle,frame=off,
+ background=textframe,offset=15pt,top=\vfill,bottom=\vfill]
+ \bgroup}
+
+\def\StopItem%
+ {\egroup
+ \egroup
+ \setbox\scratchbox=\hbox{\lower.5\ht\scratchbox\box\scratchbox}%
+ \ht\scratchbox=.5\ht\scratchbox
+ \dp\scratchbox= \ht\scratchbox
+ \box\scratchbox
+ \egroup
+ \startstandardmakeup
+ \dontcomplain
+ \leftskip 0pt plus 50pt
+ \rightskip 0pt plus 50pt
+ \parfillskip 0pt
+ \baselineskip 100pt
+ \unhcopy\CollectedIdeas
+ \stopstandardmakeup}
+
+\def\StartIdea%
+ {\ifnum\CurrentTopic=6 \doglobal\newcounter\CurrentTopic \fi
+ \doglobal\increment\CurrentTopic
+ \definecolor[LineColor][linecolor \CurrentTopic]
+ \setbox\CollectedIdeas=\null}
+
+\def\StopIdea%
+ {}
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \setupalign[middle]
+ \def\\{\vfil\bfb\setupinterlinespace}
+ \bfd\setupinterlinespace
+ \vfil}
+
+\def\StopTitlePage%
+ {\vfil\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\doifnotmode{demo}{\endinput}
+
+%D A simple test on functionality.
+
+\setupoutput[pdftex]
+
+\starttext
+
+\TitlePage{Do you know \TEX ?}
+
+\startbuffer
+\StartIdea
+ \StartItem We use \TEX\ for typesetting \unknown \StopItem
+ \StartItem mathematical text \unknown \StopItem
+ \StartItem but also for text that has no math \unknown \StopItem
+ \StartItem or presentations like this \unknown \StopItem
+ \StartItem and whatever you can come up with! \StopItem
+\StopIdea
+\stopbuffer
+
+\dorecurse{6}{\getbuffer}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-16.tex b/Master/texmf-dist/tex/context/base/s-pre-16.tex
new file mode 100644
index 00000000000..81f21ec609a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-16.tex
@@ -0,0 +1,203 @@
+%D \module
+%D [ file=s-pre-16,
+%D version=1999.09.01,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 16,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The first version of this style was made late summer 1999,
+%D but its first usage was during a course I gave in BRNO.
+%D It's a rather simple style with a dominating background.
+
+\setuppapersize
+ [S6][S6]
+
+\setupbodyfont
+ [pos,14.4pt]
+
+\setuplayout
+ [topspace=100pt,
+ backspace=120pt,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle]
+
+\setupbackgrounds
+ [text]
+ [backgroundoffset=80pt,
+ background=GoOn]
+
+\setupbackgrounds
+ [page]
+ [background={FuzzyCircle,Again}]
+
+\setupcolors
+ [state=start]
+
+\definecolor[gray] [s=.4]
+\definecolor[white][s=.8]
+
+\definecolor[red] [r=.8] \definecolor[cyan] [g=.8,b=.8]
+\definecolor[green][g=.8] \definecolor[magenta][r=.8,b=.8]
+\definecolor[blue] [b=.8] \definecolor[yellow] [r=.8,g=.8]
+
+\definecolor[PageColor][gray]
+\definecolor[TextColor][yellow]
+\definecolor[LineColor][blue]
+
+\setupinteraction
+ [state=start,
+ color=LineColor,
+ contrastcolor=LineColor]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupitemize
+ [each]
+ [color=blue,
+ symbol=FuzzyDot]
+
+\startuseMPgraphic{FuzzyCircle}
+ path p ; numeric w, h, l ;
+ w := OverlayWidth ; h := OverlayHeight ;
+ def dd = (1 randomized (1/5)) enddef ;
+ pickup pencircle xscaled 10pt yscaled 2pt rotated 30;
+ for i:=1 upto 50 :
+ p := (-dd,-dd)..(dd,-dd)..(dd,dd)..(-dd,dd)..cycle ;
+ p := p rotatedaround (center p, uniformdeviate 360) ;
+ p := p xscaled (w/2) yscaled (h/2) ;
+ l := length(p)/2 ;
+ p := p cutbefore point (uniformdeviate l) of p ;
+ p := p cutafter point (l+uniformdeviate l) of p ;
+ draw p withcolor \MPcolor{LineColor} randomized (.4,1) ;
+ endfor ;
+ picture s ; s := currentpicture xysized (w-15,h-15) ;
+ currentpicture := nullpicture ;
+ fill boundingbox s enlarged 60pt withcolor \MPcolor{PageColor} ;
+ addto currentpicture also s ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{FuzzyDot}
+ path p ; numeric w ;
+ w := BodyFontSize/2 ;
+ def dd = (w randomized (w/2)) enddef ;
+ pickup pencircle xscaled (w/2) yscaled (w/3) rotated 30 ;
+ for i=0 step 45 until 135 :
+ p := (-dd,0)--(dd,0) ;
+ p := p rotatedaround (origin,i-w+uniformdeviate w) ;
+ draw p withcolor \MPcolor{LineColor} randomized (.3,.8) ;
+ endfor ;
+\stopuseMPgraphic
+
+\defineoverlay [FuzzyCircle] [\useMPgraphic{FuzzyCircle}]
+\defineoverlay [GoOn] [{\setupinteraction[click=no]\overlaybutton{forward}}]
+\defineoverlay [Again] [\overlaybutton{firstpage}]
+
+\definesymbol
+ [FuzzyDot]
+ [\lower\dp\strutbox\hbox{\useMPgraphic{FuzzyDot}}]
+
+\def\Item%
+ {\par\noindent\symbol[FuzzyDot]\hskip.5em\nobreak}
+
+\setupitemize
+ [all]
+ [packed]
+ [symbol=FuzzyDot]
+
+\def\NextIdea%
+ {\blank[back,medium]
+ \midaligned{\symbol[FuzzyDot]}
+ \blank[medium]
+ \blank[disable]}
+
+\definehead [Topic] [chapter]
+\definehead [Nopic] [title]
+
+\setuphead
+ [Topic, Nopic]
+ [alternative=middle,
+ before=,
+ number=no,
+ style=\bfb]
+
+\setuplist
+ [Topic]
+ [alternative=g,
+ interaction=all]
+
+%D Since we want a colored text, and since color directive
+%D can spoil the spacing, we use a foregroundcolor.
+
+\setupbackgrounds
+ [text]
+ [foregroundcolor=TextColor]
+
+%D Unfortunately this does not work when on the page colors
+%D are set, so we play safe and say:
+
+\setupmakeup
+ [standard]
+ [color=TextColor]
+
+\def\StartIdea%
+ {\startstandardmakeup
+ \setupwhitespace[medium]
+ \setupblank[medium]
+ \setupalign[broad,middle]}
+
+\def\StopIdea%
+ {\stopstandardmakeup}
+
+\def\Topics#1%
+ {\Nopic{#1}
+ \startcolumns
+ \setupinteraction[color=TextColor,contrastcolor=TextColor]
+ \placelist[Topic]
+ \stopcolumns
+ \page}
+
+%D Some fakes.
+
+\def\Subject {\Topic}
+\def\Subjects {}
+
+%D A bonus (copied from \type {s-pre-02} but with a different
+%D vertical alignment.
+
+\def\StartTitlePage%
+ {\startstandardmakeup
+ \bfd\setupinterlinespace
+ \setupalign[middle]
+ \vfil
+ \let\\=\vfil}
+
+\def\StopTitlePage%
+ {\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\Topics{...}
+
+\StartIdea
+ \Topic{...}
+ ...
+ \NextIdea
+ ...
+\StopIdea
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-19.tex b/Master/texmf-dist/tex/context/base/s-pre-19.tex
new file mode 100644
index 00000000000..c6ad4f6936b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-19.tex
@@ -0,0 +1,346 @@
+%D \module
+%D [ file=s-pre-19,
+%D version=2000.07.31,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 19,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style is made in the process or writing the \METAFUN\
+%D manual. It exploits a few tricks, like graphics calculated
+%D using positional information. It also uses the (at that
+%D moment) new menu list placement alternative. If you forget
+%D about the definition of the button shapes, which is
+%D complicated in any system, this style is not even that hard
+%D to follow. Watch how the left side of the buttons follow
+%D the right side of the text graphic.
+%D
+%D While playing bit with this style, the random alternative
+%D made me think of those organic building with non equal
+%D windows (we have a few in The Netherlands), so I decided to
+%D label this style as \type {pre-organic}.
+%D
+%D At the end of this file, there is a small test file, so
+%D when you process this file with \TEXEXEC\ and the options
+%D \type {--mode=demo} and \type {--pdf}, you will get a demo
+%D document.
+
+%D We use one of the standard screen \quote {paper} sizes, and
+%D map it onto the same size, so that we get a nicely cropped
+%D page.
+
+\setuppapersize
+ [S6][S6]
+
+%D Like in the \METAFUN\ manual, we use the Palatino as main
+%D bodyfont. This font is quite readable on even low
+%D resolution screens, although I admit that this style is
+%D developed using an $1400\times1050$ pixel LCD screen, so I
+%D may be biased.
+
+%\startmode[asintended] \setupbodyfont[ppl] \stopmode
+
+%D The layout specification sets up a text area and a right
+%D edge area where the menus will go. Watch the rather large
+%D edge distance. By setting the header and footer dimensions
+%D to zero, we automatically get rid of page body ornaments,
+%D like the pagenumber.
+
+\setuplayout
+ [topspace=48pt,
+ backspace=48pt,
+ cutspace=12pt,
+ width=400pt,
+ margin=0cm,
+ rightedge=88pt,
+ rightedgedistance=48pt,
+ header=0cm,
+ footer=0cm,
+ height=middle]
+
+%D We use a moderate, about a line height, interparagraph
+%D white space.
+
+\setupwhitespace
+ [big]
+
+%D Of course we use colors, since on computer displays they
+%D come for free.
+
+\setupcolors
+ [state=start]
+
+\definecolor [red] [r=.75]
+\definecolor [yellow] [r=.75,g=.75]
+\definecolor [gray] [s=.50]
+\definecolor [white] [s=.85]
+
+\definecolor [PageColor] [yellow]
+\definecolor [TextColor] [white]
+\definecolor [OrnamentColor] [red]
+\definecolor [InteractionColor] [red]
+\definecolor [ContrastColor] [gray]
+
+%D This is an interactive document, so we enable interaction.
+%D In this style, we disable the viewer's \quote {highlight a
+%D hyperlink when it's clicked on} feature. We will use a
+%D menu, so we enable menus. Later we will see the contract
+%D color |<|hyperlinks gets that color when we are already on
+%D the location|>| in action.
+
+\setupinteraction
+ [state=start,
+ click=off,
+ color=InteractionColor,
+ contrastcolor=ContrastColor,
+ menu=on]
+
+%D The menu itself is set up as follows. Because we will
+%D calculate menubuttons based on their position on the page,
+%D we have to keep track of the positions. Therefore, we set
+%D the \type {position} variable to \type {yes}.
+
+\setupinteractionmenu
+ [right]
+ [frame=off,
+ position=yes,
+ align=middle,
+ topoffset=-.75cm,
+ bottomoffset=-.75cm,
+ color=gray,
+ contrastcolor=gray,
+ style=bold,
+ before=,
+ after=]
+
+%D The menu content is rather sober: a list of topics (later
+%D we will define the command that generates topic entries),
+%D and a close button.
+
+\startinteractionmenu[right]
+ \placelist[Topic][alternative=right]
+ \vfill
+ \but [CloseDocument] close \\
+\stopinteractionmenu
+
+%D We have now arived at the more interesting part of the style
+%D definition: the graphic that goes in the page background.
+%D Because this graphic will change, we define a usable
+%D \METAPOST\ graphic. Page backgrounds are recalculated each
+%D page, opposite to the other backgrounds that are calculated
+%D when a new background is defined, or when repetitive
+%D calculation is turned on.
+
+\setupbackgrounds
+ [page]
+ [background=page]
+
+\defineoverlay
+ [page]
+ [\useMPgraphic{page}]
+
+\setupMPvariables
+ [page]
+ [alternative=3]
+
+\startuseMPgraphic{page}
+
+ \includeMPgraphic{rightsuperbutton}
+
+ StartPage ;
+
+ path p, q ; pickup pencircle scaled 3pt ;
+
+ p := Field[Text][Text] enlarged 36pt superellipsed .90 ;
+
+ fill Page withcolor \MPcolor{PageColor} ;
+ fill p withcolor \MPcolor{TextColor} ;
+ draw p withcolor \MPcolor{OrnamentColor} ;
+
+ p := Field[Text][Text] enlarged 48pt superellipsed .90 ;
+
+ def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =
+ if (pp>0) and (rr>0) :
+ q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ;
+ fill q withcolor \MPcolor{TextColor} ;
+ draw q withcolor if rr=2 : \MPcolor{ContrastColor}
+ else : \MPcolor{InteractionColor} fi ;
+ fi ;
+ enddef ;
+
+ \MPmenubuttons{right}
+
+ StopPage ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{page}
+
+ \includeMPgraphic{rightsuperbutton}
+
+ StartPage ;
+
+ numeric alternative, seed, superness, squeezeness, randomness ;
+ path p, q ; transform t ;
+
+ alternative := \MPvar{alternative} ;
+ seed := uniformdeviate 100 ;
+
+ if alternative > 10 :
+ superness := .85 + ((\realfolio-1)/\lastpage) * .15 ;
+ squeezeness := 12pt - ((\realfolio-1)/\lastpage) * 10pt ;
+ else :
+ superness := .90 ;
+ squeezeness := 12pt ;
+ fi ;
+
+ randomness := squeezeness ;
+
+ alternative := alternative mod 10 ;
+
+ t := identity if alternative=3: shifted (9pt,-9pt) fi ;
+
+ % first we draw the shape that surrounds the text
+
+ randomseed := seed ;
+
+ p := Field[Text][Text] enlarged if
+ alternative = 1 : 36pt superellipsed superness elseif
+ alternative = 2 : 36pt squeezed squeezeness elseif
+ alternative = 3 : 36pt randomized randomness else
+ : 36pt fi ;
+
+ pickup pencircle scaled 3pt ;
+
+ fill Page withcolor \MPcolor{PageColor} ;
+ fill p withcolor \MPcolor{TextColor} ;
+ draw p withcolor \MPcolor{OrnamentColor} ;
+
+ % we set p to the wider shape from which we will chip off pieces
+
+ randomseed := seed ;
+
+ p := ( Field[Text][Text] enlarged if
+ alternative = 1 : 48pt superellipsed superness elseif
+ alternative = 2 : 48pt squeezed squeezeness elseif
+ alternative = 3 : 36pt randomized randomness else
+ : 48pt fi ) transformed t ;
+
+ % calls to *_menu_button are generated automatically ...
+
+ def right_menu_button (expr nn, rr, pp, xx, yy, ww, hh, dd) =
+ if (pp>0) and (rr>0) :
+ q := rightsuperbutton(p,xx,yy,RightEdgeWidth,hh) ; % \MPw{menu:right:\realfolio}
+ fill q withcolor \MPcolor{TextColor} ;
+ draw q withcolor if rr=2 : \MPcolor{ContrastColor}
+ else : \MPcolor{InteractionColor} fi ;
+ fi ;
+ enddef ;
+
+ % ... and inserted when the graphic data is flushed here ...
+
+ \MPmenubuttons{right}
+
+ StopPage ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{rightsuperbutton}
+
+vardef rightsuperbutton (expr pat, xpos, ypos, wid, hei) =
+
+ save p, ptop, pbot, t, b, edge, shift, width, height ;
+ path p, ptop, pbot ; pair t, b ; numeric edge, shift, width, height ;
+
+ edge := xpos + wid ; shift := ypos + hei ;
+
+ p := rightpath pat ;
+
+ ptop := ((-infinity,shift)--(edge,shift)) ;
+ pbot := ((-infinity,shift-hei)--(edge,shift-hei)) ;
+
+ t := p intersection_point ptop ;
+ b := p intersection_point pbot ;
+
+ p := subpath(0,xpart (p intersectiontimes ptop)) of p ;
+ p := subpath(xpart (p intersectiontimes pbot),length(p)) of p ;
+
+ (p -- t -- point 1 of ptop &
+ point 1 of ptop -- point 1 of pbot &
+ point 1 of pbot -- b
+ -- cycle)
+
+enddef ;
+
+\stopuseMPgraphic
+
+%D Topics are identified with \type {\Topic}, which is an
+%D instance of chapter headings. The number is made invisible.
+%D Since it still is a numbered section header, \CONTEXT\ will
+%D write the header to the table of contents.
+
+\definehead
+ [Topic]
+ [chapter]
+
+\setuphead
+ [Topic]
+ [number=no]
+
+%D We will use a bold font in the table of contents. We also
+%D force a complete list.
+
+\setuplist
+ [Topic]
+ [criterium=all,
+ style=bold,
+ before=,
+ after=]
+
+%D The \type {\TitlePage} macro looks horrible, because we
+%D want to keep the interface simple: a list of small
+%D sentences, separated by \type {\\}.
+
+\def\StartTitlePage
+ {\startstandardmakeup
+ \switchtobodyfont[big]
+ \def\\{\vfill\bfb\let\\=\par}
+ \bfd\setupinterlinespace\gray
+ \vskip.5cm}
+
+\def\StopTitlePage
+ {\\\vskip.5cm % the \\ is really needed
+ \stopstandardmakeup}
+
+\def\TitlePage#1%
+ {\StartTitlePage#1\StopTitlePage}
+
+%D A couple of goodies:
+
+\def\Subject {\Topic}
+\def\Topics #1{}
+\def\Subjects {}
+
+%D For those who want to test:
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\setupMPvariables[page][alternative=3]
+
+\TitlePage
+ {A Few Nice Quotes\\
+ A Simple Style Demo\\
+ Hans Hagen, August 2000}
+
+\Topic {Douglas R. Hofstadter} \input douglas \page
+\Topic {Donald E. Knuth} \input knuth \page
+\Topic {Edward R. Tufte} \input tufte \page
+\Topic {Hermann Zapf} \input zapf \page
+%Topic {David F. Stork} \input stork \page
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-22.tex b/Master/texmf-dist/tex/context/base/s-pre-22.tex
new file mode 100644
index 00000000000..cb09816dc4b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-22.tex
@@ -0,0 +1,319 @@
+%D \module
+%D [ file=s-pre-22,
+%D version=2000.08.07,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 22,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style was made on behalf of the \PDFTEX\ presentation
+%D at \TUG\ 2000. It cycled a summary of each talk, with name
+%D and title. When documenting this style, I changed
+%D reprocessing into pushing on layers.
+%D
+%D A \quote {problem} like this can be solved in several ways:
+%D
+%D \startitemize
+%D \item writing a lot of semi||complex \TEX\ code as shown
+%D \item keeping track of positions and draw everything on the
+%D page layer
+%D \item defining an overlay for each summary and changing the
+%D order when flushing
+%D \item maintaining a so called field stack
+%D \stopitemize
+%D
+%D We go for the first method. We assume that summaries are
+%D simple text snippets.
+
+\startmode[asintended] \setupbodyfont[lbr] \stopmode
+
+\setupbodyfont[14.4pt]
+
+%D We use the whole page area.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [topspace=0cm,
+ backspace=0cm,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle]
+
+%D We define a couple of matching colors and gray scales.
+%D Watch out, some are really meant to look dim.
+
+\setupcolors
+ [state=start]
+
+\definecolor[PageColor] [s=.50]
+\definecolor[TextColor] [s=.80]
+\definecolor[DoneColor] [s=.65]
+
+\definecolor[TopColor] [r=.5,g=.6,b=.7]
+\definecolor[BotColor] [r=.6,g=.7,b=.5]
+\definecolor[DotColor] [r=.7,g=.5,b=.6]
+
+%D We will use foreground colors. Because these can interfere
+%D with the colors they overload, we can bets make sure that
+%D we don't have local colors.
+
+\setupinteraction
+ [state=start,
+ color=,
+ contrastcolor=]
+
+%D The presentation is supposed to cycle automatically.
+
+\setupinteractionscreen
+ [option=max,
+ delay=5]
+
+\setuppagetransitions
+
+%D We will use random positioning of objects.
+
+\setupsystem
+ [random=medium]
+
+%D We have two kind of graphics: the page background and
+%D the shape around the textual elements.
+
+\defineoverlay [shape] [\uniqueMPgraphic{shape}]
+\defineoverlay [page] [\reuseMPgraphic{page}]
+
+\startreusableMPgraphic{page}
+ StartPage ;
+ filldraw Page withcolor \MPcolor{PageColor} ;
+ pickup pencircle scaled .375cm ;
+ for i=1 upto 200 :
+ drawdot center Page randomized (PaperWidth,PaperHeight)
+ withcolor \MPcolor {DotColor} ;
+ endfor ;
+ StopPage ;
+\stopreusableMPgraphic
+
+\startuniqueMPgraphic{shape}
+ path p ;
+ p := unitsquare xyscaled(OverlayWidth,OverlayHeight) superellipsed .90 ;
+ draw p withpen pencircle scaled .50cm withcolor \MPcolor{PageColor} ;
+ fill p withcolor OverlayColor ;
+ draw p withpen pencircle scaled .25cm withcolor OverlayLineColor ;
+ currentpicture := currentpicture xysized(OverlayWidth,OverlayHeight) ;
+\stopuniqueMPgraphic
+
+%D The resizing at the end is needed to get a nice inverted
+%D hyperlink when we click on it in a browser.
+
+%D Behind the page we put a forward button:
+
+\defineoverlay [forward] [\overlaybutton{forward}]
+
+%D The content will be managed by means of two layers.
+
+\definelayer [main] \defineoverlay [main] [\composedlayer{main}]
+\definelayer [temp] \defineoverlay [temp] [\composedlayer{temp}]
+
+%D The first layer will hold everything to be shown, while
+%D the second one gets the data we currently focus on.
+%D Therefore the first layer will not be flushed each page.
+
+\setuplayer
+ [main]
+ [state=repeat]
+
+%D All the overlays go onto the page area.
+
+\setupbackgrounds
+ [page]
+ [background={page,forward,main,temp}]
+
+%D We have to collect all data before we typeset it. Each
+%D element will be typeset dim and bright. The dim
+%D alternatives will be collected on the main layer, but each
+%D bring one goes onto a box stack.
+
+\initializeboxstack{Summary}
+\initializeboxstack{Subtext}
+
+%D The macros that take care of all this manipulations look
+%D more complicated than they actually are. We use a
+%D scratchbox to collect and inspect data. Also, because we
+%D typeset each element twice, we need to make sure that we use
+%D the same random seed for both.
+
+\doglobal\newcounter\CurrentSummary
+
+\def\StartSummary% bottom bot-title top-title
+ {\dodoublegroupempty\doStartSummary}
+
+\def\doStartSummary#1#2%
+ {\doglobal\increment\CurrentSummary
+ \setbox\scratchbox=\hbox{\strut#1}
+ \getrandomseed\RandomSeed
+ \setlayer[main]
+ {\RandomSubtextBox{DoneColor}{BotColor}{BotColor}}
+ \setrandomseed\RandomSeed
+ \savebox{Subtext}{\CurrentSummary}
+ {\RandomSubtextBox{TextColor}{BotColor}{black}}
+ \setbox\scratchbox=\hbox \bgroup
+ \setbox\scratchbox=\hbox{\bfb\setstrut\strut\quad#2\quad}%
+ \SetAcceptableWidth
+ \framed [offset=0pt,width=fit,frame=off,align=middle,strut=no]
+ \bgroup \setupwhitespace[big]
+ \doifsomething{#2}{\noindent\box\scratchbox\blank}}
+
+\def\StopSummary
+ {\egroup \egroup
+ \getrandomseed\RandomSeed
+ \setlayer[main]
+ {\RandomSummaryBox{DoneColor}{TopColor}{TopColor}}
+ \setrandomseed\RandomSeed
+ \savebox{Summary}{\CurrentSummary}
+ {\RandomSummaryBox{TextColor}{TopColor}{black}}}
+
+%D A \type {\doStartSummary#1#2#3\StopSummary} could have been
+%D used too but this one is less sensitive for catcode changes
+%D (not that we expect problems like this in this kind of
+%D application).
+
+%D The width is either derived from the width ot the title or
+%D at random. The final width of the box is detemined by the
+%D content.
+
+\def\SetAcceptableWidth
+ {\scratchdimen=.5\makeupwidth
+ \ifdim\wd\scratchbox>.5\makeupwidth
+ \getrandomdimen\hsize{\wd\scratchbox}{.8\makeupwidth}%
+ \else
+ \getrandomdimen\hsize{.5\makeupwidth}{.7\makeupwidth}%
+ \fi}
+
+%D The subtext box goes at the bottom, somewhere in the right
+%D corner.
+
+\def\RandomSubtextBox#1#2#3%
+ {\vbox to \makeupheight
+ {\vfill
+ \hbox to \makeupwidth
+ {\hfill
+ \button
+ [offset=2ex,frame=off,background=shape,strut=no,
+ backgroundcolor=#1,framecolor=#2,foregroundcolor=#3]
+ {\copy\scratchbox}%
+ [previouspage]%
+ \getrandomdimen\scratchdimen{.5cm}{2.5cm}%
+ \hskip\scratchdimen}
+ \getrandomdimen\scratchdimen{.5cm}{1.5cm}
+ \vskip \scratchdimen}}
+
+%D The main text goes in the top half of the page, not to
+%D far from the center. The last \type {\vskip} makes sure
+%D that we don't clash with the subtexts.
+
+\definereference[thispage][page(\CurrentSummary)]
+
+\def\RandomSummaryBox#1#2#3%
+ {\vbox to \makeupheight
+ {\getrandomdimen\scratchdimen{.5cm}\makeupheight
+ \vskip 0pt plus \scratchdimen
+ \hbox to \makeupwidth
+ {\getrandomdimen\scratchdimen{.5cm}\makeupwidth
+ \hskip 0pt plus \scratchdimen
+ \button
+ [offset=3ex,frame=off,background=shape,strut=no,
+ backgroundcolor=#1,framecolor=#2,foregroundcolor=#3]
+ {\copy\scratchbox}%
+ [thispage]%
+ \getrandomdimen\scratchdimen{.5cm}\makeupwidth
+ \hskip 0pt plus \scratchdimen}
+ \getrandomdimen\scratchdimen{.5cm}\makeupheight
+ \vskip 0pt plus \scratchdimen
+ \vskip.2\makeupheight}}
+
+%D Because we conly collect data, we hav eto make sure that at
+%D some moment it is processed and flushed. The following loop
+%D does this.
+
+\def\BuildPage
+ {\dorecurse{\CurrentSummary}
+ {\startstandardmakeup
+ \setlayer[temp]{\foundbox{Summary}\recurselevel}
+ \setlayer[temp]{\foundbox{Subtext}\recurselevel}
+ \stopstandardmakeup}}
+
+%D We hook this macro into the \type {\stoptext} macro.
+
+\appendtoks \BuildPage \to \everystoptext
+
+%D We still need a title page.
+
+\def\TitlePage%
+ {\dodoublegroupempty\doTitlePage}
+
+\long\def\doTitlePage#1#2%
+ {\ifsecondargument
+ \MakeTitlePage{#1}{#2}
+ \else\iffirstargument
+ \MakeTitlePage{\currentdate}{#1}
+ \else
+ \MakeTitlePage{\currentdate}{Welcome}
+ \fi\fi}
+
+\def\MakeTitlePage#1#2%
+ {\StartSummary{#1}{#2}\StopSummary}
+
+%D For old times sake:
+
+\long\def\StartTopic#1\StopTopic{\StartSummary#1\StopSummary}
+
+\doifnotmode{demo}{\endinput}
+
+%D The demo text.
+
+\starttext
+
+\TitlePage{Indeed}{The Title Page}
+
+\StartSummary{Alpha}{Title}
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\StartSummary{Beta and Gamma}{Another Title}
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\StartSummary{Delta}{Some Title}
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\StartSummary{Epsilon}{What A Title}
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\StartSummary{Zeta, Eta and Theta}{Eh, A Title}
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\StartSummary{Omega}
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+ A simple and not too long text just to show the topic.
+\StopSummary
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-23.tex b/Master/texmf-dist/tex/context/base/s-pre-23.tex
new file mode 100644
index 00000000000..90ed183532f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-23.tex
@@ -0,0 +1,109 @@
+%D \module
+%D [ file=s-pre-20,
+%D version=2000.08.07,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 20,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style looks a lot like number 22. This time we don't
+%D cycle but build up the page. One can click on the text go
+%D to the page wanted. Clicking on the titl ebrings you to the
+%D previous page.
+
+\startmode [demo]
+ \disablemode[demo] \usemodule[pre-22] \enablemode[demo]
+\stopmode
+
+\startnotmode [demo]
+ \usemodule[pre-22]
+\stopnotmode
+
+%D We use a simple two||color scheme.
+
+\definecolor[DotColor][r=.5,g=.6,b=.7]
+\definecolor[TopColor][r=.7,g=.6,b=.5]
+\definecolor[BotColor][TopColor]
+
+%D We will not delay page building.
+
+\let\BuildPage\relax
+
+%D Instead, we will flush a page for each summary. The main
+%D layer is build up anyway, but we need to overlay the
+%D current summary.
+
+\let\normalStartSummary\StartSummary
+\let\normalStopSummary \StopSummary
+
+\def\StartSummary
+ {\startstandardmakeup
+ \normalStartSummary}
+
+\def\StopSummary
+ {\normalStopSummary
+ \setlayer[temp]{\foundbox{Summary}\CurrentSummary}
+ \setlayer[temp]{\foundbox{Subtext}\CurrentSummary}
+ \stopstandardmakeup}
+
+%D The title page is not added to the main layer (or
+%D actually, it is, but we erase the layer before it's
+%D used).
+
+\long\def\MakeTitlePage#1#2%
+ {\startstandardmakeup
+ \definereference[thispage][]
+ \switchtobodyfont[32pt]
+ \StartSummary{#1}{}#2\StopSummary
+ \resetlayer[main]
+ \setlayer[temp]{\foundbox{Summary}\CurrentSummary}
+ \setlayer[temp]{\foundbox{Subtext}\CurrentSummary}
+ \definereference[thispage][page(\CurrentSummary)]
+ \stopstandardmakeup}
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\TitlePage{August 2000}{Something Very Important}
+
+\StartSummary{Alpha}
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\StartSummary{Beta and Gamma}
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\StartSummary{Delta}
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\StartSummary{Epsilon}
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\StartSummary{Zeta, Eta and Theta}
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\StartSummary{Omega}
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+ A simple and not too long text just to show the idea.
+\StopSummary
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-50.tex b/Master/texmf-dist/tex/context/base/s-pre-50.tex
new file mode 100644
index 00000000000..0332001ab37
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-50.tex
@@ -0,0 +1,101 @@
+%D \module
+%D [ file=s-pre-50,
+%D version=2003.01.26,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 50,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D When my mailbox started to overflow with messages about
+%D problems with the presentation step mechanism, I looked up
+%D old presentaton, hacked a bit and cooked up an alternative
+%D that is less dependent on \PDF\ trickery.
+%D
+%D Consider it a cheap trick and prelude to a couple of new
+%D presentation styles. (At the time of writing this, I
+%D still have some 10 of those styles to clean up and
+%D document.) You can give it a try:
+%D
+%D \starttyping
+%D texexec --pdf --mode=demo s-pre-50
+%D \stoptyping
+
+% Basic definitions.
+
+\defineframedtext
+ [horizontal]
+ [width=\textwidth,
+ frame=off,
+ strut=no,
+ height=fit,
+ align={right,lohi},
+ before=,
+ after=]
+
+\definecollector
+ [contribution]
+ [state=repeat,
+ corner={left,bottom},
+ location={right,bottom}]
+
+%D An example of tuning:
+
+\startmode[demo]
+
+ \setupcollector
+ [contribution]
+ [voffset=-.25\bodyfontsize]
+
+ \setupframedtexts
+ [horizontal]
+ [background=color,
+ backgroundcolor=darkgray,
+ foregroundcolor=white]
+
+\stopmode
+
+%D Structure and trick.
+
+\def\StartSteps
+ {\checkutilities}
+
+\def\StopSteps
+ {\resetcollector[contribution]}
+
+\long\def\StartStep#1\StopStep
+ {\setcollector
+ [contribution]
+ {\starthorizontal[none]#1\stophorizontal}
+ \flushcollector[contribution]
+ \page}
+
+%D Trick.
+
+\installoutput\FlushStep
+ {\StartStep\unvbox\normalpagebox\StopStep}
+
+%D Demo.
+
+\doifnotmode{demo}{\endinput}
+
+\setupcolors[state=start] \setuppapersize[S6][S6] \setuplayout[middle]
+
+\starttext
+
+\StartSteps
+
+ \title[whow]{How Much?} \FlushStep
+ \item More \FlushStep
+ \item And More \FlushStep
+ \item And Even More \FlushStep
+
+ \StartStep And So On \StopStep
+
+\StopSteps
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/s-pre-60.tex b/Master/texmf-dist/tex/context/base/s-pre-60.tex
new file mode 100644
index 00000000000..baedffaa30b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-60.tex
@@ -0,0 +1,114 @@
+%D \module
+%D [ file=s-pre-60,
+%D version=2004.03.15,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 60,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\newcounter\StepCounter
+\newcounter\StepMaximum
+
+\useJSscripts[stp]
+
+\startsetups[set-stepper]
+
+ \ifnum\getvariable{stepper}{nofsteps}>\StepMaximum
+
+ \dostepwiserecurse {\numexpr(\StepMaximum+1)} {\getvariable{stepper}{nofsteps}} {1}
+ {\doifnotmode{nosteps,nostep}
+ {\expanded{\defineproperty[step:\recurselevel][layer][state=stop,global=yes]}}}
+
+ \xdef\StepMaximum{\getvariable{stepper}{nofsteps}}
+
+ \fi
+
+\stopsetups
+
+\setvariables
+ [stepper]
+ [set=\setups{set-stepper},
+ nofsteps=50]
+
+\defineproperty[step:busy][layer][state=start]
+
+\definereference [SetupStepper] [JS(SetupStepper{step,\StepMaximum})]
+\definereference [ResetStepper] [JS(ResetStepper)]
+\definereference [CheckStepper] [JS(CheckStepper{\StepCounter})]
+\definereference [InvokeStepper] [JS(InvokeStepper)]
+
+\def\ResetStep {\doglobal\newcounter\StepCounter}
+\def\NextStep {\doglobal\increment \StepCounter}
+\def\PrevStep {\doglobal\decrement \StepCounter}
+
+% todo: roll back blank
+
+\def\StepLayer {step:\StepCounter}
+\def\NextStepLayer {step:\the\numexpr\StepCounter+1\relax}
+\def\FirstStepLayer{step:1}
+
+\def\StartStep
+ {\ifvmode
+ \scratchskip\lastskip
+ \vskip-\scratchskip
+ \startproperty[\StepLayer]%
+ \vskip\scratchskip
+ \else
+ \startproperty[\StepLayer]%
+ \fi
+ \ignorespaces}
+
+\def\StopStep
+ {\removeunwantedspaces
+ \stopproperty}
+
+\def\StartSteps{\iftrialtypesetting\else\ResetStep\NextStep\StartStep\fi}
+\def\StopSteps {\iftrialtypesetting\else\StopStep \PrevStep \fi}
+\def\FlushStep {\iftrialtypesetting\else\StopStep \NextStep\StartStep\fi}
+
+\appendtoks
+ \ResetStep
+\to \everyaftershipout
+
+\def\StartBusy{\startproperty[step:busy]\ignorespaces}
+\def\StopBusy {\removeunwantedspaces\stopproperty}
+
+\setupinteraction
+ [openaction=SetupStepper,
+ closeaction=ResetStepper,
+ openpageaction=CheckStepper,
+ closepageaction=ResetStepper]
+
+\defineoverlay[invoke][\overlaybutton{InvokeStepper}]
+
+\setupbackgrounds
+ [text]
+ [background=invoke]
+
+% bonus
+
+\useMPlibrary[nav]
+
+\definepalet
+ [navplus]
+ [attach=interactioncolor,
+ comment=interactioncolor]
+
+\setupcomment
+ [symbol={comment-normal,comment-down},
+ textlayer=\StepLayer,
+ option=buffer,
+ height=\textheight,
+ width=\textwidth,
+ margin=0pt]
+
+\setupattachments
+ [symbol={attach-normal,attach-down},
+ textlayer=\StepLayer]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/s-pre-61.tex b/Master/texmf-dist/tex/context/base/s-pre-61.tex
new file mode 100644
index 00000000000..fd30624c308
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/s-pre-61.tex
@@ -0,0 +1,269 @@
+%D \module
+%D [ file=s-pre-61,
+%D version=2004.03.15,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Presentation Environment 61,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Optima
+
+\usemodule[pre-60]
+
+\usetypescriptfile[type-ghz]
+
+\definetypeface[mainface][ss][sans][optima-nova][default][encoding=\defaultencoding]
+
+\setupbodyfont[mainface,ss,18pt]
+\setupinterlinespace[line=3.25ex]
+
+\setuppapersize
+ [S6][S6]
+
+% \setuppapersize
+% [SW][SW]
+
+\setuplayout
+ [topspace=10pt,
+ header=40pt,
+ headerdistance=20pt,
+ height=middle,
+ footerdistance=20pt,
+ footer=0pt,
+ bottomdistance=10pt,
+ bottom=20pt,
+ bottomspace=40pt,
+ backspace=30pt,
+ width=middle]
+
+\setupinteraction
+ [state=start,
+ click=off,
+ menu=on,
+ style=,
+ color=interactioncolor,
+ contrastcolor=interactioncolor]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupinteractionmenu
+ [bottom]
+ [color=maincolor,
+ contrastcolor=maincolor,
+ style=\tfa, % acceptable
+ left=\hfill,
+ middle=,
+ right=,
+ height=\bottomheight,
+ width=2\bottomheight,
+ offset=overlay,
+ frame=off]
+
+\startinteractionmenu[bottom]
+ \but [firstpage] \symbol[firstpage] \\
+ \but [previouspage] \symbol[previouspage] \\
+ \but [InvokeStepper] \StartBusy\symbol[PauseRendering]\StopBusy \\
+ \but [nextpage] \symbol[nextpage] \\
+ \but [lastpage] \symbol[lastpage] \\
+ \but [CloseDocument] \symbol[CloseDocument] \\
+\stopinteractionmenu
+
+% maybe in colo-sjk : \setupcolor[sjk]
+
+\definecolor [dark] [s=.4]
+\definecolor [bright] [s=.9]
+
+\definecolor [red] [r=.4,g=.2,b=.2]
+\definecolor [green] [r=.2,g=.4,b=.2]
+\definecolor [blue] [r=.2,g=.2,b=.4]
+
+\definecolor [cyan] [r=.2,g=.4,b=.4]
+\definecolor [magenta][r=.4,g=.2,b=.4]
+\definecolor [yellow] [r=.4,g=.4,b=.2]
+
+\definecolor [pagecolor] [dark]
+\definecolor [maincolor] [bright]
+\definecolor [textcolor] [red]
+
+\definecolor [interactioncolor] [r=.8,g=.8,b=.6]
+
+\setupcolors
+ [state=start,
+ textcolor=maincolor]
+
+\setupbackgrounds
+ [page]
+ [background=page,
+ backgroundcolor=textcolor]
+
+\setupbackgrounds
+ [text]% [text]
+ [background={comments,text,invoke}]
+
+\definelayer
+ [text]
+ [width=\textwidth,
+ height=\textheight]
+
+\defineoverlay
+ [comments]
+ [{\setlayer[text][preset=middle]{\placecomments}}]
+
+\defineoverlay[page][\uniqueMPgraphic{page-\ifcase\realpageno\or one\else plus\fi}]
+
+\startuniqueMPgraphic{page-one}
+ StartPage ;
+ fill Page
+ enlarged 4pt
+ withcolor \MPcolor{pagecolor} ;
+ fill Field[Text][Text]
+ topenlarged (TopSpace +4pt)
+ leftenlarged (BackSpace+4pt)
+ rightenlarged (CutSpace +4pt)
+ withcolor OverlayColor ;
+ StopPage ;
+\stopuniqueMPgraphic
+
+\startuniqueMPgraphic{page-plus}
+ StartPage ;
+ fill Page
+ enlarged 4pt
+ withcolor \MPcolor{pagecolor} ;
+ fill Field[Text][Text]
+ leftenlarged (BackSpace+4pt)
+ rightenlarged (CutSpace+4pt)
+ withcolor OverlayColor ;
+ StopPage ;
+\stopuniqueMPgraphic
+
+% this needs to be sorted out !
+
+\appendtoks
+ \NormalizeFontHeight \HeadFont {\setstrut\strut\quad} {1.0\headerheight} {SansBold}
+ \NormalizeFontHeight \TitleFont {\setstrut\strut\quad} {2.0\headerheight} {SansBold}
+ \NormalizeFontHeight \SubTitleFont {\setstrut\strut\quad} {1.5\headerheight} {SansBold}
+ \NormalizeFontHeight \SubSubTitleFont {\setstrut\strut\quad} {1.0\headerheight} {SansBold}
+\to \everystarttext
+\appendtoks
+ \NormalizeFontHeight \HeadFont {\setstrut\strut\quad} {1.0\headerheight} {SansBold}
+ \NormalizeFontHeight \TitleFont {\setstrut\strut\quad} {2.0\headerheight} {SansBold}
+ \NormalizeFontHeight \SubTitleFont {\setstrut\strut\quad} {1.5\headerheight} {SansBold}
+ \NormalizeFontHeight \SubSubTitleFont {\setstrut\strut\quad} {1.0\headerheight} {SansBold}
+\to \everystoptext
+
+\setuphead
+ [chapter]
+ [placehead=empty,
+ after={\blank[medium]},
+ color=maincolor,
+ placenumber=no,
+ style=\HeadFont]
+
+\setupheadertexts
+ [\doiftextelse{\placeheadtext[Topic]}
+ {\placeheadtext[Topic]}
+ {\placeheadtext[Nopic]}]
+ []
+
+\setuppagenumbering
+ [location=]
+
+\definesymbol
+ [emdash]
+ [\emdash]
+
+\setupitemize
+ [each]
+ [loose,serried,joinedup,broad]
+ [symbol=emdash]
+
+\setupalign
+ [broad,right]
+
+\def\doTitlePage#1#2#3%
+ {\startstandardmakeup[headerstate=high]
+ \def\\{\def\\{\endgraf\quad\quad}\endgraf\quad\ignorespaces#2}%
+ #1\setstrut\setupinterlinespace\vfil#3\vfil\vfil
+ \stopstandardmakeup}
+
+\def\TitlePage {\doTitlePage\TitleFont\relax}
+\def\SubTitlePage{\doTitlePage\TitleFont\SubTitleFont}
+
+\definehead[Topic][chapter]
+\definehead[Nopic][title]
+
+\def\Topics#1%
+ {\Nopic[topics]{#1}
+ \startcolumns
+ \placelist[Topic]
+ \stopcolumns}
+
+\setuplist
+ [Topic]
+ [alternative=f,
+ color=maincolor,
+ contrastcolor=maincolor,
+ criterium=all]
+
+\defineoverlay[topics][\overlaybutton{topics}]
+
+\setupbackgrounds
+ [bottom] [text]
+ [background=topics]
+
+\doifnotmode{demo}{\endinput}
+
+\starttext
+
+\TitlePage{Stepwise\\Refinement}
+
+\Topics{Topics}
+
+\Topic{Female Artists}
+
+\StartSteps
+
+\startitemize
+\item Tori Amos \FlushStep
+\item Kate Bush \FlushStep
+\item Heather Nova \FlushStep
+\item Alanis Morissette \FlushStep
+\item Suzanne Vega \FlushStep
+\stopitemize
+
+\StopSteps
+
+\Topic{Male Composers}
+
+\StartSteps
+
+\startitemize
+\item John Adams \FlushStep
+\item Steve Reich \FlushStep
+\item Louis Andriessen \FlushStep
+\item Olivier Messiaen \FlushStep
+\stopitemize
+
+\StopSteps
+
+\Topic{And Some More}
+
+\StartSteps
+
+\startitemize
+\item Mark Hollis \FlushStep
+\item Roger Waters \FlushStep
+\item David Gilmore \FlushStep
+\item Peter Gabriel \FlushStep
+\item Randy Newman \FlushStep
+\stopitemize
+
+\StopSteps
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/sort-def.tex b/Master/texmf-dist/tex/context/base/sort-def.tex
new file mode 100644
index 00000000000..e2496f19644
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/sort-def.tex
@@ -0,0 +1,447 @@
+%D \module
+%D [ file=sort-def,
+%D version=2005.08.08,
+%D title=\CONTEXT\ Sort Macros,
+%D subtitle=Defaults,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module replaces existing sort key handling and is meant to be
+%D used with the new texutil functionality. Here we define the default
+%D mappings
+
+\exportsortexpansion{aeligature} {ae}
+\exportsortexpansion{AEligature} {AE}
+\exportsortexpansion{ijligature} {ij}
+\exportsortexpansion{IJligature} {IJ}
+\exportsortexpansion{oeligature} {oe}
+\exportsortexpansion{OEligature} {OE}
+
+\exportsortexpansion{ssharp} {ss}
+\exportsortexpansion{Ssharp} {SS}
+
+\exportsortexpansion{thorn} {}
+\exportsortexpansion{Thorn} {}
+
+\exportsortexpansion{eth} {}
+\exportsortexpansion{Eth} {}
+
+\exportsortexpansion{Acircumflex} {}
+\exportsortexpansion{acircumflex} {}
+\exportsortexpansion{Ccircumflex} {}
+\exportsortexpansion{ccircumflex} {}
+\exportsortexpansion{Ecircumflex} {}
+\exportsortexpansion{ecircumflex} {}
+\exportsortexpansion{Gcircumflex} {}
+\exportsortexpansion{gcircumflex} {}
+\exportsortexpansion{Hcircumflex} {}
+\exportsortexpansion{hcircumflex} {}
+\exportsortexpansion{Icircumflex} {}
+\exportsortexpansion{icircumflex} {}
+\exportsortexpansion{Jcircumflex} {}
+\exportsortexpansion{jcircumflex} {}
+\exportsortexpansion{Ocircumflex} {}
+\exportsortexpansion{ocircumflex} {}
+\exportsortexpansion{Scircumflex} {}
+\exportsortexpansion{scircumflex} {}
+\exportsortexpansion{Ucircumflex} {}
+\exportsortexpansion{ucircumflex} {}
+\exportsortexpansion{Wcircumflex} {}
+\exportsortexpansion{wcircumflex} {}
+\exportsortexpansion{Ycircumflex} {}
+\exportsortexpansion{ycircumflex} {}
+
+\exportsortexpansion{Agrave} {}
+\exportsortexpansion{agrave} {}
+\exportsortexpansion{Egrave} {}
+\exportsortexpansion{egrave} {}
+\exportsortexpansion{Igrave} {}
+\exportsortexpansion{igrave} {}
+\exportsortexpansion{Ograve} {}
+\exportsortexpansion{ograve} {}
+\exportsortexpansion{Ugrave} {}
+\exportsortexpansion{ugrave} {}
+\exportsortexpansion{Ygrave} {}
+\exportsortexpansion{ygrave} {}
+
+\exportsortexpansion{Atilde} {}
+\exportsortexpansion{atilde} {}
+\exportsortexpansion{Itilde} {}
+\exportsortexpansion{itilde} {}
+\exportsortexpansion{Ntilde} {}
+\exportsortexpansion{ntilde} {}
+\exportsortexpansion{Otilde} {}
+\exportsortexpansion{otilde} {}
+\exportsortexpansion{Utilde} {}
+\exportsortexpansion{utilde} {}
+\exportsortexpansion{Ytilde} {}
+\exportsortexpansion{ytilde} {}
+
+\exportsortexpansion{Adiaeresis} {}
+\exportsortexpansion{adiaeresis} {}
+\exportsortexpansion{Ediaeresis} {}
+\exportsortexpansion{ediaeresis} {}
+\exportsortexpansion{Idiaeresis} {}
+\exportsortexpansion{idiaeresis} {}
+\exportsortexpansion{Odiaeresis} {}
+\exportsortexpansion{odiaeresis} {}
+\exportsortexpansion{Udiaeresis} {}
+\exportsortexpansion{udiaeresis} {}
+\exportsortexpansion{Ydiaeresis} {}
+\exportsortexpansion{ydiaeresis} {}
+
+\exportsortexpansion{Aacute} {}
+\exportsortexpansion{aacute} {}
+\exportsortexpansion{Cacute} {}
+\exportsortexpansion{cacute} {}
+\exportsortexpansion{Eacute} {}
+\exportsortexpansion{eacute} {}
+\exportsortexpansion{Iacute} {}
+\exportsortexpansion{iacute} {}
+\exportsortexpansion{Lacute} {}
+\exportsortexpansion{lacute} {}
+\exportsortexpansion{Nacute} {}
+\exportsortexpansion{nacute} {}
+\exportsortexpansion{Oacute} {}
+\exportsortexpansion{oacute} {}
+\exportsortexpansion{Racute} {}
+\exportsortexpansion{racute} {}
+\exportsortexpansion{Sacute} {}
+\exportsortexpansion{sacute} {}
+\exportsortexpansion{Uacute} {}
+\exportsortexpansion{uacute} {}
+\exportsortexpansion{Yacute} {}
+\exportsortexpansion{yacute} {}
+\exportsortexpansion{Zacute} {}
+\exportsortexpansion{zacute} {}
+
+\exportsortexpansion{dstroke} {}
+\exportsortexpansion{Dstroke} {}
+\exportsortexpansion{Hstroke} {}
+\exportsortexpansion{hstroke} {}
+\exportsortexpansion{Tstroke} {}
+\exportsortexpansion{tstroke} {}
+
+\exportsortexpansion{Cdotaccent} {}
+\exportsortexpansion{cdotaccent} {}
+\exportsortexpansion{Edotaccent} {}
+\exportsortexpansion{edotaccent} {}
+\exportsortexpansion{Gdotaccent} {}
+\exportsortexpansion{gdotaccent} {}
+\exportsortexpansion{Idotaccent} {}
+\exportsortexpansion{idotaccent} {}
+\exportsortexpansion{Zdotaccent} {}
+\exportsortexpansion{zdotaccent} {}
+
+\exportsortexpansion{Amacron} {}
+\exportsortexpansion{amacron} {}
+\exportsortexpansion{Emacron} {}
+\exportsortexpansion{emacron} {}
+\exportsortexpansion{Imacron} {}
+\exportsortexpansion{imacron} {}
+\exportsortexpansion{Omacron} {}
+\exportsortexpansion{omacron} {}
+\exportsortexpansion{Umacron} {}
+\exportsortexpansion{umacron} {}
+
+\exportsortexpansion{Ccedilla} {}
+\exportsortexpansion{ccedilla} {}
+\exportsortexpansion{Kcedilla} {}
+\exportsortexpansion{kcedilla} {}
+\exportsortexpansion{Lcedilla} {}
+\exportsortexpansion{lcedilla} {}
+\exportsortexpansion{Ncedilla} {}
+\exportsortexpansion{ncedilla} {}
+\exportsortexpansion{Rcedilla} {}
+\exportsortexpansion{rcedilla} {}
+\exportsortexpansion{Scedilla} {}
+\exportsortexpansion{scedilla} {}
+\exportsortexpansion{Tcedilla} {}
+\exportsortexpansion{tcedilla} {}
+
+\exportsortexpansion{Ohungarumlaut} {}
+\exportsortexpansion{ohungarumlaut} {}
+\exportsortexpansion{Uhungarumlaut} {}
+\exportsortexpansion{uhungarumlaut} {}
+
+\exportsortexpansion{Aogonek} {}
+\exportsortexpansion{aogonek} {}
+\exportsortexpansion{Eogonek} {}
+\exportsortexpansion{eogonek} {}
+\exportsortexpansion{Iogonek} {}
+\exportsortexpansion{iogonek} {}
+\exportsortexpansion{Uogonek} {}
+\exportsortexpansion{uogonek} {}
+
+\exportsortexpansion{Aring} {}
+\exportsortexpansion{aring} {}
+\exportsortexpansion{Uring} {}
+\exportsortexpansion{uring} {}
+
+\exportsortexpansion{Abreve} {}
+\exportsortexpansion{abreve} {}
+\exportsortexpansion{Ebreve} {}
+\exportsortexpansion{ebreve} {}
+\exportsortexpansion{Gbreve} {}
+\exportsortexpansion{gbreve} {}
+\exportsortexpansion{Ibreve} {}
+\exportsortexpansion{ibreve} {}
+\exportsortexpansion{Obreve} {}
+\exportsortexpansion{obreve} {}
+\exportsortexpansion{Ubreve} {}
+\exportsortexpansion{ubreve} {}
+
+\exportsortexpansion{Ccaron} {}
+\exportsortexpansion{ccaron} {}
+\exportsortexpansion{Dcaron} {}
+\exportsortexpansion{dcaron} {}
+\exportsortexpansion{Ecaron} {}
+\exportsortexpansion{ecaron} {}
+\exportsortexpansion{Lcaron} {}
+\exportsortexpansion{lcaron} {}
+\exportsortexpansion{Ncaron} {}
+\exportsortexpansion{ncaron} {}
+\exportsortexpansion{Rcaron} {}
+\exportsortexpansion{rcaron} {}
+\exportsortexpansion{Scaron} {}
+\exportsortexpansion{scaron} {}
+\exportsortexpansion{Tcaron} {}
+\exportsortexpansion{tcaron} {}
+\exportsortexpansion{Ycaron} {}
+\exportsortexpansion{ycaron} {}
+\exportsortexpansion{Zcaron} {}
+\exportsortexpansion{zcaron} {}
+
+\exportsortexpansion{Lstroke} {}
+\exportsortexpansion{lstroke} {}
+\exportsortexpansion{Ostroke} {}
+\exportsortexpansion{ostroke} {}
+
+\exportsortexpansion{aumlaut} {}
+\exportsortexpansion{eumlaut} {}
+\exportsortexpansion{iumlaut} {}
+\exportsortexpansion{oumlaut} {}
+\exportsortexpansion{uumlaut} {}
+
+\exportsortexpansion{Aumlaut} {}
+\exportsortexpansion{Eumlaut} {}
+\exportsortexpansion{Iumlaut} {}
+\exportsortexpansion{Oumlaut} {}
+\exportsortexpansion{Uumlaut} {}
+
+\exportsortexpansion{scommaaccent} {}
+\exportsortexpansion{Scommaaccent} {}
+\exportsortexpansion{tcommaaccent} {}
+\exportsortexpansion{Tcommaaccent} {}
+
+\exportsortexpansion{Etilde} {}
+\exportsortexpansion{etilde} {}
+
+\exportsortexpansion{Ahook} {}
+\exportsortexpansion{ahook} {}
+\exportsortexpansion{Ehook} {}
+\exportsortexpansion{ehook} {}
+\exportsortexpansion{Ihook} {}
+\exportsortexpansion{ihook} {}
+\exportsortexpansion{Ohook} {}
+\exportsortexpansion{ohook} {}
+\exportsortexpansion{Uhook} {}
+\exportsortexpansion{uhook} {}
+\exportsortexpansion{Yhook} {}
+\exportsortexpansion{yhook} {}
+
+\exportsortexpansion{Acircumflexgrave} {}
+\exportsortexpansion{Acircumflexacute} {}
+\exportsortexpansion{Acircumflextilde} {}
+\exportsortexpansion{Acircumflexhook} {}
+\exportsortexpansion{acircumflexgrave} {}
+\exportsortexpansion{acircumflexacute} {}
+\exportsortexpansion{acircumflextilde} {}
+\exportsortexpansion{acircumflexhook} {}
+\exportsortexpansion{Ecircumflexgrave} {}
+\exportsortexpansion{Ecircumflexacute} {}
+\exportsortexpansion{Ecircumflextilde} {}
+\exportsortexpansion{Ecircumflexhook} {}
+\exportsortexpansion{ecircumflexgrave} {}
+\exportsortexpansion{ecircumflexacute} {}
+\exportsortexpansion{ecircumflextilde} {}
+\exportsortexpansion{ecircumflexhook} {}
+\exportsortexpansion{Ocircumflexgrave} {}
+\exportsortexpansion{Ocircumflexacute} {}
+\exportsortexpansion{Ocircumflextilde} {}
+\exportsortexpansion{Ocircumflexhook} {}
+\exportsortexpansion{ocircumflexgrave} {}
+\exportsortexpansion{ocircumflexacute} {}
+\exportsortexpansion{ocircumflextilde} {}
+\exportsortexpansion{ocircumflexhook} {}
+
+\exportsortexpansion{Abrevegrave} {}
+\exportsortexpansion{Abreveacute} {}
+\exportsortexpansion{Abrevetilde} {}
+\exportsortexpansion{Abrevehook} {}
+\exportsortexpansion{abrevegrave} {}
+\exportsortexpansion{abreveacute} {}
+\exportsortexpansion{abrevetilde} {}
+\exportsortexpansion{abrevehook} {}
+
+\exportsortexpansion{Adotbelow} {}
+\exportsortexpansion{adotbelow} {}
+\exportsortexpansion{Edotbelow} {}
+\exportsortexpansion{edotbelow} {}
+\exportsortexpansion{Idotbelow} {}
+\exportsortexpansion{idotbelow} {}
+\exportsortexpansion{Odotbelow} {}
+\exportsortexpansion{odotbelow} {}
+\exportsortexpansion{Udotbelow} {}
+\exportsortexpansion{udotbelow} {}
+\exportsortexpansion{Ydotbelow} {}
+\exportsortexpansion{ydotbelow} {}
+\exportsortexpansion{Ohorndotbelow} {}
+\exportsortexpansion{ohorndotbelow} {}
+\exportsortexpansion{Uhorndotbelow} {}
+\exportsortexpansion{uhorndotbelow} {}
+
+\exportsortexpansion{Acircumflexdotbelow} {}
+\exportsortexpansion{acircumflexdotbelow} {}
+\exportsortexpansion{Ecircumflexdotbelow} {}
+\exportsortexpansion{ecircumflexdotbelow} {}
+\exportsortexpansion{Ocircumflexdotbelow} {}
+\exportsortexpansion{ocircumflexdotbelow} {}
+\exportsortexpansion{Abrevedotbelow} {}
+\exportsortexpansion{abrevedotbelow} {}
+
+\exportsortexpansion{Ohorn} {}
+\exportsortexpansion{Ohorngrave} {}
+\exportsortexpansion{Ohornacute} {}
+\exportsortexpansion{Ohorntilde} {}
+\exportsortexpansion{Ohornhook } {}
+\exportsortexpansion{ohorn} {}
+\exportsortexpansion{ohorngrave} {}
+\exportsortexpansion{ohornacute} {}
+\exportsortexpansion{ohorntilde} {}
+\exportsortexpansion{ohornhook } {}
+\exportsortexpansion{Uhorn} {}
+\exportsortexpansion{Uhorngrave} {}
+\exportsortexpansion{Uhornacute} {}
+\exportsortexpansion{Uhorntilde} {}
+\exportsortexpansion{Uhornhook } {}
+\exportsortexpansion{uhorn} {}
+\exportsortexpansion{uhorngrave} {}
+\exportsortexpansion{uhornacute} {}
+\exportsortexpansion{uhorntilde} {}
+\exportsortexpansion{uhornhook} {}
+
+\exportsortexpansion{eszett} {ssharp}
+\exportsortexpansion{Eszett} {Ssharp}
+
+\exportsortexpansion{lslash} {lstroke}
+\exportsortexpansion{Lslash} {Lstroke}
+\exportsortexpansion{dslash} {dstroke}
+\exportsortexpansion{Dslash} {Dstroke}
+\exportsortexpansion{oslash} {ostroke}
+\exportsortexpansion{Oslash} {Ostroke}
+
+\exportsortexpansion{dcroat} {dstroke}
+\exportsortexpansion{Dcroat} {Dstroke}
+
+% more
+
+\exportsortshortcut{\^ A} {\Acircumflex} \exportsortshortcut{\^ a} {\acircumflex}
+\exportsortshortcut{\^ C} {\Ccircumflex} \exportsortshortcut{\^ c} {\ccircumflex}
+\exportsortshortcut{\^ E} {\Ecircumflex} \exportsortshortcut{\^ e} {\ecircumflex}
+\exportsortshortcut{\^ G} {\Gcircumflex} \exportsortshortcut{\^ g} {\gcircumflex}
+\exportsortshortcut{\^ H} {\Hcircumflex} \exportsortshortcut{\^ h} {\hcircumflex}
+\exportsortshortcut{\^ I} {\Icircumflex} \exportsortshortcut{\^ i} {\icircumflex} \exportsortshortcut{\^\i} {\icircumflex}
+\exportsortshortcut{\^ J} {\Jcircumflex} \exportsortshortcut{\^ j} {\jcircumflex} \exportsortshortcut{\^\j} {\jcircumflex}
+\exportsortshortcut{\^ O} {\Ocircumflex} \exportsortshortcut{\^ o} {\ocircumflex}
+\exportsortshortcut{\^ S} {\Scircumflex} \exportsortshortcut{\^ s} {\scircumflex}
+\exportsortshortcut{\^ U} {\Ucircumflex} \exportsortshortcut{\^ u} {\ucircumflex}
+\exportsortshortcut{\^ W} {\Wcircumflex} \exportsortshortcut{\^ w} {\wcircumflex}
+\exportsortshortcut{\^ Y} {\Ycircumflex} \exportsortshortcut{\^ y} {\ycircumflex}
+
+\exportsortshortcut{\` A} {\Agrave} \exportsortshortcut{\` a} {\agrave}
+\exportsortshortcut{\` E} {\Egrave} \exportsortshortcut{\` e} {\egrave}
+\exportsortshortcut{\` I} {\Igrave} \exportsortshortcut{\` i} {\igrave} \exportsortshortcut{\`\i} {\igrave}
+\exportsortshortcut{\` O} {\Ograve} \exportsortshortcut{\` o} {\ograve}
+\exportsortshortcut{\` U} {\Ugrave} \exportsortshortcut{\` u} {\ugrave}
+\exportsortshortcut{\` Y} {\Ygrave} \exportsortshortcut{\` y} {\ygrave}
+
+\exportsortshortcut{\~ A} {\Atilde} \exportsortshortcut{\~ a} {\atilde}
+\exportsortshortcut{\~ I} {\Itilde} \exportsortshortcut{\~ i} {\itilde} \exportsortshortcut{\~\i} {\itilde}
+\exportsortshortcut{\~ O} {\Otilde} \exportsortshortcut{\~ o} {\otilde}
+\exportsortshortcut{\~ U} {\Utilde} \exportsortshortcut{\~ u} {\utilde}
+
+\exportsortshortcut{\" A} {\Adiaeresis} \exportsortshortcut{\" a} {\adiaeresis}
+\exportsortshortcut{\" E} {\Ediaeresis} \exportsortshortcut{\" e} {\ediaeresis}
+\exportsortshortcut{\" I} {\Idiaeresis} \exportsortshortcut{\" i} {\idiaeresis} \exportsortshortcut{\"\i} {\idiaeresis}
+\exportsortshortcut{\" O} {\Odiaeresis} \exportsortshortcut{\" o} {\odiaeresis}
+\exportsortshortcut{\" U} {\Udiaeresis} \exportsortshortcut{\" u} {\udiaeresis}
+\exportsortshortcut{\" Y} {\Ydiaeresis} \exportsortshortcut{\" y} {\ydiaeresis}
+
+\exportsortshortcut{\' A} {\Aacute} \exportsortshortcut{\' a} {\aacute}
+\exportsortshortcut{\' C} {\Cacute} \exportsortshortcut{\' c} {\cacute}
+\exportsortshortcut{\' E} {\Eacute} \exportsortshortcut{\' e} {\eacute}
+\exportsortshortcut{\' I} {\Iacute} \exportsortshortcut{\' i} {\iacute} \exportsortshortcut{\'\i} {\iacute}
+\exportsortshortcut{\' L} {\Lacute} \exportsortshortcut{\' l} {\lacute}
+\exportsortshortcut{\' N} {\Nacute} \exportsortshortcut{\' n} {\nacute}
+\exportsortshortcut{\' O} {\Oacute} \exportsortshortcut{\' o} {\oacute}
+\exportsortshortcut{\' R} {\Racute} \exportsortshortcut{\' r} {\racute}
+\exportsortshortcut{\' S} {\Sacute} \exportsortshortcut{\' s} {\sacute}
+\exportsortshortcut{\' U} {\Uacute} \exportsortshortcut{\' u} {\uacute}
+\exportsortshortcut{\' Y} {\Yacute} \exportsortshortcut{\' y} {\yacute}
+\exportsortshortcut{\' Z} {\Zacute} \exportsortshortcut{\' z} {\zacute}
+
+\exportsortshortcut{\. C} {\Cdotaccent} \exportsortshortcut{\. c} {\cdotaccent}
+\exportsortshortcut{\. E} {\Edotaccent} \exportsortshortcut{\. e} {\edotaccent}
+\exportsortshortcut{\. G} {\Gdotaccent} \exportsortshortcut{\. g} {\gdotaccent}
+\exportsortshortcut{\. I} {\Idotaccent} \exportsortshortcut{\. i} {\idotaccent} \exportsortshortcut{\.\i} {\idotaccent}
+\exportsortshortcut{\. Z} {\Zdotaccent} \exportsortshortcut{\. z} {\zdotaccent}
+
+\exportsortshortcut{\= A} {\Amacron} \exportsortshortcut{\= a} {\amacron}
+\exportsortshortcut{\= E} {\Emacron} \exportsortshortcut{\= e} {\emacron}
+\exportsortshortcut{\= I} {\Imacron} \exportsortshortcut{\= i} {\imacron} \exportsortshortcut{\=\i} {\imacron}
+\exportsortshortcut{\= O} {\Omacron} \exportsortshortcut{\= o} {\omacron}
+\exportsortshortcut{\= U} {\Umacron} \exportsortshortcut{\= u} {\umacron}
+
+\exportsortshortcut{\c C} {\Ccedilla} \exportsortshortcut{\c c} {\ccedilla}
+\exportsortshortcut{\c K} {\Kcedilla} \exportsortshortcut{\c k} {\kcedilla}
+\exportsortshortcut{\c L} {\Lcedilla} \exportsortshortcut{\c l} {\lcedilla}
+\exportsortshortcut{\c N} {\Ncedilla} \exportsortshortcut{\c n} {\ncedilla}
+\exportsortshortcut{\c R} {\Rcedilla} \exportsortshortcut{\c r} {\rcedilla}
+\exportsortshortcut{\c S} {\Scedilla} \exportsortshortcut{\c s} {\scedilla}
+\exportsortshortcut{\c T} {\Tcedilla} \exportsortshortcut{\c t} {\tcedilla}
+
+\exportsortshortcut{\H O} {\Ohungarumlaut} \exportsortshortcut{\H o} {\ohungarumlaut}
+\exportsortshortcut{\H u} {\uhungarumlaut} \exportsortshortcut{\H U} {\Uhungarumlaut}
+
+\exportsortshortcut{\k A} {\Aogonek} \exportsortshortcut{\k a} {\aogonek}
+\exportsortshortcut{\k E} {\Eogonek} \exportsortshortcut{\k e} {\eogonek}
+\exportsortshortcut{\k I} {\Iogonek} \exportsortshortcut{\k i} {\iogonek}
+\exportsortshortcut{\k U} {\Uogonek} \exportsortshortcut{\k u} {\uogonek}
+
+\exportsortshortcut{\r A} {\Aring} \exportsortshortcut{\r a} {\aring}
+\exportsortshortcut{\r U} {\Uring} \exportsortshortcut{\r u} {\uring}
+
+\exportsortshortcut{\u A} {\Abreve} \exportsortshortcut{\u a} {\abreve}
+\exportsortshortcut{\u E} {\Ebreve} \exportsortshortcut{\u e} {\ebreve}
+\exportsortshortcut{\u G} {\Gbreve} \exportsortshortcut{\u g} {\gbreve}
+\exportsortshortcut{\u I} {\Ibreve} \exportsortshortcut{\u i} {\ibreve} \exportsortshortcut{\u\i} {\ibreve}
+\exportsortshortcut{\u O} {\Obreve} \exportsortshortcut{\u o} {\obreve}
+\exportsortshortcut{\u U} {\Ubreve} \exportsortshortcut{\u u} {\ubreve}
+
+\exportsortshortcut{\v C} {\Ccaron} \exportsortshortcut{\v c} {\ccaron}
+\exportsortshortcut{\v D} {\Dcaron} \exportsortshortcut{\v d} {\dcaron}
+\exportsortshortcut{\v E} {\Ecaron} \exportsortshortcut{\v e} {\ecaron}
+\exportsortshortcut{\v L} {\Lcaron} \exportsortshortcut{\v l} {\lcaron}
+\exportsortshortcut{\v N} {\Ncaron} \exportsortshortcut{\v n} {\ncaron}
+\exportsortshortcut{\v R} {\Rcaron} \exportsortshortcut{\v r} {\rcaron}
+\exportsortshortcut{\v S} {\Scaron} \exportsortshortcut{\v s} {\scaron}
+\exportsortshortcut{\v T} {\Tcaron} \exportsortshortcut{\v t} {\tcaron}
+\exportsortshortcut{\v Z} {\Zcaron} \exportsortshortcut{\v z} {\zcaron}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/sort-ini.tex b/Master/texmf-dist/tex/context/base/sort-ini.tex
new file mode 100644
index 00000000000..84d32e2ff12
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/sort-ini.tex
@@ -0,0 +1,101 @@
+%D \module
+%D [ file=sort-ini,
+%D version=2005.08.08,
+%D title=\CONTEXT\ Sort Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module replaces existing sort key handling and is meant to be
+%D used with the new texutil functionality. This module defines a few
+%D auxiliary macros.
+
+%D The sorting method is largely bases on the one used in the old version
+%D of texutil but i've changed the interface a bit. It all boils down to
+%D a bunch of substitutions. The reimplementation makes it easier to extend
+%D the rules. Currently we have multipass substitution and onepass sorting,
+%D but we may change this some day. Since there is a plugin mechanism, using
+%D an external sorter is also possible.
+
+% test file:
+%
+% \mainlanguage[sl] \readfile{sort-ini}{}{}
+%
+% \starttext
+% test \index {aa1} test \index {ab1} test \index {aa2}
+% test \index {ab2} test \index {aa10} test \index {aa8}
+% test \index {aa9} test \index {aa11} test \index {aa10}
+% test \index {cccc} test \index {\ccaron ccc} test \index {\cacute ccc}
+% test \index {caaa} test \index {\ccaron aaa} test \index {\cacute aaa}
+% \placeindex
+% \stoptext
+
+% definitions:
+%
+% \exportsortshortcut{\\\'\\i}{iacute}
+% \exportsortshortcut{\\\'i} {iacute}
+% \exportsortshortcut{\\\"e} {ediaeresis}
+% \exportsortshortcut{\\\'o} {oacute}
+%
+% \exportsortexpansion{aeligature}{ae}
+% \exportsortexpansion{ijligature}{y}
+% \exportsortexpansion{oacute} {oz}
+% \exportsortexpansion{eacute} {ezzz} % or e3
+% \exportsortexpansion{egrave} {ezz} % or e2
+% \exportsortexpansion{ediaeresis}{ez} % or e1
+% \exportsortexpansion{adiaeresis}{az}
+% \exportsortreduction{ch} {c}
+% \exportsortreduction{ij} {y}
+%
+% \exportsortexpansion{ccaron} {cz}
+% \exportsortexpansion{cacute} {czz}
+% \exportsortexpansion{dstroke} {dz}
+% \exportsortexpansion{scaron} {sz}
+% \exportsortexpansion{zcaron} {zz}
+%
+% \exportsortreduction{ch}{c}
+% \exportsortreduction{ij}{y}
+%
+% \exportsortexpansion {ccaron} {c+1}
+% \exportsortdivision {c+1} {ccaron}
+% ==
+% \exportsortrule {ccaron} {c+1}
+
+\unprotect
+
+\let\currentexportclass\empty
+
+\def\exportsortaction#1#2#3%
+ {\convertargument#2\to\asciia
+ \convertargument#3\to\asciib
+ \immediatewriteutility{x #1 {\currentexportclass} {\asciia} {\asciib}}}
+
+\def\exportsortshortcut {\exportsortaction s}
+\def\exportsortexpansion{\exportsortaction e}
+\def\exportsortreduction{\exportsortaction r}
+\def\exportsortdivision {\exportsortaction d}
+
+\def\exportsortrule#1#2%
+ {\exportsortexpansion{#1}{#2}%
+ \exportsortdivision {#2}{#1}}
+
+% Next we overload some macros defined in enco-ini and core-uti. This
+% will change.
+
+\let\definesortkey\gobblefourarguments
+
+\def\savesortkeys
+ {\globallet\savesortkeys\relax
+ \enablemode[sortorder-\currentmainlanguage]%
+ \readfile{\f!sortprefix new}\donothing\donothing % temporary hacks
+ \readfile{\f!sortprefix def}\donothing\donothing % defaults
+ \readfile{\f!sortprefix lan}\donothing\donothing}% language specifics
+
+% already done \prependtoks \savesortkeys \to \everystarttext
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/sort-lan.tex b/Master/texmf-dist/tex/context/base/sort-lan.tex
new file mode 100644
index 00000000000..60b0699acb9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/sort-lan.tex
@@ -0,0 +1,106 @@
+%D \module
+%D [ file=sort-lan,
+%D version=2005.08.08,
+%D title=\CONTEXT\ Sort Macros,
+%D subtitle=Language Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module replaces existing sort key handling and is meant to be
+%D used with the new texutil functionality. Here we define the language
+%D specific sort rules.
+
+% slovenian
+%
+% a-c, ccaron, cacute, d, dstroke, e-s, scaron, t-z, zcaron
+
+% \startmode[sortorder-sl]
+% \exportsortexpansion {ccaron} {cz}
+% \exportsortexpansion {cacute} {czz}
+% \exportsortexpansion {dstroke} {dz}
+% \exportsortexpansion {scaron} {sz}
+% \exportsortexpansion {zacron} {zz}
+
+% \exportsortdivision {cz} {ccaron}
+% \exportsortdivision {czz} {cacute}
+% \exportsortdivision {dz} {dstroke}
+% \exportsortdivision {sz} {scaron}
+% \exportsortdivision {zz} {zacron}
+% \stopmode
+%
+% \startmode[sortorder-sl]
+% \exportsortexpansion {ccaron} {c+1}
+% \exportsortexpansion {cacute} {c+2}
+% \exportsortexpansion {dstroke} {d+1}
+% \exportsortexpansion {scaron} {s+1}
+% \exportsortexpansion {zacron} {z+1}
+%
+% \exportsortdivision {c+1} {ccaron}
+% \exportsortdivision {c+2} {cacute}
+% \exportsortdivision {d+1} {dstroke}
+% \exportsortdivision {s+1} {scaron}
+% \exportsortdivision {z+1} {zacron}
+% \stopmode
+
+\startmode[sortorder-sl]
+ \exportsortrule {ccaron} {c+1}
+ \exportsortrule {cacute} {c+2}
+ \exportsortrule {dstroke} {d+1}
+ \exportsortrule {scaron} {s+1}
+ \exportsortrule {zacron} {z+1}
+\stopmode
+
+% finnish
+%
+% a-u, v+w sorted together, x-z, aring, adiaeresis, odiaeresis
+
+\startmode[sortorder-fi]
+ \exportsortrule {v} {w}
+ \exportsortrule {aring} {z+1}
+ \exportsortrule {adiaeresis} {z+2}
+ \exportsortrule {odiaeresis} {z+3}
+\stopmode
+
+% swedish
+%
+% a-z, aring, adiaeresis, odiaeresis
+
+\startmode[sortorder-sv]
+ \exportsortrule {aring} {z+1}
+ \exportsortrule {adiaeresis} {z+2}
+ \exportsortrule {odiaeresis} {z+3}
+\stopmode
+
+% norwegian, danish
+%
+% a-z, aeligature, oslash, aring
+
+\startmode[sortorder-no,sortorder-da]
+ \exportsortrule {aeligature} {z+1}
+ \exportsortrule {oslash} {z+2}
+ \exportsortrule {aring} {z+3}
+\stopmode
+
+% islandic
+%
+% a, aacute, b, c, d, eth, e, eacute, f-i, iacute, j-o, oacute, p-u, uacute, v, w (?), x, y, yacute, z, aeligature, oslash, thorn
+
+% estonian
+%
+% a-s, scaron, z, zcaron, t-w, otilde, adiaeresis, odiaeresis, udiaeresis, x, y
+
+% czech
+%
+% a-c ccaron d-
+
+\startmode[sortorder-cz]
+ \exportsortrule {ccaron} {c+1}
+ \exportsortreduction {ch} {c}
+\stopmode
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/sort-new.tex b/Master/texmf-dist/tex/context/base/sort-new.tex
new file mode 100644
index 00000000000..cc6d6983d66
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/sort-new.tex
@@ -0,0 +1,59 @@
+% temporary overloading
+
+\unprotect
+
+\def\strippedcsname
+ {\expandafter\dostrippedcsname\string}
+
+\def\dostrippedcsname#1%
+ {\if\noexpand#1\letterbackslash\else#1\fi}
+
+\def\doregisterreference[#1]#2%
+ {\doifvalue{\??id#1\c!referencing}\v!on
+ {\pagereference[#1:\strippedcsname#2]}}
+
+\def\doprocesspageregister[#1]#2#3% key altnum entry
+ {\begingroup
+ \thisisnextinternal\s!ind
+ \ifduplicate\getlastregisterentry{#3}\fi
+ \convertexpanded{\registerparameter\c!keyexpansion}{#1}\asciiregisterentryA
+ \convertexpanded{\registerparameter\c!expansion }{#3}\asciiregisterentryB
+ \doifsomething{\registerparameter\c!keyexpansion}
+ {\ifx\asciiregisterentryA\empty
+ \convertexpanded{\registerparameter\c!keyexpansion}{#3}\asciiregisterentryA
+ \fi}%
+ \makesectionformat
+ \doifelse{\registerparameter\c!ownnumber}\v!yes
+ \donetrue\donefalse
+ % the spaces between } { are essential for texutil's split
+ \expanded
+ {\writeutility%
+ {r \ifcase\registerpagestatus\space\or e \or f \or t \fi
+ {\currentregister} %
+ {\nextinternalreference} %
+ {\asciiregisterentryA} %
+ {\asciiregisterentryB} %
+ {\sectionformat\sectionseparator\sectionseparator
+ \ifdone#2\else\noexpand\pagenumber\fi} %
+ {\noexpand\realfolio}}}%
+ \getfirstcharacter\currentregister
+ \registerinfo{> \firstcharacter}{#3}%
+ \endgroup}
+
+\def\convertmeaning#1\to % watch the double expansion !
+ {\bgroup
+ \honorunexpanded
+ %dontexpandencoding % new
+ \literateencodedtokens % newer
+ \xdef\@@globalexpanded{#1}%
+ \xdef\@@globalexpanded{\@@globalexpanded}%
+ \egroup
+ \convertcommand\@@globalexpanded\to}
+
+\def\reduceargument#1\to#2%
+ {\begingroup
+ \reducetocoding[raw]%
+ \edef\ascii{#1}%
+ \expandafter\endgroup\expandafter\edef\expandafter#2\expandafter{\ascii}}
+
+\protect
diff --git a/Master/texmf-dist/tex/context/base/spec-def.tex b/Master/texmf-dist/tex/context/base/spec-def.tex
new file mode 100644
index 00000000000..d24d257c708
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-def.tex
@@ -0,0 +1,987 @@
+%D \module
+%D [ file=spec-def,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module used to be integrated in \type {spec-ini},
+%D but testing optimization is more convenient this way.
+
+\writestatus{loading}{Context Special Macros / Definitions}
+
+%D The following libraries are defined. Two postscript
+%D drivers are supported, as well as two mechanisms for
+%D interactive texts.
+%D
+%D \startlinecorrection
+%D \starttable[|l|l|l|l|l|]
+%D \HL
+%D \NC \bf file \NC
+%D \bf name \NC
+%D \bf calls \NC
+%D \bf support \NC
+%D \bf program / driver \NC\SR
+%D \HL
+%D \NC \tttf spec-tex \NC
+%D \tttf tex \NC
+%D \NC
+%D Generic \TEX\ (\DVI) \NC
+%D (default) \NC\FR
+%D \NC \tttf spec-tpd \NC
+%D \tttf \PDF \NC
+%D \NC
+%D Han The Thanh \NC
+%D (pdftex) \NC\MR
+%D \NC \tttf spec-ps \NC
+%D \tttf postscript \NC
+%D \NC
+%D Adobe PostScript \NC
+%D (default) \NC\MR
+%D \NC \tttf spec-tr \NC
+%D \tttf rokicki \NC
+%D \tttf postscript \NC
+%D Thomas Rokicki \NC
+%D (dvips) \NC\MR
+%D \NC \tttf spec-yy \NC
+%D \tttf yandy \NC
+%D \tttf postscript \NC
+%D YandY \NC
+%D (dvipsone, dviwindo) \NC\MR
+%D \NC \tttf spec-pdf \NC
+%D \tttf pdf \NC
+%D \NC
+%D Adobe PDF \NC
+%D (Acrobat) \NC\MR
+%D \NC \tttf spec-win \NC
+%D \tttf dviwindo \NC
+%D YandY \NC
+%D (dviwindo) \NC\MR
+%D \NC \tttf spec-htm \NC
+%D \tttf html \NC
+%D \NC
+%D HTML V 2.0 \NC
+%D (dvips) \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,dostopcolormode}
+%D
+%D Switching to and from color can be done in two ways:
+%D
+%D \startitemize[packed,n]
+%D \item insert driver specific commands
+%D \item pass instructions to the output device
+%D \stopitemize
+%D
+%D The first approach is more general and lays the
+%D responsibility at the driver side. Probably due to the fact
+%D that \TEX\ does not directly support color, we have been
+%D confronted for the last few years with changing special
+%D definitions. The need for support depends on how a macro
+%D package handles colored text that crosses the page boundary.
+%D Again, there are two approaches.
+%D
+%D \startitemize[packed,n]
+%D \item let \TEX\ do the job
+%D \item let the driver handle things
+%D \stopitemize
+%D
+%D The first approach is as driver independant as possible and
+%D can easily be accomplished by using \TEX's mark mechanism.
+%D In \CONTEXT\ we follow this approach. More and more, drivers
+%D are starting to support color, including stacking them.
+%D
+%D Colors as well as grayscales can be represented in scales
+%D from~0 to~1. When drivers use values in the range 0..255,
+%D this value has to be adapted in the translation process.
+%D Technically it's possible to get a grayscale from combining
+%D colors. In the \cap{RGB} color system, a color with Red,
+%D Green and Blue components of 0.80 show the same gray as a
+%D Gray Scale specified 0.80. The \cap{CMYK} color system
+%D supports a Black component apart from Cyan, Magenta and
+%D Yellow.
+%D
+%D Depending on the target format, color support differs from
+%D gray support. PostScript for example offers different
+%D operators for setting gray and color. This is because
+%D printing something using three colors is someting else than
+%D printing with just black.
+%D
+%D In \CONTEXT\ we have implemented a color subsystem that
+%D supports the use of well defined colors that, when printed
+%D in black and white, still can be distinguished. This
+%D approach enables us to serve both printed and electronic
+%D versions, using colored text and illustrations. More on the
+%D fundamentals of this topic can be found in the \cap{MAPS} of
+%D the Dutch User Group, 14 (95.1).
+%D
+%D To satisfy all those needs, we define four specials which
+%D supply enough information for drivers to act upon. We
+%D could have used more general commands with the keywords
+%D 'rgb' and 'gray', but because these specials are used often,
+%D we prefer the more direct and shorter alternative.
+%D
+%D We start with the installation of color and grayscale
+%D specials. The values are in the range 0..1 (e.g. 0.25).
+%D
+%D \starttyping
+%D \dostartgraymode {gray} ... \dostopgraymode
+%D \dostartrgbcolormode {red} {green} {blue} ... \dostopcolormode
+%D \dostartcmykcolormode {cyan} {magenta} {yellow} {black} ... \dostopcolormode
+%D \dostartgraycolormode {gray} ... \dostopcolormode
+%D \stoptyping
+%D
+%D Because we can expect conflicts between drivers, we
+%D implement them as category \type{or}. In previous versions
+%D of \DVIPSONE\ the use of their color||specials did not
+%D interfere with the PostScript ones, but recent versions do.
+
+\installspecial [\dostartgraymode] [or] [1]
+\installspecial [\dostopgraymode] [or] [0]
+
+\installspecial [\dostartrgbcolormode] [or] [3]
+\installspecial [\dostartcmykcolormode] [or] [4]
+\installspecial [\dostartgraycolormode] [or] [1]
+\installspecial [\dostopcolormode] [or] [0]
+
+%D New and experimental:
+
+\installspecial [\dostartspotcolormode] [or] [2]
+
+\installspecial [\doregisterrgbspotcolor] [or] [7]
+\installspecial [\doregistercmykspotcolor] [or] [8]
+\installspecial [\doregistergrayspotcolor] [or] [5]
+
+\installspecial [\doregisterrgbindexcolor] [or] [7]
+\installspecial [\doregistercmykindexcolor] [or] [8]
+\installspecial [\doregistergrayindexcolor] [or] [5]
+
+\installspecial [\doregisterspotcolorname] [or] [2]
+
+\installspecial [\dostartnonecolormode] [or] [0]
+\installspecial [\doregisternonecolor] [or] [0]
+
+%D For some drivers, the stop special is of no use and can
+%D simply call the start one with zero arguments.
+
+%D \macros
+%D {doinsertfile,doinsertMPfile}
+%D
+%D Probably the most problematic special is the following
+%D one. Because we want to be able to support different
+%D schemes, we pass a lot of data to it.
+%D
+%D The support of inserting files (like illustrations) comes in
+%D many flavors. Some drivers use scales, some take dimensions.
+%D Some need offsets and others act on stored characteristics.
+%D They need one thing in common: a filename. Although separate
+%D specials for different formats sometimes are more clear, we
+%D decided to combine them all in one:
+%D
+%D \starttyping
+%D \doinsertfile {type,method} {file,label}
+%D {xscale} {yscale} {x} {y} {w} {h}
+%D {options}
+%D \stoptyping
+%D
+%D The scale is given percents, the other values are base
+%D points.
+%D
+%D The special is implemented as \type{or}. Because \DVIPSONE\
+%D understands them all, a chain of alternatives would generate
+%D multiple occurrences of the same illustration.
+%D
+%D When option 1 is passed, the viewers is asked to present a
+%D preview, like the first frame of a movie.
+
+\installspecial [\doinsertfile] [or] [9]
+\installspecial [\doinsertMPfile] [or] [1] % speed up
+
+%D No start||stop construction is needed here, because there in
+%D no further interference of \TEX. All dimensions are output
+%D in points and scales as a number, where 100 equal 100\%. (We
+%D used to pass scaled points).
+
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D Sounds are (for the moment) just files with
+%D associated options.
+%D
+%D \starttyping
+%D \doinsertsoundtrack {file} {label} {options}
+%D \stoptyping
+
+\installspecial [\doinsertsoundtrack] [or] [3]
+
+%D \macros
+%D {dogetnofinsertpages}
+%D
+%D Some file formats support more than one page, like \PDF,
+%D and for special applications, one may want to have access
+%D to the total number of pages.
+%D
+%D \starttyping
+%D \dogetnofinsertpages{filename}
+%D \stoptyping
+%D
+%D The number is also available after the insert is placed,
+%D since inclusion may take place immediate when an insert is
+%D called upon.
+
+\def\nofinsertpages{1} % one of the few 'talk backs'
+
+\installspecial [\dogetnofinsertpages] [or] [1]
+
+%D \macros
+%D {dostartrotation,
+%D dostoprotation}
+%D
+%D We support rotation with the special:
+%D
+%D \starttyping
+%D \dostartrotation {angle} ... \dostoprotation
+%D \stoptyping
+%D
+%D For the moment these specials are installed as
+%D category \type{or}.
+
+\installspecial [\dostartrotation] [or] [1]
+\installspecial [\dostoprotation] [or] [0]
+
+%D \macros
+%D {dostartscaling,
+%D dostopscaling}
+%D
+%D Scaling is also supported:
+%D
+%D \starttyping
+%D \dostartscaling {x} {y} ... \dostopscaling
+%D \stoptyping
+%D
+%D Like the previous one, these specials are of category
+%D \type{or}.
+
+\installspecial [\dostartscaling] [or] [2]
+\installspecial [\dostopscaling] [or] [0]
+
+%D \macros
+%D {dostartmirroring,
+%D dostopmirroring}
+%D
+%D And indeed, mirroring is there too:
+%D
+%D \starttyping
+%D \dostartmirroring {x} {y} ... \dostopmirroring
+%D \stoptyping
+%D
+%D Again these specials are installed as category \type{or}.
+
+\installspecial [\dostartmirroring] [or] [0]
+\installspecial [\dostopmirroring] [or] [0]
+
+%D \macros
+%D {dostartnegative,
+%D dostopnegative}
+%D
+%D When producing output for an image setter, negating the
+%D page comes into view. Here are the tools:
+
+\installspecial [\dostartnegative] [or] [0]
+\installspecial [\dostopnegative] [or] [0]
+
+%D \macros
+%D {dostartoverprint,
+%D dostopoverprint}
+%D
+%D Rudimentary overprint (knockout) control is implemented
+%D using:
+
+\installspecial [\dostartoverprint] [or] [0]
+\installspecial [\dostopoverprint] [or] [0]
+
+%D The following two specials are used in for instance \type
+%D {\vadjust}'d margin material inside colored paragraphs.
+
+\installspecial [\dostartgraphicgroup] [or] [0]
+\installspecial [\dostopgraphicgroup ] [or] [0]
+
+%D \macros
+%D {doselectfirstpaperbin,
+%D doselectsecondpaperbin}
+%D
+%D Here are some very printer||specific ones. No further
+%D comment.
+
+\installspecial [\doselectfirstpaperbin] [or] [0]
+\installspecial [\doselectsecondpaperbin] [or] [0]
+
+%D \macros
+%D {doovalbox}
+%D
+%D When we look at the implementation, this is a complicated
+%D one. There are seven arguments.
+%D
+%D \starttyping
+%D \doovalbox {w} {h} {d} {linewidth} {radius} {stroke} {fill}
+%D \stoptyping
+%D
+%D This command has to return a \type{\vbox} which can be used
+%D to lay over another one (with text). The radius is in
+%D degrees, the stroke and fill are~\type{1} (true) of~\type{0}
+%D (false).
+
+\installspecial [\doovalbox] [or] [7]
+
+%D \macros
+%D {dostartclipping,dostopclipping}
+%D
+%D Clipping is implemented in such a way that an arbitrary
+%D can be fed.
+%D
+%D \starttyping
+%D \dostartclipping {pathname}{width} {height}
+%D \dostopclipping
+%D \stoptyping
+%D
+%D
+
+\installspecial [\dostartclipping] [or] [3]
+\installspecial [\dostopclipping] [or] [0]
+
+%D \macros
+%D {dosetupidentity}
+%D
+%D We can declare some characteristics of the document with
+%D
+%D \starttyping
+%D \dosetupidentity {title} {subject} {author} {creator} {date} {keys}
+%D \stoptyping
+%D
+%D All data is in string format.
+
+\installspecial [\dosetupidentity] [and] [6]
+
+%D \macros
+%D {dosetuppaper}
+%D
+%D This special can be used to tell the driver what page size
+%D to use. The special takes three arguments.
+%D
+%D \starttyping
+%D \dosetuppaper {type} {width} {height}
+%D \stoptyping
+%D
+%D The type is one of the common identifiers, like A4, A5 or
+%D B2.
+
+\installspecial [\dosetuppaper] [and] [3]
+
+%D \macros
+%D {dosetupprinter}
+%D
+%D Some drivers enable the user to specify the paper type
+%D used and/or page dimensions to be taken into account.
+%D
+%D \starttyping
+%D \dosetupprinter {type} {hoffset} {voffset} {width} {height}
+%D \stoptyping
+%D
+%D The first argument is one of \type{letter}, \type{legal},
+%D \type{A4}, \type{A5} etc. The dimensions are in
+%D basepoints.
+
+\installspecial [\dosetupprinter] [and] [5]
+
+%D \macros
+%D {dosetupopenaction, dosetupclosaction,
+%D dosetupopenpageaction, dosetupclospageaction,
+%D dosetupinteraction,
+%D dosetupscreen,
+%D dosetupviewmode}
+%D
+%D Here come some obscure interactive commands. Probably the
+%D specs will change with the development of the macros that
+%D use them.
+%D
+%D The first ones can be used to set up the interaction.
+%D
+%D \starttyping
+%D \dosetupinteraction
+%D \stoptyping
+%D
+%D Normally this command does nothing but giving a message
+%D that some scheme is supported.
+%D
+%D \starttyping
+%D \dosetupstartaction
+%D \dosetupstopaction
+%D \stoptyping
+%D
+%D These two setup the actions to be executed when the document
+%D is opened and closed.
+%D
+%D The next commands sets up the page and screen. They are
+%D kind of related.
+%D
+%D \starttyping
+%D \dosetuppage {hoffset} {voffset} {width} {height} {options}
+%D \dosetupscreen {hoffset} {voffset} {width} {height} {options}
+%D \stoptyping
+%D
+%D The first four arguments are in points. Option~1 results in a
+%D full screen launch.
+%D
+%D \starttyping
+%D \dosetuppageview {keyword}
+%D \stoptyping
+%D
+%D For the moment we only support \type{fit}.
+
+\installspecial [\dosetupinteraction] [and] [0]
+
+\installspecial [\dosetupopenaction] [and] [0]
+\installspecial [\dosetupscreen] [and] [5]
+\installspecial [\dosetuppageview] [and] [1]
+
+\installspecial [\dosetupcloseaction] [and] [0]
+\installspecial [\dosetupopenpageaction] [and] [0]
+\installspecial [\dosetupclosepageaction] [and] [0]
+\installspecial [\dosetuprenderingopenpageaction] [and] [0]
+\installspecial [\dosetuprenderingclosepageaction] [and] [0]
+
+% new, yet undocumented, replaces \dosetupscreen
+
+\installspecial [\dosetupcropbox] [and] [4]
+\installspecial [\dosetuptrimbox] [and] [4]
+\installspecial [\dosetupartbox] [and] [4]
+\installspecial [\dosetupbleedbox] [and] [4]
+
+%D \macros
+%D {dostarthide,
+%D dostophide}
+%D
+%D Not every part of the screen is suitable for paper. Menus
+%D for instance have no meaning on an non||interactive medium.
+%D These elements are hidden by means of:
+%D
+%D \starttyping
+%D \dostarthide
+%D \dostophide
+%D \stoptyping
+
+\installspecial [\dostarthide] [or] [0]
+\installspecial [\dostophide] [or] [0]
+
+%D \macros
+%D {dostartgotolocation, dostopgotolocation,
+%D dostartgotorealpage, dostopgotorealpage}
+%D
+%D When we want to support hypertext buttons, again we have
+%D to deal with two concepts.
+%D
+%D \startitemize[packed,n]
+%D \item let \TEX\ highlight the text
+%D \item let the driver show us where to click
+%D \stopitemize
+%D
+%D The first approach is the most secure one. It gives us
+%D complete control over the visual appearance of hyper
+%D buttons. The second alternative lets the driver guess what
+%D part of the text needs highlighting. As long as we deal with
+%D not too complicated textual buttons, this is no problem.
+%D It's even a bit more efficient when we take long mid
+%D paragraph active regions into account. When we let \TEX\
+%D handle active sentences {\em for instance marked like this
+%D one}, we have to take care of line- and pagebreaks ourselve.
+%D However, it's no trivial matter to let a driver find out
+%D where things begin and end. Because most hyperlinks can be
+%D found in tables of contents and registers, the saving in
+%D terms of bytes can be neglected and the first approach is a
+%D clear winner.
+%D
+%D The most convenient way of cross||referencing is using named
+%D destinations. A more simple scheme is using page numbers as
+%D destinations. Because the latter alternative can often be
+%D implemented more efficient, and because we cannot be sure
+%D what scheme a driver supports, we always have to supply a
+%D pagenumber, even when we use named destinations.
+%D
+%D To enable a driver to find out what to make active, we have
+%D to provide begin and endpoints, so like with color, we use
+%D pairs of specials. The first scheme can be satisfied with
+%D proper dimensions of the areas to be made active.
+%D
+%D The interactive real work is done by the following four
+%D specials. The reason for providing the first one with both
+%D a label and a number, is a result of the quite poor
+%D implementation of \type{pdfmarks} in version 1.0 of
+%D Acrobat. Because only pagenumbers were supported as
+%D destination, we had to provide both labels (\DVIWINDO) and
+%D pagenumbers (\PDF). Some drivers use start stop pairs.
+%D
+%D \starttyping
+%D \dostartgotolocation {w} {h} {url} {file} {label} {page}
+%D \dostartgotorealpage {w} {h} {url} {file} {page}
+%D \stoptyping
+%D
+%D Their counterparts are:
+%D
+%D \starttyping
+%D \dostopgotolocation
+%D \dostopgotorealpage
+%D \stoptyping
+%D
+%D The internal alternative is used for system||generated
+%D links, the external one for user||generated links. The
+%D Uniform Resource Locator can be used to let the reader
+%D surf the net.
+
+\installspecial [\dostartgotolocation] [and] [6]
+\installspecial [\dostopgotolocation] [and] [0]
+\installspecial [\dostartgotorealpage] [and] [5]
+\installspecial [\dostopgotorealpage] [and] [0]
+
+%D One may wonder why jumps to page and location are not
+%D combined. By splitting them, we enable macro||packages to
+%D force the prefered alternative, while on the other hand
+%D drivers can pick up the alternative desired most.
+
+%D \macros
+%D {dostartgotoJS, doflushJSpreamble}
+%D
+%D Rather special is the option to include and execute
+%D JavaScript code. This is a typical \PDF\ option.
+%D
+%D \starttyping
+%D \dostartgotoJS {w} {h} {script}
+%D \stoptyping
+%D
+%D This not so standard \TEX\ feature should be used with
+%D care. Preamble scripts are flushed by
+%D
+%D \doflushJSpreamble {script}
+
+\installspecial [\dostartgotoJS] [and] [3]
+\installspecial [\dostopgotoJS] [and] [0]
+\installspecial [\doflushJSpreamble][and] [1]
+
+%D \macros
+%D {dostartthisislocation, dostopthisislocation,
+%D dostartthisisrealpage, dostopthisisrealpage}
+%D
+%D Before we can goto some location or page, we have to tell
+%D the system where it can be found. Because some drivers
+%D follow the \SGML\ approach of begin||end tags, we have to
+%D support pairs. A possible extension to this scheme is
+%D supplying coordinates for viewing the text.
+%D
+%D The opposite commands of \type{\dogotosomething} have only
+%D one argument:
+%D
+%D \starttyping
+%D \dostartthisislocation {label}
+%D \dostartthisisrealpage {page}
+%D \stoptyping
+%D
+%D These commands are accompanied by:
+%D
+%D \starttyping
+%D \dostopthisislocation
+%D \dostopthisisrealpage
+%D \stoptyping
+%D
+%D As with all interactive commands's they are installed as
+%D \type{and} category specials.
+
+\installspecial [\dostartthisislocation] [and] [1]
+\installspecial [\dostopthisislocation] [and] [0]
+\installspecial [\dostartthisisrealpage] [and] [1]
+\installspecial [\dostopthisisrealpage] [and] [0]
+
+%D In \CONTEXT\ we don't use the \type{\stopsomething}
+%D macros because we let \TEX\ take care of typographic
+%D issues.
+
+%D \macros
+%D {doresetgotowhereever}
+%D
+%D These and others need:
+
+\installspecial [\doresetgotowhereever] [and] [0]
+
+%D \macros
+%D {dostartexecutecommand, dostopexecutecommand}
+%D
+%D The actual behavior of the next pair of commands depends
+%D much on the viewing engine. Therefore one cannot depend
+%D too much on their support.
+%D
+%D \starttyping
+%D \dostartexecutecommand {w} {h} {command} {options}
+%D \stoptyping
+%D
+%D At least the next commands are supported (more examples
+%D can be found in \type {spec-fdf.tex}:
+%D
+%D \startlinecorrection\setupalign[middle]\leavevmode
+%D \starttable[|l|l|]
+%D \HL
+%D \NC \bf command \NC \bf action \NC\SR
+%D \HL
+%D \NC first \NC go to the first page \NC\FR
+%D \NC previous \NC go to the previous page \NC\MR
+%D \NC next \NC go to the next page \NC\MR
+%D \NC last \NC go to the last page \NC\MR
+%D \NC backward \NC go back to the link list \NC\MR
+%D \NC forward \NC go forward in the link list \NC\MR
+%D \NC print \NC enter print mode \NC\MR
+%D \NC exit \NC exit viewer \NC\MR
+%D \NC close \NC close document \NC\MR
+%D \NC enter \NC enter viewer \NC\MR
+%D \NC help \NC show help on the viewer \NC\LR
+%D \HL
+%D \stoptable
+%D \stoplinecorrection
+%D
+%D Options are to be passed as a comma separated list of
+%D assignments.
+
+\installspecial [\dostartexecutecommand] [and] [4]
+\installspecial [\dostopexecutecommand] [and] [0]
+
+%D \macros
+%D {dostartobject,
+%D dostopobject,
+%D doresetobjects,
+%D doinsertobject}
+%D
+%D Reuse of object can reduce the output filesize
+%D considerably. Reusable objects are implemented with:
+%D
+%D \starttyping
+%D \dostartobject{class}{name}{width}{height}{depth}
+%D some typeset material
+%D \dostopobject
+%D \stoptyping
+%D
+%D \starttyping
+%D \doinsertobject{class}{name}
+%D \stoptyping
+%D
+%D The savings can be huge in interactive texts. The next macro needs
+%D to be called after a graphic is inserted (in order to clean up
+%D global references).
+%D
+%D \starttyping
+%D \doresetobjects
+%D \stoptyping
+
+\installspecial [\dostartobject] [or] [5]
+\installspecial [\dostopobject] [or] [0]
+\installspecial [\doinsertobject] [or] [2]
+\installspecial [\doresetobjects] [or] [0]
+
+%D \macros
+%D {doregisterfigure, doregisterfigurecolor}
+%D
+%D Images can be objects as well and it's up to the driver to
+%D handle this. Alternative images are also up to the driver,
+%D and the next macro tells the driver that the previous image
+%D is somehow followed by another and that both have to be
+%D handled together. This is a rather fuzzy model, but for the
+%D moment it suits its purpose: low res screen versions combined
+%D with high res printable ones.
+
+\installspecial [\doregisterfigure] [or] [2]
+\installspecial [\doregisterfigurecolor][or] [1]
+
+% %D \macros
+% %D {dogetobjectreference}
+% %D
+% %D For very special purposes, one can ask for the internal
+% %D reference to the object. Beware!
+%
+% \installspecial [\dogetobjectreference] [or] [3]
+%
+% %D The first argument is the name, the second a macro that
+% %D gets the associated value.
+
+%D \macros
+%D {dostartrunprogram, dostoprunprogram,
+%D dostartgotoprofile, dostopgotoprofile,
+%D dobeginofprofile,
+%D doendofprofile}
+%D
+%D These specials are still experimental. They are not yet
+%D supported by the programs the way they should be.
+%D
+%D {\em --- still undocumented ---}
+
+\installspecial [\dostartrunprogram] [and] [4]
+\installspecial [\dostoprunprogram] [and] [0]
+\installspecial [\dostartgotoprofile] [and] [3]
+\installspecial [\dostopgotoprofile] [and] [0]
+\installspecial [\dobeginofprofile] [and] [4]
+\installspecial [\doendofprofile] [and] [0]
+
+%D \macros
+%D {doinsertbookmark}
+%D
+%D Bookmarks, that is viewer generated tables of contents, are
+%D a strange phenomena, mainly because \TEX\ can provide
+%D whatever kind of table in much better quality.
+
+\installspecial [\doinsertbookmark] [and] [5]
+
+%D This special is called as:
+%D
+%D \starttyping
+%D \doinstallbookmark {level} {nofsubentries} {text} {page} {open}
+%D \stoptyping
+%D
+%D This definition is very \PDF\ oriented, so for more
+%D information we kindly refer to the \PDF\ manuals.
+
+%D \macros
+%D {dosetpagetransition}
+%D
+%D In presentations, fancy page transitions can, at least for a
+%D short moment, let the audience focus at the screen. Like the
+%D previous one, this special is very \PDF.
+%D
+%D \starttyping
+%D \dosetpagetransition{dissolve}{0}
+%D \stoptyping
+%D
+%D Transitions have symbolic names, like dissolve, box, split,
+%D blinds, wipe and glitter. The second argument determines
+%D the wait time (unless zero).
+
+\installspecial [\dosetpagetransition] [or] [2]
+
+%D \macros
+%D {dopresettextfield,dopresetlinefield,
+%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield,
+%D dopresetbuttonfield,dopresetcheckfield,
+%D dopresetradiofield,dopresetradiorecord}
+%D
+%D The special drivers are programmed independant from their
+%D calling macros are thereby use the standard \TEX\ way of
+%D passing parameters. Unfortunately fields often have more
+%D than nine characteristics, so we pack some arguments in one.
+%D
+%D \starttyping
+%D \dopresettextfield / \dopresetlinefield
+%D {name} {width} {height} {default} {length}
+%D {style,color} {options} {alignment} {actions}
+%D
+%D \dopresetchoicefield / \dopresetpopupfield / \dopresetcombofield
+%D {name} {width} {height} {default}
+%D {style,color} {options} {values} {actions}
+%D
+%D \dopresetpushfield
+%D {name} {width} {height} {default}
+%D {options} {values} {actions}
+%D
+%D \dopresetcheckfield
+%D {name} {width} {height} {default}
+%D {options} {values} {actions}
+%D
+%D \dopresetradiofield
+%D {name} {width} {height} {default}
+%D {options} {parent} {values} {actions}
+%D
+%D \dopresetradiorecord
+%D {name} {top} {options} {kids} {actions}
+%D \stoptyping
+
+\installspecial [\dopresetlinefield] [or] [9]
+\installspecial [\dopresettextfield] [or] [9]
+\installspecial [\dopresetchoicefield] [or] [8]
+\installspecial [\dopresetpopupfield] [or] [8]
+\installspecial [\dopresetcombofield] [or] [8]
+\installspecial [\dopresetpushfield] [or] [7]
+\installspecial [\dopresetcheckfield] [or] [7]
+\installspecial [\dopresetradiofield] [or] [8]
+\installspecial [\dopresetradiorecord] [or] [5]
+
+%D \macros
+%D {dodefinefieldset,dogetfieldset,doiffieldset}
+%D
+%D Field sets, used in resetting and submitting, are handled
+%D by:
+
+\installspecial [\dodefinefieldset] [or] [2]
+\installspecial [\dogetfieldset] [or] [1]
+\installspecial [\doiffieldset] [or] [2]
+
+%D \macros
+%D {dosetfieldstatus}
+%D
+%D For practical reasons we set some field characteristics
+%D using:
+%D
+%D \starttyping
+%D \dosetfieldstatus {mode} {parent} {kids} {root}
+%D \stoptyping
+
+\installspecial [\dosetfieldstatus] [or] [4]
+
+%D with:
+
+\def\fieldlonermode {0} % no \chardef here
+\def\fieldparentmode{1} % no \chardef here
+\def\fieldchildmode {2} % no \chardef here
+\def\fieldcopymode {3} % no \chardef here
+
+%D \macros
+%D {doregistercalculationset}
+%D
+%D We can define a calculation order list with:
+%D
+%D \starttyping
+%D \doregistercalculationset {set identifier}
+%D \stoptyping
+
+\installspecial [\doregistercalculationset] [or] [1]
+
+%D \macros
+%D {doinsertcomment, doflushcomments}
+%D
+%D Not so much out of need, but to be complete, we also
+%D implement text annotations, so called comment:
+%D
+%D \starttyping
+%D \doinsertcomment
+%D {title} {width} {height} {color} {open} {symbol} {collect} {data}
+%D \stoptyping
+%D
+%D When enables, comments can be collected and flushed:
+%D
+%D \starttyping
+%D \doflushcomments
+%D \stoptyping
+
+\installspecial[\doinsertcomment] [and] [8]
+\installspecial[\doflushcomments] [and] [0]
+
+%D \macros
+%D {dosetposition, dosetpositionwhd, dosetpositionplus,
+%D dosetpositionpapersize}
+%D
+%D Not natural to \TEX, but available in \PDFTEX, and by
+%D means of postprocessed \DVI, we can save and call upon
+%D positions.
+%D
+%D \starttyping
+%D \dosetposition {identifier}
+%D \dosetpositionwhd {identifier} {width} {height} {depth}
+%D \dosetpositionplus {identifier} {width} {height} {depth} {list}
+%D \dosetpositionpapersize {width} {height}
+%D \stoptyping
+%D
+%D This is one of the few specials where when using \PDFTEX\
+%D the driver directly deals with the utility file.
+
+\installspecial [\dosetposition] [or] [1]
+\installspecial [\dosetpositionwhd] [or] [4]
+\installspecial [\dosetpositionplus] [or] [5]
+\installspecial [\dosetpositionpapersize] [or] [2]
+
+%D \macros
+%D {dostarttransparency,dostoptransparency}
+%D
+%D \starttyping
+%D \dostarttransparency{fraction}{type}
+%D \dostoptransparency
+%D \stoptyping
+%D
+%D Although in \CONTEXT\ transparency is closely integrated
+%D in the color drivers, in the end it is an independent
+%D feature.
+
+\installspecial [\dostarttransparency] [or] [2]
+\installspecial [\dostoptransparency] [or] [0]
+
+%D \macros
+%D {doattachfile}
+%D
+%D \starttyping
+%D \doattachfile{title}{width}{height}{depth}{color}{symbol}{filename}{source}
+%D \stoptyping
+
+\installspecial [\doattachfile] [or] [8]
+
+%D Experimental (properties):
+
+\installspecial[\dostartviewerlayer] [or] [1]
+\installspecial[\dostopviewerlayer] [or] [0]
+\installspecial[\dodefineviewerlayer] [or] [5]
+%installspecial[\doflushviewertextlayers] [or] [0]
+%installspecial[\doflushviewerpagelayers] [or] [0]
+\installspecial[\domakeviewerlayerlist] [or] [1]
+
+\installspecial[\doinsertrenderingwindow] [or] [4]
+\installspecial[\doinsertrendering] [or] [4]
+\installspecial[\doinsertrenderingobject] [or] [4]
+\installspecial[\doinsertrenderingobject] [or] [4]
+
+\installspecial[\dostartfonteffect] [or] [3]
+\installspecial[\dostopfonteffect] [or] [0]
+
+%D From now on, mapfile loading is also a special; we assume the
+%D more or less standard dvips syntax.
+
+\installspecial[\doresetmapfilelist] [and] [0]
+\installspecial[\doloadmapfile] [and] [2] % + - = | filename
+\installspecial[\doloadmapline] [and] [2] % + - = | fileline
+
+%D We define a couple of backends:
+
+\defineoutput [dvipsone] [dvi,ps,yy]
+\defineoutput [dviwindo] [dvi,ps,yy,win]
+\defineoutput [dvips] [dvi,ps,tr]
+\defineoutput [dviview] [dvi,ps,tr,dv]
+\defineoutput [pdftex] [tpd]
+\defineoutput [pdf] [tpd]
+\defineoutput [dvipdfm] [dpm]
+\defineoutput [dpm] [dpm]
+\defineoutput [dvipdfmx] [dpx]
+\defineoutput [dpx] [dpx]
+\defineoutput [acrobat] [pdf,ps,tr]
+
+\defineoutput [xetex] [dvi,xtx]
+\defineoutput [xtx] [dvi,xtx]
+
+%D Please let me know if we need more. From now on we default
+%D to:
+
+\setupoutput [dvips]
+
+%D We don't enable \ACROBAT, because pure \POSTSCRIPT\ is not
+%D that strong on objects and \PDFTEX\ does a better job.
+%D Some reasonable alternatives are:
+%D
+%D \starttyping
+%D \setupoutput [dvipsone,acrobat]
+%D \setupoutput [dviwindo,acrobat]
+%D \stoptyping
+%D
+%D Although, better is:
+%D
+%D \starttyping
+%D \setupoutput [pdftex]
+%D \stoptyping
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-dpm.tex b/Master/texmf-dist/tex/context/base/spec-dpm.tex
new file mode 100644
index 00000000000..65714d74ced
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-dpm.tex
@@ -0,0 +1,448 @@
+%D \module
+%D [ file=spec-dpm,
+%D version=1998.11.24,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=DVIPDFM support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D This driver is build on top of the general \PDF\ macros,
+%D as defined in \type{spec-fdf}, so we inherit that one. Remark:
+%D this driver is no longer actively maintained, use the dpx one
+%D instead!
+
+\startspecials[dpm][reset,fdf]
+
+%D \macros
+%D {jobsuffix}
+%D
+%D Because no intermediate output format is used, we set the
+%D jobsuffix to \PDF.
+
+\setjobsuffix{pdf}
+
+%D Literal \PDF\ inclusion is implemented as:
+
+\def\PDFcode #1{\special{pdf: content #1}}
+\def\PDFcontentcode#1{\special{pdf: content #1}}
+\def\PDFdirectcode #1{\special{pdf: literal #1}}
+
+%D \macros
+%D {dosetuppaper}
+%D
+%D A simple one.
+
+\def\doDPMsetuppaper#1#2#3%
+ {\bgroup
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \special{pdf: pagesize width \width height \height}%
+ \global\let\doDPMsetuppaper\gobblethreearguments
+ \egroup}
+
+\definespecial\dosetuppaper#1#2#3%
+ {\doDPMsetuppaper{#1}{#2}{#3}}
+
+%D \macros
+%D {doinsertfile}
+%D
+%D Only \METAPOST, \JPG\ and \PDF\ inclusion are supported.
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\dodoinsertfile{dpm}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}
+
+\definefileinsertion{dpm}{mps}#1#2#3#4#5#6#7#8#9%
+ {\PointsToWholeBigPoints{#7}\width
+ \PointsToWholeBigPoints{#8}\height
+ % brrr, should use #1->#9
+ \special
+ {PSfile="#1"\space
+ llx=\EPSllx\space lly=\EPSlly\space
+ urx=\EPSurx\space ury=\EPSury\space
+ rwi=\width0\space rhi=\height0}}
+
+\definefileinsertion{dpm}{pdf}#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \scratchdimen#7\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#8\edef\height{\the\scratchdimen\space}%
+ \special{pdf: epdf width \width height \height (#1)}%
+ \egroup}
+
+\definefileinsertion{dpm}{jpg}#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \scratchdimen#7\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#8\edef\height{\the\scratchdimen\space}%
+ \special{pdf: image width \width height \height (#1)}%
+ \egroup}
+
+\definefileinsertion{dpm}{mov}{\doPDFinsertmov}
+\definefileinsertion{dpm}{avi}{\doPDFinsertmov}
+
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D Sounds are supported too.
+
+\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack}
+
+%D \macros
+%D {doovalbox}
+
+\definespecial\doovalbox{\doPDFovalbox}
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,
+%D dostopcolormode,
+%D dostartrotation,dostoprotation,
+%D dostartscaling,dostopscaling,
+%D dostartmirroring,dostopmirroring,
+%D dostartnegative,dostopnegative}
+%D
+%D Unfortunately the direct \PDF\ inclusion is not suited
+%D for the next macros, which means that we cannot use the
+%D \type {\doPDF..} alternatives. Since \CONTEXT\ maintains
+%D its own colorstack, we use the \DVIPS\ alternatives.
+
+\definespecial\dostartgraymode #1{\special{color gray #1}}
+\definespecial\dostopgraymode {\special{color gray 0}}
+\definespecial\dostartrgbcolormode #1#2#3{\special{color rgb #1 #2 #3}}
+\definespecial\dostartcmykcolormode#1#2#3#4{\special{color cmyk #1 #2 #3 #4}}
+\definespecial\dostartgraycolormode #1{\special{color gray #1}}
+\definespecial\dostopcolormode {\special{color gray 0}}
+\definespecial\dostartrotation #1{\special{pdf: bt rotate #1}}
+\definespecial\dostoprotation {\special{pdf: et}}
+\definespecial\dostartscaling #1#2{\special{pdf: bt xscale #1 yscale #2}}
+\definespecial\dostopscaling {\special{pdf: et}}
+\definespecial\dostartmirroring {\special{pdf: bt xscale -1}} % ?
+\definespecial\dostopmirroring {\special{pdf: et}}
+
+%D Negation is not (yet) supported:
+
+% \definespecial\dostartnegative {}
+% \definespecial\dostopnegative {}
+% \definespecial\dostarttransparency {}
+% \definespecial\dostoptransparency {}
+
+
+%D \macros
+%D {dosetupinteraction,
+%D dosetupopenaction,dosetupcloseaction}
+
+\definespecial\dosetupinteraction%
+ {\showmessage\m!interactions{21}{DVIPDFM}}
+
+\definespecial\dosetupopenaction {\doPDFsetupopenaction}
+\definespecial\dosetupcloseaction{\doPDFsetupcloseaction}
+
+%D \macros
+%D {doresetgotowhereever,
+%D dostartthisisrealpage,dostartthisislocation,
+%D dostartgotorealpage,dostartgotolocation,dostartgotoJS}
+
+\definespecial\doresetgotowhereever {\doPDFresetgotowhereever}
+\definespecial\dostartthisislocation{\doPDFstartthisislocation}
+
+\definespecial\dostartgotolocation{\doPDFstartgotolocation}
+\definespecial\dostartgotorealpage{\doPDFstartgotorealpage}
+\definespecial\dostartgotoJS {\doPDFstartgotoJS}
+
+%D \macros
+%D {doflushJSpreamble}
+
+\definespecial\doflushJSpreamble#1%
+ {\bgroup
+ \let\compositeJScode=\empty
+ \def\docommando##1%
+ {\edef\sanitizedJScode{\getJSpreamble{##1}}%
+ \@EA\doPSsanitizeJScode\sanitizedJScode\to\sanitizedJScode
+ \special{pdf: object @JS:#1 <</S /JavaScript /JS (\sanitizedJScode)>>}%
+ \edef\compositeJScode{\compositeJScode\space (##1) @JS:#1}}%
+ \processcommalist[#1]\docommando
+ \special{pdf: object @JS:JS <</Names [\compositeJScode]>>}%
+ \special{pdf: put @names <</JavaScript @JS:JS>>}%
+ \egroup}
+
+%D \macros
+%D {dostarthide,dostophide}
+
+\definespecial\dostarthide{}
+\definespecial\dostophide {}
+
+%D \macros
+%D {dosetupscreen}
+
+\definespecial\dosetupscreen {\doPDFsetupscreen \printpaperheight}
+
+\definespecial\dosetupartbox {\doPDFsetupartbox \printpaperheight}
+\definespecial\dosetupcropbox {\doPDFsetupcropbox \printpaperheight}
+\definespecial\dosetupbleedbox{\doPDFsetupbleedbox\printpaperheight}
+\definespecial\dosetuptrimbox {\doPDFsetuptrimbox \printpaperheight}
+
+%D \macros
+%D {dostartexecutecommand}
+
+\definespecial\dostartexecutecommand{\doPDFstartexecutecommand}
+
+%D \macros
+%D {dosetupidentity}
+
+\definespecial\dosetupidentity{\doPDFsetupidentity}
+
+%D \macros
+%D {dostartrunprogam}
+
+\definespecial\dostartrunprogram{\doPDFstartrunprogram}
+
+%D \macros
+%D {dostartgotoprofile, dostopgotoprofile,
+%D dobeginofprofile, doendofprofile}
+
+\definespecial\dostartgotoprofile{\doPDFstartgotoprofile}
+
+\definespecial\dobeginofprofile#1#2#3#4%
+ {\bgroup
+ \setPDFdestination{#1}%
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \doifsomething{\PDFdestination}
+ {\special
+ {pdf: thread @ART::\PDFdestination\space
+ width \width height \height
+ <</Title (\PDFdestination)>>}}%
+ \egroup}
+
+\definespecial\doendofprofile%
+ {}
+
+%D \macros
+%D {doinsertbookmark}
+
+\definespecial\doinsertbookmark{\doPDFinsertbookmark}
+
+%D \macros
+%D {dostartobject,dostopobject,doinsertobject}
+
+% \definespecial\dostartobject#1#2#3#4#5%
+% {\bgroup
+% \setbox\nextbox=\hbox\bgroup
+% \dosetobjectreference{#1}{#2}{#1::#2}%
+% \scratchdimen#3\edef\width {\the\scratchdimen\space}%
+% \scratchdimen#4\edef\height{\the\scratchdimen\space}%
+% \special{pdf: bxobj @#1::#2 width \width height \height}}
+
+% \definespecial\dostopobject%
+% {\special{pdf: exobj}%
+% \egroup
+% \smashbox\nextbox
+% \flushatshipout{\box\nextbox}%
+% \egroup}
+
+\definespecial\dostartobject#1#2#3#4#5%
+ {\bgroup
+ \dowithnextbox
+ {\dosetobjectreference{#1}{#2}{#1::#2}%
+ \scratchdimen#3\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#4\edef\height{\the\scratchdimen\space}%
+ \setbox\nextbox\vbox
+ {\special{pdf: bxobj @#1::#2 width \width height \height}%
+ % we need to compensate for the box offset (ugly, sigh)
+ \scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-#4\relax
+ \nextboxdp\zeropoint
+ \nextboxht\zeropoint
+ \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}%
+ \special{pdf: exobj}%
+ \global\let\currentPDFresources\empty}%
+ \smashbox\nextbox
+ \flushatshipout{\box\nextbox}%
+ \egroup}%
+ \hbox\bgroup}
+
+\definespecial\dostopobject
+ {\egroup}
+
+
+\definespecial\doinsertobject#1#2%
+ {\hbox
+ {\dogetobjectreference{#1}{#2}\PDFobjectreference
+ \ifx\PDFobjectreference\empty \else
+ \special{pdf: usexobj @#1::#2}%
+ \fi}}
+
+%D \macros
+%D {dosetpagetransition}
+
+\definespecial\dosetpagetransition{\doPDFsetpagetransition}
+
+%D \macros
+%D {doinsertcomment, doflushcomments}
+
+\definespecial\doinsertcomment{\doPDFinsertcomment}
+\definespecial\doflushcomments{\doPDFflushcomments}
+
+%D \macros
+%D {dopresetlinefield,dopresettextfield,
+%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield,
+%D dopresetpushfield,dopresetcheckfield,
+%D dopresetradiofield,dopresetradiorecord}
+
+\definespecial\dopresetlinefield {\doFDFpresetlinefield}
+\definespecial\dopresettextfield {\doFDFpresettextfield}
+\definespecial\dopresetchoicefield{\doFDFpresetchoicefield}
+\definespecial\dopresetpopupfield {\doFDFpresetpopupfield}
+\definespecial\dopresetcombofield {\doFDFpresetcombofield}
+\definespecial\dopresetpushfield {\doFDFpresetpushfield}
+\definespecial\dopresetcheckfield {\doFDFpresetcheckfield}
+\definespecial\dopresetradiofield {\doFDFpresetradiofield}
+\definespecial\dopresetradiorecord{\doFDFpresetradiorecord}
+
+%D \macros
+%D {dodefinefieldset,dogetfieldset,doiffieldset}
+
+\definespecial\dodefinefieldset{\doFDFdefinefieldset}
+\definespecial\dogetfieldset {\doFDFgetfieldset}
+\definespecial\doiffieldset {\doFDFiffieldset}
+
+%D \macros
+%D {doregistercalculationset}
+
+\definespecial\doregistercalculationset{\doFDFregistercalculationset}
+
+%D \macros
+%D {doPDFdestination}
+
+\def\doPDFdestination name #1%
+ {\special{pdf: dest (#1) [@thispage /View [/Fit]]}}
+
+%D \macros
+%D {doPDFaction,doPDFannotation,ifsharePDFactions}
+%D
+%D Sharing is not yet supported.
+
+\newif\ifsharePDFactions \sharePDFactionsfalse
+
+\def\dodoPDFaction#1#2#3#4%
+ {\ifcollectreferenceactions
+ \xdef\lastPDFaction{#4}%
+ \else
+ \bgroup
+ % this is yet untested
+ %\ifsharePDFactions
+ % \ifcase\similarreference\relax
+ % \xdef\lastPDFaction{<<#4>>}%
+ % \or
+ % \global\advance\nofPDFsimilar by 1
+ % \special{pdf: object @PDF::sim:\the\nofPDFsimilar\space<<#4>>}%
+ % \xdef\lastPDFaction{@PDF::sim:\the\nofPDFsimilar}%
+ % \else
+ % % leave \lastPDFaction untouched
+ % \fi
+ %\else
+ \xdef\lastPDFaction{<<#4>>}%
+ %\fi
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \special{pdf: ann #1 width \width height \height
+ <</Subtype /Link /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /A \lastPDFaction\space>>}%
+ \egroup
+ \fi}
+
+\def\doPDFaction width #1 height #2 action #3%
+ {\dodoPDFaction\empty{#1}{#2}{#3}}
+
+\def\doPDFannotation width #1 height #2 data #3%
+ {\bgroup
+ \scratchdimen#1\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#2\edef\height{\the\scratchdimen\space}%
+ \special{pdf: ann width \width height \height
+ <</Subtype /Link /Border [0 0 0] /A <<#3>>}%
+ \egroup}
+
+%D \macros
+%D {doPDFannotationobject,doPDFactionobject}
+
+\def\doPDFannotationobject class #1 name #2 width #3 height #4 data #5%
+ {\bgroup
+ \scratchdimen#3\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#4\edef\height{\the\scratchdimen\space}%
+ \special{pdf: ann @#1::#2 width \width height \height <<#5>>}%
+ \dosetobjectreference{#1}{#2}{@#1::#2}%
+ \egroup}
+
+\def\doPDFactionobject class #1 name #2 width #3 height #4 action #5%
+ {\dodoPDFaction{@#1::#2}{#3}{#4}{#5}%
+ \dosetobjectreference{#1}{#2}{#1::#2}}
+
+%D \macros
+%D {doPDFaddtocatalog,doPDFaddtoinfo,
+%D doPDFpageattribute,doPDFpagesattribute}
+
+\def\doPDFaddtocatalog#1%
+ {\special{pdf: put @catalog <<#1>>}}
+
+\def\doPDFaddtoinfo#1% Is this auto appended? Not checked!
+ {\special{pdf: docinfo <<#1>>}} % put @docinfo <<#1>>}}
+
+\def\doPDFpageattribute#1%
+ {\special{pdf: put @thispage <<#1>>}}
+
+\def\doPDFpagesattribute#1%
+ {\special{pdf: put @pages <<#1>>}}
+
+\def\doPDFpageresource#1%
+ {\message{[skipping PDF resource]}}
+
+\let\doPDFresetpageresources =\relax
+\let\doPDFresetpageattributes=\relax
+
+%D \macros
+%D {doPDFbookmark}
+
+\def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+ {\ifcase#2\else
+ \scratchcounter#4\advance\scratchcounter\minusone
+ \special{pdf: out \ifcase#5-\fi#2
+ % <</Page \the\scratchcounter\space /View [/Fit] /Title (#3)>>}%
+ <</Title (#3) /A <</S /GoTo /D [@page\number#4\space\PDFpageviewwrd]>> >>}%
+ \fi}
+
+%D \macros
+%D {doPDFdictionaryobject,doPDFarrayobject}
+
+\def\doPDFdictionaryobject class #1 name #2 data #3%
+ {\special{pdf: object @#1::#2 <<#3>>}}
+
+\def\doPDFarrayobject class #1 name #2 data #3%
+ {\special{pdf: object @#1::#2 [#3]}}
+
+%D \macros
+%D {defaultobjectreference,doPDFgetobjectreference}
+
+\def\defaultobjectreference#1#2{#1::#2}
+
+\def\doPDFgetobjectreference#1#2#3%
+ {\dogetobjectreference{#1}{#2}#3%
+ \ifx#3\empty\else\edef#3{{#3}}\fi}
+
+% \def\doPDFgetobjectpage #1#2#3{..}
+% \def\doPDFgetobjectpagereference#1#2#3{..}
+
+\def\doPDFgetpagereference#1#2%
+ {\edef#2{@page#1}}
+
+%D Done.
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-dpx.tex b/Master/texmf-dist/tex/context/base/spec-dpx.tex
new file mode 100644
index 00000000000..161cee303fd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-dpx.tex
@@ -0,0 +1,840 @@
+%D \module
+%D [ file=spec-dpx,
+%D version=2005.08.12,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=DVIPDFMx support,
+%D author=Jin-Hwan Cho,
+%D date=\currentdate,
+%D copyright={Jin-Hwan Cho \& Hans Hagen}]
+%C
+%C DVIPDFMx is an eXtended version of the DVIPDFM, a DVI to PDF
+%C translator, still under construction by Jin-Hwan Cho and
+%C Shunsaku Hirata.
+%C
+%C It supports multi-byte character encodings and large character
+%C sets for East Asian languages by CID-keyed font technology,
+%C and many features including PDF encryption, PDF bookmarks and
+%C annotations with Chinese, Japanese, Korean characters, etc.
+%C
+%C DVIPDFMx (and information) can be downloaded from:
+%C
+%C http://project.ktug.or.kr/dvipdfmx/
+
+\unprotect
+
+%D This driver is built on top of the general \PDF\ macros,
+%D as defined in \type{spec-fdf}, so we inherit that one.
+
+\startspecials[dpx][reset,fdf]
+
+%D 1. Modified codes from \type{spec-dpm}
+
+%D \macros
+%D {jobsuffix}
+%D
+%D Because no intermediate output format is used, we set the
+%D jobsuffix to \PDF.
+
+\setjobsuffix{pdf}
+
+%D Map files (experimental)
+
+\definespecial\doloadmapfile#1#2%
+ {\flushatshipout{\special{pdf:mapfile +#2}}}
+
+%D DVIPDFMx supports the special command \type{pdf: literal ...}
+%D since the version \type{dvipdfmx-20021028}.
+%D
+%D 1. \type{pdf: literal #1} puts the given PDF commands \#1
+%D after changing the text matrix with \type{"1 0 0 1 x y cm"}
+%D to set the current DVI position $(x,y)$ to the origin.
+%D
+%D 2. \type{pdf: literal reverse #1} puts the given PDF commands \#1
+%D after changing the text matrix with \type{"1 0 0 1 -x -y cm"}.
+%D
+%D 3. \type{pdf: literal direct #1} puts directly the given PDF
+%D commands \#1 without changing the text matrix.
+%D
+%D Since the version \type{dvipdfmx-20050812}, the role of the special
+%D command \type{pdf:literal} is changed so that
+%D
+%D 1. \type{pdf:literal #1} puts the given PDF commands \#1
+%D after changing the text matrix with \type{"1 0 0 1 x y cm"}
+%D to set the current DVI position $(x,y)$ to the origin. After that
+%D it restores the previous setting by changing the text matrix with
+%D \type{"1 0 0 1 -x -y cm"}.
+%D
+%D 2. \type{pdf:literal direct #1} puts directly the given PDF commands
+%D #1 without changing the text matrix.
+%D
+%D Literal \PDF\ inclusion is implemented as:
+
+\def\PDFcode #1{\special{pdf:literal #1}}
+\def\PDFcontentcode#1{\special{pdf:content #1}}
+\def\PDFdirectcode #1{\special{pdf:literal direct #1}}
+
+%D \type{\dosetuppaper} in \type{spec-dpm} did not work properly
+%D because DVIPDFM did not permit changing the page size.
+%D
+%D However, DVIPDFMx permits different page size in each page
+%D since the version \type{dvipdfmx-20021028}.
+%D
+%D \macros
+%D {dosetuppaper}
+%D
+%D A simple one.
+
+\definespecial\dosetuppaper#1#2#3%
+ {\bgroup
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \special{pdf:pagesize width \width height \height}%
+ \egroup}
+
+%D \macros
+%D {doinsertfile}
+%D
+%D Only \METAPOST, \BMP\ \JPG\ \PNG\ and \PDF\ inclusion are supported.
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\dodoinsertfile{dpx}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}
+
+%D Even though DVIPDFM supports \METAPOST directly, the funtionality
+%D is not good. It conflicts much with \CONTEXT.
+%D
+%D So, \METAPOST will be treated as the same way as PDFTeX using
+%D MPtoPDF in DVIPDFMx since the version \type{dvipdfmx-20021028}.
+
+%\definefileinsertion{dpx}{mps}#1#2#3#4#5#6#7#8#9%
+% {\hbox
+% {%\convertMPcolors{#1}% plugged in supp-mpe
+% \scratchdimen#3\points \PointsToReal{.01\scratchdimen}\xscale
+% \scratchdimen#4\points \PointsToReal{.01\scratchdimen}\yscale
+% \convertMPtoPDF{#1}\xscale\yscale
+% \global\let\PDFimagereference\empty}}
+
+%D DVIPDFM (and DVIPDFMx too) supports the image files with
+%D the extension, \PDF, \JPG, \PNG, \BMP, and \EPS.
+
+\def\handleepsimage#1#2#3#4#5#6#7#8#9%
+ {\PointsToWholeBigPoints{#7}\width
+ \PointsToWholeBigPoints{#8}\height
+ \special
+ {PSfile="#1"\space
+ llx=\EPSllx\space lly=\EPSlly\space
+ urx=\EPSurx\space ury=\EPSury\space
+ rwi=\width0\space rhi=\height0}}
+
+\definefileinsertion{dpx}{mps}{\handleepsimage}
+\definefileinsertion{dpx}{eps}{\handleepsimage} % unstable
+
+\def\handlebmpimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \scratchdimen#7\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#8\edef\height{\the\scratchdimen\space}%
+ \special{pdf: image width \width height \height (#1)}%
+ \egroup}
+
+\definefileinsertion{dpx}{pdf}{\handlebmpimage}
+\definefileinsertion{dpx}{jpg}{\handlebmpimage}
+\definefileinsertion{dpx}{png}{\handlebmpimage}
+\definefileinsertion{dpx}{bmp}{\handlebmpimage}
+
+\definefileinsertion{dpx}{mov}{\doPDFinsertmov}
+\definefileinsertion{dpx}{avi}{\doPDFinsertmov}
+
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D Sounds are supported too.
+
+\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack}
+
+%D \type{\doPDFovalbox} in \type{spec-fdf} was modifed because
+%D the definition of \type{\PDFcode} was changed in this module.
+%D
+%D \macros
+%D {doPDFovalbox}
+%D
+%D For drawing ovals we use quite raw \PDF\ code. The next
+%D implementation does not differ that much from the one
+%D implemented in the \POSTSCRIPT\ driver.
+
+\def\doPDFovalbox#1#2#3#4#5#6#7% todo: \scratchdimen/\scatchbox
+ {\bgroup
+ \dimen0=#4\divide\dimen0 2
+ \doPDFovalcalc{0pt}{+\dimen0}\xmin
+ \doPDFovalcalc{#1}{-\dimen0}\xmax
+ \doPDFovalcalc{#2}{-\dimen0}\ymax
+ \doPDFovalcalc{-#3}{+\dimen0}\ymin
+ \advance\dimen0 by #5%
+ \doPDFovalcalc{0pt}{+\dimen0}\xxmin
+ \doPDFovalcalc{#1}{-\dimen0}\xxmax
+ \doPDFovalcalc{#2}{-\dimen0}\yymax
+ \doPDFovalcalc{-#3}{+\dimen0}\yymin
+ \doPDFovalcalc{#4}{\zeropoint}\stroke
+ \doPDFovalcalc{#5}{\zeropoint}\radius
+ \edef\dostroke{#6}%
+ \edef\dofill{#7}%
+ \setbox0\hbox
+ {\ifnum\dostroke\dofill>0
+ \ifPDFstrokecolor\else\ifnum\dostroke=1
+ \writestatus\m!colors{pdf stroke color will fail}\wait
+ \fi\fi
+ \special{pdf:content
+ \stroke\space w
+ \xxmin\space \ymin\space m
+ \xxmax\space \ymin\space l
+ \xmax \space \ymin\space \xmax\space \yymin\space y
+ \xmax \space \yymax\space l
+ \xmax \space \ymax\space \xxmax\space \ymax\space y
+ \xxmin\space \ymax\space l
+ \xmin \space \ymax\space \xmin\space \yymax\space y
+ \xmin \space \yymin\space l
+ \xmin \space \ymin\space \xxmin\space \ymin\space y
+ \ifnum\dostroke=1 S \fi
+ \ifnum\dofill=1 f \fi}%
+ \fi}%
+ \wd0=#1\ht0=#2\dp0=#3\box0
+ \egroup}
+
+%D \macros
+%D {doovalbox}
+
+\definespecial\doovalbox{\doPDFovalbox}
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,
+%D dostopcolormode,
+%D dostartrotation,dostoprotation,
+%D dostartscaling,dostopscaling,
+%D dostartmirroring,dostopmirroring,
+%D dostartnegative,dostopnegative}
+%D
+%D Unfortunately the direct \PDF\ inclusion is not suited
+%D for the next macros, which means that we cannot use the
+%D \type {\doPDF..} alternatives. Since \CONTEXT\ maintains
+%D its own colorstack, we use the \DVIPS\ alternatives.
+
+\definespecial\dostartgraymode {\doPDFstartgraymode}
+\definespecial\dostopgraymode {\doPDFstopgraymode}
+\definespecial\dostartrgbcolormode {\doPDFstartrgbcolormode}
+\definespecial\dostartcmykcolormode{\doPDFstartcmykcolormode}
+\definespecial\dostartgraycolormode{\doPDFstartgraycolormode}
+\definespecial\dostartspotcolormode{\doPDFstartspotcolormode}
+\definespecial\dostopcolormode {\doPDFstopcolormode}
+
+\definespecial\doregistercmykspotcolor{\doPDFregistercmykspotcolor}
+\definespecial\doregisterrgbspotcolor {\doPDFregisterrgbspotcolor}
+\definespecial\doregistergrayspotcolor{\doPDFregistergrayspotcolor}
+
+\definespecial\doregistercmykindexcolor{\doPDFregistercmykindexcolor}
+\definespecial\doregisterrgbindexcolor {\doPDFregisterrgbindexcolor}
+\definespecial\doregistergrayindexcolor{\doPDFregistergrayindexcolor}
+
+\definespecial\doregisterfigurecolor{\doPDFregisterfigurecolor}
+
+\definespecial\dostartnonecolormode{\doPDFstartnonecolormode}
+\definespecial\doregisternonecolor {\doPDFregisternonecolor}
+
+\definespecial\dostartrotation #1{\special{pdf:btrans rotate #1}}
+\definespecial\dostoprotation {\special{pdf:etrans}}
+\definespecial\dostartscaling#1#2{\special{pdf:btrans xscale #1 yscale #2}}
+\definespecial\dostopscaling {\special{pdf:etrans}}
+\definespecial\dostartmirroring {\special{pdf:btrans xscale -1}}
+\definespecial\dostopmirroring {\special{pdf:etrans}}
+
+%D Negation is not (yet) supported:
+\definespecial\dostartnegative {\doPDFstartnegative}
+\definespecial\dostopnegative {\doPDFstopnegative}
+\definespecial\dostartoverprint {\doPDFstartoverprint}
+\definespecial\dostopoverprint {\doPDFstopoverprint}
+
+\definespecial\dostarttransparency{\doPDFstarttransparency}
+\definespecial\dostoptransparency {\doPDFstoptransparency}
+
+\PDFtransparencysupportedtrue
+
+\def\@@PDT{@PDT@}
+
+\ifx\PDFcurrenttransparency\undefined
+ \newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1
+\fi
+
+\def\assignPDFtransparency#1#2%
+ {\def\PDFtransparencyidentifier{/Tr#1}%
+ %\def\PDFtransparencyreference{\PDFobjref{#2}}}
+ \def\PDFtransparencyreference{@TR:#2}}
+
+\def\presetPDFtransparency#1#2%
+ {\initializePDFtransparency
+ \executeifdefined{\@@PDT#1:#2}{\dopresetPDFtransparency{#1}{#2}}}
+
+\def\dopresetPDFtransparency#1#2%
+ {\global\advance\PDFcurrenttransparency \plusone
+ %\immediate\pdfobj{\PDFtransparancydictionary{#1}{#2}{}}%
+% \special{pdf: object @TR:\the\PDFcurrenttransparency\space \PDFtransparancydictionary{#1}{#2}{}}%
+ \doPDFreserveDPXobject{TR:\the\PDFcurrenttransparency}{<< >>}%
+ \special{pdf:\doPDFcheckedDPXobject{TR:\the\PDFcurrenttransparency}\PDFtransparancydictionary{#1}{#2}{}}%
+ \edef\PDFtransparencyidentifier{/Tr\the\PDFcurrenttransparency}%
+ %\edef\PDFtransparencyreference {\PDFobjref\pdflastobj}%
+ \edef\PDFtransparencyreference {@TR:\the\PDFcurrenttransparency}%
+ \setxvalue{\@@PDT#1:#2}%
+ {\noexpand\assignPDFtransparency{\the\PDFcurrenttransparency}{\the\PDFcurrenttransparency}}%
+ \appendtoPDFdocumentextgstates
+ {\PDFtransparencyidentifier\space
+ \PDFtransparencyreference\space}}
+
+\def\initializePDFtransparency
+ %{\immediate\pdfobj{\PDFtransparancydictionary{1}{1}{/AIS false}}%
+% {\special{pdf: object @TR:0 \PDFtransparancydictionary{1}{1}{/AIS false}}%
+ {\doPDFreserveDPXobject{TR:0}{<< >>}%
+ \special{pdf:\doPDFcheckedDPXobject{TR:0}\PDFtransparancydictionary{1}{1}{/AIS false}}%
+ \xdef\PDFtransparencyresetidentifier{/Tr0}%
+ %\xdef\PDFtransparencyresetreference{\PDFobjref\pdflastobj}%
+ \xdef\PDFtransparencyresetreference{@TR:0}%
+ \setxvalue{\@@PDT0:0}%
+ %{\noexpand\assignPDFtransparency{0}{\the\pdflastobj}}%
+ {\noexpand\assignPDFtransparency{0}{0}}%
+ \appendtoPDFdocumentextgstates
+ {\PDFtransparencyresetidentifier\space
+ \PDFtransparencyresetreference\space}%
+ \global\let\initializePDFtransparency\relax}
+
+%D \macros
+%D {dosetupinteraction,
+%D dosetupopenaction,dosetupcloseaction}
+
+\definespecial\dosetupinteraction
+ {\showmessage\m!interactions{21}{DVIPDFMx}}
+
+\definespecial\dosetupopenaction {\doPDFsetupopenaction}
+\definespecial\dosetupcloseaction{\doPDFsetupcloseaction}
+
+%D \macros
+%D {doresetgotowhereever,
+%D dostartthisisrealpage,dostartthisislocation,
+%D dostartgotorealpage,dostartgotolocation,dostartgotoJS}
+
+\definespecial\doresetgotowhereever {\doPDFresetgotowhereever}
+\definespecial\dostartthisislocation{\doPDFstartthisislocation}
+
+\definespecial\dostartgotolocation{\doPDFstartgotolocation}
+\definespecial\dostartgotorealpage{\doPDFstartgotorealpage}
+\definespecial\dostartgotoJS {\doPDFstartgotoJS}
+
+%D \macros
+%D {doflushJSpreamble}
+
+\definespecial\doflushJSpreamble#1%
+ {\bgroup
+ \let\compositeJScode\empty
+ \def\docommando##1%
+ {\edef\sanitizedJScode{\getJSpreamble{##1}}%
+ \@EA\doPSsanitizeJScode\sanitizedJScode\to\sanitizedJScode
+ \special{pdf:object @JS:##1 <</S /JavaScript /JS (\sanitizedJScode)>>}%
+ \edef\compositeJScode{\compositeJScode\space (##1) @JS:##1}}%
+ \processcommalist[#1]\docommando
+ \special{pdf:names /JavaScript [\compositeJScode]}%
+ \egroup}
+
+%D \macros
+%D {dostarthide,dostophide}
+
+\definespecial\dostarthide{}
+\definespecial\dostophide {}
+
+%D \macros
+%D {dosetupscreen}
+
+\definespecial\dosetupscreen {\doPDFsetupscreen \printpaperheight}
+
+\definespecial\dosetupartbox {\doPDFsetupartbox \printpaperheight}
+\definespecial\dosetupcropbox {\doPDFsetupcropbox \printpaperheight}
+\definespecial\dosetupbleedbox{\doPDFsetupbleedbox\printpaperheight}
+\definespecial\dosetuptrimbox {\doPDFsetuptrimbox \printpaperheight}
+
+%D \macros
+%D {dostartexecutecommand}
+
+\definespecial\dostartexecutecommand{\doPDFstartexecutecommand}
+
+%D \macros
+%D {dosetupidentity}
+
+\definespecial\dosetupidentity{\doPDFsetupidentity}
+
+%D \macros
+%D {dostartrunprogam}
+
+\definespecial\dostartrunprogram{\doPDFstartrunprogram}
+
+%D \macros
+%D {dostartgotoprofile, dostopgotoprofile,
+%D dobeginofprofile, doendofprofile}
+
+\definespecial\dostartgotoprofile{\doPDFstartgotoprofile}
+
+\definespecial\dobeginofprofile#1#2#3#4%
+ {\bgroup
+ \setPDFdestination{#1}%
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \doifsomething{\PDFdestination}
+ {\special
+ {pdf:thread @ART::\PDFdestination\space
+ width \width height \height
+ <</Title (\PDFdestination)>>}}%
+ \egroup}
+
+\definespecial\doendofprofile
+ {}
+
+%D \macros
+%D {doinsertbookmark}
+
+\definespecial\doinsertbookmark{\doPDFinsertbookmark}
+
+%D \macros
+%D {dostartobject,dostopobject,doinsertobject}
+%D
+%D Modified to support the color shading feature since version
+%D \type{dvipdfmx-20021128}.
+
+% wd nextbox > #3 ivm offset
+
+\definespecial\dostartobject#1#2#3#4#5%
+ {\bgroup
+ \dowithnextbox
+ {\dosetobjectreference{#1}{#2}{@#1::#2}%
+ \scratchdimen#3\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#4\edef\height{\the\scratchdimen\space}%
+ \setbox\nextbox\vbox
+ {\special{pdf:bxobj @#1::#2 width \width height \height}%
+ % we need to compensate for the box offset (ugly, sigh)
+ \scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-#4\relax
+ \nextboxdp\zeropoint
+ \nextboxht\zeropoint
+ \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}%
+ \ifx\currentPDFresources\empty
+ \else
+ \special{pdf:put @resources <<\currentPDFresources\the\pdfpageresources>>}%
+ \global\let\currentPDFresources\empty
+ \fi
+ \special{pdf:exobj}}%
+ \smashbox\nextbox
+ \flushatshipout{\box\nextbox}%
+ \egroup}%
+ \hbox\bgroup}
+
+\definespecial\dostopobject
+ {\egroup}
+
+\definespecial\doinsertobject#1#2%
+ {\hbox
+ {\doPDFgetobjectreference{#1}{#2}\PDFobjectreference
+ \ifx\PDFobjectreference\empty \else
+ \special{pdf:uxobj @#1::#2}%
+ \fi}}
+
+%D \macros
+%D {dosetpagetransition}
+
+\definespecial\dosetpagetransition{\doPDFsetpagetransition}
+
+%D \macros
+%D {doinsertcomment, doflushcomments}
+
+\definespecial\doinsertcomment{\doPDFinsertcomment}
+\definespecial\doflushcomments{\doPDFflushcomments}
+
+%D \macros
+%D {dopresetlinefield,dopresettextfield,
+%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield,
+%D dopresetpushfield,dopresetcheckfield,
+%D dopresetradiofield,dopresetradiorecord}
+
+\definespecial\dopresetlinefield {\doFDFpresetlinefield}
+\definespecial\dopresettextfield {\doFDFpresettextfield}
+\definespecial\dopresetchoicefield{\doFDFpresetchoicefield}
+\definespecial\dopresetpopupfield {\doFDFpresetpopupfield}
+\definespecial\dopresetcombofield {\doFDFpresetcombofield}
+\definespecial\dopresetpushfield {\doFDFpresetpushfield}
+\definespecial\dopresetcheckfield {\doFDFpresetcheckfield}
+\definespecial\dopresetradiofield {\doFDFpresetradiofield}
+\definespecial\dopresetradiorecord{\doFDFpresetradiorecord}
+
+%D \macros
+%D {dodefinefieldset,dogetfieldset,doiffieldset}
+
+\definespecial\dodefinefieldset{\doFDFdefinefieldset}
+\definespecial\dogetfieldset {\doFDFgetfieldset}
+\definespecial\doiffieldset {\doFDFiffieldset}
+
+%D \macros
+%D {doregistercalculationset}
+
+\definespecial\doregistercalculationset{\doFDFregistercalculationset}
+
+%D \type{\doPDFdestination} in \type{spec-dpm} had a bug.
+%D
+%D \macros
+%D {doPDFdestination}
+
+\def\doPDFdestination name #1%
+ {\special{pdf:names /Dests (#1) [@thispage \PDFpageviewwrd]}}
+
+%D \macros
+%D {doPDFaction,doPDFannotation,ifsharePDFactions}
+%D
+%D Sharing is not yet supported.
+
+\newif\ifsharePDFactions \sharePDFactionsfalse
+
+\def\dodoPDFaction#1#2#3#4%
+ {\ifcollectreferenceactions
+ \xdef\lastPDFaction{#4}%
+ \else
+ \bgroup
+ % this is yet untested
+ %\ifsharePDFactions
+ % \ifcase\similarreference\relax
+ % \xdef\lastPDFaction{<<#4>>}%
+ % \or
+ % \global\advance\nofPDFsimilar by 1
+ % \special{pdf: object @PDF::sim:\the\nofPDFsimilar\space<<#4>>}%
+ % \xdef\lastPDFaction{@PDF::sim:\the\nofPDFsimilar}%
+ % \else
+ % % leave \lastPDFaction untouched
+ % \fi
+ %\else
+ \xdef\lastPDFaction{<<#4>>}%
+ %\fi
+ \scratchdimen#2\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#3\edef\height{\the\scratchdimen\space}%
+ \special{pdf:ann #1 width \width height \height
+ <</Subtype /Link /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /A \lastPDFaction\space>>}%
+ \egroup
+ \fi}
+
+\def\doPDFaction width #1 height #2 action #3%
+ {\dodoPDFaction\empty{#1}{#2}{#3}}
+
+%D \type{\doPDFannotation} in \type{spec-dpm} had a bug.
+%D
+%D \type{\doPDFannotation} conflicts with \type{\doPDFinsertmov},
+%D since width and height also defined in \type{\doPDFinsertmov}.
+
+\def\doPDFannotation width #1 height #2 data #3%
+ {\bgroup
+ \edef\data{#3}%
+ \scratchdimen#1\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#2\edef\height{\the\scratchdimen\space}%
+ \special{pdf:ann width \width height \height <<\data>>}%
+ \egroup}
+
+%D \macros
+%D {doPDFannotationobject,doPDFactionobject}
+
+\def\doPDFannotationobject class #1 name #2 width #3 height #4 data #5%
+ {\bgroup
+ \scratchdimen#3\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#4\edef\height{\the\scratchdimen\space}%
+ \special{pdf:ann @#1::#2 width \width height \height <<#5>>}%
+ \dosetobjectreference{#1}{#2}{@#1::#2}%
+ \egroup}
+
+\def\doPDFactionobject class #1 name #2 width #3 height #4 action #5%
+ {\dodoPDFaction{@#1::#2}{#3}{#4}{#5}%
+ \dosetobjectreference{#1}{#2}{@#1::#2}}
+
+%D \macros
+%D {doPDFaddtocatalog,doPDFaddtoinfo,
+%D doPDFpageattribute,doPDFpagesattribute}
+
+% we could move much more to spec-fdf
+
+% \ifx\pdfcatalog \undefined \newtoks\pdfcatalog \fi
+% \ifx\pdfinfo \undefined \newtoks\pdfinfo \fi
+% \ifx\pdfpageattr \undefined \newtoks\pdfpageattr \fi
+% \ifx\pdfpageresources\undefined \newtoks\pdfpageresources \fi
+% \ifx\pdfpagesattr \undefined \newtoks\pdfpagesattr \fi
+
+% \def\doPDFaddtocatalog #1{\expanded{\global\pdfcatalog {#1\the\pdfcatalog }}}
+% \def\doPDFaddtoinfo #1{\expanded{\global\pdfinfo {#1\the\pdfinfo }}}
+% \def\doPDFpageattribute #1{\expanded{\global\pdfpageattr {#1\the\pdfpageattr }}}
+% \def\doPDFpageresource #1{\expanded{\global\pdfpageresources{#1\the\pdfpageresources}}}
+% \def\doPDFpagesattribute#1{\expanded{\global\pdfpagesattr {#1\the\pdfpagesattr }}}
+
+% \def\doPDFresetpageattributes{\global\pdfpageattr\emptytoks}
+% \def\doPDFresetpageresources {\global\pdfpageresources\emptytoks}
+
+% \appendtoks
+% \special{pdf: put @catalog <<#1>>}%
+% \special{pdf: docinfo <<#1>>}%
+% \special{pdf: put @pages <<#1>>}%
+% \to \everylastshipout
+
+% \appendtoks
+% \special{pdf: put @thispage <<#1>>}%
+% \to\everyshipout
+
+\def\doPDFaddtocatalog#1%
+ {\special{pdf:put @catalog <<#1>>}}
+
+\def\doPDFaddtoinfo#1%
+ {\special{pdf:put @docinfo <<#1>>}}
+
+\def\doPDFpageattribute#1%
+ {\special{pdf:put @thispage <<#1>>}}
+
+\def\doPDFpagesattribute#1%
+ {\special{pdf:put @pages <<#1>>}}
+
+\def\doPDFpageresource#1%
+ {\special{pdf:put @resources <<#1>>}}
+
+\let\doPDFresetpageresources \relax
+\let\doPDFresetpageattributes\relax
+
+%D \type{\doPDFbookmark} in \type{spec-dpm} had a bug.
+%D The openbookmark option \#5 is not supported yet.
+%D
+%D \macros
+%D {doPDFbookmark}
+
+\def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+ {\ifcase#1\else
+ %\scratchcounter#4\advance\scratchcounter\minusone
+ \special{pdf:outline #1 %\ifcase#5 opened\fi
+ % <</Title (#3) /A <</S /GoTo /D (page:\the\scratchcounter)>>>>}%
+ <</Title (#3) /A <</S /GoTo /D [@page\number#4\space\PDFpageviewwrd]>> >>}%
+ \fi}
+
+%D \macros
+%D {doPDFdictionaryobject,doPDFarrayobject}
+
+% Dvipdfmx can't handle
+%
+% \special{pdf:put @foo << /Bar @bar >>}
+% \special{pdf:put @bar << /Foo @foo >>}
+%
+% Objects must be defined before they are used.
+%
+% \special{pdf:obj @foo << >>}
+% \special{pdf:obj @bar << >>}
+% \special{pdf:put @foo << /Bar @bar >>}
+% \special{pdf:put @bar << /Foo @foo >>}
+%
+% However, this only works for dictionary and array.
+
+\def\doPDFreserveDPXobject#1#2%
+ {\ifundefined{r:pdx:d:#1}%
+ % we need a \flushatshipoutprep (prepended, normally appended)
+ \flushatshipout{\special{pdf:object @#1 #2}}%
+ \global\letvalue{r:pdx:d:#1}\empty
+ \fi}
+
+\def\doPDFreserveDPXobjectfirst#1#2%
+ {\ifundefined{r:pdx:d:#1}%
+ \doglobal\prependtoks\special{pdf:object @#1 #2}\to\everyfirstshipout
+ \global\letvalue{r:pdx:d:#1}\empty
+ \fi}
+
+\def\doPDFcheckedDPXobject#1{\ifundefined{r:pdx:d:#1}object\else put\fi\space @#1\space}
+
+% todo when etex is fixed, \everyPDFpresets, leeg voor pdftex, nodig voor dvipdfmx
+
+\doPDFreserveDPXobjectfirst{FDF::docuextgstates}{<< >>}
+
+\def\doPDFdictionaryobject class #1 name #2 data #3%
+ {\flushatshipout
+ {\special{pdf:\doPDFcheckedDPXobject{#1::#2}<<#3>>}%
+ \dosetobjectreference{#1}{#2}{@#1::#2}}}
+
+\def\doPDFarrayobject class #1 name #2 data #3%
+ {\flushatshipout
+ {\special{pdf:\doPDFcheckedDPXobject{#1::#2}[#3]}%
+ \dosetobjectreference{#1}{#2}{@#1::#2}}}
+
+%D \macros
+%D {defaultobjectreference,doPDFgetobjectreference}
+
+\def\defaultobjectreference#1#2{@#1::#2}
+
+%D \type{\doPDFgetobjectreference} in \type{spec-dpm} had a bug.
+
+\def\doPDFgetobjectreference#1#2#3%
+ {\dogetobjectreference{#1}{#2}#3%
+ \ifx#3\empty\else\edef#3{#3}\fi}
+
+% \def\doPDFgetobjectpage #1#2#3{..}
+% \def\doPDFgetobjectpagereference#1#2#3{..}
+
+\def\doPDFgetpagereference#1#2%
+ {\edef#2{@page#1}}
+
+%D Done.
+
+% %D 2. Modified codes from \type{spec-fdf}
+%
+% \definespecial\dostartgraphicgroup{\special{pdf: literal direct q}}
+% \definespecial\dostopgraphicgroup {\special{pdf: literal direct Q}}
+
+%D 3. Copied codes from \type{spec-tpd}
+
+%D \macros
+%D {dostartclipping,dostopclipping}
+%D
+%D Clipping in \PDFTEX\ is rather trivial. We can even hook
+%D in \METAPOST\ without problems.
+
+\definespecial\dostartclipping#1#2#3%
+ {\PointsToBigPoints{#2}\width
+ \PointsToBigPoints{#3}\height
+ \grabMPclippath{#1}{1}\width\height
+ {0 0 m \width\space 0 l \width \height l 0 \height l}%
+ \PDFcode
+ {q 0 w \MPclippath\space W n}}
+
+\definespecial\dostopclipping
+ {\PDFcode{Q n}}
+
+%D 4. Modified codes from \type{supp-mpe}
+
+\def\stopMPshading
+ {\global\advance\currentPDFshade \plusone
+ \setxvalue{obj:Sh:\currentMPspecial}%
+ {/Sh\the\currentPDFshade\space @obj:Sh:\currentMPspecial\space}%
+ \setxvalue{mps:Sh:\currentMPspecial}%
+ {\the\currentPDFshade}}
+
+\defineMPspecial{30}
+ {\startMPshading{14}% type 2
+ \setMPshadingcolors{4}{5}{6}{9}{10}{11}%
+ \special{pdf:object @ftn:Sh:\currentMPspecial\space
+ <</FunctionType 2
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
+ /N \gMPs3>>}%
+ \special{pdf:object @obj:Sh:\currentMPspecial\space
+ <</ShadingType 2
+ /ColorSpace /\MPshadeC\space
+ /Function @ftn:Sh:\currentMPspecial\space
+ /Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}]
+ /Extend [true true]>>}%
+ \stopMPshading}
+
+\defineMPspecial{31}
+ {\startMPshading{16}% type 3
+ \setMPshadingcolors{4}{5}{6}{10}{11}{12}%
+ \special{pdf:object @ftn:Sh:\currentMPspecial\space
+ <</FunctionType 2
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
+ /N \gMPs3>>}%
+ \special{pdf:object @obj:Sh:\currentMPspecial\space
+ <</ShadingType 3
+ /ColorSpace /\MPshadeC\space
+ /Function @ftn:Sh:\currentMPspecial\space
+ /Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}]
+ /Extend [true true]>>}%
+ \stopMPshading}
+
+\def\handleMPfigurespecial#1#2#3#4#5#6#7% toto : combine with ext fig
+ {\doiffileelse{#7}
+ {\vbox to \zeropoint
+ {\vss
+ \hbox to \zeropoint
+ {\special{pdf:btrans matrix #1 #2 #3 #4 #5 #6}%
+ \rlap{\special{pdf:image width 1bp height 1bp (#7)}}
+ \special{pdf:etrans}\hss}}}
+ {\message{[unknown figure #7]}}}
+
+%D 5. Modified codes from \type{supp-pdf}
+
+\let\handleMPfshow\dohandleMPfshow
+
+\newcounter\MPPDFcounter
+
+\def\setMPPDFobject#1#2%
+ {\ifx\currentPDFresources\empty\else\doPDFpageresource{#1}\fi
+ \def\getMPPDFobject{\box#2}}
+
+\let\getMPPDFobject\relax
+
+\definespecial\doinsertMPfile#1%
+ {\doiffileelse{./#1}{\includeMPasPDF{./#1}}{\message{[MP #1]}}}
+
+%D Experimental (untested):
+
+\definespecial\dostartfonteffect#1#2#3%
+ {\ifdim#2>\zeropoint
+ \PointsToBigPoints{#2}\ascii
+ \PDFdirectcode{\ascii\space w}%
+ \fi
+ \ifdim#3\points=\onepoint\else
+ \scratchdimen#3\points
+ \PDFdirectcode{\withoutpt{\the\scratchdimen}\space Tc}%
+ \fi
+ \PDFdirectcode{\purenumber#1 Tr}}
+
+\definespecial\dostopfonteffect
+ {\PDFdirectcode{1 w 0 Tc 0 Tr}}
+
+%D 6. Modified codes from \type{core-obj}
+%D
+%D In the viewpoint of TeX, the special command \type{pdf:uxobj @obj}
+%D generates a box with zero point width and zero point height so that
+%D it must be careful to place the box at the reference point.
+
+\def\dogetobject#1#2#3#4#5#6#7% don't change this, should work for dvi & pdf
+ {\initializepaper
+ \forgetall
+ \dontshowcomposition
+ \setbox\scratchbox\vbox
+ {\doinsertobject{#1}{#2}}%
+ \setbox\scratchbox#3%
+ {\vbox to #5\scaledpoint
+ {\ifdim\ht\scratchbox>#5\scaledpoint
+ \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+ \else\ifdim\wd\scratchbox>#4\scaledpoint
+ \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
+ \else
+ %\vss\box\scratchbox
+ \vss\hbox to #4\scaledpoint{\box\scratchbox\hss}
+ \fi\fi}}%
+ \box\scratchbox
+ \elabelgroup}
+
+%D 7. Copied codes from \type{spec-dvi}
+
+\definespecial\dosetposition#1%
+ {\special{pos:pxy "#1"}}
+
+\definespecial\dosetpositionwhd#1#2#3#4%
+ {\special{pos:pxywhd "#1" #2 #3 #4}}
+
+\definespecial\dosetpositionplus#1#2#3#4#5%
+ {\special{pos:pxyplus "#1" #2 #3 #4 #5}}
+
+\let\flushDVIpositionpapersize\relax
+
+\definespecial\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize%
+ {\special{pos:papersize #1 #2}%
+ \noexpand\installprogram{dvipos \jobname}%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+\prependtoksonce \flushDVIpositionpapersize \to \everyshipout
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-dvi.tex b/Master/texmf-dist/tex/context/base/spec-dvi.tex
new file mode 100644
index 00000000000..5da86743c74
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-dvi.tex
@@ -0,0 +1,125 @@
+%D \module
+%D [ file=spec-dvi,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Generic \TEX\ Solutions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D \macros
+%D {dostartobject,
+%D dostopobject,
+%D doinsertobject}
+%D
+%D Reuse of object is not supported by the \DVI\ format. We
+%D therefore just duplicate them using boxes.
+
+\startspecials[tex]
+
+\newbox\DVIobjects \newcounter\DVIobjectcounter
+
+\definespecial\dostartobject#1#2#3#4#5%
+ {\setbox\nextbox\vbox\bgroup
+ \def\dodostopobject
+ {\egroup
+ \doglobal\increment\DVIobjectcounter
+ \global\setbox\DVIobjects\vbox
+ {\offinterlineskip
+ \forgetall
+ \unvbox\DVIobjects
+ \setbox\nextbox\hbox{\box\nextbox}%
+ \wd\nextbox\zeropoint
+ \dp\nextbox\zeropoint
+ \ht\nextbox\onepoint
+ \allowbreak
+ \box\nextbox}%
+ \dosetobjectreference{#1}{#2}{\DVIobjectcounter}}}
+
+\definespecial\dostopobject
+ {\dodostopobject}
+
+\definespecial\doinsertobject#1#2%
+ {\bgroup
+ \dogetobjectreference{#1}{#2}\DVIobjectreference
+ \splittopskip\zeropoint
+ \setbox0=\copy\DVIobjects
+ \dimen0=\DVIobjectreference\onepoint
+ \advance\dimen0 -\onepoint
+ \setbox2\vsplit0 to \dimen0
+ \ifdim\ht0>\onepoint
+ \setbox0\vsplit0 to \onepoint
+ \fi
+ \unvbox0
+ \setbox0\lastbox
+ \hbox{\unhbox0}% the \hbox is really needed!
+ \egroup}
+
+%D \macros
+%D {dosetposition,
+%D dosetpositionwhd,
+%D dosetpositionplus}
+%D
+%D The next specials only identify a position. It is up to
+%D a \DVI\ postprocessing utility to merge the right commands
+%D into the utility file. Since in \CONTEXT, we only deal
+%D with relative positions, the reference point is not so
+%D important.
+%D
+%D The postprocessor should translate the specials into
+%D commands and append these to \type {jobname.tuo} using the
+%D format:
+%D
+%D \starttyping
+%D \pospxy {identifier}{page}{x}{y}
+%D \pospxywhd {identifier}{page}{x}{y}{w}{h}{d}
+%D \pospxyplus{identifier}{page}{x}{y}{w}{h}{d}{list}
+%D \stoptyping
+%D
+%D The postprocessor should, of course, provide the \type
+%D {page}, \type {x}, and \type {y} values.
+
+\definespecial\dosetposition#1%
+ {\special{pos:pxy "#1"}}
+
+\definespecial\dosetpositionwhd#1#2#3#4%
+ {\special{pos:pxywhd "#1" #2 #3 #4}}
+
+\definespecial\dosetpositionplus#1#2#3#4#5%
+ {\special{pos:pxyplus "#1" #2 #3 #4 #5}}
+
+%D The next special tells the position postprocessor what
+%D page dimensions were used.
+
+\let\flushDVIpositionpapersize\relax
+
+% \definespecial\dosetpositionpapersize#1#2%
+% {\xdef\flushDVIpositionpapersize%
+% {\special{pos:papersize #1 #2}%
+% \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+%
+% \appendtoksonce
+% \ifspecialbasedsettings
+% \ifpositioning\installprogram{dvipos \jobname}\fi
+% \fi
+% \to \everystoptext
+%
+% less tokens:
+
+\definespecial\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize%
+ {\special{pos:papersize #1 #2}%
+ \noexpand\installprogram{dvipos \jobname}%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+\prependtoksonce \flushDVIpositionpapersize \to \everyshipout
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-fdf.tex b/Master/texmf-dist/tex/context/base/spec-fdf.tex
new file mode 100644
index 00000000000..853dbb678a6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-fdf.tex
@@ -0,0 +1,3197 @@
+%D \module
+%D [ file=spec-fdf,
+%D version=1998.05.18,
+%D title=\CONTEXT\ \PDF\ Macros,
+%D subtitle=Adobe \PDF/\FDF\ version 2.1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D For the moment we keep this downward compatible hack:
+
+% todo: \depth van symbol appearance controleren
+
+%% see end of file
+
+%D We need to check if we can use \type {\driverreferenced}
+%D object in more places.
+
+%D Initialization of fields is tricky. If a field has no
+%D value, it is kind of not there. If ResetForm is used, the
+%D default is assigned, but pushbuttons are spoiled. Adding a
+%D \type {/MK} dictionary helps, but gives ugly down
+%D appearances (displaced with background). What a mess.
+%D Also, in order to get at least something, the \type {/AS}
+%D key should be provided.
+
+% to do : /IF << /SW /N >> == no scaling / clipping of widget
+
+\unprotect
+
+%D \macros
+%D {PDFobjref}
+%D
+%D Just a shortcut.
+
+% Watch out, \def\PDFobjref#1{\purenumber#1 0 R} also works, but not when
+% #1 == \the\whatever
+
+\def\PDFobjref#1{\purenumber{#1} 0 R}
+
+%D \macros
+%D {PDFswapdir}
+
+\let\PDFswapdir\empty \def\PDFswapdir{\ifcase\inlinedirection\or\or-\fi}
+
+%D \macros
+%D {setPDFdestination}
+%D
+%D \PDF\ destinations should obey the specifications laid down
+%D in the \PDF\ reference manual. The next macro strips illegal
+%D characters from the destination name.
+%D
+%D The \ACROBAT\ programs are not bug free. By setting the next
+%D switches, we will at least try to prevent problems.
+
+\newif\ifovercomePDFbugs \overcomePDFbugsfalse % dest sort problem / 3-
+\newif\ifovercomePDFspace \overcomePDFspacetrue % dest sort problem / 3-
+\newif\ifovercomePDFpage \overcomePDFpagetrue % pdf spec change / 5+
+
+\chardef\safePDFcode=`-
+
+\def\setPDFdestination#1%
+ {\bgroup
+ \retainlccodes
+ \lccode`\/\safePDFcode \lccode`\#\safePDFcode
+ \lccode`\<\safePDFcode \lccode`\>\safePDFcode
+ \lccode`\[\safePDFcode \lccode`\]\safePDFcode
+ \lccode`\(\safePDFcode \lccode`\)\safePDFcode
+ \ifovercomePDFspace
+ \lccode`\ \safePDFcode
+ \fi
+ \ifovercomePDFbugs
+ \xdef\PDFdestination{'#1'}%
+ \else
+ \xdef\PDFdestination{#1}%
+ \fi
+ % nicer \xdef\PDFdestination{\ifovercomePDFbugs'\fi#1\ifovercomePDFbugs'\fi}%
+ \lowercase\@EA{\@EA\xdef\@EA\PDFdestination\@EA{\PDFdestination}}%
+ \egroup}
+
+%D This is much faster since we don't have to set the full
+%D range of lc-codes; about 5 sec on a 1000mhz PIII for
+%D 20K named destinations "x(x) x"). Of course when you use
+%D page destinations, the saving is nil.
+
+% \beginETEX \scantokens
+%
+% \doifnotmode{atpragma}{\let\next\setPDFdestination} % experimental
+%
+% \bgroup
+%
+% \catcode`\/=\@@active \catcode`\#=\@@active
+% \catcode`\<=\@@active \catcode`\>=\@@active
+% \catcode`\[=\@@active \catcode`\]=\@@active
+% \catcode`\(=\@@active \catcode`\)=\@@active
+%
+% \gdef\PDFrepchar{-}
+%
+% \gdef\setPDFdcharacters
+% {\catcode`\/=\@@active \let/\PDFrepchar
+% \catcode`\#=\@@active \let#\PDFrepchar
+% \catcode`\<=\@@active \let<\PDFrepchar
+% \catcode`\>=\@@active \let>\PDFrepchar
+% \catcode`\[=\@@active \let[\PDFrepchar
+% \catcode`\]=\@@active \let]\PDFrepchar
+% \catcode`\(=\@@active \let(\PDFrepchar
+% \catcode`\)=\@@active \let)\PDFrepchar}
+%
+% \egroup
+%
+% \def\setPDFdestination#1% expansion is needed, otherwise embedded
+% {\bgroup % macros will not expand under the new
+% \setPDFdcharacters % catcode regime
+% \ifovercomePDFspace
+% \catcode32=\@@ignore
+% \fi
+% \xdef\PDFdestination{\ifovercomePDFbugs'\fi#1\ifovercomePDFbugs'\fi}%
+% \scantokens\@EA{\@EA\xdef\@EA\PDFdestination\@EA{\PDFdestination}}%
+% \egroup}
+%
+% \doifnotmode{atpragma}{\let\setPDFdestination\next} % experimental
+%
+% \endETEX
+
+%D \macros
+%D {sanitizePDFstring}
+%D
+%D This macro at least tries to convert a arbitrary string
+%D into a sequence of characters valid for \PDF\ bookmarks and
+%D alike. It's a slow one, that uses \type{\lccode}'s to
+%D change the glyph as well as converts sensisitve ones into a
+%D \PDF\ command sequence, so \type{(} becomes \type{\(}. In
+%D fact we translate the string to lowercase inactive and non
+%D special characters, limit their number and finaly convert
+%D some of the characters to save ones.
+
+%\beginTEX
+
+\chardef\maxPDFstringsize=60
+
+\def\sanitizePDFstring#1\to#2%
+ {\bgroup
+ \retainlccodes
+ \lccode`( \plusone \lccode`) \plusone
+ \lccode`< \plusone \lccode`> \plusone
+ \lccode`[ \plusone \lccode`] \plusone
+ \lccode`\\\plusone \lccode`/ \plusone
+ \lowercase{\convertargument#1\to\ascii}%
+ % by integrating the split in the loop below
+ % \splitofftokens\maxPDFstringsize\from\ascii\to\ascii
+ % we diminish the processing time considerably
+ \scratchcounter\maxPDFstringsize
+ \def\docommando##1%
+ {\ifcase\scratchcounter\else
+ \advance\scratchcounter \minusone
+ \ifcase\lccode`##1\relax
+ \xdef#2{#2.}% let's show that something is missing
+ \or
+ \xdef#2{#2\expandafter\string\csname##1\endcsname}%
+ \else
+ \xdef#2{#2##1}%
+ \fi
+ \fi}%
+ %\global\let#2=\empty
+ % or to permit #2 to be \ascii too:
+ \global\@EA\let\@EA#2\@EA\empty
+ \@EA\handletokens\ascii\with\docommando
+ \egroup}
+
+%\endTEX
+%
+% \beginETEX \scantokens
+%
+% \doifnotmode{atpragma}{\let\next\sanitizePDFstring} % experimental
+%
+% \bgroup
+%
+% \catcode`\.=\@@escape
+%
+% .catcode`./=.@@active
+% .catcode`.<=.@@active .catcode`.>=.@@active
+% .catcode`.[=.@@active .catcode`.]=.@@active
+% .catcode`.(=.@@active .catcode`.)=.@@active
+%
+% .gdef.setPDFscharacters%
+% {.catcode`.\=.@@other
+% .catcode`./=.@@active .def/{.noexpand./}%
+% .catcode`.<=.@@active .def<{.noexpand.<}%
+% .catcode`.>=.@@active .def>{.noexpand.>}%
+% .catcode`.[=.@@active .def[{.noexpand.[}%
+% .catcode`.]=.@@active .def]{.noexpand.]}%
+% .catcode`.(=.@@active .def({.noexpand.(}%
+% .catcode`.)=.@@active .def){.noexpand.)}}
+%
+% .gdef.sanitizePDFstring#1.to#2%
+% {.bgroup
+% .setPDFscharacters
+% .catcode`=.@@escape
+% .edef.next{.strippedcsname#2}%
+% .scantokens{setxvalue{next}{#1}}%
+% .egroup}
+%
+% .egroup
+%
+% \doifnotmode{atpragma}{\let\sanitizePDFstring\next} % experimental
+%
+% \endETEX
+
+%D \macros
+%D {doPDFdestination,
+%D doPDFaction,
+%D doPDFannotation,
+%D doPDFannotationobject,
+%D doPDFdictionaryobject,
+%D doPDFarrayobject,
+%D doPDFaddtocatalog,
+%D doPDFaddtoinfo,
+%D doPDFpageattribute,
+%D doPDFpageresource,
+%D doPDFpagesattribute,
+%D doPDFbookmark,
+%D defaultobjectreference,
+%D doPDFgetobjectreference}
+%D
+%D This module deals with \PDF\ support, including fill||in
+%D forms. Before we present the largely unreadable bunch of
+%D macros, we introduce the here||not||defined low level
+%D interface macros. These must be provided by the special
+%D drivers \type{pdf} (\ACROBAT) and \type{tpd} (\PDFTEX).
+%D
+%D \starttyping
+%D \doPDFdestination name #1
+%D \doPDFaction width #1 height #2 action #3
+%D \doPDFannotation width #1 height #2 data #3
+%D \doPDFannotationobject class #1 name #2 width #3 height #4 data #5
+%D \doPDFdictionaryobject class #1 name #2 data #3
+%D \doPDFarrayobject class #1 name #2 data #3
+%D \doPDFaddtocatalog #1
+%D \doPDFaddtoinfo #1
+%D \doPDFpageattribute #1
+%D \doPDFpageresource #1
+%D \doPDFpagesattribute #1
+%D \doPDFbookmark level #1 n #2 text #3 page #4 open #5
+%D
+%D \defaultobjectreference #1#2 % class name
+%D \doPDFgetobjectreference #1#2#3 % class name \PDFobjectreference
+%D \doPDFgetobjectpagereference #1#2#3 % class name \PDFobjectreference
+%D \stoptyping
+%D
+%D The keywords reflect their use. For the moment we stick to
+%D keywords, because that way at we get an indication of what
+%D we're doing.
+
+\startspecials[fdf]
+
+%D Common:
+
+% \def\doPDFgetobjectreference#1#2#3%
+% {\def#3{..}}
+
+\def\doPDFgetobjectpage#1#2#3%
+ {\dogetobjectreferencepage{#1}{#2}#3%
+ \ifx#3\empty\def#3{1}\fi}
+
+\def\doPDFgetobjectpagereference#1#2#3%
+ {\dogetobjectreferencepage{#1}{#2}#3%
+ \ifx#3\empty
+ \doPDFgetpagereference\realfolio#3%
+ \else
+ \doPDFgetpagereference#3#3% we assume that #3 gets expanded
+ \fi}
+
+% \def\doPDFgetpagereference#1#2%%%%%%%%%%%%%%%
+% {\def#2{...}}
+
+%D Due to the fact that \PDFTEX\ has a different concept of
+%D page attributes, we need:
+
+\let\doPDFresetpageattributes\relax
+\let\doPDFresetpageresources \relax
+
+\appendtoksonce
+ \doPDFresetpageattributes
+ \doPDFresetpageresources
+\to \everyaftershipout
+
+\ifx\PDFcode\undefined
+ \ifx\pdfliteral\undefined
+ \def\PDFcode#1{\message{[ignored pdfliteral: #1]}}
+ \else
+ \let\PDFcode\pdfliteral
+ \fi
+\fi
+
+%D For special (\METAPOST) effects, we need to build
+%D resource dictionaries. Here is the framework.
+
+\let\docuPDFextgstates\empty
+%let\pagePDFextgstates\empty
+
+\def\checkPDFextgstates
+ {\ifx\docuPDFextgstates\empty \else
+ \ifnum\realpageno=\lastpage\relax
+ \doPDFdictionaryobject class FDF name docuextgstates data
+ {\docuPDFextgstates}%
+ \fi
+ \doPDFgetobjectreference{FDF}{docuextgstates}\PDFobjectreference
+ \doPDFpageresource{/ExtGState \PDFobjectreference}%
+ \fi}
+
+\appendtoksonce
+ \checkPDFextgstates
+\to \everyshipout
+
+\def\appendtoPDFdocumentextgstates#1%
+ {\xdef\docuPDFextgstates{\docuPDFextgstates\space#1}}
+
+%D Another special mechanism (needed for color separation):
+
+\let\docuPDFcolorspaces\empty
+
+\def\checkPDFcolorspaces
+ {\ifx\docuPDFcolorspaces\empty \else
+ \ifnum\realpageno=\lastpage\relax
+ \doPDFdictionaryobject class FDF name colorspaces data
+ {\docuPDFcolorspaces}%
+ \fi
+ \doPDFgetobjectreference{FDF}{colorspaces}\PDFobjectreference
+ \doPDFpageresource{/ColorSpace \PDFobjectreference}%
+ \fi}
+
+\appendtoksonce
+ \checkPDFcolorspaces
+\to \everyshipout
+
+\def\appendtoPDFdocumentcolorspaces#1%
+ {\xdef\docuPDFcolorspaces{\docuPDFcolorspaces\space#1}}
+
+%D \macros
+%D {doPDFsetupscreen,doPDFsetupidentity}
+%D
+%D Opposite to \DVI\ drivers, \PDF\ ones must know which what
+%D page dimensions they are dealing. We also use the
+%D opportunity to launch full screen (1) or show bookmarks (2).
+
+\let\currentPDFpagemode \empty % document catalog
+\let\currentPDFviewerprefs\empty % document catalog
+
+\let\currentPDFcropbox \empty % page attributes
+\let\currentPDFbleedbox \empty % page attributes
+\let\currentPDFartbox \empty % page attributes
+\let\currentPDFtrimbox \empty % page attributes
+
+\def\doPDFsetupscreen#1#2#3#4#5#6% watch the extra argument
+ {\bgroup
+% \!!widtha#4%
+% \advance\!!widtha#2%
+% \!!heighta-#5%
+% \!!heightb#1% extra argument
+% \advance\!!heightb -#3%
+% \advance\!!heighta \!!heightb
+% % sometimes whole values give better results
+% % \PointsToWholeBigPoints{#2}\left
+% % \PointsToWholeBigPoints\!!heighta\bottom
+% % \PointsToWholeBigPoints\!!widtha \width
+% % \PointsToWholeBigPoints\!!heightb\height
+% % but since pdf/x does not round when checking if
+% % the boxes fit inside the media box ...
+% \PointsToBigPoints{#2}\left
+% \PointsToBigPoints\!!heighta\bottom
+% \PointsToBigPoints\!!widtha \width
+% \PointsToBigPoints\!!heightb\height
+% \xdef\currentPDFcropboxspec
+% {[\left\space\bottom\space\width\space\height]}%
+% \global\let\currentPDFtrimboxspec\currentPDFcropboxspec
+%
+% \xdef\currentPDFpagemode
+% {/PageMode \ifcase#6
+% /UseNone\or/FullScreen\or/UseOutlines\else/UseNone\fi}%
+%
+ \xdef\currentPDFpagemode
+ {\ifnum#6=4
+ /PageLayout /TwoColumnRight
+ \else
+ /PageMode \ifcase#6
+ /UseNone\or/FullScreen\or/UseOutlines\else/UseNone\fi
+ \fi}%
+ \xdef\currentPDFviewerprefs % space after #6 needed, else \relax
+ {\ifcase#6 \or\or\else /ViewerPreferences << /FitWindow true >>\fi}%
+ \egroup}
+
+% not that good if we switch drivers
+
+\appendtoksonce % hack to prevent duplicates
+ \doPDFaddtocatalog{\currentPDFpagemode\currentPDFviewerprefs}%
+ \doPDFaddtoinfo{/Trapped /False}%
+ \doPDFaddtoinfo{/ConTeXt.Version (\contextversion)}%
+\to \everyfirstshipout
+
+\def\PDFversion{1.5}
+
+\appendtoksonce
+ \def\PDFversion{1.5}%
+\to \everyresetspecials
+
+\appendtoksonce % we catch both n and 1.n
+ \doPDFaddtocatalog{/Version \ifdim\PDFversion00\points>100\points 1.\fi\PDFversion}%
+\to \everylastshipout
+
+\def\doPDFsetupwhateverbox#1#2#3#4#5#6% watch the extra arguments
+ {\bgroup
+ \!!widtha#5%
+ \advance\!!widtha#3%
+ \!!heighta-#6%
+ \!!heightb#2% extra argument
+ \advance\!!heightb -#4%
+ \advance\!!heighta \!!heightb
+ % sometimes whole values give better results
+ % \PointsToWholeBigPoints{#3}\left
+ % \PointsToWholeBigPoints\!!heighta\bottom
+ % \PointsToWholeBigPoints\!!widtha \width
+ % \PointsToWholeBigPoints\!!heightb\height
+ % but since pdf/x does not round when checking if
+ % the boxes fit inside the media box ...
+ \PointsToBigPoints{#3}\left
+ \PointsToBigPoints\!!heighta\bottom
+ \PointsToBigPoints\!!widtha \width
+ \PointsToBigPoints\!!heightb\height
+ \xdef#1{[\left\space\bottom\space\width\space\height]}%
+ \egroup}
+
+\def\doPDFsetupartbox {\doPDFsetupwhateverbox\currentPDFartbox }
+\def\doPDFsetupcropbox {\doPDFsetupwhateverbox\currentPDFcropbox }
+\def\doPDFsetupbleedbox{\doPDFsetupwhateverbox\currentPDFbleedbox}
+\def\doPDFsetuptrimbox {\doPDFsetupwhateverbox\currentPDFtrimbox }
+
+\gdef\currentPDFtrimbox{\currentPDFcropbox} % default, needed for pdf/x
+
+\def\flushPDFwhateverbox#1#2%
+ {\doifsomething{#1}{\doPDFpageattribute{/#2Box #1}}}
+
+\appendtoksonce
+ \flushPDFwhateverbox\currentPDFartbox {Art}%
+ \flushPDFwhateverbox\currentPDFcropbox {Crop}%
+ \flushPDFwhateverbox\currentPDFbleedbox{Bleed}%
+ \flushPDFwhateverbox\currentPDFtrimbox {Trim}%
+\to \everyshipout
+
+\def\doPDFsetupidentity#1#2#3#4#5#6%
+ {\bgroup
+ \enablePDFdocencoding
+ \expanded{\doPDFaddtoinfo
+ {/Title (#1)
+ /Subject (#2)
+ /Author (#3)
+ /Creator (#4)
+ /ModDate (#5)
+ /ID (\jobname.#5) % needed for pdf/x
+ /Keywords (#6)}}%
+ \egroup}
+
+%D \macros
+%D {doPDFsetupopenaction,doPDFsetupcloseaction,
+%D doPDFsetupopenpageaction,doPDFsetupclosepageaction}
+%D
+%D Setting the open and close actions is kind of fuzzy
+%D because action chains are derived from the reference
+%D mechanism.
+
+%D Starting with version~5 viewers, when the open actions
+%D started yto give problems, for testing purposes we
+%D decided use indirect actions.
+
+% \definespecial\dosetupopenaction {\doPDFsetupopenaction}
+% \definespecial\dosetupcloseaction {\doPDFsetupcloseaction}
+% \definespecial\dosetupopenpageaction {\doPDFsetupopenpageaction}
+% \definespecial\dosetupclosepageaction{\doPDFsetupclosepageaction}
+
+\let\lastPDFaction\empty
+
+%D We can safe a couple of references by moving this code
+%D to the specific drivers.
+%D
+%D The following code used to work okay, but as with any
+%D update of Acrobat Viewers, upward compatibility was
+%D just a dream.
+
+\definespecial\dosetupopenaction {\doPDFaddtocatalog{/OpenAction <<\lastPDFaction>>}}
+\definespecial\dosetupcloseaction{\doPDFaddtocatalog{/CloseAction <<\lastPDFaction>>}}
+
+% todo: /AA << dictionary in catalog >>
+
+% \globalletempty\PDFdocumentclose
+% \globalletempty\PDFwillsave
+% \globalletempty\PDFdidsave
+% \globalletempty\PDFwillprint
+% \globalletempty\PDFdidprint
+
+% \definespecial\dosetupdocumentcloseaction {\global\let\PDFdocumentclose\lastPDFaction}
+% \definespecial\dosetupwillsaveaction {\global\let\PDFwillsave \lastPDFaction}
+% \definespecial\dosetupdidsaveaction {\global\let\PDFdidsave \lastPDFaction}
+% \definespecial\dosetupwillprintaction {\global\let\PDFwillprint \lastPDFaction}
+% \definespecial\dosetupdidprintaction {\global\let\PDFdidprint \lastPDFaction}
+
+% \def\checkPDFdocumentactions
+% {\iflocation
+% \doPDFpageattribute
+% {/AA <<\ifx\PDFdocumentclose\empty \else /DC <<\PDFdocumentclose>> \fi
+% \ifx\PDFwillsave \empty \else /WS <<\PDFwillsave >> \fi
+% \ifx\PDFdidsave \empty \else /DS <<\PDFdidsave >> \fi
+% \ifx\PDFwillprint \empty \else /WP <<\PDFwillprint >> \fi
+% \ifx\PDFdidprint \empty \else /DP <<\PDFdidprint >> \fi>>}%
+% % \globalletempty\PDFdocumentclose
+% % \globalletempty\PDFwillsave
+% % \globalletempty\PDFdidsave
+% % \globalletempty\PDFwillprint
+% % \globalletempty\PDFdidprint
+% \global\let\checkPDFdocumentactions\relax
+% \fi}
+
+% \appendtoksonce
+% \checkPDFdocumentactions
+% \to \everylastshipout
+
+%\def\doPDFsetupopenaction%
+% {\doPDFdictionaryobject class FDF name local:openaction data \lastPDFaction
+% \doPDFgetobjectreference{FDF}{local:openaction}\PDFobjectreference
+% \doPDFaddtocatalog{/OpenAction \PDFobjectreference}}
+%
+%\def\doPDFsetupcloseaction%
+% {\doPDFdictionaryobject class FDF name local:closeaction data \lastPDFaction
+% \doPDFgetobjectreference{FDF}{local:closeaction}\PDFobjectreference
+% \doPDFaddtocatalog{/CloseAction \PDFobjectreference}}
+
+\let\PDFopenpageaction \empty
+\let\PDFclosepageaction\empty
+
+\definespecial\dosetupopenpageaction {\global\let\PDFopenpageaction \lastPDFaction}
+\definespecial\dosetupclosepageaction{\global\let\PDFclosepageaction\lastPDFaction}
+
+\def\checkPDFpageactions
+ {\iflocation % important since direct -)
+ \donefalse
+ \ifx\PDFopenpageaction \empty\!!doneafalse\else\donetrue\!!doneatrue\fi
+ \ifx\PDFclosepageaction\empty\!!donebfalse\else\donetrue\!!donebtrue\fi
+ \ifdone
+ \doPDFpageattribute
+ {/AA <<\if!!donea/O <<\PDFopenpageaction >> \fi
+ \if!!doneb/C <<\PDFclosepageaction>> \fi>>}%
+ \fi
+ \global\let\PDFopenpageaction \empty
+ \global\let\PDFclosepageaction\empty
+ \fi}
+
+\appendtoksonce
+ \checkPDFpageactions
+\to \everyshipout
+
+%D \macros
+%D {doPDFstartthisislocation}
+%D
+%D Next we define the macros that deal with hyperreferencing,
+%D graphic inclusion and general document features. These are
+%D the olderst ones. I won't comment much because one needs
+%D knowledge of \PDF\ itself, and explaning \PDF\ is beyond
+%D this documentation.
+
+\def\doPDFstartthisislocation#1%
+ {\bgroup
+ \setPDFdestination{#1}%
+ %\doifsomething{\PDFdestination}
+ % {\doPDFdestination name {\PDFdestination}}%
+ \ifx\PDFdestination\empty \else
+ \doPDFdestination name {\PDFdestination}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {doPDFstartgotolocation,
+%D doPDFstartgotorealpage,
+%D doPDFstartgotoJS}
+%D
+%D The goto macros use the switch \type{\ifsecondaryreference}
+%D to determine if actions should be linked.
+
+\def\locationfilesuffix{pdf}
+
+% \def\preparePDFlocationfile#1#2%
+% {\setreferencefilename#1\to#2%
+% \expanded{\doifnotinstring{.\locationfilesuffix}{#2}}
+% {\edef#2{#2.\locationfilesuffix}}}
+%
+% \def\preparePDFlocationfile#1\to#2%
+% {\setreferencefilename#1\to#2%
+% \expanded{\doifnotinstring{.pdf}{#2}}{\edef#2{#2.pdf}}}
+
+\def\doPDFstartgotolocation#1#2#3#4#5#6%
+ {\bgroup
+ \doifelsenothing{#3}
+ {\setPDFdestination{#5}%
+ \doifelsenothing\PDFdestination
+ {\let\action\empty}
+ {\doifelsenothing{#4}
+ {\let\PDFfile\empty}
+ {\expanded{\beforesplitstring#4}\at.\to\PDFfile
+ \doifparentfileelse\PDFfile % {#4}
+ {\let\PDFfile\empty}
+ %{\setreferencefilename#4.\locationfilesuffix\to\PDFfile
+ {\@EA\setreferencefilename\PDFfile.\locationfilesuffix\to\PDFfile
+ \edef\PDFfile
+ {R /F (\PDFfile)\ifgotonewwindow\space/NewWindow true \fi}}}%
+ \edef\action%
+ {/S /GoTo\PDFfile\space /D (\PDFdestination)}}}
+ {\doifelsenothing{#4}
+ {\let\PDFfile\empty
+ \let\PDFdestination\empty}
+ {\setreferencefilename/#4\to\PDFfile
+ \setPDFdestination{#5}%
+ \doifsomething\PDFdestination
+ {\edef\PDFdestination{\URLhash\PDFdestination}}}%
+ \edef\action{/S /URI /URI (#3\PDFfile\PDFdestination)}}%
+ \ifx\action\empty\else
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi
+ \fi
+ \egroup}
+
+\def\PDFgotonewwindow{\ifgotonewwindow\space/NewWindow true \fi}
+
+% optimization in tpd driver
+%
+% \edef\PDFdestination{(page:\the\scratchcounter)}%
+%
+% ==>
+%
+% \advance\scratchcounter 1
+% \edef\PDFdestination{[\pdfpageref \PDFobjref\scratchcounter\PDFpageviewwrd]}%
+%
+% \doPDFgetpagedestination#1#2% pagenumber macro % % fuzzy hack
+
+\def\doPDFstartgotorealpage#1#2#3#4#5% watch the R append trick
+ {\bgroup
+ \doifelsenothing{#3}% #1 = url
+ {\scratchcounter0#5\relax
+ \ifnum\scratchcounter>0
+ \advance\scratchcounter \minusone % pdf starts numbering at zero
+ \doifelsenothing{#4}
+ {\let\PDFfile\empty}
+ {\expanded{\beforesplitstring#4}\at.\to\PDFfile
+ \doifparentfileelse\PDFfile % {#4}
+ {\let\PDFfile\empty}
+ %{\setreferencefilename#4.\locationfilesuffix\to\PDFfile
+ {\@EA\setreferencefilename\PDFfile.\locationfilesuffix\to\PDFfile
+ \edef\PDFfile{R /F (\PDFfile)\PDFgotonewwindow}}}%
+ \ifx\PDFfile\empty
+ \ifovercomePDFpage % a named page ref
+ \edef\PDFdestination{(page:\the\scratchcounter)}%
+ \else % beware: optimizers remove this one
+ \edef\PDFdestination{[\the\scratchcounter\space\PDFpageviewwrd]}%
+ \fi
+ \else % across files it's a page number
+ \edef\PDFdestination{[\the\scratchcounter\space\PDFpageviewwrd]}%
+ \fi
+ \edef\action{/S /GoTo\PDFfile\space /D \PDFdestination}%
+ \else
+ \let\action\empty
+ \fi}
+ {\doifelsenothing{#4}
+ {\let\PDFfile\empty}
+ {\setreferencefilename/#4\to\PDFfile}%
+ \edef\action{/S /URI /URI (#3\PDFfile)}}%
+ \ifx\action\empty\else
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi
+ \fi
+ \egroup}
+
+\let\lastfakedPDFpage\!!zerocount
+
+\def\fakePDFpagedestination % as in pdf, we start numbering at zero
+ {\iflocation \ifovercomePDFpage \ifarrangingpages \else
+ \ifnum\lastfakedPDFpage<\realpageno
+ \bgroup
+ \xdef\lastfakedPDFpage{\realfolio}%
+ \advance\realpageno \minusone % is \expanded needed ?
+ \expanded{\doPDFdestination name {page:\realfolio}}%
+ \egroup
+ \fi
+ \fi \fi \fi}
+
+\appendtoksonce
+ \fakePDFpagedestination
+\to \everyshipout
+
+\def\doPDFstartgotoJS#1#2#3%
+ {\bgroup
+ \doPSsanitizeJScode#3\to\sanitizedJScode
+ \edef\action
+ {/S /JavaScript /JS (\sanitizedJScode)}%
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {doPDFstartexecutecommand}
+%D
+%D At the cost of much auxiliary placeholders, we can pretty
+%D fast convert the command asked for. This is how the \PDF\
+%D code looks like.
+
+\def\PDFmoviecode#1#2#3%
+ {/Movie
+ /T (\ifcase#1movie \else sound \fi\ifx\argumentA\empty#2\else\argumentA\fi)
+ /Operation /\ifcase#3Play\or Stop\or Pause\or Resume\fi\space}
+
+\def\PDFexecutestartmovie {\PDFmoviecode0\currentmovie0}
+\def\PDFexecutestopmovie {\PDFmoviecode0\currentmovie1}
+\def\PDFexecutepausemovie {\PDFmoviecode0\currentmovie2}
+\def\PDFexecuteresumemovie {\PDFmoviecode0\currentmovie3}
+
+\def\PDFexecutestartsound {\PDFmoviecode1\currentsound0}
+\def\PDFexecutestopsound {\PDFmoviecode1\currentsound1}
+\def\PDFexecutepausesound {\PDFmoviecode1\currentsound2}
+\def\PDFexecuteresumesound {\PDFmoviecode1\currentsound3}
+
+\def\PDFformcode#1%
+ {\doFDFiffieldset{#1}{/Field [\doFDFgetfieldset{#1}]}}
+
+% bit 3 = html
+% bit 6 = xml
+% bit 4 = get
+
+\ifx\PDFsubmitfiller\undefined \let\PDFsubmitfiller\empty \fi
+
+\chardef\PDFformmethod=1 % 0=GET 1=POST
+
+\def\PDFformflag#1#2{\ifcase\PDFformmethod#1\else#2\fi}
+
+\def\PDFexecuteimportform {/Named /N /AcroForm:ImportFDF}
+\def\PDFexecuteexportform {/Named /N /AcroForm:ExportFDF}
+\def\PDFexecuteresetform {/ResetForm \PDFformcode\argumentA}
+\def\PDFexecutesubmitform {/SubmitForm \PDFformcode\argumentB
+ /Flags \ifcase\submitoutputformat\space
+ \PDFformflag{12} {4} % 0=unknown
+ \or \PDFformflag{12} {4} % 1=HTML
+ \or \PDFformflag {8} {0} % 2=FDF
+ \or \PDFformflag{40}{32} % 3=XML
+ \else \PDFformflag{12} {4} % ?=unknown
+ \fi
+ /F (\argumentA)\PDFsubmitfiller}
+
+% urifill permits url substitution
+
+\def\PDFexecutehide {/Hide /T (\argumentA) /H true}
+\def\PDFexecuteshow {/Hide /T (\argumentA) /H false}
+
+\def\PDFexecutefirst {/Named /N /FirstPage}
+\def\PDFexecuteprevious {/Named /N /PrevPage}
+\def\PDFexecutenext {/Named /N /NextPage}
+\def\PDFexecutelast {/Named /N /LastPage}
+\def\PDFexecutebackward {/Named /N /GoBack}
+\def\PDFexecuteforward {/Named /N /GoForward}
+\def\PDFexecuteprint {/Named /N /Print}
+\def\PDFexecuteexit {/Named /N /Quit}
+\def\PDFexecuteclose {/Named /N /Close}
+\def\PDFexecutesave {/Named /N /Save}
+\def\PDFexecutesavenamed {/Named /N /SaveAs}
+\def\PDFexecuteopennamed {/Named /N /Open}
+\def\PDFexecutehelp {/Named /N /HelpUserGuide}
+\def\PDFexecutetoggle {/Named /N /FullScreen}
+\def\PDFexecutesearch {/Named /N /Find}
+\def\PDFexecutesearchagain {/Named /N /FindAgain}
+\def\PDFexecutegotopage {/Named /N /GoToPage}
+\def\PDFexecutequery {/Named /N /AcroSrch:Query}
+\def\PDFexecutequeryagain {/Named /N /AcroSrch:NextHit}
+\def\PDFexecutefitwidth {/Named /N /FitWidth}
+\def\PDFexecutefitheight {/Named /N /FitHeight}
+
+\let\PDFobjectclass\empty
+\let\PDFobjectname \empty
+
+\def\doPDFstartexecutecommand#1#2#3#4%
+ {\doifdefined{PDFexecute#3}
+ {\bgroup
+ \@EA\dogetcommalistelement\@EA1\@EA\from#4\to\argumentA
+ \@EA\dogetcommalistelement\@EA2\@EA\from#4\to\argumentB
+ \edef\argument{#4}%
+ \edef\action%
+ {/S \getvalue{PDFexecute#3}}%
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+% \ifx\PDFobjectclass\empty
+% \let\next\doPDFaction
+% \else
+% \edef\next{\doPDFactionobject
+% class {\PDFobjectclass} name {\PDFobjectname} }%
+% \globalletempty\PDFobjectclass
+% \globalletempty\PDFobjectname
+% \fi
+% \next
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi
+ \egroup}}
+
+%D \macros
+%D {doPDFstartrunprogram}
+%D
+%D Running programs is possible, but is non that portable, and
+%D therefore dangerous.
+
+\def\doPDFstartrunprogram#1#2#3#4% new: #3 => #3#4
+ {\bgroup
+ %\edef\string{#3}%
+ %\@EA\beforesplitstring\string\at{ }\to\program
+ %\@EA\aftersplitstring \string\at{ }\to\parameters
+ %\edef\action%
+ % {/S /Launch /F (\program) /P (\parameters) /D (.)}%
+ \edef\action
+ {/S /Launch /F (#3) /P (#4) /D (.)}%
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {doPDFstartgotoprofile}
+%D
+%D Far from perfect, but nevertheless present, is the profile
+%D handler. We want to misuse article threads for reder
+%D profiles.
+
+\def\doPDFstartgotoprofile#1#2#3% to be done: file
+ {\bgroup
+ \setPDFdestination{#3}%
+ \doifsomething\PDFdestination
+ {\edef\action
+ {/S /Thread /D (\PDFdestination)}%
+ \ifsecondaryreference
+ \savesecondaryPDFreference\action
+ \else
+ \getsecondaryPDFreferences
+ \doPDFaction
+ width \PDFswapdir#1 height #2
+ action {\action \secondaryPDFreferences}%
+ \fi}%
+ \egroup}
+
+%D \macros
+%D {doPDFsetpagetransition}
+%D
+%D This array holds a reasonable selection of transitions
+%D (watch out: \type{replace} is not in this list). Most of
+%D the transitions look awful anyway. By the way, \CONTEXT\ is
+%D able to select transitions randomly.
+
+% some day, when 1.5 is on linux and apple, we will add:
+%
+% \def\pagetransitions
+% {{split,in,vertical},{split,in,horizontal},
+% {split,out,vertical},{split,out,horizontal},
+% {blinds,horizontal},{blinds,vertical},
+% {box,in},{box,out},
+% {wipe,east},{wipe,west},{wipe,north},{wipe,south},
+% dissolve,
+% {glitter,east},{glitter,south},
+% {fly,in,east},{fly,in,west},{fly,in,north},{fly,in,south},
+% {fly,out,east},{fly,out,west},{fly,out,north},{fly,out,south},
+% {push,east},{push,west},{push,north},{push,south},
+% {cover,east},{cover,west},{cover,north},{cover,south},
+% {uncover,east},{uncover,west},{uncover,north},{uncover,south},
+% fade}
+
+\def\pagetransitions
+ {{split,in,vertical},{split,in,horizontal},
+ {split,out,vertical},{split,out,horizontal},
+ {blinds,horizontal},{blinds,vertical},
+ {box,in},{box,out},
+ {wipe,east},{wipe,west},{wipe,north},{wipe,south},
+ dissolve,
+ {glitter,east},{glitter,south}}
+
+%D Again, we use macros as placeholders for \PDF\ key||value
+%D pairs.
+
+\def\PDFpagesplit {/S /Split }
+\def\PDFpageblinds {/S /Blinds }
+\def\PDFpagebox {/S /Box }
+\def\PDFpagewipe {/S /Wipe }
+\def\PDFpagedissolve {/S /Dissolve }
+\def\PDFpageglitter {/S /Glitter }
+\def\PDFpagereplace {/S /R }
+
+\def\PDFpagefly {/S /Fly } % 1.5
+\def\PDFpagepush {/S /Push } % 1.5
+\def\PDFpagecover {/S /Cover } % 1.5
+\def\PDFpageuncover {/S /Uncover } % 1.5
+\def\PDFpagefade {/S /Fade } % 1.5
+
+\def\PDFpagehorizontal {/Dm /H }
+\def\PDFpagevertical {/Dm /V }
+\def\PDFpagein {/M /I }
+\def\PDFpageout {/M /O }
+\def\PDFpageeast {/Di 0 }
+\def\PDFpagenorth {/Di 90 }
+\def\PDFpagewest {/Di 180 }
+\def\PDFpagesouth {/Di 270 }
+
+\def\dodoPDFsetpagetransition#1%
+ {\doifdefined{PDFpage#1}
+ {\edef\PDFpagetransitions{\PDFpagetransitions\getvalue{PDFpage#1}}}}
+
+\def\doPDFsetpagetransition#1#2%
+ {\let\PDFpagetransitions\empty
+ \processcommalist[#1]\dodoPDFsetpagetransition
+ \doPDFpageattribute
+ %{\ifnum#2>0 /Dur #2 \fi
+ {\ifnum0<0#2 /Dur #2 \fi
+ \ifx\PDFpagetransitions\empty\else/Trans <<\PDFpagetransitions>>\fi}}
+% \ifx\PDFpagetransitions\empty\else/Trans <</Type /Trans \PDFpagetransitions>>\fi}}
+
+%D \macros
+%D {doPDFinsertmov}
+%D
+%D Most of the annotations we use here are of type {\em
+%D link}, but here is another one: the {\em movie} annotation.
+%D The driver module must implement \type {setcurrentmovie}.
+
+%D Great: this will become an obsolete pdf feature; why did we have to
+%D keep up with the bugs ... and by the time acrobat gets better in
+%D handling it have to drop it.
+
+\let\currentmovie\s!unknown
+
+\def\doPDFinsertmov#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \xdef\currentmovie{#2}% label
+ \PointsToBigPoints{#7}\width
+ \PointsToBigPoints{#8}\height
+ \let\pdf@@options\empty
+ \let\pdf@@actions\empty
+ \donefalse
+ \@EA\processallactionsinset\@EA
+ [#9]
+ [\v!controls=>\donetrue,
+ \v!repeat=>\edef\pdf@@actions{\pdf@@actions /Mode /Repeat },
+ \v!preview=>\edef\pdf@@options{\pdf@@options /Poster true }]%
+ \edef\pdf@@actions{\pdf@@actions /ShowControls \ifdone true\else false\fi}%
+ \doPDFannotation width #7 height #8 data
+ {/Subtype /Movie
+ /Border [0 0 0]
+ /T (movie \currentmovie)
+ /Movie << /F (#1) /Aspect [\width\space\height] \pdf@@options >>
+ /A << \pdf@@actions >>}%
+ \egroup}
+
+%D \macros
+%D {doPDFinsertsoundtrack}
+%D
+%D In \PDF\ sounds can be embedded like movies.
+
+\ifx\everygoto\undefined \newtoks\everygoto \fi
+
+\let\currentsound\s!unknown
+
+\def\doPDFinsertsoundtrack#1#2#3%
+ {\bgroup
+ \xdef\currentsound{#2}%
+ \let\pdf@@actions\empty
+ \@EA\processallactionsinset\@EA
+ [#3]
+ [\v!repeat=>\edef\pdf@@actions{\pdf@@actions /Mode /Repeat }]%
+\collectdriverresource
+% \flushatshipout % since it can be buried in a chained box
+ {\doPDFannotation width 0pt height 0pt data
+ {/Subtype /Movie
+ /Border [0 0 0]
+ /T (sound \currentsound)
+ /Movie <</F (#1)>>%
+ \ifx\pdf@@actions\empty\else/A << \pdf@@actions >>\fi}}%
+ \egroup}
+
+%D \macros
+%D {doPDFattachfile}
+
+\def\doPDFfilestreamobject class #1 name #2 file #3 source #4%
+ {}
+
+\def\doPDFfilestreamidentifier#1%
+ {0}
+
+\def\doPDFgetfilestreamreference#1#2%
+ {0 0 R}
+
+\def\doPDFattachfile#1#2#3#4#5#6#7#8%
+ {\bgroup % title width height color symbol file
+ \edef\PDFfile{#8}\convertcommand\PDFfile\to\PDFfile
+ % beware: the symbol may (indirectly) use the file
+ % reference when typesetting the object number;
+ \presetPDFsymbolappearance{#5}{#6}{#2}{#3}{#4}% sets width/height
+ \startPDFsymbolappearance
+ \doPDFembedfile\PDFfile{#7}{#8}%
+ \doPDFgetembeddedfilereference\PDFfile\PDFobjectreference
+ \setFDFlayer\@@DriverAttachmentLayer
+ \doPDFannotation width {\width} height {\totalheight} data
+ {/Subtype /FileAttachment
+ /FS \PDFobjectreference\space
+ /Contents (#1)
+ \PDFsymbol
+ \FDFlayer
+ \PDFattributes}%
+ \stopPDFsymbolappearance
+ \egroup}
+
+% semi-public
+
+\def\doPDFembedfile#1#2#3% symbolic name | filename | user name
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doifnotflagged{a:\PDFfile}%
+ {\doPDFfilestreamobject
+ class PDFEF name {\PDFfile} file {#2} source {#3}%
+ \doglobal\setflag{a:\PDFfile}}}
+
+\def\doPDFgetembeddedfilereference#1#2%
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doPDFgetobjectreference{PDFEF}\PDFfile#2}
+
+\def\doPDFgetembeddedfilestreamreference#1#2%
+ {\edef\PDFfile{#1}\convertcommand\PDFfile\to\PDFfile
+ \doPDFgetfilestreamreference\PDFfile#2} % == \doPDFgetobjectreference{PDFFS}\PDFfile#2
+
+\definespecial \doattachfile {\doPDFattachfile}
+
+% requested by Jens-Uwe Morawski: permits usage of pdftosrc
+% in viewers that don't support attachments:
+%
+% \definesymbol
+% [ObjectNumber]
+% % [object number {\PDFattachmentnumber[xx]}] % named
+% [object number \PDFattachmentnumber] % current
+%
+% \useattachment[test][xx][test.tex]
+% \setupattachments[symbol=ObjectNumber]
+% \attachment[test]
+
+\def\PDFattachmentnumber
+ {\dosingleargument\doPDFattachmentnumber}
+
+\def\doPDFattachmentnumber[#1]%
+ {\iffirstargument
+ \doPDFfilestreamidentifier{#1}%
+ \else
+ \doPDFfilestreamidentifier\PDFfile
+ \fi}
+
+%D \macros
+%D {...}
+%D
+%D Rather preliminary. We have to wait till the complete specs
+%D show up. As usual, we cannot really check it (Acrobat 6.0
+%D has a bug that inhibits us to make a test file). Half a day
+%D of testing made clear that trying to control the plugin fails
+%D in most cases (we need plugin specs -). We also miss a feature
+%D to let acrobat wait with proceeding (action processing) till
+%D the media clip is ready.
+
+% aiff audio/aiff
+% au audio/basic
+% avi video/avi
+% mid audio/midi
+% mov video/quicktime
+% mp3 audio/x-mp3 (mpeg)
+% mp4 audio/mp4
+% mp4 video/mp4
+% mpeg video/mpeg
+% smil application/smil
+% swf application/x-shockwave-flash
+
+% beware, this is preliminary code, should be improved
+
+\def\PDFrenderingspecs#1{\executeifdefined{PDFMR:#1}\empty}
+
+\def\PDFexecutestartrendering {/Rendition /OP 0 \PDFrenderingspecs\argumentA}
+\def\PDFexecutestoprendering {/Rendition /OP 1 \PDFrenderingspecs\argumentA}
+\def\PDFexecutepauserendering {/Rendition /OP 2 \PDFrenderingspecs\argumentA}
+\def\PDFexecuteresumerendering {/Rendition /OP 3 \PDFrenderingspecs\argumentA}
+
+% todo : sub files
+%
+% \doPDFembedfile{pier-39.png}{pier-39.png}{pier-39.png}%
+% \doPDFgetembeddedfilestreamreference{pier-39.png}\xPDFobjectreference
+% \edef\xxxx{/RF [(pier-39.png) \xPDFobjectreference]}%
+
+% todo: alternative renderings
+%
+% object_1 -> <</Type /Rendition /S /MR /C << /Type /MediaClip ... >> >>
+% object_2 -> <</Type /Rendition /S /MR /C << /Type /MediaClip ... >> >>
+%
+% rendering -> <</Type /Rendition /S /MS [objref_1 objref_2]>>
+
+% todo: embedded files (too buggy)
+%
+% \let\PDFattribute\empty
+% % /D \PDFobjectreference
+% % test one, no error, but ignored
+% \doifinset\v!file{#4}
+% {\doPDFembedfile{#3}{#3}{#3}%
+% \doPDFgetembeddedfilestreamreference{#3}\PDFobjectreference
+% \edef\PDFattribute{/EF \PDFobjectreference}}%
+% % official, does not work either
+% \doifinset\v!file{#4}
+% {\doPDFembedfile{#3}{#3}{#3}%
+% \doPDFgetembeddedfilereference{#3}\PDFobjectreference}
+% % do we play the game as follows
+
+\definespecial\doinsertrendering#1#2#3#4% tag mime file options
+ {\ifundefined{PDFMR:#1}%
+ \doifinstringelse{://}{#3}\donetrue\donefalse % evt url as keyword
+ \doPDFdictionaryobject class {PDFMF} name {#1} data
+ {/Type /Rendition
+ /S /MR
+ % does not work: /SP << /Type /MediaScreenParam /BE << /B [1 0 0] /O 0.5 >> >>
+ /C << /Type /MediaClip
+ /S /MCD
+ /N (#1)
+ /Alt [() (file not found)] % language id + message
+ /D << /Type /Filespec
+ /F (#3)
+ \ifdone/FS /URL\fi >>
+ /CT (#2) >>}%
+ % common code
+ \doifobjectreferencefoundelse{PDFMS}{#1}
+ {\doPDFgetobjectreference{PDFMS}{#1}\PDFobjectreferenceB}
+ {\doPDFgetobjectreference{PDFMU}{#1}\PDFobjectreferenceB}%
+ \doPDFgetobjectreference{PDFMF}{#1}\PDFobjectreferenceA
+ \setxvalue{PDFMR:#1}% needed /AA actions in /Screen
+ {/R \PDFobjectreferenceA
+ /AN \PDFobjectreferenceB}%
+ \doifobjectreferencefoundelse{PDFMS}{#1}\donothing
+ {\dodoinsertrenderingwindow{PDFMU}{#1}\zeropoint\zeropoint{#4}}%
+ \fi}
+
+\definespecial\doinsertrenderingobject#1#2#3#4% tag class objectname options
+ {\ifundefined{PDFMR:#1}%
+ \doPDFgetobjectreference{#2}{#3}\PDFobjectreference
+ \doPDFdictionaryobject class {PDFMF} name {#1} data
+ {/Type /Rendition
+ /S /MR
+ /C << /Type /MediaClip
+ /S /MCD
+ /N (#1)
+ /D \PDFobjectreference>>}%
+ % common code
+ \doifobjectreferencefoundelse{PDFMS}{#1}
+ {\doPDFgetobjectreference{PDFMS}{#1}\PDFobjectreferenceB}
+ {\doPDFgetobjectreference{PDFMU}{#1}\PDFobjectreferenceB}%
+ \doPDFgetobjectreference{PDFMF}{#1}\PDFobjectreferenceA
+ \setxvalue{PDFMR:#1}% needed /AA actions in /Screen
+ {/R \PDFobjectreferenceA
+ /AN \PDFobjectreferenceB}%
+ \doifobjectreferencefoundelse{PDFMS}{#1}\donothing
+ {\dodoinsertrenderingwindow{PDFMU}{#1}\zeropoint\zeropoint{#4}}%
+ \fi}
+
+\definespecial\doinsertrenderingwindow
+ {\dodoinsertrenderingwindow{PDFMS}}
+
+\def\dodoinsertrenderingwindow#1#2#3#4#5%
+ {\vbox to #4 \bgroup
+ \checkPDFscreenactions{#2}{#5}%
+ \doPDFgetobjectpagereference{PDFMF}{#2}\PDFobjectreferenceA
+ \doPDFgetobjectreference {PDFMF}{#2}\PDFobjectreferenceB
+ \vss
+ \hbox to #3 \bgroup
+ \doPDFannotationobject class {#1} name {#2} width #3 height #4 data
+ {/Subtype /Screen
+ /P \PDFobjectreferenceA
+ /A \PDFobjectreferenceB
+ \PDFattributes
+ /Border [0 0 0]}%
+ \hss
+ \egroup
+ \egroup}
+
+\global\let\PDFrenderingopenpageaction \empty
+\global\let\PDFrenderingclosepageaction\empty
+
+\def\checkPDFscreenactions#1#2%
+ {\let\PDFattributes\empty
+ \iflocation % important since direct -)
+ % the action can either (already) be set by the window handler
+ % or (normally when no window [i.e a zero dimensions one] is present) by keyword
+ \doifinset\v!auto{#2}
+ {% brrr, here instead of in navigation module, must move and become special
+ % now two sided dependency
+ \let\checkrendering\gobbleoneargument
+ \ifx\PDFrenderingopenpageaction \empty
+ \handlereferenceactions{\v!StartRendering{#1}}\dosetuprenderingopenpageaction
+ \fi
+ \ifx\PDFrenderingclosepageaction\empty
+ \handlereferenceactions{\v!StopRendering {#1}}\dosetuprenderingclosepageaction
+ \fi
+ }%
+ \donefalse
+ \ifx\PDFrenderingopenpageaction \empty\!!doneafalse\else\donetrue\!!doneatrue\fi
+ \ifx\PDFrenderingclosepageaction\empty\!!donebfalse\else\donetrue\!!donebtrue\fi
+ \ifdone
+ \edef\PDFattributes
+ {/AA <<\if!!donea/PO <<\PDFrenderingopenpageaction >> \fi
+ \if!!doneb/PC <<\PDFrenderingclosepageaction>> \fi>>}%
+ \fi
+ \global\let\PDFrenderingopenpageaction \empty
+ \global\let\PDFrenderingclosepageaction\empty
+ \fi}
+
+\definespecial\dosetuprenderingopenpageaction {\global\let\PDFrenderingopenpageaction \lastPDFaction}
+\definespecial\dosetuprenderingclosepageaction{\global\let\PDFrenderingclosepageaction\lastPDFaction}
+
+%D \macros
+%D {doPDFinsertbookmark}
+%D
+%D Well, here is the dreadfull bookmark, rather useless because
+%D only standard encoding is possible, no typography is done,
+%D and a maximum of 32~characters is advized.
+
+\def\doPDFinsertbookmark#1#2#3#4#5% level sublevels text page open=1
+ {\bgroup
+ % todo, unicode
+ \sanitizePDFdocencoding#3\to\bookmarktext % uses scratchcounter
+ \stripstring\bookmarktext
+ %\sanitizePDFstring#3\to\bookmarktext
+ \doPDFbookmark level #1 n #2 text {\bookmarktext} page {#4} open #5
+ \egroup}
+
+%D The next section of this module is dedicated to form
+%D support. These macros are complicated by the fact that
+%D cloning is possible.
+
+%D \macros
+%D {FDFflag...,FDFplus...}
+%D
+%D The \type{/FT} key determines the type of field: text,
+%D button or choice. The latter two come in several disguises,
+%D which are set by flipping bits in the \type{/Ff}. Other bits
+%D are used to set states. Personally I hate this bitty way of
+%D doing things. The next six bit determine the field sub type:
+
+\def\FDFflagMultiLine {4096} % 13
+\def\FDFflagNoToggleToOff {16384} % 15
+\def\FDFflagRadio {32768} % 16
+\def\FDFflagPushButton {65536} % 17
+\def\FDFflagPopUp {131072} % 18
+\def\FDFflagEdit {262144} % 19
+
+% bugged anyway, so we need to drop it:
+
+\def\FDFflagRadiosInUnison {33554432} % 26
+
+%D A few more (pdf 1.4) flags, what the spell check one: for
+%D obscure reasons for Adobe downward compatibility means
+%D enabling features that harm old applications like testing.
+
+\def\FDFflagDoNotSpellCheck {4194304} % 23
+\def\FDFflagDoNotScroll {8388608} % 24
+
+%D The next bits (watch how strange the bits are organized)
+%D take care of the states:
+
+\def\FDFflagReadOnly {1} % 1
+\def\FDFflagRequired {2} % 2
+\def\FDFflagNoExport {4} % 3
+\def\FDFflagPassword {8192} % 14
+\def\FDFflagSort {524288} % 20
+\def\FDFflagFileSelect {1048576} % 21
+
+%D There is a second, again bitset oriented, \type{/F} flag:
+
+\def\FDFplusInvisible {1} % 1
+\def\FDFplusHidden {2} % 2
+\def\FDFplusPrintable {4} % 3
+
+%def\FDFplusNoView {32} % 6
+%def\FDFplusToggleNoView {256} % 9
+
+\def\FDFplusAutoView {256} % {288} % 6+9
+
+%D \macros
+%D {setFDFswitches}
+%D
+%D The non||type bits are mapped onto user||interface
+%D swithes, to be used later on:
+
+\def\@@FDFflag{FDFflag}
+\def\@@FDFplus{FDFplus}
+
+\letvalue {\@@FDFflag\v!readonly}=\FDFflagReadOnly
+\letvalue {\@@FDFflag\v!required}=\FDFflagRequired
+\letvalue {\@@FDFflag\v!protected}=\FDFflagPassword
+\letvalue {\@@FDFflag\v!sorted}=\FDFflagSort
+\letvalue {\@@FDFflag\v!unavailable}=\FDFflagNoExport
+\letvalue {\@@FDFflag\v!nocheck}=\FDFflagDoNotSpellCheck
+\letvalue {\@@FDFflag\v!fixed}=\FDFflagDoNotScroll
+\letvalue {\@@FDFflag\v!file}=\FDFflagFileSelect
+
+\letvalue {\@@FDFplus\v!hidden}=\FDFplusHidden
+\letvalue {\@@FDFplus\v!printable}=\FDFplusPrintable
+
+\letvalue {\@@FDFplus\v!auto}=\FDFplusAutoView
+
+%D A set of switches is collected into the flags we mentioned
+%D before by the next macro (we don't handle negations yet,
+%D but do take care of redundancy):
+
+\def\FDFflag{0}
+\def\FDFplus{0}
+
+\def\setFDFswitches[#1]%
+ {\bgroup
+ \!!counta\zerocount
+ \!!countb\zerocount
+ \def\docommando##1%
+ {\doifsomething{##1}
+ {\advance\!!counta 0\getvalue{\@@FDFflag##1}%
+ \setvalue{\@@FDFflag##1}{0}%
+ \advance\!!countb 0\getvalue{\@@FDFplus##1}%
+ \setvalue{\@@FDFplus##1}{0}}}%
+ \processcommacommand[#1]\docommando
+ \xdef\FDFflag{\the\!!counta}%
+ \xdef\FDFplus{\the\!!countb}%
+ \egroup}
+
+%D \macros
+%D {setFDFvalues}
+%D
+%D Menu items are passed as an array of \type{(string)}'s and
+%D the content of this array is build with:
+
+\let\FDFvalues \empty
+\let\FDFfirstvalues \empty
+\let\FDFsecondvalues\empty
+\let\FDFkidlist \empty
+\let\FDFdefaultindex\!!zerocount
+\let\FDFdefaultvalue\empty
+
+% Why do we need to tweak this mechanism each time acrobat updates ...
+% it would make sense to have version specific sections in pdf files
+% since my guess is that it never will be done right since each year
+% new programmers have new ideas about what is supposed to happen with
+% kids. So .. best is not to trust this feature esp not for radio
+% widgets. (new flags, different interpretation of AS etc etc)
+
+\def\setFDFvalues[#1][#2]% #1 = list (item=>value) #2 = default
+ {\let\FDFvalues \empty
+ %when radio opt works ok
+ %\let\FDFfirstvalues \empty
+ %\let\FDFsecondvalues\empty
+ \let\FDFkidlist \empty
+ %\let\FDFdefaultindex\!!zerocount
+ %\let\FDFdefaultvalue\empty
+ %\scratchcounter\zerocount
+ \def\dodocommando##1=>##2=>##3\end
+ {\addtocommalist{##1}\FDFkidlist
+ %\edef\FDFfirstvalues{\FDFfirstvalues(##1)}%
+ %\doif{##1}{#2}{\edef\FDFdefaultindex{\the\scratchcounter}}%
+ %\advance\scratchcounter\plusone
+ \doifelsenothing{##2}
+ {\doif{##1}{#2}{\edef\FDFdefaultvalue{##1}}%
+ %\edef\FDFsecondvalues{\FDFsecondvalues(##1)}%
+ \edef\FDFvalues{\FDFvalues [(##1)(##1)] }}
+ {\doif{##1}{#2}{\edef\FDFdefaultvalue{##2}}%
+ %\edef\FDFsecondvalues{\FDFsecondvalues(##2)}%
+ \edef\FDFvalues{\FDFvalues [(##2)(##1)] }}}% ! ##1 is shown
+ \def\docommando##1%
+ {\dodocommando##1=>=>\end}%
+ \expanded{\processcommalist[#1]}\docommando}
+
+%D This macro accepts comma separated \type{visual=>result}
+%D pairs.
+
+%D \macros
+%D {setFDFalignment}
+%D
+%D Text and line fields can be entered and showed in three
+%D alternative alingments, indicated by a digit:
+
+\def\FDFalign{0}
+
+\def\setFDFalignment[#1]%
+ {\processaction
+ [#1]
+ [ \v!left=>\edef\FDFalign{2}, % raggedleft
+ \v!middle=>\edef\FDFalign{1}, % raggedcenter
+ \v!right=>\edef\FDFalign{0}]} % raggedright
+
+%D \macros
+%D {setFDFattributes}
+%D
+%D The weak part of (at least version 2.1 \PDF) is that only
+%D default fonts are handled well. Another restriction is that
+%D the encoding vector must be the standard \PDF\ document one.
+%D Although the \PDF\ reference explictly states that one could
+%D use the normal text operators, leading is not yet handled.
+%D
+%D For the moment the current \CONTEXT\ font is mapped onto
+%D one best suitable default font. The color attribute is
+%D less problematic and is directly derived from the \CONTEXT\
+%D color.
+
+\def\FDFattributes{/Helv 12 Tf 0 g 14.4 TL}
+
+\def\FDFrm {TiRo} \def\FDFss {Helv} \def\FDFtt {Cour}
+\def\FDFrmtf{TiRo} \def\FDFsstf{Helv} \def\FDFtttf{Cour}
+\def\FDFrmbf{TiBo} \def\FDFssbf{HeBo} \def\FDFttbf{CoBo}
+\def\FDFrmit{TiIt} \def\FDFssit{HeOb} \def\FDFttit{CoOb}
+\def\FDFrmsl{TiIt} \def\FDFsssl{HeOb} \def\FDFttsl{CoOb}
+\def\FDFrmbi{TiBI} \def\FDFssbi{HeBO} \def\FDFttbi{CoBO}
+\def\FDFrmbs{TiBI} \def\FDFssbs{HeBO} \def\FDFttbs{CoBO}
+
+\let\FDFusedfonts=\FDFsstf
+
+\def\setFDFattributes[#1,#2,#3,#4]% style, color, backgroundcolor, framecolor
+ {\bgroup % nog interlinie: n TL
+ \setbox\scratchbox\hbox
+ \bgroup
+ \doconvertfont{#1}{}%
+ \PointsToBigPoints\bodyfontsize\size % x/xx, so better the actual size
+ \doifdefinedelse{FDF\fontstyle\fontalternative}
+ {\xdef\FDFattributes{\getvalue{FDF\fontstyle\fontalternative}}}
+ {\doifdefinedelse{FDF\fontstyle}
+ {\xdef\FDFattributes{\getvalue{FDF\fontstyle}}}
+ {\xdef\FDFattributes{\FDFrm}}}%
+ \doglobal\addtocommalist\FDFattributes\FDFusedfonts
+ \xdef\FDFattributes% move up with "x.y Ts"
+ {/\FDFattributes\space\size\space Tf\space\PDFcolor{#2}}%
+ \doifelsenothing{#3}
+ {\global\let\FDFsurroundings\empty}
+ {\xdef\FDFsurroundings{/BG \FDFcolor{#3}}}%
+ \doifsomething{#4}
+ {\xdef\FDFsurroundings{\FDFsurroundings\space /BC \FDFcolor{#4}}}%
+ \ifx\FDFsurroundings\empty \else
+ \xdef\FDFsurroundings{/MK << \FDFsurroundings\space>>}%
+ \fi
+ \egroup
+ \egroup}
+
+%D \macros
+%D {setFDFactions}
+%D
+%D Depending on the type of the field, one can assign
+%D \JAVASCRIPT\ code to a mouse event or keystroke. The next
+%D preparation macro shows what events are handled.
+
+\let\FDFactions\empty
+
+%\def\setFDFactions[#1,#2,#3,#4,#5,#6,#7,#8]%
+% {\global\let\FDFactions\empty
+% \setFDFaction D#1% mousedown
+% \setFDFaction U#2% mouseup
+% \setFDFaction E#3% enterregion
+% \setFDFaction X#4% exitregion
+% \setFDFaction K#5% afterkeystroke
+% \setFDFaction F#6% formatresult
+% \setFDFaction V#7% validateresult
+% \setFDFaction C#8% calculatewhatever
+% \ifx\FDFactions\empty\else
+% \xdef\FDFactions{/AA << \FDFactions >>}% since 1.3 no longer inherited
+% \fi}
+%% {\setFDFaction A#2}% mouseup % changed for version 5
+
+% \def\setFDFactions[#1,#2,#3,#4,#5,#6,#7,#8,%
+% {\global\let\FDFactions\empty
+% \setFDFaction D#1% mousedown
+% %\setFDFaction U#2% mouseup
+% \setFDFaction E#3% enterregion
+% \setFDFaction X#4% exitregion
+% \setFDFaction K#5% afterkeystroke
+% \setFDFaction F#6% formatresult
+% \setFDFaction V#7% validateresult
+% \setFDFaction C#8% calculatewhatever
+% \setFDFactionsmore#2,}
+
+% \def\setFDFactionsmore#1,#2,#3]%
+% {\setFDFaction{Fo}#2% focusin
+% \setFDFaction{Bl}#3% focusout % was I (now pdf ref manual explicitly talks about lowercase l)
+% \ifx\FDFactions\empty\else
+% \xdef\FDFactions{/AA << \FDFactions >>}% since 1.3 no longer inherited
+% \fi
+% \setFDFaction A#1}% mouseup
+
+\def\setFDFactions[#1,#2,#3,#4,#5,#6,#7,#8,%
+ {\global\let\FDFactions\empty
+ \setFDFaction D#1% mousedown
+ \setFDFaction U#2% mouseup
+ \setFDFaction E#3% enterregion
+ \setFDFaction X#4% exitregion
+ \setFDFaction K#5% afterkeystroke
+ \setFDFaction F#6% formatresult
+ \setFDFaction V#7% validateresult
+ \setFDFaction C#8% calculatewhatever
+ \setFDFactionsmore}
+
+\def\setFDFactionsmore#1,#2]%
+ {\setFDFaction{Fo}#1% focusin
+ \setFDFaction{Bl}#2% focusout % was I (now pdf ref manual explicitly talks about lowercase l)
+ \ifx\FDFactions\empty\else
+ \xdef\FDFactions{/AA << \FDFactions >>}% since 1.3 no longer inherited
+ \fi}
+
+% todo, when new var scheme is implemented
+%
+% \setFDFaction{PO}\@@DriverFieldPageOpen
+% \setFDFaction{PC}\@@DriverFieldPageClose
+% \setFDFaction{PV}\@@DriverFieldPageVisible
+% \setFDFaction{PI}\@@DriverFieldPageInVisible
+
+%D The event handler becomes something:
+%D
+%D \starttyping
+%D /AA << /D << /S ... >> ... /C << /S ... >>
+%D /A << /S /JavaScript /JS (...) >>
+%D \stoptyping
+
+% \def\setFDFaction#1#2%
+% {\bgroup
+% \global\let\sanitizedJScode\empty
+% \def\setFDFaction##1%
+% {\doifreferencefoundelse{##1}
+% {\doifelse{\currentreferencespecial}{JS} % filter non-js
+% {\presetJScode
+% \currentreferenceoperation
+% \currentreferencearguments
+% \doPSsanitizeJScode\JScode\to\JScode
+% \xdef\sanitizedJScode{\sanitizedJScode\space\JScode}}
+% {\illegalreference{##1}}}
+% {\unknownreference{##1}}}%
+% \@EA\processcommalist\@EA[#2]\setFDFaction % one level expansion
+% \ifx\sanitizedJScode\empty \else
+% \xdef\FDFactions%
+% {\FDFactions /#1 << /S /JavaScript /JS (\sanitizedJScode) >> }%
+% \fi
+% \egroup}
+%
+% acrobat 5 supports other that JS actions too
+
+\def\setFDFaction#1#2%
+ {\bgroup
+ \def\docommando{\xdef\FDFactions{\FDFactions /#1 << \lastPDFaction >> }}%
+ \@EA\handlereferenceactions\@EA{#2}\docommando % one level expansion
+ \egroup}
+
+%D \macros
+%D {testFDFactions}
+%D
+%D This rather confusion prone series of script can be tested
+%D with:
+%D
+%D \starttyping
+%D \testFDFactions
+%D \stoptyping
+%D
+%D which simply redefined the previous macro to one that prints
+%D a message to the console.
+
+\def\testFDFactions
+ {\def\setFDFaction##1##2%
+ {\doPSsanitizeJScode console.show();console.println("executing:##1"); \to\sanitizedJScode
+ \edef\FDFactions{\FDFactions /##1 << /S /JavaScript /JS (\sanitizedJScode) >> }}}
+
+%D \macros
+%D {doFDFregistercalculationset}
+%D
+%D There is at most one calculation order list, which defines
+%D the order in which fields are calculated.
+
+\let\PDFcalculationset\empty
+
+\def\doFDFregistercalculationset#1%
+ {\def\PDFcalculationset{#1}}
+
+%D \macros
+%D {registerFDFobject,everylastshipout}
+%D
+%D Officially one needs to embed some general datastructures
+%D that tell the viewer what fields are present in the file, as
+%D well as what resources they use. The next mechanism does that
+%D job automatically when one registers the field.
+
+\def\flushFDFnames
+ {\ifbuildFDFdictionary
+ \ifx\FDFcollection\empty\else
+ \ifbuildFDFencodingvector
+ \doPDFdictionaryobject class FDF name local:encodingvector data
+ \FDFencodingvector
+ \fi
+ \defineFDFfonts
+ \doPDFarrayobject class FDF name local:fields data \FDFcollection
+ \doPDFgetobjectreference{FDF}{local:fields}\PDFobjectreference
+ % The /NeedAppearances is pretty important because
+ % otherwise Acrobat 5 blows up on cloned radio widgets
+ \doPDFdictionaryobject class FDF name local:acroform data
+ {/Fields \PDFobjectreference\space
+ /NeedAppearances true
+ \doFDFiffieldset\PDFcalculationset{/CO [\doFDFgetfieldset\PDFcalculationset]}
+ /DR << /Font << \FDFfonts >> >>
+ /DA (/Helv 10 Tf 0 g)}%
+ \doPDFgetobjectreference{FDF}{local:acroform}\PDFobjectreference
+ \doPDFaddtocatalog
+ {/AcroForm \PDFobjectreference}%
+ \global\let\FDFcollection\empty
+ \global\let\flushFDFnames\relax
+ \fi
+ \fi}
+
+\let\FDFcollection\empty
+
+\def\registerFDFobject#1%
+ {\ifbuildFDFdictionary
+ \ifx\flushFDFnames\relax
+ \writestatus{FDF}{second run needed for field list (#1)}%
+ \fi
+ \doPDFgetobjectreference{FDF}{#1}\PDFobjectreference
+ \xdef\FDFcollection{\FDFcollection\space\PDFobjectreference}%
+ \fi}
+
+\appendtoksonce \flushFDFnames \to \everylastshipout % test \everybye / was \prependtoksonce
+
+%D \macros
+%D {defineFDFfonts,
+%D ifbuildFDFdictionary,
+%D ifbuildFDFencodingvector}
+%D
+%D Another datastruture concerns the fonts used. We only
+%D define the fonts we use.
+
+\newif\ifbuildFDFdictionary \buildFDFdictionarytrue
+\newif\ifbuildFDFencodingvector \buildFDFencodingvectortrue
+
+\def\defineFDFfonts
+ {\let\FDFfonts\empty
+ \processcommacommand[\FDFusedfonts]\defineFDFfont}
+
+\def\defineFDFfont#1%
+ {\ifbuildFDFencodingvector
+ \doPDFgetobjectreference{FDF}{local:encodingvector}\PDFobjectreference
+ \fi
+ \doPDFdictionaryobject class FDF name local:#1 data
+ {/Type /Font
+ /Subtype /Type1
+ /Name /#1
+ \ifbuildFDFencodingvector /Encoding \PDFobjectreference\space\fi
+ /BaseFont /\getvalue{FDFname#1}}%
+ \doPDFgetobjectreference{FDF}{local:#1}\PDFobjectreference
+ \edef\FDFfonts{\FDFfonts \space/#1 \PDFobjectreference}}
+
+%D Another list of constants:
+
+\def\FDFnameTiRo {Times-Roman}
+\def\FDFnameTiBo {Times-Bold}
+\def\FDFnameTiIt {Times-Italic}
+\def\FDFnameTiBI {Times-BoldItalic}
+\def\FDFnameHelv {Helvetica}
+\def\FDFnameHeBo {Helvetica-Bold}
+\def\FDFnameHeOb {Helvetica-Oblique}
+\def\FDFnameHeBO {Helvetica-BoldOblique}
+\def\FDFnameCour {Courier}
+\def\FDFnameCoBo {Courier-Bold}
+\def\FDFnameCoOb {Courier-Oblique}
+\def\FDFnameCoBO {Courier-BoldOblique}
+
+%D And a big one: (should be run time loaded (spec-run or
+%D so)).
+
+\def\FDFencodingvector
+ {/Type /Encoding
+ /Differences
+ [ 24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek
+ /ring /tilde
+ 39 /quotesingle
+ 96 /grave
+ 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin
+ /fraction /guilsinglleft /guilsinglright /minus /perthousand
+ /quotedblbase /quotedblleft /quotedblright /quoteleft
+ /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE
+ /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron
+ /zcaron
+ 164 /currency
+ 166 /brokenbar
+ 168 /dieresis /copyright /ordfeminine
+ 172 /logicalnot /.notdef /registered /macron /degree /plusminus
+ /twosuperior /threesuperior /acute /mu
+ 183 /periodcentered /cedilla /onesuperior /ordmasculine
+ 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute
+ /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave
+ /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex
+ /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde
+ /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls /agrave /aacute
+ /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave
+ /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex
+ /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde
+ /odieresis /divide /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis ]}
+
+%D \macros
+%D {currentFDFmode,currentFDFparent,currentFDFkids,currenrFDFroot}
+%D
+%D There are three more quasi global interfacing variables
+%D that need to be set.
+
+\let\currentFDFmode =\fieldlonermode
+\let\currentFDFkids =\empty
+\let\currentFDFparent=\empty
+\let\currentFDFroot =\empty
+
+%D \macros
+%D {dosetfieldstatus}
+%D
+%D And here comes the special that deals with them.
+
+\definespecial\dosetfieldstatus#1#2#3#4%
+ {\chardef\currentFDFmode #1%
+ \edef\currentFDFparent {#2}%
+ \edef\currentFDFkids {#3}%
+ \edef\currentFDFroot {#4}}
+
+%D \macros
+%D {dosetuppageview}
+%D
+%D Because this command will seldom be called, we can permit
+%D slow action processing. We need three settings, one for
+%D direct \PDF\ inclusion, the other as \PDFTEX\ keyword, an
+%D a last one for form. All determine in what way the
+%D screen is adapted when going to a destination. Watch the
+%D space.
+
+\def\PDFpageviewkey{fit}
+\def\PDFpageviewwrd{/Fit}
+\def\PDFpageview {/View [\PDFpageviewwrd] }
+\def\PDFpagexyzspec{0 0 0} % hack, pdftex does handle this
+
+\def\dosetuppageview#1% watch the v-h swapping here
+ {\processaction
+ [#1]
+ [ \v!fit=>\def\PDFpageviewkey {fit}\def\PDFpageviewwrd{/Fit},
+ \v!width=>\def\PDFpageviewkey {fith}\def\PDFpageviewwrd{/FitH},
+ \v!height=>\def\PDFpageviewkey {fitv}\def\PDFpageviewwrd{/FitV},
+ \v!minwidth=>\def\PDFpageviewkey{fitbh}\def\PDFpageviewwrd{/FitBH},
+ \v!minheight=>\def\PDFpageviewkey{fitbv}\def\PDFpageviewwrd{/FitBV},
+ \v!standard=>\def\PDFpageviewkey{xyz \PDFpagexyzspec}\def\PDFpageviewwrd{/XYZ \PDFpagexyzspec},
+ \s!unknown=>\def\PDFpageviewkey {fit}\def\PDFpageviewwrd{/Fit}]%
+ \edef\PDFpageview{/View [\PDFpageviewwrd]}}
+
+%D \macros
+%D {setFDFkids}
+%D
+%D Clones as well as radiofields (which themselves can have
+%D cloned components) need a list of kids. The next macro
+%D builds one.
+
+\def\setFDFkids[#1][#2]% tag commalist
+ {\let\FDFkids\empty
+ \def\docommando##1%
+ {\doPDFgetobjectreference{FDF}{#1##1}\PDFobjectreference
+ \edef\FDFkids{\FDFkids\PDFobjectreference\space}}%
+ \@EA\processcommalist\@EA[#2]\docommando
+ \ifx\FDFkids\empty\else\edef\FDFkids{/Kids [\FDFkids]}\fi
+% \edef\FDFkids{/Kids [\FDFkids]}%
+ }
+
+%D \macros
+%D {doFDFpresetlinefield,doFDFpresettextfield,
+%D doFDFpresetchoicefield,doFDFpresetpopupfield,doFDFpresetcombofield,
+%D doFDFpresetpushfield,doFDFpresetcheckfield,
+%D doFDFpresetfield,doFDFpresetradiorecord}
+%D
+%D I would say: read the \PDF\ reference manual first and see
+%D what happens here next. Lucky us that they have so much in
+%D common.
+
+\def\doFDFpresetlinefield#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \setFDFlayer\@@DriverFieldLayer
+ \setFDFswitches[#7]%
+ \setFDFattributes[#6]%
+ \setFDFalignment[#8]%
+ \setFDFactions[#9]%
+ \expanded{\escapePSstring#4}\to\FDFtext
+ \ifcase\currentFDFmode
+ \doPDFannotationobject class FDF name #1 width #2 height #3 data
+ {/Subtype /Widget /T (#1) /FT /Tx
+ /MaxLen \ifcase0#5 1000 \else#5 \fi
+ %/DV (#4) /V (#4) % value added
+ /DV (\FDFtext) /V (\FDFtext) % value added
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ /Q \FDFalign\space
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \setFDFkids[kids:][\currentFDFkids]%
+ \doPDFdictionaryobject class FDF name #1 data
+ {/T (#1) /FT /Tx
+ /MaxLen \ifcase0#5 1000 \else#5 \fi
+ \FDFkids\space
+ %/DV (#4) /V (#4) % value added
+ /DV (\FDFtext) /V (\FDFtext) % value added
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ /Q \FDFalign\space
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ /Q \FDFalign\space
+ \FDFactions}%
+ \or
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference
+ /F \FDFplus
+ \FDFactions}%
+ \fi
+ \egroup}
+
+\def\doFDFpresettextfield#1#2#3#4#5#6#7#8#9%
+ {\doFDFpresetlinefield{#1}{#2}{#3}{#4}{#5}{#6}{MultiLine,#7}{#8}{#9}}
+
+\def\doFDFpresetchoicefield#1#2#3#4#5#6#7#8%
+ {\bgroup
+ \setFDFlayer\@@DriverFieldLayer
+ \setFDFswitches[#6]%
+ \setFDFattributes[#5]%
+ \setFDFvalues[#7][#4]%
+ \setFDFactions[#8]%
+ \ifcase\currentFDFmode
+ \doPDFannotationobject class FDF name #1 width #2 height #3 data
+ {/Subtype /Widget
+ /T (#1) /FT /Ch
+ /DV (#4) /V (#4)
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ /Opt [\FDFvalues]
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \setFDFkids[kids:][\currentFDFkids]%
+ \doPDFdictionaryobject class FDF name #1 data
+ {/T (#1) /FT /Ch
+ \FDFkids\space
+ /DV (#4) /V (#4)
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ /Opt [\FDFvalues]
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ /DA (\FDFattributes)
+ \FDFlayer\space
+ \FDFsurroundings\space
+ \FDFactions}%
+ \or
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference
+ /F \FDFplus
+ \FDFactions}%
+ \fi
+ \egroup}
+
+\def\doFDFpresetpopupfield#1#2#3#4#5#6#7#8%
+ {\doFDFpresetchoicefield{#1}{#2}{#3}{#4}{#5}{PopUp,#6}{#7}{#8}}
+
+\def\doFDFpresetcombofield#1#2#3#4#5#6#7#8%
+ {\doFDFpresetchoicefield{#1}{#2}{#3}{#4}{#5}{PopUp,Edit,#6}{#7}{#8}}
+
+\newif\ifFDFvalues
+
+\def\doFDFpresetpushcheckfield#1#2#3#4#5#6#7#8% in acro<5 (\FDFdefault)
+ {\bgroup % in acro>5 /\FDFdefault
+ \setFDFlayer\@@DriverFieldLayer
+ \ifcase#8\relax\FDFvaluesfalse\else\FDFvaluestrue\fi
+ \setFDFswitches[#5]%
+ \setFDFactions[#7]%
+ \doifelse{#4}{1}
+ {\def\FDFdefault{On}}
+ {\def\FDFdefault{Off}}%
+ \ifcase\currentFDFmode
+ \doFDFappearance{On}{#6}{#8}%
+ \doPDFannotationobject class FDF name #1 width #2 height #3 data
+ {/Subtype /Widget /T (#1) /FT /Btn
+ \ifFDFvalues
+ /DV /\FDFdefault\space
+ /V /\FDFdefault\space
+ /AS /\FDFdefault\space
+ \fi
+ \FDFlayer
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ \FDFlayer\space
+ \FDFappearance\space
+% /IF << /SW /N >> % strange, only works for stupid buttons
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or % no appearance and layer ?
+ \setFDFkids[kids:][\currentFDFkids]%
+ \doPDFdictionaryobject class FDF name #1 data
+ {/T (#1) /FT /Btn
+ \FDFkids\space
+ \ifFDFvalues
+ /DV /\FDFdefault\space
+ /V /\FDFdefault\space
+ /AS /\FDFdefault\space
+ \fi
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \doFDFappearance{On}{#6}{#8}%
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference\space
+ \ifFDFvalues
+ /DV /\FDFdefault\space
+ /V /\FDFdefault\space
+ /AS /\FDFdefault\space
+ \fi
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ \FDFlayer\space
+ \FDFappearance\space
+ \FDFactions}%
+ \or
+ \doFDFappearance{On}{#6}{#8}%
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference\space
+ /F \FDFplus\space
+ \ifFDFvalues
+ /DV /\FDFdefault\space
+ /V /\FDFdefault\space
+ /AS /\FDFdefault\space
+ \fi
+ \FDFlayer\space
+ \FDFappearance
+ \FDFactions}%
+ \fi
+ \egroup}
+
+\def\doFDFpresetpushfield#1#2#3#4#5#6#7%
+ {\doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{PushButton,#5}{#6}{#7}{0}}
+
+\def\doFDFpresetcheckfield#1#2#3#4#5#6#7%
+ {\doFDFpresetpushcheckfield{#1}{#2}{#3}{#4}{#5}{#6}{#7}{1}}
+
+\def\doFDFpresetradiofield#1#2#3#4#5#6#7#8%
+ {\bgroup
+ \setFDFlayer\@@DriverFieldLayer
+ \FDFvaluestrue
+ \setFDFswitches[#5]%
+ \setFDFactions[#8]%
+ \doifelsenothing{#4}
+ {\def\FDFdefault{Off}}
+ {\def\FDFdefault{#4}}%
+ \@EA\aftersplitstring\FDFdefault\at=>\to\FDFdefaultvalue
+ \ifx\FDFdefaultvalue\empty\else\let\FDFdefault\FDFdefaultvalue\fi
+ \ifcase\currentFDFmode
+ \doFDFappearance{#1}{#7}{1}%
+ \doPDFgetobjectreference{FDF}{#6}\PDFobjectreference
+ \doPDFannotationobject class FDF name #1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference\space
+ /F \FDFplus\space
+ /AS /\FDFdefault\space
+ \FDFlayer\space
+ \FDFappearance\space
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ \setFDFkids[kids:][\currentFDFkids]%
+ \doPDFgetobjectreference{FDF}{#6}\PDFobjectreference
+ \doPDFdictionaryobject class FDF name #1 data
+ {/Parent \PDFobjectreference\space
+ \FDFkids\space
+ /F \FDFplus\space
+ \FDFactions}%
+ \registerFDFobject{#1}%
+ \or
+ %\doFDFappearance{#1}{#7}{1}%
+ \doFDFappearance{\currentFDFparent}{#7}{1}%
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue % nb
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference\space
+ /AS /\FDFdefault\space
+ /F \FDFplus\space
+ \FDFlayer\space
+ \FDFappearance\space
+ \FDFactions}%
+ \or
+ %\doFDFappearance{#1}{#7}{1}%
+ \doFDFappearance{\currentFDFparent}{#7}{1}%
+ \doPDFgetobjectreference{FDF}\currentFDFparent\PDFobjectreference
+ %\global\objectreferencingtrue
+ \doPDFannotationobject class FDF name kids:#1 width #2 height #3 data
+ {/Subtype /Widget
+ /Parent \PDFobjectreference\space
+ /AS /\FDFdefault\space
+ /F \FDFplus\space
+ \FDFlayer\space
+ \FDFappearance\space
+ \FDFactions}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {setFDFstrings}
+%D
+%D This one creates a string array.
+
+%\def\setFDFstrings[#1]%
+% {\let\FDFstrings\empty
+% \def\docommando##1{\edef\FDFstrings{\FDFstrings(##1)}}%
+% \processcommacommand[#1]\docommando}
+
+% Beware, RadiosInUnison is really needed in the pre 1.5/6 time this
+% was the default but out of a sudden it's no longer the case. Also
+% the NoToggleToOff interferes with kids of kids and both it will
+% break older documents, i.e. so much for pdf as standard. With
+% features like widgets we can probably best wait till adobe tools
+% themselves support it because that's probably the moment that
+% functionality gets frozen/becomes definitive. Actually, acrobat
+% flattens the kids tree, so that's yet another situation. The
+% interesting thing is that it worked ok in acrobat 2/3 but got bugged
+% in later versions. [The rationale is in html compatibility, which
+% seems to be more important than compatibility of documents, which in
+% turn renders acrobat useless for forms.] Anyway, synchronization is
+% broken or not depending on the combination pdfversion/acrobatversion.
+
+\def\doFDFpresetradiorecord#1#2#3#4#5%
+ {\bgroup
+ % < pdf 1.5 (1.5 was broken)
+ % \setFDFswitches[Radio,NoToggleToOff,RadiosInUnison,#3]%
+ % > pdf 1.5
+ \setFDFswitches[Radio,RadiosInUnison,#3]%
+ % older, else fatal error
+ % \setFDFkids[#4][]%
+ % newer
+ \setFDFvalues[#4][#2]% inits kidlist
+ \expanded{\setFDFkids[][\FDFkidlist]}%
+ %
+ \setFDFactions[#5]%
+ \doPDFdictionaryobject class FDF name #1 data
+ {%/Subtype /Widget
+ /FT /Btn /T (#1) /Rect [0 0 0 0]
+ % used to be this
+ % /V (#2)
+ % then this
+ % /DV (#2)
+ % since this bomded in 5
+ % /V (#2)
+ % and now finally this works
+ /H /N
+ % /opt is buggy in 5.05, only works once, sigh
+ %\ifx\FDFfirstvalues\FDFsecondvalues
+ /V /#2
+ %\else
+ % /V /\FDFdefaultindex\space
+ % /Opt [\FDFsecondvalues]
+ %\fi
+ /Ff \FDFflag\space
+ /F \FDFplus\space
+ \FDFkids\space
+ \FDFactions}%
+ \egroup}
+
+%D At the cost of some more references, we can save bytes,
+%D by sharing appearance dictionaries. This code needs more
+%D documentation. Surprise:
+
+\def\dodoFDFappearance#1#2%
+ {\ifx#2\empty\else
+ \dogetcommacommandelement1\from#2\to\commalistelement
+ \ifx\commalistelement\empty\else
+ \doPDFgetobjectreference{SYM}\commalistelement\PDFobjectreference
+ \edef\N{\ifFDFvalues\N /#1 \fi\PDFobjectreference\space}%
+ \fi
+ \dogetcommacommandelement2\from#2\to\commalistelement
+ \ifx\commalistelement\empty\else
+ \doPDFgetobjectreference{SYM}\commalistelement\PDFobjectreference
+ \edef\R{\ifFDFvalues\R /#1 \fi\PDFobjectreference\space}%
+ \fi
+ \dogetcommacommandelement3\from#2\to\commalistelement
+ \ifx\commalistelement\empty\else
+ \doPDFgetobjectreference{SYM}\commalistelement\PDFobjectreference
+ \edef\D{\ifFDFvalues\D /#1 \fi\PDFobjectreference\space}%
+ \def\FDFappearance{/H /P }%
+ \fi
+ \fi}
+
+\def\redoFDFappearance#1%
+ {\ifx#1\empty\else
+ \dogetcommacommandelement3\from#1\to\commalistelement
+ \ifx\commalistelement\empty\else
+ \def\FDFappearance{/H /P }%
+ \fi
+ \fi}
+
+\def\doFDFappearance#1#2#3%
+ {\ifcase#3\relax % push only field
+ \edef\yes{#2}%
+ \let\no\empty
+ \else % on / off field
+ \dogetcommacommandelement1\from#2,\to\yes
+ \dogetcommacommandelement2\from#2,\to\no
+ \fi
+ \def\FDFappearance{/H /N}%
+ \doifobjectfoundelse{FDF}{ap:#1:\yes:\no}
+ {\redoFDFappearance\yes
+ \redoFDFappearance\no}
+ {\presetobject{FDF}{ap:#1:\yes:\no}% funny hack
+ \let\N\empty\let\R\empty\let\D\empty
+ \dodoFDFappearance{#1}\yes
+ \dodoFDFappearance{Off}\no
+ \doPDFdictionaryobject class FDF name {ap:#1:\yes:\no} data
+ {\ifx\N\empty\else/N \ifFDFvalues<<\N>>\else\N\fi\fi
+ \ifx\R\empty\else/R \ifFDFvalues<<\R>>\else\R\fi\fi
+ \ifx\D\empty\else/D \ifFDFvalues<<\D>>\else\D\fi\fi}}%
+ \doPDFgetobjectreference{FDF}{ap:#1:\yes:\no}\PDFobjectreference
+ \edef\FDFappearance{\FDFappearance /AP \PDFobjectreference}}
+
+%\def\doFDFdefault#1#2%
+% {\dogetcommacommandelement1\from#1,\to\commalistelement
+% \dogetcommacommandelement1\from\commalistelement\to\commalistelement
+% \doifelse{\commalistelement}{#2} % kan ook met \ifx
+% {\def\FDFdefault{On}}{\def\FDFdefault{Off}}}
+
+\def\doFDFdefault#1#2%
+ {\doifelse{#2}{1}{\def\FDFdefault{On}}{\def\FDFdefault{Off}}}
+
+%D Layer support:
+
+\def\setFDFlayer#1% todo : \ifx\PDFobjectreference\noPDFobjectreference ipv found
+ {\letempty\FDFlayer
+ \doifsomething{#1}%
+ {\checkproperty[#1]% == \dodocheckproperty\@@DriverFieldLayer
+ \doifobjectreferencefoundelse{PDLN}{#1}
+ {\doPDFgetobjectreference{PDLN}{#1}\!!stringa % we need to avoid a clash with other macros
+ \edef\FDFlayer{/OC \!!stringa}}%
+ \donothing}}
+
+%D The three appearances {\em normal}, \type{roll over} and
+%D \type{push down} are passed as comma separated triplets,
+%D that is, the second argument can look like:
+%D
+%D \starttyping
+%D {yes,ok,fine},{no,rubish,awful}
+%D \stoptyping
+
+%D \macros
+%D {doFDFdefinefieldset,doFDFgetfieldset,doFDFiffieldset}
+%D
+%D Field sets, the ones we use in submitting and resetting
+%D fields, are implemented using the next low level specials:
+%D
+%D \starttyping
+%D \doFDFdefinefieldset{TAG}{name,name,...}
+%D \doFDFgetfieldset{TAG}
+%D \doFDFiffieldset{TAG}{sequence}
+%D \stoptyping
+
+\def\doFDFdefinefieldset#1#2% tag commalist
+ {\let\FDFfieldset\empty
+ \def\docommando##1%
+ {\doPDFgetobjectreference{FDF}{##1}\PDFobjectreference
+ \edef\FDFfieldset{\FDFfieldset\PDFobjectreference\space}}%
+ \processcommacommand[#2]\docommando % nb: command
+ \setevalue{FDF:set:#1}{\FDFfieldset}}
+
+\def\doFDFgetfieldset#1%
+ {\getvalue{FDF:set:#1}}
+
+\def\doFDFiffieldset#1#2%
+ {\ifundefined{FDF:set:#1}\else#2\fi}
+
+%D In the goto specials we took care of secondary references.
+%D Here we define the macros used.
+
+\def\doPDFresetgotowhereever
+ {\global\let\secondaryPDFreferences\empty}
+
+\doPDFresetgotowhereever % just to be sure
+
+% we can (in etex) share more by testing on this
+
+\def\savesecondaryPDFreference#1%
+ %{\setxvalue{PDF-SR:\the\nofsecondaryreferences}{#1}}
+ {\@EA\xdef\csname PDF-SR:\the\nofsecondaryreferences\endcsname{#1}}
+
+\def\savesecondaryPDFreference % #1 == \action
+ {\global\@EA\let\csname PDF-SR:\the\nofsecondaryreferences\endcsname}
+
+%\def\getsecondaryPDFreferences%
+% {\ifcase\nofsecondaryreferences\else
+% %\doifdefined{PDF-SR:\the\nofsecondaryreferences}
+% \xdef\secondaryPDFreferences%
+% {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+% \secondaryPDFreferences >>}%
+% \global\advance\nofsecondaryreferences \minusone
+% \expandafter\getsecondaryPDFreferences
+% \fi}
+
+% test should happen in core-ref
+
+\beginETEX \ifcsname
+
+\def\getsecondaryPDFreferences
+ {\ifcase\nofsecondaryreferences\else
+ \ifcsname PDF-SR:\the\nofsecondaryreferences\endcsname
+ \xdef\secondaryPDFreferences
+ {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+ \secondaryPDFreferences >>}%
+ \fi
+ \global\advance\nofsecondaryreferences \minusone
+ \expandafter\getsecondaryPDFreferences
+ \fi}
+
+\endETEX
+
+\beginTEX
+
+\def\getsecondaryPDFreferences
+ {\ifcase\nofsecondaryreferences\else
+ \@EA\ifx\csname PDF-SR:\the\nofsecondaryreferences\endcsname\relax\else
+ \xdef\secondaryPDFreferences
+ {/Next << \csname PDF-SR:\the\nofsecondaryreferences\endcsname\space
+ \secondaryPDFreferences >>}%
+ \fi
+ \global\advance\nofsecondaryreferences \minusone
+ \expandafter\getsecondaryPDFreferences
+ \fi}
+
+\endTEX
+
+%D \macros
+%D {loadFDFfields, showFDFfields,
+%D getFDFfield, setFDFfield}
+%D
+%D Once filled in, we can export or submit the field in the
+%D \FDF\ file format. Such a file can be loaded by
+%D
+%D \starttyping
+%D \loadFDFfields{fiel-ini}
+%D \stoptyping
+%D
+%D or inspected by
+%D
+%D \starttyping
+%D \showFDFfields{fiel-ini}
+%D \stoptyping
+%D
+%D After both commands, one can use
+%D
+%D \starttyping
+%D \getFDFfield{name}
+%D \setFDFfield{name}{value}
+%D \stoptyping
+%D
+%D to inspect and overrule the data.
+%D
+%D By default \CONTEXT\ calls the perl script \type{fdf2tex}.
+%D This script reads the \type{fdf} file and produces a file
+%D named \type{filename.fdt}. If one disables the call to this
+%D script, by saying:
+%D
+%D \starttyping
+%D \runFDFconverterfalse
+%D \stoptyping
+%D
+%D or when \CONTEXT\ cannot find the \type{fdt} file, it tries
+%D to interpret the \type{fdf} file directly. Both mechanisms
+%D are rather crude.
+
+\newif\ifrunFDFconverter \runFDFconvertertrue
+
+%D The \PERL\ script produces a file formatted as:
+%D
+%D \starttyping
+%D \beginFDFobject
+%D \beginFDFdata
+%D \beginFDFfields
+%D \FDFfield[name=,value=]
+%D \endFDFfields
+%D \endFDFdata
+%D \endFDFobject
+%D \stoptyping
+%D
+%D One reason for using key value pairs is that we cannot be
+%D sure or the order in which the name and value are given
+%D (actually the reverse).
+
+\def\PERLloadFDFfields#1% will become obsolete soon
+ {\bgroup
+ \global\let\allFDFfields\empty
+ \ifrunFDFconverter
+ \executesystemcommand{fdf2tex #1}%
+ \let\beginFDFobject\relax \let\endFDFobject\relax
+ \let\beginFDFdata \relax \let\endFDFdata \relax
+ \let\beginFDFfields\relax \let\endFDFfields\relax
+ \def\FDFfield[##1]%
+ {\getparameters[FDF][##1]%
+ \doglobal\addtocommalist\FDFname\allFDFfields
+ \global\setFDFfield{\FDFname}{\FDFvalue}}%
+ \ReadFile{#1.fdt}%
+ \fi
+ \egroup}
+
+%D The next macro does the same job, but now in the \TEX\ way
+%D of doing things. Easy eh? Will become obsolete!
+
+\bgroup
+
+\catcode`\/=\@@other
+\global\let\normalslash=/
+\catcode`\/=\@@escape
+
+\gdef\TEXloadFDFfields#1% will become obsolete due to XFDF
+ {\bgroup
+ \setbox0=\hbox
+ {\global\let\allFDFfields\empty
+ \scratchcounter=0
+ \escapechar=-1
+ \catcode`\/=\@@escape
+ \catcode`\(=\@@begingroup
+ \catcode`\)=\@@endgroup
+ \catcode`\%=\@@letter
+ \let/A =\relax \let/AS =\relax \let/Kids=\relax \let/Fields=\relax
+ \let/F =\relax \let/ID =\relax \let/SetF=\relax \let/setFf =\relax
+ \let/Ff=\relax \let/Opt=\relax \let/ClrF=\relax \let/ClrFf =\relax
+ \let/AP=\relax \let/FDF=\relax \let/Root=\relax
+ \def/T##1{\check\Title{##1}}
+ \def/V{\bgroup\catcode`\/=\@@other\futurelet\next/doV}
+ \def/doV{\ifx\next\normalslash\@EA/doVb\else\@EA/doVa\fi}
+ \def/doVa##1{\egroup\check\Value{##1}}
+ \def/doVb##1##2 {\egroup\check\Value{##2}} % watch the space
+ \def\check##1##2%
+ {\def##1{##2}
+ \advance\scratchcounter by 1
+ \ifodd\scratchcounter \else
+ \convertcommand\Title\to\asciiA
+ \global\setFDFfield{\asciiA}{\Value}
+ \doglobal\addtocommalist\Title\allFDFfields
+ \fi}
+ \ReadFile{#1.fdf}}%
+ \egroup}
+
+\egroup
+
+%D Whatever mechanism is used, the next macros can be used to
+%D fetch the values.
+
+\def\getFDFfield #1{\getvalue {FDFfield::#1}}
+\def\setFDFfield#1#2{\setevalue{FDFfield::#1}{#2}}
+
+%D Of course the fields are only present when the file is
+%D loaded.
+
+\def\loadFDFfields#1%
+ {\PERLloadFDFfields{#1}%
+ \ifx\allFDFfields\empty
+ \TEXloadFDFfields{#1}%
+ \fi}
+
+\def\showFDFfields#1%
+ {\bgroup
+ \loadFDFfields{#1}
+ \def\docommando##1{\par##1 = \getFDFfield{##1}\par}%
+ \processcommacommand[\allFDFfields]\docommando
+ \egroup}
+
+%D \macros
+%D {sanitizePDFencoding,sanitizePDFdocencoding}
+%D
+%D We already dealt with the encoding vector. Conversion from
+%D \TEX\ \ASCII\ encoding to the other one, is accomplished by
+%D the next few macros. Wach out: we don't group here.
+
+%D This will be reimplemented using the mapping mechanism.
+
+% \def\enablePDFdocencoding
+% {\reducetocoding[pdfdoc]\simplifycommands}
+
+\def\enablePDFdocencoding
+ {\enablecoding[pdfdoc]%
+ \enablelanguagespecifics[\currentlanguage]% redundant ?
+ \simplifycommands}
+
+\long\def\sanitizePDFdocencoding#1\to#2%
+ {\enablePDFcrlf
+ \enablePDFdocencoding
+ %\honorunexpanded % otherwise problems with "e etc in de
+ \edef#2{#1}}
+
+\bgroup
+\catcode`\^^M=\@@active
+\gdef\enablePDFcrlf%
+ {\def\\{\string\r}%
+ \def\par{\\\\}%
+ \def\endgraf{\\\\}%
+ \catcode`\^^M=\@@active%
+ \let^^M=\\}
+\egroup
+
+\let\sanitizePDFencoding\sanitizePDFdocencoding
+
+%D A bit out of place, but useful:
+
+\newevery\everysetfield\relax
+
+\appendtoksonce
+ \enablePDFdocencoding
+ \enablePDFcrlf
+\to \everysetfield
+
+%D \macros
+%D {doPDFinsertcomment}
+%D
+%D An example its use is the next special, one that deals with
+%D text annotations.
+
+% starting point (keep this)
+%
+% \long\def\doPDFinsertcomment#1#2#3#4#5#6#7#8%
+% {\bgroup % title width height color open symbol collect data
+% \doifelsenothing{#1}
+% {\let\PDFidentifier\empty}
+% {\def\PDFidentifier{/T (#1)}}%
+% \doifelsenothing{#4}
+% {\let\PDFattributes\empty}
+% {\def\PDFattributes{/C \FDFcolor{#4}}}%
+% \doifundefinedelse{PDFsymbol#6}
+% {\let\PDFsymbol\empty}
+% {\def\PDFsymbol{/Name \getvalue{PDFsymbol#6} }}%
+% \sanitizePDFencoding#8\to\PDFdata
+% \setbox\scratchbox\vbox to #3
+% {\vfill
+% \doPDFannotation width #2 height #3 data
+% {/Subtype /Text
+% \ifcase#5 \else/Open true\fi
+% /Contents \ifPDFunicode <\PDFdata> \else(\PDFdata) \fi
+% \PDFsymbol
+% \PDFidentifier
+% \PDFattributes}}%
+% \wd\scratchbox\zeropoint
+% \ht\scratchbox\zeropoint
+% \dp\scratchbox\zeropoint
+% \box\scratchbox
+% \egroup}
+
+\newcounter\nofFDFcomments
+
+\newif\ifPDFpopupcomments \PDFpopupcommentstrue
+
+\def\doPDFflushcomments
+ {\box\PDFsymbolbox}
+
+\long\def\doPDFinsertcomment#1#2#3#4#5#6#7#8% % \@@DriverCommentLayer set otherwise
+ {\bgroup % title width height color open symbol collect data
+ \presetPDFsymbolappearance{#4}{#6}{#2}{#3}\!!zeropoint% sets width/height
+ \doifelsenothing{#1}
+ {\let\PDFidentifier\empty}
+ {\def\PDFidentifier{/T (#1)}}%
+ \sanitizePDFencoding#8\to\PDFdata
+ \setFDFlayer\@@DriverCommentLayer
+ \startPDFsymbolappearance
+ \ifPDFpopupcomments
+ \doglobal\increment\nofFDFcomments
+ \doifobjectreferencefoundelse{FDF}{c:\nofFDFcomments}
+ {\doPDFgetobjectreference{FDF}{c:\nofFDFcomments}\PDFobjectreference
+ \donetrue}
+ \donefalse
+ \ifdone
+ \setbox\scratchbox\hbox
+ {\doPDFannotationobject class FDF name {c::\nofFDFcomments}
+ width #2 height #3 data % text window, size does not work
+ {/Subtype /Popup
+ /Parent \PDFobjectreference}}%
+ \ifcase#7\relax
+ \vbox to \height{\forgetall\vskip#3\box\scratchbox\vss}%
+ \else % incredible trial and error hack
+ % it's quite a mess, the annot width cannot be set, well, it can
+ % but the appearance and text sizes get mixed up
+% \setbox\scratchbox\vbox to \height{\forgetall\vskip#3\box\scratchbox\vss}%
+% \global\setbox\PDFsymbolbox\vbox
+% {\hsize#2%
+% \forgetall
+% \vsmash{\box\PDFsymbolbox}
+% \box\scratchbox}%
+ % this may change when acrobat gets less bugged
+ \setbox\scratchbox\vbox to #3{\forgetall\vss\box\scratchbox}%
+ \wd\scratchbox#2%
+ \global\setbox\PDFsymbolbox\vbox
+ {\startoverlay{\box\PDFsymbolbox}{\box\scratchbox}\stopoverlay}%
+ \fi
+ \fi
+ % generic
+ \doifobjectreferencefoundelse{FDF}{c::\nofFDFcomments}
+ {\doPDFgetobjectreference{FDF}{c::\nofFDFcomments}\PDFobjectreference
+ \donetrue}
+ \donefalse
+ \doPDFannotationobject class FDF name {c:\nofFDFcomments}
+ width {\width} height {\height} data
+ {/Subtype /Text
+ \ifcase#5 \else/Open true\fi
+ % pdftex (efficient)
+ % \ifdone /Popup \PDFobjref\pdflastannot\fi
+ % generic (less efficient)
+ \ifdone /Popup \PDFobjectreference\fi
+ /Contents \ifPDFunicode <\PDFdata> \else(\PDFdata) \fi
+ \PDFidentifier
+ \FDFlayer
+ \PDFsymbol
+ \PDFattributes}%
+ \else
+ \doPDFannotation width #2 height #3 data
+ {/Subtype /Text
+ \ifcase#5 \else/Open true\fi
+ /Contents \ifPDFunicode <\PDFdata> \else(\PDFdata) \fi
+ \FDFlayer
+ \PDFsymbol
+ \PDFidentifier
+ \PDFattributes}%
+ \fi
+ \stopPDFsymbolappearance
+ \egroup}
+
+% symbols with a reasonable default of 18/24 pt
+
+\newbox\PDFsymbolbox
+
+\def\PDFsymbolNew {/Insert}
+\def\PDFsymbolBalloon {/Comment}
+\def\PDFsymbolAddition {/NewParagraph}
+\def\PDFsymbolHelp {/Help}
+\def\PDFsymbolParagraph {/Paragraph}
+\def\PDFsymbolKey {/Key }
+
+\def\PDFsymbolGraph {/Graph}
+\def\PDFsymbolPaperclip {/Paperclip}
+\def\PDFsymbolAttachment{/Attachment}
+\def\PDFsymbolTag {/Tag}
+
+\def\startPDFsymbolappearance
+ {\setbox\scratchbox\vbox to \totalheight \bgroup \vfill}
+
+\def\stopPDFsymbolappearance
+ {\egroup
+ \setbox\scratchbox\hbox{\lower\depth\box\scratchbox}%
+ \wd\scratchbox\width
+ \ht\scratchbox\height
+ \dp\scratchbox\depth
+ \box\scratchbox}
+
+\def\presetPDFsymbolappearance#1#2#3#4#5% symbol color width height depth
+ {\doifelsenothing{#1}
+ {\let\PDFattributes\empty}
+ {\def\PDFattributes{/C \FDFcolor{#1}}}%
+ \scratchdimen#3\edef\width {\the\scratchdimen}%
+ \scratchdimen#4\edef\height{\the\scratchdimen}%
+ \scratchdimen#5\edef\depth {\the\scratchdimen}%
+ \advance\scratchdimen\height\edef\totalheight{\the\scratchdimen}%
+ \doifelsenothing{#2}
+ {\let\PDFsymbol\empty}
+ {\ifundefined{PDFsymbol#2}%
+ \getfromcommacommand[#2][1]\let\PDFsymbolnormalsymbol\commalistelement
+ \getfromcommacommand[#2][2]\let\PDFsymboldownsymbol \commalistelement
+ \doifsymboldefinedelse\PDFsymbolnormalsymbol
+ {\doifsymboldefinedelse\PDFsymboldownsymbol
+ {\dopresetPDFsymbolappearance
+ \PDFsymbolnormalsymbol\PDFsymboldownsymbol}
+ {\dopresetPDFsymbolappearance
+ \PDFsymbolnormalsymbol\PDFsymbolnormalsymbol}}
+ {\doifsymboldefinedelse\PDFsymboldownsymbol
+ {\dopresetPDFsymbolappearance
+ \PDFsymboldownsymbol\PDFsymboldownsymbol}
+ {\let\PDFsymbol\empty}}%
+ \else
+ \def\PDFsymbol{/Name \getvalue{PDFsymbol#2} }%
+ \fi}}
+
+\def\dopresetPDFsymbolappearance#1#2%
+ {\dopresetfieldsymbol{#1}%
+ \dopresetfieldsymbol{#2}%
+ \setbox\scratchbox\hbox{\symbol[#1]}%
+ \edef\width {\the\wd\scratchbox}%
+ \edef\height{\the\ht\scratchbox}%
+ \edef\depth {\the\dp\scratchbox}%
+ \scratchdimen\height \advance\scratchdimen\depth
+ \edef\totalheight{\the\scratchdimen}%
+ \doPDFgetobjectreference{SYM}{#1}\FDFsymbolNappearance
+ \doPDFgetobjectreference{SYM}{#2}\FDFsymbolDappearance
+ \edef\PDFsymbol
+ {/AP <</N \FDFsymbolNappearance /D \FDFsymbolDappearance>>}}
+
+%D Hooked into \CONTEXT, this special supports
+%D
+%D \starttyping
+%D \startcomment
+%D hello beautiful\\world
+%D \stopcomment
+%D
+%D \startcomment[hello]
+%D de \'e\'erste keer
+%D the f\'irst time
+%D \stopcommen
+%D
+%D \startcommentaar[hallo][color=green,width=4cm,height=3cm]
+%D first
+%D
+%D second
+%D \stopcommentaar
+%D \stoptyping
+%D
+%D So, special characters, forced linebreaks using \type{\\}
+%D and \type{\par} are handled in the appropriate way.
+
+%D \macros
+%D {doPDFovalbox}
+%D
+%D For drawing ovals we use quite raw \PDF\ code. The next
+%D implementation does not differ that much from the one
+%D implemented in the \POSTSCRIPT\ driver.
+
+\def\doPDFovalcalc#1#2#3%
+ {\dimen2=#1%
+ \advance\dimen2 #2\relax
+ \PointsToBigPoints{\dimen2}#3}
+
+\def\doPDFovalbox#1#2#3#4#5#6#7% todo: \scratchdimen/\scatchbox
+ {\bgroup
+ \dimen0=#4\divide\dimen0 \plustwo
+ \doPDFovalcalc{0pt}{+\dimen0}\xmin
+ \doPDFovalcalc{#1}{-\dimen0}\xmax
+ \doPDFovalcalc{#2}{-\dimen0}\ymax
+ \doPDFovalcalc{-#3}{+\dimen0}\ymin
+ \advance\dimen0 by #5%
+ \doPDFovalcalc{0pt}{+\dimen0}\xxmin
+ \doPDFovalcalc{#1}{-\dimen0}\xxmax
+ \doPDFovalcalc{#2}{-\dimen0}\yymax
+ \doPDFovalcalc{-#3}{+\dimen0}\yymin
+ \doPDFovalcalc{#4}{\zeropoint}\stroke
+ \doPDFovalcalc{#5}{\zeropoint}\radius
+ \edef\dostroke{#6}%
+ \edef\dofill{#7}%
+ % no \ifcase, else \relax in pdfcode
+ \setbox\scratchbox\hbox
+ {\ifnum\dostroke\dofill>\zerocount
+ \ifPDFstrokecolor\else\ifnum\dostroke=\plusone
+ \writestatus\m!colors{pdf stroke color will fail}\wait
+ \fi\fi
+ \PDFcode
+ {q
+ \stroke\space w
+ \xxmin\space \ymin\space m
+ \xxmax\space \ymin\space l
+ \xmax \space \ymin\space \xmax\space \yymin\space y
+ \xmax \space \yymax\space l
+ \xmax \space \ymax\space \xxmax\space \ymax\space y
+ \xxmin\space \ymax\space l
+ \xmin \space \ymax\space \xmin\space \yymax\space y
+ \xmin \space \yymin\space l
+ \xmin \space \ymin\space \xxmin\space \ymin\space y
+ \ifnum\dostroke=\plusone S \fi
+ \ifnum\dofill =\plusone f \fi
+ Q}%
+ \fi}%
+ \wd\scratchbox#1\ht\scratchbox#2\dp\scratchbox#3\box\scratchbox
+ \egroup}
+
+%D \macros
+%D {doPDFstartgraymode,doPDFstopgraymode,
+%D doPDFstartrgbcolormode,doPDFstartcmykcolormode,doPDFstartgraycolormode,
+%D doPDFstopcolormode}
+%D
+%D In \PDF\ there are two color states, one for strokes and one
+%D for fills. This means that we have to set the color in a
+%D rather redundant looking way. Unfortunately this makes the
+%D \PDF\ file much larger than needed. We can save few bytes
+%D by not setting the stroke color. Due to zip compression we
+%D only save a few percent.
+
+% \newif\ifPDFstrokecolor \PDFstrokecolortrue
+
+\def\doPDFstartgraymode#1%
+% {\PDFdirectcode{#1 g\ifPDFstrokecolor\space#1 G\fi}}
+ {\PDFcode{#1 g\ifPDFstrokecolor\space#1 G\fi}}
+
+\def\doPDFstopgraymode
+% {\PDFdirectcode{0 g\ifPDFstrokecolor\space0 G\fi}}
+ {\PDFcode{0 g\ifPDFstrokecolor\space0 G\fi}}
+
+\def\doPDFstartrgbcolormode#1#2#3%
+% {\PDFdirectcode{#1 #2 #3 rg\ifPDFstrokecolor\space#1 #2 #3 RG\fi}}
+ {\PDFcode{#1 #2 #3 rg\ifPDFstrokecolor\space#1 #2 #3 RG\fi}}
+
+\def\doPDFstartcmykcolormode#1#2#3#4%
+% {\PDFdirectcode{#1 #2 #3 #4 k\ifPDFstrokecolor\space#1 #2 #3 #4 K\fi}}
+ {\PDFcode{#1 #2 #3 #4 k\ifPDFstrokecolor\space#1 #2 #3 #4 K\fi}}
+
+\def\doPDFstartgraycolormode#1%
+% {\PDFdirectcode{#1 g\ifPDFstrokecolor\space#1 G\fi}}
+ {\PDFcode{#1 g\ifPDFstrokecolor\space#1 G\fi}}
+
+\def\doPDFstartspotcolormode#1#2% redefining spotcolors is not possible anyway
+ {\ifundefined{pdf:scs:#2}%
+ \bgroup
+ \getcommacommandsize[#2]%
+ \ifcase\commalistsize\or
+ \setxvalue{pdf:scs:#2}{#2 SCN #2 scn}% \setxvalue{pdf:scs:#2}{#2 SC #2 sc}%
+ \else
+ \let\PDFspotcolorspecs\empty
+ \def\dospotcolorcommand##1{\edef\PDFspotcolorspecs{\PDFspotcolorspecs##1\space}}%
+ \processcommacommand[#2]\dospotcolorcommand
+ \setxvalue{pdf:scs:#2}{\PDFspotcolorspecs SCN \PDFspotcolorspecs scn}%
+ \fi
+ \egroup
+ \fi
+% \PDFdirectcode{/#1 cs /#1 CS \PDFgetspotcolorspec{#2}}}
+ \PDFcode{/#1 cs /#1 CS \PDFgetspotcolorspec{#2}}}
+
+\def\PDFgetspotcolorspec#1%
+ {\executeifdefined{pdf:scs:#1}\empty} % better no default than one with too less args
+
+\def\doPDFstartnonecolormode
+% {\PDFdirectcode{/None CS 1 SC /None cs 1 sc}}
+ {\PDFcode{/None CS 1 SC /None cs 1 sc}}
+
+\def\doPDFstopcolormode
+% {\PDFdirectcode{0 g\ifPDFstrokecolor\space0 G\fi}}
+ {\PDFcode{0 g\ifPDFstrokecolor\space0 G\fi}}
+
+%D We need to register the spot colors and their fallbacks.
+
+% we cannot use /DeviceN since GS <=7.21 breaks on it
+% and Jaws does not handle it at all {[/DeviceN [/All|/None]
+% /Device#2 \PDFobjref\pdflastobj]} so we use separation
+% colors that work and print ok
+
+\def\doPDFregistersomespotcolor#1#2#3#4% implemented in the driver
+ {\writestatus\m!systems{missing spot color definition}\wait}
+
+\def\doPDFregisternonecolor % internal command
+ {\doPDFregistergrayspotcolor{None}{1}%
+ \globallet\doPDFregisternonecolor\relax}
+
+\def\doPDFregisterspotcolorname#1#2% implemented in the driver
+ {}
+
+\definespecial\doregisterspotcolorname{\doPDFregisterspotcolorname}
+
+\def\doPDFregisterrgbspotcolor#1#2#3#4#5#6#7% name noffractions names p's r g b
+ {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{RGB}{0.0 1.0 0.0 1.0 0.0 1.0}%
+ {\ifcase#2\or dup #5 mul exch dup #6 mul exch #7 mul\else#5 #6 #7\fi}}
+
+\def\doPDFregistercmykspotcolor#1#2#3#4#5#6#7#8% name noffractions names p's c m y k
+ {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{CMYK}{0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0}%
+ {\ifcase#2\or dup #5 mul exch dup #6 mul exch dup #7 mul exch #8 mul\else #5 #6 #7 #8\fi}}
+
+\def\doPDFregistergrayspotcolor#1#2#3#4#5% name noffractions names p's s
+ {\doPDFregistersomespotcolor{#1}{#2}{#3}{#4}{Gray}{0.0 1.0}%
+ {\ifcase#2\or pop\else#5\fi}}
+
+%D New and very experimental.
+
+\def\doPDFregistercmykindexcolor#1#2#3#4#5#6#7#8% name noffractions names p's c m y k
+ {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{CMYK}{0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0}%
+ {dup #5 mul exch dup #6 mul exch dup #7 mul exch #8 mul}}
+
+\def\doPDFregisterrgbindexcolor#1#2#3#4#5#6#7% name noffractions names p's r g b
+ {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{RGB}{0.0 1.0 0.0 1.0 0.0 1.0}%
+ {dup #5 mul exch dup #6 mul exch #7 mul}}
+
+\def\doPDFregistergrayindexcolor#1#2#3#4#5% name noffractions names p's s
+ {\doPDFregistersomeindexcolor{#1}{#2}{#3}{#4}{Gray}{0.0 1.0}%
+ {pop}}
+
+% \def\doPDFregisterfigurecolor#1%
+% {\dogetobjectreference
+% {PDF\ifcase\internalspotcolorsize{#1} CS\or CS\else IX\fi}
+% {\internalspotcolorname{#1}}
+% \PDFimagecolorreference}
+
+\let\checkpredefinedcolor\predefineindexcolor % we need an index in order to negate bitmaps
+
+\def\doPDFregisterfigurecolor#1% always an index color
+ {\dogetobjectreference
+ {PDFIX}
+ {\internalspotcolorname{#1}}
+ \PDFimagecolorreference}
+
+%D \macros
+%D {doPDFstartrotation,doPDFstoprotation}
+%D
+%D Rotating some text can be accomplished by setting the first
+%D four elements of the transform matrix. We only support some
+%D fixed angles. The \type{q}'s take care of grouping.
+
+% The original:
+%
+% \def\doPDFstartrotation#1%
+% {\PDFcode{q}%
+% \processaction
+% [#1]
+% [ 90=>\PDFcode{ 0 1 -1 0 0 0 cm},
+% 180=>\PDFcode{-1 0 0 -1 0 0 cm},
+% 270=>\PDFcode{ 0 -1 1 0 0 0 cm},
+% 360=>\PDFcode{ 1 0 0 1 0 0 cm}]}
+%
+% We cannot directly pass an angle, but have to calculate
+% factors (rx and ry). As in the \METAPOST\ to \PDF\
+% converter module we need to compensate the deformation
+% by setting (sx and sy).
+%
+% Optimized but bigger:
+%
+% \def\doPDFstartrotation#1%
+% {\PDFcode{q}%
+% \processaction
+% [#1]
+% [ 0=>\PDFcode{ 1 0 0 1 0 0 cm},
+% 90=>\PDFcode{ 0 1 -1 0 0 0 cm},
+% 180=>\PDFcode{-1 0 0 -1 0 0 cm},
+% 270=>\PDFcode{ 0 -1 1 0 0 0 cm},
+% 360=>\PDFcode{ 1 0 0 1 0 0 cm},
+% #1=>%\calculatecos{#1}% already calculated in core macro
+% %\calculatesin{#1}% already calculated in core macro
+% \edef\cos{\calculatedcos{#1}}%
+% \edef\sin{\calculatedsin{#1}}%
+% \PDFcode{\cos \space % cos
+% \sin \space % sin
+% \negated\sin\space % -sin
+% \cos \space % cos
+% 0 0 cm}]}
+%
+% Since the sine and cosine values are preset and rounded we
+% can use the next alternative without running into inaccuracies.
+
+\def\doPDFstartrotation#1% grouped
+ {\calculatecos{#1}% already calculated in core macro
+ \calculatesin{#1}% already calculated in core macro
+ \edef\cos{\calculatedcos{#1}}%
+ \edef\sin{\calculatedsin{#1}}%
+ \PDFcode{q \cos\space\sin\space\negated\sin\space\cos\space0 0 cm}}
+
+\def\doPDFstoprotation
+ {\PDFcode{Q}}
+
+%D \macros
+%D {doPDFstartscaling,doPDFstopscaling}
+%D
+%D Scaling is rather straightforward:
+
+\def\@@PDFzeroscale{.0001}
+
+\def\doPDFstartscaling#1#2% the test is needed because acrobat is bugged!
+ {\PDFcode{q \ifdim#1\points=\zeropoint\@@PDFzeroscale\else#1\fi\space 0 0
+ \ifdim#2\points=\zeropoint\@@PDFzeroscale\else#2\fi\space 0 0 cm}}
+
+% \def\doPDFstartscaling#1#2% the test is needed because acrobat is bugged!
+% {\PDFcode{q\ifdim#1\points=\zeropoint\else\ifdim#2\points=\zeropoint\else
+% \space#1\space 0 0 #2\space 0 0 cm\fi\fi}}
+
+\def\doPDFstopscaling
+ {\PDFcode{Q}}
+
+%D \macros
+%D {doPDFstartmirroring,doPDFstopmirroring}
+%D
+%D Mirroring is implemented in a similar way:
+
+\def\doPDFstartmirroring
+ {\PDFcode{-1 0 0 1 0 0 cm}}
+
+\def\doPDFstopmirroring
+ {\PDFcode{-1 0 0 1 0 0 cm}}
+
+%D \macros
+%D {doPDFstartnegative,doPDFstopnegative}
+%D
+%D When producing output for an image setter, sometimes negative
+%D output is needed.
+
+\def\doPDFstartnegative
+ {\ifx\initializePDFnegative\undefined\else
+ \initializePDFnegative
+% \PDFdirectcode{/GSnegative gs}%
+ \PDFcode{/GSnegative gs}%
+ \fi}
+
+\def\doPDFstopnegative
+ {\ifx\initializePDFnegative\undefined\else
+ \initializePDFnegative
+% \PDFdirectcode{/GSpositive gs}%
+ \PDFcode{/GSpositive gs}%
+ \fi}
+
+%D \macros
+%D {doPDFstartoverprint,doPDFstopoverprint}
+%D
+%D Some printers like overprint more than knockout.
+
+\def\doPDFstartoverprint
+ {\ifx\initializePDFoverprint\undefined\else
+ \initializePDFoverprint
+% \PDFdirectcode{/GSoverprint gs}%
+ \PDFcode{/GSoverprint gs}%
+ \fi}
+
+\def\doPDFstopoverprint
+ {\ifx\initializePDFoverprint\undefined\else
+ \initializePDFoverprint
+% \PDFdirectcode{/GSknockout gs}%
+ \PDFcode{/GSknockout gs}%
+ \fi}
+
+%D Transparency support (experimental):
+
+\newif\ifPDFtransparencysupported
+
+\def\PDFtransparancydictionary#1#2#3% type fraction extras
+ {<</Type /ExtGState
+ /ca #2 /CA #2
+ /BM /\ifcase#1 Normal\or Normal\or Multiply\or Screen\or
+ Overlay\or SoftLight\or HardLight\or ColorDodge\or
+ ColorBurn\or Darken\or Lighten\or Difference\or
+ Exclusion\else Compatible\fi
+ #3>>}
+
+\def\dodoPDFstarttransparency#1#2%
+ {\presetPDFtransparency{#1}{#2}%
+% \PDFdirectcode{\PDFtransparencyidentifier\space gs }}
+ \PDFcode{\PDFtransparencyidentifier\space gs }}
+
+\def\dodoPDFstoptransparency
+% {\PDFdirectcode{/Tr0 gs }}
+ {\PDFcode{/Tr0 gs }}
+
+\def\doPDFstarttransparency
+ {\ifPDFtransparencysupported
+ \global\let\doPDFstarttransparency\dodoPDFstarttransparency
+ \global\let\doPDFstoptransparency \dodoPDFstoptransparency
+ \initializetransparency
+ \expandafter\doPDFstarttransparency
+ \else
+ \expandafter\gobbletwoarguments
+ \fi}
+
+% \let\doPDFstoptransparency\relax
+%
+% This is tricky: because a text stream is handled before
+% the page body is built, we can run into stops that will
+% match an outer start; however, the stop is needed in case
+% of a text color: [text color text] [other color text] on a
+% first page combined with color splitting will go wrong if
+% we stick to the relaxing method.
+
+\def\doPDFstoptransparency
+ {\ifPDFtransparencysupported
+ \initializetransparency
+ \dodoPDFstoptransparency
+ \fi}
+
+%D These use:
+
+\let\PDFtransparencyresetreference \empty
+\let\PDFtransparencyresetidentifier\empty
+
+\let\PDFtransparencyreference \empty
+\let\PDFtransparencyidentifier\empty
+
+\let\presetPDFtransparency \gobbletwoarguments
+\let\initializetransparency\relax
+
+%D New trickery:
+
+\definespecial\dostartgraphicgroup{\PDFcode{q}}
+\definespecial\dostopgraphicgroup {\PDFcode{Q}}
+
+%D Even newer trickery:
+
+\definespecial\dostartviewerlayer {\doPDFstartlayer}
+\definespecial\dostopviewerlayer {\doPDFstoplayer}
+\definespecial\dodefineviewerlayer{\doPDFdefinelayer}
+
+\let\PDFtextlayers\empty
+\let\PDFpagelayers\empty
+\let\PDFhidelayers\empty
+\let\PDFvidelayers\empty
+
+% \def\doPDFstartlayer#1{\PDFdirectcode{/OC /#1 BDC}}
+% \def\doPDFstoplayer {\PDFdirectcode {EMC}}
+
+\def\doPDFstartlayer#1{\PDFcode{/OC /#1 BDC}}
+\def\doPDFstoplayer {\PDFcode {EMC}}
+
+% resource -> prop -> mc's -> OCG|OCMD (nested)
+
+% ocg:
+
+% /Intent/Design
+
+% ocmd
+
+% /P /AllOn
+
+% kan zelf ocmd bevatten
+
+\def\doPDFdefinelayer#1#2#3#4#5% tag title visible type printable
+% {\driverreferenced \doPDFdictionaryobject class PDLN name #1 data
+ {\doPDFdictionaryobject class PDLN name #1 data
+ {/Type /OCG
+ \ifcase#4 \or
+ /Intent /Design % disable layer hiding by user
+ \fi
+ \ifnum#5=\zerocount
+ /Usage << /Print << /PrintState /OFF >> >> % printable or not
+ \fi
+ /Name (#2)}%
+ \doPDFgetobjectreference{PDLN}{#1}\PDFobjectreference
+ \xdef\PDFtextlayers{\PDFtextlayers\space\PDFobjectreference}%
+ \doifelse{#3}\v!start
+ {\xdef\PDFvidelayers{\PDFvidelayers\space\PDFobjectreference}}%
+ {\xdef\PDFhidelayers{\PDFhidelayers\space\PDFobjectreference}}%
+ %\driverreferenced \doPDFdictionaryobject class PDLD name #1 data
+ \doPDFdictionaryobject class PDLD name #1 data
+ {/Type /OCMD
+ /OCGs [\PDFobjectreference]}%
+ \doPDFgetobjectreference{PDLD}{#1}\PDFobjectreference
+ \xdef\PDFpagelayers{\PDFpagelayers\space /#1 \PDFobjectreference}}
+
+\def\flushPDFtextlayers
+ {\ifx\PDFtextlayers\empty \else
+ \driverreferenced \doPDFarrayobject class PDF name textlayers data {\PDFtextlayers}%
+ \doPDFgetobjectreference{PDF}{textlayers}\!!stringa
+ \ifx\PDFvidelayers\empty
+ \def\!!stringb{[null]}%
+ \else
+ \driverreferenced \doPDFarrayobject class PDF name videlayers data {\PDFvidelayers}%
+ \doPDFgetobjectreference{PDF}{videlayers}\!!stringb
+ \fi
+ \ifx\PDFhidelayers\empty
+ \def\!!stringc{[null]}%
+ \else
+ \driverreferenced \doPDFarrayobject class PDF name hidelayers data {\PDFhidelayers}%
+ \doPDFgetobjectreference{PDF}{hidelayers}\!!stringc
+ \fi
+ \doPDFaddtocatalog
+ {/OCProperties
+ << % display in menu
+ /D << /Order \!!stringa
+ /ON \!!stringb
+ /OFF \!!stringc >>
+ % used properties
+ /OCGs \!!stringa >>}%
+ \globallet\flushPDFtextlayers\relax
+ \fi}
+
+\def\flushPDFpagelayers
+ {\ifx\PDFpagelayers\empty \else
+ \doPDFpageresource{/Properties <<\PDFpagelayers>>}%
+ \fi}
+
+\prependtoksonce \flushPDFpagelayers \to \everyshipout
+\prependtoksonce \flushPDFtextlayers \to \everylastshipout
+
+\def\PDFlayeractionlist{null}
+
+\def\PDFexecutehidelayer {/SetOCGState /State [/OFF \PDFlayeractionlist]}
+\def\PDFexecutevidelayer {/SetOCGState /State [/ON \PDFlayeractionlist]}
+\def\PDFexecutetogglelayer {/SetOCGState /State [/Toggle \PDFlayeractionlist]}
+
+\def\domakeviewerlayerlist#1%
+ {\bgroup
+ \globallet\PDFlayeractionlist\empty
+ \def\docommando##1%
+ {\doPDFgetobjectreference{PDLN}{##1}\PDFobjectreference
+ \xdef\PDFlayeractionlist{\PDFlayeractionlist\space\PDFobjectreference}}%
+ \processcommalist[#1]\docommando
+ \egroup}
+
+%D Something rather pdf dependent:
+
+% #1 => 1=fill 2=stroke 3=strokedfill 4=invisible
+% #2 => linewidth
+% #3 => spacing (beware, one needs to set the hsize as well)
+
+\def\doPDFstartfonteffect#1#2#3%
+ {\ifdim#2>\zeropoint
+ \PointsToBigPoints{#2}\ascii
+% \PDFdirectcode{\ascii\space w}%
+ \PDFcode{\ascii\space w}%
+ \fi
+ \ifdim#3\points=\onepoint\else
+ \scratchdimen#3\points
+% \PDFdirectcode{\withoutpt{\the\scratchdimen}\space Tc}%
+ \PDFcode{\withoutpt{\the\scratchdimen}\space Tc}%
+ \fi
+% \PDFdirectcode{\purenumber#1 Tr}}
+ \PDFcode{\purenumber#1 Tr}}
+
+\def\doPDFstopfonteffect
+% {\PDFdirectcode{1 w 0 Tc 0 Tr}}
+ {\PDFcode{1 w 0 Tc 0 Tr}}
+
+%D And that was all.
+
+\stopspecials
+
+\ifx\fullytransparentcolor\undefined \else
+
+ \def\fullytransparentcolor
+ {\doPDFregisternonecolor
+ \doPDFstartnonecolormode}
+
+ \let\doPDFstarttransparency\gobbletwoarguments
+ \let\doPDFstoptransparency\relax
+
+\fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-ini.tex b/Master/texmf-dist/tex/context/base/spec-ini.tex
new file mode 100644
index 00000000000..c53fbbd5cee
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-ini.tex
@@ -0,0 +1,652 @@
+%D \module
+%D [ file=spec-ini,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% todo: make this one more plain so that i can use it in plain jobs
+% todo: no args, named vars instead
+% maybe also drop multiple drivers and make simplify the default, then simplier defs
+
+\newif\ifsimplifyspecials \simplifyspecialstrue % see later
+
+%D We will forbid loading specials after the first page is
+%D shipped out.
+
+\ifx\realpageno\undefined
+ \countdef\realpageno=0 \realpageno=1
+\fi
+
+%D Specials are \TEX's channel to the outside world. They make
+%D \TEX\ even more platform independant and permit easy
+%D adaption to new developments. One major drawback of specials
+%D is that they have to be supported by printer drivers. We've
+%D tried to overcome this problem by implementing specials as
+%D a sort of drivers themselves.
+
+\writestatus{loading}{Context Special Macros / Initialization}
+
+\unprotect
+
+\startmessages dutch library: specials
+ title: specials
+ 1: -- geladen
+ 2: verdere nesting is niet toegestaan --
+ 3: -- gereset
+ 4: commando -- bestaat niet
+ 5: definitiefile -- wordt geladen
+ 6: nesting is niet toegestaan
+ 7: onbekende driver --
+\stopmessages
+
+\startmessages english library: specials
+ title: specials
+ 1: -- loaded
+ 2: no deeper nesting is permitted --
+ 3: -- is reset
+ 4: command -- does not exist
+ 5: loading definition file --
+ 6: nesting is not permitted
+ 7: unknown driver --
+\stopmessages
+
+\startmessages german library: specials
+ title: spezielles
+ 1: -- geladen
+ 2: keine tiefere Verschachtelung erlaubt --
+ 3: -- ist zurueckgesetzt
+ 4: Befehl -- existiert nicht
+ 5: lade Definitionsdatei --
+ 6: Verschachtelung nicht erlaubt
+ 7: unbekante Driver --
+\stopmessages
+
+\startmessages czech library: specials
+ title: speciality
+ 1: -- nacteno
+ 2: neni dovoleno hlubsi zanoreni --
+ 3: -- je resetovano
+ 4: prikaz -- neexistuje
+ 5: nacita se definicni soubor --
+ 6: zanoreni neni dovoleno
+ 7: neznamy ovladac (driver) --
+\stopmessages
+
+\startmessages italian library: specials
+ title: specialità
+ 1: -- caricato
+ 2: non è permesso un annidamento maggiore --
+ 3: -- reimpostato
+ 4: il comando -- non esiste
+ 5: caricamento del file di definizione --
+ 6: annidamento non permesso
+ 7: driver sconosciuto --
+\stopmessages
+
+\startmessages norwegian library: specials
+ title: specials
+ 1: -- er lest inn
+ 2: dypere 'nesting' er ikke tillatt --
+ 3: -- er tilbakestilt
+ 4: kommando -- eksisterer ikke
+ 5: leser inn definisjonsfil for --
+ 6: 'nesting' er ikke tillatt
+ 7: ukjent driver --
+\stopmessages
+
+\startmessages romanian library: specials
+ title: specials
+ 1: -- incarcat
+ 2: nu este permis un nivel de imbricare mai mare --
+ 3: -- s-a resetat
+ 4: comanda -- nu exista
+ 5: se incarca fisierul de definitii --
+ 6: imbricarea nu este permisa
+ 7: driver necunoscut --
+\stopmessages
+
+\startmessages dutch library: interactions
+ 21: -- code tussengevoegd
+\stopmessages
+
+\startmessages english library: interactions
+ 21: -- code inserted
+\stopmessages
+
+\startmessages german library: interactions
+ 21: -- Code eingefuegt
+\stopmessages
+
+\startmessages czech library: interactions
+ 21: -- kod vlozen
+\stopmessages
+
+\startmessages italian library: interactions
+ 21: codice -- inserito
+\stopmessages
+
+\startmessages norwegian library: interactions
+ 21: -- kode satt inn / tilføyd
+\stopmessages
+
+\startmessages romanian library: interactions
+ 21: -- cod inserat
+\stopmessages
+
+%D \TEX\ produces files in the \DVI\ format. This format is
+%D well defined and stable. In this format one||byte commands
+%D are used which can optionally be followed by length
+%D specifiers and arguments. The \DVI||format incorporates a
+%D channel to the outside world. This channel is activated by
+%D the \TEX\ primitive \type {\special}. The sequence
+%D
+%D \starttyping
+%D \special{Hello here I am.}
+%D \stoptyping
+%D
+%D results in \DVI||codes:
+%D
+%D \starttyping
+%D xxx1 16 Hello here I am.
+%D \stoptyping
+%D
+%D The \type {xxx1} is represented in byte code 239 and the
+%D number of following bytes in a~1, 2, 3 or~4 byte number. So
+%D here we get $1+1+16$ bytes of code.
+%D
+%D Translating these codes is upto the \DVI\ driver. It's
+%D common use to ignore specials that cannot be interpreted, so
+%D the example string should have no consequences for the
+%D output.
+
+%D \macros
+%D {everyresetspecials}
+%D
+%D Now what will this one do? We'll see in a few lines.
+
+\newevery \everyresetspecials \relax
+
+\appendtoksonce
+ \ifx\setjobsuffix\undefined\else\setjobsuffix{dvi}\fi
+\to \everyresetspecials
+
+%D A rather fundamental difference between special and direct
+%D settings is that the latter don't interfere with typesetting
+%D but must be set before the first shipout, while the specials
+%D must be packaged in the shipped out box in such a way that
+%D they don't interfere.
+
+\newif\ifspecialbasedsettings \specialbasedsettingstrue
+
+\appendtoksonce
+ \specialbasedsettingstrue
+\to \everyresetspecials
+
+%D Because there is no standardization in the use of specials,
+%D more than one driver or program can be supported. The
+%D specials are grouped in libraries. Some of these are
+%D general, such as the \type{postscript} library, some are
+%D tuned to a special kind of program, like the \type{pdf}
+%D ones, and some support a specific driver, as we can see in
+%D the \type{yandy} library. A library is build with the
+%D commands:
+%D
+%D \starttyping
+%D \startspecials[name][inheritance]
+%D
+%D \definespecial\none{...}
+%D \definespecial\onlyone#1{...}
+%D \definespecial\alot#1#2#3#4{...}
+%D
+%D \stopspecials
+%D \stoptyping
+%D
+%D Because drivers can have overlap in low level macros, a
+%D mechanism of inheritance is implemented. The libraries
+%D defined as second argument are loaded first.
+%D
+%D Every special has to be predefined first. We do this with
+%D the command:
+%D
+%D \starttyping
+%D \installspecial [\none] [and] [0]
+%D \installspecial [\onlyone] [and] [1]
+%D \installspecial [\alot] [or] [4]
+%D \stoptyping
+%D
+%D This means as much as: there is a special names
+%D \type{\none} which has no arguments and has more than one
+%D appearance. The special \type{\alot} on the other hand has
+%D four arguments and is only defined once. Every instance in
+%D the libraries of a special of category \type{and} is
+%D executed when called upon, but only one special of
+%D category \type{or} can be active. Most of the
+%D \type{postscript}||specials are of category \type{or},
+%D because they tend to interfere with driver specific ones.
+%D The interactive specials of \type{dviwindo} and \type{pdf}
+%D are an example of specials that can be called both.
+%D
+%D A library is defined in a file with the name
+%D \type{spec-...}. We load a library with the command:
+%D
+%D \starttyping
+%D \usespecials [list]
+%D \stoptyping
+%D
+%D where the list can contain one or more file tags, the
+%D \type{...} in the filename. The keyword \type{reset}
+%D resets all loaded specials. This is equivalent to
+%D \type{\resetspecials}.
+
+%D Although a mechanism of nesting can be implemented, we
+%D prefer to use a inheritance mechanism as mentioned. Calls
+%D upon \type{\usespecials} within a \type{\startspecials}
+%D would lead to confusion and errors.
+
+\newif\ifinheritspecials
+
+%D We define some local constants and variables. They look a
+%D bit horrible but we don't want conflicts.
+
+\def\@@specfil@@{@@spcfil@@}
+\def\@@speclst@@{@@spclst@@}
+\def\@@speccat@@{@@spccat@@}
+\def\@@specarg@@{@@spcarg@@}
+\def\@@specexc@@{@@spcexc@@}
+
+% not faster
+%
+% \def\@@specfil@@{@sp@f@}
+% \def\@@speclst@@{@sp@l@}
+% \def\@@speccat@@{@sp@c@}
+% \def\@@specarg@@{@sp@a@}
+% \def\@@specexc@@{@sp@e@}
+
+\let\currentspecial \empty
+\let\currentspecialfile\empty
+\let\preloadedspecials \empty
+
+%D \macros
+%D {preloadspecials}
+%D
+%D The following command can be used to show the loaded list
+%D of specials.
+
+\def\preloadspecials
+ {\doifsomething\preloadedspecials
+ {\showmessage\m!specials1\preloadedspecials}}
+
+%D \macros
+%D {startspecials}
+%D
+%D Every library has a unique name, which is given as the first
+%D argument to \type{\startspecials}. When another library is
+%D defined with the same name, previous specials can be
+%D overruled. The name may differ from the file||tag.
+%D
+%D The optional second argument can consist of a list of
+%D libraries that are to be loaded first.
+
+\def\dostartspecials[#1][#2]%
+ {\doifsomething{#2}
+ {\processcommalist[#2]\dousespecials}%
+ \doifelsenothing{#1}
+ {\let\currentspecial\s!unknown}
+ {\def\currentspecial{#1}}%
+ \unprotect
+ \addtocommalist\currentspecial\preloadedspecials}
+
+\def\startspecials
+ {\localpushmacro\currentspecial
+ \dodoubleempty\dostartspecials}
+
+\def\stopspecials
+ {\localpopmacro\currentspecial
+ \protect}
+
+%D \macros
+%D {installspecial,
+%D resetspecials}
+%D
+%D We have to install specials before we can define and use
+%D them. The command itself is defined as a call to another
+%D command that executes one or more user||defined specials,
+%D depending of it's category: \type{or} versus \type{and}.
+%D
+%D The command \type{\installspecial} takes three
+%D (non||optional) arguments: the name of the command, the
+%D category it belongs to and the number of arguments it
+%D takes.
+%D
+%D With \type{\resetspecials} we can unload the predefined
+%D specials. Special reset actions |<|look in \type{spec-mis}
+%D for an example|>| can be assigned to the token register
+%D \type{\everyresetspecials}.
+
+\let\@@allspecials=\empty
+
+\def\doinstallspecial[#1][#2][#3]%
+ {\letvalue{\@@speclst@@\string#1}\empty
+ \setvalue{\@@speccat@@\string#1}{#2}%
+ \setvalue{\@@specarg@@\string#1}{#3}%
+ \addtocommalist{\string#1}\@@allspecials
+ \def#1{\executespecial#1}}
+
+\def\installspecial
+ {\dotripleargument\doinstallspecial}
+
+\def\resetspecials
+ {\the\everyresetspecials
+ \def\docommando##1%
+ {\letvalue{\@@speclst@@##1}\empty}%
+ \processcommacommand[\@@allspecials]\docommando
+ \ifx\preloadedspecials\empty \else
+ \showmessage\m!specials3\preloadedspecials
+ \let\preloadedspecials\empty
+ \fi}
+
+%D \macros
+%D {definespecial}
+%D
+%D The command \type{\definespecial} take the place of
+%D \type{\def} in the definition of a special. Just to be
+%D sure, we first check if the command is permitted, i.e.
+%D installed. If not, we give a warning and gobble the
+%D illegal command in an quite elegant way.
+%D
+%D If the command can be combined (\type{and}) with others,
+%D we append it to a list, otherwise (\type{or}) it becomes
+%D the only item in the list.
+
+\def\definespecial#1%
+ {\ifx#1\undefined
+ \showmessage\m!specials4{\string#1}%
+ \def\next
+ {\def\@@illegalspecial@@}%
+ \else
+ \def\next
+ {\doifelsevalue{\@@speccat@@\string#1}{or}
+ {\edef\@@newspeclst@@{\currentspecial}}
+ {\edef\@@newspeclst@@{\getvalue{\@@speclst@@\string#1}}%
+ \addtocommalist\currentspecial\@@newspeclst@@}%
+ \setevalue{\@@speclst@@\string#1}{\@@newspeclst@@}%
+ \setvalue{\currentspecial\string#1}}%
+ \fi
+ \next}
+
+%D \macros
+%D {usespecials}
+%D
+%D We use \type{\usespecials} to load a specific library.
+%D This command is only permitted outside the definition part.
+
+\def\dousespecials#1%
+ {\doifelse{#1}\v!reset
+ {\resetspecials}
+ {\doifdefinedelse{\@@specfil@@#1}
+ {\edef\currentspecialfile{\getvalue{\@@specfil@@#1}}}
+ {\edef\currentspecialfile{#1}}%
+ \makeshortfilename[\f!specialprefix\currentspecialfile]%
+ \showmessage\m!specials5\currentspecialfile
+ \startreadingfile
+ \readsysfile\shortfilename\donothing\donothing
+ \stopreadingfile
+ \showmessage\m!specials1\preloadedspecials}}
+
+\def\usespecials[#1]%
+ {\ifnum\realpageno<2
+ \doifelsenothing\currentspecial
+ {\processcommalist[#1]\dousespecials}
+ {\showmessage\m!specials6\empty}%
+ \fi}
+
+%D \macros
+%D {executespecials}
+%D
+%D The command \type{\executespecials} is used to execute the
+%D defined specials. Once a special is installed, the special
+%D itself calls for this command, so it's not needed outside
+%D this module. One can use it if wanted.
+%D
+%D A former implementation grouped the execution. Recent
+%D additions however |<|like the specials that implement object
+%D handling|>| asked for non||grouped execution.
+
+%D \starttyping
+%D \def\executespecials#1#2%
+%D {\def\doonespecial##1%
+%D {\getvalue{##1\string#1}#2\relax}%
+%D \processcommacommand
+%D [\getvalue{\@@speclst@@\string#1}]\doonespecial}
+%D
+%D \def\executespecial#1%
+%D {\expandafter\ifcase\getvalue{\@@specarg@@\string#1}\relax
+%D \def\next%
+%D {\executespecials#1{}}%
+%D \or
+%D \def\next##1%
+%D {\executespecials#1{{##1}}}%
+%D \or
+%D \def\next##1##2%
+%D {\executespecials#1{{##1}{##2}}}%
+%D \or
+%D \def\next##1##2##3%
+%D {\executespecials#1{{##1}{##2}{##3}}}%
+%D \or
+%D \def\next##1##2##3##4%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}}}%
+%D \or
+%D \def\next##1##2##3##4##5%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}}}%
+%D \or
+%D \def\next##1##2##3##4##5##6%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}}}%
+%D \or
+%D \def\next##1##2##3##4##5##6##7%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}}}%
+%D \or
+%D \def\next##1##2##3##4##5##6##7##8%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}}}%
+%D \or
+%D \def\next##1##2##3##4##5##6##7##8##9%
+%D {\executespecials#1{{##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}{##9}}}%
+%D \else
+%D \def\next%
+%D {\message{illegal special: \string#1}}%
+%D \fi
+%D \next}
+%D \stoptyping
+%D
+%D Because specials happen quite often, we will use a bit more
+%D brute force. Keep in mind that we have to collect the
+%D arguments because we want to support more drivers at once.
+%D
+%D I tested this on the next test. Where the previous alternative
+%D took about 32 seconds, the new alternative takes 25 seconds.
+%D
+%D \starttyping
+%D \testfeature{10000}{\setbox0=\hbox{test \color[red]{oeps} test}}
+%D \stoptyping
+
+\def\@@exsp{exsp}
+
+\setvalue{\@@exsp0}{{}}
+\setvalue{\@@exsp1}#1{{{#1}}}
+\setvalue{\@@exsp2}#1#2{{{#1}{#2}}}
+\setvalue{\@@exsp3}#1#2#3{{{#1}{#2}{#3}}}
+\setvalue{\@@exsp4}#1#2#3#4{{{#1}{#2}{#3}{#4}}}
+\setvalue{\@@exsp5}#1#2#3#4#5{{{#1}{#2}{#3}{#4}{#5}}}
+\setvalue{\@@exsp6}#1#2#3#4#5#6{{{#1}{#2}{#3}{#4}{#5}{#6}}}
+\setvalue{\@@exsp7}#1#2#3#4#5#6#7{{{#1}{#2}{#3}{#4}{#5}{#6}{#7}}}
+\setvalue{\@@exsp8}#1#2#3#4#5#6#7#8{{{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}}}
+\setvalue{\@@exsp9}#1#2#3#4#5#6#7#8#9{{{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}
+
+%D \starttyping
+%D \def\executespecials#1%
+%D {\def\doonespecial##1%
+%D {\csname##1\xspecialcommand\endcsname#1\relax}%
+%D \@EA\rawprocesscommalist\@EA
+%D [\csname\@@speclst@@\xspecialcommand\endcsname]\doonespecial}
+%D
+%D \def\executespecial#1%
+%D {\def\xspecialcommand{\string#1}%
+%D \@EA\@EA\@EA\executespecials\csname\@@exsp\csname\@@specarg@@\xspecialcommand\endcsname\endcsname}
+%D \stoptyping
+
+%D Some more speed can be gained by using a dedicated string
+%D processing routine. Now we can bring down the execution
+%D time to 21 seconds, one third less than the original run time.
+
+\def\executespecials#1%
+ {\@EA\let\@EA\speciallist\csname\@@speclst@@\xspecialcommand\endcsname
+ \ifx\speciallist\empty\else
+ \def\doonespecial##1%
+ {\csname##1\xspecialcommand\endcsname#1\relax}%
+ \@EA\dodoonespecial\speciallist,\end,%
+ \fi}
+
+\def\executespecial#1%
+ {\def\xspecialcommand{\string#1}%
+ \@EA\@EA\@EA\executespecials\csname\@@exsp\csname\@@specarg@@\xspecialcommand\endcsname\endcsname}
+
+\def\dodoonespecial#1,%
+ {\ifx\end#1\else
+ \doonespecial{#1}\expandafter\dodoonespecial
+ \fi}
+
+%D This kind of saving only shows up when making interative
+%D documents with lots of color switches. In such documents
+%D tens of thousands of special calls are rather normal.
+%D On a 650 Mhz Pentium, the previous test takes 15 seconds
+%D less (on about 65 seconds). When processing 2000 page
+%D interactive documents this saving can be neglected.
+
+%D In the previous macros, the \type{{{...}}} are needed
+%D because we pass all those arguments to the specials support
+%D macro.
+
+\let\openspecialfile \relax
+\let\closespecialfile \relax
+
+%D \macros
+%D {doifspecialavailableelse}
+%D
+%D For testing purposes (this was first needed when object
+%D support was implemented) we have:
+%D
+%D \starttyping
+%D \doifspecialavailableelse\specialcommand{true}{false}
+%D \stoptyping
+%D
+%D e.g:
+%D
+%D \starttyping
+%D \doifspecialavailableelse\doinsertobject{...}{...}
+%D \stoptyping
+
+\def\doifspecialavailableelse#1#2#3%
+ {\doifelsevaluenothing{\@@speclst@@\string#1}{#3}{#2}}
+
+%D So far for the macros that deal with installing specials.
+%D In the file \type {spec-def} you will find the predefined
+%D specials.
+
+%D Now that we have seen the flexible way (permitting
+%D special chains) we will implement a faster and flat
+%D alternative. But only if flag si set.
+
+\ifsimplifyspecials
+
+ \def\doinstallspecial[#1][#2][#3]%
+ {\appendtoks\forgetspecial#1{#3}\to\everyresetspecials
+ \@EA\chardef\csname\@@speclst@@\string#1\endcsname\zerocount
+ \forgetspecial#1{#3}}
+
+ \def\forgetspecial#1#2%
+ {\ifcase#2\relax
+ \let#1\relax \or
+ \let#1\gobbleoneargument \or
+ \let#1\gobbletwoarguments \or
+ \let#1\gobblethreearguments \or
+ \let#1\gobblefourarguments \or
+ \let#1\gobblefivearguments \or
+ \let#1\gobblesixarguments \or
+ \let#1\gobblesevenarguments \or
+ \let#1\gobbleeightarguments \or
+ \let#1\gobbleninearguments \or
+ \let#1\gobbletenarguments \fi}
+
+ \def\resetspecials
+ {\the\everyresetspecials
+ \let\preloadedspecials\empty}
+
+ \def\definespecial#1%
+ {\@EA\chardef\csname\@@speclst@@\string#1\endcsname=1
+ \def#1}
+
+ \def\doifspecialavailableelse#1%
+ {\ifcase\csname\@@speclst@@\string#1\endcsname
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\fi
+
+%D For quite some time the \CONTEXT\ way of specifying the
+%D output format has been:
+%D
+%D \starttyping
+%D \usespecials[ps,yy,win,pdf]
+%D \stoptyping
+%D
+%D Because at \PRAGMA\ we use \DVIPSONE, this was a suitable
+%D setting, but with \CONTEXT\ going public, the next sequence
+%D is more suitable for \DVIPS\ users:
+%D
+%D \starttyping
+%D \usespecials[reset,ps,tr,pdf]
+%D \stoptyping
+%D
+%D On the other hand, for \PDFTEX\ we needed:
+%D
+%D \starttyping
+%D \usespecials[tpd]
+%D \stoptyping
+%D
+%D To simplify things, I decided to provide a higher level
+%D command.
+%D
+%D \starttyping
+%D \defineoutput[name][specials]
+%D \setupoutput[name,...]
+%D \stoptyping
+%D
+%D In a \type {spec-def} you can find some examples.
+
+\def\defineoutput
+ {\dodoubleargument\dodefineoutput}
+
+\def\dodefineoutput[#1][#2]%
+ {\setvalue{\??ui#1}{#2}}
+
+\def\dosetupoutput#1%
+ {\doifdefinedelse{\??ui#1}
+ {\processcommacommand[\getvalue{\??ui#1}]\dousespecials}
+ {\doifdefinedelse{\@@specfil@@#1}
+ {\dousespecials{#1}}
+ {\showmessage\m!specials7{#1}}}}
+
+\def\setupoutput[#1]%
+ {\ifnum\realpageno<2 % new
+ \resetspecials\processcommacommand[#1]\dosetupoutput
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-mis.tex b/Master/texmf-dist/tex/context/base/spec-mis.tex
new file mode 100644
index 00000000000..0134c8bbc74
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-mis.tex
@@ -0,0 +1,237 @@
+%D \module
+%D [ file=spec-mis,
+%D version=1997.04.01,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Miscellaneous Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Quite some modules in this group are dedicated to supporting
+%D \PDF\ directly by means of \PDFTEX or indirectly by using
+%D Acrobat Distiller. This module implements some common
+%D features.
+
+\writestatus{loading}{Context Special Macros / Miscellaneous Macros}
+
+\unprotect
+
+%D \macros
+%D {URLhash}
+%D
+%D A rather trivial macro:
+
+\expandafter\def\expandafter\URLhash\expandafter{\string#}
+
+%D \macros
+%D {ifusepagedestinations}
+%D
+%D In \PDF\ version 1.0 only page references were supported,
+%D while in \DVIWINDO\ 1.N only named references were accepted.
+%D Therefore \CONTEXT\ supports both methods of referencing. In
+%D \PDF\ version 1.1 named destinations arrived. Lack of
+%D continuous support of version 1.1 viewers for \MSDOS\
+%D therefore sometimes forces us to prefer page references. As
+%D a bonus, they are faster too and have no limitations. How
+%D fortunate we were having both mechanisms available when the
+%D version 3.0 (\PDF\ version 1.2) viewers proved to be too
+%D bugged to support named destinations.
+
+\newif\ifusepagedestinations
+
+%D \macros
+%D {ifhighlighthyperlinks}
+%D
+%D The next switch can be used to make user hyperlinks are
+%D not highlighted when clicked on.
+
+\newif\ifhighlighthyperlinks
+
+%D \macros
+%D {ifgotonewwindow}
+%D
+%D To make the {\em goto previous jump} feature more
+%D convenient when using more than one file, it makes sense
+%D to force the viewer to open a new window for each file
+%D opened.
+
+\newif\ifgotonewwindow
+
+%D \macros
+%D {ifPDFstrokecolor}
+%D
+%D We can reduce the filesize a bit by setting the next switch
+%D to false. The amount of reduction depends on the use of
+%D color, but don't expect more than a few percent. Zip
+%D compression is already rather efficient in itself.
+
+\newif\ifPDFstrokecolor \PDFstrokecolortrue
+
+%D \macros
+%D {dodoinsertfile,dofileinsertion,
+%D definefileinsertion,doiffileinsertionsupported}
+%D
+%D File insertion depend on the driver or \TEX\ variant used.
+%D All driver modules use the same scheme for file insertion,
+%D and therefore have the next macro in common:
+
+% \def\dododoinsertfile[#1][#2,#3][#4,#5]% \next kan weg
+% {\def\fileinsertionclass{do#1insert}%
+% \doifdefinedelse{\fileinsertionclass#3}
+% {\def\next{\getvalue{\fileinsertionclass#3}}}
+% {\doifdefinedelse{\fileinsertionclass#2}
+% {\def\next{\getvalue{\fileinsertionclass#2}}}
+% {\def\next{\gobbleninearguments}}}%
+% \next{#4}{#5}}
+%
+% more modern
+%
+% \def\dododoinsertfile[#1][#2,#3][#4,#5]%
+% {\def\fileinsertionclass{do#1insert}%
+% \doifdefinedelse{\fileinsertionclass#3}
+% {\getvalue{\fileinsertionclass#3}}
+% {\doifdefinedelse{\fileinsertionclass#2}
+% {\getvalue{\fileinsertionclass#2}}
+% {\gobbleninearguments}}%
+% {#4}{#5}}
+%
+% more efficient
+%
+% \def\dododoinsertfile[#1][#2,#3][#4,#5]%
+% {\def\fileinsertionclass{do#1insert}%
+% \executeifdefined{\fileinsertionclass#3}
+% {\executeifdefined{\fileinsertionclass#2}\gobbleninearguments}%
+% {#4}{#5}}
+%
+% cleaner
+
+\def\dododoinsertfile[#1][#2,#3][#4,#5]%
+ {\executeifdefined{do#1insert#3}{\executeifdefined{do#1insert#2}\gobbleninearguments}{#4}{#5}}
+
+\def\dodoinsertfile#1#2#3%
+ {\dododoinsertfile[#1][#2][#3]}
+
+\def\definefileinsertion#1#2%
+ {\addtocommalist{#2}\supportedfileinsertions
+ \setvalue{do#1insert#2}}
+
+\def\dofileinsertion#1#2%
+ {\getvalue{do#1insert#2}}
+
+\newevery \everyresetspecials \relax
+
+\appendtoks \let\supportedfileinsertions\empty \to \everyresetspecials
+
+\let\supportedfileinsertions\empty
+
+\def\doiffileinsertionsupportedelse#1%
+ {\ExpandBothAfter\doifinstringelse{#1}{\c!tex,\c!tmp,\supportedfileinsertions}}
+
+%D This macro is called with 10 arguments, where the first
+%D one specifies the driver, like \type{yy} or \type{tr}. The
+%D second argument is a \type{{type,method}} pair and the
+%D third the filename.
+
+%D Just in case this one is undefined (which can happen if
+%D this module is used outside \CONTEXT):
+
+\ifx\setreferencefilename\undefined
+
+ \def\setreferencefilename#1\to#2{\edef#2{#1}}
+
+\fi
+
+%D When submitting forms, we need to communicate the format.
+
+\chardef\submitoutputformat=0 % 0=unknown 1=HTML 2=FDF 3=XML
+
+\def\setsubmitoutputformat#1%
+ {\doifinsetelse{#1}{FDF,fdf}
+ {\chardef\submitoutputformat2}
+ {\doifinsetelse{#1}{XML,xml}
+ {\chardef\submitoutputformat3}
+ {\chardef\submitoutputformat1}}%
+ \relax}
+
+%D \macros
+%D {escapePSstring}
+%D
+%D \starttyping
+%D \escapePSstring(t\e\1st)))))\to\crap \crap
+%D \stoptyping
+
+% testcase: webschrift met lege regels en unbalanced ()
+
+\bgroup
+
+\catcode`\*=\@@escape
+\catcode`\\=\@@letter
+
+*long*gdef*escapedPSstring#1%
+ {*aftergroup*string
+ *ifnum`#1=12
+ *aftergroup*n%
+ *else*ifnum`#1=13
+ *aftergroup*n%
+ *else*if#1(%
+ *aftergroup*(%
+ *else*if#1)%
+ *aftergroup*)%
+ *else*if#1\%
+ *aftergroup*\%
+ *else
+ *aftergroup#1%
+ *fi*fi*fi*fi*fi}
+
+*egroup
+
+\long\def\escapePSstring#1\to#2%
+ {\convertargument#1\to#2%
+ \bgroup
+ \ifx#2\empty \else
+ \setverbosecscharacters
+ \aftergroup\edef
+ \aftergroup#2%
+ \aftergroup{%
+ \expandafter\handletokens#2\with\escapedPSstring
+ \aftergroup}%
+ \fi
+ \egroup}
+
+% \long\def\preservePSpar#1\to#2%
+% {\bgroup
+% \def\par{\rawcharacter{12}}%
+% \expanded{\egroup\noexpand\def\noexpand#2{#1}}}
+
+\long\def\preservePSpar#1\to#2%
+ {\bgroup
+ \def\par{\rawcharacter{12}\rawcharacter{12}}%
+ \expanded{\egroup\noexpand\def\noexpand#2{#1}}}
+
+%D \macros
+%D {ifPDFunicode}
+%D
+%D We can use this switch to signal that content streams has
+%D to be unicoded.
+
+\newif\ifPDFunicode
+
+%D \macros
+%D {makeMPintoPDFobject, handleMPfshow, setMPPDFobject, getMPPDFobject}
+%D
+%D \METAPOST\ support.
+
+\appendtoks
+ \chardef\makeMPintoPDFobject\zerocount
+ \def\setMPPDFobject#1#2{\def\getMPPDFobject{\box#2}}%
+\to \everyresetspecials
+
+\appendtoks
+ \let\handleMPfshow\dohandleMPfshow
+\to \everyresetspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-pdf.tex b/Master/texmf-dist/tex/context/base/spec-pdf.tex
new file mode 100644
index 00000000000..ae3f582c70e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-pdf.tex
@@ -0,0 +1,484 @@
+%D \module
+%D [ file=spec-pdf,
+%D version=1997.09.20,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Adobe \ACROBAT\ version 2.1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% funny things: mail to yeny: "please geen auto-crlf in special"
+
+\unprotect
+
+%D This driver is build on top of the general \PDF\ macros,
+%D as defined in \type{spec-fdf}, so we inherit that one.
+
+\startspecials[pdf][fdf]
+
+%D \macros
+%D {dosetupinteraction,
+%D doPDFsetopenaction,doPDFsetcloseaction}
+%D
+%D Instead of a prolog, we can put the code in the file
+%D ourselve.
+%D
+%D \starttyping
+%D \definespecial\dosetupinteraction%
+%D {\special
+%D {\@@insertpostscriptretain
+%D /pdfmark where
+%D {pop}
+%D {userdict /pdfmark /cleartomark load put}
+%D ifelse}}
+%D \stoptyping
+%D
+%D We decided to use a prolog file. The following code has to
+%D be put somewhere, e.g.\ in the startup directory of
+%D \DISTILLER. To overcome problems, we always embed the fonts,
+%D but copyrights force us always to make subsets.
+%D
+%D \starttyping
+%D /currentdistillerparams where
+%D { pop } { userdict /currentdistillerparams { 1 dict } put } ifelse
+%D
+%D /setdistillerparams where
+%D { pop } { userdict /setdistillerparams { pop } put } ifelse
+%D
+%D << /AntiAliasColorImages true
+%D /AntiAliasGrayImages true
+%D /AntiAliasMonoImages true
+%D /ConvertCMYKImagesToRGB true
+%D /MaxSubsetPct 99
+%D /EmbedAllFonts true
+%D /SubSetFonts true >> setdistillerparams
+%D \stoptyping
+%D
+%D Beware, this is the PostScript Level 2 way of doing things.
+
+\definespecial\dosetupinteraction
+ {\showmessage\m!interactions{21}{acrobat}}
+
+\definespecial\dosetupopenaction {\doPDFsetupopenaction}
+\definespecial\dosetupcloseaction{\doPDFsetupcloseaction}
+
+%D \macros
+%D {dostartthisislocation}
+%D
+%D We share a lot of macros with the \PDFTEX\ driver. First
+%D the one that handles named destinations.
+
+\definespecial\dostartthisislocation {\doPDFstartthisislocation}
+
+%D \macros
+%D {doresetgotowhereever,
+%D dostartgotolocation,dostartgotorealpage,dostartgotoJS,
+%D dostartexecutecommand,dostartrunprogram,dostartgotoprofile}
+%D
+%D The next specials are responsible for handling references.
+%D Each goto handler can handle multiple references.
+
+\definespecial\doresetgotowhereever {\doPDFresetgotowhereever}
+\definespecial\dostartgotolocation {\doPDFstartgotolocation}
+\definespecial\dostartgotorealpage {\doPDFstartgotorealpage}
+\definespecial\dostartgotoJS {\doPDFstartgotoJS}
+\definespecial\dostartexecutecommand{\doPDFstartexecutecommand}
+\definespecial\dostartrunprogram {\doPDFstartrunprogram}
+\definespecial\dostartgotoprofile {\doPDFstartgotoprofile}
+
+%D \macros
+%D {doflushJSpreamble}
+%D
+%D Thanks to the fact that \DISTILLER\ cannot handle multiple
+%D names entries in the document catalog, for the moment we
+%D have to misuse the page attributes. Beware, the preambles
+%D must be packed.
+
+\definespecial\doflushJSpreamble#1%
+ {\bgroup
+ \ifoneJSpreamble
+ \edef\sanitizedJScode{\getJSpreamble{#1}}%
+ \expandafter\doPSsanitizeJScode\sanitizedJScode\to\sanitizedJScode
+ \special % nota bene, the page starts at 1
+ {\@@insertpostscriptretain
+ [ /_objdef{JS:#1} /type /dict /OBJ pdfmark
+ [ {JS:#1} << /S /JavaScript /JS (\sanitizedJScode) >> /PUT pdfmark
+ [ {Page1} << /AA << /O {JS:#1} >> >> /PUT pdfmark}%
+ \else % temporary message
+ \writestatus{\m!specials}{Acrobat workaround needed: please pack JS preambles}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {dostarthide,dostophide}
+%D
+%D Hopefully some day hiding navigational things when
+%D printing \PDF\ files will be supported properly.
+
+\definespecial\dostarthide%
+ {\special
+ {\@@insertpostscriptretain
+ [ /DataSource (false \iftrue\string{\else}\fi)
+ /PS
+ pdfmark}}
+
+\definespecial\dostophide%
+ {\special
+ {\@@insertpostscriptretain
+ [ /DataSource (\iffalse{\else\string}\fi if)
+ /PS
+ pdfmark}}
+
+%D \macros
+%D {dosetupscreen,
+%D dosetupidentity}
+%D
+%D We can set up the page dimensions, full screen start up
+%D mode and identify the file with:
+
+\definespecial\dosetupscreen {\doPDFsetupscreen \printpaperheight}
+
+\definespecial\dosetupartbox {\doPDFsetupartbox \printpaperheight}
+\definespecial\dosetupcropbox {\doPDFsetupcropbox \printpaperheight}
+\definespecial\dosetupbleedbox{\doPDFsetupbleedbox\printpaperheight}
+\definespecial\dosetuptrimbox {\doPDFsetuptrimbox \printpaperheight}
+
+\definespecial\dosetupidentity{\doPDFsetupidentity}
+
+%D \macros
+%D {dobeginofprofile,doendofprofile}
+%D
+%D Profile support is still far from perfect. This is
+%D especially due to the fact that the specification of
+%D threads are sort of fuzzy and depend on the viewer.
+
+\definespecial\dobeginofprofile#1#2#3#4% label width height page
+ {\bgroup
+ \setPDFdestination{#1}%
+ \doifsomething{\PDFdestination}
+ {\PointsToBigPoints{#2}\width
+ \PointsToBigPoints{#3}\height
+ \special
+ {\@@insertpostscriptretain
+ [ /Title (\PDFdestination)
+ /Rect [0 0 \width\space\height]
+ /ARTICLE
+ pdfmark}}%
+ \egroup}
+
+\definespecial\doendofprofile%
+ {}
+
+%D Apart from movies, graphic inclusion is handled in the
+%D \POSTSCRIPT\ drivers. We just link the movie annotation
+%D handled to the file inclusion system.
+
+\definefileinsertion{yy}{mov}{\doPDFinsertmov}
+\definefileinsertion{tr}{mov}{\doPDFinsertmov}
+
+\definefileinsertion{yy}{avi}{\doPDFinsertmov}
+\definefileinsertion{tr}{avi}{\doPDFinsertmov}
+
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D Sounds look much like movies:
+
+\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack}
+
+%D \macros
+%D {dostartobject,dostopobject,
+%D doinsertobject}
+%D
+%D Objects, those nice reusable pieces of text and graphics,
+%D are handled by three specials:
+
+\definespecial\dostartobject#1#2#3#4#5%
+ {\bgroup
+ \setbox\nextbox=\hbox\bgroup
+ \bgroup
+ \PointsToBigPoints{#3}\width
+ \PointsToBigPoints{#4}\height
+ \PointsToBigPoints{#5}\depth
+ \dosetobjectreference{#1}{#2}{#1::#2}%
+ \special
+ {\@@insertpostscriptretain
+ [ /BBox [0 -\depth\space \width\space \height]
+ /_objdef {#1::#2}
+ /BP
+ pdfmark}%
+ \egroup}
+
+\definespecial\dostopobject%
+ {\special
+ {\@@insertpostscriptretain
+ [ /EP
+ pdfmark}%
+ \egroup
+ \smashbox\nextbox
+ \flushatshipout{\box\nextbox}%
+ \egroup}
+
+\definespecial\doinsertobject#1#2%
+ {\hbox
+ {\dogetobjectreference{#1}{#2}\PDFobjectreference
+ \ifx\PDFobjectreference\empty \else
+ \special
+ {\@@insertpostscriptretain
+ [ {\PDFobjectreference}
+ /SP
+ pdfmark}%
+ \fi}}
+
+%D \macros
+%D {doinsertbookmark}
+%D
+%D Although personally I never use bookmarks, \CONTEXT\ does
+%D support them, due to user requests.
+
+\definespecial\doinsertbookmark {\doPDFinsertbookmark}
+
+%D \macros
+%D {dosetpagetransition}
+%D
+%D Page transitions, again a user wish, is taken care of by:
+
+\definespecial\dosetpagetransition{\doPDFsetpagetransition}
+
+%D \macros
+%D {doinsertcomment, doflushcomments}
+%D
+%D I never needed (and used) one until now, but here is the
+%D text annotation special:
+
+\definespecial\doinsertcomment{\doPDFinsertcomment}
+\definespecial\doflushcomments{\doPDFflushcomments}
+
+%D \macros
+%D {dopresetlinefield,dopresettextfield,
+%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield,
+%D dopresetpushfield,dopresetcheckfield,
+%D dopresetradiofield,dopresetradiorecord}
+%D
+%D There is nothing enervating to the next few mappings.
+
+\definespecial\dopresetlinefield {\doFDFpresetlinefield}
+\definespecial\dopresettextfield {\doFDFpresettextfield}
+\definespecial\dopresetchoicefield{\doFDFpresetchoicefield}
+\definespecial\dopresetpopupfield {\doFDFpresetpopupfield}
+\definespecial\dopresetcombofield {\doFDFpresetcombofield}
+\definespecial\dopresetpushfield {\doFDFpresetpushfield}
+\definespecial\dopresetcheckfield {\doFDFpresetcheckfield}
+\definespecial\dopresetradiofield {\doFDFpresetradiofield}
+\definespecial\dopresetradiorecord{\doFDFpresetradiorecord}
+
+%D \macros
+%D {dodefinefieldset,dogetfieldset,doiffieldset}
+%D
+%D Field sets, used in resetting and submitting, are handled
+%D by:
+
+\definespecial\dodefinefieldset{\doFDFdefinefieldset}
+\definespecial\dogetfieldset {\doFDFgetfieldset}
+\definespecial\doiffieldset {\doFDFiffieldset}
+
+%D \macros
+%D {doregistercalculationset}
+%D
+%D The calculation order is defined using:
+
+\definespecial\doregistercalculationset{\doFDFregistercalculationset}
+
+%D \macros
+%D {doPDFdestination}
+%D
+%D Last we implement the low level pdfmark macros. The
+%D definitions are rather verbose. First the destination
+%D macro.
+
+\def\doPDFdestination name #1%
+ {\special
+ {\@@insertpostscriptretain
+ [ /Dest /#1\space
+ \PDFpageview
+ /DEST
+ pdfmark}}
+
+%D \macros
+%D {doPDFaction,doPDFannotation,doPDFannotationobject,
+%D ifsharePDFactions}
+%D
+%D We have three alternative annotation macros. The first
+%D handles the goto ones, the second takes care of for instance
+%D movies and the third is used in fields.
+
+\newcount\nofPDFsimilar
+
+\newif\ifsharePDFactions \sharePDFactionstrue
+
+\def\dodoPDFaction#1#2#3#4%
+ {\ifcollectreferenceactions
+ \xdef\lastPDFaction{#4}%
+ \else
+ \bgroup
+ % does not work well with distiller 4
+ %\ifsharePDFactions
+ % \ifcase\similarreference\relax
+ % \xdef\lastPDFaction{<<#4>>}%
+ % \or
+ % \global\advance\nofPDFsimilar by 1
+ % \special
+ % {\@@insertpostscriptretain
+ % [ /_objdef {PDF::sim:\the\nofPDFsimilar} /type /dict /OBJ pdfmark
+ % [ {PDF::sim:\the\nofPDFsimilar} <<#4>>\space /PUT pdfmark}%
+ % \xdef\lastPDFaction{{PDF::sim:\the\nofPDFsimilar}}%
+ % \else
+ % % leave \lastPDFaction untouched
+ % \fi
+ %\else
+ \xdef\lastPDFaction{<<#4>>}%
+ %\fi
+ \PointsToBigPoints{#2}\width
+ \PointsToBigPoints{#1}\height
+ \special
+ {\@@insertpostscriptretain
+ [ #1
+ /Action \lastPDFaction\space
+ /Rect [0 0 \width\space \height]
+ /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /Subtype /Link
+ /ANN
+ pdfmark}%
+ \egroup
+ \fi}
+
+\def\doPDFaction width #1 height #2 action #3%
+ {\dodoPDFaction\empty{#1}{#2}{#3}}
+
+\def\doPDFannotation width #1 height #2 data #3%
+ {\bgroup
+ \PointsToBigPoints{#1}\width
+ \PointsToBigPoints{#2}\height
+ \special
+ {\@@insertpostscriptretain
+ [ /Rect [0 0 \width\space \height] #3
+ /ANN
+ pdfmark}%
+ \egroup}
+
+\def\doPDFannotationobject class #1 name #2 width #3 height #4 data #5%
+ {\bgroup
+ \PointsToBigPoints{#3}\width
+ \PointsToBigPoints{#4}\height
+ \special
+ {\@@insertpostscriptretain
+ [ /_objdef {#1::#2}
+ /Rect [0 0 \width\space \height] #5
+ /ANN
+ pdfmark}%
+ \egroup
+ \dosetobjectreference{#1}{#2}{#1::#2}}
+
+\def\doPDFactionobject class #1 name #2 width #3 height #4 action #5%
+ {\dodoPDFaction{/_objdef {#1::#2}}{#3}{#4}{#5}%
+ \dosetobjectreference{#1}{#2}{#1::#2}}
+
+%D \macros
+%D {doPDFdictionaryobject,doPDFarrayobject}
+%D
+%D These two macros are used to build low level objects.
+
+\def\doPDFdictionaryobject class #1 name #2 data #3%
+ {\special
+ {\@@insertpostscriptretain
+ [ /_objdef {#1::#2} /type /dict /OBJ pdfmark
+ [ {#1::#2} << #3 >> /PUT pdfmark}%
+ \dosetobjectreference{#1}{#2}{#1::#2}}
+
+\def\doPDFarrayobject class #1 name #2 data #3%
+ {\special
+ {\@@insertpostscriptretain
+ [ /_objdef {#1::#2} /type /array /OBJ pdfmark
+ [ {#1::#2} 0 [#3] /PUTINTERVAL pdfmark}%
+ \dosetobjectreference{#1}{#2}{#1::#2}}
+
+%D \macros
+%D {doPDFaddtocatalog,doPDFaddtoinfo,
+%D doPDFpageattribute,doPDFpagesattribute}
+%D
+%D Next come our housekeeping macros.
+
+\def\doPDFaddtocatalog#1%
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ {Catalog} << #1 >> /PUT pdfmark}}}
+
+\def\doPDFaddtoinfo#1% unchecked
+ {\special
+ {\@@insertpostscriptretain
+ [ #1 /DOCINFO pdfmark}} % [ {DocInfo} << #1 >> /PUT pdfmark}}
+
+\def\doPDFpageattribute#1%
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ {ThisPage} << #1 >> /PUT pdfmark}}}
+
+\def\doPDFpageresource#1%
+ {\message{[skipping PDF resource]}}
+
+\def\doPDFpagesattribute#1%
+ {\doifsomething{#1}
+ {\special
+ {\@@insertpostscriptretain
+ [ #1 /PAGES pdfmark}}}
+
+\let\doPDFresetpageresources =\relax
+\let\doPDFresetpageattributes=\relax
+
+%D \macros
+%D {doPDFbookmark}
+%D
+%D This is how we force bookmarks entries in the file.
+
+\def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+ {\scratchcounter#4\advance\scratchcounter\minusone
+ \special
+ {\@@insertpostscriptretain
+ [ /Page \the\scratchcounter\space
+ \ifcase#2 \else/Count \ifcase#5-\fi#2 \fi
+ \PDFpageview
+ /Title (#3)
+ /OUT
+ pdfmark}}
+
+%D \macros
+%D {defaultobjectreference,doPDFgetobjectreference}
+%D
+%D The object references are \type{{named}}, that is, no hard
+%D coded numbers are needed (opposite to \PDFTEX).
+
+\def\defaultobjectreference#1#2{#1::#2}
+
+\def\doPDFgetobjectreference#1#2#3%
+ {\dogetobjectreference{#1}{#2}#3%
+ \ifx#3\empty\else\edef#3{{#3}}\fi}
+ %\edef#3{\ifx#3\empty null\else{#3}\fi}}
+
+% \def\doPDFgetobjectpage #1#2#3{..}
+% \def\doPDFgetobjectpagereference#1#2#3{..}
+
+\def\doPDFgetpagereference#1#2%
+ {\edef#2{{page#1}}}
+
+%D Done.
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-ps.tex b/Master/texmf-dist/tex/context/base/spec-ps.tex
new file mode 100644
index 00000000000..077e2288717
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-ps.tex
@@ -0,0 +1,229 @@
+%D \module
+%D [ file=spec-ps,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Adobe PostScript,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,dostopcolormode,
+%D dostartrotation,dostoprotation,
+%D dostartscaling,dostopscaling,
+%D dostartmirroring,dostopmirroring,
+%D dostartnegative,dostopnegative,
+%D dostartoverprint,dostopoverprint,
+%D doselectfirstpaperbin,
+%D doselectsecondpaperbin}
+%D
+%D This implementation is straightforward and can be used as
+%D a default with postscript||drivers. We use \type{ps:} as
+%D opening, because most drivers support this.
+
+\startspecials[postscript]
+
+\def\@@insertpostscriptliteral {ps: }
+\def\@@insertpostscriptretain {" }
+
+\definespecial\dostartgraymode#1%
+ {\special
+ {\@@insertpostscriptliteral
+ #1\space setgray}}
+
+\definespecial\dostopgraymode
+ {\special
+ {\@@insertpostscriptliteral
+ 0 setgray}}
+
+\definespecial\dostartrgbcolormode#1#2#3%
+ {\special
+ {\@@insertpostscriptliteral
+ #1\space #2\space #3\space setrgbcolor}}
+
+\definespecial\dostartcmykcolormode#1#2#3#4%
+ {\special
+ {\@@insertpostscriptliteral
+ #1\space #2\space #3\space #4\space setcmykcolor}}
+
+\definespecial\dostartgraycolormode#1%
+ {\special
+ {\@@insertpostscriptliteral
+ #1\space setgray}}
+
+\definespecial\dostopcolormode
+ {\special
+ {\@@insertpostscriptliteral
+ 0 setgray}}
+
+\definespecial\doselectfirstpaperbin
+ {\special
+ {\@@insertpostscriptliteral
+ statusdict begin 1 setpapertray end}} % checken
+
+\definespecial\doselectsecondpaperbin
+ {\special
+ {\@@insertpostscriptliteral
+ statusdict begin 0 setpapertray end}} % checken
+
+\definespecial\dostartrotation#1% straight from the YandY manual
+ {\special
+ {\@@insertpostscriptliteral
+ gsave currentpoint currentpoint translate
+ \number#1\space\space rotate neg exch neg exch translate}}
+
+\definespecial\dostoprotation
+ {\special
+ {\@@insertpostscriptliteral
+ currentfont currentpoint grestore moveto setfont}}
+
+\definespecial\dostartscaling#1#2% conforming the YandY manual
+ {\special
+ {\@@insertpostscriptliteral
+ gsave currentpoint currentpoint translate
+ #1\space #2\space scale neg exch neg exch translate}}
+
+\definespecial\dostopscaling
+ {\special
+ {\@@insertpostscriptliteral
+ currentfont currentpoint grestore moveto setfont}}
+
+\definespecial\dostartmirroring % some translate and exch stuff from YandY
+ {\special
+ {\@@insertpostscriptliteral
+ gsave currentpoint currentpoint translate
+ [-1 0 0 1 0 0] concat neg exch neg exch translate}}
+
+\definespecial\dostopmirroring
+ {\special
+ {\@@insertpostscriptliteral
+ currentfont currentpoint grestore moveto setfont}}
+
+\definespecial\dostartnegative
+ {\special{\@@insertpostscriptliteral gsave {1 exch sub} settransfer}}
+
+\definespecial\dostopnegative
+ {\special{\@@insertpostscriptliteral grestore}}
+
+\definespecial\dostartoverprint
+ {\special{\@@insertpostscriptliteral true setoverprint}}
+
+\definespecial\dostopoverprint
+ {\special{\@@insertpostscriptliteral false setoverprint}}
+
+\definespecial\dostartgraphicgroup
+ {\special{\@@insertpostscriptliteral gsave}}
+
+\definespecial\dostopgraphicgroup
+ {\special{\@@insertpostscriptliteral grestore}}
+
+%D \macros
+%D {doovalbox}
+%D
+%D This implementation is a mixture of several possible
+%D implementations. We use some constants that may not be
+%D changed. It took some time to find them, but these values
+%D offer quite accurate results. The macro calls for
+%D \type{\forgetall}, which resets indentation, skips and
+%D \type{\everypar}.
+%D
+%D Because a stroke follows the line, we correct for half of
+%D the linewidth. Furthermore we use scaling to overcome some
+%D limitations in the precision ($<1$~sp) and to prevent
+%D rounding errors. We also do some correction for large
+%D values. We let PostScript compare some arguments with
+%D \type{a b eq {action} fi}.
+%D
+%D The path is based on a macro of J.~Hefferon cs. We also
+%D tried the D.~Salomon implementation, but this did not work
+%D well, just like some other alternatives.
+
+% #1 = width #2 = height #3 = depth
+% #4 = linewidth #5 = radius
+% #5 = stroke (ja,nee) #7 = fill (ja,nee)
+
+\def\@@insertpostscriptliteral {ps: }
+\def\@@insertpostscriptretain {postscript } % unknown
+
+\def\dosomeovalcalc#1#2#3%
+ {\dimen2=#1%
+ \advance\dimen2 #2%
+ \PointsToBigPoints{\dimen2}#3}
+
+\def\dosomeovalbox#1#2#3#4#5#6#7%
+ {\bgroup
+ \dimen0=#4\divide\dimen0 2
+ \dosomeovalcalc{0pt}{+\dimen0}\xmin
+ \dosomeovalcalc{#1}{-\dimen0}\xmax
+ \dosomeovalcalc{#2}{-\dimen0}\ymax
+ \dosomeovalcalc{-#3}{+\dimen0}\ymin
+ \dosomeovalcalc{#4}{0pt}\stroke
+ \dosomeovalcalc{#5}{0pt}\radius
+ \edef\dostroke{#6}%
+ \edef\dofill{#7}%
+ \setbox\nextbox\hbox
+ {\ifnum\dostroke\dofill>0
+ \special
+ {\@@insertpostscriptretain
+ gsave
+ newpath
+ \xmin\space \radius\space add \ymin\space moveto
+ \xmax\space \ymin\space \xmax\space \ymax\space \radius\space arcto
+ \xmax\space \ymax\space \xmin\space \ymax\space \radius\space arcto
+ \xmin\space \ymax\space \xmin\space \ymin\space \radius\space arcto
+ \xmin\space \ymin\space \xmax\space \ymin\space \radius\space arcto
+ \xmin\space \radius\space add \ymin\space moveto
+ 16 {pop} repeat
+ closepath
+ (\dostroke) (1) eq
+ {\stroke\space 0 ne
+ {gsave
+ \stroke\space setlinewidth
+ stroke
+ grestore} if} if
+ (\dofill) (1) eq
+ {fill} if
+ grestore}%
+ \fi}%
+ \nextboxwd#1%
+ \nextboxht#2%
+ \nextboxdp#3%
+ \flushnextbox
+ \egroup}
+
+%D The indirect call permits a (rather) dirty hack, needed
+%D for \DVIPS\ support.
+
+\definespecial\doovalbox%
+ {\dosomeovalbox}
+
+%D \macros
+%D {dostartclipping,dostopclipping}
+%D
+%D These two specials are not yet working as expected.
+
+\definespecial\dostartclipping#1#2#3%
+ {\PointsToBigPoints{#2}\width
+ \PointsToBigPoints{#3}\height
+ \grabMPclippath{#1}{0}{\width}{\height}
+ {0 0 moveto \width 0 lineto \width \height lineto 0 \height\space lineto}%
+ \special
+ {\@@insertpostscriptliteral\space
+ save newpath \MPclippath\space closepath clip}}
+
+\definespecial\dostopclipping
+ {\special{\@@insertpostscriptliteral\space restore}}
+
+%D Some MP stuff:
+
+\definespecial\doinsertMPfile#1%
+ {\doiffileelse{./#1}{\includeMPasEPS{./#1}}{\message{[MP #1]}}}
+
+\stopspecials
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-tpd.tex b/Master/texmf-dist/tex/context/base/spec-tpd.tex
new file mode 100644
index 00000000000..56fd9342cb6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-tpd.tex
@@ -0,0 +1,1467 @@
+%D \module
+%D [ file=spec-tpd,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=\PDFTEX,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% once we can be sure that the latest versions of pdftex are
+% available we can use:
+%
+% \pdfobj reserveobjnum \edef\one{\the\pdflastobj}
+% \pdfobj reserveobjnum \edef\two{\the\pdflastobj}
+%
+% \pdfobj useobjnum \one {x}
+% \pdfobj useobjnum \two {x}
+%
+% we then can rewrite part of spec-fdf because the other drivers
+% already support symbolic references
+
+% layers and links don't work while the spec says they should
+
+% method = auto
+%
+% \definefileinsertion{tpd}{auto}#1#2#3#4#5#6#7#8#9%
+% {\executesystemcommand{t:/ruby/pstopdf.rb #2}%
+% \dodoinsertfile{tpd}{pdf}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}
+
+% \let\PDFdestvoffset\zeropoint
+% \newbox\pdfdestbox
+%
+% \def\doPDFdestination name #1%
+% {\ifdim\PDFdestvoffset=\zeropoint\relax
+% \pdfdest name {#1} \PDFpageviewkey
+% \else
+% \setbox\pdfdestbox\hbox to \zeropoint
+% {\raise\PDFdestvoffset\hbox{\pdfdest name {#1} \PDFpageviewkey}}%
+% \ht\pdfdestbox\zeropoint
+% \box\pdfdestbox
+% \fi}
+%
+% \def\PDFdestvoffset{2\lineheight} % {1.5\strutht}
+
+%D \macros
+%D {jobsuffix}
+%D
+%D Being one of the first typographical systems able to support
+%D advances \PDF\ support, \TEX\ is also one of the first
+%D systems to produce high quality \PDF\ code directly. Thanks
+%D to Han The Thanh c.s. the \TEX\ community can leap forward
+%D once again.
+%D
+%D One important characteristic of \PDFTEX\ is that is can
+%D produce standard \DVI\ code as well as \PDF\ code. This
+%D enables us to use one format file to support both output
+%D formats.
+
+%D All modules in this group use specials to tell drivers what
+%D non||\TEX\ actions to take. Because from the \TEX\ point of
+%D view, there is no difference between \DVI\ and \PDF, we
+%D therefore only have to bend the \DVI\ driver support into
+%D \PDF\ support. Technically spoken, specials no longer serve
+%D a purpose, except from ending up as comment in the \PDF\
+%D file.
+%D
+%D Before we continue we need to make sure if indeed those
+%D \PDFTEX\ primitives are permitted. If no primitives are
+%D available, we just stop reading any further.
+
+\unprotect
+
+\ifx\pdftexversion\undefined
+ \writestatus{\m!systems}{you should use pdfTeX binaries}\wait
+ \protect\expandafter\endinput
+\fi
+
+\ifnum\pdftexversion<13
+ \writestatus{\m!systems}{your pdfTeX version is much too old}\wait
+ \protect\expandafter\endinput
+\fi
+
+\ifnum\pdftexversion<14
+ \writestatus{\m!systems}{please update your pdfTeX binaries}
+\fi
+
+\ifnum\pdftexversion>19
+ \pdfhorigin=1 true in
+ \pdfvorigin=1 true in
+\fi
+
+%D We default to 300 dots per inch image resolution.
+
+\ifx\pdfimageresolution\undefined
+ \newcount\pdfimageresolution
+\fi
+
+\pdfimageresolution=300
+
+%D Another downward compatible hack:
+
+\ifx\pdflastximagepages\undefined
+ \newcount\pdflastximagepages \pdflastximagepages=1
+\fi
+
+%D And:
+
+\ifx\pdfpageresources\undefined
+ \newtoks\pdfpageresources
+\fi
+
+%D In order to get high quality \METAPOST\ inclusion, we set
+%D the number of digits to~5 (prevents rounding errors).
+
+\ifx\pdfdecimaldigits\undefined
+ \newcount\pdfdecimaldigits
+\fi
+
+\pdfdecimaldigits=10
+
+\ifx\pdfinclusionerrorlevel\undefined
+ \ifx\pdfoptionpdfinclusionerrorlevel\undefined
+ \newcount\pdfinclusionerrorlevel
+ \else
+ \let\pdfinclusionerrorlevel\pdfoptionpdfinclusionerrorlevel
+ \fi
+\fi
+
+\pdfinclusionerrorlevel=0
+
+\ifx\pdfminorversion\undefined
+ \ifx\pdfoptionpdfminorversion\undefined
+ \newcount\pdfminorversion
+ \else
+ \let\pdfminorversion\pdfoptionpdfminorversion
+ \fi
+\fi
+
+\pdfminorversion=5
+
+\def\PDFversion{1.\number\pdfminorversion}
+
+% %D Why are the Acrobat viewers so buggy? To prevent font cache
+% %D mismatches, we say:
+%
+% \ifx\pdfuniqueresname\undefined \else
+% \pdfuniqueresname=1
+% \fi
+
+%D Once we are sure that we're indeed supporting \PDFTEX, we
+%D force \PDF\ output at the highest compression. For debugging
+%D purposes one can set the compresslevel to~0. We also have to
+%D make sure no other specials are supported, else \PDFTEX\
+%D will keep on telling us that we're wrong. We also load the
+%D general \PDF\ macros that are shared between this driver and
+%D the \ACROBAT\ one.
+
+\startspecials[tpd][reset,fdf]
+
+%D This means that by saying
+%D
+%D \starttyping
+%D \usespecials[tpd]
+%D \stoptyping
+%D
+%D we get ourselves full \PDF\ output.
+
+%D For some internal testing we need to know the output
+%D suffix.
+
+\setjobsuffix{pdf}
+
+%D We don't use specials here, which means that we must flush
+%D settings before the page is shipped out.
+
+\specialbasedsettingsfalse
+
+%D Some more internal settings.
+
+\appendtoksonce
+ \pdfoutput\zerocount
+\to \everyresetspecials
+
+\pdfoutput =1 % we reset that one with \everyresetspecials
+\pdfcompresslevel=9 % apart from debugging, no reason for value 0
+
+%D Just in case we mimmick specials, we have to make sure no
+%D default specials end up in the process.
+
+\let\defaultspecial=\gobbleoneargument
+
+\appendtoksonce
+ \let\defaultspecial\normalspecial
+\to \everyresetspecials
+
+\let\PDFcode \pdfliteral
+\def\PDFcontentcode{\pdfliteral}
+\def\PDFdirectcode {\pdfliteral direct}
+
+%D \macros
+%D {everyPDFximage}
+%D
+%D This token register is flushed before an ximage is loaded.
+
+\newevery \everyPDFximage \relax
+\let \everyPDFxform \everyPDFximage
+
+%D \macros
+%D {dosetuppaper}
+%D
+%D If we don't set the paper size, \PDFTEX\ will certainly do
+%D it in a way we don't want, therefore we need:
+
+\definespecial\dosetuppaper#1#2#3%
+ {\global\pdfpagewidth #2\relax
+ \global\pdfpageheight#3\relax}
+
+%D \macros
+%D {doloadmapfile,doloadmapline,doresetmapfilelist}
+
+\ifx\pdfmapfile\undefined \let\pdfmapfile\gobbletwoarguments \fi
+\ifx\pdfmapline\undefined \let\pdfmapline\gobbletwoarguments \fi
+
+\definespecial\doresetmapfilelist{\pdfmapfile{original-empty.map}}
+
+\ifnum\pdftexversion<120
+
+ \definespecial\doloadmapfile #1#2{\pdfmapfile{+#2}}
+ \definespecial\doloadmapline #1#2{}
+
+\else
+
+ \definespecial\doloadmapfile #1#2{\pdfmapfile{#1#2}}
+ \definespecial\doloadmapline #1#2{\pdfmapline{#1#2}}
+
+\fi
+
+%D nasty but needed
+
+\appendtoksonce \loadallfontmapfiles \to \everyPDFximage
+
+%D \macros
+%D {doinsertfile,dogetnofinsertpages}
+%D
+%D Graphics are not part of \TEX\ and therefore not part of the
+%D \DVI\ standard. \PDF\ on the other hand has several graphic
+%D primitives. During the multi||step process \TEX\
+%D $\rightarrow$ \DVI\ $\rightarrow$ \POSTSCRIPT\ $\rightarrow$
+%D \PDF\ one can insert graphics using specials. In \PDFTEX\
+%D however there is only one step! This means that \PDFTEX\
+%D itself has to do the inclusion.
+%D
+%D At the moment \PDFTEX\ supports inclusion of bitmap \PNG\
+%D graphics as well as not too complicated \PDF\ code. Using
+%D this last option, we are able to include both \METAPOST\ and
+%D \PDF\ output produced by \GHOSTSCRIPT.
+%D
+%D We fall back on the generic \CONTEXT\ module supp-pdf to
+%D accomplish \PDF\ inclusion. The methods implemented there
+%D are hooked into both the figure placement mechanisms of
+%D \CONTEXT\ and the specials inclusion mechanism.
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \dodoinsertfile{tpd}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%
+ \egroup}
+
+%D The number of pages in (for instance an \PDF) insert
+%D file, can be asked for using:
+
+\definespecial\dogetnofinsertpages#1%
+ {\xdef\nofinsertpages{1}% global
+ \doifvalidpdfimagefileelse{#1}%
+ {\pdfximage{#1}\xdef\nofinsertpages{\the\pdflastximagepages}}
+ {}}
+
+%D Currently we support \type{pdf} for \PDF\ files, \type{mps}
+%D for \METAPOST\ graphics, \type{png} and \type{jpg} for
+%D bitmap graphics.
+
+\definefileinsertion{tpd}{mps}#1#2#3#4#5#6#7#8#9%
+ {\hbox
+ {%\convertMPcolors{#1}% plugged in supp-mpe
+ \scratchdimen#3\points \PointsToReal{.01\scratchdimen}\xscale
+ \scratchdimen#4\points \PointsToReal{.01\scratchdimen}\yscale
+ \convertMPtoPDF{#1}\xscale\yscale
+ \global\let\PDFimagereference\empty}}
+
+%D The old, \TEX\ base \PDF\ insertion macro:
+%D
+%D \starttyping
+%D \def\dotpdinsertpdf#1#2#3#4#5#6#7#8#9%
+%D {\beforesplitstring#1\at.\to\filename
+%D \scratchdimen=#3pt \PointsToReal{.01\scratchdimen}\xscale
+%D \scratchdimen=#4pt \PointsToReal{.01\scratchdimen}\yscale
+%D \convertPDFtoPDF{\filename.pdf}\xscale\yscale{#5}{#6}{#7}{#8}}
+%D \stoptyping
+%D
+%D superseded by the next macros.
+
+\definefileinsertion{tpd}{pdf}{\handlepdfimage}
+\definefileinsertion{tpd}{png}{\handlepdfimage}
+\definefileinsertion{tpd}{jpg}{\handlepdfimage}
+%definefileinsertion{tpd}{tif}{\handlepdfimage} % unstable
+
+%D Experimental:
+
+% \definefileinsertion{tpd}{svg}{\doPDFinsertsvg}
+% \definefileinsertion{tpd}{svgz}{\doPDFinsertsvg}
+
+\def\doPDFinsertsvg#1#2#3#4#5#6#7#8#9%
+ {\externalfigureplaceholder{#1}{#7}{#8}}
+
+%D The main file insertion macro is as follows. Because
+%D \PDFTEX\ does not support arbitrary suffixes, we double
+%D check on a user supplied filename, because \PDFTEX\ chokes
+%D on unknown suffixes.
+
+\def\doifvalidpdfimagefileelse#1% todo: greedy split
+ {\doiffileelse{#1}
+ {\edef\filesuffix{#1}%
+ \doloop
+ {\@EA\aftersplitstring\filesuffix\at.\to\temp
+ \ifx\temp\empty
+ \exitloop
+ \else
+ \let\filesuffix\temp
+ % a temporary hack
+ \doif\filesuffix{PDF}{\pdfimageresolution72}%
+ \doif\filesuffix{pdf}{\pdfimageresolution72}%
+ % because pdfTeX scales back
+ \fi}}
+ {\let\filesuffix\s!unknown}%
+ \doiffileinsertionsupportedelse\filesuffix}
+
+\ifx\pdflastximagepages\undefined \chardef\pdflastximagepages=1 \fi
+
+\ifnum\pdftexversion>13
+
+\def\checkpdfimagepagenumber#1%
+ {\let\pdfimagepagenumber\empty
+ \getfromcommacommand[#1][1]%
+ \doifnumberelse\commalistelement
+ {\ifcase\commalistelement\else
+ \edef\pdfimagepagenumber{page \commalistelement}%
+ %\message{(pdf image \pdfimagepagenumber)}%
+ \fi}
+ {}}
+
+\def\handlepdfimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \the\everyPDFximage
+ \doifvalidpdfimagefileelse{#1}
+ {\checkpdfimagepagenumber{#9}%
+ \immediate\pdfximage
+ \ifdim#7>\zeropoint \!!width #7\fi
+ \ifdim#8>\zeropoint \!!height #8\fi
+ \pdfimagepagenumber
+\@@DriverImageBox
+ {#1}%
+ \xdef\PDFimagereference{\the\pdflastximage}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
+ \pdfrefximage\pdflastximage}
+ {\framed[\c!width=#7,\c!height=#8]{#1}}%
+ \egroup}
+
+\else
+
+\def\handlepdfimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \doifvalidpdfimagefileelse{#1}
+ {\pdfimage
+ \ifdim#7>\zeropoint \!!width #7\fi
+ \ifdim#8>\zeropoint \!!height #8\fi
+ {#1}}%
+ {\framed[\c!width=#7,\c!height=#8]{#1}}%
+ \egroup}
+
+\fi
+
+%D As we will see now, \PDFTEX\ not only directly supports
+%D \type{mps}, \type{png}, \type{pdf}, \type{jpg} but also
+%D \type{mov}. In \CONTEXT\ we support movie inserts in a way
+%D similar to figure inclusion. The next macro calls the
+%D general \PDF\ one.
+
+\definefileinsertion{tpd}{mov}{\doPDFinsertmov}
+\definefileinsertion{tpd}{avi}{\doPDFinsertmov}
+
+%D \macros
+%D {doinsertsoundtrack}
+%D
+%D We use numbers instead of labels to keep track of sounds.
+
+\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack}
+
+%D \macros
+%D {measureTPDfiguresizetrue}
+%D
+%D Because \PDFTEX\ measures the figure itself, we can use
+%D this feature to bypass the normal prescan. Watch the
+%D double check on the suffix. Else \PDFTEX\ would choke.
+
+\newif\ifmeasureTPDfiguresize \measureTPDfiguresizetrue
+
+%D For the moment we don't test for alternatives that
+%D themselves have alternatives, especially cylcic
+%D dependencies.
+
+% some day we will do a proper check on bitmap depth,
+%
+% \pdfobj reserveobjnum\relax
+% \pdfximage colorspace \pdflastobj {some file}
+% ... \pdflastximagecolordepth ...
+% \immediate\pdfobj useobjnum \pdflastobj {some spec}
+
+\ifx\@@DriverImageBox\undefined \def\@@DriverImageBox{artbox} \fi
+
+% \def\doguessTPDimagesize#1% does not work as expected
+% {\ifx\@@DriverImageBox\empty
+% \global\setbox\foundexternalfigure\hbox{\pdfximage \pdfimagepagenumber ArtBox {#1}\pdfrefximage\pdflastximage}%
+% \ifdim\ht\foundexternalfigure>\zeropoint
+% \def\@@DriverImageBox{ArtBox}%
+% \else
+% \global\setbox\foundexternalfigure\hbox{\pdfximage \pdfimagepagenumber TrimBox {#1}\pdfrefximage\pdflastximage}%
+% \ifdim\ht\foundexternalfigure>\zeropoint
+% \def\@@DriverImageBox{TrimBox}%
+% \else
+% \global\setbox\foundexternalfigure\hbox{\pdfximage \pdfimagepagenumber CropBox {#1}\pdfrefximage\pdflastximage}%
+% \ifdim\ht\foundexternalfigure>\zeropoint
+% \def\@@DriverImageBox{CropBox}%
+% \fi
+% \fi
+% \fi
+% \fi
+% \@@DriverImageBox}
+
+\ifnum\pdftexversion>13
+
+\def\checkpdfimageattributes
+ {\ifx\PDFfigurereference\empty
+ \global\let\pdfimageattributes\empty
+ \else
+ \immediate\pdfobj
+ {[ << /Image \PDFobjref\PDFfigurereference
+ /DefaultForPrinting true >> ]}%
+ \xdef\pdfimageattributes
+ {attr {/Alternates \PDFobjref\pdflastobj}}%
+ \fi}
+
+\global\let\PDFimagecolorreference\empty
+
+\def\checkpdfimagecolorspecs
+ {\ifx\pdflastximagecolordepth \undefined
+ \global\let\pdfimagecolorspecs\empty
+ \else\ifx\PDFimagecolorreference\empty
+ \global\let\pdfimagecolorspecs\empty
+ \else
+ \xdef\pdfimagecolorspecs{colorspace \PDFimagecolorreference\space}%
+ \fi\fi
+ \global\let\PDFimagecolorreference\empty}
+
+\def\dogetTPDfiguresize#1#2#3#4#5#6#7%
+ {\ifmeasureTPDfiguresize
+ #4\zeropoint
+ #5\zeropoint
+ \doifvalidpdfimagefileelse{#2}
+ {\ifvoid\foundexternalfigure
+ \donetrue
+ \else\ifx\PDFfigurereference\empty
+ \donetrue
+ \else
+ \doifinstringelse\filesuffix{\c!png,\c!jpg}\donetrue\donefalse
+ \fi\fi}
+ {\donefalse}%
+ \ifdone
+ \the\everyPDFximage
+ \checkpdfimagepagenumber{#3}%
+ \checkpdfimageattributes
+ \checkpdfimagecolorspecs
+ \global\setbox\foundexternalfigure\hbox
+ {\immediate\pdfximage
+ \pdfimageattributes
+ \pdfimagecolorspecs
+ \pdfimagepagenumber
+ \@@DriverImageBox
+ {#2}%
+ \xdef\PDFimagereference{\the\pdflastximage}%
+ \xdef\nofinsertpages{\the\pdflastximagepages}%
+ \pdfrefximage\pdflastximage}%
+ #6\wd\foundexternalfigure
+ #7\ht\foundexternalfigure
+ \global\let\PDFfigurereference\empty
+ \global\let\PDFimageattributes\empty
+ \else
+ #6\zeropoint
+ #7\zeropoint
+ \fi
+ \else
+ #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize...
+ \fi}
+
+\else
+
+ \def\dogetTPDfiguresize#1#2#3#4#5#6#7%
+ {\ifmeasureTPDfiguresize
+ #4\zeropoint
+ #5\zeropoint
+ \doifvalidpdfimagefileelse{#2}
+ {\global\setbox\foundexternalfigure\vbox{\pdfimage{#2}}%
+ #6\wd\foundexternalfigure
+ #7\ht\foundexternalfigure}
+ {#6\zeropoint
+ #7\zeropoint}%
+ \else
+ #1{#2}{#3}{#4}{#5}{#6}{#7}% \normaldogetfiguresize...
+ \fi}
+
+\fi
+
+\let\normaldogetfiguresizepdf=\dogetfiguresizepdf
+\let\normaldogetfiguresizepng=\dogetfiguresizepng
+\let\normaldogetfiguresizetif=\dogetfiguresizetif
+\let\normaldogetfiguresizejpg=\dogetfiguresizejpg
+
+\def\dogetfiguresizepdf{\dogetTPDfiguresize\normaldogetfiguresizepdf}
+\def\dogetfiguresizepng{\dogetTPDfiguresize\normaldogetfiguresizepng}
+\def\dogetfiguresizetif{\dogetTPDfiguresize\normaldogetfiguresizetif}
+\def\dogetfiguresizejpg{\dogetTPDfiguresize\normaldogetfiguresizejpg}
+
+\appendtoksonce
+ \let\dogetfiguresizepdf\normaldogetfiguresizepdf
+ \let\dogetfiguresizepng\normaldogetfiguresizepng
+ \let\dogetfiguresizetif\normaldogetfiguresizetif
+ \let\dogetfiguresizejpg\normaldogetfiguresizejpg
+\to \everyresetspecials
+
+%D \macros
+%D {doregisterfigure}
+%D
+%D Here is the fuzzy, very special dependant figure
+%D registration special. We need to refer to the innermost
+%D object (ximage).
+
+\ifnum\pdftexversion>13
+
+ \definespecial\doregisterfigure#1#2%
+ {\doifundefined{IM::#1::#2}
+ {\setxvalue{IM::#1::#2}{\the\pdflastximage}}%
+ \xdef\PDFfigurereference{\getvalue{IM::#1::#2}}}
+
+\fi
+
+%D \macros
+%D {doovalbox}
+%D
+%D Drawing frames with round corners is inherited from the
+%D main module.
+
+\definespecial\doovalbox {\doPDFovalbox}
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,
+%D dostopcolormode,
+%D dostartrotation,dostoprotation,
+%D dostartscaling,dostopscaling,
+%D dostartmirroring,dostopmirroring,
+%D dostartnegative,dostopnegative,
+%D dostartoverprint,dostopoverprint}
+%D
+%D These are implemented in the main \PDF\ module.
+
+\definespecial\dostartgraymode {\doPDFstartgraymode}
+\definespecial\dostopgraymode {\doPDFstopgraymode}
+\definespecial\dostartrgbcolormode {\doPDFstartrgbcolormode}
+\definespecial\dostartcmykcolormode{\doPDFstartcmykcolormode}
+\definespecial\dostartgraycolormode{\doPDFstartgraycolormode}
+\definespecial\dostartspotcolormode{\doPDFstartspotcolormode}
+\definespecial\dostopcolormode {\doPDFstopcolormode}
+\definespecial\dostartrotation {\doPDFstartrotation}
+\definespecial\dostoprotation {\doPDFstoprotation}
+\definespecial\dostartscaling {\doPDFstartscaling}
+\definespecial\dostopscaling {\doPDFstopscaling}
+\definespecial\dostartmirroring {\doPDFstartmirroring}
+\definespecial\dostopmirroring {\doPDFstopmirroring}
+\definespecial\dostartnegative {\doPDFstartnegative}
+\definespecial\dostopnegative {\doPDFstopnegative}
+\definespecial\dostartoverprint {\doPDFstartoverprint}
+\definespecial\dostopoverprint {\doPDFstopoverprint}
+
+\definespecial\doregistercmykspotcolor{\doPDFregistercmykspotcolor}
+\definespecial\doregisterrgbspotcolor {\doPDFregisterrgbspotcolor}
+\definespecial\doregistergrayspotcolor{\doPDFregistergrayspotcolor}
+
+\definespecial\doregistercmykindexcolor{\doPDFregistercmykindexcolor}
+\definespecial\doregisterrgbindexcolor {\doPDFregisterrgbindexcolor}
+\definespecial\doregistergrayindexcolor{\doPDFregistergrayindexcolor}
+
+\definespecial\doregisterfigurecolor{\doPDFregisterfigurecolor}
+
+\definespecial\dostartnonecolormode{\doPDFstartnonecolormode}
+\definespecial\doregisternonecolor {\doPDFregisternonecolor}
+
+\def\doPDFregisterspotcolorname#1#2%
+ {\bgroup
+ \let\ascii\empty
+ \def\docommand##1%
+ {\edef\ascii{\ascii
+ \ifx\nexthandledtoken\space
+ \letterhash20%
+ \else\ifx\nexthandledtoken\blankspace
+ \letterhash20%
+ \else
+ ##1%
+ \fi\fi}}%
+ \expanded{\handletokens#2}\with\docommand
+ \letgvalue{@@pdf@@scn@@#1}\ascii
+ \egroup}
+
+\def\doPDFregistersomespotcolor#1#2#3#4#5#6#7% name fractions names p's space domain function
+ {\bgroup
+ \let\spotpops\empty
+ \ifcase#2\or
+ %def\PDFspotcolornames{/Separation /#1}%
+ \edef\PDFspotcolornames{/Separation /\executeifdefined{@@pdf@@scn@@#1}{#1}}%
+ \def\PDFspotcolordomain{0.0 1.0}%
+ \else
+ \dorecurse{#2}{\edef\spotpops{\spotpops pop }}%
+ \let\PDFspotcolornames \empty
+ \let\PDFspotcolordomain\empty
+ \def\dospotcolorcommand##1%
+ {\edef\PDFspotcolornames {\PDFspotcolornames/\executeifdefined{@@pdf@@scn@@##1}{##1}\space}%
+ \edef\PDFspotcolordomain{\PDFspotcolordomain 0.0 1.0\space}}%
+ \processcommacommand[#3]\dospotcolorcommand
+ \edef\PDFspotcolornames{/DeviceN [\PDFspotcolornames]}%
+ \fi
+ \immediate \pdfobj stream attr
+ {/FunctionType 4 /Domain [\PDFspotcolordomain] /Range [#6]}{{\spotpops#7}}%
+ \immediate \pdfobj
+ {[\PDFspotcolornames\space /Device#5 \PDFobjref\pdflastobj]}%
+ \dosetobjectreference{PDFCS}{#1}{\the\pdflastobj}%
+ \appendtoPDFdocumentcolorspaces{/#1 \PDFobjref\pdflastobj}%
+ \egroup}
+
+%D New and very experimental.
+
+% \def\doPDFregistersomeindexcolor#1#2#3#4#5#6#7% name fractions names p's space domain function
+% {\bgroup
+% \let\spotpops\empty
+% \dorecurse{#2}{\edef\spotpops{\spotpops exch pop\space}}%
+% \let\PDFspotcolornames \empty
+% \let\PDFspotcolordomain\empty
+% \def\docommand##1%
+% {\edef\PDFspotcolornames{\PDFspotcolornames/\executeifdefined{@@pdf@@scn@@##1}{##1}\space}%
+% \edef\PDFspotcolordomain{\PDFspotcolordomain 0.0 1.0\space}}%
+% \processcommacommand[#3,None]\docommand
+% \let\PDFcolorindexvector\empty
+% \def\docommand##1%
+% {\scratchdimen##1\points
+% \scratchdimen\recurselevel\scratchdimen
+% \scratchcounter\scratchdimen
+% \divide\scratchcounter \maxcard
+% \edef\PDFcolorindexvector{\PDFcolorindexvector\uchexnumbers\scratchcounter}}%
+% \dostepwiserecurse\zerocount{255}\plusone
+% {\rawprocesscommacommand[#4,1]\docommand
+% \xdef\PDFcolorindexvector{\PDFcolorindexvector\space}}%
+% \immediate \pdfobj stream attr
+% {/FunctionType 4 /Domain [\PDFspotcolordomain] /Range [#6]}{{\spotpops#7}}%
+% \immediate \pdfobj
+% {[/Indexed
+% [/DeviceN [\PDFspotcolornames] /Device#5 \PDFobjref\pdflastobj] %
+% 255 <\PDFcolorindexvector>]}%
+% \dosetobjectreference{PDFIX}{#1}{\the\pdflastobj}%
+% \appendtoPDFdocumentcolorspaces{/#1_INDEXED \PDFobjref\pdflastobj}%
+% \egroup}
+
+% we reverse the index; an alternative is to negate the graphic itself (\start/stop negative)
+
+\def\doPDFregistersomeindexcolor#1#2#3#4#5#6#7% name fractions names p's space domain function
+ {\bgroup
+ \let\spotpops\empty
+ \dorecurse{#2}{\edef\spotpops{\spotpops exch pop\space}}%
+ \let\PDFspotcolornames \empty
+ \let\PDFspotcolordomain\empty
+ \def\docommand##1%
+ {%\edef\PDFspotcolornames {\PDFspotcolornames/##1\space}%
+ \edef\PDFspotcolornames{\PDFspotcolornames/\executeifdefined{@@pdf@@scn@@##1}{##1}\space}%
+ \edef\PDFspotcolordomain{\PDFspotcolordomain 0.0 1.0\space}}%
+ \processcommacommand[#3,None]\docommand
+ \let\PDFcolorindexvector\empty
+ \def\docommand##1%
+ {\scratchdimen##1\points
+ \scratchdimen\recurselevel\scratchdimen
+ \scratchcounter\scratchdimen
+ \divide\scratchcounter \maxcard
+ \edef\PDFcolorindexvector{\PDFcolorindexvector\uchexnumbers\scratchcounter}}%
+ %\dostepwiserecurse\zerocount{255}\plusone
+ \dostepwiserecurse{255}\zerocount\minusone % we need to negate
+ {\rawprocesscommacommand[#4,1]\docommand
+ \xdef\PDFcolorindexvector{\PDFcolorindexvector\space}}%
+ \immediate \pdfobj stream attr
+ {/FunctionType 4 /Domain [\PDFspotcolordomain] /Range [#6]}{{\spotpops#7}}%
+ \immediate \pdfobj
+ {[/Indexed
+ [/DeviceN [\PDFspotcolornames] /Device#5 \the\pdflastobj\space0 R] %
+ 255 <\PDFcolorindexvector>]}%
+ \dosetobjectreference{PDFIX}{#1}{\the\pdflastobj}%
+ \appendtoPDFdocumentcolorspaces{/#1_INDEXED \the\pdflastobj\space0 R}%
+ \egroup}
+
+%D \macros
+%D {dostarttransparency,dostoptransparency}
+%D
+%D For transparency, we need to implement a couple of
+%D auxiliary macros. If needed, we will generalize tham later.
+
+\definespecial\dostarttransparency{\doPDFstarttransparency}
+\definespecial\dostoptransparency {\doPDFstoptransparency}
+
+\PDFtransparencysupportedtrue
+
+\def\@@PDT{@PDT@}
+
+\ifx\PDFcurrenttransparency\undefined
+ \newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1
+\fi
+
+\def\assignPDFtransparency#1#2%
+ {\edef\PDFtransparencyidentifier{/Tr#1}%
+ \edef\PDFtransparencyreference{\PDFobjref{#2}}}
+
+\def\presetPDFtransparency#1#2%
+ {\initializePDFtransparency
+ \executeifdefined{\@@PDT#1:#2}{\dopresetPDFtransparency{#1}{#2}}}
+
+\def\dopresetPDFtransparency#1#2%
+ {\global\advance\PDFcurrenttransparency \plusone
+ \immediate\pdfobj{\PDFtransparancydictionary{#1}{#2}{}}%
+ \edef\PDFtransparencyidentifier{/Tr\the\PDFcurrenttransparency}%
+ \edef\PDFtransparencyreference {\PDFobjref\pdflastobj}%
+ \setxvalue{\@@PDT#1:#2}%
+ {\noexpand\assignPDFtransparency{\the\PDFcurrenttransparency}{\the\pdflastobj}}%
+ \appendtoPDFdocumentextgstates
+ {\PDFtransparencyidentifier\space
+ \PDFtransparencyreference\space}}
+
+\def\initializePDFtransparency
+ {\immediate\pdfobj{\PDFtransparancydictionary{1}{1}{/AIS false}}%
+ \xdef\PDFtransparencyresetidentifier{/Tr0}%
+ \xdef\PDFtransparencyresetreference{\PDFobjref\pdflastobj}%
+ \setxvalue{\@@PDT0:0}%
+ {\noexpand\assignPDFtransparency{0}{\the\pdflastobj}}%
+ \appendtoPDFdocumentextgstates
+ {\PDFtransparencyresetidentifier\space
+ \PDFtransparencyresetreference\space}%
+ \global\let\initializePDFtransparency\relax}
+
+%D \macros
+%D {dostartclipping,dostopclipping}
+%D
+%D Clipping in \PDFTEX\ is rather trivial. We can even hook
+%D in \METAPOST\ without problems.
+
+\definespecial\dostartclipping#1#2#3%
+ {\PointsToBigPoints{#2}\width
+ \PointsToBigPoints{#3}\height
+ \grabMPclippath{#1}{1}\width\height
+ {0 0 m \width\space 0 l \width \height l 0 \height l}%
+ \pdfliteral % PDFcode ?
+ {q 0 w \MPclippath\space W n}}
+
+\definespecial\dostopclipping
+ {\pdfliteral{Q n}} % PDFcode
+
+%D \macros
+%D {dosetupinteraction}
+%D
+%D Nothing special is needed to enable \PDF\ commands and
+%D interaction. We stick with a message.
+
+\definespecial\dosetupinteraction
+ {\showmessage\m!interactions{21}{pdftex}}
+
+%D \macros
+%D {doresetgotowhereever,
+%D dostartthisisrealpage,dostartthisislocation,
+%D dostartgotorealpage,dostartgotolocation,dostartgotoJS}
+%D
+%D The interactions macros are the core of this module. We
+%D support both page destinations and named ones. We don't
+%D need the \type{\stop}||alternatives. We also don't need
+%D to set the special that sets the real page number.
+
+\definespecial\doresetgotowhereever {\doPDFresetgotowhereever}
+\definespecial\dostartthisislocation{\doPDFstartthisislocation}
+
+%D When going to a location, we obey the time and space saving
+%D boolean \type{\ifusepagedestination}. Named destinations are
+%D stripped and made robust. This all happens in the macros
+%D called for.
+
+\definespecial\dostartgotolocation{\doPDFstartgotolocation}
+\definespecial\dostartgotorealpage{\doPDFstartgotorealpage}
+\definespecial\dostartgotoJS {\doPDFstartgotoJS}
+
+\let\PDFpagexyzspec\empty % hack, pdftex does not accept spec
+
+%D \macros
+%D {doflushJSpreamble}
+%D
+%D It does not make sense to duplicate common \JAVASCRIPT\
+%D functions, and therefore they can be predefined and must be
+%D output separately. Currently this special is not shared
+%D with the \ACROBAT\ one, simply because \DISTILLER\ does not
+%D yet support something \type{\pdfnames}.
+
+% \oneJSpreamblefalse % buggy in acrobat
+
+\definespecial\doflushJSpreamble#1%
+ {\bgroup
+ \let\compositeJScode\empty
+ \def\docommando##1%
+ {\edef\sanitizedJScode{\getJSpreamble{##1}}%
+ \@EA\doPSsanitizeJScode\sanitizedJScode\to\sanitizedJScode
+ \immediate\pdfobj {<< /S /JavaScript /JS (\sanitizedJScode) >>}%
+ \edef\compositeJScode
+ {\compositeJScode\space (##1) \PDFobjref\pdflastobj}}%
+ \processcommalist[#1]\docommando
+ \immediate\pdfobj{<< /Names [ \compositeJScode ] >>}%
+ \pdfnames{/JavaScript \PDFobjref\pdflastobj}%
+ \egroup}
+
+%D \macros
+%D {dostarthide,dostophide}
+%D
+%D Hiding parts of the document for printing is not yet
+%D supported by \PDF\ and therefore \PDFTEX.
+
+\definespecial\dostarthide{}
+\definespecial\dostophide {}
+
+%D \macros
+%D {dosetupscreen}
+%D
+%D Setting of the screen boundingbox involves some
+%D calculations. Here we also take care of (non) full screen
+%D startup. The dimensions are rounded. Because \PDFTEX\ and
+%D \ACROBAT\ handle setting the page dimensions in a
+%D different way, we do not share this special.
+
+\definespecial\dosetupscreen {\doPDFsetupscreen \pdfpageheight}
+
+\definespecial\dosetupartbox {\doPDFsetupartbox \pdfpageheight}
+\definespecial\dosetupcropbox {\doPDFsetupcropbox \pdfpageheight}
+\definespecial\dosetupbleedbox{\doPDFsetupbleedbox\pdfpageheight}
+\definespecial\dosetuptrimbox {\doPDFsetuptrimbox \pdfpageheight}
+
+%D \macros
+%D {dostartexecutecommand}
+%D
+%D \PDF\ viewers enable us to navigate using menus and shortcut
+%D keys. These navigational tools can also be accessed by using
+%D annotations. The next special takes care of inserting them.
+
+\definespecial\dostartexecutecommand{\doPDFstartexecutecommand}
+
+%D \macros
+%D {dosetupidentity}
+%D
+%D Documents can be tagged with an application accessible title
+%D and subtitle, the authorname, a date, the creator, keywords
+%D etc. For the moment \PDFTEX\ only supports the first three
+%D of these.
+
+\definespecial\dosetupidentity{\doPDFsetupidentity}
+
+%D \macros
+%D {dostartrunprogam}
+%D
+%D We can run a program form within a document, although this
+%D feature is rather weak, due to path problems and buggy
+%D argument passing.
+
+\definespecial\dostartrunprogram{\doPDFstartrunprogram}
+
+%D \macros
+%D {dostartgotoprofile, dostopgotoprofile,
+%D dobeginofprofile, doendofprofile}
+%D
+%D \CONTEXT\ user profiles and version control fall back on
+%D \PDF\ article threads. Unfortunately one cannot influence
+%D the view yet in an (for me) acceptable way.
+
+\definespecial\dostartgotoprofile{\doPDFstartgotoprofile}
+
+%D Some day, I'll reimplement threading in a useful way.
+%D Currently the viewers handle threads rather diffuse.
+
+\ifnum\pdftexversion>13
+
+\definespecial\dobeginofprofile#1#2#3#4%
+ {\setPDFdestination{#1}%
+ \doifsomething\PDFdestination
+ {\pdfthread
+ width #2 height #3
+ attr {/Title (\PDFdestination)} % can be omitted
+ name {\PDFdestination}}}
+
+\definespecial\doendofprofile%
+ {}
+
+\fi
+
+%D \macros
+%D {doinsertbookmark}
+%D
+%D In \PDF\ bookmarks are the building blocks of a viewer
+%D provided sort of table of contents. \TEX\ has to provide
+%D the entry as well as the number of child entries. Strings
+%D need to be sanatized as good as possible to suit the default
+%D encoding. In \CONTEXT\ users can overrule this string by
+%D supplying an alternative one. Look at the macro called for
+%D to see how funny these bookmarks are defined.
+
+\definespecial\doinsertbookmark{\doPDFinsertbookmark}
+
+%D \macros
+%D {dostartobject,dostopobject,doinsertobject}
+%D
+%D Due to \PDF's object oriented character, we can include and
+%D reuse objects. These can be compared with \TEX's boxes. The
+%D \TEX\ counterpart is defined in the module \type{spec-dvi}.
+%D We don't use the dimensions here.
+%D
+%D The next solution is not that beautiful. Because objects are
+%D containers for whatever kind of content, graphics can be
+%D part of this content, and a graphic object can be part of
+%D the more general type. In practice this means that an ximage
+%D would be embedded in an xform, which in itself is not that
+%D big a problem, apart from a few bytes overhead. However, for
+%D reasons unknown to me alternative images must be pure
+%D ximages |<|indeed, somehow one cannot use a vector graphic
+%D as alternative|>| that are not embedded into forms, so this
+%D is why the object handler treats them different. This
+%D implies knowledge of the calling routines, especially the
+%D \type{FIG} trigger, that signals that we just embedded an
+%D image. Alternatively I could have introduced a dual object
+%D system, but the overhead in duplicate specials is currently
+%D not what we want. I'd rather implement a more mature
+%D object support system from scratch.
+
+\let\currentPDFresources\empty
+\let\PDFimageattributes \empty
+\let\PDFfigurereference \empty
+\let\PDFimagereference \empty
+
+\ifnum\pdftexversion>13
+
+ \definespecial\dostartobject#1#2#3#4#5%
+ {\bgroup
+ \setbox\nextbox\vbox\bgroup
+ \def\dodostopobject
+ {\egroup
+ \ifx\PDFimagereference\empty
+ % We also flush page resources, since shared
+ % resources end up there; otherwise transparencies
+ % won't work in xforms; some day I will optimize
+ % this.
+ \the\everyPDFxform
+ \immediate\pdfxform
+ resources {\currentPDFresources\the\pdfpageresources}%
+ \nextbox
+ \global\let\currentPDFresources\empty
+ \dosetobjectreference{#1}{#2}{\the\pdflastxform}%
+ \else
+ \dosetobjectreference{#1}{#2}{-\PDFimagereference}%
+ \global\let\PDFimagereference\empty
+ \fi}}
+
+ \definespecial\dostopobject
+ {\dodostopobject
+ \egroup}
+
+ \definespecial\doresetobjects
+ {\global\let\PDFimagereference\empty}
+
+ \definespecial\doinsertobject#1#2%
+ {\bgroup
+ \doifobjectreferencefoundelse{#1}{#2}
+ {\dogetobjectreference{#1}{#2}\PDFobjectreference
+ \ifnum\PDFobjectreference<0
+ \@EA\@EA\@EA\pdfrefximage\@EA\gobbleoneargument\PDFobjectreference
+ \else
+ \pdfrefxform\PDFobjectreference
+ \fi}%
+ {}%
+ \egroup}
+
+\else
+
+ \definespecial\dostartobject#1#2#3#4#5%
+ {\bgroup
+ \setbox\nextbox\vbox\bgroup
+ \def\dodostopobject
+ {\egroup
+ \the\everyPDFxform
+ \pdfform\nextbox
+ \dosetobjectreference{#1}{#2}{\the\pdflastform}}}
+
+ \definespecial\dostopobject
+ {\dodostopobject
+ \egroup}
+
+ \definespecial\doinsertobject#1#2%
+ {\bgroup
+ \dogetobjectreference{#1}{#2}\PDFobjectreference
+ \pdfrefform\PDFobjectreference
+ \egroup}
+
+\fi
+
+%D \macros
+%D {dosetpagetransition}
+%D
+%D Page transitions only make sence in presentations. They are
+%D passed as raw \PDF\ code to the page object. Take a look
+%D at the implementation to get an impression of the rubish
+%D passed on.
+
+\definespecial\dosetpagetransition{\doPDFsetpagetransition}
+
+%D The expansion is needed because else the \type{\pdfpageattr}
+%D token list flushes an unexpanded \type{\csname}. The
+%D \type{\global} is needed because the assignment can take
+%D place deeply buried (for instance in the \type{\shipout}
+%D box.
+
+%D \macros
+%D {doinsertcomment, doflushcomments}
+%D
+%D Text annotation, or comments, are provided too:
+
+\definespecial\doinsertcomment{\doPDFinsertcomment}
+\definespecial\doflushcomments{\doPDFflushcomments}
+
+%D \macros
+%D {dopresetlinefield,dopresettextfield,
+%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield,
+%D dopresetpushfield,dopresetcheckfield,
+%D dopresetradiofield,dopresetradiorecord}
+%D
+%D \PDF\ offers extensive field support. The next bunch of
+%D definitions map the specials.
+
+\definespecial\dopresetlinefield {\doFDFpresetlinefield}
+\definespecial\dopresettextfield {\doFDFpresettextfield}
+\definespecial\dopresetchoicefield{\doFDFpresetchoicefield}
+\definespecial\dopresetpopupfield {\doFDFpresetpopupfield}
+\definespecial\dopresetcombofield {\doFDFpresetcombofield}
+\definespecial\dopresetpushfield {\doFDFpresetpushfield}
+\definespecial\dopresetcheckfield {\doFDFpresetcheckfield}
+\definespecial\dopresetradiofield {\doFDFpresetradiofield}
+\definespecial\dopresetradiorecord{\doFDFpresetradiorecord}
+
+%D \macros
+%D {dodefinefieldset,dogetfieldset,doiffieldset}
+%D
+%D Field sets, needed for reset and submit handling, are
+%D taken care of by:
+
+\definespecial\dodefinefieldset{\doFDFdefinefieldset}
+\definespecial\dogetfieldset {\doFDFgetfieldset}
+\definespecial\doiffieldset {\doFDFiffieldset}
+
+%D \macros
+%D {doregistercalculationset}
+%D
+%D The calculation order is defined using:
+
+\definespecial\doregistercalculationset{\doFDFregistercalculationset}
+
+%D \macros
+%D {dosetposition, dosetpositionwdh, dosetpositionplus}
+%D
+%D Opposite to its \DVI\ counterpart, the \PDFTEX\ backend
+%D can provide positional information directly. Since
+%D \CONTEXT\ only uses relative positions, the origin is of
+%D less importance.
+
+% \def\doTPDsetposition#1#2#3%
+% {\bgroup
+% \edef\doTPDsetposition%
+% {\writeutilitycommand
+% {#1%
+% {#2}%
+% {\noexpand\realfolio}%
+% {\noexpand\number\pdflastxpos}%
+% {\noexpand\number\pdflastypos}%
+% #3}}%
+% \pdfsavepos
+% \doTPDsetposition
+% \egroup}
+%
+% \definespecial\dosetposition#1%
+% {\doTPDsetposition{\pospxy}{#1}{}}
+%
+% \definespecial\dosetpositionwhd#1#2#3#4%
+% {\doTPDsetposition{\pospxywhd}{#1}{{#2}{#3}{#4}}}
+
+\definespecial\dosetposition#1%
+ {\pdfsavepos
+ \dolazysaveposition
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\number\pdflastxpos}%
+ {\noexpand\number\pdflastypos}}%
+
+\definespecial\dosetpositionwhd#1#2#3#4%
+ {\pdfsavepos
+ \dolazysavepositionwhd
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\number\pdflastxpos}%
+ {\noexpand\number\pdflastypos}%
+ {#2}{#3}{#4}}
+
+\definespecial\dosetpositionplus#1#2#3#4#5%
+ {\pdfsavepos
+ \dolazysavepositionplus
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\number\pdflastxpos}%
+ {\noexpand\number\pdflastypos}%
+ {#2}{#3}{#4}{#5}}
+
+%D \macros
+%D {doPDFdestination}
+%D
+%D Finally we implement some low level macros to deal with
+%D flushing \PDF\ code. First we handle the named destinations.
+
+\def\doPDFdestination name #1%
+ {\pdfdest name {#1} \PDFpageviewkey}
+
+%D \macros
+%D {doPDFaction,doPDFannotation,ifsharePDFactions}
+%D
+%D Next we handle annotations. All link annotations are
+%D implemented using the action dictionary. This enables us to
+%D use multiple actions. The second macro is for instance
+%D used for movie inclusion.
+
+\newif\ifsharePDFactions \sharePDFactionstrue
+
+% hm, due to some stupid optimization this feature has been
+% disabled for some time, watch out \lastPDFaction is to be
+% persistent
+
+\ifnum\pdftexversion>13
+
+ \def\doPDFaction width #1 height #2 action #3%
+ {\ifcollectreferenceactions
+ \xdef\lastPDFaction{#3}%
+ \else
+ \ifsharePDFactions
+ \ifcase\similarreference\relax
+ \xdef\lastPDFaction{<<#3>>}%
+ \or
+ \immediate\pdfobj{<<#3>>}%
+ \xdef\lastPDFaction{\PDFobjref\pdflastobj}%
+ \else
+ % leave \lastPDFaction untouched
+ \fi
+ \else
+ \xdef\lastPDFaction{<<#3>>}%
+ \fi
+ \pdfannot
+ width #1 height #2 depth \zeropoint
+ {/Subtype /Link
+ /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /A \lastPDFaction}%
+ \fi}
+
+ % less #2 passing
+
+ \def\doPDFaction width #1 height #2 action #3%
+ {\xdef\lastPDFcontent{#3}%
+ \ifcollectreferenceactions
+ \global\let\lastPDFaction\lastPDFcontent
+ \else
+ \ifsharePDFactions
+ \ifcase\similarreference\relax
+ \xdef\lastPDFaction{<<\lastPDFcontent>>}%
+ \or
+ \immediate\pdfobj{<<\lastPDFcontent>>}%
+ \xdef\lastPDFaction{\PDFobjref\pdflastobj}%
+ \else
+ % leave \lastPDFaction untouched
+ \fi
+ \else
+ \xdef\lastPDFaction{<<\lastPDFcontent>>}%
+ \fi
+ \pdfannot
+ width #1 height #2 depth \zeropoint
+ {/Subtype /Link
+ /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /A \lastPDFaction}%
+ \fi}
+
+\else
+
+ \def\doPDFaction width #1 height #2 action #3%
+ {\ifcollectreferenceactions
+ \xdef\lastPDFaction{#3}%
+ \else
+ \ifsharePDFactions
+ \ifcase\similarreference\relax
+ \xdef\lastPDFaction{<<#3>>}%
+ \or
+ \immediate\pdfobj{<<#3>>}%
+ \xdef\lastPDFaction{\PDFobjref\pdflastobj}%
+ \else
+ % leave \lastPDFaction untouched
+ \fi
+ \else
+ \xdef\lastPDFaction{<<#3>>}%
+ \fi
+ \pdfannotlink % could be \pdfannot if not the - problem was there
+ width #1 height #2 depth \zeropoint
+ user {/Subtype /Link
+ /Border [0 0 0]
+ \ifhighlighthyperlinks \else /H /N \fi
+ /A \lastPDFaction}%
+ \pdfendlink
+ \fi}
+
+\fi
+
+% pdftex and viewers give problems with this one (printing forms)
+%
+%\def\doPDFannotation width #1 height #2 data #3%
+% {\pdfannot width #1sp height -#2sp depth \zeropoint{#3}}
+%
+% This is corrected in version 14. When this version is wide
+% spread, this will be cleaned up.
+
+\ifnum\pdftexversion>13
+
+ \def\doPDFannotation width #1 height #2 data #3%
+ {\pdfannot width #1 height #2 depth \zeropoint{#3}}
+
+\else
+
+ \def\doPDFannotation width #1 height #2 data #3%
+ {\hbox{\raise#2\hbox{\pdfannot width #1 height #2 depth \zeropoint{#3}}}}
+
+\fi
+
+%D \macros
+%D {doPDFannotationobject,doPDFactionobject}
+%D
+%D For field support we need annotation objects. Although in
+%D many cases we can do without indirect references (and use
+%D the last annotation object number directly), we take the
+%D save route.
+
+\def\doPDFannotationobject class #1 name #2 width #3 height #4 data #5%
+ {\doPDFannotation width #3 height #4 data {#5}%
+ \dosetobjectreference{#1}{#2}{\the\pdflastannot}}
+
+\def\doPDFactionobject class #1 name #2 width #3 height #4 action #5%
+ {\doPDFaction width {#3} height {#4} action {#5}%
+ \dosetobjectreference{#1}{#2}{\the\pdflastannot}}
+
+%D \macros
+%D {doPDFaddtocatalog,doPDFaddtoinfo,
+%D doPDFpageattribute,doPDFpagesattribute}
+%D
+%D Next some simple ones. Watch the global directive and the
+%D expansion in the page attribute macro.
+
+\def\doPDFaddtocatalog
+ {\pdfcatalog}
+
+\def\doPDFaddtoinfo
+ {\pdfinfo}
+
+\def\doPDFpageattribute#1%
+ {\expanded{\global\pdfpageattr{#1\the\pdfpageattr}}}
+
+\def\doPDFpageresource#1%
+ {\expanded{\global\pdfpageresources{#1\the\pdfpageresources}}}
+
+\def\doPDFpagesattribute#1%
+ {\expanded{\global\pdfpagesattr{#1\the\pdfpagesattr}}}
+
+\def\doPDFresetpageattributes
+ {\global\pdfpageattr\emptytoks}
+
+\def\doPDFresetpageresources
+ {\global\pdfpageresources\emptytoks}
+
+%D \macros
+%D {doPDFbookmark}
+%D
+%D Well, isn't the next one ugly? Thanks to the \PDF\
+%D standard.
+
+% obsolete cq. buggy in pdfTeX
+%
+% \def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+% {\pdfoutline
+% goto page #4\space
+% \ifcase#2 \else count \ifcase#5-\fi#2 \fi
+% {#3}}
+
+% \def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+% {\pdfoutline
+% user {<</S /GoTo /D [#4\space\PDFpageviewwrd]>>}%
+% \ifcase#2 \else count \ifcase#5-\fi#2 \fi
+% {#3}}
+
+\def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+ {\doPDFgetpagereference{#4}\PDFobjectreference
+ \pdfoutline
+ user {<</S /GoTo /D [\PDFobjectreference\space\PDFpageviewwrd]>>}%
+ \ifcase#2 \else count \ifcase#5-\fi#2 \fi
+ {#3}}
+
+%D \macros
+%D {doPDFdictionaryobject,doPDFarrayobject}
+%D
+%D Where \PDFTEX\ has only one object primitive, optionally a
+%D stream one, \ACROBAT\ has several operators.
+
+\def\doPDFdictionaryobject class #1 name #2 data #3%
+ {\flushatshipout
+ {\immediate\pdfobj{<< #3 >>}%
+ \dosetobjectreference{#1}{#2}{\the\pdflastobj}}}
+
+\def\doPDFarrayobject class #1 name #2 data #3%
+ {\flushatshipout
+ {\immediate\pdfobj{[ #3 ]}%
+ \dosetobjectreference{#1}{#2}{\the\pdflastobj}}}
+
+%D \macros
+%D {defaultobjectreference,doPDFgetobjectreference}
+%D
+%D Because in \PDFTEX\ we have to construct the object
+%D references \type{N 0 R}, we can default to the non existing
+%D zero object number.
+
+\def\defaultobjectreference#1#2%
+ {0}
+
+\def\doPDFgetobjectreference#1#2#3%
+ {\dogetobjectreference{#1}{#2}#3%
+ \edef#3{\ifx#3\empty null\else\PDFobjref{#3}\fi}}
+
+% \def\doPDFgetobjectpage #1#2#3{..}
+% \def\doPDFgetobjectpagereference#1#2#3{..}
+
+\ifx\pdfpageref\undefined
+
+ \def\doPDFgetpagereference % number macro
+ {\installprogram{texutil --filter \jobname}%
+ \gdef\doPDFgetpagereference##1{\doPDFgetobjectreference{PDFP}{\number##1}}% {##2}
+ \doPDFgetpagereference}
+
+\else
+
+ \def\doPDFgetpagereference#1#2% number macro
+ {\edef#2{\ifnum#1>\zerocount\PDFobjref{\pdfpageref#1}\else null\fi}}
+
+\fi
+
+%D \macros
+%D {initializePDFnegative,initializePDFoverprint}
+%D
+%D Here follow some rather obscure macros. They will only
+%D come into action when one wants negated output.
+
+%D Todo: move code to fdf module and
+
+\def\initializePDFnegative
+ {\immediate\pdfobj stream attr {/FunctionType 4 /Range [0 1] /Domain [0 1]} {{1 exch sub}}%
+ \immediate\pdfobj{<</Type /ExtGState /TR \PDFobjref\pdflastobj>>}%
+ \appendtoPDFdocumentextgstates{/GSnegative \PDFobjref\pdflastobj}%
+ \immediate\pdfobj{<</Type /ExtGState /TR /Identity>>}%
+ \appendtoPDFdocumentextgstates{/GSpositive \PDFobjref\pdflastobj}%
+ \global\let\initializePDFnegative\relax}
+
+\def\initializePDFoverprint
+ {\immediate\pdfobj{<</Type /ExtGState /OP false /OPM 0>>}% /op defaults to /OP
+ \appendtoPDFdocumentextgstates{/GSknockout \PDFobjref\pdflastobj}%
+ \immediate\pdfobj{<</Type /ExtGState /OP true /OPM 1>>}% /op defaults to /OP
+ \edef\PDFobjectreferenceB{\the\pdflastobj}%
+ \appendtoPDFdocumentextgstates{/GSoverprint \PDFobjref\pdflastobj}%
+ \global\let\initializePDFoverprint\relax}
+
+%D File embedding. Storing the stream identifier is needed
+%D to get access to the number. When typeset, the user can
+%D feed this number to \type {pdftosrc} and filter the
+%D file from the \PDF\ file.
+
+\let\PDFlaststreamobject \s!unknown
+%def\PDFlaststreamreference{0 0 R}
+
+\def\doPDFfilestreamobject class #1 name #2 file #3 source #4%
+ {\immediate\pdfobj stream file{#4}%
+ \edef\PDFlaststreamobject{\the\pdflastobj}%
+ \dosetobjectreference{PDFFS}{#2}{\PDFlaststreamobject}%
+ \doPDFdictionaryobject class {#1} name {#2} data
+ {/Type /Filespec /F (#3) /EF <</F \PDFobjref\PDFlaststreamobject>>}}
+
+\def\doPDFgetfilestreamreference#1#2%
+ {\doPDFgetobjectreference{PDFFS}{#1}#2}
+
+\def\doPDFfilestreamidentifier#1%
+ {\doifsomething{#1}
+ {\doPDFgetfilestreamreference{#1}\PDFobjectreference
+ \@EA\beforesplitstring\PDFobjectreference\at{ }\to\PDFlaststreamobject
+ \PDFlaststreamobject}}
+
+% %D We can set \METAPOST\ prologues to~2:
+
+\def\MPprologues{2}
+
+%D Experimental:
+
+\definespecial\dostartfonteffect{\doPDFstartfonteffect}
+\definespecial\dostopfonteffect {\doPDFstopfonteffect}
+
+%D Some MP stuff:
+
+\let\handleMPfshow\dohandleMPfshow % default anyway
+
+\ifnum\pdftexversion<14
+
+ \def\setMPPDFobject#1#2% resources boxnumber
+ {\def\getMPPDFobject{\box#2}}
+
+\else
+
+ \def\setMPPDFobject#1#2% resources boxnumber
+ {\immediate\pdfxform resources{#1}#2%
+ \edef\getMPPDFobject{\noexpand\pdfrefxform\the\pdflastxform}}
+
+\fi
+
+\let\getMPPDFobject\relax
+
+\definespecial\doinsertMPfile#1%
+ {\doiffileelse{./#1}{\includeMPasPDF{./#1}}{\message{[MP #1]}}}
+
+%D Now we can finish this module.
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-tr.tex b/Master/texmf-dist/tex/context/base/spec-tr.tex
new file mode 100644
index 00000000000..2631f399ed9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-tr.tex
@@ -0,0 +1,118 @@
+%D \module
+%D [ file=spec-tr,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Thomas Rokicki's \DVIPS,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Especially the rotation proved to be incompatible with
+%D the default \POSTSCRIPT\ special driver. Many thanks to
+%D Gilbert van den Dobbelsteen for testing and hacking the
+%D \DVIPS\ source and pinpointing the problem.
+
+%D \macros
+%D {doinsertfile}
+%D
+%D We overrule the figure||insertion special. Things should
+%D be more accurate, but maybe someday \unknown
+
+\startspecials[rokicki]
+
+\def\@@insertpostscriptliteral {ps: }
+\def\@@insertpostscriptretain {" }
+
+%\definefileinsertion{tr}{eps}#1#2#3#4#5#6#7#8#9%
+% {\PointsToBigPoints{#5}\width
+% \PointsToBigPoints{#6}\height
+% \special
+% {psfile=#1
+% hscale=#3\space
+% vscale=#4\space
+% hoffset=\width\space
+% voffset=\height}}
+
+%D Ugly but useful:
+
+\definefileinsertion{tr}{eps}#1#2#3#4#5#6#7#8#9%
+ {\PointsToWholeBigPoints{#7}\width
+ \PointsToWholeBigPoints{#8}\height
+ \special
+ {PSfile="#1"\space
+ llx=\EPSllx\space
+ lly=\EPSlly\space
+ urx=\EPSurx\space
+ ury=\EPSury\space
+ rwi=\width0\space
+ rhi=\height0}}
+
+\definefileinsertion{tr}{mps}#1#2#3#4#5#6#7#8#9%
+ {\hbox
+ {%\includeMPfonts{#1}% dvips know mp
+ \convertMPcolors{#1}%
+ \dofileinsertion{tr}{eps}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \dodoinsertfile{tr}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%
+ \egroup}
+
+%D Some MP stuff:
+
+\definespecial\doinsertMPfile#1%
+ {\doiffileelse{./#1}{\includeMPasEPS{./#1}}{\message{[MP #1]}}}
+
+%D \macros
+%D {dostartrotation}
+%D
+%D Because \DVIPS\ uses a reverse rotation scheme, we have
+%D to add an extra \type{neg} to the default \POSTSCRIPT\
+%D rotation definition:
+
+\definespecial\dostartrotation#1% straight from the YandY manual / 1st neg added
+ {\special
+ {\@@insertpostscriptliteral
+ gsave currentpoint currentpoint translate
+ \number#1\space\space neg rotate neg exch neg exch translate}}
+
+\definespecial\dostoprotation
+ {\special
+ {\@@insertpostscriptliteral
+ currentfont currentpoint grestore moveto setfont}}
+
+%D Drawing ovals in \DVIPS\ is complicated by the fact that
+%D the colors get reset. Therefore we need a more literal
+%D approach and therefore scale to local units. By redefining
+%D the retain constant into a macro, we can use the already
+%D present \POSTSCRIPT\ definition (see \type{spec-ps}).
+
+\definespecial\doovalbox#1#2#3#4#5#6#7%
+ {\bgroup
+ \edef\@@insertpostscriptretain gsave%
+ {\@@insertpostscriptliteral
+ gsave
+ Resolution 72 div
+ VResolution 72 div neg scale currentpoint translate}%
+ \dosomeovalbox{#1}{#2}{#3}{#4}{#5}{#6}{#7}%
+ \egroup}
+
+%D \macros
+%D {dosetuppaper}
+%D
+%D Relatively new:
+
+\definespecial\dosetuppaper#1#2#3%
+ {\begingroup
+ \!!dimena#2%
+ \!!dimenb#3%
+ \special{papersize=\the\!!dimena,\the\!!dimenb}%
+ \endgroup}
+
+\stopspecials
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-tst.tex b/Master/texmf-dist/tex/context/base/spec-tst.tex
new file mode 100644
index 00000000000..e30eea2fec2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-tst.tex
@@ -0,0 +1,151 @@
+%D \module
+%D [ file=spec-tst,
+%D version=2002.12.08,
+%D title=\CONTEXT\ \PDF\ Macros,
+%D subtitle=Special Test Macro
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifcase \pdfoutput \endinput \fi
+
+\unprotect
+
+%D The conversions comes down to (for the sake fo speed the
+%D implementation combines steps):
+%D
+%D \startitemize
+%D \item we expand the \UTF\ sequences into \type {\unicodechar}'s
+%D \item spaces become character 255's (so that they are not
+%D gobbled in argument fetching
+%D \item normal \ASCII\ chars are unchanged
+%D \item \par's and alike are converted to \type {\unicodechar}'s
+%D \stopitemize
+%D
+%D This happens by expansion; next we convert the resulting
+%D sequence by interpreting the stream.
+
+\long\def\sanitizePDFuniencoding#1\to#2%
+ {\enablePDFunicrlf
+ \let\unicodechar\relax % prevent further expansion
+ \retainlccodes\lccode32=255 % slooow
+ \lowercasestring\PDFunicodetrigger#1\to#2%
+ \edef#2{\expandafter\doPDFuni#2\empty\empty}} % slooow
+
+%D Handling of empty lines:
+
+\bgroup
+\catcode`\^^M=\@@active
+\gdef\enablePDFunicrlf%
+ {\def\\{\unicodechar{13}}%
+ \def\par{\\\\}%
+ \catcode`\^^M=\@@active%
+ \let^^M=\\}
+\egroup
+
+%D Conversion to 16 bit \UNICODE:
+
+\def\PDFunicodechar#1%
+ {\@EA\lchexnumbers\@EA{\number\utfdiv{#1}}%
+ \@EA\lchexnumbers\@EA{\number\utfmod{#1}}}
+
+\def\PDFunicodetrigger
+ {\unicodechar{65279}}
+
+%D The postprocessor:
+
+\def\doPDFuni#1%
+ {\ifx#1\relax
+ \@EA\dodoPDFuni
+ \else\ifx#1\empty
+ % quit
+ \else
+ \@EAEAEA\nodoPDFuni
+ \fi\fi#1}
+
+\def\nodoPDFuni#1%
+ {\PDFunicodechar{\ifnum`#1=255 32\else`#1\fi}\doPDFuni}
+
+\def\dodoPDFuni#1#2%
+ {\PDFunicodechar{#2}\doPDFuni}
+
+\def\sanitizePDFencoding
+ {\doifelse\currentregime{utf}%
+ {\PDFunicodetrue\sanitizePDFuniencoding}\sanitizePDFdocencoding}
+
+% pdftex specific
+
+\def\doPDFinsertbookmark#1#2#3#4#5% level sublevels text page open=1
+ {\bgroup
+ \sanitizePDFencoding#3\to\bookmarktext % uses scratchcounter
+ \stripstring\bookmarktext
+ \doPDFbookmark level #1 n #2 text {\bookmarktext} page {#4} open #5
+ \egroup}
+
+\def\doPDFbookmark level #1 n #2 text #3 page #4 open #5%
+ {\doPDFgetpagereference{#4}\PDFobjectreference
+ \pdfoutline
+ user {<</S /GoTo /D [\PDFobjectreference\space\PDFpageviewwrd]>>}%
+ \ifcase#2 \else count \ifcase#5-\fi#2 \fi
+ {\ifPDFunicode<#3>\else#3\fi}}
+
+\def\doPDFsetupidentity#1#2#3#4#5#6%
+ {\bgroup
+ \enablePDFdocencoding
+ \sanitizePDFencoding#1\to\idtitle \stripstring\idtitle
+ \sanitizePDFencoding#2\to\idsubject\stripstring\idsubject
+ \sanitizePDFencoding#3\to\idauthor \stripstring\idauthor
+ \sanitizePDFencoding#4\to\idcreator\stripstring\idcreator
+ \sanitizePDFencoding#6\to\idkeyword\stripstring\idkeyword
+ \expanded{\doPDFaddtoinfo
+ {/Title \ifPDFunicode<\idtitle >\else(\idtitle )\fi
+ /Subject \ifPDFunicode<\idsubject>\else(\idsubject)\fi
+ /Author \ifPDFunicode<\idauthor >\else(\idauthor )\fi
+ /Creator \ifPDFunicode<\idcreator>\else(\idcreator)\fi
+ /ModDate (#4)
+ /ID (\jobname.#5) % needed for pdf/x
+ /Keywords \ifPDFunicode<\idkeyword>\else(\idkeyword)\fi}}%
+ \egroup}
+
+\protect
+
+\doifnotmode{demo}{\endinput}
+
+% \input spec-tst.tex
+
+\mainlanguage[vn]
+\enableregime[utf]
+\usetypescript[all][computer-modern][t5]
+
+\setupinteraction
+ [state=start,
+ title={Thử tiếng Việt},
+ author={Tác Văn Giả},
+ keyword={Thử tiếng Việt}]
+
+\placebookmarks[chapter,section,subsection]
+
+\starttext
+
+\placelist[chapter,section,subsection][alternative=c]
+
+\chapter{Thử tiếng Việt}
+
+\section {Mục thứ nhất}
+\subsection{Mục nhỠthứ nhất} Thử tiếng Việt
+\subsection{Mục nhỠthứ hai} Thử tiếng Việt
+
+\section {Mục thứ hai}
+\subsection{Mục nhỠthứ nhất} Thử tiếng Việt
+\subsection{Mục nhỠthứ hai} Thử tiếng Việt
+
+\section {Mục thứ ba}
+\subsection{Mục nhỠthứ nhất} Thử tiếng Việt
+\subsection{Mục nhỠthứ hai} Thử tiếng Việt
+
+\stoptext
+
diff --git a/Master/texmf-dist/tex/context/base/spec-var.tex b/Master/texmf-dist/tex/context/base/spec-var.tex
new file mode 100644
index 00000000000..0a508f5614d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-var.tex
@@ -0,0 +1,70 @@
+%D \module
+%D [ file=spec-var,
+%D version=2003.10.10,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Variables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module used to be integrated in \type {spec-ini},
+%D but testing optimization is more convenient this way.
+
+\writestatus{loading}{Context Special Macros / Variables}
+
+% new approach, 'global' variables, since we run out of
+% arguments
+
+\unprotect
+
+\ifx\undefined\@@DriverFieldName
+
+ \letempty \@@DriverFieldName
+ \letempty \@@DriverFieldWidth
+ \letempty \@@DriverFieldHeight
+ \letempty \@@DriverFieldDefault
+ \letempty \@@DriverFieldNumber
+ \letempty \@@DriverFieldNumber
+ \letempty \@@DriverFieldStyle
+ \letempty \@@DriverFieldColor
+ \letempty \@@DriverFieldBackgroundColor
+ \letempty \@@DriverFieldFrameColor
+ \letempty \@@DriverFieldLayer
+ \letempty \@@DriverFieldOption
+ \letempty \@@DriverFieldAlign
+ \letempty \@@DriverFieldClickIn
+ \letempty \@@DriverFieldClickOut
+ \letempty \@@DriverFieldRegionIn
+ \letempty \@@DriverFieldRegionOut
+ \letempty \@@DriverFieldAfterKey
+ \letempty \@@DriverFieldFormat
+ \letempty \@@DriverFieldValidate
+ \letempty \@@DriverFieldCalculate
+ \letempty \@@DriverFieldFocusIn
+ \letempty \@@DriverFieldFocusOut
+
+\fi
+
+\ifx\undefined\@@DriverCommentLayer
+
+ \letempty \@@DriverCommentLayer
+
+\fi
+
+\ifx\undefined\@@DriverAttachmentLayer
+
+ \letempty \@@DriverAttachmentLayer
+
+\fi
+
+\ifx\undefined\@@DriverImageBox
+
+ \letempty \@@DriverImageBox
+
+\fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-win.tex b/Master/texmf-dist/tex/context/base/spec-win.tex
new file mode 100644
index 00000000000..73db8830e9c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-win.tex
@@ -0,0 +1,99 @@
+%D \module
+%D [ file=spec-win,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=\YandY's \DVIWINDO,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D Remark: chained references are not yet implemented.
+
+%D \macros
+%D {dosetupinteraction,
+%D dostartthisislocation,
+%D dostartthisisrealpage,
+%D dostartgotolocation,
+%D dostartgotorealpage,
+%D dostartrunprogram,
+%D usepagedestinations}
+%D {}
+%D
+%D As told before, these were the first interactive specials.
+%D In those days, these kind of specials were still elegant
+%D and straightforward.
+
+\startspecials[dviwindo]
+
+\definespecial\dosetupinteraction%
+ {\showmessage\m!interactions{21}{dviwindo}}
+
+\definespecial\dostartgotolocation#1#2#3#4#5#6%
+ {\bgroup
+ \doifelsenothing{#3}
+ {\doifelsenothing{#4}
+ {\!!doneafalse}
+ {\doifparentfileelse{#4}
+ {\!!doneafalse}
+ {\!!doneatrue}}%
+ \setreferencefilename#4\to\DVIfile
+ \scratchdimen#1\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#2\edef\height{\the\scratchdimen\space}%
+ \special
+ {button:
+ \width \height
+ \if!!donea
+ file: \DVIfile,
+ \fi
+ "#5"}}
+ {}% nog uri afhandelen
+ \egroup}
+
+\definespecial\dostartgotorealpage#1#2#3#4#5%
+ {\bgroup
+ \doifelsenothing{#3}
+ {\doifelsenothing{#4}
+ {\!!doneafalse}
+ {\doifparentfileelse{#4}
+ {\!!doneafalse}
+ {\!!doneatrue}}%
+ \setreferencefilename#4\to\DVIfile
+ \scratchdimen#1\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#2\edef\height{\the\scratchdimen\space}%
+ \special
+ {button:
+ \width \height
+ \if!!donea
+ file: \DVIfile,
+ \fi
+ \ifnum0#5=0 \else
+ page: #5
+ \fi}}
+ {}% nog uri afhandelen
+ \egroup}
+
+\definespecial\dostartthisislocation#1%
+ {\special{mark: "#1"}}
+
+\definespecial\dostartthisisrealpage#1%
+ {}
+
+\definespecial\dostartrunprogram#1#2#3#4%
+ {\bgroup
+ \scratchdimen#1\edef\width {\the\scratchdimen\space}%
+ \scratchdimen#2\edef\height{\the\scratchdimen\space}%
+ \special{button: \width \height launch: #3 #4}%
+ \egroup}
+
+\let\doyandyinsertmov = \docommoninsertmov
+\let\dotrinsertmov = \docommoninsertmov
+
+\stopspecials
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/spec-xtx.tex b/Master/texmf-dist/tex/context/base/spec-xtx.tex
new file mode 100644
index 00000000000..ea355abd7bb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-xtx.tex
@@ -0,0 +1,247 @@
+%D \module %D [ file=spec-xtx, %D version=2004.11.08, %D title=\CONTEXT\ Special Macros, %D subtitle=\XETEX\ support, %D author={Adam Lindsay \& Hans Hagen \& \unknown}, %D date=\currentdate, %D copyright={Adam Lindsay \& Hans Hagen}]
+
+\unprotect
+
+\startspecials[xetex][reset,dpx]
+
+%D Actually, there's an intermediate ``\type{xdv}''
+%D output format, but by default, it's tranparently
+%D converted to \PDF\ by \XETEX.
+
+\setjobsuffix{pdf}
+
+%D Rotation looks fine.
+
+\definespecial\dostartrotation#1%
+ {\special{x:gsave}\special{x:rotate #1}}
+
+\definespecial\dostoprotation%
+ {\special{x:grestore}}
+
+%D Scaling and mirroring are also fine.
+
+\definespecial\dostartscaling#1#2%
+ {\special{x:gsave}\special{x:scale #1 #2}}
+
+\definespecial\dostopscaling%
+ {\special{x:grestore}}
+
+\definespecial\dostartmirroring%
+ {\special{x:gsave}\special{x:scale -1 1}}
+
+\definespecial\dostopmirroring%
+ {\special{x:grestore}}
+
+%D Colors are done with the \DVIPDFMX\ color model, which are
+%D inherited.
+
+%D Although hex colors were accommodated by Hans, we'll try the
+%D more familiar \DVIPDFMX\ ones. One good side-effect of the
+%D previous approach
+%D was that it kept track of the color state (transparency
+%D in XeTeX is accomplished setting the color to an RGBA quadruple,
+%D rather than an RGB triple). So transparency will need another
+%D plan.
+
+% \macros
+% {dostarttransparency,dostoptransparency}
+%
+% \starttypen
+% \dostarttransparency{fraction}{type}
+% \dostoptransparency
+% \stoptypen
+%
+% Although in \CONTEXT\ transparency is closely integrated
+% in the color drivers, in the end it is an independent
+% feature.
+
+%\installspecial [\dostarttransparency] [or] [2]
+%\installspecial [\dostoptransparency] [or] [0]
+
+%D \macros
+%D {doloadmapfile,doloadmapline,doresetmapfilelist}
+%D
+%D \XETEX\ 0.91 allows map file additions, via a special.
+
+\definespecial\doresetmapfilelist{\special{x:fontmapfile original-empty.map}}
+\definespecial\doloadmapfile #1#2{\special{x:fontmapfile #1#2}}
+\definespecial\doloadmapline #1#2{\special{x:fontmapline #1#2}}
+
+%D \XETEX\ supports \type{\doPDFdestination} and
+%D \type{\doPDFbookmark} inherited straight from \DVIPDFMX.
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \dodoinsertfile{xtx}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%
+ \egroup}
+
+\definefileinsertion{xtx}{jpg}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{png}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{gif}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{tif}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{pdf}{\xtxhandlepdfimage }
+
+\def\xtxhandleotherimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup % not needed, we load this under a normal catcode regime; \catcode`\"=11
+ \XeTeXpicfile "#1" width #7 height #8\relax%
+ \donetrue
+ \egroup}
+
+\def\xtxhandlepdfimage#1#2#3#4#5#6#7#8#9%
+ {\bgroup % not needed, we load this under a normal catcode regime; \catcode`\"=11
+ \checkpdfimagepagenumber{#9}
+ \XeTeXpdffile "#1" \pdfimagepagenumber\space width #7 height #8 \relax%
+ \donetrue
+ \egroup}
+
+\def\checkpdfimagepagenumber#1%
+ {\let\pdfimagepagenumber\empty
+ \getfromcommacommand[#1][1]%
+ \doifnumberelse\commalistelement
+ {\ifcase\commalistelement\else
+ \edef\pdfimagepagenumber{page \commalistelement}%
+ %\message{(pdf image \pdfimagepagenumber)}%
+ \fi}
+ {}}
+
+% \type{\getfiguredimensionsA} calls this one.
+% \type{\executedtrue} means it was able to get the desired
+% dogetfiguresizeBLAH method for the image type.
+% \type{\donetrue} means that the image was successfully
+% measured to be more than zero points.
+
+\def\dogetXTXfiguresize#1#2#3#4#5#6#7%
+ {#4\zeropoint
+ #5\zeropoint
+ \setbox\foundexternalfigure\vbox{\XeTeXpicfile "#2"}%
+ #6\wd\foundexternalfigure
+ #7\ht\foundexternalfigure
+ \ifdim\wd\foundexternalfigure=\zeropoint % \ifzeropt\wd\foundexternalfigure
+ #1{#2}{#3}{#4}{#5}{#6}{#7}%
+ \fi}
+
+\def\dogetXTXpdfsize#1#2#3#4#5#6#7%
+ {#4\zeropoint
+ #5\zeropoint
+ \checkpdfimagepagenumber{#3}
+ \setbox\foundexternalfigure\vbox{\XeTeXpdffile "#2" \pdfimagepagenumber}% \relax not needed
+ #6\wd\foundexternalfigure
+ #7\ht\foundexternalfigure
+ \ifdim\wd\foundexternalfigure=\zeropoint % \ifzeropt\wd\foundexternalfigure
+ #1{#2}{#3}{#4}{#5}{#6}{#7}%
+ \fi}
+
+\let\normaldogetfiguresizepng=\dogetfiguresizepng
+\let\normaldogetfiguresizetif=\dogetfiguresizetif
+\let\normaldogetfiguresizejpg=\dogetfiguresizejpg
+\let\normaldogetfiguresizegif=\dogetfiguresizegif
+\let\normaldogetfiguresizepdf=\dogetfiguresizepdf
+
+\def\dogetfiguresizepng{\dogetXTXfiguresize\normaldogetfiguresizepng}
+\def\dogetfiguresizejpg{\dogetXTXfiguresize\normaldogetfiguresizejpg}
+\def\dogetfiguresizegif{\dogetXTXfiguresize\normaldogetfiguresizegif}
+\def\dogetfiguresizetif{\dogetXTXfiguresize\normaldogetfiguresizetif}
+\def\dogetfiguresizepdf{\dogetXTXpdfsize\normaldogetfiguresizepdf}
+
+\appendtoksonce
+ \let\dogetfiguresizepng\normaldogetfiguresizepng
+ \let\dogetfiguresizetif\normaldogetfiguresizetif
+ \let\dogetfiguresizejpg\normaldogetfiguresizejpg
+ \let\dogetfiguresizegif\normaldogetfiguresizegif
+ \let\dogetfiguresizepdf\normaldogetfiguresizepdf
+\to \everyresetspecials
+
+%D The figure object system caused no end of headaches. They all
+%D went away with this single line:
+
+\setupexternalfigures[\c!object=\v!no]
+
+\stopspecials
+
+\protect
+
+%\endinput
+
+% FOR THE MOMENT HERE
+
+\ifx\dqfontquote\undefined \else \endinput \fi
+
+\unprotect
+
+% actually, we can use "" in pdftex> 1.20 as well
+
+\def\parsefontspec#1%
+ {\xdef\somefontspec{#1\space}%
+ \@EA\doparsefontspec\somefontspec\relax]% =>#1 \empty]
+ \donoparsefontspec}
+
+\def\doparsefontspec#1%
+ {\ifx"#1%
+ \@EA\dodqparsefontspec
+ \else\ifx'#1%
+ \@EAEAEA\dosqparsefontspec
+ \else
+ \@EAEAEA\dodoparsefontspec
+ \fi\fi#1}
+
+\def\dqfontquote{"}
+\def\sqfontquote{'}
+
+\def\dodqparsefontspec"#1"#2%
+ {\def\somefontname{#1}%
+ \let\somefontquote\dqfontquote
+ \ifx#2\relax\@EA\setnaturalfontspec\else\@EA\setforcedfontspec\fi#2}
+
+\def\dosqparsefontspec'#1'#2%
+ {\def\somefontname{#1}%
+ \let\somefontquote\sqfontquote
+ \ifx#2\relax\@EA\setnaturalfontspec\else\@EA\setforcedfontspec\fi#2}
+
+\def\dodoparsefontspec#1 #2%
+ {\def\somefontname{#1}%
+ \let\somefontquote\empty
+ \ifx\somefontname\empty % space before fontname
+ \@EA\doparsefontspec
+ \else\ifx#2\relax
+ \@EAEAEA\setnaturalfontspec
+ \else
+ \@EAEAEA\setforcedfontspec
+ \fi\fi
+ #2}
+
+\def\setnaturalfontspec#1]%
+ {\@fs@scaled\plusthousand\relax}
+
+\def\setforcedfontspec#1 #2\relax]%
+ {\csname\@fs@#1\endcsname#2\relax}
+
+\beginXETEX \font
+
+\def\donoparsefontspec % #1 == \cs
+ {\edef\fontfile{\somefontquote\truefontname\somefontname\somefontquote}%
+ \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi
+ \edef\lastfontname{\fontfile\somefontspec}%
+ \ifx\fontclass\empty
+ \expandafter\definefontlocal
+ \else
+ \expandafter\definefontglobal
+ \fi} % #1 == \cs
+
+\endXETEX
+
+\protect \endinput
+
+\starttext
+
+\definedfont[{cmr10} at 40pt] test
+\definedfont['cmss10' at 40pt] test
+\definedfont["cmtt10" at 40pt] test
+
+\definedfont[{cmr10} at 40pt] test
+\definedfont['cmss10' at 40pt] test
+\definedfont["cmtt10" at 40pt] test
+
+% \definedfont["Gentium" at 40pt] test
+
+\stoptext
+
diff --git a/Master/texmf-dist/tex/context/base/spec-yy.tex b/Master/texmf-dist/tex/context/base/spec-yy.tex
new file mode 100644
index 00000000000..9d09b6e35b3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-yy.tex
@@ -0,0 +1,75 @@
+%D \module
+%D [ file=spec-yy,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=\YandY's \DVIPSONE\ and \DVIWINDO,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D \macros
+%D {dostartgraymode,dostopgraymode,
+%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode,dostopcolormode,
+%D doinsertfile}
+%D
+%D We implement a nice and simple figure||insertion special
+%D and make use of \YandY's color specials. Otherwise \DVIWINDO\
+%D would not show colors.
+
+\startspecials[yandy]
+
+\def\@@insertpostscriptliteral {ps: }
+\def\@@insertpostscriptretain {" } % this was: {postscript}
+
+\definespecial\dostartgraymode#1%
+ {\special{color gray #1}}
+
+\definespecial\dostopgraymode%
+ {\special{color gray 0}}
+
+\definespecial\dostartrgbcolormode#1#2#3%
+ {\special{color rgb #1 #2 #3}}
+
+\definespecial\dostartcmykcolormode#1#2#3#4%
+ {\special{color cmyk #1 #2 #3 #4}}
+
+\definespecial\dostartgraycolormode#1%
+ {\special{color gray #1}}
+
+\definespecial\dostopcolormode%
+ {\special{color gray 0}}
+
+\definefileinsertion{yy}{eps}#1#2#3#4#5#6#7#8#9%
+ {\PointsToBigPoints{#5}\width
+ \PointsToBigPoints{#6}\height
+ \special
+ {psfile=#1
+ hscale=#3\space
+ vscale=#4\space
+ hoffset=\width \space
+ voffset=\height}}
+
+\definefileinsertion{yy}{mps}#1#2#3#4#5#6#7#8#9%
+ {\hbox
+ {\includeMPfonts{#1}%
+ \convertMPcolors{#1}%
+ \dofileinsertion{yy}{eps}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}}}
+
+\definefileinsertion{yy}{tif}#1#2#3#4#5#6#7#8#9%
+ {\special{insertimage: #1 #7 #8}}
+
+\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9%
+ {\bgroup
+ \dodoinsertfile{yy}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}%
+ \egroup}
+
+\def\MPprologues{2}
+\def\MPOSTdriver{dvipsone}
+
+\stopspecials
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-ali.tex b/Master/texmf-dist/tex/context/base/supp-ali.tex
new file mode 100644
index 00000000000..3dc8848a39a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-ali.tex
@@ -0,0 +1,174 @@
+%D \module
+%D [ file=supp-ali,
+%D version=2000.04.17,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Alignment,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Yet undocumented.
+
+% 0 = centered
+% 1 = left in before
+% 2 = right in before
+% 3 = left in after
+% 4 = right in after
+
+\unprotect
+
+% \starttabulate[|cg{.}|cg{,}|cg{,}|]
+% \NC period \NC comma \NC comma \NC\NR
+% \NG 100.000,00 \NG 100.000,00 \NG 100,00 \NC\NR
+% \NG 10.000,00 \NG 10.000,00 \NG 1000,00 \NC\NR
+% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR
+% \NG 100,00 \NG 100,00 \NG 10,00 \NC\NR
+% \NG 10\\ \NG 10\\ \NG 0,00 \NC\NR
+% \NG 10 \NG 10 \NG 0,00 \NC\NR
+% \NG 10 \NG 10 \NG 0,00 \NC\NR
+% \stoptabulate
+
+\chardef\characteralignmentmode=4
+\chardef\characteralignmentslot=1
+
+\newtoks\@@characteralignlst
+
+\let\afterassignwidth \!!zeropoint
+\let\beforeassignwidth\!!zeropoint
+
+\def\alignmentcharacter{.}
+
+\let\alignmentclass\s!default % can be used to handle multiple mixed ones
+
+\def\setfirstpasscharacteralign
+ {\popcharacteralign
+ \expanded{\dosetfirstpasscharacteralign{\alignmentcharacter}}}
+
+\def\dosetfirstpasscharacteralign#1%
+ {\def\checkalignment##1%
+ {\popcharacteralign
+ \let\\\empty
+ \setbox\scratchbox\hbox{#1}%
+ \edef\characterassignwidth{\the\wd\scratchbox}%
+ \setbox\scratchbox\null
+ \docheckalignment##1#1\relax\relax
+ \scratchdimen-\wd\scratchbox
+ \setbox\scratchbox\hbox{\ignorespaces##1\unskip}%
+ \advance\scratchdimen \wd\scratchbox
+ \ifdim\scratchdimen>\beforeassignwidth\relax
+ \edef\beforeassignwidth{\the\scratchdimen}%
+ \fi
+ \ifdim\scratchdimen=\zeropoint
+ \setbox\scratchbox\hbox{\ignorespaces##1\unskip}%
+ \scratchdimen\wd\scratchbox
+ \ifcase\characteralignmentmode
+ % do nothing
+ \else\ifnum\characteralignmentmode<\plusthree
+ \advance\scratchdimen \characterassignwidth
+ \ifdim\scratchdimen>\beforeassignwidth\relax
+ \edef\beforeassignwidth{\the\scratchdimen}%
+ \fi
+ \else
+ \ifdim\scratchdimen>\afterassignwidth\relax
+ \edef\afterassignwidth{\the\scratchdimen}%
+ \fi
+ \fi\fi
+ \fi
+ \pushcharacteralign}%
+ \def\docheckalignment##1#1##2##3\relax
+ {\ifx##2\relax
+ \setbox\scratchbox\hbox{\ignorespaces##1\unskip}%
+ \ifdim\wd\scratchbox>\afterassignwidth
+ \edef\afterassignwidth{\the\wd\scratchbox}%
+ \fi
+ \else
+ \docheckalignment##2##3\relax\relax
+ \fi}}
+
+\def\setsecondpasscharacteralign
+ {\popcharacteralign
+ \expanded{\dosetsecondpasscharacteralign{\alignmentcharacter}}}
+
+\def\dosetsecondpasscharacteralign#1%
+ {\def\checkalignment##1%
+ {\popcharacteralign
+ \let\\\empty % beware, no grouping
+ \setbox\scratchbox\hbox{#1}%
+ \edef\characterassignwidth{\the\wd\scratchbox}%
+ \setbox\scratchbox\null
+ % new 12,34 vs 10\\ where 10 aligns on 12 if #1 = ,
+ \ifcase\characteralignmentslot
+ \docheckalignment##1#1\relax\relax
+ \scratchdimen\wd\scratchbox
+ \setbox\scratchbox\hbox{\ignorespaces##1\unskip}%
+ \else
+ \def\\{#1}%
+ \expanded{\docheckalignment##1#1\relax\relax}%
+ \scratchdimen\wd\scratchbox
+ \setbox\scratchbox\hbox{\def\\{\hphantom{#1}}\ignorespaces##1\unskip}%
+ \fi
+ \noindent
+ \ifdim\scratchdimen=\wd\scratchbox
+ \ifcase\characteralignmentmode
+ \box\scratchbox
+ \else
+ \hbox
+ {\dontcomplain
+ \hbox to \beforeassignwidth
+ {\ifcase\characteralignmentmode\or
+ \box\scratchbox\hss
+ \or
+ \hss\box\scratchbox\hskip\characterassignwidth
+ \or
+ \hss\rlap{\box\scratchbox}%
+ \or
+ \hss\rlap{\hbox to \afterassignwidth{\hss\box\scratchbox}}%
+ \fi}%
+ \hskip\afterassignwidth}%
+ \fi
+ \else
+ \hbox
+ {\hbox to \beforeassignwidth
+ {\hss\box\scratchbox\hskip-\scratchdimen}%
+ \hskip\afterassignwidth}%
+ \fi}%
+ \def\docheckalignment##1#1##2##3\relax
+ {\ifx##2\relax
+ \setbox\scratchbox\hbox{\ignorespaces##1\unskip}%
+ \else
+ \docheckalignment##2##3\relax\relax
+ \fi}}
+
+% provide a means to use multiple alignments mixed
+
+\def\pushcharacteralign
+ {\ifundefined{@cac@\alignmentclass}%
+ \doglobal
+ \appendetoks\noexpand\do{\alignmentclass}\to\@@characteralignlst
+ \fi
+ \setxvalue{@cac@\alignmentclass}{\noexpand\do
+ {\afterassignwidth}{\beforeassignwidth}{\alignmentcharacter}}}
+
+\def\popcharacteralign
+ {\def\do##1##2##3%
+ {\def\afterassignwidth {##1}%
+ \def\beforeassignwidth {##2}%
+ \def\alignmentcharacter{##3}}%
+ \executeifdefined{@cac@\alignmentclass}\donothing}
+
+\def\resetcharacteralign % does not work well nested
+ {\def\do##1{\letbeundefined{@cac@##1}}%
+ \the\@@characteralignlst
+ \global\@@characteralignlst\emptytoks}
+
+\long\def\startcharacteralign#1\stopcharacteralign
+ {\bgroup
+ \setfirstpasscharacteralign #1%
+ \setsecondpasscharacteralign#1%
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-box.tex b/Master/texmf-dist/tex/context/base/supp-box.tex
new file mode 100644
index 00000000000..4b451a6bfab
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-box.tex
@@ -0,0 +1,2939 @@
+%D \module
+%D [ file=supp-box,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Boxes,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module implements some box manipulation macros. Some
+%D are quite simple, some are more advanced and when understood
+%D well, all can be of use.
+
+\writestatus{loading}{Context Support Macros / Boxes}
+
+\unprotect
+
+% watch this: \setbox4\emptybox \wd4\onepoint \the\wd4, no dimensions for void
+
+%D First a couple of hacks to make this module loadable
+%D in plain \TEX.
+
+\ifx\myalloc@\undefined % seems like we're not in context
+ \def\newbox{\alloc@4\box\chardef\insc@unt}
+\fi
+
+\ifx \scratchbox\undefined \newbox \scratchbox \fi
+\ifx\globalscratchbox\undefined \newbox\globalscratchbox \fi
+
+\ifx\normalhbox \undefined \let\normalhbox \hbox \fi
+\ifx\normalvbox \undefined \let\normalvbox \vbox \fi
+\ifx\normalvtop \undefined \let\normalvtop \vtop \fi
+\ifx\normalvcenter\undefined \let\normalvcenter\vcenter \fi
+
+%D \macros
+%D {strutdp,strutht,strutwd}
+%D
+%D The next shortcuts save memory and keying. The width is
+%D normally zero points (if not, you're in trouble). These
+%D shortcuts can be used like a dimension, opposite to the
+%D core macros \type {\strutdepth} and alike, which are
+%D values.
+
+\def\strutdp{\dp\strutbox}
+\def\strutht{\ht\strutbox}
+\def\strutwd{\wd\strutbox}
+
+%D \macros
+%D {resetbox, emptybox}
+%D
+%D Let's start with an easy one. The next macro hides the
+%D ugly \type {@} in \type {\voidb@x}.
+
+\def\emptybox {\box\voidb@x}
+\def\resetbox#1{\setbox#1\box\voidb@x}
+
+%D \macros
+%D {nextdepth}
+%D
+%D Let's start with a rather simple declaration. Sometimes we
+%D need to save the \TEX\ \DIMENSION\ \type{\prevdepth} and
+%D append it later on. The name \type{\nextdepth} suits
+%D this purpose well.
+
+\newdimen\nextdepth
+
+%D \macros
+%D {smashbox, smashedbox}
+%D
+%D Smashing is introduced in \PLAIN\ \TEX, and stands for
+%D reducing the dimensions of a box to zero. The most resolute
+%D one is presented first.
+
+\def\smashbox#1%
+ {\wd#1\zeropoint
+ \ht#1\zeropoint
+ \dp#1\zeropoint}
+
+\def\smashboxed#1%
+ {\smashbox{#1}%
+ \box#1\relax}
+
+%D \macros
+%D {hsmashbox,vsmashbox}
+%D
+%D Smashing can be used for overlaying boxes. Depending on
+%D the mode, horizontal or vertical, one can use:
+
+\def\hsmashbox#1%
+ {\wd#1\zeropoint}
+
+\def\vsmashbox#1%
+ {\ht#1\zeropoint
+ \dp#1\zeropoint}
+
+%D The next implementation is less sensitive for spurious
+%D spaces.
+
+\newcount\registercount
+
+\def\smashbox
+ {\afterassignment\dosmashbox\registercount}
+
+\def\dosmashbox
+ {\wd\registercount\zeropoint
+ \ht\registercount\zeropoint
+ \dp\registercount\zeropoint}
+
+\def\smashedbox
+ {\afterassignment\thesmashedbox\registercount}
+
+\def\thesmashedbox
+ {\dosmashbox
+ \box\registercount}
+
+\def\hsmashbox
+ {\afterassignment\dohsmashbox\registercount}
+
+\def\dohsmashbox
+ {\wd\registercount\zeropoint}
+
+\def\vsmashbox
+ {\afterassignment\dovsmashbox\registercount}
+
+\def\dovsmashbox
+ {\ht\registercount\zeropoint
+ \dp\registercount\zeropoint}
+
+%D \macros
+%D {hsmash,vsmash,
+%D hsmashed,vsmashed}
+%D
+%D While the previous macros expected a \BOX, the next act on a
+%D content. They are some subtle differences betreen the smash
+%D and smashed alternatives. The later ones reduce all
+%D dimensions to zero.
+
+% Ok, but inefficient and/or catcode unsafe:
+%
+% \def\hsmash #1{\bgroup\setbox0=\normalhbox{#1}\hsmashbox0\box0\egroup}
+% \def\vsmash #1{\bgroup\setbox0=\normalvbox{#1}\vsmashbox0\box0\egroup}
+% \def\hsmashed#1{\bgroup\setbox0=\normalhbox{#1}\smashbox 0\box0\egroup}
+% \def\vsmashed#1{\bgroup\setbox0=\normalvbox{#1}\smashbox 0\box0\egroup}
+%
+% Better, but a waste of tokens:
+%
+% \def\hsmash {\bgroup\dowithnextbox{\hsmashbox\nextbox\flushnextbox\egroup}\normalhbox}
+% \def\vsmash {\bgroup\dowithnextbox{\vsmashbox\nextbox\flushnextbox\nextbox\egroup}\normalvbox}
+% \def\hsmashed{\bgroup\dowithnextbox{\smashbox \nextbox\flushnextbox\nextbox\egroup}\normalhbox}
+% \def\vsmashed{\bgroup\dowithnextbox{\smashbox \nextbox\flushnextbox\nextbox\egroup}\normalvbox}
+%
+% The best:
+
+\def\dosomesmash#1% (begin|end)group ipv (b|e)group ?
+ {\bgroup\dowithnextbox{#1\nextbox\flushnextbox\egroup}}
+
+\def\hsmash {\dosomesmash\hsmashbox\normalhbox}
+\def\vsmash {\dosomesmash\vsmashbox\normalvbox}
+\def\hsmashed{\dosomesmash\smashbox \normalhbox}
+\def\vsmashed{\dosomesmash\smashbox \normalvbox}
+
+%D \macros
+%D {smashedhbox,smashedvbox}
+%D
+%D Also handy (all dimensions zeroed):
+%D
+%D \starttyping
+%D \smashedhbox to ... {...}
+%D \smashedvbox to ... {...}
+%D \stoptyping
+
+\def\dosmashedbox#1%
+ %{#1\bgroup\dowithnextbox{\smashbox\nextbox\flushnextbox\egroup}#1}
+ {#1\bgroup\dowithnextbox{\smashedbox\nextbox\egroup}#1}
+
+\def\smashedhbox{\dosmashedbox\hbox}
+\def\smashedvbox{\dosmashedbox\vbox}
+
+%D \macros
+%D {smash}
+%D
+%D This smash alternative takes an optional arg [whdtb] as
+%D well as is potentially catcode safer. It is needed by the
+%D math module (although the \type {\leavevmode} is not added
+%D here).
+
+\def\smash
+ {\futurelet\nexttoken\dosmash}
+
+\def\dosmash
+ {\ifx\nexttoken[\@EA\dodosmash\else\@EA\donosmash\fi}
+
+\def\donosmash
+ {\dodosmash[hd]}
+
+\def\dodosmash[#1]%
+ {\edef\@@smash{#1}\futurelet\nexttoken\dododosmash}
+
+\def\dododosmash % if needed we can avoid the \next
+ {\ifmmode
+ \def\next##1{\mathpalette\mathsm@sh{##1}}%
+ \else\ifx\nexttoken\bgroup
+ \let\next\finsm@sh
+ \else
+ \def\next##1{\finsm@sh{##1}}%
+ \fi\fi
+ \next}
+
+\def\mathsm@sh#1#2% redefined plain macro
+ {\finsm@sh{$\m@th#1{#2}$}}
+
+\def\makesm@sh#1% redefined plain macro (handles t b h d w)
+ {\if#1w\nextboxwd\zeropoint\else
+ \if#1h\nextboxht\zeropoint\else
+ \if#1d\nextboxdp\zeropoint\else
+ \if#1t\nextboxht\zeropoint\else
+ \if#1b\nextboxdp\zeropoint\fi\fi\fi\fi\fi}
+
+\def\finsm@sh % redefined plain macro
+ {\dowithnextbox
+ {\@EA\handletokens\@@smash\with\makesm@sh\flushnextbox}\normalhbox}
+
+%D \starttabulate[|l|l|]
+%D \NC w \NC \ruledhbox{\smash [w]{This is some great smashing, isn't it?}} \NC \NR
+%D \NC h \NC \ruledhbox{\smash [h]{This is some great smashing, isn't it?}} \NC \NR
+%D \NC d \NC \ruledhbox{\smash [d]{This is some great smashing, isn't it?}} \NC \NR
+%D \NC tb \NC \ruledhbox{\smash [tb]{This is some great smashing, isn't it?}} \NC \NR
+%D \NC whd \NC \ruledhbox{\smash[whd]{This is some great smashing, isn't it?}} \NC \NR
+%D \stoptabulate
+
+%D \macros
+%D {phantom, hphantom, vphantom, mathstrut}
+%D
+%D The next implementation of \type {\phantom} cum suis does
+%D not grab an argument in the non||math case, which is better.
+
+\def\phantom {\ph@nt\nextbox\nextbox\nextbox}
+\def\vphantom{\ph@nt\nextbox\nextbox\voidb@x}
+\def\hphantom{\ph@nt\voidb@x\voidb@x\nextbox}
+
+%D Due to a complicated call to \type {\mathpallete} and
+%D thereby \type {\mathchoice}, the next macro looks ugly.
+%D We also take care of non||braced arguments.
+
+\def\ph@nt#1#2#3%
+ {\def\doph@nt
+ {\ifmmode
+ \def\mathph@nt####1####2{\makeph@nt#1#2#3{$\m@th####1{####2}$}}%
+ \def\nextph@nt{\mathpalette\mathph@nt}%
+ \else\ifx\nextph@nt\bgroup
+ \def\nextph@nt{\makeph@nt#1#2#3}%
+ \else
+ \def\nextph@nt####1{\makeph@nt#1#2#3{####1}}%
+ \fi\fi
+ \nextph@nt}%
+ \futurelet\nextph@nt\doph@nt}
+
+\def\makeph@nt#1#2#3%
+ {\begingroup % why no \bgroup
+ \dowithnextbox
+ {\setbox\scratchbox\null
+ \ht\scratchbox\ht#1\dp\scratchbox\dp#2\wd\scratchbox\wd#3%
+ \box\scratchbox
+ \endgroup}
+ \normalhbox}
+
+% used in table
+%
+% \let\ifv@\undefined \let\v@true\undefined \let\v@false\undefined
+% \let\ifh@\undefined \let\h@true\undefined \let\h@false\undefined
+
+\let\finph@nt\undefined
+
+%D We also define plain's \type {\mathstrut}.
+
+\def\mathstrut{\vphantom{(}}
+
+%D \macros
+%D {getboxheight}
+%D
+%D Although often needed, \TEX\ does not support arithmics
+%D like:
+%D
+%D \starttyping
+%D \dimen0 = \ht0 + \dp0
+%D \stoptyping
+%D
+%D so we implemented:
+%D
+%D \starttyping
+%D \getboxheight ... \of \box...
+%D \stoptyping
+%D
+%D For instance,
+%D
+%D \starttyping
+%D \getboxheight \dimen0 \of \box0
+%D \getboxheight \someheight \of \box \tempbox
+%D \stoptyping
+%D
+%D The implementation is rather stupid:
+%D
+%D \starttyping
+%D \def\getboxheight#1\of#2\box#3%
+%D {#1\ht#3\advance#1\dp#3\relax}
+%D \stoptyping
+%D
+%D The next alternative is slightly more clever, since
+%D it accepts \type {{12}} as well as \type {12} as box
+%D number.
+
+\def\getboxheight#1\of#2\box#3%
+ {\def\next{#1\ht\registercount\advance#1\dp\registercount}%
+ \afterassignment\next\registercount=#3}
+
+%D For a long time the following three macros were part of
+%D the grid snapping core module, but it makes more sense to
+%D have them here so that users can see them.
+%D
+%D \macros
+%D {getnoflines, getroundednoflines, getrawnoflines}
+%D
+%D Het commando \type{\getnoflines} converteert een hoogte
+%D (dimensie) in een aantal regels en kent dit toe aan
+%D \type{\noflines}.
+%D
+%D \starttyping
+%D \getnoflines{dimensie}
+%D \stoptyping
+%D
+%D Er wordt gedeeld door \type{\openlineheight} en een hoogte
+%D van~0pt komt overeen met 0~regels. The raw alternative
+%D does not round.
+
+%D For a long time we had:
+%D
+%D \starttyping
+%D \newcount\noflines
+%D \newdimen\noflinesheight
+%D
+%D \def\dogetnoflines#1#2%
+%D {\noflinesheight#2\relax
+%D \ifzeropt\noflinesheight % \ifdim\noflinesheight=\zeropoint
+%D \noflines\zerocount
+%D \else
+%D \divide\noflinesheight \openlineheight
+%D \noflines\noflinesheight
+%D #1\ifdim\noflines\openlineheight=#2\relax \else
+%D \advance\noflines\ifdim#2>\zeropoint\plusone\else\minusone\fi
+%D \fi\fi
+%D \fi}
+%D
+%D \def\getnoflines {\dogetnoflines\iftrue } % compensated
+%D \def\getrawnoflines{\dogetnoflines\iffalse} % no compensation
+%D \stoptyping
+%D
+%D A more recent variant is:
+
+\ifx\roundingeps\undefined \newdimen\roundingeps \roundingeps=10sp \fi
+
+\newcount\noflines
+\newdimen\noflinesheight
+
+\def\getnoflines {\xdogetnoflines\plusone } % compensated
+\def\getroundednoflines{\xdogetnoflines\plustwo } % rounded
+\def\getrawnoflines {\xdogetnoflines\plusthree} % truncated
+
+\def\xdogetnoflines#1#2%
+ {\noflinesheight#2\relax
+ \ifzeropt\noflinesheight
+ \noflines\zerocount
+ \else\ifdim#2>\zeropoint
+ \ifcase#1\or
+ \advance\noflinesheight-\roundingeps
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \advance\noflines\plusone
+ \or
+ \advance\noflinesheight\roundingeps
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \or
+ \advance\noflinesheight\roundingeps
+ \advance\noflinesheight.5\openlineheight
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \fi
+ \else
+ \ifcase#1\or
+ \advance\noflinesheight\roundingeps
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \advance\noflines\minusone
+ \or
+ \advance\noflinesheight-\roundingeps
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \or
+ \advance\noflinesheight-\roundingeps
+ \advance\noflinesheight-.5\openlineheight
+ \divide\noflinesheight\openlineheight
+ \noflines\noflinesheight
+ \fi
+ \fi\fi}
+
+%D Let's proof that it works:
+%D
+%D \startbuffer
+%D \scratchdimen\dimexpr(3pt) \getnoflines\scratchdimen 1=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight) \getnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.1\lineheight) \getnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.5\lineheight) \getnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.9\lineheight) \getnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight+3pt) \getnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight+3sp) \getnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight-3sp) \getnoflines\scratchdimen 10=\the\noflines \endgraf
+%D
+%D \scratchdimen\dimexpr(3pt) \getrawnoflines\scratchdimen 0=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight) \getrawnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.1\lineheight) \getrawnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.5\lineheight) \getrawnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10.9\lineheight) \getrawnoflines\scratchdimen 11=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight+3pt) \getrawnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight+3sp) \getrawnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \scratchdimen\dimexpr(10\lineheight-3sp) \getrawnoflines\scratchdimen 10=\the\noflines \endgraf
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+%D \macros
+%D {determinenoflines}
+%D
+%D The next macro determines the number of lines and
+%D returns it it \type {\noflines}. The macro works
+%D reasonable well as long as the content can be unboxed.
+%D
+%D \starttyping
+%D \determinenoflines{test\\test}
+%D \determinenoflines{\bfd test\\test}
+%D \determinenoflines{\definedfont[Sans at 40pt]test\\test}
+%D \stoptyping
+
+\def\determinenoflines
+ {\bgroup
+ \forgetall
+ \let\crlf\endgraf
+ \let\\\endgraf
+ \dowithnextbox
+ {\beginofshapebox
+ \unvbox\nextbox
+ \endofshapebox
+ \global\count1\zerocount
+ \reshapebox{\global\advance\count1\plusone}%
+ \egroup\noflines\count1 }%
+ \vbox}
+
+%D \macros
+%D {doiftextelse, doiftext}
+%D
+%D When \type {\doifelse} cum suis hopelessly fail, for
+%D instance because we pass data, we can fall back on the next
+%D macro:
+%D
+%D \starttyping
+%D \doiftextelse {data} {then branch} {else branch}
+%D \doiftext {data} {then branch}
+%D \stoptyping
+
+%\def\doiftextelse#1#2#3%
+% {\bgroup
+% \setbox0=\normalhbox{#1}%
+% \ifdim\wd0>\zeropoint
+% \egroup#2%
+% \else
+% \egroup#3%
+% \fi}
+
+% \def\doiftextelse#1%
+% {\bgroup
+% \setbox0\normalhbox{#1}%
+% \ifdim\wd0>\zeropoint
+% \egroup\@EA\firstoftwoarguments
+% \else
+% \egroup\@EA\secondoftwoarguments
+% \fi}
+
+\def\doiftextelse#1%
+ {\bgroup
+ \setbox0\normalhbox{\ignorespaces#1\removeunwantedspaces}%
+ \ifdim\wd0>\zeropoint
+ \egroup\@EA\firstoftwoarguments
+ \else
+ \egroup\@EA\secondoftwoarguments
+ \fi}
+
+\def\doiftext#1#2%
+ {\doiftextelse{#1}{#2}\donothing}
+
+%D \macros
+%D {dowithnextbox,nextbox}
+%D
+%D Sometimes we want a macro to grab a box and do something
+%D on the content. One could pass an argument to a box, but
+%D this can violate the specific \CATCODES\ of its content and
+%D leads to unexpected results. The next macro treats the
+%D following braced text as the content of a box and
+%D manipulates it afterwards in a predefined way.
+%D
+%D The first argument specifies what to do with the content.
+%D This content is available in \type{\nextbox}. The second
+%D argument is one of \type{\hbox}, \type{\vbox} or
+%D \type{\vtop}. The third argument must be grouped with
+%D \type{\bgroup} and \type{\egroup}, \type{{...}} or can be
+%D a \type{\box} specification.
+%D
+%D In \CONTEXT\ this macro is used for picking up a box and
+%D treating it according to earlier specifications. We use for
+%D instance something like:
+%D
+%D \starttyping
+%D \def\getfloat%
+%D {\def\handlefloat{...\flushnextbox...}
+%D \dowithnextbox\handlefloat\normalvbox}
+%D \stoptyping
+%D
+%D instead of:
+%D
+%D \starttyping
+%D \def\getfloat#1%
+%D {...#1...}
+%D \stoptyping
+%D
+%D In this implementation the \type{\aftergroup} construction
+%D is needed because \type{\afterassignment} is executed inside
+%D the box.
+
+\newbox\nextbox
+
+\long\def\dowithnextbox#1%
+ {\long\def\dodowithnextbox{#1}%
+ \afterassignment\dododowithnextbox
+ \setbox\nextbox}
+
+\def\dododowithnextbox
+ {\aftergroup\dodowithnextbox}
+
+%D So in fact we get:
+%D
+%D \starttyping
+%D \setbox\nextbox { \aftergroup\dodowithnextbox ... }
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D \setbox\nextbox { ... } \dodowithnextbox
+%D \stoptyping
+%D
+%D A slower but more versatile implementation is:
+%D
+%D \starttyping
+%D \long\def\dowithnextbox#1#2%
+%D {\long\def\dodowithnextbox{#1}%
+%D \ifx#2\normalhbox
+%D \afterassignment\dododowithnextbox
+%D \else\ifx#2\normalvbox
+%D \afterassignment\dododowithnextbox
+%D \else\ifx#2\normalvtop
+%D \afterassignment\dododowithnextbox
+%D \else\ifx#2\normalvcenter
+%D \afterassignment\dododowithnextbox
+%D \else
+%D \afterassignment\dodowithnextbox
+%D \fi\fi\fi\fi
+%D \setbox\nextbox#2}
+%D \stoptyping
+%D
+%D This alternative also accepts \type{\box0} and alike, but
+%D we don't really need this functionality now.
+
+%D \macros
+%D {nextboxht,nextboxwd,nextboxdp,flushnextbox}
+%D
+%D The next couple of shortcuts saves us memory as well as
+%D \type {{}}'s in passing parameters.
+
+\def\nextboxht{\ht\nextbox}
+\def\nextboxwd{\wd\nextbox}
+\def\nextboxdp{\dp\nextbox}
+
+\def\flushnextbox{\box\nextbox}
+
+%D \macros
+%D {dowithnextboxcontent}
+%D
+%D But, occasionally we do need to pass some local settings
+%D without wanting to use additional grouping. Therefore we
+%D provide:
+%D
+%D \starttyping
+%D \dowithnextboxcontent{inside}{after}{box content}
+%D \stoptyping
+%D
+%D {\em todo: Search source for potential usage!}
+
+\long\def\dowithnextboxcontent#1#2% inside, after
+ {\long\def\dodowithnextbox{#2}%
+ \def\dododowithnextbox{#1\aftergroup\dodowithnextbox}%
+ \afterassignment\dododowithnextbox
+ \setbox\nextbox}
+
+%D Now we can redefine \type {\dowithnextbox} as follows:
+%D
+%D \starttyping
+%D \def\dowithnextbox{\dowithnextboxcontent\empty}
+%D \stoptyping
+%D
+%D But since this macro is used often and since this implementation
+%D is slower, we will not use that definition.
+
+% maybe:
+%
+% depending on the size of the action, about 10% faster
+%
+% \newtoks\nextboxtoks
+%
+% \def\dowithnextbox {\afterassignment\redowithnextbox\nextboxtoks}
+% \def\redowithnextbox {\afterassignment\dododowithnextbox\setbox\nextbox}
+% \def\dododowithnextbox{\aftergroup\dodowithnextbox}
+% \def\dodowithnextbox {\the\nextboxtoks}
+%
+% \long\def\dowithnextboxcontent#1% #2% inside, after
+% {\def\dododowithnextbox{#1\aftergroup\dodowithnextbox}%
+% \afterassignment\redowithnextboxcontent\nextboxtoks}
+%
+% \def\redowithnextboxcontent
+% {\afterassignment\dododowithnextbox\setbox\nextbox}
+
+%D \macros
+%D {llap, rlap, tlap, blap, clap}
+%D
+%D Some well known friends, but we implement them our own
+%D way.
+
+\def\rlap{\begingroup\dowithnextbox{\normalhbox to \zeropoint
+ {\flushnextbox\normalhss}\endgroup}\normalhbox}
+
+\def\llap{\begingroup\dowithnextbox{\normalhbox to \zeropoint
+ {\normalhss\flushnextbox}\endgroup}\normalhbox}
+
+\def\clap{\begingroup\dowithnextbox{\normalhbox to \zeropoint
+ {\normalhss\flushnextbox\normalhss}\endgroup}\normalhbox}
+
+\def\tlap{\begingroup\dowithnextbox{\normalvbox to \zeropoint
+ {\normalvss\flushnextbox}\endgroup}\normalvbox}
+
+\def\blap{\begingroup\dowithnextbox{\normalvbox to \zeropoint
+ {\flushnextbox\normalvss}\endgroup}\normalvbox}
+
+%D \macros
+%D {beginofshapebox,
+%D reshapebox, doreshapebox,
+%D flushshapebox,
+%D innerflushshapebox,
+%D shapebox,
+%D ifreshapingbox}
+%D
+%D The next utility macro originates from some linenumbering
+%D mechanism. Due to \TEX's advanced way of typesetting
+%D paragraphs, it's not easy to do things on a line||by||line
+%D basis. This macro is able to reprocess a given box and can
+%D act upon its vertical boxed components, such as lines. The
+%D unwinding sequence in this macro is inspired by a \NTG\
+%D workshop of David Salomon in June 1992.
+%D
+%D First we have to grab the piece of text we want to act
+%D upon. This is done by means of the duo macros:
+%D
+%D \starttyping
+%D \beginofshapebox
+%D a piece of text
+%D \endofshapebox
+%D \stoptyping
+%D
+%D When all texts is collected, we can call \type{\reshapebox}
+%D and do something with it's vertical components. We can make
+%D as much passes as needed. When we're done, the box can be
+%D unloaded with \type{\flushshapebox}. The only condition in
+%D this scheme is that \type{\reshapebox} must somehow unload
+%D the \BOX\ \type{\shapebox}.
+%D
+%D An important aspect is that the content is unrolled
+%D bottom||up. The next example illustrates this maybe
+%D unexpected characteristic.
+%D
+%D \startbuffer
+%D \beginofshapebox
+%D \em \input tufte
+%D \endofshapebox
+%D
+%D \newcounter\LineNumber
+%D
+%D \reshapebox
+%D {\doglobal\increment\LineNumber
+%D \normalhbox{\llap{\LineNumber\hskip2em}\box\shapebox}}
+%D
+%D \flushshapebox
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D As we can see, when some kind of numbering is done, we have
+%D to add a second pass.
+%D
+%D \startbuffer
+%D \newcounter\LineNumber
+%D \newcounter\NumberOfLines
+%D
+%D \reshapebox
+%D {\doglobal\increment\NumberOfLines
+%D \box\shapebox}
+%D
+%D \reshapebox
+%D {\doglobal\increment\LineNumber
+%D \normalhbox
+%D {\llap{\LineNumber\ (\NumberOfLines)\hskip2em}%
+%D \box\shapebox}%
+%D \doglobal\decrement\NumberOfLines}
+%D
+%D \flushshapebox
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D This example shows that the content of the box is still
+%D available after flushing. Another feature is that only the
+%D last reshaping counts. Multiple reshaping can be done by:
+%D
+%D \startbuffer
+%D \beginofshapebox
+%D \flushshapebox
+%D \endofshapebox
+%D
+%D \reshapebox
+%D {\doglobal\increment\LineNumber
+%D \normalhbox{\llap{$\star$\hskip1em}\box\shapebox}%
+%D \doglobal\decrement\NumberOfLines}
+%D
+%D \flushshapebox
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D The macros are surprisingly easy to follow and in fact
+%D introduce no new concepts. Nearly all books on \TEX\ show
+%D similar solutions for unwinding \BOXES.
+%D
+%D Some macros, like footnote ones, can be sensitive for
+%D reshaping, which can result in an endless loop. We
+%D therefore offer:
+%D
+%D \starttyping
+%D \ifreshapingbox
+%D \stoptyping
+%D
+%D Some \CONTEXT\ commands are protected this way. Anyhow,
+%D reshaping is aborted after 100 dead cycles.
+%D
+%D By the way, changing the height and depth of \BOX\
+%D \type{\shapebox} results in bad spacing. This means that
+%D for instance linenumbers etc. should be given zero height
+%D and depth before being lapped into the margin. The
+%D previous examples ignore this side effect, but beware!
+
+\newif \ifsomeshapeleft
+\newif \ifreshapingbox
+
+\newbox \shapebox
+\newcount \shapepenalty
+\newdimen \shapekern
+\newskip \shapeskip
+
+\newbox \newshapebox
+\newbox \oldshapebox
+
+\newcount \shapecounter
+
+\newevery \everyshapebox \relax
+
+\def\shapesignal{.12345678pt} % or 12345sp
+
+% todo: in etex lastnode
+
+\def\reshapebox#1%
+ {\doreshapebox
+ {#1}%
+ {\penalty\shapepenalty}%
+ {\kern \shapekern }%
+ {\vskip \shapeskip }}
+
+\newbox\tmpshapebox
+
+\def\doreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
+ {\ifzeropt\ht\oldshapebox % \ifdim\ht\oldshapebox=\zeropoint
+ \setbox\newshapebox\normalvbox{}%
+ \else
+ \setbox\newshapebox\normalvbox
+ {\unvcopy\oldshapebox
+ \resetbox\newshapebox
+ \shapecounter\zerocount
+ \doloop{\dodoreshapebox{#1}{#2}{#3}{#4}}}%
+ \setbox\newshapebox\box\tmpshapebox
+ \fi}
+
+\def\dodoreshapebox#1#2#3#4% \shapebox, \shapepenalty, \shapekern, \shapeskip
+ {\ifzeropt\lastskip % \ifdim\lastskip=\zeropoint\relax
+ \ifzeropt\lastkern % \ifdim\lastkern=\zeropoint\relax
+ \ifcase\lastpenalty % \ifnum\lastpenalty=\zerocount
+ \setbox\shapebox\lastbox
+ \ifvoid\shapebox
+ \unskip\unpenalty\unkern
+ \else
+ \ifdim\wd\shapebox=\shapesignal\relax
+ \exitloop
+ \else
+ \shapecounter\zerocount
+ \global\setbox\tmpshapebox\normalvbox{#1\unvbox\tmpshapebox}%
+ \fi
+ \fi
+ \else
+ \shapepenalty\lastpenalty
+ \global\setbox\tmpshapebox\normalvbox{#2\unvbox\tmpshapebox}%
+ \unpenalty
+ \fi
+ \else
+ \shapekern\lastkern
+ \global\setbox\tmpshapebox\normalvbox{#3\unvbox\tmpshapebox}%
+ \unkern
+ \fi
+ \else
+ \shapeskip\lastskip
+ \global\setbox\tmpshapebox\normalvbox{#4\unvbox\tmpshapebox}%
+ \unskip
+ \fi
+ \ifnum\shapecounter>100 % can be less
+ \message{<<forced exit from shapebox>>}%
+ \global\setbox\tmpshapebox\copy\oldshapebox
+ \exitloop
+ \else
+ \advance\shapecounter \plusone
+ \fi}
+
+\def\beginofshapebox
+ {\setbox\oldshapebox\normalvbox
+ \bgroup
+ \reshapingboxtrue
+ \the\everyshapebox
+ \normalhbox to \shapesignal{\strut\hss}% plus \strut
+ \prevdepth\strutdp} % never \nointerlineskip
+
+\def\endofshapebox
+ {\endgraf
+ \egroup}
+
+\let\beginshapebox=\beginofshapebox
+\let\endshapebox =\endofshapebox
+
+\def\flushshapebox
+ {\bgroup
+ \ifzeropt\ht\newshapebox % \ifdim\ht\newshapebox=\zeropoint
+ \else
+ % make \prevdepth legal
+ % \par before the next \vskip gives far worse results
+ \ifdim\parskip>\zeropoint\vskip\parskip\else\par\fi
+ % and take a look
+ \ifdim\prevdepth=-\thousandpoint
+ \prevdepth\zeropoint
+ \fi
+ \ifdim\prevdepth<\zeropoint\relax
+ % something like a line or a signal or ...
+ \donetrue
+ \else\ifinner
+ % not watertight and not ok
+ \donefalse
+ \else\ifdim\pagegoal=\maxdimen
+ \donetrue
+ \else
+ % give the previous line a normal depth
+ \donetrue
+ {\forgeteverypar\verticalstrut}\nobreak
+ \kern-\struttotal % geen \vskip
+ \kern-\parskip
+ % \vskip-\strutdp
+ \fi\fi\fi
+ \scratchdimen\dp\newshapebox
+ \unvbox\newshapebox
+ % \prevdepth=0pt and \dp\newshapebox depend on last line
+ \kern-\scratchdimen % ??
+ % now \prevdepth=0pt
+ \ifdone
+ \kern\strutdp
+ \prevdepth\strutdp
+ \fi
+ \fi
+ \egroup}
+
+%D In real inner situations we can use:
+%D
+%D \starttyping
+%D \flushinnershapebox
+%D \stoptyping
+%D
+%D This one is used in \type{\framed}.
+
+% The kern fails on for instance:
+%
+% \omlijnd[offset=0pt,hoogte=8mm,uitlijnen={rechts,laho}]{\bfa test}
+
+\def\innerflushshapebox
+ {\ifzeropt\ht\newshapebox \else % \ifdim\ht\newshapebox=\zeropoint\relax \else
+ \unvcopy\newshapebox\relax
+ % \kern-\dp\newshapebox\relax
+ \fi}
+
+%D For absolute control, one can use \type{\doreshapebox}
+%D directly. This macro takes four arguments, that take care
+%D of:
+%D
+%D \startitemize[n,packed]
+%D \item \type{\shapebox}
+%D \item \type{\shapepenalty}
+%D \item \type{\shapekern}
+%D \item \type{\shapeskip}
+%D \stopitemize
+
+%D \macros
+%D {shapedhbox}
+%D
+%D When constructing a new box, using the content of \type
+%D {\shapebox}, one can best use \type {\shapedhbox} instead
+%D of \type {\normalhbox}, since it manages the height and depth of
+%D the line.
+
+% \def\shapedhbox
+% {\dowithnextbox
+% {\nextboxht\zeropoint
+% \nextboxdp\zeropoint
+% \flushnextbox}
+% \normalhbox}
+
+\def\shapedhbox % lines with non strutted dimensions have
+ {\expanded{\dowithnextbox % interlineskip so if we want the original
+ {\nextboxht\the\ht\shapebox % spacing, we need to preserve the original
+ \nextboxdp\the\dp\shapebox % height and depth which is definitely
+ \noexpand\flushnextbox}} % needed if we apply struts to the 'new'
+ \normalhbox} % box or do something that changed ist size
+
+%D \macros
+%D {hyphenatedword,
+%D hyphenatedpar,
+%D hyphenatedfile,
+%D dohyphenateword}
+%D
+%D The next one is a tricky one. \PLAIN\ \TEX\ provides
+%D \type{\showhyphens} for showing macros on the terminal. When
+%D preparing a long list of words we decided to show the
+%D hyphens, but had to find out that the \PLAIN\ alternative
+%D can hardly be used and|/|or adapted to typesetting. The next
+%D two macros do the job and a little more.
+%D
+%D The simple command \type{\hyphenatedword} accepts one
+%D argument and gives the hyphenated word. This macro calls for
+%D
+%D \starttyping
+%D \dohyphenateword {n} {pre} {word}
+%D \stoptyping
+%D
+%D The next examples tell more than lots of words:
+%D
+%D \startbuffer
+%D \dohyphenateword{0} {} {dohyphenatedword}
+%D \dohyphenateword{1} {...} {dohyphenatedword}
+%D \dohyphenateword{2} {...} {dohyphenatedword}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here, \type{\hyphenatedword{dohyphenatedword}} is the
+%D shorter alternative for the first line.
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D These macros are slow but effective and not that hard to
+%D program at all.
+
+\ifx\scantokens\undefined \let\scantokens\firstofoneargument \fi
+
+\def\dohyphenateword#1#2#3%
+ {\bgroup
+ \setbox\scratchbox\normalhbox
+ {\dontcomplain
+ \nopenalties % \widowpenalty \clubpenalty \brokenpenalty \doublehyphendemerits \finalhyphendemerits \adjdemerits
+ \hyphenpenalty \zerocount
+ \exhyphenpenalty\zerocount
+ \setbox0\normalvbox
+ {\hsize\zeropoint
+ \hskip\zeropoint % really needed
+ \ifnum#1<\zeropoint
+ \obeyspaces
+ \obeylines
+ \def\obeyedspace{\hskip\zeropoint\hbox to \onepoint{}\hskip\zeropoint}%
+ \let\obeyedline \obeyedspace
+ \ifcase-#1\or
+ \def\next{#3}\scantokens\expandafter{\next}%
+ % also ok: \scantokens{#3}%
+ \or
+ \readfile{#3}\donothing\donothing
+ \else
+ #3%
+ \fi
+ \else
+ #3%
+ \fi}%
+ \ifnum#1>\zerocount
+ \dorecurse{#1}
+ {\setbox2\normalhbox
+ {\splittopskip\openstrutheight
+ \vsplit0 to \baselineskip}}%
+ #2%
+ \fi
+ \doloop
+ {\setbox2\normalhbox
+ {\splittopskip\openstrutheight
+ \vsplit0 to \baselineskip}%
+ \setbox2\normalhbox
+ {\unhbox2
+ \setbox2\lastbox
+ \normalvbox
+ {\unvbox2
+ \setbox2\lastbox
+ \normalhbox{\unhbox2}}}%
+ \ifnum#1<\zeropoint\ifdim\wd2=\onepoint\space\else\box2\allowbreak\fi\else\box2\fi
+ \ifzeropt\ht0 \exitloop\fi}% % \ifdim\ht0=\zeropoint\exitloop\fi}%
+ \removeunwantedspaces}%
+ \ifnum#1>\zerocount
+ \ht\scratchbox\strutht
+ \dp\scratchbox\strutdp
+ \box\scratchbox
+ \else
+ \unhbox\scratchbox
+ \fi
+ \egroup}
+
+\def\hyphenatedword{\dohyphenateword\zerocount\empty}
+\def\hyphenatedpar {\dohyphenateword\minusone \empty}
+\def\hyphenatedfile{\dohyphenateword{-2}\empty}
+
+%D You may want to give the following call a try:
+%D
+%D \starttyping
+%D \hyphenatedpar{\readfile{zapf}{}{}}\endgraf
+%D \stoptyping
+
+%D \macros
+%D {doboundtext}
+%D
+%D Sometimes there is not enough room to show the complete
+%D (line of) text. In such a situation we can strip of some
+%D characters by using \type{\doboundtext}. When the text is
+%D wider than the given width, it's split and the third
+%D argument is appended. When the text to be checked is packed
+%D in a command, we'll have to use \type{\expandafter}.
+%D
+%D \starttyping
+%D \doboundtext{a very, probably to long, text}{3cm}{...}
+%D \stoptyping
+%D
+%D When calculating the room needed, we take the width of the
+%D third argument into account, which leads to a bit more
+%D complex macro than needed at first sight.
+
+% \def\dodoboundtext#1%
+% {\setbox0=\normalhbox{\unhcopy0 #1}%
+% \ifdim\wd0>\dimen0
+% \let\dodoboundtext=\gobbleoneargument
+% \else
+% #1\relax
+% \fi}
+%
+% \def\doboundtext#1#2#3%
+% {\normalhbox
+% {\setbox0=\normalhbox{#1}%
+% \dimen0=#2\relax
+% \ifdim\wd0>\dimen0
+% \setbox2=\normalhbox{#3}%
+% \advance\dimen0 by -\wd2
+% \setbox0=\normalhbox{}%
+% \processtokens
+% {\dodoboundtext}
+% {\dodoboundtext}
+% {}
+% {\space}
+% {#1}%
+% \box2
+% \else
+% \box0
+% \fi}}
+
+\def\dodoboundtext#1%
+ {\setbox0\normalhbox{#1}%
+ \advance\scratchdimen -\wd0
+ \ifdim\scratchdimen>\zeropoint\relax#1\fi}%
+
+\def\doboundtext#1#2#3%
+ {\normalhbox
+ {\setbox\scratchbox\normalhbox{#1}%
+ \scratchdimen#2\relax
+ \ifdim\wd\scratchbox>\scratchdimen
+ \setbox\scratchbox\normalhbox{#3}%
+ \advance\scratchdimen -\wd\scratchbox
+ \handletokens#1\with\dodoboundtext
+ \fi
+ \box\scratchbox}}
+
+%D \macros
+%D {limitatetext}
+%D
+%D A bit more beautiful alternative for the previous command is
+%D the next one. This command is more robust because we let
+%D \TEX\ do most of the job. The previous command works better
+%D on text that cannot be hyphenated.
+%D
+%D \starttyping
+%D \limitatetext {text} {width} {sentinel}
+%D \limitatetext {text} {-width} {prelude}
+%D \stoptyping
+%D
+%D When no width is given, the whole text comes available. The
+%D sentinel is optional. This is about the third version.
+
+\ifx\fakecompoundhyphen\undefined \let\fakecompoundhyphen\relax \fi
+
+%D The simple alternative is as follows:
+%D
+%D \starttyping
+%D \unexpanded\def\limitatetext%
+%D {\bgroup % evt \setstrut
+%D \forgetall
+%D \fakecompoundhyphen % dangerous ! ! ! ! ! ! ! ! !
+%D \dowithnextbox\dolimitatetext\normalhbox}
+%D
+%D \def\dolimitatetext#1#2%
+%D {\doifelsenothing{#1}
+%D {\unhbox\nextbox}
+%D {\widowpenalty=0
+%D \clubpenalty=0
+%D \scratchdimen=#1\relax
+%D \ifdim\nextboxwd>\scratchdimen
+%D \setbox\scratchbox=\normalhbox{ #2}%
+%D \advance\scratchdimen by -\wd\scratchbox
+%D \setbox\nextbox=\normalvbox
+%D {\hsize=\scratchdimen
+%D \hfuzz\maxdimen
+%D \veryraggedright
+%D \strut\unhcopy\nextbox}%
+%D \ifdim\nextboxht>\strutht \else
+%D \setbox\scratchbox\null % overfull and not split
+%D \fi
+%D \setbox\nextbox=\normalvbox % if omitted: missing brace reported
+%D {\splittopskip=\openstrutheight
+%D \setbox\nextbox=\vsplit\nextbox to \strutht
+%D \unvbox\nextbox
+%D \setbox\nextbox=\lastbox
+%D \global\setbox1=\normalhbox
+%D {\unhbox\nextbox\unskip\kern\zeropoint\box\scratchbox\unskip}}%
+%D \unhbox1
+%D \else
+%D \unhbox\nextbox
+%D \fi}%
+%D \egroup}
+%D \stoptyping
+%D
+%D The next alternative accepts a negative width. A negative
+%D value crops the beginning. The macro thereby becomes less
+%D readable, which is why we kept the original here too.
+
+\unexpanded\def\limitatetext
+ {\bgroup % evt \setstrut
+ \forgetall % otherwise indentation and so
+ %\def\limitatetext##1##2##3{##1}% \def !
+ \let\limitatetext\firstofthreearguments
+ \fakecompoundhyphen % dangerous ! ! ! ! ! ! ! ! !
+ \dowithnextbox\dolimitatetext\normalhbox}
+
+\def\dolimitatetext#1#2%
+ {\doifelsenothing{#1}
+ {\unhbox\nextbox}
+ {\nopenalties
+ \scratchdimen#1\relax
+ \ifdim\scratchdimen<\zeropoint\relax % we'll take the last line
+ \donefalse
+ \scratchdimen-\scratchdimen
+ \else
+ \donetrue
+ \fi
+ \ifdim\nextboxwd>\scratchdimen
+ \setbox\scratchbox\normalhbox{\ifdone\space#2\else#2\space\fi}%
+ \advance\scratchdimen -\wd\scratchbox
+ \setbox0\flushnextbox
+ \setbox\nextbox\normalvbox
+ {\hsize\scratchdimen
+ \hfuzz\maxdimen
+ \veryraggedright
+ \strut
+ \ifdone \else
+ \parfillskip\zeropoint
+ \rightskip\zeropoint
+ \hskip\zeropoint \!!plus 1\!!fill % \hsize
+ \fi
+ \unhcopy0}%
+ \ifdim\nextboxht>\strutht
+ \setbox\nextbox\normalvbox % if omitted: missing brace reported
+ {\splittopskip\openstrutheight
+ \ifdone
+ \setbox\nextbox\vsplit\nextbox to \strutht
+ \else
+ \doloop
+ {\setbox0\vsplit\nextbox to \strutht
+ \ifdim\nextboxht>\strutht \else \exitloop \fi}%
+ \fi
+ \unvbox\nextbox
+ \setbox\nextbox\lastbox
+ \global\setbox1\normalhbox
+ {\ifdone
+ \unhbox\nextbox\unskip\kern\zeropoint\box\scratchbox
+ \else
+ \box\scratchbox\unhbox\nextbox
+ \fi
+ \unskip}}%
+ \unhbox1
+ \else
+ \unhbox0
+ \fi
+ \else
+ \unhbox\nextbox
+ \fi}%
+ \egroup}
+
+%D We can also limit a text with more control:
+%D
+%D \startbuffer
+%D \limitatetext {\input tufte } {2cm,5mm} {\unknown}
+%D \limitatetext {ton en hans} {2cm,5mm} {\unknown}
+%D \limitatetext {ton en hans zijn eikels} {2cm,5mm} {\unknown}
+%D \limitatetext {ton} {2cm,5mm} {\unknown}
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D We build this feature on top of the previous macro.
+
+\let\normallimitatetext\limitatetext
+
+\def\speciallimitatetext#1#2#3#4% text left right placeholder
+ {%\dontleavehmode
+ \bgroup
+ %\def\speciallimitatetext##1##2##3##4{##1}% \def !
+ \let\speciallimitatetext\firstoffourarguments
+ \setbox0\normalhbox
+ {\nohyphens
+ \normallimitatetext{#1}{+#2}{}#4%
+ \normallimitatetext{#1}{-#3}{}}%
+ \setbox2\normalhbox
+ {#1}%
+ \ifdim\wd2<\wd0 #1\else\unhbox0\fi
+ \egroup}
+
+\def\limitatetext#1#2#3% \expanded added 2003/01/16
+ {\expanded{\beforesplitstring#2}\at,\to\leftlimit
+ \expanded{\aftersplitstring #2}\at,\to\rightlimit
+ \ifx\rightlimit\empty
+ \normallimitatetext {#1}\leftlimit {#3}%
+ \else
+ \speciallimitatetext{#1}\leftlimit\rightlimit{#3}%
+ \fi}
+
+%D Undocumented bonus (see wiki):
+%D
+%D \starttyping
+%D \limitatefirstline{\input tufte\relax}{10cm}{\unknown}
+%D \stoptyping
+
+\def\limitatefirstline#1#2#3%
+ {\hbox\bgroup\strut
+ \setbox\scratchbox\hbox{\begstrut#1\endstrut}%
+ \ifdim\wd\scratchbox>#2\relax
+ \setbox\scratchbox\hbox{#3}%
+ \hsize#2\relax
+ \advance\hsize-\wd\scratchbox
+ \setbox\scratchbox\vbox{\forgetall\veryraggedright#1}%
+ \setbox\scratchbox\vsplit\scratchbox to \lineheight
+ \vbox
+ {\unvbox\scratchbox
+ \global\setbox\plusone\lastbox
+ \global\setbox\plusone\hbox{\strut\unhbox\plusone}%
+ \hbox % to #2
+ {\ifx\clip\undefined
+ \box\plusone
+ \else\ifdim\wd\plusone>\hsize
+ \lower\strutdepth\hbox{\clip[\c!width=\hsize,\c!height=\lineheight]{\hbox{\raise\strutdepth\box\plusone}}}%
+ \else
+ \box\plusone
+ \fi\fi
+ \removeunwantedspaces#3}}% \removeunwantedspaces\hss#3}}%
+ \else
+ #1%
+ \fi
+ \egroup}
+
+%D \macros
+%D {processisolatedwords,
+%D betweenisolatedwords,nothingbetweenisolatedwords}
+%D
+%D References are often made up of one word or a combination
+%D of tightly connected words. The typeset text {\bf
+%D chapter~5} is for instance the results of the character
+%D sequence:
+%D
+%D \starttyping
+%D The typeset text \in{chapter}[texniques] is for instance
+%D \stoptyping
+%D
+%D When such words are made active in interactive texts, the
+%D combination cannot longer be hyphenated. Normally this is no
+%D problem, because \TEX\ tries to prevent hyphenation as best
+%D as can.
+%D
+%D Sometimes however we need a few more words to make things
+%D clear, like when we want to refer to {\bf \TEX\ by Topic}.
+%D The macros that are responsible for typesetting hyperlinks,
+%D take care of such sub||sentences by breaking them up in
+%D words. Long ago we processed words using the space as a
+%D separator, but the more advanced our interactive text became,
+%D the more we needed a robust solution. Well, here it is and
+%D it called as:
+%D
+%D \starttyping
+%D \processisolatedwords{some words}\someaction
+%D \stoptyping
+%D
+%D The second argument \type{someactions} handles the
+%D individual words, like in:
+%D
+%D \startbuffer
+%D \processisolatedwords{some more words} \ruledhbox \par
+%D \processisolatedwords{and some $x + y = z$ math} \ruledhbox \par
+%D \processisolatedwords{and a \normalhbox{$x + y = z$}} \ruledhbox \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D which let the words turn up as:
+%D
+%D \startvoorbeeld
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D The macro has been made a bit more clever than needed at
+%D first sight. This is due to the fact that we don't want to
+%D generate more overhead in terms of interactive commands than
+%D needed.
+%D
+%D \startbuffer
+%D \processisolatedwords{see this \ruledhskip1em} \ruledhbox
+%D \processisolatedwords{and \ruledhskip1em this one} \ruledhbox
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D becomes:
+%D
+%D \startvoorbeeld
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D \stopvoorbeeld
+%D
+%D Single word arguments are treated without further
+%D processing. This was needed because this command is used in
+%D the \type{\goto} command, to which we sometimes pass very
+%D strange and|/|or complicated arguments or simply boxes
+%D whose dimensions are to be left intact.
+%D
+%D First we build a \type{\normalhbox}. This enables us to save the
+%D last skip. Next we fill a \type{\normalvbox} without hyphenating
+%D words. After we've tested if there is more than one word, we
+%D start processing the individual lines (words). We need some
+%D splitting, packing and unpacking to get the spacing and
+%D dimensions right.
+%D
+%D Normally the isolated words are separated by space, but
+%D one can overrule this separator by changing the next macros.
+%D
+%D When needed, spacing can be suppressed by \type
+%D {\nothingbetweenisolatedwords}.
+
+\newif\ifisolatedwords % public, e.g. used in core-ref
+
+\def\betweenisolatedwords
+ {\hskip\currentspaceskip}
+
+%D In order to prevent problems with nested isolated words, we
+%D do process them, but only split at the outermost level.
+
+\newskip\isolatedlastskip
+
+\chardef\isolatedwordsmode=0 % no nesting
+
+\def\processisolatedwords#1#2% todo: vbox ipv hbox ivm afbreken!
+ {\bgroup % todo: doloop
+ \fakecompoundhyphen
+ \dontcomplain
+ \forgetall
+ \nopenalties
+ \ifcase\isolatedwordsmode
+ \def\processisolatedwords##1##2{##2{##1}}% we split only once
+ \fi
+ \global\let\localbetweenisolatedwords\betweenisolatedwords
+ \setbox0\normalhbox % we default to spaces, but from inside out
+ {\ignorespaces#1% \localbetweenisolatedwords can be overruled
+ \global\isolatedlastskip\lastskip}%
+ \setbox2\normalvbox
+ {%\hyphenpenalty10000 % this one fails in \url breaking,
+ \lefthyphenmin\maxcard % but this trick works ok, due to them
+ \righthyphenmin\maxcard % total>63, when no hyphenation is done
+ \hsize\zeropoint
+ \unhcopy0}% == #1
+ \ifdim\ht0=\ht2
+ \isolatedwordsfalse
+ #2{\unhbox0}% == #2{#1} % was \unhcopy0
+ \else
+ \isolatedwordstrue
+ \setbox0\normalhbox
+ {\ignorespaces
+ \loop
+ \setbox4\normalhbox
+ {\splittopskip\openstrutheight
+ \vsplit2 to \baselineskip}%
+ \normalhbox
+ {\unhbox4\unskip % recently added
+ \setbox4\lastbox
+ \normalvbox % outer \normalhbox needed
+ {\unvbox4 % for nested use
+ \setbox4\lastbox
+ \normalhbox{#2{\normalhbox
+ {\unhbox4
+ \unskip\unpenalty % remove end of line stuff
+ \global\dimen1\lastkern}}}}}%
+ \ifdim\ht2>\zeropoint\relax
+ \ifdim\dimen1=\compoundbreakpoint
+ \allowbreak
+ \else
+ \localbetweenisolatedwords
+ \fi
+ \repeat
+ \unskip}%
+ \unhbox0\unskip
+ \ifzeropt\isolatedlastskip\else % added % \ifdim\isolatedlastskip=\zeropoint\else % added
+ \hskip\isolatedlastskip
+ \fi
+ \fi
+ \egroup}
+
+%D One can use the next macro to change the intersplit
+%D material. An example can be found in the \type {\url}
+%D macro. The innermost setting is used. In the url case, it
+%D means that either very small spaces are used or no spaces
+%D at all. So, the innermost settings are used, while the
+%D outermost split takes place.
+
+\def\setbetweenisolatedwords#1%
+ {\gdef\localbetweenisolatedwords{#1}}
+
+%D \macros
+%D {sbox}
+%D
+%D This is a rather strange command. It grabs some box content
+%D and and limits the size to the height and depth of a
+%D \type{\strut}. The resulting bottom||alligned box can be used
+%D aside other ones, without disturbing the normal baseline
+%D distance.
+%D
+%D \startbuffer
+%D \ruledhbox to .5\hsize{\sbox{eerste\par tweede \par derde}}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Shows up as:
+%D
+%D \startvoorbeeld
+%D \vskip3\baselineskip
+%D \getbuffer
+%D \stopvoorbeeld
+%D
+%D Before displaying the result we added some skip, otherwise
+%D the first two lines would have ended up in the text. This
+%D macro can be useful when building complicated menus, headers
+%D and footers and|/|or margin material.
+
+\def\sbox% in handleiding, voorbeeld \inleft{xx} \extern..
+ {\normalvbox\bgroup % new ! ! !
+ \dowithnextbox
+ {\setbox\scratchbox\normalhbox
+ {\strut
+ \nextboxdp\zeropoint
+ \lower\strutdepth\flushnextbox}%
+ \dp\scratchbox\strutdepth
+ \ht\scratchbox\strutheight
+ \box\scratchbox
+ \egroup}%
+ \normalvbox}
+
+%D \macros
+%D {struttedbox}
+%D
+%D This boxing macro limits the height and depth to those of
+%D a strut.
+
+\def\struttedbox
+ {\normalhbox\bgroup % new ! ! !
+ \dowithnextbox
+ {\nextboxdp\strutdepth
+ \nextboxht\strutheight
+ \flushnextbox
+ \egroup}%
+ \normalhbox}
+
+%D \macros
+%D {topskippedbox}
+%D
+%D This macro compensates the difference between the topskip
+%D and strutheight. Watch how we preserve the depth when it
+%D equals strutdepth.
+
+\def\topskippedbox
+ {\normalhbox\bgroup
+ \dowithnextbox
+ {\edef\next
+ {\ifdim\strutdepth=\nextboxdp\nextboxdp\the\nextboxdp\fi}%
+ \lower\topskip\normalhbox{\raise\strutheight\flushnextbox}%
+ \next
+ \egroup}%
+ \normalhbox}
+
+%D \macros
+%D {centeredbox, centerednextbox}
+%D
+%D Here is another strange one. This one offers a sort of overlay
+%D with positive or negative offsets. This command can be used
+%D in well defined areas where no offset options are available.
+%D We first used it when building a button inside the margin
+%D footer, where the button should have a horizontal offset and
+%D should be centered with respect to the surrounding box. The
+%D last of the three examples we show below says:
+%D
+%D \starttyping
+%D \vsize=3cm
+%D \hsize=3cm
+%D \ruledvbox to \vsize
+%D {\centeredbox height .5cm width -1cm
+%D {\vrule width \hsize height \vsize}}}
+%D \stoptyping
+%D
+%D Here the \type{\ruledvbox} just shows the surrounding box
+%D and \type{\vrule} is used to show the centered box.
+%D
+%D \def\AnExample#1#2%
+%D {\vsize=3cm
+%D \hsize=3cm
+%D \ruledvbox to \vsize
+%D {\centeredbox height #1 width #2
+%D {\color[green]{\vrule width \hsize height \vsize}}}}
+%D
+%D \startlinecorrection
+%D \startcombination[3*1]
+%D {\AnExample {-1cm} {.5cm}} {}
+%D {\AnExample {.5cm} {-1cm}} {}
+%D {\AnExample {-1cm} {-.5cm}} {}
+%D \stopcombination
+%D \stoplinecorrection
+%D
+%D This command takes two optional arguments: \type{width} and
+%D \type{height}. Observing readers can see that we use \TEX's
+%D own scanner for grabbing these arguments: \type{#1#} reads
+%D everyting till the next brace and passes it to both rules.
+%D The setting of the box dimensions at the end is needed for
+%D special cases. The dimensions of the surrounding box are kept
+%D intact. This commands handles positive and negative
+%D dimensions (which is why we need two boxes with rules).
+
+\def\centeredbox#1#% height +/-dimen width +/-dimen
+ {\bgroup
+ \setbox0\normalvbox to \vsize
+ \bgroup
+ \dontcomplain
+ \forgetall
+ \setbox0\normalhbox{\vrule\!!width \zeropoint#1}%
+ \setbox2\normalvbox{\hrule\!!height\zeropoint#1}%
+ \advance\vsize \ht2
+ \advance\hsize \wd0
+ \normalvbox to \vsize
+ \bgroup
+ \vskip-\ht2
+ \vss
+ \normalhbox to \hsize
+ \bgroup
+ \dowithnextbox
+ {\hskip-\wd0
+ \hss
+ \flushnextbox
+ \hss
+ \egroup
+ \vss
+ \egroup
+ \egroup
+ \wd0\hsize
+ \ht0\vsize
+ \box0
+ \egroup}
+ \normalhbox}
+
+%D For those who don't want to deal with \type {\hsize}
+%D and \type {\vsize}, we have:
+%D
+%D \starttyping
+%D \centerednextbox width 2bp height 2bp
+%D {\framed[width=100bp,height=100bp]{}}
+%D \stoptyping
+%D
+%D Do you see what we call this one \type {next}?
+
+\def\centerednextbox#1#%
+ {\bgroup
+ \dowithnextbox
+ {\hsize\nextboxwd
+ \vsize\nextboxht
+ \centeredbox#1{\flushnextbox}%
+ \egroup}
+ \normalhbox}
+
+%D \macros
+%D {centerbox}
+%D
+%D Centering on the available space is done by:
+%D
+%D \starttyping
+%D \centerbox <optional specs> {content}
+%D \stoptyping
+%D
+%D When omitted, the current \type {\hsize} and \type
+%D {\vsize} are used. Local dimensions are supported.
+
+\long\def\centerbox#1#% optional height +/-dimen width +/-dimen
+ {\bgroup
+ \dowithnextbox
+ {\setlocalhsize
+ \setbox0\normalhbox{\vrule\!!width \zeropoint#1}%
+ \setbox2\normalvbox{\hrule\!!height\zeropoint#1}%
+ \ifzeropt\wd0\else\hsize\wd0\fi % \hsize\ifdim\wd0=\zeropoint\hsize\else\wd0\fi
+ \ifzeropt\ht2\else\vsize\ht2\fi % \vsize\ifdim\ht2=\zeropoint\vsize\else\ht2\fi
+ \normalvbox to \vsize{\vss\normalhbox to \hsize{\hss\flushnextbox\hss}\vss}%
+ \egroup}%
+ \normalhbox}
+
+%D \macros
+%D {setrigidcolumnhsize,rigidcolumnbalance,rigidcolumnlines}
+%D
+%D These macros are copied from the \TEX book, page~397, and
+%D extended by a macro that sets the \type{\hsize}.
+%D
+%D \starttyping
+%D \setrigidcolumnhsize {total width} {distance} {n}
+%D \rigidcolumnbalance {box}
+%D \stoptyping
+%D
+%D Both these macros are for instance used in typesetting
+%D footnotes.
+%D
+%D Men kan het proces van breken enigzins beinvloeden met de
+%D volgende twee switches:
+
+\newif\ifalignrigidcolumns
+\newif\ifstretchrigidcolumns
+\newif\iftightrigidcolumns % if true: just a vbox, no depth/noflines/gridsnap corrrections
+
+%D De eerste switch bepaald het uitlijnen, de tweede rekt de
+%D individuele kolommen op naar \type{\vsize}.
+
+\def\setrigidcolumnhsize#1#2#3%
+ {\xdef\savedrigidhsize{\the\hsize}%
+ \hsize#1\relax
+ \global\chardef\rigidcolumns#3\relax
+ \scratchdimen -#2\relax
+ \multiply\scratchdimen #3\relax
+ \advance\scratchdimen #2\relax
+ \advance\hsize \scratchdimen
+ \divide\hsize #3\relax}
+
+\newbox\rigidcolumnbox
+
+\let\rigidcolumnlines\!!zerocount
+
+\def\rigidcolumnbalance#1%
+ {\ifnum\rigidcolumns=1 % tzt ook h/d correctie
+ \ifinner\ifhmode\box\else\unvbox\fi\else\unvbox\fi#1\relax
+ \else
+ \normalvbox
+ {\forgetall
+ \nopenalties
+ \dontcomplain
+ \setbox\rigidcolumnbox\normalvbox
+ {\line{}\goodbreak\unvbox#1\removebottomthings}%
+ \splittopskip\openstrutheight
+ \setbox\scratchbox\vsplit\rigidcolumnbox to \zeropoint
+ \ifcase\rigidcolumnlines\relax
+ % \iffalse
+ % % maybe some day an option
+ % \scratchskip\ht\rigidcolumnbox
+ % \advance\scratchskip\dp\rigidcolumnbox
+ % \getnoflines\scratchskip
+ % \ifodd\noflines
+ % \advance\noflines\plusone
+ % \fi
+ % \divide\noflines\rigidcolumns
+ %\else
+ \scratchdimen\ht\rigidcolumnbox
+ \divide\scratchdimen \rigidcolumns
+ \getnoflines\scratchdimen
+ %\fi
+ \else
+ \noflines\rigidcolumnlines % to be sure
+ \fi
+ \scratchdimen\noflines\lineheight
+ % new: we now loop so that we don't loose content
+ % since in practice we also use this macro for
+ % funny lineheights and border cases
+ \setbox0=\box\rigidcolumnbox
+ \doloop
+ {\setbox\rigidcolumnbox=\copy0
+ \setbox\scratchbox\normalhbox to \savedrigidhsize
+ {\dorecurse\rigidcolumns
+ {\setbox\scratchbox\vsplit\rigidcolumnbox to \scratchdimen
+ \dp\scratchbox\openstrutdepth
+ \setbox\scratchbox\normalvtop
+ \ifalignrigidcolumns to
+ \ifstretchrigidcolumns\vsize\else\scratchdimen\fi
+ \fi
+ {\unvbox\scratchbox}%
+ \wd\scratchbox\hsize
+ \box\scratchbox
+ \hfill}%
+ \hfillneg}%
+ \ifvoid\rigidcolumnbox\exitloop\else\advance\scratchdimen\lineheight\fi}%
+ \iftightrigidcolumns
+ \setbox\scratchbox\normalhbox{\raise\dp\scratchbox\box\scratchbox}%
+ \else
+ \advance\scratchdimen -\openstrutdepth
+ \setbox\scratchbox\normalhbox{\raise\scratchdimen\box\scratchbox}%
+ \dp\scratchbox\openstrutdepth
+ \ht\scratchbox\scratchdimen
+ \fi
+ \box\scratchbox}%
+ \fi}
+
+%D \macros
+%D {startvboxtohbox,stopvboxtohbox,convertvboxtohbox}
+%D
+%D Here is another of Knuth's dirty tricks, as presented on
+%D pages 398 and 399 of the \TEX book. These macros can be used
+%D like:
+%D
+%D \starttyping
+%D \normalvbox
+%D \bgroup
+%D \startvboxtohbox ... \stopvboxtohbox
+%D \startvboxtohbox ... \stopvboxtohbox
+%D \startvboxtohbox ... \stopvboxtohbox
+%D \egroup
+%D
+%D \normalvbox
+%D \bgroup
+%D \converthboxtovbox
+%D \egroup
+%D \stoptyping
+%D
+%D These macros are used in reformatting footnotes, so they do
+%D what they're meant for.
+
+\def\setvboxtohbox
+ {\bgroup
+ \ifdim\baselineskip<16pt \relax
+ \scratchdimen\baselineskip
+ \multiply\scratchdimen 1024
+ \else
+ \message{cropping \baselineskip to 16pt}%
+ \scratchdimen\maxdimen
+ \fi
+ \divide\scratchdimen \hsize
+ \multiply\scratchdimen 64
+ \xdef\normalvboxtohboxfactor{\withoutpt\the\scratchdimen}%
+ \egroup}
+
+\def\startvboxtohbox
+ {\bgroup
+ \setvboxtohbox
+ \setbox\scratchbox\normalhbox\bgroup}
+
+\def\stopvboxtohbox
+ {\egroup
+ \dp\scratchbox\zeropoint
+ \ht\scratchbox\normalvboxtohboxfactor\wd\scratchbox
+ \box\scratchbox
+ \egroup}
+
+% % to be done: start halfway a line combined with one line
+% % extra to start with (skip) and one line less than counted.
+%
+% \def\stopvboxtohbox%
+% {\egroup
+% \setbox2=\normalvbox
+% {\forgetall\unhcopy0\par\xdef\globalvhlines{\the\prevgraf}}%
+% \setbox2=\normalvbox
+% {\unvbox2
+% \setbox2=\lastbox
+% \setbox2=\normalhbox{\unhbox2}%
+% \xdef\globalvhwidth{\the\wd2}}%
+% \decrement\globalvhlines
+% \dimen0=\globalvhwidth
+% \dimen0=\normalvboxtohboxfactor\dimen0
+% \advance\dimen0 by \globalvhlines\lineheight
+% \dp0=\zeropoint
+% \ht0=\dimen0
+% %\writestatus{guessed size}
+% % {w:\the\wd0\space\space
+% % b:\the\baselineskip\space
+% % l:\globalvhlines\space
+% % e:\globalvhwidth\space
+% % h:\the\dimen0}%
+% \box0
+% \egroup}
+
+% todo: \scratchbox
+
+\def\convertvboxtohbox
+ {\setvboxtohbox
+ \makehboxofhboxes
+ \setbox0\normalhbox{\unhbox0 \removehboxes}%
+ \noindent\unhbox0\par}
+
+\def\makehboxofhboxes
+ {\setbox0\normalhbox{}%
+ \loop % \doloop { .. \exitloop .. }
+ \setbox2\lastbox
+ \ifhbox2
+ \setbox0\normalhbox{\box2\unhbox0}%
+ \repeat}
+
+\def\removehboxes
+ {\setbox0\lastbox
+ \ifhbox0
+ {\removehboxes}\unhbox0
+ \fi}
+
+%D \macros
+%D {unhhbox}
+%D
+%D The next macro is used in typesetting inline headings.
+%D Let's first look at the macro and then show an example.
+
+\newbox \unhhedbox
+\newbox \hhbox
+\newdimen \lasthhboxwidth
+\newskip \hhboxindent
+
+\def\unhhbox#1\with#2%
+ {\bgroup
+ \nopenalties
+ \dontcomplain
+ \forgetall
+ \setbox\unhhedbox\normalvbox{\hskip\hhboxindent\strut\unhbox#1}% => \hsize
+ \doloop
+ {\setbox\hhbox\vsplit\unhhedbox to \lineheight
+ \ifvoid\unhhedbox
+ \setbox\hhbox\normalhbox{\strut\normalhboxofvbox\hhbox}%
+ \fi
+ \ht\hhbox\strutht
+ \dp\hhbox\strutdp
+ \ifzeropt\hhboxindent\else % \ifdim\hhboxindent=\zeropoint\else
+ \setbox\hhbox\normalhbox{\hskip-\hhboxindent\box\hhbox}%
+ \hhboxindent\zeropoint
+ \fi
+ \global\lasthhboxwidth\wd\hhbox
+ #2\relax
+ \ifvoid\unhhedbox
+ \exitloop
+ \else
+ \hskip\zeropoint \!!plus \zeropoint
+ \fi}%
+ \egroup}
+
+\def\dohboxofvbox
+ {\setbox0\normalvbox{\unvbox\scratchcounter\global\setbox1\lastbox}%
+ \unhbox1
+ \egroup}
+
+\def\normalhboxofvbox
+ {\bgroup
+ \afterassignment\dohboxofvbox
+ \scratchcounter=}
+
+%D This macro can be used to break a paragraph apart and treat
+%D each line seperately, for instance, making it clickable. The
+%D main complication is that we want to be able to continue the
+%D paragraph, something that's needed in the in line section
+%D headers.
+%D
+%D \startbuffer
+%D \setbox0=\normalhbox{\input tufte \relax}
+%D \setbox2=\normalhbox{\input knuth \relax}
+%D \unhhbox0\with{\ruledhbox{\box\hhbox}}
+%D \hskip1em plus 1em minus 1em
+%D \hhboxindent=\lasthhboxwidth
+%D \advance\hhboxindent by \lastskip
+%D \unhhbox2\with{\ruledhbox{\box\hhbox}}
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D This piece of text was typeset by saying:
+%D
+%D \typebuffer
+%D
+%D Not that nice a definition, but effective. Note the stretch
+%D we've build in the line that connects the two paragraphs.
+
+%D \macros
+%D {doifcontent}
+%D
+%D When processing depends on the availability of content, one
+%D can give the next macro a try.
+%D
+%D \starttyping
+%D \doifcontent{pre content}{post content}{no content}\somebox
+%D \stoptyping
+%D
+%D Where \type{\somebox} is either a \type{\normalhbox} or
+%D \type{\normalvbox}. If the dimension of this box suggest some
+%D content, the resulting box is unboxed and surrounded by the
+%D first two arguments, else the third arguments is executed.
+
+\unexpanded\def\doifcontent#1#2#3%
+ {\dowithnextbox
+ {\ifhbox\nextbox
+ \ifdim\nextboxwd>\zeropoint
+ #1\unhbox\nextbox#2\relax
+ \else
+ #3\relax
+ \fi
+ \else
+ \ifdim\nextboxht>\zeropoint
+ #1\unvbox\nextbox#2\relax
+ \else
+ #3\relax
+ \fi
+ \fi}}
+
+%D So when we say:
+%D
+%D \startbuffer
+%D \doifcontent{[}{]}{}\normalhbox{content sensitive typesetting}
+%D
+%D \doifcontent{}{\page}{}\normalvbox{content sensitive typesetting}
+%D
+%D \doifcontent{}{}{\message{Didn't you forget something?}}\normalhbox{}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D We get:
+%D
+%D \getbuffer
+%D
+%D Where the last call of course does not show up in this
+%D document, but definitely generates a confusing message.
+
+%D \macros
+%D {processboxes}
+%D
+%D The next macro gobble boxes and is for instance used for
+%D overlays. First we show the general handler.
+
+\newbox\processbox
+
+\def\processboxes#1%
+ {\bgroup
+ \def\doprocessbox{#1}% #1 can be redefined halfway
+ \resetbox\processbox
+ \afterassignment\dogetprocessbox\let\next=}
+
+\def\endprocessboxes
+ {\ifhmode\unskip\fi
+ \box\processbox
+ \next
+ \egroup}
+
+\def\dogetprocessbox
+ {\ifx\next\bgroup
+ \expandafter\dodogetprocessbox
+ \else
+ \expandafter\endprocessboxes
+ \fi}
+
+\def\dodogetprocessbox
+ {\dowithnextbox
+ {\ifhmode\unskip\fi\doprocessbox % takes \nextbox makes \processbox
+ \afterassignment\dogetprocessbox\let\next=}
+ \normalhbox\bgroup}
+
+%D \macros
+%D {startoverlay}
+%D
+%D We can overlay boxes by saying:
+%D
+%D \startbuffer
+%D \startoverlay
+%D {\framed{hans}}
+%D {\framed[width=3cm]{ton}}
+%D {\framed[height=2cm]{oeps}}
+%D \stopoverlay
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D shows up as:
+%D
+%D \leavevmode\getbuffer
+
+% \def\dooverlaybox%
+% {\ifhmode\unskip\fi
+% \ifdim\nextboxht>\ht\processbox
+% \setbox\processbox\normalvbox to \nextboxht
+% {\vss\box\processbox\vss}%
+% \else
+% \setbox\nextbox\normalvbox to \ht\processbox
+% {\vss\flushnextbox\vss}%
+% \fi
+% \scratchdimen=\wd
+% \ifdim\nextboxwd>\wd\processbox
+% \nextbox
+% \else
+% \processbox
+% \fi
+% \setbox\processbox=\normalhbox to \scratchdimen
+% {\normalhbox to \scratchdimen{\hss\box\processbox\hss}%
+% \hskip-\scratchdimen
+% \normalhbox to \scratchdimen{\hss\flushnextbox\hss}}}
+%
+% \def\startoverlay%
+% {\bgroup
+% \let\stopoverlay\egroup
+% \processboxes\dooverlaybox}
+
+\def\dooverlaybox
+ {\ifhmode\unskip\fi
+ \scratchdimen\dp
+ \ifdim\nextboxdp>\dp\processbox
+ \nextbox
+ \else
+ \processbox
+ \fi
+ \ifdim\nextboxht>\ht\processbox
+ \setbox\processbox\normalvbox to \nextboxht
+ {\dp\processbox\zeropoint\vss\box\processbox\vss}%
+ \else
+ \setbox\nextbox\normalvbox to \ht\processbox
+ {\nextboxdp\zeropoint\vss\flushnextbox\vss}%
+ \fi
+ \nextboxdp\scratchdimen
+ \dp\processbox\scratchdimen
+ \scratchdimen\wd
+ \ifdim\nextboxwd>\wd\processbox
+ \nextbox
+ \else
+ \processbox
+ \fi
+ \setbox\processbox\normalhbox to \scratchdimen
+ {\normalhbox to \scratchdimen{\hss\box\processbox\hss}%
+ \hskip-\scratchdimen
+ \normalhbox to \scratchdimen{\hss\flushnextbox\hss}}}
+
+\def\startoverlay
+ {\bgroup
+ \let\stopoverlay\egroup
+ \processboxes\dooverlaybox}
+
+% %D \macros
+% %D {starthspread}
+% %D
+% %D In a similar way we can build a horizontal box, spread
+% %D over the available width.
+% %D
+% %D \startbuffer
+% %D \starthspread
+% %D {hans}
+% %D {ton}
+% %D {oeps}
+% %D \stophspread
+% %D
+% %D \stopbuffer
+% %D
+% %D \typebuffer
+% %D
+% %D shows up as:
+% %D
+% %D \leavevmode\getbuffer
+%
+% \def\dohspread
+% {\flushnextbox
+% \def\dohspread{\hfil\flushnextbox}}
+%
+% \def\starthspread
+% {\normalhbox to \hsize \bgroup
+% \let\stophspread\egroup
+% \processboxes\dohspread}
+
+%D \macros
+%D {fakebox}
+%D
+%D The next macro is a rather silly one, but saves space.
+%D
+%D \starttyping
+%D \normalhbox{\fakebox0}
+%D \stoptyping
+%D
+%D returns an empty box with the dimensions of the box
+%D specified, here being zero.
+
+\def\dofakebox
+ {\setbox\scratchbox\null
+ \wd\scratchbox\wd\scratchcounter
+ \ht\scratchbox\ht\scratchcounter
+ \dp\scratchbox\dp\scratchcounter
+ \ifhbox\scratchcounter\normalhbox\else\normalvbox\fi{\box\scratchbox}%
+ \egroup}
+
+\def\fakebox
+ {\bgroup
+ \afterassignment\dofakebox\scratchcounter}
+
+%D \macros
+%D {lbox,rbox,cbox,tbox,bbox}
+%D
+%D Here are some convenient alternative box types:
+%D
+%D \starttyping
+%D \lbox{text ...}
+%D \cbox{text ...}
+%D \rbox{text ...}
+%D \stoptyping
+%D
+%D Are similar to \type {\normalvbox}, which means that they also
+%D accept something like \type{to 3cm}, but align to the left,
+%D middle and right. These box types can be used to typeset
+%D paragraphs.
+
+\def\lbox{\makelrcbox\normalvbox\raggedleft}
+\def\cbox{\makelrcbox\normalvbox\raggedcenter}
+\def\rbox{\makelrcbox\normalvbox\raggedright}
+
+\def\ltop{\makelrcbox\normalvtop\raggedleft}
+\def\ctop{\makelrcbox\normalvtop\raggedcenter}
+\def\rtop{\makelrcbox\normalvtop\raggedright}
+
+\def\makelrcbox#1#2#3#%
+ {#1#3\bgroup \forgetall \let\\=\endgraf #2\let\next=}
+
+%D The alternatives \type {\tbox} and \type {\bbox} can be used
+%D to properly align boxes, like in:
+%D
+%D \startbuffer
+%D \starttable[|||]
+%D \HL
+%D \VL \tbox{\externalfigure[koe][height=3cm,frame=on]} \VL top aligned \VL\SR
+%D \HL
+%D \VL \bbox{\externalfigure[koe][height=3cm,frame=on]} \VL bottom aligned \VL\SR
+%D \HL
+%D \stoptable
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D The positioning depends on the strut settings:
+%D
+%D \getbuffer
+
+\def\tbox{\tbbox\ht\dp}
+\def\bbox{\tbbox\dp\ht}
+
+\def\tbbox#1#2%
+ {\normalhbox\bgroup
+ \dowithnextbox
+ {\scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-#1\strutbox
+ #1\nextbox#1\strutbox
+ #2\nextbox\scratchdimen
+ \setbox\nextbox\normalhbox
+ {\lower\nextboxdp\flushnextbox}%
+ #1\nextbox#1\strutbox
+ #2\nextbox\scratchdimen
+ \flushnextbox
+ \egroup}
+ \normalhbox}
+
+%D \macros
+%D {lhbox,mhbox,rhbox}
+%D
+%D A few more boxes.
+
+\def\lhbox{\dowithnextbox{\normalhbox to \hsize{\flushnextbox\hss }}\normalhbox}
+\def\mhbox{\dowithnextbox{\normalhbox to \hsize{\hss\flushnextbox\hss}}\normalhbox}
+\def\rhbox{\dowithnextbox{\normalhbox to \hsize{\hss\flushnextbox }}\normalhbox}
+
+\let\lefthbox =\lhbox
+\let\midhbox =\mhbox
+\let\righthbox=\rhbox
+
+%D \macros
+%D {boxofsize}
+%D
+%D Sometimes we need to construct a box with a height or
+%D width made up of several dimensions. Instead of cumbersome
+%D additions, we can use:
+%D
+%D \starttyping
+%D \boxofsize \normalvbox 10cm 3cm -5cm {the text to be typeset}
+%D \stoptyping
+%D
+%D This example demonstrates that one can use positive and
+%D negative values. Dimension registers are also accepted.
+
+\newdimen\sizeofbox
+
+\def\boxofsize#1%
+ {\bgroup
+ \sizeofbox\zeropoint
+ \scratchdimen\zeropoint
+ \def\docommando
+ {\advance\sizeofbox\scratchdimen
+ \futurelet\next\dodocommando}%
+ \def\dodocommando
+ {\ifx\next\bgroup
+ \expanded{\egroup#1 to \the\sizeofbox}%
+ \else
+ \@EA\afterassignment\@EA\docommando\@EA\scratchdimen
+ \fi}%
+ \docommando}
+
+%D Some new, still undocumented features:
+
+% limitatetext -> beter {text} als laatste !!
+%
+% \limitvbox
+% \limithbox
+
+\def\limitatelines#1#2% size sentinel
+ {\dowithnextbox
+ {\dimen0=#1\hsize
+ \ifdim\nextboxwd>\dimen0
+ \setbox\nextbox\normalhbox
+ {\advance\dimen0 -.1\hsize
+ \limitatetext{\unhbox\nextbox}{\dimen0}{\nobreak#2}}%
+ \fi
+ \unhbox\nextbox}
+ \normalhbox}
+
+\def\fittoptobaselinegrid % weg hier
+ {\dowithnextbox
+ {\bgroup
+ \par
+ \dimen0\nextboxht
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \normalhbox{\flushnextbox}
+ \prevdepth\strutdp
+ \doloop
+ {\advance\dimen0 -\lineheight
+ \ifdim\dimen0<\zeropoint
+ \exitloop
+ \else
+ \nobreak
+ \normalhbox{\strut}
+ \fi}
+ \egroup}
+ \normalvbox}
+
+%D Some more undocumented macros (used in m-chart).
+
+\newif\iftraceboxplacement % \traceboxplacementtrue
+
+\newbox\fakedboxcursor
+
+\setbox\fakedboxcursor\normalhbox
+ {\vrule\!!width\zeropoint\!!height\zeropoint\!!depth\zeropoint}
+
+\def\boxcursor % overloaded in core-vis
+ {\iftraceboxplacement
+ \bgroup
+ \scratchdimen2pt
+ \setbox\scratchbox\normalhbox to \zeropoint
+ {\hss
+ \vrule
+ \!!width \scratchdimen
+ \!!height\scratchdimen
+ \!!depth \scratchdimen
+ \hss}%
+ \smashedbox\scratchbox
+ \egroup
+ \else
+ \copy\fakedboxcursor
+ \fi}
+
+\def\placedbox
+ {\iftraceboxplacement\ruledhbox\else\normalhbox\fi}
+
+\newdimen\boxoffset
+\newdimen\boxhdisplacement
+\newdimen\boxvdisplacement
+
+%\def\rightbox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=.5\ht0\advance\dimen0 -.5\dp0
+% \boxcursor\hskip\boxoffset\lower\dimen0\box0}}
+
+\def\rightbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement\boxoffset
+ \global\boxvdisplacement.5\ht0
+ \global\advance\boxvdisplacement-.5\dp0
+ \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box0}}
+
+%\def\leftbox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=.5\ht0\advance\dimen0 -.5\dp0
+% \boxcursor\hskip-\wd0\hskip-\boxoffset\lower\dimen0\box0}}
+
+\def\leftbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-\wd0
+ \global\advance\boxhdisplacement-\boxoffset
+ \global\boxvdisplacement.5\ht0
+ \global\advance\boxvdisplacement-.5\dp0
+ \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box0}}
+
+%\def\topbox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \dp0
+% \boxcursor\hskip-.5\wd0\raise\dimen0\box0}}
+
+\def\topbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-.5\wd0
+ \global\boxvdisplacement-\dp0
+ \global\advance\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+%\def\bottombox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \ht0
+% \boxcursor\hskip-.5\wd0\lower\dimen0\box0}}
+
+\def\bottombox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-.5\wd0
+ \global\boxvdisplacement\ht0
+ \global\advance\boxvdisplacement\boxoffset
+ \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box0}}
+
+%\def\lefttopbox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \dp0
+% \advance\boxoffset\wd0
+% \boxcursor\hskip-\boxoffset\raise\dimen0\box0}}
+
+\def\lefttopbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-\wd0
+ \global\advance\boxhdisplacement-\boxoffset
+ \global\boxvdisplacement-\dp0
+ \global\advance\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+%\def\righttopbox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \dp0
+% \boxcursor\hskip\boxoffset\raise\dimen0\box0}}
+
+\def\righttopbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement\boxoffset
+ \global\boxvdisplacement-\dp0
+ \global\advance\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+%\def\leftbottombox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \ht0
+% \advance\boxoffset\wd0
+% \boxcursor\hskip-\boxoffset\lower\dimen0\box0}}
+
+\def\leftbottombox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-\wd0
+ \global\advance\boxhdisplacement-\boxoffset
+ \global\boxvdisplacement\ht0
+ \global\advance\boxvdisplacement\boxoffset
+ \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box0}}
+
+%\def\rightbottombox#1%
+% {\normalhbox
+% {\setbox0=\placedbox{#1}%
+% \dimen0=\boxoffset\advance\dimen0 \ht0
+% \boxcursor\hskip\boxoffset\lower\dimen0\box0}}
+
+\def\rightbottombox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement\boxoffset
+ \global\boxvdisplacement\ht0
+ \global\advance\boxvdisplacement\boxoffset
+ \boxcursor\hskip\boxhdisplacement\lower\boxvdisplacement\box0}}
+
+\let\topleftbox \lefttopbox
+\let\toprightbox \righttopbox
+\let\bottomleftbox \leftbottombox
+\let\bottomrightbox\rightbottombox
+
+\def\middlebox#1%
+ {\normalhbox{\setbox0\placedbox{#1}\boxoffset=-.5\wd0\rightbox{\box0}}}
+
+\def\baselinemiddlebox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-.5\wd0
+ \global\advance\boxhdisplacement-\boxoffset
+ \global\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+\def\baselineleftbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement-\wd0
+ \global\advance\boxhdisplacement-\boxoffset
+ \global\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+\def\baselinerightbox#1%
+ {\normalhbox
+ {\setbox0\placedbox{#1}%
+ \global\boxhdisplacement\boxoffset
+ \global\boxvdisplacement-\boxoffset
+ \boxcursor\hskip\boxhdisplacement\raise-\boxvdisplacement\box0}}
+
+%D \macros
+%D {obox}
+%D
+%D Experimental, not yet frozen:
+
+\def\lrtbbox#1#2#3#4% l r t b
+ {\bgroup
+ \dowithnextboxcontent
+ {\advance\hsize-#1\advance\hsize-#2\advance\vsize-#3\advance\vsize-#4\relax}
+ {\forgetall\vbox to \vsize{\vskip#3\hbox to \hsize{\hskip#1\box\nextbox\hss}\vss}\egroup}
+ \vbox}
+
+%D \macros
+%D {toplinebox}
+%D
+%D See core-tbl.tex for an example of its usage:
+
+\def\toplinebox
+ {\dowithnextbox
+ {\ifdim\nextboxdp>\strutdepth
+ \scratchdimen\nextboxdp
+ \advance\scratchdimen-\strutdepth
+ \getnoflines\scratchdimen
+ \struttedbox{\flushnextbox}%
+ \dorecurse\noflines\verticalstrut
+ \else
+ \flushnextbox
+ \fi}%
+ \tbox}
+
+%D \macros
+%D {initializeboxstack,savebox,foundbox}
+%D
+%D At the cost of some memory, but saving box registers, we
+%D have implemented a box repository.
+%D
+%D \starttyping
+%D \initializeboxstack{one}
+%D
+%D \savebox{one}{a}{test a}
+%D \savebox{one}{p}{test p}
+%D \savebox{one}{q}{test q}
+%D
+%D \normalhbox{a:\foundbox{one}{a}} \par
+%D \normalhbox{q:\foundbox{one}{q}} \par
+%D \normalhbox{p:\foundbox{one}{p}} \par
+%D \normalhbox{x:\foundbox{one}{x}} \par
+%D \normalhbox{y:\foundbox{two}{a}} \par
+%D \stoptyping
+
+% a first version
+%
+% \def\@@stackbox{boxstack:b:}
+% \def\@@stackmax{boxstack:m:}
+% \def\@@stacktag{boxstack:t:}
+%
+% \def\initializeboxstack#1%
+% {\ifundefined{\@@stackbox#1}%
+% \@EA\newbox\csname\@@stackbox#1\endcsname
+% \else
+% \global\setbox\csname\@@stackbox#1\endcsname\normalvbox{}%
+% \fi
+% % actually we should erase the old values
+% \setgvalue{\@@stackmax#1}{0}}
+%
+% \def\savebox#1#2% stack name
+% {\dowithnextbox
+% {\doifdefined{\@@stackbox#1}
+% {\@EA\doglobal\@EA\increment\csname\@@stackmax#1\endcsname
+% \setxvalue{\@@stacktag#2}{\csname\@@stackmax#1\endcsname}%
+% \global\setbox\csname\@@stackbox#1\endcsname=\normalvbox
+% {\forgetall
+% \setbox\scratchbox=\normalvbox{\flushnextbox}
+% \ht\scratchbox=\onepoint
+% \dp\scratchbox=\zeropoint
+% \unvbox\csname\@@stackbox#1\endcsname
+% \offinterlineskip
+% \allowbreak
+% \box\scratchbox}}}%
+% \normalvbox}
+%
+% \def\foundbox#1#2%
+% {\normalvbox
+% {\doifdefined{\@@stackbox#1}
+% {\doifdefined{\@@stacktag#2}
+% {\setbox\scratchbox=\normalvbox
+% {\splittopskip\zeropoint
+% \setbox0=\copy\csname\@@stackbox#1\endcsname
+% \dimen0=\getvalue{\@@stacktag#2}pt
+% \advance\dimen0 by -\onepoint
+% \setbox2=\vsplit0 to \dimen0
+% \ifdim\ht0>\onepoint
+% \setbox0=\vsplit0 to \onepoint
+% \fi
+% \unvbox0\setbox0=\lastbox\unvbox0}%
+% \unvbox\scratchbox}}}}
+
+\beginTEX \newbox
+
+\def\@@stackbox{boxstack:b:}
+\def\@@stackmax{boxstack:m:}
+\def\@@stacktag{boxstack:t:}
+\def\@@stacklst{boxstack:l:}
+
+\def\initializeboxstack#1%
+ {\ifundefined{\@@stackbox#1}%
+ \@EA\newbox\csname\@@stackbox#1\endcsname
+ \else
+ \global\setbox\csname\@@stackbox#1\endcsname\normalvbox{}%
+ \def\docommando##1{\global\letbeundefined{\@@stacktag#1:##1}}%
+ \processcommacommand[\getvalue{\@@stacklst#1}]\docommando
+ \fi
+ \setgvalue{\@@stacklst#1}{}%
+ \setgvalue{\@@stackmax#1}{0}}
+
+\def\savebox#1#2% stack name
+ {\dowithnextbox
+ {\doifdefined{\@@stackbox#1}
+ {\@EA\doglobal\@EA\increment\csname\@@stackmax#1\endcsname
+ \setxvalue{\@@stacktag#1:#2}{\csname\@@stackmax#1\endcsname}%
+ \setxvalue{\@@stacklst#1}{\getvalue{\@@stacklst#1},#2}%
+ \global\setbox\csname\@@stackbox#1\endcsname\normalvbox
+ {\forgetall
+ \setbox\scratchbox\normalvbox{\flushnextbox}
+ \ht\scratchbox\onepoint
+ \dp\scratchbox\zeropoint
+ \unvbox\csname\@@stackbox#1\endcsname
+ \offinterlineskip
+ \allowbreak
+ \box\scratchbox}}}%
+ \normalvbox}
+
+\def\foundbox#1#2%
+ {\normalvbox
+ {\doifdefined{\@@stackbox#1}
+ {\doifdefined{\@@stacktag#1:#2}
+ {\setbox\scratchbox\normalvbox
+ {\splittopskip\zeropoint
+ \setbox0\copy\csname\@@stackbox#1\endcsname
+ \dimen0=\getvalue{\@@stacktag#1:#2}\points
+ \advance\dimen0 -\onepoint
+ \setbox2\vsplit0 to \dimen0
+ \ifdim\ht0>\onepoint
+ \setbox0\vsplit0 to \onepoint
+ \fi
+ \unvbox0\setbox0\lastbox\unvbox0}%
+ \unvbox\scratchbox}}}}
+
+\def\doifboxelse#1#2%
+ {\doifdefinedelse{\@@stacktag#1:#2}}
+
+\endTEX
+
+\beginETEX \newbox
+
+\def\@@stackbox{@box@}
+\def\@@stacklst{@xob@}
+
+\def\setstackbox#1#2%
+ {\ifcsname\@@stackbox:#1:#2\endcsname\else
+ \expandafter\newbox\csname\@@stackbox:#1:#2\endcsname
+ \fi
+ \global\setbox\csname\@@stackbox:#1:#2\endcsname\normalvbox}
+
+\def\initializeboxstack#1%
+ {\def\docommando##1{\setstackbox{#1}{##1}{}}%
+ \ifcsname\@@stacklst#1\endcsname
+ \processcommacommand[\getvalue{\@@stacklst#1}]\docommando
+ \fi
+ \setgvalue{\@@stacklst#1}{}}
+
+\def\savebox#1#2% stack name
+ {\setxvalue{\@@stacklst#1}{\getvalue{\@@stacklst#1},#2}%
+ \setstackbox{#1}{#2}}
+
+\def\foundbox#1#2%
+ {\normalvbox
+ {\ifcsname\@@stackbox:#1:#2\endcsname
+ \copy\csname\@@stackbox:#1:#2\endcsname
+ \fi}}
+
+\long\def\doifboxelse#1#2#3#4%
+ {\ifcsname\@@stackbox:#1:#2\endcsname
+ \ifvoid\csname\@@stackbox:#1:#2\endcsname#4\else#3\fi
+ \else
+ #4%
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {removedepth, obeydepth}
+%D
+%D While \type {\removedepth} removes the preceding depth,
+%D \type {\obeydepth} makes sure we have depth. Both macros
+%D leave the \type {\prevdepth} untouched.
+
+\def\removedepth
+ {\ifvmode \ifdim\prevdepth>\zeropoint \kern-\prevdepth \fi \fi}
+
+\def\obeydepth
+ {\par \removedepth \ifvmode \kern\strutdp \fi}
+
+\def\undepthed
+ {\dowithnextbox{\nextboxdp\zeropoint\flushnextbox}\hbox}
+
+%D \macros
+%D {removebottomthings, removelastskip}
+%D
+%D A funny (but rather stupid) one, plus a redefinition.
+
+\def\removebottomthings
+ {\dorecurse5{\unskip\unkern\unpenalty}}
+
+\def\removelastskip % \ifvmode the plain tex one \fi
+% {\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi}
+ {\ifvmode\ifzeropt\lastskip\else\vskip-\lastskip\fi\fi}
+
+%D \macros
+%D {makestrutofbox}
+%D
+%D This macro sets the dimensions of a box to those of a
+%D strut.
+
+\def\domakestrutofbox
+ {\ht\registercount\strutht
+ \dp\registercount\strutdp
+ \wd\registercount\zeropoint}
+
+\def\makestrutofbox
+ {\afterassignment\domakestrutofbox\registercount}
+
+%D \macros
+%D {raisebox,lowerbox}
+%D
+%D Some more box stuff, related to positioning (under
+%D construction). Nice stuff for a tips and tricks maps
+%D article.
+%D
+%D \starttyping
+%D \raisebox{100pt}\normalhbox{test}
+%D \raisebox50pt\normalhbox{test}
+%D \hsmash{\raisebox{100pt}\normalhbox{test}}
+%D \stoptyping
+
+\def\doraiselowerbox#1#2% a nice trick us used to accept
+ {\def\next % both direct and {} dimensions
+ {\dowithnextbox
+ {\setbox\nextbox\normalhbox{#1\scratchdimen\flushnextbox}%
+ \nextboxht\strutht
+ \nextboxdp\strutdp
+ \flushnextbox}}%
+ \afterassignment\next\scratchdimen=#2}
+
+\def\raisebox{\doraiselowerbox\raise}
+\def\lowerbox{\doraiselowerbox\raise}
+
+% maybe some day we need this
+%
+% \def\appendvbox#1% % uses \box8
+% {\bgroup
+% \ifdim\prevdepth<\zeropoint
+% \ifdim\pagetotal=\zeropoint
+% \setbox8=\normalvtop{\unvcopy#1}%
+% \hrule\c!!height\zeropoint
+% \kern-\ht8
+% \box#1\relax
+% \else
+% \box#1\relax
+% \fi
+% \else
+% \dimen0=\prevdepth
+% \hrule\c!!height\zeropoint
+% \setbox8=\normalvtop{\unvcopy#1}%
+% \dimen2=\baselineskip
+% \advance\dimen2 by -\dimen0
+% \advance\dimen2 by -\ht8
+% \kern\dimen2
+% \box#1\relax
+% \fi
+% \egroup}
+
+% %D Also new:
+% %D
+% %D \startbuffer
+% %D \normbox[1cm][bba]{m} % b(efore) a(fter) v(box) s(trut) f(rame)
+% %D \normbox[1cm][bba]{m}
+% %D \normbox[1cm][bba]{m}
+% %D \stopbuffer
+% %D
+% %D \typebuffer
+% %D \getbuffer
+%
+% \def\dodonormbox#1#2#3#4#5#6#7%
+% {\doifnumberelse{#1}
+% {\dimen0=#1}{\setbox0=#3{#1}\dimen0=#50}%
+% \doifinstringelse{f}{#2}
+% {\let\next#4}{\let\next#3}%
+% \next to \dimen0
+% {\counttoken b\in#2\to\!!counta\dorecurse{\!!counta}{#6}#6%
+% #7\nextbox
+% \counttoken a\in#2\to\!!counta\dorecurse{\!!counta}{#6}#6}}
+%
+% \def\donormbox[#1][#2]%
+% {\bgroup
+% \doifinstringelse{v}{#2}
+% {\let\next\normalvbox}
+% {\let\next\normalhbox}%
+% \dowithnextbox
+% {\ifvbox\nextbox
+% \let\\=\par
+% \dodonormbox{#1}{#2}\normalvbox\ruledvbox\ht\vfil\unvbox
+% \else
+% \let\\=\space
+% \dodonormbox{#1}{#2}\normalhbox\ruledhbox\wd\hfil\unhbox
+% \fi
+% \egroup}%
+% \next}
+%
+% \def\normbox
+% {\dodoubleempty\donormbox}
+
+% vcenter in text, we kunnen vcenter overloaden
+
+\def\halfwaybox
+ {\dowithnextbox
+ {\nextboxdp\zeropoint
+ \setbox\nextbox\normalhbox{\lower.5\nextboxht\flushnextbox}%
+ \flushnextbox}
+ \normalhbox}
+
+%D New:
+
+\def\setdimentoatleast#1#2%
+ {\ifdim#1>\zeropoint\else#1=#2\fi}
+
+%D We need'm raw.
+
+\ifx \normalhbox \undefined \let \normalhbox = \hbox \fi
+\ifx \normalvbox \undefined \let \normalvbox = \vbox \fi
+\ifx \normalvtop \undefined \let \normalvtop = \vtop \fi
+\ifx \normalvcenter \undefined \let \normalvcenter = \vcenter \fi
+
+%D And even rawer:
+
+\let\naturalhbox \normalhbox
+\let\naturalvbox \normalvbox
+\let\naturalvtop \normalvtop
+\let\naturalvcenter \normalvtop
+
+\beginOMEGA dir
+
+\def\naturalhbox{\normalhbox dir TLT}
+\def\naturalvbox{\normalvbox dir TLT}
+%def\naturalvtop{\normalvtop dir TLT}
+
+\endOMEGA
+
+%D \macros
+%D {vcenter}
+%D
+%D Also new: tex mode \type {\vcenter}.
+
+\let\verynormalvcenter \vcenter % since \vcenter can be visualized
+
+\def\vcenter
+ {\normalvbox\bgroup
+ \dowithnextbox{\normalhbox{$\verynormalvcenter{\flushnextbox}$}\egroup}
+ \normalvbox}
+
+% could be \everymathematics
+
+\prependtoks \let\vcenter\normalvcenter \to \everymath
+\prependtoks \let\vcenter\normalvcenter \to \everydisplay
+
+%D \macros
+%D {frozenhbox}
+%D
+%D A not so well unhboxable bxo can be made with:
+
+\def\frozenhbox
+ {\hbox\bgroup\dowithnextbox{\hbox{\hbox{\flushnextbox}}\egroup}\hbox}
+
+%D \macros
+%D {setboxllx,setboxlly,gsetboxllx,gsetboxlly,getboxllx,getboxlly}
+%D
+%D A prelude to an extended \TEX:
+
+% it's about time to drop tex in favour of etex / TEX VERSION TO BE TESTED
+
+\beginTEX
+
+ \def\setboxllx #1#2{\bgroup\scratchdimen#2\expanded{\egroup\noexpand\setevalue{b@@x\number#1}{\the\scratchdimen}}}
+ \def\setboxlly #1#2{\bgroup\scratchdimen#2\expanded{\egroup\noexpand\setevalue{b@@y\number#1}{\the\scratchdimen}}}
+
+ \def\gsetboxllx#1#2{\bgroup\scratchdimen#2\setxvalue{b@@x\number#1}{\the\scratchdimen}\egroup}
+ \def\gsetboxlly#1#2{\bgroup\scratchdimen#2\setxvalue{b@@y\number#1}{\the\scratchdimen}\egroup}
+
+\endTEX
+
+\beginETEX
+
+ \def\setboxllx#1#2{\setevalue{b@@x\number#1}{\the\dimexpr(#2)}}
+ \def\setboxlly#1#2{\setevalue{b@@y\number#1}{\the\dimexpr(#2)}}
+
+ \def\gsetboxllx{\global\setboxllx}
+ \def\gsetboxlly{\global\setboxlly}
+
+\endETEX
+
+\def\getboxllx#1{\executeifdefined{b@@x\number#1}\zeropoint}
+\def\getboxlly#1{\executeifdefined{b@@y\number#1}\zeropoint}
+
+%D \macros
+%D {shownextbox}
+%D
+%D Handy for tracing
+%D
+%D \starttyping
+%D \shownextbox\vbox{test}
+%D \shownextbox\vbox{test\endgraf}
+%D \shownextbox\vbox{test\endgraf\strut\endgraf}
+%D \shownextbox\vbox{test\endgraf\thinrule}
+%D \shownextbox\vbox{\setupwhitespace[big]test\endgraf\thinrule}
+%D \stoptyping
+
+\def\shownextbox
+ {\dowithnextbox
+ {\bgroup
+ \showboxbreadth\maxdimen
+ \showboxdepth \maxdimen
+ \scratchcounter\interactionmode
+ \batchmode
+ \showbox\nextbox
+ \box\nextbox
+ \interactionmode\scratchcounter
+ \egroup}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-dir.tex b/Master/texmf-dist/tex/context/base/supp-dir.tex
new file mode 100644
index 00000000000..ad14eab1d10
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-dir.tex
@@ -0,0 +1,70 @@
+%D \module
+%D [ file=supp-dir,
+%D version=2004.11.11,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Directional Things,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Inspired by and needed for Adam Lindsay's \XETEX\ efforts:
+%D
+%D \starttyping
+%D \starttext
+%D \input tufte \par
+%D \pardir TRT \input tufte \par \input tufte \par
+%D \pardir TLT \input tufte \par
+%D \stoptext
+%D \stoptyping
+
+\unprotect
+
+\chardef \inlinedirection \zerocount % 0==notset 1==LR 2==RL
+\let \checkinlinedirection \donothing
+
+\beginETEX \beginL
+
+ \ifx\pardir \undefined
+
+ \def\pardir#1#2#3% messages end up in a higher level command
+ {\global\TeXXeTstate\plusone
+ \if#2L\chardef\inlinedirection\plusone\else
+ \if#2R\chardef\inlinedirection\plustwo\fi\fi
+ \checkinlinedirection} % needed / added
+
+ \let\normalpardir\pardir
+
+ \def\checkinlinedirection
+ {\ifcase\inlinedirection\or\beginL\or\beginR\fi}
+
+ \else
+
+% \let\normalpardir\pardir
+
+% \def\pardir#1#2#3%
+% {\if#2L\chardef\inlinedirection\plusone\else
+% \if#2R\chardef\inlinedirection\plustwo\fi\fi
+% \normalpardir#1#2#3}
+
+% \def\beginL
+% {} % todo: \normalpardir...
+
+% \def\beginR
+% {} % todo: \normalpardir...
+
+% \def\checkinlinedirection
+% {\ifcase\inlinedirection\or\beginL\or\beginR\fi}
+
+ \fi
+
+\endETEX
+
+% see core-ini.tex
+%
+% \appendtoks \checkinlinedirection \to \everypar
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-emp.tex b/Master/texmf-dist/tex/context/base/supp-emp.tex
new file mode 100644
index 00000000000..15489bca783
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-emp.tex
@@ -0,0 +1,398 @@
+%D \module
+%D [ file=supp-emp,
+%D version=2000.08.09,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\EMTEX\ specials to \PDF\ conversion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%M \input supp-emp
+
+%D When \THANH, the author of \PDFTEX, and I were exchanging
+%D some emails on \PDFTEX\ functionality, positional
+%D information popped up as potential extension. Actually, it
+%D did not take that much time to cook up the basic
+%D functionality and the author had implemented it before I
+%D could even start to think about real advanced applications.
+%D
+%D I'm sure that \TEX\ programmers can spend many days on how
+%D and what kind of information is needed if you want to have
+%D access to positions, but since high level macros will
+%D probably be used anyway, even things like multiple reference
+%D points have proved to be rather unimportant at the system
+%D level.
+%D
+%D Therefore, \PDFTEX\ provides just these three primitives:
+%D
+%D \starttabulate[|l|l|]
+%D \NC \type {\pdfsavepos} \NC marks the current position \NC \NR
+%D \NC \type {\pdflastxpos} \NC the last marked horizontal position \NC \NR
+%D \NC \type {\pdflastypos} \NC the last marked vertical position \NC \NR
+%D \stoptabulate
+%D
+%D Based on these three primitives, very advanced systems can
+%D be build, and for some time now, \CONTEXT\ has such a
+%D system in its core. However, not everyone uses \CONTEXT, so
+%D we will demonstrate position tracking in generic applications.
+%D
+%D Because \PDFTEX\ produces its output directly, many of those
+%D nice tricks provided by back||ends by means of \type
+%D {\special} fail when producing \PDF\ code directly. Take for
+%D instance \EMTEX\ specials. When someone sent me a mail
+%D asking if \PDFTEX\ did support those specials, the original
+%D answer was \quotation {no}, but in the last few years I have learned
+%D that you must never underestimate \TEX's capabilities.
+%D
+%D I must admit that I never use those specials myself, but
+%D from the way they were used in the macros I was sent, I
+%D learned that they depend on the back||end's capability to
+%D access the current position. For those who know \TEX\ this
+%D may be bad news, since pure \TEX\ does not provide any
+%D positional information. So in order to use those specials,
+%D you must be sure that they are supported by every driver you
+%D use. However, the good news is that \PDFTEX\ does support
+%D position tracking, so here is our generic example.
+%D
+%D The two \EMTEX\ specials we need to implement are packaged
+%D into the macros \type {\EMmoveto} and \type {\EMlineto},
+%D like:
+%D
+%D \starttyping
+%D \def\EMmoveto{\special{em:moveto}}
+%D \def\EMlineto{\special{em:lineto}}
+%D \stoptyping
+%D
+%D They are used in macro packages to draw lines, and the
+%D results are often boxes with content like the following:
+%D
+%D \startbuffer
+%D \vbox to 2cm
+%D {\offinterlineskip \EMmoveto
+%D \hskip 7cm \EMlineto
+%D \vskip 2cm \EMlineto
+%D \vskip-2cm \EMlineto}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This box will contain a triangle, and when typeset, it should
+%D look like:
+%D
+%D \startlinecorrection[blank]
+%D \getbuffer
+%D \stoplinecorrection
+
+\def\EMlinewd{.4}
+
+\ifx\dosetpositionpt\undefined % non context part
+
+%D These two macros can be implemented as follows. When moving
+%D to a position, we only have to register the new coordinates.
+%D Once they are known, we use them to draw a line and
+%D afterwards we save these end coordinates as starting point
+%D for the next line segment. So, at each point specified by
+%D \type {\EMlineto} we need to know the coordinates.
+
+\def\EMmoveto
+ {\EMgetposition\EMlastmovex\EMlastmovey}
+
+%D The primitives \type {\pdflastxpos} and \type
+%D {\pdflastypos} return a number, representing the $x$ and
+%D $y$ coordinate in scaled points, \TEX's smallest unit of
+%D length. We need to convert this number into base points as
+%D used by \POSTSCRIPT\ and \PDF. When done, we insert some
+%D literal \PDF\ code into the text using \type {\pdfliteral}.
+%D Here, the \type {m} means \quote {moveto}, the \type {l}
+%D means \quote {lineto} and the \type {S} operator \quote
+%D {strokes} (draws) the line. The macro \type {\EMlinewd}
+%D holds the linewidth in basepoints.
+
+\def\EMlineto
+ {\bgroup
+ \EMgetposition\EMlastlinex\EMlastliney
+ \count0=\EMlastmovex \advance\count0 -\EMlastlinex
+ \count2=\EMlastmovey \advance\count2 -\EMlastliney
+ \divide\count0 65536
+ \divide\count2 65536
+ \PDFcode{\EMlinewd\space w 0 0 m \the\count0 \space\the\count2 \space l S}%
+ \global\let\EMlastmovex\EMlastlinex
+ \global\let\EMlastmovey\EMlastliney
+ \egroup}
+
+%D We need a fresh start, so we first set the current position
+%D to zero.
+
+\def\resetEMspecials
+ {\gdef\EMlastmovex{0}\gdef\EMlastmovey{0}}
+
+%D Next comes the macro that keeps track of the position. The
+%D current position is marked with \type {\pdfsavepos} and its
+%D coordinates are written to a file whenever the page is
+%D shipped out, since \type {\write} postpones its action
+%D until that moment. The file has entries like:
+%D
+%D \starttyping
+%D \EMsetpos 1 4661756 46651918
+%D \EMsetpos 2 5000359 46990521
+%D \EMsetpos 3 4661756 46313315
+%D \EMsetpos 4 5338962 46990521
+%D \EMsetpos 5 4661756 45974712
+%D \stoptyping
+%D
+%D These lines are written with the command:
+%D
+%D \starttyping
+%D \write\EMfile
+%D {\EMsetpos\number\EMcounter
+%D \space\number\pdflastxpos\space\number\pdflastypos}%
+%D \stoptyping
+%D
+%D In reality the argument to \type {\write} looks slightly
+%D more complicated, because we have to make sure that the
+%D number of the current position is frozen and \type
+%D {\EMsetpos} is not expanded. We do so by explicitly
+%D expanding the number beforehand and preventing expansion of
+%D \type {\EMsetpos}.
+
+\def\EMgetposition#1#2%
+ {\bgroup
+ \pdfsavepos
+ \global\advance\EMcounter 1
+ \expandafter\write\expandafter\EMfile\expandafter
+ {\expandafter\noexpand\expandafter\EMsetpos\number\EMcounter
+ \space\number\pdflastxpos\space\number\pdflastypos}%
+ \EMsetcounters
+ \xdef#1{\the\count0}%
+ \xdef#2{\the\count2}%
+ \egroup}
+
+%D The counter mentioned a few lines ago needs to be
+%D declared before it can be used.
+
+\newcount\EMcounter
+
+%D We also need a dedicated file slot.
+
+\newwrite\EMfile
+
+%D Before we open the file for writing, we read in the data
+%D written in the previous pass, but only if the file is
+%D present.
+
+\def\EMfilename{\jobname.emp}
+
+\def\startEMspecials%
+ {\resetEMspecials
+ \openin\scratchread=\EMfilename \relax
+ \ifeof\scratchread\else \input \EMfilename \relax \fi
+ \closein\scratchread
+ \immediate\openout\EMfile=\EMfilename\relax}
+
+\def\stopEMspecials
+ {\closeout\EMfile}
+
+%D Just to be sure, we test if \type {\scratchread} is defined,
+%D and if not, we allocate a slot.
+
+\ifx\undefined\scratchread \newread\scratchread \fi
+
+%D This leaves us two commands. The \type {\EMsetpos} command
+%D that ends up in the file stores each position in a macro.
+%D When this macro is expanded, it assigns the coordinates to
+%D two scratch counters.
+
+\def\EMsetpos#1 #2 #3 % number x y
+ {\expandafter\xdef\csname EM:#1\endcsname{\count0=#2 \count2=#3}}
+
+%D This position is recalled with its companion macro. First we
+%D set the counters to zero. When the position is unknown,
+%D nothing happens since the \type {\csname...} will expand to
+%D \type {\relax}.
+
+\def\EMsetcounters
+ {\count0=0 \count2=0
+ \csname EM:\the\EMcounter\endcsname}
+
+%D These macros are rather independent of the macro package you
+%D use. For instance, in \CONTEXT\ the following works well:
+%D
+%D \startbuffer[pos-en]
+%D \setuppositioning[unit=ex]
+%D \startpositioning
+%D \dostepwiserecurse{-10}{10}{1}
+%D {\position(0,\recurselevel){\EMmoveto}
+%D \position(\recurselevel,0){\EMlineto}}
+%D \stoppositioning
+%D \stopbuffer
+%D
+%D \startbuffer[pos-nl]
+%D \setuppositioning[uniteenheid=ex]
+%D \startpositioning
+%D \dostepwiserecurse{-10}{10}{1}
+%D {\position(0,\recurselevel){\EMmoveto}
+%D \position(\recurselevel,0){\EMlineto}}
+%D \stoppositioning
+%D \stopbuffer
+%D
+%D \typebuffer[pos-en]
+%D
+%D Here, we hook the \EMTEX\ macros into an existing text
+%D positioning mechanism, which positions the commands
+%D using \TEX's skips and kerns.
+%D
+%D \startlinecorrection[blank]
+%D \getbuffer[pos-nl]
+%D \stoplinecorrection
+%D
+%D Of course one should start and end the file with:
+%D
+%D \starttyping
+%D \startEMspecials
+%D \stopEMspecials
+%D \stoptyping
+%D
+%D and, if needed, reset the begin position at each page using:
+%D
+%D \starttyping
+%D \resetEMspecials
+%D \stoptyping
+
+\fi % end of non context part
+
+\ifx\dosetpositionpt\undefined \else % context part
+
+% \edef\EMlinewd{\withoutpt\the\linewidth}
+
+%D A few pages ago, we mentioned that \CONTEXT\ has built||in
+%D position tracking. This means that when we want to implement
+%D this kind of trickery in this macro package, we can fall
+%D back on existing functionality. In the following alternative
+%D we will also use a few skips. This keeps the source readable
+%D and \CONTEXT\ has plenty of unused registers to accomodate
+%D this strategy.
+
+\newcount\EMcounter \def\EMvariable{EM:\the\EMcounter}
+
+\newskip \EMlastmovex \newskip \EMlastmovey
+\newskip \EMlastlinex \newskip \EMlastliney
+
+\def\resetEMspecials
+ {\global\EMlastmovex=0pt \global\EMlastmovey=\EMlastmovex}
+
+\resetEMspecials \appendtoks\resetEMspecials\to\everyshipout
+
+%D Watch how we reset the specials after a page is flushed. We
+%D don't have to bother about files here, because saving and
+%D recalling is already implemented. Although not needed, we
+%D define the start||stop macros, so that \CONTEXT\ users who
+%D key them in are not confronted with error messages.
+
+\let\startEMspecials\relax \let\stopEMspecials\relax
+
+\def\EMgetposition#1#2%
+ {\global\advance\EMcounter 1
+ \setposition\EMvariable
+ \global#1=\POSx\EMvariable
+ \global#2=\POSy\EMvariable}
+
+\def\EMmoveto
+ {\EMgetposition\EMlastmovex\EMlastmovey}
+
+\def\EMlineto
+ {\EMgetposition\EMlastlinex\EMlastliney
+ \global\advance\EMlastmovex -\EMlastlinex
+ \global\advance\EMlastmovey -\EMlastliney
+ \ScaledPointsToBigPoints{\number\EMlastmovex}\EMx
+ \ScaledPointsToBigPoints{\number\EMlastmovey}\EMy
+ \PDFcode{\EMlinewd\space w 0 0 m \EMx \space \EMy \space l S}%
+ \global\EMlastmovex\EMlastlinex
+ \global\EMlastmovey\EMlastliney}
+
+%D The command \type {\setposition} registers a position by
+%D name (here \type {\EMvariable}), while \type {\POSx} and
+%D \type {\POSy} give you access to the coordinates.
+%D
+%D These three commands are containes in a suite of low level
+%D commands that can be used to register and get access to
+%D positional information. The current mechanism is not yet
+%D complete, but already provides enough hooks for advanced
+%D embedded graphics. Its functionality is a natural extension
+%D to the \METAPOST\ support already present in \CONTEXT.
+%D Therefore, more advanced examples can be found in the
+%D \METAFUN\ manual, since they fall beyond the scope of this
+%D module.
+
+\fi % end of context part
+
+%D As a bonus, I will now provide a few macros that will make
+%D this mechanism transparant to \DVI\ as well as \PDF\
+%D output. We will use \type {\pdfiteral} as trigger.
+
+\ifx\PDFcode\undefined
+ \ifx\pdfliteral\undefined
+ \def\PDFcode#1{\special{PDF: #1}}
+ \else
+ \let\PDFcode\pdfliteral
+ \fi
+\fi
+
+\ifx\PDFcode\undefined
+ \def\EMpdfordvi#1#2{#2}
+\else\ifx\pdfoutput\undefined
+ \def\EMpdfordvi#1#2{#2}
+\else
+ \def\EMpdfordvi#1#2{\ifcase\pdfoutput#2\else#1\fi}
+\fi\fi
+
+
+%D We save some of the macros we defined previously:
+
+\let\pdfEMmoveto\EMmoveto \let\pdfstartEMspecials\startEMspecials
+\let\pdfEMlineto\EMlineto \let\pdfstopEMspecials \stopEMspecials
+
+%D We now redefine them to support \DVI\ and \PDF.
+
+\def\EMmoveto{\EMpdfordvi\pdfEMmoveto{\special{em:moveto}}}
+\def\EMlineto{\EMpdfordvi\pdfEMlineto{\special{em:lineto}}}
+
+\def\startEMspecials{\EMpdfordvi\pdfstartEMspecials\relax}
+\def\stopEMspecials {\EMpdfordvi\pdfstopEMspecials \relax}
+
+%D If there is any real demand for this in \CONTEXT, I will
+%D hook these macros in the special drivers, so that their
+%D support becomes more natural.
+
+%D You may want to change the default linewidth. The following
+%D macro does the job. Beware of the fact that \type
+%D {\special}'s may interfere with the typesetting process.
+%D
+%D \starttyping
+%D \setEMlinewidth{1pt}
+%D \stoptyping
+
+\def\setEMlinewidth#1% this could be done more efficient for
+ {\bgroup % context alone, but it's a hack anyway
+ \dimen0=#1\relax
+ \count0=\dimen0
+ \divide\count0 65536
+ \pdfordvi\relax{\special{em:linewidth \the\dimen0}}%
+ \xdef\EMlinewd{\the\count0}%
+ \egroup}
+
+%D You may wonder to what extent positional tracking is
+%D \PDFTEX\ specific. In \CONTEXT, we also support position
+%D tracking in \DVI\ by using specials and analyzing the \DVI\
+%D file afterwards using \DVIPOS. Since many of the advanced
+%D \TEX\ features depend on some kind of back||end, we don't
+%D consider it to be a disadvantage. Of course, the \PDFTEX\
+%D way is not only cleaner, but also faster. It was more out
+%D of curiosity than out of need that we provided the \DVI\
+%D methods as well. Also, it is always good to have more roads
+%D to reach the same goal.
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-eps.tex b/Master/texmf-dist/tex/context/base/supp-eps.tex
new file mode 100644
index 00000000000..b28a55b7d19
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-eps.tex
@@ -0,0 +1,233 @@
+%D \module
+%D [ file=supp-eps,
+%D version=1998.05.06,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\EPS\ tools,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+
+%D The macros in this module are rather old and were originally
+%D part of the figure inclusion macros. When \PDFTEX\ started
+%D to support \PDF\ inclusion, where some accompanying macros
+%D were put in \type{supp-pdf}, I considered it more suitable
+%D to give the \EPS\ macros their own module.
+
+\writestatus{loading}{Context Support Macros / EPS}
+
+%D \macros
+%D {dogetEPSboundingbox}
+%D
+%D The predecessors of the following macro's are derived from
+%D Thomas Rockicky's macro's. They are rewritten to a more
+%D compact form, made a bit more robust and also handle the
+%D \type{HiResBoundingBox} and \type{ExactBoundingBox} that
+%D are sometimes present.
+%D
+%D A bounding box has the form:
+%D
+%D \starttyping
+%D %%BoundingBox: llx lly urx ury
+%D \stoptyping
+%D
+%D Before we scan the file, we have to reset special
+%D characters and set some others. The percentage symbol also
+%D needs special treatment. When a bounding box is
+%D encountered, we keep on scanning until no more directives
+%D are found, i.e. a line is found that does not start with a
+%D percentage symbol. We also abort scanning after finding a
+%D high resolution bounding box.
+%D
+%D This method also works inside verbatim mode (like when we
+%D are typesetting sources and putting eps coded logos into
+%D a heading. Temporary restoring the \CATCODES\ is done in
+%D the calling routine.
+%D
+%D The creator as well as external support for specials are
+%D analyzed as well and their status is available in \type
+%D {\EPScreator} and \type {\EPSshading}. The boundingbox
+%D components are available in \type {\EPSllx} etc.
+
+\unprotect
+
+\def\EPSllx{0} \let\MPllx\EPSllx % just in case these
+\def\EPSlly{0} \let\MPlly\EPSlly % are used while running
+\def\EPSurx{0} \let\MPurx\EPSurx % in fast mode we set
+\def\EPSury{0} \let\MPury\EPSury % them to 0.
+
+\chardef\EPSfound =0
+\chardef\EPScreator=0
+\chardef\EPSspecial=0
+\chardef\EPSstatus =0
+
+\let\EPScreatorstring\empty
+
+\newtoks\extraEPSpreambleresets
+\newtoks\extraEPSpreambleparsers
+
+\def\dofinishEPSfile{\dofinishfile} % no \let, can be overloaded
+
+\def\dogetEPSboundingbox#1#2#3#4#5%
+ {\bgroup
+ \global\chardef\EPSfound \zerocount
+ \global\chardef\EPScreator\zerocount
+ \global\chardef\EPSspecial\zerocount
+ \global\chardef\EPSstatus \zerocount
+ \global\let\EPScreatorstring\empty
+ \the\extraEPSpreambleresets
+ \uncatcodespecials
+ \catcode`\^^M=\@@ignore
+ \def\doprocessEPSline
+ {\advance\scratchcounter\plusone
+ \expandafter\checkEPSboundingbox\fileline\empty\empty:.:.\end}%
+ \scratchcounter\zerocount
+ \doprocessfile\scratchread{#1}\doprocessEPSline
+ \egroup
+ \ifnum\EPSfound>\zerocount
+ #2=\EPSllx bp% Using \EPSllx bp instead of
+ #4=\EPSurx bp% \dimen0=1bp and \EPSllx\dimen0
+ #3=\EPSlly bp% is more accurate (.005pt).
+ #5=\EPSury bp%
+ \scratchdimen\EPSllx bp\advance#4 -\scratchdimen
+ \scratchdimen\EPSlly bp\advance#5 -\scratchdimen
+ \else
+ #2\zeropoint
+ #3\zeropoint
+ #4\zeropoint
+ #5\zeropoint
+ \fi
+ %\message{[bbox #1: \EPSllx\space\EPSurx\space\EPSlly\space\EPSury]}\wait
+ \global\let\MPllx\EPSllx \global\let\MPlly\EPSlly
+ \global\let\MPurx\EPSurx \global\let\MPury\EPSury}
+
+\bgroup \catcode`\%=\@@other \xdef\letterpercent{\string%} \egroup
+
+\def\EPSboundingboxtag {BoundingBox}
+\def\EPShiresboundingboxtag{HiResBoundingBox}
+\def\EPSexactboundingboxtag{ExactBoundingBox}
+\def\EPScreatortag {Creator}
+\def\EPSmetaposttag {MetaPost}
+\def\EPSmetapostspecialtag {MetaPostSpecial}
+\def\EPSmetapostspecialstag{MetaPostSpecials}
+\def\EPSpagetag {Page}
+
+\let\EPSspecialstring \empty
+\let\EPSspecialcontent\empty
+
+% new metapost construct (hires bb followed by creator + version)
+%
+%!PS
+%%BoundingBox: -71 -1 651 496
+%%HiResBoundingBox: -70.9945 -0.5 650.5 495.24907
+%%Creator: MetaPost 0.901
+%%CreationDate: 2005.06.02:1633
+%%Pages: 1
+
+\long\def\checkEPSboundingbox#1#2#3:#4:.#5\end
+ {\if\string#1\letterpercent
+ \if\string#2\letterpercent
+ \edef\EPSspecialstring{#3}%
+ \edef\EPSspecialcontent{#4}%
+ \ifx\EPSspecialstring\EPScreatortag
+ \getEPScreatorspec
+ \else\ifx\EPSspecialstring\EPSboundingboxtag
+ \getEPSboundingboxspec
+ \global\chardef\EPSfound\plusone
+ \else\ifx\EPSspecialstring\EPShiresboundingboxtag
+ \getEPSboundingboxspec
+ \global\chardef\EPSfound\plustwo
+ \scratchcounter\zerocount
+ \else\ifx\EPSspecialstring\EPSexactboundingboxtag
+ \getEPSboundingboxspec
+ \global\chardef\EPSfound\plustwo
+ \scratchcounter\zerocount
+ \else\ifx\EPSspecialstring\EPSmetapostspecialtag % only before finish!
+ \global\chardef\EPSspecial\plusone % ah, we've met some MP extensions
+ \else\ifx\EPSspecialstring\EPSmetapostspecialstag % only before finish!
+ \global\chardef\EPSspecial\plusone % ah, we've met some MP extensions
+ \else\ifx\EPSspecialstring\EPSpagetag
+ \global\chardef\EPSstatus \plusone % we passed MP font defs
+ \else
+ \the\extraEPSpreambleparsers
+ \fi\fi\fi\fi\fi\fi\fi
+ \fi
+ \else\ifnum\EPSfound>\zerocount
+ % bb found
+ \ifnum\EPScreator=\plusone % that is, we are dealing with MP output
+ \ifcase\EPSstatus
+ % we've run into MP fontdefs
+ \or
+ \dofinishEPSfile
+ \fi
+ \else\ifnum\scratchcounter>\plusthree
+ % too late for mps creator (we don't want to run into crap data)
+ \dofinishEPSfile
+ \else
+ \fi\fi
+ \fi\fi}
+
+\def\getEPSboundingboxspec
+ {\edef\EPSspecialstring{\EPSspecialcontent\space . . . . }%
+ \expandafter\dogetEPSboundingboxspec\EPSspecialstring\end}
+
+\def\dogetEPSboundingboxspec#1 #2 #3 #4 #5\end
+ {\gdef\EPSllx{#1}%
+ \ifx\EPSllx\empty
+ \dogetEPSboundingboxspec#2 #3 #4 #5\end
+ \else
+ \gdef\EPSlly{#2}%
+ \gdef\EPSurx{#3}%
+ \gdef\EPSury{#4}%
+ \fi}
+
+% \def\getEPScreatorspec
+% {\edef\EPSspecialstring{\EPSspecialcontent. . . .}%
+% \expandafter\dogetEPScreatorspec\EPSspecialstring\end}
+
+% \def\dogetEPScreatorspec#1#2 . . #3\end
+% {\edef\EPSspecialstring{#1}%
+% \ifx\EPSspecialstring\empty
+% \dogetEPScreatorspec#2 . . #3\end
+% \else\ifx\EPSspecialstring\space
+% \dogetEPScreatorspec#2 . . #3\end
+% \else
+% \edef\EPScreatorstring{#1#2}%
+% \global\chardef\EPScreator
+% \ifx\EPScreatorstring\EPSmetaposttag\plusone\else\zerocount\fi\relax
+% \fi\fi}
+
+% adapted to new metapost output
+
+\def\getEPScreatorspec
+ {\edef\EPSspecialstring{\EPSspecialcontent\space . .}%
+ \expandafter\dogetEPScreatorspec\EPSspecialstring\end}
+
+% \def\dogetEPScreatorspec#1#2 #3\end
+% {\edef\EPSspecialstring{#1}%
+% \ifx\EPSspecialstring\empty
+% \dogetEPScreatorspec#2 #3\end
+% \else\ifx\EPSspecialstring\space
+% \dogetEPScreatorspec#2 #3\end
+% \else
+% \edef\EPScreatorstring{#1#2}%
+% \global\chardef\EPScreator
+% \ifx\EPScreatorstring\EPSmetaposttag\plusone\else\zerocount\fi\relax
+% \fi\fi}
+
+\def\dogetEPScreatorspec#1#2 #3\end
+ {\edef\EPScreatorstring{#1#2}%
+ \global\chardef\EPScreator\ifx\EPScreatorstring\EPSmetaposttag\plusone\else\zerocount\fi\relax}
+
+\def\dogetEPSpreambledata#1% can be combined with \extraEPSpreambleparsers
+ {\bgroup
+ \let\dofinishEPSfile\relax % dirty trick, read past all bboxes
+ \dogetEPSboundingbox{#1}\!!widtha\!!heighta\!!widthb\!!heightb
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-fil.tex b/Master/texmf-dist/tex/context/base/supp-fil.tex
new file mode 100644
index 00000000000..cd0c48150e8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-fil.tex
@@ -0,0 +1,748 @@
+%D \module
+%D [ file=supp-fil,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Files,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D \TEX\ operates on files, so one wouldn't wonder that there
+%D is a separate module for file support. In \CONTEXT\ files
+%D are used for several purposes:
+%D
+%D \startitemize[packed]
+%D \item general textual input
+%D \item logging status information
+%D \item saving registers, lists and references
+%D \item buffering defered textual input
+%D \stopitemize
+%D
+%D When dealing with files we can load them as a whole, using
+%D the \type{\input} primitive or load them on a line||by||line
+%D basis, using \type{\read}. Writing is always done line by
+%D line, using \type{\write}.
+
+\writestatus{loading}{Context Support Macros / Files}
+
+\unprotect
+
+\ifx\undefined\f!pathseparator
+ \def\f!pathseparator{/}
+ \def\f!currentpath {.}
+ \def\f!parentpath {..}
+\fi
+
+%D \macros
+%D {normalwrite, normalimmediate}
+%D
+%D We save a few primitives first.
+
+\let\normalwrite\write
+\let\normalimmediate\immediate
+
+%D \macros
+%D {pushendofline,popendofline}
+%D
+%D When we are loading files in the middle of the typesetting
+%D process, for instance when we load references, we have to be
+%D sure that the reading process does not generate so called
+%D 'spurious spaces'. This can be prevented by assigning the
+%D line ending character the \CATCODE\ comment. This is
+%D accomplished by
+%D
+%D \starttyping
+%D \pushendofline
+%D ... reading ...
+%D \popendofline
+%D \stoptyping
+%D
+%D Just to be sure, we save the current meaning of \type{^^M}
+%D in \type{\poppedendofline}.
+
+% \chardef\poppedendofline\catcode`\^^M
+%
+% \def\pushendofline
+% {\chardef\poppedendofline\catcode`\^^M\relax
+% \catcode`\^^M\@@comment\relax}
+%
+% \def\popendofline
+% {\catcode`\^^M\poppedendofline}
+%
+% support for nested usage:
+
+\newcounter \endoflinelevel
+
+\ifx\newlinecode\undefined \chardef\newlinecode=`\^^M \fi
+
+\def\pushendofline
+ {\fastincrement\endoflinelevel
+ \expandafter\chardef\csname :eol:\endoflinelevel\endcsname\catcode\newlinecode
+ \catcode\newlinecode\@@comment\relax}
+
+\def\popendofline
+ {\catcode\newlinecode\csname :eol:\endoflinelevel\endcsname
+ \fastdecrement\endoflinelevel}
+
+\def\restoreendofline
+ {\catcode\newlinecode\@@endofline}
+
+%D \macros
+%D {scratchread, scratchwrite}
+%D
+%D We define a scratch file for reading. Keep in mind that
+%D the number of files is limited to~16, so use this one when
+%D possible. We also define a scratch output file.
+
+\ifx\undefined\scratchread \newread \scratchread \fi
+\ifx\undefined\scratchwrite \newwrite\scratchwrite \fi
+
+%D \macros
+%D {unlinkfile}
+%D
+%D Sometimes we want to make sure a file is deleted, so here
+%D is a macro that does the job. It's named after the \PERL\
+%D one.
+
+\def\unlinkfile#1%
+ {\immediate\openout\scratchwrite=#1\immediate\closeout\scratchwrite}
+
+%D \macros
+%D {writeln}
+%D
+%D This saves a few tokens:
+
+\def\writeln#1{\write#1{}}
+
+\def\doiffileexistselse#1%
+ {\doifelsenothing{#1}
+ {\secondoftwoarguments}
+ {\immediate\openin\scratchread=#1\relax
+ \ifeof\scratchread
+ \immediate\closein\scratchread
+ \expandafter\secondoftwoarguments
+ \else
+ \immediate\closein\scratchread
+ \expandafter\firstoftwoarguments
+ \fi}}
+
+%D \macros
+%D {doprocessfile,fileline,fileprocessedtrue,dofinishfile}
+%D
+%D The next macro offers a framework for processing files on a
+%D line by line basis.
+%D
+%D \starttyping
+%D \doprocessfile \identifier {name} \action
+%D \stoptyping
+%D
+%D The first argument can for instance be \type{\scratchread}.
+%D The action must do something with \type{\fileline}, which
+%D holds the current line. One can halfway step out using
+%D \type{\dofinishfile} and ise \type{\iffileprocessed} to
+%D see if indeed some content was found.
+
+\newif\iffileprocessed
+
+\let\fileline\empty
+
+\def\doprocessfile#1#2#3%
+ {\immediate\openin#1=#2\relax
+ \ifeof#1%
+ \fileprocessedfalse
+ \immediate\closein#1%
+ \else
+ \fileprocessedtrue
+ \gdef\dofinishfile
+ {\immediate\closein#1%
+ \global\let\doprocessline\relax}%
+ \gdef\doprocessline
+ {\ifeof#1%
+ \expandafter\dofinishfile
+ \else
+ \global\read#1 to \fileline
+ #3\relax
+ \expandafter\doprocessline
+ \fi}%
+ \expandafter\doprocessline
+ \fi}
+
+%D \macros
+%D {pathplusfile,assignfullfilename,sanitizefilename}
+%D
+%D Use \type{\pathplusfile} to compose a full file name, like
+%D in:
+%D
+%D \starttyping
+%D \pathplusfile{path}{file}
+%D \stoptyping
+%D
+%D By default, this expands into {\tt \pathplusfile{path}{file}}.
+
+\def\pathplusfile#1#2{#1\f!pathseparator#2}
+
+%D This one constructs a filename from a (possible empty)
+%D path and filename.
+
+\def\assignfullfilename#1#2\to#3%
+ {\doifelsenothing{#1}
+ {\edef#3{#2}}
+ {\edef#3{#1\f!pathseparator#2}}}
+
+%D For the moment, we limit sanitizing to taking care of
+%D active \type {/}.
+
+\bgroup % todo: _ cleanup
+
+\catcode`\/=\@@active
+\catcode`\:=\@@active
+\catcode`\~=\@@active
+\catcode`\_=\@@active
+
+\gdef\sanitizefilename#1\to#2%
+ {\bgroup
+ \edef/{\string/}%
+ \edef:{\string:}%
+ \edef~{\string~}%
+ \edef_{\string_}%
+ \retainlccodes
+ \lccode`\\=`\/
+ \lowercase{\expanded{\xdef\noexpand\sanitizedfilename{#1}}}%
+ \egroup
+ % maybe \convertcommand\sanitizedfilename\to#2%
+ \let#2\sanitizedfilename}
+
+\egroup
+
+%D NEW:
+
+\chardef\kindoffile=0 % 0=normal 1=full path spec (or http)
+
+\def\checkfilename#1%
+ {\doifinstringelse{@@/}{@@#1}% unix: /full/path
+ {\chardef\kindoffile\plusone}
+ {\doifinstringelse{:/}{#1}% windows: e:/full/path or http://
+ {\chardef\kindoffile\plusone}
+ {\chardef\kindoffile\zerocount}}}
+
+%D \macros
+%D {input, normalinput}
+%D
+%D Sometimes we run into troubles when \type {\input} wants to get
+%D expanded, e.g. in a \type {\write} (which happens in the metafun
+%D manual when we permit long MP lines). So, instead of fixing that,
+%D we go for a redefinition of \type {\input}. Of course it's better
+%D to use \type {\readfile} or \type {\processfile}.
+
+\ifx\normalinput\undefined \let\normalinput\input \fi
+
+\unexpanded\def\input{\normalinput}
+
+%D \macros
+%D {readfile,ReadFile,maxreadlevel}
+%D
+%D One cannot be sure if a file exists. When no file can be
+%D found, the \type{\input} primitive gives an error message
+%D and switches to interactive mode. The macro \type{\readfile}
+%D takes care of non||existing files. This macro has two faces.
+%D
+%D \starttyping
+%D \ReadFile {filename}
+%D \readfile {filename} {before loading} {not found}
+%D \stoptyping
+%D
+%D Many \TEX\ implementations have laid out some strategy for
+%D locating files. This can lead to unexpected results,
+%D especially when one loads files that are not found in the
+%D current directory. Let's give an example of this. In
+%D \CONTEXT\ illustrations can be defined in an external file.
+%D The resizing macro first looks if an illustration is defined
+%D in the local definitions file. When no such file is found,
+%D it searches for a global file and when this file is not
+%D found either, the illustration itself is scanned for
+%D dimensions. One can imagine what happens if an adapted,
+%D localy stored illustration, is scaled according to
+%D dimensions stored somewhere else.
+%D
+%D When some \TEX\ implementation starts looking for a file, it
+%D normally first looks in the current directory. When no file
+%D is found, \TEX\ starts searching on the path where format
+%D and|/|or style files are stored. Depending on the implementation
+%D this can considerably slow down processing speed.
+%D
+%D In \CONTEXT, we support a project||wise ordening of files.
+%D In such an approach it seems feasible to store common files
+%D in a lower directory. When for instance searching for a
+%D general layout file, we therefore have to backtrack.
+%D
+%D These three considerations have lead to a more advanced
+%D approach for loading files.
+%D
+%D We first present an earlier implementation of
+%D \type{\readfile}. This command backtracks parent
+%D directories, upto a predefined level. Users can change this
+%D level, but we default to~3.
+%D
+%D \starttyping
+%D \def\maxreadlevel {3}
+%D \stoptyping
+%D
+%D This is a pseudo \COUNTER.
+%D
+%D We use \type{\normalinput} instead of \type{\input}
+%D because we want to be able to redefine the original
+%D \type{\input} when needed, for instance when loading third
+%D party libraries.
+
+\newevery \everybeforereadfile \EveryBeforeReadFile
+\newevery \everyafterreadfile \EveryAfterReadFile
+
+\let \everyreadfile \everybeforereadfile
+
+\newif\iftracefiles
+
+\def\maxreadlevel{3}
+
+\newconditional\trackfilenames
+
+% We need to postpone loading, else we got frozen type-* files and so when
+% a format is generated on a source path.
+
+\appendtoks \settrue\trackfilenames \to \everyjob
+
+\let\trackedfilename\empty
+
+\def\doreadfile#1#2#3#4%
+ {\sanitizefilename#2\to\readfilename
+ \ifx\readfilename\empty
+ % silently ignore
+ \else
+ \let\trackedfilename\readfilename
+ \ifconditional\trackfilenames
+ \doifundefinedelse{fn..\trackedfilename}\donetrue\donefalse
+ \else
+ \donetrue
+ \fi
+ \ifdone
+ \checkfilename\readfilename
+ \ifcase\kindoffile
+ \iftracefiles\writestatus\m!systems{searching for \readfilename\space on #1}\fi
+ % not a full path or url, check for existence
+ \doifelsenothing{#1}
+ {\def\next{\redoreadfile\readfilename{#3}{#4}}}%
+ {\def\next{\redoreadfile{\pathplusfile{#1}{\readfilename}}{#3}{#4}}}%
+ \else
+ % a full path or url, no further checking done
+ \doiffileexistselse\readfilename
+ {\iftracefiles\writestatus\m!systems{located \readfilename}\fi
+ \def\next{#3\dodoreadfile}}%
+ {\iftracefiles\writestatus\m!systems{not found \readfilename}\fi
+ \def\next{#4}}%
+ \fi
+ \else
+ \edef\readfilename{\getvalue{fn..\readfilename}}%
+ \iftracefiles\writestatus\m!systems{already located \readfilename}\fi
+ \def\next{#3\dodoreadfile}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\def\redoreadfile#1#2#3%
+ {\doiffileexistselse{#1}%
+ {\edef\readfilename{#1}%
+ \iftracefiles\writestatus\m!systems{#1 located}\fi
+ \def\next{#2\dodoreadfile}}%
+ {\iftracefiles\writestatus\m!systems{cannot locate #1}\fi
+ \decrement\readlevel\relax
+ \ifnum\readlevel>\zerocount
+ \edef\readfilename{\pathplusfile{\f!parentpath}{\readfilename}}%
+ \def\next{\redoreadfile\readfilename{#2}{#3}}%
+ \else
+ \def\next{#3}%
+ \fi}%
+ \next}
+
+\def\dodoreadfile % we provide hooks, for instance for \enableXML
+ {\ifconditional\trackfilenames
+ \setxvalue{fn..\trackedfilename}{\readfilename}%
+ \fi
+ \the\everybeforereadfile
+ \normalinput\readfilename\relax
+ \the\everyafterreadfile}
+
+\unexpanded\def\readfile% #1%
+ {\let\readlevel\maxreadlevel
+ \doreadfile\empty} % {#1}
+
+\unexpanded\def\ReadFile#1%
+ {\readfile{#1}\donothing\donothing}
+
+%D \macros
+%D {readjobfile,readlocfile,readsysfile,
+%D readfixfile,readsetfile}
+%D
+%D This implementation honnors the third situation, but we
+%D still can get unwanted files loaded and/or can get involved
+%D in extensive searching.
+%D
+%D Due to different needs, we decided to offer four alternative
+%D loading commands. With \type{\readjobfile} we load a local
+%D file and do no backtracking, while \type{\readlocfile}
+%D backtracks~\readlevel\ directories, including the current
+%D one.
+
+\unexpanded\def\readjobfile % #1% current path, no backtracking
+ {\newcounter\readlevel
+ \doreadfile\f!currentpath} % {#1}}
+
+\unexpanded\def\readlocfile % #1% current path, backtracking
+ {\let\readlevel\maxreadlevel
+ \doreadfile\f!currentpath} % {#1}}
+
+%D System files can be anywhere and therefore
+%D \type{\readsysfile} is not bound to the current directory
+%D and obeys the \TEX\ implementation.
+
+\unexpanded\def\readsysfile % #1% current path, obeys tex search
+ {\newcounter\readlevel
+ \doreadfile\empty} % {#1}}
+
+%D Of the last two, \type{\readfixfile} searches on the
+%D directory specified and backtracks too, while
+%D \type{\readsetfile} does only search on the specified path.
+
+\unexpanded\def\readfixfile % #1#2% specified path, backtracking
+ {\let\readlevel\maxreadlevel
+ \doreadfile} % {#1}{#2}}
+
+\unexpanded\def\readsetfile % #1#2% specified path, no backtracking
+ {\newcounter\readlevel
+ \doreadfile} % {#1}{#2}}
+
+%D After having defined this commands, we reconsidered the
+%D previously defined \type{\readfile}. This time we more or
+%D less impose the search order.
+
+\unexpanded\def\readfile#1#2#3%
+ {\readlocfile{#1}{#2}
+ {\readjobfile{#1}{#2}
+ {\readsysfile{#1}{#2}{#3}}}}
+
+%D So now we've got ourselves five file loading commands:
+%D
+%D \starttyping
+%D \readfile {filename} {before loading} {not found}
+%D
+%D \readjobfile {filename} {before loading} {not found}
+%D \readlocfile {filename} {before loading} {not found}
+%D \readfixfile {filename} {before loading} {not found}
+%D \readsysfile {directory} {filename} {before loading} {not found}
+%D \stoptyping
+
+%D \macros
+%D {readjobfile,readlocfile,readsysfile,readfixfile}
+%D
+%D The next four alternatives can be used for opening files
+%D for reading on a line||by||line basis. These commands get
+%D an extra argument, the filetag. Explicit closing is done
+%D in the normal way by \type{\closein}.
+
+\def\doopenin#1#2%
+ {\sanitizefilename#2\to\readfilename
+ \checkfilename\readfilename
+ \ifcase\kindoffile
+ \increment\readlevel
+ \immediate\openin#1=\readfilename\relax
+ \ifeof#1% \relax
+ \ifnum\readlevel>\maxreadlevel % \relax
+ \else
+ \immediate\closein#1% \relax
+ \doopenin{#1}{\pathplusfile\f!parentpath{#2}}%
+ \fi
+ \fi
+ \fi}
+
+\def\openjobin#1#2%
+ {\newcounter\readlevel
+ \doopenin{#1}{\pathplusfile\f!currentpath{#2}}}
+
+\def\opensysin % #1#2%
+ {\let\readlevel\maxreadlevel
+ \doopenin} % {#1}{#2}}
+
+\def\openlocin#1#2%
+ {\let\readlevel\maxreadlevel
+ \doopenin{#1}{\pathplusfile\f!currentpath{#2}}}
+
+\def\openfixin#1#2#3%
+ {\let\readlevel\maxreadlevel
+ \doopenin{#1}{\pathplusfile{#2}{#3}}}
+
+%D \macros
+%D {doiffileelse,doiflocfileelse}
+%D
+%D The next alternative only looks if a file is present. No
+%D loading is done. This one obeys the standard \TEX\
+%D implementation method.
+%D
+%D \starttyping
+%D \doiffileelse {filename} {found} {not found}
+%D \stoptyping
+%D
+%D \starttyping
+%D \doiflocfileelse {filename} {before loading} {not found}
+%D \stoptyping
+
+\def\doiffileelse {\doiffileexistselse}
+\def\doiffile #1{\doiffileexistselse{#1}\firstofoneargument\gobbleoneargument}
+\def\doifnotfile #1{\doiffileexistselse{#1}\gobbleoneargument\firstofoneargument}
+
+\def\doiflocfileelse#1%
+ {\makelocreadfilename{#1}%
+ \doiffileelse\readfilename}
+
+\def\makelocreadfilename#1%
+ {\sanitizefilename#1\to\readfilename
+ \checkfilename\readfilename
+ \ifcase\kindoffile
+ \edef\locreadfilename{\pathplusfile\f!currentpath{#1}}%
+ \fi}
+
+%D \macros
+%D {doonlyonce, doinputonce, doendinputonce}
+%D
+%D Especially macropackages need only be loaded once.
+%D Repetitive loading not only costs time, relocating registers
+%D often leads to abortion of the processing because \TEX's
+%D capacity is limited. One can prevent multiple execution and
+%D loading by using one of both:
+%D
+%D \starttyping
+%D \doonlyonce{actions}
+%D \doinputonce{filename}
+%D \doendinputonce{filename}
+%D \stoptyping
+%D
+%D This command obeys the standard method for locating files.
+
+\long\def\doonlyonce#1#2%
+ {\doifundefined{@@@#1@@@}{\letgvalue{@@@#1@@@}\empty#2}}
+
+\def\doinputonce#1%
+ {\doonlyonce{#1}{\doiffileelse{#1}{\normalinput#1\relax}\donothing}}
+
+\def\doendinputonce#1%
+ {\doifdefined{@@@#1@@@}\endinput}
+
+\def\forgetdoingonce#1%
+ {\global\letbeundefined{@@@#1@@@}}
+
+%D \macros
+%D {doifparentfileelse}
+%D
+%D The test \type{\doifelse{\jobname}{filename}} does not give
+%D the desired result, simply because \type{\jobname} expands
+%D to characters with \CATCODE~12, while the characters in
+%D \type{filename} have \CATCODE~11. So we can better use:
+%D
+%D \starttyping
+%D \doifparentfileelse{filename}{yes}{no}
+%D \stoptyping
+%D
+%D Since \TEXEXEC\ (and thereby \CONTEXT) supports renaming of
+%D the outputfile, we also need to check on that alternative
+%D name.
+
+\ifx\outputfilename\undefined \def\outputfilename{\jobname} \fi
+
+% \def\doifparentfileelse#1#2#3%
+% {\doifsamestringelse{#1}{\jobname }{#2}
+% {\doifsamestringelse{#1}{\jobname.\c!tex}{#2}
+% {\doifsamestringelse{#1}{\outputfilename}{#2}{#3}}}}
+%
+% todo: split name
+
+\def\doifparentfileelse#1%
+ {\doifsamestringelse{#1}{\jobname }\firstoftwoarguments
+ {\doifsamestringelse{#1}{\jobname.\c!tex}\firstoftwoarguments
+ {\doifsamestringelse{#1}{\outputfilename}\firstoftwoarguments\secondoftwoarguments}}}
+
+\def\normalless {<} % geen \let !
+\def\normalmore {>} % geen \let !
+\def\normalequal {=} % geen \let !
+\def\normaldblquote{"} % geen \let !
+
+\newcounter\readingfilelevel
+
+\def\popfilecharacter#1#2%
+ {\ifnum\catcode`#1=\@@other \ifnum#2=\@@other \else
+ %\message{[popping catcode #1 to #2]}%
+ \catcode`#1=#2\relax
+ \fi \fi}
+
+\ifx\\\undefined \let\\\relax \fi
+
+%D This changing catcodes is a direct result from the fact
+%D that we support some long standing conventions with
+%D regards to active characters (german ", polish /,
+%D french : and ;).
+
+\def\startreadingfile% beter een every en \setnormalcatcodes
+ {\doglobal\increment\readingfilelevel
+ \setxvalue{\string\readingfilelevel::\readingfilelevel}%
+ {\catcode`/ =\the\catcode`/%
+ %\catcode`_ =\the\catcode`_% math ! ! !
+ \catcode`" =\the\catcode`"%
+ \catcode`: =\the\catcode`:%
+ \catcode`; =\the\catcode`;%
+ \catcode`< =\the\catcode`<%
+ \catcode`> =\the\catcode`>%
+ \catcode`\noexpand\\=\the\catcode`\\%
+ \catcode`\noexpand\{=\the\catcode`\{%
+ \catcode`\noexpand\}=\the\catcode`\}%
+ \catcode`\noexpand\%=\the\catcode`\%}%
+ \catcode`/ =\@@other
+ %\catcode`_ =\@@other
+ \catcode`" =\@@other
+ \catcode`: =\@@other
+ \catcode`; =\@@other
+ \catcode`< =\@@other
+ \catcode`> =\@@other
+ \catcode`\\=\@@escape
+ \catcode`\{=\@@begingroup
+ \catcode`\}=\@@endgroup
+ \catcode`\%=\@@comment}
+
+\def\stopreadingfile
+ {\getvalue{\string\readingfilelevel::\readingfilelevel}%
+ \doglobal\decrement\readingfilelevel}
+
+%D \macros
+%D {splitfilename}
+%D
+%D I should have made this one sooner. This macro was first needed when
+%D ran into graphic with a period in the pathpart.
+%D
+%D \startbuffer
+%D \def\showfilesplit
+%D {\bgroup \tttf
+%D \hbox{(full: \splitofffull)}\space
+%D \hbox{(path: \splitoffpath)}\space
+%D \hbox{(base: \splitoffbase)}\space
+%D \hbox{(name: \splitoffname)}\space
+%D \hbox{(type: \splitofftype)}\space
+%D \egroup}
+%D
+%D \splitfilename{c:/aa/bb/cc/dd.ee.ff} \showfilesplit \endgraf
+%D \splitfilename{c:/aa/bb/cc/dd.ee} \showfilesplit \endgraf
+%D \splitfilename{c:/aa/bb/cc/dd} \showfilesplit \endgraf
+%D
+%D \splitfilename{dd.ee.ff} \showfilesplit \endgraf
+%D \splitfilename{dd.ee} \showfilesplit \endgraf
+%D \splitfilename{dd} \showfilesplit \endgraf
+%D \stopbuffer
+%D
+%D \start \typebuffer \getbuffer \stop
+
+\def\splitoffroot{.} \chardef\splitoffkind\zerocount
+
+% \def\splitfilename#1%
+% {\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
+% \greedysplitstring\splitofffull\at/\to\splitoffpath\and\splitoffbase
+% \ifx\splitoffbase\empty
+% \let\splitoffpath\empty
+% \let\splitoffbase\splitofffull
+% \fi
+% \greedysplitstring\splitoffbase\at.\to\splitoffname\and\splitofftype
+% \chardef\splitoffkind % can be used to test if pathpart was empty
+% \ifx\splitoffpath\empty \zerocount \else
+% \ifx\splitoffpath\splitoffroot \plusone \else
+% \plustwo \fi\fi
+% \ifx\splitoffname\empty\let\splitoffname\splitoffbase\fi
+% \ifx\splitoffpath\empty\let\splitoffpath\splitoffroot\fi}
+%
+% better, since it also handles leading /'s
+%
+% \splitfilename{oeps/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
+% \splitfilename{/oeps/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
+% \splitfilename{/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
+
+\def\splitfilename#1%
+ {\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
+ \greedysplitstring\splitofffull\at/\to\splitoffpath\and\splitoffbase
+ \ifx\splitoffpath\splitofffull
+ \let\splitoffpath\empty
+ \fi
+ \ifx\splitoffbase\empty
+ \let\splitoffpath\empty
+ \let\splitoffbase\splitofffull
+ \fi
+ \greedysplitstring\splitoffbase\at.\to\splitoffname\and\splitofftype
+ \chardef\splitoffkind % can be used to test if pathpart was empty
+ \ifx\splitoffpath\empty \zerocount \else
+ \ifx\splitoffpath\splitoffroot \plusone \else
+ \plustwo \fi\fi
+ \ifx\splitoffname\empty\let\splitoffname\splitoffbase\fi
+ \ifx\splitoffpath\empty\let\splitoffpath\splitoffroot\fi}
+
+\def\splitfiletype#1%
+ {\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
+ \let\splitoffpath\empty
+ \greedysplitstring\splitofffull\at.\to\splitoffname\and\splitofftype}
+
+%% % gebruikt voor normale (!) files, will change to proper
+%% % installer maybe combined with verb module push/popper
+%%
+%% \def\startreadingfile% beter een every
+%% {\doglobal\increment\readingfilelevel
+%% \setxvalue{popfilecharacters::\readingfilelevel}%
+%% {%\expnormalcatcodes
+%% \expspecialcatcodes}%
+%% %\setnormalcatcodes
+%% \setspecialcatcodes}
+%%
+%% \def\stopreadingfile%
+%% {\getvalue{popfilecharacters::\readingfilelevel}%
+%% \doglobal\decrement\readingfilelevel}
+%%
+%% \ifx\\\undefined \let\\\relax \fi
+%% \ifx\!\undefined \let\!\relax \fi
+%% \ifx\?\undefined \let\?\relax \fi
+%%
+%% \def\expnormalcatcodes%
+%% {\catcode`\noexpand\!=\the\catcode`\! \catcode`\noexpand\?=\the\catcode`\?%
+%% \catcode`\noexpand\&=\the\catcode`\&
+%% \catcode`\noexpand\#=\the\catcode`\# \catcode`\noexpand\$=\the\catcode`\$%
+%% \catcode`\noexpand\%=\the\catcode`\% \catcode`\noexpand\\=\the\catcode`\\%
+%% \catcode`\noexpand\^=\the\catcode`\^ \catcode`\noexpand\_=\the\catcode`\_%
+%% \catcode`\noexpand\{=\the\catcode`\{ \catcode`\noexpand\}=\the\catcode`\}}
+%%
+%% \def\setnormalcatcodes%
+%% {%\ifcase\protectionlevel
+%% \catcode`\!=\@@other \catcode`\?=\@@other
+%% %\else
+%% % \catcode`\!=\@@letter \catcode`\?=\@@letter
+%% %\fi
+%% \catcode`\&=\@@alignment
+%% \catcode`\#=\@@parameter \catcode`\$=\@@mathshift
+%% \catcode`\%=\@@comment \catcode`\\=\@@escape
+%% \catcode`\^=\@@superscript \catcode`\_=\@@subscript
+%% \catcode`\{=\@@begingroup \catcode`\}=\@@endgroup}
+%%
+%% \def\expspecialcatcodes%
+%% {\catcode`\noexpand/=\the\catcode`/%
+%% \catcode`\noexpand"=\the\catcode`"%
+%% \catcode`\noexpand<=\the\catcode`<%
+%% \catcode`\noexpand>=\the\catcode`>}
+%%
+%% \def\setspecialcatcodes%
+%% {\catcode`/=\@@other
+%% \catcode`"=\@@other
+%% \catcode`<=\@@other
+%% \catcode`>=\@@other}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-fun.tex b/Master/texmf-dist/tex/context/base/supp-fun.tex
new file mode 100644
index 00000000000..5f0700deb57
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-fun.tex
@@ -0,0 +1,739 @@
+%D \module
+%D [ file=supp-fun,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Fun Stuff,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D This module implements some typographics tricks that can
+%D be fun when designing document layouts. The examples use
+%D macros that are typical to \CONTEXT, but non \CONTEXT\
+%D users can use the drop caps and first line treatment
+%D macros without problems. This module will be extended
+%D when the need for more of such tricks arises.
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+
+\writestatus{loading}{Context Support Macros / Fun Stuff}
+
+\ifx\definefont\undefined
+ \def\definedfont[#1]{\font\temp#1\relax\temp}
+\fi
+
+%D \macros
+%D {DroppedCaps, DroppedString, DroppedIndent, DroppedLines}
+%D
+%D \startbuffer
+%D \DroppedCaps
+%D {\color[green]} {cmbx12}
+%D {2.2\baselineskip} {2pt} {\baselineskip} {2}
+%D Let's start
+%D \stopbuffer
+%D
+%D \getbuffer with dropped caps, those blown up first
+%D characters of a paragraph. It's hard to implement a general
+%D mechanism that suits all situations, but dropped caps are so
+%D seldomly used that we can permit ourselves a rather user
+%D unfriendly implementation.
+%D
+%D \typebuffer
+%D
+%D As we will see, there are 7 different settings involved. The
+%D first argument takes a command that is used to do whatever
+%D fancy things we want to do, but normally this one will be
+%D empty. The second argument takes the font. Because we're
+%D dealing with something very typographic, there is no real
+%D reason to adopt complicated font switching schemes, a mere
+%D name will do. Font encodings can bring no harm, because the
+%D alphanumeric characters are nearly always located at their
+%D natural position in the encoding vector.
+%D
+%D \startbuffer
+%D \DroppedCaps
+%D {\color[red]} {cmbx12}
+%D {\baselineskip} {0pt} {0pt} {1}
+%D This simple
+%D \stopbuffer
+%D
+%D \getbuffer case shows us what happens when we apply minimal
+%D values. Here we used:
+%D
+%D \typebuffer
+%D
+%D \startbuffer
+%D \DroppedCaps
+%D {\color[red]} {cmbx12}
+%D {2\baselineskip} {0pt} {\baselineskip} {2}
+%D Is this ugly
+%D \stopbuffer
+%D
+%D \getbuffer example the third argument tells
+%D this macro that we want a dropped capital scaled to the
+%D baseline distance. The two zero point arguments are the
+%D horizontal and vertical offsets and the last arguments
+%D determines the hanging indentation. In this paragraph we
+%D set the height to two times the baselinedistance and use
+%D two hanging lines:
+%D
+%D \typebuffer
+%D
+%D Here, the first character is moved down one baseline. Here
+%D we also see why the horizontal offset is important. The
+%D first example (showing the~L) sets this to a few points and
+%D also used a slightly larger height.
+%D
+%D Of course common users (typist) are not supposed to see this
+%D kind of fuzzy definitions, but fortunately \TEX\ permits us
+%D to hide them in macros. Using a macro also enables us to
+%D garantee consistency throughout the document:
+%D
+%D \startbuffer
+%D \def\MyDroppedCaps%
+%D {\DroppedCaps
+%D {\color[green]} {cmbx12}
+%D {5\baselineskip} {3pt} {3\baselineskip} {4}}
+%D
+%D \MyDroppedCaps The implementation
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer of the general macro is rather simple and only
+%D depends on the arguments given and the dimensions of the
+%D strut box. We explicitly load the font, which is no problem
+%D because \TEX\ does not load a font twice. We could have
+%D combined some arguments, like the height, vertical offset
+%D and the number of lines, but the current implementation
+%D proved to be the most flexible. One should be aware of the
+%D fact that the offsets depend on the design of the glyphs
+%D used.
+
+\let\DroppedIndent\!!zeropoint \def\DroppedLines{0}
+
+\def\DroppedString{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
+
+\let\globaldropcaps\global % will be an option, but on by default
+
+\def\localdropcaps{\let\globaldropcaps\relax}
+
+\chardef\DroppedStatus = 0 % 0=done 1=starting 2=doing 3=error
+\chardef\DropMode = 0 % 1 == marginhang
+
+\ifx\keeplinestogether\undefined
+ \let\keeplinestogether\gobbleoneargument
+\fi
+
+\def\DroppedCaps#1#2#3#4#5#6#7% does not yet handle accented chars
+ {\convertargument #7\to\asciia
+ \convertcommand \DroppedString\to\asciib
+ \ExpandBothAfter\doifinstringelse\asciia\asciib
+ {\dontleavehmode
+ \ifhmode\hskip-\parindent\fi
+ \keeplinestogether{#6}%
+ \setbox0\hbox{\definedfont[#2 at #3]#1{#7}\hskip#4}%
+ \ifdim\dp0>\strutdp % one of those Q's , will be option
+ \setbox2\hbox{\raise\dp0\hbox{\lower\strutdp\copy0}}%
+ \ht2\ht0
+ \dp0\strutdp
+ \setbox0\box2
+ \fi
+ \setbox0\hbox
+ {\ifnum\DropMode=\plusone
+ \hskip-\wd0\wd0\zeropoint
+ \fi
+ \lower#5\box0}%
+ \ht0\strutht
+ \dp0\strutdp
+ \ifnum\DropMode=\plusone
+ \globaldropcaps\let\DroppedIndent\!!zeropoint
+ \globaldropcaps\edef\DroppedLines{\number\maxdimen}%
+ \globaldropcaps\chardef\DroppedStatus\plusthree
+ \else
+ \globaldropcaps\edef\DroppedIndent{\the\wd0}%
+ \globaldropcaps\edef\DroppedLines {\number#6}%
+ \globaldropcaps\chardef\DroppedStatus\plustwo
+ \globaldropcaps\hangindent\DroppedIndent
+ \globaldropcaps\hangafter-\DroppedLines
+ \noindent
+ \hskip-\DroppedIndent
+ \fi
+ \vbox{\forgetall\box0}%
+ \nobreak
+ \let\next\ignorespaces} % Could be a one character word !
+ {\globaldropcaps\let\DroppedIndent\!!zeropoint
+ \globaldropcaps\edef\DroppedLines{\number\maxdimen}%
+ \globaldropcaps\chardef\DroppedStatus\plusthree
+ \def\next{#7}}%
+ \let\globaldropcaps\global
+ \next}
+
+%D Before we go to the next topic, we summarize this command:
+%D
+%D \starttyping
+%D \DroppedCaps
+%D {command} {font}
+%D {height} {hoffset} {voffset} {lines}
+%D \stoptyping
+%D
+%D Sometimes you need to make sure that the global settings are
+%D kept local, as in:
+%D
+% %D \startbuffer
+% %D \defineparagraphs[SomePar][n=2,rule=on]
+% %D \setupparagraphs [SomePar][1][width=.5\textwidth]
+% %D \setupparagraphs [SomePar][2][width=.5\textwidth]
+%D \startbuffer
+%D \defineparagraphs[SomePar][n=2,rule=on]
+%D \setupparagraphs [SomePar][1][width=.5\textwidth]
+%D \setupparagraphs [SomePar][2][width=.5\textwidth]
+%D
+%D \startSomePar
+%D \localdropcaps\NiceDroppedCaps{}{cmr12}{0pt}{2}Here we need
+%D to explicitly keep the hanging indentation local, like it or
+%D not.
+%D \SomePar
+%D \localdropcaps\NiceDroppedCaps{}{cmr12}{0pt}{2}Here we need
+%D to explicitly keep the hanging indentation local, like it or
+%D not.
+%D \stopSomePar
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+%D \macros
+%D {AutoDroppedCaps, CheckDroppedCaps}
+%D
+%D {\em To be documented.}
+
+% example usage
+%
+% \def\bpar{\ifvmode\CheckDroppedCaps\fi}
+% \def\epar{\ifhmode\par\fi\CheckDroppedCaps}
+
+\newcount\lastprevgraf
+\newcount\droppedlines
+
+\def\CheckDroppedCaps
+ {\global\lastprevgraf\prevgraf}
+
+\def\AutoDroppedCaps % will be proper core stuff since it
+ {\globaldropcaps\chardef\DroppedStatus\plusone
+ \global\lastprevgraf\zerocount
+ \global\droppedlines\zerocount
+ \EveryPar{\doAutoDroppedCaps}}
+
+\let\AutoDroppedNext\relax
+
+\ifx\AutoDroppedCapsCommand\undefined
+ \def\AutoDroppedCapsCommand{\NiceDroppedCaps{}{SerifBold}{.125em}{3}}
+\fi
+
+\def\doAutoDroppedCaps
+ {\ifcase\DroppedStatus % done
+ \let\next\relax
+ \or % starting
+ % \ifnum\lastprevgraf>0 % tricky, probably a wrong par
+ % \globaldropcaps\chardef\DroppedStatus=3 % and inhibits dropped
+ % \let\next\relax % caps after titles and more than once
+ % \else % so let's nill this rubishly code fragment
+ \let\next\AutoDroppedCapsCommand
+ % \fi % and hope for the best
+ \or % doing
+ \global\advance\droppedlines \lastprevgraf
+ \ifnum\droppedlines=\zerocount
+ \globaldropcaps\chardef\DroppedStatus\zerocount
+ \let\next\relax
+ \else\ifnum\droppedlines>\zerocount
+ \ifnum\droppedlines<\DroppedLines\relax
+ \globaldropcaps\hangindent\DroppedIndent
+ \globaldropcaps\hangafter-\DroppedLines
+ \globaldropcaps\advance\hangafter \droppedlines
+ \hskip-\parindent
+ \let\next\AutoDroppedNext
+ \else
+ \globaldropcaps\chardef\DroppedStatus\zerocount
+ \let\next\relax
+ \fi
+ \else
+ \globaldropcaps\chardef\DroppedStatus\zerocount
+ \let\next\relax
+ \fi\fi
+ \or % error
+ \globaldropcaps\chardef\DroppedStatus\zerocount
+ \let\next\relax
+ \fi
+ \next}
+
+%D \macros
+%D {LineDroppedCaps, NiceDroppedCaps}
+%D
+%D To save definitions, we also provide:
+%D
+%D \starttyping
+%D \LineDroppedCaps {command} {font} {hoffset} {lines}
+%D \NiceDroppedCaps {command} {font} {hoffset} {lines}
+%D \stoptyping
+%D
+%D The first command scales the font to the exact height, while
+%D the second command scales the font to a nice 2.5 times the
+%D line height, a value that gives a pleasant grayness.
+
+\def\DoLineDroppedCaps#1#2#3#4#5% compensation command font offset lines
+ {\scratchcounter#5%
+ \advance\scratchcounter \minusone
+ \scratchdimen\scratchcounter\baselineskip
+ \advance\scratchdimen #1%
+ \NormalizeFontHeight\DummyFont{W}\scratchdimen{#3}%
+ \DroppedCaps{#2}{#3}\TheNormalizedFontSize{#4}
+ {\scratchcounter\baselineskip}{#5}}
+
+\def\LineDroppedCaps% command font offset lines
+ {\DoLineDroppedCaps{\strutht}}
+
+\def\NiceDroppedCaps% command font offset lines
+ {\DoLineDroppedCaps{.5\baselineskip}}
+
+%D \macros
+%D {TreatFirstLine}
+%D
+%D \startbuffer
+%D \TreatFirstLine {\sc} {} {} {}
+%D Instead of limiting its action to one token, the next macro
+%D treats the whole first line. This paragraph was typeset by
+%D saying:
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D \typebuffer
+%D
+%D \startbuffer
+%D \TreatFirstLine {\startcolor[red]\bf} {\stopcolor} {} {}
+%D The combined color and font effect is also possible,
+%D although one must be careful in using macros that accumulate
+%D grouping, but the commands used here are pretty save in that
+%D respect.
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D \typebuffer
+%D
+%D Before we explain the third and fourth argument, we show the
+%D implementation. Those who know a bit about the way \TEX\
+%D treats tokens, will probably see in one glance that this
+%D alternative works all right for most text||only situations
+%D in which there is enough text available for the first line,
+%D but that more complicated things will blow. One has to live
+%D with that. A workaround is rather trivial but obscures the
+%D principles used.
+
+\def\TreatFirstLine#1#2#3#4% before, after, first, next
+ {\leavevmode
+ \bgroup
+ \forgetall
+ \bgroup
+ #1%
+ \setbox0\box\voidb@x
+ \setbox2\box\voidb@x
+ \def\grabfirstline##1 %
+ {\setbox2\hbox
+ {\ifvoid0
+ {#3{\ignorespaces##1}}%
+ \else
+ \unhcopy0\ {#4{##1}}%
+ \fi}%
+ \ifdim\wd2=\zeropoint
+ \setbox0\box\voidb@x
+ \setbox2\box\voidb@x
+ \@EA\grabfirstline
+ \else\ifdim\wd2>\hsize
+ \hbox to \hsize{\strut\unhbox0}#2\egroup
+ \break##1\
+ \egroup
+ \else
+ \setbox0\box2
+ \@EAEAEA\grabfirstline
+ \fi\fi}%
+ \grabfirstline}
+
+%D \startbuffer
+%D \gdef\FunnyCommand
+%D {\getrandomfloat\FunnyR{0}{1}%
+%D \getrandomfloat\FunnyG{0}{1}%
+%D \getrandomfloat\FunnyB{0}{1}%
+%D \definecolor[FunnyColor][r=\FunnyR,g=\FunnyG,b=\FunnyB]%
+%D \color[FunnyColor]}
+%D
+%D \TreatFirstLine {\bf} {} {\FunnyCommand} {\FunnyCommand}
+%D The third and fourth argument can be used to gain special
+%D effects on the individual words. Of course one needs ...
+%D \stopbuffer
+%D
+%D \getbuffer
+%D to know a bit more about the macro package used to get real
+%D nice effects, but this example probably demonstrates the
+%D principles well.
+%D
+%D \typebuffer
+%D
+%D Like in dropped caps case, one can hide such treatments in a
+%D macro, like:
+%D
+%D \starttyping
+%D \def\MyTreatFirstLine%
+%D {\TreatFirstLine{\bf}{}{\FunnyCommand}{\FunnyCommand}}
+%D \stoptyping
+
+%D \macros
+%D {reshapebox}
+%D
+%D \startbuffer
+%D \beginofshapebox
+%D When using \CONTEXT, one can also apply this funny command
+%D to whole lines by using the reshape mechanism. Describing
+%D this interesting mechanism falls outside the scope of this
+%D module, so we only show the trick. This is an example of
+%D low level \CONTEXT\ functionality: it's all there, and it's
+%D stable, but not entirely meant for novice users.
+%D \endofshapebox
+%D
+%D \reshapebox{\FunnyCommand{\box\shapebox}} \flushshapebox
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D \typebuffer
+%D
+%D This mechanism permits hyphenation and therefore gives
+%D better results than the previously discussed macro
+%D \type{\TreatFirstLine}.
+
+%D \macros
+%D {TreatFirstCharacter}
+%D
+%D \startbuffer
+%D \TreatFirstCharacter{\bf\color[green]} Just to be
+%D \stopbuffer
+%D
+%D \getbuffer complete we also offer a very simple one
+%D character alternative, that is not that hard to understand:
+
+\def\TreatFirstCharacter#1#2% command, character
+ {{#1{#2}}}
+
+%D A previous paragraph started with:
+%D
+%D \typebuffer
+
+%D \macros
+%D {StackCharacters}
+%D
+%D The next hack deals with vertical stacking.
+
+\def\StackCharacters#1#2#3#4% sequence vsize vskip command
+ {\vbox #2
+ {\forgetall
+ \baselineskip\zeropoint
+ \def\StackCharacter##1{#4{##1}\cr\noalign{#3}}%
+ \halign
+ {\hss##\hss&##\cr
+ \handletokens#1\with\StackCharacter\cr}}}
+
+%D \startbuffer
+%D \StackCharacters{CONTEXT}{}{\vskip.2ex}{\FunnyCommand}
+%D \stopbuffer
+%D
+%D Such a stack looks like:
+%D
+%D \startlinecorrection
+%D \hbox to \hsize
+%D {$\hss\bfd
+%D \vcenter{\StackCharacters{TEX} {}{\vskip.2ex}{\FunnyCommand}}%
+%D \hss
+%D \vcenter{\StackCharacters{CON} {}{\vskip.2ex}{\FunnyCommand}}
+%D \hss
+%D \vcenter{\StackCharacters{TEXT} {}{\vskip.2ex}{\FunnyCommand}}
+%D \hss
+%D \vcenter{\StackCharacters{CONTEXT}{}{\vskip.2ex}{\FunnyCommand}}
+%D \hss$}
+%D \stoplinecorrection
+%D
+%D and is typeset by saying:
+%D
+%D \typebuffer
+%D
+%D An alternative would have been
+%D
+%D \starttyping
+%D \StackCharacters {CONTEXT} {to 5cm} {\vfill} {\FunnyCommand}
+%D \stoptyping
+
+%D \macros
+%D {processtokens}
+%D
+%D At a lower level horizontal and vertical manipulations are
+%D already supported by:
+%D
+%D \starttyping
+%D \processtokens {begin} {between} {end} {space} {text}
+%D \stoptyping
+%D
+%D \startbuffer[a]
+%D \processtokens
+%D {\hbox to .5\hsize\bgroup} {\hfill}
+%D {\egroup} {\space} {LET'S HAVE}
+%D \stopbuffer
+%D
+%D \startbuffer[b]
+%D \processtokens
+%D {\vbox\bgroup\raggedcenter\hsize1em}
+%D {\vskip.25ex} {\egroup} {\strut} {FUN}
+%D \stopbuffer
+%D
+%D This macro is able to typeset:
+%D
+%D \leavevmode\hbox to \hsize
+%D {$\hfil\hfil
+%D \vcenter{\bf\getbuffer[a]}%
+%D \hfil
+%D \vcenter{\bfd\getbuffer[b]}%
+%D \hfil\hfil$}
+%D
+%D which was specified as:
+%D
+%D \typebuffer[a]
+%D \typebuffer[b]
+
+%D \macros
+%D {NormalizeFontHeight, NormalizeFontWidth,
+%D TheNormalizedFontSize}
+%D
+%D Next we introduce some font manipulation macros. When we
+%D want to typeset some text spread in a well defined area, it
+%D can be considered bad practice to manipulate character and
+%D word spacing. In such situations the next few macros can be
+%D of help:
+%D
+%D \starttyping
+%D \NormalizeFontHeight \name {sample text} {height} {font}
+%D \NormalizeFontWidth \name {sample text} {width} {font}
+%D \stoptyping
+%D
+%D These are implemented using an auxilliary macro:
+
+\def\NormalizeFontHeight{\NormalizeFontSize\ht}
+\def\NormalizeFontWidth {\NormalizeFontSize\wd}
+
+% \def\NormalizeFontSize#1#2#3#4#5%
+% {\bgroup
+% \dimen0=#4% #4 can be \ht0 or so
+% \setbox0\hbox{\definedfont[#5 at 10pt]#3}%
+% \ifdim\wd0>\zeropoint
+% \dimen2=#10 % #1 is \wd or \ht
+% \dimen4=10000pt
+% \divide\dimen4 \dimen2
+% \divide\dimen0 \plusthousand
+% \dimen0=\number\dimen4\dimen0
+% \xdef\TheNormalizedFontSize{\the\dimen0}%
+% \else
+% \dimen0\bodyfontsize
+% \fi
+% \definedfont[#5 at \the\dimen0]%
+% \expandafter
+% \egroup
+% \expandafter\font\expandafter#2\fontname\font\relax}
+%
+% the familiar struggle with accuracy forces us to use:
+
+\def\NormalizeFontSize#1#2#3#4#5%
+ {\bgroup
+ \dimen0=#4% #4 can be \ht0 or so
+ \setbox0\hbox{\definedfont[#5 at 5pt]#3}% 10pt
+ \ifdim\wd0>\zeropoint
+ \dimen2=#10 % #1 is \wd or \ht
+ \dimen4=\maxdimen % 10000pt
+ \divide\dimen4 \dimen2
+ \divide\dimen0 1638 % 1000
+ \dimen0=\number\dimen4\dimen0
+ \divide \dimen0 \plustwo % ...
+ \xdef\TheNormalizedFontSize{\the\dimen0}%
+ \else
+ \dimen0\bodyfontsize
+ \fi
+ \definedfont[#5 at \the\dimen0]%
+ \expandafter
+ \egroup
+ \expandafter\font\expandafter#2\fontname\font\relax}
+
+%D Afterwards, we have access to the calculated size by:
+
+\let\TheNormalizedFontSize\!!zeropoint
+
+%D Extra:
+
+\def\WidthSpanningText#1#2#3% text width font
+ {\hbox{\NormalizeFontWidth\temp{#1}{#2}{#3}\temp\the\everydefinedfont#1}}
+
+%D Consider for instance:
+%D
+%D \startbuffer
+%D \NormalizeFontHeight \tmp {X} {2\baselineskip} {cmr10}
+%D
+%D {\tmp To Be Or Not To Be}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This shows up as (we also show the baselines):
+%D
+%D {\showbaselines\getbuffer}
+%D
+%D The horizontal counterpart is:
+%D
+%D \startbuffer
+%D \NormalizeFontWidth \tmp {This Line Fits} {\hsize} {cmr10}
+%D
+%D \hbox{\tmp This Line Fits}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D The calculated font scale is avaliable in the macro
+%D \type{\NormalizedFontSize}.
+%D
+%D \startlinecorrection
+%D \ruledhbox{\getbuffer}
+%D \stoplinecorrection
+%D
+%D One can of course combine these macros with the ones
+%D described earlier, like in:
+%D
+%D \starttyping
+%D \NormalizeFontHeight {text} \DroppedFont {2\baselineskip} {cmbx12}
+%D
+%D \def\NicelyDroppedCaps
+%D {\DroppedCaps
+%D {\color[green]}
+%D {\DroppedFont}
+%D {2pt}
+%D {\baselineskip}
+%D {2}}
+%D \stoptyping
+%D
+%D It's up to the reader to test this one.
+
+\unexpanded\def\FirstNCharacters#1#2% \FirstNCharacters{3}{fr{\"o}beln}
+ {\bgroup
+ \scratchcounter\zerocount
+ \def\docommando##1%
+ {\ifnum\scratchcounter=#1\else
+ ##1\relax % catches ##1 = \"e and alike
+ \advance\scratchcounter\plusone
+ \fi}
+ \handletokens#2\with\docommando
+ \egroup}
+
+%D \macros
+%D {FittingText}
+%D
+%D First used in Pascal (demo-bbv):
+%D
+%D \startbuffer
+%D \ruledvbox{\FittingText{3cm}{1cm}{Serif}{24pt}{1pt}{1}
+%D {\veryraggedright
+%D \hangindent1em\hangafter1\relax
+%D \begstrut \dorecurse{8}{Bram Marta }\unskip \endstrut}}
+%D
+%D \ruledvbox{\FittingText{3cm}{1cm}{Serif}{24pt}{1pt}{1}
+%D {\raggedleft\begstrut Bram\\Marta \unskip\endstrut}}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+
+% #1 width #2 height #3 font #4 size #5 step #6 interlinie #7 text
+
+\long\def\FittingText#1#2#3#4#5#6#7%
+ {\bgroup
+ \forgetall
+ \dontcomplain
+ \setuptolerance[\v!verytolerant]% == \tolerance4500
+ \hsize#1%
+ \def\\{\softbreak}%
+ \!!heighta#4%
+ \!!heightb#2%
+ \doloop
+ {\ifdim\!!heighta>\onepoint
+ \expanded{\definefont[\s!dummy][#3 at \the\!!heighta][\c!interlinespace=#6]}%
+ \getvalue\s!dummy
+ \setbox\scratchbox\vbox{#7\endgraf}%
+ \ifdim\ht\scratchbox>\!!heightb
+ \advance\!!heighta-#5%
+ \else
+ \beginshapebox
+ \unvcopy\scratchbox
+ \endshapebox
+ \global\dimen1\hsize
+ \reshapebox
+ {\setbox\shapebox\hbox{\unhbox\shapebox}%
+ \ifdim\wd\shapebox>\dimen1
+ \global\dimen1\wd\shapebox
+ \fi}%
+ \ifdim\dimen1>\hsize
+ \advance\!!heighta-#5%
+ \else
+ \exitloop
+ \fi
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ %\writestatus{\strippedcsname\FittingText}{height: \the\!!heighta}%
+ \unvbox\scratchbox
+ \egroup}
+
+%D New:
+
+% \font width gap font spec text
+
+\def\NormalizeFontWidthSpread#1#2#3#4#5#6%
+ {\global\setfalse\NFSpread
+ \scratchdimen#3%
+ \scratchdimen-.5\scratchdimen
+ \advance\scratchdimen#2\relax
+ \NormalizeFontWidth
+ #1%
+ {\def\+{\global\settrue\NFSpread\gobbleuntil\relax}%
+ \def\\{\gobbleuntil\relax}% newline
+ \setupspacing
+ #6\relax}%
+ {\scratchdimen}%
+ {#4}%
+ \ifconditional\NFSpread
+ % de gap valt in de binding
+ \else
+ \definefont[\strippedcsname#1][#4 #5]%
+ \fi}
+
+\def\SpreadGapText#1#2%
+ {{\def\+{\kern#1}#2}}
+
+\def\GapText#1#2#3#4#5% width distance font spec title
+ {\bgroup
+ \NormalizeFontWidthSpread\DummyFont{#1}{#2}{#3}{#4}{#5}%
+ \DummyFont\setupspacing\SpreadGapText{#2}{#5}\endgraf
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-ini.tex b/Master/texmf-dist/tex/context/base/supp-ini.tex
new file mode 100644
index 00000000000..2dc88d246ac
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-ini.tex
@@ -0,0 +1,59 @@
+%D \module
+%D [ file=supp-ini,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Support ystem Macros,
+%D subtitle=Initializations,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Initializations}
+
+\unprotect
+
+%D If you want control, you can have it:
+
+\newif\ifeightbitcharacters \eightbitcharacterstrue
+
+%D We want to have access to the raw alternatives of the
+%D special characters. We use a \type {\xdef} instead of
+%D \type {\let} because we need an expandable token in a
+%D \type {\write}.
+
+\bgroup
+
+\catcode`B=\@@begingroup
+\catcode`E=\@@endgroup
+\catcode`.=\@@escape
+
+.catcode `.{ 12 .xdef .letteropenbrace B.string{E
+.catcode `.} 12 .xdef .letterclosebrace B.string}E
+.catcode `.& 12 .xdef .letterampersand B.string&E
+.catcode `.< 12 .xdef .letterless B.string<E
+.catcode `.> 12 .xdef .lettermore B.string>E
+.catcode `.# 12 .xdef .letterhash B.string#E
+.catcode `." 12 .xdef .letterdoublequote B.string"E
+.catcode `.' 12 .xdef .lettersinglequote B.string'E
+.catcode `.$ 12 .xdef .letterdollar B.string$E
+.catcode `.% 12 .xdef .letterpercent B.string%E
+.catcode `.^ 12 .xdef .letterhat B.string^E
+.catcode `._ 12 .xdef .letterunderscore B.string_E
+.catcode `.| 12 .xdef .letterbar B.string|E
+.catcode `.~ 12 .xdef .lettertilde B.string~E
+.catcode `.\ 12 .xdef .letterbackslash B.string\E
+.catcode `./ 12 .xdef .letterslash B.string/E
+.catcode `.? 12 .xdef .letterquestionmark B.string?E
+.catcode `.! 12 .xdef .letterexclamationmark B.string!E
+.catcode `.@ 12 .xdef .letterat B.string@E
+
+ .global .let .letterescape .letterbackslash
+ .global .let .letterbgroup .letteropenbrace
+ .global .let .letteregroup .letterclosebrace
+
+.egroup
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-lan.tex b/Master/texmf-dist/tex/context/base/supp-lan.tex
new file mode 100644
index 00000000000..ebb47424c8f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-lan.tex
@@ -0,0 +1,1548 @@
+%D \module
+%D [ file=supp-lan,
+%D version=1997.03.20,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Language Options,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module needs a drastic update: can be made simplier
+%D and faster; code can move to core module.
+
+%D Also, commenting the previous versions code will clear up
+%D some memory.
+
+%D \gdef\starttest
+%D {\blank
+%D \noindent
+%D \halign\bgroup\tt##\hskip2em&##\hskip2em&##\cr}
+%D
+%D \gdef\stoptest
+%D {\egroup
+%D \blank}
+%D
+%D \gdef\test#1%
+%D {\convertargument#1\to\ascii\ascii&\hyphenatedword{#1}&#1\cr}
+
+%D One of \TEX's strong points in building paragraphs is the way
+%D hyphenations are handled. Although for real good hyphenation
+%D of non||english languages some extensions to the program are
+%D needed, fairly good results can be reached with the standard
+%D mechanisms and an additional macro, at least in Dutch.
+
+\unprotect
+
+\writestatus{loading}{Context Support Macros / Language Options}
+
+%D \CONTEXT\ originates in the wish to typeset educational
+%D materials, especially in a technical environment. In
+%D production oriented environments, a lot of compound words
+%D are used. Because the Dutch language poses no limits on
+%D combining words, we often favor putting dashes between those
+%D words, because it facilitates reading, at least for those
+%D who are not that accustomed to it.
+%D
+%D In \TEX\ compound words, separated by a hyphen, are not
+%D hyphenated at all. In spite of the multiple pass paragraph
+%D typesetting this can lead to parts of words sticking into
+%D the margin. The solution lays in saying \type
+%D {spoelwater||terugwinunit} instead of \type
+%D {spoelwater-terugwinunit}. By using a one character command
+%D like \type {|}, delimited by the same character \type {|},
+%D we get ourselves both a decent visualization (in \TEXEDIT\
+%D and colored verbatim we color these commands yellow) and an
+%D efficient way of combining words.
+%D
+%D The sequence \type{||} simply leads to two words connected by
+%D a hyphen. Because we want to distinguish such a hyphen from
+%D the one inserted when \TEX\ hyphenates a word, we use a bit
+%D longer one.
+%D
+%D \hyphenation {spoel-wa-ter te-rug-win-unit}
+%D
+%D \starttest
+%D \test {spoelwater||terugwinunit}
+%D \stoptest
+%D
+%D As we already said, the \type{|} is a command. This commands
+%D accepts an optional argument before it's delimiter, which is
+%D also a \type{|}.
+%D
+%D \hyphenation {po-ly-meer che-mie}
+%D
+%D \starttest
+%D \test {polymeer|*|chemie}
+%D \stoptest
+%D
+%D Arguments like \type{*} are not interpreted and inserted
+%D directly, in contrary to arguments like:
+%D
+%D \starttest
+%D \test {polymeer|~|chemie}
+%D \test {|(|polymeer|)|chemie}
+%D \test {polymeer|(|chemie|)| }
+%D \stoptest
+%D
+%D Although such situations seldom occur |<|we typeset thousands
+%D of pages before we encountered one that forced us to enhance
+%D this mechanism|>| we also have to take care of comma's.
+%D
+%D \hyphenation {uit-stel-len}
+%D
+%D \starttest
+%D \test {op||, in|| en uitstellen}
+%D \stoptest
+%D
+%D The next special case (concerning quotes) was brought to my
+%D attention by Piet Tutelaers, one of the driving forces
+%D behind rebuilding hyphenation patterns for the dutch
+%D language.\footnote{In 1996 the spelling of the dutch
+%D language has been slightly reformed which made this topic
+%D actual again.} We'll also take care of this case.
+%D
+%D \starttest
+%D \test {AOW|'|er}
+%D \test {cd|'|tje}
+%D \test {ex|-|PTT|'|er}
+%D \test {rock|-|'n|-|roller}
+%D \stoptest
+%D
+%D Tobias Burnus pointed out that I should also support
+%D something like
+%D
+%D \starttest
+%D \test {well|_|known}
+%D \stoptest
+%D
+%D to stress the compoundness of hyphenated words.
+%D
+%D Of course we also have to take care of the special case:
+%D
+%D \starttest
+%D \test {text||color and ||font}
+%D \stoptest
+
+%D \macros
+%D {installdiscretionaries}
+%D
+%D The mechanism described here is one of the older inner parts
+%D of \CONTEXT. The most recent extensions concerns some
+%D special cases as well as the possibility to install other
+%D characters as delimiters. The prefered way of specifying
+%D compound words is using \type{||}, which is installed by:
+%D
+%D \starttyping
+%D \installdiscretionaries || -
+%D \stoptyping
+%D
+%D Some alternative definitions are:
+%D
+%D \startbuffer
+%D \installdiscretionaries ** -
+%D \installdiscretionaries ++ -
+%D \installdiscretionaries // -
+%D \installdiscretionaries ~~ -
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D after which we can say:
+%D
+%D \bgroup
+%D \getbuffer
+%D \starttest
+%D \test {test**test**test}
+%D \test {test++test++test}
+%D \test {test//test//test}
+%D \test {test~~test~~test}
+%D \stoptest
+%D \egroup
+
+%D \macros
+%D {compoundhyphen,
+%D beginofsubsentence,endofsubsentence}
+%D
+%D Now let's go to the macros. First we define some variables.
+%D In the main \CONTEXT\ modules these can be tuned by a setup
+%D command. Watch the (maybe) better looking compound hyphen.
+
+% I've added \hbox's so that in mathmode we get proper chars
+
+\def\compoundhyphen {\hbox{-\kern-.25ex-}}
+\def\beginofsubsentence {\hbox{---}}
+\def\endofsubsentence {\hbox{---}}
+
+%D The last two variables are needed for subsentences
+%D |<|like this one|>| which we did not yet mention.
+%D
+%D We want to enable breaking but at the same time don't want
+%D compound characters like |-| or || to be separated from the
+%D words. \TEX\ hackers will recognise the next two macro's:
+
+\def\prewordbreak {\penalty10000\hskip0pt\relax}
+\def\postwordbreak {\penalty0\prewordbreak}
+
+%D We first show the original implementation, which only
+%D supports \type{|} as command and delimiter. Before
+%D activating \type{|} we save it's value:
+%D
+%D \starttyping
+%D \edef\domathmodediscretionary{\string|}
+%D \stoptyping
+%D
+%D after which we're ready to define it's meaning to:
+%D
+%D \starttyping
+%D \catcode`\|=\@@active
+%D
+%D \unexpanded\def|%
+%D {\ifmmode
+%D \expandafter\domathmodediscretionary
+%D \else
+%D \expandafter\dotextmodediscretionary
+%D \fi}
+%D \stoptyping
+%D
+%D We need a two stage \type{\futurelet} because we want to
+%D look ahead for both the compound character definition and
+%D the (optional) comma that follows it, and because we want to
+%D prevent that \TEX\ puts this comma on the next line. We use
+%D \type{\next} for easy and fast checking of the argument, we
+%D save this argument (which can consist of more tokens) and
+%D also save the character following the \type{|#1|} in
+%D \type{\nextnext}.
+%D
+%D \starttyping
+%D \def\dotextmodediscretionary%
+%D {\bgroup
+%D \futurelet\next\dodotextmodediscretionary}
+%D
+%D \def\dodotextmodediscretionary#1|%
+%D {\def\betweendiscretionaries{#1}%
+%D \futurelet\nextnext\dododotextmodediscretionary}
+%D \stoptyping
+%D
+%D The main macro consists of quite some \type{\ifx} tests
+%D while \type{\checkafterdiscretionary} handles the commas.
+%D We show the simplified version here:
+%D
+%D \starttyping
+%D \def\dododotextmodediscretionary%
+%D {\let\nextnextnext=\egroup
+%D \ifx |\next
+%D \checkafterdiscretionary
+%D \prewordbreak\hbox{\compoundhyphen\nextnext}\allowbreak\postwordbreak
+%D \else\ifx=\next
+%D \prewordbreak\compoundhyphen
+%D \else\ifx~\next
+%D \discretionary{-}{}{\thinspace}\postwordbreak
+%D \else\ifx(\next
+%D \prewordbreak\discretionary{}{(-}{(}\prewordbreak
+%D \else\ifx)\next
+%D \prewordbreak\discretionary{-)}{}{)}\prewordbreak
+%D \else\ifx'\next
+%D \prewordbreak\discretionary{-}{}{'}\postwordbreak
+%D \else
+%D \checkafterdiscretionary
+%D \prewordbreak\hbox{\betweendiscretionaries\nextnext}\allowbreak\postwordbreak
+%D \fi\fi\fi\fi\fi\fi
+%D \nextnextnext}
+%D
+%D \def\checkafterdiscretionary%
+%D {\ifx,\nextnext
+%D \def\nextnextnext{\afterassignment\egroup\let\next=}%
+%D \else
+%D \let\nextnext=\relax
+%D \fi}
+%D \stoptyping
+%D
+%D Handling \type{(} and \type{)} is a a bit special, because
+%D \TEX\ sees them as decent hyphenation points, according to
+%D their \type{\lccode} being non||zero. For the same reason,
+%D later on in this module we cannot manipulate the
+%D \type{\lccode} but take the \type{\uccode}.
+
+%D The most recent implementation is more advanced. As
+%D demonstrated we can install delimiters, like:
+%D
+%D \starttyping
+%D \installdiscretionaries || \compoundhyphen
+%D \stoptyping
+%D
+%D This time we have to use a bit more clever way of saving the
+%D math mode specification of the character we're going to
+%D make active. We also save the user supplied compound hyphen.
+%D We show the a bit more traditional implementation first.
+%D
+%D \starttyping
+%D \def\installdiscretionaries#1%
+%D {\catcode`#1\@@other
+%D \expandafter\doinstalldiscretionaries\string#1}
+%D
+%D \def\doinstalldiscretionaries#1%
+%D {\setvalue{mathmodediscretionary#1}{#1}%
+%D \catcode`#1\@@active
+%D \dodoinstalldiscretionaries}
+%D
+%D \def\dodoinstalldiscretionaries#1#2%
+%D {\setvalue{textmodediscretionary\string#1}{#2}%
+%D \unexpanded\def#1{\discretionarycommand#1}}
+%D \stoptyping
+%D
+%D A bit more \CATCODE\ and character trickery enables us to
+%D discard the two intermediate steps. This trick originates
+%D on page~394 of the \TEX book, in the appendix full of
+%D dirty tricks. The second argument has now become redundant,
+%D but I decided to reserve it for future use. At least it
+%D remembers us of the symmetry.
+
+\beginTEX
+
+\def\installdiscretionaries#1#2#3%
+ {\convertargument#1\to\ascii
+ \setevalue{\strippedcsname\mathmodediscretionary\string#1}{\ascii}%
+ \setvalue {\strippedcsname\textmodediscretionary\string#1}{#3}%
+ \catcode`#1=\@@active
+ \scratchcounter=\the\uccode`~
+ \uccode`~=`#1
+ \uppercase{\unexpanded\def~{\discretionarycommand~}}%
+ \uccode`~=\scratchcounter}
+
+\endTEX
+
+\beginETEX \detokenize
+
+\def\installdiscretionaries#1#2#3%
+ {\setevalue{\strippedcsname\mathmodediscretionary\string#1}{\detokenize{#1}}%
+ \setvalue {\strippedcsname\textmodediscretionary\string#1}{#3}%
+ \catcode`#1=\@@active
+ \scratchcounter=\the\uccode`~
+ \uccode`~=`#1
+ \uppercase{\unexpanded\def~{\discretionarycommand~}}%
+ \uccode`~=\scratchcounter}
+
+\endETEX
+
+\def\dohandlemathmodebar#1%
+ {\getvalue{\strippedcsname\mathmodediscretionary\string#1}}
+
+\def\discretionarycommand
+ {\relax\ifmmode
+ \expandafter\dohandlemathmodebar
+ \else
+ \expandafter\dotextmodediscretionary
+ \fi}
+
+%D The next piece of code is a torture test for this previous
+%D macro. The \type {\relax} before the \type {\ifmmode} is
+%D needed because of the alignment scanner (in \ETEX\ this
+%D problem is not present because there a protected macro is
+%D not expanded. Thanks to Tobias Burnus for providing this
+%D example.
+%D
+%D \startformula
+%D \left|f(x_n)-{1\over2}\right| =
+%D {\cases{|{1\over2}-x_n| &for $0\le x_n < {1\over2}$\cr
+%D |x_n-{1\over2}| &for ${1\over2}<x_n\le1$ \cr}}
+%D \stopformula
+
+%D \macros
+%D {defineactivecharacter}
+%D
+%D In \type {lang-ger.tex} we define some language specific
+%D commands for german input, like:
+%D
+%D \starttyping
+%D \startlanguagespecifics[de]
+%D \installcompoundcharacter "a {\moveaccent{-.1ex}\"a\midworddiscretionary}
+%D \stoplanguagespecifics
+%D \stoptyping
+%D
+%D Occasionally we have to redefine such an active character,
+%D like in:
+%D
+%D \starttyping
+%D \startencoding[pdfdoc]
+%D \startlanguagespecifics[de]
+%D \defineactivecharacter " {\"}
+%D \stoplanguagespecifics
+%D \stopencoding
+%D \stoptyping
+%D
+%D Here is the command we used:
+
+% \def\next{#2}% \unexpanded\def\next is wrong in non||etex
+% \uppercase{\let~\next}%
+
+\def\defineactivecharacter #1 #2%
+ {\catcode`#1=\@@active
+ \scratchcounter=\the\uccode`~
+ \uccode`~=`#1\relax
+ \uppercase{\def\next{~}}%
+ %\expandafter\unexpanded\expandafter\def\next{#2}%
+ \expandafter\def\next{#2}% unexpanded goes wrong in pdfdoc
+ \uccode`~=\scratchcounter}
+
+%D The next alternative also supports character numbers:
+
+\def\defineactivecharacter #1 #2%
+ {\scratchcounter\the\uccode`~
+ \expandafter\doifnumberelse\expandafter{\string#1}
+ {\catcode #1=\@@active \uccode`~= #1\relax}
+ {\catcode`#1=\@@active \uccode`~=`#1\relax}%
+ \uppercase{\def\next{~}}%
+ %\expandafter\unexpanded\expandafter\def\next{#2}%
+ \expandafter\def\next{#2}% unexpanded goes wrong in pdfdoc
+ \uccode`~\scratchcounter}
+
+%D One reason for abusing the \type{~} is that it is already
+%D an active character, so it is unlikely to appear as argument.
+
+%D The next implementation is about 20\% faster; 1M
+%D definitions on a 1Gig machine takes about 19 seconds
+%D (against 24 for the previous alternative).
+
+\chardef\activehackcode=`~
+
+% \def\defineactivecharacter #1 %
+% {\scratchcounter\the\uccode\activehackcode
+% \uccode\activehackcode\expandafter\doifnumberelse
+% \expandafter{\string#1}\empty`#1%
+% \catcode\uccode\activehackcode\@@active
+% \uppercase{\def\next{~}}%
+% \uccode\activehackcode\scratchcounter
+% \expandafter\def\next}% unexpanded goes wrong in pdfdoc
+
+%D But ...
+
+\def\defineactivecharacter #1 #2%
+ {\scratchcounter\uccode\activehackcode
+ \uccode\activehackcode\expandafter\doifnumberelse
+ \expandafter{\string#1}\empty`#1%
+ \catcode\uccode\activehackcode\@@active
+ \uppercase{\def\next{~}}%
+ \uccode\activehackcode\scratchcounter
+ % unexpanded goes wrong in pdfdoc
+ \@EA\@EA\@EA\def\@EA\next\@EA{\@EA\dohandleactivecharacter\next{#2}}}
+
+\let\dohandleactivecharacter\secondoftwoarguments
+
+\def\donthandleactivecharacter#1#2{\noexpand#1}
+
+%D A goody:
+
+\def\makecharacteractive #1 %
+ {\catcode`#1\active}
+
+%D Although adapting character codes and making characters
+%D active can interfere with other features of macropackages,
+%D normally there should be no problems with things like:
+%D
+%D \starttyping
+%D \installdiscretionary || +
+%D \installdiscretionary ++ =
+%D \stoptyping
+%D
+%D The real work is done by the next set of macros. We have
+%D to use a double \type{\futurelet} because we have to take
+%D following characters into account.
+
+\def\dotextmodediscretionary#1%
+ {\bgroup
+ \def\dodotextmodediscretionary##1#1%
+ {\def\betweendiscretionary{##1}%
+ \futurelet\nextnext\dododotextmodediscretionary}%
+ \let\discretionarycommand=#1%
+ \def\textmodediscretionary%
+ {\getvalue{\strippedcsname\textmodediscretionary\string#1}}%
+ \futurelet\next\dodotextmodediscretionary}
+
+\def\dododotextmodediscretionary
+ {\let\nextnextnext\egroup
+ \ifx\discretionarycommand\next
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak
+ \egroup
+ \else\ifx=\next
+ \prewordbreak\textmodediscretionary
+ \else\ifx~\next
+ \prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak
+ \else\ifx_\next
+ \prewordbreak\discretionary{\textmodediscretionary}
+ {\textmodediscretionary}{\textmodediscretionary}\prewordbreak
+ \else\ifx(\next
+ \ifdim\lastskip>\zeropoint\relax
+ (\prewordbreak
+ \else
+ \prewordbreak\discretionary{}{(-}{(}\prewordbreak
+ \fi
+ \else\ifx)\next
+ \ifx\nextnext\blankspace
+ \prewordbreak)\relax
+ \else
+ \prewordbreak\discretionary{-)}{}{)}\prewordbreak
+ \fi
+ \else\ifx'\next
+ \prewordbreak\discretionary{-}{}{'}\postwordbreak
+ \else\ifx<\next
+ \beginofsubsentence\prewordbreak\beginofsubsentencespacing
+ \else\ifnum\uccode`>=\nextuccode
+ \endofsubsentencespacing\prewordbreak\endofsubsentence
+ \else
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ \prewordbreak
+ \discretionary{\hbox{\betweendiscretionary}}{}{\hbox{\betweendiscretionary}}%
+ \allowbreak\postwordbreak
+ \egroup
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \nextnextnext}
+
+\def\checkbeforediscretionary
+ {\setbox0\lastbox
+ \ifdim\wd0=\zeropoint
+ \let\postwordbreak\prewordbreak
+ \fi
+ \box0\relax}
+
+\def\checkafterdiscretionary
+ {\ifx,\nextnext
+ \def\nextnextnext{\afterassignment\egroup\let\next=}%
+ \else
+ \let\nextnext\relax
+ \fi}
+
+%D The macro \type{\checkbeforediscretionary} takes care of
+%D loners like \type{||word}, while it counterpart
+%D \type{\checkafterdiscretionary} is responsible for handling
+%D the comma.
+
+%D \macros
+%D {beginofsubsentencespacing,endofsubsentencespacing}
+%D
+%D In the previous macros we provided two hooks which can be
+%D used to support nested sub||sentences. In \CONTEXT\ these
+%D hooks are used to insert a small space when needed.
+
+\let\beginofsubsentencespacing=\relax
+\let\endofsubsentencespacing =\relax
+
+%D Before we show some more tricky alternative, we first install
+%D the mechanism:
+
+\installdiscretionaries || \compoundhyphen
+
+%D \macros
+%D {fakecompoundhyphen}
+%D
+%D In headers and footers as well as in active pieces of text
+%D we need a dirty hack. Try to imagine what is needed to
+%D savely break the next text across a line and at the same
+%D time make the words interactive.
+%D
+%D \starttyping
+%D \goto{Some||Long||Word}
+%D \stoptyping
+
+\def\currentspaceskip
+ {\fontdimen2\font\!!plus\fontdimen3\font\!!minus\fontdimen4\font\relax}
+
+% \def\fakecompoundhyphen% wrong
+% {\def|##1|{\compoundhyphen\nobreak\hskip-\currentspaceskip\allowbreak}}
+
+\ifx\newsignal\undefined
+
+ \let\fakecompoundhyphen\relax
+
+\else
+
+ \newsignal\compoundbreakpoint
+
+ % \def\fakecompoundhyphen%
+ % {\def|##1|%
+ % {\doifelsenothing{##1}{\compoundhyphen}{##1}%
+ % \kern\compoundbreakpoint\allowbreak}}
+
+ \def\fakecompoundhyphen
+ {\def\|{\mathortext\vert\dofakecompoundhyphen}}
+
+ \def\dofakecompoundhyphen
+ {\def##1|%
+ {\doifelsenothing{##1}\compoundhyphen{##1}%
+ \kern\compoundbreakpoint\allowbreak}}
+
+\fi
+
+%D One of the drawbacks of this mechanism is that characters can
+%D be made active afterwards. The next alternative can be used
+%D in such situations. This time we don't compare the arguments
+%D directly but use the \type{\uccode}'s instead. \TEX\
+%D initializes these codes of the alphabetics glyphs to their
+%D uppercase counterparts. Normally the other characters remain
+%D zero. If so, we can use the \type{\uccode} as a signal.
+
+%D \macros
+%D {enableactivediscretionaries}
+%D
+%D The more advanced mechanism is activated by calling:
+%D
+%D \starttyping
+%D \enableactivediscretionaries
+%D \stoptyping
+%D
+%D which is defined as:
+
+\def\enableactivediscretionaries
+ {\uccode`'=`'\relax \uccode`~=`~\relax \uccode`_=`_\relax
+ \uccode`(=`(\relax \uccode`)=`)\relax \uccode`==`=\relax
+ \uccode`<=`<\relax \uccode`>=`>\relax
+ \let\dotextmodediscretionary = \activedotextmodediscretionary
+ \let\dododotextmodediscretionary = \activedododotextmodediscretionary}
+
+%D We only have to redefine two macros. While saving the
+%D \type{\uccode} in a macro we have to take care of empty
+%D arguments, like in \type{||}.
+
+\def\activedotextmodediscretionary#1%
+ {\bgroup
+ \def\dodotextmodediscretionary##1#1%
+ {\def\betweendiscretionary{##1}%
+ \def\nextuccode####1####2\relax%
+ {\ifcat\noexpand####1\noexpand\relax
+ \edef\nextuccode{0}%
+ \else
+ \edef\nextuccode{\the\uccode`####1}%
+ \fi}%
+ \nextuccode##1@\relax
+ \futurelet\nextnext\dododotextmodediscretionary}%
+ \let\discretionarycommand=#1%
+ \def\textmodediscretionary%
+ {\getvalue{\strippedcsname\textmodediscretionary\string#1}}%
+ \futurelet\next\dodotextmodediscretionary}
+
+%D This time we use \type{\ifnum}:
+
+\def\activedododotextmodediscretionary
+ {\let\nextnextnext\egroup
+ \ifx\discretionarycommand\next
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak
+ \egroup
+ \else\ifnum\uccode`==\nextuccode
+ \prewordbreak\textmodediscretionary
+ \else\ifnum\uccode`~=\nextuccode
+ \prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak
+ \else\ifnum\uccode`_=\nextuccode
+ \prewordbreak\discretionary{\textmodediscretionary}
+ {\textmodediscretionary}{\textmodediscretionary}\prewordbreak
+ \else\ifnum\uccode`(=\nextuccode
+ \ifdim\lastskip>\zeropoint\relax
+ (\prewordbreak
+ \else
+ \prewordbreak\discretionary{}{(-}{(}\prewordbreak
+ \fi
+ \else\ifnum\uccode`)=\nextuccode
+ \ifx\nextnext\blankspace
+ \prewordbreak)\relax
+ \else
+ \prewordbreak\discretionary{-)}{}{)}\prewordbreak
+ \fi
+ \else\ifnum\uccode`'=\nextuccode
+ \prewordbreak\discretionary{-}{}{'}\postwordbreak
+ \else\ifnum\uccode`<=\nextuccode
+ \beginofsubsentence\prewordbreak\beginofsubsentencespacing
+ \else\ifnum\uccode`>=\nextuccode
+ \endofsubsentencespacing\prewordbreak\endofsubsentence
+ \else
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ %\prewordbreak\hbox{\betweendiscretionary\nextnext}\allowbreak
+ \prewordbreak
+ \discretionary{\hbox{\betweendiscretionary}}{}{\hbox{\betweendiscretionary}}%
+ \allowbreak\postwordbreak
+ \egroup
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \nextnextnext}
+
+%D Now we can safely do things like: \enableactivediscretionaries
+%D
+%D \starttyping
+%D \catcode`<=\@@active \def<{hello there}
+%D \catcode`>=\@@active \def>{hello there}
+%D \catcode`(=\@@active \def({hello there}
+%D \catcode`)=\@@active \def){hello there}
+%D \stoptyping
+%D
+%D In normal day||to||day production of texts this kind of
+%D activation is seldom used.\footnote{In the \CONTEXT\ manual
+%D the \type{<} and \type{>} are made active and used for some
+%D cross||reference trickery.} If so, we have to take care of
+%D the math mode explicitly, just like we did when making
+%D \type{|} active. It can be confusing too, especially when we
+%D load macropackages afterwards that make use of \type{<} in
+%D \type{\ifnum} or \type{\ifdim} statements.
+
+%D And then came the Polish users, and who can deny them? Like
+%D the German \TEX\ users demand an active \type {"}, some
+%D Polish users like using the \type {/}. The next alternative
+%D is a bit slower but far the most robust alternative. As a
+%D bonus it also offers \type {|^|} and even \type {|||} which
+%D both result in a breakable|^|bar.
+%D
+%D The trick we use here is to convert the argument to a
+%D string and compare this string to string'd tokens.
+
+\def\activedotextmodediscretionary#1%
+ {\bgroup
+ \let\nextnextnext\egroup
+ \def\handlecompoundcharacter##1% new, needed for polish
+ {\getvalue{\@nc@\string##1}}% where / is active
+ \def\next##1#1%
+ {\def\next{\activedododotextmodediscretionary#1{##1}}%
+ \futurelet\nextnext\next}%
+ \next}
+
+\def\activedododotextmodediscretionary#1#2%
+ {\convertargument#2\to\discretionarytoken
+ \def\textmodediscretionary
+ {\getvalue{\strippedcsname\textmodediscretionary\string#1}}%
+ \ifx#1\nextnext % takes care of ||| and +++ and ......
+ \prewordbreak\discretionary{\hbox{$#1$}}{}{\hbox{$#1$}}%
+ \allowbreak\postwordbreak
+ \def\nextnextnext{\afterassignment\egroup\let\next=}%
+ \else\ifx\discretionarytoken\empty
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ % this was:
+ % \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak
+ % but an hbox blocks a possible \discretionary
+ \prewordbreak\textmodediscretionary\nextnext\allowbreak\postwordbreak
+ \egroup
+ \else\convertargument=\to\next\ifx\next\discretionarytoken
+ \prewordbreak\textmodediscretionary
+ \else\convertargument~\to\next\ifx\next\discretionarytoken
+ \prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak
+ \else\convertargument_\to\next\ifx\next\discretionarytoken
+ \prewordbreak\discretionary{\textmodediscretionary}
+ {\textmodediscretionary}{\textmodediscretionary}\prewordbreak
+ \else\convertargument(\to\next\ifx\next\discretionarytoken
+ \ifdim\lastskip>\zeropoint\relax
+ (\prewordbreak
+ \else
+ \prewordbreak\discretionary{}{(-}{(}\prewordbreak
+ \fi
+ \else\convertargument)\to\next\ifx\next\discretionarytoken
+ \ifx\nextnext\blankspace
+ \prewordbreak)\relax
+ \else\ifx\nextnext\space
+ \prewordbreak)\relax
+ \else
+ \prewordbreak\discretionary{-)}{}{)}\prewordbreak
+ \fi\fi
+ \else\convertargument'\to\next\ifx\next\discretionarytoken
+ \prewordbreak\discretionary{-}{}{'}\postwordbreak
+ \else\convertargument<\to\next\ifx\next\discretionarytoken
+ \beginofsubsentence\prewordbreak\beginofsubsentencespacing
+ \else\convertargument>\to\next\ifx\next\discretionarytoken
+ \endofsubsentencespacing\prewordbreak\endofsubsentence
+ \else\convertargument^\to\next\ifx\next\discretionarytoken
+ \prewordbreak\discretionary{\hbox{$|$}}{}{\hbox{$|$}}%
+ \allowbreak\postwordbreak
+ \else
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ \prewordbreak
+ \discretionary{\hbox{#2}}{}{\hbox{#2}}%
+ \allowbreak\postwordbreak
+ \egroup
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \nextnextnext}
+
+%D Since most things in \CONTEXT\ are configurable, we
+%D slightly change the previous definition so that we can
+%D install new functionality outside this module.
+
+\def\@tmd@{@@tmd@@}
+
+\def\activedododotextmodediscretionary#1#2%
+ {\convertargument#2\to\discretionarytoken
+ \def\textmodediscretionary%
+ {\getvalue{\strippedcsname\textmodediscretionary\string#1}}%
+ \ifx\discretionarytoken\empty
+ \ifx#1\nextnext % takes care of ||| and +++ and ......
+ \prewordbreak\discretionary{\hbox{$#1$}}{}{\hbox{$#1$}}%
+ \allowbreak\postwordbreak
+ \def\nextnextnext{\afterassignment\egroup\let\next=}%
+ \else
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ % the next line has been changed (20050203)
+ % \prewordbreak\hbox{\textmodediscretionary\nextnext}\allowbreak\postwordbreak
+ % but an hbox blocks a possible \discretionary
+ \prewordbreak\textmodediscretionary\nextnext\allowbreak\postwordbreak
+ \egroup
+ \fi
+ \else\expandafter\ifx\csname\@tmd@\discretionarytoken\endcsname\relax
+ \checkafterdiscretionary
+ \bgroup
+ \checkbeforediscretionary
+ \prewordbreak
+ \discretionary{\hbox{#2}}{}{\hbox{#2}}%
+ \allowbreak\postwordbreak
+ \egroup
+ \else
+ \csname\@tmd@\discretionarytoken\endcsname
+ \fi\fi
+ \nextnextnext} % can be \egroup so \aftergroup\ignorespaces
+
+\def\definetextmodediscretionary #1
+ {\convertargument#1\to\ascii
+ \setvalue{\@tmd@\ascii}}
+
+\definetextmodediscretionary {} % empty case, also handled in parser
+ {\prewordbreak\compoundhyphen\allowbreak\postwordbreak}
+
+\definetextmodediscretionary =
+ {\prewordbreak\textmodediscretionary}
+
+\definetextmodediscretionary ~
+ {\prewordbreak\discretionary{-}{}{\thinspace}\postwordbreak}
+
+\definetextmodediscretionary _
+ {\prewordbreak
+ \discretionary{\compoundhyphen}{\compoundhyphen}{\compoundhyphen}%
+ \prewordbreak}
+
+\definetextmodediscretionary (
+ {\ifdim\lastskip>\zeropoint
+ (\prewordbreak
+ \else
+ \prewordbreak\discretionary{}{(-}{(}\prewordbreak
+ \fi}
+
+\definetextmodediscretionary )
+ {\ifx\nextnext\blankspace
+ \prewordbreak)\relax
+ \else\ifx\nextnext\space
+ \prewordbreak)\relax
+ \else
+ \prewordbreak\discretionary{-)}{}{)}\prewordbreak
+ \fi\fi}
+
+\definetextmodediscretionary '
+ {\prewordbreak\discretionary{-}{}{'}\postwordbreak}
+
+\definetextmodediscretionary <
+ {\beginofsubsentence\prewordbreak\beginofsubsentencespacing}
+
+\definetextmodediscretionary >
+ {\endofsubsentencespacing\prewordbreak\endofsubsentence}
+
+\definetextmodediscretionary . % not yet definitive
+ {\prewordbreak\midsentence\prewordbreak}
+
+\definetextmodediscretionary ^
+ {\prewordbreak\discretionary{\hbox{$|$}}{}{\hbox{$|$}}%
+ \allowbreak\postwordbreak}
+
+\definetextmodediscretionary :
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{:}:}
+ %\space\aftergroup\ignorespaces}
+
+\definetextmodediscretionary ;
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{;};}
+ %\space\aftergroup\ignorespaces}
+
+\definetextmodediscretionary ?
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{?}?}
+ %\space\aftergroup\ignorespaces}
+
+\definetextmodediscretionary !
+ {\removeunwantedspaces\prewordbreak\kern\hspaceamount\empty{!}!}
+ %\space\aftergroup\ignorespaces}
+
+\definetextmodediscretionary *
+ {\prewordbreak\discretionary{-}{}{\kern.05em}\prewordbreak}
+
+\ifx\hspaceamount\undefined
+
+ \def\hspaceamount#1#2{\kern.16667em}
+
+\fi
+
+%D Since we don't have to bother about active characters any
+%D longer, we end up with a pretty simple activating macro:
+
+\def\enableactivediscretionaries
+ {\let\dotextmodediscretionary=\activedotextmodediscretionary}
+
+%D Done somewhere else: \type {\enableactivediscretionaries}.
+
+%D \macros
+%D {directdiscretionary}
+%D
+%D In those situations where the nature of characters is
+%D less predictable, we can use the more direct approach:
+
+\unexpanded\def\directdiscretionary#1%
+ {\convertargument#1\to\discretionarytoken
+ \let\textmodediscretionary\compoundhyphen
+ \expandafter\ifx\csname\@tmd@\string#1\endcsname\relax
+ \prewordbreak
+ \discretionary{\hbox{#1}}{}{\hbox{#1}}%
+ \allowbreak\postwordbreak
+ \else
+ \csname\@tmd@\string#1\endcsname
+ \fi}
+
+%D \macros
+%D {installcompoundcharacter}
+%D
+%D When Tobias Burnus started translating the dutch manual of
+%D \PPCHTEX\ into german, he suggested to let \CONTEXT\ support
+%D the \type{german.sty} method of handling compound
+%D characters, especially the umlaut. This package is meant for
+%D use with \PLAIN\ \TEX\ as well as \LATEX.
+%D
+%D I decided to implement compound character support as
+%D versatile as possible. As a result one can define his own
+%D compound character support, like:
+%D
+%D \starttyping
+%D \installcompoundcharacter "a {\"a}
+%D \installcompoundcharacter "e {\"e}
+%D \installcompoundcharacter "i {\"i}
+%D \installcompoundcharacter "u {\"u}
+%D \installcompoundcharacter "o {\"o}
+%D \installcompoundcharacter "s {\SS}
+%D \stoptyping
+%D
+%D or even
+%D
+%D \starttyping
+%D \installcompoundcharacter "ck {\discretionary {k-}{k}{ck}}
+%D \installcompoundcharacter "ff {\discretionary{ff-}{f}{ff}}
+%D \stoptyping
+%D
+%D The support is not limited to alphabetic characters, so the
+%D next definition is also valid.
+%D
+%D \starttyping
+%D \installcompoundcharacter ". {.\doifnextcharelse{\spacetoken}{}{\kern.125em}}
+%D \stoptyping
+%D
+%D The implementation looks familiar and uses the same tricks as
+%D mentioned earlier in this module. We take care of two
+%D arguments, which complicates things a bit.
+
+\def\@nc@{@nc@} % normal character
+\def\@nn@{@nn@} % normal catcode
+\def\@cc@{@cc@} % compound character
+\def\@cs@{@cs@} % compound characters
+
+% \def\installcompoundcharacter #1#2#3 #4% {{#4}} keeps move local
+% {\setvalue{\@nc@\string#1}{\char`#1}%
+% \ifnum\catcode`#1=\@@active \else
+% \setevalue{\@nn@\string#1}{\number\catcode`#1}% new
+% \fi
+% \def\!!stringa{#3}%
+% \ifx\!!stringa\empty
+% \setvalue{\@cc@\string#1\string#2}{{#4}}%
+% \else
+% \setvalue{\@cs@\string#1\string#2\string#3}{{#4}}%
+% \fi
+% \catcode`#1=\@@active
+% \scratchcounter=\the\uccode`~
+% \uccode`~=`#1
+% \uppercase{\unexpanded\def~{\handlecompoundcharacter~}}%
+% \uccode`~=\scratchcounter}
+
+\def\installcompoundcharacter #1#2#3 #4% {{#4}} keeps move local
+ {\chardef\thecompoundcharacter`#1%
+ %\@EA\def\csname\@nc@\string#1\endcsname{\char`#1}%
+ \@EA\chardef\csname\@nc@\string#1\endcsname\thecompoundcharacter
+ \ifnum\catcode\thecompoundcharacter=\@@active \else
+ \@EA\edef\csname\@nn@\string#1\endcsname
+ {\number\catcode\thecompoundcharacter}%
+ \fi
+ \def\!!stringa{#3}%
+ \@EA\def\csname\ifx\!!stringa\empty
+ \@cc@\string#1\string#2%
+ \else
+ \@cs@\string#1\string#2\string#3%
+ \fi\endcsname{{#4}}%
+ \catcode\thecompoundcharacter\@@active
+ \scratchcounter\uccode\activehackcode
+ \uccode\activehackcode\thecompoundcharacter
+ \uppercase{\unexpanded\def~{\handlecompoundcharacter~}}%
+ \uccode\activehackcode\scratchcounter}
+
+%D A compound character can be reset with the following
+%D command.
+%D
+%D \starttyping
+%D \restorecompoundcharacter /
+%D \stoptyping
+
+\def\restorecompoundcharacter#1% new
+ {\catcode`#1=\csname\@nn@\string#1\endcsname\relax}
+
+%D We can also ignore definitions (needed in for instance \XML). Beware,
+%D this macro is supposed to be used grouped!
+
+\def\ignorecompoundcharacter
+ {\def\installcompoundcharacter##1 ##2{}}
+
+%D In handling the compound characters we have to take care of
+%D \type{\bgroup} and \type{\egroup} tokens, so we end up with
+%D a multi||step interpretation macro. We look ahead for a
+%D \type{\bgroup}, \type{\egroup} or \type{\blankspace}. Being
+%D no user of this mechanism, the credits for testing them goes
+%D to Tobias Burnus, the first german user of \CONTEXT.
+%D
+%D We define these macros as \type{\long} because we can
+%D expect \type{\par} tokens. We need to look into the future
+%D with \type{\futurelet} to prevent spaces from
+%D disappearing.
+
+% \def\handlecompoundcharacter#1%
+% {\def\dohandlecompoundcharacter%
+% {\ifx\next\bgroup
+% %\def\next{\dodohandlecompoundcharacter#1}% % handle "{ee} -> \"ee
+% %\let\next\relax % forget "{ee} -> ee
+% \def\next{\handlecompoundcharacterone#1}% % ignore "{ee} -> "ee
+% \else\ifx\next\egroup
+% \def\next{\getvalue{\@nc@\string#1}}%
+% \else\ifx\next\blankspace
+% \def\next{\getvalue{\@nc@\string#1}}%
+% \else
+% \def\next{\dodohandlecompoundcharacter#1}%
+% \fi\fi\fi
+% \next}%
+% \futurelet\next\dohandlecompoundcharacter}
+%
+% \def\dodohandlecompoundcharacter#1#2%
+% {\def\dododohandlecompoundcharacter% Keep it here and
+% {\ifx\next\bgroup % preserve spaces!
+% \def\next{\handlecompoundcharacterone#1#2}%
+% \else\ifx\next\egroup
+% \def\next{\handlecompoundcharacterone#1#2}%
+% \else\ifx\next\blankspace
+% \def\next{\handlecompoundcharacterone#1#2}%
+% \else
+% \def\next{\handlecompoundcharactertwo#1#2}%
+% \fi\fi\fi
+% \next}%
+% \futurelet\next\dododohandlecompoundcharacter}
+
+\def\handlecompoundcharacter#1%
+ {\def\xhandlecompoundcharacter{\dohandlecompoundcharacter{#1}}%
+ \futurelet\next\xhandlecompoundcharacter}
+
+\def\dohandlecompoundcharacter
+ {\ifx\next\bgroup
+ %\@EA\dodohandlecompoundcharacter % handle "{ee} -> \"ee
+ %\@EA\gobbleoneargument % forget "{ee} -> ee
+ \@EA\handlecompoundcharacterone % ignore "{ee} -> "ee
+ \else\ifx\next\egroup
+ \@EAEAEA\donohandlecompoundcharacter
+ \else\ifx\next\blankspace
+ \@EA\@EAEAEA\@EA\donohandlecompoundcharacter
+ \else
+ \@EA\@EAEAEA\@EA\dodohandlecompoundcharacter
+ \fi\fi\fi}
+
+\def\donohandlecompoundcharacter#1{\csname\@nc@\string#1\endcsname}
+
+\def\dododohandlecompoundcharacter
+ {\ifx\next\bgroup
+ \@EA\handlecompoundcharacterone
+ \else\ifx\next\egroup
+ \@EAEAEA\handlecompoundcharacterone
+ \else\ifx\next\blankspace
+ \@EA\@EAEAEA\@EA\handlecompoundcharacterone
+ \else
+ \@EA\@EAEAEA\@EA\handlecompoundcharactertwo
+ \fi\fi\fi}
+
+\def\dodohandlecompoundcharacter#1#2% preserve space
+ {\def\xdodohandlecompoundcharacter{\dododohandlecompoundcharacter#1#2}%
+ \futurelet\next\xdodohandlecompoundcharacter}
+
+%D Besides taken care of the grouping and space tokens, we have
+%D to deal with three situations. First we look if the next
+%D character equals the first one, if so, then we just insert
+%D the original. Next we look if indeed a compound character is
+%D defined. We either execute the compound character or just
+%D insert the first. So we have
+%D
+%D \starttyping
+%D <key><key> <key><known> <key><unknown>
+%D \stoptyping
+%D
+%D In later modules we will see how these commands are used.
+
+\beginTEX
+
+\long\def\handlecompoundcharacterone#1#2%
+ {\if\string#1\string#2% was: \ifx#1#2%
+ %\def\next{\getvalue{\@nc@\string#1}\getvalue{\@nc@\string#2}}%
+ \def\next{\getvalue{\@nc@\string#1}}%
+ \else\expandafter\ifx\csname\@cc@\string#1\string#2\endcsname\relax
+ \def\next{\getvalue{\@nc@\string#1}#2}%
+ \else
+ \def\next{\getvalue{\@cc@\string#1\string#2}}%
+ \fi\fi
+ \next}
+
+\long\def\handlecompoundcharactertwo#1#2#3%
+ {\if\string#1\string#2% was: \ifx#1#2%
+ %\def\next{\getvalue{\@nc@\string#1}\getvalue{\@nc@\string#2}#3}%
+ \def\next{\getvalue{\@nc@\string#1}#3}%
+ \else\@EA\ifx\csname\@cs@\string#1\string#2\string#3\endcsname\relax
+ \expandafter\ifx\csname\@cc@\string#1\string#2\endcsname\relax
+ \def\next{\getvalue{\@nc@\string#1}#2#3}%
+ \else
+ \def\next{\getvalue{\@cc@\string#1\string#2}#3}%
+ \fi
+ \else
+ \def\next{\getvalue{\@cs@\string#1\string#2\string#3}}%
+ \fi\fi
+ \next}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\long\def\handlecompoundcharacterone#1#2%
+ {\if\string#1\string#2% was: \ifx#1#2%
+ %\def\next{\getvalue{\@nc@\string#1}\getvalue{\@nc@\string#2}}%
+ \def\next{\getvalue{\@nc@\string#1}}%
+ \else\ifcsname\@cc@\string#1\string#2\endcsname
+ \def\next{\getvalue{\@cc@\string#1\string#2}}%
+ \else
+ \def\next{\getvalue{\@nc@\string#1}#2}%
+ \fi\fi
+ \next}
+
+\long\def\handlecompoundcharactertwo#1#2#3%
+ {\if\string#1\string#2% was: \ifx#1#2%
+ %\def\next{\getvalue{\@nc@\string#1}\getvalue{\@nc@\string#2}#3}%
+ \def\next{\getvalue{\@nc@\string#1}#3}%
+ \else\ifcsname\@cs@\string#1\string#2\string#3\endcsname
+ \def\next{\getvalue{\@cs@\string#1\string#2\string#3}}%
+ \else\ifcsname\@cc@\string#1\string#2\endcsname
+ \def\next{\getvalue{\@cc@\string#1\string#2}#3}%
+ \else
+ \def\next{\getvalue{\@nc@\string#1}#2#3}%
+ \fi\fi\fi
+ \next}
+
+\endETEX
+
+%D For very obscure applications (see for an application \type
+%D {lang-sla.tex}) we provide:
+
+\def\dosimplifiedcompoundcharacter#1%
+ {#1}
+
+\beginTEX
+
+\def\simplifiedcompoundcharacter#1#2%
+ {\@EA\ifx\csname\@cc@\string#1\string#2\endcsname\relax
+ #2%
+ \else
+ \@EA\@EA\@EA\dosimplifiedcompoundcharacter\csname\@cc@\string#1\string#2\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\simplifiedcompoundcharacter#1#2%
+ {\ifcsname\@cc@\string#1\string#2\endcsname
+ \@EA\@EA\@EA\dosimplifiedcompoundcharacter\csname\@cc@\string#1\string#2\endcsname
+ \else
+ #2%
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {nonbreakablespace}
+%D
+%D The following macro is taken from plain \TEX.
+
+\def\nonbreakablespace{\penalty\!!tenthousand\ }
+
+\let~\nonbreakablespace
+
+% under testing:
+%
+% \unexpanded\def~{\nonbreakablespace}
+
+%D \macros
+%D {midworddiscretionary}
+%D
+%D If needed, one can add a discretionary hyphen using \type
+%D {\midworddiscretionary}. This macro does the same as
+%D \PLAIN\ \TEX's \type {\-}, but, like the ones implemented
+%D earlier, this one also looks ahead for spaces and grouping
+%D tokens.
+
+\def\domidworddiscretionary
+ {\ifx\next\blankspace\else
+ \ifx\next\bgroup \else
+ \ifx\next\egroup \else
+ \discretionary{-}{}{}%
+ \fi\fi\fi}
+
+\def\midworddiscretionary%
+ {\futurelet\next\domidworddiscretionary}
+
+%D \macros
+%D {hyphenatedurl}
+%D
+%D For those who want to put full \URL's in a text, we offer
+%D
+%D \startbuffer
+%D \hyphenatedurl{http://optimist.optimist/optimist/optimist.optimist#optimist}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D which breaks at the appropriate places. Watch the \type{#}
+%D hack.
+%D
+%D When passed as argument, like in \type {\goto}, one needs
+%D to substitute a \type {\\} for each \type{#}.
+%D
+%D \startbuffer
+%D \hyphenatedurl{http://this.is.a.rather/strange/reference#indeed}
+%D \stopbuffer
+%D
+%D \typebuffer
+
+\ifx\\\undefined \let\\\crlf \fi
+
+\chardef\urlsplitmode=1
+
+% 0 => don't split
+% 1 => . : na, rest voor
+% 2 => alles na
+% 3 => alles voor
+
+% \bgroup \catcode`\~=\active \catcode`\/=\active
+
+% Why not convert to ascii first? I will redo this one!
+
+% \unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
+% {\bgroup
+% \obeyhyphens
+% \def\splitbefore##1%
+% {\setbox\scratchbox=\hbox{##1{}{}}%
+% \ifcase\urlsplitmode
+% \box\scratchbox
+% \or
+% \postwordbreak\box\scratchbox\prewordbreak
+% \or
+% \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
+% \else
+% \postwordbreak\box\scratchbox\prewordbreak
+% \fi}%
+% \def\splitafter##1%
+% {\ifcase\urlsplitmode
+% ##1{}{}%
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \else
+% \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
+% \fi}%
+% \def\flushurl%
+% {\savedurl\let\savedurl\empty}%
+% \def\\%
+% {\spliturl\#}%
+% \let\~=\lettertilde \let~=\~%
+% \let\/=\letterslash \let/=\/%
+% \let\savedurl\empty
+% \handletokens#1\with\scanurl
+% \egroup}
+%
+% Better (a mere copy with \dohyphens):
+
+% \bgroup \catcode`\~=\active \catcode`\/=\active
+%
+% \unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
+% {\bgroup
+% \ifnum\hyphenpenalty<10000 \else
+% \def\discretionary##1##2##3{##1\allowbreak##2}%
+% \fi
+% \obeyhyphens
+% \def\splitbefore##1%
+% {\setbox\scratchbox=\hbox{##1{}{}}%
+% \ifcase\urlsplitmode
+% \box\scratchbox
+% \or
+% \postwordbreak\box\scratchbox\prewordbreak
+% \or
+% \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
+% \else
+% \postwordbreak\box\scratchbox\prewordbreak
+% \fi}%
+% \def\splitafter##1%
+% {\ifcase\urlsplitmode
+% ##1{}{}%
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \or
+% \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+% \else
+% \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
+% \fi}%
+% \def\flushurl%
+% {\savedurl\let\savedurl\empty}%
+% \def\\%
+% {\spliturl\#}%
+% \let\~=\lettertilde\let~=\~%
+% \let\/=\letterslash\let/=\/%
+% \let\savedurl\empty
+% \handletokens#1\with\scanurl\savedurl
+% \egroup}
+%
+% \egroup
+
+\bgroup \catcode`\~=\active \catcode`\/=\active
+
+\unexpanded\gdef\hyphenatedurl#1% {}{} handles accents
+ {\bgroup
+ \ifnum\hyphenpenalty<10000 \else
+ \def\discretionary##1##2##3{##1\allowbreak##2}%
+ \fi
+ \obeyhyphens
+ \def\splitbefore##1%
+ {\setbox\scratchbox=\hbox{##1{}{}}%
+ \ifcase\urlsplitmode
+ \box\scratchbox
+ \or
+ \postwordbreak\box\scratchbox\prewordbreak
+ \or
+ \prewordbreak\discretionary{\box\scratchbox}{}{\box\scratchbox}\prewordbreak
+ \else
+ \postwordbreak\box\scratchbox\prewordbreak
+ \fi}%
+ \def\splitafter##1%
+ {\ifcase\urlsplitmode
+ ##1{}{}%
+ \or
+ \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+ \or
+ \prewordbreak\discretionary{##1{}{}}{}{##1{}{}}\prewordbreak
+ \else
+ \prewordbreak\discretionary{}{##1{}{}}{##1{}{}}\prewordbreak
+ \fi}%
+ \def\flushurl%
+ {\savedurl\let\savedurl\empty}%
+ \def\\%
+ {\spliturl\#}%
+ \let\~=\lettertilde\let~=\~%
+ \let\/=\letterslash\let/=\/%
+ \let\savedurl\empty
+ \scratchcounter\zerocount % used for hyphenmethod
+ \handletokens#1\with\scanurl\savedurl
+ \egroup}
+
+\egroup
+
+%D This would be better, but it spoils \type {\~} and so:
+%D
+%D \starttyping
+%D \convertargument#1\to\ascii
+%D \expandafter\handletokens\ascii\with\scanurl
+%D \stoptyping
+
+% \def\scanurl#1%
+% {\ifx#1\~%
+% \flushurl\splitbefore\~%
+% \else\ifx#1\#%
+% \flushurl\splitbefore\#%
+% \else\ifx#1\&%
+% \flushurl\splitbefore\&%
+% \else\ifx#1\%%
+% \flushurl\splitbefore\%%
+% \else\ifx#1\_%
+% \flushurl\splitbefore\_%
+% \else\if\noexpand#1\relax
+% #1%
+% \else\ifnum\catcode`#1=8
+% \flushurl\splitbefore\_%
+% \else\ifnum\catcode`#1=6
+% \flushurl\splitbefore\#%
+% \else\ifnum\catcode`#1=4
+% \flushurl\splitbefore\&%
+% \else\if#1\lettertilde
+% \flushurl\splitbefore\~%
+% \else\if#1\letterpercent
+% \flushurl\splitbefore\%%
+% \else\if#1\letterunderscore
+% \flushurl\splitbefore\_%
+% \else\if#1\letterquestionmark
+% \flushurl\splitafter\letterquestionmark
+% \else\if#1\letterat
+% \flushurl\splitafter\letterat
+% \else\if#1\letterslash
+% \edef\savedurl{\savedurl\letterslash}%
+% \else\if#1+%
+% \flushurl\splitafter+%
+% \else\if#1:%
+% \flushurl\splitafter:%
+% \else\if#1.%
+% \flushurl\splitafter.%
+% \else\if#1(%
+% \flushurl\splitbefore(%
+% \else\if#1)%
+% \flushurl\splitafter)%
+% \else
+% \ifx\savedurl\empty\else
+% \splitbefore\savedurl
+% \let\savedurl\empty
+% \fi
+% #1%
+% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\chardef\urlhyphenmethod=0
+
+\def\scanurl#1%
+ {\advance\scratchcounter\plusone
+ \ifx#1\~%
+ \flushurl\splitbefore\~%
+ \else\ifx#1\#%
+ \flushurl\splitbefore\#%
+ \else\ifx#1\&%
+ \flushurl\splitbefore\&%
+ \else\ifx#1\%%
+ \flushurl\splitbefore\%%
+ \else\ifx#1\_%
+ \flushurl\splitbefore\_%
+ \else\if\noexpand#1\relax
+ #1%
+ \else\ifnum\catcode`#1=8
+ \flushurl\splitbefore\_%
+ \else\ifnum\catcode`#1=6
+ \flushurl\splitbefore\#%
+ \else\ifnum\catcode`#1=4
+ \flushurl\splitbefore\&%
+ \else\if#1\lettertilde
+ \flushurl\splitbefore\~%
+ \else\if#1\letterpercent
+ \flushurl\splitbefore\%%
+ \else\if#1\letterunderscore
+ \flushurl\splitbefore\_%
+ \else\if#1\letterquestionmark
+ \flushurl\splitafter\letterquestionmark
+ \else\if#1\letterat
+ \flushurl\splitafter\letterat
+ \else\if#1\letterslash
+ \edef\savedurl{\savedurl\letterslash}%
+ \else\if#1+%
+ \flushurl\splitafter+%
+ \else\if#1:%
+ \flushurl\splitafter:%
+ \else\if#1.%
+ \flushurl\splitafter.%
+ \else\if#1(%
+ \flushurl\splitbefore(%
+ \else\if#1)%
+ \flushurl\splitafter)%
+ \else
+ \ifx\savedurl\empty\else
+ \splitbefore\savedurl
+ \let\savedurl\empty
+ \fi
+ \ifcase\urlhyphenmethod
+ #1%
+ \else
+ \ifnum\scratchcounter>\plusthree % so, \http: will not break
+ \edef\savedurl{#1}%
+ \else
+ #1%
+ \fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% \setupinteraction[state=start]
+% \def\gotoURL#1{\useURL[foo][#1]\goto{\url[foo]}[url(foo)]}
+% \starttext
+% \endgraf \chardef\urlhyphenmethod=0
+% \hsize1pt\gotoURL{http://www.physik.fu-berlin.de/SomeVeryVeryVeryLongDirectory/And/AQuiteLongFileName.html}
+% \endgraf \chardef\urlhyphenmethod=1
+% \hsize1pt\gotoURL{http://www.physik.fu-berlin.de/SomeVeryVeryVeryLongDirectory/And/AQuiteLongFileName.html}
+% \stoptext
+
+%D When Joop Susan asked (on the \CONTEXT\ mailing list) how
+%D to handle url's passed as argument, the following solutions
+%D came to my mind:
+%D
+%D \starttyping
+%D \def\whateverurl#1%
+%D {{\def~{\string~}\useURL[dummy][#1]\goto{\url[dummy]}[URL(dummy)]}}
+%D
+%D \def\whateverurl#1%
+%D {{\let~\lettertilde\useURL[dummy][#1]\goto{\url[dummy]}[URL(dummy)]}}
+%D
+%D \def\whateverurl#1%
+%D {\convertargument#1\to\ascii
+%D \expanded{\useURL[dummy][\ascii]}\goto{\url[dummy]}[URL(dummy)]}
+%D \stoptyping
+
+%D \macros
+%D {hyphenatedfile}
+%D
+%D For the moment we treat filenames in a similar way,
+%D
+%D \starttyping
+%D \hyphenatedfile{here/there/filename.suffix}
+%D \stoptyping
+
+\let\hyphenatedfile\hyphenatedurl
+
+% to be finished
+%
+% \def\hyphenatedstring#1%
+% {\bgroup
+% \nohyphens
+% \def\next##1{##1\doif{##1}{-}{\allowbreak}}%
+% \handletokens#1\with\next
+% \egroup}
+%
+% {\hsize1cm\hyphenatedstring{ABXXXXXXXXXXC-12345-12345}}
+
+%D \macros
+%D {disablediscretionaries,disablecompoundcharacter}
+%D
+%D Occasionally we need to disable this mechanism. For the
+%D moment we assume that \type {|} is used.
+
+\def\disablediscretionaries
+ {\def|##1|{\string##1}%
+ \def\directdiscretionary##1{\string##1}}
+
+\def\disablecompoundcharacters
+ {\let\handlecompoundcharacter\string}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-mat.tex b/Master/texmf-dist/tex/context/base/supp-mat.tex
new file mode 100644
index 00000000000..15ae7fdd8d0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-mat.tex
@@ -0,0 +1,159 @@
+%D \module
+%D [ file=supp-mat,
+%D version=1998.09.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Math,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D For practical reasons, I decided to move some math things to
+%D a support module. There is nothing spectacular here.
+
+\writestatus{loading}{Context Support Macros / Math}
+
+\unprotect
+
+%D \macros
+%D {mathematics, math, nomathematics, startmathmode}
+%D
+%D The \type{$} can be both an begin and end math character.
+%D This can lead to confusing and errorprone situations when
+%D macros insert \type{$}. When for instance we have defined:
+%D
+%D \starttyping
+%D \def\MyPlus{$\,+\,$}
+%D \stoptyping
+%D
+%D the sequence \type{$x^2 \MyPlus y^2 = r^2$} will expand to:
+%D
+%D \starttyping
+%D $x^2 $\,+\,$ y^2 = r^2$
+%D \stoptyping
+%D
+%D Here the \type{\,} are given outside math mode and \TEX\ will
+%D definitely complain about this. A more save definition would
+%D have been:
+%D
+%D \starttyping
+%D \def\MyPlus{\mathematics{\,+\,}}
+%D \stoptyping
+%D
+%D Which is implemented as:
+
+\def\mathematics#1{\relax\ifmmode#1\else$#1$\fi} % lookahead bug reported by brooks
+
+\def\startmathmode
+ {\ifmmode
+ \let\stopmathmode\relax
+ \else
+ $\def\stopmathmode{$}% \let\stopmathmode=$
+ \fi}
+
+\def\nomathematics#1%
+ {\ifmmode\hbox{#1}\else#1\fi}
+
+\let\math\mathematics
+
+%D \macros
+%D {dimension, nodimension}
+%D
+%D The next few macros are used for typesetting dimensions in
+%D such a way that spacing is acceptable. I won't spend much
+%D words on these macros, because they will be overloaded in
+%D the units module.
+
+\newsignal\dimensionsignal
+
+\def\dimensiontypeface {\tf}
+\def\dimensionhalfspace {\,}
+
+\unexpanded\def\dimension#1%
+ {\def\dodimensionsignal{\kern\dimensionsignal}%
+ \ifdim\lastskip=\zeropoint\relax
+ \ifdim\lastkern=\zeropoint\relax
+ \ifmmode
+ \mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+ \else
+ \mathematics{\dimensiontypeface#1}%
+ \fi
+ \else\ifdim\lastkern=\dimensionsignal
+ \mathematics{\dimensionhalfspace\dimensiontypeface#1}%
+ \else
+ \unkern\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+ \fi\fi
+ \else
+ \unskip\mathematics{\dimensionhalfspace\dimensionhalfspace\dimensiontypeface#1}%
+ \fi
+ \dodimensionsignal}
+
+\unexpanded\def\nodimension#1%
+ {\unskip#1\global\let\dodimensionsignal\relax}
+
+%D \macros
+%D {super, suber}
+%D
+%D \TEX\ uses \type{^} and \type{_} for entering super- and
+%D subscript mode. We want however a bit more control than
+%D normally provided, and therefore provide \type {\super}
+%D and \type{\suber} (\type {\sub} is already taken).
+
+\global\let\normalsuper=^
+\global\let\normalsuber=_
+
+\newcount\supersubmode
+
+\newevery\everysupersub \EverySuperSub
+
+\appendtoks \advance\supersubmode 1\relax \to \everysupersub
+
+% \def\dodosuper#1{\normalsuper{\the\everysupersub#1}}
+% \def\dodosuber#1{\normalsuber{\the\everysupersub#1}}
+%
+% \def\dosuper{\ifx\next\bgroup\expandafter\dodosuper\else\normalsuper\fi}
+% \def\dosuber{\ifx\next\bgroup\expandafter\dodosuber\else\normalsuber\fi}
+%
+% \def\super{\futurelet\next\dosuper}
+% \def\suber{\futurelet\next\dosuber}
+
+\def\super#1{\normalsuper{\the\everysupersub#1}}
+\def\suber#1{\normalsuber{\the\everysupersub#1}}
+
+%D \macros
+%D {enablesupsub}
+%D
+%D We can let \type {^} and \type {_} act like \type {\super}
+%D and \type {\suber} by saying \type {\enablesupsub}.
+
+\bgroup
+\catcode`\^=\@@active
+\catcode`\_=\@@active
+\gdef\enablesupsub
+ {\catcode`\^=\@@active
+ \def^{\ifmmode\expandafter\super\else\expandafter\normalsuper\fi}%
+ \catcode`\_=\@@active
+ \def_{\ifmmode\expandafter\suber\else\expandafter\normalsuber\fi}}
+\egroup
+
+%D \macros
+%D {restoremathstyle}
+%D
+%D We can pick up the current math style by calling \type
+%D {\restoremathstyle}.
+
+\def\restoremathstyle
+ {\ifmmode
+ \ifcase\supsubmode
+ \textstyle
+ \or
+ \scriptstyle
+ \else
+ \scriptscriptstyle
+ \fi
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-mis.tex b/Master/texmf-dist/tex/context/base/supp-mis.tex
new file mode 100644
index 00000000000..ab089a297e1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-mis.tex
@@ -0,0 +1,695 @@
+%D \module
+%D [ file=supp-mis,
+%D version=2004.10.26, % 1997.01.04,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Missing (For Generic Use),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Some support modules are more or less independant. This
+%D module, which is not part of plain \CONTEXT, provides the
+%D missing macros and declarations of registers.
+
+\ifx \undefined \writestatus \else \expandafter \endinput \fi
+
+%D Because \LATEX\ has no safe package loading mechanism, we
+%D need to take care of possible interference.
+
+\def\StartLatexHack
+ {\edef\StopLatexHack
+ {\catcode`\noexpand/=\the\catcode`/
+ \catcode`\noexpand:=\the\catcode`:
+ \catcode`\noexpand;=\the\catcode`;
+ \catcode`\noexpand"=\the\catcode`"
+ \catcode`\noexpand<=\the\catcode`<
+ \catcode`\noexpand>=\the\catcode`>}%
+ \catcode`/=12 \catcode`:=12 \catcode`;=12
+ \catcode`"=12 \catcode`<=12 \catcode`>=12 }
+
+%D This hack is needed especially for \LATEX\ users who use
+%D the Babel package. The Germans have active \type {"}'s, the
+%D Poles have \type {/}, while the French have \type {:} and
+%D \type {;} defines as command (thanks to Daniel Flipo for
+%D pointing that out and testing). Potentially active \type
+%D {?}'s and \type {!}'s are less dangerous since they are
+%D handled by the \type {\protect} and \type {\unprotect}
+%D macros.
+
+\StartLatexHack
+
+%D \macros
+%D {ifnocontextobject}
+%D
+%D First we take care of redundant defining. The next set of
+%D macros are a bit complicated by the fact that Plain
+%D \TEX\ defines the \type{\new}||macros as being outer.
+%D Furthermore nested \type{\if}'s can get us into
+%D trouble.
+
+\def\definecontextobject
+ {\iftrue}
+
+\def\gobblecontextobject
+ {\setbox0\hbox
+ \bgroup
+ \long\def\gobblecontextobject##1\fi{\egroup}%
+ \expandafter\gobblecontextobject\string}
+
+\long\def\ifnocontextobject#1\do
+ {\ifx#1\undefined
+ \expandafter\definecontextobject
+ \else
+ %\writestatus{system}{beware of conflicting \string#1}%
+ \expandafter\gobblecontextobject
+ \fi}
+
+%D \macros
+%D {beginETEX,beginTEX}
+%D
+%D Outside \CONTEXT\ we will not be \ETEX||aware.
+
+\long\def\beginETEX #1\endETEX {}
+\long\def\beginOMEGA#1\endOMEGA{}
+
+\let\beginTEX\relax \let\endTEX\relax
+
+%D \macros
+%D {writestatus}
+%D
+%D We start each module with a message. Normally the output is
+%D formatted, but here we keep things simple.
+
+\ifnocontextobject \writestatus \do
+
+ \def\writestatus#1#2%
+ {\immediate\write16{#1 : #2}}
+
+\fi
+
+%D Let's see if it works.
+
+\writestatus{loading}{Context Support Macros / Miscellaneous (2004.10.26)}
+
+%D \macros
+%D {protect,unprotect}
+%D
+%D Next we present a poor mans alternative for \type{\protect}
+%D and \type{\unprotect}, two commands that enable us to use
+%D the characters \type{@}, \type{!} and \type{?} in macro
+%D names.
+
+\ifnocontextobject \protect \do
+
+ \let\protect\relax
+
+\fi
+
+\newcount\protectiondepth
+
+\ifnocontextobject \unprotect \do
+
+ \def\unprotect
+ {\advance\protectiondepth 1
+ \ifnum\protectiondepth=1
+ \let\normalprotect=\protect
+ \def\protect
+ {\ifnum\protectiondepth>0
+ \advance\protectiondepth -1
+ \ifnum\protectiondepth=0
+ \doprotect
+ \let\protect=\normalprotect
+ \fi
+ \fi}
+ \edef\doprotect
+ {\catcode`\noexpand @=\the\catcode`@\relax
+ \catcode`\noexpand !=\the\catcode`!\relax
+ \catcode`\noexpand ?=\the\catcode`?\relax}
+ \catcode`@=11
+ \catcode`!=11
+ \catcode`?=11
+ \fi}
+
+\fi
+
+%D We start using this one it at once.
+
+\unprotect
+
+%D \macros
+%D {scratch...,if...,next...}
+%D
+%D We need some scratch registers. Users are free to use them,
+%D but can never be sure of their value once another macro is
+%D called. We only allocate things when they are yet
+%D undefined. This way we can't mess up other macro packages,
+%D but of course previous definitions can mess up our modules.
+
+\ifnocontextobject \donetrue \do \newif\ifdone \fi
+
+% no time now, will do a better test later (based on dimendef)
+
+\def\!!stringa{plain} \ifx\!!stringa\fmtname \donetrue \else
+\def\!!stringa{babel-plain} \ifx\!!stringa\fmtname \donetrue \else
+ \donefalse \fi \fi
+
+\ifdone
+ % plain defines some 15 dimens, so we need to define a few
+ % dummies in order to get out of the scratch area
+ \newdimen\scratchdimen % 16
+ \newdimen\scratchdimen % 17
+ \newdimen\scratchdimen % 18
+ \newdimen\scratchdimen % 19
+ \newdimen\scratchdimen % 20
+ \newdimen\scratchdimen % 21
+\fi
+
+\ifnocontextobject \scratchcounter \do \newcount \scratchcounter \fi
+\ifnocontextobject \scratchtoks \do \newtoks \scratchtoks \fi
+\ifnocontextobject \scratchdimen \do \newdimen \scratchdimen \fi
+\ifnocontextobject \scratchskip \do \newskip \scratchskip \fi
+\ifnocontextobject \scratchmuskip \do \newmuskip \scratchmuskip \fi
+\ifnocontextobject \scratchbox \do \newbox \scratchbox \fi
+\ifnocontextobject \scratchread \do \newread \scratchread \fi
+\ifnocontextobject \scratchwrite \do \newwrite \scratchwrite \fi
+
+%D Watch out, in the past we ran into troubles with \type {\onepoint}
+%D (and others) mening something different in \LATEX\ then here. In
+%D such situations clashes are bound to happen. For this reason the
+%D assignments are no inside the test. We try to catch those situations
+%D but we cannot keep ahead of teh future.
+
+\ifnocontextobject \zeropoint \do \newdimen \zeropoint \zeropoint = 0pt \fi % else problems with dimen12
+\ifnocontextobject \onepoint \do \newdimen \onepoint \onepoint = 1pt \fi
+\ifnocontextobject \onebasepoint \do \newdimen \onebasepoint \onebasepoint = 1bp \fi
+\ifnocontextobject \zerocount \do \chardef \zerocount = 0 \fi
+\ifnocontextobject \plusone \do \chardef \plusone = 1 \fi
+\ifnocontextobject \minusone \do \newcount \minusone \minusone = -1 \fi
+\ifnocontextobject \thousandpoint \do \newdimen \thousandpoint \thousandpoint = 1000pt \fi
+\ifnocontextobject \onerealpoint \do \newdimen \onerealpoint \onerealpoint = 1pt \fi % latex has a funny \onepoint
+
+\ifnocontextobject \emptytoks \do \newtoks \emptytoks \fi
+\ifnocontextobject \nextbox \do \newbox \nextbox \fi
+\ifnocontextobject \nextdepth \do \newdimen \nextdepth \fi
+
+\ifnocontextobject \CONTEXTtrue \do \newif\ifCONTEXT \fi
+\ifnocontextobject \eightbitcharacterstrue \do \newif\ifeightbitcharacters \fi
+\ifnocontextobject \MPdrawingdonetrue \do \newif\ifMPdrawingdone \fi
+
+\ifnocontextobject \ifzeropt \do \let\ifzeropt\ifcase \fi
+
+%D \macros
+%D {@@...}
+%D
+%D We use symbolic name for \CATCODES. They can only be used
+%D when we are in unprotected state.
+
+\ifnocontextobject \@@escape \do \chardef\@@escape = 0 \fi
+\ifnocontextobject \@@begingroup \do \chardef\@@begingroup = 1 \fi
+\ifnocontextobject \@@endgroup \do \chardef\@@endgroup = 2 \fi
+\ifnocontextobject \@@endofline \do \chardef\@@endofline = 5 \fi
+\ifnocontextobject \@@ignore \do \chardef\@@ignore = 9 \fi
+\ifnocontextobject \@@space \do \chardef\@@space = 10 \fi
+\ifnocontextobject \@@letter \do \chardef\@@letter = 11 \fi
+\ifnocontextobject \@@other \do \chardef\@@other = 12 \fi
+\ifnocontextobject \@@active \do \chardef\@@active = 13 \fi
+\ifnocontextobject \@@comment \do \chardef\@@comment = 14 \fi
+
+\def\s!sp{sp}
+\def\s!pt{pt}
+\def\s!bp{bp}
+
+%D \macros
+%D {@EA,expanded,expandoneargafter,expandtwoargsafter}
+%D
+%D Also needed:
+
+\let\@EA=\expandafter \let\@@expanded\empty
+
+\def\expanded#1%
+ {\long\xdef\@@expanded{\noexpand#1}\@@expanded}
+
+\def\expandoneargafter#1#2%
+ {\@EA#1\@EA{#2}}
+
+\def\expandtwoargsafter#1#2#3%
+ {\@EA\@EA\@EA#1\@EA\@EA\@EA{\@EA#2\@EA}\@EA{#3}}
+
+\def\@EAEAEA{\@EA\@EA\@EA}
+
+%D \macros
+%D {everyline,EveryLine,EveryPar}
+%D
+%D In \CONTEXT\ we use \type{\everypar} for special purposes
+%D and provide \type{\EveryPar} as an alternative. The same
+%D goes for \type{\everyline} and \type{\EveryLine}.
+
+\ifnocontextobject \everyline \do \newtoks\everyline \fi
+\ifnocontextobject \EveryPar \do \let\EveryPar =\everypar \fi
+\ifnocontextobject \EveryLine \do \let\EveryLine=\everyline \fi
+
+%D \macros
+%D {globallet}
+
+\def\globallet{\global\let}
+
+%D \macros
+%D {!!...}
+%D
+%D We reserve ourselves some scratch strings (i.e. macros)
+%D and some more counters.
+
+\ifnocontextobject \!!stringa \do \def\!!stringa {} \fi
+\ifnocontextobject \!!stringb \do \def\!!stringb {} \fi
+\ifnocontextobject \!!stringc \do \def\!!stringc {} \fi
+\ifnocontextobject \!!stringd \do \def\!!stringd {} \fi
+
+\ifnocontextobject \!!counta \do \newcount\!!counta {} \fi
+\ifnocontextobject \!!countb \do \newcount\!!countb {} \fi
+
+%D \macros
+%D {!!...}
+%D
+%D The next set of definitions speed up processing a bit.
+%D Furthermore it saves memory.
+
+\ifnocontextobject \!!zeropoint \do \def\!!zeropoint {0pt} \fi
+\ifnocontextobject \!!zerocount \do \def\!!zerocount {0} \fi
+\ifnocontextobject \!!tenthousand \do \def\!!tenthousand {10000} \fi
+
+\ifnocontextobject \!!width \do \def\!!width {width} \fi
+\ifnocontextobject \!!height \do \def\!!height {height} \fi
+\ifnocontextobject \!!depth \do \def\!!depth {depth} \fi
+
+\ifnocontextobject \!!plus \do \def\!!plus {plus} \fi
+\ifnocontextobject \!!minus \do \def\!!minus {minus} \fi
+\ifnocontextobject \!!to \do \def\!!to {to} \fi
+
+%D \macros
+%D {smashbox}
+%D
+%D The system modules offer a range of smashing macros, of
+%D which we only copied \type{\smashbox}.
+
+\ifnocontextobject \smashbox \do
+
+ \def\smashbox#1%
+ {\wd#1\zeropoint
+ \ht#1\zeropoint
+ \dp#1\zeropoint}
+
+\fi
+
+%D \macros
+%D {dowithnextbox}
+%D
+%D Also without further comment, we introduce a macro that
+%D gets the next box and does something usefull with it.
+%D Because the \type{\afterassignment} is executed inside the
+%D box, we have to use a \type{\aftergroup} too.
+
+\ifnocontextobject \dowithnextbox \do
+
+ \def\dowithnextbox#1%
+ {\def\dodowithnextbox{#1}%
+ \afterassignment\dododowithnextbox
+ \setbox\nextbox}
+
+ \def\dododowithnextbox%
+ {\aftergroup\dodowithnextbox}
+
+\fi
+
+%D \macros
+%D {setvalue,setevalue,setxvalue,,setgvalue,
+%D getvalue,
+%D letvalue,letgvalue}
+%D
+%D The next two macros expand their argument to
+%D \type{\argument}. The first one is used to define macro's
+%D the second one executes them.
+
+\ifnocontextobject \setvalue \do
+
+ \def\setvalue #1{\expandafter\def\csname#1\endcsname}
+ \def\setevalue#1{\expandafter\edef\csname#1\endcsname}
+ \def\setgvalue#1{\expandafter\gdef\csname#1\endcsname}
+ \def\setxvalue#1{\expandafter\xdef\csname#1\endcsname}
+ \def\getvalue #1{\csname#1\endcsname}
+ \def\letvalue #1{\expandafter\let\csname#1\endcsname}
+ \def\letgvalue#1{\global\expandafter\let\csname#1\endcsname}
+\fi
+
+%D \macros
+%D {unexpanded}
+%D
+%D The next command can be used as prefixed for commands that
+%D need protection during tests and writing to files. This
+%D is a very \CONTEXT\ specific one.
+
+\ifnocontextobject \unexpanded \do
+
+ \let\unexpanded\relax
+
+\fi
+
+%D \macros
+%D {convertargument}
+%D
+%D The original one offers a bit more, like global assignment, the
+%D the next implementation is however a bit more byte saving.
+
+\ifnocontextobject \convertargument \do
+
+ \def\doconvertargument#1>{}
+
+ \long\def\convertargument#1\to#2%
+ {\long\def\convertedargument{#1}%
+ \edef#2{\expandafter\doconvertargument\meaning\convertedargument}}
+
+\fi
+
+%D \macros
+%D {forgetall}
+%D
+%D Sometimes we have to disable interference of whatever kind
+%D of skips and mechanisms. The next macro resets some.
+
+\ifnocontextobject \forgetall \do
+
+ \def\forgetall
+ {\parskip\zeropoint
+ \leftskip\zeropoint
+ \parindent\zeropoint
+ \everypar{}}
+
+\fi
+
+%D \macros
+%D {withoutpt,
+%D ScaledPointsToBigPoints,ScaledPointsToWholeBigPoints}
+%D
+%D \TEX\ lacks some real datastructure. We can however use
+%D \DIMENSIONS. This kind of trickery is needed when we want
+%D \TEX\ to communicate with the outside world (by means of
+%D \type{\specials}).
+
+\ifnocontextobject \withoutpt \do
+
+ {\catcode`\.=\@@other
+ \catcode`\p=\@@other
+ \catcode`\t=\@@other
+ \gdef\WITHOUTPT#1pt{#1}}
+
+ \def\withoutpt#1%
+ {\expandafter\WITHOUTPT#1}
+
+ \def\ScaledPointsToBigPoints#1#2%
+ {\scratchdimen=#1sp\relax
+ \scratchdimen=.996264\scratchdimen
+ \edef#2{\withoutpt{\the\scratchdimen}}}
+
+ \def\ScaledPointsToWholeBigPoints#1#2%
+ {\scratchdimen=#1sp
+ \scratchdimen=.996264\scratchdimen
+ \scratchcounter=\scratchdimen
+ \advance\scratchcounter by 32768
+ \divide\scratchcounter by 65536
+ \edef#2{\the\scratchcounter}}
+
+\fi
+
+%D \macros
+%D {doprocessfile}
+%D
+%D This macro takes three arguments: the file number, the
+%D filename and a macro that handles the content of a read
+%D line.
+
+\newif\iffileprocessed
+
+\ifnocontextobject \doprocessfile \do
+
+ \def\doprocessfile#1#2#3%
+ {\openin#1=#2\relax
+ \ifeof#1%
+ \fileprocessedfalse
+ \closein#1\relax
+ \else
+ \fileprocessedtrue
+ \gdef\dofinishfile%
+ {\closein#1\relax
+ \global\let\doprocessline\relax}%
+ \gdef\doprocessline%
+ {\ifeof#1%
+ \dofinishfile
+ \else
+ \global\read#1 to \fileline
+ #3\relax
+ \expandafter\doprocessline
+ \fi}%
+ \expandafter\doprocessline
+ \fi}
+
+\fi
+
+%D \macros
+%D {uncatcodespecials}
+%D
+%D This one is taken from the \TEX\ book. The \CONTEXT\
+%D alternative is a bit different, but we hope this one works
+%D here.
+
+\ifx\dospecials\undefined
+
+ \def\dospecials
+ {\do\ \do\\\do\{\do\}\do\$%
+ \do\#\do\^\do\_\do\&\do\%%
+ \do\~\do\^^A\do\^^K}
+
+\fi
+
+\ifnocontextobject \uncatcodespecials \do
+
+ \def\uncatcodespecials
+ {\def\do##1{\catcode`##1=12 }\dospecials
+ \catcode`\ =\@@space
+ \catcode`\^^L=\@@ignore
+ \catcode`\^^M=\@@endofline
+ \catcode`\^^?=\@@ignore}
+
+\fi
+
+\ifnocontextobject \setnaturalcatcodes \do
+
+\def\setnaturalcatcodes
+ {\catcode`\!=\@@other \catcode`\?=\@@other \catcode`\@=\@@other
+ \catcode`\#=\@@other \catcode`\&=\@@other \catcode`\|=\@@other
+ \catcode`\$=\@@other \catcode`\^=\@@other \catcode`\_=\@@other
+ \catcode`\*=\@@other \catcode`\/=\@@other
+ \catcode`\-=\@@other \catcode`+=\@@other
+ \catcode`\==\@@other \catcode`\<=\@@other \catcode`\>=\@@other
+ \catcode`\"=\@@other \catcode`\'=\@@other \catcode`\`=\@@other
+ \catcode`\:=\@@other \catcode`\;=\@@other
+ \catcode`\,=\@@other \catcode`\.=\@@other \catcode`\~=\@@other
+ \catcode`\(=\@@other \catcode`\)=\@@other
+ \catcode`\{=\@@other \catcode`\}=\@@other
+ \catcode`\\=\@@other \catcode`\%=\@@other }
+
+\fi
+
+%D \macros
+%D {doglobal}
+%D
+%D Some \CONTEXT\ low level macros can have a \type{\doglobal}
+%D prefix. Let's just forget about that here:
+
+\ifnocontextobject \doglobal \do \let\doglobal\relax \fi
+
+%D The next obscure one is needed in the generic verbatim
+%D environment. When we end up with more of these, it's time
+%D to load the module \type{syst-gen}.
+
+\ifnocontextobject \doifincsnameelse \do
+
+ \def\dodoifincsnameelse#1#2%
+ {\def\dododoifincsnameelse##1#1##2##3\war%
+ {\csname\if##2@iffalse\else iftrue\fi\endcsname}%
+ \expandafter\dododoifincsnameelse#2#1@@\war}
+
+ \long\def\doifincsnameelse#1#2#3#4%
+ {\edef\@@instring{#1}%
+ \expandafter\dodoifincsnameelse\expandafter{\@@instring}{#2}%
+ #3%
+ \else
+ #4%
+ \fi}
+
+\fi
+
+%D \macros
+%D {dostepwiserecurse, dorecurse, doloop, exitloop}
+%D
+%D The next loop macro is a real weak one, and does not offer
+%D the full \CONTEXT\ functionality, let alone nesting, but
+%D for simple purposes, its behaviour is acceptable.
+
+\newcount\recursecounter
+
+\def\dostepwiserecurse#1#2#3#4% very weak and rubishly version
+ {\ifnum#2<#1\relax\else\dodostepwiserecurse{#1}{#2}{#3}{#4}\fi}
+
+\def\dodostepwiserecurse#1#2#3#4% very weak and rubishly version
+ {\recursecounter=#1\relax
+ \loop
+ \edef\recurselevel{\the\recursecounter}%
+ #4\relax
+ \ifnum\recursecounter<#2\relax
+ \advance\recursecounter by #3\relax
+ \repeat}
+
+\def\dorecurse#1%
+ {\dostepwiserecurse{1}{#1}{1}}
+
+\def\doloop
+ {\dostepwiserecurse{1}{\maxdimen}{1}}
+
+\def\exitloop
+ {\recursecounter=\maxdimen}
+
+%D \macros
+%D {ifundefined,doifdefined,doifundefined,
+%D doifdefinedelse,doifundefinedelse}
+%D
+%D These alteratives are not robust but suitable for simple
+%D usage. The official ones are a bit faster.
+
+\ifnocontextobject \doifdefined \do
+
+ \def\ifundefined#1%
+ {\expandafter\ifx\csname#1\endcsname\relax}
+
+ \def\doifdefinedelse#1#2#3%
+ {\expandafter\ifx\csname#1\endcsname\relax#3\else#2\fi}
+
+ \def\doifundefinedelse#1#2#3%
+ {\expandafter\ifx\csname#1\endcsname\relax#2\else#3\fi}
+
+ \def\doifdefined#1#2%
+ {\expandafter\ifx\csname#1\endcsname\relax\else#2\fi}
+
+ \def\doifundefined#1#2%
+ {\expandafter\ifx\csname#1\endcsname\relax#2\fi}
+
+\fi
+
+%D \macros
+%D {doifinstringelse}
+%D
+%D It seems like we end up with more and more macros here.
+%D Sigh.
+
+\ifnocontextobject \doifinstringelse \do
+
+ \def\p!doifinstringelse#1#2%
+ {\def\pp!doifinstringelse##1#1##2##3\war%
+ {\csname if\if##2@fals\else tru\fi e\endcsname}%
+ \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}}
+
+ \long\def\doifinstringelse#1#2#3#4%
+ {\edef\@@@instring{#1}%
+ \@EA\p!doifinstringelse\@EA{\@@@instring}{#2}#3\else#4\fi}
+
+\fi
+
+%D \macros
+%D {twodigitrounding}
+%D
+%D We don't support rounding outside \CONTEXT. Sorry.
+
+\def\twodigitrounding#1{#1}
+
+%D \macros
+%D {lineheight}
+%D
+%D In \CONTEXT\ we have \type{\lineheight}, which in many
+%D cases matches \type {\baselineskip}.
+
+\ifnocontextobject \lineheight \do
+
+ \def\lineheight{\baselineskip}
+
+\fi
+
+%D \macros
+%D {dohandletokens}
+%D
+%D The following macro is the simplified version, but good
+%D enough for day to day hacks.
+%D
+%D \starttyping
+%D \dohandletokens some text\with\somemacro
+%D \stoptyping
+
+\ifnocontextobject \dohandletokens \do
+
+\def\dodohandletokens
+ {\ifx\next\end \else
+ \docommando{\next}%
+ \expandafter\dohandletokens
+ \fi}
+
+\def\dohandletokens
+ {\afterassignment\dodohandletokens\let\next= }
+
+\long\def\handletokens#1\with#2%
+ {\let\docommando=#2%
+ \dohandletokens#1\end}
+
+\fi
+
+%D Very reduced:
+
+\long\def\appendtoks#1\to#2%
+ {\scratchtoks{#1}\expanded{#2{\the#2\the\scratchtoks}}}
+
+%D Well, also handy.
+
+\def\doiffileelse#1#2#3%
+ {\immediate\openin\scratchread=#1\relax
+ \ifeof\scratchread
+ \def\next{#3}%
+ \else
+ \def\next{#2}%
+ \fi
+ \immediate\closein\scratchread
+ \next}
+
+%D New.
+
+\let\donothing\empty
+
+%D Also new:
+
+\def\letempty #1{\let#1\empty}
+\def\globalletempty#1{\global\let#1\empty}
+
+\def\letvalueempty #1{\expandafter\let\csname#1\endcsname\empty}
+\def\letgvalueempty#1{\global\expandafter\let\csname#1\endcsname\empty}
+
+%D Sigh
+
+\def\settrue #1{\chardef#1\zerocount}
+\def\setfalse#1{\chardef#1\plusone}
+
+\let\newconditional = \setfalse
+\let\ifconditional = \ifcase
+
+%D That's it. Please forget this junk and take a look at how
+%D it should be done.
+
+\StopLatexHack \protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-mpe.tex b/Master/texmf-dist/tex/context/base/supp-mpe.tex
new file mode 100644
index 00000000000..da1641d3d3e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-mpe.tex
@@ -0,0 +1,1327 @@
+%D \module
+%D [ file=supp-mpe,
+%D version=1999.07.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=METAPOST Special Extensions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% fuzzy and complicating is the fact that we need to support
+% context as well as mptopdf, so we cannot fall back on the
+% special drivers and color module (although there may be
+% good reasons to use a smaller context instead); also,
+% shading is handled here while it should move to the special
+% driver - to do!
+
+%D This module is still experimental and deals with some
+%D extensions to \METAPOST. When using \POSTSCRIPT\ output,
+%D these extensions can be supplied by means of proper
+%D preamble definitions, but when producing \PDF\ we have to
+%D set up the appropriate datastructures ourselves. It acts as
+%D a plug in into \type {supp-pdf}. As soon as we need more
+%D extensions, we will generalize these macro. Some
+%D definitions will move to the special drivers.
+
+%D For usage in plain \TEX, say something:
+%D
+%D \starttyping
+%D \input supp-pdf
+%D \input supp-mpe
+%D
+%D \MPcmykcolorstrue
+%D \MPspotcolorstrue
+%D \chardef\makeMPintoPDFobject\plusone
+%D \stoptyping
+
+\writestatus{loading}{MetaPost Special Extensions}
+
+%D We implement extensions by using the \METAPOST\ special
+%D mechanism. Opposite to \TEX's specials, the \METAPOST\ ones
+%D are flushed before or after the graphic data, but thereby
+%D are no longer connected to a position.
+%D
+%D We implement specials by overloading the \type {fill}
+%D operator. By counting the fills, we can let the converter
+%D treat the appropriate fill in a special way. The
+%D specification of the speciality can have two forms,
+%D determined by the setting of a boolean variable:
+%D
+%D \starttyping
+%D _inline_specials_ := false ; % comment like code (default)
+%D _inline_specials_ := true ; % command like code
+%D \stoptyping
+%D
+%D When the specification is embedded as comment, it looks
+%D like:
+%D
+%D \starttyping
+%D %%MetaPostSpecial <size> <data> <number> <identifier>
+%D \stoptyping
+%D
+%D The in||line alternative is more tuned for \POSTSCRIPT,
+%D since it permits us to define a macro \type {special}.
+%D
+%D \starttyping
+%D inline : <data> <number> <identifier> <size> special
+%D \stoptyping
+%D
+%D The \type {identifier} determines what to do, and the data
+%D can be used to accomplish this. A type~2 shading function
+%D has identifier~2. Alltogether, the number of parameters is
+%D specified in \type {size}. The \type {number} is the number
+%D of the fill that needs the special treatment. For a type~2
+%D and~3 shaded fill, the datablock contains the following
+
+%D data:
+%D
+%D \starttyping
+%D from to n inner_r g b x y outer_r g b x y
+%D from to n inner_r g b x y radius outer_r g b x y radius
+%D \stoptyping
+%D
+%D The implementation below saves the data on the stack in
+%D a way similar to the macros in \type {supp-pdf.tex}, and
+%D just overload a few already defined handlers. That way,
+%D the existing macros are still generic. \footnote {Actually,
+%D the macros here are just as generic.}
+%D
+%D Currently the only extension concerns shading, which is
+%D accomplished by handling yet another value of \type
+%D {\finiMPpath}. The recource disctionary is stored and
+%D later picked up by the general \CONTEXT\ figure inclusion
+%D macros.
+
+\unprotect
+
+%D The \type {%%MetaPostSpecials: version.revision signal} line
+%D triggers this module into handling color specifications kind
+%D of special. We need this safeguard for non||special
+%D usage.
+
+\chardef\MPspecialversion = 0 % specials when >1
+\chardef\MPspecialrevision = 0 % specials when >1
+\chardef\MPspecialsignal = 0 % passed on by graphic
+
+\chardef\inlineMPspecials = 1 % only needed for stack resetting
+
+%D This macro handles the special definitions that are
+%D passed as comment.
+
+\def\dohandleMPspecialcomment#1
+ {\setMPargument{#1}%
+ \advance\scratchcounter \minusone
+ \ifcase\scratchcounter
+ \handleMPspecialcommand
+ \donetrue
+ \doresetMPstack
+ \let\handleMPsequence\dohandleMPsequence
+ \expandafter\handleMPsequence
+ \else
+ \expandafter\dohandleMPspecialcomment
+ \fi}
+
+\def\handleMPspecialcomment #1 % number of arguments
+ {\doresetMPstack
+ \scratchcounter#1\relax
+ \ifcase\scratchcounter % when zero, inline shading is used
+ \chardef\inlineMPspecials\plusone
+ \let\handleMPsequence\dohandleMPsequence
+ \expandafter\handleMPsequence
+ \else
+ \chardef\inlineMPspecials\zerocount
+ \expandafter\dohandleMPspecialcomment
+ \fi}
+
+%D When defined inline, we use another macro to handle the
+%D definitions. Actually, this macro is called by the
+%D previous ones.
+
+\def\handleMPspecialcommand
+ {\ifcase\inlineMPspecials\or
+ \advance\nofMParguments \minusone % pop the size
+ \fi
+ \ifundefined\MPspecial
+ \message{[unknown \MPspecial]}%
+ \else
+ \csname\MPspecial\endcsname
+ \fi
+ \ifcase\inlineMPspecials
+ \doresetMPstack % 0
+ \else
+ \resetMPstack % 1
+ \fi}
+
+%D This macro triggers special support. Currently, the
+%D version and revision number are not used. Any version number
+%D greater than zero will enable special support.
+
+\def\handleMPspecialscomment #1.#2 #3 % version.revision signal
+ {\doresetMPstack
+ \chardef\MPspecialversion #1%
+ \chardef\MPspecialrevision#2%
+ \chardef\MPspecialsignal #3%
+ \let\handleMPsequence\dohandleMPsequence
+ \handleMPsequence}
+
+%D In case of \PDF, we need to prepare resourcs.
+
+\newtoks\MPstartresources
+\newtoks\MPstopresources
+
+\def\startMPresources
+ {\the\MPstartresources
+ \ifx\currentPDFresources\empty\else
+ \message{[unused resources]}%
+ \fi
+ \global\let\currentPDFresources\empty}
+
+\def\stopMPresources
+ {\let\currentPDFresources\empty
+ \the\MPstopresources}
+
+%D Since colors are not subjected to transformations, we can
+%D only use colors as signal. In our case, we use a dummy colored
+%D path with a red color component of \type {0.n}, so \type
+%D {0.001} is the first path and \type {0.010} the tenth. Since
+%D \METAPOST strips trailing zeros, we have to padd the string.
+
+\newif\ifMPcmykcolors
+\newif\ifMPspotcolors
+
+\ifx\normalhandleMPrgbcolor\undefined % in case we reload this module
+
+ \let\normalhandleMPrgbcolor \handleMPrgbcolor
+ \let\normalhandleMPcmykcolor\handleMPcmykcolor
+ \let\normalhandleMPgraycolor\handleMPgraycolor
+ \let\normalhandleMPspotcolor\handleMPspotcolor
+
+\fi
+
+%D When we are using \CONTEXT, we will fall back to the
+%D better color conversion routines. This also has the advantage
+%D that we don't have to parse and convert the file. In this
+%D alternative, \type {\!MP} is not (yet) supported. Because
+%D we can (for efficiency reasons) turn off strokecolor,
+%D something we cannot do in \METAPOST\ converted code.
+
+\newif\ifPDFMPstrokecolor \PDFMPstrokecolortrue
+
+%D [This code should move to meta-ini.]
+
+\ifCONTEXT % we can use this for a better xgstate handling
+
+ \def\checkPDFMPstrokecolor
+ {\ifPDFMPstrokecolor \PDFstrokecolortrue \fi}
+
+ \def\normalhandleMPrgbcolor
+ {{\checkPDFMPstrokecolor\execcolorR\gMPa1:\gMPa2:\gMPa3:0:0\od}}
+
+ \def\normalhandleMPcmykcolor
+ {{\checkPDFMPstrokecolor\execcolorC\gMPa1:\gMPa2:\gMPa3:\gMPa4:0:0\od}}
+
+ \def\normalhandleMPgraycolor
+ {{\checkPDFMPstrokecolor\execcolorS\gMPa1:0:0\od}}
+
+% \def\normalhandleMPspotcolor
+% {{\checkPDFMPstrokecolor\execcolorP\gMPa1:\gMPa2:0:0\od}}
+
+ \def\normalhandleMPspotcolor % ???
+ {{\checkPDFMPstrokecolor\execcolorP\gMPa1:\gMPa2:\gMPa3:\gMPa4:0:0\od}}
+
+\fi
+
+% In the previous macros we use the special drivers. A more
+% direct approach would have been:
+%
+% \def\doPDFstartrgbcolormode#1#2#3%
+% {\PDFcode{#1 #2 #3 rg #1 #2 #3 RG}}
+%
+% \def\doPDFstartcmykcolormode#1#2#3#4%
+% {\PDFcode{#1 #2 #3 #4 k #1 #2 #3 #4 K}}
+%
+% \def\doPDFstartgraycolormode#1%
+% {\PDFcode{#1 g #1 G}}
+%
+% \appendtoks
+% \let\dostartrgbcolormode \doPDFstartrgbcolormode
+% \let\dostartcmykcolormode\doPDFstartcmykcolormode
+% \let\dostartgraycolormode\doPDFstartgraycolormode
+% \to \everyMPtoPDFconversion
+
+%D Now we can handle special color signals. We only do this
+%D when special are detected.
+
+\def\MPrgbnumber#1{\expandafter\doMPrgbnumber#1000.0000\relax}
+\def\doMPrgbnumber#1.#2#3#4#5\relax{#2#3#4}
+
+%D The naive case looks like:
+%D
+%D \starttyping
+%D \def\handleMPrgbcolor%
+%D {\setMPcolor
+%D \ifcase\MPspecialversion
+%D \resetMPcolor\normalhandleMPrgbcolor
+%D \else\ifnum\MPrgbnumber\lastMPrvalue=\MPspecialsignal
+%D % consider it to be a signal
+%D \else
+%D \resetMPcolor\normalhandleMPrgbcolor
+%D \fi\fi}
+%D \stoptyping
+%D
+%D However, since we want \CMYK\ support, we will use the
+%D following implementation:
+
+% \def\setMPcolor
+% {\edef\lastMPrvalue{\gMPa1}%
+% \edef\lastMPgvalue{\gMPa2}%
+% \edef\lastMPbvalue{\gMPa3}}
+%
+% speed up (hardly called, so no let is needed)
+
+\def\setMPcolor
+ {\edef\lastMPrvalue{\csname\@@MP01\endcsname}%
+ \edef\lastMPgvalue{\csname\@@MP02\endcsname}%
+ \edef\lastMPbvalue{\csname\@@MP03\endcsname}}
+
+\def\zeroMPrgbvalue{0.0}
+
+\def\resetMPcolor
+ {\let\lastMPrvalue\zeroMPrgbvalue
+ \let\lastMPgvalue\zeroMPrgbvalue
+ \let\lastMPbvalue\zeroMPrgbvalue}
+
+\resetMPcolor
+
+\def\@@MPSK{@MPSK@}
+\def\@@MPSP{@MPSP@}
+
+\def\interceptMPcmykcolor % todo : \ifMPcmykcolors
+ {\ifcase\MPrgbnumber\lastMPgvalue
+ % cannot happen
+ \or
+ % 1 == cmyk color spec
+ \ifMPcmykcolors \dointerceptMPcmykcolor \fi
+ \or
+ % 2 == spot color
+ \ifMPspotcolors \dointerceptMPspotcolor \fi
+ \or
+ % 3 == rgb transparency
+ \invokeMPtransparencyspecial
+ \or
+ % 4 == cmyk transparency
+ \ifMPcmykcolors \invokeMPtransparencyspecial \fi
+ \or
+ % 5 == spot transparency
+ \ifMPspotcolors \invokeMPtransparencyspecial \fi
+ \else
+ % \writestatus{MPtoPDF}{unknown direct special}%
+ \fi}
+
+% ifcsname
+
+\def\dointerceptMPcmykcolor
+ {\revokeMPtransparencyspecial
+ \@EA\ifx\csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname\relax\else
+ \@EA\@EA\@EA\setMPcmyk\csname\@@MPSK\number\MPrgbnumber\lastMPbvalue\endcsname
+ \normalhandleMPcmykcolor
+ \fi}
+
+\def\dointerceptMPspotcolor
+ {\revokeMPtransparencyspecial
+ \@EA\ifx\csname\@@MPSP\number\MPrgbnumber\lastMPbvalue\endcsname\relax\else
+ \@EA\@EA\@EA\setMPspot\csname\@@MPSP\number\MPrgbnumber\lastMPbvalue\endcsname
+ \normalhandleMPspotcolor
+ \fi}
+
+\def\handleMPrgbcolor
+ {\resetMPcolor
+ \ifcase\MPspecialversion
+ \normalhandleMPrgbcolor
+ \else
+ \setMPcolor
+ \ifnum\MPrgbnumber\lastMPrvalue=\MPspecialsignal\relax
+ \interceptMPcmykcolor
+ \else
+ \revokeMPtransparencyspecial
+ \normalhandleMPrgbcolor
+ \fi
+ \fi}
+
+\def\handleMPgraycolor
+ {\resetMPcolor
+ \ifcase\MPspecialversion \else \revokeMPtransparencyspecial \fi
+ \normalhandleMPgraycolor}
+
+\def\handleMPcmykcolor
+ {\resetMPcolor
+ \ifcase\MPspecialversion \else \revokeMPtransparencyspecial \fi
+ \normalhandleMPcmykcolor}
+
+%D Specials are define and recalled using:
+
+\def\MPspecial
+ {MP special \gMPs\nofMParguments}
+
+\def\defineMPspecial#1#2%
+ {\setvalue{MP special #1}{#2}}
+
+%D The path processing macro is slightly extended.
+
+\newtoks \invokeMPspecials
+
+\def\finishMPpath
+ {\PDFcode
+ {\ifcase\finiMPpath W n\or S\or f\or B\else W n\fi
+ \extraMPpathcode}}
+
+\def\processMPpath
+ {\checkMPpath % !
+ \ifcase\nofMPsegments\else
+ \let\extraMPpathcode\empty
+ \ifcase\MPspecialversion\else
+ \ifnum\MPrgbnumber\lastMPrvalue=\MPspecialsignal
+ \ifnum\MPrgbnumber\lastMPgvalue>10 % really needed
+ \scratchcounter\MPrgbnumber\lastMPbvalue
+ \edef\currentMPspecial{\the\scratchcounter}%
+ \ifnum\finiMPpath=2 % to outer level
+ \the\invokeMPspecials
+ \fi
+ \fi
+ \fi
+ \fi
+ \flushMPpath
+ \closeMPpath
+ \finishMPpath
+ \fi
+ \let\handleMPsequence\dohandleMPsequence
+ \resetMPstack
+ \nofMPsegments0
+ \handleMPsequence}
+
+%D Shading is an example of a more advanced graphic feature,
+%D but users will seldom encounter those complications. Here
+%D we only show a few simple examples, but many other
+%D alternatives are possible by setting up the functions built
+%D in \PDF\ in the appropriate way.
+%D
+%D Shading has to do with interpolation between two or more
+%D points or user supplied ranges. In \PDF, the specifications
+%D of a shade has to be encapsulated in objects and passed on
+%D as resources. This is a \PDF\ level 1.3. feature. One can
+%D simulate three dimensional shades as well and define simple
+%D functions using a limited set of \POSTSCRIPT\ primitives.
+%D Given the power of \METAPOST\ and these \PDF\ features, we
+%D can achieve superb graphic effects.
+%D
+%D Since everything is hidden in \TEX\ and \METAPOST\ graphics,
+%D we can stick to high level \CONTEXT\ command, as shown in
+%D the following exmples.
+%D
+%D \startbuffer
+%D \startuniqueMPgraphic{CircularShade}
+%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+%D circular_shade(p,0,.2red,.9red) ;
+%D \stopuniqueMPgraphic
+%D
+%D \startuniqueMPgraphic{LinearShade}
+%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+%D linear_shade(p,0,.2blue,.9blue) ;
+%D \stopuniqueMPgraphic
+%D
+%D \startuniqueMPgraphic{DuotoneShade}
+%D path p ; p := unitsquare xscaled \overlaywidth yscaled \overlayheight ;
+%D linear_shade(p,2,.5green,.5red) ;
+%D \stopuniqueMPgraphic
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D These graphics can be hooked into the overlay mechanism,
+%D which is available in many commands.
+%D
+%D \startbuffer
+%D \defineoverlay[demo 1][\uniqueMPgraphic{CircularShade}]
+%D \defineoverlay[demo 2][\uniqueMPgraphic {LinearShade}]
+%D \defineoverlay[demo 3][\uniqueMPgraphic {DuotoneShade}]
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \getbuffer
+%D
+%D These backgrounds can for instance be applied to \type
+%D {\framed}:
+%D
+%D \startbuffer
+%D \setupframed[width=3cm,height=2cm,frame=off]
+%D \startcombination[3*1]
+%D {\framed[backgroundachtergrond=demo 1]{\bfd \white Demo 1}} {}
+%D {\framed[backgroundachtergrond=demo 2]{\bfd \white Demo 2}} {}
+%D {\framed[backgroundachtergrond=demo 3]{\bfd \white Demo 3}} {}
+%D \stopcombination
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D There are a few more alternatives, determined by the second
+%D parameter passed to \type {circular_shade} and alike.
+%D
+%D \def\SomeShade#1#2#3#4#5%
+%D {\startuniqueMPgraphic{Shade-#1}
+%D width := \overlaywidth ;
+%D height := \overlayheight ;
+%D path p ; p := unitsquare xscaled width yscaled height ;
+%D #2_shade(p,#3,#4,#5) ;
+%D \stopuniqueMPgraphic
+%D \defineoverlay[Shade-#1][\uniqueMPgraphic{Shade-#1}]%
+%D \framed[backgroundachtergrond=Shade-#1,width=2cm,height=2cm,frame=off]{}}
+%D
+%D \startlinecorrection
+%D \startcombination[5*1]
+%D {\SomeShade{10}{circular}{0}{.3blue}{.9blue}} {circular 0}
+%D {\SomeShade{11}{circular}{1}{.3blue}{.9blue}} {circular 1}
+%D {\SomeShade{12}{circular}{2}{.3blue}{.9blue}} {circular 2}
+%D {\SomeShade{13}{circular}{3}{.3blue}{.9blue}} {circular 3}
+%D {\SomeShade{14}{circular}{4}{.3blue}{.9blue}} {circular 4}
+%D \stopcombination
+%D \stoplinecorrection
+%D
+%D \blank
+%D
+%D \startlinecorrection
+%D \startcombination[5*1]
+%D {\SomeShade{20}{circular}{0}{.9green}{.3green}} {circular 0}
+%D {\SomeShade{21}{circular}{1}{.9green}{.3green}} {circular 1}
+%D {\SomeShade{22}{circular}{2}{.9green}{.3green}} {circular 2}
+%D {\SomeShade{23}{circular}{3}{.9green}{.3green}} {circular 3}
+%D {\SomeShade{24}{circular}{4}{.9green}{.3green}} {circular 4}
+%D \stopcombination
+%D \stoplinecorrection
+%D
+%D \blank
+%D
+%D \startlinecorrection
+%D \startcombination[4*1]
+%D {\SomeShade{30}{linear}{0}{.3red}{.9red}} {linear 0}
+%D {\SomeShade{31}{linear}{1}{.3red}{.9red}} {linear 1}
+%D {\SomeShade{32}{linear}{2}{.3red}{.9red}} {linear 2}
+%D {\SomeShade{33}{linear}{3}{.3red}{.9red}} {linear 3}
+%D \stopcombination
+%D \stoplinecorrection
+%D
+%D These macros closely cooperate with the \METAPOST\ module
+%D \type {mp-spec.mp}, which is part of the \CONTEXT\
+%D distribution.
+%D
+%D The low level (\PDF) implementation is based on the \TEX\
+%D based \METAPOST\ to \PDF\ converter. Shading is supported
+%D by overloading the \type {fill} operator as implemented
+%D earlier. In \PDF\ type~2 and~3 shading functions are
+%D specified in terms of:
+%D
+%D \starttabulate[|Tl|l|]
+%D \NC /Domain \NC sort of meeting range \NC \NR
+%D \NC /C0 \NC inner shade \NC \NR
+%D \NC /C1 \NC outer shade \NC \NR
+%D \NC /N \NC smaller values, bigger inner circles \NC \NR
+%D \stoptabulate
+
+\newcount\currentPDFshade % 0 % global (document wide) counter
+\let\currentMPshades\empty
+
+\def\startMPshading#1%
+ {\edef\currentMPspecial{\gMPs{#1}}}
+
+\def\stopMPshading
+ {\global\advance\currentPDFshade \plusone
+ \setxvalue{obj:Sh:\currentMPspecial}%
+ {/Sh\the\currentPDFshade\space\the\pdflastobj\space0 R }%
+ \setxvalue{mps:Sh:\currentMPspecial}%
+ {\the\currentPDFshade}}
+
+\appendtoks
+ \global\let\currentMPshades\empty
+\to \MPstartresources
+
+\appendtoks
+ \ifx\currentMPshades\empty \else
+ \xdef\currentPDFresources{\currentPDFresources
+ /Shading <<\currentMPshades>>}%
+ \fi
+\to \MPstopresources
+
+\def\invokeMPshadespecial
+ {\ifundefined{mps:Sh:\currentMPspecial}\else
+ \edef\currentMPshade{\getvalue{obj:Sh:\currentMPspecial}}%
+ \doifinstringelse\currentMPshade\currentMPshades \donothing
+ {\xdef\currentMPshades{\currentMPshades\currentMPshade}}%
+ \def\extraMPpathcode{/Sh\getvalue{mps:Sh:\currentMPspecial} sh Q}%
+ \chardef\finiMPpath\zerocount
+ \PDFcode{q /Pattern cs}%
+ \fi}
+
+\appendtoks \invokeMPshadespecial \to \invokeMPspecials
+
+%D We need to convert the \CMYK\ specials into colors, because
+%D we have to do it twice, we define a macro.
+
+% \def\checkMPshadingcolor#1#2#3#4#5%
+% {\edef\tempMPrvalue{\csname\@@MP0#1\endcsname}%
+% \edef\tempMPgvalue{\csname\@@MP0#2\endcsname}%
+% \edef\tempMPbvalue{\csname\@@MP0#3\endcsname}%
+% \edef#5%
+% {\ifx\tempMPrvalue\tempMPgvalue
+% \ifx\tempMPrvalue\tempMPbvalue
+% \ifx\tempMPgvalue\tempMPbvalue
+% \tempMPbvalue
+% \fi
+% \fi
+% \fi}%
+% \edef#4% todo : spotcolors
+% {\ifnum\MPrgbnumber\tempMPrvalue=\MPspecialsignal\space
+% \ifMPcmykcolors\getvalue{\@@MPSK\number\MPrgbnumber\tempMPbvalue}\fi
+% \fi}}
+
+\def\checkMPshadingcolor#1#2#3#4#5%
+ {\edef\tempMPrvalue{\csname\@@MP0#1\endcsname}%
+ \edef\tempMPgvalue{\csname\@@MP0#2\endcsname}%
+ \edef\tempMPbvalue{\csname\@@MP0#3\endcsname}%
+ \global\let\MPresolvedspace\MPgrayspace
+ \global\let\MPresolvedcolor\!!zerocount
+ \ifnum\MPrgbnumber\tempMPrvalue=\MPspecialsignal\relax
+ \ifcase\MPrgbnumber\tempMPgvalue
+ \or % 1 = cmyk
+ \ifMPcmykcolors
+ \expanded{\resolveMPcmykcolor\getvalue{\@@MPSK\number\MPrgbnumber\tempMPbvalue}}\end
+ \fi
+ \or % 2 = spot
+ \ifMPspotcolors
+ \expanded{\resolveMPspotcolor\getvalue{\@@MPSP\number\MPrgbnumber\tempMPbvalue}}\end
+ \fi
+ \or
+ % 3 = rgb transparency
+ % to do
+ \or
+ % 4 == cmyk transparency
+ % \ifMPcmykcolors
+ % to do
+ % \fi
+ \or
+ % 5 == spot transparency
+ % \ifMPspotcolors
+ % to do
+ % \fi
+ \fi
+ \else
+ \ifx\tempMPrvalue\tempMPgvalue
+ \ifx\tempMPrvalue\tempMPbvalue
+ \expanded{\resolveMPgraycolor\tempMPbvalue}\end
+ \else
+ \expanded{\resolveMPrgbcolor\tempMPrvalue\space\tempMPgvalue\space\tempMPbvalue}\end
+ \fi
+ \else
+ \expanded{\resolveMPrgbcolor\tempMPrvalue\space\tempMPgvalue\space\tempMPbvalue}\end
+ \fi
+ \fi
+ \let#4\MPresolvedcolor
+ \let#5\MPresolvedspace}
+
+%D We also need to make sure that we have two \RGB\ or
+%D \CMYK colors, since we have to set the colorspace.
+
+\def\setMPshadingcolors#1#2#3#4#5#6% color space
+ {\checkMPshadingcolor{#1}{#2}{#3}\MPshadeAc\MPshadeAs
+ \checkMPshadingcolor{#4}{#5}{#6}\MPshadeBc\MPshadeBs
+ \ifx\MPshadeAs\MPshadeBs
+ \let\MPshadeA\MPshadeAc
+ \let\MPshadeB\MPshadeBc
+ \let\MPshadeC\MPshadeAs
+ \else\ifx\MPshadeAs\MPgrayspace
+ \ifx\MPshadeBs\MPrgbspace
+ \edef\MPshadeA{\MPshadeAc\space\MPshadeAc\space\MPshadeAc}%
+ \else
+ \negatecolorcomponent\MPshadeAc
+ \edef\MPshadeA{0 0 0 \MPshadeAc}%
+ \fi
+ \let\MPshadeB\MPshadeBc
+ \let\MPshadeC\MPshadeBs
+ \else\ifx\MPshadeBs\MPgrayspace
+ \let\MPshadeA\MPshadeAc
+ \ifx\MPshadeAs\MPrgbspace
+ \edef\MPshadeB{\MPshadeBc\space\MPshadeBc\space\MPshadeBc}%
+ \else
+ \negatecolorcomponent\MPshadeBc
+ \edef\MPshadeB{0 0 0 \MPshadeBc}%
+ \fi
+ \let\MPshadeC\MPshadeAs
+ \else
+ % different color spaces
+ \def\MPshadeA{1}%
+ \def\MPshadeB{1}%
+ \let\MPshadeC\MPgrayspace
+ \fi\fi\fi}
+
+\let\MPshadeA\MPcmykWhite
+\let\MPshadeB\MPcmykBlack
+\let\MPshadeC\MPgrayspace
+
+%D The reason why this macro is a bit complicates is that we
+%D handle black and white situations (otherwise we would have
+%D to use \CMYK\ b/w in case of a \CMYK\ shade).
+
+%D Here are the special handlers:
+
+\defineMPspecial{30}
+ {\startMPshading{14}% type 2
+ \setMPshadingcolors{4}{5}{6}{9}{10}{11}%
+ \immediate\pdfobj
+ {<</FunctionType 2
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
+ /N \gMPs3>>}%
+ \immediate\pdfobj
+ {<</ShadingType 2
+ /ColorSpace /\MPshadeC\space
+ /Function \the\pdflastobj\space 0 R
+ /Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}]
+ /Extend [true true]>>}%
+ \stopMPshading}
+
+\defineMPspecial{31}
+ {\startMPshading{16}% type 3
+ \setMPshadingcolors{4}{5}{6}{10}{11}{12}%
+ \immediate\pdfobj
+ {<</FunctionType 2
+ /Domain [\gMPs1 \gMPs2]
+ /C0 [\MPshadeA]
+ /C1 [\MPshadeB]
+ /N \gMPs3>>}%
+ \immediate\pdfobj
+ {<</ShadingType 3
+ /ColorSpace /\MPshadeC\space
+ /Function \the\pdflastobj\space 0 R
+ /Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}]
+ /Extend [true true]>>}%
+ \stopMPshading}
+
+%D Figure inclusion is kind of strange to \METAPOST, but when
+%D Santiago Muelas started discussing this with me, I was able
+%D to cook up a solution using specials.
+
+\def\invokeMPfigurespecial%
+ {\getvalue{mps:gr:\currentMPspecial}} % or \relax
+
+\appendtoks \invokeMPfigurespecial \to \invokeMPspecials
+
+\defineMPspecial{10}
+ {\setxvalue{mps:gr:\gMPs8}%
+ {\noexpand\handleMPfigurespecial
+ {\gMPs1}{\gMPs2}{\gMPs3}{\gMPs4}{\gMPs5}{\gMPs6}{\gMPs7}%
+ \noexpand\setxvalue{mps:gr:\gMPs8}{}}}
+
+% \def\handleMPfigurespecial#1#2#3#4#5#6#7%
+% {\vbox to 0pt
+% {\vss
+% \hbox to 0pt
+% {\pdfliteral{q #1 #2 #3 #4 #5 #6 cm}%
+% \pdfimage width 1bp height 1bp {#7}% maybe 10 is better
+% \pdfliteral{Q}%
+% \hss}}}
+%
+% better, since xform reuse
+
+\def\handleMPfigurespecial#1#2#3#4#5#6#7% todo : combine with ext fig
+ {\vbox to \zeropoint
+ {\vss
+ \hbox to \zeropoint
+ {\ifcase\pdfoutput\or % will be hooked into the special driver
+ \doiffileelse{#7}
+ {\doifundefinedelse{mps:x:#7}
+ {\immediate\pdfximage\!!width\onebasepoint\!!height\onebasepoint{#7}%
+ \setxvalue{mps:x:#7}{\pdfrefximage\the\pdflastximage}}%
+ {\message{[reusing figure #7]}}%
+ \PDFcode{q #1 #2 #3 #4 #5 #6 cm}%
+ \rlap{\getvalue{mps:x:#7}}%
+ \PDFcode{Q}}
+ {\message{[unknown figure #7]}}%
+ \fi
+ \hss}}}
+
+%D An example of using both special features is the
+%D following.
+%D
+%D \starttyping
+%D \startMPpage
+%D externalfigure "hakker1b.png" scaled 22cm rotated 10 shifted (-2cm,0cm);
+%D externalfigure "hakker1b.png" scaled 10cm rotated -10 ;
+%D externalfigure "hakker1b.png" scaled 7cm rotated 45 shifted (8cm,12cm) ;
+%D path p ; p := unitcircle xscaled 15cm yscaled 20cm;
+%D path q ; q := p rotatedaround(center p,90) ;
+%D path r ; r := buildcycle(p,q) ; clip currentpicture to r ;
+%D path s ; s := boundingbox currentpicture enlarged 5mm ;
+%D picture c ; c := currentpicture ; currentpicture := nullpicture ;
+%D circular_shade(s,0,.2red,.9red) ;
+%D addto currentpicture also c ;
+%D \stopMPpage
+%D \stoptyping
+
+%D This is some experimental hyperlink driver that I wrote
+%D for Mark Wicks.
+
+\defineMPspecial{20}
+ {\setxvalue{mps:hl:\gMPs6}%
+ {\noexpand\handleMPhyperlink
+ {\gMPs1}{\gMPs2}{\gMPs3}{\gMPs4}{\gMPs5}%
+ \noexpand\setxvalue{mps:hl:\gMPs6}{}}}
+
+\def\handleMPhyperlink#1#2#3#4#5%
+ {%\ifcase\pdfoutput\or
+ \setbox\scratchbox\hbox
+ {\setbox\scratchbox\null
+ \scratchdimen#1\onebasepoint\scratchdimen-\scratchdimen
+ \advance\scratchdimen#3\onebasepoint
+ \wd\scratchbox\scratchdimen
+ \scratchdimen#2\onebasepoint\scratchdimen-\scratchdimen
+ \advance\scratchdimen#4\onebasepoint
+ \ht\scratchbox\scratchdimen
+ \incolorfalse
+ \gotobox{\box\scratchbox}[#5]}%
+ \setbox\scratchbox\hbox
+ {\scratchdimen\MPxoffset\onebasepoint\advance\scratchdimen#1\onebasepoint
+ \hskip\scratchdimen
+ \scratchdimen\MPyoffset\onebasepoint\advance\scratchdimen#2\onebasepoint
+ \raise\scratchdimen\box\scratchbox}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ }%\fi}
+
+\def\invokeMPhyperlinkspecial%
+ {\getvalue{mps:hl:\currentMPspecial}} % or \relax
+
+\appendtoks \invokeMPhyperlinkspecial \to \invokeMPspecials
+
+%D Special number~1 is dedicated to \CMYK\ support. If you
+%D want to know why: look at this:
+%D
+%D \startbuffer[mp]
+%D fill fullcircle xyscaled (3cm,1cm) withcolor \MPcolor{test} ;
+%D \stopbuffer
+%D
+%D \startbuffer[cmyk]
+%D \startcombination[4*1]
+%D {\definecolor[test][c=1,y=.3,k=.3] \processMPbuffer[mp]} {c=1 y=.3 k=.3}
+%D {\definecolor[test][c=.9,y=.15] \processMPbuffer[mp]} {c=.9 y=.15}
+%D {\definecolor[test][c=.25,y=.8] \processMPbuffer[mp]} {c=.25 y=.8}
+%D {\definecolor[test][c=.45,y=.1] \processMPbuffer[mp]} {c=.45 y=.1}
+%D \stopcombination
+%D \stopbuffer
+%D
+%D \placefigure
+%D {\CMYK\ support disabled,
+%D conversion to \RGB.}
+%D {\setupcolors[cmyk=nee,state=start]\getbuffer[cmyk]}
+%D
+%D \placefigure
+%D {\CMYK\ support enabled,
+%D no support in \METAPOST.}
+%D {\setupcolors[cmyk=ja,mpcmyk=nee,state=start]\getbuffer[cmyk]}
+%D
+%D \placefigure
+%D {\CMYK\ support enabled,
+%D no conversion to \RGB,
+%D support in \METAPOST}
+%D {\setupcolors[cmyk=ja,state=start]\getbuffer[cmyk]}
+
+\defineMPspecial{1}
+ {\ifMPcmykcolors
+ \setxvalue{\@@MPSK\gMPs1}{\gMPs2 \gMPs3 \gMPs4 \gMPs5 }%
+ \fi}
+
+\def\setMPcmyk#1 #2 #3 #4 %
+ {\setvalue{\@@MP01}{#1}%
+ \setvalue{\@@MP02}{#2}%
+ \setvalue{\@@MP03}{#3}%
+ \setvalue{\@@MP04}{#4}}
+
+%\defineMPspecial{2}
+% {\ifMPspotcolors
+% \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 }%
+% \fi}
+
+% \defineMPspecial{2}
+% {\ifMPspotcolors
+% \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 }%
+% \checkMPspot{\gMPs2}{\gMPs3}%
+% \fi}
+%
+% \def\setMPspot#1 #2 %
+% {\setvalue{\@@MP01}{#1}%
+% \setvalue{\@@MP02}{#2}}
+%
+% \def\checkMPspot#1#2%
+% {\expanded{\resolveMPspotcolor#1 #2}\end
+% \ifx\MPspotspace\MPresolvedspace
+% \edef\MPspotspacespec{/\MPspotspace\space}%
+% \doifinstringelse\MPspotspacespec\currentMPcolorspaces
+% \donothing\registerMPcolorspace
+% \fi}
+
+\defineMPspecial{2}
+ {\ifMPspotcolors
+ \setxvalue{\@@MPSP\gMPs1}{\gMPs2 \gMPs3 \gMPs4 \gMPs5 }% space is essential
+ \checkMPspot{\gMPs2}{\gMPs3}{\gMPs4}{\gMPs5}%
+ \fi}
+
+\def\setMPspot#1 #2 #3 #4 %
+ {\setvalue{\@@MP01}{#1}%
+ \setvalue{\@@MP02}{#2}%
+ \setvalue{\@@MP03}{#3}%
+ \setvalue{\@@MP04}{#4}}
+
+\def\checkMPspot#1#2#3#4%
+ {\expanded{\resolveMPspotcolor#1 #2 #3 #4}\end
+ \ifx\MPspotspace\MPresolvedspace
+ \edef\MPspotspacespec{/\MPspotspace\space}%
+ \doifinstringelse\MPspotspacespec\currentMPcolorspaces
+ \donothing\registerMPcolorspace
+ \fi}
+
+%D This special (number 50) passes positions to a tex file.
+%D This method uses a two||pass approach an (mis|)|used the
+%D context positioning macros. In \type {core-pos} we will
+%D implement the low level submacro needed.
+%D
+%D \startbuffer
+%D \definelayer[test]
+%D
+%D \setlayer
+%D [test]
+%D [x=\MPx{somepos-1},y=\MPy{somepos-1}]
+%D {Whatever we want here!}
+%D
+%D \setlayer
+%D [test]
+%D [x=\MPx{somepos-2},y=\MPy{somepos-2}]
+%D {Whatever we need there!}
+%D
+%D \startuseMPgraphic{oeps}
+%D draw fullcircle scaled 6cm withcolor red ;
+%D register ("somepos-1",1cm,2cm,center currentpicture) ;
+%D register ("somepos-2",4cm,3cm,(-1cm,-2cm)) ;
+%D \stopuseMPgraphic
+%D
+%D \framed[background=test,offset=overlay]{\useMPgraphic{oeps}}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here the width and height are not realy used, but one can
+%D imagine situations where tex has to work with values
+%D calculated by \METAPOST.
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D Later we will implement a more convenient macro:
+%D
+%D \starttyping
+%D \setMPlayer [test] [somepos-1] {Whatever we want here!}
+%D \setMPlayer [test] [somepos-2] {Whatever we need there!}
+%D \stoptyping
+
+\ifx\dosavepositionwhd\undefined
+ \let\dosavepositionwhd\gobblesevenarguments
+\fi
+
+\defineMPspecial{50} % x y width height label
+ {\bgroup
+ \scratchdimen\MPllx\onebasepoint\scratchdimen-\scratchdimen
+ % \scratchdimen-\MPllx\onebasepoint % moet ook werken
+ \advance\scratchdimen\gMPs1\onebasepoint
+ \edef\x{\number\scratchdimen}%
+ \scratchdimen\gMPs2\onebasepoint
+ \scratchdimen-\scratchdimen
+ \advance\scratchdimen\MPury\onebasepoint
+ \edef\y{\number\scratchdimen}%
+ \scratchdimen\gMPs3\onebasepoint
+ \edef\w{\number\scratchdimen}%
+ \scratchdimen\gMPs4\onebasepoint
+ \edef\h{\number\scratchdimen}%
+ \dosavepositionwhd{\gMPs5}0\x\y\w\h0%
+ \egroup}
+
+%D Transparency support used specials 60 (rgb) and 61
+%D (cmyk).
+%D
+%D \startbuffer
+%D u := 2cm ; path p ; p := fullcircle scaled u shifted (u/4,0);
+%D
+%D fill p rotated 90 withcolor transparent(1,.5,yellow) ;
+%D fill p rotated 210 withcolor transparent(1,.5,green) ;
+%D fill p rotated 330 withcolor transparent(1,.5,blue) ;
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlinecorrection \processMPbuffer \stoplinecorrection
+%D
+%D One can also communicate colors between \CONTEXT\ and
+%D \METAPOST:
+%D
+%D \startbuffer
+%D \definecolor[tcyan] [c=1,k=.2,t=.5]
+%D \definecolor[tmagenta][m=1,k=.2,t=.5]
+%D \definecolor[tyellow] [y=1,k=.2,t=.5]
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D \startbuffer
+%D u := 2cm ; path p ; p := fullcircle scaled u shifted (u/4,0);
+%D
+%D fill p rotated 90 withcolor \MPcolor{tcyan} ;
+%D fill p rotated 210 withcolor \MPcolor{tmagenta} ;
+%D fill p rotated 330 withcolor \MPcolor{tyellow} ;
+%D \stopbuffer
+%D
+%D \startlinecorrection \processMPbuffer \stoplinecorrection
+%D
+%D We save all the three components needed in one macro,
+%D just to save hash space.
+
+\def\@@MPST{@MPST@}
+
+\def\assignMPStransparency#1#2#3%
+ {\edef\PDFtransparencyidentifier{#1}%
+ \edef\PDFtransparencyreference {#2}%
+ \edef\PDFtransparencycolorspecs{#3}}
+
+% \def\PDFtransparencyspec
+% {\ifx\MPresolvedspace\MPgrayspace
+% \MPresolvedcolor\space g \MPresolvedcolor\space G%
+% \else\ifx\MPresolvedspace\MPrgbspace
+% \MPresolvedcolor\space rg \MPresolvedcolor\space RG%
+% \else\ifx\MPresolvedspace\MPcmykspace
+% \MPresolvedcolor\space k \MPresolvedcolor\space K%
+% \else\ifx\MPresolvedspace\empty\else
+% /\MPresolvedspace\space cs \MPresolvedcolor\space sc
+% /\MPresolvedspace\space CS \MPresolvedcolor\space SC%
+% \fi\fi\fi\fi}
+
+\def\PDFtransparencyspec % todo
+ {\ifx\MPresolvedspace\MPgrayspace
+ \MPresolvedcolor\space g
+ \MPresolvedcolor\space G%
+ \else\ifx\MPresolvedspace\MPrgbspace
+ \MPresolvedcolor\space rg
+ \MPresolvedcolor\space RG%
+ \else\ifx\MPresolvedspace\MPcmykspace
+ \MPresolvedcolor\space k
+ \MPresolvedcolor\space K%
+ \else\ifx\MPresolvedspace\empty\else
+ /\MPresolvedspace\space cs
+ /\MPresolvedspace\space CS
+ \PDFgetspotcolorspec\MPresolvedcolor
+ \fi\fi\fi\fi}
+
+\defineMPspecial{3} % rgb
+ {\edef\currentMPspecial{\gMPs6}%
+ \presetPDFtransparency{\gMPs1}{\gMPs2}%
+ \expanded{\resolveMPrgbcolor\gMPs3 \gMPs4 \gMPs5}\end
+ \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
+ {\noexpand\assignMPStransparency
+ {\PDFtransparencyidentifier}%
+ {\PDFtransparencyreference}%
+ {\PDFtransparencyspec}}}
+
+\defineMPspecial{4} % cmyk
+ {\edef\currentMPspecial{\gMPs7}%
+ \presetPDFtransparency{\gMPs1}{\gMPs2}%
+ \expanded{\resolveMPcmykcolor\gMPs3 \gMPs4 \gMPs5 \gMPs6}\end
+ \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
+ {\noexpand\assignMPStransparency
+ {\PDFtransparencyidentifier}%
+ {\PDFtransparencyreference}%
+ {\PDFtransparencyspec}}}
+
+% \defineMPspecial{5} % spot
+% {\edef\currentMPspecial{\gMPs5}%
+% \presetPDFtransparency{\gMPs1}{\gMPs2}%
+% \checkMPspot{\gMPs3}{\gMPs4}%
+% \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
+% {\noexpand\assignMPStransparency
+% {\PDFtransparencyidentifier}%
+% {\PDFtransparencyreference}%
+% {\PDFtransparencyspec}}}
+
+\defineMPspecial{5} % spot
+ {\edef\currentMPspecial{\gMPs7}%
+ \presetPDFtransparency{\gMPs1}{\gMPs2}%
+ \checkMPspot{\gMPs3}{\gMPs4}{\gMPs5}{\gMPs6}%
+ \setevalue{\@@MPST\currentMPspecial}% was \setxvalue, bug !
+ {\noexpand\assignMPStransparency
+ {\PDFtransparencyidentifier}%
+ {\PDFtransparencyreference}%
+ {\PDFtransparencyspec}}}
+
+% beware: for the moment only supported in pdftex; needs a cleanup!
+
+\def\registerMPcolorspace
+ {\doifobjectreferencefoundelse{PDFCS}\MPspotspace
+ {\doPDFgetobjectreference{PDFCS}\MPspotspace\PDFobjectreference
+ \xdef\currentMPcolorspaces
+ {\currentMPcolorspaces\MPspotspacespec\PDFobjectreference\space}}
+ \donothing}
+
+%D We need to add resource specifications!
+
+\appendtoks
+ \global\let\currentMPcolorspaces\empty
+\to \MPstartresources
+
+\appendtoks
+ \ifx\currentMPcolorspaces\empty \else
+ \xdef\currentPDFresources{\currentPDFresources
+ /ColorSpace <<\currentMPcolorspaces>>}%
+ \fi
+\to \MPstopresources
+
+%D For efficiency reasons, we fall back on the allocation
+%D mechanisms already present. For use within \MPTOPDF, we
+%D provide a fall back routine.
+
+\let\currentMPtransparencies\empty
+
+% \def\invokeMPtransparencyspecial
+% {\doifdefined{\@@MPST\currentMPspecial}
+% {\getvalue{\@@MPST\currentMPspecial}%
+% \doifinstringelse
+% {\PDFtransparencyidentifier}{\currentMPtransparencies}
+% {}
+% {\xdef\currentMPtransparencies
+% {\currentMPtransparencies
+% \PDFtransparencyidentifier\space
+% \PDFtransparencyreference\space}}%
+% \def\extraMPpathcode{ Q}%
+% \PDFcode{q
+% \PDFtransparencycolorspecs\space
+% \PDFtransparencyidentifier\space gs}}}
+
+% this one triggers a new graphic state
+
+\def\invokeMPtransparencyspecial
+ {\scratchcounter\MPrgbnumber\lastMPbvalue
+ \edef\currentMPspecial{\the\scratchcounter}%
+ \ifundefined{\@@MPST\currentMPspecial}\else
+ \getvalue{\@@MPST\currentMPspecial}%
+ \doifinstringelse\PDFtransparencyidentifier\currentMPtransparencies
+ \donothing\registerMPtransparencyresource % slow
+ \PDFcode
+ {\PDFtransparencycolorspecs\space
+ \PDFtransparencyidentifier\space gs}%
+ % potential optimization
+ % \setevalue{\@@MPST\currentMPspecial}%
+ % {\PDFcode
+ % {\PDFtransparencycolorspecs\space
+ % \PDFtransparencyidentifier\space gs}}%
+ % \getvalue{\@@MPST\currentMPspecial}%
+ \let\revokeMPtransparencyspecial\dorevokeMPtransparencyspecial
+ \fi}
+
+% this one does a reset
+
+\let\revokeMPtransparencyspecial\relax
+
+\appendtoks
+ \revokeMPtransparencyspecial
+\to \MPstopresources
+
+\def\dorevokeMPtransparencyspecial % only called if state is set
+ {\ifx\PDFtransparencyresetidentifier\empty\else
+ \doifinstringelse\PDFtransparencyresetidentifier\currentMPtransparencies
+ \donothing\registerMPtransparencyresetresource
+ \PDFcode{\PDFtransparencyresetidentifier\space gs}%
+ % potential optimization
+ % \def\dorevokeMPtransparencyspecial
+ % {\PDFcode
+ % {\PDFtransparencycolorspecs\space
+ % \PDFtransparencyidentifier\space gs}}%
+ \let\dorevokeMPtransparencyspecial\dodorevokeMPtransparencyspecial
+ \let\revokeMPtransparencyspecial\relax % invoke sets it
+ \fi}
+
+% and this one a simplified reset
+
+% \def\dodorevokeMPtransparencyspecial % used after first invocation
+% {\getvalue{\@@MPST0}%
+% \PDFcode{\PDFtransparencyidentifier\space gs}}
+
+\def\dodorevokeMPtransparencyspecial % used after first invocation
+ {\PDFcode{\PDFtransparencyresetidentifier\space gs}%
+ \let\revokeMPtransparencyspecial\relax} % invoke sets it
+
+% add a resource entry
+
+\def\registerMPtransparencyresource
+ {\xdef\currentMPtransparencies
+ {\currentMPtransparencies
+ \PDFtransparencyidentifier\space
+ \PDFtransparencyreference\space}}
+
+\def\registerMPtransparencyresetresource
+ {\xdef\currentMPtransparencies
+ {\currentMPtransparencies
+ \PDFtransparencyresetidentifier\space
+ \PDFtransparencyresetreference\space}}
+
+\appendtoks \invokeMPtransparencyspecial \to \invokeMPspecials
+
+\ifCONTEXT \else
+
+ \def\@@MPSTN{@MPSTN@}
+ \def\@@MPSTO{@MPSTO@}
+
+ \newcount\PDFcurrenttransparency
+
+ \let\PDFtransparencyresetidentifier\empty
+ \let\PDFtransparencyresetreference \empty
+
+ \let\PDFtransparencyidentifier\empty
+ \let\PDFtransparencyreference \empty
+
+ \def\initializePDFtransparency
+ {\global\let\initializePDFtransparency\relax
+ \presetPDFtransparency{1}{1}%
+ \xdef\PDFtransparencyresetidentifier{/Tr0}%
+ \xdef\PDFtransparencyresetreference{\the\pdflastobj\space 0 R}}
+
+ \def\presetPDFtransparency#1#2%
+ {\initializePDFtransparency
+ \@EA\ifx\csname\@@MPSTO#1:#2\endcsname\relax
+ \global\advance\PDFcurrenttransparency \plusone
+ \immediate\pdfobj{\PDFtransparencydictionary{#1}{#2}{}}%
+ \setxvalue{\@@MPSTN#1:#2}{\the\PDFcurrenttransparency}%
+ \setxvalue{\@@MPSTO#1:#2}{\the\pdflastobj}%
+ \fi
+ \edef\PDFtransparencyidentifier{/Tr\getvalue{\@@MPSTN#1:#2}}%
+ \edef\PDFtransparencyreference{\getvalue{\@@MPSTO#1:#2} 0 R}}
+
+ \def\PDFtransparencydictionary#1#2#3% type fraction extras
+ {<</Type /ExtGState
+ /ca #2 /CA #2
+ /BM /\ifcase#1 Normal\or Normal\or Multiply\or Screen\or
+ Overlay\or SoftLight\or HardLight\or ColorDodge\or
+ ColorBurn\or Darken\or Lighten\or Difference\or
+ Exclusion\else Compatible\fi
+ #3>>}
+
+\fi
+
+\appendtoks
+ \global\let\currentMPtransparencies\empty
+\to \MPstartresources
+
+\appendtoks
+ \ifx\currentMPtransparencies\empty \else
+ \xdef\currentPDFresources{\currentPDFresources
+ /ExtGState <<\currentMPtransparencies>>}%
+ \fi
+\to \MPstopresources
+
+%D In all cases, we need to keep track of the resources
+%D used.
+
+%D A few auxiliary macros:
+
+\def\MPgrayspace{DeviceGray}
+\def\MPrgbspace {DeviceRGB}
+\def\MPcmykspace{DeviceCMYK}
+\let\MPspotspace\MPgrayspace
+
+\def\MPcmykBlack{0 0 0 0}
+\def\MPcmykWhite{0 0 0 1}
+
+\ifCONTEXT
+
+ \def\startMPcolorresolve
+ {\bgroup
+ \def\dostartgraycolormode##1%
+ {\global\let\MPresolvedspace\MPgrayspace
+ \xdef\MPresolvedcolor{##1}}%
+ \def\dostartrgbcolormode ##1##2##3%
+ {\global\let\MPresolvedspace\MPrgbspace
+ \xdef\MPresolvedcolor{##1 ##2 ##3}}%
+ \def\dostartcmykcolormode##1##2##3##4%
+ {\global\let\MPresolvedspace\MPcmykspace
+ \xdef\MPresolvedcolor{##1 ##2 ##3 ##4}}%
+ \def\dostartspotcolormode##1##2%
+ {\global\let\MPspotspace\empty
+ \xdef\MPresolvedspace{##1}%
+ \xdef\MPresolvedcolor{##2}%
+ \global\let\MPspotspace\MPresolvedspace}% signal
+ \dostartgraycolormode\!!zerocount} % kind of hackery initialization
+
+ \let\stopMPcolorresolve\egroup
+
+ \def\resolveMPrgbcolor#1 #2 #3\end
+ {\startMPcolorresolve
+ \execcolorR#1:#2:#3:0:0\od
+ \stopMPcolorresolve}
+
+ \def\resolveMPcmykcolor#1 #2 #3 #4\end
+ {\startMPcolorresolve
+ \execcolorC#1:#2:#3:#4:0:0\od
+ \stopMPcolorresolve}
+
+ \def\resolveMPgraycolor#1\end
+ {\startMPcolorresolve
+ \execcolorS#1:0:0\od
+ \stopMPcolorresolve}
+
+% \def\resolveMPspotcolor#1 #2\end
+% {\startMPcolorresolve
+% \execcolorP#1:#2:0:0\od
+% \stopMPcolorresolve}
+
+ \def\resolveMPspotcolor#1 #2 #3 #4\end
+ {\startMPcolorresolve
+ \ifnum#2>\plusone
+ \checkmultitonecolor{#1}%
+ \fi
+ \execcolorP#1:#2:#3:#4:0:0\od
+ \stopMPcolorresolve}
+
+\else
+
+ \def\resolveMPspotcolor#1 #2\end
+ {\global\let\MPresolvedspace\MPgrayspace
+ \xdef\MPresolvedcolor{0}}
+
+ \def\resolveMPrgbcolor#1 #2 #3\end
+ {\global\let\MPresolvedspace\MPrgbspace
+ \xdef\MPresolvedcolor{#1 #2 #3}}
+
+ \def\resolveMPcmykcolor#1 #2 #3 #4\end
+ {\global\let\MPresolvedspace\MPcmykspace
+ \xdef\MPresolvedcolor{#1 #2 #3 #4}}
+
+ \def\resolveMPgraycolor#1\end
+ {\global\let\MPresolvedspace\MPgrayspace
+ \xdef\MPresolvedcolor{#1}} % should be inverted
+
+\fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-mps.tex b/Master/texmf-dist/tex/context/base/supp-mps.tex
new file mode 100644
index 00000000000..23e6ccc89d9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-mps.tex
@@ -0,0 +1,1864 @@
+%D \module
+%D [ file=supp-mps,
+%D version=1997.07.05,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\METAPOST\ Inclusion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D \METAPOST\ is John Hobbys alternative for \METAFONT\ and
+%D produces superior \POSTSCRIPT\ code. In this module we
+%D integrate \METAPOST\ support int \CONTEXT. We offer two
+%D tracks:
+%D
+%D \startitemize
+%D \item generating \METAPOST\ code, running this program from
+%D within \TEX\ using \type{\write18}, and importing the
+%D result
+%D \item generating \METAPOST\ code, processing the code
+%D afterward, and importing the result in a second pass
+%D \stopitemize
+%D
+%D The first approach uses a non standard \TEX\ feature,
+%D implemented in Web2c. I'm not going to discuss the pros and
+%D cons of running programs from within others, but all
+%D arguments against this can be overcome by implementing a
+%D \TEX\ worthy primitive:
+%D
+%D \starttyping
+%D \excuteMetaPost filename
+%D \stoptyping
+%D
+%D Ok then, let's start:
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+\ifx \undefined \letterhash \else \input supp-ini.tex \relax \fi
+\ifx \undefined \startMPgraphic \else \expandafter \endinput \fi
+
+\writestatus{loading}{Context Support Macros / MetaPost Inclusion}
+
+\unprotect
+
+\def\@@MPG{@MPG@}
+
+%D First we define a handy constant:
+
+\bgroup \catcode`\%=\@@other \xdef\letterpercent{\string%} \egroup
+
+%D \macros
+%D {startMPgraphic}
+%D
+%D From within \TEX\ one can execute \METAPOST\ code by putting
+%D it between the two commands
+%D
+%D \starttyping
+%D \startMPgraphic
+%D \stopMPgraphic
+%D \stoptyping
+%D
+%D This is implemented as:
+
+\long\def\startMPgraphic#1\stopMPgraphic
+ {\startwritingMPgraphic
+ \writecheckedMPgraphic{#1}% % potential speedup: pass #1 as macro
+ \stopwritingMPgraphic}
+
+%D \macros
+%D {startMPrun}
+%D
+%D If we just want to run \METAPOST\ code, that is, not to
+%D explictly generate a figure in terms of \type{beginfig} and
+%D \type{endfig}, we can use:
+%D
+%D \starttyping
+%D \startMPgraphic
+%D \stopMPgraphic
+%D \stoptyping
+%D
+%D \starttyping
+%D \startMPrun
+%D \stopMPrun
+%D \stoptyping
+%D
+%D The next booleans are for internal purposes only.
+
+% some day a bit more more clear:
+%
+% run directly/run afterwards/run external defined
+% insert directly/insert whenever
+% use object/don't use objects
+
+\newif\ifMPgraphics \MPgraphicstrue
+\newif\ifMPrun \MPrunfalse
+
+\ifCONTEXT
+
+ \long\def\dostartMPrun#1#2\stopMPrun
+ {\bgroup
+ \MPruntrue
+ \doifsomething{#1}{\def\MPgraphicfile{#1}}%
+ \startwritingMPgraphic
+ \writecheckedMPgraphic{#2}%
+ \stopwritingMPgraphic
+ \egroup}
+
+ \def\startMPrun
+ {\dosinglegroupempty\dostartMPrun}
+
+\else
+
+ \long\def\startMPrun#1\stopMPrun
+ {\MPruntrue
+ \startwritingMPgraphic
+ \writecheckedMPgraphic{#1}%
+ \stopwritingMPgraphic
+ \MPrunfalse}
+
+\fi
+
+%D \macros
+%D {startwritingMPgraphic,
+%D writeMPgraphic,
+%D stopwritingMPgraphic}
+%D
+%D If the writing process is divided into more steps, one can
+%D use the components of this macro directly.
+%D
+%D \starttyping
+%D \startwritingMPgraphic
+%D ...
+%D \writeMPgraphic{...}
+%D ...
+%D \writeMPgraphic{...}
+%D ...
+%D \stopwritingMPgraphic
+%D \stoptyping
+
+%D \macros
+%D {ifrunMPgraphics,ifrunMPTEXgraphics,ifinsertMPgraphics}
+%D
+%D These macros look a bit more complicated that one would
+%D expect at first sight. This is due to the two ways of
+%D processing these graphics, mentioned in a previous
+%D paragraph. Which method is used, the direct or indirect
+%D one, depends on a boolean.
+
+\newif\ifrunMPgraphics \runMPgraphicsfalse
+\newif\ifrunMPTEXgraphics \runMPTEXgraphicsfalse
+\newif\ifinsertMPgraphics \insertMPgraphicstrue
+
+%D If set to true, one can do with a single pass, else one must
+%D process the \METAPOST\ file \type{mpgraph} between two
+%D succesive \TEX\ runs.
+
+\ifx\MPgraphicfile\undefined
+
+ \def\MPgraphicfile{mp\ifMPrun run\else graph\fi}
+ \def\MPruntimefile{mprun}
+
+\fi
+
+%D \macros
+%D {MPgraphic}
+%D
+%D When we run \METAPOST\ from within \TEX, each graphic is
+%D processed at once, which means that we reuse this file many
+%D times. When however the execution is delayed, all graphics
+%D are saved in a separate figure. The current graphic is
+%D characterized bij a \COUNTER. This counter is available
+%D in \type{\MPgraphic}.
+
+\newcount\nofMPgraphics
+\newcount\currentMPgraphic
+
+\def\MPgraphic{0}
+
+% %D \macros
+% %D {ifreuseMPgraphics}
+% %D
+% %D If one want to reuse grapics, one can save much redundant
+% %D run time by setting the next switch to true.
+%
+% \newif\ifreuseMPgraphics \reuseMPgraphicstrue
+
+%D The three macros responsible for writing the graphic
+%D implement both schemes.
+
+%D \macros
+%D {MPinclusions, startMPinclusions, MPinitializations}
+%D
+%D One can include for instance common input commands by
+%D passing them to \type{\MPinclusions}:
+%D
+%D \starttyping
+%D \MPinclusions{input mp-mine}
+%D \stoptyping
+%D
+%D The token register \type {\MPinitializations} is expanded
+%D before all other inclusions, the extensions are expanded
+%D only once per run.
+
+\newtoks \MPinitializations % each graphic
+\newtoks \MPextensions % once per run (can be multiple graphics)
+
+\long\def\startMPinclusions#1\stopMPinclusions % document wide
+ {\long\def\theMPinclusions
+ {% \expanded !
+ \@EA\expanded\@EA{\@EA\writeMPgraphic\@EA{\the\MPextensions;}}% new
+ \writeMPgraphic{#1}}}
+
+\long\def\MPinclusions#1%
+ {\startMPinclusions#1\stopMPinclusions}
+
+\startMPinclusions \stopMPinclusions
+
+%D \macros
+%D {iflongMPlines}
+%D
+%D When grabbing a graphic deifnition, newlines are turned
+%D into spaces. By default we split the graphic definition
+%D at the colon, but long lines are still possible by
+%D setting the next boolean to true.
+
+\newwrite\MPwrite
+
+\newif\iflongMPlines
+
+\ifx \overlaywidth \undefined \def \overlaywidth {4cm} \fi
+\ifx \overlayheight \undefined \def \overlayheight {3cm} \fi
+\ifx \overlaylinewidth \undefined \def \overlaylinewidth {0pt} \fi
+
+\def\presetMPdefinitions
+ {\edef\overlaywidth {\overlaywidth \space}%
+ \edef\overlayheight {\overlayheight \space}%
+ \edef\overlaylinewidth {\overlaylinewidth\space}%
+ \edef\currentwidth {\the\hsize \space}%
+ \edef\currentheight {\the\vsize \space}}
+
+% \def\writeMPgraphic % no big #1 passing here
+% {\iflongMPlines
+% \expandafter\writeMPgraphiclong
+% \else
+% \expandafter\writeMPgraphicshort
+% \fi}
+
+%D The \type {;} aware method (the \type {\else} branch) also
+%D takes care of \type {btex}||\type {etex}, \type
+%D {verbatimtex}||\type {etex}. The space after \type {tex}
+%D is essential, since it protects \type {text}.
+
+\newif\ifMPTEXgraphic
+
+\def\writeMPgraphic % no big #1 passing here
+ {\iflongMPlines
+ \ifMPTEXgraphic
+ \@EAEAEA\writeMPgraphiclongT
+ \else
+ \@EAEAEA\writeMPgraphiclongN
+ \fi
+ \else
+ \ifMPTEXgraphic
+ \@EAEAEA\writeMPgraphicshortT
+ \else
+ \@EAEAEA\writeMPgraphicshortN
+ \fi
+ \fi}
+
+\long\def\writeMPgraphiclongT#1%
+ {\bgroup
+ \let\par\space
+ \longMPflushT#1\empty\par\relax\par
+ \egroup}
+
+\long\def\writeMPgraphicshortT#1%
+ {\bgroup
+ \let\par\space
+ \shortMPflushT#1\empty;\relax;%
+ \egroup}
+
+\long\def\longMPflushT#1#2\par
+ {\ifx#1\relax \else
+ \dowriteMPgraphicline#1#2tex \relax etex\MPend
+ \expandafter\longMPflushT
+ \fi}
+
+\long\def\shortMPflushT#1#2;%
+ {\ifx#1\relax \else
+ \dowriteMPgraphicline#1#2tex \relax etex\MPend
+ \expandafter\shortMPflushT
+ \fi}
+
+\long\def\writeMPgraphiclongN#1%
+ {\bgroup
+ \let\par\space
+ \longMPflushN#1\empty\par\relax\par
+ \egroup}
+
+\long\def\writeMPgraphicshortN#1%
+ {\bgroup
+ \let\par\space
+ \shortMPflushN#1\empty;\relax;%
+ \egroup}
+
+\long\def\longMPflushN#1#2\par
+ {\ifx#1\relax \else
+ \nowriteMPgraphicline#1#2\MPend
+ \expandafter\longMPflushN
+ \fi}
+
+\long\def\shortMPflushN#1#2;%
+ {\ifx#1\relax \else
+ \nowriteMPgraphicline#1#2\MPend
+ \expandafter\shortMPflushN
+ \fi}
+
+\def\dowriteMPgraphicline{\futurelet\next\dodowriteMPgraphicline}
+\def\nowriteMPgraphicline{\futurelet\next\nonowriteMPgraphicline}
+
+%D Will move (check if next is needed):
+
+\long\def\nonowriteMPgraphicline#1\MPend
+ {\ifx\next\empty\else\ifx\next\relax\else
+ \bgroup
+ \let\par\space
+ \iflongMPlines
+ \immediate\write\MPwrite{#1;}%
+ \else
+ \long\edef\ascii{#1}%
+ \expandafter\flushMPgraphicline\ascii\empty;\relax;%
+ \fi
+ \egroup
+ \fi\fi}
+
+%D A first version:
+%D
+%D \starttyping
+%D \long\def\dodowriteMPgraphicline#1tex #2#3etex#4\MPend%
+%D {\ifx\next\empty\else\ifx\next\relax\else
+%D \bgroup
+%D \let\par=\space
+%D \ifx#2\relax
+%D \immediate\write\MPwrite{#1;}%
+%D \egroup
+%D \else
+%D \global\MPTEXgraphictrue
+%D \convertargument#2#3\to\ascii
+%D \immediate\write\MPwrite{#1tex \ascii etex}%
+%D \egroup
+%D \dowriteMPgraphicline#4tex \relax etex\MPend
+%D \fi
+%D \fi\fi}
+%D \stoptyping
+
+%D The next alternative also handles inclusions well.
+
+\newtoks \everyMPTEXgraphic
+
+\newif\ifforceMPTEXgraphic
+
+%D Before we supported the graph module, we had:
+%D
+%D \starttyping
+%D \convertargument etex\to\MPasciiB
+%D \convertargument textext\to\MPasciiC % geen "text"
+%D \convertargument graphictext\to\MPasciiD % geen "text"
+%D
+%D \long\def\checkMPTEXgraphic#1%
+%D {\ifforceMPTEXgraphic
+%D \global\MPTEXgraphictrue
+%D \else
+%D \expandafter\convertargument#1\to\MPasciiA
+%D \doifstringinstringelse\MPasciiB\MPasciiA{\global\MPTEXgraphictrue}
+%D {\doifstringinstringelse\MPasciiC\MPasciiA{\global\MPTEXgraphictrue}
+%D {\doifstringinstringelse\MPasciiD\MPasciiA{\global\MPTEXgraphictrue}
+%D {\global\MPTEXgraphicfalse}}}%
+%D \fi}
+%D \stoptyping
+%D
+%D The next alternative permits extensions in other modules
+%D without the need to know the details of testing.
+
+\newtoks\MPTEXgraphicchecks
+
+% \long\def\checkMPTEXgraphic#1%
+% {\ifforceMPTEXgraphic
+% \global\MPTEXgraphictrue
+% \else
+% \global\MPTEXgraphicfalse
+% \expandafter\convertargument#1\to\MPascii
+% \the\MPTEXgraphicchecks\relax % \relax is end condition!
+% \fi}
+
+\long\def\writecheckedMPgraphic#1%
+ {\ifforceMPTEXgraphic
+ \global\MPTEXgraphictrue
+ \else
+ \global\MPTEXgraphicfalse
+ \expandafter\convertargument#1\to\MPascii
+ \the\MPTEXgraphicchecks\relax % \relax is end condition!
+ \fi
+ \flushMPTEXgraphic % verbatimtex etc
+ \writeMPgraphic{#1}}
+
+%D We could have used a kind of array approach using a
+%D counter appended to \type {MPascii}, but this is an
+%D as efficient alternative. (The uglyness comes from
+%D expanding after the string \type {#1}).
+
+\def\forceMPTEXcheck#1%
+ {\expanded{\convertargument#1\noexpand\to
+ \@EA\noexpand\csname MPascii#1\endcsname}%
+ \@EA\appendtoks
+ \@EA\doifincsnameelse\csname MPascii#1\endcsname\MPascii
+ {\global\MPTEXgraphictrue\gobbleuntil\relax}\donothing
+ \to \MPTEXgraphicchecks}
+
+\forceMPTEXcheck{etex}
+\forceMPTEXcheck{textext}
+\forceMPTEXcheck{graphictext}
+
+%D \starttyping
+%D \forceMPTEXgraphictrue
+%D
+%D \forceMPTEXcheck{lintext}
+%D \forceMPTEXcheck{logtext}
+%D
+%D \startMPcode
+%D draw hlintext.lft(0, 20, 5, 20cm, "@3e") ;
+%D draw vlogtext.bot(0, 10, 9, 10cm, "@3e") ;
+%D \stopMPcode
+%D \stoptyping
+
+\def\flushMPTEXgraphic
+ {\ifMPTEXgraphic
+ \immediate\write\MPwrite{verbatimtex \the\everyMPTEXgraphic\space etex;}%
+ \fi}
+
+\long\def\flushMPgraphicline#1#2;%
+ {\ifx#1\relax \else
+ \immediate\write\MPwrite{#1#2;}%
+ \expandafter\flushMPgraphicline
+ \fi}
+
+% the next one fails on btex \vbox {\hbox .. leading to \vbox \hbox
+%
+% \long\def\dodowriteMPgraphicline#1tex #2#3etex#4\MPend
+% {\ifx\next\empty\else\ifx\next\relax\else
+% \bgroup
+% \let\par\space
+% \ifx#2\relax
+% \iflongMPlines
+% \immediate\write\MPwrite{#1;}%
+% \else
+% \edef\ascii{#1}%
+% \expandafter\flushMPgraphicline\ascii\empty;\relax;%
+% \fi
+% \egroup
+% \else
+% \convertargument#2#3\to\ascii
+% \immediate\write\MPwrite{#1tex \ascii etex}%
+% \egroup
+% \dowriteMPgraphicline#4tex \relax etex\MPend
+% \fi
+% \fi\fi}
+%
+% so we need a two step approach
+
+% \long\def\dodowriteMPgraphicline#1tex %
+% {\doifnextcharelse\relax
+% {\nododowriteMPgraphicline{#1}}
+% {\redodowriteMPgraphicline{#1}}}
+%
+% better and faster
+
+\long\def\dodowriteMPgraphicline#1tex #2%
+ {\ifx#2\relax
+ \expandafter\nododowriteMPgraphicline
+ \else
+ \expandafter\redodowriteMPgraphicline
+ \fi{#1} #2}
+
+\long\def\redodowriteMPgraphicline#1#2etex#3\MPend
+ {\ifx\next\empty\else\ifx\next\relax\else
+ \bgroup
+ \let\par\space
+ \convertargument#2\to\ascii
+ \immediate\write\MPwrite{#1tex \ascii etex}%
+ \egroup
+ \dowriteMPgraphicline#3tex \relax etex\MPend
+ \fi\fi}
+
+\long\def\nododowriteMPgraphicline#1#2\MPend
+ {\ifx\next\empty\else\ifx\next\relax\else
+ \bgroup
+ \let\par\space
+ \iflongMPlines
+ \immediate\write\MPwrite{#1;}%
+ \else
+ \long\edef\ascii{#1}%
+ \expandafter\flushMPgraphicline\ascii\empty;\relax;%
+ \fi
+ \egroup
+ \fi\fi}
+
+%D This stripper is suboptimal in the sense that more
+%D \type{;}'s are output than feasible. Anyhow, \METAPOST\
+%D can handle this and users may consider it being a sort
+%D of error prevention bonus.
+
+%D \macros
+%D {everyMPgraphic}
+%D
+%D Because some graphics interact with \TEX\ (i.e.\ \CONTEXT), we
+%D provide a hook for additional actions: \type {\everyMPgraphic}.
+
+\newtoks\everyMPgraphic \everyMPgraphic{\everyMPgraphic\emptytoks}
+
+\ifx\blabelgroup\undefined
+
+ \let\blabelgroup\bgroup
+ \let\elabelgroup\egroup
+
+\fi
+
+\newconditional\firstMPgraphic \settrue\firstMPgraphic
+
+\appendtoks
+ \let \# \letterhash
+ \let \_ \letterunderscore
+ \let \& \letterampersand
+ \let \{ \letteropenbrace
+ \let \} \letterclosebrace
+\to \everyMPgraphic
+
+\def\writeMPgraph
+ {\immediate\write\MPwrite{mpgraph:=\the\currentMPgraphic;}}
+
+\beginTEX
+
+\ifx \honorunexpanded \undefined \else % not really needed
+ \prependtoks \honorunexpanded \to \everyMPgraphic
+\fi
+
+\endTEX
+% buggy (at least in collected graphics, lazy expansion)
+%
+% \def\startwritingMPgraphic
+% {\blabelgroup
+% \global\advance\nofMPgraphics 1
+% \ifMPrun \else
+% \allocateMPslot\currentMPgraphic
+% \fi
+% \enableincludeMPgraphics
+% \xdef\MPgraphic{\the\currentMPgraphic}%
+% \the\everyMPgraphic
+% \ifrunMPgraphics
+% \openMPgraphicfile1{runtime}%
+% % no reset here !
+% \theMPinclusions
+% \else
+% \openMPgraphicfile0{collected}%
+% % reset here ! global added (due to adding \blabelgroup)
+% \theMPinclusions
+% \global\let\theMPinclusions\relax
+% \fi
+% \flushMPTEXgraphic
+% \ifMPrun \else
+% \immediate\write\MPwrite{let mprunend = end ;}%
+% \immediate\write\MPwrite{beginfig(\the\currentMPgraphic);}%
+% \fi
+% \globallet\flushMPgraphics\closeMPgraphicfiles % \dodostopwritingMPgraphic
+% \globallet\stopwritingMPgraphic=\dostopwritingMPgraphic}
+
+% \def\startwritingMPgraphic
+% {\blabelgroup
+% \global\advance\nofMPgraphics 1
+% \ifMPrun \else
+% \allocateMPslot\currentMPgraphic
+% \fi
+% \enableincludeMPgraphics
+% \xdef\MPgraphic{\the\currentMPgraphic}%
+% \the\everyMPgraphic
+% \ifrunMPgraphics
+% \openMPgraphicfile1{runtime}%
+% % no reset here !
+% \theMPinclusions
+% \@EA\expanded\@EA{\@EA\writeMPgraphic\@EA{\the\MPinitializations;}}%
+% \else
+% \openMPgraphicfile0{collected}%
+% % reset here ! global added (due to adding \blabelgroup)
+% \theMPinclusions
+% \global\let\theMPinclusions\relax
+% \fi
+% \flushMPTEXgraphic
+% \ifMPrun \else
+% \immediate\write\MPwrite{let mprunend = end ;}%
+% \immediate\write\MPwrite{beginfig(\the\currentMPgraphic);}%
+% \@EA\expanded\@EA{\@EA\writeMPgraphic\@EA{\the\MPinitializations;}}%
+% \fi
+% \globallet\flushMPgraphics\closeMPgraphicfiles % \dodostopwritingMPgraphic
+% \globallet\stopwritingMPgraphic=\dostopwritingMPgraphic}
+
+
+\def\startwritingMPgraphic
+ {\blabelgroup
+ \global\advance\nofMPgraphics \plusone
+ \ifMPrun \else
+ \allocateMPslot\currentMPgraphic
+ \fi
+ \enableincludeMPgraphics
+ \xdef\MPgraphic{\the\currentMPgraphic}%
+ \the\everyMPgraphic
+ \presetMPdefinitions % moved to here from \writeMPgraphic
+ \ifrunMPgraphics
+ \openMPgraphicfile1{runtime}%
+ % no reset here !
+ \theMPinclusions
+ \@EA\expanded\@EA{\@EA\writeMPgraphic\@EA{\the\MPinitializations;}}%
+ \else
+ \openMPgraphicfile0{collected}%
+ % reset here ! global added (due to adding \blabelgroup)
+ \theMPinclusions
+ \global\let\theMPinclusions\relax
+ \fi
+ %\flushMPTEXgraphic
+ \ifMPrun \else
+ \immediate\write\MPwrite{let mprunend = end ;}%
+ \immediate\write\MPwrite{beginfig(\the\currentMPgraphic);}%
+ \ifrunMPgraphics \else
+ \@EA\expanded\@EA{\@EA\writeMPgraphic\@EA{\the\MPinitializations;}}%
+ \fi
+ \fi
+ \globallet\flushMPgraphics\closeMPgraphicfiles % \dodostopwritingMPgraphic
+ \globallet\stopwritingMPgraphic\dostopwritingMPgraphic}
+
+\let\MPgraphicfiles\empty
+
+\let\MPinputtranslation\empty
+
+\def\openMPgraphicfile#1#2% #1=alwaysopen #2=message
+ {%\doifundefinedelse{\@@MPG\@@MPG\MPgraphicfile}
+ % {\donetrue
+ % \@EA\newwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname}%
+ % {\ifcase#1\donefalse\else\donetrue\fi}%
+ \@EA\ifx\csname\@@MPG\@@MPG\MPgraphicfile\endcsname\relax
+ %\donetrue \@EA\newwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname
+ % for the sake of plain usage
+ \donetrue \@EA\@EA\csname newwrite\endcsname\csname\@@MPG\@@MPG\MPgraphicfile\endcsname
+ \doglobal\addtocommalist\MPgraphicfile\MPgraphicfiles
+ \else
+ \ifcase#1\relax\donefalse\else\donetrue\fi
+ \fi
+ \@EA\let\@EA\MPwrite\csname\@@MPG\@@MPG\MPgraphicfile\endcsname
+ \ifdone
+ \immediate\openout\MPwrite=\MPgraphicfile.mp
+ \ifx\MPinputtranslation\empty\else
+ \immediate\write\MPwrite{\MPinputtranslation}%
+ \immediate\write\MPwrite{verbatimtex \MPinputtranslation etex ;}%
+ \fi
+ \immediate\write\MPwrite{\letterpercent\space #2 graphics of job "\jobname"}%
+ \writeMPgraph
+ \setMPrandomseed
+ \fi}
+
+\def\dostopwritingMPgraphic
+ {\ifMPrun \else
+ \immediate\write\MPwrite{endfig;}%
+ \immediate\write\MPwrite{let end=mprunend;}%
+ \fi
+ \ifrunMPgraphics
+ \dodostopwritingMPgraphic
+ \fi
+ \elabelgroup}
+
+\def\dodostopwritingMPgraphic
+ {\ifnum\currentMPgraphic>\zerocount
+ \donetrue
+ \else\ifMPrun
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \finishwritingMPgraphics
+ \runMPgraphic\MPgraphicfile
+ \fi
+ \globallet\flushMPgraphics\relax}
+
+\def\finishwritingMPgraphics
+ {\immediate\write\MPwrite{end.}%
+ \immediate\closeout\MPwrite}
+
+\def\closeMPgraphicfiles
+ {\ifrunMPgraphics \else \ifx\MPgraphicsfiles\empty\else
+ \def\docommando##1%
+ {\message{[flush and process ##1.mp afterwards]}%
+ \@EA\let\@EA\MPwrite\csname\@@MPG\@@MPG##1\endcsname
+ \finishwritingMPgraphics}%
+ \processcommacommand[\MPgraphicfiles]\docommando
+ \fi \fi}
+
+\let\stopwritingMPgraphic\relax
+\let\flushMPgraphics \relax
+
+%D By default each graphic gets its own slot (number). Later
+%D on we will define a recycle bin.
+
+\def \allocateMPslot#1{\global\advance#1\plusone}
+\def\deallocateMPslot#1{}
+
+%D \macros
+%D {translateMPinput}
+%D
+%D For my polish friends:
+%D
+%D \starttyping
+%D % translate=il2-pl
+%D
+%D \translateMPinput{il2-pl}
+%D
+%D \startMPenvironment[global]
+%D \setupbodyfont[plr]
+%D \stopMPenvironment
+%D
+%D \TeX: ± ¶
+%D
+%D \startMPcode
+%D draw btex MetaPost: ± ¶ etex scaled 5 ;
+%D \stopMPcode
+%D \stoptyping
+
+\def\translateMPinput#1%
+ {\xdef\MPinputtranslation{\letterpercent -translate-file=#1\space}}
+
+%D \macros
+%D {setMPrandomseed}
+%D
+%D Did you notice the random seed initialization? This is
+%D needed because \METAPOST\ has a rather poor initialization,
+%D which in some implementations depends on the time in
+%D minutes. So, in quick successive runs, random is not that
+%D random.
+
+\newif\ifsetMPrandomseed \setMPrandomseedtrue % false by default
+
+\def\setMPrandomseed
+ {\ifsetMPrandomseed \ifx\getrandomnumber\undefined \else
+ \getrandomnumber\localMPseed\zerocount{4095}%
+ \writeMPgraphic{randomseed:=\localMPseed;}%
+ \fi\fi}
+
+%D This feature has become optional. Thanks to Fabrice Popineau,
+%D \METAPOST\ can now do a far better job!
+
+%D \macros
+%D {flushMPgraphics}
+%D
+%D When we use the indirect method, all graphics are saved in
+%D one file. This means that we cannot close this file after
+%D every \type{\stopMPgraphic}. Therefore we need to say:
+%D
+%D \starttyping
+%D \flushMPgraphics
+%D \stoptyping
+%D
+%D else the file is closed without writing the \METAPOST\ end
+%D command. One will notice this fast enough when in indirect
+%D mode. When using the direct mode this command is not
+%D implicitly needed, but ommiting it makes files less
+%D portable.
+
+%D \macros
+%D {loadcurrentMPgraphic,
+%D placeMPgraphic}
+%D
+%D Once defined, we can call for this graphic by saying:
+%D
+%D \starttyping
+%D \loadcurrentMPgraphic{setups}
+%D \placeMPgraphic
+%D \stoptyping
+%D
+%D This two stage insert permits some intermediate manipulations
+%D of the graphic, which temporary saved in:
+
+\newbox\MPgraphicbox
+
+\def\doloadcurrentMPgraphic#1%
+ {\loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{#1}%
+ \deallocateMPslot\currentMPgraphic} % added
+
+\ifCONTEXT
+ \def\loadcurrentMPgraphic{\dosinglegroupempty\doloadcurrentMPgraphic}
+\else
+ \let\loadcurrentMPgraphic\doloadcurrentMPgraphic
+\fi
+
+\def\loadMPgraphic#1#2%
+ {\setbox\MPgraphicbox\hbox{\ifinsertMPgraphics\insertMPfile{#1}{#2}\fi}}
+
+\def\MPllx{0}
+\def\MPlly{0}
+
+% \def\placeMPgraphic%
+% {\ifMPshiftdrawing
+% \hbox{\hskip\MPllx\onebasepoint\raise\MPlly\onebasepoint\box\MPgraphicbox}%
+% \else
+% \box\MPgraphicbox
+% \fi}
+%
+% experimental:
+
+\def\placeMPgraphic
+ {\ifMPshiftdrawing
+ \edef\next
+ {\wd\MPgraphicbox\the\wd\MPgraphicbox
+ \ht\MPgraphicbox\the\ht\MPgraphicbox
+ \dp\MPgraphicbox\the\dp\MPgraphicbox}%
+ \setbox\MPgraphicbox\hbox
+ {\hskip\MPllx\onebasepoint\raise\MPlly\onebasepoint\box\MPgraphicbox}%
+ \next
+ \fi
+ \box\MPgraphicbox}
+
+%D \macros
+%D {startreusableMPgraphic, reuseMPgraphic, useMPbox}
+%D
+%D One can use the next macro for defining graphics that are
+%D to be reused. When the next switch is set, graphics are
+%D cached.
+
+\newif\ifuseMPbox \useMPboxtrue
+
+%D We assume that one can set objects:
+%D
+%D \starttyping
+%D \def\douseMPbox#1%
+%D {\setobject{MP}{#1}\vbox
+%D {\forgetall
+%D \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+%D \deallocateMPslot\currentMPgraphic
+%D \placeMPgraphic}%
+%D \setgvalue{#1}{\getobject{MP}{#1}}}
+%D \stoptyping
+%D
+%D More save is to use a number for \type {{MP}{#1}} which permits
+%D redefinition.
+
+\newcount\MPobjectcounter
+
+\def\douseMPbox#1%
+ {\global\advance\MPobjectcounter\plusone
+ \setobject{MP}{\number\MPobjectcounter}\vbox
+ {\forgetall
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic}%
+ \setxvalue{#1}{\noexpand\getobject{MP}{\number\MPobjectcounter}}}
+
+\def\nouseMPbox#1%
+ {\setxvalue{#1}%
+ {\noexpand\forgetall
+ \noexpand\loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \noexpand\deallocateMPslot{\currentMPgraphic}%
+ \noexpand\placeMPgraphic}}
+
+\ifCONTEXT \else \let\douseMPbox=\nouseMPbox \fi
+\ifCONTEXT \else \let\doifobjectssupportedelse=\relax \fi
+
+\long\def\handlereusableMPgraphic#1#2%
+ {\blabelgroup
+ \enableincludeMPgraphics
+ \startMPgraphic#2\stopMPgraphic
+ \doifobjectssupportedelse\donothing\useMPboxfalse
+ \ifuseMPbox
+ \expandafter \douseMPbox
+ \else
+ \expandafter \nouseMPbox
+ \fi {\@@MPG#1}%
+ \getvalue{\@@MPG#1}%
+ \elabelgroup}
+
+% \long\def\startreusableMPgraphic#1#2\stopreusableMPgraphic
+% {\ifundefined{\@@MPG#1}%
+% \long\setgvalue{\@@MPG#1}{\handlereusableMPgraphic{#1}{#2}}%
+% \fi}
+
+\long\def\dostartreusableMPgraphic#1#2\stopreusableMPgraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handlereusableMPgraphic{#1}{#2}}%
+ \elabelgroup}
+
+\def\reuseMPgraphic#1%
+ {\blabelgroup
+ \getvalue{\@@MPG#1}%
+ \elabelgroup}
+
+%D \macros
+%D {startuseMPgraphic,useMPgraphic}
+%D
+%D The every||time||it's||used original one is defined below.
+%D This one makes sense when the graphic uses random numbers.
+%D
+%D We can run (process graphic) without including them at that
+%D particular place. Therefore we explicitly disable
+%D inclusions (resulting in an dummy figure) when we are in MP
+%D run mode (see mfun-004 for an example, we process an
+%D example buffer which produced graphics).
+
+\long\def\handleuseMPgraphic#1#2%
+ {\bgroup
+ \enableincludeMPgraphics
+ \startMPgraphic#2\stopMPgraphic
+ \ifMPrun \else
+ \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
+ \placeMPgraphic
+ \fi
+ \deallocateMPslot\currentMPgraphic
+ \egroup}
+
+\long\def\startuseMPgraphic#1#2\stopuseMPgraphic
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}}%
+ \elabelgroup}
+
+\long\def\startusableMPgraphic#1#2\stopusableMPgraphic % dummy
+ {\blabelgroup
+ \long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}}%
+ \elabelgroup}
+
+\let\useMPgraphic=\reuseMPgraphic
+
+%D \macros
+%D {doifMPgraphicelse}
+%D
+%D For (mainly internal) purposes we provide a test macro.
+
+% \def\doifMPgraphicelse#1%
+% {\doifdefinedelse{\@@MPG#1}}
+
+\def\doifMPgraphicelse#1%
+ {\blabelgroup
+ \doifdefinedelse{\@@MPG#1}%
+ {\elabelgroup\firstoftwoarguments}
+ {\elabelgroup\secondoftwoarguments}}
+
+%D \macros
+%D {includeMPgraphic}
+%D
+%D In a graphic one can call up another (predefined one)
+%D like:
+%D
+%D \starttyping
+%D \startuseMPgraphic{a}
+%D fill fullcircle scaled 100 ;
+%D \stopuseMPgraphic
+%D
+%D \startuseMPgraphic{b}
+%D \includeMPgraphic{a}
+%D fill fullsquare rotated 45 scaled 50 withcolor red ;
+%D \stopuseMPgraphic
+%D
+%D \useMPgraphic{b}
+%D \stoptyping
+
+\def\includeMPgraphic#1%
+ {\csname\@@MPG#1\endcsname}
+
+\def\enableincludeMPgraphics
+ {\let\handleuseMPgraphic \secondoftwoarguments
+ \let\handlereusableMPgraphic\secondoftwoarguments}
+
+%D We didn't yet define the macro responsible for processing
+%D the graphic from within \TEX.
+
+\def\runMPgraphic#1%
+ {\ifrunMPgraphics
+ \executeMETAPOST{#1}%
+ \else
+ % \message{[flush and process \MPgraphicfile.mp afterwards]}%
+ \fi}
+
+%D \macros
+%D {useMETAFUNformat}
+%D
+%D For faster running, one can generate a format, saying
+%D
+%D \starttyping
+%D mpost -ini context
+%D \stoptyping
+%D
+%D (The resulting \type {mem} file should be moved to the
+%D right location. Watch out for misatching \type {progname}
+%D directives, since they can clutter memory.
+
+\newif\ifuseMETAFUNformat
+
+%D \macros
+%D {executeMetaPost, executeMETAPOST, executesystemcommand}
+%D
+%D With \type{\executeMETAPOST} being defined as:
+
+\ifx\undefined\executeMETAPOST
+ \def\executeMETAPOST#1{\executesystemcommand{\executeMetaPost{#1}}}
+\fi
+
+%D There are two system dependant definitions:
+
+\ifx\undefined\executesystemcommand
+ \def\executesystemcommand#1{\immediate\write18{#1}}
+\fi
+
+\ifx\undefined\executeMetaPost
+
+ \ifx\undefined\interactionmode \chardef\interactionmode=255 \fi
+
+ \def\MPOSTbatchswitch {-int=batchmode}
+ \def\MPOSTnonstopswitch {-int=nonstopmode}
+ \def\MPOSTformatswitch {-progname=mpost -mem=}
+ \def\MPOSTdriver {dvips}
+
+ \def\executeMPOST#1%
+ {mpost
+ \ifcase\interactionmode\MPOSTbatchswitch\or\MPOSTnonstopswitch\fi
+ \space\ifuseMETAFUNformat \MPOSTformatswitch metafun \fi #1}
+
+ \def\executeMPTEX#1%
+ {texexec
+ --batch \ifcase\interactionmode --logfile='mptex.log' \fi
+ --output=\MPOSTdriver\space
+ \ifuseMETAFUNformat --mpformat=metafun \fi --mptex --nomp --once #1}
+
+ \def\executeMetaPost
+ {\ifrunMPTEXgraphics
+ \ifMPTEXgraphic
+ \@EAEAEA\executeMPTEX
+ \else
+ \@EAEAEA\executeMPOST
+ \fi
+ \else
+ \@EA\executeMPOST
+ \fi}
+
+\fi
+
+%D The batchmode and nonstopmode (introduced in 2003 for
+%D Patrick Gundlach) switches may differ per binary and are
+%D supported by \TEXEXEC.
+
+%D \macros
+%D {insertMPfile}
+%D
+%D One can define this command in advance or redefine it after
+%D loading this module. The same goes for the forward
+%D reference to the figure loading macro:
+
+\ifx\undefined\insertMPfile
+
+ \def\insertMPfile#1#2%
+ {\ifx\undefined\externalfigure
+ \message{[insert file #1 here]}%
+ \else
+ \externalfigure
+ [#1]
+ [\c!type=\c!mps,\c!object=\v!no,
+ \c!symbol=\v!yes,\c!reset=\v!yes,
+ \c!maxwidth=,\c!maxheight=,
+ \c!frame=\v!off,\c!background=,
+ #2]%
+ \fi}
+
+\fi
+
+%D This macro takes {\em two} arguments, the second one can be
+%D used to pass info to the inclusion macro. Some examples
+%D of its use can be found in the modules \type{supp-tpi} and
+%D \type{prag-log}.
+
+%D This module can be used in \PLAIN\ \TEX too. When using
+%D \DVIPS, just try to process:
+%D
+%D \starttyping
+%D \input supp-mps
+%D
+%D \runMPgraphicstrue
+%D
+%D \def\insertMPfile#1#2%
+%D {\special{psfile=#1}}
+%D
+%D \startuseMPgraphic{1}
+%D prologues := 1;
+%D draw (0,0) withpen pencircle scaled 100;
+%D \stopuseMPgraphic
+%D
+%D \useMPgraphic{1}
+%D \stoptyping
+%D
+%D Don't forget to enable \type{\write18}. When does not say
+%D \type{\runMPgraphicstrue}, the \METAPOST\ scratch file
+%D must be closed by saying
+%D
+%D \starttyping
+%D \flushMPgraphics
+%D \stoptyping
+%D
+%D When using the indirect method, one has to process the file
+%D \type{mpgraph.mp} between two successive \TEX\ runs.
+%D
+%D \METAPOST\ needs the public domain \DVI\ to \POSTSCRIPT\
+%D converter \DVIPS. This symbiosis originates in the need to
+%D include the fonts (glyphs) that \METAPOST\ uses in the
+%D \POSTSCRIPT\ file. Driver independancy was one of my
+%D prerequisites for using \METAPOST, so I decided to build
+%D this kind of support myself. Personally I consider driver
+%D dependancy a drawback for the dissemination of such a
+%D package. The second part of this module more or less
+%D decouples \METAPOST\ and \DVIPS.
+%D
+%D The macros hereafter are copied from the module
+%D \type{m-metapost}. After writing module \type{supp-pdf} I
+%D added this method to the module named and after a while
+%D decided to hook it into module \type{spec-yy}. Therefore
+%D they made it into a support module, but in a slightly
+%D different way.
+
+%D \macros
+%D {includeMPfonts, ifincludeMPfonts}
+%D
+%D The method we use is both robust and simple: one can do
+%D with calling the next macro with the filename as argument:
+%D
+%D \starttyping
+%D \includeMPfonts{filename}
+%D \stoptyping
+%D
+%D We can turn of this mechanism with:
+%D
+%D \starttyping
+%D \includeMPfontsfalse
+%D \stoptyping
+%D
+%D {\em Currently this method fails for situations where the
+%D font definition is not on one line, which is he case when
+%D unkerned fonts are used along with long lines. One solution
+%D for this is to increase the value of \type {max_print_line}
+%D in \type {texmf.cnf}.}}
+
+\newif\ifincludeMPfonts \includeMPfontstrue
+
+\def\includeMPfonts#1%
+ {\ifincludeMPfonts
+ \bgroup
+ \message{[MP fonts #1]}%
+ %\uncatcodespecials
+ \endlinechar=-1
+ \setMPspecials
+ \obeyMPspecials
+ \setbox\scratchbox\hbox
+ {\hskip-\maxdimen
+ \doprocessfile\scratchread{#1}\handleMPfont}%
+ \smashbox\scratchbox
+ \box\scratchbox
+ \egroup
+ \fi}
+
+\def\UseMetaPostGraphic {\includeMPfonts} % upward compatible
+\def\DontUseMetaPostGraphics {\includeMPfontsfalse} % upward compatible
+
+%D The characters are collected in a box and moved as far as
+%D possible into the left margin. The resulting box has no
+%D dimensions and can be prepended (appended) to the special
+%D that handles the inclusion. The characters are in the file
+%D but made invisible.
+%D
+%D In \CONTEXT\ font handling is intergrated in the figure
+%D inclusion macros. A decent plain \TEX\ alternative is:
+%D
+%D \starttyping
+%D \def\includeMPgraphic#1%
+%D {\hbox\bgroup
+%D \includeMPfonts{#1}%
+%D \dogetEPSboundingbox{#1}{\dimen2}{\dimen4}{\dimen6}{\dimen8}%
+%D \advance\dimen6 by -\dimen2
+%D \advance\dimen8 by -\dimen4
+%D \vbox to \dimen8
+%D {\forgetall
+%D \vfill
+%D \hsize\dimen6
+%D \special
+%D {PSfile="#1"\space
+%D llx=\EPSllx\space
+%D lly=\EPSlly\space
+%D urx=\EPSurx\space
+%D ury=\EPSury\space}}%
+%D \egroup}
+%D \stoptyping
+%D
+%D This macro needs \type {supp-eps.tex} and provided no
+%D scaling. For \LATEX\ users the next one will do:
+%D
+%D \starttyping
+%D \def\includeMPgraphic#1#%
+%D {\hbox\bgroup
+%D \def\includeMPgraphics##1%
+%D {\includeMPfonts{##1}%
+%D \includegraphics[typetype=mps,#1]{##1}% or whatever type they use
+%D \egroup}%
+%D \includeMPgraphics}
+%D \stoptyping
+
+%D We scan the graphics file for the \type{fshow} operator,
+%D that is, lines that start with \type{(}. If found it
+%D interprets the line, which looks like:
+%D
+%D \starttyping
+%D (string ... string) font size fshow
+%D \stoptyping
+%D
+%D Font definitions specified in the preamble are simply
+%D ignored. Only lines starting with \type{(} are interpreted.
+
+\def\dohandleMPfont#1#2\relax
+ {\if#1(\expandafter\includeMPcharacters\fileline\relax\fi}
+
+\def\handleMPfont
+ {\expandafter\dohandleMPfont\fileline\relax}
+
+%D Before we start scanning for data, we first change some
+%D \CATCODES. The first set of macro's is copied from module
+%D \type{supp-pdf}. This scheme is a bit overdone for this
+%D module, but using the same macros saves us some memory.
+
+\def\octalMPcharacter#1#2#3%
+ {\char'#1#2#3\relax}
+
+\bgroup
+\catcode`\|=\@@comment
+\catcode`\%=\@@active
+\catcode`\[=\@@active
+\catcode`\]=\@@active
+\catcode`\{=\@@active
+\catcode`\}=\@@active
+\catcode`B=\@@begingroup
+\catcode`E=\@@endgroup
+\gdef\keepMPspecials|
+ B\let%\letterpercent|
+ \def[B\noexpand[E|
+ \def]B\noexpand]E|
+ \def{B\noexpand{E|
+ \def}B\noexpand}EE
+\gdef\ignoreMPspecials|
+ B\let%\letterpercent|
+ \def[BE|
+ \def]BE|
+ \def{BE|
+ \def}BEE
+\gdef\obeyMPspecials|
+ B\def%B\char 37\relax E|
+ \def[B\char 91\relax E|
+ \def]B\char 93\relax E|
+ \def{B\char123\relax E|
+ \def}B\char125\relax EE
+\gdef\setMPspecials|
+ B\setnaturalcatcodes
+ \catcode`\\=\@@escape
+ \catcode`\%=\@@active
+ \catcode`\[=\@@active
+ \catcode`\]=\@@active
+ \catcode`\{=\@@active
+ \catcode`\}=\@@active
+ \lccode`\-=0 | latex sets this to `\-
+ \lccode`\%=`\% | otherwise it's seen as a number
+ \def\(B\char40\relax E|
+ \def\)B\char41\relax E|
+ \def\\B\char92\relax E|
+ \def\0B\octalMPcharacter0E|
+ \def\1B\octalMPcharacter1E|
+ \def\2B\octalMPcharacter2E|
+ \def\3B\octalMPcharacter3E|
+ \def\4B\octalMPcharacter4E|
+ \def\5B\octalMPcharacter5E|
+ \def\6B\octalMPcharacter6E|
+ \def\7B\octalMPcharacter7E|
+ \def\8B\octalMPcharacter8E|
+ \def\9B\octalMPcharacter9EE
+\egroup
+
+%D The lines starting with \type{(} are interpreted and
+%D handled by
+%D
+%D \starttyping
+%D \def\includeMPcharacters(#1) #2 #3 #4\relax%
+%D {\font\temp=#2 at #3bp\temp#1}
+%D \stoptyping
+%D
+%D While processing some \TUG~98 proceedings, I also had to
+%D deal with:
+%D
+%D \starttyping
+%D /nfont {10 div dup scale 10} def
+%D (T) ANTTB 7.13086 nfont fshow
+%D \stoptyping
+%D
+%D which comes to rounding sizes. This is something
+%D experimental. (The macro in supp-pdf.tex is more
+%D advanced.)
+
+\def\PSnfont{nfont}
+
+\def\includeMPcharacters(#1) #2 #3 #4#5#6#7#8#9\relax
+ {\edef\temp{#4#5#6#7#8}%
+ \ifx\temp\PSnfont % round font size (to pt)
+ \scratchdimen#3\onepoint
+ \ifdim\scratchdimen<\onepoint
+ \def\size{1pt}%
+ \else
+ \advance\scratchdimen .5\onepoint
+ \def\size##1.##2\relax{\def\size{##1pt}}%
+ \expandafter\size\the\scratchdimen\relax
+ \fi
+ \else
+ \edef\size{#3bp}%
+ \fi
+ \font\temp=#2 at \size
+ \temp\if#1 \char32\else#1\fi}
+
+%D This method is both robust and reasonable fast. The only
+%D disadvantage is that when not embedded properly in the
+%D graphics inclusion macros, one has to load all graphics by
+%D hand.
+
+%D Now let's see if things work all right and show the example
+%D files that are part of the \METAPOST\ distribution:
+%D
+%D \startlinecorrection
+%D \setupalign[middle]
+%D \leavevmode
+%D \startcombination[3*3]
+%D {\externalfigure[mp-exa-1][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-2][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-3][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-4][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-5][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-6][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-7][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-8][frame=on,width=.2\hsize]} {}
+%D {\externalfigure[mp-exa-9][frame=on,width=.2\hsize]} {}
+%D \stopcombination
+%D \stoplinecorrection
+%D
+%D Here we used calls like:
+%D
+%D \starttyping
+%D \externalfigure[mp-exa-1][methode-mps,frame=on,width=.2\hsize]
+%D \stoptyping
+
+%D \macros
+%D {convertMPcolors,
+%D ifconvertMPcolors,ifreduceMPcolors,ifforceMPcolors}
+%D
+%D When I told the editors that I wanted to use colored
+%D \METAPOST\ graphics in the color issue of the \MAPS, I was
+%D asked to use the \cap{CMYK} colorspace instead of \cap{RGB}
+%D one. However, \METAPOST\ only supports \cap{RGB} colors. I
+%D decided to write a utility to convert the \type
+%D {setrgbcolor} operators into \type {setcmykcolor} ones, and
+%D some experiments showed me that I could best let \TEX\ do it
+%D itself. Here it is:
+%D
+%D There are two booleans that control the conversion process.
+%D These are false by default.
+
+\newif\ifconvertMPcolors
+\newif\ifreduceMPcolors
+\newif\ifforcegrayMPcolors
+
+%D The main macro is called as:
+%D
+%D \starttyping
+%D \convertMPcolors{filename}
+%D \stoptyping
+%D
+%D When active, this macro returns a message saying if indeed
+%D conversion took place. The old file is overwritten! This
+%D saves time in a succesive passes and can't harm, simply
+%D because MP can generate them anew.
+
+\def\convertMPcolorpath{}
+\def\convertMPcolorfile{metacmyk.tmp}
+
+\def\convertMPcolors#1% todo: open on local path, no copy
+ {\bgroup
+ \ifforcegrayMPcolors
+ \donetrue
+ \else\ifconvertMPcolors
+ \donetrue
+ \else
+ \donefalse
+ \fi\fi
+ \ifdone
+ \message{[MP color conversion #1}%
+ \endlinechar\minusone
+ \uncatcodespecials
+ \donefalse
+ \immediate\openout\scratchwrite=\convertMPcolorpath\convertMPcolorfile
+ \doprocessfile\scratchread{#1}\handleMPcolor
+ \immediate\closeout\scratchwrite
+ \ifdone
+ \immediate\openout\scratchwrite=\convertMPcolorpath#1\relax
+ \doprocessfile\scratchread{\convertMPcolorpath \convertMPcolorfile}\handleMPcopy
+ \immediate\closeout\scratchwrite
+ \message{done]}%
+ \else
+ \message{not needed]}%
+ \fi
+ \immediate\openout\scratchwrite=\convertMPcolorpath\convertMPcolorfile
+ \immediate\closeout\scratchwrite
+ \fi
+ \egroup}
+
+%D The process is rather simple: read a line, look for the
+%D \type {setrgbcolor} operator, recalculate the components and
+%D check for gray reduction or black removal, write the result
+%D to a temporary file, and go on. Afterwards, the file is
+%D copied back. We don't have to reduce to gray scales;
+%D \METAPOST\ already takes care of that.
+
+%D BTW, this code is quite old, and not as complete as the
+%D \PDF\ converter, which also handles spot colors and so.
+
+\def\handleMPcolor
+ {\expandafter\dohandleMPcolor\fileline setrgbcolor*\\}
+
+\def\dohandleMPcolor#1setrgbcolor#2#3\\%
+ {\if#2*%
+ \immediate\write\scratchwrite{#1}%
+ \else
+ \dodohandleMPcolor#1setrgbcolor#2#3\\%
+ \fi}
+
+\def\dodohandleMPcolor#1 #2 #3setrgbcolor#4setrgbcolor*\\%
+ {\bgroup
+%\ifnum\MPspecialsignal=123 % color spec / hardcoded hack
+\ifdim#1pt=.123pt
+ \immediate\write\scratchwrite{#1 #2 #3 setrgbcolor}%
+\else
+ \ifforcegrayMPcolors
+ \convertRGBtoGRAY{#1}{#2}{#3}%
+ \immediate\write\scratchwrite
+ {\@@cl@@s \space setgray #4}%
+ \else
+ \dimen0=\onepoint \advance\dimen0 -#1\points
+ \dimen2=\onepoint \advance\dimen2 -#2\points
+ \dimen4=\onepoint \advance\dimen4 -#3\points
+ \ifreduceMPcolors
+ \dimen6\dimen0
+ \ifdim\dimen2<\dimen6 \dimen6\dimen2 \fi
+ \ifdim\dimen4<\dimen6 \dimen6\dimen4 \fi
+ \advance\dimen0 -\dimen6
+ \advance\dimen2 -\dimen6
+ \advance\dimen4 -\dimen6
+ \else
+ \dimen6\zeropoint
+ \fi
+ \immediate\write\scratchwrite
+ {\withoutpt\the\dimen0 \space
+ \withoutpt\the\dimen2 \space
+ \withoutpt\the\dimen4 \space
+ \withoutpt\the\dimen6 \space setcmykcolor #4}%
+ \fi
+\fi
+ \egroup
+ \donetrue} % needed for message
+
+\def\handleMPcopy
+ {\immediate\write\scratchwrite{\fileline}}
+
+%D The next macro is needed for forced conversion. This macro
+%D is copied from \type{colo-ini}, just in case one uses this
+%D module outside \CONTEXT.
+
+\ifx\convertRGBtoGRAY\undefined
+
+ \def\convertRGBtoGRAY#1#2#3%
+ {\scratchdimen#1\onepoint
+ \scratchdimen300\scratchdimen
+ \scratchcounter\scratchdimen
+ \scratchdimen#2\onepoint
+ \scratchdimen590\scratchdimen
+ \advance\scratchcounter \scratchdimen
+ \scratchdimen#3\onepoint
+ \scratchdimen110\scratchdimen
+ \advance\scratchcounter \scratchdimen
+ \advance\scratchcounter \!!medcard
+ \divide\scratchcounter \!!maxcard
+ \edef\@@cl@@s{\realcolorvalue\scratchcounter}}
+
+\fi
+
+%D The next examples show the color conversion macros in
+%D action. These examples also demonstrate in||text \METAPOST\
+%D handling. As we will see, the conversion is hooked into the
+%D \CONTEXT\ color mechanism.
+%D
+%D By setting both \type{rgb} and \type{cmyk} to off, we force
+%D conversion to gray scales using:
+%D
+%D \placeformula[-]
+%D \startformula
+%D G = .30r + .59g + .11b
+%D \stopformula
+%D
+%D By using buffers, we keep the \ASCII\ layout clean:
+%D
+%D \startbuffer
+%D \startbuffer[rgb]
+%D \setupcolors[rgb=ja,cmyk=nee,reduction=no,conversion=no]
+%D \useMPgraphic{hans}
+%D \stopbuffer
+%D
+%D \startbuffer[cmyk]
+%D \setupcolors[rgb=nee,cmyk=ja,reduction=no,conversion=no]
+%D \useMPgraphic{hans}
+%D \stopbuffer
+%D
+%D \startbuffer[cmy]
+%D \setupcolors[rgb=nee,cmyk=ja,reduction=yes,conversion=no]
+%D \useMPgraphic{hans}
+%D \stopbuffer
+%D
+%D \startbuffer[gray]
+%D \setupcolors[rgb=nee,cmyk=nee,reduction=no,conversion=no]
+%D \useMPgraphic{hans}
+%D \stopbuffer
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \getbuffer
+%D
+%D The graphic is rather simple and is generated each time
+%D it's called:
+%D
+%D \global\runMPgraphicstrue
+%D
+%D \startbuffer
+%D \startbuffer[graphic]
+%D \startuseMPgraphic{hans}
+%D width :=\the\textwidth/5;
+%D height := width/4;
+%D fill fullcircle
+%D xscaled width
+%D yscaled height
+%D withcolor (\RedGreenBlue);
+%D \stopuseMPgraphic
+%D \stopbuffer
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \getbuffer
+%D
+%D Next we combine the four alternative interpretations in a
+%D combination:
+%D
+%D \startbuffer
+%D \startbuffer[result]
+%D \startcombination[4]
+%D {\getbuffer[rgb]} {\tfxx original}
+%D {\getbuffer[cmyk]} {\ttxx\string\convertMPcolorstrue}
+%D {\getbuffer[cmy]} {\ttxx\string\reduceMPcolorstrue}
+%D {\getbuffer[gray]} {\ttxx\string\forcegrayMPcolorstrue}
+%D \stopcombination
+%D \stopbuffer
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \getbuffer
+%D
+%D Finally we call the buffers, using different setting:
+%D
+%D \startbuffer
+%D \placefigure
+%D {\METAPOST\ color conversions}
+%D {\def\RedGreenBlue{.1,.4,.6}\getbuffer[graphic]\getbuffer[result]\vskip6pt
+%D \def\RedGreenBlue{.1,.6,.4}\getbuffer[graphic]\getbuffer[result]\vskip6pt
+%D \def\RedGreenBlue{.4,.1,.6}\getbuffer[graphic]\getbuffer[result]\vskip6pt
+%D \def\RedGreenBlue{.4,.6,.1}\getbuffer[graphic]\getbuffer[result]\vskip6pt
+%D \def\RedGreenBlue{.6,.1,.4}\getbuffer[graphic]\getbuffer[result]\vskip6pt
+%D \def\RedGreenBlue{.6,.4,.1}\getbuffer[graphic]\getbuffer[result]}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D \getbuffer
+%D
+%D By the way, when the \POSTSCRIPT\ file resulting from
+%D this input is converted into \PDF\ and viewed in Acrobat
+%D Reader, one can quite different colors from those
+%D displayed in \GHOSTSCRIPT, which view equals the
+%D \POSTSCRIPT\ originals.
+
+%D \macros
+%D {experimental}
+%D
+%D Some experimental macros:
+%D
+%D \starttyping
+%D \startMPdrawing
+%D \stopMPdrawing
+%D \pushMPdrawing
+%D \popMPdrawing
+%D \resetMPdrawing
+%D \ifMPdrawingdone
+%D \getMPdrawing
+%D \MPdivten[number]
+%D \stoptyping
+%D
+%D These macros are used in \PPCHTEX.
+
+\let\MPdrawingdata\empty
+
+\newif\ifMPdrawingdone \MPdrawingdonefalse
+\newif\ifMPshiftdrawing \MPshiftdrawingfalse
+
+\def\resetMPdrawing
+ {\globallet\MPdrawingdata\empty
+ \global\MPdrawingdonefalse}
+
+% why global push/pop here?
+
+\def\pushMPdrawing
+ {\globalpushmacro\MPdrawingdata
+ \globallet\MPdrawingdata\empty}
+
+\def\popMPdrawing
+ {\globalpopmacro\MPdrawingdata}
+
+\def\getMPdrawing
+ {\ifMPdrawingdone
+ \expandafter\startMPgraphic\MPdrawingdata\stopMPgraphic
+ \loadcurrentMPgraphic\empty
+ \deallocateMPslot\currentMPgraphic
+ \placeMPgraphic
+ \fi}
+
+\def\startMPdrawing
+ {\dosingleempty\dostartMPdrawing}
+
+\long\def\dostartMPdrawing[#1]#2\stopMPdrawing
+ {\relax
+ \bgroup
+ \enableincludeMPgraphics
+ \presetMPdefinitions % in case #2 has measures
+ \doifelse{#1}{-}{\convertargument#2\to\asciiA}{\long\def\asciiA{#2}}%
+ \long\xdef\MPdrawingdata{\MPdrawingdata\asciiA}%
+ \egroup}
+
+\def\MPdivten[#1]%
+ {\@EA\@EA\@EA\doMPdivten\@EA\@EA\@EA[\@EA#1]}
+
+\def\doMPdivten[#1]%
+ {\ifnum#1> 9999 \dodoMPdivtenB#1\else
+ \ifnum#1> 999 \dodoMPdivtenC#1\else
+ \ifnum#1> 99 \dodoMPdivtenD#1\else
+ \ifnum#1> 9 \dodoMPdivtenE#1\else
+ \ifnum#1> 0 \dodoMPdivtenF#1\else
+ \ifnum#1<-9999 \dodoMPdivtenA#1\else
+ \ifnum#1< -999 \dodoMPdivtenB#1\else
+ \ifnum#1< -99 \dodoMPdivtenC#1\else
+ \ifnum#1< -9 \dodoMPdivtenD#1\else
+ \ifnum#1< 0 \dodoMPdivtenE#1\else
+ 0 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\dodoMPdivtenA#1#2#3#4#5#6{#1#2#3#4#5.#6}
+\def\dodoMPdivtenB #1#2#3#4#5{#1#2#3#4.#5}
+\def\dodoMPdivtenC #1#2#3#4{#1#2#3.#4}
+\def\dodoMPdivtenD #1#2#3{#1#2.#3}
+\def\dodoMPdivtenE #1#2{#1.#2}
+\def\dodoMPdivtenF #1{.#1}
+
+%D \macros
+%D {startMPclip,grabMPclippath}
+%D
+%D We can use \METAPOST\ to calculate arbitrary clipping
+%D paths. Such a path is defined by (for instance):
+%D
+%D \starttyping
+%D \startMPclip{window}
+%D clip currentpicture to fullcircle xscaled \width yscaled \height ;
+%D \stopMPclip
+%D \stoptyping
+%D
+%D Such a path can be extracted (processed) by:
+%D
+%D \starttyping
+%D \grabMPclippath{window}{method}{width}{height}{default path}
+%D \stoptyping
+%D
+%D Currently only method 1 makes sense; it produces \PDF\
+%D code. This macro only makes sense when hooked into a
+%D special routine.
+
+\let\MPclippath\empty
+
+\long\def\startMPclip#1#2\stopMPclip%
+ {\blabelgroup
+ \long\setgvalue{MPC:#1}%
+ {\startMPgraphic#2\stopMPgraphic\dograbMPclippath}%
+ \elabelgroup}
+
+\def\grabMPclippath#1#2#3#4#5%
+ {\blabelgroup
+ \edef\width {#3\space}\let\overlaywidth \width
+ \edef\height{#4\space}\let\overlayheight\height
+ \doifdefinedelse{MPC:#1}
+ {\getvalue{MPC:#1}%
+ \setxvalue{MPC:#1}{\noexpand\xdef\noexpand\MPclippath{\MPclippath}}}%
+ {\xdef\MPclippath{#5}}%
+ \ifcase#2\else % method 1 :
+ \doglobal\stripcharacter urveto\from\MPclippath\to\MPclippath
+ \doglobal\stripcharacter oveto\from\MPclippath\to\MPclippath
+ \doglobal\stripcharacter ineto\from\MPclippath\to\MPclippath
+ \fi
+ \elabelgroup}
+
+%D We pose some restrictions to the \METAPOST\ code and pickup
+%D the clip path from the file.
+%D
+%D We turn the slash into a comment. The \type {\hbox} grabs spaces
+%D and the \type {%} triggers the grabber. Next we filter the
+%D clipping path, or actually, the first path.
+
+\bgroup
+\catcode`\%=\@@active
+\catcode`\/=\@@comment
+\gdef\dograbMPclippath/
+ {\setbox\scratchbox=\hbox\bgroup/
+ \catcode`\%=\@@active
+ \obeylines\let\obeyedline\space
+ \def\do##1newpath##2closepath##3\od/
+ {\xdef\MPclippath{##2}\endinput}/
+ \def%##1%%EOF/
+ {\do##1newpathclosepath\od\endinput}/
+ \readfile{\MPgraphicfile.\the\currentMPgraphic}{}{}/
+ \deallocateMPslot\currentMPgraphic / new
+ \egroup}
+\egroup
+
+%D \macros
+%D {recycleMPslots}
+%D
+%D When coding and embedding many \METAPOST\ figures in a
+%D document, one can save quite some disk space by using
+%D \PDFTEX\ and setting the next switch:
+
+\newif\ifrecycleMPslots \recycleMPslotstrue
+
+%D When a graphic takes space in the text flow, we can run
+%D into deadlock typesetting. In the first pass, the graphic
+%D is not available, but in the second pass it is. The
+%D placeholder that was put there in the first pass in now
+%D replace by the real graphic and as a result the document
+%D shrinks or grows and pages are removed or added. This in
+%D turn can trigger generation of other graphics, like those
+%D in the background. Graphics start swapping place and again
+%D page breaks change. You can imagine the mess we en dup
+%D with.
+%D
+%D This is why we provide was to use a dedicate range if
+%D numbers for fixed graphcs. Such graphics will not en dup
+%D in the text flow (at least their dimensions don't
+%D contribute to the main vertical list, and thereby they
+%D cannot interfere. We use a rather safe maximum of 4000
+%D graphics here and 8000 in \type {meta-ini}.
+
+\newcount \maxnofMPgraphics \maxnofMPgraphics = 4000 % 8000
+\newcount \minnofMPgraphics \minnofMPgraphics = 1
+
+\newif \ifMPstaticgraphic \MPstaticgraphicfalse
+
+\def\locateMPslot#1% slightly faster on one slot, much faster on multiple slots
+ {\ifundefined{\number#1MP}% could be \ifcsname if needed
+ \letgvalueempty{\number#1MP}%
+ \expandafter\gobbletwoarguments
+ \else
+ \global\advance#1\plusone
+ \fi
+ \locateMPslot#1}
+
+\def\allocateMPslot#1%
+ {\ifrunMPgraphics
+ \ifx\pdfliteral\undefined
+ \recycleMPslotsfalse % quite certainly not pdftex
+ \else\ifcase\pdfoutput
+ \recycleMPslotsfalse % dvi mode or not pdftex (we need to handle dvipdfmx)
+ \fi\fi
+ \else
+ \recycleMPslotsfalse
+ \fi
+ \ifrecycleMPslots
+ % \doloop % slow but used seldom
+ % {\doifundefined{\recurselevel MP}
+ % {\letgvalueempty{\recurselevel MP}%
+ % \global#1\recurselevel
+ % \exitloop}}%
+ \global#1\plusone
+ \locateMPslot#1%
+ % \message{[MP slot + \number#1]%
+ \else\ifMPstaticgraphic
+ \global#1\maxnofMPgraphics
+ \global\advance\maxnofMPgraphics \minusone
+ \else
+ \global#1\minnofMPgraphics
+ \global\advance\minnofMPgraphics \plusone
+ \fi\fi
+ \ifnum\minnofMPgraphics<\maxnofMPgraphics \else
+ \writestatus\m!systems{increase \string\maxnofMPgraphics}%
+ \fi}
+
+\def\deallocateMPslot#1%
+ {\ifrunMPgraphics
+ \ifcase\pdfoutput \recycleMPslotsfalse \fi
+ \else
+ \recycleMPslotsfalse
+ \fi
+ \ifrecycleMPslots
+ \global\letbeundefined{\number#1MP}%
+ %\message{[MP slot - \number#1]}%
+ \fi}
+
+%D Experimental and overloaded later, since we need to be
+%D more clever due to \METAPOST's limit of 4~open files.
+
+\def\MPdatafile
+ {mp-\the\currentMPgraphic.mpd}
+
+\def\getMPdata
+ {\input \MPdatafile\relax}
+
+%D \macros
+%D {MPtoks, MPbox}
+%D
+%D For convenience, we provide some scratch registers:
+
+\ifx\undefined\MPtoks \newtoks\MPtoks \fi
+\ifx\undefined\MPbox \newbox \MPbox \fi
+
+%D \macros
+%D {startMPcode}
+%D
+%D We can save some typing with:
+%D
+%D \starttyping
+%D \startMPcode whatever \stopMPcode
+%D \stoptyping
+%D
+%D this automatically places the graphic
+
+\long\def\startMPcode#1\stopMPcode
+ {\startuseMPgraphic{@@}#1\stopuseMPgraphic\useMPgraphic{@@}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-mrk.tex b/Master/texmf-dist/tex/context/base/supp-mrk.tex
new file mode 100644
index 00000000000..0cab213c489
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-mrk.tex
@@ -0,0 +1,614 @@
+%D \module
+%D [ file=supp-mrk,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Marks,
+%D author=Jim Fox / Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Remark: due to the lack of \type {\clearmark}, the \ETEX\
+%D dedicated mechanism is not yet operational.
+
+%D This module has deverted so much from the original that I
+%D can probably rewrite it to a more efficient one now and
+%D I will do so.
+
+%D There are 256 \COUNTERS, \DIMENSIONS, \SKIPS, \MUSKIPS\ and
+%D \BOXES, 16~in- and output buffers, but there is only one
+%D \MARK. In TugBoat~8 (1987, no~1) Jim Fox presents a set of
+%D macros that can be used to mimmick multiple marks. We
+%D gladly adopt them here. I may rewrite this module from
+%D scratch some day, since some low level \CONTEXT\ commands
+%D can be used.
+%D
+%D This module was changed on behalf of \ETEX. The main
+%D extension is that \type{\get..} and alike is used instead of
+%D direct calls. The \TEX\ based multiple marks needs to store
+%D the mark data but \ETEX\ uses a different approach.
+
+\writestatus{loading}{Context Support Macros / Marks}
+
+\let\normalmark = \mark
+\let\normaltopmark = \topmark
+\let\normalbotmark = \botmark
+\let\normalfirstmark = \firstmark
+\let\normalsplitbotmark = \splitbotmark
+\let\normalsplitfirstmark = \splitfirstmark
+
+\beginETEX \marks cum suis
+
+\let\normalmarks = \marks
+\let\normaltopmarks = \topmarks
+\let\normalbotmarks = \botmarks
+\let\normalfirstmarks = \firstmarks
+\let\normalsplitbotmarks = \splitbotmarks
+\let\normalsplitfirstmarks = \splitfirstmarks
+
+\endETEX
+
+\unprotect
+
+%D We start with the presetting the interface macros.
+%D
+%D \starttabulate[|||]
+%D \NC \type{\getmarks} \NC sets the marks to their values \NC \NR
+%D \NC \type{\getallmarks} \NC sets all marks to their values \NC \NR
+%D \NC \type{\getsplitmarks} \NC sets the splitmarks to their values\NC \NR
+%D \NC \type{\getallsplitmarks} \NC sets all splitmarks to their values\NC \NR
+%D \NC \type{\setmarks} \NC synchronizes topmarks (\ETEX) \NC \NR
+%D \stoptabulate
+%D
+%D Later we will overload these, dependent of the brand of
+%D \TEX\ that we use.
+
+\let \getmarks \gobbleoneargument
+\let \getallmarks \relax
+\let \getsplitmarks \gobbleoneargument
+\let \getallsplitmarks \relax
+\let \setallmarks \relax
+
+\let \newmark \gobbleoneargument
+\let \newpersistentmark \gobbleoneargument
+\let \resetmark \gobbleoneargument
+\let \setmark \gobbletwoargument
+
+%D \macros
+%D {expandmarks}
+%D
+%D We can force expansion of marks with the following switch.
+
+\newif\ifexpandmarks \expandmarkstrue % hm, true indeed ?
+
+\beginTEX
+
+%D This implementation is more or less compatible with the
+%D other \type {\new} macros in \PLAIN\ \TEX. A mark is
+%D defined by:
+%D
+%D \starttyping
+%D \newmark\name
+%D \stoptyping
+%D
+%D and can be called upon with:
+%D
+%D \starttyping
+%D \gettopmark \name % or \topname
+%D \getbotmark \name % or \botname
+%D \getfirstmark\name % or \firstname
+%D \stoptyping
+%D
+%D The only drawback of his approach is that the marks must be
+%D preloaded in the output routine. This is accomplished by
+%D means of:
+%D
+%D \starttyping
+%D \getmarks\name
+%D \stoptyping
+%D
+%D The macros presented here are in most aspects copies of
+%D those presented by Jim Fox. We've taken the freedom to
+%D change a few things for more or less obvious reasons:
+%D
+%D \startitemize
+%D \item Because the original macros look quite complicated,
+%D which is mainly due to extensive use of
+%D \type{\expandafter}'s and \type{\csname}'s, we changed
+%D those in favor of \type{\getvalue}.
+%D \item To be more in line with the rest of \CONTEXT, we've
+%D changed some of the names of macros.
+%D \item Because we are already short on \COUNTERS\ we use
+%D macros when possible.
+%D \item We maintain a list of defined marks and use one
+%D call for getting them all at once.
+%D \item We have extended the mechanism to splitmarks (not
+%D perfected yet).
+%D \item We've introduced optional expansion of the contents
+%D of marks.
+%D \stopitemize
+%D
+%D Whatever changes we've made, the credits still go to Jim,
+%D whatever goes wrong is due to me. The method is described
+%D in the TugBoat mentioned before, so we won't go into
+%D details. All marks belonging to a group are packed in a
+%D list. In this list they are preceded by a macro that can
+%D be defined at will and a number concerning the position at
+%D which it was defined.
+%D
+%D \starttyping
+%D \def\somelist{... \domark5{this} ... \domark31{that} ...}
+%D \stoptyping
+%D
+%D The original \type{\mark} keeps track of the number and
+%D \type{\topmark} and \type{\botmark} are used to extract the
+%D actual marks from the list. The counting is done by
+%D
+%D \starttyping
+%D \currentmarker
+%D \stoptyping
+%D
+%D In \CONTEXT\ we use the mark mechanism to keep track of
+%D colors. In a complicated documents with many colors per
+%D page, \type{\currentmarker} can therefore get pretty high.
+%D (Well, this is not completely true, because we don't
+%D always have to use marks.)
+
+\newcount\currentmarker
+
+%D The original implementation used a few more \COUNTERS. Two
+%D have been substituted by macros, one has been replaced by
+%D our scratch counter.
+%D
+%D \starttyping
+%D \newcount\topmarker
+%D \newcount\botmarker
+%D \newcount\foundmarker
+%D \stoptyping
+%D
+%D We've also introduced some constants, one for the lists and
+%D three for composing the mark commands.
+
+\def\@@marklist@@ {*m*} % {marklist}
+\def\@@marktop@@ {*t*} % {top}
+\def\@@markbot@@ {*b*} % {bot}
+\def\@@markfirst@@ {*f*} % {first}
+\def\@@markcurrent@@ {*c*} % {current}
+
+%D The next one is new too. All defined marks are packed in a
+%D comma seperated list. This could of course have been a token
+%D list but \CONTEXT\ has some preference for comma lists.
+
+\let\allmarks=\empty
+
+%D The next macro replaces the multiple step expansion and
+%D command name constructors of Jim. This alternative leads to
+%D a more readable source (we hope).
+
+\def\makemarknames#1% kan genest werken
+ {\bgroup
+ \escapechar=-1
+ \xdef\markname{\string#1}%
+ \xdef\marklist{\@@marklist@@\markname}%
+ \egroup}
+
+%D \macros
+%D {newmark,resetmark}
+%D
+%D A mark is defined by \type{\newmark}. At the same time,
+%D the name of the mark is added to a commalist. The
+%D three initializations were not in the original design, but
+%D make calls from outside the output routine a bit more
+%D robust.
+
+\let\domark\relax % saves a restore on the stack
+
+\def\definenewmark#1#2%
+ {\bgroup
+ \makemarknames{#1}%
+ #2%
+ \letgvalueempty{\@@markcurrent@@\markname}%
+ \letgvalueempty{\@@marktop@@ \markname}%
+ \letgvalueempty{\@@markfirst@@ \markname}%
+ \letgvalueempty{\@@markbot@@ \markname}%
+ \setgvalue{\marklist}{\domark0{}}% beware of halfway definitions
+ \long\gdef#1{\addmarker#1}%
+ \egroup}
+
+\def\newmark#1%
+ {\definenewmark#1{\doglobal\addtocommalist\markname\allmarks}}
+
+%D Don't ask me, but sometimes we need more control over
+%D updating the marks, thereby we have:
+
+\def\newpersistentmark#1% for an example see core-grd.tex
+ {\definenewmark#1\relax}
+
+\let\setmark \empty
+\let\resetmark\newmark
+
+%D Some more natural interfacing macros:
+
+\def\getcurrentmark #1{\getvalue{\@@markcurrent@@\strippedcsname#1}}
+\def\gettopmark #1{\getvalue{\@@marktop@@ \strippedcsname#1}}
+\def\getbottommark #1{\getvalue{\@@markbot@@ \strippedcsname#1}}
+\def\getfirstmark #1{\getvalue{\@@markfirst@@ \strippedcsname#1}}
+\def\getsplitbottommark#1{\getvalue{\@@markbot@@ \strippedcsname#1}}
+\def\getsplitfirstmark #1{\getvalue{\@@markfirst@@ \strippedcsname#1}}
+
+%D \macros
+%D {setmark}
+%D
+%D Setting a new mark and adding a mark to the designated
+%D list is done by \type{\addmarker}. This is an internal
+%D command, the user set a marks bij calling it's name:
+%D
+%D \starttyping
+%D \setmark\mymark{some text} % or \mymark{some text}
+%D \stoptyping
+%D
+%D Where \type{\mymark} is previously defined by
+%D \type{\newmark}.
+
+\long\def\addmarker#1#2%
+ {\bgroup
+ \makemarknames{#1}%
+ \setgvalue{\@@markcurrent@@\markname}{#2}%
+ \global\advance\currentmarker \plusone
+ \normalmark{\the\currentmarker}%
+ \!!toksa\@EA\@EA\@EA{\csname\marklist\endcsname}%
+ \ifexpandmarks
+ \setxvalue\marklist
+ {\the\!!toksa
+ \noexpand\domark
+ \the\currentmarker{#2}}%
+ \else
+ \!!toksb\@EA{#2}% one level, why ? handy for cs
+ \setxvalue\marklist
+ {\the\!!toksa
+ \noexpand\domark
+ \the\currentmarker{\the\!!toksb}}%
+ \fi
+ \egroup}
+
+%D \macros
+%D {getmarks,getallmarks,
+%D getsplitmarks,getallsplitmarks}
+%D
+%D In fact, marks make only sense in the output routine. Marks
+%D are derived from their list by means of \type{\getmarks}.
+%D Only one call per mark is permitted in the output routine.
+%D Therefore, it's far more easy to get them all at once, by
+%D means of \type{\getallmarks}, which is not part of the
+%D original design.
+%D
+%D This grabbing is done by processing the list using the
+%D embedded \type{\domark} macros. When a relevant mark is
+%D found, this macro is reassigned and from then on serves
+%D in building the new list.
+
+% Although the next couple of macros are already defined
+% in syst-gen.tex, we repeat them here.
+
+\let\normalfi \fi % replaces \@fi
+\let\normalelse \else % replaces \@else
+\let\normalor \or % replaces \@or
+
+% Hm, resetting \!!toksa got lost and took me a half a day to
+% trace down ([] showed up in the pagebody); I really have
+% to clean up this messy module (write it from scratch).
+
+\newif\ifnofirstmarker % an auxiliary switch
+
+\def\getmarks#1%
+ {\bgroup
+ \makemarknames{#1}%
+ \edef\topmarker{0\normaltopmark}%
+ \edef\botmarker{0\normalbotmark}%
+ \!!toksa\emptytoks
+ \!!toksb\emptytoks
+ \nofirstmarkertrue
+ % does more worse than good
+ \let\fi\relax
+ \let\or\relax
+ \let\else\relax
+ %
+ \let\domark\doscanmarks
+ \getvalue\marklist\lastmark
+ %\message{markstatus : [\the\!!toksa\the\!!toksb\the\!!toksc]}%
+ \long\setxvalue\marklist{\the\!!toksa\the\!!toksb\the\!!toksc}%
+ \egroup}
+
+\def\getsplitmarks#1%
+ {\bgroup
+ \makemarknames{#1}%
+ % \@EA\let\@EA\savedmarklist\@EA\csname\marklist\endcsname
+ \edef\topmarker{0\normalsplitfirstmark}%
+ \edef\botmarker{0\normalsplitbotmark}%
+ \!!toksa\emptytoks
+ \!!toksb\emptytoks
+ \nofirstmarkertrue
+ % does more worse than good
+ \let\fi\relax
+ \let\or\relax
+ \let\else\relax
+ %
+ \let\domark\doscanmarks
+ \getvalue\marklist\lastmark
+ % \global\@EA\let\csname\marklist\endcsname\savedmarklist
+ \egroup}
+
+\def\getallmarks {\processcommacommand[\allmarks]\getmarks}
+\def\getallsplitmarks{\processcommacommand[\allmarks]\getsplitmarks}
+
+\def\getallmarks {\@EA\processcommalist\@EA[\allmarks]\getmarks}
+\def\getallsplitmarks{\@EA\processcommalist\@EA[\allmarks]\getsplitmarks}
+
+\long\def\dodoscanmarks#1%
+ {\ifnum\scratchcounter>\topmarker\relax
+ \normalelse
+ \long\setgvalue{\@@marktop@@\markname}{#1}%
+ \normalfi
+ \ifnum\scratchcounter>\botmarker\relax
+ \let\domark\dorecovermarks
+ \!!toksb\@EA{\@EA\domark\the\scratchcounter{#1}}%
+ \normalelse
+ \ifnofirstmarker
+ \long\setgvalue{\@@markfirst@@\markname}{#1}%
+ \ifnum\scratchcounter>\topmarker\relax
+ \nofirstmarkerfalse
+ \normalfi
+ \normalfi
+ \long\setgvalue{\@@markbot@@\markname}{#1}%
+ \!!toksa\@EA{\@EA\domark\the\scratchcounter{#1}}%
+ \normalfi}
+
+\def\doscanmarks
+ {\afterassignment\dodoscanmarks\scratchcounter=}
+
+\long\def\dorecovermarks#1\lastmark% nice trick
+ {\!!toksc{\domark#1}}
+
+\def\lastmark% rest of trick
+ {\!!toksc\emptytoks}
+
+\endTEX
+
+%D The \ETEX\ way of doing things \unknown
+
+\beginETEX \marks cum suis
+
+\newtoks \listofmarks
+
+\def\@@prk{prk:}
+\def\@@mrk{mrk:}
+\def\@@trk{trk:}
+\def\@@frk{frk:}
+\def\@@brk{brk:}
+\def\@@crk{crk:}
+
+%D We will use two state variables per mark, one to signal
+%D that a new mark value is set, and one to trigger (on the
+%D next page) the setting of the top mark.
+
+\def\checkedtopmarks #1{\csname\@@trk\string#1\endcsname}
+\def\checkedfirstmarks#1{\csname\@@frk\string#1\endcsname}
+\def\checkedbotmarks #1{\csname\@@brk\string#1\endcsname}
+\def\thecurrentmarks #1{\csname\@@crk\string#1\endcsname}
+
+\long\def\setmark#1%
+ {%\writestatus{marks}{setting \string#1}\wait
+ \global\@EA\chardef\csname\@@mrk\string#1\endcsname\plusone
+ %\@EA\normalmarks\csname\@@prk\string#1\endcsname{1}%
+ \@EA\normalmarks\csname\@@prk\string#1\endcsname{\realfolio}%
+ \ifexpandmarks\@EA\setexpandedmark\else\@EA\setnormalmark\fi#1}
+
+\def\setexpandedmark#1#2% % marks expand anyway
+ {\@EA\xdef\csname\@@crk\string#1\endcsname{#2}%
+ \normalmarks#1{#2}}
+
+\def\setnormalmark#1#2% using a tok prevents unwanted expansion in mark
+ {\scratchtoks{#2}%
+ \@EA\xdef\csname\@@crk\string#1\endcsname{\the\scratchtoks}%
+ \normalmarks#1{\the\scratchtoks}} % one level expansion
+
+\def\checktopmark#1%
+ {%\writestatus{marks}{checking \string#1}\wait
+ \ifcase\csname\@@mrk\string#1\endcsname\else\dochecktopmark#1\fi}
+
+%\def\dochecktopmark#1%
+% {\ifcase0\@EA\normalfirstmarks\csname\@@prk\string#1\endcsname\else
+% \@EA\ifx\csname\@@frk\string#1\endcsname\empty
+% \@EA\gdef\csname\@@frk\string#1\endcsname{\normalfirstmarks#1}%
+% \@EA\gdef\csname\@@brk\string#1\endcsname{\normalbotmarks #1}%
+% \else
+% \@EA\gdef\csname\@@trk\string#1\endcsname{\normaltopmarks #1}%
+% \global\@EA\chardef\csname\@@mrk\string#1\endcsname\zerocount
+% \fi
+% \fi}
+
+\def\dochecktopmark#1%
+ {\ifx*\@EA\normalfirstmarks\csname\@@prk\string#1\endcsname*\else
+ \@EA\ifx\csname\@@frk\string#1\endcsname\empty
+ \@EA\gdef\csname\@@frk\string#1\endcsname{\normalfirstmarks#1}%
+ \@EA\gdef\csname\@@brk\string#1\endcsname{\normalbotmarks #1}%
+ \else
+ \@EA\gdef\csname\@@trk\string#1\endcsname{\normaltopmarks #1}%
+ \global\@EA\chardef\csname\@@mrk\string#1\endcsname\zerocount
+ \fi
+ \fi}
+
+%\def\resetmark#1% we cannot use \normalmarks#1{}
+% {\global\@EA\chardef\csname\@@mrk\string#1\endcsname\zerocount
+% \@EA\normalmarks\csname\@@prk\string#1\endcsname{0}%
+% \global\@EA\let\csname\@@trk\string#1\endcsname\empty
+% \global\@EA\let\csname\@@frk\string#1\endcsname\empty
+% \global\@EA\let\csname\@@brk\string#1\endcsname\empty
+% \global\@EA\let\csname\@@crk\string#1\endcsname\empty}
+
+\def\resetmark#1% we cannot use \normalmarks#1{}
+ {\global\@EA\chardef\csname\@@mrk\string#1\endcsname\zerocount
+ \@EA\normalmarks\csname\@@prk\string#1\endcsname{}% {0}%
+ \global\@EA\let\csname\@@trk\string#1\endcsname\empty
+ \global\@EA\let\csname\@@frk\string#1\endcsname\empty
+ \global\@EA\let\csname\@@brk\string#1\endcsname\empty
+ \global\@EA\let\csname\@@crk\string#1\endcsname\empty}
+
+\def\definenewmark#1%
+ {\ifcsname\@@prk\string#1\endcsname\else % this is etex -)
+ \newmarks#1\doglobal\appendtoks\checktopmark#1\to\listofmarks
+ \@EA\newmarks\csname\@@prk\string#1\endcsname % status mark
+ \fi
+ \global\@EA\mathchardef\csname\@@mrk\string#1\endcsname\zerocount
+ \global\@EA\let\csname\@@crk\string#1\endcsname\empty
+ \@EA\gdef\csname\@@trk\string#1\endcsname{\normaltopmarks #1}%
+ \@EA\gdef\csname\@@frk\string#1\endcsname{\normalfirstmarks#1}%
+ \@EA\gdef\csname\@@brk\string#1\endcsname{\normalbotmarks #1}}
+
+\let \newmark \definenewmark
+\let \newpersistentmark \newmarks % \definenewmark
+\let \normalsetmark \setmark
+
+\def\getallmarks{\the\listofmarks} % \def\setallmarks{\the\listofmarks}
+
+%D In \type {page-ini} or \type {core-mar} we should say:
+%D
+%D \starttyping
+%D \appendtoks \getallmarks \to \everybeforepagebody
+%D \appendtoks \setallmarks \to \everyafterpagebody
+%D \stoptyping
+
+\let\getcurrentmark \thecurrentmarks
+\let\gettopmark \checkedtopmarks
+\let\getbottommark \checkedbotmarks % \normalbotmarks
+\let\getfirstmark \checkedfirstmarks % \normalfirstmarks
+\let\getsplitbottommark \normalsplitbotmarks
+\let\getsplitfirstmark \normalsplitfirstmarks
+
+\let\getbotmark \getbottommark
+\let\getsplitbotmark \normalsplitbotmarks
+\let\getsplittopmark \normalsplitfirstmarks
+
+\endETEX
+
+%D A couple of goodies:
+
+\let\getbotmark \getbottommark
+\let\getsplitbotmark\getsplitbottommark
+\let\getsplittopmark\getsplitfirstmark
+
+%D \macros
+%D {noninterferingmarks}
+%D
+%D Marks can interfere badly with for instance postprocessing
+%D paragraphs, for instance when we want to grab the last box
+%D using \type {\lastbox}, when at the same time using colors.
+
+\let\normalsetmark\setmark
+
+\def\noninterferingsetmark#1#2%
+ {\ifhmode\prewordbreak\hbox\fi{\normalsetmark{#1}{#2}}}
+
+\def\noninterferingmarks
+ {\let\noninterferingmarks\relax
+ \let\setmark\noninterferingsetmark}
+
+%D This macro is for instance used in the inline headings
+%D postprocessing, as needed when we want to make those
+%D clickable.
+
+%D Right from the beginning, \CONTEXT\ supported more than one
+%D mark, using an extended version of Jim Fox multiple mark
+%D mechanism. In \ETEX\ we can however directly access more
+%D marks than we will ever need.
+
+%D Resetting marks in not compatible with the old method.
+%D Here a node is inserted, which can interfere badly. In
+%D fact, a real \type {\clearmarks\name} is needed.
+%D
+%D \starttyping
+%D \def\resetmark#1{\marks#1{}}
+%D \stoptyping
+%D
+%D A possible macro solution is presented here. When discussing
+%D \type {\clearmarks} on the \ETEX\ discussion list, Chris
+%D Rowley suggested to use a reset flag. Unfortunately this
+%D is not enough since we need to keep track of both set and
+%D reset state then. This means that we must postpone resetting
+%D to the page following the set, and as a result we need
+%D another auxiliary macro. The current solution is the best
+%D I could come up with so far, especially given that we
+%D need a fast mechanism.
+
+%D For those who want to know the story behind resetting
+%D marks, here are some examples of interference
+%D
+%D \startbuffer
+%D \setbox0=\vbox{test}
+%D \unvbox0\setbox0=\lastbox
+%D \ruledhbox{\unhbox0}
+%D \stopbuffer
+%D
+%D \typebuffer\blank\getbuffer\blank
+%D
+%D \startbuffer
+%D \setbox0=\vbox{test\normalmark{}}
+%D \unvbox0\setbox0=\lastbox
+%D \ruledhbox{\unhbox0}
+%D \stopbuffer
+%D
+%D \typebuffer\blank\getbuffer\blank
+%D
+%D \startbuffer
+%D \setbox0=\vbox{test\hbox{\normalmark{}}}
+%D \unvbox0\setbox0=\lastbox
+%D \ruledhbox{\unhbox0}
+%D \stopbuffer
+%D
+%D \typebuffer\blank\getbuffer\blank
+%D
+%D \startbuffer
+%D \setbox0=\vbox{test\vbox{\normalmark{}}}
+%D \unvbox0\setbox0=\lastbox
+%D \ruledhbox{\unhbox0}
+%D \stopbuffer
+%D
+%D \typebuffer\blank\getbuffer\blank
+
+%D One final advice. Use marks with care. When used in globally
+%D assigned boxes, the list can grow quite big, and processing
+%D can slow down considerably. This drawback is removed in
+%D \ETEX\ mode.
+
+\beginTEX
+
+\let\rawnewmark \newmark
+\let\rawdefinemark \newmark
+\let\rawsetmark \setmark
+\let\rawgettopmark \gettopmark
+\let\rawgetfirstmark \getfirstmark
+\let\rawgetbotmark \getbotmark
+\let\rawgetsplitbotmark \normalsplitbotmark
+\let\rawgetsplitfirstmark\normalsplitfirstmark
+\let\rawgetsplittopmark \normalsplitfirstmark
+
+\endTEX
+
+\beginETEX
+
+\let\rawnewmark \newmarks
+\let\rawdefinemark \newmarks
+\let\rawsetmark \normalmarks
+\let\rawgettopmark \normaltopmarks
+\let\rawgetfirstmark \normalfirstmarks
+\let\rawgetbotmark \normalbotmarks
+\let\rawgetsplitbotmark \normalsplitbotmarks
+\let\rawgetsplitfirstmark\normalsplitfirstmarks
+\let\rawgetsplittopmark \normalsplitfirstmarks
+
+\endETEX
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-num.tex b/Master/texmf-dist/tex/context/base/supp-num.tex
new file mode 100644
index 00000000000..a5a9114c1b0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-num.tex
@@ -0,0 +1,426 @@
+%D \module
+%D [ file=supp-num,
+%D version=1998.05.15,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Number (Digit) Handling,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Number (Digit) Handling}
+
+\unprotect
+
+%D \macros
+%D {digits, setdigitmode, setdigitsign}
+%D
+%D Depending on the digit mode the command \type {\digits}
+%D normalizes number patterns depending on the language set.
+%D
+%D \starttyping
+%D This will never be a \digits{1.000.000} seller.
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D I will never grow longer than \digits 1.86 \Meter.
+%D \stoptyping
+%D
+%D The different modes are shown in:
+%D
+%D \startbuffer
+%D \setdigitmode 1 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \setdigitmode 2 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \setdigitmode 3 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \setdigitmode 4 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \setdigitmode 5 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \setdigitmode 6 \digits 12.345,90 \digits 12.345.000 \digits 1,23
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This is typset as:
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+%D
+%D The sign can be typeset as is or within the space of a
+%D digit.
+%D
+%D \startbuffer
+%D \setdigitsign 0 \digits +12.345,90
+%D \setdigitmode 1 \digits +12.345,90
+%D \setdigitmode 2 \digits +12.345,90
+%D \setdigitmode 3 \digits +12.345,90
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This is typset as:
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+
+\chardef\digitoutputmode=1 % 0..6
+\chardef\digitsignmode =0 % 0..3
+
+\def\setdigitmode{\chardef\digitoutputmode}
+\def\setdigitsign{\chardef\digitsignmode}
+
+%D The digit modes are:
+%D
+%D \startitemize[packed]
+%D \item periods \& comma
+%D \item commas \& period
+%D \item thinmuskips \& comma
+%D \item thinmuskips \& period
+%D \item thickmuskips \& comma
+%D \item thickmuskips \& period
+%D \stopitemize
+
+\let\collecteddigits \empty \chardef\digitinputmode =1
+\let\saveddigits \empty \chardef\skipdigit =0
+\let\savedpowerdigits\empty \chardef\powerdigits =0
+
+%D The first stage of the \type {\digit} macro takes care of
+%D the grouped call, the other branch handles the fuzzy
+%D delimited calls.
+
+% \unexpanded\def\digits
+% {\bgroup\let~@\doifnextcharelse\bgroup\dodigits\grabdigit}
+
+\unexpanded\def\digits
+ {\bgroup
+ \let~@%
+ \doifnextcharelse\bgroup
+ \dodigits
+ {\doifnextcharelse\normalmathshift\domathdigits\grabdigit}}
+
+\def\dodigits#1%
+ {\grabdigit#1\relax}
+
+\def\domathdigits$#1$%
+ {\mbox{\grabdigit#1\relax}} % adding $ $ goes wrong in tabulate
+
+\def\grabdigit
+ {\futurelet\next\scandigit}
+
+%D Watch the test for \type {\nextobeyedline}, because the
+%D endofline token can be \type {\def'd}, not \type {\let}'d,
+%D we need to do an indirect test (see \type {verb-ini.tex})
+%D for details.
+%D
+%D \starttyping
+%D \def ^^M{\obeyedline}
+%D \def\nextbeyedline{\obeyedline}
+%D \stoptyping
+
+\ifx\normalmathshift\undefined \let\normalmathshift=$ \fi
+
+\def\scandigit
+ {\ifx\next\blankspace
+ \let\next\handledigits
+ \else\ifx\next\nextobeyedline % the indirect one
+ \let\next\handledigits
+ \else\ifx\next\bgroup
+ \let\next\handledigits
+ \else\ifx\next\egroup
+ \let\next\handledigits
+ \else\ifx\next\normalmathshift
+ \let\next\handledigits
+ \else
+ \let\next\collectdigit
+ \fi\fi\fi\fi\fi
+ \next}
+
+%D We store the power||of||ten (to be signaled by \type {^},
+%D \type {e} or~\type {E}) in a seperate macro so that we can
+%D typeset it in superscript. The space placeholders are
+%D replaced by a \type {@}.
+
+\def\savedigit#1#2%
+ {\edef#1{#1\saveddigits#2}\let\saveddigits\empty}
+
+\long\def\collectdigit#1%
+ {\ifx#1~%
+ \savedigit\collecteddigits @%
+ \else\if#1_%
+ \savedigit\collecteddigits @%
+ \else\if\noexpand#1\relax
+ \let\grabdigit\handledigits
+ \else\ifcase\powerdigits
+ \if#1E%
+ \chardef\powerdigits\plusone
+ \else\if#1e%
+ \chardef\powerdigits\plusone
+ \else\if#1^%
+ \chardef\powerdigits\plusone
+ \else
+ \savedigit\collecteddigits#1%
+ %\doifnumberelse{#1}
+ % {\savedigit\collecteddigits#1}
+ % {\def\saveddigits{#1}}%
+ \fi\fi\fi
+ \else
+ \savedigit\savedpowerdigits#1%
+ %\doifnumberelse{#1}
+ % {\savedigit\savedpowerdigits#1}
+ % {\def\saveddigits{#1}}%
+ \fi\fi\fi\fi
+ \grabdigit}
+
+\let\handlemathdigits\firstofoneargument
+\let\handletextdigits\mathematics
+
+\def\handledigits
+ {%\ifcase\powerdigits
+ % \edef\collecteddigits{\collecteddigits\saveddigits}%
+ %\else
+ % \edef\savedpowerdigits{\savedpowerdigits\saveddigits}%
+ %\fi
+ \ifmmode
+ \handlemathdigits{\dohandledigits}%
+ \else
+ \dontleavehmode\hbox{\handletextdigits{\dohandledigits}}%
+ \fi
+ \egroup}
+
+%D Although we could do with one pass, a second pass for
+%D handling the stored sequence is more readable.
+
+\def\dohandledigits
+ {\mathcode`\,="013B \mathcode`\.="013A % pretty hard coded
+ \expandafter\handletokens\collecteddigits\with\scandigits
+ \ifcase\powerdigits\else\digitpowerseparator^{\savedpowerdigits}\fi}
+
+\def\doscandigit#1%
+ {\ifcase\skipdigit\@EA\hbox\else\@EA\hphantom\fi\bgroup
+ \mathematics % brr, needed because of stored punctuation
+ {\ifnum\digitinputmode=#1\relax
+ \ifcase\digitoutputmode
+ \or .%
+ \or ,%
+ \or \mskip\thinmuskip
+ \or \mskip\thinmuskip
+ \or \mskip\thickmuskip
+ \or \mskip\thickmuskip
+ \fi
+ \else
+ \ifodd\digitoutputmode,\else.\fi
+ \fi}%
+ \egroup}
+
+
+%D The signs can be made smaller and sqeezed into the width
+%D of a digit. Watch the \type {\fontdimen22} trickery (this
+%D font related register stored the math axis).
+
+% \def\scandigits#1%
+% {\if#1.\doscandigit1\chardef\skipdigit0\else
+% \if#1,\doscandigit2\chardef\skipdigit0\else
+% \if#1@\hphantom{0}\chardef\skipdigit1\else
+% \if#1_\hphantom{0}\chardef\skipdigit1\else
+% \if#1/\digitsgn{\hphantom{+}}\chardef\skipdigit0\else
+% \if#1-\digitsgn-\chardef\skipdigit0\else
+% \if#1+\digitsgn+\chardef\skipdigit0\else
+% \if#1=\digitsgn\zeroamount\chardef\skipdigit0\else
+% \if#1s\digitsgn{\hphantom{\positive}}\chardef\skipdigit0\else
+% \if#1p\digitsgn\positive\chardef\skipdigit0\else
+% \if#1m\digitsgn\negative\chardef\skipdigit0\else
+% \if#1n\digitsgn\negative\chardef\skipdigit0\else
+% #1\chardef\skipdigit0\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% \def\digitsep#1%
+% {\doscandigit#1\chardef\skipdigit0}
+%
+% \def\digitnop
+% {\hphantom{0}\chardef\skipdigit1}
+
+% 0,=
+% 0,== second = results in delta(00,=)
+% 0,- is invalid, should be =
+% 0,-- is invalid, should be ==
+
+\def\digitzeroamount
+ {\digitsgn\zeroamount
+ \def\digitzeroamount
+ {\hphantom
+ {00\setbox\scratchbox\hbox{$\zeroamount$}%
+ \hskip-\wd\scratchbox}%
+ \let\digitzeroamount\empty}}
+
+\def\scandigits#1%
+ {\if#1.\digitsep1\else
+ \if#1,\digitsep2\else
+ \if#1@\digitnop \else
+ \if#1_\digitnop \else
+ \if#1/\digitsgn{\hphantom{+}}\chardef\skipdigit0\else
+ \if#1-\ifcase\skipdigit\digitsgn-\else
+ \box\digitsepbox\digitzeroamount \fi\chardef\skipdigit0\else
+ \if#1+\digitsgn+\chardef\skipdigit0\else
+ \if#1=\box\digitsepbox\digitzeroamount \chardef\skipdigit0\else
+ \if#1s\digitsgn{\hphantom{\positive}}\chardef\skipdigit0\else
+ \if#1p\digitsgn\positive\chardef\skipdigit0\else
+ \if#1m\digitsgn\negative\chardef\skipdigit0\else
+ \if#1n\digitsgn\negative\chardef\skipdigit0\else
+ \box\digitsepbox #1\chardef\skipdigit0\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\newbox\digitsepbox \chardef\autodigitmode=1
+
+\def\digitsep#1%
+ {\ifcase\autodigitmode
+ \doscandigit#1%
+ \else
+ \setbox\digitsepbox\hbox{\doscandigit#1}%
+ \fi
+ \chardef\skipdigit0\relax}
+
+% strange, does not work
+%
+% \def\digitnop
+% {\hphantom{\box\digitsepbox}%
+% \hphantom{0}\chardef\skipdigit1\relax}
+%
+% while this works
+
+\def\digitnop
+ {\hbox{\hphantom{\box\digitsepbox}}%
+ \hphantom{0}\chardef\skipdigit1\relax}
+
+% but this doesn't
+%
+% \def\digitnop
+% {\hphantom{\box\digitsepbox0}%
+% \chardef\skipdigit1\relax}
+
+\def\digitsgn#1%
+ {\ifcase\digitsignmode#1\else
+ \hbox
+ {\setbox\scratchbox\hbox{0}%
+ \scratchdimen\fontdimen22\textfont2
+ \def\digitsgn##1##2%
+ {\advance\scratchdimen-\fontdimen22##12
+ \raise\scratchdimen
+ \hbox to \wd\scratchbox{\hss$##2#1$\hss}}%
+ \ifcase\digitsignmode\or
+ \digitsgn\textfont \textstyle \or
+ \digitsgn\scriptfont \scriptstyle \or
+ \digitsgn\scriptscriptfont\scriptscriptstyle\fi}%
+ \fi}
+
+\ifx\undefined\zeroamount \def\zeroamount{-} \fi
+\ifx\undefined\positive \def\positive {+} \fi
+\ifx\undefined\negative \def\negative {-} \fi
+
+%D The digit parser handles a bunch of special characters as
+%D well as different formats. We strongly suggest you to use
+%D the grouped call.
+%D
+%D \starttabulate[|l|l|l|]
+%D \NC \type{.} \NC , . \NC comma or period \NC \NR
+%D \NC \type{,} \NC , . \NC comma or period \NC \NR
+%D \NC \type{@} \NC \NC invisible space \NC \NR
+%D \NC \type{_} \NC \NC invisible space \NC \NR
+%D \NC \type{/} \NC \NC invisible sign \NC \NR
+%D \NC \type{-} \NC $-$ \NC minus sign \NC \NR
+%D \NC \type{+} \NC $+$ \NC plus sign \NC \NR
+%D \NC \type{s} \NC \NC invisible high sign \NC \NR
+%D \NC \type{p} \NC $\positive$ \NC high plus sign \NC \NR
+%D \NC \type{m} \NC $\negative$ \NC high minus sign \NC \NR
+%D \NC \type{n} \NC $\negative$ \NC high minus (negative) sign \NC \NR
+%D \NC \type{=} \NC $\zeroamount$ \NC zero padding \NC \NR
+%D \stoptabulate
+%D
+%D These triggers are used in the following examples.
+%D
+%D \startbuffer
+%D \digits 12
+%D \digits{~~~.~~~.~~~.68.712,34}
+%D \digits ~~~.~~~.~~~.68.712,34
+%D \digits ___.___.111.68.712,34
+%D \digits 111.111.111.68.712,34
+%D \digits 12.345,90
+%D \digits 12.345.000
+%D \digits 12,34
+%D \digits{392.857.230.68.712,34}
+%D {\digits1234}
+%D \digits{1234}
+%D \digits 1234\relax
+%D $\digits 123.222,00$
+%D \digits 123.222,00
+%D \digits 123.222,==
+%D \digits 123.222,00^10
+%D \digits 123.222,00e10
+%D \digits /123.222,00e-12
+%D \digits -123.222,00e-12
+%D \digits +123.222,00e-12
+%D \digits n123.222,00e-12
+%D \digits s123.222,00e-12
+%D \digits p123.222,00e-12
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \startlines
+%D \getbuffer
+%D \stoplines
+
+%D \macros
+%D {Digits}
+%D
+%D We also permit:
+
+\let\Digits=\digits
+
+%D These macros are complicated by the fact that we also
+%D have to support cases like:
+%D
+%D \starttyping
+%D {\digits1234}
+%D \digits{1234}
+%D \digits 1234\whatever
+%D $\digits 123.222,00$
+%D \digits 123.222,00.
+%D \stoptyping
+%D
+%D The latter case shows us that trailing non digits are to
+%D be passed untreated.
+%D
+%D Another interesting case is:
+%D
+%D \starttyping
+%D \digits 123.222,00^10
+%D \stoptyping
+%D
+%D The separator is defined as:
+
+\def\digitpowerseparator%
+ {\cdot10} % {\times10}
+
+%D \macros
+%D {digittemplate}
+%D
+%D Users can specify the way they enter those digits by saying
+%D something like:
+%D
+%D \starttyping
+%D \digittemplate 12.000.000,00 % \digittemplate .,
+%D \stoptyping
+
+\def\digittemplate #1 %
+ {\chardef\digitinputmode\zerocount
+ \handletokens#1\with\scandigittemplate}
+
+\def\scandigittemplate#1%
+ {\if #1.\ifcase\digitinputmode\chardef\digitinputmode1 \fi% period
+ \else\if#1,\ifcase\digitinputmode\chardef\digitinputmode2 \fi% comma
+ \fi\fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-pat.tex b/Master/texmf-dist/tex/context/base/supp-pat.tex
new file mode 100644
index 00000000000..15c69e2c2c6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-pat.tex
@@ -0,0 +1,177 @@
+%D \module
+%D [ file=supp-pat,
+%D version=2005.02.12,
+%D title=\CONTEXT\ Language Macros,
+%D subtitle=Loading (Generic) Patterns,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We support:
+%D
+%D \starttyping
+%D \patterns {
+%D ...[namedglyphs]...
+%D }
+%D \stoptyping
+%D
+%D as well as:
+%D
+%D \starttyping
+%D <patterns>
+%D ...&namedglyphs;...
+%D </patterns>
+%D \stoptyping
+%D
+%D The \XML\ variant has very limited \XML\ parsing capabilities and
+%D is meant as an experiment.
+
+\ifx\writestatus\undefined \else
+
+ \writestatus{loading}{Context Language Macros / Loading Generic Patterns}
+
+\fi
+
+%D \CONTEXT:
+
+\ifx\startmapping\undefined \else \ifx\startencoding\undefined \else
+
+ \def\fetchpatterntoken#1{\csname#1\endcsname}
+
+\fi \fi
+
+%D First we define the \ETEX\ variant. We cannot do that inside
+%D the if statement because normal \TEX\ gets confused over the
+%D csname test (which it does not see as if but it does see the
+%D else's and fi's).
+
+\def\etexfetchpatterntoken#1%
+ {\csname
+ \ifcsname @pattok@#1\endcsname
+ @pattok@#1%
+ \else\ifcsname#1\endcsname
+ #1%
+ \else
+ @pattok@default%
+ \fi\fi
+ \endcsname}
+
+\ifx \fetchpatterntoken \undefined
+
+ \ifx \eTeXversion \undefined
+
+ \def\fetchpatterntoken#1%
+ {\csname
+ \expandafter\ifx\csname @pattok@#1\endcsname\relax
+ \expandafter\ifx\csname#1\endcsname\relax
+ @pattok@default%
+ \else
+ #1%
+ \fi
+ \else
+ @pattok@#1%
+ \fi
+ \endcsname}
+
+ \else
+
+ \let\fetchpatterntoken\etexfetchpatterntoken
+
+ \fi
+
+\fi
+
+\def\definepatterntoken #1 #2 %
+ {\expandafter\def\csname @pattok@#1\endcsname{#2}}
+
+%D \TEX\ based:
+
+\bgroup \catcode`\[=\active
+
+ \gdef\enablepatterntokens
+ {\catcode`\[=\active \let[\handlepatterntoken}
+
+\egroup
+
+\def\handlepatterntoken#1]%
+ {\fetchpatterntoken{#1}}
+
+%D \XML\ based:
+
+\bgroup \catcode`\<=\active \catcode`\&=\active
+
+ \gdef\enablepatternxml
+ {\catcode`\<=\active
+ \catcode`\&=\active
+ \let&\handlepatternentity
+ \let<\handlepatternxml}
+
+\egroup
+
+\def\handlepatternentity#1;%
+ {\fetchpatterntoken{#1}}
+
+%D We use a very simple \XML\ parser, and we only trigger on the first
+%D two characters of the tag name. Consider this feature a playground
+%D (and a bit of a joke).
+
+\def\handlepatternxml#1#2% we only distinguish the first two chars
+ {\csname @patxml@\ifcsname @patxml@#1#2\endcsname#1#2\else de\fi\endcsname}
+
+\def\definepatternxml #1#2#3 #4%
+ {\expandafter\def\csname @patxml@#1#2\endcsname{#4}}
+
+\def\fetchpatternxml#1#2>%
+ {\bgroup
+ \long\def\next##1>{\egroup}%
+ \catcode`\<=2 % \@@endgroup
+ \afterassignment\next
+ #1\bgroup}
+
+\def\gobblepatternxml
+ {\bgroup
+ \catcode`\%=11
+ \dogobblepatternxml}
+
+\long\def\dogobblepatternxml#1>%
+ {\egroup}
+
+%D Here are the default definitions. We don't catch empty elements.
+
+\definepatternxml patterns {\fetchpatternxml\patterns}
+\definepatternxml hyphenations {\fetchpatternxml\hyphenation}
+\definepatternxml pattern {\fetchpatternxml\patterns}
+\definepatternxml hyphenation {\fetchpatternxml\hyphenation}
+\definepatternxml default {\gobblepatternxml}
+
+\definepatterntoken default x
+
+\ifx\pattern \undefined \let\pattern \patterns \fi
+\ifx\hyphenations\undefined \let\hyphenations\hyphenation \fi
+
+%D An example of usage in another format than \CONTEXT:
+%D
+%D \bgroup
+%D
+%D \lccode"E4="E4 \definepatterntoken adiaeresis ^^e4
+%D \lccode"F6="F6 \definepatterntoken odiaeresis ^^f6
+%D \lccode"FC="FC \definepatterntoken ediaeresis ^^fc
+%D \lccode"FF="FF \definepatterntoken ssharp ^^ff
+%D
+%D \enablepatterntokens
+%D \enablepatternxml
+%D
+%D \input lang-de.pat
+%D \input lang-de.hyp
+%D
+%D \egroup
+%D
+%D This is a minimal example for EC encoding, and of course
+%D a couple of more language related settings need to take
+%D place (like uc mappings).
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-pdf.tex b/Master/texmf-dist/tex/context/base/supp-pdf.tex
new file mode 100644
index 00000000000..b40a699f206
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-pdf.tex
@@ -0,0 +1,2261 @@
+%D \module
+%D [ file=supp-pdf,
+%D version=2004.12.16,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\METAPOST\ to \PDF\ conversion,
+%D author=Hans Hagen \& others (see text),
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D These macros are written as generic as possible. Some
+%D general support macro's are loaded from a small module
+%D especially made for non \CONTEXT\ use. In this module I
+%D use a matrix transformation macro written by Tanmoy
+%D Bhattacharya. Thanks to extensive testing by Sebastian
+%D Ratz I was able to complete this module within reasonable
+%D time. This module has support for \METAPOST\ extensions
+%D built in.
+%D
+%D Daniel H. Luecking came up with a better (more precise)
+%D transformation method. You can recognize his comment by
+%D his initials. (We keep the old code around because it's a
+%D nice illustration on how a module like this evolves.)
+
+% Beware, we cannot use \zeropoint here since it may be
+% defined in the range \dimen 0 - 20 which we happen to use
+% as scratch registers; inside context we may consider
+% using dedicated registers.
+
+% fails: ( ) vect10 9.96265 fshow % \040\040\040\040
+%
+% some optimizations are possible, but we need to be generic
+
+%D First we take care of non||\CONTEXT\ use (newlines needed,
+%D expandafter not -).
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+
+\ifx \undefined \convertMPtoPDF \else \expandafter \endinput \fi
+
+\ifx \undefined \StartLatexHack \else \StartLatexHack \fi
+
+%D This module handles some \PDF\ conversion and insertions
+%D topics. By default, the macros use the \PDFTEX\ primitive
+%D \type{\pdfliteral} when available. Since \PDFTEX\ is now the
+%D default engine for \TEX\ distributions, we need a more complex
+%D test.
+
+\writestatus{loading}{Context Support Macros / PDF (2004.03.26)}
+
+\unprotect
+
+\ifx\PDFcode\undefined
+ \ifx\pdfliteral\undefined
+ \def\PDFcode#1{\special{PDF: #1}}
+ \else\ifx\pdfoutput\undefined
+ \def\PDFcode#1{\special{PDF: #1}}
+ \else\ifcase\pdfoutput
+ \def\PDFcode#1{\special{PDF: #1}}
+ \else % pdftex as well as in pdf mode
+ \let\PDFcode\pdfliteral
+ \fi\fi\fi
+\else
+ % we probably use context
+\fi
+
+%D First we define a handy constant:
+
+\bgroup \catcode`\%=\@@other \xdef\letterpercent{\string%} \egroup
+
+%D \macros
+%D {pdfimage,pdfimages,pdfclippedimage}
+%D
+%D Starting with pdftex version 14, images are included more
+%D natural to the form embedding. This enables alternative
+%D images to be embedded.
+%D
+%D \starttyping
+%D \pdfimage <optional dimensions> {file}
+%D \pdfimages <optional dimensions> {high res file} {low res file}
+%D \stoptyping
+%D
+%D The first one replaces the pre||version||14 original,
+%D while the latter provides alternative images.
+%D
+%D The next macro is dedicated to Maarten Gelderman, who
+%D needed to paste prepared \PDF\ pages into conference
+%D proceedings.
+%D
+%D \starttyping
+%D \pdfclippedimage <optional dimensions> {file} {l} {r} {t} {b}
+%D \stoptyping
+
+% \ifx\pdftexversion\undefined % no \m!systems for the sake of latex
+% \writestatus{systems}{Why not use pdf(e)TeX binaries?}
+% \protect
+% \expandafter\endinput
+% \fi
+
+\ifx\pdftexversion\undefined \else \ifnum\pdftexversion>13
+
+ \def\pdfimage#1#%
+ {\dopdfimage{#1}}
+
+ \def\dopdfimage#1#2%
+ {\immediate\pdfximage#1{#2}%
+ \pdfrefximage\pdflastximage}
+
+ \def\pdfimages#1#%
+ {\dopdfimages{#1}}
+
+ \def\dopdfimages#1#2#3%
+ {\immediate\pdfximage#1{#2}%
+ \immediate\pdfobj
+ {[ << /Image \the\pdflastximage\space0 R
+ /DefaultForPrinting true >> ]}%
+ \immediate\pdfximage#1
+ attr {/Alternates \the\pdflastobj\space0 R}{#3}%
+ \pdfrefximage\pdflastximage}
+
+ \def\pdfclippedimage#1#% specs {file}{left}{right}{top}{bottom}
+ {\dopdfclippedimage{#1}}
+
+ \def\dopdfclippedimage#1#2#3#4#5#6%
+ {\bgroup
+ \pdfximage#1{#2}%
+ \setbox\scratchbox\hbox
+ {\pdfrefximage\pdflastximage}%
+ \hsize\wd\scratchbox
+ \advance\hsize -#3
+ \advance\hsize -#4
+ \vsize\ht\scratchbox
+ \advance\vsize -#5
+ \advance\vsize -#6
+ \setbox\scratchbox\vbox to \vsize
+ {\vskip-#5\hbox to \hsize{\hskip-#3\box\scratchbox\hss}}%
+ \pdfxform\scratchbox
+ \pdfrefxform\pdflastxform
+ \egroup}
+
+\fi \fi
+
+%D If you want to save a few hash entries, you may prefer the
+%D less readable alternatives, like:
+%D
+%D \starttyping
+%D \def\pdfimage#1#% This one is less readable but needs no additional
+%D {\bgroup % hash entry for the second stage macro.
+%D \def\pdfimage##1%
+%D {\immediate\pdfximage##1{#2}%
+%D \pdfrefximage\pdflastximage\egroup}}
+%D \stoptyping
+
+%D For old times sake we provide a few aliases. These will be
+%D removed some day.
+
+\ifx\pdftexversion\undefined \else \ifnum\pdftexversion>13
+
+ \let\pdfform =\pdfxform
+ \let\pdflastform=\pdflastxform
+ \let\pdfrefform =\pdfrefxform
+
+\fi \fi
+
+%D \macros
+%D {convertPDFtoPDF}
+%D
+%D \PDFTEX\ supports verbatim inclusion of \PDF\ code. The
+%D following macro takes care of inserting externally defined
+%D illustrations in \PDF\ format. According to a suggestion
+%D Tanmoy Bhattacharya posted to the \PDFTEX\ mailing list, we
+%D first skip lines until \type{stream} is reached and then
+%D copy lines until \type{endstream} is encountered. This
+%D scheme only works with vectorized graphics in which no
+%D indirect references to objects are used. Bitmaps also don't
+%D work. Interpreting their specifications is beyond the
+%D current implementation.
+%D
+%D \starttyping
+%D \convertPDFtoPDF
+%D {filename}
+%D {x scale} {y scale}
+%D {x offset } {y offset}
+%D {width} {height}
+%D \stoptyping
+%D
+%D When the scales are set to~1, the last last four values
+%D are the same as the bounding box, e.g.
+%D
+%D \starttyping
+%D \convertPDFtoPDF{mp-pra-1.pdf} {1} {1}{-1bp}{-1bp}{398bp}{398bp}
+%D \convertPDFtoPDF{mp-pra-1.pdf}{.5}{.5} {0bp} {0bp}{199bp}{199bp}
+%D \stoptyping
+%D
+%D Keep in mind, that this kind of copying only works for
+%D pure and valid pdf code (without fonts).
+
+%D The scanning and copying is straightforward and quite fast.
+%D To speed up things we use two constants.
+
+\def\@@PDFstream@@ {stream}
+\def\@@PDFendstream@@ {endstream}
+
+%D \macros
+%D {PDFmediaboxprefered}
+%D
+%D If needed, the macros can scan for the mediabox that
+%D specifies the dimensions and offsets of the graphic. When
+%D we say:
+%D
+%D \starttyping
+%D \PDFmediaboxpreferedtrue
+%D \stoptyping
+%D
+%D the mediabox present in the file superseded the user
+%D specified, already scaled and calculated offset and
+%D dimensions. Beware: the user supplied values are not the
+%D bounding box ones!
+
+%D This code has become obsolete.
+
+% \newif\ifPDFmediaboxprefered
+
+\def\setPDFboundingbox#1#2#3#4#5#6%
+ {\dimen0=#1\dimen0=#5\dimen0
+ \ScaledPointsToBigPoints{\number\dimen0}\PDFxoffset
+ \dimen0=#3\dimen0=#5\dimen0
+ \xdef\PDFwidth{\the\dimen0}%
+ \dimen0=#2\dimen0=#6\dimen0
+ \ScaledPointsToBigPoints{\number\dimen0}\PDFyoffset
+ \dimen0=#4\dimen0=#6\dimen0
+ \xdef\PDFheight{\the\dimen0}%
+ \global\let\PDFxoffset\PDFxoffset
+ \global\let\PDFyoffset\PDFyoffset}
+
+\def\setPDFmediabox#1[#2 #3 #4 #5]#6\done
+ {\dimen2=#2bp\dimen2=-\dimen2 % \dimen2=-#2bp also works since tex handles --
+ \dimen4=#3bp\dimen4=-\dimen4 % \dimen4=-#3bp also works since tex handles --
+ \dimen6=#4bp\advance\dimen6 \dimen2
+ \dimen8=#5bp\advance\dimen8 \dimen4
+ \setPDFboundingbox{\dimen2}{\dimen4}{\dimen6}{\dimen8}\PDFxscale\PDFyscale}
+
+% \def\checkPDFmediabox#1/MediaBox#2#3\done
+% {\ifx#2\relax \else
+% \message{mediabox}%
+% \setPDFmediabox#2#3\done
+% \fi}
+
+%D We use the general macro \type{\doprocessfile} and feed this
+%D with a line handling macro that changes it's behavior when
+%D the stream operators are encountered.
+
+% \def\handlePDFline
+% {\ifx\@@PDFstream@@\fileline
+% \let\doprocessPDFline\copyPDFobject
+% \startPDFtoPDF
+% \else\ifPDFmediaboxprefered
+% \expandafter\checkPDFmediabox\fileline/MediaBox\relax\done
+% \fi\fi}
+
+% \def\copyPDFobject
+% {\ifx\@@PDFendstream@@\fileline
+% \ifPDFmediaboxprefered
+% \let\doprocessPDFline\findPDFmediabox
+% \else
+% \let\doprocessPDFline\relax
+% \fi
+% \else
+% \advance\scratchcounter 1
+% \PDFcode{\fileline}%
+% \fi}
+
+% \def\findPDFmediabox
+% {\expandafter\checkPDFmediabox\fileline/MediaBox\relax\done}
+
+%D The main conversion macro wraps the \PDF\ codes in a box
+%D that is output as an object. The graphics are embedded
+%D in~\type{q} and~\type{Q} and are scaled and positioned using
+%D one transform call (\type{cm}). This saves some additional
+%D scaling.
+
+%D \starttyping
+%D \def\startPDFtoPDF%
+%D {\setbox0=\vbox\bgroup
+%D \message{[PDF to PDF \PDFfilename}%
+%D \forgetall
+%D \scratchcounter=0
+%D \let\stopPDFtoPDF=\dostopPDFtoPDF}
+%D
+%D \def\dostopPDFtoPDF%
+%D {\ifnum\scratchcounter<0 \scratchcounter=1 \fi
+%D \message{(\the\scratchcounter\space lines)]}%
+%D \egroup
+%D \wd0=\PDFwidth
+%D \vbox to \PDFheight
+%D {\forgetall
+%D \vfill
+%D \PDFcode{q}%
+%D \PDFcode{1 0 0 1 \PDFxoffset\space \PDFyoffset\space cm}%
+%D \PDFcode{\PDFxscale\space 0 0 \PDFyscale\space 0 0 cm}%
+%D \box0
+%D \PDFcode{Q}}}
+%D
+%D \def\stopPDFtoPDF%
+%D {\message{[PDF to PDF \PDFfilename\space not found]}}
+%D
+%D \def\convertPDFtoPDF#1#2#3#4#5#6#7%
+%D {\bgroup
+%D \def\PDFfilename{#1}%
+%D \def\PDFxscale {#2}%
+%D \def\PDFyscale {#3}%
+%D \setPDFboundingbox{#4}{#5}{#6}{#7}{1}{1}%
+%D \uncatcodespecials
+%D \endlinechar=-1
+%D \let\doprocessPDFline=\handlePDFline
+%D \doprocessfile\scratchread\PDFfilename\doprocessPDFline
+%D \stopPDFtoPDF
+%D \egroup}
+
+\def\convertPDFtoPDF#1#2#3#4#5#6#7%
+ {\message{[PDF to PDF use \string\PDFcode instead]}%
+ \vbox{use the direct method instead}}
+
+%D \macros
+%D {dogetPDFmediabox}
+%D
+%D The next macro can be used to find the mediabox of a \PDF\
+%D illustration.
+%D
+%D \starttyping
+%D \dogetPDFmediabox
+%D {filename}
+%D {new dimen}{new dimen}{new dimen}{new dimen}
+%D \stoptyping
+%D
+%D Beware of dimen clashes: this macro uses the 5~default
+%D scratch registers! When no file or mediabox is found, the
+%D dimensions are zeroed.
+
+\def\dogetPDFmediabox#1#2#3#4#5%
+ {\bgroup
+ \def\PDFxscale{1}%
+ \def\PDFyscale{1}%
+ \uncatcodespecials
+ \endlinechar\minusone
+ \def\checkPDFtypepage##1/Type /Page##2##3\done%
+ {\ifx##2\relax
+ \else\if##2s% accept /Page and /Pages
+ \let\doprocessPDFline\findPDFmediabox
+ \else
+ \let\doprocessPDFline\findPDFmediabox
+ \fi\fi}%
+ \def\findPDFtypepage
+ {\expandafter\checkPDFtypepage\fileline/Type /Page\relax\done}%
+ \def\checkPDFmediabox##1/MediaBox##2##3\done%
+ {\ifx##2\relax \else
+ \setPDFmediabox##2##3\done
+ \fileprocessedtrue
+ \fi}%
+ \def\findPDFmediabox
+ {\expandafter\checkPDFmediabox\fileline/MediaBox\relax\done}%
+ \let\doprocessPDFline\findPDFtypepage
+ \doprocessfile\scratchread{#1}\doprocessPDFline
+ \egroup
+ \ifx\PDFxoffset\undefined
+ #2\zeropoint
+ #3\zeropoint
+ #4\zeropoint
+ #5\zeropoint
+ \else
+ #2=\PDFxoffset\onebasepoint
+ #3=\PDFyoffset\onebasepoint
+ #4=\PDFwidth
+ #5=\PDFheight
+ \fi}
+
+%D \macros
+%D {convertMPtoPDF}
+%D
+%D The next set of macros implements \METAPOST\ to \PDF\
+%D conversion. Because we want to test as fast as possible, we
+%D first define the \POSTSCRIPT\ operators that \METAPOST\
+%D uses. We don't define irrelevant ones, because these are
+%D skipped anyway.
+
+%D The converter can be made a bit faster by replacing the
+%D two test macros (the ones with the many \type {\if's}) by
+%D a call to named branch macros (something \typ {\getvalue
+%D {xPSmoveto}}. For everyday documents with relatively
+%D small graphics the gain in speed can be neglected.
+
+\def \PScurveto {curveto}
+\def \PSlineto {lineto}
+\def \PSmoveto {moveto}
+\def \PSshowpage {showpage}
+\def \PSnewpath {newpath}
+\def \PSfshow {fshow}
+\def \PSclosepath {closepath}
+\def \PSfill {fill}
+\def \PSstroke {stroke}
+\def \PSclip {clip}
+\def \PSrlineto {rlineto}
+\def \PSsetlinejoin {setlinejoin}
+\def \PSsetlinecap {setlinecap}
+\def \PSsetmiterlimit {setmiterlimit}
+\def \PSsetgray {setgray}
+\def \PSsetrgbcolor {setrgbcolor}
+\def \PSsetcmykcolor {setcmykcolor}
+\def \PSsetdash {setdash}
+\def \PSgsave {gsave}
+\def \PSgrestore {grestore}
+\def \PStranslate {translate}
+\def \PSscale {scale}
+\def \PSconcat {concat}
+\def \PSdtransform {dtransform}
+\def \PSsetlinewidth {setlinewidth}
+\def \PSpop {pop}
+
+\def \PSnfont {nfont} % was needed for TUG98 proceedings
+\def \PSspecial {special} % extensions to MetaPost
+
+%D A previous version set \type {%} to ignore, which
+%D simplified the following definitions. At the start of
+%D conversion the percent character was made active again.
+%D Because the whole graphic is one paragraph (there are no
+%D empty lines) this does not give the desired effect. This
+%D went unnoticed untill Scott Pakin sent me a test file
+%D percent characters in a string. So, from now on we have
+%D to prefix the following strings with percentages.
+
+%D Some day I'll figure out a better solution (line by line reading
+%D using \ETEX).
+
+\edef \PSBoundingBox {\letterpercent\letterpercent BoundingBox:}
+\edef \PSHiResBoundingBox {\letterpercent\letterpercent HiResBoundingBox:}
+\edef \PSExactBoundingBox {\letterpercent\letterpercent ExactBoundingBox:}
+\edef \PSMetaPostSpecial {\letterpercent\letterpercent MetaPostSpecial:}
+\edef \PSMetaPostSpecials {\letterpercent\letterpercent MetaPostSpecials:}
+\edef \PSPage {\letterpercent\letterpercent Page:}
+
+%D By the way, the \type {setcmykcolor} operator is not
+%D output by \METAPOST\ but can result from converting the
+%D \cap{RGB} color specifications, as implemented in
+%D \type{supp-mps}.
+
+%D In \POSTSCRIPT\ arguments precede the operators. Due to the
+%D fact that in some translations we need access to those
+%D arguments, and also because sometimes we have to skip them,
+%D we stack them up. The stack is one||dimensional for non path
+%D operators and two||dimensional for operators inside a path.
+%D This is because we have to save the whole path for
+%D (optional) postprocessing. Values are pushed onto the stack
+%D by:
+%D
+%D \starttyping
+%D \setMPargument {value}
+%D \stoptyping
+%D
+%D They can be retrieved by the short named macros:
+%D
+%D \starttyping
+%D \gMPa {number}
+%D \gMPs {number}
+%D \stoptyping
+%D
+%D When scanning a path specification, we also save the
+%D operator, using
+%D
+%D \starttyping
+%D \setMPkeyword {n}
+%D \stoptyping
+%D
+%D The path drawing operators are coded for speed: \type{clip},
+%D \type{stroke}, \type{fill} and \type{fillstroke} become
+%D 1, 2, 3 and~4.
+%D
+%D When processing the path this code can be retrieved
+%D using
+%D
+%D \starttyping
+%D \getMPkeyword % {n}
+%D \stoptyping
+%D
+%D When setting an argument, the exact position on the stack
+%D depends on the current value of the \COUNTERS\
+%D \type{\nofMPsegments} and \type{\nofMParguments}.
+
+\newcount\nofMPsegments
+\newcount\nofMParguments
+
+%D These variables hold the coordinates. The argument part of
+%D the stack is reset by:
+%D
+%D \starttyping
+%D \resetMPstack
+%D \stoptyping
+%D
+%D We use the prefix \type{@@MP} to keep the stack from
+%D conflicting with existing macros. To speed up things a bit
+%D more, we use the constant \type{\@@MP}.
+
+\def\@@MP{@@MP}
+
+\def\setMPargument% #1%
+ {\advance\nofMParguments \plusone
+ \expandafter\def
+ \csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname} % {#1}
+
+\def\letMPargument
+ {\advance\nofMParguments \plusone
+ \expandafter\let
+ \csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname}
+
+\def\setMPsequence#1 %
+ {\advance\nofMParguments \plusone
+ \expandafter\def
+ \csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname{#1}%
+ \handleMPsequence}
+
+\def\gMPa#1%
+ {\csname\@@MP0\number#1\endcsname}
+
+\def\gMPs#1%
+ {\csname\@@MP\the\nofMPsegments\number#1\endcsname}
+
+\def\dogMPa#1%
+ {\@EAEAEA\do\csname\@@MP0\number#1\endcsname}
+
+\def\setMPkeyword#1 %
+ {\expandafter\def\csname\@@MP\the\nofMPsegments0\endcsname{#1}%
+ \advance\nofMPsegments \plusone
+ \nofMParguments\zerocount}
+
+\def\getMPkeyword% #1%
+ {\csname\@@MP\the\nofMPsegments0\endcsname} % {\csname\@@MP#10\endcsname}
+
+\def\docleanupMPargument#1% we need this because args can have [ or ] pre/appended
+ {\expandafter\edef\csname\@@MP\the\nofMPsegments\number#1\endcsname
+ {\csname\@@MP\the\nofMPsegments\number#1\endcsname}}
+
+%D When we reset the stack, we can assume that all further
+%D comment is to be ignored and handled in strings.
+%D By redefining the reset macro after the first call, we
+%D save some run time. Only use this macro after all
+%D comments are processed and use the simple alternative
+%D when dealing with comments.
+
+\def\doresetMPstack
+ {\nofMParguments\zerocount}
+
+\def\resetMPstack
+ {\let\handleMPgraphic\handleMPendgraphic
+ \let\resetMPstack\doresetMPstack
+ \resetMPstack}
+
+%D The arguments are saved with the preceding command
+%D \type{\do}. By default this command expands to nothing, but
+%D when we deal with strings it's used to strip off the
+%D \type{(} and \type{)}.
+%D
+%D Strings are kind of tricky, because characters can be
+%D passed verbatim \type{(hello)}, by octal number
+%D \type{(\005)} or as command \type{(\()}. We therefore
+%D cannot simply ignore \type{(} and \type{)}, the way we do
+%D with \type{[} and \type{]}. Another complication is that
+%D strings may contain characters that normally have a
+%D special meaning in \TEX, like \type{$} and \type{{}}.
+%D
+%D A previous solution made \type{\} an active character and
+%D let it look ahead for a number or characters. We had to
+%D abandon this scheme because of the need for verbatim
+%D support. The next solution involved some \CATCODE\
+%D trickery but works well.
+
+\def\octalMPcharacter#1#2#3%
+ {\char'#1#2#3\relax}
+
+
+%D curly braces and squarly brackets are stored in the argument stack
+%D as part of strings, for instance in:
+%D
+%D \starttyping
+%D /fshow {exch findfont exch scalefont setfont show}bind def
+%D [3 3 ] 0 setdash
+%D \stoptyping
+%D
+%D but we need to keep them in situation like
+%D
+%D \starttyping
+%D ([bla bla] bla bla) ec-lmr10 9.96265 fshow
+%D ({bla bla} bla bla) ec-lmr10 9.96265 fshow
+%D \stoptyping
+%D
+%D So, when we store the snippets, we keep the special tokens, and
+%D when needed we either ignore or obey them
+
+\bgroup
+\catcode`\|=\@@comment
+\catcode`\%=\@@active
+\catcode`\[=\@@active
+\catcode`\]=\@@active
+\catcode`\{=\@@active
+\catcode`\}=\@@active
+\catcode`B=\@@begingroup
+\catcode`E=\@@endgroup
+\gdef\keepMPspecials|
+ B\let%\letterpercent|
+ \def[B\noexpand[E|
+ \def]B\noexpand]E|
+ \def{B\noexpand{E|
+ \def}B\noexpand}EE
+\gdef\ignoreMPspecials|
+ B\let%\letterpercent|
+ \def[BE|
+ \def]BE|
+ \def{BE|
+ \def}BEE
+\gdef\obeyMPspecials|
+ B\def%B\char 37\relax E|
+ \def[B\char 91\relax E|
+ \def]B\char 93\relax E|
+ \def{B\char123\relax E|
+ \def}B\char125\relax EE
+\gdef\setMPspecials|
+ B\setnaturalcatcodes
+ \catcode`\\=\@@escape
+ \catcode`\%=\@@active
+ \catcode`\[=\@@active
+ \catcode`\]=\@@active
+ \catcode`\{=\@@active
+ \catcode`\}=\@@active
+ \lccode`\-=0 | latex sets this to `\-
+ \lccode`\%=`\% | otherwise it's seen as a number
+ \def\(B\char40\relax E|
+ \def\)B\char41\relax E|
+ \def\\B\char92\relax E|
+ \def\0B\octalMPcharacter0E|
+ \def\1B\octalMPcharacter1E|
+ \def\2B\octalMPcharacter2E|
+ \def\3B\octalMPcharacter3E|
+ \def\4B\octalMPcharacter4E|
+ \def\5B\octalMPcharacter5E|
+ \def\6B\octalMPcharacter6E|
+ \def\7B\octalMPcharacter7E|
+ \def\8B\octalMPcharacter8E|
+ \def\9B\octalMPcharacter9EE
+\egroup
+
+%D We use the comment symbol as a sort of trigger. Beware!
+%D The whole graphic is seen as on eparagraph, which means
+%D that we cannot change the catcodes in between.
+
+\bgroup
+\catcode`\%=\@@active
+\gdef\startMPscanning{\let%=\startMPconversion}
+\egroup
+
+%D In earlier versions we used the sequence
+%D
+%D \starttyping
+%D \expandafter\handleMPsequence\input filename\relax
+%D \stoptyping
+%D
+%D Persistent problems in \LATEX\ however forced us to use a
+%D different scheme. Every \POSTSCRIPT\ file starts with a
+%D \type{%}, so we temporary make this an active character
+%D that starts the scanning and redefines itself. (The problem
+%D originates in the redefinition by \LATEX\ of the
+%D \type{\input} primitive.)
+
+\def\startMPconversion
+ {\keepMPspecials
+ \handleMPsequence}
+
+%D Here comes the main loop. Most arguments are numbers. This
+%D means that they can be recognized by their \type{\lccode}.
+%D This method saves a lot of processing time. We could
+%D speed up the conversion by handling the \type{path}
+%D seperately.
+
+\def\@EAEAEA{\expandafter\expandafter\expandafter} % to be sure
+
+\def\dohandleMPsequence#1%
+ {\ifdone
+ \ifcase\lccode`#1\relax
+ \@EAEAEA\dohandleMPsequenceA
+ \else
+ \@EAEAEA\dohandleMPsequenceB
+ \fi
+ \else
+ \@EA\dohandleMPsequenceC
+ \fi#1}
+
+%\def\dohandleMPsequenceA#1 %
+% {\setMPargument{#1}%
+% \handleMPsequence}
+
+\let\dohandleMPsequenceA\setMPsequence
+
+\def\dohandleMPsequenceB#1 %
+ {\edef\somestring{#1}%
+ \ifx\somestring\PSmoveto
+ \edef\lastMPmoveX{\gMPa1}%
+ \edef\lastMPmoveY{\gMPa2}%
+ \PDFcode{\!MPgMPa1 \!MPgMPa2 m}%
+ \resetMPstack
+ \else\ifx\somestring\PSnewpath
+ \let\handleMPsequence\handleMPpath
+ \else\ifx\somestring\PSgsave
+ \PDFcode{q}%
+ \resetMPstack
+ \else\ifx\somestring\PSgrestore
+ \PDFcode{Q}%
+ \resetMPstack
+ \else\ifx\somestring\PSdtransform % == setlinewidth
+ \let\handleMPsequence\handleMPdtransform
+ % after that we will encounter more tokens until setlinewidth+pop
+ % or pop+setlinewidth which we catch next; we explicitly need to
+ % reset the stack since [] n setdash may follow; a more clever
+ % approach would be to read on till the condition is met, but it's
+ % the only pop / setlinewidth we will encounter so ...
+ \else\ifx\somestring\PSsetlinewidth
+ % already handled in dtransform
+ \resetMPstack
+ \else\ifx\somestring\PSpop
+ % already handled in dtransform
+ \resetMPstack
+ \else\ifx\somestring\PSconcat
+ \cleanupMPconcat
+ \PDFcode{\gMPa1 \gMPa2 \gMPa3 \gMPa4 \gMPa5 \gMPa6 cm}%
+ \resetMPstack
+ \else\ifx\somestring\PSsetrgbcolor
+ \handleMPrgbcolor
+ \resetMPstack
+ \else\ifx\somestring\PSsetcmykcolor
+ \handleMPcmykcolor
+ \resetMPstack
+ \else\ifx\somestring\PSsetgray
+ \handleMPgraycolor
+ \resetMPstack
+ \else\ifx\somestring\PStranslate
+ \PDFcode{1 0 0 1 \gMPa1 \gMPa2 cm}%
+ \resetMPstack
+ \else\ifx\somestring\PSsetdash
+ \handleMPsetdash
+ \resetMPstack
+ \else\ifx\somestring\PSsetlinejoin
+ \PDFcode{\gMPa1 j}%
+ \resetMPstack
+ \else\ifx\somestring\PSsetmiterlimit
+ \PDFcode{\gMPa1 M}%
+ \resetMPstack
+ \else\ifx\somestring\PSfshow
+ \PDFcode{n}%
+ \handleMPfshow
+ \resetMPstack
+ \else\ifx\somestring\PSsetlinecap
+ \PDFcode{\gMPa1 J}%
+ \resetMPstack
+ \else\ifx\somestring\PSrlineto
+ \PDFcode{\!MP\lastMPmoveX\space\!MP\lastMPmoveY\space l S}%
+ \resetMPstack
+ \else\ifx\somestring\PSscale
+ \PDFcode{\gMPa1 0 0 \gMPa2 0 0 cm}%
+ \resetMPstack
+ \else\ifx\somestring\PSspecial
+ \handleMPspecialcommand
+ \resetMPstack
+ \else
+ \handleMPgraphic% {#1}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \handleMPsequence}
+
+\def\dohandleMPsequenceC#1 %
+ {\edef\somestring{#1}%
+ \handleMPgraphic % {#1}%
+ \handleMPsequence}
+
+%D Since colors are not sensitive to transformations, they
+%D are sometimes used for signaling. Therefore, we handle them
+%D separately. The next macro can be redefined if needed.
+
+\def\handleMPrgbcolor
+ {\PDFcode{\!MPgMPa1 \!MPgMPa2 \!MPgMPa3 rg
+ \!MPgMPa1 \!MPgMPa2 \!MPgMPa3 RG}}
+
+\def\handleMPcmykcolor
+ {\PDFcode{\!MPgMPa1 \!MPgMPa2 \!MPgMPa3 \!MPgMPa4 k
+ \!MPgMPa1 \!MPgMPa2 \!MPgMPa3 \!MPgMPa4 K}}
+
+\def\handleMPgraycolor
+ {\PDFcode{\!MPgMPa1 g
+ \!MPgMPa1 G}}
+
+\def\handleMPspotcolor
+ {\PDFcode{0 g
+ 0 G}}
+
+%D Beginning and ending the graphics is taken care of by the
+%D macro \type{\handleMPgraphic}, which is redefined when
+%D the first graphics operator is met.
+
+\def\handleMPendgraphic % #1%
+ {\ifx\somestring\PSshowpage
+ \let\handleMPsequence\finishMPgraphic
+ \else
+ \letMPargument\somestring % {#1}%
+ \fi}
+
+\def\handleMPbegingraphic % #1%
+ {\ifx\somestring\PSBoundingBox
+ \def\handleMPsequence{\handleMPboundingbox1}%
+ \else\ifx\somestring\PSHiResBoundingBox
+ \def\handleMPsequence{\handleMPboundingbox2}%
+ \else\ifx\somestring\PSExactBoundingBox
+ \def\handleMPsequence{\handleMPboundingbox3}%
+ \else\ifx\somestring\PSshowpage
+ \let\handleMPsequence\finishMPgraphic
+ \else\ifx\somestring\PSPage
+ \let\handleMPsequence\handleMPpage
+ \else\ifx\somestring\PSMetaPostSpecials
+ \let\handleMPsequence\handleMPspecialscomment
+ \else\ifx\somestring\PSMetaPostSpecial
+ \let\handleMPsequence\handleMPspecialcomment
+ \else
+ \letMPargument\somestring % {#1}%
+ \fi\fi\fi\fi\fi\fi\fi}
+
+\let\handleMPgraphic=\handleMPbegingraphic
+
+%D We check for three kind of bounding boxes: the normal one
+%D and two high precision ones:
+%D
+%D \starttyping
+%D BoundingBox: llx lly ucx ucy
+%D HiResBoundingBox: llx lly ucx ucy
+%D ExactBoundingBox: llx lly ucx ucy
+%D \stoptyping
+%D
+%D The original as well as the recalculated dimensions are
+%D saved for later use.
+
+\newif\ifskipemptyMPgraphic \skipemptyMPgraphicfalse
+
+\chardef\currentMPboundingbox=0
+
+\def\handleMPboundingbox#1#2 #3 #4 #5
+ {\ifnum#1>\currentMPboundingbox
+ \xdef\MPllx{#2}\xdef\MPlly{#3}%
+ \xdef\MPurx{#4}\xdef\MPury{#5}%
+ \dimen0=#2\onepoint
+ \dimen0=-\MPxscale\dimen0
+ \dimen2=#3\onepoint
+ \dimen2=-\MPyscale\dimen2
+ \xdef\MPxoffset{\withoutpt\the\dimen0}%
+ \xdef\MPyoffset{\withoutpt\the\dimen2}%
+ \dimen0=#2\onebasepoint
+ \dimen0=-\dimen0
+ \dimen2=#3\onebasepoint
+ \dimen2=-\dimen2
+ \advance\dimen0 #4\onebasepoint
+ \dimen0=\MPxscale\dimen0
+ \xdef\MPwidth{\the\dimen0}%
+ \advance\dimen2 #5\onebasepoint
+ \xdef\MPyshift{\the\dimen2}% unscaled
+ \dimen2=\MPyscale\dimen2
+ \xdef\MPheight{\the\dimen2}%
+ \chardef\currentMPboundingbox#1\relax
+ \fi
+ \doresetMPstack
+ \let\handleMPsequence\dohandleMPsequence
+ \let\next\handleMPsequence
+ \ifskipemptyMPgraphic
+ \ifdim\MPheight=\zeropoint\relax\ifdim\MPwidth=\zeropoint\relax
+ \def\next{\endinput\finishMPgraphic}%
+ \fi\fi
+ \fi
+ \next}
+
+%D Unless defined otherwise, we simply ignore specialcomments.
+
+\def\handleMPspecialcomment
+ {\doresetMPstack
+ \let\handleMPsequence\dohandleMPsequence
+ \handleMPsequence}
+
+\let\handleMPspecialscomment\handleMPspecialcomment
+
+%D We use the \type{page} comment as a signal that
+%D stackbuilding can be started.
+
+\def\handleMPpage #1 #2
+ {\doresetMPstack
+ \donetrue
+ \let\handleMPsequence\dohandleMPsequence
+ \handleMPsequence}
+
+%D The same applies to the special extensions.
+
+\def\handleMPspecialcommand
+ {\doresetMPstack
+ \let\handleMPsequence\dohandleMPsequence
+ \handleMPsequence}
+
+%D \METAPOST\ draws its dots by moving to a location and
+%D invoking \type{0 0 rlineto}. This operator is not
+%D available in \PDF. Our solution is straightforward: we draw
+%D a line from $(current\_x, current\_y)$ to itself. This
+%D means that the arguments of the preceding \type{moveto} have
+%D to be saved.
+
+\def\lastMPmoveX{0}
+\def\lastMPmoveY{0}
+
+%D These saved coordinates are also used when we handle the
+%D texts. Text handling proved to be a bit of a nuisance, but
+%D finally I saw the light. It proved that we also had to
+%D take care of \type{(split arguments)}.
+
+\def\setMPfshowfont#1#2%
+ {\font\temp=#1\space at #2\relax\temp}
+
+\let\MPfshowcommand\empty
+
+\def\dohandleMPfshow
+ {\bgroup
+ \setbox\scratchbox\hbox
+ {\obeyMPspecials
+ \let\ \relax % mp breaks long lines and appends a \
+ \edef\size{\gMPa\nofMParguments}%
+ \ifx\size\PSnfont % round font size (to pt)
+ \advance\nofMParguments \minusone
+ \expandafter\scratchdimen\gMPa\nofMParguments\onepoint\relax
+ \ifdim\scratchdimen<\onepoint
+ \def\size{1pt}%
+ \else
+ \advance\scratchdimen .5\onepoint
+ \def\size##1.##2\relax{\def\size{##1pt}}%
+ \expandafter\size\the\scratchdimen\relax
+ \fi
+ \else
+ \edef\size{\size bp}%
+ \fi
+ \advance\nofMParguments \minusone
+ %\font\temp=\gMPa\nofMParguments\space at \size
+ \let\temp\relax % to be sure
+ \setMPfshowfont{\gMPa\nofMParguments}\size
+ \advance\nofMParguments \minusone
+ \temp
+ \MPfshowcommand
+ {\ifnum\nofMParguments=\plusone
+ \def\do(##1){##1}%
+ \dogMPa1%
+ \else
+ % we need to catch ( a ) (a a a) (\123 \123 \123) etc
+ \scratchcounter\plusone
+ \def\dodo##1% Andreas Fieger's bug: (\304...)
+ {\edef\!!stringa{##1\empty\empty}% and another one: ( 11) -> \ifx 11
+ \ifx\!!stringa\MPspacechar\MPspacechar\else\expandafter##1\fi}%
+ \def\do(##1{\dodo{##1}}%
+ \dogMPa\scratchcounter\MPspacechar
+ \let\do\relax
+ \loop
+ \advance\scratchcounter \plusone
+ \ifnum\scratchcounter<\nofMParguments\relax
+ \gMPa\scratchcounter\MPspacechar
+ \repeat
+ \def\do##1){\dodo{##1}}%
+ \dogMPa\scratchcounter
+ \fi
+ \unskip}}%
+ %
+ % this fails in some versions of pdftex
+ %
+ % \dimen0=\lastMPmoveY bp
+ % \advance\dimen0 by \ht0
+ % \ScaledPointsToBigPoints{\number\dimen0}\lastMPmoveY
+ % \PDFcode{n q 1 0 0 1 \lastMPmoveX\space\lastMPmoveY\space cm}%
+ % \dimen0=\ht0
+ % \advance\dimen0 by \dp0
+ % \box0
+ % \vskip-\dimen0
+ % \PDFcode{Q}%
+ % \egroup}
+ %
+ \setbox\scratchbox\hbox
+ {\hskip\lastMPmoveX\onebasepoint\raise\lastMPmoveY\onebasepoint\box\scratchbox}%
+ \ht\scratchbox\zeropoint
+ \dp\scratchbox\zeropoint
+ \wd\scratchbox\zeropoint
+ \box\scratchbox
+ \egroup}
+
+\let\handleMPfshow\dohandleMPfshow % so we can overload this one later
+
+%D You could consider the following definition to be the most
+%D natural one.
+
+% \def\MPspacechar{\space} % normal case
+
+\def\MPspacechar{\char32\relax} % old solution does not work with math
+
+%D However, the following implementation is more robust, since
+%D some fonts have funny visible spaces in the space slot. This
+%D gives a mismatch between the space that \METAPOST\ took into
+%D account and the \quote {natural} space. This only happens in
+%D labels, since \type {btex}||\type {etex} thingies don't have
+%D spaces. This phenomena showed up when preparing the
+%D \METAFUN\ manual, where Palatino fonts are used. We can
+%D safely assume that \METAPOST\ considers \type {\char32} to
+%D be the space.
+
+\def\MPspacechar{\setbox\scratchbox\hbox{\char32}\kern\wd\scratchbox}
+
+%D Well, this does not work with math fonts, so:
+
+\def\MPspacechar{\char32\relax}
+
+%D Most operators are just converted and keep their
+%D arguments. Dashes however need a bit different treatment,
+%D otherwise \PDF\ viewers complain loudly. Another
+%D complication is that one argument comes after the \type{]}.
+%D When reading the data, we simply ignore the array boundary
+%D characters. We save ourselves some redundant newlines and
+%D at the same time keep the output readable by packing the
+%D literals.
+
+\def\handleMPsetdash
+ {\bgroup
+ \ignoreMPspecials
+ \def\somestring{[}%
+ \scratchcounter\plusone
+ \loop
+ \ifnum\scratchcounter<\nofMParguments
+ \edef\somestring{\somestring\space\gMPa\scratchcounter}%
+ \advance\scratchcounter \plusone
+ \repeat
+ \edef\somestring{\somestring]\gMPa\scratchcounter\space d}%
+ \PDFcode{\somestring}%
+ \egroup}
+
+%D The \type{setlinewidth} commands looks a bit complicated. There are
+%D two alternatives, that result in a similar look in both
+%D $x$- and $y$-dorection. As John Hobby says:
+%D
+%D \startnarrower \switchtobodyfont[ss]
+%D \starttyping
+%D x 0 dtransform exch truncate exch idtransform pop setlinewidth
+%D 0 y dtransform truncate idtransform setlinewidth pop
+%D \stoptyping
+%D
+%D These are just fancy versions of \type{x setlinewidth} and
+%D \type{y setlinewidth}. The \type{x 0 ...} form is used if
+%D the path is {\em primarily vertical}. It rounds the width
+%D so that vertical lines come out an integer number of pixels
+%D wide in device space. The \type{0 y ...} form does the same
+%D for paths that are {\em primarily horizontal}. The reason
+%D why I did this is Knuth insists on getting exactly the
+%D widths \TEX\ intends for the horizontal and vertical rules
+%D in \type{btex...etex} output. (Note that PostScript scan
+%D conversion rules cause a horizontal or vertical line of
+%D integer width $n$ in device space to come out $n+1$ pixels
+%D wide, regardless of the phase relative to the pixel grid.)
+%D \stopnarrower
+%D
+%D The common operator in these sequences is \type{dtransform},
+%D so we can use this one to trigger setting the linewidth.
+
+\def\handleMPdtransform
+ {\ifdim\gMPa1\onepoint>\zeropoint
+ \PDFcode{\gMPa1 w}%
+ \def\next##1 ##2 ##3 ##4 ##5 ##6 {\handleMPsequence}%
+ \else
+ \PDFcode{\gMPa2 w}%
+ \def\next##1 ##2 ##3 ##4 {\handleMPsequence}%
+ \fi
+ \let\handleMPsequence\dohandleMPsequence
+ \resetMPstack
+ \next}
+
+%D The most complicated command is \type{concat}. \METAPOST\
+%D applies this operator to \type{stroke}. At that moment the
+%D points set by \type{curveto} and \type{moveto}, are already
+%D fixed. In \PDF\ however the \type{cm} operator affects the
+%D points as well as the pen (stroke). Like more \PDF\
+%D operators, \type{cm} is defined in a bit ambiguous way.
+%D The only save route for non||circular penshapes, is saving
+%D the path, recalculating the points and applying the
+%D transformation matrix in such a way that we can be sure
+%D that its behavior is well defined. This comes down to
+%D inverting the path and applying \type{cm} to that path as
+%D well as the pen. This all means that we have to save the
+%D path.
+
+%D In \METAPOST\ there are three ways to handle a path $p$:
+%D
+%D \starttyping
+%D draw p; fill p; filldraw p;
+%D \stoptyping
+%D
+%D The last case outputs a \type{gsave fill grestore} before
+%D \type{stroke}. Handling the path outside the main loops
+%D saves about 40\% run time.\footnote{We can save some more by
+%D following the \METAPOST\ output routine, but for the moment
+%D we keep things simple.} Switching between the main loop and
+%D the path loop is done by means of the recursely called
+%D macro \type{\handleMPsequence}.
+
+\def\handleMPpath
+ {\chardef\finiMPpath0
+ \let\closeMPpath\relax
+ \let\flushMPpath\flushnormalMPpath
+ \resetMPstack
+ \nofMPsegments\plusone
+ \let\handleMPsequence\dohandleMPpath
+ \dohandleMPpath}
+
+%D Most paths are drawn with simple round pens. Therefore we've
+%D split up the routine in two.
+
+\def\flushnormalMPsegment
+ {\ifcase\getMPkeyword\relax
+ \PDFcode{\!MPgMPs1 \!MPgMPs2 l}%
+ \or
+ \PDFcode{\!MPgMPs1 \!MPgMPs2 \!MPgMPs3 \!MPgMPs4 \!MPgMPs5 \!MPgMPs6 c}%
+ \or
+ \PDFcode{\!MP\lastMPmoveX\space\!MP\lastMPmoveY\space l S}%
+ \or
+ \edef\lastMPmoveX{\gMPs1}% evt \!MP here
+ \edef\lastMPmoveY{\gMPs2}%
+ \PDFcode{\!MP\lastMPmoveX\space \!MP\lastMPmoveY\space m}%
+ \fi}
+
+\def\flushconcatMPsegment
+ {\ifcase\getMPkeyword\relax
+ \doMPconcat{\gMPs1}\a{\gMPs2}\b%
+ \PDFcode{\!MP\a\space\!MP\b\space l}%
+ \or
+ \doMPconcat{\gMPs1}\a{\gMPs2}\b%
+ \doMPconcat{\gMPs3}\c{\gMPs4}\d%
+ \doMPconcat{\gMPs5}\e{\gMPs6}\f%
+ \PDFcode{\!MP\a\space\!MP\b\space
+ \!MP\c\space\!MP\d\space
+ \!MP\e\space\!MP\f\space c}%
+ \or
+ \bgroup
+ \noMPtranslate
+ \doMPconcat\lastMPmoveX\a\lastMPmoveY\b%
+ \PDFcode{\!MP\a\space\!MP\b\space l S}%
+ \egroup
+ \or
+ \edef\lastMPmoveX{\gMPs1}%
+ \edef\lastMPmoveY{\gMPs2}%
+ \doMPconcat\lastMPmoveX\a\lastMPmoveY\b%
+ \PDFcode{\!MP\a\space\!MP\b\space m}%
+ \fi}
+
+% \def\flushnormalMPpath
+% {\scratchcounter\nofMPsegments
+% \nofMPsegments\plusone
+% \loop
+% \flushnormalMPsegment
+% \advance\nofMPsegments \plusone
+% \ifnum\nofMPsegments<\scratchcounter
+% \repeat}
+%
+% \def\flushconcatMPpath
+% {\scratchcounter\nofMPsegments
+% \nofMPsegments\plusone
+% \loop
+% \flushconcatMPsegment
+% \advance\nofMPsegments \plusone
+% \ifnum\nofMPsegments<\scratchcounter
+% \repeat}
+%
+% an alternative is presented below: (no \def assignment)
+
+\def\doflushsomeMPpath
+ {\dodoflushsomeMPpath
+ \advance\nofMPsegments \plusone
+ \ifnum\nofMPsegments<\scratchcounter
+ \expandafter\doflushsomeMPpath
+ \fi}
+
+\def\flushsomeMPpath
+ {\scratchcounter\nofMPsegments
+ \nofMPsegments\plusone
+ \doflushsomeMPpath}
+
+\def\flushnormalMPpath{\let\dodoflushsomeMPpath\flushnormalMPsegment\flushsomeMPpath}
+
+%OLD \def\flushconcatMPpath{\let\dodoflushsomeMPpath\flushconcatMPsegment\flushsomeMPpath}
+
+%NEW pre-calculate 1/D so it needn't be repeated for each control point.
+
+\def\flushconcatMPpath
+ {\MPreciprocaldeterminant
+ \let\dodoflushsomeMPpath\flushconcatMPsegment\flushsomeMPpath}
+
+%D The transformation of the coordinates is handled by one of
+%D the macros Tanmoy posted to the \PDFTEX\ mailing list.
+%D I rewrote and optimized the original macro to suit the other
+%D macros in this module.
+%D
+%D \starttyping
+%D \doMPconcat {x position} \xresult {y position} \yresult
+%D \stoptyping
+%D
+%D By setting the auxiliary \DIMENSIONS\ \type{\dimen0} upto
+%D \type{\dimen10} only once per path, we save over 20\% run
+%D time. Some more speed was gained by removing some parameter
+%D passing. These macros can be optimized a bit more by using
+%D more constants. There is however not much need for further
+%D optimization because penshapes usually are round and
+%D therefore need no transformation. Nevertheless we move the
+%D factor to the outer level and use a bit different \type{pt}
+%D removal macro. Although the values represent base points,
+%D we converted them to pure points, simply because those can
+%D be converted back.
+
+%OLD \mathchardef\MPconcatfactor=256 % beware don't remove spaces before it
+
+%OLD \def\doMPreducedimen#1
+%OLD {\count0\MPconcatfactor
+%OLD \advance\dimen#1 \ifdim\dimen#1>\zeropoint .5\else -.5\fi\count0
+%OLD \divide\dimen#1 \count0\relax}
+
+%OLD % too inaccurate (see old pragma logo)
+%OLD
+%OLD \def\doMPreducedimen#1
+%OLD {\count0=\MPconcatfactor
+%OLD \divide\dimen#1 \count0\relax}
+
+%OLD \def\doMPreducedimen#1
+%OLD {\advance\dimen#1 \ifdim\dimen#1>\zeropoint .5\else -.5\fi\MPconcatfactor
+%OLD \divide\dimen#1 \MPconcatfactor}
+
+%D The transformation code is rewritten by Daniel H. Luecking who
+%D describes his patch as follows:
+%D
+%D We would like to divide 1 by $X$, but all divisions are integer so
+%D for accuracy we want to convert to large integers and make sure the
+%D integer quotient has as many significant digits as possible. Thus we
+%D need to replace $1/X$ with $M/N$ where $N$ is as large as possible
+%D and $M/N$ is as large as possible. Also for simplicity $M$ should be
+%D a power of 2. So we make $M = 2^{30}$ \footnote{$2^{31} - 1$ is the
+%D largest legal integer. Using it (and simply ignoring the inaccuracy
+%D caused by $-1$) turns out to be at least as accurate in all cases,
+%D and more accurate in some.} (largest legal power of 2) and adjust
+%D $X$ downward (if necessary) to the the range $1-2^{16}$. This gives
+%D at least 15 significant binary digits, (almost as accurate as
+%D \METAPOST\ for numbers near 1) or almost 5 significant figures
+%D (decimal).
+
+\newcount\MPscratchCnt
+\newdimen\MPscratchDim % will be assigned global
+
+\def\MPadjustdimen % sets \MPscratchDim and \MPscratchCnt
+ {\MPscratchCnt\zerocount
+ \doMPadjustdimen}
+
+\def\doMPadjustdimen
+ {\ifdim\MPscratchDim>\onepoint
+ \divide\MPscratchDim 2
+ \advance\MPscratchCnt \plusone
+ \expandafter\doMPadjustdimen
+ \fi}
+
+%OLD \def\doMPexpanddimen#1
+%OLD {\multiply\dimen#1 \MPconcatfactor\relax}
+
+%D DHL: When viewed as an integer, $1 \hbox{pt}=2^{16}$ so $2^{32}/X$
+%D is the right way to do $(1 \hbox{pt})/(X \hbox{pt})$ and get the
+%D answer in points. But we are limited to $2^{30}/X$. However, we
+%D actually do $[ 2^{30} / (X/2^K) ]*2^{2-K}$ where $K$ is the number
+%D of halvings it takes to bring $X$ below $1 \hbox{pt}$. If $K$ is 0
+%D or 1 we readjust by multiplying by 4 or 2, otherwise by halving
+%D $(K-2)$ times \type {\MPscratchCnt} holds the value of $K$ from
+%D \type {\MPadjustdimen}.
+
+\def\MPreadjustdimen % acts on \MPscratchDim and MPscratchCnt
+ {\ifcase\MPscratchCnt
+ \multiply\scratchdimen 4
+ \or
+ \multiply\scratchdimen 2
+ \else
+ \expandafter\doMPreadjustdimen
+ \fi}
+
+\def\doMPreadjustdimen
+ {\ifnum\MPscratchCnt>2
+ \divide\scratchdimen 2
+ \advance\MPscratchCnt \minusone
+ \expandafter\doMPreadjustdimen
+ \fi}
+
+\def\MPreciprocaldeterminant
+ {\scratchdimen\withoutpt\the\dimen0 \dimen6 % s_x*s_y
+ \advance\scratchdimen - \withoutpt\the\dimen2 \dimen4 % s_x*s_y - r_x*r_y
+ \ifdim\scratchdimen<\zeropoint % we need a positive dimension
+ \scratchdimen-\scratchdimen % for \MPadjustdimen (?)
+ \doMPreciprocal
+ \scratchdimen-\scratchdimen
+ \else
+ \doMPreciprocal
+ \fi
+ \edef\MPreciprocal{\withoutpt\the\scratchdimen}}
+
+\newcount\MPnumerator \MPnumerator = 1073741824 % 2^{30}
+
+% todo: dimexpr
+
+\def\doMPreciprocal % replace \scratchdimen with its reciprocal
+ {\ifdim\scratchdimen=\onepoint \else
+ \MPadjustdimen
+ \scratchcounter\MPnumerator
+ \divide\scratchcounter\scratchdimen
+ \scratchdimen1\scratchcounter % 1 needed !
+ \MPreadjustdimen
+ \fi}
+
+%OLD \def\presetMPconcat
+%OLD {\dimen 0=\gMPs1\onepoint \doMPreducedimen 0 % r_x
+%OLD \dimen 2=\gMPs2\onepoint \doMPreducedimen 2 % s_x
+%OLD \dimen 4=\gMPs3\onepoint \doMPreducedimen 4 % s_y
+%OLD \dimen 6=\gMPs4\onepoint \doMPreducedimen 6 % r_y
+%OLD \dimen 8=\gMPs5\onepoint \doMPreducedimen 8 % t_x
+%OLD \dimen10=\gMPs6\onepoint \doMPreducedimen10 } % t_y
+%OLD
+%OLD \def\presetMPscale
+%OLD {\dimen 0=\gMPs1\onepoint \doMPreducedimen 0
+%OLD \dimen 2 \zeropoint
+%OLD \dimen 4 \zeropoint
+%OLD \dimen 6=\gMPs2\onepoint \doMPreducedimen 6
+%OLD \dimen 8 \zeropoint
+%OLD \dimen10 \zeropoint}
+
+\def\cleanupMPconcat
+ {\ignoreMPspecials
+ \docleanupMPargument1%
+ \docleanupMPargument6%
+ \keepMPspecials}
+
+\def\presetMPconcat
+ {\dimen 0=\gMPs1\onepoint % s_x
+ \dimen 2=\gMPs2\onepoint % r_x
+ \dimen 4=\gMPs3\onepoint % r_y
+ \dimen 6=\gMPs4\onepoint % s_y
+ \dimen 8=\gMPs5\onepoint % t_x
+ \dimen10=\gMPs6\onepoint} % t_y
+
+\def\presetMPscale
+ {\dimen 0=\gMPs1\onepoint
+ \dimen 2 \zeropoint
+ \dimen 4 \zeropoint
+ \dimen 6=\gMPs2\onepoint
+ \dimen 8 \zeropoint
+ \dimen10 \zeropoint}
+
+\def\noMPtranslate % use this one grouped
+ {\dimen 8 \zeropoint % t_x
+ \dimen10 \zeropoint} % t_y
+
+%D \starttyping
+%D \def\doMPconcat#1#2#3#4%
+%D {\dimen12=#1 pt \doMPreducedimen12 % p_x
+%D \dimen14=#3 pt \doMPreducedimen14 % p_y
+%D %
+%D \dimen16 \dimen 0
+%D \multiply \dimen16 \dimen 6
+%D \dimen20 \dimen 2
+%D \multiply \dimen20 \dimen 4
+%D \advance \dimen16 -\dimen20
+%D %
+%D \dimen18 \dimen12
+%D \multiply \dimen18 \dimen 6
+%D \dimen20 \dimen14
+%D \multiply \dimen20 \dimen 4
+%D \advance \dimen18 -\dimen20
+%D \dimen20 \dimen 4
+%D \multiply \dimen20 \dimen10
+%D \advance \dimen18 \dimen20
+%D \dimen20 \dimen 6
+%D \multiply \dimen20 \dimen 8
+%D \advance \dimen18 -\dimen20
+%D %
+%D \multiply \dimen12 -\dimen 2
+%D \multiply \dimen14 \dimen 0
+%D \advance \dimen12 \dimen14
+%D \dimen20 \dimen 2
+%D \multiply \dimen20 \dimen 8
+%D \advance \dimen12 \dimen20
+%D \dimen20 \dimen 0
+%D \multiply \dimen20 \dimen10
+%D \advance \dimen12 -\dimen20
+%D %
+%D \doMPreducedimen16
+%D \divide \dimen18 \dimen16 \doMPexpanddimen18
+%D \divide \dimen12 \dimen16 \doMPexpanddimen12
+%D %
+%D \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+%D \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
+%D \stoptyping
+
+%D The following optimization resulted from some tests by
+%D and email exchanges with Sanjoy Mahajan.
+%D
+%D \starttyping
+%D \def\doMPconcat#1#2#3#4%
+%D {\dimen12=#1 pt \doMPreducedimen12 % p_x
+%D \dimen14=#3 pt \doMPreducedimen14 % p_y
+%D %
+%D \dimen16 \dimen 0
+%D \multiply \dimen16 \dimen 6
+%D \dimen20 \dimen 2
+%D \multiply \dimen20 \dimen 4
+%D \advance \dimen16 -\dimen20
+%D %
+%D \dimen18 \dimen12
+%D \multiply \dimen18 \dimen 6
+%D \dimen20 \dimen14
+%D \multiply \dimen20 \dimen 4
+%D \advance \dimen18 -\dimen20
+%D \dimen20 \dimen 4
+%D \multiply \dimen20 \dimen10
+%D \advance \dimen18 \dimen20
+%D \dimen20 \dimen 6
+%D \multiply \dimen20 \dimen 8
+%D \advance \dimen18 -\dimen20
+%D %
+%D \multiply \dimen12 -\dimen 2
+%D \multiply \dimen14 \dimen 0
+%D \advance \dimen12 \dimen14
+%D \dimen20 \dimen 2
+%D \multiply \dimen20 \dimen 8
+%D \advance \dimen12 \dimen20
+%D \dimen20 \dimen 0
+%D \multiply \dimen20 \dimen10
+%D \advance \dimen12 -\dimen20
+%D %
+%D %\ifdim\dimen16>1pt % oeps, can be < 1pt too
+%D \ifdim\dimen16=1pt \else
+%D \ifdim\dimen16>\MPconcatfactor pt
+%D \doMPreducedimen16
+%D \divide \dimen18 \dimen16 \doMPexpanddimen18
+%D \divide \dimen12 \dimen16 \doMPexpanddimen12
+%D \else
+%D \divide \dimen18 \dimen16 \doMPexpanddimen18 \doMPexpanddimen18
+%D \divide \dimen12 \dimen16 \doMPexpanddimen12 \doMPexpanddimen12
+%D \fi
+%D \fi
+%D %
+%D \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+%D \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
+%D \stoptyping
+%D
+%D But, this one is still too inaccurate, so we now have:
+
+% \def\doMPconcat#1#2#3#4%
+% {\dimen12=#1pt % p_x
+% \dimen14=#3pt % p_y
+% %
+% % we should test for >-1024 too, but for the moment take the gamble
+% \chardef\MPfactor1\ifdim\dimen12<1024pt \ifdim\dimen14<1024pt 6\fi\fi
+% %
+% \multiply\dimen12 \MPfactor
+% \multiply\dimen14 \MPfactor
+% %
+% \doMPreducedimen12
+% \doMPreducedimen14
+% %
+% \dimen16 \dimen 0
+% \multiply \dimen16 \dimen 6
+% \dimen20 \dimen 2
+% \multiply \dimen20 \dimen 4
+% \advance \dimen16 -\dimen20
+% %
+% \dimen18 \dimen12
+% \multiply \dimen18 \dimen 6
+% \dimen20 \dimen14
+% \multiply \dimen20 \dimen 4
+% \advance \dimen18 -\dimen20
+% \dimen20 \dimen 4
+% \multiply \dimen20 \dimen10
+% \advance \dimen18 \dimen20
+% \dimen20 \dimen 6
+% \multiply \dimen20 \dimen 8
+% \advance \dimen18 -\dimen20
+% %
+% \multiply \dimen12 -\dimen 2
+% \multiply \dimen14 \dimen 0
+% \advance \dimen12 \dimen14
+% \dimen20 \dimen 2
+% \multiply \dimen20 \dimen 8
+% \advance \dimen12 \dimen20
+% \dimen20 \dimen 0
+% \multiply \dimen20 \dimen10
+% \advance \dimen12 -\dimen20
+% %
+% \ifdim\dimen16=1pt \else
+% \ifdim\dimen16>\MPconcatfactor pt
+% \doMPreducedimen16
+% \divide \dimen18 \dimen16 \doMPexpanddimen18
+% \divide \dimen12 \dimen16 \doMPexpanddimen12
+% \else
+% \divide \dimen18 \dimen16 \doMPexpanddimen18 \doMPexpanddimen18
+% \divide \dimen12 \dimen16 \doMPexpanddimen12 \doMPexpanddimen12
+% \fi
+% \fi
+% %
+% \divide\dimen18 \MPfactor
+% \divide\dimen12 \MPfactor
+% %
+% \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+% \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
+
+%D We cannot use \type {\beginETEX} here since in plain we
+%D get \type {\outer} problems, sigh.
+
+%OLD \beginTEX
+%OLD
+%OLD \def\MPcriteriumA {512pt} % scale
+%OLD \def\MPcriteriumB {2pt} % scale
+%OLD
+%OLD \endTEX
+%OLD
+%OLD \ifx\MPcriteriumA\undefined
+%OLD
+%OLD \newdimen\MPcriteriumA \MPcriteriumA=512pt
+%OLD \newdimen\MPcriteriumB \MPcriteriumB= 2pt
+%OLD
+%OLD \fi
+
+%OLD \def\doMPconcat#1#2#3#4%
+%OLD {\dimen12=#1pt % p_x
+%OLD \dimen14=#3pt % p_y
+%OLD %
+%OLD \chardef\MPfactor\zerocount
+%OLD \ifdim\dimen4<\MPcriteriumB\ifdim\dimen4>-\MPcriteriumB
+%OLD \ifdim\dimen6<\MPcriteriumB\ifdim\dimen6>-\MPcriteriumB
+%OLD \ifdim\dimen8<\MPcriteriumB\ifdim\dimen8>-\MPcriteriumB
+%OLD \ifdim\dimen10<\MPcriteriumB\ifdim\dimen10>-\MPcriteriumB
+%OLD \chardef\MPfactor\plusone
+%OLD \fi\fi
+%OLD \fi\fi
+%OLD \fi\fi
+%OLD \fi\fi
+%OLD \ifcase\MPfactor % spurious 0 removed
+%OLD \chardef\MPfactor\plusone
+%OLD \ifdim\dimen12<\MPcriteriumA\ifdim\dimen12>-\MPcriteriumA
+%OLD \ifdim\dimen14<\MPcriteriumA\ifdim\dimen14>-\MPcriteriumA
+%OLD \chardef\MPfactor16
+%OLD \fi\fi
+%OLD \fi\fi
+%OLD \fi
+%OLD %
+%OLD \multiply\dimen12 \MPfactor
+%OLD \multiply\dimen14 \MPfactor
+%OLD %
+%OLD \doMPreducedimen12
+%OLD \doMPreducedimen14
+%OLD %
+%OLD \dimen16 \dimen 0
+%OLD \multiply \dimen16 \dimen 6
+%OLD \dimen20 \dimen 2
+%OLD \multiply \dimen20 \dimen 4
+%OLD \advance \dimen16 -\dimen20
+%OLD %
+%OLD \dimen18 \dimen12
+%OLD \multiply \dimen18 \dimen 6
+%OLD \dimen20 \dimen14
+%OLD \multiply \dimen20 \dimen 4
+%OLD \advance \dimen18 -\dimen20
+%OLD \dimen20 \dimen 4
+%OLD \multiply \dimen20 \dimen10
+%OLD \advance \dimen18 \dimen20
+%OLD \dimen20 \dimen 6
+%OLD \multiply \dimen20 \dimen 8
+%OLD \advance \dimen18 -\dimen20
+%OLD %
+%OLD \multiply \dimen12 -\dimen 2
+%OLD \multiply \dimen14 \dimen 0
+%OLD \advance \dimen12 \dimen14
+%OLD \dimen20 \dimen 2
+%OLD \multiply \dimen20 \dimen 8
+%OLD \advance \dimen12 \dimen20
+%OLD \dimen20 \dimen 0
+%OLD \multiply \dimen20 \dimen10
+%OLD \advance \dimen12 -\dimen20
+%OLD %
+%OLD \ifdim\dimen16=\onepoint \else
+%OLD \ifdim\dimen16>\MPconcatfactor \onepoint \relax
+%OLD \doMPreducedimen16
+%OLD \divide \dimen18 \dimen16 \doMPexpanddimen18
+%OLD \divide \dimen12 \dimen16 \doMPexpanddimen12
+%OLD \else
+%OLD \divide \dimen18 \dimen16 \doMPexpanddimen18 \doMPexpanddimen18
+%OLD \divide \dimen12 \dimen16 \doMPexpanddimen12 \doMPexpanddimen12
+%OLD \fi
+%OLD \fi
+%OLD %
+%OLD \divide\dimen18 \MPfactor
+%OLD \divide\dimen12 \MPfactor
+%OLD %
+%OLD \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+%OLD \edef#4{\withoutpt\the\dimen12}} % p_y^\prime
+
+%D DHL: Ideally, $r_x$, $r_y$, $s_x$, $s_y$ should be in macros, not
+%D dimensions (they are scalar quantities after all, not lengths). I
+%D suppose the authors decided to do calculations with integer
+%D arithmetic instead of using real factors because it's faster.
+%D However, the actual macros test slower, possibly because I've
+%D omitted three nested loops. In my test files, my approach is more
+%D accurate. It is also far simpler and overflow does not seem to be a
+%D significant concern. The scale factors written by Metapost are (?)
+%D always $<=1$ (it scales coordinates internally) and coordinates are
+%D always likely to be less than \type {\maxdimen}.
+%D
+%D If this should ever cause problems, the scale factors can be reduced.
+
+% \def\doMPconcat#1#2#3#4%
+% {\dimen12=#1pt % p_x % #1\onepoint
+% \dimen14=#3pt % p_y % #3\onepoint
+% \advance\dimen12 -\dimen8 % p_x - t_x
+% \advance\dimen14 -\dimen10 % p_y - t_y
+% \dimen18=\withoutpt\the\dimen6 \dimen12 % s_y(p_x - t_x)
+% \advance\dimen18 -\withoutpt\the\dimen4 \dimen14 % - r_y(p_y-t_y)
+% \dimen14=\withoutpt\the\dimen0 \dimen14 % s_x(p_y-t_y)
+% \advance\dimen14 -\withoutpt\the\dimen2 \dimen12 % - r_x(p_x-t_x)
+% % \MPscratchDim contains precomputed 1/D:
+% \dimen18=\withoutpt\the\MPscratchDim \dimen18
+% \dimen14=\withoutpt\the\MPscratchDim \dimen14
+% \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+% \edef#4{\withoutpt\the\dimen14}} % p_y^\prime
+
+\def\doMPconcat#1#2#3#4%
+ {\dimen12=#1pt % p_x % #1\onepoint
+ \dimen14=#3pt % p_y % #3\onepoint
+ \advance\dimen12 -\dimen8 % p_x - t_x
+ \advance\dimen14 -\dimen10 % p_y - t_y
+ \dimen18=\withoutpt\the\dimen6 \dimen12 % s_y(p_x - t_x)
+ \advance\dimen18 -\withoutpt\the\dimen4 \dimen14 % - r_y(p_y-t_y)
+ \dimen14=\withoutpt\the\dimen0 \dimen14 % s_x(p_y-t_y)
+ \advance\dimen14 -\withoutpt\the\dimen2 \dimen12 % - r_x(p_x-t_x)
+ % \MPreciprocal contains precomputed 1/D:
+ \dimen18=\MPreciprocal\dimen18
+ \dimen14=\MPreciprocal\dimen14
+ \edef#2{\withoutpt\the\dimen18}% % p_x^\prime
+ \edef#4{\withoutpt\the\dimen14}} % p_y^\prime
+
+% faster but not that often used
+%
+% \def\doMPconcat#1#2#3#4%
+% {\dimen12\dimexpr#1\points-\dimen 8\relax % p_x-t_x
+% \dimen14\dimexpr#3\points-\dimen10\relax % p_y-t_y
+% \dimen18\dimexpr\withoutpt\the\dimen6\dimen12-\withoutpt\the\dimen4\dimen14\relax % s_y(p_x-t_x)-r_y(p_y-t_y)
+% \dimen14\dimexpr\withoutpt\the\dimen0\dimen14-\withoutpt\the\dimen2\dimen12\relax % s_x(p_y-t_y)-r_x(p_x-t_x)
+% \edef#2{\withoutpt\the\dimexpr\MPreciprocal\dimen18\relax}% % p_x^\prime
+% \edef#4{\withoutpt\the\dimexpr\MPreciprocal\dimen14\relax}} % p_y^\prime
+
+%D One reason for Daniel to write this patch was that at small sizes
+%D the accuracy was less than optimal. Here is a test that demonstrates
+%D that his alternative is pretty good:
+%D
+%D \startlinecorrection
+%D \startMPcode
+%D for i = 5cm,1cm,5mm,1mm,.5mm,.1mm,.01mm :
+%D draw fullcircle scaled i withpen pencircle xscaled (i/10) yscaled (i/20) rotated 45 ;
+%D endfor ;
+%D \stopMPcode
+%D \stoplinecorrection
+
+%D The following explanation of the conversion process was
+%D posted to the \PDFTEX\ mailing list by Tanmoy. The original
+%D macro was part of a set of macro's that included sinus and
+%D cosinus calculations as well as scaling and translating. The
+%D \METAPOST\ to \PDF\ conversion however only needs
+%D transformation.
+
+%M \start \switchtobodyfont [ss]
+
+%D Given a point $(U_x, U_y)$ in user coordinates, the business
+%D of \POSTSCRIPT\ is to convert it to device space. Let us say
+%D that the device space coordinates are $(D_x, D_y)$. Then, in
+%D \POSTSCRIPT\ $(D_x, D_y)$ can be written in terms of
+%D $(U_x, U_y)$ in matrix notation, either as
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{D_x&D_y&1\cr} = \pmatrix{U_x&U_y&1\cr}
+%D \pmatrix{s_x&r_x&0\cr
+%D r_y&s_y&0\cr
+%D t_x&t_y&1\cr}
+%D \stopformula
+%D
+%D or
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{D_x\cr D_y\cr 1} = \pmatrix{s_x&r_y&t_x\cr
+%D r_x&s_y&t_y\cr
+%D 0 &0 &1 \cr}
+%D \pmatrix{U_x\cr
+%D U_y\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D both of which is a shorthand for the same set of equations:
+%D
+%D \placeformula
+%D \startformula
+%D D_x = s_x U_x + r_y U_y + t_x
+%D \stopformula
+%D
+%D \placeformula
+%D \startformula
+%D D_y = r_x U_x + s_y U_y + t_y
+%D \stopformula
+%D
+%D which define what is called an `affine transformation'.
+%D
+%D \POSTSCRIPT\ represents the `transformation matrix' as a
+%D six element matrix instead of a $3\times 3$ array because
+%D three of the elements are always~0, 0 and~1. Thus the above
+%D transformation is written in postscript as $[s_x\, r_x\,
+%D r_y\, s_y\, t_x\, t_y]$. However, when doing any
+%D calculations, it is useful to go back to the original
+%D matrix notation (whichever: I will use the second) and
+%D continue from there.
+%D
+%D As an example, if the current transformation matrix is
+%D $[s_x\, r_x\, r_y\, s_y\, t_x\, t_y]$ and you say \typ{[a b
+%D c d e f] concat}, this means:
+%D
+%D \startnarrower
+%D Take the user space coordinates and transform them to an
+%D intermediate set of coordinates using array $[a\, b\, c\, d\,
+%D e\, f]$ as the transformation matrix.
+%D
+%D Take the intermediate set of coordinates and change them to
+%D device coordinates using array $[s_x\, r_x\, r_y\, s_y\, t_x\, t_y]$
+%D as the transformation matrix.
+%D \stopnarrower
+%D
+%D Well, what is the net effect? In matrix notation, it is
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{I_x\cr I_y\cr 1\cr} = \pmatrix{a&c&e\cr
+%D b&d&f\cr
+%D 0&0&1\cr}
+%D \pmatrix{U_x\cr
+%D U_y\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{D_y\cr D_y\cr 1\cr} = \pmatrix{s_x&r_y&t_x\cr
+%D r_x&s_y&t_y\cr
+%D 0 &0 &1 \cr}
+%D \pmatrix{I_x\cr
+%D I_y\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D where $(I_x, I_y)$ is the intermediate coordinate.
+%D
+%D Now, the beauty of the matrix notation is that when there is
+%D a chain of such matrix equations, one can always compose
+%D them into one matrix equation using the standard matrix
+%D composition law. The composite matrix from two matrices can
+%D be derived very easily: the element in the $i$\high{th}
+%D horizontal row and $j$\high{th} vertical column is
+%D calculated by`multiplying' the $i$\high{th} row of the first
+%D matrix and the $j$\high{th} column of the second matrix (and
+%D summing over the elements). Thus, in the above:
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{D_x\cr D_y\cr 1} = \pmatrix{s_x^\prime&r_y^\prime&t_x^\prime\cr
+%D r_x^\prime&s_y^\prime&t_y^\prime\cr
+%D 0 &0 &0 \cr}
+%D \pmatrix{U_x\cr
+%D U_y\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D with
+%D
+%D \placeformula
+%D \startformula
+%D \eqalign
+%D {s_x^\prime & = s_x a + r_y b \cr
+%D r_x^\prime & = r_x a + s_y b \cr
+%D r_y^\prime & = s_x c + r_y d \cr
+%D s_y^\prime & = r_x c + s_y d \cr
+%D t_x^\prime & = s_x e + r_y f + t_x \cr
+%D t_y^\prime & = r_x e + s_y f + t_y \cr}
+%D \stopformula
+
+%D In fact, the same rule is true not only when one is going
+%D from user coordinates to device coordinates, but whenever
+%D one is composing two `transformations' together
+%D (transformations are `associative'). Note that the formula
+%D is not symmetric: you have to keep track of which
+%D transformation existed before (i.e.\ the equivalent of
+%D $[s_x\, r_x\, r_y\, s_y\, t_x\, t_y]$) and which was
+%D specified later (i.e.\ the equivalent of $[a\, b\, c\, d\,
+%D e\, f]$). Note also that the language can be rather
+%D confusing: the one specified later `acts earlier',
+%D converting the user space coordinates to intermediate
+%D coordinates, which are then acted upon by the pre||existing
+%D transformation. The important point is that order of
+%D transformation matrices cannot be flipped (transformations
+%D are not `commutative').
+%D
+%D Now what does it mean to move a transformation matrix
+%D before a drawing? What it means is that given a point
+%D $(P_x, P_y)$ we need a different set of coordinates
+%D $(P_x^\prime, P_y^\prime)$ such that if the transformation
+%D acts on $(P_x^\prime, P_y^\prime)$, they produce $(P_x,
+%D P_y)$. That is we need to solve the set of equations:
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{P_x\cr P_y\cr 1\cr} = \pmatrix{s_x&r_y&t_x\cr
+%D r_x&s_y&t_y\cr
+%D 0 &0 &1 \cr}
+%D \pmatrix{P_x^\prime\cr
+%D P_y^\prime\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D Again matrix notation comes in handy (i.e. someone has
+%D already solved the problem for us): we need the inverse
+%D transformation matrix. The inverse transformation matrix can
+%D be calculated very easily:
+%D
+%D \placeformula
+%D \startformula
+%D \pmatrix{P_x^\prime\cr P_y^\prime\cr 1\cr} =
+%D \pmatrix{s_x^\prime&r_y^\prime&t_x^\prime\cr
+%D r_x^\prime&s_y^\prime&t_y^\prime\cr
+%D 0 &0 &1 \cr}
+%D \pmatrix{P_x\cr
+%D P_y\cr
+%D 1 \cr}
+%D \stopformula
+%D
+%D where, the inverse transformation matrix is given by
+%D
+%D \placeformula
+%D \startformula
+%D \eqalign
+%D {D & = s_x s_y - r_x r_y \cr
+%D s_x^\prime & = s_y / D \cr
+%D s_y^\prime & = s_x / D \cr
+%D r_x^\prime & = - r_x / D \cr
+%D r_y^\prime & = - r_y / D \cr
+%D t_x^\prime & = ( - s_y t_x + r_y t_y ) / D \cr
+%D t_y^\prime & = ( r_x t_x - s_x t_y ) / D \cr}
+%D \stopformula
+%D
+%D And you can see that when expanded out, this does
+%D give the formulas:
+%D
+%D \placeformula
+%D \startformula
+%D P_x^\prime = { { s_y(p_x-t_x) + r_y(t_y-p_y) } \over
+%D { s_x s_y-r_x r_y } }
+%D \stopformula
+%D
+%D \placeformula
+%D \startformula
+%D P_y^\prime = { { s_x(p_y-t_y) + r_x(t_x-p_x) } \over
+%D { s_x*s_y-r_x*r_y } }
+%D \stopformula
+%D
+%D The code works by representing a real number by converting
+%D it to a dimension to be put into a \DIMENSION\ register: 2.3 would
+%D be represented as 2.3pt for example. In this scheme,
+%D multiplying two numbers involves multiplying the \DIMENSION\
+%D registers and dividing by 65536. Accuracy demands that the
+%D division be done as late as possible, but overflow
+%D considerations need early division.
+%D
+%D Division involves dividing the two \DIMENSION\ registers and
+%D multiplying the result by 65536. Again, accuracy would
+%D demand that the numerator be multiplied (and|/|or the
+%D denominator divided) early: but that can lead to overflow
+%D which needs to be avoided.
+%D
+%D If nothing is known about the numbers to start with (in
+%D concat), I have chosen to divide the 65536 as a 256 in each
+%D operand. However, in the series calculating the sine and
+%D cosine, I know that the terms are small (because I never
+%D have an angle greater than 45 degrees), so I chose to
+%D apportion the factor in a different way.
+
+%M \stop
+
+%D The path is output using the values saved on the stack. If
+%D needed, all coordinates are recalculated.
+
+\def\finishMPpath
+ {\PDFcode{\ifcase\finiMPpath W n\or S\or f\or B\fi}}
+
+\def\processMPpath
+ {\checkMPpath
+ \ifcase\nofMPsegments\else
+ \flushMPpath
+ \closeMPpath
+ \finishMPpath
+ \fi
+ \let\handleMPsequence\dohandleMPsequence
+ \resetMPstack
+ \nofMPsegments\zerocount
+ \handleMPsequence}
+
+%D The following \METAPOST\ code is quite valid but, when
+%D processed and converted to \PDF, will make a file
+%D unprintable on a Hewlett Packard printer (from Acrobat
+%D $v<=5$). Who is to blame, the driver of the OS layer in
+%D between, is hard to determine, so we add an additional
+%D check.
+%D
+%D \starttyping
+%D clip currentpicture to origin -- cycle ;
+%D setbounds currentpicture to fullsquare scaled 5cm ;
+%D \stoptyping
+
+\def\checkMPpath
+ {\ifcase\finiMPpath
+ \ifnum\nofMPsegments<3 % n is one ahead
+ \message{omitting zero clip path}%
+ \nofMPsegments\zerocount
+ \fi
+ \fi}
+
+%D In \PDF\ the \type{cm} operator must precede the path
+%D specification. We therefore can output the \type{cm} at
+%D the moment we encounter it.
+
+\def\handleMPpathconcat
+ {\presetMPconcat
+ \PDFcode{\gMPs1 \gMPs2 \gMPs3 \gMPs4 \gMPs5 \gMPs6 cm}%
+ \resetMPstack}
+
+\def\handleMPpathscale
+ {\presetMPscale
+ \PDFcode{\gMPs1 0 0 \gMPs2 0 0 cm}%
+ \resetMPstack}
+
+%D This macro interprets the path and saves it as compact as
+%D possible.
+
+\def\dohandleMPpath#1%
+ {\ifcase\lccode`#1\relax
+ \@EA\dohandleMPpathA
+ \else
+ \@EA\dohandleMPpathB
+ \fi#1}
+
+%\def\dohandleMPpathA#1 %
+% {\setMPargument{#1}%
+% \handleMPsequence}
+
+\let\dohandleMPpathA\setMPsequence
+
+\def\dohandleMPpathB#1 %
+ {\def\somestring{#1}%
+ \ifx\somestring\PSlineto
+ \setMPkeyword0
+ \else\ifx\somestring\PScurveto
+ \setMPkeyword1
+ \else\ifx\somestring\PSrlineto
+ \setMPkeyword2
+ \else\ifx\somestring\PSmoveto
+ \setMPkeyword3
+ \else\ifx\somestring\PSclip
+ % \chardef\finiMPpath0 % already
+ \let\handleMPsequence\processMPpath
+ \else\ifx\somestring\PSgsave
+ \chardef\finiMPpath3
+ \else\ifx\somestring\PSgrestore
+ \else\ifx\somestring\PSfill
+ \ifcase\finiMPpath
+ \chardef\finiMPpath2
+ \let\handleMPsequence\processMPpath
+ \fi
+ \else\ifx\somestring\PSstroke
+ \ifcase\finiMPpath
+ \chardef\finiMPpath1
+ \fi
+ \let\handleMPsequence\processMPpath
+ \else\ifx\somestring\PSclosepath
+ \def\closeMPpath{\PDFcode{h}}%
+ \else\ifx\somestring\PSconcat
+ \cleanupMPconcat
+ \let\flushMPpath\flushconcatMPpath
+ \handleMPpathconcat
+ \else\ifx\somestring\PSscale
+ \let\flushMPpath\flushconcatMPpath
+ \handleMPpathscale
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \handleMPsequence}
+
+%D The main conversion command is:
+%D
+%D \starttyping
+%D \convertMPtoPDF {filename} {x scale} {y scale}
+%D \stoptyping
+%D
+%D The dimensions are derived from the bounding box. So we
+%D only have to say:
+%D
+%D \starttyping
+%D \convertMPtoPDF{mp-pra-1.eps}{1}{1}
+%D \convertMPtoPDF{mp-pra-1.eps}{.5}{.5}
+%D \stoptyping
+
+%D \macros
+%D {makeMPintoPDFobject,lastPDFMPobject}
+%D
+%D For experts there are a few more options. When attributes
+%D are to be added, the code must be embedded in an object
+%D accompanied with the appropriate directives. One can
+%D influence this process with \type {\makeMPintoPDFobject}.
+%D
+%D This option defaults to~0, because \CONTEXT\ takes care
+%D of objects at another level, which saves some bytes.
+%D
+%D \starttabulate[|l|l|p|]
+%D \NC 0 \NC never \NC don't use an object \NC\NR
+%D \NC 1 \NC always \NC always use an object \NC\NR
+%D \NC 2 \NC optional \NC use object when needed \NC\NR
+%D \stoptabulate
+%D
+%D The last object number used is avaliable in the macro
+%D \type {\lastPDFMPobject}.
+
+\ifx\makeMPintoPDFobject\undefined \chardef\makeMPintoPDFobject=0 \fi
+
+\def\lastPDFMPobject{0}
+
+%D The additional code needed can be made available in the
+%D (global) macro \type {\currentPDFresources}.
+
+\let\currentPDFresources\empty
+
+\newtoks\everyMPtoPDFconversion
+
+\def\convertMPtoPDF % #1#2#3%
+ {\bgroup
+ \ifx\pdfdecimaldigits\undefined\else \pdfdecimaldigits=5 \fi % new
+ \setbox\scratchbox\vbox\bgroup
+ \xdef\MPheight{\zeropoint}%
+ \xdef\MPwidth {\zeropoint}%
+ \forgetall
+ \offinterlineskip
+ \startMPresources
+ \doprocessMPtoPDFfile} %
+
+%D The next one is kind of private and probably will become obsolete):
+
+\def\processMPtoPDFfile % file xscale yscale
+ {\bgroup
+ \let\finishMPgraphic\egroup
+ \doprocessMPtoPDFfile}
+
+\def\doprocessMPtoPDFfile#1#2#3% file xscale yscale
+ {% the following line is needed for latex where onepoint is not
+ % onepoint but a number (maxdimen); some day i'll make a latex
+ % variant of this file so that i no longer have to deal with such
+ % issues; then i'll also speed up this module using a few context
+ % tricks
+ %
+ \let\onepoint\onerealpoint
+ %
+ \setMPspecials
+ \the\everyMPtoPDFconversion
+ \catcode`\^^M=\@@endofline
+ \startMPscanning
+ \let\do\empty
+ \xdef\MPxscale{#2}%
+ \xdef\MPyscale{#3}%
+ \xdef\MPxoffset{0}%
+ \xdef\MPyoffset{0}%
+ \xdef\MPyshift{\zeropoint}%
+ \donefalse
+ \let\handleMPsequence\dohandleMPsequence
+ \message{[MP to PDF]}% was: [MP to PDF #1] but there is a (#1) anyway
+ \input#1\relax}
+
+% strange rounding/clip in pdftex/viewer
+%
+% \def\finishMPgraphic
+% {\stopMPresources
+% \egroup
+% \ifx\pdftexversion\undefined\else\ifnum\pdftexversion<14 % for the moment
+% \chardef\makeMPintoPDFobject=0
+% \fi\fi
+% \ifcase\makeMPintoPDFobject\or\or\ifx\currentPDFresources\empty\else
+% \chardef\makeMPintoPDFobject=1
+% \fi\fi
+% \setbox\scratchbox=\vbox
+% {\forgetall
+% \hbox
+% {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space \MPxoffset\space \MPyoffset\space cm}%
+% \lower\MPyshift\box\scratchbox % unscaled shift
+% \PDFcode{Q}}}%
+% \ht\scratchbox\MPheight
+% \wd\scratchbox\MPwidth
+% \dp\scratchbox\zeropoint
+% \ifcase\makeMPintoPDFobject
+% \box\scratchbox
+% \or
+% \immediate\pdfxform resources{\currentPDFresources}\scratchbox
+% \xdef\lastPDFMPobject{\the\pdflastxform}%
+% \pdfrefxform\lastPDFMPobject
+% \global\let\currentPDFresources\empty
+% \else
+% \box\scratchbox
+% \fi
+% \egroup}
+%
+% funny clip in viewer
+%
+% \setbox\scratchbox=\vbox
+% {\forgetall
+% \dimen0=\MPllx bp
+% \dimen2=\MPlly bp
+% \setbox\scratchbox=\hbox{\hskip-\dimen0\raise-\dimen2\box\scratchbox}%
+% \ht\scratchbox=\zeropoint
+% \dp\scratchbox=\zeropoint
+% \wd\scratchbox=\zeropoint
+% \hbox
+% {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space 0 0 cm}%
+% \lower\MPshift\box\scratchbox
+% \PDFcode{Q}}}%
+
+% \let\PDFMPformoffset\zeropoint
+
+\def\PDFMPformoffset
+ {\ifx\objectoffset\undefined\zeropoint\else\objectoffset\fi}
+
+\def\finishMPgraphic
+ {\stopMPresources
+ \egroup
+ \setbox\scratchbox\vbox
+ {\forgetall
+ \hbox
+ {\PDFcode{q \MPxscale\space 0 0 \MPyscale\space \MPxoffset\space \MPyoffset\space cm}%
+ \lower\MPyshift\box\scratchbox % unscaled shift
+ \PDFcode{Q}}}%
+ \ht\scratchbox\MPheight
+ \wd\scratchbox\MPwidth
+ \dp\scratchbox\zeropoint\relax
+ \dopackageMPgraphic\scratchbox
+ \egroup
+ \endinput}
+
+%D Alternative for \PDFTEX. We cannot come up with something more contexy
+%D because this module is also used in \LATEX.
+
+\def\dopackageMPgraphic#1% #1 = boxregister
+ {%\ifx\pdfxform\undefined
+ % \chardef\makeMPintoPDFobject\zerocount % no pdftex at all
+ %\else\ifx\pdftexversion\undefined
+ % \chardef\makeMPintoPDFobject\zerocount % no pdftex at all
+ %\else\ifnum\pdftexversion<14
+ % \chardef\makeMPintoPDFobject\zerocount % no resource support
+ %\else
+ % % keep the default value
+ %\fi\fi\fi
+ \ifcase\makeMPintoPDFobject\or\or\ifx\currentPDFresources\empty\else
+ % an existing value of 2 signals object support (set elsewhere)
+ \chardef\makeMPintoPDFobject\plusone
+ \fi\fi
+ \ifcase\makeMPintoPDFobject
+ \box#1%
+ \or
+ \scratchdimen\PDFMPformoffset\relax
+ \ifdim\scratchdimen>\zeropoint % compensate for error
+ \setbox#1\vbox spread 2\scratchdimen
+ {\forgetall\vss\hbox spread 2\scratchdimen{\hss\box#1\hss}\vss}%
+ \fi
+ \setMPPDFobject{\currentPDFresources}{#1}%
+ \ifdim\scratchdimen>\zeropoint % compensate for error
+ \vbox to \MPheight
+ {\forgetall\vss\hbox to \MPwidth{\hss\getMPPDFobject\hss}\vss}%
+ \else
+ \getMPPDFobject
+ \fi
+ \global\let\currentPDFresources\empty
+ \else
+ \box#1%
+ \fi}
+
+\def\setMPPDFobject#1#2% resources boxnumber
+ {\ifx\pdfxform\undefined
+ \def\getMPPDFobject{\box#2}%
+ \else\ifx\pdftexversion\undefined
+ \def\getMPPDFobject{\box#2}%
+ \else\ifnum\pdftexversion<14
+ \def\getMPPDFobject{\box#2}%
+ \else
+ \immediate\pdfxform resources{#1}#2%
+ \edef\getMPPDFobject{\noexpand\pdfrefxform\the\pdflastxform}%
+ \fi\fi\fi}
+
+\let\getMPPDFobject\relax
+
+%D \macros
+%D {deleteMPgraphic,
+%D startMPresources,
+%D stopMPresources}
+%D
+%D Here are a few hooks for \CONTEXT\ specific things.
+
+\ifx\deleteMPgraphic\undefined
+ \def\deleteMPgraphic#1{}
+\fi
+
+\ifx\startMPresources\undefined
+ \let\startMPresources\relax
+ \let\stopMPresources\relax
+\fi
+
+%D \macros
+%D {twodigitMPoutput}
+%D
+%D We can limit the precision to two digits after the comma
+%D by saying:
+%D
+%D \starttyping
+%D \twodigitMPoutput
+%D \stoptyping
+%D
+%D This option only works in \CONTEXT\ combined with \ETEX.
+
+\def\twodigitMPoutput
+ {\let\!MP \twodigitrounding
+ \def\!MPgMPs##1{\twodigitrounding{\gMPs##1}}%
+ \def\!MPgMPa##1{\twodigitrounding{\gMPa##1}}}
+
+\let\!MP \empty
+\let\!MPgMPa\gMPa
+\let\!MPgMPs\gMPs
+
+%D This kind of conversion is possible because \METAPOST\
+%D does all the calculations. Converting other \POSTSCRIPT\
+%D files would drive both me and \TEX\ crazy.
+
+\ifx\undefined\StopLatexHack \else \StopLatexHack \fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-ran.tex b/Master/texmf-dist/tex/context/base/supp-ran.tex
new file mode 100644
index 00000000000..1266c0e0f34
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-ran.tex
@@ -0,0 +1,173 @@
+%D \module
+%D [ file=supp-ran,
+%D version=1998.01.21,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Random Number Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Third Party Macros / Random Number Generation}
+
+%D \macros
+%D {getrandomcount, getrandomdimen,
+%D getrandomfloat, getrandomnumber,
+%D setrandomseed, getrandomseed}
+%D
+%D This module load Donald Arseneau's generic file
+%D \type{random.tex}. A small shell is needed because we
+%D redefine some \TEX\ primitives. We also use different names
+%D for the two generators and add an extra one.
+%D
+%D \starttyping
+%D \getrandomcount \countregister {minimum} {maximum}
+%D \getrandomdimen \dimenregister {minimum} {maximum}
+%D \getrandomnumber \macroname {minimum} {maximum}
+%D \getrandomfloat \macroname {minimum} {maximum}
+%D \stoptyping
+%D
+%D Of course the file \type{random.tex} needs to be present.
+%D To prevent name clashes, the \CONTEXT\ distribution
+%D contains a copy in \type {thrd-ran.tex}.
+%D
+%D The randomseed can be set by:
+%D
+%D \starttyping
+%d \setrandomseed{number>0}
+%D \stoptyping
+%D
+%D and get by:
+%D
+%D \starttyping
+%D \getrandomseed\randomseed
+%D \stoptyping
+
+\ifx\nextrandom\undefined
+
+ \readfile{random.tex}
+ {\writestatus{loading}{Donald Arseneau's 'random.tex' (found)}}
+ {\writestatus{loading}{Donald Arseneau's 'random.tex' (not found)}}
+
+ % avoid scratch dimens 0 and 2 (already recoded in third-ran)
+ %
+ % \def\setrandim#1#2#3% dimen register, minimum length, maximum length
+ % {\scratchdimen#2\edef\!!stringa{\number\scratchdimen}%
+ % \scratchdimen#3\edef\!!stringb{\number\scratchdimen}%
+ % \setrannum\ranval\!!stringa\!!stringb
+ % #1\ranval\s!sp\relax}
+
+\fi
+
+\ifx\nextrandom\undefined
+
+ \writestatus{loading}{using fake randomizer}
+
+ \newcount\randomi
+
+ \def\setrandim#1#2#3{\scratchdimen #2\relax#1\scratchdimen }
+ \def\setrannum#1#2#3{\scratchcounter#2\relax#1\scratchcounter}
+
+ \let\nextrandom\relax
+
+% \def\getrandomdimen #1#2#3{\scratchdimen #2\relax#1\scratchdimen }
+% \def\getrandomcount #1#2#3{\scratchcounter#2\relax#1\scratchcounter}
+% \def\getrandomnumber#1#2#3{\edef#1{0}}
+% \def\getrandomfloat #1#2#3{\edef#1{0}}
+% \unexpanded\def\setrandomseed #1{}
+% \unexpanded\def\getrandomseed #1{\edef#1{0}}
+
+% \chardef\randomseedfrozen\zerocount
+
+% \def\freezerandomseed {\global\chardef\randomseedfrozen\plusone }
+% \def\defrostrandomseed{\global\chardef\randomseedfrozen\zerocount}
+
+\fi
+
+\ifx\nextrandom\undefined \endinput \fi
+
+\ifx\normaluniformdeviate\undefined
+
+ \let\verynormalnextrandom\nextrandom
+
+ \def\normalnextrandom
+ {\bgroup
+ \let\time \normaltime
+ \let\day \normalday
+ \let\month\normalmonth
+ \let\year \normalyear
+ \verynormalnextrandom
+ \egroup}
+
+\else
+
+ % Yet untested.
+
+ \writestatus{loading}{using tex's built in randomizer (overloading macro)}
+
+ % For the meaning of the magic number, see \type {thrd-ran.tex}.
+
+ % \def\normalnextrandom
+ % {\setrandomseed\randomi
+ % \global\randomi\normaluniformdeviate2147483647\relax}
+
+ % Taco suggested to use the following alternative because \type
+ % {\normaluniformdeviate} can return a zero (as expected) while
+ % Donalds's alternative has a minimum of~1.
+
+ \beginTEX
+ \def\nextrandom
+ {\normalsetrandomseed\randomi
+ \global\randomi\normaluniformdeviate2147483646%
+ \global\advance\randomi\plusone}
+ \endTEX
+
+ \beginETEX \numexpr
+ \def\nextrandom
+ {\normalsetrandomseed\randomi
+ \global\randomi\numexpr\normaluniformdeviate2147483646+1\relax}
+ \endETEX
+
+ \let\normalnextrandom\nextrandom
+
+\fi
+
+\def\nextrandom
+ {\bgroup
+ \normalnextrandom
+ \gdef\nextrandom{\ifcase\randomseedfrozen\normalnextrandom\fi}%
+ \egroup}
+
+\chardef\randomseedfrozen\zerocount
+
+\def\freezerandomseed
+ {\ifcase\randomseedfrozen
+ \nextrandom \global\chardef\randomseedfrozen\plusone
+ \fi}
+
+\def\defrostrandomseed
+ {\ifcase\randomseedfrozen\else
+ \global\chardef\randomseedfrozen\zerocount \nextrandom
+ \fi}
+
+\let\getrandomcount\setrannum
+\let\getrandomdimen\setrandim
+
+\def\getrandomnumber#1#2#3%
+ {\getrandomcount\scratchcounter{#2}{#3}%
+ \edef#1{\the\scratchcounter}}
+
+\def\getrandomfloat#1#2#3%
+ {\getrandomdimen\scratchdimen{#2\points}{#3\points}%
+ \edef#1{\withoutpt\the\scratchdimen}}
+
+\unexpanded \def\setrandomseed#1%
+ {\randomi#1\relax}
+
+\unexpanded \def\getrandomseed#1%
+ {\edef#1{\number\randomi}}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-spe.tex b/Master/texmf-dist/tex/context/base/supp-spe.tex
new file mode 100644
index 00000000000..d84859b595d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-spe.tex
@@ -0,0 +1,164 @@
+%D \module
+%D [ file=supp-spe,
+%D version=1997.07.05,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Specials,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module implements some \type{\special} manipulation
+%D macros. I needed these when I implemented the code that
+%D handles the conversion of \TPIC\ specials to \PDF\ code.
+
+\ifx \undefined \writestatus \input supp-mis.tex \relax \fi
+\ifx \undefined \redefinespecial \else \expandafter \endinput \fi
+
+\writestatus{loading}{Context Support Macros / Specials}
+
+\unprotect
+
+%D When interpreting specials we need to do some basic scanning.
+%D For the moment we distinguish between three cases. We need
+%D
+%D \starttyping
+%D \special{tag: arguments}
+%D \special{tag arguments}
+%D \special{tag}
+%D \stoptyping
+%D
+%D We cannot be sure that the first case isn't
+%D
+%D \starttyping
+%D \special{tag:arguments}
+%D \stoptyping
+%D
+%D So we have to take care of that one too.
+
+%D \macros
+%D {redefinespecial}
+%D
+%D Specials that are to be interpreted are defined with
+%D commands like:
+%D
+%D \startbuffer[tmp-1]
+%D \redefinespecial a: \using#1\endspecial%
+%D {let's execute special 'a:' using '#1'}
+%D
+%D \redefinespecial a \using#1\endspecial%
+%D {let's execute special 'a' using '#1'}
+%D
+%D \redefinespecial a \using#1\endspecial%
+%D {let's execute special 'a' using nothing}
+%D \stopbuffer
+%D
+%D \typebuffer[tmp-1]
+%D
+%D The first two always take an argument, the last one not.
+%D The definition of this redefinition macro is not that
+%D complex. The names are internally tagged with \type{\@rds@}
+%D which saves both time and space.
+
+\def\@rds@{@rds@}
+
+\def\redefinespecial #1 {\setvalue{\@rds@#1}}
+
+%D \macros
+%D {mimmickspecials}
+%D
+%D Mimmicking specials is activated by saying:
+%D
+%D \starttyping
+%D \mimmickspecials
+%D \stoptyping
+%D
+%D This commands redefines the \PLAIN\ \TEX\ primitive
+%D \type{\special}.
+
+\def\mimmickspecials
+ {\let\special\domimmickspecial}
+
+%D The special mimmicking macro first looks if it can find an
+%D colon terminated tag, next it searches for a tag that end
+%D with a space. If both cannot find, the tag itself is treated
+%D without argument.
+
+\def\domimmickspecial#1%
+ {\domimmickcolonspecial#1:\relax/:\relax/\end}
+
+\def\domimmickcolonspecial#1:#2#3:\relax/#4\end
+ {\ifx#2\relax
+ \domimmickspacespecial#1 \relax/ \relax/\end
+ \else
+ \dodomimmickspecial#1:\using#2#3\endspecial
+ \fi}
+
+\def\domimmickspacespecial#1 #2#3 \relax/#4\end
+ {\ifx#2\relax
+ \dodomimmickspecial#1\using\endspecial
+ \else
+ \dodomimmickspecial#1\using#2#3\endspecial
+ \fi}
+
+\def\dodomimmickspecial#1\using#2\endspecial
+ {\expandafter\ifx\csname\@rds@#1\endcsname\relax % \doifdefinedelse
+ \defaultspecial{#1 #2}%
+ \else
+ %\message{[mimmick special #1 with #2]}%
+ \getvalue{\@rds@#1}\using#2\endspecial
+ \fi}
+
+%D Now let's show that things work the way we want, using the
+%D previous definitions of tag~a.
+%D
+%D \startbuffer[tmp-2]
+%D \mimmickspecials
+%D \special{a: 1 2 3 4 5}
+%D \special{a: 1 2 3 4 5}
+%D \special{a}
+%D \stopbuffer
+%D
+%D \typebuffer[tmp-2]
+%D
+%D Which results in:
+%D
+%D \startlines
+%D \getbuffer[tmp-1]
+%D \getbuffer[tmp-2]
+%D \stoplines
+
+%D \macros
+%D {mimmickspecial}
+%D
+%D When needed, one can call a mimmicked special directly by
+%D saying for instance:
+%D
+%D \starttyping
+%D \mimmickspecial a: \using...\endspecial
+%D \stoptyping
+%D
+%D This can be handy when specials have much in common.
+
+\def\mimmickspecial #1 {\getvalue{\@rds@#1}}
+
+%D \macros
+%D {normalspecial,defaultspecial}
+%D
+%D Unknown specials are passed to the default special handler.
+%D One can for instance ignore all further specials by saying
+%D \type{\normalspecial}:
+%D
+%D \starttyping
+%D \def\defaultspecial#1{}
+%D \stoptyping
+%D
+%D But here we default to idle.
+
+\let\normalspecial =\special
+\let\defaultspecial=\special
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-tpi.tex b/Master/texmf-dist/tex/context/base/supp-tpi.tex
new file mode 100644
index 00000000000..2feeeac188f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-tpi.tex
@@ -0,0 +1,349 @@
+%D \module
+%D [ file=supp-tpi,
+%D version=1997.07.05,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=\TPIC\ Conversion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This modules implements the conversion of graphic \TPIC\
+%D specials using \METAPOST.
+%D
+%D We reimplement the \TPIC\ specials using the special
+%D mimmicking mechanism implemented in the support module
+%D \type{supp-spe} as well as the \METAPOST\ run||time support
+%D implemented in \type{supp-mps}.
+
+\ifx\undefined\writestatus \input supp-mis \relax \fi
+\ifx\undefined\mimmickspecials \input supp-spe \relax \fi
+\ifx\undefined\MPgraphicbox \input supp-mps \relax \fi
+\ifx\undefined\dogetEPSboundingbox \input supp-eps \relax \fi
+
+\writestatus{loading}{Context Support Macros / TPIC Conversion}
+
+%D Beware: we haven't activated both mechanism yet. This is
+%D to be done in the calling module.
+
+\unprotect
+
+%D When we want to mimmick \TPIC\ specials in \PDFTEX, we need
+%D to map its graphic primitives into \PDF\ ones. The main
+%D problem in doing so is that \PDF\ does not support b-splines
+%D directly and also does not offer us something to draw arcs.
+%D Of course all this scan be implemented in \TEX, and the
+%D first implementation of this module did so, but the results
+%D were not that satisfying. Not having used these specials
+%D before, I had for instance to find out that the \TPIC\
+%D specials were not that unambiguesly defined.
+%D
+%D Then, while discussing something else, Sebastian Ratz told
+%D me that the Web2c implementation that \PDFTEX\ is base upon,
+%D offers some rather discutable, but nevertheless handy
+%D feature:
+%D
+%D \starttyping
+%D \write18{execute program with arguments}
+%D \stoptyping
+%D
+%D Knowing this, I immediatelly decided to throw away the old
+%D conversion macros and use the marvelous \METAPOST, \TEX\
+%D related, drawing program to do the conversion in as high a
+%D quality as possible.
+%D
+%D implementation we're going to present here, not only uses
+%D for drawing purposes, but also uses the more efficient
+%D \METAPOST\ features to store the path.
+%D
+%D \in{Table}[tab:TPIC specials] lists the \TPIC\ specials as
+%D mentioned in the \LATEX\ Graphics Companion and the
+%D relevant part of the \DVIPS\ source. This list shows us
+%D that we have to store the path before we can use it, simply
+%D because we don't know in advance what actions to apply on
+%D it.
+%D
+%D \placetable[here][tab:TPIC specials]{The \TPIC\ special syntax.}
+%D \starttable[|||l|]
+%D \HL
+%D \NC \bf tag \NC \bf arguments \NC \bf meaning \NC\SR
+%D \HL
+%D \NC pn \NC $w$ \NC set linewidth \NC\FR
+%D \NC pa \NC $x$ $y$ \NC add point to path \NC\MR
+%D \NC fp \NC \NC draw/fill path \NC\MR
+%D \NC ip \NC \NC fill path \NC\MR
+%D \NC da \NC $l$ \NC draw dashed path \NC\MR
+%D \NC dt \NC $l$ \NC draw doted path \NC\MR
+%D \NC sp \NC $d$ \NC draw spline \NC\MR
+%D \NC ar \NC $x$ $y$ $r_x$ $r_y$ $b$ $e$ \NC draw (partial) arc \NC\MR
+%D \NC ia \NC $x$ $y$ $r_x$ $r_y$ $b$ $e$ \NC fill (partial) arc \NC\MR
+%D \NC sh \NC $s$ \NC fill next path \NC\LR
+%D \HL
+%D \stoptable
+
+%D The first problem we have to take care of is the fact that
+%D there is no decent begin or end of the drawing process
+%D defined. We can however be quite sure that writers of
+%D packages using these specials will put them into a box,
+%D simply because else this is the most common used way to
+%D treat something \TEX\ as as a whole, like:
+%D
+%D \starttyping
+%D \hbox{\special{}\special{}...}
+%D \stoptyping
+%D
+%D We just start a picture as soon as the first special is
+%D encountered, so this becomes:
+%D
+%D \starttyping
+%D \hbox{\openpicture\newspecial{}\newspecial{}...
+%D \stoptyping
+
+%D The first step in opening the picture is to start a group.
+%D Now we can savely use the egroup that closes the box to also
+%D end the picture.
+
+% BETER: check for context and include mp-tool.mp
+
+\def\startTPICspecials
+ {\bgroup
+ \let\startTPICspecials\relax
+ \aftergroup\stopTPICspecials
+ \resetMPdrawing
+ \startMPdrawing
+ input mp-tool.mp;
+ pair p[];
+ \stopMPdrawing}
+
+%D As soon as we begin a picture, we inhibit nesting by
+%D relaxing the start macro. The first \METAPOST\ action we
+%D take is declaring an array of pairs named $p$.
+
+%D Ending the picture is invoked by closing the current group.
+%D Because the \TPIC\ picture comes out mirrored, we have to
+%D reflect the current \METAPOST\ picture, stored in the system
+%D variable {\it currentpicture}, around the $x$-axis.
+
+\def\stopTPICspecials
+ {\startMPdrawing
+ currentpicture:=currentpicture reflectedabout ((0,0),(4095,0));
+ \stopMPdrawing
+ \MPdrawingdonetrue
+ \setbox\MPgraphicbox\hbox
+ {\getMPdrawing}%
+ \setbox\MPgraphicbox\hbox to \zeropoint
+ {\kern-\wd\MPgraphicbox
+ \vbox to \zeropoint{\box\MPgraphicbox\vss}\hss}%
+ \ht\MPgraphicbox\zeropoint
+ \wd\MPgraphicbox\zeropoint
+ \dp\MPgraphicbox\zeropoint
+ \box\MPgraphicbox
+ \egroup}
+
+%D Here the macro \type{\stopwritingMPgraphic} has to take care
+%D of executing and including the \METAPOST\ code.
+
+%D We need to keep track of the number of elements that form
+%D the path. This is needed because we don't know in advance
+%D how the points are to be connected.
+
+\newcount\TPICcounter
+
+%D When a path is draw, we can connect the points using a
+%D smooth curve of drawing straight lines. A closed path can be
+%D drawn or filled.
+
+\newif\ifTPICdraw
+\newif\ifTPICfill
+\newif\ifTPICcurve
+
+%D The \TPIC\ specials permit specifying the line and fill
+%D color as well as the linetype, which can be solid, dashed or
+%D dotted. We'll save those specifications as a \METAPOST\
+%D string, using:
+
+\let\TPIClinetype =\empty
+\let\TPICgrayscale=\empty
+
+%D The magic reduction factor $.07227$ is needed to map the
+%D \TPIC\ $1/1000$ of an inch to \POSTSCRIPT\ points. We cannot
+%D delegate this task to \METAPOST\ because this program does
+%D not accept values greater than 4095.
+
+%D I won't discuss all the specifics used in implementing
+%D the specials. The \METAPOST\ part is rather trivial. Many
+%D specials have much in common, so the amout of code is not
+%D that large.
+
+\redefinespecial pa \using#1 #2\endspecial
+ {\startTPICspecials
+ \bgroup
+ \global\advance\TPICcounter 1
+ \dimen0=#1pt \dimen0=.07227\dimen0
+ \dimen2=#2pt \dimen2=.07227\dimen2
+ \startMPdrawing
+ p[\the\TPICcounter]:=(\the\dimen0,\the\dimen2);
+ \stopMPdrawing
+ \egroup}
+
+\redefinespecial pn \using#1\endspecial
+ {\startTPICspecials
+ \bgroup
+ \dimen0=#1pt \dimen0=.07227\dimen0
+ \startMPdrawing
+ pickup pencircle scaled \the\dimen0;
+ \stopMPdrawing
+ \egroup}
+
+\redefinespecial sh \using#1\endspecial
+ {\startTPICspecials
+ \bgroup
+ \edef\g{#1}%
+ \edef\g{\ifx\g\empty.5\else#1\fi}%
+ \xdef\TPICgrayscale{withcolor (\g,\g,\g)}%
+ \egroup}
+
+\redefinespecial wh \using#1\endspecial
+ {\mimmickspecial sh \using0\endspecial}
+
+\redefinespecial bk \using#1\endspecial
+ {\mimmickspecial sh \using1\endspecial}
+
+\redefinespecial da \using#1\endspecial
+ {\startTPICspecials
+ \bgroup
+ \edef\l{#1}%
+ \ifx\l\empty
+ \gdef\TPIClinetype{dashed evenly}%
+ \else
+ \dimen0=#1in
+ \ifdim\dimen0<\!!zeropoint \dimen0=-\dimen0\fi
+ \edef\f{\the\dimen0 \space}%
+ \dimen0=.5\dimen0
+ \edef\h{\the\dimen0 \space}%
+ \xdef\TPIClinetype{dashed dashpattern (on \h off \f on \h)}%
+ \fi
+ \egroup
+ \TPICcurvefalse\TPICdrawtrue
+ \drawTPICpath\using#1\endspecial}
+
+\redefinespecial dt \using#1\endspecial
+ {\startTPICspecials
+ \bgroup
+ \edef\l{#1}%
+ \xdef\TPIClinetype{dashed withdots \ifx\l\empty\else scaled #1in\fi}%
+ \egroup
+ \TPICcurvefalse\TPICdrawtrue
+ \drawTPICpath\using#1\endspecial}
+
+\redefinespecial fp \using#1\endspecial
+ {\startTPICspecials
+ \TPICcurvefalse\TPICdrawtrue
+ \ifdim0#1pt=\!!zeropoint
+ \drawTPICpath\using#1\endspecial
+ \else\ifdim0#1pt<\!!zeropoint
+ \mimmickspecial dt\using#1\endspecial
+ \else
+ \mimmickspecial da\using#1\endspecial
+ \fi\fi}
+
+\redefinespecial sp
+ {\startTPICspecials\TPICdrawtrue\TPICcurvetrue\drawTPICpath}
+
+\redefinespecial ip
+ {\startTPICspecials\TPICfilltrue\drawTPICpath}
+
+\redefinespecial ar
+ {\startTPICspecials\TPICdrawtrue\drawTPICarc}
+
+\redefinespecial ia
+ {\startTPICspecials\TPICfilltrue\drawTPICarc}
+
+%D These substitutes use two auxiliary macros that take care of
+%D actually drawing the shape or arc. Here we use the stored
+%D linetype (solid, dashed, dotted) and color (grayscale).
+
+\def\drawTPICpath\using#1\endspecial
+ {\bgroup
+ \ifTPICdraw
+ \def\TPICgrayscale{}%
+ \fi
+ \startMPdrawing
+ \ifTPICfill fill\fi\ifTPICdraw draw\fi\space
+ for i:=1 upto \the\TPICcounter-1:
+ p[i]\ifTPICcurve..\else--\fi
+ endfor
+ p[\the\TPICcounter]
+ \ifTPICfill\ifTPICcurve..\else--\fi cycle \fi
+ \TPIClinetype\space\TPICgrayscale;
+ \stopMPdrawing
+ \resetTPICvariables
+ \egroup}
+
+%D I have to admit that at the moment I wrote this macro, I
+%D could not write this piece of \METAPOST. Fortunately
+%D Thortsen Ohl promptly answered the question I posted to the
+%D \METAFONT\ discussion list.
+
+\def\drawTPICarc\using#1 #2 #3 #4 #5 #6\endspecial
+ {\bgroup
+ \ifTPICdraw
+ \def\TPICgrayscale{}%
+ \fi
+ \dimen 0=#1pt\dimen 0=.07227\dimen 0
+ \dimen 2=#2pt\dimen 2=.07227\dimen 2
+ \dimen10=#3pt\dimen10=.14454\dimen10
+ \dimen12=#4pt\dimen12=.14454\dimen12
+ \dimen20=#5pt
+ \dimen22=#6pt
+ \startMPdrawing
+ \ifTPICfill fill\fi\ifTPICdraw draw\fi \space
+ \ifTPICfill\else subpath 4/3.14159*(\the\dimen20,\the\dimen22) of \fi
+ fullcircle xscaled \the\dimen10 \space yscaled \the\dimen12 \space
+ shifted (\the\dimen0,\the\dimen2)
+ \TPIClinetype \space \TPICgrayscale;
+ \stopMPdrawing
+ \resetTPICvariables
+ \egroup}
+
+%D Resetting the variables need to be done globally because we
+%D cannot be sure if any further grouping is used by the
+%D envelopping macros.
+
+\def\resetTPICvariables
+ {\global\TPICcounter\zerocount
+ \global\TPICfillfalse
+ \global\TPICdrawfalse
+ \global\let\TPIClinetype\empty
+ \global\let\TPICgrayscale\empty}
+
+%D I have to admit that by using the \METAPOST\ B‚zier cubics
+%D routines these implementation does produce better curves
+%D then most \DVI\ drivers do using the \TPIC\ prescribed
+%D b-splines. Take for instance the sequence:
+%D
+%D \starttyping
+%D \special{pa 2000 1000}
+%D \special{pa 1000 2000}
+%D \special{pa 0000 1000}
+%D \special{pa 1000 0000}
+%D \special{pa 2000 1000}
+%D \special{sp}
+%D \stoptyping
+%D
+%D One would expect that this code produced a closed circle,
+%D but the curve that comes out using b-splines is far from
+%D round. We can however savely asume that the arc producing
+%D specials will be used for drawing circle fragments, while
+%D the path specials will be used for arbitraty curves. And for
+%D b-splines to produce nice curves, one will often use many
+%D points to get the desired results. Therefore, using the
+%D \METAPOST\ B‚zier curves will certainly produce similar and
+%D even better graphics, except in those rare cases where one
+%D uses delinberately the not that accurate features of
+%D b-splines. Hereby the user is warned.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/supp-vis.tex b/Master/texmf-dist/tex/context/base/supp-vis.tex
new file mode 100644
index 00000000000..384bcd4401c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/supp-vis.tex
@@ -0,0 +1,1926 @@
+%D \module
+%D [ file=supp-vis,
+%D version=1996.10.21,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=Visualization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\contextversion\undefined
+
+ \let \normalunexpanded \unexpanded
+ \let \unexpanded \protected
+
+\fi
+
+\ifx\unexpanded\undefined
+
+ \let\unexpanded\relax
+
+\fi
+
+%D \gdef\ShowBufferedExample% private typeseting macro
+%D {\startlinecorrection
+%D \bgroup
+%D \setuptyping[margin=0pt,option=color]
+%D \showmakeup
+%D \centeredvcuetrue
+%D \dontinterfere
+%D \baselinerulefalse
+%D \normalvbox
+%D {\normalhbox to \hsize
+%D {$\hsize=.5\hsize
+%D \advance\hsize by -.5em
+%D \normalvcenter{\vbox{\getbuffer}}\normalhss
+%D \normalvcenter{\vbox{\dontshowcomposition\typebuffer}}$}}
+%D \egroup
+%D \stoplinecorrection}
+%D
+%D \gdef\ShowBufferedExampleBox% private typeseting macro
+%D {\startlinecorrection
+%D \bgroup
+%D \setuptyping[margin=0pt,option=color]
+%D \showmakeup
+%D \centeredvcuetrue
+%D \dontinterfere
+%D \baselinerulefalse
+%D \normalvbox
+%D {\normalhbox to \hsize
+%D {$\hsize=.5\hsize
+%D \advance\hsize by -.5em
+%D \normalvcenter{\baselineruletrue\vbox{\getbuffer}}\normalhss
+%D \normalvcenter{\vbox{\dontshowcomposition\typebuffer}}$}}
+%D \egroup
+%D \stoplinecorrection}
+
+%D Although an integral part of \CONTEXT, this module is one
+%D of the support modules. Its stand alone character permits
+%D use in \PLAIN\ \TEX\ or \TEX\ based macropackages.
+%D \ifCONTEXT \else If in some examples the verbatim listings
+%D don't show up nice, this is due to processing by a system
+%D that does not support buffering. In \CONTEXT\ we show the
+%D commands in the margin, use bit more advanced way of
+%D numbering, and typeset the source in \TEX nicolored
+%D verbatim. Sorry for this inconvenience.\fi
+%D
+%D Depending on my personal needs and those of whoever uses it,
+%D the macros will be improved in terms of visualization,
+%D efficiency and compatibility. These rather low level
+%D visualization macros are supplemented by ones that can
+%D visualize baselines, the page layout and whatever deserves
+%D attention. Most of those macros can be found in \type
+%D {core-vis} and other core modules. Their integration in
+%D \CONTEXT\ prohibits generic applications.
+
+\ifx \undefined \writestatus \input supp-mis.tex \fi
+
+%D One of the strong points of \TEX\ is abstraction of textual
+%D input. When macros are defined well and do what we
+%D want them to do, we will seldom need the tools present in
+%D What You See Is What You Get systems. For instance, when
+%D entering text we don't need rulers, because no manual
+%D shifting and/or alignment of text is needed. On the other
+%D hand, when we are designing macros or specifying layout
+%D elements, some insight in \TEX's advanced spacing, kerning,
+%D filling, boxing and punishment abilities will be handy.
+%D That's why we've implemented a mechanism that shows some of
+%D the inner secrets of \TEX.
+
+\writestatus{loading}{Context Support Macros / Visualization}
+
+%D In this module we are going to redefine some \TEX\
+%D primitives and \PLAIN\ macro's. Their original meaning is
+%D saved in macros with corresponding names, preceded by
+%D \type{normal}. These original macros are (1)~used to
+%D temporary restore the old values when needed and
+%D (2)~used to prevent recursive calls in the macros that
+%D replace them.
+
+\unprotect
+
+\let\visualvrule\vrule
+\let\visualhrule\hrule
+
+%D \macros
+%D {dontinterfere}
+%D
+%D Indentation, left and/or right skips, redefinition of
+%D \type{\par} and assignments to \type{\everypar} can lead to
+%D unwanted results. We can therefore turn all those things
+%D off with \type{\dontinterfere}.
+
+\def\dontinterfere
+ {\everypar \emptytoks
+ \let\par \endgraf
+ \parindent\zeropoint
+ \parskip \zeropoint
+ \leftskip \zeropoint
+ \rightskip\zeropoint
+ \relax}
+
+%D \macros
+%D {dontcomplain}
+%D
+%D In this module we do a lot of box manipulations. Because we
+%D don't want to be confronted with to many over- and underfull
+%D messages we introduce \type{\dontcomplain}.
+
+\def\dontcomplain
+ {\hbadness\!!tenthousand \vbadness\hbadness
+ \hfuzz \maxdimen \vfuzz \hfuzz}
+
+% This obsolete dutch name is sometimes uses in manual styles; when
+% cleaning up the codebase I decided to move this definition here.
+
+\let\mindermeldingen\dontcomplain
+
+%D \macros
+%D {normaloffinterlineskip}
+%D
+%D The next hack is needed because in \CONTEXT\ we redefine
+%D \type{\offinterlineskip}.
+
+\ifx\undefined\normaloffinterlineskip
+ \let\normaloffinterlineskip\offinterlineskip
+\fi
+
+%D \macros
+%D {normalhbox,
+%D normalvbox,normalvtop}
+%D
+%D There are three types of boxes, one horizontal and two
+%D vertical in nature. As we will see later on, all three types
+%D are to be handled according to their orientation and
+%D baseline behavior. Especially \type{\vtop}'s need our
+%D special attention.
+
+\ifx \normalhbox \undefined \let \normalhbox = \hbox \fi
+\ifx \normalvbox \undefined \let \normalvbox = \vbox \fi
+\ifx \normalvtop \undefined \let \normalvtop = \vtop \fi
+\ifx \normalvcenter \undefined \let \normalvcenter = \vcenter \fi
+
+%D \macros
+%D {normalhskip,
+%D normalvskip}
+%D
+%D Next come the flexible skips, which come in two flavors
+%D too. Like boxes these are handled with \TEX\ primitives.
+
+\let\normalhskip = \hskip
+\let\normalvskip = \vskip
+
+%D \macros
+%D {normalpenalty,
+%D normalkern}
+%D
+%D Both penalties and kerns are taken care of by mode sensitive
+%D primitives. This means that when making them visible, we
+%D have to take the current mode into account.
+
+\let\normalpenalty = \penalty
+\let\normalkern = \kern
+
+%D \macros
+%D {normalhglue,
+%D normalvglue}
+%D
+%D Glues on the other hand are macro's defined in \PLAIN\ \TEX.
+%D As we will see, their definitions make the implementation of
+%D their visible counterparts a bit more \TeX{}nical.
+
+\let\normalhglue = \hglue
+\let\normalvglue = \vglue
+
+%D \macros
+%D {normalmkern,
+%D normalmskip}
+%D
+%D Math mode has its own spacing primitives, preceded by
+%D \type{m}. Due to the relation with the current font and the
+%D way math is typeset, their unit \type{mu} is not compatible
+%D with other dimensions. As a result, the visual appearance
+%D of these primitives is kept primitive too.
+
+\let\normalmkern = \mkern
+\let\normalmskip = \mskip
+
+%D \macros
+%D {hfilneg,
+%D vfilneg}
+%D
+%D Fills can be made visible quite easy. We only need some
+%D additional negation macros. Because \PLAIN\ \TEX\ only
+%D offers \type{\hfilneg} and \type{\vfilneg}, we define our
+%D own alternative double \type{ll}'ed ones.
+
+\def\hfillneg
+ {\normalhskip\zeropoint \!!plus-1fill\relax}
+
+\def\vfillneg
+ {\normalvskip\zeropoint \!!plus-1fill\relax}
+
+%D \macros
+%D {normalhss,normalhfil,normalhfill,
+%D normalvss,normalvfil,normalvfill}
+%D
+%D The positive stretch primitives are used independant and in
+%D combination with \type{\leaders}.
+
+\let\normalhss = \hss
+\let\normalhfil = \hfil
+\let\normalhfill = \hfill
+\let\normalvss = \vss
+\let\normalvfil = \vfil
+\let\normalvfill = \vfill
+
+%D \macros
+%D {normalhfilneg,normalhfillneg,
+%D normalvfilneg,normalvfillneg}
+%D
+%D Keep in mind that both \type{\hfillneg} and \type{\vfillneg}
+%D are not part of \PLAIN\ \TEX\ and therefore not documented
+%D in standard \TEX\ documentation. They can nevertheless be
+%D used at will.
+
+\let\normalhfilneg = \hfilneg
+\let\normalhfillneg = \hfillneg
+\let\normalvfilneg = \vfilneg
+\let\normalvfillneg = \vfillneg
+
+%D Visualization is not always wanted. Instead of turning this
+%D option off in those (unpredictable) situations, we just
+%D redefine a few \PLAIN\ macros.
+
+\ifx\tlap\undefined
+
+ \def\rlap#1{\normalhbox to \zeropoint{#1\normalhss}}
+ \def\llap#1{\normalhbox to \zeropoint{\normalhss#1}}
+ \def\blap#1{\normalvbox to \zeropoint{#1\normalvss}}
+ \def\tlap#1{\normalvbox to \zeropoint{\normalvss#1}}
+
+\fi
+
+\def~{\normalpenalty\!!tenthousand\ }
+
+%D \macros
+%D {makeruledbox}
+%D
+%D Ruled boxes can be typeset is many ways. Here we present
+%D just one alternative. This implementation may be a little
+%D complicated, but it supports all three kind of boxes. The
+%D next command expects a \BOX\ specification, like:
+%D
+%D \starttyping
+%D \makeruledbox0
+%D \stoptyping
+
+%D \macros
+%D {baselinerule,baselinefill}
+%D
+%D We can make the baseline of a box visible, both dashed and
+%D as a rule. The line is drawn on top of the baseline. All
+%D we have to say is:
+%D
+%D \starttyping
+%D \baselineruletrue
+%D \baselinefilltrue
+%D \stoptyping
+%D
+%D At the cost of some overhead these alternatives are
+%D implemented using \type{\if}'s:
+
+\newif\ifbaselinerule \baselineruletrue
+\newif\ifbaselinefill \baselinefillfalse
+
+%D \macros
+%D {iftoprule,ifbottomrule,ifleftrule,ifrightrule}
+%D
+%D Rules can be turned on and off, but by default we have:
+%D
+%D \starttyping
+%D \topruletrue
+%D \bottomruletrue
+%D \leftruletrue
+%D \rightruletrue
+%D \stoptyping
+%D
+%D As we see below:
+
+\newif\iftoprule \topruletrue
+\newif\ifbottomrule \bottomruletrue
+\newif\ifleftrule \leftruletrue
+\newif\ifrightrule \rightruletrue
+
+%D \macros
+%D {boxrulewidth}
+%D
+%D The width in the surrounding rules can be specified by
+%D assigning an apropriate value to the dimension used. This
+%D module defaults the width to:
+%D
+%D \starttyping
+%D \boxrulewidth=.2pt
+%D \stoptyping
+%D
+%D Although we are already low on \DIMENSIONS\ it's best to
+%D spend one here, mainly because it enables easy manipulation,
+%D like multiplication by a given factor.
+
+\newdimen\boxrulewidth \boxrulewidth=.2pt
+
+%D The core macro \type{\makeruledbox} looks a bit hefty. The
+%D manipulation at the end is needed because we want to
+%D preserve both the mode and the baseline. This means that
+%D \type{\vtop}'s and \type{\vbox}'es behave the way we expect
+%D them to do.
+%D
+%D \startlinecorrection
+%D \hbox
+%D {\ruledhbox to 5em{\strut test\normalhss}\hskip1em
+%D \ruledvbox{\hsize 5em\strut test \par test\strut}\hskip1em
+%D \ruledvtop{\hsize 5em\strut test \par test\strut}}
+%D \stoplinecorrection
+%D
+%D The \type{\cleaders} part of the macro is responsible for
+%D the visual baseline. The \type{\normalhfill} belongs to this
+%D primitive too. By storing and restoring the height and depth
+%D of box \type{#1}, we preserve the mode.
+
+\let\dowithruledbox\relax
+
+\def\makeruledbox#1%
+ {\edef\ruledheight{\the\ht#1}%
+ \edef\ruleddepth {\the\dp#1}%
+ \edef\ruledwidth {\the\wd#1}%
+ \setbox\scratchbox\normalvbox
+ {\dontcomplain
+ \normaloffinterlineskip
+ \visualhrule
+ \!!height\boxrulewidth
+ \iftoprule\else\!!width\zeropoint\fi
+ \normalvskip-\boxrulewidth
+ \normalhbox to \ruledwidth
+ {\visualvrule
+ \!!height\ruledheight
+ \!!depth\ruleddepth
+ \!!width\ifleftrule\else0\fi\boxrulewidth
+ \ifdim\ruledheight>\zeropoint \else \baselinerulefalse \fi
+ \ifdim\ruleddepth>\zeropoint \else \baselinerulefalse \fi
+ \ifbaselinerule
+ \ifdim\ruledwidth<20\boxrulewidth
+ \baselinefilltrue
+ \fi
+ \cleaders
+ \ifbaselinefill
+ \visualhrule
+ \!!height\boxrulewidth
+ \else
+ \normalhbox
+ {\normalhskip2.5\boxrulewidth
+ \visualvrule
+ \!!height\boxrulewidth
+ \!!width5\boxrulewidth
+ \normalhskip2.5\boxrulewidth}%
+ \fi
+ \fi
+ \normalhfill
+ \visualvrule
+ \!!width\ifrightrule\else0\fi\boxrulewidth}%
+ \normalvskip-\boxrulewidth
+ \visualhrule
+ \!!height\boxrulewidth
+ \ifbottomrule\else\!!width\zeropoint\fi}%
+ \wd#1\zeropoint
+ \setbox#1=\ifhbox#1\normalhbox\else\normalvbox\fi
+ {\normalhbox
+ {\box#1%
+ \lower\ruleddepth\normalhbox{\dowithruledbox{\box\scratchbox}}}}%
+ \ht#1=\ruledheight
+ \wd#1=\ruledwidth
+ \dp#1=\ruleddepth}
+
+%D Just in case one didn't notice: the rules are in fact layed
+%D over the box. This way the contents of a box cannot
+%D visually interfere with the rules around (upon) it. A more
+%D advanced version of ruled boxes can be found in one of the
+%D core modules of \CONTEXT. There we take offsets, color,
+%D rounded corners, backgrounds and alignment into account too.
+
+%D \macros
+%D {ruledhbox,
+%D ruledvbox,ruledvtop,
+%D ruledvcenter}
+%D
+%D These macro's can be used instead of \type{\hbox},
+%D \type{\vbox}, \type{\vtop} and, when in math mode,
+%D \type{\vcenter}. They just do what their names state. Using
+%D an auxiliary macro would save us a few words of memory, but
+%D it would make their appearance even more obscure.
+%D
+%D \startbuffer
+%D \hbox
+%D {\strut
+%D one
+%D two
+%D \hbox{three}
+%D four
+%D five}
+%D \stopbuffer
+%D
+%D \ShowBufferedExampleBox
+
+\unexpanded\def\ruledhbox
+ {\normalhbox\bgroup
+ \dowithnextbox{\makeruledbox\nextbox\box\nextbox\egroup}%
+ \normalhbox}
+
+%D \startbuffer
+%D \vbox
+%D {\strut
+%D first line \par
+%D second line \par
+%D third line \par
+%D fourth line \par
+%D fifth line
+%D \strut }
+%D \stopbuffer
+%D
+%D \ShowBufferedExampleBox
+
+\unexpanded\def\ruledvbox
+ {\normalvbox\bgroup
+ \dowithnextbox{\makeruledbox\nextbox\box\nextbox\egroup}%
+ \normalvbox}
+
+%D \startbuffer
+%D \vtop
+%D {\strut
+%D first line \par
+%D second line \par
+%D third line \par
+%D fourth line \par
+%D fifth line
+%D \strut }
+%D \stopbuffer
+%D
+%D \ShowBufferedExampleBox
+
+\unexpanded\def\ruledvtop
+ {\normalvtop\bgroup
+ \dowithnextbox{\makeruledbox\nextbox\box\nextbox\egroup}%
+ \normalvtop}
+
+%D \startbuffer
+%D \hbox
+%D {$\vcenter{\hsize.2\hsize
+%D alfa \par beta}$
+%D $\vcenter to 3cm{\hsize.2\hsize
+%D alfa \par beta \par gamma}$
+%D $\vcenter{\hsize.2\hsize
+%D alfa \par beta}$}
+%D \stopbuffer
+%D
+%D \ShowBufferedExampleBox
+
+\unexpanded\def\ruledvcenter
+ {\normalvbox\bgroup
+ \dontinterfere
+ \dowithnextbox
+ {\scratchdimen.5\ht\nextbox
+ \advance\scratchdimen .5\dp\nextbox
+ \ht\nextbox\scratchdimen
+ \dp\nextbox\scratchdimen
+ \ruledhbox{\box\nextbox}%
+ \egroup}%
+ \normalvbox}
+
+%D \macros
+%D {ruledbox,
+%D setruledbox}
+%D
+%D Of the next two macros the first can be used to precede a
+%D box of ones own choice. One can for instance prefix boxes
+%D with \type{\ruledbox} and afterwards --- when the macro
+%D satisfy the needs --- let it to \type{\relax}.
+%D
+%D \starttyping
+%D \ruledbox\hbox{What rules do you mean?}
+%D \stoptyping
+%D
+%D The macro \type{\setruledbox} can be used to directly
+%D rule a box.
+%D
+%D \starttyping
+%D \setruledbox12=\hbox{Who's talking about rules here?}
+%D \stoptyping
+%D
+%D At the cost of some extra macros we can implement a
+%D variant that does not need the~\type{=}, but we stick to:
+
+\unexpanded\def\ruledbox
+ {\dowithnextbox{\makeruledbox\nextbox\box\nextbox}}
+
+\def\setruledbox#1=%
+ {\dowithnextbox{\makeruledbox\nextbox\setbox#1\nextbox}}
+
+%D \macros
+%D {investigateskip,
+%D investigatecount,
+%D investigatemuskip}
+%D
+%D Before we meet the visualizing macro's, we first implement
+%D ourselves some handy utility ones. Just for the sake of
+%D efficiency and readability, we introduce some status
+%D variables, that tell us a bit more about the registers we
+%D use:
+%D
+%D \starttyping
+%D \ifflexible
+%D \ifzero
+%D \ifnegative
+%D \ifpositive
+%D \stoptyping
+%D
+%D These status variables are set when we call for one of the
+%D investigation macros, e.g.
+%D
+%D \starttyping
+%D \investigateskip\scratchskip
+%D \stoptyping
+%D
+%D We use some dirty trick to check stretchability of \SKIPS.
+%D Users of these macros are invited to study their exact
+%D behavior first. The positive and negative states both
+%D include zero and are in fact non-negative ($\geq0$) and
+%D non-positive ($\leq0$) .
+
+\newif\ifflexible
+\newif\ifzero
+\newif\ifnegative
+\newif\ifpositive
+
+\def\investigateskip#1%
+ {\relax
+ \scratchdimen#1\relax
+ \edef\!!stringa{\the\scratchdimen}%
+ \edef\!!stringb{\the#1}%
+ \ifx\!!stringa\!!stringb \flexiblefalse \else \flexibletrue \fi
+ \ifdim#1=\zeropoint\relax
+ \zerotrue \else
+ \zerofalse \fi
+ \ifdim#1<\zeropoint\relax
+ \positivefalse \else
+ \positivetrue \fi
+ \ifdim#1>\zeropoint\relax
+ \negativefalse \else
+ \negativetrue \fi}
+
+% etex
+%
+% \def\investigateskip#1%
+% {\relax
+% \ifdim\scratchskip=\zeropoint
+% \ifdim\gluestretch\scratchskip=\zeropoint
+% \ifdim\glueshrink\scratchskip=\zeropoint
+% \flexiblefalse
+% \else
+% \flexibletrue
+% \fi
+% \else
+% \flexibletrue
+% \fi
+% \else
+% \flexibletrue
+% \fi
+% \ifdim#1=\zeropoint\relax
+% \zerotrue \else
+% \zerofalse \fi
+% \ifdim#1<\zeropoint\relax
+% \positivefalse \else
+% \positivetrue \fi
+% \ifdim#1>\zeropoint\relax
+% \negativefalse \else
+% \negativetrue \fi}
+
+\def\investigatecount#1%
+ {\relax
+ \flexiblefalse
+ \ifnum#1=\zerocount
+ \zerotrue \else
+ \zerofalse \fi
+ \ifnum#1<\zerocount
+ \positivefalse \else
+ \positivetrue \fi
+ \ifnum#1>\zerocount
+ \negativefalse \else
+ \negativetrue \fi}
+
+\def\investigatemuskip#1%
+ {\relax
+ \edef\!!stringa{\the\scratchmuskip}%
+ \edef\!!stringb{0mu}%
+ \def\!!stringc##1##2\\{##1}%
+ \expandafter\edef\expandafter\!!stringc\expandafter
+ {\expandafter\!!stringc\!!stringa\\}%
+ \edef\!!stringd{-}%
+ \flexiblefalse
+ \ifx\!!stringa\!!stringb
+ \zerotrue
+ \negativefalse
+ \positivefalse
+ \else
+ \zerofalse
+ \ifx\!!stringc\!!stringd
+ \positivefalse
+ \negativetrue
+ \else
+ \positivetrue
+ \negativefalse
+ \fi
+ \fi}
+
+%D Now the neccessary utility macros are defined, we can make a
+%D start with the visualizing ones. The implementation of these
+%D macros is a compromise between readability, efficiency of
+%D coding and processing speed. Sometimes we do in steps what
+%D could have been done in combination, sometimes we use a few
+%D boxes more or less then actually needed, and more than once
+%D one can find the same piece of rule drawing code twice.
+
+%D \macros
+%D {ifcenteredvcue,normalvcue}
+%D
+%D Depending on the context, one can force visual vertical cues
+%D being centered along \type{\hsize} or being put at the
+%D current position. Although centering often looks better,
+%D we've chosen the second alternative as default. The main
+%D reason for doing so is that often when we don't set the
+%D \type{\hsize} ourselves, \TEX\ takes the value of the
+%D surrounding box. As a result the visual cues can migrate
+%D outside the current context.
+%D
+%D This behavior is accomplished by a small but effective
+%D auxiliary macro, which behavior can be influenced by the
+%D boolean \type{\centeredvcue}. By saying
+%D
+%D \starttyping
+%D \centeredvcuetrue
+%D \stoptyping
+%D
+%D one turns centering on. As said, we turn it off.
+
+\newif\ifcenteredvcue \centeredvcuefalse
+
+\def\normalvcue#1%
+ {\normalhbox \ifcenteredvcue to \hsize \fi {\normalhss#1\normalhss}}
+
+%D We could have used the more robust version
+%D
+%D \starttyping
+%D \def\normalvcue%
+%D {\normalhbox \ifcenteredvcue to \hsize \fi
+%D \bgroup\bgroup\normalhss
+%D \aftergroup\normalhss\aftergroup\egroup
+%D \let\next=}
+%D \stoptyping
+%D
+%D or the probably best one:
+%D
+%D \starttyping
+%D \def\normalvcue%
+%D {\hbox \ifcenteredvcue to \hsize
+%D \bgroup\bgroup\normalhss
+%D \aftergroup\normalhss\aftergroup\egroup
+%D \else
+%D \bgroup
+%D \fi
+%D \let\next=}
+%D \stoptyping
+%D
+%D Because we don't have to preserve \CATCODES\ and only use
+%D small arguments, we stick to the first alternative.
+
+%D \macros
+%D {testrulewidth}
+%D
+%D We build our visual cues out of rules. At the cost of a much
+%D bigger \DVI\ file, this is to be prefered over using
+%D characters (1)~because we cannot be sure of their
+%D availability and (2)~because their dimensions are fixed.
+%D
+%D As with ruled boxes, we use a \DIMENSION\ to specify the
+%D width of the ruled elements. This dimension defaults to:
+%D
+%D \starttyping
+%D \testrulewidth=\boxrulewidth
+%D \stoptyping
+%D
+%D Because we prefer whole numbers for specifying the
+%D dimensions, we often use even multiples of
+%D \type{\testrulewidth}.
+
+%D \macros
+%D {visiblestretch}
+%D
+%D A second variable is introduced because of the stretch
+%D components of \SKIPS. At the cost of some accuracy we can
+%D make this stretch visible.
+%D
+%D \starttyping
+%D \visiblestretchtrue
+%D \stoptyping
+
+\newdimen\testrulewidth \testrulewidth=\boxrulewidth
+\newif\ifvisiblestretch \visiblestretchfalse
+
+%D \macros
+%D {ruledhss,
+%D ruledhfil,ruledhfilneg,
+%D ruledhfill,ruledhfillneg}
+%D
+%D We start with the easiest part, the fills. The scheme we
+%D follow is {\em visual filling -- going back -- normal
+%D filling}. Visualizing is implemented using \type{\cleaders}.
+%D Because the \BOX\ that follows this command is constructed
+%D only once, the \type{\copy} is not really a prerequisite. We
+%D prefer using a \type{\normalhbox} here instead of a
+%D \type{\hbox}.
+
+\def\setvisiblehfilbox#1\to#2#3#4%
+ {\setbox#1\normalhbox
+ {\visualvrule
+ \!!width #2\testrulewidth
+ \!!height#3\testrulewidth
+ \!!depth #4\testrulewidth}%
+ \smashbox#1}
+
+\def\doruledhfiller#1#2#3#4%
+ {#1#2%
+ \bgroup
+ \dontinterfere
+ \dontcomplain
+ \setvisiblehfilbox0\to{4}{#3}{#4}%
+ \setvisiblehfilbox2\to422%
+ \copy0\copy2
+ \bgroup
+ \setvisiblehfilbox0\to422%
+ \cleaders
+ \normalhbox to 12\testrulewidth
+ {\normalhss\copy0\normalhss}%
+ #1%
+ \egroup
+ \setbox0\normalhbox
+ {\normalhskip-4\testrulewidth\copy0\copy2}%
+ \smashbox0%
+ \box0
+ \egroup}
+
+%D The horizontal fillers differ in their boundary
+%D visualization. Watch the small dots. Fillers can be
+%D combined within reasonable margins.
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\type{\hss}\ruledhss test}
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\type{\hfil}\ruledhfil test}
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\type{\hfill}\ruledhfill test}
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut
+%D \type{\hfil}\type{\hfil}\ruledhfil\ruledhfil
+%D test%
+%D \ruledhfil\type{\hfil}}
+%D \stoplinecorrection
+%D
+%D The negative counterparts are visualizes, but seldom
+%D become visible, apart from their boundaries.
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\type{\hfilneg}\ruledhfilneg test}
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\type{\hfillneg}\ruledhfillneg test}
+%D \stoplinecorrection
+%D
+%D Although leaders are used for visualizing, they are
+%D visualized themselves correctly as the next example shows.
+%D
+%D \startlinecorrection
+%D \baselinerulefalse
+%D \ruledhbox to \hsize
+%D {\strut\cleaders\normalhbox to 2em{\normalhss$\circ$\normalhss}\ruledhfill}
+%D \stoplinecorrection
+%D
+%D All five substitutions use the same auxiliary macro. Watch
+%D the positive first -- negative next approach.
+
+\unexpanded\def\ruledhss
+ {\doruledhfiller\normalhss\normalhfilneg{0}{0}}
+
+\unexpanded\def\ruledhfil
+ {\doruledhfiller\normalhfil\normalhfilneg{10}{-6}}
+
+\unexpanded\def\ruledhfill
+ {\doruledhfiller\normalhfill\normalhfillneg{18}{-14}}
+
+\unexpanded\def\ruledhfilneg
+ {\doruledhfiller\normalhfilneg\normalhfil{-6}{10}}
+
+\unexpanded\def\ruledhfillneg
+ {\doruledhfiller\normalhfillneg\normalhfill{-14}{18}}
+
+%D \macros
+%D {ruledvss,
+%D ruledvfil,ruledvfilneg,
+%D ruledvfill,ruledvfillneg}
+%D
+%D The vertical mode commands adopt the same visualization
+%D scheme, but are implemented in a slightly different way.
+
+\def\setvisiblevfilbox#1\to#2#3#4%
+ {\setbox#1\normalhbox
+ {\visualvrule
+ \!!width #2\testrulewidth
+ \!!height#3\testrulewidth
+ \!!depth #4\testrulewidth}%
+ \smashbox#1}%
+
+\def\doruledvfiller#1#2#3%
+ {#1#2%
+ \bgroup
+ \dontinterfere
+ \dontcomplain
+ \normaloffinterlineskip
+ \setvisiblevfilbox0\to422%
+ \setbox2\normalvcue
+ {\normalhskip -#3\testrulewidth\copy0}%
+ \smashbox2%
+ \copy2
+ \bgroup
+ \setbox2\normalvcue
+ {\normalhskip -2\testrulewidth\copy0}%
+ \smashbox2%
+ \copy2
+ \cleaders
+ \normalvbox to 12\testrulewidth
+ {\normalvss\copy2\normalvss}%
+ #1%
+ \setbox2\normalvbox
+ {\normalvskip-2\testrulewidth\copy2}%
+ \smashbox2%
+ \box2
+ \egroup
+ \box2
+ \egroup}
+
+%D Because they act the same as their horizontal counterparts
+%D we only show a few examples.
+%D
+%D \startlinecorrection
+%D \hbox to \hsize
+%D {\dontinterfere
+%D \baselinerulefalse
+%D \centeredvcuetrue
+%D \ruledvbox to 10ex
+%D {\hsize.18\hsize
+%D \type{\vss}\ruledvss last line}\normalhss
+%D \ruledvbox to 10ex
+%D {\hsize.18\hsize
+%D \type{\vfil}\ruledvfil last line}\normalhss
+%D \ruledvbox to 10ex
+%D {\hsize.18\hsize
+%D \type{\vfill}\ruledvfill last line}\normalhss
+%D \ruledvbox to 10ex
+%D {\hsize.18\hsize
+%D \type{\vfilneg}\ruledvfilneg last line}\normalhss
+%D \ruledvbox to 10ex
+%D {\hsize.18\hsize
+%D \type{\vfillneg}\ruledvfillneg last line}}
+%D \stoplinecorrection
+%D
+%D Keep in mind that \type{\vfillneg} is not part of \PLAIN\
+%D \TEX, but are mimmicked by a macro.
+
+\unexpanded\def\ruledvss {\doruledvfiller\normalvss \normalvfilneg {2}}
+\unexpanded\def\ruledvfil {\doruledvfiller\normalvfil \normalvfilneg {-4}}
+\unexpanded\def\ruledvfill {\doruledvfiller\normalvfill \normalvfillneg{-12}}
+\unexpanded\def\ruledvfilneg {\doruledvfiller\normalvfilneg \normalvfil {8}}
+\unexpanded\def\ruledvfillneg{\doruledvfiller\normalvfillneg\normalvfill {16}}
+
+%D \macros
+%D {ruledhskip}
+%D
+%D Skips differ from kerns in two important aspects:
+%D
+%D \startitemize[packed]
+%D \item line and pagebreaks are allowed at a skip
+%D \item skips can have a positive and/or negative
+%D stretchcomponent
+%D \stopitemize
+%D
+%D Stated a bit different: kerns are fixed skips at which no
+%D line or pagebreak can occur. Because skips have a more open
+%D character, they are visualized in a open way.
+%D
+%D \startbuffer
+%D one
+%D \hskip +30pt plus 5pt
+%D two
+%D \hskip +30pt
+%D \hskip -10pt plus 5pt
+%D three
+%D \hskip 0pt
+%D four
+%D \hskip +30pt
+%D five
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+%D
+%D When skips have a stretch component, this is visualized by
+%D means of a dashed line. Positive skips are on top of the
+%D baseline, negative ones are below it. This way we can show
+%D the combined results. An alternative visualization of
+%D stretch could be drawing the mid line over a length of the
+%D stretch, in positive or negative direction.
+
+\def\doruledhskip
+ {\relax
+ \dontinterfere
+ \dontcomplain
+ \investigateskip\scratchskip
+ \ifzero
+ \setbox0\normalhbox
+ {\normalhskip-\testrulewidth
+ \visualvrule
+ \!!width4\testrulewidth
+ \!!height16\testrulewidth
+ \!!depth16\testrulewidth}%
+ \else
+ \setbox0\normalhbox to \ifnegative-\fi\scratchskip
+ {\visualvrule
+ \!!width2\testrulewidth
+ \ifnegative\!!depth\else\!!height\fi16\testrulewidth
+ \cleaders
+ \visualhrule
+ \ifnegative
+ \!!depth2\testrulewidth
+ \!!height\zeropoint
+ \else
+ \!!height2\testrulewidth
+ \!!depth\zeropoint
+ \fi
+ \normalhfill
+ \ifflexible
+ \normalhskip\ifnegative\else-\fi\scratchskip
+ \normalhskip2\testrulewidth
+ \cleaders
+ \normalhbox
+ {\normalhskip 2\testrulewidth
+ \visualvrule
+ \!!width2\testrulewidth
+ \!!height\ifnegative-7\else9\fi\testrulewidth
+ \!!depth\ifnegative9\else-7\fi\testrulewidth
+ \normalhskip 2\testrulewidth}%
+ \normalhfill
+ \fi
+ \visualvrule
+ \!!width2\testrulewidth
+ \ifnegative\!!depth\else\!!height\fi16\testrulewidth}%
+ \setbox0\normalhbox
+ {\ifnegative\else\normalhskip-\scratchskip\fi
+ \box0}%
+ \fi
+ \smashbox0%
+ \ifvisiblestretch \else
+ \flexiblefalse
+ \fi
+ \ifflexible
+ % breaks ok but small displacements can occur
+ \skip2\scratchskip
+ \advance\skip2 -1\scratchskip
+ \divide\skip2 2
+ \advance\scratchskip -\skip2
+ \normalhskip\scratchskip
+ \normalpenalty\!!tenthousand
+ \box0
+ \normalhskip\skip2
+ \else
+ \normalhskip\scratchskip
+ \box0
+ \fi
+ \egroup}
+
+\unexpanded\def\ruledhskip
+ {\bgroup
+ \afterassignment\doruledhskip
+ \scratchskip=}
+
+%D The visual skip is located at a feasible point. Normally
+%D this does not interfere with the normaltypesetting process.
+%D The next examples show (1)~the default behavior, (2)~the
+%D (not entirely correct) distributed stretch and (3)~the way
+%D the text is typeset without cues.
+%D
+%D \startbuffer
+%D \dorecurse
+%D {15}
+%D {test\hskip1em plus .5em minus .5em
+%D test\hskip2em
+%D test}
+%D \stopbuffer
+%D
+%D \startlinecorrection
+%D \showmakeup
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \showmakeup
+%D \visiblestretchtrue
+%D \getbuffer
+%D \stoplinecorrection
+%D
+%D \startlinecorrection
+%D \getbuffer
+%D \stoplinecorrection
+
+%D \macros
+%D {ruledvskip}
+%D
+%D We are less fortunate when implementing the vertical skips.
+%D This is a direct result of interference between the boxes that
+%D visualize the skip and skip removal at a pagebreak. Normally
+%D skips disappear at the top of a page, but not of course when
+%D visualized in a \type{\vbox}. A quite perfect simulation
+%D could have been built if we would have had available two
+%D more primitives: \type{\hnop} and \type{\vnop}. These new
+%D primitives could stand for boxes that are visible but are
+%D not taken into account in any way. They are there for us,
+%D but not for \TEX.
+%D
+%D \startbuffer
+%D first line
+%D \vskip +30pt plus 5pt
+%D second line
+%D \vskip +30pt
+%D \vskip -10pt plus 5pt
+%D third line
+%D \par
+%D fourth line
+%D \vskip +30pt
+%D fifth line
+%D \vskip 0pt
+%D sixth line
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+%D
+%D We have to postpone \type{\prevdepth}. Although this
+%D precaution probably is not completely waterproof, it works
+%D quite well.
+
+\def\dodoruledvskip
+ {\nextdepth\prevdepth
+ \dontinterfere
+ \dontcomplain
+ \normaloffinterlineskip
+ \investigateskip\scratchskip
+ \ifzero
+ \setbox0\normalvcue
+ {\visualvrule
+ \!!width32\testrulewidth
+ \!!height2\testrulewidth
+ \!!depth2\testrulewidth}%
+ \else
+ \setbox0\normalvbox to \ifnegative-\fi\scratchskip
+ {\visualhrule
+ \!!width16\testrulewidth
+ \!!height2\testrulewidth
+ \ifflexible
+ \cleaders
+ \normalhbox to 16\testrulewidth
+ {\normalhss
+ \normalvbox
+ {\normalvskip 2\testrulewidth
+ \visualhrule
+ \!!width2\testrulewidth
+ \!!height2\testrulewidth
+ \normalvskip 2\testrulewidth}%
+ \normalhss}%
+ \normalvfill
+ \else
+ \normalvfill
+ \fi
+ \visualhrule
+ \!!width16\testrulewidth
+ \!!height2\testrulewidth}%
+ \setbox2\normalvbox to \ht0
+ {\visualhrule
+ \!!width2\testrulewidth
+ \!!height\ht0}%
+ \ifnegative
+ \ht0\zeropoint
+ \setbox0\normalhbox
+ {\normalhskip2\testrulewidth % will be improved
+ \normalhskip-\wd0\box0}%
+ \fi
+ \smashbox0%
+ \smashbox2%
+ \setbox0\normalvcue
+ {\box2\box0}%
+ \setbox0\normalvbox
+ {\ifnegative\normalvskip\scratchskip\fi\box0}%
+ \smashbox0%
+ \fi
+ \ifvisiblestretch
+ \ifflexible
+ \skip2\scratchskip
+ \advance\skip2 -1\scratchskip
+ \divide\skip2 2
+ \advance\scratchskip -\skip2
+ \normalvskip\skip2
+ \fi
+ \fi
+ \normalpenalty\!!tenthousand
+ \box0
+ \prevdepth\nextdepth % not \dp0=\nextdepth
+ \normalvskip\scratchskip}
+
+%D We try to avoid interfering at the top of a page. Of course
+%D we only do so when we are in the main vertical list.
+
+\def\doruledvskip
+ {\endgraf % \par
+ \ifdim\pagegoal=\maxdimen
+ \ifinner
+ \dodoruledvskip
+ \fi
+ \else
+ \dodoruledvskip
+ \fi
+ \egroup}
+
+\unexpanded\def\ruledvskip
+ {\bgroup
+ \afterassignment\doruledvskip
+ \scratchskip=}
+
+%D \macros
+%D {ruledkern}
+%D
+%D The macros that implement the kerns are a bit more
+%D complicated than needed, because they also serve the
+%D visualization of glue, our \PLAIN\ defined kerns with
+%D stretch or shrink. We've implemented both horizontal and
+%D vertical kerns as ruled boxes.
+%D
+%D \startbuffer
+%D one
+%D \kern +30pt
+%D two
+%D \kern +30pt
+%D \kern -10pt
+%D three
+%D \kern 0pt
+%D four
+%D \kern +30pt
+%D five
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+%D
+%D Positive and negative kerns are placed on top or below the
+%D baseline, so we are able to track their added result. We
+%D didn't mention spacings of 0~pt yet. Zero values are
+%D visualized a bit different, because we want to see them
+%D anyhow.
+
+\def\doruledhkern
+ {\dontinterfere
+ \dontcomplain
+ \baselinerulefalse
+ \investigateskip\scratchskip
+ \boxrulewidth2\testrulewidth
+ \ifzero
+ \setbox0\ruledhbox to 8\testrulewidth
+ {\visualvrule
+ \!!width\zeropoint
+ \!!height16\testrulewidth
+ \!!depth16\testrulewidth}%
+ \setbox0\normalhbox
+ {\normalhskip-4\testrulewidth\box0}%
+ \else
+ \setbox0\ruledhbox to \ifnegative-\fi\scratchskip
+ {\visualvrule
+ \!!width\zeropoint
+ \ifnegative\!!depth\else\!!height\fi16\testrulewidth
+ \ifflexible
+ \normalhskip2\testrulewidth
+ \cleaders
+ \normalhbox
+ {\normalhskip 2\testrulewidth
+ \visualvrule
+ \!!width2\testrulewidth
+ \!!height\ifnegative-7\else9\fi\testrulewidth
+ \!!depth\ifnegative9\else-7\fi\testrulewidth
+ \normalhskip 2\testrulewidth}%
+ \normalhfill
+ \else
+ \normalhfill
+ \fi}%
+ \testrulewidth2\testrulewidth
+ \setbox0\ruledhbox{\box0}% \make...
+ \fi
+ \smashbox0%
+ \normalpenalty\!!tenthousand
+ \normalhbox to \zeropoint
+ {\ifnegative\normalhskip1\scratchskip\fi
+ \box0}%
+ \afterwards\scratchskip
+ \egroup}
+
+\unexpanded\def\ruledhkern#1%
+ {\bgroup
+ \let\afterwards#1%
+ \afterassignment\doruledhkern
+ \scratchskip=}
+
+%D After having seen the horizontal ones, the vertical kerns
+%D will not surprise us. In this example we use \type{\par} to
+%D switch to vertical mode.
+%D
+%D \startbuffer
+%D first line
+%D \par \kern +30pt
+%D second line
+%D \par \kern +30pt
+%D \par \kern -10pt
+%D third line
+%D \par
+%D fourth line
+%D \par \kern +30pt
+%D fifth line
+%D \par \kern 0pt
+%D sixth line
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+%D
+%D Like before, we have to postpone \type{\prevdepth}. If we
+%D leave out this trick, we got ourselves some wrong spacing.
+
+\def\dodoruledvkern
+ {\nextdepth\prevdepth
+ \dontinterfere
+ \dontcomplain
+ \baselinerulefalse
+ \normaloffinterlineskip
+ \investigateskip\scratchskip
+ \boxrulewidth2\testrulewidth
+ \ifzero
+ \setbox0\ruledhbox to 32\testrulewidth
+ {\visualvrule
+ \!!width\zeropoint
+ \!!height4\testrulewidth
+ \!!depth4\testrulewidth}%
+ \else
+ \setbox0\ruledvbox to \ifnegative-\fi\scratchskip
+ {\hsize16\testrulewidth
+ \ifflexible
+ \cleaders
+ \normalhbox to 16\testrulewidth
+ {\normalhss
+ \normalvbox
+ {\normalvskip 2\testrulewidth
+ \visualhrule
+ \!!width2\testrulewidth
+ \!!height2\testrulewidth
+ \normalvskip 2\testrulewidth}%
+ \normalhss}%
+ \normalvfill
+ \else
+ \visualvrule
+ \!!width\zeropoint
+ \!!height\ifnegative-\fi\scratchskip
+ \normalhfill
+ \fi}
+ \fi
+ \testrulewidth2\testrulewidth
+ \setbox0\ruledvbox{\box0}% \make...
+ \smashbox0%
+ \setbox0\normalvbox
+ {\ifnegative\normalvskip\scratchskip\fi
+ \normalvcue
+ {\ifnegative\normalhskip-16\testrulewidth\fi\box0}}%
+ \smashbox0%
+ \normalpenalty\!!tenthousand
+ \box0
+ \prevdepth\nextdepth} % not \dp0=\nextdepth
+
+\def\doruledvkern
+ {\ifdim\pagegoal=\maxdimen
+ \ifinner
+ \dodoruledvkern
+ \fi
+ \else
+ \dodoruledvkern
+ \fi
+ \afterwards\scratchskip
+ \egroup}
+
+\unexpanded\def\ruledvkern#1%
+ {\bgroup
+ \let\afterwards#1\relax
+ \afterassignment\doruledvkern
+ \scratchskip=}
+
+\unexpanded\def\ruledkern
+ {\ifvmode
+ \expandafter\ruledvkern
+ \else
+ \expandafter\ruledhkern
+ \fi
+ \normalkern}
+
+%D A a bit more \TEX nice solution is:
+%D
+%D \starttyping
+%D \unexpanded\def\ruledkern%
+%D {\csname ruled\ifvmode v\else h\fi kern\endcsname\normalkern}
+%D \stoptyping
+
+%D \macros
+%D {ruledhglue,ruledvglue}
+%D
+%D The non-primitive glue commands are treated as kerns with
+%D stretch. This stretch is presented as a dashed line. I
+%D have to admit that until now, I've never used these glue
+%D commands.
+%D
+%D \startbuffer
+%D one
+%D \hglue +30pt plus 5pt
+%D two
+%D \hglue +30pt
+%D \hglue -10pt plus 5pt
+%D three
+%D \hglue 0pt
+%D four
+%D \hglue +30pt
+%D five
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+
+\def\doruledhglue
+ {\leavevmode
+ \scratchcounter\spacefactor
+ \visualvrule\!!width\zeropoint
+ \normalpenalty\!!tenthousand
+ \ruledhkern\normalhskip\scratchskip
+ \spacefactor\scratchcounter
+ \egroup}
+
+\unexpanded\def\ruledhglue
+ {\bgroup
+ \afterassignment\doruledhglue\scratchskip=}
+
+%D \startbuffer
+%D first line
+%D \vglue +30pt plus 5pt
+%D second line
+%D \vglue +30pt
+%D \vglue -10pt plus 5pt
+%D third line
+%D \par
+%D fourth line
+%D \vglue +30pt
+%D fifth line
+%D \vglue 0pt
+%D sixth line
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+
+\def\doruledvglue
+ {\endgraf % \par
+ \nextdepth\prevdepth
+ \visualhrule\!!height\zeropoint
+ \normalpenalty\!!tenthousand
+ \ruledvkern\normalvskip\scratchskip
+ \prevdepth\nextdepth
+ \egroup}
+
+\unexpanded\def\ruledvglue
+ {\bgroup
+ \afterassignment\doruledvglue\scratchskip=}
+
+%D \macros
+%D {ruledmkern,ruledmskip}
+%D
+%D Mathematical kerns and skips are specified in mu. This
+%D font related unit is incompatible with those of \DIMENSIONS\
+%D and \SKIPS. Because in math mode spacing is often a very
+%D subtle matter, we've used a very simple, not overloaded way
+%D to show them.
+
+\def\dodoruledmkern#1%
+ {\dontinterfere
+ \dontcomplain
+ \setbox0\normalhbox
+ {$\normalmkern\ifnegative-\fi\scratchmuskip$}%
+ \setbox0\normalhbox to \wd0
+ {\visualvrule
+ \!!height16\testrulewidth
+ \!!depth16\testrulewidth
+ \!!width\testrulewidth
+ \leaders
+ \visualhrule
+ \!!height\ifpositive16\else-14\fi\testrulewidth
+ \!!depth\ifpositive-14\else16\fi\testrulewidth
+ \normalhfill
+ \ifflexible
+ \normalhskip-\wd0
+ \leaders
+ \visualhrule
+ \!!height\testrulewidth
+ \!!depth\testrulewidth
+ \normalhfill
+ \fi
+ \visualvrule
+ \!!height16\testrulewidth
+ \!!depth16\testrulewidth
+ \!!width\testrulewidth}%
+ \smashbox0%
+ \ifnegative
+ #1\scratchmuskip
+ \box0
+ \else
+ \box0
+ #1\scratchmuskip
+ \fi
+ \egroup}
+
+%D \startbuffer
+%D $a \mkern3mu = \mkern3mu
+%D b \quad
+%D \mkern-2mu + \mkern-2mu
+%D \quad c$
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+
+\def\doruledmkern
+ {\investigatemuskip\scratchmuskip
+ \flexiblefalse
+ \dodoruledmkern\normalmkern}
+
+\unexpanded\def\ruledmkern
+ {\bgroup
+ \afterassignment\doruledmkern\scratchmuskip=}
+
+%D \startbuffer
+%D $a \mskip3mu = \mskip3mu
+%D b \quad
+%D \mskip-2mu + \mskip-2mu
+%D \quad c$
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+
+\def\doruledmskip
+ {\investigatemuskip\scratchmuskip
+ \flexibletrue
+ \dodoruledmkern\normalmskip}
+
+\unexpanded\def\ruledmskip
+ {\bgroup
+ \afterassignment\doruledmskip\scratchmuskip=}
+
+%D \macros
+%D {penalty}
+%D
+%D After presenting fills, skip, kerns and glue we've come to
+%D see penalties. In the first implementation --- most of the
+%D time needed to develop this set of macros went into testing
+%D different types of visualization --- penalties were mere
+%D small blocks with one black half, depending on the sign.
+%D This most recent version also gives an indication of the
+%D amount of penalty. Penalties can go from less than $-10000$
+%D to over $+10000$, and their behavior is somewhat
+%D non-lineair, with some values having special meanings. We
+%D therefore decided not to use its value for a lineair
+%D indicator.
+%D
+%D \startbuffer
+%D one
+%D \penalty +100
+%D two
+%D \penalty +100
+%D \penalty -100
+%D three
+%D \penalty 0
+%D four
+%D \penalty +100
+%D five
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+%D
+%D The small sticks at the side of the penalty indicate it
+%D size. The next example shows the positive and negative
+%D penalties of 0, 1, 10, 100, 1000 and 10000.
+%D
+%D \startlinecorrection
+%D \hbox
+%D {test \ruledhpenalty0
+%D test \ruledhpenalty1
+%D test \ruledhpenalty10
+%D test \ruledhpenalty100
+%D test \ruledhpenalty1000
+%D test \ruledhpenalty10000
+%D test}
+%D \stoplinecorrection
+%D
+%D \blank
+%D
+%D \startlinecorrection
+%D \hbox
+%D {test \ruledhpenalty0
+%D test \ruledhpenalty-1
+%D test \ruledhpenalty-10
+%D test \ruledhpenalty-100
+%D test \ruledhpenalty-1000
+%D test \ruledhpenalty-10000
+%D test}
+%D \stoplinecorrection
+%D
+%D \blank
+%D
+%D This way stacked penalties of different severance can be
+%D shown in combination.
+%D
+%D test \ruledhpenalty10 \ruledhpenalty100
+%D test
+%D test \ruledhpenalty1000 \ruledhpenalty-1000
+%D test
+
+\def\setruledpenaltybox#1#2#3#4#5#6%
+ {\setbox#1\normalhbox
+ {\ifnum#2=0 \else
+ \edef\sign
+ {\ifnum#2>0 +\else-\fi}%
+ \dimen0=\ifnum\sign#2>9999
+ 28\else
+ \ifnum\sign#2>999
+ 22\else
+ \ifnum\sign#2>99
+ 16\else
+ \ifnum\sign#2>9
+ 10\else
+ 4
+ \fi\fi\fi\fi \testrulewidth
+ \ifnum#2<0
+ \normalhskip-\dimen0
+ \normalhskip-2\testrulewidth
+ \visualvrule
+ \!!width2\testrulewidth
+ \!!height#3\testrulewidth
+ \!!depth#4\testrulewidth
+ \fi
+ \visualvrule
+ \!!width\dimen0
+ \!!height#5\testrulewidth
+ \!!depth#6\testrulewidth
+ \ifnum#2>0
+ \visualvrule
+ \!!width2\testrulewidth
+ \!!height#3\testrulewidth
+ \!!depth#4\testrulewidth
+ \fi
+ \fi}%
+ \smashbox#1}
+
+\def\doruledhpenalty
+ {\dontinterfere
+ \dontcomplain
+ \investigatecount\scratchcounter
+ \testrulewidth2\testrulewidth
+ \boxrulewidth\testrulewidth
+ \setbox0\ruledhbox to 8\testrulewidth
+ {\ifnegative\else\normalhss\fi
+ \visualvrule
+ \!!depth8\testrulewidth
+ \!!width\ifzero0\else4\fi\testrulewidth
+ \ifpositive\else\normalhss\fi}%
+ \setruledpenaltybox{2}{\scratchcounter}{0}{8}{-3.5}{4.5}%
+ \normalpenalty\!!tenthousand
+ \setbox0\normalhbox
+ {\normalhskip-4\testrulewidth
+ \ifnegative
+ \box2\box0
+ \else
+ \box0\box2
+ \fi}%
+ \smashbox0%
+ \box0
+ \normalpenalty\scratchcounter
+ \egroup}
+
+\unexpanded\def\ruledhpenalty
+ {\bgroup
+ \afterassignment\doruledhpenalty
+ \scratchcounter=}
+
+%D The size of a vertical penalty is also shown on the
+%D horizontal axis. This way there is less interference with
+%D the often preceding or following skips and kerns.
+%D
+%D \startbuffer
+%D first line
+%D \par \penalty +100
+%D second line
+%D \par \penalty +100
+%D \par \penalty -100
+%D third line
+%D \par \penalty 0
+%D fourth line
+%D \par \penalty +100
+%D fifth line
+%D \stopbuffer
+%D
+%D \ShowBufferedExample
+
+\def\doruledvpenalty
+ {\ifdim\pagegoal=\maxdimen
+ \else
+ \nextdepth\prevdepth
+ \dontinterfere
+ \dontcomplain
+ \investigatecount\scratchcounter
+ \testrulewidth2\testrulewidth
+ \boxrulewidth\testrulewidth
+ \setbox0\ruledhbox
+ {\visualvrule
+ \!!height4\testrulewidth
+ \!!depth4\testrulewidth
+ \!!width\zeropoint
+ \visualvrule
+ \!!height\ifnegative.5\else4\fi\testrulewidth
+ \!!depth\ifpositive.5\else4\fi\testrulewidth
+ \!!width8\testrulewidth}%
+ \setruledpenaltybox{2}{\scratchcounter}{4}{4}{.5}{.5}%
+ \setbox0\normalhbox
+ {\normalhskip-4\testrulewidth
+ \ifnegative
+ \box2\box0
+ \else
+ \box0\box2
+ \fi
+ \normalhss}%
+ \smashbox0%
+ \normalpenalty\!!tenthousand
+ \nointerlineskip
+ \dp0\nextdepth % not \prevdepth=\nextdepth
+ \normalvbox
+ {\normalvcue{\box0}}%
+ \fi
+ \normalpenalty\scratchcounter
+ \egroup}
+
+\unexpanded\def\ruledvpenalty
+ {\bgroup
+ \afterassignment\doruledvpenalty
+ \scratchcounter=}
+
+\unexpanded\def\ruledpenalty
+ {\ifvmode
+ \expandafter\ruledvpenalty
+ \else
+ \expandafter\ruledhpenalty
+ \fi}
+
+%D At the cost of some more tokens, a bit more clever
+%D implementation would be:
+%D
+%D \starttyping
+%D \unexpanded\def\ruledpenalty%
+%D {\csname ruled\ifvmode v\else h\fi penalty\endcsname}
+%D \stoptyping
+
+%D \macros
+%D {showfils,dontshowfils,
+%D showboxes,dontshowboxes,
+%D showskips,dontshowskips,
+%D showpenalties,dontshowpenalties}
+%D
+%D For those who want to manipulate the visual cues in detail,
+%D we have grouped them.
+
+\def\showfils
+ {\let\hss \ruledhss
+ \let\hfil \ruledhfil
+ \let\hfill \ruledhfill
+ \let\hfilneg \ruledhfilneg
+ \let\hfillneg \ruledhfillneg
+ \let\vss \ruledvss
+ \let\vfil \ruledvfil
+ \let\vfill \ruledvfill
+ \let\vfilneg \ruledvfilneg
+ \let\vfillneg \ruledvfillneg}
+
+\def\dontshowfils
+ {\let\hss \normalhss
+ \let\hfil \normalhfil
+ \let\hfill \normalhfill
+ \let\hfilneg \normalhfilneg
+ \let\hfillneg \normalhfillneg
+ \let\vss \normalvss
+ \let\vfil \normalvfil
+ \let\vfill \normalvfill
+ \let\vfilneg \normalvfilneg
+ \let\vfillneg \normalvfillneg}
+
+\def\showboxes
+ {\baselineruletrue
+ \let\hbox \ruledhbox
+ \let\vbox \ruledvbox
+ \let\vtop \ruledvtop
+ \let\vcenter \ruledvcenter}
+
+\def\dontshowboxes
+ {\let\hbox \normalhbox
+ \let\vbox \normalvbox
+ \let\vtop \normalvtop
+ \let\vcenter \normalvcenter}
+
+\def\showskips
+ {\let\hskip \ruledhskip
+ \let\vskip \ruledvskip
+ \let\kern \ruledkern
+ \let\mskip \ruledmskip
+ \let\mkern \ruledmkern
+ \let\hglue \ruledhglue
+ \let\vglue \ruledvglue}
+
+\def\dontshowskips
+ {\let\hskip \normalhskip
+ \let\vskip \normalvskip
+ \let\kern \normalkern
+ \let\mskip \normalmskip
+ \let\mkern \normalmkern
+ \let\hglue \normalhglue
+ \let\vglue \normalvglue}
+
+\def\showpenalties
+ {\let\penalty \ruledpenalty}
+
+\def\dontshowpenalties
+ {\let\penalty \normalpenalty}
+
+%D \macros
+%D {showcomposition,dontshowcomposition,
+%D showingcomposition}
+%D
+%D All these nice options come together in three macros. One
+%D for turning the options on, one for turning them off, and a
+%D boolean for enabling the mechanism outside the scope of the
+%D user. The first two macros only do their job when we are
+%D actually showing the composition.
+%D
+%D \starttyping
+%D \showingcompositiontrue
+%D \showcomposition
+%D \stoptyping
+%D
+%D Because the output routine can do tricky things, like
+%D multiple column typesetting and manipulation of the
+%D pagebody, shifting things around and so on, the macro
+%D \type{\dontshowcomposition} best can be called when we enter
+%D this routine. Too much visual cues just don't make sense. In
+%D \CONTEXT\ this has been taken care of.
+
+\newif\ifshowingcomposition
+
+\def\showcomposition
+ {\ifshowingcomposition
+ \showfils
+ \showboxes
+ \showskips
+ \showpenalties
+ \fi}
+
+\def\dontshowcomposition
+ {\ifshowingcomposition
+ \dontshowfils
+ \dontshowboxes
+ \dontshowskips
+ \dontshowpenalties
+ \fi}
+
+%D \macros
+%D {showmakeup,
+%D defaulttestrulewidth}
+%D
+%D Just to make things even more easy, we have defined:
+%D
+%D \starttyping
+%D \showmakeup
+%D \stoptyping
+%D
+%D For the sake of those who don't (yet) use \CONTEXT\ we
+%D preset \type{\defaulttestrulewidth} to the already set
+%D value. Otherwise we default to a bodyfontsize related value.
+%D
+%D \starttyping
+%D \def\defaulttestrulewidth{.2pt}
+%D \stoptyping
+%D
+%D Beware, it's a macro not a \DIMENSION.
+
+\ifx\korpsgrootte\undefined
+ \edef\defaulttestrulewidth{\the\testrulewidth}
+\else
+ \def\defaulttestrulewidth{.02\korpsgrootte} % still dutch
+\fi
+
+\def\showmakeup
+ {\testrulewidth\defaulttestrulewidth
+ \showingcompositiontrue
+ \showcomposition}
+
+\protect
+
+%D \ifCONTEXT \let\next=\relax \else \let\next=\endinput
+%D The documented source you have been reading was processed
+%D using some surrogate makeup. When this file is processed
+%D in \CONTEXT, a few more examples show up here, like a local
+%D table of contents and a local register.
+%D \fi \next
+
+%D Lets end with some more advanced examples.
+%D Definitions and enumerations come in many flavors. The
+%D next one for instance is defined as:
+%D
+%D \starttyping
+%D \definedescription[test][place=left,hang=3,width=6em]
+%D \stoptyping
+%D
+%D When applied to some text, this would look like:
+%D
+%D \bgroup
+%D \showmakeup
+%D \definedescription[test][location=left,hang=3,width=6em]
+%D
+%D \test{visual\\debugger} I would be very pleased if \TEX\
+%D had two more primitives: \type{\vnop} and \type{\hnop}. Both
+%D should act and show up as normal boxes, but stay invisible
+%D for \TEX\ when it's doing calculations. The \type{\vnop}
+%D for instance should not interact with the internal mechanism
+%D responsible for the disappearing skips, kerns and penalties
+%D at a pagebreak. As long as we don't have these two boxtypes,
+%D visual debugging will never be perfect.
+%D
+%D \egroup
+%D
+%D The index to this section looks like:
+%D
+%D {\setupreferencing[prefixprefix=dummy]\showmakeup\placeindex[criterium=local]}
+%D
+%D Although not impressive examples or typesetting, both
+%D show us how and where things happen. When somehow the last
+%D lines in this two column index don't allign, then this is
+%D due to some still unknown interference.
+
+\ifx\contextversion\undefined
+
+ \let \unexpanded \normalunexpanded
+
+\fi
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-eur.tex b/Master/texmf-dist/tex/context/base/symb-eur.tex
new file mode 100644
index 00000000000..515db6ae588
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-eur.tex
@@ -0,0 +1,66 @@
+%D \module
+%D [ file=symb-eur,
+%D version=2000.06.22,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Adobe Euro Symbols,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\loadmapfile [original-adobe-euro.map]
+
+\definefontsynonym [EuroSerif] [eurose]
+\definefontsynonym [EuroSerifBold] [euroseb]
+\definefontsynonym [EuroSerifItalic] [eurosei]
+\definefontsynonym [EuroSerifSlanted] [eurosei]
+\definefontsynonym [EuroSerifBoldItalic] [eurosebi]
+\definefontsynonym [EuroSerifBoldSlanted] [eurosebi]
+
+\definefontsynonym [EuroSans] [eurosa]
+\definefontsynonym [EuroSansBold] [eurosab]
+\definefontsynonym [EuroSansItalic] [eurosai]
+\definefontsynonym [EuroSansSlanted] [eurosai]
+\definefontsynonym [EuroSansBoldItalic] [eurosabi]
+\definefontsynonym [EuroSansBoldSlanted] [eurosabi]
+
+\definefontsynonym [EuroMono] [euromo]
+\definefontsynonym [EuroMonoBold] [euromob]
+\definefontsynonym [EuroMonoSlanted] [euromoi]
+\definefontsynonym [EuroMonoItalic] [euromoi]
+\definefontsynonym [EuroMonoBoldItalic] [euromobi]
+\definefontsynonym [EuroMonoBoldSlanted] [euromobi]
+
+\definesymbol [euro] [\getglyph{Euro}{\char160}]
+
+\startencoding[default]
+
+ \definecharacter texteuro {\symbol[euro]}
+
+\stopencoding
+
+\unexpanded\def\euro{\doiftextelse\texteuro\texteuro{\symbol[euro]}}
+
+% ok for one font series, but not for mixed sets
+%
+% \unexpanded\def\euro
+% {\doiftextelse \texteuro \texteuro
+% {\unexpanded\def\euro{\symbol[euro]}\euro}
+
+%D The next table shows the complete set of symbols:
+%D
+%D \starttabulate[|l|c|c|c|c|c|c|]
+%D \NC \NC \tex{tf} \NC \tex{bf} \NC \tex{sl}
+%D \NC \tex{it} \NC \tex{bs} \NC \tex{bi} \NC\NR
+%D \NC \rm Serif \NC \rm\tf\euro \NC \rm\bf\euro \NC \rm\sl\euro
+%D \NC \rm\it\euro \NC \rm\bs\euro \NC \rm\bi\euro \NC\NR
+%D \NC \ss Sans \NC \ss\tf\euro \NC \ss\bf\euro \NC \ss\sl\euro
+%D \NC \ss\it\euro \NC \ss\bs\euro \NC \ss\bi\euro \NC\NR
+%D \NC \tt Mono \NC \tt\tf\euro \NC \tt\bf\euro \NC \tt\sl\euro
+%D \NC \tt\it\euro \NC \tt\bs\euro \NC \tt\bi\euro \NC\NR
+%D \stoptabulate
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-glm.tex b/Master/texmf-dist/tex/context/base/symb-glm.tex
new file mode 100644
index 00000000000..cd7c05dbda2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-glm.tex
@@ -0,0 +1,77 @@
+%D \module
+%D [ file=symb-glm,
+%D version=2002.05.07,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Guillemots,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Watch the \type {x} before the local symbols.
+
+\loadmapfile [ec-public-lm.map]
+
+% this used to be:
+%
+% \definefontsynonym [GuilSerif] [plr10] [encoding=ec]
+% \definefontsynonym [GuilSerifBold] [plbx10] [encoding=ec]
+% \definefontsynonym [GuilSerifItalic] [plti10] [encoding=ec]
+% \definefontsynonym [GuilSerifSlanted] [plsl10] [encoding=ec]
+% \definefontsynonym [GuilSerifBoldItalic] [plbxti10] [encoding=ec]
+% \definefontsynonym [GuilSerifBoldSlanted] [plbxsl10] [encoding=ec]
+%
+% \definefontsynonym [GuilSans] [plss10] [encoding=ec]
+% \definefontsynonym [GuilSansBold] [plssbx10] [encoding=ec]
+% \definefontsynonym [GuilSansItalic] [plssi10] [encoding=ec]
+% \definefontsynonym [GuilSansSlanted] [plssi10] [encoding=ec]
+% \definefontsynonym [GuilSansBoldItalic] [plssbi10] [encoding=ec]
+% \definefontsynonym [GuilSansBoldSlanted] [plssbi10] [encoding=ec]
+%
+% \definefontsynonym [GuilMono] [pltt10] [encoding=ec]
+%
+% but was also one of the reasons for triggering the lm project, so:
+
+\definefontsynonym [GuilSerif] [cork-lmr10] [encoding=ec]
+\definefontsynonym [GuilSerifBold] [cork-lmbx10] [encoding=ec]
+\definefontsynonym [GuilSerifItalic] [cork-lmti10] [encoding=ec]
+\definefontsynonym [GuilSerifSlanted] [cork-lmsl10] [encoding=ec]
+\definefontsynonym [GuilSerifBoldItalic] [cork-lmbxti10] [encoding=ec]
+\definefontsynonym [GuilSerifBoldSlanted] [cork-lmbxsl10] [encoding=ec]
+
+\definefontsynonym [GuilSans] [cork-lmss10] [encoding=ec]
+\definefontsynonym [GuilSansBold] [cork-lmssbx10] [encoding=ec]
+\definefontsynonym [GuilSansItalic] [cork-lmssi10] [encoding=ec]
+\definefontsynonym [GuilSansSlanted] [cork-lmssi10] [encoding=ec]
+\definefontsynonym [GuilSansBoldItalic] [cork-lmssbi10] [encoding=ec]
+\definefontsynonym [GuilSansBoldSlanted] [cork-lmssbi10] [encoding=ec]
+
+\definefontsynonym [GuilMono] [cork-lmtt10] [encoding=ec]
+%definefontsynonym [GuilMonoBold] [cork-lmtt10] [encoding=ec]
+%definefontsynonym [GuilMonoSlanted] [cork-lmtt10] [encoding=ec]
+%definefontsynonym [GuilMonoItalic] [cork-lmtt10] [encoding=ec]
+%definefontsynonym [GuilMonoBoldItalic] [cork-lmtt10] [encoding=ec]
+%definefontsynonym [GuilMonoBoldSlanted] [cork-lmtt10] [encoding=ec]
+
+\definesymbol [xleftguillemot] [\getglyph{Guil}{\char19}]
+\definesymbol [xrightguillemot] [\getglyph{Guil}{\char20}]
+
+\definesymbol [xguilsingleleft] [\getglyph{Guil}{\char14}]
+\definesymbol [xguilsingleright] [\getglyph{Guil}{\char15}]
+
+%D A strange place, but okay (the \type {\relax} prevents space gobbling)
+
+\startencoding [default]
+
+ \definecharacter leftguillemot {\symbol[xleftguillemot]\relax}
+ \definecharacter rightguillemot {\symbol[xrightguillemot]\relax}
+
+ \definecharacter guilsingleleft {\symbol[xguilsingleleft]\relax}
+ \definecharacter guilsingleright {\symbol[xguilsingleright]\relax}
+
+\stopencoding
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-ini.tex b/Master/texmf-dist/tex/context/base/symb-ini.tex
new file mode 100644
index 00000000000..496292c5799
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-ini.tex
@@ -0,0 +1,308 @@
+%D \module
+%D [ file=symb-ini,
+%D version=1998.07.20,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Basic Symbols Commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The macros described here used to be part of the \type
+%D {core-con} module. I decided to move them here when
+%D symbolsets saw the light. Let their light shine.
+
+\writestatus{loading}{Context Symbol Libraries / Initialization}
+
+\unprotect
+
+\startmessages dutch library: symbols
+ title: symbolen
+ 1: symboolset -- wordt geladen
+\stopmessages
+
+\startmessages english library: symbols
+ title: symbols
+ 1: loading symbolset --
+\stopmessages
+
+\startmessages german library: symbols
+ title: Symbole
+ 1: Lade Symboldatei --
+\stopmessages
+
+\startmessages czech library: symbols
+ title: symboly
+ 1: nacita se soubor symbolu --
+\stopmessages
+
+\startmessages italian library: symbols
+ title: simboli
+ 1: caricamento gruppo di simboli --
+\stopmessages
+
+\startmessages norwegian library: symbols
+ title: symboler
+ 1: leser inn symbolsett --
+\stopmessages
+
+\startmessages romanian library: symbols
+ title: simboluri
+ 1: se incarca setul de simboluri --
+\stopmessages
+
+%D \macros
+%D {definesymbol, symbol}
+%D
+%D Converting numbers or levels into a character, romannumeral,
+%D symbol or something else, is supported by many \CONTEXT\
+%D commands. Therefore we need a mechanism for linking such
+%D numbers to their counterparts.
+%D
+%D First we take care of symbols. These are for instance used
+%D in enumerations and itemizations. We have:
+%D
+%D \showsetup{definesymbol}
+%D \showsetup{symbol}
+%D
+%D Symbols are simply linked to a tag. Such tags can be numbers
+%D or strings.
+%D
+%D \starttyping
+%D \definesymbol [1] [$\bullet$]
+%D \definesymbol [level 5] [$\star$]
+%D \stoptyping
+
+% ss:tag -> symbol
+% ss:set:tag -> symbol out of set
+% sstag -> list of symbols in set
+
+\def\definesymbol
+ {\dotripleempty\dodefinesymbol}
+
+% \def\dodefinesymbol[#1][#2][#3]% class name meaning
+% {\ifthirdargument
+% \setvalue{\??ss:#1:#2}{#3}%
+% \doifsomething{#1}{\addvalue{\??ss*#1}{#2}}%
+% \else
+% \setvalue{\??ss:\currentsymboldef:#1}{#2}%
+% \fi}
+
+\def\dodefinesymbol[#1][#2][#3]% class name meaning
+ {\ifthirdargument
+ \setvalue{\??ss:#1:#2}{#3}%
+ \doifsomething{#1}{\addvalue{\??ss*#1}{#2}}%
+ \else
+ \setvalue{\??ss:\currentsymboldef:#1}{#2}%
+ \addvalue{\??ss*\currentsymboldef}{#1}%
+ \fi}
+
+\def\doifinsymbolsetelse#1#2{\doifdefinedelse{\??ss:#1:#2}}
+\def\doifinsymbolset #1#2{\doifdefined {\??ss:#1:#2}}
+\def\doifsymbolsetelse #1{\doifdefinedelse{\??ss*#1}}
+
+\def\symbolset#1{\executeifdefined{\??ss*#1}\empty} % no [#1], to be used in commalists etc
+
+%D Since symbols are used frequently in interactive
+%D documents, we speed up this one. Well, that was history,
+%D since now we simplified things a bit, because the low
+%D level macros have been sped up now and then.
+
+\unexpanded\def\symbol % This one always gobbles spaces,
+ {\dodoubleempty\dosymbol} % so never change it again!
+
+\newif\ifnosymbol \newtoks\everysymbol
+
+\def\dodosymbol#1#2% \relax's prevent lookahead problems
+ {\nosymbolfalse{\the\everysymbol\csname\??ss:#1:#2\endcsname\relax}\relax}
+
+\def\directsymbol#1#2% no \relax, there can be an argument, see lists
+ {\executeifdefined{\??ss:#1:#2}\firstofoneargument}
+
+% \def\dosymbol[#1][#2]%
+% {\nosymboltrue
+% \ifsecondargument
+% \doifinsymbolset{#1}{#2}{\dodosymbol{#1}{#2}}%
+% \fi
+% \ifnosymbol
+% \edef\currentsymbol{#1}%
+% \the\symbolsetups
+% \ifnosymbol
+% \redosymbol\currentsymbol
+% \fi
+% \fi}
+
+\def\dosymbol[#1][#2]%
+ {\nosymboltrue
+ \ifsecondargument
+ \edef\currentsymbol{#2}%
+ \doifinsymbolset{#1}{#2}{\dodosymbol{#1}{#2}}%
+ \else
+ \edef\currentsymbol{#1}%
+ \fi
+ \ifnosymbol
+ \the\symbolsetups
+ \ifnosymbol
+ \redosymbol\currentsymbol
+ \fi
+ \fi}
+
+\def\fetchsymbol#1%
+ {\ifnosymbol
+ \doifinsymbolset{#1}\currentsymbol{\dodosymbol{#1}\currentsymbol}%
+ \fi}
+
+\def\redosymbol#1%
+% {\doifinsymbolsetelse\empty{#1}{\dodosymbol\empty{#1}}{#1}} % more efficient:
+ {\doifinsymbolsetelse\empty{#1}{\dodosymbol\empty}\firstofoneargument{#1}}
+
+% % % % %
+% this should go in symb-fig, to be loaded after core-fig
+
+%D \macros
+%D {definefiguresymbol}
+%D
+%D To simplify defining figure symbols, we offer:
+%D
+%D \showsetup{definefiguresymbol}
+%D
+%D By default, such symbols scale along the current bodyfont
+%D size or running font size (which is better).
+
+\def\defaultsymbolfactor{10}
+\def\defaultsymbolheight{1.25ex}
+
+\def\figuresymbol
+ {\dodoubleempty\dofiguresymbol}
+
+\def\dofiguresymbol[#1][% #2]%
+ {\externalfigure[#1][\c!reset=\v!yes,\c!symbol=\v!yes,\c!height=\defaultsymbolheight,}% #2]}
+
+\appendtoks \resetexternalfigures \to \everysymbol
+
+\def\definefiguresymbol
+ {\dotripleempty\dodefinefiguresymbol}
+
+\def\dodefinefiguresymbol[#1][#2][#3]%
+ {\ifsecondargument
+ \definesymbol[#1][{\dofiguresymbol[#2][#3]}]%
+ \fi}
+
+% but for the moment we keep it here
+% % % % % %
+
+%\def\objectsymbol[#1]%
+% {\dopresetfieldsymbol{#1}\dogetfieldsymbol{#1}}
+
+%D \macros
+%D {doifsymboldefinedelse}
+%D
+%D A handy private one:
+
+% a bit messy
+
+\def\xfetchsymbol#1%
+ {\ifnosymbol
+ \doifinsymbolset{#1}\currentsymbol\nosymbolfalse
+ \fi}
+
+\def\xredosymbol#1%
+ {\doifinsymbolset\empty\currentsymbol\nosymbolfalse}
+
+\def\doifsymboldefinedelse#1%
+ {\bgroup
+ \edef\currentsymbol{#1}%
+ \let\fetchsymbol\xfetchsymbol
+ \nosymboltrue
+ \the\symbolsetups
+ \ifnosymbol
+ \xredosymbol\currentsymbol
+ \ifnosymbol
+ \egroup\@EAEAEA\secondoftwoarguments
+ \else
+ \egroup\@EAEAEA\firstoftwoarguments
+ \fi
+ \else
+ \egroup\@EA\firstoftwoarguments
+ \fi}
+
+%D \macros
+%D {setupsymbolset,startsymbolset}
+%D
+%D From these macro definitions one can deduce that symbols can
+%D be grouped in symbol sets:
+%D
+%D \starttyping
+%D \startsymbolset [navigation 1]
+%D \definefiguresymbol [Next] [mp-symb.1]
+%D \definefiguresymbol [Prev] [mp-symb.2]
+%D \stopsymbolset
+%D \stoptyping
+%D
+%D Such a symbol can be typeset with:
+%D
+%D \starttyping
+%D \setupsymbolset[navigation 1]\symbol[Next]
+%D \stoptyping
+%D
+%D or simply:
+%D
+%D \starttyping
+%D \symbol[navigation 1][Next]
+%D \stoptyping
+%D
+%D Formally:
+%D
+%D \showsetup{setupsymbolset}
+%D \showsetup{startsymbolset}
+
+\let\currentsymboldef\empty
+
+\def\startsymbolset[#1]
+ {\def\currentsymboldef{#1}}
+
+\def\stopsymbolset
+ {\let\currentsymboldef\empty}
+
+\newtoks\symbolsetups
+
+\def\setupsymbolset[#1]%
+ {\prependtoksonce\fetchsymbol{#1}\to\symbolsetups}
+
+\def\resetsymbolset
+ {\symbolsetups\emptytoks}
+
+\def\forcesymbolset[#1]%
+ {\symbolsetups{\fetchsymbol{#1}}}
+
+%D \macros
+%D {showsymbolset}
+%D
+%D \showsetup{showsymbolset}
+
+\fetchruntimecommand \showsymbolset {\f!symbolprefix\s!run}
+
+%D \macros
+%D {usesymbols}
+%D
+%D \showsetup{usesymbols}
+
+\def\dousesymbols#1%
+ {\makeshortfilename[\f!symbolprefix#1]%
+ \showmessage\m!symbols1{#1}%
+ \startreadingfile
+ \readsysfile\shortfilename\donothing\donothing
+ \stopreadingfile}
+
+\def\usesymbols[#1]%
+ {\processcommalist[#1]\dousesymbols}
+
+%D As longs as symbols are linked to levels or numbers, we can
+%D also use the conversion mechanism, but in for instance the
+%D itemization macros, we prefer symbols because they can more
+%D easier be (partially) redefined.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-jmn.tex b/Master/texmf-dist/tex/context/base/symb-jmn.tex
new file mode 100644
index 00000000000..21a0d1562fa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-jmn.tex
@@ -0,0 +1,200 @@
+%D \module
+%D [ file=symb-jmn,
+%D version=2004.08.02,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Special Navigational Symbols,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file defines a few navigational symbol vectors. The font used
+%D here is designed by Janusz M.~Nowacki, one of the Polish Font
+%D Gurus who made this font specially for me, hence the name. If you
+%D you want to meet its designer, come to Bachotek! In case you're
+%D not familiar with his work, take a look at the Antikwa, Iwona and
+%D Kurier fonts!
+%D
+%D \usesymbols[jmn]
+%D
+%D \showsymbolset[navigation 1]
+%D \showsymbolset[navigation 3]
+%D \showsymbolset[navigation 2]
+%D \showsymbolset[navigation 4]
+%D
+%D \page
+%D \showfont[NavigationNormal]
+%D \page
+%D \showfont[NavigationShadowed]
+%D \page
+
+% needed:
+%
+% - inverted crossed
+% - curved diamond
+
+\unprotect
+
+\loadmapfile[original-base.map] % \loadmapfile [original-context-symbol.map]
+
+\definefontsynonym[NavigationNormal] [hans]
+\definefontsynonym[NavigationShadowed] [hans-sh]
+
+\definefontsynonym[NavigationFont] [NavigationNormal]
+%definefontsynonym[NavigationFont] [NavigationShadowed]
+
+\def\NavigationGlyph#1{\getglyph{NavigationFont}{\char#1}}
+
+\unprotect
+
+\startsymbolset [navigation 1]
+
+ \definesymbol [\v!previouspage] [\NavigationGlyph {65}]
+ \definesymbol [\v!PreviousJump] [\NavigationGlyph{128}]
+ \definesymbol [\v!firstpage] [\NavigationGlyph{129}]
+
+ \definesymbol [\v!nextpage] [\NavigationGlyph {66}]
+ \definesymbol [\v!NextJump] [\NavigationGlyph{130}]
+ \definesymbol [\v!lastpage] [\NavigationGlyph{131}]
+
+ \definesymbol [\v!CloseDocument] [\NavigationGlyph{160}]
+
+ \definesymbol [\v!firstsubpage] [\NavigationGlyph{178}]
+ \definesymbol [\v!previoussubpage] [\NavigationGlyph{208}]
+ \definesymbol [\v!nextsubpage] [\NavigationGlyph{209}]
+ \definesymbol [\v!lastsubpage] [\NavigationGlyph{178}]
+
+ \definesymbol [\v!StartSound] [\NavigationGlyph {66}]
+ \definesymbol [\v!PauseSound] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopSound] [\NavigationGlyph{170}]
+
+ \definesymbol [\v!StartMovie] [\NavigationGlyph {66}]
+ \definesymbol [\v!PauseMovie] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopMovie] [\NavigationGlyph{170}]
+
+ \definesymbol [\v!StartRendering] [\NavigationGlyph {66}]
+ \definesymbol [\v!PauseRendering] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopRendering] [\NavigationGlyph{170}]
+ \definesymbol [\v!ResumeRendering] [\NavigationGlyph {66}]
+
+\stopsymbolset
+
+\startsymbolset [navigation 2]
+
+ \definesymbol [\v!previouspage] [\NavigationGlyph {67}]
+ \definesymbol [\v!PreviousJump] [\NavigationGlyph{132}]
+ \definesymbol [\v!firstpage] [\NavigationGlyph{133}]
+
+ \definesymbol [\v!nextpage] [\NavigationGlyph {68}]
+ \definesymbol [\v!NextJump] [\NavigationGlyph{134}]
+ \definesymbol [\v!lastpage] [\NavigationGlyph{135}]
+
+ \definesymbol [\v!CloseDocument] [\NavigationGlyph{160}]
+
+ \definesymbol [\v!firstsubpage] [\NavigationGlyph{176}]
+ \definesymbol [\v!previoussubpage] [\NavigationGlyph{210}]
+ \definesymbol [\v!nextsubpage] [\NavigationGlyph{211}]
+ \definesymbol [\v!lastsubpage] [\NavigationGlyph{176}]
+
+ \definesymbol [\v!StartSound] [\NavigationGlyph {68}]
+ \definesymbol [\v!PauseSound] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopSound] [\NavigationGlyph{168}]
+
+ \definesymbol [\v!StartMovie] [\NavigationGlyph {68}]
+ \definesymbol [\v!PauseMovie] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopMovie] [\NavigationGlyph{168}]
+
+ \definesymbol [\v!StartRendering] [\NavigationGlyph {68}]
+ \definesymbol [\v!PauseRendering] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopRendering] [\NavigationGlyph{168}]
+ \definesymbol [\v!ResumeRendering] [\NavigationGlyph {68}]
+
+\stopsymbolset
+
+\startsymbolset [navigation 3]
+
+ \definesymbol [\v!previouspage] [\NavigationGlyph {73}]
+ \definesymbol [\v!PreviousJump] [\NavigationGlyph{144}]
+ \definesymbol [\v!firstpage] [\NavigationGlyph{145}]
+
+ \definesymbol [\v!nextpage] [\NavigationGlyph {74}]
+ \definesymbol [\v!NextJump] [\NavigationGlyph{146}]
+ \definesymbol [\v!lastpage] [\NavigationGlyph{147}]
+
+ \definesymbol [\v!CloseDocument] [\NavigationGlyph{160}]
+
+ \definesymbol [\v!firstsubpage] [\NavigationGlyph{178}]
+ \definesymbol [\v!previoussubpage] [\NavigationGlyph{212}]
+ \definesymbol [\v!nextsubpage] [\NavigationGlyph{213}]
+ \definesymbol [\v!lastsubpage] [\NavigationGlyph{178}]
+
+ \definesymbol [\v!StartSound] [\NavigationGlyph {73}]
+ \definesymbol [\v!PauseSound] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopSound] [\NavigationGlyph{170}]
+
+ \definesymbol [\v!StartMovie] [\NavigationGlyph {73}]
+ \definesymbol [\v!PauseMovie] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopMovie] [\NavigationGlyph{170}]
+
+ \definesymbol [\v!StartRendering] [\NavigationGlyph {73}]
+ \definesymbol [\v!PauseRendering] [\NavigationGlyph{168}]
+ \definesymbol [\v!StopRendering] [\NavigationGlyph{170}]
+ \definesymbol [\v!ResumeRendering] [\NavigationGlyph {73}]
+
+\stopsymbolset
+
+
+% 1 left : 065 067 073 075
+% 2 left : 128 132 144 148
+% 3 left : 129 133 145 149
+
+% 1 right : 066 068 074 076
+% 2 right : 130 134 146 150
+% 3 right : 131 135 147 151
+
+% crossed : 160 160 160 160
+% opened : 152 152 156 156
+% closed : 154 154 158 158
+
+% larrow : 208 210 212 214
+% rarrow : 209 211 213 215
+% barrow : 178 178 178 178
+% ocircle : 168 168 168 168
+% ccircle : 170 170 170 170
+
+\startsymbolset [navigation 4]
+
+ \definesymbol [\v!previouspage] [\NavigationGlyph {75}]
+ \definesymbol [\v!PreviousJump] [\NavigationGlyph{148}]
+ \definesymbol [\v!firstpage] [\NavigationGlyph{149}]
+
+ \definesymbol [\v!nextpage] [\NavigationGlyph {76}]
+ \definesymbol [\v!NextJump] [\NavigationGlyph{150}]
+ \definesymbol [\v!lastpage] [\NavigationGlyph{151}]
+
+ \definesymbol [\v!CloseDocument] [\NavigationGlyph{160}]
+
+ \definesymbol [\v!firstsubpage] [\NavigationGlyph{176}]
+ \definesymbol [\v!previoussubpage] [\NavigationGlyph{214}]
+ \definesymbol [\v!nextsubpage] [\NavigationGlyph{215}]
+ \definesymbol [\v!lastsubpage] [\NavigationGlyph{176}]
+
+ \definesymbol [\v!StartSound] [\NavigationGlyph {75}]
+ \definesymbol [\v!PauseSound] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopSound] [\NavigationGlyph{168}]
+
+ \definesymbol [\v!StartMovie] [\NavigationGlyph {75}]
+ \definesymbol [\v!PauseMovie] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopMovie] [\NavigationGlyph{168}]
+
+ \definesymbol [\v!StartRendering] [\NavigationGlyph {75}]
+ \definesymbol [\v!PauseRendering] [\NavigationGlyph{170}]
+ \definesymbol [\v!StopRendering] [\NavigationGlyph{168}]
+ \definesymbol [\v!ResumeRendering] [\NavigationGlyph {75}]
+
+\stopsymbolset
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-mis.tex b/Master/texmf-dist/tex/context/base/symb-mis.tex
new file mode 100644
index 00000000000..5a24ab832fd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-mis.tex
@@ -0,0 +1,141 @@
+%D \module
+%D [ file=symb-mis,
+%D version=2002.05.07,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Miscelaneous,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D We predefine some common symbols and conversions that will
+%D be understood by many commands.
+
+% \mathematics no longer needed
+
+\definesymbol [\v!none] []
+\definesymbol [bullet] [\mathematics{\bullet}]
+\definesymbol [dash] [\mathematics{-}]
+\definesymbol [star] [\mathematics{\star}]
+\definesymbol [triangle] [\mathematics{\triangleright}]
+\definesymbol [circle] [\mathematics{\circ}]
+%definesymbol [medcircle] [\hbox{\setsmallbodyfont\raise\onepoint\hbox{\mathematics{\bigcirc}}}]
+\definesymbol [square] [\mathematics{\square}]
+\definesymbol [diamond] [\mathematics{\diamond}]
+
+\definesymbol [smallcircle] [\hbox{\raise.1ex\hbox{\mathematics{\scriptscriptstyle\bigcirc}}}]
+\definesymbol [medcircle] [\hbox{\raise.1ex\hbox{\mathematics{\scriptstyle \bigcirc}}}]
+\definesymbol [bigcircle] [\mathematics{\bigcirc}]
+
+
+\definesymbol [1] [{\symbol[bullet]}]
+\definesymbol [2] [{\symbol[dash]}]
+\definesymbol [3] [{\symbol[star]}]
+\definesymbol [4] [{\symbol[triangle]}]
+\definesymbol [5] [{\symbol[circle]}]
+\definesymbol [6] [{\symbol[medcircle]}]
+\definesymbol [7] [{\symbol[bigcircle]}]
+\definesymbol [8] [{\symbol[square]}]
+
+%D Special hyperlinks, namely those to pages or navigational
+%D properties, are associated with symbols.
+
+\definesymbol [\v!firstpage] [\gotobegincharacter]
+\definesymbol [\v!previouspage] [\gobackwardcharacter]
+\definesymbol [\v!nextpage] [\goforwardcharacter]
+\definesymbol [\v!lastpage] [\gotoendcharacter]
+\definesymbol [\v!firstsubpage] [\gotobegincharacter]
+\definesymbol [\v!previoussubpage] [\gobackwardcharacter]
+\definesymbol [\v!nextsubpage] [\goforwardcharacter]
+\definesymbol [\v!lastsubpage] [\gotoendcharacter]
+\definesymbol [\v!PreviousJump] [\gobackjumpcharacter]
+\definesymbol [\v!NextJump] [\goforjumpcharacter]
+\definesymbol [\v!CloseDocument] [\closecharacter]
+
+\definesymbol [\v!first] [{\symbol[\v!firstpage]}]
+\definesymbol [\v!previous] [{\symbol[\v!previouspage]}]
+\definesymbol [\v!next] [{\symbol[\v!nextpage]}]
+\definesymbol [\v!last] [{\symbol[\v!lastpage]}]
+\definesymbol [\v!somewhere] [\gotosomewherecharacter]
+\definesymbol [\v!nowhere] [\gonowherecharacter]
+
+\definesymbol [\v!backward] [{\symbol[\v!previouspage]}]
+\definesymbol [\v!forward] [{\symbol[\v!nextpage]}]
+
+%D The next two symbols (\symbol[P] and \symbol[S]) are
+%D variations in their math counterparts. The following ones
+%D {\em do} scale.
+
+% todo : hook this into \textsection
+
+\definesymbol [S] [\getglyph{MathSymbol}{\char"78}]
+\definesymbol [P] [\getglyph{MathSymbol}{\char"7B}]
+
+%D These symbols are taken from the Computer Moders Roman
+%D symbol set or, when present, from the additional symbols of
+%D the American Mathematical Society. Of course one can use
+%D his or her own symbols by redefining them.
+
+\def\dogotocharacter#1#2#3%
+ {\ifx#1\undefined#2\else#3\fi}
+
+\def\gotobegincharacter
+ {\hbox
+ {\dogotocharacter\blacktriangleleft
+ {\setbox0\hbox{\mathematics{\triangleleft}}%
+ \vrule\!!width.085ex\!!height1.075\ht0\!!depth\dp0
+ \kern-.11ex\box0}
+ {\setbox0\hbox{\mathematics{\blacktriangleleft}}%
+ \setbox2\hbox{\vrule\!!height\ht0\!!depth\dp0\!!width.25ex}%
+ \hbox{\lower.03ex\box2\kern-.35ex\box0}}}}
+
+\def\gotoendcharacter
+ {\hbox
+ {\dogotocharacter\blacktriangleright
+ {\setbox0\hbox{\mathematics{\triangleright}}%
+ \copy0\kern-.11ex
+ \vrule\!!width.085ex\!!height1.075\ht0\!!depth\dp0}
+ {\setbox0\hbox{\mathematics{\blacktriangleright}}%
+ \setbox2\hbox{\vrule\!!height\ht0\!!depth\dp0\!!width.25ex}%
+ \hbox{\box0\kern-.35ex\lower.03ex\box2}}}}
+
+\def\gobackwardcharacter
+ {\mathematics{\dogotocharacter\blacktriangleright\triangleleft\blacktriangleleft}}
+
+\def\goforwardcharacter
+ {\mathematics{\dogotocharacter\blacktriangleright\triangleright\blacktriangleright}}
+
+\def\gonowherecharacter
+ {\mathematics{\bullet}}
+
+%\def\gotosomewherecharacter% {} permits ^\...
+% {{\hbox{\hsmash{\gobackwardcharacter}\goforwardcharacter}}}
+
+\def\gotosomewherecharacter
+ {{\hbox{\hsmash{\symbol[\v!previous]}\symbol[\v!next]}}}
+
+\unexpanded\def\closecharacter
+ {\dogotocharacter\boxtimes
+ {\ruledhbox{\mathematics{\times}}}
+ {\mathematics{\boxtimes}}}
+
+\def\goforjumpcharacter
+ {\hbox{\goforwardcharacter \kern-.5em\goforwardcharacter}}
+
+\def\gobackjumpcharacter
+ {\hbox{\gobackwardcharacter\kern-.5em\gobackwardcharacter}}
+
+%D The next two symbols are for Daniel Flipo:
+
+\definesymbol [Numero] [N\high{\nocap{o}\kern.2em}]
+\definesymbol [numero] [n\high{\nocap{o}\kern.2em}]
+
+\def\Numero{\symbol[Numero]}
+\def\numero{\symbol[numero]}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-mvs.tex b/Master/texmf-dist/tex/context/base/symb-mvs.tex
new file mode 100644
index 00000000000..1dd3da0a00c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-mvs.tex
@@ -0,0 +1,217 @@
+%D \module
+%D [ file=symb-mvs,
+%D version=2000.03.30,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Martin Vogels Symbole,
+%D author=Tobias Burnus \& Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module implements the Martin Vogel Symbole font
+%D (marvosym). The names are derived from the \LATEX\ package
+%D \type {marvosym} of Thomas Henlich. The symbols are
+%D available as Type~1 font and are included in \TETEX\ and
+%D \FPTEX\ distributions.
+%D
+%D This symbol font offers the signs of the zodiac, four
+%D alternative the euro signs, some general office signs and
+%D some more.
+%D
+%D The font was designed by Martin Vogel who can be reached at
+%D \hyphenatedurl {martin.vogel@fh-bochum.de}. More information
+%D can be found at \hyphenatedurl
+%D {http://www.fh-bochum.de/fb1/vogel/marvosym.html}. The
+%D conversion to Type~1 font was done by Thomas Henlich, who
+%D can be reached at \hyphenatedurl
+%D {thenlich@rcs.urz.tu-dresden.de}.
+%D
+%D This module is based on the current \CTAN\ version (as of
+%D March 30, 2000) and is older than the TrueType version at
+%D Martin Vogel's Homepage. The definitions in this module
+%D reflect the \CTAN\ version. The font conversion was done by
+%D Thomas Henlich using \type {ttf2pt1}, a program that can be
+%D found at \hyphenatedurl
+%D {http://www.netspace.net.au/~mheath/ttf2pt1/}.
+%D
+%D Using the new version of \type {marvosymb}, the MVzero will
+%D has a slash and the FHBOLOGO, (wo)manface, and (wo)manfront
+%D are replaced by other symbols.
+
+\loadmapfile[original-base.map] % \loadmapfile[original-vogel-symbol]
+
+\definefontsynonym [MartinVogel] [fmvr8x]
+
+\def\MartinVogelSymbol#1{\getglyph{MartinVogel}{\char#1}}
+
+% Astro signs and signs of the zodiac
+
+\startsymbolset [astronomic]
+
+ \definesymbol [Sun] [\MartinVogelSymbol{192}]
+ \definesymbol [Moon] [\MartinVogelSymbol{193}]
+ \definesymbol [Mercury] [\MartinVogelSymbol{194}]
+ \definesymbol [Venus] [\MartinVogelSymbol{195}]
+ \definesymbol [Mars] [\MartinVogelSymbol{196}]
+ \definesymbol [Jupiter] [\MartinVogelSymbol{197}]
+ \definesymbol [Saturn] [\MartinVogelSymbol{198}]
+ \definesymbol [Uranus] [\MartinVogelSymbol{199}]
+ \definesymbol [Neptune] [\MartinVogelSymbol{200}]
+ \definesymbol [Pluto] [\MartinVogelSymbol{201}]
+
+\stopsymbolset
+
+\startsymbolset [zodiac]
+
+ \definesymbol [Aries] [\MartinVogelSymbol{224}]
+ \definesymbol [Taurus] [\MartinVogelSymbol{225}]
+ \definesymbol [Gemini] [\MartinVogelSymbol{226}]
+ \definesymbol [Cancer] [\MartinVogelSymbol{227}]
+ \definesymbol [Leo] [\MartinVogelSymbol{228}]
+ \definesymbol [Virgo] [\MartinVogelSymbol{229}]
+ \definesymbol [Libra] [\MartinVogelSymbol{230}]
+ \definesymbol [Scorpio] [\MartinVogelSymbol{231}]
+ \definesymbol [Sagittarius] [\MartinVogelSymbol{232}]
+ \definesymbol [Capricorn] [\MartinVogelSymbol{233}]
+ \definesymbol [Aquarius] [\MartinVogelSymbol{234}]
+ \definesymbol [Pisces] [\MartinVogelSymbol{235}]
+
+\stopsymbolset
+
+% Euro signs and CE
+
+\startsymbolset [europe]
+
+ \definesymbol [EUR] [\MartinVogelSymbol{164}]
+ \definesymbol [EURhv] [\MartinVogelSymbol {99}]
+ \definesymbol [EURcr] [\MartinVogelSymbol{100}]
+ \definesymbol [EURtm] [\MartinVogelSymbol{101}]
+ \definesymbol [CEsign] [\MartinVogelSymbol {67}]
+
+\stopsymbolset
+
+\startencoding[default]
+
+ \definecharacter texteuro {\symbol[europe][EUR]}
+
+\stopencoding
+
+\unexpanded\def\euro{\doiftextelse{\texteuro}{\texteuro}{\symbol[europe][EUR]}}
+
+% Numbers 0 to 9, @, A and p
+
+% taco: are these more general, like also in zapf dingbats?
+
+\startsymbolset [martinvogel 1]
+
+ \definesymbol [MVZero] [\MartinVogelSymbol {48}]
+ \definesymbol [MVOne] [\MartinVogelSymbol {49}]
+ \definesymbol [MVTwo] [\MartinVogelSymbol {50}]
+ \definesymbol [MVThree] [\MartinVogelSymbol {51}]
+ \definesymbol [MVFour] [\MartinVogelSymbol {52}]
+ \definesymbol [MVFive] [\MartinVogelSymbol {53}]
+ \definesymbol [MVSix] [\MartinVogelSymbol {54}]
+ \definesymbol [MVSeven] [\MartinVogelSymbol {55}]
+ \definesymbol [MVEight] [\MartinVogelSymbol {56}]
+ \definesymbol [MVNine] [\MartinVogelSymbol {57}]
+ \definesymbol [MVAt] [\MartinVogelSymbol {64}]
+ \definesymbol [MVA] [\MartinVogelSymbol{240}]
+ \definesymbol [MVp] [\MartinVogelSymbol{241}]
+
+\stopsymbolset
+
+% Office signs, crosses, circles, arrows
+
+\startsymbolset [martinvogel 2]
+
+ \definesymbol [CheckedBox] [\MartinVogelSymbol {86}]
+ \definesymbol [CrossedBox] [\MartinVogelSymbol {88}]
+ \definesymbol [PointingHand] [\MartinVogelSymbol {90}]
+ \definesymbol [WritingHand] [\MartinVogelSymbol {98}]
+ \definesymbol [Heart] [\MartinVogelSymbol{140}]
+ \definesymbol [FlatSteel] [\MartinVogelSymbol{150}]
+ \definesymbol [Squarepipe] [\MartinVogelSymbol{151}]
+ \definesymbol [Rectpipe] [\MartinVogelSymbol{152}]
+ \definesymbol [Lsteel] [\MartinVogelSymbol{153}]
+ \definesymbol [TTsteel] [\MartinVogelSymbol{154}]
+ \definesymbol [Circpipe] [\MartinVogelSymbol{155}]
+ \definesymbol [Tsteel] [\MartinVogelSymbol{156}]
+
+ \definesymbol [Stopsign] [\MartinVogelSymbol {33}]
+ \definesymbol [Beam] [\MartinVogelSymbol {34}]
+ \definesymbol [Bearing] [\MartinVogelSymbol {35}]
+ \definesymbol [Loosebearing] [\MartinVogelSymbol {36}]
+ \definesymbol [Fixedbearing] [\MartinVogelSymbol {37}]
+ \definesymbol [Lefttorque] [\MartinVogelSymbol {38}]
+ \definesymbol [Righttorque] [\MartinVogelSymbol {39}]
+ \definesymbol [Force] [\MartinVogelSymbol {40}]
+ \definesymbol [Lineload] [\MartinVogelSymbol {41}]
+ \definesymbol [Circles] [\MartinVogelSymbol {46}]
+ \definesymbol [Squaredot] [\MartinVogelSymbol{247}]
+
+ \definesymbol [Correspondes] [\MartinVogelSymbol {61}]
+ \definesymbol [Vectorarrowhigh] [\MartinVogelSymbol {80}]
+ \definesymbol [Vectorarrow] [\MartinVogelSymbol{112}]
+ \definesymbol [Rightarrow] [\MartinVogelSymbol {62}]
+ \definesymbol [Lightning] [\MartinVogelSymbol {69}]
+
+ \definesymbol [Snowflake] [\MartinVogelSymbol {42}]
+ \definesymbol [Kross] [\MartinVogelSymbol {43}]
+ \definesymbol [Cross] [\MartinVogelSymbol{134}]
+ \definesymbol [Celtcross] [\MartinVogelSymbol{135}]
+ \definesymbol [Ankh] [\MartinVogelSymbol{136}]
+ \definesymbol [Yingyang] [\MartinVogelSymbol {77}]
+
+ \definesymbol [Pickup] [\MartinVogelSymbol {0}] % ?
+ \definesymbol [Letter] [\MartinVogelSymbol {66}] % ?
+ \definesymbol [Mobilephone] [\MartinVogelSymbol {72}]
+ \definesymbol [Telephone] [\MartinVogelSymbol {84}]
+ \definesymbol [fax] [\MartinVogelSymbol{116}]
+ \definesymbol [FAX] [\MartinVogelSymbol{117}]
+ \definesymbol [Faxmachine] [\MartinVogelSymbol{118}]
+
+ \definesymbol [Clocklogo] [\MartinVogelSymbol {85}]
+ \definesymbol [Industry] [\MartinVogelSymbol {73}]
+ \definesymbol [Coffeecup] [\MartinVogelSymbol {75}]
+ \definesymbol [Info] [\MartinVogelSymbol{105}]
+ \definesymbol [Football] [\MartinVogelSymbol{111}]
+ \definesymbol [Frowny] [\MartinVogelSymbol{167}]
+ \definesymbol [Smiley] [\MartinVogelSymbol{169}]
+ \definesymbol [Bicycle] [\MartinVogelSymbol{174}]
+
+ \definesymbol [Rightscissors] [\MartinVogelSymbol {81}]
+ \definesymbol [Leftscissors] [\MartinVogelSymbol {83}]
+ \definesymbol [Cutright] [\MartinVogelSymbol{113}]
+ \definesymbol [Cutleft] [\MartinVogelSymbol{115}]
+ \definesymbol [Kutline] [\MartinVogelSymbol {82}] % K ?
+ \definesymbol [Cutline] [\MartinVogelSymbol{114}]
+
+\stopsymbolset
+
+% FHBO (Fachhochschule Bochum), face, humans, bat
+
+\startsymbolset [martinvogel 3]
+
+ \definesymbol [FHBOlogo] [\MartinVogelSymbol {70}]
+ \definesymbol [FHBOLOGO] [\MartinVogelSymbol{102}]
+ \definesymbol [Womanside] [\MartinVogelSymbol{204}]
+ \definesymbol [Manside] [\MartinVogelSymbol{205}]
+ \definesymbol [Womanfront] [\MartinVogelSymbol{206}]
+ \definesymbol [Manfront] [\MartinVogelSymbol{207}]
+ \definesymbol [Bat] [\MartinVogelSymbol{253}]
+ \definesymbol [Womanface] [\MartinVogelSymbol{254}]
+ \definesymbol [MartinVogel] [\MartinVogelSymbol{255}]
+
+\stopsymbolset
+
+%D \showsymbolset[astronomic]
+%D \showsymbolset[zodiac]
+%D \showsymbolset[europe]
+%D \showsymbolset[martinvogel 1]
+%D \showsymbolset[martinvogel 2]
+%D \showsymbolset[martinvogel 3]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-nav.tex b/Master/texmf-dist/tex/context/base/symb-nav.tex
new file mode 100644
index 00000000000..1dd45153874
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-nav.tex
@@ -0,0 +1,124 @@
+%D \module
+%D [ file=symb-nav,
+%D version=1998.07.20,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Navigational Symbols,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\loadmapfile[original-base.map] % \loadmapfile [original-context-symbol.map]
+
+\definefontsynonym [ContextNavigation] [contnav]
+
+% \def\ContextNavigationGlyph#1{\getglyph{ContextNavigation}{\char#1}}
+
+\def\ContextNavigationGlyph#1{\getrawglyph{contnav}{\char#1}}
+
+\startsymbolset [navigation 1]
+
+ \definesymbol [\v!firstpage] [\ContextNavigationGlyph{3}]
+ \definesymbol [\v!previouspage] [\ContextNavigationGlyph{1}]
+ \definesymbol [\v!nextpage] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!lastpage] [\ContextNavigationGlyph{4}]
+
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{5}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{6}]
+
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{7}]
+
+ \definesymbol [\v!firstsubpage] [\ContextNavigationGlyph{3}]
+ \definesymbol [\v!previoussubpage] [\ContextNavigationGlyph{1}]
+ \definesymbol [\v!nextsubpage] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!lastsubpage] [\ContextNavigationGlyph{4}]
+
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{7}]
+
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{7}]
+
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{2}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{8}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{7}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{2}]
+
+\stopsymbolset
+
+\startsymbolset [navigation 2]
+
+ \definesymbol [\v!firstpage] [\ContextNavigationGlyph{103}]
+ \definesymbol [\v!previouspage] [\ContextNavigationGlyph{101}]
+ \definesymbol [\v!nextpage] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!lastpage] [\ContextNavigationGlyph{104}]
+
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{105}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{106}]
+
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{107}]
+
+ \definesymbol [\v!firstsubpage] [\ContextNavigationGlyph{103}]
+ \definesymbol [\v!previoussubpage] [\ContextNavigationGlyph{101}]
+ \definesymbol [\v!nextsubpage] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!lastsubpage] [\ContextNavigationGlyph{104}]
+
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{107}]
+
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{107}]
+
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{102}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{108}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{107}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{102}]
+
+\stopsymbolset
+
+\startsymbolset [navigation 3]
+
+ \definesymbol [\v!firstpage] [\ContextNavigationGlyph{203}]
+ \definesymbol [\v!previouspage] [\ContextNavigationGlyph{201}]
+ \definesymbol [\v!nextpage] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!lastpage] [\ContextNavigationGlyph{204}]
+
+ \definesymbol [\v!PreviousJump] [\ContextNavigationGlyph{205}]
+ \definesymbol [\v!NextJump] [\ContextNavigationGlyph{206}]
+
+ \definesymbol [\v!CloseDocument] [\ContextNavigationGlyph{207}]
+
+ \definesymbol [\v!firstsubpage] [\ContextNavigationGlyph{203}]
+ \definesymbol [\v!previoussubpage] [\ContextNavigationGlyph{201}]
+ \definesymbol [\v!nextsubpage] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!lastsubpage] [\ContextNavigationGlyph{204}]
+
+ \definesymbol [\v!StartSound] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseSound] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopSound] [\ContextNavigationGlyph{207}]
+
+ \definesymbol [\v!StartMovie] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseMovie] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopMovie] [\ContextNavigationGlyph{207}]
+
+ \definesymbol [\v!StartRendering] [\ContextNavigationGlyph{202}]
+ \definesymbol [\v!PauseRendering] [\ContextNavigationGlyph{208}]
+ \definesymbol [\v!StopRendering] [\ContextNavigationGlyph{207}]
+ \definesymbol [\v!ResumeRendering] [\ContextNavigationGlyph{202}]
+
+\stopsymbolset
+
+%D \showsymbolset[navigation 1]
+%D \showsymbolset[navigation 2]
+%D \showsymbolset[navigation 3]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-run.tex b/Master/texmf-dist/tex/context/base/symb-run.tex
new file mode 100644
index 00000000000..3ad195f8243
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-run.tex
@@ -0,0 +1,54 @@
+%D \module
+%D [ file=symb-run, % code moved from symb-ini
+%D version=1998.07.20,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\gdef\doshowsymbolset[#1][#2]% todo: make nicer, use legend or so
+ {\vbox\bgroup
+ \blank
+ \getparameters[\??ss][\c!n=5,#2]%
+ \forcesymbolset[#1]%
+ \doifsymbolsetelse{#1}
+ {\global\let\allfigures\empty
+ \doglobal\newcounter\figurecounter
+ \setupcolors[\c!state=\v!start]% to prevent mps color conversion
+ \dontcomplain
+ \def\doshowsymbols% global needed due to grouping in alignment
+ {\expanded{\globalprocesscommalist[\symbolset{#1}]}\docommando}%
+ \def\docommando##1%
+ {\vbox
+ {\forgetall
+ \tttf
+ \halign
+ {\hss\quad####\strut\quad\hss\cr
+ \symbol[##1]\quad{\red\ruledhbox{\black\symbol[##1]}}\cr
+ \tfx##1\cr}}%
+ \doglobal\increment\figurecounter
+ \ifnum\figurecounter=\@@ssn
+ \doglobal\newcounter\figurecounter
+ \def\next{\crcr\noalign{\vskip1ex}}%
+ \else
+ \def\next{&}%
+ \fi
+ \next}%
+ \tabskip\zeropoint \!!plus 1fill
+ \halign to \hsize
+ {&\hss##\hss\cr\doshowsymbols\crcr}}%
+ {}%
+ \blank
+ \egroup}
+
+\gdef\showsymbolset
+ {\dodoubleempty\doshowsymbolset}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/symb-uni.tex b/Master/texmf-dist/tex/context/base/symb-uni.tex
new file mode 100644
index 00000000000..fcd613e7f0a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/symb-uni.tex
@@ -0,0 +1,1123 @@
+%D \module
+%D [ file=symb-uni,
+%D version=2004.11.15,
+%D title=\CONTEXT\ Symbol Libraries,
+%D subtitle=Unicode Symbols,
+%D author=Adam T. Lindsay,
+%D date=\currentdate,
+%D copyright={Adam T. Lindsay / PRAGMA}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C prepared by Adam T. Lindsay.
+
+%D The content of this file originates from the Unicode standard, via some
+%D original XSLT scripts and some hand-editing. This file is open for use
+%D with the ConTeXt typesetting system.
+%D
+%D Adam considers the symbol names and categories to be stable, as they're
+%D directly derived from the Unicode standard.
+%D
+%D \startitemize[packed]
+%D \item Originated 2004-01-05 by Adam T. Lindsay
+%D \item Updated 2004-01-16 with Unicode vector 0x27xx and some in
+%D 215x and 246x
+%D \item Updated 2004-11-15 to include default fonts for MacOSX and
+%D \XETEX.
+%D \stopitemize
+%D
+%D The following macros adapt to default fonts (that contain the characters)
+%D in MacOSX. The font selection mechanism is likely to change once \XETEX\
+%D correctly supports \type{\doiffontcharelse}.
+
+\doifundefinedelse{XeTeXversion}
+ {\let\USymbChar \uchar
+ \let\USymbCharTwo \uchar
+ \let\USymbCharZapf\uchar}
+ {\def\USymbChar #1#2{\bgroup\UnicodeSymbolFont \uchar{#1}{#2}\relax\egroup}
+ \def\USymbCharTwo #1#2{\bgroup\UnicodeSymbolFontTwo \uchar{#1}{#2}\relax\egroup}
+ \def\USymbCharZapf#1#2{\bgroup\UnicodeSymbolFontZapf\uchar{#1}{#2}\relax\egroup}
+ \doifundefined{UnicodeSymbolFont} {\definefont[UnicodeSymbolFont] ["Apple Symbols" sa *]}
+ \doifundefined{UnicodeSymbolFontTwo} {\definefont[UnicodeSymbolFontTwo] ["Lucida Grande" sa *]}
+ \doifundefined{UnicodeSymbolFontZapf}{\definefont[UnicodeSymbolFontZapf]["Zapf Dingbats" sa *]}}
+
+\startsymbolset[Unicode Additional Punctuation] % 0x2000: Requires UnicodeRegular20
+
+ \definesymbol[Caret][\USymbChar{32}{56}] % CARET
+ \definesymbol[ReferenceMark][\USymbChar{32}{59}] % REFERENCE MARK
+ \definesymbol[DoubleExclamationMark][\USymbChar{32}{60}] % DOUBLE EXCLAMATION MARK
+ \definesymbol[Interrobang][\USymbChar{32}{61}] % INTERROBANG
+ \definesymbol[Overline][\USymbChar{32}{62}] % OVERLINE
+ \definesymbol[Undertie][\USymbChar{32}{63}] % UNDERTIE
+ \definesymbol[CharacterTie][\USymbChar{32}{64}] % CHARACTER TIE
+ \definesymbol[CaretInsertionPoint][\USymbChar{32}{65}] % CARET INSERTION POINT
+ \definesymbol[Asterism][\USymbChar{32}{66}] % ASTERISM
+ \definesymbol[HyphenBullet][\USymbChar{32}{67}] % HYPHEN BULLET
+ \definesymbol[FractionSlash][\USymbChar{32}{68}] % FRACTION SLASH
+ \definesymbol[LeftSquareBracketWithQuill][\USymbChar{32}{69}] % LEFT SQUARE BRACKET WITH QUILL
+ \definesymbol[RightSquareBracketWithQuill][\USymbChar{32}{70}] % RIGHT SQUARE BRACKET WITH QUILL
+ \definesymbol[QuestionExclamationMark][\USymbChar{32}{72}] % QUESTION EXCLAMATION MARK
+ \definesymbol[ExclamationQuestionMark][\USymbChar{32}{73}] % EXCLAMATION QUESTION MARK
+ \definesymbol[TironianSignEt][\USymbChar{32}{74}] % TIRONIAN SIGN ET
+ \definesymbol[ReversedPilcrowSign][\USymbChar{32}{75}] % REVERSED PILCROW SIGN
+ \definesymbol[BlackLeftwardsBullet][\USymbChar{32}{76}] % BLACK LEFTWARDS BULLET
+ \definesymbol[BlackRightwardsBullet][\USymbChar{32}{77}] % BLACK RIGHTWARDS BULLET
+
+\stopsymbolset
+
+\startsymbolset[Unicode Currency] % 0x20A0: Requires UnicodeRegular20
+
+ \definesymbol[Euro-currencySign][\USymbChar{32}{160}] % EURO-CURRENCY SIGN
+ \definesymbol[ColonSign][\USymbChar{32}{161}] % COLON SIGN
+ \definesymbol[CruzeiroSign][\USymbChar{32}{162}] % CRUZEIRO SIGN
+ \definesymbol[FrenchFrancSign][\USymbChar{32}{163}] % FRENCH FRANC SIGN
+ \definesymbol[LiraSign][\USymbChar{32}{164}] % LIRA SIGN
+ \definesymbol[MillSign][\USymbChar{32}{165}] % MILL SIGN
+ \definesymbol[NairaSign][\USymbChar{32}{166}] % NAIRA SIGN
+ \definesymbol[PesetaSign][\USymbChar{32}{167}] % PESETA SIGN
+ \definesymbol[RupeeSign][\USymbChar{32}{168}] % RUPEE SIGN
+ \definesymbol[WonSign][\USymbChar{32}{169}] % WON SIGN
+ \definesymbol[NewSheqelSign][\USymbChar{32}{170}] % NEW SHEQEL SIGN
+ \definesymbol[DongSign][\USymbChar{32}{171}] % DONG SIGN
+ \definesymbol[EuroSign][\USymbChar{32}{172}] % EURO SIGN
+ \definesymbol[KipSign][\USymbChar{32}{173}] % KIP SIGN
+ \definesymbol[TugrikSign][\USymbChar{32}{174}] % TUGRIK SIGN
+ \definesymbol[DrachmaSign][\USymbChar{32}{175}] % DRACHMA SIGN
+ \definesymbol[GermanPennySign][\USymbChar{32}{176}] % [Unassigned U+20B0]
+ \definesymbol[PfennigSign][\USymbChar{32}{176}] % Unofficial duplicate
+ \definesymbol[PesoSign][\USymbChar{32}{177}] % [Unassigned U+20B1]
+
+\stopsymbolset
+
+
+\startsymbolset[Unicode Letterlike] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[DegreeCelsius][\USymbChar{33}{3}] % DEGREE CELSIUS
+ \definesymbol[EulerConstant][\USymbChar{33}{7}] % EULER CONSTANT
+ \definesymbol[Scruple][\USymbChar{33}{8}] % SCRUPLE
+ \definesymbol[DegreeFahrenheit][\USymbChar{33}{9}] % DEGREE FAHRENHEIT
+ \definesymbol[PlanckConstant][\USymbChar{33}{14}] % PLANCK CONSTANT
+ \definesymbol[PlanckConstantOverTwoPi][\USymbChar{33}{15}] % PLANCK CONSTANT OVER TWO PI
+ \definesymbol[LBBarSymbol][\USymbChar{33}{20}] % L B BAR SYMBOL
+ \definesymbol[Versicle][\USymbChar{33}{35}] % VERSICLE
+ \definesymbol[OunceSign][\USymbChar{33}{37}] % OUNCE SIGN
+ \definesymbol[OhmSign][\USymbChar{33}{38}] % OHM SIGN
+ \definesymbol[InvertedOhmSign][\USymbChar{33}{39}] % INVERTED OHM SIGN
+ \definesymbol[KelvinSign][\USymbChar{33}{42}] % KELVIN SIGN
+ \definesymbol[AngstromSign][\USymbChar{33}{43}] % ANGSTROM SIGN
+ \definesymbol[EstimatedSymbol][\USymbChar{33}{46}] % ESTIMATED SYMBOL
+
+\stopsymbolset
+
+\startsymbolset[Unicode Letterlike Additional] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[AccountOf][\USymbChar{33}{0}] % ACCOUNT OF
+ \definesymbol[AddressedToTheSubject][\USymbChar{33}{1}] % ADDRESSED TO THE SUBJECT
+ \definesymbol[CareOf][\USymbChar{33}{5}] % CARE OF
+ \definesymbol[CadaUna][\USymbChar{33}{6}] % CADA UNA
+ \definesymbol[CentreLineSymbol][\USymbChar{33}{4}] % CENTRE LINE SYMBOL
+ \definesymbol[NumeroSign][\USymbChar{33}{22}] % NUMERO SIGN
+ \definesymbol[SoundRecordingCopyright][\USymbChar{33}{23}] % SOUND RECORDING COPYRIGHT
+ \definesymbol[PrescriptionTake][\USymbChar{33}{30}] % PRESCRIPTION TAKE
+ \definesymbol[Response][\USymbChar{33}{31}] % RESPONSE
+ \definesymbol[ServiceMark][\USymbChar{33}{32}] % SERVICE MARK
+ \definesymbol[TelephoneSign][\USymbChar{33}{33}] % TELEPHONE SIGN
+ \definesymbol[TradeMarkSign][\USymbChar{33}{34}] % TRADE MARK SIGN
+ \definesymbol[InformationSource][\USymbChar{33}{57}] % INFORMATION SOURCE
+ \definesymbol[PropertyLine][\USymbChar{33}{74}] % [Unassigned U+214A]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Script Letterlike] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[ScriptSmallG][\USymbChar{33}{10}] % SCRIPT SMALL G
+ \definesymbol[ScriptCapitalH][\USymbChar{33}{11}] % SCRIPT CAPITAL H
+ \definesymbol[ScriptCapitalI][\USymbChar{33}{16}] % SCRIPT CAPITAL I
+ \definesymbol[ScriptCapitalL][\USymbChar{33}{18}] % SCRIPT CAPITAL L
+ \definesymbol[ScriptSmallL][\USymbChar{33}{19}] % SCRIPT SMALL L
+ \definesymbol[ScriptCapitalP][\USymbChar{33}{24}] % SCRIPT CAPITAL P
+ \definesymbol[ScriptCapitalR][\USymbChar{33}{27}] % SCRIPT CAPITAL R
+ \definesymbol[ScriptSmallE][\USymbChar{33}{47}] % SCRIPT SMALL E
+ \definesymbol[ScriptCapitalE][\USymbChar{33}{48}] % SCRIPT CAPITAL E
+ \definesymbol[ScriptCapitalF][\USymbChar{33}{49}] % SCRIPT CAPITAL F
+ \definesymbol[ScriptCapitalB][\USymbChar{33}{44}] % SCRIPT CAPITAL B
+ \definesymbol[ScriptCapitalM][\USymbChar{33}{51}] % SCRIPT CAPITAL M
+ \definesymbol[ScriptSmallO][\USymbChar{33}{52}] % SCRIPT SMALL O
+
+\stopsymbolset
+
+\startsymbolset[Unicode Hebrew Letterlike] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[AlefSymbol][\USymbChar{33}{53}] % ALEF SYMBOL
+ \definesymbol[BetSymbol][\USymbChar{33}{54}] % BET SYMBOL
+ \definesymbol[GimelSymbol][\USymbChar{33}{55}] % GIMEL SYMBOL
+ \definesymbol[DaletSymbol][\USymbChar{33}{56}] % DALET SYMBOL
+
+\stopsymbolset
+
+\startsymbolset[Unicode Turned Letterlike] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[RotatedCapitalQ][\USymbChar{33}{58}] % ROTATED CAPITAL Q
+ \definesymbol[TurnedSansSerifCapitalG][\USymbChar{33}{65}] % [Unassigned U+2141]
+ \definesymbol[TurnedSansSerifCapitalL][\USymbChar{33}{66}] % [Unassigned U+2142]
+ \definesymbol[ReversedSansSerifCapitalL][\USymbChar{33}{67}] % [Unassigned U+2143]
+ \definesymbol[TurnedSansSerifCapitalY][\USymbChar{33}{68}] % [Unassigned U+2144]
+ \definesymbol[TurnedAmpersand][\USymbChar{33}{75}] % [Unassigned U+214B]
+ \definesymbol[TurnedGreekSmallLetterIota][\USymbChar{33}{41}] % TURNED GREEK SMALL LETTER IOTA
+ \definesymbol[TurnedCapitalF][\USymbChar{33}{50}] % TURNED CAPITAL F
+
+\stopsymbolset
+
+\startsymbolset[Unicode Black-letter Letterlike] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[BlackLetterCapitalH][\USymbChar{33}{12}] % BLACK-LETTER CAPITAL H
+ \definesymbol[BlackLetterCapitalI][\USymbChar{33}{17}] % BLACK-LETTER CAPITAL I
+ \definesymbol[BlackLetterCapitalR][\USymbChar{33}{28}] % BLACK-LETTER CAPITAL R
+ \definesymbol[BlackLetterCapitalZ][\USymbChar{33}{40}] % BLACK-LETTER CAPITAL Z
+ \definesymbol[BlackLetterCapitalC][\USymbChar{33}{45}] % BLACK-LETTER CAPITAL C
+
+\stopsymbolset
+
+\startsymbolset[Unicode Double-struck Letterlike Math] % 0x2100: Requires UnicodeRegular21
+
+ \definesymbol[DoubleStruckCapitalC][\USymbChar{33}{2}] % DOUBLE-STRUCK CAPITAL C
+ \definesymbol[DoubleStruckCapitalH][\USymbChar{33}{13}] % DOUBLE-STRUCK CAPITAL H
+ \definesymbol[DoubleStruckCapitalN][\USymbChar{33}{21}] % DOUBLE-STRUCK CAPITAL N
+ \definesymbol[DoubleStruckCapitalP][\USymbChar{33}{25}] % DOUBLE-STRUCK CAPITAL P
+ \definesymbol[DoubleStruckCapitalQ][\USymbChar{33}{26}] % DOUBLE-STRUCK CAPITAL Q
+ \definesymbol[DoubleStruckCapitalR][\USymbChar{33}{29}] % DOUBLE-STRUCK CAPITAL R
+ \definesymbol[DoubleStruckCapitalZ][\USymbChar{33}{36}] % DOUBLE-STRUCK CAPITAL Z
+ \definesymbol[DoubleStruckSmallGamma][\USymbChar{33}{61}] % [Unassigned U+213D]
+ \definesymbol[DoubleStruckCapitalGamma][\USymbChar{33}{62}] % [Unassigned U+213E]
+ \definesymbol[DoubleStruckCapitalPi][\USymbChar{33}{63}] % [Unassigned U+213F]
+ \definesymbol[DoubleStruckNArySummation][\USymbChar{33}{64}] % [Unassigned U+2140]
+ \definesymbol[DoubleStruckItalicCapitalD][\USymbChar{33}{69}] % [Unassigned U+2145]
+ \definesymbol[DoubleStruckItalicSmallD][\USymbChar{33}{70}] % [Unassigned U+2146]
+ \definesymbol[DoubleStruckItalicSmallE][\USymbChar{33}{71}] % [Unassigned U+2147]
+ \definesymbol[DoubleStruckItalicSmallI][\USymbChar{33}{72}] % [Unassigned U+2148]
+ \definesymbol[DoubleStruckItalicSmallJ][\USymbChar{33}{73}] % [Unassigned U+2149]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Roman Numerals] % 0x2150: Requires UnicodeRegular21
+
+ \definesymbol[RomanNumeralOne][\USymbCharTwo{33}{96}] % ROMAN NUMERAL ONE
+ \definesymbol[RomanNumeralTwo][\USymbCharTwo{33}{97}] % ROMAN NUMERAL TWO
+ \definesymbol[RomanNumeralThree][\USymbCharTwo{33}{98}] % ROMAN NUMERAL THREE
+ \definesymbol[RomanNumeralFour][\USymbCharTwo{33}{99}] % ROMAN NUMERAL FOUR
+ \definesymbol[RomanNumeralFive][\USymbCharTwo{33}{100}] % ROMAN NUMERAL FIVE
+ \definesymbol[RomanNumeralSix][\USymbCharTwo{33}{101}] % ROMAN NUMERAL SIX
+ \definesymbol[RomanNumeralSeven][\USymbCharTwo{33}{102}] % ROMAN NUMERAL SEVEN
+ \definesymbol[RomanNumeralEight][\USymbCharTwo{33}{103}] % ROMAN NUMERAL EIGHT
+ \definesymbol[RomanNumeralNine][\USymbCharTwo{33}{104}] % ROMAN NUMERAL NINE
+ \definesymbol[RomanNumeralTen][\USymbCharTwo{33}{105}] % ROMAN NUMERAL TEN
+ \definesymbol[RomanNumeralEleven][\USymbCharTwo{33}{106}] % ROMAN NUMERAL ELEVEN
+ \definesymbol[RomanNumeralTwelve][\USymbCharTwo{33}{107}] % ROMAN NUMERAL TWELVE
+ \definesymbol[RomanNumeralFifty][\USymbCharTwo{33}{108}] % ROMAN NUMERAL FIFTY
+ \definesymbol[RomanNumeralOneHundred][\USymbCharTwo{33}{109}] % ROMAN NUMERAL ONE HUNDRED
+ \definesymbol[RomanNumeralFiveHundred][\USymbCharTwo{33}{110}] % ROMAN NUMERAL FIVE HUNDRED
+ \definesymbol[RomanNumeralOneThousand][\USymbCharTwo{33}{111}] % ROMAN NUMERAL ONE THOUSAND
+ \definesymbol[RomanNumeralOneThousandCD][\USymbCharTwo{33}{128}] % ROMAN NUMERAL ONE THOUSAND C D
+ \definesymbol[RomanNumeralFiveThousand][\USymbCharTwo{33}{129}] % ROMAN NUMERAL FIVE THOUSAND
+ \definesymbol[RomanNumeralTenThousand][\USymbCharTwo{33}{130}] % ROMAN NUMERAL TEN THOUSAND
+ \definesymbol[RomanNumeralReversedOneHundred][\USymbCharTwo{33}{131}] % ROMAN NUMERAL REVERSED ONE HUNDRED
+
+\stopsymbolset
+
+\startsymbolset[Unicode Small Roman Numerals] % 0x2150: Requires UnicodeRegular21
+
+ \definesymbol[SmallRomanNumeralOne][\USymbCharTwo{33}{112}] % SMALL ROMAN NUMERAL ONE
+ \definesymbol[SmallRomanNumeralTwo][\USymbCharTwo{33}{113}] % SMALL ROMAN NUMERAL TWO
+ \definesymbol[SmallRomanNumeralThree][\USymbCharTwo{33}{114}] % SMALL ROMAN NUMERAL THREE
+ \definesymbol[SmallRomanNumeralFour][\USymbCharTwo{33}{115}] % SMALL ROMAN NUMERAL FOUR
+ \definesymbol[SmallRomanNumeralFive][\USymbCharTwo{33}{116}] % SMALL ROMAN NUMERAL FIVE
+ \definesymbol[SmallRomanNumeralSix][\USymbCharTwo{33}{117}] % SMALL ROMAN NUMERAL SIX
+ \definesymbol[SmallRomanNumeralSeven][\USymbCharTwo{33}{118}] % SMALL ROMAN NUMERAL SEVEN
+ \definesymbol[SmallRomanNumeralEight][\USymbCharTwo{33}{119}] % SMALL ROMAN NUMERAL EIGHT
+ \definesymbol[SmallRomanNumeralNine][\USymbCharTwo{33}{120}] % SMALL ROMAN NUMERAL NINE
+ \definesymbol[SmallRomanNumeralTen][\USymbCharTwo{33}{121}] % SMALL ROMAN NUMERAL TEN
+ \definesymbol[SmallRomanNumeralEleven][\USymbCharTwo{33}{122}] % SMALL ROMAN NUMERAL ELEVEN
+ \definesymbol[SmallRomanNumeralTwelve][\USymbCharTwo{33}{123}] % SMALL ROMAN NUMERAL TWELVE
+ \definesymbol[SmallRomanNumeralFifty][\USymbCharTwo{33}{124}] % SMALL ROMAN NUMERAL FIFTY
+ \definesymbol[SmallRomanNumeralOneHundred][\USymbCharTwo{33}{125}] % SMALL ROMAN NUMERAL ONE HUNDRED
+ \definesymbol[SmallRomanNumeralFiveHundred][\USymbCharTwo{33}{126}] % SMALL ROMAN NUMERAL FIVE HUNDRED
+ \definesymbol[SmallRomanNumeralOneThousand][\USymbCharTwo{33}{127}] % SMALL ROMAN NUMERAL ONE THOUSAND
+
+\stopsymbolset
+
+\startsymbolset[Unicode Arrows] % 0x2190: Requires UnicodeRegular21
+
+ \definesymbol[LeftwardsArrow][\USymbChar{33}{144}] % LEFTWARDS ARROW
+ \definesymbol[UpwardsArrow][\USymbChar{33}{145}] % UPWARDS ARROW
+ \definesymbol[RightwardsArrow][\USymbChar{33}{146}] % RIGHTWARDS ARROW
+ \definesymbol[DownwardsArrow][\USymbChar{33}{147}] % DOWNWARDS ARROW
+ \definesymbol[LeftRightArrow][\USymbChar{33}{148}] % LEFT RIGHT ARROW
+ \definesymbol[UpDownArrow][\USymbChar{33}{149}] % UP DOWN ARROW
+ \definesymbol[NorthWestArrow][\USymbChar{33}{150}] % NORTH WEST ARROW
+ \definesymbol[NorthEastArrow][\USymbChar{33}{151}] % NORTH EAST ARROW
+ \definesymbol[SouthEastArrow][\USymbChar{33}{152}] % SOUTH EAST ARROW
+ \definesymbol[SouthWestArrow][\USymbChar{33}{153}] % SOUTH WEST ARROW
+ \definesymbol[LeftwardsArrowWithStroke][\USymbChar{33}{154}] % LEFTWARDS ARROW WITH STROKE
+ \definesymbol[RightwardsArrowWithStroke][\USymbChar{33}{155}] % RIGHTWARDS ARROW WITH STROKE
+ \definesymbol[LeftwardsWaveArrow][\USymbChar{33}{156}] % LEFTWARDS WAVE ARROW
+ \definesymbol[RightwardsWaveArrow][\USymbChar{33}{157}] % RIGHTWARDS WAVE ARROW
+ \definesymbol[LeftwardsTwoHeadedArrow][\USymbChar{33}{158}] % LEFTWARDS TWO HEADED ARROW
+ \definesymbol[UpwardsTwoHeadedArrow][\USymbChar{33}{159}] % UPWARDS TWO HEADED ARROW
+ \definesymbol[RightwardsTwoHeadedArrow][\USymbChar{33}{160}] % RIGHTWARDS TWO HEADED ARROW
+ \definesymbol[DownwardsTwoHeadedArrow][\USymbChar{33}{161}] % DOWNWARDS TWO HEADED ARROW
+ \definesymbol[LeftwardsArrowWithTail][\USymbChar{33}{162}] % LEFTWARDS ARROW WITH TAIL
+ \definesymbol[RightwardsArrowWithTail][\USymbChar{33}{163}] % RIGHTWARDS ARROW WITH TAIL
+ \definesymbol[LeftwardsArrowFromBar][\USymbChar{33}{164}] % LEFTWARDS ARROW FROM BAR
+ \definesymbol[UpwardsArrowFromBar][\USymbChar{33}{165}] % UPWARDS ARROW FROM BAR
+ \definesymbol[RightwardsArrowFromBar][\USymbChar{33}{166}] % RIGHTWARDS ARROW FROM BAR
+ \definesymbol[DownwardsArrowFromBar][\USymbChar{33}{167}] % DOWNWARDS ARROW FROM BAR
+ \definesymbol[UpDownArrowWithBase][\USymbChar{33}{168}] % UP DOWN ARROW WITH BASE
+ \definesymbol[LeftwardsArrowWithHook][\USymbChar{33}{169}] % LEFTWARDS ARROW WITH HOOK
+ \definesymbol[RightwardsArrowWithHook][\USymbChar{33}{170}] % RIGHTWARDS ARROW WITH HOOK
+ \definesymbol[LeftwardsArrowWithLoop][\USymbChar{33}{171}] % LEFTWARDS ARROW WITH LOOP
+ \definesymbol[RightwardsArrowWithLoop][\USymbChar{33}{172}] % RIGHTWARDS ARROW WITH LOOP
+ \definesymbol[LeftRightWaveArrow][\USymbChar{33}{173}] % LEFT RIGHT WAVE ARROW
+ \definesymbol[LeftRightArrowWithStroke][\USymbChar{33}{174}] % LEFT RIGHT ARROW WITH STROKE
+ \definesymbol[DownwardsZigzagArrow][\USymbChar{33}{175}] % DOWNWARDS ZIGZAG ARROW
+ \definesymbol[UpwardsArrowWithTipLeftwards][\USymbChar{33}{176}] % UPWARDS ARROW WITH TIP LEFTWARDS
+ \definesymbol[UpwardsArrowWithTipRightwards][\USymbChar{33}{177}] % UPWARDS ARROW WITH TIP RIGHTWARDS
+ \definesymbol[DownwardsArrowWithTipLeftwards][\USymbChar{33}{178}] % DOWNWARDS ARROW WITH TIP LEFTWARDS
+ \definesymbol[DownwardsArrowWithTipRightwards][\USymbChar{33}{179}] % DOWNWARDS ARROW WITH TIP RIGHTWARDS
+ \definesymbol[RightwardsArrowWithCornerDownwards][\USymbChar{33}{180}] % RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+ \definesymbol[DownwardsArrowWithCornerLeftwards][\USymbChar{33}{181}] % DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ \definesymbol[AnticlockwiseTopSemicircleArrow][\USymbChar{33}{182}] % ANTICLOCKWISE TOP SEMICIRCLE ARROW
+ \definesymbol[ClockwiseTopSemicircleArrow][\USymbChar{33}{183}] % CLOCKWISE TOP SEMICIRCLE ARROW
+ \definesymbol[NorthWestArrowToLongBar][\USymbChar{33}{184}] % NORTH WEST ARROW TO LONG BAR
+ \definesymbol[AnticlockwiseOpenCircleArrow][\USymbChar{33}{186}] % ANTICLOCKWISE OPEN CIRCLE ARROW
+ \definesymbol[ClockwiseOpenCircleArrow][\USymbChar{33}{187}] % CLOCKWISE OPEN CIRCLE ARROW
+ \definesymbol[LeftwardsHarpoonWithBarbUpwards][\USymbChar{33}{188}] % LEFTWARDS HARPOON WITH BARB UPWARDS
+ \definesymbol[LeftwardsHarpoonWithBarbDownwards][\USymbChar{33}{189}] % LEFTWARDS HARPOON WITH BARB DOWNWARDS
+ \definesymbol[UpwardsHarpoonWithBarbRightwards][\USymbChar{33}{190}] % UPWARDS HARPOON WITH BARB RIGHTWARDS
+ \definesymbol[UpwardsHarpoonWithBarbLeftwards][\USymbChar{33}{191}] % UPWARDS HARPOON WITH BARB LEFTWARDS
+ \definesymbol[RightwardsHarpoonWithBarbUpwards][\USymbChar{33}{192}] % RIGHTWARDS HARPOON WITH BARB UPWARDS
+ \definesymbol[RightwardsHarpoonWithBarbDownwards][\USymbChar{33}{193}] % RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+ \definesymbol[DownwardsHarpoonWithBarbRightwards][\USymbChar{33}{194}] % DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+ \definesymbol[DownwardsHarpoonWithBarbLeftwards][\USymbChar{33}{195}] % DOWNWARDS HARPOON WITH BARB LEFTWARDS
+ \definesymbol[LeftwardsSquiggleArrow][\USymbChar{33}{220}] % LEFTWARDS SQUIGGLE ARROW
+ \definesymbol[RightwardsSquiggleArrow][\USymbChar{33}{221}] % RIGHTWARDS SQUIGGLE ARROW
+ \definesymbol[UpwardsArrowWithDoubleStroke][\USymbChar{33}{222}] % UPWARDS ARROW WITH DOUBLE STROKE
+ \definesymbol[DownwardsArrowWithDoubleStroke][\USymbChar{33}{223}] % DOWNWARDS ARROW WITH DOUBLE STROKE
+ \definesymbol[LeftwardsDashedArrow][\USymbChar{33}{224}] % LEFTWARDS DASHED ARROW
+ \definesymbol[UpwardsDashedArrow][\USymbChar{33}{225}] % UPWARDS DASHED ARROW
+ \definesymbol[RightwardsDashedArrow][\USymbChar{33}{226}] % RIGHTWARDS DASHED ARROW
+ \definesymbol[DownwardsDashedArrow][\USymbChar{33}{227}] % DOWNWARDS DASHED ARROW
+ \definesymbol[LeftwardsArrowToBar][\USymbChar{33}{228}] % LEFTWARDS ARROW TO BAR
+ \definesymbol[RightwardsArrowToBar][\USymbChar{33}{229}] % RIGHTWARDS ARROW TO BAR
+ \definesymbol[LeftwardsWhiteArrow][\USymbChar{33}{230}] % LEFTWARDS WHITE ARROW
+ \definesymbol[UpwardsWhiteArrow][\USymbChar{33}{231}] % UPWARDS WHITE ARROW
+ \definesymbol[RightwardsWhiteArrow][\USymbChar{33}{232}] % RIGHTWARDS WHITE ARROW
+ \definesymbol[DownwardsWhiteArrow][\USymbChar{33}{233}] % DOWNWARDS WHITE ARROW
+ \definesymbol[UpwardsWhiteArrowFromBar][\USymbChar{33}{234}] % UPWARDS WHITE ARROW FROM BAR
+ \definesymbol[UpwardsWhiteArrowOnPedestal][\USymbChar{33}{235}] % UPWARDS WHITE ARROW ON PEDESTAL
+ \definesymbol[UpwardsWhiteArrowOnPedestalWithHorizontalBar][\USymbChar{33}{236}] % UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+ \definesymbol[UpwardsWhiteArrowOnPedestalWithVerticalBar][\USymbChar{33}{237}] % UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+ \definesymbol[RightwardsWhiteArrowFromWall][\USymbChar{33}{240}] % RIGHTWARDS WHITE ARROW FROM WALL
+ \definesymbol[NorthWestArrowToCorner][\USymbChar{33}{241}] % NORTH WEST ARROW TO CORNER
+ \definesymbol[SouthEastArrowToCorner][\USymbChar{33}{242}] % SOUTH EAST ARROW TO CORNER
+ \definesymbol[UpDownWhiteArrow][\USymbChar{33}{243}] % UP DOWN WHITE ARROW
+
+\stopsymbolset
+
+\startsymbolset[Unicode Multi Arrows] % 0x2190: Requires UnicodeRegular21
+
+ \definesymbol[LeftwardsArrowToBarOverRightwardsArrowToBar][\USymbChar{33}{185}] % LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+ \definesymbol[RightwardsArrowOverLeftwardsArrow][\USymbChar{33}{196}] % RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+ \definesymbol[UpwardsArrowLeftwardsOfDownwardsArrow][\USymbChar{33}{197}] % UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+ \definesymbol[LeftwardsArrowOverRightwardsArrow][\USymbChar{33}{198}] % LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+ \definesymbol[LeftwardsPairedArrows][\USymbChar{33}{199}] % LEFTWARDS PAIRED ARROWS
+ \definesymbol[UpwardsPairedArrows][\USymbChar{33}{200}] % UPWARDS PAIRED ARROWS
+ \definesymbol[RightwardsPairedArrows][\USymbChar{33}{201}] % RIGHTWARDS PAIRED ARROWS
+ \definesymbol[DownwardsPairedArrows][\USymbChar{33}{202}] % DOWNWARDS PAIRED ARROWS
+ \definesymbol[LeftwardsHarpoonOverRightwardsHarpoon][\USymbChar{33}{203}] % LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ \definesymbol[RightwardsHarpoonOverLeftwardsHarpoon][\USymbChar{33}{204}] % RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ \definesymbol[LeftwardsDoubleArrowWithStroke][\USymbChar{33}{205}] % LEFTWARDS DOUBLE ARROW WITH STROKE
+ \definesymbol[LeftRightDoubleArrowWithStroke][\USymbChar{33}{206}] % LEFT RIGHT DOUBLE ARROW WITH STROKE
+ \definesymbol[RightwardsDoubleArrowWithStroke][\USymbChar{33}{207}] % RIGHTWARDS DOUBLE ARROW WITH STROKE
+ \definesymbol[LeftwardsDoubleArrow][\USymbChar{33}{208}] % LEFTWARDS DOUBLE ARROW
+ \definesymbol[UpwardsDoubleArrow][\USymbChar{33}{209}] % UPWARDS DOUBLE ARROW
+ \definesymbol[RightwardsDoubleArrow][\USymbChar{33}{210}] % RIGHTWARDS DOUBLE ARROW
+ \definesymbol[DownwardsDoubleArrow][\USymbChar{33}{211}] % DOWNWARDS DOUBLE ARROW
+ \definesymbol[LeftRightDoubleArrow][\USymbChar{33}{212}] % LEFT RIGHT DOUBLE ARROW
+ \definesymbol[UpDownDoubleArrow][\USymbChar{33}{213}] % UP DOWN DOUBLE ARROW
+ \definesymbol[NorthWestDoubleArrow][\USymbChar{33}{214}] % NORTH WEST DOUBLE ARROW
+ \definesymbol[NorthEastDoubleArrow][\USymbChar{33}{215}] % NORTH EAST DOUBLE ARROW
+ \definesymbol[SouthEastDoubleArrow][\USymbChar{33}{216}] % SOUTH EAST DOUBLE ARROW
+ \definesymbol[SouthWestDoubleArrow][\USymbChar{33}{217}] % SOUTH WEST DOUBLE ARROW
+ \definesymbol[LeftwardsTripleArrow][\USymbChar{33}{218}] % LEFTWARDS TRIPLE ARROW
+ \definesymbol[RightwardsTripleArrow][\USymbChar{33}{219}] % RIGHTWARDS TRIPLE ARROW
+ \definesymbol[UpwardsWhiteDoubleArrow][\USymbChar{33}{238}] % UPWARDS WHITE DOUBLE ARROW
+ \definesymbol[UpwardsWhiteDoubleArrowOnPedestal][\USymbChar{33}{239}] % UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+
+\stopsymbolset
+
+
+\startsymbolset[Unicode Optical Character Recognition] % 0x2440: Requires UnicodeRegular24
+
+ \definesymbol[OcrHook][\USymbChar{36}{64}] % OCR HOOK
+ \definesymbol[OcrChair][\USymbChar{36}{65}] % OCR CHAIR
+ \definesymbol[OcrFork][\USymbChar{36}{66}] % OCR FORK
+ \definesymbol[OcrInvertedFork][\USymbChar{36}{67}] % OCR INVERTED FORK
+ \definesymbol[OcrBeltBuckle][\USymbChar{36}{68}] % OCR BELT BUCKLE
+ \definesymbol[OcrBowTie][\USymbChar{36}{69}] % OCR BOW TIE
+ \definesymbol[OcrBranchBankIdentification][\USymbChar{36}{70}] % OCR BRANCH BANK IDENTIFICATION
+ \definesymbol[OcrAmountOfCheck][\USymbChar{36}{71}] % OCR AMOUNT OF CHECK
+ \definesymbol[OcrDash][\USymbChar{36}{72}] % OCR DASH
+ \definesymbol[OcrCustomerAccountNumber][\USymbChar{36}{73}] % OCR CUSTOMER ACCOUNT NUMBER
+ \definesymbol[OcrDoubleBackslash][\USymbChar{36}{74}] % OCR DOUBLE BACKSLASH
+
+\stopsymbolset
+
+
+\startsymbolset[Unicode Box Drawing] % 0x2500: Requires UnicodeRegular25
+
+ \definesymbol[LightHorizontal][\USymbChar{37}{0}] % BOX DRAWINGS LIGHT HORIZONTAL
+ \definesymbol[HeavyHorizontal][\USymbChar{37}{1}] % BOX DRAWINGS HEAVY HORIZONTAL
+ \definesymbol[LightVertical][\USymbChar{37}{2}] % BOX DRAWINGS LIGHT VERTICAL
+ \definesymbol[HeavyVertical][\USymbChar{37}{3}] % BOX DRAWINGS HEAVY VERTICAL
+ \definesymbol[LightTripleDashHorizontal][\USymbChar{37}{4}] % BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+ \definesymbol[HeavyTripleDashHorizontal][\USymbChar{37}{5}] % BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+ \definesymbol[LightTripleDashVertical][\USymbChar{37}{6}] % BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+ \definesymbol[HeavyTripleDashVertical][\USymbChar{37}{7}] % BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+ \definesymbol[LightQuadrupleDashHorizontal][\USymbChar{37}{8}] % BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+ \definesymbol[HeavyQuadrupleDashHorizontal][\USymbChar{37}{9}] % BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+ \definesymbol[LightQuadrupleDashVertical][\USymbChar{37}{10}] % BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+ \definesymbol[HeavyQuadrupleDashVertical][\USymbChar{37}{11}] % BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+ \definesymbol[LightDownAndRight][\USymbChar{37}{12}] % BOX DRAWINGS LIGHT DOWN AND RIGHT
+ \definesymbol[DownLightAndRightHeavy][\USymbChar{37}{13}] % BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+ \definesymbol[DownHeavyAndRightLight][\USymbChar{37}{14}] % BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+ \definesymbol[HeavyDownAndRight][\USymbChar{37}{15}] % BOX DRAWINGS HEAVY DOWN AND RIGHT
+ \definesymbol[LightDownAndLeft][\USymbChar{37}{16}] % BOX DRAWINGS LIGHT DOWN AND LEFT
+ \definesymbol[DownLightAndLeftHeavy][\USymbChar{37}{17}] % BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+ \definesymbol[DownHeavyAndLeftLight][\USymbChar{37}{18}] % BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+ \definesymbol[HeavyDownAndLeft][\USymbChar{37}{19}] % BOX DRAWINGS HEAVY DOWN AND LEFT
+ \definesymbol[LightUpAndRight][\USymbChar{37}{20}] % BOX DRAWINGS LIGHT UP AND RIGHT
+ \definesymbol[UpLightAndRightHeavy][\USymbChar{37}{21}] % BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+ \definesymbol[UpHeavyAndRightLight][\USymbChar{37}{22}] % BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+ \definesymbol[HeavyUpAndRight][\USymbChar{37}{23}] % BOX DRAWINGS HEAVY UP AND RIGHT
+ \definesymbol[LightUpAndLeft][\USymbChar{37}{24}] % BOX DRAWINGS LIGHT UP AND LEFT
+ \definesymbol[UpLightAndLeftHeavy][\USymbChar{37}{25}] % BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+ \definesymbol[UpHeavyAndLeftLight][\USymbChar{37}{26}] % BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+ \definesymbol[HeavyUpAndLeft][\USymbChar{37}{27}] % BOX DRAWINGS HEAVY UP AND LEFT
+ \definesymbol[LightVerticalAndRight][\USymbChar{37}{28}] % BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ \definesymbol[VerticalLightAndRightHeavy][\USymbChar{37}{29}] % BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+ \definesymbol[UpHeavyAndRightDownLight][\USymbChar{37}{30}] % BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+ \definesymbol[DownHeavyAndRightUpLight][\USymbChar{37}{31}] % BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+ \definesymbol[VerticalHeavyAndRightLight][\USymbChar{37}{32}] % BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+ \definesymbol[DownLightAndRightUpHeavy][\USymbChar{37}{33}] % BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+ \definesymbol[UpLightAndRightDownHeavy][\USymbChar{37}{34}] % BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+ \definesymbol[HeavyVerticalAndRight][\USymbChar{37}{35}] % BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+ \definesymbol[LightVerticalAndLeft][\USymbChar{37}{36}] % BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ \definesymbol[VerticalLightAndLeftHeavy][\USymbChar{37}{37}] % BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+ \definesymbol[UpHeavyAndLeftDownLight][\USymbChar{37}{38}] % BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+ \definesymbol[DownHeavyAndLeftUpLight][\USymbChar{37}{39}] % BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+ \definesymbol[VerticalHeavyAndLeftLight][\USymbChar{37}{40}] % BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+ \definesymbol[DownLightAndLeftUpHeavy][\USymbChar{37}{41}] % BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+ \definesymbol[UpLightAndLeftDownHeavy][\USymbChar{37}{42}] % BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+ \definesymbol[HeavyVerticalAndLeft][\USymbChar{37}{43}] % BOX DRAWINGS HEAVY VERTICAL AND LEFT
+ \definesymbol[LightDownAndHorizontal][\USymbChar{37}{44}] % BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ \definesymbol[LeftHeavyAndRightDownLight][\USymbChar{37}{45}] % BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+ \definesymbol[RightHeavyAndLeftDownLight][\USymbChar{37}{46}] % BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+ \definesymbol[DownLightAndHorizontalHeavy][\USymbChar{37}{47}] % BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+ \definesymbol[DownHeavyAndHorizontalLight][\USymbChar{37}{48}] % BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+ \definesymbol[RightLightAndLeftDownHeavy][\USymbChar{37}{49}] % BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+ \definesymbol[LeftLightAndRightDownHeavy][\USymbChar{37}{50}] % BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+ \definesymbol[HeavyDownAndHorizontal][\USymbChar{37}{51}] % BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+ \definesymbol[LightUpAndHorizontal][\USymbChar{37}{52}] % BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ \definesymbol[LeftHeavyAndRightUpLight][\USymbChar{37}{53}] % BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+ \definesymbol[RightHeavyAndLeftUpLight][\USymbChar{37}{54}] % BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+ \definesymbol[UpLightAndHorizontalHeavy][\USymbChar{37}{55}] % BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+ \definesymbol[UpHeavyAndHorizontalLight][\USymbChar{37}{56}] % BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+ \definesymbol[RightLightAndLeftUpHeavy][\USymbChar{37}{57}] % BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+ \definesymbol[LeftLightAndRightUpHeavy][\USymbChar{37}{58}] % BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+ \definesymbol[HeavyUpAndHorizontal][\USymbChar{37}{59}] % BOX DRAWINGS HEAVY UP AND HORIZONTAL
+ \definesymbol[LightVerticalAndHorizontal][\USymbChar{37}{60}] % BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ \definesymbol[LeftHeavyAndRightVerticalLight][\USymbChar{37}{61}] % BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+ \definesymbol[RightHeavyAndLeftVerticalLight][\USymbChar{37}{62}] % BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+ \definesymbol[VerticalLightAndHorizontalHeavy][\USymbChar{37}{63}] % BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+ \definesymbol[UpHeavyAndDownHorizontalLight][\USymbChar{37}{64}] % BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+ \definesymbol[DownHeavyAndUpHorizontalLight][\USymbChar{37}{65}] % BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+ \definesymbol[VerticalHeavyAndHorizontalLight][\USymbChar{37}{66}] % BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+ \definesymbol[LeftUpHeavyAndRightDownLight][\USymbChar{37}{67}] % BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+ \definesymbol[RightUpHeavyAndLeftDownLight][\USymbChar{37}{68}] % BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+ \definesymbol[LeftDownHeavyAndRightUpLight][\USymbChar{37}{69}] % BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+ \definesymbol[RightDownHeavyAndLeftUpLight][\USymbChar{37}{70}] % BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+ \definesymbol[DownLightAndUpHorizontalHeavy][\USymbChar{37}{71}] % BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+ \definesymbol[UpLightAndDownHorizontalHeavy][\USymbChar{37}{72}] % BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+ \definesymbol[RightLightAndLeftVerticalHeavy][\USymbChar{37}{73}] % BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+ \definesymbol[LeftLightAndRightVerticalHeavy][\USymbChar{37}{74}] % BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+ \definesymbol[HeavyVerticalAndHorizontal][\USymbChar{37}{75}] % BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+ \definesymbol[LightArcDownAndRight][\USymbChar{37}{109}] % BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+ \definesymbol[LightArcDownAndLeft][\USymbChar{37}{110}] % BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+ \definesymbol[LightArcUpAndLeft][\USymbChar{37}{111}] % BOX DRAWINGS LIGHT ARC UP AND LEFT
+ \definesymbol[LightArcUpAndRight][\USymbChar{37}{112}] % BOX DRAWINGS LIGHT ARC UP AND RIGHT
+ \definesymbol[LightDiagonalUpperRightToLowerLeft][\USymbChar{37}{113}] % BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+ \definesymbol[LightDiagonalUpperLeftToLowerRight][\USymbChar{37}{114}] % BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+ \definesymbol[LightDiagonalCross][\USymbChar{37}{115}] % BOX DRAWINGS LIGHT DIAGONAL CROSS
+ \definesymbol[LightLeft][\USymbChar{37}{116}] % BOX DRAWINGS LIGHT LEFT
+ \definesymbol[LightUp][\USymbChar{37}{117}] % BOX DRAWINGS LIGHT UP
+ \definesymbol[LightRight][\USymbChar{37}{118}] % BOX DRAWINGS LIGHT RIGHT
+ \definesymbol[LightDown][\USymbChar{37}{119}] % BOX DRAWINGS LIGHT DOWN
+ \definesymbol[HeavyLeft][\USymbChar{37}{120}] % BOX DRAWINGS HEAVY LEFT
+ \definesymbol[HeavyUp][\USymbChar{37}{121}] % BOX DRAWINGS HEAVY UP
+ \definesymbol[HeavyRight][\USymbChar{37}{122}] % BOX DRAWINGS HEAVY RIGHT
+ \definesymbol[HeavyDown][\USymbChar{37}{123}] % BOX DRAWINGS HEAVY DOWN
+ \definesymbol[LightLeftAndHeavyRight][\USymbChar{37}{124}] % BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+ \definesymbol[LightUpAndHeavyDown][\USymbChar{37}{125}] % BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+ \definesymbol[HeavyLeftAndLightRight][\USymbChar{37}{126}] % BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+ \definesymbol[HeavyUpAndLightDown][\USymbChar{37}{127}] % BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Circled Digits] % 0x2460: Requires UnicodeRegular24
+
+ \definesymbol[CircledOne][\USymbCharZapf{36}{96}] % CIRCLED DIGIT ONE
+ \definesymbol[CircledTwo][\USymbCharZapf{36}{97}] % CIRCLED DIGIT TWO
+ \definesymbol[CircledThree][\USymbCharZapf{36}{98}] % CIRCLED DIGIT THREE
+ \definesymbol[CircledFour][\USymbCharZapf{36}{99}] % CIRCLED DIGIT FOUR
+ \definesymbol[CircledFive][\USymbCharZapf{36}{100}] % CIRCLED DIGIT FIVE
+ \definesymbol[CircledSix][\USymbCharZapf{36}{101}] % CIRCLED DIGIT SIX
+ \definesymbol[CircledSeven][\USymbCharZapf{36}{102}] % CIRCLED DIGIT SEVEN
+ \definesymbol[CircledEight][\USymbCharZapf{36}{103}] % CIRCLED DIGIT EIGHT
+ \definesymbol[CircledNine][\USymbCharZapf{36}{104}] % CIRCLED DIGIT NINE
+ \definesymbol[CircledTen][\USymbCharZapf{36}{105}] % CIRCLED NUMBER TEN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Double Box Drawing] % 0x2500: Requires UnicodeRegular25
+
+ \definesymbol[LightDoubleDashHorizontal][\USymbChar{37}{76}] % BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+ \definesymbol[HeavyDoubleDashHorizontal][\USymbChar{37}{77}] % BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+ \definesymbol[LightDoubleDashVertical][\USymbChar{37}{78}] % BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+ \definesymbol[HeavyDoubleDashVertical][\USymbChar{37}{79}] % BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+ \definesymbol[DoubleHorizontal][\USymbChar{37}{80}] % BOX DRAWINGS DOUBLE HORIZONTAL
+ \definesymbol[DoubleVertical][\USymbChar{37}{81}] % BOX DRAWINGS DOUBLE VERTICAL
+ \definesymbol[DownSingleAndRightDouble][\USymbChar{37}{82}] % BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ \definesymbol[DownDoubleAndRightSingle][\USymbChar{37}{83}] % BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ \definesymbol[DoubleDownAndRight][\USymbChar{37}{84}] % BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ \definesymbol[DownSingleAndLeftDouble][\USymbChar{37}{85}] % BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ \definesymbol[DownDoubleAndLeftSingle][\USymbChar{37}{86}] % BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ \definesymbol[DoubleDownAndLeft][\USymbChar{37}{87}] % BOX DRAWINGS DOUBLE DOWN AND LEFT
+ \definesymbol[UpSingleAndRightDouble][\USymbChar{37}{88}] % BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ \definesymbol[UpDoubleAndRightSingle][\USymbChar{37}{89}] % BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ \definesymbol[DoubleUpAndRight][\USymbChar{37}{90}] % BOX DRAWINGS DOUBLE UP AND RIGHT
+ \definesymbol[UpSingleAndLeftDouble][\USymbChar{37}{91}] % BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ \definesymbol[UpDoubleAndLeftSingle][\USymbChar{37}{92}] % BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ \definesymbol[DoubleUpAndLeft][\USymbChar{37}{93}] % BOX DRAWINGS DOUBLE UP AND LEFT
+ \definesymbol[VerticalSingleAndRightDouble][\USymbChar{37}{94}] % BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ \definesymbol[VerticalDoubleAndRightSingle][\USymbChar{37}{95}] % BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ \definesymbol[DoubleVerticalAndRight][\USymbChar{37}{96}] % BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ \definesymbol[VerticalSingleAndLeftDouble][\USymbChar{37}{97}] % BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ \definesymbol[VerticalDoubleAndLeftSingle][\USymbChar{37}{98}] % BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ \definesymbol[DoubleVerticalAndLeft][\USymbChar{37}{99}] % BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ \definesymbol[DownSingleAndHorizontalDouble][\USymbChar{37}{100}] % BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ \definesymbol[DownDoubleAndHorizontalSingle][\USymbChar{37}{101}] % BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ \definesymbol[DoubleDownAndHorizontal][\USymbChar{37}{102}] % BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ \definesymbol[UpSingleAndHorizontalDouble][\USymbChar{37}{103}] % BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ \definesymbol[UpDoubleAndHorizontalSingle][\USymbChar{37}{104}] % BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ \definesymbol[DoubleUpAndHorizontal][\USymbChar{37}{105}] % BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ \definesymbol[VerticalSingleAndHorizontalDouble][\USymbChar{37}{106}] % BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ \definesymbol[VerticalDoubleAndHorizontalSingle][\USymbChar{37}{107}] % BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ \definesymbol[DoubleVerticalAndHorizontal][\USymbChar{37}{108}] % BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+
+\stopsymbolset
+
+\startsymbolset[Unicode Block Elements] % 0x2580: Requires UnicodeRegular25
+
+ \definesymbol[UpperHalfBlock][\USymbChar{37}{128}] % UPPER HALF BLOCK
+ \definesymbol[LowerOneEighthBlock][\USymbChar{37}{129}] % LOWER ONE EIGHTH BLOCK
+ \definesymbol[LowerOneQuarterBlock][\USymbChar{37}{130}] % LOWER ONE QUARTER BLOCK
+ \definesymbol[LowerThreeEighthsBlock][\USymbChar{37}{131}] % LOWER THREE EIGHTHS BLOCK
+ \definesymbol[LowerHalfBlock][\USymbChar{37}{132}] % LOWER HALF BLOCK
+ \definesymbol[LowerFiveEighthsBlock][\USymbChar{37}{133}] % LOWER FIVE EIGHTHS BLOCK
+ \definesymbol[LowerThreeQuartersBlock][\USymbChar{37}{134}] % LOWER THREE QUARTERS BLOCK
+ \definesymbol[LowerSevenEighthsBlock][\USymbChar{37}{135}] % LOWER SEVEN EIGHTHS BLOCK
+ \definesymbol[FullBlock][\USymbChar{37}{136}] % FULL BLOCK
+ \definesymbol[LeftSevenEighthsBlock][\USymbChar{37}{137}] % LEFT SEVEN EIGHTHS BLOCK
+ \definesymbol[LeftThreeQuartersBlock][\USymbChar{37}{138}] % LEFT THREE QUARTERS BLOCK
+ \definesymbol[LeftFiveEighthsBlock][\USymbChar{37}{139}] % LEFT FIVE EIGHTHS BLOCK
+ \definesymbol[LeftHalfBlock][\USymbChar{37}{140}] % LEFT HALF BLOCK
+ \definesymbol[LeftThreeEighthsBlock][\USymbChar{37}{141}] % LEFT THREE EIGHTHS BLOCK
+ \definesymbol[LeftOneQuarterBlock][\USymbChar{37}{142}] % LEFT ONE QUARTER BLOCK
+ \definesymbol[LeftOneEighthBlock][\USymbChar{37}{143}] % LEFT ONE EIGHTH BLOCK
+ \definesymbol[RightHalfBlock][\USymbChar{37}{144}] % RIGHT HALF BLOCK
+ \definesymbol[UpperOneEighthBlock][\USymbChar{37}{148}] % UPPER ONE EIGHTH BLOCK
+ \definesymbol[RightOneEighthBlock][\USymbChar{37}{149}] % RIGHT ONE EIGHTH BLOCK
+
+\stopsymbolset
+
+\startsymbolset[Unicode Shade Characters] % 0x2580: Requires UnicodeRegular25
+
+ \definesymbol[LightShade][\USymbChar{37}{145}] % LIGHT SHADE
+ \definesymbol[MediumShade][\USymbChar{37}{146}] % MEDIUM SHADE
+ \definesymbol[DarkShade][\USymbChar{37}{147}] % DARK SHADE
+
+\stopsymbolset
+
+\startsymbolset[Unicode Terminal Graphics] % 0x2580: Requires UnicodeRegular25
+
+ \definesymbol[QuadrantLowerLeft][\USymbChar{37}{150}] % [Unassigned U+2596]
+ \definesymbol[QuadrantLowerRight][\USymbChar{37}{151}] % [Unassigned U+2597]
+ \definesymbol[QuadrantUpperLeft][\USymbChar{37}{152}] % [Unassigned U+2598]
+ \definesymbol[QuadrantUpperLeftAndLowerLeftAndLowerRight][\USymbChar{37}{153}] % [Unassigned U+2599]
+ \definesymbol[QuadrantUpperLeftAndLowerRight][\USymbChar{37}{154}] % [Unassigned U+259A]
+ \definesymbol[QuadrantUpperLeftAndUpperRightandLowerLeft][\USymbChar{37}{155}] % [Unassigned U+259B]
+ \definesymbol[QuadrantUpperLeftAndUpperRightAndLowerRight][\USymbChar{37}{156}] % [Unassigned U+259C]
+ \definesymbol[QuadrantUpperRight][\USymbChar{37}{157}] % [Unassigned U+259D]
+ \definesymbol[QuadrantUpperRightAndLowerLeft][\USymbChar{37}{158}] % [Unassigned U+259E]
+ \definesymbol[QuadrantUpperRightAndLowerLeftAndLowerRight][\USymbChar{37}{159}] % [Unassigned U+259F]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Geometric Shapes] % 0x25A0: Requires UnicodeRegular25
+
+ \definesymbol[BlackSquare][\USymbChar{37}{160}] % BLACK SQUARE
+ \definesymbol[WhiteSquare][\USymbChar{37}{161}] % WHITE SQUARE
+ \definesymbol[WhiteSquareWithRoundedCorners][\USymbChar{37}{162}] % WHITE SQUARE WITH ROUNDED CORNERS
+ \definesymbol[WhiteSquareContainingBlackSmallSquare][\USymbChar{37}{163}] % WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+ \definesymbol[SquareWithHorizontalFill][\USymbChar{37}{164}] % SQUARE WITH HORIZONTAL FILL
+ \definesymbol[SquareWithVerticalFill][\USymbChar{37}{165}] % SQUARE WITH VERTICAL FILL
+ \definesymbol[SquareWithOrthogonalCrosshatchFill][\USymbChar{37}{166}] % SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+ \definesymbol[SquareWithUpperLeftToLowerRightFill][\USymbChar{37}{167}] % SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+ \definesymbol[SquareWithUpperRightToLowerLeftFill][\USymbChar{37}{168}] % SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+ \definesymbol[SquareWithDiagonalCrosshatchFill][\USymbChar{37}{169}] % SQUARE WITH DIAGONAL CROSSHATCH FILL
+ \definesymbol[BlackSmallSquare][\USymbChar{37}{170}] % BLACK SMALL SQUARE
+ \definesymbol[WhiteSmallSquare][\USymbChar{37}{171}] % WHITE SMALL SQUARE
+ \definesymbol[BlackRectangle][\USymbChar{37}{172}] % BLACK RECTANGLE
+ \definesymbol[WhiteRectangle][\USymbChar{37}{173}] % WHITE RECTANGLE
+ \definesymbol[BlackVerticalRectangle][\USymbChar{37}{174}] % BLACK VERTICAL RECTANGLE
+ \definesymbol[WhiteVerticalRectangle][\USymbChar{37}{175}] % WHITE VERTICAL RECTANGLE
+ \definesymbol[BlackParallelogram][\USymbChar{37}{176}] % BLACK PARALLELOGRAM
+ \definesymbol[WhiteParallelogram][\USymbChar{37}{177}] % WHITE PARALLELOGRAM
+ \definesymbol[BlackUpPointingTriangle][\USymbChar{37}{178}] % BLACK UP-POINTING TRIANGLE
+ \definesymbol[WhiteUpPointingTriangle][\USymbChar{37}{179}] % WHITE UP-POINTING TRIANGLE
+ \definesymbol[BlackUpPointingSmallTriangle][\USymbChar{37}{180}] % BLACK UP-POINTING SMALL TRIANGLE
+ \definesymbol[WhiteUpPointingSmallTriangle][\USymbChar{37}{181}] % WHITE UP-POINTING SMALL TRIANGLE
+ \definesymbol[BlackRightPointingTriangle][\USymbChar{37}{182}] % BLACK RIGHT-POINTING TRIANGLE
+ \definesymbol[WhiteRightPointingTriangle][\USymbChar{37}{183}] % WHITE RIGHT-POINTING TRIANGLE
+ \definesymbol[BlackRightPointingSmallTriangle][\USymbChar{37}{184}] % BLACK RIGHT-POINTING SMALL TRIANGLE
+ \definesymbol[WhiteRightPointingSmallTriangle][\USymbChar{37}{185}] % WHITE RIGHT-POINTING SMALL TRIANGLE
+ \definesymbol[BlackRightPointingPointer][\USymbChar{37}{186}] % BLACK RIGHT-POINTING POINTER
+ \definesymbol[WhiteRightPointingPointer][\USymbChar{37}{187}] % WHITE RIGHT-POINTING POINTER
+ \definesymbol[BlackDownPointingTriangle][\USymbChar{37}{188}] % BLACK DOWN-POINTING TRIANGLE
+ \definesymbol[WhiteDownPointingTriangle][\USymbChar{37}{189}] % WHITE DOWN-POINTING TRIANGLE
+ \definesymbol[BlackDownPointingSmallTriangle][\USymbChar{37}{190}] % BLACK DOWN-POINTING SMALL TRIANGLE
+ \definesymbol[WhiteDownPointingSmallTriangle][\USymbChar{37}{191}] % WHITE DOWN-POINTING SMALL TRIANGLE
+ \definesymbol[BlackLeftPointingTriangle][\USymbChar{37}{192}] % BLACK LEFT-POINTING TRIANGLE
+ \definesymbol[WhiteLeftPointingTriangle][\USymbChar{37}{193}] % WHITE LEFT-POINTING TRIANGLE
+ \definesymbol[BlackLeftPointingSmallTriangle][\USymbChar{37}{194}] % BLACK LEFT-POINTING SMALL TRIANGLE
+ \definesymbol[WhiteLeftPointingSmallTriangle][\USymbChar{37}{195}] % WHITE LEFT-POINTING SMALL TRIANGLE
+ \definesymbol[BlackLeftPointingPointer][\USymbChar{37}{196}] % BLACK LEFT-POINTING POINTER
+ \definesymbol[WhiteLeftPointingPointer][\USymbChar{37}{197}] % WHITE LEFT-POINTING POINTER
+ \definesymbol[BlackDiamond][\USymbChar{37}{198}] % BLACK DIAMOND
+ \definesymbol[WhiteDiamond][\USymbChar{37}{199}] % WHITE DIAMOND
+ \definesymbol[WhiteDiamondContainingBlackSmallDiamond][\USymbChar{37}{200}] % WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+ \definesymbol[Fisheye][\USymbChar{37}{201}] % FISHEYE
+ \definesymbol[Lozenge][\USymbChar{37}{202}] % LOZENGE
+ \definesymbol[WhiteCircle][\USymbChar{37}{203}] % WHITE CIRCLE
+ \definesymbol[DottedCircle][\USymbChar{37}{204}] % DOTTED CIRCLE
+ \definesymbol[CircleWithVerticalFill][\USymbChar{37}{205}] % CIRCLE WITH VERTICAL FILL
+ \definesymbol[Bullseye][\USymbChar{37}{206}] % BULLSEYE
+ \definesymbol[BlackCircle][\USymbChar{37}{207}] % BLACK CIRCLE
+ \definesymbol[CircleWithLeftHalfBlack][\USymbChar{37}{208}] % CIRCLE WITH LEFT HALF BLACK
+ \definesymbol[CircleWithRightHalfBlack][\USymbChar{37}{209}] % CIRCLE WITH RIGHT HALF BLACK
+ \definesymbol[CircleWithLowerHalfBlack][\USymbChar{37}{210}] % CIRCLE WITH LOWER HALF BLACK
+ \definesymbol[CircleWithUpperHalfBlack][\USymbChar{37}{211}] % CIRCLE WITH UPPER HALF BLACK
+ \definesymbol[CircleWithUpperRightQuadrantBlack][\USymbChar{37}{212}] % CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+ \definesymbol[CircleWithAllButUpperLeftQuadrantBlack][\USymbChar{37}{213}] % CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+ \definesymbol[LeftHalfBlackCircle][\USymbChar{37}{214}] % LEFT HALF BLACK CIRCLE
+ \definesymbol[RightHalfBlackCircle][\USymbChar{37}{215}] % RIGHT HALF BLACK CIRCLE
+ \definesymbol[InverseBullet][\USymbChar{37}{216}] % INVERSE BULLET
+ \definesymbol[InverseWhiteCircle][\USymbChar{37}{217}] % INVERSE WHITE CIRCLE
+ \definesymbol[UpperHalfInverseWhiteCircle][\USymbChar{37}{218}] % UPPER HALF INVERSE WHITE CIRCLE
+ \definesymbol[LowerHalfInverseWhiteCircle][\USymbChar{37}{219}] % LOWER HALF INVERSE WHITE CIRCLE
+ \definesymbol[UpperLeftQuadrantCircularArc][\USymbChar{37}{220}] % UPPER LEFT QUADRANT CIRCULAR ARC
+ \definesymbol[UpperRightQuadrantCircularArc][\USymbChar{37}{221}] % UPPER RIGHT QUADRANT CIRCULAR ARC
+ \definesymbol[LowerRightQuadrantCircularArc][\USymbChar{37}{222}] % LOWER RIGHT QUADRANT CIRCULAR ARC
+ \definesymbol[LowerLeftQuadrantCircularArc][\USymbChar{37}{223}] % LOWER LEFT QUADRANT CIRCULAR ARC
+ \definesymbol[LowerHalfCircle][\USymbChar{37}{225}] % LOWER HALF CIRCLE
+ \definesymbol[BlackLowerRightTriangle][\USymbChar{37}{226}] % BLACK LOWER RIGHT TRIANGLE
+ \definesymbol[BlackLowerLeftTriangle][\USymbChar{37}{227}] % BLACK LOWER LEFT TRIANGLE
+ \definesymbol[BlackUpperLeftTriangle][\USymbChar{37}{228}] % BLACK UPPER LEFT TRIANGLE
+ \definesymbol[BlackUpperRightTriangle][\USymbChar{37}{229}] % BLACK UPPER RIGHT TRIANGLE
+ \definesymbol[WhiteBullet][\USymbChar{37}{230}] % WHITE BULLET
+ \definesymbol[SquareWithLeftHalfBlack][\USymbChar{37}{231}] % SQUARE WITH LEFT HALF BLACK
+ \definesymbol[SquareWithRightHalfBlack][\USymbChar{37}{232}] % SQUARE WITH RIGHT HALF BLACK
+ \definesymbol[SquareWithUpperLeftDiagonalHalfBlack][\USymbChar{37}{233}] % SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+ \definesymbol[SquareWithLowerRightDiagonalHalfBlack][\USymbChar{37}{234}] % SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+ \definesymbol[WhiteSquareWithVerticalBisectingLine][\USymbChar{37}{235}] % WHITE SQUARE WITH VERTICAL BISECTING LINE
+ \definesymbol[WhiteUpPointingTriangleWithDot][\USymbChar{37}{236}] % WHITE UP-POINTING TRIANGLE WITH DOT
+ \definesymbol[UpPointingTriangleWithLeftHalfBlack][\USymbChar{37}{237}] % UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+ \definesymbol[UpPointingTriangleWithRightHalfBlack][\USymbChar{37}{238}] % UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+ \definesymbol[LargeCircle][\USymbChar{37}{239}] % LARGE CIRCLE
+ \definesymbol[UpperLeftTriangle][\USymbChar{37}{248}] % [Unassigned U+25F8]
+ \definesymbol[UpperRightTriangle][\USymbChar{37}{249}] % [Unassigned U+25F9]
+ \definesymbol[LowerLeftTriangle][\USymbChar{37}{250}] % [Unassigned U+25FA]
+ \definesymbol[WhiteMediumSquare][\USymbChar{37}{251}] % [Unassigned U+25FB]
+ \definesymbol[BlackMediumSquare][\USymbChar{37}{252}] % [Unassigned U+25FC]
+ \definesymbol[WhiteMediumSmallSquare][\USymbChar{37}{253}] % [Unassigned U+25FD]
+ \definesymbol[BlackMediumSmallSquare][\USymbChar{37}{254}] % [Unassigned U+25FE]
+ \definesymbol[LowerRightTriangle][\USymbChar{37}{255}] % [Unassigned U+25FF]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Control Code Graphics] % 0x25A0: Requires UnicodeRegular25
+
+ \definesymbol[WhiteSquareWithUpperLeftQuadrant][\USymbChar{37}{240}] % WHITE SQUARE WITH UPPER LEFT QUADRANT
+ \definesymbol[WhiteSquareWithLowerLeftQuadrant][\USymbChar{37}{241}] % WHITE SQUARE WITH LOWER LEFT QUADRANT
+ \definesymbol[WhiteSquareWithLowerRightQuadrant][\USymbChar{37}{242}] % WHITE SQUARE WITH LOWER RIGHT QUADRANT
+ \definesymbol[WhiteSquareWithUpperRightQuadrant][\USymbChar{37}{243}] % WHITE SQUARE WITH UPPER RIGHT QUADRANT
+ \definesymbol[WhiteCircleWithUpperLeftQuadrant][\USymbChar{37}{244}] % WHITE CIRCLE WITH UPPER LEFT QUADRANT
+ \definesymbol[WhiteCircleWithLowerLeftQuadrant][\USymbChar{37}{245}] % WHITE CIRCLE WITH LOWER LEFT QUADRANT
+ \definesymbol[WhiteCircleWithLowerRightQuadrant][\USymbChar{37}{246}] % WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+ \definesymbol[WhiteCircleWithUpperRightQuadrant][\USymbChar{37}{247}] % WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+
+\stopsymbolset
+
+\startsymbolset[Unicode Weather and Astrological] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[BlackSunWithRays][\USymbChar{38}{0}] % BLACK SUN WITH RAYS
+ \definesymbol[Cloud][\USymbChar{38}{1}] % CLOUD
+ \definesymbol[Umbrella][\USymbChar{38}{2}] % UMBRELLA
+ \definesymbol[Snowman][\USymbChar{38}{3}] % SNOWMAN
+ \definesymbol[Comet][\USymbChar{38}{4}] % COMET
+ \definesymbol[BlackStar][\USymbChar{38}{5}] % BLACK STAR
+ \definesymbol[WhiteStar][\USymbChar{38}{6}] % WHITE STAR
+ \definesymbol[Lightning][\USymbChar{38}{7}] % LIGHTNING
+ \definesymbol[Thunderstorm][\USymbChar{38}{8}] % THUNDERSTORM
+ \definesymbol[Sun][\USymbChar{38}{9}] % SUN
+ \definesymbol[AscendingNode][\USymbChar{38}{10}] % ASCENDING NODE
+ \definesymbol[DescendingNode][\USymbChar{38}{11}] % DESCENDING NODE
+ \definesymbol[Conjunction][\USymbChar{38}{12}] % CONJUNCTION
+ \definesymbol[Opposition][\USymbChar{38}{13}] % OPPOSITION
+ \definesymbol[FirstQuarterMoon][\USymbChar{38}{61}] % FIRST QUARTER MOON
+ \definesymbol[LastQuarterMoon][\USymbChar{38}{62}] % LAST QUARTER MOON
+ \definesymbol[Mercury][\USymbChar{38}{63}] % MERCURY
+ \definesymbol[FemaleSign][\USymbChar{38}{64}] % FEMALE SIGN
+ \definesymbol[Earth][\USymbChar{38}{65}] % EARTH
+ \definesymbol[MaleSign][\USymbChar{38}{66}] % MALE SIGN
+ \definesymbol[Jupiter][\USymbChar{38}{67}] % JUPITER
+ \definesymbol[Saturn][\USymbChar{38}{68}] % SATURN
+ \definesymbol[Uranus][\USymbChar{38}{69}] % URANUS
+ \definesymbol[Neptune][\USymbChar{38}{70}] % NEPTUNE
+ \definesymbol[Pluto][\USymbChar{38}{71}] % PLUTO
+
+\stopsymbolset
+
+\startsymbolset[Unicode Miscellaneous] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[BlackTelephone][\USymbChar{38}{14}] % BLACK TELEPHONE
+ \definesymbol[WhiteTelephone][\USymbChar{38}{15}] % WHITE TELEPHONE
+ \definesymbol[BallotBox][\USymbChar{38}{16}] % BALLOT BOX
+ \definesymbol[BallotBoxWithCheck][\USymbChar{38}{17}] % BALLOT BOX WITH CHECK
+ \definesymbol[BallotBoxWithX][\USymbChar{38}{18}] % BALLOT BOX WITH X
+ \definesymbol[Saltire][\USymbChar{38}{19}] % SALTIRE
+ \definesymbol[ReversedRotatedFloralHeartBullet][\USymbChar{38}{25}] % REVERSED ROTATED FLORAL HEART BULLET
+ \definesymbol[WheelOfDharma][\USymbChar{38}{56}] % WHEEL OF DHARMA
+ \definesymbol[WhiteFrowningFace][\USymbChar{38}{57}] % WHITE FROWNING FACE
+ \definesymbol[WhiteSmilingFace][\USymbChar{38}{58}] % WHITE SMILING FACE
+ \definesymbol[BlackSmilingFace][\USymbChar{38}{59}] % BLACK SMILING FACE
+ \definesymbol[WhiteSunWithRays][\USymbChar{38}{60}] % WHITE SUN WITH RAYS
+ \definesymbol[HotSprings][\USymbChar{38}{104}] % HOT SPRINGS
+
+\stopsymbolset
+
+\startsymbolset[Unicode Japanese Chess] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[WhiteShogiPiece][\USymbChar{38}{22}] % [Unassigned U+2616]
+ \definesymbol[BlackShogiPiece][\USymbChar{38}{23}] % [Unassigned U+2617]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Pointing Hand] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[BlackLeftPointingIndex][\USymbChar{38}{26}] % BLACK LEFT POINTING INDEX
+ \definesymbol[BlackRightPointingIndex][\USymbChar{38}{27}] % BLACK RIGHT POINTING INDEX
+ \definesymbol[WhiteLeftPointingIndex][\USymbChar{38}{28}] % WHITE LEFT POINTING INDEX
+ \definesymbol[WhiteUpPointingIndex][\USymbChar{38}{29}] % WHITE UP POINTING INDEX
+ \definesymbol[WhiteRightPointingIndex][\USymbChar{38}{30}] % WHITE RIGHT POINTING INDEX
+ \definesymbol[WhiteDownPointingIndex][\USymbChar{38}{31}] % WHITE DOWN POINTING INDEX
+
+\stopsymbolset
+
+\startsymbolset[Unicode Warning Signs] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[SkullAndCrossbones][\USymbChar{38}{32}] % SKULL AND CROSSBONES
+ \definesymbol[CautionSign][\USymbChar{38}{33}] % CAUTION SIGN
+ \definesymbol[RadioactiveSign][\USymbChar{38}{34}] % RADIOACTIVE SIGN
+ \definesymbol[BiohazardSign][\USymbChar{38}{35}] % BIOHAZARD SIGN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Healing Signs] % 0x2600: Requires UnicodeRegular26
+ \definesymbol[Caduceus][\USymbChar{38}{36}] % CADUCEUS
+ \definesymbol[Ankh][\USymbChar{38}{37}] % ANKH
+\stopsymbolset
+
+\startsymbolset[Unicode Religious and Political] % 0x2600: Requires UnicodeRegular26 and 27
+
+ \definesymbol[OrthodoxCross][\USymbChar{38}{38}] % ORTHODOX CROSS
+ \definesymbol[ChiRho][\USymbChar{38}{39}] % CHI RHO
+ \definesymbol[CrossOfLorraine][\USymbChar{38}{40}] % CROSS OF LORRAINE
+ \definesymbol[CrossOfJerusalem][\USymbChar{38}{41}] % CROSS OF JERUSALEM
+ \definesymbol[StarAndCrescent][\USymbChar{38}{42}] % STAR AND CRESCENT
+ \definesymbol[FarsiSymbol][\USymbChar{38}{43}] % FARSI SYMBOL
+ \definesymbol[AdiShakti][\USymbChar{38}{44}] % ADI SHAKTI
+ \definesymbol[HammerAndSickle][\USymbChar{38}{45}] % HAMMER AND SICKLE
+ \definesymbol[PeaceSymbol][\USymbChar{38}{46}] % PEACE SYMBOL
+ \definesymbol[YinYang][\USymbChar{38}{47}] % YIN YANG
+ \definesymbol[WestSyriacCross][\USymbChar{38}{112}] % WEST SYRIAC CROSS
+ \definesymbol[EastSyriacCross][\USymbChar{38}{113}] % EAST SYRIAC CROSS
+% 27xx starts here
+ \definesymbol[OutlinedGreekCross][\USymbCharZapf{39}{25}] % OUTLINED GREEK CROSS
+ \definesymbol[HeavyGreekCross][\USymbCharZapf{39}{26}] % HEAVY GREEK CROSS
+ \definesymbol[OpenCentreCross][\USymbCharZapf{39}{27}] % OPEN CENTRE CROSS
+ \definesymbol[HeavyOpenCentreCross][\USymbCharZapf{39}{28}] % HEAVY OPEN CENTRE CROSS
+ \definesymbol[LatinCross][\USymbCharZapf{39}{29}] % LATIN CROSS
+ \definesymbol[ShadowedWhiteLatinCross][\USymbCharZapf{39}{30}] % SHADOWED WHITE LATIN CROSS
+ \definesymbol[OutlinedLatinCross][\USymbCharZapf{39}{31}] % OUTLINED LATIN CROSS
+ \definesymbol[MalteseCross][\USymbCharZapf{39}{32}] % MALTESE CROSS
+ \definesymbol[StarOfDavid][\USymbCharZapf{39}{33}] % STAR OF DAVID
+
+
+\stopsymbolset
+
+\startsymbolset[Unicode Trigram] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[TrigramForHeaven][\USymbChar{38}{48}] % TRIGRAM FOR HEAVEN
+ \definesymbol[TrigramForLake][\USymbChar{38}{49}] % TRIGRAM FOR LAKE
+ \definesymbol[TrigramForFire][\USymbChar{38}{50}] % TRIGRAM FOR FIRE
+ \definesymbol[TrigramForThunder][\USymbChar{38}{51}] % TRIGRAM FOR THUNDER
+ \definesymbol[TrigramForWind][\USymbChar{38}{52}] % TRIGRAM FOR WIND
+ \definesymbol[TrigramForWater][\USymbChar{38}{53}] % TRIGRAM FOR WATER
+ \definesymbol[TrigramForMountain][\USymbChar{38}{54}] % TRIGRAM FOR MOUNTAIN
+ \definesymbol[TrigramForEarth][\USymbChar{38}{55}] % TRIGRAM FOR EARTH
+
+\stopsymbolset
+
+\startsymbolset[Unicode Zodiac] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[Aries][\USymbChar{38}{72}] % ARIES
+ \definesymbol[Taurus][\USymbChar{38}{73}] % TAURUS
+ \definesymbol[Gemini][\USymbChar{38}{74}] % GEMINI
+ \definesymbol[Cancer][\USymbChar{38}{75}] % CANCER
+ \definesymbol[Leo][\USymbChar{38}{76}] % LEO
+ \definesymbol[Virgo][\USymbChar{38}{77}] % VIRGO
+ \definesymbol[Libra][\USymbChar{38}{78}] % LIBRA
+ \definesymbol[Scorpius][\USymbChar{38}{79}] % SCORPIUS
+ \definesymbol[Sagittarius][\USymbChar{38}{80}] % SAGITTARIUS
+ \definesymbol[Capricorn][\USymbChar{38}{81}] % CAPRICORN
+ \definesymbol[Aquarius][\USymbChar{38}{82}] % AQUARIUS
+ \definesymbol[Pisces][\USymbChar{38}{83}] % PISCES
+
+\stopsymbolset
+
+\startsymbolset[Unicode Chess] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[WhiteChessKing][\USymbChar{38}{84}] % WHITE CHESS KING
+ \definesymbol[WhiteChessQueen][\USymbChar{38}{85}] % WHITE CHESS QUEEN
+ \definesymbol[WhiteChessRook][\USymbChar{38}{86}] % WHITE CHESS ROOK
+ \definesymbol[WhiteChessBishop][\USymbChar{38}{87}] % WHITE CHESS BISHOP
+ \definesymbol[WhiteChessKnight][\USymbChar{38}{88}] % WHITE CHESS KNIGHT
+ \definesymbol[WhiteChessPawn][\USymbChar{38}{89}] % WHITE CHESS PAWN
+ \definesymbol[BlackChessKing][\USymbChar{38}{90}] % BLACK CHESS KING
+ \definesymbol[BlackChessQueen][\USymbChar{38}{91}] % BLACK CHESS QUEEN
+ \definesymbol[BlackChessRook][\USymbChar{38}{92}] % BLACK CHESS ROOK
+ \definesymbol[BlackChessBishop][\USymbChar{38}{93}] % BLACK CHESS BISHOP
+ \definesymbol[BlackChessKnight][\USymbChar{38}{94}] % BLACK CHESS KNIGHT
+ \definesymbol[BlackChessPawn][\USymbChar{38}{95}] % BLACK CHESS PAWN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Playing Card] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[BlackSpadeSuit][\USymbChar{38}{96}] % BLACK SPADE SUIT
+ \definesymbol[WhiteHeartSuit][\USymbChar{38}{97}] % WHITE HEART SUIT
+ \definesymbol[WhiteDiamondSuit][\USymbChar{38}{98}] % WHITE DIAMOND SUIT
+ \definesymbol[BlackClubSuit][\USymbChar{38}{99}] % BLACK CLUB SUIT
+ \definesymbol[WhiteSpadeSuit][\USymbChar{38}{100}] % WHITE SPADE SUIT
+ \definesymbol[BlackHeartSuit][\USymbChar{38}{101}] % BLACK HEART SUIT
+ \definesymbol[BlackDiamondSuit][\USymbChar{38}{102}] % BLACK DIAMOND SUIT
+ \definesymbol[WhiteClubSuit][\USymbChar{38}{103}] % WHITE CLUB SUIT
+
+\stopsymbolset
+
+\startsymbolset[Unicode Musical] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[QuarterNote][\USymbChar{38}{105}] % QUARTER NOTE
+ \definesymbol[EighthNote][\USymbChar{38}{106}] % EIGHTH NOTE
+ \definesymbol[BeamedEighthNotes][\USymbChar{38}{107}] % BEAMED EIGHTH NOTES
+ \definesymbol[BeamedSixteenthNotes][\USymbChar{38}{108}] % BEAMED SIXTEENTH NOTES
+ \definesymbol[MusicFlatSign][\USymbChar{38}{109}] % MUSIC FLAT SIGN
+ \definesymbol[MusicNaturalSign][\USymbChar{38}{110}] % MUSIC NATURAL SIGN
+ \definesymbol[MusicSharpSign][\USymbChar{38}{111}] % MUSIC SHARP SIGN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Recycling] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[UniversalRecycling][\USymbChar{38}{114}] % [Unassigned U+2672]
+ \definesymbol[Type1Plastics][\USymbChar{38}{115}] % [Unassigned U+2673]
+ \definesymbol[Type2Plastics][\USymbChar{38}{116}] % [Unassigned U+2674]
+ \definesymbol[Type3Plastics][\USymbChar{38}{117}] % [Unassigned U+2675]
+ \definesymbol[Type4Plastics][\USymbChar{38}{118}] % [Unassigned U+2676]
+ \definesymbol[Type5Plastics][\USymbChar{38}{119}] % [Unassigned U+2677]
+ \definesymbol[Type6Plastics][\USymbChar{38}{120}] % [Unassigned U+2678]
+ \definesymbol[Type7Plastics][\USymbChar{38}{121}] % [Unassigned U+2679]
+ \definesymbol[GenericMaterials][\USymbChar{38}{122}] % [Unassigned U+267A]
+ \definesymbol[BlackUniversalRecycling][\USymbChar{38}{123}] % [Unassigned U+267B]
+ \definesymbol[RecycledPaper][\USymbChar{38}{124}] % [Unassigned U+267C]
+ \definesymbol[PartiallyRecycledPaper][\USymbChar{38}{125}] % [Unassigned U+267D]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Dice] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[DieFace1][\USymbChar{38}{128}] % [Unassigned U+2680]
+ \definesymbol[DieFace2][\USymbChar{38}{129}] % [Unassigned U+2681]
+ \definesymbol[DieFace3][\USymbChar{38}{130}] % [Unassigned U+2682]
+ \definesymbol[DieFace4][\USymbChar{38}{131}] % [Unassigned U+2683]
+ \definesymbol[DieFace5][\USymbChar{38}{132}] % [Unassigned U+2684]
+ \definesymbol[DieFace6][\USymbChar{38}{133}] % [Unassigned U+2685]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Go Markers] % 0x2600: Requires UnicodeRegular26
+
+ \definesymbol[WhiteCircleWithDotRight][\USymbChar{38}{134}] % [Unassigned U+2686]
+ \definesymbol[WhiteCircleWithTwoDots][\USymbChar{38}{135}] % [Unassigned U+2687]
+ \definesymbol[BlackCircleWithWhiteDotRight][\USymbChar{38}{136}] % [Unassigned U+2688]
+ \definesymbol[BlackCircleWithTwoWhiteDots][\USymbChar{38}{137}] % [Unassigned U+2689]
+
+\stopsymbolset
+
+\startsymbolset[Unicode Scissors] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[UpperBladeScissors][\USymbCharZapf{39}{1}] % UPPER BLADE SCISSORS
+ \definesymbol[BlackScissors][\USymbCharZapf{39}{2}] % BLACK SCISSORS
+ \definesymbol[LowerBladeScissors][\USymbCharZapf{39}{3}] % LOWER BLADE SCISSORS
+ \definesymbol[WhiteScissors][\USymbCharZapf{39}{4}] % WHITE SCISSORS
+
+\stopsymbolset
+
+\startsymbolset[Unicode Dingbats] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[TelephoneLocationSign][\USymbCharZapf{39}{6}] % TELEPHONE LOCATION SIGN
+ \definesymbol[TapeDrive][\USymbCharZapf{39}{7}] % TAPE DRIVE
+ \definesymbol[Airplane][\USymbCharZapf{39}{8}] % AIRPLANE
+ \definesymbol[Envelope][\USymbCharZapf{39}{9}] % ENVELOPE
+ \definesymbol[VictoryHand][\USymbCharZapf{39}{12}] % VICTORY HAND
+ \definesymbol[WritingHand][\USymbCharZapf{39}{13}] % WRITING HAND
+ \definesymbol[LowerRightPencil][\USymbCharZapf{39}{14}] % LOWER RIGHT PENCIL
+ \definesymbol[Pencil][\USymbCharZapf{39}{15}] % PENCIL
+ \definesymbol[UpperRightPencil][\USymbCharZapf{39}{16}] % UPPER RIGHT PENCIL
+ \definesymbol[WhiteNib][\USymbCharZapf{39}{17}] % WHITE NIB
+ \definesymbol[BlackNib][\USymbCharZapf{39}{18}] % BLACK NIB
+ \definesymbol[BlackDiamondMinusWhiteX][\USymbCharZapf{39}{86}] % BLACK DIAMOND MINUS WHITE X
+
+\stopsymbolset
+
+\startsymbolset[Unicode Checks and Xs] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[CheckMark][\USymbCharZapf{39}{19}] % CHECK MARK
+ \definesymbol[HeavyCheckMark][\USymbCharZapf{39}{20}] % HEAVY CHECK MARK
+ \definesymbol[MultiplicationX][\USymbCharZapf{39}{21}] % MULTIPLICATION X
+ \definesymbol[HeavyMultiplicationX][\USymbCharZapf{39}{22}] % HEAVY MULTIPLICATION X
+ \definesymbol[BallotX][\USymbCharZapf{39}{23}] % BALLOT X
+ \definesymbol[HeavyBallotX][\USymbCharZapf{39}{24}] % HEAVY BALLOT X
+
+\stopsymbolset
+
+\startsymbolset[Unicode Stars] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[FourTeardropSpokedAsterisk][\USymbCharZapf{39}{34}] % FOUR TEARDROP-SPOKED ASTERISK
+ \definesymbol[FourBalloonSpokedAsterisk][\USymbCharZapf{39}{35}] % FOUR BALLOON-SPOKED ASTERISK
+ \definesymbol[HeavyFourBalloonSpokedAsterisk][\USymbCharZapf{39}{36}] % HEAVY FOUR BALLOON-SPOKED ASTERISK
+ \definesymbol[FourClubSpokedAsterisk][\USymbCharZapf{39}{37}] % FOUR CLUB-SPOKED ASTERISK
+ \definesymbol[BlackFourPointedStar][\USymbCharZapf{39}{38}] % BLACK FOUR POINTED STAR
+ \definesymbol[WhiteFourPointedStar][\USymbCharZapf{39}{39}] % WHITE FOUR POINTED STAR
+ \definesymbol[StressOutlinedWhiteStar][\USymbCharZapf{39}{41}] % STRESS OUTLINED WHITE STAR
+ \definesymbol[CircledWhiteStar][\USymbCharZapf{39}{42}] % CIRCLED WHITE STAR
+ \definesymbol[OpenCentreBlackStar][\USymbCharZapf{39}{43}] % OPEN CENTRE BLACK STAR
+ \definesymbol[BlackCentreWhiteStar][\USymbCharZapf{39}{44}] % BLACK CENTRE WHITE STAR
+ \definesymbol[OutlinedBlackStar][\USymbCharZapf{39}{45}] % OUTLINED BLACK STAR
+ \definesymbol[HeavyOutlinedBlackStar][\USymbCharZapf{39}{46}] % HEAVY OUTLINED BLACK STAR
+ \definesymbol[PinwheelStar][\USymbCharZapf{39}{47}] % PINWHEEL STAR
+ \definesymbol[ShadowedWhiteStar][\USymbCharZapf{39}{48}] % SHADOWED WHITE STAR
+ \definesymbol[HeavyAsterisk][\USymbCharZapf{39}{49}] % HEAVY ASTERISK
+ \definesymbol[OpenCentreAsterisk][\USymbCharZapf{39}{50}] % OPEN CENTRE ASTERISK
+ \definesymbol[EightSpokedAsterisk][\USymbCharZapf{39}{51}] % EIGHT SPOKED ASTERISK
+ \definesymbol[EightPointedBlackStar][\USymbCharZapf{39}{52}] % EIGHT POINTED BLACK STAR
+ \definesymbol[EightPointedPinwheelStar][\USymbCharZapf{39}{53}] % EIGHT POINTED PINWHEEL STAR
+ \definesymbol[SixPointedBlackStar][\USymbCharZapf{39}{54}] % SIX POINTED BLACK STAR
+ \definesymbol[EightPointedRectilinearBlackStar][\USymbCharZapf{39}{55}] % EIGHT POINTED RECTILINEAR BLACK STAR
+ \definesymbol[HeavyEightPointedRectilinearBlackStar][\USymbCharZapf{39}{56}] % HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+ \definesymbol[TwelvePointedBlackStar][\USymbCharZapf{39}{57}] % TWELVE POINTED BLACK STAR
+ \definesymbol[SixteenPointedAsterisk][\USymbCharZapf{39}{58}] % SIXTEEN POINTED ASTERISK
+ \definesymbol[TeardropSpokedAsterisk][\USymbCharZapf{39}{59}] % TEARDROP-SPOKED ASTERISK
+ \definesymbol[OpenCentreTeardropSpokedAsterisk][\USymbCharZapf{39}{60}] % OPEN CENTRE TEARDROP-SPOKED ASTERISK
+ \definesymbol[HeavyTeardropSpokedAsterisk][\USymbCharZapf{39}{61}] % HEAVY TEARDROP-SPOKED ASTERISK
+ \definesymbol[SixPetalledBlackAndWhiteFlorette][\USymbCharZapf{39}{62}] % SIX PETALLED BLACK AND WHITE FLORETTE
+ \definesymbol[BlackFlorette][\USymbCharZapf{39}{63}] % BLACK FLORETTE
+ \definesymbol[WhiteFlorette][\USymbCharZapf{39}{64}] % WHITE FLORETTE
+ \definesymbol[EightPetalledOutlinedBlackFlorette][\USymbCharZapf{39}{65}] % EIGHT PETALLED OUTLINED BLACK FLORETTE
+ \definesymbol[CircledOpenCentreEightPointedStar][\USymbCharZapf{39}{66}] % CIRCLED OPEN CENTRE EIGHT POINTED STAR
+ \definesymbol[HeavyTeardropSpokedPinwheelAsterisk][\USymbCharZapf{39}{67}] % HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+ \definesymbol[Sparkle][\USymbCharZapf{39}{71}] % SPARKLE
+ \definesymbol[HeavySparkle][\USymbCharZapf{39}{72}] % HEAVY SPARKLE
+ \definesymbol[Balloon-spokedAsterisk][\USymbCharZapf{39}{73}] % BALLOON-SPOKED ASTERISK
+ \definesymbol[EightTeardrop-spokedPropellerAsterisk][\USymbCharZapf{39}{74}] % EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+ \definesymbol[HeavyEightTeardrop-spokedPropellerAsterisk][\USymbCharZapf{39}{75}] % HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+
+\stopsymbolset
+
+\startsymbolset[Unicode Snowflakes] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[Snowflake][\USymbCharZapf{39}{68}] % SNOWFLAKE
+ \definesymbol[TightTrifoliateSnowflake][\USymbCharZapf{39}{69}] % TIGHT TRIFOLIATE SNOWFLAKE
+ \definesymbol[HeavyChevronSnowflake][\USymbCharZapf{39}{70}] % HEAVY CHEVRON SNOWFLAKE
+
+\stopsymbolset
+
+\startsymbolset[Unicode Shadowed Shapes] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[ShadowedWhiteCircle][\USymbCharZapf{39}{77}] % SHADOWED WHITE CIRCLE
+ \definesymbol[LowerRightDrop-shadowedWhiteSquare][\USymbCharZapf{39}{79}] % LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+ \definesymbol[UpperRightDrop-shadowedWhiteSquare][\USymbCharZapf{39}{80}] % UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+ \definesymbol[LowerRightShadowedWhiteSquare][\USymbCharZapf{39}{81}] % LOWER RIGHT SHADOWED WHITE SQUARE
+ \definesymbol[UpperRightShadowedWhiteSquare][\USymbCharZapf{39}{82}] % UPPER RIGHT SHADOWED WHITE SQUARE
+
+\stopsymbolset
+
+\startsymbolset[Unicode Bars] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[LightVerticalBar][\USymbCharZapf{39}{88}] % LIGHT VERTICAL BAR
+ \definesymbol[MediumVerticalBar][\USymbCharZapf{39}{89}] % MEDIUM VERTICAL BAR
+ \definesymbol[HeavyVerticalBar][\USymbCharZapf{39}{90}] % HEAVY VERTICAL BAR
+
+\stopsymbolset
+
+\startsymbolset[Unicode Dingbat Punctuation] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[HeavySingleTurnedCommaQuotationMark][\USymbCharZapf{39}{91}] % HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+ \definesymbol[HeavySingleCommaQuotationMark][\USymbCharZapf{39}{92}] % HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+ \definesymbol[HeavyDoubleTurnedCommaQuotationMark][\USymbCharZapf{39}{93}] % HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+ \definesymbol[HeavyDoubleCommaQuotationMark][\USymbCharZapf{39}{94}] % HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+ \definesymbol[CurvedStemParagraphSign][\USymbCharZapf{39}{97}] % CURVED STEM PARAGRAPH SIGN ORNAMENT
+ \definesymbol[HeavyExclamationMark][\USymbCharZapf{39}{98}] % HEAVY EXCLAMATION MARK ORNAMENT
+ \definesymbol[HeavyHeartExclamationMark][\USymbCharZapf{39}{99}] % HEAVY HEART EXCLAMATION MARK ORNAMENT
+
+\stopsymbolset
+
+\startsymbolset[Unicode Hearts] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[HeavyBlackHeart][\USymbCharZapf{39}{100}] % HEAVY BLACK HEART
+ \definesymbol[RotatedHeavyBlackHeartBullet][\USymbCharZapf{39}{101}] % ROTATED HEAVY BLACK HEART BULLET
+ \definesymbol[FloralHeart][\USymbCharZapf{39}{102}] % FLORAL HEART
+ \definesymbol[RotatedFloralHeartBullet][\USymbCharZapf{39}{103}] % ROTATED FLORAL HEART BULLET
+
+\stopsymbolset
+
+\startsymbolset[Unicode Negative Circled Digits] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[CircledOne][\USymbCharZapf{39}{118}] % DINGBAT NEGATIVE CIRCLED DIGIT ONE
+ \definesymbol[CircledTwo][\USymbCharZapf{39}{119}] % DINGBAT NEGATIVE CIRCLED DIGIT TWO
+ \definesymbol[CircledThree][\USymbCharZapf{39}{120}] % DINGBAT NEGATIVE CIRCLED DIGIT THREE
+ \definesymbol[CircledFour][\USymbCharZapf{39}{121}] % DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+ \definesymbol[CircledFive][\USymbCharZapf{39}{122}] % DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+ \definesymbol[CircledSix][\USymbCharZapf{39}{123}] % DINGBAT NEGATIVE CIRCLED DIGIT SIX
+ \definesymbol[CircledSeven][\USymbCharZapf{39}{124}] % DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+ \definesymbol[CircledEight][\USymbCharZapf{39}{125}] % DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+ \definesymbol[CircledNine][\USymbCharZapf{39}{126}] % DINGBAT NEGATIVE CIRCLED DIGIT NINE
+ \definesymbol[CircledTen][\USymbCharZapf{39}{127}] % DINGBAT NEGATIVE CIRCLED NUMBER TEN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Circled Sans-serif Digits] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[CircledOne][\USymbCharZapf{39}{128}] % DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+ \definesymbol[CircledTwo][\USymbCharZapf{39}{129}] % DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+ \definesymbol[CircledThree][\USymbCharZapf{39}{130}] % DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+ \definesymbol[CircledFour][\USymbCharZapf{39}{131}] % DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+ \definesymbol[CircledFive][\USymbCharZapf{39}{132}] % DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+ \definesymbol[CircledSix][\USymbCharZapf{39}{133}] % DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+ \definesymbol[CircledSeven][\USymbCharZapf{39}{134}] % DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+ \definesymbol[CircledEight][\USymbCharZapf{39}{135}] % DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+ \definesymbol[CircledNine][\USymbCharZapf{39}{136}] % DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+ \definesymbol[CircledTen][\USymbCharZapf{39}{137}] % DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Negative Circled Sans-serif Digits] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[CircledOne][\USymbCharZapf{39}{138}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+ \definesymbol[CircledTwo][\USymbCharZapf{39}{139}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+ \definesymbol[CircledThree][\USymbCharZapf{39}{140}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+ \definesymbol[CircledFour][\USymbCharZapf{39}{141}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+ \definesymbol[CircledFive][\USymbCharZapf{39}{142}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+ \definesymbol[CircledSix][\USymbCharZapf{39}{143}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+ \definesymbol[CircledSeven][\USymbCharZapf{39}{144}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+ \definesymbol[CircledEight][\USymbCharZapf{39}{145}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+ \definesymbol[CircledNine][\USymbCharZapf{39}{146}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+ \definesymbol[CircledTen][\USymbCharZapf{39}{147}] % DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+
+\stopsymbolset
+
+\startsymbolset[Unicode Dingbat Arrows] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[HeavyWideHeadedRightwardsArrow][\USymbCharZapf{39}{148}] % HEAVY WIDE-HEADED RIGHTWARDS ARROW
+ \definesymbol[HeavySouthEastArrow][\USymbCharZapf{39}{152}] % HEAVY SOUTH EAST ARROW
+ \definesymbol[HeavyRightwardsArrow][\USymbCharZapf{39}{153}] % HEAVY RIGHTWARDS ARROW
+ \definesymbol[HeavyNorthEastArrow][\USymbCharZapf{39}{154}] % HEAVY NORTH EAST ARROW
+ \definesymbol[DraftingPointRightwardsArrow][\USymbCharZapf{39}{155}] % DRAFTING POINT RIGHTWARDS ARROW
+ \definesymbol[HeavyRoundTippedRightwardsArrow][\USymbCharZapf{39}{156}] % HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+ \definesymbol[TriangleHeadedRightwardsArrow][\USymbCharZapf{39}{157}] % TRIANGLE-HEADED RIGHTWARDS ARROW
+ \definesymbol[HeavyTriangleHeadedRightwardsArrow][\USymbCharZapf{39}{158}] % HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+ \definesymbol[DashedTriangleHeadedRightwardsArrow][\USymbCharZapf{39}{159}] % DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+ \definesymbol[HeavyDashedTriangleHeadedRightwardsArrow][\USymbCharZapf{39}{160}] % HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+ \definesymbol[BlackRightwardsArrow][\USymbCharZapf{39}{161}] % BLACK RIGHTWARDS ARROW
+ \definesymbol[3DTopLightedRightwardsArrowhead][\USymbCharZapf{39}{162}] % THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+ \definesymbol[3DBottomLightedRightwardsArrowhead][\USymbCharZapf{39}{163}] % THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+ \definesymbol[BlackRightwardsArrowhead][\USymbCharZapf{39}{164}] % BLACK RIGHTWARDS ARROWHEAD
+ \definesymbol[HeavyBlackCurvedDownwardsAndRightwardsArrow][\USymbCharZapf{39}{165}] % HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+ \definesymbol[HeavyBlackCurvedUpwardsAndRightwardsArrow][\USymbCharZapf{39}{166}] % HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+ \definesymbol[SquatBlackRightwardsArrow][\USymbCharZapf{39}{167}] % SQUAT BLACK RIGHTWARDS ARROW
+ \definesymbol[HeavyConcavePointedBlackRightwardsArrow][\USymbCharZapf{39}{168}] % HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+ \definesymbol[CircledHeavyWhiteRightwardsArrow][\USymbCharZapf{39}{178}] % CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+ \definesymbol[OpenOutlinedRightwardsArrow][\USymbCharZapf{39}{190}] % OPEN-OUTLINED RIGHTWARDS ARROW
+
+\stopsymbolset
+
+\startsymbolset[Unicode Shadowed Arrows] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[RightShadedWhiteRightwardsArrow][\USymbCharZapf{39}{169}] % RIGHT-SHADED WHITE RIGHTWARDS ARROW
+ \definesymbol[LeftShadedWhiteRightwardsArrow][\USymbCharZapf{39}{170}] % LEFT-SHADED WHITE RIGHTWARDS ARROW
+ \definesymbol[BackTiltedShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{171}] % BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+ \definesymbol[FrontTiltedShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{172}] % FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+ \definesymbol[HeavyLowerRightShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{173}] % HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+ \definesymbol[HeavyUpperRightShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{174}] % HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+ \definesymbol[NotchedLowerRightShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{175}] % NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+ \definesymbol[NotchedUpperRightShadowedWhiteRightwardsArrow][\USymbCharZapf{39}{177}] % NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+
+\stopsymbolset
+
+\startsymbolset[Unicode Tailed Arrows] % 0x2700: Requires UnicodeRegular27
+
+ \definesymbol[WhiteFeatheredRightwardsArrow][\USymbCharZapf{39}{179}] % WHITE-FEATHERED RIGHTWARDS ARROW
+ \definesymbol[BlackFeatheredSouthEastArrow][\USymbCharZapf{39}{180}] % BLACK-FEATHERED SOUTH EAST ARROW
+ \definesymbol[BlackFeatheredRightwardsArrow][\USymbCharZapf{39}{181}] % BLACK-FEATHERED RIGHTWARDS ARROW
+ \definesymbol[BlackFeatheredNorthEastArrow][\USymbCharZapf{39}{182}] % BLACK-FEATHERED NORTH EAST ARROW
+ \definesymbol[HeavyBlack-featheredSouthEastArrow][\USymbCharZapf{39}{183}] % HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+ \definesymbol[HeavyBlackFeatheredRightwardsArrow][\USymbCharZapf{39}{184}] % HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+ \definesymbol[HeavyBlackFeatheredNorthEastArrow][\USymbCharZapf{39}{185}] % HEAVY BLACK-FEATHERED NORTH EAST ARROW
+ \definesymbol[TeardropBarbedRightwardsArrow][\USymbCharZapf{39}{186}] % TEARDROP-BARBED RIGHTWARDS ARROW
+ \definesymbol[HeavyTeardropShankedRightwardsArrow][\USymbCharZapf{39}{187}] % HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+ \definesymbol[WedgeTailedRightwardsArrow][\USymbCharZapf{39}{188}] % WEDGE-TAILED RIGHTWARDS ARROW
+ \definesymbol[HeavyWedgeTailedRightwardsArrow][\USymbCharZapf{39}{189}] % HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+
+\stopsymbolset
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-con.tex b/Master/texmf-dist/tex/context/base/syst-con.tex
new file mode 100644
index 00000000000..a9e04921f5f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-con.tex
@@ -0,0 +1,211 @@
+%D \module
+%D [ file=syst-con,
+%D version=2000.12.10, % actually very old -)
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Conversions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context System Macro's / Conversions}
+
+\unprotect
+
+%D When the number of conversions grew, it did no longer make
+%D sense to spread them over multiple files. So, instead of
+%D defining these in \type {font-ini}, we now have a dedicated
+%D module.
+
+\catcode127=12 % \@@letter
+
+%D \macros
+%D {lchexnumber,uchexnumber,lchexnumbers,uchexnumbers}
+%D
+%D In addition to the uppercase hex conversion, as needed in
+%D math families, we occasionally need a lowercase one, for
+%D instance when we want to compose gbsong fontnames.
+%D
+%D The ugly indirectness is needed to get rid of \TEX\
+%D induced spaces and \type {\relax}'s.
+%D
+%D \starttyping
+%D [\uchexnumber{0}]
+%D [\uchexnumber\scratchcounter]
+%D [\uchexnumber\zerocount]
+%D [\uchexnumber{\number0}]
+%D [\uchexnumber{\number\scratchcounter}]
+%D [\uchexnumber{\number\zerocount}]
+%D [\uchexnumber{\the\scratchcounter}]
+%D [\uchexnumber{\the\zerocount}]
+%D [\expandafter\uchexnumber\expandafter{\number0}]
+%D [\expandafter\uchexnumber\expandafter{\number\scratchcounter}]
+%D [\expandafter\uchexnumber\expandafter{\number\zerocount}]
+%D [\expandafter\uchexnumber\expandafter{\the\scratchcounter}]
+%D [\expandafter\uchexnumber\expandafter{\the\zerocount}]
+%D \stoptyping
+
+\def\lchexnumber#1%
+ {\@EA\dolchexnumber\number#1\relax}
+
+\def\dolchexnumber#1\relax % \def\lchexnumber#1%
+ {\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+ 8\or 9\or a\or b\or c\or d\or e\or f\else 0\fi}
+
+\def\uchexnumber#1%
+ {\@EA\douchexnumber\number#1\relax}
+
+\def\douchexnumber#1\relax % \def\uchexnumber#1%
+ {\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or
+ 8\or 9\or A\or B\or C\or D\or E\or F\else 0\fi}
+
+\let\hexnumber=\uchexnumber
+
+\def\lchexnumbers#1%
+ {\@EA\dolchexnumbers\number#1\relax}
+
+\def\dolchexnumbers#1\relax % \def\lchexnumbers#1%
+ {\ifcase#1
+ 00\or 01\or 02\or 03\or 04\or 05\or 06\or 07\or 08\or 09\or 0a\or 0b\or 0c\or 0d\or 0e\or 0f\or
+ 10\or 11\or 12\or 13\or 14\or 15\or 16\or 17\or 18\or 19\or 1a\or 1b\or 1c\or 1d\or 1e\or 1f\or
+ 20\or 21\or 22\or 23\or 24\or 25\or 26\or 27\or 28\or 29\or 2a\or 2b\or 2c\or 2d\or 2e\or 2f\or
+ 30\or 31\or 32\or 33\or 34\or 35\or 36\or 37\or 38\or 39\or 3a\or 3b\or 3c\or 3d\or 3e\or 3f\or
+ 40\or 41\or 42\or 43\or 44\or 45\or 46\or 47\or 48\or 49\or 4a\or 4b\or 4c\or 4d\or 4e\or 4f\or
+ 50\or 51\or 52\or 53\or 54\or 55\or 56\or 57\or 58\or 59\or 5a\or 5b\or 5c\or 5d\or 5e\or 5f\or
+ 60\or 61\or 62\or 63\or 64\or 65\or 66\or 67\or 68\or 69\or 6a\or 6b\or 6c\or 6d\or 6e\or 6f\or
+ 70\or 71\or 72\or 73\or 74\or 75\or 76\or 77\or 78\or 79\or 7a\or 7b\or 7c\or 7d\or 7e\or 7f\or
+ 80\or 81\or 82\or 83\or 84\or 85\or 86\or 87\or 88\or 89\or 8a\or 8b\or 8c\or 8d\or 8e\or 8f\or
+ 90\or 91\or 92\or 93\or 94\or 95\or 96\or 97\or 98\or 99\or 9a\or 9b\or 9c\or 9d\or 9e\or 9f\or
+ a0\or a1\or a2\or a3\or a4\or a5\or a6\or a7\or a8\or a9\or aa\or ab\or ac\or ad\or ae\or af\or
+ b0\or b1\or b2\or b3\or b4\or b5\or b6\or b7\or b8\or b9\or ba\or bb\or bc\or bd\or be\or bf\or
+ c0\or c1\or c2\or c3\or c4\or c5\or c6\or c7\or c8\or c9\or ca\or cb\or cc\or cd\or ce\or cf\or
+ d0\or d1\or d2\or d3\or d4\or d5\or d6\or d7\or d8\or d9\or da\or db\or dc\or dd\or de\or df\or
+ e0\or e1\or e2\or e3\or e4\or e5\or e6\or e7\or e8\or e9\or ea\or eb\or ec\or ed\or ee\or ef\or
+ f0\or f1\or f2\or f3\or f4\or f5\or f6\or f7\or f8\or f9\or fa\or fb\or fc\or fd\or fe\or ff\fi}
+
+\def\uchexnumbers#1%
+ {\@EA\douchexnumbers\number#1\relax}
+
+\def\douchexnumbers#1\relax % \def\uchexnumbers#1%
+ {\ifcase#1
+ 00\or 01\or 02\or 03\or 04\or 05\or 06\or 07\or 08\or 09\or 0A\or 0B\or 0C\or 0D\or 0E\or 0F\or
+ 10\or 11\or 12\or 13\or 14\or 15\or 16\or 17\or 18\or 19\or 1A\or 1B\or 1C\or 1D\or 1E\or 1F\or
+ 20\or 21\or 22\or 23\or 24\or 25\or 26\or 27\or 28\or 29\or 2A\or 2B\or 2C\or 2D\or 2E\or 2F\or
+ 30\or 31\or 32\or 33\or 34\or 35\or 36\or 37\or 38\or 39\or 3A\or 3B\or 3C\or 3D\or 3E\or 3F\or
+ 40\or 41\or 42\or 43\or 44\or 45\or 46\or 47\or 48\or 49\or 4A\or 4B\or 4C\or 4D\or 4E\or 4F\or
+ 50\or 51\or 52\or 53\or 54\or 55\or 56\or 57\or 58\or 59\or 5A\or 5B\or 5C\or 5D\or 5E\or 5F\or
+ 60\or 61\or 62\or 63\or 64\or 65\or 66\or 67\or 68\or 69\or 6A\or 6B\or 6C\or 6D\or 6E\or 6F\or
+ 70\or 71\or 72\or 73\or 74\or 75\or 76\or 77\or 78\or 79\or 7A\or 7B\or 7C\or 7D\or 7E\or 7F\or
+ 80\or 81\or 82\or 83\or 84\or 85\or 86\or 87\or 88\or 89\or 8A\or 8B\or 8C\or 8D\or 8E\or 8F\or
+ 90\or 91\or 92\or 93\or 94\or 95\or 96\or 97\or 98\or 99\or 9A\or 9B\or 9C\or 9D\or 9E\or 9F\or
+ A0\or A1\or A2\or A3\or A4\or A5\or A6\or A7\or A8\or A9\or AA\or AB\or AC\or AD\or AE\or AF\or
+ B0\or B1\or B2\or B3\or B4\or B5\or B6\or B7\or B8\or B9\or BA\or BB\or BC\or BD\or BE\or BF\or
+ C0\or C1\or C2\or C3\or C4\or C5\or C6\or C7\or C8\or C9\or CA\or CB\or CC\or CD\or CE\or CF\or
+ D0\or D1\or D2\or D3\or D4\or D5\or D6\or D7\or D8\or D9\or DA\or DB\or DC\or DD\or DE\or DF\or
+ E0\or E1\or E2\or E3\or E4\or E5\or E6\or E7\or E8\or E9\or EA\or EB\or EC\or ED\or EE\or EF\or
+ F0\or F1\or F2\or F3\or F4\or F5\or F6\or F7\or F8\or F9\or FA\or FB\or FC\or FD\or FE\or FF\fi}
+
+%D \macros
+%D {octnumber}
+%D
+%D For unicode remapping purposes, we need octal numbers.
+
+\def\octnumber#1%
+ {\@EA\dooctnumber\number#1\relax}
+
+\def\dooctnumber#1\relax % \def\octnumber#1%
+ {\ifcase#1
+ 000\or 001\or 002\or 003\or 004\or 005\or 006\or 007\or
+ 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017\or
+ 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027\or
+ 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037\or
+ 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047\or
+ 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057\or
+ 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067\or
+ 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077\or
+ 100\or 101\or 102\or 103\or 104\or 105\or 106\or 107\or
+ 110\or 111\or 112\or 113\or 114\or 115\or 116\or 117\or
+ 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127\or
+ 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137\or
+ 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147\or
+ 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157\or
+ 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167\or
+ 170\or 171\or 172\or 173\or 174\or 175\or 176\or 177\or
+ 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207\or
+ 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217\or
+ 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227\or
+ 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237\or
+ 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247\or
+ 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257\or
+ 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267\or
+ 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277\or
+ 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307\or
+ 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317\or
+ 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327\or
+ 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337\or
+ 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347\or
+ 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357\or
+ 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367\or
+ 370\or 371\or 372\or 373\or 374\or 375\or 376\or 377\fi}
+
+%D \macros
+%D {hexstringtonumber}
+%D
+%D This macro converts a two character hexadecimal number into
+%D a decimal number, thereby taking care of lowercase characters
+%D as well.
+
+\dostepwiserecurse{0}{9}{1}{\setevalue{@@uc@@\recurselevel}{\recurselevel}}
+
+\setvalue{@@uc@@a}{A} \setvalue{@@uc@@A}{A}
+\setvalue{@@uc@@b}{B} \setvalue{@@uc@@B}{B}
+\setvalue{@@uc@@c}{C} \setvalue{@@uc@@C}{C}
+\setvalue{@@uc@@d}{D} \setvalue{@@uc@@D}{D}
+\setvalue{@@uc@@e}{E} \setvalue{@@uc@@E}{E}
+\setvalue{@@uc@@f}{F} \setvalue{@@uc@@F}{F}
+
+\def\hexstringtonumber#1% {FF}
+ {\dohexstringtonumber#1}
+
+\def\dohexstringtonumber#1#2% FF
+ {"\csname @@uc@@#1\endcsname\csname @@uc@@#2\endcsname}
+
+%D \macros
+%D {rawcharacter}
+%D
+%D This conversion macro produces raw characters. We have to
+%D construct the macro in a special way to avoid problems with
+%D characters with special meanings. So, we revert to the
+%D lowercase conversion trick to bypass \TEX's input parser.
+
+\bgroup
+
+\catcode`\^^@=12 % ascii null == ignored in plain
+\catcode`\^^?=12 % ascii delete == invalid in plain
+
+\let\or\relax
+
+\xdef\rawcharacter{ ^^00\or}
+
+\dorecurse{255}
+ {\lccode`a=\recurselevel
+ \lowercase{\xdef\rawcharacter{\rawcharacter a\or}}}
+
+\@EA\gdef\@EA\rawcharacter\@EA#\@EA1\@EA
+ {\@EA\ifcase\@EA#\@EA1\rawcharacter\fi}
+
+\egroup
+
+%D \macros
+%D {threedigits}
+%D
+%D This one provides three digits always.
+
+\def\threedigits#1%
+ {\ifnum#1<10 00\else\ifnum#1<100 0\fi\fi\number#1}
+
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-etx.tex b/Master/texmf-dist/tex/context/base/syst-etx.tex
new file mode 100644
index 00000000000..55837b02ff1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-etx.tex
@@ -0,0 +1,287 @@
+%D \module
+%D [ file=syst-etx,
+%D version=1999.03.17, % some time ...
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Efficient \PLAIN\ \TEX\ loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module prepares \CONTEXT\ for \ETEX. We don't use
+%D the definition files that come with this useful \TEX\
+%D extension, but implement our own alternatives.
+
+%D \CONTEXT\ was one of the first systems that had support for \ETEX\
+%D built in. In the process we found out that the extensions were not
+%D as bug free as the rest of \TEX. Especially the bugs in \type
+%D {lastnode}, flushing of token lists with an index in the extension
+%D range, and spurious box behaviour of boxes adressed in the extended
+%D box space made us a bit careful. It's hard to to track down such
+%D bugs, especially if one has a mind set of \TEX\ being bug free. If
+%D you encounter unexpected behaviour let me know. Currently the
+%D scantokens mechanism can handle only one||liners, but Taco will
+%D provide an alternative some day.
+%D
+%D \starttyping
+%D \bgroup
+%D \lccode`a=12\lowercase{\xdef\whatever{a}}\egroup
+%D \def\whatever{test \whatever test}
+%D \scantokens\expandafter{\whatever}
+%D \egroup
+%D \stoptyping
+
+\unprotect
+
+%D \ETEX\ has a not so handy way of telling you the version number,
+%D i.e. the revision number has a period in it:
+
+\long\def\gobbleoneargument#1{}
+
+\beginETEX
+ \mathchardef\etexversion=\numexpr\eTeXversion*100+\expandafter\gobbleoneargument\eTeXrevision\relax
+\endETEX
+
+\beginTEX
+ \mathchardef\etexversion=0
+\endTEX
+
+%D Constants to be used with \type {\grouptype}.
+
+\chardef\@@bottomlevelgroup = 0
+\chardef\@@simplegroup = 1
+\chardef\@@hboxgroup = 2
+\chardef\@@adjustedhboxgroup = 3
+\chardef\@@vboxgroup = 4
+\chardef\@@vtopgroup = 5
+\chardef\@@aligngroup = 6
+\chardef\@@noaligngroup = 7
+\chardef\@@outputgroup = 8
+\chardef\@@mathgroup = 9
+\chardef\@@discretionarygroup = 10
+\chardef\@@insertgroup = 11
+\chardef\@@vcentergroup = 12
+\chardef\@@mathchoicegroup = 13
+\chardef\@@semisimplegroup = 14
+\chardef\@@mathshiftgroup = 15
+\chardef\@@mathleftgroup = 16
+
+\chardef\@@vadjustgroup = \@@insertgroup
+
+%D Constants to be used with \type {\interactionmode}.
+
+\chardef\@@batchmode = 0
+\chardef\@@nonstopmode = 1
+\chardef\@@scrollmode = 2
+\chardef\@@errorstopmode = 3
+
+%D Constants to be used with \type {\lastnodetype}.
+
+\chardef\@@charnode = 0
+\chardef\@@hlistnode = 1
+\chardef\@@vlistnode = 2
+\chardef\@@rulenode = 3
+\chardef\@@insertnode = 4
+\chardef\@@marknode = 5
+\chardef\@@adjustnode = 6
+\chardef\@@ligaturenode = 7
+\chardef\@@discretionarynode = 8
+\chardef\@@whatsitnode = 9
+\chardef\@@mathnode = 10
+\chardef\@@gluenode = 11
+\chardef\@@kernnode = 12
+\chardef\@@penaltynode = 13
+\chardef\@@unsetnode = 14
+\chardef\@@mathsnode = 15
+
+%D Constants to be used with \type {\iftype}.
+
+\chardef\@@charif = 1
+\chardef\@@catif = 2
+\chardef\@@numif = 3
+\chardef\@@dimif = 4
+\chardef\@@oddif = 5
+\chardef\@@vmodeif = 6
+\chardef\@@hmodeif = 7
+\chardef\@@mmodeif = 8
+\chardef\@@innerif = 9
+\chardef\@@voidif = 10
+\chardef\@@hboxif = 11
+\chardef\@@vboxif = 12
+\chardef\@@xif = 13
+\chardef\@@eofif = 14
+\chardef\@@trueif = 15
+\chardef\@@falseif = 16
+\chardef\@@caseif = 17
+\chardef\@@definedif = 18
+\chardef\@@csnameif = 19
+\chardef\@@fontcharif = 20
+
+%D Just in case we are not using \ETEX, we define some out of
+%D range constants.
+
+\beginTEX
+
+\chardef\grouptype = 255
+\chardef\interactionmode = 255
+\chardef\nodetype = 255
+\chardef\iftype = 255
+
+\endTEX
+
+%D Of course we want even bigger log files, so we copied this
+%D from the \ETEX\ source files.
+
+\beginETEX \tracing...
+
+\def\tracingall
+ {\tracingonline \@ne
+ \tracingcommands \thr@@
+ \tracingstats \tw@
+ \tracingpages \@ne
+ \tracingoutput \@ne
+ \tracinglostchars \tw@
+ \tracingmacros \tw@
+ \tracingparagraphs\@ne
+ \tracingrestores \@ne
+ \showboxbreadth \maxdimen
+ \showboxdepth \maxdimen
+ \tracinggroups \@ne
+ \tracingifs \@ne
+ \tracingscantokens\@ne
+ \tracingnesting \@ne
+ \tracingassigns \tw@
+ \errorstopmode}
+
+\def\loggingall
+ {\tracingall
+ \tracingonline \z@}
+
+\def\tracingnone
+ {\tracingassigns \z@
+ \tracingnesting \z@
+ \tracingscantokens\z@
+ \tracingifs \z@
+ \tracinggroups \z@
+ \showboxdepth \thr@@
+ \showboxbreadth 5
+ \tracingrestores \z@
+ \tracingparagraphs\z@
+ \tracingmacros \z@
+ \tracinglostchars \@ne
+ \tracingoutput \z@
+ \tracingpages \z@
+ \tracingstats \z@
+ \tracingcommands \z@
+ \tracingonline \z@ }
+
+\endETEX
+
+%D Just to be sure:
+
+\ifx\eTeX\undefined
+
+ \def\eTeX{$\varepsilon$-\TeX}
+
+\fi
+
+%D In \ETEX\ we have lots of registers, so we redefine a few
+%D low level macros. We reserve some extra space for inserts
+%D and as soon as we near the end of the first register
+%D memory bank (often some 10 less than 255), we switch to the
+%D slower range \type {\@@medallocation}||\type {\@@maxallocation}.
+
+\beginETEX \new...
+
+%D First we redefine the plain \TEX\ register allocation macros.
+
+\def\newcount {\myalloc@0\count \countdef \@@maxallocation}
+\def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
+\def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
+\def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
+\def\newbox {\myalloc@4\box \mathchardef\@@maxallocation}
+\def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
+\def\newread {\myalloc@6\read \chardef \@@minallocation}
+\def\newwrite {\myalloc@7\write \chardef \@@minallocation}
+\def\newmarks {\myalloc@8\marks \mathchardef\@@maxallocation}
+\def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
+
+%D Since in \CONTEXT\ we only have one math family left we
+%D redefine \type {\newfam}.
+
+\def\newfam#1{\chardef#1=15 }
+
+%D Therefore we should reset the related counter.
+
+\count18=1
+
+%D We use some constants in the tests.
+
+\mathchardef\@@minallocation = 16
+\mathchardef\@@medallocation = 256
+\mathchardef\@@maxallocation = 32767
+
+%D I cannot imagine that more than~8 extra insert classes
+%D are needed, but, for critical editions, we may need many
+%D more, so:
+
+\chardef\@@insallocation=32
+
+%D However, there's a bug in \ETEX\ versions smaller that 2.2,
+%D so we need to play safe:
+
+\ifnum\etexversion<202 \chardef\@@insallocation=8 \fi
+
+%D My low level allocation macro now comes down to:
+
+\def\myalloc@#1#2#3#4#5%
+ {\global\advance\count1#1by\@ne
+ \ifnum\count1#1>\@@medallocation \else
+ \global\advance\insc@unt by -\@@insallocation
+ \ifnum\count1#1<\insc@unt \else
+ \global\count1#1=\@@medallocation % \wait
+ \fi
+ \global\advance\insc@unt by +\@@insallocation
+ \fi
+ \ifnum\count1#1>#4%
+ \global\count1#1=#4%
+ \errmessage{No room for (\string#2) \string#5}%
+ \fi
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+
+\endETEX
+
+%D These macros can be checked by tests like:
+%D
+%D \starttyping
+%D \let\wlog\message \dorecurse{1000}{\newcount\dummy}
+%D \stoptyping
+
+%D A few bonus bindings.
+
+\let\normalprotected = \protected
+\let\normalunexpanded = \unexpanded
+
+%D \macros
+%D {begcsname}
+%D
+%D Handy for \ETEX-only usage:
+
+\beginETEX \ifcsname
+
+ \def\begcsname#1\endcsname{\ifcsname#1\endcsname\csname#1\endcsname\fi}
+
+\endETEX
+
+\beginTEX
+
+ \def\begcsname#1\endcsname{\csname#1\endcsname}
+
+\endTEX
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-ext.tex b/Master/texmf-dist/tex/context/base/syst-ext.tex
new file mode 100644
index 00000000000..51376ce78c7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-ext.tex
@@ -0,0 +1,4786 @@
+%D \module
+%D [ file=syst-ext,
+%D version=1995.10.10,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Extras,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context System Macro's / Extras}
+
+%D In this second system module, we continue the definition of
+%D some handy commands.
+
+\unprotect
+
+%D \macros
+%D {rawgetparameters}
+%D
+%D A raw and dirty alternative for \type {\getparameters}; no
+%D checking is done!
+
+% \def\rawgetparameters[#1][#2]% scheelt 5\%
+% {\def\rawparameterprefix{#1}%
+% \expandafter\rawsetparameter#2,]=,}
+
+\def\rawsetparameter#1=#2,%
+ {\if]#1\else
+ \expandafter\def\csname\rawparameterprefix#1\endcsname{#2}%
+ \expandafter\rawsetparameter
+ \fi}
+
+% the next one handles empty #1 okay:
+
+\def\rawgetparameters[#1][#2% some 5-10% faster
+ {\ifx#2]% test is needed, else bomb on [#1][]
+ \expandafter\gobbleoneargument
+ \else
+ \def\rawparameterprefix{#1}%
+ \expandafter\dorawgetparameters
+ \fi#2}
+
+\def\dorawgetparameters#1]%
+ {\expandafter\rawsetparameter#1,]=,}
+
+%D \macros
+%D {doglobal,
+%D redoglobal,dodoglobal,resetglobal}
+%D
+%D The two macros \type {\redoglobal} and \type{\dodoglobal} are
+%D used in this and some other modules to enforce a user
+%D specified \type {\doglobal} action. The last and often only
+%D global assignment in a macro is done with
+%D \type {\dodoglobal}, but all preceding ones with
+%D \type {\redoglobal}. When using only alternatives, one can
+%D reset this mechanism with \type {\resetglobal}.
+
+\def\doglobal
+ {\let\redoglobal\global
+ \def\dodoglobal{\resetglobal\global}}
+
+\def\resetglobal
+ {\let\redoglobal\relax
+ \let\dodoglobal\relax}
+
+\resetglobal
+
+%D New:
+
+\def\doglobal
+ {\ifx\redoglobal\relax
+ \let\redoglobal\global
+ \let\dodoglobal\@@dodoglobal
+ %\else
+ % \writestatus{system}{global not reset, warn me!}%
+ \fi}
+
+\def\@@dodoglobal
+ {\resetglobal\global}
+
+\def\saveglobal
+ {\let\@@dodoglobal\dodoglobal
+ \let\@@redoglobal\redoglobal}
+
+\def\restoreglobal
+ {\let\redoglobal\@@redoglobal
+ \let\dodoglobal\@@dodoglobal}
+
+%D A very useful application of this macro is \type {\newif},
+%D \TEX's fake boolean type. Not being a primitive,
+%D \type {\global} hopelessly fails here. But a slight
+%D adaption of Knuth's original macro permits:
+%D
+%D \starttyping
+%D \doglobal\newif\iftest
+%D \stoptyping
+%D
+%D Of course one can still say:
+%D
+%D \starttyping
+%D \global\testtrue
+%D \global\testfalse
+%D \stoptyping
+%D
+%D Apart from the prefixes, a few more \type{\expandafters}
+%D are needed:
+
+\def\newif#1%
+ {\count@\escapechar
+ \escapechar\m@ne
+ \expandafter\expandafter\expandafter
+ \redoglobal\expandafter\expandafter\expandafter
+ \edef\@if#1{true}{\let\noexpand#1\noexpand\iftrue}%
+ \expandafter\expandafter\expandafter
+ \redoglobal\expandafter\expandafter\expandafter
+ \edef\@if#1{false}{\let\noexpand#1\noexpand\iffalse}%
+ \dodoglobal\@if#1{false}%
+ \escapechar\count@}
+
+%D Also new:
+
+\def\define#1%
+ {\ifx#1\undefined
+ \expandafter\def
+ \else
+ \message{[\noexpand#1is already defined]}%
+ \expandafter\def\expandafter\gobbleddefinition
+ \fi#1}
+
+\def\redefine#1%
+ {\ifx#1\undefined\else
+ \message{[\noexpand#1is redefined]}%
+ \fi
+ \def#1}
+
+% \define\hans{hans}
+% \redefine\hans{hans}
+% \define\hans#1[]#2#3{hans}
+
+%D \macros
+%D {newcounter,
+%D increment,decrement}
+%D
+%D Unfortunately the number of \COUNTERS\ in \TEX\ is limited,
+%D but fortunately we can store numbers in a macro. We can
+%D increment such pseudo \COUNTERS\ with \type{\increment}.
+%D
+%D \starttyping
+%D \increment(\counter,20)
+%D \increment(\counter,-4)
+%D \increment(\counter)
+%D \increment\counter
+%D \stoptyping
+%D
+%D After this sequence of commands, the value of
+%D \type{\counter} is 20, 16, 17 and~18. Of course there is
+%D also the complementary command \type{\decrement}.
+%D
+%D Global assignments are possible too, using \type{\doglobal}:
+%D
+%D \starttyping
+%D \doglobal\increment\counter
+%D \stoptyping
+%D
+%D When \type{\counter} is undefined, it's value is initialized
+%D at~0. It is nevertheless better to define a \COUNTER\
+%D explicitly. One reason could be that the \COUNTER\ can be
+%D part of a test with \type{\ifnum} and this conditional does
+%D not accept undefined macro's. The \COUNTER\ in our example
+%D can for instance be defined with:
+%D
+%D \starttyping
+%D \newcounter\counter
+%D \stoptyping
+%D
+%D The command \type{\newcounter} must not be confused with
+%D \type{\newcount}! Of course this mechanism is much slower
+%D than using \TEX's \COUNTERS\ directly. In practice
+%D \COUNTERS\ (and therefore our pseudo counters too) are
+%D seldom the bottleneck in the processing of a text. Apart
+%D from some other incompatilities we want to mention a pitfal
+%D when using \type{\ifnum}.
+%D
+%D \starttyping
+%D \ifnum\normalcounter=\pseudocounter \doif \else \doelse \fi
+%D \ifnum\pseudocounter=\normalcounter \doif \else \doelse \fi
+%D \stoptyping
+%D
+%D In the first test, \TEX\ continues it's search for the
+%D second number after reading \type{\pseudocounter}, while
+%D in the second test, it stops reading after having
+%D encountered a real one. Tests like the first one therefore
+%D can give unexpected results, for instance execution
+%D of \type{\doif} even if both numbers are unequal.
+
+\def\zerocountervalue{0}
+
+\def\newcounter#1%
+ {\dodoglobal\let#1\zerocountervalue}
+
+% This is the original implementation:
+%
+% \def\dodododoincrement(#1,#2)%
+% {\ifx#1\undefined
+% \redoglobal\let#1\zerocountervalue
+% \else\ifx#1\relax % \csname...\endcsname
+% \redoglobal\let#1\zerocountervalue
+% \fi\fi
+% \scratchcounter=#2\relax
+% \scratchcounter=\incrementsign\scratchcounter
+% \advance\scratchcounter #1\relax
+% \dodoglobal\edef#1{\the\scratchcounter}}
+%
+% \def\dododoincrement#1%
+% {\dodododoincrement(#1,1)}
+%
+% \def\dodoincrement(#1%
+% {\doifnextcharelse,%
+% {\dodododoincrement(#1}{\dodododoincrement(#1,1}}
+%
+% \def\doincrement#1%
+% {\def\incrementsign{#1}%
+% \doifnextcharelse(\dodoincrement\dododoincrement}
+%
+% \def\increment{\doincrement+}
+% \def\decrement{\doincrement-}
+%
+% And this is the one optimized for speed:
+
+% maxcounter = 2\maxdimen=1
+
+\def\!!zerocount {0} % alongside \zerocount
+\def\!!minusone {-1} % alongside \minusone
+\def\!!plusone {1} % alongside \plusone
+
+\beginTEX
+
+\def\dodoindecrement#1(#2,#3)%
+ {\ifx#2\undefined
+ \redoglobal\let#2\zerocountervalue
+ \else\ifx#2\relax % \csname...\endcsname
+ \redoglobal\let#2\zerocountervalue
+ \fi\fi
+ \scratchcounter#3\relax
+ \scratchcounter#1\scratchcounter
+ \advance\scratchcounter#2\relax
+ \dodoglobal\edef#2{\the\scratchcounter}}
+
+\def\dodoincrement(#1%
+ {\doifnextcharelse,{\dodoindecrement+(#1}{\dodoindecrement+(#1,1}}
+
+\def\dododecrement(#1%
+ {\doifnextcharelse,{\dodoindecrement-(#1}{\dodoindecrement-(#1,1}}
+
+\def\doincrement#1% 10% faster alternative
+ {\ifx#1\undefined
+ \dodoglobal\let#1\!!plusone
+ \else\ifx#1\relax % \csname...\endcsname
+ \dodoglobal\let#1\!!plusone
+ \else
+ \fastincrement#1%
+ \fi\fi}
+
+\def\dodecrement#1% 10% faster alternative
+ {\ifx#1\undefined
+ \dodoglobal\let#1\!!minusone
+ \else\ifx#1\relax % \csname...\endcsname
+ \dodoglobal\let#1\!!minusone
+ \else
+ \fastdecrement#1%
+ \fi\fi}
+
+\def\fastdecrement#1% 50% faster alternative
+ {\scratchcounter#1\advance\scratchcounter\minusone
+ \dodoglobal\edef#1{\the\scratchcounter}}
+
+\def\fastincrement#1% 50% faster alternative
+ {\scratchcounter#1\advance\scratchcounter\plusone
+ \dodoglobal\edef#1{\the\scratchcounter}}
+
+\endTEX
+
+\beginETEX \numexpr
+
+% \def\doindecrement#1#2%
+% {\dodoglobal\edef#2%
+% {\the\numexpr(\ifx#2\undefined\else\ifx#2\relax\else#2\fi\fi#11)}}
+%
+% \def\doincrement{\doindecrement+}
+% \def\dodecrement{\doindecrement-}
+%
+% some 3\% faster:
+
+\def\doindecrement#1#2%
+ {\dodoglobal\edef#2%
+ {\the\numexpr\ifx#2\undefined\else\ifx#2\relax\else#2\fi\fi+#1\relax}}
+
+\def\doincrement{\doindecrement\plusone }
+\def\dodecrement{\doindecrement\minusone}
+
+\def\dodoindecrement#1#2,#3)%
+ {\dodoglobal\edef#2%
+ {\the\numexpr\ifx#2\undefined\else\ifx#2\relax\else#2\fi\fi#1#3\relax}}
+
+\def\dodoincrement(#1%
+ {\doifnextcharelse,{\dodoindecrement+#1}{\dodoindecrement+#1,\plusone}}
+
+\def\dododecrement(#1%
+ {\doifnextcharelse,{\dodoindecrement-#1}{\dodoindecrement-#1,\plusone}}
+
+\def\fastincrement#1{\dodoglobal\edef#1{\the\numexpr#1+\plusone \relax}}
+\def\fastdecrement#1{\dodoglobal\edef#1{\the\numexpr#1+\minusone\relax}}
+
+\endETEX
+
+\def\increment{\doifnextcharelse(\dodoincrement\doincrement}
+\def\decrement{\doifnextcharelse(\dododecrement\dodecrement}
+
+%D \macros
+%D {newsignal}
+%D
+%D When writing advanced macros, we cannot do without
+%D signaling. A signal is a small (invisible) kern or penalty
+%D that signals the next macro that something just happened.
+%D This macro can take any action depending on the previous
+%D signal. Signals must be unique and the next macro takes care
+%D of that.
+%D
+%D \starttyping
+%D \newsignal\somesignal
+%D \stoptyping
+%D
+%D Signals old dimensions and can be used in skips, kerns and
+%D tests like \type{\ifdim}.
+
+\newdimen\maximumsignal % step is about 0.00025pt
+
+\def\newsignal#1%
+ {\ifx#1\undefined
+ \advance\maximumsignal 2sp % to be save in rounding
+ \edef#1{\the\maximumsignal}%
+ \fi}
+
+%D \macros
+%D {newskimen}
+%D
+%D \TEX\ offers 256 \DIMENSIONS\ and \SKIPS. Unfortunately this
+%D amount is too small to suit certain packages. Therefore when
+%D possible one should use:
+%D
+%D \starttyping
+%D \newskimen\tempskimen
+%D \stoptyping
+%D
+%D This commands allocates a \DIMENSION\ or a \SKIP, depending
+%D on the availability. One should be aware of the difference
+%D between both. When searching for some glue \TEX\ goes on
+%D searching till it's sure that no other glue component if
+%D found. This search can be canceled by using \type{\relax}
+%D when possible and needed.
+%D
+%D \starttyping
+%D \def\newskimen#1%
+%D {\ifx#1\undefined
+%D \ifnum\count11>\count12
+%D \newskip#1\relax
+%D \else
+%D \newdimen#1\relax
+%D \fi
+%D \fi}
+%D \stoptyping
+%D
+%D In order to make this macro work in plain \TEX\ too, we
+%D use the following alternative, which fools \TEX\ about
+%D the new commands being \type {\outer} ones.
+
+\def\newskimen#1%
+ {\ifx#1\undefined
+ \csname new\ifnum\count11>\count12 skip\else dimen\fi\endcsname#1%
+ \fi}
+
+%D \macros
+%D {strippedcsname}
+%D
+%D The next macro can be very useful when using \type{\csname}
+%D like in:
+%D
+%D \starttyping
+%D \csname if\strippedcsname\something\endcsname
+%D \stoptyping
+%D
+%D This expands to \type{\ifsomething}.
+
+\def\strippedcsname
+ {\expandafter\gobbleoneargument\string}
+
+%D \macros
+%D {savenormalmeaning}
+%D
+%D We will use this one in:
+
+\def\savenormalmeaning#1%
+ {\ifundefined{normal\strippedcsname#1}%
+ \letvalue{normal\strippedcsname#1}#1%
+ \fi}
+
+%D \macros
+%D {newconditional,
+%D settrue, setfalse,
+%D ifconditional}
+%D
+%D \TEX's lacks boolean variables, although the \PLAIN\ format
+%D implements \type{\newif}. The main disadvantage of this
+%D scheme is that it takes three hash table entries. A more
+%D memory saving alternative is presented here. A conditional
+%D is defined by:
+%D
+%D \starttyping
+%D \newconditional\doublesided
+%D \setfalse
+%D
+%D Setting a conditional is done by \type{\settrue} and
+%D \type{\setfalse}:
+%D
+%D \starttyping
+%D \settrue\doublesided
+%D \setfalse
+%D
+%D while testing is accomplished by:
+%D
+%D \starttyping
+%D \ifconditional\doublesided ... \else ... \fi
+%D \setfalse
+%D
+%D We cannot use the simple scheme:
+%D
+%D \starttyping
+%D \def\settrue#1{\let#1=\iftrue}
+%D \def\settrue#1{\let#1=\iffalse}
+%D \stoptyping
+%D
+%D Such an implementation gives problems with nested
+%D conditionals. The next implementation is abaou as fast
+%D and just as straightforward:
+
+\def\settrue #1{\chardef#1\zerocount}
+\def\setfalse#1{\chardef#1\plusone}
+
+\let\newconditional = \setfalse
+\let\ifconditional = \ifcase
+
+%D \macros
+%D {ifzeropt}
+%D
+%D The next macro is both cosmetic and byte saving. It is
+%D pretty \type{\if}||safe too. It can be used in cases
+%D like:
+%D
+%D \starttyping
+%D \ifzeropt \somedimen ... \else ... \fi
+%D \stoptyping
+
+\let\ifzeropt\ifcase
+
+%D \macros
+%D {dorecurse,recurselevel,recursedepth,
+%D dostepwiserecurse,
+%D for}
+%D
+%D \TEX\ does not offer us powerfull for||loop mechanisms. On
+%D the other hand its recursion engine is quite unique. We
+%D therefore identify the for||looping macros by this method.
+%D The most simple alternative is the one that only needs a
+%D number.
+%D
+%D \starttyping
+%D \dorecurse {n} {whatever we want}
+%D \stoptyping
+%D
+%D This macro can be nested without problems and therefore be
+%D used in situations where \PLAIN\ \TEX's \type{\loop} macro
+%D ungracefully fails. The current value of the counter is
+%D available in \type{\recurselevel}, before as well as after
+%D the \typ{whatever we wat} stuff.
+%D
+%D \starttyping
+%D \dorecurse % inner loop
+%D {10}
+%D {\recurselevel: % outer value
+%D \dorecurse % inner loop
+%D {\recurselevel} % outer value
+%D {\recurselevel} % inner value
+%D \dorecurse % inner loop
+%D {\recurselevel} % outer value
+%D {\recurselevel} % inner value
+%D \endgraf}
+%D \stoptyping
+%D
+%D In this example the first, second and fourth
+%D \type{\recurselevel} concern the outer loop, while the third
+%D and fifth one concern the inner loop. The depth of the
+%D nesting is available for inspection in \type{\recursedepth}.
+%D
+%D Both \type{\recurselevel} and \type{\recursedepth} are
+%D macros. The real \COUNTERS\ are hidden from the user because
+%D we don't want any interference.
+
+\newcount\outerrecurse
+\newcount\innerrecurse
+
+\def\recursedepth{\the\outerrecurse}
+\def\recurselevel{0}
+
+\let\nextrecurse\relax
+
+%D Acceptable:
+%D
+%D \starttyping
+%D \long\def\dostepwiserecurse#1#2#3%
+%D {\let\nextrecurse\gobblefourarguments
+%D \ifnum#3>0\relax\ifnum#2<#1\relax\else
+%D \def\nextrecurse{\dosetstepwiserecurse>}%
+%D \fi\fi
+%D \ifnum#3<0\relax\ifnum#1<#2\relax\else
+%D \def\nextrecurse{\dosetstepwiserecurse<}%
+%D \fi\fi
+%D \nextrecurse{#1}{#2}{#3}}
+%D \stoptyping
+%D
+%D Better:
+%D
+%D \starttyping
+%D \long\def\dostepwiserecurse#1#2#3%
+%D {\let\nextrecurse\gobblefourarguments
+%D \ifnum#3>0\relax \ifnum#2<#1\relax \else
+%D \def\nextrecurse{\dosetstepwiserecurse>}%
+%D \fi \else \ifnum#3<0\relax \ifnum#1<#2\relax \else
+%D \def\nextrecurse{\dosetstepwiserecurse<}%
+%D \fi \fi \fi
+%D \nextrecurse{#1}{#2}{#3}}
+%D
+%D \def\@@irecurse{@@irecurse} % stepper
+%D \def\@@nrecurse{@@nrecurse} % number of steps
+%D \def\@@srecurse{@@srecurse} % step
+%D \def\@@drecurse{@@drecurse} % direction, < or >
+%D \def\@@arecurse{@@arecurse} % action
+%D
+%D \long\def\dosetstepwiserecurse#1#2#3#4#5%
+%D {\global\advance\outerrecurse 1
+%D \setevalue{\@@drecurse\recursedepth}{#1}%
+%D \setevalue{\@@irecurse\recursedepth}{\number#2}%
+%D \setevalue{\@@nrecurse\recursedepth}{\number#3}%
+%D \setevalue{\@@srecurse\recursedepth}{\number#4}%
+%D \long\setvalue{\@@arecurse\recursedepth}{#5}%
+%D \dodorecurse}
+%D
+%D \def\donorecurse
+%D {}
+%D
+%D \def\dododorecurse
+%D {\edef\recurselevel{\csname\@@irecurse\recursedepth\endcsname}%
+%D \getvalue{\@@arecurse\recursedepth}%
+%D \edef\recurselevel{\csname\@@irecurse\recursedepth\endcsname}%
+%D \innerrecurse\recurselevel
+%D \advance\innerrecurse \csname\@@srecurse\recursedepth\endcsname
+%D \setevalue{\@@irecurse\recursedepth}{\the\innerrecurse}%
+%D \dodorecurse}
+%D
+%D \def\dodorecurse
+%D {\ifnum\csname\@@irecurse\recursedepth\endcsname
+%D \csname\@@drecurse\recursedepth\endcsname
+%D \csname\@@nrecurse\recursedepth\endcsname\relax
+%D \expandafter\nododorecurse
+%D \else
+%D \expandafter\dododorecurse
+%D \fi}
+%D
+%D \def\nododorecurse
+%D {\global\advance\outerrecurse -1
+%D \edef\recurselevel{\csname\@@irecurse\recursedepth\endcsname}}
+%D \stoptyping
+%D
+%D Cleaner and much faster:
+
+\def\@@irecurse{@@ir@@} % ecurse} % stepper
+\def\@@arecurse{@@ar@@} % ecurse} % action
+
+% \mathchardef
+
+\long\def\dostepwiserecurse#1#2#3#4% can be made faster by postponing #4
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname{#4}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \ifnum#3>0\relax
+ \ifnum#2<#1\relax
+ \let\nextrecurse\exitstepwiserecurse
+ \else
+ \let\nextrecurse\dodostepwiserecurse
+ \fi
+ \else
+ \ifnum#3<0\relax
+ \ifnum#1<#2\relax
+ \let\nextrecurse\exitstepwiserecurse
+ \else
+ \let\nextrecurse\dodostepwisereverse
+ \fi
+ \else
+ \let\nextrecurse\exitstepwiserecurse
+ \fi
+ \fi\expanded{\nextrecurse{\number#1}{\number#2}{\number#3}}}
+
+\beginETEX \numexpr
+
+\long\def\dodostepwiserecurse#1#2#3% from to step
+ {\ifnum#1>#2\relax
+ \@EA\nodostepwiserecurse
+ \else
+ \def\recurselevel{#1}%
+ \@EAEAEA\redostepwiserecurse\@EA
+ \fi\@EA{\the\numexpr\recurselevel+#3\relax}{#2}{#3}}
+
+\endETEX
+
+\beginTEX
+
+\long\def\dodostepwiserecurse#1#2#3% from to step
+ {\ifnum#1>#2\relax
+ \@EA\nodostepwiserecurse
+ \else
+ \def\recurselevel{#1}%
+ \innerrecurse#1\advance\innerrecurse#3\relax
+ \@EAEAEA\redostepwiserecurse\@EA
+ \fi\@EA{\the\innerrecurse}{#2}{#3}}
+
+\endTEX
+
+\def\expandrecursecontent
+ {\csname\@@arecurse\recursedepth\endcsname}
+
+\def\redostepwiserecurse
+ {\expandrecursecontent\dodostepwiserecurse}
+
+\beginETEX \numexpr
+
+\long\def\dodostepwisereverse#1#2#3% from to step
+ {\ifnum#1<#2\relax
+ \@EA\nodostepwiserecurse
+ \else
+ \def\recurselevel{#1}%
+ \@EAEAEA\redostepwisereverse\@EA
+ \fi\@EA{\the\numexpr\recurselevel#3\relax}{#2}{#3}}
+
+\endETEX
+
+\beginTEX
+
+\long\def\dodostepwisereverse#1#2#3% from to step
+ {\ifnum#1<#2\relax
+ \@EA\nodostepwiserecurse
+ \else
+ \def\recurselevel{#1}%
+ \innerrecurse#1\relax
+ \advance\innerrecurse#3\relax
+ \@EAEAEA\redostepwisereverse\@EA
+ \fi\@EA{\the\innerrecurse}{#2}{#3}}
+
+\endTEX
+
+\def\redostepwisereverse
+ {\expandrecursecontent\dodostepwisereverse}
+
+\def\exitstepwiserecurse
+ {\nodostepwiserecurse\relax}
+
+\def\nodostepwiserecurse#1#2#3#4%
+ {\@EA\let\@EA\recurselevel\csname\@@irecurse\recursedepth\endcsname
+ \global\advance\outerrecurse \minusone}
+
+\def\nonostepwiserecurse#1#2#3%
+ {\@EA\let\@EA\recurselevel\csname\@@irecurse\recursedepth\endcsname
+ \global\advance\outerrecurse \minusone}
+
+\def\dorecurse#1%
+ {\dostepwiserecurse1{#1}1}
+
+%D As we can see here, the simple command \type{\dorecurse} is
+%D a special case of the more general:
+%D
+%D \starttyping
+%D \dostepwiserecurse {from} {to} {step} {action}
+%D \stoptyping
+%D
+%D This commands accepts positive and negative steps. Illegal
+%D values are handles as good as possible and the macro accepts
+%D numbers and \COUNTERS.
+%D
+%D \starttyping
+%D \dostepwiserecurse {1} {10} {2} {...}
+%D \dostepwiserecurse {10} {1} {-2} {...}
+%D \stoptyping
+%D
+%D Because the simple case is used often, we implement it
+%D more efficiently:
+
+\long\def\dorecurse#1%
+ {\ifcase#1\relax
+ \expandafter\gobbletwoarguments
+ \or
+ \expandafter\ydorecurse
+ \else
+ \expandafter\xdorecurse
+ \fi{#1}}
+
+\long\def\xdorecurse#1#2%
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname{#2}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \@EA\dodorecurse\@EA1\@EA{\number#1}}
+
+\long\def\ydorecurse#1#2%
+ {\global\advance\outerrecurse \plusone
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \let\recurselevel\!!plusone
+ #2%
+ \@EA\let\@EA\recurselevel\csname\@@irecurse\recursedepth\endcsname
+ \global\advance\outerrecurse \minusone}
+
+\beginETEX \numexpr
+
+\long\def\dodorecurse#1#2% from to
+ {\ifnum#1>#2\relax
+ \@EA\nodorecurse
+ \else
+ \def\recurselevel{#1}%
+ \@EAEAEA\redorecurse
+ \fi\@EA{\the\numexpr\recurselevel+\plusone\relax}{#2}}
+
+\endETEX
+
+\beginTEX
+
+\long\def\dodorecurse#1#2% from to
+ {\ifnum#1>#2\relax
+ \@EA\nodorecurse
+ \else
+ \def\recurselevel{#1}%
+ \innerrecurse#1\advance\innerrecurse\plusone
+ \@EAEAEA\redorecurse
+ \fi\@EA{\the\innerrecurse}{#2}}
+
+\endTEX
+
+\def\redorecurse
+ {\expandrecursecontent\dodorecurse}
+
+\def\nodorecurse#1#2#3%
+ {\@EA\let\@EA\recurselevel\csname\@@irecurse\recursedepth\endcsname
+ \global\advance\outerrecurse \minusone }
+
+%D The third alternative looks a bit different and uses a
+%D pseudo counter. When this macro is nested, we have to use
+%D different counters. This time we use keywords.
+%D
+%D \starttyping
+%D \def\alfa{2} \def\beta{100} \def\gamma{3}
+%D
+%D \for \n=55 \to 100 \step 1 \do {... \n ...}
+%D \for \n=\alfa \to \beta \step \gamma \do {... \n ...}
+%D \for \n=\n \to 120 \step 1 \do {... \n ...}
+%D \for \n=120 \to 100 \step -3 \do {... \n ...}
+%D \for \n=55 \to 100 \step 2 \do {... \n ...}
+%D \stoptyping
+%D
+%D Only in the third example we need to predefine \type{\n}.
+%D The use of \type{\od} as a dilimiter would have made nested
+%D use more problematic.
+
+% maybe this one will become obsolete
+
+\def\for#1=#2\to#3\step#4\do#5%
+ {\dostepwiserecurse{#2}{#3}{#4}
+ {\let#1\recurselevel#5\let#1\recurselevel}}
+
+%D \macros
+%D {doloop,exitloop}
+%D
+%D Sometimes loops are not determined by counters, but by
+%D (a combinations of) conditions. We therefore implement a
+%D straightforward loop, which can only be left when we
+%D explictly exit it. Nesting is supported. First we present
+%D a more extensive alternative.
+%D
+%D \starttyping
+%D \doloop
+%D {Some kind of typesetting punishment \par
+%D \ifnum\pageno>100 \exitloop \fi}
+%D \stoptyping
+%D
+%D When needed, one can call for \type{\looplevel} and
+%D \type{\loopdepth}.
+%D
+%D If we write this macros from scratch, we end up with
+%D something like the ones described above:
+%D
+%D \starttyping
+%D \def\@@eloop{@@eloop} % exit
+%D \def\@@iloop{@@iloop} % stepper
+%D \def\@@aloop{@@aloop} % action
+%D
+%D \newcount\outerloop
+%D
+%D \def\loopdepth%
+%D {\the\outerloop}
+%D
+%D \def\exitloop%
+%D {\setevalue{\@@eloop\loopdepth}{0}}
+%D
+%D \long\def\doloop#1%
+%D {\global\advance\outerloop by 1
+%D \setevalue{\@@iloop\loopdepth}{1}%
+%D \setevalue{\@@eloop\loopdepth}{1}%
+%D \long\setvalue{\@@aloop\loopdepth}{#1}%
+%D \dodoloop}
+%D
+%D \def\dodonoloop%
+%D {\global\advance\outerloop by -1\relax}
+%D
+%D \def\dododoloop%
+%D {\edef\looplevel{\getvalue{\@@iloop\loopdepth}}%
+%D \innerrecurse=\looplevel
+%D \advance\innerrecurse by 1
+%D \setevalue{\@@iloop\loopdepth}{\the\innerrecurse}%
+%D \getvalue{\@@aloop\loopdepth}%
+%D \edef\looplevel{\getvalue{\@@iloop\loopdepth}}%
+%D \dodoloop}
+%D
+%D \def\dodoloop%
+%D {\ifnum\getvalue{\@@eloop\loopdepth}=0
+%D \expandafter\dodonoloop
+%D \else
+%D \expandafter\dododoloop
+%D \fi}
+%D
+%D \def\doloop%
+%D {\dostepwiserecurse{1}{\maxdimen}{1}}
+%D
+%D \def\exitloop
+%D {\setvalue{\@@irecurse\recursedepth}{\maxdimen}}
+%D
+%D \def\looplevel{\recurselevel}
+%D \def\loopdepth{\recursedepth}
+%D \stoptyping
+%D
+%D We don't have to declare new counters for \type{\looplevel}
+%D and \type{\loopdepth} because we can use \type{\recurselevel}
+%D and \type{\recursedepth}.
+%D
+%D We prefer however a more byte saving implementation, that
+%D executes of course a bit slower.
+%D
+%D \starttyping
+%D \def\doloop%
+%D {\dostepwiserecurse1\maxdimen1}
+%D
+%D \def\exitloop%
+%D {\letvalue{\@@irecurse\recursedepth}\maxdimen}
+%D \stoptyping
+%D
+%D Although, the next version is faster because it used the
+%D simple loop.
+
+\let\endofloop\donothing
+
+\long\def\doloop#1%
+ {\global\advance\outerrecurse \plusone
+ \long\global\@EA\def\csname\@@arecurse\recursedepth\endcsname{#1}%
+ \global\@EA\let\csname\@@irecurse\recursedepth\endcsname\recurselevel
+ \let\endofloop\dodoloop
+ \dodoloop1} % no \plusone else \recurselevel wrong
+
+\beginETEX \numexpr
+
+\long\def\dodoloop#1%
+ {\def\recurselevel{#1}%
+ \@EA\redoloop\@EA{\the\numexpr\recurselevel+\plusone\relax}}
+
+\endETEX
+
+\beginTEX
+
+\long\def\dodoloop#1%
+ {\def\recurselevel{#1}%
+ \innerrecurse#1\advance\innerrecurse\plusone
+ \@EA\redoloop\@EA{\the\innerrecurse}}
+
+\endTEX
+
+\def\redoloop
+ {\expandrecursecontent\endofloop}
+
+\def\nodoloop#1%
+ {\let\endofloop\dodoloop % new, permits nested \doloop's
+ \@EA\let\@EA\recurselevel\csname\@@irecurse\recursedepth\endcsname
+ \global\advance\outerrecurse\minusone}
+
+\def\exitloop % \exitloop quits at end
+ {\let\endofloop\nodoloop}
+
+\long\def\exitloopnow#1\endofloop % \exitloopnow quits directly
+ {\nodoloop}
+
+%D The loop is executed at least once, so beware of situations
+%D like:
+%D
+%D \starttyping
+%D \doloop {\exitloop some commands}
+%D \stoptyping
+%D
+%D It's just a matter of putting the text into the \type{\if}
+%D statement that should be there anyway, like in:
+%D
+%D \starttyping
+%D \doloop {\ifwhatever \exitloop \else some commands\fi}
+%D \stoptyping
+%D
+%D You can also quit a loop immediately, by using \type
+%D {\exitloopnow} instead. Beware, this is more sensitive
+%D for conditional errors.
+
+%D \macros
+%D {newevery,everyline,EveryLine,EveryPar}
+%D
+%D Lets skip to something quite different. It's common use
+%D to use \type{\everypar} for special purposes. In \CONTEXT\
+%D we use this primitive for locating sidefloats. This means
+%D that when user assignments to \type{\everypar} can interfere
+%D with those of the package. We therefore introduce
+%D \type{\EveryPar}.
+%D
+%D The same goes for \type{\EveryLine}. Because \TEX\ offers
+%D no \type{\everyline} primitive, we have to call for
+%D \type{\everyline} when we are working on a line by line
+%D basis. Just by calling \type{\EveryPar{}} and
+%D \type{\EveryLine{}} we restore the old situation.
+%D
+%D The definition command \type{\DoWithEvery} will be quite
+%D unreadable, so let's first show an implementation that
+%D shows how things are done:
+%D
+%D \starttyping
+%D \newtoks \everyline
+%D \newtoks \oldeveryline
+%D \newif \ifeveryline
+%D
+%D \def\DoWithEvery#1#2#3#4%
+%D {#3\else\edef\next{\noexpand#2={\the#1}}\next\fi
+%D \edef\next{\noexpand#1={\the#2\the\scratchtoks}}\next
+%D #4}
+%D
+%D \def\doEveryLine%
+%D {\DoWithEvery\everyline\oldeveryline\ifeveryline\everylinetrue}
+%D
+%D \def\EveryLine%
+%D {\afterassignment\doEveryLine\scratchtoks}
+%D
+%D The real implementation is a bit more complicated but we
+%D prefer something more versatile.
+
+% the old one
+%
+% \def\DoWithEvery#1%
+% {\csname if\strippedcsname#1\endcsname \else
+% \edef\next%
+% {\@EA\noexpand\csname old\strippedcsname#1\endcsname=
+% {\the#1}}%
+% \next
+% \fi
+% \edef\next%
+% {\noexpand#1=
+% {\@EA\the\csname old\strippedcsname#1\endcsname\the\scratchtoks}}%
+% \next
+% \csname\strippedcsname#1true\endcsname}
+%
+% \def\dowithevery#1%
+% {\@EA\afterassignment\csname do\strippedcsname#1\endcsname\scratchtoks}
+%
+% \def\newevery#1#2%
+% {\ifx#1\undefined\newtoks#1\fi
+% \ifx#2\relax\else\ifx#2\undefined
+% \@EA\newtoks\csname old\strippedcsname#1\endcsname
+% \@EA\newif \csname if\strippedcsname#1\endcsname
+% \@EA\def \csname do\strippedcsname#2\endcsname{\DoWithEvery#1}%
+% \def#2{\dowithevery#2}%
+% \fi\fi}
+%
+% cleaner and more efficient
+
+%\def\dowithevery#1%
+% {\def\dodowithevery%
+% {\ifcase\csname c\strippedcsname#1\endcsname \expandafter\chardef
+% \csname c\strippedcsname#1\endcsname=1
+% \csname t\strippedcsname#1\endcsname=#1%
+% \fi
+% \edef\next%
+% {#1={\the\csname t\strippedcsname#1\endcsname\the\scratchtoks}}%
+% \next}%
+% \afterassignment\dodowithevery\scratchtoks}
+%
+% more efficient:
+
+\def\dodowithevery#1%
+ {\ifcase\csname c\strippedcsname#1\endcsname \expandafter\chardef
+ \csname c\strippedcsname#1\endcsname1
+ \csname t\strippedcsname#1\endcsname#1%
+ \fi
+ \edef\next%
+ {#1{\the\csname t\strippedcsname#1\endcsname\the\scratchtoks}}%
+ \next}
+
+\def\dowithevery#1%
+ {\def\next{\dodowithevery#1}%
+ \afterassignment\next\scratchtoks}
+
+\bgroup \let\newtoks\relax % plain safe (\outer)
+
+\gdef\newevery#1#2%
+ {\ifx#1\undefined\csname newtoks\endcsname#1\fi % plain safe (\outer)
+ \ifx#2\relax\else\ifx#2\undefined
+ \expandafter\newtoks\csname t\strippedcsname#1\endcsname
+ \expandafter\chardef\csname c\strippedcsname#1\endcsname\zerocount
+ \def#2{\dowithevery#1}%
+ \fi\fi}
+
+\egroup
+
+%D The first \type {\outer} hack is needed to trick \TEX\
+%D into thinking that \type {\newtoks} is no outer macro,
+%D the second hack is needed due to some funny interaction
+%D between outer macros and \type {\if} at expansion time.
+
+%D This one permits definitions like:
+
+\newevery \everypar \EveryPar
+\newevery \everyline \EveryLine
+
+%D and how about:
+
+\newevery \neverypar \NeveryPar
+
+%D Which we're going to use indeed! When the second argument
+%D equals \type {\relax}, the first token list is created
+%D unless it is already defined.
+
+%D Technically spoken we could have used the method we are
+%D going to present in the visual debugger. First we save
+%D the primitive \type{\everypar}:
+%D
+%D \starttyping
+%D \let\normaleverypar=\everypar
+%D \stoptyping
+%D
+%D Next we allocate a \TOKENLIST\ named \type{\everypar},
+%D which means that \type{\everypar} is no longer a primitive
+%D but something like \type{\toks44}.
+%D
+%D \starttyping
+%D \newtoks\everypar
+%D \stoptyping
+%D
+%D Because \TEX\ now executes \type{\normaleverypar} instead
+%D of \type{\everypar}, we are ready to assign some tokens to
+%D this internally known and used \TOKENLIST.
+%D
+%D \starttyping
+%D \normaleverypar={all the things the system wants to do \the\everypar}
+%D \stoptyping
+%D
+%D Where the user can provide his own tokens to be expanded
+%D every time he expects them to expand.
+%D
+%D \starttyping
+%D \everypar={something the user wants to do}
+%D \stoptyping
+%D
+%D We don't use this method because it undoubtly leads to
+%D confusing situations, especially when other packages are
+%D used, but it's this kind of tricks that make \TEX\ so
+%D powerful.
+
+%D \macros
+%D {convertargument,convertcommand,convertvalue}
+%D
+%D Some persistent experimenting led us to the next macro. This
+%D macro converts a parameter or an expanded macro to it's
+%D textual meaning.
+%D
+%D \starttyping
+%D \convertargument ... \to \command
+%D \stoptyping
+%D
+%D For example,
+%D
+%D \starttyping
+%D \convertargument{one \two \three{four}}\to\ascii
+%D \stoptyping
+%D
+%D The resulting macro \type{\ascii} can be written to a file
+%D or the terminal without problems. In \CONTEXT\ we use this
+%D macro for generating registers and tables of contents.
+%D
+%D The second conversion alternative accepts a command:
+%D
+%D \starttyping
+%D \convertcommand\command\to\ascii
+%D \stoptyping
+%D
+%D Both commands accept the prefix \type{\doglobal} for global
+%D assignments.
+
+\beginTEX
+
+\def\doconvertargument#1>{}
+
+\def\convertedcommand
+ {\expandafter\doconvertargument\meaning}
+
+%\long\def\convertargument#1\to#2%
+% {\long\def\convertedargument{#1}%
+% \dodoglobal\edef#2{\convertedcommand\convertedargument}}
+
+\long\def\convertargument#1\to#2%
+ {\long\def#2{#1}% saves a restore
+ \dodoglobal\edef#2{\convertedcommand#2}}
+
+\long\def\convertcommand#1\to#2%
+ {\dodoglobal\edef#2{\convertedcommand#1}}
+
+\endTEX
+
+\def\convertvalue#1\to
+ {\expandafter\convertcommand\csname#1\endcsname\to}
+
+%D In \ETEX\ we can use \type {\detokenize} and gain some
+%D speed, but in general far less that 1\% for \type
+%D {\convertargument} and nil for \type {\convertcommand}.
+%D This macro is more robust than the pure \TEX\ one,
+%D something I found out when primitives like \type
+%D {\jobname} were fed (or something undefined).
+
+\beginETEX \detokenize
+
+\long\def\convertargument#1\to#2%
+ {\dodoglobal\edef#2{\detokenize{#1}}}
+
+% \long\def\convertcommand#1\to#2%
+% {\@EA\dodoglobal\@EA\edef\@EA#2\@EA{\@EA\detokenize\@EA{#1}}}
+
+\long\def\convertcommand#1\to#2%
+ {\dodoglobal\edef#2{\@EA\detokenize\@EA{#1}}}
+
+\endETEX
+
+%D When you try to convert a primitive command, you'll find
+%D out that the \ETEX\ method fails on for instance \type
+%D {\jobname} in the sense that it returns the filename
+%D instead of just \type {\jobname}. So far this does not
+%D give real problems.
+
+%D This is typically a macro that one comes to after reading
+%D the \TEX book carefully. Even then, the definite solution
+%D was found after rereading the \TEX book. The first
+%D implementation was:
+%D
+%D \starttyping
+%D \def\doconvertargument#1->#2\\\\{#2}
+%D \stoptyping
+%D
+%D The \type{-}, the delimiter \type{\\\\} and the the second
+%D argument are completely redundant.
+
+% %D As said, the \TEX\ alternative fails on expanding primitives,
+% %D like in:
+% %D
+% %D \starttyping
+% %D \convertcommand\someprimitive\to\ascii
+% %D \stoptyping
+% %D
+% %D Because these primitives convert to themselves, we can use
+% %D the backslash as a signal to treat them different. At the
+% %D cost of slightly more overhead we can therefore define a
+% %D more robust alternative. The catcode trickery is needed to
+% %D get the backslash into the test as character (and not as
+% %D escape, letter or whatever code else).
+% %
+% % does not work:
+% %
+% % \beginTEX
+% %
+% % \let\dodoconvertargument\doconvertargument
+% %
+% % \bgroup
+% % \catcode`\*=\@@escape
+% % \catcode`\\=\@@other
+% % *gdef*doconvertargument#1%
+% % {*ifx#1\*else*expandafter*dodoconvertargument*fi#1}
+% % *egroup
+% %
+% % \endTEX
+
+%D \macros
+%D {showvalue,showargument}
+%D
+%D Two handy macros for testing purposes only:
+
+\def\showvalue#1%
+ {\expandafter\show\csname#1\endcsname}
+
+\long\def\showargument#1%
+ {\convertargument#1\to\ascii\show\ascii}
+
+%D \macros
+%D {doifmeaningelse}
+%D
+%D We can use both commands in testing, but alas, not all
+%D meanings expand to something \type {->}. This is no problem
+%D in the \ETEX\ implementation, but since we want
+%D compatibility, we need:
+%D
+%D \starttyping
+%D \doifmeaningelse {\next} {\something} {true} {false}
+%D \stoptyping
+%D
+%D Watch the one level expansion of the second argument.
+
+\def\doifmeaningelse#1#2%
+ {\edef\!!stringa{\meaning#1}%
+ \def\!!stringb{#2}\edef\!!stringb{\meaning\!!stringb}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D \macros
+%D {doifsamestringselse,doifsamestring,doifnotsamestring}
+%D
+%D The next comparison macro converts the arguments into
+%D expanded strings. This command can be used to compare for
+%D instance \type {\jobname} with a name stored in a macro.
+
+\def\@@doifsamestringelse#1#2%
+ {\edef\!!stringa{#1}%
+ \edef\!!stringb{#2}%
+ \convertcommand\!!stringa\to\!!stringa
+ \convertcommand\!!stringb\to\!!stringb
+ \ifx\!!stringa\!!stringb}
+
+\def\doifsamestringelse#1#2%
+ {\@@doifsamestringelse{#1}{#2}%
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\doifsamestring#1#2%
+ {\@@doifsamestringelse{#1}{#2}%
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\doifnotsamestring#1#2%
+ {\@@doifsamestringelse{#1}{#2}%
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+%D \macros
+%D {ExpandFirstAfter,ExpandSecondAfter,ExpandBothAfter}
+%D
+%D These three commands support expansion of arguments before
+%D executing the commands that uses them. We can best
+%D illustrate this with an example.
+%D
+%D \starttyping
+%D \def\first {alfa,beta,gamma}
+%D \def\second {alfa,epsilon,zeta}
+%D
+%D \ExpandFirstAfter \doifcommon {\first} {alfa} {\message{OK}}
+%D \ExpandSecondAfter \doifcommon {alfa} {\second} {\message{OK}}
+%D \ExpandBothAfter \doifcommon {\first} {\second} {\message{OK}}
+%D
+%D \ExpandFirstAfter\processcommalist[\first]\message
+%D
+%D \ExpandAfter \doifcommon {\first} {alfa} {\message{OK}}
+%D \stoptyping
+%D
+%D The first three calls result in the threefold message
+%D \type{OK}, the fourth one shows the three elements of
+%D \type{\first}. The command \type{\ExpandFirstAfter} takes
+%D care of (first) arguments that are delimited by \type{[ ]},
+%D but the faster \type{\ExpandAfter} does not.
+
+\def\simpleExpandFirstAfter#1%
+ {\long\xdef\@@expanded{\noexpand\ExpandCommand{#1}}\@@expanded}
+
+\def\complexExpandFirstAfter[#1]%
+ {\long\xdef\@@expanded{\noexpand\ExpandCommand[#1]}\@@expanded}
+
+\def\ExpandFirstAfter#1%
+ {\let\ExpandCommand#1%
+ \doifnextcharelse[\complexExpandFirstAfter\simpleExpandFirstAfter}
+
+\def\ExpandSecondAfter#1#2#3%
+ {\scratchtoks{#2}%
+ \long\xdef\@@expanded{\noexpand#1{\the\scratchtoks}{#3}}\@@expanded}
+
+\def\ExpandBothAfter#1#2#3%
+ {\long\xdef\@@expanded{\noexpand#1{#2}{#3}}\@@expanded}
+
+\def\ExpandAfter#1#2%
+ {\long\xdef\@@expanded{\noexpand#1{#2}}\@@expanded}
+
+%D Now we can for instance define \type{\ifinstringelse} as:
+
+\def\ifinstringelse
+ {\ExpandBothAfter\p!doifinstringelse}
+
+%D \macros
+%D {ConvertToConstant,ConvertConstantAfter}
+%D
+%D When comparing arguments with a constant, we can get into
+%D trouble when this argument consists of tricky expandable
+%D commands. One solution for this is converting the
+%D argument to a string of unexpandable characters. To make
+%D comparison possible, we have to convert the constant too
+%D
+%D \starttyping
+%D \ConvertToConstant\doifelse {...} {...} {then ...} {else ...}
+%D \stoptyping
+%D
+%D This construction is only needed when the first argument
+%D can give troubles. Misuse can slow down processing.
+%D
+%D \starttyping
+%D \ConvertToConstant\doifelse{\c!alfa} {\c!alfa}{...}{...}
+%D \ConvertToConstant\doifelse{alfa} {\c!alfa}{...}{...}
+%D \ConvertToConstant\doifelse{alfa} {alfa} {...}{...}
+%D \ConvertToConstant\doifelse{alfa \alfa test}{\c!alfa}{...}{...}
+%D \stoptyping
+%D
+%D In examples~2 and~3 both arguments equal, in~1 and~4
+%D they differ.
+
+\beginTEX
+
+\def\ConvertToConstant#1#2#3%
+ {\expandafter\convertargument\expandafter{#2}\to\!!stringa
+ \expandafter\convertargument\expandafter{#3}\to\!!stringb
+ #1{\!!stringa}{\!!stringb}}
+
+\endTEX
+
+\beginETEX \detokenize
+
+\def\ConvertToConstant#1#2#3%
+ {\edef\!!stringa{\expandafter\detokenize\expandafter{#2}}%
+ \edef\!!stringb{\expandafter\detokenize\expandafter{#3}}%
+ #1{\!!stringa}{\!!stringb}}
+
+\endETEX
+
+%D When the argument \type{#1} consists of commands, we had
+%D better use
+%D
+%D \starttyping
+%D \ConvertConstantAfter\processaction[#1][...]
+%D \ConvertConstantAfter\doifelse{#1}{\v!something}{}{}
+%D \stoptyping
+%D
+%D This commands accepts things like:
+%D
+%D \starttyping
+%D \v!constant
+%D constant
+%D \hbox to \hsize{\rubish}
+%D \stoptyping
+%D
+%D As we will see in the core modules, this macro permits
+%D constructions like:
+%D
+%D \starttyping
+%D \setupfootertexts[...][...]
+%D \setupfootertexts[margin][...][...]
+%D \setupfootertexts[\v!margin][...][...]
+%D \stoptyping
+%D
+%D where \type{...} can be anything legally \TEX.
+
+\def\CheckConstantAfter#1#2%
+ {\@EA\convertargument\v!prefix!\to\ascii
+ \convertargument#1\to#2\relax
+ \doifinstringelse\ascii{#2}
+ {\expandafter\convertargument#1\to#2}
+ {}}
+
+\def\ConvertConstantAfter#1#2#3%
+ {\CheckConstantAfter{#2}\asciiA
+ \CheckConstantAfter{#3}\asciiB
+ #1{\asciiA}{\asciiB}}
+
+%D \macros
+%D {assignifempty}
+%D
+%D We can assign a default value to an empty macro using:
+%D
+%D \starttyping
+%D \assignifempty \macros {default value}
+%D \stoptyping
+%D
+%D We don't explicitly test if the macro is defined.
+
+\def\assignifempty#1#2% can be sped up
+ {\doifsomething{#1}{\def#1{#2}}} % {\doifnot{#1}{}{\def#1{#2}}}
+
+%D \macros
+%D {gobbleuntil,grabuntil,gobbleuntilrelax,
+%D processbetween,processuntil}
+%D
+%D In \TEX\ gobbling usually stand for skipping arguments, so
+%D here are our gobbling macros.
+%D
+%D In \CONTEXT\ we use a lot of \type{\start}||\type{\stop}
+%D like constructions. Sometimes, the \type{\stop} is used as a
+%D hard coded delimiter like in:
+%D
+%D \starttyping
+%D \def\startcommand#1\stopcommand%
+%D {... #1 ...}
+%D \stoptyping
+%D
+%D In many cases the \type{\start}||\type{\stop} pair is
+%D defined at format generation time or during a job. This
+%D means that we cannot hardcode the \type{\stop} criterium.
+%D Only after completely understanding \type{\csname} and
+%D \type{\expandafter} I was able to to implement a solution,
+%D starting with:
+%D
+%D \starttyping
+%D \grabuntil{stop}\command
+%D \stoptyping
+%D
+%D This commands executes, after having encountered
+%D \type {\stop} the command \type {\command}. This command
+%D receives as argument the text preceding the \type {\stop}.
+%D This means that:
+%D
+%D \starttyping
+%D \def\starthello%
+%D {\grabuntil{stophello}\message}
+%D
+%D \starthello Hello world!\stophello
+%D \stoptyping
+%D
+%D results in: \type{\message{Hello world!}}.
+
+\def\dograbuntil#1#2%
+ {\long\def\next##1#1{#2{##1}}\next}
+
+\def\grabuntil#1%
+ {\expandafter\dograbuntil\expandafter{\csname#1\endcsname}}
+
+%D The next command build on this mechanism:
+%D
+%D \starttyping
+%D \processbetween{string}\command
+%D \stoptyping
+%D
+%D Here:
+%D
+%D \starttyping
+%D \processbetween{hello}\message
+%D \starthello Hello again!\stophello
+%D \stoptyping
+%D
+%D leads to: \type{\message{Hello again!}}. The command
+%D
+%D \starttyping
+%D \gobbleuntil{sequence}
+%D \stoptyping
+%D
+%D is related to these commands. This one simply throws away
+%D everything preceding \type{\command}.
+
+\long\def\processbetween#1#2%
+ {\setvalue{\s!start#1}{\grabuntil{\s!stop#1}{#2}}}
+
+\def\gobbleuntil#1%
+ {\long\def\next##1#1{}\next}
+
+\def\gobbleuntilrelax#1\relax
+ {}
+
+%D The next one simply expands the pickup up tokens.
+%D
+%D \starttyping
+%D \processuntil{sequence}
+%D \stoptyping
+
+\def\processuntil#1%
+ {\long\def\next##1#1{##1}\next}
+
+%D \macros
+%D {groupedcommand}
+%D
+%D Commands often manipulate argument as in:
+%D
+%D \starttyping
+%D \def\doezomaarwat#1{....#1....}
+%D \stoptyping
+%D
+%D A disadvantage of this approach is that the tokens that
+%D form \type{#1} are fixed the the moment the argument is read
+%D in. Normally this is no problem, but for instance verbatim
+%D environments adapt the \CATCODES\ of characters and therefore
+%D are not always happy with already fixed tokens.
+%D
+%D Another problem arises when the argument is grouped not by
+%D \type{{}} but by \type{\bgroup} and \type{\egroup}. Such an
+%D argument fails, because the \type{\bgroup} is een as the
+%D argument (which is quite normal).
+%D
+%D The next macro offers a solution for both unwanted
+%D situations:
+%D
+%D \starttyping
+%D \groupedcommand {before} {after}
+%D \stoptyping
+%D
+%D Which can be used like:
+%D
+%D \starttyping
+%D \def\cite%
+%D {\groupedcommand{\rightquote\rightquote}{\leftquote\leftquote}}
+%D \stoptyping
+%D
+%D This command is equivalent to, but more 'robust' than:
+%D
+%D \starttyping
+%D \def\cite#1%
+%D {\rightquote\rightquote#1\leftquote\leftquote}
+%D \stoptyping
+%D
+%D One should say that the next implementation would suffice:
+%D
+%D \starttyping
+%D \def\groupedcommand#1#2%
+%D {\def\BeforeGroup{#1\ignorespaces}%
+%D \def\AfterGroup{\unskip#2\egroup}%
+%D \bgroup\bgroup
+%D \aftergroup\AfterGroup
+%D \afterassignment\BeforeGroup
+%D \let\next=}
+%D \stoptyping
+%D
+%D It did indeed, but one day we decided to support the
+%D processing of boxes too:
+%D
+%D \starttyping
+%D \def\rightword%
+%D {\groupedcommand{\hfill\hbox}{\parfillskip\!!zeropoint}}
+%D
+%D .......... \rightword{the right way}
+%D \stoptyping
+%D
+%D Here \TEX\ typesets \type{\bf the right way} unbreakable
+%D at the end of the line. The solution mentioned before does
+%D not work here.
+%D
+%D \starttyping
+%D \long\unexpanded\def\groupedcommand#1#2%
+%D {\bgroup
+%D \long\def\BeforeGroup%
+%D {\bgroup#1\bgroup\aftergroup\AfterGroup}%
+%D \long\def\AfterGroup%
+%D {#2\egroup\egroup}%
+%D \afterassignment\BeforeGroup
+%D \let\next=}
+%D \stoptyping
+%D
+%D We used this method some time until the next alternative
+%D was needed. From now on we support both
+%D
+%D \starttyping
+%D to be \bold{bold} or not, that's the question
+%D \stoptyping
+%D
+%D and
+%D
+%D \starttyping
+%D to be {\bold bold} or not, that's the question
+%D \stoptyping
+%D
+%D This alternative checks for a \type{\bgroup} token first.
+%D The internal alternative does not accept the box handling
+%D mentioned before, but further nesting works all right. The
+%D extra \type{\bgroup}||\type{\egroup} is needed to keep
+%D \type{\AfterGroup} both into sight and local.
+
+\long\def\HandleGroup#1#2%
+ {\bgroup
+ \long\def\BeforeGroup{\bgroup#1\bgroup\aftergroup\AfterGroup}%
+ \long\def\AfterGroup {#2\egroup\egroup}%
+ \afterassignment\BeforeGroup
+ \let\next=}
+
+\long\def\HandleNoGroup#1#2%
+ {\long\def\AfterGroup{#2\egroup}%
+ \bgroup\aftergroup\AfterGroup#1}
+
+%D These macros come together in:
+%D
+%D \starttyping
+%D \long\unexpanded\def\groupedcommand#1#2%
+%D {\def\dogroupedcommand%
+%D {\ifx\next\bgroup
+%D \let\next=\HandleGroup
+%D \else
+%D \let\next=\HandleNoGroup
+%D \fi
+%D \next{#1}{#2}}%
+%D \futurelet\next\dogroupedcommand}
+%D \stoptyping
+%D
+%D From the missing paragraph number one can deduce that the
+%D last macro is not the real one yet. I considered it a
+%D nuisance that
+%D
+%D \starttyping
+%D \color[green]
+%D {as grass}
+%D \stoptyping
+%D
+%D was not interpreted as one would expect. This is due to the
+%D fact that \type{\futurelet} obeys blank spaces, and a
+%D line||ending token is treated as a blank space. So the final
+%D implementation became:
+
+%\long\unexpanded\def\groupedcommand#1#2%
+% {\bgroup
+% \def\dogroupedcommand%
+% {\ifx\next\bgroup
+% \def\\{\egroup\HandleGroup{#1}{#2}}%
+% \else\ifx\next\blankspace
+% \def\\ {\egroup\groupedcommand{#1}{#2}}%
+% \else
+% \def\\{\egroup\HandleNoGroup{#1}{#2}}%
+% \fi\fi
+% \\}%
+% \futurelet\next\dogroupedcommand}
+%
+% compatible ?
+
+\long\unexpanded\def\groupedcommand#1#2%
+ {\doifnextcharelse\bgroup
+ {\HandleGroup{#1}{#2}}{\HandleNoGroup{#1}{#2}}}
+
+%D Users should be aware of the fact that grouping can
+%D interfere with ones paragraph settings that are executed
+%D after the paragraph is closed. One should therefore
+%D explictly close the paragraph with \type{\par}, else the
+%D settings will be forgotten and not applied. So it's:
+%D
+%D \starttyping
+%D \def\BoldRaggedCenter%
+%D {\groupedcommand{\raggedcenter\bf}{\par}}
+%D \stoptyping
+
+%D \macros
+%D {checkdefined}
+%D
+%D The bigger the system, the greater the change that
+%D user defined commands collide with those that are part of
+%D the system. The next macro gives a warning when a command is
+%D already defined. We considered blocking the definition, but
+%D this is not always what we want.
+%D
+%D \starttyping
+%D \checkdefined {category} {class} {command}
+%D \stoptyping
+%D
+%D The user is warned with the suggestion to use
+%D \type{CAPITALS}. This suggestion is feasible, because
+%D \CONTEXT only defines lowcased macros.
+
+\def\showdefinederror#1#2%
+ {\writestatus\m!systems{#1 #2 replaces a macro, use CAPITALS!}}
+
+\def\checkdefined#1#2#3%
+ {\doifdefined{#3}{\showdefinederror{#2}{#3}}}
+
+%D \macros
+%D {GotoPar,GetPar}
+%D
+%D Typesetting a paragraph in a special way can be done by
+%D first grabbing the contents of the paragraph and processing
+%D this contents grouped. The next macro for instance typesets
+%D a paragraph in boldface.
+%D
+%D \starttyping
+%D \def\remark#1\par%
+%D {\bgroup\bf#1\egroup}
+%D \stoptyping
+%D
+%D This macro has to be called like
+%D
+%D \starttyping
+%D \remark some text ... ending with \par
+%D \stoptyping
+%D
+%D Instead of \type{\par} we can of course use an empty line.
+%D When we started typesetting with \TEX, we already had
+%D produced lots of text in plain \ASCII. In producing such
+%D simple formatted texts, we adopted an open layout, and when
+%D switching to \TEX, we continued this open habit. Although
+%D \TEX\ permits a cramped and badly formatted source, it adds
+%D to confusion and sometimes introduces errors. So we prefer:
+%D
+%D \starttyping
+%D \remark
+%D
+%D some text ... ending with an empty line
+%D \stoptyping
+%D
+%D We are going to implement a mechanism that allows such open
+%D specifications. The definition of the macro handling
+%D \type{\remark} becomes:
+%D
+%D \starttyping
+%D \def\remark%
+%D {\BeforePar{\bgroup\bf}%
+%D \AfterPar{\egroup}%
+%D \GetPar}
+%D \stoptyping
+%D
+%D A macro like \type{\GetPar} can be defined in several
+%D ways. The recent version, the fourth one in a row,
+%D originally was far more complicated, but some functionality
+%D has been moved to other macros.
+%D
+%D We start with the more simple but in some cases more
+%D appropriate alternative is \type{\GotoPar}. This one leaves
+%D \type{\par} unchanged and is therefore more robust. On the
+%D other hand, \type{\AfterPar} is not supported.
+
+\newtoks\BeforePar
+\newtoks\AfterPar
+
+\let\endoflinetoken=^^M
+
+%D The original definition was:
+%D
+%D \starttyping
+%D \def\doGotoPar
+%D {\ifx\nextchar\blankspace
+%D \@EA\GotoPar
+%D \else\ifx\nextchar\endoflinetoken
+%D \@EAEAEA\GotoPar
+%D \else
+%D \@EAEAEA\dodoGotoPar
+%D \fi\fi}
+%D
+%D \def\dodoGotoPar
+%D {\the\BeforePar
+%D \BeforePar\emptytoks
+%D \nextchar}
+%D
+%D \def\GotoPar
+%D {\afterassignment\doGotoPar\let\nextchar=}
+%D \stoptyping
+
+%D Its big brother \type{\GetPar} redefines the \type{\par}
+%D primitive, which can lead to unexpected results, depending
+%D in the context.
+%D
+%D \starttyping
+%D \def\GetPar
+%D {\expanded
+%D {\BeforePar
+%D {\the\BeforePar
+%D \BeforePar\emptytoks
+%D \bgroup
+%D \def\par
+%D {\egroup
+%D \par
+%D \the\AfterPar
+%D \BeforePar\emptytoks
+%D \AfterPar\emptytoks}}}%
+%D \GotoPar}
+%D \stoptyping
+
+%D However, we can implement a better alternative by using:
+%D
+%D \starttyping
+%D \def\dowithpar#1#2%
+%D {\def\handlepar##1\par{#1##1#2}%
+%D \def\gobblepar\par{\dowithpar{#1}{#2}}%
+%D \doifnextcharelse\par\gobblepar\handlepar}
+%D \stoptyping
+%D
+%D Or, nicer
+
+\def\redowithpar\par
+ {\doifnextcharelse\par\redowithpar\dodowithpar}%
+
+\def\dowithpar#1#2%
+ {\def\dodowithpar##1\par{#1##1#2}%
+ \redowithpar\par}
+
+\def\redogotopar\par
+ {\doifnextcharelse\par\redogotopar\dodogotopar}%
+
+\def\dogotopar#1%
+ {\def\dodogotopar{#1}%
+ \redogotopar\par}
+
+%D The previosuly defined macros now become:
+
+\def\GetPar
+ {\expanded
+ {\dowithpar
+ {\the\BeforePar
+ \BeforePar\emptytoks}
+ {\the\AfterPar
+ \BeforePar\emptytoks
+ \AfterPar\emptytoks}}}
+
+\def\GotoPar
+ {\expanded
+ {\dogotopar
+ {\the\BeforePar
+ \BeforePar\emptytoks}}}
+
+%D \macros
+%D {dowithpargument,dowithwargument}
+%D
+%D The next macros are a variation on \type{\GetPar}. When
+%D macros expect an argument, it interprets a grouped sequence
+%D of characters a one token. While this adds to robustness and
+%D less ambiguous situations, we sometimes want to be a bit
+%D more flexible, or at least want to be a bit more tolerant
+%D to user input.
+%D
+%D We start with a commands that acts on paragraphs. This
+%D command is called as:
+%D
+%D \starttyping
+%D \dowithpargument\command
+%D \dowithpargument{\command ... }
+%D \stoptyping
+%D
+%D In \CONTEXT\ we use this one to read in the titles of
+%D chapters, sections etc. The commands responsible for these
+%D activities accept several alternative ways of argument
+%D passing. In these examples, the \type{\par} can be omitted
+%D when an empty line is present.
+%D
+%D \starttyping
+%D \command{...}
+%D \command ... \par
+%D \command
+%D {...}
+%D \command
+%D ... \par
+%D \stoptyping
+%D
+%D We show two implementations, of which for the moment the
+%D we prefier to use the second one:
+%D
+%D \starttyping
+%D \def\dowithpargument#1%
+%D {\def\dodowithpargument%
+%D {\ifx\next\bgroup
+%D \def\next{#1}%
+%D \else
+%D \def\next####1 \par{#1{####1}}%
+%D \fi
+%D \next}%
+%D \futurelet\next\dodowithpargument}
+%D \stoptyping
+%D
+%D A second and better implementation was:
+%D
+%D \starttyping
+%D \def\dowithpargument#1%
+%D {\def\nextpar##1 \par{#1{##1}}%
+%D \def\nextarg##1{#1{##1}}%
+%D \doifnextcharelse{\bgroup}
+%D {\nextarg}
+%D {\nextpar}}
+%D \stoptyping
+%D
+%D We ended up with an alternative that also accepts en empty
+%D argument. This command permits for instance chapters to
+%D have no title.
+
+%\def\dowithpargument#1%
+% {\def\nextpar##1 \par{#1{##1}}%
+% \def\nextarg##1{#1{##1}}%
+% \doifnextcharelse{\bgroup}
+% {\nextarg}
+% {\doifnextcharelse{\par}
+% {#1{}}
+% {\nextpar}}}
+
+\def\dowithpargument#1%
+ {\def\nextpar##1 \par{#1{##1}}%
+ \def\nextarg##1{#1{##1}}%
+ \doifnextcharelse\bgroup\nextarg{\doifnextcharelse\par{#1{}}\nextpar}}
+
+%D The \type{p} in the previous command stands for paragraph.
+%D When we want to act upon words we can use the \type{w}
+%D alternative.
+%D
+%D \starttyping
+%D \dowithwargument\command
+%D \dowithwargument{... \command ...}
+%D \stoptyping
+%D
+%D The main difference bwteen two alternatives is in the
+%D handling of \type{\par}'s. This time the space token acts
+%D as a delimiter.
+%D
+%D \starttyping
+%D \command{...}
+%D \command ...
+%D \command
+%D {...}
+%D \command
+%D ...
+%D \stoptyping
+%D
+%D Again there are two implementations possible:
+%D
+%D \starttyping
+%D \def\dowithwargument#1%
+%D {\def\dodowithwargument%
+%D {\ifx\next\bgroup
+%D \def\next{#1}%
+%D \else
+%D \def\next####1 {#1{####1}}%
+%D \fi
+%D \next}%
+%D \futurelet\next\dodowithwargument}
+%D \stoptyping
+%D
+%D We've chosen:
+
+%\def\dowithwargument#1%
+% {\def\nextwar##1 {#1{##1}}%
+% \def\nextarg##1{#1{##1}}%
+% \doifnextcharelse{\bgroup}
+% {\nextarg}
+% {\nextwar}}
+
+\def\dowithwargument#1%
+ {\def\nextwar##1 {#1{##1}}%
+ \def\nextarg##1{#1{##1}}%
+ \doifnextcharelse\bgroup\nextarg\nextwar}
+
+%D \macros
+%D {dorepeat,dorepeatwithcommand}
+%D
+%D When doing repetitive tasks, we stromgly advice to use
+%D \type{\dorecurse}. The next alternative however, suits
+%D better some of the \CONTEXT\ interface commands.
+%D
+%D \starttyping
+%D \dorepeat[n*\command]
+%D \stoptyping
+%D
+%D The value of the used \COUNTER\ can be called within
+%D \type{\command} by \type{\repeater}.
+%D
+%D A slightly different alternative is:
+%D
+%D \starttyping
+%D \dorepeatwithcommand[n*{...}]\command
+%D \stoptyping
+%D
+%D When we call for something like:
+%D
+%D \starttyping
+%D \dorepeatwithcommand[3*{Hello}]\message
+%D \stoptyping
+%D
+%D we get ourselves three \type{\message{Hello}} messages in
+%D a row. In both commands, the \type{n*} is optional. When this
+%D specification is missing, the command executes once.
+
+% this one is obsolete:
+
+\def\dorepeat[#1]%
+ {\dodorepeat#1*\empty*\relax}
+
+\long\def\dodorepeat#1*#2#3*#4\relax
+ {\ifx#2\empty#1\else\dorecurse{#1}{#2#3}\fi}
+
+\def\repeater
+ {\recurselevel}
+
+% this one will be kept
+
+\def\dorepeatwithcommand[#1]%
+ {\dodorepeatwithcommand#1*\empty*\relax}
+
+% \long\def\dodorepeatwithcommand#1*#2#3*#4\relax#5%
+% {\ifx#2\empty
+% #5{#1}%
+% \else
+% \dorecurse{#1}{#5{#2#3}}%
+% \fi}
+%
+% more complex but better:
+
+% \long\def\dodorepeatwithcommand#1*#2#3*#4\relax#5%
+% {\ifx#2\empty
+% #5{#1}%
+% \else\ifnum#1<\zerocount
+% % a la etex
+% % \dorecurse{-\numexpr(#1)}{#5{-#2#3}}%
+% % indirect
+% %\innerrecurse#1%
+% %\expanded{\dorecurse{\number-\innerrecurse}}{#5{-#2#3}}%
+% % safer:
+% \bgroup\scratchcounter#1%
+% \expanded{\egroup\noexpand\dorecurse{\number-\scratchcounter}}{#5{-#2#3}}%
+% \else\ifx#2+%
+% \dorecurse{#1}{#5{#3}}%
+% \else
+% \dorecurse{#1}{#5{#2#3}}%
+% \fi\fi\fi}
+
+\def\dorepeatwithcommand[#1]%
+ {\dodorepeatwithcommand#1*\empty*\relax}
+
+\long\def\dodorepeatwithcommand#1*#2#3*#4\relax#5%
+ {\ifx#2\empty\redorepeatwithcommand[#1]#5\else\dododorepeatwithcommand{#1}{#2}{#3}#5\fi}
+
+\long\def\dododorepeatwithcommand#1#2#3#4%
+ {\ifx#2\empty % redundant but gives cleaner extensions
+ #4{#1}%
+ \else\ifnum#1<\zerocount
+ \bgroup\scratchcounter#1%
+ \expanded{\egroup\noexpand\dorecurse{\number-\scratchcounter}}{#4{-#2#3}}%
+ \else\ifx#2+%
+ \dorecurse{#1}{#4{#3}}%
+ \else
+ \dorecurse{#1}{#4{#2#3}}%
+ \fi\fi\fi}
+
+\def\redorepeatwithcommand[#1]#2%
+ {#2{#1}}
+
+%D The extension hook permits something like:
+%D
+%D \starttyping
+%D \bgroup
+%D
+%D \catcode`\*=\@@superscript
+%D
+%D \gdef\redorepeatwithcommand[#1]%
+%D {\redodorepeatwithcommand#1*\empty*\relax}
+%D
+%D \long\gdef\redodorepeatwithcommand#1*#2#3*#4\relax#5%
+%D {\dododorepeatwithcommand{#1}{#2}{#3}#5}
+%D
+%D \egroup
+%D \stoptyping
+%D
+%D although one may wonder if changing the catcode of \type {*} is wise.
+
+%D \macros
+%D {normalbgroup,normalgroup}
+%D
+%D No comment.
+
+\let\normalbgroup\bgroup
+\let\normalegroup\egroup
+
+%D \macros
+%D {doifstringinstringelse}
+%D
+%D The next macro is meant for situations where both strings
+%D are macros. This save some unneeded expansion.
+%D
+%D \starttyping
+%D \long\def\doifstringinstringelse#1#2%
+%D {\p!doifinstringelse#1#2%
+%D \@EA\firstoftwoarguments
+%D \else
+%D \@EA\secondoftwoarguments
+%D \fi}
+%D \stoptyping
+%D
+%D A bit faster is:
+
+\def\pp!doifstringinstringelse#1%
+ {\if#1@%
+ \@EA\secondoftwoarguments
+ \else
+ \@EA\firstoftwoarguments
+ \fi}
+
+\long\def\doifstringinstringelse#1#2%
+ {\long\@EA\def\@EA\p!doifstringinstringelse\@EA##\@EA1#1##2##3\war
+ {\pp!doifstringinstringelse##2}%
+ \@EA\@EA\@EA\p!doifstringinstringelse\@EA#2#1@@\war}
+
+%D \macros
+%D {appendtoks,prependtoks,appendtoksonce,prependtoksonce,
+%D doifintokselse,flushtoks,dotoks}
+%D
+%D We use \TOKENLISTS\ sparsely within \CONTEXT, because the
+%D comma separated lists are more suitable for the user
+%D interface. Nevertheless we have:
+%D
+%D \starttyping
+%D (\doglobal) \appendtoks ... \to\tokenlist
+%D (\doglobal) \prependtoks ... \to\tokenlist
+%D (\doglobal) \flushtoks\tokenlist
+%D \dotoks\tokenlist
+%D \stoptyping
+%D
+%D Er worden eerst enkele klad||registers gedefinieerd. These
+%D macros are clones of the ones implemented in page~378 of
+%D Knuth's \TeX book.
+%D
+%D A simple implementation, one that does not handle braces
+%D at the outer level, is:
+%D
+%D \starttyping
+%D \def\appendtoks#1\to#2%
+%D {\scratchtoks={#1}%
+%D \expanded{\dodoglobal\noexpand#2{\the#2\the\scratchtoks}}}
+%D
+%D \def\prependtoks#1\to#2%
+%D {\scratchtoks={#1}%
+%D \expanded{\dodoglobal\noexpand#2{\the\scratchtoks\the#2}}}
+%D \stoptyping
+%D
+%D But here we prefer:
+
+\newtoks\@@scratchtoks
+
+% before we had the once only alternatives, we had:
+%
+% \def\appendtoks {\doappendtoks \relax}
+% \def\prependtoks{\doprependtoks\relax}
+%
+% \long\def\doappendtoks#1\to#2%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}%
+% \expanded{\dodoglobal\noexpand#2{\the#2\the\@@scratchtoks}}}
+%
+% \long\def\doprependtoks#1\to#2%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}%
+% \expanded{\dodoglobal\noexpand#2{\the\@@scratchtoks\the#2}}}
+
+\def\appendtoks {\doappendtoks \relax}
+\def\prependtoks {\doprependtoks \relax}
+\def\appendtoksonce {\doappendtoksonce \relax}
+\def\prependtoksonce{\doprependtoksonce\relax}
+
+% \def\dodoappendtoks#1%
+% {\expanded{\dodoglobal\noexpand#1{\the#1\the\@@scratchtoks}}}
+%
+% \def\dodoprependtoks#1%
+% {\expanded{\dodoglobal\noexpand#1{\the\@@scratchtoks\the#1}}}
+%
+% \long\def\doappendtoks#1\to%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}\dodoappendtoks}
+%
+% \long\def\doprependtoks#1\to%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}\dodoprependtoks}
+%
+% \long\def\doappendtoksonce#1\to#2%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}%
+% \doifintokselse\@@scratchtoks{#2}{}{\dodoappendtoks{#2}}}
+%
+% \long\def\doprependtoksonce#1\to#2%
+% {\@@scratchtoks\@EA{\gobbleoneargument#1}%
+% \doifintokselse\@@scratchtoks{#2}{}{\dodoprependtoks{#2}}}
+%
+% A slightly (but in the case of large arguments
+% significantly) faster alternative is given below:
+
+\def\dodoappendtoks
+ {\dodoglobal\@@toks\@EAEAEA{\@EA\the\@EA\@@toks\the\@@scratchtoks}}
+
+\def\dodoprependtoks
+ {\dodoglobal\@@toks\@EAEAEA{\@EA\the\@EA\@@scratchtoks\the\@@toks}}
+
+\long\def\doappendtoks#1\to#2%
+ {\def\@@toks{#2}%
+ \@@scratchtoks\@EA{\gobbleoneargument#1}\dodoappendtoks}
+
+\long\def\doprependtoks#1\to#2%
+ {\def\@@toks{#2}%
+ \@@scratchtoks\@EA{\gobbleoneargument#1}\dodoprependtoks}
+
+\long\def\doappendtoksonce#1\to#2%
+ {\def\@@toks{#2}%
+ \@@scratchtoks\@EA{\gobbleoneargument#1}%
+ \doifintokselse\@@scratchtoks\@@toks\donothing\dodoappendtoks}
+
+\long\def\doprependtoksonce#1\to#2%
+ {\def\@@toks{#2}%
+ \@@scratchtoks\@EA{\gobbleoneargument#1}%
+ \doifintokselse\@@scratchtoks\@@toks\donothing\dodoprependtoks}
+
+%D The test macro:
+%D
+%D \starttyping
+%D \def\doifintokselse#1#2% #1 en #2 zijn toks
+%D {\edef\!!stringa{\the#1}\convertcommand\!!stringa\to\asciiA
+%D \edef\!!stringb{\the#2}\convertcommand\!!stringb\to\asciiB
+%D \doifinstringelse\asciiA\asciiB}
+%D \stoptyping
+%D
+%D Better:
+%D
+%D \starttyping
+%D \def\doifintokselse#1#2% #1 en #2 zijn toks
+%D {\edef\!!stringa{\the#1}\convertcommand\!!stringa\to\asciiA
+%D \edef\!!stringb{\the#2}\convertcommand\!!stringb\to\asciiB
+%D \doifstringinstringelse\asciiA\asciiB}
+%D \stoptyping
+%D
+%D Even better:
+
+\beginETEX
+
+ \def\doifintokselse#1#2% #1 en #2 zijn toks
+ {\@EA\convertargument\the#1\to\asciiA
+ \@EA\convertargument\the#2\to\asciiB
+ \doifstringinstringelse\asciiA\asciiB}
+
+\endETEX
+
+\beginTEX
+
+ \def\doifintokselse#1#2% #1 en #2 zijn toks
+ {\edef\asciiA{\the#1}\convertcommand\asciiA\to\asciiA
+ \edef\asciiB{\the#2}\convertcommand\asciiB\to\asciiB
+ \doifstringinstringelse\asciiA\asciiB}
+
+\endTEX
+
+%D Also:
+
+\def\appendetoks #1\to{\expanded{\appendtoks #1}\to}
+\def\prependetoks#1\to{\expanded{\prependtoks#1}\to}
+
+%D Hm.
+
+\def\flushtoks#1%
+ {\@@scratchtoks#1\relax
+ \dodoglobal#1\emptytoks
+ \the\@@scratchtoks\relax}
+
+\let\dotoks=\the
+
+%D \macros
+%D {makecounter,pluscounter,minuscounter,
+%D resetcounter,setcounter,countervalue}
+%D
+%D Declaring, setting and resetting \COUNTERS\ can be doen
+%D with the next set of commands.
+%D
+%D \starttyping
+%D \makecounter {name}
+%D \pluscounter {name}
+%D \minuscounter {name}
+%D \resetcounter {name}
+%D \setcounter {name} {value}
+%D \countervalue {name}
+%D \stoptyping
+%D
+%D We prefer the use of global counters. This means that we
+%D have to load \PLAIN\ \TEX\ in a bit different way:
+%D
+%D \starttyping
+%D \let\oldouter=\outer
+%D \let\outer=\relax
+%D \input plain.tex
+%D \let\outer=\oldouter
+%D
+%D \def\newcount%
+%D {\alloc@0\count\countdef\insc@unt}
+%D \stoptyping
+%D
+%D First we show a solution in which we use real \COUNTERS.
+%D Apart from some expansion, nothing special is done.
+%D
+%D \starttyping
+%D \def\makecounter#1%
+%D {\expandafter\newcount\csname#1\endcsname}
+%D
+%D \def\pluscounter#1%
+%D {\global\advance\csname#1\endcsname by 1 }
+%D
+%D \def\minuscounter#1%
+%D {\global\advance\csname#1\endcsname by -1 }
+%D
+%D \def\resetcounter#1%
+%D {\expandafter\global\csname#1\endcsname=0 }
+%D
+%D \def\setcounter#1#2%
+%D {\expandafter\global\csname#1\endcsname=#2 }
+%D
+%D \def\countervalue#1%
+%D {\the\getvalue{#1}}
+%D \stoptyping
+%D
+%D Because these macros are already an indirect way of working
+%D with counters, there is no harm in using pseudo \COUNTERS\
+%D here:
+
+\def\makecounter#1%
+ {\letgvalue{#1}\zerocountervalue} % see earlier
+
+% \def\countervalue#1%
+% {\getvalue{#1}}
+
+\let\countervalue\getvalue
+
+\def\pluscounter#1%
+ {\scratchcounter\getvalue{#1}%
+ \advance\scratchcounter \plusone
+ \setxvalue{#1}{\the\scratchcounter}}
+
+\def\minuscounter#1%
+ {\scratchcounter\getvalue{#1}%
+ \advance\scratchcounter \minusone
+ \setxvalue{#1}{\the\scratchcounter}}
+
+\def\resetcounter#1%
+ {\letgvalue{#1}\zerocountervalue}
+
+\def\setcounter#1#2%
+ {\scratchcounter#2%
+ \setxvalue{#1}{\the\scratchcounter}}
+
+%D \macros
+%D {savecounter,restorecounter}
+%D
+%D These two commands can be used to save and restore counter
+%D values. Only one level is saved.
+
+\def\savecounter#1%
+ {{\scratchcounter\getvalue {#1}\setxvalue{!#1}{\the\scratchcounter}}}
+
+\def\restorecounter#1%
+ {{\scratchcounter\getvalue{!#1}\setxvalue {#1}{\the\scratchcounter}}}
+
+% == {\setxvalue{#1}{\getvalue{!#1}}}
+
+%D The next \ETEX\ based solution is some 15\% faster, which
+%D goes unnoticed in any normal run, simply because these
+%D macros are not used milions of times.
+
+\beginETEX \numexpr
+
+\def\makecounter#1%
+ {\global\@EA\let\csname#1\endcsname\zerocountervalue} % see earlier
+
+\def\countervalue#1%
+ {\csname#1\endcsname}
+
+\def\pluscounter#1%
+ {\@EA\xdef\csname#1\endcsname{\the\numexpr\csname#1\endcsname+\plusone\relax}}
+
+\def\minuscounter#1%
+ {\@EA\xdef\csname#1\endcsname{\the\numexpr\csname#1\endcsname-\plusone\relax}}
+
+\def\resetcounter#1%
+ {\global\@EA\let\csname#1\endcsname\zerocountervalue}
+
+\def\setcounter#1#2%
+ {\@EA\xdef\csname#1\endcsname{\the\numexpr#2\relax}}
+
+\def\savecounter#1%
+ {\@EA\xdef\csname !#1\endcsname{\the\numexpr\csname#1\endcsname\relax}}
+
+\def\restorecounter#1%
+ {\@EA\xdef\csname#1\endcsname{\the\numexpr\csname !#1\endcsname\relax}}
+
+\endETEX
+
+%D \macros
+%D {beforesplitstring,aftersplitstring}
+%D
+%D These both commands split a string at a given point in two
+%D parts, so \type{x.y} becomes \type{x} or \type{y}.
+%D
+%D \starttyping
+%D \beforesplitstring test.tex\at.\to\filename
+%D \aftersplitstring test.tex\at.\to\extension
+%D \stoptyping
+%D
+%D The first routine looks (and is indeed) a bit simpler than
+%D the second one. The alternative looking more or less like
+%D the first one did not always give the results we needed.
+%D Both implementations show some insight in the manipulation
+%D of arguments.
+
+\def\beforesplitstring#1\at#2\to#3%
+ {\def\dosplitstring##1#2##2#2##3\\%
+ {\def#3{##1}}%
+ \@EA\dosplitstring#1#2#2\\}
+
+\def\aftersplitstring#1\at#2\to#3%
+ {\def\dosplitstring##1#2##2@@@##3\\%
+ {\def#3{##2}}%
+ \@EA\dosplitstring#1@@@#2@@@\\}
+
+%D \macros
+%D {splitstring,greedysplitstring}
+%D
+%D A bonus macro.
+
+\def\splitstring#1\at#2\to#3\and#4%
+ {\def\dosplitstring##1#2##2\empty\empty\empty##3\\%
+ {\def#3{##1}%
+ \def\dosplitstring{##3}%
+ \ifx\dosplitstring\empty
+ \let#4\empty
+ \else
+ \def#4{##2}%
+ \fi}%
+ \@EA\dosplitstring#1\empty\empty\empty#2\empty\empty\empty\\}
+
+% Ok, but not for all cases:
+%
+% \def\greedysplitstring#1\at#2\to#3\and#4%
+% {\edef\asciib{#1}%
+% \let\asciic\asciib
+% \let#3\empty
+% \let#4\empty
+% \doloop
+% {\expandafter\splitstring\asciib\at#2\to\asciia\and\asciib
+% \ifx\asciib\empty
+% \exitloop
+% \else
+% \edef#3{\ifx#3\empty\else#3#2\fi\asciia}%
+% \let#4\asciib
+% \fi}%
+% \ifx#3\empty\let#3\asciic\fi}
+%
+% The next one is some 25\% faster, but it hardly matters because
+% we seldom use this macro.
+%
+% \def\greedysplitstring#1\at#2\to#3\and#4%
+% {\edef\asciib{#1}%
+% \let\asciic\asciib
+% \let#3\empty
+% \let#4\empty
+% \def\dogreedysplitstring
+% {\expandafter\splitstring\asciib\at#2\to\asciia\and\asciib
+% \ifx\asciib\empty
+% \expandafter\dogreedysplitstring
+% \else
+% \edef#3{\ifx#3\empty\else#3#2\fi\asciia}%
+% \let#4\asciib
+% \fi}%
+% \dogreedysplitstring
+% \ifx#3\empty\let#3\asciic\fi}
+%
+% The better alternative:
+
+\def\greedysplitstring#1\at#2\to#3\and#4%
+ {\edef\asciib{#1}%
+ \let\asciic\asciib
+ \let#3\empty
+ \let#4\empty
+ \doloop
+ {\expandafter\splitstring\asciib\at#2\to\asciia\and\asciib
+ \ifx\asciib\empty
+ \exitloop
+ \else
+ % not \edef#3{\ifx#3\empty\else#3#2\fi\asciia} else
+ % /root/path fails because then #3==empty
+ \edef#3{\ifcase\recurselevel\or\else#3#2\fi\asciia}%
+ \let#4\asciib
+ \fi}%
+ \ifx#3\empty\let#3\asciic\fi}
+
+%D \macros
+%D {beforetestandsplitstring,
+%D aftertestandsplitstring,
+%D testandsplitstring}
+%D
+%D The next alternatives are for Simon Pepping. This time
+%D the result is empty when no split is done.
+
+% \def\beforetestandsplitstring#1\at#2\to#3%
+% {\def\dosplitstring##1#2##2#2##3\\{\doifelsenothing
+% {##3}{\let#3\empty}{\def#3{##1}}}%
+% \@EA\dosplitstring#1#2#2\\}
+%
+% \def\aftertestandsplitstring#1\at#2\to#3%
+% {\def\dosplitstring ##1#2##2@@@##3\\{\doifelsenothing
+% {##3}{\let#3\empty}{\def#3{##2}}}%
+% \@EA\dosplitstring #1@@@#2@@@\\}
+%
+% \def\testandsplitstring#1\at#2\to#3\and#4%
+% {\def\dosplitstring##1#2##2#2##3\\{\doifelsenothing
+% {##3}{\let#3\empty\let#4\empty}{\def#3{##1}\def#4{##2}}}%
+% \@EA\dosplitstring#1#2#2\\}
+%
+% faster:
+
+\def\beforetestandsplitstring#1\at#2\to#3%
+ {\def\dosplitstring##1#2##2#2##3##4\\%
+ {\ifx##3\empty\let#3\empty\else\def#3{##1}\fi}%
+ \@EA\dosplitstring#1#2#2\empty\\}
+
+\def\aftertestandsplitstring#1\at#2\to#3%
+ {\def\dosplitstring ##1#2##2@@@##3##4\\%
+ {\ifx##3\empty\let#3\empty\else\def#3{##2}\fi}%
+ \@EA\dosplitstring #1@@@#2@@@\empty\\}
+
+\def\testandsplitstring#1\at#2\to#3\and#4%
+ {\def\dosplitstring##1#2##2#2##3##4\\%
+ {\ifx##3\empty\let#3\empty\let#4\empty\else\def#3{##1}\def#4{##2}\fi}%
+ \@EA\dosplitstring#1#2#2\empty\\}
+
+%D \macros
+%D {removesubstring}
+%D
+%D A first application of the two routines defined above is:
+%D
+%D \starttyping
+%D \removesubstringtest-\from first-last\to\nothyphenated
+%D \stoptyping
+%D
+%D Which in terms of \TEX\ looks like:
+
+%\def\removesubstring#1\from#2\to#3%
+% {\doifinstringelse{#1}{#2}
+% {\beforesplitstring#2\at#1\to\!!stringa
+% \aftersplitstring #2\at#1\to\!!stringb
+% \edef#3{\!!stringa\!!stringb}%
+% \removesubstring#1\from#3\to#3}
+% {}}
+
+\def\removesubstring#1\from#2\to#3%
+ {\splitstring#2\to\!!stringa\and\!!stringb
+ \dodoglobal#3{\!!stringa\!!stringb}}
+
+%D \macros
+%D {appendtocommalist,prependtocommalist,
+%D addtocommalist,removefromcommalist}
+%D
+%D When working with comma separated lists, one sooner or
+%D later want the tools to append or remove items from such a
+%D list. When we add an item, we first check if it's already
+%D there. This means that every item in the list is unique.
+%D
+%D \starttyping
+%D \addtocommalist {alfa} \name
+%D \addtocommalist {beta} \name
+%D \addtocommalist {gamma} \name
+%D \removefromcommalist {beta} \name
+%D \stoptyping
+%D
+%D These commands can be prefixed with \type{\doglobal}. The
+%D implementation of the second command is more complecated,
+%D because we have to take leading spaces into account. Keep in
+%D mind that users may provide lists with spaces after the
+%D commas. When one item is left, we also have to get rid of
+%D trailing spaces.
+%D
+%D \starttyping
+%D \def\words{alfa, beta, gamma, delta}
+%D \def\words{alfa,beta,gamma,delta}
+%D \stoptyping
+%D
+%D Removing an item takes more time than adding one.
+%D
+%D A fast appending alternative, without any testing, is
+%D also provided:
+%D
+%D \starttyping
+%D \appendtocommalist {something} \name
+%D \prependtocommalist {something} \name
+%D \stoptyping
+%D
+%D This can be implemented as follows:
+%D
+%D \starttyping
+%D \def\appendtocommalist#1#2%
+%D {\ifx#2\empty
+%D \dodoglobal\edef#2{#1}%
+%D \else % no test on empty
+%D \dodoglobal\edef#2{#2,#1}%
+%D \fi}
+%D
+%D \def\prependtocommalist#1#2%
+%D {\ifx#2\empty
+%D \dodoglobal\edef#2{#1}%
+%D \else % no test on empty
+%D \dodoglobal\edef#2{#1,#2}%
+%D \fi}
+%D \stoptyping
+%D
+%D The faster alternatives are:
+
+\def\appendtocommalist#1#2%
+ {\dodoglobal\edef#2{\ifx#2\empty\else#2,\fi#1}}
+
+\def\prependtocommalist#1#2%
+ {\dodoglobal\edef#2{#1\ifx#2\empty\else,#2\fi}}
+
+%D The old ones are:
+%D
+%D \starttyping
+%D \def\addtocommalist#1#2%
+%D {\ifx#2\empty
+%D \dodoglobal\edef#2{#1}%
+%D \else
+%D \edef\!!stringa{#2,,}%
+%D \beforesplitstring#2\at,,\to#2\relax
+%D \ExpandBothAfter\doifinsetelse{#1}{#2}
+%D {\resetglobal}
+%D {\dodoglobal\edef#2{#2,#1}}%
+%D \fi}
+%D
+%D \def\pretocommalist#1#2%
+%D {\ifx#2\empty
+%D \dodoglobal\edef#2{#1}%
+%D \else
+%D \edef\!!stringa{#2,,}%
+%D \beforesplitstring#2\at,,\to#2\relax
+%D \ExpandBothAfter\doifinsetelse{#1}{#2}
+%D {\resetglobal}
+%D {\dodoglobal\edef#2{#1,#2}}%
+%D \fi}
+%D
+%D \def\doremovefromcommalist#1#2#3% nog \doglobal
+%D {\edef\!!stringa{,,#3,,}%
+%D \beforesplitstring\!!stringa\at,#1#2,\to\!!stringb
+%D \aftersplitstring\!!stringa\at,#1#2,\to\!!stringc
+%D \edef#3{\!!stringb,\!!stringc}%
+%D \aftersplitstring#3\at,,\to#3\relax
+%D \beforesplitstring#3\at,,\to#3}
+%D
+%D \def\removefromcommalist#1#2%
+%D {\doremovefromcommalist{ }{#1}{#2}%
+%D \doremovefromcommalist{}{#1}{#2}%
+%D \dofrontstrip#2%
+%D \dodoglobal\edef#2{#2}}
+%D \stoptyping
+%D
+%D Significantly faster (especially for longer lists):
+
+\def\addtocommalist#1#2% {item} \cs
+ {\rawdoifinsetelse{#1}#2\resetglobal
+ {\dodoglobal\edef#2{\ifx#2\empty\else#2,\fi#1}}}
+
+\def\pretocommalist#1#2% {item} \cs
+ {\rawdoifinsetelse{#1}#2\resetglobal
+ {\dodoglobal\edef#2{#1\ifx#2\empty\else,#2\fi}}}
+
+\def\xsplitstring#1#2% \cs {str}
+ {\def\dosplitstring##1,#2,##2,#2,##3\\%
+ {\edef\!!stringa{\bcleanedupcommalist##1\empty\empty\relax}%
+ \edef\!!stringb{\acleanedupcommalist##2,,\relax}}%
+ \@EA\dosplitstring\@EA,#1,,#2,,#2,\\}
+
+\def\bcleanedupcommalist#1#2#3\relax{\if#1,\else#1\fi\if#2,\else#2\fi#3}
+\def\bcleanedupcommalist#1#2\relax{\if#1,\else#1\fi#2}
+\def\acleanedupcommalist#1,,#2\relax{#1}
+
+% \def\removefromcommalist#1#2%
+% {\expanded{\xsplitstring\noexpand#2{#1}}%
+% \dodoglobal\edef#2%
+% {\ifx\!!stringa\empty
+% \!!stringb
+% \else
+% \@EA\acleanedupcommalist\!!stringa,,\relax
+% \ifx\!!stringb\empty\else,\!!stringb\fi
+% \fi}}
+
+\def\removefromcommalist#1#2%
+ {\rawdoifinsetelse{#1}#2%
+ {\expanded{\xsplitstring\noexpand#2{#1}}%
+ \dodoglobal\edef#2%
+ {\ifx\!!stringa\empty
+ \!!stringb
+ \else
+ \!!stringa\ifx\!!stringb\empty\else,\!!stringb\fi
+ \fi}}
+ \resetglobal}
+
+%D \macros
+%D {substituteincommalist}
+%D
+%D Slow but seldom used, so for the moment we stick to this
+%D implementation.
+%D
+%D \starttyping
+%D \substituteincommalist{old}{new}{list}
+%D \stoptyping
+
+\def\substituteincommalist#1#2#3% old, new, list (slooow)
+ {\edef\!!stringb{#1}%
+ \edef\!!stringd{#2}%
+ \let\!!stringa#3%
+ \let#3\empty
+ \def\dosubstituteincommalist##1%
+ {\edef\!!stringc{##1}%
+ \ifx\!!stringb\!!stringc
+ \ifx\!!stringd\empty\else
+ \edef#3{#3\ifx#3\empty\else,\fi\!!stringd}%
+ \fi
+ \def\docommando####1{\edef#3{#3,####1}}%
+ \else
+ \edef#3{#3\ifx#3\empty\else,\fi##1}%
+ \fi}%
+ \@EA\rawprocesscommacommand\@EA[\!!stringa]\dosubstituteincommalist}
+
+%D A not so useful macro:
+
+\def\dodofrontstrip[#1#2]#3%
+ {\ifx#1\space
+ \def#3{#2}%
+ \else
+ \def#3{#1#2}%
+ \fi}
+
+\def\dofrontstrip#1%
+ {\edef\!!stringa{#1}%
+ \ifx\!!stringa\empty \else
+ \@EA\dodofrontstrip\@EA[#1]#1%
+ \fi}
+
+%D \macros
+%D {replaceincommalist}
+%D
+%D The next macro can be used to replace an indexed element
+%D in a commalist:
+%D
+%D \starttyping
+%D \replaceincommalist\MyList{2}
+%D \stoptyping
+%D
+%D Element~2 will be replaced by the current meaning of the macro
+%D \type {\newcommalistelement}. The old meaning is saved in
+%D \type {\commalistelement}. The replacement honors grouped items,
+%D like in:
+%D
+%D \starttyping
+%D \def\MyList{a,b,c,d,e,f} \replaceincommalist\MyList{3}
+%D \def\MyList{a,b,c,d,e,f} \replaceincommalist\MyList{3}
+%D \def\MyList{a,{b,c},d,e,f} \replaceincommalist\MyList{3}
+%D \def\MyList{a,b,c,{d,e,f}} \replaceincommalist\MyList{3}
+%D \stoptyping
+
+\let\newcommalistelement\empty
+
+\def\replaceincommalist#1#2% #1 = commalistelement #2 = position starts at 1
+ {\def\doreplaceincommalist##1%
+ {\ifnum\commalistcounter=#2\relax
+ \ifx\newcommalistelement\empty\else
+ \ifx\newcommalist\empty
+ \let\newcommalist\newcommalistelement
+ \else
+ \@EA\@EA\@EA\def\@EA\@EA\@EA\newcommalist\@EA\@EA\@EA
+ {\@EA\newcommalist\@EA,\newcommalistelement}%
+ \fi
+ \fi
+ \def\commalistelement{##1}%
+ \else
+ \ifx\newcommalist\empty
+ \ifx\nexttoken\bgroup % is known -)
+ \def\newcommalist{{##1}}%
+ \else
+ \def\newcommalist{##1}%
+ \fi
+ \else
+ \ifx\nexttoken\bgroup % is known -)
+ \@EA\def\@EA\newcommalist\@EA{\newcommalist,{##1}}%
+ \else
+ \@EA\def\@EA\newcommalist\@EA{\newcommalist,##1}%
+ \fi
+ \fi
+ \fi
+ \advance\commalistcounter\plusone}%
+ \let\commalistelement\empty
+ \let\newcommalist\empty
+ \commalistcounter\plusone
+ \@EA\processcommalist\@EA[#1]\doreplaceincommalist
+ \dodoglobal\let#1\newcommalist}
+
+%D \macros
+%D {globalprocesscommalist}
+%D
+%D The commalist processing commands are characterized by the
+%D fact that the way they handle expansion as well as the fact
+%D that they can be nested. This makes them kind of useless for
+%D handling comma lists in alignments. In these situations the
+%D next macro can be of use.
+
+\def\globalprocesscommaitem#1,%
+ {\if]#1\else
+ \globalcommacommand{#1}%
+ \expandafter\globalprocesscommaitem
+ \fi}
+
+\def\globalprocesscommalist[#1]#2%
+ {\global\let\globalcommacommand#2%
+ \expandafter\globalprocesscommaitem#1,],}
+
+%D \macros
+%D {withoutunit,withoutpt,
+%D PtToCm,
+%D numberofpoints,dimensiontocount}
+%D
+%D We can convert point into centimeters with:
+%D
+%D \starttyping
+%D \PtToCm{dimension}
+%D \stoptyping
+%D
+%D Splitting the value and the unit is done by:
+
+\def\withoutunit#1#2%
+ {\begingroup
+ \scratchdimen#1\relax
+ \@EA\convertargument\the\scratchdimen\to\asciiA
+ \@EA\convertargument#2\to\asciiB
+ %\@EA\@EA\@EA\beforesplitstring\@EA\asciiA\@EA\at\asciiB\to\!!stringa
+ \@EA\beforesplitstring\@EA\asciiA\@EA\at\asciiB\to\!!stringa
+ \!!stringa
+ \endgroup}
+
+\def\withoutpt#1{\withoutunit{#1}{pt}}
+\def\withoutcm#1{\withoutunit{#1}{cm}}
+
+%D A bit faster and more robust alternative is one that
+%D manipulates the \CATCODES.
+
+{\catcode`\.=\@@other
+ \catcode`\p=\@@other
+ \catcode`\t=\@@other
+ \gdef\WITHOUTPT#1pt{#1}}
+
+\def\withoutpt#1%
+ {\expandafter\WITHOUTPT#1}
+
+%D The capitals are needed because \type{p} and \type{t} have
+%D \CATCODE~12, while macronames only permit tokens with the
+%D \CATCODE~11. As a result we cannot use the \type{.group}
+%D primitives. Those who want to know more about this kind of
+%D manipulations, we advice to study the \TEX book in detail.
+%D Because this macro does not do any assignment, we can use it
+%D in the following way too.
+
+\def\PtToCm#1%
+ {\begingroup
+ \scratchdimen#1\relax
+ \scratchdimen0.0351459804\scratchdimen % 2.54/72.27
+ \withoutpt\the\scratchdimen cm%
+ \endgroup}
+
+%D We also support:
+%D
+%D \starttyping
+%D \numberofpoints {dimension}
+%D \dimensiontocount {dimension} {\count}
+%D \stoptyping
+%D
+%D Both macros return a rounded number.
+
+% todo: etex version
+
+\def\numberofpoints#1%
+ {\scratchdimen#1%
+ \advance\scratchdimen .5pt
+ \withoutpt\the\scratchdimen}
+
+\def\dimensiontocount#1#2%
+ {\scratchdimen#1%
+ \advance\scratchdimen .5pt
+ #2\scratchdimen
+ \divide#2 \maxcard}
+
+%D \macros
+%D {swapdimens,swapmacros}
+%D
+%D Simple but effective are the next two macros. There name
+%D exactly states their purpose. The \type{\scratchdimen} and
+%D \type{\!!stringa} can only be swapped when being the first
+%D argument.
+
+\def\swapdimens#1#2%
+ {\scratchdimen #1\redoglobal #1#2\dodoglobal #2\scratchdimen}
+
+\def\swapmacros#1#2%
+ {\let\!!stringa#1\redoglobal\let#1#2\dodoglobal\let#2\!!stringa}
+
+%D \macros
+%D {pushmacro,popmacro}
+%D
+%D Premature and a bit of beta, we offer:
+%D
+%D \starttyping
+%D \pushmacro\macro
+%D \popmacro\macro
+%D \stoptyping
+%D
+%D Beware: global!
+
+% \def\@s@{@s@}
+%
+% \beginTEX
+%
+% \def\globalpushmacro#1% we can use a faster incement here
+% {\@EA\doglobal\@EA\increment\csname\@s@*\string#1\endcsname
+% \global\@EA\let\csname\csname\@s@*\string#1\endcsname*\string#1\endcsname#1}
+%
+% \def\globalpopmacro#1% \global\let
+% {\global\@EA\let\@EA#1\csname\csname\@s@*\string#1\endcsname*\string#1\endcsname
+% \@EA\doglobal\@EA\decrement\csname\@s@*\string#1\endcsname}
+%
+% \def\localpushmacro#1% this one can be used to push a value over an \egroup
+% {\@EA\doglobal\@EA\increment\csname\@s@**\string#1\endcsname
+% \global\@EA\let\csname\csname\@s@**\string#1\endcsname**\string#1\endcsname#1}
+%
+% \def\localpopmacro#1% \local\let
+% {\@EA\let\@EA#1\csname\csname\@s@**\string#1\endcsname**\string#1\endcsname
+% \global\@EA\decrement\csname\@s@**\string#1\endcsname}
+%
+% \endTEX
+%
+% \beginETEX \newcount
+%
+% \def\globalpushmacro#1%
+% {\ifcsname\@s@*\string#1\endcsname \else
+% \@EA\newcount\csname\@s@*\string#1\endcsname
+% \fi
+% \global\advance\csname\@s@*\string#1\endcsname \plusone
+% \global\@EA\let\csname\the\csname\@s@*\string#1\endcsname*\string#1\endcsname#1}
+%
+% \def\globalpopmacro#1% \global\let
+% {\global\@EA\let\@EA#1\csname\the\csname\@s@*\string#1\endcsname*\string#1\endcsname
+% \global\advance\csname\@s@*\string#1\endcsname \minusone}
+%
+% \def\localpushmacro#1% this one can be used to push a value over an \egroup
+% {\ifcsname\@s@**\string#1\endcsname \else
+% \@EA\newcount\csname\@s@**\string#1\endcsname
+% \fi
+% \global\advance\csname\@s@**\string#1\endcsname \plusone
+% \global\@EA\let\csname\the\csname\@s@**\string#1\endcsname**\string#1\endcsname#1}
+%
+% \def\localpopmacro#1% \local\let
+% {\@EA\let\@EA#1\csname\the\csname\@s@**\string#1\endcsname**\string#1\endcsname
+% \global\advance\csname\@s@**\string#1\endcsname \minusone }
+%
+% \endETEX
+%
+% some 5% faster (used a lot in typescripts, so ...)
+
+\def\@sl@{@sl@}
+\def\@sg@{@sg@}
+
+\let\@@pushedmacro\empty
+
+\beginTEX
+
+\def\globalpushmacro#1% we can use a faster incement here
+ {\xdef\@@pushedmacro{\string#1}%
+ \@EA\doglobal\@EA\increment\csname\@sg@\@@pushedmacro\endcsname
+ \global\@EA\let\csname\csname\@sg@\@@pushedmacro\endcsname\@@pushedmacro\endcsname#1}
+
+\def\globalpopmacro#1%
+ {\xdef\@@pushedmacro{\string#1}%
+ \global\@EA\let\@EA#1\csname\csname\@sg@\@@pushedmacro\endcsname\@@pushedmacro\endcsname
+ \@EA\doglobal\@EA\decrement\csname\@sg@\@@pushedmacro\endcsname}
+
+\def\localpushmacro#1% this one can be used to push a value over an \egroup
+ {\xdef\@@pushedmacro{\string#1}%
+ \@EA\doglobal\@EA\increment\csname\@sl@\@@pushedmacro\endcsname
+ \global\@EA\let\csname\csname\@sl@\@@pushedmacro\endcsname\@@pushedmacro\endcsname#1}
+
+\def\localpopmacro#1%
+ {\xdef\@@pushedmacro{\string#1}%
+ \@EA\let\@EA#1\csname\csname\@sl@\@@pushedmacro\endcsname\@@pushedmacro\endcsname
+ \global\@EA\decrement\csname\@sl@\@@pushedmacro\endcsname}
+
+\endTEX
+
+\beginETEX
+
+\def\globalpushmacro#1%
+ {\xdef\@@pushedmacro{\string#1}%
+ \ifcsname\@sg@\@@pushedmacro\endcsname \else
+ \@EA\newcount\csname\@sg@\@@pushedmacro\endcsname
+ \fi
+ \global\advance\csname\@sg@\@@pushedmacro\endcsname \plusone
+ \global\@EA\let\csname\the\csname\@sg@\@@pushedmacro\endcsname\@@pushedmacro\endcsname#1}
+
+\def\globalpopmacro#1%
+ {\xdef\@@pushedmacro{\string#1}%
+ \global\@EA\let\@EA#1\csname\the\csname\@sg@\@@pushedmacro\endcsname\@@pushedmacro\endcsname
+ \global\advance\csname\@sg@\@@pushedmacro\endcsname \minusone}
+
+\def\localpushmacro#1% this one can be used to push a value over an \egroup
+ {\xdef\@@pushedmacro{\string#1}%
+ \ifcsname\@sl@\@@pushedmacro\endcsname \else
+ \@EA\newcount\csname\@sl@\@@pushedmacro\endcsname
+ \fi
+ \global\advance\csname\@sl@\@@pushedmacro\endcsname \plusone
+ \global\@EA\let\csname\the\csname\@sl@\@@pushedmacro\endcsname\@@pushedmacro\endcsname#1}
+
+\def\localpopmacro#1%
+ {\xdef\@@pushedmacro{\string#1}%
+ \@EA\let\@EA#1\csname\the\csname\@sl@\@@pushedmacro\endcsname\@@pushedmacro\endcsname
+ \global\advance\csname\@sl@\@@pushedmacro\endcsname \minusone }
+
+\endETEX
+
+% \let\pushmacro\globalpushmacro
+% \let\popmacro \globalpopmacro
+
+\let\pushmacro\localpushmacro
+\let\popmacro \localpopmacro
+
+%D \macros
+%D {setlocalhsize}
+%D
+%D Sometimes we need to work with the \type{\hsize} that is
+%D corrected for indentation and left and right skips. The
+%D corrected value is available in \type{\localhsize}, which
+%D needs to be calculated with \type{\setlocalhsize} first.
+%D
+%D \starttyping
+%D \setlocalhsize \hbox to \localhsize{...}
+%D \setlocalhsize[-1em] \hbox to \localhsize{...}
+%D \setlocalhsize[.5ex] \hbox to \localhsize{...}
+%D \stoptyping
+%D
+%D These examples show us that an optional can be used. The
+%D value provided is added to \type{\localhsize}.
+
+\newdimen\localhsize
+
+\def\complexsetlocalhsize[#1]% don't change !
+ {\localhsize\hsize
+ \ifnum\hangafter<\zerocount
+ \advance\localhsize\ifdim\hangindent>\zeropoint-\fi\hangindent
+ \fi
+ \advance\localhsize -\leftskip
+ \advance\localhsize -\rightskip
+ \advance\localhsize #1\relax}
+
+\def\simplesetlocalhsize
+ {\complexsetlocalhsize[\zeropoint]}
+
+\definecomplexorsimple\setlocalhsize
+
+%D \macros
+%D {processtokens}
+%D
+%D We fully agree with (most) typographers that inter||letter
+%D spacing is only permitted in fancy titles, we provide a
+%D macro that can be used to do so. Because this is
+%D (definitely and fortunately) no feature of \TEX, we have to
+%D step through the token list ourselves.
+%D
+%D \starttyping
+%D \processtokens {before} {between} {after} {space} {tokens}
+%D \stoptyping
+%D
+%D An example of a call is:
+%D
+%D \startbuffer
+%D \processtokens {[} {+} {]} {\space} {hello world}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D This results in:
+%D
+%D \getbuffer
+%D
+%D The list of tokens may contain spaces, while \type{\\},
+%D \type{{}} and \type{\ } are handled as space too.
+
+% \def\dodoprocesstokens%
+% {\ifx\next\lastcharacter
+% \after
+% \let\next=\relax
+% \else\ifx\next\bgroup
+% \def\next%
+% {\dowithnextbox
+% {\before\box\nextbox
+% \let\before=\between
+% \doprocesstokens}
+% \hbox\bgroup}%
+% \else
+% \expandafter\if\space\next
+% \before\white
+% \else
+% \before\next
+% \fi
+% \let\before=\between
+% \let\next=\doprocesstokens
+% \fi\fi
+% \next}
+%
+% \def\doprocesstokens% the space after = is essential
+% {\afterassignment\dodoprocesstokens\let\next= }
+%
+% \def\processtokens#1#2#3#4#5%
+% {\bgroup
+% \def\lastcharacter{\lastcharacter}%
+% \def\space{ }%
+% \let\\=\space
+% \def\before{#1}%
+% \def\between{#2}%
+% \def\after{#3}%
+% \def\white{#4}%
+% \doprocesstokens#5\lastcharacter
+% \egroup}
+
+\def\dodoprocesstokens
+ {\ifx\nextprocessedtoken\lastcharacter
+ \after
+ \let\nextprocessedtoken\relax
+ \else\ifx\nextprocessedtoken\bgroup
+ \def\nextprocessedtoken
+ {\dowithnextbox
+ {\before{\copy\nextbox}% \before can use nextbox several times
+ \let\before\between
+ \doprocesstokens}
+ \hbox\bgroup}%
+ \else
+ \expandafter\if\space\nextprocessedtoken
+ \after\white
+ \let\before\savedbefore
+ \else
+ \before\nextprocessedtoken
+ \let\before\between
+ \fi
+ \let\nextprocessedtoken\doprocesstokens
+ \fi\fi
+ \nextprocessedtoken}
+
+\def\doprocesstokens% the space after = is essential
+ {\afterassignment\dodoprocesstokens\let\nextprocessedtoken= }
+
+\def\processtokens#1#2#3#4#5%
+ {\begingroup
+ \def\lastcharacter{\lastcharacter}%
+ \def\space{ }%
+ \let\\=\space
+ \def\before{#1}%
+ \def\between{#2}%
+ \def\after{#3}%
+ \def\white{#4}%
+ \let\savedbefore\before
+ \doprocesstokens#5\lastcharacter
+ \endgroup}
+
+%D \macros
+%D {doifvalue,doifnotvalue,doifelsevalue,
+%D doifnothing,doifsomething,doifelsenothing,
+%D doifvaluenothing,doifvaluesomething,doifelsevaluenothing}
+%D
+%D These long named \type{\if} commands can be used to access
+%D macros (or variables) that are normally accessed by using
+%D \type{\getvalue}. Using these alternatives safes us three
+%D tokens per call. Anyone familiar with the not||values
+%D ones, can derive their meaning from the definitions.
+
+ \def\doifvalue#1{\doif {\csname#1\endcsname}}
+ \def\doifnotvalue#1{\doifnot {\csname#1\endcsname}}
+ \def\doifelsevalue#1{\doifelse{\csname#1\endcsname}}
+
+ \def\doifnothing#1{\doif {#1}{}}
+ \def\doifsomething#1{\doifnot {#1}{}}
+ \def\doifelsenothing#1{\doifelse{#1}{}}
+
+ \def\doifvaluenothing#1{\doif {\csname#1\endcsname}{}}
+ \def\doifvaluesomething#1{\doifnot {\csname#1\endcsname}{}}
+\def\doifelsevaluenothing#1{\doifelse{\csname#1\endcsname}{}}
+
+%D Faster but spoiling inheritance (copying parameters):
+%D
+%D \starttyping
+%D \def\doifelsevaluesomething#1#2#3%
+%D {\expandafter\ifx\csname#1\endcsname\empty#3\else#2\fi}
+%D
+%D \def\doifvaluesomething#1#2%
+%D {\expandafter\ifx\csname#1\endcsname\empty\else#2\fi}
+%D
+%D \def\doifvaluenothing#1#2%
+%D {\expandafter\ifx\csname#1\endcsname\empty#2\fi}
+%D \stoptyping
+%D
+%D Slightly more efficient:
+
+ \def\doifnothing{\doif \empty}
+ \def\doifsomething{\doifnot \empty}
+\def\doifelsenothing{\doifelse\empty}
+
+%D The somewhat faster alternatives are:
+
+\long\def\doifvalue#1#2%
+ {\edef\!!stringa{\csname#1\endcsname}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifnotvalue#1#2%
+ {\edef\!!stringa{\csname#1\endcsname}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\long\def\doifelsevalue#1#2%
+ {\edef\!!stringa{\csname#1\endcsname}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\long\def\doifnothing#1%
+ {\edef\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifsomething#1%
+ {\edef\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\long\def\doifelsenothing#1%
+ {\edef\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\long\def\doifvaluenothing#1%
+ {\edef\!!stringa{\csname#1\endcsname}%
+ \ifx\!!stringa\empty
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifvaluesomething#1%
+ {\edef\!!stringa{\csname#1\endcsname}%
+ \ifx\!!stringa\empty
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\long\def\doifelsevaluenothing#1%
+ {\edef\!!stringa{\csname#1\endcsname}%
+ \ifx\!!stringa\empty
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D \macros
+%D {doifemptyelsevalue, doifemptyvalue, doifnotemptyvalue}
+%D
+%D Also handy:
+
+\def\doifemptyelsevalue#1%
+ {\@EA\ifx\csname#1\endcsname\empty
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\doifemptyvalue#1%
+ {\@EA\ifx\csname#1\endcsname\empty
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\doifnotemptyvalue#1%
+ {\@EA\ifx\csname#1\endcsname\empty
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+%D \macros
+%D {doifallcommonelse}
+%D
+%D A complete match of two sets can be tested with
+%D \type {\doifallcommonelse}, where the first two
+%D arguments are sets.
+
+%\def\doifallcommonelse#1#2#3#4%
+% {\def\p!docommoncheck##1%
+% {\doifnotinset{##1}{#2}{\donefalse}%
+% \ifdone\else\quitcommalist\fi}%
+% \donetrue
+% \processcommalist[#1]\p!docommoncheck
+% \ifdone#3\else#4\fi}
+
+\def\@@doifallcommonelse#1#2#3#4% slow
+ {\def\p!docommoncheck##1%
+ {\doifnotinset{##1}{#4}\donefalse
+ \ifdone\else\expandafter\quitcommalist\fi}%
+ \donetrue
+ \processcommalist[#3]\p!docommoncheck
+ \ifdone\expandafter#1\else\expandafter#2\fi}
+
+\def\doifallcommonelse
+ {\@@doifallcommonelse\firstoftwoarguments\secondoftwoarguments}
+
+\def\doifallcommon
+ {\@@doifallcommonelse\firstofonearguments\gobbleoneargument}
+
+\def\doifnotallcommon
+ {\@@doifallcommonelse\gobbleoneargument\firstofonearguments}
+
+%D \macros
+%D {DOIF,DOIFELSE,DOIFNOT}
+%D
+%D \TEX\ is case sensitive. When comparing arguments, this
+%D feature sometimes is less desirable, for instance when we
+%D compare filenames. The next three alternatives upcase their
+%D arguments before comparing them.
+%D
+%D \starttyping
+%D \DOIF {string1} {string2} {...}
+%D \DOIFNOT {string1} {string2} {...}
+%D \DOIFELSE {string1} {string2} {then ...}{else ...}
+%D \stoptyping
+%D
+%D We have to use a two||step implementation, because the
+%D expansion has to take place outside \type{\uppercase}.
+
+\def\p!DOIF#1#2%
+ {\uppercase{\ifinstringelse{$#1$}{$#2$}}%
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\p!DOIFNOT#1#2%
+ {\uppercase{\ifinstringelse{$#1$}{$#2$}}%
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\def\p!DOIFELSE#1#2%
+ {\uppercase{\ifinstringelse{$#1$}{$#2$}}%
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\p!DOIFINSTRINGELSE#1#2%
+ {\uppercase{\ifinstringelse{#1}{#2}}%
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\DOIF {\ExpandBothAfter\p!DOIF}
+\def\DOIFNOT {\ExpandBothAfter\p!DOIFNOT}
+\def\DOIFELSE {\ExpandBothAfter\p!DOIFELSE}
+\def\DOIFINSTRINGELSE {\ExpandBothAfter\p!DOIFINSTRINGELSE}
+
+%D \macros
+%D {stripcharacters,stripspaces}
+%D
+%D The next command was needed first when we implemented
+%D the \CONTEXT\ interactivity macros. When we use labeled
+%D destinations, we often cannot use all the characters we
+%D want. We therefore strip some of the troublemakers, like
+%D spaces, from the labels before we write them to the
+%D \DVI||file, which passes them to for instance a PostScript
+%D file.
+%D
+%D \starttyping
+%D \stripspaces\from\one\to\two
+%D \stoptyping
+%D
+%D Both the old string \type{\one} and the new one \type{\two}
+%D are expanded. This command is a special case of:
+%D
+%D \starttyping
+%D \stripcharacter\char\from\one\to\two
+%D \stoptyping
+%D
+%D As we can see below, spaces following a control sequence are
+%D to enclosed in \type{{}}.
+
+\def\stripcharacter#1\from#2\to#3%
+ {\def\dostripcharacter##1#1##2\end
+ {\edef\!!strippedstring{\!!strippedstring##1}%
+ \doifnotempty{##2}{\dostripcharacter##2\end}}%
+ \let\!!strippedstring\empty
+ \edef\!!stringa{#2}%
+ \@EA\dostripcharacter\!!stringa#1\end
+ \dodoglobal\let#3\!!strippedstring}
+
+\def\stripspaces\from#1\to#2% will become \unspacestring#1\from#2
+ {\stripcharacter{ }\from#1\to#2}
+
+%D \macros
+%D {unspacestring}
+%D
+%D The next macro does the same but is more compatible with other macros,
+%D like \type {\convert...}.
+
+\def\unspacestring#1\to#2%
+ {\stripcharacter{ }\from#1\to#2}
+
+%D \macros
+%D {executeifdefined}
+%D
+%D \CONTEXT\ uses one auxiliary file for all data concerning
+%D tables of contents, references, two||pass optimizations,
+%D sorted lists etc. This file is loaded as many times as
+%D needed. During such a pass we skip the commands thate are of
+%D no use at that moment. Because we don't want to come into
+%D trouble with undefined auxiliary commands, we call the
+%D macros in a way similar to \type{\getvalue}. The next macro
+%D take care of such executions and when not defined, gobbles
+%D the unwanted arguments.
+%D
+%D \starttyping
+%D \executeifdefined{name}\gobbleoneargument
+%D \stoptyping
+%D
+%D We can of course gobble more arguments using the
+%D appropriate gobbling command.
+
+\newif\ifexecuted % general purpose
+
+\def\executeifdefined#1#2%
+ {\ifundefined{#1}%
+ \def\next{#2}%
+ \else
+ \def\next{\getvalue{#1}}%
+ \fi
+ \next}
+
+%D Just for fun I times the next alternative: it was roughly
+%D timed about 15\% faster than the default (10+ sec to 9 sec)!
+
+\beginTEX
+
+\def\executeifdefined#1% #2 / never change this one again
+ {\ifundefined{#1}%
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi
+ {\csname#1\endcsname}}
+
+\endTEX
+
+\beginETEX
+
+\def\executeifdefined#1% #2 / never change this one again
+ {\ifcsname#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi
+ {\csname#1\endcsname}}
+
+\endETEX
+
+%D This one also has the advantage that it is fully
+%D expandable and that it can be used after an assignment.
+
+%D \macros
+%D {executeifdefinedcs}
+%D
+%D An also fully expandable variant is the following:
+%D
+%D \starttyping
+%D \executeifdefinedcs{a}{b}
+%D \stoptyping
+%D
+%D In dit geval zijn beide argumenten csnames.
+
+\def\executeifdefinedcs#1#2%
+ {\csname\ifundefined{#1}#2\else#1\fi\endcsname}
+
+%D We considered an alternative implementation accepting
+%D commands directly, like:
+%D
+%D \starttyping
+%D \executeifdefined\name\gobblefivearguments
+%D \stoptyping
+%D
+%D For the moment we don't need this one, so we stick to the
+%D faster one.
+
+%D \macros
+%D {executeandforget}
+%D
+%D The following macros were requested by Simon. Watch the
+%D global variant.
+%D
+%D \starttyping
+%D \executeandforget\SomeCommand
+%D \doglobal\executeandforget\AnotherCommand
+%D \stoptyping
+
+\def\executeandforget#1%
+ {\global\let\@@expanded#1%
+ \dodoglobal\let#1\relax
+ \@@expanded}
+
+%D \macros
+%D {doifsomespaceelse}
+%D
+%D The next command checks a string on the presence of a space
+%D and executed a command accordingly.
+%D
+%D \starttyping
+%D \doifsomespaceelse {tekst} {then ...} {else ...}
+%D \stoptyping
+%D
+%D We use this command in \CONTEXT\ for determing if an
+%D argument must be broken into words when made interactive.
+%D Watch the use of \type{\noexpand}.
+
+%D Is this one still needed?
+
+% \long\def\doifsomespaceelse#1#2#3%
+% {\def\p!doifsomespaceelse##1 ##2##3\war%
+% {\if\noexpand##2@#3\else#2\fi}%
+% \p!doifsomespaceelse#1 @ @\war}
+
+\def\p!doifsomespaceelse#1 #2#3\war{\if\noexpand#2@}
+
+\long\def\doifsomespaceelse#1% % #2#3%
+ {\p!doifsomespaceelse#1 @ @\war % #3\else#2\fi}
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+%D \macros
+%D {adaptdimension,balancedimensions}
+%D
+%D Again we introduce some macros that are closely related to
+%D an interface aspect of \CONTEXT. The first command can be
+%D used to adapt a \DIMENSION.
+%D
+%D \starttyping
+%D \adaptdimension {dimension} {value}
+%D \stoptyping
+%D
+%D When the value is preceed by a \type{+} or minus, the
+%D dimension is advanced accordingly, otherwise it gets the
+%D value.
+
+% \def\doadaptdimension#1#2\\#3\\%
+% {\if#1+%
+% \dodoglobal\advance#3 #1#2\relax
+% \else\if#1-%
+% \dodoglobal\advance#3 #1#2\relax
+% \else
+% \dodoglobal#3=#1#2\relax
+% \fi\fi}
+%
+% more fuzzy but also more efficient
+
+\def\doadaptdimension#1#2\\#3\\%
+ {\if#1+%
+ \dodoglobal\advance
+ \else\if#1-%
+ \dodoglobal\advance
+ \else
+ \dodoglobal
+ \fi\fi
+ #3 #1#2\relax}
+
+\def\adaptdimension#1#2%
+ {\expandafter\doadaptdimension#2\\#1\\}
+
+%D A second command takes two \DIMENSIONS. Both are adapted,
+%D depending on the sign of the given value.
+%D maat. This time we take the value as it is, and don't look
+%D explicitly at the preceding sign.
+%D
+%D \starttyping
+%D \balancedimensions {dimension 1} {dimension 2} {value}
+%D \stoptyping
+%D
+%D When a positive value is given, the first dimension is
+%D incremented, the second ond is decremented. A negative value
+%D has the opposite result.
+
+\def\balancedimensions#1#2#3%
+ {\scratchdimen#3\relax
+ \redoglobal\advance#1 \scratchdimen
+ \dodoglobal\advance#2 -\scratchdimen}
+
+%D Both commands can be preceded by \type{\doglobal}. Here we
+%D use \type{\redo} first, because \type{\dodo} resets the
+%D global character.
+
+%D \macros
+%D {processseparatedlist}
+%D
+%D Maybe a bit late, but here is a more general version of the
+%D \type{\processcommalist} command. This time we don't handle
+%D nesting but accept arbitrary seperators.
+%D
+%D \starttyping
+%D \processseparatedlist[list][separator]\command
+%D \stoptyping
+%D
+%D One can think of things like:
+%D
+%D \starttyping
+%D \processseparatedlist[alfa+beta+gamma][+]\message
+%D \stoptyping
+
+%D First we show the simple alternative:
+%D
+%D \starttyping
+%D \def\processseparatedlist[#1][#2]#3%
+%D {\def\doprocessseparatedlist##1##2#2%
+%D {\if]##1%
+%D \let\next=\relax
+%D \else\if]##2%
+%D \let\next=\relax
+%D \else\ifx\blankspace##2%
+%D #3{##1}%
+%D \let\next=\doprocessseparatedlist
+%D \else
+%D #3{##1##2}%
+%D \let\next=\doprocessseparatedlist
+%D \fi\fi\fi
+%D \next}%
+%D \doprocessseparatedlist#1#2]#2}
+%D \stoptyping
+%D
+%D However, we want to handle all situations, like:
+%D
+%D \startbuffer
+%D \processseparatedlist[{aap noot}] [ ]{\def\xxx} \convertcommand\xxx\to\ascii {\tttf\ascii}
+%D \processseparatedlist[{aap} {noot}][ ]{\def\xxx} \convertcommand\xxx\to\ascii {\tttf\ascii}
+%D \processseparatedlist[aap {noot}] [ ]{\def\xxx} \convertcommand\xxx\to\ascii {\tttf\ascii}
+%D \processseparatedlist[aap noot] [ ]{\def\xxx} \convertcommand\xxx\to\ascii {\tttf\ascii}
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+%D
+%D Therefore we smuggle a \type {\relax} in front of the
+%D argument, which we remove afterwards.
+
+\def\doprocessseparatedlist#1]#2[#3]#4%
+ {\def\dodoprocessseparatedlist##1##2#3%
+ {\if]##1%
+ \let\dodoprocessseparatedlist\relax
+ \else\if]##2%
+ \let\dodoprocessseparatedlist\relax
+ \else\ifx\blankspace##2%
+ #4{##1}%
+ \else
+ #4{##1##2}%
+ \fi\fi\fi
+ \dodoprocessseparatedlist}%
+ \@EA\dodoprocessseparatedlist\gobbleoneargument#1#3]#3}
+
+\def\processseparatedlist[%
+ {\doprocessseparatedlist\relax}
+
+%D \macros
+%D {processlist}
+%D
+%D An even more general list processing macro is the
+%D following one:
+%D
+%D \starttyping
+%D \processlist{beginsym}{endsym}{separator}\docommando list
+%D \stoptyping
+%D
+%D This one supports arbitrary open and close symbols as well
+%D as user defined separators.
+%D
+%D \starttyping
+%D \processlist(){=>}\docommando(a=>b=>c=>d)
+%D \stoptyping
+
+\def\processlist#1#2#3#4%
+ {\def\doprocesslist##1#2%
+ {\def\dodoprocesslist####1####2#3%
+ {\ifx#2####1%
+ \let\dodoprocesslist\relax
+ \else\ifx#2####2%
+ \let\dodoprocesslist\relax
+ \else\ifx\blankspace####2%
+ #4{####1}%
+ \else
+ #4{####1####2}%
+ \fi\fi\fi
+ \dodoprocesslist}%
+ \expandafter\dodoprocesslist\gobbleoneargument##1#3#2#3}%
+ \def\dodoprocesslist#1%
+ {\doprocesslist\relax}%
+ \dodoprocesslist}
+
+% %D \macros
+% %D {dohonorgroupedargument}
+% %D
+% %D The previous macro uses yet another auxiliary macro to
+% %D handle the special case.
+%
+% \def\dohonorgroupedargument#1[%
+% {\doifnextcharelse\bgroup{\dodohonorgroupedargument#1}{#1[}}
+%
+% \def\dodohonorgroupedargument#1#2%
+% {#1[{{#2}}}
+
+%D \macros
+%D {processassignlist}
+%D
+%D Is possible to combine an assignment list with one
+%D containing keywords. Assignments are treated accordingly,
+%D keywords are treated by \type{\command}.
+%D
+%D \starttyping
+%D \processassignlist[...=...,...=...,...]\commando
+%D \stoptyping
+%D
+%D This command can be integrated in \type{\getparameters}, but
+%D we decided best not to do so.
+
+\def\processassignlist#1[#2]#3%
+ {\def\p!dodogetparameter[##1=##2=##3]%
+ {\doifnot{##3}\relax{#3{##1}}}%
+ \def\p!dogetparameter##1%
+ {\p!dodogetparameter[##1==\relax]}%
+ \processcommalist[#2]\p!dogetparameter}
+
+% too ugly
+%
+% %D \macros
+% %D {DoAfterFi,DoAfterFiFi}
+% %D
+% %D Sometimes \type{\fi}'s can get into the way. We can reach
+% %D over such a troublemaker with:
+% %D
+% %D \starttyping
+% %D \DoAfterFi{some commands}
+% %D \DoAfterFiFi{some commands}
+% %D \stoptyping
+% %D
+% %D It saves us a \type{\next} construction. Skipping
+% %D \type{\else...\fi} is more tricky, so this one is not
+% %D provided.
+%
+% \def\DoAfterFi#1\fi{\fi#1}
+% \def\DoAfterFiFi#1\fi#2\fi{\fi\fi#1}
+
+%D \macros
+%D {untextargument
+%D untexcommand}
+%D
+%D When manipulating data(bases) and for instance generating
+%D index entries, the next three macros can be of help:
+%D
+%D \starttyping
+%D \untextargument{...}\to\name
+%D \untexcommand {...}\to\name
+%D \stoptyping
+%D
+%D They remove braces and backslashes and give us something to
+%D sort.
+
+\def\untexsomething
+ {\begingroup
+ \catcode`\{=\@@ignore
+ \catcode`\}=\@@ignore
+ \escapechar\minusone
+ \dountexsomething}
+
+\long\def\dountexsomething#1#2\to#3%
+ {\doglobal#1#2\to\untexedargument
+ \endgroup
+ \let#3\untexedargument}
+
+\def\untexargument{\untexsomething\convertargument}
+\def\untexcommand {\untexsomething\convertcommand}
+
+%D \macros
+%D {ScaledPointsToBigPoints,ScaledPointsToWholeBigPoints}
+%D
+%D One characteristic of \POSTSCRIPT\ and \PDF\ is that both
+%D used big points (\TEX's bp). The next macros convert points
+%D and scaled points into big points.
+%D
+%D \starttyping
+%D \ScaledPointsToBigPoints {number} \target
+%D \ScaledPointsToWholeBigPoints {number} \target
+%D \stoptyping
+%D
+%D The magic factor $72/72.27$ can be found in most \TEX\
+%D related books.
+
+% \def\ScaledPointsToBigPoints #1{\PointsToBigPoints {#1sp}}
+% \def\ScaledPointsToWholeBigPoints#1{\PointsToWholeBigPoints{#1sp}}
+%
+% \def\PointsToBigPoints#1#2%
+% {\scratchdimen#1%
+% \scratchdimen.996264\scratchdimen
+% \edef#2{\withoutpt\the\scratchdimen}}
+%
+% \def\PointsToWholeBigPoints#1#2%
+% {\scratchdimen#1%
+% \scratchdimen.996264\scratchdimen
+% \scratchcounter\scratchdimen
+% \advance\scratchcounter \medcard
+% \divide\scratchcounter \maxcard
+% \edef#2{\the\scratchcounter}}
+
+% \PointsToBigPoints{10.53940pt}\test \test
+% \PointsToBigPoints{10.53941pt}\test \test
+% \PointsToBigPoints{10.53942pt}\test \test
+
+% \PointsToWholeBigPoints{10.53940pt}\test \test
+% \PointsToWholeBigPoints{10.53941pt}\test \test
+% \PointsToWholeBigPoints{10.53942pt}\test \test
+
+\beginTEX
+
+ \def\PointsToBigPoints#1#2%
+ {\scratchdimen#1%
+ \scratchdimen.996264\scratchdimen
+ \edef#2{\withoutpt\the\scratchdimen}}
+
+ \def\PointsToWholeBigPoints#1#2%
+ {\scratchdimen#1%
+ \scratchdimen.996264\scratchdimen
+ \scratchcounter\scratchdimen
+ \advance\scratchcounter \medcard
+ \divide\scratchcounter \maxcard
+ \edef#2{\the\scratchcounter}}
+
+\endTEX
+
+\beginETEX \dimexpr \numexpr
+
+% \def\PointsToBigPoints#1#2%
+% {\edef#2{\withoutpt\the\dimexpr(.996264\dimexpr(#1))}}
+
+% \def\PointsToWholeBigPoints#1#2%
+% {\edef#2{\the\numexpr(\numexpr(\dimexpr(.996264\dimexpr(#1)))/\maxcard)}}
+
+ \def\PointsToBigPoints#1#2%
+ {\edef#2{\withoutpt\the\dimexpr.996264\dimexpr#1\relax\relax}}
+
+ \def\PointsToWholeBigPoints#1#2%
+ {\edef#2{\the\numexpr\dimexpr.996264\dimexpr#1\relax\relax/\maxcard\relax}}
+
+\endETEX
+
+\def\ScaledPointsToBigPoints #1{\PointsToBigPoints {\number#1\scaledpoint}}
+\def\ScaledPointsToWholeBigPoints#1{\PointsToWholeBigPoints{\number#1\scaledpoint}}
+
+%D \macros
+%D {PointsToReal}
+%D
+%D Points can be stripped from their suffix by using
+%D \type{\withoutpt}. The next macro enveloppes this macro.
+%D
+%D \starttyping
+%D \PointsToReal {dimension} \target
+%D \stoptyping
+
+\def\PointsToReal#1#2%
+ {\scratchdimen#1%
+ \edef#2{\withoutpt\the\scratchdimen}}
+
+%D \macros
+%D {dontleavehmode}
+%D
+%D Sometimes when we enter a paragraph with some command, the
+%D first token gets the whole first line. We can prevent this
+%D by saying:
+%D
+%D \starttyping
+%D \dontleavehmode
+%D \stoptyping
+%D
+%D This command is used in for instance the language module
+%D \type{lang-ini}. The first version was:
+%D
+%D \starttyping
+%D \def\dontleavehmode{\ifhmode\else\ifmmode\else$ $\fi\fi}
+%D \stoptyping
+%D
+%D Next, Taco came with a better alternative (using mathsurround):
+%D
+%D \starttyping
+%D \def\dontleavehmode
+%D {\ifhmode\else \ifmmode\else
+%D {\mathsurround\zeropoint\everymath\emptytoks$ $}%
+%D \fi \fi}
+%D \stoptyping
+%D
+%D And finaly we got the following alternative, one that avoids
+%D interfering grouping at the cost of a box.
+
+\newbox\@@dlhbox
+
+\unexpanded \def\dontleavehmode
+ {\ifhmode\else \ifmmode\else
+ \setbox\@@dlhbox\hbox{\mathsurround\zeropoint\everymath\emptytoks$ $}\unhbox\@@dlhbox
+ \fi \fi}
+
+%D But, if you run a recent version of \TEX, we can use the new
+%D primitive:
+
+\ifx\normalquitvmode\undefined \else \let\dontleavehmode\normalquitvmode \fi
+
+%D \macros
+%D {uppercasestring,lowercasestring}
+%D
+%D The names tell what they do:
+%D
+%D \starttyping
+%D \uppercasestring somestring\to\somestring
+%D \lowercasestring somestring\to\somestring
+%D \stoptyping
+%D
+%D the first argument may be a \type{\macro}.
+
+\def\uppercasestring#1\to#2% first @EA redundant
+ {\edef#2{#1}\@EA\uppercase\@EA{\@EA\dodoglobal\@EA\edef\@EA#2\@EA{#2}}}
+
+\def\lowercasestring#1\to#2% first @EA redundant
+ {\edef#2{#1}\@EA\lowercase\@EA{\@EA\dodoglobal\@EA\edef\@EA#2\@EA{#2}}}
+
+%D \macros
+%D {handletokens}
+%D
+%D With the next macro we enter a critical area of macro
+%D expansion. What we want is a macro that looks like:
+%D
+%D \starttyping
+%D \handletokens some tokens\with \somemacro
+%D \stoptyping
+%D
+%D At first sight the next implementation will suffice, but
+%D running this one shows that we loose the spaces. This is no
+%D surprise because we grab arguments and spaces preceding those
+%D are just ignored.
+%D
+%D \starttyping
+%D \def\nohandletokens#1\end%
+%D {}
+%D
+%D \def\dohandletokens#1#2\end%
+%D {\ifx#1\endoftoken
+%D \expandafter\nohandletokens
+%D \else
+%D \docommando{#1}%
+%D \expandafter\dohandletokens
+%D \fi
+%D #2\end}
+%D
+%D \long\def\handletokens#1\with#2%
+%D {\let\docommando=#2\relax
+%D \dohandletokens#1\endoftoken\end}
+%D \stoptyping
+%D
+%D A second approach therefore grabs the individual characters
+%D by using \type{\afterassignment}, in which case the space is
+%D read in as space.
+%D
+%D \starttyping
+%D \def\dodohandletokens%
+%D {\ifx\next\end \else
+%D \docommando{\next}%
+%D \expandafter\dohandletokens
+%D \fi}
+%D
+%D \def\dohandletokens
+%D {\afterassignment\dodohandletokens\let\next= }
+%D
+%D \long\def\handletokens#1\with#2%
+%D {\let\docommando=#2%
+%D \dohandletokens#1\end}
+%D \stoptyping
+
+%D A bonus example:
+%D
+%D \starttyping
+%D \hbox{\handletokens tekst en meer tekst\with\ruledhbox}
+%D
+%D \def\weetikveel#1{\if#1\blankspace\space\else\ruledhbox{#1}\fi}
+%D
+%D \hbox{\handletokens tekst en meer tekst\with\weetikveel}
+%D \stoptyping
+
+%D \macros
+%D {counttoken,counttokens}
+%D
+%D For the few occasions that we want to know the number of
+%D specific tokens in a string, we can use:
+%D
+%D \starttyping
+%D \counttoken token\in string\to \count
+%D \counttokens string\to \count
+%D \stoptyping
+%D
+%D This macro, that for instance is used in \type{cont-tab},
+%D takes a real counter. The macro can be preceded by \type
+%D {\doglobal}.
+
+\def\counttoken#1\in#2\to#3%
+ {\redoglobal#3\zerocount
+ \def\!!stringa{#1}%
+ \def\!!stringb{\end}%
+ \def\docounttoken##1% obeys {}
+ {\def\!!stringc{##1}%
+ \ifx\!!stringb\!!stringc \else
+ \ifx\!!stringa\!!stringc
+ \dodoglobal\advance#3 \plusone
+ \fi
+ \expandafter\docounttoken
+ \fi}%
+ \docounttoken#2\end
+ \resetglobal}
+
+% \def\counttoken#1\in#2\to#3%
+% {\redoglobal#3\zerocount
+% \def\!!stringa{#1}%
+% \def\docounttoken##1% obeys {}
+% {\def\!!stringb{##1}%
+% \ifx\!!stringa\!!stringb
+% \dodoglobal\advance#3\plusone
+% \fi}%
+% \handletokens#1\with\docounttoken
+% \resetglobal}
+
+\def\counttokens#1\to#2%
+ {\redoglobal#2\zerocount
+ \def\docounttoken##1{\dodoglobal\advance#2\plusone}%
+ \handletokens#1\with\docounttoken
+ \resetglobal}
+
+%D \macros
+%D {splitofftokens}
+%D
+%D Running this one not always gives the expected results.
+%D Consider for instance the macro for which I originally
+%D wrote this token handler.
+
+\long\def\splitofftokens#1\from#2\to#3%
+ {\ifnum#1>\zerocount
+ \scratchcounter#1\relax
+ \def\dosplitofftokens##1%
+ {\ifnum\scratchcounter>\zerocount
+ \advance\scratchcounter \minusone
+ \edef#3{#3##1}%
+ \fi}%
+ % \let#3\empty % #3 can be #2, so:
+ \@EA\let\@EA#3\@EA\empty
+ \@EA\handletokens#2\with\dosplitofftokens
+ \else
+ \edef#3{#2}%
+ \fi}
+
+%D This macro can be called like:
+%D
+%D \startbuffer[example]
+%D \splitofftokens10\from01234567 890123456789\to\test [\test]
+%D \stopbuffer
+%D
+%D However, the characters that we expect to find in
+%D \type{\test} just don;t show up there. The reason for this
+%D is not that logical but follows from \TEX's sometimes
+%D mysterious way of expanding. Look at this:
+%D
+%D \startbuffer[next]
+%D \def\next{a} \edef\test{\next} [\test]
+%D \let\next=b \edef\test{\test\next} [\test]
+%D \let\next=c \edef\test{\next} [\test]
+%D \let\next=d \edef\test{\test\next} [\test]
+%D \let\next=e \@EA\edef\@EA\test\@EA{\test\next} [\test]
+%D \stopbuffer
+%D
+%D \typebuffer[next]
+%D
+%D Careful reading shows that inside an \type{\edef} macro's
+%D that are \type{\let} are not expanded!
+%D
+%D \unprotect\getbuffer[next]\protect
+%D
+%D That's why we finally end up with a macro that looks
+%D ahead by using an assignment, this time by using \type
+%D {\futurelet}, and grabbing an argument as well. That
+%D way we can handle the sentinal, a blank space and grouped
+%D tokens.
+
+\def\dohandletokens % \nexthandledtoken is part of interface
+ {\futurelet\nexthandledtoken\dodohandletokens}
+
+\long\def\handletokens#1\with#2%
+ {\gdef\dododohandletokens{#2}% permits more complex #2's
+ \dohandletokens#1\end}
+
+%D A previous version said \type{\docommando=#2}, but to enable
+%D use in alignments, I decided to use another placeholder, one
+%D that is not sensitive to the global assignment.
+
+%D This alternatives does not handle grouped tokens well, so
+%D next we had (for a short moment):
+%D
+%D \starttyping
+%D \def\dodohandletokens#1%
+%D {\ifx\nexthandledtoken\blankspace
+%D \dododohandletokens{ }%
+%D \fi
+%D \ifx#1\end \else
+%D \dododohandletokens{#1}%
+%D \expandafter\dohandletokens
+%D \fi}
+%D \stoptyping
+%D
+%D This one failed on a trailing space, something we
+%D encounter in \JAVASCRIPT\ cleaning.
+%D
+%D \starttyping
+%D \def\dodohandletokens#1%
+%D {\ifx\nexthandledtoken\blankspace
+%D \dododohandletokens{ }%
+%D \fi
+%D \ifx\nexthandledtoken\end \else
+%D \dododohandletokens{#1}%
+%D \expandafter\dohandletokens
+%D \fi}
+%D \stoptyping
+%D
+%D So, now we have:
+
+\def\dodohandletokens % can be sped up
+ {\ifx\nexthandledtoken\blankspace
+ \def\next * {\dododohandletokens{ }\dohandletokens}%
+ \else\ifx\nexthandledtoken\end
+ \let\next\gobbletwoarguments
+ \else
+ \long\def\next *##1{\dododohandletokens{##1}\dohandletokens}%
+ \fi\fi
+ \next *}
+
+%D This macro is tested on:
+%D
+%D \def\xxx#1{[#1]}
+%D
+%D \startlines
+%D \handletokens abc\with\xxx
+%D \handletokens a b c\with\xxx
+%D \handletokens a b c\with\xxx
+%D \handletokens a{bc}d\with\xxx
+%D \handletokens a\space bc \with\xxx
+%D \stoplines
+%D
+%D And our previous example shows up as:
+%D
+%D \getbuffer[example]
+
+%D \macros
+%D {iftrialtypesetting}
+%D
+%D The next boolean is at first sight a strange one. Sometimes
+%D one does a trial typesetting run, for instance to determine
+%D dimensions. Some mechanisms, like object inclusion, can fail
+%D on such trials. Temporary setting the next boolean to true,
+%D helps a lot.
+
+\newif\iftrialtypesetting
+
+%D \macros
+%D {startlocal, startglobal}
+%D
+%D The next four macros are rather self explaining:
+%D
+%D \starttyping
+%D \startlocal
+%D whatever assignments
+%D \stoplocal
+%D
+%D \startglobal
+%D whatever assignments
+%D \stopglobal
+%D \stoptyping
+%D
+%D These macros are meant for those who know the difference
+%D between local and global assignments and are aware of the
+%D possible unwanted side effect
+
+\def\dostartglobaldefs#1#2%
+ {\edef\!!stringa{\the\globaldefs}%
+ \ifnum\globaldefs#10
+ \globaldefs-\globaldefs
+ \fi
+ \advance\globaldefs#21
+ \letvalue{@gd@\the\globaldefs}\!!stringa}
+
+\def\dostopglobaldefs%
+ {\doifdefinedelse{@gd@\the\globaldefs}
+ {\globaldefs\getvalue{@gd@\the\globaldefs}\relax}
+ {\globaldefs\zerocount}}
+
+\def\startlocal {\dostartglobaldefs>-}
+\def\stoplocal {\dostopglobaldefs}
+\def\startglobal {\dostartglobaldefs<+}
+\def\stopglobal {\dostopglobaldefs}
+
+%D \macros
+%D {twodigitrounding}
+%D
+%D When using \type {\special}s or \type {\pdfliteral}s, it
+%D sometimes makes sense to limit the precission. The next
+%D macro rounds a real number to two digits. It takes one
+%D argument and only works in \ETEX.
+
+\beginTEX
+
+ \def\twodigitrounding#1{#1}
+
+\endTEX
+
+\beginETEX \dimexpr
+
+ \def\dotwodigitrounding#1.#2#3#4\relax%
+ {\ifx#2*#1\else#1.#2#3\fi}
+
+ % \def\twodigitrounding#1%
+ % {\@EA\@EA\@EA\dotwodigitrounding\@EA\WITHOUTPT
+ % \the\dimexpr#1pt+.005pt\relax000.*00\relax}
+
+ \def\twodigitrounding#1%
+ {\@EA\@EA\@EA\dotwodigitrounding\@EA\WITHOUTPT
+ \the\dimexpr#1\points+.005\points\relax000.*00\relax}
+
+\endETEX
+
+%D \macros
+%D {processcontent}
+%D
+%D This is the first occasion where \TEX\ and \ETEX\ are no
+%D longer compatible, although in many cases things go ok.
+%D Beware of verbatim, i.e. catcode changes.
+%D
+%D \starttyping
+%D \def\starthans%
+%D {\processcontent{stophans}\test{\message{\test}\wait}}
+%D \stoptyping
+%D
+%D This macro is first used in the tabulation macros.
+
+\def\processcontent#1%
+ {\begingroup\@EA\doprocesscontent\csname#1\endcsname}
+
+%\beginTEX
+
+\def\doprocesscontent#1#2#3%
+ {\long\def\doprocesscontent##1#1%
+ {\endgroup\long\def#2{##1}#3}%
+ \doprocesscontent}
+
+%\endTEX
+
+% Hm. Side effect, spaces after \type{\test} in verbatim.
+% must set eof token
+
+%\beginETEX \scantokens
+%
+%\def\doprocesscontent#1#2#3%
+% {\long\def\doprocesscontent##1#1%
+% {\egroup\long\def#2{\scantokens{##1}}#3}%
+% \doprocesscontent}
+%
+%\endETEX
+
+%D \macros
+%D {dogobblesingleempty, dogobbledoubleempty}
+%D
+%D These two macros savely grab and dispose two arguments.
+
+\def\dogobblesingleempty{\dosingleempty\dodogobblesingleempty}
+\def\dogobbledoubleempty{\dodoubleempty\dodogobbledoubleempty}
+
+\def\dodogobblesingleempty [#1]{}
+\def\dodogobbledoubleempty[#1][#2]{}
+
+\let\gobblesingleempty\dogobblesingleempty % also used
+\let\gobbledoubleempty\dogobbledoubleempty % also used
+
+%D \macros
+%D {sortcommalist,sortcommacommand,
+%D donumericcompare,comparedresult}
+%D
+%D Sometimes we need to sort a commalist, so here is Taco's
+%D solution. This will in many cases be a list that is stored
+%D in a \type{\csname}, so both commalist and commacommands are
+%D supported. The sorting algorithm is very simple, so the list
+%D should not be too long or sorting will be very slow.
+%D
+%D \starttyping
+%D \sortcommalist[10,2,4,5,6,1,2,3,4,10,20]\donumericcompare
+%D
+%D \def\test{10,2,4,5,6,1,2,3,4,10,20}
+%D
+%D \sortcommacommand[\test]\donumericcompare
+%D \stoptyping
+%D
+%D In both cases, the result is available in the macro \type
+%D {\sortedcommalist}.
+%D
+%D Parameter \type{#2} is a macro that should accept two
+%D parameters, and it has to decide which one is larger, by
+%D setting the counter \type{\comparedresult} to~0 (for equal),
+%D 1~(if it's first argument is larger), or~2 (if it's second
+%D argument is larger).
+%D
+%D As said, these macro are largely written by Taco, and are
+%D (maybe therefore) also the first application of \type
+%D {\replaceincommalist}.
+
+\newcount\comparedresult
+
+\def\sortcommacommand[#1]%
+ {\@EA\sortcommalist\@EA[#1]}
+
+\def\sortcommalist[#1]#2%
+ {\getcommalistsize[#1]%
+ \ifnum\commalistsize>1
+ \let\sortedcommalist\empty
+ \let\comparecommand#2%
+ \processcommalist[#1]\dosortcommacommand
+ \else
+ \def\sortedcommalist{#1}%
+ \fi}
+
+\def\dosortcommacommand#1%
+ {\ifx\sortedcommalist\empty
+ \def\sortedcommalist{#1}%
+ \else
+ \def\!!tempa{#1}%
+ \ifx\!!tempa\empty\else
+ \scratchcounter\plusone
+ \@EA\getcommalistsize\@EA[\sortedcommalist]%
+ \@EA\processcommalist\@EA[\sortedcommalist]\docompareitems
+ \fi
+ \fi}
+
+%D All those \type{\expandafter}'s are there because I do not
+%D want to use \type{\edef}.
+
+\def\docompareitems#1%
+ {\doifnotempty{#1}
+ {\@EA\comparecommand\@EA{\!!tempa}{#1}\relax
+ %\ifcase\compareresult % equal
+ \ifnum\comparedresult<2
+ \ifnum\scratchcounter=\commalistsize
+ \@EA\@EA\@EA\def\@EA\@EA\@EA\sortedcommalist
+ \@EA\@EA\@EA{\@EA\sortedcommalist\@EA,\!!tempa}%
+ \fi
+ %\or % new element larger
+ % \ifnum\scratchcounter=\commalistsize
+ % \@EA\@EA\@EA\def\@EA\@EA\@EA\sortedcommalist
+ % \@EA\@EA\@EA{\@EA\sortedcommalist\@EA,\!!tempa}%
+ % \fi
+ \else % old element larger
+ \@EA\def\@EA\newcommalistelement\@EA{\!!tempa,#1}%
+ \replaceincommalist\sortedcommalist\scratchcounter
+ \expandafter\quitcommalist
+ \fi}%
+ \advance\scratchcounter \plusone} % bug, was \minusone
+
+%D The macro \type{\donumericcompare} considers everything
+%D that is not a number to be larger than any number.
+
+\def\donumericcompare#1#2%
+ {\doifnumberelse{#1}
+ {\doifnumberelse{#2}
+ {\ifnum#1>#2\relax
+ \comparedresult\plusone % #1 is larger
+ \else\ifnum#1<#2\relax
+ \comparedresult\plustwo % #2 is larger
+ \else
+ \comparedresult\zerocount % both are equal
+ \fi\fi}
+ {\comparedresult\plustwo}}
+ {\comparedresult\plusone}}
+
+%D \macros
+%D {@saveprimitive}
+%D
+%D The next definition originates in the \type {amsgen} package. In
+%D case some preceding package redefined a primitive that we also
+%D want to redefine, we had better do some checking to make sure
+%D that we are able to save the primitive meaning for internal use.
+%D Primitive control sequences can be distinguished by the fact that
+%D \type {\string} and \type {\meaning} return the same information.
+
+\def\@saveprimitive#1#2%
+ {\begingroup
+ \edef\@tempa{\string#1}%
+ \edef\@tempb{\meaning#1}%
+ \ifx\@tempa\@tempb
+ \global\let#2#1%
+ %\debuggerinfo{prim}{Saving \string#1 as \string#2}%
+ \else
+ \edef\@tempb{\meaning#2}%
+ %\ifx\@tempa\@tempb
+ % \debuggerinfo{prim}{Saving \string#1 as \string#2}%
+ %\else
+ % \debuggerinfo{prim}{Can't define \string#2 properly;
+ % primitive \noexpand#1 is no longer primitive}%
+ %\fi
+ \fi
+ \endgroup}
+
+\def\saveprimitive#1%
+ {\begingroup
+ \@EA\edef\@EA\@tempa\@EA{\@EA\gobbleoneargument\string#1}%
+ \@EA\let\csname normal\@tempa\endcsname\relax
+ \@EA\@saveprimitive\@EA#1\csname normal\@tempa\endcsname
+ \endgroup }
+
+%D In this macro, the message only shows up when the debugging
+%D is turned on.
+
+%D \macros
+%D {@True, @False, @Not, @And}
+%D
+%D Some predicate logic functions, used in for instance the
+%D math module.
+
+\def\@True {00}
+\def\@False {01}
+\def\@Not #1{0\ifcase#11 \or\@EA 1\else \@EA 0\fi}
+\def\@And #1#2{0\ifcase#1#2 \@EA 0\else \@EA 1\fi}
+
+%D \macros
+%D {setdimensionwithunit, freezedimensionwithunit}
+%D
+%D The next assignments are all valid:
+%D
+%D \starttyping
+%D \setdimensionwithunit\scratchdimen{10} {cm}
+%D \setdimensionwithunit\scratchdimen{10cm}{cm}
+%D \setdimensionwithunit\scratchdimen{10cm}{}
+%D \freezedimensionwithunit\SomeWidth{\textwidth}
+%D \freezedimensionwithunit\SomeDepth{\dp\strutbox}
+%D \stoptyping
+%D
+%D As an alternative for the next macro we can use a global
+%D assignment inside a box. The \type{\empty}'s permits
+%D gobbling while preventing spurious \type{\relax}'s.
+
+\def\setdimensionwithunit#1#2#3% number unit dimension / nice trick
+ {\afterassignment\gobblefourarguments#1=#2#3pt\relax\empty\empty\empty\empty}
+
+\def\freezedimensionwithunit#1#2%
+ {\setdimensionwithunit\scratchdimen#1{#2}\edef#1{\the\scratchdimen}}
+
+%D \macros
+%D {doifsometokselse}
+%D
+%D Not that fast I guess, but here's a way to test for token
+%D registers being empty.
+
+\def\doifsometokselse#1% % #2#3%
+ {\edef\!!stringa{\the#1}%
+ \ifx\!!stringa\empty % #3\else#2\fi}
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+%D \macros
+%D {startstrictinspectnextcharacter}
+%D
+%D This one if for Taco's bibliography module:
+
+\let\normalinspectnextcharacter\inspectnextcharacter
+
+\def\strictinspectnextcharacter% no user macro !
+ {\ifx\nexttoken\charactertoken
+ \expandafter\!!stringa
+ \else
+ \expandafter\!!stringb
+ \fi}
+
+% better: push/pop
+
+\def\startstrictinspectnextcharacter
+ {\let\inspectnextcharacter\strictinspectnextcharacter}
+
+\def\stopstrictinspectnextcharacter
+ {\let\inspectnextcharacter\normalinspectnextcharacter}
+
+%D \macros
+%D {gobblespacetokens}
+%D
+%D This macro needs a speed-up!
+
+%\def\gobblespacetokens
+% {\doifnextcharelse\empty\donothing\donothing} % no {}\do\do !
+
+\def\gobblespacetokens
+ {\afterassignment\nexttoken\let\nexttoken=}
+
+%D \macros
+%D {verbatimargument}
+%D
+%D As the name says, this macro converts its argument to a
+%D (rather safe) string.
+
+\def\verbatimstring#1%
+ {\convertargument#1\to\ascii\ascii}
+
+%D These are needed in ordinal number conversions:
+
+\def\lastdigit#1%
+ {\@EA\thelastdigit\number#1\relax}
+
+\def\thelastdigit#1#2%
+ {\ifx#2\relax#1\else\@EA\thelastdigit\@EA#2\fi}
+
+\def\lasttwodigits#1%
+ {\@EA\thelasttwodigits\@EA0\number#1\relax}
+
+\def\thelasttwodigits#1#2#3% 0 dig ... \relax
+ {\ifx#3\relax#1#2\else\@EA\thelasttwodigits\@EA#2\@EA#3\fi}
+
+%D \macros
+%D {serializecommalist}
+%D
+%D Concatenate commalists:
+
+\def\serializecommalist[#1]%
+ {\let\serializedcommalist\empty
+ \def\docommando##1{\edef\serializedcommalist{\serializedcommalist##1}}%
+ \processcommacommand[#1]\docommando}
+
+%D \macros
+%D {purenumber}
+%D
+%D Sometimes we need control over when \TEX\ stops reading a
+%D number, especially in full expandable macros where using
+%D \type {\relax} would lead to disasters.
+%D
+%D \starttyping
+%D \ifodd\purenumber{...}\space ... \else ... \fi
+%D \stoptyping
+%D
+%D Here we use a space as number delimiter in combination
+%D with a space- and relax-less \type {\purenumber}. This
+%D macro works ok with \type {\the}, \type {\number} as well
+%D as \ETEX's \type {\numexpr}.
+
+\def\purenumber#1{\@EA\firstofoneargument\@EA{\number#1}}
+
+%D \macros
+%D {filterfromvalue}
+%D
+%D \starttyping
+%D \setvalue{xx}{{A}{B}{C}}
+%D
+%D \filterfromvalue{xx}{3}{3}
+%D \filterfromvalue{xx}{3}{2}
+%D \filterfromvalue{xx}{3}{1}
+%D \stoptyping
+%D
+%D An alternative is to store 'max' in the list, say:
+%D
+%D \starttyping
+%D \setvalue{xx}{3{A}{B}{C}}
+%D
+%D \filterfromvalues{3}{xx}{3}
+%D \filterfromvalues{3}{xx}{2}
+%D \filterfromvalues{3}{xx}{1}
+%D \stoptyping
+%D
+%D I'll implement this when I'm in \quotation {writing dirty
+%D macros mood}.
+
+\def\filterfromvalue#1#2#3% value max n
+ {\@EA\@EAEAEA\csname % we use the fact that an
+ \@EA\ifx\csname#1\endcsname\relax % undefined cs has become \relax
+ \strippedcsname\gobbleoneargument % which we then gobble here
+ \else
+ \ifcase#2\or
+ \ifcase#3\or
+ \strippedcsname\firstofoneargument
+ \else
+ \strippedcsname\gobbleoneargument
+ \fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstoftwoarguments
+ \or
+ \strippedcsname\secondoftwoarguments
+ \else
+ \strippedcsname\gobbletwoarguments
+ \fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstofthreearguments
+ \or
+ \strippedcsname\secondofthreearguments
+ \or
+ \strippedcsname\thirdofthreearguments
+ \else
+ \strippedcsname\gobblethreearguments
+ \fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstoffourarguments
+ \or
+ \strippedcsname\secondoffourarguments
+ \or
+ \strippedcsname\thirdoffourarguments
+ \or
+ \strippedcsname\fourthoffourarguments
+ \else
+ \strippedcsname\gobblefourarguments
+ \fi
+ \or
+ \ifcase#3\or
+ \strippedcsname\firstoffivearguments
+ \or
+ \strippedcsname\secondoffivearguments
+ \or
+ \strippedcsname\thirdoffivearguments
+ \or
+ \strippedcsname\fourthoffivearguments
+ \or
+ \strippedcsname\fifthoffivearguments
+ \else
+ \strippedcsname\gobblefivearguments
+ \fi
+ \fi
+ \fi
+ \endcsname\csname#1\endcsname}
+
+%D \macros
+%D {definemeasure}
+%D
+%D \starttyping
+%D \definemeasure[mywidth][\dimexpr(\textwidth-1cm)]
+%D
+%D ... \measure{mywidth} ...
+%D \stoptyping
+
+\def\??dm{@@dm} % brrr
+
+\def\definemeasure
+ {\dodoubleargument\dodefinemeasure}
+
+\def\dodefinemeasure[#1][#2]%
+ {\setvalue{\??dm#1}{#2}}
+
+% #2 could be omitted, but we want to support spaces
+%
+% \setmeasure {x} {1cm}
+% \setmeasure {xx} {1cm}
+% \setmeasure {xxx}{1cm}
+
+\def\setmeasure #1#2{\setvalue{\??dm#1}{#2}} % quick way
+\def\setemeasure#1#2{\setevalue{\??dm#1}{#2}} % quick way
+\def\setgmeasure#1#2{\setgvalue{\??dm#1}{#2}} % quick way
+\def\setxmeasure#1#2{\setxvalue{\??dm#1}{#2}} % quick way
+
+\def\measure#1%
+ {\ifcsname\??dm#1\endcsname\csname\??dm#1\endcsname\else\zeropoint\fi}
+
+%D \macros
+%D {doifdimensionelse}
+%D
+%D This is a dirty one: we simply append a unit and discard it when needed.
+
+\def\doifdimensionelse#1%
+ {\afterassignment\dodoifdimensionelse\scratchdimen#1pt\relax}
+
+\def\dodoifdimensionelse#1%
+ {\ifx#1\relax
+ \expandafter\secondoftwoarguments
+ \else % #1=p ... t\relax
+ \expandafter\thirdoffourarguments
+ \fi}
+
+%D \macros
+%D {comparedimension,comparedimensioneps}
+%D
+%D This is a dirty one: we simply append a unit and discard it when needed.
+
+\newdimen\roundingeps \roundingeps=10sp
+
+\def\comparedimension#1#2%
+ {\chardef\compresult
+ \ifdim#1<#2%
+ \zerocount
+ \else\ifdim#1<#2%
+ \plusone
+ \else
+ \plustwo
+ \fi\fi}
+
+\beginETEX
+
+\def\comparedimensioneps#1#2%
+ {\chardef\compresult
+ \ifdim\dimexpr(#1-#2)<\roudingeps
+ \zerocount
+ \else\ifdim\dimexpr(#2-#1)<\roudingeps
+ \zerocount
+ \else\ifdim#1<#2%
+ \plusone
+ \else
+ \plustwo
+ \fi\fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\newdimen\comparedimen
+
+\def\comparedimensioneps#1#2%
+ {\comparedimen#1\advance\comparedimen-#2\relax
+ \chardef\compresult
+ \ifdim\comparedimen<\roudingeps
+ \zerocount
+ \else\ifdim-\comparedimen<\roudingeps
+ \zerocount
+ \else\ifdim#1<#2%
+ \plusone
+ \else
+ \plustwo
+ \fi\fi\fi}
+
+\endTEX
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-gen.tex b/Master/texmf-dist/tex/context/base/syst-gen.tex
new file mode 100644
index 00000000000..25e5390afd1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-gen.tex
@@ -0,0 +1,4416 @@
+%D \module
+%D [ file=syst-gen,
+%D version=1996.03.20,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=General,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% nagaan : \ifinstringelse in syst-ext.tex
+% do => p! dodo pp! dododo ppp!
+
+%D The following macros are responsible for the interaction
+%D with \CONTEXT. These macros have proven their use. These
+%D macros are optimized as far as possible within of course,
+%D the know how of the author.
+%D
+%D In this module we also show some of the optimizations,
+%D mainly because we don't want to forget them and start doing
+%D things over and over again. If showing them has a learing
+%D effect for others too, we've surved another purpose too.
+
+%D \macros
+%D {abortinputifdefined}
+%D
+%D Because this module can be used in a different context, we
+%D want to prevent it being loaded more than once. This can be
+%D done using:
+%D
+%D \starttyping
+%D \abortinputifdefined\command
+%D \stoptyping
+%D
+%D where \type{\command} is a command defined in the module
+%D to be loaded only once.
+%D
+%D \starttyping
+%D \def\abortinputifdefined#1%
+%D {\ifx#1\undefined
+%D \let\next=\relax
+%D \else
+%D \let\next=\endinput
+%D \fi
+%D \next}
+%D \stoptyping
+%D
+%D This macro can be speed up in terms of speed as well as
+%D memory. Because this is a nice example of a bit strange
+%D command (\type{\endinput}), we spend some more lines on this.
+%D
+%D If we perform such actions directly, we can say:
+%D
+%D \starttyping
+%D \ifx\somecommand\undefined
+%D \let\next=\relax
+%D \else
+%D \let\next=\endinput
+%D \fi
+%D \next
+%D \stoptyping
+%D
+%D We need the \type{\next} because we need to end the
+%D \type{\fi}. The efficient one is:
+%D
+%D \starttyping
+%D \ifx\somecommand\undefined
+%D \else
+%D \expandafter\endinput
+%D \fi
+%D \stoptyping
+%D
+%D Because \type{\endinput} comes into action after the current
+%D line, we can also say:
+%D
+%D \starttyping
+%D \ifx\somecommand\undefined \else \endinput \fi
+%D \stoptyping
+%D
+%D When we define a macro, we tend to use a format which
+%D shows as besat as can how things are done. \TEX\ however
+%D stores the definitions as a sequence of tokens, so in fact
+%D we can use a formatted definition:
+
+\def\abortinputifdefined#1%
+ {\ifx#1\undefined \else
+ \endinput
+ \fi}
+
+%D which also works. Keep in mind that this is entirely due to
+%D the fact that \type{\endinput} after the line, i.e. at the
+%D end of the macro. We therefore can burry this primitive quite
+%D deep in code.
+
+%D And because this module implements \type{\writestatus}, we
+%D just say:
+
+\abortinputifdefined\writestatus
+
+%D Normally we tell the users what module is being loaded.
+%D However, the command that is needed for this is not yet
+%D defined.
+%D
+%D \starttyping
+%D \writestatus{laden}{Context Systeem Macro's (a)}
+%D \stoptyping
+
+%D The next few macros are needed in case this module is
+%D used outside \CONTEXT.
+
+\ifx\beginTEX\undefined
+ \let\beginTEX\relax\let\endTEX\relax
+ \long\def\beginETEX #1\endETEX {}
+ \long\def\beginOMEGA #1\endOMEGA{}
+% \long\def\onlyTEX #1{#1}
+% \long\def\onlyETEX #1{}
+% \long\def\onlyOMEGA#1{}
+\fi
+
+%D \macros
+%D [protecting]
+%D {protect,unprotect}
+%D
+%D We can shield macros from users by using some special
+%D characters in their names. Some characters that are normally
+%D no letters and therefore often used are: \type{@}, \type{!}
+%D and \type{?}. Before and after the definition of protected
+%D macros, we have to change the \CATCODE\ of these characters.
+%D This is done by \type{\unprotect} and \type{\protect}, for
+%D instance:
+%D
+%D \starttyping
+%D \unprotect
+%D \def\!test{test}
+%D \protect
+%D \stoptyping
+%D
+%D The defined command \type{\!test} can of course only be
+%D called upon when we are in the \type{\unprotect}'ed state,
+%D otherwise \TEX\ reads \type{\!} and probably complains
+%D loudly about not being in math mode.
+%D
+%D Both commands can be used nested, but only the \CATCODE\
+%D of the outermost level is saved. We make use of
+%D an auxilary macro \type{\doprotect} to prevent us from
+%D conflicts with existing macro's \type{\protect}. When
+%D nesting deeper than one level, the system shows the
+%D protection level.
+
+\newcount\protectionlevel
+
+\ifx\protect\undefined
+ \def\protect{\message{<too much protection>}}
+\else
+ % a simple version is already defined
+\fi
+
+\let\normalprotect\protect % only for latex
+
+%D Although we don't need the \type{%} after commands that
+%D don't take arguments, unless lines are obeyed, I decided
+%D to put it there as a reminder. I only mention this once.
+
+\chardef\protectionthreshold=10
+%chardef\protectionthreshold=0 % for testing
+
+% \def\unprotect
+% {\ifcase\protectionlevel
+% \edef\doprotectcharacters%
+% {\catcode`\noexpand @=\the\catcode`@
+% \catcode`\noexpand !=\the\catcode`!
+% \catcode`\noexpand ?=\the\catcode`? }%
+% \let\protect\doprotect
+% \fi
+% \catcode`@=11
+% \catcode`!=11
+% \catcode`?=11
+% \advance\protectionlevel 1
+% \ifnum\protectionlevel>\protectionthreshold
+% \message{<unprotect \the\protectionlevel>}%
+% \fi}
+%
+% \def\doprotect%
+% {\ifnum\protectionlevel=1
+% \doprotectcharacters
+% \let\doprotectcharacters\relax
+% \let\protect\normalprotect
+% \fi
+% \ifnum\protectionlevel>\protectionthreshold
+% \message{<protect \the\protectionlevel>}%
+% \fi
+% \advance\protectionlevel -1 }
+
+\def\saveprotectedcharacters
+ {\edef\doprotectcharacters
+ {\catcode`\noexpand @\the\catcode`@
+ \catcode`\noexpand !\the\catcode`!
+ \catcode`\noexpand ?\the\catcode`? }}
+
+\def\setprotectedcharacters
+ {\catcode`@=11
+ \catcode`!=11
+ \catcode`?=11 }
+
+\def\unprotect
+ {\ifcase\protectionlevel
+ \saveprotectedcharacters
+ \let\protect\doprotect
+ \fi
+ \setprotectedcharacters
+ \advance\protectionlevel 1
+ \ifnum\protectionlevel>\protectionthreshold
+ \reportunprotection
+ \fi}
+
+\def\doprotect
+ {\ifcase\protectionlevel\or
+ \doprotectcharacters
+ \let\doprotectcharacters\relax
+ \let\protect\normalprotect
+ \fi
+ \ifnum\protectionlevel>\protectionthreshold
+ \reportprotection
+ \fi
+ \advance\protectionlevel -1 }
+
+\def\reportunprotection {\message{<unprotect \protectionstate>}}
+\def\reportprotection {\message{<protect \protectionstate>}}
+\def\reportprotectionstate{\message{<protectionstate \protectionstate>}}
+
+\def\protectionstate
+ {\the\protectionlevel
+ \ifcase\protectionthreshold
+ :\space
+ @=\the\catcode`@\space\space
+ !=\the\catcode`!\space\space
+ ?=\the\catcode`?%
+ \fi}
+
+\ifx\everyeof\undefined
+
+ \let\checkprotection\relax
+
+\else
+
+ \def\checkprotection
+ {\everyeof{\writestatus{protection}{state: \protectionstate}}}
+
+\fi
+
+%D Now it is defined, we can make use of this very useful
+%D macro.
+
+\unprotect
+
+%D So, now we can redefine a previously defined macro as
+%D follows:
+
+\def\setprotectedcharacters
+ {\catcode`@\@@letter
+ \catcode`!\@@letter
+ \catcode`?\@@letter}
+
+%D \macros
+%D {@@escape,@@begingroup,@@endgroup,@@mathshift,@@alignment,
+%D @@endofline,@@parameter,@@superscript,@@subscript,
+%D @@ignore,@@space,@@letter,@@other,@@active,@@comment}
+%D
+%D In \CONTEXT\ we sometimes manipulate the \CATCODES\ of
+%D certain characters. Because we are not that good at numbers,
+%D we introduce some symbolic names.
+
+\chardef\@@escape = 0
+\chardef\@@begingroup = 1
+\chardef\@@endgroup = 2
+\chardef\@@mathshift = 3
+\chardef\@@alignment = 4
+\chardef\@@endofline = 5
+\chardef\@@parameter = 6
+\chardef\@@superscript = 7
+\chardef\@@subscript = 8
+\chardef\@@ignore = 9
+\chardef\@@space = 10
+\chardef\@@letter = 11
+\chardef\@@other = 12 \chardef\other = 12
+\chardef\@@active = 13 \chardef\active = 13
+\chardef\@@comment = 14
+
+%D \macros
+%D {normalspace}
+%D
+%D We often need a space as defined in \PLAIN\ \TEX. Because
+%D we cannot be sure of \type{\space} is redefined, we define:
+
+\def\normalspace{ }
+
+%D \macros
+%D {scratchcounter,
+%D scratchdimen,scratchskip,scratchmuskip,
+%D scratchbox,
+%D scratchtoks,
+%D ifdone}
+%D
+%D Because we often need counters on a temporary basis, we
+%D define the \COUNTER\ \type{\scratchcounter}. This is a
+%D real \COUNTER, and not a pseudo one, as we will meet
+%D further on. We also define some other scratch registers.
+
+\newcount \scratchcounter
+\newdimen \scratchdimen
+\newskip \scratchskip
+\newmuskip \scratchmuskip
+\newbox \scratchbox
+\newtoks \scratchtoks
+\newif \ifdone
+
+%D \macros
+%D {ifCONTEXT}
+%D
+%D In the system and support modules we sometimes show examples
+%D that make use of core commands. We can skip those parts of
+%D the documentation when we use another macropackage. Of
+%D course we default to false.
+
+\newif \ifCONTEXT
+
+%D \macros
+%D {!!count, !!toks, !!dimen, !!box,
+%D !!width, !!height, !!depth, !!string, !!done}
+%D
+%D We define some more \COUNTERS\ and \DIMENSIONS. We also
+%D define some shortcuts to the local scatchregisters~0, 2, 4,
+%D 6 and~8.
+
+\newcount\!!counta \toksdef\!!toksa=0 \dimendef\!!dimena= 0 \chardef\!!boxa =0
+\newcount\!!countb \toksdef\!!toksb=2 \dimendef\!!dimenb= 2 \chardef\!!boxb =2
+\newcount\!!countc \toksdef\!!toksc=4 \dimendef\!!dimenc= 4 \chardef\!!boxc =4
+\newcount\!!countd \toksdef\!!toksd=6 \dimendef\!!dimend= 6 \chardef\!!boxd =6
+\newcount\!!counte \toksdef\!!tokse=8 \dimendef\!!dimene= 8 \chardef\!!boxe =8
+\newcount\!!countf \dimendef\!!dimenf=10 %skipdef\!!skipa=0
+ \dimendef\!!dimeng=12 %skipdef\!!skipb=2
+ \dimendef\!!dimenh=14 %skipdef\!!skipc=4
+ \dimendef\!!dimeni=16 %skipdef\!!skipd=6
+ \dimendef\!!dimenj=18 %skipdef\!!skipe=8
+
+\let\!!stringa=\empty \let\!!stringb=\empty \let\!!stringc=\empty
+\let\!!stringd=\empty \let\!!stringe=\empty \let\!!stringf=\empty
+
+\newdimen\!!widtha \newdimen\!!heighta \newdimen\!!deptha
+\newdimen\!!widthb \newdimen\!!heightb \newdimen\!!depthb
+\newdimen\!!widthc \newdimen\!!heightc \newdimen\!!depthc
+
+\newif\if!!donea \newif\if!!doneb \newif\if!!donec
+\newif\if!!doned \newif\if!!donee \newif\if!!donef
+
+\ifx \z@\undefined \else \let\zeropoint\z@ \fi
+\ifx \@ne\undefined \else \let\plusone \@ne \fi
+\ifx\m@ne\undefined \else \let\minusone \m@ne \fi
+
+\ifx\zeropoint\undefined \csname newdimen\endcsname\zeropoint \fi % plain
+\ifx\plusone \undefined \chardef\plusone =1 \fi
+\ifx\plustwo \undefined \chardef\plustwo =2 \fi
+\ifx\plusthree\undefined \chardef\plusthree=3 \fi
+\ifx\plusfour \undefined \chardef\plusfour =4 \fi
+\ifx\plusfive \undefined \chardef\plusfive =5 \fi
+\ifx\minusone \undefined \count\minusone \minusone=-1 \fi
+
+\ifx\@m\undefined \else \let\plusthousand \@m \fi
+\ifx\@M\undefined \else \let\plusttenhousand\@M \fi
+
+\ifx\plusten \undefined \mathchardef\plusten = 10 \fi
+\ifx\plushundred \undefined \mathchardef\plushundred = 100 \fi
+\ifx\plusthousand \undefined \mathchardef\plusthousand = 1000 \fi
+\ifx\plustenthousand\undefined \mathchardef\plustenthousand=10000 \fi
+
+\newcount\zerocount
+
+%D \macros
+%D {s!,c!,e!,p!,v!,@@,??}
+%D
+%D To save memory, we use constants (sometimes called
+%D variables). Redefining these constants can have desastrous
+%D results.
+
+\def\v!prefix! {v!} \def\c!prefix! {c!}
+\def\s!prefix! {s!} \def\p!prefix! {p!}
+
+\def\s!next {next} \def\s!default {default}
+\def\s!dummy {dummy} \def\s!unknown {unknown}
+
+\def\s!do {do} \def\s!dodo {dodo}
+
+\def\s!complex {complex} \def\s!start {start}
+\def\s!simple {simple} \def\s!stop {stop}
+
+%D \macros
+%D {@EA,@EAEA,@EAEAEA,@EAEAEAEAEAEA,expanded,startexpanded}
+%D
+%D When in unprotected mode, to be entered with
+%D \type{\unprotect}, one can use \type{\@EA} as equivalent
+%D of \type{\expandafter}.
+
+\let\@EA =\expandafter
+\def\@EAEA {\expandafter\expandafter}
+\def\@EAEAEA{\expandafter\expandafter\expandafter}
+
+\def\@EAEAEAEAEAEA{\expandafter\@EAEAEA\expandafter}
+
+%D Sometimes we pass macros as arguments to commands that
+%D don't expand them before interpretation. Such commands can
+%D be enclosed with \type{\expanded}, like:
+%D
+%D \starttyping
+%D \expanded{\setupsomething[\alfa]}
+%D \stoptyping
+%D
+%D Such situations occur for instance when \type{\alfa} is a
+%D commalist or when data stored in macros is fed to index of
+%D list commands. If needed, one should use \type{\noexpand}
+%D inside the argument. Later on we will meet some more clever
+%D alternatives to this command.
+
+\long\def\@@expanded{} % always long; global (less restores)
+
+\long\def\expanded#1%
+ {\long\xdef\@@expanded{\noexpand#1}\@@expanded}
+
+%D Beware, the next one has no \type {\noexpand} before its
+%D argument.
+
+\long\def\startexpanded#1\stopexpanded % see x-fo for example
+ {\long\xdef\@@expanded{#1}\@@expanded}
+
+%D \macros
+%D {safeexpanded,everysafeexpanded}
+%D
+%D In addition we provide:
+
+\newtoks\everysafeexpanded
+
+\long\def\safeexpanded#1%
+ {\begingroup
+ \the\everysafeexpanded\long\xdef\@@expanded{\noexpand#1}%
+ \endgroup
+ \@@expanded}
+
+\def\safeedef#1#2%
+ {\begingroup
+ \the\everysafeexpanded\long\xdef\@@expanded{\noexpand#2}%
+ \endgroup
+ \let#1\@@expanded}
+
+\def\safexdef#1#2%
+ {\begingroup
+ \the\everysafeexpanded\long\xdef\@@expanded{\noexpand#2}%
+ \endgroup
+ \global\let#1\@@expanded}
+
+%D You can append protective measures to the token register if
+%D needed, as we will do later.
+
+%D \macros
+%D {expandoneargafter,expandtwoargsafter}
+%D
+%D These two commands make macros more readable by hiding a
+%D lot of \type {\expandafter}'s. They expand the arguments
+%D after the first command.
+%D
+%D \starttyping
+%D \expandoneargafter \command{\abc}
+%D \expandtwoargsafter\command{\abc}{\def}
+%D \stoptyping
+%D
+%D These commands expect the arguments to be macros.
+
+\def\expandoneargafter #1{\@EA#1\@EA}
+\def\expandtwoargsafter#1#2{\@EA\@EA\@EA#1\@EA\@EA\@EA{\@EA#2\@EA}\@EA}
+
+%D These two do a full expansion:
+
+\def\fullexpandoneargafter #1#2{\long\xdef\@@expanded{\noexpand#1{#2}}\@@expanded}
+\def\fullexpandtwoargsafter#1#2#3{\long\xdef\@@expanded{\noexpand#1{#2}{#3}}\@@expanded}
+
+%D \macros
+%D {gobbleoneargument,gobble...arguments}
+%D
+%D The next set of macros just do nothing, except that they
+%D get rid of a number of arguments.
+
+\long\def\gobbleoneargument #1{}
+\long\def\gobbletwoarguments #1#2{}
+\long\def\gobblethreearguments #1#2#3{}
+\long\def\gobblefourarguments #1#2#3#4{}
+\long\def\gobblefivearguments #1#2#3#4#5{}
+\long\def\gobblesixarguments #1#2#3#4#5#6{}
+\long\def\gobblesevenarguments #1#2#3#4#5#6#7{}
+\long\def\gobbleeightarguments #1#2#3#4#5#6#7#8{}
+\long\def\gobbleninearguments #1#2#3#4#5#6#7#8#9{}
+\long\def\gobbletenarguments #1{\gobbleninearguments}
+
+%D \macros
+%D {doifnextcharelse}
+%D
+%D When we started using \TEX\ in the late eighties, our
+%D first experiences with programming concerned a simple shell
+%D around \LATEX. The commands probably use most at \PRAGMA,
+%D are the itemizing ones. One of those few shell commands took
+%D care of an optional argument, that enabled us to specify
+%D what kind of item symbol we wanted. Without understanding
+%D anything we were able to locate a \LATEX\ macro that could
+%D be used to inspect the next character.
+%D
+%D It's this macro that the ancester of the next one presented
+%D here. It executes one of two actions, dependant of the next
+%D character. Disturbing spaces and line endings, which are
+%D normally interpreted as spaces too, are skipped.
+%D
+%D \starttyping
+%D \doifnextcharelse {karakter} {then ...} {else ...}
+%D \stoptyping
+%D
+%D This macro differs from the original in the use of \type
+%D {\localnext} because we don't want clashes with \type
+%D {\next}.
+
+\long\def\doifnextcharelse#1#2#3% #1 should not be {} !
+ {\let\charactertoken=#1% = needed here
+ \def\!!stringa{#2}%
+ \def\!!stringb{#3}%
+ \futurelet\nexttoken\inspectnextcharacter}
+
+\def\inspectnextcharacter
+ {\ifx\nexttoken\blankspace
+ \@EA\reinspectnextcharacter
+ \else\ifx\nexttoken\charactertoken
+ \@EAEAEA\!!stringa
+ \else
+ \@EAEAEA\!!stringb
+ \fi\fi}
+
+%\let\endoflinetoken=^^M
+%
+%\long\def\reinspectaftercharacter#1%
+% {\futurelet\nexttoken\inspectnextcharacter}
+
+%D This macro uses some auxiliary macros. Although we were able
+%D to program quite complicated things, I only understood these
+%D after rereading the \TEX book. The trick is in using a
+%D command with a one character name. Such commands differ from
+%D the longer ones in the fact that trailing spaces are {\em
+%D not} skipped. This enables us to indirectly define a long
+%D named macro that gobbles a space.
+%D
+%D In the first line we define \type{\blankspace}. Next we
+%D make \type{\:} equivalent to \type{\reinspect...}. This
+%D one||character command is expanded before the next
+%D \type{\def} comes into action. This way the space after
+%D \type{\:} becomes a delimiter of the longer named
+%D \type{\reinspectnextcharacter}. The chain reaction is
+%D visually compatible with the next sequence:
+%D
+%D \starttyping
+%D \expandafter\def\reinspectnextcharacter %
+%D {\futurelet\nexttoken\inspectnextcharacter}
+%D \stoptyping
+%D
+%D However complicated it may look, I'm still glad I stumbled
+%D into this construction. Saving and restoring \type {\:} is
+%D needed when we use \PPCHTEX\ in \LATEX.
+
+\let\next\:
+
+\def\:{\let\blankspace= } \:
+
+\def\:{\reinspectnextcharacter}
+
+\expandafter\def\: {\futurelet\nexttoken\inspectnextcharacter}
+
+\let\:\next
+
+%D \macros
+%D {setvalue,setgvalue,setevalue,setxvalue,
+%D letvalue,
+%D getvalue,
+%D resetvalue}
+%D
+%D \TEX's primitive \type{\csname} can be used to construct
+%D all kind of commands that cannot be defined with
+%D \type{\def} and \type{\let}. Every macro programmer sooner
+%D or later wants macros like these.
+%D
+%D \starttyping
+%D \setvalue {name}{...} = \def\name{...}
+%D \setgvalue {name}{...} = \gdef\name{...}
+%D \setevalue {name}{...} = \edef\name{...}
+%D \setxvalue {name}{...} = \xdef\name{...}
+%D \letvalue {name}=\... = \let\name=\...
+%D \letgvalue {name}=\... = \global\let\name=\...
+%D \getvalue {name} = \name
+%D \resetvalue {name} = \def\name{}
+%D \stoptyping
+%D
+%D As we will see, \CONTEXT\ uses these commands many times,
+%D which is mainly due to its object oriented and parameter
+%D driven character.
+
+\def\setvalue #1{\expandafter \def\csname#1\endcsname}
+\def\setgvalue #1{\expandafter\gdef\csname#1\endcsname}
+\def\setevalue #1{\expandafter\edef\csname#1\endcsname}
+\def\setxvalue #1{\expandafter\xdef\csname#1\endcsname}
+\def\getvalue #1{\csname#1\endcsname}
+\def\letvalue #1{\expandafter\let\csname#1\endcsname}
+\def\letgvalue #1{\global\expandafter\let\csname#1\endcsname}
+\def\resetvalue #1{\expandafter\let\csname#1\endcsname\empty}
+\def\ignorevalue#1#2{\expandafter\let\csname#1\endcsname\empty}
+
+%D \macros
+%D {globallet,glet}
+%D
+%D In \CONTEXT\ of May 2000 using \type {\globallet}
+%D instead of the two tokens will save us some
+%D $300\times4=1200$ bytes of format file on a 32~bit
+%D system. So:
+
+\def\globallet{\global\let} \let\glet\globallet
+
+%D \macros
+%D {donottest,unexpanded}
+%D
+%D When expansion of a macro gives problems, we can precede it
+%D by \type{\donottest}. It seems that protection is one of the
+%D burdens of developers of packages, so maybe that's why in
+%D \ETEX\ protection is solved in a more robust way.
+%D
+%D Sometimes prefixing the macro with \type{\donottest} leads
+%D to defining an auxiliary macro, like
+%D
+%D \starttyping
+%D \def\dosomecommand {... ... ...}
+%D \def\somecommand {\donottest\dosomecommand}
+%D \stoptyping
+%D
+%D This double definition can be made transparant by using
+%D \type{\unexpanded}, as in:
+%D
+%D \starttyping
+%D \unexpanded\def\somecommand{... ... ...}
+%D \stoptyping
+%D
+%D The protection mechanism uses:
+
+\beginTEX
+
+\def\dontprocesstest#1{==}
+\def\doprocesstest #1{#1}
+
+\let\donottest=\doprocesstest
+
+\endTEX
+
+\beginETEX \detokenize
+
+\def\donottest#1{#1} % {\detokenize{#1}}
+
+\endETEX
+
+%D By the way, we use a placeholder because we don't want
+%D interference when testing on empty strings. Using a
+%D placeholder of 8~characters increases the processing time
+%D of simple \type{\doifelse} tests by about 10 \%. When we
+%D process the test, we have to remove the braces and
+%D therefore explictly gobble \type{#1}.
+
+%D \macros
+%D {honorunexpanded,forceunexpanded}
+%D
+%D The fact that many macros have the same prefix, could have
+%D a negative impact on searching in the hash table. Because
+%D some simple testing does not show differences, we just use:
+%D
+%D \starttyping
+%D \def\unexpanded#1#2%
+%D {\@EA#1\@EA#2\@EA{\@EA\donottest\csname\s!do\string#2\endcsname}%
+%D \@EA#1\csname\s!do\string#2\endcsname}
+%D \stoptyping
+%D
+%D Well, in fact we use the bit more versatile alternative. The
+%D \type {\honorunexpanded} can be used to \type {\string}
+%D the protected command, which by the way is seldom needed
+%D in \CONTEXT.
+
+\beginTEX
+
+\def\dosetunexpanded#1#2%
+ {\@EA#1\@EA{\@EA#2\@EA}%
+ \@EA{\@EA\donottest\csname\s!do\@EA\string\csname#2\endcsname\endcsname}%
+ \@EA#1\@EA{\@EA\s!do\@EA\string\csname#2\endcsname}}
+
+\def\docomunexpanded#1#2%
+ {\@EA#1\@EA#2\@EA{\@EA\donottest\csname\s!do\string#2\endcsname}%
+ \@EA#1\csname\s!do\string#2\endcsname}
+
+\def\unexpanded#1%
+ {\def\dounexpanded
+ {\ifx\next\bgroup
+ \@EA\dosetunexpanded
+ \else
+ \@EA\docomunexpanded
+ \fi#1}%
+ \futurelet\next\dounexpanded}
+
+\def\honorunexpanded% for writing to a file or message
+ {\def\donottest##1{\expandafter\gobblethreearguments\string##1}}
+
+\def\forceunexpanded% for preventing expansion in \xdef
+ {\def\donottest##1%
+ {\expandafter\noexpand\csname\expandafter\gobblefourarguments\string##1\endcsname}}
+
+\def\resetunexpanded%
+ {\let\donottest\doprocesstest}
+
+\endTEX
+
+\beginETEX \protected
+
+\let \unexpanded \normalprotected
+\let \honorunexpanded \empty % \relax
+\let \forceunexpanded \empty % \relax
+\let \resetunexpanded \empty % \relax
+
+\endETEX
+
+%D This one accepts the more direct \type{\def} and cousins
+%D as well as the \CONTEXT\ specific \type{\setvalue} ones.
+%D
+%D And so the definition in our example turns out to be:
+%D
+%D \starttyping
+%D \def\csname do\somecommand\endcsname{... ... ...}
+%D \def\somecommand{\donottest\csname do\somecommand\endcsname}
+%D \stoptyping
+%D
+%D In which \type{do\somecommand} is hidden from the user and
+%D cannot lead to confusion. It's still permitted to define
+%D auxiliary macros like \type{\dosomecommand}.
+%D
+%D When we are going to use e-\TEX, we'll probably end up
+%D redefining some commands, but we can probably keep the
+%D \type{\unexpanded} ones unchanged.
+
+%D \macros
+%D {doifundefined,doifdefined,
+%D doifundefinedelse,doifdefinedelse,
+%D doifalldefinedelse}
+%D
+%D The standard way of testing if a macro is defined is
+%D comparing its meaning with another undefined one, usually
+%D \type{\undefined}. To garantee correct working of the next
+%D set of macros, \type{\undefined} may never be defined!
+%D
+%D \starttyping
+%D \doifundefined {string} {...}
+%D \doifdefined {string} {...}
+%D \doifundefinedelse {string} {then ...} {else ...}
+%D \doifdefinedelse {string} {then ...} {else ...}
+%D \doifalldefinedelse {commalist} {then ...} {else ...}
+%D \stoptyping
+%D
+%D Every macroname that \TEX\ builds gets an entry in the hash
+%D table, which is of limited size. It is expected that e-\TeX\
+%D will offer a less memory||consuming alternative.
+
+%D Although it will probably never be a big problem, it is good
+%D to be aware of the difference between testing on a macro
+%D name to be build by using \type{\csname} and
+%D \type{\endcsname} and testing the \type{\name} directly.
+%D
+%D \starttyping
+%D \expandafter\ifx\csname NameA\endcsname\relax ... \else ... \fi
+%D
+%D \ifx\NameB\undefined ... \else ... \fi
+%D \stoptyping
+%D
+%D I became aware of this when I mistakenly testen the first
+%D one against \type{\undefined}. When \TEX\ build a name using
+%D \type{\csname} it automatically sets it to \type{\relax},
+%D which is definitely not the same as \type{\undefined}. The
+%D quickest way to check these things is asking \TEX\ to show
+%D the meaning of the names:
+%D
+%D \starttyping
+%D \expandafter\show\csname NameA\endcsname
+%D
+%D \show\NameB
+%D \stoptyping
+%D
+%D The main reason why this never will be a big problem is that
+%D when one uses the \type{\csname} way, one probably has to do
+%D with some macroname that always is dealt with that way.
+%D Confusion can however arise when one applies both testing
+%D methods to the same macroname. By the way, the assignment
+%D of \type{\relax} obeys grouping.
+
+%D The first one gets rid of \type{#1}, but still expands to
+%D something and the second one expands to \type{#1}. Because
+%D we accept arguments between \type{{}}, we have to get rid
+%D of one level of braces.
+%D
+%D Our first implementation of \type{\ifundefined} was
+%D straightforward and readable:
+%D
+%D \starttyping
+%D \def\ifundefined#1%
+%D {\expandafter\ifx\csname#1\endcsname\relax}%
+%D
+%D \def\doifundefinedelse#1#2#3%
+%D {\let\donottest=\dontprocesstest
+%D \ifundefined{#1}%
+%D \let\donottest=\doprocesstest#2%
+%D \else
+%D \let\donottest=\doprocesstest#3%
+%D \fi}
+%D
+%D \def\doifdefinedelse#1#2#3%
+%D {\doifundefinedelse{#1}{#3}{#2}}
+%D
+%D \def\doifundefined#1#2%
+%D {\doifundefinedelse{#1}{#2}{}}
+%D
+%D \def\doifdefined#1#2%
+%D {\doifundefinedelse{#1}{}{#2}}
+%D
+%D \def\doifalldefinedelse#1#2#3%
+%D {\begingroup
+%D \donetrue
+%D \def\checkcommand##1%
+%D {\doifundefined{##1}{\donefalse}}%
+%D \processcommalist[#1]\checkcommand
+%D \ifdone
+%D \endgroup#2%
+%D \else
+%D \endgroup#3%
+%D \fi}
+%D \stoptyping
+%D
+%D When this module was optimized, timing showed that the
+%D next alternative can be upto twice as fast, especially when
+%D longer arguments are used. Watch how we reach over the
+%D \type {\else} and \type {\fi}: this way they cannot get
+%D into the way (and we can avoid those \type {\next}
+%D hacks); I started using this method after I did some
+%D speed optimization tests in the xtag modules; the
+%D efficiency of such hacks depends on the length of the
+%D argument etc. etc.)
+
+\beginTEX
+
+\def\ifundefined#1%
+ {\expandafter\ifx\csname#1\endcsname\relax}
+
+\def\p!doifundefined#1%
+ {\let\donottest\dontprocesstest
+ \expandafter\ifx\csname#1\endcsname\relax}
+
+\def\doifundefinedelse#1%
+ {\p!doifundefined{#1}%
+ \let\donottest\doprocesstest\@EA\firstoftwoarguments
+ \else
+ \let\donottest\doprocesstest\@EA\secondoftwoarguments
+ \fi}
+
+\def\doifdefinedelse#1%
+ {\p!doifundefined{#1}%
+ \let\donottest\doprocesstest\@EA\secondoftwoarguments
+ \else
+ \let\donottest\doprocesstest\@EA\firstoftwoarguments
+ \fi}
+
+\def\doifundefined#1%
+ {\p!doifundefined{#1}%
+ \let\donottest\doprocesstest\@EA\firstofoneargument
+ \else
+ \let\donottest\doprocesstest\@EA\gobbleoneargument
+ \fi}
+
+\def\doifdefined#1%
+ {\p!doifundefined{#1}%
+ \let\donottest\doprocesstest\@EA\gobbleoneargument
+ \else
+ \let\donottest\doprocesstest\@EA\firstofoneargument
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\ifundefined#1% ongelukkige naam
+ {\unless\ifcsname#1\endcsname}
+
+\def\p!doifundefined#1%
+ {\edef\p!defined{#1}%
+ \unless\ifcsname\detokenize\@EA{\p!defined}\endcsname}
+
+\def\doifundefinedelse#1%
+ {\edef\p!defined{#1}%
+ \ifcsname\detokenize\@EA{\p!defined}\endcsname
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\def\doifdefinedelse#1%
+ {\edef\p!defined{#1}%
+ \ifcsname\detokenize\@EA{\p!defined}\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\doifundefined#1%
+ {\edef\p!defined{#1}%
+ \ifcsname\detokenize\@EA{\p!defined}\endcsname
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\def\doifdefined#1%
+ {\edef\p!defined{#1}%
+ \ifcsname\detokenize\@EA{\p!defined}\endcsname
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {letbeundefined}
+%D
+%D Testing for being undefined comes down to testing on \type
+%D {\relax} when we use \type {\csname}, but when using \type
+%D {\ifx}, we test on being \type {\undefined}! In \ETEX\ we
+%D have \type {\ifcsname} and that way of testing on existance
+%D is not the same as the one described here. Therefore we
+%D introduce:
+
+\beginTEX
+
+\def\letbeundefined#1%
+ {\expandafter\let\csname#1\endcsname\relax}
+
+\endTEX
+
+\beginETEX \undefined
+
+\def\letbeundefined#1% potential stack buildup when used \global
+ {\expandafter\let\csname#1\endcsname\undefined}
+
+\endETEX
+
+%D Beware, being \type {\undefined} in \ETEX\ means that the macro
+%D {\em is} defined!
+
+%D Before we start using this variant, we used another one,
+%D which is even a bit faster. This one looked like:
+%D
+%D \starttyping
+%D \def\p!doifundefined%
+%D {\begingroup
+%D \let\donottest=\dontprocesstest
+%D \ifundefined}
+%D
+%D \def\doifundefinedelse#1#2#3%
+%D {\p!doifundefined{#1}%
+%D \endgroup#2%
+%D \else
+%D \endgroup#3%
+%D \fi}
+%D \stoptyping
+%D
+%D A even more previous version used \type{\bgroup} and
+%D \type {\egroup}. In math mode however, \type{$1{x}2$} differs
+%D from \type{$1x2$}. This can been seen when one compares the
+%D output of:
+%D
+%D \starttyping
+%D $\kern10pt\showthe\lastkern$
+%D $\kern10pt{\showthe\lastkern}$
+%D $\kern10pt\begingroup\showthe\lastkern\endgroup$
+%D \stoptyping
+%D
+%D Also in math mode, one can better use \type {\begingroup}
+%D and companion instead of \type {\bgroup}.
+%D
+%D When we were developing the scientific units module, we
+%D encountered different behavior in text and math mode, which
+%D was due to this grouping subtilities. We therefore decided
+%D to use \type{\begingroup} instead of \type{\bgroup}.
+%D Later, when we had optimized some macro's the grouped
+%D solution turned out to be unsafe when typesetting this
+%D documentation, especially when using \type{\globaldefs}.
+%D
+%D We still have to define \type{\doifalldefinedelse}. Watch
+%D the use of grouping, which garantees local use of the
+%D boolean \type{\ifdone}.
+
+\beginTEX
+
+\def\docheckonedefined#1%
+ {\ifundefined{#1}%
+ \donefalse
+ \fi}
+
+\def\doifalldefinedelse#1%
+ {\begingroup
+ \let\donottest\dontprocesstest
+ \donetrue
+ \processcommalist[#1]\docheckonedefined
+ \ifdone
+ \endgroup\let\donottest\doprocesstest
+ \expandafter\firstoftwoarguments
+ \else
+ \endgroup\let\donottest\doprocesstest
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\docheckonedefined#1%
+ {\unless\ifcsname#1\endcsname
+ \donefalse
+ \fi}
+
+\def\doifalldefinedelse#1%
+ {\begingroup
+ \donetrue \processcommalist[#1]\docheckonedefined
+ \ifdone
+ \endgroup\expandafter\firstoftwoarguments
+ \else
+ \endgroup\expandafter\secondoftwoarguments
+ \fi}
+
+\endETEX
+
+%D \macros
+%D {doif,doifelse,doifnot,
+%D donottest}
+%D
+%D Programming in \TEX\ differs from programming in procedural
+%D languages like \MODULA. This means that one --- well, let me
+%D speek for myself --- tries to do the things in the well
+%D known way. Therefore the next set of \type{\ifthenelse}
+%D commands were between the first ones we needed. A few years
+%D later, the opposite became true: when programming in
+%D \MODULA, I sometimes miss handy things like grouping,
+%D runtime redefinition, expansion etc. While \MODULA\ taught
+%D me to structure, \TEX\ taught me to think recursive.
+%D
+%D \starttyping
+%D \doif {string1} {string2} {...}
+%D \doifnot {string1} {string2} {...}
+%D \doifelse {string1} {string2} {then ...}{else ...}
+%D \stoptyping
+%D
+%D When expansion gives problems, we can precede the
+%D troublemaker with \type{\donottest}.
+%D
+%D This implementatie does not use the construction which is
+%D more robust for nested conditionals.
+%D
+%D \starttyping
+%D \ifx\!!stringa\!!stringb
+%D \def\next{#3}%
+%D \else
+%D \def\next{#4}%
+%D \fi
+%D \next
+%D \stoptyping
+%D
+%D In practice, this alternative is at least 20\% slower than
+%D the alternative used here. The few cases in which we
+%D really need the \type{\next} construction, often need some
+%D other precautions and or adaptions too.
+
+\beginTEX
+
+% \long\def\doif#1#2#3%
+% {\let\donottest\dontprocesstest
+% \edef\!!stringa{#1}%
+% \edef\!!stringb{#2}%
+% \let\donottest\doprocesstest
+% \ifx\!!stringa\!!stringb
+% #3%
+% \fi}
+%
+% \long\def\doifnot#1#2#3%
+% {\let\donottest\dontprocesstest
+% \edef\!!stringa{#1}%
+% \edef\!!stringb{#2}%
+% \let\donottest\doprocesstest
+% \ifx\!!stringa\!!stringb
+% \else
+% #3%
+% \fi}
+%
+% \long\def\doifelse#1#2#3#4%
+% {\let\donottest\dontprocesstest
+% \edef\!!stringa{#1}%
+% \edef\!!stringb{#2}%
+% \let\donottest\doprocesstest
+% \ifx\!!stringa\!!stringb
+% #3%
+% \else
+% #4%
+% \fi}
+
+%D Slightly faster on big arguments, as well as \type
+%D {\next} avoiding:
+
+\long\def\doif#1#2%
+ {\let\donottest\dontprocesstest
+ \edef\!!stringa{#1}%
+ \edef\!!stringb{#2}%
+ \let\donottest\doprocesstest
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifnot#1#2%
+ {\let\donottest\dontprocesstest
+ \edef\!!stringa{#1}%
+ \edef\!!stringb{#2}%
+ \let\donottest\doprocesstest
+ \ifx\!!stringa\!!stringb
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+
+\long\def\doifelse#1#2%
+ {\let\donottest\dontprocesstest
+ \edef\!!stringa{#1}%
+ \edef\!!stringb{#2}%
+ \let\donottest\doprocesstest
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\endTEX
+
+\beginETEX \protected
+
+% \long\def\doif#1#2#3%
+% {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+% \ifx\!!stringa\!!stringb#3\fi}
+%
+% \long\def\doifnot#1#2#3%
+% {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+% \unless\ifx\!!stringa\!!stringb#3\fi}
+%
+% \long\def\doifelse#1#2#3#4%
+% {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+% \ifx\!!stringa\!!stringb#3\else#4\fi}
+
+%D Slightly faster on big arguments, as well as \type
+%D {\next} avoiding:
+
+\long\def\doif#1#2%
+ {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifnot#1#2%
+ {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\long\def\doifelse#1#2%
+ {\edef\!!stringa{#1}\edef\!!stringb{#2}%
+ \ifx\!!stringa\!!stringb
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\endETEX
+
+%D One could wonder why we don't follow the the same approach
+%D as in \type{\doifdefined} c.s.\ and use \type{\begingroup}
+%D and \type{\endgroup}. In this case, this alternative is
+%D slower, which is probably due to the fact that more meanings
+%D need to be restored.
+%D
+%D The in terms of memory more efficient alternative using a
+%D auxiliary macro also proved to be slower, so we definitely
+%D did not choose for:
+%D
+%D \starttyping
+%D \def\p!doifelse#1#2%
+%D {\let\donottest=\dontprocesstest
+%D \edef\!!stringa{#1}%
+%D \edef\!!stringb{#2}%
+%D \let\donottest=\doprocesstest
+%D \ifx\!!stringa\!!stringb}
+%D
+%D \long\def\doif#1#2#3%
+%D {\p!doifelse{#1}{#2}#3\fi}
+%D
+%D \long\def\doifnot#1#2#3%
+%D {\p!doifelse{#1}{#2}\else#3\fi}
+%D
+%D \long\def\doifelse#1#2#3#4%
+%D {\p!doifelse{#1}{#2}#3\else#4\fi}
+%D \stoptyping
+%D
+%D Optimizations like this are related of course to the
+%D bottlenecks in \TEX. It seems that restoring saved meanings
+%D and passing arguments takes some time.
+
+%D \macros
+%D {doifempty,doifemptyelse,doifnotempty}
+%D
+%D We complete our set of conditionals with:
+%D
+%D \starttyping
+%D \doifempty {string} {...}
+%D \doifnotempty {string} {...}
+%D \doifemptyelse {string} {then ...} {else ...}
+%D \stoptyping
+%D
+%D This time, the string is not expanded.
+
+\long\def\doifemptyelse#1%
+ {\def\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\long\def\doifempty#1%
+ {\def\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\long\def\doifnotempty#1%
+ {\def\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+%D \macros
+%D {doifinset,doifnotinset,doifinsetelse}
+%D
+%D We can check if a string is present in a comma separated
+%D set of strings. Depending on the result, some action is
+%D taken.
+%D
+%D \starttyping
+%D \doifinset {string} {string,...} {...}
+%D \doifnotinset {string} {string,...} {...}
+%D \doifinsetelse {string} {string,...} {then ...} {else ...}
+%D \stoptyping
+%D
+%D The second argument is the comma separated set of strings.
+%D
+%D \starttyping
+%D \long\def\doifinsetelse#1#2#3#4%
+%D {\doifelse{#1}{}
+%D {#4}
+%D {\donefalse
+%D \def\p!checkiteminset##1%
+%D {\doif{#1}{##1}
+%D {\donetrue
+%D \let\p!checkiteminset=\gobbleoneargument}}%
+%D \processcommalist[#2]\p!checkiteminset
+%D \ifdone
+%D #3%
+%D \else
+%D #4%
+%D \fi}}
+%D
+%D \long\def\doifinset#1#2#3%
+%D {\doifinsetelse{#1}{#2}{#3}{}}
+%D
+%D \long\def\doifnotinset#1#2#3%
+%D {\doifinsetelse{#1}{#2}{}{#3}}
+%D \stoptyping
+%D
+%D Because this macro is called quite often we've spent some
+%D time optimizing it. This time, the gain in speed is due to
+%D (1)~defining an external auxiliary macro, (2)~not calling
+%D any other macros and (3)~minimizing the passing of
+%D arguments. The gain in speed is impressive.
+
+% \def\p!dodocheckiteminset#1%
+% {\edef\!!stringb{#1}%
+% \ifx\!!stringa\!!stringb
+% \donetrue
+% \let\p!docheckiteminset\gobbleoneargument
+% \fi}
+%
+% \beginTEX
+%
+% \def\p!doifinsetelse#1#2%
+% {\let\donottest\dontprocesstest
+% \donefalse
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\empty
+% \else
+% \let\p!docheckiteminset\p!dodocheckiteminset
+% \processcommalist[#2]\p!docheckiteminset
+% \fi
+% \let\donottest\doprocesstest
+% \ifdone}
+%
+% \endTEX
+%
+% \beginETEX \protected
+%
+% \def\p!doifinsetelse#1#2%
+% {\donefalse
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\empty
+% \else
+% \let\p!docheckiteminset\p!dodocheckiteminset
+% \processcommalist[#2]\p!docheckiteminset
+% \fi
+% \ifdone}
+%
+% \endETEX
+
+% then we had:
+%
+% \def\p!docheckiteminset#1%
+% {\edef\!!stringb{#1}%
+% \ifx\!!stringa\!!stringb
+% \donetrue
+% \expandafter\quitcommalist
+% \fi}
+%
+% \beginTEX
+%
+% \def\p!doifinsetelse#1#2%
+% {\let\donottest\dontprocesstest
+% \donefalse
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\empty
+% \else
+% \processcommalist[#2]\p!docheckiteminset
+% \fi
+% \let\donottest\doprocesstest
+% \ifdone}
+%
+% \endTEX
+%
+% % can be sped up with processnext...
+%
+% \beginETEX \protected
+%
+% \def\p!doifinsetelse#1#2%
+% {\donefalse
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\empty
+% \else
+% \processcommalist[#2]\p!docheckiteminset
+% \fi
+% \ifdone}
+%
+% \endETEX
+%
+% \long\def\doifinsetelse#1#2%
+% {\p!doifinsetelse{#1}{#2}%
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \long\def\doifinset#1#2%
+% {\p!doifinsetelse{#1}{#2}%
+% \expandafter\firstofoneargument
+% \else
+% \expandafter\gobbleoneargument
+% \fi}
+%
+% \long\def\doifnotinset#1#2%
+% {\p!doifinsetelse{#1}{#2}%
+% \expandafter\gobbleoneargument
+% \else
+% \expandafter\firstofoneargument
+% \fi}
+%
+% now we have
+
+\def\p!docheckiteminset#1%
+ {\edef\!!stringb{#1}%
+ \ifx\!!stringa\!!stringb
+ \donetrue
+ \expandafter\quitcommalist
+ \fi}
+
+\beginTEX
+
+\def\p!doifinsetelse#1#2#3#4%
+ {\let\donottest\dontprocesstest
+ \donefalse
+ \edef\!!stringa{#3}%
+ \ifx\!!stringa\empty
+ \else
+ \processcommalist[#4]\p!docheckiteminset
+ \fi
+ \let\donottest\doprocesstest
+ \ifdone\expandafter#1\else\expandafter#2\fi}
+
+\endTEX
+
+\beginETEX \protected
+
+\def\p!doifinsetelse#1#2#3#4%
+ {\donefalse
+ \edef\!!stringa{#3}%
+ \ifx\!!stringa\empty
+ \else
+ \processcommalist[#4]\p!docheckiteminset
+ \fi
+ \ifdone\expandafter#1\else\expandafter#2\fi}
+
+\endETEX
+
+\long\def\doifinsetelse
+ {\p!doifinsetelse\firstoftwoarguments\secondoftwoarguments}
+
+\long\def\doifinset
+ {\p!doifinsetelse\firstofoneargument\gobbleoneargument}
+
+\long\def\doifnotinset
+ {\p!doifinsetelse\gobbleoneargument\firstofoneargument}
+
+%D \macros
+%D {doifcommon,doifnotcommon,doifcommonelse}
+%D
+%D Probably the most time consuming tests are those that test
+%D for overlap in sets of strings.
+%D
+%D \starttyping
+%D \doifcommon {string,...} {string,...} {...}
+%D \doifnotcommon {string,...} {string,...} {...}
+%D \doifcommonelse {string,...} {string,...} {then ...} {else ...}
+%D \stoptyping
+%D
+%D We show the slower alternative first, because it shows us
+%D how things are done.
+%D
+%D \starttyping
+%D \long\def\doifcommonelse#1#2#3#4%
+%D {\donefalse
+%D \def\p!docommoncheck##1%
+%D {\def\p!dodocommoncheck####1%
+%D {\doif{####1}{##1}
+%D {\donetrue
+%D \def\commalistelement{##1}%
+%D \let\p!docommoncheck=\gobbleoneargument
+%D \let\p!dodocommoncheck=\gobbleoneargument}}%
+%D \processcommalist[#2]\p!dodocommoncheck}%
+%D \processcommalist[#1]\p!docommoncheck
+%D \ifdone
+%D #3%
+%D \else
+%D #4%
+%D \fi}
+%D
+%D \long\def\doifcommon#1#2#3%
+%D {\doifcommonelse{#1}{#2}{#3}{}}
+%D
+%D \long\def\doifnotcommon#1#2#3%
+%D {\doifcommonelse{#1}{#2}{}{#3}}
+%D \stoptyping
+%D
+%D The processing time is shortened by getting the auxiliary
+%D macro to the outermost level and using less \type{\edef}'s.
+%D Sometimes it makes more sence to define local macro's not
+%D only because this way we can be sure that they are not
+%D redefined, but also because it shows the dependance. In
+%D compiled languages, this is no problem at all. It can even
+%D save us bytes and processing time. In interpreted languages
+%D like \TEX\ it nearly always slows down processing.
+
+% \def\p!dododocommoncheck#1%
+% {\edef\!!stringb{#1}%
+% \ifx\!!stringa\!!stringb
+% \donetrue
+% \let\p!docommoncheck\gobbleoneargument
+% \let\p!dodocommoncheck\gobbleoneargument
+% \fi}
+%
+% \beginTEX
+%
+% \def\p!doifcommonelse#1#2%
+% {\donefalse
+% \let\donottest\dontprocesstest
+% \let\p!dodocommoncheck\p!dododocommoncheck
+% \def\p!docommoncheck##1%
+% {\edef\!!stringa{##1}%
+% \def\commalistelement{##1}%
+% \processcommalist[#2]\p!dodocommoncheck}%
+% \processcommalist[#1]\p!docommoncheck
+% \let\donottest\doprocesstest
+% \ifdone}
+%
+% \endTEX
+%
+% \beginETEX \protected
+%
+% \def\p!doifcommonelse#1#2%
+% {\donefalse
+% \let\p!dodocommoncheck\p!dododocommoncheck
+% \def\p!docommoncheck##1%
+% {\edef\!!stringa{##1}%
+% \def\commalistelement{##1}%
+% \processcommalist[#2]\p!dodocommoncheck}%
+% \processcommalist[#1]\p!docommoncheck
+% \ifdone}
+%
+% \endETEX
+
+% \def\p!dodocommoncheck#1%
+% {\edef\!!stringb{#1}%
+% \ifx\!!stringa\!!stringb
+% \donetrue
+% \expandafter\quitprevcommalist
+% \fi}
+%
+% \beginTEX
+%
+% \def\p!doifcommonelse#1#2%
+% {\donefalse
+% \let\donottest\dontprocesstest
+% \def\p!docommoncheck##1%
+% {\edef\!!stringa{##1}%
+% \def\commalistelement{##1}% no let to stringa
+% \processcommalist[#2]\p!dodocommoncheck}%
+% \processcommalist[#1]\p!docommoncheck
+% \let\donottest\doprocesstest
+% \ifdone}
+%
+% \endTEX
+%
+% \beginETEX \protected
+%
+% \def\p!doifcommonelse#1#2%
+% {\donefalse
+% \def\p!docommoncheck##1%
+% {\edef\!!stringa{##1}%
+% \def\commalistelement{##1}%
+% \processcommalist[#2]\p!dodocommoncheck}%
+% \processcommalist[#1]\p!docommoncheck
+% \ifdone}
+%
+% \endETEX
+%
+% \long\def\doifcommonelse#1#2% % #3#4%
+% {\p!doifcommonelse{#1}{#2}% % #3\else#4\fi}
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+%
+% \long\def\doifcommon#1#2%
+% {\p!doifcommonelse{#1}{#2}%
+% \expandafter\firstofoneargument
+% \else
+% \expandafter\gobbleoneargument
+% \fi}
+%
+% \long\def\doifnotcommon#1#2%
+% {\p!doifcommonelse{#1}{#2}%
+% \expandafter\gobbleoneargument
+% \else
+% \expandafter\firstofoneargument
+% \fi}
+
+\def\p!dodocommoncheck#1%
+ {\edef\!!stringb{#1}%
+ \ifx\!!stringa\!!stringb
+ \donetrue
+ \expandafter\quitprevcommalist
+ \fi}
+
+\beginTEX
+
+\def\p!doifcommonelse#1#2#3#4%
+ {\donefalse
+ \let\donottest\dontprocesstest
+ \def\p!docommoncheck##1%
+ {\edef\!!stringa{##1}%
+ \def\commalistelement{##1}% no let to stringa
+ \processcommalist[#4]\p!dodocommoncheck}%
+ \processcommalist[#3]\p!docommoncheck
+ \let\donottest\doprocesstest
+ \ifdone\expandafter#1\else\expandafter#2\fi}
+
+\endTEX
+
+\beginETEX \protected
+
+\def\p!doifcommonelse#1#2#3#4%
+ {\donefalse
+ \def\p!docommoncheck##1%
+ {\edef\!!stringa{##1}%
+ \def\commalistelement{##1}%
+ \processcommalist[#4]\p!dodocommoncheck}%
+ \processcommalist[#3]\p!docommoncheck
+ \ifdone\expandafter#1\else\expandafter#2\fi}
+
+\endETEX
+
+\def\doifcommonelse
+ {\p!doifcommonelse\firstoftwoarguments\secondoftwoarguments}
+
+\def\doifcommon
+ {\p!doifcommonelse\firstofoneargument \gobbleoneargument}
+
+\def\doifnotcommon
+ {\p!doifcommonelse\gobbleoneargument \firstofoneargument}
+
+%D \macros
+%D {processcommalist,processcommacommand,quitcommalist,
+%D processcommalistwithparameters}
+%D
+%D We've already seen some macros that take care of comma
+%D separated lists. Such list can be processed with
+%D
+%D \starttyping
+%D \processcommalist[string,string,...]\commando
+%D \stoptyping
+%D
+%D The user supplied command \type{\commando} receives one
+%D argument: the string. This command permits nesting and
+%D spaces after commas are skipped. Empty sets are no problem.
+%D
+%D \startbuffer
+%D \def\dosomething#1{(#1)}
+%D
+%D 1: \processcommalist [\hbox{$a,b,c,d,e,f$}] \dosomething \par
+%D 2: \processcommalist [{a,b,c,d,e,f}] \dosomething \par
+%D 3: \processcommalist [{a,b,c},d,e,f] \dosomething \par
+%D 4: \processcommalist [a,b,{c,d,e},f] \dosomething \par
+%D 5: \processcommalist [a{b,c},d,e,f] \dosomething \par
+%D 6: \processcommalist [{a,b}c,d,e,f] \dosomething \par
+%D 7: \processcommalist [] \dosomething \par
+%D 8: \processcommalist [{[}] \dosomething \par
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Before we show the result, we present the macro's:
+
+\newcount\commalevel
+
+\def\dododoprocesscommaitem
+ {\csname\s!next\the\commalevel\endcsname}
+
+%\def\dodoprocesscommaitem%
+% {\ifx\nexttoken\blankspace
+% \let\nextcommaitem\redoprocesscommaitem
+% \else\ifx\nexttoken]%
+% \let\nextcommaitem\gobbleoneargument
+% \else
+% \let\nextcommaitem\dododoprocesscommaitem
+% \fi\fi
+% \nextcommaitem}
+%
+% faster ?
+
+\def\dodoprocesscommaitem
+ {\ifx\nexttoken\blankspace
+ \@EA\redoprocesscommaitem
+ \else\ifx\nexttoken]%
+ \@EAEAEA\gobbleoneargument
+ \else
+ \@EAEAEA\dododoprocesscommaitem
+ \fi\fi}
+
+\def\doprocesscommaitem
+ {\futurelet\nexttoken\dodoprocesscommaitem}
+
+%D Empty arguments are not processed. Empty items (\type{,,})
+%D however are treated. We have to check for the special case
+%D \type{[{a,b,c}]}.
+%D
+%D \starttyping
+%D \def\processcommalist[%
+%D {\futurelet\nexttoken\docheckcommaitem}
+%D
+%D \def\docheckcommaitem%
+%D {\ifx\nexttoken]%
+%D \let\nextcommaitem\gobbletwoarguments
+%D \else\ifx\nexttoken\bgroup
+%D \let\nextcommaitem\doprocesscommalistA
+%D \else
+%D \let\nextcommaitem\doprocesscommalistB
+%D \fi\fi
+%D \nextcommaitem}
+%D
+%D \def\doprocesscommalistA#1#2]#3%
+%D {\global\advance\commalevel 1
+%D \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,%
+%D {#3{##1}\doprocesscommaitem}%
+%D \doprocesscommaitem{#1}#2,]\relax
+%D \global\advance\commalevel -1 }
+%D
+%D \def\doprocesscommalistB#1]#2%
+%D {\global\advance\commalevel 1
+%D \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,%
+%D {#2{##1}\doprocesscommaitem}%
+%D \doprocesscommaitem#1,]\relax
+%D \global\advance\commalevel -1 }
+%D \stoptyping
+%D
+%D However, this is not a the most straightforward solution!
+%D We can misuse one of \TEX's hidden features, and prepend
+%D and remove a \type {\relax}. By the way, although it
+%D involves less testing, this cleaner alternative is not
+%D faster.
+
+\def\processcommalist[%
+ {\futurelet\nexttoken\docheckcommaitem}
+
+\def\docheckcommaitem
+ {\ifx\nexttoken]%
+ \expandafter\gobblethreearguments
+ \else
+ \expandafter\doprocesscommalist
+ \fi
+ \relax} % this one preserved the next {}
+
+\def\doprocesscommalist#1]#2%
+ {\global\advance\commalevel \plusone
+ \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,%
+ {#2{##1}\doprocesscommaitem}%
+ \@EA\dodoprocesscommaitem\gobbleoneargument#1,]\relax
+ \global\advance\commalevel \minusone }
+
+%D One way of quitting a commalist halfway is:
+
+\def\quitcommalist
+ {\begingroup\let\doprocesscommaitem\doquitcommalist}
+
+\def\doquitcommalist#1]%
+ {\endgroup}
+
+\def\quitprevcommalist
+ {\begingroup\let\doprocesscommaitem\doquitprevcommalist}
+
+\def\doquitprevcommalist#1]%
+ {\let\doprocesscommaitem\doquitcommalist}
+
+%D The hack we used for checking the next character
+%D \type {\doifnextcharelse} is also used here.
+
+\def\:{\redoprocesscommaitem}
+
+\expandafter\def\: {\futurelet\nexttoken\dodoprocesscommaitem}
+
+%D The previous examples lead to:
+%D
+%D \getbuffer
+
+%D When a list is saved in a macro, we can use a construction
+%D like:
+%D
+%D \starttyping
+%D \expandafter\processcommalist\expandafter[\list]\command
+%D \stoptyping
+%D
+%D Such solutions suit most situations, but we wanted a bit
+%D more.
+%D
+%D \starttyping
+%D \processcommacommand[string,\stringset,string]\commando
+%D \stoptyping
+%D
+%D where \type{\stringset} is a predefined set, like:
+%D
+%D \starttyping
+%D \def\first{aap,noot,mies}
+%D \def\second{laatste}
+%D
+%D \processcommacommand[\first]\message
+%D \processcommacommand[\first,second,third]\message
+%D \processcommacommand[\first,between,\second]\message
+%D \stoptyping
+%D
+%D Commands that are part of the list are expanded, so the
+%D use of this macro has its limits.
+
+\def\processcommacommand[#1]%
+ {\expanded{\processcommalist[#1]}}
+
+%D The argument to \type{\command} is not delimited. Because
+%D we often use \type{[]} as delimiters, we also have:
+%D
+%D \starttyping
+%D \processcommalistwithparameters[string,string,...]\command
+%D \stoptyping
+%D
+%D where \type{\command} looks like:
+%D
+%D \starttyping
+%D \def\command[#1]{... #1 ...}
+%D \stoptyping
+
+\def\processcommalistwithparameters[#1]#2%
+ {\def\docommand##1{#2[##1]}%
+ \processcommalist[#1]\docommand}
+
+%D \macros
+%D {processaction,
+%D processfirstactioninset,
+%D processallactionsinset}
+%D
+%D \CONTEXT\ makes extensive use of a sort of case or switch
+%D command. Depending of the presence of one or more provided
+%D items, some actions is taken. These macros can be nested
+%D without problems.
+%D
+%D \starttyping
+%D \processaction [x] [a=>\a,b=>\b,c=>\c]
+%D \processfirstactioninset [x,y,z] [a=>\a,b=>\b,c=>\c]
+%D \processallactionsinset [x,y,z] [a=>\a,b=>\b,c=>\c]
+%D \stoptyping
+%D
+%D We can supply both a \type{default} action and an action
+%D to be undertaken when an \type{unknown} value is met:
+%D
+%D \starttyping
+%D \processallactionsinset
+%D [x,y,z]
+%D [ a=>\a,
+%D b=>\b,
+%D c=>\c,
+%D default=>\default,
+%D unknown=>\unknown{... \commalistelement ...}]
+%D \stoptyping
+%D
+%D When \type{#1} is empty, this macro scans list \type{#2} for
+%D the keyword \type{default} and executed the related action
+%D if present. When \type{#1} is non empty and not in the list,
+%D the action related to \type{unknown} is executed. Both
+%D keywords must be at the end of list \type{#2}. Afterwards,
+%D the actually found keyword is available in
+%D \type{\commalistelement}. An advanced example of the use of
+%D this macro can be found in \PPCHTEX, where we completely
+%D rely on \TEX\ for interpreting user supplied keywords like
+%D \type{SB}, \type{SB1..6}, \type{SB125} etc.
+%D
+%D Even a quick glance at the macros below show some overlap,
+%D which means that more efficient alternatives are possible.
+%D Because these macro's are very sensitive to subtle changes,
+%D we've decided to present the readable originals first
+%D Maybe these these macros look complicated, but this is a
+%D direct result of the support of nesting. Protection is only
+%D applied in \type{\processaction}.
+%D
+%D \starttyping
+%D \newcount\processlevel
+%D
+%D \def\processaction[#1]#2[#3]%
+%D {\doifelse{#1}{}
+%D {\def\p!compareprocessaction[##1=>##2]%
+%D {\edef\!!stringa{##1}%
+%D \ifx\!!stringa\s!default
+%D \def\commalistelement{#1}%
+%D ##2%
+%D \fi}}
+%D {\let\donottest=\dontprocesstest
+%D \edef\!!stringb{#1}%
+%D \let\donottest=\doprocesstest
+%D \def\p!compareprocessaction[##1=>##2]%
+%D {\edef\!!stringa{##1}%
+%D \ifx\!!stringa\!!stringb
+%D \def\commalistelement{#1}%
+%D ##2%
+%D \let\p!doprocessaction=\gobbleoneargument
+%D \else\ifx\!!stringa\s!unknown
+%D \def\commalistelement{#1}%
+%D ##2%
+%D \fi\fi}}%
+%D \def\p!doprocessaction##1%
+%D {\p!compareprocessaction[##1]}%
+%D \processcommalist[#3]\p!doprocessaction}
+%D
+%D \def\processfirstactioninset[#1]#2[#3]%
+%D {\doifelse{#1}{}
+%D {\processaction[][#3]}
+%D {\def\p!compareprocessaction[##1=>##2][##3]%
+%D {\edef\!!stringa{##1}%
+%D \edef\!!stringb{##3}%
+%D \ifx\!!stringa\!!stringb
+%D \def\commalistelement{##3}%
+%D ##2%
+%D \let\p!doprocessaction=\gobbleoneargument
+%D \let\p!dodoprocessaction=\gobbleoneargument
+%D \else\ifx\!!stringa\s!unknown
+%D \def\commalistelement{##3}%
+%D ##2%
+%D \fi\fi}%
+%D \def\p!doprocessaction##1%
+%D {\def\p!dodoprocessaction####1%
+%D {\p!compareprocessaction[####1][##1]}%
+%D \processcommalist[#3]\p!dodoprocessaction}%
+%D \processcommalist[#1]\p!doprocessaction}}
+%D
+%D \def\processallactionsinset[#1]#2[#3]%
+%D {\doifelse{#1}{}
+%D {\processaction[][#3]}
+%D {\advance\processlevel by 1
+%D \def\p!compareprocessaction[##1=>##2][##3]%
+%D {\edef\!!stringa{##1}%
+%D \edef\!!stringb{##3}%
+%D \ifx\!!stringa\!!stringb
+%D \def\commalistelement{##3}%
+%D ##2%
+%D \let\p!dodoprocessaction=\gobbleoneargument
+%D \else\ifx\!!stringa\s!unknown
+%D \def\commalistelement{##3}%
+%D ##2%
+%D \fi\fi}%
+%D \setvalue{\s!do\the\processlevel}##1%
+%D {\def\p!dodoprocessaction####1%
+%D {\p!compareprocessaction[####1][##1]}%
+%D \processcommalist[#3]\p!dodoprocessaction}%
+%D \processcommalist[#1]{\getvalue{\s!do\the\processlevel}}%
+%D \advance\processlevel by -1 }}
+%D \stoptyping
+%D
+%D The gain of speed in the (again) next implementation is
+%D around 20\%, depending on the application.
+
+\newcount\processlevel
+
+\def\p!compareprocessactionA[#1=>#2][#3]%
+ {\edef\!!stringb{#1}%
+ \ifx\!!stringb\s!default
+ \let\commalistelement\empty
+ #2%
+ \fi}
+
+% \def\p!compareprocessactionB[#1=>#2][#3]%
+% {\expandedaction\!!stringb{#1}%
+% \ifx\!!stringa\!!stringb
+% \def\commalistelement{#3}%
+% #2%
+% \let\p!doprocessaction\gobbleoneargument
+% \else
+% \edef\!!stringb{#1}%
+% \ifx\!!stringb\s!unknown
+% \def\commalistelement{#3}% beware of loops
+% #2%
+% \fi
+% \fi}
+
+% met \quitcommalist tot meer dan 25\% sneller
+
+\def\p!compareprocessactionB[#1=>#2][#3]%
+ {\expandedaction\!!stringb{#1}%
+ \ifx\!!stringa\!!stringb
+ \def\commalistelement{#3}%
+ #2%
+ \expandafter\quitcommalist
+ \else
+ \edef\!!stringb{#1}%
+ \ifx\!!stringb\s!unknown
+ \def\commalistelement{#3}% beware of loops
+ #2%
+ \fi
+ \fi}
+
+\beginTEX
+
+\def\processaction[#1]#2[#3]%
+ {\let\donottest\dontprocesstest
+ \expandedaction\!!stringa{#1}%
+ \let\donottest\doprocesstest
+ \ifx\!!stringa\empty
+ \let\p!compareprocessaction\p!compareprocessactionA
+ \else
+ \let\p!compareprocessaction\p!compareprocessactionB
+ \fi
+ \def\p!doprocessaction##1%
+ {\p!compareprocessaction[##1][#1]}%
+ \processcommalist[#3]\p!doprocessaction
+ \expandactions}
+
+\endTEX
+
+\beginETEX \protected
+
+\def\processaction[#1]#2[#3]% faster version follows
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \let\p!compareprocessaction\p!compareprocessactionA
+ \else
+ \let\p!compareprocessaction\p!compareprocessactionB
+ \fi
+ \def\p!doprocessaction##1%
+ {\p!compareprocessaction[##1][#1]}%
+ \processcommalist[#3]\p!doprocessaction
+ \expandactions}
+
+\endETEX
+
+% \def\p!compareprocessactionC[#1=>#2][#3]%
+% {\expandedaction\!!stringa{#1}%
+% \expandedaction\!!stringb{#3}%
+% \ifx\!!stringa\!!stringb
+% \def\commalistelement{#3}%
+% #2%
+% \let\p!doprocessaction\gobbleoneargument
+% \let\p!dodoprocessaction\gobbleoneargument
+% \else
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\s!unknown
+% \def\commalistelement{#3}%
+% #2%
+% \fi
+% \fi}
+
+\def\p!compareprocessactionC[#1=>#2][#3]%
+ {\expandedaction\!!stringa{#1}%
+ \expandedaction\!!stringb{#3}%
+ \ifx\!!stringa\!!stringb
+ \def\commalistelement{#3}%
+ #2%
+ \expandafter\quitprevcommalist
+ \else
+ \edef\!!stringa{#1}%
+ \ifx\!!stringa\s!unknown
+ \def\commalistelement{#3}%
+ #2%
+ \fi
+ \fi}
+
+\def\processfirstactioninset[#1]#2[#3]% faster version follows
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \processaction[][#3]%
+ \else
+ \def\p!doprocessaction##1%
+ {\def\p!dodoprocessaction####1%
+ {\p!compareprocessactionC[####1][##1]}%
+ \processcommalist[#3]\p!dodoprocessaction}%
+ \processcommalist[#1]\p!doprocessaction
+ \fi
+ \expandactions}
+
+% \def\p!compareprocessactionD[#1=>#2][#3]%
+% {\expandedaction\!!stringa{#1}%
+% \expandedaction\!!stringb{#3}%
+% \ifx\!!stringa\!!stringb
+% \def\commalistelement{#3}%
+% #2%
+% \let\p!dodoprocessaction\gobbleoneargument
+% \else
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\s!unknown
+% \def\commalistelement{#3}%
+% #2%
+% \fi
+% \fi}
+
+\def\p!compareprocessactionD[#1=>#2][#3]%
+ {\expandedaction\!!stringa{#1}%
+ \expandedaction\!!stringb{#3}%
+ \ifx\!!stringa\!!stringb
+ \def\commalistelement{#3}%
+ #2%
+ \expandafter\quitcommalist
+ \else
+ \edef\!!stringa{#1}%
+ \ifx\!!stringa\s!unknown
+ \def\commalistelement{#3}%
+ #2%
+ \fi
+ \fi}
+
+\def\doprocessallactionsinset
+ {\csname\s!do\the\processlevel\endcsname}
+
+\def\processallactionsinset[#1]#2[#3]% faster version follows
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \processaction[][#3]%
+ \else
+ \advance\processlevel \plusone
+ \expandafter\def\csname\s!do\the\processlevel\endcsname##1%
+ {\def\p!dodoprocessaction####1%
+ {\p!compareprocessactionD[####1][##1]}%
+ \processcommalist[#3]\p!dodoprocessaction}%
+ \processcommalist[#1]\doprocessallactionsinset
+ \advance\processlevel \minusone
+ \fi
+ \expandactions}
+
+%D We can speed up these macros a bit when we use a dedicated
+%D commalist processor, one that avoids passing the (often)
+%D big action list.
+
+\beginTEX
+
+\def\processaction[#1]#2[%
+ {\let\donottest\dontprocesstest
+ \expandedaction\!!stringa{#1}%
+ \let\donottest\doprocesstest
+ \ifx\!!stringa\empty
+ \let\p!compareprocessaction\p!compareprocessactionA
+ \else
+ \let\p!compareprocessaction\p!compareprocessactionB
+ \fi
+ \def\p!doprocessaction##1%
+ {\p!compareprocessaction[##1][#1]}%
+ \processnextcommalist\relax\expandactions\p!doprocessaction[}
+
+\endTEX
+
+\beginETEX
+
+\def\processaction[#1]#2[%
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \let\p!compareprocessaction\p!compareprocessactionA
+ \else
+ \let\p!compareprocessaction\p!compareprocessactionB
+ \fi
+ \def\p!doprocessaction##1%
+ {\p!compareprocessaction[##1][#1]}%
+ \processnextcommalist\relax\expandactions\p!doprocessaction[}
+
+\endETEX
+
+\def\processfirstactionsinset[#1]%
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\processaction
+ \else
+ \expandafter\processfirstactionsinsetindeed
+ \fi
+ [#1]}
+
+\def\processfirstactioninsetindeed[#1]#2[#3]%
+ {\def\p!doprocessaction##1%
+ {\def\p!dodoprocessaction####1%
+ {\p!compareprocessactionC[####1][##1]}%
+ \processcommalist[#3]\p!dodoprocessaction}%
+ \processcommalist[#1]\p!doprocessaction
+ \expandactions}
+
+\def\processallactionsinset[#1]%
+ {\expandedaction\!!stringa{#1}%
+ \ifx\!!stringa\empty
+ \expandafter\processaction
+ \else
+ \expandafter\processallactionsinsetindeed
+ \fi
+ [#1]}
+
+\def\processallactionsinsetindeed[#1]#2[#3]%
+ {\advance\processlevel \plusone
+ \expandafter\def\csname\s!do\the\processlevel\endcsname##1%
+ {\def\p!dodoprocessaction####1%
+ {\p!compareprocessactionD[####1][##1]}%
+ \processcommalist[#3]\p!dodoprocessaction}%
+ \processcommalist[#1]\doprocessallactionsinset
+ \advance\processlevel \minusone
+ \expandactions}
+
+\def\processnextcommalist#1#2#3[#4#5]%
+ {#1%
+ \let\nexttoken#4%
+ \global\advance\commalevel \plusone
+ \long\expandafter\def\csname\s!next\the\commalevel\endcsname##1,%
+ {#3{##1}\doprocesscommaitem}%
+ \dodoprocesscommaitem#4#5,]\relax
+ \global\advance\commalevel \minusone
+ #2}
+
+%D I do have an even faster version (saving 3 sec on a 13
+%D sec run for 50K invocations, but normally we don't have
+%D that many calls and that alternative uses more macros and is
+%D even less readable. What we did add, was \type {\@EA}, so
+%D that we can pass a command.
+
+%D \macros
+%D {unexpandedprocessaction,
+%D unexpandedprocessfirstactioninset,
+%D unexpandedprocessallactionsinset}
+%D
+%D Now what are those expansion commands doing there. Well,
+%D sometimes we want to compare actions that may consist off
+%D commands (i.e. are no constants). In such occasions we can
+%D use the a bit slower alternatives:
+
+\def\unexpandedprocessfirstactioninset{\dontexpandactions\processfirstactioninset}
+\def\unexpandedprocessaction {\dontexpandactions\processaction}
+\def\unexpandedprocessallactionsinset {\dontexpandactions\processallactionsinset}
+
+%D By default we expand actions:
+
+\def\expandactions{\let\expandedaction\edef} \expandactions
+
+%D But when needed we convert the strings to meaningful
+%D sequences of characters.
+
+\def\unexpandedaction#1>{}
+
+\def\noexpandedaction#1#2%
+ {\def\convertedargument{#2}%
+ \@EA\edef\@EA#1\@EA{\@EA\unexpandedaction\meaning\convertedargument}}
+
+\def\dontexpandactions%
+ {\let\expandedaction\noexpandedaction}
+
+%D \macros
+%D {getfirstcharacter,firstcharacter, doiffirstcharacter}
+%D
+%D Sometimes the action to be undertaken depends on the
+%D next character. This macro get this character and puts it in
+%D \type{\firstcharacter}.
+%D
+%D \starttyping
+%D \getfirstcharacter {string}
+%D \stoptyping
+%D
+%D A two step expansion is used to prevent problems with
+%D complicated arguments, for instance arguments that
+%D consist of two or more expandable tokens.
+
+\def\dogetfirstcharacter#1#2\\%
+ {\def\firstcharacter{#1}}
+
+\def\getfirstcharacter#1%
+ {\edef\!!stringa{#1}%
+ \expandafter\dogetfirstcharacter\!!stringa\\}
+
+\def\doiffirstcharelse#1#2% char string
+% kort (maar onleesbaar)
+% {\expanded{\dogetfirstcharacter#2}\\\doifelse{#1}\firstcharacter}
+% korter (en begrijpelijk))
+ {\getfirstcharacter{#2}\doifelse{#1}\firstcharacter}
+% snel (maar zelden gebruikt, dus niet zo belangrijk)
+% {\getfirstcharacter{#2}%
+% \edef\!!stringa{#1}%
+% \ifx\!!stringa\firstcharacter
+% \expandafter\firstoftwoarguments
+% \else
+% \expandafter\secondoftwoarguments
+% \fi}
+
+%D \macros
+%D {doifinstringelse, doifincsnameelse}
+%D
+%D We can check for the presence of a substring in a given
+%D sequence of characters.
+%D
+%D \starttyping
+%D \doifinsetelse {substring} {string} {then ...} {else ...}
+%D \stoptyping
+%D
+%D An application of this command can be found further on.
+%D Like before, we first show some alternatives, like the one
+%D we started with:
+%D
+%D \starttyping
+%D \long\def\p!doifinstringelse#1#2#3#4%
+%D {\def\pp!doifinstringelse##1#1##2##3\war%
+%D {\if##2@%
+%D #4%
+%D \else
+%D #3%
+%D \fi}%
+%D \pp!doifinstringelse#2#1@@\war}
+%D
+%D \def\doifinstringelse%
+%D {\ExpandBothAfter\p!doifinstringelse}
+%D \stoptyping
+%D
+%D After this we came to:
+%D
+%D \starttyping
+%D \def\p!doifinstringelse#1#2%
+%D {\def\pp!doifinstringelse##1#1##2##3\war%
+%D {\if##2@}%
+%D \pp!doifinstringelse#2#1@@\war}
+%D
+%D \def\doifinstringelse#1#2#3#4%
+%D {\ExpandBothAfter\p!doifinstringelse{#1}{#2}%
+%D #4%
+%D \else
+%D #3%
+%D \fi}
+%D \stoptyping
+%D
+%D Sometimes the second argument is passed as a macro. By
+%D postponing the expansion of this macro, we gain quite some
+%D run time, simply because the less tokens we pass, the faster
+%D \TEX\ runs. So finally the definition became:
+
+\long\def\doifinstringelse#1%
+ {\edef\@@@instring{#1}% expand #1 here
+ \ifx\@@@instring\empty
+ \@EA\thirdofthreearguments
+ \else
+ \@EA\dodoifinstringelse
+ \fi}
+
+\long\def\dodoifinstringelse#1%
+ {\p!doifinstringelse\@@@instring{#1}%
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\long\def\doifinstring#1%%
+ {\edef\@@@instring{#1}% expand #1 here
+ \ifx\@@@instring\empty
+ \@EA\gobbletwoarguments
+ \else
+ \@EA\dodoifinstring
+ \fi}
+
+\long\def\dodoifinstring#1%
+ {\p!doifinstringelse\@@@instring{#1}%
+ \@EA\firstofoneargument
+ \else
+ \@EA\gobbleoneargument
+ \fi}
+
+%D \starttyping
+%D \beginTEX
+%D
+%D \long\def\p!doifinstringelse#1#2%
+%D {\long\def\pp!doifinstringelse##1#1##2##3\war%
+%D {\csname if\if##2@fals\else tru\fi e\endcsname}%
+%D \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+%D
+%D \endTEX
+%D
+%D \beginETEX \unless
+%D
+%D \long\def\p!doifinstringelse#1#2%
+%D {\long\def\pp!doifinstringelse##1#1##2##3\war%
+%D {\unless\if##2@}%
+%D \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+%D
+%D \endETEX
+%D \stoptyping
+%D
+%D And then \unknown\ after a couple of years, we ran into a
+%D situation where \type {##2} was something \type {{bla}}. So
+%D finally we need to use an auxiliary macro, otherwise we get
+%D funny strings in the output.
+
+% \long\def\p!doifinstringelse#1#2% ##2 can be {abc}
+% {\long\@EA\def\@EA\pp!doifinstringelse\@EA##\@EA1#1##2##3\war % expand #1 here
+% {\ppp!doifinstringelse##2\war}%
+% \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+%
+% \beginTEX
+%
+% \def\ppp!doifinstringelse#1#2\war%
+% {\csname if\ifx#1@fals\else tru\fi e\endcsname}%
+%
+% \endTEX
+%
+% \beginETEX \unless
+%
+% \def\ppp!doifinstringelse#1#2\war%
+% {\unless\ifx#1@}
+%
+% \endETEX
+
+\beginETEX
+
+\long\def\p!doifinstringelse#1#2% ##2 can be {abc}
+ {\long\@EA\def\@EA\pp!doifinstringelse\@EA##\@EA1#1##2##3\war % expand #1 here
+ {\unless\if##2@}%
+% \expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+ \expanded{\pp!doifinstringelse#2#1}@@\war} % expand #2 here
+
+\endETEX
+
+\beginTEX
+
+\long\def\p!doifinstringelse#1#2% ##2 can be {abc}
+ {\long\@EA\def\@EA\pp!doifinstringelse\@EA##\@EA1#1##2##3\war % expand #1 here
+ {\csname if\if##2@fals\else tru\fi e\endcsname}%
+ %\expanded{\pp!doifinstringelse#2#1@@\noexpand\war}} % expand #2 here
+ \expanded{\pp!doifinstringelse#2#1}@@\war} % expand #2 here
+
+\endTEX
+
+%D The next alternative proved to be upto twice as fast on
+%D tasks like checking reserved words in pretty verbatim
+%D typesetting! This is mainly due to the fact that passing
+%D (expanded) strings is much slower that passing a macro.
+%D
+%D \starttyping
+%D \doifincsnameelse {substring} {\string} {then ...} {else ...}
+%D \stoptyping
+%D
+%D Where \type{\doifinstringelse} does as much expansion as
+%D possible, the latter alternative does minimal (one level)
+%D expansion.
+
+\beginTEX
+
+\long\def\p!doifincsnameelse#1#2%
+ {\long\def\pp!doifincsnameelse##1#1##2##3\war
+ {\csname if\if##2@fals\else tru\fi e\endcsname}%
+ \@EA\pp!doifincsnameelse#2#1@@\war}
+
+\endTEX
+
+\beginETEX \unless
+
+\long\def\p!doifincsnameelse#1#2%
+ {\long\def\pp!doifincsnameelse##1#1##2##3\war
+ {\unless\if##2@}%
+ \@EA\pp!doifincsnameelse#2#1@@\war}
+
+\endETEX
+
+\long\def\doifincsnameelse#1#2% % #3#4%
+ {\edef\@@@instring{#1}%
+ \@EA\p!doifincsnameelse\@EA{\@@@instring}{#2}% % #3\else#4\fi}
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+%D \macros
+%D {doifnumberelse}
+%D
+%D The next macro executes a command depending of the outcome
+%D of a test on numerals. This is probably one of the fastest
+%D test possible, exept from a less robust 10||step
+%D \type{\if}||ladder or some tricky \type{\lcode} checking.
+%D
+%D \starttyping
+%D \doifnumberelse {string} {then ...} {else ...}
+%D \stoptyping
+%D
+%D The macro accepts \type{123}, \type{abc}, \type{{}},
+%D \type{\getal} and \type{\the\count...}. This macro is a
+%D rather dirty one.
+%D
+%D \starttyping
+%D \long\def\doifnumberelse#1#2#3%
+%D {\begingroup\donefalse
+%D \ifcase1#1\or\or\or\or\or\or\or\or\or\else\donetrue\fi
+%D \ifdone\endgroup#2\else\endgroup#3\fi}
+%D \stoptyping
+%D
+%D Or better:
+%D
+%D \starttyping
+%D \long\def\doifnumberelse#1%
+%D {\begingroup\donefalse
+%D \ifcase1#1\or\or\or\or\or\or\or\or\or\else\donetrue\fi
+%D \ifdone
+%D \endgroup\expandafter\firstoftwoarguments
+%D \else
+%D \endgroup\expandafter\secondoftwoarguments
+%D \fi}
+%D \stoptyping
+%D
+%D A previous implementation was:
+%D
+%D \starttyping
+%D \long\def\doifnumberelse#1#2#3%
+%D {\getfirstcharacter{#1}%
+%D \@EA\p!doifinstringelse\@EA{\firstcharacter}{1234567890}%
+%D #2%
+%D \else
+%D #3%
+%D \fi}
+%D \starttyping
+%D
+%D And before we had \type{\p!doifinstringelse} available, we
+%D used:
+%D
+%D \starttyping
+%D \def\doifnumberelse#1%
+%D {\getfirstcharacter{#1}%
+%D \rawdoifinsetelse{\firstcharacter}{1,2,3,4,5,6,7,8,9,0}}
+%D \stoptyping
+%D
+%D The implementation using \type {\ifcase} is much faster, but
+%D the next one is not, not even when testing milion calls.
+%D
+%D \starttyping
+%D \newif\ifitsanumber
+%D
+%D \long\def\isitanumber#1%
+%D {\itsanumberfalse
+%D \ifcase1#1\or\or\or\or\or\or\or\or\or\else\itsanumbertrue\fi}
+%D
+%D \long\def\doifnumberelse#1#2#3%
+%D {\isitanumber{#1}\ifitsanumber#2\else#3\fi}
+%D \stoptyping
+%D
+%D After a while the next evolved and this one is the one we
+%D will use. This one is some 5\% faster than the group/done
+%D one (partly because it does not have to pass arguments).
+%D Even more important is that this alternative is fully
+%D expandable!
+
+\long\def\doifnumberelse#1%
+ {\ifcase0\ifcase1#1\or\or\or\or\or\or\or\or\or\else1\fi\space
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+%D \macros
+%D {makerawcommalist,
+%D rawdoinsetelse,
+%D rawprocesscommalist,
+%D rawprocessaction}
+%D
+%D Some of the commands mentioned earlier are effective but
+%D slow. When one is desperately in need of faster alternatives
+%D and when the conditions are predictable safe, the \type{\raw}
+%D alternatives come into focus. A major drawback is that
+%D they do not take \type{\c!constants} into account, simply
+%D because no expansion is done. This is no problem with
+%D \type{\rawprocesscommalist}, because this macro does not
+%D compare anything. Expandable macros are permitted as search
+%D string.
+%D
+%D \starttyping
+%D \makerawcommalist[string,string,...]\stringlist
+%D \rawdoifinsetelse{string}{string,...}{...}{...}
+%D \rawprocesscommalist[string,string,...]\commando
+%D \rawprocessaction[x][a=>\a,b=>\b,c=>\c]
+%D \stoptyping
+%D
+%D Spaces embedded in the list, for instance after commas,
+%D spoil the search process. The gain in speed depends on the
+%D length of the argument (the longer the argument, the less
+%D we gain).
+%D
+%D The slow alternative looks like:
+%D
+%D \starttyping
+%D \def\makerawcommalist[#1]#2%
+%D {\def\appendtocommalist##1%
+%D {\doifelse{#2}{}
+%D {\edef#2{##1}}
+%D {\edef#2{#2,##1}}}%
+%D \def#2{}%
+%D \processcommalist[#1]\appendtocommalist}
+%D \stoptyping
+%D
+%D But we prefer:
+
+% \appendtocommalist is defined in syst-ext
+
+\def\makerawcommalist[#1]#2% use \processnext ... here
+ {\def\domakerawcommalist##1% we don't expand ##1
+ {\ifx#2\empty
+ \def#2{##1}%
+ \else
+ \@EA\def\@EA#2\@EA{#2,##1}%
+ \fi}%
+ \let#2\empty
+ \processcommalist[#1]\domakerawcommalist}
+
+\def\rawprocesscommaitem#1,#2% #2 eats up preceding space
+ {\if]#1\else
+ \csname\s!next\the\commalevel\endcsname{#1}%
+ \expandafter\rawprocesscommaitem
+ \fi#2}
+
+\def\rawprocesscommalist[#1]#2% accepteert ook [\cs]
+ {\global\advance\commalevel \plusone
+ \expandafter\let\csname\s!next\the\commalevel\endcsname#2%
+ \expandafter\rawprocesscommaitem#1,],% \relax
+ \global\advance\commalevel \minusone }
+
+\def\rawprocesscommacommand[#1]% not really needed
+ {\expanded{\rawprocesscommalist[#1]}}
+
+% \def\rawdoifinsetelse#1#2{\doifinstringelse{,#1,}{,#2,}}
+% \def\rawdoifinset #1#2{\doifinstring {,#1,}{,#2,}}
+
+\def\@@rawempty{,,}
+
+\long\def\rawdoifinsetelse#1%
+ {\edef\@@@instring{,#1,}% expand #1 here
+ \ifx\@@@instring\@@rawempty
+ \@EA\thirdofthreearguments
+ \else
+ \@EA\rawdodoifinsetelse
+ \fi}
+
+\long\def\rawdodoifinsetelse#1%
+ {\p!doifinstringelse\@@@instring{,#1,}%
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\long\def\rawdoifinset#1%
+ {\edef\@@@instring{,#1,}% expand #1 here
+ \ifx\@@@instring\@@rawempty
+ \@EA\gobbletwoarguments
+ \else
+ \@EA\rawdodoifinset
+ \fi}
+
+\long\def\rawdodoifinset#1%%
+ {\p!doifinstringelse\@@@instring{,#1,}%
+ \@EA\firstofoneargument
+ \else
+ \@EA\gobbleoneargument
+ \fi}
+
+%D Some more raw material:
+
+\def\p!rawprocessaction[#1][#2]%
+ {\def\pp!rawprocessaction##1,#1=>##2,##3\war%
+ {\if##3@\else
+ \def\!!processaction{##2}%
+ \fi}%
+ \pp!rawprocessaction,#2,#1=>,@\war}
+
+\def\rawprocessaction[#1]#2[#3]%
+ {\edef\!!stringa{#1}%
+ \edef\!!stringb{undefined}% better \!!undefined
+ \let\!!processaction\!!stringb
+ \ifx\!!stringa\empty
+ \@EA\p!rawprocessaction\@EA[\s!default][#3]%
+ \else
+ \expandafter\p!rawprocessaction\expandafter[\!!stringa][#3]%
+ \ifx\!!processaction\!!stringb
+ \@EA\p!rawprocessaction\@EA[\s!unknown][#3]%
+ \fi
+ \fi
+ \ifx\!!processaction\!!stringb
+ \else
+ \!!processaction
+ \fi}
+
+% not needed
+%
+% \def\rawprocessallactionsinset[#1]#2[#3]%
+% {\def\docommando##1%
+% {\rawprocessaction[##1][#3]}%
+% \processcommalist[#1]\docommando}
+
+%D When we process the list \type{a,b,c,d,e}, the raw routine
+%D takes over 30\% less time, when we feed $20+$ character
+%D strings we gain about 20\%. Alternatives which use
+%D \type{\futurelet} perform worse. Part of the speedup is
+%D due to the \type{\let} and \type{\expandafter} in the test.
+
+% %D \macros
+% %D {processunexpandedcommalist}
+% %D
+% %D When processing commalists, the arguments are expanded. The
+% %D main reason for doing so lays in the fact that these
+% %D macros are used for interfacing. The next alternative can be used
+% %D for
+% %D
+% %D \starttyping
+% %D \processunexpandedcommalist
+% %D [\alfa\beta,\gamma,\delta\epsilon]
+% %D \handleitem
+% %D \stoptyping
+% %D
+% %D This time nesting is not supported.
+%
+% %\def\processunexpandedcommaitem#1,%
+% % {\if]\noexpand#1%
+% % \let\nextcommaitem\relax
+% % \else
+% % \handleunexpandedcommaitem{#1}%
+% % \let\nextcommaitem\processunexpandedcommaitem
+% \fi
+% \nextcommaitem}
+%
+% faster:
+%
+% \def\processunexpandedcommaitem#1,%
+% {\if]\noexpand#1\else
+% \handleunexpandedcommaitem{#1}%
+% \expandafter\processunexpandedcommaitem
+% \fi}
+%
+% \def\processunexpandedcommalist[#1]#2%
+% {\def\handleunexpandedcommaitem{#2}%
+% \processunexpandedcommaitem#1,],}% \relax}
+%
+% %D Or faster:
+%
+% \def\processunexpandedcommaitem#1,%
+% {\if]\noexpand#1\else
+% \handleunexpandedcommaitem{#1}%
+% \expandafter\processunexpandedcommaitem
+% \fi}
+
+%D \macros
+%D {dosetvalue,dosetevalue,dosetgvalue,docopyvalue,doresetvalue,
+%D dogetvalue}
+%D
+%D When we are going to do assignments, we have to take
+%D multi||linguality into account. For the moment we keep
+%D things simple and single||lingual.
+%D
+%D \starttyping
+%D \dosetvalue {label} {variable} {value}
+%D \dosetevalue {label} {variable} {value}
+%D \dosetgvalue {label} {variable} {value}
+%D \docopyvalue {to label} {from label} {variable}
+%D \doresetvalue {label} {variable}
+%D \stoptyping
+%D
+%D These macros are in fact auxiliary ones and are not meant
+%D for use outside the assignment macros.
+
+\def\dosetvalue#1#2% #3
+ {\@EA\def\csname#1#2\endcsname} % {#3}}
+
+\def\dosetevalue#1#2% #3
+ {\@EA\edef\csname#1#2\endcsname} % {#3}}
+
+\def\dosetgvalue#1#2% #3
+ {\@EA\gdef\csname#1#2\endcsname} % {#3}}
+
+\def\doresetvalue#1#2%
+ {\@EA\let\csname#1#2\endcsname\empty}
+
+\def\doignorevalue#1#2#3%
+ {\@EA\let\csname#1#2\endcsname\empty}
+
+\def\docopyvalue#1#2#3%
+ {\@EA\def\csname#1#3\endcsname{\csname#2#3\endcsname}}
+
+%D \macros
+%D {doassign,undoassign,doassignempty}
+%D
+%D Assignments are the backbone of \CONTEXT. Abhorred by the
+%D concept of style file hacking, we took a considerable effort
+%D in building a parameterized system. Unfortunately there is a
+%D price to pay in terms of speed. Compared to other packages
+%D and taking the functionality of \CONTEXT\ into account, the
+%D total size of the format file is still very acceptable. Now
+%D how are these assignments done.
+%D
+%D Assignments can be realized with:
+%D
+%D \starttyping
+%D \doassign[label][variable=value]
+%D \undoassign[label][variable=value]
+%D \stoptyping
+%D
+%D and:
+%D
+%D \starttyping
+%D \doassignempty[label][variable=value]
+%D \stoptyping
+%D
+%D Assignments like \type{\doassign} are compatible with:
+%D
+%D \starttyping
+%D \def\labelvariable{value}
+%D \stoptyping
+%D
+%D We do check for the presence of an \type{=} and loudly
+%D complain of it's missed. We will redefine this macro later
+%D on, when a more advanced message mechanism is implemented.
+
+\newif\iferrorisfatal
+
+\def\waitonfatalerror
+ {\iferrorisfatal\wait\fi}
+
+\def\showassignerror#1#2%
+ {\writestatus{setup}{missing or ungrouped '=' after '#1' in line #2}%
+ \waitonfatalerror}
+
+%\def\p!doassign#1[#2][#3=#4=#5]%
+% {\let\donottest\dontprocesstest
+% \edef\!!stringa{#5}%
+% \let\!!stringb\relax
+% \let\donottest\doprocesstest
+% \ifx\!!stringa\!!stringb
+% \showassignerror{#3}%
+% \else
+% #1{#2}{#3}{#4}%
+% \fi}
+
+\def\p!doassign#1[#2][#3=#4=#5]%
+ {\ifx\empty#3\else % and definitely not \ifx#3\empty
+ \ifx\relax#5%
+ \showassignerror{#3}{\the\inputlineno\space(#2)}%
+ \else
+ #1{#2}{#3}{#4}%
+ \fi
+ \fi}
+
+\def\doassign [#1][#2]{\p!doassign\dosetvalue [#1][#2==\relax]}
+\def\doeassign [#1][#2]{\p!doassign\dosetevalue [#1][#2==\relax]}
+\def\undoassign[#1][#2]{\p!doassign\doresetvalue[#1][#2==\relax]}
+
+\def\doassignempty[#1][#2=#3]%
+ {\ifundefined{#1#2}\dosetvalue{#1}{#2}{#3}\fi}
+
+%D \macros
+%D {getparameters,geteparameters,getgparameters,
+%D forgetparameters}
+%D
+%D Using the assignment commands directly is not our
+%D ideal of user friendly interfacing, so we take some further
+%D steps.
+%D
+%D \starttyping
+%D \getparameters [label] [...=...,...=...]
+% %D \forgetparameters [label] [...=...,...=...]
+%D \stoptyping
+%D
+%D Again, the label identifies the category a variable
+%D belongs to. The second argument can be a comma separated
+%D list of assignments.
+%D
+%D \starttyping
+%D \getparameters
+%D [demo]
+%D [alfa=1,
+%D beta=2]
+%D \stoptyping
+%D
+%D is equivalent to
+%D
+%D \starttyping
+%D \def\demoalfa{1}
+%D \def\demobeta{2}
+%D \stoptyping
+%D
+%D
+%D In the pre||multi||lingual stadium \CONTEXT\ took the next
+%D approach. With
+%D
+%D \starttyping
+%D \def\??demo {@@demo}
+%D \def\!!alfa {alfa}
+%D \def\!!beta {beta}
+%D \stoptyping
+%D
+%D calling
+%D
+%D \starttyping
+%D \getparameters
+%D [\??demo]
+%D [\!!alfa=1,
+%D \!!beta=2]
+%D \stoptyping
+%D
+%D lead to:
+%D
+%D \starttyping
+%D \def\@@demoalfa{1}
+%D \def\@@demobeta{2}
+%D \stoptyping
+%D
+%D Because we want to be able to distinguish the \type{!!}
+%D pre||tagged user supplied variables from internal
+%D counterparts, we will introduce a slightly different tag in
+%D the multi||lingual modules. There we will use \type{c!} or
+%D \type{v!}, depending on the context.
+%D
+%D By calling \type{\p!doassign} directly, we save ourselves
+%D some argument passing and gain some speed. Whatever
+%D optimizations we do, this command will always be one of the
+%D bigger bottlenecks.
+%D
+%D The alternative \type{\geteparameters} --- it's funny to
+%D see that this alternative saw the light so lately --- can be
+%D used to do expanded assigments.
+
+\def\dogetparameters#1[#2]#3[#4]%
+ {\def\p!dogetparameter##1%
+ {\p!doassign#1[#2][##1==\relax]}%
+ \processcommalist[#4]\p!dogetparameter}
+
+\def\getparameters {\dogetparameters\dosetvalue}
+\def\geteparameters {\dogetparameters\dosetevalue}
+\def\getgparameters {\dogetparameters\dosetgvalue}
+\def\forgetparameters{\dogetparameters\doignorevalue}
+
+\let\getexpandedparameters=\geteparameters
+
+%D This one is slightly faster:
+
+\def\dogetparameters#1[#2]#3[#4%
+ {\if\noexpand#4]%
+ \expandafter\gobbleoneargument
+ \else
+ \def\p!dogetparameter##1{\p!doassign#1[#2][##1==\relax]}%
+ \expandafter\xdogetparameters
+ \fi#4}
+
+\def\xdogetparameters#1]%
+ {\processcommalist[#1]\p!dogetparameter}
+
+%D The next alternative is much faster but also uglier. Because
+%D in \XML\ processing we will probably set much more parameters
+%D than normally we need this faster one.
+
+\def\dogetparameters#1[#2]#3[#4%
+ {\if\noexpand#4]%
+ \expandafter\gobbleoneargument
+ \else
+ \def\p!dogetparameter{\p!doassign#1#2}%
+ \expandafter\xdogetparameters
+ \fi#4}
+
+\def\xdogetparameters#1]%
+ {\xprocesscommaitem#1,],\@relax@}
+
+% \long\def\xprocesscommaitem#1,#2% #2 takes space before ,
+% {\if]#1%
+% \expandafter\gobbleoneargument
+% \else
+% \p!dogetparameter\@relax@#1==\@relax@
+% \expandafter\xprocesscommaitem
+% \fi#2}
+
+\long\def\xprocesscommaitem#1,#2% #2 takes space before ,
+ {\if,#1,% dirty trick for testing #1=empty
+ \@EA\xprocesscommaitem
+ \else\if]#1%
+ \@EAEAEA\gobbleoneargument
+ \else
+ \p!dogetparameter\@relax@#1==\empty\@relax@
+ \@EAEAEA\xprocesscommaitem
+ \fi\fi#2}
+
+%D Here we use a slightly different assignment macro:
+
+% \def\p!doassign#1#2\@relax@#3=#4=#5\@relax@
+% {\ifx\@relax@#5\@EA\xshowassignerror\else\@EA#1\fi{#2}{#3}{#4}}
+
+% \def\p!doassign#1#2\@relax@#3=#4=#5\@relax@
+% {\ifx#5\empty\@EA\xshowassignerror\else\@EA#1\fi{#2}{#3}{#4}}
+
+\def\p!doassign#1#2\@relax@#3=#4=#5#6\@relax@
+ {\ifx#5\empty
+ \@EA\xshowassignerror
+ \else\ifx#5=%
+ \@EAEAEA#1%
+ \else
+ \@EAEAEA\xshowassignerror
+ \fi\fi
+ {#2}{#3}{#4}}
+
+\def\xshowassignerror#1#2#3%
+ {\showassignerror{#2}{\the\inputlineno\space(#1)}}
+
+%D Now we also have to change the other macros that depend
+%D on this low level one.
+
+% \def\doassign [#1][#2]{\p!doassign\dosetvalue #1\@relax@#2==\@relax@}
+% \def\doeassign [#1][#2]{\p!doassign\dosetevalue #1\@relax@#2==\@relax@}
+% \def\undoassign[#1][#2]{\p!doassign\doresetvalue#1\@relax@#2==\@relax@}
+
+\def\doassign [#1][#2]{\p!doassign\dosetvalue #1\@relax@#2==\empty\@relax@}
+\def\doeassign [#1][#2]{\p!doassign\dosetevalue #1\@relax@#2==\empty\@relax@}
+\def\undoassign[#1][#2]{\p!doassign\doresetvalue#1\@relax@#2==\empty\@relax@}
+
+%D \macros
+%D {getemptyparameters}
+%D
+%D Sometimes we explicitly want variables to default to an
+%D empty string, so we welcome:
+%D
+%D \starttyping
+%D \getemptyparameters [label] [...=...,...=...]
+%D \stoptyping
+
+\def\getemptyparameters[#1]#2[#3]%
+ {\def\p!dogetemptyparameter##1%
+ {\doassignempty[#1][##1]}%
+ \processcommalist[#3]\p!dogetemptyparameter}
+
+%D \macros
+%D {copyparameters}
+%D
+%D Some \CONTEXT\ commands take their default setups from
+%D others. All commands that are able to provide backgounds
+%D or rules around some content, for instance default to the
+%D standard command for ruled boxes. Is situations like this
+%D we can use:
+%D
+%D \starttyping
+%D \copyparameters [to-label] [from-label] [name1,name2,...]
+%D \stoptyping
+%D
+%D For instance
+%D
+%D \starttyping
+%D \copyparameters
+%D [internal][external]
+%D [alfa,beta]
+%D \stoptyping
+%D
+%D Leads to:
+%D
+%D \starttyping
+%D \def\internalalfa {\externalalfa}
+%D \def\internalbeta {\externalbeta}
+%D \stoptyping
+%D
+%D By using \type{\docopyvalue} we've prepared this command
+%D for use in a multi||lingual environment.
+
+\def\copyparameters[#1]#2[#3]#4[#5]%
+ {\doifnot{#1}{#3}
+ {\def\docopyparameter{\docopyvalue{#1}{#3}}%
+ %\def\docopyparameter##1{\docopyvalue{#1}{#3}{##1}}%
+ \processcommalist[#5]\docopyparameter}}
+
+%D \macros
+%D {doifassignmentelse}
+%D
+%D A lot of \CONTEXT\ commands take optional arguments, for
+%D instance:
+%D
+%D \starttyping
+%D \dothisorthat[alfa,beta]
+%D \dothisorthat[first=foo,second=bar]
+%D \dothisorthat[alfa,beta][first=foo,second=bar]
+%D \stoptyping
+%D
+%D Although a combined solution is possible, we prefer a
+%D seperation. The next command takes care of propper
+%D handling of such multi||faced commands.
+%D
+%D \starttyping
+%D \doifassignmentelse {...} {then ...} {else ...}
+%D \stoptyping
+
+% not robust
+%
+% \def\doifassignmentelse%
+% {\doifinstringelse{=}}
+%
+% readable
+%
+% \def\doifassignmentelse#1%
+% {\convertargument#1\to\ascii
+% \doifinstringelse{=}{\ascii}}
+
+\def\doifassignmentelse#1%
+ {\convertargument#1\to\ascii
+ \doifinstringelse=\ascii}
+
+%D \macros
+%D {ifparameters,checkparameters}
+%D
+%D A slightly different one is \type{\checkparameters}, which
+%D also checks on the presence of a~\type{=}.
+%D
+%D The boolean \type{\ifparameters} can be used afterwards.
+%D Combining both in one \type{\if}||macro would lead to
+%D problems with nested \type{\if}'s.
+%D
+%D \starttyping
+%D \checkparameters[argument]
+%D \stoptyping
+
+\newif\ifparameters
+
+\def\p!checkparameters#1=#2#3\war%
+ {\if#2@\parametersfalse\else\parameterstrue\fi}
+
+\def\checkparameters[#1]%
+ {\p!checkparameters#1=@@\war}
+
+%D \macros
+%D {getfromcommalist,getfromcommacommand,
+%D commalistelement,
+%D getcommalistsize,getcommacommandsize}
+%D
+%D It's possible to get an element from a commalist or a
+%D command representing a commalist.
+%D
+%D \starttyping
+%D \getfromcommalist [string] [n]
+%D \getfromcommacommand [string,\strings,string,...] [n]
+%D \stoptyping
+%D
+%D The difference betwee the two of them is the same as the
+%D difference between \type{\processcomma...}. The found string
+%D is stored in \type{\commalistelement}.
+%D
+%D We can calculate the size of a comma separated list by
+%D using:
+%D
+%D \starttyping
+%D \getcommalistsize [string,string,...]
+%D \getcommacommandsize [string,\strings,string,...]
+%D \stoptyping
+%D
+%D Afterwards, the length is available in the macro
+%D \type{\commalistsize} (not a \COUNTER).
+
+\newcount\commalistcounter
+
+\def\commalistsize{0}
+
+\def\p!dogetcommalistsize#1%
+ {\advance\commalistcounter\plusone}
+
+\def\getcommalistsize[#1]%
+ {\commalistcounter\zerocount
+ \processcommalist[#1]\p!dogetcommalistsize % was [{#1}]
+ \edef\commalistsize{\the\commalistcounter}}
+
+\def\getcommacommandsize[#1]%
+ {\edef\commacommand{#1}%
+ \scratchtoks\expandafter{\expandafter[\commacommand]}%
+ \expandafter\getcommalistsize\the\scratchtoks }
+
+% to be tested first
+%
+% \def\getcommacommandsize[#1]%
+% {\expanded{\getcommalistsize[#1]}}
+
+% \def\p!dogetfromcommalist#1%
+% {\advance\commalistcounter \minusone
+% \ifcase\commalistcounter
+% \def\commalistelement{#1}%
+% \begingroup\def\doprocesscommaitem##1]{\endgroup}%
+% \fi}
+
+\def\p!dogetfromcommalist#1%
+ {\advance\commalistcounter \minusone
+ \ifcase\commalistcounter
+ \def\commalistelement{#1}%
+ \expandafter\quitcommalist
+ \fi}
+
+\def\getfromcommalist[#1]#2[#3]%
+ {\let\commalistelement\empty
+ \commalistcounter#3\relax
+ \processcommalist[#1]\p!dogetfromcommalist}
+
+% \def\getfromcommacommand[#1]% why so complicated, still needed?
+% {\edef\commacommand{#1}%
+% \toks0=\expandafter{\expandafter[\commacommand]}%
+% \expandafter\getfromcommalist\the\toks0 }
+
+\def\getfromcommacommand[#1]%
+ {\expanded{\getfromcommalist[#1]}}
+
+%D Because 0, 1 and~2 are often asked for, we optimize this
+%D macro for those cases. The indirect call however slows
+%D down the other cases.
+%D
+%D \starttyping
+%D \def\p!dogetfirstfromcommalist [#1,#2]{\def\commalistelement{#1}}
+%D \def\p!dogetsecondfromcommalist[#1,#2,#3]{\def\commalistelement{#2}}
+%D \let\p!dogetotherfromcommalist=\getfromcommalist
+%D
+%D \def\getfromcommalist[#1]#2[#3]% optimized for 0,1,2
+%D {\ifcase#3\relax
+%D \let\commalistelement\empty
+%D \or
+%D \p!dogetfirstfromcommalist[#1,]%
+%D \or
+%D \p!dogetsecondfromcommalist[#1,,]%
+%D \else
+%D \p!dogetotherfromcommalist[#1][#3]%
+%D \fi}
+%D \stoptyping
+%D
+%D Even worse, this alternative does not strip preceding
+%D spaces, which is what we want. So, we stick to the slow
+%D alternative.
+
+%D Watertight (and efficient) solutions are hard to find, due
+%D to the handling of braces during parameters passing and
+%D scanning. Nevertheless:
+%D
+%D \startbuffer
+%D \def\dosomething#1{(#1=\commalistsize) }
+%D
+%D \getcommalistsize [\hbox{$a,b,c,d,e,f$}] \dosomething 1
+%D \getcommalistsize [{a,b,c,d,e,f}] \dosomething 1
+%D \getcommalistsize [{a,b,c},d,e,f] \dosomething 4
+%D \getcommalistsize [a,b,{c,d,e},f] \dosomething 4
+%D \getcommalistsize [a{b,c},d,e,f] \dosomething 4
+%D \getcommalistsize [{a,b}c,d,e,f] \dosomething 4
+%D \getcommalistsize [] \dosomething 0
+%D \getcommalistsize [{[}] \dosomething 1
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D reports:
+%D
+%D \getbuffer
+
+%D \macros
+%D {dogetcommalistelement,dogetcommacommandelement}
+%D
+%D For low level (fast) purposes, we can also use the next
+%D alternative, which can handle 8~elements at most.
+%D
+%D \starttyping
+%D \dogetcommalistelement1\from a,b,c\to\commalistelement
+%D \stoptyping
+
+\def\dodogetcommalistelement#1\from#2,#3,#4,#5,#6,#7,#8\to#9%
+ {\edef#9{\ifcase#1\relax\or#2\or#3\or#4\or#5\or#6\or#7\or#8\fi}}
+
+% maybe better:
+%
+% {\@EA\edef\@EA#9\@EA{\ifcase#1\relax\or#2\or#3\or#4\or#5\or#6\or#7\or#8\fi}}
+
+\def\dogetcommalistelement#1\from#2\to%
+ {\dodogetcommalistelement#1\from#2,,,,,,\to}
+
+% check sources
+
+\def\dogetcommacommandelement#1\from#2\to%
+ {\@EA\dodogetcommalistelement\@EA#1\@EA\from#2,,,,,,\to}
+
+%D \macros
+%D {dosingleargument,dodoubleargument,dotripleargument,
+%D doquadrupleargument,doquintupleargument,dosixtupleargument,
+%D doseventupleargument}
+%D
+%D When working with delimited arguments, spaces and
+%D lineendings can interfere. The next set of macros uses
+%D \TEX' internal scanner for grabbing everything between
+%D arguments. Forgive me the funny names.
+%D
+%D \starttyping
+%D \dosingleargument\commando = \commando[#1]
+%D \dodoubleargument\commando = \commando[#1][#2]
+%D \dotripleargument\commando = \commando[#1][#2][#3]
+%D \doquadrupleargument\commando = \commando[#1][#2][#3][#4]
+%D \doquintupleargument\commando = \commando[#1][#2][#3][#4][#5]
+%D \dosixtupleargument\commando = \commando[#1][#2][#3][#4][#5][#6]
+%D \doseventupleargument\command= \commando[#1][#2][#3][#4][#5][#6][#7]
+%D \stoptyping
+%D
+%D These macros are used in the following way:
+%D
+%D \starttyping
+%D \def\dosetupsomething[#1][#2]%
+%D {... #1 ... #2 ...}
+%D
+%D \def\setupsomething%
+%D {\dodoubleargument\dosetupsomething}
+%D \stoptyping
+%D
+%D The implementation can be surprisingly simple and needs no
+%D further explanation, like:
+%D
+%D \starttyping
+%D \def\dosingleargument#1[#2]%
+%D {#1[#2]}
+%D \def\dotripleargument#1[#2]#3[#4]#5[#6]%
+%D {#1[#2][#4][#6]}
+%D \def\doquintupleargument#1%
+%D {\def\dodoquintupleargument[##1]##2[##3]##4[##5]##6[##7]##8[##9]%
+%D {#1[##1][##3][##5][##7][##9]}%
+%D \dodoquintupleargument}
+%D \stoptyping
+%D
+%D Because \TEX\ accepts 9~arguments at most, we have to use
+%D two||step solution when getting five or more arguments.
+%D
+%D When developing more and more of the real \CONTEXT, we
+%D started using some alternatives that provided empty
+%D arguments (in fact optional ones) whenever the user failed
+%D to supply them. Because this more complicated macros enable
+%D us to do some checking, we reimplemented the non||empty
+%D ones.
+
+\def\dosingleargument {\chardef\expectedarguments 1 \dosingleempty }
+\def\dodoubleargument {\chardef\expectedarguments 2 \dodoubleempty }
+\def\dotripleargument {\chardef\expectedarguments 3 \dotripleempty }
+\def\doquadrupleargument {\chardef\expectedarguments 4 \doquadrupleempty }
+\def\doquintupleargument {\chardef\expectedarguments 5 \doquintupleempty }
+\def\dosixtupleargument {\chardef\expectedarguments 6 \dosixtupleempty }
+\def\doseventupleargument{\chardef\expectedarguments 7 \doseventupleempty}
+
+%D \macros
+%D {iffirstagument,ifsecondargument,ifthirdargument,
+%D iffourthargument,iffifthargument,ifsixthargument,
+%D ifseventhargument}
+%D
+%D We use some signals for telling the calling macros if all
+%D wanted arguments are indeed supplied by the user.
+
+\newif\iffirstargument
+\newif\ifsecondargument
+\newif\ifthirdargument
+\newif\iffourthargument
+\newif\iffifthargument
+\newif\ifsixthargument
+\newif\ifseventhargument
+
+%D \macros
+%D {dosingleempty,dodoubleempty,dotripleempty,
+%D doquadrupleempty,doquintupleempty,dosixtupeempty,
+%D doseventupleempty}
+%D
+%D The empty argument supplying macros mentioned before, look
+%D like:
+%D
+%D \starttyping
+%D \dosingleempty \command
+%D \dodoubleempty \command
+%D \dotripleempty \command
+%D \doquadrupleempty \command
+%D \doquintupleempty \command
+%D \dosixtupleempty \command
+%D \doseventupleempty\command
+%D \stoptyping
+%D
+%D So \type{\dodoubleempty} leades to:
+%D
+%D \starttyping
+%D \command[#1][#2]
+%D \command[#1][]
+%D \command[][]
+%D \stoptyping
+%D
+%D Depending of the generousity of the user. Afterwards one can
+%D use the \type{\if...argument} boolean. For novice: watch
+%D the stepwise doubling of \type{#}'s
+
+% idea: \ignorespaces afterwards
+
+\chardef\noexpectedarguments=0
+\chardef\expectedarguments =0
+
+\def\showargumenterror#1#2%
+ {\writestatus{system}{#1 argument(s) expected in line #2}}
+
+% \long\def\dogetargument#1#2#3#4% redefined in mult-ini
+% {\doifnextcharelse{#1}
+% {\let\expectedarguments\noexpectedarguments
+% #3\dodogetargument}
+% {\ifnum\expectedarguments>\noexpectedarguments
+% \showargumenterror{\expectedarguments}
+% \fi
+% \let\expectedarguments\noexpectedarguments
+% #4\dodogetargument#1#2}}
+%
+% less to pass
+
+\def\doshowargumenterror
+ {\ifnum\expectedarguments>\noexpectedarguments
+ \showargumenterror{\number\expectedarguments}{\number\inputlineno}%
+ \fi
+ \noshowargumenterror}
+
+\def\noshowargumenterror
+ {\let\expectedarguments\noexpectedarguments}
+
+% \long\def\dogetargument#1#2#3#4%
+% {\doifnextcharelse#1%
+% {\noshowargumenterror#3\dodogetargument}
+% {\doshowargumenterror#4\dodogetargument#1#2}}
+%
+% faster ?
+
+\long\def\dogetargument#1#2#3#4%
+ {\let\charactertoken=#1%
+ \def\!!stringa{\noshowargumenterror#3\dodogetargument}%
+ \def\!!stringb{\doshowargumenterror#4\dodogetargument#1#2}%
+ \futurelet\nexttoken\inspectnextcharacter}
+
+%\def\getsingleempty#1#2#3%
+% {\def\dodogetargument%
+% {#3}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\getdoubleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\gettripleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument#1####1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2%
+% #1####1#2}%
+% \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\getquadrupleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument#1####1#2%
+% {\def\dodogetargument#1########1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2%
+% #1####1#2%
+% #1########1#2}%
+% \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+% \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\getquintupleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument#1####1#2%
+% {\def\dodogetargument#1########1#2%
+% {\def\dodogetargument#1################1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2%
+% #1####1#2%
+% #1########1#2%
+% #1################1#2}%
+% \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+% \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+% \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\getsixtupleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument#1####1#2%
+% {\def\dodogetargument#1########1#2%
+% {\def\dodogetargument#1################1#2%
+% {\def\dodogetargument#1################################1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2%
+% #1####1#2%
+% #1########1#2%
+% #1################1#2%
+% #1################################1#2}%
+% \dogetargument#1#2\sixthargumenttrue\sixthargumentfalse}%
+% \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+% \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+% \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+%
+%\def\getseventupleempty#1#2#3%
+% {\def\dodogetargument#1##1#2%
+% {\def\dodogetargument#1####1#2%
+% {\def\dodogetargument#1########1#2%
+% {\def\dodogetargument#1################1#2%
+% {\def\dodogetargument#1################################1#2%
+% {\def\dodogetargument#1###############################%
+% ################################1#2%
+% {\def\dodogetargument%
+% {#3#1##1#2%
+% #1####1#2%
+% #1########1#2%
+% #1################1#2%
+% #1################################1#2%
+% #1###############################%
+% ################################1#2}%
+% \dogetargument#1#2\seventhargumenttrue\seventhargumentfalse}%
+% \dogetargument#1#2\sixthargumenttrue\sixthargumentfalse}%
+% \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+% \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+% \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+% \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+% \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getsingleempty#1#2#3%
+ {\def\dodogetargument%
+ {#3}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getdoubleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\gettripleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument#1####1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2%
+ #1{####1}#2}%
+ \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getquadrupleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument#1####1#2%
+ {\def\dodogetargument#1########1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2%
+ #1{####1}#2%
+ #1{########1}#2}%
+ \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+ \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getquintupleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument#1####1#2%
+ {\def\dodogetargument#1########1#2%
+ {\def\dodogetargument#1################1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2%
+ #1{####1}#2%
+ #1{########1}#2%
+ #1{################1}#2}%
+ \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+ \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+ \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getsixtupleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument#1####1#2%
+ {\def\dodogetargument#1########1#2%
+ {\def\dodogetargument#1################1#2%
+ {\def\dodogetargument#1################################1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2%
+ #1{####1}#2%
+ #1{########1}#2%
+ #1{################1}#2%
+ #1{################################1}#2}%
+ \dogetargument#1#2\sixthargumenttrue\sixthargumentfalse}%
+ \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+ \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+ \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\getseventupleempty#1#2#3%
+ {\def\dodogetargument#1##1#2%
+ {\def\dodogetargument#1####1#2%
+ {\def\dodogetargument#1########1#2%
+ {\def\dodogetargument#1################1#2%
+ {\def\dodogetargument#1################################1#2%
+ {\def\dodogetargument#1################################%
+ ################################1#2%
+ {\def\dodogetargument%
+ {#3#1{##1}#2%
+ #1{####1}#2%
+ #1{########1}#2%
+ #1{################1}#2%
+ #1{################################1}#2%
+ #1{################################%
+ ################################1}#2}%
+ \dogetargument#1#2\seventhargumenttrue\seventhargumentfalse}%
+ \dogetargument#1#2\sixthargumenttrue\sixthargumentfalse}%
+ \dogetargument#1#2\fifthargumenttrue\fifthargumentfalse}%
+ \dogetargument#1#2\fourthargumenttrue\fourthargumentfalse}%
+ \dogetargument#1#2\thirdargumenttrue\thirdargumentfalse}%
+ \dogetargument#1#2\secondargumenttrue\secondargumentfalse}%
+ \dogetargument#1#2\firstargumenttrue\firstargumentfalse}
+
+\def\dosingleempty {\getsingleempty []}
+\def\dodoubleempty {\getdoubleempty []}
+\def\dotripleempty {\gettripleempty []}
+\def\doquadrupleempty {\getquadrupleempty []}
+\def\doquintupleempty {\getquintupleempty []}
+\def\dosixtupleempty {\getsixtupleempty []}
+\def\doseventupleempty{\getseventupleempty[]}
+
+%D Because some of these are called quite often, we will now
+%D replace the more general version by alternatives tuned for
+%D speed.
+
+\def\dosingleempty#1%
+ {\noshowargumenterror % \relax % prevents lookahead, brr
+ \doifnextcharelse[%
+ {\firstargumenttrue#1}
+ {\dosinglefakeempty#1}}
+
+\def\dodoubleempty#1%
+ {\noshowargumenterror % \relax % prevents lookahead, brr
+ \doifnextcharelse[%
+ {\dodoubletestempty#1}
+ {\dodoublefakeempty#1}}
+
+\def\dotripleempty#1%
+ {\noshowargumenterror % \relax % prevents lookahead, brr
+ \doifnextcharelse[%
+ {\dotripletestempty#1}
+ {\dotriplefakeempty#1}}
+
+\def\dosinglefakeempty#1%
+ {\firstargumentfalse#1[]}
+
+\def\dodoublefakeempty#1%
+ {\firstargumentfalse\secondargumentfalse#1[][]}
+
+\def\dotriplefakeempty#1%
+ {\firstargumentfalse\secondargumentfalse\thirdargumentfalse#1[][][]}
+
+\long\def\dodoubletestempty#1[#2]%
+ {\firstargumenttrue
+ \doifnextcharelse[%
+ {\secondargumenttrue #1[{#2}]}
+ {\secondargumentfalse#1[{#2}][]}}
+
+\long\def\dotripletestempty#1[#2]%
+ {\firstargumenttrue
+ \doifnextcharelse[%
+ {\dotripletestemptyx #1[{#2}]}
+ {\secondargumentfalse
+ \thirdargumentfalse #1[{#2}][][]}}
+
+\long\def\dotripletestemptyx#1[#2][#3]%
+ {\secondargumenttrue
+ \doifnextcharelse[%
+ {\thirdargumenttrue #1[{#2}][{#3}]}
+ {\thirdargumentfalse#1[{#2}][{#3}][]}}
+
+%D \macros
+%D {dosingleargumentwithset,
+%D dodoubleargumentwithset,dodoubleemptywithset,
+%D dotripleargumentwithset,dotripleemptywithset}
+%D
+%D These maybe too mysterious macros enable us to handle more
+%D than one setup at once.
+%D
+%D \starttyping
+%D \dosingleargumentwithset \command[#1]
+%D \dodoubleargumentwithset \command[#1][#2]
+%D \dotripleargumentwithset \command[#1][#2][#3]
+%D \dodoubleemptywithset \command[#1][#2]
+%D \dotripleemptywithset \command[#1][#2][#3]
+%D \stoptyping
+%D
+%D The first macro calls \type{\command[##1]} for each string
+%D in the set~\type{#1}. The second one calls for
+%D \type{\commando[##1][#2]} and the third, well one may guess.
+%D These commands support constructions like:
+%D
+%D \starttyping
+%D \def\dodefinesomething[#1][#2]%
+%D {\getparameters[\??xx#1][#2]}
+%D
+%D \def\definesomething%
+%D {\dodoubleargumentwithset\dodefinesomething}
+%D \stoptyping
+%D
+%D Which accepts calls like:
+%D
+%D \starttyping
+%D \definesomething[alfa,beta,...][variable=...,...]
+%D \stoptyping
+%D
+%D Now a whole bunch of variables like \type{\@@xxalfavariable}
+%D and \type{\@@xxbetavariable} is defined.
+
+\def\dosingleargumentwithset#1%
+ {\def\dodosinglewithset[##1]%
+ {\def\dododosinglewithset####1%
+ {#1[####1]}%
+ \processcommalist[##1]\dododosinglewithset}%
+ \dosingleargument\dodosinglewithset}%
+
+\def\dodoublewithset#1#2%
+ {\def\dododoublewithset[##1][##2]%
+ {\doifnot{##1}{}
+ {\def\dodododoublewithset####1%
+ {#2[####1][##2]}%
+ \processcommalist[##1]\dodododoublewithset}}%
+ #1\dododoublewithset}%
+
+\def\dodoubleemptywithset%
+ {\dodoublewithset\dodoubleempty}
+
+\def\dodoubleargumentwithset%
+ {\dodoublewithset\dodoubleargument}
+
+\def\dotriplewithset#1#2%
+ {\def\dodotriplewithset[##1][##2][##3]%
+ {\doifnot{##1}{}
+ {\def\dododotriplewithset####1%
+ {#2[####1][##2][##3]}%
+ \processcommalist[##1]\dododotriplewithset}}%
+ #1\dodotriplewithset}%
+
+\def\dotripleemptywithset%
+ {\dotriplewithset\dotripleempty}
+
+\def\dotripleargumentwithset%
+ {\dotriplewithset\dotripleargument}
+
+%D \macros
+%D {strippedcsname}
+%D
+%D The next macro can be very useful when using \type{\csname}
+%D like in:
+%D
+%D \starttyping
+%D \csname if\strippedcsname\something\endcsname
+%D \stoptyping
+%D
+%D This expands to \type{\ifsomething}.
+
+\def\strippedcsname%
+ {\expandafter\gobbleoneargument\string}
+
+%D \macros
+%D {complexorsimple,complexorsimpleempty}
+%D
+%D Setups can be optional. A command expecting a setup is
+%D prefixed by \type{\complex}, a command without one gets the
+%D prefix \type{\simple}. Commands like this can be defined by:
+%D
+%D \starttyping
+%D \complexorsimple\command
+%D \stoptyping
+%D
+%D When \type{\command} is followed by a \type{[setup]}, then
+%D
+%D \starttyping
+%D \complexcommand [setup]
+%D \stoptyping
+%D
+%D executes, else we get
+%D
+%D \starttyping
+%D \simplecommand
+%D \stoptyping
+%D
+%D An alternative for \type{\complexorsimple} is:
+%D
+%D \starttyping
+%D \complexorsimpleempty {command}
+%D \stoptyping
+%D
+%D Depending on the presence of \type{[setup]}, this one
+%D leads to one of:
+%D
+%D \starttyping
+%D \complexcommando [setup]
+%D \complexcommando []
+%D \stoptyping
+%D
+%D Many \CONTEXT\ commands started as complex or simple ones,
+%D but changed into more versatile (more object oriented) ones
+%D using the \type{\get..argument} commands.
+
+% This method is needed when traditional tex is used with
+% the efficient definition (marked **) below.
+
+% an old one:
+%
+% \def\setnameofcommand#1% handles {abc} as well as \abc
+% {\begingroup
+% \escapechar=-1
+% \globaldefs=0 % pretty important!
+% \xdef\nameofcommand{\string#1}%
+% \endgroup}
+%
+% \def\complexorsimple#1%
+% {\setnameofcommand{#1}%
+% \doifnextcharelse{[}
+% {\firstargumenttrue \getvalue{\s!complex\nameofcommand}}
+% {\firstargumentfalse\getvalue{\s!simple \nameofcommand}}}
+%
+% \def\complexorsimpleempty#1%
+% {\setnameofcommand{#1}%
+% \doifnextcharelse{[}
+% {\firstargumenttrue \getvalue{\s!complex\nameofcommand}}
+% {\firstargumentfalse\getvalue{\s!complex\nameofcommand}[]}}
+%
+% a newer one:
+
+\def\complexorsimple#1%
+ {% \relax % prevents lookahead, brrr
+ \doifnextcharelse[%
+ {\firstargumenttrue \csname\s!complex\strippedcsname#1\endcsname}
+ {\firstargumentfalse\csname\s!simple \strippedcsname#1\endcsname}}
+
+\def\complexorsimpleempty#1%
+ {% \relax % prevents lookahead, brrr
+ \doifnextcharelse[%
+ {\firstargumenttrue \csname\s!complex\strippedcsname#1\endcsname}
+ {\firstargumentfalse\csname\s!complex\strippedcsname#1\endcsname[]}}
+
+%D \macros
+%D {definecomplexorsimple,definecomplexorsimpleempty}
+%D
+%D The previous commands are used that often that we found it
+%D worthwile to offer two more alternatives. Watch the build
+%D in protection.
+
+% See earlier. Because we don't want \type {\simple..} and
+% \type {\complex..} commands to show up in expansions, we need
+% to pass them as \type {simple..} and \type {complex..}.
+
+% \beginTEX
+%
+% \def\definewithnameofcommand#1#2%
+% {\setnameofcommand{#2}%
+% \@EA\def\@EA#2\@EA{\@EA\donottest\@EA#1\@EA{\nameofcommand}}}
+%
+% \def\definecomplexorsimple%
+% {\definewithnameofcommand\complexorsimple}
+%
+% \def\definecomplexorsimpleempty%
+% {\definewithnameofcommand\complexorsimpleempty}
+%
+% \endTEX
+%
+% \beginETEX \protected
+%
+% \def\definecomplexorsimple#1%
+% {\normalprotected\def#1{\complexorsimple#1}}
+%
+% \def\definecomplexorsimpleempty#1%
+% {\normalprotected\def#1{\complexorsimpleempty#1}}
+%
+% \endETEX
+
+% However, since this one uses an idirect method, things go
+% okay (at the cost of extra macros).
+
+% \def\definecomplexorsimple#1%
+% {\unexpanded\def#1{\complexorsimple#1}}
+%
+% \def\definecomplexorsimpleempty#1%
+% {\unexpanded\def#1{\complexorsimpleempty#1}}
+%
+% faster, since no \strippedcsname needed in call, but more spacy
+
+\def\docomplexorsimple#1#2%
+ {\doifnextcharelse[{\firstargumenttrue#1}{\firstargumentfalse#2}}
+
+\def\docomplexorsimpleempty#1%
+ {\doifnextcharelse[{\firstargumenttrue#1}{\firstargumentfalse#1[]}}
+
+\def\definecomplexorsimple#1%
+ {\unexpanded\edef#1%
+ {\noexpand\docomplexorsimple
+ \@EA\noexpand\csname\s!complex\strippedcsname#1\endcsname
+ \@EA\noexpand\csname\s!simple \strippedcsname#1\endcsname}}
+
+\def\definecomplexorsimpleempty#1%
+ {\unexpanded\edef#1%
+ {\noexpand\docomplexorsimpleempty
+ \@EA\noexpand\csname\s!complex\strippedcsname#1\endcsname}}
+
+%D These commands are called as:
+%D
+%D \starttyping
+%D \definecomplexorsimple\command
+%D \stoptyping
+%D
+%D Of course, we must have available
+%D
+%D \starttyping
+%D \def\complexcommand[#1]{...}
+%D \def\simplecommand {...}
+%D \stoptyping
+%D
+%D Using this construction saves a few string now and then.
+
+%D \macros
+%D {definestartstopcommand}
+%D
+%D Those who get the creeps of expansion may skip the next
+%D one. It's one of the most recent additions and concerns
+%D \type{\start}||\type{\stop} pairs with complicated
+%D arguments.
+%D
+%D We won't go into details here, but the general form of
+%D this using this command is:
+%D
+%D \starttyping
+%D \definestartstopcommand\somecommand\e!specifier{arg}{arg}%
+%D {do something with arg}
+%D \stoptyping
+%D
+%D This expands to something like:
+%D
+%D \starttyping
+%D \def\somecommand arg \startspecifier arg \stopspecifier%
+%D {do something with arg}
+%D \stoptyping
+%D
+%D The arguments can be anything reasonable, but double
+%D \type{#}'s are needed in the specification part, like:
+%D
+%D \starttyping
+%D \definestartstopcommand\somecommand\e!specifier{[##1][##2]}{##3}%
+%D {do #1 something #2 with #3 arg}
+%D \stoptyping
+%D
+%D which becomes:
+%D
+%D \starttyping
+%D \def\somecommand[#1][#2]\startspecifier#3\stopspecifier%
+%D {do #1 something #2 with #3 arg}
+%D \stoptyping
+%D
+%D We will see some real applications of this command in the
+%D core modules.
+
+\def\definestartstopcommand#1#2#3#4% can be done with \expanded ot better, toks
+ {\def\!stringa{#3}% % but let's keep this unused one crappy
+ \def\!stringb{\e!start#2}%
+ \def\!stringc{#4}%
+ \def\!stringd{\e!stop#2}%
+ \@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA
+ \def\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA\@EA
+ #1\@EA\@EA\@EA\@EA\@EA\@EA\@EA
+ \!stringa\@EA\@EA\@EA
+ \csname\@EA\@EA\@EA\!stringb\@EA\@EA\@EA\endcsname\@EA
+ \!stringc
+ \csname\!stringd\endcsname}
+
+%D \macros
+%D {dosinglegroupempty,dodoublegroupempty,dotriplegroupempty,
+%D doquadruplegroupempty, doquintuplegroupempty}
+%D
+%D We've already seen some commands that take care of
+%D optional arguments between \type{[]}. The next two commands
+%D handle the ones with \type{{}}. They are called as:
+%D
+%D \starttyping
+%D \dosinglegroupempty \ineedONEargument
+%D \dodoublegroupempty \ineedTWOarguments
+%D \dotriplegroupempty \ineedTHREEarguments
+%D \doquadruplegroupempty \ineedFOURarguments
+%D \doquintuplegroupempty \ineedFIVEarguments
+%D \stoptyping
+%D
+%D where \type{\ineedONEargument} takes one and the others
+%D two and three arguments. These macro's were first needed in
+%D \PPCHTEX.
+%D
+%D \starttyping
+%D \def\dogetgroupargument#1#2% redefined in mult-ini
+%D {\def\nextnextargument%
+%D {\ifx\nextargument\bgroup
+%D \let\expectedarguments\noexpectedarguments
+%D \def\nextargument{#1\dodogetargument}%
+%D %\else\ifx\nextargument\lineending % this can be an option
+%D % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+%D %\else\ifx\nextargument\blankspace % but it may never be default
+%D % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+%D \else
+%D \ifnum\expectedarguments>\noexpectedarguments
+%D \writestatus
+%D {setup}
+%D {\the\expectedarguments\space argument(s) expected
+%D in line \the\inputlineno\space}%
+%D \fi
+%D \let\expectedarguments\noexpectedarguments
+%D \def\nextargument{#2\dodogetargument{}}%
+%D \fi%\fi\fi % so let's get rid of it
+%D \nextargument}%
+%D \futurelet\nextargument\nextnextargument}
+%D \stoptyping
+%D
+%D In order to catch \type {\nextargument}'s that expand to
+%D \type {\if} and friends, in practice we will use a
+%D slightly more complicated macro.
+
+\let\normalif \if
+\let\normalifx \ifx
+\let\normalifnum \ifnum
+\let\normalifdim \ifdim
+\let\normalifcat \ifcat
+\let\normalifcase \ifcase
+\let\normalifcsname \ifcsname
+\let\normalifhmode \ifhmode
+\let\normalifvmode \ifvmode
+\let\normalor \or
+\let\normalelse \else
+\let\normalfi \fi
+
+\def\beginrobusttest
+ {\begingroup
+ \let\if \relax
+ \let\ifx \relax
+ \let\ifnum \relax
+ \let\ifdim \relax
+ \let\ifcat \relax
+ \let\ifcase \relax
+ \let\ifcsname\relax
+ \let\or \relax
+ \let\else \relax
+ \let\fi \relax}
+
+\let\endrobusttest\endgroup
+
+% \def\dogetgroupargument#1#2%
+% {\def\nextnextargument%
+% {\normalifx\nextargument\bgroup
+% \endrobusttest
+% \let\expectedarguments\noexpectedarguments
+% \def\nextargument{#1\dodogetargument}%
+% %\normalelse\normalifx\nextargument\lineending % this can be an option
+% % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+% %\normalelse\normalifx\nextargument\blankspace % but may never be default
+% % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+% \normalelse
+% \endrobusttest
+% \ifnum\expectedarguments>\noexpectedarguments
+% \showargumenterror{\number\expectedarguments}{\number\inputlineno}%
+% \fi
+% \let\expectedarguments\noexpectedarguments
+% \def\nextargument{#2\dodogetargument{}}%
+% \normalfi%\normalfi\normalfi % so let's get rid of it
+% \nextargument}%
+% \beginrobusttest
+% \futurelet\nextargument\nextnextargument}
+
+% \def\dogetgroupargument#1#2%
+% {\def\nextnextargument%
+% {\normalifx\nextargument\bgroup
+% \endrobusttest
+% \noshowargumenterror
+% \def\nextargument{#1\dodogetargument}%
+% %\normalelse\normalifx\nextargument\lineending % this can be an option
+% % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+% %\normalelse\normalifx\nextargument\blankspace % but may never be default
+% % \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+% \normalelse
+% \endrobusttest
+% \doshowargumenterror
+% \def\nextargument{#2\dodogetargument{}}%
+% \normalfi%\normalfi\normalfi % so let's get rid of it
+% \nextargument}%
+% \beginrobusttest
+% \futurelet\nextargument\nextnextargument}
+
+% we need to use an \ifcase in order to honor the \normal...
+
+\def \permitspacesbetweengroups{\chardef\@@permitspacesbetweengroups=0 }
+\def\dontpermitspacesbetweengroups{\chardef\@@permitspacesbetweengroups=1 }
+
+\dontpermitspacesbetweengroups
+
+\def\dogetgroupargument#1#2%
+ {\def\nextnextargument%
+ {\normalifx\nextargument\bgroup
+ \endrobusttest
+ \noshowargumenterror
+ \def\nextargument{#1\dodogetargument}%
+ \normalelse
+ \normalifcase\@@permitspacesbetweengroups
+ \normalifx\nextargument\lineending
+ \endrobusttest
+ \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+ \normalelse\normalifx\nextargument\blankspace
+ \endrobusttest
+ \def\nextargument{\begingroup\def\\ {\endgroup\dogetgroupargument#1#2}\\}%
+ \normalelse
+ \endrobusttest
+ \doshowargumenterror
+ \def\nextargument{#2\dodogetargument{}}%
+ \normalfi\normalfi
+ \normalelse
+ \endrobusttest
+ \doshowargumenterror
+ \def\nextargument{#2\dodogetargument{}}%
+ \normalfi
+ \normalfi
+ \nextargument}%
+ \beginrobusttest
+ \futurelet\nextargument\nextnextargument}
+
+\def\dosinglegroupempty#1%
+ {\def\dodogetargument%
+ {\dontpermitspacesbetweengroups
+ #1}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+\def\dodoublegroupempty#1%
+ {\def\dodogetargument##1%
+ {\def\dodogetargument%
+ {\dontpermitspacesbetweengroups
+ #1{##1}}%
+ \dogetgroupargument\secondargumenttrue\secondargumentfalse}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+\def\dotriplegroupempty#1%
+ {\def\dodogetargument##1%
+ {\def\dodogetargument####1%
+ {\def\dodogetargument%
+ {\dontpermitspacesbetweengroups
+ #1{##1}{####1}}%
+ \dogetgroupargument\thirdargumenttrue\thirdargumentfalse}%
+ \dogetgroupargument\secondargumenttrue\secondargumentfalse}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+\def\doquadruplegroupempty#1%
+ {\def\dodogetargument##1%
+ {\def\dodogetargument####1%
+ {\def\dodogetargument########1%
+ {\def\dodogetargument%
+ {\dontpermitspacesbetweengroups
+ #1{##1}{####1}{########1}}%
+ \dogetgroupargument\fourthargumenttrue\fourthargumentfalse}%
+ \dogetgroupargument\thirdargumenttrue\thirdargumentfalse}%
+ \dogetgroupargument\secondargumenttrue\secondargumentfalse}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+\def\doquintuplegroupempty#1%
+ {\def\dodogetargument##1%
+ {\def\dodogetargument####1%
+ {\def\dodogetargument########1%
+ {\def\dodogetargument################1%
+ {\def\dodogetargument%
+ {\dontpermitspacesbetweengroups
+ #1{##1}{####1}{########1}{################1}}%
+ \dogetgroupargument\fifthargumenttrue\fifthargumentfalse}%
+ \dogetgroupargument\fourthargumenttrue\fourthargumentfalse}%
+ \dogetgroupargument\thirdargumenttrue\thirdargumentfalse}%
+ \dogetgroupargument\secondargumenttrue\secondargumentfalse}%
+ \dogetgroupargument\firstargumenttrue\firstargumentfalse}
+
+%D These macros can explictly take care of spaces, which means
+%D that the next definition and calls are valid:
+%D
+%D \starttyping
+%D \def\test#1#2#3{[#1#2#3]}
+%D
+%D \dotriplegroupempty\test {a}{b}{c}
+%D \dotriplegroupempty\test {a}{b}
+%D \dotriplegroupempty\test {a}
+%D \dotriplegroupempty\test
+%D \dotriplegroupempty\test {a} {b} {c}
+%D \dotriplegroupempty\test {a} {b}
+%D \dotriplegroupempty\test
+%D {a}
+%D {b}
+%D \stoptyping
+%D
+%D And alike.
+
+%D \macros
+%D {firstofoneargument, firstoftwoarguments, firstofthreearguments
+%D secondoftwoarguments, secondofthreearguments,
+%D thirdofthreearguments}
+%D
+%D The next six macros (dedicated to Taco) can conveniently
+%D used to select arguments. Their names explain their
+%D functionality.
+
+\long\def\firstofoneargument #1{#1}
+\long\def\firstoftwoarguments #1#2{#1}
+\long\def\firstofthreearguments #1#2#3{#1}
+\long\def\firstoffourarguments #1#2#3#4{#1}
+\long\def\firstoffivearguments #1#2#3#4#5{#1}
+\long\def\secondoftwoarguments #1#2{#2}
+\long\def\secondofthreearguments #1#2#3{#2}
+\long\def\secondoffourarguments #1#2#3#4{#2}
+\long\def\secondoffivearguments #1#2#3#4#5{#2}
+\long\def\thirdofthreearguments #1#2#3{#3}
+\long\def\thirdoffourarguments #1#2#3#4{#3}
+\long\def\thirdoffivearguments #1#2#3#4#5{#3}
+\long\def\fourthoffourarguments #1#2#3#4{#4}
+\long\def\fourthoffivearguments #1#2#3#4#5{#4}
+\long\def\fifthoffivearguments #1#2#3#4#5{#5}
+
+%D \macros
+%D {globalletempty,letempty,letvalueempty,letgvalueempty}
+%D
+%D Trivial:
+
+\def\letempty #1{\let#1\empty}
+\def\globalletempty#1{\global\let#1\empty}
+
+\def\letvalueempty #1{\expandafter\let\csname#1\endcsname\empty}
+\def\letgvalueempty#1{\global\expandafter\let\csname#1\endcsname\empty}
+
+%D \macros
+%D {wait}
+%D
+%D The next macro hardly needs explanation. Because no
+%D nesting is to be expected, we can reuse \type{\wait} within
+%D \type{\wait} itself.
+
+\def\wait
+ {\begingroup
+ \read16 to \wait
+ \endgroup}
+
+%D \macros
+%D {writestring,writeline,
+%D writestatus,statuswidth}
+%D
+%D Maybe one didn't notice, but we've already introduced a
+%D macro for showing messages. In the multi||lingual modules,
+%D we will also introduce a mechanism for message passing. For
+%D the moment we stick to the core macros:
+%D
+%D \starttyping
+%D \writestring {string}
+%D \writeline
+%D \writestatus {category} {message}
+%D \stoptyping
+%D
+%D Messages are formatted. One can provide the maximum with
+%D of the identification string with the macro \type
+%D {\statuswidth}.
+
+% \chardef\statuswidth=15
+%
+% \def\writestring%
+% {\immediate\write16}
+%
+% \def\writeline%
+% {\writestring{}}
+%
+% \def\dosplitstatus#1#2\end%
+% {\ifx#1?%
+% \loop
+% \advance\scratchcounter by 1
+% \ifnum\scratchcounter<\statuswidth
+% \edef\messagecontentA{\messagecontentA\space}%
+% \repeat
+% \else
+% \advance\scratchcounter by 1
+% \ifnum\scratchcounter<\statuswidth
+% \edef\messagecontentA{\messagecontentA#1}%
+% \fi
+% \dosplitstatus#2\end
+% \fi}
+%
+% \def\writestatus#1#2%
+% {\begingroup
+% \let\messagecontentA=\empty
+% \edef\messagecontentB{#2}% maybe it's \the\scratchcounter
+% \scratchcounter=0
+% \expandafter\dosplitstatus#1?\end
+% \writestring{\messagecontentA\space:\space\messagecontentB}%
+% \endgroup}
+
+\chardef\statuswidth=15
+\chardef\statuswrite=16
+
+\def\writestring
+ {\immediate\write\statuswrite}
+
+\def\writeline
+ {\writestring{}}
+
+%D First we present the normal \TEX\ variant, later we will
+%D show the \ETEX-way.
+
+\beginTEX
+
+\newcount\statuscounter
+
+\def\dosplitstatus#1%
+ {\advance\statuscounter \minusone
+ \ifcase\statuscounter
+ \expandafter\nosplitstatus
+ \else
+ \scratchtoks\@EA{\the\scratchtoks#1}%
+ \expandafter\dosplitstatus
+ \fi}
+
+\def\nosplitstatus#1\end
+ {}
+
+\def\writestatus#1#2%
+ {\begingroup
+ \scratchtoks\emptytoks
+ \statuscounter\statuswidth
+ \expandafter\dosplitstatus#1%
+ \space\space\space\space\space\space\space
+ \space\space\space\space\space\space\space
+ \space\space\space\space\space\space\end
+ %\expanded{\writestring{\the\scratchtoks\space:\space#2}}%
+ \@EA\writestring\@EA{\the\scratchtoks\space:\space#2}%
+ \endgroup}
+
+\endTEX
+
+%D Because we're grouped, we could have initialized at forehand:
+%D
+%D \starttyping
+%D \statuscounter\statuswidth
+%D \stoptyping
+%D
+%D The next implementation saves only some 10 words of format
+%D memory, but we hardly gain any speed.
+%D
+%D \starttyping
+%D \def\dosplitstatus#1#2#3#4#5#6#7#8#9%
+%D {#1#2#3#4#5#6#7#8#9\dodosplitstatus}
+%D
+%D \def\dodosplitstatus#1#2#3#4#5#6\end
+%D {#1#2#3#4#5}
+%D
+%D \def\writestatus#1#2%
+%D {\writestring
+%D {\expandafter\dosplitstatus#1%
+%D \space\space\space\space\space
+%D \space\space\space\space\space
+%D \space\space\space\space\space\end
+%D \space:\space#2}}
+%D \stoptyping
+
+%D Okay then, more obscure but slightly faster: no split grabs
+%D the do split part and skipping the else branch has to happen
+%D anyway, so:
+
+\beginTEX
+
+\def\dosplitstatus#1%
+ {\advance\statuscounter \minusone
+ \ifcase\statuscounter
+ \expandafter\nosplitstatus
+ \fi
+ \scratchtoks\@EA{\the\scratchtoks#1}%
+ \dosplitstatus}
+
+\endTEX
+
+%D The next (\ETEX\ specific) variant is twice as fast in 5/40
+%D situations, only gains some speed when multiple runs of large docs
+%D are done; fully expandable, no statuscounter needed, no restore (due
+%D to grouping) needed etc.
+
+\beginETEX \numexpr
+
+\def\writestatus#1#2%
+ {\writestring{\expandafter\dosplitstatus\expandafter\statuswidth#1%
+ \space\space\space\space\space\space\space
+ \space\space\space\space\space\space\space
+ \space\space\space\space\space\space\end
+ \space:\space#2}}
+
+\def\dosplitstatus#1#2%
+ {\ifcase#1 \expandafter\nosplitstatus\fi#2%
+ \expandafter\dosplitstatus\expandafter{\the\numexpr#1+\minusone\relax}}
+
+\def\nosplitstatus#1\end
+ {}
+
+\endETEX
+
+%D \macros
+%D {emptytoks}
+%D
+%D For this we need an empty token register, analogous
+%D to \type {\empty}.
+
+\newtoks\emptytoks
+
+%D \macros
+%D {debuggerinfo}
+%D
+%D For debugging purposes we can enhance macros with the
+%D next alternative. Here \type{debuggerinfo} stands for both
+%D a macro accepting two arguments and a boolean (in fact a
+%D few macro's too).
+
+\newif\ifdebuggerinfo
+
+\def\debuggerinfo#1#2%
+ {\ifdebuggerinfo
+ \writestatus{debugger}{#1:: #2}%
+ \fi}
+
+%D Finally we do what from now on will be done at the top of
+%D the files: we tell the user what we are loading.
+
+\writestatus{loading}{Context System Macros / General}
+
+%D Well, the real final command is the one that resets the
+%D unprotected characters \type{@}, \type{?} and \type{!}.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-new.tex b/Master/texmf-dist/tex/context/base/syst-new.tex
new file mode 100644
index 00000000000..0172745bf4b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-new.tex
@@ -0,0 +1,823 @@
+%D \module
+%D [ file=supp-new,
+%D version=1997.01.03,
+%D title=\CONTEXT\ Support Macros,
+%D subtitle=New Ones,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Code from this module will move. For instance to
+%D syst-dat.tex (datastructures).
+
+\unprotect
+
+% moved from core-ntb
+
+\def\v!oddeven#1{\ifodd#1\v!odd\else\v!even\fi}
+
+% For myself
+
+\newcount\nofprofiled
+
+\def\profilemacro#1%
+ {\nofprofiled\zerocount
+ \letvalue{\string#1\string#1}#1%
+ \appendtoks
+ \normalwritestatus\m!systems{profile \string#1: \number\nofprofiled}%
+ \to \everystoptext
+ \unexpanded\def#1%
+ {\global\advance\nofprofiled\plusone
+ \csname\string#1\string#1\endcsname}}
+
+% pretty ugly but fast
+
+% \copycsname xxx\endcsname\csname ..\endcsname
+
+\def\copycsname{\@EA\@EA\@EA\let\@EA\@EA\csname}
+
+% \letcscsname \crap \csname ..\endcsname
+% \letcsnamecs \csname ..\endcsname\crap
+% \letcsnamecsname\csname ..\endcsname\csname ..\endcsname
+
+\def\letcscsname {\@EA\let\@EA}
+\def\letcsnamecs {\@EA\let}
+\def\letcsnamecsname{\@EA\@EA\@EA\let\@EA\@EA}
+
+% another one, add an item to a commalist
+
+\def\addvalue#1#2% cs item
+ {\ifundefined{#1}\@EA\let\csname#1\endcsname\empty\fi
+ \expanded{\addtocommalist{#2}\@EA\noexpand\csname#1\endcsname}}
+
+% faster, and looks okay
+
+\dostepwiserecurse{0}{255}{1}
+ {\@EA\chardef\csname-\recurselevel\endcsname\recurselevel}
+
+\newtoks\withminorcharacters
+\newtoks\withlowercharacters
+\newtoks\withuppercharacters
+
+% \thewithcharacter#1 % self
+
+\dostepwiserecurse{0}{31}{1}
+ {\expanded
+ {\appendtoks\noexpand\withcharacter\csname-\recurselevel\endcsname
+ \noexpand\to\withminorcharacters}}
+
+\dostepwiserecurse{32}{127}{1}
+ {\expanded
+ {\appendtoks\noexpand\withcharacter\csname-\recurselevel\endcsname
+ \noexpand\to\withlowercharacters}}
+
+\dostepwiserecurse{128}{255}{1}
+ {\expanded
+ {\appendtoks\noexpand\withcharacter\csname-\recurselevel\endcsname
+ \noexpand\to\withuppercharacters}}
+
+\def\doassigncatcodes#1%
+ {\def\withcharacter##1{\catcode##1#1}%
+ \the\withminorcharacters
+ \the\withlowercharacters
+ \ifeightbitcharacters\the\withuppercharacters\fi}
+
+\def\makeallother
+ {\doassigncatcodes\@@other}
+
+\chardef\obeyedlccode=`. % so <32 and >127 chars become .
+
+% \def\obeylccodes
+% {\def\withcharacter##1{\lccode##1##1}%
+% \the\withlowercharacters
+% \def\withcharacter##1{\lccode##1\obeyedlccode}%
+% \the\withminorcharacters
+% \ifeightbitcharacters\the\withuppercharacters\fi}
+
+\def\setownlccode #1{\lccode#1#1}
+\def\setobeyedlccode#1{\lccode#1\obeyedlccode}
+
+\def\obeylccodes % also eightbitcharacters
+ {\let\withcharacter\setownlccode
+ \the\withlowercharacters
+ \let\withcharacter\setobeyedlccode
+ \the\withminorcharacters
+ \the\withuppercharacters
+ \relax}
+
+\def\retainlccodes % also eightbitcharacters
+ {\let\withcharacter\setownlccode
+ \the\withlowercharacters
+ \the\withminorcharacters
+ \the\withuppercharacters
+ \relax}
+
+% not faster
+%
+% \newtoks \retainedlccodes
+% \dostepwiserecurse{0}{255}{1}
+% {\appendetoks\lccode\recurselevel=\recurselevel\to\retainedlccodes}
+% \appendetoks\relax\to\retainedlccodes
+
+%D This one is much faster in \ETEX. Hm, I misinterpreted
+%D the specs; it does not work.
+%
+% \ifx\normallanguage\undefined \let\normallanguage\language \fi
+% \let\doobeylccodes\obeylccodes
+%
+% \beginETEX \lccode
+% \begingroup
+% \normallanguage\zerocount
+% \doobeylccodes
+% \patterns{dummy}
+% \endgroup
+% \def\obeylccodes{\normallanguage\zerocount}
+% \endETEX
+
+\def\unspaced#1%
+ {\dounspaced#1\end}
+
+\def\dounspaced#1%
+ {\ifx#1\end
+ \@EA\gobbleoneargument
+ \else
+ \ifx#1\blankspace\else#1\fi
+ \fi
+ \dounspaced}
+
+\def\unspaceargument#1\to#2%
+ {\convertargument#1\to#2%
+ \@EA\edef\@EA#2\@EA{\@EA\unspaced\@EA{#2}}}
+
+\def\unspaceafter#1#2%
+ {\edef\ascii{\dounspaced#2\end}\@EA#1\@EA{\ascii}}
+
+% etex, much faster
+%
+% \def\unspaceargument#1\to#2%
+% {\scratchcounter\catcode'32\catcode32=\@@ignore
+% \scantokens{\edef#2{#1}}%
+% \catcode32=\scratchcounter}
+
+\def\unspaceafter#1#2%
+ {\edef\ascii{\dounspaced#2\end}\@EA#1\@EA{\ascii}}
+
+% this will replace loadfile once and alike !!! todo
+
+\def\@flg@{@flg@}
+
+\def\setflag#1%
+ {\@EA\dodoglobal\@EA\chardef\csname\@flg@#1\endcsname\zerocount}
+
+\def\resetflag#1%
+ {\@EA\dodoglobal\@EA\chardef\csname\@flg@#1\endcsname\plusone}
+
+\let\ifflagged\ifcase
+
+\def\flag#1{\csname\@flg@#1\endcsname}
+
+\def\doifelseflagged#1%
+ {\@EA\ifx\csname\@flg@#1\endcsname\relax
+ \@EA\secondoftwoarguments
+ \else\ifcase\csname\@flg@#1\endcsname
+ \@EAEAEA\firstoftwoarguments
+ \else
+ \@EAEAEA\secondoftwoarguments
+ \fi\fi}
+
+\def\doifnotflagged#1%
+ {\@EA\ifx\csname\@flg@#1\endcsname\relax
+ \@EA\firstofoneargument
+ \else\ifcase\csname\@flg@#1\endcsname
+ \@EAEAEA\gobbleoneargument
+ \else
+ \@EAEAEA\firstofoneargument
+ \fi\fi}
+
+\def\inheritparameter[#1]#2[#3]#4[#5]% tag tokey fromkey % [bypasses k!prefix]
+ {\@EAEAEA\def\@EA\csname\@EA#1\@EA#3\@EA\endcsname\@EA
+ {\csname#1#5\endcsname}}
+
+% \buildarray[test][aa,bb,cc,dd,ee,ff]
+% \setarrayelement{test}{1}{qq}
+% \arrayelement{test}{1}
+% \arraylength{test}
+%
+% \def\buildarray[#1][#2]%
+% {\scratchcounter=0
+% \def\docommando##1%
+% {\advance\scratchcounter by 1
+% \setvalue{@@aa#1\the\scratchcounter}{##1}}%
+% \processcommalist[#2]\docommando
+% \setevalue{@@aa#1}{\the\scratchcounter}}%
+%
+% \def\setarrayelement#1#2{\setvalue{@@aa#1#2}}
+% \def\arrayelement #1#2{\getvalue{@@aa#1#2}}
+% \def\arraylength #1{\getvalue{@@aa#1}}
+
+% \newsignal\junksignal
+%
+% \def\setjunksignal%
+% {\ifhmode
+% \hskip\junksignal
+% \let\removejunkspaces\doremovejunkspaces
+% \else
+% \let\removejunkspaces\relax
+% \fi}
+%
+% \def\doremovejunkspaces%
+% {\doloop{\ifdim\lastskip=\junksignal\unskip\else\exitloop\fi}}
+
+% \def\doifnonzeropositiveelse#1#2#3%
+% {\bgroup
+% \setbox\scratchbox=\hbox{\scratchcounter=0#1}%
+% \ifdim\wd\scratchbox=\!!zeropoint\egroup#2\else\egroup#3\fi}
+%
+% \def\dodoifnonzeropositiveelse#1#2\end#3#4%
+% {\egroup
+% \ifx#1\relax#3\else#4\fi}
+%
+% \def\doifnonzeropositiveelse#1%
+% {\bgroup
+% \afterassignment\dodoifnonzeropositiveelse\scratchcounter=0#1\relax\empty\end}
+
+\def\dodoifnonzeropositiveelse#1#2\end#3#4%
+ {\ifx#1\relax
+ \ifcase\scratchcounter\endgroup#4\else\endgroup#3\fi\else\endgroup#4%
+ \fi}
+
+\def\doifnonzeropositiveelse#1%
+ {\begingroup\afterassignment\dodoifnonzeropositiveelse\scratchcounter=0#1\relax\empty\end}
+
+% here ?
+
+\def\dosetrawvalue #1#2#3{\@EA \def\csname#1#2\endcsname{#3}}
+\def\dosetrawevalue#1#2#3{\@EA\edef\csname#1#2\endcsname{#3}}
+\def\dosetrawgvalue#1#2#3{\@EA\gdef\csname#1#2\endcsname{#3}}
+\def\dosetrawxvalue#1#2#3{\@EA\xdef\csname#1#2\endcsname{#3}}
+
+\def\getrawparameters {\dogetparameters\dosetrawvalue }
+\def\getraweparameters {\dogetparameters\dosetrawevalue}
+\def\getrawgparameters {\dogetparameters\dosetrawgvalue}
+\def\getrawxparameters {\dogetparameters\dosetrawxvalue}
+
+\def\globalgetrawparameters{\dogetparameters\dosetrawgvalue} % obsolete
+
+\def\splitskip#1%
+ {\scratchskip\zeropoint \!!plus \onepoint \!!minus \onepoint
+ \advance\scratchskip#1\relax % \relax is realy needed here
+ \expandafter\SPLITSKIP\the\scratchskip}
+
+{\catcode`\.=\@@other
+ \catcode`\p=\@@other
+ \catcode`\l=\@@other
+ \catcode`\u=\@@other
+ \catcode`\s=\@@other
+ \catcode`\m=\@@other
+ \catcode`\i=\@@other
+ \catcode`\n=\@@other
+ \catcode`\t=\@@other
+ \gdef\SPLITSKIP#1pt plus #2pt minus #3pt%
+ {\DOSPLITSKIP#1 #2 #3 }}
+
+\def\DOSPLITSKIP#1 #2 #3
+ {\dimen0=#1pt\dimen2=#2pt\dimen4=#3pt
+ \advance\dimen2 -\onepoint
+ \advance\dimen4 -\onepoint}
+
+% \def\minimaxskip#1#2%
+% {\splitskip#2\relax
+% \scratchdimen=#2\relax
+% #2=\scratchdimen
+% \advance#2 by #1\relax}
+%
+% \def\maximizeskip%
+% {\minimaxskip{-\dimen4}}
+%
+% \def\maximizeskip%
+% {\minimaxskip{\dimen2}}
+%
+% \def\maximizespacing%
+% {\maximizeskip\blankskipamount
+% \maximizeskip\parskip
+% \maximizeskip\ctxparskip
+% \maximizeskip\baselineskip
+% \maximizeskip\bigskipamount
+% \maximizeskip\medskipamount
+% \maximizeskip\smallskipamount}
+
+\newcount\modcounter
+
+%\def\DoMod #1by#2to#3%
+% {\modcounter#1\divide\modcounter#2\multiply\modcounter#2%
+% #3#1\advance#3 -\modcounter}
+%
+%\def\DoDiv #1by#2to#3%
+% {#3#1\divide#3 #2\relax}
+
+\def\dosetmodulo#1#2#3%
+ {\modcounter#1\divide\modcounter#2\multiply\modcounter#2%
+ #3#1\advance#3-\modcounter}
+
+\def\dosetdivision#1#2#3%
+ {#3#1\divide#3 #2\relax}
+
+\def\DoMod#1by#2to#3{\dosetmodulo {#1}{#2}{#3}}
+\def\DoDiv#1by#2to#3{\dosetdivision{#1}{#2}{#3}}
+
+\def\dounprotected#1\par
+ {#1\protect}
+
+\def\unprotected
+ {\unprotect\dounprotected}
+
+%D Standaard kan een spatie (zoals ~) uitrekken. Dit is in
+%D overzichten niet altijd de bedoeling, vandaar:
+
+%\def\fixedspace%
+% {\hskip\fontdimen2\font\relax}
+
+%\def\ExpandSecondAfter#1#2#3%
+% {\!!toksa={#2}%
+% \edef\!!stringa{#3}%
+% \edef\expanded%
+% {\noexpand#1{\the\!!toksa}{\!!stringa}}%
+% \expanded}
+%
+%\def\ExpandThirdAfter#1#2#3#4%
+% {\!!toksa={#2}%
+% \!!toksb={#3}%
+% \edef\!!stringa{#4}%
+% \edef\expanded%
+% {\noexpand#1{\the\!!toksa}{\the\!!toksb}{\!!stringa}}%
+% \expanded}
+
+%\def\indirect#1#2#3%
+% {\@EA#1\@EA#2\@EA{\@EA#3\csname\s!do\string#2\endcsname}%
+% \@EA#1\csname\s!do\string#2\endcsname}
+%
+%\def\doubleemptied#1#2#3%
+% {\indirect#1#2\dodoublempty}
+%
+%\indirect\def\stelietsin\dodoubleempty[#1][#2]%
+% {...}
+%
+%\doubleemptied\def\stelietsin[#1][#2]%
+% {...}
+
+% in mult-set
+%
+%\def\defaultsetup{def}
+%
+%\def\selectdefaultsetup#1#2%
+% {\writestatus{setup}{choose #1 setupfile}%
+% \bgroup
+% \endlinechar=-1
+% \global\read16 to \usersetup
+% \egroup
+% \ifx\usersetup\empty
+% \let\usersetup=\defaultsetup
+% \fi
+% \readfile{#2\usersetup}{}{}%
+% \writestatus{setup}{loading #1 setupfile #2\usersetup}}
+
+% awaiting the definitive implementation
+
+\ifx\resettimer\undefined
+ \let\resettimer \relax
+ \newcount\elapsedtime
+\fi
+
+\newcount\featuretest
+
+\def\testfeature#1#2%
+ {\def\dotestfeature
+ {\advance\featuretest \plusone
+ \ifnum\featuretest>#1\else#2\expandafter\dotestfeature\fi}%
+ \retestfeature}
+
+\def\retestfeature % timer support is new per 10/5/2005
+ {\bgroup
+ \ifcase\interactionmode\let\wait\relax\fi
+ \writestatus\m!systems{starting feature test}\wait
+ \resettimer
+ \featuretest\zerocount \dotestfeature
+ \scratchdimen\elapsedtime\s!sp
+ \writestatus\m!systems{feature test done (\expandafter\withoutpt\the\scratchdimen s)}%
+ \wait
+ \egroup}
+
+% \edef\elapsedtime{\expandafter\withoutpt\the\dimexpr\elapsedtime\relax s}%
+% \writestatus\m!systems{feature test done (\elapsedtime)}%
+
+\def\testfeatureonce#1#2%
+ {\let\wait\relax\testfeature{#1}{#2}\end}
+
+%D \macros
+%D {adddimenregister,adddimenmacro}
+%D
+%D Instead of using numerous \type {\advance}'s, one can use
+%D the next macros to add|/|subtract a series of dimensions
+%D to a register or macro.
+%D
+%D \starttyping
+%D \adddimenregister 10pt 5pt \paperwidth \to \somedimen
+%D \adddimenmacro 10pt 5pt \paperwidth \to \bagger
+%D \stoptyping
+
+\newdimen\dimentoaddto
+
+\def\adddimenregister#1\to#2% will be obsolete once full etex
+ {\begingroup
+ #2=\zeropoint
+ \dimentoaddto\zeropoint
+ \def\docommando%
+ {\advance#2 \dimentoaddto
+ \futurelet\next\dodocommando}%
+ \def\dodocommando%
+ {\ifx\next\relax
+ \expanded{\endgroup#2=\the#2}%
+ \else
+ \@EA\afterassignment\@EA\docommando\@EA\dimentoaddto
+ \fi}%
+ \docommando#1\relax}
+
+\def\adddimenmacro#1\to#2%
+ {\adddimenregister#1\to\scratchdimen
+ \edef#2{\the\scratchdimen}}
+
+%D \macros
+%D {freezedimenmacro}
+%D
+%D This macro is use as:
+%D
+%D \starttyping
+%D \freezedimenmacro\leftmargindistance
+%D \stoptyping
+
+\def\freezedimenmacro#1%
+ {\scratchdimen#1\edef#1{\the\scratchdimen}}
+
+%D The next one is slower:
+%D
+%D \starttyping
+%D \def\freezedimenmacro#1{\edef#1{\the\dimexpr(#1)}}
+%D \stoptyping
+
+% \newcount\rawrecursecounter
+%
+% \def\rawrecurselevel{\the\rawrecursecounter}%
+%
+% \def\dorawrecurse#1#2%
+% {\rawrecursecounter\plusone
+% \let\oldrecurselevel\recurselevel
+% \let\recurselevel\rawrecurselevel
+% \def\dodorawrecurse
+% {\ifnum\rawrecursecounter>#1\relax
+% \let\recurselevel\oldrecurselevel
+% \else
+% #2\advance\rawrecursecounter \plusone
+% \expandafter\dodorawrecurse
+% \fi}%
+% \dodorawrecurse}
+
+%D The next macro negates a macro (dimension or number, or actually, whatever.
+%D It's a typical example of \type {\if} usage:
+%D
+%D \starttyping
+%D \if-\whatever \else-\whatever\fi => else => -whatever
+%D \if--\whatever\else-\whatever\fi => then => whatever
+%D \stoptyping
+
+\def\negated#1{\if-#1\else-#1\fi} % does only work in macros or text
+
+% This permits things like ^\index{hans}^, where hans is
+% duplicated in the text.
+
+\newif\ifduplicate
+
+\bgroup
+
+\gdef\checkduplication % in line with Knuth
+ {\ifmmode\expandafter^\else\expandafter\startduplication\fi}
+
+\gdef\insideduplication
+ {\ifmmode\expandafter^\else\expandafter\egroup\fi}
+
+\catcode`\^=\@@active
+
+\gdef\enableduplication
+ {\catcode`\^=\@@active \let^\checkduplication}
+
+\gdef\disableduplication
+ {\catcode`\^=\@@superscript}
+
+\gdef\startduplication
+ {\bgroup \duplicatetrue \let^\insideduplication}
+
+\egroup
+
+\def\gobbleassigndimen#1\\{}
+
+\def\assigndimen#1#2%
+ {\afterassignment\gobbleassigndimen#1=#2\!!zeropoint\\}
+
+\def\setusage#1%
+ {\@EA\let\csname#1\endcsname\iftrue}
+
+\def\resetusage#1%
+ {\@EA\let\csname#1\endcsname\iffalse}
+
+\beginTEX
+
+\def\ifusage#1%
+ {\@EA\ifx\csname#1\endcsname\relax
+ \resetusage{#1}%
+ \fi
+ \csname#1\endcsname}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\ifusage#1%
+ {\ifcsname#1\endcsname\else
+ \resetusage{#1}%
+ \fi
+ \csname#1\endcsname}
+
+\endETEX
+
+%D Very handy, more efficient than \type{{}}, and more readable
+%D than \type {\empty}.
+
+\let\donothing\empty
+
+% The following macros are used in XML handling.
+
+% \long\def\dowithstringed#1#2#3#4% " ' space
+% {\if#4"\@EA#1\else\if#4'\@EAEAEA#2\else\@EAEAEA#3\fi\fi#4}
+%
+% \def\unstringed
+% {\dowithstringed\unstringdouble\unstringsingle\unstringspaced}
+%
+% \long\def\unstringdouble"#1"{#1}
+% \long\def\unstringsingle'#1'{#1}
+% \long\def\unstringspaced #1 {#1}
+%
+% \def\grabstring
+% {\dowithstringed\grabstringdouble\grabstringsingle\grabstringspaced}
+%
+% \def\dowithgrabbedstring#1%
+% {\def\@@dowithgrabbedstring{#1}%
+% \afterassignment\@@dowithgrabbedstring\grabstring}
+%
+% \long\def\grabstringdouble"#1"{\scratchtoks{#1}}
+% \long\def\grabstringsingle'#1'{\scratchtoks{#1}}
+% \long\def\grabstringspaced #1 {\scratchtoks{#1}}
+
+\long\setvalue{@u@s@"}#1#2"{#2} \long\setvalue{@g@s@"}#1#2"{\scratchtoks{#2}}
+\long\setvalue{@u@s@'}#1#2'{#2} \long\setvalue{@g@s@'}#1#2'{\scratchtoks{#2}}
+\long\setvalue{@u@s@ }#1#2 {#2} \long\setvalue{@g@s@ }#1#2 {\scratchtoks{#2}}
+
+\long\def\unstringed#1{\csname\ifcsname @u@s@#1\endcsname @u@s@#1\else\s!empty\fi\endcsname#1}
+\long\def\grabstring#1{\csname\ifcsname @g@s@#1\endcsname @g@s@#1\else\s!empty\fi\endcsname#1}
+
+\def\dowithgrabbedstring#1%
+ {\def\@@dowithgrabbedstring{#1}%
+ \afterassignment\@@dowithgrabbedstring\grabstring}
+
+\def\expifequalelse#1#2%
+ {\@@ifequal#1\relax\relax\@@and#2\relax\relax\@@then}
+
+\def\@@ifequal#1#2\@@and#3%
+ {\ifx#1\relax
+ \ifx#3\relax
+ \@EAEAEA\@@if@@equal@@true
+ \else
+ \@EAEAEA\@@if@@equal@@false
+ \fi
+ \else
+ \ifx#3\relax
+ \@EAEAEAEAEAEA\@@if@@equal@@false
+ \else\ifx#1#3%
+ % go on
+ \else
+ \@EAEAEAEAEAEA\@@if@@equal@@false
+ \fi\fi
+ \fi
+ \@@ifequal#2\@@and}
+
+\long\def\@@if@@equal@@true #1\@@then#2#3{#2}
+\long\def\@@if@@equal@@false#1\@@then#2#3{#3}
+
+%D new stuff :
+
+\def\partialexpanded#1%
+ {\let\notexpanded\noexpand
+ \long\xdef\@@expanded{\noexpand#1}%
+ \let\notexpanded\empty
+ \@@expanded}
+
+% for Simon ; watch how we make them fully expandable (i.e.
+% no \type {\relax}es) popping up
+
+\def\@@dothenumber#1\relax#2\end{#1}
+
+\def\@@thenumber#1{\@EA\@@dothenumber\number#1\relax\end}
+
+\def\doifnum#1#2%
+ {\ifnum#1=\@@thenumber{#2} % space needed
+ \expandafter\firstofoneargument
+ \else
+ \expandafter\gobbleoneargument
+ \fi}
+
+\def\doifnotnum#1#2%
+ {\ifnum#1=\@@thenumber{#2} % space needed
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\def\doifelsenum#1#2%
+ {\ifnum#1=\@@thenumber{#2} % space needed
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+% \edef\xxxx{\doifnum{1}{2}{no}} \show \xxxx
+% \edef\xxxx{\doifnum{2}{2}{yes}} \show \xxxx
+% \scratchcounter0 \edef\xxxx{\doifnum{1}{\scratchcounter}{no}} \show \xxxx
+% \scratchcounter1 \edef\xxxx{\doifnum{1}{\scratchcounter}{yes}} \show \xxxx
+
+\def\appended#1#2#3{\@EA#1\@EA#2\@EA{#2#3}}
+\def\appendvalue #1{\@EA\appended\@EA \def\csname#1\endcsname}
+\def\appendgvalue#1{\@EA\appended\@EA\gdef\csname#1\endcsname}
+
+\def\prepended#1#2#3{\scratchtoks{#3}\@EA\@EA\@EA#1\@EA\@EA\@EA#2\@EA\@EA\@EA{\@EA\the\@EA\scratchtoks#2}}
+\def\prependvalue #1{\@EA\prepended\@EA \def\csname#1\endcsname}
+\def\prependgvalue#1{\@EA\prepended\@EA\gdef\csname#1\endcsname}
+
+%D \macros
+%D {compresscommacommandnrs,compresscommalistnrs,compressedcommalistnrs,
+%D compresscommacommand,compresscommalist,compressedcommalist,
+%D reversecommacommand,reversecommalist,reversedcommalist}
+%D
+%D The following two list processing macros are needed by Taco's
+%D bibliography module. The numbers compressor converts the
+%D list in a list of ranges. The normal compressor remove duplicate
+%D and empty entries.
+
+\def\compresscommalistnrs[#1]%
+ {\let\compressedlist\empty
+ \!!counta\maxdimen
+ \!!countb\maxdimen
+ \processcommalist[#1]\docompresslistnrs
+ \ifnum\!!counta=\maxdimen\else\dodocompresslistnrs\fi}
+
+\def\compresscommacommandnrs[#1]%
+ {\expanded{\compresscommalistnrs[#1]}}
+
+\def\docompresslistnrs#1%
+ {\edef\commalistelement{#1}%
+ \ifx\commalistelement\empty\else
+ \ifnum\!!counta=\maxdimen
+ \!!counta\commalistelement\relax
+ \!!countb\!!counta
+ \else
+ \advance\!!countb\plusone
+ \ifnum\commalistelement>\!!countb
+ \advance\!!countb\minusone
+ \dodocompresslistnrs
+ \!!counta\commalistelement\relax
+ \!!countb\!!counta
+ \fi
+ \fi
+ \fi}
+
+\def\dodocompresslistnrs
+ {\edef\compressedlist
+ {\ifx\compressedlist\empty\else\compressedlist,\fi
+ {\the\!!counta}{\ifnum\!!countb>\!!counta\the\!!countb\fi}}}
+
+%D \def\test#1{{\tttf#1->\compresscommalistnrs[#1]\convertcommand\compressedlist\to\ascii\ascii}}
+%D \startlines
+%D \test{}
+%D \test{1}
+%D \test{1,3}
+%D \test{1,3,4}
+%D \test{1,3,3,4,5}
+%D \test{1,3,3,4,5,8}
+%D \test{1,3,3,4,5,5,8,10}
+%D \test{1,3,4,5,8,10,11}
+%D \test{1,,3,,4,,5,,8,,10,,11,}
+%D \stoplines
+
+\def\compresscommalist[#1]%
+ {\let\compressedlist\empty
+ \let\!!stringa\empty
+ \processcommalist[#1]\docompresslist}
+
+\def\compresscommacommand[#1]%
+ {\expanded{\compresscommalist[#1]}}
+
+\def\docompresslist#1%
+ {\edef\commalistelement{#1}%
+ \ifx\commalistelement\empty \else
+ \ifx\!!stringa\commalistelement \else
+ \ifx\compressedlist\empty
+ \def\compressedlist{#1}%
+ \else
+ \appended\def\compressedlist{,#1}%
+ \fi
+ \let\!!stringa\commalistelement
+ \fi
+ \fi}
+
+%D \def\test#1{{\tttf#1->\compresscommalist[#1]\convertcommand\compressedlist\to\ascii\ascii}}
+%D \startlines
+%D \test{}
+%D \test{1}
+%D \test{1,3}
+%D \test{1,3,4}
+%D \test{1,3,3,4,5}
+%D \test{1,3,3,4,5,8}
+%D \test{1,3,3,4,5,5,8,10}
+%D \test{1,3,4,5,8,10,11}
+%D \test{1,,3,,4,,5,,8,,10,,11,}
+%D \stoplines
+
+\def\reversecommalist[#1]%
+ {\let\reversedlist\empty
+ \processcommalist[#1]\doreverselist}
+
+\def\doreverselist#1%
+ {\ifx\reversedlist\empty
+ \def\reversedlist{#1}%
+ \else
+ \prepended\def\reversedlist{#1,}%
+ \fi}
+
+\def\reversecommacommand[#1]%
+ {\expanded{\reversecommalist[#1]}}
+
+%D \def\test#1{{\tttf#1->\reversecommalist[#1]\convertcommand\reversedlist\to\ascii\ascii}}
+%D \startlines
+%D \test{}
+%D \test{1}
+%D \test{1,3}
+%D \test{1,3,4}
+%D \test{1,3,3,4,5}
+%D \test{1,3,3,4,5,8}
+%D \test{1,3,3,4,5,5,8,10}
+%D \test{1,3,4,5,8,10,11}
+%D \test{1,,3,,4,,5,,8,,10,,11,}
+%D \stoplines
+
+%D \macros
+%D {stripstring}
+%D
+%D Needed in bookmarks:
+%D
+%D \starttyping
+%D {\sanitizePDFdocencoding test \CONTEXT\ test \to\oeps\stripstring\oeps\tttf[\oeps]}
+%D \stoptyping
+
+\def\stripstring#1% #1 is \cs
+ {\bgroup
+ \convertcommand#1\to\ascii
+ \global\let\globalascii\empty
+ \donefalse
+ \expandafter\handletokens\ascii\with\dostripstring
+ \egroup
+ \let#1\globalascii}
+
+\def\dostripstring#1%
+ {\ifx#1\blankspace
+ \donetrue
+ \else
+ \ifdone\ifx\globalascii\empty\else
+ \xdef\globalascii{\globalascii\space}%
+ \donefalse
+ \fi\fi
+ \xdef\globalascii{\globalascii#1}%
+ \fi}
+
+%D \macros
+%D {dowithrange}
+%D
+%D This one is for Mojca Miklavec, who made me aware of the fact that
+%D \type {page-imp.tex} was not the best place to hide it.
+
+\def\dowithrange#1#2% #2 takes number
+ {\splitstring#1\at:\to\fromrange\and\torange
+ \ifx\torange\empty\let\torange\fromrange\fi
+ \dostepwiserecurse\fromrange\torange1{#2{\recurselevel}}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-omg.tex b/Master/texmf-dist/tex/context/base/syst-omg.tex
new file mode 100644
index 00000000000..da620fa7e7d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-omg.tex
@@ -0,0 +1,113 @@
+%D \module
+%D [ file=syst-omg,
+%D version=2000.09.09,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=A couple of Omega goodies,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module will become obsolete as soon as Omega
+%D supports \ETEX\ functionality.
+
+\ifx\OmegaVersion\undefined \endinput \fi
+
+% \def\newcount {\myalloc@0\count \countdef \@@maxallocation}
+% \def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
+% \def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
+% \def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
+% \def\newbox {\myalloc@4\box \mathchardef\@@maxallocation}
+% \def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
+% \def\newread {\myalloc@6\read \chardef \@@minallocation}
+% \def\newwrite {\myalloc@7\write \chardef \@@minallocation}
+% \def\newmarks {\myalloc@8\marks \mathchardef\@@maxallocation}
+% \def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
+%
+% \def\newfam#1{\chardef#1=15 }
+%
+% \count18=1
+%
+% \mathchardef\@@minallocation= 16
+% \mathchardef\@@medallocation= 256
+% \mathchardef\@@maxallocation=32767
+% \chardef \@@insallocation= 8
+%
+% \def\myalloc@#1#2#3#4#5%
+% {\global\advance\count1#1by\@ne
+% \ifnum\count1#1>\@@medallocation \else
+% \global\advance\insc@unt by -\@@insallocation
+% \ifnum\count1#1<\insc@unt \else
+% \global\count1#1=\@@medallocation % \wait
+% \fi
+% \global\advance\insc@unt by +\@@insallocation
+% \fi
+% \ifnum\count1#1>#4%
+% \global\count1#1=#4%
+% \errmessage{No room for (\string#2) \string#5}%
+% \fi
+% \allocationnumber=\count1#1%
+% \global#3#5=\allocationnumber
+% \wlog{\string#5=\string#2\the\allocationnumber}}
+
+\unprotect
+
+\def\newcount {\myalloc@0\count \countdef \@@maxallocation}
+\def\newdimen {\myalloc@1\dimen \dimendef \@@maxallocation}
+\def\newskip {\myalloc@2\skip \skipdef \@@maxallocation}
+\def\newmuskip {\myalloc@3\muskip \muskipdef \@@maxallocation}
+\def\newbox {\myalloc@4\box \mathchardef\@@maxallocation}
+\def\newtoks {\myalloc@5\toks \toksdef \@@maxallocation}
+\def\newread {\myalloc@6\read \chardef \@@minallocation}
+\def\newwrite {\myalloc@7\write \chardef \@@minallocation}
+\def\newmarks {\myalloc@8\marks \mathchardef\@@maxallocation}
+\def\newlanguage{\myalloc@9\language\chardef \@@minallocation}
+
+\def\newfam#1{\chardef#1=15 }
+
+\count18=1
+
+\mathchardef\@@minallocation = 16
+\mathchardef\@@medallocation = 256
+\mathchardef\@@maxallocation = 32767
+
+\chardef\@@insallocation=24
+
+\def\myalloc@#1#2#3#4#5%
+ {\global\advance\count1#1by\@ne
+ \ifnum\count1#1>\@@medallocation \else
+ \global\advance\insc@unt by -\@@insallocation
+ \ifnum\count1#1<\insc@unt \else
+ \global\count1#1=\@@medallocation % \wait
+ \fi
+ \global\advance\insc@unt by +\@@insallocation
+ \fi
+ \ifnum\count1#1>#4%
+ \global\count1#1=#4%
+ \errmessage{No room for (\string#2) \string#5}%
+ \fi
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+
+%D We need to catch a (rather crappy) automatic OMEGA
+%D mechanism. Unfortunately loading of the SGML vectors
+%D happens automatically without control over the regime
+%D under which it takes place.
+
+\ifx\SGMLFontEntity\undefined \else
+
+ \let\normalSGMLFontEntity\SGMLFontEntity
+
+ \def\SGMLFontEntity#1#2#3#4#5%
+ {\convertargument#3\to\ascii
+ \ExpandBothAfter\doifinstringelse{\letterbackslash}{\ascii}
+ {\normalSGMLFontEntity{#1}{#2}{#3}{#4}{#5}}
+ {\normalSGMLFontEntity{#1}{#2}{\string#3}{#4}{#5}}}
+
+\fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-pln.tex b/Master/texmf-dist/tex/context/base/syst-pln.tex
new file mode 100644
index 00000000000..e60a736444d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-pln.tex
@@ -0,0 +1,646 @@
+%D \module
+%D [ file=syst-pln,
+%D version=2001.11.16, % 1999.03.17, % an oldie: 1995.10.10
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Efficient \PLAIN\ \TEX\ loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We used to load plain \TEX\ in a special way, but redefining
+%D a couple of primitives so that for instance font loading was
+%D ignored. For those interested, this loader is found in
+%D \type {syst-tex.tex}.
+
+%D This is a stripped down version of plain \TEX. We need this
+%D module to get started. Whole sections are missing here,
+%D like font loading and math. Thise are taken care of in
+%D dedicated modules. A few definitions are added (and
+%D marked as such).
+
+%D Characters can have special states, that can be triggered
+%D by setting their category coded. Some are preset, others
+%D are to be set as soon as possible, otherwise we cannot
+%D define any useful macros.
+
+%catcode`\^^@ = 9 % ascii null is ignored
+%catcode`\\ = 0 % backslash is TeX escape character
+
+\catcode`\{ = 1 % left brace is begin-group character
+\catcode`\} = 2 % right brace is end-group character
+\catcode`\$ = 3 % dollar sign is math shift
+\catcode`\& = 4 % ampersand is alignment tab
+\catcode`\# = 6 % hash mark is macro parameter character
+\catcode`\^ = 7 % circumflex and uparrow are for superscripts
+\catcode`\_ = 8 % underline and downarrow are for subscripts
+\catcode`\^^I = 10 % ascii tab is a blank space
+
+%catcode`\^^M = 5 % ascii return is end-line
+%catcode`\% = 14 % percent sign is comment character
+%catcode`\ = 10 % ascii space is blank space
+%catcode`\^^? = 15 % ascii delete is invalid
+
+\catcode`\~ = 13 % tilde is active
+\catcode`\^^L = 13 % ascii form-feed
+
+%catcode`\A = 11
+%.......
+%catcode`\Z = 11
+
+%catcode`\a = 11
+%.......
+%catcode`\z = 11
+
+\chardef\active = 13
+
+\def ^^L{\par}
+\def\^^M{\ } % control <return> = control <space>
+\def\^^I{\ } % same for <tab>
+
+%D In \CONTEXT, we simply ignore end||of||file tokens:
+
+\catcode`\^^Z=9
+
+%D First we define a simplified version of the \CONTEXT\
+%D protection mechanism.
+
+\def\unprotect{\catcode`@=11 }
+\def\protect {\catcode`@=12 }
+
+\unprotect
+
+%D We do not set up mathcodes here, but postpone that to the
+%D math modules.
+
+\mathcode`\ = "8000 % \space
+\mathcode`\' = "8000 % ^\prime
+\mathcode`\_ = "8000 % \_
+\mathcode`\^^? = "1273 % \smallint
+
+\sfcode`\)=0
+\sfcode`\'=0
+\sfcode`\]=0
+
+\chardef\@ne = 1
+\chardef\tw@ = 2
+\chardef\thr@@ = 3
+\chardef\sixt@@n = 16
+\chardef\@cclv = 255
+
+\mathchardef\@cclvi = 256
+\mathchardef\@m = 1000
+\mathchardef\@M = 10000
+\mathchardef\@MM = 20000
+
+%D Pretty important definitions:
+
+\let\bgroup={
+\let\egroup=}
+
+%D In plain \TEX\ the following explanation about the register
+%D allocation mechanism is given:
+%D
+%D \startnarrower
+%D The following counters are reserved:
+%D
+%D \starttabulate
+%D \NC 0--9 \NC page numbering \NC \NR
+%D \NC 10 \NC count allocation \NC \NR
+%D \NC 11 \NC dimen allocation \NC \NR
+%D \NC 12 \NC skip allocation \NC \NR
+%D \NC 13 \NC muskip allocation \NC \NR
+%D \NC 14 \NC box allocation \NC \NR
+%D \NC 15 \NC toks allocation \NC \NR
+%D \NC 16 \NC read file allocation \NC \NR
+%D \NC 17 \NC write file allocation \NC \NR
+%D \NC 18 \NC math family allocation \NC \NR
+%D \NC 19 \NC language allocation \NC \NR
+%D \NC 20 \NC insert allocation \NC \NR
+%D \NC 21 \NC the most recently allocated number \NC \NR
+%D \NC 22 \NC constant $-1$ \NC \NR
+%D \stoptabulate
+%D
+%D New counters are allocated starting with 23, 24, etc. Other
+%D registers are allocated starting with 10. This leaves 0
+%D through 9 for the user to play with safely, except that
+%D counts 0 to 9 are considered to be the page and subpage
+%D numbers (since they are displayed during output). In this
+%D scheme, \type {\count10} always contains the number of the
+%D highest||numbered counter that has been allocated, \type
+%D {\count14} the highest||numbered box, etc. Inserts are given
+%D numbers 254, 253, etc., since they require a \type
+%D {\count}, \type {\dimen}, \type {\skip}, and \type {\box}
+%D all with the same number; \type {\count20} contains the
+%D lowest-numbered insert that has been allocated. Of course,
+%D \type {\box255} is reserved for \type {\output}; \type
+%D {\count255}, \type {\dimen255}, and \type {\skip255} can be
+%D used freely.
+%D
+%D It is recommended that macro designers always use \type
+%D {\globa}l assignments with respect to registers numbered 1,
+%D 3, 5, 7, 9, and always non||\type {\global} assignments
+%D with respect to registers 0, 2, 4, 6, 8, 255. This will
+%D prevent \quote {save stack buildup} that might otherwise
+%D occur.
+%D \stopnarrower
+%D
+%D We will overload some macros in \ETEX\ mode.
+
+\count10 = 22 % allocates \count registers 23, 24, ...
+\count11 = 9 % allocates \dimen registers 10, 11, ...
+\count12 = 9 % allocates \skip registers 10, 11, ...
+\count13 = 9 % allocates \muskip registers 10, 11, ...
+\count14 = 9 % allocates \box registers 10, 11, ...
+\count15 = 9 % allocates \toks registers 10, 11, ...
+\count16 = -1 % allocates input streams 0, 1, ...
+\count17 = -1 % allocates output streams 0, 1, ...
+\count18 = 3 % allocates math families 4, 5, ...
+\count19 = 0 % allocates \language codes 1, 2, ...
+\count20 =255 % allocates insertion classes 254, 253, ...
+
+\countdef\insc@unt = 20 % the insertion counter
+\countdef\allocationnumber= 21 % the most recent allocation
+\countdef\m@ne = 22 % a handy constant
+ \m@ne = -1
+
+\def\wlog{\immediate\write\m@ne} % write on log file (only)
+
+%D \startnarrower
+%D Here are abbreviations for the names of scratch registers
+%D that don't need to be allocated.
+%D \stopnarrower
+
+\countdef \count@ = 255
+\dimendef \dimen@ = 0
+\dimendef \dimen@i = 1 % global only
+\dimendef \dimen@ii = 2
+\skipdef \skip@ = 0
+\toksdef \toks@ = 0
+
+%D \startnarrower
+%D Now, we define \type {\newcount}, \type {\newbox}, etc. so
+%D that you can say \newcount\foo and \type {\foo} will be
+%D defined (with \type {\countdef}) to be the next counter. To
+%D find out which counter \type {\foo} is, you can look at
+%D \type {\allocationnumber}. Since there's no \type {\boxdef}
+%D command, \type {\chardef} is used to define a \type
+%D {\newbox}, \type {\newinsert}, \type {\newfam}, and so on.
+%D \stopnarrower
+
+\def\newcount {\alloc@0\count \countdef \insc@unt}
+\def\newdimen {\alloc@1\dimen \dimendef \insc@unt}
+\def\newskip {\alloc@2\skip \skipdef \insc@unt}
+\def\newmuskip {\alloc@3\muskip \muskipdef\@cclvi }
+\def\newbox {\alloc@4\box \chardef \insc@unt}
+\def\newtoks {\alloc@5\toks \toksdef \@cclvi }
+\def\newread {\alloc@6\read \chardef \sixt@@n }
+\def\newwrite {\alloc@7\write \chardef \sixt@@n }
+\def\newfam {\alloc@8\fam \chardef \sixt@@n }
+\def\newlanguage{\alloc@9\language\chardef \@cclvi }
+
+\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
+
+\def\alloc@#1#2#3#4#5%
+ {\global\advance\count1#1by\@ne
+ \ch@ck#1#4#2% make sure there's still room
+ \allocationnumber=\count1#1%
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+
+\def\newinsert#1%
+ {\global\advance\insc@unt by\m@ne
+ \ch@ck0\insc@unt\count
+ \ch@ck1\insc@unt\dimen
+ \ch@ck2\insc@unt\skip
+ \ch@ck4\insc@unt\box
+ \allocationnumber=\insc@unt
+ \global\chardef#1=\allocationnumber
+ \wlog{\string#1=\string\insert\the\allocationnumber}}
+
+\def\ch@ck#1#2#3%
+ {\ifnum\count1#1<#2\else
+ \errmessage{No room for a new #3}
+ \fi}
+
+\newdimen\maxdimen \maxdimen = 16383.99999pt
+\newskip \hideskip \hideskip = -1000pt plus 1fill
+\newskip \centering \centering = 0pt plus 1000pt minus 1000pt
+\newdimen\p@ \p@ = 1pt
+\newdimen\z@ \z@ = 0pt
+\newskip \z@skip \z@skip = 0pt plus 0pt minus 0pt
+\newbox \voidb@x % permanently void box register
+
+%D We define \type {\newif} a la plain \TEX, but will
+%D redefine it later. As Knuth says:
+%D
+%D \startnarrower
+%D And here's a different sort of allocation: for example,
+%D
+%D \starttyping
+%D \newif\iffoo
+%D \stoptyping
+%D
+%D creates \type {\footrue}, \type {\foofalse} to go
+%D with \type {\iffoo}.
+%D \stopnarrower
+
+\def\newif#1%
+ {\count@\escapechar
+ \escapechar\m@ne
+ \expandafter\expandafter\expandafter\def\@if #1{true}{\let#1\iftrue }%
+ \expandafter\expandafter\expandafter\def\@if#1{false}{\let#1\iffalse}%
+ \@if#1{false}% the condition starts out false
+ \escapechar\count@}
+
+\def\@if#1#2%
+ {\csname\expandafter\if@\string#1#2\endcsname}
+
+\bgroup % `if' is required
+
+ \uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}
+
+\egroup
+
+%D Build||in numeric variables.
+
+\adjdemerits = 10000
+\binoppenalty = 700
+\brokenpenalty = 100
+\clubpenalty = 150
+%day = 0
+\defaulthyphenchar = `\-
+\defaultskewchar = -1
+\delimiterfactor = 901
+\displaywidowpenalty = 50
+\doublehyphendemerits = 10000
+%endlinechar = `\^^M
+\errorcontextlines = 5
+%escapechar = `\\
+\exhyphenpenalty = 50
+%fam = 0
+\finalhyphendemerits = 5000
+%floatingpenalty = 0
+%globaldefs = 0
+%hangafter = 1
+\hbadness = 1000
+%holdinginserts = 0
+\hyphenpenalty = 50
+%interlinepenalty = 0
+%language = 0
+\lefthyphenmin = 2
+\linepenalty = 10
+%looseness = 0
+%mag = 1000
+%maxdeadcycles = 25
+%month = 0
+\newlinechar = -1
+%outputpenalty = 0
+%pausing = 0
+%postdisplaypenalty = 0
+\predisplaypenalty = 10000
+\pretolerance = 100
+\relpenalty = 500
+\righthyphenmin = 3
+\showboxbreadth = 5
+\showboxdepth = 3
+%time = 0
+\tolerance = 200
+%tracingcommands = 0
+\tracinglostchars = 1
+%tracingmacros = 0
+%tracingonline = 0
+%tracingoutput = 0
+%tracingpages = 0
+%tracingparagraphs = 0
+%tracingrestores = 0
+%tracingstats = 0
+\uchyph = 1
+\vbadness = 1000
+\widowpenalty = 150
+%year = 0
+
+%D Extra numeric variables.
+
+\newcount \interdisplaylinepenalty
+\newcount \interfootnotelinepenalty
+
+\interdisplaylinepenalty = 100
+\interfootnotelinepenalty = 100
+
+%D Build in dimension variables.
+
+\abovedisplayshortskip = 0pt plus 3pt
+\abovedisplayskip = 12pt plus 3pt minus 9pt
+%baselineskip = 0pt
+\belowdisplayshortskip = 7pt plus 3pt minus 4pt
+\belowdisplayskip = 12pt plus 3pt minus 9pt
+\boxmaxdepth = \maxdimen
+\delimitershortfall = 5pt
+%displayindent = 0pt
+%displaywidth = 0pt
+%hangindent = 0pt
+\hfuzz = 0.1pt
+%hoffset = 0pt
+\hsize = 6.5in
+%leftskip = 0pt
+%lineskip = 0pt
+%lineskiplimit = 0pt
+%mathsurround = 0pt
+\maxdepth = 4pt
+\medmuskip = 4mu plus 2mu minus 4mu
+\nulldelimiterspace = 1.2pt
+\overfullrule = 5pt
+\parfillskip = 0pt plus 1fil
+\parindent = 20pt
+\parskip = 0pt plus 1pt
+%predisplaysize = 0pt
+%rightskip = 0pt
+\scriptspace = 0.5pt
+%spaceskip = 0pt
+\splitmaxdepth = \maxdimen
+\splittopskip = 10pt
+%tabskip = 0pt
+\thickmuskip = 5mu plus 5mu
+\thinmuskip = 3mu
+\topskip = 10pt
+\vfuzz = 0.1pt
+%voffset = 0pt
+\vsize = 8.9in
+%xspaceskip = 0pt
+
+%D Extra dimension parameters.
+
+\newskip \bigskipamount
+\newdimen \jot
+\newskip \medskipamount
+\newskip \normalbaselineskip
+\newskip \normallineskip
+\newdimen \normallineskiplimit
+\newskip \smallskipamount
+
+\bigskipamount = 12pt plus 4pt minus 4pt
+\jot = 3pt
+\medskipamount = 6pt plus 2pt minus 2pt
+\normalbaselineskip = 12pt
+\normallineskip = 1pt
+\normallineskiplimit = 0pt
+\smallskipamount = 3pt plus 1pt minus 1pt
+
+%D The following shortcuts are rather standard:
+
+\def\lq{`}
+\def\rq{'}
+
+\def\lbrack{[}
+\def\rbrack{]}
+
+\let\endgraf=\par
+\let\endline=\cr
+
+\def\space{ }
+\def\empty{}
+\def\null {\hbox{}}
+
+%D The next loop construct is about the fastest you can get.
+%D Beware: this macro does not support nested loops. We use
+%D a namespace prefix \type {@@pln}.
+
+\long\def\loop#1\repeat{\long\def\@@plnbody{#1}\@@plniterate}
+
+%D The following makes \type {\loop} \unknown\ \type {\if}
+%D \unknown\ \type {\repeat} skippable (clever trick):
+
+\let\repeat=\fi
+
+%D The original (no \type {@@pln} there):
+
+\def\@@plniterate{\@@plnbody\let\next\@@plniterate\else\let\next\relax\fi\next}
+
+%D A more efficient alternative:
+
+\def\@@plniterate{\@@plnbody\expandafter\@@plniterate\else\expandafter\relax\fi}
+
+%D An even more efficient one:
+
+\def\@@plniterate{\@@plnbody\expandafter\@@plniterate\else\fi}
+
+%D Counter 0 is normally used as page counter:
+
+\countdef\pageno=0 \pageno=1 % first page is number 1
+
+%D Beside the raw counter \type {\pageno} the \type {\folio}
+%D macro provides the value.
+
+\def\folio{\the\pageno}
+
+%D Indeed, we don't define a real output routine yet:
+
+\output{\box255}
+
+%D We don't support \type {\magnification} and just consume
+%D the value.
+
+\let\magnification\count@
+
+%D The following macro will be overloaded in \ETEX.
+
+\def\tracingall
+ {\tracingonline \@ne
+ \tracingcommands \tw@
+ \tracingstats \tw@
+ \tracingpages \@ne
+ \tracingoutput \@ne
+ \tracinglostchars \@ne
+ \tracingmacros \tw@
+ \tracingparagraphs\@ne
+ \tracingrestores \@ne
+ \showboxbreadth \maxdimen
+ \showboxdepth \maxdimen
+ \errorstopmode}
+
+%D Some users expect this macro to be present. This one
+%D sends the hyphenated word to the terminal.
+
+\def\showhyphens#1%
+ {\setbox0\vbox
+ {\parfillskip\z@skip
+ \hsize\maxdimen\tenrm
+ \pretolerance\m@ne
+ \tolerance\m@ne
+ \hbadness0
+ \showboxdepth0
+ \ #1}}
+
+%D The following bunch of macros deals with basic alignment.
+%D We just include them here so that they can be used if
+%D needed. Normally, \CONTEXT\ users will fall back on one of
+%D the three table environments.
+
+\newcount \mscount
+\newif \ifus@
+\newif \if@cr
+\newbox \tabs
+\newbox \tabsyet
+\newbox \tabsdone
+
+\def\hidewidth % for alignment entries that can stick out
+ {\hskip\hideskip}
+
+\def\ialign % initialized \halign
+ {\everycr{}
+ \tabskip\z@skip
+ \halign}
+
+\def\multispan#1%
+ {\omit
+ \mscount#1\relax
+ \loop
+ \ifnum\mscount>\@ne \sp@n
+ \repeat}
+
+\def\sp@n
+ {\span
+ \omit
+ \advance\mscount\m@ne}
+
+% begin of tab code
+
+\def\cleartabs
+ {\global\setbox\tabsyet\null
+ \setbox\tabs\null}
+
+\def\settabs
+ {\setbox\tabs\null
+ \futurelet\next\sett@b}
+
+\def\sett@b
+ {\ifx\next\+%
+ \def\nxt{\afterassignment\s@tt@b\let\nxt}%
+ \else
+ \let\nxt\s@tcols
+ \fi
+ \let\next\relax
+ \nxt}
+
+\def\s@tt@b
+ {\let\nxt\relax
+ \us@false\m@ketabbox}
+
+\def\tabalign
+ {\us@true\m@ketabbox}
+
+\let\+\tabalign % no outer here
+
+\def\s@tcols#1\columns
+ {\count@#1%
+ \dimen@\hsize
+ \loop
+ \ifnum\count@>\z@ \@nother
+ \repeat}
+
+\def\@nother
+ {\dimen@ii\dimen@
+ \divide\dimen@ii\count@
+ \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
+ \advance\dimen@-\dimen@ii
+ \advance\count@\m@ne}
+
+\def\m@ketabbox
+ {\begingroup
+ \global\setbox\tabsyet\copy\tabs
+ \global\setbox\tabsdone\null
+ \def\cr
+ {\@crtrue\crcr\egroup\egroup
+ \ifus@\unvbox\z@\lastbox\fi\endgroup
+ \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
+ \setbox\z@\vbox\bgroup\@crfalse
+ \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
+
+\def\t@bbox
+ {\setbox\z@\hbox\bgroup}
+
+\def\t@bb@x
+ {\if@cr
+ \egroup % now \box\z@ holds the column
+ \else
+ \hss\egroup
+ \global\setbox\tabsyet\hbox
+ {\unhbox\tabsyet\global\setbox\@ne\lastbox}% now \box\@ne holds its size
+ \ifvoid\@ne
+ \global\setbox\@ne\hbox to\wd\z@{}%
+ \else
+ \setbox\z@\hbox to\wd\@ne{\unhbox\z@}%
+ \fi
+ \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}%
+ \fi
+ \box\z@}
+
+% end to tab code
+
+%D Users are advised not to use the following macros:
+
+\def\hang
+ {\hangindent\parindent}
+
+\def\textindent#1%
+ {\indent
+ \llap{#1\enspace}%
+ \ignorespaces}
+
+\def\narrower
+ {\advance\leftskip \parindent
+ \advance\rightskip\parindent}
+
+%D Useful, used too, but sometimes dangerous:
+
+\def\leavevmode{\unhbox\voidb@x}
+
+%D We will overload these, but may need them beforehand:
+
+\bgroup
+ \catcode`\^^M=\active%
+ \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
+ \global\let^^M\par%
+\egroup
+
+\def\obeyspaces{\catcode`\ \active}
+
+{\obeyspaces\global\let =\space}
+
+%D Useful and expected:
+
+\def~{\penalty\@M \ } % tie
+
+\chardef\%=`\%
+\chardef\&=`\&
+\chardef\#=`\#
+\chardef\$=`\$
+
+\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
+
+%D Used at all?
+
+\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
+
+%D Replaced later on:
+
+\def\line {\hbox to\hsize}
+\def\leftline #1{\line{#1\hss}}
+\def\rightline #1{\line{\hss#1}}
+\def\centerline#1{\line{\hss#1\hss}}
+
+%D These are used by TaBlE:
+
+\newif\ifh@
+\newif\ifv@
+
+%D Let's end in the plain way:
+
+\def\fmtname {ConTeXt Minimized Plain TeX}
+\def\fmtversion{3.1415926}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-prm.tex b/Master/texmf-dist/tex/context/base/syst-prm.tex
new file mode 100644
index 00000000000..4eda366e5c7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-prm.tex
@@ -0,0 +1,152 @@
+%D \module
+%D [ file=syst-prm,
+%D version=1999.03.17,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Primitive Behavior,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D Saved primitives are preceded by \type {\normal}, as in:
+
+\let\normalfmtversion\fmtversion
+
+%D When applicable, we also load the \ETEX\ source and
+%D definition files.
+
+\bgroup \obeylines
+
+\ifx\eTeXversion\undefined
+
+ \long\gdef\beginETEX#1\endETEX%
+ {}
+
+ \gdef\beginTEX%
+ {\bgroup\obeylines\dobeginTEX}
+
+ \gdef\dobeginTEX#1
+ {\egroup}
+
+ \global\let\endTEX\relax
+
+\else
+
+ \long\gdef\beginTEX#1\endTEX%
+ {}
+
+ \gdef\beginETEX%
+ {\bgroup\obeylines\dobeginETEX}
+
+% \gdef\dobeginETEX#1
+% {\egroup\immediate\write16%
+% {system (E-TEX) : [line \the\inputlineno] \detokenize{#1}}}
+
+ \gdef\dobeginETEX#1
+ {\egroup}
+
+ \global\let\endETEX\relax
+
+\fi
+
+\ifx\OmegaVersion\undefined
+
+ \long\gdef\beginOMEGA#1\endOMEGA%
+ {}
+
+\else
+
+ \gdef\beginOMEGA%
+ {\bgroup\obeylines\dobeginOMEGA}
+
+ \ifx\detokenize\undefined
+
+ \gdef\dobeginOMEGA#1
+ {\egroup\immediate\write16%
+ {system (OMEGA) : [line \the\inputlineno] \string#1 }} % we assume an argument
+
+ \else
+
+ \gdef\dobeginOMEGA#1
+ {\egroup\immediate\write16%
+ {system (OMEGA) : [line \the\inputlineno] \detokenize{#1}}} % we assume aleph
+
+ \fi
+
+ \global\let\endOMEGA\relax
+
+\fi
+
+\ifx\XeTeXversion\undefined
+
+ \long\gdef\beginXETEX#1\endXETEX%
+ {}
+
+\else
+
+ \gdef\beginXETEX%
+ {\bgroup\obeylines\dobeginXETEX}
+
+ \gdef\dobeginXETEX#1
+ {\egroup\immediate\write16%
+ {system (XETEX) : [line \the\inputlineno] \detokenize{#1}}}
+
+ \global\let\endXETEX\relax
+
+\fi
+
+\egroup
+
+%D Let's get rid of this one:
+
+\def\wlog#1{}
+
+%D Just for tracing purposes we set:
+
+\tracingstats=1
+
+%D We don't like outer commands, and we always want access
+%D to the original \type {\input} primitive.
+
+\let\normalouter = \outer \let\outer\relax
+\let\normalinput = \input
+
+%D We need to make sure that we start up in \DVI\ mode, so,
+%D after testing for running \PDFTEX, we default to \DVI.
+
+\ifx\pdftexversion\undefined \newcount\pdfoutput \fi \pdfoutput=0
+
+%D To circumvent dependencies, we can postpone certain
+%D initializations to dumping time, by appending them to the
+%D \type {\everydump} token register.
+
+\newtoks \everydump
+
+\let\normaldump \dump
+
+\def\dump{\the\everydump\normaldump}
+
+%D Ligature prevention (for instance, ec encoding has ligatures
+%D in mono spaced fonts). Alas, we need to do some testing in order
+%S to get to the ptex'd one.
+
+\def\checkpdftexprimitive #1
+ {\expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\ifx\csname pdf#1\endcsname\relax
+ \expandafter\ifx\csname ptex#1\endcsname\relax
+ \expandafter\let\csname normal#1\endcsname \undefined \else
+ \expandafter\let\csname normal#1\expandafter\endcsname\csname ptex#1\endcsname \fi \else
+ \expandafter\let\csname normal#1\expandafter\endcsname\csname pdf#1\endcsname \fi \else
+ \expandafter\let\csname normal#1\expandafter\endcsname\csname #1\endcsname \fi}
+
+\checkpdftexprimitive quitvmode
+\checkpdftexprimitive noligatures
+\checkpdftexprimitive setrandomseed
+\checkpdftexprimitive uniformdeviate
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-tex.tex b/Master/texmf-dist/tex/context/base/syst-tex.tex
new file mode 100644
index 00000000000..b439275a4fc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-tex.tex
@@ -0,0 +1,311 @@
+%D \module
+%D [ file=syst-pln,
+%D version=1999.03.17, % an oldie: 1995.10.10
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Efficient \PLAIN\ \TEX\ loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We've build \CONTEXT\ on top of \PLAIN\ \TEX. Because we
+%D want to make the format file as independant as possible of
+%D machine dependant font encodings, we have to bypass the
+%D loading of fonts.
+%D
+%D Let's start at the beginning. Because \PLAIN\ is not yet
+%D loaded we have to define some \CATCODES\ ourselves.
+
+\catcode`\{=1 % left brace is begin-group character
+\catcode`\}=2 % right brace is end-group character
+\catcode`\#=6 % hash mark is macro parameter character
+\catcode`\^=7 % circumflex is for superscripts
+
+%D To prevent all kind of end||of||file problems, for the
+%D moment we simply ignore the Control~Z token.
+
+\catcode`\^^Z=9
+
+%D We are going to report to the user what we are skipping.
+
+\def\skipmessage#1{\immediate\write16{skipping #1 in plain}}
+
+%D We want to be able to use the \type{\newsomething}
+%D declarations not only on the \type{\outer} level. This can
+%D be done by redefining \type{\outer} so we have to save its
+%D original meaning.
+
+\let\normalouter = \outer
+\let\outer = \relax
+
+%D We also want to postpone the loading of hyphenation patters,
+%D so we redefine and therefore save \type{\input}.
+
+\let\normalinput = \input
+\def\input #1 {\skipmessage{\string\input}}
+
+%D Finaly are going to we redefine some font specification
+%D commands and that's why we save them too. The redefinitions
+%D are straightforward because the macros have to do nothing
+%D but skipping.
+
+\let\normalskewchar = \skewchar
+\def\skewchar #1=#2 {\skipmessage{\string\skewchar}}
+
+\let\normaltextfont = \textfont
+\let\normalscriptfont = \scriptfont
+\let\normalscriptscriptfont = \scriptscriptfont
+
+\def\textfont #1=#2{\skipmessage{\string\textfont}}
+\def\scriptfont #1=#2{\skipmessage{\string\scriptfont}}
+\def\scriptscriptfont #1=#2{\skipmessage{\string\scriptscriptfont}}
+
+%D The redefinition of \type{\font} is a bit more complicated,
+%D because in version 3.14159 a scaled specification was
+%D introduced.
+
+\let\normalfont = \font
+
+\def\skipscaled scaled #1 {}
+
+\long\def\font#1=#2 #3%
+ {\ifx#3s%
+ \skipmessage{scaled \string\font}%
+ \let\next\skipscaled
+ \else
+ \skipmessage{\string\font}%
+ \let\next\relax
+ \fi
+ \next#3}
+
+% or:
+%
+% \long\def\font#1=#2 #3%
+% {\ifx#3s%
+% \skipmessage{scaled \string\font}%
+% \expandafter\skipscaled
+% \else
+% \skipmessage{\string\font}%
+% \fi
+% #3}
+
+%D Relaxing some font switching macros is needed because we
+%D don't want any error messages during loading. These
+%D unharmfull messages could be ingored.
+%D
+%D The next substitution is needed for determining
+%D \type{\p@renwd} in the macro \type{\bordermatrix}.
+
+\def\tenex#1%
+ {\skipmessage{used \string\tenex}\hskip8.75002pt}
+
+%D We need to define \type{\tenrm} for switching to
+%D \type{\rm}.
+
+\def\tenrm%
+ {\skipmessage{\string\tenrm}}
+
+%D In \CONTEXT\ all \PLAIN\ \TEX\ fonts are available, just
+%D like \type{\p@renwd}. We only postpone loading them until
+%D they are actually needed.
+
+%D By bypassing fonts, some definitions become less valid so
+%D we have to redefine them afterwards.
+%D
+%D \starttyping
+%D \let\normalbordermatrix=\bordermatrix
+%D
+%D \def\bordermatrix%
+%D {\bgroup
+%D \setbox0=\hbox{\getvalue{\textface\c!mm\c!ex}B}%
+%D \global\p@renwd=\wd0\relax
+%D \egroup
+%D \normalbordermatrix}
+%D \stoptyping
+
+%D Now we are ready for loading \PLAIN\ \TEX. Of couse we use
+%D \type{\normalinput} and not \type{\input}.
+
+\normalinput plain.tex \let\normalfmtversion\fmtversion
+
+%D We have to take care of unwanted \PDFTEX\
+%D initializations. We just want to default to \DVI\ output.
+
+\ifx\pdftexversion\undefined
+ \chardef\pdfoutput=0
+\else
+ \pdfoutput=0
+\fi
+
+%D When applicable, we also load the \ETEX\ source and
+%D definition files.
+
+\bgroup \obeylines
+
+\ifx\eTeXversion\undefined
+
+ \long\gdef\beginETEX#1\endETEX%
+ {}
+
+ \gdef\beginTEX%
+ {\bgroup\obeylines\dobeginTEX}
+
+ \gdef\dobeginTEX#1
+ {\egroup}
+
+ \global\let\endTEX\relax
+
+\else
+
+ \long\gdef\beginTEX#1\endTEX%
+ {}
+
+ \gdef\beginETEX%
+ {\bgroup\obeylines\dobeginETEX}
+
+% \gdef\dobeginETEX#1
+% {\egroup\immediate\write16%
+% {system (E-TEX) : [line \the\inputlineno] \detokenize{#1}}}
+
+ \gdef\dobeginETEX#1
+ {\egroup}
+
+ \global\let\endETEX\relax
+
+\fi
+
+\egroup
+
+% \ifx\eTeXversion\undefined
+% \long\def\onlyTEX #1{#1}
+% \long\def\onlyETEX#1{}
+% \else
+% \long\def\only TEX#1{}
+% \long\def\onlyETEX#1{#1}
+% \fi
+
+%D Well, this redefintion of \type {\input} fails on \ETEX,
+%D because of some \type {\cs\fi} constructs. So now we use:
+
+% \beginETEX etex.src etexdefs.lib
+%
+% \def\input#1%
+% {\bgroup
+% \skipmessage{\string\input}%
+% \expandafter\ifx\expandafter#1\csname l@ngdefnfile\endcsname
+% \let\input\egroup
+% \else
+% \def\input##1 {\egroup}%
+% \fi
+% \input}
+%
+% \normalinput etex.src \relax
+% \normalinput etexdefs.lib \relax
+%
+% \let\fmtversion\normalfmtversion
+%
+% \savinghyphcodes=1
+%
+% \endETEX
+%
+% \let\normalprotected = \protected
+% \let\normalunexpanded = \unexpanded
+
+\beginETEX \savinghyphcodes
+
+ \savinghyphcodes=1
+
+\endETEX
+
+%D We restore some redefined primitives to their old meaning.
+
+\let\font = \normalfont
+\let\skewchar = \normalskewchar
+\let\textfont = \normaltextfont
+\let\scriptfont = \normalscriptfont
+\let\scriptscriptfont = \normalscriptscriptfont
+\let\input = \normalinput
+\let\outer = \normalouter
+
+%D We reset some of the used auxiliary macro's to
+%D \type{\undefined}. One never knows what testing on them is
+%D done elsewhere.
+
+\let\skipmessage = \undefined
+\let\skipscaled = \undefined
+\let\normalfont = \undefined
+\let\normalskewchar = \undefined
+\let\normaltextfont = \undefined
+\let\normalscriptfont = \undefined
+\let\normalscriptscriptfont = \undefined
+
+% \let\normalinput = \undefined
+% \let\normalouter = \undefined
+
+%D We want a bit more statistics and some less logging info
+%D in the \type{log} file.
+
+\def\wlog#1{}
+
+% \let\normalwlog\wlog
+%
+% \def\wlog#1{\normalwlog{system (\string\wlog) : #1}}
+
+%D To prevent clashes, we slightly redefine the phantom
+%D macros: we let them hide their behaviour by grouping.
+
+\catcode`@=11
+
+%D Somehow this one does not work ok in math mode:
+
+\def\ph@nt%
+ {\bgroup
+ \ifmmode
+ \expandafter\mathpalette\expandafter\mathph@nt
+ \else
+ \expandafter\makeph@nt
+ \fi}
+
+\def\finph@nt%
+ {\setbox\tw@\null
+ \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@ \fi
+ \ifh@ \wd\tw@\wd\z@ \fi
+ \box\tw@
+ \egroup}
+
+%D But this one does work.
+
+\def\ph@nt%
+ {\ifmmode
+ \expandafter\mathpalette\expandafter\mathph@nt
+ \else
+ \bgroup\expandafter\makeph@nt
+ \fi}
+
+\def\finph@nt%
+ {\setbox\tw@\null
+ \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@ \fi
+ \ifh@ \wd\tw@\wd\z@ \fi
+ \box\tw@
+ \ifmmode\else\egroup\fi}
+
+\catcode`@=12
+
+%D Just for tracing purposes wet set:
+
+\tracingstats=1
+
+%D To circumvent dependencies, we can postpone certain
+%D initializations to dumping time, by appending them to the
+%D \type {\everydump} token register.
+
+\newtoks \everydump
+
+\let\normaldump \dump
+
+\def\dump{\the\everydump\normaldump}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-var.tex b/Master/texmf-dist/tex/context/base/syst-var.tex
new file mode 100644
index 00000000000..6dbaae92d0f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-var.tex
@@ -0,0 +1,23 @@
+%D \module
+%D [ file=syst-con,
+%D version=2005.07.04, % moved code
+%D title=\CONTEXT\ System Macros,
+%D subtitle=Variables,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context System Macro's / Variables}
+
+\ifx\undefined\globalscratchcounter \newcount \globalscratchcounter \fi
+\ifx\undefined\globalscratchdimen \newdimen \globalscratchdimen \fi
+\ifx\undefined\globalscratchskip \newskip \globalscratchskip \fi
+\ifx\undefined\globalscratchmuskip \newmuskip\globalscratchmuskip \fi
+\ifx\undefined\globalscratchbox \newbox \globalscratchbox \fi
+\ifx\undefined\globalscratchtoks \newtoks \globalscratchtoks \fi
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/syst-xtx.tex b/Master/texmf-dist/tex/context/base/syst-xtx.tex
new file mode 100644
index 00000000000..7466725c769
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/syst-xtx.tex
@@ -0,0 +1,33 @@
+%D \module
+%D [ file=syst-xtx,
+%D version=2004.09.11,
+%D title=\CONTEXT\ System Macros,
+%D subtitle=\XETEX\ specifics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx\XeTeXversion\undefined \endinput \fi
+
+\unprotect
+
+%D For the moment, the only thing needed is to load are the
+%D mappings from lower to uppercase characters.
+
+\ifx\scratchread\undefined \newread\scratchread \fi
+
+\immediate\openin\scratchread=unicode-letters.tex \ifeof\scratchread
+ \immediate\openin\scratchread=xplain.tex \ifeof\scratchread
+ % no initialization file
+ \else
+ \input xplain.tex
+ \fi
+\else
+ \input unicode-letters.tex
+\fi
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/thrd-ran.tex b/Master/texmf-dist/tex/context/base/thrd-ran.tex
new file mode 100644
index 00000000000..7a186204b1d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/thrd-ran.tex
@@ -0,0 +1,168 @@
+% Since we cannot be sure that this file is available at any
+% system, we have copied the original in this file. These
+% macros are encapsulates and extended in supp-ran.tex.
+%
+% This module is slightly recoded to bring it more in tune
+% with \CONTEXT's scratch registers and protection mechanisms.
+
+% RANDOM.TEX v.1 (Donald Arseneau)
+% Generating "random" numbers in TeX.
+%
+% Random integers are generated in the range 1 to 2147483646 by the
+% macro \nextrandom. The result is returned in the counter \randomi.
+% Do not change \randomi except, perhaps, to initialize it at some
+% random value. If you do not initialize it, it will be initialized
+% using the time and date. (This is a sparse initialization, giving
+% fewer than a million different starting values, but you should use
+% other sources of numbers if they are available--just remember that
+% most of the numbers available to TeX are not at all random.)
+%
+% The \nextrandom command is not very useful by itself, unless you
+% have exactly 2147483646 things to choose from. Much more useful
+% is the \setrannum command which sets a given counter to a random
+% value within a specified range. There are three parameters:
+% \setrannum {<counter>} {<minimum>} {<maximum>}. For example, to
+% simulate a die-roll: \setrannum{\die}{1}{6} \ifcase\die... .
+%
+% If you need random numbers that are not integers, you will have to
+% use dimen registers and \setrandimen. For example, to set a random
+% page width: \setrandimen \hsize{3in}{6.5in}. The "\pointless" macro
+% will remove the "pt" that TeX gives so you can use the dimensions
+% as pure `real' numbers. In that case, specify the range in pt units.
+% For example,
+%
+% \setrandimen\answer{2.71828pt}{3.14159pt}
+% The answer is \pointless\answer.
+%
+% The random number generator is the one by Lewis, Goodman, and Miller
+% (1969) and used as "ran0" in "Numerical Recipies" using Schrage's
+% method for avoiding overflows. The multiplier is 16807 (7^5), the
+% added constant is 0, and the modulus is 2147483647 (2^{31}-1). The
+% range of integers generated is 1 - 2147483646. A smaller range would
+% reduce the complexity of the macros a bit, but not much--most of the
+% code deals with initialization and type-conversion. On the other hand,
+% the large range may be wasted due to the sparse seed initialization.
+
+% original code
+%
+% \newcount\randomi % the random number seed (while executing)
+% \global\randomi\catcode`\@ % scratch variable during definitions
+% \catcode`\@=11
+%
+% \def\nextrandom{\begingroup
+% \ifnum\randomi<\@ne % then initialize with time
+% \global\randomi\time
+% \global\multiply\randomi388 \global\advance\randomi\year
+% \global\multiply\randomi31 \global\advance\randomi\day
+% \global\multiply\randomi97 \global\advance\randomi\month
+% \message{Randomizer initialized to \the\randomi.}%
+% \nextrandom \nextrandom \nextrandom
+% \fi
+% \count@ii\randomi
+% \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
+% \count@\count@ii
+% \multiply\count@ii 127773
+% \global\advance\randomi-\count@ii % random mod 127773
+% \global\multiply\randomi 16807
+% \multiply\count@ 2836
+% \global\advance\randomi-\count@
+% \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
+% \endgroup
+% }
+%
+% \countdef\count@ii=2 % use only in boxes!
+% \ifx\@tempcnta\undefined \csname newcount\endcsname \@tempcnta \fi
+% \ifx\@tempcntb\undefined \csname newcount\endcsname \@tempcntb \fi
+%
+% \def\setrannum#1#2#3{% count register, minimum, maximum
+% \@tempcnta#3\advance\@tempcnta-#2\advance\@tempcnta\@ne
+% \@tempcntb 2147483645 % = m - 2 = 2^{31} - 3
+% \divide\@tempcntb\@tempcnta
+% \getr@nval
+% \advance\ranval#2\relax
+% #1\ranval
+% }
+%
+% \def\setrandim#1#2#3{% dimen register, minimum length, maximum length
+% \dimen@#2\dimen@ii#3\relax
+% \setrannum\ranval\dimen@\dimen@ii
+% #1\ranval sp\relax
+% }
+%
+% \def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters
+% \nextrandom
+% \ranval\randomi \advance\ranval\m@ne \divide\ranval\@tempcntb
+% \ifnum\ranval<\@tempcnta\else \expandafter\getr@nval \fi
+% }
+%
+% %D The next macro is not needed in \CONTEXT, which provides
+% %D the \type {\withoutpt} macro.
+% %D
+% %D \starttyping
+% %D \def\pointless{\expandafter\PoinTless\the}
+% %D {\catcode`p=12 \catcode`t=12 \gdef\PoinTless#1pt{#1}}
+% %D \stoptyping
+%
+% \catcode`\@=\randomi
+% \global\randomi=0
+% \newcount\ranval
+
+% the recoded version, using \CONTEXT\ methods and variables;
+% the magic is kept untouched
+
+\unprotect
+
+\newcount\randomi % the random number seed (while executing)
+\newcount\ranval
+
+\ifx\m!systems\undefined \def\m!systems{system} \fi
+
+\def\nextrandom
+ {\begingroup
+ \ifnum\randomi<\plusone % then initialize with time
+ \global\randomi\time
+ \global\multiply\randomi388 \global\advance\randomi\year
+ \global\multiply\randomi 31 \global\advance\randomi\day
+ \global\multiply\randomi 97 \global\advance\randomi\month
+ \writestatus\m!systems{randomizer starts with \the\randomi}%
+ \nextrandom \nextrandom \nextrandom
+ \fi
+ \!!countd\randomi
+ \divide\!!countd 127773 % modulus = multiplier * 127773 + 2836
+ \!!countc\!!countd
+ \multiply\!!countd 127773
+ \global\advance\randomi-\!!countd % random mod 127773
+ \global\multiply\randomi 16807
+ \multiply\!!countc 2836
+ \global\advance\randomi-\!!countc\relax
+ \ifnum\randomi<\zerocount
+ \global\advance\randomi 2147483647
+ \fi
+ \endgroup}
+
+\def\setrannum#1#2#3% count register, minimum, maximum
+ {\!!counta#3%
+ \advance\!!counta-#2%
+ \advance\!!counta\plusone
+ \!!countb 2147483645 % = m - 2 = 2^{31} - 3
+ \divide\!!countb\!!counta
+ \getr@nval
+ \advance\ranval#2%
+ #1\ranval}
+
+\def\setrandim#1#2#3% dimen register, minimum length, maximum length
+ {\!!dimenc#2%
+ \!!dimend#3%
+ \setrannum\ranval\!!dimenc\!!dimend
+ #1\ranval\s!sp\relax} % \s!sp not needed
+
+\def\getr@nval % The values in \!!counta and \!!countb are parameters
+ {\nextrandom
+ \ranval\randomi
+ \advance\ranval\minusone
+ \divide\ranval\!!countb
+ \ifnum\ranval<\!!counta \else
+ \expandafter\getr@nval
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/thrd-tab.tex b/Master/texmf-dist/tex/context/base/thrd-tab.tex
new file mode 100644
index 00000000000..2abd3fb3df9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/thrd-tab.tex
@@ -0,0 +1,1961 @@
+% Since this file is not available in every distribution, we
+% have copied the original in this file. The manuals to
+% Wichura's PiCTeX and TaBlE packages are not available on
+% line and are distributed by respectively the TeX Users Group
+% and Personal TeX Inc. Many macros of TaBlE are overloaded
+% and/or extended in core-tab.tex. The extensions concern
+% splitting over pages, color and consistent spacing.
+
+% TABLE 1.0
+% Copyright Michael J. Wichura August 1988
+
+% The TABLE macros are divided into sections, roughly according to
+% function:
+
+% Section Name Function
+% a Allocation Allocates storage registers for parameters.
+% f Format Reads format section; builds preamble for \halign;
+% processes \ReFormat command.
+% g Get Value Converts "spec"'s (as in spec_{LT}) to
+% corresponding "values"'s (as in value_{LT}).
+% h Hacks Utility macros; error messages; miscellaneous commands.
+% k Keys Definition and scanning of format keys.
+% n Numeric Macros for TABLE's numeric format.
+% s Struts Macros for struts.
+% t Tables Sets up \halign for table; end-of-row processing;
+% alternate vertical rules; spanning; horizontal
+% lines; stretching and shrinking; repositioning
+% commands.
+
+% The name of each internal macro begins with the prefix "\!t", the
+% "!" having category code 11, followed by the letter of the section
+% in which the macro is defined. For example, a macro beginning "\!th"
+% is defined in Section h (Hacks). There a few exceptions:
+% the general purpose macros "\!ttemp", "\!ttempa", "\!ttempb", and
+% "\!tnext" are repeatedly defined on the spot as the need arises.
+
+% External macros (and active characters) are defined in the following
+% sections:
+% Macro Section
+% " t
+% \- t
+% \= t
+% \ActivateBarAndQuote h
+% \AugmentedTableStrut s
+% \BackSpace h
+% \BeginFormat f
+% \BeginTable t
+% \BeginTableParBox a
+% \Center t
+% \ColumnWidthFactor a
+% \ColumnWidthUnit a
+% \DQuote h
+% \EndFormat k (\EndFormat is actually a key)
+% \EndTable t
+% \EndTableParBox a
+% \Enlarge s
+% \enlarge s
+% \EveryTable a
+% \EveryTableParBox a
+% \Expand t
+% \InterColumnSpaceFactor a
+% \InterColumnSpaceUnit a
+% \JustCenter t
+% \JustLeft t
+% \JustRight t
+% \KernFactor a
+% \KernUnit a
+% \Left t
+% \LeftTabskip a
+% \LineThicknessFactor a
+% \LineThicknessUnit a
+% \LongLines t
+% \Lower h
+% \MakeStrut s
+% \NewFormatKey k
+% \NormalCWU a
+% \NormalICSU a
+% \NormalKU a
+% \NormalLTU a
+% \NormalSU a
+% \NormalTableUnits a
+% \OpenUp s
+% \PseudoVrule t
+% \Raise h
+% \ReadFormatKeys k
+% \ReFormat f
+% \Right t
+% \RightTabskip a
+% \SetTableToWidth t
+% \Smash h
+% \StandardTableStrut s
+% \StrutDepthFactor a
+% \StrutHeightFactor a
+% \StrutUnit a
+% \TaBlE h
+% \TracingFormats a
+% \TracingKeys a
+% \Use t
+% \use t
+% \VBar h
+% \Vspace h
+% \VspaceFactor a
+% \WidenTableBy t
+% \\ t
+% \_ t
+% \| t
+% | t
+% ~ t
+%
+\catcode `\!=11
+\catcode `\@=11
+
+% Don't try to read the TABLE macros until after you've read the
+% TABLE manual. The internal documentation of the macros is
+% sketchy; you need the manual to understand what's going on.
+% You should also review the material on \halign s in the TeXbook,
+% since TABLE uses an \halign to perform its alignments.
+
+% In studying the TABLE macros, you should start by skimming the
+% macros in the "miscellaneous hacks", "error messages", and "loops"
+% subsections of Section h, as well as the "\GetValue" macro in
+% Section g; these macros are called many times by the other macros.
+% To continue with a "bottom-up" approach, read next Sections k,
+% f, and t. (Top-downers should reverse the order.) The other
+% Sections can be looked at as the need arises.
+
+
+
+% *********************************************************************
+% SECTION A: ALLOCATION
+% *********************************************************************
+
+\let\!tacr=\\ % Save meaning of \\ (Needed if TABLE is used with LaTeX
+
+% *********************************************************************
+% TABLE PARAMETERS: Units
+% *********************************************************************
+
+\newdimen\LineThicknessUnit
+\newdimen\StrutUnit
+\newskip \InterColumnSpaceUnit
+\newdimen\ColumnWidthUnit
+\newdimen\KernUnit
+
+\let\!taLTU=\LineThicknessUnit % Used in preamble
+\let\!taCWU=\ColumnWidthUnit % Used in preamble
+\let\!taKU =\KernUnit % Used in preamble
+
+\newtoks\NormalTLTU
+\newtoks\NormalTSU
+\newtoks\NormalTICSU
+\newtoks\NormalTCWU
+\newtoks\NormalTKU
+
+% NOTE: The user should modify the following DEFAULTS to suit his/her
+% taste, and output device:
+%\def\PixelsPerInch{300}
+\NormalTLTU={1in \divide \LineThicknessUnit by 300 }
+\NormalTSU ={\normalbaselineskip
+ \divide \StrutUnit by 11 } % 11 = 8+3 = NormalT Height+Depth Factors
+\NormalTICSU={.5em plus 1fil minus .25em} % .5em = width of a digit
+\NormalTCWU ={.5em}
+\NormalTKU ={.5em}
+
+\def\NormalTableUnits{%
+ \LineThicknessUnit =\the\NormalTLTU
+ \StrutUnit =\the\NormalTSU
+ \InterColumnSpaceUnit=\the\NormalTICSU
+ \ColumnWidthUnit =\the\NormalTCWU
+ \KernUnit =\the\NormalTKU}
+
+\NormalTableUnits
+
+% The user should issue \NormalTableUnits when setting a table
+% in a different point size, since the Table...Units themselves
+% are static while the Normal...Units vary with the point size.
+
+
+% *********************************************************************
+% TABLE PARAMETERS: Factors
+% *********************************************************************
+
+\newcount\LineThicknessFactor
+\newcount\StrutHeightFactor
+\newcount\StrutDepthFactor
+\newcount\InterColumnSpaceFactor
+\newcount\ColumnWidthFactor
+\newcount\KernFactor
+\newcount\VspaceFactor
+
+% DEFAULTS:
+\LineThicknessFactor =2
+\StrutHeightFactor =8
+\StrutDepthFactor =3
+\InterColumnSpaceFactor =3
+\ColumnWidthFactor =10
+\KernFactor =1
+\VspaceFactor =2
+
+
+% *********************************************************************
+% DIAGNOSTIC PARAMETERS
+% *********************************************************************
+
+\newcount\TracingKeys % >=1 reports new keys, >=2 reports key usage
+\newcount\TracingFormats % >=1 reports templates for columns
+ % >=2 reports \halign preamble
+
+
+% *********************************************************************
+% PARBLOCK PARAMETERS
+% *********************************************************************
+
+\def\BeginTableParBox#1{%
+ \vtop\bgroup
+ \hsize=#1
+ \normalbaselines
+ \let~=\!ttTie
+ \let\-=\!ttDH
+ \the\EveryTableParBox}
+
+\def\EndTableParBox{%
+ \MakeStrut{0pt}{\StrutDepthFactor\StrutUnit}
+ \egroup} % finishes the \vtop begun by \BeginTableParbox
+
+\newtoks\EveryTableParBox
+\EveryTableParBox={%
+ \parindent=0pt
+ \raggedright
+ \rightskip=0pt plus 4em % Provide more stretch
+ \relax}
+
+
+% *********************************************************************
+% EVERY TABLE TOKENS
+% *********************************************************************
+
+\newtoks\EveryTable
+\newtoks\!taTableSpread
+
+
+% *********************************************************************
+% Extreme left- and right- tabskips
+% *********************************************************************
+
+\newskip\LeftTabskip
+\newskip\RightTabskip
+
+
+% *********************************************************************
+% INTERNAL VARIABLES
+% *********************************************************************
+
+\newcount\!taCountA
+\newcount\!taColumnNumber
+\newcount\!taRecursionLevel % (Initially 0)
+
+\newdimen\!taDimenA % used by \Enlarge
+\newdimen\!taDimenB % used by \Enlarge
+\newdimen\!taDimenC % used by numeric.tex
+\newdimen\!taMinimumColumnWidth
+
+\newtoks\!taToksA
+
+\newtoks\!taPreamble
+\newtoks\!taDataColumnTemplate
+\newtoks\!taRuleColumnTemplate
+\newtoks\!taOldRuleColumnTemplate
+\newtoks\!taLeftGlue
+\newtoks\!taRightGlue
+
+\newskip\!taLastRegularTabskip
+
+\newif\if!taDigit
+\newif\if!taBeginFormat
+\newif\if!taOnceOnlyTabskip
+
+
+
+% *********************************************************************
+% SECTION H: HACKS
+% *********************************************************************
+
+% ****************************************************************
+% TABLE LOGO
+% ****************************************************************
+\def\TaBlE{%
+ T\kern-.27em\lower.5ex\hbox{A}\kern-.18em B\kern-.1em
+ \lower.5ex\hbox{L}\kern-.075em E}
+
+
+% ****************************************************************
+% ACTIVE CHARACTERS
+% ****************************************************************
+
+% ACTIVATE BAR AND QUOTE: Makes | and " active if they aren't
+% already active (in which case the user will probably have given
+% them special meanings); definitions are provided which effectively
+% undoes the activeness outside a Table.
+
+{\catcode`\|=13 \catcode`\"=13
+ \gdef\ActivateBarAndQuote{%
+ \ifnum \catcode`\|=13
+ \else
+ \catcode`\|=13
+ \def|{%
+ \ifmmode
+ \vert
+ \else
+ \char`\|
+ \fi}%
+ \fi
+ \ifnum \catcode`\"=13
+ \else
+ \catcode`\"=13
+ \def"{\char`\"}%
+ \fi}}
+
+% ****************************************************************
+% Macros for | and " having category code 12.
+% ****************************************************************
+{\catcode `\|=12 \catcode `\"=12
+\gdef\VBar{|}
+\gdef\DQuote{"}}
+
+
+% ****************************************************************
+% MISCELANEOUS HACKS
+% ****************************************************************
+
+% MESSAGE <Message>: Writes out <Message> to terminal and log file.
+\def\!thMessage#1{\immediate\write16{#1}\ignorespaces}
+
+% X: Abbreviation for expandafter
+\let\!thx=\expandafter
+
+% GOBBLE: Eats next token
+\def\!thGobble#1{}
+
+% SPACE TOKEN
+\def\\{\let\!thSpaceToken= }\\
+
+% HEIGHT, DEPTH, AND WIDTH
+\def\!thHeight{height}
+\def\!thDepth{depth}
+\def\!thWidth{width}
+
+% TOKSEDEF <token register>=<replacement text>: Places <replacement
+% text>, fully expanded a la \edef, in the specified <token register>.
+\def\!thToksEdef#1=#2{%
+ \edef\!ttemp{#2}%
+ #1\!thx{\!ttemp}%
+ \ignorespaces}
+
+
+% ****************************************************************
+% ERROR MESSAGES
+% ****************************************************************
+
+% STORE ERROR MSG <Control Sequence> <Message>
+% Replacement text of <Control Sequence> is a macro with Message
+% as its name. E.g., after \StoreErrorMsg\Help{Type <CR>},
+% \Help expands to "\Type <CR>"
+\def\!thStoreErrorMsg#1#2{%
+ \toks0 =\!thx{\csname #2\endcsname}%
+ \edef#1{\the\toks0 }}
+
+% READ ERROR MSG <Control sequence>
+% Continuing the above example, \ReadErrorMsg\Help produces "Type <CR>"
+\def\!thReadErrorMsg#1{%
+ \!thx\!thx\!thx\!thGobble\!thx\string #1}
+
+% ERROR <Error Message> <Error Help>
+\def\!thError#1#2{%
+ \begingroup
+ \newlinechar=`\^^J%
+ \edef\!ttemp{#2}%
+ \errhelp=\!thx{\!ttemp}%
+ \!thMessage{%
+ ^^J\!thReadErrorMsg\!thErrorMsgA
+ ^^J\!thReadErrorMsg\!thErrorMsgB}%
+ \errmessage{#1}%
+ \endgroup}
+
+% TEXT FOR ERROR MESSAGE
+\!thStoreErrorMsg\!thErrorMsgA{%
+ TABLE error; see manual for explanation.}
+\!thStoreErrorMsg\!thErrorMsgB{%
+ Type \space H <return> \space for immediate help.}
+
+% GET REPLACEMENT <Prompt Message> <Replacement Value>
+% <Replacement Vale> must be a control sequence
+\def\!thGetReplacement#1#2{%
+ \begingroup
+ \!thMessage{#1}
+ \endlinechar=-1
+ \global\read16 to#2%
+ \endgroup}
+
+
+% ****************************************************************
+% LOOP MACRO
+% ****************************************************************
+
+% LOOP ... REPEAT macro from TUGboat Vol 8 #2: 1987
+% Syntax is like that of plain TeX's \loop ... \repeat macro
+\def\!thLoop#1\repeat{%
+ \def\!thIterate{%
+ #1%
+ \!thx \!thIterate
+ \fi}%
+ \!thIterate
+ \let\!thIterate\relax}
+
+
+% ***************************************************************
+% VERTICALLY-CENTERED SMASH
+% ***************************************************************
+
+% SMASH: Like TeX's \smash, only the argument
+% is centered vertically before its height and depth are smashed to 0pt.
+\def\Smash{%
+ \relax
+ \ifmmode
+ \expandafter\mathpalette
+ \expandafter\!thDoMathVCS
+ \else
+ \expandafter\!thDoVCS
+ \fi}
+
+% DO VCS
+\def\!thDoVCS#1{%
+ \setbox\z@\hbox{#1}%
+ \!thFinishVCS}
+
+% DO MATH VCS
+\def\!thDoMathVCS#1#2{%
+ \setbox\z@\hbox{$\m@th#1{#2}$}%
+ \!thFinishVCS}
+
+% FINISH VCS
+\def\!thFinishVCS{%
+ \vbox to\z@{\vss\box\z@\vss}}
+
+
+% ***************************************************************
+% RAISE AND LOWER
+% ***************************************************************
+
+% Like TeX's \raise and \lower, except: (1) The first argument
+% to these commands is a dimension expressed in TABLE's usual conventions;
+% the default is (StrutHeightFactor+StrutDepthFactor)*StrutUnit/2
+% (2) like \smash, these commands function in math mode as well
+% as horizontal mode; (3) again like \smash, the result is declared
+% to have height and depth 0pt
+
+% Examples \Raise2{Stuff}: "Stuff" is raised 2*StrutUnit
+% \Raise {Stuff}: "Stuff" is raised a half-line
+% $\Lower(10pt){\alpha}$: "$\alpha$" is lowered 10 points
+
+% RAISE
+\def\Raise{%
+ \def\!thSign{+}%
+ \!tgGetValue\!thSetDimen}
+
+% LOWER
+\def\Lower{%
+ \def\!thSign{-}%
+ \!tgGetValue\!thSetDimen}
+
+% SET DIMEN
+\def\!thSetDimen{%
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \!taDimenA \StrutHeightFactor\StrutUnit
+ \advance \!taDimenA \StrutDepthFactor\StrutUnit
+ \divide \!taDimenA 2
+ \else
+ \!taDimenA \!tgValue\StrutUnit
+ \fi
+ \else
+ \!taDimenA \!tgValue
+ \fi
+ \!taDimenA=\!thSign\!taDimenA\relax
+ %
+ % BRANCH ON MODE
+ \ifmmode
+ \expandafter\mathpalette
+ \expandafter\!thDoMathRaise
+ \else
+ \expandafter\!thDoSimpleRaise
+ \fi}
+
+% DO SIMPLE RAISE
+\def\!thDoSimpleRaise#1{%
+ \setbox\z@\hbox{\raise \!taDimenA\hbox{#1}}%
+ \!thFinishRaise} % From Plain TeX: \ht0=0pt \dp0=0pt \box0
+
+% DO MATH RAISE
+\def\!thDoMathRaise#1#2{%
+ \setbox\z@\hbox{\raise \!taDimenA\hbox{$\m@th#1{#2}$}}%
+ \!thFinishRaise}
+
+% FINISH RAISE. This is the same as Plain's \finsm@sh; some macro
+% packages redefine \finsm@sh.
+\def\!thFinishRaise{%
+ \ht\z@\z@
+ \dp\z@\z@
+ \box\z@}
+
+
+% ***************************************************************
+% BACK SPACE
+% ***************************************************************
+\def\BackSpace{%
+ \!tgGetValue\!thKernBack}
+
+\def\!thKernBack{%
+ \kern -
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \the\KernFactor
+ \else
+ \!tgValue % user-specified integer
+ \fi
+ \KernUnit
+ \else
+ \!tgValue % user-specified dimension
+ \fi
+ \ignorespaces}%
+
+
+% ***************************************************************
+% Vspace
+% ***************************************************************
+\def\Vspace{%
+ \noalign
+ \bgroup
+ \!tgGetValue\!thVspace}
+
+\def\!thVspace{%
+ \vskip
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \the\VspaceFactor
+ \else
+ \!tgValue % user-specified integer
+ \fi
+ \StrutUnit
+ \else
+ \!tgValue % user-specified skip
+ \fi
+ \egroup} % Ends the \noalign
+
+% *********************************************************************
+% SECTION F: FORMAT
+% *********************************************************************
+
+% As explained in Section 3.3 of the manual, TABLE alternates each
+% of the user's "data" columns with a "rule" column; moreover, TABLE
+% places a "dummy data" column at the left and right of a table.
+% A table with n nominal data columns therefore actually has a
+% total of
+% n (nominal data columns)
+% +(n+1) (rule columns)
+% + 2 (dummy data columns)
+% ____
+% 2n+3
+% columns.
+
+% FORMATs job is to create an \halign preamble for the alignment
+% of these (2n+3) columns. The preamble consists of templates
+% for the various columns, strung together with &'s and interlaced
+% with \tabskip glue specifications.
+
+% FORMAT constructs the template for a nomimal data column according
+% to the user-specified format keys. As the keys are read from left
+% to right, the template is built up "from the inside out" (as
+% illustrated in Section 3.1.9 of the manual), the inner-most part
+% being the "#" sign. A "|" in the format terminates template
+% building; the completed template is adjoined to preamble along
+% with the template for the following rule column.
+
+% Minimum column widths, if specified, are implemented by creating
+% an "artificial row" with data entries of the form
+% \hskip <minimum column width>.
+% This row has zero height and depth and is completely invisible.
+
+
+% BEGIN FORMAT
+\def\BeginFormat{%
+ \catcode`\|=12 % Inhibit expansion if | immediately follows a <number>
+ \catcode`\"=12 % read by \getvalue.
+ \!taPreamble={}%
+ \!taColumnNumber=0
+ \skip0 =\InterColumnSpaceUnit
+ \multiply\skip0 \InterColumnSpaceFactor
+ \divide\skip0 2
+ \!taRuleColumnTemplate=\!thx{%
+ \!thx\tabskip\the\skip0 }%
+ \!taLastRegularTabskip=\skip0
+ \!taOnceOnlyTabskipfalse
+ \!taBeginFormattrue % Used to intercept key "]"
+ \def\!tfRowOfWidths{}% Artificial Table Row with horizontal struts
+ % to enforce specified minimum column widths
+ \ReadFormatKeys}
+
+% SET (MINIMUM COLUMN) WIDTH: Invoked by the key "w".
+\def\!tfSetWidth{%
+ \ifx \!tfRowOfWidths \empty % true if no prior "w" keys
+ \ifnum \!taColumnNumber>0 % true if "w" key is to right of first "|"
+ \begingroup % RowOfWidths={&\omit || n copies of
+ % &\omit&\omit}, where n = number of columns
+ \!taCountA=1 % to the left of this one
+ \aftergroup \edef \aftergroup \!tfRowOfWidths \aftergroup {%
+ \aftergroup &\aftergroup \omit
+ \!thLoop
+ \ifnum \!taCountA<\!taColumnNumber
+ \advance\!taCountA 1
+ \aftergroup \!tfAOAO
+ \repeat
+ \aftergroup }%
+ \endgroup
+ \fi
+ \fi
+ \ifx [\!ttemp % \!tgGetValue sets \!ttemp = token after w
+ \!thx\!tfSetWidthText
+ \else
+ \!thx\!tfSetWidthValue
+ \fi}
+
+% AOAO = (Apersand Omit Ampersand Omit)
+\def\!tfAOAO{%
+ &\omit&\omit}
+
+% SET WIDTH TEXT
+\def\!tfSetWidthText [#1]{% #1 = specified text
+ \def\!tfWidthText{#1}%
+ \ReadFormatKeys}
+
+% SET WIDTH VALUE
+\def\!tfSetWidthValue{%
+ \!taMinimumColumnWidth =
+ \ifnum \!tgCode=1
+ \ifx\!tgValue\empty % Use default multiplier if user didn't specify one
+ \ColumnWidthFactor
+ \else
+ \!tgValue
+ \fi
+ \ColumnWidthUnit
+ \else
+ \!tgValue
+ \fi
+ \def\!tfWidthText{}% Override possible prior `w[sample entry]'
+ \ReadFormatKeys}
+
+
+% SET TABSKIP: Invoked by the tabskip keys "t" and "o"
+\def\!tfSetTabskip{%
+ \ifnum \!tgCode=1
+ \skip0 =\InterColumnSpaceUnit
+ \multiply\skip0
+ \ifx \!tgValue\empty
+ \InterColumnSpaceFactor % Default integer
+ \else
+ \!tgValue % User-specified integer
+ \fi
+ \else
+ \skip0 =\!tgValue % User-specified <skip>
+ \fi
+ \divide\skip0 by 2
+ \ifnum\!taColumnNumber=0
+ \!thToksEdef\!taRuleColumnTemplate={%
+ \the\!taRuleColumnTemplate
+ \tabskip \the\skip0 }
+ \else
+ \!thToksEdef\!taDataColumnTemplate={%
+ \the\!taDataColumnTemplate
+ \tabskip \the\skip0 }
+ \fi
+ \if!taOnceOnlyTabskip
+ % % Tabskip used at right of this col only
+ \else
+ \!taLastRegularTabskip=\skip0 % Remember this Tabskip, for possible
+ \fi % restoration after a subsequent"OnceOnly"
+ \ReadFormatKeys}
+
+
+% SET VRULE: Invoked by the key "|"
+\def\!tfSetVrule{%
+ \!thToksEdef\!taRuleColumnTemplate={%
+ \noexpand\hfil
+ \noexpand\vrule
+ \noexpand\!thWidth
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \the\LineThicknessFactor % Default integer
+ \else
+ \!tgValue % User-specified integer
+ \fi
+ \!taLTU % \LineThicknessUnit
+ \else
+ \!tgValue % User-specified dimension
+ \fi
+ ####%
+ \noexpand\hfil
+ \the\!taRuleColumnTemplate} % has \tabskips, when column number=0
+ \!tfAdjoinPriorColumn}
+
+% SET ALTERNATE VRULE: Invoked by the key "\|", in the form
+% \|{<template for (rule) column>}. The "{" and "}" are mandatory,
+% and the <template for column> must contain a "#". The key system
+% CAN'T be used to set up this template. The <template> can have the
+% form "\span\macro".
+\def\!tfSetAlternateVrule{%
+ \afterassignment\!tfSetAlternateA
+ \toks0 =} % Put template into \toks0
+
+\def\!tfSetAlternateA{%
+ \!thToksEdef\!taRuleColumnTemplate={%
+ \the\toks0 \the\!taRuleColumnTemplate} % RCT may have \tabskips
+ \!tfAdjoinPriorColumn}
+
+% ADJOIN PRIOR COLUMN
+\def\!tfAdjoinPriorColumn{%
+ \ifnum \!taColumnNumber=0
+ \!taPreamble=\!taRuleColumnTemplate % New \tabskip may have been added
+ \ifnum \TracingFormats>0
+ \!tfShowRuleTemplate
+ \fi
+ \else
+ \ifx\!tfRowOfWidths\empty % no "w" keys specified yet, not even this col
+ \else
+ \!tfUpdateRowOfWidths
+ \fi
+ % Adjoin positioning glues to left and right of template
+ \!thToksEdef\!taDataColumnTemplate={%
+ \the \!taLeftGlue
+ \the \!taDataColumnTemplate
+ \the \!taRightGlue}
+ \ifnum \TracingFormats>0
+ \!tfShowTemplates
+ \fi
+ % Adjoin data- and rule-column templates to preamble
+ \!thToksEdef\!taPreamble={%
+ \the\!taPreamble
+ &
+ \the\!taDataColumnTemplate
+ &
+ \the\!taRuleColumnTemplate}
+ \fi
+%
+% START NEW COLUMN
+ \advance \!taColumnNumber 1
+ % Initialize data-column template, restoring last "regular" tabskip
+ % after a "once only" tabskip
+ \if!taOnceOnlyTabskip
+ \!thToksEdef\!taDataColumnTemplate={%
+ ####\tabskip \the\!taLastRegularTabskip}
+ \else
+ \!taDataColumnTemplate{##}%
+ \fi
+ % Remaining initializations
+ \!taRuleColumnTemplate{}% # is inserted by \SetVrule, or \SetAlternateVrule
+ \!taLeftGlue{\hfil}% % Default positioning is "center"
+ \!taRightGlue{\hfil}%
+ \!taMinimumColumnWidth=0pt
+ \def\!tfWidthText{}%
+ \!taOnceOnlyTabskipfalse % Set true by key "o"
+ \ReadFormatKeys}
+
+% UPDATE ROW OF WIDTHS
+\def\!tfUpdateRowOfWidths{%
+ % If user had a "w[<Text>]" key, set <Text> according to the
+ % template for this column, and find the width of the result
+ \ifx \!tfWidthText\empty
+ \else % set specified text according to current template & find width
+ \!tfComputeMinColWidth
+ \fi
+ \edef\!tfRowOfWidths{%
+ \!tfRowOfWidths
+ &%
+ \omit % Data Column
+ \ifdim \!taMinimumColumnWidth>0pt
+ \hskip \the\!taMinimumColumnWidth
+ \fi
+ &
+ \omit}} % Rule Column
+
+% COMPUTE MINIMUM COLUMN WIDTH (from specified WidthText)
+\def\!tfComputeMinColWidth{%
+ \setbox0 =\vbox{%
+ \ialign{% Plain's initialized \halign; \tabskip=0pt \everycr={}
+ \span\the\!taDataColumnTemplate\cr
+ \!tfWidthText\cr}}%
+ \!taMinimumColumnWidth=\wd0 }
+
+% SHOW (INITIAL) RULE TEMPLATE
+\def\!tfShowRuleTemplate{%
+ \!thMessage{}
+ \!thMessage{TABLE FORMAT}
+ \!thMessage{Column: Template}
+ \!thMessage{%
+ \space *c: ##\tabskip \the\LeftTabskip}
+ \!taOldRuleColumnTemplate=\!taRuleColumnTemplate}
+
+% SHOW TEMPLATES
+\def\!tfShowTemplates{%
+ \!thMessage{%
+ \space \space r: \the\!taOldRuleColumnTemplate}
+ \!taOldRuleColumnTemplate=\!taRuleColumnTemplate
+ \!thMessage{%
+ \ifnum \!taColumnNumber<10
+ \space
+ \fi
+ \the\!taColumnNumber c: \the\!taDataColumnTemplate}
+ \ifdim\!taMinimumColumnWidth>0pt
+ \!thMessage{%
+ \space \space w: \the\!taMinimumColumnWidth}
+ \fi}
+
+
+% FINISH UP: Invoked by the keys "." and \EndFormat
+\def\!tfFinishFormat{%
+ \ifnum \TracingFormats>0
+ \!thMessage{%
+ \space \space r: \the\!taOldRuleColumnTemplate
+ \tabskip \the\RightTabskip}%
+ \!thMessage{%
+ \space *c: ##\tabskip 0pt}
+ \fi
+ \ifnum \!taColumnNumber<2
+ \!thError{%
+ \ifnum \!taColumnNumber=0
+ No
+ \else
+ Only 1
+ \fi
+ "|"}%
+ {\!thReadErrorMsg\!tfTooFewBarsA
+ ^^J\!thReadErrorMsg\!tfTooFewBarsB
+ ^^J\!thReadErrorMsg\!tkFixIt}%
+ \fi
+ \!thToksEdef\!taPreamble={%
+ ####\tabskip\LeftTabskip
+ &
+ \the\!taPreamble \tabskip\RightTabskip
+ &
+ ####\tabskip 0pt \cr}
+ \ifnum \TracingFormats>1
+ \!thMessage{Preamble=\the\!taPreamble}
+ \fi
+ \ifnum \TracingFormats>2
+ \!thMessage{Row Of Widths="\!tfRowOfWidths"}
+ \fi
+ \!taBeginFormatfalse % Intercepts "|", tabskips, and "."
+ \catcode`\|=13
+ \catcode`\"=13
+ \!ttDoHalign}
+
+% ERROR MESSAGE FOR NOT ENOUGH "|"'s
+\!thStoreErrorMsg\!tfTooFewBarsA{%
+ There must be at least 2 "|"'s (and/or "\string \|"'s)}
+\!thStoreErrorMsg\!tfTooFewBarsB{%
+ between \string\BeginFormat\space and \string\EndFormat\space (or ".").}
+
+
+% REFORMAT [<key letters>]{<text>}: Formats <text> according to
+% <key letters>. Used to override the template for a column,
+% or columns when used after \use.
+\def\ReFormat[{%
+ \omit
+ \!taDataColumnTemplate{##}%
+ \!taLeftGlue{}%
+ \!taRightGlue{}%
+ \catcode`\|=12 % Inhibit expansion if | immediately follows a <number>
+ \catcode`\"=12 % read by \getvalue. Actually, '|' and '"' shouldn't
+ \ReadFormatKeys}% appear in a \ReFormat cmd; this is here as a safeguard.
+
+% END REFORMAT: Invoked by the key "]"
+\def\!tfEndReFormat{%
+ \ifnum \TracingFormats>0
+ \!thMessage{ReF:
+ \the\!taLeftGlue
+ \hbox{\the\!taDataColumnTemplate}% White lie
+ \the\!taRightGlue}
+ \fi
+ \catcode`\|=13
+ \catcode`\"=13
+ \!tfReFormat}
+
+\def\!tfReFormat#1{%
+ \the \!taLeftGlue
+ \vbox{%
+ \ialign{%
+ \span\the\!taDataColumnTemplate\cr
+ #1\cr}}%
+ \the \!taRightGlue}
+
+
+
+% *********************************************************************
+% SECTION G: GET VALUE
+% *********************************************************************
+
+% GET_VALUE{<return macro>}<tokens> functions as follows:
+
+% If <tokens> has the form <(stuff)>, then
+% code=2 and value=<stuff>
+
+% Otherwise <tokens> has the form <DDDXYZ> where <DDD> denotes (a possibly
+% empty) string of consecutive digits (0,1,2,...,9) terminated by the first
+% character <X> (possibly a blank) that is not a digit. In this case
+% code=1 and value=<DDD> (= <null>, if <DDD> is non-empty).
+
+% Examples: Code Value
+% "\GetValue{\macro} 3" 1 null
+% "\GetValue{\macro}A " 1 null
+% "\GetValue{\macro}1 " 1 1
+% "\GetValue{\macro}25A" 1 25
+% "\GetValue{\macro}25012 " 1 25012
+% "\GetValue{\macro}(10pt)" 2 10pt
+% "\GetValue{\macro}(1in)" 2 1in
+% "\GetValue{\macro} (1in)" 1 null
+
+
+% GET_VALUE{<macro to execute after value is found>}
+\def\!tgGetValue#1{%
+ \def\!tgReturn{#1}% Set return
+ \futurelet\!ttemp\!tgCheckForParen}% Now \!ttemp is the token
+ % immediately after {}
+
+% CHECK_PAREN: See if \!ttemp is a (
+\def\!tgCheckForParen{%
+ \ifx\!ttemp (%
+ \!thx \!tgDoParen
+ \else
+ \!thx \!tgCheckForSpace
+ \fi}
+
+% DO_PAREN: Set code to 2, value to stuff inside ( )'s
+\def\!tgDoParen(#1){%
+ \def\!tgCode{2}%
+ \def\!tgValue{#1}% NOTE #1 MUST BE A LEGITIMATE VALUE
+ \!tgReturn}
+
+% CHECK_SPACE: See if \!ttemp is a <blank space>
+\def\!tgCheckForSpace{%
+ \def\!tgCode{1}%
+ \def\!tgValue{}% Initialize value to <null>
+ \ifx\!ttemp\!thSpaceToken
+ \!thx \!tgReturn % <blank space> means no value was specified
+ \else
+ \!thx \!tgCheckForDigit
+ \fi}
+
+% CHECK_DIGIT: \!ttemp is not a <blank space>; if its a digit (0,1,...,9)
+% get the <number> starting with that digit.
+\def\!tgCheckForDigit{%
+ \!taDigitfalse
+ \ifx 0\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 1\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 2\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 3\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 4\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 5\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 6\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 7\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 8\!ttemp
+ \!taDigittrue
+ \else
+ \ifx 9\!ttemp
+ \!taDigittrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if!taDigit
+ \!thx \!tgGetNumber
+ \else
+ \!thx \!tgReturn
+ \fi}
+
+% GET_NUMBER
+\def\!tgGetNumber{%
+ \afterassignment\!tgGetNumberA
+ \!taCountA=}
+\def\!tgGetNumberA{%
+ \edef\!tgValue{\the\!taCountA}%
+ \!tgReturn}
+
+
+% ********************************************************************
+% MISCELANEOUS "RETURNS" FROM \getvalue
+% ********************************************************************
+
+% SET UP PAR BOX: Puts \BeginTableParBox{<user-specified \hsize>}
+% to the left of "#" and \EndTableParBox to the right of "#".
+\def\!tgSetUpParBox{%
+ \edef\!ttemp{%
+ \noexpand \ReadFormatKeys
+ b{\noexpand \BeginTableParBox{%
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \the\ColumnWidthFactor
+ \else
+ \!tgValue % user-specified integer
+ \fi
+ \!taCWU % \ColumnWidthUnit
+ \else
+ \!tgValue % user-specified dimension
+ \fi}}}%
+ \!ttemp
+ a{\EndTableParBox}}
+
+% SET KERNS
+\def\!tgInsertKern{%
+ \edef\!ttemp{%
+ \kern
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \the\KernFactor
+ \else
+ \!tgValue % user-specified integer
+ \fi
+ \!taKU % \KernUnit
+ \else
+ \!tgValue % user-specified dimension
+ \fi}%
+ \edef\!ttemp{%
+ \noexpand\ReadFormatKeys
+ \ifh@ % true if kern goes to left of "#"
+ b{\!ttemp}
+ \fi
+ \ifv@ % true if kern goes to right of "#"
+ a{\!ttemp}
+ \fi}%
+ \!ttemp}
+
+% *********************************************************************
+% SECTION K: KEYS
+% *********************************************************************
+
+% ****************************************************************
+% DEFINING NEW KEYS
+% ****************************************************************
+
+% NEW FORMAT KEY <Key Letter>: Must be followed by
+% <Parameter Text> <Replacement Text>
+% Sets up a new key letter command by expanding (essentially) to
+% \expandafter \def \csname !tk<Key Letter>\endcsname
+% <Parameter Text>{<Replacement Text>}
+% A warning message is issued if <Key Letter> is already in use.
+\def\NewFormatKey#1{%
+ \!thx\def\!thx\!ttempa\!thx{\string #1}%
+ \!thx\def\!thx\!ttempb\!thx{\csname !tk<\!ttempa>\endcsname}%
+ \ifnum \TracingKeys>0
+ \!tkReportNewKey
+ \fi
+ \!thx\ifx \!ttempb \relax
+ \!thx\!tkDefineKey
+ \else
+ \!thx\!tkRejectKey
+ \fi}
+
+% REPORT NEW KEY
+\def\!tkReportNewKey{%
+ \!taToksA\!thx{\!ttempa}%
+ \!thMessage{NEW KEY: "\the\!taToksA"}}
+
+% DEFINE KEY
+\def\!tkDefineKey{%
+ \!thx\def\!ttempb}%
+
+% DUPLICATE KEY
+\def\!tkRejectKey{%
+ \!taToksA\!thx{\!ttempa}%
+ \!thError{Key letter "\the\!taToksA" already used}
+ {\!thReadErrorMsg\!tkFixIt}
+ \def\!tkGarbage}%
+
+% ERROR MESSAGE FOR DUPLICATE KEY
+\!thStoreErrorMsg\!tkFixIt{%
+ You'd better type \space 'E' \space and fix your file.}
+
+
+% ****************************************************************
+% READING FORMAT KEYS
+% ****************************************************************
+
+% READ FORMAT KEYS
+\def\ReadFormatKeys#1{%
+ \!thx\def\!thx\!ttempa\!thx{\string #1}%
+ \!thx\def\!thx\!ttempb\!thx{\csname !tk<\!ttempa>\endcsname}%
+ \ifnum \TracingKeys>1
+ \!tkReportKey
+ \fi
+ \!thx\ifx \!ttempb\relax
+ \!thx\!tkReplaceKey
+ \else
+ \!thx\!ttempb
+ \fi}
+
+% REPORT KEY
+\def\!tkReportKey{%
+ \!taToksA\!thx{\!ttempa}%
+ \!thMessage{KEY: "\the\!taToksA"}}
+
+% REPLACE KEY
+\def\!tkReplaceKey{%
+ \!taToksA\!thx{\!ttempa}%
+ \!thError {Undefined format key "\the\!taToksA"}
+ {\!thReadErrorMsg\!tkUndefined ^^J\!thReadErrorMsg\!tkBadKey}
+ \!tkReplaceKeyA}
+
+\def\!tkReplaceKeyA{%
+ \!thGetReplacement{\!thReadErrorMsg\!tkReplace}\!tkReplacement
+ \!thx\ReadFormatKeys\!tkReplacement}
+
+% ERROR MESSAGES FOR KEY RELACEMENT
+\!thStoreErrorMsg\!tkUndefined{%
+ The format key in " "'s on the next to top line is undefined.}
+\!thStoreErrorMsg\!tkBadKey{%
+ Type \space E \space to quit now, or
+ \space<CR> \space and respond to next prompt.}
+\!thStoreErrorMsg\!tkReplace{%
+ Type \space<replacement key><CR> \space,
+ or simply \space<CR> \space to skip offending key:}
+
+
+% ****************************************************************
+% PRIMITIVE KEYS
+% ****************************************************************
+
+% Key "b": b{TOKENS} adds TOKENS to the left of (before) the template
+\NewFormatKey b#1{%
+ \!thx\!tkJoin\!thx{\the\!taDataColumnTemplate}{#1}%
+ \ReadFormatKeys}
+
+\def\!tkJoin#1#2{%
+ \!taDataColumnTemplate{#2#1}}%
+
+% Key "a": a{TOKENS} adds TOKENS to the right of (after) the template
+\NewFormatKey a#1{%
+ \!taDataColumnTemplate\!thx{\the\!taDataColumnTemplate #1}%
+ \ReadFormatKeys}
+
+% Key "\{": Enclose template in braces.
+\NewFormatKey \{{%
+ \!taDataColumnTemplate=\!thx{\!thx{\the\!taDataColumnTemplate}}%
+ \ReadFormatKeys}
+
+% Key "*": "*{N}{KEY LETTERS}" is equivalent to specifying
+% <KEY LETTERS> N times.
+% KEY LETTERS may contain further * specifications
+\NewFormatKey *#1#2{%
+ \!taCountA=#1\relax
+ \!taToksA={}%
+ \!thLoop
+ \ifnum \!taCountA > 0
+ \!taToksA\!thx{\the\!taToksA #2}%
+ \advance\!taCountA -1
+ \repeat
+ \!thx\ReadFormatKeys\the\!taToksA}
+
+
+% ****************************************************************
+% POSITIONING KEYS
+% ****************************************************************
+
+% Key "\LeftGlue": Specifies the glue (usually \hfil, or nothing) to be
+% added to extreme left of the template to position a column
+\NewFormatKey \LeftGlue#1{%
+ \!taLeftGlue{#1}%
+ \ReadFormatKeys}
+
+% Key "\RightGlue": Specifies the glue (usually \hfil, or nothing) to be
+% added to the extreme right of the template to position a column
+\NewFormatKey \RightGlue#1{%
+ \!taRightGlue{#1}%
+ \ReadFormatKeys}
+
+% Key "c": Centered column.
+\NewFormatKey c{%
+ \ReadFormatKeys
+ \LeftGlue\hfil
+ \RightGlue\hfil}
+
+% Key "l": Left-adjusted column.
+\NewFormatKey l{%
+ \ReadFormatKeys
+ \LeftGlue{} % In case more than one positioning key is specified.
+ \RightGlue\hfil}
+
+% Key "r": Right-adjusted column.
+\NewFormatKey r{%
+ \ReadFormatKeys
+ \LeftGlue\hfil
+ \RightGlue{}}
+
+% Key "k": Adds kerns to left and right of "#"
+% This key and the two below use Plain TeX's \if@h as if it were \if@left,
+% and \if@v as if it were \if@right. Table making goes on in a group,
+% so even in the unlikely circumstance that a \phantom is currently under
+% construction, there's no problem.
+\NewFormatKey k{%
+ \h@true
+ \v@true
+ \!tgGetValue{\!tgInsertKern}}
+
+% Key "i": Adds a kern to the left of "#"
+\NewFormatKey i{%
+ \h@true
+ \v@false
+ \!tgGetValue{\!tgInsertKern}}
+
+% Key "j": Adds a kern to the right of "#"
+\NewFormatKey j{%
+ \h@false
+ \v@true
+ \!tgGetValue{\!tgInsertKern}}
+
+
+% ****************************************************************
+% NUMERIC ITEM KEYS
+% ****************************************************************
+
+% Key "n": numeric item , non-math mode.
+\NewFormatKey n{%
+ \def\!tnStyle{}%
+ \futurelet\!tnext\!tnTestForBracket}
+
+% Key "N": numeric item, math mode.
+\NewFormatKey N{%
+ \def\!tnStyle{$}%
+ \futurelet\!tnext\!tnTestForBracket}
+
+
+% ****************************************************************
+% ATTRIBUTE KEYS
+% ****************************************************************
+
+% Key "m": Math mode.
+\NewFormatKey m{%
+ \ReadFormatKeys b$ a$}
+
+% Key "M": Displaymath mode.
+\NewFormatKey M{%
+ \ReadFormatKeys \{ b{$\displaystyle} a$}
+
+% Key "\m": Template ${}#\hfil$
+\NewFormatKey \m{%
+ \ReadFormatKeys l b{{}} m}
+
+% Key "\M": Template $\displaystyle{{}#\hfil}$
+\NewFormatKey \M{%
+ \ReadFormatKeys l b{{}} M}
+
+% Key "f": Set font (E.g., f\it sets up italic font (assuming \it
+% has its usual meaning)
+\NewFormatKey f#1{%
+ \ReadFormatKeys b{#1}}
+
+% Key "B": abbreviation for f\bf
+\NewFormatKey B{%
+ \ReadFormatKeys f\bf}
+
+% Key "I": abbreviation for f\it
+\NewFormatKey I{%
+ \ReadFormatKeys f\it}
+
+% Key "S": abbreviation for f\sl
+\NewFormatKey S{%
+ \ReadFormatKeys f\sl}
+
+% Key "R": abbreviation for f\rm
+\NewFormatKey R{%
+ \ReadFormatKeys f\rm}
+
+% Key "T": abbreviation for f\tt
+\NewFormatKey T{%
+ \ReadFormatKeys f\tt}
+
+% Key "p": ParBox
+\NewFormatKey p{%
+ \!tgGetValue{\!tgSetUpParBox}}
+
+
+% ****************************************************************
+% MINIMUM COLUMN WIDTH KEY
+% ****************************************************************
+
+% Key "w": minimum column width
+\NewFormatKey w{%
+ \!tkTestForBeginFormat w{\!tgGetValue{\!tfSetWidth}}}
+
+
+% ****************************************************************
+% TABSKIP KEYS
+% ****************************************************************
+
+% Key "s": Set tabskip for the inter-column space to the right
+% of the current column, and all subsequent spaces, until overriden
+% by a new "s" or "o" key.
+\NewFormatKey s{%
+ \!taOnceOnlyTabskipfalse % in case same column has a prior "o" key
+ \!tkTestForBeginFormat t{\!tgGetValue{\!tfSetTabskip}}}
+
+% Key "o": Apply the \tabskip stated for this column ONLY to the
+% inter-column space just to the right of this column; restore the
+% the previous \tabskip for subsequent columns.
+\NewFormatKey o{%
+ \!taOnceOnlyTabskiptrue
+ \!tkTestForBeginFormat o{\!tgGetValue{\!tfSetTabskip}}}
+
+
+% ****************************************************************
+% RULE KEYS
+% ****************************************************************
+
+% Key "|": Standard rule column designator
+\NewFormatKey |{%
+ \!tkTestForBeginFormat |{\!tgGetValue{\!tfSetVrule}}}
+
+% Key "\|": Non-standard rule column designator
+\NewFormatKey \|{%
+ \!tkTestForBeginFormat \|{\!tfSetAlternateVrule}}
+
+
+% ****************************************************************
+% END-OF-FORMAT KEYS
+% ****************************************************************
+
+% Key ".": PERIOD -- end of \BeginFormat section.
+\NewFormatKey .{%
+ \!tkTestForBeginFormat.{\!tfFinishFormat}}
+
+% Key "\EndFormat": Equivalent to "."
+\NewFormatKey \EndFormat{%
+ \!tkTestForBeginFormat\EndFormat{\!tfFinishFormat}}
+
+% Key "]": End of \ReFormat section
+\NewFormatKey ]{%
+ \!tkTestForReFormat ] \!tfEndReFormat}
+
+
+% ****************************************************************
+% VALIDITY CHECKS
+% ****************************************************************
+
+% TEST FOR BEGIN FORMAT{<Key>}{Intended Action}: This test is run
+% on keys that can only be used by \BeginFormat --- "s", "o",
+% "|", "\|", "w", ".", and "\EndFormat".
+\def\!tkTestForBeginFormat#1#2{%
+ \if!taBeginFormat
+ \def\!ttemp{#2}%
+ \!thx \!ttemp
+ \else
+ \toks0={#1}%
+ \toks2=\!thx{\string\ReFormat}%
+ \!thx \!tkImproperUse
+ \fi}
+
+% TEST FOR RE FORMAT{<Key>}{Intended Action}: This test is run
+% on the key "]", which can only be used by \ReFormat.
+\def\!tkTestForReFormat#1#2{%
+ \if!taBeginFormat
+ \toks0={#1}%
+ \toks2=\!thx{\string\BeginFormat}%
+ \!thx \!tkImproperUse
+ \else
+ \def\!ttemp{#2}%
+ \!thx \!ttemp
+ \fi}
+
+% IMPROPER USE OF KEY
+\def\!tkImproperUse{%
+ \!thError{\!thReadErrorMsg\!tkBadUseA "\the\toks0 "}%
+ {\!thReadErrorMsg\!tkBadUseB \the\toks2 \space command.
+ ^^J\!thReadErrorMsg\!tkBadKey}%
+ \!tkReplaceKeyA}
+
+% ERROR MESSAGES FOR IMPROPER USE OF KEY
+\!thStoreErrorMsg\!tkBadUseA{Improper use of key }
+\!thStoreErrorMsg\!tkBadUseB{%
+ The key mentioned above can't be used in a }
+
+
+
+% *********************************************************************
+% SECTION n: NUMERIC
+% *********************************************************************
+
+% NOTE: THE SPACE BETWEEN A NUMERIC ENTRY AND THE FOLLOWING '|', '"',
+% OR '\|' IS MANDATORY.
+% EMPTY NUMERIC ENTRIES ARE NOT ALLOWED: USE '{}' OR '\omit' INSTEAD.
+
+% TEST FOR BRACKET: Invoked by the keys "n" and "N".
+\def\!tnTestForBracket{%
+ \ifx [\!tnext
+ \!thx\!tnGetArgument
+ \else
+ \!thx\!tnGetCode
+ \fi}
+
+% GET CODE: E.g. "4", or "4.0", "0.4", or "10.2"
+\def\!tnGetCode#1 {% NOTE THE BLANK
+ \!tnConvertCode #1..!}
+
+% CONVERT CODE: E.g. converts above to [0000], [0000.], [.0000],
+% [0000000000.00]
+\def\!tnConvertCode #1.#2.#3!{%
+ \begingroup
+ \aftergroup\edef \aftergroup\!ttemp \aftergroup{%
+ \aftergroup[%
+ \!taCountA #1
+ \!thLoop
+ \ifnum \!taCountA>0
+ \advance\!taCountA -1
+ \aftergroup0
+ \repeat
+ \def\!ttemp{#3}%
+ \ifx\!ttemp \empty
+ \else
+ \aftergroup.
+ \!taCountA #2
+ \!thLoop
+ \ifnum \!taCountA>0
+ \advance\!taCountA -1
+ \aftergroup0
+ \repeat
+ \fi
+ \aftergroup]\aftergroup}%
+ \endgroup\relax
+ \!thx\!tnGetArgument\!ttemp}
+
+% GET ARGUMENT: [<sample left field> <optional .<sample right field>>
+\def\!tnGetArgument[#1]{%
+ \!tnMakeNumericTemplate\!tnStyle#1..!}
+
+% MAKE NUMERIC TEMPLATE
+\def\!tnMakeNumericTemplate#1#2.#3.#4!{% #1=<empty> or $
+ \def\!ttemp{#4}%
+ \ifx\!ttemp\empty
+ \!taDimenC=0pt
+ \else
+ \setbox0=\hbox{\m@th #1.#3#1}%
+ \!taDimenC=\wd0
+ \fi
+ \setbox0 =\hbox{\m@th #1#2#1}%
+ \!thToksEdef\!taDataColumnTemplate={%
+ \noexpand\!tnSetNumericItem
+ {\the\wd0 }%
+ {\the\!taDimenC}%
+ {#1}%
+ \the\!taDataColumnTemplate} % Might have tabskip glue in here
+ \ReadFormatKeys}
+
+% SET NUMERIC ITEM
+\def\!tnSetNumericItem #1#2#3#4 {% NOTE THE BLANK
+ \!tnSetNumericItemA {#1}{#2}{#3}#4..!}
+
+\def\!tnSetNumericItemA #1#2#3#4.#5.#6!{%
+ \def\!ttemp{#6}%
+ \hbox to #1{\hss \m@th #3#4#3}%
+ \hbox to #2{%
+ \ifx\!ttemp\empty
+ \else
+ \m@th #3.#5#3%
+ \fi
+ \hss}}
+
+
+
+% *********************************************************************
+% SECTION S: STRUTS
+% *********************************************************************
+
+% The following are in ALLOCATIONS
+ %\newdimen\StrutUnit (normal value \normalbaselineskip / 11)
+ %\newcount\StrutHeightFactor (normal value 8)
+ %\newcount\StrutDepthFactor (normal value 3)
+
+% MAKE STRUT OF SPECIFIED HEIGHT AND DIMENSION
+% \MakeStrut <height><depth>; height and depth are <dimen>'s
+\def\MakeStrut#1#2{%
+ \vrule width0pt height #1 depth #2}
+
+% STANDARD VERTICAL STRUT
+% Makes a strut of height=StrutHeightFactor*StrutUnit
+% depth =StrutDepthFactor *StrutUnit
+\def\StandardTableStrut{%
+ \MakeStrut{\StrutHeightFactor\StrutUnit}
+ {\StrutDepthFactor\StrutUnit}}
+
+
+% STANDARD VERTICAL STRUT, WITH EXTRA HEIGHT/DEPTH
+% \AugmentedTableStrut<multiple for extra height><multiple for extra depth>
+% makes a strut of height=(StrutHeightFactor+#1)*StrutUnit
+% depth =(StrutDepthFactor+#2)*StrutUnit
+\def\AugmentedTableStrut#1#2{%
+ \dimen@=\StrutHeightFactor\StrutUnit
+ \advance\dimen@ #1\StrutUnit
+ \dimen@ii=\StrutDepthFactor\StrutUnit
+ \advance\dimen@ii #2\StrutUnit
+ \MakeStrut{\dimen@}{\dimen@ii}}
+
+
+% ENLARGE<extra height><extra depth><original>
+% Enlarges "original" by extra height and extra depth.
+% Extra height and extra depth are <dimen>'s.
+% Works for various math styles, and takes into account
+% \spacefactor in horizontal mode
+\def\Enlarge#1#2{% 3rd argument is picked up later
+ % #1=extra height
+ % #2=extra depth
+ \!taDimenA=#1\relax
+ \!taDimenB=#2\relax
+ \let\!TsSpaceFactor=\empty
+ \ifmmode
+ \!thx \mathpalette
+ \!thx \!TsEnlargeMath
+ \else
+ \!thx \!TsEnlargeOther
+ \fi}
+
+\def\!TsEnlargeOther#1{%
+ \ifhmode
+ \setbox\z@=\hbox{#1%
+ \xdef\!TsSpaceFactor{\spacefactor=\the\spacefactor}}%
+ \else
+ \setbox\z@=\hbox{#1}%
+ \fi
+ \!TsFinishEnlarge}
+
+\def\!TsEnlargeMath#1#2{%
+ \setbox\z@=\hbox{$\m@th#1{#2}$}%
+ \!TsFinishEnlarge}
+
+\def\!TsFinishEnlarge{%
+ \dimen@=\ht\z@
+ \advance \dimen@ \!taDimenA
+ \ht\z@=\dimen@
+ \dimen@=\dp\z@
+ \advance \dimen@ \!taDimenB
+ \dp\z@=\dimen@
+ \box\z@ \!TsSpaceFactor{}}
+
+
+% ENLARGE BY MULTIPLES OF StrutUnit
+% \enlarge<multiple for extra height><multiple for extra depth><original>
+% Enlarges by (multiple for extra height)*StrutUnit
+% and (multiple for extra depth) *StrutUnit
+\def\enlarge#1#2{% 3rd argument is picked up later
+ \Enlarge{#1\StrutUnit}{#2\StrutUnit}}
+
+
+% OPENUP#1#2: increases strut height and depth factors by #1 and #2.
+\def\OpenUp#1#2{%
+ \advance \StrutHeightFactor #1\relax
+ \advance \StrutDepthFactor #2\relax}
+
+
+
+% *********************************************************************
+% SECTION T: TABLES
+% *********************************************************************
+
+% Table-making is initiated by \BeginTable. After processing that
+% command, TeX absorbs the instructions in the prologue to the table
+% until it gets to \BeginFormat. \BeginFormat sets up the preamble
+% for the \halign that will be used to create the table. \EndFormat
+% initiates the \halign-ment, which is terminated by \EndTable.
+
+
+% *********************************************************************
+% BEGIN TABLE, (DO HALIGN), END TABLE
+% *********************************************************************
+% BEGIN TABLE
+\def\BeginTable{%
+ \futurelet\!tnext\!ttBeginTable}
+
+\def\!ttBeginTable{%
+ \ifx [\!tnext
+ \def\!tnext{\!ttBeginTableA}%
+ \else
+ \def\!tnext{\!ttBeginTableA[c]}%
+ \fi
+ \!tnext}
+
+\def\!ttBeginTableA[#1]{%
+ \if #1u% % "unboxed" table
+ \ifmmode
+ \def\!ttEndTable{% % user had better be in display math mode
+ \relax}% % and have only one table at the outer level
+ \else % user had better be in vertical mode
+ \bgroup
+ \def\!ttEndTable{%
+ \egroup}%
+ \fi
+ \else
+ \hbox\bgroup $
+ \def\!ttEndTable{%
+ \egroup % for the \vtop, \vbox, or \vcenter, yet to come
+ $% for math mode
+ \egroup}% for the \hbox
+ \if #1t%
+ \vtop
+ \else
+ \if #1b%
+ \vbox
+ \else
+ \vcenter % math mode was essential for this
+ \fi
+ \fi
+ \bgroup % for the \vtop, \vbox, or \vcenter
+ \fi
+ \advance\!taRecursionLevel 1 % RecursionLevel governs initialization
+ \let\!ttRightGlue=\relax % This may be changed by \JustCenter, etc
+ \everycr={}
+ \ifnum \!taRecursionLevel=1
+ \!ttInitializeTable
+ \fi}
+
+% INITIALIZE TABLE
+\bgroup
+ \catcode`\|=13
+ \catcode`\"=13
+ \catcode`\~=13
+ \gdef\!ttInitializeTable{%
+ \let\!ttTie=~ % Meanings of ~ and \- are
+ \let\!ttDH=\- % restored by \BeginTableParBox
+ \catcode`\|=\active
+ \catcode`\"=\active
+ \catcode`\~=\active
+ \def |{\unskip\!ttRightGlue&&}% Use rule-column template
+ \def\|{\unskip\!ttRightGlue&\omit\!ttAlternateVrule}%
+ % Override rule-column template
+ \def"{\unskip\!ttRightGlue&\omit&}% Omit rule-column template
+ \def~{\kern .5em}% ~ now has the width of a digit
+ \def\\{\!ttEndOfRow}%
+ \def\-{\!ttShortHrule}%
+ \def\={\!ttLongHrule}%
+ \def\_{\!ttFullHrule}%
+ \def\Left##1{##1\hfill\null}% \null prevents \unskip from
+ \def\Center##1{\hfill##1\hfill\null}% killing the \hfill
+ \def\Right##1{\hfill##1}%
+ \def\use{\!ttuse}%
+ \def\Use{\!ttUse}%
+ \the\EveryTable}
+\egroup
+
+\let\!ttRightGlue=\relax % This may be changed, in a group, by
+ % \JustCenter, etc
+
+% DO HALIGN: Invoked by END FORMAT (or the key ".")
+\def\!ttDoHalign{%
+ \baselineskip=0pt \lineskiplimit=0pt \lineskip=0pt %
+ \tabskip=0pt
+ \halign \the\!taTableSpread \bgroup
+ \span\the\!taPreamble
+ \ifx \!tfRowOfWidths \empty
+ \else
+ \!tfRowOfWidths \cr %
+ \fi}
+
+% END TABLE
+\def\EndTable{%
+ \egroup % finishes the \halign
+ \!ttEndTable}% closes off the table envirnoment set up by \BeginTable
+
+
+% *********************************************************************
+% END OF ROW PROCESSING
+% *********************************************************************
+
+% END OF ROW: When followed by
+% 0, inserts no strut
+% +, inserts an AugmentedTableStrut (with <x-height> and <x-depth>
+% as arguments
+% anything else, inserts a StandardTableStrut,
+% and finished off the row with a \cr.
+\def\!ttEndOfRow{%
+ \futurelet\!tnext\!ttTestForBlank}
+
+% TEST FOR BLANK
+\def\!ttTestForBlank{%
+% \!thMessage{At Test For Blank: \meaning\!tnext}
+ \ifx \!tnext\!thSpaceToken % the "usual" case
+ \!thx\!ttDoStandard
+ \else
+ \!thx\!ttTestForZero
+ \fi}
+
+% TEST FOR ZERO
+\def\!ttTestForZero{%
+ \ifx 0\!tnext
+ \!thx \!ttDoZero
+ \else
+ \!thx \!ttTestForPlus
+ \fi}
+
+% TEST FOR PLUS
+\def\!ttTestForPlus{%
+ \ifx +\!tnext
+ \!thx \!ttDoPlus
+ \else
+ \!thx \!ttDoStandard
+ \fi}
+
+% DO ZERO: No strut
+\def\!ttDoZero#1{% #1 eats the 0
+ \cr}
+
+% DO PLUS: Insert "Extra" strut; #2=extra height, #3=extra depth, both
+% as integers (units of \StrutUnit)
+\def\!ttDoPlus#1#2#3{% #1 eats the +
+ \AugmentedTableStrut{#2}{#3}%
+ \cr}
+
+% DO STANDARD: Insert standard table strut
+\def\!ttDoStandard{%
+ \StandardTableStrut
+ \cr}
+
+
+% *********************************************************************
+% ALTERNATE VRULES
+% *********************************************************************
+
+% A '\|' can appear in a rule-column in place of a '|', '"', or '&'.
+
+% If '\|' is immediately followed by a blank, a string of digits, or
+% (...) [... had better be a <dimen>], a \vrule is placed in the
+% rule column; the thickness of the \vrule follows TABLE's usual
+% conventions. Be sure to put a blank after a string of digits.
+
+% If '\|' is immediately followed by a '*', a user-specified default
+% "pseudo"-rule is placed in the rule column. This P.R. is specified
+% by the parameterless macro \PseudoVrule. For example,
+% to place a "double rule" into a rule column, you could make the definition
+% \def\PseudoVrule{\hfil\vrule \hskip1pt \vrule\hfil}
+
+% If none of the above cases applies, a non-space token follows '\|':
+% that token is placed in the rule-column. To put a '*' in a
+% rule-column, enter '\|{*}'. '\|\PseudoVrule' has the same effect
+% as '\|*'.
+
+% ALTERNATE VRULE
+\def\!ttAlternateVrule{%
+ \!tgGetValue{\!ttAVTestForCode}} % AV == Alternate Vrule
+
+% TEST FOR CODE (2)
+\def\!ttAVTestForCode{%
+ \ifnum \!tgCode=2 % (...) follows "\|"
+ \!thx\!ttInsertVrule % \InsertVrule ends with "&"
+ \else
+ \!thx\!ttAVTestForEmpty
+ \fi}
+
+% TEST FOR EMPTY (VALUE)
+\def\!ttAVTestForEmpty{%
+ \ifx \!tgValue\empty % non-digit after "\|"
+ \!thx\!ttAVTestForBlank
+ \else
+ \!thx\!ttInsertVrule % integer after "\|"
+ \fi}
+
+% TEST FOR BLANK
+\def\!ttAVTestForBlank{%
+ \ifx \!ttemp\!thSpaceToken % blank after "\|"
+ \!thx\!ttInsertVrule
+ \else
+ \!thx\!ttAVTestForStar
+ \fi}
+
+% TEST FOR STAR
+\def\!ttAVTestForStar{%
+ \ifx *\!ttemp % "*" after "\|"
+ \!thx\!ttInsertDefaultPR % PR == pseudo-rule
+ \else
+ \!thx\!ttGetPseudoVrule % "Anything else" after "\|"
+ \fi}
+
+% INSERT VRULE
+\def\!ttInsertVrule{%
+ \hfil
+ \vrule \!thWidth
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \LineThicknessFactor
+ \else
+ \!tgValue
+ \fi
+ \LineThicknessUnit
+ \else
+ \!tgValue
+ \fi
+ \hfil
+ &}
+
+% INSERT DEFAULT PSEUDO-RULE
+\def\!ttInsertDefaultPR*{%
+ \PseudoVrule % User-specified default pseudo-rule
+ &}
+
+% GET PSEUDO-RULE
+\def\!ttGetPseudoVrule#1{%
+ \toks0={#1}%
+ #1&}
+
+% DEFAULT PSEUDO-RULE
+\def\PseudoVrule{}
+
+
+% *********************************************************************
+% USE: Version of \multispan for rule-&-column tables
+% *********************************************************************
+
+% USE
+% \use <number> spans the next <number> data columns.
+\def\!ttuse#1{%
+ \ifnum #1>\@ne
+ \omit
+ \mscount=#1 % \mscount is in Plain
+ \advance\mscount by \m@ne
+ \advance\mscount by \mscount
+ \!thLoop
+ \ifnum\mscount>\@ne
+ \sp@n % from Plain (\span\omit \advance\mscount\m@ne)
+ \repeat
+ \span
+ \fi}
+
+\def\!ttUse#1[{%
+ \!ttuse{#1}%
+ \ReFormat[}
+
+
+% *********************************************************************
+% HRULES
+% *********************************************************************
+
+% FULL HORIZONTAL RULE: Draws a rule across the table,
+% using \noalign{\hrule}
+\def\!ttFullHrule{%
+ \noalign
+ \bgroup
+ \!tgGetValue{\!ttFullHruleA}}
+
+\def\!ttFullHruleA{%
+ \!ttGetHalfRuleThickness % Sets \dimen0 to half of specified thickness
+ \hrule \!thHeight \dimen0 \!thDepth \dimen0
+ \penalty0 % so can break an ``unboxed'' table after a horizontal rule.
+ \egroup} % ends the \noalign
+
+% SHORT HORIZONTAL RULE: Draws a rule across 1 (or more) columns,
+% using \leaders; this rule doesn't extend across the neighboring
+% tabskip glues to join up with adjacent rule columns. By contrast
+% the LONG HORIZONTAL RULE below does just that.
+\def\!ttShortHrule{%
+ \omit
+ \!tgGetValue{\!ttShortHruleA}}
+
+\def\!ttShortHruleA{%
+ \!ttGetHalfRuleThickness % Sets \dimen0 to half of specified thickness
+ \leaders \hrule \!thHeight \dimen0 \!thDepth \dimen0 \hfill
+ \null % prevents an \unskip from annihilating the \leaders
+ \ignorespaces}
+
+% LONG HORIZONTAL RULE: This rule requires special coding.
+% It must be preceded and followed by '&', instead of the usual
+% '|' or '"'. However, '\_' can follow '\use' in the usual manner.
+% And in fact, to insert long-rules in two or more contiguous columns,
+% '\use' MUST be used with an argument = total number of columns involved.
+\def\!ttLongHrule{%
+ \omit\span\omit\span \!ttShortHrule}
+
+% GET RULE THICKNESS
+\def\!ttGetHalfRuleThickness{%
+ \dimen0 =
+ \ifnum \!tgCode=1
+ \ifx \!tgValue\empty
+ \LineThicknessFactor
+ \else
+ \!tgValue % user-specified integer
+ \fi
+ \LineThicknessUnit
+ \else
+ \!tgValue % user-specified dimension
+ \fi
+ \divide\dimen0 2 }
+
+
+% *********************************************************************
+% STRETCHING AND SHRINKING A TABLE
+% *********************************************************************
+
+% SET TABLE TO WIDTH <dimen>
+\def\SetTableToWidth#1{%
+ \!taTableSpread={to #1}}
+
+% WIDEN TABLE BY <dimen>
+\def\WidenTableBy#1{%
+ \ifdim #1=0pt
+ \!taTableSpread={}%
+ \else
+ \!taTableSpread={spread #1}%
+ \fi}
+
+\def\Expand{%
+ \SetTableToWidth{\hsize}}%
+
+\def\LongLines{%
+ \LeftTabskip =0pt plus 1fill
+ \RightTabskip=\LeftTabskip
+ \Expand}
+
+
+% *********************************************************************
+% REPOSITIONING COMMANDS (\JUSTLEFT, etc.)
+% *********************************************************************
+
+\def\JustLeft{%
+ \omit \let\!ttRightGlue=\hfill}
+\def\JustCenter{%
+ \omit \hfill\null \let\!ttRightGlue=\hfill}
+\def\JustRight{%
+ \omit \hfill\null}
+
+
+% *********************************************************************
+% Restore meaning of \\, and reset category codes
+% *********************************************************************
+\let\\=\!tacr
+\catcode`\!=12
+\catcode`\@=12
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/thrd-trg.tex b/Master/texmf-dist/tex/context/base/thrd-trg.tex
new file mode 100644
index 00000000000..3fce672d5a3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/thrd-trg.tex
@@ -0,0 +1,114 @@
+%D In order to support rotation over arbitrary angles, we need a sine
+%D and cosine calculator. For this purpose we borrow a few macros by
+%D David Carlisle (his trig package). Because local variables are
+%D used, I patched the macros a bit. Also, I used a few different names
+%D for variabels and macros and use existing auxiliary macros.
+
+\unprotect
+
+\chardef \@iv = 4
+\chardef \@xc = 90 % was \nin@ty
+\chardef \@clxx = 180
+\chardef \@lxxi = 71
+\mathchardef \@mmmmlxviii = 4068
+\mathchardef \@xvi@k = 16384
+
+\chardef \tr@coeffz = 72
+\chardef \tr@coefb = 42
+\mathchardef \tr@coefc = 840
+\mathchardef \tr@coefd = 5040
+
+\def\tg@series
+ {\!!dimena\@lxxi\!!dimena
+ \divide\!!dimena\@mmmmlxviii
+ \edef\!!stringa{\withoutpt\the\!!dimena}%
+ \!!dimena\!!stringa\!!dimena
+ \edef\!!stringb{\withoutpt\the\!!dimena}%
+ \divide\!!dimena\tr@coeffz
+ \advance\!!dimena\minusone\onepoint
+ \!!dimena\!!stringb\!!dimena
+ \advance\!!dimena \tr@coefb\onepoint
+ \!!dimena\!!stringb\!!dimena
+ \advance\!!dimena -\tr@coefc\onepoint
+ \!!dimena\!!stringb\!!dimena
+ \advance\!!dimena \tr@coefd\onepoint
+ \!!dimena\!!stringa\!!dimena
+ \divide\!!dimena \tr@coefd}
+
+\def\tg@reduce#1#2%
+ {\!!dimena#1#2\@xc\onepoint
+ \advance\!!dimena#2-\@clxx\onepoint
+ \!!dimena-\!!dimena
+ \tg@@sin}
+
+\def\tg@@sin
+ {\ifdim\tg@reduce>+\else\ifdim\tg@reduce<-\else
+ \tg@series
+ \fi\fi}
+
+%D Calculating a sine is a two step process: first a value is
+%D calculated, and afterwards it can be used. This saves redundant
+%D calculations.
+
+\def\calculatesin#1%
+ {{\expandafter\ifx\csname sin \number#1\endcsname\relax
+ \!!dimena#1\onepoint
+ \tg@@sin
+ \expandafter\xdef\csname sin \number#1\endcsname{\withoutpt\the\!!dimena}%
+ \fi}}
+
+\def\calculatecos#1%
+ {{\expandafter\ifx\csname cos \number#1\endcsname\relax
+ \!!dimena\@xc\onepoint
+ \advance\!!dimena-#1\onepoint
+ \tg@@sin
+ \expandafter\xdef\csname cos \number#1\endcsname{\withoutpt\the\!!dimena}%
+ \fi}}
+
+\def\calculatetan#1%
+ {{\expandafter\ifx\csname tan \number#1\endcsname\relax
+ \calculatesin{#1}%
+ \calculatecos{#1}%
+ \!!dimena\calculatedcos{#1}\onepoint
+ \divide\!!dimena\@iv
+ \!!dimenb\calculatedsin{#1}\onepoint
+ \!!dimenb\@xvi@k\!!dimenb
+ \divide\!!dimenb\!!dimena
+ \expandafter\xdef\csname tan \number#1\endcsname{\withoutpt\the\!!dimenb}%
+ \fi}}
+
+%D The results are accessed with:
+
+\def\calculatedsin#1{\csname sin \number#1\endcsname}
+\def\calculatedcos#1{\csname cos \number#1\endcsname}
+\def\calculatedtan#1{\csname tan \number#1\endcsname}
+
+%D A more save implementation would be:
+
+\def\calculatedsin#1{\executeifdefined{sin \number#1}\!!zerocount}
+\def\calculatedcos#1{\executeifdefined{cos \number#1}\!!plusone}
+\def\calculatedtan#1{\executeifdefined{tan \number#1}\!!zerocount}
+
+%D A few values are predefined, although, on todays systems there
+%D is no real reason for that. I've added the 270 ones and changed
+%D the -90 tan. Also, I prefer text (\type {\!!..} instead of
+%D counters \type {\..}.
+
+\expandafter\let\csname sin 0\endcsname\!!zerocount
+\expandafter\let\csname cos 0\endcsname\!!plusone
+\expandafter\let\csname sin 90\endcsname\!!plusone
+\expandafter\let\csname cos 90\endcsname\!!zerocount
+\expandafter\let\csname sin 180\endcsname\!!zerocount
+\expandafter\let\csname cos 180\endcsname\!!minusone
+\expandafter\let\csname sin 270\endcsname\!!minusone
+\expandafter\let\csname cos 270\endcsname\!!zerocount
+
+\expandafter\let\csname sin -90\endcsname\!!minusone
+\expandafter\let\csname cos -90\endcsname\!!zerocount
+
+\expandafter\def\csname tan 90\endcsname{\writestatus\m!systems{infinite tan +90}}
+\expandafter\def\csname tan -90\endcsname{\writestatus\m!systems{infinite tan -90}}
+
+%D Usage: \type {\calculatesin{10}} and \type {\calculatedsin{10}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/type-akb.tex b/Master/texmf-dist/tex/context/base/type-akb.tex
new file mode 100644
index 00000000000..b49a8f25f8f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-akb.tex
@@ -0,0 +1,212 @@
+%D \module
+%D [ file=type-akb,
+%D version=2001.07.08,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Adobe's Famous Gang of Fonts,
+%D author=Patrick Gundlach,
+%D date=\currentdate,
+%D copyright={Patrick Gundlach / PRAGMA}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Last Change: Tue Mar 18 16:01:03 2003
+
+%D This module is written by Patrick Gundlach (patrick@gundla.ch)
+%D and maps to the standard postscript fonts conforming the
+%D psnfss system as used by \LaTeX.
+%D
+%D \starttyping
+%D \setupencoding[default=texnansi]
+%D \usetypescript[adobekb][\defaultencoding]
+%D \stoptyping
+%D
+%D The following is not needed since the file is already
+%D registered:
+%D
+%D \starttyping
+%D \usetypescriptfile[akb]
+%D \stoptyping
+
+\starttypescriptcollection[adobe kb mappings]
+
+\starttypescript [adobekb] [8r]
+
+\loadmapfile[8r-base.map]
+
+\definefontsynonym [8r-utmr8a] [ptmr8r] [encoding=8r]
+\definefontsynonym [8r-utmri8a] [ptmri8r] [encoding=8r]
+\definefontsynonym [8r-utmb8a] [ptmb8r] [encoding=8r]
+\definefontsynonym [8r-utmbi8a] [ptmbi8r] [encoding=8r]
+
+\definefontsynonym [8r-utmr8a-slanted-167] [ptmro8r] [encoding=8r]
+\definefontsynonym [8r-utmb8a-slanted-167] [ptmbo8r] [encoding=8r]
+
+\definefontsynonym [8r-uhvr8a] [phvr8r] [encoding=8r]
+\definefontsynonym [8r-uhvro8a] [phvro8r] [encoding=8r]
+\definefontsynonym [8r-uhvb8a] [phvb8r] [encoding=8r]
+\definefontsynonym [8r-uhvbo8a] [phvbo8r] [encoding=8r]
+
+\definefontsynonym [8r-ucrr8a] [pcrr8r] [encoding=8r]
+\definefontsynonym [8r-ucrb8a] [pcrb8r] [encoding=8r]
+\definefontsynonym [8r-ucrro8a] [pcrro8r] [encoding=8r]
+\definefontsynonym [8r-ucrbo8a] [pcrbo8r] [encoding=8r]
+
+\definefontsynonym [8r-uplr8a] [pplr8r] [encoding=8r]
+\definefontsynonym [8r-uplri8a] [pplri8r] [encoding=8r]
+\definefontsynonym [8r-uplb8a] [pplb8r] [encoding=8r]
+\definefontsynonym [8r-uplbi8a] [pplbi8r] [encoding=8r]
+\definefontsynonym [8r-uplr8a-slanted-167] [pplro8r] [encoding=8r]
+\definefontsynonym [8r-uplb8a-slanted-167] [pplbo8r] [encoding=8r]
+\definefontsynonym [8r-uplr8a-capitalized-800] [pplr8r] [encoding=8r]
+
+\definefontsynonym [8r-ubkl8a] [pbkl8r] [encoding=8r]
+\definefontsynonym [8r-ubkli8a] [pbkli8r] [encoding=8r]
+\definefontsynonym [8r-ubkd8a] [pbkd8r] [encoding=8r]
+\definefontsynonym [8r-ubkdi8a] [pbkdi8r] [encoding=8r]
+\definefontsynonym [8r-ubkl8a-slanted-167] [pbklo8r] [encoding=8r]
+\definefontsynonym [8r-ubkd8a-slanted-167] [pbkdo8r] [encoding=8r]
+\definefontsynonym [8r-ubkl8a-capitalized-800] [pbkl8r] [encoding=8r]
+
+\definefontsynonym [8r-uzcmi8a] [pzcmi8r] [encoding=8r]
+
+\definefontsynonym [8r-putr8a] [putr8r] [encoding=8r]
+\definefontsynonym [8r-putri8a] [putri8r] [encoding=8r]
+\definefontsynonym [8r-putb8a] [putr8r] [encoding=8r]
+\definefontsynonym [8r-putbi8a] [putbi8r] [encoding=8r]
+\definefontsynonym [8r-putr8a-slanted-167] [putro8r] [encoding=8r]
+\definefontsynonym [8r-putb8a-slanted-167] [putbo8r] [encoding=8r]
+\definefontsynonym [8r-putr8a-capitalized-800] [putr8r] [encoding=8r]
+
+\definefontsynonym [8r-bchr8a] [bchr8r] [encoding=8r]
+\definefontsynonym [8r-bchri8a] [bchri8r] [encoding=8r]
+\definefontsynonym [8r-bchb8a] [bchb8r] [encoding=8r]
+\definefontsynonym [8r-bchbi8a] [bchbi8r] [encoding=8r]
+\definefontsynonym [8r-bchr8a-slanted-167] [bchro8r] [encoding=8r]
+\definefontsynonym [8r-bchb8a-slanted-167] [bchbo8r] [encoding=8r]
+\definefontsynonym [8r-bchr8a-capitalized-800] [bchr8r] [encoding=8r]
+
+\stoptypescript
+
+\starttypescript [adobekb] [ec]
+
+\loadmapfile[ec-base.map]
+
+\definefontsynonym [ec-utmr8a] [ptmr8t] [encoding=ec]
+\definefontsynonym [ec-utmri8a] [ptmri8t] [encoding=ec]
+\definefontsynonym [ec-utmb8a] [ptmb8t] [encoding=ec]
+\definefontsynonym [ec-utmbi8a] [ptmbi8t] [encoding=ec]
+
+\definefontsynonym [ec-utmr8a-slanted-167] [ptmro8t] [encoding=ec]
+\definefontsynonym [ec-utmb8a-slanted-167] [ptmbo8t] [encoding=ec]
+
+\definefontsynonym [ec-uhvr8a] [phvr8t] [encoding=ec]
+\definefontsynonym [ec-uhvro8a] [phvro8t] [encoding=ec]
+\definefontsynonym [ec-uhvb8a] [phvb8t] [encoding=ec]
+\definefontsynonym [ec-uhvbo8a] [phvbo8t] [encoding=ec]
+
+\definefontsynonym [ec-ucrr8a] [pcrr8t] [encoding=ec]
+\definefontsynonym [ec-ucrb8a] [pcrb8t] [encoding=ec]
+\definefontsynonym [ec-ucrro8a] [pcrro8t] [encoding=ec]
+\definefontsynonym [ec-ucrbo8a] [pcrbo8t] [encoding=ec]
+
+\definefontsynonym [ec-uplr8a] [pplr8t] [encoding=ec]
+\definefontsynonym [ec-uplri8a] [pplri8t] [encoding=ec]
+\definefontsynonym [ec-uplb8a] [pplb8t] [encoding=ec]
+\definefontsynonym [ec-uplbi8a] [pplbi8t] [encoding=ec]
+\definefontsynonym [ec-uplr8a-slanted-167] [pplro8t] [encoding=ec]
+\definefontsynonym [ec-uplb8a-slanted-167] [pplbo8t] [encoding=ec]
+\definefontsynonym [ec-uplr8a-capitalized-800] [pplr8t] [encoding=ec]
+
+\definefontsynonym [ec-ubkl8a] [pbkl8t] [encoding=ec]
+\definefontsynonym [ec-ubkli8a] [pbkli8t] [encoding=ec]
+\definefontsynonym [ec-ubkd8a] [pbkd8t] [encoding=ec]
+\definefontsynonym [ec-ubkdi8a] [pbkdi8t] [encoding=ec]
+\definefontsynonym [ec-ubkl8a-slanted-167] [pbklo8t] [encoding=ec]
+\definefontsynonym [ec-ubkd8a-slanted-167] [pbkdo8t] [encoding=ec]
+\definefontsynonym [ec-ubkl8a-capitalized-800] [pbkl8t] [encoding=ec]
+
+\definefontsynonym [ec-uzcmi8a] [pzcmi8t] [encoding=ec]
+
+\definefontsynonym [ec-putr8a] [putr8t] [encoding=ec]
+\definefontsynonym [ec-putri8a] [putri8t] [encoding=ec]
+\definefontsynonym [ec-putb8a] [putr8t] [encoding=ec]
+\definefontsynonym [ec-putbi8a] [putbi8t] [encoding=ec]
+\definefontsynonym [ec-putr8a-slanted-167] [putro8t] [encoding=ec]
+\definefontsynonym [ec-putb8a-slanted-167] [putbo8t] [encoding=ec]
+\definefontsynonym [ec-putr8a-capitalized-800] [putr8t] [encoding=ec]
+
+\definefontsynonym [ec-bchr8a] [bchr8t] [encoding=ec]
+\definefontsynonym [ec-bchri8a] [bchri8t] [encoding=ec]
+\definefontsynonym [ec-bchb8a] [bchb8t] [encoding=ec]
+\definefontsynonym [ec-bchbi8a] [bchbi8t] [encoding=ec]
+\definefontsynonym [ec-bchr8a-slanted-167] [bchro8t] [encoding=ec]
+\definefontsynonym [ec-bchb8a-slanted-167] [bchbo8t] [encoding=ec]
+\definefontsynonym [ec-bchr8a-capitalized-800] [bchr8t] [encoding=ec]
+
+\stoptypescript
+
+% the following fonts are normally not present on tex live
+
+\starttypescript [adobekb] [texnansi]
+
+\loadmapfile[texnansi-base.map]
+
+\definefontsynonym [texnansi-utmr8a] [ptmr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmri8a] [ptmri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmb8a] [ptmb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmbi8a] [ptmbi8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-utmr8a-slanted-167] [ptmro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmb8a-slanted-167] [ptmbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uhvr8a] [phvr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvro8a] [phvro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvb8a] [phvb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvbo8a] [phvbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-ucrr8a] [pcrr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrb8a] [pcrb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrro8a] [pcrro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrbo8a] [pcrbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uplr8a] [pplr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplri8a] [pplri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplb8a] [pplb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplbi8a] [pplbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplr8a-slanted-167] [pplro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplb8a-slanted-167] [pplbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplr8a-capitalized-800] [pplr8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-ubkl8a] [pbkl8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkli8a] [pbkli8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkd8a] [pbkd8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkdi8a] [pbkdi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkl8a-slanted-167] [pbklo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkd8a-slanted-167] [pbkdo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkl8a-capitalized-800] [pbkl8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uzcmi8a] [pzcmi8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-putr8a] [putr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putri8a] [putri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putb8a] [putr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putbi8a] [putbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putr8a-slanted-167] [putro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putb8a-slanted-167] [putbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putr8a-capitalized-800] [putr8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-bchr8a] [bchr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchri8a] [bchri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchb8a] [bchb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchbi8a] [bchbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchr8a-slanted-167] [bchro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchb8a-slanted-167] [bchbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchr8a-capitalized-800] [bchr8y] [encoding=texnansi]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-buy.tex b/Master/texmf-dist/tex/context/base/type-buy.tex
new file mode 100644
index 00000000000..53a178d6e24
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-buy.tex
@@ -0,0 +1,893 @@
+%D \module
+%D [ file=type-buy,
+%D version=2003.07.08, % 2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=A Few Commercial Fonts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% fallback
+
+% todo \typescriptthree
+
+\starttypescriptcollection[commercial fonts]
+
+% temporary code, replaced by setups
+
+\starttypescript [serif] [fallback]
+
+ \definefontsynonym [SerifBold] [Serif]
+ \definefontsynonym [SerifItalic] [Serif]
+ \definefontsynonym [SerifSlanted] [SerifItalic]
+ \definefontsynonym [SerifBoldItalic] [SerifBold]
+ \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
+ \definefontsynonym [SerifCaps] [Serif]
+
+\stoptypescript
+
+\starttypescript [sans] [fallback]
+
+ \definefontsynonym [SansBold] [Sans]
+ \definefontsynonym [SansItalic] [Sans]
+ \definefontsynonym [SansSlanted] [SansItalic]
+ \definefontsynonym [SansBoldItalic] [SansBold]
+ \definefontsynonym [SansBoldSlanted] [SansBoldItalic]
+ \definefontsynonym [SansCaps] [Sans]
+
+\stoptypescript
+
+\starttypescript [mono] [fallback]
+
+ \definefontsynonym [MonoBold] [Mono]
+ \definefontsynonym [MonoItalic] [Mono]
+ \definefontsynonym [MonoSlanted] [MonoItalic]
+ \definefontsynonym [MonoBoldItalic] [MonoBold]
+ \definefontsynonym [MonoBoldSlanted] [MonoBoldItalic]
+ \definefontsynonym [MonoCaps] [Mono]
+
+\stoptypescript
+
+% Lucida Bright : Biggelow and Holmes
+
+\starttypescript [map] [lucida] [ec,8r,texnansi]
+ \loadmapfile [\typescriptthree-bh-lucida.map]
+\stoptypescript
+
+\starttypescript [serif] [lucida] [name]
+ \definefontsynonym [Serif] [LucidaBright]
+ \definefontsynonym [SerifBold] [LucidaBright-Demi]
+ \definefontsynonym [SerifItalic] [LucidaBright-Italic]
+ \definefontsynonym [SerifSlanted] [LucidaBright-Oblique]
+ \definefontsynonym [SerifBoldItalic] [LucidaBright-DemiItalic]
+ \definefontsynonym [SerifBoldSlanted] [LucidaBright-DemiItalic]
+ \definefontsynonym [SerifCaps] [LucidaBrightSmallcaps]
+\stoptypescript
+
+\starttypescript [sans] [lucida] [name]
+ \definefontsynonym [Sans] [LucidaSans]
+ \definefontsynonym [SansBold] [LucidaSans-Demi]
+ \definefontsynonym [SansItalic] [LucidaSans-Italic]
+ \definefontsynonym [SansSlanted] [LucidaSans-Italic]
+ \definefontsynonym [SansBoldItalic] [LucidaSans-DemiItalic]
+ \definefontsynonym [SansBoldSlanted] [LucidaSans-DemiItalic]
+ \definefontsynonym [SansCaps] [LucidaSans]
+\stoptypescript
+
+\starttypescript [mono] [lucida] [name]
+ \definefontsynonym [Mono] [LucidaSans-Typewriter]
+ \definefontsynonym [MonoBold] [LucidaSans-TypewriterBold]
+ \definefontsynonym [MonoItalic] [LucidaSans-TypewriterOblique]
+ \definefontsynonym [MonoSlanted] [LucidaSans-TypewriterOblique]
+ \definefontsynonym [MonoBoldItalic] [LucidaSans-TypewriterBoldOblique]
+ \definefontsynonym [MonoBoldSlanted] [LucidaSans-TypewriterBoldOblique]
+ \definefontsynonym [MonoCaps] [LucidaSans-Typewriter]
+\stoptypescript
+
+\starttypescript [math] [lucida] [name]
+ \definefontsynonym [MathRoman] [LucidaBright]
+ \definefontsynonym [MathExtension] [LucidaNewMath-Extension]
+ \definefontsynonym [MathItalic] [LucidaNewMath-AltItalic]
+ \definefontsynonym [MathSymbol] [LucidaNewMath-Symbol]
+ \definefontsynonym [MathAlpha] [LucidaNewMath-Arrows]
+ \definefontsynonym [MathBeta] [LucidaNewMath-Roman]
+\stoptypescript
+
+\starttypescript [math] [lucida] [name]
+ \definefontsynonym [OldStyle] [MathItalic]
+ \definefontsynonym [Fraktur] [eufm10]
+ \definefontsynonym [Blackboard] [MathAlpha]
+ \definefontsynonym [Gothic] [eufm10]
+ \definefontsynonym [Calligraphic] [MathSymbol] % math caligraphic !
+\stoptypescript
+
+\starttypescript [boldmath] [lucida] [name]
+ \definefontsynonym [MathRoman] [LucidaBright-Demi]
+ \definefontsynonym [MathExtension] [LucidaNewMath-Extension]
+ \definefontsynonym [MathItalic] [LucidaNewMath-AltDemiItalic]
+ \definefontsynonym [MathSymbol] [LucidaNewMath-Symbol-Demi]
+ \definefontsynonym [MathAlpha] [LucidaNewMath-Arrows-Demi]
+ \definefontsynonym [MathBeta] [LucidaNewMath-DemiBold]
+\stoptypescript
+
+\starttypescript [bfmath] [lucida] [name]
+ \definefontsynonym [MathRomanBold] [LucidaNewMath-Demibold]
+ \definefontsynonym [MathExtensionBold] [LucidaNewMath-Extension]
+ \definefontsynonym [MathItalicBold] [LucidaNewMath-AltDemiItalic]
+ \definefontsynonym [MathSymbolBold] [LucidaNewMath-Symbol-Demi]
+ \definefontsynonym [MathAlphaBold] [LucidaNewMath-Arrows-Demi]
+ \definefontsynonym [MathBetaBold] [LucidaNewMath-DemiBold] % ??
+\stoptypescript
+
+\starttypescript [handwriting] [lucida] [name]
+ \definefontsynonym [Handwriting] [LucidaHandwriting-Italic]
+\stoptypescript
+
+\starttypescript [calligraphy] [lucida] [name]
+ \definefontsynonym [Calligraphy] [LucidaCalligraphy-Italic]
+\stoptypescript
+
+\starttypescript [serif] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaBright] [\typescriptthree-lbr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBright-Demi] [\typescriptthree-lbd] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBright-DemiItalic] [\typescriptthree-lbdi] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBright-Italic] [\typescriptthree-lbi] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBrightSmallcaps] [\typescriptthree-lbrsc] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBrightSmallcaps-Demi] [\typescriptthree-lbdsc] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaBright-Oblique] [\typescriptthree-lbsl] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaSans] [\typescriptthree-lsr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-Demi] [\typescriptthree-lsd] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-DemiItalic] [\typescriptthree-lsdi] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-Italic] [\typescriptthree-lsi] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-Bold] [\typescriptthree-lsb] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-BoldItalic] [\typescriptthree-lsbi] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [mono] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaSans-Typewriter] [\typescriptthree-lstr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-TypewriterBold] [\typescriptthree-lstb] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-TypewriterBoldOblique] [\typescriptthree-lstbo] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaSans-TypewriterOblique] [\typescriptthree-lsto] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [math] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaBright] [\typescriptthree-lbr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaNewMath-AltItalic] [lbmo]
+ \definefontsynonym [LucidaNewMath-Arrows] [lbma]
+ \definefontsynonym [LucidaNewMath-Extension] [lbme]
+ \definefontsynonym [LucidaNewMath-Roman] [lbmr]
+ \definefontsynonym [LucidaNewMath-Italic] [lbmi]
+ \definefontsynonym [LucidaNewMath-Symbol] [lbms]
+ \definefontsynonym [LucidaBlackletter] [lbl]
+\stoptypescript
+
+\starttypescript [boldmath,bfmath] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaNewMath-AltDemiItalic] [lbmdo]
+ \definefontsynonym [LucidaNewMath-Arrows-Demi] [lbmad]
+ \definefontsynonym [LucidaNewMath-Extension] [lbme]
+ \definefontsynonym [LucidaNewMath-DemiBold] [lbmd]
+ \definefontsynonym [LucidaNewMath-DemiItalic] [lbmdi]
+ \definefontsynonym [LucidaNewMath-Symbol-Demi] [lbmsd]
+\stoptypescript
+
+\starttypescript [calligraphy] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaCalligraphy-Italic] [\typescriptthree-lbc] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [casual] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaCasual] [\typescriptthree-lbkr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaCasual-Italic] [\typescriptthree-lbki] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [handwriting] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaHandwriting-Italic] [\typescriptthree-lbh] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [fax] [lucida] [texnansi,ec,8r]
+ \definefontsynonym [LucidaFax] [\typescriptthree-lfr] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaFax-Demi] [\typescriptthree-lfd] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaFax-DemiItalic] [\typescriptthree-lfdi] [encoding=\typescriptthree]
+ \definefontsynonym [LucidaFax-Italic] [\typescriptthree-lfi] [encoding=\typescriptthree]
+\stoptypescript
+
+% Informal : Vulis
+
+\starttypescript [map] [informal] [default]
+ \loadmapfile[original-micropress-informal.map]
+\stoptypescript
+
+\starttypescript [casual] [informal] [name]
+ \definefontsynonym [Serif] [Informal-Regular]
+ \definefontsynonym [SerifBold] [Informal-Bold]
+ \definefontsynonym [SerifSlanted] [Informal-Oblique]
+ \definefontsynonym [SerifItalic] [Informal-Oblique]
+ \definefontsynonym [SerifBoldSlanted] [Informal-BoldOblique]
+ \definefontsynonym [SerifBoldItalic] [Informal-BoldOblique]
+ \definefontsynonym [SerifCaps] [Informal-Regular]
+\stoptypescript
+
+\starttypescript [math] [informal] [name]
+ \definefontsynonym [MathRoman] [Informal-Regular]
+ \definefontsynonym [MathExtension] [Informal-MathExtendedSymbols]
+ \definefontsynonym [MathItalic] [Informal-MathItalics]
+ \definefontsynonym [MathSymbol] [Informal-MathSymbols]
+\stoptypescript
+
+\starttypescript [casual] [informal] [default]
+ \definefontsynonym [Informal-Regular] [ifrm10cm]
+ \definefontsynonym [Informal-Bold] [ifrb10cm]
+ \definefontsynonym [Informal-Oblique] [ifro10cm]
+ \definefontsynonym [Informal-BoldOblique] [ifbo10cm]
+\stoptypescript
+
+\starttypescript [math] [informal] [default]
+ \definefontsynonym [Informal-Regular] [ifrm10cm]
+ \definefontsynonym [Informal-MathExtendedSymbols] [ifex10]
+ \definefontsynonym [Informal-MathItalics] [ifmi10]
+ \definefontsynonym [Informal-MathSymbols] [ifsy10]
+\stoptypescript
+
+% ITC Officina
+
+\starttypescript [map] [officina] [ec,8r,texnansi]
+ \loadmapfile [\typescriptthree-itc-officina.map]
+\stoptypescript
+
+\starttypescript [serif] [officina] [name]
+
+ \definefontsynonym [Serif] [OfficinaSerif-Book]
+ \definefontsynonym [SerifItalic] [OfficinaSerif-BookItalic]
+ \definefontsynonym [SerifSlanted] [OfficinaSerif-BookSlanted]
+ \definefontsynonym [SerifBold] [OfficinaSerif-Bold]
+ \definefontsynonym [SerifBoldItalic] [OfficinaSerif-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted][OfficinaSerif-BoldSlanted]
+ \definefontsynonym [SerifCaps] [OfficinaSerif-Caps]
+
+\stoptypescript
+
+\starttypescript [sans] [officina] [name]
+
+ \definefontsynonym [Sans] [OfficinaSans-Book]
+ \definefontsynonym [SansItalic] [OfficinaSans-BookItalic]
+ \definefontsynonym [SansSlanted] [OfficinaSans-BookSlanted]
+ \definefontsynonym [SansBold] [OfficinaSans-Bold]
+ \definefontsynonym [SansBoldItalic] [OfficinaSans-BoldItalic]
+ \definefontsynonym [SansBoldSlanted][OfficinaSans-BoldSlanted]
+ \definefontsynonym [SansCaps] [OfficinaSans-Caps]
+
+\stoptypescript
+
+\starttypescript [serif] [officina] [texnansi,ec,8r]
+
+ \definefontsynonym [OfficinaSerif-Book] [\typescriptthree-ovbk] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSerif-BookItalic] [\typescriptthree-ovwi] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSerif-Bold] [\typescriptthree-ovb] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSerif-BoldItalic] [\typescriptthree-ovbi] [encoding=\typescriptthree]
+
+ \definefontsynonym [OfficinaSerif-BookSlanted][\typescriptthree-ovbk-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSerif-BoldSlanted][\typescriptthree-ovb-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSerif-Caps] [\typescriptthree-ovbk-capitalized-800] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [officina] [texnansi,ec,8r]
+
+ \definefontsynonym [OfficinaSans-Book] [\typescriptthree-owbk] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSans-BookItalic] [\typescriptthree-owwi] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSans-Bold] [\typescriptthree-owb] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSans-BoldItalic] [\typescriptthree-owbi] [encoding=\typescriptthree]
+
+ \definefontsynonym [OfficinaSans-BookSlanted][\typescriptthree-owbk-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSans-BoldSlanted][\typescriptthree-owb-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [OfficinaSans-Caps] [\typescriptthree-owbk-capitalized-800] [encoding=\typescriptthree]
+
+\stoptypescript
+
+% FontFont Meta
+
+\starttypescript [map] [meta] [ec,8r,texnansi]
+ \loadmapfile [\typescriptthree-fontfont-meta.map]
+\stoptypescript
+
+\starttypescript [sans] [meta] [name]
+
+ \definefontsynonym [Sans] [MetaNormal-Roman]
+ \definefontsynonym [SansItalic] [MetaNormal-Italic]
+ \definefontsynonym [SansSlanted] [MetaNormal-Italic]
+ \definefontsynonym [SansBold] [MetaBold-Roman]
+ \definefontsynonym [SansBoldItalic] [MetaBold-Italic]
+ \definefontsynonym [SansBoldSlanted][MetaBold-Italic]
+ \definefontsynonym [SansCaps] [MetaNormal-Caps]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-lf] [name]
+
+ \definefontsynonym [Sans] [MetaBookLF-Roman]
+ \definefontsynonym [SansBold] [MetaBoldLF-Roman]
+ \definefontsynonym [SansItalic] [MetaBookLF-Italic]
+ \definefontsynonym [SansBoldItalic] [MetaBoldLF-Italic]
+ \definefontsynonym [SansCaps] [MetaBookLF-Caps]
+
+\stoptypescript
+
+\starttypescript [sans] [meta,meta-book] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBook-Roman] [\typescriptthree-mtbk] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBook-Italic] [\typescriptthree-mtbki] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBook-Caps] [\typescriptthree-mtbkc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBook-ItalicCaps] [\typescriptthree-mtbkic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-lf,meta-book-lf] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBookLF-Roman] [\typescriptthree-mtbkf] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBookLF-Italic] [\typescriptthree-mtbkfi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBookLF-Caps] [\typescriptthree-mtbkfc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBookLF-ItalicCaps] [\typescriptthree-mtbkfic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta,meta-bold] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBold-Roman] [\typescriptthree-mtbd] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBold-Italic] [\typescriptthree-mtbdi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBold-Caps] [\typescriptthree-mtbdc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBold-ItalicCaps] [\typescriptthree-mtbdic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-lf,meta-bold-lf] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBoldLF-Roman] [\typescriptthree-mtbdf] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBoldLF-Italic] [\typescriptthree-mtbdfi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBoldLF-Caps] [\typescriptthree-mtbdfc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBoldLF-ItalicCaps] [\typescriptthree-mtbdfic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-normal] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaNormal-Roman] [\typescriptthree-mtn] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormal-Italic] [\typescriptthree-mtni] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormal-Caps] [\typescriptthree-mtnc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormal-ItalicCaps] [\typescriptthree-mtnic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-normal-lf] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaNormalLF-Roman] [\typescriptthree-mtnf] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormalLF-Italic] [\typescriptthree-mtnfi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormalLF-Caps] [\typescriptthree-mtnfc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaNormalLF-ItalicCaps] [\typescriptthree-mtnfic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-medium] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaMedium-Roman] [\typescriptthree-mtm] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMedium-Italic] [\typescriptthree-mtmi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMedium-Caps] [\typescriptthree-mtmc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMedium-ItalicCaps] [\typescriptthree-mtmic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-medium-lf] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaMediumLF-Roman] [\typescriptthree-mtmf] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMediumLF-Italic] [\typescriptthree-mtmfi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMediumLF-Caps] [\typescriptthree-mtmfc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaMediumLF-ItalicCaps] [\typescriptthree-mtmfic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-black] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBlack-Roman] [\typescriptthree-mtbl] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlack-Italic] [\typescriptthree-mtbli] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlack-Caps] [\typescriptthree-mtblc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlack-ItalicCaps] [\typescriptthree-mtblic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [meta-black-lf] [texnansi,ec,8r]
+
+ \definefontsynonym [MetaBlackLF-Roman] [\typescriptthree-mtblf] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlackLF-Italic] [\typescriptthree-mtblfi] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlackLF-Caps] [\typescriptthree-mtblfc] [encoding=\typescriptthree]
+ \definefontsynonym [MetaBlackLF-ItalicCaps] [\typescriptthree-mtblfic] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [expert] [meta] % incomplete
+
+ \definefontsynonym [MetaNormal-Expert] [mtnx]
+
+\stoptypescript
+
+%D Linotype Univers
+
+\starttypescript [map] [univers] [texnansi]
+ \loadmapfile[\typescriptthree-linotype-univers.map]
+\stoptypescript
+
+\starttypescript [sans] [univers,univers-light,univers-black] [name]
+
+ \definefontsynonym [Sans] [Univers]
+ \definefontsynonym [SansBold] [Univers-Bold]
+ \definefontsynonym [SansSlanted] [Univers-Oblique]
+ \definefontsynonym [SansBoldSlanted] [Univers-BoldOblique]
+
+\stoptypescript
+
+\starttypescript [sans] [univers-light] [name]
+
+ \definefontsynonym [Sans] [Univers-Light]
+ \definefontsynonym [SansSlanted] [Univers-LightOblique]
+
+\stoptypescript
+
+\starttypescript [sans] [univers-black] [name]
+
+ \definefontsynonym [Sans] [Univers-Black]
+ \definefontsynonym [SansSlanted] [Univers-BlackOblique]
+ \definefontsynonym [SansBold] [Univers-Black]
+ \definefontsynonym [SansBoldSlanted] [Univers-BlackOblique]
+
+\stoptypescript
+
+\starttypescript [sans] [univers,univers-black,univers-light] [texnansi,ec,8r]
+
+ \definefontsynonym [Univers-Light] [\typescriptthree-lt50136] [encoding=\typescriptthree]
+ \definefontsynonym [Univers-LightOblique] [\typescriptthree-lt50137] [encoding=\typescriptthree]
+
+ \definefontsynonym [Univers] [\typescriptthree-lt50138] [encoding=\typescriptthree]
+ \definefontsynonym [Univers-Oblique] [\typescriptthree-lt50139] [encoding=\typescriptthree]
+ \definefontsynonym [Univers-Bold] [\typescriptthree-lt50140] [encoding=\typescriptthree]
+ \definefontsynonym [Univers-BoldOblique] [\typescriptthree-lt50141] [encoding=\typescriptthree]
+
+ \definefontsynonym [Univers-Black] [\typescriptthree-lt50142] [encoding=\typescriptthree]
+ \definefontsynonym [Univers-BlackOblique] [\typescriptthree-lt50143] [encoding=\typescriptthree]
+
+\stoptypescript
+
+% mendoza
+
+\starttypescript [map] [mendoza] [ec,8r,texnansi]
+ \loadmapfile[\typescriptthree-itc-mendoza.map]
+\stoptypescript
+
+\starttypescript [serif] [mendoza] [name]
+
+ \definefontsynonym [Serif] [MendozaRoman-Book]
+ \definefontsynonym [SerifCaps] [MendozaRoman-Book]
+ \definefontsynonym [SerifSlanted] [MendozaRoman-BookItalic]
+ \definefontsynonym [SerifItalic] [MendozaRoman-BookItalic]
+ \definefontsynonym [SerifBold] [MendozaRoman-Bold]
+ \definefontsynonym [SerifBoldSlanted] [MendozaRoman-BoldItalic]
+ \definefontsynonym [SerifBoldItalic] [MendozaRoman-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [serif] [mendoza] [ec,8r,texnansi]
+
+ \definefontsynonym[MendozaRoman-Bold] [\typescriptthree-zab] [encoding=\typescriptthree]
+ \definefontsynonym[MendozaRoman-BoldItalic] [\typescriptthree-zabi][encoding=\typescriptthree]
+ \definefontsynonym[MendozaRoman-Medium] [\typescriptthree-zam] [encoding=\typescriptthree]
+ \definefontsynonym[MendozaRoman-MediumItalic][\typescriptthree-zami][encoding=\typescriptthree]
+ \definefontsynonym[MendozaRoman-Book] [\typescriptthree-zaw] [encoding=\typescriptthree]
+ \definefontsynonym[MendozaRoman-BookItalic] [\typescriptthree-zawi][encoding=\typescriptthree]
+
+\stoptypescript
+
+% frutiger
+
+\starttypescript [map] [frutiger] [ec,8r,texnansi]
+ \loadmapfile[\typescriptthree-adobe-frutiger.map]
+\stoptypescript
+
+\starttypescript [sans] [frutiger] [name]
+
+ \definefontsynonym [Sans] [Frutiger-Roman]
+ \definefontsynonym [SansCaps] [Frutiger-Roman]
+ \definefontsynonym [SansItalic] [Frutiger-Italic]
+ \definefontsynonym [SansSlanted] [Frutiger-Italic]
+ \definefontsynonym [SansBold] [Frutiger-Bold]
+ \definefontsynonym [SansBoldItalic] [Frutiger-BoldItalic]
+ \definefontsynonym [SansBoldSlanted] [Frutiger-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [sans] [frutiger] [ec,8r,texnansi]
+
+ \definefontsynonym[Frutiger-Bold] [\typescriptthree-ftb] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-BoldItalic] [\typescriptthree-ftbi] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-Black] [\typescriptthree-ftbl] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-BlackItalic][\typescriptthree-ftbli][encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-Italic] [\typescriptthree-fti] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-Light] [\typescriptthree-ftl] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-LightItalic][\typescriptthree-ftli] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-Roman] [\typescriptthree-ftr] [encoding=\typescriptthree]
+ \definefontsynonym[Frutiger-UltraBlack] [\typescriptthree-ftubl][encoding=\typescriptthree]
+
+\stoptypescript
+
+% kabel
+
+\starttypescript [map] [kabel] [ec,8r,texnansi]
+ \loadmapfile [\typescriptthree-itc-kabel.map]
+\stoptypescript
+
+% \starttypescript [sans] [kabel] [name]
+
+% \definefontsynonym [Sans] [ItcKabel-Bold]
+% \definefontsynonym [SansItalic] [ItcKabel-Bold]
+% \definefontsynonym [SansSlanted] [ItcKabel-Bold]
+% \definefontsynonym [SansBold] [ItcKabel-Bold]
+% \definefontsynonym [SansBoldItalic] [ItcKabel-Bold]
+% \definefontsynonym [SansBoldSlanted] [ItcKabel-Bold]
+
+% \stoptypescript
+
+\starttypescript [sans] [kabel] [ec,8r,texnansi]
+
+ \definefontsynonym [ItcKabel-Bold] [\typescriptthree-kbb] [encoding=\typescriptthree]
+ \definefontsynonym [ItcKabel-Demi] [\typescriptthree-kbd] [encoding=\typescriptthree]
+ \definefontsynonym [ItcKabel-Medium] [\typescriptthree-kbm] [encoding=\typescriptthree]
+ \definefontsynonym [ItcKabel-Ultra] [\typescriptthree-kbu] [encoding=\typescriptthree]
+ \definefontsynonym [ItcKabel-Book] [\typescriptthree-kbw] [encoding=\typescriptthree]
+
+\stoptypescript
+
+% thesans
+
+\starttypescript [map] [thesans] [ec,8r,texnansi]
+ \loadmapfile[\typescriptthree-lucas-thesans.map]
+\stoptypescript
+
+\starttypescript [sans] [thesans] [name]
+
+ \definefontsynonym [Sans] [TheSans-Plain]
+ \definefontsynonym [SansItalic] [TheSans-Italic]
+ \definefontsynonym [SansSlanted] [TheSans-Italic]
+ \definefontsynonym [SansBold] [TheSansBold-Plain]
+ \definefontsynonym [SansBoldItalic] [TheSansBold-Italic]
+ \definefontsynonym [SansBoldSlanted] [TheSansBold-Italic]
+
+ \definefontsynonym [SansCaps] [TheSans-Caps]
+ \definefontsynonym [SansCapsItalic] [TheSans-CapsItalic]
+ \definefontsynonym [SansCapsSlanted] [TheSans-CapsItalic]
+ \definefontsynonym [SansCapsBold] [TheSansBold-Caps]
+ \definefontsynonym [SansCapsBoldItalic] [TheSansBold-CapsItalic]
+ \definefontsynonym [SansCapsBoldSlanted] [TheSansBold-CapsItalic]
+
+\stoptypescript
+
+\starttypescript [mono] [thesans] [name]
+
+ \definefontsynonym [Mono] [TheSansTypewriter-Plain]
+ \definefontsynonym [MonoCaps] [TheSansTypewriter-Plain]
+ \definefontsynonym [MonoItalic] [TheSansTypewriter-Italic]
+ \definefontsynonym [MonoSlanted] [TheSansTypewriter-Italic]
+ \definefontsynonym [MonoBold] [TheSansTypewriter-Bold]
+ \definefontsynonym [MonoBoldItalic] [TheSansTypewriter-BoldItalic]
+ \definefontsynonym [MonoBoldSlanted] [TheSansTypewriter-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [sans] [thesans] [ec,8r,texnansi]
+
+ \definefontsynonym [TheSans-Plain] [\typescriptthree-tsan5] [encoding=\typescriptthree]
+ \definefontsynonym [TheSans-Italic] [\typescriptthree-tsan5i] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-Plain] [\typescriptthree-tsan7] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-Italic] [\typescriptthree-tsan7i] [encoding=\typescriptthree]
+
+ \definefontsynonym [TheSans-Caps] [\typescriptthree-tsan5c] [encoding=\typescriptthree]
+ \definefontsynonym [TheSans-CapsItalic] [\typescriptthree-tsan5ci] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-Caps] [\typescriptthree-tsan7c] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-CapsItalic] [\typescriptthree-tsan7ci] [encoding=\typescriptthree]
+
+% \definefontsynonym[TheSans-B2ExtraLight] [\typescriptthree-thesnb2] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B2ExtraLightItalic] [\typescriptthree-thesnb2i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B3Light] [\typescriptthree-thesnb3] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B3LightItalic] [\typescriptthree-thesnb3i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B4SemiLight] [\typescriptthree-thesnb4] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B4SemiLightItalic] [\typescriptthree-thesnb4i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B5Plain] [\typescriptthree-thesnb5] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B5PlainItalic] [\typescriptthree-thesnb5i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B6SemiBold] [\typescriptthree-thesnb6] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B6SemiBoldItalic] [\typescriptthree-thesnb6i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B7Bold] [\typescriptthree-thesnb7] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B7BoldItalic] [\typescriptthree-thesnb7i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B8ExtraBold] [\typescriptthree-thesnb8] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B8ExtraBoldItalic] [\typescriptthree-thesnb8i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B8ExtraBoldItalic] [\typescriptthree-thesnb8i] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B9Black] [\typescriptthree-thesnb9] [encoding=\typescriptthree]
+% \definefontsynonym[TheSans-B9BlackItalic] [\typescriptthree-thesnb9i] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [mono] [thesans] [ec,8r,texnansi]
+
+ \definefontsynonym [TheSansTypewriter-Plain] [\typescriptthree-tsaty5] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansTypewriter-Italic] [\typescriptthree-tsaty5i] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansTypewriter-Bold] [\typescriptthree-tsaty7] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansTypewriter-BoldItalic] [\typescriptthree-tsaty7i] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [expert] [thesans]
+
+ \definefontsynonym [TheSans-Expert] [tsan5e] [encoding=\typescriptthree]
+ \definefontsynonym [TheSans-ExpertItalic] [tsan5ei] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-Expert] [tsan7e] [encoding=\typescriptthree]
+ \definefontsynonym [TheSansBold-ExpertItalic] [tsan7ei] [encoding=\typescriptthree]
+
+\stoptypescript
+
+% monotype sabon
+
+\starttypescript [map] [sabon] [ec,8r,texnansi]
+ \loadmapfile[\typescriptthree-monotype-sabon.map]
+\stoptypescript
+
+\starttypescript [serif] [sabon] [name]
+
+ \definefontsynonym [Serif] [SabonMT]
+ \definefontsynonym [SerifItalic] [SabonMT-Italic]
+ \definefontsynonym [SerifSlanted] [SabonMT-Italic]
+ \definefontsynonym [SerifBold] [SabonMT-SemiBold]
+ \definefontsynonym [SerifBoldItalic] [SabonMT-SemiBoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [SabonMT-SemiBoldItalic]
+ \definefontsynonym [SerifCaps] [SabonMT-RegularSC]
+
+\stoptypescript
+
+\starttypescript [serif] [sabon] [ec,8r,texnansi]
+
+ \definefontsynonym[SabonMT] [\typescriptthree-sab] [encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-Italic] [\typescriptthree-sabi] [encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-ItalicOsF] [\typescriptthree-saboi][encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-SemiBoldOsF] [\typescriptthree-sabos][encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-SemiBold] [\typescriptthree-sabs] [encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-RegularSC] [\typescriptthree-sabsc][encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-SemiBoldItalic] [\typescriptthree-sabsi][encoding=\typescriptthree]
+ \definefontsynonym[SabonMT-SemiBoldItalicOsF][\typescriptthree-sasio][encoding=\typescriptthree]
+
+\stoptypescript
+
+% itc stone
+
+\starttypescript [map] [stone] [ec,texnansi]
+ \loadmapfile[\typescriptthree-itc-stone.map]
+\stoptypescript
+
+% less readable but less parsing
+%
+% \starttypescript [sans,serif] [stone] [name]
+%
+% \definefontsynonym [\typescriptprefix\typescriptone ] [Stone\typescriptprefix\typescriptone ITC-Medium]
+% \definefontsynonym [\typescriptprefix\typescriptone Italic] [Stone\typescriptprefix\typescriptone ITC-MediumItalic]
+% \definefontsynonym [\typescriptprefix\typescriptone Slanted] [Stone\typescriptprefix\typescriptone ITC-MediumItalic]
+% \definefontsynonym [\typescriptprefix\typescriptone Bold] [Stone\typescriptprefix\typescriptone ITC-Bold]
+% \definefontsynonym [\typescriptprefix\typescriptone BoldItalic] [Stone\typescriptprefix\typescriptone ITC-BoldItalic]
+% \definefontsynonym [\typescriptprefix\typescriptone BoldSlanted] [Stone\typescriptprefix\typescriptone ITC-BoldItalic]
+% \definefontsynonym [\typescriptprefix\typescriptone Caps] [Stone\typescriptprefix\typescriptone SCITC-Medium]
+%
+% \stoptypescript
+
+\starttypescript [sans] [stone] [name]
+
+ \definefontsynonym [Sans] [StoneSansITC-Medium]
+ \definefontsynonym [SansItalic] [StoneSansITC-MediumItalic]
+ \definefontsynonym [SansSlanted] [StoneSansITC-MediumItalic]
+ \definefontsynonym [SansBold] [StoneSansITC-Bold]
+ \definefontsynonym [SansBoldItalic] [StoneSansITC-BoldItalic]
+ \definefontsynonym [SansBoldSlanted] [StoneSansITC-BoldItalic]
+ \definefontsynonym [SansCaps] [StoneSansSCITC-Medium]
+
+\stoptypescript
+
+\starttypescript [serif] [stone] [name]
+
+ \definefontsynonym [Serif] [StoneSerifITC-Medium]
+ \definefontsynonym [SerifItalic] [StoneSerifITC-MediumItalic]
+ \definefontsynonym [SerifSlanted] [StoneSerifITC-MediumItalic]
+ \definefontsynonym [SerifBold] [StoneSerifITC-Bold]
+ \definefontsynonym [SerifBoldItalic] [StoneSerifITC-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [StoneSerifITC-BoldItalic]
+ \definefontsynonym [SerifCaps] [StoneSerifSCITC-Medium]
+
+\stoptypescript
+
+\starttypescript [sans] [stone-oldstyle] [name]
+
+ \definefontsynonym [Sans] [StoneSansOSITC-Medium]
+ \definefontsynonym [SansItalic] [StoneSansOSITC-MediumItalic]
+ \definefontsynonym [SansSlanted] [StoneSansOSITC-MediumItalic]
+ \definefontsynonym [SansBold] [StoneSansOSITC-Bold]
+ \definefontsynonym [SansBoldItalic] [StoneSansOSITC-BoldItalic]
+ \definefontsynonym [SansBoldSlanted] [StoneSansOSITC-BoldItalic]
+ \definefontsynonym [SansCaps] [StoneSansSCITC-Medium]
+
+\stoptypescript
+
+\starttypescript [serif] [stone-oldstyle] [name]
+
+ \definefontsynonym [Serif] [StoneSerifOSITC-Medium]
+ \definefontsynonym [SerifItalic] [StoneSerifOSITC-MediumItalic]
+ \definefontsynonym [SerifSlanted] [StoneSerifOSITC-MediumItalic]
+ \definefontsynonym [SerifBold] [StoneSerifOSITC-Bold]
+ \definefontsynonym [SerifBoldItalic] [StoneSerifOSITC-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [StoneSerifOSITC-BoldItalic]
+ \definefontsynonym [SerifCaps] [StoneSerifSCITC-Medium]
+
+\stoptypescript
+
+\starttypescript [sans] [stone] [ec,texnansi]
+
+ \definefontsynonym[StoneSansITC-Bold] [\typescriptthree-stosnb] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansITC-BoldItalic] [\typescriptthree-stosnbi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansITC-Medium] [\typescriptthree-stosnm] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansITC-MediumItalic] [\typescriptthree-stosnmi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansOSITC-Bold] [\typescriptthree-stosnob] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansOSITC-BoldItalic] [\typescriptthree-stosnobi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSansOSITC-Medium] [\typescriptthree-stosnom] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansOSITC-MediumItalic][\typescriptthree-stosnomi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSCITC-Medium] [\typescriptthree-stosnscm][encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSemITC-Semi] [\typescriptthree-stosns] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSemITC-SemiIta] [\typescriptthree-stosnsi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSemOSITC-Semi] [\typescriptthree-stosnos] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSemOSITC-SemiIta] [\typescriptthree-stosnosi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSansSemSCITC-Semi] [\typescriptthree-stosnscs][encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [serif] [stone] [ec,texnansi]
+
+ \definefontsynonym[StoneSerifITC-Bold] [\typescriptthree-stosfb] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifITC-BoldItalic] [\typescriptthree-stosfbi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifITC-Medium] [\typescriptthree-stosfm] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifITC-MediumItalic] [\typescriptthree-stosfmi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifOSITC-Bold] [\typescriptthree-stosfob] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifOSITC-BoldItalic] [\typescriptthree-stosfobi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifOSITC-Medium] [\typescriptthree-stosfom] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifOSITC-MediumItalic][\typescriptthree-stosfomi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSCITC-Medium] [\typescriptthree-stosfscm][encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSemITC-Semi] [\typescriptthree-stosfs] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSemITC-SemiIta] [\typescriptthree-stosfsi] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSemOSITC-Semi] [\typescriptthree-stosfos] [encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSemOSITC-SemiIta] [\typescriptthree-stosfosi][encoding=\typescriptthree]
+ \definefontsynonym[StoneSerifSemSCITC-Semi] [\typescriptthree-stosfscs][encoding=\typescriptthree]
+
+\stoptypescript
+
+% linotype industria
+
+\starttypescript [map] [industria] [ec,texnansi]
+ \loadmapfile[\typescriptthree-linotype-industria.map]
+\stoptypescript
+
+\starttypescript [sans] [industria] [ec,texnansi]
+
+ \loadmapfile[\typescriptthree-linotype-industria.map]
+
+ \definefontsynonym[Industria-Solid][\typescriptthree-lt50545][encoding=\typescriptthree]
+
+\stoptypescript
+
+% itc bauhaus
+%
+% texfont --enc=texnansi --ven=itc --col=bauhaus type-buy.dat
+
+\starttypescript [map] [bauhaus] [ec,texnansi]
+ \loadmapfile[\typescriptthree-itc-bauhaus.map]
+\stoptypescript
+
+\starttypescript [sans] [bauhaus] [ec,texnansi]
+
+ \loadmapfile[\typescriptthree-itc-bauhaus.map]
+
+ \definefontsynonym[Bauhaus-Light] [\typescriptthree-bhl] [encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Medium] [\typescriptthree-bhm] [encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Demi] [\typescriptthree-bhd] [encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Bold] [\typescriptthree-bhb] [encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Heavy] [\typescriptthree-bhh] [encoding=\typescriptthree]
+
+ \definefontsynonym[Bauhaus-Bold-Slanted] [\typescriptthree-bhb-slanted-167][encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Demi-Slanted] [\typescriptthree-bhd-slanted-167][encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Heavy-Slanted] [\typescriptthree-bhh-slanted-167][encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Light-Slanted] [\typescriptthree-bhl-slanted-167][encoding=\typescriptthree]
+ \definefontsynonym[Bauhaus-Medium-Slanted][\typescriptthree-bhm-slanted-167][encoding=\typescriptthree]
+
+\stoptypescript
+
+
+% ef swift
+%
+% texfont --enc=texnansi --ven=ef --col=swift type-buy.dat
+
+\starttypescript [map] [swift] [ec,texnansi]
+ \loadmapfile[\typescriptthree-itc-bauhaus.map]
+\stoptypescript
+
+\starttypescript [serif] [swift] [ec,texnansi]
+
+ \loadmapfile[\typescriptthree-ef-swift.map]
+
+ \definefontsynonym[SwiftEF-Light] [\typescriptthree-swlt] [encoding=\typescriptthree]
+ \definefontsynonym[SwiftEF-Regular] [\typescriptthree-swrg] [encoding=\typescriptthree]
+ \definefontsynonym[SwiftEF-Bold] [\typescriptthree-swbd] [encoding=\typescriptthree]
+ \definefontsynonym[SwiftEF-ExtraBold] [\typescriptthree-swxb] [encoding=\typescriptthree]
+
+ \definefontsynonym[SwiftEF-LightItalic] [\typescriptthree-swlti][encoding=\typescriptthree]
+ \definefontsynonym[SwiftEF-RegularItalic][\typescriptthree-swrgi][encoding=\typescriptthree]
+
+ \definefontsynonym[SwiftEF-BoldCondensed][\typescriptthree-swbdc][encoding=\typescriptthree]
+ \definefontsynonym[SwiftSCEF-Regular] [\typescriptthree-swrgs][encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [serif] [swift] [name]
+
+ \definefontsynonym [Serif] [SwiftEF-Regular]
+ \definefontsynonym [SerifItalic] [SwiftEF-RegularItalic]
+ \definefontsynonym [SerifSlanted] [SwiftEF-RegularItalic]
+ \definefontsynonym [SerifBold] [SwiftEF-Bold]
+ \definefontsynonym [SerifBoldItalic] [SwiftEF-Bold]
+ \definefontsynonym [SerifBoldSlanted] [SwiftEF-Bold]
+ \definefontsynonym [SerifCaps] [SwiftSCEF-Regular]
+
+\stoptypescript
+
+\starttypescript [serif] [swift-light] [name]
+
+ \definefontsynonym [Serif] [SwiftEF-Light]
+ \definefontsynonym [SerifItalic] [SwiftEF-LightItalic]
+ \definefontsynonym [SerifSlanted] [SwiftEF-LightItalic]
+ \definefontsynonym [SerifBold] [SwiftEF-Regular]
+ \definefontsynonym [SerifBoldItalic] [SwiftEF-RegularItalic]
+ \definefontsynonym [SerifBoldSlanted] [SwiftEF-RegularItalic]
+ \definefontsynonym [SerifCaps] [SwiftSCEF-Regular]
+
+\stoptypescript
+
+% linotype syntax
+
+\starttypescript [sans] [syntax] [ec,texnansi]
+
+ \loadmapfile[\typescriptthree-linotype-syntax.map]
+
+ \definefontsynonym [SyntaxLT-Roman] [\typescriptthree-lte50617] [encoding=\typescriptthree]
+ \definefontsynonym [SyntaxLT-Italic] [\typescriptthree-lte50618] [encoding=\typescriptthree]
+ \definefontsynonym [SyntaxLT-Bold] [\typescriptthree-lte50619] [encoding=\typescriptthree]
+ \definefontsynonym [SyntaxLT-Black] [\typescriptthree-lte50620] [encoding=\typescriptthree]
+ \definefontsynonym [SyntaxLT-UltraBlack] [\typescriptthree-lte50621] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [syntax] [name]
+
+ \loadmapfile[\typescriptthree-linotype-syntax.map]
+
+ \definefontsynonym [Sans] [SyntaxLT-Roman]
+ \definefontsynonym [SansItalic] [SyntaxLT-Italic]
+ \definefontsynonym [SansSlanted] [SyntaxLT-Italic]
+ \definefontsynonym [SansBold] [SyntaxLT-Black]
+ \definefontsynonym [SansBoldItalic] [SyntaxLT-Black]
+
+\stoptypescript
+
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-cbg.tex b/Master/texmf-dist/tex/context/base/type-cbg.tex
new file mode 100644
index 00000000000..1c041376b25
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-cbg.tex
@@ -0,0 +1,353 @@
+%D \module
+%D [ file=type-cbg,
+%D version=2004.08.23,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=CB Greek,
+%D author={Giuseppe Bilotta, Hans Hagen},
+%D date=\currentdate,
+%D copyright=PRAGMA-ADE]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% legend:
+%
+% g=greek
+% r=regular s=sansserif t=typewriter
+% m=medium x=boldextended t=monospaced
+% n=normal o=oblique i=italic u=uprightitalic c=smallcaps
+
+% ruby script to make small zip file:
+%
+% zipfile = 'cbsmall.zip'
+%
+% fontfiles = Array.new
+%
+% fontfiles.push(Dir.glob("fonts/{tfm,vf,afm,type1}/public/cb/{gr,gs,gt}{m,s,t}{n,o,i,u,c}{0800,1000,1200}.{tfm,afm,pfb}"))
+% fontfiles.push(Dir.glob("fonts/{map,enc,lig}/{dvips,pdftex,dvipdfm,dvipdfmx}/cb/{cbgreek,cbsmall}.{map,enc,lig}"))
+%
+% File.delete(zipfile) if FileTest.file?(zipfile)
+% system("zip -r -9 cbsmall #{fontfiles.join(' ')}")
+
+\starttypescriptcollection[cbgreek]
+
+\starttypescript [serif] [cbgreek] [name]
+
+ \definefontsynonym [CBGreek-Regular-Medium-Normal] [grmn1000]
+ \definefontsynonym [CBGreek-Regular-Medium-Oblique] [grmo1000]
+ \definefontsynonym [CBGreek-Regular-Medium-Italic] [grmi1000]
+ \definefontsynonym [CBGreek-Regular-Medium-UprightItalic] [grmu1000]
+ \definefontsynonym [CBGreek-Regular-Medium-Caps] [grmc1000]
+ \definefontsynonym [CBGreek-Regular-Medium-Leipzig] [grml1000]
+ \definefontsynonym [CBGreek-Regular-Medium-Roman] [grmr1000]
+
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Normal] [grxn1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Oblique] [grxo1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Italic] [grxi1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-UprightItalic] [grxu1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Caps] [grxc1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Leipzig] [grxl1000]
+ \definefontsynonym [CBGreek-Regular-BoldExtended-Roman] [grxr1000]
+
+\stoptypescript
+
+\starttypescript [sans] [cbgreek] [name]
+
+ \definefontsynonym [CBGreek-Sans-Medium-Normal] [gsmn1000]
+ \definefontsynonym [CBGreek-Sans-Medium-Oblique] [gsmo1000]
+ \definefontsynonym [CBGreek-Sans-Medium-Italic] [gsmi1000]
+ \definefontsynonym [CBGreek-Sans-Medium-UprightItalic] [gsmu1000]
+ \definefontsynonym [CBGreek-Sans-Medium-Caps] [gsmc1000]
+ \definefontsynonym [CBGreek-Sans-Medium-Leipzig] [gsml1000]
+ \definefontsynonym [CBGreek-Sans-Medium-Roman] [gsmr1000]
+
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Normal] [gsxn1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Oblique] [gsxo1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Italic] [gsxi1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-UprightItalic] [gsxu1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Caps] [gsxc1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Leipzig] [gsxl1000]
+ \definefontsynonym [CBGreek-Sans-BoldExtended-Roman] [gsxr1000]
+
+\stoptypescript
+
+\starttypescript [mono] [cbgreek] [name]
+
+ \definefontsynonym [CBGreek-Typewriter-Medium-Normal] [gttn1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-Oblique] [gtto1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-Italic] [gtti1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-UprightItalic] [gttu1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-Caps] [gttc1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-Leipzig] [gttl1000]
+ \definefontsynonym [CBGreek-Typewriter-Medium-Roman] [gttr1000]
+
+\stoptypescript
+
+\starttypescript [serif] [cbgreek] [name]
+
+ \definefontsynonym [Serif] [CBGreek-Regular-Medium-Normal]
+ \definefontsynonym [SerifSlanted] [CBGreek-Regular-Medium-Oblique]
+ \definefontsynonym [SerifItalic] [CBGreek-Regular-Medium-Italic]
+ \definefontsynonym [SerifCaps] [CBGreek-Regular-Medium-Caps]
+ \definefontsynonym [SerifBold] [CBGreek-Regular-BoldExtended-Normal]
+ \definefontsynonym [SerifBoldSlanted] [CBGreek-Regular-BoldExtended-Oblique]
+ \definefontsynonym [SerifBoldItalic] [CBGreek-Regular-BoldExtended-Italic]
+ \definefontsynonym [SerifBoldCaps] [CBGreek-Regular-BoldExtended-Caps]
+
+\stoptypescript
+
+\starttypescript [sans] [cbgreek] [name]
+
+ \definefontsynonym [Sans] [CBGreek-Sans-Medium-Normal]
+ \definefontsynonym [SansSlanted] [CBGreek-Sans-Medium-Oblique]
+ \definefontsynonym [SansItalic] [CBGreek-Sans-Medium-Italic]
+ \definefontsynonym [SansCaps] [CBGreek-Sans-Medium-Caps]
+ \definefontsynonym [SansBold] [CBGreek-Sans-BoldExtended-Normal]
+ \definefontsynonym [SansBoldSlanted] [CBGreek-Sans-BoldExtended-Oblique]
+ \definefontsynonym [SansBoldItalic] [CBGreek-Sans-BoldExtended-Italic]
+ \definefontsynonym [SansBoldCaps] [CBGreek-Sans-BoldExtended-Caps]
+
+\stoptypescript
+
+\starttypescript [mono] [cbgreek] [name]
+
+ \definefontsynonym [Mono] [CBGreek-Typewriter-Medium-Normal]
+ \definefontsynonym [MonoSlanted] [CBGreek-Typewriter-Medium-Oblique]
+ \definefontsynonym [MonoItalic] [CBGreek-Typewriter-Medium-Italic]
+ \definefontsynonym [MonoCaps] [CBGreek-Typewriter-Medium-Caps]
+
+\stoptypescript
+
+% Please note that we use Bold Extended instead of Bold
+
+\starttypescript [serif] [cbgreek-all] [size]
+
+ \definebodyfont [4pt,5pt] [rm]
+ [tf=grmn0500 sa 1,sl=grmo0500 sa 1,it=grmi0500 sa 1,
+ bf=grxn0500 sa 1,bs=grxo0500 sa 1,bi=grxi0500 sa 1,
+ sc=grmc0500 sa 1]
+
+ \definebodyfont [6pt] [rm]
+ [tf=grmn0600,sl=grmo0600,it=grmi0600,
+ bf=grxn0600,bs=grxo0600,bi=grxi0600,
+ sc=grmc0600]
+
+ \definebodyfont [7pt] [rm]
+ [tf=grmn0700,sl=grmo0700,it=grmi0700,
+ bf=grxn0700,bs=grxo0700,bi=grxi0700,
+ sc=grmc0700]
+
+ \definebodyfont [8pt] [rm]
+ [tf=grmn0800,sl=grmo0800,it=grmi0800,
+ bf=grxn0800,bs=grxo0800,bi=grxi0800,
+ sc=grmc0800]
+
+ \definebodyfont [9pt] [rm]
+ [tf=grmn0900,sl=grmo0900,it=grmi0900,
+ bf=grxn0900,bs=grxo0900,bi=grxi0900,
+ sc=grmc0900]
+
+ \definebodyfont [10pt] [rm]
+ [tf=grmn1000,sl=grmo1000,it=grmi1000,
+ bf=grxn1000,bs=grxo1000,bi=grxi1000,
+ sc=grmc1000]
+
+ \definebodyfont [11pt] [rm]
+ [tf=grmn1095,sl=grmo1095,it=grmi1095,
+ bf=grxn1095,bs=grxo1095,bi=grxi1095,
+ sc=grmc1095]
+
+ \definebodyfont [12pt] [rm]
+ [tf=grmn1200,sl=grmo1200,it=grmi1200,
+ bf=grxn1200,bs=grxo1200,bi=grxi1200,
+ sc=grmc1200]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [rm]
+ [tf=grmn1440 sa 1,sl=grmo1440 sa 1,it=grmi1440 sa 1,
+ bf=grxn1440 sa 1,bs=grxo1440 sa 1,bi=grxi1440 sa 1,
+ sc=grmc1440 sa 1]
+
+\stoptypescript
+
+\starttypescript [sans] [cbgreek-all] [size]
+
+ \definebodyfont [4pt,5pt] [ss]
+ [tf=gsmn0500 sa 1,sl=gsmo0500 sa 1,it=gsmi0500 sa 1,
+ bf=gsxn0500 sa 1,bs=gsxo0500 sa 1,bi=gsxi0500 sa 1,
+ sc=gsmc0500 sa 1]
+
+ \definebodyfont [6pt] [ss]
+ [tf=gsmn0600,sl=gsmo0600,it=gsmi0600,
+ bf=gsxn0600,bs=gsxo0600,bi=gsxi0600,
+ sc=gsmc0600]
+
+ \definebodyfont [7pt] [ss]
+ [tf=gsmn0700,sl=gsmo0700,it=gsmi0700,
+ bf=gsxn0700,bs=gsxo0700,bi=gsxi0700,
+ sc=gsmc0700]
+
+ \definebodyfont [8pt] [ss]
+ [tf=gsmn0800,sl=gsmo0800,it=gsmi0800,
+ bf=gsxn0800,bs=gsxo0800,bi=gsxi0800,
+ sc=gsmc0800]
+
+ \definebodyfont [9pt] [ss]
+ [tf=gsmn0900,sl=gsmo0900,it=gsmi0900,
+ bf=gsxn0900,bs=gsxo0900,bi=gsxi0900,
+ sc=gsmc0900]
+
+ \definebodyfont [10pt] [ss]
+ [tf=gsmn1000,sl=gsmo1000,it=gsmi1000,
+ bf=gsxn1000,bs=gsxo1000,bi=gsxi1000,
+ sc=gsmc1000]
+
+ \definebodyfont [11pt] [ss]
+ [tf=gsmn1095,sl=gsmo1095,it=gsmi1095,
+ bf=gsxn1095,bs=gsxo1095,bi=gsxi1095,
+ sc=gsmc1095]
+
+ \definebodyfont [12pt] [ss]
+ [tf=gsmn1200,sl=gsmo1200,it=gsmi1200,
+ bf=gsxn1200,bs=gsxo1200,bi=gsxi1200,
+ sc=gsmc1200]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [ss]
+ [tf=gsmn1440 sa 1,sl=gsmo1440 sa 1,it=gsmi1440 sa 1,
+ bf=gsxn1440 sa 1,bs=gsxo1440 sa 1,bi=gsxi1440 sa 1,
+ sc=gsmc1440 sa 1]
+
+\stoptypescript
+
+\starttypescript [mono] [cbgreek-all] [size]
+
+ \definebodyfont [4pt,5pt] [tt]
+ [tf=gttn0500 sa 1,sl=gtto0500 sa 1,it=gtti0500 sa 1,
+ sc=gttc0500 sa 1]
+
+ \definebodyfont [6pt] [tt]
+ [tf=gttn0600,sl=gtto0600,it=gtti0600,
+ sc=gttc0600]
+
+ \definebodyfont [7pt] [tt]
+ [tf=gttn0700,sl=gtto0700,it=gtti0700,
+ sc=gttc0700]
+
+ \definebodyfont [8pt] [tt]
+ [tf=gttn0800,sl=gtto0800,it=gtti0800,
+ sc=gttc0800]
+
+ \definebodyfont [9pt] [tt]
+ [tf=gttn0900,sl=gtto0900,it=gtti0900,
+ sc=gttc0900]
+
+ \definebodyfont [10pt] [tt]
+ [tf=gttn1000,sl=gtto1000,it=gtti1000,
+ sc=gttc1000]
+
+ \definebodyfont [11pt] [tt]
+ [tf=gttn1095,sl=gtto1095,it=gtti1095,
+ sc=gttc1095]
+
+ \definebodyfont [12pt] [tt]
+ [tf=gttn1200,sl=gtto1200,it=gtti1200,
+ sc=gttc1200]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [tt]
+ [tf=gttn1440 sa 1,sl=gtto1440 sa 1,it=gtti1440 sa 1,
+ sc=gttc1440 sa 1]
+
+\stoptypescript
+
+\starttypescript [serif] [cbgreek-medium] [size]
+
+ \definebodyfont [4pt,5pt,6pt,7pt,8pt,9pt] [rm]
+ [tf=grmn0800 sa 1,sl=grmo0800 sa 1,it=grmi0800 sa 1,
+ bf=grxn0800 sa 1,bs=grxo0800 sa 1,bi=grxi0800 sa 1,
+ sc=grmc0800 sa 1]
+
+ \definebodyfont [10pt,11pt] [rm]
+ [tf=grmn1000 sa 1,sl=grmo1000 sa 1,it=grmi1000 sa 1,
+ bf=grxn1000 sa 1,bs=grxo1000 sa 1,bi=grxi1000 sa 1,
+ sc=grmc1000 sa 1]
+
+ \definebodyfont [12pt,14.4pt,17.3pt,20.7pt] [rm]
+ [tf=grmn1200 sa 1,sl=grmo1200 sa 1,it=grmi1200 sa 1,
+ bf=grxn1200 sa 1,bs=grxo1200 sa 1,bi=grxi1200 sa 1,
+ sc=grmc1200 sa 1]
+
+\stoptypescript
+
+\starttypescript [sans] [cbgreek-medium] [size]
+
+ \definebodyfont [4pt,5pt,6pt,7pt,8pt,9pt] [ss]
+ [tf=gsmn0800 sa 1,sl=gsmo0800 sa 1,it=gsmi0800 sa 1,
+ bf=gsxn0800 sa 1,bs=gsxo0800 sa 1,bi=gsxi0800 sa 1,
+ sc=gsmc0800 sa 1]
+
+ \definebodyfont [10pt,11pt] [ss]
+ [tf=gsmn1000 sa 1,sl=gsmo1000 sa 1,it=gsmi1000 sa 1,
+ bf=gsxn1000 sa 1,bs=gsxo1000 sa 1,bi=gsxi1000 sa 1,
+ sc=gsmc1000 sa 1]
+
+ \definebodyfont [12pt,14.4pt,17.3pt,20.7pt] [ss]
+ [tf=gsmn1200 sa 1,sl=gsmo1200 sa 1,it=gsmi1200 sa 1,
+ bf=gsxn1200 sa 1,bs=gsxo1200 sa 1,bi=gsxi1200 sa 1,
+ sc=gsmc1200 sa 1]
+
+\stoptypescript
+
+\starttypescript [mono] [cbgreek-medium] [size]
+
+ \definebodyfont [4pt,5pt,6pt,7pt,8pt,9pt] [tt]
+ [tf=gttn0800 sa 1,sl=gtto0800 sa 1,it=gtti0800 sa 1,
+ sc=gttc0800 sa 1]
+
+ \definebodyfont [10pt,11pt] [tt]
+ [tf=gttn1000 sa 1,sl=gtto1000 sa 1,it=gtti1000 sa 1,
+ sc=gttc1000 sa 1]
+
+ \definebodyfont [12pt,14.4pt,17.3pt,20.7pt] [tt]
+ [tf=gttn1200 sa 1,sl=gtto1200 sa 1,it=gtti1200 sa 1,
+ sc=gttc1200 sa 1]
+
+\stoptypescript
+
+\starttypescript [map] [cbgreek]
+ \loadmapfile [cbgreek.map]
+% \loadmapfile [cbsmall.map]
+\stoptypescript
+
+\starttypescript [cbgreek-all]
+
+ \definebodyfontenvironment [cbgreek] [default] []
+
+ \definetypeface [cbgreek] [rm] [serif] [cbgreek] [cbgreek-all]
+ \definetypeface [cbgreek] [ss] [sans] [cbgreek] [cbgreek-all]
+ \definetypeface [cbgreek] [tt] [mono] [cbgreek] [cbgreek-all]
+
+\stoptypescript
+
+\starttypescript [cbgreek-medium] % lowercase, patched HH
+
+ \definebodyfontenvironment [cbgreek] [default] []
+
+ \definetypeface [cbgreek] [rm] [serif] [cbgreek] [cbgreek-medium]
+ \definetypeface [cbgreek] [ss] [sans] [cbgreek] [cbgreek-medium]
+ \definetypeface [cbgreek] [tt] [mono] [cbgreek] [cbgreek-medium]
+
+\stoptypescript
+
+\starttypescript [cbgreek] % lowercase, patched HH
+
+ \definebodyfontenvironment [cbgreek] [default] []
+
+ \definetypeface [cbgreek] [rm] [serif] [cbgreek] [default]
+ \definetypeface [cbgreek] [ss] [sans] [cbgreek] [default]
+ \definetypeface [cbgreek] [tt] [mono] [cbgreek] [default]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-def.tex b/Master/texmf-dist/tex/context/base/type-def.tex
new file mode 100644
index 00000000000..e78087b944e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-def.tex
@@ -0,0 +1,64 @@
+%D \module
+%D [ file=type-def,
+%D version=2005.02.04,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Default Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\definetypescriptprefix [serif] [Serif]
+\definetypescriptprefix [sans] [Sans]
+\definetypescriptprefix [mono] [Mono]
+
+\definefontsynonym [DefaultFont] [cmvtt10]
+
+\startsetups [font:fallback:serif]
+ \definefontsynonym [Serif] [DefaultFont]
+ \definefontsynonym [SerifBold] [Serif]
+ \definefontsynonym [SerifItalic] [Serif]
+ \definefontsynonym [SerifSlanted] [SerifItalic]
+ \definefontsynonym [SerifBoldItalic] [Serif]
+ \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
+ \definefontsynonym [SerifCaps] [Serif]
+\stopsetups
+
+\startsetups [font:fallback:sans]
+ \definefontsynonym [Sans] [DefaultFont]
+ \definefontsynonym [SansBold] [Sans]
+ \definefontsynonym [SansItalic] [Sans]
+ \definefontsynonym [SansSlanted] [SansItalic]
+ \definefontsynonym [SansBoldItalic] [Sans]
+ \definefontsynonym [SansBoldSlanted] [SansBoldItalic]
+ \definefontsynonym [SansCaps] [Sans]
+\stopsetups
+
+\startsetups [font:fallback:mono]
+ \definefontsynonym [Mono] [DefaultFont]
+ \definefontsynonym [MonoBold] [Mono]
+ \definefontsynonym [MonoItalic] [Mono]
+ \definefontsynonym [MonoSlanted] [MonoItalic]
+ \definefontsynonym [MonoBoldItalic] [Mono]
+ \definefontsynonym [MonoBoldSlanted] [MonoBoldItalic]
+ \definefontsynonym [MonoCaps] [Mono]
+\stopsetups
+
+\startsetups [font:allbold:serif]
+ \definefontsynonym [Serif] [SerifBold]
+ \definefontsynonym [SerifItalic] [SerifBoldItalic]
+ \definefontsynonym [SerifSlanted] [SerifBoldSlanted]
+ %definefontsynonym [SerifCaps] [SerifBold]
+\stopsetups
+
+\startsetups [font:allbold:sans]
+ \definefontsynonym [Sans] [SansBold]
+ \definefontsynonym [SansItalic] [SansBoldItalic]
+ \definefontsynonym [SansSlanted] [SansBoldSlanted]
+ %definefontsynonym [SansCaps] [SansBold]
+\stopsetups
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-dis.tex b/Master/texmf-dist/tex/context/base/type-dis.tex
new file mode 100644
index 00000000000..c4cbd6f96c1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-dis.tex
@@ -0,0 +1,284 @@
+%D \module
+%D [ file=type-dis,
+%D version=2005.01.26, % moved from type-enc.tex 2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Distribution scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Unfortunately not all latin modern metrics ship the way we like:
+%D
+%D Some day I will replace cmr10 etc by their full names.
+
+\starttypescriptcollection[distributed fonts]
+
+\starttypescript[all][modern,latin-modern][all]
+
+ % fallbacks, no math in latin modern
+
+ \definefontsynonym[lmbsy10] [cmbsy10]
+ \definefontsynonym[lmbsy5] [cmbsy5]
+ \definefontsynonym[lmbsy6] [cmbsy7]
+ \definefontsynonym[lmbsy7] [cmbsy7]
+ \definefontsynonym[lmbsy8] [cmbsy7]
+ \definefontsynonym[lmbsy9] [cmbsy10]
+ \definefontsynonym[lmdunh10][cmdunh10]
+ \definefontsynonym[lmex10] [cmex10]
+ \definefontsynonym[lmex7] [cmex10]
+ \definefontsynonym[lmex8] [cmex10]
+ \definefontsynonym[lmex9] [cmex10]
+ \definefontsynonym[lmff10] [cmff10]
+ \definefontsynonym[lmfi10] [cmfi10]
+ \definefontsynonym[lmfib8] [cmfib8]
+ \definefontsynonym[lmmi10] [cmmi10]
+ \definefontsynonym[lmmi12] [cmmi12]
+ \definefontsynonym[lmmi5] [cmmi5]
+ \definefontsynonym[lmmi6] [cmmi6]
+ \definefontsynonym[lmmi7] [cmmi7]
+ \definefontsynonym[lmmi8] [cmmi8]
+ \definefontsynonym[lmmi9] [cmmi9]
+ \definefontsynonym[lmmib10] [cmmib10]
+ \definefontsynonym[lmmib5] [cmmib5]
+ \definefontsynonym[lmmib6] [cmmib7]
+ \definefontsynonym[lmmib7] [cmmib7]
+ \definefontsynonym[lmmib8] [cmmib7]
+ \definefontsynonym[lmmib9] [cmmib10]
+ \definefontsynonym[lmsy10] [cmsy10]
+ \definefontsynonym[lmsy5] [cmsy5]
+ \definefontsynonym[lmsy6] [cmsy6]
+ \definefontsynonym[lmsy7] [cmsy7]
+ \definefontsynonym[lmsy8] [cmsy8]
+ \definefontsynonym[lmsy9] [cmsy9]
+ \definefontsynonym[lmtex10] [cmtex10]
+ \definefontsynonym[lmtex8] [cmtex8]
+ \definefontsynonym[lmtex9] [cmtex9]
+
+\stoptypescript
+
+%D For those who want to use the existing tfm and vf files we
+%D provide:
+
+\starttypescript [berry] [8r]
+
+% \setupencoding[default=8r]
+
+\definefontsynonym [8r-utmr8a] [utmr8r] [encoding=8r]
+\definefontsynonym [8r-utmri8a] [utmri8r] [encoding=8r]
+\definefontsynonym [8r-utmb8a] [utmb8r] [encoding=8r]
+\definefontsynonym [8r-utmbi8a] [utmbi8r] [encoding=8r]
+
+\definefontsynonym [8r-utmr8a-slanted-167] [utmro8r] [encoding=8r]
+\definefontsynonym [8r-utmb8a-slanted-167] [utmbo8r] [encoding=8r]
+
+\definefontsynonym [8r-uhvr8a] [uhvr8r] [encoding=8r]
+\definefontsynonym [8r-uhvro8a] [uhvro8r] [encoding=8r]
+\definefontsynonym [8r-uhvb8a] [uhvb8r] [encoding=8r]
+\definefontsynonym [8r-uhvbo8a] [uhvbo8r] [encoding=8r]
+
+\definefontsynonym [8r-ucrr8a] [ucrr8r] [encoding=8r]
+\definefontsynonym [8r-ucrb8a] [ucrb8r] [encoding=8r]
+\definefontsynonym [8r-ucrro8a] [ucrro8r] [encoding=8r]
+\definefontsynonym [8r-ucrbo8a] [ucrbo8r] [encoding=8r]
+
+\definefontsynonym [8r-uplr8a] [uplr8r] [encoding=8r]
+\definefontsynonym [8r-uplri8a] [uplri8r] [encoding=8r]
+\definefontsynonym [8r-uplb8a] [uplb8r] [encoding=8r]
+\definefontsynonym [8r-uplbi8a] [uplbi8r] [encoding=8r]
+\definefontsynonym [8r-uplr8a-slanted-167] [uplro8r] [encoding=8r]
+\definefontsynonym [8r-uplb8a-slanted-167] [uplbo8r] [encoding=8r]
+\definefontsynonym [8r-uplr8a-capitalized-800] [uplr8r] [encoding=8r]
+
+\definefontsynonym [8r-ubkl8a] [ubkl8r] [encoding=8r]
+\definefontsynonym [8r-ubkli8a] [ubkli8r] [encoding=8r]
+\definefontsynonym [8r-ubkd8a] [ubkd8r] [encoding=8r]
+\definefontsynonym [8r-ubkdi8a] [ubkdi8r] [encoding=8r]
+\definefontsynonym [8r-ubkl8a-slanted-167] [ubklo8r] [encoding=8r]
+\definefontsynonym [8r-ubkd8a-slanted-167] [ubkdo8r] [encoding=8r]
+\definefontsynonym [8r-ubkl8a-capitalized-800] [ubkl8r] [encoding=8r]
+
+\definefontsynonym [8r-uzcmi8a] [uzcmi8r] [encoding=8r]
+
+\definefontsynonym [8r-putr8a] [putr8r] [encoding=8r]
+\definefontsynonym [8r-putri8a] [putri8r] [encoding=8r]
+\definefontsynonym [8r-putb8a] [putr8r] [encoding=8r]
+\definefontsynonym [8r-putbi8a] [putbi8r] [encoding=8r]
+\definefontsynonym [8r-putr8a-slanted-167] [putro8r] [encoding=8r]
+\definefontsynonym [8r-putb8a-slanted-167] [putbo8r] [encoding=8r]
+\definefontsynonym [8r-putr8a-capitalized-800] [putr8r] [encoding=8r]
+
+\definefontsynonym [8r-bchr8a] [bchr8r] [encoding=8r]
+\definefontsynonym [8r-bchri8a] [bchri8r] [encoding=8r]
+\definefontsynonym [8r-bchb8a] [bchb8r] [encoding=8r]
+\definefontsynonym [8r-bchbi8a] [bchbi8r] [encoding=8r]
+\definefontsynonym [8r-bchr8a-slanted-167] [bchro8r] [encoding=8r]
+\definefontsynonym [8r-bchb8a-slanted-167] [bchbo8r] [encoding=8r]
+\definefontsynonym [8r-bchr8a-capitalized-800] [bchr8r] [encoding=8r]
+
+\stoptypescript
+
+\starttypescript [berry] [ec]
+
+% \setupencoding[default=ec]
+
+\definefontsynonym [ec-utmr8a] [utmr8t] [encoding=ec]
+\definefontsynonym [ec-utmri8a] [utmri8t] [encoding=ec]
+\definefontsynonym [ec-utmb8a] [utmb8t] [encoding=ec]
+\definefontsynonym [ec-utmbi8a] [utmbi8t] [encoding=ec]
+
+\definefontsynonym [ec-utmr8a-slanted-167] [utmro8t] [encoding=ec]
+\definefontsynonym [ec-utmb8a-slanted-167] [utmbo8t] [encoding=ec]
+
+\definefontsynonym [ec-uhvr8a] [uhvr8t] [encoding=ec]
+\definefontsynonym [ec-uhvro8a] [uhvro8t] [encoding=ec]
+\definefontsynonym [ec-uhvb8a] [uhvb8t] [encoding=ec]
+\definefontsynonym [ec-uhvbo8a] [uhvbo8t] [encoding=ec]
+
+\definefontsynonym [ec-ucrr8a] [ucrr8t] [encoding=ec]
+\definefontsynonym [ec-ucrb8a] [ucrb8t] [encoding=ec]
+\definefontsynonym [ec-ucrro8a] [ucrro8t] [encoding=ec]
+\definefontsynonym [ec-ucrbo8a] [ucrbo8t] [encoding=ec]
+
+\definefontsynonym [ec-uplr8a] [uplr8t] [encoding=ec]
+\definefontsynonym [ec-uplri8a] [uplri8t] [encoding=ec]
+\definefontsynonym [ec-uplb8a] [uplb8t] [encoding=ec]
+\definefontsynonym [ec-uplbi8a] [uplbi8t] [encoding=ec]
+\definefontsynonym [ec-uplr8a-slanted-167] [uplro8t] [encoding=ec]
+\definefontsynonym [ec-uplb8a-slanted-167] [uplbo8t] [encoding=ec]
+\definefontsynonym [ec-uplr8a-capitalized-800] [uplr8t] [encoding=ec]
+
+\definefontsynonym [ec-ubkl8a] [ubkl8t] [encoding=ec]
+\definefontsynonym [ec-ubkli8a] [ubkli8t] [encoding=ec]
+\definefontsynonym [ec-ubkd8a] [ubkd8t] [encoding=ec]
+\definefontsynonym [ec-ubkdi8a] [ubkdi8t] [encoding=ec]
+\definefontsynonym [ec-ubkl8a-slanted-167] [ubklo8t] [encoding=ec]
+\definefontsynonym [ec-ubkd8a-slanted-167] [ubkdo8t] [encoding=ec]
+\definefontsynonym [ec-ubkl8a-capitalized-800] [ubkl8t] [encoding=ec]
+
+\definefontsynonym [ec-uzcmi8a] [uzcmi8t] [encoding=ec]
+
+\definefontsynonym [ec-putr8a] [putr8t] [encoding=ec]
+\definefontsynonym [ec-putri8a] [putri8t] [encoding=ec]
+\definefontsynonym [ec-putb8a] [putr8t] [encoding=ec]
+\definefontsynonym [ec-putbi8a] [putbi8t] [encoding=ec]
+\definefontsynonym [ec-putr8a-slanted-167] [putro8t] [encoding=ec]
+\definefontsynonym [ec-putb8a-slanted-167] [putbo8t] [encoding=ec]
+\definefontsynonym [ec-putr8a-capitalized-800] [putr8t] [encoding=ec]
+
+\definefontsynonym [ec-bchr8a] [bchr8t] [encoding=ec]
+\definefontsynonym [ec-bchri8a] [bchri8t] [encoding=ec]
+\definefontsynonym [ec-bchb8a] [bchb8t] [encoding=ec]
+\definefontsynonym [ec-bchbi8a] [bchbi8t] [encoding=ec]
+\definefontsynonym [ec-bchr8a-slanted-167] [bchro8t] [encoding=ec]
+\definefontsynonym [ec-bchb8a-slanted-167] [bchbo8t] [encoding=ec]
+\definefontsynonym [ec-bchr8a-capitalized-800] [bchr8t] [encoding=ec]
+
+\stoptypescript
+
+% the following fonts are normally not present on tex live
+
+\starttypescript [berry] [texnansi]
+
+% \setupencoding[default=texnansi]
+
+\definefontsynonym [texnansi-utmr8a] [utmr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmri8a] [utmri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmb8a] [utmb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmbi8a] [utmbi8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-utmr8a-slanted-167] [ptmro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-utmb8a-slanted-167] [ptmbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uhvr8a] [uhvr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvro8a] [uhvro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvb8a] [uhvb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uhvbo8a] [uhvbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-ucrr8a] [pcrr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrb8a] [pcrb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrro8a] [pcrro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ucrbo8a] [pcrbo8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uplr8a] [uplr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplri8a] [uplri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplb8a] [uplb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplbi8a] [uplbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplr8a-slanted-167] [uplro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplb8a-slanted-167] [uplbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-uplr8a-capitalized-800] [uplr8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-ubkl8a] [ubkl8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkli8a] [ubkli8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkd8a] [ubkd8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkdi8a] [ubkdi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkl8a-slanted-167] [ubklo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkd8a-slanted-167] [ubkdo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-ubkl8a-capitalized-800] [ubkl8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-uzcmi8a] [uzcmi8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-putr8a] [putr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putri8a] [putri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putb8a] [putr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putbi8a] [putbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putr8a-slanted-167] [putro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putb8a-slanted-167] [putbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-putr8a-capitalized-800] [putr8y] [encoding=texnansi]
+
+\definefontsynonym [texnansi-bchr8a] [bchr8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchri8a] [bchri8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchb8a] [bchb8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchbi8a] [bchbi8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchr8a-slanted-167] [bchro8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchb8a-slanted-167] [bchbo8y] [encoding=texnansi]
+\definefontsynonym [texnansi-bchr8a-capitalized-800] [bchr8y] [encoding=texnansi]
+
+\stoptypescript
+
+\starttypescript [berry] [t5]
+
+% \setupencoding[default=t5]
+
+\definefontsynonym [t5-utmr8a] [utmr8v] [encoding=t5]
+\definefontsynonym [t5-utmri8a] [utmri8v] [encoding=t5]
+\definefontsynonym [t5-utmb8a] [utmb8v] [encoding=t5]
+\definefontsynonym [t5-utmbi8a] [utmbi8v] [encoding=t5]
+
+\definefontsynonym [t5-utmr8a-slanted-167] [utmro8v] [encoding=t5]
+\definefontsynonym [t5-utmb8a-slanted-167] [utmbo8v] [encoding=t5]
+
+\definefontsynonym [t5-uhvr8a] [uhvr8v] [encoding=t5]
+\definefontsynonym [t5-uhvro8a] [uhvro8v] [encoding=t5]
+\definefontsynonym [t5-uhvb8a] [uhvb8v] [encoding=t5]
+\definefontsynonym [t5-uhvbo8a] [uhvbo8v] [encoding=t5]
+
+\definefontsynonym [t5-ucrr8a] [ucrr8v] [encoding=t5]
+\definefontsynonym [t5-ucrb8a] [ucrb8v] [encoding=t5]
+\definefontsynonym [t5-ucrro8a] [ucrro8v] [encoding=t5]
+\definefontsynonym [t5-ucrbo8a] [ucrbo8v] [encoding=t5]
+
+\definefontsynonym [t5-uplr8a] [uplr8v] [encoding=t5]
+\definefontsynonym [t5-uplri8a] [uplri8v] [encoding=t5]
+\definefontsynonym [t5-uplb8a] [uplb8v] [encoding=t5]
+\definefontsynonym [t5-uplbi8a] [uplbi8v] [encoding=t5]
+\definefontsynonym [t5-uplr8a-slanted-167] [uplro8v] [encoding=t5]
+\definefontsynonym [t5-uplb8a-slanted-167] [uplbo8v] [encoding=t5]
+\definefontsynonym [t5-uplr8a-capitalized-800] [uplr8v] [encoding=t5]
+
+\definefontsynonym [t5-ubkl8a] [ubkl8v] [encoding=t5]
+\definefontsynonym [t5-ubkli8a] [ubkli8v] [encoding=t5]
+\definefontsynonym [t5-ubkd8a] [ubkd8v] [encoding=t5]
+\definefontsynonym [t5-ubkdi8a] [ubkdi8v] [encoding=t5]
+\definefontsynonym [t5-ubkl8a-slanted-167] [ubklo8v] [encoding=t5]
+\definefontsynonym [t5-ubkd8a-slanted-167] [ubkdo8v] [encoding=t5]
+\definefontsynonym [t5-ubkl8a-capitalized-800] [ubkl8v] [encoding=t5]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-enc.tex b/Master/texmf-dist/tex/context/base/type-enc.tex
new file mode 100644
index 00000000000..af6c6974629
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-enc.tex
@@ -0,0 +1,1070 @@
+%D \module
+%D [ file=type-enc,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Encoding scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% texfont --ven=public --col=antt --enc=ec --sou=auto
+% texfont --ven=public --col=antp --enc=ec --sou=auto
+% texfont --ven=urw --col=palatino --enc=ec --sou=auto
+% texfont --ven-lucas --col=sun --enc=ec --sou=.
+
+% \usetypescript [all] [modern] [texnansi]
+% \setupbodyfont[reset] \setupbodyfont[cmr]
+% \starttext \showfont[Serif] \stoptext
+
+% done: in type-dis.tex we remap the missing encoding-lm* files onto old metrics
+% todo: we should consider handling qx in the same maner, remap qx-* in type-dis.tex
+% todo: cyr fonts should be handled in the same way: t2b-lmr10 -> lbrm1000
+
+\starttypescriptcollection[encodings]
+
+\starttypescript[all][modern,latin-modern][all]
+
+ % fallbacks, no math in latin modern
+
+ \definefontsynonym[lmbsy10] [cmbsy10]
+ \definefontsynonym[lmbsy5] [cmbsy5]
+ \definefontsynonym[lmbsy6] [cmbsy7]
+ \definefontsynonym[lmbsy7] [cmbsy7]
+ \definefontsynonym[lmbsy8] [cmbsy7]
+ \definefontsynonym[lmbsy9] [cmbsy10]
+ \definefontsynonym[lmdunh10][cmdunh10]
+ \definefontsynonym[lmex10] [cmex10]
+ \definefontsynonym[lmex7] [cmex10]
+ \definefontsynonym[lmex8] [cmex10]
+ \definefontsynonym[lmex9] [cmex10]
+ \definefontsynonym[lmff10] [cmff10]
+ \definefontsynonym[lmfi10] [cmfi10]
+ \definefontsynonym[lmfib8] [cmfib8]
+ \definefontsynonym[lmmi10] [cmmi10]
+ \definefontsynonym[lmmi12] [cmmi12]
+ \definefontsynonym[lmmi5] [cmmi5]
+ \definefontsynonym[lmmi6] [cmmi6]
+ \definefontsynonym[lmmi7] [cmmi7]
+ \definefontsynonym[lmmi8] [cmmi8]
+ \definefontsynonym[lmmi9] [cmmi9]
+ \definefontsynonym[lmmib10] [cmmib10]
+ \definefontsynonym[lmmib5] [cmmib5]
+ \definefontsynonym[lmmib6] [cmmib7]
+ \definefontsynonym[lmmib7] [cmmib7]
+ \definefontsynonym[lmmib8] [cmmib7]
+ \definefontsynonym[lmmib9] [cmmib10]
+ \definefontsynonym[lmsy10] [cmsy10]
+ \definefontsynonym[lmsy5] [cmsy5]
+ \definefontsynonym[lmsy6] [cmsy6]
+ \definefontsynonym[lmsy7] [cmsy7]
+ \definefontsynonym[lmsy8] [cmsy8]
+ \definefontsynonym[lmsy9] [cmsy9]
+ \definefontsynonym[lmtex10] [cmtex10]
+ \definefontsynonym[lmtex8] [cmtex8]
+ \definefontsynonym[lmtex9] [cmtex9]
+
+\stoptypescript
+
+\starttypescript [serif] [modern,latin-modern] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [LMRoman10-DemiOblique] [\typescriptthree-lmbo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-Bold] [\typescriptthree-lmbx10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman12-Bold] [\typescriptthree-lmbx12] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman5-Bold] [\typescriptthree-lmbx5] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman6-Bold] [\typescriptthree-lmbx6] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman7-Bold] [\typescriptthree-lmbx7] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman8-Bold] [\typescriptthree-lmbx8] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman9-Bold] [\typescriptthree-lmbx9] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-BoldItalic] [\typescriptthree-lmbxi10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-BoldOblique] [\typescriptthree-lmbxo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-CapsRegular] [\typescriptthree-lmcsc10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-CapsOblique] [\typescriptthree-lmcsco10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-Regular] [\typescriptthree-lmr10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman12-Regular] [\typescriptthree-lmr12] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman17-Regular] [\typescriptthree-lmr17] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman5-Regular] [\typescriptthree-lmr5] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman6-Regular] [\typescriptthree-lmr6] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman7-Regular] [\typescriptthree-lmr7] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman8-Regular] [\typescriptthree-lmr8] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman9-Regular] [\typescriptthree-lmr9] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-Italic] [\typescriptthree-lmri10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman12-Italic] [\typescriptthree-lmri12] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman7-Italic] [\typescriptthree-lmri7] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman8-Italic] [\typescriptthree-lmri8] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman9-Italic] [\typescriptthree-lmri9] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman10-Oblique] [\typescriptthree-lmro10] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman12-Oblique] [\typescriptthree-lmro12] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman17-Oblique] [\typescriptthree-lmro17] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman8-Oblique] [\typescriptthree-lmro8] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman9-Oblique] [\typescriptthree-lmro9] [encoding=\typescriptthree]
+
+ \definefontsynonym [LMRoman-DemiOblique] [LMRoman10-DemiOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-Bold] [LMRoman10-Bold] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-BoldItalic] [LMRoman10-BoldItalic] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-BoldOblique] [LMRoman10-BoldOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-CapsRegular] [LMRoman10-CapsRegular] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-CapsOblique] [LMRoman10-CapsOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-Regular] [LMRoman10-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-Italic] [LMRoman10-Italic] [encoding=\typescriptthree]
+ \definefontsynonym [LMRoman-Oblique] [LMRoman10-Oblique] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [modern,latin-modern] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [LMSans10-Regular] [\typescriptthree-lmss10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans12-Regular] [\typescriptthree-lmss12] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans17-Regular] [\typescriptthree-lmss17] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans8-Regular] [\typescriptthree-lmss8] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans9-Regular] [\typescriptthree-lmss9] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans10-BoldOblique] [\typescriptthree-lmssbo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans10-Bold] [\typescriptthree-lmssbx10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans10-DemiCondensed] [\typescriptthree-lmssdc10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans10-DemiCondensedOblique] [\typescriptthree-lmssdo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans10-Oblique] [\typescriptthree-lmsso10] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans12-Oblique] [\typescriptthree-lmsso12] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans17-Oblique] [\typescriptthree-lmsso17] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans8-Oblique] [\typescriptthree-lmsso8] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans9-Oblique] [\typescriptthree-lmsso9] [encoding=\typescriptthree]
+ \definefontsynonym [LMSansQuotation8-Regular] [\typescriptthree-lmssq8] [encoding=\typescriptthree]
+ \definefontsynonym [LMSansQuotation8-BoldOblique] [\typescriptthree-lmssqbo8] [encoding=\typescriptthree]
+ \definefontsynonym [LMSansQuotation8-Bold] [\typescriptthree-lmssqbx8] [encoding=\typescriptthree]
+ \definefontsynonym [LMSansQuotation8-Oblique] [\typescriptthree-lmssqo8] [encoding=\typescriptthree]
+
+ \definefontsynonym [LMSans-Regular] [LMSans10-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans-BoldOblique] [LMSans10-BoldOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans-Bold] [LMSans10-Bold] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans-DemiCondensed] [LMSans10-DemiCondensed] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans-DemiCondensedOblique] [LMSans10-DemiCondensedOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMSans-Oblique] [LMSans10-Oblique] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [mono] [modern,latin-modern,modern-vari,latin-modern-vari,modern-cond,latin-modern-cond] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [LMTypewriter10-CapsRegular] [\typescriptthree-lmtcsc10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-CapsOblique] [\typescriptthree-lmtcso10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-Light] [\typescriptthree-lmtl10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-LightOblique] [\typescriptthree-lmtlo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-LightCondensed] [\typescriptthree-lmtlc10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-LightCondensedOblique] [\typescriptthree-lmtlco10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-Dark] [\typescriptthree-lmtk10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-DarkOblique] [\typescriptthree-lmtko10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-Regular] [\typescriptthree-lmtt10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter12-Regular] [\typescriptthree-lmtt12] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter8-Regular] [\typescriptthree-lmtt8] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter9-Regular] [\typescriptthree-lmtt9] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-Italic] [\typescriptthree-lmtti10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter10-Oblique] [\typescriptthree-lmtto10] [encoding=\typescriptthree]
+
+ \definefontsynonym [LMTypewriterVarWd10-Regular] [\typescriptthree-lmvtt10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd10-Oblique] [\typescriptthree-lmvtto10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd10-Light] [\typescriptthree-lmvtl10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd10-LightOblique] [\typescriptthree-lmvtlo10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd10-Dark] [\typescriptthree-lmvtk10] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd10-DarkOblique] [\typescriptthree-lmvtko10] [encoding=\typescriptthree]
+
+ \definefontsynonym [LMTypewriter-CapsRegular] [LMTypewriter10-CapsRegular] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-CapsOblique] [LMTypewriter10-CapsOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-Light] [LMTypewriter10-Light] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-LightOblique] [LMTypewriter10-LightOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-LightCondensed] [LMTypewriter10-LightCondensed] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-LightCondensedOblique] [LMTypewriter10-LightCondensedOblique][encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-Dark] [LMTypewriter10-Dark] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-DarkOblique] [LMTypewriter10-DarkOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-Regular] [LMTypewriter10-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-Italic] [LMTypewriter10-Italic] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriter-Oblique] [LMTypewriter10-Oblique] [encoding=\typescriptthree]
+
+ \definefontsynonym [LMTypewriterVarWd-Regular] [LMTypewriterVarWd10-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd-Oblique] [LMTypewriterVarWd10-Oblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd-Light] [LMTypewriterVarWd10-Light] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd-LightOblique] [LMTypewriterVarWd10-LightOblique] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd-Dark] [LMTypewriterVarWd10-Dark] [encoding=\typescriptthree]
+ \definefontsynonym [LMTypewriterVarWd-DarkOblique] [LMTypewriterVarWd10-DarkOblique] [encoding=\typescriptthree]
+
+\stoptypescript
+
+% todo: map these onto verbose names
+
+\starttypescript [serif] [modern,latin-modern,computer-modern] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [cmr5] [\typescriptthree-lmr5] [encoding=\typescriptthree]
+ \definefontsynonym [cmr6] [\typescriptthree-lmr6] [encoding=\typescriptthree]
+ \definefontsynonym [cmr7] [\typescriptthree-lmr7] [encoding=\typescriptthree]
+ \definefontsynonym [cmr8] [\typescriptthree-lmr8] [encoding=\typescriptthree]
+ \definefontsynonym [cmr9] [\typescriptthree-lmr9] [encoding=\typescriptthree]
+ \definefontsynonym [cmr10] [\typescriptthree-lmr10] [encoding=\typescriptthree]
+ \definefontsynonym [cmr12] [\typescriptthree-lmr12] [encoding=\typescriptthree]
+ \definefontsynonym [cmr17] [\typescriptthree-lmr17] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmbx5] [\typescriptthree-lmbx5] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx6] [\typescriptthree-lmbx6] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx7] [\typescriptthree-lmbx7] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx8] [\typescriptthree-lmbx8] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx9] [\typescriptthree-lmbx9] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx10] [\typescriptthree-lmbx10] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx12] [\typescriptthree-lmbx12] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmsl10] [\typescriptthree-lmro10] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl12] [\typescriptthree-lmro12] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl8] [\typescriptthree-lmro8] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl9] [\typescriptthree-lmro9] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmti7] [\typescriptthree-lmri7] [encoding=\typescriptthree]
+ \definefontsynonym [cmti8] [\typescriptthree-lmri8] [encoding=\typescriptthree]
+ \definefontsynonym [cmti9] [\typescriptthree-lmri9] [encoding=\typescriptthree]
+ \definefontsynonym [cmti10] [\typescriptthree-lmri10] [encoding=\typescriptthree]
+ \definefontsynonym [cmti12] [\typescriptthree-lmri12] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmb10] [\typescriptthree-lmb10] [encoding=\typescriptthree]
+ \definefontsynonym [cmbsl10] [\typescriptthree-lmbo10] [encoding=\typescriptthree]
+ \definefontsynonym [cmbxsl10] [\typescriptthree-lmbxo10] [encoding=\typescriptthree]
+ \definefontsynonym [cmbxti10] [\typescriptthree-lmbxi10] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmcsc10] [\typescriptthree-lmcsc10] [encoding=\typescriptthree]
+ \definefontsynonym [cmcscsl10][\typescriptthree-lmcsco10] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [sans] [modern,latin-modern,computer-modern] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [cmss8] [\typescriptthree-lmss8] [encoding=\typescriptthree]
+ \definefontsynonym [cmss9] [\typescriptthree-lmss9] [encoding=\typescriptthree]
+ \definefontsynonym [cmss10] [\typescriptthree-lmss10] [encoding=\typescriptthree]
+ \definefontsynonym [cmss12] [\typescriptthree-lmss12] [encoding=\typescriptthree]
+ \definefontsynonym [cmss17] [\typescriptthree-lmss17] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmssi10] [\typescriptthree-lmsso10] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi12] [\typescriptthree-lmsso12] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi17] [\typescriptthree-lmsso17] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi8] [\typescriptthree-lmsso8] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi9] [\typescriptthree-lmsso9] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmssq8] [\typescriptthree-lmssq8] [encoding=\typescriptthree]
+ \definefontsynonym [cmssqb8] [\typescriptthree-lmssqbx8] [encoding=\typescriptthree]
+ \definefontsynonym [cmssqbi8] [\typescriptthree-lmssqbo8] [encoding=\typescriptthree]
+ \definefontsynonym [cmssqi8] [\typescriptthree-lmssqo8] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmssbx10] [\typescriptthree-lmssbx10] [encoding=\typescriptthree]
+ \definefontsynonym [cmssdc10] [\typescriptthree-lmssdc10] [encoding=\typescriptthree]
+ \definefontsynonym [cmssbi10] [\typescriptthree-lmssbo10] [encoding=\typescriptthree]
+ \definefontsynonym [cmssdi10] [\typescriptthree-lmssdo10] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [mono] [modern,latin-modern,computer-modern] [texnansi,ec,qx,t5]
+
+ \definefontsynonym [cmtt8] [\typescriptthree-lmtt8] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt9] [\typescriptthree-lmtt9] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt10] [\typescriptthree-lmtt10] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt12] [\typescriptthree-lmtt12] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmitt10] [\typescriptthree-lmtti10] [encoding=\typescriptthree]
+ \definefontsynonym [cmsltt10] [\typescriptthree-lmtto10] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmvtt10] [\typescriptthree-lmvtt10] [encoding=\typescriptthree]
+ \definefontsynonym [cmvtti10] [\typescriptthree-lmvtto] [encoding=\typescriptthree]
+
+ \definefontsynonym [cmtcsc10] [\typescriptthree-lmtcsc10] [encoding=\typescriptthree]
+
+\stoptypescript
+
+%D {\em Comments by Victor Figurnov:} the wcmb10, wcmbx10,
+%D \unknown\ fonts below are taken from the Paradissa
+%D collection by Basil Malyshev. These fonts don't conform t2a
+%D encoding but are in MS Windows Cyrillic codepage 1251
+%D encoding. These fonts contain only 33 russian letters in
+%D upper and lower case, the number sign, and guillemots. But
+%D even among these characters only the basic 32 russian
+%D letters (in upper and lower case) will be typeset correctly
+%D with this definition. The letters cyrillicYO and
+%D cyrillicyo, as well as number sign (textnumero) and
+%D guillemots won't be typeset properly, because these symbols
+%D have different positions in t2a and MS CP1251 encodings.
+%D
+%D I think that the russian lh fonts and|/|or cm-super provide
+%D better alternatives (type1). Therefore, the names below
+%D match those of cm-super (\type {0NNN} instead of \type
+%D {NNN}, i.e.\ four digit numbers).
+
+\starttypescript [serif] [computer-modern] [cyr]
+ \definefontsynonym [cmb10] [wcmb10] [encoding=t2a]
+ \definefontsynonym [cmbsy10] [wcmbsy10] [encoding=t2a]
+ \definefontsynonym [cmbx10] [wcmbx10] [encoding=t2a]
+ \definefontsynonym [cmbx12] [wcmbx12] [encoding=t2a]
+ \definefontsynonym [cmbx5] [wcmbx5] [encoding=t2a]
+ \definefontsynonym [cmbx6] [wcmbx6] [encoding=t2a]
+ \definefontsynonym [cmbx7] [wcmbx7] [encoding=t2a]
+ \definefontsynonym [cmbx8] [wcmbx8] [encoding=t2a]
+ \definefontsynonym [cmbx9] [wcmbx9] [encoding=t2a]
+ \definefontsynonym [cmbxsl10] [wcmbxsl10] [encoding=t2a]
+ \definefontsynonym [cmbxti10] [wcmbxti10] [encoding=t2a]
+ \definefontsynonym [cmcsc10] [wcmcsc10] [encoding=t2a]
+ %definefontsynonym [cmdunh10] [wcmdunh10] [encoding=t2a]
+ \definefontsynonym [cminch] [wcminch] [encoding=t2a]
+ \definefontsynonym [cmr10] [wcmr10] [encoding=t2a]
+ \definefontsynonym [cmr12] [wcmr12] [encoding=t2a]
+ \definefontsynonym [cmr17] [wcmr17] [encoding=t2a]
+ \definefontsynonym [cmr5] [wcmr5] [encoding=t2a]
+ \definefontsynonym [cmr6] [wcmr6] [encoding=t2a]
+ \definefontsynonym [cmr7] [wcmr7] [encoding=t2a]
+ \definefontsynonym [cmr8] [wcmr8] [encoding=t2a]
+ \definefontsynonym [cmr9] [wcmr9] [encoding=t2a]
+ \definefontsynonym [cmsl10] [wcmsl10] [encoding=t2a]
+ \definefontsynonym [cmsl12] [wcmsl12] [encoding=t2a]
+ \definefontsynonym [cmsl8] [wcmsl8] [encoding=t2a]
+ \definefontsynonym [cmsl9] [wcmsl9] [encoding=t2a]
+ \definefontsynonym [cmti10] [wcmti10] [encoding=t2a]
+ \definefontsynonym [cmti12] [wcmti12] [encoding=t2a]
+ \definefontsynonym [cmti7] [wcmti7] [encoding=t2a]
+ \definefontsynonym [cmti8] [wcmti8] [encoding=t2a]
+ \definefontsynonym [cmti9] [wcmti9] [encoding=t2a]
+ \definefontsynonym [cmu10] [wcmu10] [encoding=t2a]
+\stoptypescript
+
+\starttypescript [sans] [computer-modern] [cyr]
+ \definefontsynonym [cmss10] [wcmss10] [encoding=t2a]
+ \definefontsynonym [cmss12] [wcmss12] [encoding=t2a]
+ \definefontsynonym [cmss17] [wcmss17] [encoding=t2a]
+ \definefontsynonym [cmss8] [wcmss8] [encoding=t2a]
+ \definefontsynonym [cmss9] [wcmss9] [encoding=t2a]
+ %definefontsynonym [cmssbi10] [wcmssbi10] [encoding=t2a]
+ \definefontsynonym [cmssbx10] [wcmssbx10] [encoding=t2a]
+ \definefontsynonym [cmssdc10] [wcmssdc10] [encoding=t2a]
+ \definefontsynonym [cmssi10] [wcmssi10] [encoding=t2a]
+ \definefontsynonym [cmssi12] [wcmssi12] [encoding=t2a]
+ \definefontsynonym [cmssi17] [wcmssi17] [encoding=t2a]
+ \definefontsynonym [cmssi8] [wcmssi8] [encoding=t2a]
+ \definefontsynonym [cmssi9] [wcmssi9] [encoding=t2a]
+ \definefontsynonym [cmssq8] [wcmssq8] [encoding=t2a]
+ \definefontsynonym [cmssqi8] [wcmssqi8] [encoding=t2a]
+\stoptypescript
+
+\starttypescript [mono] [computer-modern] [cyr]
+ \definefontsynonym [cmitt10] [wcmitt10] [encoding=t2a]
+ \definefontsynonym [cmsltt10] [wcmsltt10] [encoding=t2a]
+ \definefontsynonym [cmtt10] [wcmtt10] [encoding=t2a]
+ \definefontsynonym [cmtt12] [wcmtt12] [encoding=t2a]
+ \definefontsynonym [cmtt8] [wcmtt8] [encoding=t2a]
+ \definefontsynonym [cmtt9] [wcmtt9] [encoding=t2a]
+ %definefontsynonym [cmvtt10] [wcmvtt10] [encoding=t2a]
+\stoptypescript
+
+\definetypescriptprefix [c:t2a] [la]
+\definetypescriptprefix [c:t2b] [lb]
+\definetypescriptprefix [c:t2c] [lc]
+\definetypescriptprefix [c:x2] [rx]
+
+\starttypescript [serif] [computer-modern] [t2a,t2b,t2c,x2]
+ \definefontsynonym [cmb10] [\typescriptprefix{c:\typescriptthree}rb1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx10] [\typescriptprefix{c:\typescriptthree}bx1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx12] [\typescriptprefix{c:\typescriptthree}bx1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx5] [\typescriptprefix{c:\typescriptthree}bx0500] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx6] [\typescriptprefix{c:\typescriptthree}bx0600] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx7] [\typescriptprefix{c:\typescriptthree}bx0700] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx8] [\typescriptprefix{c:\typescriptthree}bx0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmbx9] [\typescriptprefix{c:\typescriptthree}bx0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmbxsl10] [\typescriptprefix{c:\typescriptthree}bl1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmbxti10] [\typescriptprefix{c:\typescriptthree}bi1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmcsc10] [\typescriptprefix{c:\typescriptthree}cc1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmdunh10] [\typescriptprefix{c:\typescriptthree}dh1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmff10] [\typescriptprefix{c:\typescriptthree}ff1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmfi10] [\typescriptprefix{c:\typescriptthree}fi1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmfib8] [\typescriptprefix{c:\typescriptthree}fb0800] [encoding=\typescriptthree]
+ %\definefontsynonym [cminch] [\typescriptprefix{c:\typescriptthree}inch00] [encoding=\typescriptthree]
+ \definefontsynonym [cmr10] [\typescriptprefix{c:\typescriptthree}rm1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmr12] [\typescriptprefix{c:\typescriptthree}rm1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmr17] [\typescriptprefix{c:\typescriptthree}rm1700] [encoding=\typescriptthree]
+ \definefontsynonym [cmr5] [\typescriptprefix{c:\typescriptthree}rm0500] [encoding=\typescriptthree]
+ \definefontsynonym [cmr6] [\typescriptprefix{c:\typescriptthree}rm0600] [encoding=\typescriptthree]
+ \definefontsynonym [cmr7] [\typescriptprefix{c:\typescriptthree}rm0700] [encoding=\typescriptthree]
+ \definefontsynonym [cmr8] [\typescriptprefix{c:\typescriptthree}rm0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmr9] [\typescriptprefix{c:\typescriptthree}rm0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl10] [\typescriptprefix{c:\typescriptthree}sl1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl12] [\typescriptprefix{c:\typescriptthree}sl1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl8] [\typescriptprefix{c:\typescriptthree}sl0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmsl9] [\typescriptprefix{c:\typescriptthree}sl0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmtcsc10] [\typescriptprefix{c:\typescriptthree}tc1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmti10] [\typescriptprefix{c:\typescriptthree}ti1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmti12] [\typescriptprefix{c:\typescriptthree}ti1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmti7] [\typescriptprefix{c:\typescriptthree}ti0700] [encoding=\typescriptthree]
+ \definefontsynonym [cmti8] [\typescriptprefix{c:\typescriptthree}ti0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmti9] [\typescriptprefix{c:\typescriptthree}ti0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmu10] [\typescriptprefix{c:\typescriptthree}ui1000] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [computer-modern] [t2a,t2b,t2c,x2]
+ \definefontsynonym [cmss10] [\typescriptprefix{c:\typescriptthree}ss1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmss12] [\typescriptprefix{c:\typescriptthree}ss1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmss17] [\typescriptprefix{c:\typescriptthree}ss1700] [encoding=\typescriptthree]
+ \definefontsynonym [cmss8] [\typescriptprefix{c:\typescriptthree}ss0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmss9] [\typescriptprefix{c:\typescriptthree}ss0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmssbx10] [\typescriptprefix{c:\typescriptthree}sx1000] [encoding=\typescriptthree]
+ %\definefontsynonym [cmssdc10] [\typescriptprefix{c:\typescriptthree}ssdc1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi10] [\typescriptprefix{c:\typescriptthree}si1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi12] [\typescriptprefix{c:\typescriptthree}si1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi17] [\typescriptprefix{c:\typescriptthree}si1700] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi8] [\typescriptprefix{c:\typescriptthree}si0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmssi9] [\typescriptprefix{c:\typescriptthree}si0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmssq8] [\typescriptprefix{c:\typescriptthree}ss0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmssqi8] [\typescriptprefix{c:\typescriptthree}si0800] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [mono] [computer-modern] [t2a,t2b,t2c,x2]
+ \definefontsynonym [cmitt10] [\typescriptprefix{c:\typescriptthree}it1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmsltt10] [\typescriptprefix{c:\typescriptthree}st1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt10] [\typescriptprefix{c:\typescriptthree}tt1000] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt12] [\typescriptprefix{c:\typescriptthree}tt1200] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt8] [\typescriptprefix{c:\typescriptthree}tt0800] [encoding=\typescriptthree]
+ \definefontsynonym [cmtt9] [\typescriptprefix{c:\typescriptthree}tt0900] [encoding=\typescriptthree]
+ \definefontsynonym [cmvtt10] [\typescriptprefix{c:\typescriptthree}vt1000] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [serif] [computer-modern] [lcy]
+ \definefontsynonym [cmb10] [lhb10] [encoding=lcy]
+ \definefontsynonym [cmbx10] [lhbx10] [encoding=lcy]
+ \definefontsynonym [cmbx12] [lhbx12] [encoding=lcy]
+ \definefontsynonym [cmbx5] [lhbx5] [encoding=lcy]
+ \definefontsynonym [cmbx6] [lhbx6] [encoding=lcy]
+ \definefontsynonym [cmbx7] [lhbx7] [encoding=lcy]
+ \definefontsynonym [cmbx8] [lhbx8] [encoding=lcy]
+ \definefontsynonym [cmbx9] [lhbx9] [encoding=lcy]
+ \definefontsynonym [cmbxsl10] [lhbxsl10] [encoding=lcy]
+ \definefontsynonym [cmbxti10] [lhbxti10] [encoding=lcy]
+ \definefontsynonym [cmcsc10] [lhcsc10] [encoding=lcy]
+ \definefontsynonym [cmdunh10] [lhdunh10] [encoding=lcy]
+ \definefontsynonym [cmff10] [lhff10] [encoding=lcy]
+ \definefontsynonym [cmfi10] [lhfi10] [encoding=lcy]
+ \definefontsynonym [cmfib8] [lhfib8] [encoding=lcy]
+ \definefontsynonym [cminch] [lhinch] [encoding=lcy]
+ \definefontsynonym [cmr10] [lhr10] [encoding=lcy]
+ \definefontsynonym [cmr12] [lhr12] [encoding=lcy]
+ \definefontsynonym [cmr17] [lhr17] [encoding=lcy]
+ \definefontsynonym [cmr5] [lhr5] [encoding=lcy]
+ \definefontsynonym [cmr6] [lhr6] [encoding=lcy]
+ \definefontsynonym [cmr7] [lhr7] [encoding=lcy]
+ \definefontsynonym [cmr8] [lhr8] [encoding=lcy]
+ \definefontsynonym [cmr9] [lhr9] [encoding=lcy]
+ \definefontsynonym [cmsl10] [lhsl10] [encoding=lcy]
+ \definefontsynonym [cmsl12] [lhsl12] [encoding=lcy]
+ \definefontsynonym [cmsl8] [lhsl8] [encoding=lcy]
+ \definefontsynonym [cmsl9] [lhsl9] [encoding=lcy]
+ \definefontsynonym [cmtcsc10] [lhtcsc10] [encoding=lcy]
+ \definefontsynonym [cmtex10] [lhtex10] [encoding=lcy]
+ \definefontsynonym [cmtex8] [lhtex8] [encoding=lcy]
+ \definefontsynonym [cmtex9] [lhtex9] [encoding=lcy]
+ \definefontsynonym [cmti10] [lhti10] [encoding=lcy]
+ \definefontsynonym [cmti12] [lhti12] [encoding=lcy]
+ \definefontsynonym [cmti7] [lhti7] [encoding=lcy]
+ \definefontsynonym [cmti8] [lhti8] [encoding=lcy]
+ \definefontsynonym [cmti9] [lhti9] [encoding=lcy]
+ \definefontsynonym [cmu10] [lhu10] [encoding=lcy]
+\stoptypescript
+
+\starttypescript [sans] [computer-modern] [lcy]
+ \definefontsynonym [cmss10] [lhss10] [encoding=lcy]
+ \definefontsynonym [cmss12] [lhss12] [encoding=lcy]
+ \definefontsynonym [cmss17] [lhss17] [encoding=lcy]
+ \definefontsynonym [cmss8] [lhss8] [encoding=lcy]
+ \definefontsynonym [cmss9] [lhss9] [encoding=lcy]
+ \definefontsynonym [cmssbi10] [lhssbi10] [encoding=lcy]
+ \definefontsynonym [cmssbx10] [lhssbx10] [encoding=lcy]
+ \definefontsynonym [cmssdc10] [lhssdc10] [encoding=lcy]
+ \definefontsynonym [cmssi10] [lhssi10] [encoding=lcy]
+ \definefontsynonym [cmssi12] [lhssi12] [encoding=lcy]
+ \definefontsynonym [cmssi17] [lhssi17] [encoding=lcy]
+ \definefontsynonym [cmssi8] [lhssi8] [encoding=lcy]
+ \definefontsynonym [cmssi9] [lhssi9] [encoding=lcy]
+ \definefontsynonym [cmssq8] [lhssq8] [encoding=lcy]
+ \definefontsynonym [cmssqi8] [lhssqi8] [encoding=lcy]
+\stoptypescript
+
+\starttypescript [mono] [computer-modern] [lcy]
+ \definefontsynonym [cmitt10] [lhitt10] [encoding=lcy]
+ \definefontsynonym [cmsltt10] [lhsltt10] [encoding=lcy]
+ \definefontsynonym [cmtt10] [lhtt10] [encoding=lcy]
+ \definefontsynonym [cmtt12] [lhtt12] [encoding=lcy]
+ \definefontsynonym [cmtt8] [lhtt8] [encoding=lcy]
+ \definefontsynonym [cmtt9] [lhtt9] [encoding=lcy]
+ \definefontsynonym [cmvtt10] [lhvtt10] [encoding=lcy]
+\stoptypescript
+
+\starttypescript [serif] [modern,computer-modern,latin-modern] [default]
+ \definefontsynonym [ComputerModern] [LMRoman-Regular]
+ \definefontsynonym [ComputerModern-Italic] [LMRoman-Italic]
+ \definefontsynonym [ComputerModern-Slanted] [LMRoman-Oblique]
+ \definefontsynonym [ComputerModern-Bold] [LMRoman-Bold]
+ \definefontsynonym [ComputerModern-BoldItalic] [LMRoman-BoldItalic]
+ \definefontsynonym [ComputerModern-BoldSlanted] [LMRoman-BoldOblique]
+ \definefontsynonym [ComputerModern-Caps] [LMRoman-CapsRegular]
+ \definefontsynonym [ComputerModern-CapsSlanted] [LMRoman-CapsOblique]
+\stoptypescript
+
+\starttypescript [sans] [modern,computer-modern,latin-modern] % [default]
+ \definefontsynonym [ComputerModernSans] [LMSans-Regular]
+ \definefontsynonym [ComputerModernSans-Italic] [LMSans-Italic]
+ \definefontsynonym [ComputerModernSans-Slanted] [LMSans-Oblique]
+ \definefontsynonym [ComputerModernSans-Bold] [LMSans-Bold]
+ \definefontsynonym [ComputerModernSans-BoldItalic] [LMSans-BoldItalic]
+ \definefontsynonym [ComputerModernSans-BoldSlanted] [LMSans-BoldOblique]
+ \definefontsynonym [ComputerModernSans-Caps] [LMSans-Regular] % [LMSans-CapsRegular]
+ \definefontsynonym [ComputerModernSans-CapsSlanted] [LMSans-Oblique] % [LMSans-CapsOblique]
+\stoptypescript
+
+\starttypescript [mono] [modern,computer-modern,latin-modern] % [default]
+ \definefontsynonym [ComputerModernMono] [LMTypewriter-Regular]
+ \definefontsynonym [ComputerModernMono-Italic] [LMTypewriter-Italic]
+ \definefontsynonym [ComputerModernMono-Slanted] [LMTypewriter-Oblique]
+ \definefontsynonym [ComputerModernMono-Bold] [LMTypewriter-Dark]
+ \definefontsynonym [ComputerModernMono-BoldItalic] [LMTypewriter-DarkOblique] % !
+ \definefontsynonym [ComputerModernMono-BoldSlanted] [LMTypewriter-DarkOblique]
+ \definefontsynonym [ComputerModernMono-Caps] [LMTypewriter-CapsRegular]
+ \definefontsynonym [ComputerModernMono-CapsSlanted] [LMTypewriter-CapsOblique]
+ \definefontsynonym [ComputerModernMono-Variable] [LMTypewriterVarWd-Regular]
+\stoptypescript
+
+\starttypescript [serif] [modern-vari,computer-modern-vari,latin-modern-vari] % [default]
+ \definefontsynonym [ComputerModernVariable] [LMTypewriterVarWd-Regular]
+ \definefontsynonym [ComputerModernVariable-Italic] [LMTypewriterVarWd-Oblique]
+ \definefontsynonym [ComputerModernVariable-Slanted] [LMTypewriterVarWd-Oblique]
+ \definefontsynonym [ComputerModernVariable-Bold] [LMTypewriterVarWd-Dark]
+ \definefontsynonym [ComputerModernVariable-BoldItalic] [LMTypewriterVarWd-DarkOblique]
+ \definefontsynonym [ComputerModernVariable-BoldSlanted] [LMTypewriterVarWd-DarkOblique]
+ \definefontsynonym [ComputerModernVariable-Caps] [LMTypewriterVarWd-Regular]
+ \definefontsynonym [ComputerModernVariable-CapsSlanted] [LMTypewriterVarWd-Oblique]
+\stoptypescript
+
+\starttypescript [math] [modern,computer-modern,latin-modern] % [default]
+ % watch the space, it prevents remapping
+ \definefontsynonym [ComputerModernMath-Roman] [cmr10 ]
+ \definefontsynonym [ComputerModernMath-Extension] [cmex10]
+ \definefontsynonym [ComputerModernMath-Italic] [cmmi10]
+ \definefontsynonym [ComputerModernMath-Symbol] [cmsy10]
+\stoptypescript
+
+\starttypescript [boldmath,bfmath] [modern,computer-modern,latin-modern] % [default]
+ % watch the space, it prevents remapping
+ \definefontsynonym [ComputerModernMath-Roman-Bold] [cmb10 ]
+ \definefontsynonym [ComputerModernMath-Extension] [cmex10]
+ \definefontsynonym [ComputerModernMath-Italic-Bold] [cmmib10]
+ \definefontsynonym [ComputerModernMath-Symbol-Bold] [cmbsy10]
+\stoptypescript
+
+% Computer Concrete (AMS)
+
+\starttypescript [serif] [concrete] [default]
+ \definefontsynonym [ComputerConcrete] [ccr10]
+ \definefontsynonym [ComputerConcrete-Italic] [ccti10]
+ \definefontsynonym [ComputerConcrete-Slanted] [ccsl10]
+ \definefontsynonym [ComputerConcrete-Bold] [ComputerConcrete]
+ \definefontsynonym [ComputerConcrete-BoldItalic] [ComputerConcrete-Italic]
+ \definefontsynonym [ComputerConcrete-BoldSlanted] [ComputerConcrete-Slanted]
+ \definefontsynonym [ComputerConcrete-Caps] [cccsc10]
+\stoptypescript
+
+% Euler (AMS)
+
+\starttypescript [math] [euler] [default]
+ \definefontsynonym [Euler-Roman] [zeurm10]
+ \definefontsynonym [Euler-Extension] [zeuex10]
+ \definefontsynonym [Euler-Symbol] [zeusm10]
+ \definefontsynonym [Euler-Fraktur] [eufm10]
+\stoptypescript
+
+\starttypescript [boldmath,bfmath] [euler] [default]
+ \definefontsynonym [Euler-Roman-Bold] [zeurb10]
+ \definefontsynonym [Euler-Extension] [zeuex10]
+ \definefontsynonym [Euler-Symbol-Bold] [zeusb10]
+ \definefontsynonym [Euler-Fraktur-Bold] [eufb10]
+\stoptypescript
+
+% AMS (AMS)
+
+\starttypescript [math] [modern,computer-modern,latin-modern,ams] [default]
+ \definefontsynonym [AMS-SymbolA] [msam10]
+ \definefontsynonym [AMS-SymbolB] [msbm10]
+\stoptypescript
+
+% Fourier (Utopia)
+
+\starttypescript [math] [fourier] [default,ec]
+ \definefontsynonym [Fourier-Math-Letters] [futr8t] [encoding=ec]
+ %\definefontsynonym [Fourier-Math-Letters] [futmi]
+ \definefontsynonym [Fourier-Math-Letters-Italic] [futmii]
+ \definefontsynonym [Fourier-Math-Symbols] [futsy]
+ \definefontsynonym [Fourier-Math-Extension] [fourier-mex]
+\stoptypescript
+
+\starttypescript [serif] [fourier] [ec]
+ \definefontsynonym [Fourier-Regular] [futr8t] [encoding=ec]
+ \definefontsynonym [Fourier-Slanted] [futro8t] [encoding=ec]
+ \definefontsynonym [Fourier-Italic] [futri8t] [encoding=ec]
+ \definefontsynonym [Fourier-RegularCaps] [futrc8t] [encoding=ec]
+ \definefontsynonym [Fourier-Bold] [futb8t] [encoding=ec]
+ \definefontsynonym [Fourier-BoldSlanted] [futbo8t] [encoding=ec]
+ \definefontsynonym [Fourier-BoldItalic] [futbi8t] [encoding=ec]
+ \definefontsynonym [Fourier-BoldCaps] [futbc8t] [encoding=ec]
+
+ \definefontsynonym [Fourier-Regular-Expert] [futr9e] [encoding=ec]
+ \definefontsynonym [Fourier-Slanted-Expert] [futro9e] [encoding=ec]
+ \definefontsynonym [Fourier-Italic-Expert] [futri9e] [encoding=ec]
+ \definefontsynonym [Fourier-RegularCaps-Expert] [futrc9e] [encoding=ec]
+ \definefontsynonym [Fourier-Semi-Expert] [futs9e] [encoding=ec]
+ \definefontsynonym [Fourier-SemiSlanted-Expert] [futso9e] [encoding=ec]
+ \definefontsynonym [Fourier-SemiItalic-Expert] [futsi9e] [encoding=ec]
+ \definefontsynonym [Fourier-SemiCaps-Expert] [futsc9e] [encoding=ec]
+ \definefontsynonym [Fourier-Bold-Expert] [futb9e] [encoding=ec]
+ \definefontsynonym [Fourier-BoldSlanted-Expert] [futbo9e] [encoding=ec]
+ \definefontsynonym [Fourier-BoldItalic-Expert] [futbi9e] [encoding=ec]
+ \definefontsynonym [Fourier-Black-Expert] [futc9e] [encoding=ec]
+
+ \definefontsynonym [Fourier-Regular-OldStyle] [futr9d] [encoding=ec]
+ \definefontsynonym [Fourier-Slanted-OldStyle] [futro9d] [encoding=ec]
+ \definefontsynonym [Fourier-Italic-OldStyle] [futri9d] [encoding=ec]
+ \definefontsynonym [Fourier-RegularCaps-OldStyle] [futrc9d] [encoding=ec]
+ \definefontsynonym [Fourier-Semi-OldStyle] [futs9d] [encoding=ec]
+ \definefontsynonym [Fourier-SemiSlanted-OldStyle] [futso9d] [encoding=ec]
+ \definefontsynonym [Fourier-SemiItalic-OldStyle] [futsi9d] [encoding=ec]
+ \definefontsynonym [Fourier-SemiCaps-OldStyle] [futsc9d] [encoding=ec]
+ \definefontsynonym [Fourier-Bold-OldStyle] [futb9d] [encoding=ec]
+ \definefontsynonym [Fourier-BoldSlanted-OldStyle] [futbo9d] [encoding=ec]
+ \definefontsynonym [Fourier-BoldItalic-OldStyle] [futbi9d] [encoding=ec]
+ \definefontsynonym [Fourier-Black-OldStyle] [futc9d] [encoding=ec]
+\stoptypescript
+
+% Courier (URW)
+
+\starttypescript [mono] [courier] [texnansi,ec,8r,t5]
+ \definefontsynonym [Courier] [\typescriptthree-ucrr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Courier-Bold] [\typescriptthree-ucrb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Courier-Oblique] [\typescriptthree-ucrro8a] [encoding=\typescriptthree]
+ \definefontsynonym [Courier-BoldOblique] [\typescriptthree-ucrbo8a] [encoding=\typescriptthree]
+\stoptypescript
+
+% alternative 1
+%
+% \definefontsynonym[qx-ucrr8a] [qcrr]
+% \definefontsynonym[qx-ucrb8a] [qcrb]
+% \definefontsynonym[qx-ucrr08a] [qcrri]
+% \definefontsynonym[qx-ucrbo8a] [qcrbi]
+%
+% alternative 2
+
+\starttypescript [mono] [courier] [qx]
+ \definefontsynonym [Courier] [qcrr] [encoding=qx]
+ \definefontsynonym [Courier-Bold] [qcrb] [encoding=qx]
+ \definefontsynonym [Courier-Oblique] [qcrri] [encoding=qx]
+ \definefontsynonym [Courier-BoldOblique] [qcrbi] [encoding=qx]
+\stoptypescript
+
+% Helvetica (URW)
+
+\starttypescript [sans] [helvetica] [texnansi,ec,8r,t5]
+ \definefontsynonym [Helvetica] [\typescriptthree-uhvr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Italic] [\typescriptthree-uhvri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Oblique] [\typescriptthree-uhvro8a] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Bold] [\typescriptthree-uhvb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-BoldItalic] [\typescriptthree-uhvbi8a] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-BoldOblique] [\typescriptthree-uhvbo8a] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [helvetica] [qx] % narrow
+ \definefontsynonym [Helvetica] [qhvr] [encoding=qx] % qhvcr
+ \definefontsynonym [Helvetica-Italic] [qhvri] [encoding=qx] % qhvcri
+ \definefontsynonym [Helvetica-Oblique] [qhvri] [encoding=qx] % qhvcri
+ \definefontsynonym [Helvetica-Bold] [qhvb] [encoding=qx] % qhvcb
+ \definefontsynonym [Helvetica-BoldItalic] [qhvbi] [encoding=qx] % qhvcbi
+ \definefontsynonym [Helvetica-BoldOblique] [qhvbi] [encoding=qx] % qhvcbi
+\stoptypescript
+
+% Times Roman (URW)
+
+\starttypescript [serif] [times] [texnansi,ec,8r,t5]
+ \definefontsynonym [Times-Roman] [\typescriptthree-utmr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Times-Italic] [\typescriptthree-utmri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Times-Bold] [\typescriptthree-utmb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Times-BoldItalic] [\typescriptthree-utmbi8a] [encoding=\typescriptthree]
+
+ \definefontsynonym [Times-Slanted] [\typescriptthree-utmr8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Times-BoldSlanted] [\typescriptthree-utmb8a-slanted-167] [encoding=\typescriptthree]
+
+ \definefontsynonym [Times] [Times-Roman]
+\stoptypescript
+
+\starttypescript [serif] [times] [qx]
+ \definefontsynonym [Times-Roman] [qtmr] [encoding=qx]
+ \definefontsynonym [Times-Italic] [qtmri] [encoding=qx]
+ \definefontsynonym [Times-Bold] [qtmb] [encoding=qx]
+ \definefontsynonym [Times-BoldItalic] [qtmbi] [encoding=qx]
+
+ \definefontsynonym [Times-Slanted] [Times-Italic]
+ \definefontsynonym [Times-BoldSlanted] [Times-BoldItalic]
+
+ \definefontsynonym [Times] [Times-Roman]
+\stoptypescript
+
+% Math Times (tx)
+
+\starttypescript [math] [times] [all]
+ \definefontsynonym [Times-Roman-Upright] [txr]
+ \definefontsynonym [Times-Roman-Italic] [txi]
+ \definefontsynonym [Times-Roman-Slanted] [txsl]
+ \definefontsynonym [Times-Roman-Caps] [txsc]
+ \definefontsynonym [Times-Companion-Upright] [tcxr]
+ \definefontsynonym [Times-Companion-Italic] [tcxi]
+ \definefontsynonym [Times-Companion-Slanted] [tcxsl]
+ \definefontsynonym [Times-Math-Italic] [txmi]
+ \definefontsynonym [Times-Math-Symbols] [txsy]
+ \definefontsynonym [Times-Math-Extension] [txex]
+ \definefontsynonym [Times-Math-SymbolsA] [txsya]
+ \definefontsynonym [Times-Math-SymbolsB] [txsyb]
+ \definefontsynonym [Times-Math-SymbolsC] [txsyc]
+ \definefontsynonym [Times-Math-Italic-A] [txmia]
+ \definefontsynonym [Times-Math-Extension-A] [txexa]
+\stoptypescript
+
+% Antykwa Torunska (GUST)
+
+% \starttypescript [serif] [antykwa-torunska] [texnansi,ec,8r]
+% \definefontsynonym [AntykwaTorunska-Regular] [\typescriptthree-anttr] [encoding=\typescriptthree]
+% \definefontsynonym [AntykwaTorunska-Bold] [\typescriptthree-anttb] [encoding=\typescriptthree]
+% \definefontsynonym [AntykwaTorunska-Italic] [\typescriptthree-anttri] [encoding=\typescriptthree]
+% \stoptypescript
+
+\starttypescript [serif] [antykwa-torunska,antykwa-torunska-light,antykwa-torunska-cond,antykwa-torunska-lightcond] [texnansi,qx,t5,ec,t2a,t2b,t2c,greek]
+ \definefontsynonym [AntykwaTorunska-Bold] [\typescriptthree-anttb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-BoldItalic] [\typescriptthree-anttbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Light] [\typescriptthree-anttl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightItalic] [\typescriptthree-anttli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Medium] [\typescriptthree-anttm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MedItalic] [\typescriptthree-anttmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Regular] [\typescriptthree-anttr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Italic] [\typescriptthree-anttri] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBold] [\typescriptthree-anttcb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldItalic] [\typescriptthree-anttcbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLight] [\typescriptthree-anttcl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightItalic][\typescriptthree-anttcli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMedium] [\typescriptthree-anttcm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMedItalic] [\typescriptthree-anttcmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondRegular] [\typescriptthree-anttcr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondItalic] [\typescriptthree-anttcri] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska,antykwa-torunska-light,antykwa-torunska-cond,antykwa-torunska-lightcond] [texnansi,qx,t5,ec]
+ \definefontsynonym [AntykwaTorunska-BoldCap] [\typescriptthree-anttbcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-BoldItalicCap] [\typescriptthree-anttbicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightCap] [\typescriptthree-anttlcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightItalicCap] [\typescriptthree-anttlicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MediumCap] [\typescriptthree-anttmcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MedItalicCap] [\typescriptthree-anttmicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Cap] [\typescriptthree-anttrcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-ItalicCap] [\typescriptthree-anttricap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldCap] [\typescriptthree-anttcbcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldItalicCap] [\typescriptthree-anttcbicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightCap] [\typescriptthree-anttclcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightItalicCap][\typescriptthree-anttclicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMediumCap] [\typescriptthree-anttcmcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMedItalicCap] [\typescriptthree-anttcmicap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondCap] [\typescriptthree-anttcrcap] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondItalicCap] [\typescriptthree-anttcricap] [encoding=\typescriptthree]
+\stoptypescript
+
+% duplicates ? ?
+% atl: no: fallbacks for the named variants
+
+\starttypescript [serif] [antykwa-torunska,antykwa-torunska-light,antykwa-torunska-cond,antykwa-torunska-lightcond] [t2a,t2b,t2c,greek]
+ \definefontsynonym [AntykwaTorunska-BoldCap] [\typescriptthree-anttb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-BoldItalicCap] [\typescriptthree-anttbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightCap] [\typescriptthree-anttl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightItalicCap] [\typescriptthree-anttli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MediumCap] [\typescriptthree-anttm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MedItalicCap] [\typescriptthree-anttmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Cap] [\typescriptthree-anttr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-ItalicCap] [\typescriptthree-anttri] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldCap] [\typescriptthree-anttcb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldItalicCap] [\typescriptthree-anttcbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightCap] [\typescriptthree-anttcl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightItalicCap][\typescriptthree-anttcli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMediumCap] [\typescriptthree-anttcm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMedItalicCap] [\typescriptthree-anttcmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondCap] [\typescriptthree-anttcr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondItalicCap] [\typescriptthree-anttcri] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska,antykwa-torunska-light,antykwa-torunska-cond,antykwa-torunska-lightcond] [t2a,t2b,t2c]
+ \definefontsynonym [AntykwaTorunska-BoldCap] [\typescriptthree-anttb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-BoldItalicCap] [\typescriptthree-anttbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightCap] [\typescriptthree-anttl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-LightItalicCap] [\typescriptthree-anttli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MediumCap] [\typescriptthree-anttm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-MedItalicCap] [\typescriptthree-anttmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-Cap] [\typescriptthree-anttr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-ItalicCap] [\typescriptthree-anttri] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldCap] [\typescriptthree-anttcb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondBoldItalicCap] [\typescriptthree-anttcbi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightCap] [\typescriptthree-anttcl] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondLightItalicCap][\typescriptthree-anttcli] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMediumCap] [\typescriptthree-anttcm] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondMedItalicCap] [\typescriptthree-anttcmi] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondCap] [\typescriptthree-anttcr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaTorunska-CondItalicCap] [\typescriptthree-anttcri] [encoding=\typescriptthree]
+\stoptypescript
+
+% mabye no -Regular etc
+% dunny reverse of condlight lightcond
+
+\starttypescript [math] [antykwa-torunska] [default]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-Regular] [rm-anttr]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-RegularItalic] [mi-anttr]
+ \definefontsynonym [AntykwaTorunska-Math-Symbols-Regular] [sy-anttr]
+ \definefontsynonym [AntykwaTorunska-Math-Extension-Regular] [ex-anttr]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska-light] [default]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-Light] [rm-anttl]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-LightItalic] [mi-anttl]
+ \definefontsynonym [AntykwaTorunska-Math-Symbols-Light] [sy-anttl]
+ \definefontsynonym [AntykwaTorunska-Math-Extension-Light] [ex-anttr] % [ex-anttl]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska-cond] [default]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-CondRegular] [rm-anttcr]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-CondRegularItalic] [mi-anttcr]
+ \definefontsynonym [AntykwaTorunska-Math-Symbols-CondRegular] [sy-anttcr]
+ \definefontsynonym [AntykwaTorunska-Math-Extension-CondRegular] [ex-anttr]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska-lightcond] [default]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-CondLight] [rm-anttcl]
+ \definefontsynonym [AntykwaTorunska-Math-Letters-CondLightItalic] [mi-anttcl]
+ \definefontsynonym [AntykwaTorunska-Math-Symbols-CondLight] [sy-anttcl]
+ \definefontsynonym [AntykwaTorunska-Math-Extension-CondLight] [ex-anttr] % [ex-anttl]
+\stoptypescript
+
+% Antykwa Poltawskiego (GUST)
+
+\starttypescript [serif] [antykwa-poltawskiego] [texnansi,ec,8r]
+ \definefontsynonym [AntykwaPoltawskiego-Regular] [\typescriptthree-antpr] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaPoltawskiego-Bold] [\typescriptthree-antpb] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaPoltawskiego-Italic] [\typescriptthree-antpri] [encoding=\typescriptthree]
+ \definefontsynonym [AntykwaPoltawskiego-BoldItalic] [\typescriptthree-antpbi] [encoding=\typescriptthree]
+\stoptypescript
+
+% Iwona (JMN)
+
+% maybe this will change in Iwona-Math-Letters and Iwona-Math-Letters-Italic
+
+\starttypescript [sans] [iwona,iwona-light,iwona-medium] [texnansi,ec,qx,t5]
+ \definefontsynonym[Iwona-Light] [\typescriptthree-iwonal] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-Regular] [\typescriptthree-iwonar] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-Medium] [\typescriptthree-iwonam] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-Bold] [\typescriptthree-iwonab] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-Heavy] [\typescriptthree-iwonah] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-LightItalic] [\typescriptthree-iwonali] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-RegularItalic] [\typescriptthree-iwonari] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-MediumItalic] [\typescriptthree-iwonami] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-BoldItalic] [\typescriptthree-iwonabi] [encoding=\typescriptthree]
+ \definefontsynonym[Iwona-HeavyItalic] [\typescriptthree-iwonahi] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [math] [iwona] [default]
+ \definefontsynonym [Iwona-Math-Letters-Regular] [rm-iwonar]
+ \definefontsynonym [Iwona-Math-Letters-RegularItalic] [mi-iwonari]
+ \definefontsynonym [Iwona-Math-Symbols-Regular] [sy-iwonari]
+ \definefontsynonym [Iwona-Math-Extension-Regular] [ex-iwonar]
+\stoptypescript
+
+\starttypescript [math] [iwona-light] [default]
+ \definefontsynonym [Iwona-Math-Letters-Light] [rm-iwonal]
+ \definefontsynonym [Iwona-Math-Letters-LightItalic] [mi-iwonali]
+ \definefontsynonym [Iwona-Math-Symbols-Light] [sy-iwonali]
+ \definefontsynonym [Iwona-Math-Extension-Light] [ex-iwonal]
+\stoptypescript
+
+\starttypescript [math] [iwona-medium] [default]
+ \definefontsynonym [Iwona-Math-Letters-Medium] [rm-iwonam]
+ \definefontsynonym [Iwona-Math-Letters-MediumItalic] [mi-iwonami]
+ \definefontsynonym [Iwona-Math-Symbols-Medium] [sy-iwonami]
+ \definefontsynonym [Iwona-Math-Extension-Medium] [ex-iwonam]
+\stoptypescript
+
+% Kurier (JMN)
+
+\starttypescript [sans] [kurier-light,kurier,kurier-medium] [texnansi,ec,qx,t5]
+ \definefontsynonym[Kurier-Light] [\typescriptthree-kurierl] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-Regular] [\typescriptthree-kurierr] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-Medium] [\typescriptthree-kurierm] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-Bold] [\typescriptthree-kurierb] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-Heavy] [\typescriptthree-kurierh] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-LightItalic] [\typescriptthree-kurierli] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-RegularItalic] [\typescriptthree-kurierri] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-MediumItalic] [\typescriptthree-kuriermi] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-BoldItalic] [\typescriptthree-kurierbi] [encoding=\typescriptthree]
+ \definefontsynonym[Kurier-HeavyItalic] [\typescriptthree-kurierhi] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [math] [kurier] [default]
+ \definefontsynonym [Kurier-Math-Letters-Regular] [rm-kurierr]
+ \definefontsynonym [Kurier-Math-Letters-RegularItalic] [mi-kurierri]
+ \definefontsynonym [Kurier-Math-Symbols-Regular] [sy-kurierri]
+ \definefontsynonym [Kurier-Math-Extension-Regular] [ex-kurierr]
+\stoptypescript
+
+\starttypescript [math] [kurier-light] [default]
+ \definefontsynonym [Kurier-Math-Letters-Light] [rm-kurierl]
+ \definefontsynonym [Kurier-Math-Letters-LightItalic] [mi-kurierli]
+ \definefontsynonym [Kurier-Math-Symbols-Light] [sy-kurierli]
+ \definefontsynonym [Kurier-Math-Extension-Light] [ex-kurierl]
+\stoptypescript
+
+\starttypescript [math] [kurier-medium] [default]
+ \definefontsynonym [Kurier-Math-Letters-Medium] [rm-kurierm]
+ \definefontsynonym [Kurier-Math-Letters-MediumItalic] [mi-kuriermi]
+ \definefontsynonym [Kurier-Math-Symbols-Medium] [sy-kuriermi]
+ \definefontsynonym [Kurier-Math-Extension-medium] [ex-kurierm]
+\stoptypescript
+
+% Palatino (URW)
+
+\starttypescript [serif] [palatino] [texnansi,ec,8r,t5]
+ \definefontsynonym [Palatino] [\typescriptthree-uplr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Palatino-Italic] [\typescriptthree-uplri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Palatino-Bold] [\typescriptthree-uplb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Palatino-BoldItalic] [\typescriptthree-uplbi8a] [encoding=\typescriptthree]
+
+ \definefontsynonym [Palatino-Slanted] [\typescriptthree-uplr8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Palatino-BoldSlanted] [\typescriptthree-uplb8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Palatino-Caps] [\typescriptthree-uplr8a-capitalized-800] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [serif] [palatino] [qx]
+ \definefontsynonym [Palatino] [qplr] [encoding=qx]
+ \definefontsynonym [Palatino-Italic] [qplri] [encoding=qx]
+ \definefontsynonym [Palatino-Bold] [qplb] [encoding=qx]
+ \definefontsynonym [Palatino-BoldItalic] [qplbi] [encoding=qx]
+
+ \definefontsynonym [Palatino-Slanted] [Palatino-Italic]
+ \definefontsynonym [Palatino-BoldSlanted] [Palatino-BoldItalic]
+ \definefontsynonym [Palatino-Caps] [Palatino]
+\stoptypescript
+
+% bonus definitions
+
+% when these fonts are in tex live ...
+%
+% \definefontsynonym [Palatino-Caps] [TeXPalladioL-SC] [encoding=\typescriptthree]
+
+\starttypescript [serif] [palatino] [ec,texnansi,8r]
+
+ \definefontsynonym[TeXPalladioL-BoldItalicOsF][\typescriptthree-fplbij8a][encoding=\typescriptthree]
+ \definefontsynonym[TeXPalladioL-BoldOsF] [\typescriptthree-fplbj8a] [encoding=\typescriptthree]
+ \definefontsynonym[TeXPalladioL-SC] [\typescriptthree-fplrc8a] [encoding=\typescriptthree]
+ \definefontsynonym[TeXPalladioL-ItalicOsF] [\typescriptthree-fplrij8a][encoding=\typescriptthree]
+
+\stoptypescript
+
+% Palatino Math (PX)
+
+\starttypescript [math] [palatino] [all]
+ \definefontsynonym [Palatino-Roman-Upright] [pxr]
+ \definefontsynonym [Palatino-Roman-Italic] [pxi]
+ \definefontsynonym [Palatino-Roman-Slanted] [pxsl]
+ \definefontsynonym [Palatino-Roman-Caps] [pxsc]
+ \definefontsynonym [Palatino-Companion-Upright] [pcxr]
+ \definefontsynonym [Palatino-Companion-Italic] [pcxi]
+ \definefontsynonym [Palatino-Companion-Slanted] [pcxsl]
+ \definefontsynonym [Palatino-Math-Italic] [pxmi]
+ \definefontsynonym [Palatino-Math-Symbols] [pxsy]
+ \definefontsynonym [Palatino-Math-Extension] [pxex]
+ \definefontsynonym [Palatino-Math-SymbolsA] [pxsya]
+ \definefontsynonym [Palatino-Math-SymbolsB] [pxsyb]
+ \definefontsynonym [Palatino-Math-SymbolsC] [pxsyc]
+ \definefontsynonym [Palatino-Math-Italic-A] [pxmia]
+ \definefontsynonym [Palatino-Math-Extension-A] [pxexa]
+\stoptypescript
+
+% Bookman (URW)
+
+\starttypescript [serif] [bookman] [ec,texnansi,8r,t5]
+ \definefontsynonym [Bookman-Light] [\typescriptthree-ubkl8a] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-LightItalic] [\typescriptthree-ubkli8a] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-DemiBold] [\typescriptthree-ubkd8a] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-DemiBoldItalic] [\typescriptthree-ubkdi8a] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-LightSlanted] [\typescriptthree-ubkl8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-DemiBoldSlanted] [\typescriptthree-ubkd8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Bookman-Light-Caps] [\typescriptthree-ubkl8a-capitalized-800] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [serif] [bookman] [qx]
+ \definefontsynonym [Bookman-Light] [qbkr] [encoding=qx]
+ \definefontsynonym [Bookman-LightItalic] [qbkri] [encoding=qx]
+ \definefontsynonym [Bookman-DemiBold] [qbkb] [encoding=qx]
+ \definefontsynonym [Bookman-DemiBoldItalic] [qbkbi] [encoding=qx]
+
+ \definefontsynonym [Bookman-LightSlanted] [Bookman-LightItalic]
+ \definefontsynonym [Bookman-DemiBoldSlanted] [Bookman-DemiBoldItalic]
+ \definefontsynonym [Bookman-Light-Caps] [Bookman-Light]
+\stoptypescript
+
+% Chancery (URW)
+
+\starttypescript [calligraphy] [chancery] [ec,texnansi,8r]
+ \definefontsynonym [Chancery] [\typescriptthree-uzcmi8a] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [calligraphy] [chancery] [qx]
+ \definefontsynonym [Chancery] [qzcmi] [encoding=qx]
+\stoptypescript
+
+% New Century Schoolbook (URW)
+
+\starttypescript [serif] [schoolbook] [ec,texnansi,8r,t5]
+ \definefontsynonym [Schoolbook-Roman] [\typescriptthree-uncr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Italic] [\typescriptthree-uncri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Bold] [\typescriptthree-uncb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-BoldItalic] [\typescriptthree-uncbi8a] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-RomanSlanted] [\typescriptthree-uncr8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-BoldSlanted] [\typescriptthree-uncb8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Roman-Caps] [\typescriptthree-uncr8a-capitalized-800] [encoding=\typescriptthree]
+\stoptypescript
+
+% Utopia (Adobe)
+
+\starttypescript [serif] [utopia] [ec,texnansi]
+ \definefontsynonym [Utopia-Regular] [\typescriptthree-putr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-Italic] [\typescriptthree-putri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-Bold] [\typescriptthree-putb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-BoldItalic] [\typescriptthree-putbi8a] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-Slanted] [\typescriptthree-putr8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-BoldSlanted] [\typescriptthree-putb8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Utopia-Regular-Caps][\typescriptthree-putr8a-capitalized-800] [encoding=\typescriptthree]
+\stoptypescript
+
+% Charter (Bitstream)
+
+\starttypescript [serif] [charter] [ec,texnansi,8r]
+ \definefontsynonym [Charter-Roman] [\typescriptthree-bchr8a] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-Italic] [\typescriptthree-bchri8a] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-Bold] [\typescriptthree-bchb8a] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-BoldItalic] [\typescriptthree-bchbi8a] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-Slanted] [\typescriptthree-bchr8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-BoldSlanted][\typescriptthree-bchb8a-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Charter-Roman-Caps] [\typescriptthree-bchr8a-capitalized-800] [encoding=\typescriptthree]
+\stoptypescript
+
+% Whatever else we need:
+
+\starttypescript
+ \definefontsynonym [ZapfDingbats] [uzdr]
+ \definefontsynonym [RalfSmithFormalScript] [rsfs10]
+ \definefontsynonym [MartinVogel] [fmvr8x]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-exa.tex b/Master/texmf-dist/tex/context/base/type-exa.tex
new file mode 100644
index 00000000000..d08b565f477
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-exa.tex
@@ -0,0 +1,253 @@
+%D \module
+%D [ file=type-exa,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Example scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D A couple of goodies:
+
+\starttypescriptcollection[examples]
+
+\starttypescript [fallback] [texnansi,ec,qx,t5,default]
+
+ % no fontclass, so this is the fall back
+
+ \definetypeface [] [rm] [serif] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [] [ss] [sans] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [] [tt] [mono] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [] [mm] [math] [modern] [computer-modern] [encoding=\typescripttwo]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [modern] [texnansi,ec,qx,t5,default]
+
+ \definetypeface [modern] [rm] [serif] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [modern] [ss] [sans] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [modern] [tt] [mono] [modern] [computer-modern] [encoding=\typescripttwo]
+ \definetypeface [modern] [mm] [math] [modern] [computer-modern] [encoding=\typescripttwo]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [modern-base] [texnansi,ec,qx,t5,default]
+
+ \definetypeface [modern] [rm] [serif] [modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [ss] [sans] [modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [tt] [mono] [modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [mm] [math] [modern] [default] [encoding=\typescripttwo]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [modern-base] [t2a,t2b,t2c,x2]
+
+ \definetypeface [modern] [rm] [serif] [computer-modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [ss] [sans] [computer-modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [tt] [mono] [computer-modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modern] [mm] [math] [computer-modern] [default] [encoding=\typescripttwo]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [fallback,modern,modern-base] [il2]
+ \usetypescript[\typescriptone][ec]
+ \enableregime[il2]
+\stoptypescript
+\starttypescript [fallback,modern,modern-base] [pl0]
+ \usetypescript[\typescriptone][qx]
+ \enableregime[pl0]
+\stoptypescript
+
+\starttypescript [postscript] [texnansi,ec,qx,t5,uc,8r]
+
+ \definetypeface [postscript] [rm] [serif] [times] [default] [encoding=\typescripttwo]
+ \definetypeface [postscript] [ss] [sans] [helvetica] [default] [rscale=.9,encoding=\typescripttwo]
+ \definetypeface [postscript] [tt] [mono] [courier] [default] [rscale=1.1,encoding=\typescripttwo]
+ \definetypeface [postscript] [mm] [math] [times] [default]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [times] [texnansi,ec,qx,8r,t5,uc]
+
+ \definetypeface [times] [rm] [serif] [times] [default] [encoding=\typescripttwo]
+ \definetypeface [times] [ss] [sans] [helvetica] [default] [encoding=\typescripttwo,rscale=0.9]
+ \definetypeface [times] [tt] [mono] [modern] [default] [encoding=\typescripttwo,rscale=1.05]
+ \definetypeface [times] [mm] [math] [times] [default] [encoding=\typescripttwo]
+
+% \usemathcollection[default]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [palatino] [texnansi,ec,qx,8r,t5,uc]
+
+ \definetypeface [palatino] [rm] [serif] [palatino] [default] [encoding=\typescripttwo]
+ \definetypeface [palatino] [tt] [mono] [modern] [default] [encoding=\typescripttwo,rscale=1.075]
+ \definetypeface [palatino] [mm] [math] [palatino] [default] [encoding=default]
+
+% \usemathcollection[default]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+\starttypescript [fourier] [ec]
+
+ \definetypeface [fourier] [rm] [serif] [fourier] [default] [encoding=ec]
+ \definetypeface [fourier] [mm] [math] [fourier] [default] [encoding=default]
+ \definetypeface [fourier] [tt] [mono] [modern] [default] [encoding=ec,rscale=1.07]
+
+ \usemathcollection[fou]
+
+ \quittypescriptscanning
+
+\stoptypescript
+
+% \starttypescript [utopia] [ec]
+
+% \definetypeface [fourier] [rm] [serif] [fourier] [default] [encoding=ec]
+% \definetypeface [fourier] [mm] [math] [fourier] [default] [encoding=default]
+% \definetypeface [fourier] [tt] [mono] [modern] [default] [rscale=1.070,encoding=ec]
+
+% \usemathcollection[fou]
+
+% \stoptypescript
+
+\starttypescript [lucida,lucidabfm] [texnansi,ec,8r,uc]
+
+ \definetypeface [lucida] [rm] [serif] [lucida] [default] [encoding=\typescripttwo]
+ \definetypeface [lucida] [ss] [sans] [lucida] [default] [encoding=\typescripttwo]
+ \definetypeface [lucida] [tt] [mono] [lucida] [default] [encoding=\typescripttwo]
+ \definetypeface [lucida] [hw] [handwriting] [lucida] [default] [encoding=\typescripttwo]
+ \definetypeface [lucida] [cg] [calligraphy] [lucida] [default] [encoding=\typescripttwo]
+
+\stoptypescript
+
+\starttypescript [lucida] [texnansi,ec,8r]
+
+ \definetypeface [lucida] [mm] [math] [lucida] [default] [encoding=\typescripttwo]
+
+\stoptypescript
+
+\starttypescript [lucidaboldmath] [texnansi,ec,8r]
+
+ \definetypeface [lucidaboldmath] [rm] [serif] [lucida] [default] [encoding=\typescripttwo] % needed ?
+ \definetypeface [lucidaboldmath] [ss] [sans] [lucida] [default] [encoding=\typescripttwo] % needed ?
+ \definetypeface [lucidaboldmath] [tt] [mono] [lucida] [default] [encoding=\typescripttwo] % needed ?
+ \definetypeface [lucidaboldmath] [mm] [boldmath] [lucida] [default] [encoding=\typescripttwo]
+
+\stoptypescript
+
+\starttypescript [lucidabfm,lucidaboldmath] [texnansi,ec,8r]
+
+ \definetypeface [lucida] [mm] [bfmath] [lucida] [default] [encoding=\typescripttwo]
+ \definetypeface [lucidaboldmath] [mm] [bfmath] [lucida] [default] [encoding=\typescripttwo]
+
+\stoptypescript
+
+\starttypescript [lucida,lucidabfm,lucidaboldmath] [texnansi,ec,8r]
+
+ \usemathcollection[lbr]
+
+ \quittypescriptscanning % last in the row
+
+\stoptypescript
+
+% \starttypescript [serif] [hanging] [pure,normal]
+%
+% \setupfontsynonym [Serif] [handling=\typescriptthree]
+% \setupfontsynonym [SerifBold] [handling=\typescriptthree bold]
+% \setupfontsynonym [SerifSlanted] [handling=\typescriptthree slanted]
+% \setupfontsynonym [SerifItalic] [handling=\typescriptthree italic]
+% \setupfontsynonym [SerifBoldSlanted] [handling=\typescriptthree boldslanted]
+% \setupfontsynonym [SerifBoldItalic] [handling=\typescriptthree bolditalic]
+%
+% \stoptypescript
+%
+% \starttypescript [sans] [hanging] [pure,normal]
+%
+% \setupfontsynonym [Sans] [handling=\typescriptthree]
+% \setupfontsynonym [SansBold] [handling=\typescriptthree bold]
+% \setupfontsynonym [SansSlanted] [handling=\typescriptthree slanted]
+% \setupfontsynonym [SansItalic] [handling=\typescriptthree italic]
+% \setupfontsynonym [SansBoldSlanted] [handling=\typescriptthree boldslanted]
+% \setupfontsynonym [SansBoldItalic] [handling=\typescriptthree bolditalic]
+%
+% \stoptypescript
+%
+% \starttypescript [mono] [hanging] [pure,normal]
+%
+% \setupfontsynonym [Mono] [handling=\typescriptthree]
+% \setupfontsynonym [MonoBold] [handling=\typescriptthree bold]
+% \setupfontsynonym [MonoSlanted] [handling=\typescriptthree slanted]
+% \setupfontsynonym [MonoItalic] [handling=\typescriptthree italic]
+% \setupfontsynonym [MonoBoldSlanted] [handling=\typescriptthree boldslanted]
+% \setupfontsynonym [MonoBoldItalic] [handling=\typescriptthree bolditalic]
+%
+% \stoptypescript
+
+\starttypescript [serif,sans,mono] [handling,hanging,hz] [pure,normal,hz,quality]
+
+ \setupfontsynonym [\typescriptprefix\typescriptone ] [handling=\typescriptthree]
+ \setupfontsynonym [\typescriptprefix\typescriptone Bold] [handling=\typescriptthree bold]
+ \setupfontsynonym [\typescriptprefix\typescriptone Slanted] [handling=\typescriptthree slanted]
+ \setupfontsynonym [\typescriptprefix\typescriptone Italic] [handling=\typescriptthree italic]
+ \setupfontsynonym [\typescriptprefix\typescriptone BoldSlanted] [handling=\typescriptthree boldslanted]
+ \setupfontsynonym [\typescriptprefix\typescriptone BoldItalic] [handling=\typescriptthree bolditalic]
+
+\stoptypescript
+
+% handy
+
+\starttypescript [serif] [simple] [name] % bad, will be changed but in sycn with manuals that use it
+
+ \definefontsynonym [Simple] [cmvtt10]
+ \setupfontsynonym [Simple] [handling=pure]
+
+\stoptypescript
+
+\starttypescript [modernvariable] [texnansi,ec,qx,8r,t5]
+
+ \definetypeface [modernvariable] [rm] [serif] [simple] [default] [encoding=\typescripttwo]
+ \definetypeface [modernvariable] [ss] [sans] [modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modernvariable] [tt] [mono] [modern] [default] [encoding=\typescripttwo]
+ \definetypeface [modernvariable] [mm] [math] [modern] [default]
+
+\stoptypescript
+
+\starttypescript [optima] [texnansi,ec,qx]
+
+ \definetypeface[optima][ss][sans] [optima-nova][default][encoding=\typescripttwo]
+ \definetypeface[optima][rm][serif][palatino] [default][encoding=\typescripttwo]
+ \definetypeface[optima][tt][mono] [modern] [default][encoding=\typescripttwo,rscale=1.1]
+ \definetypeface[optima][mm][math] [palatino] [default][encoding=\typescripttwo]
+
+\stoptypescript
+
+\starttypescript [antykwa-torunska] [texnansi,ec,8r,uc]
+
+ \definetypeface[antykwa][rm][serif][antykwa-torunska] [default][encoding=\typescripttwo]
+ \definetypeface[antykwa][ss][sans] [modern] [default][encoding=\typescripttwo,rscale=1.05]
+ \definetypeface[antykwa][tt][mono] [modern] [default][encoding=\typescripttwo,rscale=1.1]
+ \definetypeface[antykwa][mm][math] [antykwa-torunska] [default][encoding=\typescripttwo]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-fsf.tex b/Master/texmf-dist/tex/context/base/type-fsf.tex
new file mode 100644
index 00000000000..835fb4153e9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-fsf.tex
@@ -0,0 +1,105 @@
+% run texfont from currentpath with the fonts on subpath fontsite/500
+
+% texfont --en=texnansi --ve=fontsite --co=opus type-fsf.dat
+% texfont --en=texnansi --ve=fontsite --co=typewriter type-fsf.dat
+
+\starttypescriptcollection[font site 500]
+
+\starttypescript [sans] [opus] [name]
+
+ \definefontsynonym [Sans] [Opus]
+ \definefontsynonym [SansCaps] [OpusSmCaps]
+ \definefontsynonym [SansItalic] [Opus-Italic]
+ \definefontsynonym [SansBold] [Opus-Bold]
+ \definefontsynonym [SansBoldCaps] [OpusSmCaps-Bold]
+ \definefontsynonym [SansBoldItalic] [Opus-BoldItalic]
+
+ \definefontsynonym [SansSlanted] [Opus-Slanted] % faked
+ \definefontsynonym [SansBoldSlanted] [Opus-BoldSlanted] % faked
+
+\stoptypescript
+
+\starttypescript [sans] [opus] [texnansi,ec,8r]
+
+ \definefontsynonym [Opus] [\typescriptthree-opusrg] [encoding=\typescriptthree]
+ \definefontsynonym [OpusSmCaps] [\typescriptthree-opusscrg] [encoding=\typescriptthree]
+ \definefontsynonym [Opus-Italic] [\typescriptthree-opusi] [encoding=\typescriptthree]
+ \definefontsynonym [Opus-Bold] [\typescriptthree-opusb] [encoding=\typescriptthree]
+ \definefontsynonym [Opus-BoldItalic] [\typescriptthree-opusbi] [encoding=\typescriptthree]
+ \definefontsynonym [OpusSmCaps-Bold] [\typescriptthree-opusscb] [encoding=\typescriptthree]
+
+ \definefontsynonym [Opus-Slanted] [\typescriptthree-opusrg-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Opus-BoldSlanted] [\typescriptthree-opusb-slanted-167] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [opus] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-fontsite-opus.map]
+\stoptypescript
+
+\starttypescript [mono] [typewriter] [name]
+
+ \definefontsynonym [Mono] [Typewriter]
+ \definefontsynonym [MonoItalic] [Typewriter-Italic]
+ \definefontsynonym [MonoBold] [Typewriter-Bold]
+ \definefontsynonym [MonoBoldItalic] [Typewriter-BoldItalic]
+
+ \definefontsynonym [MonoSlanted] [Typewriter-Slanted] % faked
+ \definefontsynonym [MonoBoldSlanted] [Typewriter-BoldSlanted] % faked
+
+\stoptypescript
+
+\starttypescript [mono] [typewriter] [texnansi,ec,8r]
+
+
+ \definefontsynonym [Typewriter] [\typescriptthree-typerg] [encoding=\typescriptthree]
+ \definefontsynonym [Typewriter-Italic] [\typescriptthree-typei] [encoding=\typescriptthree]
+ \definefontsynonym [Typewriter-Bold] [\typescriptthree-typeb] [encoding=\typescriptthree]
+ \definefontsynonym [Typewriter-BoldItalic] [\typescriptthree-typebi] [encoding=\typescriptthree]
+
+ \definefontsynonym [Typewriter-Slanted] [\typescriptthree-typerg-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [Typewriter-BoldSlanted] [\typescriptthree-typeb-slanted-167] [encoding=\typescriptthree]
+
+ \definefontsynonym [TypewriterCond] [\typescriptthree-typecrg]
+ \definefontsynonym [TypewriterCond-Bold] [\typescriptthree-typecb]
+
+\stoptypescript
+
+\starttypescript [map] [typewriter] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-fontsite-typewriter.map]
+\stoptypescript
+
+\starttypescript [serif] [garamond] [name]
+
+ \definefontsynonym [Serif] [FSGaramond]
+ \definefontsynonym [SerifCaps] [FSGaramondSmCaps]
+ \definefontsynonym [SerifItalic] [FSGaramond-Italic]
+ \definefontsynonym [SerifBold] [FSGaramond-Bold]
+ \definefontsynonym [SerifBoldCaps] [FSGaramondSmCaps-Bold]
+
+ \definefontsynonym [SerifSlanted] [FSGaramond-Slanted]
+ \definefontsynonym [SerifBoldSlanted] [FSGaramond-BoldSlanted]
+
+\stoptypescript
+
+\starttypescript [serif] [garamond] [texnansi,ec,8r]
+
+ \definefontsynonym [FSGaramond] [\typescriptthree-garamond] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramondSmCaps] [\typescriptthree-garasc] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramond-Italic] [\typescriptthree-garai] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramond-Bold] [\typescriptthree-garab] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramond-BoldItalic] [\typescriptthree-garabi] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramondSmCaps-Bold] [\typescriptthree-garascb] [encoding=\typescriptthree]
+
+ \definefontsynonym [FSGaramond-Slanted] [\typescriptthree-garamond-slanted-167] [encoding=\typescriptthree]
+ \definefontsynonym [FSGaramond-BoldSlanted] [\typescriptthree-garab-slanted-167] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [garamond] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-fontsite-garamond.map]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-ghz.tex b/Master/texmf-dist/tex/context/base/type-ghz.tex
new file mode 100644
index 00000000000..23f71d58378
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-ghz.tex
@@ -0,0 +1,173 @@
+% run texfont from currentpath with the fonts on subpath fontsite/500
+
+% texfont --en=texnansi --ve=linotype --co=optima type-ghz.dat
+% texfont --en=texnansi --ve=linotype --co=optima-nova type-ghz.dat
+% texfont --en=texnansi --ve=linotype --co=palatino type-ghz.dat
+
+\starttypescriptcollection[zapf collection]
+
+% zapfino
+
+\starttypescript [serif,handwriting] [zapfino] [texnansi,ec,8r] % todo: handwriting
+
+ \definefontsynonym [ZapfinoOne] [\typescriptthree-lt54223] [encoding=\typescriptthree]
+ \definefontsynonym [ZapfinoTwo] [\typescriptthree-lt54224] [encoding=\typescriptthree]
+ \definefontsynonym [ZapfinoThree] [\typescriptthree-lt54225] [encoding=\typescriptthree]
+ \definefontsynonym [ZapfinoFour] [\typescriptthree-lt54226] [encoding=\typescriptthree]
+
+ \loadmapfile[\typescriptthree-linotype-zapfino.map]
+
+\stoptypescript
+
+% \starttypescript [handwriting] [zapfino-1] \definefontsynonym [Handwriting] [ZapfinoOne] \stoptypescript
+% \starttypescript [handwriting] [zapfino-2] \definefontsynonym [Handwriting] [ZapfinoTwo] \stoptypescript
+% \starttypescript [handwriting] [zapfino-3] \definefontsynonym [Handwriting] [ZapfinoThree] \stoptypescript
+% \starttypescript [handwriting] [zapfino-4] \definefontsynonym [Handwriting] [ZapfinoFour] \stoptypescript
+
+% optima
+
+\starttypescript [sans] [optima] [name]
+
+ \definefontsynonym [Sans] [OptimaLT]
+ \definefontsynonym [SansItalic] [OptimaLT-Italic]
+ \definefontsynonym [SansBold] [OptimaLT-Bold]
+ \definefontsynonym [SansBoldItalic] [OptimaLT-BoldItalic]
+ \definefontsynonym [SansSlanted] [SansItalic]
+ \definefontsynonym [SansBoldSlanted] [SansBoldItalic]
+ \definefontsynonym [SansCaps] [Sans]
+
+\stoptypescript
+
+\starttypescript [sans] [optima,optima-nova] [texnansi,ec,8r]
+
+ \loadmapfile[\typescriptthree-linotype-optima.map]
+
+ \definefontsynonym [OptimaLT] [\typescriptthree-lte50019] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-Italic] [\typescriptthree-lte52401] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-Bold] [\typescriptthree-lte50021] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-BoldItalic] [\typescriptthree-lte54379] [encoding=\typescriptthree]
+
+ \definefontsynonym [OptimaLT-Medium] [\typescriptthree-lte53505] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-MediumItalic] [\typescriptthree-lte53506] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-DemiBold] [\typescriptthree-lte53507] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-DemiBoldItalic] [\typescriptthree-lte53508] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-Black] [\typescriptthree-lte53509] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-BlackItalic] [\typescriptthree-lte53510] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-ExtraBlack] [\typescriptthree-lte53511] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaLT-ExtraBlackItalic] [\typescriptthree-lte53512] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [optima,optima-nova] [texnansi,ec,8r]
+
+ \loadmapfile[\typescriptthree-linotype-optima.map]
+
+\stoptypescript
+
+% optima nova
+
+\starttypescript [sans] [optima-nova] [name]
+
+ \definefontsynonym [Sans] [OptimaNovaLT-Regular]
+ \definefontsynonym [SansItalic] [OptimaNovaLT-Italic]
+ \definefontsynonym [SansBold] [OptimaLT-Bold]
+ \definefontsynonym [SansBoldItalic] [OptimaLT-BoldItalic]
+ \definefontsynonym [SansSlanted] [SansItalic]
+ \definefontsynonym [SansBoldSlanted] [SansBoldItalic]
+ \definefontsynonym [SansCaps] [Sans]
+
+\stoptypescript
+
+\starttypescript [sans] [optima-nova] [texnansi,ec,8r]
+
+ \loadmapfile[\typescriptthree-linotype-optima-nova.map]
+
+ \definefontsynonym [OptimaNovaLT-Regular] [\typescriptthree-lt55483] [encoding=\typescriptthree]
+ \definefontsynonym [OptimaNovaLT-Italic] [\typescriptthree-lt55486] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [optima-nova] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-linotype-optima-nova.map]
+\stoptypescript
+
+% palatino
+
+\starttypescript [serif] [palatino] [name]
+
+ \definefontsynonym [Serif] [PalatinoLT-Roman]
+ \definefontsynonym [SerifItalic] [PalatinoLT-Italic]
+ \definefontsynonym [SerifBold] [PalatinoLT-Bold]
+ \definefontsynonym [SerifBoldItalic] [PalatinoLT-BoldItalic]
+
+ \definefontsynonym [SerifSlanted] [SerifItalic]
+ \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
+
+ \definefontsynonym [SerifCaps] [Palatino-SC]
+
+\stoptypescript
+
+\starttypescript [serif] [palatino] [texnansi,ec,8r]
+
+ \loadmapfile[\typescriptthree-linotype-palatino.map]
+
+ \definefontsynonym[PalatinoLT-Roman] [\typescriptthree-lte50001] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-Italic] [\typescriptthree-lte50002] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-Bold] [\typescriptthree-lte50003] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-BoldItalic] [\typescriptthree-lte50004] [encoding=\typescriptthree]
+
+ \definefontsynonym[PalatinoLT-Light] [\typescriptthree-lte52168] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-LightItalic] [\typescriptthree-lte52169] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-Medium] [\typescriptthree-lte52170] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-MediumItalic] [\typescriptthree-lte52171] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-Black] [\typescriptthree-lte52172] [encoding=\typescriptthree]
+ \definefontsynonym[PalatinoLT-BlackItalic] [\typescriptthree-lte52173] [encoding=\typescriptthree]
+ \definefontsynonym[Palatino-BoldItalicOsF] [\typescriptthree-pobio] [encoding=\typescriptthree]
+ \definefontsynonym[Palatino-BoldOsF] [\typescriptthree-pobos] [encoding=\typescriptthree]
+ \definefontsynonym[Palatino-ItalicOsF] [\typescriptthree-poios] [encoding=\typescriptthree]
+
+ \definefontsynonym[Palatino-SC] [\typescriptthree-posc] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [palatino] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-linotype-palatino.map]
+\stoptypescript
+
+\stoptypescriptcollection
+
+% melior
+
+\starttypescript [serif] [melior] [name]
+
+ \definefontsynonym [MeliorLT-Roman] [MeliorLT]
+
+ \definefontsynonym [Serif] [MeliorLT-Roman]
+ \definefontsynonym [SerifItalic] [MeliorLT-Italic]
+ \definefontsynonym [SerifBold] [MeliorLT-Bold]
+ \definefontsynonym [SerifBoldItalic] [MeliorLT-BoldItalic]
+
+ \definefontsynonym [SerifSlanted] [SerifItalic]
+ \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic]
+
+ \definefontsynonym [SerifCaps] [Serif]
+
+\stoptypescript
+
+\starttypescript [serif] [melior] [texnansi,ec,8r]
+
+ \loadmapfile[\typescriptthree-linotype-melior.map]
+
+ \definefontsynonym [MeliorLT] [texnansi-lte50062] [encoding=\typescriptthree]
+ \definefontsynonym [MeliorLT-Italic] [texnansi-lte50063] [encoding=\typescriptthree]
+ \definefontsynonym [MeliorLT-Bold] [texnansi-lte50064] [encoding=\typescriptthree]
+ \definefontsynonym [MeliorLT-BoldItalic] [texnansi-lte50065] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [melior] [texnansi,ec,8r]
+ \loadmapfile[\typescriptthree-linotype-melior.map]
+\stoptypescript
+
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-ini.tex b/Master/texmf-dist/tex/context/base/type-ini.tex
new file mode 100644
index 00000000000..f551c886197
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-ini.tex
@@ -0,0 +1,680 @@
+%D \module
+%D [ file=type-ini,
+%D version=2001.03.05,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Typescript Macros (ini)}
+
+%D The default fontclass is empty. We could demand always using fontclasses,
+%D and then make the calling macros simplier (always assume fontclass) but
+%D apart from downward compatibility issues, it would make global, class
+%D spanning definitions a pain. Some day we will introduce a default class.
+
+% torture test : proper typefaces (and namespace)
+%
+% \starttext
+% \usetypescript[modern][default] default: \setupbodyfont[modern] \eacute \eogonek \zcaron \acircumflexgrave
+% \usetypescript[modern][texnansi] texnansi: \setupbodyfont[modern] \eacute \eogonek \zcaron \acircumflexgrave
+% \usetypescript[modern][ec] ec: \setupbodyfont[modern] \eacute \eogonek \zcaron \acircumflexgrave
+% \usetypescript[modern][qx] qx: \setupbodyfont[modern] \eacute \eogonek \zcaron \acircumflexgrave
+% \usetypescript[modern][t5] t5: \setupbodyfont[modern] \eacute \eogonek \zcaron \acircumflexgrave
+% \stoptext
+%
+% torture test : no typeface, just definitions
+%
+% \starttext
+% {\setupbodyfont[reset] \setupbodyfont[cmr] cmr: \eacute \eogonek \zcaron \acircumflexgrave \endgraf}
+% {\setupbodyfont[reset] \setupbodyfont[plr] plr: \eacute \eogonek \zcaron \acircumflexgrave \endgraf}
+% {\setupbodyfont[reset] \setupbodyfont[csr] csr: \eacute \eogonek \zcaron \acircumflexgrave \endgraf}
+% {\setupbodyfont[reset] \setupbodyfont[vnr] vnr: \eacute \eogonek \zcaron \acircumflexgrave \endgraf}
+% {\setupbodyfont[reset] \setupbodyfont[aer] aer: \eacute \eogonek \zcaron \acircumflexgrave \endgraf}
+% \stoptext
+
+% \usetypescript [modern] [texnansi]
+%
+% normal : 1450 ms
+% exa quit : 1300 ms (150 ms)
+% preload : 825 ms (635 ms) (40-50%)
+%
+% \usetypescript [modern] [texnansi]
+% \usetypescript [palatino][texnansi]
+% \usetypescript [times] [texnansi]
+%
+% normal : 3200 ms
+% exa quit : 2700 ms ( 500 ms)
+% preload : 1300 ms (1900 ms) (60-70%)
+
+% \usetypescript [modern][\defaultencoding]
+% \usetypescript [map] [latin-modern-os] [\defaultencoding]
+% \setupbodyfont[modern]
+% test 1234 test
+
+\unprotect
+
+\def\starttypescriptcollection
+ {\dosingleempty\dostarttypescriptcollection}
+
+\def\dostarttypescriptcollection[#1]%
+ {}
+
+\def\stoptypescriptcollection
+ {}
+
+\let\typescriptfiles\empty
+
+% \unexpanded\def\usetypescriptfile[#1]%
+% {\doifelse{#1}\v!reset
+% {\let\typescriptfiles\empty}
+% {\addtocommalist{#1}\typescriptfiles}}
+
+\unexpanded\def\usetypescriptfile[#1]%
+ {\doifelse{#1}\v!reset
+ {\let\typescriptfiles\empty}
+ {\splitfiletype{#1}%
+ \addtocommalist\splitoffname\typescriptfiles}}
+
+\usetypescriptfile[\f!typeprefix exa] % some examples
+\usetypescriptfile[\f!typeprefix syn] % font file synonyms
+\usetypescriptfile[\f!typeprefix enc] % files and encodings
+\usetypescriptfile[\f!typeprefix dis] % funny name remappings
+\usetypescriptfile[\f!typeprefix siz] % specific font sizes
+\usetypescriptfile[\f!typeprefix map] % pdftex mapping
+\usetypescriptfile[\f!typeprefix spe] % special macros
+\usetypescriptfile[\f!typeprefix akb] % adobe karl berry names
+
+\beginXETEX \font
+
+ \usetypescriptfile[\f!typeprefix xtx] % xetex definitions
+
+\endXETEX
+
+\usetypescriptfile[\f!typeprefix loc] % local scripts
+
+%usetypescriptfile[\f!typeprefix pre] % predefined scripts (compatible)
+%usetypescriptfile[typeface] % project scripts
+
+\let\currenttypescripts\empty
+
+\newif\iftypescriptfound
+
+\let\@@typescriptone \empty \let\typescriptone \empty
+\let\@@typescripttwo \empty \let\typescripttwo \empty
+\let\@@typescriptthree\empty \let\typescriptthree\empty
+
+% method 2 is for Hans van der Meer
+
+\newtoks\documenttypescripts
+
+\chardef\typescriptmethod\plusone % 1: empty==all==true 2: empty==false
+\chardef\typescriptstate \plustwo % 1: process 2: store
+
+\unexpanded\def\usetypescript {\chardef\typescriptmethod\plusone\dotripleempty\dousetypescript}
+\unexpanded\def\usetypescriptexact{\chardef\typescriptmethod\plustwo\dotripleempty\dousetypescript}
+
+\def\dousetypescript[#1][#2][#3]%
+ {\expanded{\dodousetypescript[#1][#2][#3]}}
+
+\def\dodousetypescript[#1][#2][#3]% also loads type-loc, a user file
+ {\pushmacro\@@typescriptone \edef\@@typescriptone {\truetypescript{#1}}%
+ \pushmacro\@@typescripttwo \edef\@@typescripttwo {\truetypescript{#2}}%
+ \pushmacro\@@typescriptthree\edef\@@typescriptthree{\truetypescript{#3}}%
+ \pushmacro\typescriptone
+ \pushmacro\typescripttwo
+ \pushmacro\typescriptthree
+ \pushmacro\typescriptmethod
+ \pushmacro\typescriptstate \chardef\typescriptstate\plusone % process
+ \pushmacro\stoptypescript
+ \typescriptfoundfalse
+ \iftracetypescripts\writestatus\m!fonts{request: [\@@typescriptone] [\@@typescripttwo] [\@@typescriptthree]}\fi
+ \processcommacommand[\typescriptfiles]\dododousetypescript
+ \the\documenttypescripts
+ \firsttypescriptpassfalse % testen
+ \popmacro\stoptypescript
+ \popmacro\typescriptstate
+ \popmacro\typescriptmethod
+ \popmacro\typescriptthree
+ \popmacro\typescripttwo
+ \popmacro\typescriptone
+ \popmacro\@@typescriptthree
+ \popmacro\@@typescripttwo
+ \popmacro\@@typescriptone}
+
+% simple version:
+%
+% \def\dododousetypescript#1%
+% {\startreadingfile
+% \pushmacro\currenttypefile
+% \def\currenttypefile{#1}%
+% \readfile\currenttypefile\donothing\donothing
+% \popmacro\currenttypefile
+% \stopreadingfile}
+%
+% tricky version:
+
+\newconditional\preloadingtypescripts
+
+\def\preloadtypescripts{\ifproductionrun\settrue\preloadingtypescripts\fi}
+
+\def\dododousetypescript#1%
+ {\setfalse\quittingtypescript
+ \pushmacro\currenttypefile
+ \def\currenttypefile{#1}%
+ \ifconditional\preloadingtypescripts
+ % load files once, and use saved data
+ \def\loadedtypescripts{\csname\??ts:\c!file:#1\endcsname}%
+ \@EAEAEA\ifx\loadedtypescripts\relax
+ \@EAEAEA\newtoks\loadedtypescripts
+ \bgroup
+ \long\def\starttypescript##1\stoptypescript
+ {\global\loadedtypescripts\@EA{\the\loadedtypescripts
+ \starttypescript##1\stoptypescript}}%
+ \long\def\starttypescriptcollection##1\stoptypescriptcollection
+ {\global\loadedtypescripts\@EA{\the\loadedtypescripts
+ \starttypescriptcollection##1\stoptypescriptcollection}}%
+ \startreadingfile
+ \pushendofline
+ \unprotect
+ \readfile\currenttypefile\donothing\donothing
+ \protect
+ \popendofline
+ \stopreadingfile
+ \egroup
+ \fi
+ %\message{[\space\currenttypefile}%
+ \the\loadedtypescripts
+ %\message{\ifconditional\quittingtypescript quit\space\fi]}%
+ \else
+ % process files each time
+ \startreadingfile
+ \pushendofline
+ \unprotect
+ \readfile\currenttypefile\donothing\donothing
+ \protect
+ \popendofline
+ \stopreadingfile
+ \fi
+ \popmacro\currenttypefile
+ \ifconditional\quittingtypescript
+ \quitcommalist
+ \setfalse\quittingtypescript
+ \fi}
+
+\def\usetypescriptonce
+ {\dotripleempty\dousetypescriptonce}
+
+\def\dousetypescriptonce[#1][#2][#3]%
+ {\doifelseflagged{ts:#1:#2:#3}%
+ {\writestatus\m!fonts{once (#1) (#2) (#3)}}
+ {\setflag{ts:#1:#2:#3}%
+ \expanded{\dodousetypescript[#1][#2][#3]}}}
+
+% \definetypescriptsynonym[lbr][cmr]
+
+\def\definetypescriptsynonym
+ {\dodoubleempty\dodefinetypescriptsynonym}
+
+\def\dodefinetypescriptsynonym[#1][#2]%
+ {\ifsecondargument\setevalue{\??tm#1}{#2}\fi}
+
+\beginTEX
+
+\def\truetypescript#1%
+ {\expandafter\ifx\csname\??tm#1\endcsname\relax
+ #1\else\@EA\truetypescript\csname\??tm#1\endcsname
+ \fi}
+
+\endTEX
+
+\beginETEX \ifcsname
+
+\def\truetypescript#1%
+ {\ifcsname\??tm#1\endcsname
+ \@EA\truetypescript\csname\??tm#1\endcsname\else#1%
+ \fi}
+
+\endETEX
+
+% script [serif] [default] [size]
+% script [serif] [computer-modern] [size]
+% script [serif] [computer-modern] [ec]
+% script [serif] [computer-modern] [name]
+% script [serif] [computer-modern] [special]
+
+% todo, make firsttypescriptpass conditional
+
+\newif\iffirsttypescriptpass \firsttypescriptpasstrue
+
+\prependtoks\firsttypescriptpasstrue\to\everyjob
+
+\def\typescript@@all{all}
+
+\newif\iftracetypescripts
+
+\def\starttypescript
+ {\ifcase\typescriptstate
+ % 0 = skip
+ \@EA\gobbleuntil\@EA\stoptypescript
+ \or
+ % 1 = process
+ \expandafter\dostarttypescript
+ \or
+ % 2 = store
+ \expandafter\nostarttypescript
+ \else
+ % ? = skip
+ \@EA\gobbleuntil\@EA\stoptypescript
+ \fi}
+
+\long\def\nostarttypescript#1\stoptypescript
+ {\appendtoks\starttypescript#1\stoptypescript\to\documenttypescripts}
+
+\def\dostarttypescript
+ {\let\typescriptone \@@typescriptone
+ \let\typescripttwo \@@typescripttwo
+ \let\typescriptthree\@@typescriptthree
+ \let\typescriptmatch\empty
+ \doifnextcharelse[\dostarttypescriptone\dostarttypescriptall}
+
+\long\def\dostarttypescriptall
+ {\iffirsttypescriptpass
+ \expandafter\doprocesstypescript
+ \else
+ % skip this since it may do unwanted resets, like
+ % setting symbolic font names to unknown, especially
+ % in run time user type scripts
+ \expandafter\noprocesstypescript
+ \fi}
+
+\long\def\dostarttypescriptyes
+ {\ifdone
+ \typescriptfoundtrue
+ \iftracetypescripts\writestatus\m!fonts{match:\ifx\currenttypefile\relax\space *\fi \typescriptmatch}\fi
+ \expandafter\doprocesstypescript
+ \else
+ \expandafter\noprocesstypescript
+ \fi}
+
+\long\def\dostarttypescriptone
+ {\dochecktypescript\@@typescriptone\typescriptone\redostarttypescriptone}
+
+\long\def\dostarttypescripttwo
+ {\dochecktypescript\@@typescripttwo\typescripttwo\redostarttypescripttwo}
+
+\long\def\dostarttypescriptthree
+ {\dochecktypescript\@@typescriptthree\typescriptthree\redostarttypescriptthree}
+
+\long\def\redostarttypescriptone
+ {\doifnextcharelse[\dostarttypescripttwo\dostarttypescriptyes}
+
+\long\def\redostarttypescripttwo
+ {\doifnextcharelse[\dostarttypescriptthree\dostarttypescriptyes}
+
+\long\def\redostarttypescriptthree
+ {\dostarttypescriptyes}
+
+\def\doprocesstypescript
+ {\pushmacro\fontclass}
+
+\def\stoptypescript
+ {\popmacro\fontclass}
+
+\long\def\noprocesstypescript#1\stoptypescript
+ {}
+
+\let\typescriptmatch\empty
+
+\def\dochecktypescript#1#2#3[#4]% script use value next
+ {\donefalse
+ \def\@@typescriptcheck{#4}%
+ \ifx\@@typescriptcheck\empty % no longer needed / met
+ \ifcase\typescriptmethod\or\donetrue\else\donefalse\fi
+ \else\ifx#1\typescript@@all
+ \donetrue
+ \else\ifx\@@typescriptcheck\typescript@@all
+ \donetrue
+ \else\expanded{\doifcommonelse{\@@typescriptcheck}{#1}}\donetrue\donefalse\ifdone
+ \let#2\commalistelement
+ \fi\fi\fi\fi
+ \ifdone
+ \edef\typescriptmatch{\typescriptmatch\space[#4]}%
+ \expandafter#3%
+ \else
+ \expandafter\noprocesstypescript
+ \fi}
+
+%D Yet another speed up: when issued inside typescript, the call
+%D
+%D \starttyping
+%D \quittypescriptscanning
+%D \stoptyping
+%D
+%D quits further loading. For an example, see type-exa:
+
+\newconditional\quittingtypescript \setfalse\quittingtypescript
+
+\def\quittypescriptscanning{\settrue\quittingtypescript}
+
+% status
+%
+% 1 loaded
+% 2 reported
+% 3 preloaded
+
+% flags ipv \c!state, more flag values
+
+\def\dopreloadmapfile#1%
+ {\splitfiletype{#1}%
+ \writestatus\m!fonts{assuming map file: \splitoffname}%
+ \setxvalue{\splitoffname \c!state}{3}%
+ \doglobal\removefromcommalist\splitoffname\allfontmapsfiles}
+
+\def\preloadmapfile[#1]%
+ {\expanded{\processcommalist[#1]}\dopreloadmapfile}
+
+\def\loadmapfile[#1]%
+ {\expanded{\processcommalist[#1]}\loadthemapfile}
+
+% too soon, no driver known, \ifproductionrun \loadallfontmapfiles \fi}
+
+% temp hack, will become just \addto
+
+\ifx\pdftexversion\undefined
+
+ \def\loadthemapfile#1%
+ {\splitfiletype{#1}%
+ \doglobal\addtocommalist\splitoffname\allfontmapsfiles}
+
+\else\ifnum\pdftexversion<120 % no overloading
+
+ \def\loadthemapfile#1%
+ {\splitfiletype{#1}%
+ \doglobal\pretocommalist\splitoffname\allfontmapsfiles}
+
+\else
+
+ \def\loadthemapfile#1%
+ {\splitfiletype{#1}%
+ \doglobal\addtocommalist\splitoffname\allfontmapsfiles}
+
+\fi \fi
+
+\let\usedmapfile\gobbletwoarguments
+\let\usedmapline\gobbletwoarguments
+
+\def\doloadfontmapfile#1%
+ {\ifundefined{#1\c!state}%
+ \writestatus\m!fonts{using map file: #1}%
+ \immediatewriteutilitycommand{\usedmapfile{=}{#1}}%
+ \doloadmapfile{=}{#1.\f!fontmapextension}% +/add =/replace -/remove
+ \setxvalue{#1\c!state}{1}%
+ \fi}
+
+\def\doreportfontmapfile#1%
+ {\ifundefined{#1\c!state}%
+ \writestatus\m!fonts{needs map file: #1}%
+ \setxvalue{#1\c!state}{2}%
+ \fi}
+
+\def\loadallfontmapfiles
+ {%\message{[\allfontmapsfiles]}%
+ \ifconditional\resettingmapfile
+ \writestatus\m!fonts{resetting map file list}%
+ \doresetmapfilelist
+ \global\setfalse\resettingmapfile
+ \fi
+ \ifx\allfontmapsfiles\empty \else
+ \ifautoloadmapfiles
+ \processcommacommand[\allfontmapsfiles]\doloadfontmapfile
+ \else
+ \processcommacommand[\allfontmapsfiles]\doreportfontmapfile
+ \fi
+ \forgetmapfiles
+ \fi}
+
+\def\loadmapline
+ {\dodoubleempty\dodoloadmapline}
+
+\def\dodoloadmapline[#1][#2]%
+ {\loadallfontmapfiles % ! ! !
+ \ifsecondargument
+ \immediatewriteutilitycommand{\usedmapline{#1}{#2}}%
+ \doloadmapline{#1}{#2}% special
+ \else
+ \loadmapline[=][#1]%
+ %\immediatewriteutilitycommand{\usedmapline{=}{#2}}%
+ %\doloadmapline{=}{#1}% special
+ \fi}
+
+% since this is driver dependent, and since we may set map files
+% before an output format is defined, we need to postpone it; we
+% cannot use starttext as hook because an output switch can be part
+% of a style; an alternative is to no longer permit driver switching
+% after the first \starttext, but that will break compatibility
+% because \startcomponent ... \environment ... is pretty legal.
+
+% the map directives need to end up in the right place in the stream
+
+% \appendtoks \loadallfontmapfiles \to \everyPDFximage
+% \appendtoks \loadallfontmapfiles \to \everystarttext
+% \appendtoks \loadallfontmapfiles \to \everybeforepagebody
+
+\everybeforeshipout \expandafter
+ {\expandafter\appendtoks
+ \expandafter\loadallfontmapfiles
+ \expandafter\to
+ \expandafter\pageboundsettings
+ \the\everybeforeshipout}
+
+\newif\ifautoloadmapfiles
+
+\let\allfontmapsfiles\empty
+
+\def\forgetmapfiles
+ {\globallet\allfontmapsfiles\empty}
+
+\newconditional\resettingmapfile
+
+\def\resetmapfiles
+ {\global\settrue\resettingmapfile}
+
+\def\disablemapfiles
+ {\resetmapfiles
+ \forgetmapfiles}
+
+%D A handy shortcut:
+
+% \definetypescriptprefix[serif][Serif]
+% \definetypescriptprefix[sans] [Sans]
+% \definetypescriptprefix[mono] [Mono]
+%
+%\starttypescript [serif,sans,mono] [handling,hanging,hz] [pure,normal,hz,quality]
+% \setupfontsynonym [\typescriptprefix\typescriptone] [handling=\typescriptthree]
+% \stoptypescript
+
+\def\definetypescriptprefix
+ {\dodoubleargument\dodefinetypescriptprefix}
+
+\def\dodefinetypescriptprefix[#1][#2]%
+ {\setvalue{\??ts::#1}{#2}}
+
+% without testing:
+%
+% \def\typescriptprefix#1%
+% {\csname\??ts::#1\endcsname}
+%
+% with testing:
+
+\def\typescriptprefix#1%
+ {\executeifdefined{\??ts::#1}{#1}}
+
+% defining typefaces:
+%
+% \definetypeface [#1:joke] [#2:rm]
+% \definetypeface [#1:joke] [#2:rm] [#3:...]
+% \definetypeface [#1:joke] [#2:rm] [#3:serif] [#4:lucida] [#5:size] [#6:...]
+
+\def\definetypeface
+ {\dosixtupleargument\dodefinetypeface}
+
+\def\tsvar#1#2% \executeifdefined{\??ts#1}{#2}
+ {\@EA\ifx\csname\??ts#1\endcsname\empty
+ #2%
+ \else
+ \csname\??ts#1\endcsname
+ \fi}
+
+% #1=main #2=rm #3=serif #4=fontname #5=size #6=settings
+
+\def\typefaceencoding{\defaultencoding}
+
+% \def\dodefinetypeface[#1][#2][#3][#4][#5][#6]%
+% {\dododefinetypeface[#1][#2]%
+% \iffifthargument % sixth is optional
+% % \getparameters[\??ts][rscale=1,\s!encoding=\defaultencoding,#6]
+% % we need to expand since in #6 there can be a \typescripttwo
+% \expanded{\getparameters[\??ts][\s!rscale=1,\s!encoding=\defaultencoding,#6]}%
+% % toch niet \expanded{\getparameters[\??ts][\s!rscale=1,\s!encoding=\s!default,#6]}%
+% \pushmacro\relativefontsize
+% \pushmacro\typefaceencoding
+% \pushmacro\fontclass
+% \let\relativefontsize\@@tsrscale
+% \let\typefaceencoding\@@tsencoding
+% \setcurrentfontclass{#1}
+% \saverelativefontsize{#2}{\relativefontsize}% fall back
+% %\writestatus{typeface}{[#1] [#2] [#3] [#4]}
+% \writestatus\m!fonts{[#1] [#2] [#3] [#4] / \typefaceencoding}%
+% %\usetypescript[map][\typefaceencoding]% latest versions of pdftex can load after first page
+% \usetypescript[#3,map][#4][name,default,\typefaceencoding,special]% is default needed
+% \usetypescript[#3][#5][size]%
+% \popmacro\fontclass
+% \popmacro\typefaceencoding
+% \popmacro\relativefontsize
+% \else\iffourthargument
+% \definetypeface[#1][#2][#3][#4][\s!default]%
+% \else\ifthirdargument
+% \getparameters[\??tf#1#2][#3]%
+% \fi\fi\fi}
+
+% we can use \rawgetparameters or \rawgeteparameters
+
+\def\dodefinetypeface[#1][#2][#3][#4][#5][#6]%
+ {\dododefinetypeface[#1][#2]%
+ \iffifthargument % sixth is optional
+ % we need to expand since in #6 there can be a \typescripttwo
+ \expanded{\getparameters[\??ts][\s!rscale=\plusone,\s!encoding=\defaultencoding,#6]}% \geteparameters
+ \pushmacro\relativefontsize
+ \pushmacro\typefaceencoding
+ \pushmacro\fontclass
+ \let\relativefontsize\@@tsrscale
+ \let\typefaceencoding\@@tsencoding
+ \setcurrentfontclass{#1}%
+ \saverelativefontsize{#2}{\relativefontsize}% fall back
+ \iftracetypescripts\writestatus\m!fonts{define: [#1] [#2] [#3] [#4] / \typefaceencoding}\fi
+ %\usetypescript[map][\typefaceencoding]% latest versions of pdftex can load after first page
+ \usetypescript[#3,\t!map][#4][\t!name,\t!default,\typefaceencoding,\t!special]% is default needed
+ \usetypescript[#3][#5][\t!size]%
+ \popmacro\fontclass
+ \popmacro\typefaceencoding
+ \popmacro\relativefontsize
+ \else\iffourthargument
+ \definetypeface[#1][#2][#3][#4][\s!default]%
+ \else\ifthirdargument
+ \getparameters[\??tf#1#2][#3]%
+ \fi\fi\fi}
+
+\def\dododefinetypeface[#1][#2]% saveguard against redefinition
+ {\doifsomething{#1}
+ {\doifundefined{\??tf#1\s!default}{\setgvalue{\??tf#1\s!default}{#2}}%
+ \doifundefined{#1}{\unexpanded\setgvalue{#1}{\switchtotypeface[#1][#2]}}}}
+
+\def\setuptypeface% [class] [settings]
+ {\doquadrupleempty\doswitchtotypeface[\setupbodyfont][\fontclass]}
+
+\unexpanded\def\switchtotypeface% [class] [settings]
+ {\doquadrupleempty\doswitchtotypeface[\switchtobodyfont][\globalfontclass]}
+
+\def\doswitchtotypeface[#1][#2][#3][#4]%
+ {%\doifinsetelse{\s!default,\v!reset}{#3}
+ % {\setcurrentfontclass\empty}
+ % {\setcurrentfontclass{#3}}%
+ \setcurrentfontclass{#3}%
+ \let\globalfontclass#2%
+ \iffourthargument
+ #1[#4]%
+ \else\ifx\fontclass\empty
+ #1[\c!rm]%
+ \else
+ \doifdefinedelse{\??tf\fontclass\s!default}
+ {#1[\getvalue{\??tf\fontclass\s!default}]}
+ {#1[\c!rm]}%
+ \fi \fi
+ \ifmmode\mr\else\tf\fi} % needed ?
+
+\def\usetypefile[#1]% recurses on path !
+ {\readfile{\f!typeprefix#1}\donothing\donothing}
+
+%D For backward compatibility we reimplement the font file
+%D loading macro.
+
+\ifx\normaldoreadfontdefinitionfile\undefined
+ \let\normaldoreadfontdefinitionfile\doreadfontdefinitionfile
+\fi
+
+% old and obsolete
+%
+% \def\doreadfontdefinitionfile#1#2% #1 = set/switch state
+% {\ifundefined{\??tf#2\c!default}%
+% \pushmacro\fontclass
+% \setcurrentfontclass\empty
+% \pushmacro\@@typescriptone \edef\@@typescriptone {\truetypescript{#2}}%
+% \pushmacro\@@typescripttwo \let\@@typescripttwo \empty
+% \pushmacro\@@typescriptthree\let\@@typescriptthree\empty
+% \typescriptfoundfalse
+% \dododousetypescript{\f!typeprefix pre}%
+% \popmacro\@@typescriptthree
+% \popmacro\@@typescripttwo
+% \popmacro\@@typescriptone
+% \iftypescriptfound \else
+% \normaldoreadfontdefinitionfile{#1}{#2}%
+% \fi
+% \setcurrentfontclass\empty
+% \popmacro\fontclass
+% \else\ifcase#1\relax
+% \switchtotypeface[#2]%
+% \else
+% \setuptypeface[#2]%
+% \fi\fi}
+%
+% new and obeying fontclasses (but still obsolete)
+
+\def\doreadfontdefinitionfile#1#2% #1 = set/switch state
+ {\ifundefined{\??tf#2\c!default}%
+ \pushmacro\starttypescript
+ \scratchtoks\emptytoks
+ % locate downward compatibility definitions, one argument !
+ \long\def\starttypescript[##1]##2\stoptypescript
+ {\doif{##1}{#2}{\scratchtoks{##2}}}
+ \startreadingfile
+ \readfile{\f!typeprefix pre}\donothing\donothing
+ \stopreadingfile
+ \popmacro\starttypescript
+ \the\scratchtoks
+ \else\ifcase#1\relax
+ \switchtotypeface[#2]%
+ \else
+ \setuptypeface[#2]%
+ \fi\fi}
+
+\fetchruntimecommand \typetypescript {\f!typeprefix\s!run}
+
+% \usetypescript [berry] [ec]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/type-map.tex b/Master/texmf-dist/tex/context/base/type-map.tex
new file mode 100644
index 00000000000..2c87d8ad2ba
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-map.tex
@@ -0,0 +1,170 @@
+%D \module
+%D [ file=type-map,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Mapfile scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\starttypescriptcollection[map files]
+
+%D This one plays safe:
+
+\starttypescript [map] [base] [all]
+ \loadmapfile[original-base.map]
+ \loadmapfile[ec-base.map]
+ \loadmapfile[texnansi-base.map]
+ \loadmapfile[8r-base.map]
+ \loadmapfile[qx-base.map]
+ \loadmapfile[t5-base.map]
+\stoptypescript
+
+\starttypescript [map] [base] [all]
+ \loadmapfile[original-ams-base.map]
+% \loadmapfile[original-ams-cmr.map]
+ \loadmapfile[original-ams-euler.map]
+ \loadmapfile[original-public-lm.map]
+\stoptypescript
+
+% This is the base map file, load it to be sure.
+
+\starttypescript [map] [all] [ec,8r,texnansi,qx,t5]
+ \loadmapfile[original-base.map]
+ \loadmapfile[\typescriptthree-base.map]
+\stoptypescript
+
+% if we were in full control, we could have
+%
+% \starttypescript [berry] [ec]
+% \loadmapfile[ec-base.map]
+% \stoptypescript
+
+% cmr and related
+
+\starttypescript [map] [cmr,lm,lmr]
+ \loadmapfile[original-public-lm.map]
+ \loadmapfile[original-ams-base.map]
+ \loadmapfile[original-ams-euler.map]
+\stoptypescript
+
+% cyrillic
+
+\starttypescript [map] [computer-modern] [t2a,t2b,t2c,x2]
+ \loadmapfile[subset-cmsuper-\typescriptthree.map]
+ \loadmapfile[cm-super-\typescriptthree.map]
+\stoptypescript
+
+% latin modern (watch the unfortunate \quote {lm-encoding} order
+% in the name; for the moment we ship copies of the map files.
+
+\starttypescript [map] [modern,modern-vari,modern-cond,computer-modern,latin-modern,latin-modern-vari,latin-modern-cond,] [ec,texnansi,qx,t5]
+% \loadmapfile[lm-\typescriptthree.map] % maybe some day
+ \loadmapfile[\typescriptthree-public-lm.map]
+\stoptypescript
+
+% \usetypescript [map] [latin-modern-os] [ec] % lm is loaded under ec regime
+% \starttext
+% Is onze Frans nu 41, 52, 63, 74, 85 of 96 jaar \quote {old}?
+% \stoptext
+
+\starttypescript [map] [latin-modern-os] [ec,texnansi,qx,t5]
+ \loadmapfile[\typescriptthree-os-public-lm.map]
+\stoptypescript
+
+% the next applies to texfont generated metrics
+
+\starttypescript [map] [utopia] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-adobe-utopia.map]
+\stoptypescript
+
+\starttypescript [map] [charter] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-bitstrea-charter.map]
+\stoptypescript
+
+% \starttypescript [map] [antykwa-torunska] [ec,texnansi,t5,8r]
+% \loadmapfile[\typescriptthree-public-antt.map]
+% \stoptypescript
+
+\starttypescript [map] [antykwa-torunska,antykwa-torunska-light,antykwa-torunska-cond,antykwa-torunska-lightcond] [texnansi,ec,qx,t5,t2a,t2b,t2c,default]
+ \loadmapfile[\typescriptthree-antt.map]
+ \loadmapfile[rm-antt.map]
+ \loadmapfile[mi-antt.map]
+ \loadmapfile[sy-antt.map]
+ \loadmapfile[ex-antt.map]
+\stoptypescript
+
+\starttypescript [map] [antykwa-poltawskiego] [ec,texnansi,qx,t5]
+ \loadmapfile[\typescriptthree-public-antp.map]
+\stoptypescript
+
+\starttypescript [map] [iwona,iwona-light,iwona-medium,iwona-heavy] [ec,texnansi,qx,t5]
+ \loadmapfile[\typescriptthree-iwona.map]
+ \loadmapfile[rm-iwona.map]
+ \loadmapfile[mi-iwona.map]
+ \loadmapfile[sy-iwona.map]
+ \loadmapfile[ex-iwona.map]
+\stoptypescript
+
+\starttypescript [map] [kurier,kurier-light,kurier-medium,kurier-heavy] [ec,texnansi,qx,t5,default]
+ \loadmapfile[\typescriptthree-kurier.map]
+ \loadmapfile[rm-kurier.map]
+ \loadmapfile[mi-kurier.map]
+ \loadmapfile[sy-kurier.map]
+ \loadmapfile[ex-kurier.map]
+\stoptypescript
+
+\starttypescript [map] [bookman] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-bookman.map]
+\stoptypescript
+
+\starttypescript [map] [courier] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-courier.map]
+\stoptypescript
+
+\starttypescript [map] [helvetica] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-helvetica.map]
+\stoptypescript
+
+\starttypescript [map] [palatino] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-palatino.map]
+% \loadmapfile[\typescriptthree-public-pfl.map]
+\stoptypescript
+
+\starttypescript [map] [times] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-times.map]
+\stoptypescript
+
+\starttypescript [map] [chancery] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-zapfchan.map]
+\stoptypescript
+
+\starttypescript [map] [schoolbook] [ec,texnansi,t5,8r]
+ \loadmapfile[\typescriptthree-urw-ncntrsbk.map]
+\stoptypescript
+
+% once i can be sure that the map files are in the tree, i will
+% use those instead of original (too many variants anyway)
+
+\starttypescript [map] [palatino] [default,ec,texnansi,t5,8r]
+ \loadmapfile[original-youngryu-px.map]
+\stoptypescript
+
+\starttypescript [map] [times] [default,ec,texnansi,t5,8r]
+ \loadmapfile[original-youngryu-tx.map]
+\stoptypescript
+
+% to do: maybe original, maybe not
+
+\starttypescript [map] [fourier] [ec]
+ \loadmapfile[fourier.map]
+ \loadmapfile[fourier-utopia-expert.map]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-msw.tex b/Master/texmf-dist/tex/context/base/type-msw.tex
new file mode 100644
index 00000000000..985aa9c17e8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-msw.tex
@@ -0,0 +1,89 @@
+%D \module
+%D [ file=type-msw,
+%D version=2005.02.04,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Microsoft Windows Fonts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \usetypescriptfile[type-msw]
+%
+% \definetypeface[verdana][ss][sans] [verdana] [default][encoding=texnansi]
+% \definetypeface[verdana][rm][serif][palatino][default][encoding=texnansi,rscale=1.1]
+% \definetypeface[verdana][mm][math] [palatino][default][encoding=texnansi,rscale=1.1]
+% \definetypeface[verdana][tt][mono] [modern] [default][encoding=texnansi,rscale=1.25]
+%
+% \setupbodyfont[verdana] \showfontstrip
+%
+% \startlines
+% {\rm test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}}
+% {\ss test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}}
+% {\tt test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}}
+% \stoplines
+
+\starttypescriptcollection[microsoft windows]
+
+% verdana
+
+\starttypescript [sans] [verdana] [name]
+
+ \setups[font:fallback:sans]
+
+ \definefontsynonym [Sans] [Verdana]
+ \definefontsynonym [SansBold] [Verdana-Bold]
+ \definefontsynonym [SansItalic] [Verdana-Italic]
+ \definefontsynonym [SansBoldItalic] [Verdana-BoldItalic]
+
+\stoptypescript
+
+\starttypescript [sans] [verdana] [texnansi]
+
+ \definefontsynonym [Verdana] [\typescriptthree-verdana] [encoding=\typescriptthree]
+ \definefontsynonym [Verdana-Bold] [\typescriptthree-verdanab] [encoding=\typescriptthree]
+ \definefontsynonym [Verdana-Italic] [\typescriptthree-verdanai] [encoding=\typescriptthree]
+ \definefontsynonym [Verdana-BoldItalic] [\typescriptthree-verdanaz] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [verdana] [texnansi]
+
+ \loadmapfile[texnansi-microsoft-verdana.map]
+
+\stoptypescript
+
+% arial
+
+\starttypescript [sans] [arial] [name]
+
+ \setups[font:fallback:sans]
+
+ \definefontsynonym [Sans] [ArialMT]
+ \definefontsynonym [SansBold] [Arial-BoldMT]
+ \definefontsynonym [SansItalic] [Arial-ItalicMT]
+ \definefontsynonym [SansBoldItalic] [Arial-BoldItalicMT]
+
+\stoptypescript
+
+\starttypescript [sans] [arial] [texnansi]
+
+ \definefontsynonym [ArialMT] [\typescriptthree-arial] [encoding=\typescriptthree]
+ \definefontsynonym [Arial-BoldMT] [\typescriptthree-arialbd] [encoding=\typescriptthree]
+ \definefontsynonym [Arial-ItalicMT] [\typescriptthree-ariali] [encoding=\typescriptthree]
+ \definefontsynonym [Arial-BoldItalicMT] [\typescriptthree-arialbi] [encoding=\typescriptthree]
+
+\stoptypescript
+
+\starttypescript [map] [arial] [texnansi]
+
+ \loadmapfile[texnansi-microsoft-arial.map]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-old.tex b/Master/texmf-dist/tex/context/base/type-old.tex
new file mode 100644
index 00000000000..881deeefeb0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-old.tex
@@ -0,0 +1,320 @@
+%D \module
+%D [ file=type-old,
+%D version=2005.09.07, % moved from type-*.tex
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Ghosts from the Past,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\endinput
+
+% \starttypescript[all][modern,latin-modern,computer-modern][pl0]
+%
+% \definefontsynonym[pl0-lmb10] [plb10] [encoding=pl0]
+% \definefontsynonym[pl0-lmbo10] [plbsl10] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx10] [plbx10] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx12] [plbx12] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx5] [plbx5] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx6] [plbx6] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx7] [plbx7] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx8] [plbx8] [encoding=pl0]
+% \definefontsynonym[pl0-lmbx9] [plbx9] [encoding=pl0]
+% \definefontsynonym[pl0-lmbxi10] [plbxti10] [encoding=pl0]
+% \definefontsynonym[pl0-lmbxo10] [plbxsl10] [encoding=pl0]
+% \definefontsynonym[pl0-lmcsc10] [plcsc10] [encoding=pl0]
+% \definefontsynonym[pl0-lmcsco10][plcscsl10][encoding=pl0]
+% \definefontsynonym[pl0-lmr10] [plr10] [encoding=pl0]
+% \definefontsynonym[pl0-lmr12] [plr12] [encoding=pl0]
+% \definefontsynonym[pl0-lmr17] [plr17] [encoding=pl0]
+% \definefontsynonym[pl0-lmr5] [plr5] [encoding=pl0]
+% \definefontsynonym[pl0-lmr6] [plr6] [encoding=pl0]
+% \definefontsynonym[pl0-lmr7] [plr7] [encoding=pl0]
+% \definefontsynonym[pl0-lmr8] [plr8] [encoding=pl0]
+% \definefontsynonym[pl0-lmr9] [plr9] [encoding=pl0]
+% \definefontsynonym[pl0-lmri10] [plti10] [encoding=pl0]
+% \definefontsynonym[pl0-lmri12] [plti12] [encoding=pl0]
+% \definefontsynonym[pl0-lmri7] [plti7] [encoding=pl0]
+% \definefontsynonym[pl0-lmri8] [plti8] [encoding=pl0]
+% \definefontsynonym[pl0-lmri9] [plti9] [encoding=pl0]
+% \definefontsynonym[pl0-lmro10] [plsl10] [encoding=pl0]
+% \definefontsynonym[pl0-lmro12] [plsl12] [encoding=pl0]
+% \definefontsynonym[pl0-lmro8] [plsl8] [encoding=pl0]
+% \definefontsynonym[pl0-lmro9] [plsl9] [encoding=pl0]
+% \definefontsynonym[pl0-lmss10] [plss10] [encoding=pl0]
+% \definefontsynonym[pl0-lmss12] [plss12] [encoding=pl0]
+% \definefontsynonym[pl0-lmss17] [plss17] [encoding=pl0]
+% \definefontsynonym[pl0-lmss8] [plss8] [encoding=pl0]
+% \definefontsynonym[pl0-lmss9] [plss9] [encoding=pl0]
+% \definefontsynonym[pl0-lmssbo10][plssbi10] [encoding=pl0]
+% \definefontsynonym[pl0-lmssbx10][plssbx10] [encoding=pl0]
+% \definefontsynonym[pl0-lmssdc10][plssdc10] [encoding=pl0]
+% \definefontsynonym[pl0-lmssdo10][plssdi10] [encoding=pl0]
+% \definefontsynonym[pl0-lmsso10] [plssi10] [encoding=pl0]
+% \definefontsynonym[pl0-lmsso12] [plssi12] [encoding=pl0]
+% \definefontsynonym[pl0-lmsso17] [plssi17] [encoding=pl0]
+% \definefontsynonym[pl0-lmsso8] [plssi8] [encoding=pl0]
+% \definefontsynonym[pl0-lmsso9] [plssi9] [encoding=pl0]
+% \definefontsynonym[pl0-lmssq8] [plssq8] [encoding=pl0]
+% \definefontsynonym[pl0-lmssqbo8][plssqbi8] [encoding=pl0]
+% \definefontsynonym[pl0-lmssqbx8][plssqb8] [encoding=pl0]
+% \definefontsynonym[pl0-lmssqo8] [plssqi8] [encoding=pl0]
+% \definefontsynonym[pl0-lmtcsc10][pltcsc10] [encoding=pl0]
+% \definefontsynonym[pl0-lmtt10] [pltt10] [encoding=pl0]
+% \definefontsynonym[pl0-lmtt12] [pltt12] [encoding=pl0]
+% \definefontsynonym[pl0-lmtt8] [pltt8] [encoding=pl0]
+% \definefontsynonym[pl0-lmtt9] [pltt9] [encoding=pl0]
+% \definefontsynonym[pl0-lmtti10] [pltti10] [encoding=pl0]
+% \definefontsynonym[pl0-lmtto10] [plsltt10] [encoding=pl0]
+% \definefontsynonym[pl0-lmvtt10] [plvtt10] [encoding=pl0]
+% \definefontsynonym[pl0-lmvtto10][plvtti10] [encoding=pl0]
+%
+% \stoptypescript
+
+% \starttypescript[all][modern,latin-modern,computer-modern][il2]
+%
+% \definefontsynonym[il2-lmb10] [csb10] [encoding=il2]
+% \definefontsynonym[il2-lmbo10] [csbsl10] [encoding=il2]
+% \definefontsynonym[il2-lmbx10] [csbx10] [encoding=il2]
+% \definefontsynonym[il2-lmbx12] [csbx12] [encoding=il2]
+% \definefontsynonym[il2-lmbx5] [csbx5] [encoding=il2]
+% \definefontsynonym[il2-lmbx6] [csbx6] [encoding=il2]
+% \definefontsynonym[il2-lmbx7] [csbx7] [encoding=il2]
+% \definefontsynonym[il2-lmbx8] [csbx8] [encoding=il2]
+% \definefontsynonym[il2-lmbx9] [csbx9] [encoding=il2]
+% \definefontsynonym[il2-lmbxi10] [csbxti10] [encoding=il2]
+% \definefontsynonym[il2-lmbxo10] [csbxsl10] [encoding=il2]
+% \definefontsynonym[il2-lmcsc10] [cscsc10] [encoding=il2]
+% \definefontsynonym[il2-lmcsco10][cscscls10][encoding=il2]
+% \definefontsynonym[il2-lmr10] [csr10] [encoding=il2]
+% \definefontsynonym[il2-lmr12] [csr12] [encoding=il2]
+% \definefontsynonym[il2-lmr17] [csr17] [encoding=il2]
+% \definefontsynonym[il2-lmr5] [csr5] [encoding=il2]
+% \definefontsynonym[il2-lmr6] [csr6] [encoding=il2]
+% \definefontsynonym[il2-lmr7] [csr7] [encoding=il2]
+% \definefontsynonym[il2-lmr8] [csr8] [encoding=il2]
+% \definefontsynonym[il2-lmr9] [csr9] [encoding=il2]
+% \definefontsynonym[il2-lmri10] [csti10] [encoding=il2]
+% \definefontsynonym[il2-lmri12] [csti12] [encoding=il2]
+% \definefontsynonym[il2-lmri7] [csti7] [encoding=il2]
+% \definefontsynonym[il2-lmri8] [csti8] [encoding=il2]
+% \definefontsynonym[il2-lmri9] [csti9] [encoding=il2]
+% \definefontsynonym[il2-lmro10] [cssl10] [encoding=il2]
+% \definefontsynonym[il2-lmro12] [cssl12] [encoding=il2]
+% \definefontsynonym[il2-lmro8] [cssl8] [encoding=il2]
+% \definefontsynonym[il2-lmro9] [cssl9] [encoding=il2]
+% \definefontsynonym[il2-lmss10] [csss10] [encoding=il2]
+% \definefontsynonym[il2-lmss12] [csss12] [encoding=il2]
+% \definefontsynonym[il2-lmss17] [csss17] [encoding=il2]
+% \definefontsynonym[il2-lmss8] [csss8] [encoding=il2]
+% \definefontsynonym[il2-lmss9] [csss9] [encoding=il2]
+% \definefontsynonym[il2-lmssbo10][csssbi10] [encoding=il2]
+% \definefontsynonym[il2-lmssbx10][csssbx10] [encoding=il2]
+% \definefontsynonym[il2-lmssdc10][csssdc10] [encoding=il2]
+% \definefontsynonym[il2-lmssdo10][csssdi10] [encoding=il2]
+% \definefontsynonym[il2-lmsso10] [csssi10] [encoding=il2]
+% \definefontsynonym[il2-lmsso12] [csssi12] [encoding=il2]
+% \definefontsynonym[il2-lmsso17] [csssi17] [encoding=il2]
+% \definefontsynonym[il2-lmsso8] [csssi8] [encoding=il2]
+% \definefontsynonym[il2-lmsso9] [csssi9] [encoding=il2]
+% \definefontsynonym[il2-lmssq8] [csssq8] [encoding=il2]
+% \definefontsynonym[il2-lmssqbo8][csssqbi8] [encoding=il2]
+% \definefontsynonym[il2-lmssqbx8][csssqb8] [encoding=il2]
+% \definefontsynonym[il2-lmssqo8] [csssqi8] [encoding=il2]
+% \definefontsynonym[il2-lmtcsc10][cstcsc10] [encoding=il2]
+% \definefontsynonym[il2-lmtt10] [cstt10] [encoding=il2]
+% \definefontsynonym[il2-lmtt12] [cstt12] [encoding=il2]
+% \definefontsynonym[il2-lmtt8] [cstt8] [encoding=il2]
+% \definefontsynonym[il2-lmtt9] [cstt9] [encoding=il2]
+% \definefontsynonym[il2-lmtti10] [cstti10] [encoding=il2]
+% \definefontsynonym[il2-lmtto10] [cssltt10] [encoding=il2]
+% \definefontsynonym[il2-lmvtt10] [csvtt10] [encoding=il2]
+% \definefontsynonym[il2-lmvtto10][csvtti10] [encoding=il2]
+%
+% \stoptypescript
+
+% \starttypescript[all][modern,latin-modern,computer-modern][t5]
+%
+% \definefontsynonym[t5-lmb10] [vnb10] [encoding=t5]
+% \definefontsynonym[t5-lmbo10] [vnbsl10] [encoding=t5]
+% \definefontsynonym[t5-lmbx10] [vnbx10] [encoding=t5]
+% \definefontsynonym[t5-lmbx12] [vnbx12] [encoding=t5]
+% \definefontsynonym[t5-lmbx5] [vnbx5] [encoding=t5]
+% \definefontsynonym[t5-lmbx6] [vnbx6] [encoding=t5]
+% \definefontsynonym[t5-lmbx7] [vnbx7] [encoding=t5]
+% \definefontsynonym[t5-lmbx8] [vnbx8] [encoding=t5]
+% \definefontsynonym[t5-lmbx9] [vnbx9] [encoding=t5]
+% \definefontsynonym[t5-lmbxi10] [vnbxti10] [encoding=t5]
+% \definefontsynonym[t5-lmbxo10] [vnbxsl10] [encoding=t5]
+% \definefontsynonym[t5-lmcsc10] [vncsc10] [encoding=t5]
+% \definefontsynonym[t5-lmcsco10][vncscsl10][encoding=t5]
+% \definefontsynonym[t5-lmr10] [vnr10] [encoding=t5]
+% \definefontsynonym[t5-lmr12] [vnr12] [encoding=t5]
+% \definefontsynonym[t5-lmr17] [vnr17] [encoding=t5]
+% \definefontsynonym[t5-lmr5] [vnr5] [encoding=t5]
+% \definefontsynonym[t5-lmr6] [vnr6] [encoding=t5]
+% \definefontsynonym[t5-lmr7] [vnr7] [encoding=t5]
+% \definefontsynonym[t5-lmr8] [vnr8] [encoding=t5]
+% \definefontsynonym[t5-lmr9] [vnr9] [encoding=t5]
+% \definefontsynonym[t5-lmri10] [vnti10] [encoding=t5]
+% \definefontsynonym[t5-lmri12] [vnti12] [encoding=t5]
+% \definefontsynonym[t5-lmri7] [vnti7] [encoding=t5]
+% \definefontsynonym[t5-lmri8] [vnti8] [encoding=t5]
+% \definefontsynonym[t5-lmri9] [vnti9] [encoding=t5]
+% \definefontsynonym[t5-lmro10] [vnsl10] [encoding=t5]
+% \definefontsynonym[t5-lmro12] [vnsl12] [encoding=t5]
+% \definefontsynonym[t5-lmro8] [vnsl8] [encoding=t5]
+% \definefontsynonym[t5-lmro9] [vnsl9] [encoding=t5]
+% \definefontsynonym[t5-lmss10] [vnss10] [encoding=t5]
+% \definefontsynonym[t5-lmss12] [vnss12] [encoding=t5]
+% \definefontsynonym[t5-lmss17] [vnss17] [encoding=t5]
+% \definefontsynonym[t5-lmss8] [vnss8] [encoding=t5]
+% \definefontsynonym[t5-lmss9] [vnss9] [encoding=t5]
+% \definefontsynonym[t5-lmssbo10][vnssbi10] [encoding=t5]
+% \definefontsynonym[t5-lmssbx10][vnssbx10] [encoding=t5]
+% \definefontsynonym[t5-lmssdc10][vnssdc10] [encoding=t5]
+% \definefontsynonym[t5-lmssdo10][vnssdi10] [encoding=t5]
+% \definefontsynonym[t5-lmsso10] [vnssi10] [encoding=t5]
+% \definefontsynonym[t5-lmsso12] [vnssi12] [encoding=t5]
+% \definefontsynonym[t5-lmsso17] [vnssi17] [encoding=t5]
+% \definefontsynonym[t5-lmsso8] [vnssi8] [encoding=t5]
+% \definefontsynonym[t5-lmsso9] [vnssi9] [encoding=t5]
+% \definefontsynonym[t5-lmssq8] [vnssq8] [encoding=t5]
+% \definefontsynonym[t5-lmssqbo8][vnssqbi8] [encoding=t5]
+% \definefontsynonym[t5-lmssqbx8][vnssqb8] [encoding=t5]
+% \definefontsynonym[t5-lmssqo8] [vnssqi8] [encoding=t5]
+% \definefontsynonym[t5-lmtcsc10][vntcsc10] [encoding=t5]
+% \definefontsynonym[t5-lmtt10] [vntt10] [encoding=t5]
+% \definefontsynonym[t5-lmtt12] [vntt12] [encoding=t5]
+% \definefontsynonym[t5-lmtt8] [vntt8] [encoding=t5]
+% \definefontsynonym[t5-lmtt9] [vntt9] [encoding=t5]
+% \definefontsynonym[t5-lmtti10] [vntti10] [encoding=t5]
+% \definefontsynonym[t5-lmtto10] [vnsltt10] [encoding=t5]
+% \definefontsynonym[t5-lmvtt10] [vnvtt10] [encoding=t5]
+% \definefontsynonym[t5-lmvtto10][vnvtti10] [encoding=t5]
+%
+% \stoptypescript
+
+% \starttypescript [cmr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [aer]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,ec]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [csr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,il2]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [plr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,pl0]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [vnr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,t5]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [map] [il2,csr]
+% \loadmapfile[original-public-csr.map]
+% \stoptypescript
+
+% \starttypescript [map] [pl0,plr]
+% \loadmapfile[original-public-plr.map]
+% \stoptypescript
+
+% \starttypescript [map] [vnr]
+% \loadmapfile[original-public-vnr.map]
+% \stoptypescript
+
+% \starttypescript [map] [il2,csr]
+% \loadmapfile[il2-public-lm.map]
+% \stoptypescript
+
+% \starttypescript [map] [pl0,plr]
+% \loadmapfile[pl0-public-lm.map]
+% \stoptypescript
+
+% \starttypescript [map] [t5,vnr]
+% \loadmapfile[t5-public-lm.map]
+% \stoptypescript
+
+% support for alternative shapes has been removed from latin modern
+%
+% \starttypescript [map] [latin-modern-var] [ec,texnansi,qx,t5,pl0,il2]
+% \loadmapfile[\typescriptthree-var-exclusive-public-lm.map]
+% \stoptypescript
+
+% \starttypescript [map] [cmr]
+% \loadmapfile[original-ams-cmr.map]
+% \loadmapfile[original-ams-euler.map]
+% \stoptypescript
+% \starttypescript [map] [lm,lmr]
+% \loadmapfile[original-public-lm.map]
+% \stoptypescript
+
+% per 20050201 we moved to latin modern for plr/csr/vnr
+%
+% \starttypescript [map] [base] [all]
+% \loadmapfile[original-public-plr.map]
+% \loadmapfile[original-public-csr.map]
+% \loadmapfile[original-public-vnr.map]
+% \stoptypescript
+
+% \starttypescript [cmr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [plr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,pl0]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [csr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,il2]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [aer]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,ec]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [vnr]
+% \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,t5]
+% \usemathcollection[default]
+% \stoptypescript
+
+% \starttypescript [ant]
+% \usetypescript [serif] [antykwa-torunska] [name,\defaultencoding]
+% \usetypescript [serif] [default] [size]
+% \usetypescript [all] [antykwa-torunska] [\defaultencoding]
+% \stoptypescript
+
+% \starttypescript [ppl]
+% \usetypescript [serif] [palatino] [name,\defaultencoding]
+% \usetypescript [serif] [default] [size]
+% \usetypescript [all] [palatino] [\defaultencoding]
+% \stoptypescript
+
+% %D With thanks to Berthold Horn from YandY for providing me
+% %D evaluation copies of the MathTimePlus fonts.
+%
+% \starttypescript [tim]
+% \usetypescript [math] [times] [all]
+% \usetypescript [math] [default] [size]
+% \usemathcollection[tim]
+% \usetypescript [all] [times] [\defaultencoding]
+% \stoptypescript
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-omg.tex b/Master/texmf-dist/tex/context/base/type-omg.tex
new file mode 100644
index 00000000000..606b8449b65
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-omg.tex
@@ -0,0 +1,204 @@
+%D \module
+%D [ file=type-omg,
+%D version=2002.05.15,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Basic \OMEGA\ Gamma Definitions,
+%D author={Idris Samawi Hamid, Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA-ADE, Idris Samawi Hamid}]
+%
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D I need to document this module a bit. See \type {m-gamma}
+%D for more information.
+
+\definestyle [normalvariant] [\nv] [] % so we can get ucvtt (Unicode Variable Typewriter)
+
+%D omarab:
+
+\starttypescriptcollection[omega]
+
+\starttypescript [naskh] [omega] [name]
+
+ \definefontsynonym [OmegaArabic] [omarab]
+ \definefontsynonym [OmegaArabic-Bold] [omarabb]
+
+ \definefontsynonym [Naskh] [OmegaArabic]
+ \definefontsynonym [NaskhBold] [OmegaArabic-Bold]
+
+\stoptypescript
+
+\starttypescript [naskh] [omega] [size]
+
+ \definebodyfont
+ [20.7pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt]
+ [rm]
+ [tf=Naskh sa 1,
+ bf=NaskhBold sa 1,
+ it=Naskh sa 1,
+ sl=Naskh sa 1,
+ bi=NaskhBold sa 1,
+ bs=NaskhBold sa 1,
+ sc=Naskh sa 1]
+
+\usetypescript [math] [computer-modern] [size]
+
+\stoptypescript
+
+\starttypescript [OmegaArab]
+
+ \definebodyfontenvironment
+ [omarb]
+ [default]
+ [interlinespace=3ex]
+
+ \definetypeface [omarb] [rm] [naskh] [omega] [omega]
+
+\stoptypescript
+
+%D omlgc:
+
+\starttypescript [serif] [omega] [name]
+
+ \definefontsynonym [OmegaSerif] [omlgc]
+ \definefontsynonym [OmegaSerif-Bold] [omlgcb]
+ \definefontsynonym [OmegaSerif-Italic] [omlgci]
+ \definefontsynonym [OmegaSerif-Slanted] [omlgci]
+ \definefontsynonym [OmegaSerif-BoldItalic] [omlgcbi]
+ \definefontsynonym [OmegaSerif-BoldSlanted][omlgcbi]
+ \definefontsynonym [OmegaSerif-Caps] [omlgc]
+
+ \definefontsynonym [Serif] [OmegaSerif]
+ \definefontsynonym [SerifBold] [OmegaSerif-Bold]
+ \definefontsynonym [SerifItalic] [OmegaSerif-Italic]
+ \definefontsynonym [SerifSlanted] [OmegaSerif-Slanted]
+ \definefontsynonym [SerifBoldItalic] [OmegaSerif-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [OmegaSerif-BoldSlanted]
+ \definefontsynonym [SerifCaps] [OmegaSerif-Caps]
+
+\stoptypescript
+
+\starttypescript [mono] [omega] [name]
+
+ \definefontsynonym [OmegaMono] [uctt10]
+ \definefontsynonym [OmegaMono-Italic] [ucitt10]
+ \definefontsynonym [OmegaMono-Slanted] [ucsltt10]
+ \definefontsynonym [OmegaMono-Bold] [uctt10]
+ \definefontsynonym [OmegaMono-BoldItalic] [ucitt10]
+ \definefontsynonym [OmegaMono-BoldSlanted] [ucsltt10]
+ \definefontsynonym [OmegaMono-Caps] [uctt10]
+ \definefontsynonym [OmegaMono-Variable] [ucvtt10]
+
+ \definefontsynonym [Mono] [OmegaMono]
+ \definefontsynonym [MonoBold] [OmegaMono-Bold]
+ \definefontsynonym [MonoItalic] [OmegaMono-Italic]
+ \definefontsynonym [MonoSlanted] [OmegaMono-Slanted]
+ \definefontsynonym [MonoBoldItalic] [OmegaMono-BoldItalic]
+ \definefontsynonym [MonoBoldSlanted] [OmegaMono-BoldSlanted]
+ \definefontsynonym [MonoCaps] [OmegaMono-Caps]
+ \definefontsynonym [MonoVariable] [OmegaMono-Variable]
+
+\stoptypescript
+
+\starttypescript [serif] [omega] [size]
+
+ \definebodyfont
+ [20.7pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt]
+ [rm]
+ [tf=Serif sa 1,
+ bf=SerifBold sa 1,
+ it=SerifItalic sa 1,
+ sl=SerifSlanted sa 1,
+ bi=SerifBoldItalic sa 1,
+ bs=SerifBoldSlanted sa 1,
+ sc=SerifCaps sa 1]
+
+\usetypescript [math,sans] [computer-modern] [size]
+
+\stoptypescript
+
+%D In order to get default Unicode Variable Typewriter,
+%D uncomment the first \type {\definebodyfont} and then
+%D comment the rest of this typescript.
+
+\starttypescript [mono] [omega] [size]
+
+% \definebodyfont
+% [20.7pt,17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt]
+% [rm]
+% [tf=MonoVariable sa 1,
+% bf=MonoBold sa 1
+% it=MonoItalic sa 1,
+% sl=MonoSlanted sa 1,
+% bi=MonoBoldItali sa 1,
+% bs=MonoBoldSlanted sa 1,
+% sc=MonoCaps sa 1]
+
+ \definebodyfont
+ [20.7pt,17.3pt,14.4pt,12pt,11pt]
+ [tt]
+ [tf=uctt12 sa 1,
+ bf=uctt12 sa 1,
+ it=ucitt10 sa 1,
+ sl=ucsltt10 sa 1,
+ bi=ucitt10 sa 1,
+ bs=ucsltt10 sa 1,
+ sc=uctt10 sa 1,
+ nv=ucvtt10 sa 1]
+
+ \definebodyfont
+ [10pt]
+ [tt]
+ [tf=uctt10 at 10pt,
+ bf=uctt10 at 10pt,
+ it=ucitt10 at 10pt,
+ sl=ucsltt10 at 10pt,
+ bi=ucitt10 at 10pt,
+ bs=ucsltt10 at 10pt,
+ sc=uctt10 at 10pt,
+ nv=ucvtt10 at 10pt]
+
+ \definebodyfont
+ [9pt]
+ [tt]
+ [tf=uctt9 at 9pt,
+ bf=uctt9 at 9pt,
+ it=ucitt10 at 9pt,
+ sl=ucsltt10 at 9pt,
+ bi=ucitt10 at 9pt,
+ bs=ucsltt10 at 9pt,
+ sc=uctt10 at 9pt,
+ nv=ucvtt10 at 9pt]
+
+ \definebodyfont
+ [8pt,7pt,6pt,5pt,4pt]
+ [tt]
+ [tf=uctt8 sa 1,
+ bf=uctt8 sa 1,
+ it=ucitt10 sa 1,
+ sl=ucsltt10 sa 1,
+ bi=ucitt10 sa 1,
+ bs=ucsltt10 sa 1,
+ sc=uctt10 sa 1,
+ nv=ucvtt10 sa 1]
+
+\stoptypescript
+
+\starttypescript [OmegaLGC]
+
+ \definebodyfontenvironment
+ [omlgc]
+ [default]
+ [interlinespace=2.8ex]
+
+ \definetypeface [omlgc] [rm] [serif] [omega] [omega]
+ \definetypeface [omlgc] [tt] [mono] [omega] [omega]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-pre.tex b/Master/texmf-dist/tex/context/base/type-pre.tex
new file mode 100644
index 00000000000..dd7feb443b4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-pre.tex
@@ -0,0 +1,252 @@
+%D \module
+%D [ file=type-pre,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Compatibility scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This file is obsolete. We now have latin modern and proper
+%D typescripts. Forget about this file.
+
+%D This file defines some typescripts that simulate the pre-typescript way
+%D of defining fonts. This file will not be extended.
+
+\starttypescriptcollection[previous]
+
+%D The Computer Modern Roman is derived from the Monotype~8a
+%D Times Roman. In this module, that is loaded by default, we
+%D define all relevant alternatives.
+
+\starttypescript [cmr]
+ \usetypescript[modern][default]
+ \setupbodyfont[modern]
+\stoptypescript
+
+%D This script remaps the default Computer Modern Font Files
+%D onto the EC ones, so that hyphenations work well. (The proper
+%D latin modern ec variants have replaed the ae ones.)
+
+\starttypescript [aer]
+ \usetypescript[modern][ec]
+ \setupbodyfont[modern]
+ %\enableregime[ec]
+\stoptypescript
+
+%D This script defines the Computer Modern Roman with a pseudo kind
+%D of iso latin 2 encoding.
+
+\starttypescript [csr]
+ \usetypescript[modern][ec]
+ \setupbodyfont[modern]
+ \enableregime[il2]
+\stoptypescript
+
+%D This script defines the Computer Modern Roman with a
+%D polish encoding.
+
+\starttypescript [plr]
+ \usetypescript[modern][qx]
+ \setupbodyfont[modern]
+ \enableregime[pl0]
+\stoptypescript
+
+%D Vietnamese.
+
+\starttypescript [vnr]
+ \usetypescript[modern][t5]
+ \setupbodyfont[modern]
+\stoptypescript
+
+%D Cyrillic alternatives are available under the symbolic
+%D name \type {cyr}.
+
+\starttypescript [cyr]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,cyr]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [lh-ec]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,ec]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [lh-t2a]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,t2a]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [lh-t2b]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,t2b]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [lh-t2c]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,t2c]
+ \usemathcollection [default]
+\stoptypescript
+
+\starttypescript [lh-x2]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,x2]
+ \usemathcollection [default]
+\stoptypescript
+
+\starttypescript [lh-lcy]
+ \usetypescript [serif,sans,mono,math] [computer-modern,latin-modern] [default,name,size,lcy]
+ \usemathcollection [default]
+\stoptypescript
+
+%D Here we implement the symbol fonts as provided by the
+%D American Mathematical Society. The names of these symbols
+%D can be found in The Joy of \TeX\ by M.~Spivak.
+
+% \starttypescript [ams]
+% \usetypescript [math] [ams] [all]
+% \usemathcollection[default]
+% \stoptypescript
+
+%D The Concrete Modern Roman is just an alternative Computer
+%D Modern Roman.
+
+% \starttypescript [con]
+% \usetypescript [serif] [concrete] [all]
+% \usemathcollection[default]
+% \stoptypescript
+
+%D The Euler Fonts are designed by Herman Zapf and can be
+%D used with the Concrete Fonts defined elsewhere.
+
+% \starttypescript [eul]
+% \usetypescript [math] [euler] [all]
+% \usemathcollection[eul]
+% \stoptypescript
+
+%D The Lucida Bright fonts are both good looking and and
+%D complete. These fonts have prebuilt accented characters,
+%D which means that we use another encoding vector: \YandY\
+%D texnansi. These fonts are a good illustration that a 12
+%D point bodyfont is indeed never that size. The Lucida Bright
+%D fonts come in one design size.
+
+% \starttypescript [lbr]
+% \usetypescript [serif,sans,mono,math,calligraphy,handwriting] [lucida] [name,special,\defaultencoding]
+% \usetypescript [serif,sans,mono,math,calligraphy,handwriting] [default] [size]
+% \usemathcollection[lbr]
+% \usetypescript [all] [lucida] [\defaultencoding]
+% \stoptypescript
+
+\starttypescript [lbr]
+ \usetypescript[lucida][\defaultencoding]
+\stoptypescript
+
+%D Times
+
+\starttypescript [tim]
+ \usetypescript [times] [\defaultencoding]
+ \setupbodyfont [times]
+\stoptypescript
+
+%D The Antikwa Torunska font family is a rather nice
+%D and subtle one. Although primary meant for the polish
+%D language, it can be used for other languages as well.
+
+\starttypescript [ant]
+ \usetypescript [antykwa-torunska] [\defaultencoding]
+ \setupbodyfont [antykwa,rm]
+\stoptypescript
+
+%D This script defines the Standard Adobe Courier fonts.
+
+% \starttypescript [pcr]
+% \usetypescript [mono] [courier] [name,\defaultencoding]
+% \usetypescript [mono] [default] [size]
+% \usetypescript [all] [courier] [\defaultencoding]
+% \stoptypescript
+
+\starttypescript [pcr]
+ \usetypescript [postscript] [\defaultencoding]
+ \setupbodyfont [postscript,tt]
+\stoptypescript
+
+%D This script defines the Standard Adobe Helvetica fonts.
+
+% \starttypescript [phv]
+% \usetypescript [sans] [helvetica] [name,\defaultencoding]
+% \usetypescript [sans] [default] [size]
+% \usetypescript [all] [helvetica] [\defaultencoding]
+% \stoptypescript
+
+\starttypescript [phv]
+ \usetypescript [postscript] [\defaultencoding]
+ \setupbodyfont [postscript,ss]
+\stoptypescript
+
+%D This script defines the Standard Adobe Times fonts.
+
+% \starttypescript [ptm]
+% \usetypescript [serif] [times] [name,\defaultencoding]
+% \usetypescript [serif] [default] [size]
+% \usetypescript [all] [times] [\defaultencoding]
+% \stoptypescript
+
+\starttypescript [ptm]
+ \usetypescript [postscript] [\defaultencoding]
+ \setupbodyfont [postscript,rm]
+\stoptypescript
+
+%D This script loads the Adobe Times Roman, Helvetica and
+%D Courier.
+
+% \starttypescript [pos]
+% \usetypescript [serif] [times] [name,\defaultencoding]
+% \usetypescript [sans] [helvetica] [name,\defaultencoding]
+% \usetypescript [mono] [courier] [name,\defaultencoding]
+% \usetypescript [serif,sans,mono] [default] [size]
+% \usetypescript [all] [times,helvetica,courier] [\defaultencoding]
+% \stoptypescript
+
+\starttypescript [pos]
+ \usetypescript [postscript] [\defaultencoding]
+ \setupbodyfont [postscript]
+\stoptypescript
+
+%D This script defines the Palatino font.
+
+\starttypescript [ppl]
+ \usetypescript [palatino] [\defaultencoding]
+ \setupbodyfont [palatino]
+\stoptypescript
+
+%D The following scripts fake the old \type {font-ber} and
+%D alike files.
+
+\starttypescript[fil]
+ % fake to prevent loading font-fil.tex and signal 'done'
+\stoptypescript
+
+%D But for old time sake we provide:
+
+\starttypescript[ber]
+ \usetypescript [berry] [ec,t5] % could be [all]
+\stoptypescript
+
+\stoptypescriptcollection
+
+%D Special scripts:
+
+\unprotect
+
+\starttypescriptcollection[special scripts]
+
+ \starttypescript[chi] \readfile{\f!fontprefix chi}\donothing\donothing \stoptypescript
+ \starttypescript[arb] \readfile{\f!fontprefix arb}\donothing\donothing \stoptypescript
+ \starttypescript[heb] \readfile{\f!fontprefix heb}\donothing\donothing \stoptypescript
+
+\stoptypescriptcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/type-run.tex b/Master/texmf-dist/tex/context/base/type-run.tex
new file mode 100644
index 00000000000..5070c791e4c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-run.tex
@@ -0,0 +1,52 @@
+%D \module
+%D [ file=type-run,
+%D version=2001.04.20,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Runtime Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\gdef\typetypescript
+ {\dotripleempty\dotypetypescript}
+
+\gdef\dotypetypescript[#1][#2][#3]%
+ {\bgroup
+ \def\dochecktypescript##1##2% script use
+ {\doifelsenothing{##1##2}
+ {\donetrue}
+ {\ExpandBothAfter\doifcommonelse{##1}{##2}\donetrue\donefalse}}
+ \edef\typescriptone {\truetypescript{#1}}%
+ \edef\typescripttwo {\truetypescript{#2}}%
+ \edef\typescriptthree{\truetypescript{#3}}%
+ \def\starttypescript
+ {\bgroup
+ \obeylines % else we loose the first line due to lookahead
+ \dotripleempty\dostarttypescript}
+ \def\dostarttypescript[##1][##2][##3]%
+ {\long\def\next####1\stoptypescript{\egroup}
+ \dochecktypescript{##1}\typescriptone \ifdone
+ \dochecktypescript{##2}\typescripttwo \ifdone
+ \dochecktypescript{##3}\typescriptthree\ifdone
+ \def\next%
+ {\def\stoptypescript%
+ {\egroup\type{\stoptypescript}}
+ % what follows now is quite ugly
+ \skipfirstverbatimlinefalse
+ \processdisplayverbatim{\stoptypescript}%
+ \type{\starttypescript}
+ \doifsomething{##1}{\type{[##1]}}
+ \doifsomething{##2}{\type{[##2]}}
+ \doifsomething{##3}{\type{[##3]}}}
+ \fi\fi\fi
+ \next}
+ \processcommacommand[\typescriptfiles]\dodousetypescript
+ \egroup}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/type-siz.tex b/Master/texmf-dist/tex/context/base/type-siz.tex
new file mode 100644
index 00000000000..6a2e35b30a6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-siz.tex
@@ -0,0 +1,849 @@
+%D \module
+%D [ file=type-siz,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Sizing scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\starttypescriptcollection[size]
+
+\starttypescript [serif] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [rm] [default]
+\stoptypescript
+
+\starttypescript [sans] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [ss] [default]
+\stoptypescript
+
+\starttypescript [mono] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [tt] [default]
+\stoptypescript
+
+\starttypescript [math,boldmath] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [mm] [default]
+\stoptypescript
+
+\starttypescript [bfmath] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [mm] [bfmath]
+\stoptypescript
+
+\starttypescript [handwriting] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [hw] [default]
+\stoptypescript
+
+\starttypescript [calligraphy] [default] [size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [cg] [default]
+\stoptypescript
+
+\starttypescript [casual] [default] [size] % maps onto rm !
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [rm] [default]
+\stoptypescript
+
+\starttypescript [all] [dtp] [size]
+
+ \definebodyfontenvironment
+ [4pt]
+ [\s!text=4pt,\s!script=4pt,\s!scriptscript=4pt,
+ \c!x=4pt,\c!xx=4pt,\c!big=6pt,\c!small=4pt]
+
+ \definebodyfontenvironment
+ [5pt]
+ [\s!text=5pt,\s!script=5pt,\s!scriptscript=5pt,
+ \c!x=5pt,\c!xx=5pt,\c!big=7pt,\c!small=5pt]
+
+ \definebodyfontenvironment
+ [6pt]
+ [\s!text=6pt,\s!script=5pt,\s!scriptscript=5pt,
+ \c!x=5pt,\c!xx=5pt,\c!big=8pt,\c!small=5pt]
+
+ \definebodyfontenvironment
+ [7pt]
+ [\s!text=7pt,\s!script=6pt,\s!scriptscript=5pt,
+ \c!x=6pt,\c!xx=5pt,\c!big=9pt,\c!small=5pt]
+
+ \definebodyfontenvironment
+ [8pt]
+ [\s!text=8pt,\s!script=6pt,\s!scriptscript=5pt,
+ \c!x=6pt,\c!xx=5pt,\c!big=10pt,\c!small=6pt]
+
+ \definebodyfontenvironment
+ [9pt]
+ [\s!text=9pt,\s!script=7pt,\s!scriptscript=5pt,
+ \c!x=7pt,\c!xx=5pt,\c!big=11pt,\c!small=7pt]
+
+ \definebodyfontenvironment
+ [10pt]
+ [\s!text=10pt,\s!script=7pt,\s!scriptscript=5pt,
+ \c!x=8pt,\c!xx=6pt,\c!big=12pt,\c!small=8pt]
+
+ \definebodyfontenvironment
+ [11pt]
+ [\s!text=11pt,\s!script=8pt,\s!scriptscript=6pt,
+ \c!x=9pt,\c!xx=7pt,\c!big=13pt,\c!small=9pt]
+
+ \definebodyfontenvironment
+ [12pt]
+ [\s!text=12pt,\s!script=9pt,\s!scriptscript=7pt,
+ \c!x=10pt,\c!xx=8pt,\c!big=14pt,\c!small=10pt]
+
+ \definebodyfontenvironment
+ [13pt]
+ [\s!text=13pt,\s!script=10pt,\s!scriptscript=8pt,
+ \c!x=11pt,\c!xx=9pt,\c!big=16pt,\c!small=11pt]
+
+ \definebodyfontenvironment
+ [14pt]
+ [\s!text=14pt,\s!script=10pt,\s!scriptscript=7pt,
+ \c!x=12pt,\c!xx=10pt,\c!big=16pt,\c!small=12pt]
+
+ \definebodyfontenvironment
+ [16pt]
+ [\s!text=16pt,\s!script=12pt,\s!scriptscript=9pt,
+ \c!x=13pt,\c!xx=11pt,\c!big=18pt,\c!small=14pt]
+
+ % suboptimal math sizes
+
+ \definebodyfontenvironment
+ [18pt]
+ [\s!text=18pt,\s!script=16pt,\s!scriptscript=14pt,
+ \c!x=16pt,\c!xx=14pt,\c!big=22pt,\c!small=16pt]
+
+ \definebodyfontenvironment
+ [22pt]
+ [\s!text=22pt,\s!script=22pt,\s!scriptscript=18pt,
+ \c!x=18pt,\c!xx=16pt,\c!big=28pt,\c!small=18pt]
+
+ \definebodyfontenvironment
+ [28pt]
+ [\s!text=28pt,\s!script=22pt,\s!scriptscript=18pt,
+ \c!x=22pt,\c!xx=18pt,\c!big=28pt,\c!small=22pt]
+
+\stoptypescript
+
+\starttypescript [serif] [dtp] [size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [rm] [default]
+\stoptypescript
+
+\starttypescript [sans] [dtp] [size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [ss] [default]
+\stoptypescript
+
+\starttypescript [mono] [dtp] [size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [tt] [default]
+\stoptypescript
+
+\starttypescript [math,boldmath] [dtp] [size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [mm] [default]
+\stoptypescript
+
+% cmr
+
+\starttypescript [serif] [computer-modern] [size]
+
+ \definebodyfont [12pt] [rm]
+ [tf=cmr12,
+ bf=cmbx12,
+ it=cmti12,
+ sl=cmsl12,
+ bi=cmbxti10 at 12pt,
+ bs=cmbxsl10 at 12pt,
+ sc=cmcsc10 at 12pt]
+
+ \definebodyfont [11pt] [rm]
+ [tf=cmr10 at 11pt,
+ bf=cmbx10 at 11pt,
+ sl=cmsl10 at 11pt,
+ it=cmti10 at 11pt,
+ bi=cmbxti10 at 11pt,
+ bs=cmbxsl10 at 11pt,
+ sc=cmcsc10 at 11pt]
+
+ \definebodyfont [10pt] [rm]
+ [tf=cmr10,
+ bf=cmbx10,
+ it=cmti10,
+ sl=cmsl10,
+ bi=cmbxti10,
+ bs=cmbxsl10,
+ sc=cmcsc10]
+
+ \definebodyfont [9pt] [rm]
+ [tf=cmr9,
+ bf=cmbx9,
+ it=cmti9,
+ sl=cmsl9,
+ bi=cmbxti10 at 9pt,
+ bs=cmbxsl10 at 9pt,
+ sc=cmcsc10 at 9pt]
+
+ \definebodyfont [8pt] [rm]
+ [tf=cmr8,
+ bf=cmbx8,
+ it=cmti8,
+ sl=cmsl8,
+ bi=cmbxti10 at 8pt,
+ bs=cmbxsl10 at 8pt,
+ sc=cmcsc10 at 8pt]
+
+ \definebodyfont [7pt] [rm]
+ [tf=cmr7,
+ bf=cmbx7,
+ it=cmti10 at 7pt,
+ sl=cmsl10 at 7pt,
+ bi=cmbxti10 at 7pt,
+ bs=cmbxsl10 at 7pt,
+ sc=cmcsc10 at 7pt]
+
+ \definebodyfont [6pt] [rm]
+ [tf=cmr6,
+ bf=cmbx6,
+ it=cmti10 at 6pt,
+ sl=cmsl10 at 6pt,
+ bi=cmbxti10 at 6pt,
+ bs=cmbxsl10 at 6pt,
+ sc=cmcsc10 at 6pt]
+
+ \definebodyfont [5pt] [rm]
+ [tf=cmr5,
+ bf=cmbx5,
+ it=cmti10 at 5pt,
+ sl=cmsl10 at 5pt,
+ bi=cmbxti10 at 5pt,
+ bs=cmbxsl10 at 5pt,
+ sc=cmcsc10 at 5pt]
+
+ \definebodyfont [4pt] [rm]
+ [tf=cmr10 at 4pt,
+ bf=cmbx10 at 4pt,
+ it=cmti10 at 4pt,
+ sl=cmsl10 at 4pt,
+ bi=cmbxti10 at 4pt,
+ bs=cmbxsl10 at 4pt,
+ sc=cmr10 at 4pt]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [rm]
+ [tf=cmr12 sa 1,
+ bf=cmbx12 sa 1,
+ it=cmti12 sa 1,
+ sl=cmsl12 sa 1,
+ bi=cmbxti10 sa 1,
+ bs=cmbxsl10 sa 1,
+ sc=cmcsc10 sa 1]
+
+\stoptypescript
+
+\starttypescript [sans] [computer-modern] [size]
+
+ \definebodyfont [12pt] [ss]
+ [tf=cmss12,
+ bf=cmssbx10 at 12pt,
+ it=cmssi12,
+ sl=cmssi12,
+ bi=cmssbx10 at 12pt,
+ bs=cmssbx10 at 12pt,
+ sc=cmss10 at 12pt]
+
+ \definebodyfont [11pt] [ss]
+ [tf=cmss10 at 11pt,
+ bf=cmssbx10 at 11pt,
+ it=cmssi10 at 11pt,
+ sl=cmssi10 at 11pt,
+ bi=cmssbx10 at 11pt,
+ bs=cmssbx10 at 11pt,
+ sc=cmss10 at 11pt]
+
+ \definebodyfont [10pt] [ss]
+ [tf=cmss10,
+ bf=cmssbx10,
+ it=cmssi10,
+ sl=cmssi10,
+ bi=cmssbx10,
+ bs=cmssbx10,
+ sc=cmss10]
+
+ \definebodyfont [9pt] [ss]
+ [tf=cmss9,
+ bf=cmssbx10 at 9pt,
+ it=cmssi9,
+ sl=cmssi9,
+ bi=cmssbx10 at 9pt,
+ bs=cmssbx10 at 9pt,
+ sc=cmss9]
+
+ \definebodyfont [8pt] [ss]
+ [tf=cmss8,
+ bf=cmssbx10 at 8pt,
+ it=cmssi8,
+ sl=cmssi8,
+ bi=cmssbx10 at 8pt,
+ bs=cmssbx10 at 8pt,
+ sc=cmss8]
+
+ \definebodyfont [7pt] [ss]
+ [tf=cmss10 at 7pt,
+ bf=cmssbx10 at 7pt,
+ it=cmssi10 at 7pt,
+ sl=cmssi10 at 7pt,
+ bs=cmssbx10 at 7pt,
+ bi=cmssbx10 at 7pt,
+ sc=cmss10 at 7pt]
+
+ \definebodyfont [6pt] [ss]
+ [tf=cmss10 at 6pt,
+ bf=cmssbx10 at 6pt,
+ it=cmssi10 at 6pt,
+ sl=cmssi10 at 6pt,
+ bs=cmssbx10 at 6pt,
+ bi=cmssbx10 at 6pt,
+ sc=cmss10 at 6pt]
+
+ \definebodyfont [5pt] [ss]
+ [tf=cmss10 at 5pt,
+ bf=cmssbx10 at 5pt,
+ it=cmssi10 at 5pt,
+ sl=cmssi10 at 5pt,
+ bs=cmssbx10 at 5pt,
+ bi=cmssbx10 at 5pt,
+ sc=cmss10 at 5pt]
+
+ \definebodyfont [4pt] [ss]
+ [tf=cmss10 at 4pt,
+ bf=cmssbx10 at 4pt,
+ it=cmssi10 at 4pt,
+ sl=cmssi10 at 4pt,
+ bs=cmssbx10 at 4pt,
+ bi=cmssbx10 at 4pt,
+ sc=cmss10 at 4pt]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [ss]
+ [tf=cmss12 sa 1,
+ bf=cmssbx10 sa 1,
+ it=cmssi12 sa 1,
+ sl=cmssi12 sa 1,
+ bi=cmssbx10 sa 1,
+ bs=cmssbx10 sa 1,
+ sc=cmss12 sa 1]
+
+\stoptypescript
+
+\starttypescript [mono] [computer-modern] [size]
+
+ \definebodyfont [12pt] [tt]
+ [tf=cmtt12,
+ sl=cmsltt10 at 12pt,
+ it=cmitt10 at 12pt,
+ sc=cmtcsc10 at 12pt]
+
+ \definebodyfont [9pt] [tt]
+ [tf=cmtt9,
+ sl=cmsltt10 at 9pt,
+ it=cmitt10 at 9pt,
+ sc=cmtcsc10 at 9pt]
+
+ \definebodyfont [8pt] [tt]
+ [tf=cmtt8,
+ sl=cmsltt10 at 8pt,
+ it=cmitt10 at 8pt,
+ sc=cmtcsc10 at 8pt]
+
+ \definebodyfont [11pt,10pt,7pt,6pt,5pt,4pt] [tt]
+ [tf=cmtt10 sa 1,
+ sl=cmsltt10 sa 1,
+ it=cmitt10 sa 1,
+ sc=cmtcsc10 sa 1]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [tt]
+ [tf=cmtt12 sa 1,
+ sl=cmsltt10 sa 1,
+ it=cmitt10 sa 1,
+ sc=cmtcsc10 sa 1]
+
+\stoptypescript
+
+\starttypescript [math] [modern,computer-modern,latin-modern] [size]
+
+ % hack to prevent mapping of filenames, watch the space!
+
+ \definefontsynonym[xcmr12][cmr12 ]
+ \definefontsynonym[xcmr10][cmr10 ]
+ \definefontsynonym[xcmr9] [cmr9 ]
+ \definefontsynonym[xcmr8] [cmr8 ]
+ \definefontsynonym[xcmr7] [cmr7 ]
+ \definefontsynonym[xcmr6] [cmr6 ]
+ \definefontsynonym[xcmr5] [cmr5 ]
+
+ \definebodyfont [12pt] [mm]
+ [mr=xcmr12,
+ ex=cmex10 at 12pt,
+ mi=cmmi12,
+ sy=cmsy10 at 12pt]
+
+ \definebodyfont [11pt] [mm]
+ [mr=xcmr10 at 11pt,
+ ex=cmex10 at 11pt,
+ mi=cmmi10 at 11pt,
+ sy=cmsy10 at 11pt]
+
+ \definebodyfont [10pt] [mm]
+ [mr=xcmr10,
+ ex=cmex10,
+ mi=cmmi10,
+ sy=cmsy10]
+
+ \definebodyfont [9pt] [mm]
+ [mr=xcmr9,
+ ex=cmex10 at 9pt,
+ mi=cmmi9,
+ sy=cmsy9]
+
+ \definebodyfont [8pt] [mm]
+ [mr=xcmr8,
+ ex=cmex10 at 8pt,
+ mi=cmmi8,
+ sy=cmsy8]
+
+ \definebodyfont [7pt] [mm]
+ [mr=xcmr7,
+ ex=cmex10 at 7pt,
+ mi=cmmi7,
+ sy=cmsy7]
+
+ \definebodyfont [6pt] [mm]
+ [mr=xcmr6,
+ ex=cmex10 at 6pt,
+ mi=cmmi6,
+ sy=cmsy6]
+
+ \definebodyfont [5pt] [mm]
+ [mr=xcmr5,
+ ex=cmex10 at 5pt,
+ mi=cmmi5,
+ sy=cmsy5]
+
+ \definebodyfont [4pt] [mm]
+ [mr=xcmr5 at 4pt,
+ ex=cmex10 at 4pt,
+ mi=cmmi5 at 4pt,
+ sy=cmsy5 at 4pt]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [mm]
+ [mr=xcmr12 sa 1,
+ ex=cmex10 sa 1,
+ mi=cmmi12 sa 1,
+ sy=cmsy10 sa 1]
+
+\stoptypescript
+
+\starttypescript [boldmath] [modern,computer-modern,latin-modern] [size]
+
+% hack to prevent mapping of filenames, watch the space!
+
+ \definefontsynonym[xcmb12][cmbx12 ]
+ \definefontsynonym[xcmb10][cmbx10 ]
+ \definefontsynonym[xcmb9] [cmbx9 ]
+ \definefontsynonym[xcmb8] [cmbx8 ]
+ \definefontsynonym[xcmb7] [cmbx7 ]
+ \definefontsynonym[xcmb6] [cmbx6 ]
+ \definefontsynonym[xcmb5] [cmbx5 ]
+
+ \definebodyfont [12pt] [mm]
+ [mr=xcmb12,
+ ex=cmex10 at 12pt,
+ mi=cmmib10 at 12pt,
+ sy=cmbsy10 at 12pt]
+
+ \definebodyfont [11pt] [mm]
+ [mr=xcmb10 at 11pt,
+ ex=cmex10 at 11pt,
+ mi=cmmib10 at 11pt,
+ sy=cmbsy10 at 11pt]
+
+ \definebodyfont [10pt] [mm]
+ [mr=xcmb10,
+ ex=cmex10,
+ mi=cmmib10,
+ sy=cmbsy10]
+
+ \definebodyfont [9pt] [mm]
+ [mr=xcmb9,
+ ex=cmex10 at 9pt,
+ mi=cmmib10 at 9pt,
+ sy=cmbsy10 at 9pt]
+
+ \definebodyfont [8pt] [mm]
+ [mr=xcmb8,
+ ex=cmex10 at 8pt,
+ mi=cmmib7 at 8pt,
+ sy=cmbsy7 at 8pt]
+
+ \definebodyfont [7pt] [mm]
+ [mr=xcmb7,
+ ex=cmex10 at 7pt,
+ mi=cmmib7,
+ sy=cmbsy7]
+
+ \definebodyfont [6pt] [mm]
+ [mr=xcmb6,
+ ex=cmex10 at 6pt,
+ mi=cmmib5 at 6pt,
+ sy=cmbsy5 at 6pt]
+
+ \definebodyfont [5pt] [mm]
+ [mr=xcmb5,
+ ex=cmex10 at 5pt,
+ mi=cmmib5,
+ sy=cmbsy5]
+
+ \definebodyfont [4pt] [mm]
+ [mr=xcmb5 at 4pt,
+ ex=cmex10 at 4pt,
+ mi=cmmib5 at 4pt,
+ sy=cmbsy5 at 4pt]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [mm]
+ [mr=xcmb12 sa 1,
+ ex=cmex10 sa 1,
+ mi=cmmib10 sa 1,
+ sy=cmbsy10 sa 1]
+
+\stoptypescript
+
+\starttypescript [bfmath] [modern,computer-modern,latin-modern] [size]
+
+% hack to prevent mapping of filenames, watch the space!
+
+ \definefontsynonym[xcmb12][cmbx12 ]
+ \definefontsynonym[xcmb10][cmbx10 ]
+ \definefontsynonym[xcmb9] [cmbx9 ]
+ \definefontsynonym[xcmb8] [cmbx8 ]
+ \definefontsynonym[xcmb7] [cmbx7 ]
+ \definefontsynonym[xcmb6] [cmbx6 ]
+ \definefontsynonym[xcmb5] [cmbx5 ]
+
+ \definebodyfont [12pt] [mm]
+ [mrbf=xcmb12,
+ exbf=cmex10 at 12pt,
+ mibf=cmmib10 at 12pt,
+ sybf=cmbsy10 at 12pt]
+
+ \definebodyfont [11pt] [mm]
+ [mrbf=xcmb10 at 11pt,
+ exbf=cmex10 at 11pt,
+ mibf=cmmib10 at 11pt,
+ sybf=cmbsy10 at 11pt]
+
+ \definebodyfont [10pt] [mm]
+ [mrbf=xcmb10,
+ exbf=cmex10,
+ mibf=cmmib10,
+ sybf=cmbsy10]
+
+ \definebodyfont [9pt] [mm]
+ [mrbf=xcmb9,
+ exbf=cmex10 at 9pt,
+ mibf=cmmib10 at 9pt,
+ sybf=cmbsy10 at 9pt]
+
+ \definebodyfont [8pt] [mm]
+ [mrbf=xcmb8,
+ exbf=cmex10 at 8pt,
+ mibf=cmmib7 at 8pt,
+ sybf=cmbsy7 at 8pt]
+
+ \definebodyfont [7pt] [mm]
+ [mrbf=xcmb7,
+ exbf=cmex10 at 7pt,
+ mibf=cmmib7,
+ sybf=cmbsy7]
+
+ \definebodyfont [6pt] [mm]
+ [mrbf=xcmb6,
+ exbf=cmex10 at 6pt,
+ mibf=cmmib5 at 6pt,
+ sybf=cmbsy5 at 6pt]
+
+ \definebodyfont [5pt] [mm]
+ [mrbf=xcmb5,
+ exbf=cmex10 at 5pt,
+ mibf=cmmib5,
+ sybf=cmbsy5]
+
+ \definebodyfont [4pt] [mm]
+ [mrbf=xcmb5 at 4pt,
+ exbf=cmex10 at 4pt,
+ mibf=cmmib5 at 4pt,
+ sybf=cmbsy5 at 4pt]
+
+ \definebodyfont [14.4pt,17.3pt,20.7pt] [mm]
+ [mrbf=xcmb12 sa 1,
+ exbf=cmex10 sa 1,
+ mibf=cmmib10 sa 1,
+ sybf=cmbsy10 sa 1]
+
+\stoptypescript
+
+\starttypescript [serif] [concrete] [size]
+
+ \definebodyfont [10pt,11pt,12pt,14.4pt,17.3pt] [rm]
+ [tf=ccr10 sa 1,
+ it=ccti10 sa 1,
+ sl=ccsl10 sa 1,
+ sc=cccsc10 sa 1]
+
+ \definebodyfont [5pt,6pt,7pt,8pt,9pt] [rm]
+ [it=ccr9 sa 1,
+ sl=ccr9 sa 1,
+ sc=ccr9 sa 1]
+
+ \definebodyfont [9pt] [rm] [tf=ccr9]
+ \definebodyfont [8pt] [rm] [tf=ccr8]
+ \definebodyfont [7pt] [rm] [tf=ccr7]
+ \definebodyfont [6pt] [rm] [tf=ccr6]
+ \definebodyfont [5pt] [rm] [tf=ccr5]
+
+\stoptypescript
+
+% \starttypescript [serif] [fourier] [size] % experimental
+
+% \definebodyfont
+% [17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt]
+% [rm]
+% [bc=SerifBoldCaps sa 1,
+% bca=SerifBoldCaps sa a,
+% bcb=SerifBoldCaps sa b,
+% bcc=SerifBoldCaps sa c,
+% bcd=SerifBoldCaps sa d,
+% bcx=SerifBoldCaps sa x,
+% bcxx=SerifBoldCaps sa xx]
+
+% \stoptypescript
+
+% \starttypescript [serif] [fourier-expert] [size] % experimental
+
+% \definebodyfont
+% [17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt]
+% [rm]
+% [tf=Serif-Expert sa 1,
+% it=SerifItalic-Expert sa 1,
+% sl=SerifSlanted-Expert sa 1,
+% sc=SerifCaps-Expert sa 1,
+% db=SerifSemiBold-Expert sa 1,
+% dba=SerifSemiBold-Expert sa a,
+% dbb=SerifSemiBold-Expert sa b,
+% dbc=SerifSemiBold-Expert sa c,
+% dbd=SerifSemiBold-Expert sa d,
+% dbx=SerifSemiBold-Expert sa x,
+% dbxx=SerifSemiBold-Expert sa xx,
+% di=SerifSemiItalic-Expert sa 1,
+% dia=SerifSemiItalic-Expert sa a,
+% dib=SerifSemiItalic-Expert sa b,
+% dic=SerifSemiItalic-Expert sa c,
+% did=SerifSemiItalic-Expert sa d,
+% dix=SerifSemiItalic-Expert sa x,
+% dixx=SerifSemiItalic-Expert sa xx,
+% ds=SerifSemiSlanted-Expert sa 1,
+% dsa=SerifSemiSlanted-Expert sa a,
+% dsb=SerifSemiSlanted-Expert sa b,
+% dsc=SerifSemiSlanted-Expert sa c,
+% dsd=SerifSemiSlanted-Expert sa d,
+% dsx=SerifSemiSlanted-Expert sa x,
+% dsxx=SerifSemiSlanted-Expert sa xx,
+% dc=SerifSemiCaps-Expert sa 1,
+% dca=SerifSemiCaps-Expert sa a,
+% dcb=SerifSemiCaps-Expert sa b,
+% dcc=SerifSemiCaps-Expert sa c,
+% dcd=SerifSemiCaps-Expert sa d,
+% dcx=SerifSemiCaps-Expert sa x,
+% dcxx=SerifSemiCaps-Expert sa xx,
+% bf=SerifBold-Expert sa 1,
+% bi=SerifBoldItalic-Expert sa 1,
+% bs=SerifBoldSlanted-Expert sa 1,
+% eb=SerifBlack-Expert sa 1,
+% eba=SerifBlack-Expert sa a,
+% ebb=SerifBlack-Expert sa b,
+% ebc=SerifBlack-Expert sa c,
+% ebd=SerifBlack-Expert sa d,
+% ebx=SerifBlack-Expert sa x,
+% ebxx=SerifBlack-Expert sa xx]
+
+% \stoptypescript
+
+% \starttypescript [serif] [fourier-oldstyle] [size] % experimental
+
+% \definebodyfont
+% [17.3pt,14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt,4pt]
+% [rm]
+% [tf=Serif-OldStyle sa 1,
+% it=SerifItalic-OldStyle sa 1,
+% sl=SerifSlanted-OldStyle sa 1,
+% sc=SerifCaps-OldStyle sa 1,
+% db=SerifSemiBold-OldStyle sa 1,
+% dba=SerifSemiBold-OldStyle sa a,
+% dbb=SerifSemiBold-OldStyle sa b,
+% dbc=SerifSemiBold-OldStyle sa c,
+% dbd=SerifSemiBold-OldStyle sa d,
+% dbx=SerifSemiBold-OldStyle sa x,
+% dbxx=SerifSemiBold-OldStyle sa xx,
+% di=SerifSemiItalic-OldStyle sa 1,
+% dia=SerifSemiItalic-OldStyle sa a,
+% dib=SerifSemiItalic-OldStyle sa b,
+% dic=SerifSemiItalic-OldStyle sa c,
+% did=SerifSemiItalic-OldStyle sa d,
+% dix=SerifSemiItalic-OldStyle sa x,
+% dixx=SerifSemiItalic-OldStyle sa xx,
+% ds=SerifSemiSlanted-OldStyle sa 1,
+% dsa=SerifSemiSlanted-OldStyle sa a,
+% dsb=SerifSemiSlanted-OldStyle sa b,
+% dsc=SerifSemiSlanted-OldStyle sa c,
+% dsd=SerifSemiSlanted-OldStyle sa d,
+% dsx=SerifSemiSlanted-OldStyle sa x,
+% dsxx=SerifSemiSlanted-OldStyle sa xx,
+% dc=SerifSemiCaps-OldStyle sa 1,
+% dca=SerifSemiCaps-OldStyle sa a,
+% dcb=SerifSemiCaps-OldStyle sa b,
+% dcc=SerifSemiCaps-OldStyle sa c,
+% dcd=SerifSemiCaps-OldStyle sa d,
+% dcx=SerifSemiCaps-OldStyle sa x,
+% dcxx=SerifSemiCaps-OldStyle sa xx,
+% eb=SerifBlack-OldStyle sa 1,
+% eba=SerifBlack-OldStyle sa a,
+% ebb=SerifBlack-OldStyle sa b,
+% ebc=SerifBlack-OldStyle sa c,
+% ebd=SerifBlack-OldStyle sa d,
+% ebx=SerifBlack-OldStyle sa x,
+% ebxx=SerifBlack-OldStyle sa xx,
+% bf=SerifBold-OldStyle sa 1,
+% bi=SerifBoldItalic-OldStyle sa 1,
+% bs=SerifBoldSlanted-OldStyle sa 1]
+
+% \stoptypescript
+
+\starttypescript [math] [euler] [size]
+
+ \definebodyfont [9pt,10pt,11pt,12pt,14.4pt,17.3pt,20.7pt] [mm]
+ [mr=zeurm10 sa 1,
+ ex=zeuex10 sa 1,
+ sy=zeusm10 sa 1,
+ mi=eufm10 sa 1]
+
+ \definebodyfont [6pt,7pt,8pt] [mm]
+ [mr=zeurm7 sa 1,
+ sy=zeusm7 sa 1,
+ mi=eufm7 sa 1,
+ ex=zeuex10 sa 1]
+
+ \definebodyfont [5pt] [mm]
+ [mr=zeurm5,
+ sy=zeusm5,
+ mi=eufm5,
+ ex=zeuex10 at 5pt]
+
+\stoptypescript
+
+\starttypescript [bfmath] [euler] [size]
+
+ \definebodyfont [9pt,10pt,11pt,12pt,14.4pt,17.3pt,20.7pt] [mm]
+ [mrbf=zeurb10 sa 1,
+ exbf=zeuex10 sa 1,
+ sybf=zeusb10 sa 1,
+ mibf=eufb10 sa 1]
+
+ \definebodyfont [6pt,7pt,8pt] [mm]
+ [mrbf=zeurb7 sa 1,
+ sybf=zeusb7 sa 1,
+ mibf=eufb7 sa 1,
+ exbf=zeuex10 sa 1]
+
+ \definebodyfont [5pt] [mm]
+ [mrbf=zeurb5,
+ sybf=zeusb5,
+ mibf=eufb5,
+ exbf=zeuex10 at 5pt]
+
+\stoptypescript
+
+\starttypescript [boldmath] [euler] [size]
+
+ \definebodyfont [9pt,10pt,11pt,12pt,14.4pt,17.3pt,20.7pt] [mm]
+ [mr=zeurb10 sa 1,
+ ex=zeuex10 sa 1,
+ sy=zeusb10 sa 1,
+ mi=eufb10 sa 1]
+
+ \definebodyfont [6pt,7pt,8pt] [mm]
+ [mr=zeurb7 sa 1,
+ sy=zeusb7 sa 1,
+ mi=eufb7 sa 1,
+ ex=zeuex10 sa 1]
+
+ \definebodyfont [5pt] [mm]
+ [mr=zeurb5,
+ sy=zeusb5,
+ mi=eufb5,
+ ex=zeuex10 at 5pt]
+
+\stoptypescript
+
+\starttypescript [math] [modern,computer-modern,latin-modern,ams] [size]
+ \definebodyfont [17.3pt,14.4pt,12pt,11pt,10pt,9pt] [mm]
+ [ma=msam10 sa 1,
+ mb=msbm10 sa 1]
+ \definebodyfont [8pt,7pt] [mm]
+ [ma=msam7 sa 1,
+ mb=msbm7 sa 1]
+ \definebodyfont [6pt,5pt,4pt] [mm]
+ [ma=msam5 sa 1,
+ mb=msbm5 sa 1]
+\stoptypescript
+
+% math times
+
+\starttypescript [math] [times] [size]
+
+ \mapfontsize [5pt] [6.0pt]
+ \mapfontsize [6pt] [6.8pt]
+ \mapfontsize [7pt] [7.6pt]
+ \mapfontsize [8pt] [8.4pt]
+ \mapfontsize [9pt] [9.2pt]
+ \mapfontsize [10pt] [10pt]
+ \mapfontsize [11pt] [10.8pt]
+ \mapfontsize [12pt] [11.6pt]
+ \mapfontsize [14.4pt] [13.2pt]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/type-spe.tex b/Master/texmf-dist/tex/context/base/type-spe.tex
new file mode 100644
index 00000000000..0fd2abaddd7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-spe.tex
@@ -0,0 +1,49 @@
+%D \module
+%D [ file=type-spe,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Special scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \controlspace -> enco files
+% no special, always
+
+\starttypescriptcollection[special features]
+
+\starttypescript [mono] [courier,lucida] [special]
+ \def\controlspace{\getglyph{ComputerModernMono}{\char32}}
+\stoptypescript
+
+\starttypescript [math] [modern,computer-modern,latin-modern,ams] [special]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [math,boldmath] [lucida] [special]
+ \usemathcollection[lbr]
+\stoptypescript
+
+\starttypescript [math] [times] [special]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [math] [palatino] [special]
+ \usemathcollection[default]
+\stoptypescript
+
+\starttypescript [math] [fourier] [special]
+ \usemathcollection[fou]
+\stoptypescript
+
+\starttypescript [math,boldmath] [euler] [special]
+ \usemathcollection[eul]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-syn.tex b/Master/texmf-dist/tex/context/base/type-syn.tex
new file mode 100644
index 00000000000..3f642e4bffc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-syn.tex
@@ -0,0 +1,763 @@
+%D \module
+%D [ file=type-syn,
+%D version=2001.04.12,
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=Filename scripts,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\starttypescriptcollection[synonyms]
+
+% Simple Minded Fonts / to be redone so that it's not bound to modern
+
+\starttypescript [serif] [simple] [name]
+ \definefontsynonym [Serif] [Simple]
+ \definefontsynonym [SerifBold] [Serif]
+ \definefontsynonym [SerifItalic] [Serif]
+ \definefontsynonym [SerifSlanted] [Serif]
+ \definefontsynonym [SerifBoldItalic] [Serif]
+ \definefontsynonym [SerifBoldSlanted] [Serif]
+ \definefontsynonym [SerifCaps] [Serif]
+\stoptypescript
+
+% \starttypescript [sans] [simple] [name]
+% \definefontsynonym [Sans] [Simple]
+% \definefontsynonym [SansBold] [Sans]
+% \definefontsynonym [SansItalic] [Sans]
+% \definefontsynonym [SansSlanted] [Sans]
+% \definefontsynonym [SansBoldItalic] [Sans]
+% \definefontsynonym [SansBoldSlanted] [Sans]
+% \definefontsynonym [SansCaps] [Sans]
+% \stoptypescript
+
+% \starttypescript [mono] [simple] [name]
+% \definefontsynonym [Mono] [Simple]
+% \definefontsynonym [MonoBold] [Mono]
+% \definefontsynonym [MonoItalic] [Mono]
+% \definefontsynonym [MonoSlanted] [Mono]
+% \definefontsynonym [MonoBoldItalic] [Mono]
+% \definefontsynonym [MonoBoldSlanted] [Mono]
+% \definefontsynonym [MonoCaps] [Mono]
+% \stoptypescript
+
+% Computer Modern Roman : Donald Knuth
+
+\starttypescript [serif] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [Serif] [ComputerModern]
+ \definefontsynonym [SerifBold] [ComputerModern-Bold]
+ \definefontsynonym [SerifItalic] [ComputerModern-Italic]
+ \definefontsynonym [SerifSlanted] [ComputerModern-Slanted]
+ \definefontsynonym [SerifBoldItalic] [ComputerModern-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [ComputerModern-BoldSlanted]
+ \definefontsynonym [SerifCaps] [ComputerModern-Caps]
+ \definefontsynonym [SerifCapsSlanted] [ComputerModern-CapsSlanted]
+\stoptypescript
+
+\starttypescript [sans] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [Sans] [ComputerModernSans]
+ \definefontsynonym [SansBold] [ComputerModernSans-Bold]
+ \definefontsynonym [SansItalic] [ComputerModernSans-Italic]
+ \definefontsynonym [SansSlanted] [ComputerModernSans-Slanted]
+ \definefontsynonym [SansBoldItalic] [ComputerModernSans-BoldItalic]
+ \definefontsynonym [SansBoldSlanted] [ComputerModernSans-BoldSlanted]
+ \definefontsynonym [SansCaps] [ComputerModernSans-Caps]
+ \definefontsynonym [SansCapsSlanted] [ComputerModernSans-CapsSlanted]
+\stoptypescript
+
+\starttypescript [mono] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [Mono] [ComputerModernMono]
+ \definefontsynonym [MonoBold] [ComputerModernMono-Bold]
+ \definefontsynonym [MonoItalic] [ComputerModernMono-Italic]
+ \definefontsynonym [MonoSlanted] [ComputerModernMono-Slanted]
+ \definefontsynonym [MonoBoldItalic] [ComputerModernMono-BoldItalic]
+ \definefontsynonym [MonoBoldSlanted] [ComputerModernMono-BoldSlanted]
+ \definefontsynonym [MonoCaps] [ComputerModernMono-Caps]
+ \definefontsynonym [MonoCapsSlanted] [ComputerModernMono-CapsSlanted]
+\stoptypescript
+
+\starttypescript [math] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [MathRoman] [ComputerModernMath-Roman]
+ \definefontsynonym [MathExtension] [ComputerModernMath-Extension]
+ \definefontsynonym [MathItalic] [ComputerModernMath-Italic]
+ \definefontsynonym [MathSymbol] [ComputerModernMath-Symbol]
+\stoptypescript
+
+\starttypescript [boldmath] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [MathRoman] [ComputerModernMath-Roman-Bold]
+ \definefontsynonym [MathExtension] [ComputerModernMath-Extension]
+ \definefontsynonym [MathItalic] [ComputerModernMath-Italic-Bold]
+ \definefontsynonym [MathSymbol] [ComputerModernMath-Symbol-Bold]
+\stoptypescript
+
+\starttypescript [bfmath] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [MathRomanBold] [ComputerModernMath-Roman-Bold]
+ \definefontsynonym [MathExtension] [ComputerModernMath-Extension]
+ \definefontsynonym [MathItalicBold] [ComputerModernMath-Italic-Bold]
+ \definefontsynonym [MathSymbolBold] [ComputerModernMath-Symbol-Bold]
+\stoptypescript
+
+\starttypescript [serif] [modern-vari,computer-modern-vari,latin-modern-vari] [name]
+ \definefontsynonym [Serif] [LMTypewriterVarWd-Regular]
+ \definefontsynonym [SerifBold] [LMTypewriterVarWd-Oblique]
+ \definefontsynonym [SerifItalic] [LMTypewriterVarWd-Oblique]
+ \definefontsynonym [SerifSlanted] [LMTypewriterVarWd-Dark]
+ \definefontsynonym [SerifBoldItalic] [LMTypewriterVarWd-DarkOblique]
+ \definefontsynonym [SerifBoldSlanted] [LMTypewriterVarWd-DarkOblique]
+ \definefontsynonym [SerifCaps] [LMTypewriterVarWd-Regular]
+ \definefontsynonym [SerifCapsSlanted] [LMTypewriterVarWd-Oblique]
+\stoptypescript
+
+\starttypescript [mono] [modern-cond,computer-modern-cond,latin-modern-cond,modern-lightcond,computer-modern-lightcond,latin-modern-lightcond] [name]
+ \definefontsynonym [Mono] [LMTypewriter-LightCondensed]
+ \definefontsynonym [MonoBold] [LMTypewriter-LightCondensed]
+ \definefontsynonym [MonoItalic] [LMTypewriter-LightCondensedOblique]
+ \definefontsynonym [MonoSlanted] [LMTypewriter-LightCondensedOblique]
+ \definefontsynonym [MonoBoldItalic] [LMTypewriter-LightCondensed]
+ \definefontsynonym [MonoBoldSlanted] [LMTypewriter-LightCondensed]
+ \definefontsynonym [MonoCaps] [LMTypewriter-LightCondensed]
+ \definefontsynonym [MonoCapsSlanted] [LMTypewriter-LightCondensed]
+\stoptypescript
+
+\starttypescript [mono] [modern-light,computer-modern-light,latin-modern-light] [name]
+ \definefontsynonym [Mono] [LMTypewriter-Light]
+ \definefontsynonym [MonoBold] [LMTypewriter-Light]
+ \definefontsynonym [MonoItalic] [LMTypewriter-LightOblique]
+ \definefontsynonym [MonoSlanted] [LMTypewriter-LightOblique]
+ \definefontsynonym [MonoBoldItalic] [LMTypewriter-Light]
+ \definefontsynonym [MonoBoldSlanted] [LMTypewriter-Light]
+ \definefontsynonym [MonoCaps] [LMTypewriter-Light]
+ \definefontsynonym [MonoCapsSlanted] [LMTypewriter-Light]
+\stoptypescript
+
+% This will change some day.
+
+\starttypescript [math] [modern,computer-modern,latin-modern] [name]
+ \definefontsynonym [OldStyle] [MathItalic]
+ \definefontsynonym [Fraktur] [eufm10]
+ \definefontsynonym [Blackboard] [msbm10]
+ \definefontsynonym [Gothic] [eufm10]
+ \definefontsynonym [Calligraphic] [cmsy10]
+\stoptypescript
+
+% Concrete Modern Roman : Donald Knuth
+
+\starttypescript [serif] [concrete] [name]
+ \definefontsynonym [Serif] [ComputerConcrete]
+ \definefontsynonym [SerifBold] [ComputerConcrete]
+ \definefontsynonym [SerifItalic] [ComputerConcrete-Italic]
+ \definefontsynonym [SerifSlanted] [ComputerConcrete-Slanted]
+ \definefontsynonym [SerifBoldItalic] [ComputerConcrete-Italic]
+ \definefontsynonym [SerifBoldSlanted] [ComputerConcrete-Slanted]
+ \definefontsynonym [SerifCaps] [ComputerConcrete-Caps]
+\stoptypescript
+
+% Euler : Hermann Zapf
+
+\starttypescript [math] [euler] [name]
+ \definefontsynonym [MathRoman] [Euler-Roman] % mr
+ \definefontsynonym [MathItalic] [Euler-Fraktur] % mi
+ \definefontsynonym [MathExtension] [Euler-Extension] % ex
+ \definefontsynonym [MathSymbol] [Euler-Symbol] % sy
+\stoptypescript
+
+\starttypescript [boldmath] [euler] [name]
+ \definefontsynonym [MathRoman] [Euler-Roman-Bold] % mr
+ \definefontsynonym [MathItalic] [Euler-Fraktur-Bold] % mi
+ \definefontsynonym [MathExtension] [Euler-Extension] % ex
+ \definefontsynonym [MathSymbol] [Euler-Symbol-Bold] % sy
+\stoptypescript
+
+\starttypescript [bfmath] [euler] [name]
+ \definefontsynonym [MathRomanBold] [Euler-Roman-Bold] % mr
+ \definefontsynonym [MathItalicBold] [Euler-Fraktur-Bold] % mi
+ \definefontsynonym [MathExtension] [Euler-Extension] % ex
+ \definefontsynonym [MathSymbolBold] [Euler-Symbol-Bold] % sy
+\stoptypescript
+
+\starttypescript [math] [euler] [name]
+ \definefontsynonym [OldStyle] [MathItalic]
+ \definefontsynonym [Fraktur] [MathItalic]
+ \definefontsynonym [Gothic] [MathItalic]
+ \definefontsynonym [Calligraphic] [MathSymbol]
+\stoptypescript
+
+\starttypescript [boldmath] [euler] [name]
+ \definefontsynonym [OldStyle] [MathItalicBold]
+ \definefontsynonym [Fraktur] [MathItalicBold]
+ \definefontsynonym [Gothic] [MathItalicBold]
+ \definefontsynonym [Calligraphic] [MathSymbolBold]
+\stoptypescript
+
+% American Math Society : Michael Spivak
+
+\starttypescript [math] [modern,computer-modern,latin-modern,ams] [name]
+ \definefontsynonym [MathAlpha] [AMS-SymbolA]
+ \definefontsynonym [MathBeta] [AMS-SymbolB]
+\stoptypescript
+
+% Antykwa Torunska :
+
+\starttypescript [serif] [antykwa-torunska] [name]
+ \definefontsynonym [Serif] [AntykwaTorunska-Regular]
+ \definefontsynonym [SerifBold] [AntykwaTorunska-Bold]
+ \definefontsynonym [SerifItalic] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifSlanted] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifBoldItalic] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifCaps] [AntykwaTorunska-Cap]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-light] [name]
+ \definefontsynonym [Serif] [AntykwaTorunska-Light]
+ \definefontsynonym [SerifBold] [AntykwaTorunska-Medium]
+ \definefontsynonym [SerifItalic] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifSlanted] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifBoldItalic] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifBoldSlanted] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifCaps] [AntykwaTorunska-LightCap]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-cond] [name]
+ \definefontsynonym [Serif] [AntykwaTorunska-CondRegular]
+ \definefontsynonym [SerifBold] [AntykwaTorunska-CondBold]
+ \definefontsynonym [SerifItalic] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifSlanted] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifBoldItalic] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifCaps] [AntykwaTorunska-CondCap]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-lightcond] [name]
+ \definefontsynonym [Serif] [AntykwaTorunska-CondLight]
+ \definefontsynonym [SerifBold] [AntykwaTorunska-CondMedium]
+ \definefontsynonym [SerifItalic] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifSlanted] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifBoldItalic] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifBoldSlanted] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifCaps] [AntykwaTorunska-CondLightCap]
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska] [name]
+ \definefontsynonym [SerifRegular] [Serif]
+ \definefontsynonym [SerifRegularCaps] [AntykwaTorunska-Cap]
+ \definefontsynonym [SerifBoldCaps] [AntykwaTorunska-BoldCap]
+ \definefontsynonym [SerifItalicCaps] [AntykwaTorunska-ItalicCap]
+ \definefontsynonym [SerifSlantedCaps] [AntykwaTorunska-ItalicCap]
+ \definefontsynonym [SerifBoldItalicCaps] [AntykwaTorunska-BoldItalicCap]
+ \definefontsynonym [SerifBoldSlantedCaps] [AntykwaTorunska-BoldItalicCap]
+ \definefontsynonym [SerifCapsCaps] [AntykwaTorunska-Cap]
+
+ \definefontvariant [Serif][osf][Caps]
+ \definefontvariant [Serif][sc] [Caps]
+
+ \definefontsynonym [SerifRegularLight] [AntykwaTorunska-Light]
+ \definefontsynonym [SerifBoldLight] [AntykwaTorunska-Medium]
+ \definefontsynonym [SerifItalicLight] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifSlantedLight] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifBoldItalicLight] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifBoldSlantedLight] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifCapsLight] [AntykwaTorunska-LightCap]
+
+ \definefontvariant [Serif][lt][Light]
+
+ \definefontsynonym [SerifRegularCond] [AntykwaTorunska-CondRegular]
+ \definefontsynonym [SerifBoldCond] [AntykwaTorunska-CondBold]
+ \definefontsynonym [SerifItalicCond] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifSlantedCond] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifBoldItalicCond] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifBoldSlantedCond] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifCapsCond] [AntykwaTorunska-CondCap]
+
+ \definefontvariant [Serif][cond][Cond]
+
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-light] [name]
+ \definefontsynonym [SerifRegular] [Serif]
+ \definefontsynonym [SerifRegularCaps] [AntykwaTorunska-LightCap]
+ \definefontsynonym [SerifBoldCaps] [AntykwaTorunska-MediumCap]
+ \definefontsynonym [SerifItalicCaps] [AntykwaTorunska-LightItalicCap]
+ \definefontsynonym [SerifSlantedCaps] [AntykwaTorunska-LightItalicCap]
+ \definefontsynonym [SerifBoldItalicCaps] [AntykwaTorunska-MedItalicCap]
+ \definefontsynonym [SerifBoldSlantedCaps] [AntykwaTorunska-MedItalicCap]
+ \definefontsynonym [SerifCapsCaps] [AntykwaTorunska-LightCap]
+
+ \definefontvariant [Serif][osf][Caps]
+ \definefontvariant [Serif][sc] [Caps]
+
+ \definefontsynonym [SerifRegularDark] [AntykwaTorunska-Regular]
+ \definefontsynonym [SerifBoldDark] [AntykwaTorunska-Bold]
+ \definefontsynonym [SerifItalicDark] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifSlantedDark] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifBoldItalicDark] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifBoldSlantedDark] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifCapsDark] [AntykwaTorunska-Cap]
+
+ \definefontvariant [Serif][dk][Dark]
+
+ \definefontsynonym [SerifRegularCond] [AntykwaTorunska-CondLight]
+ \definefontsynonym [SerifBoldCond] [AntykwaTorunska-CondMedium]
+ \definefontsynonym [SerifItalicCond] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifSlantedCond] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifBoldItalicCond] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifBoldSlantedCond] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifCapsCond] [AntykwaTorunska-CondLightCap]
+
+ \definefontvariant [Serif][cond][Cond]
+
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-cond] [name]
+ \definefontsynonym [SerifRegular] [Serif]
+ \definefontsynonym [SerifRegularCaps] [AntykwaTorunska-CondCap]
+ \definefontsynonym [SerifBoldCaps] [AntykwaTorunska-CondBoldCap]
+ \definefontsynonym [SerifItalicCaps] [AntykwaTorunska-CondItalicCap]
+ \definefontsynonym [SerifSlantedCaps] [AntykwaTorunska-CondItalicCap]
+ \definefontsynonym [SerifBoldItalicCaps] [AntykwaTorunska-CondBoldItalicCap]
+ \definefontsynonym [SerifBoldSlantedCaps] [AntykwaTorunska-CondBoldItalicCap]
+ \definefontsynonym [SerifCapsCaps] [AntykwaTorunska-CondCap]
+
+ \definefontvariant [Serif][osf][Caps]
+ \definefontvariant [Serif][sc] [Caps]
+
+ \definefontsynonym [SerifRegularLight] [AntykwaTorunska-CondLight]
+ \definefontsynonym [SerifBoldLight] [AntykwaTorunska-CondMedium]
+ \definefontsynonym [SerifItalicLight] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifSlantedLight] [AntykwaTorunska-CondLightItalic]
+ \definefontsynonym [SerifBoldItalicLight] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifBoldSlantedLight] [AntykwaTorunska-CondMedItalic]
+ \definefontsynonym [SerifCapsLight] [AntykwaTorunska-CondLightCap]
+
+ \definefontvariant [Serif][lt][Light]
+
+ \definefontsynonym [SerifRegularExp] [AntykwaTorunska-Regular]
+ \definefontsynonym [SerifBoldExp] [AntykwaTorunska-Bold]
+ \definefontsynonym [SerifItalicExp] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifSlantedExp] [AntykwaTorunska-Italic]
+ \definefontsynonym [SerifBoldItalicExp] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifBoldSlantedExp] [AntykwaTorunska-BoldItalic]
+ \definefontsynonym [SerifCapsExp] [AntykwaTorunska-Cap]
+
+ \definefontvariant [Serif][exp][Exp]
+
+\stoptypescript
+
+\starttypescript [serif] [antykwa-torunska-lightcond] [name]
+ \definefontsynonym [SerifRegular] [Serif]
+ \definefontsynonym [SerifRegularCaps] [AntykwaTorunska-CondLightCap]
+ \definefontsynonym [SerifBoldCaps] [AntykwaTorunska-CondMediumCap]
+ \definefontsynonym [SerifItalicCaps] [AntykwaTorunska-CondLightItalicCap]
+ \definefontsynonym [SerifSlantedCaps] [AntykwaTorunska-CondLightItalicCap]
+ \definefontsynonym [SerifBoldItalicCaps] [AntykwaTorunska-CondMedItalicCap]
+ \definefontsynonym [SerifBoldSlantedCaps] [AntykwaTorunska-CondMedItalicCap]
+ \definefontsynonym [SerifCapsCaps] [AntykwaTorunska-CondLightCap]
+
+ \definefontvariant [Serif][osf][Caps]
+ \definefontvariant [Serif][sc] [Caps]
+
+ \definefontsynonym [SerifRegularDark] [AntykwaTorunska-CondRegular]
+ \definefontsynonym [SerifBoldDark] [AntykwaTorunska-CondBold]
+ \definefontsynonym [SerifItalicDark] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifSlantedDark] [AntykwaTorunska-CondItalic]
+ \definefontsynonym [SerifBoldItalicDark] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifBoldSlantedDark] [AntykwaTorunska-CondBoldItalic]
+ \definefontsynonym [SerifCapsDark] [AntykwaTorunska-CondCap]
+
+ \definefontvariant [Serif][dk][Dark]
+
+ \definefontsynonym [SerifRegularExp] [AntykwaTorunska-Light]
+ \definefontsynonym [SerifBoldExp] [AntykwaTorunska-Medium]
+ \definefontsynonym [SerifItalicExp] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifSlantedExp] [AntykwaTorunska-LightItalic]
+ \definefontsynonym [SerifBoldItalicExp] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifBoldSlantedExp] [AntykwaTorunska-MedItalic]
+ \definefontsynonym [SerifCapsExp] [AntykwaTorunska-LightCap]
+
+ \definefontvariant [Serif][exp][Exp]
+
+\stoptypescript
+
+% maybe no -Regular etc
+
+\starttypescript [math] [antykwa-torunska-light] [name]
+ \definefontsynonym [MathRoman] [AntykwaTorunska-Math-Letters-Light]
+ \definefontsynonym [MathItalic] [AntykwaTorunska-Math-Letters-LightItalic]
+ \definefontsynonym [MathSymbol] [AntykwaTorunska-Math-Symbols-Light]
+ \definefontsynonym [MathExtension] [AntykwaTorunska-Math-Extension-Light]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska] [name]
+ \definefontsynonym [MathRoman] [AntykwaTorunska-Math-Letters-Regular]
+ \definefontsynonym [MathItalic] [AntykwaTorunska-Math-Letters-RegularItalic]
+ \definefontsynonym [MathSymbol] [AntykwaTorunska-Math-Symbols-Regular]
+ \definefontsynonym [MathExtension] [AntykwaTorunska-Math-Extension-Regular]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska-cond] [name]
+ \definefontsynonym [MathRoman] [AntykwaTorunska-Math-Letters-CondRegular]
+ \definefontsynonym [MathItalic] [AntykwaTorunska-Math-Letters-CondRegularItalic]
+ \definefontsynonym [MathSymbol] [AntykwaTorunska-Math-Symbols-CondRegular]
+ \definefontsynonym [MathExtension] [AntykwaTorunska-Math-Extension-CondRegular]
+\stoptypescript
+
+\starttypescript [math] [antykwa-torunska-lightcond] [name]
+ \definefontsynonym [MathRoman] [AntykwaTorunska-Math-Letters-CondLight]
+ \definefontsynonym [MathItalic] [AntykwaTorunska-Math-Letters-CondLightItalic]
+ \definefontsynonym [MathSymbol] [AntykwaTorunska-Math-Symbols-CondLight]
+ \definefontsynonym [MathExtension] [AntykwaTorunska-Math-Extension-CondLight]
+\stoptypescript
+
+% Antykwa Poltawskiego :
+
+\starttypescript [serif] [antykwa-poltawskiego] [name]
+ \definefontsynonym [Serif] [AntykwaPoltawskiego-Regular]
+ \definefontsynonym [SerifBold] [AntykwaPoltawskiego-Bold]
+ \definefontsynonym [SerifItalic] [AntykwaPoltawskiego-Italic]
+ \definefontsynonym [SerifSlanted] [AntykwaPoltawskiego-Italic]
+ \definefontsynonym [SerifBoldItalic] [AntykwaPoltawskiego-Bold]
+ \definefontsynonym [SerifBoldSlanted] [AntykwaPoltawskiego-Bold]
+ \definefontsynonym [SerifCaps] [AntykwaPoltawskiego-Regular]
+\stoptypescript
+
+% Baskerville :
+%
+% \starttypescript [serif] [baskerville] [name]
+% \definefontsynonym [Serif] [Baskerville]
+% \definefontsynonym [SerifBold] [Baskerville-Bold]
+% \definefontsynonym [SerifItalic] [Baskerville-Italic]
+% \definefontsynonym [SerifSlanted] [Baskerville-Italic]
+% \definefontsynonym [SerifBoldItalic] [Baskerville-BoldItalic]
+% \definefontsynonym [SerifBoldSlanted] [Baskerville-BoldItalic]
+% \definefontsynonym [SerifCaps] [Baskerville]
+% \stoptypescript
+%
+% % Garamond :
+%
+% \starttypescript [serif] [garamond] [name]
+% \definefontsynonym [Serif] [Garamond-Normal]
+% \definefontsynonym [SerifBold] [Garamond]
+% \definefontsynonym [SerifItalic] [Garamond-Medium-Italic]
+% \definefontsynonym [SerifSlanted] [Garamond-Medium-Italic]
+% \definefontsynonym [SerifBoldItalic] [Garamond-Medium-Italic]
+% \definefontsynonym [SerifBoldSlanted] [Garamond-Medium-Italic]
+% \definefontsynonym [SerifCaps] [Garamond]
+% \stoptypescript
+
+% Iwona
+
+\starttypescript [sans] [iwona-light] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Iwona-Light] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Iwona-LightItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Iwona-Medium] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Iwona-MediumItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [iwona] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Iwona-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Iwona-RegularItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Iwona-Bold] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Iwona-BoldItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [iwona-medium] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Iwona-Medium] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Iwona-MediumItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Iwona-Heavy] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Iwona-HeavyItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [math] [iwona-light] [name]
+ \definefontsynonym [MathRoman] [Iwona-Math-Letters-Light]
+ \definefontsynonym [MathItalic] [Iwona-Math-Letters-LightItalic]
+ \definefontsynonym [MathSymbol] [Iwona-Math-Symbols-Light]
+ \definefontsynonym [MathExtension] [Iwona-Math-Extension-Light]
+\stoptypescript
+
+\starttypescript [math] [iwona] [name]
+ \definefontsynonym [MathRoman] [Iwona-Math-Letters-Regular]
+ \definefontsynonym [MathItalic] [Iwona-Math-Letters-RegularItalic]
+ \definefontsynonym [MathSymbol] [Iwona-Math-Symbols-Regular]
+ \definefontsynonym [MathExtension] [Iwona-Math-Extension-Regular]
+\stoptypescript
+
+\starttypescript [math] [iwona-medium] [name]
+ \definefontsynonym [MathRoman] [Iwona-Math-Letters-Medium]
+ \definefontsynonym [MathItalic] [Iwona-Math-Letters-MediumItalic]
+ \definefontsynonym [MathSymbol] [Iwona-Math-Symbols-Medium]
+ \definefontsynonym [MathExtension] [Iwona-Math-Extension-Medium]
+\stoptypescript
+
+% Kurier
+
+\starttypescript [sans] [kurier-light] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Kurier-Light] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Kurier-LightItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Kurier-Medium] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Kurier-MediumItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [kurier] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Kurier-Regular] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Kurier-RegularItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Kurier-Bold] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Kurier-BoldItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [sans] [kurier-medium] [name]
+ \setups[font:fallback:sans]
+ \definefontsynonym [Sans] [Kurier-Medium] [encoding=\typescriptthree]
+ \definefontsynonym [SansItalic] [Kurier-MediumItalic] [encoding=\typescriptthree]
+ \definefontsynonym [SansBold] [Kurier-Heavy] [encoding=\typescriptthree]
+ \definefontsynonym [SansBoldItalic] [Kurier-HeavyItalic] [encoding=\typescriptthree]
+\stoptypescript
+
+\starttypescript [math] [kurier-light] [name]
+ \definefontsynonym [MathRoman] [Kurier-Math-Letters-Light]
+ \definefontsynonym [MathItalic] [Kurier-Math-Letters-LightItalic]
+ \definefontsynonym [MathSymbol] [Kurier-Math-Symbols-Light]
+ \definefontsynonym [MathExtension] [Kurier-Math-Extension-Light]
+\stoptypescript
+
+\starttypescript [math] [kurier] [name]
+ \definefontsynonym [MathRoman] [Kurier-Math-Letters-Regular]
+ \definefontsynonym [MathItalic] [Kurier-Math-Letters-RegularItalic]
+ \definefontsynonym [MathSymbol] [Kurier-Math-Symbols-Regular]
+ \definefontsynonym [MathExtension] [Kurier-Math-Extension-Regular]
+\stoptypescript
+
+\starttypescript [math] [kurier-medium] [name]
+ \definefontsynonym [MathRoman] [Kurier-Math-Letters-Medium]
+ \definefontsynonym [MathItalic] [Kurier-Math-Letters-MediumItalic]
+ \definefontsynonym [MathSymbol] [Kurier-Math-Symbols-Medium]
+ \definefontsynonym [MathExtension] [Kurier-Math-Extension-Medium]
+\stoptypescript
+
+% Bookman :
+
+\starttypescript [serif] [bookman] [name]
+ \definefontsynonym [Serif] [Bookman-Light]
+ \definefontsynonym [SerifItalic] [Bookman-LightItalic]
+ \definefontsynonym [SerifBold] [Bookman-DemiBold]
+ \definefontsynonym [SerifBoldItalic] [Bookman-DemiBoldItalic]
+ \definefontsynonym [SerifSlanted] [Bookman-LightSlanted]
+ \definefontsynonym [SerifBoldSlanted] [Bookman-DemiBoldSlanted]
+ \definefontsynonym [SerifCaps] [Bookman-Light-Caps]
+\stoptypescript
+
+% Chancery : Zapf
+
+\starttypescript [calligraphy] [chancery] [name]
+ \definefontsynonym [Calligraphy] [Chancery]
+\stoptypescript
+
+% Schoolbook :
+
+\starttypescript [serif] [schoolbook] [name]
+ \definefontsynonym [Serif] [Schoolbook-Roman]
+ \definefontsynonym [SerifItalic] [Schoolbook-Italic]
+ \definefontsynonym [SerifBold] [Schoolbook-Bold]
+ \definefontsynonym [SerifBoldItalic] [Schoolbook-BoldItalic]
+ \definefontsynonym [SerifSlanted] [Schoolbook-RomanSlanted]
+ \definefontsynonym [SerifBoldSlanted] [Schoolbook-BoldSlanted]
+ \definefontsynonym [SerifCaps] [Schoolbook-Roman-Caps]
+\stoptypescript
+
+% Utopia : Adobe
+
+\starttypescript [serif] [utopia] [name]
+ \definefontsynonym [Serif] [Utopia-Regular]
+ \definefontsynonym [SerifItalic] [Utopia-Italic]
+ \definefontsynonym [SerifBold] [Utopia-Bold]
+ \definefontsynonym [SerifBoldItalic] [Utopia-BoldItalic]
+ \definefontsynonym [SerifSlanted] [Utopia-Slanted]
+ \definefontsynonym [SerifBoldSlanted] [Utopia-BoldSlanted]
+ \definefontsynonym [SerifCaps] [Utopia-Regular-Caps]
+\stoptypescript
+
+% Fourier : Michael Bovani
+
+\starttypescript [serif] [fourier] [name]
+ \definefontsynonym [Serif] [Fourier-Regular]
+ \definefontsynonym [SerifSlanted] [Fourier-Slanted]
+ \definefontsynonym [SerifItalic] [Fourier-Italic]
+ \definefontsynonym [SerifCaps] [Fourier-RegularCaps]
+ \definefontsynonym [SerifBold] [Fourier-Bold]
+ \definefontsynonym [SerifBoldSlanted] [Fourier-BoldSlanted]
+ \definefontsynonym [SerifBoldItalic] [Fourier-BoldItalic]
+ \definefontsynonym [SerifBoldCaps] [Fourier-BoldCaps]
+
+ \definefontsynonym [Serif-Expert] [Fourier-Regular-Expert]
+ \definefontsynonym [SerifSlanted-Expert] [Fourier-Slanted-Expert]
+ \definefontsynonym [SerifItalic-Expert] [Fourier-Italic-Expert]
+ \definefontsynonym [SerifCaps-Expert] [Fourier-RegularCaps-Expert]
+ \definefontsynonym [SerifSemiBold-Expert] [Fourier-Semi-Expert]
+ \definefontsynonym [SerifSemiSlanted-Expert] [Fourier-SemiSlanted-Expert]
+ \definefontsynonym [SerifSemiItalic-Expert] [Fourier-SemiItalic-Expert]
+ \definefontsynonym [SerifSemiCaps-Expert] [Fourier-SemiCaps-Expert]
+ \definefontsynonym [SerifBold-Expert] [Fourier-Bold-Expert]
+ \definefontsynonym [SerifBoldSlanted-Expert] [Fourier-BoldSlanted-Expert]
+ \definefontsynonym [SerifBoldItalic-Expert] [Fourier-BoldItalic-Expert]
+ \definefontsynonym [SerifBlack-Expert] [Fourier-Black-Expert]
+
+ \definefontsynonym [Serif-OldStyle] [Fourier-Regular-OldStyle]
+ \definefontsynonym [SerifSlanted-OldStyle] [Fourier-Slanted-OldStyle]
+ \definefontsynonym [SerifItalic-OldStyle] [Fourier-Italic-OldStyle]
+ \definefontsynonym [SerifCaps-OldStyle] [Fourier-RegularCaps-OldStyle]
+ \definefontsynonym [SerifSemiBold-OldStyle] [Fourier-Semi-OldStyle]
+ \definefontsynonym [SerifSemiSlanted-OldStyle] [Fourier-SemiSlanted-OldStyle]
+ \definefontsynonym [SerifSemiItalic-OldStyle] [Fourier-SemiItalic-OldStyle]
+ \definefontsynonym [SerifSemiCaps-OldStyle] [Fourier-SemiCaps-OldStyle]
+ \definefontsynonym [SerifBold-OldStyle] [Fourier-Bold-OldStyle]
+ \definefontsynonym [SerifBoldSlanted-OldStyle] [Fourier-BoldSlanted-OldStyle]
+ \definefontsynonym [SerifBoldItalic-OldStyle] [Fourier-BoldItalic-OldStyle]
+ \definefontsynonym [SerifBlack-OldStyle] [Fourier-Black-OldStyle]
+ \definefontsynonym [SerifBlackSlanted-OldStyle] [Fourier-BlackSlanted-OldStyle]
+\stoptypescript
+
+\starttypescript [math] [fourier] [name]
+ \definefontsynonym [MathRoman] [Fourier-Math-Letters]
+ \definefontsynonym [MathItalic] [Fourier-Math-Letters-Italic]
+ \definefontsynonym [MathSymbol] [Fourier-Math-Symbols]
+ \definefontsynonym [MathExtension] [Fourier-Math-Extension]
+\stoptypescript
+
+\starttypescript [math] [fourier] [name] % todo
+ \definefontsynonym [OldStyle] [Serif-OldStyle] % strange, no oldstyles
+ \definefontsynonym [Fraktur] [eufm10]
+ \definefontsynonym [Blackboard] [msbm10]
+ \definefontsynonym [Gothic] [eufm10]
+ \definefontsynonym [Calligraphic] [eusm10]
+\stoptypescript
+
+% Charter :
+
+\starttypescript [serif] [charter] [name]
+ \definefontsynonym [Serif] [Charter-Roman]
+ \definefontsynonym [SerifItalic] [Charter-Italic]
+ \definefontsynonym [SerifBold] [Charter-Bold]
+ \definefontsynonym [SerifBoldItalic] [Charter-BoldItalic]
+ \definefontsynonym [SerifSlanted] [Charter-Slanted]
+ \definefontsynonym [SerifBoldSlanted] [Charter-BoldSlanted]
+ \definefontsynonym [SerifCaps] [Charter-Roman-Caps]
+\stoptypescript
+
+% Times :
+
+\starttypescript [serif] [times] [name]
+ \definefontsynonym [Serif] [Times-Roman]
+ \definefontsynonym [SerifBold] [Times-Bold]
+ \definefontsynonym [SerifItalic] [Times-Italic]
+ \definefontsynonym [SerifSlanted] [Times-Italic]
+ \definefontsynonym [SerifBoldItalic] [Times-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [Times-BoldItalic]
+ \definefontsynonym [SerifCaps] [Times-Roman]
+\stoptypescript
+
+% \starttypescript [math] [times] [name]
+% \definefontsynonym [MathRoman] [Times-MathRoman]
+% \definefontsynonym [MathExtension] [Times-MathExtension]
+% \definefontsynonym [MathItalic] [Times-MathItalic]
+% \definefontsynonym [MathSymbol] [Times-MathSymbol]
+% \stoptypescript
+
+\starttypescript [math] [times] [name]
+ \definefontsynonym [MathRoman] [Times-Roman-Upright]
+ \definefontsynonym [MathExtension] [Times-Math-Extension]
+ \definefontsynonym [MathItalic] [Times-Math-Italic]
+ \definefontsynonym [MathSymbol] [Times-Math-Symbols]
+ \definefontsynonym [MathAlpha] [Times-Math-SymbolsA]
+ \definefontsynonym [MathBeta] [Times-Math-SymbolsB]
+\stoptypescript
+
+\starttypescript [math] [times] [name]
+ \definefontsynonym [OldStyle] [MathItalic]
+ \definefontsynonym [Fraktur] [eufm10]
+ \definefontsynonym [Blackboard] [MathBeta]
+ \definefontsynonym [Gothic] [eufm10]
+ \definefontsynonym [Calligraphic] [eusm10]
+\stoptypescript
+
+% Helvetica :
+
+\starttypescript [sans] [helvetica] [name]
+ \definefontsynonym [Sans] [Helvetica]
+ \definefontsynonym [SansBold] [Helvetica-Bold]
+ \definefontsynonym [SansItalic] [Helvetica-Oblique]
+ \definefontsynonym [SansSlanted] [Helvetica-Oblique]
+ \definefontsynonym [SansBoldItalic] [Helvetica-BoldOblique]
+ \definefontsynonym [SansBoldSlanted] [Helvetica-BoldOblique]
+ \definefontsynonym [SansCaps] [Helvetica]
+\stoptypescript
+
+\starttypescript [math] [helvetica] [name]
+ \definefontsynonym [MathRoman] [Helvetica-MathRoman]
+ \definefontsynonym [MathExtension] [Helvetica-MathExtendedSymbols]
+ \definefontsynonym [MathItalic] [Helvetica-MathItalics]
+ \definefontsynonym [MathSymbol] [Helvetica-MathSymbols]
+\stoptypescript
+
+% Courier :
+
+\starttypescript [mono] [courier] [name]
+ \definefontsynonym [Mono] [Courier]
+ \definefontsynonym [MonoBold] [Courier-Bold]
+ \definefontsynonym [MonoItalic] [Courier-Oblique]
+ \definefontsynonym [MonoSlanted] [Courier-Oblique]
+ \definefontsynonym [MonoBoldItalic] [Courier-BoldOblique]
+ \definefontsynonym [MonoBoldSlanted] [Courier-BoldOblique]
+ \definefontsynonym [MonoCaps] [Courier]
+\stoptypescript
+
+% Palatino : Hermann Zapf / URW
+
+\starttypescript [serif] [palatino] [name]
+ \definefontsynonym [Serif] [Palatino]
+ \definefontsynonym [SerifBold] [Palatino-Bold]
+ \definefontsynonym [SerifItalic] [Palatino-Italic]
+ \definefontsynonym [SerifSlanted] [Palatino-Slanted]
+ \definefontsynonym [SerifBoldItalic] [Palatino-BoldItalic]
+ \definefontsynonym [SerifBoldSlanted] [Palatino-BoldSlanted]
+ \definefontsynonym [SerifCaps] [Palatino-Caps]
+\stoptypescript
+
+\starttypescript [math] [palatino] [name]
+ \definefontsynonym [MathRoman] [Palatino-Roman-Upright]
+ \definefontsynonym [MathExtension] [Palatino-Math-Extension]
+ \definefontsynonym [MathItalic] [Palatino-Math-Italic]
+ \definefontsynonym [MathSymbol] [Palatino-Math-Symbols]
+ \definefontsynonym [MathAlpha] [Palatino-Math-SymbolsA]
+ \definefontsynonym [MathBeta] [Palatino-Math-SymbolsB]
+\stoptypescript
+
+\starttypescript [math] [palatino] [name]
+ \definefontsynonym [OldStyle] [MathItalic]
+ \definefontsynonym [Fraktur] [eufm10]
+ \definefontsynonym [Blackboard] [MathBeta]
+ \definefontsynonym [Gothic] [eufm10]
+ \definefontsynonym [Calligraphic] [eusm10]
+\stoptypescript
+
+% bonus definitions
+
+\starttypescript [serif] [palatino] [name]
+ \definefontsynonym [SerifRegular] [Serif]
+ \definefontsynonym [SerifRegularOsF] [TeXPalladioL-SC]
+ \definefontsynonym [SerifItalicOsF] [TeXPalladioL-ItalicOsF]
+ \definefontsynonym [SerifBoldOsF] [TeXPalladioL-BoldOsF]
+ \definefontsynonym [SerifBoldItalicOsF][TeXPalladioL-BoldItalicOsF]
+ \definefontsynonym [SerifCapsOsF] [TeXPalladioL-SC]
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/type-xtx.tex b/Master/texmf-dist/tex/context/base/type-xtx.tex
new file mode 100644
index 00000000000..c2c217515b6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/type-xtx.tex
@@ -0,0 +1,500 @@
+%D \module
+%D [ file=type-xtx,
+%D version=2004.11.15, % prereleased earlier
+%D title=\CONTEXT\ Typescript Macros,
+%D subtitle=\XETEX's font treasures,
+%D author=Adam T. Lindsay,
+%D date=\currentdate,
+%D copyright={Adam T. Lindsay / PRAGMA}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Here are some fonts definitions that can get you started with
+%D \XETEX (for more details see Adam's MyWay documents).
+%D
+%D Most typescripts in this file are mostly independent of the other
+%D typescript files. Generally, you can speed things up a lot by
+%D eliminating all but one of \CONTEXT's typescript files:
+%D
+%D \starttyping
+%D \usetypescriptfiles[reset] % HH: watch out, new feature, since
+%D \usetypescriptfiles[type-siz] % I disliked the low level redef.
+%D \stoptyping
+%D
+%D The exceptions are the \quotation {legacy} fonts Times, Palatino,
+%D Courier, and Helvetica, which also depend on \type {type-syn}.
+%D
+%D These following six typescripts call the basic four variants on any
+%D given font, given the name of the \quotation {Regular} variant in the
+%D name slot. These typescripts default to a Unicode encoding,
+%D accepts sizes \quotation {default} and \quotation {dtp}, and are
+%D activated with the identifiers \quotation {Xserif}, \quotation {Xsans},
+%D and \quotation {Xmono}. They can have relative scaling within the
+%D typeface. Any of the following work:
+%D
+%D \starttyping
+%D \definetypeface[basic][rm][Xserif][Baskerville]
+%D \definetypeface[basic][ss][Xsans] [Optima Regular][default][encoding=uc,rscale=.87]
+%D \definetypeface[basic][tt][Xmono] [Courier] [default]
+%D \stoptyping
+%D
+%D Activate the typeface with:
+%D
+%D \starttyping
+%D \setupbodyfont[basic]
+%D \stoptyping
+
+\starttypescriptcollection[xetex]
+
+\starttypescript[Xserif][all][name]
+
+\definefontsynonym[Dummy] ['\typescripttwo:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummyItalic] ['\typescripttwo/I:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummyBold] ['\typescripttwo/B:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummyBoldItalic]['\typescripttwo/BI:mapping=tex-text'][encoding=uc]
+
+\definefontsynonym[Serif] [Dummy]
+\definefontsynonym[SerifBold] [DummyBold]
+\definefontsynonym[SerifItalic] [DummyItalic]
+\definefontsynonym[SerifBoldItalic] [DummyBoldItalic]
+\definefontsynonym[SerifSlanted] [DummyItalic]
+\definefontsynonym[SerifBoldSlanted][DummyBoldItalic]
+\definefontsynonym[SerifCaps] [Dummy]
+
+\stoptypescript
+
+\starttypescript[Xsans][all][name]
+
+\definefontsynonym[DummySans] ['\typescripttwo:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummySansItalic] ['\typescripttwo/I:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummySansBold] ['\typescripttwo/B:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[DummySansBoldItalic]['\typescripttwo/BI:mapping=tex-text'][encoding=uc]
+
+\definefontsynonym[Sans] [DummySans]
+\definefontsynonym[SansBold] [DummySansBold]
+\definefontsynonym[SansItalic] [DummySansItalic]
+\definefontsynonym[SansBoldItalic] [DummySansBoldItalic]
+\definefontsynonym[SansSlanted] [DummySansItalic]
+\definefontsynonym[SansBoldSlanted][DummySansBoldItalic]
+\definefontsynonym[SansCaps] [DummySans]
+
+\stoptypescript
+
+\starttypescript[Xmono][all][name]
+
+\definefontsynonym[DummyMono] ['\typescripttwo'] [encoding=uc]
+\definefontsynonym[DummyMonoItalic] ['\typescripttwo/I'] [encoding=uc]
+\definefontsynonym[DummyMonoBold] ['\typescripttwo/B'] [encoding=uc]
+\definefontsynonym[DummyMonoBoldItalic]['\typescripttwo/BI'][encoding=uc]
+
+\definefontsynonym[Mono] [DummyMono]
+\definefontsynonym[MonoBold] [DummyMonoBold]
+\definefontsynonym[MonoItalic] [DummyMonoItalic]
+\definefontsynonym[MonoBoldItalic] [DummyMonoBoldItalic]
+\definefontsynonym[MonoSlanted] [DummyMonoItalic]
+\definefontsynonym[MonoBoldSlanted][DummyMonoBoldItalic]
+\definefontsynonym[MonoCaps] [DummyMono]
+
+\stoptypescript
+
+\starttypescript[Xserif][default][size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [rm] [default]
+\stoptypescript
+
+\starttypescript[Xsans][default][size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [ss] [default]
+\stoptypescript
+
+\starttypescript [Xmono][default][size]
+ \definebodyfont
+ [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
+ [tt] [default]
+\stoptypescript
+
+\starttypescript[Xserif][dtp][size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [rm] [default]
+\stoptypescript
+
+\starttypescript[Xsans][dtp][size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [ss] [default]
+\stoptypescript
+
+\starttypescript[Xmono][dtp][size]
+ \definebodyfont
+ [5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,13pt,14pt,16pt,18pt,22pt,28pt]
+ [tt] [default]
+\stoptypescript
+
+%D The following are \quotation {legacy} named fonts. Times, Palatino,
+%D and Helvetica are familiar to most users of modern \TEX\
+%D systems. These versions are accessed via the Unicode encoding
+%D enabled by \XETEX. There is no attempt to match metrics with
+%D the actual legacy fonts. These are simply familiar names.
+
+%D These typescripts, unlike others in this file, depend on those in
+%D \type{type-pre}.
+
+\starttypescript[serif][times][uc]
+
+\definefontsynonym[Times-Roman] ['Times Roman:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Times-Italic] ['Times Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Times-Bold] ['Times Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Times-BoldItalic]['Times Bold Italic:mapping=tex-text;'][encoding=uc]
+
+\stoptypescript
+
+%D Book Antiqua is Mac OS X's Palatino clone.
+
+\starttypescript[serif][palatino][uc]
+
+\definefontsynonym[Palatino] ['Book Antiqua:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Palatino-Italic] ['Book Antiqua Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Palatino-Bold] ['Book Antiqua Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Palatino-BoldItalic] ['Book Antiqua Bold Italic:mapping=tex-text'][encoding=uc]
+
+\definefontsynonym[Palatino-Slanted] [Palatino-Italic]
+\definefontsynonym[Palatino-BoldSlanted][Palatino-BoldItalic]
+\definefontsynonym[Palatino-Caps] [Palatino]
+
+\stoptypescript
+
+%D The default Helvetica doesn't have an oblique variant, so we'll
+%D go ahead and name Helvertica Neue here.
+
+\starttypescript[sans][helvetica][uc]
+
+\definefontsynonym[Helvetica] ['Helvetica Neue:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Helvetica-Oblique] ['Helvetica Neue Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Helvetica-Bold] ['Helvetica Neue Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Helvetica-BoldOblique]['Helvetica Neue Bold Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+%D Courier, as delivered on MacOSX 10.3, doesn't have an oblique
+%D variant, either. Unfortunately, none of the default Mono fonts in
+%D MacOSX have oblique|/|italic versions!
+
+\starttypescript[mono][courier][uc]
+
+\definefontsynonym[Courier] ['Courier:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[Courier-Oblique] [Courier]
+\definefontsynonym[Courier-Bold] ['Courier Bold:mapping=tex-text'][encoding=uc]
+\definefontsynonym[Courier-BoldOblique][Courier-Bold]
+
+\stoptypescript
+
+%D The following fonts go beyond the usual four variants that
+%D are accessible via the above wildcard typescripts, so they
+%D get a more expanded treatment here:
+
+\starttypescript[serif][hoefler][uc]
+
+\definefontsynonym[Hoefler] ['Hoefler Text:mapping=tex-text;
+ Ligatures=Diphthongs'] [encoding=uc]
+\definefontsynonym[HoeflerItalic]['Hoefler Text Italic:mapping=tex-text;
+ Ligatures=Diphthongs'] [encoding=uc]
+\definefontsynonym[HoeflerBlack] ['Hoefler Text Black:mapping=tex-text;
+ Ligatures=Diphthongs'] [encoding=uc]
+\definefontsynonym[HoeflerBlackItalic]['Hoefler Text Black Italic:mapping=tex-text;
+ Ligatures=Diphthongs'] [encoding=uc]
+\definefontsynonym[HoeflerSmCap] ['Hoefler Text:mapping=tex-text;
+ Ligatures=Diphthongs;
+ Letter Case=Small Caps'][encoding=uc]
+\stoptypescript
+
+\starttypescript[serif][hoefler][name]
+
+\definefontsynonym[Serif] [Hoefler]
+\definefontsynonym[SerifBold] [HoeflerBlack]
+\definefontsynonym[SerifItalic] [HoeflerItalic]
+\definefontsynonym[SerifBoldItalic] [HoeflerBlackItalic]
+\definefontsynonym[SerifSlanted] [HoeflerItalic]
+\definefontsynonym[SerifBoldSlanted][HoeflerBlackItalic]
+\definefontsynonym[SerifCaps] [HoeflerSmCap]
+
+\stoptypescript
+
+\starttypescript[sans][lucidagrande][uc]
+
+\definefontsynonym[LucidaGrande] ['Lucida Grande:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[LucidaGrandeBold]['Lucida Grande Bold:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[sans][lucidagrande][name]
+
+\definefontsynonym[Sans] [LucidaGrande]
+\definefontsynonym[SansBold] [LucidaGrandeBold]
+\definefontsynonym[SansItalic] [LucidaGrande]
+\definefontsynonym[SansBoldItalic] [LucidaGrandeBold]
+\definefontsynonym[SansSlanted] [LucidaGrande]
+\definefontsynonym[SansBoldSlanted][LucidaGrandeBold]
+\definefontsynonym[SansCaps] [LucidaGrande]
+
+\stoptypescript
+
+\starttypescript[sans][optima][uc]
+\definefontsynonym[Optima] ['Optima Regular:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[OptimaItalic] ['Optima Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[OptimaBold] ['Optima Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[OptimaBoldItalic]['Optima Bold Italic:mapping=tex-text'][encoding=uc]
+\definefontsynonym[OptimaBlack] ['Optima ExtraBlack:mapping=tex-text'] [encoding=uc]
+\stoptypescript
+
+\starttypescript[sans][optima][name]
+
+\definefontsynonym[Sans] [Optima]
+\definefontsynonym[SansBold] [OptimaBold]
+\definefontsynonym[SansItalic] [OptimaItalic]
+\definefontsynonym[SansBoldItalic] [OptimaBoldItalic]
+\definefontsynonym[SansSlanted] [OptimaItalic]
+\definefontsynonym[SansBoldSlanted][OptimaBoldItalic]
+\definefontsynonym[SansCaps] [Optima]
+
+\stoptypescript
+
+\starttypescript[sans][gillsans,gillsanslt][uc]
+
+\definefontsynonym[GillSans] ['Gill Sans:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GillSansItalic] ['Gill Sans Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GillSansBold] ['Gill Sans Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GillSansBoldItalic] ['Gill Sans Bold Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GillSansLight] ['Gill Sans Light:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GillSansLightItalic]['Gill Sans Light Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[sans][gillsans][name]
+
+\definefontsynonym[Sans] [GillSans]
+\definefontsynonym[SansBold] [GillSansBold]
+\definefontsynonym[SansItalic] [GillSansItalic]
+\definefontsynonym[SansBoldItalic] [GillSansBoldItalic]
+\definefontsynonym[SansSlanted] [GillSansItalic]
+\definefontsynonym[SansBoldSlanted][GillSansBoldItalic]
+\definefontsynonym[SansCaps] [GillSans]
+
+\stoptypescript
+
+\starttypescript[sans][gillsanslt][name]
+
+\definefontsynonym[Sans] [GillSansLight]
+\definefontsynonym[SansBold] [GillSans]
+\definefontsynonym[SansItalic] [GillSansLightItalic]
+\definefontsynonym[SansBoldItalic] [GillSansItalic]
+\definefontsynonym[SansSlanted] [GillSansLightItalic]
+\definefontsynonym[SansBoldSlanted][GillSansItalic]
+\definefontsynonym[SansCaps] [GillSansLight]
+
+\stoptypescript
+
+\starttypescript[serif,handwriting][zapfino][uc]
+
+\definefontsynonym[ZapfinoOne] ['Zapfino:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[ZapfinoTwo] ['Zapfino:mapping=tex-text;
+ Stylistic Variants=First variant glyph set'] [encoding=uc]
+\definefontsynonym[ZapfinoThree]['Zapfino:mapping=tex-text;
+ Stylistic Variants=Second variant glyph set'][encoding=uc]
+\definefontsynonym[ZapfinoFour] ['Zapfino:mapping=tex-text;
+ Stylistic Variants=Third variant glyph set'] [encoding=uc]
+\stoptypescript
+
+\starttypescript[handwriting][zapfino][name]
+
+\definefontsynonym[Handwriting][ZapfinoOne]
+
+\stoptypescript
+
+\starttypescript[serif][zapfino][name]
+
+\definefontsynonym[Serif] [ZapfinoOne]
+\definefontsynonym[SerifBold] [ZapfinoThree]
+\definefontsynonym[SerifItalic] [ZapfinoTwo]
+\definefontsynonym[SerifBoldItalic] [ZapfinoTwo]
+\definefontsynonym[SerifSlanted] [ZapfinoThree]
+\definefontsynonym[SerifBoldSlanted][ZapfinoThree]
+\definefontsynonym[SerifCaps] [ZapfinoOne]
+
+\stoptypescript
+
+\starttypescript[serif,calligraphy][applechancery][uc]
+
+\definefontsynonym[AppleChanceryOne] ['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles'] [encoding=uc]
+\definefontsynonym[AppleChanceryTwo] ['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles;
+ Design Complexity=Elegant Design Level'][encoding=uc]
+\definefontsynonym[AppleChanceryThree] ['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles;
+ Design Complexity=Flourishes Set A'] [encoding=uc]
+\definefontsynonym[AppleChanceryFour] ['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles;
+ Design Complexity=Flourishes Set B'] [encoding=uc]
+\definefontsynonym[AppleChanceryCaps] ['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles;
+ Letter Case=Small Caps'] [encoding=uc]
+\definefontsynonym[AppleChanceryCapsTwo]['Apple Chancery:mapping=tex-text;
+ Number Case=Old Styles;
+ Letter Case=Small Caps;
+ Design Complexity=Flourishes Set B'] [encoding=uc]
+\stoptypescript
+
+\starttypescript[calligraphy][applechancery][name]
+
+\definefontsynonym[Calligraphy][AppleChanceryOne]
+
+\stoptypescript
+
+\starttypescript[serif][applechancery][name]
+
+\definefontsynonym[Serif] [AppleChanceryOne]
+\definefontsynonym[SerifBold] [AppleChanceryThree]
+\definefontsynonym[SerifItalic] [AppleChanceryTwo]
+\definefontsynonym[SerifBoldItalic] [AppleChanceryFour]
+\definefontsynonym[SerifSlanted] [AppleChanceryThree]
+\definefontsynonym[SerifBoldSlanted][AppleChanceryFour]
+\definefontsynonym[SerifCaps] [AppleChanceryCaps]
+
+\stoptypescript
+
+% MS Office 2004 for Mac has impressive Unicode coverage in
+% many of its fonts.
+
+\starttypescript[serif][timesnewroman][uc]
+
+\definefontsynonym[MSTimes] ['Times New Roman:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[MSTimesItalic] ['Times New Roman Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[MSTimesBold] ['Times New Roman Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[MSTimesBoldItalic]['Times New Roman Bold Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[serif][timesnewroman][name]
+
+\definefontsynonym[Serif] [MSTimes]
+\definefontsynonym[SerifBold] [MSTimesBold]
+\definefontsynonym[SerifItalic] [MSTimesItalic]
+\definefontsynonym[SerifBoldItalic] [MSTimesBoldItalic]
+\definefontsynonym[SerifSlanted] [MSTimesItalic]
+\definefontsynonym[SerifBoldSlanted][MSTimesBoldItalic]
+\definefontsynonym[SerifCaps] [MSTimes]
+
+\stoptypescript
+
+\starttypescript[sans][arial][uc]
+
+\definefontsynonym[Arial] ['Arial:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[ArialItalic] ['Arial Italic:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[ArialBold] ['Arial Bold:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[ArialBoldItalic]['Arial Bold Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[sans][arial][name]
+
+\definefontsynonym[Sans] [Arial]
+\definefontsynonym[SansBold] [ArialBold]
+\definefontsynonym[SansItalic] [ArialItalic]
+\definefontsynonym[SansBoldItalic] [ArialBoldItalic]
+\definefontsynonym[SansSlanted] [ArialItalic]
+\definefontsynonym[SansBoldSlanted][ArialBoldItalic]
+\definefontsynonym[SansCaps] [Arial]
+
+\stoptypescript
+
+%D MS Office comes with an installation of the Lucida family in
+%D TrueType form. It's nice, except\dots\ no math, no slanted, no caps
+%D and some other auxiliary fonts.
+
+\starttypescript [serif] [lucida] [uc]
+
+ \definefontsynonym [LucidaBright] ['Lucida Bright:mapping=tex-text'] [encoding=uc]
+ \definefontsynonym [LucidaBright-Demi] ['Lucida Bright Demibold:mapping=tex-text'][encoding=uc]
+ \definefontsynonym [LucidaBright-DemiItalic] ['Lucida Bright Demibold:mapping=tex-text'][encoding=uc]
+ \definefontsynonym [LucidaBright-Italic] ['Lucida Bright:mapping=tex-text'] [encoding=uc]
+
+ \definefontsynonym [LucidaBrightSmallcaps] [LucidaBright]
+ \definefontsynonym [LucidaBrightSmallcaps-Demi][LucidaBright-Demi]
+ \definefontsynonym [LucidaBright-Oblique] [LucidaBright-Italic]
+
+\stoptypescript
+
+\starttypescript [sans] [lucida] [uc]
+ \definefontsynonym [LucidaSans] ['Lucida Sans Regular:mapping=tex-text'] [encoding=uc]
+ \definefontsynonym [LucidaSans-Demi] ['Lucida Sans Demibold Roman:mapping=tex-text'] [encoding=uc]
+ \definefontsynonym [LucidaSans-DemiItalic]['Lucida Sans Demibold Italic:mapping=tex-text'][encoding=uc]
+ \definefontsynonym [LucidaSans-Italic] ['Lucida Sans Italic:mapping=tex-text'] [encoding=uc]
+
+ \definefontsynonym [LucidaSans-Bold] [LucidaSans-Demi]
+ \definefontsynonym [LucidaSans-BoldItalic][LucidaSans-DemiItalic]
+
+\stoptypescript
+
+\starttypescript [mono] [lucida] [uc]
+
+ \definefontsynonym [LucidaSans-Typewriter] ['Lucida Sans Typewriter Regular'] [encoding=uc]
+ \definefontsynonym [LucidaSans-TypewriterBold] ['Lucida Sans Typewriter Bold'] [encoding=uc]
+ \definefontsynonym [LucidaSans-TypewriterBoldOblique]['Lucida Sans Typewriter Bold Oblique'][encoding=uc]
+ \definefontsynonym [LucidaSans-TypewriterOblique] ['Lucida Sans Typewriter Oblique'] [encoding=uc]
+
+\stoptypescript
+
+\starttypescript [calligraphy] [lucida] [uc]
+
+ \definefontsynonym[LucidaCalligraphy-Italic]['Lucida Calligraphy Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+% No casual that I know of
+
+\starttypescript[handwriting][lucida][uc]
+
+ \definefontsynonym[LucidaHandwriting-Italic]['Lucida Handwriting Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[fax][lucida][uc]
+
+ \definefontsynonym[LucidaFax] ['Lucida Fax Regular:mapping=tex-text'] [encoding=uc]
+ \definefontsynonym[LucidaFax-Demi] ['Lucida Fax Demibold:mapping=tex-text'] [encoding=uc]
+ \definefontsynonym[LucidaFax-DemiItalic]['Lucida Fax Demibold Italic:mapping=tex-text'][encoding=uc]
+ \definefontsynonym[LucidaFax-Italic] ['Lucida Fax Italic:mapping=tex-text'] [encoding=uc]
+
+\stoptypescript
+
+%D Gentium is from SIL, the fine makers of \XETEX, and it's not only
+%D very complete with Roman and Italic Unicode support, but very
+%D attractive.
+
+\starttypescript[serif][gentium][uc]
+
+\definefontsynonym[Gentium] ['Gentium:mapping=tex-text'] [encoding=uc]
+\definefontsynonym[GentiumItalic]['Gentium Italic:mapping=tex-text'][encoding=uc]
+
+\stoptypescript
+
+\starttypescript[serif][gentium][name]
+
+\definefontsynonym[Serif] [Gentium]
+\definefontsynonym[SerifBold] [Gentium]
+\definefontsynonym[SerifItalic] [GentiumItalic]
+\definefontsynonym[SerifBoldItalic] [GentiumItalic]
+\definefontsynonym[SerifSlanted] [GentiumItalic]
+\definefontsynonym[SerifBoldSlanted][GentiumItalic]
+\definefontsynonym[SerifCaps] [Gentium]
+
+\stoptypescript
+
+\stoptypescriptcollection
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/typo-ini.tex b/Master/texmf-dist/tex/context/base/typo-ini.tex
new file mode 100644
index 00000000000..e249b51e07e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/typo-ini.tex
@@ -0,0 +1,40 @@
+%D \module
+%D [ file=typo-ini,
+%D version=2000.16.09,
+%D title=\CONTEXT\ Typographic Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Since \CONTEXT\ is dealing with typographics, isn't
+%D September 2000 a bit late to start writing this module? It
+%D may seem so, but since more and more languages are
+%D supported, we think it is time to isolate language specific
+%D typographic extensions in modules. The first language that
+%D demands this is Chinese, and more will follow.
+
+\writestatus{loading}{Context Typographic Macros (ini)}
+
+\unprotect
+
+%D \macros
+%D {ifvertical}
+%D
+%D The following switch can be used to signal macros that they
+%D should adapt their behaviour.
+
+\newif\ifvertical % maybe also ifreverse
+
+%D \macros
+%D {vhbox}
+%D
+%D A stupid but useful macro.
+
+\def\vhbox{\ifvertical\vbox\else\hbox\fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-000.tex b/Master/texmf-dist/tex/context/base/unic-000.tex
new file mode 100644
index 00000000000..cb4c1fe8abd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-000.tex
@@ -0,0 +1,135 @@
+%D \module
+%D [ file=unic-000,
+%D version=2002.12.03,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 0,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% \startunicodevector 0
+% \ifcase\numexpr(#1-159)
+% \@@unknownchar\or
+% \@@unknownchar\or
+% exclamdown\or
+% textcent\or
+% textsterling\or
+% textcurrency\or
+% ydiaeresis\else
+% \@@unknownchar
+% \fi
+% \stopunicodevector
+%
+% 20\% faster:
+
+\startunicodevector 0
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1-159\relax
+ \unknownchar \or
+ \nonbreakablespace \or
+ \exclamdown \or
+ \textcent \or
+ \textsterling \or
+ \textcurrency \or
+ \textyen \or
+ \textbrokenbar \or
+ \sectionmark \or
+ \textdiaeresis \or
+ \copyright \or
+ \ordfeminine \or % FEMININE ORDINAL INDICATOR
+ \leftguillemot \or % LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ \textlognot \or
+ \softhyphen \or
+ \registered \or
+ \textmacron \or
+ \textdegree \or
+ \textpm \or
+ \twosuperior \or
+ \threesuperior \or
+ \textacute \or
+ \textmu \or % MICRO SIGN
+ \paragraphmark \or % PILCROW SIGN
+ \periodcentered \or
+ \textcedilla \or
+ \onesuperior \or
+ \ordmasculine \or % MASCULINE ORDINAL INDICATOR
+ \rightguillemot \or % RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ \onequarter \or
+ \onehalf \or
+ \threequarter \or
+ \questiondown \or
+ \Agrave \or
+ \Aacute \or
+ \Acircumflex \or
+ \Atilde \or
+ \Adiaeresis \or
+ \Aring \or
+ \AEligature \or
+ \Ccedilla \or
+ \Egrave \or
+ \Eacute \or
+ \Ecircumflex \or
+ \Ediaeresis \or
+ \Igrave \or
+ \Iacute \or
+ \Icircumflex \or
+ \Idiaeresis \or
+ \Eth \or % \Eth \or
+ \Ntilde \or
+ \Ograve \or
+ \Oacute \or
+ \Ocircumflex \or
+ \Otilde \or
+ \Odiaeresis \or
+ \textmultiply \or
+ \Ostroke \or
+ \Ugrave \or
+ \Uacute \or
+ \Ucircumflex \or
+ \Udiaeresis \or
+ \Yacute \or
+ \Thorn \or
+ \ssharp \or
+ \agrave \or
+ \aacute \or
+ \acircumflex \or
+ \atilde \or
+ \adiaeresis \or
+ \aring \or
+ \aeligature \or
+ \ccedilla \or
+ \egrave \or
+ \eacute \or
+ \ecircumflex \or
+ \ediaeresis \or
+ \igrave \or
+ \iacute \or
+ \icircumflex \or
+ \idiaeresis \or
+ \eth \or % \eth \or
+ \ntilde \or
+ \ograve \or
+ \oacute \or
+ \ocircumflex \or
+ \otilde \or
+ \odiaeresis \or
+ \textdiv \or
+ \ostroke \or
+ \ugrave \or
+ \uacute \or
+ \ucircumflex \or
+ \udiaeresis \or
+ \yacute \or
+ \thorn \or
+ \ydiaeresis \else
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-001.tex b/Master/texmf-dist/tex/context/base/unic-001.tex
new file mode 100644
index 00000000000..6c6af6f4c63
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-001.tex
@@ -0,0 +1,219 @@
+%D \module
+%D [ file=unic-001,
+%D version=2002.12.03,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 1,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D Readable:
+%D
+%D \starttyping
+%D \startunicodevector 1
+%D \ifcase#1\or
+%D unknownchar\or Abreve\or abreve\or
+%D ....
+%D Zcaron\or zcaron\else unknownchar\fi
+%D \stopunicodevector
+%D
+%D But we can speed things up, watch how we avoid zero and \TEX's
+%D automatically added \type {\relax}.
+
+% remark:
+% - gcommaaccent, kcomaaccent, lcomaaccent, ncomaaccent, rcomaaccent
+% bear the name "WITH CEDILLA" in Unicode
+% - scomaaccent and tcomaaccent point to the "WITH CEDILLA" in the
+% Adobe Glyph List
+
+\startunicodevector 1
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1\relax
+ \Amacron \or
+ \amacron \or
+ \Abreve \or
+ \abreve \or
+ \Aogonek \or
+ \aogonek \or
+ \Cacute \or
+ \cacute \or
+ \Ccircumflex \or
+ \ccircumflex \or
+ \Cdotaccent \or
+ \cdotaccent \or
+ \Ccaron \or
+ \ccaron \or
+ \Dcaron \or
+ \dcaron \or
+ \Dstroke \or
+ \dstroke \or
+ \Emacron \or
+ \emacron \or
+ \Ebreve \or
+ \ebreve \or
+ \Edotaccent \or
+ \edotaccent \or
+ \Eogonek \or
+ \eogonek \or
+ \Ecaron \or
+ \ecaron \or
+ \Gcircumflex \or
+ \gcircumflex \or
+ \Gbreve \or
+ \gbreve \or
+ \Gdotaccent \or
+ \gdotaccent \or
+ \Gcommaaccent \or % WITH CEDILLA
+ \gcommaaccent \or % WITH CEDILLA
+ \Hcircumflex \or
+ \hcircumflex \or
+ \Hstroke \or
+ \hstroke \or
+ \Itilde \or
+ \itilde \or
+ \Imacron \or
+ \imacron \or
+ \Ibreve \or
+ \ibreve \or
+ \Iogonek \or
+ \iogonek \or
+ \Idotaccent \or
+ \dotlessi \or
+ \IJligature \or
+ \ijligature \or
+ \Jcircumflex \or
+ \jcircumflex \or
+ \Kcommaaccent \or % WITH CEDILLA
+ \kcommaaccent \or % WITH CEDILLA
+ \kkra \or % \kkra \or
+ \Lacute \or
+ \lacute \or
+ \Lcommaaccent \or % WITH CEDILLA
+ \lcommaaccent \or % WITH CEDILLA
+ \Lcaron \or
+ \lcaron \or
+ \Ldotmiddle \or % \Ldotmiddle \or
+ \ldotmiddle \or % \ldotmiddle \or
+ \Lstroke \or
+ \lstroke \or
+ \Nacute \or
+ \nacute \or
+ \Ncommaaccent \or % WITH CEDILLA
+ \ncommaaccent \or % WITH CEDILLA
+ \Ncaron \or
+ \ncaron \or
+ \napostrophe \or
+ \Neng \or
+ \neng \or
+ \Omacron \or
+ \omacron \or
+ \Obreve \or
+ \obreve \or
+ \Ohungarumlaut \or
+ \ohungarumlaut \or
+ \OEligature \or
+ \oeligature \or
+ \Racute \or
+ \racute \or
+ \Rcommaaccent \or % WITH CEDILLA
+ \rcommaaccent \or % WITH CEDILLA
+ \Rcaron \or
+ \rcaron \or
+ \Sacute \or
+ \sacute \or
+ \Scircumflex \or
+ \scircumflex \or
+ \Scedilla \or
+ \scedilla \or
+ \Scaron \or
+ \scaron \or
+ \Tcedilla \or
+ \tcedilla \or
+ \Tcaron \or
+ \tcaron \or
+ \Tstroke \or
+ \tstroke \or
+ \Utilde \or
+ \utilde \or
+ \Umacron \or
+ \umacron \or
+ \Ubreve \or
+ \ubreve \or
+ \Uring \or
+ \uring \or
+ \Uhungarumlaut \or
+ \uhungarumlaut \or
+ \Uogonek \or
+ \uogonek \or
+ \Wcircumflex \or
+ \wcircumflex \or
+ \Ycircumflex \or
+ \ycircumflex \or
+ \Ydiaeresis \or
+ \Zacute \or
+ \zacute \or
+ \Zdotaccent \or
+ \zdotaccent \or
+ \Zcaron \or
+ \zcaron \or
+ \slong \or % 127 \slong \else
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \textflorin \or % 146
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \Ohorn \or % 160
+ \ohorn \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \unknownchar \or
+ \Uhorn \or % 175
+ \uhorn \else
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-002.tex b/Master/texmf-dist/tex/context/base/unic-002.tex
new file mode 100644
index 00000000000..bd9e3468637
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-002.tex
@@ -0,0 +1,31 @@
+%D \module
+%D [ file=unic-002,
+%D version=2002.12.03,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 2,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 2
+ \ifcase\numexpr#1-198\relax
+ \strippedcsname \textcircumflex \or
+ \strippedcsname \textcaron \else
+ \ifcase\numexpr#1-216\relax
+ \strippedcsname \textbreve \or
+ \strippedcsname \textdotaccent \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \textogonek \or
+ \strippedcsname \texttilde \or
+ \strippedcsname \texthungarumlaut \else
+ \strippedcsname \unknownchar
+ \fi\fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-003.tex b/Master/texmf-dist/tex/context/base/unic-003.tex
new file mode 100644
index 00000000000..1ce1ade8d6a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-003.tex
@@ -0,0 +1,141 @@
+%D \module
+%D [ file=unic-003,
+%D version=2005.01.26,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 3,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 3
+ \ifcase\numexpr#1-132\relax
+ % special greek
+ \strippedcsname \greektonos \or
+ \strippedcsname \greekdialytikatonos \or
+ \strippedcsname \greekAlphatonos \or
+ \strippedcsname \greekanoteleia \or
+ \strippedcsname \greekEpsilontonos \or
+ \strippedcsname \greekEtatonos \or
+ \strippedcsname \greekIotatonos \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \greekOmicrontonos \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \greekUpsilontonos \or
+ \strippedcsname \greekOmegatonos \or
+ \strippedcsname \greekiotadialytikatonos \or
+ % normal greek
+ \strippedcsname \greekAlpha \or
+ \strippedcsname \greekBeta \or
+ \strippedcsname \greekGamma \or
+ \strippedcsname \greekDelta \or
+ \strippedcsname \greekEpsilon \or
+ \strippedcsname \greekZeta \or
+ \strippedcsname \greekEta \or
+ \strippedcsname \greekTheta \or
+ \strippedcsname \greekIota \or
+ \strippedcsname \greekKappa \or
+ \strippedcsname \greekLambda \or
+ \strippedcsname \greekMu \or
+ \strippedcsname \greekNu \or
+ \strippedcsname \greekXi \or
+ \strippedcsname \greekOmicron \or
+ \strippedcsname \greekPi \or
+ \strippedcsname \greekRho \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \greekSigma \or
+ \strippedcsname \greekTau \or
+ \strippedcsname \greekUpsilon \or
+ \strippedcsname \greekPhi \or
+ \strippedcsname \greekChi \or
+ \strippedcsname \greekPsi \or
+ \strippedcsname \greekOmega \or
+ % special greek
+ \strippedcsname \greekIotadialytika \or
+ \strippedcsname \greekUpsilondialytika \or
+ \strippedcsname \greekalphatonos \or
+ \strippedcsname \greekepsilontonos \or
+ \strippedcsname \greeketatonos \or
+ \strippedcsname \greekiotatonos \or
+ \strippedcsname \greekupsilondialytikatonos \or
+ % normal greek
+ \strippedcsname \greekalpha \or
+ \strippedcsname \greekbeta \or
+ \strippedcsname \greekgamma \or
+ \strippedcsname \greekdelta \or
+ \strippedcsname \greekepsilon \or
+ \strippedcsname \greekzeta \or
+ \strippedcsname \greeketa \or
+ \strippedcsname \greektheta \or
+ \strippedcsname \greekiota \or
+ \strippedcsname \greekkappa \or
+ \strippedcsname \greeklambda \or
+ \strippedcsname \greekmu \or
+ \strippedcsname \greeknu \or
+ \strippedcsname \greekxi \or
+ \strippedcsname \greekomicron \or
+ \strippedcsname \greekpi \or
+ \strippedcsname \greekrho \or
+ \strippedcsname \greekfinalsigma \or
+ \strippedcsname \greeksigma \or
+ \strippedcsname \greektau \or
+ \strippedcsname \greekupsilon \or
+ \strippedcsname \greekphi \or
+ \strippedcsname \greekchi \or
+ \strippedcsname \greekpsi \or
+ \strippedcsname \greekomega \or
+ % special greek
+ \strippedcsname \greekiotadialytika \or
+ \strippedcsname \greekupsilondialytika \or
+ \strippedcsname \greekomicrontonos \or
+ \strippedcsname \greekupsilontonos \or
+ \strippedcsname \greekomegatonos \or % was greeek!
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or % beta alt
+ \strippedcsname \greekthetaalt \or
+ \strippedcsname \unknownchar \or % upsilon hook
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \greekphialt \or
+ \strippedcsname \greekpialt \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or % Sampi
+ \strippedcsname \unknownchar \or % sampi
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or % kappa alt
+ \strippedcsname \greekrhoalt \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \unknownchar \or
+ \strippedcsname \greekepsilonalt \else
+ \strippedcsname \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-004.tex b/Master/texmf-dist/tex/context/base/unic-004.tex
new file mode 100644
index 00000000000..4ab7d5fb5ab
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-004.tex
@@ -0,0 +1,290 @@
+%D \module
+%D [ file=unic-004,
+%D version=2005.01.27,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 4,
+%D author=Mikael Persson \& Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 4
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1\relax
+ \cyrillicEgrave \or % 04-00 \uchar0{200} aswell
+ \cyrillicYO \or % 04-01 Capital YO (or IO)
+ \cyrillicDJE \or % 04-02
+ \cyrillicGJE \or % 04-03 not in enco-uc.tex
+ \cyrillicIE \or % 04-04 Ukrainian IE
+ \cyrillicDZE \or % 04-05
+ \cyrillicII \or % 04-06 Byelorussian-ukrainian I
+ \cyrillicYI \or % 04-07
+ \cyrillicJE \or % 04-08 same letter as latin J?
+ \cyrillicLJE \or % 04-09
+ \cyrillicNJE \or % 04-0A
+ \cyrillicTSHE \or % 04-0B
+ \cyrillicKJE \or % 04-0C
+ \cyrillicIgrave \or % 04-0D I with grave
+ \cyrillicUSHRT \or % 04-0E
+ \cyrillicDZHE \or % 04-0F
+ \cyrillicA \or % 04-10
+ \cyrillicB \or
+ \cyrillicV \or
+ \cyrillicG \or
+ \cyrillicD \or
+ \cyrillicE \or
+ \cyrillicZH \or
+ \cyrillicZ \or
+ \cyrillicI \or
+ \cyrillicISHRT \or
+ \cyrillicK \or
+ \cyrillicL \or
+ \cyrillicM \or
+ \cyrillicN \or
+ \cyrillicO \or
+ \cyrillicP \or
+ \cyrillicR \or
+ \cyrillicS \or
+ \cyrillicT \or
+ \cyrillicU \or
+ \cyrillicF \or
+ \cyrillicH \or
+ \cyrillicC \or
+ \cyrillicCH \or
+ \cyrillicSH \or
+ \cyrillicSHCH \or
+ \cyrillicHRDSN \or
+ \cyrillicERY \or
+ \cyrillicSFTSN \or
+ \cyrillicEREV \or
+ \cyrillicYU \or
+ \cyrillicYA \or
+ \cyrillica \or % 04-30
+ \cyrillicb \or
+ \cyrillicv \or
+ \cyrillicg \or
+ \cyrillicd \or
+ \cyrillice \or
+ \cyrilliczh \or
+ \cyrillicz \or
+ \cyrillici \or
+ \cyrillicishrt \or
+ \cyrillick \or
+ \cyrillicl \or
+ \cyrillicm \or
+ \cyrillicn \or
+ \cyrillico \or
+ \cyrillicp \or
+ \cyrillicr \or
+ \cyrillics \or
+ \cyrillict \or
+ \cyrillicu \or
+ \cyrillicf \or
+ \cyrillich \or
+ \cyrillicc \or
+ \cyrillicch \or
+ \cyrillicsh \or
+ \cyrillicshch \or
+ \cyrillichrdsn \or
+ \cyrillicery \or
+ \cyrillicsftsn \or
+ \cyrillicerev \or
+ \cyrillicyu \or
+ \cyrillicya \or % 044F
+ \cyrillicegrave \or % 0450 not i enco-uc.tex but same as \uchar0{232}
+ \cyrillicio \or % 0451 small yo (or io)
+ \cyrillicdje \or % 0452 serbian letter
+ \cyrillicgje \or % 0453 macedonian letter not in enco-uc.tex
+ \cyrillicie \or % 0454 ukrainian ie
+ \cyrillicdze \or % 0455 macedonian zelo
+ \cyrillicii \or % 0456 byelorussian-ukrainian i.
+ \cyrillicyi \or % 0457
+ \cyrillicje \or % 0458 not in enco-uc.tex same as latin j?
+ \cyrilliclje \or % 0459
+ \cyrillicnje \or % 045A
+ \cyrillictshe \or % 045B
+ \cyrillickje \or % 045C macedonian, not in enco-uc.tex
+ \cyrillicigrave \or % 045D macedonian, cyr i with grave not in enco-uc.tex
+ \cyrillicushrt \or % 045E
+ \cyrillicdzhe \or % 045F
+ \cyrillicOMEGA \or % 0460 Omega not in enco-uc.tex
+ \cyrillicomega \or % 0461 omega not in enco-uc.tex
+ \cyrillicYAT \or % 0462 Yat not in enco-uc.tex
+ \cyrillicyat \or % 0463 Yat not in enco-uc.tex
+ \cyrillicEiotified \or % 0464 iotified E not in enco-uc.tex
+ \cyrilliceiotified \or % 0465 iotified e not in enco-uc.tex
+ \cyrillicLITTLEYUS \or % 0466 Little Yus not in enco-enc.tex
+ \cyrilliclittleyus \or % 0467 Little yus not in enco-enc.tex
+ \cyrillicLITTLEYUSiotified \or % 0468 Little Yus iotified not in enco-enc.tex
+ \cyrilliclittleyusiotified \or % 0469 Little yus iotified not in enco-enc.tex
+ \cyrillicBIGYUS \or % 046A Big Yus not in enco-enc.tex
+ \cyrillicbigyus \or % 046B Big yus not in enco-enc.tex
+ \cyrillicBIGYUSiotified \or % 046C Big Yus iotified not in enco-enc.tex
+ \cyrillicbigyusiotified \or % 046D Big yus iotified not in enco-enc.tex
+ \cyrillicKSI \or % 046E Ksi not in enco-enc.tex
+ \cyrillicksi \or % 046F ksi not in enco-enc.tex
+ \cyrillicPSI \or % 0470 Psi not in enco-enc.tex
+ \cyrillicpsi \or % 0471 psi not in enco-enc.tex
+ \cyrillicFITA \or % 0472 Fita not in enco-enc.tex
+ \cyrillicfita \or % 0473 fita not in enco-enc.tex
+ \cyrillicIZHITSA \or % 0474 Izhitsa not in enco-enc.tex
+ \cyrillicizhitsa \or % 0475 izhitsa not in enco-enc.tex
+ \cyrillicIZHITSAdoublegrave \or % 0476 Izhitsa double grave not in enco-enc.tex
+ \cyrillicizhitsadoublegrave \or % 0477 izhitsa double grave not in enco-enc.tex
+ \cyrillicUK \or % 0478 UK not in enco-enc.tex
+ \cyrillicuk \or % 0479 uk not in enco-enc.tex
+ \cyrillicOMEGAround \or % 047A Round Omega not in enco-enc.tex
+ \cyrillicomegaround \or % 047B Round omega not in enco-enc.tex
+ \cyrillicOMEGAtitlo \or % 047C Omega with titlo not in enco-enc.tex
+ \cyrillicomegatitlo \or % 047D omega with titlo not in enco-enc.tex
+ \cyrillicOT \or % 047E OT not in enco-enc.tex
+ \cyrillicot \or % 047F ot not in enco-enc.tex
+ \cyrillicKOPPA \or % 0480 KOPPA not in enco-enc.tex
+ \cyrillickoppa \or % 0481 koppa not in enco-enc.tex
+ \unknownchar \or % 0482
+ \cyrillicTITLO \or % 0483 TITLO not in enco-enc.tex
+ \cyrillicPALATALIZATION \or % 0484 PALATALIZATION not in enco-enc.tex
+ \cyrillicDASIAPNEUMATA \or % 0485 DASIA PNEUMATA not in enco-enc.tex
+ \cyrillicPSILIPNEUMATA \or % 0486 PSILI PNEUMATA not in enco-enc.tex
+ \unknownchar \or % 0487
+ \unknownchar \or % 0488
+ \unknownchar \or % 0489
+ \cyrillicISHRTtail \or % 048A ISHRT with tail not in enco-enc.tex
+ \cyrillicishrttail \or % 048B ishrt with tail not in enco-enc.tex
+ \cyrillicSEMISOFT \or % 048C SEMISOFT not in enco-enc.tex
+ \cyrillicsemisoft \or % 048D semisoft not in enco-enc.tex
+ \cyrillicERtick \or % 048E ER with tick not in enco-enc.tex
+ \cyrillicertick \or % 048F er with tick not in enco-enc.tex
+ \cyrillicGHEupturn \or % 0490 GHE with upturn not in enco-enc.tex
+ \cyrillicgheupturn \or % 0491 ghe with upturn not in enco-enc.tex
+ \cyrillicGHEstroke \or % 0492 GHE with stroke not in enco-enc.tex
+ \cyrillicghestroke \or % 0493 ghe with stroke not in enco-enc.tex
+ \cyrillicGHEmidhook \or % 0494 GHE with middle hook
+ \cyrillicghemidhook \or % 0495 ghe with middle hook
+ \cyrillicZHEdescender \or % 0496 ZHE with descender
+ \cyrilliczhedescender \or % 0497 zhe with descender
+ \cyrillicZDSC \or % 0498 ZE with descender
+ \cyrilliczdsc \or % 0499 ze with descender
+ \cyrillicKADC \or % 049A KA with descender
+ \cyrillickadc \or % 049B ka with descender
+ \cyrillicKAvertstroke \or % 049C KA with vertical stroke
+ \cyrillickavertstroke \or % 049D ka with vertical stroke
+ \cyrillicKAstroke \or % 049E KA with stroke
+ \cyrillickastroke \or % 049F ka with stroke
+ \cyrillicKAbashkir \or % 04A0 KA bashkir
+ \cyrillickabashkir \or % 04A1 ka bashkir
+ \cyrillicENDC \or % 04A2 EN with descender
+ \cyrillicendc \or % 04A3 en with descender
+ \cyrillicENGHE \or % 04A4 EN GHE
+ \cyrillicenghe \or % 04A5 en ghe
+ \cyrillicPEmidhook \or % 04A6 PE with middle hook
+ \cyrillicpemidhook \or % 04A7 pe with middle hook
+ \cyrillicHA \or % 04A8 Abkhasian HA
+ \cyrillicha \or % 04A9 Abkhasian ha
+ \cyrillicSDSC \or % 04AA S with descender
+ \cyrilliccdsc \or % 04AB s with descender
+ \cyrillicTEDC \or % 04AC TE with descender
+ \cyrillictedc \or % 04AD te with descender
+ \cyrillicYstr \or % 04AE Y straight
+ \cyrillicystr \or % 04AF y straight
+ \cyrillicYstrstroke \or % 04B0 Y straight with stroke
+ \cyrillicystrstroke \or % 04B1 y straight with stroke
+ \cyrillicHADC \or % 04B2 HA with descender
+ \cyrillichadc \or % 04B3 ha with descender
+ \cyrillicTETSE \or % 04B4 TE TSE
+ \cyrillictetse \or % 04B5 te tse
+ \cyrillicCHEDC \or % 04B6 CHE with descender
+ \cyrillicchedc \or % 04B7 che with descender
+ \cyrillicCHEvertstroke \or % 04B8 CHE with vertical stroke
+ \cyrillicchevertstroke \or % 04B9 che with vertical stroke
+ \cyrillicSHHA \or % 04BA SHHA
+ \cyrillicshha \or % 04BB
+ \cyrillicCHEabkhasian \or % 04BC Abkhasian CHE
+ \cyrilliccheabkhasian \or % 04BD Abkhasian che
+ \cyrillicCHEDCabkhasian \or % 04BE Abkhasian CHE with descender
+ \cyrillicchedcabkhasian \or % 04BF Abkhasian che with descender
+ \cyrillicPALOCHKA \or % 04C0 PALOCHKA
+ \cyrillicZHEbreve \or % 04C1 ZHE with breve
+ \cyrilliczhebreve \or % 04C2 zhe with breve
+ \cyrillicKAhook \or % 04C3 KA with hook
+ \cyrillickahook \or % 04C4 ka with hook
+ \cyrillicELtail \or % 04C5 EL with tail
+ \cyrilliceltail \or % 04C6 el with tail
+ \cyrillicENhook \or % 04C7 EN with hook
+ \cyrillicenhook \or % 04C8 en with hook
+ \cyrillicENtail \or % 04C9 EN with tail
+ \cyrillicentail \or % 04CA en with tail
+ \cyrillicCHEkhakassian \or % 04CB Khakassian CHE
+ \cyrillicchekhakassian \or % 04CC Khakassian che
+ \cyrillicEMtail \or % 04CD EM with tail
+ \cyrillicemtail \or % 04CE em with tail
+ \cyrillicAbreve \or % 04D0 A with breve (\uchar1{2})
+ \cyrillicabreve \or % 04D1 a with breve (\uchar1{3})
+ \cyrillicAdiaeresis \or % 04D2 A with diaeresis (\uchar0{196})
+ \cyrillicadiaeresis \or % 04D3 a with diaeresis (\uchar0{228})
+ \cyrillicAE \or % 04D4 AE (\uchar0{198})
+ \cyrillicae \or % 04D5 ae (\uchar0{230})
+ \cyrillicEbreve \or % 04D6
+ \cyrillicebreve \or % 04D7
+ \cyrillicSCHWA \or % 04D8
+ \cyrillicschwa \or % 04D9
+ \cyrillicSCHWAdiaeresis \or % 04DA
+ \cyrillicschwadiaeresis \or % 04DB
+ \cyrillicZHEdiaeresis \or % 04DC
+ \cyrilliczhediaeresis \or % 04DD
+ \cyrillicZEdiaeresis \or % 04DE
+ \cyrilliczediaeresis \or % 04DF
+ \cyrillicDZEabkhasian \or % 04E0
+ \cyrillicdzeabkhasian \or % 04E1
+ \cyrillicImacron \or % 04E2
+ \cyrillicimacron \or % 04E3
+ \cyrillicIdiaeresis \or % 04E4
+ \cyrillicidiaeresis \or % 04E5
+ \cyrillicOdiaeresis \or % 04E6
+ \cyrillicodiaeresis \or % 04E7
+ \cyrillicObarred \or % 04E8
+ \cyrillicobarred \or % 04E9
+ \cyrillicObarreddiaeresis \or % 04EA
+ \cyrillicobarreddiaeresis \or % 04EB
+ \cyrillicEdiaeresis \or % 04EC
+ \cyrillicediaeresis \or % 04ED
+ \cyrillicUmacron \or % 04EE
+ \cyrillicumacron \or % 04EF
+ \cyrillicUdiaeresis \or % 04F0
+ \cyrillicudiaeresis \or % 04F1
+ \cyrillicUdoubleacute \or % 04F2
+ \cyrillicudoubleacute \or % 04F3
+ \cyrillicCHEdiaeresis \or % 04F4
+ \cyrillicchediaeresis \or % 04F5
+ \unknownchar \or % 04F6
+ \unknownchar \or % 04F7
+ \cyrillicYERUdiaeresis \or % 04F8
+ \cyrillicyerudiaeresis \else
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
+
+% \enableregime[utf]
+%
+% \definetypeface [russian] [rm] [serif] [computer-modern] [default] [encoding=t2a]
+%
+% \setupbodyfont[russian]
+%
+% \starttext
+%
+% \startbuffer
+% Мама и Папа % Some russian characters
+% \stopbuffer
+%
+% \chardef\utfunicodetracer=0 \blank \getbuffer \blank
+% \chardef\utfunicodetracer=2 \blank \getbuffer \blank
+% \chardef\utfunicodetracer=7 \blank \getbuffer \blank
+%
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/unic-005.tex b/Master/texmf-dist/tex/context/base/unic-005.tex
new file mode 100644
index 00000000000..06abac6a62d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-005.tex
@@ -0,0 +1,50 @@
+%D \module
+%D [ file=unic-005,
+%D version=2005.01.27,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 5,
+%D author=Adam Lindsay,
+%D date=\currentdate,
+%D copyright=\PRAGMA]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 5
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1-224\relax
+ \hebrewAlef \or % 05D0
+ \hebrewBet \or
+ \hebrewGimel \or
+ \hebrewDalet \or
+ \hebrewHe \or
+ \hebrewVav \or
+ \hebrewZayin \or
+ \hebrewHet \or
+ \hebrewTet \or
+ \hebrewYod \or
+ \hebrewKaffinal \or
+ \hebrewKaf \or
+ \hebrewLamed \or
+ \hebrewMemfinal \or
+ \hebrewMem \or
+ \hebrewNunfinal \or
+ \hebrewNun \or
+ \hebrewSamekh \or
+ \hebrewAyin \or
+ \hebrewPefinal \or
+ \hebrewPe \or
+ \hebrewTsadifinal \or
+ \hebrewTsadi \or
+ \hebrewQof \or
+ \hebrewResh \or
+ \hebrewShin \or
+ \hebrewTav \else % 05EA
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/base/unic-030.tex b/Master/texmf-dist/tex/context/base/unic-030.tex
new file mode 100644
index 00000000000..ef42c807a80
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-030.tex
@@ -0,0 +1,113 @@
+%D \module
+%D [ file=unic-030,
+%D version=2004.11.18,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 30,
+%D author=Adam Lindsay,
+%D date=\currentdate,
+%D copyright={PRAGMA / Adam Lindsay}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 30
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1-160\relax
+ \Adotbelow \or
+ \adotbelow \or
+ \Ahook \or
+ \ahook \or
+ \Acircumflexacute \or
+ \acircumflexacute \or
+ \Acircumflexgrave \or
+ \acircumflexgrave \or
+ \Acircumflexhook \or
+ \acircumflexhook \or
+ \Acircumflextilde \or
+ \acircumflextilde \or
+ \Acircumflexdotbelow \or
+ \acircumflexdotbelow \or
+ \Abreveacute \or
+ \abreveacute \or
+ \Abrevegrave \or
+ \abrevegrave \or
+ \Abrevehook \or
+ \abrevehook \or
+ \Abrevetilde \or
+ \abrevetilde \or
+ \Abrevedotbelow \or
+ \abrevedotbelow \or
+ \Edotbelow \or
+ \edotbelow \or
+ \Ehook \or
+ \ehook \or
+ \Etilde \or
+ \etilde \or
+ \Ecircumflexacute \or
+ \ecircumflexacute \or
+ \Ecircumflexgrave \or
+ \ecircumflexgrave \or
+ \Ecircumflexhook \or
+ \ecircumflexhook \or
+ \Ecircumflextilde \or
+ \ecircumflextilde \or
+ \Ecircumflexdotbelow \or
+ \ecircumflexdotbelow \or
+ \Ihook \or
+ \ihook \or
+ \Idotbelow \or
+ \idotbelow \or
+ \Odotbelow \or
+ \odotbelow \or
+ \Ohook \or
+ \ohook \or
+ \Ocircumflexacute \or
+ \ocircumflexacute \or
+ \Ocircumflexgrave \or
+ \ocircumflexgrave \or
+ \Ocircumflexhook \or
+ \ocircumflexhook \or
+ \Ocircumflextilde \or
+ \ocircumflextilde \or
+ \Ocircumflexdotbelow \or
+ \ocircumflexdotbelow \or
+ \Ohornacute \or
+ \ohornacute \or
+ \Ohorngrave \or
+ \ohorngrave \or
+ \Ohornhook \or
+ \ohornhook \or
+ \Ohorntilde \or
+ \ohorntilde \or
+ \Ohorndotbelow \or
+ \ohorndotbelow \or
+ \Udotbelow \or
+ \udotbelow \or
+ \Uhook \or
+ \uhook \or
+ \Uhornacute \or
+ \uhornacute \or
+ \Uhorngrave \or
+ \uhorngrave \or
+ \Uhornhook \or
+ \uhornhook \or
+ \Uhorntilde \or
+ \uhorntilde \or
+ \Uhorndotbelow \or
+ \uhorndotbelow \or
+ \Ygrave \or
+ \ygrave \or
+ \Ydotbelow \or
+ \ydotbelow \or
+ \Yhook \or
+ \yhook \or
+ \Ytilde \or
+ \ytilde \else
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-031.tex b/Master/texmf-dist/tex/context/base/unic-031.tex
new file mode 100644
index 00000000000..ae6bc1b8e4b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-031.tex
@@ -0,0 +1,283 @@
+%D \module
+%D [ file=unic-031,
+%D version=2005.02.20,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 31,
+%D author=Thomas A. Schmitz,
+%D date=\currentdate]
+
+\unprotect
+
+\startunicodevector 31
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1\relax
+ \greekalphapsili \or %1f00
+ \greekalphadasia \or
+ \greekalphapsilivaria \or
+ \greekalphadasiavaria \or
+ \greekalphapsilitonos \or
+ \greekalphadasiatonos \or
+ \greekalphapsiliperispomeni \or
+ \greekalphadasiaperispomeni \or
+ \greekAlphapsili \or
+ \greekAlphadasia \or
+ \greekAlphapsilivaria \or
+ \greekAlphadasiavaria \or
+ \greekAlphapsilitonos \or
+ \greekAlphadasiatonos \or
+ \greekAlphapsiliperispomeni \or
+ \greekAlphadasiaperispomeni \or
+ \greekepsilonpsili \or %1f10
+ \greekepsilondasia \or
+ \greekepsilonpsilivaria \or
+ \greekepsilondasiavaria \or
+ \greekepsilonpsilitonos \or
+ \greekepsilondasiatonos \or
+ \unknownchar \or
+ \unknownchar \or
+ \greekEpsilonpsili \or
+ \greekEpsilondasia \or
+ \greekEpsilonpsilivaria \or
+ \greekEpsilondasiavaria \or
+ \greekEpsilonpsilitonos \or
+ \greekEpsilondasiatonos \or
+ \unknownchar \or
+ \unknownchar \or
+ \greeketapsili \or %1f20
+ \greeketadasia \or
+ \greeketapsilivaria \or
+ \greeketadasiavaria \or
+ \greeketapsilitonos \or
+ \greeketadasiatonos \or
+ \greeketapsiliperispomeni \or
+ \greeketadasiaperispomeni \or
+ \greekEtapsili \or
+ \greekEtadasia \or
+ \greekEtapsilivaria \or
+ \greekEtadasiavaria \or
+ \greekEtapsilitonos \or
+ \greekEtadasiatonos \or
+ \greekEtapsiliperispomeni \or
+ \greekEtadasiaperispomeni \or
+ \greekiotapsili \or %1f30
+ \greekiotadasia \or
+ \greekiotapsilivaria \or
+ \greekiotadasiavaria \or
+ \greekiotapsilitonos \or
+ \greekiotadasiatonos \or
+ \greekiotapsiliperispomeni \or
+ \greekiotadasiaperispomeni \or
+ \greekIotapsili \or
+ \greekIotadasia \or
+ \greekIotapsilivaria \or
+ \greekIotadasiavaria \or
+ \greekIotapsilitonos \or
+ \greekIotadasiatonos \or
+ \greekIotapsiliperispomeni \or
+ \greekIotadasiaperispomeni \or
+ \greekomicronpsili \or %1f40
+ \greekomicrondasia \or
+ \greekomicronpsilivaria \or
+ \greekomicrondasiavaria \or
+ \greekomicronpsilitonos \or
+ \greekomicrondasiatonos \or
+ \unknownchar \or
+ \unknownchar \or
+ \greekOmicronpsili \or
+ \greekOmicrondasia \or
+ \greekOmicronpsilivaria \or
+ \greekOmicrondasiavaria \or
+ \greekOmicronpsilitonos \or
+ \greekOmicrondasiatonos \or
+ \unknownchar \or
+ \unknownchar \or
+ \greekupsilonpsili \or %1f50
+ \greekupsilondasia \or
+ \greekupsilonpsilivaria \or
+ \greekupsilondasiavaria \or
+ \greekupsilonpsilitonos \or
+ \greekupsilondasiatonos \or
+ \greekupsilonpsiliperispomeni \or
+ \greekupsilondasiaperispomeni \or
+ \unknownchar \or
+ \greekUpsilondasia \or
+ \unknownchar \or
+ \greekUpsilondasiavaria \or
+ \unknownchar \or
+ \greekUpsilondasiatonos \or
+ \unknownchar \or
+ \greekUpsilondasiaperispomeni \or
+ \greekomegapsili \or %1f60
+ \greekomegadasia \or
+ \greekomegapsilivaria \or
+ \greekomegadasiavaria \or
+ \greekomegapsilitonos \or
+ \greekomegadasiatonos \or
+ \greekomegapsiliperispomeni \or
+ \greekomegadasiaperispomeni \or
+ \greekOmegapsili \or
+ \greekOmegadasia \or
+ \greekOmegapsilivaria \or
+ \greekOmegadasiavaria \or
+ \greekOmegapsilitonos \or
+ \greekOmegadasiatonos \or
+ \greekOmegapsiliperispomeni \or
+ \greekOmegadasiaperispomeni \or
+ \greekalphavaria \or %1f70
+ \greekalphaoxia \or
+ \greekepsilonvaria \or
+ \greekepsilonoxia \or
+ \greeketavaria \or
+ \greeketaoxia \or
+ \greekiotavaria \or
+ \greekiotaoxia \or
+ \greekomicronvaria \or
+ \greekomicronoxia \or
+ \greekupsilonvaria \or
+ \greekupsilonoxia \or
+ \greekomegavaria \or
+ \greekomegaoxia \or
+ \unknownchar \or
+ \unknownchar \or
+ \greekalphaiotasubpsili \or %1f80
+ \greekalphaiotasubdasia \or
+ \greekalphaiotasubpsilivaria \or
+ \greekalphaiotasubdasiavaria \or
+ \greekalphaiotasubpsilitonos \or
+ \greekalphaiotasubdasiatonos \or
+ \greekalphaiotasubpsiliperispomeni \or
+ \greekalphaiotasubdasiaperispomeni \or
+ \greekAlphaiotasubpsili \or
+ \greekAlphaiotasubdasia \or
+ \greekAlphaiotasubpsilivaria \or
+ \greekAlphaiotasubdasiavaria \or
+ \greekAlphaiotasubpsilitonos \or
+ \greekAlphaiotasubdasiatonos \or
+ \greekAlphaiotasubpsiliperispomeni \or
+ \greekAlphaiotasubdasiaperispomeni \or
+ \greeketaiotasubpsili \or %1f90
+ \greeketaiotasubdasia \or
+ \greeketaiotasubpsilivaria \or
+ \greeketaiotasubdasiavaria \or
+ \greeketaiotasubpsilitonos \or
+ \greeketaiotasubdasiatonos \or
+ \greeketaiotasubpsiliperispomeni \or
+ \greeketaiotasubdasiaperispomeni \or
+ \greekEtaiotasubpsili \or
+ \greekEtaiotasubdasia \or
+ \greekEtaiotasubpsilivaria \or
+ \greekEtaiotasubdasiavaria \or
+ \greekEtaiotasubpsilitonos \or
+ \greekEtaiotasubdasiatonos \or
+ \greekEtaiotasubpsiliperispomeni \or
+ \greekEtaiotasubdasiaperispomeni \or
+ \greekomegaiotasubpsili \or %1fa0
+ \greekomegaiotasubdasia \or
+ \greekomegaiotasubpsilivaria \or
+ \greekomegaiotasubdasiavaria \or
+ \greekomegaiotasubpsilitonos \or
+ \greekomegaiotasubdasiatonos \or
+ \greekomegaiotasubpsiliperispomeni \or
+ \greekomegaiotasubdasiaperispomeni \or
+ \greekOmegaiotasubpsili \or
+ \greekOmegaiotasubdasia \or
+ \greekOmegaiotasubpsilivaria \or
+ \greekOmegaiotasubdasiavaria \or
+ \greekOmegaiotasubpsilitonos \or
+ \greekOmegaiotasubdasiatonos \or
+ \greekOmegaiotasubpsiliperispomeni \or
+ \greekOmegaiotasubdasiaperispomeni \or
+ \greekalphavrachy \or %1fb0
+ \greekalphamacron \or
+ \greekalphaiotasubvaria \or
+ \greekalphaiotasub \or
+ \greekalphaiotasubtonos \or
+ \unknownchar \or
+ \greekalphaperispomeni \or
+ \greekalphaiotasubperispomeni \or
+ \greekAlphavrachy \or
+ \greekAlphamacron \or
+ \greekAlphavaria \or
+ \greekAlphaoxia \or
+ \greekAlphaiotasub \or
+ \greekCoronis \or
+ \greekprosgegrammeni \or
+ \greekpsili \or
+ \greekperispomeni \or %1fc0
+ \greekdialytikaperispomeni \or
+ \greeketaiotasubvaria \or
+ \greeketaiotasub \or
+ \greeketaiotasubtonos \or
+ \unknownchar \or
+ \greeketaperispomeni \or
+ \greeketaiotasubperispomeni \or
+ \greekEpsilonvaria \or
+ \greekEpsilonoxia \or
+ \greekEtavaria \or
+ \greekEtaoxia \or
+ \greekEtaiotasub \or
+ \greekpsilivaria \or
+ \greekpsilitonos \or
+ \greekpsiliperispomeni \or
+ \greekiotavrachy \or %1fd0
+ \greekiotamacron \or
+ \greekiotadialytikavaria \or
+ \greekiotadialytikatonos \or
+ \unknownchar \or
+ \unknownchar \or
+ \greekiotaperispomeni \or
+ \greekiotadialytikaperispomeni \or
+ \greekIotavrachy \or
+ \greekIotamacron \or
+ \greekIotavaria \or
+ \greekIotaoxia \or
+ \unknownchar \or
+ \greekdasiavaria \or
+ \greekdasiatonos \or
+ \greekdasiaperispomeni \or
+ \greekupsilonvrachy \or %1fe0
+ \greekupsilonmacron \or
+ \greekupsilondialytikavaria \or
+ \greekupsilondialytikatonos \or
+ \greekrhopsili \or
+ \greekrhodasia \or
+ \greekupsilonperispomeni \or
+ \greekupsilondialytikaperispomeni \or
+ \greekUpsilonvrachy \or
+ \greekUpsilonmacron \or
+ \greekUpsilonvaria \or
+ \greekUpsilonoxia \or
+ \greekRhodasia \or
+ \greekdialytikavaria \or
+ \greekdialytikaoxia \or
+ \greekvaria \or
+ \unknownchar \or %1ff0
+ \unknownchar \or
+ \greekomegaiotasubvaria \or
+ \greekomegaiotasub \or
+ \greekomegaiotasubtonos \or
+ \unknownchar \or
+ \greekomegaperispomeni \or
+ \greekomegaiotasubperispomeni \or
+ \greekOmicronvaria \or
+ \greekOmicronoxia \or
+ \greekOmegavaria \or
+ \greekOmegaoxia \or
+ \greekOmegaiotasub \or
+ \greekoxia \or
+ \greekdasia \else
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/tex/context/base/unic-032.tex b/Master/texmf-dist/tex/context/base/unic-032.tex
new file mode 100644
index 00000000000..42fea9de320
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-032.tex
@@ -0,0 +1,138 @@
+%D \module
+%D [ file=unic-032,
+%D version=2002.12.03,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 32,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% U+2027 HYPHENATION POINT
+% U+2028 LINE SEPARATOR
+% U+2029 PARAGRAPH SEPARATOR
+% U+202A LEFT-TO-RIGHT EMBEDDING
+% U+202B RIGHT-TO-LEFT EMBEDDING
+% U+202C POP DIRECTIONAL FORMATTING
+% U+202D LEFT-TO-RIGHT OVERRIDE
+% U+202E RIGHT-TO-LEFT OVERRIDE
+% U+202F NARROW NO-BREAK SPACE
+% U+2030 PER MILLE SIGN
+% U+2031 PER TEN THOUSAND SIGN
+% U+2032 PRIME
+% U+2033 DOUBLE PRIME
+% U+2034 TRIPLE PRIME
+% U+2035 REVERSED PRIME
+% U+2036 REVERSED DOUBLE PRIME
+% U+2037 REVERSED TRIPLE PRIME
+% U+2038 CARET
+
+% U+203B REFERENCE MARK
+% U+203C DOUBLE EXCLAMATION MARK
+% U+203D INTERROBANG
+% U+203E OVERLINE
+% U+203F UNDERTIE
+% U+2040 CHARACTER TIE
+% U+2041 CARET INSERTION POINT
+% U+2042 ASTERISM
+% U+2043 HYPHEN BULLET
+% U+2044 FRACTION SLASH
+% U+2045 LEFT SQUARE BRACKET WITH QUILL
+% U+2046 RIGHT SQUARE BRACKET WITH QUILL
+% U+2047 DOUBLE QUESTION MARK
+% U+2048 QUESTION EXCLAMATION MARK
+% U+2049 EXCLAMATION QUESTION MARK
+% U+204A TIRONIAN SIGN ET
+% U+204B REVERSED PILCROW SIGN
+% U+204C BLACK LEFTWARDS BULLET
+% U+204D BLACK RIGHTWARDS BULLET
+% U+204E LOW ASTERISK
+% U+204F REVERSED SEMICOLON
+% U+2050 CLOSE UP
+% U+2051 TWO ASTERISKS ALIGNED VERTICALLY
+% U+2052 COMMERCIAL MINUS SIGN
+% U+2053 SWUNG DASH
+% U+2054 INVERTED UNDERTIE
+% U+2057 QUADRUPLE PRIME
+% U+205F MEDIUM MATHEMATICAL SPACE
+% U+2060 WORD JOINER
+% U+2061 FUNCTION APPLICATION
+% U+2062 INVISIBLE TIMES
+% U+2063 INVISIBLE SEPARATOR
+% U+206A INHIBIT SYMMETRIC SWAPPING
+% U+206B ACTIVATE SYMMETRIC SWAPPING
+% U+206C INHIBIT ARABIC FORM SHAPING
+% U+206D ACTIVATE ARABIC FORM SHAPING
+% U+206E NATIONAL DIGIT SHAPES
+% U+206F NOMINAL DIGIT SHAPES
+
+\ifx\undefined\zerowidthspace \unexpanded\def\zerowidthspace{\kern\zeropoint} \fi
+
+\startunicodevector 32
+ \ifcase\numexpr#1\relax
+ \strippedcsname \enspace \or % U+2000 EN QUAD
+ \strippedcsname \emspace \or % U+2001 EM QUAD
+ \strippedcsname \enspace \or % U+2002 EN SPACE
+ \strippedcsname \emspace \or % U+2003 EM SPACE
+ \strippedcsname \unknownchar \or % U+2004 THREE-PER-EM SPACE
+ \strippedcsname \unknownchar \or % U+2005 FOUR-PER-EM SPACE
+ \strippedcsname \unknownchar \or % U+2006 SIX-PER-EM SPACE
+ \strippedcsname \unknownchar \or % U+2007 FIGURE SPACE
+ \strippedcsname \unknownchar \or % U+2008 PUNCTUATION SPACE
+ \strippedcsname \unknownchar \or % U+2009 THIN SPACE
+ \strippedcsname \unknownchar \or % U+200A HAIR SPACE
+ \strippedcsname \zerowidthspace \or % U+200B ZERO WIDTH SPACE
+ \strippedcsname \unknownchar \or % U+200C ZERO WIDTH NON-JOINER
+ \strippedcsname \unknownchar \or % U+200D ZERO WIDTH JOINER
+ \strippedcsname \unknownchar \or % U+200E LEFT-TO-RIGHT MARK
+ \strippedcsname \unknownchar \or % U+200F RIGHT-TO-LEFT MARK
+ \strippedcsname \breakinghyphen \or % U+2010 HYPHEN
+ \strippedcsname \nonbreakinghyphen\or % U+2011 NON-BREAKING HYPHEN
+ \strippedcsname \textminus \or % U+2012 FIGURE DASH
+ \strippedcsname \endash \or % U+2013 EN DASH
+ \strippedcsname \emdash \or % U+2014 EM DASH
+ \strippedcsname \unknownchar \or % U+2015 HORIZONTAL BAR
+ \strippedcsname \unknownchar \or % U+2016 DOUBLE VERTICAL LINE
+ \strippedcsname \unknownchar \or % U+2017 DOUBLE LOW LINE
+ \strippedcsname \quoteleft \or % U+2018 LEFT SINGLE QUOTATION MARK
+ \strippedcsname \quoteright \or % U+2019 RIGHT SINGLE QUOTATION MARK
+ \strippedcsname \quotesinglebase \or % U+201A SINGLE LOW-9 QUOTATION MARK
+ \strippedcsname \unknownchar \or % U+201B SINGLE HIGH-REVERSED-9 QUOTATION MARK
+ \strippedcsname \quotedblleft \or % U+201C LEFT DOUBLE QUOTATION MARK
+ \strippedcsname \quotedblright \or % U+201D RIGHT DOUBLE QUOTATION MARK
+ \strippedcsname \quotedblbase \or % U+201E DOUBLE LOW-9 QUOTATION MARK
+ \strippedcsname \unknownchar \or % U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ \strippedcsname \textdag \or % U+2020 DAGGER
+ \strippedcsname \textddag \or % U+2021 DOUBLE DAGGER
+ \strippedcsname \textbullet \or % U+2022 BULLET
+ \strippedcsname \unknownchar \or % U+2023 TRIANGULAR BULLET
+ \strippedcsname \unknownchar \or % U+2024 ONE DOT LEADER
+ \strippedcsname \unknownchar \or % U+2025 TWO DOT LEADER
+ \strippedcsname \periods \else % U+2026 HORIZONTAL ELLIPSIS % was: \textellipsis
+ \ifcase\numexpr#1-48\relax
+ \strippedcsname \perthousand \or % U+2030 PER MILLE SIGN
+ \strippedcsname \unknownchar \or % U+2031 PER TEN THOUSAND SIGN
+ \strippedcsname \prime \or % U+2032 PRIME
+ \strippedcsname \doubleprime \or % U+2033 DOUBLE PRIME
+ \strippedcsname \tripleprime \else % U+2034 TRIPLE PRIME
+ \ifcase\numexpr#1-57\relax
+ \strippedcsname \guilsingleleft \or % U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ \strippedcsname \guilsingleright \else % U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ \ifcase\numexpr#1-95\relax
+ \strippedcsname \thickspace \or % U+205F MEDIUM MATHEMATICAL SPACE
+ \strippedcsname \unknownchar \or %
+ \strippedcsname \unknownchar \or % U+2061 FUNCTION APPLICATION
+ \strippedcsname \times \or % U+2062 INVISIBLE TIMES
+ \strippedcsname \unknownchar \else % U+2063 INVISIBLE COMMA
+ \ifcase\numexpr#1-172\relax
+ \strippedcsname \texteuro \else
+ \strippedcsname \unknownchar
+ \fi\fi\fi\fi\fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-033.tex b/Master/texmf-dist/tex/context/base/unic-033.tex
new file mode 100644
index 00000000000..632285a0e2a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-033.tex
@@ -0,0 +1,131 @@
+%D \module
+%D [ file=unic-033,
+%D version=2005.06.11,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 33,
+%D author={Nikolai Weibull \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={PRAGMA / Nikolai Weibull}]
+
+\unprotect
+
+\startunicodevector 33
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1-144\relax
+ \leftarrow \or % LEFTWARDS ARROW
+ \uparrow \or % UPWARDS ARROW
+ \rightarrow \or % RIGHTWARDS ARROW
+ \downarrow \or % DOWNWARDS ARROW
+ \leftrightarrow \or % LEFT RIGHT ARROW
+ \updownarrow \or % UP DOWN ARROW
+ \nwarrow \or % NORTH WEST ARROW
+ \nearrow \or % NORTH EAST ARROW
+ \searrow \or % SOUTH EAST ARROW
+ \swarrow \or % SOUTH WEST ARROW
+ \nleftarrow \or % LEFTWARDS ARROW WITH STROKE
+ \nrightarrow \or % RIGHTWARDS ARROW WITH STROKE
+ \unknownchar \or % LEFTWARDS WAVE ARROW
+ \unknownchar \or % RIGHTWARDS WAVE ARROW
+ \twoheadedleftarrow \or % LEFTWARDS TWO HEADED ARROW
+ \unknownchar \or % UPWARDS TWO HEADED ARROW
+ \twoheadedrightarrow \or % RIGHTWARDS TWO HEADED ARROW
+ \unknownchar \or % DOWNWARDS TWO HEADED ARROW
+ \leftarrowtail \or % LEFTWARDS ARROW WITH TAIL
+ \rightarrowtail \or % RIGHTWARDS ARROW WITH TAIL
+ \mapsfrom \or % LEFTWARDS ARROW FROM BAR
+ \unknownchar \or % UPWARDS ARROW FROM BAR
+ \mapsto \or % RIGHTWARDS ARROW FROM BAR
+ \unknownchar \or % DOWNWARDS ARROW FROM BAR
+ \unknownchar \or % UP DOWN ARROW WITH BASE
+ \hookleftarrow \or % LEFTWARDS ARROW WITH HOOK
+ \hookrightarrow \or % RIGHTWARDS ARROW WITH HOOK
+ \loopleftarrow \or % LEFTWARDS ARROW WITH LOOP
+ \looprightarrow \or % RIGHTWARDS ARROW WITH LOOP
+ \unknownchar \or % LEFT RIGHT WAVE ARROW
+ \nleftrightarrow \or % LEFT RIGHT ARROW WITH STROKE
+ \lightning \or % DOWNWARDS ZIGZAG ARROW
+ \Lsh \or % UPWARDS ARROW WITH TIP LEFTWARDS
+ \Rsh \or % UPWARDS ARROW WITH TIP RIGHTWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH TIP LEFTWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH TIP RIGHTWARDS
+ \unknownchar \or % RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+ \unknownchar \or % DOWNWARDS ARROW WITH CORNER LEFTWARDS
+ \curveleftarrow \or % ANTICLOCKWISE TOP SEMICIRCLE ARROW
+ \curverightarrow \or % CLOCKWISE TOP SEMICIRCLE ARROW
+ \unknownchar \or % NORTH WEST ARROW TO LONG BAR
+ \unknownchar \or % LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+ \circlearrowleft \or % ANTICLOCKWISE OPEN CIRCLE ARROW
+ \circlearrowright \or % CLOCKWISE OPEN CIRCLE ARROW
+ \leftharpoonup \or % LEFTWARDS HARPOON WITH BARB UPWARDS
+ \leftharpoondown \or % LEFTWARDS HARPOON WITH BARB DOWNWARDS
+ \upharpoonright \or % UPWARDS HARPOON WITH BARB RIGHTWARDS
+ \upharpoonleft \or % UPWARDS HARPOON WITH BARB LEFTWARDS
+ \rightharpoonup \or % RIGHTWARDS HARPOON WITH BARB UPWARDS
+ \rightharpoondown \or % RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+ \downharpoonright \or % DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+ \downharpoonleft \or % DOWNWARDS HARPOON WITH BARB LEFTWARDS
+ \rightleftarrows \or % RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+ \unknownchar \or % UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+ \leftrightarrows \or % LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+ \leftleftarrows \or % LEFTWARDS PAIRED ARROWS
+ \upuparrows \or % UPWARDS PAIRED ARROWS
+ \rightrightarrows \or % RIGHTWARDS PAIRED ARROWS
+ \downdownarrows \or % DOWNWARDS PAIRED ARROWS
+ \leftrightharpoons \or % LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ \rightleftharpoons \or % RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ \nLeftarrow \or % LEFTWARDS DOUBLE ARROW WITH STROKE
+ \nLeftrightarrow \or % LEFT RIGHT DOUBLE ARROW WITH STROKE
+ \nRightarrow \or % RIGHTWARDS DOUBLE ARROW WITH STROKE
+ \Leftarrow \or % LEFTWARDS DOUBLE ARROW
+ \Uparrow \or % UPWARDS DOUBLE ARROW
+ \Rightarrow \or % RIGHTWARDS DOUBLE ARROW
+ \Downarrow \or % DOWNWARDS DOUBLE ARROW
+ \Leftrightarrow \or % LEFT RIGHT DOUBLE ARROW
+ \Updownarrow \or % UP DOWN DOUBLE ARROW
+ \unknownchar \or % NORTH WEST DOUBLE ARROW
+ \unknownchar \or % NORTH EAST DOUBLE ARROW
+ \unknownchar \or % SOUTH EAST DOUBLE ARROW
+ \unknownchar \or % SOUTH WEST DOUBLE ARROW
+ \Lleftarrow \or % LEFTWARDS TRIPLE ARROW
+ \unknownchar \or % RIGHTWARDS TRIPLE ARROW
+ \leftsquidarrow \or % LEFTWARDS SQUIGGLE ARROW
+ \rightsquidarrow \or % RIGHTWARDS SQUIGGLE ARROW
+ \unknownchar \or % UPWARDS ARROW WITH DOUBLE STROKE
+ \unknownchar \or % DOWNWARDS ARROW WITH DOUBLE STROKE
+ \dashleftarrow \or % LEFTWARDS DASHED ARROW
+ \unknownchar \or % UPWARDS DASHED ARROW
+ \dashrightarrow \or % RIGHTWARDS DASHED ARROW
+ \unknownchar \or % DOWNWARDS DASHED ARROW
+ \unic@leftarrowtobar \or % LEFTWARDS ARROW TO BAR
+ \unknownchar \or % RIGHTWARDS ARROW TO BAR
+ \unknownchar \or % LEFTWARDS WHITE ARROW
+ \unknownchar \or % UPWARDS WHITE ARROW
+ \unknownchar \or % RIGHTWARDS WHITE ARROW
+ \unknownchar \or % DOWNWARDS WHITE ARROW
+ \unknownchar \or % UPWARDS WHITE ARROW FROM BAR
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+ \unknownchar \or % UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+ \unknownchar \or % UPWARDS WHITE DOUBLE ARROW
+ \unknownchar \or % UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+ \unknownchar \or % RIGHTWARDS WHITE ARROW FROM WALL
+ \unknownchar \or % NORTH WEST ARROW TO CORNER
+ \unknownchar \or % SOUTH EAST ARROW TO CORNER
+ \unknownchar \or % UP DOWN WHITE ARROW
+ \unknownchar \or % RIGHT ARROW WITH SMALL CIRCLE
+ \unknownchar \or % DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+ \unknownchar \or % THREE RIGHTWARDS ARROWS
+ \unknownchar \or % LEFTWARDS ARROW WITH VERTICAL STROKE
+ \unknownchar \or % RIGHTWARDS ARROW WITH VERTICAL STROKE
+ \unknownchar \or % LEFT RIGHT ARROW WITH VERTICAL STROKE
+ \unknownchar \or % LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+ \unknownchar \or % RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+ \unknownchar \or % LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+ \leftarrowtriangle \or % LEFTWARDS OPEN-HEADED ARROW
+ \rightarrowtriangle \or % RIGHTWARDS OPEN-HEADED ARROW
+ \leftrightarrowtriangle\else % LEFT RIGHT OPEN-HEADED ARROW
+ \unknowncharacter
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-034.tex b/Master/texmf-dist/tex/context/base/unic-034.tex
new file mode 100644
index 00000000000..fece26bff16
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-034.tex
@@ -0,0 +1,274 @@
+%D \module
+%D [ file=unic-034,
+%D version=2005.06.11,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 34,
+%D author=Nikolai Weibull,
+%D date=\currentdate,
+%D copyright={PRAGMA / Nikolai Weibull}]
+
+\unprotect
+
+\startunicodevector 34
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1\relax
+ \forall \or % FOR ALL
+ \complement \or % COMPLEMENT
+ \partial \or % PARTIAL DIFFERENTIAL
+ \exists \or % THERE EXISTS
+ \nexists \or % THERE DOES NOT EXIST
+ \emptyset \or % EMPTY SET
+ \vartriangle \or % INCREMENT
+ \nabla \or % NABLA
+ \unic@in \or % ELEMENT OF
+ \unic@nin \or % NOT AN ELEMENT OF
+ \unknownchar \or % SMALL ELEMENT OF
+ \ni \or % CONTAINS AS MEMBER
+ \unic@nni \or % DOES NOT CONTAIN AS MEMBER
+ \unknownchar \or % SMALL CONTAINS AS MEMBER
+ \QED \or % END OF PROOF
+ \prod \or % N-ARY PRODUCT
+ \coprod \or % N-ARY COPRODUCT
+ \sum \or % N-ARY SUMMATION
+ \unic@minus \or % MINUS SIGN
+ \mp \or % MINUS-OR-PLUS SIGN
+ \dotplus \or % DOT PLUS
+ \unic@divisionslash \or % DIVISION SLASH
+ \setminus \or % SET MINUS
+ \ast \or % ASTERISK OPERATOR
+ \circ \or % RING OPERATOR
+ \bullet \or % BULLET OPERATOR
+ \unic@sqrt \or % SQUARE ROOT
+ \unic@cubesqrt \or % CUBE ROOT
+ \unic@fourthsqrt \or % FOURTH ROOT
+ \propto \or % PROPORTIONAL TO
+ \infty \or % INFINITY
+ \unknownchar \or % RIGHT ANGLE
+ \angle \or % ANGLE
+ \measuredangle \or % MEASURED ANGLE
+ \sphericalangle \or % SPHERICAL ANGLE
+ \unic@divides \or % DIVIDES
+ \unic@ndivides \or % DOES NOT DIVIDE
+ \parallel \or % PARALLEL TO
+ \nparallel \or % NOT PARALLEL TO
+ \land \or % LOGICAL AND
+ \lor \or % LOGICAL OR
+ \unic@cap \or % INTERSECTION
+ \cup \or % UNION
+ \int \or % INTEGRAL
+ \unic@dblint \or % DOUBLE INTEGRAL
+ \unic@triint \or % TRIPLE INTEGRAL
+ \oint \or % CONTOUR INTEGRAL
+ \unknownchar \or % SURFACE INTEGRAL
+ \unknownchar \or % VOLUME INTEGRAL
+ \unknownchar \or % CLOCKWISE INTEGRAL
+ \unknownchar \or % CLOCKWISE CONTOUR INTEGRAL
+ \unknownchar \or % ANTICLOCKWISE CONTOUR INTEGRAL
+ \therefore \or % THEREFORE
+ \because \or % BECAUSE
+ \unic@ratio \or % RATIO
+ \unic@proportion \or % PROPORTION
+ \unknownchar \or % DOT MINUS
+ \unic@excess \or % EXCESS
+ \unic@geompropr \or % GEOMETRIC PROPORTION
+ \unic@homothetic \or % HOMOTHETIC
+ \sim \or % TILDE OPERATOR
+ \backsim \or % REVERSED TILDE
+ \unknownchar \or % INVERTED LAZY S
+ \unknownchar \or % SINE WAVE
+ \wr \or % WREATH PRODUCT
+ \nsim \or % NOT TILDE
+ \eqsim \or % MINUS TILDE
+ \simeq \or % ASYMPTOTICALLY EQUAL TO
+ \nsimeq \or % NOT ASYMPTOTICALLY EQUAL TO
+ \approxeq \or % APPROXIMATELY EQUAL TO
+ \unic@cong \or % APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+ \unic@napproxeq \or % NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ \approx \or % ALMOST EQUAL TO
+ \unic@napprox \or % NOT ALMOST EQUAL TO
+ \approxeq \or % ALMOST EQUAL OR EQUAL TO
+ \unknownchar \or % TRIPLE TILDE
+ \unknownchar \or % ALL EQUAL TO
+ \asymp \or % EQUIVALENT TO
+ \Bumpeq \or % GEOMETRICALLY EQUIVALENT TO
+ \bumpeq \or % DIFFERENCE BETWEEN
+ \unic@doteq \or % APPROACHES THE LIMIT
+ \doteqdot \or % GEOMETRICALLY EQUAL TO
+ \fallingdotseq \or % APPROXIMATELY EQUAL TO OR THE IMAGE OF
+ \risingdotseq \or % IMAGE OF OR APPROXIMATELY EQUAL TO
+ \unknownchar \or % COLON EQUALS
+ \unknownchar \or % EQUALS COLON
+ \eqcirc \or % RING IN EQUAL TO
+ \circeq \or % RING EQUAL TO
+ \unic@correspondsto \or % CORRESPONDS TO
+ \unic@estimates \or % ESTIMATES
+ \unic@equiangularto \or % EQUIANGULAR TO
+ \unic@stareq \or % STAR EQUALS
+ \unic@triangleq \or % DELTA EQUAL TO
+ \unic@eqbydef \or % EQUAL TO BY DEFINITION
+ \unic@measuredby \or % MEASURED BY
+ \unic@questionedeq \or % QUESTIONED EQUAL TO
+ \neq \or % NOT EQUAL TO
+ \equiv \or % IDENTICAL TO
+ \unic@nequiv \or % NOT IDENTICAL TO
+ \unknownchar \or % STRICTLY EQUIVALENT TO
+ \leq \or % LESS-THAN OR EQUAL TO
+ \geq \or % GREATER-THAN OR EQUAL TO
+ \leqq \or % LESS-THAN OVER EQUAL TO
+ \geqq \or % GREATER-THAN OVER EQUAL TO
+ \lneqq \or % LESS-THAN BUT NOT EQUAL TO
+ \gneqq \or % GREATER-THAN BUT NOT EQUAL TO
+ \ll \or % MUCH LESS-THAN
+ \gg \or % MUCH GREATER-THAN
+ \between \or % BETWEEN
+ \nasymp \or % NOT EQUIVALENT TO
+ \nless \or % NOT LESS-THAN
+ \ngtr \or % NOT GREATER-THAN
+ \nleq \or % NEITHER LESS-THAN NOR EQUAL TO
+ \ngeq \or % NEITHER GREATER-THAN NOR EQUAL TO
+ \lesssim \or % LESS-THAN OR EQUIVALENT TO
+ \gtrsim \or % GREATER-THAN OR EQUIVALENT TO
+ \unic@nlesssim \or % NEITHER LESS-THAN NOR EQUIVALENT TO
+ \unic@ngtrsim \or % NEITHER GREATER-THAN NOR EQUIVALENT TO
+ \lessgtr \or % LESS-THAN OR GREATER-THAN
+ \gtrless \or % GREATER-THAN OR LESS-THAN
+ \unic@nlessgtr \or % NEITHER LESS-THAN NOR GREATER-THAN
+ \unic@ngtrless \or % NEITHER GREATER-THAN NOR LESS-THAN
+ \prec \or % PRECEDES
+ \succ \or % SUCCEEDS
+ \preceq \or % PRECEDES OR EQUAL TO
+ \succeq \or % SUCCEEDS OR EQUAL TO
+ \precsim \or % PRECEDES OR EQUIVALENT TO
+ \succsim \or % SUCCEEDS OR EQUIVALENT TO
+ \nprec \or % DOES NOT PRECEDE
+ \nsucc \or % DOES NOT SUCCEED
+ \subset \or % SUBSET OF
+ \supset \or % SUPERSET OF
+ \unic@nsubset \or % NOT A SUBSET OF
+ \unic@nsupset \or % NOT A SUPERSET OF
+ \subseteq \or % SUBSET OF OR EQUAL TO
+ \supseteq \or % SUPERSET OF OR EQUAL TO
+ \nsubseteq \or % NEITHER A SUBSET OF NOR EQUAL TO
+ \nsupseteq \or % NEITHER A SUPERSET OF NOR EQUAL TO
+ \subsetneq \or % SUBSET OF WITH NOT EQUAL TO
+ \supsetneq \or % SUPERSET OF WITH NOT EQUAL TO
+ \unknownchar \or % MULTISET
+ \unknownchar \or % MULTISET MULTIPLICATION
+ \biguplus \or % MULTISET UNION
+ \sqsubset \or % SQUARE IMAGE OF
+ \sqsupset \or % SQUARE ORIGINAL OF
+ \sqsubseteq \or % SQUARE IMAGE OF OR EQUAL TO
+ \sqsupseteq \or % SQUARE ORIGINAL OF OR EQUAL TO
+ \sqcap \or % SQUARE CAP
+ \sqcup \or % SQUARE CUP
+ \oplus \or % CIRCLED PLUS
+ \ominus \or % CIRCLED MINUS
+ \otimes \or % CIRCLED TIMES
+ \oslash \or % CIRCLED DIVISION SLASH
+ \odot \or % CIRCLED DOT OPERATOR
+ \circledcirc \or % CIRCLED RING OPERATOR
+ \circledast \or % CIRCLED ASTERISK OPERATOR
+ \unknownchar \or % CIRCLED EQUALS
+ \circleddash \or % CIRCLED DASH
+ \boxplus \or % SQUARED PLUS
+ \boxminus \or % SQUARED MINUS
+ \boxtimes \or % SQUARED TIMES
+ \boxdot \or % SQUARED DOT OPERATOR
+ \vdash \or % RIGHT TACK
+ \dashv \or % LEFT TACK
+ \top \or % DOWN TACK
+ \bot \or % UP TACK
+ \unknownchar \or % ASSERTION
+ \models \or % MODELS
+ \vDash \or % TRUE
+ \unknownchar \or % FORCES
+ \Vvdash \or % TRIPLE VERTICAL BAR RIGHT TURNSTILE
+ \unknownchar \or % DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ \nvdash \or % DOES NOT PROVE
+ \nvDash \or % NOT TRUE
+ \unknownchar \or % DOES NOT FORCE
+ \unknownchar \or % NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ \unknownchar \or % PRECEDES UNDER RELATION
+ \unknownchar \or % SUCCEEDS UNDER RELATION
+ \lhd \or % NORMAL SUBGROUP OF
+ \rhd \or % CONTAINS AS NORMAL SUBGROUP
+ \unlhd \or % NORMAL SUBGROUP OF OR EQUAL TO
+ \unrhd \or % CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+ \unknownchar \or % ORIGINAL OF
+ \unknownchar \or % IMAGE OF
+ \unknownchar \or % MULTIMAP
+ \unknownchar \or % HERMITIAN CONJUGATE MATRIX
+ \unknownchar \or % INTERCALATE
+ \veebar \or % XOR
+ \barwedge \or % NAND
+ \unknownchar \or % NOR
+ \unknownchar \or % RIGHT ANGLE WITH ARC
+ \unknownchar \or % RIGHT TRIANGLE
+ \bigwedge \or % N-ARY LOGICAL AND
+ \bigvee \or % N-ARY LOGICAL OR
+ \bigcap \or % N-ARY INTERSECTION
+ \bigcup \or % N-ARY UNION
+ \diamond \or % DIAMOND OPERATOR
+ \cdot \or % DOT OPERATOR
+ \star \or % STAR OPERATOR
+ \divideontimes \or % DIVISION TIMES
+ \bowtie \or % BOWTIE
+ \ltimes \or % LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+ \rtimes \or % RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+ \leftthreetimes \or % LEFT SEMIDIRECT PRODUCT
+ \rightthreetimes \or % RIGHT SEMIDIRECT PRODUCT
+ \backsimeq \or % REVERSED TILDE EQUALS
+ \unknownchar \or % CURLY LOGICAL OR
+ \unknownchar \or % CURLY LOGICAL AND
+ \Subset \or % DOUBLE SUBSET
+ \Supset \or % DOUBLE SUPERSET
+ \Cap \or % DOUBLE INTERSECTION
+ \Cup \or % DOUBLE UNION
+ \pitchfork \or % PITCHFORK
+ \unknownchar \or % EQUAL AND PARALLEL TO
+ \unknownchar \or % LESS-THAN WITH DOT
+ \unknownchar \or % GREATER-THAN WITH DOT
+ \lll \or % VERY MUCH LESS-THAN
+ \ggg \or % VERY MUCH GREATER-THAN
+ \lesseqgtr \or % LESS-THAN EQUAL TO OR GREATER-THAN
+ \gtreqless \or % GREATER-THAN EQUAL TO OR LESS-THAN
+ \unknownchar \or % EQUAL TO OR LESS-THAN
+ \unknownchar \or % EQUAL TO OR GREATER-THAN
+ \curlyeqprec \or % EQUAL TO OR PRECEDES
+ \curlyeqsucc \or % EQUAL TO OR SUCCEEDS
+ \npreceq \or % DOES NOT PRECEDE OR EQUAL
+ \nsucceq \or % DOES NOT SUCCEED OR EQUAL
+ \unic@nsqsubseteq \or % NOT SQUARE IMAGE OF OR EQUAL TO
+ \unic@nsqsupseteq \or % NOT SQUARE ORIGINAL OF OR EQUAL TO
+ \unknownchar \or % SQUARE IMAGE OF OR NOT EQUAL TO
+ \unknownchar \or % SQUARE ORIGINAL OF OR NOT EQUAL TO
+ \lnsim \or % LESS-THAN BUT NOT EQUIVALENT TO
+ \gnsim \or % GREATER-THAN BUT NOT EQUIVALENT TO
+ \precnsim \or % PRECEDES BUT NOT EQUIVALENT TO
+ \succnsim \or % SUCCEEDS BUT NOT EQUIVALENT TO
+ \ntriangleleft \or % NOT NORMAL SUBGROUP OF
+ \ntriangleright \or % DOES NOT CONTAIN AS NORMAL SUBGROUP
+ \ntrianglelefteq \or % NOT NORMAL SUBGROUP OF OR EQUAL TO
+ \ntrianglerighteq \or % DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ \vdots \or % VERTICAL ELLIPSIS
+ \cdots \or % MIDLINE HORIZONTAL ELLIPSIS
+ \unknownchar \or % UP RIGHT DIAGONAL ELLIPSIS
+ \ddots \or % DOWN RIGHT DIAGONAL ELLIPSIS
+ \unknownchar \or % ELEMENT OF WITH LONG HORIZONTAL STROKE
+ \unknownchar \or % ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ \unknownchar \or % SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ \unknownchar \or % ELEMENT OF WITH DOT ABOVE
+ \unknownchar \or % ELEMENT OF WITH OVERBAR
+ \unknownchar \or % SMALL ELEMENT OF WITH OVERBAR
+ \unknownchar \or % ELEMENT OF WITH UNDERBAR
+ \unknownchar \or % ELEMENT OF WITH TWO HORIZONTAL STROKES
+ \unknownchar \or % CONTAINS WITH LONG HORIZONTAL STROKE
+ \unknownchar \or % CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ \unknownchar \or % SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ \unknownchar \or % CONTAINS WITH OVERBAR
+ \unknownchar \else % SMALL CONTAINS WITH OVERBAR
+ \unknownchar % Z NOTATION BAG MEMBERSHIP
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-039.tex b/Master/texmf-dist/tex/context/base/unic-039.tex
new file mode 100644
index 00000000000..bcf6490901f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-039.tex
@@ -0,0 +1,68 @@
+%D \module
+%D [ file=unic-039,
+%D version=2005.06.16,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 39,
+%D author=Nikolai Weibull,
+%D date=\currentdate,
+%D copyright={PRAGMA / Nikolai Weibull}]
+
+\unprotect
+
+\startunicodevector 39
+ \expandafter\strippedcsname
+ \ifcase\numexpr#1-192\relax
+ \unknownchar \or % THREE DIMENSIONAL ANGLE
+ \unknownchar \or % WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+ \perp \or % PERPENDICULAR
+ \unknownchar \or % OPEN SUBSET
+ \unknownchar \or % OPEN SUPERSET
+ \lbag \or % LEFT S-SHAPED BAG DELIMITER
+ \rbag \or % RIGHT S-SHAPED BAG DELIMITER
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % WHITE DIAMOND WITH CENTRED DOT
+ \unknownchar \or % AND WITH DOT
+ \unknownchar \or % ELEMENT OF OPENING UPWARDS
+ \unknownchar \or % LOWER RIGHT CORNER WITH DOT
+ \unknownchar \or % UPPER LEFT CORNER WITH DOT
+ \unknownchar \or % LEFT OUTER JOIN
+ \unknownchar \or % RIGHT OUTER JOIN
+ \unknownchar \or % FULL OUTER JOIN
+ \unknownchar \or % LARGE UP TACK
+ \unknownchar \or % LARGE DOWN TACK
+ \unknownchar \or % LEFT AND RIGHT DOUBLE TURNSTILE
+ \unknownchar \or % LEFT AND RIGHT TACK
+ \unknownchar \or % LEFT MULTIMAP
+ \unknownchar \or % LONG RIGHT TACK
+ \unknownchar \or % LONG LEFT TACK
+ \unknownchar \or % UP TACK WITH CIRCLE ABOVE
+ \unknownchar \or % LOZENGE DIVIDED BY HORIZONTAL RULE
+ \unknownchar \or % WHITE CONCAVE-SIDED DIAMOND
+ \unknownchar \or % WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+ \unknownchar \or % WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+ \unknownchar \or % WHITE SQUARE WITH LEFTWARDS TICK
+ \unknownchar \or % WHITE SQUARE WITH RIGHTWARDS TICK
+ \unic@Lbracket \or % MATHEMATICAL LEFT WHITE SQUARE BRACKET
+ \unic@Rbracket \or % MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+ \langle \or % MATHEMATICAL LEFT ANGLE BRACKET
+ \rangle \or % MATHEMATICAL RIGHT ANGLE BRACKET
+ \unic@Langle \or % MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+ \unic@Rangle \or % MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \or % <reserved>
+ \unknownchar \else % <reserved>
+ \unknownchar
+ \fi
+\stopunicodevector
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-exp.tex b/Master/texmf-dist/tex/context/base/unic-exp.tex
new file mode 100644
index 00000000000..17bdaef0602
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-exp.tex
@@ -0,0 +1,84 @@
+%D \module
+%D [ file=unic-exp,
+%D version=2002.12.05,
+%D title=\CONTEXT\ \UNICODE\ Support,
+%D subtitle=\UNICODE\ vector expansion,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context UNICODE Macros (expansion)}
+
+%D \macros
+%D {expandunivector}
+%D
+%D The \type {\expandunivector} macro can be used to expand
+%D vectors, which leads to a faster run in case of documents
+%D with lots of \UTF-8 code.
+
+\unprotect
+
+\def\expandunivector[#1]%
+ {\processcommalist[#1]\doexpandunivector}
+
+\def\doexpandunivector#1%
+ {\ifcsname\@@univector#1\endcsname
+ \ifcsname\@@univector\@@univector#1\endcsname\else
+ \writestatus{unicode}{expanding vector #1}%
+ \setvalue{\@@univector\@@univector#1}{\expandedunivector{#1}}%
+ \dorecurse{255}
+ {\@EA\ifx\csname\csname\@@univector#1\endcsname\recurselevel\endcsname\unknownchar
+ % skip
+ \else
+ \@EA\let\csname\@@univector\@@univector#1:\recurselevel\@EA\endcsname
+ \csname\csname\@@univector#1\endcsname\recurselevel\endcsname
+ \fi}%
+ \letbeundefined{\@@univector#1}%
+ \fi
+ \fi}
+
+\def\expandedunivector#1#2%
+ {\ifcsname\@@univector\@@univector#1:\number#2\endcsname
+ \@@univector\@@univector#1:\number#2%
+ \else
+ \@@unknownchar
+ \fi}
+
+%D For this purpose, we need to redefine the resolver.
+
+\def\doutfunihash#1#2%
+ {\ifcsname\@@univector\@@univector\number#1\endcsname
+ \csname\@@univector\@@univector\number#1\endcsname{\utfmod{#2}}%
+ \else\ifcsname\@@univector\number#1\endcsname
+ \csname\@@univector#1\endcsname{\utfmod{#2}}%
+ \else
+ \@@unknownchar
+ \fi\fi}
+
+% or:
+%
+% \def\doutfunihash#1#2%
+% {\csname
+% \ifcsname\@@univector\@@univector\number#1\endcsname
+% \@@univector\@@univector\number#1%
+% \else\ifcsname\@@univector\number#1\endcsname
+% \@@univector#1%
+% \else
+% \strippedcsname\noutfunihash
+% \fi\fi
+% \endcsname{\utfmod{#2}}}
+%
+% \def\noutfunihash#1%
+% {\unknowncharacter}
+
+\let\utfunihash\utfunihashglyph
+
+%D Let's use it:
+
+\expandunivector[0,1,2,3,4,5,30,31,32,33]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-ini.tex b/Master/texmf-dist/tex/context/base/unic-ini.tex
new file mode 100644
index 00000000000..1881eceb2f4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-ini.tex
@@ -0,0 +1,667 @@
+%D \module
+%D [ file=unic-ini,
+%D version=2002.12.03,
+%D title=\CONTEXT\ \UNICODE\ Support,
+%D subtitle=\UNICODE\ \& UTF-8 support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context UNICODE Macros (ini)}
+
+%D Sorry, we only support his in \ETEX.
+
+\beginTEX
+ \def\useunicodevector[#1]{}
+ \expandafter \endinput
+\endTEX
+
+\unprotect
+
+%D This module deals with unicode, and in particular with
+%D \UTF-8 conversion. The prelude to this module was \type
+%D {xtag-utf}, which is now replaced by a one||liner. The
+%D macros below deal with conversions. Thanks to Taco for
+%D providing the following conversion rules.
+%D
+%D \starttabulate[|c|c|c|c|c|]
+%D \NC $b_1$ \NC $b_2$ \NC $b_3$ \NC $b_4$ \NC unicode \NC \NR
+%D \NC192---223\NC128---191\NC \NC \NC 0x80---0x7FF \NC \NR
+%D \NC224---239\NC128---191\NC128---191\NC \NC 0x800---0xFFFF \NC \NR
+%D \NC240---247\NC128---191\NC128---191\NC128---191\NC0x10000---0x1FFFF\NC \NR
+%D \stoptabulate
+%D
+%D In \UTF-8 the characters in the range 128---191 are illegal
+%D as first characters. The characters 254 and 255 are
+%D completely illegal and should not appear at all (they are
+%D related to UTF16).
+%D
+%D The unicode number for an \UTF-8 sequence can be calculated
+%D as follows:
+%D
+%D \starttabulate[|mc|m|mc|m|mc|m|mc|m|]
+%D \NC b_1 \NC \NC \NC \NC \NC \NC \NC if b_1<=127\NC \NR
+%D \NC 64(b_1-192)\NC+\NC (b_2-128)\NC \NC \NC \NC \NC if 192<=b1<=223\NC \NR
+%D \NC 4096(b_1-224)\NC+\NC 64(b_2-128)\NC+\NC (b_3-128)\NC \NC \NC if 224<=b1<=239\NC \NR
+%D \NC262144(b_1-240)\NC+\NC4096(b_2-128)\NC+\NC64(b_3-128)\NC+\NC(b_4-128)\NC if 240<=b1<=247\NC \NR
+%D \stoptabulate
+%D
+%D A lot of information about unicode can be found on the
+%D web (search for Markus Kuhn and unicode and you'll
+%D probably end up at the right place).
+
+%D In \ETEX\ vocabulary such a conversion looks as follows.
+%D We need the \type {`} in order to turn a character into a
+%D number.
+%D
+%D \starttyping
+%D \def\utftwounicode#1#2%
+%D {\number\numexpr (64*(\numexpr (#1-192))+%
+%D (\numexpr(`#2-128)))}
+%D
+%D \def\utfthreeunicode#1#2#3%
+%D {\number\numexpr (4096*(\numexpr (#1-224))+
+%D 64*(\numexpr(`#2-128))+%
+%D (\numexpr(`#3-128)))}
+%D
+%D \def\utffourunicode#1#2#3#4%
+%D {\number\numexpr(262144*(\numexpr (#1-240))+
+%D 4096*(\numexpr(`#1-128))+
+%D 64*(\numexpr(`#2-128))+%
+%D (\numexpr(`#3-128)))}
+%D \stoptyping
+%D
+%D When we map the unicode number on one of the 256 char wide
+%D unicode tables, we need to do a bit of div and mod. Watch
+%D out: an \ETEX\ \type {/} is not the same as \TEX's \type
+%D {\divide}. The former rounds, while the later truncates, so
+%D we need to trucate ourselves. In case you wonder why we
+%D use \type {\numexpr}: this is not only more convenient, but
+%D also makes it possible to avoid scratch counters, so that we
+%D get fast and fully expandable conversions.
+%D
+%D \starttyping
+%D \def\utfdiv#1{\number\numexpr((#1-128)/256)}
+%D \def\utfmod#1{\number\numexpr((#1)-(256*(\utfdiv{#1})))}
+%D \stoptyping
+%D
+%D So far for the readable alternatives. When using \type
+%D {\numexpr} you should be aware of rather unexpected look
+%D ahead effects. The next implementation uses registers,
+%D which saves tokens and is faster. In this case we gain
+%D some 10\% time.
+
+\chardef \utf@a= 64
+\mathchardef \utf@b= 4096
+\newcount\utf@c\utf@c=262144
+\chardef \utf@d= 192
+\chardef \utf@e= 224
+\chardef \utf@f= 240
+\chardef \utf@g= 128
+\mathchardef \utf@h= 256
+\chardef \utf@i= 127
+\mathchardef \utf@j= 2048
+
+%D The definitions now become:
+%D
+%D \starttyping
+%D \def\utftwounicode#1#2%
+%D {\number\numexpr(\utf@a*(\numexpr (#1-\utf@d))+%
+%D (\numexpr(`#2-\utf@g)))}
+%D
+%D \def\utfthreeunicode#1#2#3%
+%D {\number\numexpr(\utf@b*(\numexpr (#1-\utf@e))+
+%D \utf@a*(\numexpr(`#2-\utf@g))+%
+%D (\numexpr(`#3-\utf@g)))}
+%D
+%D \def\utffourunicode#1#2#3#4%
+%D {\number\numexpr(\utf@c*(\numexpr (#1-\utf@f))+
+%D \utf@b*(\numexpr(`#2-\utf@g))+
+%D \utf@a*(\numexpr(`#3-\utf@g))+%
+%D (\numexpr(`#4-\utf@g)))}
+%D \stoptyping
+%D
+%D And:
+%D
+%D \starttyping
+%D \def\utfdiv#1{\number\numexpr((#1-\utf@g)/\utf@h)}
+%D \def\utfmod#1{\number\numexpr((#1)-(\utf@h*(\utfdiv{#1})))}
+%D \stoptyping
+%D
+%D Depending on the usage, you can rely on parenthesis only:
+%D
+%D \starttyping
+%D \def\utftwounicode#1#2%
+%D {\numexpr(\utf@a*(#1-\utf@d)+%
+%D `#2-\utf@g)}
+%D
+%D \def\utfthreeunicode#1#2#3%
+%D {\numexpr(\utf@b*(#1-\utf@e)+%
+%D \utf@a*(`#2-\utf@g)+%
+%D `#3-\utf@g)}
+%D
+%D \def\utffourunicode#1#2#3#4%
+%D {\numexpr(\utf@c*(#1-\utf@f)+%
+%D \utf@b*(`#2-\utf@g)+%
+%D \utf@a*(`#3-\utf@g)+%
+%D `#4-\utf@g)}
+%D \stoptyping
+
+\def\utfdiv#1{\the\numexpr (#1-\utf@g)/\utf@h \relax}
+\def\utfmod#1{\the\numexpr#1-\utf@h*((#1-\utf@g)/\utf@h)\relax}
+
+%D The next one also handles the zero case well:
+
+\def\utfdiv#1{\the\numexpr\ifcase\numexpr#1\relax0\else (#1-\utf@g)/\utf@h \fi\relax}
+\def\utfmod#1{\the\numexpr\ifcase\numexpr#1\relax0\else#1-\utf@h*((#1-\utf@g)/\utf@h)\fi\relax}
+
+% or
+%
+% \def\utfdiv#1{\ifcase\numexpr#1\relax0\else\the\numexpr(#1-\utf@g)/\utf@h\relax\fi}
+% \def\utfmod#1{\ifcase\numexpr#1\relax0\else\the\numexpr#1-\utf@h*((#1-\utf@g)/\utf@h)\relax\fi}
+
+%D When tracing we also need:
+
+\def\utfvid#1{\the\numexpr(#1-\medcard)/\maxcard\relax}
+
+%D Using the three conversion macros, we can now implement
+%D a few handlers. They all call the general \type
+%D {\unicodechar} conversion macro.
+%D
+%D \starttyping
+%D \def\utftwouniglph#1#2%
+%D {\unicodechar{\utftwounicode {#1}{#2}}}
+%D
+%D \def\utfthreeuniglph#1#2#3%
+%D {\unicodechar{\utfthreeunicode{#1}{#2}{#3}}}
+%D
+%D \def\utffouruniglph#1#2#3#4%
+%D {\unicodechar{\utffourunicode {#1}{#2}{#3}{#4}}}
+%D \stoptyping
+%D
+%D Because the unicode number is used a few times per
+%D conversion, we can expand it once (\type {\the} and \type
+%D {\number} make sure of this). This saves us another 10\%.
+%D
+%D \starttyping
+%D \def\utftwouniglph#1#2%
+%D {\@EA\unicodechar\@EA{\the\utftwounicode{#1}{#2}}}
+%D
+%D \def\utfthreeuniglph#1#2#3%
+%D {\@EA\unicodechar\@EA{\the\utfthreeunicode{#1}{#2}{#3}}}
+%D
+%D \def\utffouruniglph#1#2#3#4%
+%D {\@EA\unicodechar\@EA{\the\utffourunicode{#1}{#2}{#3}{#4}}}
+%D \stoptyping
+%D
+%D We can rewrite these macros to faster alternatives: the
+%D less arguments we pass, the faster the conversion will be,
+%D but at the price of readability. So we have:
+%D
+%D \starttyping
+%D \def\utftwouniglph#1#2%
+%D {\@EA\unicodechar\@EA{\the\numexpr(\utf@a*(#1-\utf@d)+%
+%D `#2-\utf@g)}}
+%D
+%D \def\utfthreeuniglph#1#2#3%
+%D {\@EA\unicodechar\@EA{\the\numexpr(\utf@b*(#1-\utf@e)+%
+%D \utf@a*(`#2-\utf@g)+`#3-\utf@g)}}
+%D
+%D \def\utffouruniglph#1#2#3#4%
+%D {\@EA\unicodechar\@EA{\the\numexpr(\utf@c*(#1-\utf@f)+%
+%D \utf@b*(`#2-\utf@g)+\utf@a*(`#3-\utf@g)+`#4-\utf@g)}}
+%D \stoptyping
+%D
+%D Less parsing, and therefore faster:
+
+\def\utftwouniglph#1#2%
+ {\@EA\unicodechar\@EA{\the\numexpr\utf@a*(#1-\utf@d)+%
+ `#2-\utf@g\relax}}
+
+\def\utfthreeuniglph#1#2#3%
+ {\@EA\unicodechar\@EA{\the\numexpr\utf@b*(#1-\utf@e)+%
+ \utf@a*(`#2-\utf@g)+`#3-\utf@g\relax}}
+
+\def\utffouruniglph#1#2#3#4%
+ {\@EA\unicodechar\@EA{\the\numexpr\utf@c*(#1-\utf@f)+%
+ \utf@b*(`#2-\utf@g)+\utf@a*(`#3-\utf@g)+`#4-\utf@g\relax}}
+
+%D Now we come to the unicode handler itself. We will use a few
+%D constants, which saves us (at least at the time of writing
+%D and testing these macros) another 10\%.
+
+\def\@@univector {univ}
+\def\@@unknownchar{unknownchar}
+
+%D Now comes the nice part: turning codes into glyphs. The
+%D actual conversion does not take place here, but is done by
+%D macros in \type{unic-nnn} files. There we map a range onto
+%D named glyphs, so that they fit well into the rest of
+%D \CONTEXT.
+
+%D \macros
+%D {utfunicodetracer}
+%D
+%D By default, the converter produces a character representation,
+%D but for tracing purposes, you can set a trace option.
+
+\chardef\utfunicodetracer=0
+
+%D \def\TraceUnic#1%
+%D {\chardef\utfunicodetracer#1\relax\enableregime[utf]Å°}
+%D
+%D \starttabulate[|c|c|c|c|c|c|]
+%D \NC option \NC number\NC mapping\NC glyph\NC string\NC example \NC \NR
+%D \NC 0 \NC \NC \NC \star\NC \NC \TraceUnic0\NC \NR
+%D \NC 1 \NC \star \NC \NC \NC \NC \TraceUnic1\NC \NR
+%D \NC 2 \NC \NC \star \NC \NC \NC \TraceUnic2\NC \NR
+%D \NC 3 \NC \star \NC \star \NC \NC \NC \TraceUnic3\NC \NR
+%D \NC 4 \NC \star \NC \NC \star\NC \NC \TraceUnic4\NC \NR
+%D \NC 5 \NC \NC \star \NC \star\NC \NC \TraceUnic5\NC \NR
+%D \NC 6 \NC \star \NC \star \NC \star\NC \NC \TraceUnic6\NC \NR
+%D \NC 7 \NC \NC \NC \NC \star \NC \TraceUnic7\NC \NR
+%D \NC 8 \NC \star \NC \NC \NC \NC \TraceUnic8\NC \NR
+%D \NC otherwise\NC \NC \NC \star\NC \NC \TraceUnic9\NC \NR
+%D \stoptabulate
+
+%D \macros
+%D {unicodechar}
+%D
+%D Next we implement the character handler:
+
+\def\unicodechar
+ {\ifcase\utfunicodetracer
+ \expandafter\utfunihash \or
+ \expandafter\utfunichar \or
+ \expandafter\utfunisplit \or
+ \expandafter\utfuniboth \or
+ \expandafter\utfunihashchar \or
+ \expandafter\utfunihashsplit \or
+ \expandafter\utfunihashboth \or
+ \expandafter\utfuniglyphname \or
+ \expandafter\utfunientity \else
+ \expandafter\utfunihash
+ \fi}
+
+%D \startbuffer
+%D \enableregime[utf] \dostepwiserecurse{0}{8}{1}
+%D {\recurselevel:
+%D \chardef\utfunicodetracer=\recurselevel aap‒noot coördinatie – één
+%D \crlf}
+%D \stopbuffer
+%D
+%D \typebuffer \start \getbuffer \stop
+
+%D \macros
+%D {unicodehexnumber}
+%D
+%D A few auxiliary macros, producing the range||char pair:
+
+\def\unicodepair#1%
+ {\utfdiv{#1}:\utfmod{#1}}
+
+\def\unicodenumber#1{\number#1}
+
+\def\unicodehexnumber#1%
+ {\ifnum#1>\maxcard
+ \expanded{\uchexnumbers{\utfvid{#1}}}%
+ \expanded{\uchexnumbers{\utfdiv{\utfdiv{#1}}}}%
+ \else
+ 00%
+ \expanded{\uchexnumbers{\utfdiv{#1}}}%
+ \fi
+ \expanded{\uchexnumbers{\utfmod{#1}}}}
+
+%D The following macros visualize the unicode character. The
+%D \type {\relax} in front of the \type {-} prevents lookahead
+%D problems; somehow \type {\numexpr} cannot look beyond this
+%D sign, and expects a number.
+
+\def\utfunichar #1{{\tttf U\low{\tx\unicodenumber{#1}}}}
+\def\utfunisplit #1{{\tttf U\low{\tx\unicodepair{#1}}}}
+\def\utfuniboth #1{{\tttf U\low{\tx\unicodenumber{#1}->\unicodepair{#1}}}}
+\def\utfunientity #1{{\tttf\&\#x\unicodehexnumber{#1};}}
+
+%D The character itself is accessed and typeset by:
+%D
+%D \starttyping
+%D \def\utfunihash#1%
+%D {\executeifdefined{\@@univector\utfdiv{#1}}%
+%D \gobbleoneargument{\utfmod{#1}}}
+%D \stoptyping
+%D
+%D Again, we can provide a faster alternative, because inside
+%D the conditional executer, the argument is expanded twice,
+%D and therefore the calculation done once more than needed.
+%D So, we make sure that the argument is expansion on
+%D forehand. Just to remind you: \type {#1} is the \UNICODE\
+%D number.
+%D
+%D \starttyping
+%D \def\utfunihash#1%
+%D {\@EA\executeifdefined\@EA{\@EA\@@univector\number\utfdiv{#1}}%
+%D {\unknownchar\gobbleoneargument}{\utfmod{#1}}}
+%D \stoptyping
+%D
+%D In order to save calculation time, I decided to change
+%D this definition into:
+
+%D \starttyping
+%D \def\utfunihash#1%
+%D {\@EA\doutfunihash\@EA{\number\utfdiv{#1}}{#1}}
+%D
+%D \def\doutfunihash#1#2%
+%D {\ifcsname\@@univector\number#1\endcsname
+%D \csname\csname\@@univector#1\endcsname{\utfmod{#2}}\endcsname
+%D \else
+%D \unknownchar
+%D \fi}
+%D \stoptyping
+%D
+%D Or leaner and meaner:
+%D
+%D \starttyping
+%D \def\doutfunihash#1#2%
+%D {\csname
+%D \ifcsname\@@univector\number#1\endcsname
+%D \csname\@@univector#1\endcsname{\utfmod{#2}}%
+%D \else
+%D \@@unknownchar
+%D \fi
+%D \endcsname}
+%D \stoptyping
+%D
+%D And finaly it became:
+
+\def\doutfunihash#1#2%
+ {\ifcsname\@@univector\number#1\endcsname
+ \csname\@@univector#1\endcsname{\utfmod{#2}}%
+ \else
+ \@@unknownchar
+ \fi}
+
+\def\utfunihashglyph#1%
+ {\csname\@EA\doutfunihash\@EA{\number\utfdiv{#1}}{#1}\endcsname}
+
+\def\utfunihashcommand
+ {\@EAEAEA\string\utfunihashglyph}
+
+%D For practical purposes, we handle the normal \ASCII\
+%D characters here:
+
+\def\utfunihashglyph#1%
+ {\csname
+ \ifnum#1<\utf@i
+ \strippedcsname\unicodeasciicharacter\endcsname{#1}%
+ \else
+ \@EA\doutfunihash\@EA{\number\utfdiv{#1}}{#1}\endcsname
+ \fi}
+
+%D With:
+
+\let\unicodeasciicharacter\rawcharacter
+
+%D Now we can say:
+
+\let\utfunihash\utfunihashglyph
+
+%D We also need:
+
+\def\utfuniglyphname#1%
+ {{\tttf
+ \ifnum#1<\utf@i
+ \unicodeasciicharacter{#1}%
+ \else
+ \expandafter\string\csname\doutfunihash{\number\utfdiv{#1}}{#1}\endcsname
+ \fi}}
+
+%D The combined presentation is implemented by:
+
+\def\utfunihashchar #1%
+ {\utfunihash{#1}\low{\infofont\unicodenumber{#1}}}
+
+\def\utfunihashsplit#1%
+ {\utfunihash{#1}\low{\infofont\unicodepair{#1}}}
+
+\def\utfunihashboth #1%
+ {\utfunihash{#1}\low{\infofont\unicodenumber{#1}->\unicodepair{#1}}}
+
+%D Unknown characters get a placeholder.
+
+\unexpanded\def\unknownchar % {} prevents problems with arguments
+ {{\hbox{\vrule\!!width.5em\!!height1ex\!!depth\zeropoint}}}
+
+%D So far for the conversion macros. The optimizations we
+%D did, brought down the runtime some 50\%, which, given that
+%D the majority of characters will be normal \ASCII\
+%D characters, the penalty of conversion is not that large.
+
+%D \macros
+%D {useunicodevector}
+%D
+%D Since we end up with many encodings, it starts making
+%D sense to postpone loading, so let's start doing this
+%D with \UNICODE.
+
+\def\doifunicodevector#1%
+ {\doifdefined{\@@univector#1}}
+
+\def\useunicodevector[#1]%
+ {\processcommalist[#1]\douseunicodevector}
+
+\def\douseunicodevector#1%
+ {\ifundefined{\@@univector#1}%
+ \readsysfile{\f!unicprefix\threedigits{#1}}
+ {\writestatus{unicode}{loading vector #1}}
+ {\writestatus{unicode}{unknown vector #1}}%
+ \fi}
+
+%D \macros
+%D {startunicodevector}
+%D
+%D A vector roughly looks as follows. By putting the text
+%D inside the name constructor, we prevent problems with
+%D partial expansion in macros and special cases.
+%D
+%D \starttyping
+%D \startunicodevector 0
+%D \ifcase\numexpr(#1-159)\or
+%D \@@unknownchar\or % NO-BREAK SPACE
+%D exclamdown\or
+%D textcent\or
+%D ....\else
+%D \@@unknowncharacter
+%D \fi
+%D \stopunicodevector
+%D \stoptyping
+%D
+%D In vector \type {unix-000} you will find another
+%D optimizations. By using as less tokens as possible, we limit
+%D the time skipping branches in the test, and save upto 20\%
+%D runtime.
+
+\def\startunicodevector #1 #2\stopunicodevector
+ {\setgvalue{\@@univector#1}##1{#2}}
+
+%D We define (as a practical example) the utf signal FEFF:
+
+\ifx\zwnbsp\undefined
+ \let\zwnbsp\relax % zerowidthnonbreakablespace
+\fi
+
+\startunicodevector 254
+ \expandafter\strippedcsname\ifnum#1<255 \unknownchar\else\zwnbsp\fi
+\stopunicodevector
+
+%D Here we provide another auxiliary macro:
+%D
+%D \startbuffer
+%D \unicodeinfoline{196}{Ä}{LATIN CAPITAL LETTER A WITH DIAERESIS}
+%D \unicodeinfoline{197}{Ã…}{LATIN CAPITAL LETTER A WITH RING ABOVE}
+%D \unicodeinfoline{198}{Æ}{LATIN CAPITAL LETTER AE}
+%D \unicodeinfoline{199}{Ç}{LATIN CAPITAL LETTER C WITH CEDILLA}
+%D \unicodeinfoline{200}{È}{LATIN CAPITAL LETTER E WITH GRAVE}
+%D \unicodeinfoline{201}{É}{LATIN CAPITAL LETTER E WITH ACUTE}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D \start \enableregime[utf]\getbuffer \stop
+
+\def\unicodeinfoline#1#2#3%
+ {\ifnum#1>\utf@g % 128
+ \noindent \hbox
+ {\hbox to 4em{\tttf\unicodehexnumber{#1}\hss}\quad
+ \hbox to 1em{#2\hss}\quad
+ \hbox to 9em{\tttf\unicodenumber{#1}->\unicodepair{#1}\hss}\quad
+ \hbox to 9em{\tttf\let\utfunihash\utfunihashcommand#2\hss}\quad % tricky
+ \lowercase {\tttf#3}}\par
+ \fi}
+
+%D The next code permits utf code in hyperlinks:
+
+\def\cleanunicodechar#1{.#1.}
+
+\appendtoks \let\unicodechar\cleanunicodechar \to \everycleanupfeatures
+
+%D We will now hook this mechanism in the existing font
+%D handler. More documentation will follow. Probably, some
+%D features in \type {font-uni.tex} will be generalized
+%D and moved here.
+
+\def\unidiv{0} \def\unimod{0}
+
+\chardef\utfunihashmode=0 % 0=hash glyph 1=font glyph
+
+\def\utfunifontglyph#1%
+ {\xdef\unidiv{\number\utfdiv{#1}}%
+ \xdef\unimod{\number\utfmod{#1}}%
+ \ifnum#1<\utf@i
+ \char\unimod % \unicodeascii\unimod
+ \else\ifcsname\@@univector\unidiv\endcsname
+ \csname\doutfunihash{\unidiv}{#1}\endcsname
+ \else % so, these can be different fonts !
+ \unicodeglyph\unidiv\unimod % no \uchar (yet)
+ \fi\fi}
+
+\chardef\utfunicommandmode=0 % 1 = hex
+
+\def\unicodecommandchar#1#2%
+ {\string\char
+ \ifcase\utfunicommandmode
+ #1:#2\else\lchexnumbers#1:\lchexnumbers#2%
+ \fi}
+
+\def\utfunifontcommand#1%
+ {\xdef\unidiv{\number\utfdiv{#1}}%
+ \xdef\unimod{\number\utfmod{#1}}%
+ \ifnum#1<\utf@i
+ \unicodecommandchar\unidiv\unimod
+ \else\ifcsname\@@univector\unidiv\endcsname
+ \@EA\string\csname\doutfunihash{\unidiv}{#1}\endcsname
+ \else
+ \unicodecommandchar\unidiv\unimod
+ \fi\fi}
+
+\def\utfunihash
+ {\ifcase\utfunihashmode
+ \@EA\utfunihashglyph
+ \else
+ \@EA\utfunifontglyph
+ \fi}
+
+\def\utfunihushcommand
+ {\@EAEAEA\string\utfunihashglyph}
+
+\def\utfunihashcommand
+ {\ifcase\utfunihashmode
+ % \@EA\@EAEAEA\@EA\string\@EA\utfunihashglyph
+ \@EA\utfunihushcommand
+ \else
+ \@EA\utfunifontcommand
+ \fi}
+
+%D We can convert from a number to some UTF code with the folowing
+%D conversion macro.
+
+% The first, na\"ive version:
+%
+% \def\numbertoutf#1%
+% {\ifnum#1<128
+% \rawcharacter{#1}%
+% \else\ifnum#1<2048
+% \rawcharacter{\the\numexpr192+#1/64\relax}%
+% \rawcharacter{\the\numexpr128+#1-(#1/64)*64\relax}%
+% \else % 3 bytes
+% \rawcharacter{\the\numexpr224+#1/4096\relax}%
+% \rawcharacter{\the\numexpr128+(#1-(#1/4096)*4096)/128\relax}%
+% \rawcharacter{\the\numexpr128+(#1-(#1/4096)*4096)+(#1-(#1/4096)*4096)/128\relax}%
+% \fi\fi}
+
+% We have to compensate for etex's rounding (thanks to Taco and
+% Nanning) for pointing/sorting this out:
+
+% \def\numbertoutf#1%
+% {\ifnum#1<128
+% \rawcharacter{#1}%
+% \else\ifnum#1<2048
+% \rawcharacter{\the\numexpr192+(#1-32)/64\relax}%
+% \rawcharacter{\the\numexpr128+(#1-((#1-32)/64)*64)\relax}%
+% \else
+% \rawcharacter{\the\numexpr224+(#1-2048)/4096\relax}%
+% \rawcharacter{\the\numexpr128+(#1-(((#1-2048)/4096)*4096)-32)/64\relax}%
+% \rawcharacter{\the\numexpr128+(#1-(((#1-2048)/4096)*4096)-((#1-(((#1-2048)/4096)*4096)-32)/64)*64)\relax}%
+% \fi\fi}
+
+\beginETEX \numexpr
+
+\chardef \utf@a= 64
+\mathchardef \utf@b= 4096
+\newcount\utf@c\utf@c=262144
+\chardef \utf@d= 192
+\chardef \utf@e= 224
+\chardef \utf@f= 240
+\chardef \utf@g= 128
+\mathchardef \utf@h= 256
+\chardef \utf@i= 127
+\mathchardef \utf@j= 2048
+\chardef \utf@k= 32
+
+\def\numbertoutf#1%
+ {\ifnum#1<\utf@g
+ \rawcharacter{#1}%
+ \else\ifnum#1<\utf@j
+ \rawcharacter{\the\numexpr\utf@d+(#1-\utf@k)/\utf@a\relax}%
+ \rawcharacter{\the\numexpr\utf@g+(#1-((#1-\utf@k)/\utf@a)*\utf@a)\relax}%
+ \else
+ \rawcharacter{\the\numexpr\utf@e+(#1-\utf@j)/\utf@b\relax}%
+ \rawcharacter{\the\numexpr\utf@g+(#1-(((#1-\utf@j)/\utf@b)*\utf@b)-\utf@k)/\utf@a\relax}%
+ \rawcharacter{\the\numexpr\utf@g+(#1-(((#1-\utf@j)/\utf@b)*\utf@b)-((#1-(((#1-\utf@j)/\utf@b)*\utf@b)-\utf@k)/\utf@a)*\utf@a)\relax}%
+ \fi\fi}
+
+\endETEX
+
+\beginTEX
+
+\def\numbertoutf#1%
+ {[\number#1]}
+
+\endTEX
+
+%D Goodies:
+
+\fetchruntimecommand \showunicodevector {\f!unicprefix\s!run}
+\fetchruntimecommand \showunicodetable {\f!unicprefix\s!run}
+
+%D Well, let's at least preload a few familiar ones. Here we
+%D also load the \UTF\ regime.
+
+\useunicodevector[0,1,2,3,4,5,30,32,33,34,39] \useregime[utf]
+
+% 31, text mem usage first
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/unic-run.tex b/Master/texmf-dist/tex/context/base/unic-run.tex
new file mode 100644
index 00000000000..49b8b6d968d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/unic-run.tex
@@ -0,0 +1,129 @@
+%D \module
+%D [ file=unic-run,
+%D version=2005.06.22,
+%D title=\CONTEXT\ \UNICODE\ Support,
+%D subtitle=Goodies,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D \macros
+%D {showunicodevector}
+%D
+%D Original version by Nikolai Weibull. Adapted a bit (no local count
+%D definitions, stepwiserecurse instead of -1 calculations, a bit less
+%D code and such). BTW, this is kind of tricky and somehow we don't
+%D have align interference.
+
+\gdef\doshowunicodevectorrow#1#2%
+ {\NC
+ \ttx\uchexnumber{#2}%
+ \VL
+ \dostepwiserecurse{0}{15}{1}{\unicodechar{\numexpr#1*256+#2+\recurselevel*16\relax}\VL}%
+ \AR}
+
+\gdef\showunicodevector#1%
+ {\starttable[|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|]
+ \NC\NC\dostepwiserecurse{0}{15}{1}{\ttx\uchexnumber\recurselevel\NC}\AR
+ \DC\DL[16]\DR
+ \dostepwiserecurse{0}{15}{1}
+ {\expanded{\doshowunicodevectorrow{#1}{\recurselevel}}%
+ \DC\DL[16]\DR}
+ \NC \use{17}{\hfill \ttx unicode table hex:\uchexnumbers{#1} dec:\threedigits{#1}\kern-.25em}\NC \AR
+ \stoptable}
+
+%D \starttyping
+%D \chardef\utfunicodetracer=0
+%D \chardef\utfunicodetracer=7
+%D
+%D \showunicodevector{000}
+%D \showunicodevector{001}
+%D \showunicodevector{002}
+%D \showunicodevector{003}
+%D \showunicodevector{004}
+%D \showunicodevector{005}
+%D \showunicodevector{030}
+%D \showunicodevector{031}
+%D \showunicodevector{032}
+%D \showunicodevector{033}
+%D \showunicodevector{034}
+%D \stoptyping
+
+%D \macros
+%D {showunicodetable}
+%D
+%D A more verbose variant:
+
+\gdef\doshowunicodetablerow#1#2%
+ {\bTR
+ \bTD\uchexnumber{#2}\eTD
+ \dostepwiserecurse{0}{15}{1}
+ {\bTD
+ \edef\entrypoint{\the\numexpr#1*256+#2+##1*16\relax}%
+ \chardef\utfunicodetracer0{\dontleavehmode \strut\unicodechar\entrypoint\endgraf}%
+ \tt
+ \chardef\utfunicodetracer7{\dontleavehmode\txx\strut\unicodechar\entrypoint\endgraf}%
+ \chardef\utfunicodetracer3{\dontleavehmode\txx\strut\unicodechar\entrypoint\endgraf}%
+ \chardef\utfunicodetracer8{\dontleavehmode\txx\strut\unicodechar\entrypoint\endgraf}%
+ \eTD}%
+ \bTD\uchexnumber{#2}\eTD
+ \eTR}
+
+\gdef\showunicodetable#1%
+ {\vbox\bgroup
+ \setupTABLE[\c!background=\v!screen,\c!backgroundscreen=.90,\c!frame=\v!off,\c!frameoffset=0pt,\c!width=8em,\c!height=6em]%
+ \setupTABLE[c] [\v!each] [\c!align={middle,lohi}]%
+ \setupTABLE[c] [\v!first][\c!background=\v!screen,\c!backgroundscreen=.85,\c!style=\tt\tfa]%
+ \setupTABLE[c] [\v!last] [\c!background=\v!screen,\c!backgroundscreen=.85,\c!style=\tt\tfa]%
+ \setupTABLE[r] [\v!first][\c!background=\v!screen,\c!backgroundscreen=.85,\c!style=\tt\tfa]%
+ \setupTABLE[r] [\v!last] [\c!background=\v!screen,\c!backgroundscreen=.85,\c!style=\tt\tfa]%
+ \setupTABLE[r] [\v!odd] [\c!background=\v!screen,\c!backgroundscreen=.80]%
+ \setupTABLE[c] [\v!odd] [\c!background=\v!screen,\c!backgroundscreen=.80]%
+ \setupTABLE[\v!odd][\v!odd] [\c!background=\v!screen,\c!backgroundscreen=.90]%
+ \bTABLE
+ \bTR
+ \bTD dec: \numbers{#1}\endgraf hex: \uchexnumbers{#1}\eTD
+ \dostepwiserecurse{0}{15}{1}{\bTD\uchexnumber{##1}\eTD}%
+ \bTD dec: \numbers{#1}\endgraf hex: \uchexnumbers{#1}\eTD
+ \eTR
+ \dostepwiserecurse{0}{15}{1}{\doshowunicodetablerow{#1}{##1}}%
+ \bTR
+ \bTD dec: \numbers{#1}\endgraf hex: \uchexnumbers{#1}\eTD
+ \dostepwiserecurse{0}{15}{1}{\bTD\uchexnumber{##1}\eTD}%
+ \bTD dec: \numbers{#1}\endgraf hex: \uchexnumbers{#1}\eTD
+ \eTR
+ \eTABLE
+ \egroup}
+
+\protect \endinput
+
+% alternative
+%
+% \gdef\doshowunicodevectorrowa#1#2#3#4%
+% {\NC
+% \ttx\uchexnumber{#2}%
+% \VL
+% \dostepwiserecurse{#3}{#4}{1}{\unicodechar{\numexpr#1*256+#2+\recurselevel*16\relax}\VL}%
+% \AR}
+%
+% \gdef\doshowunicodevectorrowb#1#2#3#4%
+% {\NC
+% \relax
+% \VL
+% \dostepwiserecurse{#3}{#4}{1}{\unicodechar{\numexpr#1*256+#2+\recurselevel*16\relax}\VL}%
+% \AR}
+%
+% \gdef\showunicodevector#1%
+% {\starttable[|c|c|c|c|c|c|c|c|c|]
+% \NC\NC\dostepwiserecurse{0}{7}{1}{\ttx\uchexnumber\recurselevel/\uchexnumber{\the\numexpr2*\recurselevel\relax}\NC}\AR\DC\DL[8]\DR
+% \dostepwiserecurse{0}{15}{1}
+% {\expanded{\doshowunicodevectorrowa{#1}{\recurselevel}{0} {7}}\DC\DL[8]\DR%
+% \expanded{\doshowunicodevectorrowb{#1}{\recurselevel}{8}{15}}\DC\DL[8]\DR}%
+% \NC \use{9}{\hfill \ttx unicode table hex:\uchexnumbers{#1} dec:\threedigits{#1}\kern-.25em}\NC \AR
+% \stoptable}
diff --git a/Master/texmf-dist/tex/context/base/verb-eif.tex b/Master/texmf-dist/tex/context/base/verb-eif.tex
new file mode 100644
index 00000000000..16ee611e1e2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-eif.tex
@@ -0,0 +1,211 @@
+%D \module
+%D [ file=verb-eif,
+%D version=2000.08.23,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty Eiffel Verbatim,
+%D author={Berend de Boer \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty EIFFEL Verbatim}
+
+%D \startbuffer
+%D \startEIFFEL
+%D class TEST
+%D
+%D creation
+%D make
+%D
+%D feature -- creation
+%D
+%D make is
+%D do
+%D print ("hello world")
+%D end
+%D
+%D end
+%D \stopEIFFEL
+%D \stopbuffer
+%D
+%D
+%D If a variable in a comment is quoted with `..', it is typeset
+%D as a variable (common Eiffel convention for pretty typesetters):
+%D
+%D \startbuffer
+%D \startEIFFEL
+%D class TEST
+%D
+%D feature
+%D
+%D say (something: STRING) is
+%D -- say `something' to stdout
+%D do
+%D print (something)
+%D end
+%D
+%D end -- class TEST
+%D \stopEIFFEL
+%D \stopbuffer
+%D
+%D
+%D Recommended, OOSC2 style setting is:
+%D
+%D \setuptyping
+%D [EIFFEL]
+%D [margin=1em,palet=,color=blue,style=\it,icommand=\bf,ccommand=\tf]
+%D
+
+%D We borrow most of the macros from the \PERL\ driver.
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+%D \EIFFEL\ has only the one line comment sequence \type{--}.
+
+\gdef\EIFsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\{=33 \setpretty`\}=33
+ \setpretty`\[=33 \setpretty`\]=33 \setpretty`\(=33 \setpretty`\)=33
+ \setpretty`\;=33 \setpretty`\:=33
+ \setpretty`\!=33 \setpretty`\?=33
+ \setpretty`\==33 \setpretty`\~=33 \setpretty`\<=33 \setpretty`\>=33
+ \setpretty`\-=33 \setpretty`\+=33 \setpretty`\/=33 \setpretty`\*=33
+ \setpretty`\^=33
+ \setpretty`\%=41 \setpretty`\-=45
+ \setpretty`\`=81 \setpretty`\'=82 }
+
+\gdef\EIFsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 33 \EIFtypesymbol
+ \installprettyhandler 45 \EIFtypefourfive
+ \installprettyhandler 81 \EIFtypeeightone
+ \installprettyhandler 82 \EIFtypeeighttwo
+ \installprettyhandler 90 \EIFtypenine }
+
+\gdef\EIFsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \inPLcommentfalse
+ \verbatimfont
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\EIFsetvariables
+ {\PLsetvariables}
+
+\gdef\setupprettyEIFtype%
+ {\def\prettyidentifier{EIF}%
+ \let\PLidentifiers=\EIFidentifiers
+ \let\PLvariables=\EIFvariables
+ \EIFsetvariables
+ \EIFsetcontrols
+ \EIFsethandlers
+ \EIFsetspecials
+ \PLsetdiagnostics}
+
+% symbols should appear in roman
+
+\gdef\EIFtypesymbol#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi}
+
+% recognize comments
+
+\gdef\EIFtypefourfive%
+ {\handlenextnextpretty\doEIFtypefourfive\PLtypefourtwo}
+
+\gdef\doEIFtypefourfive#1#2%
+ {\endPLtypesix
+ \getprettydata{#2}%
+ \ifnum\prettytype=45
+ \let\next=\dodoEIFtypefourfive
+ \else
+ \let\next=\PLtypefourtwo
+ \fi
+ \next{#1}#2}
+
+\gdef\dodoEIFtypefourfive% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoEIFtypefourfive\dodododoPLtypefourfive}
+
+\gdef\dododoEIFtypefourfive%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoEIFtypefourfive}
+
+\gdef\dodododoEIFtypefourfive#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \ifinPLdouble
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty\prettynaturalfont}%
+ \expandafter\next
+ \fi
+ \fi}
+
+% recognize `name' in comments and format them like variables
+
+\gdef\EIFtypeeightone#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \verbatimfont
+ \else
+ \getpretty{#1}%
+ \fi}
+
+\gdef\EIFtypeeighttwo#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \prettynaturalfont
+ \else
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi}
+
+% double quote
+
+\gdef\EIFtypenine#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \global\inPLdoublefalse
+ {\prettynaturalfont\/%
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \else
+ \global\inPLdoubletrue
+ {\prettynaturalfont
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi\fi\fi}
+
+\useprettyidentifiers \EIFidentifiers \EIFsetspecials
+ alias all and as check class create creation debug deferred do else
+ elseif end ensure expanded export external false feature from frozen
+ if implies indexing infix inherit inspect invariant is like local
+ loop not obsolete old once or prefix redefine rename require rescue
+ precursor retry select separate strip then true undefine unique
+ until variant when xor
+
+\useprettyidentifiers \EIFvariables \EIFsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-ini.tex b/Master/texmf-dist/tex/context/base/verb-ini.tex
new file mode 100644
index 00000000000..c38c3f6f4cc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-ini.tex
@@ -0,0 +1,2089 @@
+%D \module
+%D [ file=verb-ini,
+%D version=1997.12.22,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Today I would implement the pretty handler slightly
+%D different, using stack and intermediate flushing. Maybe
+%D even without active chars. So, someday \unknown
+
+%D Because this module is quite independant of system macros,
+%D it can be used as a stand||alone verbatim environment.
+%D
+%D This is a sort of second release of \type{supp-ver} and
+%D therefore differs in some aspects from the implementation
+%D published in the \MAPS. The first change concern
+%D optimization of breaks, that is, the first and last two
+%D lines of verbatim blocks are kept together. The second
+%D adaption is due to the fact that I wanted to support pretty
+%D printing not only for \TEX\ sources, but also for \PERL,
+%D \METAPOST\ and probably more. The \JAVASCRIPT\ module is
+%D closely related to \PERL, so we will not mention that one
+%D again.
+
+\ifx \undefined \writestatus \input supp-mis.tex \fi
+
+%D Verbatim typesetting, especially of \TEX\ sources, is a
+%D non||trivial task. This is a direct results of the fact that
+%D characters can have \CATCODES\ other than~11 and such
+%D characters needs a special treatment. What for instance is
+%D \TEX\ supposed to do when it encounters a \type{$} or an
+%D \type{#}? This module deals with these matters.
+
+\writestatus{loading}{Context Verbatim Macros / Initialization}
+
+%D The verbatim environment has some features, like coloring
+%D \TEX\ text, seldom found in other environments. Especially
+%D when the output of \TEX\ is viewed on an electronic medium,
+%D coloring has a positive influence on the readability of
+%D \TEX\ sources, so we found it very acceptable to dedicate
+%D half of this module to typesetting \TEX\ specific character
+%D sequences in color. In this module we'll also present some
+%D macro's for typesetting inline, display and file verbatim.
+%D The macro's are capable of handling \TAB\ too.
+%D
+%D This module shows a few tricks that are often overseen by
+%D novice, like the use of the \TEX\ primitive \type{\meaning}.
+%D First I'll show in what way the users are confronted with
+%D verbatim typesetting. Because we want to be able to test for
+%D symmetry and because we hate the method of closing down the
+%D verbatim mode with some strange active character, we will
+%D use the following construction for display verbatim:
+%D
+%D \starttyping
+%D \starttyping
+%D The Dutch word 'typen' stands for 'typing', therefore in the Dutch version
+%D one will not find the word 'verbatim'.
+%D \stoptyping
+%D \stoptyping
+%D
+%D In \CONTEXT\ files can be typed with \type{\typefile} and
+%D inline verbatim can be accomplished with \type{\type}. This
+%D last command comes in many flavors:
+%D
+%D \starttyping
+%D We can say \type<<something>> or \type{something}. The first one is a bit
+%D longer but also supports slanted typing, which accomplished by typing
+%D \type<<a <<slanted>> word>>. We can also use commands to enhance the text
+%D \type<<with <</bf boldfaced>> text>>. Just to be complete, we decided
+%D to accept also \LaTeX\ alike verbatim, which means that \type+something+
+%D and \type|something| are valid commands too. Of course we want the grouped
+%D alternatives to process \type{hello {\bf big} world} with braces.
+%D \stoptyping
+%D
+%D In the core modules, we will build this support on top of
+%D this module. There these commands can be tuned with
+%D accompanying setup commands. There we can enable commands,
+%D slanted typing, control spaces, \TAB||handling and (here we
+%D are:) coloring. We can also setup surrounding white space
+%D and indenting. Here we'll only show some examples.
+
+\unprotect
+
+%D \macros
+%D {verbatimfont}
+%D
+%D When we are typesetting verbatim we use a non||proportional
+%D (mono spaced) font. Normally this font is available by
+%D calling \type{\tt}. In \CONTEXT\ this command does a
+%D complete font||style switch. There we could have stuck with
+%D \type{\tttf}.
+
+\ifx\verbatimfont\undefined \def\verbatimfont{\tt\normalnoligatures\font} \fi
+
+\ifx\normalnoligatures\undefined \let\normalnoligatures\gobbleoneargument \fi
+
+%D \macros
+%D {obeyedspace, obeyedtab, obeyedline, obeyedpage}
+%D
+%D We have followed Knuth in naming macros that make \SPACE,
+%D \NEWLINE\ and \NEWPAGE\ active and assigning them
+%D \type{\obeysomething}, but first we set some default values.
+
+\def\obeyedspace {\hbox{ }}
+\def\obeyedtab {\obeyedspace}
+\def\obeyedline {\par}
+\def\obeyedpage {\vfill\eject}
+
+%D Because we will introduce a status variable, we can define
+%D a better \type {\obeyedspace}.
+
+\def\obeyedspace {\ifprocessingverbatim\hbox{ }\else\space\fi}
+
+%D \macros
+%D {controlspace,setcontrolspaces}
+%D
+%D First we define \type{\obeyspaces}. When we want visible
+%D spaces (control spaces) we only have to adapt the definition
+%D of \type{\obeyedspace} to:
+
+\def\controlspace{\hbox{\char32}}
+\def\normalspace { }
+\def\normalspaces{\catcode`\ =\@@space}
+
+\bgroup
+\catcode`\ =\@@active
+\gdef\obeyspaces{\catcode`\ =\@@active\def {\obeyedspace}}
+\gdef\setcontrolspaces{\catcode`\ =\@@active\def {\controlspace}}
+\egroup
+
+%D \macros
+%D {obeytabs, obeylines, obeypages,
+%D ignoretabs, ignorelines, ignorepages}
+%D
+%D Next we take care of \NEWLINE\ and \NEWPAGE\ and because we
+%D want to be able to typeset listings that contain \TAB, we
+%D have to handle those too. Because we have to redefine the
+%D \NEWPAGE\ character locally, we redefine the meaning of
+%D this (often already) active character.
+
+\catcode`\^^L=\@@active \def^^L{\par}
+
+%D The following indirect definitions enable us to implement
+%D all kind of \type{\obeyed} handlers.
+
+\bgroup
+
+\catcode`\^^I=\@@active
+\catcode`\^^M=\@@active
+\catcode`\^^L=\@@active
+
+\gdef\obeytabs {\catcode`\^^I=\@@active\def^^I{\obeyedtab}}
+\gdef\obeylines {\catcode`\^^M=\@@active\def^^M{\obeyedline}}
+\gdef\obeypages {\catcode`\^^L=\@@active\def^^L{\obeyedpage}}
+
+\gdef\ignoretabs {\catcode`\^^I=\@@active\def^^I{\obeyedspace}}
+\gdef\ignorelines {\catcode`\^^M=\@@active\def^^M{\obeyedspace}}
+\gdef\ignorepages {\catcode`\^^L=\@@ignore} % \@@active\def^^L{\obeyedline}}
+\gdef\ignoreeofs {\catcode`\^^Z=\@@ignore}
+
+%D For testing (see digit parser) we need an indirect macro
+%D in order to compare the next (\type {\next}) token
+%D (possibly \type {^^M}) being \type {\obeyedline}.
+
+\gdef\nextobeyedline{\obeyedline}
+
+\egroup
+
+%D \macros
+%D {obeycharacters}
+%D
+%D We also predefine \type{\obeycharacters}, which will
+%D enable us to implement character||specific behavior, like
+%D colored verbatim.
+
+\let\obeycharacters=\relax
+
+%D \macros
+%D {settabskips}
+%D
+%D The macro \type{\settabskip} can be used to enable tab
+%D handling. Processing tabs is sometimes needed when one
+%D processes a plain \ASCII\ listing. Tab handling slows down
+%D verbatim typesetting considerably.
+
+\bgroup
+
+\catcode`\^^I=\@@active
+
+\gdef\settabskips
+ {\let\processverbatimline\doprocesstabskipline
+ \catcode`\^^I\@@active
+ \let^^I\doprocesstabskip}
+
+\gdef\setfixedtabskips#1%
+ {\catcode`\^^I\@@active
+ \def^^I{\kern#1\spaceskip}}
+
+\egroup
+
+%D \macros
+%D {processingverbatim}
+%D
+%D Typesetting a file in most cases results in more than one
+%D page. Because we don't want problems with files that are
+%D read in during the construction of the page, we set \type
+%D {\ifprocessingverbatim}, so the output routine can adapt
+%D its behavior. Originally we used \type {\scratchread}, but
+%D because we want to support nesting, we decided to use a
+%D separate input file.
+
+\newif\ifprocessingverbatim
+
+%D \macros
+%D {processinlineverbatim}
+%D
+%D Although the inline verbatim commands presented here will be
+%D extended and embedded in the core modules of \CONTEXT,
+%D they can be used separately. Both grouped and character
+%D alternatives are provided but \type{<<} and nested
+%D braces are implemented in the core module. This commands
+%D takes one argument: the closing command.
+%D
+%D \starttyping
+%D \processinlineverbatim{\closingcommand}
+%D \stoptyping
+%D
+%D One can define his own verbatim commands, which can be very
+%D simple:
+%D
+%D \starttyping
+%D \def\Verbatim {\processinlineverbatim\relax}
+%D \stoptyping
+%D
+%D or a bit more more complex:
+%D
+%D \starttyping
+%D \def\GroupedVerbatim%
+%D {\bgroup
+%D \dosomeusefullthings
+%D \processinlineverbatim\egroup}
+%D \stoptyping
+%D
+%D Before entering inline verbatim mode, we take care of the
+%D unwanted \TAB, \NEWLINE\ and \NEWPAGE\ characters and
+%D turn them into \SPACE. We need the double \type{\bgroup}
+%D construction to keep the closing command local.
+
+\def\setverbatimspaceskip
+ {\setbox\scratchbox\hbox{x}%
+ \spaceskip\wd\scratchbox
+ \xspaceskip\spaceskip}
+
+\def\setupinlineverbatim
+ {\verbatimfont
+ \setverbatimspaceskip
+ \let\obeytabs\ignoretabs
+ \let\obeylines\ignorelines
+ \let\obeypages\ignorepages
+ \setupcopyverbatim}
+
+\def\doprocessinlineverbatim
+ {\ifx\next\bgroup
+ \setupinlineverbatim
+ \catcode`\{\@@begingroup
+ \catcode`\}\@@endgroup
+ \def\next{\let\next=}%
+ \else
+ \setupinlineverbatim
+ \def\next##1{\catcode`##1=\@@endgroup}%
+ \fi
+ \next}
+
+\def\processinlineverbatim#1%
+ {\bgroup
+ \processingverbatimtrue
+ \localcatcodestrue % TeX processes paragraph's
+ \def\endofverbatimcommand{#1\egroup}%
+ \bgroup
+ \aftergroup\endofverbatimcommand
+ \futurelet\next\doprocessinlineverbatim}
+
+%D The closing command is executed afterwards as an internal
+%D command and therefore should not be given explicitly when
+%D typesetting inline verbatim.
+
+%D \macros
+%D {optimizeverbatim}
+%D
+%D One day, a collegue asked me why I didn't prevent breaking
+%D after a first or before a last verbatim line. At first sight
+%D I thought of using the two pass mechanism, but because we're
+%D already keeping track of individual lines, a more direct
+%D solution is possible: we just keep track of in what line
+%D we are. One can turn this feature off.
+
+\newif\ifoptimizeverbatim \optimizeverbatimtrue
+
+%D Before we implement display and file verbatim, we define
+%D some macros that deal with typesetting the individual lines.
+%D We keep track of the status by means of a character
+%D specification. This status variable tells us if we're
+%D skipping a first line or placing a first or last line.
+%D The next few examples show us where breaks are inserted.
+%D
+%D \bgroup
+%D
+%D \def\doverbatimnobreak
+%D {\nobreak\hrule width 10cm\par\penalty500} % == \nobreak
+%D
+%D \def\doverbatimgoodbreak
+%D {\nobreak\hrule width 3cm \par\penalty\linepenalty}
+%D
+%D \starttyping
+%D test
+%D test
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D test
+%D test
+%D test
+%D test
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D test
+%D
+%D test
+%D test
+%D test
+%D \stoptyping
+%D
+%D \egroup
+%D
+%D The long ones are \type{\nobreaks} and the short ones
+%D \type{\goodbreaks}. And this is how it's done:
+
+\def\doverbatimnobreak
+ {\ifoptimizeverbatim\penalty500\fi}
+
+\def\doverbatimgoodbreak
+ {\ifoptimizeverbatim\penalty\linepenalty\fi}
+
+\def\doflushverbatimline
+ {\expandafter\dodoverbatimline\expandafter{\savedverbatimline}}
+
+\let\handleverbatimline=\relax
+
+% \def\initializeverbatimline%
+% {\global\let\savedverbatimline=\empty
+% \ifskipfirstverbatimline
+% \global\chardef\verbatimstatus=0
+% \else
+% \global\chardef\verbatimstatus=1
+% \fi}
+%
+% more efficient
+
+\global\chardef\verbatimstatus0
+
+\def\initializeverbatimline
+ {\global\let\savedverbatimline\empty
+ \global\chardef\verbatimstatus\ifskipfirstverbatimline0 \else1 \fi}
+
+\let\donextemptyverbatimline\relax
+
+\def\presetemptyverbatimline
+ {\ifcase\verbatimstatus
+ \global\chardef\verbatimstatus\plusone
+ \or
+ \or
+ \donextemptyverbatimline
+ \or
+ \doflushverbatimline
+ \global\let\savedverbatimline\empty
+ \doemptyverbatimline
+ \global\chardef\verbatimstatus\plustwo
+ \else
+ \kern\zeropoint
+ \doverbatimnobreak
+ \doflushverbatimline
+ \global\let\savedverbatimline\empty
+ \doemptyverbatimline
+ \global\chardef\verbatimstatus\plustwo
+ \fi}
+
+\def\presetnormalverbatimline
+ {\ifcase\verbatimstatus
+ \global\chardef\verbatimstatus\plustwo
+ \or
+ \global\chardef\verbatimstatus\plusthree
+ \or
+ \global\chardef\verbatimstatus\plusthree
+ \or
+ \doflushverbatimline
+ \global\chardef\verbatimstatus\plusfour
+ \or
+ \kern\zeropoint
+ \doverbatimnobreak
+ \doflushverbatimline
+ \global\chardef\verbatimstatus\plusfive
+ \or
+ \doverbatimgoodbreak
+ \doflushverbatimline
+ \fi
+ \global\let\savedverbatimline\verbatimline}
+
+\def\presetlastverbatimline
+ {\ifcase\verbatimstatus \or \or \or
+ \doflushverbatimline
+ \else
+ \kern\zeropoint
+ \doverbatimnobreak
+ \doflushverbatimline
+ \fi}
+
+%D \macros
+%D {skipfirstverbatimline}
+%D
+%D By default the rest of the first line is ignored. We can
+%D turn this feature off by saying:
+%D
+%D \starttyping
+%D \skipfirstverbatimlinefalse
+%D \stoptyping
+
+\newif\ifskipfirstverbatimline \skipfirstverbatimlinetrue
+
+%D \macros
+%D {processdisplayverbatim}
+%D
+%D We can define a display verbatim environment with the
+%D command \type{\processdisplayverbatim} in the following way:
+%D
+%D \starttyping
+%D \processdisplayverbatim{\closingcommand}
+%D \stoptyping
+%D
+%D \noindent For instance, we can define a simple command like:
+%D
+%D \starttyping
+%D \def\BeginVerbatim {\processdisplayverbatim{EndVerbatim}}
+%D \stoptyping
+%D
+%D \noindent But we can also do more advance things like:
+%D
+%D \starttyping
+%D \def\BeginVerbatim {\bigskip \processdisplayverbatim{\EndVerbatim}}
+%D \def\EndVerbatim {\bigskip}
+%D \stoptyping
+%D
+%D When we compare these examples, we see that the backslash in
+%D the closing command is optional. One is free in actually
+%D defining a closing command. If one is defined, the command
+%D is executed after ending verbatim mode.
+
+\def\processdisplayverbatim#1%
+ {\par
+ \bgroup
+ \escapechar=-1
+ \xdef\verbatimname{\string#1}%
+ \egroup
+ \def\endofdisplayverbatim{\csname\verbatimname\endcsname}%
+ \bgroup
+ \parindent\zeropoint
+ \ifdim\lastskip<\parskip
+ \removelastskip
+ \vskip\parskip
+ \fi
+ \parskip\zeropoint
+ \processingverbatimtrue
+ \global\linepartrue
+ \expandafter\let\csname\verbatimname\endcsname\relax
+ \edef\endofverbatimcommand{\csname\verbatimname\endcsname}%
+ \edef\endofverbatimcommand{\meaning\endofverbatimcommand}%
+ \verbatimfont
+ \setverbatimspaceskip
+ \global\linepartrue % needed for paragraph numbering
+ \setupcopyverbatim
+ \initializeverbatimline
+ \copyverbatimline}
+
+%D We save the closing sequence in \type{\endofverbatimcommand}
+%D in such a way that it can be compared on a line by line
+%D basis. For the conversion we use \type{\meaning}, which
+%D converts the line to non||expandable tokens. We reset
+%D \type{\parskip}, because we don't want inter||paragraph
+%D skips to creep into the verbatim source. Furthermore we
+%D \type{\relax} the line||processing macro while getting the
+%D rest of the first line. The initialization command
+%D \type{\setupcopyverbatim} does just what we expect it to do:
+%D it assigns all characters \CATCODE~11. Next we switch to
+%D french spacing and call for obeyance.
+
+\newevery \everysetupverbatim \relax
+
+\def\setupcopyverbatim
+ {\uncatcodecharacters
+ \frenchspacing
+ \obeyspaces
+ \obeytabs
+ \obeylines
+ \obeypages
+ \obeycharacters
+ \the\everysetupverbatim}
+
+%D \macros
+%D {eightbitcharacters,
+%D setcatcodes,uncatcodespecials,
+%D uncatcodecharacters,uncatcodespacetokens,
+%D setnaturalcatcodes}
+%D
+%D As its name says, \type{\uncatcodecharacters} resets the
+%D \CATCODE\ of characters. When we use an upper bound of
+%D 127 or 255, depending in \type{\ifeightbitcharacters}. By
+%D counting down, we only have to use one counter. The
+%D macro \type{\setcatcodes} can be uses to set alternative
+%D values. The macro \type{\resetspecialcharacters} resets
+%D characters with special meanings. This macro is not used
+%D in the verbatim macros, but is best defined in this module.
+
+\def\doprocesscatcodes#1% using a toks does not speed this up
+ {\scratchcounter\ifeightbitcharacters 255\else 127\fi\relax
+ \loop
+ \savecatcode
+ #1\relax
+ \advance\scratchcounter \minusone
+ \ifnum\scratchcounter>\minusone
+ \repeat
+ \let\savecatcode\relax
+ \let\restorecatcodes\dorestorecatcodes}
+
+\def\uncatcodespecials
+ {\doprocesscatcodes
+ {\ifnum\catcode\scratchcounter=\@@letter\relax\else
+ \catcode\scratchcounter=\@@other
+ \fi}%
+ \uncatcodespacetokens}
+
+\def\uncatcodespacetokens
+ {\catcode`\ =\@@space
+ \catcode`\^^L=\@@ignore
+ \catcode`\^^M=\@@endofline
+ \catcode`\^^?=\@@ignore}
+
+\def\setcatcodes#1%
+ {\doprocesscatcodes{\catcode\scratchcounter=#1}}
+
+\def\uncatcodeallcharacters % slow one, with restore
+ {\setcatcodes\@@letter}
+
+\def\uncatcodecharacters % quick one
+ {\setnaturalcatcodes}
+
+\newtoks\everycommoncatcodes
+\newtoks\everynaturalcatcodes
+\newtoks\everynormalcatcodes
+
+\def\setcommoncatcodes
+ {\catcode`\!\@@other \catcode`\?\@@other \catcode`\@\@@other
+ \catcode`\=\@@other \catcode`\<\@@other \catcode`\>\@@other
+ \catcode`\*\@@other \catcode`\/\@@other
+ \catcode`\-\@@other \catcode`\+\@@other
+ \catcode`\:\@@other \catcode`\;\@@other
+ \catcode`\.\@@other \catcode`\,\@@other
+ \catcode`\'\@@other \catcode`\"\@@other \catcode`\`\@@other
+ \catcode`\(\@@other \catcode`\)\@@other
+ \the\everycommoncatcodes}
+
+\def\setnaturalcatcodes % see elsewhere, merge 'm
+ {\setcommoncatcodes
+ \uncatcodespacetokens
+ \catcode`\#\@@other
+ \catcode`\$\@@other
+ \catcode`\%\@@other
+ \catcode`\&\@@other
+ \catcode`\\\@@other
+ \catcode`\^\@@other
+ \catcode`\_\@@other
+ \catcode`\{\@@other
+ \catcode`\|\@@other
+ \catcode`\}\@@other
+ \catcode`\~\@@other
+ \the\everynaturalcatcodes}
+
+\def\setnormalcatcodes
+ {\setcommoncatcodes
+ \uncatcodespacetokens
+ \catcode`\#\@@parameter
+ \catcode`\$\@@mathshift
+ \catcode`\%\@@comment
+ \catcode`\&\@@alignment
+ \catcode`\\\@@escape
+ \catcode`\^\@@superscript
+ \catcode`\_\@@subscript
+ \catcode`\{\@@begingroup
+ \catcode`\|\@@active
+ \catcode`\}\@@endgroup
+ \catcode`\~\@@active
+ \the\everynormalcatcodes}
+
+%D \macros
+%D {localcatcodes,
+%D restorecatcodes,
+%D beginrestorecatcodes,endrestorecatcodes}
+%D
+%D We're not finished dealing \CATCODES\ yet. In \CONTEXT\ we
+%D use only one auxiliary file, which deals with tables of
+%D contents, registers, two pass tracking, references etc. This
+%D file, as well as files concerning graphics, is processed when
+%D needed, which can be in the mid of typesetting verbatim.
+%D However, when reading in data in verbatim mode, we should
+%D temporary restore the normal \CATCODES, and that's exactly
+%D what the next macros do. Saving the catcodes can be
+%D disabled by saying \type{\localcatcodestrue}.
+
+%D The previous macros call for \type{\savecatcode}, which is
+%D implemented as:
+
+\def\@@aa@@{@@aa@@}
+\def\@@cc@@{@@cc@@}
+
+\newif\iflocalcatcodes
+
+\def\savecatcode
+ {\iflocalcatcodes \else
+ \saverestoreactivecatcode
+ {\@EA\let\csname\@@aa@@\the\scratchcounter\endcsname~}%
+ \@EA\chardef\csname\@@cc@@\the\scratchcounter\endcsname
+ \catcode\scratchcounter
+ \fi}
+
+%D It's counterpart is:
+
+\def\restorecatcode
+ {\@EA\catcode\@EA\scratchcounter
+ \csname\@@cc@@\the\scratchcounter\endcsname
+ \saverestoreactivecatcode
+ {\@EA\let\@EA~\csname\@@aa@@\the\scratchcounter\endcsname}}
+
+%D Especially when we enable pretty printing, we need to
+%D restore the meaning of active characters too. Just think of
+%D using \type{||} in headers and footers.
+
+\def\saverestoreactivecatcode#1%
+ {\edef\saveduccode{\the\uccode`~}%
+ \uccode`~=\scratchcounter
+ \uppercase{#1}%
+ \uccode`~=\saveduccode}
+
+%D When we want to restore \CATCODES\ we call for
+%D \type{\restorecatcodes}, which default to \type{\relax}
+
+\let\restorecatcodes=\relax
+
+%D or when we've saved things calls for:
+
+\def\dorestorecatcodes
+ {\iflocalcatcodes \else
+ \doprocesscatcodes\restorecatcode
+ \fi}
+
+%D We also provide an alternative, that forces grouping
+%D when needed. An application of this macros can be found in
+%D buffering data.
+
+\def\beginrestorecatcodes
+ {\ifx\restorecatcodes\relax
+ \let\endrestorecatcodes\relax
+ \else
+ \bgroup
+ \restorecatcodes
+ \let\beginrestorecatcodes\bgroup
+ \let\endrestorecatcodes \egroup
+ \fi}
+
+%D \macros
+%D {makeallother}
+%D
+%D With \type {\makeallother} each character ($>0$) gets the
+%D category code 12.
+%D
+%D The next alternative was okay when memory was still low.
+%D
+%D \starttyping
+%D \def\makeallother
+%D {\dorecurse{255}{\catcode\recurselevel=\@@other}}
+%D \stoptyping
+%D
+%D Today we prebuild a token list:
+
+\ifx\makeallother\undefined
+
+ \newtoks\makeallothertoks
+
+ \dorecurse{255}
+ {\@EA\appendtoks\@EA\catcode\recurselevel=\@@other\to\makeallothertoks}
+
+ \def\makeallother{\the\makeallothertoks}
+
+\fi
+
+%D The main copying routine of display verbatim does an
+%D ordinary string||compare on the saved closing command and
+%D the current line. The space after \type{#1} in the
+%D definition of \type{\next} is essential! As a result of
+%D using \type{\obeylines}, we have to use \type{%}'s after
+%D each line but none after the first \type{#1}.
+
+{\obeylines%
+ \long\gdef\copyverbatimline#1
+ {\def\next{#1 }%
+ \gdef\verbatimline{#1}%
+ \ifx\next\emptyspace%
+ \presetemptyverbatimline%
+ \else%
+ \edef\next{\meaning\next}%
+ \ifx\next\endofverbatimcommand%
+ \presetlastverbatimline%
+ \def\copyverbatimline{\egroup\endofdisplayverbatim}%
+ \else%
+ \presetnormalverbatimline%
+ \fi%
+ \fi%
+ \handleverbatimline%
+ \copyverbatimline}}
+
+%D The actual typesetting of a line is done by a separate
+%D macro, which enables us to implement \TAB\ handling. The
+%D \type{\do} and \type{\dodo} macros take care of the
+%D preceding \type{\parskip}, while skipping the rest of the
+%D first line. The \type{\relax} is used as an signal.
+
+%D \macros
+%D {iflinepar}
+%D
+%D A careful reader will see that \type{\linepar} is reset.
+%D This boolean can be used to determine if the current line is
+%D the first line in a pseudo paragraph and this boolean is set
+%D after each empty line. The \type{\relax} can be used to
+%D determine the end of the line when one implements a scanner
+%D routine.
+
+\newif\iflinepar
+
+\let\doopenupverbatimline=\empty
+
+% \long\def\dodoverbatimline#1%
+% {\leavevmode
+% \doopenupverbatimline
+% \the\everyline\strut\processverbatimline{#1\relax}%
+% \EveryPar{}%
+% \global\lineparfalse
+% \obeyedline\par}
+
+\let\beginverbatimline\relax
+\let\endverbatimline \relax
+
+\long\def\dodoverbatimline#1% we don't want to group
+ {\bgroup % due to pretty status
+ \iflinepar\else\EveryPar{}\fi
+ \leavevmode
+ \xdef\dokeepverbatimlinedata
+ {\parindent \the\parindent
+ \hangindent\the\hangindent
+ \hangafter \the\hangafter
+ \leftskip \the\leftskip
+ \rightskip \the\rightskip}%
+ \egroup
+ \dokeepverbatimlinedata
+ \doopenupverbatimline
+ \the\everyline\strut
+ \beginverbatimline
+ \processverbatimline{#1\relax\flushrestofverbatimline}%
+ \endverbatimline
+ \global\lineparfalse
+ \obeyedline\par}
+
+%D \macros
+%D {flushrestofverbatimline}
+%D
+%D Some pretty drivers will collect tokens for the sake of
+%D testing on keywords. This collected string needs to be
+%D flushed. The \type {\relax} can serve as signal that there
+%D is nothing more to be interpreted.
+
+\let\flushrestofverbatimline\empty
+
+%D \macros
+%D {obeyemptylines,verbatimbaselineskip}
+%D
+%D Empty lines in verbatim can lead to white space on top of
+%D a new page. Because this is not what we want, we turn
+%D them into vertical skips. This default behavior can be
+%D overruled by:
+%D
+%D \starttyping
+%D \obeyemptylines
+%D \stoptyping
+%D
+%D Although it would cost us only a few lines of code, we
+%D decided not to take care of multiple empty lines. When a
+%D (display) verbatim text contains more successive empty
+%D lines, this probably suits some purpose. When applicable,
+%D one can set the verbatim baselineskip.
+
+\bgroup
+\catcode`\^^L=\@@active \gdef\emptypage {^^L}
+\catcode`\^^M=\@@active \gdef\emptyline {^^M}
+ \gdef\emptyspace { }
+\egroup
+
+\def\verbatimbaselineskip% We don't use \let here!
+ {\baselineskip}
+
+\def\doemptyverbatimline
+ {\vskip\verbatimbaselineskip
+ {\setbox0\hbox{\the\everyline}}%
+ \global\linepartrue}
+
+\def\obeyemptylines
+ {\let\donextemptyverbatimline\doemptyverbatimline}
+
+%D \TEX\ does not offer \type{\everyline}, which is a direct
+%D result of its advanced multi||pass paragraph typesetting
+%D mechanism. Because in verbatim mode paragraphs and lines are
+%D more or less equal, we can easily implement our own simple
+%D \type{\everyline} support.
+
+%D \macros
+%D {EveryPar, EveryLine}
+%D
+%D In this module we've reserved \type{\everypar} for the
+%D things to be done with paragraphs and \type{\everyline} for
+%D line specific actions. In \CONTEXT\ however, we use
+%D \type{\everypar} for placing side- and columnfloats,
+%D inhibiting indentation and some other purposes. In verbatim
+%D mode, every line becomes a paragraph, which means that
+%D \type{\everypar} is executed frequently. To be sure, the
+%D user specific use of both \type{\everyline} and
+%D \type{\everypar} is implemented by means of
+%D \type{\EveryLine} and \type{\EveryPar}.
+%D
+%D We still have to take care of the \TAB. A \TAB\ takes eight
+%D spaces and a \SPACE\ normally has a width of 0.5~em. Because
+%D we can be halfway a tabulation, we must keep track of the
+%D position. This takes time, especially when we print complete
+%D files, therefore we \type{\relax} this mechanism by default.
+
+\chardef\spacespertab=7
+
+%\def\doprocesstabskip%
+% {\obeyedspace % \hskip.5em or \hbox to .5em{}
+% \ifdone
+% \advance\scratchcounter 1
+% \let\next\doprocesstabskip
+% \donefalse
+% \else\ifnum\scratchcounter>\spacespertab
+% \let\next\relax
+% \else
+% \advance\scratchcounter 1
+% \let\next\doprocesstabskip
+% \fi\fi
+% \next}
+
+\def\doprocesstabskip
+ {\obeyedspace % \hskip.5em or \hbox to .5em{}
+ \ifdone
+ \donefalse
+ \advance\scratchcounter \plusone
+ \@EA\doprocesstabskip
+ \else\ifnum\scratchcounter>\spacespertab
+ % nothing
+ \else
+ \advance\scratchcounter \plusone
+ \@EAEAEA\doprocesstabskip
+ \fi\fi}
+
+\let\endoftabskipping=\relax % will become obsolete
+
+% \def\doprocesstabskipline#1%
+% {\bgroup
+% \scratchcounter1
+% \dodoprocesstabskipline#1\relax\endoftabskipping
+% \egroup}
+%
+% \def\dodoprocesstabskipline#1#2\endoftabskipping
+% {\ifnum\scratchcounter>\spacespertab
+% \scratchcounter\plusone
+% \donetrue
+% \else
+% \advance\scratchcounter \plusone
+% \donefalse
+% \fi
+% \ifx#1\relax
+% \let\next\relax
+% \else
+% \def\next{#1\dodoprocesstabskipline#2\endoftabskipping}%
+% \fi
+% \next}
+
+\def\doprocesstabskipline#1%
+ {\bgroup
+ \scratchcounter\plusone
+ \dodoprocesstabskipline#1\relax
+ \egroup}
+
+\def\dodoprocesstabskipline#1%
+ {\ifnum\scratchcounter>\spacespertab\relax
+ \donetrue \else \donefalse \advance
+ \fi \scratchcounter \plusone
+ \ifx#1\relax \else
+ \ifcase\tabskipmode
+ % can't happen
+ \or
+ % go on
+ \else\ifnum`#1<128
+ % ok, no special character
+ \else\ifnum\catcode`#1=\active
+ % quits parsing, else utf lookahead problems
+ \chardef\tabskipmode\zerocount
+ \fi\fi\fi
+ \ifcase\tabskipmode
+ \@EAEAEA#1%
+ \else
+ \@EAEAEA#1\@EAEAEA\dodoprocesstabskipline
+ \fi
+ \fi}
+
+% ^ will be replaced
+
+\chardef\tabskipmode=1 % 0=quit 1=no test 2=test on active>128
+
+%
+
+\def\processverbatimline#1{#1} % remove the fake grouping
+
+%D \macros
+%D {processfileverbatim}
+%D
+%D The verbatim typesetting of files is done on a bit different
+%D basis. This time we don't check for a closing command, but
+%D look for \EOF\ and when we've met, we make sure it does not
+%D turn into an empty line.
+%D
+%D \starttyping
+%D \processfileverbatim{filename}
+%D \stoptyping
+%D
+%D We reserve a dedicated file handle.
+
+\newread\verbatiminput
+
+\newcount\verbatimlinenumber
+
+\let \beginofverbatimlines \relax
+\let \endofverbatimlines \relax
+
+\def\processfileverbatim#1%
+ {\par
+ \bgroup
+ \processingverbatimtrue
+ \global\verbatimlinenumber0
+ \global\linepartrue
+ \beginofverbatimlines
+ \bgroup
+ \parindent\zeropoint
+ \ifdim\lastskip<\parskip
+ \removelastskip
+ \vskip\parskip
+ \fi
+ \parskip\zeropoint
+ \uncatcodecharacters
+ \verbatimfont
+ \setverbatimspaceskip
+ \frenchspacing
+ \obeyspaces
+ \obeytabs
+ \obeylines
+ \obeypages
+ \obeycharacters
+ \ignoreeofs
+ \catcode`\^^M=\@@ignore % \par is already taken care of
+ \openin\verbatiminput=#1\relax
+ \skipfirstverbatimlinefalse
+ \initializeverbatimline
+ \def\readline%
+ {\ifeof\verbatiminput \else
+ \ifx\firstverbatimfileline\empty
+ \global\advance\verbatimlinenumber\plusone
+ \read\verbatiminput to \verbatimline
+ \else
+ \let\verbatimline\firstverbatimfileline
+ \let\firstverbatimfileline\empty
+ \fi
+ \fi
+ \ifeof\verbatiminput
+ \ifx\lastverbatimfileline\empty
+ \presetlastverbatimline
+ \let\readline\relax
+ \else % we will re-enter the \ifeof branch twice
+ \presetnormalverbatimline
+ \def\readline%
+ {\let\verbatimline\lastverbatimfileline
+ \let\lastverbatimfileline\empty}%
+ \fi
+ \else\ifx\verbatimline\empty
+ \presetemptyverbatimline
+ \else\ifx\verbatimline\emptyline
+ \presetemptyverbatimline
+ \else\ifx\verbatimline\emptypage
+ \presetemptyverbatimline
+ \else
+ \presetnormalverbatimline
+ \fi\fi\fi\fi
+ \handleverbatimline
+ \readline}%
+ \ifeof\verbatiminput \else
+ \expandafter\readline
+ \fi
+ \closein\verbatiminput
+ \egroup
+ \endofverbatimlines
+ \egroup
+ \ignorespaces}
+
+%D Something new:
+
+\def\processfilelinesverbatim#1#2#3%
+ {\bgroup
+ \let\saveddoflushverbatimline\doflushverbatimline
+ \let\saveddoemptyverbatimline\doemptyverbatimline
+ \def\checkverbatimfileline##1%
+ {\ifnum\verbatimlinenumber<#2\else
+ \ifnum\verbatimlinenumber>#3\else
+ ##1%
+ \fi\fi}%
+ \def\doflushverbatimline
+ {\checkverbatimfileline\saveddoflushverbatimline}%
+ \def\doemptyverbatimline
+ {\checkverbatimfileline\saveddoemptyverbatimline}%
+ \processfileverbatim{#1}%
+ \egroup}
+
+%D \macros
+%D {firstverbatimfileline, lastverbatimfileline}
+%D
+%D The following two macros can be set to achieve special
+%D effects, like:
+%D
+%D \starttyping
+%D \convertargument\StartFake{something}\to\firstverbatimfileline
+%D \convertargument\StopFake\to\firstverbatimfileline
+%D \stoptyping
+%D
+%D These hooks were needed for typesetting flowchart
+%D definitions verbatim, since the temporary files does not
+%D have the start and stop commands embedded.
+
+\let\firstverbatimfileline\empty
+\let\lastverbatimfileline \empty
+
+%D One can use the different \type{\obeysomething} commands to
+%D influence the behavior of these macro's. We use for instance
+%D \type{\obeycharacters} for making \type{/} an active
+%D character when we want to include typesetting commands.
+
+%D The next part of this module deals with pretty printing. The
+%D best way to understand how pretty verbatim typeseting works
+%D is to take a look at the output produced by the \TEX, \PERL\
+%D and \METAPOST\ modules first. Each of these modules has a
+%D few setup macros that tag the individual characters with a
+%D number that itself is associated to a interpretation macro.
+%D A previous implementation linked characters (after making
+%D them active) directly to such interpreters, but the more
+%D indirect way makes it possible to inspect the next
+%D character(s) without much expansion problems and/or
+%D increasing run time.
+
+%D By the way, \TEX\ defines \type{\+} as an outer macro, so we
+%D have to redefine this one to keep ourselves out of complaints.
+
+\def\+{\tabalign}
+
+%D Just to keep things consistant and to speed up some macros a
+%D but, we define a few private constants.
+
+\def\!!PRETTY {PRETTY}
+
+\def\!!prettyone {prettyone}
+\def\!!prettytwo {prettytwo}
+\def\!!prettythree {prettythree}
+\def\!!prettyfour {prettyfour}
+
+%D The first step in defining a pretty interpreter is to assign
+%D each character that needs special attention a number, like:
+%D
+%D \starttyping
+%D \setpretty \`A 21
+%D \stoptyping
+%D
+%D Here the macro \type{\setpretty} makes the character
+%D \type{A} active, and sets it meaning to the auxiliary macro
+%D \type{\handleprettytoken}. This auxiliary macro takes the
+%D character code (a number) and the interpretation number. The
+%D three step implementation uses the \TEX book \type{~} trick.
+
+\def\dodosetpretty
+ {\!!countb=\uccode`~\relax
+ \catcode\!!countb=\@@active
+ \uppercase{\edef~{\noexpand\handleprettytoken{\the\!!counta}{\the\!!countb}}}}
+
+\def\dosetpretty
+ {\afterassignment\dodosetpretty\!!counta}
+
+\def\setpretty
+ {\afterassignment\dosetpretty\uccode`~=}
+
+%D The macro \type{\handleprettytoken} is rather trivial and
+%D calls for an interpreter macro.
+
+\def\handleprettytoken#1%
+ {\csname\!!PRETTY#1\endcsname} % \getvalue{\!!PRETTY#1}}
+
+%D This interpreter is installed by saying
+%D
+%D \starttyping
+%D \installprettyhandler 21 \SOMEprettyone
+%D \stoptyping
+
+\def\installprettyhandler#1 #2%
+ {\letvalue{\!!PRETTY#1}#2}
+
+%D Such an interpreter gets the character number:
+%D
+%D \starttyping
+%D \def\SOMEprettyone#1{...\getpretty{#1}...}
+%D \stoptyping
+%D
+%D where \type{\getpretty} equals \type{\char}. We can't
+%D use \type{\let} here because we have to get rid of the
+%D braces.
+
+\def\getpretty#1%
+ {\char#1}
+
+%D Sometimes the action depends on the next token. This token
+%D can be passed to the macro \type{\getprettydata}, that sets
+%D \type{\prettytype} to the interpreter code. The character
+%D code is saved in \type{\prettychar}.
+
+\def\setprettydata#1#2%
+ {\global\chardef\prettytype#1%
+ \global\chardef\prettychar#2\relax}
+
+\def\getprettydata#1%
+ {\global\chardef\prettytype\zerocount
+ \global\chardef\prettychar\zerocount
+ \bgroup
+ \let\handleprettytoken\setprettydata
+ \setbox0\hbox{#1}% expands #1 and ignores space
+ \egroup}
+
+%D If needed the current and next token can be handled alongside:
+
+\def\getpretties#1#2%
+ {\char#1\bgroup\let\handleprettytoken\getsecondpretty#2\egroup}
+
+\def\getsecondpretty#1#2%
+ {\char#2}
+
+%D When needed, one can reassign an interpreter by using
+%D \type{\newpretty} and its associates.
+%D
+%D \bgroup
+%D \setuptyping[file][optionoptie=tex,paletpalet=colorpretty]
+%D
+%D \startbuffer
+%D \bgroup
+%D \catcode`\|=\@@escape %%\|\
+%D \catcode`\\=\@@active %%\\+
+%D |gdef|dohandlenewpretty#1%
+%D {|def|dodohandlenewpretty##1%
+%D {|def|oldprettychar{#1}%
+%D |getprettydata{##1}%
+%D |ifnum|oldprettychar=|prettychar
+%D |def|dododohandlenewpretty####1%
+%D {|getprettydata{\}%
+%D |let|oldprettytype=|prettytype
+%D |getprettydata{####1}%
+%D |ifnum|prettytype=|oldprettytype
+%D |let|next=|newpretty
+%D |else
+%D |def|next{|newprettycommand{#1}##1####1}%
+%D |fi
+%D |next}%
+%D |let|next=|dododohandlenewpretty
+%D |else
+%D |def|next{|newprettycommand{#1}##1}%
+%D |fi
+%D |next}%
+%D |def|donohandlenewpretty##1%
+%D {|newprettycommand{#1}##1}%
+%D |handlenextnextpretty|dodohandlenewpretty|donohandlenewpretty}
+%D |egroup
+%D \stopbuffer
+%D
+%D {\newprettytrue\typebuffer}
+%D
+%D In this example we see that the colors differ from what we
+%D expect, but conform the definitions in the macro. This kind
+%D of recoloring can be achieved by saying:
+%D
+%D \typebuffer
+%D
+%D We'll show some more examples:
+%D
+%D \startbuffer[pretty]
+%D \installnewpretty r \red
+%D \installnewpretty g \green
+%D \installnewpretty b \blue
+%D \stopbuffer
+%D
+%D \getbuffer[pretty]
+%D
+%D \startbuffer
+%D %%\ r{Red
+%D %%\ g\Green
+%D %%\ b[Blue
+%D \stopbuffer
+%D
+%D {\newprettytrue\typebuffer}
+%D
+%D Watch the green \type{\Green}! This lines are specified as:
+%D
+%D \typebuffer
+%D
+%D along with:
+%D
+%D \typebuffer[pretty]
+%D
+%D When needed, one can use grouping.
+%D
+%D \startbuffer
+%D {yes} %%\ B %%\{[ %%\}]
+%D {no}
+%D {no} %%\ E
+%D {yes}
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here we tell the visualizer that the \type +{+ should be
+%D treated like a \type +[+ so we get:
+%D
+%D {\newprettytrue\typebuffer}
+%D
+%D I won't explain the details of this mechanism. Those who
+%D want to build their own pretty interpreters have to close
+%D read the source anyway.
+%D
+%D Last we show an example of mixed pretty typesetting:
+%D
+%D \startbuffer
+%D \ziezo{test} %%\ P ##\ B##\ T % enter PERL mode %%\ E
+%D if $test eq "test" ##\ B ##\ B##\ T % begin group (\bgroup) %%\ E
+%D if $test eq "test"; ##\ T %%\ B%%\ T % enter TEX mode %%\ E
+%D \ziezo{test} %%\ M %%\ B%%\ T % enter METAPOST mode %%\ E
+%D draw (0,0)--(10,10); %%\ E ##\ B##\ T % end group (\egroup) %%\ E
+%D if $test eq "test";
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D Here we use \type{%%\ T}, \type{%%\ P} and \type{%%\ M} for
+%D switching between \TEX, \PERL\ and \METAPOST\ mode.
+%D
+%D {\newprettytrue\typebuffer}
+%D
+%D \egroup
+%D
+%D Don't forget to set:
+
+\newif\ifnewpretty
+
+\def\installnewpretty
+ {\def\doinstallnewpretty##1%
+ {\setvalue{NP::\the\scratchcounter}{##1}}%
+ \afterassignment\doinstallnewpretty\scratchcounter=`}
+
+%D Let's define the options we used here:
+
+\newevery\everyprettyend\relax
+
+\let\prettyend=\relax
+
+\def\prettybegin
+ {\bgroup\def\prettyend{\the\everyprettyend\egroup}}
+
+\installnewpretty B \prettybegin
+\installnewpretty E \prettyend
+
+\installnewpretty J \setupprettyJVtype
+\installnewpretty M \setupprettyMPtype
+\installnewpretty P \setupprettyPLtype
+\installnewpretty T \setupprettyTEXtype
+
+%D \macros
+%D {ifnaturaltextext}
+%D
+%D When one uses \ETEX, switching to normal \TEX\ is possible
+%D too. We also introduce a switch that can be used in the
+%D drivers and set in higher level shell macros.
+
+\newif\ifnaturaltextext
+
+% \starttyping
+% test /naturaltextext\hpos{word}{test}/relax test
+% \stoptyping
+%
+% \MPxy{word}
+
+\beginETEX \scantokens
+
+%\def\naturaltextext#1#2\relax
+% {\bgroup\prettynaturalfont{\restorecatcodes\scantokens{\ignorespaces#2}}\egroup}
+
+\def\naturaltextext#1\relax
+ {\bgroup
+ \prettynaturalfont{\restorecatcodes\scantokens{\ignorespaces#1}}%
+ \egroup}
+
+\def\naturaltextext#1\relax
+ {\bgroup
+ \def\ascii{#1}%
+ \setnormalcatcodes
+ \restorecatcodes
+ \prettynaturalfont{\scantokens\expandafter{\ascii}\ifhmode\unskip\fi}%
+ \egroup}
+
+\endETEX
+
+\beginTEX
+
+\def\naturaltextext
+ {\disableprettynow}
+
+\endTEX
+
+\installnewpretty N \naturaltextext
+
+%D When seen in action this gives:
+%D
+%D \startbuffer
+%D \startTEX
+%D \def\mathematics#1% %%\ N usage: \type {\mathematics{x^2}}
+%D {\ifmmode#1\else$#1$\fi} %%\ N becomes: \mathematics{X^2}
+%D \stopTEX
+%D \stopbuffer
+%D
+%D \getbuffer
+%D
+%D This is keyed in as:
+%D
+%D \typebuffer
+
+%D This means that when the interpreter modules support this
+%D mechanism, by default we have some keys already available.
+
+\def\newpretty#1%
+ {\getprettydata{#1}%
+ \ifcase\prettytype
+ \expandafter\nonewpretty
+ \else
+ \expandafter\donewpretty
+ \fi
+ #1}
+
+\def\nonewpretty#1#2%
+ {\getprettydata{#2}%
+ \getvalue{NP::\the\prettychar}}
+
+\def\donewpretty#1%
+ {\bgroup
+ \def\handleprettytoken##1##2##3%
+ {\getprettydata{##3}%
+ \egroup
+ \ifcase\prettytype\else
+ \setpretty##2=\prettytype\relax
+ \fi}%
+ #1}
+
+%D When implementing new pretty macros, one only needs to
+%D define something like:
+%D
+%D \starttyping
+%D \def\TEXtypezero%
+%D {\handlenewpretty\TEXtypethree}
+%D \stoptyping
+%D
+%D Here the number states the category (in our examples the
+%D backslash). The second argument takes care of normal
+%D situations.
+
+\def\handlenewpretty#1%
+ {\let\newprettycommand=#1%
+ \handlenextnextpretty\dohandlenewpretty\newprettycommand}
+
+%D The previous shown implementation only interprets single
+%D comments, but the final one also accepts double ones. The
+%D main reason for this is that in \JAVA\ we have to deal with
+%D \type{//}. Personally I prefer the double \type{%%} because
+%D is stands out and is more symmetrical with the double
+%D slash.
+
+\bgroup
+\catcode`\|=\@@escape
+\catcode`\\=\@@active
+|gdef|dohandlenewpretty#1%
+ {|def|dodohandlenewpretty##1%
+ {|def|oldprettychar{#1}%
+ |getprettydata{##1}%
+ |ifnum|oldprettychar=|prettychar
+ |def|dododohandlenewpretty####1%
+ {|getprettydata{\}%
+ |let|oldprettytype=|prettytype
+ |getprettydata{####1}%
+ |ifnum|prettytype=|oldprettytype
+ |let|next|newpretty
+ |else
+ |def|next{|newprettycommand{#1}##1####1}%
+ |fi
+ |next}%
+ |let|next|dododohandlenewpretty
+ |else
+ |def|next{|newprettycommand{#1}##1}%
+ |fi
+ |next}%
+ |def|donohandlenewpretty##1%
+ {|newprettycommand{#1}##1}%
+ |handlenextnextpretty|dodohandlenewpretty|donohandlenewpretty}
+|egroup
+
+%D The `nextnext' macro we used in the previous definition
+%D looks ahead. This is needed because individual lines are
+%D handles by macro's and the next character can be something
+%D that ends the line and/or does not belong to the verbatim
+%D data.
+
+% \def\handlenextnextpretty#1#2#3%
+% {\def\dohandlenextnextpretty%
+% {\ifx\next\bgroup % something {}
+% \let\next=#2%
+% \else\ifx\next\relax % end of line / signal
+% \let\next=#2%
+% %\else\ifx\next\egroup % end of line / no signal
+% % \let\next=#2%
+% %\else\ifx\next\par % end of line / \par
+% % \let\next=#2%
+% \else
+% \let\next=#1%
+% \fi\fi%\fi\fi
+% \next{#3}}%
+% \futurelet\next\dohandlenextnextpretty}
+
+\def\handlenextnextpretty#1#2#3%
+ {\def\dohandlenextnextpretty%
+ {\ifx\next\bgroup % something {}
+ \@EA#2%
+ \else\ifx\next\relax % end of line / signal
+ \@EAEAEA#2%
+ \else
+ \@EAEAEA#1%
+ \fi\fi
+ {#3}}%
+ \futurelet\next\dohandlenextnextpretty}
+
+%D The pretty interpreters can (and will) change the meaning of
+%D some controls. To enable them calling the originals we save
+%D their meanings and to enable nesting we permit this only
+%D once.
+
+\def\saveprettycontrols
+ {\global\let\oldobeyedspace \obeyedspace
+ \global\let\oldobeyedline \obeyedline
+ \global\let\oldobeyedpage \obeyedpage
+ \let\saveprettycontrols \relax}
+
+%D The \PERL\ and \METAPOST\ interpreters will also handle
+%D reserved words. Sets of identifiers are defined like:
+%D
+%D \starttyping
+%D \useprettyidentifiers \MODULAidentifiers \MODULAsetspecials
+%D if then else elsif case while do repeat until ...
+%D \stoptyping
+%D
+%D New entries can be added to existing sets by repeatedly
+%D using this command.
+
+\def\useprettyidentifiers#1#2% \variable \presetcatcodes
+ {\bgroup
+ \ifx#1\undefined
+ \global\let#1=\empty
+ \fi
+ \def\handleprettytoken##1##2{\char##2}%
+ #2\relax
+ \def\douseprettyidentifiers##1\par%
+ {\xdef#1{\space#1\space##1}%
+ \egroup}%
+ \douseprettyidentifiers}
+
+%D We can test om identifiers with:
+
+\def\doifprettyidentifierelse#1%
+ {\doifincsnameelse{\space#1\space}}
+
+%D \macros
+%D {prettyidentifierfont,prettyvariablefont,prettynaturalfont}
+%D
+%D When one want to typeset identifiers and system variables
+%D in a different typeface, one has to set the next two
+%D variables.
+
+\let\prettyidentifierfont=\relax
+\let\prettyvariablefont =\relax
+\let\prettynaturalfont =\relax
+
+%D The interpreter macros are loaded at run time. The main
+%D reason lays in the fact that we don't want to have the
+%D identifier lists hard coded in the format file. To prevent
+%D repetitive loading, one should load the modules before the
+%D first call to the macros.
+%D
+%D \starttyping
+%D \input verb-tex.tex
+%D \input verb-pl.tex
+%D \input verb-mp.tex
+%D \input verb-jv.tex
+%D \stoptyping
+%D
+%D In \CONTEXT\ we follow a different thread, and therefore all
+%D macros in the additional modules use \type {\gdef}'s and
+%D \type {\doglobal}'s. Manipulating \type {\globaldef} is
+%D possible but leads to fuzzy situations.
+
+%D \macros
+%D {ifdisablepretty,disableprettynow,disableprettyafterwards}
+%D
+%D Although for pretty printing \PERL\ and \JAVASCRIPT\ code
+%D one has to implement a bit more clever mechanism, the next
+%D switches can be used to turn off pretty printing. The
+%D boolean turns on this feature.
+
+\newif\ifdisablepretty \disableprettyfalse
+\newif\ifprettydisabled \prettydisabledfalse
+
+\def\disableprettynow
+ {\ifdisablepretty\ifprettydisabled\else
+ \let\prettyidentifierfont\relax
+ \let\prettyvariablefont\relax
+ \let\prettycomment\relax
+ \def\beginofpretty[##1]{}%
+ \let\endofpretty\relax
+ \prettydisabledtrue
+ \fi\fi}
+
+\def\disableprettyafterwards
+ {\ifdisablepretty\ifprettydisabled\else
+ \def\endofpretty{\normalendofpretty\disableprettynow}%
+ \fi\fi}
+
+\def\enableprettynow
+ {\prettydisabledfalse
+ \let\prettyidentifierfont\normalprettyidentifierfont
+ \let\prettyvariablefont \normalprettyvariablefont
+ \let\prettynaturalfont \normalprettynaturalfont
+ \let\beginofpretty \normalbeginofpretty
+ \let\endofpretty \normalendofpretty}
+
+%D This feature is hooked into the verbatim line handling
+%D routine with:
+
+\def\beginverbatimline
+ {\prettydisabledfalse
+ \ifnewpretty\else\let\handlenewpretty\empty\fi % moved
+ \let\normalprettyidentifierfont\prettyidentifierfont
+ \let\normalprettyvariablefont \prettyvariablefont
+ \let\normalprettynaturalfont \prettynaturalfont
+ \let\normalbeginofpretty \beginofpretty
+ \let\normalendofpretty \endofpretty}
+
+\def\endverbatimline
+ {\enableprettynow}
+
+%D The rest of this module is dedicated to non \CONTEXT\ users
+%D and shows an example of an verbatim environment based on the
+%D previous macros.
+%D
+%D The macro's can be used to construct the commands we
+%D mentioned in the beginning of this documentation. We leave
+%D this to the fantasy of the reader and only show some \PLAIN\
+%D \TEX\ alternatives for display verbatim and listings. We
+%D define three commands for typesetting inline text, display
+%D text and files verbatim. The inline alternative also accepts
+%D user supplied delimiters.
+%D
+%D \starttyping
+%D \type{text}
+%D
+%D \starttyping
+%D ... verbatim text ...
+%D \stoptyping
+%D
+%D \typefile{filename}
+%D \stoptyping
+%D
+%D We can turn on the options by:
+%D
+%D \starttyping
+%D \controlspacetrue
+%D \verbatimtabstrue
+%D \prettyverbatimtrue
+%D \stoptyping
+%D
+%D Here is the implementation:
+
+\newif\ifcontrolspace
+\newif\ifverbatimtabs
+\newif\ifprettyverbatim
+
+\ifCONTEXT \else
+
+ \def\presettyping
+ {\ifcontrolspace \let\obeyspace \setcontrolspace \fi
+ \ifverbatimtabs \let\obeytabs \settabskips \fi
+ \ifprettyverbatim \let\obeycharacters\setupprettytype \fi}
+
+ \def\type
+ {\bgroup
+ \def\_{\string_}%
+ \def\^{\string^}%
+ \presettyping
+ \processinlineverbatim\egroup}
+
+ \def\starttyping
+ {\bgroup
+ \presettyping
+ \processdisplayverbatim\stoptyping}
+
+ \def\stoptyping
+ {\egroup}
+
+ \def\typefile#1%
+ {\bgroup
+ \presettyping
+ \processfileverbatim{#1}%
+ \egroup}
+
+\fi
+
+%D In \CONTEXT\ users say things like:
+%D
+%D \starttyping
+%D \definetyping [TEX] [option=TEX]
+%D \definetyping [MP] [option=MP]
+%D \definetyping [PL] [option=PL]
+%D \definetyping [JV] [option=JV]
+%D \stoptyping
+%D
+%D or
+%D
+%D \starttyping
+%D \setuptyping[file][option=color]
+%D \stoptyping
+%D
+%D That way \CONTEXT\ selects the appropriate interpreter
+%D itself, but more on that in another module. In other
+%D packages one can define:
+
+\ifCONTEXT \else
+
+ \input verb-tex
+ \input verb-mp
+ \input verb-pl
+ \input verb-jv
+ \input verb-sql
+
+ \def\startTEX
+ {\bgroup \everypar{}%
+ \let\obeycharacters\setupprettyTEXtype
+ \processdisplayverbatim{\stopTEX}}
+
+ \def\startMP
+ {\bgroup \everypar{}%
+ \let\obeycharacters\setupprettyMPtype
+ \processdisplayverbatim{\stopMP}}
+
+ \def\startPL
+ {\bgroup \everypar{}%
+ \let\obeycharacters\setupprettyPLtype
+ \processdisplayverbatim{\stopPL}}
+
+ \def\startJV
+ {\bgroup \everypar{}%
+ \let\obeycharacters\setupprettyJVtype
+ \processdisplayverbatim{\stopJV}}
+
+ \def\startSQL
+ {\bgroup \everypar{}%
+ \let\obeycharacters\setupprettySQLtype
+ \processdisplayverbatim{\stopSQL}}
+
+ \let\stopTEX=\egroup
+ \let\stopMP =\egroup
+ \let\stopPL =\egroup
+ \let\stopJV =\egroup
+ \let\stopSQL=\egroup
+
+\fi
+
+%D This following poor mans implementation of color is based on
+%D PostScript. One can of course use grayscales too. In the
+%D core modules these macros are redefined to using the color
+%D mechanism present in \CONTEXT.
+
+\ifCONTEXT \else
+
+ \def\setcolorverbatim
+ {\def\prettyone {.9 .0 .0 } % red
+ \def\prettytwo {.0 .8 .0 } % green
+ \def\prettythree {.0 .0 .9 } % blue
+ \def\prettyfour {.8 .8 .6 } % yellow
+ \def\beginofpretty[##1]%
+ {\special{ps:: \csname##1\endcsname setrgbcolor}}
+ \def\endofpretty%
+ {\special{ps:: 0 0 0 setrgbcolor}}} % black
+
+ \def\setgrayverbatim
+ {\def\prettyone {.30 } % gray
+ \def\prettytwo {.45 } % gray
+ \def\prettythree {.60 } % gray
+ \def\prettyfour {.75 } % gray
+ \def\beginofpretty[##1]%
+ {\special{ps:: \csname##1\endcsname setgray}}
+ \def\endofpretty%
+ {\special{ps:: 0 setgray}}} % black
+
+\fi
+
+%D One can redefine these two commands after loading this
+%D module. When available, one can also use appropriate
+%D font||switch macro's. We default to color.
+
+\ifCONTEXT \else \setcolorverbatim \fi
+
+%D Here come the commands that are responsible for entering and
+%D leaving the two states. As we can see, they've got much in
+%D common.
+
+%D The previous version of this module was published in the
+%D \MAPS\ of the dutch \TEX\ users group \NTG. In that article,
+%D the verbatim part of the text was typeset with the following
+%D commands for the examples:
+%D
+%D \starttyping
+%D \def\starttyping% We simplify the \ConTeXt\ macro.
+%D {\bgroup
+%D \everypar{} % We disable some troublesome mechanisms.
+%D \advance\leftskip by 1em
+%D \processdisplayverbatim{\stoptyping}}
+%D
+%D \let\stoptyping=\egroup
+%D \stoptyping
+%D
+%D We also used:
+%D
+%D \starttyping
+%D \def\startdefinition%
+%D {\bgroup
+%D \everypar{} % Again we disable some troublesome mechanisms.
+%D \let\obeycharacters=\setupprettyTEXtype % See verb-tex.tex!
+%D \EveryPar{\showparagraphcounter}%
+%D \EveryLine{\showlinecounter}%
+%D \verbatimbodyfont
+%D \processdisplayverbatim{\stopdefinition}}
+%D
+%D \def\stopdefinition%
+%D {\egroup}
+%D \stoptyping
+%D
+%D And because we have both \type{\EveryPar} and
+%D \type{\EveryLine} available, we can implement a dual
+%D numbering mechanism:
+%D
+%D \starttyping
+%D \newcount\paragraphcounter
+%D \newcount\linecounter
+%D
+%D \def\showparagraphcounter%
+%D {\llap
+%D {\bgroup
+%D \counterfont
+%D \hbox to 4em
+%D {\global\advance\paragraphcounter by 1
+%D \hss \the\paragraphcounter \hskip2em}%
+%D \egroup
+%D \hskip1em}}
+%D
+%D \def\showlinecounter%
+%D {\llap
+%D {\bgroup
+%D \counterfont
+%D \hbox to 2em
+%D {\global\advance\linecounter by 1
+%D \hss \the\linecounter}%
+%D \egroup
+%D \hskip1em}}
+%D \stoptyping
+%D
+%D One may have noticed that the \type{\EveryPar} is only
+%D executed once, because we consider each piece of verbatim
+%D as one paragraph. When one wants to take the empty lines
+%D into account, the following assignments are appropriate:
+%D
+%D \starttyping
+%D \EveryLine
+%D {\iflinepar
+%D \showparagraphcounter
+%D \fi
+%D \showlinecounter}
+%D \stoptyping
+%D
+%D In this case, nothing has to be assigned to \type{\EveryPar},
+%D maybe except of just another extra numbering scheme. The
+%D macros used to typeset this documentation are a bit more
+%D complicated, because we have to take take 'long' margin
+%D lists into account. When such a list exceeds the previous
+%D pargraph we postpone placement of the paragraph number till
+%D there's room. This way so it does not clash with the margin
+%D words.
+
+%D Normally such commands have to be embedded in a decent setup
+%D structure, where options can be set at will.
+%D
+%D Now let's summarize the most important commands.
+%D
+%D \starttyping
+%D \processinlineverbatim{\closingcommand}
+%D \processdisplayverbatim{\closingcommand}
+%D \processfileverbatim{filename}
+%D \stoptyping
+%D
+%D We can satisfy our own specific needs with the following
+%D interfacing macro's:
+%D
+%D \starttyping
+%D \obeyspaces \obeytabs \obeylines \obeypages \obeycharacters
+%D \stoptyping
+%D
+%D We can influence the verbatim environment with the following
+%D macro:
+%D
+%D \starttyping
+%D \obeyemptylines
+%D \stoptyping
+%D
+%D Some needs are fulfilled already with:
+%D
+%D \starttyping
+%D \setcontrolspace \settabskips
+%D \stoptyping
+%D
+%D lines can be enhanced with ornaments using:
+%D
+%D \starttyping
+%D \everypar \everyline \iflinepar
+%D \stoptyping
+%D
+%D and pretty verbatim support is implemented by:
+%D
+%D \starttyping
+%D \beginofpretty[#1] ... \endofpretty
+%D \stoptyping
+%D
+%D and some setup macro, like:
+%D
+%D \starttyping
+%D \setupprettyIDENTIFIERtype
+%D \stoptyping
+%D
+%D The color support macro can be redefined by the user. The
+%D parameter \type{#1} can be one of the four 'fixed'
+%D identifiers {\em prettyone}, {\em prettytwo}, {\em
+%D prettythree} and {\em prettyfour}. We have implemented a
+%D more or less general PostScript color support mechanism,
+%D using \type{specials}. One can toggle between color and
+%D grayscale with:
+%D
+%D \starttyping
+%D \setgrayverbatim \setcolorverbatim
+%D \stoptyping
+
+%D \macros
+%D {permitshiftedendofverbatim}
+%D
+%D We did not mention one drawback of the mechanism described
+%D here. The closing command must start at the first position
+%D of the line. In \CONTEXT\ we will not have this drawback,
+%D because we can test if the end command is a substring of the
+%D current line. The testing is done by two of the support
+%D macros, which of course are not available in a stand alone
+%D application of this module.
+
+\ifCONTEXT
+
+ \let\doifendofverbatim=\doifelse
+
+ \def\permitshiftedendofverbatim
+ {\let\doifendofverbatim\doifinstringelse}
+
+% \def\processdisplayverbatim#1%
+% {\par
+% \bgroup
+% \escapechar=-1
+% \xdef\verbatimname{\string#1}%
+% \egroup
+% \def\endofdisplayverbatim{\csname\verbatimname\endcsname}%
+% \bgroup
+% \parindent\zeropoint
+% \ifdim\lastskip<\parskip
+% \removelastskip
+% \vskip\parskip
+% \fi
+% \parskip\zeropoint
+% \processingverbatimtrue
+% \expandafter\let\csname\verbatimname\endcsname=\relax
+% \expandafter\convertargument\csname\verbatimname\endcsname
+% \to\endofverbatimcommand
+% \verbatimfont
+% \setverbatimspaceskip
+% \global\linepartrue % needed for paragraph numbering
+% \setupcopyverbatim
+% \initializeverbatimline
+% \copyverbatimline}
+
+ {\obeylines%
+ \long\gdef\copyverbatimline#1
+ {\convertargument#1 \to\next%
+ \gdef\verbatimline{#1}%
+ \ifx\next\emptyspace%
+ \presetemptyverbatimline%
+ \else%
+ \doifendofverbatim{\endofverbatimcommand}{\next}%
+ {\presetlastverbatimline%
+ \def\copyverbatimline{\egroup\endofdisplayverbatim}}%
+ {\presetnormalverbatimline}%
+ \fi%
+ \handleverbatimline%
+ \copyverbatimline}}
+
+%D As a bonus, we provide the next alternative, which takes
+%D end tags like \type {Hello World!}.
+
+% \def\processtaggeddisplayverbatim#1%
+% {\par
+% \let\endofdisplayverbatim\relax
+% \convertargument#1\to\endofverbatimcommand
+% \bgroup
+% \parindent\zeropoint
+% \ifdim\lastskip<\parskip
+% \removelastskip
+% \vskip\parskip
+% \fi
+% \parskip\zeropoint
+% \processingverbatimtrue
+% \verbatimfont
+% \setverbatimspaceskip
+% \global\linepartrue % needed for paragraph numbering
+% \setupcopyverbatim
+% \initializeverbatimline
+% \copyverbatimline}
+
+ \def\doprocessdisplayverbatim#1#2%
+ {\par
+ \bgroup
+ \escapechar-1
+ \xdef\verbatimname{\string#2}%
+ \egroup
+ \ifcase#1%
+ \let\endofdisplayverbatim\relax
+ \else
+ \def\endofdisplayverbatim{\csname\verbatimname\endcsname}%
+ \fi
+ \bgroup
+ \parindent\zeropoint
+ \ifdim\lastskip<\parskip
+ \removelastskip
+ \vskip\parskip
+ \fi
+ \parskip\zeropoint
+ \processingverbatimtrue
+ \ifcase#1%
+ \convertargument#2\to\endofverbatimcommand
+ \else
+ \expandafter\let\csname\verbatimname\endcsname=\relax
+ \expandafter\convertargument\csname\verbatimname\endcsname
+ \to\endofverbatimcommand
+ \fi
+ \verbatimfont
+ \setverbatimspaceskip
+ \global\linepartrue % needed for paragraph numbering
+ \setupcopyverbatim
+ \initializeverbatimline
+ \copyverbatimline}
+
+ \def\processdisplayverbatim {\doprocessdisplayverbatim1}
+ \def\processtaggeddisplayverbatim{\doprocessdisplayverbatim0}
+
+\fi
+
+%D \macros
+%D {installprettyescape}
+%D
+%D The next feature is dedicated to Fabrice Popineau who
+%D wanted math inside verbatim.
+
+\def\prettyescapecnt{255}
+
+\def\installprettyescape
+ {\dodoubleempty\doinstallprettyescape}
+
+\def\doinstallprettyescape[#1][#2]#3 #4%
+ {\bgroup
+ \doglobal\decrement\prettyescapecnt
+ \def\docommando##1%
+ {\def\next{\dodoinstallprettyescape{##1}{#3}{#4}}%
+ \catcode`#3=\@@active
+ \@EA\scantokens\@EA{\next}}%
+ \iffirstargument
+ \processcommalist[#1]\docommando
+ \else
+ \docommando\empty
+ \fi}
+
+\def\dodoinstallprettyescape#1#2#3%
+ {\unexpanded\setgvalue{PRETTY@#1@\prettyescapecnt}##1##2#2{#3{##2}}%
+ \expanded % we need to freeze the counter
+ {\doglobal\noexpand\appendtoks
+ \noexpand\doif{#1}\noexpand\prettyidentifier
+ {\noexpand\setpretty`\string#2=\prettyescapecnt
+ \noexpand\installprettyhandler \prettyescapecnt\space\getvalue{PRETTY@#1@\prettyescapecnt}}%
+ }\to \everysetupverbatim
+ \egroup}
+
+%D An example of its usage is:
+%D
+%D \startbuffer
+%D \def\xverbatimmath#1#2{\naturaltextext\mathematics{#1}\relax}
+%D \def\yverbatimmath#1#2{\naturaltextext\mathematics{[[#1]]}\relax}
+%D \def\zverbatimmath#1#2{\naturaltextext\mathematics{(#1)}\relax}
+%D
+%D \installprettyescape [MP] $ \xverbatimmath
+%D \installprettyescape [MP] ~ \yverbatimmath
+%D \installprettyescape [MP] * \zverbatimmath
+%D
+%D \startMP
+%D if $x>10$ :
+%D $x := 20$
+%D ~x := 20~
+%D *x := 20*
+%D end
+%D \stopMP
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-js.tex b/Master/texmf-dist/tex/context/base/verb-js.tex
new file mode 100644
index 00000000000..e8c2e6b5dc0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-js.tex
@@ -0,0 +1,171 @@
+%D \module
+%D [ file=verb-js,
+%D version=1998.02.07,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \JAVASCRIPT\ Verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty JavaScript Verbatim}
+
+%D In \CONTEXT\ we support \JAVASCRIPT\ inclusion in \PDF\
+%D documents and thereby enter the field of authoring. Of
+%D course we also want to pretty print such scripts, that look
+%D like:
+%D
+%D \startJS
+%D alfa = beta*2 ; // both alfa and beta are numbers // indeed
+%D if (odd(alfa))
+%D { do_something() }
+%D else
+%D { do_nothing() } /* As we can see /* in this example */ there
+%D how_about(alfa) ; is no fi needed. Also no semicolons are
+%D or_about(beta) ; needed after a right brace. */
+%D \stopJS
+%D
+%D Because \JAVASCRIPT\ looks much like \PERL, we will use
+%D a slightly adapted \PERL\ visualization. First we load the
+%D \PERL\ module:
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+%D The main difference between the \JAVASCRIPT\ and \PERL\
+%D interpreters concern comments. Where \TEX, \METAPOST\ and
+%D \PERL\ have one comment symbol (\type{%}, \type{%} and
+%D \type{#}), \JAVA\ has the one line comment sequence
+%D \type{//} and the multi line comment delimiters \type{/*}
+%D and \type{*/}.
+%D
+%D We need a counter to keep track of multi line comment
+%D nesting.
+
+\newcount\JScommentlevel
+
+%D We handle both \type{%} and \type{#} a bit different:
+
+\gdef\JSsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\%=41
+ \setpretty`\/=43
+ \setpretty`\*=44 }
+
+%D We also need a few more handlers: one for \type{//} and
+%D \type{/*} and one for \type{*/}.
+
+\gdef\JSsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 43 \JStypefourthree
+ \installprettyhandler 44 \JStypefourfour }
+
+%D We can inherit most of the settings:
+
+\gdef\JSsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \ifcase\JScommentlevel \inPLcommentfalse \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\JSsetvariables
+ {\PLsetvariables
+ \global\JScommentlevel=0 }
+
+\gdef\setupprettyJStype%
+ {\def\prettyidentifier{JS}%
+ \let\PLidentifiers=\JSidentifiers
+ \let\PLvariables=\JSvariables
+ \JSsetvariables
+ \JSsetcontrols
+ \JSsethandlers
+ \JSsetspecials
+ \PLsetdiagnostics}
+
+%D The main complication is that we have to look upto four
+%D characters ahead. Such macros are hard to understand but
+%D they do work!
+
+\gdef\JStypefourthree%
+ {\handlenextnextpretty\doJStypefourthree\PLtypefourtwo}
+
+\gdef\doJStypefourthree#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \let\next=\dodoJStypefourthree
+ \else\ifnum\prettytype=44
+ \global\advance\JScommentlevel by 1
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \let\next=\JStogglecomment
+ \else
+ \let\next=\PLtypefourtwo
+ \fi\fi
+ \next{#1}#2}
+
+\gdef\JStogglecomment#1#2%
+ {\ifnum\JScommentlevel=1
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \else
+ \getpretties{#1}{#2}%
+ \fi}
+
+\gdef\dodoJStypefourthree% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoJStypefourthree\dodododoPLtypefourthree}
+
+\gdef\dododoJStypefourthree%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoJStypefourthree}
+
+\gdef\dodododoJStypefourthree#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \ifnaturaltextext
+ \let\next\naturaltextext
+ \else
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\gdef\JStypefourfour%
+ {\handlenextnextpretty\doJStypefourfour\PLtypefourtwo}
+
+\gdef\doJStypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \JStogglecomment{#1}#2%
+ \global\advance\JScommentlevel by -1
+ \ifcase\JScommentlevel \global\inPLcommentfalse \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+%D We need different (less) reserved words. This list replaces
+%D the \PERL\ one.
+
+\useprettyidentifiers \JSidentifiers \JSsetspecials
+ abstract boolean break byte case catch char class const
+ continue default delete do double else extends false final
+ finally float for function goto if implements import in
+ instanceof int interface long native new null package
+ private protected public return short static super switch
+ synchronized this throw throws transient true try var void
+ while with
+
+\useprettyidentifiers \JSvariables \JSsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-jv.tex b/Master/texmf-dist/tex/context/base/verb-jv.tex
new file mode 100644
index 00000000000..d55394d2cb1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-jv.tex
@@ -0,0 +1,222 @@
+%D \module
+%D [ file=verb-jv,
+%D version=2002.02.27,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \JAVA\ Verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty Java Verbatim}
+
+%D This module differs from the \JAVASCRIPT\ driver in its
+%D handling of comments. We also need a few more handlers: one
+%D for \type {//} and \type {/*} and one for \type {*/} as
+%D well as the \JAVA doc trigger \type {/**}.
+
+%D We build this driver on top of the \PERL\ one. Since this
+%D driver looks much like the \JAVASCRIPT\ one, we don't
+%D comment it extensively.
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+\newcount\JVcommentlevel
+
+\gdef\JVsetspecials
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\%=41
+ \setpretty`\-=45
+ \setpretty`\/=43
+ \setpretty`\*=44 }
+
+\gdef\JVsethandlers
+ {\PLsethandlers
+ \installprettyhandler 43 \JVtypefourthree
+ \installprettyhandler 44 \JVtypefourfour
+ \installprettyhandler 45 \JVtypefourfive }
+
+\gdef\JVsetcontrols
+ {\PLsetcontrols
+ \def\flushrestofverbatimline
+ {\endPLtypesix
+ \ifcase\JVcommentlevel \inPLcommentfalse \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\JVsetvariables
+ {\PLsetvariables
+ \global\JVcommentlevel=0 }
+
+\gdef\setupprettyJVtype
+ {\def\prettyidentifier{JV}%
+ \let\PLidentifiers\JVidentifiers
+ \let\PLvariables\JVvariables
+ \JVsetvariables
+ \JVsetcontrols
+ \JVsethandlers
+ \JVsetspecials
+ \PLsetdiagnostics}
+
+\gdef\JVtypefourthree
+ {\handlenextnextpretty\doJVtypefourthree\PLtypefourtwo}
+
+\gdef\doJVtypefourthree#1#2#3%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \let\next\dodoJVtypefourthree
+ \else\ifnum\prettytype=44
+ \global\advance\JVcommentlevel 1
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \getprettydata{#3}%
+ \ifnum\prettytype=44
+ \inPLdoctrue
+ \fi
+ \let\next\JVtogglecomment
+ \else
+ \let\next\PLtypefourtwo
+ \fi\fi
+ \next{#1}#2#3}
+
+\gdef\JVtogglecomment#1#2%
+ {\ifnum\JVcommentlevel=1
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \else
+ \getpretties{#1}{#2}%
+ \fi}
+
+\gdef\dodoJVtypefourthree
+ {\endPLtypesix
+ \handlenextnextpretty\dododoJVtypefourthree\dodododoPLtypefourthree}
+
+\gdef\dododoJVtypefourthree
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoJVtypefourthree}
+
+\gdef\dodododoJVtypefourthree#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \ifnaturaltextext
+ \let\next\naturaltextext
+ \else
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\gdef\JVtypefourfour
+ {\ifinPLdoc
+ \@EA\noJVtypefourfour
+ \else
+ \@EA\handlenextnextpretty\@EA\doJVtypefourfour\@EA\PLtypefourtwo
+ \fi}
+
+\gdef\noJVtypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \JVtogglecomment{#1}#2%
+ \inPLdocfalse
+ \global\advance\JVcommentlevel -1
+ \ifcase\JVcommentlevel \global\inPLcommentfalse \fi
+ \else
+ \ifPLdocdone
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \PLdocdonetrue
+ \fi
+ \expandafter#2%
+ \fi}
+
+\gdef\doJVtypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \JVtogglecomment{#1}#2%
+ \inPLdocfalse
+ \global\advance\JVcommentlevel -1
+ \ifcase\JVcommentlevel \global\inPLcommentfalse \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+\gdef\JVtypefourfive % permit - in javadoc @tags
+ {\ifinPLdoc
+ \@EA\PLtypesixtwo
+ \else
+ \@EA\PLtypefourone
+ \fi}
+
+\useprettyidentifiers \JVidentifiers \JVsetspecials
+ abstract assert boolean break byte case catch char class const
+ continue default do double else extends false final
+ finally float for goto if implements import instanceof
+ int interface long native new null package private protected
+ public return short static strictfp super switch synchronized
+ this throw throws transient true try void volatile while
+
+\useprettyidentifiers \JVvariables \JVsetspecials
+ @author @docRoot @deprecated @exception @inheritDoc @link
+ @linkplain @param @return @see @serial @serialData @serialField
+ @since @throws @value @version
+
+%D The \JAVA doc feature was requested by Robert F.~Beeger,
+%D who also provided this test class:
+%D
+%D \startJV
+%D package de.jwamalpha.handling.web.rbdipl;
+%D
+%D import java.io.IOException;
+%D import java.io.PrintWriter;
+%D import javax.servlet.http.HttpServlet;
+%D import javax.servlet.http.HttpServletRequest;
+%D import javax.servlet.http.HttpServletResponse;
+%D import javax.servlet.ServletException;
+%D
+%D /**
+%D * The simple login servlet
+%D *
+%D * @author Robert F. Beeger
+%D * @version 1.0
+%D */
+%D
+%D public class LoginServlet extends HttpServlet
+%D {
+%D //
+%D // public interface
+%D //
+%D /**
+%D * Process the get-request.
+%D *
+%D * @param request the request
+%D * @param response the response.
+%D */
+%D protected void doGet (HttpServletRequest request, HttpServletResponse response)
+%D throws ServletException, IOException
+%D {
+%D response.setContentType("text/html");
+%D PrintWriter writer = response.getWriter();
+%D writer.println("<html>");
+%D writer.println(" <head>");
+%D writer.println(" <title>Login</title>");
+%D writer.println(" </head>");
+%D writer.println(" <body>");
+%D writer.println(" Hallo, Benutzer " + request.getParameter("username") + "!");
+%D writer.println(" </body>");
+%D writer.println("</html>");
+%D writer.flush();
+%D }
+%D }
+%D \stopJV
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-mp.tex b/Master/texmf-dist/tex/context/base/verb-mp.tex
new file mode 100644
index 00000000000..c7ab2071f64
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-mp.tex
@@ -0,0 +1,361 @@
+%D \module
+%D [ file=verb-mp,
+%D version=1997.12.22,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \METAPOST\ Verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty METAPOST Verbatim}
+
+% bug: in mp-char.mp the char should not be highlighted
+
+%D This module was first used when I documented our new
+%D company logo. This interpreter is modeled after the \PERL\
+%D one.
+%D
+%D \startMP
+%D beginfig(1);
+%D z1 = (0,0);
+%D z2 = (100,0);
+%D z3 = (0,100);
+%D draw z1--z2--z3--cycle;
+%D endfig;
+%D \stopMP
+%D
+%D Of course we cannot (yet) provide a nice layout, so some
+%D formatting is still needed.
+
+\unprotect
+
+%D \macros
+%D {prettyMPvariables}
+%D
+%D Identifiers and system variables are typeset in a different
+%D style. One can turn of this mechanism for the variables by
+%D setting th enext boolean.
+%D
+
+\doglobal\newif\ifprettyMPvariables
+
+\global\prettyMPvariablestrue
+
+%D We support \METAFONT\ as well as \METAPOST.
+
+\gdef\MPsetcontrols%
+ {\saveprettycontrols
+ \everyprettyend
+ {\endMPtypesix}%
+ \def\obeyedspace%
+ {\endMPtypesix
+ \oldobeyedspace}%
+ \def\flushrestofverbatimline%
+ {\endMPtypesix}%
+ \let\obeytabs=\ignoretabs}
+
+\gdef\setupprettyMPtype%
+ {\def\prettyidentifier{MP}%
+ \MPsetvariables
+ \MPsetcontrols
+ \MPsethandlers
+ \MPsetspecials}
+
+\doglobal\newif\ifinMPtexmode
+
+\gdef\MPsetvariables%
+ {\global\inMPtexmodefalse
+ \global\let\MPsequence=\empty}
+
+\gdef\MPsetspecials%
+ {\setpretty`\;=11 \setpretty`\$=12 \setpretty`\@=12 \setpretty`\#=12
+ \setpretty`\%=20
+ \setpretty`\[=31 \setpretty`\]=31 \setpretty`\(=32 \setpretty`\)=32
+ \setpretty`\:=33 \setpretty`\==34 \setpretty`\<=34 \setpretty`\>=34
+ \setpretty`\-=41 \setpretty`\+=41 \setpretty`\/=41 \setpretty`\*=41
+ \setpretty`\|=41 \setpretty`\`=41 \setpretty`\!=41 \setpretty`\?=41
+ \setpretty`\^=41 \setpretty`\&=42
+ \setpretty`\\=50
+ \setpretty`\1=61 \setpretty`\2=61 \setpretty`\3=61 \setpretty`\4=61
+ \setpretty`\5=61 \setpretty`\6=61 \setpretty`\7=61 \setpretty`\8=61
+ \setpretty`\9=61 \setpretty`\0=61
+ \setpretty`\A=62 \setpretty`\B=62 \setpretty`\C=62 \setpretty`\D=62 \setpretty`\E=62
+ \setpretty`\F=62 \setpretty`\G=62 \setpretty`\H=62 \setpretty`\I=62 \setpretty`\J=62
+ \setpretty`\K=62 \setpretty`\L=62 \setpretty`\M=62 \setpretty`\N=62 \setpretty`\O=62
+ \setpretty`\P=62 \setpretty`\Q=62 \setpretty`\R=62 \setpretty`\S=62 \setpretty`\T=62
+ \setpretty`\U=62 \setpretty`\V=62 \setpretty`\W=62 \setpretty`\X=62 \setpretty`\Y=62
+ \setpretty`\Z=62
+ \setpretty`\a=62 \setpretty`\b=62 \setpretty`\c=62 \setpretty`\d=62 \setpretty`\e=62
+ \setpretty`\f=62 \setpretty`\g=62 \setpretty`\h=62 \setpretty`\i=62 \setpretty`\j=62
+ \setpretty`\k=62 \setpretty`\l=62 \setpretty`\m=62 \setpretty`\n=62 \setpretty`\o=62
+ \setpretty`\p=62 \setpretty`\q=62 \setpretty`\r=62 \setpretty`\s=62 \setpretty`\t=62
+ \setpretty`\u=62 \setpretty`\v=62 \setpretty`\w=62 \setpretty`\x=62 \setpretty`\y=62
+ \setpretty`\z=62
+ \setpretty`\_=62
+ \setpretty`\,=70 \setpretty`\.=70
+ \setpretty`\'=81 \setpretty`\"=82
+ \setpretty`\{=90 \setpretty`\}=90 }
+
+\gdef\MPsethandlers%
+ {\installprettyhandler 11 \MPtypeone
+ \installprettyhandler 12 \MPtypeone
+ \installprettyhandler 20 \MPtypetwo
+ \installprettyhandler 31 \MPtypethreeA
+ \installprettyhandler 32 \MPtypethreeA
+ \installprettyhandler 33 \MPtypethreeB
+ \installprettyhandler 34 \MPtypethreeB
+ \installprettyhandler 41 \MPtypefour
+ \installprettyhandler 42 \MPtypefour
+ \installprettyhandler 50 \MPtypefive
+ \installprettyhandler 61 \MPtypesixone
+ \installprettyhandler 62 \MPtypesixtwo
+ \installprettyhandler 70 \MPtypeseven
+ \installprettyhandler 81 \MPtypeeightone
+ \installprettyhandler 82 \MPtypeeighttwo
+ \installprettyhandler 90 \MPtypenine }
+
+\gdef\MPtypeone#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty%
+ \fi}
+
+\gdef\doMPtypetwo#1%
+ {\ifnaturaltextext
+ \let\next\naturaltextext
+ \else
+ \disableprettytrue\disableprettyafterwards
+ \def\next{\beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty}%
+ \fi
+ \next}
+
+\gdef\MPtypetwo%
+ {\endMPtypesix
+ \ifnewpretty\expandafter\handlenewpretty\fi\doMPtypetwo}
+
+\gdef\MPtypethreeA#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypethreeB#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypefour#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypefive#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\endMPtypesix%
+ {\ifx\MPsequence\empty\else
+ \doifprettyidentifierelse{\MPsequence}{\MPidentifiers}
+ {\doifprettyidentifierelse{\MPsequence}{\MPbtex}
+ {\beginofpretty[\!!prettytwo]%
+ {\prettyidentifierfont\MPsequence}%
+ \endofpretty
+ \global\inMPtexmodetrue}
+ {\ifinMPtexmode
+ \doifprettyidentifierelse{\MPsequence}{\MPetex}
+ {\global\inMPtexmodefalse}{}%
+ \fi
+ \beginofpretty[\!!prettytwo]%
+ {\prettyidentifierfont\MPsequence}%
+ \endofpretty}}
+ {\ifprettyMPvariables
+ \doifprettyidentifierelse{\MPsequence}{\MPvariables}
+ {\beginofpretty[\!!prettytwo]%
+ {\prettyvariablefont\MPsequence}%
+ \endofpretty}
+ {\MPsequence}%
+ \else
+ \MPsequence
+ \fi}%
+ \global\let\MPsequence=\empty
+ \fi}
+
+\gdef\MPtypesixone%
+ {\endMPtypesix
+ \getpretty}
+
+\gdef\MPtypesixtwo#1%
+ {\xdef\MPsequence{\MPsequence\getpretty{#1}}}
+
+\gdef\MPtypeseven#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypeeightone#1%
+ {\endMPtypesix
+ \ifinMPtexmode%
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypeeighttwo#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\MPtypenine#1%
+ {\endMPtypesix
+ \ifinMPtexmode
+ \getpretty{#1}%
+ \else
+ \getpretty{#1}%
+ \fi}
+
+%D \METAPOST\ \TEX||ies:
+
+\useprettyidentifiers \MPbtex \MPsetspecials
+ btex verbatimtex
+
+\useprettyidentifiers \MPetex \MPsetspecials
+ etex
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ btex etex verbatimtex
+
+%D \METAPOST\ internal variables \& predefined variables:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ charcode day linecap linejoin miterlimit month pausing
+ prologues showstopping time tracingcapsules tracingchoices
+ tracingcommands tracingequations tracinglostchars
+ tracingmacros tracingonline tracingoutput tracingrestores
+ tracingspecs tracingstats tracingtitles truecorners
+ warningcheck year
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ ahangle ahlength bboxmargin defaultpen defaultscale
+ labeloffset background currentpen currentpicture cuttings
+ defaultfont extra_beginfig extra_endfig
+
+%D \METAPOST\ predefined constants:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ false nullpicture pencircle true
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ beveled black blue bp butt cc cm dd ditto down epsilon
+ evenly fullcircle green halfcircle identity in infinity left
+ mitered mm origin pensquare pt quartercircle red right
+ rounded squared unitsquare up white withdots
+
+%D \METAPOST\ operators:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ and angle arclength arctime ASCII bluepart boolean bot
+ char color cosd cycle decimal directiontime floor fontsize
+ greenpart hex infont intersectiontimes known length llcorner
+ lrcorner makepath makepen mexp mlog normaldeviate not
+ numeric oct odd or path pair pen penoffset picture point
+ postcontrol precontrol redpart reverse rotated scaled
+ shifted sind slanted sqrt str string subpath substring
+ transform transformed ulcorner uniformdeviate unknown
+ urcorner xpart xscaled xxpart xypart ypart yscaled yxpart
+ yypart zscaled
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ abs bbox ceiling center cutafter cutbefore dir
+ directionpoint div dotprod intersectionpoint inverse mod lft
+ round rt unitvector whatever
+
+%D \METAPOST\ commands:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ addto clip input interim let newinternal save setbounds
+ shipout show showdependencies showtoken showvariable
+ special
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ cutdraw draw drawarrow drawdblarrow fill filldraw
+ loggingall pickup tracingall tracingnone undraw unfill
+ unfilldraw drawdot
+
+%D \METAPOST\ macro||like functions:
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ buildcycle dashpattern decr dotlabel dotlabels drawoptions
+ incr label labels max min thelabel z
+
+%D More \METAPOST:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ begingroup endgroup of curl tension and controls
+ reflectedabout rotatedaround interpath on off beginfig
+ endfig def vardef enddef epxr suffix text primary secondary
+ tertiary primarydef secondarydef tertiarydef top bottom
+ ulft urt llft lrt randomseed also contour doublepath
+ withcolor withpen dashed if else elseif fi for endfor
+ forsuffixes forever downto upto step until end
+
+%D \METAFONT\ stuff:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ charlist extensible fontdimen headerbyte kern ligtable
+ boundarychar chardp charext charht charic charwd designsize
+ fontmaking charexists
+
+\useprettyidentifiers \MPvariables \MPsetspecials
+ beginchar blacker capsule_end change_width
+ define_blacker_pixels define_corrected_pixels
+ define_good_x_pixels define_good_y_pixels
+ define_horizontal_corrected_pixels define_pixels
+ define_whole_blacker_pixels define_whole_pixels
+ define_whole_vertical_blacker_pixels
+ define_whole_vertical_pixels endchar extra_beginchar
+ extra_endchar extra_setup font_coding_scheme
+ font_extra_space
+
+%D \METAFONT\ no||op stuff:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ cullit currenttransform gfcorners grayfont hround
+ imagerules lowres_fix nodisplays notransforms openit
+ displaying currentwindow screen_rows screen_cols
+ pixels_per_inch cull display openwindow numspecial
+ totalweight autorounding fillin proofing tracingpens
+ xoffset chardx granularity smoothing turningcheck yoffset
+ chardy hppp tracingedges vppp
+
+%D \METAPOST\ goodies:
+
+\useprettyidentifiers \MPidentifiers \MPsetspecials
+ extra_beginfig extra_endfig mpxbreak
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-pas.tex b/Master/texmf-dist/tex/context/base/verb-pas.tex
new file mode 100644
index 00000000000..b7b04170039
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-pas.tex
@@ -0,0 +1,266 @@
+%D \module
+%D [ file=verb-pas,
+%D version=1999.12.09,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \PASCAL\ and \MODULA\ Verbatim,
+%D author=Berend de Boer,
+%D date=\currentdate,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty PASCAL Verbatim}
+
+%D Typeset Pascal(-like) code:
+%D
+%D \startbuffer
+%D \startPAS
+%D program Hello;
+%D
+%D begin
+%D writeln('hello world.');
+%D end.
+%D \stopPAS
+%D \stopbuffer
+%D
+%D Berend's preferences:
+%D
+%D \startbuffer[setup]
+%D \setuptyping
+%D [DELPHI]
+%D [palet=,icommand=\bf,vcommand=,ccommand=\it]
+%D \stopbuffer
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+\doglobal\newif\ifinPASbracketcomment
+\doglobal\newif\ifinPASslashstarcomment
+\doglobal\newif\ifinPASslashslashcomment
+
+
+\gdef\PASsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\%=41
+ \setpretty`\:=41
+ \setpretty`\/=43
+ \setpretty`\*=44
+ \setpretty`\{=45 \setpretty`\}=46 }
+
+\gdef\PASsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 43 \PAStypefourthree
+ \installprettyhandler 44 \PAStypefourfour
+ \installprettyhandler 45 \PAStypefourfive
+ \installprettyhandler 46 \PAStypefoursix }
+
+\gdef\PASsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \ifinPASslashslashcomment
+ \PASstopslashslashcomment
+ \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\PASsetvariables
+ {\PLsetvariables
+ \global\inPASbracketcommentfalse
+ \global\inPASslashstarcommentfalse
+ \global\inPASslashslashcommentfalse}
+
+\gdef\setupprettyPAStype%
+ {\def\prettyidentifier{PAS}%
+ \let\PLidentifiers=\PASidentifiers
+ \let\PLvariables=\PASvariables
+ \PASsetvariables
+ \PASsetcontrols
+ \PASsethandlers
+ \PASsetspecials
+ \PLsetdiagnostics}
+
+
+% the // and /* comments
+
+\gdef\PAStypefourthree%
+ {\handlenextnextpretty\doPAStypefourthree\PLtypefourtwo}
+
+\gdef\doPAStypefourthree#1#2%
+ {\ifinPLcomment
+ \let\next=\PLtypefourtwo
+ \else
+ \ifinPLsingle
+ \let\next=\PLtypefourtwo
+ \else
+ \getprettydata{#2}%
+ \ifnum\prettytype=43
+ \PLverbosecorrection
+ \let\next=\PASstartslashslashcomment
+ \else\ifnum\prettytype=44
+ \PLverbosecorrection
+ \let\next=\PASstartslashstarcomment
+ \else
+ \let\next=\PLtypefourtwo
+ \fi\fi
+ \fi
+ \fi
+ \next{#1}#2}
+
+\gdef\PASstartslashstarcomment#1#2%
+ {\global\inPLcommenttrue
+ \global\inPASslashstarcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}
+
+\gdef\PASstopslashstarcomment#1#2%
+ {\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \verbatimfont
+ \global\inPLcommentfalse
+ \global\inPASslashstarcommentfalse}
+
+\gdef\PASstartslashslashcomment#1#2%
+ {\global\inPLcommenttrue
+ \global\inPASslashslashcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}
+
+\gdef\PASstopslashslashcomment%
+ {\verbatimfont
+ \inPLcommentfalse
+ \inPASslashslashcommentfalse}
+
+% \gdef\dodoPAStypefourthree% #1%
+% {\endPLtypesix
+% \handlenextnextpretty\dododoPAStypefourthree\dodododoPLtypefourthree}
+
+% \gdef\dododoPAStypefourthree%
+% {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoPAStypefourthree}
+
+% \gdef\dodododoPAStypefourthree#1#2%
+% {\ifinPLcomment
+% \getpretties{#1}{#2}%
+% \else
+% \global\inPLcommenttrue
+% \PLverbosecorrection
+% \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+% \fi}
+
+\gdef\PAStypefourfour%
+ {\handlenextnextpretty\doPAStypefourfour\PLtypefourtwo}
+
+\gdef\doPAStypefourfour#1#2%
+ {\ifinPASslashstarcomment
+ \getprettydata{#2}%
+ \ifnum\prettytype=43
+ \PASstopslashstarcomment{#1}#2%
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+
+% the { and } comments
+% we assume { is closed by } and do not follow the braindead Standard
+% Pascal standard in this respect
+% Note: brackets are not output correctly if natural font is \tf.
+% Therefore natural font is default to \tttf now (Hans is this ok??)
+% You have to use postscript fonts it seems to get brackets in that case.
+
+\gdef\PAStypefourfive#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else
+ \ifinPLsingle
+ \getpretty{#1}%
+ \else
+ \global\inPLcommenttrue
+ \global\inPASbracketcommenttrue
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi
+ \fi}
+
+\gdef\PAStypefoursix#1%
+ {\endPLtypesix
+ \ifinPASbracketcomment
+ \prettynaturalfont\beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \verbatimfont
+ \global\inPLcommentfalse
+ \global\inPASbracketcommentfalse
+ \else
+ \getpretty{#1}%
+ \fi}
+
+
+% Standard Pascal keywords (ISO/IEC 7185)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ and array begin case const div do downto else end file
+ for function goto if in label mod nil not of or packed
+ procedure program record repeat set then to type until
+ var while with
+
+% Standard Pascal directives (ISO/IEC 7185)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ forward
+
+% Extended Pascal keywords (ISO/IEC 10206)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ and_then bindable export import module only or_else
+ otherwise pow protected qualified restricted
+
+% Extended Pascal directives (ISO/IEC 10206)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ implementation interface
+
+% Object Pascal keywords (draft September 20, 1993)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ abstract class constructor destructor inherited is
+ property view
+
+% Object Pascal directives (draft September 20, 1993)
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ override
+
+% Delphi keywords
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ as asm dispinterface except exports finalization finally
+ initialization inline library object out raise resourcestring
+ shl shr string threadvar try unit uses xor
+
+% Delphi directives
+% the read and write directive have been skipped
+% as they're pretty common procedure calls too
+
+\useprettyidentifiers \PASidentifiers \PASsetspecials
+ absolute assembler automated cdecl contains default dispid
+ dynamic external far implements index message name near
+ nodefault overload override package pascal private protected
+ public published readonly register reintroduce requires
+ resident safecall stdcall stored virtual writeonly
+
+\useprettyidentifiers \PASvariables \PASsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-pl.tex b/Master/texmf-dist/tex/context/base/verb-pl.tex
new file mode 100644
index 00000000000..cbe82d49fd8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-pl.tex
@@ -0,0 +1,547 @@
+%D \module
+%D [ file=verb-pl,
+%D version=1997.12.22,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \PERL\ Verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty PERL Verbatim}
+
+%D When I rewrote \TEXUTIL\ in \PERL\ I decided to write a
+%D pretty \PERL\ interpreter too. In fact, this was the main
+%D reason for rewriting the pretty verbatim mechanisms to
+%D handle more that \TEX.
+%D
+%D \startPL
+%D $alfa = $beta{gamma};
+%D if ($alfa="delta")
+%D { print "epsilon" }
+%D \stopPL
+%D
+%D When looking at the macros, watch the \type{\doglobal}'s!
+%D They're something \CONTEXT\ specific.
+
+\unprotect
+
+%D \macros
+%D {prettyPLvariables}
+%D
+%D Identifiers and system variables get a special treatment.
+%D One can disable this option for the variables by resetting
+%D the next switch.
+
+\doglobal\newif\ifprettyPLvariables
+
+\global\prettyPLvariablestrue
+
+%D As said before, the global assignment is needed in
+%D \CONTEXT\ (for once||only loading on demand).
+
+\doglobal\newif\ifinPLsingle
+\doglobal\newif\ifinPLdouble
+\doglobal\newif\ifinPLcomment
+\doglobal\newif\ifinPLdoc % only used in java filter
+\doglobal\newif\ifPLdocdone % only used in java filter
+\doglobal\newif\ifPLverbose
+
+\newcount\PLverboseskipped
+
+\gdef\PLverbosecorrection%
+ {\ifnum\PLverboseskipped>0
+ \obeyedspace
+ \advance\PLverboseskipped -1
+ \@EA\PLverbosecorrection
+ \fi}
+
+\gdef\PLsetcontrols%
+ {\saveprettycontrols
+ \def\obeyedspace%
+ {\endPLtypesix
+ \ifPLverbose
+ \advance\PLverboseskipped 1
+ \else
+ \oldobeyedspace
+ \fi}%
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \global\inPLcommentfalse}%
+ \def\obeyedline%
+ {\PLverbosefalse
+ \PLverboseskipped=0
+ \PLdocdonefalse
+ \oldobeyedline}%
+ \let\obeytabs=\ignoretabs}
+
+\gdef\JVsetcontrols%
+ {\PLsetcontrols
+ {\endPLtypesix
+ \ifcase\JVcommentlevel \inPLcommentfalse \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\setupprettyPLtype%
+ {\def\prettyidentifier{PL}%
+ \PLsetvariables
+ \PLsetcontrols
+ \PLsethandlers
+ \PLsetspecials
+ \PLsetdiagnostics}
+
+\gdef\PLsetvariables%
+ {\global\inPLsinglefalse
+ \global\inPLdoublefalse
+ \global\inPLcommentfalse
+ \global\let\PLsequence=\empty
+ \global\let\PLprefix=\empty}
+
+\gdef\PLsetspecials%
+ {\setpretty`\{=10 \setpretty`\}=10
+ \setpretty`\$=21 \setpretty`\@=21 \setpretty`\%=22
+ \setpretty`\[=31 \setpretty`\]=31 \setpretty`\(=32 \setpretty`\)=32
+ \setpretty`\==32 \setpretty`\~=32 \setpretty`\<=32 \setpretty`\>=32
+ \setpretty`\-=41 \setpretty`\+=41 \setpretty`\/=41 \setpretty`\*=41
+ \setpretty`\|=41 \setpretty`\`=41 \setpretty`\!=41 \setpretty`\?=41
+ \setpretty`\^=41 \setpretty`\&=42
+ \setpretty`\\=50
+ \setpretty`\1=61 \setpretty`\2=61 \setpretty`\3=61 \setpretty`\4=61
+ \setpretty`\5=61 \setpretty`\6=61 \setpretty`\7=61 \setpretty`\8=61
+ \setpretty`\9=61 \setpretty`\0=61 \setpretty`\_=61
+ \setpretty`\A=62 \setpretty`\B=62 \setpretty`\C=62 \setpretty`\D=62 \setpretty`\E=62
+ \setpretty`\F=62 \setpretty`\G=62 \setpretty`\H=62 \setpretty`\I=62 \setpretty`\J=62
+ \setpretty`\K=62 \setpretty`\L=62 \setpretty`\M=62 \setpretty`\N=62 \setpretty`\O=62
+ \setpretty`\P=62 \setpretty`\Q=62 \setpretty`\R=62 \setpretty`\S=62 \setpretty`\T=62
+ \setpretty`\U=62 \setpretty`\V=62 \setpretty`\W=62 \setpretty`\X=62 \setpretty`\Y=62
+ \setpretty`\Z=62
+ \setpretty`\a=62 \setpretty`\b=62 \setpretty`\c=62 \setpretty`\d=62 \setpretty`\e=62
+ \setpretty`\f=62 \setpretty`\g=62 \setpretty`\h=62 \setpretty`\i=62 \setpretty`\j=62
+ \setpretty`\k=62 \setpretty`\l=62 \setpretty`\m=62 \setpretty`\n=62 \setpretty`\o=62
+ \setpretty`\p=62 \setpretty`\q=62 \setpretty`\r=62 \setpretty`\s=62 \setpretty`\t=62
+ \setpretty`\u=62 \setpretty`\v=62 \setpretty`\w=62 \setpretty`\x=62 \setpretty`\y=62
+ \setpretty`\z=62
+ \setpretty`\;=71 \setpretty`\:=72 \setpretty`\,=71 \setpretty`\.=71
+ \setpretty`\'=80
+ \setpretty`\"=90
+ \setpretty`\#= 0 }
+
+\gdef\PLsethandlers%
+ {\installprettyhandler 10 \PLtypeone
+ \installprettyhandler 21 \PLtypetwo
+ \installprettyhandler 22 \PLtypetwo
+ \installprettyhandler 31 \PLtypethree
+ \installprettyhandler 32 \PLtypethree
+ \installprettyhandler 41 \PLtypefourone
+ \installprettyhandler 42 \PLtypefourtwo
+ \installprettyhandler 50 \PLtypefive
+ \installprettyhandler 61 \PLtypesixone
+ \installprettyhandler 62 \PLtypesixtwo
+ \installprettyhandler 71 \PLtypesevenone
+ \installprettyhandler 72 \PLtypeseventwo
+ \installprettyhandler 80 \PLtypeeight
+ \installprettyhandler 90 \PLtypenine
+ \installprettyhandler 0 \PLtypezero}
+
+\gdef\PLtypeone#1%
+ {\ifinPLdouble
+ \PLverbosefalse
+ \ifinPLcomment
+ \endPLtypesix
+ \getpretty{#1}%
+ \else\ifx\PLprefix\empty
+ \endPLtypesix
+ \getpretty{#1}%
+ \else
+ \endPLtypesix
+ \xdef\PLprefix{\getpretty{#1}}%
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi\fi
+ \else
+ \endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi\fi
+ \fi}
+
+% \gdef\PLtypetwo#1%
+% {\endPLtypesix
+% \xdef\PLprefix{\getpretty{#1}}%
+% \ifinPLcomment
+% \getpretty{#1}%
+% \else\ifinPLsingle
+% \getpretty{#1}%
+% \else\ifinPLdouble
+% \getprettydata{#1}%
+% \ifnum\prettytype=21
+% \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+% \else
+% \getpretty{#1}%
+% \fi
+% \else
+% \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+% \fi\fi\fi}
+
+\gdef\PLtypetwo#1%
+ {\endPLtypesix
+ \ifinPLdoc
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \else\ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \getprettydata{#1}%
+ \ifnum\prettytype=21
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \else
+ \getpretty{#1}%
+ \fi
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \fi\fi\fi\fi}
+
+\gdef\PLtypethree#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \getprettydata{#1}%
+ \ifnum\prettytype=31
+ \ifx\PLprefix\empty
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \else
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi\fi\fi}
+
+\gdef\PLtypefourone#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \fi\fi\fi}
+
+\gdef\doPLtypefourtwo#1#2%
+ {\PLverbosefalse
+ \getprettydata{#2}%
+ \ifnum\prettytype=62
+ \expandafter\PLtypetwo
+ \else
+ \expandafter\PLtypefourone
+ \fi
+ {#1}#2}
+
+\gdef\PLtypefourtwo%
+ {\handlenextnextpretty\doPLtypefourtwo\PLtypefourone}
+
+\gdef\doPLtypefiveA#1#2%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else\ifinPLsingle
+ \getprettydata{#2}%
+ \ifnum\prettytype=50
+ \beginofpretty[\!!prettytwo]\getpretties{#1}{#2}\endofpretty
+ \else\ifnum\prettytype=80
+ \beginofpretty[\!!prettytwo]\getpretties{#1}{#2}\endofpretty
+ \else
+ \getpretties{#1}{#2}%
+ \fi\fi
+ \else
+ \beginofpretty[\!!prettytwo]\getpretties{#1}{#2}\endofpretty
+ \fi\fi}
+
+\gdef\doPLtypefiveB#1%
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \fi\fi}
+
+\gdef\PLtypefive%
+ {\ifPLverbose
+ \expandafter\PLtypesixtwo
+ \else
+ \expandafter\handlenextnextpretty\expandafter\doPLtypefiveA\expandafter\doPLtypefiveB
+ \fi}
+
+% \gdef\endPLtypesix%
+% {\ifx\PLsequence\empty\else
+% \ifinPLcomment
+% \PLsequence
+% \else\ifinPLsingle
+% \PLsequence
+% \else\ifinPLdouble
+% \PLsequence
+% \else\ifPLverbose
+% \beginofpretty[\!!prettytwo]\PLsequence\endofpretty
+% \PLverbosefalse
+% \else\ifx\PLprefix\empty
+% \doifprettyidentifierelse{\PLsequence}{\PLverboses}
+% {\PLverbosetrue\PLverboseskipped=3 }
+% {\doifprettyidentifierelse{\PLsequence}{\PLidentifiers}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyidentifierfont\PLsequence}%
+% \endofpretty}
+% {\ifprettyPLvariables
+% \doifprettyidentifierelse{\PLsequence}{\PLvariables}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyvariablefont\PLsequence}%
+% \endofpretty}
+% {\PLsequence}%
+% \else
+% \PLsequence
+% \fi}}%
+% \else\ifprettyPLvariables
+% \doifprettyidentifierelse{\PLprefix\PLsequence}{\PLvariables}
+% {\beginofpretty[\!!prettytwo]%
+% {\prettyvariablefont\PLsequence}%
+% \endofpretty}
+% {\PLsequence}%
+% \else
+% \PLsequence
+% \fi\fi\fi\fi\fi\fi
+% \global\let\PLsequence=\empty
+% \global\let\PLprefix=\empty
+% \fi}
+
+\gdef\endPLtypesix
+ {\ifx\PLsequence\empty\else
+ \ifinPLdoc
+ \doendPLtypesixvar\!!prettythree
+ \else\ifinPLcomment
+ \PLsequence
+ \else\ifinPLsingle
+ \PLsequence
+ \else\ifinPLdouble
+ \PLsequence
+ \else\ifPLverbose
+ \beginofpretty[\!!prettytwo]\PLsequence\endofpretty
+ \PLverbosefalse
+ \else\ifx\PLprefix\empty
+ \doendPLtypesix\!!prettytwo
+ \else\ifprettyPLvariables
+ \doendPLtypesixvar\!!prettytwo
+ \else
+ \PLsequence
+ \fi\fi\fi\fi\fi\fi\fi
+ \global\let\PLsequence\empty
+ \global\let\PLprefix\empty
+ \fi}
+
+\gdef\doendPLtypesix#1%
+ {\doifprettyidentifierelse{\PLsequence}{\PLverboses}
+ {\PLverbosetrue\PLverboseskipped=3 }
+ {\doifprettyidentifierelse{\PLsequence}{\PLidentifiers}
+ {\beginofpretty[#1]%
+ {\prettyidentifierfont\PLsequence}%
+ \endofpretty}
+ {\ifprettyPLvariables
+ \doifprettyidentifierelse{\PLsequence}{\PLvariables}
+ {\beginofpretty[#1]%
+ {\prettyvariablefont\PLsequence}%
+ \endofpretty}
+ {\PLsequence}%
+ \else
+ \PLsequence
+ \fi}}}
+
+\gdef\doendPLtypesixvar#1%
+ {\doifprettyidentifierelse{\PLprefix\PLsequence}{\PLvariables}
+ {\beginofpretty[#1]%
+ {\prettyvariablefont\PLsequence}%
+ \endofpretty}
+ {\PLsequence}}
+
+\gdef\PLtypesixone
+ {\ifx\PLsequence\empty
+ \expandafter\getpretty
+ \else
+ \expandafter\PLtypesixtwo
+ \fi}
+
+% \gdef\PLtypesixtwo#1%
+% {\ifinPLcomment
+% \getpretty{#1}%
+% \else\ifinPLsingle
+% \getpretty{#1}%
+% \else\ifinPLdouble
+% \ifx\PLprefix\empty
+% \getpretty{#1}%
+% \else
+% \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+% \fi
+% \else
+% \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+% \fi\fi\fi}
+
+\gdef\PLtypesixtwo#1%
+ {\ifinPLdoc
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \else\ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \ifx\PLprefix\empty
+ \getpretty{#1}%
+ \else
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \fi
+ \else
+ \xdef\PLsequence{\PLsequence\getpretty{#1}}%
+ \fi\fi\fi\fi}
+
+\gdef\PLtypesevenone#1%
+ {\endPLtypesix
+ \getpretty{#1}}
+
+\gdef\PLtypeseventwo%
+ {\handlenextnextpretty\doPLtypeseventwo\PLtypesevenone}
+
+\gdef\doPLtypeseventwo#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=72
+ \PLtypesixtwo{#1}\PLtypesixtwo{#1}%
+ \else
+ \PLtypesevenone{#1}\expandafter#2%
+ \fi}
+
+\gdef\PLtypeeight#1% single quote
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \global\inPLsinglefalse
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \else
+ \global\inPLsingletrue
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \fi\fi\fi}
+
+\gdef\PLtypenine#1% double quote
+ {\endPLtypesix
+ \ifinPLcomment
+ \getpretty{#1}%
+ \else\ifinPLsingle
+ \getpretty{#1}%
+ \else\ifinPLdouble
+ \global\inPLdoublefalse
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \else
+ \global\inPLdoubletrue
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi\fi\fi}
+
+\gdef\PLtypezero%
+ {\endPLtypesix
+ \ifnewpretty\expandafter\handlenewpretty\fi\doPLtypezero}
+
+\gdef\doPLtypezero#1%
+ {\ifinPLcomment
+ \getpretty{#1}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \ifnaturaltextext % non tested yet
+ \let\next\naturaltextext
+ \else
+ \def\next{\beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty}%
+ \fi
+ \expandafter\next
+ \fi}
+
+\gdef\doreportprettyPLtype#1#2#3#4%
+ {#1%
+ [PERL \string#2 typing conflict, use \string#3 instead]
+ \writestatus
+ {PERL typing}
+ {use \string#3 instead of \string#2 to enable propper visualization}%
+ \global#4%
+ \expandafter\doemptyverbatimline
+ \fi}
+
+\gdef\reportprettyPLtype%
+ {\doreportprettyPLtype\ifinPLsingle'\'\inPLsinglefalse
+ \doreportprettyPLtype\ifinPLdouble"\"\inPLdoublefalse}
+
+\gdef\PLsetdiagnostics%
+ {\let\normaldoemptyverbatimline=\doemptyverbatimline
+ \def\doemptyverbatimline%
+ {\normaldoemptyverbatimline
+ \reportprettyPLtype}}
+
+%D The official \PERL\ version 5 keywords:
+
+\useprettyidentifiers \PLidentifiers \PLsetspecials
+ abs accept alarm and atan atan2 bind binmode bless caller
+ chdir chmod chomp chop chown chr chroot close closedir cmp
+ connect continue cos crypt dbmclose dbmopen defined delete
+ die do dump each echo else elsif endgrent endhostent
+ endnetent endprotoend endpwent endservent eof eq eval exec
+ exists exit exp fcntl fileno flock for foreach fork format
+ formline getc getgrent getgrgid getgrnam gethostbyaddr
+ gethostbyname gethostent getlogin getnetbyaddr getnetbyname
+ getnetent getpeername getpgrp getppid getpriority
+ getprotobyname getprotobynumber getprotoent getpwent
+ getpwnam getpwuid getservbyname getservbyport getservent
+ getsockname getsockopt glob gmtime goto grep gt hex if
+ import index int integer ioctl join keys kill last lc
+ lcfirst le length lib link listen local localtime log lstat
+ lt map method mkdir msgctl msgget msgrcv msgsnd my ne next
+ no not oct open opendir or ord pack package pipe pop pos
+ print printf process prompt push quotemeta rand read readdir
+ readlink recv redo ref rename require reset return reverse
+ rewinddir rindex rmdir scalar seek seekdir select semctl
+ semget semop send setgrent sethostent setnetent setpgrp
+ setpriority setprotoent setpwent setservent setsockopt shift
+ shmctl shmget shmread shmwrite shutdown sin sleep socket
+ socketpair sort splice split sprintf sqrt srand stat strict
+ study sub subs substr symlink syscall sysopen sysread system
+ syswrite tell telldir tie tied time times times truncate uc
+ ucfirst ucmask umask unary undef unless unlink unpack
+ unshift untie until use utime values vars vec wait waitpid
+ wantarray warn warn while write xor
+
+%D Additional module keywords (still incomplete):
+
+\useprettyidentifiers \PLvariables \PLsetspecials
+ Getopt::Long
+ $Getopt::Long::passthrough
+ $Getopt::Long::autoabbrev
+ &GetOptions
+
+%D A funny hack. When prefixes by \type{TEX}, a \type{\csname}
+%D is typeset as \TEX\ sequence.
+
+\useprettyidentifiers \PLverboses \PLsetspecials
+ TEX
+
+\protect
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-raw.tex b/Master/texmf-dist/tex/context/base/verb-raw.tex
new file mode 100644
index 00000000000..32903db7736
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-raw.tex
@@ -0,0 +1,7 @@
+\ifx\undefined\setupprettyTEXtype \input verb-tex \relax \fi
+
+\gdef\setupprettyRAWtype%
+ {\setupprettyTEXtype
+ \def\prettyidentifier{RAW}}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-sql.tex b/Master/texmf-dist/tex/context/base/verb-sql.tex
new file mode 100644
index 00000000000..555ba304b3b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-sql.tex
@@ -0,0 +1,230 @@
+%D \module
+%D [ file=verb-sql,
+%D version=2000.05.09,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \SQL\ Verbatim,
+%D author={Berend de Boer \& Hans Hagen},
+%D date=\currentdate,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty SQL Verbatim}
+
+%D \quotation {He, I want pretty pretting too!}, Berend cried out
+%D one day, \quotation {But now for \SQL.}. This query language
+%D shows code like:
+%D
+%D \startbuffer
+%D \startSQL
+%D select * -- some comment
+%D from tableA
+%D where 1 = 2
+%D \stopSQL
+%D \stopbuffer
+%D
+%D \typebuffer
+%D
+%D and this should become something pretty like:
+%D
+%D \getbuffer
+%D
+%D or, with Berend's preferences:
+%D
+%D \startbuffer[setup]
+%D \setuptyping
+%D [SQL]
+%D [text=yes,palet=,icommand=\bf,vcommand=,ccommand=\it]
+%D \stopbuffer
+%D
+%D \getbuffer[setup]
+%D \getbuffer
+%D
+%D This kind of pretty printing is accomplished by:
+%D
+%D \typebuffer
+
+%D Like we did with the \JAVASCRIPT\ driver, we will borrow
+%D most of the macros from the \PERL\ driver.
+
+\ifx\undefined\setupprettyPLtype \input verb-pl \relax \fi
+
+\unprotect
+
+%D \SQL\ has the one line comment sequence \type{--} and the
+%D multi line comment delimiters \type{/*} and \type{*/}. The
+%D next counter keeps track of multi line comment nesting.
+
+\newcount\SQLcommentlevel
+
+%D We need to handle \type{%}, \type{#} and \type{-} a bit
+%D different than in the \PERL\ driver. Compared to the
+%D \JAVASCRIPT\ driver |<|we copied most of the code from
+%D that one|>|, we now also have type~45.
+
+\gdef\SQLsetspecials%
+ {\PLsetspecials
+ \setpretty`\#=32
+ \setpretty`\:=41
+ \setpretty`\%=41
+ \setpretty`\/=43
+ \setpretty`\*=44
+ \setpretty`\-=45 }
+
+%D We need three additional handlers:
+
+\gdef\SQLsethandlers%
+ {\PLsethandlers
+ \installprettyhandler 43 \SQLtypefourthree
+ \installprettyhandler 44 \SQLtypefourfour
+ \installprettyhandler 45 \SQLtypefourfive }
+
+%D Next we have to do some general housekeeping.
+
+\gdef\SQLsetcontrols%
+ {\PLsetcontrols
+ \def\flushrestofverbatimline%
+ {\endPLtypesix
+ \ifcase\SQLcommentlevel
+ \inPLcommentfalse
+ \verbatimfont
+ \fi
+ \PLverbosefalse
+ \PLverboseskipped=0}}
+
+\gdef\SQLsetvariables
+ {\PLsetvariables
+ \global\SQLcommentlevel=0 }
+
+\gdef\setupprettySQLtype%
+ {\def\prettyidentifier{SQL}%
+ \let\PLidentifiers=\SQLidentifiers
+ \let\PLvariables=\SQLvariables
+ \SQLsetvariables
+ \SQLsetcontrols
+ \SQLsethandlers
+ \SQLsetspecials
+ \PLsetdiagnostics}
+
+%D We have to look upto four characters ahead. If you don't
+%D grab the picture, just skip reading these macros.
+
+\gdef\SQLtypefourthree%
+ {\handlenextnextpretty\doSQLtypefourthree\PLtypefourtwo}
+
+\gdef\doSQLtypefourthree#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \let\next=\dodoSQLtypefourthree
+ \else\ifnum\prettytype=44
+ \global\advance\SQLcommentlevel by 1
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \let\next=\SQLtogglecomment
+ \else
+ \let\next=\PLtypefourtwo
+ \fi\fi
+ \next{#1}#2}
+
+\gdef\SQLtogglecomment#1#2%
+ {\ifnum\SQLcommentlevel=1
+ \prettynaturalfont
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \else
+ \getpretties{#1}{#2}%
+ \fi}
+
+\gdef\dodoSQLtypefourthree% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoSQLtypefourthree\dodododoPLtypefourthree}
+
+\gdef\dododoSQLtypefourthree%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoSQLtypefourthree}
+
+\gdef\dodododoSQLtypefourthree#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty
+ \fi}
+
+\gdef\SQLtypefourfour%
+ {\handlenextnextpretty\doSQLtypefourfour\PLtypefourtwo}
+
+\gdef\doSQLtypefourfour#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=43
+ \SQLtogglecomment{#1}#2%
+ \global\advance\SQLcommentlevel by -1
+ \ifcase\SQLcommentlevel
+ \global\inPLcommentfalse
+ \prettyverbatimfont
+ \fi
+ \else
+ \endPLtypesix
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \expandafter#2%
+ \fi}
+
+%D Much of the indirect calls (\type {dodo..}) is due to
+%D looking ahead as well as midway pretty print changing.
+
+\gdef\SQLtypefourfive%
+ {\handlenextnextpretty\doSQLtypefourfive\PLtypefourtwo}
+
+\gdef\doSQLtypefourfive#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=45
+ \let\next=\dodoSQLtypefourfive
+ \else
+ \let\next=\PLtypefourtwo
+ \fi
+ \next{#1}#2}
+
+\gdef\dodoSQLtypefourfive% #1%
+ {\endPLtypesix
+ \handlenextnextpretty\dododoSQLtypefourfive\dodododoPLtypefourfive}
+
+\gdef\dododoSQLtypefourfive%
+ {\ifnewpretty\expandafter\handlenewpretty\fi\dodododoSQLtypefourfive}
+
+\gdef\dodododoSQLtypefourfive#1#2%
+ {\ifinPLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \global\inPLcommenttrue
+ \PLverbosecorrection
+ \ifnaturaltextext
+ \let\next\naturaltextext
+ \else
+ \prettynaturalfont
+ \def\next{\beginofpretty[\!!prettyone]\getpretties{#1}{#2}\endofpretty}%
+ \fi
+ \expandafter\next
+ \fi}
+
+%D We need a different list of reserved words. This list
+%D replaces the \PERL\ one.
+
+\useprettyidentifiers \SQLidentifiers \SQLsetspecials
+ add all alter and any as asc avg begin between break
+ browse bulk by cascade case check close clustered coalesce
+ column commit constraint contains count create cross
+ cursor database default delete desc distinct drop else end
+ exec execute exists exit fetch for foreign from grant
+ group having if in index inner insert into is join key
+ left like max min nocheck nonclustered not null of on open
+ or order outer over plan prepare proc procedure public
+ references return revoce right rollback rule select set
+ sum table then to tran transaction trigger truncate
+ uncommited union unique update use values varying view
+ when where while with work
+
+\useprettyidentifiers \SQLvariables \SQLsetspecials
+ not-yet-defined
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-tex.tex b/Master/texmf-dist/tex/context/base/verb-tex.tex
new file mode 100644
index 00000000000..431703c2a42
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-tex.tex
@@ -0,0 +1,300 @@
+%D \module
+%D [ file=verb-tex,
+%D version=1997.12.22,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty \TEX\ verbatim,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context Support Macros / Pretty TEX Verbatim}
+
+%D The original module \type{supp-ver} had the \TEX\
+%D interpreter built in. The current implementation is more
+%D natural and less complicated.
+
+%D \startTEX
+%D \definetyping[niceTEX][option=TEX,paletpalet=graypretty]
+%D
+%D \startniceTEX
+%D \message{A vivid look at TeX}
+%D \stopniceTEX
+%D \stopTEX
+
+\unprotect
+
+%D \macros
+%D {ifsplitTEXparameters}
+%D
+%D The mechanism described here, is meant to be used with
+%D color. It is nevertheless possible to use different fonts
+%D instead of distinctive colors. When using color, it's better
+%D to end parameter mode after the \type{#}. When on the
+%D other hand we use a slanted typeface for the hashmark, then
+%D a slanted number looks better.
+
+\doglobal\newif\ifsplitTEXparameters \global\splitTEXparameterstrue
+
+%D \macros
+%D {ifsplitTEXcontrols}
+%D
+%D With \type{\splittexcontrols} we can influence the way
+%D control characters are processed in macro names. By default,
+%D the \type{^^} part is uncolored. When this boolean is set to
+%D false, they get the same color as the other characters.
+
+\doglobal\newif\ifsplitTEXcontrols \global\splitTEXcontrolstrue
+
+%D The next boolean is used for internal purposes only and
+%D keeps track of the length of the name. Because two||character
+%D sequences starting with a backslash are always seen as a
+%D command.
+
+\doglobal\newif\iffirstinTEXcommand
+
+%D We use a maximum of four colors because more colors will
+%D distract too much. In the following table we show the
+%D logical names of the colors, their color and \cap{RGB} values.
+%D
+%D \placetable{geen}
+%D \starttable[|l|l|c|c|c|c|]
+%D \HL
+%D \FC\bf identifier \MC\bf color \MC\bf r \MC\bf g \MC\bf b \MC\bf bw \LC\SR
+%D \HL
+%D \FC prettyone \MC red \MC 0.9 \MC 0.0 \MC 0.0 \MC 0.30 \LC\FR
+%D \FC prettytwo \MC green \MC 0.0 \MC 0.8 \MC 0.0 \MC 0.45 \LC\MR
+%D \FC prettythree \MC yellow \MC 0.0 \MC 0.0 \MC 0.9 \MC 0.60 \LC\MR
+%D \FC prettyfour \MC blue \MC 0.8 \MC 0.8 \MC 0.6 \MC 0.75 \LC\LR
+%D \HL
+%D \stoptable
+%D
+%D Outside \CONTEXT\ these colors are defined in
+%D \type{verb-ini}, in \CONTEXT\ their definitions can be found
+%D in \type{core-ver}, where in fact we use the color palet
+%D mechanism. That way we can use different schemes i a quite
+%D natural way.
+
+\gdef\setupprettyTEXtype
+ {\def\prettyidentifier{TEX}%
+ \TEXsetcontrols
+ \TEXsethandlers
+ \TEXsetspecials}
+
+\gdef\TEXsetcontrols
+ {\saveprettycontrols
+ \everyprettyend
+ {\TEXendofcommand
+ \TEXendofparameter}%
+ \def\obeyedspace
+ {\TEXendofcommand
+ \TEXendofparameter
+ \oldobeyedspace}%
+ \def\flushrestofverbatimline
+ {\TEXendofcommand
+ \TEXendofparameter}%
+ \let\obeytabs=\ignoretabs}
+
+\gdef\TEXsetspecials
+ {\setpretty`\$=1 \setpretty`\{=1 \setpretty`\}=1
+ \setpretty`\[=2 \setpretty`\]=2 \setpretty`\(=2 \setpretty`\)=2
+ \setpretty`\==2 \setpretty`\<=2 \setpretty`\>=2 \setpretty`\"=2
+ \setpretty`\-=3 \setpretty`\+=3 \setpretty`\/=3
+ \setpretty`\|=3 \setpretty`\%=3 \setpretty`\'=3 \setpretty`\`=3
+ \setpretty`\_=3 \setpretty`\&=3 \setpretty`\~=3
+ \setpretty`\.=4 \setpretty`\,=4 \setpretty`\:=4 \setpretty`\;=4 \setpretty`\*=4
+ \setpretty`\#=5
+ \setpretty`\1=6 \setpretty`\2=6 \setpretty`\3=6 \setpretty`\4=6 \setpretty`\5=6
+ \setpretty`\6=6 \setpretty`\7=6 \setpretty`\8=6 \setpretty`\9=6 \setpretty`\0=6
+ \setpretty`\\=7
+ \setpretty`\^=8
+ \setpretty`\A=9 \setpretty`\B=9 \setpretty`\C=9 \setpretty`\D=9 \setpretty`\E=9
+ \setpretty`\F=9 \setpretty`\G=9 \setpretty`\H=9 \setpretty`\I=9 \setpretty`\J=9
+ \setpretty`\K=9 \setpretty`\L=9 \setpretty`\M=9 \setpretty`\N=9 \setpretty`\O=9
+ \setpretty`\P=9 \setpretty`\Q=9 \setpretty`\R=9 \setpretty`\S=9 \setpretty`\T=9
+ \setpretty`\U=9 \setpretty`\V=9 \setpretty`\W=9 \setpretty`\X=9 \setpretty`\Y=9
+ \setpretty`\Z=9
+ \setpretty`\a=9 \setpretty`\b=9 \setpretty`\c=9 \setpretty`\d=9 \setpretty`\e=9
+ \setpretty`\f=9 \setpretty`\g=9 \setpretty`\h=9 \setpretty`\i=9 \setpretty`\j=9
+ \setpretty`\k=9 \setpretty`\l=9 \setpretty`\m=9 \setpretty`\n=9 \setpretty`\o=9
+ \setpretty`\p=9 \setpretty`\q=9 \setpretty`\r=9 \setpretty`\s=9 \setpretty`\t=9
+ \setpretty`\u=9 \setpretty`\v=9 \setpretty`\w=9 \setpretty`\x=9 \setpretty`\y=9
+ \setpretty`\z=9
+ \setpretty`\?=9 \setpretty`\!=9 \setpretty`\@=9
+ \setpretty`\%=0 }
+
+\gdef\TEXsethandlers
+ {\installprettyhandler 1 \TEXtypeone
+ \installprettyhandler 2 \TEXtypetwo
+ \installprettyhandler 3 \TEXtypethree
+ \installprettyhandler 4 \TEXtypefour
+ \installprettyhandler 5 \TEXtypefive
+ \installprettyhandler 6 \TEXtypesix
+ \installprettyhandler 7 \TEXtypeseven
+ \installprettyhandler 8 \TEXtypeeight
+ \installprettyhandler 9 \TEXtypenine
+ \installprettyhandler 0 \TEXtypezero}
+
+\doglobal\newif\ifinTEXcommand
+\doglobal\newif\ifinTEXparameter
+
+\gdef\TEXbeginofcommand
+ {\TEXendofparameter
+ \ifinTEXcommand
+ \else
+ \global\inTEXcommandtrue
+ \global\firstinTEXcommandtrue
+ \beginofpretty[\!!prettytwo]%
+ \fi}
+
+\gdef\TEXendofcommand
+ {\ifinTEXcommand
+ \endofpretty
+ \global\inTEXcommandfalse
+ \global\firstinTEXcommandfalse
+ \fi}
+
+\gdef\TEXbeginofparameter
+ {\TEXendofcommand
+ \ifinTEXparameter
+ \else
+ \global\inTEXparametertrue
+ \beginofpretty[\!!prettythree]%
+ \fi}
+
+\gdef\TEXendofparameter
+ {\ifinTEXparameter
+ \endofpretty
+ \global\inTEXparameterfalse
+ \fi}
+
+\gdef\ifnotfirstinTEXcommand#1
+ {\iffirstinTEXcommand
+ \getpretty{#1}%
+ \TEXendofcommand
+ \else}
+
+\gdef\TEXtypeone#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXendofcommand
+ \TEXendofparameter
+ \beginofpretty[\!!prettyone]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\TEXtypetwo#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXendofcommand
+ \TEXendofparameter
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\TEXtypethree#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXendofcommand
+ \TEXendofparameter
+ \beginofpretty[\!!prettyfour]\getpretty{#1}\endofpretty
+ \fi}
+
+\gdef\TEXtypefour#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXendofcommand
+ \TEXendofparameter
+ \getpretty{#1}%
+ \fi}
+
+\gdef\TEXtypefive#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXbeginofparameter
+ \getpretty{#1}%
+ \fi}
+
+\gdef\TEXtypesix#1%
+ {\ifnotfirstinTEXcommand#1
+ \ifinTEXparameter
+ \ifsplitTEXparameters
+ \TEXendofparameter
+ \getpretty{#1}%
+ \else
+ \getpretty{#1}%
+ \TEXendofparameter
+ \fi
+ \else
+ \TEXendofcommand
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+\gdef\TEXtypeseven#1%
+ {\ifnotfirstinTEXcommand#1
+ \TEXbeginofcommand
+ \getpretty{#1}%
+ \fi}
+
+\gdef\TEXtypeeightA#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=80
+ \TEXendofparameter
+ \ifsplitTEXcontrols
+ \ifinTEXcommand
+ \def\next{\TEXendofcommand\getpretty{#1}\getpretty{#1}\TEXbeginofcommand}%
+ \else
+ \def\next{\getpretty{#1}\getpretty{#1}}%
+ \fi
+ \else
+ \def\next{\getpretty{#1}\getpretty{#1}}%
+ \fi
+ \else
+ \def\next{\TEXtypeeightB{#1}#2}%
+ \fi
+ \next}
+
+\gdef\TEXtypeeightB
+ {\TEXendofparameter
+ \ifinTEXcommand
+ \firstinTEXcommandfalse
+ \expandafter\getpretty
+ \else
+ \expandafter\TEXtypethree
+ \fi}
+
+\gdef\TEXtypeeight
+ {\handlenextnextpretty\TEXtypeeightA\TEXtypeeightB}
+
+\gdef\TEXtypenine
+ {\TEXendofparameter
+ \global\firstinTEXcommandfalse
+ \getpretty}
+
+%\gdef\TEXtypezero
+% {\disableprettyafterwards % only when enabled of course
+% \ifnewpretty\expandafter\handlenewpretty\fi\TEXtypethree}
+
+\bgroup
+\catcode`\%=\@@other
+\xdef\texcommentsymbol{%}
+\egroup
+
+\beginETEX \scantokens
+
+\long\gdef\naturalTEXtext#1#2\relax% local alternative for \naturaltextext
+ {\convertargument#2\to\ascii
+ \doifinstringelse{\texcommentsymbol}{\ascii}
+ {\long\def\next{\TEXtypethree{#1}#2\relax}}
+ %{\long\def\next{\bgroup\prettynaturalfont\restorecatcodes\scantokens{\ignorespaces#2}\egroup}}%
+ {\long\def\next{\bgroup\prettynaturalfont{\restorecatcodes\scantokens{\ignorespaces#2}}\egroup}}%
+ \next}
+
+\endETEX
+
+\gdef\TEXtypezero
+ {\ifnaturaltextext
+ \expandafter\naturalTEXtext
+ \else
+ \disableprettyafterwards % only when enabled of course
+ \expandafter\handlenewpretty\expandafter\TEXtypethree
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/verb-xml.tex b/Master/texmf-dist/tex/context/base/verb-xml.tex
new file mode 100644
index 00000000000..f80147ebee9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-xml.tex
@@ -0,0 +1,425 @@
+%D \module
+%D [ file=verb-xml,
+%D version=2000.05.09,
+%D title=\CONTEXT\ Verbatim Macros,
+%D subtitle=Pretty XML verbatim,
+%D author=Berend de Boer,
+%D date=2000.05.08,
+%D copyright={Berend de Boer \& Hans Hagen}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module will be cleaned up a bit in the process of more
+% flexible verbatim options.
+
+\writestatus{loading}{Context Support Macros / Pretty XML Verbatim}
+
+\unprotect
+
+%D Formats XML more or less like XMLWriter (http://XMLwriter.net)
+%D does.
+%D
+%D Known bugs:
+%D - CDATA not handled yet.
+%D
+%D Expects well-formed XML. Else parsing errors may occur, because
+%D this XML state machine is not robust.
+%D
+%D Examples:
+%D
+%D \startXML
+%D <?xml version="1.0" encoding="ISO-8859-1" ?>
+%D <!-- comment: example of a <resource> tag -->
+%D <resources>
+%D <resource id="5">
+%D <capacity>
+%D <kind>1</kind>
+%D <value>100</value>
+%D </capacity>
+%D </resource>
+%D </resources>
+%D \stopXML
+%D
+%D Another format:
+%D
+%D \startXML
+%D <?xml version="1.0" encoding="ISO-8859-1" ?>
+%D <address id="10"/>
+%D \stopXML
+%D
+%D A typical setup:
+%D
+%D \setuptyping[XML]
+%D [margin=1cm,
+%D before={\switchtobodyfont[9pt]\blank[medium]},
+%D after={\switchtobodyfont[11pt]\blank[medium]},
+%D style=\ss]
+%D
+
+\ifx\XMLlinebreak\undefined
+ \gdef\XMLlinebreak{\ifhmode\allowbreak\fi} % new, often long lines
+\fi
+
+\doglobal\newif\ifXMLmarkkeys \global\XMLmarkkeystrue
+
+\gdef\setupprettyXMLtype%
+ {\def\prettyidentifier{XML}%
+ \XMLsetvariables
+ \XMLsetcontrols
+ \XMLsetspecials
+ \XMLsethandlers}
+
+\gdef\XMLsetvariables
+ {\global\inXMLpifalse
+ \global\inXMLtagfalse
+ \global\inXMLvaluefalse
+ \global\inXMLspecialfalse
+ \global\inXMLcommentfalse
+ \global\inXMLtagnamefalse
+ \global\inXMLattributefalse
+ \global\inXMLentityfalse}
+
+\gdef\XMLsetcontrols%
+ {\saveprettycontrols
+ \def\obeyedspace%
+ {\ifinXMLvalue
+ \else % more tests ?
+ \XMLstartattribute
+ \fi
+ \oldobeyedspace
+ \XMLlinebreak}%
+ \def\flushrestofverbatimline%
+ {\endXMLtagname}%
+ \let\obeytabs=\ignoretabs}
+
+\gdef\XMLsetspecials%
+ {\setpretty`\<=10 \setpretty`\>=11
+ \setpretty`\?=12 \setpretty`\/=13
+ \setpretty`\!=14 \setpretty`\-=15
+ \setpretty`\\=17
+ \setpretty`\0=17
+ \setpretty`\1=17 \setpretty`\2=17 \setpretty`\3=17
+ \setpretty`\4=17 \setpretty`\5=17 \setpretty`\6=17
+ \setpretty`\7=17 \setpretty`\8=17 \setpretty`\9=17
+ \setpretty`\==16
+ \setpretty`\"=20
+ \setpretty`\(=30 \setpretty`\)=30 \setpretty`\,=30
+ \setpretty`\*=30 \setpretty`\+=30 \setpretty`\#=30
+% \setpretty`\:=30
+ \setpretty`\:=10 % better for tags
+ \setpretty`\&=41 \setpretty`\;=42 }
+
+\gdef\XMLsethandlers%
+ {\installprettyhandler 17 \XMLnormal
+ \installprettyhandler 10 \XMLwhattag
+ \installprettyhandler 11 \XMLstoptag
+ \installprettyhandler 12 \XMLtypeonetwo
+ \installprettyhandler 13 \XMLtypeonethree
+ \installprettyhandler 14 \XMLtypeonefour
+ \installprettyhandler 15 \XMLtypeonefive
+ \installprettyhandler 16 \XMLtypeonesix
+ \installprettyhandler 20 \XMLdoublequote
+ \installprettyhandler 30 \XMLtypethree
+ \installprettyhandler 41 \XMLbampersand
+ \installprettyhandler 42 \XMLeampersand }
+
+\doglobal\newif\ifinXMLpi
+\doglobal\newif\ifinXMLtag
+\doglobal\newif\ifinXMLvalue
+\doglobal\newif\ifinXMLspecial
+\doglobal\newif\ifinXMLcomment
+\doglobal\newif\ifinXMLtagname
+\doglobal\newif\ifinXMLattribute
+\doglobal\newif\ifinXMLentity
+
+% the list of actions to be executed per state
+
+% test if we have a normal tag, processing instruction or a special,
+% i.e. <, <? or <!
+
+\gdef\XMLnormal#1{\getpretty{#1}}
+
+\gdef\XMLwhattag%
+ {\handlenextnextpretty\XMLdowhattag\XMLstarttag}
+
+\gdef\XMLdowhattag#1#2%
+ {\ifinXMLcomment
+ \let\next=\getpretties
+ \else
+ \getprettydata{#2}%
+ \ifnum\prettytype=12 % ?
+ \let\next=\XMLstartpi
+ \else\ifnum\prettytype=14 % !
+ \let\next=\XMLstartspecial
+ \else
+ \let\next=\XMLstarttag
+ \fi\fi
+ \fi
+ \next{#1}{#2}}
+
+% formats <?
+
+\gdef\XMLstartpi#1#2%
+ {\beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty%
+ \global\inXMLtagtrue
+ \global\inXMLpitrue
+ \global\inXMLtagnametrue
+ \beginofpretty[\!!prettyone]}
+
+% format <!, <!--, <!DOCTYPE, <![CDATA[ and such
+
+\gdef\XMLstartspecial#1#2%
+ {\beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty%
+ \global\inXMLtagtrue
+ \global\inXMLspecialtrue
+ \global\inXMLtagnametrue
+ \beginofpretty[\!!prettyone]}
+
+% formats plain <
+
+\gdef\XMLstarttag#1%
+ {\XMLlinebreak
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \global\inXMLtagtrue
+ \global\inXMLtagnametrue
+ \beginofpretty[\!!prettyone]}
+
+
+% catch >
+
+\gdef\XMLstoptag#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \endXMLtagname
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \doXMLstoptag
+ \XMLlinebreak
+ \fi
+ \fi}
+
+\gdef\doXMLstoptag%
+ {\global\inXMLpifalse % either end process instruction
+ \global\inXMLspecialfalse % or special
+ \global\inXMLtagfalse % tag ends always
+ \global\inXMLtagnamefalse} % just to be sure
+
+% end typeset name of tag
+% because called often, we also use it to end the default
+% attribute color.
+
+\gdef\endXMLtagname%
+ {\ifinXMLtagname
+ \endofpretty
+ \inXMLtagnamefalse
+ \else
+ \XMLstopattribute
+ \fi}
+
+% start attribute formatting inside a tag if applicable
+
+\gdef\XMLstartattribute%
+ {\ifinXMLcomment \else
+ \ifinXMLpi
+ \ifXMLmarkkeys\else\endXMLtagname\fi % option
+ \else
+ \endXMLtagname
+ \ifinXMLtag
+ \doXMLstartattribute
+ \fi
+ \fi
+ \fi}
+
+\gdef\XMLstopattribute%
+ {\ifinXMLattribute
+ \endofpretty
+ \inXMLattributefalse
+ \fi}
+
+\gdef\doXMLstartattribute
+ {\inXMLattributetrue
+ \beginofpretty[\!!prettythree]}
+
+% `?' character, needed to recognize ?>
+
+\gdef\XMLtypeonetwo%
+ {\endXMLtagname
+ \handlenextnextpretty\doXMLtypeonetwo\doXMLout}
+
+\gdef\doXMLtypeonetwo#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=11 % >
+ \expandafter\dododoXMLtypeonetwo
+ \else % treat as `green' character
+ \expandafter\XMLtypethree
+ \fi
+ {#1}#2}
+
+\gdef\dododoXMLtypeonetwo#1#2%
+ {\ifinXMLcomment
+ \getpretties{#1}{#2}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \getpretties{#1}{#2}%
+ \else
+ \ifinXMLpi
+ \beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty
+ \else % treat as green character
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettythree]#2\endofpretty
+ \fi
+ \doXMLstoptag
+ \fi
+ \else
+ \getpretties{#1}{#2}%
+ \fi
+ \fi}
+
+% '/' character, catch /> and </, do nothing else
+
+\gdef\XMLtypeonethree#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% used to parse <!
+
+\gdef\XMLtypeonefour#1%
+ {\getpretty{#1}}
+
+% used to parse <!-- and -->
+% when <! is parsed we already assumed this is a comment
+% when -- is encountered, we only need to see if --> is ahead
+% so the comment can stop.
+
+\gdef\XMLtypeonefive%
+ {\handlenextnextpretty\doXMLtypeonefive\doXMLout}
+
+\gdef\doXMLtypeonefive#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=15
+ \ifinXMLcomment
+ \let\next=\dodoXMLtypeonefive
+ \else
+ \ifinXMLspecial
+ \let\next=\startXMLcomment
+ \else
+ \let\next=\doXMLouttwo
+ \fi
+ \fi
+ \else
+ \let\next=\doXMLouttwo
+ \fi
+ \next{#1}#2}
+
+\gdef\startXMLcomment#1#2%
+ {\beginofpretty[\!!prettythree]\getpretties{#1}{#2}\endofpretty
+ \beginofpretty[\!!prettyfour]%
+ \global\inXMLcommenttrue}
+
+\gdef\dodoXMLtypeonefive#1% encountered -
+ {\def\prev{#1}\handlenextnextpretty\dododoXMLtypeonefive\doXMLout}
+
+\gdef\nodoXMLtypeonefive% encountered -
+ {\getpretty{\prev}\doXMLout}
+
+\gdef\dododoXMLtypeonefive#1#2%
+ {\getprettydata{#2}%
+ \ifnum\prettytype=11
+ \endofpretty\getpretty{\prev}#1\empty\global\inXMLcommentfalse#2%
+ \else
+ \getpretty{\prev}#1#2%
+ \fi}
+
+\global\let\doXMLout \getpretty
+\global\let\doXMLouttwo\getpretties
+
+% '=' inside tags needs to be blue
+
+\gdef\XMLtypeonesix#1%
+ {\ifinXMLtag
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \beginofpretty[\!!prettyone]%
+ \else
+ \getpretty{#1}%
+ \fi}
+
+% catch attribute value parts
+
+\gdef\XMLdoublequote#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \ifinXMLvalue
+ \global\inXMLvaluefalse
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \ifXMLmarkkeys\beginofpretty[\!!prettyone]\fi
+ \else
+ \endofpretty
+ \beginofpretty[\!!prettythree]\getpretty{#1}\endofpretty
+ \global\inXMLvaluetrue
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% symbols like `(', `)' and `,' should be green
+
+\gdef\XMLtypethree#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \ifinXMLtag
+ \endXMLtagname
+ \ifinXMLvalue
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \XMLstartattribute% again
+ \fi
+ \else
+ \getpretty{#1}%
+ \fi
+ \fi}
+
+% special characters with `&'
+
+\gdef\XMLbampersand#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \endXMLtagname
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \global\inXMLentitytrue
+ \fi}
+
+\gdef\XMLeampersand#1%
+ {\ifinXMLcomment
+ \getpretty{#1}%
+ \else
+ \beginofpretty[\!!prettytwo]\getpretty{#1}\endofpretty
+ \global\inXMLentityfalse
+ \fi}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-chemml.tex b/Master/texmf-dist/tex/context/base/x-chemml.tex
new file mode 100644
index 00000000000..68b52cdd144
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-chemml.tex
@@ -0,0 +1,212 @@
+%D \module
+%D [ file=m-chemml,
+%D version=2001.09.12,
+%D title=\CONTEXT\ XML Modules,
+%D subtitle=Loading CHEMML Filters,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\useXMLfilter[cml]
+
+%D Structural formulas are codes in a \PPCHTEX\ way; this
+%D will change -)
+%D
+%D \startbuffer
+%D <dchem>
+%D <structure>
+%D <component>
+%D <graphic>SIX,B</graphic>
+%D <graphic>R135</graphic>
+%D </component>
+%D <component>
+%D <graphic>R246</graphic>
+%D </component>
+%D <component>
+%D <graphic>RZ</graphic>
+%D <text>A,B,C,D,E,F</text>
+%D </component>
+%D <component>
+%D <graphic>Z</graphic>
+%D <oxidation n="3">A</oxidation>
+%D <text>A</text>
+%D <annotation location="t">
+%D <text>B</text>
+%D <caption>x<context:b>x<context:compound token="*"/>x</context:b>x</caption>
+%D </annotation>
+%D <oxidation n="3" sign="+">B</oxidation>
+%D <text>C,D,E,F</text>
+%D </component>
+%D </structure>
+%D <structure>
+%D <component>
+%D <graphic>SIX,B</graphic>
+%D <graphic>r135</graphic>
+%D </component>
+%D <component>
+%D <graphic>R246</graphic>
+%D </component>
+%D <component>
+%D <graphic>RZ</graphic>
+%D <text>A,B,C,D,E,F</text>
+%D </component>
+%D </structure>
+%D </dchem>
+%D \stopbuffer
+%D
+%D \typebuffer
+
+% \ifx\XMLgtoks\undefined \newtoks\XMLgtoks \fi
+% \ifx\XMLttoks\undefined \newtoks\XMLttoks \fi
+%
+% \defineXMLenvironment [structure]
+% {\startchemical\ignorespaces}
+% {\relax\stopchemical}
+%
+% \def\chemicalXMLg#1% \defineXMLcollect [graphic] \XMLgtoks
+% {\doifelsenothing{\the\XMLgtoks}
+% {\doglobal\appendtoks #1\to\XMLgtoks\ignorespaces}
+% {\doglobal\appendtoks,#1\to\XMLgtoks\ignorespaces}}
+%
+% \def\chemicalXMLt#1%
+% {\doifelsenothing{\the\XMLttoks}
+% {\doglobal\appendtoks #1\to\XMLttoks\ignorespaces}
+% {\doglobal\appendtoks,#1\to\XMLttoks\ignorespaces}}
+%
+% \defineXMLenvironment [component] [type=]
+% {\global\XMLgtoks\emptytoks
+% \global\XMLttoks\emptytoks
+% \defineXMLargument[graphic]\chemicalXMLg
+% \defineXMLargument[text]\chemicalXMLt
+% \ignorespaces}
+% {\expanded{\chemical[\the\XMLgtoks][\the\XMLttoks]}%
+% \ignorespaces}
+%
+% \defineXMLargument [oxidation] [sign=,n=1] \chemicalXMLo % +/- 1..7
+%
+% \def\chemicalXMLo#1%
+% {\expanded{\chemicalXMLt
+% {\noexpand\chemicaloxidation{\XMLop{sign}}{\XMLop{n}}{#1}}}%
+% \ignorespaces}
+%
+% \defineXMLenvironment [annotation] [location=]
+% {\bgroup
+% \defineXMLenvironmentsave[text]{\ignorespaces}{\ignorespaces}%
+% \defineXMLenvironmentsave[caption]{\ignorespaces}{\ignorespaces}%
+% \ignorespaces}
+% {\scratchtoks{\chemicalright}%
+% \processaction
+% [\XMLop{location}]
+% [ t=>\scratchtoks{\chemicaltop},
+% b=>\scratchtoks{\chemicalbottom},
+% l=>\scratchtoks{\chemicalleft},
+% r=>\scratchtoks{\chemicalright},
+% lc=>\scratchtoks{\chemicalleftcentered},
+% rc=>\scratchtoks{\chemicalrightcentered},
+% tl=>\scratchtoks{\chemicaltopleft},
+% bl=>\scratchtoks{\chemicalbottomleft},
+% tr=>\scratchtoks{\chemicaltopright},
+% br=>\scratchtoks{\chemicalbottomright},
+% lt=>\scratchtoks{\chemicallefttop},
+% lb=>\scratchtoks{\chemicalleftbottom},
+% rt=>\scratchtoks{\chemicalrighttop},
+% rb=>\scratchtoks{\chemicalrightbottom},
+% x=>\scratchtoks{\chemicaltighttext},
+% sl=>\scratchtoks{\chemicalsmashedleft},
+% sm=>\scratchtoks{\chemicalsmashedmiddle},
+% sr=>\scratchtoks{\chemicalsmashedright}]%
+% \expanded{\chemicalXMLt
+% {\the\scratchtoks{\XMLflush{text}}{\XMLflush{caption}}}}%
+% \egroup
+% \ignorespaces}
+%
+% \defineXMLenvironment [forever]
+% {\chemicalXMLt{\[}\ignorespaces}
+% {\chemicalXMLt{\]}\ignorespaces}
+
+\ifx\XMLgtoks\undefined \newtoks\XMLgtoks \fi
+\ifx\XMLttoks\undefined \newtoks\XMLttoks \fi
+
+\startXMLmapping [cml]
+
+% this will be a more natural method; this also triggers it
+
+\installXMLunknownremapping
+
+% extensions
+
+\remapXMLsequence [structure] [CPA] \doCMLstructure
+\remapXMLsequence [component] [CPA] \doCMLcomponent
+\remapXMLsequence [graphic] [CPA] \doCMLgraphic
+\remapXMLsequence [text] [CPA] \doCMLtext
+
+\remapXMLsequence [caption] [CPA] \doCMLcaption
+\remapXMLsequence [oxidation] [CPA] \doCMLoxidation
+\remapXMLsequence [annotation][CPA] \doCMLannotation
+\remapXMLsequence [forever] [CPA] \doCMLforever
+
+\def\doCMLstructure#1#2%
+ {\startchemical\ignorespaces#2\unskip\stopchemical}
+
+\def\doCMLgraphic#1#2%
+ {\doifelsenothing{\the\XMLgtoks}
+ {\uppercase{\doglobal\appendtoks #2\to\XMLgtoks\ignorespaces}}
+ {\uppercase{\doglobal\appendtoks,#2\to\XMLgtoks\ignorespaces}}%
+ \ignorespaces}
+
+\def\doCMLtext#1#2%
+ {\doifelsenothing{\the\XMLttoks}
+ {\doglobal\appendtoks #2\to\XMLttoks\ignorespaces}
+ {\doglobal\appendtoks,#2\to\XMLttoks\ignorespaces}%
+ \ignorespaces}
+
+\def\doCMLcomponent#1#2%
+ {\global\XMLgtoks\emptytoks
+ \global\XMLttoks\emptytoks
+ \ignorespaces#2\unskip
+ \expanded{\chemical[\the\XMLgtoks][\the\XMLttoks]}%
+ \ignorespaces}
+
+\def\doCMLannotation#1#2%
+ {\getXMLarguments{cml}{location="" #1}%
+ \def\dodoCMLannotation##1%
+ {\doCMLtext\empty{##1%
+ {\let\doCMLtext \secondoftwoarguments\processXMLRchild{text}{#2}}%
+ {\let\doCMLcaption\unmapXMLdata \processXMLRchild{caption}{#2}}}}%
+ \processaction
+ [\XMLpar{cml}{location}{r}]
+ [ t=>\dodoCMLannotation\chemicaltop,
+ b=>\dodoCMLannotation\chemicalbottom,
+ l=>\dodoCMLannotation\chemicalleft,
+ r=>\dodoCMLannotation\chemicalright,
+ lc=>\dodoCMLannotation\chemicalleftcentered,
+ rc=>\dodoCMLannotation\chemicalrightcentered,
+ tl=>\dodoCMLannotation\chemicaltopleft,
+ bl=>\dodoCMLannotation\chemicalbottomleft,
+ tr=>\dodoCMLannotation\chemicaltopright,
+ br=>\dodoCMLannotation\chemicalbottomright,
+ lt=>\dodoCMLannotation\chemicallefttop,
+ lb=>\dodoCMLannotation\chemicalleftbottom,
+ rt=>\dodoCMLannotation\chemicalrighttop,
+ rb=>\dodoCMLannotation\chemicalrightbottom,
+ x=>\dodoCMLannotation\chemicaltighttext,
+ sl=>\dodoCMLannotation\chemicalsmashedleft,
+ sm=>\dodoCMLannotation\chemicalsmashedmiddle,
+ sr=>\dodoCMLannotation\chemicalsmashedright]%
+ \ignorespaces}
+
+\def\doCMLoxidation#1#2%
+ {\getXMLarguments{cml}{sign="" n="1" #1}%
+ \expanded{\doCMLtext{}%
+ {\noexpand\chemicaloxidation{\XMLpar{cml}{sign}{}}{\XMLpar{cml}{n}{}}{#2}}}%
+ \ignorespaces}
+
+\def\doCMLforever#1#2{\[#2\]}
+
+\stopXMLmapping
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-contml.tex b/Master/texmf-dist/tex/context/base/x-contml.tex
new file mode 100644
index 00000000000..9f3fe6fd2a9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-contml.tex
@@ -0,0 +1,480 @@
+% interface=en
+
+%M \usemodule [contml] \autoXMLnamespace [context]
+%M \definefilesynonym [context] [x-contml.xsd]
+
+%D \module
+%D [ file=x-contml,
+%D version=mid 2001,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Basic \CONTEXT\ commands,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% This module provides some basic \XML\ elements. These definitions
+% are highly experimental and serve as a playground for interface
+% development.
+
+\unprotect
+
+%D \elements {include}
+%D
+%D \startbuffer
+%D You can include another file in the current document with the
+%D <element>include</element> element. When including the file, &context;
+%D will look at the suffix, in order to decide how to include the file.
+%D
+%D <verbatim>
+%D <line><include name="mine"/></line>
+%D <line><include name="mine" type="txt"/></line>
+%D <line><include name="mine" type="tex"/></line>
+%D </verbatim>
+%D \stopbuffer
+%D
+%D \showelements [context] [include]
+
+\defineXMLsingular [context:include] [name=,type=xml]
+ {\doifsomethingXMLop{name}
+ {\processaction
+ [\XMLop{type}]
+ [xml=>\readfile{\XMLop{name}}\donothing,
+ tex=>{{\disableXML\readfile{\XMLop{name}}\donothing\donothing}},
+ txt=>{{\disableXML\typefile{\XMLop{name}}\donothing\donothing}}]}}
+
+%D \elements {compound}
+%D
+%D \startbuffer
+%D Instead of using hard coded compound tokens, you should use the
+%D <element>compound</element> element, as in high<compound token="/" />low.
+%D The overhead in keying is rewarded with proper symbols and hyphenation.
+%D \stopbuffer
+%D
+%D \showelements [context] [compound]
+
+\ifx\normalcompound\undefined \let\normalcompound=| \fi
+
+% \defineXMLsingular [context:compound] [token=]
+% {\expanded{\normalcompound\XMLop{token}}|}
+
+% \defineXMLsingular [context:compound] [token=]
+% {\ifmmode
+% \doifXMLop{token}{\XMLop{token}}{\compoundhyphen}%
+% \else
+% \expanded{\normalcompound\XMLop{token}}|%
+% \fi}
+
+\defineXMLsingular [context:compound] [token=]
+ {\mathortext % disc comm looks ahead, so \relax
+ {\doifXMLop{token}{\XMLop{token}}\compoundhyphen}%
+ {\expanded{\discretionarycommand\noexpand|\XMLop{token}}|\relax}}
+
+%D \elements {p}
+%D
+%D \startbuffer
+%D <p>Although for &tex; it is often enough to mark the end of a paragraph,
+%D in &xml; we want to add a bit more structure. <p/> This permits a more
+%D robust implementation of begin<compound/>of<compound/>par actions</p>
+%D \stopbuffer
+%D
+%D \showelements [context] [p]
+
+\defineXMLenvironment [context:p] {} \endgraf
+\defineXMLsingular [context:p] \endgraf
+
+%D \elements {pageref,textref,lineref}
+%D
+%D \startbuffer
+%D You can ask for a page (<pageref label="lastpage">the last pagenumber
+%D is</pageref> aka page <pageref label="lastpage"/>), text or line reference
+%D with the following three elements. The label may be any valid &context;
+%D reference label.
+%D \stopbuffer
+%D
+%D \showelements [context] [references]
+
+\defineXMLpickup [context:pageref] [label=] {\at} {[\XMLop{label}]}
+\defineXMLpickup [context:textref] [label=] {\in} {[\XMLop{label}]}
+\defineXMLpickup [context:lineref] [label=] {\inline} {[\XMLop{label}]}
+
+%D \elements{text}
+%D
+%D \startbuffer
+%D If you have a self contained &xml; file, you need to signal &context; the
+%D begin and end of the document. The following elements can be used for
+%D that purpose:
+%D
+%D <verbatim>
+%D <line><text></line>
+%D <line> ...</line>
+%D <line></text></line>
+%D </verbatim>
+%D \stopbuffer
+%D
+%D \showelements [context] [text]
+
+\defineXMLenvironment [context:text] \starttext \stoptext
+
+%D \elements {em}
+%D
+%D \startbuffer
+%D Authors often want some control over the way a text is typeset, which is
+%D why we provide the <element>em</element> element. We may only hope that
+%D the author is <em>consistent</em> in his decisions on what to emphasize.
+%D \stopbuffer
+%D
+%D \showelements [context] [em]
+
+\defineXMLgrouped [context:em] \em
+
+%D \elements {b}
+%D
+%D \startbuffer
+%D Bold is not always <b>beautiful</b> but if you really want it, you can
+%D get it by using this element.
+%D \stopbuffer
+%D
+%D \showelements [context] [b]
+
+\defineXMLgrouped [context:b] \bf
+
+%D \elements {verbatim,typing,line,verb,type}
+%D
+%D \startbuffer
+%D Although the following method can be used to typeset a piece of code
+%D verbatim
+%D
+%D <![CDATA[
+%D Dit \is nogal verbatim !
+%D Dit is {nogal} verbatim !
+%D Dit is <nogal> verbatim !
+%D ]]>
+%D
+%D we prefer the more structured:
+%D
+%D <verbatim>
+%D <line>Dit \is nogal verbatim !</line>
+%D <line>Dit is {nogal} verbatim !</line>
+%D <line>Dit is <nogal> verbatim !</line>
+%D </verbatim>
+%D \stopbuffer
+%D
+%D The element to tag in<compound/>line verbatim is <type><verb></type>.
+%D
+%D \showelements [context] [verbatim]
+
+\defineXMLenvironment [context:verbatim]
+ {\startpacked
+ \defineXMLargument[context:line]{\endgraf\type}}
+ {\stoppacked}
+
+\defineXMLenvironment [context:typing]
+ {\startpacked\defineXMLargument[context:line]{\endgraf\type}}
+ {\stoppacked}
+
+\defineXMLargument [context:verb] \type
+\defineXMLargument [context:type] \type
+
+%D \elements {itemize,item}
+%D
+%D \startbuffer
+%D Itemized lists are quite common in documents, al least in the ones that
+%D we produce. For the moment we only provide a few options, later we will
+%D hook it into the &context; attribute handler.
+%D
+%D <itemize type="a">
+%D <item label="bla"> test </item>
+%D <item> test </item>
+%D </itemize>
+%D
+%D <itemize packed="yes">
+%D <item label="more bla"> test </item>
+%D <item> test <em>what?</em></item>
+%D </itemize>
+%D \stopbuffer
+%D
+%D \showelements [context] [itemize]
+
+\defineXMLenvironment [context:itemize] [type=,packed=]
+ {\let\XMLoptions\empty
+ \doifsomethingXMLop{type}{\addtocommalist{\XMLop{type}}\XMLoptions}%
+ \doifXMLop{packed}{yes}{\addtocommalist{packed}\XMLoptions}%
+ \expanded{\startitemize[\XMLoptions]}}
+ {\stopitemize}
+
+\defineXMLenvironment [context:item] [label=]
+ {\expanded{\item[\XMLop{label}]}}
+ {\endgraf}
+
+%D \elements {externalfigure}
+%D
+%D \startbuffer
+%D The previous examples already demonstrated how we can include a graphic:
+%D
+%D <verbatim>
+%D <line><externalfigure file="koe" width="5cm" /></line>
+%D </verbatim>
+%D \stopbuffer
+%D
+%D \showelements [context] [externalfigure]
+
+\defineXMLsingular [context:externalfigure] [\??ef] [base=,label=,file=]
+ {\bgroup % \getXMLta \expandXMLta \expandXMLtp{file}%
+ \expandXMLta
+ \getXMLta % expand entities first
+ \doifelsenothing{\XMLtp{label}}
+ {\expanded{\externalfigure[\XMLtp{file}][\XMLta]}}
+ {\doifsomething{\XMLtp{base}}{\usefigurebase[\XMLtp{base}]}%
+ \expanded{\externalfigure[\XMLtp{label}][\XMLta]}}
+ \egroup}
+
+%D \elements {fixed}
+%D
+%D \startbuffer
+%D Something fixed will end up at the place where it defined in the input
+%D stream. The main idea behind this element is that it gives you control
+%D over the placement.
+%D
+%D <itemize>
+%D <item>
+%D <fixed align="high">
+%D <content>
+%D <externalfigure file="koe" frame="on" height="1cm" />
+%D </content>
+%D </fixed>
+%D </item>
+%D </itemize>
+%D \stopbuffer
+%D
+%D \showelements [context] [fixed]
+
+\defineXMLenvironment [context:fixed] [type=figure,location=,label=]
+ {\bgroup
+ \defineXMLsave[context:caption]
+ \defineXMLsave[context:content]}
+ {\expanded{\startfixed[\XMLop{location}]}%
+ \doifXMLdataelse{context:caption}
+ {\startcombination[1*1]
+ {\XMLflush{context:content}} {\XMLflush{context:caption}}
+ \stopcombination}
+ {\XMLflush{context:content}}%
+ \stopfixed
+ \egroup}
+
+%D \elements {float}
+%D
+%D \startbuffer
+%D A floating body will be placed at the first location available, unless
+%D a location is specified. As with the <element>fixed</element> element,
+%D you can prvide a caption.
+%D
+%D <float type="figure">
+%D <content>
+%D <externalfigure file="koe" frame="on" height="3cm" />
+%D </content>
+%D <caption>This is a cow!</caption>
+%D </float>
+%D \stopbuffer
+%D
+%D \showelements [context] [float]
+
+\defineXMLenvironment [context:float] [type=figure,location=here,label=]
+ {\bgroup
+ \defineXMLsave[context:caption]
+ \defineXMLsave[context:content]}
+ {\expanded
+ {\placefloat
+ [\XMLop{type}] [\XMLop{location}] [\XMLop{label}]
+ {\XMLflush{context:caption}} {\XMLflush{context:content}}}
+ \egroup}
+
+%D \elements {quotation,quote}
+%D
+%D \startbuffer
+%D There is a (not so) subtle difference between a display
+%D <quotation>quotation</quotation> and an <quote>in<compound/>line</quote>
+%D one.
+%D \stopbuffer
+%D
+%D \showelements [context] [table]
+
+\defineXMLgrouped [context:quote] \quote
+\defineXMLgrouped [context:quotation] \quotation
+
+%D \elements {table,tr,td}
+%D
+%D \startbuffer
+%D There are (currently) three table mechanisms in &context;. One of them
+%D resembles the well known &html; tables.
+%D
+%D <?context-command \startlinecorrection[blank] ?>
+%D <table>
+%D <tr> <td>one</td> <td>a</td> <td>first </td> </tr>
+%D <tr> <td>two</td> <td>b</td> <td>second</td> </tr>
+%D </table>
+%D <?context-command \stoplinecorrection ?>
+%D
+%D As you can see here, we use a similar syntax but stick to the &context;
+%D attributes (which provide quite advanced control over the layout).
+%D
+%D <?context-command \startlinecorrection[blank] ?>
+%D <table frame="off" background="color" color="white">
+%D <tr backgroundcolor="red"> <td>xx</td> <td>xx</td> </tr>
+%D <tr backgroundcolor="green"> <td>xx</td> <td>xx</td> </tr>
+%D </table>
+%D <?context-command \stoplinecorrection ?>
+%D \stopbuffer
+%D
+%D \showelements [context] [table]
+
+\defineXMLenvironment [context:table] [\@@tbl\@@tbl]
+ {\bgroup
+ \defineXMLnested [context:tr] [\@@tbl] {\expanded{\bTR[\theXMLarguments{\@@tbl}}]} \eTR
+ \defineXMLnested [context:td] [\@@tbl] {\expanded{\bTD[\theXMLarguments{\@@tbl}}]} \eTD
+ \expanded{\bTABLE[\theXMLarguments{\@@tbl\@@tbl}]}}
+ {\eTABLE
+ \egroup}
+
+%D \elements {tabulate,tspec,thead,tbody,ttail,trule,tr,td}
+%D
+%D \startbuffer
+%D The second mechanism that we support is tabulation. The advantage of this
+%D mechanism is that it it well tuned for tables that have much text in the
+%D cells and cross page boundaires.
+%D
+%D <tabulate>
+%D <tspec>
+%D <tcell align="left"/> <tcell align="middle"/> <tcell align="right"/>
+%D </tspec>
+%D <thead>
+%D <trule/>
+%D <tr> <td> bagger </td> <td> bagger </td> <td> bagger </td> </tr>
+%D <trule/>
+%D </thead>
+%D <ttail>
+%D <trule/>
+%D </ttail>
+%D <tbody>
+%D <tr> <td> bagger </td> <td> bagger </td> <td> bagger </td> </tr>
+%D <tr> <td> bagg </td> <td> ger </td> <td> gr </td> </tr>
+%D <tr> <td> bag </td> <td> er </td> <td> gger </td> </tr>
+%D </tbody>
+%D </tabulate>
+%D \stopbuffer
+%D
+%D \showelements [context] [tabulate]
+
+\newtoks\XMLtabtoks
+
+\defineXMLgrouped [context:tabulate] {\XMLtabtoks{|l|p|}}
+
+\defineXMLpickup [context:tbody]
+ {\expanded{\definetabulate[dummy][\the\XMLtabtoks]}
+ \startdummy\XMLflush{context:thead}}
+ {\XMLflush{context:ttail}\stopdummy}
+
+\defineXMLsave [context:thead]
+\defineXMLsave [context:ttail]
+
+\defineXMLenvironment[context:tspec]
+ {\XMLtabtoks\emptytoks}
+ {\appendtoks|\to\XMLtabtoks}
+
+\defineXMLsingular [context:trule] % verrrry ugly
+ {\crcr\noalign{\kern-\lineheight}\HL}
+
+\defineXMLsingular [context:tcell] [align=]
+ {\appendtoks|\to\XMLtabtoks
+ \expanded{\processallactionsinset
+ [\XMLop{align}]}
+ [ paragraph=>\appendtoks p\to\XMLtabtoks,
+ left=>\appendtoks l\to\XMLtabtoks,
+ right=>\appendtoks r\to\XMLtabtoks,
+ center=>\appendtoks c\to\XMLtabtoks,
+ middle=>\appendtoks c\to\XMLtabtoks]}
+
+\defineXMLenvironment [context:tr] {\ignorespaces} {\NC\NR}
+\defineXMLenvironment [context:td] {\NC} {\ignorespaces}
+
+%D \elements {hide}
+%D
+%D \startbuffer
+%D This is the way to [<hide>this is gone</hide>] something for the
+%D typesetting engine. Normally this element is only used for testing
+%D purposes.
+%D \stopbuffer
+%D
+%D \showelements [context] [tabulate]
+
+\defineXMLignore[context:hide]
+
+%D \elements {unknown}
+%D
+%D \startbuffer
+%D We can go on and on and <unknown/> with defining elements that map onto
+%D &context; commands, but why not just use &tex; input syntax then?
+%D \stopbuffer
+%D
+%D \showelements [context] [unknown]
+
+\defineXMLsingular [context:unknown] \unknown
+
+%D A (for the moment) private one.
+
+\defineXMLargument [context:element] \type
+
+%D The following common schema definitions apply:
+%D
+%D {\setupcolors[state=stop]\showXSDcomponent[context][definitions]}
+
+\defineXMLargument [context:chapter] [label=] {\chapter[\XMLop{label}]}
+\defineXMLargument [context:section] [label=] {\section[\XMLop{label}]}
+\defineXMLargument [context:subsection] [label=] {\subsection[\XMLop{label}]}
+\defineXMLargument [context:subsubsection] [label=] {\subsubsection[\XMLop{label}]}
+\defineXMLargument [context:subsubsubsection] [label=] {\subsubsubsection[\XMLop{label}]}
+
+\defineXMLargument [context:title] [label=] {\title[\XMLop{label}]}
+\defineXMLargument [context:subject] [label=] {\subject[\XMLop{label}]}
+\defineXMLargument [context:subsubject] [label=] {\subsubject[\XMLop{label}]}
+\defineXMLargument [context:subsubsubject] [label=] {\subsubsubject[\XMLop{label}]}
+\defineXMLargument [context:subsubsubsubject] [label=] {\subsubsubsubject[\XMLop{label}]}
+
+\defineXMLenvironment [context:frontmatter] \startfrontmatter \stopfrontmatter
+\defineXMLenvironment [context:bodymatter] \startbodymatter \stopbodymatter
+\defineXMLenvironment [context:backmatter] \startbackmatter \stopbackmatter
+\defineXMLenvironment [context:appendices] \startappendices \stopappendices
+
+\defineXMLargument [context:index] [key=]
+ {\doifelsenothingXMLop{key}{\index}{\expanded{\index[\XMLop{key}]}}}
+
+% \enableXMLfiledata
+
+% Needed for example (stickers and so):
+
+\defineXMLenvironment [context:makeup]
+ \startstandardmakeup \stopstandardmakeup
+
+\protect \endinput
+
+% TO DO
+
+\defineXMLenvironment [combination] [columns=2,rows=1]
+ {\scratchtoks\emptytoks
+ \expanded{\appendtoks \noexpand \startcombination
+ [\XMLop{columns}*\XMLop{rows}]}\to \scratchtoks}
+ {\appendtoks \stopcombination \to \scratchtoks
+ \the\scratchtoks}
+
+\defineXMLprocess[combinationentry]
+
+\defineXMLpickup [combinationitem]
+ {\appendtoks\bgroup}{\egroup\to\scratchtoks}
+
+\defineXMLpickup [combinationcaption]
+ {\appendtoks\bgroup}{\egroup\to\scratchtoks}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-corres.tex b/Master/texmf-dist/tex/context/base/x-corres.tex
new file mode 100644
index 00000000000..09c7263dc17
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-corres.tex
@@ -0,0 +1,136 @@
+%D \module
+%D [ file=x-corres,
+%D version=2003.12.15, % replaces keep-02a cum suis
+%D title=\CONTEXT\ XML Modules,
+%D subtitle=Handling Correspondence Base,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D The selection spec:
+
+\setvariables
+ [contacts]
+ [selection=,
+ file=x-corres.xml] % fall back
+
+%D First we define the group expansion pass:
+
+\startsetups[contacts:collect]
+
+ \defineXMLprocess [contacts]
+
+ \defineXMLignore [contact]
+
+ \defineXMLargument [contactfile]
+ \processfile
+
+ \defineXMLenvironmentsave [contactgroup] [label=]
+ {\startXMLmappinggroup[contacts]}
+ {\XMLaddcontactgrouptoselection
+ \stopXMLmappinggroup}
+
+\stopsetups
+
+%D Next we define the main processing pass:
+
+\startsetups[contacts:process]
+
+ \defineXMLprocess[contacts]
+
+ \defineXMLignore [contactgroup]
+
+ \defineXMLargument [contactfile]
+ \processfile
+
+ \defineXMLenvironmentsave[contact] [label=]
+ {\startXMLmappinggroup[contacts]}
+ {\XMLselectcontact
+ \stopXMLmappinggroup}
+
+\stopsetups
+
+\startXMLmapping[contacts]
+
+ \defineXMLsave [initials]
+ \defineXMLsave [formalname]
+ \defineXMLsave [informalname]
+ \defineXMLsave [title]
+ \defineXMLsave [prefix]
+ \defineXMLsave [suffix]
+ \defineXMLsave [telephone]
+ \defineXMLsave [mobiletelephone]
+ \defineXMLsave [telefax]
+ \defineXMLsave [email]
+ \defineXMLsave [address]
+ \defineXMLsave [information]
+
+ \defineXMLenvironment [p] \endgraf \endgraf
+
+ \defineXMLargument [member] \XMLaddcontacttoselection
+
+\stopXMLmapping
+
+%D The selection macros: we expand groups and replace them
+%D by contact labels in the selection spec.
+
+\def\XMLaddcontactgrouptoselection
+ {\edef\XMLcontactlist{\getvariable{contacts}{selection}}%
+ \edef\XMLgrouplabel {\XMLop{label}}%
+ \expanded{\doifinset{\XMLgrouplabel}{\XMLcontactlist}}
+ {\let\XMLgrouplist\empty
+ \XMLflush{contactgroup}%
+ \substituteincommalist\XMLgrouplabel\XMLgrouplist\XMLcontactlist
+ \expanded
+ {\globalsetvariables
+ [contacts]
+ [selection={\XMLcontactlist}]}}}
+
+\def\XMLaddcontacttoselection#1%
+ {\addtocommalist{#1}\XMLgrouplist}
+
+%D The main selector:
+
+\def\XMLselectcontact
+ {\edef\XMLcontactlist {\getvariable{contacts}{selection}}%
+ \edef\XMLcontactlabel{\XMLop{label}}%
+ \doifelsenothing{\XMLcontactlist}
+ {\donetrue}
+ {\expanded{\doifinsetelse{\XMLcontactlabel}{\XMLcontactlist}}
+ {\donetrue}
+ {\donefalse}}%
+ \ifdone
+ \XMLflush{contact}%
+ \setups[contact:handle]%
+ \fi}
+
+%D The default:
+
+\startsetups[contact:handle]
+
+ \XMLflush{address}
+
+\stopsetups
+
+\setups[contacts:process]
+
+%D Handy:
+
+\def\XMLprocesscontacts
+ {\dosingleempty\XMLprocesscontacts}
+
+\def\XMLprocesscontacts[#1]%
+ {\bgroup
+ \doifelsenothing{#1}
+ {\XMLprocesscontacts[\getvariable{contacts}{file}]}
+ {\setups[contacts:collect]%
+ \processcommacommand[#1]\processXMLfile
+ \setups[contacts:process]%
+ \processcommacommand[#1]\processXMLfile}%
+ \egroup}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-dir-01.tex b/Master/texmf-dist/tex/context/base/x-dir-01.tex
new file mode 100644
index 00000000000..b1056fdd527
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-dir-01.tex
@@ -0,0 +1,145 @@
+%D \module
+%D [ file=x-dir-01,
+%D version=2003.05.10, % around that time -)
+%D title=\CONTEXT\ Directory Handling,
+%D subtitle=Overview (1),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=middle,
+ height=middle,
+ backspace=12pt,
+ topspace=12pt,
+ bottomspace=32pt,
+ header=0pt,
+ footer=0pt,
+ bottomdistance=9pt,
+ bottom=18pt]
+
+\setupinteractionmenu
+ [bottom]
+ [state=start,
+ frame=off,
+ rightoffset=-3pt,
+ background=color,
+ backgroundcolor=TextColor,
+ middle=\hskip4pt,
+ left=\hfill]
+
+\startinteractionmenu[bottom]
+ \but [PreviousJump] Previous Jump \\
+ \but [previouspage] Previous Page \\
+ \but [nextpage] Next Page \\
+\stopinteractionmenu
+
+\setupbackgrounds
+ [page]
+ [backgroundoffset=3pt,
+ background=color,
+ backgroundcolor=PageColor]
+
+\setupbackgrounds
+ [text]
+ [background=color,
+ backgroundcolor=TextColor]
+
+\definecolor [PageColor] [r=.6,g=.7,b=.8]
+\definecolor [TextColor] [r=.7,g=.8,b=.9]
+\definecolor [DoneColor] [s=.5]
+
+\startmode[colorscheme-red]
+
+ \definecolor [PageColor] [r=.9,g=.7,b=.6]
+ \definecolor [TextColor] [r=.9,g=.8,b=.7]
+
+\stopmode
+
+\startmode[colorscheme-green]
+
+ \definecolor [PageColor] [r=.6,g=.8,b=.7]
+ \definecolor [TextColor] [r=.7,g=.9,b=.8]
+
+\stopmode
+
+\setupcolors
+ [state=start]
+
+\setupinteraction
+ [state=start,
+ menu=on,
+ color=,
+ display=new,
+ contrastcolor=DoneColor,
+ style=]
+
+\definehead
+ [directory]
+ [subject]
+
+\setuphead
+ [directory]
+ [style=\tfc]
+
+\setupbodyfont
+ [tt]
+
+\defineXMLenvironment [files] [url=]
+ {\doifelsenothing{\XMLop{url}}
+ {\xdef\XMLDIRurl{}}
+ {\xdef\XMLDIRurl{\XMLop{url}/}}
+ \startXMLignore}
+ {\stopXMLignore}
+
+\newcounter\NOfEntries
+
+\startsetups[xmldir:file]
+
+ \doglobal\increment\NOfEntries
+
+ \goto {\hbox to \hsize \bgroup
+
+ \XMLflush{base}
+ \hss
+ \hbox to 2em{\XMLflush{type}\hss}
+ \quad
+ \quad
+ \hbox to 5em{\hss\XMLflush{size}}
+ \quad
+ \quad
+ \XMLflush{date}
+
+ \egroup} [url(\XMLDIRurl\XMLop{name})]% [program(\XMLDIRurl\XMLop{name})]
+
+\stopsetups
+
+\defineXMLenvironment [directory] [name=]
+ {\directory{Path \XMLop{name}}}
+ {}
+
+\defineXMLenvironment [file] [name=]
+ {\bgroup}
+ {\setups[xmldir:file]
+ \endgraf
+ \egroup}
+
+\defineXMLsave[base]
+\defineXMLsave[type]
+\defineXMLsave[size]
+\defineXMLsave[date]
+
+\starttext
+
+ \processXMLfilegrouped{\inputfilename}
+
+ \ifnum\NOfEntries=0 There are no files found that match the pattern. \fi
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-fdf-00.tex b/Master/texmf-dist/tex/context/base/x-fdf-00.tex
new file mode 100644
index 00000000000..fd4bea7e74c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fdf-00.tex
@@ -0,0 +1,41 @@
+% <xfdf>
+% <fields>
+% <field name="one">
+% <value>first</value>
+% </field>
+% <field name="two">
+% <value>second</value>
+% </field>
+% </fields>
+% </xfdf>
+%
+% previous method:
+%
+% object
+% data
+% fields
+% field
+
+\defineXMLprocess[fdf:xfdf]
+\defineXMLprocess[fdf:fields]
+\defineXMLignore [fdf:f]
+\defineXMLpush [fdf:value]
+
+\defineXMLenvironment [fdf:field] [name=,value=]
+ {\XMLerase{fdf:value}}
+ {\gsaveXMLdata{fdf:\XMLop{name}}{fdf:value}}
+
+\defineXMLsingular [fdf:field] [name=,value=]
+ {\gsaveXMLasdata{fdf:\XMLop{name}}{\XMLop{value}}}
+
+\def\doifelseFDFfield#1{\doifelseXMLelement{fdf:#1}}
+\def\flushFDFfield #1{\flushXMLelement {fdf:#1}}
+\def\processFDFfield #1{\processXMLelement {fdf:#1}}
+
+\def\loadFDFfile#1%
+ {\bgroup
+ \autoXMLnamespace[fdf]%
+ \processXMLfilegrouped{#1}%
+ \egroup}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-fe.tex b/Master/texmf-dist/tex/context/base/x-fe.tex
new file mode 100644
index 00000000000..6e24417ac44
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fe.tex
@@ -0,0 +1,143 @@
+%D \module
+%D [ file=x-fe,
+%D version=2004.03.12, % based on earlier experiments
+%D title=\FOXET,
+%D subtitle=Simple Extensions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Extensions: fe:definecolor
+
+% menus
+% extra areas
+% protruding and hz
+% compound
+% title container
+% more float placements
+
+\unprotect
+
+% \XMLattributes{aural},
+
+\defineXMLnested
+ [fe:table-next]
+ [id=,
+ \XMLattributes{accessibility},
+ \XMLattributes{border-padding-background},
+ \XMLattributes{relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ visibility=]
+ {\bTABLEnext}
+ {\eTABLEnext}
+
+% definitions
+
+\defineXMLcommand
+ [fe:definecolor]
+ [name=,r=,g=,b=,c=,m=,y=,k=,s=,p=,a=,t=]
+ {\expanded{\definecolor[\XMLop{name}]
+ [r=\XMLop r,g=\XMLop g,b=\XMLop b,
+ c=\XMLop c,m=\XMLop m,y=\XMLop y,k=\XMLop k,
+ s=\XMLop s,p=\XMLop p,a=\XMLop a,t=\XMLop t]}}
+
+\defineXMLcommand
+ [fe:definefontsynonym]
+ [name=,file=,encoding=]
+ {\doifelsenothing{\XMLop{encoding}}
+ {\expanded{\definefontsynonym[\XMLop{name}][\XMLop{file}][encoding=\XMLop{encoding}]}}
+ {\expanded{\definefontsynonym[\XMLop{name}][\XMLop{file}]}}}
+
+%D Extensions: fe:include
+
+\defineXMLsingular
+ [fe:include]
+ [url=,n=1]
+ {\doifelse{\XMLop{n}}{1}
+ {\readfile{\XMLpar{fe:include}{url}{}}{}{}}
+ {\dorecurse{\XMLop{n}}{\readfile{\XMLpar{fe:include}{url}{}}{}{}\endgraf}}}
+
+%D Extensions: fe:sample
+
+\defineXMLenvironment
+ [fe:sample]
+ [origin=unknown]
+ {\removeunwantedspaces\ignorespaces}
+ {\removeunwantedspaces}
+
+%D Extensions: fe:
+
+% \defineXMLenvironmentsave
+% [fe:loop]
+% [n=1]
+% {}
+% {\dorecurse{\XMLop{n}}{\XMLflush{fe:loop}}}
+
+\defineXMLargument
+ [fe:loop]
+ [n=1]
+ {\dorecurse{\XMLop{n}}}
+
+%D Extensions: fe:compound
+
+\defineXMLsingular
+ [fe:compound]
+ [character=-]
+ {\prewordbreak\XMLop{character}\prewordbreak}
+
+%D Extensions: fe:message
+
+\defineXMLargument
+ [fe:message]
+ [category=XML-FO]
+ {\expanded{\writestatus{\XMLop{category}}}}
+
+%D Handy
+
+\defineXMLargument
+ [fe:trace]
+ [attribute=,option=]
+ {\showXMLinh{\XMLop{attribute}}%
+ \XMLval{fe:trace}{\XMLop{option}}{}}
+
+\mapXMLvalue
+ {fe:trace}
+ {font}
+ {\hbox\bgroup\infofont[%
+ \xFOfont/\xFOfontsize/\xFOfontsizeadjust/\xFOfontfamily/\xFOfontweight/\xFOfontstyle/\xFOfontvariant:\FOfontdefinition
+ ]\egroup}
+
+%D Extensions:
+
+\startsetups fe:page:option:fit:start
+ \startTEXpage[margin=page]
+\stopsetups
+
+\startsetups fe:page:option:fit:stop
+ \stopTEXpage
+\stopsetups
+
+\useMPlibrary[pre]
+
+\mapXMLvalue {fe:tracing} {true} {\tracingFOtrue}
+\mapXMLvalue {fe:tracing} {false} {\tracingFOfalse}
+\mapXMLvalue {fe:testgrid} {true} {\setupbackgrounds[page][background=pagegrid]}
+
+\startsetups fe:setup
+ \XMLval{fe:tracing} {\XMLop{fe:tracing}} {}
+ \XMLval{fe:testgrid}{\XMLop{fe:testgrid}}{}
+\stopsetups
+
+%D Private (testing)
+
+\defineXMLcommand[fe:synchronizeoutput]{\synchronizeoutput}
+
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-fig-00.tex b/Master/texmf-dist/tex/context/base/x-fig-00.tex
new file mode 100644
index 00000000000..858d23bf382
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fig-00.tex
@@ -0,0 +1,196 @@
+%D \module
+%D [ file=x-fig-00,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \readfile{x-res-04} \donothing \donothing \endinput
+
+% naast label, ook fig als ref en dan naar fig ref springen
+
+%D This module implements an interface to a figure database
+%D and file. The database is formatted in \XML\ conforming
+%D the following \DTD:
+%D
+%D \typefile{x-fig-00.dtd}
+%D
+%D A figure base coded this way looks like:
+%D
+%D \starttyping
+%D <!-- texexec --pdf --use=fig-01 figtest.xml -->
+%D
+%D <figurelibrary language="nl">
+%D
+%D <description>
+%D <organization>PRAGMA Advanced Document Engineering</organization>
+%D <project>Manuals</project>
+%D <product>Beginners Manual</product>
+%D <comment>A bunch of figures.</comment>
+%D </description>
+%D
+%D <figure>
+%D <file>koe.pdf</file>
+%D <label>a dutch cow</label>
+%D <copyright>Corel Draw Suite</copyright>
+%D <comment>I bet that you've seen this cow before.</comment>
+%D </figure>
+%D
+%D <figure>
+%D <dummy width="4cm" height="3cm">non existent</dummy>
+%D <label>a european cow</label>
+%D <copyright>Nobody</copyright>
+%D <comment>When will we talk about European cows?</comment>
+%D </figure>
+%D
+%D </figurelibrary>
+%D \stoptyping
+%D
+%D You can convert this base into a \PDF\ file using
+%D \TEXEXEC\ and another module in this suite.
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-make yourfile.xml
+%D \stoptyping
+%D
+%D You can now select a graphic from this file using the
+%D
+%D \starttyping
+%D \externalfigure[a dutch cow][width=4cm]
+%D \stoptyping
+%D
+%D This module overloads this command so that a figure is
+%D it first searched in the list of databases.
+%D
+%D \starttyping
+%D \usemodule [fig-base]
+%D \usefigurebases[yourfile]
+%D \stoptyping
+%D
+%D The special keyword \type {reset} can be used to reset
+%D this list.
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ usefigurebase: gebruikfiguurbestand usefigurebase
+ usefigurebase usefigurebase
+ usefigurebase usefigurebase
+
+\stopcommands
+
+\unprotect
+
+\consultutilityfilefalse
+
+\startXMLmapping [-] [figbase]
+
+\defineXMLprocess [figurelibrary]
+\defineXMLignore [description]
+\defineXMLignore [copyright]
+\defineXMLignore [comment]
+\defineXMLignore [status]
+\defineXMLpush [file]
+\defineXMLpush [label]
+\defineXMLpush [dummy]
+\defineXMLenvironment [figure] \figbase@StartFigure \figbase@StopFigure
+
+\stopXMLmapping
+
+\newcounter\figurefilepage
+
+\def\figbase@StartFigure
+ {\bgroup}
+
+\def\figbase@StopFigure
+ {\doglobal\increment\figurefilepage
+ \doif\askedlabel{\XMLpop{label}}
+ {\doglobal\settrue\figurefiledone
+ \xdef\figurefilename{\XMLpop{file}}\endinput}%
+ \egroup}
+
+\def\getfigurefilename#1#2%
+ {\startnointerference
+ \traceXMLelementsfalse
+ \startXMLmapping[-][figbase]
+ \resetfigurefilebase
+ \XMLerase{file}
+ \XMLerase{dummy}
+ \XMLerase{label}
+ \xdef\figurefilebase{#1}%
+ \doglobal\newcounter\figurefilepage
+ \def\askedlabel{#2}
+ \processcommacommand[\figurepathlist]\dogetfigurefilename
+ \stopXMLmapping
+ \stopnointerference}
+
+\globalletempty\figurebasepath
+
+\def\dogetfigurefilename#1%
+ {\ifx\figurefilename\empty
+ \bgroup
+ \xdef\figurefilebasepath{#1}%
+ \assignfullfilename{#1}\figurefilebase\to\filename
+ \expanded{\processXMLfilegrouped{\filename.xml}}%
+ \ifx\figurefilename\empty\else
+ \globallet\figurefilebase\figurefilebase
+ \fi
+ \egroup
+ \fi}
+
+\def\resetfigurefilebase
+ {\globalletempty\figurefilebase
+ \globalletempty\figurefilename
+ \globalletempty\figurefilebasepath
+ \globalletempty\figurefilepage}
+
+\let\normalcalculateexternalfigure\calculateexternalfigure
+
+\def\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
+ {\resetfigurefilebase
+ \ifx\figurebaselist\empty
+ \normalcalculateexternalfigure
+ [#1][#2][#3][#4][#5][#6]%
+ \else
+ \def\docommando##1%
+ {\getfigurefilename{##1}{#3}%
+ \ifx\figurefilename\empty\else\quitcommalist\fi}%
+ \processcommacommand[\figurebaselist]\docommando
+ \ifx\figurefilename\empty
+ \stripspaces\from#3\to\figurefilename % to be sure
+ \normalcalculateexternalfigure
+ [#1][#2][\figurefilename][#4][#5][#6]%
+ \else
+ \let\figurepathlist\figurefilebasepath
+ \normalcalculateexternalfigure
+ [#1][#2][\figurefilebase.pdf][\c!page=\figurefilepage,#4][#5][#6]%
+ \fi
+ \fi}
+
+\def\usefigurebase[#1]%
+ {\doifelse{#1}\v!reset
+ {\let\figurebaselist\empty}
+ {\addtocommalist{#1}\figurebaselist}}
+
+\let\figurebaselist\empty
+
+\resetfigurefilebase
+
+\protect \endinput
+
+\usefigurebase[figtest]
+
+\externalfigure[koetje] [width=3cm]
+\externalfigure[de molen op de dijk][width=3cm]
+\externalfigure[de molen op de dijk][width=2cm]
+\externalfigure[weet ik veel] [width=3cm]
+\externalfigure[weet ik veel] [width=2cm]
+\externalfigure[weet ik wat] [width=2cm]
+\externalfigure[koe] [width=2cm]
diff --git a/Master/texmf-dist/tex/context/base/x-fig-01.tex b/Master/texmf-dist/tex/context/base/x-fig-01.tex
new file mode 100644
index 00000000000..5d6c0fa3f32
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fig-01.tex
@@ -0,0 +1,457 @@
+%D \module
+%D [ file=x-fig-01,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \readfile {x-res-01} \donothing \donothing \endinput
+
+%D See \type {x-fig-00.tex} for more information on how to use
+%D and generate figure databases. This file loads the file
+%D named \type {\jobfilename} (\TEXEXEC\ will set this
+%D variable). You can apply this style to a database by
+%D saying:
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-make yourfile.xml
+%D \stoptyping
+%D
+%D The following modes are supported:
+%D
+%D \starttabulate[|lT|l|]
+%D \NC letter \NC map the preview on letter size \NC \NR
+%D \NC compact \NC use an alternative presentation \NC \NR
+%D \stoptabulate
+%D
+%D The resulting file has the following characteristics:
+%D
+%D \startitemize[packed]
+%D \item the document is split into three sections: first each
+%D figure is shown at its own page, then an overview of
+%D figures is shown with some data alongside, and
+%D finally an index and table of contents shows up
+%D \item there is no title page, which means that one can
+%D access a figure by page number without offset
+%D \item the document is opened at the first overview page,
+%D that is, when the viewer supports it
+%D \item the graphic is shown 3~times: on a page of its own,
+%D scaled to a fixed dimension, and relative to a4 or
+%D letter paper size
+%D \item the labels can be accessed in an index and list at
+%D the end of the document
+%D \stopitemize
+%D
+%D We use named destinations, which means that one can
+%D access a figure by name from an external application.
+
+\usemodule[fig-00]
+
+\setupoutput[pdftex] \overcomePDFspacefalse
+
+\doifnothing {\jobfilename} {\end}
+\doiffileelse {\jobfilename.xml} {} {\end}
+
+
+\def\StartDescription
+ {\bgroup
+ \defineXMLpush[organization]
+ \defineXMLpush[project]
+ \defineXMLpush[product]
+ \defineXMLpush[comment]}
+
+\def\StopDescription
+ {\subject {Figure collection}
+ \starttabulate[|lBe|p|]
+ \doifXMLdataelse{organization}
+ {\NC organization \NC \XMLpop{organization} \NC \NR}{}
+ \doifXMLdataelse{project}
+ {\NC project \NC \XMLpop{project} \NC \NR}{}
+ \doifXMLdataelse{product}
+ {\NC product \NC \XMLpop{product} \NC \NR}{}
+ \doifXMLdataelse{comment}
+ {\NC comment \NC \XMLpop{comment} \NC \NR}{}
+ \stoptabulate
+ \blank[2*big]
+ \egroup}
+
+\def\StartFigureA
+ {\bgroup
+ \defineXMLpush[file]
+ \XMLassign{file}{buffer}
+ \defineXMLpush[dummy]
+ \defineXMLpush[label]
+ \defineXMLpush[copyright]
+ \defineXMLpush[comment]
+ \defineXMLpush[status]}
+
+\defineoverlay[page][\overlaybutton{Description}]
+
+\startbuffer
+ \framed
+ [width=\XMLpar{dummy}{width}{12cm},
+ height=\XMLpar{dummy}{height}{8cm},
+ background=color,
+ backgroundcolor=gray,
+ foregroundcolor=darkred,
+ frame=off]
+ {\bf \XMLpop{dummy}}
+\stopbuffer
+
+\def\StopFigureA
+ {\doglobal\increment\CurrentPage
+ \setupbackgrounds[page][background=page]
+ \doifelsenothing{\XMLpop{label}}
+ {\expanded{\definereference[Description][about: \XMLpop{file}]}%
+ \pagereference[\XMLpop{file}]}
+ {\expanded{\definereference[Description][about: \XMLpop{label}]}%
+ \pagereference[\XMLpop{label}]}
+ \pagefigure[\XMLpop{file}]
+ \setupbackgrounds[page][background=]
+ \egroup}
+
+\def\StartFigureB
+ {\StartFigureA}
+
+\defineregister
+ [figureindex]
+ [figureindices]
+
+\setupregister
+ [figureindex]
+ [ownnumber=yes,
+ criterium=text,
+ interaction=text,
+ indicator=no]
+
+\definelist
+ [figurelist]
+
+\setuplist
+ [figurelist]
+ [criterium=text,
+ pagenumber=no,
+ width=2em,
+ interaction=all]
+
+\setupcolors
+ [state=start]
+
+\setuptolerance
+ [verytolerant]
+
+% Ugly:
+
+\startnotmode[previewpage-letter,previewpage-S6]
+ \enablemode[previewpage-A4]
+\stopnotmode
+
+\startmode[letter] % downward compatible
+ \enablemode[previewpage-letter]
+\stopmode
+
+%startbuffer[paper]
+\startsetups[paper]
+\startmode[previewpage-A4]
+ \framed
+ [width=210mm,height=297mm,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLpop{file}][reset=yes]}
+\stopmode
+\startmode[previewpage-letter]
+ \framed
+ [width=8.5in,height=11in,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLpop{file}][reset=yes]}
+\stopmode
+\startmode[previewpage-S6]
+ \framed
+ [width=600pt,height=450pt,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLpop{file}][reset=yes]}
+\stopmode
+\stopsetups
+%stopbuffer
+
+\setupbuttons
+ [offset=10pt,
+ width=broad,
+ strut=no,
+ rulethickness=1pt,
+ framecolor=darkred]
+
+\def\StopFigureB
+ {\par
+ \doglobal\increment\CurrentPage
+ \doifelsenothing{\XMLpop{label}}
+ {\expanded{\definereference[Figure][\XMLpop{file}]}%
+ \expanded{\definereference[GridPg][grid:\XMLpop{file}]}}
+ {\expanded{\definereference[Figure][\XMLpop{label}]}%
+ \expanded{\definereference[GridPg][grid:\XMLpop{label}]}}%
+ \button % content in setup
+ {\hbox to \hsize
+ {\forgetall \dontcomplain
+ \doifelsenothing{\XMLpop{label}}
+ {\pagereference[about: \XMLpop{file}]}
+ {\pagereference[about: \XMLpop{label}]}%
+ % moved here, because descriptions may be absent
+ \ifnum\CurrentPage=1 \pagereference[begin]\fi
+ %
+ \expanded{\writetolist[figurelist]{\CurrentPage}{\XMLpop{label}}}%
+ \expanded{\figureindex{\CurrentPage}{\XMLpop{label}}}%
+ \startnotmode[compact]%
+ \vbox to 100pt
+ {\hsize30pt
+ \vskip5pt
+ \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}%
+ \vfill}%
+ \advance\hsize by -30pt
+ \stopnotmode
+ \startmode[compact]%
+ \advance\hsize by -10pt
+ \hskip10pt
+ \stopmode
+ \button % \framed
+ [width=150pt,height=100pt,offset=10pt,frame=off,
+ background=color,backgroundcolor=white,color=]
+ {\externalfigure
+ [\XMLpop{file}]
+ [maxheight=80pt,frame=off,maxwidth=130pt,factor=max]}%
+ [GridPg]%
+ \freezedimenmacro\naturalfigurewidth \let\FigWid\naturalfigurewidth
+ \freezedimenmacro\naturalfigureheight\let\FigHei\naturalfigureheight
+ \advance\hsize by -150pt
+ \hskip10pt
+ \advance\hsize by -10pt
+ \vbox to 100pt
+ {\hsize40pt
+ %\externalfigure
+ % [paper]
+ % [type=buffer,frame=on,
+ % framecolor=darkred,rulethickness=.5pt,
+ % width=40pt,object=no]
+ \framed
+ [offset=overlay,
+ framecolor=darkred,
+ rulethickness=.5pt]
+ {\scale[width=40pt]{\setups[paper]}}% {\disableXML\getbuffer[paper]}}%
+ \startmode[compact]%
+ \vfill
+ \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}%
+ \stopmode
+ \vfill}%
+ \advance\hsize by -40pt
+ \hskip10pt
+ \advance\hsize by -10pt
+ \vbox to 100pt
+ {\blank[disable]
+ \starttabulate[|Bel|p|]
+ \NC file \NC \XMLpop{file} \NC \NR
+ \doifXMLdata{label}
+ {\NC label \NC \XMLpop{label} \NC \NR}
+ \NC w$\times$h \NC \FigWid$\times$\FigHei \NC \NR
+ \doifXMLdata{copyright}
+ {\NC copyright \NC \XMLpop{copyright} \NC \NR}
+ \doifXMLdata{status}
+ {\doifelse{\XMLpop{status}}{obsolete}
+ {\NC status \NC \bf\darkred\XMLpop{status} \NC \NR}
+ {\NC status \NC \XMLpop{status} \NC \NR}}
+ \doifXMLdata{comment}
+ {\NC comment \NC \XMLpop{comment} \NC \NR}
+ \stoptabulate
+ \vfill}}}%
+ [Figure]
+ \vskip10pt
+ \egroup}
+
+\def\StartFigureC
+ {\StartFigureA}
+
+\def\StopFigureC
+ {\doglobal\increment\NumberOfFigures
+ \egroup}
+
+\setuplayout
+ [topspace=15pt,backspace=15pt,
+ header=0pt,footer=0pt,bottom=20pt,bottomdistance=10pt,
+ width=middle,height=fit]
+
+\setupbackgrounds
+ [page]
+ [background=,
+ backgroundcolor=gray]
+
+\setupinteractionscreen
+ [width=max,
+ height=max]
+
+\setupcolors
+ [state=start]
+
+\setupinteraction
+ [style=,
+ color=,
+ contrastcolor=,
+ state=start]
+
+\setuphead
+ [section]
+ [style=bfb]
+
+\setupbodyfont
+ [pos]
+
+\setupinteractionmenu
+ [bottom]
+ [left=\hfill,
+ middle=\hskip10pt,
+ frame=off,
+ style=bold,
+ background=color,
+ backgroundcolor=darkred,
+ foregroundcolor=white]
+
+\startinteractionmenu[bottom]
+ \but [begin] begin \\
+ \but [index] index \\
+ \but [list] list \\
+ \but [CloseDocument] close \\
+ \but [PreviousJump] go back \\
+\stopinteractionmenu
+
+\setupinteraction
+ [openaction=begin]
+
+\defineXMLenvironment [figurelibrary] \StartLibrary \StopLibrary
+
+\starttext
+
+\def\StartLibrary{\mainlanguage[\XMLpar{figurelibrary}{language}{en}]}
+\def\StopLibrary {}
+
+\defineXMLignore [description]
+\defineXMLenvironment [figure] \StartFigureC \StopFigureC
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfilename.xml}
+
+\increment\NumberOfFigures
+
+\defineXMLignore [description]
+\defineXMLenvironment [figure] \StartFigureA \StopFigureA
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfilename.xml}
+
+\setuppapersize
+ [S6][S6]
+
+\setupbackgrounds
+ [page]
+ [background=color]
+
+\setupinteraction
+ [menu=on]
+
+\defineXMLenvironment [description] \StartDescription \StopDescription
+\defineXMLenvironment [figure] \StartFigureB \StopFigureB
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfilename.xml} \page
+
+\subject [list] {List of figures}
+
+\placelist[figurelist] \page
+
+\subject [index] {Index of figures}
+
+\startcolumns
+\placeregister[figureindex]
+\stopcolumns
+
+\doifmodeelse{clipgrid-distance,clipgrid-steps}{\page}{\stoptext}
+
+\startuniqueMPgraphic{clipgrid}{dx,dy,nx,ny,type}
+ numeric gdx, gdy, lbx, lby ;
+ if \MPvar{type}=1 :
+ gdx := \MPvar{dy} ;
+ gdy := \MPvar{dx} ;
+ else :
+ gdx := OverlayWidth /\MPvar{nx} ;
+ gdy := OverlayHeight/\MPvar{ny} ;
+ fi ;
+ lbx := gdx ;
+ lby := gdy ;
+ defaultfont := "\truefontname{Mono}" ;
+ defaultscale := .5 ;
+ numeric pen ; pen := .25pt ;
+ def MyGrid text t =
+ draw vlingrid (0,OverlayWidth ,gdy,OverlayWidth ,OverlayHeight) t ;
+ draw hlingrid (0,OverlayHeight,gdx,OverlayHeight,OverlayWidth ) t ;
+ enddef ;
+ pickup pencircle scaled pen ;
+ MyGrid withcolor white ;
+ MyGrid dashed evenly scaled pen ;
+ draw OverlayBox withcolor white ;
+ draw OverlayBox dashed evenly scaled pen ;
+ draw vlinlabel.bot(0,eps+OverlayWidth /lby,2,OverlayWidth ) ;
+ draw hlinlabel.lft(0,eps+OverlayHeight/lbx,2,OverlayHeight) ;
+ setbounds currentpicture to OverlayBox enlarged (2*EmWidth) ;
+\stopuniqueMPgraphic
+
+\presetMPvariable[clipgrid][dx=10pt]
+\presetMPvariable[clipgrid][dy=10pt]
+\presetMPvariable[clipgrid][nx=10]
+\presetMPvariable[clipgrid][ny=10]
+
+\startmode[clipgrid-distance]
+ \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=1}]
+\stopmode
+
+\startmode[clipgrid-steps]
+ \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=2}]
+\stopmode
+
+\setupexternalfigures
+ [background={color,foreground,grid},
+ backgroundcolor=white]
+
+\def\StartFigureD
+ {\StartFigureA}
+
+\def\StopFigureD
+ {\doglobal\increment\CurrentPage
+ \setupbackgrounds[page][background=page]
+ \startpagefigure[\XMLpop{file}][offset=20pt]%
+ \doifelsenothing{\XMLpop{label}}
+ {\expanded{\definereference[Description][about: \XMLpop{file}]}%
+ \pagereference[grid:\XMLpop{file}]}
+ {\expanded{\definereference[Description][about: \XMLpop{label}]}%
+ \pagereference[grid:\XMLpop{label}]}
+ \stoppagefigure
+ %\pagefigure[\XMLpop{file}][offset=20pt]
+ \setupbackgrounds[page][background=]
+ \egroup}
+
+\defineXMLignore
+ [description]
+
+\defineXMLenvironment
+ [figure]
+ \StartFigureD
+ \StopFigureD
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfilename.xml} \page
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-fig-02.tex b/Master/texmf-dist/tex/context/base/x-fig-02.tex
new file mode 100644
index 00000000000..22d49d27adf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fig-02.tex
@@ -0,0 +1,78 @@
+%D \module
+%D [ file=x-fig-02,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Inclusion (I),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \readfile {x-res-02} \donothing \donothing \endinput
+
+%D This module enables non||\ConTeXt\ users to access the
+%D database. For this, you need to run
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-fake yourfile.xml
+%D \stoptyping
+%D
+%D The resulting file, \type {yourfile.fig}, can be loaded
+%D in the normal way. The figures can be accessed with:
+%D
+%D \starttyping
+%D \getfigurefile{label}
+%D \getfigurepage{label}
+%D \stoptyping
+%D
+%D A a bonus, the following macro is defined:
+%D
+%D \starttyping
+%D \includefigurefile width 10cm {label}
+%D \stoptyping
+
+\usemodule[fig-00]
+
+\doifnothing {\jobfilename} {\end}
+\doiffileelse {\jobfilename.xml} {} {\end}
+
+\defineXMLenvironment [figurelibrary] \StartLibrary \StopLibrary
+\defineXMLignore [description]
+\defineXMLenvironment [figure] \StartFigure \StopFigure
+
+\def\StartLibrary
+ {\immediate\openout \scratchwrite=\jobfilename.fig
+ \immediate\write\scratchwrite{\string\input\space x-fig-03.tex \string\relax}
+ \immediate\write\scratchwrite{}}
+
+\def\StopLibrary
+ {\immediate\write\scratchwrite{}
+ \immediate\write\scratchwrite{\string\endinput}
+ \immediate\closeout\scratchwrite}
+
+\def\StartFigure
+ {\defineXMLpush[file]
+ \defineXMLpush[dummy]
+ \defineXMLpush[label]
+ \defineXMLpush[copyright]
+ \defineXMLpush[comment]
+ \defineXMLpush[status]}
+
+\def\StopFigure
+ {\doglobal\increment\CurrentPage
+ \immediate\write\scratchwrite
+ {\string\setfiguredata\space
+ {\XMLpop{label}}
+ {\jobfilename}
+ {\CurrentPage}}}
+
+\doglobal\newcounter\CurrentPage
+
+\starttext
+
+\processXMLfilegrouped{\jobfilename.xml}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-fig-03.tex b/Master/texmf-dist/tex/context/base/x-fig-03.tex
new file mode 100644
index 00000000000..bf5ea226cff
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fig-03.tex
@@ -0,0 +1,44 @@
+%D \module
+%D [ file=x-fig-03,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Inclusion (II),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx \undefined \convertMPtoPDF \input supp-pdf.tex \fi
+\ifx \undefined \includefigurefile \else \expandafter \endinput \fi
+
+\gdef\getfigurefile#1%
+ {\expandafter\ifx\csname x-fig-f-#1\endcsname\relax
+ \currentfigurefile
+ \else
+ \csname x-fig-f-#1\endcsname
+ \fi}
+
+\gdef\getfigurepage#1%
+ {\expandafter\ifx\csname x-fig-p-#1\endcsname\relax
+ 1%
+ \else
+ \csname x-fig-p-#1\endcsname
+ \fi}
+
+\gdef\setfiguredata#1#2#3%
+ {\gdef\currentfigurefile{#2}%
+ \expandafter\gdef\csname x-fig-f-#1\endcsname{#2}%
+ \expandafter\gdef\csname x-fig-p-#1\endcsname{#3}}
+
+\def\includefigurefile#1#%
+ {\doincludefigurefile{#1}}
+
+\def\doincludefigurefile#1#2%
+ {\edef\next{\noexpand\pdfimage
+ #1 page \getfigurepage{#2} {\getfigurefile{#2}.pdf}}%
+ \next}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-fo.tex b/Master/texmf-dist/tex/context/base/x-fo.tex
new file mode 100644
index 00000000000..1ce18e509d2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-fo.tex
@@ -0,0 +1,4061 @@
+%D \module
+%D [ file=x-fo,
+%D version=2004.03.12, % based on earlier experiments
+%D title=\FOXET,
+%D subtitle=Formatting Objects,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% \showframe
+
+% This is a first implementation, maybe I will write another one with mixed
+% element indifferent vars and something 'when set, act upon it, and forget',
+% for instance: in each element check if font set, if so, change font and
+% reset font attributes. I'm not sure if this is wise.
+
+% todo: global assignment in order to limit restore
+% todo: combine mp graphics (see end) saves 30%
+% todo: using contants and variables (for internal use)
+
+% todo: language at more levels
+
+% beware: aftergroup vs egroup/endgroup
+
+\input xtag-run
+
+\unprotect
+
+% syst-new.tex
+
+\long\def\unstringed#1% " ' space
+ {\csname\ifcsname @u@s@#1\endcsname @u@s@#1\else\s!empty\fi\endcsname#1}
+
+\long\setvalue{@u@s@"}#1#2"{#2}
+\long\setvalue{@u@s@'}#1#2'{#2}
+\long\setvalue{@u@s@ }#1#2 {#2}
+
+% xtag-ini
+
+\def\letXMLpar #1#2{\@EA \let\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLpar #1#2{\@EA \def\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLepar#1#2{\@EA\edef\csname\@@XMLvariable:#1:#2\endcsname}
+
+\protect
+
+%D Most time went into figuring out the specifications, especially
+%D because there are no examples included. Samples that circulate on the
+%D web are often border cases and torture test and don't have much to do
+%D with real live. Another complication lays in the inheritance model:
+%D some of the attributes are inherited. This also leaves some room for
+%D interpretation, for instance do values that are used at a certain
+%D point migrate downwards or not.
+%D
+%D The \CONTEXT\ \XML handler can deal with attributes in several ways
+%D and for this purpose I have played with a few experimental mechanisms
+%D just to end up with the existing begin/end mechanism combined with
+%D a recursive attribute resolver which means that one has to implicitly
+%D ask for an inherited attributes. This approach is probably one of the
+%D most efficient ways of dealing with formatting objects in \CONTEXT,
+%D unless of course I start adding rather specific support to the kernel.
+%D
+%D This module is rather experimental. More information about its usage
+%D can be found in the \FOXET\ manual.
+
+%D Since we're not dealing with the fine points of typesetting here, we
+%D can safely ignore \TEX's warnings about overful or underful boxes.
+
+\dontcomplain
+
+%D We will use fonts that have the characters in the normal (ascii)
+%D slots. We will also use the stupid verbatim handler.
+
+\chardef\XMLtokensreduction = 2
+\chardef\XMLcdatamethod = 2
+
+%D For the purpose of testing.
+
+\startmode[fo-verbose]
+ \def\writeFOstatus{\writestatus{XML-FO}}
+\stopmode
+
+\startnotmode[fo-verbose]
+ \let\writeFOstatus\gobbleoneargument
+\stopnotmode
+
+%D For the moment we stick to utf-8.
+
+\useXMLfilter[utf]
+
+%D This will be sorted out later (esp in relation to mathml).
+
+\setupbodyfont[pos,10pt]
+
+%D There are a couple of predefined colors. Don't ask me why, but
+%D formatting objects are not a fresh start but a mix of existing
+%D technologies. Color support is poluted by cascading stylesheets.
+%D
+%D Because hexadecimal color specifications are not enabled by
+%D default, this feature has to be enables by loading the appropriate
+%D color module. Here we define colors in \RGB\ values because we
+%D don't want to loose accuracy.
+
+\setupcolors[state=start] \setupcolor[hex]
+
+\definecolor [black] [s=0] % [h=000000]
+\definecolor [gray] [s=.5] % [h=808080]
+\definecolor [silver] [s=.75] % [h=C0C0C0]
+\definecolor [white] [s=1] % [h=FFFFFF]
+\definecolor [maroon] [r=.5] % [h=800000]
+\definecolor [red] [r=1] % [h=FF0000]
+\definecolor [purple] [r=.5,b=.5] % [h=800080]
+\definecolor [fuchsia] [r=1,b=1] % [h=FF00FF]
+\definecolor [green] [g=.5] % [h=008000]
+\definecolor [lime] [g=1] % [h=00FF00]
+\definecolor [olive] [r=.5,g=.5] % [h=808000]
+\definecolor [yellow] [r=1,g=1] % [h=FFFF00]
+\definecolor [navy] [r=1,g=1] % [h=000080]
+\definecolor [blue] [b=1] % [h=0000FF]
+\definecolor [teal] [g=.5,b=.5] % [h=008080]
+\definecolor [aqua] [g=1,b=1] % [h=00FFFF]
+
+%D The layout is rather basic. Of the 25 available areas we
+%D only use the text area. Maybe some day I will plug in a
+%D more dedicated page builder.
+
+\setuplayout
+ [backspace=0pt,
+ topspace=0pt,
+ header=0pt,
+ footer=0pt,
+ width=middle,
+ height=middle,
+ % marking=on,
+ location=middle]
+
+\setuppagenumbering
+ [alternative={doublesided,singlesided}, % sic
+ location=]
+
+\setuptolerance
+ [verytolerant,stretch]
+
+%D We will position the regions using layers.
+
+\definelayer[regions][width=\paperwidth,height=\paperheight]
+
+\definelayer[xsl-region-before]
+\definelayer[xsl-region-after]
+\definelayer[xsl-region-start]
+\definelayer[xsl-region-end]
+\definelayer[xsl-region-body]
+
+\setupbackgrounds[page][background=regions]
+
+%D We now enter the part of this module where the action takes
+%D place. As usual we provide some tracing options.
+
+\newif\iftracingFO \readsysfile{page-run}\donothing\donothing
+
+%D We will organize the attribute definitions in a similar fashion as in
+%D the specification. Unfortunately there are more sets defined in there
+%D than are actually used, so the definitions later on will look a bit
+%D messy.
+%D
+%D Quite some attributes can be inherited, which means that they can
+%D end up in all elements and influence those way down the tree.
+
+\defineXMLattributeset
+ [fo:inherited]
+
+%D The properties:
+
+% \defineXMLattributeset
+% [fe:tracing]
+% [tracing=]
+
+\defineXMLattributeset
+ [fo:accessibility]
+ [source-document=none,
+ role=none]
+
+\defineXMLattributeset
+ [fo:absolute-position]
+ [absolute-position=auto,
+ top=auto,
+ right=auto,
+ bottom=auto,
+ left=auto]
+
+% \defineXMLattributeset
+% [fo:aural]
+% [azitmuth=,
+% cue-after=,
+% cue-before=,
+% elevation=,
+% pause-after=,
+% pause-before=,
+% pitch=,
+% pitch-range=,
+% play-during=,
+% richness=,
+% speak=,
+% speak-header=,
+% speak-numeral=,
+% speak-punctuation=,
+% speech-rate=,
+% stress=,
+% voice-family=,
+% volume=]
+
+\defineXMLattributeset
+ [fo:border-padding-background]
+ [background-attachment=scroll,
+ background-color=transparent,
+ background-image=none,
+ background-repeat=repeat,
+ background-position-horizontal=left,
+ background-position-vertical=top,
+ border-color=transparent,
+ border-style=none,
+ border-width=medium,
+ background-position=,
+ border-top=,
+ border-bottom=,
+ border-left=,
+ border-right=,
+ border-before-color=\XMLop{border-color},
+ border-before-style=\XMLop{border-style},
+ border-before-width=\XMLop{border-width},
+ border-after-color=\XMLop{border-color},
+ border-after-style=\XMLop{border-style},
+ border-after-width=\XMLop{border-width},
+ border-start-color=\XMLop{border-color},
+ border-start-style=\XMLop{border-style},
+ border-start-width=\XMLop{border-width},
+ border-end-color=\XMLop{border-color},
+ border-end-style=\XMLop{border-style},
+ border-end-width=\XMLop{border-width},
+ border-top-color=\XMLop{border-before-color},
+ border-top-style=\XMLop{border-before-style},
+ border-top-width=\XMLop{border-before-width},
+ border-bottom-color=\XMLop{border-after-color},
+ border-bottom-style=\XMLop{border-after-style},
+ border-bottom-width=\XMLop{border-after-width},
+ border-left-color=\XMLop{border-start-color},
+ border-left-style=\XMLop{border-start-style},
+ border-left-width=\XMLop{border-start-width},
+ border-right-color=\XMLop{border-end-color},
+ border-right-style=\XMLop{border-end-style},
+ border-right-width=\XMLop{border-end-width},
+ padding=,% 0pt,
+ padding-before=0pt,%\XMLop{padding},
+ padding-after=0pt,%\XMLop{padding},
+ padding-start=0pt,%\XMLop{padding},
+ padding-end=0pt,%\XMLop{padding},
+ padding-top=\XMLop{padding-before},
+ padding-bottom=\XMLop{padding-after},
+ padding-left=\XMLop{padding-start},
+ padding-right=\XMLop{padding-end}]
+
+\extendXMLattributeset
+ [fo:border-padding-background]
+ [fe:background-height=,
+ fe:background-width=]
+
+\defineXMLattributeset
+ [fo:font]
+ []
+
+\extendXMLattributeset
+ [fo:inherited]
+ [font=,
+ font-family=,% Times,
+ font-selection-strategy=,
+ font-size=,% 12pt,
+ font-size-adjust=, % 1,
+ font-style=, % normal,
+ font-variant=, % normal,
+ font-weight=] % normal]
+
+\defineXMLattributeset
+ [fo:hyphenation]
+ []
+
+\extendXMLattributeset
+ [fo:inherited]
+ [country=,
+ language=,
+ script=,
+ hyphenate=,
+ hyphenation-character=,
+ hyphenation-push-character-count=,
+ hyphenation-remain-character-count=]
+
+\defineXMLattributeset
+ [fo:margin-block]
+ [margin=, % 0pt,
+ margin-top=0pt,% \XMLop{margin},
+ margin-bottom=0pt,% \XMLop{margin},
+ margin-left=0pt,% \XMLop{margin},
+ margin-right=0pt,% \XMLop{margin},
+ space-before=0pt,
+ space-after=0pt,
+ space-before.precedence=,
+ space-before.conditionality=,
+ space-before.minimum=,
+ space-before.optimum=,
+ space-before.maximum=,
+ space-after.precedence=,
+ space-after.conditionality=,
+ space-after.minimum=,
+ space-after.optimum=,
+ space-after.maximum=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [start-indent=,
+ end-indent=]
+
+\defineXMLattributeset
+ [fo:margin-inline]
+ [space-start=,
+ space-end=]
+
+\defineXMLattributeset
+ [fo:relative-position]
+ [relative-position=,
+ top=auto,
+ right=auto,
+ bottom=auto,
+ left=auto]
+
+\defineXMLattributeset
+ [fo:area-alignment]
+ [alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ dominant-baseline=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [display-align=,
+ relative-align=]
+
+\defineXMLattributeset
+ [fo:area-dimension]
+ [block-progression-dimension=,
+ inline-progression-dimension=,
+ content-height=,
+ content-width=,
+ height=,
+ width=,
+ max-height=,
+ max-width=,
+ min-height=,
+ min-width=,
+ scaling=,
+ scaling-method=]
+
+\defineXMLattributeset
+ [fo:block-and-line]
+ []
+
+\extendXMLattributeset
+ [fo:inherited]
+ [hyphenation-keep=,
+ hyphenation-ladder-count=,
+ last-line-end-indent=,
+ line-height=,
+ line-height-shift-adjustment=,
+ line-stacking-strategy=,
+ linefeed-treatment=,
+ white-space-treatment=,
+ text-align=,
+ text-align-last=,
+ text-indent=,
+ white-space-collapse=,
+ wrap-option=]
+
+\defineXMLattributeset
+ [fo:character]
+ [character=,
+ suppress-at-line-break=,
+ text-decoration=,
+ text-shadow=,
+ treat-as-word-space=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [letter-spacing=,
+ text-transform=,
+ word-spacing=]
+
+\defineXMLattributeset
+ [fo:color]
+ [color-profile-name=,
+ rendering-intent=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [color=]
+
+\defineXMLattributeset
+ [fo:float]
+ [clear=,
+ float=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [intrusion-displace=]
+
+\defineXMLattributeset
+ [fo:keeps-and-breaks]
+ [break-after=,
+ break-before=,
+ keep-with-next.within-line=,
+ keep-with-next.within-column=,
+ keep-with-next.within-page=,
+ keep-with-previous.within-line=,
+ keep-with-previous.within-column=,
+ keep-with-previous.within-page=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [keep-together.within-line=,
+ keep-together.within-column=,
+ keep-together.within-page=,
+ orphans=,
+ widows=]
+
+\defineXMLattributeset
+ [fo:layout]
+ [clip=,
+ overflow=
+ span=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [reference-orientation=]
+
+\defineXMLattributeset
+ [fo:leader-and-rule]
+ []
+
+\extendXMLattributeset
+ [fo:inherited]
+ [leader-alignment=,
+ leader-pattern=,
+ leader-pattern-width=,
+ leader-pattern-width=,
+ leader-length=,
+ rule-style=,
+ rule-thickness=]
+
+\defineXMLattributeset
+ [fo:dynamic-effects]
+ [active-state=,
+ case-name=,
+ case-title=,
+ destination-placement-offset=,
+ external-destination=,
+ indicate-destination=,
+ internal-destination=,
+ show-destination=,
+ starting-state=,
+ switch-to=,
+ target-presentation-context=,
+ target-processing-context=,
+ target-stylesheet=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [auto-restore=]
+
+\defineXMLattributeset
+ [fo:markers]
+ [marker-class-name=,
+ retrieve-class-name=,
+ retrieve-position=,
+ retrieve-boundary=]
+
+\defineXMLattributeset
+ [fo:number-to-string]
+ [country=,
+ language=,
+ format=,
+ grouping-separator=,
+ grouping-size=,
+ letter-value=]
+
+% \defineXMLattributeset
+% [fo:pagination-and-layout]
+% [black-or-not-blank=,
+% column-count=1,
+% column-gap=12pt,
+% extent=,
+% flow-name=,
+% force-page-count=,
+% initial-page-number=,
+% master-name=,
+% master-reference=,
+% maximum-repeats=,
+% media-usage=,
+% odd-or-even=,
+% page-height=,
+% page-position=,
+% page-width=,
+% precedence=,
+% region-name=]
+
+\defineXMLattributeset
+ [fo:table]
+ [border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ column-number=,
+ column-width=,
+ ends-row=,
+ number-columns-repeated=,
+ number-columns-spanned=,
+ number-rows-spanned=,
+ starts-row=,
+ table-layout=,
+ table-omit-footer-at-break=,
+ table-omit-header-at-break=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [border-collapse=,
+ border-separation=,
+ caption-side=,
+ empty-cells=]
+
+\defineXMLattributeset
+ [fo:writing-mode]
+ [%text-altitude=,
+ %text-depth=,
+ unicode-bidi=]
+
+\extendXMLattributeset % for practical reasons we inherit along the whole chain
+ [fo:inherited] % unless we implement relax skipping
+ [text-altitude=,
+ text-depth=]
+
+\extendXMLattributeset
+ [fo:inherited]
+ [direction=,
+ glyph-orientation-horizontal=,
+ glyph-orientation-vertical=,
+ writing-mode=]
+
+\defineXMLattributeset
+ [fo:list-block]
+ []
+
+\extendXMLattributeset
+ [fo:inherited]
+ [provisional-label-separation=,
+ provisional-distance-between-starts=]
+
+% \starttext
+% \setuplayout[topspace=1cm,height=middle,header=0pt,footer=0pt]
+% \setupbodyfont[small,tt]
+% \expanded{\processcommalist[\XMLattributeset{fo:inherited}]}\endgraf
+% \stoptext
+
+% content-type
+% id
+
+% ref-id
+% score-spaces % inherited
+% src
+% visibility % inherited
+% z-index
+
+% shorthands:
+%
+% background
+% background-position
+% border
+% border-bottom
+% border-left
+% border-top
+% border-right
+% border-style
+% border-color
+% border-spacing % inherited
+% border-width
+% cue
+% font % inherited
+% margin
+% padding
+% page-break-after
+% page-break-before
+% page-break-inside % inherited
+% pause
+% position
+% size
+% vertical-align
+% white-space % inherited
+
+%D We will speed up the process of setting up attributes by compiling the
+%D definitions. Sometimes we need to access attributes explicitly by
+%D element (for instance when handling regions). We also need to deal
+%D with nested elements (for instance blocks) or a sequence of similar
+%D ones, while we may not always want to use grouping. As a result, the
+%D next series of definitions and macros are quite ugly. The begin|/|end
+%D is needed in order to comfortably fetch attribute values from
+%D ancestors.
+
+\startXMLcompiling[inherit]
+
+%D Element: fo:root
+
+%D todo: set defaults here
+
+\defineXMLenvironment
+ [fo:root]
+ [\XMLattributeset{fo:inherited},
+leader-pattern=spaces,
+leader-pattern-width=12pt,
+ media-usage=]
+ {\directsetup{fo:root:start}}
+ {\directsetup{fo:root:stop}}
+
+\startsetups fo:root:start
+ \starttext \beginXMLelement \startXMLignore
+ \doifsomething{\XMLop{language}}{\mainlanguage[\XMLop{language}]}% todo, everywhere
+\stopsetups
+
+\startsetups fo:root:stop
+ \stopXMLignore \endXMLelement \stoptext
+\stopsetups
+
+%D Element: fo:declarations
+
+\defineXMLprocess
+ [fo:declarations]
+
+%D Element: fo:color-profile
+
+\defineXMLignore
+ [fo:color-profile]
+ [src=,
+ color-profile-name=,
+ rendering-intent=]
+
+%D Element: fo:page-sequence
+
+% master-name and master-reference are often mixed up in examples
+
+\defineXMLenvironment
+ [fo:page-sequence]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:number-to-string},
+ initial-page-number=auto,
+ master-reference=any,
+ force-page-count=auto]
+ {\beginXMLelement\directsetup{fo:page-sequence:start}}
+ {\directsetup{fo:page-sequence:stop}\endXMLelement}
+
+\mapXMLvalue {fo:page-initial} {auto} {\relax}
+\mapXMLvalue {fo:page-initial} {auto-odd} {\ifodd\pageno \expanded{\setuppagenumber[number=\the\dimexpr(\pageno+1)]}\fi}
+\mapXMLvalue {fo:page-initial} {auto-even} {\ifodd\pageno\else\expanded{\setuppagenumber[number=\the\dimexpr(\pageno+1)]}\fi}
+
+% todo: blokkeer left/right/etc in geval van blank
+
+\mapXMLvalue {fo:page-start} {auto} {\page}
+\mapXMLvalue {fo:page-start} {even} {\page\setuplayout[blank]\page[even]}
+\mapXMLvalue {fo:page-start} {odd} {\page\setuplayout[blank]\page[odd]}
+\mapXMLvalue {fo:page-end} {end-on-even} {\page\setuplayout[blank]\page[even]}
+\mapXMLvalue {fo:page-end} {end-on-odd} {\page\setuplayout[blank]\page[odd]}
+\mapXMLvalue {fo:page-start} {no-force} {\page}
+
+\startsetups fo:page-sequence:start
+
+ % we're still in the previous page-sequence
+
+ \XMLval{fo:page-start}{\XMLop{force-page-count}}{\page} \begingroup
+
+ \directsetup{fe:setup}
+
+ \iftracingFO \showframe[text] \fi
+
+ \xdef\SavedPageNumber{\the\realpageno}
+
+ % now we enter the new page-sequence
+
+ % todo: check on number
+
+ \doifXMLvalelse{fo:page-initial}{\XMLop{initial-page-number}}
+ {\XMLval{fo:page-initial}{\XMLop{initial-page-number}}{}}
+ {\doifnot{\XMLop{initial-page-number}}{auto}
+ {\expanded{\setuppagenumber[number=\XMLop{initial-page-number}]}}}
+
+ \doifsomething{\XMLpar{fo:page-sequence}{master-reference}{}}
+ {\doifelseXMLelement{fo:page-sequence-master:\XMLpar{fo:page-sequence}{master-reference}{}}
+ {%[starting page sequence master: \XMLpar{fo:page-sequence}{master-reference}{}]\endgraf
+ \flushXMLelement{fo:page-sequence-master:\XMLpar{fo:page-sequence}{master-reference}{}}}
+ {%[starting simple page master: \XMLpar{fo:page-sequence}{master-reference}{any}]\endgraf
+ \flushXMLelement{fo:simple-page-master:\XMLpar{fo:page-sequence}{master-reference}{any}}}}
+
+ \doif{\XMLpar{fo:simple-page-master-do}{fe:option}{}}{fit}
+ {\directsetup{fe:page:option:fit:start}}
+
+ \doifnot{\XMLpar{fo:region-body}{column-count}{1}}{1}
+ {\directsetup{fo:columns:start}}
+
+\stopsetups
+
+\startsetups fo:page-sequence:stop
+
+ \doifnot{\XMLpar{fo:region-body}{column-count}{1}}{1}
+ {\directsetup{fo:columns:stop}}
+
+ \doif{\XMLpar{fo:simple-page-master-do}{fe:option}{}}{fit}
+ {\directsetup{fe:page:option:fit:stop}}
+
+ % \XMLval{fo:page-end}{\XMLop{force-page-count}}{\page} \endgroup
+
+ \ifnum\SavedPageNumber=\realpageno
+
+ \ifdim\pagetotal<.5\textheight \null \vfill \fi % force a page with only containers
+
+ \fi
+
+ \XMLval{fo:page-end}{\XMLpar{fo:page-sequence}{force-page-count}{}}{\page} \endgroup
+
+\stopsetups
+
+\newdimen\FOcolumngap
+
+\startsetups fo:columns:start
+
+ \FOcolumngap\textwidth
+
+ \setpercentdimen\FOcolumngap{\XMLpar{fo:region-body}{column-gap}{12pt}}
+
+ % we need to freeze the lineheight here
+
+ \expanded{\definecolumnset
+ [fo:set]
+ [n=\XMLpar{fo:region-body}{column-count}{1},
+ distance=\FOcolumngap]}
+
+ \expanded{\definecolumnsetspan
+ [fo:set]
+ [n=\XMLpar{fo:region-body}{column-count}{1}]}
+
+ \directsetup{fo:font:setup} % else problems
+
+ \directsetup{fo:line-height:setup}
+
+% \parseXMLattributes{fo:flow}{line-height='normal'}
+
+ \startcolumnset[fo:set]
+
+ % \startcolumns[\XMLpar{fo:region-body}{column-count}{1}]
+
+\stopsetups
+
+\startsetups fo:columns:stop
+
+ % \stopcolumns
+
+ \stopcolumnset
+
+\stopsetups
+
+%D Element: fo:layout-master-set
+
+\defineXMLprocess
+ [fo:layout-master-set]
+
+%D Element: fo:page-sequence-master
+
+\defineXMLenvironmentsave
+ [fo:page-sequence-master]
+ [\XMLattributeset{fo:inherited},
+ master-name=any]
+ {}
+ {%[saved page sequence master: \XMLop{master-name}]\endgraf
+ \gsaveXMLdatainelement
+ {fo:page-sequence-master:\XMLop{master-name}}
+ {fo:page-sequence-master-do}
+ {fo:page-sequence-master}}
+
+\defineXMLprocess
+ [fo:page-sequence-master-do]
+ [\XMLattributeset{fo:inherited}]
+
+%D Element: fo:single-page-master-reference
+
+% makeup - one page
+
+\defineXMLcommand
+ [fo:single-page-master-reference]
+ [master-reference=any]
+ {\flushXMLelement{fo:simple-page-master:\XMLop{master-reference}}}
+
+%D Element: fo:repeatable-page-master-reference
+
+\defineXMLcommand
+ [fo:repeatable-page-master-reference]
+ [master-reference=any,
+ maximum-repeats=]
+ {\flushXMLelement{fo:simple-page-master:\XMLop{master-reference}}}
+
+%D Element: fo:repeatable-page-master-alternatives
+
+\defineXMLprocess
+ [fo:repeatable-page-master-alternatives]
+ [maximum-repeats=]
+
+%D Element: fo:conditional-page-master-reference
+
+% page-position : first last rest any
+% odd-or-even : odd even any
+% blank-or-not-blank : blank not-blank
+
+% The page-position default is needed (else possible loops)
+
+\defineXMLcommand
+ [fo:conditional-page-master-reference]
+ [master-reference=any,
+ page-position=\XMLpar{fo:conditional-page-master-reference}{master-reference}{any},
+ blank-or-not-blank=,
+ odd-or-even=]
+ {\flushXMLelement{fo:simple-page-master:\XMLpar{fo:conditional-page-master-reference}{master-reference}{}}}
+
+%D Element: fo:simple-page-master
+
+% first-page left-page right-page blank-page
+
+% default dimensions
+
+\defineXMLenvironmentsave
+ [fo:simple-page-master]
+ [master-name=any]
+ {}
+ {%[saved simple page master: \XMLop{master-name}]\endgraf
+ \gsaveXMLdatainelement
+ {fo:simple-page-master:\XMLop{master-name}}
+ {fo:simple-page-master-do}
+ {fo:simple-page-master}}
+
+% reference-orientation=0deg,
+% writing-mode=
+
+\defineXMLenvironment
+ [fo:simple-page-master-do]
+ [\XMLattributeset{fo:inherited}, % added
+ \XMLattributeset{fo:margin-block},
+ page-height=29.7cm,
+ page-width=21cm]
+ {\directsetup{fo:simple-page-master:start}}
+ {\directsetup{fo:simple-page-master:stop}}
+
+% not needed any more:
+
+\mapXMLvalue {fo:reference-orientation} {0deg} {0}
+\mapXMLvalue {fo:reference-orientation} {90deg} {90}
+\mapXMLvalue {fo:reference-orientation} {180deg} {180}
+\mapXMLvalue {fo:reference-orientation} {270deg} {270}
+\mapXMLvalue {fo:reference-orientation} {-90deg} {270}
+\mapXMLvalue {fo:reference-orientation} {-180deg} {180}
+\mapXMLvalue {fo:reference-orientation} {-270deg} {90}
+
+\startsetups fo:simple-page-master:start
+
+ % nothing
+
+\stopsetups
+
+% can be low level tex
+
+\startsetups fo:simple-page-master:stop
+
+ \writeFOstatus{defining papersize '\directsetup{fo:layout:kind}'}
+
+ \expanded
+ {\definepapersize
+ [\directsetup{fo:layout:kind}]
+ [width=\XMLop{page-width},
+ height=\XMLop{page-height}]}
+
+ \checkFOpadding {fo:region-body}
+ \checkFOmargin {fo:region-body}
+ \checkFOmargin {fo:simple-page-master-do}
+
+ \writeFOstatus{defining layout '\directsetup{fo:layout:kind}'}
+
+ \FOscratchMT\paperheight \setpercentdimen\FOscratchMT{\XMLpar{fo:simple-page-master-do}{margin-top} \zeropoint}
+ \FOscratchMB\paperheight \setpercentdimen\FOscratchMB{\XMLpar{fo:simple-page-master-do}{margin-bottom}\zeropoint}
+ \FOscratchML\paperwidth \setpercentdimen\FOscratchML{\XMLpar{fo:simple-page-master-do}{margin-left} \zeropoint}
+ \FOscratchMR\paperwidth \setpercentdimen\FOscratchMR{\XMLpar{fo:simple-page-master-do}{margin-right} \zeropoint}
+
+ \FOscratchRB\paperheight \setpercentdimen\FOscratchRB{\XMLpar{fo:region-body}{margin-top} \zeropoint}
+ \FOscratchRA\paperheight \setpercentdimen\FOscratchRA{\XMLpar{fo:region-body}{margin-bottom}\zeropoint}
+ \FOscratchRS\paperwidth \setpercentdimen\FOscratchRS{\XMLpar{fo:region-body}{margin-left} \zeropoint}
+ \FOscratchRE\paperwidth \setpercentdimen\FOscratchRE{\XMLpar{fo:region-body}{margin-right} \zeropoint}
+
+ \FOscratchPB\paperheight \setpercentdimen\FOscratchPB{\XMLpar{fo:region-body}{padding-top} \zeropoint}
+ \FOscratchPA\paperheight \setpercentdimen\FOscratchPA{\XMLpar{fo:region-body}{padding-bottom}\zeropoint}
+ \FOscratchPS\paperwidth \setpercentdimen\FOscratchPS{\XMLpar{fo:region-body}{padding-left} \zeropoint}
+ \FOscratchPE\paperwidth \setpercentdimen\FOscratchPE{\XMLpar{fo:region-body}{padding-right} \zeropoint}
+
+ \expanded
+ {\definelayout
+ [\directsetup{fo:layout:kind}]
+ [ page={\directsetup{fo:layout:kind},\XMLval{fo:reference-orientation}{\XMLop{reference-orientation}}{}},
+ paper=\directsetup{fo:layout:kind},
+ backspace=\the\dimexpr(\FOscratchML+\FOscratchPS+\FOscratchRS),
+ cutspace=\the\dimexpr(\FOscratchMR+\FOscratchPE+\FOscratchRE),
+ topspace=\the\dimexpr(\FOscratchMT+\FOscratchPB+\FOscratchRB),
+ bottomspace=\the\dimexpr(\FOscratchMB+\FOscratchPA+\FOscratchRA)]}
+
+ \expanded{\setuplayout[\directsetup{fo:layout:kind}]}
+
+ % this is a nasty bit of code: this local setup stores some data that
+ % needs to be used later
+
+ \startexpanded
+ \noexpand \startlocalsetups[layout:\directsetup{fo:layout:kind}]
+ \noexpand \writeFOstatus{processing simple page master '\XMLpar{fo:simple-page-master-do}{master-name}{any}'}
+ \noexpand \resetsetups[fo:simple-page-master:start]
+ \noexpand \resetsetups[fo:simple-page-master:stop]
+ \noexpand \flushXMLelement{fo:simple-page-master:\XMLpar{fo:simple-page-master-do}{master-name}{any}}
+ \noexpand \stoplocalsetups
+ \stopexpanded
+
+\stopsetups
+
+% \defineXMLcommand[fo:simple-page-master-do-do]
+% {\writeFOstatus{setting up master \XMLop{master-name} in page body}}
+
+%D Element: fo:region-body
+
+% display-align=,
+% reference-orientation=,
+% writing-mode=,
+
+\defineXMLcommand % or process
+ [fo:region-body]
+ [\XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ fe:z-order=above,
+ clip=,
+ column-count=1,
+ column-gap=12pt,
+ overflow=,
+ region-name=]
+ {\directsetup{fo:region-body:process}}
+
+\startsetups fo:region-body:process
+ \writeFOstatus{refreshing region-body parameters}
+\stopsetups
+
+% todo: naar realfolio handelen ipv folio
+
+\mapXMLvalue {fo:odd-or-even} {odd} {odd}
+\mapXMLvalue {fo:odd-or-even} {even} {even}
+
+\mapXMLvalue {fo:page-position} {any} {rest} % todo
+\mapXMLvalue {fo:page-position} {first} {current}
+\mapXMLvalue {fo:page-position} {last} {last} % todo
+\mapXMLvalue {fo:page-position} {rest} {rest} % todo
+
+%mapXMLvalue {fo:blank-or-not-blank} {any} {} % todo
+%mapXMLvalue {fo:blank-or-not-blank} {not-blank} {} % todo
+%mapXMLvalue {fo:blank-or-not-blank} {blank} {} % todo
+
+% check this one esp default value
+
+\startsetups fo:layout:kind
+
+ \XMLpav
+ {fo:odd-or-even}
+ {fo:conditional-page-master-reference}
+ {odd-or-even}
+ {\XMLpav
+ {fo:page-position}
+ {fo:conditional-page-master-reference}
+ {page-position}
+ {\XMLpar{fo:page-sequence-master}{master-reference}{any}}}
+
+\stopsetups
+
+% common border things
+
+% clip
+% display-align
+% extent
+% overflow
+% precedence
+% region-name
+% reference-orientation
+% writing-mode
+
+%D Element: fo:region-before fo:region-after fo:region-start fo:region-end
+
+% border-before-color : <color> | inherit
+% border-before-style : <border style> | inherit
+% border-before-width.length|conditional : <border width> | <length conditional> | inherit
+%
+% style: none hidden dotted dashed solid double groove ridge inset outset
+% width: thin medium thick length
+
+\mapXMLvalue {fo:display-align} {auto} {before} % todo: related to relative-align
+\mapXMLvalue {fo:display-align} {before} {high}
+\mapXMLvalue {fo:display-align} {after} {low}
+\mapXMLvalue {fo:display-align} {center} {lohi}
+
+% display-align=,
+% reference-orientation=,
+% writing-mode=,
+
+\defineXMLcommand % will become process when stable
+ [fo:region-before]
+ [\XMLattributeset{fo:border-padding-background},
+ clip=,
+ extent=,
+ overflow=,
+ precedence=,
+ region-name=]
+ {\directsetup{fo:region-before:process}}
+
+\startsetups fo:region-before:process
+ \writeFOstatus{refreshing region-before parameters}
+\stopsetups
+
+\defineXMLprocess
+ [fo:region-after]
+ [\XMLattributeset{fo:border-padding-background},
+ clip=,
+ extent=,
+ overflow=,
+ precedence=,
+ region-name=]
+
+\defineXMLprocess
+ [fo:region-start]
+ [\XMLattributeset{fo:border-padding-background},
+ clip=,
+ extent=,
+ overflow=,
+ region-name=]
+
+\defineXMLprocess
+ [fo:region-end]
+ [\XMLattributeset{fo:border-padding-background},
+ clip=,
+ extent=,
+ overflow=,
+ region-name=]
+
+\mapXMLvalue {fo:border-style} {none} {0}
+\mapXMLvalue {fo:border-style} {hidden} {1}
+\mapXMLvalue {fo:border-style} {dotted} {2}
+\mapXMLvalue {fo:border-style} {dashed} {3}
+\mapXMLvalue {fo:border-style} {solid} {4}
+\mapXMLvalue {fo:border-style} {double} {5}
+\mapXMLvalue {fo:border-style} {groove} {6}
+\mapXMLvalue {fo:border-style} {ridge} {7}
+\mapXMLvalue {fo:border-style} {inset} {8}
+\mapXMLvalue {fo:border-style} {outset} {9}
+
+\mapXMLvalue {fo:border-width} {thin} {.25pt}
+\mapXMLvalue {fo:border-width} {medium} {.5pt}
+\mapXMLvalue {fo:border-width} {thick} {1pt}
+
+\startsetups fo:regions:check
+
+ \startprocesscommalist[body,before,after,start,end]
+
+ \checkFOborder{fo:region-\currentcommalistitem}{bottom}
+ \checkFOborder{fo:region-\currentcommalistitem}{top}
+ \checkFOborder{fo:region-\currentcommalistitem}{left}
+ \checkFOborder{fo:region-\currentcommalistitem}{right}
+
+ \checkhexcolor[\XMLpar{fo:region-\currentcommalistitem}{border-bottom-color}{}]
+ \checkhexcolor[\XMLpar{fo:region-\currentcommalistitem}{border-top-color}{}]
+ \checkhexcolor[\XMLpar{fo:region-\currentcommalistitem}{border-left-color}{}]
+ \checkhexcolor[\XMLpar{fo:region-\currentcommalistitem}{border-right-color}{}]
+
+ \checkhexcolor[\XMLpar{fo:region-\currentcommalistitem}{background-color}{}]
+
+ \checkFOposition{fo:region-\currentcommalistitem}{background}
+ \checkFOpadding {fo:region-\currentcommalistitem}
+ \checkFOmargin {fo:region-\currentcommalistitem}
+
+ \stopprocesscommalist
+
+\stopsetups
+
+%D Element: fo:flow
+
+\defineXMLenvironment
+ [fo:flow]
+ [\XMLattributeset{fo:inherited},
+ flow-name=unknown]
+ {\beginXMLelement\directsetup{fo:flow:start}}
+ {\directsetup{fo:flow:stop}\endXMLelement}
+
+\startsetups fo:flow:start
+ \begingroup
+\stopsetups
+
+\startsetups fo:flow:stop
+ \endgroup
+\stopsetups
+
+%D Element: fo:static-content
+
+% \beginXMLelement \endXMLelement - maybe save with attributes
+
+\defineXMLenvironmentsave
+ [fo:static-content]
+ [flow-name=unknown]
+ {}
+ {\directsetup{fo:static-content:process}}
+
+\startsetups fo:static-content:process
+
+ \gsaveXMLdata{fo:static-content:\XMLop{flow-name}}{fo:static-content}
+
+\stopsetups
+
+\newdimen\FOscratchML \newdimen\FOscratchMR \newdimen\FOscratchMT \newdimen\FOscratchMB
+\newdimen\FOscratchPB \newdimen\FOscratchPA \newdimen\FOscratchPS \newdimen\FOscratchPE
+\newdimen\FOscratchRB \newdimen\FOscratchRA \newdimen\FOscratchRS \newdimen\FOscratchRE
+
+\mapXMLvalue {fo:background-repeat} {no-repeat} {0}
+\mapXMLvalue {fo:background-repeat} {repeat} {1}
+\mapXMLvalue {fo:background-repeat} {repeat-x} {2}
+\mapXMLvalue {fo:background-repeat} {repeat-y} {3}
+
+\expanded {\mapXMLvalue {fo:background-location} {left} {0\letterpercent}}
+\expanded {\mapXMLvalue {fo:background-location} {right} {100\letterpercent}}
+\expanded {\mapXMLvalue {fo:background-location} {top} {0\letterpercent}}
+\expanded {\mapXMLvalue {fo:background-location} {bottom} {100\letterpercent}}
+\expanded {\mapXMLvalue {fo:background-location} {center} {50\letterpercent}}
+
+\newdimen\FObgpositionH
+\newdimen\FObgpositionV
+
+\def\FObackgroundimage#1#2#3%
+ {\doifnot{\XMLpar{fo:#1}{background-image}{none}}{none}
+ {\setFOimagename{\XMLpar{fo:#1}{background-image}{dummy}}%
+ \FObgpositionH#2%
+ \setpercentdimen\FObgpositionH{\XMLpav
+ {fo:background-location}
+ {fo:#1}
+ {background-position-horizontal}
+ {\XMLpar{fo:#1}{background-position-horizontal}{}}}%
+ \ifpercentdimendone
+ \skip0\zeropoint plus \FObgpositionH
+ \skip2\zeropoint plus \dimexpr(#2-\FObgpositionH)%
+ \else
+ \skip0\FObgpositionH
+ \skip2\zeropoint plus 1fill\relax
+ \fi
+ \FObgpositionV#3%
+ \setpercentdimen\FObgpositionV{\XMLpav
+ {fo:background-location}{fo:#1}{background-position-vertical}
+ {\XMLpar{fo:#1}{background-position-vertical}{}}}%
+ \ifpercentdimendone
+ \skip4\zeropoint plus \FObgpositionV
+ \skip6\zeropoint plus \dimexpr(#3-\FObgpositionV)%
+ \else
+ \skip4\FObgpositionV
+ \skip6\zeropoint plus 1fill\relax
+ \fi
+ \vbox to #3 \bgroup
+ \vskip\skip4\relax
+ \hbox to #2 \bgroup
+ \hskip\skip0\relax
+ \backgroundimage
+ {\XMLpav{fo:background-repeat}{fo:#1}{background-repeat}{}}{#2}{#3}%
+ {\externalfigure
+ [\FOimagename]
+ [width=\XMLpar{fo:#1}{fe:background-width}{},
+ height=\XMLpar{fo:#1}{fe:background-height}{}]}%
+ \hskip\skip2\relax
+ \egroup
+ \vskip\skip6\relax
+ \egroup}}
+
+\def\checkFOclipping#1%
+ {\doifsomething{\XMLpar{#1}{clip}{}}
+ {\analyzefunction{\XMLpar{#1}{clip}{}}%
+ \doif\functionname{rect}
+ {\def\postprocessframebox##1%
+ {\edef\next{\dimen0=\the\wd##1\dimen2=\the\ht##1\dimen4=\the\dp##1}%
+ \setbox##1\hbox
+ {\clip % expanded?
+ [topoffset=-\functionA,
+ bottomoffset=-\functionC,
+ leftoffset=-\functionD,
+ rightoffset=-\functionB]
+ {\box##1}}%
+ \next}}}}
+
+\def\clipFOarea#1%
+ {\doifsomething{\XMLpar{#1}{clip}{}}%
+ {\analyzefunction{\XMLpar{#1}{clip}{}}%
+ \doif\functionname{rect}
+ {\setbox\scratchbox\hbox{\foregroundbox}%
+ \edef\next{\dimen0=\the\wd\scratchbox\dimen2=\the\ht\scratchbox\dimen4=\the\dp\scratchbox}%
+ \setbox\scratchbox\hbox
+ {\clip % expanded?
+ [topoffset=-\functionA,
+ bottomoffset=-\functionC,
+ leftoffset=-\functionD,
+ rightoffset=-\functionB]
+ {\box\scratchbox}}%
+ \next
+ \box\scratchbox}}}
+
+\defineoverlay
+ [text]
+ [\clipFOarea{fo:region-body}]
+
+\setupbackgrounds
+ [text]
+ [background=text]
+
+\def\FOregionbuilder#1#2#3#4#5#6% #1=location #2=preset #3=x #4=y #5=width #6=height
+ {\writeFOstatus{building region #1}%
+ \defineoverlay
+ [image]
+ [{\framed
+ [frame=off,
+ orientation=\XMLpav{fo:reference-orientation}{fo:#1}{reference-orientation}{0},
+ offset=overlay,
+ height=\overlayheight,
+ width=\overlaywidth]
+ {\FObackgroundimage{#1}\hsize\vsize}}]%
+ \setlayerframed
+ [regions]
+ [preset=#2,x=\dimexpr(#3),y=\dimexpr(#4)]
+ [frame=off,
+ offset=overlay,background={#1-graphic,image,xsl-#1},
+ width=\dimexpr(#5),height=\dimexpr(#6)]
+ {\lrtbbox
+ {\XMLpar{fo:#1}{padding-left}\zeropoint}%
+ {\XMLpar{fo:#1}{padding-right}\zeropoint}%
+ {\XMLpar{fo:#1}{padding-top}\zeropoint}%
+ {\XMLpar{fo:#1}{padding-bottom}\zeropoint}%
+ {\checkFOclipping{fo:#1}%
+ \framed
+ [frame=off,
+ offset=overlay,
+ orientation=\XMLpav{fo:reference-orientation}{fo:#1}{reference-orientation}{0},
+ align={\XMLpav{fo:display-align}{fo:#1}{display-align}{high},\XMLpav{fo:align-key}{fo:#1}{text-align}{normal}},
+ width=\hsize,height=\vsize]
+ {\doFObeforeskip{fo:#1}%
+ \flushXMLelement{fo:static-content:\XMLpar{fo:#1}{region-name}{xsl-#1}}}%
+ \doFOafterskip{fo:#1}}}}
+
+\startsetups fo:regions:process
+
+ \directsetup{fo:regions:check}
+
+ \checkFOmargin{fo:simple-page-master-do}
+
+ \FOscratchMT\paperheight \setpercentdimen\FOscratchMT{\XMLpar{fo:simple-page-master-do}{margin-top} \zeropoint}
+ \FOscratchMB\paperheight \setpercentdimen\FOscratchMB{\XMLpar{fo:simple-page-master-do}{margin-bottom}\zeropoint}
+ \FOscratchML\paperwidth \setpercentdimen\FOscratchML{\XMLpar{fo:simple-page-master-do}{margin-left} \zeropoint}
+ \FOscratchMR\paperwidth \setpercentdimen\FOscratchMR{\XMLpar{fo:simple-page-master-do}{margin-right} \zeropoint}
+
+ \doif{\XMLpar{fo:region-body}{fe:z-order}{above}}{below}{\directsetup{fo:regions:process:body}}
+
+ \FOscratchRB\paperheight \setpercentdimen\FOscratchRB{\XMLpar{fo:region-before}{extent}\zeropoint}
+ \FOscratchRA\paperheight \setpercentdimen\FOscratchRA{\XMLpar{fo:region-after} {extent}\zeropoint}
+ \FOscratchRS\paperwidth \setpercentdimen\FOscratchRS{\XMLpar{fo:region-start} {extent}\zeropoint}
+ \FOscratchRE\paperwidth \setpercentdimen\FOscratchRE{\XMLpar{fo:region-end} {extent}\zeropoint}
+
+ \doifelse{\XMLpar{fo:region-before}{precedence}{false}}{true}
+ {\doifelse{\XMLpar{fo:region-after}{precedence}{false}}{true}
+ {\directsetup{fo:regions:process:true:true}}
+ {\directsetup{fo:regions:process:true:false}}}
+ {\doifelse{\XMLpar{fo:region-after}{precedence}{false}}{true}
+ {\directsetup{fo:regions:process:false:true}}
+ {\directsetup{fo:regions:process:false:false}}}
+
+ \doif{\XMLpar{fo:region-body}{fe:z-order}{above}}{above}{\directsetup{fo:regions:process:body}}
+
+\stopsetups
+
+\newdimen\FOscratchEB
+\newdimen\FOscratchEA
+
+\chardef\FOregionmode\zerocount
+
+\startmode[fo-pt]
+ \chardef\FOregionmode\plusone % fotex mode -)
+\stopmode
+
+\startsetups fo:regions:modes
+
+ \ifcase\FOregionmode
+ \FOscratchEB\zeropoint
+ \FOscratchEA\zeropoint
+ \or
+ \FOscratchEB\paperheight \setpercentdimen\FOscratchEB{\XMLpar{fo:region-before}{extent}\zeropoint}
+ \FOscratchEA\paperheight \setpercentdimen\FOscratchEA{\XMLpar{fo:region-after} {extent}\zeropoint}
+ \else
+ \FOscratchEB\zeropoint
+ \FOscratchEA\zeropoint
+ \fi
+
+\stopsetups
+
+\startsetups fo:regions:process:body
+
+ \bgroup
+
+ \FOscratchRB\paperheight \setpercentdimen\FOscratchRB{\XMLpar{fo:region-body}{margin-top} \zeropoint}
+ \FOscratchRA\paperheight \setpercentdimen\FOscratchRA{\XMLpar{fo:region-body}{margin-bottom}\zeropoint}
+ \FOscratchRS\paperwidth \setpercentdimen\FOscratchRS{\XMLpar{fo:region-body}{margin-left} \zeropoint}
+ \FOscratchRE\paperwidth \setpercentdimen\FOscratchRE{\XMLpar{fo:region-body}{margin-right} \zeropoint}
+
+ \FOregionbuilder
+ {region-body}
+ {lefttop}
+ {\FOscratchML+\FOscratchRS}
+ {\FOscratchMT+\FOscratchRA}
+ {\paperwidth -\FOscratchML-\FOscratchMR-\FOscratchRS-\FOscratchRE}
+ {\paperheight-\FOscratchMT-\FOscratchMB-\FOscratchRB-\FOscratchRA}
+
+ \egroup
+
+\stopsetups
+
+\startsetups fo:regions:process:true:true
+
+ \directsetup{fo:regions:modes}
+
+ \ifdim\FOscratchRB>\zeropoint \FOregionbuilder
+ {region-before}{lefttop}
+ {\FOscratchML}{\FOscratchMT-\FOscratchEB}
+ {\paperwidth-\FOscratchML-\FOscratchMR}{\FOscratchRB}
+ \fi \ifdim\FOscratchRA>\zeropoint \FOregionbuilder
+ {region-after}{leftbottom}
+ {\FOscratchML}{\FOscratchMB-\FOscratchEA}
+ {\paperwidth-\FOscratchML-\FOscratchMR}{\FOscratchRA}
+ \fi \ifdim\FOscratchRS>\zeropoint \FOregionbuilder
+ {region-start}{lefttop}
+ {\FOscratchML}{\FOscratchMT+\FOscratchRB}
+ {\FOscratchRS}{\paperheight-\FOscratchMT-\FOscratchMB-\FOscratchRA-\FOscratchRB}
+ \fi \ifdim\FOscratchRE>\zeropoint \FOregionbuilder
+ {region-end}{righttop}
+ {\FOscratchMR}{\FOscratchMT+\FOscratchRA}
+ {\FOscratchRE}{\paperheight-\FOscratchMT-\FOscratchMB-\FOscratchRA-\FOscratchRB}
+ \fi
+
+\stopsetups
+
+\startsetups fo:regions:process:false:true
+
+ \directsetup{fo:regions:modes}
+
+ \ifdim\FOscratchRB>\zeropoint \FOregionbuilder
+ {region-before}{lefttop}
+ {\FOscratchML+\FOscratchRS}{\FOscratchMT-\FOscratchEB}
+ {\paperwidth-\FOscratchML-\FOscratchMR-\FOscratchRS-\FOscratchRE}{\FOscratchRB}
+ \fi \ifdim\FOscratchRA>\zeropoint \FOregionbuilder
+ {region-after}{leftbottom}
+ {\FOscratchML}{\FOscratchMB-\FOscratchEA}
+ {\paperwidth-\FOscratchML-\FOscratchMR}{\FOscratchRA}
+ \fi \ifdim\FOscratchRS>\zeropoint \FOregionbuilder
+ {region-start}{lefttop}
+ {\FOscratchML}{\FOscratchMT}
+ {\FOscratchRS}{\paperheight-\FOscratchMB-\FOscratchRA-\FOscratchRB}
+ \fi \ifdim\FOscratchRE>\zeropoint \FOregionbuilder
+ {region-end}{righttop}
+ {\FOscratchMR}{\FOscratchMT}
+ {\FOscratchRE}{\paperheight-\FOscratchMB-\FOscratchRA-\FOscratchRB}
+ \fi
+
+\stopsetups
+
+\startsetups fo:regions:process:true:false
+
+ \directsetup{fo:regions:modes}
+
+ \ifdim\FOscratchRB>\zeropoint \FOregionbuilder
+ {region-before}{lefttop}
+ {\FOscratchML}{\FOscratchMT-\FOscratchEB}
+ {\paperwidth-\FOscratchML-\FOscratchMR}{\FOscratchRB}
+ \fi \ifdim\FOscratchRA>\zeropoint \FOregionbuilder
+ {region-after}{leftbottom}
+ {\FOscratchML+\FOscratchRS}{\FOscratchMB-\FOscratchEA}
+ {\paperwidth-\FOscratchML-\FOscratchMR-\FOscratchRS-\FOscratchRE}{\FOscratchRA}
+ \fi \ifdim\FOscratchRS>\zeropoint \FOregionbuilder
+ {region-start}{lefttop}
+ {\FOscratchML}{\FOscratchMT+\FOscratchRB}
+ {\FOscratchRS}{\paperheight-\FOscratchMT-\FOscratchMB-\FOscratchRB}
+ \fi \ifdim\FOscratchRE>\zeropoint \FOregionbuilder
+ {region-end}{righttop}
+ {\FOscratchMR}{\FOscratchMT+\FOscratchRA}
+ {\FOscratchRE}{\paperheight-\FOscratchMT-\FOscratchMB-\FOscratchRB}
+ \fi
+
+\stopsetups
+
+\startsetups fo:regions:process:false:false
+
+ \directsetup{fo:regions:modes}
+
+ \ifdim\FOscratchRB>\zeropoint \FOregionbuilder
+ {region-before}{lefttop}
+ {\FOscratchML+\FOscratchRS}{\FOscratchMT-\FOscratchEB}
+ {\paperwidth-\FOscratchML-\FOscratchMR-\FOscratchRS-\FOscratchRE}{\FOscratchRB}
+ \fi \ifdim\FOscratchRA>\zeropoint \FOregionbuilder
+ {region-after}{leftbottom}
+ {\FOscratchML+\FOscratchRS}{\FOscratchMB-\FOscratchEA}
+ {\paperwidth-\FOscratchML-\FOscratchMR-\FOscratchRS-\FOscratchRE}{\FOscratchRA}
+ \fi \ifdim\FOscratchRS>\zeropoint \FOregionbuilder
+ {region-start}{lefttop}
+ {\FOscratchML}{\FOscratchMT}
+ {\FOscratchRS}{\paperheight-\FOscratchMT-\FOscratchMB}
+ \fi \ifdim\FOscratchRE>\zeropoint \FOregionbuilder
+ {region-end}{righttop}
+ {\FOscratchMR}{\FOscratchMT}
+ {\FOscratchRE}{\paperheight-\FOscratchMT-\FOscratchMB}
+ \fi
+
+\stopsetups
+
+\startsetups fo:before:each:page
+
+ \writeFOstatus{setting up layout \currentlayout}
+ \directsetup{layout:\currentlayout}
+ \directsetup{fo:regions:process}
+
+\stopsetups
+
+\prependtoks
+ \directsetup{fo:before:each:page}%
+\to \everybeforepagebody
+
+%D Element: fo:title
+
+% \XMLattributeset{fo:aural},
+% color=,
+% line-height=,
+
+\defineXMLignore
+ [fo:title]
+ [\XMLattributeset{fo:inherited},\XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:margin-inline},
+ visibility=]
+
+%D Element: fo:block
+
+\defineXMLenvironment
+ [fo:block]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:hyphenation},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:relative-position},
+ \XMLattributeset{fo:keeps-and-breaks},
+% text-depth=,
+% text-altitude=,
+ span=,
+ visibility=]
+ {\beginXMLelement\directsetup{fo:block:start}}
+ {\directsetup{fo:block:stop}\endXMLelement}
+
+\startsetups fo:block:start
+
+ \endgraf
+
+ \writeFOstatus{fo:block in line \the\inputlineno}
+
+\doif{\XMLpar{fo:block}{span}{}}{all}{\ifinsidecolumns \startcolumnsetspan[fo:set] \fi}
+
+ \begingroup
+
+ \directsetup{fe:setup}
+
+ \directsetup{fo:break-and-space:before}
+
+ \begingroup
+
+ \setFOreference{fo:block}
+
+ \increment\FOblocklevel
+
+ \directsetup{fo:font:setup}
+
+ % \setupinterlinespace % no, interferes with columnset and lineheight
+
+ \directsetup{fo:line-height:setup}
+
+ \directsetup{fo:indent:setup}% hier ?
+
+ \doifsomething{\XMLop{background-color}}
+ {\checkhexcolor[\XMLop{background-color}]
+ \doifcolorelse{\XMLop{background-color}}
+ \donothing
+ {\setXMLpar{fo:block}{background-color}{}}}
+
+ \doifsomething{\XMLop{color}}
+ {\checkhexcolor[\XMLop{color}]
+ \doifcolorelse{\XMLop{color}}
+ \donothing
+ {\setXMLpar{fo:block}{color}{}}}
+
+ \doifsomething{\XMLop{background-color}}
+ {\expanded
+ {\definetextbackground
+ [FOattribute-\FOblocklevel]
+ [location=paragraph,
+ color=\XMLop{color},
+ style=,
+ before=,
+ after=,
+ background=color,
+ backgroundcolor=\XMLop{background-color}]}}
+
+ \endgraf
+
+ \getvalue{startFOattribute-\FOblocklevel}
+
+ \directsetup{fo:hyphenation:setup}
+ \directsetup{fo:align:setup}
+ \directsetup{fo:margin:setup}
+
+ \doif{\XMLop{wrap-option}}{no-wrap}
+ {\obeylines}
+
+ \doif{\XMLop{white-space-collapse}}{false}
+ {\obeyspaces}
+
+ % todo : remember old one and do like fonts
+
+ \directsetup{fo:textindent:setup}
+
+\stopsetups
+
+\startsetups fo:block:stop
+
+ \endstrut \endgraf
+
+ \getvalue{stopFOattribute-\FOblocklevel}
+
+ \endgraf
+
+ \endgroup
+
+ \directsetup{fo:break-and-space:after}
+
+ \endgroup
+
+ \doif{\XMLpar{fo:block}{span}{}}{all}{\ifinsidecolumns \stopcolumnsetspan \fi}
+
+\stopsetups
+
+\startsetups fo:textindent:setup
+
+ \edefXMLinh\xFOtextindent{text-indent}
+
+ \doifsomething\xFOtextindent
+ {\scratchdimen\hsize
+ \setpercentdimen\scratchdimen\xFOtextindent
+ \expanded{\setupindenting[\the\scratchdimen]}}
+
+\stopsetups
+
+\indenting[always] % can be zero points
+
+% todo: map
+
+\mapXMLvalue {fo:break} {column} {\column}
+\mapXMLvalue {fo:break} {page} {\page}
+\mapXMLvalue {fo:break} {even-page} {\page[even]}
+\mapXMLvalue {fo:break} {odd-page} {\page[odd]}
+
+% keep-together : either vbox or something \interlinepenalty\maxdimen ?
+%
+% nasty interference with accumulated skips
+
+\mapXMLvalue {fo:keep-next} {auto} {}
+\mapXMLvalue {fo:keep-next} {always} {\nobreak}
+
+\mapXMLvalue {fo:keep-prev} {auto} {}
+\mapXMLvalue {fo:keep-prev} {always} {\nobreak}
+
+\mapXMLvalue {fo:keep-start} {auto} {}
+\mapXMLvalue {fo:keep-start} {always} {\interlinepenalty\maxdimen}
+
+\mapXMLvalue {fo:keep-stop} {auto} {}
+\mapXMLvalue {fo:keep-stop} {always} {}
+
+\newskip\FOsavedlastskip
+
+\startsetups fo:break-and-space:before
+
+ \XMLval{fo:break}{\XMLop{break-before}}{}
+
+ \FOsavedlastskip \lastskip \ifdim\FOsavedlastskip>\zeropoint \vskip-\FOsavedlastskip \fi
+
+ \XMLval{fo:keep-start}{\XMLop{keep-together}}\empty
+ \XMLval{fo:keep-start}{\XMLop{keep-together.within-column}}\empty
+ \XMLval{fo:keep-start}{\XMLop{keep-together.within-page}}\empty
+
+ \XMLval{fo:keep-prev} {\XMLop{keep-with-previous}}\empty
+ \XMLval{fo:keep-prev} {\XMLop{keep-with-previous.within-column}}\empty
+ \XMLval{fo:keep-prev} {\XMLop{keep-with-previous.within-page}}\empty
+
+ \ifdim\FOsavedlastskip>\zeropoint \vskip\FOsavedlastskip \fi
+
+ \doFObeforeskip\currentXMLelement
+
+\stopsetups
+
+\startsetups fo:break-and-space:after
+
+% \doFOafterskip\currentXMLelement
+
+ \FOsavedlastskip \lastskip \ifdim\FOsavedlastskip>\zeropoint \vskip-\FOsavedlastskip \fi
+
+ \XMLval{fo:keep-stop}{\XMLop{keep-together}}\empty
+ \XMLval{fo:keep-stop}{\XMLop{keep-together.within-column}}\empty
+ \XMLval{fo:keep-stop}{\XMLop{keep-together.within-page}}\empty
+
+ \XMLval{fo:keep-next}{\XMLop{keep-with-next}}\empty
+ \XMLval{fo:keep-next}{\XMLop{keep-with-next.within-column}}\empty
+ \XMLval{fo:keep-next}{\XMLop{keep-with-next.within-page}}\empty
+
+ \ifdim\FOsavedlastskip>\zeropoint \vskip\FOsavedlastskip \fi
+
+ \doFOafterskip\currentXMLelement
+
+ \XMLval{fo:break}{\XMLop{break-after}}{}
+
+\stopsetups
+
+\startsetups fo:space:start
+ \doFOstartspace\currentXMLelement
+\stopsetups
+
+\startsetups fo:space:end
+ \doFOendspace\currentXMLelement
+\stopsetups
+
+\startsetups fo:indent:setup
+
+ \doifsomething{\XMLop{start-indent}}{\advance\leftskip \XMLop{start-indent}\relax}
+ \doifsomething{\XMLop{end-indent}} {\advance\rightskip\XMLop{end-indent} \relax}
+
+% \FOattributeT
+% \FOattributeR
+% \FOattributeB
+% \FOattributeL
+
+
+\stopsetups
+
+\mapXMLvalue {fo:align} {center} {\raggedcenter}
+\mapXMLvalue {fo:align} {left} {\raggedright}
+\mapXMLvalue {fo:align} {right} {\raggedleft}
+\mapXMLvalue {fo:align} {begin} {\raggedright}
+\mapXMLvalue {fo:align} {start} {\raggedright}
+\mapXMLvalue {fo:align} {end} {\raggedleft}
+
+\mapXMLvalue {fo:align-key} {center} {middle}
+\mapXMLvalue {fo:align-key} {left} {flushleft}
+\mapXMLvalue {fo:align-key} {right} {flushright}
+\mapXMLvalue {fo:align-key} {begin} {flushleft}
+\mapXMLvalue {fo:align-key} {start} {flushleft}
+\mapXMLvalue {fo:align-key} {end} {flushright}
+
+\startsetups fo:align:setup
+
+ \XMLval{fo:align}{\XMLop{text-align}}{}
+
+\stopsetups
+
+\startsetups fo:margin:setup
+
+ \checkFOmargin{fo:block}
+
+ \FOscratchML \XMLpar{fo:block}{margin-left} \zeropoint
+ \FOscratchMR \XMLpar{fo:block}{margin-right} \zeropoint
+ \FOscratchMT \XMLpar{fo:block}{margin-top} \zeropoint
+ \FOscratchMB \XMLpar{fo:block}{margin-bottom}\zeropoint
+
+ \advance\leftskip \FOscratchML
+ \advance\rightskip\FOscratchMR
+
+\stopsetups
+
+% todo: font-stretch
+%
+% ultra-condensed
+% extra-condensed
+% condensed
+% semi-condensed
+% expanded
+% extra-expanded
+% ultra-expanded
+%
+% wider narrower
+
+\mapXMLvalue {fo:font-size} {xx-small} {\dFOfontsize0.58\dFOfontsize}
+\mapXMLvalue {fo:font-size} {x-small} {\dFOfontsize0.69\dFOfontsize}
+\mapXMLvalue {fo:font-size} {small} {\dFOfontsize0.83\dFOfontsize}
+\mapXMLvalue {fo:font-size} {medium} {\relax}
+\mapXMLvalue {fo:font-size} {large} {\dFOfontsize1.20\dFOfontsize}
+\mapXMLvalue {fo:font-size} {x-large} {\dFOfontsize1.44\dFOfontsize}
+\mapXMLvalue {fo:font-size} {xx-large} {\dFOfontsize1.73\dFOfontsize}
+
+\mapXMLvalue {fo:font-size} {smaller} {\dFOfontsize0.83\dFOfontsize}
+\mapXMLvalue {fo:font-size} {larger} {\dFOfontsize1.20\dFOfontsize}
+
+\newdimen\dFOfontsize
+
+% evt class Times Helvetica
+
+\definefontsynonym [FO:Times] [Times-Roman]
+\definefontsynonym [FO:Times:bold] [Times-Bold]
+\definefontsynonym [FO:Times:italic] [Times-Italic]
+\definefontsynonym [FO:Times:bold:italic] [Times-BoldItalic]
+
+\definefontsynonym [FO:Times:small-caps] [Times-Roman]
+\definefontsynonym [FO:Times:bold:small-caps] [Times-Bold]
+\definefontsynonym [FO:Times:italic:small-caps] [Times-Italic]
+\definefontsynonym [FO:Times:bold:italic:small-caps] [Times-BoldItalic]
+
+\definefontsynonym [FO:Helvetica] [Helvetica]
+\definefontsynonym [FO:Helvetica:bold] [Helvetica-Bold]
+\definefontsynonym [FO:Helvetica:italic] [Helvetica-Italic]
+\definefontsynonym [FO:Helvetica:bold:italic] [Helvetica-BoldItalic]
+
+\definefontsynonym [FO:Helvetica:small-caps] [Helvetica]
+\definefontsynonym [FO:Helvetica:bold:small-caps] [Helvetica-Bold]
+\definefontsynonym [FO:Helvetica:italic:small-caps] [Helvetica-Italic]
+\definefontsynonym [FO:Helvetica:bold:italic:small-caps] [Helvetica-BoldItalic]
+
+\definefontsynonym [FO:Courier] [Courier]
+\definefontsynonym [FO:Courier:bold] [Courier-Bold]
+\definefontsynonym [FO:Courier:italic] [Courier-Oblique]
+\definefontsynonym [FO:Courier:bold:italic] [Courier-BoldOblique]
+
+\definefontsynonym [FO:Courier:small-caps] [Courier]
+\definefontsynonym [FO:Courier:bold:small-caps] [Courier-Bold]
+\definefontsynonym [FO:Courier:italic:small-caps] [Courier-Oblique]
+\definefontsynonym [FO:Courier:bold:italic:small-caps] [Courier-BoldOblique]
+
+\definefontsynonym [FO:Symbol] [ZapfDingbats]
+
+\definefontsynonym [FO:Computer-Modern-Typewriter] [ComputerModernMono]
+\definefontsynonym [FO:Computer-Modern-Typewriter:italic] [ComputerModernMono-Slanted]
+
+\definefontsynonym [*Times Roman*] [Times]
+
+% nasty: no FO prefix
+
+\definefontsynonym [*serif*] [Times]
+\definefontsynonym [*sans-serif*] [Helvetica]
+\definefontsynonym [*monospace*] [Courier]
+
+\definefontsynonym [*cursive*] [Times]
+\definefontsynonym [*fantasy*] [Helvetica]
+
+\definefontsynonym [*Arial*] [Helvetica]
+\definefontsynonym [*Times Roman*] [Times]
+\definefontsynonym [*Wingdings*] [ZapfDingbats]
+
+% \definefontsynonym [Computer-Modern-Typewriter] [ComputerModernMono]
+% \definefontsynonym [monospace] [ComputerModernMono]
+
+\startsetups fo:fonts:reset
+
+ \dFOfontsize=\bodyfontsize
+
+ \def\FOfontsize {10pt}% {12pt}
+ \def\FOfontfamily {Times}
+ \def\FOfontweight {normal}
+ \def\FOfontstyle {normal}
+ \def\FOfontvariant {normal}
+ \def\FOfontsizeadjust{1}
+
+ \def\FOtextdepth {}
+ \def\FOtextaltitude {}
+ \def\FOlineheight {}
+
+ \def\FOfontdefinition{}
+ \def\FOfontname {}
+
+\stopsetups
+
+\def\FOfontdefinition{}
+\def\FOfontname {}
+
+\directsetup{fo:fonts:reset}
+
+% test for \FOfontvariant: normal or else
+
+\def\setFOfontname
+ {\edef\xFOfontname{FO:\FOfontfamily:\FOfontweight:\FOfontstyle:\FOfontvariant}%
+ %\begingroup\infofont\xFOfontname]\endgroup
+ \doifelsefontsynonym\xFOfontname
+ {\let\FOfontname\xFOfontname}
+ {\edef\xFOfontname{FO:\FOfontfamily:\FOfontweight:\FOfontstyle}%
+ \doifelsefontsynonym\xFOfontname
+ {\let\FOfontname\xFOfontname}
+ {\edef\xFOfontname{FO:\FOfontfamily:\FOfontstyle}%
+ \doifelsefontsynonym\xFOfontname
+ {\let\FOfontname\xFOfontname}
+ {\edef\xFOfontname{FO:\FOfontfamily:\FOfontweight}%
+ \doifelsefontsynonym\xFOfontname
+ {\let\FOfontname\xFOfontname}
+ {\edef\xFOfontname{FO:\FOfontfamily}%
+ \doifelsefontsynonym\xFOfontname
+ {\let\FOfontname\xFOfontname}
+ {}}}}}}
+
+% \unprotected \def\doifelseFOfontsynonym#1#2#3#4#5% family weight style variant default
+% {\edef\FOfontname
+% {\ifcsname \??ff\fontclass FO:#1:#2:#3:#4\endcsname FO:#1:#2:#3:#4%
+% \else\ifcsname\??ff\fontclass FO:#1:#2:#3\endcsname FO:#1:#2:#3%
+% \else\ifcsname\??ff\fontclass FO:#1:#3\endcsname FO:#1:#3%
+% \else\ifcsname\??ff\fontclass FO:#1:#2\endcsname FO:#1:#2%
+% \else\ifcsname\??ff\fontclass FO:#1\endcsname FO:#1%
+% \else #5%
+% \fi\fi\fi\fi\fi}}
+
+\startsetups fo:font:family:check
+
+ \doifelsefontsynonym{*\FOfontfamily*}
+ {\expandfontsynonym\FOfontfamily{*\FOfontfamily*}}
+ {}
+
+\stopsetups
+
+\let\FOfont\empty
+
+\startsetups fo:font:setup
+
+ % todo: optimize, define fonts first time and do that global
+
+ \edefXMLinh\xFOfont {font}
+ \edefXMLinh\xFOfontsize {font-size}
+ \edefXMLinh\xFOfontsizeadjust{font-size-adjust}
+ \edefXMLinh\xFOfontfamily {font-family}
+ \edefXMLinh\xFOfontweight {font-weight}
+ \edefXMLinh\xFOfontstyle {font-style}
+ \edefXMLinh\xFOfontvariant {font-variant}
+
+% \edef\xFOfont {\XMLpar{fo}{font}{}}
+% \edef\xFOfontsize {\XMLpar{fo}{font-size}{}}
+% \edef\xFOfontsizeadjust{\XMLpar{fo}{font-size-adjust}{}}
+% \edef\xFOfontfamily {\XMLpar{fo}{font-family}{}}
+% \edef\xFOfontweight {\XMLpar{fo}{font-weight}{}}
+% \edef\xFOfontstyle {\XMLpar{fo}{font-style}{}}
+% \edef\xFOfontvariant {\XMLpar{fo}{font-variant}{}}
+
+ \donefalse
+
+ \ifx\xFOfont\empty \else \ifx\xFOfont\relax \else
+ \let\FOfont\xFOfont
+ \checkFOfont\FOfont
+ \fi \fi
+
+ \ifx\xFOfontsize\empty \else \ifx\xFOfontsize\FOfontsize \else
+ \let\FOfontsize\xFOfontsize
+ \doifXMLvalelse{fo:font-size}\FOfontsize
+ {\XMLval{fo:font-size}\FOfontsize\empty}
+ {\setpercentdimen\dFOfontsize\FOfontsize}
+ \fi \fi
+
+ \ifx\xFOfontsizeadjust\empty \else
+ \doifelse\xFOfontsizeadjust{none}
+ {\def\FOfontsizeadjust{1}}
+ {\let\FOfontsizeadjust\xFOfontsizeadjust}
+ \fi
+
+ \ifx\xFOfontfamily\empty \else \ifx\xFOfontfamily\FOfontfamily \else
+ \donetrue \let\FOfontfamily\xFOfontfamily \directsetup{fo:font:family:check}
+ \fi \fi
+ \ifx\xFOfontweight\empty \else \ifx\xFOfontweight\FOfontweight \else
+ \donetrue \let\FOfontweight\xFOfontweight
+ \fi \fi
+ \ifx\xFOfontstyle\empty \else \ifx\xFOfontstyle\FOfontstyle \else
+ \donetrue \let\FOfontstyle\xFOfontstyle
+ \fi \fi
+ \ifx\xFOfontvariant\empty \else \ifx\xFOfontvariant\FOfontvariant \else
+ \donetrue \let\FOfontvariant\xFOfontvariant
+ \fi \fi
+
+ \ifdone
+ \setFOfontname
+ \ifx\FOfontname\empty % klopt dit
+ \edef\xFOfontdefinition{\purefontname{\font} at \the\dimexpr(\FOfontsizeadjust\dFOfontsize)}
+% \let\xFOfontdefinition\empty
+ \else
+ \edef\xFOfontdefinition{\FOfontname\space at \the\dimexpr(\FOfontsizeadjust\dFOfontsize)}
+ \fi
+ \else
+ \edef\xFOfontdefinition{\purefontname{\font} at \the\dimexpr(\FOfontsizeadjust\dFOfontsize)}
+ \fi
+
+ \ifx\xFOfontdefinition\empty \else
+ \ifx\FOfontdefinition\xFOfontdefinition
+ \else
+ \let\FOfontdefinition\xFOfontdefinition
+ \expanded{\definedfont[\FOfontdefinition]}
+ \fi
+ \fi
+
+\stopsetups
+
+\newdimen\dFOlineheight
+\newdimen\dFOdepth
+\newdimen\dFOaltitude
+
+\let\FOlineheight \empty
+\let\FOtextdepth \empty
+\let\FOtextaltitude\empty
+
+\startsetups fo:line-height:setup
+
+ \edefXMLinh\xFOtextdepth {text-depth}
+ \edefXMLinh\xFOtextaltitude{text-altitude}
+ \edefXMLinh\xFOlineheight {line-height}
+
+% \edef\xFOtextdepth {\XMLpar{fo}{text-depth}{}}
+% \edef\xFOtextaltitude{\XMLpar{fo}{text-altitude}{}}
+% \edef\xFOlineheight {\XMLpar{fo}{line-height}{}}
+
+ \ifx\xFOtextdepth\empty \else \ifx\xFOtextdepth\FOtextdepth \else
+ \let\FOtextdepth\xFOtextdepth
+ \doifnot\FOtextdepth{use-font-metrics}
+ {\setstrut \dFOdepth\strutdepth
+ \setpercentdimen\dFOdepth\FOtextdepth
+ \setupinterlinespace[mindepth=\dFOdepth]}
+ \fi \fi
+
+ \ifx\xFOtextaltitude\empty \else \ifx\xFOtextaltitude\FOtextaltitude \else
+ \let\FOtextaltitude\xFOtextaltitude
+ \doifnot\FOtextaltitude{use-font-metrics}
+ {\setstrut \dFOaltitude\strutheight \advance\dFOaltitude\strutdepth
+ \setpercentdimen\dFOaltitude\FOtextaltitude
+ \setupinterlinespace[minheight=\dFOaltitude]}
+ \fi \fi
+
+\ifinsidecolumns \else
+
+ \ifx\xFOlineheight\empty \else \ifx\xFOlineheight\FOlineheight \else
+ \let\FOlineheight\xFOlineheight
+ \doifelse\FOlineheight{normal}
+ {\dFOlineheight2.8ex
+ \setupinterlinespace[line=\dFOlineheight]}
+ {\doifnot\FOlineheight{use-font-metrics}
+ {\setstrut \dFOlineheight\strutheight \advance\dFOlineheight\strutdepth
+ \setpercentdimen\dFOlineheight\FOlineheight
+ \setupinterlinespace[line=\dFOlineheight]}}
+ \fi \fi
+
+\fi
+
+\stopsetups
+
+\let\orphanpenalty \clubpenalty
+\let\orphanpenalties\clubpenalties
+
+\newcount\FOwidows \FOwidows =2
+\newcount\FOorphans \FOorphans=2
+
+\mapXMLvalue {fo:hyphens} {false} {\nohyphens}
+\mapXMLvalue {fo:hyphens} {true} {\dohyphens}
+
+\startsetups fo:hyphenation:setup
+
+ \edefXMLinh\xFOhyphenate {hyphenate}
+ \edefXMLinh\xFOwidows {widows}
+ \edefXMLinh\xFOorphans {orphans}
+
+% \edef\xFOhyphenate {\XMLpar{fo}{hyphenate}{}}
+% \edef\xFOwidows {\XMLpar{fo}{widows}{}}
+% \edef\xFOorphans {\XMLpar{fo}{orphans}{}}
+
+ \ifx\xFOhyphenate\empty \else
+ \XMLval{fo:hyphens}{\xFOhyphenate}\empty
+ \fi
+ \ifx\xFOwidows\empty \else \ifnum\xFOwidows=\FOwidows \else
+ \FOwidows\xFOwidows \setpenalties\widowpenalties\FOwidows\maxdimen
+ \fi \fi
+ \ifx\xFOorphans\empty \else \ifnum\xFOorphans=\FOorphans \else
+ \FOorphans\xFOorphans \setpenalties\clubpenalties\FOorphans\maxdimen
+ \fi \fi
+
+ % hyphenation-character
+
+\stopsetups
+
+%D fo:block-container
+
+% todo: potential optimization: set fonts and spacing at container level
+
+% display-align=,
+% intrusion-displace=,
+% reference-orientation=,
+% writing-mode=,
+
+\defineXMLenvironment
+ [fo:block-container]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:absolute-positioning},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:keeps-and-breaks},
+ block-progression-dimension=,
+ inline-progression-dimension=,
+ clip=,
+ height=,
+ overflow=,
+ span=,
+ width=,
+ z-index=]
+ {\beginXMLelement\directsetup{fo:block-container:start}}
+ {\directsetup{fo:block-container:stop}\endXMLelement}
+
+\mapXMLvalue {fo:block-container:start} {absolute} {\directsetup{fo:block-container:start:pos}}
+\mapXMLvalue {fo:block-container:start} {fixed} {\directsetup{fo:block-container:start:pos}}
+
+\mapXMLvalue {fo:block-container:stop} {absolute} {\directsetup{fo:block-container:stop:pos}}
+\mapXMLvalue {fo:block-container:stop} {fixed} {\directsetup{fo:block-container:stop:pos}}
+
+\startsetups fo:block-container:start
+
+ \XMLval{fo:block-container:start}{\XMLpar{fo:block-container}{absolute-position}{}}{}
+
+ \setFOreference{fo:block-container}
+
+\stopsetups
+
+\startsetups fo:block-container:stop
+
+ \XMLval{fo:block-container:stop}{\XMLpar{fo:block-container}{absolute-position}{}}{}
+
+\stopsetups
+
+% i need to figure out the details (specs are a bit fuzzy)
+
+% replaced, see position
+
+\newdimen\FOcontainerW \newdimen\FOcontainerX \newdimen\FOcontainerL \newdimen\FOcontainerR \newdimen\FOcontainerWW
+\newdimen\FOcontainerH \newdimen\FOcontainerY \newdimen\FOcontainerT \newdimen\FOcontainerB \newdimen\FOcontainerHH
+
+\startsetups fo:block-container:start:pos
+
+ % todo: textwidth -> region dimensions
+
+ \begingroup % \forgetall
+
+ \FOcontainerWW\textwidth
+ \FOcontainerHH\textheight
+ \def\FOlayername{\XMLpar{fo:flow}{flow-name}{xsl-region-body}}
+
+ \iftracingFO \tracelayerstrue \fi
+
+ \directsetup{fo:preset:layer}
+
+ \setlayerframed
+ [\XMLpar{fo:flow}{flow-name}{xsl-region-body}]
+ [frame=off,
+ width=\FOcontainerW,
+ height=\FOcontainerH]
+
+ \bgroup
+
+\stopsetups
+
+\startsetups fo:block-container:stop:pos
+
+ \egroup
+
+ \endgroup
+
+\stopsetups
+
+%D fo:bidi-override
+
+% \XMLattributeset{aural},
+% color=,
+% direction=,
+% letter-spacing=,
+% line-height=,
+% word-spacing=,
+
+\defineXMLenvironment
+ [fo:bidi-override]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:relative-position},
+ score-spaces=,
+ unicode-bidi=]
+ {\beginXMLelement}
+ {\endXMLelement}
+
+% todo
+
+%D fo:character
+
+% \XMLattributeset{fo:aural},
+% color=,
+% glyph-orientation-horizontal=,
+% glyph-orientation-vertical=,
+% line-height=,
+
+\defineXMLsingular
+ [fo:character]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:hyphenation},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ \XMLattributeset{fo:character},
+ alignment-adjust=,
+ baseline-shift=,
+ dominant-baseline=,
+% text-depth=,
+% text-altitude=,
+ keep-with-next=,
+ keep-with-previous=,
+ score-spaces=,
+ visibility=]
+ {\directsetup{fo:character:process}}
+
+\mapXMLvalue {fo:vertical-align} {baseline} {\hbox}
+\mapXMLvalue {fo:vertical-align} {sub} {\low}
+\mapXMLvalue {fo:vertical-align} {super} {\high}
+\mapXMLvalue {fo:vertical-align} {inherit} {\firstofoneargument}
+
+\startsetups fo:character:process
+
+ % border
+ % font
+ % margin
+ % positioning
+ % baseline
+ % color
+ % depth and altitude
+ % keep-with
+ % lineheight
+
+ \dontleavehmode \begingroup
+
+ \directsetup{fe:setup}
+ \directsetup{fo:font:setup}
+
+ \iftracingFO \ruledhbox \else \hbox \fi \bgroup
+
+ \doifsomethingXMLop{vertical-align}
+ {\doifXMLvalelse{fo:vertical-align}{\XMLop{vertical-align}}
+ {\XMLval{fo:vertical-align}{\XMLop{vertical-align}}{}}
+ {\wordshiftamount\lineheight
+ \setpercentdimen\wordshiftamount{\XMLop{vertical-align}}
+ \shiftedword}}
+
+ {\directsetup{fo:character:orient}}
+
+ \egroup \endgroup
+
+\stopsetups
+
+\startsetups fo:character:orient
+
+% \rotate[rotation=-\XMLop{glyph-orientation-horizontal}]
+
+ \doifsomethingXMLop{glyph-orientation-horizontal}
+ {\rotate[rotation=\XMLval{fo:reference-orientation}{\XMLop{glyph-orientation-horizontal}}{0}]}
+ {\XMLop{character}}
+
+\stopsetups
+
+%D fo:initial-property-set
+
+% \XMLattributeset{fo:aural},
+% color=,
+% letter-spacing=,
+% line-height=,
+% text-transform=,
+% word-spacing=,
+
+\defineXMLprocess
+ [fo:initial-property-set]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:relative-position},
+ score-spaces=,
+ text-decoration=,
+ text-shadow=]
+
+%D fo:external-graphic
+
+\useMPlibrary[dum]
+
+% \XMLattributeset{fo:aural},
+% display-align=,
+% height=,
+% text-align=,
+
+\defineXMLenvironmentsave
+ [fo:external-graphic]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ block-progression-dimension=,
+ clip=,
+ content-height=,
+ content-type=,
+ content-width=,
+ dominant-baseline=,
+ height=,
+ inline-progression-dimension=,
+ keep-with-next=,
+ keep-with-previous=,
+ overflow=,
+ scaling=,
+ scaling-method=,
+ src=dummy,
+ width=]
+ {}
+ {\directsetup{fo:external-graphic:process}}
+
+\newdimen\FOgraphicwidth
+\newdimen\FOgraphicheight
+
+\mapXMLvalue {external-graphic:align} {top} {\tbox}
+\mapXMLvalue {external-graphic:align} {bottom} {\bbox}
+\mapXMLvalue {external-graphic:align} {center} {\cbox}
+
+\startsetups fo:external-graphic:process
+
+ \doifelsenothing{\XMLop{content-height}}
+ {\FOgraphicheight\zeropoint}
+ {\doifelse{\XMLop{content-height}}{scale-to-fit}% is this official ?
+ {\FOgraphicwidth\zeropoint}
+ {\doifelse{\XMLop{content-height}}{auto}
+ {\FOgraphicheight\zeropoint}
+ {\FOgraphicheight\lineheight
+ \setpercentdimen\FOgraphicheight{\XMLop{content-height}}}}}
+
+ \doifelsenothing{\XMLop{content-width}}
+ {\FOgraphicwidth\zeropoint}
+ {\doifelse{\XMLop{content-width}}{scale-to-fit}% is this official ?
+ {\FOgraphicwidth\zeropoint}
+ {\doifelse{\XMLop{content-width}}{auto}
+ {\FOgraphicwidth\zeropoint}
+ {\FOgraphicwidth1em
+ \setpercentdimen\FOgraphicwidth {\XMLop{content-width}}}}}
+
+ % leeg maken vars gaat ook goed, dan een \externalfigure
+
+ % todo : height/width scale-to-fit: factor=...
+
+ \setbox\scratchbox\hbox
+ {\setFOimagename{\XMLpar{fo:external-graphic}{src}{dummy}}
+ \ifdim\FOgraphicheight>\zeropoint
+ \ifdim\FOgraphicwidth>\zeropoint
+ \externalfigure[\FOimagename][height=\FOgraphicheight,width=\FOgraphicwidth]
+ \else
+ \externalfigure[\FOimagename][height=\FOgraphicheight]
+ \fi
+ \else
+ \ifdim\FOgraphicwidth>\zeropoint
+ \externalfigure[\FOimagename][width=\FOgraphicwidth]
+ \else
+ \externalfigure[\FOimagename]
+ \fi
+ \fi}
+
+ \dontleavehmode \XMLval{external-graphic:align}{\XMLop{vertical-align}}{}{\box\scratchbox}
+
+\stopsetups
+
+%D fo:instream-foreign-object
+
+% like external-graphic, only no src
+
+% \XMLattributeset{fo:aural},
+% display-align=,
+% line-height=,
+% text-align=,
+
+\defineXMLprocess
+ [fo:instream-foreign-object]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ block-progression-dimension=,
+ clip=,
+ content-height=,
+ content-type=,
+ content-width=,
+ dominant-baseline=,
+ height=,
+ inline-progression-dimension=,
+ keep-with-next=,
+ keep-with-previous=,
+ overflow=,
+ scaling=,
+ scaling-method=,
+ width=]
+
+%D Element: fo:inline
+
+% \XMLattributeset{fo:aural},
+% line-height=,
+% wrap-option=,
+% color=,
+% keep-together=,
+
+\defineXMLnestedenvironmentsave
+ [fo:inline]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ block-progression-dimension=,
+ dominant-baseline=,
+ height=,
+ inline-progression-dimension=,
+ keep-with-next=,
+ keep-with-previous=,
+ text-decoration=,
+ visibility=,
+ width=]
+ {\beginXMLelement}
+ {\directsetup{fo:inline:process}\endXMLelement}
+
+% baseline-shift: baseline sub super % dimen inherit
+
+\chardef\isolatedwordsmode=1
+
+\newdimen\wordshiftamount
+
+\def\shiftedword{\raise\wordshiftamount\hbox}
+
+\def\shiftedwords#1{\processisolatedwords{#1}\shiftedword}
+\def\normalwords #1{\processisolatedwords{#1}\hbox}
+\def\highwords #1{\processisolatedwords{#1}\high}
+\def\lowwords #1{\processisolatedwords{#1}\low}
+
+\mapXMLvalue {fo:baseline-shift} {baseline} {\normalwords}
+\mapXMLvalue {fo:baseline-shift} {sub} {\lowwords}
+\mapXMLvalue {fo:baseline-shift} {super} {\highwords}
+\mapXMLvalue {fo:baseline-shift} {inherit} {\firstofoneargument}
+
+\startsetups fo:inline:process
+
+ \directsetup{fo:position:start}
+
+ \dontleavehmode
+
+ \doFOreference{fo:inline}
+
+ \begingroup
+
+ \directsetup{fe:setup}
+ \directsetup{fo:space:start}
+
+ \begingroup
+
+ \directsetup{fo:hyphenation:setup}
+ \directsetup{fo:font:setup}
+
+ \doifelsenothing{\XMLop{baseline-shift}}
+ {\XMLflushself}
+ {\doifXMLvalelse{fo:baseline-shift}{\XMLop{baseline-shift}}
+ {\XMLval{fo:baseline-shift}{\XMLop{baseline-shift}}{}{\XMLflushself}}
+ {\wordshiftamount\lineheight
+ \setpercentdimen\wordshiftamount{\XMLop{baseline-shift}}
+ \shiftedwords{\XMLflushself}}}
+
+ \endgroup
+
+ \directsetup{fo:space:end}
+
+ \endgroup
+
+ \directsetup{fo:position:stop}
+
+\stopsetups
+
+\startsetups fo:position:start
+ \begingroup
+ \directsetup{fo:position:\XMLop{position}:start}
+ \begingroup
+\stopsetups
+
+\startsetups fo:position:stop
+ \endgroup
+ \directsetup{fo:position:\XMLop{position}:stop}
+ \endgroup
+\stopsetups
+
+\startsetups fo:position:static:start
+\stopsetups
+
+\startsetups fo:position:static:stop
+\stopsetups
+
+\startsetups fo:position:fixed:start
+ \FOcontainerWW\paperwidth
+ \FOcontainerHH\paperheight
+ \def\FOlayername{regions}
+ \directsetup{fo:preset:layer}
+ \setlayer[regions]{\vbox \bgroup \setlocalhsize}
+\stopsetups
+
+\startsetups fo:position:fixed:stop
+ \egroup
+\stopsetups
+
+\positioningpartrue \positioningtrue
+
+\startsetups fo:position:absolute:start
+ \setbox\FOpositionbox\hbox\bgroup
+\stopsetups
+
+\startsetups fo:position:absolute:stop
+ \egroup
+ % evt uitstellen tot otr, zodat text/realfolio is solved
+ \edef\FOpartag{p:\parposcounter}
+ \edef\FOtxttag{text:\realfolio}
+ \FOcontainerWW\MPplus\FOpartag{1}{0pt}
+ \FOcontainerHH\zeropoint % todo: add anchors to each 'object'
+ \directsetup{fo:preset:position}
+ \setlayer
+ [xsl-region-body]
+ [preset=lefttop,
+ hoffset=\dimexpr(\MPx\FOtxttag-\MPx\FOpartag),
+ voffset=\dimexpr(\MPy\FOtxttag+\MPh\FOtxttag-\MPy\FOpartag-\MPh\FOpartag)]
+ {\iftracingFO \ruledhbox \bgroup \fi
+ \offset
+ [method=fixed,
+ leftoffset=\FOcontainerL,
+ rightoffset=\FOcontainerR,
+ topoffset=\FOcontainerT,
+ bottomoffset=\FOcontainerB]
+ {\box\FOpositionbox}
+ \iftracingFO \egroup \fi}
+\stopsetups
+
+\newbox\FOpositionbox
+
+\startsetups fo:position:relative:start
+ \setbox\FOpositionbox\hbox\bgroup
+\stopsetups
+
+\startsetups fo:position:relative:stop
+ \egroup
+ \FOcontainerWW\wd\FOpositionbox
+ \FOcontainerHH\dimexpr(\ht\FOpositionbox+\dp\FOpositionbox)
+ \directsetup{fo:preset:position}
+ \iftracingFO \ruledhbox \bgroup \fi
+ \offset
+ [method=fixed,
+ leftoffset=\FOcontainerL,
+ rightoffset=\FOcontainerR,
+ topoffset=\FOcontainerT,
+ bottomoffset=\FOcontainerB]
+ {\box\FOpositionbox}
+ \iftracingFO \egroup \fi
+\stopsetups
+
+%
+
+\startsetups fo:preset:position
+
+ \FOcontainerW\zeropoint \FOcontainerL\zeropoint \FOcontainerR\zeropoint
+ \FOcontainerH\zeropoint \FOcontainerT\zeropoint \FOcontainerB\zeropoint
+
+ \doifnot{\XMLop{left}} {auto}{\FOcontainerL\FOcontainerWW\setpercentdimen\FOcontainerL{\XMLop{left}}}
+ \doifnot{\XMLop{right}} {auto}{\FOcontainerR\FOcontainerWW\setpercentdimen\FOcontainerR{\XMLop{right}}}
+ \doifnot{\XMLop{top}} {auto}{\FOcontainerT\FOcontainerHH\setpercentdimen\FOcontainerT{\XMLop{top}}}
+ \doifnot{\XMLop{bottom}}{auto}{\FOcontainerB\FOcontainerHH\setpercentdimen\FOcontainerB{\XMLop{bottom}}}
+
+ \doifnot{\XMLop{width}} {auto}{\FOcontainerW\FOcontainerWW\setpercentdimen\FOcontainerW{\XMLop{width}}}
+ \doifnot{\XMLop{height}}{auto}{\FOcontainerH\FOcontainerHH\setpercentdimen\FOcontainerH{\XMLop{height}}}
+
+\stopsetups
+
+\startsetups fo:preset:layer
+
+ \directsetup{fo:preset:position}
+
+ \setuplayer
+ [\FOlayername]
+ [width=\FOcontainerWW,
+ height=\FOcontainerHH]
+
+ \ifzeropt\FOcontainerW
+ \FOcontainerW\dimexpr(\FOcontainerWW-\FOcontainerL-\FOcontainerR)
+ \fi
+ \ifzeropt\FOcontainerH
+ \FOcontainerH\dimexpr(\FOcontainerHH-\FOcontainerT-\FOcontainerB)
+ \fi
+
+ \ifzeropt\FOcontainerB
+ \ifzeropt\FOcontainerL
+ \setuplayer[\FOlayername][preset=righttop, x=\FOcontainerR,y=\FOcontainerT]
+ \else
+ \setuplayer[\FOlayername][preset=lefttop, x=\FOcontainerL,y=\FOcontainerT]
+ \fi
+ \else
+ \ifzeropt\FOcontainerL
+ \setuplayer[\FOlayername][preset=rightbottom,x=\FOcontainerR,y=\FOcontainerB]
+ \else
+ \setuplayer[\FOlayername][preset=leftbottom, x=\FOcontainerL,y=\FOcontainerB]
+ \fi
+ \fi
+
+\stopsetups
+
+%D Element: fo:inline-container
+
+% display-align=,
+% line-height=,
+% reference-orientation=,
+% writing-mode=,
+% keep-together=,
+
+\defineXMLenvironment
+ [fo:inline-container]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ block-progression-dimension=,
+ clip=,
+ dominant-baseline=,
+ height=,
+ inline-progression-dimension=,
+ keep-with-next=,
+ keep-with-previous=,
+ overflow=,
+ width=]
+ {\beginXMLelement\begingroup}
+ {\endgroup\endXMLelement}
+
+%D Element: fo:leader
+
+% also a kind of fake fill
+
+% \XMLattributeset{fo:aural},
+% color=,
+% line-height=,
+% word-spacing=,
+
+\defineXMLenvironmentsave
+ [fo:leader]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ \XMLattributeset{fo:leader-and-rule},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ dominant-baseline=,
+% text-depth=,
+% text-altitude=,
+ keep-with-next=,
+ keep-with-previous=,
+ letter-spacing=,
+ text-shadow=,
+ visibility=]
+ {\beginXMLelement}
+ {\directsetup{fo:leader:process}\endXMLelement}
+
+\mapXMLvalue {fo:leader-pattern} {space} {\hfill}
+\mapXMLvalue {fo:leader-pattern} {dots} {.}
+\mapXMLvalue {fo:leader-pattern} {rule} {\hrulefill}
+\mapXMLvalue {fo:leader-pattern} {use-content} {\XMLflushself}
+
+% todo: speed up
+
+\startsetups fo:leader:process
+
+% \tracebackXMLattribute{leader-pattern-width}
+
+ \strut \leaders
+
+% \edefXMLinh \FOlepatwd {leader-pattern-width}
+
+ \hbox to \XMLinh{leader-pattern-width}
+ {\hss\XMLval{fo:leader-pattern}{\XMLinh{leader-pattern}}{\hfill}\hss}
+
+ \hfill \strut
+
+\stopsetups
+
+%D Element: fo:pagenumber
+
+% \XMLattributeset{fo:aural},
+% line-height=,
+% wrap-option=,
+% letter-spacing=,
+% text-transform=,
+% word-spacing=,
+
+\defineXMLsingular
+ [fo:page-number]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ dominant-baseline=,
+ keep-with-next=,
+ keep-with-previous=,
+ score-spaces=,
+% text-altitude=,
+ text-decoration=,
+% text-depth=,
+ text-shadow=,
+ visibility=]
+ {\directsetup{fo:page-number:process}}
+
+\newcount\FOpnrefcounter
+
+\startsetups fo:page-number:process
+
+ \doifelsenothing{\XMLpar{fo:page-sequence}{format}{}}
+ {\pagenumber}
+ {\ifinotr
+ \globallet\FOpnrefnumber\folio
+ \else
+ \global\advance\FOpnrefcounter\plusone
+ \pagereference[pnref:\the\FOpnrefcounter]
+ \doifreferencefoundelse{pnref:\the\FOpnrefcounter}
+ {\globallet\FOpnrefnumber\currentfolioreference}
+ {\globallet\FOpnrefnumber\folio}
+ \fi
+ \expanded{\handletokens\XMLpar{fo:page-sequence}{format}{}}\with{\handleFOformat{\FOpnrefnumber}}}
+
+\stopsetups
+
+\defineconversion[1][\numbers]
+
+\def\handleFOformat#1#2%
+ {\convertargument#2\to\ascii
+ \doifconversiondefinedelse\ascii{\convertnumber\ascii{#1}}{#2}}
+
+%D Element: fo:pagenumber-citation
+
+% same as page-number
+
+% \XMLattributeset{fo:aural},
+% line-height=,
+% wrap-option=,
+% letter-spacing=,
+% text-transform=,
+% word-spacing=,
+
+\defineXMLsingular
+ [fo:page-number-citation]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ ref-id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:font},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ dominant-baseline=,
+ keep-with-next=,
+ keep-with-previous=,
+ score-spaces=,
+% text-altitude=,
+ text-decoration=,
+% text-depth=,
+ text-shadow=,
+ visibility=]
+ {\directsetup{fo:page-number-citation:process}}
+
+\startsetups fo:page-number-citation:process
+
+ \doifreferencefoundelse{\XMLop{ref-id}}
+ {\globallet\FOpnrefnumber\currentfolioreference
+ \globallet\FOpnrefformat\currenttextreference}
+ {\gdef\FOpnrefnumber{?}
+ \gdef\FOpnrefformat{}}
+
+ \doifelsenothing{\FOpnrefformat}
+ {\FOpnrefnumber}
+ {\expanded{\handletokens\FOpnrefformat}\with{\handleFOformat{\FOpnrefnumber}}}
+
+\stopsetups
+
+%D Element: fo:table-and-caption
+
+% \XMLattributeset{fo:aural},
+% text-align=,
+% caption-side=,
+% intrusion-displace=,
+% keep-together=,
+
+\defineXMLenvironment
+ [fo:table-and-caption]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:relative-position},
+ break-after=,
+ break-before=,
+ keep-with-next=,
+ keep-with-previous=]
+ {\beginXMLelement}
+ {\endXMLelement}
+
+%D Element: fo:table fo:table-caption fo:table-header fo:table-footer
+%D to:table-column fo:table-body fo:table-row fo:table-cell
+
+% \XMLattributeset{fo:aural},
+% border-collapse=,
+% border-separation=,
+% intrusion-displace=,
+% keep-together=,
+% writing-mode=,
+
+\defineXMLenvironment
+ [fo:table]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:relative-position},
+ block-progression-dimension=,
+ border-after-precedence=,
+ border-before-precedence=,
+ border-start-precedence=,
+ border-end-precedence=,
+ break-after=,
+ break-before=,
+ inline-progression-dimension=,
+ height=,
+ keep-with-next=,
+ keep-with-previous=,
+ table-layout=,
+ table-omit-footer-at-break=,
+ table-omit-header-at-break=,
+% text-indent=0pt, % yes or no?
+ width=]
+ {\beginXMLelement
+ \bTABLE % [option=stretch] %
+ \newcounter\FOtablecolumn}
+ {\eTABLE
+ \endXMLelement}
+
+\newdimen\FOtableW
+\newdimen\FOtableH
+
+\defineXMLsingular
+ [fo:table-column]
+ [\XMLattributeset{fo:inherited},
+ \XMLattributeset{fo:border-padding-background}, % only background, not the rest, make subset
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ column-width=,
+ column-number=,
+ number-columns-repeated=,
+ number-columns-spanned=,
+ visibility=]
+ {\directsetup{fo:table-column:action}}
+
+% \XMLattributeset{fo:aural},
+% intrusion-displace=,
+% keep-together=,
+
+\defineXMLprocess
+ [fo:table-caption]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ block-progression-dimension=,
+ height=,
+ inline-progression-dimension=,
+ width=]
+
+% \XMLattributeset{fo:aural},
+
+\defineXMLnested
+ [fo:table-header]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ visibility=]
+ {\beginXMLelement\bTABLEhead}
+ {\eTABLEhead\endXMLelement}
+
+% \XMLattributeset{fo:aural},
+
+\defineXMLnested
+ [fo:table-footer]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ visibility=]
+ {\beginXMLelement\bTABLEfoot}
+ {\eTABLEfoot\endXMLelement}
+
+% \XMLattributeset{fo:aural},
+
+\defineXMLnested
+ [fo:table-body]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ visibility=]
+ {\beginXMLelement\bTABLEbody}
+ {\eTABLEbody\endXMLelement}
+
+% TODO: when stretch and when not
+
+% \XMLattributeset{fo:aural},
+% keep-together=,
+
+\defineXMLnested
+ [fo:table-row]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ break-after=,
+ break-before=,
+ height=,
+ keep-with-next=,
+ keep-with-previous=,
+ visibility=]
+ {\beginXMLelement
+ \directsetup{fo:table-row:start}%
+ \expanded{\bTR[\the\scratchtoks]}%
+ \beginXMLelement}
+ {\endXMLelement
+ \eTR
+ \directsetup{fo:table-row:stop}
+ \endXMLelement}
+
+\startsetups fo:table-row:start
+
+ \inTABLErowtrue
+
+ \scratchtoks\emptytoks
+
+ \doifsomething{\XMLop{height}}
+ {\FOtableH\textheight
+ \setpercentdimen\FOtableH{\XMLop{height}}
+ \appendetoks
+ height=\the\FOtableH
+ \to \scratchtoks}
+
+ \appendetoks
+ ,extras={\rescanXMLattributes{fo:table-row}}
+ \to\scratchtoks
+
+\stopsetups
+
+\startsetups fo:table-row:stop
+
+ \inTABLErowfalse
+
+\stopsetups
+
+% \XMLattributeset{fo:aural},
+% display-align=,
+% relative-align=,
+% empty-cells=,
+
+\newif\ifinTABLErow
+\newdimen\FOtablecellwidth
+\newdimen\FOtablecellheight
+
+\defineXMLnested
+ [fo:table-cell]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:relative-position},
+ border-after-precedence=,
+ border-before-precedence=,
+ border-end-precedence=,
+ border-start-precedence=,
+ column-number=,
+ ends-row=,
+ height=,
+ inline-progression-dimension=,
+ number-columns-spanned=1,
+ number-rows-spanned=1,
+ starts-row=,
+ width=]
+ {\directsetup{fo:table-cell:start}%
+ \expanded{\bTD[\the\scratchtoks]}%
+ \beginXMLelement}
+ {\endXMLelement
+ \eTD
+ \directsetup{fo:table-cell:stop}}
+
+\startsetups fo:table-column:action
+
+ \doifelsenothing{\XMLop{column-number}}
+ {\increment\FOtablecolumn}
+ {\edef\FOtablecolumn{\XMLop{column-number}}
+ \expanded{\setupTABLE[column][\FOtablecolumn][n=\FOtablecolumn]}}
+
+ \doifsomething{\XMLop{column-width}}
+ {%\setlocalhsize
+ %\FOtableW\localhsize
+ \analyzefunction{\XMLop{column-width}}%
+ % hm, we need to set localhsize earlier
+ \doifelse\functionname{proportional-column-width}
+ {\FOtableW\functionA\textwidth}
+ {\FOtableW\textwidth
+ \setpercentdimen\FOtableW{\XMLop{column-width}}}%
+ \expanded{\setupTABLE[column][\FOtablecolumn][width=\the\FOtableW]}}
+
+ \doif{\XMLop{border-style}}{none}
+ {\expanded{\setupTABLE[column][\FOtablecolumn][frame=off]}}
+
+ \doifelsenothing{\XMLop{display-align}}
+ {\doifsomething{\XMLop{text-align}}
+ {\expanded{\setupTABLE[column][\FOtablecolumn]
+ [align=\XMLpav{fo:align-key}{fo:table-column}{text-align}{normal}]}}}
+ {\doifsomething{\XMLop{text-align}}
+ {\expanded{\setupTABLE[column][\FOtablecolumn]
+ [align={\XMLpav{fo:display-align}{fo:table-column}{display-align}{high},\XMLpav{fo:align-key}{fo:table-column}{text-align}{normal}}]}}
+ {\expanded{\setupTABLE[column][\FOtablecolumn]
+ [align=\XMLpav{fo:display-align}{fo:table-column}{display-align}{high}]}}}
+
+\expanded{\setupTABLE[column][\FOtablecolumn][extras={\rescanXMLattributes{fo:table-column}}]}
+
+\stopsetups
+
+\startsetups fo:table-cell:start
+
+ \doif{\XMLop{starts-row}}{true}{\ifinTABLErow\eTR\inTABLErowfalse\fi}
+
+ \ifinTABLErow\else\bTR\inTABLErowtrue\fi
+
+ \doifelsenothing{\XMLop{background-color}}
+ {\let\FoTableBG\empty}
+ {\checkhexcolor[\XMLop{background-color}]
+ \doifcolorelse{\XMLop{background-color}}
+ {\def\FoTableBG{color}}
+ {\setXMLpar{fo:table-cell}{background-color}{}
+ \let\FoTableBG\empty}}
+
+% \doifelse{\XMLpar{fo:table-cell}{width}{}}{}
+% {\def\pFOtablewidth{fit}}
+% {\FOtablecellwidth\textwidth % probably must be localhsize or frozen at an outer level
+% \setpercentdimen\FOtablecellwidth{\XMLpar{fo:table-cell}{width}{0pt}}%
+% \edef\pFOtablewidth{\the\FOtablecellwidth}}%
+
+% \doifelse{\XMLpar{fo:table-cell}{height}{}}{}
+% {\def\pFOtableheight{fit}}
+% {\FOtablecellheight\textheight % probably must be localhsize or frozen at an outer level
+% \setpercentdimen\FOtablecellheight{\XMLpar{fo:table-cell}{height}{0pt}}%
+% \edef\pFOtableheight{\the\FOtablecellheight}}%
+
+ \scratchtoks\emptytoks \appendetoks
+% style=\noexpand\directsetup{fo:font:setup}, % else not expanded
+ nx=\XMLop{number-columns-spanned},
+ ny=\XMLop{number-rows-spanned},
+ n=\XMLop{column-number},
+ background=\FoTableBG
+ \to \scratchtoks
+
+ \doifnot{\XMLop{border-style}}{none}
+ {\appendetoks
+ ,frame=on
+ \to\scratchtoks}
+
+ \doifsomething{\XMLop{background-color}}
+ {\appendetoks
+ ,backgroundcolor=\XMLop{background-color}
+ \to \scratchtoks}
+
+ % todo : padding
+
+ \doifsomething{\XMLop{padding}}
+ {\appendetoks
+ ,offset=\XMLop{padding}
+ \to \scratchtoks}
+
+ % todo: interference with presets in column (outer level) -> \setupcolumn[column] ...;
+ % misschien meerdere align switches
+
+ \doifelsenothing{\XMLop{display-align}}
+ {\doifsomething{\XMLop{text-align}}
+ {\appendetoks
+ ,align=\XMLpav{fo:align-key}{fo:table-cell}{text-align}{normal}
+ \to \scratchtoks}}
+ {\doifsomething{\XMLop{text-align}}
+ {\appendetoks
+ ,align={\XMLpav{fo:display-align}{fo:table-cell}{display-align}{high},\XMLpav{fo:align-key}{fo:table-cell}{text-align}{normal}},
+ \to \scratchtoks}
+ {\appendetoks
+ ,align=\XMLpav{fo:display-align}{fo:table-cell}{display-align}{high}
+ \to \scratchtoks}}
+
+ \appendetoks
+ ,extras={\rescanXMLattributes{fo:table-cell}}
+ \to\scratchtoks
+
+\stopsetups
+
+% \startsetups fo:table-cell:setup
+
+% [\XMLpar{fo:table-cell}{text-indent}{}]
+
+% \edefXMLinhpar\xFOtextindent{fo:table-cell}{text-indent}
+
+% \doifsomething\xFOtextindent
+% {\scratchdimen\hsize
+% \setpercentdimen\scratchdimen\xFOtextindent
+% \expanded{\setupindenting[\the\scratchdimen]}}
+
+% \stopsetups
+
+\startsetups fo:table-cell:stop
+
+ \doif{\XMLop{ends-row}}{true}{\eTR\inTABLErowfalse}
+
+\stopsetups
+
+%D Element: fo:list-block fo:list-item fo:list-body fo:list-item-label
+
+% \XMLattributeset{fo:aural},
+% intrusion-displace=,
+% keep-together=,
+% provisional-distance-between-starts=24pt,
+% provisional-label-separation=6pt,
+
+\defineXMLenvironment
+ [fo:list-block]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:relative-position},
+ break-after=,
+ break-before=,
+ keep-with-next=,
+% space-between-list-rows=, % ? mentioned in bradley
+text-indent=0pt, % yes
+ keep-with-previous=]
+ {\beginXMLelement\directsetup{fo:list:start}}
+ {\directsetup{fo:list:stop}\endXMLelement}
+
+\startsetups fo:list:start
+ \endgraf
+ \begingroup
+ \directsetup{fe:setup}
+ \disablemode[fo:in-list]
+ % \forgetall, no!
+% \directsetup{fo:break-and-space:before}
+ \directsetup{fo:indent:setup}
+ \begingroup
+\stopsetups
+
+\startsetups fo:list:stop
+ \endgraf
+ \endgroup
+% \directsetup{fo:break-and-space:after}
+ \endgroup
+\stopsetups
+
+% \XMLattributeset{fo:aural},
+% relative-align=,
+% intrusion-displace=,
+% keep-together=,
+
+% The list model is plain stupid. Instead of just defining a few mechanism
+% or using some kind of type attribute, a strange mechanism of functions is
+% used. Why on the one hand introduce redundant attributes and on the other
+% hand safe a few elements. A proper segmentation of the problem would have
+% brought better solutions.
+
+\defineXMLenvironment
+ [fo:list-item]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-block},
+ \XMLattributeset{fo:relative-position},
+ break-after=,
+ break-before=,
+ keep-with-next=,
+ keep-with-previous=]
+ {\beginXMLelement\directsetup{fo:list-item:start}}
+ {\directsetup{fo:list-item:stop}\endXMLelement}
+
+% check what is needed
+
+\newdimen\FOlistitemlabelhsize \newdimen\FOlistitembodyhsize \newdimen\FOlistitemdistance
+\newdimen\FOlistitemlabelleftskip \newdimen\FOlistitembodyleftskip
+\newdimen\FOlistitemlabelrightskip \newdimen\FOlistitembodyrightskip
+
+\defineXMLnestedsave
+ [fo:list-item-body]
+ [\XMLattributeset{fo:inherited},
+ id=, % keep-together=,
+ \XMLattributeset{fo:accessibility}]
+
+\defineXMLnestedsave
+ [fo:list-item-label]
+ [\XMLattributeset{fo:inherited},
+ id=, % keep-together=,
+ \XMLattributeset{fo:accessibility}]
+
+\startsetups fo:list-item:start
+
+ \bgroup
+
+% \startmode[fo:in-list]
+% \doifsomething{\XMLpar{fo:list-block}{space-between-list-rows}{}}
+% {\vskip\XMLpar{fo:list-block}{space-between-list-rows}{}} % todo ! ! ! !
+% \stopmode
+
+ \enablemode[fo:in-list]
+
+\stopsetups
+
+% todo : relative-align in list item
+
+\newif\ifFOlabelend
+\newif\ifFObodystart
+
+\startsetups fo:list-item:stop
+
+ % 24pt en 6pt in fo:root instellen
+
+ % \tracebackXMLattribute{provisional-distance-between-starts}
+
+ \edefXMLinh \FOprodis {provisional-distance-between-starts}
+ \edefXMLinh \FOprolab {provisional-label-separation}
+
+% \edef\FOprodis{\XMLpar{fo}{provisional-distance-between-starts}{}}
+% \edef\FOprolab{\XMLpar{fo}{provisional-label-separation}{}}
+
+ \edef\FOprodis{\ifx\FOprodis\empty24pt\else\FOprodis\fi}
+ \edef\FOprolab{\ifx\FOprolab\empty 6pt\else\FOprolab\fi}
+
+ \setlocalhsize
+
+ \FOlistitemlabelleftskip \zeropoint
+ \FOlistitemlabelrightskip\zeropoint
+ \FOlistitembodyleftskip \zeropoint
+ \FOlistitembodyrightskip \zeropoint
+
+ \doifelse{\XMLpar{fo:list-item-label}{end-indent} {}}{label-end()} \FOlabelendtrue \FOlabelendfalse
+ \doifelse{\XMLpar{fo:list-item-body} {start-indent}{}}{body-start()}\FObodystarttrue\FObodystartfalse
+
+ \setpercentdimen\FOlistitemlabelleftskip {\XMLpar{fo:list-item-label}{start-indent}{0pt}}
+ \setpercentdimen\FOlistitembodyrightskip {\XMLpar{fo:list-item-body} {end-indent} {0pt}}
+
+ % maybe i need to implement something configurable
+
+ \ifFObodystart
+ \ifFOlabelend
+ \FOlistitemlabelrightskip\dimexpr(\localhsize-\FOlistitemlabelleftskip-\FOprodis+\FOprolab)
+ \FOlistitembodyleftskip\dimexpr(\FOlistitemlabelleftskip+\FOprodis)
+ \FOlistitemlabelhsize\dimexpr(\FOprodis-\FOprolab)
+ \else
+ \setpercentdimen\FOlistitemlabelrightskip{\XMLpar{fo:list-item-label}{end-indent}{0pt}}
+ \FOlistitemlabelhsize\dimexpr(\localhsize-\FOlistitemlabelleftskip-\FOlistitemlabelrightskip)
+ \FOlistitembodyleftskip\dimexpr(\FOlistitemlabelleftskip+\FOlistitemlabelhsize+\FOprolab)
+ \fi
+ \FOlistitemdistance \dimexpr(\FOprolab)
+ \else
+ \setpercentdimen\FOlistitembodyleftskip{\XMLpar{fo:list-item-body}{start-indent}{0pt}}
+ \ifFOlabelend
+ \FOlistitemlabelrightskip\dimexpr(\localhsize-\FOlistitembodyleftskip+\FOprolab)
+ \FOlistitemlabelhsize\dimexpr(\localhsize-\FOlistitemlabelleftskip-\FOlistitemlabelrightskip)
+ \FOlistitemdistance \dimexpr(\FOprolab)
+ \else
+ \setpercentdimen\FOlistitemlabelrightskip{\XMLpar{fo:list-item-label}{end-indent}{0pt}}
+ \FOlistitemlabelhsize\dimexpr(\localhsize-\FOlistitemlabelleftskip-\FOlistitemlabelrightskip)
+ \FOlistitemdistance \dimexpr(\FOlistitembodyleftskip-\FOlistitemlabelleftskip-\FOlistitemlabelhsize)
+ \fi
+ \fi
+
+ % is this fall back permitted ?
+
+ \ifzeropt\FOlistitemlabelleftskip \ifzeropt\FOlistitemlabelrightskip
+ \FOlistitembodyleftskip\FOprodis
+ \FOlistitemdistance\FOprolab
+ \FOlistitemlabelhsize\dimexpr(\FOlistitembodyleftskip-\FOlistitemdistance)
+ \fi \fi
+
+ %
+
+ \FOlistitembodyhsize\localhsize
+
+ \advance\FOlistitembodyhsize-\FOlistitembodyleftskip
+ \advance\FOlistitembodyhsize-\FOlistitembodyrightskip
+
+ \doifelse{\XMLpar{fo:list-item}{display-align}{}}{center}
+ {\directsetup{fo:list-item:display}}
+ {\directsetup{fo:list-item:text}}
+
+ \egroup
+
+\stopsetups
+
+% todo: textindent
+
+\startsetups fo:list-item:display
+
+ \endgraf
+
+ \advance\leftskip \FOlistitemlabelleftskip
+ \advance\rightskip\FOlistitembodyrightskip
+
+ \dontleavehmode \valign\bgroup\forgetall\vss##\vss\cr
+ \iftracingFO\ruledvtop\else\vbox\fi{\hsize\FOlistitemlabelhsize\directsetup{fo:list-item-label:setup}\XMLflush{fo:list-item-label}}\cr
+ \iftracingFO\ruledvtop\else\vbox\fi{\hsize\FOlistitembodyhsize \directsetup{fo:list-item-body:setup}\XMLflush{fo:list-item-body}}\cr
+ \egroup
+
+% \dontleavehmode \placesidebyside % or maybe paired boxes (legends)
+% {\ruledvtop{\forgetall\hsize\FOlistitemlabelhsize\XMLflush{fo:list-item-label}}}
+% {\ruledvtop{\forgetall\hsize\FOlistitembodyhsize \XMLflush{fo:list-item-body}}}
+
+ \endgraf
+
+\stopsetups
+
+\newtoks\savedeverypar \savedeverypar\everypar
+
+\startsetups fo:list-item:text
+
+ \everypar\savedeverypar % \appendtoksonce\insertparagraphintro\to\everypar % hack, binnen footnote ...
+
+ \advance\leftskip \FOlistitembodyleftskip
+ \advance\rightskip\FOlistitembodyrightskip
+
+ \setupparagraphintro[first][\directsetup{fo:list-item-label:process}]
+ \setupparagraphintro[next] [\begstrut\resetpenalties\clubpenalties]
+ \directsetup{fo:list-item-body:setup}
+ \XMLflush{fo:list-item-body}\endstrut
+
+\stopsetups
+
+\startsetups fo:list-item-label:setups
+
+ \edefXMLinhpar\xFOtextindent{fo:item-label}{text-indent}
+
+ \doifsomething\xFOtextindent
+ {\scratchdimen\hsize
+ \setpercentdimen\scratchdimen\xFOtextindent
+ \expanded{\setupindenting[\the\scratchdimen]}}
+
+\stopsetups
+
+\startsetups fo:list-item-body:setups
+
+ \edefXMLinh\xFOtextindent{fo:item-body}{text-indent}
+
+ \doifsomething\xFOtextindent
+ {\scratchdimen\hsize
+ \setpercentdimen\scratchdimen\xFOtextindent
+ \expanded{\setupindenting[\the\scratchdimen]}}
+
+\stopsetups
+
+\newbox\FOitembox
+
+\startsetups fo:list-item-label:process
+
+ \setbox \FOitembox \iftracingFO \ruledvtop \else \vtop \fi \bgroup
+ \forgetall
+ \postponefootnotes
+ \hsize\FOlistitemlabelhsize
+ \directsetup{fo:list-item-label:setup}
+ \XMLflush{fo:list-item-label}
+ \egroup
+ \getnoflines{\dimexpr(\ht\FOitembox+\dp\FOitembox)}
+ \setpenalties\clubpenalties\noflines\maxdimen
+ \strut\llap{\box\FOitembox\hskip\FOlistitemdistance}
+
+\stopsetups
+
+% \setlocalhsize \hsize\localhsize
+
+%D Element: fo:basic-link
+
+% \XMLattributeset{fo:aural},
+% keep-together=,
+% line-height=,
+
+\defineXMLenvironmentsave
+ [fo:basic-link]
+ [\XMLattributeset{fo:inherited},
+ id=,
+ \XMLattributeset{fo:accessibility},
+ \XMLattributeset{fo:border-padding-background},
+ \XMLattributeset{fo:margin-inline},
+ \XMLattributeset{fo:relative-position},
+ alignment-adjust=,
+ alignment-baseline=,
+ baseline-shift=,
+ destination-placement-offset=,
+ dominant-baseline=,
+ external-destination=,
+ indicate-destination=,
+ internal-destination=,
+ keep-with-next=,
+ keep-with-previous=,
+ show-destination=,
+ target-processing-context=,
+ target-presentation-context=,
+ target-stylesheet=]
+ {}
+ {\directsetup{fo:basic-link}}
+
+\startsetups fo:basic-link
+
+ \goto{\XMLflushself}[unknown]
+
+\stopsetups
+
+%D Element: fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-properties fo:multi-property-set
+
+\defineXMLprocess[fo:multi-switch]
+\defineXMLprocess[fo:multi-case]
+\defineXMLprocess[fo:multi-toggle]
+\defineXMLprocess[fo:multi-properties]
+\defineXMLprocess[fo:multi-property-set]
+
+%D Element: fo:float
+
+\defineXMLenvironmentsave
+ [fo:float]
+ [\XMLattributeset{fo:inherited},
+ float=before,
+ clear=]
+ {}
+ {\directsetup{fo:float:process}}
+
+% clear: start end left right both none inherit
+% float: before start end left right none
+
+\mapXMLvalue {fo:float-position} {before} {here} % todo
+\mapXMLvalue {fo:float-position} {start} {here} % todo
+\mapXMLvalue {fo:float-position} {end} {here} % todo
+\mapXMLvalue {fo:float-position} {left} {left}
+\mapXMLvalue {fo:float-position} {right} {right}
+\mapXMLvalue {fo:float-position} {none} {here} % todo
+
+\startsetups fo:float:process
+
+ \placefigure
+ [\XMLval{fo:float-position}{\XMLop{float}},none]
+ {}
+ {\XMLflushself}
+
+\stopsetups
+
+%D Element: fo:footnote fo:footnote-body
+
+% Let's assume that 'whatever' contains the number or footnote marker.
+%
+% <fo:footnote>whatever<fo:footnote-body>note</fo:footnote-body></fo:footnote>
+
+% todo xsl-footnote area
+
+\defineXMLprocess
+ [fo:footnote]
+ [\XMLattributeset{fo:accessibility}]
+
+\defineXMLargument
+ [fo:footnote-body]
+ [\XMLattributeset{fo:accessibility}]
+ {\footnote[-]}
+
+%D Element: fo:wrapper
+
+\defineXMLenvironment % todo: all inheritable
+ [fo:wrapper]
+ [\XMLattributeset{fo:inherited},
+ \XMLattributeset{fe:tracing},
+ \XMLattributeset{fo:fonts},
+ \XMLattributeset{fo:hyphenation}]
+ {\beginXMLelement\begingroup\directsetup{fo:wrapper}}
+ {\endgroup\endXMLelement}
+
+\startsetups fo:wrapper
+
+ \directsetup{fe:setup}
+ \directsetup{fo:hyphenation:setup}
+ \directsetup{fo:font:setup}
+
+\stopsetups
+
+%D Element: fo:marker fo:retrieve-marker
+
+% In order to support 'retrieve-boundary' (page, page-sequence,
+% document) I need to extend the context mark handler.
+
+% This object will probably interfere with a too spacy layout since
+% it is unaware if its surrounding.
+
+\defineXMLenvironmentsave
+ [fo:marker]
+ [marker-class-name=unknown]
+ {}
+ {\directsetup{fo:marker:process}}
+
+\startsetups fo:marker:process
+
+ \doifmarkingelse{fo:\XMLop{marker-class-name}}
+ {} {\definerawmarking[fo:\XMLop{marker-class-name}]}
+
+ \expanded{\marking[fo:\XMLop{marker-class-name}]{\XMLflushself}}
+
+\stopsetups
+
+\defineXMLcommand
+ [fo:retrieve-marker]
+ [retrieve-class-name=unknown,
+ retrieve-position=first-starting-within-page,
+ retrieve-boundary=]
+ {\directsetup{fo:retrieve-marker:process}}
+
+\mapXMLvalue {fo:marker-position} {first-starting-within-page} {first} % first mark
+\mapXMLvalue {fo:marker-position} {first-including-carryover} {previous} % top mark
+\mapXMLvalue {fo:marker-position} {last-starting-within-page} {first} % dunno
+\mapXMLvalue {fo:marker-position} {last-ending-within-page} {last} % bot mark
+
+\startsetups fo:retrieve-marker:process
+
+ \expanded{\getmarking
+ [fo:\XMLop{retrieve-class-name}]
+ [\XMLval{fo:marker-position}{\XMLop{retrieve-position}}{first}]}
+
+\stopsetups
+
+%D Auxiliary macros
+
+\unprotect
+
+\def\noFOchecks#1\od{}
+
+\def\FOassignskip#1#2#3%
+ {\edef\!!stringa{\XMLpar{#1}{#2}\empty}%
+ \edef\!!stringb{\XMLpar{#1}{#2.optimum}\empty}%
+ \edef\!!stringc{\XMLpar{#1}{#2.minimum}\empty}%
+ \edef\!!stringd{\XMLpar{#1}{#2.maximum}\empty}%
+ \dimen0=\ifx\!!stringa\empty\zeropoint\else\!!stringa\fi
+ \dimen2=\ifx\!!stringb\empty\dimen0 \else\!!stringb\fi
+ \dimen4=\dimexpr(\ifx\!!stringd\empty\dimen0 \else\!!stringd\fi-\dimen2)\relax
+ \dimen6=\dimexpr(\ifx\!!stringc\empty\dimen0 \else\!!stringc\fi-\dimen2)\relax
+ #3=\dimen2 \ifzeropt\dimen4 \else\!!plus\dimen4 \fi\ifzeropt\dimen6 \else\!!minus\dimen6 \fi\relax}
+
+\mapXMLvalue{fo:space:conditionality} {retain} {\let\next\retainedskip }
+\mapXMLvalue{fo:space:conditionality} {discard} {\let\next\discardedskip}
+\mapXMLvalue{fo:space:conditionality} {} {\let\next\discardedskip}
+
+\mapXMLvalue{fo:space:precedence} {force} {\let\next\forcedskip}
+
+\def\FOdoskip#1#2%
+ {\begingroup
+ \iftracingFO\showskips\fi
+ \FOassignskip{#1}{#2}\scratchskip
+ \XMLval{fo:space:conditionality}{\XMLpar{#1}{#2.conditionality}\empty}\empty
+ \XMLval{fo:space:precedence}{\XMLpar{#1}{#2.precedence}\empty}\empty
+ \ifdim\scratchskip=\zeropoint
+ \ifdim\gluestretch\scratchskip=\zeropoint
+ \ifdim\glueshrink\scratchskip=\zeropoint
+ \let\next\gobbleoneargument
+ \fi
+ \fi
+ \fi
+ \next\scratchskip
+ \endgroup}
+
+\def\doFObeforeskip#1{\FOdoskip{#1}{space-before}}
+\def\doFOafterskip #1{\FOdoskip{#1}{space-after}}
+
+\def\FOassignspace#1#2#3%
+ {\edef\!!stringa{\XMLpar{#1}{#2}\empty}%
+ \ifx\!!stringa\empty
+ #3=\zeropoint
+ \else
+ #3=1em% ?
+ \setpercentdimen#3\!!stringa
+ \fi
+ \relax}
+
+\def\FOdospace#1#2%
+ {\begingroup
+ \iftracingFO\showskips\fi
+ \FOassignspace{#1}{#2}\scratchskip
+ \ifdim\scratchskip=\zeropoint \else
+ \hskip\scratchskip
+ \fi
+ \endgroup}
+
+\def\doFOstartspace#1{\FOdospace{#1}{space-start}}
+\def\doFOendspace #1{\FOdospace{#1}{space-end}}
+
+\def\checkFOborder#1#2%
+ {\edef\FOattribute{\XMLpar{#1}{border-#2}\empty}%
+ \ifx\FOattribute\empty\else
+ \edef\FOtag{#1}%
+ \edef\FOatt{border-#2}%
+ \expanded{\docheckFOborder\FOattribute\space\relax\space\relax}\od
+ \fi}
+
+\def\docheckFOborder#1#2 #3%
+ {\ifx#1\relax
+ \expandafter\noFOchecks
+ \else
+ \doifhexcolorelse{#1#2}
+ {\setXMLpar\FOtag{\FOatt-color}{#1#2}}
+ {\doifelsenothing{\XMLval{fo:border-style}{#1#2}\empty}
+ {\doifcolorelse{#1#2}
+ {\setXMLpar\FOtag{\FOatt-color}{#1#2}}
+ {\setXMLpar\FOtag{\FOatt-width}{#1#2}}}
+ {\setXMLpar\FOtag{\FOatt-style}{#1#2}}}%
+ \expandafter\docheckFOborder
+ \fi#3}
+
+\def\checkFOposition#1#2%
+ {\edef\FOattribute{\XMLpar{#1}{#2-position}\empty}%
+ \ifx\FOattribute\empty\else
+ \edef\FOtag{#1}%
+ \edef\FOatt{#2-position}%
+ \scratchcounter\zerocount
+ \expanded{\docheckFOposition\FOattribute\space\relax\space\relax}\od
+ \fi}
+
+\def\docheckFOposition#1#2 #3%
+ {\ifx#1\relax
+ \expandafter\noFOchecks
+ \else
+ \advance\scratchcounter\plusone
+ \ifcase\scratchcounter
+ \or
+ \setXMLpar\FOtag{\FOatt-vertical}{#1#2}%
+ \or
+ \setXMLpar\FOtag{\FOatt-horizontal}{#1#2}%
+ \fi
+ \expandafter\docheckFOposition
+ \fi#3}
+
+\def\checkFOpadding{\def\FOatt{padding}\checkFOquadruple}
+\def\checkFOmargin {\def\FOatt{margin}\checkFOquadruple}
+
+\def\checkFOquadruple#1%
+ {\edef\FOattribute{\XMLpar{#1}\FOatt\empty}%
+ \ifx\FOattribute\empty\else
+ \edef\FOtag{#1}%
+ \scratchcounter\zerocount
+ \expanded{\docheckFOquadruple\FOattribute\space\relax\space\relax}\od
+ \ifcase\scratchcounter
+ \let\FOattributeT\FOattribute
+ \let\FOattributeR\FOattribute
+ \let\FOattributeB\FOattribute
+ \let\FOattributeL\FOattribute
+ \or % (tblr)
+ \let\FOattributeT\FOattribute
+ \let\FOattributeR\FOattribute
+ \let\FOattributeB\FOattribute
+ \let\FOattributeL\FOattribute
+ \or % (tb)(lr)
+ \let\FOattributeB\FOattributeT
+ \let\FOattributeL\FOattributeR
+ \or % (t)(lr)(b)
+ \let\FOattributeL\FOattributeR
+ \or % (t)(r)(b)(l)
+ % already ok
+ \fi
+ \letXMLpar\FOtag{\FOatt-top}\FOattributeT
+ \letXMLpar\FOtag{\FOatt-right}\FOattributeR
+ \letXMLpar\FOtag{\FOatt-bottom}\FOattributeB
+ \letXMLpar\FOtag{\FOatt-left}\FOattributeL
+ \fi}
+
+\def\docheckFOquadruple#1#2 #3%
+ {\ifx#1\relax
+ \expandafter\noFOchecks
+ \else
+ \advance\scratchcounter\plusone
+ \ifcase\scratchcounter
+ \or
+ \edef\FOattributeT{#1#2}%
+ \or
+ \edef\FOattributeR{#1#2}%
+ \or
+ \edef\FOattributeB{#1#2}%
+ \or
+ \edef\FOattributeL{#1#2}%
+ \fi
+ \expandafter\docheckFOquadruple
+ \fi#3}
+
+% \def\setFOimagename#1%
+% {\edef\FOimagename{#1}%
+% \aftersplitstring \FOimagename\at url('\to\xFOimagename
+% \ifx\xFOimagename\empty \else
+% \beforesplitstring\xFOimagename\at ')\to\FOimagename
+% \fi
+% \aftersplitstring \FOimagename\at url("\to\xFOimagename
+% \ifx\xFOimagename\empty \else
+% \beforesplitstring\xFOimagename\at ")\to\FOimagename
+% \fi}
+%
+% let's overkill:
+
+\def\setFOimagename#1%
+ {\analyzefunction{#1}%
+ \doifelse\functionname{url}
+ {\edef\FOimagename{\@EA\unstringed\functionA}}
+ {\ifx\functionname\empty
+ \def\FOimagename{#1}%
+ \else
+ \def\FOimagename{dummy}%
+ \fi}}
+
+% font
+
+\mapXMLvalue {fo:weight} {normal} {}
+\mapXMLvalue {fo:weight} {bold} {bold}
+\mapXMLvalue {fo:weight} {bolder} {bold}
+\mapXMLvalue {fo:weight} {lighter} {normal}
+\mapXMLvalue {fo:weight} {100} {normal}
+\mapXMLvalue {fo:weight} {200} {normal}
+\mapXMLvalue {fo:weight} {300} {normal}
+\mapXMLvalue {fo:weight} {400} {normal}
+\mapXMLvalue {fo:weight} {500} {normal}
+\mapXMLvalue {fo:weight} {600} {normal}
+\mapXMLvalue {fo:weight} {700} {normal}
+\mapXMLvalue {fo:weight} {800} {normal}
+\mapXMLvalue {fo:weight} {900} {normal}
+
+\mapXMLvalue {fo:variant} {normal} {}
+\mapXMLvalue {fo:variant} {small-caps} {small-caps}
+
+\mapXMLvalue {fo:style} {normal} {normal}
+\mapXMLvalue {fo:style} {italic} {italic}
+\mapXMLvalue {fo:style} {oblique} {oblique}
+\mapXMLvalue {fo:style} {backslant} {normal}
+
+% we can get crap like: 10pt/1.5 bold "Times Roman" ; i'm really puzzled why an
+% otherwise rather verbose coding occasionally packs attributes; a design flaw
+
+\unprotect
+
+\newtoks\FOfonttoks
+
+\def\checkFOfontSS#1'{}
+\def\checkFOfontDD#1"{}
+\def\checkFOfontII#1 {}
+
+\bgroup
+\catcode`\'=\active
+\catcode`\"=\active
+\catcode`\/=\active
+\gdef\setcheckFOfontX
+ {\catcode`\'=\active
+ \catcode`\"=\active
+ \catcode`\/=\active
+ \def'##1'{\global\FOfonttoks\expandafter{\the\FOfonttoks\def\FOfontfamily{##1}}}%
+ \def"##1"{\global\FOfonttoks\expandafter{\the\FOfonttoks\def\FOfontfamily{##1}}}%
+ \def/##1 {}}% todo linespacing
+\gdef\setcheckFOfontXX
+ {\catcode`\'=\active
+ \catcode`\"=\active
+ \catcode`\/=\active
+ \def'##1'{}%
+ \def"##1"{}%
+ \def/##1 {}}% todo linespacing
+\egroup
+
+\globallet\xFOattribute\empty
+
+\def\checkFOfont#1%
+ {\FOfonttoks\emptytoks
+ \bgroup
+ \catcode`\\=\@@escape
+ \catcode`\{=\@@begingroup
+ \catcode`\}=\@@endgroup
+% \catcode`\:=\@@letter
+% \catcode`\-=\@@letter
+ \setcheckFOfontX
+ \xdef\xFOattribute{#1 }%
+ \setbox\scratchbox\hbox{\scantokens\@EA{\xFOattribute}}%
+ \setcheckFOfontXX
+ \scantokens\@EA{\@EA\xdef\@EA\xFOattribute\@EA{\xFOattribute}}%
+ \egroup
+ \the\FOfonttoks
+ \ifx\xFOattribute\empty\else
+ \expanded{\docheckFOfont\xFOattribute\space\relax\space\relax}\od
+ \fi
+ \directsetup{fo:font:family:check}}
+
+\def\docheckFOfont#1#2 #3%
+ {\ifx#1\relax
+ \expandafter\noFOchecks
+ \else
+ \directsetup{fo:fonts:reset}%
+ \doifelsefontsynonym{#1#2}
+ {\def\FOfontfamily{#1#2}}
+ {\doifelsenothing{\XMLval{fo:weight}{#1#2}{}}
+ {\doifelsenothing{\XMLval{fo:variant}{#1#2}{}}
+ {\doifelsenothing{\XMLval{fo:style}{#1#2}{}}
+ {\setpercentdimen\dFOfontsize{#1#2}}
+ {\edef\FOfontstyle{\XMLval{fo:style}{#1#2}{}}}}
+ {\edef\FOfontvariant{\XMLval{fo:variant}{#1#2}{}}}}
+ {\edef\FOfontweight{\XMLval{fo:weight}{#1#2}{}}}}%
+ \expandafter\docheckFOfont
+ \fi#3}
+
+\protect
+
+\newtoks\FOreferences
+
+\def\setFOreference#1%
+ {\doifsomething{\XMLpar{#1}{id}{}}
+ {\expanded{\appendtoks
+ \noexpand\reference[\XMLpar{#1}{id}{}]{\XMLpar{fo:page-sequence}{format}{}}}%
+ \to\FOreferences}}
+
+\def\flushFOreferences
+ {\the\FOreferences
+ \global\FOreferences\emptytoks}
+
+\def\doFOreference#1%
+ {\doifsomething{\XMLpar{#1}{id}{}}
+ {\expanded{\reference[\XMLpar{#1}{id}{}]{\XMLpar{fo:page-sequence}{format}{}}}}}
+
+\appendtoks \flushFOreferences \to \everypar
+\appendtoks \flushFOreferences \to \neverypar % check !
+
+\protect
+
+%D Graphics: static frames
+
+\startMPinclusions
+ input mp-fobg.mp ;
+\stopMPinclusions
+
+\def\unknownMPcolor{FoNoColor}
+
+% todo: combine into one en alleen tweede run, immers toch geen invloed; is
+% aangezien de referentiepunten vast liggen
+
+\def\FoRegionWidth#1%
+ {\XMLpav
+ {fo:border-width}
+ {fo:region-\MPvar{location}}
+ {border-#1-width}
+ {FoMedium}}
+
+\def\FoRegionStyle#1%
+ {\XMLpav
+ {fo:border-style}
+ {fo:region-\MPvar{location}}
+ {border-#1-style}
+ {FoNone}}
+
+\def\FoRegionColor#1%
+ {\MPcolor{\XMLpar
+ {fo:region-\MPvar{location}}
+ {border-#1-color}
+ {black}}}
+
+\def\FoRegionBackgroundColor
+ {\MPcolor{\XMLpar
+ {fo:region-\MPvar{location}}
+ {background-color}
+ {FoNoColor}}}
+
+% todo: when connected and same color : one draw
+
+\startuseMPgraphic{region-do}
+ FoBackgroundColor := \FoRegionBackgroundColor ;
+ FoLineColor[FoTop] := \FoRegionColor{top} ;
+ FoLineColor[FoBottom] := \FoRegionColor{bottom} ;
+ FoLineColor[FoLeft] := \FoRegionColor{left} ;
+ FoLineColor[FoRight] := \FoRegionColor{right} ;
+ FoLineStyle[FoTop] := \FoRegionStyle{top} ;
+ FoLineStyle[FoBottom] := \FoRegionStyle{bottom} ;
+ FoLineStyle[FoLeft] := \FoRegionStyle{left} ;
+ FoLineStyle[FoRight] := \FoRegionStyle{right} ;
+ FoLineWidth[FoTop] := \FoRegionWidth{top} ;
+ FoLineWidth[FoBottom] := \FoRegionWidth{bottom} ;
+ FoLineWidth[FoLeft] := \FoRegionWidth{left} ;
+ FoLineWidth[FoRight] := \FoRegionWidth{right} ;
+ if FoBackgroundColor <> FoNoColor :
+ fill OverlayBox
+ withcolor FoBackgroundColor ;
+ fi ;
+ path OverlayFrameBox ;
+ interim linecap := butt ;
+ OverlayFrameBox := OverlayBox
+ topenlarged -.5FoLineWidth[FoTop]
+ bottomenlarged -.5FoLineWidth[FoBottom]
+ leftenlarged -.5FoLineWidth[FoLeft]
+ rightenlarged -.5FoLineWidth[FoRight] ;
+ DrawFoFrame(FoTop, topboundary OverlayFrameBox) ;
+ DrawFoFrame(FoBottom, bottomboundary OverlayFrameBox) ;
+ DrawFoFrame(FoLeft, leftboundary OverlayFrameBox) ;
+ DrawFoFrame(FoRight, rightboundary OverlayFrameBox) ;
+\stopuseMPgraphic
+
+\startuseMPgraphic{region-body} \includeMPgraphic{region-do} \stopuseMPgraphic
+\startuseMPgraphic{region-before} \includeMPgraphic{region-do} \stopuseMPgraphic
+\startuseMPgraphic{region-after} \includeMPgraphic{region-do} \stopuseMPgraphic
+\startuseMPgraphic{region-start} \includeMPgraphic{region-do} \stopuseMPgraphic
+\startuseMPgraphic{region-end} \includeMPgraphic{region-do} \stopuseMPgraphic
+
+\startnotmode[fo-no-bg]
+
+\defineoverlay[region-body-graphic] [\useMPgraphic{region-body}{location=body}]
+\defineoverlay[region-before-graphic][\useMPgraphic{region-before}{location=before}]
+\defineoverlay[region-after-graphic] [\useMPgraphic{region-after}{location=after}]
+\defineoverlay[region-start-graphic] [\useMPgraphic{region-start}{location=start}]
+\defineoverlay[region-end-graphic] [\useMPgraphic{region-end}{location=end}]
+
+\stopnotmode
+
+% more efficient: todo: relocate and move to page background
+
+% \def\FoRegionWidth#1#2%
+% {\XMLpav
+% {fo:border-width}
+% {fo:region-#2}
+% {border-#1-width}
+% {FoMedium}}
+
+% \def\FoRegionStyle#1#2%
+% {\XMLpav
+% {fo:border-style}
+% {fo:region-#2}
+% {border-#1-style}
+% {FoNone}}
+
+% \def\FoRegionColor#1#2%
+% {\MPcolor{\XMLpar
+% {fo:region-#2}
+% {border-#1-color}
+% {black}}}
+
+% \def\FoRegionBackgroundColor#1%
+% {\MPcolor{\XMLpar
+% {fo:region-#1}
+% {background-color}
+% {FoNoColor}}}
+
+% \def\combinedFOgraphic#1%
+% {FoBackgroundColor := \FoRegionBackgroundColor{#1} ;
+% FoLineColor[FoTop] := \FoRegionColor{top}{#1} ;
+% FoLineColor[FoBottom] := \FoRegionColor{bottom}{#1} ;
+% FoLineColor[FoLeft] := \FoRegionColor{left}{#1} ;
+% FoLineColor[FoRight] := \FoRegionColor{right}{#1} ;
+% FoLineStyle[FoTop] := \FoRegionStyle{top}{#1} ;
+% FoLineStyle[FoBottom] := \FoRegionStyle{bottom}{#1} ;
+% FoLineStyle[FoLeft] := \FoRegionStyle{left}{#1} ;
+% FoLineStyle[FoRight] := \FoRegionStyle{right}{#1} ;
+% FoLineWidth[FoTop] := \FoRegionWidth{top}{#1} ;
+% FoLineWidth[FoBottom] := \FoRegionWidth{bottom}{#1} ;
+% FoLineWidth[FoLeft] := \FoRegionWidth{left}{#1} ;
+% FoLineWidth[FoRight] := \FoRegionWidth{right}{#1} ;
+% if FoBackgroundColor <> FoNoColor :
+% fill OverlayBox
+% withcolor FoBackgroundColor ;
+% fi ;
+% path OverlayFrameBox ;
+% interim linecap := butt ;
+% OverlayFrameBox := OverlayBox
+% topenlarged -.5FoLineWidth[FoTop]
+% bottomenlarged -.5FoLineWidth[FoBottom]
+% leftenlarged -.5FoLineWidth[FoLeft]
+% rightenlarged -.5FoLineWidth[FoRight] ;
+% DrawFoFrame(FoTop, topboundary OverlayFrameBox) ;
+% DrawFoFrame(FoBottom, bottomboundary OverlayFrameBox) ;
+% DrawFoFrame(FoLeft, leftboundary OverlayFrameBox) ;
+% DrawFoFrame(FoRight, rightboundary OverlayFrameBox) ;}
+
+% \startuseMPgraphic{region-body}
+% \combinedFOgraphic{before}
+% \combinedFOgraphic{body}
+% \combinedFOgraphic{after}
+% \combinedFOgraphic{start}
+% \combinedFOgraphic{end}
+% \stopuseMPgraphic
+
+% \defineoverlay[region-body-graphic] [\useMPgraphic{region-body}{location=body}]
+% \defineoverlay[region-before-graphic][]
+% \defineoverlay[region-after-graphic] []
+% \defineoverlay[region-start-graphic] []
+% \defineoverlay[region-end-graphic] []
+
+\stopXMLcompiling
+
+\protect \endinput
+
+% we can follow two approaches: set the attributes global, using
+%
+% \defineXML...[tag][prefix][empty]
+%
+% in that case we trust the fo-file to be correct, i.e. the xslt style
+% sheets should not put attributes in the wrong places; however, we need
+% to do that with care, since for instance the attributes of some objects
+% (regions) are used mixed
+%
+% \defineXMLprocess [fo:root] [XMLFO] [test=unset]
+%
+% \defineXMLenvironment [fo:block-container] [XMLFO]
+% {\begingroup}
+% {\endgroup}
+%
+% \defineXMLenvironment [fo:block] [XMLFO]
+% {\begingroup\getXMLparameters[XMLFO]\begingroup}
+% {\endgroup\XMLFOtest\endgraf\endgroup}
+%
+% \startXMLdata
+% <fo:root>
+% <fo:block-container test='first'><fo:block test='second'>second:</fo:block></fo:block-container>
+% <fo:block>unset:</fo:block>
+% <fo:block test='outer'><fo:block test='nested'>nested:</fo:block>outer:</fo:block>
+% <fo:block test='last'>last:</fo:block>
+% </fo:root>
+% \stopXMLdata
+%
+% the other approach is to set the attributes explicitly for each
+% element, which is slower but more robust
+%
+% A mix is:
+%
+% \defineXMLenvironment
+% [fo:root]
+% [test=unset]
+% {\beginXMLelement}
+% {\endXMLelement}
+%
+% \defineXMLenvironment
+% [fo:block-container]
+% [test=\XMLpar\XMLpureparent{test}{}]
+% {\beginXMLelement}
+% {\endXMLelement}
+%
+% \defineXMLenvironment
+% [fo:block]
+% [test=\XMLpar\XMLpureparent{test}{}]
+% {\beginXMLelement
+% \begingroup}
+% {\endgroup
+% \XMLpar{fo:block}{test}{}
+% \endXMLelement}
+%
+% \startXMLdata
+% <fo:root>
+% <fo:block-container test='first'><fo:block test='second'>second:</fo:block></fo:block-container>
+% <fo:block>unset:</fo:block>
+% <fo:block test='outer'><fo:block test='nested'>nested:</fo:block>outer:</fo:block>
+% <fo:block test='last'>last:</fo:block>
+% </fo:root>
+% \stopXMLdata
diff --git a/Master/texmf-dist/tex/context/base/x-foxet.tex b/Master/texmf-dist/tex/context/base/x-foxet.tex
new file mode 100644
index 00000000000..78cc0efb760
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-foxet.tex
@@ -0,0 +1,15 @@
+%D This is just a shortcut for:
+
+% fo = basic formatting objects
+% fe = basic formatting extensions
+% fx = extra formatting objects
+% fu = user formatting objects
+% fs = setup
+
+\usemodule[fo,fe,fx,fu,fs,mathml]
+
+\usemodule[fp] % passivetex bonus
+
+% \autoXMLnamespace[mml,mm,mathml]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-mathml.tex b/Master/texmf-dist/tex/context/base/x-mathml.tex
new file mode 100644
index 00000000000..f5db612365d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-mathml.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=m-mathml,
+%D version=1999.12.20,
+%D title=\CONTEXT\ XML Modules,
+%D subtitle=Loading \MATHML\ Filters,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D We have to make sure that some basic entities are
+%D loaded:
+
+\useXMLfilter[ent]
+
+%D Then we load the math:
+
+\useXMLfilter[mml,mmp,mmc]
+
+%D And we also load the whole bunch of entities:
+
+% \useXMLfilter[mea,meb,mec,meh,men,meo,mer]
+% \useXMLfilter[mxa,mxb,mxc,mxh,mxn,mxo,mxr]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-physml.tex b/Master/texmf-dist/tex/context/base/x-physml.tex
new file mode 100644
index 00000000000..7f6a94642dd
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-physml.tex
@@ -0,0 +1,16 @@
+%D \module
+%D [ file=m-physml,
+%D version=2001.09.04,
+%D title=\CONTEXT\ XML Modules,
+%D subtitle=Loading PHYSML Filters,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[units] \useXMLfilter[pml,pmu]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-00.tex b/Master/texmf-dist/tex/context/base/x-res-00.tex
new file mode 100644
index 00000000000..46a278768a2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-00.tex
@@ -0,0 +1,66 @@
+%D \module
+%D [ file=x-res-00,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Resource Libraries,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% \defineXMLcommandpush [rl:instance] (todo)
+% \rawframed == [frame=off,offset=overlay]
+
+% resource library
+
+\defineXMLprocess [rl:figurelibrary] % not to be used any longer
+\defineXMLprocess [rl:library]
+
+% resource library description
+
+\defineXMLignore [rl:description]
+
+\defineXMLpush [rl:organization]
+\defineXMLpush [rl:product]
+\defineXMLpush [rl:project]
+
+% resource library entries (better use XMLignore)
+
+\defineXMLignore [rl:applet]
+\defineXMLignore [rl:application]
+\defineXMLignore [rl:figure]
+\defineXMLignore [rl:movie]
+\defineXMLignore [rl:sound]
+
+\defineXMLpush [rl:type]
+\defineXMLpush [rl:state]
+\defineXMLpush [rl:width]
+\defineXMLpush [rl:height]
+\defineXMLpush [rl:file]
+\defineXMLpush [rl:label]
+\defineXMLpush [rl:original]
+\defineXMLpush [rl:title]
+\defineXMLpush [rl:alternative]
+\defineXMLpush [rl:dummy]
+\defineXMLpush [rl:icon]
+\defineXMLpush [rl:copyright]
+\defineXMLpush [rl:comment]
+\defineXMLpush [rl:status]
+\defineXMLpush [rl:original]
+\defineXMLpush [rl:manipulation]
+
+% instances
+
+\defineXMLignore [rl:instance]
+
+\defineXMLpush [rl:background]
+\defineXMLpush [rl:viewport]
+\defineXMLpush [rl:dimension]
+\defineXMLpush [rl:position]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-01.tex b/Master/texmf-dist/tex/context/base/x-res-01.tex
new file mode 100644
index 00000000000..82c1116dec5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-01.tex
@@ -0,0 +1,451 @@
+%D \module
+%D [ file=x-fig-01,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D See \type {x-fig-00.tex} and \type {x-fig-04.tex} for more
+%D information on how to use and generate figure databases.
+%D This file loads the file named \type {\jobfilename}
+%D (\TEXEXEC\ will set this variable). You can apply this
+%D style to a database by saying:
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-make yourfile.xml
+%D \stoptyping
+%D
+%D The following modes are supported:
+%D
+%D \starttabulate[|lT|l|]
+%D \NC letter \NC map the preview on letter size \NC \NR
+%D \NC compact \NC use an alternative presentation \NC \NR
+%D \stoptabulate
+%D
+%D The resulting file has the following characteristics:
+%D
+%D \startitemize[packed]
+%D \item the document is split into three sections: first each
+%D figure is shown at its own page, then an overview of
+%D figures is shown with some data alongside, and
+%D finally an index and table of contents shows up
+%D \item there is no title page, which means that one can
+%D access a figure by page number without offset
+%D \item the document is opened at the first overview page,
+%D that is, when the viewer supports it
+%D \item the graphic is shown 3~times: on a page of its own,
+%D scaled to a fixed dimension, and relative to a4 or
+%D letter paper size
+%D \item the labels can be accessed in an index and list at
+%D the end of the document
+%D \stopitemize
+%D
+%D We use named destinations, which means that one can
+%D access a figure by name from an external application.
+
+\usemodule[res-00]
+
+\autoXMLnamespace[rl]
+
+\setupoutput[pdftex] \overcomePDFspacefalse
+
+\setjobfullname {xml} % default suffix
+
+\doifnothing {\jobfullname} {\end}
+\doiffileelse {\jobfullname} {} {\end}
+
+\def\StartDescription
+ {\bgroup}
+
+\def\StopDescription
+ {\subject {Figure collection}
+ \starttabulate[|lBe|p|]
+ \doifXMLdataelse{rl:organization}
+ {\NC organization \NC \XMLflush{rl:organization} \NC \NR}{}
+ \doifXMLdataelse{rl:project}
+ {\NC project \NC \XMLflush{rl:project} \NC \NR}{}
+ \doifXMLdataelse{rl:product}
+ {\NC product \NC \XMLflush{rl:product} \NC \NR}{}
+ \doifXMLdataelse{rl:comment}
+ {\NC comment \NC \XMLflush{rl:comment} \NC \NR}{}
+ \stoptabulate
+ \blank[2*big]
+ \egroup}
+
+\def\StartFigureA
+ {\bgroup
+ \XMLassign{rl:file}{unknown}}
+
+\defineoverlay[page][\overlaybutton{Description}]
+
+\startbuffer[unknown]
+ \framed
+ [width=\XMLpar{rl:dummy}{width}{12cm},
+ height=\XMLpar{rl:dummy}{height}{8cm},
+ background=color,
+ backgroundcolor=gray,
+ foregroundcolor=darkred,
+ align={lohi,middle}, % normal,
+ frame=off]
+ {\bf \XMLflush{rl:dummy}}
+\stopbuffer
+
+\useexternalfigure[unknown][unknown][type=buffer,object=no]
+
+% \def\externalfigurereplacement#1#2#3%
+% {\getbuffer[rl-unknown]}
+
+\def\StopFigureA
+ {\doglobal\increment\CurrentPage
+ \setupbackgrounds[page][background=page]
+ \doifelsenothing{\XMLflush{rl:label}}
+ {\expanded{\definereference[Description][about: \XMLflush{rl:file}]}%
+ \expanded{\pagereference[\XMLflush{rl:file}]}}
+ {\expanded{\definereference[Description][about: \XMLflush{rl:label}]}%
+ \expanded{\pagereference[\XMLflush{rl:label}]}}
+ \pagefigure[\XMLflush{rl:file}]
+ \setupbackgrounds[page][background=]
+ \egroup}
+
+\def\StartFigureB
+ {\StartFigureA}
+
+\defineregister
+ [figureindex]
+ [figureindices]
+
+\setupregister
+ [figureindex]
+ [ownnumber=yes,
+ criterium=text,
+ interaction=text,
+ indicator=no]
+
+\definelist
+ [figurelist]
+
+\setuplist
+ [figurelist]
+ [criterium=text,
+ pagenumber=no,
+ width=2em,
+ interaction=all]
+
+\setupcolors
+ [state=start]
+
+\setuptolerance
+ [verytolerant]
+
+% Ulgy:
+
+\startmode[letter] % downward compatible
+ \enablemode[previewpage-letter]
+\stopmode
+
+\startnotmode[previewpage-letter,previewpage-S6]
+ \enablemode[previewpage-A4]
+\stopnotmode
+
+%startbuffer[paper]
+\startsetups[paper]
+\startmode[previewpage-A4]
+ \framed
+ [width=210mm,height=297mm,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLflush{rl:file}][reset=yes]}
+\stopmode
+\startmode[previewpage-letter]
+ \framed
+ [width=8.5in,height=11in,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLflush{rl:file}][reset=yes]}
+\stopmode
+\startmode[previewpage-S6]
+ \framed
+ [width=600pt,height=450pt,offset=overlay,frame=off,
+ background=color,backgroundcolor=white]
+ {\externalfigure[\XMLflush{rl:file}][reset=yes]}
+\stopmode
+\stopsetups
+%stopbuffer
+
+\setupbuttons
+ [offset=10pt,
+ width=broad,
+ strut=no,
+ rulethickness=1pt,
+ framecolor=darkred]
+
+\definecolor[XMLRLcolor][white]
+
+\def\StopFigureB
+ {\doglobal\increment\CurrentPage
+ \doifelsenothing{\XMLflush{rl:label}}
+ {\expanded{\definereference[Figure][\XMLflush{rl:file}]}%
+ \expanded{\definereference[GridPg][grid:\XMLflush{rl:file}]}}
+ {\expanded{\definereference[Figure][\XMLflush{rl:label}]}%
+ \expanded{\definereference[GridPg][grid:\XMLflush{rl:label}]}}%
+ \button
+ {\hbox to \hsize
+ {\forgetall \dontcomplain
+ \doifelsenothing{\XMLflush{rl:label}}
+ {\expanded{\pagereference[about: \XMLflush{rl:file}]}}
+ {\expanded{\pagereference[about: \XMLflush{rl:label}]}}%
+ % moved here, because descriptions may be absent
+ \ifnum\CurrentPage=1 \pagereference[begin]\fi
+ %
+ \expanded{\writetolist[figurelist]{\CurrentPage}{\XMLflush{rl:label}}}%
+ \expanded{\figureindex{\CurrentPage}{\XMLflush{rl:label}}}%
+ \startnotmode[compact]%
+ \vbox to 100pt
+ {\hsize30pt
+ \vskip5pt
+ \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}%
+ \vfill}%
+ \advance\hsize by -30pt
+ \stopnotmode
+ \startmode[compact]%
+ \advance\hsize by -10pt
+ \hskip10pt
+ \stopmode
+ \button % \framed
+ [width=150pt,height=100pt,offset=10pt,frame=off,
+ background=color,backgroundcolor=white,color=]
+ {\externalfigure
+ [\XMLflush{rl:file}]
+ [maxheight=80pt,frame=off,maxwidth=130pt,factor=max]}%
+ [GridPg]%
+ \freezedimenmacro\naturalfigurewidth \let\FigWid\naturalfigurewidth
+ \freezedimenmacro\naturalfigureheight\let\FigHei\naturalfigureheight
+ \advance\hsize by -150pt
+ \hskip10pt
+ \advance\hsize by -10pt
+ \vbox to 100pt
+ {\hsize40pt
+ %\externalfigure
+ % [paper]
+ % [type=buffer,frame=on,
+ % framecolor=darkred,rulethickness=.5pt,
+ % width=40pt,object=no]
+ \framed
+ [offset=overlay,
+ framecolor=darkred,
+ rulethickness=.5pt]
+ {\scale[width=40pt]{\setups[paper]}}% {\disableXML\getbuffer[paper]}}%
+ \startmode[compact]%
+ \vfill
+ \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}%
+ \stopmode
+ \vfill}%
+ \advance\hsize by -40pt
+ \hskip10pt
+ \advance\hsize by -10pt
+ \vbox to 100pt
+ {\blank[disable]
+ \starttabulate[|Bel|p|]
+ \NC file \NC \XMLflush{rl:file} \NC \NR
+ \doifXMLdata{rl:label}
+ {\NC label \NC \XMLflush{rl:label} \NC \NR}
+ \NC w$\times$h \NC \FigWid$\times$\FigHei \NC \NR
+ \doifXMLdata{rl:copyright}
+ {\NC copyright \NC \XMLflush{rl:copyright} \NC \NR}
+ \doifXMLdata{rl:status}
+ {\doif{\XMLflush{rl:status}}{obsolete}
+ {\NC status \NC \bf\darkred\XMLflush{rl:status} \NC \NR}
+ {\NC status \NC \XMLflush{rl:status} \NC \NR}}
+ \doifXMLdata{rl:comment}
+ {\NC comment \NC \XMLflush{rl:comment} \NC \NR}
+ \stoptabulate
+ \vfill}}}%
+ [Figure]
+ \vskip10pt
+ \egroup}
+
+\def\StartFigureC
+ {\StartFigureA}
+
+\def\StopFigureC
+ {\doglobal\increment\NumberOfFigures
+ \egroup}
+
+\setuplayout
+ [topspace=15pt,backspace=15pt,
+ header=0pt,footer=0pt,bottom=20pt,bottomdistance=10pt,
+ width=middle,height=fit]
+
+\setupbackgrounds
+ [page]
+ [background=,
+ backgroundcolor=gray]
+
+\setupinteractionscreen
+ [width=max,
+ height=max]
+
+\setupcolors
+ [state=start]
+
+\setupinteraction
+ [style=,
+ color=,
+ contrastcolor=,
+ state=start]
+
+\setuphead
+ [section]
+ [style=bfb]
+
+% \setupbodyfont
+% [pos]
+
+\setupinteractionmenu
+ [bottom]
+ [left=\hfill,
+ middle=\hskip10pt,
+ frame=off,
+ style=bold,
+ background=color,
+ backgroundcolor=darkred,
+ foregroundcolor=white]
+
+\startinteractionmenu[bottom]
+ \but [begin] begin \\
+ \but [index] index \\
+ \but [list] list \\
+ \but [CloseDocument] close \\
+ \but [PreviousJump] go back \\
+\stopinteractionmenu
+
+\setupinteraction
+ [openaction=begin]
+
+\defineXMLenvironment [rl:figurelibrary] \StartLibrary \StopLibrary
+\defineXMLenvironment [rl:library] \StartLibrary \StopLibrary
+
+\starttext
+
+\def\StartLibrary{\mainlanguage[\XMLpar{rl:library}{language}{en}]}
+\def\StopLibrary {}
+
+\defineXMLignore [rl:description]
+\defineXMLenvironment [rl:figure] \StartFigureC \StopFigureC
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfullname}
+
+\increment\NumberOfFigures
+
+\defineXMLignore [rl:description]
+\defineXMLenvironment [rl:figure] \StartFigureA \StopFigureA
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfullname}
+
+\setuppapersize
+ [S6][S6]
+
+\setupbackgrounds
+ [page]
+ [background=color]
+
+\setupinteraction
+ [menu=on]
+
+\defineXMLenvironment [rl:description] \StartDescription \StopDescription
+\defineXMLenvironment [rl:figure] \StartFigureB \StopFigureB
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfullname} \page
+
+\subject [list] {List of figures}
+
+\placelist[figurelist] \page
+
+\subject [index] {Index of figures}
+
+\startcolumns
+\placeregister[figureindex]
+\stopcolumns
+
+\doifmodeelse{clipgrid-distance,clipgrid-steps}{\page}{\stoptext}
+
+\startuniqueMPgraphic{clipgrid}{dx,dy,nx,ny,type}
+ numeric gdx, gdy, lbx, lby ;
+ if \MPvar{type}=1 :
+ gdx := \MPvar{dy} ;
+ gdy := \MPvar{dx} ;
+ else :
+ gdx := OverlayWidth /\MPvar{nx} ;
+ gdy := OverlayHeight/\MPvar{ny} ;
+ fi ;
+ lbx := gdx ;
+ lby := gdy ;
+ defaultfont := "\truefontname{Mono}" ;
+ defaultscale := .5 ;
+ numeric pen ; pen := .25pt ;
+ def MyGrid text t =
+ draw vlingrid (0,OverlayWidth ,gdy,OverlayWidth ,OverlayHeight) t ;
+ draw hlingrid (0,OverlayHeight,gdx,OverlayHeight,OverlayWidth ) t ;
+ enddef ;
+ pickup pencircle scaled pen ;
+ MyGrid withcolor white ;
+ MyGrid dashed evenly scaled pen ;
+ draw OverlayBox withcolor white ;
+ draw OverlayBox dashed evenly scaled pen ;
+ draw vlinlabel.bot(0,eps+OverlayWidth /lby,2,OverlayWidth ) ;
+ draw hlinlabel.lft(0,eps+OverlayHeight/lbx,2,OverlayHeight) ;
+ setbounds currentpicture to OverlayBox enlarged (2*EmWidth) ;
+\stopuniqueMPgraphic
+
+\presetMPvariable[clipgrid][dx=10pt]
+\presetMPvariable[clipgrid][dy=10pt]
+\presetMPvariable[clipgrid][nx=10]
+\presetMPvariable[clipgrid][ny=10]
+
+\startmode[clipgrid-distance]
+ \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=1}]
+\stopmode
+
+\startmode[clipgrid-steps]
+ \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=2}]
+\stopmode
+
+\setupexternalfigures
+ [background={color,foreground,grid},
+ backgroundcolor=white]
+
+\def\StartFigureD
+ {\StartFigureA}
+
+\def\StopFigureD
+ {\doglobal\increment\CurrentPage
+ \setupbackgrounds[page][background=page]
+ \startpagefigure[\XMLflush{rl:file}][offset=20pt]%
+ \doifelsenothing{\XMLflush{rl:label}}
+ {\expanded{\definereference[Description][about: \XMLflush{rl:file}]}%
+ \expanded{\pagereference[grid:\XMLflush{rl:file}]}}
+ {\expanded{\definereference[Description][about: \XMLflush{rl:label}]}%
+ \expanded{\pagereference[grid:\XMLflush{rl:label}]}}
+ \stoppagefigure
+ %\pagefigure[\XMLflush{rl:file}][offset=20pt]
+ \setupbackgrounds[page][background=]
+ \egroup}
+
+\defineXMLignore [rl:description]
+\defineXMLenvironment [rl:figure] \StartFigureD \StopFigureD
+
+\doglobal\newcounter\CurrentPage
+
+\processXMLfilegrouped{\jobfullname} \page
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-res-02.tex b/Master/texmf-dist/tex/context/base/x-res-02.tex
new file mode 100644
index 00000000000..a29f446f345
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-02.tex
@@ -0,0 +1,72 @@
+%D \module
+%D [ file=x-res-02,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Inclusion (I),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This module enables non||\ConTeXt\ users to access the
+%D database. For this, you need to run
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-fake yourfile.xml
+%D \stoptyping
+%D
+%D The resulting file, \type {yourfile.fig}, can be loaded
+%D in the normal way. The figures can be accessed with:
+%D
+%D \starttyping
+%D \getfigurefile{label}
+%D \getfigurepage{label}
+%D \stoptyping
+%D
+%D A a bonus, the following macro is defined:
+%D
+%D \starttyping
+%D \includefigurefile width 10cm {label}
+%D \stoptyping
+
+\usemodule[res-00]
+
+\doifnothing {\jobfullname} {\end}
+\doiffileelse {\jobfullname} {} {\end}
+
+\defineXMLenvironment [rl:figurelibrary] \StartLibrary \StopLibrary
+\defineXMLenvironment [rl:library] \StartLibrary \StopLibrary
+\defineXMLenvironment [rl:figure] \StartFigure \StopFigure
+
+\def\StartLibrary
+ {\immediate\openout \scratchwrite=\jobfilename.fig
+ \immediate\write\scratchwrite{\string\input\space x-fig-03.tex \string\relax}
+ \immediate\write\scratchwrite{}}
+
+\def\StopLibrary
+ {\immediate\write\scratchwrite{}
+ \immediate\write\scratchwrite{\string\endinput}
+ \immediate\closeout\scratchwrite}
+
+\def\StartFigure
+ {\bgroup}
+
+\def\StopFigure
+ {\doglobal\increment\CurrentPage
+ \immediate\write\scratchwrite
+ {\string\setfiguredata\space
+ {\XMLpop{rl:label}}
+ {\jobfilename}
+ {\CurrentPage}}
+ \egroup}
+
+\doglobal\newcounter\CurrentPage
+
+\starttext
+
+\processXMLfilegrouped{\jobfullname}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-res-03.tex b/Master/texmf-dist/tex/context/base/x-res-03.tex
new file mode 100644
index 00000000000..bf5ea226cff
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-03.tex
@@ -0,0 +1,44 @@
+%D \module
+%D [ file=x-fig-03,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Inclusion (II),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\ifx \undefined \convertMPtoPDF \input supp-pdf.tex \fi
+\ifx \undefined \includefigurefile \else \expandafter \endinput \fi
+
+\gdef\getfigurefile#1%
+ {\expandafter\ifx\csname x-fig-f-#1\endcsname\relax
+ \currentfigurefile
+ \else
+ \csname x-fig-f-#1\endcsname
+ \fi}
+
+\gdef\getfigurepage#1%
+ {\expandafter\ifx\csname x-fig-p-#1\endcsname\relax
+ 1%
+ \else
+ \csname x-fig-p-#1\endcsname
+ \fi}
+
+\gdef\setfiguredata#1#2#3%
+ {\gdef\currentfigurefile{#2}%
+ \expandafter\gdef\csname x-fig-f-#1\endcsname{#2}%
+ \expandafter\gdef\csname x-fig-p-#1\endcsname{#3}}
+
+\def\includefigurefile#1#%
+ {\doincludefigurefile{#1}}
+
+\def\doincludefigurefile#1#2%
+ {\edef\next{\noexpand\pdfimage
+ #1 page \getfigurepage{#2} {\getfigurefile{#2}.pdf}}%
+ \next}
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-04.tex b/Master/texmf-dist/tex/context/base/x-res-04.tex
new file mode 100644
index 00000000000..826a07d2385
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-04.tex
@@ -0,0 +1,328 @@
+%D \module
+%D [ file=x-fig-04,
+%D version=2001.03.21,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Figure Base Loading,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% hele base laden
+
+\setXMLfallbackmode3
+
+% icon : preview
+% caption : \figurebasevariable{caption}
+% background : rgb cmyk gray name
+% dimensions : width height offset (l,r,t,b) area
+% alternative : tag label / evt list
+%
+% movie
+% sound
+% applet
+% application
+
+\usemodule[res-00] % basic element definitions
+
+%D This module implements an interface to a figure database
+%D and file. The database is formatted in \XML\ conforming
+%D the following \DTD:
+%D
+%D \typefile{x-fig-00.dtd}
+%D
+%D A figure base coded this way looks like:
+%D
+%D \starttyping
+%D <!-- texexec --pdf --use=fig-01 figtest.xml -->
+%D
+%D <figurelibrary language="nl">
+%D
+%D <description>
+%D <organization>PRAGMA Advanced Document Engineering</organization>
+%D <project>Manuals</project>
+%D <product>Beginners Manual</product>
+%D <comment>A bunch of figures.</comment>
+%D </description>
+%D
+%D <figure>
+%D <file>koe.pdf</file>
+%D <label>a dutch cow</label>
+%D <copyright>Corel Draw Suite</copyright>
+%D <comment>I bet that you've seen this cow before.</comment>
+%D </figure>
+%D
+%D <figure>
+%D <dummy width="4cm" height="3cm">non existent</dummy>
+%D <label>a european cow</label>
+%D <copyright>Nobody</copyright>
+%D <comment>When will we talk about European cows?</comment>
+%D </figure>
+%D
+%D </figurelibrary>
+%D \stoptyping
+%D
+%D You can convert this base into a \PDF\ file using
+%D \TEXEXEC\ and another module in this suite.
+%D
+%D \starttyping
+%D texexec --pdf --use=fig-make yourfile.xml
+%D \stoptyping
+%D
+%D You can now select a graphic from this file using the
+%D
+%D \starttyping
+%D \externalfigure[a dutch cow][width=4cm]
+%D \stoptyping
+%D
+%D This module overloads this command so that a figure is
+%D it first searched in the list of databases.
+%D
+%D \starttyping
+%D \usemodule [fig-base]
+%D \usefigurebases[yourfile]
+%D \stoptyping
+%D
+%D The special keyword \type {reset} can be used to reset
+%D this list.
+
+\startcommands dutch english
+ german czech
+ italian romanian
+
+ usefigurebase: gebruikfiguurbestand usefigurebase
+ usefigurebase usefigurebase
+ usefigurebase usefigurebase
+
+\stopcommands
+
+\unprotect
+
+\consultutilityfilefalse
+
+% 0 = no loading
+% 1 = selective loading
+% 2 = full loading
+
+\chardef\figurebasemode=1 % 2
+
+\newcounter\figurefilepage
+
+% loading a complete figure base
+
+\startXMLmapping[rl:load]
+
+\defineXMLenvironmentsave [rl:figure]
+ {\bgroup}
+ {\XMLflush{rl:figure}
+ \doglobal\increment\figurefilepage
+ \figbase@savedata{\XMLflush{rl:label}}\figurefilepage
+ \egroup}
+
+\stopXMLmapping
+
+\def\loadfigurebase#1%
+ {\doifnotflagged{rl:#1}
+ {\writestatus{figbase}{loading #1 into memory}%
+ \startnointerference
+ \autoXMLnamespace[rl]
+ \startXMLmapping[rl:load]
+ \doglobal\newcounter\figurefilepage
+ \processXMLfilegrouped{#1.xml}
+ \stopXMLmapping
+ \doglobal\setflag{rl:#1}
+ \stopnointerference}}
+
+\def\figbase@savedata#1#2%
+ {%\writestatus{figbase}{data of #1 loaded}%
+ \doglobal\saveXMLdatastructure{rl:rl:#1}{record}{page="#2"}{}{rl:figure}{}}
+
+% locating and if needed loading one figure record
+
+\startXMLmapping[rl:find]
+
+\defineXMLenvironment[rl:instance]
+ {\bgroup}
+ {\doif\askedlabel{\XMLflush{rl:label}}
+ {\doglobal\saveXMLdata{rl:g:manipulation}{rl:manipulation}%
+ \doifXMLdata{rl:original}
+ {\xdef\askedlabel{\XMLflush{rl:original}}}}%
+ \egroup}
+
+\defineXMLenvironmentsave [rl:figure]
+ {\bgroup}
+ {\XMLflush{rl:figure}
+ \doglobal\increment\figurefilepage
+ \doif\askedlabel{\XMLflush{rl:label}}
+ {\ifnum\figurebasemode=\plusone % load used ones
+ \figbase@savedata\askedlabel\figurefilepage
+ \fi
+ \doglobal\saveXMLdata{rl:l:manipulation}{rl:manipulation}%
+ \xdef\figurefilelabel {\XMLflush{rl:label}}%
+ \xdef\figurefilefile {\XMLflush{rl:file}}%
+ \xdef\figurefileoriginal{\XMLflush{rl:original}}%
+ \xdef\figurefilename {\XMLflush{rl:file}}
+ \endinput}%
+ \egroup}
+
+\defineXMLenvironment [rl:record]
+ {}
+ {\xdef\figurefilename{\XMLpop{rl:file}}
+ \xdef\figurefilepage{\XMLop {page}}}
+
+\stopXMLmapping
+
+\def\getfigurefilename#1#2%
+ {\ifnum\figurebasemode=\plustwo \loadfigurebase{#1} \fi
+ \startnointerference
+ \traceXMLelementsfalse
+ \resetfigurefilebase
+ \doglobal\newcounter\figurefilepage
+ \autoXMLnamespace[rl]
+ \startXMLmapping[rl:find]
+ \xdef\figurefilebase{#1}
+ \def\askedlabel{#2}
+ \doifelseXMLelement{rl:rl:\askedlabel}
+ {\enableXMLelements\flushXMLelement{rl:rl:\askedlabel}}
+ {\processcommacommand[\figurepathlist]\dogetfigurefilename}%
+ \stopXMLmapping
+ \stopnointerference}
+
+% todo: niet toegekende naam doorgeven aan calculate en pad
+% in padstring
+
+\def\dogetfigurefilename#1%
+ {\ifx\figurefilename\empty
+ \bgroup
+ \doglobal\newcounter\figurefilepage
+ \globalletempty\figurefilelabel
+ \globalletempty\figurefileoriginal
+ \globalletempty\figurefilefile
+ \xdef\figurefilebasepath{#1}%
+ \assignfullfilename{#1}\figurefilebase\to\filename
+ \expanded{\processXMLfilegrouped{\filename.xml}}%
+ \ifx\figurefilename\empty \else
+ \global\let\figurefilebase\figurefilebase
+ \fi
+ \egroup
+ \fi}
+
+\newtoks\figurebaseresets
+
+\appendtoks
+ \globalletempty\figurefilebase
+ \globalletempty\figurefilename
+ \globalletempty\figurefilebasepath
+ \globalletempty\figurefilepage
+ \globalletempty\figurefilelabel
+ %\globalletempty\figurefileoriginal
+ %\globalletempty\figurefilefile
+\to\figurebaseresets
+
+\def\resetfigurefilebase
+ {\the\figurebaseresets}
+
+\let\normalcalculateexternalfigure\calculateexternalfigure
+
+\def\calculateexternalfigure[#1][#2][#3][#4][#5][#6]%
+ {\resetfigurefilebase
+ \ifx\figurebaselist\empty
+ \normalcalculateexternalfigure
+ [#1][#2][#3][#4][#5][#6]%
+ \else
+ \def\docommando##1%
+ {\getfigurefilename{##1}{#3}%
+ \ifx\figurefilename\empty\else
+ \gdef\figurefilelabel{#3}%
+ \quitcommalist
+ \fi}%
+ \processcommacommand[\figurebaselist]\docommando
+ \ifx\figurefilename\empty
+ \stripspaces\from#3\to\figurefilename % to be sure
+ \normalcalculateexternalfigure
+ [#1][#2][\figurefilename][#4][#5][#6]%
+ \else
+ \doiffileelse{\figurefilebase.pdf}
+ {\let\figurepathlist\figurefilebasepath
+ \normalcalculateexternalfigure
+ [#1][#2][\figurefilebase.pdf]%
+ [\c!page=\figurefilepage,#4][#5][#6]}
+ {\@EA\stripspaces\@EA\from\figurefilename\to\figurefilename
+ \normalcalculateexternalfigure
+ [#1][#2][\figurefilename][#4][#5][#6]}%
+ \fi
+ \fi}
+
+% management
+
+% will become \useresourcelibrary
+
+\def\usefigurebase[#1]%
+ {\doifelse{#1}\v!reset
+ {\let\figurebaselist\empty}
+ {\addtocommalist{#1}\figurebaselist}}
+
+\let\figurebaselist\empty
+
+\resetfigurefilebase
+
+% manipulations / todo: fixed order
+
+\defineXMLsave [rl:manipulation]
+
+\defineXMLsingular [rl:background] [r=0,g=0,b=0,s=0,c=0,m=0,y=0,k=0]
+ {\global\setbox\foundexternalfigure\vbox
+ {\definecolor
+ [XMLRLcolor]
+ [r=\XMLop{r},g=\XMLop{g},b=\XMLop{b},s=\XMLop{s},%
+ c=\XMLop{c},m=\XMLop{m},y=\XMLop{y},k=\XMLop{k}]%
+ \framed
+ [\c!frame=\v!off,\c!offset=\v!overlay,
+ \c!background=\v!color,\c!backgroundcolor=XMLRLcolor]
+ {\box\foundexternalfigure}}}
+
+\defineXMLsingular [rl:viewport] [\??cp] % []
+ {\global\setbox\foundexternalfigure\vbox
+ {\expandXMLta \getXMLta
+ \clip
+ [\XMLta]
+ {\box\foundexternalfigure}}%
+ \global\setbox\foundexternalfigure\vbox
+ {\scale
+ [\c!width=\figurewidth,\c!height=\figureheight]
+ {\box\foundexternalfigure}}}
+
+\defineXMLsingular [rl:dimensions] [width=,height=]
+ {}
+
+\defineXMLsingular [rl:position] [offset=,width=,height=,hoffset=,voffset=]
+ {}
+
+\appendtoks
+ \doglobal\eraseXMLelement{rl:l:manipulation}%
+ \doglobal\eraseXMLelement{rl:g:manipulation}%
+\to \figurebaseresets
+
+\appendtoks
+ \startnointerference
+ \processXMLelement{rl:l:manipulation}%
+ \processXMLelement{rl:g:manipulation}%
+ \stopnointerference
+\to \externalfigurepostprocessors
+
+\protect \doifnotmode{demo}{\endinput}
+
+\starttext
+
+\setupcolors[state=start]
+
+\usefigurebase[d-fig-01]
+
+\externalfigure[part of a dutch cow][width=3cm,frame=on]
+\externalfigure[a simple dutch cow][width=5cm,frame=on]
+\externalfigure[another simple dutch cow][width=5cm,frame=on]
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-res-08.tex b/Master/texmf-dist/tex/context/base/x-res-08.tex
new file mode 100644
index 00000000000..5dfa6b6fa24
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-08.tex
@@ -0,0 +1,114 @@
+%D \module
+%D [ file=x-fig-08,
+%D version=2002.06.27,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Resource Reporting,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Experimental module!
+%D
+%D \starttyping
+%D <rl:library>
+%D <rl:usage>
+%D <rl:type>figure</rl:type>
+%D <rl:state>found|missing</rl:state>
+%D <rl:name>filename</rl:name>
+%D <rl:suffix>filesuffix</rl:suffix>
+%D <rl:width>width in pt</rl:width>
+%D <rl:height>height in pt</rl:height>
+%D <rl:comment>text</rl:comment>
+%D </rl:usage>
+%D </rl:library>
+%D \stoptyping
+
+\doifnotmode{\systemmodeprefix\v!first}{\endinput}
+
+\unprotect
+
+\def\XMLrlprefix{rl:}
+
+\newwrite\XMLrllog
+
+\def\openXMLresourcelog
+ {\immediate\openout\XMLrllog\jobname.rlg\relax
+ \immediate\write\XMLrllog{\XMLbanner{standalone='yes'}}%
+ \immediate\write\XMLrllog{\writtenXMLstart{\XMLrlprefix library}}}
+
+\def\closeXMLresourcelog
+ {\immediate\write\XMLrllog{\writtenXMLend{\XMLrlprefix library}}%
+ \immediate\closeout\XMLrllog}
+
+\let\figurefilelabel \empty
+\let\figurefileoriginal \empty
+\let\figurefilefile \empty
+\let\figurefilepath \empty
+\let\figurefileconversion\empty
+\let\figurefileprefix \empty
+
+\def\XMLfeedbackresource#1#2%
+ {\convertcommand\currentresourcecomment\to\currentresourcecomment
+ \immediate\write\XMLrllog
+ {\writtenXMLelement{\XMLrlprefix usage}%
+ {\writtenXMLelement{\XMLrlprefix type}{#2}%
+ \writtenXMLelement{\XMLrlprefix state}{#1}%
+ \ifx\figurefilelabel\empty
+ \ifx\figurelabel\s!dummy \else % otherwise label equals filename
+ \writtenXMLelementcs{\XMLrlprefix label}\figurelabel
+ \fi
+ \writtenXMLelementcs{\XMLrlprefix file}\figurefilename
+ \writtenXMLelementcs{\XMLrlprefix suffix}\figurefiletype
+ \else
+ % \figurefilelabel is set in x-res-04 and since
+ % we fetch from this base using the normal
+ % \externalfigure macro, the label becomes the
+ % name of the figurebase
+ \writtenXMLelementcs{\XMLrlprefix base}\figurefilename
+ \writtenXMLelementcs{\XMLrlprefix label}\figurefilelabel
+ \writtenXMLelementcs{\XMLrlprefix file}\figurefilefile
+ \fi
+ \writtenXMLelementcs{\XMLrlprefix path}\figurefilepath
+ \writtenXMLelementcs{\XMLrlprefix original}\figurefileoriginal
+ \writtenXMLelementcs{\XMLrlprefix conversion}\figurefileconversion
+ \writtenXMLelementcs{\XMLrlprefix prefix}\figurefileprefix
+ \writtenXMLelementcs{\XMLrlprefix cache}\figurefilecache
+ \ifnum\figurefilepage>\zerocount
+ \writtenXMLelement{\XMLrlprefix page}\figurefilepage
+ \fi
+ \writtenXMLelementcs{\XMLrlprefix comment}\currentresourcecomment
+ \ifconditional\externalfigureflush
+ \writtenXMLelementcs{\XMLrlprefix width}\figurewidth
+ \writtenXMLelementcs{\XMLrlprefix height}\figureheight
+ \fi}}}
+
+\def\XMLfeedbackexternalfigure
+ {\externalfigureflush\doifmodeelse{*\v!figure}%
+ {\XMLfeedbackresource{found}}%
+ {\XMLfeedbackresource{\ifconditional\externalfigureflush missing\else registered\fi}}%
+ {figure}}
+
+\setvariables
+ [rl:manipulate]
+ [file=rlxtools.rlx]
+
+\startsetups[rl:manipulate]
+
+% \immediatewriteutilitycommand{\writestatus{system}{we force multiple runs at \normaltime}}
+
+ \doiflocfileelse{\jobname.rlx}
+ {\installprogram{texmfstart rlxtools --manipulate kpse:\jobname.rlx \jobname.rlg}}
+ {\installprogram{texmfstart rlxtools --manipulate kpse:\getvariabledefault{rl:manipulate}{file}{rlxtools.rlx} \jobname.rlg}}
+
+\stopsetups
+
+\appendtoks \openXMLresourcelog \to \everystarttext
+\appendtoks \closeXMLresourcelog \to \everystoptext
+
+\let \feedbackexternalfigure \XMLfeedbackexternalfigure
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-09.tex b/Master/texmf-dist/tex/context/base/x-res-09.tex
new file mode 100644
index 00000000000..60823615623
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-09.tex
@@ -0,0 +1,69 @@
+%D \module
+%D [ file=x-fig-09,
+%D version=2002.06.27,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Resource Reporting (2),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[res-00]
+
+\defineXMLenvironment [rl:library]
+ {\starttext}
+ {\stoptext}
+
+\defineXMLenvironment [rl:usage]
+ {\bgroup}
+ {\doifnot{\XMLflush{rl:file}}{dummy}{\setups[rl:usage]}%
+ \egroup}
+
+\defineXMLsave [rl:base] % base
+\defineXMLsave [rl:type] % figure
+\defineXMLsave [rl:state] % found|missing
+\defineXMLsave [rl:label] % label
+\defineXMLsave [rl:file] % filename
+\defineXMLsave [rl:suffix] % filesuffix
+\defineXMLsave [rl:comment] % text
+\defineXMLsave [rl:width] % width in pt
+\defineXMLsave [rl:height] % height in pt
+\defineXMLsave [rl:page] % page from file
+
+\def\XMLbpentry#1%
+ {\PointsToWholeBigPoints{\XMLflush{#1}}\temp\temp bp}
+
+% \def\XMLrlentry#1#2#3%
+% {\doiftextelse{\XMLflush{#2}}
+% {\NC\bf#1\NC\XMLflush{#2}\doif{#3}{1}{ (\XMLbpentry{#2})}\NC\NR}
+% {}}
+
+\def\XMLrlentry#1#2#3%
+ {\tableiftextelse{\XMLflush{#2}}
+ {\NC\bf#1\NC\XMLflush{#2}\doif{#3}{1}{ (\XMLbpentry{#2})}\NC\NR}{}}
+
+\startsetups[rl:usage]
+
+% by using a dedicated tabulation, we permit usage in dutch interface
+
+\definetabulate[XMLRLG][|lw(4.5em)|p|]
+
+\startXMLRLG
+ \XMLrlentry {base} {rl:base} {0}
+ \XMLrlentry {type} {rl:type} {0}
+ \XMLrlentry {state} {rl:state} {0}
+ \XMLrlentry {file} {rl:file} {0}
+ \XMLrlentry {label} {rl:label} {0}
+ \XMLrlentry {suffix} {rl:suffix} {0}
+ \XMLrlentry {page} {rl:page} {0}
+ \XMLrlentry {width} {rl:width} {1}
+ \XMLrlentry {height} {rl:height} {1}
+ \XMLrlentry {comment}{rl:comment}{0}
+\stopXMLRLG
+
+\stopsetups
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-10.tex b/Master/texmf-dist/tex/context/base/x-res-10.tex
new file mode 100644
index 00000000000..f23c503586e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-10.tex
@@ -0,0 +1,75 @@
+%D \module
+%D [ file=x-fig-10,
+%D version=2003.08.02,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Resource Dummy Generation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[res-00]
+
+\defineXMLenvironment [rl:library]
+ {\starttext}
+ {\stoptext}
+
+\defineXMLenvironment [rl:usage]
+ {\bgroup}
+ {\doif{\XMLflush{rl:type}-\XMLflush{rl:state}}{figure-missing}
+ {\doifnot{\XMLflush{rl:file}}{dummy}{\setups[rl:usage]}}
+ \egroup}
+
+\defineXMLsave [rl:type] % figure
+\defineXMLsave [rl:state] % found|missing
+\defineXMLsave [rl:file] % filename
+
+\defineXMLsavecontent [rl:width] {12cm} % width in pt
+\defineXMLsavecontent [rl:height] {9cm} % height in pt
+
+\useMPlibrary
+ [dum]
+
+\setupcolors
+ [state=start]
+
+\defineoverlay
+ [rl:banner]
+ [\setups{rl:banner}]
+
+\startsetups[rl:banner]
+
+ \framed [frame=off,offset=none,align={lohi,middle}]
+ \bgroup
+ \tt \white \XMLflush{rl:file}
+ \egroup
+
+\stopsetups
+
+\startsetups[rl:usage]
+
+ \startTEXpage
+
+ % \externalfigure
+ % [\XMLflush{rl:file}] % goes wrong when file present
+ % [object=no,
+ % backgroundcolor=green,background={foreground,color,rl:banner},
+ % width=\XMLflush{rl:width},
+ % height=\XMLflush{rl:height}]
+
+ \def\figurewidth {\XMLflush{rl:width}}
+ \def\figureheight{\XMLflush{rl:height}}
+
+ \externalfigurereplacement
+ {\XMLflush{rl:file}}
+ {\XMLflush{rl:file}}
+ {\XMLflush{rl:state}}
+
+ \stopTEXpage
+
+\stopsetups
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-11.tex b/Master/texmf-dist/tex/context/base/x-res-11.tex
new file mode 100644
index 00000000000..b8569d22e6f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-11.tex
@@ -0,0 +1,110 @@
+%D \module
+%D [ file=x-fig-11,
+%D version=2003.02.08,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Resource Reporting (3),
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[res-00]
+
+\defineXMLenvironment [rl:library]
+ {\starttext
+ \doiffileelse{\outputfilename.zip}{\setups[rl:attach]}{}
+ \disablemode[rl:used]}
+ {\doifnotmode{rl:used}{No images processed.}
+ \page
+ \stoptext}
+
+\defineXMLenvironment [rl:usage]
+ {\bgroup}
+ {\doifnot{\XMLflush{rl:file}}{dummy}
+ {\setups[rl:usage]
+ \enablemode[rl:used]}
+ \egroup}
+
+\defineXMLsave [rl:base] % base
+\defineXMLsave [rl:type] % figure
+\defineXMLsave [rl:state] % found|missing
+\defineXMLsave [rl:label] % label
+\defineXMLsave [rl:file] % filename
+\defineXMLsave [rl:suffix] % filesuffix
+\defineXMLsave [rl:comment] % text
+\defineXMLsave [rl:width] % width in pt
+\defineXMLsave [rl:height] % height in pt
+\defineXMLsave [rl:page] % page from file
+
+\def\XMLbpentry#1%
+ {\PointsToWholeBigPoints{\XMLflush{#1}}\temp\temp bp}
+
+\def\XMLrlentry#1#2#3%
+ {\tableiftextelse{\XMLflush{#2}}
+ {\NC\bf#1\NC\XMLflush{#2}\doif{#3}{1}{ (\XMLbpentry{#2})}\NC\NR}{}}
+
+\unprotect
+
+\setuplayout[\v!middle]
+
+\startsetups[rl:figure]
+
+ \externalfigure[\XMLflush{rl:file}][\c!width=4cm]
+
+\stopsetups
+
+\startsetups[rl:table]
+
+% by using a dedicated tabulation, we permit usage in dutch interface
+
+\definetabulate[XMLRLG][|lw(4.5em)|p|]
+
+\startXMLRLG
+ \XMLrlentry {base} {rl:base} {0}
+ \XMLrlentry {type} {rl:type} {0}
+ \XMLrlentry {state} {rl:state} {0}
+ \XMLrlentry {file} {rl:file} {0}
+ \XMLrlentry {label} {rl:label} {0}
+ \XMLrlentry {suffix} {rl:suffix} {0}
+ \XMLrlentry {page} {rl:page} {0}
+ \XMLrlentry {width} {rl:width} {1}
+ \XMLrlentry {height} {rl:height} {1}
+ \XMLrlentry {comment}{rl:comment}{0}
+\stopXMLRLG
+
+\stopsetups
+
+\startsetups[rl:usage]
+
+ \startfiguretext {\v!none} {\setups[rl:figure]}
+ \setups[rl:table]
+ \stopfiguretext
+
+\stopsetups
+
+\startsetups[rl:attach]
+
+ \useMPlibrary[nav]
+
+ \setupcolors[\c!state=\v!start]
+
+ \setupinteraction[\c!state=\v!start]
+
+ \useattachment[whatever][\outputfilename.zip]
+
+ \startlocalsetups[rl:attach:button]
+
+ \inframed
+ [\c!offset=\v!overlay,\c!frame=\v!off]
+ {\attachment[whatever]}
+
+ \stoplocalsetups
+
+ \setupfootertexts[archive with dummies: \setups{rl:attach:button}]
+
+\stopsetups
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-res-50.tex b/Master/texmf-dist/tex/context/base/x-res-50.tex
new file mode 100644
index 00000000000..382256fd4cb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-res-50.tex
@@ -0,0 +1,425 @@
+%D \module
+%D [ file=x-res-50,
+%D version=2004.02.18,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Multimedia Presentation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={\PRAGMA\ / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is a preliminary module, using a preliminary xml media format that
+%D looks as follows (record is embedded in resource library element):
+%D
+%D \starttyping
+%D <rl:mediaclip label="sample 1">
+%D <rl:name>Sample One</rl:name>
+%D <rl:mime>application/x-shockwave-flash</rl:mime>
+%D <rl:file>http://localhost/mb.swf</rl:file>
+%D <rl:width>8cm</rl:width>
+%D <rl:height>6cm</rl:height>
+%D <rl:text>Nothing special to be said.</rl:text>
+%D <rl:picture>cow.pdf</rl:picture>
+%D </rl:mediaclip>
+%D
+%D <rl:mediaclip label="sample 2">
+%D <rl:name>Sample Two</rl:name>
+%D <rl:mime>audio/mpeg</rl:mime>
+%D <rl:file>mb.mp3</rl:file>
+%D <rl:picture>mb.jpg</rl:picture>
+%D </rl:mediaclip>
+%D \stoptyping
+%D
+%D \starttyping
+%D texexec --pdf --use=med-show yourfile.xml
+%D \stoptyping
+%D
+%D Bonus:
+%D
+%D \starttyping
+%D --arg="url=http://localhost:8881/e:/media"
+%D \stoptyping
+
+% output=pdftex
+
+% bugs in recognizing embedded stream cq. player
+% bugs in layers + hide/vide
+% bugs in save javascripts
+% bugs all over the place
+
+% in principe kan menu overal hetzelfde zijn als we via JS per pagina de clip var zetten,
+% hoewel, misschien zal het menu gaan afhangen van de soort clip
+
+% property (eigenschap) aan framed en layer
+
+\usemodule[meta-dum] \usemodule[contml] \autoXMLnamespace [context]
+
+\doifelsevariable{environment}{url}
+ {\setvariables[mediaclip][url=\getvariable{environment}{url}/]}
+ {\setvariables[mediaclip][url=]}
+
+\startmode [silent]
+
+ \setvariables[mediaclip:option][start=]
+
+\stopmode
+
+\startnotmode [silent]
+
+ \setvariables[mediaclip:option][start=auto]
+
+\stopnotmode
+
+\chardef\XMLtokensreduction=1 \dontcomplain % \showframe \pdfcompresslevel=0
+
+\setuppapersize
+ [S6][S6]
+
+\definemeasure [GapSize] [\dimexpr( 15pt)]
+\definemeasure [EdgeWidth] [\dimexpr(100pt)]
+\definemeasure [TextWidth] [\dimexpr(.5\textwidth)]
+\definemeasure [RenderingWidth] [\dimexpr(\textwidth)]
+\definemeasure [RenderingHeight] [\dimexpr(\textheight)]
+
+% \XMLflush{rl:ratio}\dimexpr(.75\textwidth),
+
+\setuplayout
+ [backspace=\measure{GapSize},
+ topspace=\measure{GapSize},
+ header=0pt,
+ footer=0pt,
+ margin=0pt,
+ edgedistance=2\measure{GapSize},
+ rightedge=\measure{EdgeWidth},
+ bottomdistance=2\measure{GapSize},
+ bottom=2\measure{GapSize},
+ height=fit,
+ width=fit]
+
+\setupinteraction
+ [state=start,
+ color=lightgray,
+ contrastcolor=lightgray,
+ openaction=PresetFields,
+ closeaction=ForgetChanges,
+ menu=on,
+ click=no]
+
+\setupinteractionscreen
+ [option=max]
+
+\setupcolors
+ [state=start]
+
+\usetypescript
+ [palatino][texnansi]
+
+\setupbodyfont
+ [palatino]
+
+\definecolor[darkgray] [s=.2]
+\definecolor[mediumgray][s=.5]
+\definecolor[lightgray] [s=.8]
+\definecolor[transgray] [s=1,t=.9,a=1]
+
+\setupbackgrounds
+ [page]
+ [backgroundoffset=\measure{GapSize},
+ background={color,pagebutton},
+ backgroundcolor=black]
+
+\definelayer
+ [main]
+ [width=\textwidth,
+ height=\textheight]
+
+\definelayer
+ [extra]
+ [width=\rightedgewidth,
+ height=\bottomheight]
+
+\setupbackgrounds
+ [text]
+ [backgroundoffset=0pt,
+ background=main]
+
+\setupbackgrounds
+ [bottom][rightedge]
+ [backgroundoffset=0pt,
+ background=extra]
+
+% java scripts
+
+\startJSpreamble {handy} used now
+
+ function ForgetChanges ()
+ { this.dirty = false }
+
+ function PresetFields ()
+ { this.syncAnnotScan() }
+
+\stopJSpreamble
+
+\definereference[PresetFields] [JS(PresetFields)]
+\definereference[ForgetChanges][JS(ForgetChanges)]
+
+% layers
+
+\defineproperty [menulayer] [layer] [title=menulayer]
+\defineproperty [textlayer] [layer] [title=textlayer,state=stop]
+\defineproperty [datalayer] [layer] [title=datalayer,state=stop]
+
+\setupfield
+ [rollbutton]
+ [fieldlayer=menulayer]
+
+\setupfield
+ [rollbutton]
+ [option=auto]
+
+\definepalet
+ [rollover]
+ [n=darkgray,
+ r=lightgray,
+ d=darkgray]
+
+% list
+
+\definelist
+ [clips]
+ [expansion=yes,
+ criterium=text,
+ alternative=f]
+
+% navigation
+
+\defineoverlay[pagebutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer},ToggleLayer{menulayer}}]
+\defineoverlay[textbutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}]
+\defineoverlay[databutton][\overlaybutton{HideLayer{textlayer},HideLayer{datalayer}}]
+
+% clips
+
+\defineXMLenvironment
+ [rl:mediaclip]
+ {\setups[mediaclip:start]}
+ {\setups[mediaclip:stop]}
+
+\newcounter\MediaClip
+
+\startsetups[mediaclip:start]
+
+ \bgroup \startXMLignore
+
+ % no \startstandardmakeup here since we need the dsta in the menuconstruction
+
+ \defineXMLsave [rl:name]
+ \defineXMLsave [rl:visualization]
+ \defineXMLsave [rl:file]
+ \defineXMLsave [rl:mime]
+ \defineXMLsave [rl:picture] [backgroundcolor=lightgray]
+
+ \defineXMLsavecontent [rl:text] {No additional info.}
+ \defineXMLsavecontent [rl:width] {\measure{RenderingWidth}}
+ \defineXMLsavecontent [rl:height] {\measure{RenderingHeight}}
+ \defineXMLsavecontent [rl:aspect] {1}
+
+\stopsetups
+
+\startsetups[mediaclip:stop]
+
+ \startstandardmakeup
+
+ \doifXMLdataelse{rl:file}
+ {\setups[mediaclip:file:yes]}
+ {}
+
+ \doifXMLdataelse{rl:picture}
+ {\doifelse{\XMLflush{rl:picture}}{self}
+ {\setups[mediaclip:picture:self]}
+ {\setups[mediaclip:picture:yes]}}
+ {\setups[mediaclip:picture:no]}
+
+ \doifXMLdata{rl:text}
+ {\setups[mediaclip:text]}
+
+ \setlayerframed
+ [extra]
+ [preset=rightbottom]
+ [frame=off,offset=overlay,width=fit,background=databutton,align=left]
+ {\startproperty[datalayer]\setups[mediaclip:data]\stopproperty}
+
+ \doifXMLdataelse{rl:name}
+ {\writetolist[clips]{}{\XMLflush{rl:name}}}
+ {\writetolist[clips]{}{\XMLpar{rl:mediaclip}{label}{unknown}}}
+
+ \stopstandardmakeup
+
+ \stopXMLignore \egroup
+
+\stopsetups
+
+\setuptabulate
+ [before=,
+ after=]
+
+\def\rlCleanupFileName#1%
+ {\bgroup
+ \def\cleanup##1##2{\ifnum##1##2=20 \space\else\char\octnumber{##1##2}\fi}%
+ \defineactivecharacter 37 {\cleanup}%
+ \scantokens{#1}%
+ \egroup}
+
+\startsetups[mediaclip:data]
+
+ \noindent \buttonframed
+ [framecolor=lightgray,
+ foregroundcolor=lightgray]
+ {\bf\expanded{\rlCleanupFileName{\XMLflush{rl:file}}}}
+
+ \vskip.75\measure{GapSize}
+
+ \noindent \buttonframed
+ [framecolor=lightgray,
+ foregroundcolor=lightgray]
+ {\bf\XMLflush{rl:mime}}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:self]
+
+ \definerenderingwindow
+ [mediaclip]
+ [width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height},
+ frame=off,
+ openpageaction=StartCurrentRendering,
+ closepageaction=StopCurrentRendering]
+
+ \setlayer
+ [main]
+ {\placerenderingwindow[mediaclip][mediaclip-\MediaClip]}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:yes]
+
+ \setlayer
+ [main]
+ {\externalfigure
+ [\XMLflush{rl:picture}]
+ [background=color,
+ backgroundcolor=\XMLpar{rl:picture}{backgroundcolor}{lightgray},
+ factor=max,
+ width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height}]}
+
+\stopsetups
+
+\startsetups[mediaclip:picture:no]
+
+ \setlayer
+ [main]
+ {\externalfigure
+ [dummy]
+ [width=\XMLflush{rl:width},
+ height=\XMLflush{rl:height}]}
+
+\stopsetups
+
+\startsetups[mediaclip:file:yes]
+
+ \doglobal\increment\MediaClip
+
+ \useexternalrendering
+ [mediaclip-\MediaClip]
+ [\XMLflush{rl:mime}]
+ [\getvariable{mediaclip}{url}\XMLflush{rl:file}]
+ [\getvariable{mediaclip:option}{start}]
+
+\stopsetups
+
+\defineinteractionmenu
+ [navigation] [right]
+
+\defineinteractionmenu
+ [control] [bottom]
+
+\setupinteractionmenu
+ [navigation,control]
+ [state=start,
+ frame=on,
+ middle=\hskip.5\measure{GapSize},
+ inbetween=\vskip.5\measure{GapSize}]
+
+\setupinteractionmenu
+ [right,bottom]
+ [distance=overlay]
+
+\startinteractionmenu [navigation]
+ \rob [HideLayer{textlayer},FirstPage] First Page \\
+ \rob [HideLayer{textlayer},PreviousPage] Previous Page \\
+ \rob [HideLayer{textlayer},NextPage] Next Page \\
+ \rob [HideLayer{textlayer},LastPage] Last Page \\
+ \rob [HideLayer{textlayer},clips] List Of Clips \\
+ \rob [ForgetChanges,CloseDocument] Close Document \\
+\stopinteractionmenu
+
+\startinteractionmenu [control]
+ \rob [StartRendering{mediaclip-\MediaClip}] Start \\
+ \rob [StopRendering{mediaclip-\MediaClip}] Stop \\
+ \rob [PauseRendering{mediaclip-\MediaClip}] Pause \\
+ \rob [ResumeRendering{mediaclip-\MediaClip}] Resume \\
+ \rob [ToggleLayer{datalayer}] Info \\
+ \doifXMLdata{rl:text}{\rob [HideLayer{datalayer},ToggleLayer{textlayer}] Text \\}
+\stopinteractionmenu
+
+\startsetups[mediaclip:text]
+
+ \setlayer
+ [extra]
+ [preset=rightbottom]
+ {\startproperty[textlayer]
+ \framed
+ [align=normal,
+ frame=off,
+ width=\measure{TextWidth},
+ foregroundcolor=darkgray,
+ background={color,textbutton},
+ backgroundcolor=lightgray]
+ {\XMLflush{rl:text}}
+ \stopproperty}
+
+\stopsetups
+
+\setupcolors[textcolor=lightgray]
+
+\startsetups [library:start]
+
+ \starttext
+
+ \setupinteractionmenu[control][state=stop]
+
+ \title[clips]{List of Media Clips}
+
+ \placelist[clips] \page
+
+ \setupinteractionmenu[control][state=start]
+
+\stopsetups
+
+\startsetups [library:stop]
+
+ \stoptext
+
+\stopsetups
+
+\defineXMLenvironment [rl:resourcelibrary]
+ {\setups[library:start]}
+ {\setups[library:stop]}
+
+\doifelsenothing{\inputfilename}
+ {\processXMLfile{mediaclient.xml}}
+ {\processXMLfile{\inputfilename}}
diff --git a/Master/texmf-dist/tex/context/base/x-sch-00.tex b/Master/texmf-dist/tex/context/base/x-sch-00.tex
new file mode 100644
index 00000000000..97b266d5e28
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-sch-00.tex
@@ -0,0 +1,382 @@
+%D \module
+%D [ file=x-sch-00,
+%D version=2001.10.02,
+%D title=\CONTEXT\ Style File,
+%D subtitle=XML Schema Basics,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Schema support was implemented right after euro\TeX\ 2001,
+%D when Tobias Burnus send me a schema for the XML figure
+%D base. Since it happened that I needed schemata for other
+%D projects too, I wrote this mapper. Thanks to Tobias for
+%D testing it.
+
+\newcounter\XSDprefix
+\newif\ifXDScomposite
+
+\definelist [xsd:names]
+\defineregister [xsd:index] [xsd:indices]
+
+\setuplist [xsd:names] [expansion=yes]
+\setupregister [xsd:index] [expansion=yes]
+
+\def\dodoXSDkeyval#1#2#3%
+ {\framed
+ [width=\hsize,background=color,backgroundcolor=xsd:0,
+ framecolor=xsd:0,frame=off,align=right]
+ {\hbox to 5em % %to 8em % .2\hsize
+ {\bf
+ %\doifsomething{#1}{#1 }
+ \ignorespaces#2\unskip\hss}
+ %\ignorespaces#2\unskip:}%
+ \space
+ \ignorespaces#3\unskip}}
+
+\def\doXSDkeyval#1#2#3#4%
+ {\bgroup
+ \edef\XSDtemp{\XMLpar{#3}{#4}{}}%
+ \doifsomething{\XSDtemp}
+ {\def\doXSDtemp{\dodoXSDkeyval{#1}{#2}{\XSDtemp}}%
+ \def\doXSDtype{\dodoXSDkeyval{#1}{#2}{\XMLtyp{#3}{#4}{}}}%
+ \setupinteraction[color=,contrastcolor=,style=]%
+ \processaction
+ [#4]
+ [ value=>\doXSDtype,
+ name=>{\writetolist[xsd:names]{}{\XSDtemp}%
+ \writetoregister[xsd:index]{\XSDtemp}%
+ \ifXDScomposite \else
+ \pagereference[xsd:\XSDprefix:\XSDtemp]%
+ \fi
+ \doXSDtemp},
+ type=>{\doifinstringelse{xsd:}{\XSDtemp}
+ {\doXSDtemp}
+ {\gotobox{\doXSDtemp}[xsd:\XSDprefix:\XSDtemp]}},
+ ref=>{\doifinstringelse{xsd:}{\XSDtemp}
+ {\doXSDtemp}
+ {\gotobox{\doXSDtemp}[xsd:\XSDprefix:\XSDtemp]}},
+ unknown=>\doXSDtemp]}%
+ \endgraf
+ \egroup}
+
+\def\doXSDkeyvals#1#2#3%
+ {\def\docommando##1{\doXSDkeyval{#1}{##1}{#2}{##1}}%
+ \processcommalist[#3]\docommando}
+
+\def\dodoXSDbanner#1%
+ {\framed
+ [width=\hsize,framecolor=xsd:0,frame=off,
+ background=color,backgroundcolor=xsd:0]
+ {\ignorespaces#1\unskip}}
+
+\def\doXSDtitle#1#2#3%
+ {\edef\XSDtemp{\XMLpar{#2}{#3}{}}%
+ \dodoXSDbanner
+ {{\bf\ignorespaces#1\unskip}%
+ \doifsomething{\XSDtemp}
+ {:\space\ignorespaces\XSDtemp\unskip
+ \pagereference[xsd:\XSDprefix:\XSDtemp]}}}
+
+\def\doXSDbanner#1%
+ {\dodoXSDbanner{\bf#1}}
+
+%D We use colored backgrounds for meaningful blocks.
+
+\definecolor [xsd:0] [white]
+
+\definecolor [xsd:1] [s=.30]
+\definecolor [xsd:2] [s=.55]
+\definecolor [xsd:3] [s=.70]
+\definecolor [xsd:4] [s=.85]
+
+\definecolor [xsd:5] [r=.6,g=.7,b=.8]
+\definecolor [xsd:6] [r=.7,g=.8,b=.6]
+\definecolor [xsd:7] [r=1,g=1,b=.6]
+\definecolor [xsd:8] [r=.8,g=.7,b=.6]
+
+\defineframedtext [XSDannotation] [backgroundcolor=xsd:0]
+
+\defineframedtext [XSDelement] [backgroundcolor=xsd:5]
+\defineframedtext [XSDattribute] [backgroundcolor=xsd:6]
+\defineframedtext [XSDsimpleType] [backgroundcolor=xsd:7]
+\defineframedtext [XSDcomplexType] [backgroundcolor=xsd:8]
+
+\defineframedtext [XSDcomplexContent] [backgroundcolor=xsd:1]
+\defineframedtext [XSDsimpleContent] [backgroundcolor=xsd:1]
+\defineframedtext [XSDattributeGroup] [backgroundcolor=xsd:1]
+
+\defineframedtext [XSDcapsule] [backgroundcolor=xsd:2]
+\defineframedtext [XSDsequence] [backgroundcolor=xsd:3]
+
+\def\XDSstructures% handy for external settings
+ {XSDannotation,
+ XSDcomplexType,XSDsimpleType,XSDelement,XSDattribute,
+ XSDcomplexContent,XSDsimpleContent,XSDattributeGroup,
+ XSDcapsule,XSDsequence}
+
+\setupframedtexts
+ [\XDSstructures]
+ [width=\hsize,
+ offset=.5\bodyfontsize,
+ location=none,
+ background=color,
+ framecolor=xsd:0,
+ before=\ifinframed\else\blank\fi,
+ after=\ifinframed\else\blank\fi,
+ depthcorrection=off,
+ rulethickness=1pt,
+ strut=no]
+
+\definesymbol[xsd][{\blackrule[width=4em]}]
+
+\def\placeXSDlegenda
+ {\startbaselinecorrection
+ \starttabulate[|l|l|]
+ \HL
+ \NC \bf color \NC \bf meaning \NC \NR
+ \HL
+ \NC \color[xsd:1]{\symbol[xsd]} \NC complexContent \unskip\quad
+ simpleContent \unskip\quad
+ attributeGroup \NC \NR
+ \NC \color[xsd:2]{\symbol[xsd]} \NC capsule \NC \NR
+ \NC \color[xsd:3]{\symbol[xsd]} \NC sequence \NC \NR
+ \HL
+ \NC \color[xsd:5]{\symbol[xsd]} \NC element \NC \NR
+ \NC \color[xsd:6]{\symbol[xsd]} \NC attribute \NC \NR
+ \NC \color[xsd:7]{\symbol[xsd]} \NC simpleType \NC \NR
+ \NC \color[xsd:8]{\symbol[xsd]} \NC complexType \NC \NR
+ \HL
+ \stoptabulate
+ \stopbaselinecorrection}
+
+\defineXMLenvironment [xsd:all] [id=]
+ {\startXSDcapsule
+ \doXSDbanner{all}
+ \doXSDkeyvals{all}{xsd:all}{id}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:annotation]
+ {\startXSDcapsule
+ \doXSDbanner{annotation}
+ \startXSDannotation}
+ {\stopXSDannotation
+ \stopXSDcapsule}
+
+\defineXMLignore [xsd:appInfo]
+
+\defineXMLenvironment [xsd:attribute]
+ [id=,name=,ref=,type=,form=,use=,value=]
+ {\startXSDattribute
+ \doifelsenothing{\XMLpar{xsd:attribute}{ref}{}}
+ {\doXSDkeyvals{attribute}{xsd:attribute}{name,type}}
+ {\doXSDkeyvals{attribute}{xsd:attribute}{ref}}
+ \doXSDkeyvals{attribute}{xsd:attribute}{id,form,use,value}
+ \XDScompositetrue}
+ {\stopXSDattribute}
+
+\defineXMLenvironment [xsd:attributeGroup] [id=,name=,ref=]
+ {\startXSDattributeGroup
+ \doXSDtitle{attribute group}{xsd:attributeGroup}{name}
+ \doXSDkeyvals{attr group}{xsd:attributeGroup}{id,name,ref}
+ \XDScompositetrue}
+ {\stopXSDattributeGroup}
+
+\defineXMLenvironment [xsd:choice] [id=,minOccurs=,maxOccurs=]
+ {\startXSDcapsule
+ \doXSDbanner{choice}
+ \doXSDkeyvals{choice}{xsd:choice}{id,minOccurs,maxOccurs}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:complexContent] [id=,mixed=]
+ {\startXSDcomplexContent
+ \doXSDkeyvals{complex content}{xsd:complexContent}{id,mixed}
+ \XDScompositetrue}
+ {\stopXSDcomplexContent}
+
+\defineXMLenvironment [xsd:complexType]
+ [id=,abstract=,block=,final=,mixed=,name=]
+ {\startXSDcomplexType
+ \doXSDtitle{complex type}{xsd:complexType}{name}
+ \doXSDkeyvals{complex type}{xsd:complexType}{id,abstract,block,final,mixed}
+ \XDScompositetrue}
+ {\stopXSDcomplexType}
+
+\defineXMLenvironment [xsd:documentation] [source=,xml:lang=]
+ {\endgraf\bgroup\setupwhitespace[big]}
+ {\endgraf\egroup}
+
+\defineXMLenvironment [xsd:element]
+ [name=,type=,ref=,
+ abstract=,block=,default=,final=,fixed=,form=,id=,
+ minOccurs=,maxOccurs=,nullable=,substitutionGroup=]
+ {\startXSDelement
+ \doifelsenothing{\XMLpar{xsd:element}{ref}{}}
+ {\doXSDkeyvals{element}{xsd:element}{name,type}}
+ {\doXSDkeyvals{element}{xsd:element}{ref}}
+ \doXSDkeyvals{element}{xsd:element}
+ {id,abstract,block,default,final,fixed,form,
+ minOccurs,maxOccurs,nullable,substitutionGroup}
+ \XDScompositetrue}
+ {\stopXSDelement}
+
+\defineXMLenvironment [xsd:extension] [id=,base=]
+ {\startXSDcapsule
+ \doXSDbanner{extension}
+ \doXSDkeyvals{extension}{xsd:extension}{id,base}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:group]
+ [id=,name=,ref=,minOccurs=,maxOccurs=]
+ {\startXSDcapsule
+ \doXSDbanner{group}
+ \doXSDkeyvals{group}{xsd:group}{id,name,ref,minOccurs,maxOccurs}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:key] [id=,name=]
+ {\startXSDcapsule
+ \doXSDbanner{key}
+ \doXSDkeyvals{key}{xsd:key}{id,name}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:keyref] [id=,name=,refer=]
+ {\startXSDcapsule
+ \doXSDbanner{keyref}
+ \doXSDkeyvals{key ref}{xsd:keyref}{id,name,refer}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:list] [id=,itemType=]
+ {\startXSDcapsule
+ \doXSDbanner{list}
+ \doXSDkeyvals{list}{xsd:list}{id,itemType}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:redefine] [schemaLocation=]
+ {\startXSDcapsule
+ \doXSDbanner{redefine}
+ \doXSDkeyvals{redefine}{xsd:redefine}{schemaLocation}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:restriction] [id=,base=]
+ {\startXSDcapsule
+ \doXSDbanner{restriction}
+ \doXSDkeyvals{restriction}{xsd:restriction}{id,base}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:schema]
+ [attributeFormDefault=,blockDefault=,elementFormDefault=,
+ finalDefault=,id=,targetNamespace=,version=]
+ {\startXSDcapsule
+ \doglobal\increment\XSDprefix
+ \doXSDbanner{schema}
+ \doXSDkeyvals{schema}{xsd:schema}
+ {attributeFormDefault,blockDefault,elementFormDefault,
+ finalDefault,id,targetNamespace,version}
+ \stopXSDcapsule}
+ {}
+
+\defineXMLenvironment [xsd:sequence] [id=,minOccurs=,maxOccurs=]
+ {\startXSDsequence
+ \doXSDbanner{sequence}
+ \doXSDkeyvals{sequence}{xsd:sequence}{id,minOccurs,maxOccurs}
+ \XDScompositetrue}
+ {\stopXSDsequence}
+
+\defineXMLenvironment [xsd:simpleContent] [id=]
+ {\startXSDsimpleContent
+ \doXSDkeyvals{simple content}{xsd:simpleContent}{id}
+ \XDScompositetrue}
+ {\stopXSDsimpleContent}
+
+\defineXMLenvironment [xsd:simpleType] [id=,name=]
+ {\startXSDsimpleType
+ \doXSDtitle{simple type}{xsd:simpleType}{name}
+ \doXSDkeyvals{simple type}{xsd:simpleType}{id}
+ \XDScompositetrue}
+ {\stopXSDsimpleType}
+
+\defineXMLenvironment [xsd:union] [id=,memberTypes=]
+ {\startXSDcapsule
+ \doXSDbanner{union}
+ \doXSDkeyvals{union}{xsd:union}{id,memberTypes}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\defineXMLenvironment [xsd:unique] [id=,name=]
+ {\startXSDcapsule
+ \doXSDbanner{unique}
+ \doXSDkeyvals{unique}{xsd:unique}{id,name}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+
+\def\defineXSDfacet
+ {\dotripleempty\dodefineXSDfacet}
+
+\def\dodefineXSDfacet[#1][#2][#3]%
+ {\defineXMLenvironment[xsd:#1][#2]
+ {\startXSDcapsule
+ \doXSDkeyvals{#1}{xsd:#1}{#3}
+ \XDScompositetrue}
+ {\stopXSDcapsule}
+ \defineXMLsingular[xsd:#1][#2]
+ {\doXSDkeyvals{#1}{xsd:#1}{#3}}}
+
+\defineXSDfacet [duration] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [encoding] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [enumeration] [id=,value=,fixed=] [id,value,fixed]
+
+\defineXSDfacet [length] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [minLength] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [maxLength] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [minInclusive] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [maxInclusive] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [minExclusive] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [maxExclusive] [id=,value=,fixed=] [id,value,fixed]
+
+\defineXSDfacet [pattern] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [period] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [precision] [id=,value=,fixed=] [id,value,fixed]
+\defineXSDfacet [scale] [id=,value=,fixed=] [id,value,fixed]
+
+\defineXSDfacet [field] [id=,xpath=] [id,xpath]
+\defineXSDfacet [selector] [id=,xpath=] [id,xpath]
+
+\defineXSDfacet
+ [any]
+ [id=,namespace=,minOccurs=,maxOccurs=,processContents=]
+ [id,namespace,minOccurs,maxOccurs,processContent]
+
+\defineXSDfacet
+ [anyAttribute]
+ [id=,namespace=,processContents=]
+ [id,namespace,processContents]
+
+\defineXSDfacet
+ [import]
+ [id=,namespace=,schemaLocation=]
+ [id,namespace,schemaLocation]
+
+\defineXSDfacet
+ [include]
+ [id=,schemaLocation=]
+ [id,schemaLocation]
+
+\defineXSDfacet
+ [notation]
+ [id=,name=,public=,system=]
+ [id,name,public,system]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/x-sch-01.tex b/Master/texmf-dist/tex/context/base/x-sch-01.tex
new file mode 100644
index 00000000000..d72cbf89c84
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-sch-01.tex
@@ -0,0 +1,122 @@
+%D \module
+%D [ file=x-sch-01,
+%D version=2001.10.04,
+%D title=\CONTEXT\ Style File,
+%D subtitle=XML Schema Presentation,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This style wraps around the core schema visualizer,
+%D implemented in \type {x-sch-00}. This is an experimental
+%D style, more will follow.
+%D
+%D \starttyping
+%D texexec --use=sch-01 x-fig-00.xsd --pdf
+%D \stoptyping
+
+\doifnothing {\jobfilename} {\end}
+\doiffileelse {\jobfilename.xsd} {} {\end}
+
+\usemodule[sch-00,con-01]
+
+\remapXMLnamespace [xs] [xsd]
+
+\setuplayout
+ [backspace=1.5cm,
+ topspace=1.5cm,
+ bottomspace=1cm,
+ width=middle,
+ height=middle,
+ header=1.5cm,
+ footer=1.5cm]
+
+\setupcolors
+ [state=start]
+
+\setupbackgrounds
+ [page]
+ [background=goback]
+
+\setupbackgrounds
+ [text]
+ [background=gonext]
+
+\defineoverlay
+ [goback]
+ [\overlaybutton{PreviousJump}]
+
+\defineoverlay
+ [gonext]
+ [\overlaybutton{nextpage}]
+
+\setuppagenumbering
+ [location=footer]
+
+\usetypescript
+ [palatino]
+ [\defaultencoding]
+
+\setupbodyfont
+ [palatino,10pt]
+
+%\setupinteraction
+% [state=start,
+% color=,
+% contrastcolor=,
+% style=]
+
+\setuplist
+ [xsd:names]
+ [interaction=all,
+ width=0pt,
+ alternative=c]
+
+\setupregister
+ [xsd:index]
+ [interaction=text,
+ symbol=none]
+
+\setuphead
+ [chapter]
+ [style=\bfd,
+ header=high]
+
+\setuphead
+ [section]
+ [style=\bfb]
+
+\lowercasestring \jobfilename \to \lcjobfilename
+
+\setupheadertexts
+ [\lcjobfilename]
+
+\starttext
+
+\title{Schema \quote{\lcjobfilename.xsd}}
+
+\subject{Names in order of definition}
+
+\startcolumns[n=3]
+ \placelist[xsd:names][criterium=current]
+\stopcolumns
+
+\subject{Names in alphabetic order}
+
+\startcolumns[n=3]
+ \placeregister[xsd:index][criterium=current]
+\stopcolumns
+
+\subject{Meaning of background colors}
+
+\placeXSDlegenda
+
+\subject{Schema components}
+
+\processXMLfilegrouped{\jobfilename.xsd}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-set-01.tex b/Master/texmf-dist/tex/context/base/x-set-01.tex
new file mode 100644
index 00000000000..65fd7886550
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-set-01.tex
@@ -0,0 +1,75 @@
+%D \module
+%D [ file=x-set-01,
+%D version=2004.10.31,
+%D remark=setupx.tex: 1998.07.20 and later,
+%D title=\CONTEXT\ Setup Mappings,
+%D subtitle=Macro Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\def\SETUPnamespace{xmlns:cd="http://www.pragma-ade.com/commands"}
+
+\bgroup \catcode`\<=\@@other
+
+\unexpanded\gdef\dostring#1#2#3%
+ {\immediate\write\scratchwrite{#1<#2cd:#3>}}
+
+\gdef\doline#1%
+ {\immediate\write\scratchwrite{#1}}
+
+\egroup
+
+\def\startsetupfile
+ {\immediate\openout\scratchwrite=keys-\currentlanguage.xml
+ \doline{\string<?xml version="1.0"?>}
+ \doline{}
+ \dostring{}{}{interface \SETUPnamespace\space name="context" language="\currentlanguage" version="\contextversion"}}
+
+\def\stopsetupfile
+ {\doline{}
+ \dostring{}{/}{interface}
+ \immediate\closeout\scratchwrite}
+
+\def\interfacecomponenttoxml#1#2#3%
+ {\doifelse{#3}\nointerfaceobject
+ {\dostring{\space\space\space\space}{}{#1 name="#2" value="#2"/}}
+ {\dostring{\space\space\space\space}{}{#1 name="#2" value="#3"/}}}
+
+\def\setinterfaceconstant{\interfacecomponenttoxml{constant}}
+\def\setinterfacevariable{\interfacecomponenttoxml{variable}}
+\def\setinterfaceelement {\interfacecomponenttoxml{element}}
+\def\setinterfacecommand {\interfacecomponenttoxml{command}}
+
+\def\startinterfacexmlcomponent{\doline{}\dostring{\space\space}{}} % #1
+\def\stopinterfacexmlcomponent {\dostring{\space\space}{/}} % #1
+
+\let\normalstartvariables\startvariables \let\normalstopvariables\stopvariables
+\let\normalstartconstants\startconstants \let\normalstopconstants\stopconstants
+\let\normalstartcommands \startcommands \let\normalstopcommands \stopcommands
+\let\normalstartelements \startelements \let\normalstopelements \stopelements
+
+\def\startvariables{\startinterfacexmlcomponent{variables}\normalstartvariables}
+\def\startconstants{\startinterfacexmlcomponent{constants}\normalstartconstants}
+\def\startcommands {\startinterfacexmlcomponent{commands} \normalstartcommands }
+\def\startelements {\startinterfacexmlcomponent{elements} \normalstartelements }
+
+\def\stopvariables{\stopinterfacexmlcomponent{variables}\normalstopvariables}
+\def\stopconstants{\stopinterfacexmlcomponent{constants}\normalstopconstants}
+\def\stopcommands {\stopinterfacexmlcomponent{commands} \normalstopcommands }
+\def\stopelements {\stopinterfacexmlcomponent{elements} \normalstopelements }
+
+\protect
+
+\starttext
+ \startsetupfile
+ \input mult-con.tex
+ \input mult-com.tex
+ \stopsetupfile
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-set-02.tex b/Master/texmf-dist/tex/context/base/x-set-02.tex
new file mode 100644
index 00000000000..0582aadc5c8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-set-02.tex
@@ -0,0 +1,35 @@
+%D \module
+%D [ file=x-set-02,
+%D version=2004.10.31,
+%D remark=setupx.tex: 1998.07.20 and later,
+%D title=\CONTEXT\ Setup Mappings,
+%D subtitle=Macro Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect \bgroup \catcode`\<=\@@other
+
+\def\setinterfacecomponent#1#2#3%
+ {\doifelse{#3}\nointerfaceobject
+ {\setgvalue{\string<#1\string:#2\string>}{#2}}
+ {\setgvalue{\string<#1\string:#2\string>}{#3}}}
+
+\gdef\getinterfacecomponent#1#2%
+ {\executeifdefined{\string<#1\string:#2\string>}{#2}}
+
+\def\setinterfaceconstant{\setinterfacecomponent{constant}} % constant
+\def\setinterfacevariable{\setinterfacecomponent{variable}} % variable
+\def\setinterfaceelement {\setinterfacecomponent{string}} % element
+\def\setinterfacecommand {\setinterfacecomponent{string}} % command
+
+\input mult-con.tex
+\input mult-com.tex
+
+% we need to replace the y! by just the name
+
+\egroup \protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-set-11.tex b/Master/texmf-dist/tex/context/base/x-set-11.tex
new file mode 100644
index 00000000000..5e7068b1409
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-set-11.tex
@@ -0,0 +1,745 @@
+%D \module
+%D [ file=x-set-11,
+%D version=2004.10.31,
+%D remark=setupx.tex: 1998.07.20 and later,
+%D title=\CONTEXT\ Setup Definitions,
+%D subtitle=Macro Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% module x-set-02 loads the mapping, after that we can say:
+%
+% texmfstart texexec --int=nl --pdf --global --result=setup-nl x-set-12
+%
+% \getinterfacecomponent{constant|variable|string}{tag}
+
+\usemodule[set-02]
+
+\unprotect
+
+% general
+
+\def\setupnumfont {}
+\def\setuptxtfont {}
+\def\setupintfont#1{\uppercase{#1}}
+\def\setupvarfont {\sl}
+\def\setupoptfont {\sl}
+\def\setupalwcolor {}
+\def\setupoptcolor {darkgray}
+
+\defineXMLenvironmentsave [cd:content] [list=,state=]
+ {\simpleSETUPargument{content}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\startmessages dutch library: setup
+ title: setup
+ formula: formule
+ number: getal
+ list: lijst
+ dimension: maat
+ mark: markering
+ reference: verwijzing
+ command: commando
+ file: file
+ name: naam
+ identifier: naam
+ text: tekst
+ section: sectie
+ singular: naam enkelvoud
+ plural: naam meervoud
+ matrix: n*m
+ see: zie
+ inherits: erft van
+ 1: de karakters < en > zijn globaal actief!
+ 2: -- wordt verwerkt
+ 3: -- is niet gedefinieerd
+ 4: -- wordt nogmaals verwerkt
+ optional: optioneel
+ displaymath: formule
+ index: ingang
+ math: formule
+ nothing: leeg
+ file: file
+ position: positie
+ reference: verwijzing
+ csname: naam
+ destination: bestemming
+ triplet: triplet
+ word: woord
+ content: tekst
+\stopmessages
+
+\startmessages english library: setup
+ title: setup
+ formula: formula
+ number: number
+ list: list
+ dimension: dimension
+ mark: mark
+ reference: reference
+ command: command
+ file: file
+ name: name
+ identifier: identifier
+ text: text
+ section: section
+ singular: singular name
+ plural: plural name
+ matrix: n*m
+ see: see
+ inherits: inherits from
+ 1: the characters < and > are globally active!
+ 2: -- is processed
+ 3: -- is undefined
+ 4: -- is processed again
+ optional: optioneel
+ displaymath: formula
+ index: entry
+ math: formula
+ nothing: empty
+ file: file
+ position: position
+ reference: reference
+ csname: name
+ destination: destination
+ triplet: triplet
+ word: word
+ content: text
+\stopmessages
+
+\startmessages german library: setup
+ title: Setup
+ formula: Formel
+ number: Nummer
+ list: Liste
+ dimension: Dimension
+ mark: Beschriftung
+ reference: Referenz
+ command: Befehl
+ file: Datei
+ name: Name
+ identifier: Name
+ text: Text
+ section: Abschnitt
+ singular: singular
+ plural: plural
+ matrix: n*m
+ see: siehe
+ inherits: inherits from
+ 1: Die Zeichen < und > gelten global!
+ 2: -- wird verarbeitet
+ 3: -- ist undefiniert
+ 4: -- ist mehrmals verarbeitet
+ optional: optioneel
+ displaymath: formula
+ index: entry
+ math: formula
+ nothing: empty
+ file: file
+ position: position
+ reference: reference
+ csname: name
+ destination: destination
+ triplet: triplet
+ word: word
+ content: text
+\stopmessages
+
+\startmessages czech library: setup
+ title: setup
+ formula: rovnice
+ number: cislo
+ list: seznam
+ dimension: dimenze
+ mark: znacka
+ reference: reference
+ command: prikaz
+ file: soubor
+ name: jmeno
+ identifier: jmeno
+ text: text
+ section: sekce
+ singular: jmeno v singularu
+ plural: jmeno v pluralu
+ matrix: n*m
+ see: viz
+ inherits: inherits from
+ 1: znaky < a > jsou globalne aktivni!
+ 2: -- je zpracovano
+ 3: -- je nedefinovano
+ 4: -- je zpracovano znovu
+ optional: optioneel
+ displaymath: formula
+ index: entry
+ math: formula
+ nothing: empty
+ file: file
+ position: position
+ reference: reference
+ csname: name
+ destination: destination
+ triplet: triplet
+ word: word
+ content: text
+\stopmessages
+
+\startmessages italian library: setup
+ title: setup
+ formula: formula
+ number: number
+ list: list
+ dimension: dimension
+ mark: mark
+ reference: reference
+ command: command
+ file: file
+ name: name
+ identifier: name
+ text: text
+ section: section
+ singular: singular name
+ plural: plural name
+ matrix: n*m
+ see: see
+ inherits: inherits from
+ 1: the characters < and > are globally active!
+ 2: -- is processed
+ 3: -- is undefined
+ 4: -- is processed again
+ optional: optioneel
+ displaymath: formula
+ index: entry
+ math: formula
+ nothing: empty
+ file: file
+ position: position
+ reference: reference
+ csname: name
+ destination: destination
+ triplet: triplet
+ word: word
+ content: text
+\stopmessages
+
+\startmessages romanian library: setup
+ title: setari
+ formula: formula
+ number: numar
+ list: lista
+ dimension: dimensiune
+ mark: marcaj
+ reference: referinta
+ command: comanda
+ file: fisier
+ name: nume
+ identifier: nume
+ text: text
+ section: sectiune
+ singular: nume singular
+ plural: nume pluram
+ matrix: n*m
+ see: vezi
+ inherits: inherits from
+ 1: caracterele < si > sunt active global!
+ 2: este procesat --
+ 3: -- este nedefinit
+ 4: -- este procesat din nou
+ optional: optioneel
+ displaymath: formula
+ index: entry
+ math: formula
+ nothing: empty
+ file: file
+ position: position
+ reference: reference
+ csname: name
+ destination: destination
+ triplet: triplet
+ word: word
+ content: text
+\stopmessages
+
+\def\c!setup!internal!#1%
+ {{\dogetmessage{setup}{#1}%
+ \expanded{\setupintfont{\currentmessagetext}}}}
+
+\def\c!setup!text!#1%
+ {{\dogetmessage{setup}{#1}%
+ \setupvarfont{\currentmessagetext}}}
+
+\def\c!setup!command!#1%
+ {{\setupvarfont{\texescape...#1}}}
+
+\def\??stp{@@stp}
+
+\defineregister
+ [texmacro]
+ [texmacros]
+
+\definesorting
+ [texcommand]
+ [texcommands]
+
+\setupsorting
+ [texcommand]
+ [\c!command=\@@stpcommand,
+ \c!criterium=\@@stpcriterium]
+
+\definesorting
+ [eachtexcommand]
+ [alltexcommands]
+
+\setupsorting
+ [eachtexcommand]
+ [\c!command=\@@stpcommand,
+ \c!criterium=\v!all]
+
+\pushmacro\setuptext
+
+\defineframedtext
+ [setuptext]
+ [\c!width=\hsize,
+ \c!height=\v!fit,
+ \c!align=\v!right,
+ \c!offset=0.75em]
+
+\popmacro\setuptext
+
+\newif\ifshortsetup
+
+\def\setup {\shortsetupfalse\dosetup}
+\def\shortsetup{\shortsetuptrue\dosetup}
+\def\setupsetup{\dodoubleargument\getparameters[\??stp]}
+
+\setupsetup
+ [\c!before=,
+ \c!after=,
+ \c!command=\setup,
+ \c!criterium=\v!used]
+
+% verwijzing: 0 geen verwijzingen plaatsen / wel genereren
+% 1 alleen bij zie plaatsen / wel genereren
+% 2 alle verwijzingen plaatsen / niet genereren
+% 3 bij zie commando klikken / wel genereren
+
+\setupsetup
+ [\c!reference=0]
+
+\def\placesetup
+ {\bgroup
+ \getvalue{\e!place\e!listof texcommands}
+ \egroup}
+
+\def\placeeverysetup % for fun purposes only
+ {\bgroup
+ \setupsetup[\c!reference=2]%
+ \setupreferencing[\c!state=\v!stop]%
+ \getvalue{\e!place\e!listof alltexcommands}%
+ \egroup}
+
+\let\plaatssetup \placesetup
+\let\plaatselkesetup\placeeverysetup
+
+\def\dosetup#1{{\enableXML\flushXMLelement{stp:#1}}}
+
+\defineXMLenvironment [cd:command] [name=,type=,generated=,interactive=]
+ {}
+ {\showSETUPrecord}
+
+\def\showSETUPrecord
+ {\getvalue{startsetuptext}
+ \tttf
+ \nohyphens
+ \veryraggedright
+ \startXMLmapping [one]
+ \doglobal\newcounter\currentSETUPargument
+ \global\let\maximumSETUPargument\currentSETUPargument
+ \bgroup
+ \doifXMLop{generated}{yes}{\ttsl}%
+ \doifelseXMLop{type}{environment}
+ {\tex{\e!start}}{\tex{}}\ignorespaces
+ \XMLflush{cd:sequence}\ignorespaces
+ \egroup
+ \doifelseXMLempty{cd:arguments}
+ {}
+ {\bgroup
+ \setbox0=\hbox{\XMLflush{cd:arguments}}%
+ \global\let\maximumSETUPargument\currentSETUPargument
+ \doglobal\newcounter\currentSETUPargument
+ \ignorespaces\XMLflush{cd:arguments}%
+ \doif{\XMLpar{cd:command}{type}{}}{environment}
+ {\hskip.5em\unknown\hskip.5em
+ \tex{\e!stop}\ignorespaces\XMLflush{cd:sequence}}%
+ \endgraf
+ \egroup
+ %\bgroup
+ % \tx
+ % \doif{\XMLpar{cd:command}{interactive}{}}{yes} {\quad INTERACTIVE}%
+ % \doif{\XMLpar{cd:command}{interactive}{}}{exclusive}{\quad INTERACTIVE ONLY}%
+ %\egroup
+ \startXMLmapping [two]
+ \bgroup
+ \doglobal\newcounter\currentSETUPargument
+ \blank[\v!line]
+ \switchtobodyfont[small] % kan sneller
+ \ignorespaces\XMLflush{cd:arguments}\endgraf
+ \egroup
+ \stopXMLmapping}
+ \stopXMLmapping
+ \getvalue{stopsetuptext}}
+
+\defineXMLenvironmentsave [cd:sequence] \ignorespaces \ignorespaces
+\defineXMLenvironmentsave [cd:arguments] \ignorespaces \ignorespaces
+
+%D This is the first pass; here we generate the top line.
+
+\newcounter\currentSETUPargument
+\def\currentSETUPwidth{0pt}
+
+% environmentsave ?
+
+\startXMLmapping [one]
+
+\defineXMLenvironmentsave [cd:string] [value=]
+ {\getinterfacecomponent{string}{\XMLop{value}}\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:variable] [value=]
+ {{\expanded{\setupintfont{\getinterfacecomponent{variable}{\XMLop{value}}}}}\ignorespaces}
+ {\ignorespaces}
+
+% moet een standaard type worden
+
+\defineXMLenvironmentsave [cd:assignments] [list=,state=]
+ {\showSETUPassignment\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:keywords] [list=,state=]
+ {\showSETUPkeyword\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:content] [list=,state=]
+ {\showSETUPcontent\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:displaymath] [list=,state=]
+ {\showSETUPdisplaymath\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:index] [list=,state=]
+ {\showSETUPindex\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:math] [list=,state=]
+ {\showSETUPmath\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:nothing] [list=,state=]
+ {\showSETUPnothing\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:file] [list=,state=]
+ {\showSETUPfile\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:position] [list=,state=]
+ {\showSETUPposition\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:reference] [list=,state=]
+ {\showSETUPreference\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:csname] [list=,state=]
+ {\showSETUPcsname\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:destination] [list=,state=]
+ {\showSETUPdestination\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:triplet] [list=,state=]
+ {\showSETUPtriplet\ignorespaces} {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:word] [list=,state=]
+ {\showSETUPword\ignorespaces} {\ignorespaces}
+
+\stopXMLmapping
+
+%D This is the second pass; here we generate the table.
+
+\startXMLmapping [two]
+
+\def\startfirstSETUPcolumn#1%
+ {\bgroup
+ \advance\leftskip 2em
+ \noindent\llap{\hbox to 2em{#1\hss}}}
+
+\def\stopfirstSETUPcolumn
+ {\endgraf
+ \egroup}
+
+\def\startsecondSETUPcolumn#1#2%
+ {\bgroup
+ \advance\hangindent \currentSETUPwidth
+ \advance\hangindent 2.5em
+ \noindent \hbox to \hangindent{#1\hss\hbox to 2.5em{\hss#2\hss}}}
+
+\def\stopsecondSETUPcolumn
+ {\endgraf
+ \egroup}
+
+\def\secondSETUPcolumn#1#2%
+ {\startsecondSETUPcolumn{#1}{#2}\stopsecondSETUPcolumn}
+
+\def\previousSETUPargument{\currentSETUPargument}
+
+\defineXMLenvironmentsave [cd:assignments]
+ {}
+ {\xdef\currentSETUPwidth{0pt}%
+ \bgroup
+ \defineXMLenvironment [cd:parameter] [name=]
+ {\setbox0=\hbox{\potentialXMLentity{\getinterfacecomponent{constant}{\XMLop{name}}}}%
+ \ifdim\wd0>\currentSETUPwidth\xdef\currentSETUPwidth{\the\wd0}\fi}%
+ {}
+ \setbox0=\vbox{\XMLflush{cd:assignments}}%
+ \egroup
+ \startfirstSETUPcolumn{\showSETUPnumber}%
+ \doifelseXMLempty{cd:assignments}
+ {\secondSETUPcolumn{\c!setup!text!{see} \previousSETUPargument}{}}
+ {\ignorespaces
+ \XMLflush{cd:assignments}%
+ \let\previousSETUPargument\currentSETUPargument}%
+ \stopfirstSETUPcolumn
+ \blank[\v!halfline]
+ \ignorespaces}
+
+\defineXMLenvironmentsave [cd:keywords]
+ {}
+ {\startfirstSETUPcolumn{\showSETUPnumber}%
+ \doifelseXMLempty{cd:keywords}
+ {\secondSETUPcolumn{see \previousSETUPargument}{}}
+ {\ignorespaces
+ \XMLflush{cd:keywords}%
+ \let\previousSETUPargument\currentSETUPargument}%
+ \stopfirstSETUPcolumn
+ \blank[\v!halfline]
+ \ignorespaces}
+
+\defineXMLenvironment [cd:parameter] [name=]
+ {\startsecondSETUPcolumn{\potentialXMLentity{\getinterfacecomponent{constant}{\XMLop{name}}}}{=}%
+ \ignorespaces}
+ {\stopsecondSETUPcolumn
+ \ignorespaces}
+
+\defineXMLenvironmentsave [cd:constant] [type=,default=]
+ {\doifXMLop{default}{yes}{\underbar}%
+ {\potentialXMLentity{\getinterfacecomponent{variable}{\XMLop{type}}}}\quad\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:variable] [type=]
+ {\potentialXMLentity{\getinterfacecomponent{variable}{\XMLop{type}}}\quad\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:inherit] [name=]
+ {\secondSETUPcolumn{\c!setup!text!{inherits} \tex{}\getinterfacecomponent{string}{\XMLop{name}}}{}\ignorespaces}
+ {\ignorespaces}
+
+\def\simpleSETUPargument#1%
+ {\startfirstSETUPcolumn{\showSETUPnumber}%
+ \c!setup!internal!{#1}%
+ \stopfirstSETUPcolumn}
+
+\defineXMLenvironmentsave [cd:content] [list=,state=]
+ {\simpleSETUPargument{content}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:displaymath] [list=,state=]
+ {\simpleSETUPargument{display math}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:index] [list=,state=]
+ {\simpleSETUPargument{index}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:math] [list=,state=]
+ {\simpleSETUPargument{math}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:nothing] [list=,state=]
+ {\simpleSETUPargument{nothing}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:file] [list=,state=]
+ {\simpleSETUPargument{file name}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:position] [list=,state=]
+ {\simpleSETUPargument{position}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:reference] [list=,state=]
+ {\simpleSETUPargument{reference}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:csname] [list=,state=]
+ {\simpleSETUPargument{csname}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:destination] [list=,state=]
+ {\simpleSETUPargument{destination}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:triplet] [list=,state=]
+ {\simpleSETUPargument{triplet}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\defineXMLenvironmentsave [cd:word] [list=,state=]
+ {\simpleSETUPargument{word}\blank[\v!halfline]\ignorespaces}
+ {\ignorespaces}
+
+\stopXMLmapping
+
+\defineXMLentity [cd:command] {\c!setup!internal!{command}}
+\defineXMLentity [cd:dimension] {\c!setup!internal!{dimension}}
+\defineXMLentity [cd:file] {\c!setup!internal!{file}}
+\defineXMLentity [cd:name] {\c!setup!internal!{identifier}}
+\defineXMLentity [cd:character] {\c!setup!internal!{character}}
+\defineXMLentity [cd:mark] {\c!setup!internal!{mark}}
+\defineXMLentity [cd:number] {\c!setup!internal!{number}}
+\defineXMLentity [cd:reference] {\c!setup!internal!{reference}}
+\defineXMLentity [cd:plural] {\c!setup!internal!{plural}}
+\defineXMLentity [cd:singular] {\c!setup!internal!{singular}}
+\defineXMLentity [cd:text] {\c!setup!internal!{text}}
+\defineXMLentity [cd:formula] {\c!setup!internal!{formula}}
+\defineXMLentity [cd:file] {\c!setup!internal!{file}}
+\defineXMLentity [cd:matrix] {\c!setup!internal!{matrix}}
+\defineXMLentity [cd:list] {\c!setup!internal!{list}}
+\defineXMLentity [cd:section] {\c!setup!internal!{section}}
+
+\defineXMLentity [cd:noargument] {\c!setup!command!{}}
+\defineXMLentity [cd:oneargument] {\c!setup!command!{\#1}}
+\defineXMLentity [cd:twoarguments] {\c!setup!command!{\#1\#2}}
+\defineXMLentity [cd:threearguments] {\c!setup!command!{\#1\#2\#3}}
+
+%D Todo:
+
+\defineXMLprocess [cd:choice]
+
+%D Auxiliary.
+
+\unexpanded\def\showSETUP#1#2%
+ {\bgroup
+ \doglobal\increment\currentSETUPargument
+ \setbox0=\hbox
+ {\doifelseXMLop{list}{yes}{#2}{#1}}%
+ \setbox2=\hbox to \wd0
+ {\hss
+ \raise1ex\hbox
+ {\tx\ifcase\maximumSETUPargument\relax
+ \or*\else\currentSETUPargument
+ \fi}%
+ \hss}%
+ \setbox4=\hbox to \wd0
+ {\hss
+ \lower2ex\hbox
+ \bgroup
+ \txx\doifXMLop{optional}{yes}{\c!setup!internal!{optional}}%
+ \egroup
+ \hss}%
+ \ht2\ht\strutbox
+ \dp4\dp\strutbox
+ \hskip.5em\hsmash{\box0}\hsmash{\box4}\box2%
+ \egroup}
+
+\def\showSETUPnumber
+ {\doglobal\increment\currentSETUPargument
+ \hbox to 2em
+ {\ifcase\maximumSETUPargument\relax
+ \or*\else\currentSETUPargument
+ \fi
+ \hss}}
+
+\def\showSETUPassignment {\showSETUP
+ {[.\lower.5ex\hbox{=}.]}
+ {[..,.\lower.5ex\hbox{=}.,..]}}
+
+\def\showSETUPkeyword {\showSETUP
+ {[...]}
+ {[...,...]}}
+
+\def\showSETUPargument {\showSETUP
+ {\leftargument..\rightargument}
+ {\leftargument..,...,..\rightargument}}
+
+\def\showSETUPdisplaymath {\showSETUP
+ {\$\$...\$\$}
+ {\$\$...\$\$}}
+
+\def\showSETUPindex {\showSETUP
+ {\leftargument...\rightargument}
+ {\leftargument..+...+..\rightargument}}
+
+\def\showSETUPmath {\showSETUP
+ {\$...\$}
+ {\$...\$}}
+
+\def\showSETUPnothing {\showSETUP
+ {...}
+ {}}
+
+\def\showSETUPfile {\showSETUP
+ {~...~}
+ {}}
+
+\def\showSETUPposition {\showSETUP
+ {(...)}
+ {(...,...)}}
+
+\def\showSETUPreference {\showSETUP
+ {[...]}
+ {[...,...]}}
+
+\def\showSETUPcsname {\showSETUP
+ {{\c!setup!command!{}}}
+ {}}
+
+\def\showSETUPdestination {\showSETUP
+ {[\leftargument..[ref]\rightargument]}
+ {[..,\leftargument..[ref,..]\rightargument,..]}}
+
+\def\showSETUPtriplet {\showSETUP
+ {[x:y:z=]}
+ {[x:y:z=,..]}}
+
+\def\showSETUPword {\showSETUP
+ {\leftargument...\rightargument}
+ {\leftargument.. ... ..\rightargument}}
+
+\def\showSETUPcontent {\showSETUP
+ {\leftargument...\rightargument}
+ {\leftargument.. ... ..\rightargument}}
+
+%\def\c!par!{\c!setup!internal!{endofpar}}
+%\def\c!repeat!{\c!opt!{{\setupvarfont n}*}}
+%\showSETUP\def\c!par!{\texescape par}
+%\showSETUP\def\c!sep!{\texescape\texescape}
+%\def\c!par!{\addtypespec{delimiter}{par}} % \par
+%\def\c!sep!{\addtypespec{separator}{backslash}} % \\
+%\def\c!repeat!{}
+%\def\c!tex!#1{\addtypespec{command}{#1}\doanother{tex}}
+
+\startXMLmapping[zero]
+
+\defineXMLenvironmentsave [cd:command] [name=,type=,generated=,interactive=]
+ {}
+ {\doifelseXMLop{type}{environment}
+ {\edef\currentSETUPname{start\getinterfacecomponent{string}{\XMLop{name}}}}
+ {\edef\currentSETUPname{\getinterfacecomponent{string}{\XMLop{name}}}}%
+ \doifXMLop{generated}{yes}
+ {\edef\currentSETUPname{\currentSETUPname*}}%
+ \doglobal\saveXMLdatainelement{stp:\currentSETUPname}{cd:command}{cd:command}%
+ \expanded{\eachtexcommand[stp:x:\currentSETUPname]{\currentSETUPname}}%
+ \expanded{\texcommand [stp:y:\currentSETUPname]{\currentSETUPname}}}
+
+\stopXMLmapping
+
+\def\loadsetups
+ {\startXMLmapping[zero]
+ \processXMLfilegrouped{cont-en.xml}
+ \stopXMLmapping}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/x-set-12.tex b/Master/texmf-dist/tex/context/base/x-set-12.tex
new file mode 100644
index 00000000000..f98761513b6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-set-12.tex
@@ -0,0 +1,211 @@
+%D \module
+%D [ file=x-set-12,
+%D version=2004.10.31,
+%D remark=setupx.tex: 1998.07.20 and later,
+%D title=\CONTEXT\ Setup Definitions,
+%D subtitle=Macro Definitions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\usemodule[set-11]
+
+\unprotect
+
+\loadsetups
+
+\startinterface dutch \definecolor[LocalColor][green] \stopinterface
+\startinterface english \definecolor[LocalColor][red] \stopinterface
+\startinterface german \definecolor[LocalColor][blue] \stopinterface
+\startinterface czech \definecolor[LocalColor][magenta] \stopinterface
+\startinterface italian \definecolor[LocalColor][cyan] \stopinterface
+\startinterface romanian \definecolor[LocalColor][yellow] \stopinterface
+
+\startinterface english \definecolor[TitleColor][g=.5,b=.5] \stopinterface
+\startinterface dutch \definecolor[TitleColor][r=.5,b=.5] \stopinterface
+\startinterface german \definecolor[TitleColor][r=.5,g=.5] \stopinterface
+\startinterface italian \definecolor[TitleColor][r=.5] \stopinterface
+\startinterface czech \definecolor[TitleColor][g=.5] \stopinterface
+\startinterface romanian \definecolor[TitleColor][b=.5] \stopinterface
+
+\definecolor [lightgray] [s=.9]
+\definecolor [darkgray] [s=.1]
+
+\usetypescript[palatino][\defaultencoding]
+\setupbodyfont[palatino,9pt]
+
+\setupcolors
+ [\c!state=\v!start]
+
+\defineoverlay
+ [cover]
+ [\hbox to \paperwidth{\hss\reuseMPgraphic{cover+back}}]
+
+\defineoverlay
+ [back]
+ [\hbox to \paperwidth{\reuseMPgraphic{cover+back}\hss}]
+
+\startreusableMPgraphic{cover+back}
+ numeric h, w ; path p, q, r ; color f, d ; pair s ;
+ h := OverlayHeight ; w := 2*OverlayWidth ;
+ r := unitsquare xyscaled (w,h) ;
+ fill r withcolor \MPcolor{lightgray} ;
+ set_grid(w,h,w/8,w/16) ;
+ forever :
+ s := center r randomized (w,h) ;
+ if new_on_grid(xpart s, ypart s) :
+ s := (dx,dy) ;
+ p := fullsquare xyscaled(w/4,w/8) ;
+ q := (-4w,ypart ulcorner p) --
+ .5[ulcorner p, urcorner p] --
+ (4w,ypart urcorner p) ;
+ q := q shifted (0,-w/24) ;
+ p := p randomized (w/40,w/40) ;
+ q := q randomized (0,w/100) ;
+ q := q cutafter (p cutafter point 3 of p) ;
+ q := q cutbefore (p cutbefore point 3 of p) ;
+ d := .5[\MPcolor{LocalColor},\MPcolor{lightgray}] randomized (.5,.9) ;
+ f := \MPcolor{lightgray} randomized (.5,.9) ;
+ pickup pencircle scaled (w/100) ;
+ fill p shifted s withcolor f ;
+ draw p shifted s withcolor d ;
+ draw q shifted s withcolor d ;
+ fi ;
+ exitif grid_full ;
+ endfor ;
+ setbounds currentpicture to r ;
+\stopreusableMPgraphic
+
+\definelayout
+ [titlepage]
+ [\c!backspace=1cm,
+ \c!topspace=1cm,
+ \c!width=\v!middle,
+ \c!height=\v!middle,
+ \c!header=0pt,
+ \c!footer=0pt]
+
+\setuplayout
+ [\c!backspace=2cm,
+ \c!topspace=1.5cm,
+ \c!header=0cm,
+ \c!footer=0cm,
+ \c!width=\v!middle,
+ \c!height=\v!middle]
+
+\setuppagenumbering
+ [\c!alternative=\v!doublesided]
+
+\setupsetup
+ [\c!criterium=\v!all,
+ \c!reference=0]
+
+\setupframedtexts
+ [setuptext]
+ [\c!frame=\v!on,
+ \c!rulethickness=1pt,
+ \c!framecolor=TitleColor]
+
+\setupunderbar
+ [\c!rulethickness=1pt,
+ \c!rulecolor=TitleColor]
+
+\starttext
+
+\setupbackgrounds
+ [\v!rightpage]
+ [\c!background=cover]
+
+\setuplayout
+ [titlepage]
+
+\startmakeup[\v!standard]
+ \dontcomplain
+ \startcolor[TitleColor]
+ \definedfont[RegularBold at 100pt]\setstrut
+ \setupalign[\v!left]
+ \strut Con\TeX t \par
+ \definedfont[RegularBold at 50pt]\setstrut
+ \startinterface dutch \strut commando's \par \stopinterface
+ \startinterface english \strut commands \par \stopinterface
+ \startinterface german \strut befehle \par \stopinterface
+ \startinterface czech \strut prikaz\'y \par \stopinterface
+ \startinterface italian \strut comandi \par \stopinterface
+ \startinterface romanian \strut comenzile \par \stopinterface
+ \vfill
+ \definedfont[RegularBold at 150pt]\setstrut
+ \startinterface dutch NL\stopinterface
+ \startinterface english EN\stopinterface
+ \startinterface german DE\stopinterface
+ \startinterface czech CZ\stopinterface
+ \startinterface italian IT\stopinterface
+ \startinterface romanian RO\stopinterface
+ \stopcolor
+\stopmakeup
+
+\setuplayout % needed ?
+
+\setupbackgrounds
+ [\v!rightpage]
+ [\c!background=]
+
+\startmakeup[\v!standard]
+ \dontcomplain
+ \startcolor[TitleColor]
+ \definedfont[RegularBold at 100pt]\setstrut
+ \setupalign[\v!left]
+ \strut Con\TeX t \par
+ \definedfont[RegularBold at 50pt]\setstrut
+ \startinterface dutch \strut commando's \par \stopinterface
+ \startinterface english \strut commands \par \stopinterface
+ \startinterface german \strut befehle \par \stopinterface
+ \startinterface czech \strut prikaz\'y \par \stopinterface
+ \startinterface italian \strut comandi \par \stopinterface
+ \startinterface romanian \strut comenzile \par \stopinterface
+ \vfill
+ \definedfont[RegularBold at 24pt]\setupinterlinespace
+ \startinterface dutch \strut nl / nederlands \par \stopinterface
+ \startinterface english \strut en / english \par \stopinterface
+ \startinterface german \strut de / deutsch \par \stopinterface
+ \startinterface czech \strut cz / \^cesk\'y \par \stopinterface
+ \startinterface italian \strut it / italiano \par \stopinterface
+ \startinterface romanian \strut ro / rom\^{a}n\u{a} \par \stopinterface
+ \par \strut \currentdate \par
+ \stopcolor
+\stopmakeup
+
+\protect
+
+\placeeverysetup
+
+\unprotect
+
+\page[\v!yes,\v!blank,\v!right,\v!left]
+
+\setuplayout
+ [titlepage]
+
+\setupbackgrounds
+ [\v!leftpage]
+ [\c!background=back]
+
+\startmakeup[\v!standard][\c!page=]
+ \dontcomplain
+ \startcolor[TitleColor]
+ \definedfont[RegularBold at 24pt]\setupinterlinespace
+ \setupalign[\v!left]
+ \vfill
+ PRAGMA ADE \par
+ Ridderstraat 27 \par
+ 8061GH Hasselt NL \par
+ www.pragma-ade.com \par
+ \stopcolor
+\stopmakeup
+
+\protect
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-xml-01.tex b/Master/texmf-dist/tex/context/base/x-xml-01.tex
new file mode 100644
index 00000000000..9502ab71a3e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-xml-01.tex
@@ -0,0 +1,91 @@
+%D \module
+%D [ file=x-xml-01,
+%D version=2001.10.10,
+%D title=\CONTEXT\ XML Style File,
+%D subtitle=Formatting X?? files,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% texexec --use=xml-format yourfile.x** [--mode=packed,wide]
+%
+% pdftotext yourfile.pdf yournewfile.x**
+
+\doifnothing {\inputfilename} {\end}
+\doiffileelse {\inputfilename} {} {\end}
+
+% The following makes pdftotext too slow:
+%
+% \definepapersize
+% [mine]
+% [height=.99\maxdimen,
+% width=200cm]
+%
+% \setuppapersize
+% [mine]
+% [mine]
+%
+% \setupbodyfont
+% [0.4pt,tt]
+%
+% this is faster
+%
+% \setuppapersize
+% [A0][A0]
+%
+% but normal A4 combined with 1 pt font size is the best
+%
+% An alternative is to use a small size, but this leads to
+% too many messages
+%
+% \setupbodyfont
+% [1pt,tt]
+%
+% so we stick to a more normal alternive.
+
+\unprotect
+
+\setuplayout
+ [\c!backspace=0cm,
+ \c!topspace=0cm,
+ %\c!width=40em,
+ \c!width=\v!middle,
+ \c!height=\v!middle,
+ \c!header=0cm,
+ \c!footer=0cm]
+
+\setupbodyfont [tt,10pt]
+\setuptolerance [\v!verytolerant]
+\setupalign [\v!broad,\v!right]
+\setupXMLfile [\c!level=2]
+
+\startmode[wide]
+
+ \setuplayout [\c!width=250cm]
+
+\stopmode
+
+\startmode[packed]
+
+% \setupXMLfile [inbetween=]
+ \setupXMLfile [\c!tussen=]
+
+\stopmode
+
+\protect
+
+% The main text:
+
+\def\XMLbannerprocessor#1{\string<\string ?xml #1\string ?\string>\endgraf}
+
+\defineXMLprocessor [xml] {\XMLbannerprocessor}
+
+\starttext
+
+ \dontcomplain \showXMLfile{\inputfilename}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-xml-02.tex b/Master/texmf-dist/tex/context/base/x-xml-02.tex
new file mode 100644
index 00000000000..8c10637808d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-xml-02.tex
@@ -0,0 +1,91 @@
+%D \module
+%D [ file=x-xml-02,
+%D version=2001.10.10,
+%D title=\CONTEXT\ XML Style File,
+%D subtitle=Pretty Printing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% texexec --use=xml-pretty yourfile.x** [--mode=letter]
+
+\doifnothing {\inputfilename} {\end}
+\doiffileelse {\inputfilename} {} {\end}
+
+\startmode[letter]
+ \setuppapersize[letter][letter]
+\stopmode
+
+\setuplayout
+ [backspace=1.5cm,
+ topspace=1.5cm,
+ bottomspace=1cm,
+ width=middle,
+ height=middle,
+ header=1.5cm,
+ footer=1.5cm]
+
+\setupcolors
+ [state=local]
+
+\setuppagenumbering
+ [location=]
+
+\setuplayout
+ [style=type]
+
+\setupbodyfont
+ [10pt,tt]
+
+\setuptolerance
+ [verytolerant]
+
+\setupalign
+ [broad,right]
+
+\lowercasestring \inputfilename \to \lcinputfilename
+\convertcommand \lcinputfilename \to \lcinputfilename % make _ safe
+
+\setupheadertexts
+ [\lcinputfilename]
+
+\setupfootertexts
+ [\currentdate\space\string| \currenttime\space \string| \pagenumber]
+
+% let's have a look at the type of content:
+
+\setupXMLfile
+ [level=2]
+
+\startmode[*suffix-xml]
+ % ok
+\stopmode
+
+\startmode[*suffix-rng]
+ \showXMLlin[value]
+\stopmode
+
+\startmode[*suffix-rlg]
+ \showXMLlin
+ [rl:type,rl:state,rl:name,rl:suffix,rl:label,rl:file,rl:original,
+ rl:width,rl:height,rl:base,rl:page]
+\stopmode
+
+\startmode[*suffix-exa]
+ \showXMLlin
+ [exa:resolve,exa:include]
+\stopmode
+
+\def\XMLbannerprocessor#1{\string<\string ?xml #1\string ?\string>\endgraf}
+
+\defineXMLprocessor [xml] {\XMLbannerprocessor}
+
+\starttext
+
+\showXMLfile{\inputfilename}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/x-xml-11.tex b/Master/texmf-dist/tex/context/base/x-xml-11.tex
new file mode 100644
index 00000000000..bdacd97c232
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/x-xml-11.tex
@@ -0,0 +1,103 @@
+%D \module
+%D [ file=x-xml-11,
+%D version=2004.09.16,
+%D title=\CONTEXT\ XML Style File,
+%D subtitle=Formatting X?? files,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% xmltools --analyze yourfile.xml
+% texexec --use=xml-analyze yourfile.*
+
+\doifnothing {\inputfilename} {\end}
+\doiffileelse {\inputfilename} {} {\end}
+
+\useXMLfilter[ent]
+\useXMLfilter[utf]
+
+\chardef\XMLtokensreduction\plustwo
+
+\definehead
+ [SomeElement]
+ [subsection]
+
+\setuphead
+ [SomeElement]
+ [ownnumber=yes,
+ style=\tfb,
+ alternative=margin]
+
+\setuplayout
+ [width=middle,
+ height=middle,
+ backspace=2cm,
+ cutspace=1cm,
+ topspace=1cm,
+ header=0pt]
+
+\setupfootertexts
+ [\inputfilename]
+
+\usetypescript[modern][texnansi] \setupbodyfont[modern,tt,10pt]
+
+\defineXMLenvironment
+ [document]
+ {}
+ {}
+
+\defineXMLpickup
+ [entities]
+ {\page
+ \starttabulate[|l|p|]}
+ {\stoptabulate}
+
+\defineXMLcommand
+ [entity][name=,n=0]
+ {\startexpanded
+ \noexpand \NC \XMLop{name}
+ \noexpand \NC \XMLop{n}
+ \noexpand \NC
+ \noexpand \NR
+ \stopexpanded}
+
+\defineXMLenvironment
+ [elements]
+ {\page}
+ {}
+
+\newtoks \TabulateToks
+
+\defineXMLpickup
+ [element][name=,n=0]
+ {\expanded{\SomeElement{\XMLop{n}}{\XMLop{name}}}
+ \TabulateToks\emptytoks}
+ {\starttabulate[|l|r|p|]
+ \the\TabulateToks
+ \stoptabulate}
+
+\defineXMLenvironment
+ [attribute][name=]
+ {\xdef\AttributeName{\XMLop{name}}}
+ {}
+
+\defineXMLenvironment
+ [instance][value=,n=0]
+ {\appendetoks
+ \noexpand \NC \AttributeName
+ \noexpand \NC \XMLop{n}
+ \noexpand \NC \XMLop{value}
+ \noexpand \NC
+ \noexpand \NR
+ \to \TabulateToks}
+ {\xdef\AttributeName{}}
+
+\starttext
+
+\processXMLfilegrouped{\inputfilename}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/xtag-cml.tex b/Master/texmf-dist/tex/context/base/xtag-cml.tex
new file mode 100644
index 00000000000..1c80ac1a7b6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-cml.tex
@@ -0,0 +1,222 @@
+% see mathml, == \defineXMLdirective [mathml] \setupMMLappearance
+
+\unprotect
+
+\def\setupCMLappearance[#1]{\dodoubleargument\getparameters[@@CML#1]}
+
+\defineXMLdirective [chemml] \setupCMLappearance
+
+\defineXMLargument [chem] \doXMLchem
+\defineXMLargument [ichem] \doXMLichem
+\defineXMLargument [dchem] \doXMLdchem
+
+\unexpanded\def\doXMLchem {\ifhmode\@EA\doXMLichem\else\@EA\doXMLdchem\fi}
+\unexpanded\def\doXMLichem{\XMLremapdata[cml]{$\rm}{$}}
+\unexpanded\def\doXMLdchem{\XMLremapdata[cml]{\dostartformula{}\rm}{\dostopformula}}
+
+\startXMLmapping [cml]
+
+\remapXMLsequence [molecule] [CPA] \doCMLmolecule
+\remapXMLsequence [ion] [CPA] \doCMLion
+\remapXMLsequence [atom] [CPA] \doCMLatom
+
+\setupCMLappearance [ion] [\c!variant=\v!a]
+
+\let\CMLtopcaption\empty
+\let\CMLbotcaption\empty
+
+\def\someCMLtext#1%
+ {\ifx\CMLtopcaption\empty
+ \setbox0\null
+ \else
+ \setbox0\hbox{\txx\setstrut\strut\ignorespaces\CMLtopcaption\unskip}%
+ \fi
+ \setbox2\hbox{\ignorespaces\strut#1\unskip}%
+ \ifx\CMLbotcaption\empty
+ \setbox4\null
+ \else
+ \setbox4\hbox{\txx\setstrut\strut\ignorespaces\CMLbotcaption\unskip}%
+ \fi
+ \scratchdimen=\wd2\advance\scratchdimen-.5em
+ \ifdim\wd0>\scratchdimen
+ \setbox0\hbox spread .5em{\hss\box0\hss}%
+ \fi
+ \ifdim\wd4>\scratchdimen
+ \setbox4\hbox spread .5em{\hss\box4\hss}%
+ \fi
+ \setbox6=\vbox
+ {\offinterlineskip\halign{\hss##\hss\cr\copy0\cr\copy2\cr\copy4\cr}}%
+ \hbox{\lower\ht4\hbox{\lower\dp2\box6}}}
+
+\def\CMLscript#1%
+ {$\scriptscriptstyle\ignorespaces#1\unskip$}
+
+\def\doifnotXMLzero#1#2#3%
+ {\ifcase\XMLpar{#1}{#2}{0}\else#3{\XMLpar{#1}{#2}{0}}\fi}
+
+\newcounter\currentCMLatom
+\newcounter\nofCMLatoms
+
+\def\doCMLmolecule#1#2%
+ {\resetCMLcaption
+ \processXMLRchild{caption}{#2}%
+ \someCMLtext
+ {\bgroup
+ \newcounter\currentCMLatom
+ \newcounter\nofCMLatoms
+ \getXMLarguments{cml-m}{n="0" #1}%
+ \doifnotXMLzero{cml-m}{n}\firstofoneargument
+ \ignorespaces\processXMLRchild{atom,ion,bond/,%
+ singlebond/,doublebond/,triplebond/}{#2}\unskip
+ \egroup}%
+ \ignorespaces}
+
+\def\doCMLion#1#2%
+ {\resetCMLcaption
+ \processXMLRchild{caption}{#2}%
+ \someCMLtext
+ {\bgroup
+ \newcounter\currentCMLatom
+ \newcounter\nofCMLatoms
+ \getXMLarguments{cml-i}{n="0" charge="0" #1}%
+ \doifnotXMLzero{cml-i}{n}\firstofoneargument
+ \doifelse\@@CMLionvariant\v!b
+ {[\ignorespaces\processXMLRchild{atom,bond/,%
+ singlebond/,doublebond/,triplebond/}{#2}\unskip]%
+ \high{\doifnotXMLzero{cml-i}{charge}\CMLscript}}
+ {\countXMLRchild{atom}{\ignorespaces#2\unskip}%
+ \let\nofCMLatoms\nofXMLRchildren
+ \ignorespaces\processXMLRchild{atom,bond/,%
+ singlebond/,doublebond/,triplebond/}{#2}\unskip}%
+ \egroup}%
+ \ignorespaces}
+
+\def\doCMLatom#1#2%
+ {\getXMLarguments{cml-a}{n="0" weight="0" protons="0" charge="0" #1}%
+ \increment\currentCMLatom
+ \resetCMLcaption
+ %\processXMLRchild{caption}{#2}% not here
+ \someCMLtext
+ {\bgroup
+ \lohi
+ {\doifnotXMLzero{cml-a}{protons}\CMLscript}
+ {\doifnotXMLzero{cml-a}{weight}\CMLscript}%
+ \ignorespaces#2\unskip
+ \lohi
+ {\doifnotXMLzero{cml-a}{n}\CMLscript}
+ {\ifnum\nofCMLatoms=\currentCMLatom\relax
+ \doifnotXMLzero{cml-i}{charge}\CMLscript
+ \else
+ \doifnotXMLzero{cml-a}{charge}\CMLscript
+ \fi}%
+ \egroup}%
+ \ignorespaces}
+
+\remapXMLsequence [reaction] [CPA] \doCMLreaction
+
+\let\someCMLsymbol\gobbleoneargument
+\let\someCMLarrow \gobblethreearguments
+
+\def\doCMLreaction#1#2%
+ {\begingroup
+ \let\someCMLsymbol\dosomeCMLsymbol
+ \let\someCMLarrow \dosomeCMLarrow
+ #2%
+ \endgroup}
+
+\remapXMLsequence [plus] [CPA] \doCMLplus
+\remapXMLsingular [plus] [CPA] \doCMLplus
+\remapXMLsequence [minus] [CPA] \doCMLminus
+\remapXMLsingular [minus] [CPA] \doCMLminus
+\remapXMLsequence [equal] [CPA] \doCMLequal
+\remapXMLsingular [equal] [CPA] \doCMLequal
+
+\def\doCMLplus #1#2{\someCMLsymbol{+}}
+\def\doCMLminus#1#2{\someCMLsymbol{-}}
+\def\doCMLequal#1#2{\someCMLsymbol{=}}
+
+\def\dosomeCMLsymbol#1%
+ {\quad\mathop{#1}\quad}
+
+\remapXMLsequence [gives] [CPA] \doCMLgives
+\remapXMLsingular [gives] [CPA] \doCMLgives
+\remapXMLsequence [equilibrium] [CPA] \doCMLequilibrium
+\remapXMLsingular [equilibrium] [CPA] \doCMLequilibrium
+\remapXMLsequence [mesomeric] [CPA] \doCMLmesomeric
+\remapXMLsingular [mesomeric] [CPA] \doCMLmesomeric
+
+\def\doCMLgives #1#2{\resetCMLcaption#2\someCMLgives }
+\def\doCMLequilibrium#1#2{\resetCMLcaption#2\someCMLequilibrium}
+\def\doCMLmesomeric #1#2{\resetCMLcaption#2\someCMLmesomeric }
+
+\def\dosomeCMLarrow#1%
+ {\quad
+ \someCMLtext
+ {$\vcenter{\offinterlineskip\halign{##\cr\hskip3em\cr#1\cr}}$}%
+ \quad}
+
+\def\someCMLgives
+ {\someCMLarrow{\rightarrowfill}}
+
+\def\someCMLequilibrium
+ {\someCMLarrow{\rightarrowfill\cr\noalign{\nointerlineskip}\leftarrowfill}}
+
+\def\someCMLmesomeric
+ {\someCMLarrow{$\leftarrow\hskip-1em$\rightarrowfill}}
+
+\remapXMLsequence [cml] [caption] [CPA] \doCMLcaption
+
+\let\CMLtopcaption\empty
+\let\CMLbotcaption\empty
+
+\def\dodoCMLcaption#1#2%
+ {\def\CMLbotcaption{#2}%
+ \def\doCMLcaption##1##2%
+ {\def\CMLtopcaption{##2}%
+ \let\doCMLcaption\gobbletwoarguments}}
+
+\def\resetCMLcaption%
+ {\let\CMLtopcaption\empty
+ \let\CMLbotcaption\empty
+ \let\doCMLcaption\dodoCMLcaption}
+
+\resetCMLcaption
+
+\remapXMLsingular [bond] [CPA] \doCMLbond
+\remapXMLsingular [singlebond] [CPA] \doCMLsinglebond
+\remapXMLsingular [doublebond] [CPA] \doCMLdoublebond
+\remapXMLsingular [triplebond] [CPA] \doCMLtriplebond
+
+\def\doCMLbond#1#2%
+ {\getXMLarguments{cml-b}{n="0" #1}%
+ \ifcase\XMLpar{cml-b}{n}{0}\relax
+ \doCMLsinglebond
+ \or
+ \doCMLdoublebond
+ \or
+ \doCMLtriplebond
+ \fi}
+
+\def\someCMLbond%
+ {\hrule \!!width \hsize \!!height .1ex} % .4pt
+
+\def\dosomeCMLbond#1#2#3%
+ {{\setbox\scratchbox=\hbox{$M$}%
+ \vbox to \ht\scratchbox
+ {\hsize\wd\scratchbox
+ \vskip.1\wd\scratchbox
+ #1\vfill#2\vfill#3%
+ \vskip.1\wd\scratchbox}}}
+
+\def\doCMLsinglebond%
+ {\dosomeCMLbond\relax\someCMLbond\relax}
+
+\def\doCMLdoublebond%
+ {\dosomeCMLbond\someCMLbond\relax\someCMLbond}
+
+\def\doCMLtriplebond%
+ {\dosomeCMLbond\someCMLbond\someCMLbond\someCMLbond}
+
+\stopXMLmapping
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-ent.tex b/Master/texmf-dist/tex/context/base/xtag-ent.tex
new file mode 100644
index 00000000000..edb437ea5b6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-ent.tex
@@ -0,0 +1,125 @@
+%D \module
+%D [ file=xtag-ent,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=A bunch of Entities,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% Here we also define fallbacks
+
+\defineXMLentities [tex] {tex} {\TeX}
+\defineXMLentities [latex] {latex} {\LaTeX}
+\defineXMLentities [context] {context} {\ConTeXt}
+\defineXMLentities [omega] {omega} {\Omega}
+
+\defineXMLentities [Omega] {Omega} {\Omega}
+
+% We need this for French and Hungarian.
+
+\defineXMLentity [colon] {\directdiscretionary{:}}
+\defineXMLentity [semicolon] {\directdiscretionary{;}}
+\defineXMLentity [questionmark] {\directdiscretionary{?}}
+\defineXMLentity [exclamationmark] {\directdiscretionary{!}}
+
+% These will fall back to the raw encoding vector
+
+\defineXMLentity [Aacute] {\Aacute}
+\defineXMLentity [aacute] {\aacute}
+\defineXMLentity [Cacute] {\Cacute} % unofficial
+\defineXMLentity [cacute] {\cacute} % unofficial
+\defineXMLentity [Eacute] {\Eacute}
+\defineXMLentity [eacute] {\eacute}
+\defineXMLentity [Iacute] {\Iacute}
+\defineXMLentity [iacute] {\iacute}
+\defineXMLentity [Oacute] {\Oacute}
+\defineXMLentity [oacute] {\oacute}
+\defineXMLentity [Uacute] {\Uacute}
+\defineXMLentity [uacute] {\uacute}
+\defineXMLentity [Yacute] {\Yacute}
+\defineXMLentity [yacute] {\yacute}
+\defineXMLentity [Nacute] {\Nacute}
+\defineXMLentity [nacute] {\nacute}
+
+\defineXMLentity [Ccedil] {\Ccedilla}
+\defineXMLentity [ccedil] {\ccedilla}
+
+\defineXMLentity [AElig] {\AEligature}
+\defineXMLentity [aelig] {\aeligature}
+
+\defineXMLentity [Agrave] {\Agrave}
+\defineXMLentity [agrave] {\agrave}
+\defineXMLentity [Egrave] {\Egrave}
+\defineXMLentity [egrave] {\egrave}
+\defineXMLentity [Igrave] {\Igrave}
+\defineXMLentity [igrave] {\igrave}
+\defineXMLentity [Ograve] {\Ograve}
+\defineXMLentity [ograve] {\ograve}
+\defineXMLentity [Ugrave] {\Ugrave}
+\defineXMLentity [ugrave] {\ugrave}
+
+\defineXMLentity [THORN] {\Thorn}
+\defineXMLentity [thorn] {\thorn}
+
+\defineXMLentity [Aring] {\Aring}
+\defineXMLentity [aring] {\aring}
+
+\defineXMLentity [Oslash] {\Oslash} % stroke
+\defineXMLentity [oslash] {\oslash}
+\defineXMLentity [Lslash] {\Lslash} % unofficial
+\defineXMLentity [lslash] {\lslash} % unofficial
+
+\defineXMLentity [eth] {\eth} % ?
+\defineXMLentity [ETH] {\Eth} % ?
+
+\defineXMLentity [Atilde] {\Atilde}
+\defineXMLentity [atilde] {\atilde}
+\defineXMLentity [Etilde] {\Etilde}
+\defineXMLentity [etilde] {\etilde}
+\defineXMLentity [Itilde] {\Itilde}
+\defineXMLentity [itilde] {\itilde}
+\defineXMLentity [Ntilde] {\Ntilde}
+\defineXMLentity [ntilde] {\ntilde}
+\defineXMLentity [Otilde] {\Otilde}
+\defineXMLentity [otilde] {\otilde}
+\defineXMLentity [Utilde] {\Utilde}
+\defineXMLentity [utilde] {\utilde}
+
+\defineXMLentity [Auml] {\Adiaeresis}
+\defineXMLentity [auml] {\adiaeresis}
+\defineXMLentity [Euml] {\Ediaeresis}
+\defineXMLentity [euml] {\ediaeresis}
+\defineXMLentity [Iuml] {\Idiaeresis}
+\defineXMLentity [iuml] {\idiaeresis}
+\defineXMLentity [Ouml] {\Odiaeresis}
+\defineXMLentity [ouml] {\odiaeresis}
+\defineXMLentity [Uuml] {\Udiaeresis}
+\defineXMLentity [uuml] {\udiaeresis}
+\defineXMLentity [Yuml] {\Ydiaeresis}
+\defineXMLentity [yuml] {\ydiaeresis}
+
+\defineXMLentity [szlig] {\Ssharp}
+
+\defineXMLentity [Acirc] {\Acircumflex}
+\defineXMLentity [acirc] {\acircumflex}
+\defineXMLentity [Ecirc] {\Ecircumflex}
+\defineXMLentity [ecirc] {\ecircumflex}
+\defineXMLentity [Icirc] {\Icircumflex}
+\defineXMLentity [icirc] {\icircumflex}
+\defineXMLentity [Ocirc] {\Ocircumflex}
+\defineXMLentity [ocirc] {\ocircumflex}
+\defineXMLentity [Ucirc] {\Ucircumflex}
+\defineXMLentity [ucirc] {\ucircumflex}
+
+\defineXMLentity [ccaron] {\ccaron} % unofficial
+\defineXMLentity [rcaron] {\rcaron} % unofficial
+\defineXMLentity [scaron] {\scaron} % unofficial
+\defineXMLentity [zcaron] {\zcaron} % unofficial
+
+\defineXMLentity [dots] {\unknown}
+\defineXMLentity [amp] {\&}
diff --git a/Master/texmf-dist/tex/context/base/xtag-exp.tex b/Master/texmf-dist/tex/context/base/xtag-exp.tex
new file mode 100644
index 00000000000..7f289dbf530
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-exp.tex
@@ -0,0 +1,85 @@
+%D \module
+%D [ file=xtag-exp,
+%D version=2001.08.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Expansion Related Things,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\beginTEX
+ \writestatus{XML}{sorry, XML is only supported in (pdf)etex}
+ \def\startXMLdefinitions{\gobbleuntil\stopXMLdefinitions}
+ \endinput
+\endTEX
+
+\writestatus{loading}{Context XML Macros (expansion)}
+
+\unprotect
+
+%D Files
+
+\newcounter\XMLfilenesting \let\restoreXMLelements\relax
+
+\def\startXMLreading
+ {\increment \XMLfilenesting \relax
+ \ifnum\XMLfilenesting=1
+%\ifcase\XMLfilenesting\or
+ \ifprocessingXML
+ \let\restoreXMLelements\relax
+ \else
+ \let\restoreXMLelements\disableXMLelements
+ \enableXMLelements
+ \fi
+ \fi}
+
+\def\stopXMLreading
+ {\ifnum\XMLfilenesting=1
+%\ifcase\XMLfilenesting\or
+ \restoreXMLelements
+ \let\restoreXMLelements\relax
+ \fi
+ \decrement \XMLfilenesting \relax}
+
+\def\enableXMLfiledata
+ {\prependtoks \enableXMLelements \to \mainoutput % brrr, will change
+ \appendtoks \startXMLreading \to \everybeforeutilityread
+ \appendtoks \stopXMLreading \to \everyafterutilityread
+ \appendtoks \forcefileexpansiontrue \to \everyenableXML
+ \let\enableXMLfiledata\relax}
+
+\setupXMLprocessing[\c!state=\v!start]
+
+\appendtoks
+ \ifproductionrun \enableXMLfiledata \fi
+\to \aftersetupXMLprocessing
+
+%D Here we overload the mark handler.
+
+\def\XMLexpanded#1%
+ {\bgroup
+ \honorunexpanded
+ \dontexpandencoding
+ \xdef\@@globalexpanded{\noexpand#1}% why \noexpand?
+ \egroup
+ \@@globalexpanded}
+
+\let\normalsetnormalmark\setnormalmark
+
+\long\def\setnormalmark#1% overloaded
+ {\ifprocessingXML
+ \expandafter\setXMLexpandedmark
+ \else
+ \expandafter\normalsetnormalmark
+ \fi#1}
+
+\def\setXMLexpandedmark#1#2% using a tok prevents unwanted expansion in mark
+ {\XMLexpanded{\scratchtoks{\enableXMLelements#2}}%
+ \setxvalue{\@@crk\string#1}{\the\scratchtoks}%
+ \normalmarks#1{\the\scratchtoks}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-ext.tex b/Master/texmf-dist/tex/context/base/xtag-ext.tex
new file mode 100644
index 00000000000..aa522cc8c9b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-ext.tex
@@ -0,0 +1,331 @@
+%D \module
+%D [ file=xtag-ext,
+%D version=2001.03.21,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Extra Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\beginTEX
+ \writestatus{xml}{sorry, xml is only supported in (pdf)etex}
+ \expandafter \endinput
+\endTEX
+
+\writestatus{loading}{Context XML Macros (extras)}
+
+\unprotect
+
+%D \macros
+%D {startXMLmapping}
+%D
+%D You can define macros within a namespace, so that they
+%D will not conflict (don't confuse this with \XML\
+%D namespaces.)
+%D
+%D \starttyping
+%D \startXMLmapping [tag] | [-] [tag] | [+] [tag]
+%D definitions
+%D \stopXMLmapping
+%D \stoptyping
+%D
+%D When a \type {[+]} is specified, the mappings will
+%D nest.
+
+\let\normal@@XMLelement\@@XMLelement
+
+\def\resetXMLmapping
+ {\let\@@XMLelement\normal@@XMLelement
+ \let\@@XMLmapping\empty}
+
+\resetXMLmapping
+
+\def\startXMLmapping
+ {\dodoubleempty\dostartXMLmapping}
+
+% \def\dostartXMLmapping[#1][#2]% sneller maken
+% {\pushmacro\@@XMLelement
+% \pushmacro\@@XMLmapping
+% \ifsecondargument
+% \doifelse{#1}{-}
+% {\donostartXMLmapping{#2}}
+% {\doifelse{#1}{+}
+% {\dodostartXMLmapping{#2}}
+% {\donostartXMLmapping{#2}}}%
+% \else
+% \donostartXMLmapping{#1}%
+% \fi
+% \unprotect}
+
+\def\dostartXMLmapping[#1#2][#3]%
+ {\pushmacro\@@XMLelement
+ \pushmacro\@@XMLmapping
+ \ifsecondargument
+ \if\noexpand#1-%
+ \@EA\donostartXMLmapping
+ \else\if\noexpand#1+%
+ \@EAEAEA\dodostartXMLmapping
+ \else
+ \@EAEAEA\donostartXMLmapping
+ \fi\fi{#3}%
+ \else
+ \donostartXMLmapping{#1#2}%
+ \fi
+ \unprotect}
+
+\def\donostartXMLmapping#1%
+ {\let\@@XMLprevelement\@@XMLelement
+ \edef\@@XMLmapping{#1}%
+ \edef\@@XMLelement{\normal@@XMLelement+#1}}
+
+\def\dodostartXMLmapping#1%
+ {\let\@@XMLprevelement\@@XMLelement
+ \edef\@@XMLmapping{\@@XMLmapping+#1}%
+ \edef\@@XMLelement{\@@XMLelement+#1}}
+
+\def\stopXMLmapping
+ {\protect
+ \popmacro\@@XMLmapping
+ \popmacro\@@XMLelement}
+
+%D \macros
+%D {startXMLmappinggroup}
+%D
+%D Imagine something:
+%D
+%D \starttyping
+%D \defineXMLenvironment [something]
+%D {\startXMLmapping[whatever]}
+%D {\stopXMLmapping}
+%D \stoptyping
+%D
+%D Here the \type {\stopXMLmapping} will never be reached
+%D because we are in a mapping. Therefore we need:
+
+\def\startXMLmappinggroup
+ {\dodoubleempty\dostartXMLmappinggroup}
+
+\def\dostartXMLmappinggroup[#1][#2]%
+ {\bgroup
+ \letcscsname\savedXMLmeaning\csname\@@XMLelement:/\currentXMLelement\endcsname
+ \dostartXMLmapping[#1][#2]% do ! else wrong !
+ \letcsnamecs\csname\@@XMLelement:/\currentXMLelement\endcsname\savedXMLmeaning}
+
+\def\stopXMLmappinggroup
+ {\stopXMLmapping
+ \egroup}
+
+%D Context Directives:
+
+\def\@@CTXML{@@CTXML}
+
+\def\defineXMLdirective
+ {\dodoubleempty\dodefineXMLdirective}
+
+\long\def\dodefineXMLdirective[#1][#2]#3%
+ {\defineXMLprocessor[context-#1-directive]{\dohandleXMLdirective{#1}{#3}}%
+ \ifsecondargument
+ \long\setvalue{\@@CTXML-#1-#2}{#3}%
+ \fi}
+
+\def\dohandleXMLdirective#1#2#3%
+ {\dodohandleXMLdirective#3 @ @ @\end{#1}{#2}}
+
+%\def\dodohandleXMLdirective#1 #2 #3 #4\end#5#6%
+% {\doifdefinedelse{\@@CTXML-#5-#1}
+% {\getvalue{\@@CTXML-#5-#1}[#2=#3]}
+% {#6[#1][#2=#3]}}
+
+\def\dodohandleXMLdirective#1 #2 #3 #4\end#5#6%
+ {\executeifdefined{\@@CTXML-#5-#1}{#6[#1]}[#2=#3]}
+
+% \defineXMLdirective [mathml] \setupMMLappearance % [#1][#2=#3]
+% \defineXMLdirective [flowchart] [shapes] \setupFLOWshapes % [#2=#3]
+% \defineXMLdirective [flowchart] [lines] \setupFLOWlines % [#2=#3]
+
+\defineXMLprocessor [context-begin-group] {\bgroup\gobbleoneargument}
+\defineXMLprocessor [context-end-group] {\egroup\gobbleoneargument}
+
+% \def\XMLnspart#1:#2\empty{#1} % call ...:\empty\empty
+% \def\XMLidpart#1:#2#3\empty{\ifx#2\empty#1\else\XMLidpart#2#3\empty\empty\fi}
+
+% trial macros (used in setupx), to be sped up !
+
+\bgroup \catcode`\<=\active
+
+\gdef\saveXMLasdata#1#2% name raw data
+ {\dodoglobal\setevalue{\@@XMLsave:#1}{#2}} % \edef!
+
+\gdef\saveXMLdata#1#2% name data-name ; definitely no \edef
+ {\dodoglobal\copycsname\@@XMLsave:#1\endcsname\csname\@@XMLdata:#2\endcsname}
+
+\gdef\saveXMLdatainelement#1#2#3% name element data
+ {\dodoglobal\setevalue{\@@XMLsave:#1}% todo: one level expansion
+ {<#2 \currentXMLarguments>\XMLflush{#3}</#2>}}
+
+\gdef\saveXMLdatastructure#1#2#3#4#5#6% name element args before data after
+ {\dodoglobal\setevalue{\@@XMLsave:#1}% todo: one level expansion
+ {<#2 #3 \currentXMLarguments>#4\XMLflush{#5}#6</#2>}}
+
+\gdef\gsaveXMLasdata {\doglobal\saveXMLasdata}
+\gdef\gsaveXMLdata {\doglobal\saveXMLdata}
+\gdef\gsaveXMLdatainelement{\doglobal\saveXMLdatainelement}
+\gdef\gsaveXMLdatastructure{\doglobal\saveXMLdatastructure}
+
+\gdef\doifelseXMLelement#1%
+ {\doifdefinedelse{\@@XMLsave:#1}}
+
+\gdef\doifelseXMLelementcontent#1%
+ {\ifcsname\@@XMLsave:#1\endcsname
+ \bgroup
+ \@EA\convertcommand\csname\@@XMLsave:#1\endcsname\to\ascii
+ \setbox\scratchbox\hbox{\ignorespaces\ascii\unskip\unskip\unskip}%
+ \ifdim\wd\scratchbox>\zeropoint
+ \egroup\@EAEAEA\firstoftwoarguments
+ \else
+ \egroup\@EAEAEA\secondoftwoarguments
+ \fi
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\gdef\doifelseXMLelementequals#1#2%
+ {\ifcsname\@@XMLsave:#1\endcsname
+ \bgroup
+ \@EA\convertcommand\csname\@@XMLsave:#1\endcsname\to\asciia
+ \convertargument#2\to\asciib
+ \ifx\asciia\asciib
+ \egroup\@EAEAEA\firstoftwoarguments
+ \else
+ \egroup\@EAEAEA\secondoftwoarguments
+ \fi
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\gdef\doifXMLtextelse#1% new
+ {\doiftextelse{\simplifyXMLelements#1}}
+
+\gdef\doifXMLtext#1#2% new
+ {\doiftextelse{\simplifyXMLelements#1}{#2}\donothing}
+
+\gdef\convertXMLelement#1\to#2%
+ {\ifcsname\@@XMLsave:#1\endcsname
+ \@EA\convertcommand\csname\@@XMLsave:#1\endcsname\to#2%
+ \else
+ \let#2\ascii
+ \fi}
+
+\gdef\flushXMLelement#1%
+ {\csname
+ \@@XMLsave:\ifcsname\@@XMLsave:#1\endcsname#1\else\@@XMLsave\fi
+ \endcsname}
+
+\letgvalueempty{\@@XMLsave:\@@XMLsave}
+
+\gdef\showXMLelement#1%
+ {\showvalue{\@@XMLsave:#1}}
+
+\gdef\eraseXMLelement#1%
+ {\dodoglobal\letbeundefined{\@@XMLsave:#1}}
+
+\gdef\geraseXMLelement
+ {\doglobal\eraseXMLelement}
+
+\gdef\processXMLelement#1%
+ {\bgroup
+ \enableXMLelements
+ \getvalue{\@@XMLsave:#1}%
+ \egroup}
+
+\gdef\texXMLelement#1%
+ {\begingroup
+% \setnormalcatcodes
+ \disableXML
+ \scantokens\@EA\@EA\@EA{\csname\@@XMLsave:#1\endcsname}%
+ \endgroup}
+
+\gdef\reduceXMLescapeentities
+ {\setXMLentity{amp}{\string&}%
+ \setXMLentity{lt}{\string<}%
+ \setXMLentity{gt}{\string>}%
+ \setXMLentity{quot}{\string'}%
+ \setXMLentity{dquot}{\string"}}
+
+\gdef\reduceXMLelement#1\to#2%
+ {\ifcsname\@@XMLsave:#1\endcsname
+ \bgroup
+ \reduceXMLescapetokens
+ \reduceXMLescapeentities
+ \expanded{\egroup\noexpand\def\noexpand#2{\csname\@@XMLsave:#1\endcsname}}%
+ \else
+ \let#2\empty
+ \fi}
+
+\egroup
+
+\def\potentialXMLentity#1%
+ {\doifXMLentityelse{#1}{\getXMLentity{#1}}{#1}}
+
+% \def\XMLnoschema{standalone='yes'}
+
+\def\writtenXMLelement #1#2{<#1>#2</#1>}
+\def\writtenXMLstart #1{<#1>}
+\def\writtenXMLend #1{</#1>}
+\def\writtenXMLempty #1{<#1/>}
+\def\writtenXMLelementcs#1#2{\ifx#2\empty\else<#1>#2</#1>\fi}
+\def\writtenXMLemptycs #1#2{\ifx#2\empty<#1/>\else<#1>#2</#1>\fi}
+
+%D This one can be used to get sound tuo files.
+%D
+%D \starttyping
+%D \setuphead[chapter][expansion=xml]
+%D % \setuplist[chapter][textcommand=\enableXML]
+%D
+%D \enableregime[utf] \autoXMLentitiestrue
+%D \stoptyping
+%D
+%D with:
+%D
+%D \starttyping
+%D <chapter>test &#xEB; test &ediaeresis; test <e>ediaeresis</e></chapter>
+%D \stoptyping
+%D
+%D This gives:
+%D
+%D \starttyping
+%D test Äk <b>test</b> <e>ediaeresis</e> test <e>ediaeresis</e>
+%D \stoptyping
+
+\def\XMLprocessingparameter#1%
+ {\csname\??xp#1\endcsname}
+
+\appendtoks
+ \defineXMLargument[\XMLprocessingparameter\c!escape]\getXMlentity
+\to \aftersetupXMLprocessing
+
+\setupXMLprocessing
+ [\c!escape=e]
+
+\bgroup \catcode`\<=\active
+
+\long\gdef\expandxmlargument#1\to
+ {\begingroup
+ \let\uppercase\firstofoneargument
+ \def\getXMLhexcharacter##1{\numbertoutf{"##1}}%
+ \def\getXMLdeccharacter##1{\numbertoutf{##1}}%
+ \def\getXMLentity##1{<e>##1</e>}%
+ \def<{\noexpand<}%
+ \xdef\@@globalexpanded{#1}%
+ \endgroup
+ \convertcommand\@@globalexpanded\to}
+
+\egroup
+
+\installexpander \v!xml {\expandxmlargument}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-hyp.tex b/Master/texmf-dist/tex/context/base/xtag-hyp.tex
new file mode 100644
index 00000000000..821705f7b74
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-hyp.tex
@@ -0,0 +1,61 @@
+%D \module
+%D [ file=xtag-hyp,
+%D version=2003.11.24,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=hyphenation support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (hyphenation)}
+
+%D This filter is kind of obsolete, since \UTF\ is not
+%D limited to \XML. So, here we only enable \UTF\ support.
+
+\defineXMLenvironment [hyphenations] [language=\currentlanguage,regime=utf,encoding=\defaultencoding]
+ {\startnointerference
+ \defineXMLargument [hyphenation] \hyphenation
+ \language[\XMLop{language}]%
+ \enableregime[\XMLop{regime}]%
+ \enableencoding[\XMLop{encoding}]}
+ {\stopnointerference}
+
+\defineXMLsingular [hyphenate]
+ {\-}
+
+\defineXMLgrouped [language] [code=\currentlanguage,scope=local]
+ {\doifelse{\XMLop{scope}}{global}\mainlanguage\language[\XMLop{code}]}
+
+\defineXMLsingular [language] [code=\currentlanguage]
+ {\doifelse{\XMLop{scope}}{global}\mainlanguage\language[\XMLop{code}]}
+
+\defineXMLsingular [compound] [token=-]
+ {\expanded{\directdiscretionary{\XMLop{token}}}}
+
+\endinput
+
+% \mainlanguage[nl] \setupbodyfont[pos] \useXMLfilter[utf,hyp]
+%
+% \starttext
+%
+% \hyphenatedword{pati\ediaeresis nten}
+% \hyphenatedword{pati\ediaeresis ntenorganisatie}
+% \hyphenatedword{pati\ediaeresis ntenplatform}
+%
+% \startXMLdata
+% <hyphenations language='nl' regime='utf'>
+% <hyphenation>pa-tiën-ten</hyphenation>
+% <hyphenation>pa-tiën-ten-or-ga-ni-sa-tie</hyphenation>
+% <hyphenation>pa-tiën-ten-plat-form</hyphenation>
+% </hyphenations>
+% \stopXMLdata
+%
+% \hyphenatedword{pati\ediaeresis nten}
+% \hyphenatedword{pati\ediaeresis ntenorganisatie}
+% \hyphenatedword{pati\ediaeresis ntenplatform}
+%
+% \stoptext
diff --git a/Master/texmf-dist/tex/context/base/xtag-ini.tex b/Master/texmf-dist/tex/context/base/xtag-ini.tex
new file mode 100644
index 00000000000..67a73bb3b8d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-ini.tex
@@ -0,0 +1,2875 @@
+%D \module
+%D [ file=xtag-ini,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Initialization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (initialization)}
+
+%D Beware: don't rely on \longempty things, since this may
+%D change!
+
+%D To be sure:
+
+\newif\ifprocessingXML
+
+\beginTEX
+ \writestatus{XML}{sorry, XML is only supported in (pdf)etex}
+ \def\startXMLdefinitions{\gobbleuntil\stopXMLdefinitions}
+ \endinput
+\endTEX
+
+% to be moved
+
+\ifx\globalscratchtoks \undefined \newtoks \globalscratchtoks \fi
+\ifx\globalscratchdimen\undefined \newdimen\globalscratchdimen \fi
+
+% tzt nog eens child grabber maken; mooier in mathml
+
+%D This module is highly optimized for speed, which sometimes
+%D reads to rather unreadable code. Sorry for this.
+
+\beginETEX XML
+
+ \bgroup \obeylines
+
+ \gdef\startXMLdefinitions% keep %
+ {\bgroup\obeylines\dostartXMLdefinitions}
+
+ \gdef\dostartXMLdefinitions #1
+ {\egroup\doifsomething{#1}{\writestatus{XML}{loading #1 support}}}
+
+ \global\let\stopXMLdefinitions\relax
+
+ \egroup
+
+\endETEX
+
+% todo: XMLfullsave == also attributes
+% csnames
+% XMLelse -> elseXML
+
+%D Remark: some hard coded character things will be replaced
+%D by named glyphs as soon as the upgraded encoding modules
+%D are released. At that moment, unicode support will be
+%D provided in accordance with the normal support in \CONTEXT.
+
+%D Like it or not, this module deals with angle bracketed
+%D input. Processing \XML\ alike input in \CONTEXT\ has been
+%D possible since 1995, and till 2000 several methods ran in
+%D parallel. These were implemented in modules like the semi
+%D public \type {m-sgml}.
+%D
+%D There is not one optimal solution for processing \XML\ data.
+%D The oldest method was based on a very simple preprocessor
+%D written in \MODULA\ and later \PERL: \type {<command>} was
+%D converted into \type {\begSGML[command]} and optional
+%D parameters were passed.
+%D
+%D A second method uses a \PERL\ or \XSL\ transformation
+%D script that produces \CONTEXT\ commands. This method is
+%D much slower, mainly because the whole document is read into
+%D memory and a document tree is to be build. The advantage is
+%D that processing of the resulting document is fast.
+%D
+%D The third method uses a basic parser written in the \TEX\
+%D language, and apart from a few pitfalls, this method is
+%D clean and efficient, but not always robust. Because errors
+%D in the input are not catched on forehand, processing in
+%D \TEX\ may fail due to errors. But, given that a document
+%D can be validated on forehand, this is no big problem.
+%D
+%D Each method has its advantage, but especially the third
+%D method puts some demands on \CONTEXT, since no interference
+%D between the parser and the core commands may occur. What
+%D method is used, depends on the situation.
+%D
+%D All three methods introduce some problems in interfacing to
+%D core \CONTEXT\ functionality. This is due to the fact that
+%D sometimes we want to typeset content directly, while in
+%D other cases we just want to pick up data for later usage,
+%D either or not using delimited arguments. And, when moving
+%D data around, there is always the expansion problem to deal
+%D with.
+%D
+%D As can be expected, we have to map begin and end tags onto
+%D \CONTEXT's start- and stopcommands. This is the easy part.
+%D When we have to pass the content of an element to a macro
+%D as argument, we need to do a delimited grab. Such mappings
+%D are not that hard to implement and were part of \type
+%D {m-sgml.tex} already. New in this core module is nested
+%D grabbing. Also new here is the support for namespaces and
+%D extensive attribute handling. On the other hand, recursive
+%D traceback of attributes is no longer supported. Because
+%D this feature was not really used, we can hereby safely we
+%D declare the \type {m-sgml.tex} module obsolete.
+%D
+%D In order to be able to incorporate \XML\ style definitions
+%D into basic \TEX\ styles, we will provide some basic
+%D functionality in the core itself. Some of the functionality
+%D can be set up with this general command. We use a token
+%D list register to handle post||setup actions. This permits
+%D us to extend this command.
+
+\unprotect
+
+\newtoks\aftersetupXMLprocessing
+
+\def\setupXMLprocessing
+ {\dosingleargument\dosetupXMLprocessing}
+
+\def\dosetupXMLprocessing[#1]%
+ {\getparameters[\??xp][#1]\the\aftersetupXMLprocessing}
+
+\def\XMLprocessingparameter#1%
+ {\csname\??xp#1\endcsname}
+
+\protect
+
+%D Formally an \XML\ file starts with an unique sequence
+%D \type {<?xml}, but in most of the unilities that come with
+%D \CONTEXT\ we will be more tolerant, and gobble preceding
+%D spaces.
+
+\def\XMLbanner#1{\string<\string ?xml version='1.0' #1\string ?\string>}
+
+%D We will be dealing with elements, which means that we have
+%D to take care of \type {<this>} and \type {</that>}, but
+%D also with \type {<such/>} and \type {<so />}. In some cases
+%D the upper and lowercase alternatives need to be dealt with,
+%D although this is not realy needed since XML is case
+%D sensitive.
+%D
+%D We also have to handle entities, like \type {&you;} and
+%D \type {&me;}. These are quite easy to deal with and need to
+%D be hooked into the encoding and abbreviation mechanisms.
+%D
+%D And then there are the parameters to be taken care of. Here
+%D we meet \type {key="value"} but also \type {key='eulav'}
+%D and even the spacy \typ {key = "value"}.
+%D
+%D Since we have to handlers for each element and entity, we
+%D will create a few namespaces. Special care has to be
+%D given to preformated code.
+%D
+%D There are two namespace mechanisms in place: one for
+%D \TEX, and one for \XML. The later mechanism permits
+%D remapping and ignoring.
+
+\unprotect
+
+\def \@@XML {XML:}
+\edef\@@XMLentity {\@@XML ent} % &crap;
+\edef\@@XMLelement {\@@XML ele} % <this> </this> <that/>
+\edef\@@XMLvariable {\@@XML var} % key="val"
+\edef\@@XMLvalue {\@@XML val} % key="val"
+\edef\@@XMLpars {\@@XML par} %
+\edef\@@XMLdata {\@@XML dat} % mem buffer
+\edef\@@XMLcode {\@@XML cod} % named mem buffers
+\edef\@@XMLinstruction {\@@XML ins} % <?
+\edef\@@XMLmap {\@@XML map} % mapping on context attr
+\edef\@@XMLlist {\@@XML lst} %
+\edef\@@XMLnamespace {\@@XML nam} % namespace:element
+\edef\@@XMLurlspace {\@@XML url} %
+\edef\@@XMLescape {\@@XML esc} % <!
+\edef\@@XMLdepth {\@@XML dep} % used to track nesting
+\edef\@@XMLdopth {\@@XML dop} % used to track nesting
+\edef\@@XMLsave {\@@XML sav} % namespace for saved elements
+
+\iffalse % slightly faster
+
+\edef\@@XML {*}
+\edef\@@XMLentity {\@@XML a} % &crap;
+\edef\@@XMLelement {\@@XML b} % <this> </this> <that/>
+\edef\@@XMLvariable {\@@XML c} % key="val"
+\edef\@@XMLvalue {\@@XML d} % key="val"
+\edef\@@XMLpars {\@@XML e} %
+\edef\@@XMLdata {\@@XML f} % mem buffer
+\edef\@@XMLcode {\@@XML g} % named mem buffers
+\edef\@@XMLinstruction {\@@XML h} % <?
+\edef\@@XMLmap {\@@XML i} % mapping on context attr
+\edef\@@XMLlist {\@@XML j} %
+\edef\@@XMLnamespace {\@@XML k} % namespace:element
+\edef\@@XMLurlspace {\@@XML l} %
+\edef\@@XMLescape {\@@XML m} % <!
+\edef\@@XMLdepth {\@@XML n} % used to track nesting
+\edef\@@XMLdopth {\@@XML o} % used to track nesting
+\edef\@@XMLsave {\@@XML p} % namespace for saved elements
+
+\fi
+
+\newtoks\XMLtoks
+\newtoks\XMLresetlist
+
+\newif\ifignoreXMLspaces
+\newif\iffixedXMLfont
+\newif\iftraceXMLelements
+%newif\ifprocessingXML
+
+\newcount\XMLlevel % scratchcounter
+\newcount\XMLdepth % used here
+
+\newtoks\everyenableXML
+
+%D We will implement the parser by making a few characters
+%D active. For that reason we also have to save their
+%D original meaning.
+
+%D \macros
+%D {enableXML}
+%D
+%D The macro \type {\enableXML} will be used to turn on the
+%D parser. This means that after that, \TEX\ commands starting
+%D with a backslash will not longer be read as such. There is
+%D a way around this, but for convenience \TEXEXEC\ will take
+%D care of processing raw \XML\ files in a transparant way.
+
+% cmr -- best for tui and such
+%
+% \chardef\XMLtokensreduction\zerocount
+%
+% lmr -- best but problematic for tui file:
+
+\chardef\XMLtokensreduction\plustwo
+
+% \def\alwaysreduceXMLtokens {\XMLtokensreduction\plusone}
+% \def\permanentreduceXMLtokens{\XMLtokensreduction\plustwo}
+
+% part of this should move to a low level module
+
+\bgroup
+\catcode`\*=\@@comment
+\catcode`\.=\@@escape
+.catcode`.B=.@@begingroup
+.catcode`.E=.@@endgroup
+.catcode`.P=.@@parameter
+
+.catcode`.&=.@@active * .xdef.letterampersand B.string&E
+.catcode`.<=.@@active * .xdef.letterless B.string<E
+ * .xdef.lettermore B.string>E
+.catcode`.#=.@@active * .xdef.letterhash B.string#E
+.catcode`.$=.@@active * .xdef.letterdollar B.string$E
+.catcode`.%=.@@active * .xdef.letterpercent B.string%E
+.catcode`.\=.@@active * .xdef.letterbackslash B.string\E
+.catcode`.^=.@@active * .xdef.letterhat B.string^E
+.catcode`._=.@@active * .xdef.letterunderscore B.string_E
+.catcode`.{=.@@active * .xdef.letterbgroup B.string{E
+.catcode`.}=.@@active * .xdef.letteregroup B.string}E
+.catcode`.|=.@@active * .xdef.letterbar B.string|E
+.catcode`.~=.@@active * .xdef.lettertilde B.string~E
+
+.gdef.enableXMLexpansion
+ B.def<B.doXMLelementE.let&=.doXMLentityE
+
+.gdef.disableXMLexpansion
+ B.unexpanded.def<B.doXMLelementE.let&=.doXMLentityE
+
+* internally the # becomes two #'s (before expanding, during
+* the parsing stage) which is why we let the first # gobble
+* the second one
+*
+* since this only takes place when reading arguments, as in
+* \startXMLdata ... cum, suis, we can take place of it
+* there; this is needed because reading from file goes wrong
+* (eating up argument)
+
+.unexpanded.gdef.enableXML
+ B.catcode`.!=.@@other
+ .catcode`.?=.@@other
+ .catcode`.:=.@@other * active in french
+ .catcode`.;=.@@other * active in french
+ .catcode`.&=.@@active
+ .catcode`.<=.@@active
+ .catcode`.>=.@@other
+ .catcode`."=.@@other
+ .catcode`./=.@@other
+ .catcode`.'=.@@other
+ .catcode`.~=.@@other
+ .catcode`.#=.@@other
+ .let &=.doXMLentity
+ .unexpanded.def<B.doXMLelementE*
+ .ifcase.XMLtokensreduction
+ .entitleXMLescapetokens
+ .or
+ .reduceXMLescapetokens
+ .else
+ .ignoreXMLescapetokens
+ .fi
+ .processingXMLtrue
+ .the.everyenableXML
+ E
+
+.gdef.activateXMLescapetokens
+ B.catcode`.$=.@@active
+ .catcode`.%=.@@active
+ .catcode`.\=.@@active
+ .catcode`.^=.@@active
+ .catcode`._=.@@active
+ .catcode`.{=.@@active
+ .catcode`.}=.@@active
+ .catcode`.|=.@@active
+ E
+
+* .gdef.entitleXMLescapetokens
+* B.activateXMLescapetokens
+* .def#B&tex-hash;E*
+* .def$B&tex-dollar;E*
+* .def%B&tex-percent;E*
+* .def\B&tex-backslash;E*
+* .def^B&tex-hat;E*
+* .def_B&tex-underscore;E*
+* .def{B&tex-leftbrace;E*
+* .def}B&tex-rightbrace;E*
+* .def|B&tex-bar;E*
+* E
+
+.xdef.entitleXMLescapetokens
+ B.noexpand.activateXMLescapetokens
+ .noexpand.def.noexpand#B.noexpand&.string#035;E*
+ .noexpand.def.noexpand$B.noexpand&.string#036;E*
+ .noexpand.def.noexpand%B.noexpand&.string#037;E*
+ .noexpand.def.noexpand\B.noexpand&.string#092;E*
+ .noexpand.def.noexpand^B.noexpand&.string#094;E*
+ .noexpand.def.noexpand_B.noexpand&.string#095;E*
+ .noexpand.def.noexpand{B.noexpand&.string#123;E*
+ .noexpand.def.noexpand}B.noexpand&.string#125;E*
+ .noexpand.def.noexpand|B.noexpand&.string#124;E*
+ E
+
+.gdef.reduceXMLescapetokens
+ B.activateXMLescapetokens
+ .def#B.string#E*
+ .def$B.string$E*
+ .def%B.string%E*
+ .def\B.string\E*
+ .def^B.string^E*
+ .def_B.string_E*
+ .def{B.string{E*
+ .def}B.string}E*
+ .def|B.string|E*
+ E
+
+.gdef.ignoreXMLescapetokens
+ B.catcode`.$=.@@other
+ .catcode`.%=.@@other
+ .catcode`.\=.@@other
+ .catcode`.^=.@@other
+ .catcode`._=.@@other
+ .catcode`.{=.@@other
+ .catcode`.}=.@@other
+ .catcode`.|=.@@other
+ E
+
+* The following macro can be invokes when reading from
+* an auxiliary file.
+
+.unexpanded.gdef.enableXMLelements
+ B.catcode60=.@@active * .catcode`.<=.@@active
+ .catcode62=.@@other * .catcode`.>=.@@other
+ .unexpanded.def<B.doXMLelementE*
+ .processingXMLtrue
+ E
+
+.unexpanded.gdef.disableXMLelements
+ B.catcode60=.@@active * .catcode`.<=.@@active
+ .catcode62=.@@other * .catcode`.>=.@@other
+ .let<.relax * new
+ .processingXMLfalse
+ E
+
+.global.let<.relax * new
+.global.let&.relax * new
+
+.egroup
+
+\def\disableXML{\setnormalcatcodes\processingXMLfalse}
+
+%D An element can be singular or paired. A singular element is
+%D called an empty element. The following definitions are
+%D equivalent:
+%D
+%D \starttyping
+%D <eerste></eerste> <eerste/> <eerste />
+%D \stoptyping
+%D
+%D Empty elements can have arguments too. Conforming the
+%D standard, each key must have a value. These are separated
+%D by an \type {=} sign and the value is delimited by either
+%D \type {"} or \type {'}. There may be spaces around the
+%D equal sign.
+%D
+%D \starttyping
+%D <eerste a= "b" c ="d" /> <eerste a = "b" c="d"/>
+%D \stoptyping
+%D
+%D Officially the following definition is not valid:
+%D
+%D \starttyping
+%D <eerste>some text</eerste> <eerste/> <eerste />
+%D \stoptyping
+%D
+%D Although we can handle both cases independently, this is
+%D seldom needed.
+%D
+%D Processing instructions are identified by a~\type {?} and are
+%D like empty elements.
+%D
+%D \starttyping
+%D <?doel a="b" c="d"?> <?doel a="b" c="d" ?>
+%D \stoptyping
+%D
+%D Comment is formatted as follows.
+%D
+%D \starttyping
+%D <!-- comment -->
+%D \stoptyping
+%D
+%D Verbatim code inits purest form is called \type {CDATA} and
+%D is embedded in the following ugly and therefore recognizable
+%D way:
+%D
+%D \starttyping
+%D <![CDATA[
+%D Dit is nogal verbatim !
+%D Dit is nogal verbatim !
+%D Dit is nogal verbatim !
+%D ]]>
+%D \stoptyping
+
+%D The parser is implemented as a multi||step macro. Because
+%D \type {!} and \type {?} should be picked up correctly, we
+%D need to define a few macros in unprotected mode!
+%D
+%D Because \XML\ is defined with some restrictions in mind,
+%D parsing the elements is not that complicated. First we have
+%D to determine if we're dealing with a comment or processing
+%D instruction. We need a bit of grouping because we have to
+%D mess up with catcodes. We probably have to treat a few
+%D more catcode and first character cases. We need to use
+%D \type {\begingroup} here, otherwise we get funny spaces in
+%D math.
+
+%D Maybe I will remove grouping here and introduce \type
+%D {\obeyXMLlines}.
+
+%D By using a few {\expandafter}'s we can avoid a \type {\next}
+%D construction. We could speed the first char test up a bit
+%D by using an installer and something \typ {\getvalue
+%D {#1doXMLelement}} (todo).
+
+\protect % we need an normal ! ?
+
+% \long\def\doXMLelement#1%
+% {\if#1!\expandafter \xparseXMLescape \else
+% \if#1?\expandafter\expandafter\expandafter \xparseXMLprocess \else
+% \expandafter\expandafter\expandafter \xparseXMLelement \fi\fi
+% #1}
+
+\def\expandthree{\expandafter\expandafter\expandafter}
+
+\long\def\doXMLelement#1%
+ {\if#1!\expandafter \xparseXMLescape \else
+ \if#1?\expandthree \xparseXMLprocess \else
+ \expandthree \xparseXMLelement \fi\fi
+ #1}
+
+% does it end with ? or ?>
+
+\long\def\xparseXMLescape !#1 {\parseXMLescape{#1}}
+\long\def\xparseXMLprocess ?#1 #2>{\parseXMLprocess{#1}{#2}}
+\long\def\xparseXMLelement #1>{\parseXMLelement #1 >}
+
+%D The escape handler takes care of the fuzzy \type {<!}
+%D constructs. Unfortunately, we need to catch \type {<--text}
+%D too, so we need another handler:
+
+\long\def\xparseXMLescape !#1#2%
+ {\if#1-%
+ \if#2-%
+ \expandafter\expandafter\expandafter\xxparseXMLescape
+ \else
+ \expandafter\expandafter\expandafter\xyparseXMLescape
+ \fi
+ \else
+ \if#1[%
+ \expandafter\expandafter\expandafter\xzparseXMLescape
+ \else
+ \expandafter\expandafter\expandafter\xyparseXMLescape
+ \fi
+ \fi#1#2}
+
+\long\def\xxparseXMLescape--#1{\parseXMLescape{--}#1}
+\long\def\xyparseXMLescape#1 {\parseXMLescape{#1}}
+\long\def\xzparseXMLescape[#1[{\parseXMLescape{#1}}
+
+%D Now the real work can begin.
+
+\unprotect
+
+\def\defineXMLescape[#1]#2%
+ {\unspaceargument#1\to\ascii % get rid of {}, like in {CDATA[}
+ \long\setvalue{\@@XMLescape:\ascii}{#2}}
+
+\def\parseXMLescape#1% #2> parsing takes place in macros
+ {\executeifdefined{\@@XMLescape:#1}{\csname\@@XMLescape:\s!default\endcsname}}
+
+%D In our case, processing instructions are only needed if
+%D we want specific \CONTEXT\ support. This may be useful in
+%D applications where the data is generated by an
+%D application. We will implement a \CONTEXT\ code handler
+%D later.
+
+%D The processing instructions handler is implemented as
+%D follows.
+
+\long\def\defineXMLprocessor[#1]#2%
+ {\long\setvalue{\@@XMLinstruction:#1}{#2}}
+
+% \def\parseXMLprocess#1#2%
+% {\executeifdefined{\@@XMLinstruction:#1}\gobbleoneargument{#2}}
+
+%D Because we support \type {.. ?>} as well as \type {.. >}
+%D end||of||pi situations, we need to clean up the ending
+%D \type {?}.
+
+\protect
+
+\long\def\cleanupXMLprocess#1%
+ {\docleanupXMLprocess#1 ? \relax}
+
+\long\def\docleanupXMLprocess#1? #2\relax
+ {\def\currentXMLprocess{#1}}
+
+\unprotect
+
+\def\parseXMLprocess#1#2%
+ {\cleanupXMLprocess{#2}%
+ \convertcommand#1\to\ascii
+ %\writestatus{xml-process}{\ascii}
+ \expanded
+ {\executeifdefined
+ {\@@XMLinstruction:\ascii}
+ \noexpand\gobbleoneargument
+ {\expandafter\noexpand\currentXMLprocess}}}
+
+%D One never knows:
+
+\let\normalparseXMLescape \parseXMLescape
+\let\normalparseXMLelement\parseXMLelement
+\let\normalparseXMLprocess\parseXMLprocess
+
+%D Next we will implement the normal element handler. This
+%D piece of code is complicated by the fact that we need to
+%D handle namespaces.
+
+\let\currentXMLarguments \empty
+\let\currentXMLelement \empty % name
+\let\currentXMLidentifier\empty % name or name/
+\let\currentXMLnamespace \empty % the (remapped) namespace
+\let\originalXMLnamespace\empty % the unremapped namespace
+\let\rawXMLidentifier \empty
+
+\def\rawXMLnamespace
+ {\ifx\currentXMLnamespace\empty\else\currentXMLnamespace:\fi}
+
+\def\rawXMLelement{\rawXMLnamespace\rawXMLidentifier}
+
+%D The following token list register provided the user a hook
+%D for extensions.
+
+\newtoks\everyXMLelement
+
+%D We try to keep track of the nature of an element. This
+%D flag can be used for special purposes (as in the pretty
+%D printing macros).
+
+\chardef\kindofXMLelement=0
+
+\chardef\beginXMLtag=1
+\chardef\endXMLtag =2
+\chardef\emptyXMLtag=3
+
+%D We do a rather hard coded scan for the namespace attribute. This
+%D is needed because its value determines further namespace related
+%D actions.
+
+\def\openXMLargument{ /}
+
+\long\def\parseXMLelement#1#2 #3>%
+ {\def\currentXMLarguments{#3}% including end /
+ \if#1/%
+ \chardef\kindofXMLelement\endXMLtag
+ \def\currentXMLelement{#2}%
+ \else
+ \docleanupXMLelement#1#2/\empty\relax
+ \fi
+ \ifx\currentXMLarguments\openXMLargument
+ \chardef\kindofXMLelement\emptyXMLtag
+ \fi
+ \@EA\splitoffXMLnamespace\currentXMLelement::\relax
+ \ifcase\kindofXMLelement
+ % can't happen
+ \or
+ % begintag or emptytag with arguments or space before /
+ \the\everyXMLelement % only for begin/empty tag !
+ \ifx\currentXMLarguments\empty \else
+ \dogetXMLarguments\rawXMLelement#3>%
+ \fi
+ \or
+ % no arguments
+ \or
+ % empty element without arguments (but possible presets)
+ \the\everyXMLelement
+ \fi
+ \ifcase\kindofXMLelement\or
+ \let \currentXMLidentifier \rawXMLidentifier
+ \edef\currentXMLfullidentifier {\rawXMLelement }%
+ \or
+ \edef\currentXMLidentifier {/\rawXMLidentifier }%
+ \edef\currentXMLfullidentifier{/\rawXMLelement }%
+ \or
+ \edef\currentXMLidentifier {\rawXMLidentifier/}%
+ \edef\currentXMLfullidentifier {\rawXMLelement /}%
+ \fi
+ \iftraceXMLelements\traceXMLelement\fi
+ \executeXMLelement}
+
+\long\def\docleanupXMLelement#1/#2#3\relax
+ {\def\currentXMLelement{#1}% watch out: \empty == begin or empty tag
+ \chardef\kindofXMLelement\ifx#2\empty\beginXMLtag\else\emptyXMLtag\fi}
+
+\def\@@traceXMLelement
+ {\originalXMLfullidentifier
+ \ifx\originalXMLfullidentifier\currentXMLfullidentifier\else
+ \space=>\space\currentXMLfullidentifier
+ \fi
+ \ifx\currentXMLarguments\empty\else
+ \space\string|\space\currentXMLarguments
+ \fi}
+
+\long\def\traceXMLelement
+ {\edef\originalXMLfullidentifier{\someXMLelementID\currentXMLelement}%
+ \cleanupXMLarguments\writestatus{xml-element}{\@@traceXMLelement}}
+
+%D We split off the namespace part, construct the
+%D identifier, and remap the namespace if needed.
+
+\def\splitoffXMLnamespace#1:#2:#3\relax
+ {\def\rawXMLidentifier{#2}%
+ \ifx\rawXMLidentifier\empty
+ \let\currentXMLnamespace\empty
+ \edef\rawXMLidentifier{#1}%
+ \else
+ \edef\currentXMLnamespace{#1}%
+ \fi
+ \let\originalXMLnamespace\currentXMLnamespace
+ \checkXMLnamespace\rawXMLidentifier}
+
+\def\xsplitoffXMLnamespace% fast resplit
+ {\ifcsname\@@XMLnamespace:\currentXMLnamespace\endcsname
+ \csname\@@XMLnamespace:\currentXMLnamespace\endcsname
+ \fi}
+
+%D We will implement this macro later.
+
+\let\checkXMLnamespace\gobbleoneargument % see below
+
+%D The namespace attribute checking is part of the element
+%D parser, since the value of \type {xmlns} may influence other
+%D namespace mapping.
+
+\def\@@XMLns{xmlns}
+
+\def\checkXMLnamespaceattr#1% xmlns:\@@XMLname="\XMLns"
+ {\edef\XMLns{#1}%
+ \ifx\XMLns\empty \else
+ \ifcsname\@@XMLurlspace:\XMLns\endcsname
+ % get remapped namespace (from url)
+ % \edef\XMLns{\csname\@@XMLurlspace:\XMLns\endcsname}%
+ \@EA\let\@EA\XMLns\csname\@@XMLurlspace:\XMLns\endcsname
+ % remap this one
+ \ifx\@@XMLname\empty
+ % not watertight since no implicit grouping
+ \xautoXMLnamespace\XMLns
+ \else
+ \xremapXMLnamespace\@@XMLname\XMLns
+ % redo namespace remapping of self if needed
+ \ifx\XMLns\currentXMLnamespace
+ % i'm still not sure if this is ok
+ \else
+ \xsplitoffXMLnamespace
+ \fi
+ \fi
+ \fi
+ \fi}
+
+%D Although not really needed, we clean up the arguments.
+
+% \long\def\cleanupXMLarguments
+% {\ifnum\kindofXMLelement=\emptyXMLtag
+% \ifx\currentXMLarguments\empty \else
+% \@EA\docleanupXMLarguments\currentXMLarguments/\empty
+% \fi
+% \fi}
+%
+% \long\def\docleanupXMLarguments#1/#2\empty
+% {\edef\currentXMLarguments{#1}}
+%
+% we need to be ...="/" .... /> safe
+
+\long\def\cleanupXMLarguments
+ {\ifnum\kindofXMLelement=\emptyXMLtag
+ \ifx\currentXMLarguments\empty \else
+ \@EA\docleanupXMLarguments\currentXMLarguments/ \relax
+ \fi
+ \else\ifnum\kindofXMLelement=\beginXMLtag
+ \ifx\currentXMLarguments\space
+ \let\currentXMLarguments\empty
+ \fi
+ \fi\fi}
+
+% \long\def\docleanupXMLarguments#1/ #2\relax % space added earlier
+% {\edef\currentXMLarguments{#1}}
+%
+% \startbuffer
+% <xsl:value-of select="map[@att=$variable]/@att2"/>
+% \stopbuffer
+%
+% \showXMLbuffer
+%
+% No \type {\edef} in the following, else \showXMLbuffer fails:
+
+\long\def\docleanupXMLarguments#1/ #2\relax % space added earlier
+ {\def\currentXMLarguments{#1}} % no \edef, goes wrong in \showXML
+
+\def\executeXMLelementA % no fallback
+ {\ifcsname\@@XMLelement:\currentXMLfullidentifier\endcsname
+ \csname\@@XMLelement:\currentXMLfullidentifier\endcsname
+ \fi}
+
+\def\executeXMLelementB % default fallback
+ {\csname \@@XMLelement:%
+ \ifcsname\@@XMLelement:\currentXMLfullidentifier\endcsname
+ \currentXMLfullidentifier
+ \else
+ \defaultXMLelementID % was \s!default
+ \fi
+ \endcsname}
+
+\def\executeXMLelementC % no namespace of default fallback
+ {\csname \@@XMLelement:%
+ \ifcsname\@@XMLelement:\currentXMLfullidentifier\endcsname
+ \currentXMLfullidentifier
+ \else\ifcsname\@@XMLelement:\currentXMLidentifier\endcsname
+ \currentXMLidentifier
+ \else
+ \defaultXMLelementID % was \s!default
+ \fi\fi
+ \endcsname}
+
+\def\executeXMLelementD
+ {\csname
+ \ifcsname\@@XMLelement:\currentXMLfullidentifier\endcsname
+ \@@XMLelement:\currentXMLfullidentifier
+ \else\ifcsname\@@XMLelement:\currentXMLidentifier\endcsname
+ \@@XMLelement:\currentXMLidentifier
+ \else
+ \executeXMLelementDD % less skipping and thereby faster
+ \fi\fi
+ \endcsname}
+
+\def\executeXMLelementDD % now forget about tex mapping
+ {\ifcsname\normal@@XMLelement:\currentXMLfullidentifier\endcsname
+ \normal@@XMLelement:\currentXMLfullidentifier
+ \else\ifcsname\normal@@XMLelement:\currentXMLidentifier\endcsname
+ \normal@@XMLelement:\currentXMLidentifier
+ \else
+ \normal@@XMLelement:\defaultXMLelementID % was \@@XMLelement:\s!default
+ \fi\fi}
+
+\def\setXMLfallbackmode#1%
+ {\ifcase#1\relax
+ \let\executeXMLelement \executeXMLelementA
+ \let\automateXMLnamespace\automateXMLnamespaceA
+ \or % 1
+ \let\executeXMLelement \executeXMLelementB
+ \let\automateXMLnamespace\automateXMLnamespaceB
+ \or % 2
+ \let\executeXMLelement \executeXMLelementC
+ \let\automateXMLnamespace\automateXMLnamespaceC
+ \or % 3
+ \let\executeXMLelement \executeXMLelementD
+ \let\automateXMLnamespace\automateXMLnamespaceD
+ \fi}
+
+\setXMLfallbackmode3 % was 2
+
+%D An example of fall back modes is given below.
+
+%D The automated namespace stuff is new and yet undocumented
+%D (see resource libraries for usage).
+
+\def\xautoXMLnamespace#1% fast internal one
+ {\ifcsname\@@XMLnamespace-#1\endcsname\else
+ \@EA\appendtoks\csname\@@XMLnamespace-#1\endcsname\to\autoXMLnamespaces
+ \fi
+ \@EA\edef\csname\@@XMLnamespace-#1\endcsname
+ {\noexpand\edef\noexpand\@axmlns@{#1}% quicker #1 -> \#1
+ \noexpand\doautoXMLnamespace\noexpand\@axmlns@}}
+
+\def\doautoXMLnamespace#1% \done is set before list
+ {\ifdone\else\automateXMLnamespace#1\fi}
+
+\def\automateXMLnamespaceA#1%
+ {\ifcsname\@@XMLelement:#1:\checkedXMLnamespace\endcsname
+ \let\currentXMLnamespace#1%
+ \else\ifcsname\@@XMLelement:#1:\checkedXMLnamespace/\endcsname
+ \let\currentXMLnamespace#1%
+ \fi\fi}
+
+\let\automateXMLnamespaceB\automateXMLnamespaceA
+\let\automateXMLnamespaceC\automateXMLnamespaceA
+
+\def\automateXMLnamespaceD#1%
+ {\ifcsname\@@XMLelement:#1:\checkedXMLnamespace\endcsname
+ \let\currentXMLnamespace#1%
+ \else\ifcsname\normal@@XMLelement:#1:\checkedXMLnamespace\endcsname
+ \let\currentXMLnamespace#1%
+ \else
+ \automateXMLnamespaceDD#1%
+ \fi\fi}
+
+\def\automateXMLnamespaceDD#1%
+ {\ifcsname\@@XMLelement:#1:\checkedXMLnamespace/\endcsname
+ \let\currentXMLnamespace#1%
+ \else\ifcsname\normal@@XMLelement:#1:\checkedXMLnamespace/\endcsname
+ \let\currentXMLnamespace#1%
+ \fi\fi}
+
+%D Later we will implement the error handler, here we handle
+%D the default case.
+
+\def\someXMLelementID#1%
+ {\ifnum\kindofXMLelement=\endXMLtag /\fi
+ #1%
+ \ifnum\kindofXMLelement=\emptyXMLtag/\fi}
+
+\def\defaultXMLelementID
+ {\someXMLelementID\s!default}
+
+%D It is possible to keep track of nesting automatically,
+%D but this would kind of prohibit things like \type
+%D {\ignorespaces}. In the future we may provide an
+%D automatic depth tracking as an alternative (exclusive)
+%D mode of operation combined with space grabbing.
+
+\def\beginXMLelement
+ {\global\advance\XMLdepth\plusone
+ \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\currentXMLelement
+ }%\writestatus{XML TRACE}{[begin] [\the\XMLdepth] [\XMLself]}}
+
+\def\endXMLelement
+ {%\writestatus{XML TRACE}{[end] [\the\XMLdepth] [\XMLself]}%
+ \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\undefined
+ \global\advance\XMLdepth\minusone}
+
+% 0 = nothing
+% 1 = unknown
+% 2 = current element
+
+\chardef\XMLancestormode=2 % never change this one globally
+
+% \def\XMLancestor#1%
+% {\ifnum\numexpr(\XMLdepth-#1)>0
+% \csname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname
+% \else
+% \ifcase\XMLancestormode\or\s!unknown\or\currentXMLelement\fi
+% \fi}
+
+\def\XMLancestor#1%
+ {\ifnum\numexpr\XMLdepth-#1\relax>\zerocount
+ \csname\@@XMLdepth:\the\numexpr\XMLdepth-#1\relax\endcsname
+ \else
+ \ifcase\XMLancestormode\or\s!unknown\or\currentXMLelement\fi
+ \fi}
+
+% \def\XMLpureancestor#1%
+% {\ifnum\numexpr(\XMLdepth-#1)>0
+% \csname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname
+% \fi}
+
+\def\XMLpureancestor#1%
+ {\ifcase\numexpr\XMLdepth-#1\relax\or
+ \csname\@@XMLdepth:\the\numexpr\XMLdepth-#1\relax\endcsname
+ \fi}
+
+\def\XMLparent {\XMLancestor \plusone }
+\def\XMLself {\XMLancestor \zerocount}
+\def\XMLpureparent{\XMLpureancestor\plusone }
+\def\XMLpureself {\XMLpureancestor\zerocount}
+
+% \def\XMLpureancestor#1%
+% {\csname
+% \ifnum\numexpr(\XMLdepth-#1)>\zerocount
+% \@@XMLdepth:\the\numexpr(\XMLdepth-#1)%
+% \else
+% \s!empty
+% \fi
+% \endcsname}
+
+\def\XMLpureparent
+ {\XMLpureancestor\plusone}
+
+% probleem: depth is vast en dus ook ancestor
+
+% \XMLinh{...} will backtrack definitions (given that the elements
+% use begin/end, the backtracking stops when a non-empty value is
+% encountered; maybe we will add some keyword (inherit) some day
+
+\def\XMLinhpar#1#2%
+ {\@EA\ifx\csname\@@XMLvariable:#1:#2\endcsname\empty
+ \@EA\pXMLinh
+ \else
+ \csname\@@XMLvariable:#1:#2\endcsname
+ \@EA\gobbletwoarguments
+ \fi\XMLdepth{#2}}
+
+\def\XMLinh
+ {\XMLinhpar\currentXMLelement}
+
+% \def\pXMLinh#1%
+% {\@EA\ppXMLinh\@EA{\the\numexpr(#1-\plusone)}}
+
+\def\pXMLinh#1%
+ {\@EA\ppXMLinh\@EA{\the\numexpr#1-\plusone\relax}}
+
+\def\ppXMLinh#1#2%
+ {\@EA\ifx\csname\@@XMLvariable:#1:#2\endcsname\empty
+ \ifnum#1>\plusone
+ \@EAEAEA\pXMLinh
+ \else
+ \@EAEAEA\gobbletwoarguments
+ \fi
+ \else
+ \csname\@@XMLvariable:#1:#2\endcsname
+ \@EA\gobbletwoarguments
+ \fi{#1}{#2}}
+
+% better
+%
+% \def\XMLpureancestor#1%
+% {\ifcsname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname
+% \csname\@@XMLdepth:\the\numexpr(\XMLdepth-#1)\endcsname
+% \fi}
+
+% replaces macro in xtag-ini: ! ! !
+
+\def\edefXMLop#1#2% \macro{att}
+ {\edef#1%
+ {\csname\ifcsname\@@XMLvariable:\ownXMLelement:#2\endcsname
+ \@@XMLvariable:\ownXMLelement:#2\else\s!empty
+ \fi\endcsname}}
+
+\def\edefXMLinh#1#2% \macro{att}
+ {\edef#1{\XMLinh{#2}}}
+
+\def\edefXMLinhpar#1#2#3% \macro{tag}{att}
+ {\edef#1{\XMLinhpar{#2}{#3}}}
+
+% \def\doifXMLopdef#1#2% \macro{att}
+% {\ifcsname\@@XMLvariable:\ownXMLelement:#1\endcsname
+% \@EA\let\@EA#1\csname\@@XMLvariable:\ownXMLelement:#1\endcsname
+% \expandafter\firstofoneargument
+% \else
+% \expandafter\gobbleoneargument
+% \fi}
+
+\fetchruntimecommand \tracebackXMLattribute {\f!xtagprefix\s!run}
+\fetchruntimecommand \showXMLinh {\f!xtagprefix\s!run}
+
+% \defineXMLenvironment[one]
+% {\beginXMLelement}
+% {\endXMLelement}
+%
+% \defineXMLenvironment[two]
+% {\beginXMLelement
+% \starttabulatie
+% \NC ancestor 1 \NC \XMLancestor{1} \NC \NR
+% \NC ancestor 2 \NC \XMLancestor{2} \NC \NR
+% \NC ancestor 3 \NC \XMLancestor{3} \NC \NR
+% \NC ancestor 4 \NC \XMLancestor{4} \NC \NR
+% \stoptabulatie}
+% {\endXMLelement}
+%
+% \startbuffer
+% <x:one> <x:two> <one> <two> </two> </one> </x:two> </x:one>
+% \stopbuffer
+%
+% {fallback A: \setXMLfallbackmode 0 \processXMLbuffer}\par
+% {fallback B: \setXMLfallbackmode 1 \processXMLbuffer}\par
+% {fallback C: \setXMLfallbackmode 2 \processXMLbuffer}\par
+
+% todo: split #1 into raws en reconstruct, set current etc, push and pop
+%
+% \def\beginXMLelement
+% {\dosingleempty\dobeginXMLelement}
+%
+% \def\dobeginXMLelement[#1]%
+% {\global\advance\XMLdepth 1
+% \global\@EA\let\csname\@@XMLdepth:\the\XMLdepth\endcsname\currentXMLelement
+% \global\@EA\edef\csname\@@XMLdopth:\the\XMLdepth\endcsname{\ownXMLelement}%
+% \iffirstargument\edef\ownXMLelement{#1}\fi}
+%
+% \def\endXMLelement
+% {\@EA\let\@EA\ownXMLelement\csname\@@XMLdopth:\the\XMLdepth\endcsname
+% \global\advance\XMLdepth -1 }
+
+%D \defineXMLenvironment[one]
+%D {\beginXMLelement}
+%D {\endXMLelement}
+%D
+%D \defineXMLenvironment[two]
+%D {\beginXMLelement
+%D \starttabulate
+%D \NC parent 1 \NC \XMLancestor{1} \NC \NR
+%D \NC parent 2 \NC \XMLancestor{2} \NC \NR
+%D \NC parent 3 \NC \XMLancestor{3} \NC \NR
+%D \NC parent 4 \NC \XMLancestor{4} \NC \NR
+%D \stoptabulate}
+%D {\endXMLelement}
+%D
+%D \startbuffer
+%D <x:one> <x:two> <one> <two> </two> </one> </x:two> </x:one>
+%D \stopbuffer
+%D
+%D fallback A: \setXMLfallbackmode0 \processXMLbuffer
+%D fallback B: \setXMLfallbackmode1 \processXMLbuffer
+%D fallback C: \setXMLfallbackmode2 \processXMLbuffer
+
+%D Here we do the namespace (re)mapping. More examples are
+%D provided in the manual.
+%D
+%D \starttyping
+%D \supportXMLnamespace [test] % needed to get a namespace working
+%D \skipXMLnamespace [test] % slow
+%D \ignoreXMLnamespace [test] % faster
+%D \defineXMLenvironment [rubish:itemize] {[} {]}
+%D \defineXMLenvironment [rubish:item] {(} {)}
+%D \remapXMLnamespace [crap] [rubish]
+%D \remapXMLnamespace [con] [context]
+%D \remapXMLurlspace [http://www.pragma-ade.com/dtd/context] [context]
+%D \autoXMLnamespace [context] % fallback
+%D \autoXMLnamespace [whatever] % second fall back
+%D \stoptyping
+
+\newtoks\autoXMLnamespaces
+
+%D The automatically mapped namespaces (the fallbacks so to
+%D day) are collected in a token list.
+
+\let\checkedXMLnamespace\empty
+
+\def\checkXMLnamespace#1%
+ {\edef\checkedXMLnamespace{#1}%
+ \ifcsname\@@XMLnamespace:\currentXMLnamespace\endcsname
+ \csname\@@XMLnamespace:\currentXMLnamespace\endcsname
+ % forced namespace
+ \else\ifcsname\@@XMLelement:\currentXMLelement\endcsname
+ % natural element
+ \else\ifcsname\@@XMLelement:\currentXMLelement/\endcsname
+ % natural element
+ \else
+ % locate fallback
+ \donefalse\the\autoXMLnamespaces
+ \fi\fi\fi}
+
+\def\skipXMLnamespace[#1]%
+ {\letvalue{\@@XMLnamespace:#1}\doXMLskipnamespace}
+
+\def\doXMLskipnamespace
+ {\long\@EA\def\csname\@@XMLelement:\checkedXMLnamespace\endcsname
+ {\getXMLgroupedignore\checkedXMLnamespace}}
+
+\def\hideXMLnamespace[#1]%
+ {\letvalue{\@@XMLnamespace:#1}\doXMLhidenamespace}
+
+\def\doXMLhidenamespace
+ {\long\@EA\def\csname\@@XMLelement:\checkedXMLnamespace\endcsname
+ {\redoXMLignore\checkedXMLnamespace}}
+
+\def\ignoreXMLnamespace[#1]%
+ {\letvalue{\@@XMLnamespace:#1}\doXMLignorenamespace}
+
+\def\doXMLignorenamespace % \let binnen def
+ {\long\@EA\def\csname\@@XMLelement:\checkedXMLnamespace\endcsname
+ {\@EA\redoXMLignore\@EA{\checkedXMLnamespace}}} % EA ?
+
+\def\remapXMLnamespace
+ {\dodoubleargument\doremapXMLnamespace}
+
+\def\doremapXMLnamespace[#1][#2]%
+ {\ifsecondargument
+ \setvalue{\@@XMLnamespace:#1}{\def\currentXMLnamespace{#2}}%
+ \else
+ \letvalue{\@@XMLnamespace:#1}\relax
+ \fi}
+
+\def\supportXMLnamespace%
+ {\dosingleargument\dosupportXMLnamespace}
+
+\def\dosupportXMLnamespace[#1]%
+ {\setvalue{\@@XMLnamespace:#1}{\def\currentXMLnamespace{#1}}}
+
+\def\xremapXMLnamespace#1#2% fast internal one
+ {\@EA\edef\csname\@@XMLnamespace:#1\endcsname
+ {\def\noexpand\currentXMLnamespace{#2}}}
+
+\def\autoXMLnamespace[#1]%
+ {\xautoXMLnamespace{#1}}
+
+\def\xautoXMLnamespace#1% fast internal one
+ {\ifcsname\@@XMLnamespace-#1\endcsname\else
+ \@EA\appendtoks\csname\@@XMLnamespace-#1\endcsname\to\autoXMLnamespaces
+ \fi
+ \@EA\edef\csname\@@XMLnamespace-#1\endcsname
+ {\noexpand\doautoXMLnamespace{#1}}}
+
+\def\doautoXMLnamespace#1% \done is set before list
+ {\ifdone\else
+ \ifcsname\@@XMLelement:#1:\checkedXMLnamespace\endcsname
+ \def\currentXMLnamespace{#1}%
+ \else\ifcsname\@@XMLelement:#1:\checkedXMLnamespace/\endcsname
+ \def\currentXMLnamespace{#1}%
+ \fi\fi
+ \fi}
+
+\def\resetXMLnamespace[#1]%
+ {\letvalue{\@@XMLnamespace-#1}\gobbleoneargument
+ \letvalue{\@@XMLnamespace:#1}\gobbleoneargument}
+
+\def\remapXMLurlspace
+ {\dodoubleargument\doremapXMLurlspace}
+
+\def\doremapXMLurlspace[#1][#2]%
+ {\setvalue{\@@XMLurlspace:#1}{#2}}
+
+%D Entities needs a bit more work, as well as a connection
+%D with the encoding handlers.
+
+% we need to be able to do:
+%
+% \defineXMLentity[amp] {\FunnyAmp} \def\FunnyAmp#1;{\getXMLentity{#1}}
+%
+% \defineXMLentity [pound] {(why not use euro's?)}
+%
+% \startXMLdata
+% test &amp;pound; test
+% \stopXMLdata
+%
+% so we need an ifless implementation
+%
+% also .. this should work:
+%
+% \defineXMLentity[ctx-var-textwidth] {\textwidth}
+%
+% \defineXMLcommand[test][width=\textwidth]
+% {\the\dimexpr\XMLop{width}\relax}
+%
+% \startXMLdata
+% <test width=".45&ctx-var-textwidth;"/>
+% <test width="&ctx-var-textwidth;"/>
+% \stopXMLdata
+
+% \eacute -> simplified -> e (via raw encoding)
+% -> raw -> eacute (via handler)
+%
+% naming sucks
+
+\newif\ifXMLrawentities % proper fallback
+\newif\ifXMLsimpleentities % last resort
+
+\def\simpleXMLencoding{raw}
+
+\def\simplifyXMLentities
+ {\fastenableencoding\simpleXMLencoding
+ \XMLsimpleentitiestrue}
+
+\def\defineXMLentity
+ {\dodoubleempty\dodefineXMLentity}
+
+\def\dodefineXMLentity[#1][#2]#3%
+ {\ifsecondargument
+ \defineXMLentities[#1]{#2}{#3}%
+ \else
+ \dododefineXMLentity{#1}{#3}%
+ \fi}
+
+\def\defineXMLentities[#1]#2#3%
+ {\dododefineXMLentity{#1}{\ifXMLsimpleentities#2\else#3\fi}}
+
+\def\dododefineXMLentity#1#2%
+ {\unspaceargument#1\to\ascii % #1 can be {[} or so
+ \long\setvalue{\@@XMLentity:\@EA\firstofoneargument\ascii}{#2}}
+
+\def\setXMLentity#1% fast one
+ {\long\@EA\def\csname\@@XMLentity:#1\endcsname}
+
+%D May this wile become dodo (more in tune with rest);
+%D beware: also remapped in xtag-map.
+
+\def\doXMLentity#1#2;% interesting: # is now ##
+ {\if\string#1\letterhash
+ \@EA\parseXMLcharacter
+ \else\ifXMLrawentities
+ \@EAEAEA\firstofoneargument
+ \else
+ \@EAEAEA\executeXMLentity
+ \fi\fi{#1#2}}
+
+%D Here we need to get rid of the double hash and act upon the
+%D number. Proper hex/oct number support can be implemented by
+%D redefining \type {\executeXMLcharacter}.
+
+% \def\parseXMLcharacter#1% gobble the ##x
+% {\@EA\executeXMLcharacter\@EA{\gobblethreearguments#1}}
+%
+% single hash now
+%
+% \def\parseXMLcharacter#1%
+% {\@EA\executeXMLcharacter\@EA{\gobbleoneargument#1}}
+%
+% \def\executeXMLcharacter#1% can be overloaded
+% {\ifnum"#1<256
+% \@EA\getXMLcharacter
+% \else\ifXMLrawentities
+% \@EAEAEA\firstofoneargument
+% \else
+% \@EAEAEA\unknownXMLcharacter
+% \fi\fi{\number"#1}}
+%
+% \unexpanded\def\getXMLcharacter#1{\rawcharacter{#1}}
+
+\def\parseXMLcharacter#1%
+ {\@EA\executeXMLcharacter\gobbleoneargument#1\empty\relax}
+
+\def\executeXMLcharacter#1#2\relax
+ {\if#1x%
+ \@EA\noexecuteXMLhexcharacter
+ \else
+ \@EA\doexecuteXMLdeccharacter
+ \fi#1#2\relax}
+
+\def\noexecuteXMLhexcharacter x#1\relax
+ {\uppercase{\doexecuteXMLhexcharacter#1\relax}}
+
+% \unexpanded\def\getXMLcharacter#1%
+% {\ifXMLrawentities
+% \@EA\firstofoneargument
+% \else\ifcsname\@@XMLentity:#1\endcsname
+% \@EAEAEA\getXMLentity
+% \else
+% \@EAEAEA\unicodechar % was: \rawcharacter
+% \fi\fi{#1}}
+%
+% \def\doexecuteXMLhexcharacter#1\relax{\getXMLcharacter{"#1}}
+% \def\doexecuteXMLdeccharacter#1\relax{\getXMLcharacter {#1}}
+%
+% if we want to support x in entity overloading, we prefer:
+
+\unexpanded\def\getXMLdeccharacter#1%
+ {\ifXMLrawentities
+ \@EA\rawXMLdecentity
+ \else\ifcsname\@@XMLentity:#1\endcsname
+ \@EAEAEA\getXMLdecentity
+ \else
+ \@EAEAEA\unicodechar
+ \fi\fi{#1}}
+
+\unexpanded\def\getXMLhexcharacter#1%
+ {\ifXMLrawentities
+ \@EA\rawXMLhexentity
+ \else\ifcsname\@@XMLentity:x#1\endcsname
+ \@EAEAEA\getXMLhexentity
+ \else
+ \@EAEAEA\unicodehexchar
+ \fi\fi{#1}}
+
+\def\unicodehexchar#1{\unicodechar{"#1}}
+
+\let\getXMLcharacter\getXMLdeccharacter
+
+\def\getXMLdecentity#1{\getXMLentity {#1}}
+\def\getXMLhexentity#1{\getXMLentity{x#1}}
+
+\def\rawXMLdecentity#1{#1}
+\def\rawXMLhexentity#1{x#1}
+
+\def\doexecuteXMLhexcharacter#1\relax{\getXMLhexcharacter{#1}}
+\def\doexecuteXMLdeccharacter#1\relax{\getXMLdeccharacter{#1}}
+
+% \defineXMLentity[8218] {Adam}
+% \defineXMLentity[x007D]{Eve}
+%
+% \startbuffer
+% &#64; &#8216; &#8218; &#8220; &#8221; &#8222;&#8226;
+% &amp;
+% &#x0024; &#x007B; &#x007D; &#x00A0; &#x2026;
+% \stopbuffer
+%
+% \typebuffer \processXMLbuffer
+
+% left overs
+
+\def\unknownXMLcharacter#1{[#1]}
+
+\ifx\unicodechar\undefined\let\unicodechar\rawcharacter\fi % brrrr
+
+% \useXMLfilter[ent]
+%
+% \defineXMLsingular[test]{{\simplifyXMLentities\XMLpar{test}{bla}{}}}
+%
+% \startXMLdata
+% <test bla="&#xD3;bla&eacute;bla&tex;and$and&#xFC;ziezo&#xF99;" />
+% \stopXMLdata
+%
+% \defineXMLentity[45]{|it works|} % {|-|}
+%
+% \startXMLdata
+% text&#045;&#046;text
+% text&#x045;&#x046;text
+% \stopXMLdata
+
+%D May be this will change a bit ...
+
+\def\executeXMLentity#1% named one
+ {\getXMLentity{#1}}
+
+%\def\expandedXMLentity#1%
+% {\ifcsname\@@XMLentity:#1\endcsname\csname\@@XMLentity:#1\endcsname\fi}
+%
+%\unexpanded\def\getXMLentity#1%
+% {\ifcsname\@@XMLentity:#1\endcsname\csname\@@XMLentity:#1\endcsname\fi}
+%
+%\def\expandedXMLentity#1%
+% {\csname\@@XMLentity:#1\endcsname}
+%
+%\unexpanded\def\getXMLentity#1%
+% {\csname\@@XMLentity:#1\endcsname}
+
+\newif\ifautoXMLentities % fall back on context commands
+
+\def\expandedXMLentity#1%
+ {\ifcsname\@@XMLentity:#1\endcsname \@EA \execXMLentity
+ \else\ifautoXMLentities \@EAEAEA \autoXMLentity
+ \else \@EAEAEA \crapXMLentity
+ \fi\fi{#1}}
+
+\def\execXMLentity#1{\csname\@@XMLentity:#1\endcsname}
+\def\crapXMLentity#1{\inframed[\c!offset=.1ex]{\tttf#1}}
+\def\autoXMLentity#1{\ifcsname#1\endcsname\csname#1\endcsname\fi}
+
+\unexpanded\def\getXMLentity{\expandedXMLentity}
+
+%\def\doifXMLentityelse#1#2#3%
+% {\ifcsname\@@XMLentity:#1\endcsname#2\else#3\fi}
+
+\def\doifXMLentityelse#1%
+ {\ifcsname\@@XMLentity:#1\endcsname
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+% \letvalue{1@2}\firstoftwoarguments
+% \letvalue{2@2}\secondoftwoarguments
+%
+% \def\doifXMLentityelse#1%
+% {\csname\ifcsname\@@XMLentity:#1\endcsname1\else2\fi @2\endcsname}
+
+% see \defineXML... commands:
+%
+% [key=val] => \presetXMLarguments{element} => default key/vals
+% [blabla] => \theXMLarguments{blabla} => user key/vals
+% [blabla] [key=val] => \presetXMLarguments{element} => default key/vals
+% \theXMLarguments{blabla} => user key/vals
+%
+% <element key="val"> stored in case of [blabla] else set as \XMLpar
+%
+% see m-steps for an example of usage
+
+\let\@@XMLmapmap\empty
+\newif\ifXMLnamespace
+
+\long\def\getXMLarguments#1#2%
+ {\XMLnamespacefalse
+ \dogetXMLarguments{#1}#2>}
+
+\let\dosetXMLattributeA\gobbleoneargument
+
+\def\dosetXMLattributeB#1%
+ {\ifx\@@XMLspac\originalXMLnamespace
+ \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname{#1}%
+ % maybe some day global handling here as well
+ \fi}
+
+% \def\dosetXMLattributeC#1%
+% {\ifx\@@XMLspac\originalXMLnamespace
+% \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname{#1}%
+% \else
+% \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLspac:\@@XMLname\endcsname{#1}%
+% \fi}
+
+\def\dosetXMLattributeC
+ {\@EA\def\csname\@@XMLvariable:\@@XMLclass\ifx\@@XMLspac
+ \originalXMLnamespace\else:\@@XMLspac\fi:\@@XMLname\endcsname}
+
+% \def\dosetXMLattributeD#1%
+% {\ifx\@@XMLspac\originalXMLnamespace
+% \@EA\def\csname\@@XMLvariable:\@@XMLclass:\currentXMLnamespace:\@@XMLname\endcsname{#1}%
+% \else
+% \@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLspac:\@@XMLname\endcsname{#1}%
+% \fi}
+
+\def\dosetXMLattributeD
+ {\@EA\def\csname\@@XMLvariable:\@@XMLclass:\ifx\@@XMLspac
+ \originalXMLnamespace\currentXMLnamespace\else\@@XMLspac\fi:\@@XMLname\endcsname}
+
+\def\setXMLattributemode#1%
+ {\ifcase#1\relax
+ \let\dosetXMLattribute\dosetXMLattributeA
+ \or
+ \let\dosetXMLattribute\dosetXMLattributeB
+ \or
+ \let\dosetXMLattribute\dosetXMLattributeC
+ \or
+ \let\dosetXMLattribute\dosetXMLattributeD
+ \fi}
+
+\setXMLattributemode{2} % a reasonable default
+
+\let\@@XMLspac\empty % argumentnamespace
+
+\long\def\dogetXMLarguments#1%
+ {\XMLtoks\emptytoks
+ \ifcsname\@@XMLmap:#1\endcsname
+ \let\dodosetXMLargument\dodosetXMLargumentB
+ \else
+ \def\@@XMLclass{#1}%
+ \let\dodosetXMLargument\dodosetXMLargumentA
+ \fi
+ \let\dodoparseXMLarguments\doparseXMLarguments
+ \doparseXMLarguments}
+
+% \long\def\doparseXMLarguments#1% space goes ok
+% {\if#1>%
+% \let\dodoparseXMLarguments\empty
+% \else\if#1=%
+% \edef\@@XMLname{\the\XMLtoks}%
+% \XMLtoks\emptytoks
+% \else\if#1"%
+% \let\dodoparseXMLarguments\dodoparseXMLargumentsD
+% \else\if#1'%
+% \let\dodoparseXMLarguments\dodoparseXMLargumentsS
+% \else\if#1:%
+% \XMLnamespacetrue
+% \edef\@@XMLspac{\the\XMLtoks}%
+% \XMLtoks\emptytoks
+% \else\if#1/%
+% \chardef\kindofXMLelement\emptyXMLtag
+% \else
+% \XMLtoks\@EA{\the\XMLtoks#1}%
+% \fi\fi\fi\fi\fi\fi
+% \dodoparseXMLarguments}
+%
+% The next speed optimization is suggested by Taco. Since we
+% are dealing with validated code, we can grab larger chunks.
+%
+% \long\def\doparseXMLarguments#1% space goes ok
+% {\if#1>%
+% \let\dodoparseXMLarguments\empty
+% \else\if#1/%
+% \chardef\kindofXMLelement\emptyXMLtag
+% \else
+% \XMLtoks{#1}%
+% \let\dodoparseXMLarguments\dodoparseXMLargumentsX
+% \fi\fi
+% \dodoparseXMLarguments}
+%
+% we can get rid of one more assignment
+
+\long\def\doparseXMLarguments#1% space goes ok
+ {\if#1>%
+ %\let\dodoparseXMLarguments\empty
+ \expandafter\gobbleoneargument % speedup
+ \else\if#1/%
+ \chardef\kindofXMLelement\emptyXMLtag
+ \else
+ \XMLtoks{#1}%
+ \let\dodoparseXMLarguments\dodoparseXMLargumentsX
+ \fi\fi
+ \dodoparseXMLarguments}
+
+% slightly faster:
+%
+% \long\def\doparseXMLarguments#1% space goes ok
+% {\if#1>%
+% \@EA\gobbleoneargument
+% \else\if#1/%
+% \chardef\kindofXMLelement\emptyXMLtag
+% \@EAEAEA\gobbletwoarguments
+% \else
+% \@EAEAEA\dodoparseXMLargumentsX
+% \fi\fi#1}
+%
+% \def\dodoparseXMLargumentsX#1=#2%
+% {\def\@@XMLname{#1}%
+% \getXMLNSSSS#1:\relax
+% \if#2"%
+% \expandafter\dodoparseXMLargumentsD
+% \else
+% \expandafter\dodoparseXMLargumentsS
+% \fi}
+
+\def\dodoparseXMLargumentsX#1=#2%
+ {\edef\@@XMLname{\the\XMLtoks#1}%
+ \@EA\getXMLNSSSS\@@XMLname:\relax
+ \XMLtoks\emptytoks
+ \if#2"%
+ \let\dodoparseXMLarguments\dodoparseXMLargumentsD
+ \else
+ \let\dodoparseXMLarguments\dodoparseXMLargumentsS
+ \fi
+ \dodoparseXMLarguments}
+
+\def\gobbleuntilcolon#1:{#1}
+
+\def\getXMLNSSSS#1:#2\relax
+ {\def\!!stringa{#2}%
+ \ifx\!!stringa\empty \else
+ \XMLnamespacetrue
+ \edef\@@XMLname{\gobbleuntilcolon#2}%
+ \edef\@@XMLspac{#1}%
+ \fi}
+
+% ok ?
+%
+% \def\dodoparseXMLargumentsX#1=#2%
+% {\edef\@@XMLname{\the\XMLtoks#1}%
+% \@EA\getXMLNSSSS\@@XMLname:\relax
+% \XMLtoks\emptytoks
+% \if#2"%
+% \@EA\dodoparseXMLargumentsD
+% \else
+% \@EA\dodoparseXMLargumentsS
+% \fi}
+
+% Storing \type {#1} in a macro in order to minimize the
+% amount of data passed as argument does not improve
+% performance, so we keep the readable form.
+
+\def\dodoparseXMLargumentsD#1"{\dosetXMLargument{#1}}
+\def\dodoparseXMLargumentsS#1'{\dosetXMLargument{#1}}
+
+% the readable version
+%
+% \def\dosetXMLargument#1%
+% {\ifXMLnamespace
+% \ifx\@@XMLspac\@@XMLns
+% \checkXMLnamespaceattr{#1}% xmlns:\@@XMLname="#1"
+% \else
+% \dosetXMLattribute{#1}% some:\@@XMLname="#1"
+% \fi
+% \XMLnamespacefalse
+% \else\ifx\@@XMLname\@@XMLns
+% \checkXMLnamespaceattr{#1}% xmlns="#1"
+% \else
+% \dodosetXMLargument{#1}%
+% \fi\fi
+% \let\dodoparseXMLarguments\doparseXMLarguments
+% \dodoparseXMLarguments}
+%
+% the ugly alternative
+
+% \def\dosetXMLargument#1% ugly alternative
+% {\ifXMLnamespace
+% \XMLnamespacefalse
+% \ifx\@@XMLspac\@@XMLns
+% \@EAEAEA\checkXMLnamespaceattr % xmlns:\@@XMLname="#1"
+% \else
+% \@EAEAEA\dosetXMLattribute % some:\@@XMLname="#1"
+% \fi
+% \else\ifx\@@XMLname\@@XMLns
+% \@EAEAEA\checkXMLnamespaceattr % xmlns="#1"
+% \else
+% \@EAEAEA\dodosetXMLargument
+% \fi\fi{#1}%
+% \let\dodoparseXMLarguments\doparseXMLarguments
+% \dodoparseXMLarguments}
+
+\def\dosetXMLargument#1% ugly alternative
+ {\ifXMLnamespace
+ \XMLnamespacefalse
+ \ifx\@@XMLspac\@@XMLns
+ \@EAEAEA\checkXMLnamespaceattr % xmlns:\@@XMLname="#1"
+ \else
+ \@EAEAEA\dosetXMLattribute % some:\@@XMLname="#1"
+ \fi
+ \else\ifx\@@XMLname\@@XMLns
+ \@EAEAEA\checkXMLnamespaceattr % xmlns="#1"
+ \else
+ \@EAEAEA\dodosetXMLargument
+ \fi\fi{#1}%
+ \dodocopyXMLargument
+ \let\dodoparseXMLarguments\doparseXMLarguments
+ \dodoparseXMLarguments}
+
+\let\dodocopyXMLargument\relax
+
+% \def\dododocopyXMLargument
+% {\@EA\let\csname\@@XMLvariable:\the\numexpr(\XMLdepth+1):\@@XMLname\@EA\endcsname
+% \csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname}
+
+\def\dododocopyXMLargument
+ {\@EA\let\csname\@@XMLvariable:\the\numexpr\XMLdepth+\plusone\relax:\@@XMLname\@EA\endcsname
+ \csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname}
+
+\def\copyXMLargumentindeed
+ {\let\dodocopyXMLargument\dododocopyXMLargument
+ \let\copyXMLargumentindeed\relax}
+
+\def\dodosetXMLargumentA
+ {\@EA\def\csname\@@XMLvariable:\@@XMLclass:\@@XMLname\endcsname}
+
+% \def\dodosetXMLargumentB#1%
+% {\@EA\edef\csname\@@XMLmap:\@@XMLmapmap\endcsname
+% {\@EA\ifx\csname\@@XMLmap:\@@XMLmapmap\endcsname\empty\else
+% \csname\@@XMLmap:\@@XMLmapmap\endcsname,%
+% \fi
+% \@@XMLname=#1}}
+
+\def\dodosetXMLargumentB#1%
+ {\@EA\edef\csname\@@XMLmap:\@@XMLmapmap\endcsname
+ {\@EA\ifx\csname\@@XMLmap:\@@XMLmapmap\endcsname\empty\else
+ \csname\@@XMLmap:\@@XMLmapmap\endcsname,%
+ \fi
+ \@@XMLname={#1}}} % {} is needed for aa='bb,cc'
+
+\appendtoks
+ \resetXMLarguments{\rawXMLnamespace\rawXMLidentifier}%
+\to \everyXMLelement
+
+\def\resetXMLarguments#1%
+ {\ifcsname\@@XMLmap:#1\endcsname
+ \@EA\let\@EA\@@XMLmapmap\csname\@@XMLmap:#1\endcsname
+ \@EA\let\csname\@@XMLmap:\@@XMLmapmap\endcsname\empty
+ \fi}
+
+\def\theXMLarguments#1%
+ {\ifcsname\@@XMLmap:#1\endcsname\csname\@@XMLmap:#1\endcsname\fi}
+
+\def\doexpandXMLvalue#1#2%
+ {\ifcsname#2\endcsname
+ \bgroup
+ \enableXMLexpansion
+ \let\getXMLentity\expandedXMLentity
+ #1% simplify maps entities back to _ and alike
+ \expanded{\global\globalscratchtoks{\csname#2\endcsname}}%
+ \egroup
+ \@EA\edef\csname#2\endcsname{\the\globalscratchtoks}%
+ \fi}
+
+\def\expandXMLvalue {\doexpandXMLvalue\relax}
+\def\simplifyXMLvalue{\doexpandXMLvalue\XMLsimpleentitiestrue}
+
+\def\expandTEXpar #1#2{\expandXMLvalue{#1\interfaced{#2}}}
+\def\expandXMLpar #1#2{\expandXMLvalue{\@@XMLvariable:#1:#2}}
+\def\expandXMLarguments #1{\expandXMLvalue{\@@XMLmap:#1}}
+
+\def\simplifyTEXpar #1#2{\simplifyXMLvalue{#1\interfaced{#2}}}
+\def\simplifyXMLpar #1#2{\simplifyXMLvalue{\@@XMLvariable:#1:#2}}
+\def\simplifyXMLarguments#1{\simplifyXMLvalue{\@@XMLmap:#1}}
+
+%D \startbuffer[tex]
+%D \defineXMLsingular [fx:root]
+%D {\XMLNSpar{fx:root}{xml}{lang}{}
+%D \XMLpar{fx:root}{xml:lang}{}
+%D \starttabulate[||||]
+%D \HL
+%D \NC \bf mode \NC \bf call \NC \bf result \NC\NR
+%D \HL
+%D \NC 0\NC\asciistr{\XMLpar {fx:root} {crap} {}} \NC dirt \NC\NR
+%D \NC \NC\asciistr{\XMLpar {fx:root} {junk} {}} \NC \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {fx} {crap} {}}\NC \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {xml} {lang} {}}\NC \NC\NR
+%D \HL
+%D \NC 1\NC\asciistr{\XMLpar {fx:root} {crap} {}} \NC dirt \NC\NR
+%D \NC \NC\asciistr{\XMLpar {fx:root} {junk} {}} \NC junk \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {fx} {crap} {}}\NC \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {xml} {lang} {}}\NC \NC\NR
+%D \HL
+%D \NC 2\NC\asciistr{\XMLpar {fx:root} {crap} {}} \NC dirt \NC\NR
+%D \NC \NC\asciistr{\XMLpar {fx:root} {junk} {}} \NC junk \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {fx} {crap} {}}\NC \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {xml} {lang} {}}\NC en \NC\NR
+%D \HL
+%D \NC 3\NC\asciistr{\XMLpar {fx:root} {crap} {}} \NC dirt \NC\NR
+%D \NC \NC\asciistr{\XMLpar {fx:root} {junk} {}} \NC junk \NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {fx} {crap} {}}\NC rubish\NC\NR
+%D \NC \NC\asciistr{\XMLNSpar {fx:root} {xml} {lang} {}}\NC en \NC\NR
+%D \HL
+%D \stoptabulate}
+%D
+%D \remapXMLurlspace [http://www.w3.org/1999/XSL/Format] [fx]
+%D \stopbuffer
+%D
+%D \startbuffer[xml]
+%D <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
+%D fo:crap="rubish"
+%D fo:junk="junk"
+%D xml:lang="en"
+%D crap="dirt" />
+%D \stopbuffer
+%D
+%D \typebuffer[tex] \processTEXbuffer[tex]
+%D \typebuffer[xml] \processXMLbuffer[xml]
+
+%D The previous macros were the basic parser and their working
+%D is left to the imagination of the reader. These macros
+%D will be improved over time. We use rather low level
+%D definitions so that the mappings will run as fast as
+%D possible.
+
+\bgroup \catcode`<=\@@active
+
+\long\gdef\dododefineXMLsingular#1#2%
+ {\long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2}}
+
+\long\gdef\dododefineXMLcommand#1#2%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{#2}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2}}
+
+\long\gdef\dododefineXMLgrouped#1#2%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\groupedcommand{#2}\donothing\bgroup}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\egroup
+ \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing}
+
+\long\gdef\dododefineXMLargument#1#2% watch the {} around ##1
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLargument{#1}{#2}}
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2{}}}
+
+\long\gdef\redoXMLargument#1#2% potential optimization: globalnext
+ {\long\@EA\gdef\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>{#2{##1}}%
+ \next}
+
+\long\gdef\dododefineXMLignore#1%
+ {\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLignore{#1}}
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing}
+
+\long\gdef\redoXMLignore#1%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>{}%
+ \next}
+
+\long\gdef\dododefineXMLpickup#1#2#3%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLpickup{#1}{#2}{#3}}
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2#3}}
+
+\long\gdef\redoXMLpickup#1#2#3%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>{#2##1#3}%
+ \next}
+
+\long\gdef\dododefineXMLenvironment#1#2#3%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{#2}%
+ \long\@EA\def\csname\@@XMLelement:/#1\endcsname{#3}%
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2#3}}
+
+\long\gdef\dododefineXMLsave#1%
+ {\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname {\redoXMLsave{#1}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}}
+
+\long\gdef\dododefineXMLsavecontent#1#2%
+ {\long\@EA\def\csname\@@XMLdata:#1\endcsname{#2}%
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLsave{#1}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}}
+
+\long\gdef\redoXMLsave#1%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>%
+ {\long\@EA\def\csname\@@XMLdata:#1\endcsname{##1}}%
+ \next}
+
+\long\gdef\dododefineXMLgsave#1%
+ {\global\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLgsave{#1}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{\global\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}}
+
+\long\gdef\dododefineXMLgsavecontent#1#2%
+ {\long\@EA\gdef\csname\@@XMLdata:#1\endcsname{#2}%
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLgsave{#1}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{\global\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}}
+
+\long\gdef\redoXMLgsave#1%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>%
+ {\long\@EA\gdef\csname\@@XMLdata:#1\endcsname{##1}}%
+ \next}
+
+\long\gdef\dododefineXMLenvironmentsave#1#2#3%
+ {\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLenvironmentsave{#1}{#2}{#3}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2\@EA\let\csname\@@XMLdata:#1\endcsname\longempty#3}}
+
+% maybe \globalnext
+
+\long\gdef\redoXMLenvironmentsave#1#2#3%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>%
+ {#2\long\@EA\def\csname\@@XMLdata:#1\endcsname{##1}#3}%
+ \next}
+
+\long\gdef\dododefineXMLenvironmentgsave#1#2#3%
+ {\global\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname{\redoXMLenvironmentgsave{#1}{#2}{#3}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2\global\@EA\let\csname\@@XMLdata:#1\endcsname\longempty#3}}
+
+\long\gdef\redoXMLenvironmentgsave#1#2#3%
+ {\long\@EA\def\@EA\next\@EA##\@EA1\@EA<\@EA/\currentXMLelement>%
+ {#2\long\@EA\gdef\csname\@@XMLdata:#1\endcsname{##1}#3}%
+ \next}
+
+\long\gdef\dododefineXMLprocess#1%
+ {\@EA\let\csname\@@XMLelement:#1\endcsname\donothing
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing}
+
+\long\gdef\dododefineXMLnestedenvironment#1#2#3%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\getXMLgroupedenvironment{#1}{#2}{#3}}}
+
+\long\gdef\dododefineXMLnestedargument#1#2%
+ {\long\@EA\def\csname\@@XMLelement:#1\endcsname{\getXMLgroupedargument{#1}{#2}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2{}}}
+
+\long\gdef\dododefineXMLnestedsave#1%
+ {\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname {\getXMLgroupednestedsave{#1}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}}
+
+\long\unexpanded\gdef\getXMLgroupednestedsave#1%
+ {\collectXMLgroupedtrue
+ \long\def\dodogetgrouped{\long\@EA\edef\csname\@@XMLdata:#1\endcsname{\the\groupedtoks}}%
+ \getXMLgrouped{#1}}
+
+\long\gdef\dododefineXMLnestedenvironmentsave#1#2#3%
+ {\@EA\let\csname\@@XMLdata:#1\endcsname\longempty
+ \long\@EA\def\csname\@@XMLelement:#1\endcsname {\getXMLgroupednestedenvironmentsave{#1}{#2}{#3}}%
+ \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+ \long\@EA\def\csname\@@XMLelement:#1/\endcsname{#2\@EA\let\csname\@@XMLdata:#1\endcsname\longempty#3}}
+
+\long\unexpanded\gdef\getXMLgroupednestedenvironmentsave#1#2#3%
+ {\collectXMLgroupedtrue
+ \long\def\dodogetgrouped{#2\long\@EA\edef\csname\@@XMLdata:#1\endcsname{\the\groupedtoks}#3}%
+ \getXMLgrouped{#1}}
+
+\egroup
+
+%D The high level definition macros.
+
+\def\defineXMLsingular {\dotripleempty\dodefineXMLsingular}
+\def\defineXMLcommand {\dotripleempty\dodefineXMLcommand}
+\def\defineXMLgrouped {\dotripleempty\dodefineXMLgrouped}
+\def\defineXMLargument {\dotripleempty\dodefineXMLargument}
+\def\defineXMLignore {\dotripleempty\dodefineXMLignore}
+\def\defineXMLpickup {\dotripleempty\dodefineXMLpickup}
+\def\defineXMLenvironment {\dotripleempty\dodefineXMLenvironment}
+\def\defineXMLsave {\dotripleempty\dodefineXMLsave}
+\def\defineXMLsavecontent {\dotripleempty\dodefineXMLsavecontent}
+\def\defineXMLgsave {\dotripleempty\dodefineXMLgsave}
+\def\defineXMLgsavecontent {\dotripleempty\dodefineXMLgsavecontent}
+\def\defineXMLenvironmentsave {\dotripleempty\dodefineXMLenvironmentsave}
+\def\defineXMLenvironmentgsave {\dotripleempty\dodefineXMLenvironmentgsave}
+\def\defineXMLprocess {\dotripleempty\dodefineXMLprocess}
+\def\defineXMLnested {\dotripleempty\dodefineXMLnestedenvironment}
+\def\defineXMLnestedenvironment {\dotripleempty\dodefineXMLnestedenvironment}
+\def\defineXMLnestedargument {\dotripleempty\dodefineXMLnestedargument}
+\def\defineXMLnestedsave {\dotripleempty\dodefineXMLnestedsave}
+\def\defineXMLnestedenvironmentsave{\dotripleempty\dodefineXMLnestedenvironmentsave}
+
+%D We can nill definitions with:
+
+\def\resetXMLelement[#1]{\dododefineXMLprocess{#1}}
+
+%D This is equivalent to:
+%D
+%D \starttyping
+%D \def\resetXMLelement[#1]% handy in case only singular
+%D {\@EA\let\csname\@@XMLelement:#1\endcsname \donothing
+%D \@EA\let\csname\@@XMLelement:/#1\endcsname\donothing
+%D \@EA\let\csname\@@XMLelement:#1/\endcsname\donothing}
+%D \stoptyping
+
+% push is (not yet) a real push, so:
+
+\def\defineXMLpush {\dotripleempty\dodefineXMLsave}
+\def\defineXMLenvironmentpush{\dotripleempty\dodefineXMLenvironmentsave}
+
+% goes for all types
+
+\long\def\dodefineXMLsingular[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLsingular{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLcommand[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLcommand{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLgrouped[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLgrouped{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLargument[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLargument{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLignore[#1][#2][#3]%
+ {\defineXMLmethod\dododefineXMLignore{#1}{#2}{#3}{}{}}
+
+\long\def\dodefineXMLpickup[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLpickup{#1}{#2}{#3}{#4}{#5}}
+
+\long\def\dodefineXMLenvironment[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLenvironment{#1}{#2}{#3}{#4}{#5}}
+
+\long\def\dodefineXMLsave[#1][#2][#3]%
+ {\defineXMLmethod\dododefineXMLsave{#1}{#2}{#3}{}{}}
+
+\long\def\dodefineXMLsavecontent[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLsavecontent{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLgsave[#1][#2][#3]%
+ {\defineXMLmethod\dododefineXMLgsave{#1}{#2}{#3}{}{}}
+
+\long\def\dodefineXMLgsavecontent[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLgsavecontent{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLenvironmentsave[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLenvironmentsave{#1}{#2}{#3}{#4}{#5}}
+
+\long\def\dodefineXMLenvironmentgsave[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLenvironmentgsave{#1}{#2}{#3}{#4}{#5}}
+
+\long\def\dodefineXMLprocess[#1][#2][#3]%
+ {\defineXMLmethod\dododefineXMLprocess{#1}{#2}{#3}{}{}}
+
+\long\def\dodefineXMLnestedenvironment[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLnestedenvironment{#1}{#2}{#3}{#4}{#5}}
+
+\long\def\dodefineXMLnestedargument[#1][#2][#3]#4%
+ {\defineXMLmethod\dododefineXMLnestedargument{#1}{#2}{#3}{#4}{}}
+
+\long\def\dodefineXMLnestedsave[#1][#2][#3]%
+ {\defineXMLmethod\dododefineXMLnestedsave{#1}{#2}{#3}{}{}}
+
+\long\def\dodefineXMLnestedenvironmentsave[#1][#2][#3]#4#5%
+ {\defineXMLmethod\dododefineXMLnestedenvironmentsave{#1}{#2}{#3}{#4}{#5}}
+
+% [key=val] => \presetXMLarguments{element} => default key/vals
+% [blabla] => \theXMLarguments{blabla} => user key/vals
+% [blabla] [key=val] => \presetXMLarguments{element} => default key/vals
+% \theXMLarguments{blabla} => user key/vals
+
+% command element [map] [parlst] begin end
+
+\long\def\defineXMLmethod#1#2#3#4#5#6%
+ {\ifsecondargument
+ \setXMLarguments{#2}{#3}{#4}%
+ \else
+ \resetXMLarguments{#2}% new
+ \fi
+ #1{#2}{#5}{#6}}
+
+%D Arguments (attributes) \unknown
+
+% \long\def\setXMLarguments#1#2#3% element [tag] settings
+% {\doifassignmentelse{#2}
+% {\long\setvalue{\@@XMLpars:#1}{\getrawparameters[\@@XMLvariable:#1:][#2]}}
+% {\long\setvalue{\@@XMLmap :#1}{#2}% later we can init vars by this name
+% \doifsomething{#3}{\long\setvalue{\@@XMLpars:#1}{\getrawparameters[#2][#3]}}}}
+
+\long\def\setXMLarguments#1#2#3% element [tag] settings
+ {\doifassignmentelse{#2}
+ {\letbeundefined{\@@XMLmap:#1}%
+ \long\setvalue{\@@XMLpars:#1}{\getrawparameters[\@@XMLvariable:#1:][#2]}}
+ {\long\setvalue{\@@XMLmap:#1}{#2}% later we can init vars by this name
+ \doifsomething{#3}{\long\setvalue{\@@XMLpars:#1}{\getrawparameters[#2][#3]}}}}
+
+\def\presetXMLarguments#1%
+ {\csname\@@XMLpars:\rawXMLnamespace#1\endcsname} % == \getvalue{}
+
+\prependtoks
+ \presetXMLarguments\rawXMLidentifier
+\to \everyXMLelement
+
+%D We now overload the previously defined argument setter by one
+%D that is faster when definitions are surrounded by
+%D
+%D \starttyping
+%D \startXMLcompiling ... \stopXMLcompiling
+%D \stoptyping
+%D
+%D This method is twice as fast on (for instance) 100K calls to
+%D an empty element with 10 arguments.
+
+% \long\def\prepareXMLargument#1#2#3%
+% {\scratchtoks\expandafter{\the\scratchtoks\@EA\def\csname#1#2\endcsname{#3}}}
+
+% \long\def\prepareXMLargument#1#2#3%
+% {\scratchtoks\@EA\@EA\@EA{\@EA\the\@EA\scratchtoks\@EA\def\csname\@@XMLvariable:#1:#2\endcsname{#3}}}
+
+% \let\@@globalprefix\empty
+
+% \long\def\prepareXMLargument#1#2#3%
+% {\expanded{\scratchtoks
+% {\the\scratchtoks
+% \def\@EA\noexpand\csname\@@XMLvariable:#1:#2\endcsname{#3}%
+% \noexpand\@EA\let\noexpand\csname\@@XMLvariable:\noexpand\the\numexpr(\XMLdepth+1):#2\endcsname
+% \@EA\noexpand\csname\@@XMLvariable:#1:#2\endcsname}}}
+
+\long\def\prepareXMLargument#1#2#3%
+ {\expanded{\scratchtoks
+ {\the\scratchtoks
+ \def\@EA\noexpand\csname\@@XMLvariable:#1:#2\endcsname{#3}%
+ \noexpand\@EA\let\noexpand\csname\@@XMLvariable:\noexpand\the\numexpr\XMLdepth+\plusone\relax:#2\endcsname
+ \@EA\noexpand\csname\@@XMLvariable:#1:#2\endcsname}}}
+
+\long\def\setXMLargumentsN#1#2#3% element [tag] settings
+ {\doifassignmentelse{#2}
+ {\letbeundefined{\@@XMLmap:#1}%
+ \long\setvalue{\@@XMLpars:#1}{\getrawparameters[\@@XMLvariable:#1:][#2]}}
+ {\long\setvalue{\@@XMLmap:#1}{#2}% later we can init vars by this name
+ \doifsomething{#3}{\long\setvalue{\@@XMLpars:#1}{\getrawparameters[#2][#3]}}}}
+
+\long\def\setXMLargumentsP#1#2#3% element settings empty (we cannot test for assignment)
+ {\letbeundefined{\@@XMLmap:#1}%
+ \bgroup
+ %def\XMLinheritance{\noexpand\XMLinheritance}
+ \def\XMLop##1{\noexpand\XMLpar{#1}{##1}{}}%
+ \def\XMLpar{\noexpand\XMLpar}%
+ \def\XMLanc{\noexpand\XMLanc}%
+ \def\XMLinh{\noexpand\XMLinh}%
+ \xdef\!!XMLattr{[#1][#2]}%
+ \scratchtoks\emptytoks
+ \@EA\dogetparameters\@EA\prepareXMLargument\!!XMLattr
+ \xdef\globalnext{\the\scratchtoks}%
+ \egroup
+ \letvalue{\@@XMLpars:#1}\globalnext
+ \globallet\globalnext\relax}
+
+\def\defineXMLattributeset{\dodoubleargument\dodefineXMLattributeset}
+\def\extendXMLattributeset{\dodoubleargument\doextendXMLattributeset}
+
+\def\dodefineXMLattributeset[#1][#2]{\setvalue {\@@XMLpars::#1}{#2}}
+\def\doextendXMLattributeset[#1][#2]{\appendvalue{\@@XMLpars::#1}{,#2}}
+
+\def\XMLattributeset #1{\executeifdefined{\@@XMLpars::#1}\empty}
+%def\XMLinheritance #1{\executeifdefined{\@@XMLpars:#1}\empty}
+\def\showXMLattributes#1{\showvalue{\@@XMLpars:#1}}
+
+\chardef\@@precompile\zerocount
+
+\def\setXMLarguments
+ {\ifcase\@@precompile
+ \expandafter\setXMLargumentsN
+ \else
+ \expandafter\setXMLargumentsP
+ \fi}
+
+\def\startXMLcompiling
+ {\dosingleargument\dostartXMLcompiling}
+
+% \def\dostartXMLcompiling[#1]%
+% {\iffirstargument
+% \copyXMLargumentindeed % when needed, from now on -)
+% \def\@@globalprefix{#1}%
+% \fi
+% \chardef\@@precompile\plusone}
+
+\def\dostartXMLcompiling[#1]%
+ {\doif{#1}\v!inherit
+ \copyXMLargumentindeed
+ \chardef\@@precompile\plusone}
+
+\def\stopXMLcompiling
+ {\chardef\@@precompile\zerocount} % no \let\@@globalprefix\empty
+
+%D Interesting what kind of things are needed \unknown
+
+\appendtoks
+ \disablelanguagespecifics
+\to \everyenableXML
+
+\long\def\longempty{}
+\long\def\longspace{ }
+
+% \def\doifelseXMLdata#1% always empty at start [gets a long assignment]
+% {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty
+% \expandafter\secondoftwoarguments
+% \else
+% \expandafter\firstoftwoarguments
+% \fi}
+%
+% \def\doifXMLdata#1% always empty at start [gets a long assignment]
+% {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty
+% \expandafter\gobbleoneargument
+% \else
+% \expandafter\firstofoneargument
+% \fi}
+%
+% \let\doifXMLdataelse\doifelseXMLdata
+
+\def\doifelseXMLdata#1% always empty at start [gets a long assignment]
+ {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty
+ \expandafter\secondoftwoarguments
+ \else
+ \expandafter\firstoftwoarguments
+ \fi}
+
+\def\doifXMLdata#1% always empty at start [gets a long assignment]
+ {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty
+ \expandafter\gobbleoneargument
+ \else
+ \expandafter\firstofoneargument
+ \fi}
+
+\let\doifXMLdataelse\doifelseXMLdata
+
+\def\doifelseXMLempty#1%
+ {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty
+ \expandafter\firstoftwoarguments
+ \else\@EA\ifx\csname\@@XMLdata:#1\endcsname\longspace
+ \expandthree\firstoftwoarguments
+ \else
+ \expandthree\secondoftwoarguments
+ \fi\fi}
+
+% test case:
+%
+% \defineXMLenvironmentsave[test]
+% {}
+% {\message{[\XMLflush{test}]}
+% \message{\doifelseXMLdata {test}{}{no }data}
+% \message{/}
+% \message{\doifelseXMLempty{test}{}{not }empty}
+% \wait}
+%
+% \startXMLdata
+% <test>xxx</test>
+% <test></test>
+% <test> </test>
+% <test> </test>
+% <test> </test>
+% <test> x </test>
+% \stopXMLdata
+
+% \def\XMLflush#1% one level
+% {\csname\@@XMLdata:#1\endcsname}
+
+% evt meer van dit gedoe en alle \longempty's vervangen
+
+\def\XMLflush#1% one level
+ {\csname\ifcsname\@@XMLdata:#1\endcsname\@@XMLdata:#1\else\s!empty\fi\endcsname}
+
+%D \starttyping
+%D \defineXMLenvironmentsave[formula]{}{$\XMLtexdata{formula}$}
+%D
+%D \startXMLdata
+%D <formula>t+3+x+t\neq m\alpha\frac\theta\hbar</formula>
+%D \stopXMLdata
+%D \stoptyping
+
+\def\XMLtexdata#1%
+ {\begingroup
+ \disableXML
+ \scantokens\@EA\@EA\@EA{\csname\@@XMLdata:#1\endcsname}%
+ \endgroup}
+
+\def\XMLflushdata#1% see m-steps for usage
+ {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty\else
+ %\@EAEAEA\XMLdata\@EA\@EA\@EA{\csname\@@XMLdata:#1\endcsname}%
+ \@EA\XMLdata\csname\@@XMLdata:#1\endcsname
+ \fi}
+
+\def\XMLflushasis#1%
+ {\detokenize\@EAEAEA{\csname\@@XMLdata:#1\endcsname}}
+
+\let\XMLpop \XMLflush
+\let\XMLpopdata\XMLflushdata
+
+\def\XMLappend#1#2% let to empty expands to nothing -)
+ {\long\@EA\edef\csname\@@XMLdata:#1\endcsname{\csname\@@XMLdata:#1\endcsname#2}}
+
+\def\XMLprepend#1#2% let to empty expands to nothing -)
+ {\long\@EA\edef\csname\@@XMLdata:#1\endcsname{#2\csname\@@XMLdata:#1\endcsname}}
+
+\def\XMLerase#1%
+ {\@EA\let\csname\@@XMLdata:#1\endcsname\longempty}
+
+\def\XMLassign#1%
+ {\long\@EA\def\csname\@@XMLdata:#1\endcsname}
+
+\def\dontparseXMLelement#1>{}
+
+\def\simplifyXMLelements{\let\parseXMLelement\dontparseXMLelement}
+
+\def\defXMLstring#1#2%
+ {\bgroup
+ \enableXMLexpansion
+ \simplifyXMLelements
+ \let\getXMLentity\firstofoneargument
+ \XMLrawentitiestrue
+ \chardef\utfunicodetracer7% new
+ \xdef\@@XML@@string{\csname\@@XMLdata:#2\endcsname}%
+ \egroup
+ \convertcommand\@@XML@@string\to#1}
+
+\def\defXMLclean#1#2%
+ {\bgroup
+ \enableXMLexpansion
+ \simplifyXMLelements
+ \simplifyXMLentities
+ \chardef\utfunicodetracer7% new
+ \let\getXMLentity\expandedXMLentity % should this go in \simplify ?
+ \xdef\@@XML@@string{\csname\@@XMLdata:#2\endcsname}%
+ \egroup
+ \convertcommand\@@XML@@string\to#1}
+
+\def\XMLshow#1%
+ {\showvalue{\@@XMLdata:#1}}
+
+\def\XMLunspace#1% kan sneller
+ {\@EA\ifx\csname\@@XMLdata:#1\endcsname\longempty\else
+ \long\@EA\edef\csname\@@XMLdata:#1\endcsname
+ {\@EAEAEA\dounspaced\csname\@@XMLdata:#1\endcsname\end}%
+ \fi}
+
+\chardef\asciispacecode=32
+
+\def\defXMLlowerclean#1% lowercase ! evt tzt upper too
+ {\bgroup
+ \lccode`\#\asciispacecode
+ \lccode`\$\asciispacecode
+ \lccode`\%\asciispacecode
+ \lccode`\\\asciispacecode
+ \lccode`\^\asciispacecode
+ \lccode`\_\asciispacecode
+ \lccode`\{\asciispacecode
+ \lccode`\}\asciispacecode
+ \lccode`\|\asciispacecode
+ \lccode`\~\asciispacecode
+ \@EA\lowercase\@EA{\@EA\xdef\@EA#1\@EA{#1}}%
+ \egroup}
+
+\def\processXMLparelse#1#2#3#4%
+ {\processaction
+ [\XMLpar{#1}{#2}{}]
+ [#3,\s!unknown=>{#4},\s!default={#4}]}
+
+%D We can pick up key|/|value pairs, but we still need a way
+%D to process these.
+
+% bugged
+%
+% \def\mapXMLvalue#1#2#3% td align center -> middle
+% {\setvalue{\@@XMLvalue:#1:#2:#3}}
+
+\def\mapXMLvalue#1#2#3% td:align center -> middle
+ {\setvalue{\@@XMLvalue:#1:#2}{#3}} % keep #3 to grab spaces
+
+\def\XMLvar#1#2#3% td align center
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \XMLval{#1}{#2}{\csname\@@XMLvariable:#1:#2\endcsname}%
+ \else
+ \XMLval{#1}{#2}{#3}% evt inline code
+ \fi}
+
+% \def\XMLvar#1#2#3% td align center
+% {\XMLval{#1}{#2}{\ifcsname\@@XMLvariable:#1:#2\endcsname
+% \csname\@@XMLvariable:#1:#2\endcsname\else#3\fi}}
+
+% \def\XMLval#1#2#3% td:align value default
+% {\ifcsname\@@XMLvalue:#1:#2\endcsname
+% \csname\@@XMLvalue:#1:#2\endcsname
+% \else
+% #3%
+% \fi}
+%
+% The next one permits commands instead of strings in #3
+
+\def\XMLval#1#2% #1=td:align #2=value #3=default
+ {\ifcsname\@@XMLvalue:#1:#2\endcsname
+ \@EA\firstoftwoarguments
+ \else
+ \@EA\secondoftwoarguments
+ \fi
+ {\csname\@@XMLvalue:#1:#2\endcsname}}
+
+\def\XMLpar#1#2#3%
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \csname\@@XMLvariable:#1:#2\endcsname
+ \else
+ #3%
+ \fi}
+
+\def\XMLNSpar#1#2#3#4% element namespace name default
+ {\ifcsname\@@XMLvariable:#1:#2:#3\endcsname
+ \csname\@@XMLvariable:#1:#2:#3\endcsname
+ \else
+ #4%
+ \fi}
+
+% \def\setXMLpar#1#2%
+% {\@EA\def\csname\@@XMLvariable:#1:#2\endcsname}
+
+\def\letXMLpar #1#2{\@EA \let\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLpar #1#2{\@EA \def\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLepar#1#2{\@EA\edef\csname\@@XMLvariable:#1:#2\endcsname}
+
+% ancestor arguments:
+%
+% \defineXMLenvironment
+% [fo:root]
+% [test=unset]
+% {\beginXMLelement}
+% {\endXMLelement}
+%
+% \defineXMLenvironment
+% [fo:block-container]
+% [test=oeps]
+% {\beginXMLelement}
+% {\endXMLelement}
+%
+% \defineXMLenvironment
+% [fo:block]
+% {\beginXMLelement
+% \begingroup}
+% {\endgroup
+% \XMLanc{test}{}
+% \endXMLelement}
+%
+% \startXMLdata
+% <fo:root>
+% <fo:block-container test='first'><fo:block test='second'>second:</fo:block></fo:block-container>
+% <fo:block>unset:</fo:block>
+% <fo:block test='outer'><fo:block test='nested'><fo:block>deep:</fo:block>nested:</fo:block>outer:</fo:block>
+% <fo:block test='last'>last:</fo:block>
+% </fo:root>
+% \stopXMLdata
+%
+% \startXMLdata
+% <fo:root>
+% <fo:block-container test='first'><fo:block>second:</fo:block></fo:block-container>
+% <fo:block>unset:</fo:block>
+% <fo:block test='second'><fo:block><fo:block>deep:</fo:block>nested:</fo:block>outer:</fo:block>
+% <fo:block>last:</fo:block>
+% </fo:root>
+% \stopXMLdata
+%
+% \startXMLdata
+% <fo:root>
+% <fo:block-container test='first'><fo:block>second:</fo:block></fo:block-container>
+% <fo:block>unset:</fo:block>
+% <fo:block><fo:block><fo:block>deep:</fo:block>nested:</fo:block>outer:</fo:block>
+% <fo:block>last:</fo:block>
+% </fo:root>
+% \stopXMLdata
+
+% dit werkt alleen ok in niet <a> <b> <b> ... situaties omdat anders
+% de laatste b de attributen van de vorige heeft:
+
+\def\XMLanc#1%
+ {\ifcsname\@@XMLvariable:\currentXMLelement:#1\endcsname % \ownXMLelement
+ \csname\@@XMLvariable:\currentXMLelement:#1\endcsname % \ownXMLelement
+ \@EA\gobblethreearguments
+ \else
+ \@EA\pXMLanc
+ \fi\XMLdepth{#1}}
+
+% \def\pXMLanc#1%
+% {\@EA\ppXMLanc\@EA{\the\numexpr(#1-\plusone)}}
+
+\def\pXMLanc#1%
+ {\@EA\ppXMLanc\@EA{\the\numexpr#1-\plusone\relax}}
+
+\def\ppXMLanc#1#2#3%
+ {\ifcsname\@@XMLdepth:#1\endcsname % is er altijd dus redundant
+ \ifcsname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname
+ \csname\@@XMLvariable:\csname\@@XMLdepth:#1\endcsname:#2\endcsname
+ \@EAEAEA\gobblethreearguments
+ \else
+ \@EAEAEA\pppXMLanc
+ \fi
+ \else
+ \@EA\pppXMLanc
+ \fi{#1}{#2}{#3}}
+
+\def\pppXMLanc#1%
+ {\ifnum#1>\zerocount
+ \@EA\pXMLanc
+ \else
+ \@EA\thirdofthreearguments
+ \fi{#1}}
+
+%D Experimental (not sure if this will stay):
+%D
+%D \starttyping
+%D \startdefineXMLhandlers[one,two]
+%D
+%D \defineXMLenvironment[a=b,c=\XMLop{a}]
+%D {}{}
+%D
+%D \stopdefineXMLhandlers
+%D \stoptyping
+
+\long\def\startdefineXMLhandlers
+ {\bgroup\catcode`\^^M=\@@space
+ \dodoubleempty\dostartdefineXMLhandlers}
+
+\long\def\dostartdefineXMLhandlers[#1][#2]#3#4\stopdefineXMLhandlers % #2 is dummy
+ {\egroup
+ \long\def\dodefineXMLhandlers##1{#3[##1]#4}%
+ \processcommalist[#1]\dodefineXMLhandlers}
+
+\let\currentXMLhandler\s!unknown
+
+% \long\def\dostartdefineXMLhandlers[#1][#2]#3#4[#5]#6\stopdefineXMLhandlers % #2 is dummy
+% {\egroup
+% \pushmacro\XMLop
+% \pushmacro\XMLpar
+% \pushmacro\currentXMLhandler
+% \long\def\dodefineXMLhandlers##1%
+% {\edef\currentXMLhandler{##1}%
+% \def\XMLop####1{\noexpand\XMLpar{##1}{####1}{}}%
+% \def\XMLpar{\noexpand\XMLpar}%
+% \def\XMLanc{\noexpand\XMLanc}%
+% \edef\!!stringa{[##1][#5]}%
+% \expandafter#3\!!stringa#6}%
+% \processcommalist[#1]\dodefineXMLhandlers
+% \popmacro\currentXMLhandler
+% \popmacro\XMLpar
+% \popmacro\XMLop}
+
+\long\def\dostartdefineXMLhandlers[#1][#2]#3#4[#5]#6\stopdefineXMLhandlers % #2 is dummy
+ {\egroup
+ \long\def\dodefineXMLhandlers##1%
+ {\bgroup
+ \edef\currentXMLhandler{##1}%
+ \def\XMLop####1{\noexpand\XMLpar{##1}{####1}{}}%
+ \def\XMLpar{\noexpand\XMLpar}%
+ \def\XMLanc{\noexpand\XMLanc}%
+ \def\XMLinh{\noexpand\XMLinh}%
+ \xdef\!!XMLattr{[##1][#5]}%
+ \egroup
+ \expandafter#3\!!XMLattr#6}%
+ \processcommalist[#1]\dodefineXMLhandlers}
+
+\def\XMLpav#1#2#3#4%
+ {\XMLval{#1}{\XMLpar{#2}{#3}{}}{#4}}
+
+%D A few weird ones:
+
+\def\TEXpar#1#2%
+ {\csname#1\interfaced{#2}\endcsname}
+
+\let\texXMLpar\TEXpar % soon obsolete
+
+\let\XMLtex\TEXpar
+
+% handy one
+
+\def\XMLtyp#1#2#3%
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \@EA\convertcommand\csname\@@XMLvariable:#1:#2\endcsname\to\ascii
+ \else
+ \convertargument#3\to\ascii
+ \fi
+ \ascii}
+
+\defineXMLsingular [begingroup] {\begingroup}
+\defineXMLsingular [endgroup] {\endgroup}
+\defineXMLsingular [gobblespacetokens] {\gobblespacetokens}
+\defineXMLsingular [disableXML] {\disableXML}
+
+\long\def\XMLstr#1%
+ {{\enableXML\scantokens{#1}\unskip}}
+
+\long\def\XMLstr#1% test, does not work
+ {\ifprocessingXML
+ % \begingroup\enableXML\scantokens{#1<endgroup/><gobblespacetokens/>}%
+ \scantokens{#1<gobblespacetokens/>}%
+ \else
+ \begingroup\enableXML\scantokens{#1<endgroup/>\ignorespaces}%
+ \fi}
+
+\def\XMLgetvariable#1#2% hooks into generic \getvariable and setvariables
+ {\expanded{\XMLstr{\getvariable{#1}{#2}}}}
+
+\long\def\XMLstrpar#1#2#3% test
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \scantokens\@EAEAEA{\@EA\begingroup\@EA\enableXML
+ \csname\@@XMLvariable:#1:#2\endcsname<endgroup/>}%
+ \else
+ \scantokens{\begingroup\enableXML#3<endgroup/>}%
+ \fi}
+
+\def\doifXMLvarelse#1#2% geen etex, \relax too
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \expandafter\ifx\csname\@@XMLvariable:#1:#2\endcsname\empty
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\def\doifXMLvar#1#2% geen etex, \relax too
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ \expandafter\ifx\csname\@@XMLvariable:#1:#2\endcsname\empty
+ \@EAEAEA\gobbleoneargument
+ \else
+ \@EAEAEA\firstofoneargument
+ \fi
+ \else
+ \@EA\gobbleoneargument
+ \fi}
+
+\def\doifXMLvalelse#1#2% geen etex, \relax too
+ {\ifcsname\@@XMLvalue:#1:#2\endcsname
+ \expandafter\ifx\csname\@@XMLvalue:#1:#2\endcsname\empty
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\let\doifXMLparelse\doifXMLvarelse
+\let\doifXMLpar \doifXMLvar
+
+\bgroup \catcode`<=\@@active
+
+\long\gdef\ignoreuntilXMLelement#1<{<}
+\long\gdef\grabuntilXMLelement #1<\to#2{\def#2{#1}<}
+
+\egroup
+
+%D Saves tokens and typing.
+
+\def\XMLownvar {\XMLvar {\rawXMLnamespace\rawXMLidentifier}}
+\def\XMLownval {\XMLval {\rawXMLnamespace\rawXMLidentifier}}
+\def\XMLownpar {\XMLpar {\rawXMLnamespace\rawXMLidentifier}}
+\def\XMLownstrpar {\XMLstrpar {\rawXMLnamespace\rawXMLidentifier}}
+\def\doifXMLownvarelse{\doifXMLvarelse{\rawXMLnamespace\rawXMLidentifier}}
+\def\doifXMLownvalelse{\doifXMLvalelse{\rawXMLnamespace\rawXMLidentifier}}
+\def\doifXMLownparelse{\doifXMLparelse{\rawXMLnamespace\rawXMLidentifier}}
+
+\def\letXMLpar #1#2{\@EA \let\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLpar #1#2{\@EA \def\csname\@@XMLvariable:#1:#2\endcsname}
+\def\setXMLepar#1#2{\@EA\edef\csname\@@XMLvariable:#1:#2\endcsname}
+
+\def\ownXMLelement{\rawXMLnamespace\rawXMLidentifier}
+
+\def\XMLop#1% ownpar
+ {\csname\ifcsname\@@XMLvariable:\ownXMLelement:#1\endcsname
+ \@@XMLvariable:\ownXMLelement:#1\else\s!empty
+ \fi\endcsname}
+
+\def\XMLtp#1% texpar
+ {\csname\ifcsname\@@XMLmapmap\interfaced{#1}\endcsname
+ \@@XMLmapmap\interfaced{#1}\else\s!empty
+ \fi\endcsname}
+
+\def\doifelseXMLop#1{\doifelse{\XMLop{#1}}}
+\def\doifXMLop #1{\doif {\XMLop{#1}}}
+\def\doifnotXMLop #1{\doifnot {\XMLop{#1}}}
+
+\def\doifelsenothingXMLop#1{\doifelsenothing{\XMLop{#1}}}
+\def\doifsomethingXMLop #1{\doifsomething {\XMLop{#1}}}
+\def\doifnothingXMLop #1{\doifnothing {\XMLop{#1}}}
+
+\def\doifelseXMLtp#1{\doifelse{\XMLtp{#1}}}
+\def\doifXMLtp #1{\doif {\XMLtp{#1}}}
+\def\doifnotXMLtp #1{\doifnot {\XMLtp{#1}}}
+
+\def\doifelsenothingXMLtp#1{\doifelsenothing{\XMLtp{#1}}}
+\def\doifsomethingXMLtp #1{\doifsomething {\XMLtp{#1}}}
+\def\doifnothingXMLtp #1{\doifnothing {\XMLtp{#1}}}
+
+\def\XMLflushself{\csname\@@XMLdata:\ownXMLelement\endcsname}
+
+\def\showXMLdata#1{\showvalue{\@@XMLdata:#1}}
+
+\def\XMLta {\theXMLarguments\@@XMLmapmap}
+\def\getXMLta {\expanded{\getparameters[\@@XMLmapmap][\XMLta]}}
+\def\expandXMLta{\expandXMLarguments\@@XMLmapmap}
+\def\expandXMLtp{\expandTEXpar\@@XMLmapmap} % #1
+
+\def\getXMLparameters[#1]% faster than \rawgetparameters[#1][\theXMLar..]
+ {\ifcsname\@@XMLmap:#1\endcsname
+ \expanded{\rawgetparameters[#1][\csname\@@XMLmap:#1\endcsname]}%
+ \fi}
+
+\def\defXMLop#1#2{\@EA\let\@EA#1\csname\@@XMLvariable:\ownXMLelement:#2\endcsname}
+\def\defXMLtp#1#2{\@EA\let\@EA#1\csname\@@XMLmapmap\interfaced{#2}\endcsname}
+
+%D ...
+
+\def\protectXMLdata
+ {\catcode`\^^I\@@space
+ \catcode`\^^M\@@space
+ \catcode`\^^L\@@space
+ \catcode`\#\@@other}
+
+\long\def\startXMLcode
+ {\begingroup
+ \protectXMLdata
+ \dostartXMLcode}
+
+\long\def\dostartXMLcode[#1] #2 \stopXMLcode
+ {\@EA\gdef\csname\@@XMLcode:#1\endcsname{\startXMLdata#2\stopXMLdata}%
+ \endgroup}
+
+\def\getXMLcode[#1]% \expandXMLcode
+ {\csname\@@XMLcode:#1\endcsname}
+
+% \long\def\startXMLdata#1\stopXMLdata%
+% {\begingroup\enableXML\scantokens{#1}\endgroup}
+%
+% \defineXMLentity[tex-backslash] {\catchXMLpar}
+%
+% \def\catchXMLpar#1#2#3
+% {\if#1p\if#2a\if#3r\ifmmode\else\endgraf\fi
+% \else\texescape\fi\else\texescape\fi\else\texescape\fi}
+
+\long\def\startXMLdata
+ {\begingroup
+ \protectXMLdata
+ \dostartXMLdata}
+
+\long\def\dostartXMLdata#1\stopXMLdata % evt \everyeof{}
+ {\enableXML\scantokens{#1<gobblespacetokens/>}%
+ \endgroup
+ \ifhmode\unskip\unskip\fi}
+
+% suboptimal:
+%
+% \unexpanded\def\XMLdata#1% % \unexpanded added 22/5/2001
+% {\begingroup
+% \enableXML\scantokens{#1}\ifhmode\unskip\unskip\fi
+% \endgroup}
+%
+% better but does not work in tables:
+%
+% \unexpanded\def\XMLdata#1% % grouping changed 20/5/2001
+% {\scantokens{\begingroup\enableXML#1<endgroup/>\gobblespacetokens}}
+%
+% currently:
+
+\unexpanded\def\XMLdata % # safe
+ {\begingroup
+ \protectXMLdata
+ \doXMLdata}
+
+\def\doXMLdata#1%
+ {\enableXML
+ \scantokens{#1<gobblespacetokens/>}%
+ \endgroup}
+
+%D
+
+\def\bXMLs{\ifignoreXMLspaces\ignorespaces\fi}
+\def\eXMLs{\ifignoreXMLspaces\ifhmode\unskip\fi\fi}
+
+\protect
+
+% \defineXMLcommand{placeindex/}
+% {\placeindex[criterium=all]}
+%
+% \defineXMLargument{index}
+% {\index[\XMLvar{index}{key}{}]}
+
+%D Here we implement the handling of preformatted code.
+
+\unprotect
+
+\def\startXMLpreformatted#1%
+ {\startpacked
+ #1%
+ \fixedXMLfonttrue
+ \obeylines
+ \obeyspaces
+ \setbox\scratchbox=\hbox{x}%
+ \edef\obeyedspace{\noindent\noexpand\kern\the\wd\scratchbox}}
+
+\def\stopXMLpreformatted#1%
+ {\stoppacked}
+
+%D
+
+\def\XMLinput{\enableXML\input} \global\let\inputXML\XMLinput
+
+% options
+
+\def\processXMLfile #1{\enableXML\processfile{#1}}
+\def\processXMLfilegrouped#1{{\enableXML\processfile{#1}\relax\ifmmode\else\par\fi}}
+
+%D \type
+%D {processXMLbuffer}
+%D
+%D For illustrative purposes, we need to be able to reuse
+%D definitions, which is why we implement a buffer processor
+%D here. The macro \type {\processXMLbuffer} behaves like
+%D any buffer processor.
+
+\def\processXMLbuffer
+ {\dosingleempty\doprocessXMLbuffer}
+
+\def\doprocessXMLbuffer[#1]%
+ {\doifelsenothing{#1}
+ {\doprocessXMLbuffer[\jobname]}
+ {\begingroup
+ \def\dodoprocessXMLbuffer##1%
+ {\enableXML\processXMLfile{\TEXbufferfile{##1}}}%
+ \processcommalist[#1]\dodoprocessXMLbuffer
+ \endgroup}}
+
+%D Loading specific modules takes place with \type
+%D {\useXMLfilters}.
+
+% todo: flag
+
+\def\useXMLfilter[#1]%
+ {\processcommalist[#1]\douseXMLfilter}
+
+\def\douseXMLfilter#1%
+ {\doifundefined{\c!file\f!xtagprefix#1}
+ {\letvalue{\c!file\f!xtagprefix#1}\empty
+ \makeshortfilename[\f!xtagprefix#1]%
+ \writestatus{xml}{loading module #1}% will be \showmessage
+ \startreadingfile
+ \readsysfile\shortfilename\donothing\donothing
+ \stopreadingfile}}
+
+%D Temporarily here.
+
+\newtoks\groupedtoks
+\newif\ifcollectXMLgrouped
+
+\bgroup \catcode`\<=\@@active
+
+\newtoks\XMLgtoks
+
+\long\unexpanded\gdef\getXMLgroupedenvironment#1#2#3%
+ {\collectXMLgroupedtrue
+ \XMLgtoks{#2}%
+ \long\def\dodogetgrouped{\@EA\the\@EA\XMLgtoks\the\groupedtoks#3}%
+ \getXMLgrouped{#1}}
+
+\long\unexpanded\gdef\getXMLgroupedargument#1#2%
+ {\collectXMLgroupedtrue
+ \XMLgtoks{#2}%
+ \long\def\dodogetgrouped{\@EA\the\@EA\XMLgtoks\@EA{\the\groupedtoks}}%
+ \getXMLgrouped{#1}}
+
+\long\unexpanded\gdef\getXMLgroupedignore#1%
+ {\collectXMLgroupedfalse
+ \let\dodogetgrouped\relax
+ \getXMLgrouped{#1}}
+
+%\long\gdef\docountXMLgrouped#1\end#2\end % @@ => \relax\relax
+% {\long\def\dosplitstring##1#1##2@@##3\end%
+% {\def\ascii{##2}%
+% \ifx\ascii\empty \else
+% \advance\scratchcounter 1
+% \dosplitstring##2@@#1@@\end
+% \fi}%
+% \dosplitstring#2@@#1@@\end}
+
+\long\gdef\docountXMLgrouped#1\end#2\end % 1 relax is enough since it's
+ {\long\def\dosplitstring##1#1##2\relax\relax##3\end % another regime
+ {\def\ascii{##2}%
+ \ifx\ascii\empty \else
+ \advance\scratchcounter \plusone
+ \dosplitstring##2\relax\relax#1\relax\relax\end
+ \fi}%
+ \dosplitstring#2\relax\relax#1\relax\relax\end}
+
+\long\unexpanded\gdef\getXMLgrouped#1% #1 kan weg % klopt dit nu?
+ {\groupedtoks\emptytoks
+ \scratchcounter\zerocount
+ \edef\theXMLnamespace
+ {\ifx\originalXMLnamespace\empty\else\originalXMLnamespace:\fi
+ \currentXMLidentifier}%
+ \expanded{\long\noexpand\def\noexpand\dogetgrouped####1\noexpand</\currentXMLelement>}%
+ {\ifcollectXMLgrouped\appendtoks##1\to\groupedtoks\fi
+ \@EA\docountXMLgrouped\@EA<\theXMLnamespace>\end##1\end
+ \@EAEAEA\docountXMLgrouped\@EA\@EA\@EA<\@EA\theXMLnamespace\space \end##1\end
+ \ifcase\scratchcounter
+ \let\dogetgrouped\dodogetgrouped
+ \else
+ \advance\scratchcounter \minusone
+ \ifcollectXMLgrouped\@EA\appendtoks\@EA<\@EA/\currentXMLelement>\to\groupedtoks\fi
+ \fi
+ \dogetgrouped}%
+ \dogetgrouped}
+
+\egroup
+
+% interesting and fully expandable
+
+\def\XMLownifequalelse#1#2%
+ {\@EAEAEA\@@ifequal\csname\@@XMLvariable:\ownXMLelement:#1\endcsname\relax\@@and#2\relax\@@then}
+
+% \def\XMLifequalelse#1#2#3%
+% {\@EAEAEA\@@ifequal\csname\@@XMLvariable:#1:#2\endcsname\relax\@@and#3\relax\@@then}
+
+\def\XMLifequalelse#1#2%
+ {\ifcsname\@@XMLvariable:#1:#2\endcsname
+ % \@EAEAEA\doXMLifequalelse\@EA\@EA\csname\@@XMLvariable:#1:#2\endcsname
+ \@EA\doXMLifequalelse\csname\@@XMLvariable:#1:#2\@EA\endcsname
+ \else
+ \@EA\secondoftwoarguments
+ \fi}
+
+\def\doXMLifequalelse#1#2%
+ {\@EA\@@ifequal#1\relax\@@and#2\relax\@@then}
+
+%D \starttyping
+%D \defineXMLenvironment[test][a=1]
+%D {\XMLownifequalelse{a}{2}{YES}{NO}}
+%D {}
+%D
+%D \defineXMLenvironment[test][a=1]
+%D {\XMLifequalelse{test}{a}{1}{YES}{NO}}
+%D {}
+%D
+%D \startXMLdata
+%D <test a="1">test</test>
+%D \stopXMLdata
+%D \stoptyping
+
+\def\XMLyes#1{\XMLownifequalelse{#1}{yes}{#1}{}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-map.tex b/Master/texmf-dist/tex/context/base/xtag-map.tex
new file mode 100644
index 00000000000..4ee23e750cb
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-map.tex
@@ -0,0 +1,750 @@
+%D \module
+%D [ file=xtag-map,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Remapping,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D There is a more versatile mapper available in \type {xtag-rem.tex}!
+
+%D We also need something that lets content as-is, like for
+%D instance XML embedded in a chemical caption.
+
+\beginTEX
+ \endinput
+\endTEX
+
+\writestatus{loading}{Context XML Macros (remapping)}
+
+%D A fundamental characteristic of \TEX\ is that much
+%D processing depends on picking up one or more arguments and
+%D acting upon them. In \type {xtag-ini} we have implemented
+%D the normal (high) level interface between \XML\ and
+%D \CONTEXT, and there we already saw some ways to pick up an
+%D element as argument.
+%D
+%D In this module we will implement a preprocessor. An element
+%D that feeds its content to the preprocessor, becomes a token
+%D list consisting of \TEX\ macros, which in turn may expand to
+%D their meanings.
+%D
+%D This module is only tested with \ETEX. In principle we can
+%D make it work with good old \TEX, but we see no objection
+%D against using \ETEX, especially since it's part of every
+%D grown up \TEX\ distribution.
+
+\unprotect
+
+\let\normalparseXMLescape \parseXMLescape
+\let\normalparseXMLelement\parseXMLelement
+\let\normalparseXMLprocess\parseXMLprocess
+
+\let\normaldoXMLelement \doXMLelement
+\let\normaldoXMLentity \doXMLentity
+
+\def\setnormalXMLhandler
+ {\let\doXMLelement \normaldoXMLelement
+ \let\parseXMLelement\normalparseXMLelement
+ \let\parseXMLescape \normalparseXMLescape
+ \let\parseXMLprocess\normalparseXMLprocess
+ \let\doXMLentity \normaldoXMLentity}
+
+%D A careful reader will notice that we do a full expansion of
+%D the content of the element, although commands that are
+%D protected will stay untouched. In this stage we also
+%D collect key|/|value pairs and pass them onto the \TEX\
+%D macros if needed. Again, we need a fully expandable parser
+%D to handle this, which make the core macros slightly
+%D unreadable.
+%D
+%D The interface presented here evolved from an older module,
+%D written on top of \type {m-sgml}, that could take care of
+%D \MATHML\ (version 1). The implementation here is more
+%D advanced in the sense that it permits all kind of parsers.
+
+\def\findendofXMLelement#1% space after 0/1 prevents auto \relax
+ {\if#1>0 \else
+ \if#1/1 \endofXMLelementE\else
+ \if#1"\endofXMLelementD \else
+ \if#1'\endofXMLelementS \else
+ \endofXMLelementN \fi\fi\fi\fi}
+
+\def\endofXMLelementE#1\fi\fi\fi\fi#2>{\fi\fi}
+\def\endofXMLelementD#1\fi\fi\fi\fi#2"{\fi\fi\fi \findendofXMLelement}
+\def\endofXMLelementS#1\fi\fi\fi\fi#2'{\fi\fi\fi\fi\findendofXMLelement}
+\def\endofXMLelementN \fi\fi\fi\fi {\fi\fi\fi\fi\findendofXMLelement}
+
+% not faster
+%
+% \def\findendofXMLelement#1%
+% {\csname**\if#1>>\else\if#1//\else\if#1""\else\if#1''\else.\fi\fi\fi\fi\endcsname}
+%
+% \def\findendofXMLelement#1%
+% {\csname**\ifcsname**#1\endcsname#1\else.\fi\endcsname}
+%
+% \setvalue{**>}{0 }
+% \setvalue{**/}#1>{1 }
+% \setvalue{**"}#1"{\findendofXMLelement}
+% \setvalue{**'}#1'{\findendofXMLelement}
+% \letvalue{**.}\findendofXMLelement
+
+\newif\ifremapXMLunknown
+
+%D We need three steps to avoid namespace: tag since comment
+%D and processing instructions don't have a namespace. The
+%D first step distinguishes between comment, processing
+%D instructions and elements. The second step (which is
+%D defined in the main mapping macro) either or not grabs the
+%D namespace. We may extend this model later to a more
+%D versatile one, using remapping.
+
+%D Parsing escapes is done by specific macros. For the
+%D moment we assume that the sequence ends with an \type {>}
+%D (which is definietly not the case for \type {CDATA}).
+
+\long\def\remapXMLescape#1#2>{}
+
+%D Processing instructions are remapped and only certain
+%D cases are handled.
+
+\long\def\remapXMLprocess#1#2{\xmlp{procins/}{X}{#1}{#2}}
+
+%D This one is more efficient (although no one will notice
+%D this since this macro is used seldom).
+
+\long\def\remapXMLprocess{\xmlp{procins/}{X}}
+
+%D Element need a bit more work; \type {#4} consumes spaces.
+
+% \def\remapXMLunknownONE#1#2% name args
+% {\ifremapXMLunknown\remapXMLone{\s!unknown}{#1 #2}\fi}
+%
+% \def\remapXMLunknownTWO#1#2% name args
+% {\ifremapXMLunknown\remapXMLtwo{\s!unknown}{#1 #2}\fi}
+%
+% \def\remapXMLunknownTHREE#1#2% name args
+% {\ifremapXMLunknown\remapXMLthree{\s!unknown/}{#1 #2}\fi}
+%
+% \long\def\remapXMLelement#1#2 #3>#4% todo: we need to get rid of the end /
+% {\ifcase\findendofXMLelement#2#3>%
+% \if#1/%
+% \expandafter\ifx\csname\@@XML\@@XMLmapping:#2:M\endcsname\relax
+% \remapXMLunknownONE{#2}{}%
+% \else
+% \remapXMLone{#2}{}%
+% \fi
+% \else
+% \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2:M\endcsname\relax
+% \remapXMLunknownTWO{#1#2}{#3}%
+% \else
+% \remapXMLtwo{#1#2}{#3}%
+% \fi
+% \fi
+% \else
+% \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2:M\endcsname\relax
+% \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2/:M\endcsname\relax
+% \remapXMLunknownTHREE{#1#2}{#3}%
+% \else
+% \remapXMLthree{#1#2/}{#3}%
+% \fi
+% \else
+% \remapXMLthree{#1#2}{#3}%
+% \fi
+% \fi#4}
+
+\def\remapXMLthreeempty#1%
+ {\remapXMLthree{#1/}}
+
+\def\remapXMLunknownONE#1#2% name args
+ {\ifremapXMLunknown\remapXMLone\s!unknown{#1 #2}\fi}
+
+\def\remapXMLunknownTWO#1#2% name args
+ {\ifremapXMLunknown\remapXMLtwo\s!unknown{#1 #2}\fi}
+
+\def\remapXMLunknownTHREE#1#2% name args
+ {\ifremapXMLunknown\remapXMLthreeempty\s!unknown{#1 #2}\fi}
+
+\long\def\remapXMLelement#1#2 #3>#4% todo: we need to get rid of the end /
+ {\ifcase\findendofXMLelement#2#3>%
+ \if#1/%
+ \expandafter\ifx\csname\@@XML\@@XMLmapping:#2:M\endcsname\relax
+ \@EA\remapXMLunknownONE
+ \else
+ \@EA\remapXMLone
+ \fi{#2}\empty
+ \else
+ \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2:M\endcsname\relax
+ \@EA\remapXMLunknownTWO
+ \else
+ \@EA\remapXMLtwo
+ \fi{#1#2}{#3}%
+ \fi
+ \else
+ \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2:M\endcsname\relax
+ \expandafter\ifx\csname\@@XML\@@XMLmapping:#1#2/:M\endcsname\relax
+ \@EAEAEA\remapXMLunknownTHREE
+ \else
+ \@EAEAEA\remapXMLthreeempty
+ \fi
+ \else
+ \@EA\remapXMLthree
+ \fi{#1#2}{#3}%
+ \fi#4}
+
+\unexpanded\def\xmlr#1#2{\csname\@@XML\@@XMLmapping:#1:#2\endcsname}
+\unexpanded\def\xmlp#1#2{\csname\@@XML :#1:#2\endcsname}
+\def \expandedxmlr#1#2{\csname\@@XML\@@XMLmapping:#1:#2\endcsname}
+
+\def\expandXMLremapping{\let\xmlr\expandedxmlr}
+
+\def\@@XMLremap{XMLremap}
+
+\def\remapXMLone#1#2%
+ {\ifcase\csname\@@XMLremap\csname\@@XML\@@XMLmapping:#1:M\endcsname\endcsname
+ \or % GCPA
+ \XMLeg\XMLeg
+ \or % GCP-
+ \XMLeg
+ \or % GC-A
+ \XMLeg\XMLeg
+ \or % GC--
+ \XMLeg
+ \or % -CPA
+ \XMLeg
+ \or % -CP-
+ %
+ \or % -C-A
+ \XMLeg
+ \or % -C--
+ %
+ \or % G---
+ \XMLeg
+ \or % GLR-
+ \xmlr{#1}{R}\XMLeg
+ \or % -LR-
+ \xmlr{#1}{R}%
+ \fi}
+
+\def\remapXMLtwo#1#2%
+ {\ifcase\csname\@@XMLremap\csname\@@XML\@@XMLmapping:#1:M\endcsname\endcsname
+ \or % GCPA
+ \XMLbg\xmlr{#1}{X}{#2}\XMLbg
+ \or % GCP-
+ \XMLbg\xmlr{#1}{X}{#2}%
+ \or % GC-A
+ \XMLbg\xmlr{#1}{X}\XMLbg
+ \or % GC--
+ \XMLbg\xmlr{#1}{X}%
+ \or % -CPA
+ \xmlr{#1}{X}{#2}\XMLbg
+ \or % -CP-
+ \xmlr{#1}{X}{#2}%
+ \or % -C-A
+ \xmlr{#1}{X}\XMLbg
+ \or % -C--
+ \xmlr{#1}{X}%
+ \or % G---
+ \XMLbg
+ \or % GLR-
+ \XMLbg\xmlr{#1}{L}%
+ \or % -LR-
+ \xmlr{#1}{L}%
+ \fi}
+
+\def\remapXMLthree#1#2%
+ {\ifcase\csname\@@XMLremap\csname\@@XML\@@XMLmapping:#1:M\endcsname\endcsname
+ \or % GCPA
+ \XMLbg\xmlr{#1}{X}{#2}\XMLbg\XMLeg\XMLeg
+ \or % GCP-
+ \XMLbg\xmlr{#1}{X}{#2}\XMLeg
+ \or % GC-A
+ \XMLbg\xmlr{#1}{X}\XMLbg\XMLeg\XMLeg
+ \or % GC--
+ \XMLbg\xmlr{#1}{X}\XMLeg
+ \or % -CPA
+ \xmlr{#1}{X}{#2}\XMLbg\XMLeg
+ \or % -CP-
+ \xmlr{#1}{X}{#2}%
+ \or % -C-A
+ \xmlr{#1}{X}\XMLbg\XMLeg
+ \or % -C--
+ \xmlr{#1}{X}%
+ \or % G---
+ \XMLbg\XMLeg
+ \fi}
+
+\scratchtoks\@EA{\string{} \edef\XMLbg{\the\scratchtoks}
+\scratchtoks\@EA{\string}} \edef\XMLeg{\the\scratchtoks}
+
+\chardef\XMLremapGCPA = 1 % {\command {arg} { } }
+\chardef\XMLremapGCP = 2 % {\command {arg} } %
+\chardef\XMLremapGCA = 3 % {\command { } }
+\chardef\XMLremapGC = 4 % {\command } %
+\chardef\XMLremapCPA = 5 % \command {arg} { }
+\chardef\XMLremapCP = 6 % \command {arg} %
+\chardef\XMLremapCA = 7 % \command { }
+\chardef\XMLremapC = 8 % \command %
+\chardef\XMLremapG = 9 % { }
+\chardef\XMLremapGLR = 10 % { \bcom \ecom }
+\chardef\XMLremapLR = 11 % \bcom \ecom
+
+%D The remapping is controlled by only a few definition
+%D macros, that both deal with elements. We distinguish
+%D between normal and empty elements.
+%D
+%D \starttyping
+%D \remapXMLsequence [name] [result map] \unexpandablecommand
+%D \remapXMLsequence [name] [result map] \unexpandablecommand
+%D \stoptyping
+%D
+%D The \MATHML\ module demonstrates how these can be used.
+%D The element is converted into a sequence with one or more
+%D of the following components.
+%D
+%D \starttyping
+%D { \command {parameters} {argument} }
+%D \stoptyping
+%D
+%D The following combinations are supported.
+%D
+%D \starttabulate[|c|c|c|c|c|]
+%D \NC GCPA \NC grouped \NC command \NC parameters \NC argument \NC \NR
+%D \NC GCP \NC grouped \NC command \NC parameters \NC \NC \NR
+%D \NC GCA \NC grouped \NC command \NC \NC argument \NC \NR
+%D \NC GC \NC grouped \NC command \NC \NC \NC \NR
+%D \NC CPA \NC \NC command \NC parameters \NC argument \NC \NR
+%D \NC CP \NC \NC command \NC parameters \NC \NC \NR
+%D \NC CA \NC \NC command \NC \NC argument \NC \NR
+%D \NC C \NC \NC command \NC \NC \NC \NR
+%D \NC G \NC grouped \NC \NC \NC \NC \NR
+%D \stoptabulate
+%D
+%D Empty elements (singular ones) never get an argument,
+%D which makes sense, since they have at most parameters.
+
+\def\remapXMLsequence{\doquadrupleargument\doremapXML []}
+\def\remapXMLsingular{\doquadrupleargument\doremapXML[/]}
+
+\def\doremapXML[#1][#2][#3][#4]%
+ {\iffourthargument
+ \def\next{\dodoremapXML[#2][#1][#3][#4]}%
+ \else
+ \def\next{\dodoremapXML[\@@XMLmapping][#1][#2][#3]}%
+ \fi
+ \next}
+
+%\def\dodoremapXML[#1][#2][#3][#4]% class / name pattern
+% {\doifinstringelse{LR}{#4}
+% {\let\next\doremapXMLtwo}
+% {\let\next\doremapXMLone}%
+% \next[#1][#2][#3][#4]}%
+
+\def\dodoremapXML[#1][#2][#3][#4]% class / name pattern
+ {\doifinstringelse{LR}{#4}\doremapXMLtwo\doremapXMLone[#1][#2][#3][#4]}
+
+\def\doremapXMLone[#1][#2][#3][#4]#5%
+ {\setvalue{\@@XML#1:#3#2:M}{#4}%
+ \setvalue{\@@XML#1:#3#2:X}{#5}}
+
+\def\doremapXMLtwo[#1][#2][#3][#4]#5#6%
+ {\setvalue{\@@XML#1:#3:M}{#4}%
+ \setvalue{\@@XML#1:#3:L}{#5}%
+ \setvalue{\@@XML#1:#3:R}{#6}}
+
+\let\dowithentity\empty
+
+%D We handle processing instructions and unknown elements with:
+
+\remapXMLsingular [procins] [CPA] \normalparseXMLprocess
+\remapXMLsingular [\s!unknown] [CPA] \doXMLunknownSI
+\remapXMLsequence [\s!unknown] [CPA] \doXMLunknownSE
+
+\def\doXMLunknownSI#1#2{{\tttf[#1 #2]}}
+\def\doXMLunknownSE#1#2{{\tttf[#1 #2]}}
+
+%D In a similar way, we can remap entities.
+
+\def\remapXMLentity#1;#2%
+ {\doremapXMLentity{#1}#2}%
+
+\def\doremapXMLentity
+ {\xmlrent}
+
+% \unexpanded\def\xmlrent#1%
+% {\getXMLentity{#1}}
+%
+% replaced by:
+
+\unexpanded\def\xmlrent#1%
+ {\doXMLentity#1;}
+
+%D The remapping is taken care of by the following macro,
+%D which takes three arguments.
+%D
+%D \starttyping
+%D \XMLremapdata{before}{after}{content}
+%D \stoptyping
+%D
+%D After the remapping, the content is executed (expanded)
+%D under the normal \TEX\ catcode regime. The intermediate
+%D result can be traced by turning on the following switch.
+
+\newif\iftraceXMLremapping
+
+\newtoks \everyXMLremapping
+
+\appendtoks
+ \defineXMLentity[tex-hash]{\letterhash}%
+ \defineXMLentity[tex-bar]{\myspecialvert}%
+\to \everyXMLremapping
+
+\def\setnormalXMLentities% will change ! ! ! ! !
+ {\defineXMLentity[tex-hash]\letterhash
+ \defineXMLentity[tex-dollar]\letterdollar
+ \defineXMLentity[tex-percent]\letterpercent
+ \defineXMLentity[tex-backslash]\letterbackslash
+ \defineXMLentity[tex-hat]\letterhat
+ \defineXMLentity[tex-underscore]\letterunderscore
+ \defineXMLentity[tex-leftbrace]\letterbgroup
+ \defineXMLentity[tex-rightbrace]\letteregroup
+ \defineXMLentity[tex-bar]\letterbar}
+
+\let\XMLremappedpar\empty
+
+%D Here we implement the second step in the element grabber.
+
+\long\def\XMLremapdata
+ {\dosingleempty\doXMLremapdata}
+
+\long\def\doXMLremapdata[#1]#2#3#4%
+ {\bgroup
+ \startXMLmapping[#1]%
+ % enable unknown elements (should be macro)
+ \doifsomething{#1}
+ {\doifdefinedelse{\@@XML#1:\s!unknown:M}
+ {\remapXMLunknowntrue}{\remapXMLunknownfalse}}%
+ %
+ \pushmacro\doXMLentity % needed ?
+ % this will change, proper split in element itself
+ \ifx\currentXMLnamespace\empty
+ \let\parseXMLelement\remapXMLelement
+ \else
+ % here we need to get rid of the namespace; we also
+ % have to preserve the leaqding / if present
+ \@EA\long\@EA\def\@EA\parseXMLelement\@EA
+ ##\@EA1\currentXMLnamespace:{\remapXMLelement##1}%
+ % ##2 removes leading spaces
+ \fi
+ %
+ \let\parseXMLescape \remapXMLescape
+ \let\parseXMLprocess\remapXMLprocess
+ %
+ \let\doXMLentity \remapXMLentity
+ %
+ \enableXML % sets entities
+ \enableXMLexpansion
+ \let\par\XMLremappedpar
+ \the\everyXMLremapping
+ %\ignorelines
+ \catcode`\^^I=\@@space
+ \catcode`\^^M=\@@space
+ \catcode`\^^L=\@@space
+ \catcode`\^^Z=\@@space
+\pushmacro\unicodechar
+\let\unicodechar\relax
+ \xdef\remappedXMLdata{#4\empty}%
+\popmacro\unicodechar
+ \let\par\endgraf
+ \popmacro\doXMLentity % needed ?
+ \disableXMLexpansion
+ \catcode`\{=\@@begingroup
+ \catcode`\}=\@@endgroup
+ \catcode`\\=\@@escape
+ \iftraceXMLremapping
+ \ifmmode\vbox\fi\bgroup
+ \convertcommand\remappedXMLdata\to\ascii
+ \tttf\veryraggedright\ascii\par
+ \writestatus{xml-remap}{\ascii}%
+ \egroup
+ \fi
+ #2\scantokens\@EA{\remappedXMLdata\empty\empty}#3%
+ \stopXMLmapping
+ \egroup}
+
+% testcase:
+%
+% aap‒noot coördinatie – één
+%
+% \startXMLdata
+% aap‒noot coördinatie – één
+% <formula><math><mtext>aap‒noot coördinatie – één</mtext></math></formula>
+% \stopXMLdata
+%
+% weird case:
+%
+% \chardef\XMLtokensreduction\zerocount
+% \startXMLdata
+% <formula><math><mtext>\"{a}\"{o}\"{u}\v{c}\v{s}\v{z}</mtext></math></formula>
+% \stopXMLdata
+%
+% \chardef\XMLtokensreduction\plustwo
+% \startXMLdata
+% <formula><math><mtext>\"{a}\"{o}\"{u}\v{c}\v{s}\v{z}</mtext></math></formula>
+% \stopXMLdata
+
+% rename to better names
+
+\newtoks \XMLRtoks
+\newcount \nofXMLRchildren
+
+\def\naturalxmlr#1#2{\getvalue{\@@XML\@@XMLmapping:#1:#2}}
+
+\def\ignoreXMLRelement#1#2{}
+\def\normalXMLRelement#1#2{#2}
+
+\let\nextXMLRelement \empty
+\let\firstXMLRelement \empty
+\let\secondXMLRelement\empty
+
+% \def\withnextXMLRelement#1%
+% {\pushmacro\dowithnextXMLRelement
+% \def\dowithnextXMLRelement##1##2##3##4##5%
+% {\popmacro\dowithnextXMLRelement
+% \def\nextXMLRelement{##1{##2}{##3}{##4}{##5}}%
+% #1}%
+% \doifnextcharelse\empty\empty\dowithnextXMLRelement}
+%
+% better and faster:
+
+\def\dowithnextXMLRelement#1#2#3#4#5#6%
+ {\def\nextXMLRelement{#2{#3}{#4}{#5}{#6}}#1}%
+
+\def\withnextXMLRelement#1%
+ {\doifnextcharelse\empty\empty{\dowithnextXMLRelement{#1}}}
+
+\def\withnexttwoXMLRelements#1%
+ {\pushmacro\firstXMLRelement
+ \pushmacro\secondXMLRelement
+ \withnextXMLRelement
+ {\let\firstXMLRelement\nextXMLRelement
+ \withnextXMLRelement
+ {\let\secondXMLRelement\nextXMLRelement
+ #1%
+ \popmacro\secondXMLRelement
+ \popmacro\firstXMLRelement}}}
+
+\def\withnextthreeXMLRelements#1% korter, met two
+ {\pushmacro\firstXMLRelement
+ \pushmacro\secondXMLRelement
+ \pushmacro\thirdXMLRelement
+ \withnextXMLRelement
+ {\let\firstXMLRelement\nextXMLRelement
+ \withnextXMLRelement
+ {\let\secondXMLRelement\nextXMLRelement
+ \withnextXMLRelement
+ {\let\thirdXMLRelement\nextXMLRelement
+ #1%
+ \popmacro\thirdXMLRelement
+ \popmacro\secondXMLRelement
+ \popmacro\firstXMLRelement}}}}
+
+\def\doifXMLRchildelse#1#2#3#4%
+ {\pushmacro\xmlr
+ \def\next{#4}%
+ \def\xmlr##1##2##3##4% the / should be sorted out in the mapper
+ {\rawdoifinsetelse{##1}{#1}
+ {\def\next{#3}}
+ {\doif{##1}{#1/}{\def\next{#3}}}}%
+ #2\empty
+ \popmacro\xmlr
+ \next}
+
+\def\doifXMLRchild#1#2#3%
+ {\pushmacro\xmlr
+ \let\next\empty
+ \def\xmlr##1##2##3##4% the / should be sorted out in the mapper
+ {\rawdoifinsetelse{##1}{#1}
+ {\def\next{#3}}
+ {\doif{##1}{#1/}{\def\next{#3}}}}%
+ #2\empty
+ \popmacro\xmlr
+ \next}
+
+\def\encapsulateXMLRchild#1#2#3#4#5%
+ {\pushmacro\xmlr
+ \def\xmlr##1##2##3##4%
+ {\doifelse{##1}{#1}
+ {\def\next{\doencapsulateXMLRchild{#2}{#3}{#4}{##4}}}
+ {\let\next\empty}%
+ \next}%
+ #5\empty
+ \popmacro\xmlr}
+
+\def\encapsulateXMLRchildren#1#2#3#4#5%
+ {\pushmacro\xmlr
+ \pushmacro\betweenXMLRchild
+ \def\betweenXMLRchild{\def\betweenXMLRchild{#3}}%
+ \def\xmlr##1##2##3##4%
+ {\rawdoifinsetelse{##1}{#1}
+ {\pushmacro\xmlr
+ \let\xmlr\naturalxmlr
+ \betweenXMLRchild\xmlr{##1}{##2}{##3}{##4}%
+ \popmacro\xmlr}
+ {}}%
+ #2#5\empty#4%
+ \popmacro\betweenXMLRchild
+ \popmacro\xmlr}
+
+\def\doencapsulateXMLRchild#1#2#3#4%
+ {\pushmacro\xmlr
+ \pushmacro\betweenXMLRchild
+ \def\betweenXMLRchild{\def\betweenXMLRchild{#2}}%
+ \def\xmlr##1##2##3##4%
+ {\pushmacro\xmlr
+ \let\xmlr\naturalxmlr
+ \betweenXMLRchild\xmlr{##1}{##2}{##3}{##4}%
+ \popmacro\xmlr}%
+ #1#4\empty#3%
+ \popmacro\betweenXMLRchild
+ \popmacro\xmlr}
+
+\let\encapsulateXMLR\doencapsulateXMLRchild
+
+\def\withnextXMLRelementelse#1#2%
+ {\def\xdowithnextXMLRelement##1##2##3##4##5%
+ {\def\nextXMLRelement{##1{##2}{##3}{##4}{##5}}#1}%
+ \def\xnowithnextXMLRelement%
+ {\let\nextXMLRelement\empty#2}%
+ \doifnextcharelse\xmlr\xdowithnextXMLRelement\xnowithnextXMLRelement}
+
+\def\encapsulatenextXMLRelements#1#2#3#4% oude bewaren
+ {\pushmacro\betweenXMLRchild
+ \pushmacro\afterXMLRchild
+ \def\betweenXMLRchild{#1\def\betweenXMLRchild{#2}}%
+ \let\afterXMLRchild\empty
+ \withnextXMLRelementelse
+ {\betweenXMLRchild
+ \def\afterXMLRchild{#3}%
+ \nextXMLRelement
+ \doifnextcharelse\empty\xnowithnextXMLRelement\xdowithnextXMLRelement}
+ {\afterXMLRchild
+ \popmacro\afterXMLRchild
+ \popmacro\betweenXMLRchild}%
+ #4}
+
+\def\collectXMLRchild#1#2%
+ {\XMLRtoks\emptytoks
+ \pushmacro\xmlr
+ \def\xmlr##1##2##3##4%
+ {\doif{##1}{#1}{\appendtoks##4\to\XMLRtoks}}%
+ #2\empty
+ \popmacro\xmlr}
+
+\def\doifelseXMLRneighbors#1#2%
+ {\XMLRtoks\emptytoks
+ \pushmacro\xmlr
+ \donefalse
+ \let\prevXMLRchild\empty
+ \def\xmlr##1##2##3##4%
+ {\doif{##1}{#1}{\doif{##1}\prevXMLRchild{\donetrue}}%
+ \def\prevXMLRchild{##1}}%
+ #2\empty
+ \popmacro\xmlr
+ \ifdone
+ \expandafter\firstoftwoarguments
+ \else
+ \expandafter\secondoftwoarguments
+ \fi}
+
+\def\collectbetweenXMLRchild#1#2#3%
+ {\XMLRtoks\emptytoks
+ \pushmacro\xmlr
+ \pushmacro\betweenXMLRchild
+ \def\betweenXMLRchild{\def\betweenXMLRchild{\appendtoks#2\to\XMLRtoks}}%
+ \def\xmlr##1##2##3##4%
+ {\rawdoifinsetelse{##1}{#1}
+ {\betweenXMLRchild\appendtoks\xmlr{##1}{##2}{##3}{##4}\to\XMLRtoks}{}}%
+ #3\empty
+ \popmacro\betweenXMLRchild
+ \popmacro\xmlr}
+
+\def\dorawcollectbetweenXMLR#1#2%
+ {\pushmacro\xmlr
+ \pushmacro\betweenXMLRchild
+ \def\betweenXMLRchild{\def\betweenXMLRchild{#1}}%
+ \def\xmlr##1##2##3##4%
+ {\betweenXMLRchild\appendtoks\xmlr{##1}{##2}{##3}{##4}\to\XMLRtoks}%
+ #2\empty
+ \popmacro\betweenXMLRchild
+ \popmacro\xmlr}
+
+\def\rawcollectbetweenXMLR%
+ {\XMLRtoks\emptytoks\dorawcollectbetweenXMLR}
+
+\def\docollectbetweenXMLR#1%
+ {\dorawcollectbetweenXMLR{\appendtoks#1\to\XMLRtoks}}
+
+\def\collectbetweenXMLR%
+ {\XMLRtoks\emptytoks\docollectbetweenXMLR}
+
+\def\processXMLRchildren#1%
+ {\pushmacro\xmlr
+ \let\xmlr\naturalxmlr
+ #1\empty
+ \popmacro\xmlr}
+
+\def\processXMLRchild#1#2% slow but more versatile
+ {\pushmacro\xmlr
+ \XMLRtoks\emptytoks
+ \def\xmlr##1##2##3##4%
+ {\rawdoifinsetelse{##1}{#1}
+ {\appendtoks\xmlr{##1}{##2}{##3}{##4}\to\XMLRtoks}{}}%
+ #2%
+ \popmacro\xmlr
+ \the\XMLRtoks\empty}
+
+\def\countXMLRchildren#1%
+ {\pushmacro\xmlr
+ \nofXMLRchildren=0
+ \def\xmlr##1##2##3##4{\advance\nofXMLRchildren\plusone}
+ #1\empty
+ \popmacro\xmlr}
+
+\def\countXMLRchild#1#2%
+ {\pushmacro\xmlr
+ \nofXMLRchildren=0
+ \def\xmlr##1##2##3##4%
+ {\rawdoifinsetelse{##1}{#1}{\advance\nofXMLRchildren\plusone}{}}
+ #2\empty
+ \popmacro\xmlr}
+
+\def\installXMLunknownremapping
+ {\remapXMLsingular[\s!unknown][CPA]\doXMLunknownSI
+ \remapXMLsequence[\s!unknown][CPA]\doXMLunknownSE}
+
+\bgroup \catcode`<=\active
+
+\gdef\revertXMLremapping
+ {\gdef\doXMLunknownSE##1##2{<##1>##2</##1>}%
+ \gdef\doXMLunknownSI##1##2{<##1>}}
+
+\gdef\unmapXMLdata#1#2% todo: singular, evt ##2 space ervoor en ##1##2
+ {\bgroup
+ \revertXMLremapping
+ \expandXMLremapping % now we can roll back
+ \setnormalXMLhandler % using the normal parser
+ \resetXMLmapping % and leaving the mapping namespace
+ \xdef\unmappedXMLdata{#2}% recreate the original
+ \enableXMLelements % enable normal handler
+ \unmappedXMLdata % off we go ...
+ \egroup}
+
+\egroup
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-mea.tex b/Master/texmf-dist/tex/context/base/xtag-mea.tex
new file mode 100644
index 00000000000..d56d6c54ba9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mea.tex
@@ -0,0 +1,152 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSA Characters Extended
+%
+% Added Math Symbols: Arrow Relations
+
+\defineMMLentity angzarr E248 {unknown} angle with down zig-zag arrow
+\defineMMLentity cirmid E250 {unknown} circle, mid below
+\defineMMLentity cudarrl E23E {unknown} left, curved, down arrow
+\defineMMLentity cudarrr E400 {unknown} right, curved, down arrow
+\defineMMLentity cularr 21B6 {unknown} left curved arrow
+\defineMMLentity cularrp E24A {unknown} curved left arrow with plus
+\defineMMLentity curarr 21B7 {unknown} right curved arrow
+\defineMMLentity curarrm E249 {unknown} curved right arrow with minus
+\defineMMLentity Darr 21A1 {unknown} down two-headed arrow
+\defineMMLentity dArr 21D3 {\Downarrow} down double arrow
+\defineMMLentity ddarr 21CA {unknown} two down arrows
+\defineMMLentity DDotrahd E238 {unknown} right arrow with dotted stem
+\defineMMLentity dfisht E24C {unknown} down fish tail
+\defineMMLentity dHar E227 {unknown} down harpoon-left, down harpoon-right
+\defineMMLentity dharl 21C3 {unknown} down harpoon-left
+\defineMMLentity dharr 21C2 {unknown} down harpoon-rt
+\defineMMLentity duarr E216 {unknown} down arrow, up arrow
+\defineMMLentity duhar E217 {unknown} down harp, up harp
+\defineMMLentity dzigrarr 21DD {unknown} right long zig-zag arrow
+\defineMMLentity erarr E236 {unknown} equal, right arrow below
+\defineMMLentity hArr 21D4 {\Leftrightarrow} left and right double arrow
+\defineMMLentity harr 2194 {\leftrightarrow} left and right arrow
+\defineMMLentity harrcir E240 {unknown} left and right arrow with a circle
+\defineMMLentity harrw 21AD {unknown} left and right arr-wavy
+\defineMMLentity hoarr E243 {unknown} horizontal open arrow
+\defineMMLentity imof 22B7 {unknown} image of
+\defineMMLentity lAarr 21DA {unknown} left triple arrow
+\defineMMLentity Larr 219E {unknown} twoheadleftarrow
+\defineMMLentity larrbfs E220 {unknown} left arrow-bar, filled square
+\defineMMLentity larrfs E222 {unknown} left arrow, filled square
+\defineMMLentity larrhk 21A9 {unknown} left arrow-hooked
+\defineMMLentity larrlp 21AB {unknown} left arrow-looped
+\defineMMLentity larrpl E23F {unknown} left arrow, plus
+\defineMMLentity larrsim E24E {unknown} left arrow, similar
+\defineMMLentity larrtl 21A2 {unknown} left arrow-tailed
+\defineMMLentity lAtail E23D {unknown} left double arrow-tail
+\defineMMLentity latail E23C {unknown} left arrow-tail
+\defineMMLentity lBarr E206 {unknown} left doubly broken arrow
+\defineMMLentity lbarr E402 {unknown} left broken arrow
+\defineMMLentity ldca E21A {unknown} left down curved arrow
+\defineMMLentity ldrdhar E22C {unknown} left harpoon-down over right harpoon-down
+\defineMMLentity ldrushar E228 {unknown} left-down-right-up harpoon
+\defineMMLentity ldsh 21B2 {unknown} left down angled arrow
+\defineMMLentity lfisht E214 {unknown} left fish tail
+\defineMMLentity lHar E225 {unknown} left harpoon-up over left harpoon-down
+\defineMMLentity lhard 21BD {\leftharpoondown} left harpoon-down
+\defineMMLentity lharu 21BC {\leftharpoonup} left harpoon-up
+\defineMMLentity lharul E22E {unknown} left harpoon-up over long dash
+\defineMMLentity llarr 21C7 {unknown} two left arrows
+\defineMMLentity llhard E231 {unknown} left harpoon-down below long dash
+\defineMMLentity loarr E242 {unknown} left open arrow
+\defineMMLentity lrarr 21C6 {unknown} left arr over right arr
+\defineMMLentity lrhar 21CB {unknown} left harp over r
+\defineMMLentity lrhard E22F {unknown} right harpoon-down below long dash
+\defineMMLentity lsh 21B0 {\Lsh} Lsh
+\defineMMLentity lurdshar E229 {unknown} left-up-right-down harpoon
+\defineMMLentity luruhar E22B {unknown} left harpoon-up over right harpoon-up
+\defineMMLentity Map E212 {unknown} twoheaded mapsto
+\defineMMLentity map 21A6 {\mapsto} mapsto
+\defineMMLentity midcir E20F {unknown} mid, circle below
+\defineMMLentity mumap 22B8 {unknown} multimap
+\defineMMLentity nearhk E20D {unknown} NE arrow-hooked
+\defineMMLentity neArr 21D7 {unknown} NE pointing double arrow
+\defineMMLentity nearr 2197 {\nearrow} NE pointing arrow
+\defineMMLentity nesear E20E {unknown} NE \& SE arrows
+\defineMMLentity nhArr 21CE {unknown} not left and right double arr
+\defineMMLentity nharr 21AE {unknown} not left and right arrow
+\defineMMLentity nlArr 21CD {unknown} not implied by
+\defineMMLentity nlarr 219A {unknown} not left arrow
+\defineMMLentity nrArr 21CF {unknown} not implies
+\defineMMLentity nrarr 219B {unknown} not right arrow
+\defineMMLentity nrarrc E21D {unknown} not right arrow-curved
+\defineMMLentity nrarrw E21B {unknown} not right arrow-wavy
+\defineMMLentity nvhArr* 21CE {unknown} not, vert, left and right double arrow
+\defineMMLentity nvlArr 21CD {unknown} not, vert, left double arrow
+\defineMMLentity nvrArr 21CF {unknown} not, vert, right double arrow
+\defineMMLentity nwarhk E20C {unknown} NW arrow-hooked
+\defineMMLentity nwArr 21D6 {unknown} NW pointing double arrow
+\defineMMLentity nwarr 2196 {\nwarrow} NW pointing arrow
+\defineMMLentity nwnear E211 {unknown} NW \& NE arrows
+\defineMMLentity olarr 21BA {unknown} left arr in circle
+\defineMMLentity orarr 21BB {unknown} right arr in circle
+\defineMMLentity origof 22B6 {unknown} original of
+\defineMMLentity rAarr 21DB {unknown} right triple arrow
+\defineMMLentity Rarr 21A0 {unknown} twoheadrightarrow
+\defineMMLentity rarrap E235 {unknown} approximate, right arrow above
+\defineMMLentity rarrbfs E221 {unknown} right arrow-bar, filled square
+\defineMMLentity rarrc E21C {unknown} right arrow-curved
+\defineMMLentity rarrfs E223 {unknown} right arrow, filled square
+\defineMMLentity rarrhk 21AA {\hookrightarrow} right arrow-hooked
+\defineMMLentity rarrlp 21AC {unknown} right arrow-looped
+\defineMMLentity rarrpl E21E {unknown} right arrow, plus
+\defineMMLentity rarrsim E24D {unknown} right arrow, similar
+\defineMMLentity Rarrtl E239 {unknown} right two-headed arrow with tail
+\defineMMLentity rarrtl 21A3 {unknown} right arrow-tailed
+\defineMMLentity rarrw 219D {unknown} right arrow-wavy
+\defineMMLentity rAtail E23B {unknown} right double arrow-tail
+\defineMMLentity ratail 21A3 {unknown} right arrow-tail
+\defineMMLentity RBarr E209 {unknown} twoheaded right broken arrow
+\defineMMLentity rBarr E207 {unknown} right doubly broken arrow
+\defineMMLentity rbarr E405 {unknown} right broken arrow
+\defineMMLentity rdca E219 {unknown} right down curved arrow
+\defineMMLentity rdldhar E22D {unknown} right harpoon-down over left harpoon-down
+\defineMMLentity rdsh 21B3 {unknown} right down angled arrow
+\defineMMLentity rfisht E215 {unknown} right fish tail
+\defineMMLentity rHar E224 {unknown} right harpoon-up over right harpoon-down
+\defineMMLentity rhard 21C1 {\rightharpoondown} right harpoon-down
+\defineMMLentity rharu 21C0 {\rightharpoonup} right harpoon-up
+\defineMMLentity rharul E230 {unknown} right harpoon-up over long dash
+\defineMMLentity rlarr 21C4 {unknown} right arr over left arr
+\defineMMLentity rlhar 21CC {unknown} right harp over l
+\defineMMLentity roarr E241 {unknown} right open arrow
+\defineMMLentity rrarr 21C9 {unknown} two right arrows
+\defineMMLentity rsh 21B1 {\Rsh} Rsh
+\defineMMLentity ruluhar E22A {unknown} right harpoon-up over left harpoon-up
+\defineMMLentity searhk E20B {unknown} SE arrow-hooked
+\defineMMLentity seArr 21D8 {unknown} SE pointing double arrow
+\defineMMLentity searr 2198 {\searrow} SE pointing arrow
+\defineMMLentity seswar E406 {unknown} SE \& SW arrows
+\defineMMLentity simrarr E234 {unknown} similar, right arrow below
+\defineMMLentity slarr E233 {unknown} short left arrow
+\defineMMLentity srarr E232 {unknown} short right arrow
+\defineMMLentity swarhk E20A {unknown} SW arrow-hooked
+\defineMMLentity swArr 21D9 {unknown} SW pointing double arrow
+\defineMMLentity swarr 2199 {\swarrow} SW pointing arrow
+\defineMMLentity swnwar E210 {unknown} SW \& NW arrows
+\defineMMLentity Uarr 219F {unknown} up two-headed arrow
+\defineMMLentity uArr 21D1 {\Uparrow} up double arrow
+\defineMMLentity Uarrocir E237 {unknown} up two-headed arrow above circle
+\defineMMLentity udarr 21C5 {unknown} up arrow, down arrow
+\defineMMLentity udhar E218 {unknown} up harp, down harp
+\defineMMLentity ufisht E24B {unknown} up fish tail
+\defineMMLentity uHar E226 {unknown} up harpoon-left, up harpoon-right
+\defineMMLentity uharl 21BF {unknown} up harpoon-left
+\defineMMLentity uharr 21BE {unknown} up harp-r
+\defineMMLentity uuarr 21C8 {unknown} two up arrows
+\defineMMLentity vArr 21D5 {\Updownarrow} up \& down double arrow
+\defineMMLentity varr 2195 {\updownarrow} up \& down arrow
+\defineMMLentity xhArr E202 {unknown} long left and right double arr
+\defineMMLentity xharr E203 {unknown} long left and right arr
+\defineMMLentity xlArr E200 {unknown} long left double arrow
+\defineMMLentity xlarr E201 {unknown} long left arrow
+\defineMMLentity xmap E208 {unknown} longmapsto
+\defineMMLentity xrArr E204 {unknown} long right double arr
+\defineMMLentity xrarr E205 {unknown} long right arrow
+\defineMMLentity zigrarr E244 {unknown} right zig-zag arrow
diff --git a/Master/texmf-dist/tex/context/base/xtag-meb.tex b/Master/texmf-dist/tex/context/base/xtag-meb.tex
new file mode 100644
index 00000000000..ba370cadf94
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-meb.tex
@@ -0,0 +1,124 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSB Characters Extended
+%
+% Added Math Symbols: Binary Operators
+
+\defineMMLentity ac E207 {unknown} most positive
+\defineMMLentity acE E290 {unknown} most positive, two lines below
+\defineMMLentity amalg E251 {\amalg} amalgamation or coproduct
+\defineMMLentity barvee 22BD {unknown} bar, vee
+\defineMMLentity Barwed 2306 {unknown} logical and, double bar above
+\defineMMLentity barwed 22BC {unknown} logical and, bar above
+\defineMMLentity bsolb E280 {unknown} reverse solidus in square
+\defineMMLentity Cap 22D2 {unknown} double intersection
+\defineMMLentity capand E281 {unknown} intersection, and
+\defineMMLentity capbrcup E271 {unknown} intersection, bar, union
+\defineMMLentity capcap E273 {unknown} intersection, intersection, joined
+\defineMMLentity capcup E26F {unknown} intersection above union
+\defineMMLentity capdot E261 {unknown} intersection, with dot
+\defineMMLentity caps E275 {unknown} intersection, serifs
+\defineMMLentity ccaps E279 {unknown} closed intersection, serifs
+\defineMMLentity ccups E278 {unknown} closed union, serifs
+\defineMMLentity ccupssm E27A {unknown} closed union, serifs, smash product
+\defineMMLentity coprod 2210 {\coprod} coproduct operator
+\defineMMLentity Cup 22D3 {unknown} double union
+\defineMMLentity cupbrcap E270 {unknown} union, bar, intersection
+\defineMMLentity cupcap E26E {unknown} union above intersection
+\defineMMLentity cupcup E272 {unknown} union, union, joined
+\defineMMLentity cupdot 228D {unknown} union, with dot
+\defineMMLentity cupor E282 {unknown} union, or
+\defineMMLentity cups E274 {unknown} union, serifs
+\defineMMLentity cuvee 22CE {unknown} curly logical or
+\defineMMLentity cuwed 22CF {unknown} curly logical and
+\defineMMLentity Dagger 2021 {\ddagger} double dagger relation
+\defineMMLentity dagger 2020 {\dagger} dagger relation
+\defineMMLentity diam 22C4 {unknown} open diamond
+\defineMMLentity divonx 22C7 {unknown} division on times
+\defineMMLentity eplus E268 {unknown} equal, plus
+\defineMMLentity hercon 22B9 {unknown} hermitian conjugate matrix
+\defineMMLentity intcal 22BA {\intercal} intercal
+\defineMMLentity iprod E259 {unknown} interior product
+\defineMMLentity loplus E25C {unknown} plus sign in left half circle
+\defineMMLentity lotimes E25E {unknown} multiply sign in left half circle
+\defineMMLentity lthree 22CB {unknown} leftthreetimes
+\defineMMLentity ltimes 22C9 {unknown} times sign, left closed
+\defineMMLentity midast 2217 {\ast} centered asterisk
+\defineMMLentity minusb 229F {unknown} minus sign in box
+\defineMMLentity minusd 2238 {unknown} minus sign, dot above
+\defineMMLentity minusdu E25B {unknown} minus sign, dot below
+\defineMMLentity ncap E284 {unknown} bar, intersection
+\defineMMLentity ncup E283 {unknown} bar, union
+\defineMMLentity oast 229B {unknown} asterisk in circle
+\defineMMLentity ocir 229A {unknown} small circle in circle
+\defineMMLentity odash 229D {unknown} hyphen in circle
+\defineMMLentity odiv E285 {unknown} divide in circle
+\defineMMLentity odot 2299 {\odot} middle dot in circle
+\defineMMLentity odsold E286 {unknown} dot, solidus, dot in circle
+\defineMMLentity ofcir E287 {unknown} filled circle in circle
+\defineMMLentity ogt E289 {unknown} greater-than in circle
+\defineMMLentity ohbar E260 {unknown} circle with horizontal bar
+\defineMMLentity olcir E409 {unknown} large circle in circle
+\defineMMLentity olt E288 {unknown} less-than in circle
+\defineMMLentity omid E40A {unknown} vertical bar in circle
+\defineMMLentity ominus 2296 {\ominus} minus sign in circle
+\defineMMLentity opar E28A {unknown} parallel in circle
+\defineMMLentity operp E28B {unknown} perpendicular in circle
+\defineMMLentity oplus 2295 {\oplus} plus sign in circle
+\defineMMLentity osol 2298 {unknown} solidus in circle
+\defineMMLentity Otimes E28C {unknown} multiply sign in double circle
+\defineMMLentity otimes 2297 {\otimes} multiply sign in circle
+\defineMMLentity otimesas E28D {unknown} multiply sign in circle, circumflex accent
+\defineMMLentity ovbar E40B {unknown} circle with vertical bar
+\defineMMLentity plusacir E26A {unknown} plus, circumflex accent above
+\defineMMLentity plusb 229E {unknown} plus sign in box
+\defineMMLentity pluscir E266 {unknown} plus, small circle above
+\defineMMLentity plusdo 2214 {unknown} plus sign, dot above
+\defineMMLentity plusdu E25A {unknown} plus sign, dot below
+\defineMMLentity pluse E267 {unknown} plus, equals
+\defineMMLentity plussim E26C {unknown} plus, similar below
+\defineMMLentity plustwo E269 {unknown} plus, two; Nim-addition
+\defineMMLentity race E40C {unknown} reverse most positive, line below
+\defineMMLentity roplus E25D {unknown} plus sign in right half circle
+\defineMMLentity rotimes E40D {unknown} multiply sign in right half circle
+\defineMMLentity rthree 22CC {unknown} rightthreetimes
+\defineMMLentity rtimes 22CA {unknown} times sign, right closed
+\defineMMLentity sdot 22C5 {\cdot} small middle dot
+\defineMMLentity sdotb 22A1 {unknown} small dot in box
+\defineMMLentity setmn 2216 {unknown} reverse solidus
+\defineMMLentity simplus E26B {unknown} plus, similar above
+\defineMMLentity smashp E264 {unknown} smash product
+\defineMMLentity solb E27F {unknown} solidus in square
+\defineMMLentity sqcap 2293 {\sqcap} square intersection
+\defineMMLentity sqcaps E277 {unknown} square intersection, serifs
+\defineMMLentity sqcup 2294 {\sqcup} square union
+\defineMMLentity sqcups E276 {unknown} square union, serifs
+\defineMMLentity ssetmn E844 {unknown} sm reverse solidus
+\defineMMLentity sstarf 22C6 {\star} small star, filled, low
+\defineMMLentity subdot E262 {unknown} subset, with dot
+\defineMMLentity sum 2211 {\sum} summation operator
+\defineMMLentity supdot E263 {unknown} superset, with dot
+\defineMMLentity timesb 22A0 {unknown} multiply sign in box
+\defineMMLentity timesbar E28E {unknown} multiply sign, bar below
+\defineMMLentity timesd E26D {unknown} times, dot
+\defineMMLentity tridot 25EC {unknown} dot in triangle
+\defineMMLentity triminus E27C {unknown} minus in triangle
+\defineMMLentity triplus E27B {unknown} plus in triangle
+\defineMMLentity trisb E27E {unknown} triangle, serifs at bottom
+\defineMMLentity tritime E27D {unknown} multiply in triangle
+\defineMMLentity uplus 228E {\uplus} plus sign in union
+\defineMMLentity veebar 22BB {unknown} logical or, bar below
+\defineMMLentity wedbar E265 {unknown} wedge, bar below
+\defineMMLentity wreath 2240 {unknown} wreath product
+\defineMMLentity xcap 22C2 {\bigcap} intersection operator
+\defineMMLentity xcirc 25CB {\bigcirc} large circle
+\defineMMLentity xcup 22C3 {\bigcup} union operator
+\defineMMLentity xdtri 25BD {\bigtriangledown} big down triangle, open
+\defineMMLentity xodot 2299 {\bigodot} circle dot operator
+\defineMMLentity xoplus 2295 {\bigoplus} circle plus operator
+\defineMMLentity xotime 2297 {\bigotimes} circle times operator
+\defineMMLentity xsqcup 2294 {\bigsqcup} square union operator
+\defineMMLentity xuplus 228E {\biguplus} biguplus
+\defineMMLentity xutri 25B3 {\bigtriangleup} big up triangle, open
+\defineMMLentity xvee 22C1 {\bigvee} logical and operator
+\defineMMLentity xwedge 22C0 {\bigwedge} logical or operator
diff --git a/Master/texmf-dist/tex/context/base/xtag-mec.tex b/Master/texmf-dist/tex/context/base/xtag-mec.tex
new file mode 100644
index 00000000000..9e941897c61
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mec.tex
@@ -0,0 +1,28 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSC Characters Extended
+%
+% Added Math Symbols: Delimiters
+
+\defineMMLentity dlcorn 231E {unknown} lower left corner
+\defineMMLentity drcorn 231F {unknown} lower right corner
+\defineMMLentity gtlPar E296 {unknown} double left parenthesis, greater
+\defineMMLentity langd E297 {unknown} left angle, dot
+\defineMMLentity lbrke E299 {unknown} left bracket, equal
+\defineMMLentity lbrksld E29D {unknown} left bracket, solidus bottom corner
+\defineMMLentity lbrkslu E29B {unknown} left bracket, solidus top corner
+\defineMMLentity lceil 2308 {\lceil} left ceiling
+\defineMMLentity lfloor 230A {\lfloor} left floor
+\defineMMLentity lmoust E294 {\lmoustache} left moustache
+\defineMMLentity lparlt E292 {unknown} left parenthesis, lt
+\defineMMLentity ltrPar E295 {unknown} double right parenthesis, less
+\defineMMLentity rangd E298 {unknown} right angle, dot
+\defineMMLentity rbrke E29A {unknown} right bracket, equal
+\defineMMLentity rbrksld E29C {unknown} right bracket, solidus bottom corner
+\defineMMLentity rbrkslu E29E {unknown} right bracket, solidus top corner
+\defineMMLentity rceil 2309 {\rceil} right ceiling
+\defineMMLentity rfloor 230B {\rfloor} right floor
+\defineMMLentity rmoust E293 {\rmoustache} right moustache
+\defineMMLentity rpargt E291 {unknown} right paren, gt
+\defineMMLentity ulcorn 231C {unknown} upper left corner
+\defineMMLentity urcorn 231D {unknown} upper right corner
diff --git a/Master/texmf-dist/tex/context/base/xtag-meh.tex b/Master/texmf-dist/tex/context/base/xtag-meh.tex
new file mode 100644
index 00000000000..1636f2a2b9d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-meh.tex
@@ -0,0 +1,166 @@
+% filtered from html files by Patrick Ion
+%
+% ISOTECH Characters Extended
+%
+% General Technical
+
+\defineMMLentity acd E3A6 {unknown} ac current
+\defineMMLentity aleph 2135 {\aleph} aleph, Hebrew
+\defineMMLentity And E374 {unknown} double logical and
+\defineMMLentity and 2227 {\wedge} logical and
+\defineMMLentity andand E36E {unknown} two logical and
+\defineMMLentity andd E394 {unknown} and, horizontal dash
+\defineMMLentity andslope E50A {unknown} sloping large and
+\defineMMLentity andv E391 {unknown} and with middle stem
+\defineMMLentity angrt 221F {unknown} right (90 degree) angle
+\defineMMLentity angsph 2222 {unknown} angle-spherical
+\defineMMLentity angst 212B {\Angstrom} Angstrom capital A, ring
+\defineMMLentity ap 2248 {\approx} approximate
+\defineMMLentity apacir E38C {unknown} approximate, circumflex accent
+\defineMMLentity awconint 2233 {unknown} contour integral, anti-clockwise
+\defineMMLentity awint E39B {unknown} anti clock-wise integration
+\defineMMLentity becaus 2235 {unknown} because
+\defineMMLentity bernou 212C {unknown} Bernoulli function (script capital B)
+\defineMMLentity bne E388 {unknown} reverse not equal
+\defineMMLentity bnequiv E387 {unknown} reverse not equivalent
+\defineMMLentity bNot E3AD {unknown} reverse not with two horizontal strokes
+\defineMMLentity bnot 2310 {unknown} reverse not
+\defineMMLentity bottom 22A5 {unknown} bottom
+\defineMMLentity cap 2229 {\cap} intersection
+\defineMMLentity Cconint 2230 {unknown} triple contour integral operator
+\defineMMLentity cirfnint E395 {unknown} circulation function
+\defineMMLentity compfn 2218 {\circ} composite function (small circle)
+\defineMMLentity cong 2245 {\cong} congruent with
+\defineMMLentity Conint 222F {unknown} double contour integral operator
+\defineMMLentity conint 222E {\oint} contour integral operator
+\defineMMLentity ctdot 22EF {\cdots} three dots, centered
+\defineMMLentity cup 222A {\cup} union or logical sum
+\defineMMLentity cwconint 2232 {unknown} contour integral, clockwise
+\defineMMLentity cwint 2231 {unknown} clockwise integral
+\defineMMLentity cylcty 232D {unknown} cylindricity
+\defineMMLentity disin E3A0 {unknown} set membership, long horizontal stroke
+\defineMMLentity Dot 0308 {unknown} dieresis or umlaut mark
+\defineMMLentity DotDot 20DC {unknown} four dots above
+\defineMMLentity dsol E3A9 {unknown} solidus, bar above
+\defineMMLentity dtdot 22F1 {\ddots} three dots, descending
+\defineMMLentity dwangle E3AA {unknown} large downward pointing angle
+\defineMMLentity elinters E3A7 {unknown} electrical intersection
+\defineMMLentity epar 22D5 {unknown} parallel, equal; equal or parallel
+\defineMMLentity eparsl E384 {unknown} parallel, slanted, equal; homothetically co
+\defineMMLentity equiv 2261 {\equiv} identical with
+\defineMMLentity eqvparsl E386 {unknown} equivalent, equal; congruent and parallel
+\defineMMLentity exist 2203 {\exists} at least one exists
+\defineMMLentity fltns E381 {unknown} flatness
+\defineMMLentity forall 2200 {\forall} for all
+\defineMMLentity fpartint E396 {unknown} finite part integral
+\defineMMLentity ge 2265 {\geq} greater-than-or-equal
+\defineMMLentity hamilt 210B {unknown} Hamiltonian (script capital H)
+\defineMMLentity iff E365 {unknown} if and only if
+\defineMMLentity iinfin E372 {unknown} infinity sign, incomplete
+\defineMMLentity imped E50B {unknown} impedance
+\defineMMLentity infin 221E {\infty} infinity
+\defineMMLentity infintie E50C {unknown} tie, infinity
+\defineMMLentity Int 222C {unknown} double integral operator
+\defineMMLentity int 222B {\int} integral operator
+\defineMMLentity intlarhk E39A {unknown} integral, left arrow with hook
+\defineMMLentity isin 220A {\in} set membership
+\defineMMLentity isindot E39C {unknown} set membership, dot above
+\defineMMLentity isinE E39E {unknown} set membership, two horizontal strokes
+\defineMMLentity isins E3A4 {unknown} set membership, vertical bar on horizontal
+\defineMMLentity isinsv E3A2 {unknown} large set membership, vertical bar on horiz
+\defineMMLentity isinv 2208 {unknown} set membership, variant
+\defineMMLentity lagran 2112 {unknown} Lagrangian (script capital L)
+\defineMMLentity Lang 300A {unknown} left angle bracket, double
+\defineMMLentity lang 3008 {\langle} left angle bracket
+\defineMMLentity lArr 21D0 {\Leftarrow} is implied by
+\defineMMLentity lbbrk 3014 {unknown} left broken bracket
+\defineMMLentity le 2264 {\leq} less-than-or-equal
+\defineMMLentity loang 3018 {unknown} left open angular bracket
+\defineMMLentity lobrk 301A {unknown} left open bracket
+\defineMMLentity lopar E379 {unknown} left open parenthesis
+\defineMMLentity lowast 2217 {unknown} low asterisk
+\defineMMLentity minus 2212 {unknown} minus sign
+\defineMMLentity mnplus 2213 {\mp} minus-or-plus sign
+\defineMMLentity nabla 2207 {\nabla} del, Hamilton operator
+\defineMMLentity ne 2260 {\ne} not equal
+\defineMMLentity nedot E38A {unknown} not equal, dot
+\defineMMLentity nhpar E38D {unknown} not, horizontal, parallel
+\defineMMLentity ni 220D {unknown} contains
+\defineMMLentity nis E3A5 {unknown} contains, vertical bar on horizontal stroke
+\defineMMLentity nisd E3A1 {unknown} contains, long horizontal stroke
+\defineMMLentity niv 220B {\ni} contains, variant
+\defineMMLentity Not E3AC {unknown} not with two horizontal strokes
+\defineMMLentity notin 2209 {\notin} negated set membership
+\defineMMLentity notindot E39D {unknown} negated set membership, dot above
+\defineMMLentity notinE E50D {unknown} negated set membership, two horizontal strokes
+\defineMMLentity notinva E370 {unknown} negated set membership, variant
+\defineMMLentity notinvb E37B {unknown} negated set membership, variant
+\defineMMLentity notinvc E37C {unknown} negated set membership, variant
+\defineMMLentity notni 220C {unknown} negated contains
+\defineMMLentity notniva 220C {unknown} negated contains, variant
+\defineMMLentity notnivb E37D {unknown} contains, variant
+\defineMMLentity notnivc E37E {unknown} contains, variant
+\defineMMLentity nparsl E389 {unknown} not parallel, slanted
+\defineMMLentity npart E390 {unknown} not partial differential
+\defineMMLentity npolint E399 {unknown} line integration, not including the pole
+\defineMMLentity nvinfin E38E {unknown} not, vert, infinity
+\defineMMLentity olcross E3A8 {unknown} circle, cross
+\defineMMLentity Or E375 {unknown} double logical or
+\defineMMLentity or 2228 {\vee} logical or
+\defineMMLentity ord E393 {unknown} or, horizontal dash
+\defineMMLentity order 2134 {unknown} order of (script small o)
+\defineMMLentity oror E50E {unknown} two logical or
+\defineMMLentity orslope E3AE {unknown} sloping large or
+\defineMMLentity orv E392 {unknown} or with middle stem
+\defineMMLentity par 2225 {\parallel} parallel
+\defineMMLentity parsl E382 {unknown} parallel, slanted
+\defineMMLentity part 2202 {\partial} partial differential
+\defineMMLentity permil 2030 {unknown} per thousand
+\defineMMLentity perp 22A5 {\perp} perpendicular
+\defineMMLentity pertenk 2031 {unknown} per 10 thousand
+\defineMMLentity phmmat 2133 {unknown} physics M-matrix (script capital M)
+\defineMMLentity pointint E376 {unknown} integral around a point operator
+\defineMMLentity Prime 2033 {unknown} double prime or second
+\defineMMLentity prime 2032 {\prime} prime or minute
+\defineMMLentity profalar 232E {unknown} all-around profile
+\defineMMLentity profline 2312 {unknown} profile of a line
+\defineMMLentity profsurf 2313 {unknown} profile of a surface
+\defineMMLentity prop 221D {\propto} is proportional to
+\defineMMLentity qint E378 {unknown} quadruple integral operator
+\defineMMLentity qprime E371 {unknown} quadruple prime
+\defineMMLentity quatint E377 {unknown} quaternion integral operator
+\defineMMLentity radic 221A {\surd} radical
+\defineMMLentity Rang 300B {unknown} right angle bracket, double
+\defineMMLentity rang 3009 {\rangle} right angle bracket
+\defineMMLentity rArr 21D2 {\Rightarrow} implies
+\defineMMLentity rbbrk 3015 {unknown} right broken bracket
+\defineMMLentity roang 3019 {unknown} right open angular bracket
+\defineMMLentity robrk 301B {unknown} right open bracket
+\defineMMLentity ropar E37A {unknown} right open parenthesis
+\defineMMLentity rppolint E397 {unknown} line integration, rectangular path around pole
+\defineMMLentity scpolint E398 {unknown} line integration, semi-circular path around pole
+\defineMMLentity sim 223C {\sim} similar
+\defineMMLentity simdot E38B {unknown} similar, dot
+\defineMMLentity sime 2243 {\simeq} similar, equals
+\defineMMLentity smeparsl E385 {unknown} similar, parallel, slanted, equal
+\defineMMLentity square 25A1 {\square} square
+\defineMMLentity squarf 25A0 {unknown} square, filled
+\defineMMLentity strns E380 {unknown} straightness
+\defineMMLentity sub 2282 {\subset} subset or is implied by
+\defineMMLentity sube 2286 {\subseteq} subset, equals
+\defineMMLentity sup 2283 {\supset} superset or implies
+\defineMMLentity supe 2287 {\supseteq} superset, equals
+\defineMMLentity tdot 20DB {unknown} three dots above
+\defineMMLentity there4 2234 {unknown} therefore
+\defineMMLentity tint 222D {unknown} triple integral operator
+\defineMMLentity top 22A4 {\top} top
+\defineMMLentity topbot 2336 {unknown} top and bottom
+\defineMMLentity topcir E383 {unknown} top, circle below
+\defineMMLentity tprime 2034 {unknown} triple prime
+\defineMMLentity utdot 22F0 {unknown} three dots, ascending
+\defineMMLentity uwangle E3AB {unknown} large upward pointing angle
+\defineMMLentity vangrt 22BE {unknown} right angle, variant (with arc)
+\defineMMLentity veeeq 225A {unknown} logical or, equals
+\defineMMLentity Verbar 2016 {\Vert} double vertical bar
+\defineMMLentity wedgeq 2259 {unknown} corresponds to (wedge, equals)
+\defineMMLentity xnis E3A3 {unknown} large contains, vertical bar on horizontal stroke
diff --git a/Master/texmf-dist/tex/context/base/xtag-men.tex b/Master/texmf-dist/tex/context/base/xtag-men.tex
new file mode 100644
index 00000000000..d548c83940e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-men.tex
@@ -0,0 +1,98 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSN Characters Extended
+%
+% Added Math Symbols: Negated Relations
+
+\defineMMLentity gnap E411 {unknown} greater, not approximate
+\defineMMLentity gnE 2269 {unknown} greater, not double equals
+\defineMMLentity gne 2269 {unknown} greater, not equals
+\defineMMLentity gnsim 22E7 {unknown} greater, not similar
+\defineMMLentity gvnE E2A1 {unknown} gt, vert, not double equals
+\defineMMLentity lnap E2A2 {unknown} less, not approximate
+\defineMMLentity lnE 2268 {unknown} less, not double equals
+\defineMMLentity lne 2268 {unknown} less, not equals
+\defineMMLentity lnsim 22E6 {unknown} less, not similar
+\defineMMLentity lvnE E2A4 {unknown} less, vert, not double equals
+\defineMMLentity nap 2249 {unknown} not approximate
+\defineMMLentity napE E2C7 {unknown} not approximately equal or equal to
+\defineMMLentity napid E2BC {unknown} not approximately identical to
+\defineMMLentity ncong 2247 {unknown} not congruent with
+\defineMMLentity ncongdot E2C5 {unknown} not congruent, dot
+\defineMMLentity nequiv 2262 {unknown} not identical with
+\defineMMLentity ngE 2271 {unknown} not greater, double equals
+\defineMMLentity nge E2A6 {unknown} not greater-than-or-equal
+\defineMMLentity nges 2271 {unknown} not gt-or-equals, slanted
+\defineMMLentity nGg E2CE {unknown} not triple greater than
+\defineMMLentity ngsim 2275 {unknown} not greater, similar
+\defineMMLentity nGt E2CA {unknown} not, vert, much greater than
+\defineMMLentity ngt 226F {unknown} not greater-than
+\defineMMLentity nGtv E2CC {unknown} not much greater than, variant
+\defineMMLentity nlE 2270 {unknown} not less, double equals
+\defineMMLentity nle E2A7 {unknown} not less-than-or-equal
+\defineMMLentity nles 2270 {unknown} not less-or-equals, slant
+\defineMMLentity nLl E2CD {unknown} not triple less than
+\defineMMLentity nlsim 2274 {unknown} not less, similar
+\defineMMLentity nLt E2C9 {unknown} not, vert, much less than
+\defineMMLentity nlt 226E {unknown} not less-than
+\defineMMLentity nltri 22EA {unknown} not left triangle
+\defineMMLentity nltrie 22EC {unknown} not left triangle, equals
+\defineMMLentity nLtv E2CB {unknown} not much less than, variant
+\defineMMLentity nmid 2224 {unknown} negated mid
+\defineMMLentity npar 2226 {unknown} not parallel
+\defineMMLentity npr 2280 {unknown} not precedes
+\defineMMLentity nprcue 22E0 {unknown} not curly precedes, equals
+\defineMMLentity npre E412 {unknown} not precedes, equals
+\defineMMLentity nrtri 22EB {unknown} not right triangle
+\defineMMLentity nrtrie 22ED {unknown} not right triangle, equals
+\defineMMLentity nsc 2281 {unknown} not succeeds
+\defineMMLentity nsccue 22E1 {unknown} not succeeds, curly equals
+\defineMMLentity nsce E413 {unknown} not succeeds, equals
+\defineMMLentity nsim 2241 {unknown} not similar
+\defineMMLentity nsime 2244 {unknown} not similar, equals
+\defineMMLentity nsmid E2AA {unknown} negated short mid
+\defineMMLentity nspar E2AB {unknown} not short par
+\defineMMLentity nsqsube 22E2 {unknown} not, square subset, equals
+\defineMMLentity nsqsupe 22E3 {unknown} not, square superset, equals
+\defineMMLentity nsub 2284 {unknown} not subset
+\defineMMLentity nsubE 2288 {unknown} not subset, double equals
+\defineMMLentity nsube 2288 {unknown} not subset, equals
+\defineMMLentity nsup 2285 {unknown} not superset
+\defineMMLentity nsupE 2289 {unknown} not superset, double equals
+\defineMMLentity nsupe 2289 {unknown} not superset, equals
+\defineMMLentity ntgl 2279 {unknown} not greater, less
+\defineMMLentity ntlg 2278 {unknown} not less, greater
+\defineMMLentity ntvgl 2279 {unknown} not, vert, greater, less
+\defineMMLentity ntvlg 2278 {unknown} not, vert, less, greater
+\defineMMLentity nvap E2C6 {unknown} not, vert, approximate
+\defineMMLentity nVDash 22AF {unknown} not double vert, double dash
+\defineMMLentity nVdash 22AE {unknown} not double vertical, dash
+\defineMMLentity nvDash 22AD {unknown} not vertical, double dash
+\defineMMLentity nvdash 22AC {unknown} not vertical, dash
+\defineMMLentity nvge 2271 {unknown} not, vert, greater-than-or-equal
+\defineMMLentity nvgt 226F {unknown} not, vert, greater-than
+\defineMMLentity nvle 2270 {unknown} not, vert, less-than-or-equal
+\defineMMLentity nvlt 226E {unknown} not, vert, less-than
+\defineMMLentity nvltrie E2D0 {unknown} not, vert, left triangle, equals
+\defineMMLentity nvrtrie E2CF {unknown} not, vert, right triangle, equals
+\defineMMLentity nvsim E415 {unknown} not, vert, similar
+\defineMMLentity parsim E2C8 {unknown} parallel, similar
+\defineMMLentity prnap 22E8 {unknown} precedes, not approx
+\defineMMLentity prnE E2B3 {unknown} precedes, not double equals
+\defineMMLentity prnsim 22E8 {unknown} precedes, not similar
+\defineMMLentity rnmid E2D1 {unknown} reverse nmid
+\defineMMLentity scnap 22E9 {unknown} succeeds, not approx
+\defineMMLentity scnE E2B5 {unknown} succeeds, not double equals
+\defineMMLentity scnsim 22E9 {unknown} succeeds, not similar
+\defineMMLentity simne 2246 {unknown} similar, not equals
+\defineMMLentity solbar E416 {unknown} solidus, bar through
+\defineMMLentity subnE 228A {unknown} subset, not double equals
+\defineMMLentity subne 228A {unknown} subset, not equals
+\defineMMLentity supnE 228B {unknown} superset, not double equals
+\defineMMLentity supne 228B {unknown} superset, not equals
+\defineMMLentity vnsub 2284 {unknown} not subset, variant
+\defineMMLentity vnsup 2285 {unknown} not superset, variant
+\defineMMLentity vsubnE E2B8 {unknown} subset not double equals, variant
+\defineMMLentity vsubne E2B9 {unknown} subset, not equals, variant
+\defineMMLentity vsupnE E2BB {unknown} super not double equals, variant
+\defineMMLentity vsupne E2BA {unknown} superset, not equals, variant
diff --git a/Master/texmf-dist/tex/context/base/xtag-meo.tex b/Master/texmf-dist/tex/context/base/xtag-meo.tex
new file mode 100644
index 00000000000..f19f80fbe30
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-meo.tex
@@ -0,0 +1,58 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSO Characters Extended
+%
+% Added Math Symbols: Ordinary
+
+\defineMMLentity ang 2220 {\angle} angle
+\defineMMLentity ange E2D6 {unknown} angle, equal
+\defineMMLentity angmsd 2221 {unknown} angle-measured
+\defineMMLentity angmsdaa E2D9 {unknown} angle-measured, arrow, up, right
+\defineMMLentity angmsdab E2DA {unknown} angle-measured, arrow, up, left
+\defineMMLentity angmsdac E2DB {unknown} angle-measured, arrow, down, right
+\defineMMLentity angmsdad E2DC {unknown} angle-measured, arrow, down, left
+\defineMMLentity angmsdae E2DD {unknown} angle-measured, arrow, right, up
+\defineMMLentity angmsdaf E2DE {unknown} angle-measured, arrow, left, up
+\defineMMLentity angmsdag E2DF {unknown} angle-measured, arrow, right, down
+\defineMMLentity angmsdah E2E0 {unknown} angle-measured, arrow, left, down
+\defineMMLentity angrtvb E418 {unknown} right angle-measured
+\defineMMLentity angrtvbd E2E1 {unknown} right angle-measured, dot
+\defineMMLentity bbrk E2EE {unknown} bottom square bracket
+\defineMMLentity bbrktbrk E419 {unknown} bottom above top square bracket
+\defineMMLentity bemptyv E41A {unknown} reversed circle, slash
+\defineMMLentity beth 2136 {unknown} beth, Hebrew
+\defineMMLentity boxbox E2E6 {unknown} two joined squares
+\defineMMLentity bprime 2035 {unknown} reverse prime
+\defineMMLentity bsemi E2ED {unknown} reverse semi-colon
+\defineMMLentity cemptyv E2E8 {unknown} circle, slash, small circle above
+\defineMMLentity cirE E41B {unknown} circle, two horizontal stroked to the right
+\defineMMLentity cirscir E41C {unknown} circle, small circle to the right
+\defineMMLentity comp 2201 {unknown} complement sign
+\defineMMLentity daleth 2138 {unknown} daleth, Hebrew
+\defineMMLentity demptyv E2E7 {unknown} circle, slash, bar above
+\defineMMLentity ell 2113 {\ell} cursive small l
+\defineMMLentity empty E2D3 {unknown} letter O slashed
+\defineMMLentity emptyv 2205 {unknown} circle, slash
+\defineMMLentity gimel 2137 {unknown} gimel, Hebrew
+\defineMMLentity iiota 2129 {unknown} inverted iota
+\defineMMLentity image 2111 {\Im} imaginary
+\defineMMLentity imath 0131 {\imath} small i, no dot
+\defineMMLentity jmath E2D4 {unknown} small j, no dot
+\defineMMLentity laemptyv E2EA {unknown} circle, slash, left arrow above
+\defineMMLentity lltri E2E5 {unknown} lower left triangle
+\defineMMLentity lrtri E2E3 {unknown} lower right triangle
+\defineMMLentity mho 2127 {unknown} conductance
+\defineMMLentity nang E2D8 {unknown} not, vert, angle
+\defineMMLentity nexist 2204 {unknown} negated exists
+\defineMMLentity oS E41D {unknown} capital S in circle
+\defineMMLentity plank E2D5 {unknown} Planck's over 2pi
+\defineMMLentity plankv 210F {unknown} variant Planck's over 2pi
+\defineMMLentity raemptyv E2E9 {unknown} circle, slash, right arrow above
+\defineMMLentity range E2D7 {unknown} reverse angle, equal
+\defineMMLentity real 211C {\Re} real
+\defineMMLentity tbrk E2EF {unknown} top square bracket
+\defineMMLentity trpezium E2EC {unknown} trapezium
+\defineMMLentity ultri E2E4 {unknown} upper left triangle
+\defineMMLentity urtri E2E2 {unknown} upper right triangle
+\defineMMLentity vzigzag E2EB {unknown} vertical zig-zag line
+\defineMMLentity weierp 2118 {\wp} Weierstrass p
diff --git a/Master/texmf-dist/tex/context/base/xtag-mer.tex b/Master/texmf-dist/tex/context/base/xtag-mer.tex
new file mode 100644
index 00000000000..becff584a9c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mer.tex
@@ -0,0 +1,185 @@
+% filtered from html files by Patrick Ion
+%
+% ISOAMSR Characters Extended
+%
+% Added Math Symbols: Relations
+
+\defineMMLentity apE E315 {unknown} approximately equal or equal to
+\defineMMLentity ape 224A {unknown} approximate, equals
+\defineMMLentity apid 224B {unknown} approximately identical to
+\defineMMLentity asymp 224D {\asymp} asymptotically equal to
+\defineMMLentity Barv E311 {unknown} vert, double bar (over)
+\defineMMLentity bcong 224C {unknown} reverse congruent
+\defineMMLentity bepsi E420 {unknown} such that
+\defineMMLentity bowtie 22C8 {unknown} bowtie
+\defineMMLentity bsim 223D {unknown} reverse similar
+\defineMMLentity bsime 22CD {unknown} reverse similar, equals
+\defineMMLentity bsolhsub E34D {unknown} reverse solidus, subset
+\defineMMLentity bump 224E {unknown} bumpy equals
+\defineMMLentity bumpe 224F {unknown} bumpy equals, equals
+\defineMMLentity cire 2257 {unknown} circle, equals
+\defineMMLentity Colon 2237 {unknown} two colons
+\defineMMLentity Colone E30E {unknown} double colon, equals
+\defineMMLentity colone 2254 {unknown} colon, equals
+\defineMMLentity congdot E314 {unknown} congruent, dot
+\defineMMLentity csub E351 {unknown} subset, closed
+\defineMMLentity csube E353 {unknown} subset, closed, equals
+\defineMMLentity csup E352 {unknown} superset, closed
+\defineMMLentity csupe E354 {unknown} superset, closed, equals
+\defineMMLentity cuepr 22DE {unknown} curly equals, precedes
+\defineMMLentity cuesc 22DF {unknown} curly equals, succeeds
+\defineMMLentity Dashv E30F {unknown} double dash, vertical
+\defineMMLentity dashv 22A3 {\dashv} dash, vertical
+\defineMMLentity easter 225B {unknown} equal, asterisk above
+\defineMMLentity ecir 2256 {unknown} circle on equals sign
+\defineMMLentity ecolon 2255 {unknown} equals, colon
+\defineMMLentity eDDot E309 {unknown} equal with four dots
+\defineMMLentity eDot 2251 {unknown} equals, even dots
+\defineMMLentity efDot 2252 {unknown} equals, falling dots
+\defineMMLentity eg E328 {unknown} equal-or-greater
+\defineMMLentity egs 22DD {unknown} equal-or-gtr, slanted
+\defineMMLentity egsdot E324 {unknown} equal-or-greater, slanted, dot inside
+\defineMMLentity el E327 {unknown} equal-or-less
+\defineMMLentity els 22DC {unknown} eq-or-less, slanted
+\defineMMLentity elsdot E323 {unknown} equal-or-less, slanted, dot inside
+\defineMMLentity equest 225F {unknown} equal with questionmark
+\defineMMLentity equivDD E318 {unknown} equivalent, four dots above
+\defineMMLentity erDot 2253 {unknown} equals, rising dots
+\defineMMLentity esdot 2250 {unknown} equals, single dot above
+\defineMMLentity Esim E317 {unknown} equal, similar
+\defineMMLentity esim 2242 {unknown} equals, similar
+\defineMMLentity fork 22D4 {unknown} pitchfork
+\defineMMLentity forkv E31B {unknown} fork, variant
+\defineMMLentity frown 2322 {\frown} down curve
+\defineMMLentity gap 2273 {unknown} greater, approximate
+\defineMMLentity gE 2267 {unknown} greater, double equals
+\defineMMLentity gEl 22DB {unknown} gt, double equals, less
+\defineMMLentity gel 22DB {unknown} greater, equals, less
+\defineMMLentity ges E421 {unknown} gt-or-equal, slanted
+\defineMMLentity gescc E358 {unknown} greater than, closed by curve, equal, slanted
+\defineMMLentity gesdot E31E {unknown} greater-than-or-equal, slanted, dot inside
+\defineMMLentity gesdoto E320 {unknown} greater-than-or-equal, slanted, dot above
+\defineMMLentity gesdotol E322 {unknown} greater-than-or-equal, slanted, dot above left
+\defineMMLentity gesl E32C {unknown} greater, equal, slanted, less
+\defineMMLentity gesles E332 {unknown} greater, equal, slanted, less, equal, slanted
+\defineMMLentity Gg 22D9 {unknown} triple gtr-than
+\defineMMLentity gl 2277 {unknown} greater, less
+\defineMMLentity gla E330 {unknown} greater, less, apart
+\defineMMLentity glE E32E {unknown} greater, less, equal
+\defineMMLentity glj E32F {unknown} greater, less, overlapping
+\defineMMLentity gsim 2273 {unknown} greater, similar
+\defineMMLentity gsime E334 {unknown} greater, similar, equal
+\defineMMLentity gsiml E336 {unknown} greater, similar, less
+\defineMMLentity Gt 226B {unknown} double greater-than sign
+\defineMMLentity gtcc E356 {unknown} greater than, closed by curve
+\defineMMLentity gtcir E326 {unknown} greater than, circle inside
+\defineMMLentity gtdot 22D7 {unknown} greater than, with dot
+\defineMMLentity gtquest E32A {unknown} greater than, questionmark above
+\defineMMLentity gtrarr E35F {unknown} greater than, right arrow
+\defineMMLentity homtht 223B {unknown} homothetic
+\defineMMLentity lap 2272 {unknown} less, approximate
+\defineMMLentity lat E33A {unknown} larger than
+\defineMMLentity late E33C {unknown} larger than or equal
+\defineMMLentity lates E33E {unknown} larger than or equal, slanted
+\defineMMLentity lE 2266 {unknown} less, double equals
+\defineMMLentity lEg 22DA {unknown} less, double equals, greater
+\defineMMLentity leg 22DA {unknown} less, equals, greater
+\defineMMLentity les E425 {unknown} less-than-or-equals, slant
+\defineMMLentity lescc E357 {unknown} less than, closed by curve, equal, slanted
+\defineMMLentity lesdot E31D {unknown} less-than-or-equal, slanted, dot inside
+\defineMMLentity lesdoto E31F {unknown} less-than-or-equal, slanted, dot above
+\defineMMLentity lesdotor E321 {unknown} less-than-or-equal, slanted, dot above right
+\defineMMLentity lesg E32B {unknown} less, equal, slanted, greater
+\defineMMLentity lesges E331 {unknown} less, equal, slanted, greater, equal, slanted
+\defineMMLentity lg 2276 {unknown} less, greater
+\defineMMLentity lgE E32D {unknown} less, greater, equal
+\defineMMLentity Ll 22D8 {unknown} triple less-than
+\defineMMLentity lsim 2272 {unknown} less, similar
+\defineMMLentity lsime E333 {unknown} less, similar, equal
+\defineMMLentity lsimg E335 {unknown} less, similar, greater
+\defineMMLentity Lt 226A {unknown} double less-than sign
+\defineMMLentity ltcc E355 {unknown} less than, closed by curve
+\defineMMLentity ltcir E325 {unknown} less than, circle inside
+\defineMMLentity ltdot 22D6 {unknown} less than, with dot
+\defineMMLentity ltlarr E35E {unknown} less than, left arrow
+\defineMMLentity ltquest E329 {unknown} less than, questionmark above
+\defineMMLentity ltrie 22B4 {unknown} left triangle, equals
+\defineMMLentity mcomma E31A {unknown} minus, comma above
+\defineMMLentity mDDot 223A {unknown} minus with four dots, geometric properties
+\defineMMLentity mid 2223 {\mid} mid
+\defineMMLentity mlcp E30A {unknown} transversal intersection
+\defineMMLentity models 22A7 {\models} models
+\defineMMLentity mstpos 223E {unknown} most positive
+\defineMMLentity Pr E35C {unknown} double precedes
+\defineMMLentity pr 227A {\prec} precedes
+\defineMMLentity prap 227E {unknown} precedes, approximate
+\defineMMLentity prcue 227C {unknown} precedes, curly equals
+\defineMMLentity prE 227C {unknown} precedes, double equals
+\defineMMLentity pre 227C {\preceq} precedes, equals
+\defineMMLentity prsim 227E {unknown} precedes, similar
+\defineMMLentity prurel 22B0 {unknown} element precedes under relation
+\defineMMLentity ratio 2236 {unknown} ratio
+\defineMMLentity rtrie 22B5 {unknown} right triangle, equals
+\defineMMLentity rtriltri E359 {unknown} right triangle above left triangle
+\defineMMLentity Sc E35D {unknown} double succeeds
+\defineMMLentity sc 227B {\succ} succeeds
+\defineMMLentity scap 227F {unknown} succeeds, approximate
+\defineMMLentity sccue 227D {unknown} succeeds, curly equals
+\defineMMLentity scE 227E {unknown} succeeds, double equals
+\defineMMLentity sce 227D {\succeq} succeeds, equals
+\defineMMLentity scsim 227F {unknown} succeeds, similar
+\defineMMLentity sdote E319 {unknown} equal, dot below
+\defineMMLentity sfrown E426 {unknown} small down curve
+\defineMMLentity simg E30C {unknown} similar, greater
+\defineMMLentity simgE E338 {unknown} similar, greater, equal
+\defineMMLentity siml E30B {unknown} similar, less
+\defineMMLentity simlE E337 {unknown} similar, less, equal
+\defineMMLentity smid E301 {unknown} shortmid
+\defineMMLentity smile 2323 {\smile} up curve
+\defineMMLentity smt E339 {unknown} smaller than
+\defineMMLentity smte E33B {unknown} smaller than or equal
+\defineMMLentity smtes E33D {unknown} smaller than or equal, slanted
+\defineMMLentity spar E302 {unknown} short parallel
+\defineMMLentity sqsub 228F {unknown} square subset
+\defineMMLentity sqsube 2291 {\sqsubseteq} square subset, equals
+\defineMMLentity sqsup 2290 {unknown} square superset
+\defineMMLentity sqsupe 2292 {\sqsupseteq} square superset, equals
+\defineMMLentity ssmile E303 {unknown} small up curve
+\defineMMLentity Sub 22D0 {unknown} double subset
+\defineMMLentity subE 2286 {unknown} subset, double equals
+\defineMMLentity subedot E34F {unknown} subset, equals, dot
+\defineMMLentity submult E343 {unknown} subset, multiply
+\defineMMLentity subplus E341 {unknown} subset, plus
+\defineMMLentity subrarr E33F {unknown} subset, right arrow
+\defineMMLentity subsim E345 {unknown} subset, similar
+\defineMMLentity subsub E349 {unknown} subset above subset
+\defineMMLentity subsup E347 {unknown} subset above superset
+\defineMMLentity Sup 22D1 {unknown} double superset
+\defineMMLentity supdsub E34C {unknown} superset, subset, dash joining them
+\defineMMLentity supE 2287 {unknown} superset, double equals
+\defineMMLentity supedot E350 {unknown} superset, equals, dot
+\defineMMLentity suphsol E34E {unknown} superset, solidus
+\defineMMLentity suphsub E34B {unknown} superset, subset
+\defineMMLentity suplarr E340 {unknown} superset, left arrow
+\defineMMLentity supmult E344 {unknown} superset, multiply
+\defineMMLentity supplus E342 {unknown} superset, plus
+\defineMMLentity supsim E346 {unknown} superset, similar
+\defineMMLentity supsub E348 {unknown} superset above subset
+\defineMMLentity supsup E34A {unknown} superset above superset
+\defineMMLentity thkap E306 {unknown} thick approximate
+\defineMMLentity thksim E429 {unknown} thick similar
+\defineMMLentity topfork E31C {unknown} fork with top
+\defineMMLentity trie 225C {unknown} triangle, equals
+\defineMMLentity twixt 226C {unknown} between
+\defineMMLentity Vbar E30D {unknown} double vert, bar (under)
+\defineMMLentity vBar E310 {unknown} vert, double bar (under)
+\defineMMLentity vBarv E312 {unknown} double bar, vert over and under
+\defineMMLentity VDash 22AB {unknown} double vert, double dash
+\defineMMLentity Vdash 22A9 {unknown} double vertical, dash
+\defineMMLentity vDash 22A8 {unknown} vertical, double dash
+\defineMMLentity vdash 22A2 {\vdash} vertical, dash
+\defineMMLentity Vdashl E313 {unknown} vertical, dash (long)
+\defineMMLentity vltri 22B2 {\triangleleft} left triangle, open, variant
+\defineMMLentity vprop 221D {unknown} proportional, variant
+\defineMMLentity vrtri 22B3 {\triangleright} right triangle, open, variant
+\defineMMLentity Vvdash 22AA {unknown} triple vertical, dash
diff --git a/Master/texmf-dist/tex/context/base/xtag-mmc.tex b/Master/texmf-dist/tex/context/base/xtag-mmc.tex
new file mode 100644
index 00000000000..a6f7578c214
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mmc.tex
@@ -0,0 +1,1261 @@
+%D \module
+%D [ file=xtag-mmc,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Math ML,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (content math ml)}
+
+% this is the first, experimental, shabby implementation, as
+% always, the third will do -)
+
+% okay, now this is the second one, with a more kid based
+% approach, which we needed for proper nesting, but the
+% code is still too ugly
+
+\startXMLmapping[mml]
+
+\unprotect
+
+\def\MMLccomma{{,}}
+
+\def\getmmlarguments#1#2#3#4#5#6% {class} {defaults} mmlargs
+ {\getXMLarguments{#1}{#2 #5}}%
+
+\def\doifMMLoperatorelse#1#2#3% temp hack
+ {\pushmacro\xmlrent
+ \let\xmlrent\firstofoneargument
+ \edef\mmloperator{#1}%
+ \@EA\unspaceargument\mmloperator\to\mmloperator
+ \popmacro\xmlrent
+ \doifXMLentityelse\mmloperator
+ {\doifdefinedelse{doMMLcFN\mmloperator}{#2}{#3}}
+ {#3}}
+
+\remapXMLsequence [ci] [CPA] \MMLcCI
+\remapXMLsequence [cn] [CPA] \MMLcCN
+\remapXMLsequence [csymbol] [CPA] \MMLcCSYMBOL
+
+\setupMMLappearance[polar][\c!alternative=\v!a] % a|b|c
+
+\def\MMLcpolar#1%
+ {\doifdefinedelse{MMLcdopolar\@@MMLpolaralternative}
+ {\getvalue{MMLcdopolar\@@MMLpolaralternative}{#1}}
+ {#1}}
+
+\def\MMLcdopolara#1%
+ {\def\MMLcsep{\MMLccomma}\getXMLentity{polar}\left(#1\right)}
+
+\def\MMLcdopolarb#1%
+ {\def\MMLcsep##1\empty%
+ {\getXMLentity{exponentiale}^{##1\mskip2mu\getXMLentity{imaginaryi}}}#1}
+
+\def\MMLcdopolarc#1%
+ {\def\MMLcsep##1\empty%
+ {\getXMLentity{exp}\left(##1\mskip2mu\getXMLentity{imaginaryi}\right)}#1}
+
+\def\MMLccartesian#1%
+ {\def\MMLcsep{+}#1\getXMLentity{imaginaryi}}
+
+% float will be obsolete, an is replace by e-notation
+
+\setupMMLappearance[float][\c!symbol=\v!no] % \v!yes|dot
+
+\def\MMLcfloat#1%
+ {\doifelse\@@MMLfloatsymbol\v!no
+ {{\rm#1}} % make sure that e shows up ok
+ {% we should ignore \entities !
+ \beforesplitstring#1\at e\to\first
+ \aftersplitstring #1\at e\to\last
+ \ifx\first\empty #1\else
+ \ifx\last \empty #1\else
+ \first
+ \doifelse\@@MMLfloatsymbol{dot}\cdot\times
+ 10^{\last}%
+ \fi\fi}}
+
+% we now have:
+
+\setupMMLappearance[enotation][\c!symbol=\v!no] % \v!yes|dot
+
+\def\MMLcenotation#1%
+ {\doifelse\@@MMLenotationsymbol\v!no
+ {\def\MMLcsep {\unskip{\rm e}\ignorespaces}}
+ {\def\MMLcsep##1\empty{\doifelse\@@MMLenotationsymbol{dot}\cdot\times10^{##1}}}%
+ #1\empty}
+
+\def\MMLcCI#1% #2% can be sped up with \doifundefined ...
+ {\getXMLarguments{ci}{type="" #1}%
+ \doifXMLparelse{ci}{type}
+ {\processaction
+ [\XMLpar{ci}{type}{}]
+ [ set=>\let\next\MMLcCIset,
+ vector=>\let\next\MMLcCIvector,
+ matrix=>\let\next\MMLcCImatrix,
+ function=>\let\next\MMLcCIfunction,
+complex-cartesian=>\let\next\MMLccartesian,
+ complex=>\let\next\MMLccartesian,
+ complex-polar=>\let\next\MMLcpolar,
+ polar=>\let\next\MMLcpolar,
+ fn=>\let\next\MMLcCIfunction,
+ unknown=>\let\next\firstofoneargument]} % integer constant real float
+ {\let\next\firstofoneargument}%
+ \next}
+
+\def\MMLcCIset#1%
+ {{\bbd#1}}
+
+\def\widevec#1%
+ {\vbox{\m@th\ialign{##\crcr
+ \rightarrowfill\crcr\noalign{\nointerlineskip}%
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+
+\def\MMLcCIvector#1%
+ {\widevec{#1}}
+
+\def\MMLcCImatrix#1%
+ {{\bi#1}}
+
+\def\MMLcCIfunction#1%
+ {\doifMMLoperatorelse{#1}\MMLcCIdefault\MMLcFNdefault{}{#1}}
+
+\def\MMLcCIdefault#1#2% #1=dummy
+ {#2%\!% \getXMLentity{NegThinSpace}% looks bad in A(x)
+ \doifnextcharelse\xmlr
+ {\encapsulatenextXMLRelements{\left(}{\MMLccomma}{\right)}}
+ {}}
+
+\def\MMLcCN#1% #2% can be sped up with \doifundefined ...
+ {\getXMLarguments{cn}{type="" #1}%
+ \doifXMLparelse{cn}{type}
+ {\processaction
+ [\XMLpar{cn}{type}{}]
+ [ integer=>\let\next\MMLcCNinteger,
+ logical=>\let\next\MMLcCNlogical,
+ rational=>\let\next\MMLcCNrational,
+complex-cartesian=>\let\next\MMLccartesian,
+ complex=>\let\next\MMLccartesian,
+ complex-polar=>\let\next\MMLcpolar,
+ polar=>\let\next\MMLcpolar,
+ e-notation=>\let\next\MMLcenotation, % new
+ float=>\let\next\MMLcfloat, % obsolete
+ real=>\let\next\MMLcfloat, % ?
+ unknown=>\let\next\firstofoneargument]}
+ {\let\next\firstofoneargument}
+ \next}
+
+\setupMMLappearance[base][\c!symbol=\v!numbers] % cijfers|letters|tekst|nee
+
+\def\MMLcCNinteger#1%
+ {\doifXMLparelse{cn}{base}
+ {\def\MMLcCNbase{\XMLpar{cn}{base}{}}%
+ \doifelse\@@MMLbasesymbol\v!no
+ {\MMLcCNbasedata{#1}}
+ {\MMLcCNbasedata{#1}_{\hbox{$\rm\scriptscriptstyle
+ \processaction
+ [\@@MMLbasesymbol]
+ [\v!characters=>\MMLcCNbasestring BODH,
+ \v!text=>\MMLcCNbasestring{BIN}{OCT}{DEC}{HEX},
+ \s!unknown=>\MMLcCNbase]$}}}}
+ {#1}}
+
+\def\MMLcCNbasedata#1%
+ {\ifnum\MMLcCNbase>10{\rm#1}\else#1\fi}
+
+\def\MMLcCNbasestring#1#2#3#4%
+ {\ifnum\MMLcCNbase= 2 #1\else
+ \ifnum\MMLcCNbase= 8 #2\else
+ \ifnum\MMLcCNbase=10 #3\else
+ \ifnum\MMLcCNbase=16 #4\else
+ \MMLcCNbase \fi\fi\fi\fi}
+
+\def\MMLcCNlogical#1%
+ {{\rm#1}}
+
+\def\MMLcCNrational#1%
+ {\ConvertConstantAfter\doifinstringelse{sep}{#1}
+ {\doMMLcCNrational#1\empty}
+ {#1}}
+
+\def\doMMLcCNrational#1\xmlr#2#3#4#5\empty
+ {\hbox{$\frac{#1}{#5}$}}
+
+\def\MMLcCSYMBOL#1#2% TO DO
+ {\getXMLarguments{csymbol}{encoding="text" #1}%
+ \doifelse{\XMLpar{csymbol}{encoding}{}}{text}
+ {{\rm#2}}{#2}}
+
+%%% basic content elements
+
+\remapXMLsequence [apply] [CPA] \MMLcAPPLY
+
+\newcount\@MMLlevel \def\MMLcreset{\@MMLlevel=0 }
+
+\let\MMLctempresetlist\empty \def\setMMLcreset{\edef\MMLctempresetlist}
+
+\def\MMLcmainresetlist%
+ {times/,divide/,power/,%
+ lt/,gt/,eq/,leq/,geq/,%
+ in/,inverse/,%
+ fn,%
+ floor/,ceiling/,%
+ mean/,%
+ selector/,%
+ abs/,int/,limit/,sum/,product/,%
+ outerproduct/,innerproduct/,scalarproduct/}
+
+\def\MMLcfunctionlist
+ {sin/,arcsin/,sinh/,arcsinh/,%
+ cos/,arccos/,cosh/,arccosh/,%
+ tan/,arctan/,tanh/,arctanh/,%
+ cot/,arccot/,coth/,arccoth/,%
+ csc/,arccsc/,csch/,arccsch/,%
+ sec/,arcsec/,sech/,arcsech/,%
+ ln/,exp/,log/,%
+ abs/,int/,limit/,sum/,product/,%
+ fn} % ?
+
+\def\MMLcconstructlist
+ {diff/,partialdiff/,root/} % apply goes wrong on 1/2 * (a_2 + b_3)
+
+% better: no () here but explicitly when needed, which is in
+% less cases
+
+\def\MMLcAPPLY#1#2%
+ {\mathinner{\begingroup % new, else 1/2(1+2) problem / inner: ask taco
+ \pushmacro\xmlr
+ \@EA\@EA\@EA\doifXMLRchild\@EA\@EA\@EA{\@EA\MMLcmainresetlist\@EA,\MMLctempresetlist}{#2}
+ {\MMLcreset}%
+ \ifcase\@MMLlevel
+ \getXMLarguments{apply}{open="" close="" #1}%
+ \else
+ \getXMLarguments{apply}{open="(" close=")" #1}%
+ \fi
+ \doifXMLparelse{apply}{open}{\left\XMLpar{apply}{open}{}}{}%
+ \advance\@MMLlevel+1
+ \begingroup
+ \let\MMLctempresetlist\empty
+ \let\xmlr\naturalxmlr % beter een \pushmacro\xmlr
+ #2\empty
+ \endgroup % ook level push
+ \advance\@MMLlevel-1
+ \doifXMLparelse{apply}{close}{\right\XMLpar{apply}{close}{}}{}%
+ \popmacro\xmlr
+ \endgroup}}
+
+\remapXMLsequence [reln] [CPA] \MMLcRELN
+
+\def\MMLcRELN%
+ {\writestatus{XML}{MathML element "reln" is obsolete}\MMLcAPPLY}
+
+\remapXMLsequence [fn] [CPA] \MMLcFN
+
+\def\MMLcFN#1#2% neg space needed because of \left
+ {\doifXMLRchildelse{ci}{#2}
+ {\collectXMLRchild{ci}{#2}%
+ \@EA\doifMMLoperatorelse\@EA{\the\XMLRtoks}
+ \MMLcFNoperator\MMLcFNdefault}
+ {\MMLcFNdefault}%
+ {#1}{#2}}
+
+\def\MMLcFNdefault#1#2% neg space needed because of \left
+ {#2\!% \getXMLentity{NegThinSpace}%
+ \MMLcreset\encapsulatenextXMLRelements{\left(}{\MMLccomma}{\right)}}
+
+% special function handlers
+
+\def\MMLcFNoperator
+ {\getvalue{doMMLcFN\mmloperator}}
+
+% \def\doMMLcFNplusminus#1#2#3\empty
+% {\countXMLRchildren{#3}%
+% \ifcase\nofXMLRchildren\or
+% #2#3%
+% \else % suboptimal for instance under root
+% \encapsulateXMLR{\left(}{#2}{\right)}{\MMLcreset#3}%
+% \fi}
+
+\def\doMMLcFNplusminus#1#2#3\empty
+ {\countXMLRchildren{#3}%
+ \ifcase\nofXMLRchildren\or
+ \def\next{#2#3}%
+ \else
+ \def\next
+ {\doifnextcharelse\xmlr
+ {\encapsulateXMLR{\left(}{#2}{\right)}{\MMLcreset#3}}%
+ {\encapsulateXMLR{}{#2}{}{\MMLcreset#3}}}%
+ \fi
+ \next}
+
+\let\doMMLcFNminusplus\doMMLcFNplusminus
+
+\def\doMMLcFNcontinued#1#2#3\empty
+ {#3\getXMLentity{continued}}
+
+% so far for the special handlers
+
+\remapXMLsequence [interval] [CPA] \MMLcINTERVAL
+
+\def\MMLcINTERVAL#1#2%
+ {\withnexttwoXMLRelements
+ {\getXMLarguments{interval}{closure="closed" #1}%
+ \processaction
+ [\XMLpar{interval}{closure}{closed}]
+ [ closed=>{[\firstXMLRelement,\secondXMLRelement]},
+ open-closed=>{(\firstXMLRelement,\secondXMLRelement]},
+ closed-open=>{[\firstXMLRelement,\secondXMLRelement)},
+ open=>{(\firstXMLRelement,\secondXMLRelement)},
+ \s!unknown=>{[\firstXMLRelement,\secondXMLRelement]}]}%
+ #2\empty}
+
+\remapXMLsingular [inverse] [CPA] \MMLcINVERSE
+
+\def\MMLcINVERSE#1#2%
+ {\withnextXMLRelement
+ {\nextXMLRelement\empty^{-1}% \empty kills MMLcfunction lookahead
+ \withnextXMLRelement
+ {\ifx\nextXMLRelement\empty \else
+ \left[\nextXMLRelement\right]%
+ \fi}}}
+
+\remapXMLsingular [sep] [CPA] \MMLcSEP
+
+\def\MMLcSEP#1#2{\MMLcsep} \def\MMLcsep{\,}
+
+\remapXMLsequence [condition] [CPA] \MMLcCONDITION
+
+\def\MMLcCONDITION#1#2%
+ {\pushmacro\MMLcBVAR
+ \doifXMLRchild{bvar}{#2}{\processXMLRchild{bvar}{#2}\mid}%
+ \let\MMLcBVAR\ignoreXMLRelement
+ \processXMLRchildren{#2}%
+ \popmacro\MMLcBVAR}
+
+\remapXMLsequence [declare] [CPA] \MMLcDECLARE
+
+\setupMMLappearance[declare][\c!state=\v!start]
+
+\def\MMLcDECLARE#1#2%
+ {\doif\@@MMLdeclarestate\v!start
+ {\withnextXMLRelement
+ {\getXMLentity{declare}\nextXMLRelement
+ \countXMLRchildren{#2}%
+ \ifnum\nofXMLRchildren>1
+ \;% \getXMLentity{ThickSpace}%
+ \getXMLentity{as}%
+ \;% \getXMLentity{ThickSpace}%
+ \fi}%
+ #2\empty}}
+
+\remapXMLsequence [lambda] [CPA] \MMLcLAMBDA
+
+\setupMMLappearance[lambda][\c!alternative=b]
+
+\def\MMLcLAMBDA#1#2%
+ {\doifelse\@@MMLlambdaalternative\v!a
+ {\encapsulateXMLR{\getXMLentity{lambda}(}{\MMLccomma}{)}{#2}}
+ {\countXMLRchild{bvar}{#2}%
+ \ifnum\nofXMLRchildren>1
+ \collectXMLRchild{bvar}{#2}%
+ \encapsulateXMLR{\left(}{\MMLccomma}{\right)}{\the\XMLRtoks}%
+ \else
+ \processXMLRchild{bvar}{#2}%
+ \fi
+ \getXMLentity{mapsto}%
+ \processXMLRchild{apply,reln,ci,cn}{#2}}}
+
+\remapXMLsingular [compose] [CPA] \MMLcCOMPOSE
+
+\def\MMLcCOMPOSE#1#2#3\empty
+ {\doifMMLfunctionelse{#3}
+ {\encapsulateXMLR{\left(}{\circ}{\right)}{#3}}
+ {\encapsulateXMLR{}{\circ}{}{#3}}}
+
+\remapXMLsingular [ident] [CPA] \MMLcIDENT
+
+\def\MMLcIDENT#1#2{\getXMLentity{identity}}
+
+\remapXMLsingular [domain] [CPA] \MMLcDOMAIN
+\remapXMLsingular [codomain] [CPA] \MMLcCODOMAIN
+
+\def\MMLcDOMAIN #1#2#3\empty
+ {\getXMLentity{domain}(\MMLcreset\processXMLRchildren{#3})}
+
+\def\MMLcCODOMAIN#1#2#3\empty
+ {\getXMLentity{codomain}(\MMLcreset\processXMLRchildren{#3})}
+
+\remapXMLsingular [image] [CPA] \MMLcIMAGE
+
+\def\MMLcIMAGE#1#2%
+ {\withnextXMLRelement{\getXMLentity{image}(\nextXMLRelement)}}
+
+\remapXMLsequence [domainofapplication] [CPA] \MMLcDOMAINOFAPPLICATION
+
+\def\MMLcDOMAINOFAPPLICATION#1#2{#2}
+
+\remapXMLsequence [piecewise] [CPA] \MMLcPIECEWISE
+\remapXMLsequence [piece] [CPA] \MMLcPIECE
+\remapXMLsequence [otherwise] [CPA] \MMLcOTHERWISE
+
+\setupMMLappearance[piece][\c!separator=]
+
+\def\MMLcPIECEWISE#1#2%
+ {\cases{#2}}
+
+\def\MMLcPIECEseparator{\doif\@@MMLpieceseparator\v!yes,}
+
+\def\MMLcPIECE#1#2%
+ {\withnexttwoXMLRelements
+ {\@EA\XMLRtoks\@EA{\firstXMLRelement\MMLcPIECEseparator\@col@amp@}%
+ \@EA\appendtoks\@EA\mathematics\@EA{\secondXMLRelement}\to\XMLRtoks
+ \the\XMLRtoks\crcr}%
+ #2}
+
+\def\MMLcOTHERWISE#1#2%
+ {#2\MMLcPIECEseparator\@col@amp@\mathematics{\getXMLentity{otherwise}}\crcr}
+
+%%% arithmic, algebra and logic
+
+\remapXMLsingular [quotient] [CPA] \MMLcQUOTIENT
+
+\def\MMLcQUOTIENT#1#2%
+ {\withnexttwoXMLRelements{\lfloor\firstXMLRelement/\secondXMLRelement\rfloor}}
+
+\remapXMLsingular [factorial] [CPA] \MMLcFACTORIAL
+
+\def\MMLcFACTORIAL#1#2%
+ {\withnextXMLRelement{\nextXMLRelement !}}
+
+\remapXMLsingular [divide] [CPA] \MMLcDIVIDE
+
+\setupMMLappearance [divide] [\c!level=\!!maxcard]
+
+\def\MMLcDIVIDE#1#2%
+ {\withnexttwoXMLRelements
+ {\increment\MMLcDIVIDElevel
+ \ifnum\MMLcDIVIDElevel>\@@MMLdividelevel\space
+ \firstXMLRelement/\secondXMLRelement
+ \else
+ \frac{\MMLcreset\firstXMLRelement}{\MMLcreset\secondXMLRelement}%
+ \fi
+ \decrement\MMLcDIVIDElevel}}
+
+\remapXMLsingular [min] [CPA] \MMLcMIN
+\remapXMLsingular [max] [CPA] \MMLcMAX
+
+\def\MMLcMIN#1#2#3\empty
+ {\encapsulateXMLR
+ {\min\doifXMLRchild{bvar}{#3}{_{\processXMLRchild{bvar}{#3}}}\left\{}
+ {\MMLccomma}{\right\}}{#3}}
+
+\def\MMLcMAX#1#2#3\empty
+ {\encapsulateXMLR
+ {\max\doifXMLRchild{bvar}{#3}{_{\processXMLRchild{bvar}{#3}}}\left\{}
+ {\MMLccomma}{\right\}}{#3}}
+
+\remapXMLsingular [minus] [CPA] \MMLcMINUS
+\remapXMLsingular [plus] [CPA] \MMLcPLUS
+
+\setupMMLappearance[sign][\c!reduction=\v!yes]
+
+\def\MMLcMINUS % expandafter needed ?
+ {\doifelse\@@MMLsignreduction\v!yes
+ {\expandafter\MMLcMINUSyes}{\expandafter\MMLcMINUSno}}
+
+\def\MMLcPLUS % expandafter needed ?
+ {\doifelse\@@MMLsignreduction\v!yes
+ {\expandafter\MMLcPLUSyes}{\expandafter\MMLcPLUSno}}
+
+\def\MMLcMINUSno#1#2#3\empty
+ {\countXMLRchildren{#3}%
+ \encapsulateXMLR{\ifcase\nofXMLRchildren\or-\fi}{-}{}{#3}}
+
+\def\MMLcPLUSno#1#2#3\empty
+ {\countXMLRchildren{#3}%
+ \encapsulateXMLR{\ifcase\nofXMLRchildren\or+\fi}{+}{}{#3}}
+
+\def\MMLcMINUSyes#1#2#3\empty
+ {\setMMLcreset{\MMLcfunctionlist}%
+ \countXMLRchildren{#3}%
+ \encapsulateXMLR{\ifcase\nofXMLRchildren\or-\fi}{-}{}{#3}}
+
+\def\MMLcPLUSyes#1#2#3\empty
+ {\setMMLcreset{plus/,minus/,\MMLcfunctionlist,\MMLcconstructlist}%
+ \encapsulatenextXMLRelements
+ {}
+ {\doifXMLRchildelse{apply}{\nextXMLRelement}%
+ {\collectXMLRchild{apply}{\nextXMLRelement}%
+ \doifXMLRchildelse{minus/}{\the\XMLRtoks}
+ {\countXMLRchildren{\the\XMLRtoks}
+ \ifnum\nofXMLRchildren>2 +\else\fi}{+}}
+ {+}}
+ {}
+ {#3\empty}}
+
+\remapXMLsingular [power] [CPA] \MMLcPOWER
+
+\setupMMLappearance[power][\c!reduction=\v!yes]
+
+\let\MMLpowerelement\empty
+
+\def\MMLcPOWER#1#2%
+ {\withnexttwoXMLRelements
+ {\doifXMLRchildelse{apply}{\firstXMLRelement}
+ {\doifelse\@@MMLpowerreduction\v!yes
+ {\collectXMLRchild{apply}{\firstXMLRelement}%
+ \@EA\doifXMLRchildelse\@EA{\MMLcfunctionlist}{\the\XMLRtoks}
+ {\let\MMLpowerelement\secondXMLRelement
+ \MMLcreset\firstXMLRelement\empty}
+ {\left(\MMLcreset\firstXMLRelement\empty\right)^{\MMLcreset\secondXMLRelement}}}
+ {\left(\MMLcreset\firstXMLRelement\empty\right)^{\MMLcreset\secondXMLRelement}}}
+ {\firstXMLRelement^{\MMLcreset\secondXMLRelement}}}}
+
+\remapXMLsingular [rem] [CPA] \MMLcREM
+
+\def\MMLcREM#1#2%
+ {\withnexttwoXMLRelements
+ {\firstXMLRelement\getXMLentity{mod}\secondXMLRelement}}
+
+\remapXMLsingular [times] [CPA] \MMLcTIMES
+
+\setupMMLappearance[times][\c!symbol=\v!no] %
+\setupMMLappearance[times][\c!auto=\v!yes] % new, auto catches cn cn cn
+
+\def\MMLcTIMES#1#2#3\empty
+ {\setMMLcreset{\MMLcfunctionlist,\MMLcconstructlist}%
+ \doifelse\@@MMLtimesauto\v!no
+ {\let\@@MMLtimes@@symbol\@@MMLtimessymbol}
+ {\doifelseXMLRneighbors{cn}{#3}
+ {\let\@@MMLtimes@@symbol\@@MMLtimesauto}
+ {\let\@@MMLtimes@@symbol\v!no}}%
+ \doifelse\@@MMLtimes@@symbol\v!yes
+ {\encapsulateXMLR{}{\times}{}{#3\empty}}
+ {\doifelse\@@MMLtimes@@symbol{dot}
+ {\encapsulateXMLR{}{\cdot}{}{#3\empty}}
+ {#3\empty}}}
+
+\remapXMLsingular [root] [CPA] \MMLcROOT
+
+\setupMMLappearance[root][\c!symbol=\v!yes]
+
+\def\MMLcROOT#1#2#3\empty
+ {\doifXMLRchildelse{degree}{#3}\donetrue\donefalse
+ \doif\@@MMLrootsymbol\v!no\donefalse
+ \ifdone
+ \root\processXMLRchild{degree}{#3}\of
+ {\let\MMLcDEGREE\ignoreXMLRelement
+ \MMLcreset\processXMLRchildren{#3}}%
+ \else
+ \sqrt
+ {\MMLcreset\processXMLRchildren{#3}}%
+ \fi}
+
+\remapXMLsingular [gcd] [CPA] \MMLcGCD
+
+\def\MMLcGCD#1#2#3\empty{\encapsulateXMLR{\gcd(}{\MMLccomma}{)}{#3}}
+
+\remapXMLsingular [and] [CPA] \MMLcAND
+\remapXMLsingular [or] [CPA] \MMLcOR
+\remapXMLsingular [xor] [CPA] \MMLcXOR
+\remapXMLsingular [implies] [CPA] \MMLcIMPLIES
+
+\def\MMLcAND #1#2#3\empty{\encapsulateXMLR{}{\getXMLentity{and}}{}{#3}}
+\def\MMLcOR #1#2#3\empty{\encapsulateXMLR{}{\getXMLentity{or}}{}{#3}}
+\def\MMLcXOR #1#2#3\empty{\encapsulateXMLR{}{\getXMLentity{xor}}{}{#3}}
+\def\MMLcIMPLIES#1#2#3\empty{\encapsulateXMLR{}{\getXMLentity{implies}}{}{#3}}
+
+\remapXMLsingular [not] [CPA] \MMLcNOT
+
+\def\MMLcNOT#1#2#3\empty{\getXMLentity{not}\processXMLRchildren{#3}}
+
+\remapXMLsingular [forall] [CPA] \MMLcFORALL
+\remapXMLsingular [exists] [CPA] \MMLcEXISTS
+
+\def\MMLcFORALL%
+ {\getXMLentity{forall}%
+ \!% \getXMLentity{NegThinSpace}%
+ \MMLcFORALLandEXISTS}
+
+\def\MMLcEXISTS%
+ {\getXMLentity{exists}%
+ \MMLcFORALLandEXISTS}
+
+\def\MMLcFORALLandEXISTS#1#2#3\empty
+ {\MMLcreset
+ _{\encapsulateXMLRchildren{bvar}{}{\MMLccomma}{}{#3}}%
+ \doifXMLRchildelse{condition}{#3}
+ {\;% \getXMLentity{ThickSpace}%
+ \processXMLRchild{condition}{#3}
+ \doifXMLRchildelse{apply,reln,ci,cn}{#3}
+ {\countXMLRchild{apply,reln,ci,cn}{#3}%
+ \ifcase\nofXMLRchildren\or % == snelle volgende
+ \encapsulateXMLRchildren{apply,reln,ci,cn}
+ {\left\vert}%
+ {}
+ {\right.}
+ {#3\empty}%
+ \else % special case
+ \pushmacro\MMLcCONDITION
+ \let\MMLcCONDITION\gobbletwoarguments
+ \collectbetweenXMLRchild{apply,reln,ci,cn}{\hfill\crcr}{#3}%
+ \left\vert\matrix{\the\XMLRtoks}\right.%
+ \popmacro\MMLcCONDITION
+ \fi}
+ {}}
+ {:\processXMLRchild{apply,reln,ci,cn}{#3\empty}}}
+
+\remapXMLsingular [abs] [CPA] \MMLcABS
+
+\def\MMLcABS#1#2#3\empty
+ {\left\vert\MMLcreset\processXMLRchildren{#3}\right\vert}
+
+\remapXMLsingular [conjugate] [CPA] \MMLcCONJUGATE
+
+\def\MMLcCONJUGATE#1#2#3\empty%
+ {\overline{\MMLcreset\processXMLRchildren{#3}}}
+
+\remapXMLsingular [arg] [CPA] \MMLcARG
+
+\def\MMLcARG#1#2#3\empty
+ {\getXMLentity{arg}(\MMLcreset\processXMLRchildren{#3})}
+
+\remapXMLsingular [real] [CPA] \MMLcREAL
+\remapXMLsingular [imaginary] [CPA] \MMLcIMAGINARY
+
+\def\MMLcREAL#1#2#3\empty
+ {\getXMLentity{real}(\MMLcreset\processXMLRchildren{#3})}
+
+\def\MMLcIMAGINARY#1#2#3\empty
+ {\getXMLentity{imaginary}(\MMLcreset\processXMLRchildren{#3})}
+
+\remapXMLsingular [lcm] [CPA] \MMLcLCM
+
+\def\MMLcLCM#1#2#3\empty
+ {\encapsulateXMLR{\getXMLentity{lcm}(}{\MMLccomma}{)}{#3}}
+
+\remapXMLsingular [floor] [CPA] \MMLcFLOOR
+\remapXMLsingular [ceiling] [CPA] \MMLcCEILING
+
+\def\MMLcFLOOR#1#2#3\empty
+ {\getXMLentity{lfloor}\processXMLRchildren{#3}\getXMLentity{rfloor}}
+
+\def\MMLcCEILING#1#2#3\empty
+ {\getXMLentity{lceiling}\processXMLRchildren{#3}\getXMLentity{rceiling}}
+
+%%% relations
+
+\remapXMLsingular [eq] [CPA] \MMLcEQ
+\remapXMLsingular [neq] [CPA] \MMLcNEQ
+\remapXMLsingular [gt] [CPA] \MMLcGT
+\remapXMLsingular [lt] [CPA] \MMLcLT
+\remapXMLsingular [geq] [CPA] \MMLcGEQ
+\remapXMLsingular [leq] [CPA] \MMLcLEQ
+\remapXMLsingular [equivalent] [CPA] \MMLcEQUIVALENT
+\remapXMLsingular [approx] [CPA] \MMLcAPPROX
+\remapXMLsingular [factorof] [CPA] \MMLcFACTOROF
+
+\setupMMLappearance[relation][\c!align=\v!no]
+
+\def\noMMLcrelation#1#2%
+ {\encapsulatenextXMLRelements{}{#1}{}#2\empty}
+
+\def\lastMMLcrelation#1#2%
+ {\countXMLRchildren{#2}%
+ \rawcollectbetweenXMLR
+ {\advance\nofXMLRchildren -1
+ \ifnum\nofXMLRchildren>1
+ \appendtoks\@col@amp@#1\crcr\to\XMLRtoks
+ \else
+ \appendtoks\@col@amp@#1\to\XMLRtoks
+ \fi}
+ {#2}%
+ \eqalign{\the\XMLRtoks\crcr}}
+
+\def\firstMMLcrelation#1#2%
+ {\nofXMLRchildren=0
+ \rawcollectbetweenXMLR
+ {\advance\nofXMLRchildren 1
+ \ifnum\nofXMLRchildren=1
+ \appendtoks\@col@amp@#1\to\XMLRtoks
+ \else
+ \appendtoks\crcr\@col@amp@#1\to\XMLRtoks
+ \fi}
+ {#2}%
+ \eqalign{\the\XMLRtoks\crcr}}
+
+\def\leftMMLcrelation#1#2%
+ {\collectbetweenXMLR{\@col@amp@#1\crcr}{#2}%
+ \eqalign{\the\XMLRtoks}}
+
+\def\rightMMLcrelation#1#2%
+ {\collectbetweenXMLR{\crcr#1{}\@col@amp@}{#2}% watch the {}
+ \prependtoks\@col@amp@\to\XMLRtoks
+ \eqalign{\the\XMLRtoks\crcr}}
+
+\def\MMLcrelation#1#2\empty
+ {\MMLcreset
+ \processaction
+ [\@@MMLrelationalign]
+ [\v!last=>\let\next\lastMMLcrelation ,
+ \v!first=>\let\next\firstMMLcrelation,
+ \v!yes=>\let\next\leftMMLcrelation ,
+ \v!left=>\let\next\leftMMLcrelation ,
+ \v!right=>\let\next\rightMMLcrelation,
+ \s!default=>\let\next\noMMLcrelation ,
+ \s!unknown=>\let\next\noMMLcrelation ]
+ \next{#1}{#2}}
+
+\def\MMLcEQ #1#2{\MMLcrelation=}
+\def\MMLcNEQ #1#2{\MMLcrelation\neq}
+\def\MMLcGT #1#2{\MMLcrelation>}
+\def\MMLcLT #1#2{\MMLcrelation<}
+\def\MMLcGEQ #1#2{\MMLcrelation\geq}
+\def\MMLcLEQ #1#2{\MMLcrelation\leq}
+\def\MMLcEQUIVALENT#1#2{\MMLcrelation\equiv}
+\def\MMLcAPPROX #1#2{\MMLcrelation\approx}
+\def\MMLcFACTOROF #1#2{\MMLcrelation\mid}
+
+%%% introduced when making an example for Thorsten Bahne:
+
+\remapXMLsingular [becomes] [CPA] \MMLcBECOMES
+
+\def\MMLcBECOMES#1#2{\MMLcrelation{:=}}
+
+\addtocommalist{becomes/}\MMLcmainresetlist
+
+%%% calculus and vector calculus
+
+\setupMMLappearance[int][\c!location=\v!top]
+
+\remapXMLsingular [int] [CPA] \MMLcINT
+
+\def\doMMLlimits#1%
+ {\doifelsevalue{@@MML#1\c!location}\v!top\limits\nolimits}
+
+\def\MMLcINT#1#2#3\empty
+ {\pushmacro\xmlr
+ \MMLcreset
+ \doifXMLRchildelse{domainofapplication}{#3}
+ {\int\doMMLlimits{int}_{\processXMLRchild{domainofapplication}{#3}}}
+ {\doifXMLRchildelse{condition}{#3}
+ {\int\doMMLlimits{int}_{\processXMLRchild{condition}{#3}}}
+ {\doifXMLRchildelse{lowlimit}{#3}
+ {\int\doMMLlimits{int}
+ _{\processXMLRchild{lowlimit}{#3}}
+ ^{\processXMLRchild {uplimit}{#3}}}
+ {\int}}}%
+ \doifXMLRchildelse{apply}{#3}
+ {\doifMMLfunctionelse{#3}%
+ {\MMLcreset % TEST
+ \processXMLRchild{apply}{#3}}
+ {\left(\MMLcreset % TEST
+ \processXMLRchild{apply}{#3}\right)}}
+ {\MMLcreset % TEST
+ \processXMLRchild{ci}{#3}}%
+ \doifXMLRchild{bvar}{#3}
+ {\,% \getXMLentity{ThinSpace}%
+ {\rm\getXMLentity{mathematicald}}\processXMLRchild{bvar}{#3}}%
+ \popmacro\xmlr}
+
+\remapXMLsingular [diff] [CPA] \MMLcDIFF
+
+\setupMMLappearance[diff][\c!location=\v!top]
+
+\def\MMLcDIFF#1#2#3\empty
+ {\pushmacro\xmlr
+ \MMLcreset
+ \doifXMLRchildelse{bvar}{#3}
+ {\frac
+ {{\rm \getXMLentity{mathematicald}}%
+ \collectXMLRchild{bvar}{#3}%
+ \let\MMLcDEGREE\superMMLcelement
+ \expanded{\processXMLRchild{degree}{\the\XMLRtoks}}%
+ \doif\@@MMLdifflocation\v!top
+ {\doifXMLRchildelse{ci}{#3}
+ {\processXMLRchild{ci}{#3}}
+ {\doifMMLfunctionelse{#3}
+ {\MMLcreset\processXMLRchild{apply}{#3}}
+ {\left(\MMLcreset\processXMLRchild{apply}{#3}\right)}}}}
+ {\let\MMLcDEGREE\superMMLcelement
+ \begingroup\rm\getXMLentity{mathematicald}\endgroup
+ \processXMLRchild{bvar}{#3}}%
+ \doifnot\@@MMLdifflocation\v!top
+ {\left(\MMLcreset\processXMLRchild{apply,ci}{#3}\right)}}
+ {\processXMLRchildren{#3}^\prime}%
+ \popmacro\xmlr}
+
+\remapXMLsingular [partialdiff] [CPA] \MMLcPARTIALDIFF
+
+\def\MMLcBVARpartialdiff#1#2%
+ {\getXMLentity{differentiald}\processXMLRchild{apply,reln,ci,cn}{#2}
+ \doifXMLRchild{degree}{#2}{^{\processXMLRchild{degree}{#2}}}}
+
+\def\MMLcPARTIALDIFF#1#2#3\empty
+ {\pushmacro\xmlr
+ \doifXMLRchildelse{list}{#3}
+ {\getXMLentity{capitaldifferentiald}_{\encapsulateXMLRchild{list}{}{\MMLccomma}{}{#3}}%
+ \processXMLRchild{apply,reln,ci,cn}{#3}}
+ {\countXMLRchild{bvar}{#3}%
+ \ifnum\nofXMLRchildren>0
+ \pushmacro\MMLcDEGREE
+ \pushmacro\MMLcBVAR
+ \frac
+ {\doifXMLRchildelse{degree}{#3}
+ {\collectXMLRchild{degree}{#3}}
+ {\collectXMLRchild{bvar}{#3}%
+ \expanded{\collectXMLRchild{degree}{\the\XMLRtoks}}}%
+ \getXMLentity{differentiald}^{\encapsulateXMLR{}{+}{}{\the\XMLRtoks}}%
+ \let\MMLcDEGREE\gobbletwoarguments
+ \doifMMLfunctionelse{#3}{\MMLcreset}{}%
+ \processXMLRchild{apply,reln,ci,cn}{#3}}
+ {\let\MMLcBVAR\MMLcBVARpartialdiff
+ \processXMLRchild{bvar}{#3}}%
+ \popmacro\MMLcBVAR
+ \popmacro\MMLcDEGREE
+ \else
+ \processXMLRchild{apply,reln,ci,cn}{#3}%
+ \fi}%
+ \popmacro\xmlr}
+
+\def\doifMMLfunctionelse#1#2#3%
+ {\collectXMLRchild{apply}{#1}%
+ \doifXMLRchildelse{fn}{\the\XMLRtoks#1}
+ {#2}
+ {\doifXMLRchildelse{ci}{\the\XMLRtoks#1}
+ {\pushmacro\xmlr
+ \getXMLarguments{dummy}{type=""}%
+ \def\xmlr{\getmmlarguments{dummy}{}}%
+ \the\XMLRtoks % what if more than one ?
+ \popmacro\xmlr
+ \doif{\XMLpar{dummy}{type}{}}{fn}{#2}{#3}}
+ {#2}}}
+
+\def\subMMLcelement #1#2{_{#2}}
+\def\superMMLcelement#1#2{^{#2}}
+
+\remapXMLsequence [lowlimit][CPA] \MMLcLOWLIMIT
+\remapXMLsequence [uplimit] [CPA] \MMLcUPLIMIT
+\remapXMLsequence [bvar] [CPA] \MMLcBVAR
+\remapXMLsequence [degree] [CPA] \MMLcDEGREE
+
+\def\MMLcLOWLIMIT#1#2{#2}
+\def\MMLcUPLIMIT #1#2{#2}
+\def\MMLcBVAR #1#2{#2}
+\def\MMLcDEGREE #1#2{#2}
+
+\remapXMLsingular [divergence] [CPA] \MMLcDIVERGENCE
+\remapXMLsingular [grad] [CPA] \MMLcGRAD
+\remapXMLsingular [curl] [CPA] \MMLcCURL
+\remapXMLsingular [laplacian] [CPA] \MMLcLAPLACIAN
+
+\def\MMLcDIVERGENCE#1#2#3\empty{\getXMLentity{divergence}\processXMLRchildren{#3}}
+\def\MMLcGRAD #1#2#3\empty{\getXMLentity{grad}\processXMLRchildren{#3}}
+\def\MMLcCURL #1#2#3\empty{\getXMLentity{curl}\processXMLRchildren{#3}}
+\def\MMLcLAPLACIAN #1#2#3\empty{\getXMLentity{laplacian}\processXMLRchildren{#3}}
+
+%%% theory of sets
+
+\remapXMLsequence [set] [CPA] \MMLcSET
+
+\def\MMLcSET#1#2%
+ {\doifXMLRchildelse{condition}{#2}
+ {\{\processXMLRchild{bvar}{#2}\,\vert\,\processXMLRchild{condition}{#2}\}}
+ {\encapsulateXMLR{\{}{\MMLccomma}{\}}{#2}}}
+
+\remapXMLsequence [list] [CPA] \MMLcLIST
+
+\def\MMLcLIST#1#2{\encapsulateXMLR{[}{\MMLccomma}{]}{#2}}
+
+\remapXMLsingular [union] [CPA] \MMLcUNION
+\remapXMLsingular [intersect] [CPA] \MMLcINTERSECT
+\remapXMLsingular [in] [CPA] \MMLcIN
+\remapXMLsingular [notin] [CPA] \MMLcNOTIN
+\remapXMLsingular [subset] [CPA] \MMLcSUBSET
+\remapXMLsingular [prsubset] [CPA] \MMLcPRSUBSET
+\remapXMLsingular [notsubset] [CPA] \MMLcNOTSUBSET
+\remapXMLsingular [notprsubset] [CPA] \MMLcNOTPRSUBSET
+\remapXMLsingular [setdiff] [CPA] \MMLcSETDIFF
+
+\def\MMLcset#1{\withnexttwoXMLRelements{\firstXMLRelement#1\secondXMLRelement}}
+
+\def\MMLcUNION #1#2{\MMLcset\cup}
+\def\MMLcINTERSECT #1#2{\MMLcset\cap}
+\def\MMLcIN #1#2{\MMLcset\in}
+\def\MMLcNOTIN #1#2{\MMLcset{\not\in}}
+\def\MMLcSUBSET #1#2{\MMLcset\subset}
+\def\MMLcPRSUBSET #1#2{\MMLcset\subseteq}
+\def\MMLcNOTSUBSET #1#2{\MMLcset{\not\subset}}
+\def\MMLcNOTPRSUBSET #1#2{\MMLcset{\not\subseteq}}
+\def\MMLcSETDIFF #1#2{\MMLcset\setminus}
+
+\remapXMLsingular [card] [CPA] \MMLcCARD
+
+\def\MMLcCARD#1#2#3\empty{\encapsulateXMLR{\vert}{}{\vert}{#3}}
+
+\remapXMLsingular [cartesianproduct] [CPA] \MMLcCARTESIANPRODUCT
+
+\def\MMLcCARTESIANPRODUCT#1#2#3\empty{\encapsulateXMLR{}{\times}{}{#3}}
+
+%%% sequences and series
+
+\remapXMLsingular [sum] [CPA] \MMLcSUM
+\remapXMLsingular [product] [CPA] \MMLcPRODUCT
+
+\def\MMLcSUM {\MMLcSUMandPRODUCT{sum}\sum}
+\def\MMLcPRODUCT{\MMLcSUMandPRODUCT{product}\prod}
+
+\setupMMLappearance[sum][\c!location=\v!top]
+\setupMMLappearance[product][\c!location=\v!top]
+
+\def\stackMMLsubscripts#1%
+ {\vbox
+ {\baselineskip\zeropoint % hack, taco vragen
+ \halign{$\scriptstyle\hss##\hss$\cr#1\crcr}}}
+
+\def\MMLcSUMandPRODUCT#1#2#3#4\empty
+ {\pushmacro\xmlr
+ \doifXMLRchildelse{condition,bvar,lowlimit}{#4}
+ {\def\MMLcSUMlow
+ {_{\doifXMLRchildelse{condition}{#4}
+ {\collectXMLRchild{condition}{#4}%
+ \expanded{\collectbetweenXMLR{\crcr}{\the\XMLRtoks}}%
+ \stackMMLsubscripts{\the\XMLRtoks}}
+ {\doifXMLRchild{bvar}{#4}
+ {\processXMLRchild{bvar}{#4}%
+ \doifXMLRchild{lowlimit}{#4}{=}}%
+ \processXMLRchild{lowlimit}{#4}}}}}
+ {\let\MMLcSUMlow\empty}%
+ \doifXMLRchildelse{uplimit}{#4}
+ {\def\MMLcSUMup{^{\processXMLRchild{uplimit}{#4}}}}
+ {\let\MMLcSUMup\empty}%
+ \MMLcreset#2\doMMLlimits{#1}\MMLcSUMup\MMLcSUMlow
+ \MMLcreset
+ \processXMLRchild{apply,ci}{#4}%
+ \popmacro\xmlr}
+
+\remapXMLsingular [limit] [CPA] \MMLcLIMIT
+
+\setupMMLappearance[limit][\c!location=\v!top]
+
+\def\MMLcLIMIT#1#2#3\empty
+ {\pushmacro\xmlr
+ \MMLcreset
+ \lim\doMMLlimits{limit}_
+ {\MMLcreset
+ \doifXMLRchildelse{condition}{#3}
+ {\processXMLRchild{condition}{#3}}
+ {\doifXMLRchild{bvar}{#3}
+ {\processXMLRchild{bvar}{#3}\rightarrow}%
+ \processXMLRchild{lowlimit}{#3}}}%
+ \processXMLRchild{apply}{#3}%
+ \popmacro\xmlr}
+
+\remapXMLsingular [tendsto] [CPA] \MMLcTENDSTO
+
+\def\MMLcTENDSTO#1#2%
+ {\getXMLarguments{tendsto}{type="default" #1}%
+ \withnexttwoXMLRelements
+ {\MMLcreset\firstXMLRelement
+ \processaction
+ [\XMLpar{tendsto}{type}{default}]
+ [ above=>\downarrow,
+ below=>\uparrow,
+ unknown=>\rightarrow]%
+ \MMLcreset\secondXMLRelement}}
+
+%%% elementary classical functions
+
+\remapXMLsingular [exp] [CPA] \MMLcEXP
+
+\def\MMLcEXP#1#2#3\empty
+ {\getXMLentity{exponentiale}^{\MMLcreset#3}}
+
+\remapXMLsingular [ln] [CPA] \MMLcLN
+
+%\def\MMLcLN#1#2#3\empty
+% {\ln\left(\MMLcreset#3\right)}
+
+\def\MMLcLN#1#2%
+ {\doMMLcfunction{ln}}
+
+\remapXMLsingular [log] [CPA] \MMLcLOG
+
+\setupMMLappearance[log][\c!location=\v!right]
+
+\def\MMLcLOG#1#2#3\empty
+ {\pushmacro\MMLcLOGBASE
+ \let\MMLcLOGBASE\secondoftwoarguments
+ \doifXMLRchildelse{logbase}{#3}
+ {\doifelse\@@MMLloglocation\v!left
+ {\mathop{{}^{\processXMLRchild{logbase}{#3}}\!\getXMLentity{log}}}
+ {\getXMLentity{log}_{\processXMLRchild{logbase}{#3}}}}
+ {\getXMLentity{log}}%
+ \let\MMLcLOGBASE\ignoreXMLRelement
+ \nodoMMLcfunction#3\empty
+ \popmacro\MMLcLOGBASE}
+
+\remapXMLsequence [logbase] [CPA] \MMLcLOGBASE
+
+\def\MMLcLOGBASE#1#2{#2}
+
+\remapXMLsingular [sin] [CPA] \MMLcSIN
+\remapXMLsingular [arcsin] [CPA] \MMLcARCSIN
+\remapXMLsingular [sinh] [CPA] \MMLcSINH
+\remapXMLsingular [arcsinh] [CPA] \MMLcARCSINH
+\remapXMLsingular [cos] [CPA] \MMLcCOS
+\remapXMLsingular [arccos] [CPA] \MMLcARCCOS
+\remapXMLsingular [cosh] [CPA] \MMLcCOSH
+\remapXMLsingular [arccosh] [CPA] \MMLcARCCOSH
+\remapXMLsingular [tan] [CPA] \MMLcTAN
+\remapXMLsingular [arctan] [CPA] \MMLcARCTAN
+\remapXMLsingular [tanh] [CPA] \MMLcTANH
+\remapXMLsingular [arctanh] [CPA] \MMLcARCTANH
+\remapXMLsingular [cot] [CPA] \MMLcCOT
+\remapXMLsingular [arccot] [CPA] \MMLcARCCOT
+\remapXMLsingular [coth] [CPA] \MMLcCOTH
+\remapXMLsingular [arccoth] [CPA] \MMLcARCCOTH
+\remapXMLsingular [csc] [CPA] \MMLcCSC
+\remapXMLsingular [arccsc] [CPA] \MMLcARCCSC
+\remapXMLsingular [csch] [CPA] \MMLcCSCH
+\remapXMLsingular [arccsch] [CPA] \MMLcARCCSCH
+\remapXMLsingular [sec] [CPA] \MMLcSEC
+\remapXMLsingular [arcsec] [CPA] \MMLcARCSEC
+\remapXMLsingular [sech] [CPA] \MMLcSECH
+\remapXMLsingular [arcsech] [CPA] \MMLcARCSECH
+
+\setupMMLappearance[function][\c!reduction=\v!yes]
+
+\def\doMMLcfunction#1%
+ {\doifnextcharelse\xmlr{\dodoMMLcfunction{#1}}{\getXMLentity{#1}}}
+
+\def\dodoMMLcfunction#1%
+ {\getXMLentity{#1}%
+ \nodoMMLcfunction}
+
+\def\nodoMMLcfunction#1\empty
+ {\ifx\MMLpowerelement\empty\else
+ ^{\MMLcreset\MMLpowerelement\empty}\!\let\MMLpowerelement\empty
+ \fi
+ \doifelse\@@MMLfunctionreduction\v!yes
+ {\doifXMLRchildelse{apply}{#1}
+ {\collectXMLRchild{apply}{#1}%
+ \@EA\doifXMLRchildelse\@EA{\MMLcfunctionlist}{\the\XMLRtoks}
+ {\MMLcreset#1\empty}
+ {\left(\MMLcreset#1\empty\right)}}
+ {\MMLcreset#1\empty}}
+ {\left(\MMLcreset#1\empty\right)}}
+
+\def\MMLcSIN #1#2{\doMMLcfunction{sin}}
+\def\MMLcARCSIN #1#2{\doMMLcfunction{arcsin}}
+\def\MMLcSINH #1#2{\doMMLcfunction{sinh}}
+\def\MMLcARCSINH#1#2{\doMMLcfunction{arcsinh}}
+\def\MMLcCOS #1#2{\doMMLcfunction{cos}}
+\def\MMLcARCCOS #1#2{\doMMLcfunction{arccos}}
+\def\MMLcCOSH #1#2{\doMMLcfunction{cosh}}
+\def\MMLcARCCOSH#1#2{\doMMLcfunction{arccosh}}
+\def\MMLcTAN #1#2{\doMMLcfunction{tan}}
+\def\MMLcARCTAN #1#2{\doMMLcfunction{arctan}}
+\def\MMLcTANH #1#2{\doMMLcfunction{tanh}}
+\def\MMLcARCTANH#1#2{\doMMLcfunction{arctanh}}
+\def\MMLcCOT #1#2{\doMMLcfunction{cot}}
+\def\MMLcARCCOT #1#2{\doMMLcfunction{arccot}}
+\def\MMLcCOTH #1#2{\doMMLcfunction{coth}}
+\def\MMLcARCCOTH#1#2{\doMMLcfunction{arccoth}}
+\def\MMLcCSC #1#2{\doMMLcfunction{csc}}
+\def\MMLcARCCSC #1#2{\doMMLcfunction{arccsc}}
+\def\MMLcCSCH #1#2{\doMMLcfunction{csch}}
+\def\MMLcARCCSCH#1#2{\doMMLcfunction{arccsch}}
+\def\MMLcSEC #1#2{\doMMLcfunction{sec}}
+\def\MMLcARCSEC #1#2{\doMMLcfunction{arcsec}}
+\def\MMLcSECH #1#2{\doMMLcfunction{sech}}
+\def\MMLcARCSECH#1#2{\doMMLcfunction{arcsech}}
+
+%%% statistics
+
+\remapXMLsingular [mean] [CPA] \MMLcMEAN
+\remapXMLsingular [sdev] [CPA] \MMLcSDEV
+\remapXMLsingular [variance] [CPA] \MMLcVARIANCE
+\remapXMLsingular [median] [CPA] \MMLcMEDIAN
+\remapXMLsingular [mode] [CPA] \MMLcMODE
+
+\def\MMLcMEAN #1#2{\withnextXMLRelement{\overline{\nextXMLRelement}}}
+\def\MMLcSDEV #1#2{\withnextXMLRelement{\sigma(\MMLcreset\nextXMLRelement)}}
+\def\MMLcVARIANCE#1#2{\withnextXMLRelement{\sigma(\MMLcreset\nextXMLRelement)^2}}
+\def\MMLcMEDIAN #1#2{\withnextXMLRelement{\getXMLentity{median}(\MMLcreset\nextXMLRelement)}}
+\def\MMLcMODE #1#2{\withnextXMLRelement{\getXMLentity{mode}(\MMLcreset\nextXMLRelement)}}
+
+\remapXMLsingular [moment] [CPA] \MMLcMOMENT
+\remapXMLsequence [momentabout] [CPA] \MMLcMOMENTABOUT
+
+\def\MMLcMOMENT#1#2#3\empty
+ {\left\langle\processXMLRchild{apply,reln,ci,cn}{#3}%
+ ^{\processXMLRchild{degree}{#3}}\right\rangle}
+
+\def\MMLcMOMENTABOUT#1#2{}
+
+%%% linear algebra
+
+\remapXMLsequence [vector] [CPA] \MMLcVECTOR
+
+\setupMMLappearance[vector][\c!direction=\v!horizontal] % \v!vertical
+
+\def\MMLcVECTOR#1#2%
+ {\countXMLRchildren{#2}%
+ \ifnum\nofXMLRchildren>1
+ \doifelse\@@MMLvectordirection\v!horizontal
+ {\encapsulateXMLR{\left(}{\MMLccomma}{\right)}{#2}}
+ {\collectbetweenXMLR{\crcr}{#2}%
+ \MMLcreset\left(\matrix{\the\XMLRtoks}\right)}%
+ \else
+ \overrightarrow{#2}%
+ \fi}
+
+\remapXMLsequence [matrix] [CPA] \MMLcMATRIX
+\remapXMLsequence [matrixrow] [CPA] \MMLcMATRIXROW
+
+\unexpanded\def\@col@amp@{&}
+
+\def\doMMLcMATRIX#1#2#3%
+ {\pushmacro\MMLcMATRIXROW
+ \let\MMLcMATRIXROW\normalMMLcMATRIXROW
+ \MMLcreset
+ \ifcase#1\matrix{#3}\else\left(\matrix{#3}\right)\fi
+ \popmacro\MMLcMATRIXROW}
+
+\def\MMLcMATRIX#1#2%
+ {\doMMLcMATRIX1{#1}{#2}}
+
+\def\MMLcMATRIXROW#1#2%
+ {\collectbetweenXMLR{\@col@amp@}{#2}\the\XMLRtoks\crcr}
+
+\let\normalMMLcMATRIXROW\MMLcMATRIXROW
+
+\def\MMLcMATRIXROW#1#2%
+ {\collectbetweenXMLR{\@col@amp@}{#2}%
+ \left(\matrix{\the\XMLRtoks\crcr}\right)}
+
+\remapXMLsingular [determinant] [CPA] \MMLcDETERMINANT
+
+% \def\MMLcDETERMINANT#1#2{\getXMLentity{determinant}} % optie
+
+\def\MMLcDETERMINANT#1#2\empty
+ {\pushmacro\MMLcMATRIX
+ \def\MMLcMATRIX##1##2{\doMMLcMATRIX0{##1}{##2}}%
+ \left|#2\empty\right|%
+ \popmacro\MMLcMATRIX}
+
+\remapXMLsingular [transpose] [CPA] \MMLcTRANSPOSE
+
+\def\MMLcTRANSPOSE#1#2{\withnextXMLRelement{\nextXMLRelement^{\rm T}}}
+
+\remapXMLsingular [selector] [CPA] \MMLcSELECTOR
+
+\def\MMLcSELECTOR#1#2#3\empty
+ {\pushmacro\xmlr
+ \withnextXMLRelement
+ {\mathinner{\nextXMLRelement}% hm, assumes a matrix or so
+ \doMMLcSELECTOR}%
+ #3\empty
+ \popmacro\xmlr}
+
+\def\doMMLcSELECTOR#1\empty
+ {_{\MMLcreset\encapsulateXMLR{}{\MMLccomma}{}{#1\empty}}}
+
+\remapXMLsingular [vectorproduct] [CPA] \MMLcVECTORPRODUCT
+\remapXMLsingular [scalarproduct] [CPA] \MMLcSCALARPRODUCT
+\remapXMLsingular [outerproduct] [CPA] \MMLcOUTERPRODUCT
+
+\def\MMLcvector#1%
+ {\withnexttwoXMLRelements{\firstXMLRelement#1\secondXMLRelement}}
+
+\def\MMLcVECTORPRODUCT#1#2{\MMLcvector{\getXMLentity{vectorproduct}}#2}% #2?%
+\def\MMLcSCALARPRODUCT#1#2{\MMLcvector{\getXMLentity{scalarproduct}}#2}
+\def\MMLcOUTERPRODUCT #1#2{\MMLcvector{\getXMLentity{outerproduct}}#2}
+
+%%% semantic mapping elements
+
+\remapXMLsequence [semantics] [CPA] \MMLcSEMANTICS
+
+\def\MMLcSEMANTICS#1#2%
+ {\doifXMLRchildelse{annotation}{#2}
+ {\processXMLRchild{annotation}{#2}}
+ {#2}}
+
+\remapXMLsequence [annotation] [CPA] \MMLcANNOTATION
+
+\def\MMLcANNOTATION#1#2% we need a better unmapper
+ {\getXMLarguments{annotation}{encoding="" #1}%
+ \doif{\XMLpar{annotation}{encoding}{}}{TeX}%
+ {\begingroup
+ \setnormalXMLentities % better: \simplifyXMLentities ; test first
+ \let\xmlrent\expandedXMLentity
+ \edef\mmlascii{#2}%
+ \setnormalcatcodes
+ \ifx\mmlascii\empty
+ \donefalse
+ \else
+ \def\do##1##2\end % hack
+ {\edef\!!stringa{\string##1}%
+ \edef\!!stringb{\letterdollar}%
+ \ifx\!!stringa\!!stringb
+ \donetrue
+ \else
+ \donefalse
+ \fi}%
+ \expandafter\do\mmlascii\end
+ \fi
+ \ifdone
+ \hbox{\scantokens\@EA{\mmlascii}}%
+ \else
+ \scantokens\@EA{\mmlascii}%
+ \fi
+ \endgroup}}
+
+\remapXMLsequence [annotation-xml] [CPA] \MMLcANNOTATIONXML
+
+\def\MMLcANNOTATIONXML#1#2{}
+
+%%% constant and symbol elements
+
+\remapXMLsingular [integers] [CPA] \MMLcINTEGERS
+\remapXMLsingular [reals] [CPA] \MMLcREALS
+\remapXMLsingular [rationals] [CPA] \MMLcRATIONALS
+\remapXMLsingular [naturalnumbers] [CPA] \MMLcNATURALNUMBERS
+\remapXMLsingular [complexes] [CPA] \MMLcCOMPLEXES
+\remapXMLsingular [primes] [CPA] \MMLcPRIMES
+\remapXMLsingular [exponentiale] [CPA] \MMLcEXPONENTIALE
+\remapXMLsingular [imaginaryi] [CPA] \MMLcIMAGINARYI
+\remapXMLsingular [notanumber] [CPA] \MMLcNOTANUMBER
+\remapXMLsingular [true] [CPA] \MMLcTRUE
+\remapXMLsingular [false] [CPA] \MMLcFALSE
+\remapXMLsingular [emptyset] [CPA] \MMLcEMPTYSET
+\remapXMLsingular [pi] [CPA] \MMLcPI
+\remapXMLsingular [eulergamma] [CPA] \MMLcEULERGAMMA
+\remapXMLsingular [infinity] [CPA] \MMLcINFINITY
+
+\def\MMLcINTEGERS #1#2{\getXMLentity{integers}}
+\def\MMLcREALS #1#2{\getXMLentity{reals}}
+\def\MMLcRATIONALS #1#2{\getXMLentity{rationals}}
+\def\MMLcNATURALNUMBERS#1#2{\getXMLentity{naturalnumbers}}
+\def\MMLcCOMPLEXES #1#2{\getXMLentity{complexes}}
+\def\MMLcPRIMES #1#2{\getXMLentity{primes}}
+\def\MMLcEXPONENTIALE #1#2{\getXMLentity{ExponentialE}}
+\def\MMLcIMAGINARYI #1#2{\getXMLentity{ImaginaryI}}
+\def\MMLcNOTANUMBER #1#2{\mathop{\rm NaN}}
+\def\MMLcTRUE #1#2{\mathop{\rm true}}
+\def\MMLcFALSE #1#2{\mathop{\rm false}}
+\def\MMLcEMPTYSET #1#2{\mathop{\hbox{\O}}}
+\def\MMLcPI #1#2{\pi}
+\def\MMLcEULERGAMMA #1#2{\gamma}
+\def\MMLcINFINITY #1#2{\infty}
+
+\stopXMLmapping
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-mml.tex b/Master/texmf-dist/tex/context/base/xtag-mml.tex
new file mode 100644
index 00000000000..b77063986dc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mml.tex
@@ -0,0 +1,518 @@
+%D \module
+%D [ file=xtag-mml,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Math ML,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (math ml)}
+
+% I will reimplement this one without mapping since we now have more
+% tricks available
+
+%\enablemathpunctuation
+
+% First some general formula element definitions.
+
+\defineXMLenvironment [formula] [label=,sublabel=]
+ {\dostartXMLformula\placeformula}
+ {\dostopXMLformula}
+
+\defineXMLenvironment [subformula] [label=,sublabel=]
+ {\dostartXMLformula\placesubformula}
+ {\dostopXMLformula}
+
+\def\dostartXMLformula#1%
+ {\doifelsenothingXMLop{label}
+ {\startformula}
+ {\expanded{#1[\XMLop{label}]{\XMLop{sublabel}}}\startformula}}
+
+\def\dostopXMLformula
+ {\stopformula}
+
+% Since I only had the draft of mml 2 as example of
+% rendering, there are probably a lot of omissions and
+% misinterpretations. At least I learned some bits and
+% pieces of math rendering.
+%
+% The main complications were not so much the math, but to
+% find the most efficient way to handle elements without
+% spacing beging messed up. The first implementation was
+% aimed at getting reasonable output, this second
+% implementation is already better in terms of handling
+% nesting, and I will definitely need a third one that has
+% more efficient and less ugly code.
+%
+% The TeX part is not that complicated and once the
+% preprocessor was okay, the rest way just a lot of keying
+% and testing. It all comes down to gobbling, redefining,
+% and not so much to parsing.
+
+\unprotect
+
+\def\setupMMLappearance[#1]{\dodoubleargument\getparameters[@@MML#1]}
+
+\defineXMLdirective [mathml] \setupMMLappearance
+
+\defineXMLargument [math] \doXMLmath
+\defineXMLargument [imath] \doXMLimath
+\defineXMLargument [dmath] \doXMLdmath
+\defineXMLargument [m] \doXMLimath
+
+\unexpanded\def\doXMLmath {\ifhmode\@EA\doXMLimath\else\@EA\doXMLdmath\fi}
+\unexpanded\def\doXMLimath{\XMLremapdata[mml]{$}{$}}
+\unexpanded\def\doXMLdmath{\XMLremapdata[mml]{\dostartformula{}}{\dostopformula}}
+
+\ifx\XMLRtoks\undefined \newtoks\XMLRtoks \fi
+
+\def\convertasciiafter#1#2%
+ {\convertargument#2\to\asciiafter
+ \@EA#1\@EA{\asciiafter}}
+
+\def\checkMMLoperator#1% #2
+ {\unspaceargument#1\to\ascii
+ \doifXMLentityelse\ascii{\getXMLentity\ascii}} % {#2}
+
+% this will be done in a more safe way
+
+\def\MMLtodo#1{\enspace\hbox{\rm#1}\enspace}
+
+% this goes to core-mat
+
+\def\normalorfiller #1#2{#1}
+\def\normalordelimiter#1#2{#2}
+
+\def\enabledelimiter {\let\normalordelimiter\secondoftwoarguments}
+\def\disabledelimiter{\let\normalordelimiter\firstoftwoarguments}
+
+\def\enablefiller {\let\normalorfiller\secondoftwoarguments}
+\def\disablefiller {\let\normalorfiller\firstoftwoarguments}
+
+\def\mathopnolimits#1{\mathop{\rm#1}\nolimits}
+
+% Auxiliary macros
+
+\bgroup \obeylines
+
+\gdef\defineMMLentity% % needed !
+ {\bgroup\obeylines\xdefineMMLentity}
+
+\gdef\xdefineMMLentity #1 #2 #3 #4
+ {\egroup\dodefineMMLentity{#1}{#2}{#3}{#4}}
+
+\global\let\dodefineMMLentity\gobblefourarguments
+
+\gdef\defineMMLsynonym% % needed !
+ {\bgroup\obeylines\xdefineMMLsynonym}
+
+\gdef\xdefineMMLsynonym #1 #2
+ {\egroup\dodefineMMLsynonym{#1}{#2}}
+
+\global\let\dodefineMMLsynonym\gobbletwoarguments
+
+\egroup
+
+% some more
+
+\def\showMMLentity#1%
+ {\bgroup
+ \doifXMLentityelse{#1}
+ {\let\left\empty\let\right\empty\mathematics{\getXMLentity{#1}{}}}
+ {\getXMLentity{unknown}}%
+ \egroup}
+
+\newbox\unknownXMLentity
+\setbox\unknownXMLentity\hbox{\inframed[\c!strut=\v!no,\c!offset=1pt]{\ttx ?}}
+
+\defineXMLentity [unknown] {\copy\unknownXMLentity}
+
+% the definitions
+
+\ifx\blackboard\undefined
+ \def\blackboard{\ifx\Bbb\undefined\else\expandafter\Bbb\fi}
+\fi
+
+% basic entities, greek
+
+\defineXMLentity [alpha] {\mathematics \alpha}
+\defineXMLentity [beta] {\mathematics \beta}
+\defineXMLentity [gamma] {\mathematics \gamma}
+\defineXMLentity [delta] {\mathematics \delta}
+\defineXMLentity [epsilon] {\mathematics \epsilon}
+\defineXMLentity [zeta] {\mathematics \zeta}
+\defineXMLentity [eta] {\mathematics \eta}
+\defineXMLentity [theta] {\mathematics \theta}
+\defineXMLentity [iota] {\mathematics \iota}
+\defineXMLentity [kappa] {\mathematics \kappa}
+\defineXMLentity [lambda] {\mathematics \lambda}
+\defineXMLentity [theta] {\mathematics \theta}
+\defineXMLentity [mu] {\mathematics \mu}
+\defineXMLentity [nu] {\mathematics \nu}
+\defineXMLentity [xi] {\mathematics \xi}
+\defineXMLentity [pi] {\mathematics \pi}
+\defineXMLentity [rho] {\mathematics \rho}
+\defineXMLentity [sigma] {\mathematics \sigma}
+\defineXMLentity [tau] {\mathematics \tau}
+\defineXMLentity [upsilon] {\mathematics \upsilon}
+\defineXMLentity [phi] {\mathematics \phi}
+\defineXMLentity [chi] {\mathematics \chi}
+\defineXMLentity [psi] {\mathematics \psi}
+\defineXMLentity [omega] {\mathematics \omega}
+
+\defineXMLentity [varepsilon] {\mathematics \varepsilon}
+\defineXMLentity [vartheta] {\mathematics \vartheta}
+\defineXMLentity [varpi] {\mathematics \varpi}
+\defineXMLentity [varrho] {\mathematics \varrho}
+\defineXMLentity [varsigma] {\mathematics \varsigma}
+\defineXMLentity [varphi] {\mathematics \varphi}
+
+\defineXMLentity [epsilonv] {\mathematics \varepsilon}
+\defineXMLentity [thetav] {\mathematics \vartheta}
+\defineXMLentity [piv] {\mathematics \varpi}
+\defineXMLentity [rhov] {\mathematics \varrho}
+\defineXMLentity [sigmav] {\mathematics \varsigma}
+\defineXMLentity [phiv] {\mathematics \varphi}
+
+\defineXMLentity [epsi] {\mathematics \epsilon}
+\defineXMLentity [epsiv] {\mathematics \varepsilon}
+
+\defineXMLentity [Alpha] {A}
+\defineXMLentity [Beta] {B}
+\defineXMLentity [Gamma] {\mathematics \Gamma}
+\defineXMLentity [Delta] {\mathematics \Delta}
+\defineXMLentity [Epsilon] {E}
+\defineXMLentity [Zeta] {Z}
+\defineXMLentity [Eta] {N}
+\defineXMLentity [Theta] {\mathematics \Theta}
+\defineXMLentity [Iota] {I}
+\defineXMLentity [Kappa] {K}
+\defineXMLentity [Lambda] {\mathematics \Lambda}
+\defineXMLentity [Mu] {M}
+\defineXMLentity [Nu] {N}
+\defineXMLentity [Xi] {\mathematics \Xi}
+\defineXMLentity [Pi] {\mathematics \Pi}
+\defineXMLentity [Ro] {R}
+\defineXMLentity [Sigma] {\mathematics \Sigma}
+\defineXMLentity [Tau] {T}
+\defineXMLentity [Upsilon] {\mathematics \Upsilon}
+\defineXMLentity [Phi] {\mathematics \Phi}
+\defineXMLentity [Chi] {X}
+\defineXMLentity [Psi] {\mathematics \Psi}
+\defineXMLentity [Omega] {\mathematics \Omega}
+
+% basic entities, hebrew
+
+\defineXMLentity [aleph] {\mathematics \aleph}
+
+% basic entities, functions
+
+\defineXMLentity [abs] {\mathopnolimits{abs}}
+\defineXMLentity [arg] {\mathopnolimits{arg}}
+\defineXMLentity [codomain] {\mathopnolimits{codomain}}
+\defineXMLentity [curl] {\mathopnolimits{curl}}
+\defineXMLentity [determinant] {\mathopnolimits{det}}
+\defineXMLentity [divergence] {\mathopnolimits{div}}
+\defineXMLentity [domain] {\mathopnolimits{domain}}
+\defineXMLentity [false] {\mathopnolimits{false}}
+\defineXMLentity [gcd] {\mathopnolimits{gcd}}
+\defineXMLentity [grad] {\mathopnolimits{grad}}
+\defineXMLentity [identity] {\mathopnolimits{id}}
+\defineXMLentity [image] {\mathopnolimits{image}}
+\defineXMLentity [lcm] {\mathopnolimits{lcm}}
+\defineXMLentity [max] {\mathopnolimits{max}}
+\defineXMLentity [median] {\mathopnolimits{median}}
+\defineXMLentity [min] {\mathopnolimits{min}}
+\defineXMLentity [mode] {\mathopnolimits{mode}}
+\defineXMLentity [mod] {\mathopnolimits{mod}}
+\defineXMLentity [notanumber] {\mathopnolimits{NaN}}
+\defineXMLentity [otherwise] {\mathopnolimits{otherwise}}
+\defineXMLentity [true] {\mathopnolimits{true}}
+\defineXMLentity [declare] {\mathopnolimits{declare}}
+\defineXMLentity [as] {\mathopnolimits{as}}
+\defineXMLentity [polar] {\mathopnolimits{Polar}}
+
+\defineXMLentity [mathematicald] {d}
+
+\defineXMLentity [imaginaryi] {{\rm i}}
+\defineXMLentity [differentiald] {\partial}
+\defineXMLentity [exponentiale] {{\rm e}}
+\defineXMLentity [capitaldifferentiald] {D}
+
+\defineXMLentity [ii] {\getXMLentity{imaginaryi}}
+\defineXMLentity [dd] {\getXMLentity{differentiald}}
+\defineXMLentity [ee] {\getXMLentity{exponentiale}}
+\defineXMLentity [DD] {\getMMLentity{capitaldifferentiald}}
+
+\defineXMLentity [ImaginaryI] {\getXMLentity{imaginaryi}}
+\defineXMLentity [DifferentialD] {\getXMLentity{differentiald}}
+\defineXMLentity [ExponentialE] {\getXMLentity{exponentiale}}
+\defineXMLentity [CapitalDifferentialD] {\getXMLentity{differentiald}}
+
+\defineXMLentity [NaN] {\getXMLentity{notanumber}}
+\defineXMLentity [NotANumber] {\getXMLentity{notanumber}}
+
+\defineXMLentity [and] {\wedge}
+\defineXMLentity [exists] {\exists}
+\defineXMLentity [forall] {\forall}
+\defineXMLentity [implies] {\Rightarrow}
+\defineXMLentity [not] {\neg}
+\defineXMLentity [or] {\vee}
+\defineXMLentity [xor] {\mathopnolimits{xor}}
+
+\defineXMLentity [imaginary] {\Im}
+\defineXMLentity [real] {\Re}
+
+\defineXMLentity [lceiling] {\lceil}
+\defineXMLentity [rceiling] {\rceil}
+
+\defineXMLentity [lfloor] {\lfloor}
+\defineXMLentity [rfloor] {\rfloor}
+
+\defineXMLentity [ne] {\neq}
+\defineXMLentity [neq] {\neq}
+\defineXMLentity [gt] {>}
+\defineXMLentity [lt] {<}
+\defineXMLentity [ge] {\geq}
+\defineXMLentity [geq] {\geq}
+\defineXMLentity [le] {\leq}
+\defineXMLentity [leq] {\leq}
+
+\defineXMLentity [equivalent] {\equiv}
+\defineXMLentity [equiv] {\equiv}
+\defineXMLentity [approx] {\approx}
+
+\defineXMLentity [factorof] {\mid}
+\defineXMLentity [mapsto] {\mapsto}
+
+\defineXMLentity [int] {\int}
+\defineXMLentity [prime] {\prime}
+\defineXMLentity [laplacian] {\nabla^2}
+\defineXMLentity [partial] {\partial}
+
+\defineXMLentity [union] {\cup}
+\defineXMLentity [intersect] {\cap}
+\defineXMLentity [in] {\in}
+\defineXMLentity [notin] {\not\in}
+\defineXMLentity [subset] {\subset}
+\defineXMLentity [prsubset] {\subseteq}
+\defineXMLentity [notsubset] {\not\subset}
+\defineXMLentity [notprsubset] {\not\subseteq}
+\defineXMLentity [setdiff] {\setminus}
+
+\defineXMLentity [card] {\vert}
+\defineXMLentity [cartesianproduct] {\times}
+
+\defineXMLentity [sum] {\sum}
+\defineXMLentity [prod] {\prod}
+\defineXMLentity [product] {\prod}
+\defineXMLentity [lim] {\lim}
+
+\defineXMLentity [exp] {\mathopnolimits{exp}} % {\exp}
+\defineXMLentity [ln] {\mathopnolimits{ln}} % {\ln}
+\defineXMLentity [log] {\mathopnolimits{log}} % {\log}
+
+\defineXMLentity [sin] {\mathopnolimits{sin}}
+\defineXMLentity [arcsin] {\mathopnolimits{arcsin}}
+\defineXMLentity [sinh] {\mathopnolimits{sinh}}
+\defineXMLentity [arcsinh] {\mathopnolimits{arcsinh}}
+\defineXMLentity [cos] {\mathopnolimits{cos}}
+\defineXMLentity [arccos] {\mathopnolimits{arccos}}
+\defineXMLentity [cosh] {\mathopnolimits{cosh}}
+\defineXMLentity [arccosh] {\mathopnolimits{arccosh}}
+\defineXMLentity [tan] {\mathopnolimits{tan}}
+\defineXMLentity [arctan] {\mathopnolimits{arctan}}
+\defineXMLentity [tanh] {\mathopnolimits{tanh}}
+\defineXMLentity [arctanh] {\mathopnolimits{arctanh}}
+\defineXMLentity [cot] {\mathopnolimits{cot}}
+\defineXMLentity [arccot] {\mathopnolimits{arccot}}
+\defineXMLentity [coth] {\mathopnolimits{coth}}
+\defineXMLentity [arccoth] {\mathopnolimits{arccoth}}
+\defineXMLentity [csc] {\mathopnolimits{csc}}
+\defineXMLentity [arccsc] {\mathopnolimits{arccsc}}
+\defineXMLentity [csch] {\mathopnolimits{csch}}
+\defineXMLentity [arccsch] {\mathopnolimits{arccsch}}
+\defineXMLentity [sec] {\mathopnolimits{sec}}
+\defineXMLentity [arcsec] {\mathopnolimits{arcsec}}
+\defineXMLentity [sech] {\mathopnolimits{sech}}
+\defineXMLentity [arcsech] {\mathopnolimits{arcsech}}
+
+\defineXMLentity [transpose] {^{\rm T}}
+
+\defineXMLentity [plusminus] {\pm}
+\defineXMLentity [minusplus] {\mp}
+
+\defineXMLentity [vectorproduct] {\times}
+\defineXMLentity [scalarproduct] {\cdot}
+\defineXMLentity [outerproduct] {\otimes}
+
+\defineXMLentity [integers] {\integers}
+\defineXMLentity [reals] {\reals}
+\defineXMLentity [rationals] {\rationals}
+\defineXMLentity [naturalnumbers] {\naturalnumbers}
+\defineXMLentity [complexes] {\complexes}
+\defineXMLentity [primes] {\primes}
+
+\defineXMLentity [emptyset] {\emptyset}
+\defineXMLentity [pi] {\pi}
+\defineXMLentity [eulergamma] {\gamma}
+\defineXMLentity [infinity] {\mathematics{\infty}}
+
+\defineXMLentity [InvisibleTimes] {}
+\defineXMLentity [InvisibleComma] {}
+\defineXMLentity [ApplyFunction] {}
+
+\defineXMLentity [it] {\getXMLentity{InvisibleTines}}
+\defineXMLentity [ic] {\getXMLentity{InvisibleComma}}
+\defineXMLentity [af] {\getXMLentity{ApplyFunction}}
+
+\defineXMLentity [PlusMinus] {\getXMLentity{plusminus}}
+
+\defineXMLentity [infin] {\getXMLentity{infinity}}
+\defineXMLentity [infty] {\getXMLentity{infinity}}
+\defineXMLentity [part] {\getXMLentity{differentiald}}
+
+\defineXMLentity [RightArrow] {\normalorfiller\rightarrow\rightarrowfill}
+\defineXMLentity [LeftArrow] {\normalorfiller\leftarrow\leftarrowfill}
+\defineXMLentity [UnderBrace] {\normalorfiller\empty\upbracefill}
+\defineXMLentity [OverBrace] {\normalorfiller\empty\downbracefill}
+\defineXMLentity [UnderBar] {\normalorfiller\hrule\hrulefill}
+\defineXMLentity [OverBar] {\normalorfiller\hrule\hrulefill}
+\defineXMLentity [Hat] {\normalorfiller\empty\empty} % todo
+
+\defineXMLentity [downarrow] {\mathortext\downarrow\empty}
+\defineXMLentity [uparrow] {\mathortext\uparrow\empty}
+
+\defineXMLentity [Tab] {\hskip4em}
+\defineXMLentity [NewLine] {\mathortext\empty\crlf}
+\defineXMLentity [IndentingNewLine] {\mathortext\empty\crlf}
+
+\defineXMLentity [NoBreak] {\nobreak}
+\defineXMLentity [GoodBreak] {\goodbreak}
+\defineXMLentity [BadBreak] {\nobreak}
+
+\defineXMLentity [Space] {\getXMLentity{MediumSpace}}
+\defineXMLentity [NonBreakingSpace] {\getXMLentity{MediumSpace}}
+\defineXMLentity [ZeroWidthSpace] {}
+
+\def\somespaceentity#1#2%
+ {\mathortext
+ {\mskip#1mu}
+ {\ifvmode\dontleavehmode\else\unskip\fi\hskip#2em\strut\hskip\zeropoint\ignorespaces}%
+ \relax}
+
+\defineXMLentity [VeryThinSpace] {\somespaceentity {2}{.125}}
+\defineXMLentity [ThinSpace] {\somespaceentity {3}{.25}}
+\defineXMLentity [MediumSpace] {\somespaceentity {4}{.5}}
+\defineXMLentity [ThickSpace] {\somespaceentity {5}{1}}
+\defineXMLentity [NegativeVeryThinSpace] {\somespaceentity{-2}{-.125}}
+\defineXMLentity [NegativeThinSpace] {\somespaceentity{-3}{-.25}}
+\defineXMLentity [NegativeMediumSpace] {\somespaceentity{-4}{-.5}}
+\defineXMLentity [NegativeThickSpace] {\somespaceentity{-5}{-1}}
+
+\defineXMLentity [NegVeryThinSpace] {\getXMLentity{NegativeVeryThinSpace}}
+\defineXMLentity [NegThinSpace] {\getXMLentity{NegativeThinSpace}}
+\defineXMLentity [NegMediumSpace] {\getXMLentity{NegativeMediumSpace}}
+\defineXMLentity [NegThickSpace] {\getXMLentity{NegativeThickSpace}}
+
+\defineXMLentity [nbsp] {\getXMLentity{NonBreakingSpace}}
+\defineXMLentity [thinsp] {\getXMLentity{ThinSpace}}
+\defineXMLentity [medsp] {\getXMLentity{MediumSpace}}
+\defineXMLentity [thicksp] {\getXMLentity{ThickSpace}}
+
+\defineXMLentity [larr] {\getXMLentity{LeftArrow}}
+\defineXMLentity [rarr] {\getXMLentity{RightArrow}}
+
+\defineXMLentity [lbrace] {\normalordelimiter{\{}{\left \{}}
+\defineXMLentity [rbrace] {\normalordelimiter{\}}{\right\}}}
+\defineXMLentity [lbracket] {\normalordelimiter{[}{\left [}}
+\defineXMLentity [rbracket] {\normalordelimiter{]}{\right]}}
+\defineXMLentity [lparenthesis] {\normalordelimiter{(}{\left (}}
+\defineXMLentity [rparenthesis] {\normalordelimiter{)}{\right)}}
+\defineXMLentity [langle] {\normalordelimiter{\langle}{\left \langle}}
+\defineXMLentity [rangle] {\normalordelimiter{\rangle}{\right\rangle}}
+
+\defineXMLentity [lang] {\getXMLentity{langle}}
+\defineXMLentity [rang] {\getXMLentity{rangle}}
+\defineXMLentity [lbrack] {\getXMLentity{lbracket}}
+\defineXMLentity [rbrack] {\getXMLentity{rbracket}}
+\defineXMLentity [lparent] {\getXMLentity{lparenthesis}}
+\defineXMLentity [rparent] {\getXMLentity{rparenthesis}}
+
+\bgroup
+\catcode`\{=12 \doglobal\convertargument{\to\mmllbrace
+\catcode`\}=12 \doglobal\convertargument}\to\mmlrbrace
+\egroup
+
+\@EA \defineXMLentity \@EA [\mmllbrace] {\getXMLentity{lbrace}}
+\@EA \defineXMLentity \@EA [\mmlrbrace] {\getXMLentity{rbrace}}
+
+\defineXMLentity [{[}] {\getXMLentity{lbracket}}
+\defineXMLentity [{]}] {\getXMLentity{rbracket}}
+\defineXMLentity [{(}] {\getXMLentity{lparenthesis}}
+\defineXMLentity [{)}] {\getXMLentity{rparenthesis}}
+
+\defineXMLentity [times] {\times}
+\defineXMLentity [minus] {-}
+\defineXMLentity [plus] {+}
+\defineXMLentity [plusmn] {\pm}
+
+\defineXMLentity [nabla] {\nabla}
+
+\def\myspecialvert{\mathematics{\vert}} % temp hack, should stretch
+
+\defineXMLentity [,] {{,}}
+\defineXMLentity [.] {{.}}
+\defineXMLentity [+] {+}
+\defineXMLentity [-] {-}
+\defineXMLentity [(] {(}
+\defineXMLentity [)] {)}
+\defineXMLentity [<] {\mathematics{<}}
+\defineXMLentity [>] {\mathematics{>}}
+\defineXMLentity [|] {\myspecialvert}
+\defineXMLentity [/] {/}
+\defineXMLentity [*] {\times}
+\defineXMLentity [=] {=}
+
+\defineXMLentity [++] {++}
+\defineXMLentity [--] {--}
+\defineXMLentity [//] {//}
+\defineXMLentity [**] {\times\times}
+\defineXMLentity [==] {==}
+
+\defineXMLentity [quot] {"}
+
+\defineXMLentity [triangle] {\mathematics\triangle}
+\defineXMLentity [otimes] {\mathematics\otimes}
+\defineXMLentity [oplus] {\mathematics\oplus}
+\defineXMLentity [cup] {\mathematics\cup}
+\defineXMLentity [cap] {\mathematics\cap}
+\defineXMLentity [sdot] {\mathematics\cdot}
+\defineXMLentity [dot] {\mathematics\cdot}
+\defineXMLentity [sim] {\mathematics\sim}
+\defineXMLentity [circ] {\mathematics\circ}
+\defineXMLentity [dagger] {\mathematics\dagger}
+\defineXMLentity [cdots] {\mathematics\cdots}
+
+\defineXMLentity [...] {\getXMLentity{cdots}}
+\defineXMLentity [continued] {\getXMLentity{cdots}}
+
+\defineXMLentity [sub] {\getXMLentity{subset}}
+\defineXMLentity [sube] {\getXMLentity{prsubset}}
+\defineXMLentity [notprsubset] {\getXMLentity{notprsubset}}
+
+\defineXMLentity [ndash] {\endash}
+\defineXMLentity [mdash] {\emdash}
+
+\defineXMLentity [tex-bar] {\mathematics{\vert}}
+\defineXMLentity [tex-dollar] {\dollar}
+\defineXMLentity [tex-backslash] {\backslash}
+\defineXMLentity [tex-leftbrace] {\mathematics{\{}}
+\defineXMLentity [tex-rightbrace] {\mathematics{\}}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-mmp.tex b/Master/texmf-dist/tex/context/base/xtag-mmp.tex
new file mode 100644
index 00000000000..7cc6e5b2692
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mmp.tex
@@ -0,0 +1,567 @@
+%D \module
+%D [ file=xtag-mmp,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Math ML,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% under reconstruction
+%
+% \starttext
+% \usemodule[mathml] \useXMLfilter[utf]
+% \unprotect
+%
+% \remapXMLsequence [mover] [CPA] \MMLpOVER
+% \remapXMLsequence [munder] [CPA] \MMLpUNDER
+%
+% \def\MMLpUNDER#1#2%
+% {\getXMLarguments{munder}{accent="false" #1}%
+% \withnexttwoXMLRelements\doMMLpUNDER#2}
+%
+% \def\MMLpOVER#1#2%
+% {\getXMLarguments{mover}{accent="false" #1}%
+% \withnexttwoXMLRelements\doMMLpOVER #2}
+%
+% \def\doMMLpUNDER
+% {\doifelse{\XMLpar{munder}{accent}{}}{true}
+% {\secondXMLRelement\firstXMLRelement}
+% {\mathop{\vtop{\m@th\ialign{\hss##\hss\crcr
+% \disabledelimiter\doMMLfiller\firstXMLRelement
+% \crcr\noalign{\kern3\p@\nointerlineskip}%
+% \disabledelimiter\doMMLfiller\secondXMLRelement
+% \crcr\noalign{\kern3\p@}}}}\limits}}
+%
+% \def\doMMLpOVER
+% {\doifelse{\XMLpar{mover}{accent}{}}{true}
+% {\secondXMLRelement\firstXMLRelement}
+% {\mathop{\vbox{\m@th\ialign{\hss##\hss\crcr\noalign{\kern3\p@}%
+% \disabledelimiter\doMMLfiller\secondXMLRelement
+% \crcr\noalign{\kern3\p@\nointerlineskip}%
+% \disabledelimiter\doMMLfiller\firstXMLRelement
+% \crcr}}}\limits}}
+%
+% \protect
+%
+% Normal: \startXMLdata<math><mover ><mi>a</mi><mo>¯</mo></mover></math>\stopXMLdata \par
+% Accent: \startXMLdata<math><mover accent="true"><mi>x</mi><mo>¯</mo></mover></math>\stopXMLdata \par
+%
+% \stoptext
+
+\writestatus{loading}{Context XML Macros (presentational math ml)}
+
+\unprotect
+
+\startXMLmapping [mml]
+
+\def\convertasciiafter#1#2%
+ {\convertargument#2\to\asciiafter
+ \@EA#1\@EA{\asciiafter}}
+
+%
+
+\def\checkMMLoperator#1#2% temp hack
+ {\unspaceargument#1\to\ascii
+ \doifXMLentityelse\ascii{\getXMLentity\ascii}{#2}}
+
+\remapXMLsequence [mi] [CPA] \MMLpMI
+\remapXMLsequence [mn] [CPA] \MMLpMN
+\remapXMLsequence [mo] [CPA] \MMLpMO
+
+\def\MMLpmath#1#2%
+ {\begingroup
+ \getXMLarguments{mstyle}{#1}\setMMLpmathstyle{mstyle}#2%
+ \endgroup}
+
+\def\MMLpMI#1#2%
+ {\MMLpmath{#1}{\checkMMLoperator{#2}{#2}}}
+
+\def\MMLpMN#1#2%
+ {\begingroup\rm\MMLpmath{#1}{#2}\endgroup}
+
+\def\MMLpMO#1#2% yes or no
+ {\checkMMLoperator
+ {#2}
+ {\ConvertConstantAfter\doifinstringelse{\xmlrent}{#2}
+ {#2}{\hbox{\MMLpmath{#1}{\ignorespaces#2\unskip}}}}} % \hbox ?
+
+\remapXMLsequence [mfenced] [CPA] \MMLpFENCED
+
+\let\normalright=\right
+\let\normalleft =\left
+
+\def\doMMLleft #1{\pushmacro\left \let\left \empty\normalleft #1\popmacro\left}
+\def\doMMLright#1{\pushmacro\right\let\right\empty\normalright#1\popmacro\right}
+
+\let\MMLpopen \empty
+\let\MMLpclose\empty
+
+\def\MMLpFENCED#1#2%
+ {\getXMLarguments{mfenced}{open="(" close=")" separators="" #1}%
+ \edef\MMLpopen {\XMLpar{mfenced}{open}{}}%
+ \edef\MMLpclose{\XMLpar{mfenced}{close}{}}%
+ \ifx\MMLpopen\empty\else\doMMLleft\MMLpopen\fi
+ \pushmacro\MMLpopen
+ \pushmacro\MMLpclose
+ \doifXMLparelse{mfenced}{separators}
+ {\resetMMLseparator
+ \encapsulateXMLR
+ {}%
+ {\pushmacro\myspecialvert % hack
+ \def\myspecialvert{\;\vrule\;}%
+ \grabMMLseparator{\XMLpar{mfenced}{separators}{}}%
+ \popmacro\myspecialvert}
+ {}%
+ {#2\empty}}
+ {#2}%
+ \popmacro\MMLpclose
+ \popmacro\MMLpopen
+ \ifx\MMLpclose\empty
+ \ifx\MMLpopen\empty\else\right.\fi
+ \else\doMMLright\MMLpclose\fi}
+
+\def\resetMMLseparator
+ {\newcounter\MMLxxcounter
+ \let\lastMMLseparator\empty}
+
+\def\grabMMLseparator#1%
+ {\increment\MMLxxcounter
+ \newcounter\MMLyycounter
+ \expanded{\dograbMMLseparator#1\noexpand\relax}}
+
+\def\dograbMMLseparator
+ {\increment\MMLyycounter
+ \doifnextcharelse\relax
+ {\lastMMLseparator\gobbleoneargument}
+ {\doifnextcharelse\xmlrent\grabMMLseparatora\grabMMLseparatorb}}
+
+\def\grabMMLseparatora#1\xmlrent#2%
+ {\ifnum\MMLxxcounter=\MMLyycounter\space
+ \def\lastMMLseparator{\xmlrent{#2}}%
+ \fi
+ \dograbMMLseparator}
+
+\def\grabMMLseparatorb#1% better use \checkMMLoperator
+ {\ifnum\MMLxxcounter=\MMLyycounter\space
+\doifXMLentityelse{#1}
+ {\def\lastMMLseparator{\xmlrent{#1}}}
+ {\def\lastMMLseparator{#1}}%
+ \fi
+ \dograbMMLseparator}
+
+\remapXMLsequence [menclose] [CPA] \MMLpENCLOSE
+
+\def\MMLpENCLOSE#1#2%
+ {\getXMLarguments{menclose}{notation="" #1}%
+ \doifelse{\XMLpar{menclose}{notation}{}}{longdiv}
+ {\overline{)#2}}
+ {#2}}
+
+\remapXMLsequence [mfrac] [CPA] \MMLpFRAC
+
+\def\MMLpFRAC#1#2% \above is suboptimal since the spacing changes
+ {\withnexttwoXMLRelements
+ {\getXMLarguments{mfrac}{linethickness="" #1}%
+ \doifXMLparelse{mfrac}{linethickness}
+ {\edef\theXMLpar{\XMLpar{mfrac}{linethickness}{1}}%
+ \processaction
+ [\theXMLpar]
+ [ thin=>\scratchdimen=.2pt,
+ medium=>\scratchdimen=.4pt,
+ thick=>\scratchdimen=.8pt,
+ unknown=>\setdimensionwithunit\scratchdimen{\theXMLpar}{}]%
+ {{\firstXMLRelement}\above\scratchdimen{\secondXMLRelement}}}
+ {\frac{\firstXMLRelement}{\secondXMLRelement}}}%
+ #2}
+
+\remapXMLsequence [ms] [CPA] \MMLpSTRING
+
+\def\MMLpSTRING#1#2%
+ {\MMLpTEXT{#1}
+ {\getXMLarguments{mstyle}{#1}%
+ \getXMLarguments{ms}{lquote="\xmlrent{quot}" rquote="\xmlrent{quot}" #1}%
+ \XMLpar{ms}{lquote}{}\ignorespaces#2\unskip\unskip\XMLpar{ms}{rquote}{}}}
+
+\remapXMLsequence [mstyle] [CPA] \MMLpSTYLE
+
+\getXMLarguments
+ {mstyle}
+ {fontweight="" fontstyle="" mathstyle="" mathvariant="" background="" color=""}
+
+\def\MMLpSTYLE#1#2%
+ {\getXMLarguments{mstyle}{#1}#2}
+
+\remapXMLsequence [mtext] [CPA] \MMLpTEXT
+\remapXMLsequence [merror] [CPA] \MMLpERROR
+\remapXMLsequence [mphantom] [CPA] \MMLpPHANTOM
+\remapXMLsequence [mpadded] [CPA] \MMLpPADDED
+
+\def\MMLpTEXT#1#2%
+ {\hbox
+ {\tf % else encoding problems
+ \getXMLarguments{mstyle}{#1}%
+ \doMMPpbackground{mstyle}
+ {\doMMPpcolor{mstyle}
+ {\setMMLptextstyle{mstyle}%
+ \ignorespaces#2\unskip\unskip}}}}
+
+\def\setMMLpstyle#1%
+ {\doifdefined{MMLpstyle:#1}{\getvalue{MMLpstyle:#1}}}
+
+\def\defineMMLstyle[#1]#2%
+ {\setvalue{MMLpstyle:#1}{#2}}
+
+\defineMMLstyle[normal] {\tf} \defineMMLstyle[double-stuck] {\bf}
+\defineMMLstyle[bolditalic] {\bi} \defineMMLstyle[bold-italic] {\bi}
+\defineMMLstyle[boldslanted]{\bs} \defineMMLstyle[bold-slanted] {\bs}
+\defineMMLstyle[boldnormal] {\bf} \defineMMLstyle[bold] {\bf}
+\defineMMLstyle[slanted] {\sl} \defineMMLstyle[normalslanted]{\sl}
+\defineMMLstyle[italic] {\it} \defineMMLstyle[normalitalic] {\it}
+\defineMMLstyle[fraktur] {\bf} \defineMMLstyle[bold-fraktur] {\bf}
+\defineMMLstyle[script] {\tf} \defineMMLstyle[bold-script] {\bf}
+
+% and all kind of other crappy names
+
+\def\setMMLptextstyle#1%
+ {\setMMLpstyle{\XMLpar{#1}{fontweight}{}\XMLpar{#1}{fontstyle}{}}}
+
+\def\setMMLpmathstyle#1%
+ {\setMMLpstyle{\XMLpar{#1}{mathvariant}{}}}
+
+\def\doMMPpcolor#1#2%
+ {\doifXMLparelse{#1}{color}{\color[\XMLpar{#1}{color}{}]{#2}}{#2}}
+
+\def\doMMPpbackground#1#2%
+ {\doifXMLparelse{#1}{background}
+ {\inframed
+ [\c!frame=\v!off,
+ \c!background=\v!color,
+ \c!backgroundcolor=\XMLpar{#1}{background}{}]
+ {#2}}
+ {#2}}
+
+\def\MMLpERROR #1#2{\hbox{$\displaystyle#2$}}
+\def\MMLpPHANTOM#1#2{\phantom{\ignorespaces{}#2\unskip}} % watch spacing {} hack
+\def\MMLpPADDED #1#2{#2}
+
+\remapXMLsequence [mrow] [CPA] \MMLpROW
+
+\def\MMLpROW#1#2{#2}
+
+\remapXMLsequence [msqrt] [CPA] \MMLpSQRT
+\remapXMLsequence [mroot] [CPA] \MMLpROOT
+
+\def\MMLpSQRT#1#2%
+ {\sqrt{#2}}
+
+\def\MMLpROOT#1#2%
+ {\withnexttwoXMLRelements{\root{\secondXMLRelement}\of{\firstXMLRelement}}#2}
+
+\remapXMLsequence [msup] [CPA] \MMLpSUP
+\remapXMLsequence [msub] [CPA] \MMLpSUB
+
+\setupMMLappearance[scripts][\c!alternative=\v!a]
+
+\def\MMLpSUBP#1#2%
+ {\withnexttwoXMLRelements
+ {\doifelse\@@MMLscriptsalternative\v!a
+ {{\firstXMLRelement}#1{\secondXMLRelement}} % both {} essential
+ {\firstXMLRelement#1{\secondXMLRelement}}}%
+ #2}
+
+\def\MMLpSUP#1{\MMLpSUBP^}
+\def\MMLpSUB#1{\MMLpSUBP_}
+
+\remapXMLsequence [msubsup] [CPA] \MMLpSUBSUP
+
+\def\MMLpSUBSUP#1#2%
+ {\withnextthreeXMLRelements
+ {\firstXMLRelement_{\secondXMLRelement}^{\thirdXMLRelement}}%
+ #2}
+
+\remapXMLsequence [mover] [CPA] \MMLpOVER
+\remapXMLsequence [munder] [CPA] \MMLpUNDER
+\remapXMLsequence [munderover] [CPA] \MMLpUNDEROVER
+
+% hack, cannot be nested
+
+\def\MMLpUNDER#1#2{\withnexttwoXMLRelements\doMMLpUNDER#2}
+\def\MMLpOVER #1#2{\withnexttwoXMLRelements\doMMLpOVER #2}
+
+\def\doMMLfiller#1%
+ {\pushmacro\doMMLfiller
+ \let\doMMLfiller\gobbleoneargument
+ \gdef\dodoMMLfiller{\disablefiller\mathematics{#1}}%
+ \setbox\scratchbox=\hbox
+ {\def\normalorfiller##1##2%
+ {\gdef\dodoMMLfiller{\enablefiller#1}%
+ \let\normalorfiller\gobbletwoarguments}%
+ $#1$}%
+ \popmacro\doMMLfiller
+ \dodoMMLfiller}
+
+\def\doMMLpUNDER
+ {\mathop{\vtop{\m@th\ialign{\hss##\hss\crcr
+ \disabledelimiter\doMMLfiller\firstXMLRelement
+ \crcr\noalign{\kern3\p@\nointerlineskip}%
+ \disabledelimiter\doMMLfiller\secondXMLRelement
+ \crcr\noalign{\kern3\p@}}}}\limits}
+
+\def\doMMLpOVER
+ {\mathop{\vbox{\m@th\ialign{\hss##\hss\crcr\noalign{\kern3\p@}%
+ \disabledelimiter\doMMLfiller\secondXMLRelement
+ \crcr\noalign{\kern3\p@\nointerlineskip}%
+ \disabledelimiter\doMMLfiller\firstXMLRelement
+ \crcr}}}\limits}
+
+\def\MMLpUNDEROVER#1#2%
+ {\withnextthreeXMLRelements
+ {\firstXMLRelement
+ _{\disablefiller\disabledelimiter\secondXMLRelement}%
+ ^{\disablefiller\disabledelimiter\thirdXMLRelement}}#2}
+
+\remapXMLsequence [mtable] [CPA] \MMLpTABLE
+\remapXMLsequence [mtr] [CPA] \MMLpTR
+\remapXMLsequence [mtd] [CPA] \MMLpTD
+\remapXMLsequence [mlabeledtr] [CPA] \MMLpLABELEDTR
+
+\unexpanded\def\@col@amp@{&}
+
+\def\MMLpTR#1#2{\collectbetweenXMLR{\@col@amp@}{#2}\the\XMLRtoks\crcr}
+\def\MMLpTD#1#2{#2}
+
+\def\MMLpLABELEDTR{\MMLpTR}
+
+\def\MMLpTABLEmapper#1#2#3%
+ {\doifXMLparelse{mtable}{#1}
+ {\newcounter\MMLcounter
+ \def\docommando##1%
+ {\increment\MMLcounter
+ \let\MMLpREMAP\doMMLpREMAP
+ \def\MMLsetting{##1}#3% remap list
+ \expanded{\setupTABLE[column][\MMLcounter][#2=\MMLsetting]}}%
+ \expanded{\processseparatedlist[\XMLpar{mtable}{#1}{}][ ]\noexpand\docommando}}
+ {}}
+
+\def\MMLpTABLEmap#1#2#3%
+ {\doifXMLparelse{mtbl}{#1}
+ {\edef\MMLsetting{\XMLpar{mtbl}{#1}{}}#3% remap list
+ \edef\theMMLpTABLEmap{#2=\MMLsetting,\theMMLpTABLEmap}}
+ {}}
+
+\def\doMMLpREMAP#1#2%
+ {\doif{\MMLsetting}{#1}
+ {\def\MMLsetting{#2}%
+ \let\MMLpREMAP\gobbletwoarguments}}
+
+\let\MMLpREMAP\doMMLpREMAP
+
+\def\doMMLpTABLE#1#2%
+ {\begingroup
+ \getXMLarguments{mtable}
+ {columnalign="" columnspacing=".25ex" rowspacing=".25ex"
+ frame="" color="" background="" #1}%
+ \setupTABLE[\c!frame=\v!off]%
+ \MMLpTABLEmapper{background}{\c!backgroundcolor}{}%
+ \MMLpTABLEmapper{color}{\c!color}{}%
+ \MMLpTABLEmapper{frame}{\c!frame}
+ {\MMLpREMAP{none}{off}\MMLpREMAP{solid}{on}}%
+ \MMLpTABLEmapper{columnalign}{\c!align}
+ {\MMLpREMAP{left}{right}%
+ \MMLpREMAP{right}{left}%
+ \MMLpREMAP{center}{middle}}%
+ \setMMLpunit{\XMLpar{mtable}{rowspacing}{}}{.25ex}%
+ \let\MMLpTABLEoffset\MMLpunit
+ \let\MMLpTR\doMMLpTR
+ \let\MMLpTD\doMMLpTD
+ \bTABLE[\c!background=\v!color,\c!offset=\MMLpTABLEoffset]#2\eTABLE
+ \endgroup}
+
+\def\doMMLpTR#1#2%
+ {\doifXMLRchildelse{mtd}{#2}
+ {\bTR\ignorespaces#2\unskip\eTR}
+ {\bTR\doMMLpTD{#1}{#2}\eTR}}
+
+\def\doMMLpTD#1#2%
+ {\getXMLarguments{mtbl}
+ {columnalign="" columnspacing="" rowspacing=""
+ frame="" color="" background="" #1}%
+ \let\theMMLpTABLEmap\empty
+ \MMLpTABLEmap{background}{\c!backgroundcolor}{}%
+ \MMLpTABLEmap{color}{\c!color}{}%
+ \MMLpTABLEmap{frame}{\c!frame}
+ {\MMLpREMAP{none}{off}\MMLpREMAP{solid}{on}}%
+ \MMLpTABLEmap{columnalign}{\c!align}
+ {\MMLpREMAP{left}{right}\MMLpREMAP{right}{left}}%
+ \@EA\bTD\@EA[\theMMLpTABLEmap]$\ignorespaces#2\unskip$\eTD}
+
+\setupMMLappearance[mtable][\c!alternative=\v!a]
+
+\def\MMLpTABLE
+ {\doifelse\@@MMLmtablealternative\v!a
+ {\expandafter\MMLpTABLEa}
+ {\expandafter\MMLpTABLEb}}
+
+\def\MMLpTABLEa#1#2%
+ {\begingroup
+ \doifelsenothing{#1}
+ {\global\setfalse\mmlTABLEargs}
+ {\global\settrue\mmlTABLEargs}%
+ \ifconditional\mmlTABLEargs \else
+ \setbox\scratchbox=\hbox
+ {$\displaystyle
+ \def\MMLpTABLE##1##2%
+ {\ifconditional\mmlTABLEargs \else
+ \doifelsenothing{##1}{##2}{\global\settrue\mmlTABLEargs}%
+ \fi}%
+ \let\MMLpTR\MMLpTABLE
+ \let\MMLpTD\MMLpTABLE
+ #2$}%
+ \fi
+ \ifconditional\mmlTABLEargs
+ \let\MMLpTABLE\doMMLpTABLE
+ \def\next{\MMLpTABLE{#1}}%
+ \else
+ \let\next\matrix
+ \fi
+ \next{#2}%
+ \endgroup}
+
+\let\MMLpTABLEb\doMMLpTABLE
+
+\remapXMLsingular [mspace] [CPA] \MMLpSPACE
+
+\def\setMMLpunit#1#2%
+ {\setbox\scratchbox=\hbox
+ {\edef\ascii{#1}%
+ \@EA\aftersplitstring\ascii\at.\to\ascii
+ \scratchcounter=\ifx\ascii\empty#1\else\ascii\fi
+ \unskip\unskip}%
+ \ifdim\wd\scratchbox=\zeropoint
+ \edef\MMLpunit{#1em}%
+ \else
+ \edef\ascii{#1}\convertcommand\ascii\to\ascii
+ \convertasciiafter\doifinstringelse{em}{\ascii}{\edef\MMLpunit{#1}}{%
+ \convertasciiafter\doifinstringelse{ex}{\ascii}{\edef\MMLpunit{#1}}{%
+ \convertasciiafter\doifinstringelse{pt}{\ascii}{\edef\MMLpunit{#1}}{%
+ \edef\MMLpunit{#2}}}}%
+ \fi}
+
+\def\MMLpSPACE#1#2%
+ {\getXMLarguments{mspace}{width=".5em" #1}%
+ \setMMLpunit{\XMLpar{mspace}{width}{}}{.5em}%
+ \hskip\MMLpunit\relax}
+
+
+\remapXMLsingular [mglyph] [CPA] \MMLpGLYPH
+
+\def\MMLpGLYPH#1#2% we assume \definefont usage
+ {\getXMLarguments{mglyph}{fontfamily="" index="1" alt="" #1}%
+ \def\MMLpglyph{\XMLpar{mglyph}{fontfamily}{}}%
+ \doifelsenothing{\MMLpglyph}
+ {\hbox{\tttf[fontfamily unspecified]}}
+ {\doifdefinedelse{\MMLpglyph}
+ {\hbox{\getvalue{\MMLpglyph}\char0\XMLpar{mglyph}{index}{1}}}
+ {\doifelsenothing{\XMLpar{mglyph}{alt}{}}
+ {\hbox{\tttf[unknown fontfamily \XMLpar{mglyph}{fontfamily}{}]}}
+ {\hbox{\tttf\XMLpar{mglyph}{alt}{}}}}}}
+
+\remapXMLsingular [malignmark] [CPA] \MMLpALIGNMARK
+
+\def\MMLpALIGNMARK#1#2%
+ {}
+
+\remapXMLsingular [none] [CPA] \MMLpNONE
+\remapXMLsingular [mprescripts] [CPA] \MMLpMPRESCRIPTS
+\remapXMLsequence [mmultiscripts] [CPA] \MMLpMULTISCRIPTS
+
+\def\MMLpNONE #1#2{}
+\def\MMLpMPRESCRIPTS#1#2{}
+
+\def\MMLpMULTISCRIPTS#1#2%
+ {\pushmacro\xmlr
+ \let\xmlr\pMULTISCRIPTmmlPRE
+ \donefalse \scratchcounter=0 #2\empty
+ \let\xmlr\pMULTISCRIPTmmlPOST
+ \donetrue \scratchcounter=0 #2\empty
+ \popmacro\xmlr}
+
+\def\pMULTISCRIPTmmlPRE#1#2#3#4%
+ {\ifdone
+ \ifodd\scratchcounter
+ ^{\naturalxmlr{#1}{#2}{#3}{#4}}{}%
+ \else
+ _{\naturalxmlr{#1}{#2}{#3}{#4}}%
+ \fi
+ \else
+ \doif{mprescripts/}{#1}{\donetrue{}}% weak, the / here
+ \fi
+ \ifdone \advance\scratchcounter 1 \fi}
+
+\def\pMULTISCRIPTmmlPOST#1#2#3#4%
+ {\ifdone
+ \ifnum\scratchcounter=0
+ \naturalxmlr{#1}{#2}{#3}{#4}%
+ \else\ifodd\scratchcounter
+ _{\naturalxmlr{#1}{#2}{#3}{#4}}%
+ \else
+ ^{\naturalxmlr{#1}{#2}{#3}{#4}}{}%
+ \fi\fi
+ \fi
+ \doif{mprescripts/}{#1}{\donefalse}% weak, the / here
+ \ifdone \advance\scratchcounter 1 \fi}
+
+\stopXMLmapping
+
+\protect \endinput
+
+% extra samples
+
+\startXMLdata
+<formula>
+ <dmath>
+ <mfrac>
+ <mrow>
+ <mfrac>
+ <mrow>
+ <mtext>Q</mtext>
+ </mrow>
+ <mrow>
+ <mtext>P</mtext>
+ </mrow>
+ </mfrac>
+ </mrow>
+ <mrow>
+ <mtext>R</mtext>
+ </mrow>
+ </mfrac>
+ </dmath>
+</formula>
+\stopXMLdata
+
+\startXMLdata
+<formula>
+ <dmath>
+ <mfrac>
+ <mrow>
+ <mfrac>
+ <mrow>
+ <mi mathvariant='normal'>R</mi>
+ </mrow>
+ <mrow>
+ <mi mathvariant='normal'>P</mi>
+ </mrow>
+ </mfrac>
+ </mrow>
+ <mrow>
+ <mi mathvariant='normal'>R</mi>
+ </mrow>
+ </mfrac>
+ </dmath>
+</formula>
+\stopXMLdata
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxa.tex b/Master/texmf-dist/tex/context/base/xtag-mxa.tex
new file mode 100644
index 00000000000..5e83367df79
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxa.tex
@@ -0,0 +1,101 @@
+\defineMMLsynonym bkarow rbarr
+\defineMMLsynonym circlearrowleft olarr
+\defineMMLsynonym circlearrowright orarr
+\defineMMLsynonym curvearrowleft cularr
+\defineMMLsynonym curvearrowright curarr
+\defineMMLsynonym dbkarow rBarr
+\defineMMLsynonym DoubleDownArrow dArr
+\defineMMLsynonym DoubleLeftRightArrow hArr
+\defineMMLsynonym DoubleLongLeftArrow xlArr
+\defineMMLsynonym DoubleLongLeftRightArrow xhArr
+\defineMMLsynonym DoubleLongRightArrow xrArr
+\defineMMLsynonym DoubleUpArrow uArr
+\defineMMLsynonym DoubleUpDownArrow vArr
+\defineMMLsynonym Downarrow dArr
+\defineMMLsynonym DownArrowUpArrow duarr
+\defineMMLsynonym downdownarrows ddarr
+\defineMMLsynonym downharpoonleft dharl
+\defineMMLsynonym downharpoonright dharr
+\defineMMLsynonym DownLeftVector lhard
+\defineMMLsynonym DownRightVector rhard
+\defineMMLsynonym drbkarow RBarr
+\defineMMLsynonym Equilibrium rlhar
+\defineMMLsynonym hksearow searhk
+\defineMMLsynonym hkswarow swarhk
+\defineMMLsynonym hookleftarrow larrhk
+\defineMMLsynonym hookrightarrow rarrhk
+\defineMMLsynonym LeftArrowRightArrow lrarr
+\defineMMLsynonym leftarrowtail larrtl
+\defineMMLsynonym LeftDownVector dharl
+\defineMMLsynonym leftharpoondown lhard
+\defineMMLsynonym leftharpoonup lharu
+\defineMMLsynonym leftleftarrows llarr
+\defineMMLsynonym LeftRightArrow harr
+\defineMMLsynonym Leftrightarrow hArr
+\defineMMLsynonym leftrightarrow harr
+\defineMMLsynonym leftrightarrows lrarr
+\defineMMLsynonym leftrightharpoons lrhar
+\defineMMLsynonym leftrightsquigarrow harrw
+\defineMMLsynonym LeftUpVector uharl
+\defineMMLsynonym LeftVector lharu
+\defineMMLsynonym Lleftarrow lAarr
+\defineMMLsynonym LongLeftArrow xlarr
+\defineMMLsynonym Longleftarrow xlArr
+\defineMMLsynonym longleftarrow xlarr
+\defineMMLsynonym LongLeftRightArrow xharr
+\defineMMLsynonym Longleftrightarrow xhArr
+\defineMMLsynonym longleftrightarrow xharr
+\defineMMLsynonym longmapsto xmap
+\defineMMLsynonym LongRightArrow xrarr
+\defineMMLsynonym Longrightarrow xrArr
+\defineMMLsynonym longrightarrow xrarr
+\defineMMLsynonym looparrowleft larrlp
+\defineMMLsynonym looparrowright rarrlp
+\defineMMLsynonym LowerLeftArrow swarr
+\defineMMLsynonym LowerRightArrow searr
+\defineMMLsynonym Lsh lsh
+\defineMMLsynonym mapsto map
+\defineMMLsynonym multimap mumap
+\defineMMLsynonym nearrow nearr
+\defineMMLsynonym nLeftarrow nlArr
+\defineMMLsynonym nleftarrow nlarr
+\defineMMLsynonym nLeftrightarrow nhArr
+\defineMMLsynonym nleftrightarrow nharr
+\defineMMLsynonym nRightarrow nrArr
+\defineMMLsynonym nrightarrow nrarr
+\defineMMLsynonym nwarrow nwarr
+\defineMMLsynonym ReverseEquilibrium lrhar
+\defineMMLsynonym ReverseUpEquilibrium duhar
+\defineMMLsynonym RightArrowLeftArrow rlarr
+\defineMMLsynonym rightarrowtail rarrtl
+\defineMMLsynonym RightDownVector dharr
+\defineMMLsynonym rightharpoondown rhard
+\defineMMLsynonym rightharpoonup rharu
+\defineMMLsynonym rightleftarrows rlarr
+\defineMMLsynonym rightleftharpoons rlhar
+\defineMMLsynonym rightrightarrows rrarr
+\defineMMLsynonym rightsquigarrow rarrw
+\defineMMLsynonym RightTeeArrow map
+\defineMMLsynonym RightUpVector uharr
+\defineMMLsynonym RightVector rharu
+\defineMMLsynonym Rrightarrow rAarr
+\defineMMLsynonym Rsh rsh
+\defineMMLsynonym searrow searr
+\defineMMLsynonym ShortLeftArrow slarr
+\defineMMLsynonym ShortRightArrow srarr
+\defineMMLsynonym swarrow swarr
+\defineMMLsynonym toea nesear
+\defineMMLsynonym tosa seswar
+\defineMMLsynonym twoheadleftarrow Larr
+\defineMMLsynonym twoheadrightarrow Rarr
+\defineMMLsynonym Uparrow uArr
+\defineMMLsynonym UpArrowDownArrow udarr
+\defineMMLsynonym UpDownArrow varr
+\defineMMLsynonym Updownarrow vArr
+\defineMMLsynonym updownarrow varr
+\defineMMLsynonym UpEquilibrium udhar
+\defineMMLsynonym upharpoonleft uharl
+\defineMMLsynonym upharpoonright uharr
+\defineMMLsynonym UpperLeftArrow nwarr
+\defineMMLsynonym UpperRightArrow nearr
+\defineMMLsynonym upuparrows uuarr
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxb.tex b/Master/texmf-dist/tex/context/base/xtag-mxb.tex
new file mode 100644
index 00000000000..c325a9e4493
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxb.tex
@@ -0,0 +1,55 @@
+\defineMMLsynonym ast midast
+\defineMMLsynonym Backslash setmn
+\defineMMLsynonym barwedge barwed
+\defineMMLsynonym bigcap xcap
+\defineMMLsynonym bigcirc xcirc
+\defineMMLsynonym bigcup xcup
+\defineMMLsynonym bigodot xodot
+\defineMMLsynonym bigoplus xoplus
+\defineMMLsynonym bigotimes xotime
+\defineMMLsynonym bigsqcup xsqcup
+\defineMMLsynonym bigtriangledown xdtri
+\defineMMLsynonym bigtriangleup xutri
+\defineMMLsynonym biguplus xuplus
+\defineMMLsynonym bigvee xvee
+\defineMMLsynonym bigwedge xwedge
+\defineMMLsynonym boxminus minusb
+\defineMMLsynonym boxplus plusb
+\defineMMLsynonym boxtimes timesb
+\defineMMLsynonym cdot sdot
+\defineMMLsynonym circledast oast
+\defineMMLsynonym circledcirc ocir
+\defineMMLsynonym circleddash odash
+\defineMMLsynonym CircleDot odot
+\defineMMLsynonym CircleMinus ominus
+\defineMMLsynonym CirclePlus oplus
+\defineMMLsynonym CircleTimes otimes
+\defineMMLsynonym Coproduct coprod
+\defineMMLsynonym curlyvee cuvee
+\defineMMLsynonym curlywedge cuwed
+\defineMMLsynonym ddagger Dagger
+\defineMMLsynonym diamond diam
+\defineMMLsynonym divideontimes divonx
+\defineMMLsynonym dotminus minusd
+\defineMMLsynonym dotplus plusdo
+\defineMMLsynonym dotsquare sdotb
+\defineMMLsynonym doublebarwedge Barwed
+\defineMMLsynonym intercal intcal
+\defineMMLsynonym Intersection xcap
+\defineMMLsynonym intprod iprod
+\defineMMLsynonym leftthreetimes lthree
+\defineMMLsynonym oslash osol
+\defineMMLsynonym rightthreetimes rthree
+\defineMMLsynonym setminus setmn
+\defineMMLsynonym smallsetminus ssetmn
+\defineMMLsynonym SquareIntersection sqcap
+\defineMMLsynonym SquareUnion sqcup
+\defineMMLsynonym Star sstarf
+\defineMMLsynonym star sstarf
+\defineMMLsynonym Sum sum
+\defineMMLsynonym Union xcup
+\defineMMLsynonym UnionPlus uplus
+\defineMMLsynonym Vee xvee
+\defineMMLsynonym VerticalTilde wreath
+\defineMMLsynonym Wedge xwedge
+\defineMMLsynonym wr wreath
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxc.tex b/Master/texmf-dist/tex/context/base/xtag-mxc.tex
new file mode 100644
index 00000000000..e692f2a249b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxc.tex
@@ -0,0 +1,10 @@
+\defineMMLsynonym LeftCeiling lceil
+\defineMMLsynonym LeftFloor lfloor
+\defineMMLsynonym llcorner dlcorn
+\defineMMLsynonym lmoustache lmoust
+\defineMMLsynonym lrcorner drcorn
+\defineMMLsynonym RightCeiling rceil
+\defineMMLsynonym RightFloor rfloor
+\defineMMLsynonym rmoustache rmoust
+\defineMMLsynonym ulcorner ulcorn
+\defineMMLsynonym urcorner urcorn
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxh.tex b/Master/texmf-dist/tex/context/base/xtag-mxh.tex
new file mode 100644
index 00000000000..3cf0103c804
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxh.tex
@@ -0,0 +1,67 @@
+\defineMMLsynonym approx ap
+\defineMMLsynonym Because becaus
+\defineMMLsynonym because becaus
+\defineMMLsynonym blacksquare squarf
+\defineMMLsynonym bot bottom
+\defineMMLsynonym circ compfn
+\defineMMLsynonym ClockwiseContourIntegral cwconint
+\defineMMLsynonym Congruent equiv
+\defineMMLsynonym ContourIntegral conint
+\defineMMLsynonym CounterClockwiseContourIntegral awconint
+\defineMMLsynonym Del nabla
+\defineMMLsynonym DoubleContourIntegral Conint
+\defineMMLsynonym DoubleLeftArrow lArr
+\defineMMLsynonym DoubleRightArrow rArr
+\defineMMLsynonym DoubleVerticalBar par
+\defineMMLsynonym DownTee top
+\defineMMLsynonym Element isinv
+\defineMMLsynonym Exists exist
+\defineMMLsynonym ForAll forall
+\defineMMLsynonym geq ge
+\defineMMLsynonym GreaterEqual ge
+\defineMMLsynonym iiiint qint
+\defineMMLsynonym iiint tint
+\defineMMLsynonym Implies rArr
+\defineMMLsynonym in isin
+\defineMMLsynonym Integral int
+\defineMMLsynonym langle lang
+\defineMMLsynonym LeftAngleBracket lang
+\defineMMLsynonym Leftarrow lArr
+\defineMMLsynonym leq le
+\defineMMLsynonym MinusPlus mnplus
+\defineMMLsynonym mp mnplus
+\defineMMLsynonym NotElement notin
+\defineMMLsynonym NotEqual ne
+\defineMMLsynonym NotReverseElement notniva
+\defineMMLsynonym oint conint
+\defineMMLsynonym parallel par
+\defineMMLsynonym PartialD part
+\defineMMLsynonym Proportional prop
+\defineMMLsynonym propto prop
+\defineMMLsynonym rangle rang
+\defineMMLsynonym ReverseElement niv
+\defineMMLsynonym RightAngleBracket rang
+\defineMMLsynonym Rightarrow rArr
+\defineMMLsynonym simeq sime
+\defineMMLsynonym SmallCircle compfn
+\defineMMLsynonym Sqrt radic
+\defineMMLsynonym Subset sub
+\defineMMLsynonym subset sub
+\defineMMLsynonym subseteq sube
+\defineMMLsynonym SubsetEqual sube
+\defineMMLsynonym SuchThat ni
+\defineMMLsynonym Superset sup
+\defineMMLsynonym SupersetEqual supe
+\defineMMLsynonym supset sup
+\defineMMLsynonym supseteq supe
+\defineMMLsynonym Therefore there4
+\defineMMLsynonym therefore there4
+\defineMMLsynonym Tilde sim
+\defineMMLsynonym TildeEqual sime
+\defineMMLsynonym TildeFullEqual cong
+\defineMMLsynonym TildeTilde ap
+\defineMMLsynonym TripleDot tdot
+\defineMMLsynonym UpTee perp
+\defineMMLsynonym vee or
+\defineMMLsynonym Vert Verbar
+\defineMMLsynonym wedge and
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxn.tex b/Master/texmf-dist/tex/context/base/xtag-mxn.tex
new file mode 100644
index 00000000000..35eeade9a1a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxn.tex
@@ -0,0 +1,84 @@
+\defineMMLsynonym gnapprox gnap
+\defineMMLsynonym gneq gne
+\defineMMLsynonym gneqq gnE
+\defineMMLsynonym gvertneqq gvnE
+\defineMMLsynonym lnapprox lnap
+\defineMMLsynonym lneq lne
+\defineMMLsynonym lneqq lnE
+\defineMMLsynonym lvertneqq lvnE
+\defineMMLsynonym napprox nap
+\defineMMLsynonym ngeq nge
+\defineMMLsynonym ngeqq ngE
+\defineMMLsynonym ngeqslant nges
+\defineMMLsynonym ngtr ngt
+\defineMMLsynonym nleq nle
+\defineMMLsynonym nleqq nlE
+\defineMMLsynonym nleqslant nles
+\defineMMLsynonym nless nlt
+\defineMMLsynonym NotCongruent nequiv
+\defineMMLsynonym NotDoubleVerticalBar npar
+\defineMMLsynonym NotGreater ngt
+\defineMMLsynonym NotGreaterEqual nge
+\defineMMLsynonym NotGreaterFullEqual ngE
+\defineMMLsynonym NotGreaterGreater nGtv
+\defineMMLsynonym NotGreaterLess ntvgl
+\defineMMLsynonym NotGreaterSlantEqual nges
+\defineMMLsynonym NotGreaterTilde ngsim
+\defineMMLsynonym NotLeftTriangle nltri
+\defineMMLsynonym NotLeftTriangleEqual nltrie
+\defineMMLsynonym NotLess nlt
+\defineMMLsynonym NotLessEqual nle
+\defineMMLsynonym NotLessFullEqual nlE
+\defineMMLsynonym NotLessGreater ntvlg
+\defineMMLsynonym NotLessLess nLtv
+\defineMMLsynonym NotLessSlantEqual nles
+\defineMMLsynonym NotLessTilde nlsim
+\defineMMLsynonym NotPrecedes npr
+\defineMMLsynonym NotPrecedesEqual npre
+\defineMMLsynonym NotPrecedesSlantEqual nprcue
+\defineMMLsynonym NotRightTriangle nrtri
+\defineMMLsynonym NotRightTriangleEqual nrtrie
+\defineMMLsynonym NotSquareSubsetEqual nsqsube
+\defineMMLsynonym NotSquareSupersetEqual nsqsupe
+\defineMMLsynonym NotSubset vnsub
+\defineMMLsynonym NotSucceeds nsc
+\defineMMLsynonym NotSucceedsEqual nsce
+\defineMMLsynonym NotSucceedsSlantEqual nsccue
+\defineMMLsynonym NotSuperset vnsup
+\defineMMLsynonym NotTilde nsim
+\defineMMLsynonym NotTildeEqual nsime
+\defineMMLsynonym NotTildeFullEqual ncong
+\defineMMLsynonym NotTildeTilde nap
+\defineMMLsynonym NotVerticalBar nmid
+\defineMMLsynonym nparallel npar
+\defineMMLsynonym nprec npr
+\defineMMLsynonym npreceq npre
+\defineMMLsynonym nshortmid nsmid
+\defineMMLsynonym nshortparallel nspar
+\defineMMLsynonym nsimeq nsime
+\defineMMLsynonym nsubset vnsub
+\defineMMLsynonym nsubseteq nsube
+\defineMMLsynonym nsubseteqq nsubE
+\defineMMLsynonym nsucc nsc
+\defineMMLsynonym nsucceq nsce
+\defineMMLsynonym nsupset vnsup
+\defineMMLsynonym nsupseteq nsupe
+\defineMMLsynonym nsupseteqq nsupE
+\defineMMLsynonym ntriangleleft nltri
+\defineMMLsynonym ntrianglelefteq nltrie
+\defineMMLsynonym ntriangleright nrtri
+\defineMMLsynonym ntrianglerighteq nrtrie
+\defineMMLsynonym precnapprox prnap
+\defineMMLsynonym precneqq prnE
+\defineMMLsynonym precnsim prnsim
+\defineMMLsynonym subsetneq subne
+\defineMMLsynonym subsetneqq subnE
+\defineMMLsynonym succnapprox scnap
+\defineMMLsynonym succneqq scnE
+\defineMMLsynonym succnsim scnsim
+\defineMMLsynonym supsetneq supne
+\defineMMLsynonym supsetneqq supnE
+\defineMMLsynonym varsubsetneq vsubne
+\defineMMLsynonym varsubsetneqq vsubnE
+\defineMMLsynonym varsupsetneq vsupne
+\defineMMLsynonym varsupsetneqq vsupnE
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxo.tex b/Master/texmf-dist/tex/context/base/xtag-mxo.tex
new file mode 100644
index 00000000000..045b4f40696
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxo.tex
@@ -0,0 +1,14 @@
+\defineMMLsynonym angle ang
+\defineMMLsynonym backprime bprime
+\defineMMLsynonym circledS oS
+\defineMMLsynonym complement comp
+\defineMMLsynonym emptyset empty
+\defineMMLsynonym hbar plank
+\defineMMLsynonym hslash plankv
+\defineMMLsynonym Im image
+\defineMMLsynonym measuredangle angmsd
+\defineMMLsynonym nexists nexist
+\defineMMLsynonym NotExists nexist
+\defineMMLsynonym Re real
+\defineMMLsynonym varnothing emptyv
+\defineMMLsynonym wp weierp
diff --git a/Master/texmf-dist/tex/context/base/xtag-mxr.tex b/Master/texmf-dist/tex/context/base/xtag-mxr.tex
new file mode 100644
index 00000000000..ed1498f8137
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-mxr.tex
@@ -0,0 +1,112 @@
+\defineMMLsynonym approxeq ape
+\defineMMLsynonym backcong bcong
+\defineMMLsynonym backepsilon bepsi
+\defineMMLsynonym backsim bsim
+\defineMMLsynonym backsimeq bsime
+\defineMMLsynonym between twixt
+\defineMMLsynonym Bumpeq bump
+\defineMMLsynonym bumpeq bumpe
+\defineMMLsynonym circeq cire
+\defineMMLsynonym coloneq colone
+\defineMMLsynonym Cup smile
+\defineMMLsynonym CupCap asymp
+\defineMMLsynonym curlyeqprec cuepr
+\defineMMLsynonym curlyeqsucc cuesc
+\defineMMLsynonym ddotseq eDDot
+\defineMMLsynonym doteq esdot
+\defineMMLsynonym doteqdot eDot
+\defineMMLsynonym DotEqual esdot
+\defineMMLsynonym DoubleRightTee vDash
+\defineMMLsynonym eqcirc ecir
+\defineMMLsynonym eqcolon ecolon
+\defineMMLsynonym eqsim esim
+\defineMMLsynonym eqslantgtr egs
+\defineMMLsynonym eqslantless els
+\defineMMLsynonym EqualTilde esim
+\defineMMLsynonym fallingdotseq efDot
+\defineMMLsynonym geqq gE
+\defineMMLsynonym geqslant ges
+\defineMMLsynonym gg Gt
+\defineMMLsynonym ggg Gg
+\defineMMLsynonym GreaterEqualLess gel
+\defineMMLsynonym GreaterFullEqual gE
+\defineMMLsynonym GreaterLess gl
+\defineMMLsynonym GreaterSlantEqual ges
+\defineMMLsynonym GreaterTilde gsim
+\defineMMLsynonym gtrapprox gap
+\defineMMLsynonym gtrdot gtdot
+\defineMMLsynonym gtreqless gel
+\defineMMLsynonym gtreqqless gEl
+\defineMMLsynonym gtrless gl
+\defineMMLsynonym gtrsim gsim
+\defineMMLsynonym HumpDownHump bump
+\defineMMLsynonym HumpEqual bumpe
+\defineMMLsynonym LeftTee dashv
+\defineMMLsynonym LeftTriangle vltri
+\defineMMLsynonym LeftTriangleEqual ltrie
+\defineMMLsynonym leqq lE
+\defineMMLsynonym leqslant les
+\defineMMLsynonym lessapprox lap
+\defineMMLsynonym lessdot ltdot
+\defineMMLsynonym lesseqgtr leg
+\defineMMLsynonym lesseqqgtr lEg
+\defineMMLsynonym LessEqualGreater leg
+\defineMMLsynonym LessFullEqual lE
+\defineMMLsynonym LessGreater lg
+\defineMMLsynonym lessgtr lg
+\defineMMLsynonym lesssim lsim
+\defineMMLsynonym LessSlantEqual les
+\defineMMLsynonym LessTilde lsim
+\defineMMLsynonym ll Lt
+\defineMMLsynonym NestedGreaterGreater Gt
+\defineMMLsynonym NestedLessLess Lt
+\defineMMLsynonym pitchfork fork
+\defineMMLsynonym prec pr
+\defineMMLsynonym precapprox prap
+\defineMMLsynonym preccurlyeq prcue
+\defineMMLsynonym Precedes pr
+\defineMMLsynonym PrecedesEqual pre
+\defineMMLsynonym PrecedesSlantEqual prcue
+\defineMMLsynonym PrecedesTilde prsim
+\defineMMLsynonym preceq pre
+\defineMMLsynonym precsim prsim
+\defineMMLsynonym Proportion Colon
+\defineMMLsynonym questeq equest
+\defineMMLsynonym RightTee vdash
+\defineMMLsynonym RightTriangle vrtri
+\defineMMLsynonym RightTriangleEqual rtrie
+\defineMMLsynonym risingdotseq erDot
+\defineMMLsynonym shortmid smid
+\defineMMLsynonym shortparallel spar
+\defineMMLsynonym smallfrown sfrown
+\defineMMLsynonym smallsmile ssmile
+\defineMMLsynonym sqsubset sqsub
+\defineMMLsynonym sqsubseteq sqsube
+\defineMMLsynonym sqsupset sqsup
+\defineMMLsynonym sqsupseteq sqsupe
+\defineMMLsynonym SquareSubset sqsub
+\defineMMLsynonym SquareSubsetEqual sqsube
+\defineMMLsynonym SquareSuperset sqsup
+\defineMMLsynonym SquareSupersetEqual sqsupe
+\defineMMLsynonym Subset Sub
+\defineMMLsynonym subseteqq subE
+\defineMMLsynonym succ sc
+\defineMMLsynonym succapprox scap
+\defineMMLsynonym succcurlyeq sccue
+\defineMMLsynonym Succeeds sc
+\defineMMLsynonym SucceedsEqual sce
+\defineMMLsynonym SucceedsSlantEqual sccue
+\defineMMLsynonym SucceedsTilde scsim
+\defineMMLsynonym succeq sce
+\defineMMLsynonym succsim scsim
+\defineMMLsynonym Supset Sup
+\defineMMLsynonym supseteqq supE
+\defineMMLsynonym thickapprox thkap
+\defineMMLsynonym thicksim thksim
+\defineMMLsynonym trianglelefteq ltrie
+\defineMMLsynonym triangleq trie
+\defineMMLsynonym trianglerighteq rtrie
+\defineMMLsynonym varpropto vprop
+\defineMMLsynonym vartriangleleft vltri
+\defineMMLsynonym vartriangleright vrtri
+\defineMMLsynonym VerticalBar mid
diff --git a/Master/texmf-dist/tex/context/base/xtag-pml.tex b/Master/texmf-dist/tex/context/base/xtag-pml.tex
new file mode 100644
index 00000000000..7371ec16507
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-pml.tex
@@ -0,0 +1,83 @@
+%D \module
+%D [ file=xtag-pml,
+%D version=2001.09.04,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Physics ML,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (phys ml)}
+
+%D This filter runs on top of the mathml and units modules.
+
+\useXMLfilter[mml,mmp,mmc,unt]
+
+\defineXMLargument [phys] \doXMLphys
+\defineXMLargument [iphys] \doXMLiphys
+\defineXMLargument [dphys] \doXMLdphys
+
+\unprotect
+
+\unexpanded\def\doXMLphys {\ifhmode\@EA\doXMLiphys\else\@EA\doXMLdphys\fi}
+\unexpanded\def\doXMLiphys{\XMLremapdata[mml]{$\ignorespaces}{\unskip$}}
+\unexpanded\def\doXMLdphys{\XMLremapdata[mml]{\dostartformula{}}{\dostopformula}}
+
+\protect
+
+\doifnotmode{demo}{\endinput}
+
+\usemodule[units]
+
+\starttext
+
+\startXMLdata
+<phys>
+ <apply> <times/>
+ <cn> 10 </cn>
+ <ci><unit><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
+ </apply>
+</phys>
+\stopXMLdata
+
+\startXMLdata
+<phys>
+ <apply> <divide/>
+ <cn> 10 </cn>
+ <ci> <unit><Unit/><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
+ </apply>
+</phys>
+\stopXMLdata
+
+\startXMLdata
+<phys>
+ <apply> <times/>
+ <cn> 10 </cn>
+ <ci> <unit> <Milli/> <Sec/> <Per/> <Square/> <Kilo/> <Meter/> </unit> </ci>
+ </apply>
+</phys>
+\stopXMLdata
+
+\startXMLdata
+<phys>
+ <apply> <times/>
+ <cn> 10 </cn>
+ <ci> <unit><Milli/><Sec/><Per/><Square/><Kilo/><Meter/></unit> </ci>
+ </apply>
+</phys>
+\stopXMLdata
+
+\startXMLdata
+<phys>
+ <apply> <times/>
+ <cn> 10 </cn>
+ <ci> <unit> <Milli/> <Sec/> <Per/> <Square/> <Kilo/> <Meter/> </unit> </ci>
+ </apply>
+</phys>
+\stopXMLdata
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/base/xtag-pmu.tex b/Master/texmf-dist/tex/context/base/xtag-pmu.tex
new file mode 100644
index 00000000000..425257b498a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-pmu.tex
@@ -0,0 +1,188 @@
+%D \module
+%D [ file=xtag-pmu,
+%D version=2001.06.10,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Units,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (units)}
+
+%D Quick and dirty in||line units:
+%D
+%D \startbuffer
+%D <phys>
+%D <cn> 10 </cn>
+%D <cu> <Newton/> <Square/> <Meter/> <Per/> <Sec/> </cu>
+%D </phys>
+%D \stopbuffer
+%D
+%D \typebuffer \processXMLbuffer
+%D
+%D A more \MATHML||like unit application:
+%D
+%D \startbuffer
+%D <phys> <apply> <unit/>
+%D <cn> 10 </cn>
+%D <csymbol> <Square/> <Meter/> <Per/> <Sec/> </csymbol>
+%D </apply> </phys>
+%D \stopbuffer
+%D
+%D \typebuffer \processXMLbuffer
+%D
+%D A bit more compact:
+%D
+%D \startbuffer
+%D <phys> <apply> <unit/>
+%D <cn> 10 </cn>
+%D <cu> <Square/> <Meter/> <Per/> <Sec/> </cu>
+%D </apply> </phys>
+%D \stopbuffer
+%D
+%D \typebuffer \processXMLbuffer
+%D
+%D A bit more complicated:
+%D
+%D \startbuffer
+%D <phys> <apply> <unit/>
+%D <apply> <divide/> <ci> a </ci> <cn> 10 </cn> </apply>
+%D <cu> <Square/> <Meter/> <Per/> <Sec/> </cu>
+%D </apply> </phys>
+%D \stopbuffer
+%D
+%D \typebuffer \processXMLbuffer
+%D
+%D An alternative (equivalent) for \type {</cu>}:
+%D
+%D \startbuffer
+%D <phys> <apply> <unit/>
+%D <cn> 10 </cn> <cunseq> <Square/> <Meter/> <Per/> <Sec/> </cunseq>
+%D </apply> </phys>
+%D \stopbuffer
+%D
+%D \typebuffer \processXMLbuffer
+
+\defineXMLsingular [unitmeaning] [label=] \doPMLunitmeaning
+
+\def\doPMLunitmeaning%
+ {\expanded{\unitmeaning{\XMLop{label}}}}
+
+\startXMLmapping [mml]
+
+\remapXMLsequence [unit] [CPA] \doPMLuseq
+\remapXMLsingular [unit] [CPA] \doPMLunit % #2\empty
+\remapXMLsequence [cunseq] [CPA] \doPMLuseq % #2
+\remapXMLsequence [cu] [CPA] \doPMLuseq % #2
+
+\newif\ifPMLunit \PMLunittrue
+
+\def\doPMLuseq#1#2{\PMLunittrue\ignorespaces#2\unskip\PMLunitfalse}
+\def\doPMLunit#1#2\empty{\ignorespaces#2\unskip}
+
+\def\handlePMLunit#1{\ifPMLunit\ignorespaces#1\fi\ignorespaces}
+
+%D All unit commands are remapped in a similar way.
+
+\remapXMLsingular [Atto] [C] {\handlePMLunit\Atto}
+\remapXMLsingular [Femto] [C] {\handlePMLunit\Femto}
+\remapXMLsingular [Pico] [C] {\handlePMLunit\Pico}
+\remapXMLsingular [Nano] [C] {\handlePMLunit\Nano}
+\remapXMLsingular [Micro] [C] {\handlePMLunit\Micro}
+\remapXMLsingular [Milli] [C] {\handlePMLunit\Milli}
+\remapXMLsingular [Centi] [C] {\handlePMLunit\Centi}
+\remapXMLsingular [Deci] [C] {\handlePMLunit\Deci}
+\remapXMLsingular [Hecto] [C] {\handlePMLunit\Hecto}
+\remapXMLsingular [Kilo] [C] {\handlePMLunit\Kilo}
+\remapXMLsingular [Mega] [C] {\handlePMLunit\Mega}
+\remapXMLsingular [Giga] [C] {\handlePMLunit\Giga}
+\remapXMLsingular [Terra] [C] {\handlePMLunit\Terra}
+\remapXMLsingular [Peta] [C] {\handlePMLunit\Peta}
+\remapXMLsingular [Exa] [C] {\handlePMLunit\Exa}
+
+\remapXMLsingular [Times] [C] {\handlePMLunit\Times}
+\remapXMLsingular [Solidus] [C] {\handlePMLunit\Solidus}
+\remapXMLsingular [Per] [C] {\handlePMLunit\Per}
+\remapXMLsingular [OutOf] [C] {\handlePMLunit\OutOf}
+
+\remapXMLsingular [Linear] [C] {\handlePMLunit\Linear}
+\remapXMLsingular [Square] [C] {\handlePMLunit\Square}
+\remapXMLsingular [Cubic] [C] {\handlePMLunit\Cubic}
+
+\remapXMLsingular [Inverse] [C] {\handlePMLunit\Inverse}
+
+\remapXMLsingular [Degrees] [C] {\handlePMLunit\Degrees}
+\remapXMLsingular [Meter] [C] {\handlePMLunit\Meter}
+\remapXMLsingular [Liter] [C] {\handlePMLunit\Liter}
+\remapXMLsingular [Sec] [C] {\handlePMLunit\Sec}
+\remapXMLsingular [Year] [C] {\handlePMLunit\Year}
+\remapXMLsingular [Month] [C] {\handlePMLunit\Month}
+\remapXMLsingular [Week] [C] {\handlePMLunit\Week}
+\remapXMLsingular [Day] [C] {\handlePMLunit\Day}
+\remapXMLsingular [Hour] [C] {\handlePMLunit\Hour}
+\remapXMLsingular [Min] [C] {\handlePMLunit\Min}
+\remapXMLsingular [Second] [C] {\handlePMLunit\Sec}
+\remapXMLsingular [Rad] [C] {\handlePMLunit\Rad}
+\remapXMLsingular [Deg] [C] {\handlePMLunit\Deg}
+\remapXMLsingular [Hertz] [C] {\handlePMLunit\Hertz}
+\remapXMLsingular [RevPerSec] [C] {\handlePMLunit\RevPerSec}
+\remapXMLsingular [RevPerMin] [C] {\handlePMLunit\RevPerMin}
+\remapXMLsingular [Gram] [C] {\handlePMLunit\Gram}
+\remapXMLsingular [Atom] [C] {\handlePMLunit\Atom}
+\remapXMLsingular [Newton] [C] {\handlePMLunit\Newton}
+\remapXMLsingular [Pascal] [C] {\handlePMLunit\Pascal}
+\remapXMLsingular [Joule] [C] {\handlePMLunit\Joule}
+\remapXMLsingular [Watt] [C] {\handlePMLunit\Watt}
+\remapXMLsingular [Celsius] [C] {\handlePMLunit\Celsius}
+\remapXMLsingular [Kelvin] [C] {\handlePMLunit\Kelvin}
+\remapXMLsingular [Fahrenheit] [C] {\handlePMLunit\Fahrenheit}
+\remapXMLsingular [Mol] [C] {\handlePMLunit\Mol}
+\remapXMLsingular [Molair] [C] {\handlePMLunit\Molair}
+\remapXMLsingular [Equivalent] [C] {\handlePMLunit\Equivalent}
+\remapXMLsingular [Farad] [C] {\handlePMLunit\Farad}
+\remapXMLsingular [Ohm] [C] {\handlePMLunit\Ohm}
+\remapXMLsingular [Siemens] [C] {\handlePMLunit\Siemens}
+\remapXMLsingular [Ampere] [C] {\handlePMLunit\Ampere}
+\remapXMLsingular [Coulomb] [C] {\handlePMLunit\Coulomb}
+\remapXMLsingular [Volt] [C] {\handlePMLunit\Volt}
+\remapXMLsingular [eVolt] [C] {\handlePMLunit\eVolt}
+\remapXMLsingular [Tesla] [C] {\handlePMLunit\Tesla}
+\remapXMLsingular [VoltAC] [C] {\handlePMLunit\VoltAC}
+\remapXMLsingular [VoltDC] [C] {\handlePMLunit\VoltDC}
+\remapXMLsingular [Baud] [C] {\handlePMLunit\Baud}
+\remapXMLsingular [Bit] [C] {\handlePMLunit\Bit}
+\remapXMLsingular [Byte] [C] {\handlePMLunit\Byte}
+\remapXMLsingular [Bequerel] [C] {\handlePMLunit\Bequerel}
+\remapXMLsingular [Sievert] [C] {\handlePMLunit\Sievert}
+\remapXMLsingular [Candela] [C] {\handlePMLunit\Candela}
+\remapXMLsingular [Bell] [C] {\handlePMLunit\Bell}
+\remapXMLsingular [At] [C] {\handlePMLunit\At}
+\remapXMLsingular [Atm] [C] {\handlePMLunit\Atm}
+\remapXMLsingular [Bar] [C] {\handlePMLunit\Bar}
+\remapXMLsingular [EVolt] [C] {\handlePMLunit\EVolt}
+\remapXMLsingular [Foot] [C] {\handlePMLunit\Foot}
+\remapXMLsingular [Inch] [C] {\handlePMLunit\Inch}
+\remapXMLsingular [Cal] [C] {\handlePMLunit\Cal}
+\remapXMLsingular [Force] [C] {\handlePMLunit\Force}
+\remapXMLsingular [Lux] [C] {\handlePMLunit\Lux}
+\remapXMLsingular [Gray] [C] {\handlePMLunit\Gray}
+\remapXMLsingular [Weber] [C] {\handlePMLunit\Weber}
+\remapXMLsingular [Henry] [C] {\handlePMLunit\Henry}
+\remapXMLsingular [Sterant] [C] {\handlePMLunit\Sterant}
+\remapXMLsingular [Angstrom] [C] {\handlePMLunit\Angstrom}
+\remapXMLsingular [Gauss] [C] {\handlePMLunit\Gauss}
+
+\remapXMLsingular [Percent] [C] {\handlePMLunit\Percent}
+\remapXMLsingular [Promille] [C] {\handlePMLunit\Promille}
+\remapXMLsingular [Permille] [C] {\handlePMLunit\Permille}
+
+\remapXMLsingular [Unit] [C] {\handlePMLunit\Unit}
+\remapXMLsingular [NoUnit] [C] {\handlePMLunit\NoUnit}
+
+\stopXMLmapping
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-pre.tex b/Master/texmf-dist/tex/context/base/xtag-pre.tex
new file mode 100644
index 00000000000..e589e39bed8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-pre.tex
@@ -0,0 +1,414 @@
+%D \module
+%D [ file=xtag-pre,
+%D version=2000.12.20,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Predefined Things,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\beginTEX
+ \endinput
+\endTEX
+
+\writestatus{loading}{Context XML Macros (predefined)}
+
+%D Here we predefine some escapes, processing instructions,
+%D entities and other handy things.
+
+\unprotect
+
+%D Let's get rid of ligatures:
+
+% \definefonthandling [default] [noligs]
+
+%D First we define the default error handler. When tracing is
+%D activated, the unknown element is showed verbatim.
+
+\defineXMLenvironment [\s!default] \defaultXMLelement \defaultXMLelement
+\defineXMLsingular [\s!default] \defaultXMLelement
+
+% \def\defaultXMLelement
+% {\iftraceXMLelements[\currentXMLfullidentifier]\fi}
+
+\def\defaultXMLelement
+ {\iftraceXMLelements{\infofont<\currentXMLfullidentifier>}\fi}
+
+%D We can use the default handler to implement automatic
+%D element hiding. Beware: this overloads the tracer.
+
+\def\startXMLignore{\dododefineXMLignore \s!default}
+\def\stopXMLignore {\dododefineXMLprocess\s!default}
+
+%D The following entities need to be defined anyway. They
+%D may be overloaded later.
+
+% rest also \letter
+
+\defineXMLentities [amp] {\letterampersand} {\&}
+\defineXMLentities [gt] {\string>} {\mathematics{>}}
+\defineXMLentities [lt] {\string<} {\mathematics{<}}
+\defineXMLentities [quot] {\string"} {\mathematics{"}}
+\defineXMLentities [apos] {\string`} {\mathematics{'}}
+
+%D Of course we define:
+
+\defineXMLentities [tex] {tex} {\TeX}
+\defineXMLentities [context] {context} {\ConTeXt}
+\defineXMLentities [xml] {xml} {XML}
+\defineXMLentities [xsd] {xsd} {XSD}
+\defineXMLentities [html] {html} {HTML}
+
+%D The following entities are used for internal purposes and
+%D concern characters that are kind of problematic in \TEX\
+%D input.
+
+\defineXMLentities [tex-hash] {\letterhash} {\#}
+\defineXMLentities [tex-dollar] {\letterdollar} {\$}
+\defineXMLentities [tex-percent] {\letterpercent} {\%}
+\defineXMLentities [tex-backslash] {\letterbackslash} {\texescape}
+\defineXMLentities [tex-hat] {\letterhar} {\^{}}
+\defineXMLentities [tex-underscore] {\letterunderscore} {\_}
+\defineXMLentities [tex-leftbrace] {\letterleftbrace} {\leftargument}
+\defineXMLentities [tex-rightbrace] {\letterrightbrace} {\rightargument}
+\defineXMLentities [tex-bar] {\letterbar} {\vl}
+\defineXMLentities [tex-tilde] {\lettertilde} {\~{}}
+
+%D Some pretty printing macros will use color, for which we
+%D define a dedicated palet here.
+
+\definepalet
+ [xtag]
+ [0=darkgray, 1=darkred, 2=darkgreen,
+ 3=darkblue, 4=darkcyan, 5=darkmagenta,
+ 6=darkyellow, 7=black, 8=black]
+
+%D An example of its usage can be found in the pretty
+%D printing macros in the run time module.
+
+\newif\ifautoXMLshow \autoXMLshowtrue
+\newif\ifshowXMLarguments \showXMLargumentstrue
+
+\def\setupXMLfile{\dodoubleargument\getparameters[\??xf]}
+
+\setupXMLfile
+ [\c!inbetween=\blank,
+ \c!level=1]
+
+\fetchruntimecommand\showXMLfile {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLbuffer{\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLtext {\f!xtagprefix\s!run}
+
+\fetchruntimecommand\showXMLign {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLnop {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLtxt {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLpar {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLlin {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLwrd {\f!xtagprefix\s!run}
+\fetchruntimecommand\showXMLemp {\f!xtagprefix\s!run}
+
+\fetchruntimecommand\showXMLbreak {\f!xtagprefix\s!run}
+
+%D By default, we will ignore escape commands, preceded by
+%D \type {<!} and ending in (presumably) a \type {>}.
+
+\defineXMLescape [\s!default] {\gobbleuntil{>}}
+
+%D The comment escape has the form:
+%D
+%D \starttyping
+%D <!-- a couple of remarks -->
+%D \stoptyping
+
+\defineXMLescape [--] {\gobbleuntil{-->}}
+
+%D The \type {CDATA} escape is kind of unique in its
+%D strange syntax.
+%D
+%D \starttyping
+%D <!CDATA[it starts here
+%D whatever you like to be shown verbatim
+%D and ends here]]>
+%D \stoptyping
+%D
+%D Watch this rather obscure definition (we need to pass an
+%D \type {[} to the macro.
+
+\chardef\XMLcdatamethod=1
+
+\newtoks \everyXMLcdata % \appendtoks \tt \to \everyXMLcdata
+
+\setvalue{XMLcdatamethod1}%
+ {\skipfirstverbatimlinefalse
+ \processtaggeddisplayverbatim{]]>}}
+
+\setvalue{XMLcdatamethod2}%
+ {\begingroup
+ \obeylines
+ \obeyspaces
+ \the\everyXMLcdata
+ \processXMLcdata}
+
+\long\def\processXMLcdata#1]]>%
+ {#1\endgroup}
+
+\defineXMLescape [CDATA]
+ {\executeifdefined{XMLcdatamethod\number\XMLcdatamethod}{\begingroup\processXMLcdata}}
+
+%D \starttyping
+%D <!ELEMENT ...">
+%D <!ATTLIST ...">
+%D \stoptyping
+
+\defineXMLescape [ATTLIST]{\gobbleuntil>}
+\defineXMLescape [ELEMENT]{\gobbleuntil>}
+
+%D \starttyping
+%D <!ENTITY crap "very new [&#x7B;] crap">
+%D <!ENTITY crap SYSTEM "crapfile.xml">
+%D <!ENTITY crap SYSTEM "crapfile.pdf" NDATA ignoredanyway>
+%D \stoptyping
+
+\defineXMLescape [ENTITY] \handleXMLentityescape
+
+\def\handleXMLentityescape#1>%
+ {\dohandleXMLentityescape#1 @ @ @ @ @ @>}
+
+\def\dohandleXMLentityescape#1 #2 #3 #4>
+ {\doifnot{#1}\letterpercent
+ {\doifelse{#2}{SYSTEM}
+ {\dohandleXMLentitySYSTEM#1 #2 #3 #4>}
+ {\dohandleXMLentityDEFINE#1 #2 #3 #4>}}}
+
+\def\dohandleXMLentitySYSTEM#1 #2 #3 #4 #5 #6>% name SYSTEM ....
+ {\doifelse{#4}{@}
+ {\expanded{\defineXMLentity[#1]{\noexpand\readXMLsystem{\unstringed#3}}}}
+ {\doif{#4}{NDATA} % maybe we should also store the NDATA
+ {\expanded{\defineXMLentity[#1]{\noexpand\readXMLndata{\unstringed#3}}}}}}
+
+\def\readXMLsystem#1%
+ {\readfile{#1}
+ {\writestatus{xml-system}{reading #1}}
+ {\writestatus{xml-system}{unable to locate #1}}}
+
+\def\readXMLndata#1%
+ {#1} % {\externalfigure[#1]}
+
+\def\dohandleXMLentityDEFINE#1 %#2 #3 #4 #5 #6>% name replacement
+ {\def\docommando##1>{\expanded{\defineXMLentity[#1]{\the\scratchtoks}}}%
+ \afterassignment\docommando\grabstring}
+
+%D Such entities can be encapsulated in a \type {DOCTYPE}
+%D element. Therefore we remove the outer level of document
+%D type definitions.
+%D
+%D \starttyping
+%D <!DOCTYPE Something>
+%D <!DOCTYPE Something >
+%D <!DOCTYPE Something [ ... ]>
+%D <!DOCTYPE Something SYSTEM "... ...">
+%D <!DOCTYPE Something SYSTEM "... ..." >
+%D <!DOCTYPE Something SYSTEM "... ..." [ ... ]>
+%D <!DOCTYPE Something PUBLIC "... ..." "...">
+%D <!DOCTYPE Something PUBLIC "... ..." "..." >
+%D <!DOCTYPE Something PUBLIC "... ..." "..." [ ... ]>
+%D \stoptyping
+
+\defineXMLescape [DOCTYPE] \handleXMLdoctype
+
+\def\handleXMLdoctype
+ {\let\XMLdoctype\empty
+ \dohandleXMLdoctype}
+
+\def\dohandleXMLdoctype
+ {\futurelet\nexttoken\dohandleXMLdoctok}
+
+\def\dohandleXMLdoctok
+ {\ifx\nexttoken>%
+ % [doctype: \XMLdoctype]
+ \@EA\gobbleuntil\@EA>%
+ \else\ifx\nexttoken\blankspace
+ % [doctype: \XMLdoctype]
+ \@EAEAEA\dodohandleXMLdoctype
+ \else
+ \@EAEAEA\redoXMLdoctype
+ \fi\fi}
+
+\def\redoXMLdoctype#1%
+ {\edef\XMLdoctype{\XMLdoctype#1}\dohandleXMLdoctype}
+
+\def\dodohandleXMLdoctype#1%
+ {\executeifdefined{XMLdoctype#1}{\gobbleuntil>}}
+
+\setvalue{XMLdoctype>}{}
+\setvalue{XMLdoctype[}{\processuntil{]>}} % or \gobbleuntil{]>}}
+
+\def\XMLdoctypeS YSTEM %
+ {\dowithgrabbedstring\dodohandleXMLdoctype}
+
+\def\XMLdoctypeP UBLIC %
+ {\dowithgrabbedstring{\dowithgrabbedstring\dodohandleXMLdoctype}}
+
+% wrong
+%
+% \def\XMLdoctypeS YSTEM {\XMLgrabstring}
+% \def\XMLdoctypeP UBLIC {\XMLgrabstring}
+%
+% \def\XMLgrabstring
+% {\doifnextcharelse>{\gobbleuntil>}{\dowithgrabbedstring\XMLgrabstring}}
+
+%D Some day we may need to support entities within a
+%D document type namespace.
+
+%D As an example of processing instructions, we implement a
+%D \CONTEXT\ code handler:
+
+\defineXMLprocessor [context] \contextXMLcommand
+\defineXMLprocessor [context-command] \contextXMLcommand
+
+% we need to get rid of the endlinechar inserted by \scantokens
+%
+% \def\saveendlinechar%
+% {\ifx\restoreendlinechar\undefined
+% \edef\restoreendlinechar{\endlinechar\the\endlinechar\space}%
+% \fi
+% \endlinechar=-1 }
+%
+% \def\scanXMLtokens#1%
+% {\saveendlinechar\scantokens{#1}\restoreendlinechar}
+
+%D For security reasons, we provide a switch to turn this
+%D mechanism on and off. When turned off, there is no way to
+%D turn it on from within an \XML\ encoded document, simply
+%D because the possibility to process \CONTEXT\ commands is
+%D gone.
+
+\setupXMLprocessing[\c!command=\v!yes]
+
+%\def\contextXMLcommand#1%
+% {\doif\@@xpcommando\v!ja
+% {\pushmacro\disableXML
+% \def\disableXML{\global\let\afterXMLprocessor\empty}%
+% \global\let\afterXMLprocessor\enableXML
+% \setnormalcatcodes\scantokens{#1}\afterXMLprocessor
+% \popmacro\disableXML}}
+
+\def\contextXMLcommand#1% we don't use #1 here
+ {\doif\@@xpcommand\v!yes
+ {\disableXML\scantokens\@EA{\currentXMLprocess}\enableXML}}
+
+%D The indirect method (using the macro \type
+%D {\currentXMLprocess} instead of \type {#}) is needed
+%D because of the \type {\scantokens}. Given the previous
+%D definition, and given that \ETEX\ is used, we can now
+%D say:
+%D
+%D \starttyping
+%D <?context-command {\bf Start Of Some \TeX\ Text} ?>
+%D \stoptyping
+%D
+%D A non||\ETEX\ solution is also possible, using buffers,
+%D but for the moment we assume that \ETEX\ is used.
+
+%D Next we implement a general purpose directive. This one
+%D can be used to set variables that can be accessed with
+%D \type {\XMLvar}.
+
+\defineXMLprocessor [context-directive] \contextXMLdirective
+
+\def\contextXMLdirective#1%
+ {\docontextXMLdirective#1 @ @ @\end}
+
+\def\docontextXMLdirective#1 #2 #3 #4\end % class variable value
+ {\expandafter\def\csname\@@XMLvariable:#1:#2\endcsname{#3}}
+
+%D A simple processing instruction is the following. It just
+%D writes a message to the screen.
+
+\defineXMLprocessor [context-message] {\writestatus{xml-message}}
+
+%D The following processing instruction permits you to tag
+%D parts of the file in such a way that you can filter data.
+%D We use this method when documenting schemas.
+
+\defineXMLprocessor [context-block] \handleXMLcontextblock
+
+\def\handleXMLcontextblock#1%
+ {\dohandleXMLcontextblock#1 \relax}
+
+\def\dohandleXMLcontextblock#1 #2 #3\relax
+ {\dodohandleXMLcontextblock{#1}{#2}}
+
+\let\dodohandleXMLcontextblock\gobbletwoarguments
+
+\def\hideXMLcontextblock[#1]%
+ {\def\dodohandleXMLcontextblock
+ {\dododohandleXMLcontextblock\doifinset{#1}}}
+
+\def\videXMLcontextblock[#1]%
+ {\def\dodohandleXMLcontextblock
+ {\dododohandleXMLcontextblock\doifnotinset{#1}}}
+
+\protect
+
+\def\dododohandleXMLcontextblock#1#2#3#4%
+ {\let\next\relax
+ \doifelse{#3}{begin}
+ {#1{#4}{#2}
+ {%\writestatus{xml-block}{skipping begin #4}%
+ \long\def\next##1?context-block end #4 ##2?>{}}}
+ {\doif{#3}{name}
+ {#1{#4}{#2}
+ {%\writestatus{xml-block}{skipping name #4}%
+ \long\def\next##1?context-block ##2?>{}}}}%
+ \next}
+
+\unprotect
+
+%D Say that a file contains blocks like the following:
+%D
+%D \starttyping
+%D <?context-block begin whatevername ?>
+%D
+%D <to/> <be> <or/> maybe <not/> so much <to/> </be>
+%D
+%D <?context-block end whatevername ?>
+%D \stoptyping
+%D
+%D The following commands will show only this block:
+%D
+%D \starttyping
+%D \videXMLcontextblock[whatevername] \showXMLfile{yourfile}
+%D \stoptyping
+%D
+%D You can also mark blocks in the following way, thereby
+%D saving yourself some work:
+%D
+%D \starttyping
+%D <?context-block what ?>
+%D
+%D <what>What do you want?</what>
+%D
+%D <?context-block how ?>
+%D
+%D <how>How do you want?</how>
+%D
+%D <?context-block done ?>
+%D \stoptyping
+
+% yet undocumented and experimental
+
+% \defineXMLprocessor [context-eof] {\endinput}
+
+% already defined in xtag-ini
+
+% \defineXMLsingular [begingroup] {\begingroup}
+% \defineXMLsingular [endgroup] {\endgroup}
+%
+% \defineXMLsingular [gobblespacetokens] {\gobblespacetokens}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-prs.tex b/Master/texmf-dist/tex/context/base/xtag-prs.tex
new file mode 100644
index 00000000000..b3eb681fc82
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-prs.tex
@@ -0,0 +1,42 @@
+%D \module
+%D [ file=xtag-prs,
+%D version=2004.08.18,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Parsing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\def\analyzefunction#1%
+ {\expanded{\doanalyzefunction#1\relax\relax(#1)}\empty\relax\end}
+
+\def\doanalyzefunction#1#2(#3)#4\relax#5\end
+ {\ifx#4\empty
+ \let\functionname\empty
+ \else
+ \def\functionname{#1#2}%
+ \fi
+ \getfunctionargs#3,\empty,\empty,\empty,\empty,\empty,\empty,\empty,\empty\relax}
+
+\def\getfunctionargs#1,#2,#3,#4,#5,#6,#7,#8,#9\relax
+ {\edef\functionA{#1}\edef\functionB{#2}%
+ \edef\functionC{#3}\edef\functionD{#4}%
+ \edef\functionE{#5}\edef\functionF{#6}%
+ \edef\functionG{#7}\edef\functionH{#8}}
+
+% \analyzefunction{x} [\functionname][a:\functionA/b:\functionB/c:\functionC/d:\functionD] \endgraf
+% \analyzefunction{sin(x)} [\functionname][a:\functionA/b:\functionB/c:\functionC/d:\functionD] \endgraf
+% \analyzefunction{1pt,2pt,3pt,4pt} [\functionname][a:\functionA/b:\functionB/c:\functionC/d:\functionD] \endgraf
+% \analyzefunction{rect(1pt,2pt,3pt,4pt)} [\functionname][a:\functionA/b:\functionB/c:\functionC/d:\functionD] \endgraf
+% \analyzefunction{1pt,2pt,3pt,4pt,5pt,6pt,7pt,8pt} [\functionname][e:\functionE/f:\functionF/g:\functionG/h:\functionH] \endgraf
+% \analyzefunction{rect(1pt,2pt,3pt,4pt,5pt,6pt,7pt,8pt)} [\functionname][e:\functionE/f:\functionF/g:\functionG/h:\functionH] \endgraf
+
+% todo [#1][settings][maxwidth,maxheight,method=] with method=x y xy [1]
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-raw.tex b/Master/texmf-dist/tex/context/base/xtag-raw.tex
new file mode 100644
index 00000000000..8c190d943ed
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-raw.tex
@@ -0,0 +1,37 @@
+%D \module
+%D [ file=xtag-raw,
+%D version=2002.03.21,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=reducing specials,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (raw specials)}
+
+%D Some day this module will be obsolete.
+
+\defineXMLentity [tex-hash] {\letterhash}
+\defineXMLentity [tex-dollar] {\letterdollar}
+\defineXMLentity [tex-percent] {\letterpercent}
+\defineXMLentity [tex-backslash] {\letterbackslash}
+\defineXMLentity [tex-hat] {\letterhat}
+\defineXMLentity [tex-underscore] {\letterunderscore}
+\defineXMLentity [tex-leftbrace] {\letterbgroup}
+\defineXMLentity [tex-rightbrace] {\letteregroup}
+\defineXMLentity [tex-bar] {\letterbar}
+\defineXMLentity [tex-tilde] {\lettertilde}
+
+\endinput
+
+\defineXMLsingular[test][oeps=,whow=,hm=]
+% {\tttf \input \XMLop{oeps} [\XMLop{whow}] [\XMLop{hm}]}
+ {\tttf \XMLop{oeps} [\XMLop{whow}] [\XMLop{hm}]}
+
+\startXMLdata
+<test oeps="oeps_tst.tmp" whow="#FFEEGG" hm="^{}~"/>
+\stopXMLdata
diff --git a/Master/texmf-dist/tex/context/base/xtag-rng.tex b/Master/texmf-dist/tex/context/base/xtag-rng.tex
new file mode 100644
index 00000000000..524bba2d1ef
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-rng.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=xtag-rng,
+%D version=2002.10.29,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Relax NG,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D The following commands picks up a named block from the
+%D given file and pretty prints it.
+%D
+%D \starttyping
+%D \showRNGcomponent [eximple.rng] [request]
+%D \stoptyping
+%D
+%D If needed, you adapt the colors used by redefining the
+%D \type {xtag} color palet.
+
+\fetchruntimecommand\showRNGcomponent {\f!xtagprefix\s!run}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-run.tex b/Master/texmf-dist/tex/context/base/xtag-run.tex
new file mode 100644
index 00000000000..6d1d3078d17
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-run.tex
@@ -0,0 +1,317 @@
+%D \module
+%D [ file=xtag-run,
+%D version=2001.01.10,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Visualization,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (visualization)}
+
+\unprotect
+
+\bgroup
+
+\catcode`\.=\@@escape
+.catcode`.B=.@@begingroup
+.catcode`.E=.@@endgroup
+.catcode`.#=.@@active
+.catcode`.$=.@@active
+.catcode`.%=.@@active
+.catcode`.\=.@@active
+.catcode`.^=.@@active
+.catcode`._=.@@active
+.catcode`.{=.@@active
+.catcode`.}=.@@active
+.catcode`.|=.@@active
+.catcode`.~=.@@active
+
+.gdef.verbatimXML
+ B.catcode`.#=.@@active .let#.letterhash
+ .catcode`.$=.@@active .let$.dollar
+ .catcode`.%=.@@active .let%.percent
+ .catcode`.\=.@@active .let\.letterbackslash
+ .catcode`.^=.@@active .let^.letterhat
+ .catcode`._=.@@active .let_.letterunderscore
+ .catcode`.{=.@@active .let{.leftargument
+ .catcode`.}=.@@active .let}.rightargument
+ .catcode`.|=.@@active .let|.letterbar
+ .catcode`.~=.@@active .let~.lettertilde
+ E
+
+.egroup
+
+\gdef\@@XMLshow{\@@XML shw}
+
+\gdef\@XMLindent#1%
+ {\ifnum\XMLlevel>\plusone\advance\leftskip#11em\relax\fi}
+
+\gdef\@XMLlevel#1%
+ {\advance\XMLlevel#11\relax}
+
+\unexpanded\gdef\@XMLentity#1%
+ {\noindent\hbox{\localcolortrue\color[xtag:0]{\string&#1;}}}
+
+\bgroup
+
+\@EA\catcode\string`=\@@active
+\@EA\catcode\string`"\@@active
+\@EA\catcode\string``\@@active
+\@EA\catcode\string`&\@@active
+
+\gdef\doshowXMLargument#1#2#3#4%
+ {\hskip\zeropoint % or maybe \allowbreak
+ \string#1\color[xtag:#3]{#4}\string#2}%
+
+\gdef\showXMLarguments
+ {\hskip\zeropoint % or maybe \allowbreak
+ \ifshowXMLarguments
+ \bgroup
+ \@EA\catcode\string`=\@@active
+ \@EA\catcode\string`"\@@active
+ \@EA\catcode\string``\@@active
+ \@EA\catcode\string`&\@@active
+ \def={\color[xtag:7]{\string=}}%
+ \def"##1"{\doshowXMLargument""8{##1}}%
+ \def`##1`{\doshowXMLargument``8{##1}}%
+ \def&##1;{\doshowXMLargument&;7{##1}}%
+ \scantokens\@EA{\currentXMLarguments}%
+ \egroup
+ \else
+ \currentXMLarguments
+ \fi}
+
+\egroup
+
+\ifx\XMLprettycycle\undefined \gdef\XMLprettycycle{3} \fi
+
+\doglobal\newcounter\@XMLnofelements
+\doglobal\newif\ifXMLunspacepretty
+
+\gdef\@XMLelement#1%
+ {\ifnum\XMLlevel<\@@xflevel\relax
+ \ifnum\kindofXMLelement=2\else
+ \doglobal\increment\@XMLnofelements\relax
+ \ifcase\@XMLnofelements\else\@@xfinbetween\fi
+ \fi
+ \fi
+ % no, too fragile:
+% \ifnum\XMLlevel>1\hangindent2em\fi
+ \ifcase\kindofXMLelement\or\or
+ \getvalue{\@@XMLshow::\currentXMLelement}\relax
+ \fi
+ \dontleavehmode % \indent
+ \bgroup
+ % \localcolortrue
+ \advance\XMLlevel \minusone
+ \DoMod\XMLlevel by\XMLprettycycle to\scratchcounter
+ \advance\scratchcounter \plusone
+ \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]%
+ \ifXMLunspacepretty\unskip\fi
+ \string<%
+ \ifnum\kindofXMLelement=2\string/\fi
+ \currentXMLelement
+ \stopcolor
+ \ifcase#1\or
+ \cleanupXMLarguments % get rid of spurious end space and end /
+ \ifx\currentXMLarguments\empty\else
+ \setbox\scratchbox\hbox{\space}\hskip\wd\scratchbox % hm, slow
+ \startcolor[xtag:0]\showXMLarguments\unskip\stopcolor\unskip
+ \fi
+ \fi
+ \startcolor[xtag:\ifnum\scratchcounter<0 0\else\number\scratchcounter\fi]%
+ \ifnum\kindofXMLelement=3\string/\fi
+ \string>%
+ \stopcolor
+ \egroup
+ \ifcase\kindofXMLelement\or
+ \getvalue{\@@XMLshow::\currentXMLelement}\relax
+ \fi
+ \ifnum\XMLlevel<\@@xflevel\relax
+ \ifnum\kindofXMLelement=1\else
+ \doglobal\increment\@XMLnofelements\relax
+ \ifcase\@XMLnofelements\else\@@xfinbetween\fi
+ \fi
+ \fi
+ \ifXMLunspacepretty\ignorespaces\fi}
+
+\gdef\nextXMLtext{\blank\@XMLlevel+\@XMLelement1\par}
+\gdef\prevXMLtext{\par\@XMLelement0\par\@XMLlevel-\blank}
+\gdef\nextXMLpara{\nextXMLline\par}
+\gdef\prevXMLpara{\par\prevXMLline}
+\gdef\nextXMLline{\par\@XMLlevel+\@XMLindent+\@XMLelement1}
+\gdef\prevXMLline{\@XMLelement0\par\@XMLindent-\@XMLlevel-}
+\gdef\nextXMLword{\@XMLlevel+\@XMLelement1}
+\gdef\prevXMLword{\@XMLelement0\@XMLlevel-}
+
+\gdef\someXMLtext{\blank\@XMLlevel+\@XMLelement1\@XMLlevel-\blank}
+\gdef\someXMLpara{\someXMLline}
+\gdef\someXMLline{\par\@XMLlevel+\@XMLindent+\@XMLelement1\par\@XMLindent-\@XMLlevel-}
+\gdef\someXMLword{\@XMLlevel+\@XMLelement1\@XMLlevel-}
+
+\gdef\@XMLindent#1%
+ {\ifnum\XMLlevel>\zerocount
+ \advance\leftskip#11em\relax
+ \fi}
+
+\gdef\nextXMLtext{\blank\@XMLlevel+\@XMLelement1\par\@XMLindent+}
+\gdef\prevXMLtext{\par\@XMLindent-\@XMLelement0\par\@XMLlevel-\blank}
+\gdef\nextXMLpara{\nextXMLline\par\@XMLindent+}
+\gdef\prevXMLpara{\par\@XMLindent-\prevXMLline}
+\gdef\nextXMLline{\par\@XMLlevel+\@XMLelement1}
+\gdef\prevXMLline{\@XMLelement0\par\@XMLlevel-}
+
+\gdef\someXMLline{\par\@XMLlevel+\@XMLelement1\par\@XMLlevel-}
+
+\gdef\setXMLshow#1#2#3[#4]%
+ {\def\docommando##1{#1[##1]#2#3\letvalue{\@@XMLshow:##1}\empty}%
+ \processcommalist[#4]\docommando}
+
+\gdef\showXMLinh[#1]%
+ {\setXMLshow\defineXMLignore \relax\relax[#1]%
+ \setXMLshow\defineXMLsingular \relax\relax[#1]}
+
+\gdef\showXMLnop[#1]%
+ {\setXMLshow\defineXMLenvironment\relax\relax[#1]%
+ \setXMLshow\defineXMLsingular \relax\relax[#1]}
+
+\gdef\showXMLtxt[#1]%
+ {\setXMLshow\defineXMLenvironment\nextXMLtext\prevXMLtext[#1]%
+ \setXMLshow\defineXMLsingular \someXMLtext\relax [#1]}
+
+\gdef\showXMLpar[#1]%
+ {\setXMLshow\defineXMLenvironment\nextXMLpara\prevXMLpara[#1]%
+ \setXMLshow\defineXMLsingular \someXMLline\relax [#1]}
+
+\gdef\showXMLlin[#1]%
+ {\setXMLshow\defineXMLenvironment\nextXMLline\prevXMLline[#1]%
+ \setXMLshow\defineXMLsingular \someXMLword\relax [#1]}
+
+\gdef\showXMLwrd[#1]%
+ {\setXMLshow\defineXMLenvironment\nextXMLword\prevXMLword[#1]%
+ \setXMLshow\defineXMLsingular \someXMLword\relax [#1]}
+
+\gdef\showXMLemp[#1]%
+ {\setXMLshow\defineXMLsingular\someXMLword\relax[#1]}
+
+\gdef\showXMLbreak[#1]%
+ {\def\docommando##1{\setvalue{\@@XMLshow::##1}{\hskip\zeropoint}}%
+ \processcommalist[#1]\docommando}
+
+\gdef\doautoshowXMLelement
+ {\ifcase\kindofXMLelement
+ \or \nextXMLpara \or \prevXMLpara \or \someXMLline
+ \fi}
+
+\gdef\autoshowXMLelement
+ {\ifcsname\@@XMLshow:\currentXMLelement\endcsname
+ \expandafter\normalexecuteXMLelement
+ \else
+ \expandafter\doautoshowXMLelement
+ \fi}
+
+\global\let\normalexecuteXMLelement\executeXMLelement
+
+\gdef\showXMLfile#1%
+ {\bgroup
+ % temp hack, will be the normal definition
+ \long\def\docleanupXMLarguments##1/ ##2\relax{\def\currentXMLarguments{##1}}%
+ % so far for hack
+ \nohyphens
+ \dontcomplain
+ \XMLlevel\zerocount
+ \increment\@@xflevel % hack
+ \tttf
+ \startpacked[\v!blank]
+ \ifautoXMLshow \let\executeXMLelement\autoshowXMLelement \fi
+ \let\executeXMLentity\@XMLentity
+ \enableXML\verbatimXML
+ \enableregime[utf]%
+ \chardef\utfunicodetracer8
+ \veryraggedright
+ \readfile{\truefilename{#1}}\donothing\donothing\endgraf
+ \removelastskip % really needed
+ \stoppacked
+ \egroup}
+
+\gdef\showXMLtext#1%
+ {\bgroup
+ % temp hack, will be the normal definition
+ \long\def\docleanupXMLarguments##1/ ##2\relax{\def\currentXMLarguments{##1}}%
+ % so far for hack
+ \dontcomplain
+ \XMLlevel\maxcard
+ \increment\@@xflevel % hack
+ \tttf
+ \ifautoXMLshow \let\executeXMLelement\autoshowXMLelement \fi
+ \let\executeXMLentity\@XMLentity
+ \let\par\allowbreak\let\endgraf\par
+ \setbox\scratchbox\hbox
+ {\enableXML\verbatimXML\scantokens{#1}\removelastskip}%
+ \unhbox\scratchbox
+ \egroup}
+
+\gdef\showXMLbuffer
+ {\dosingleempty\doshowXMLbuffer}
+
+\gdef\doshowXMLbuffer[#1]%
+ {\doifelsenothing{#1}
+ {\doshowXMLbuffer[\jobname]}
+ {\bgroup
+ \def\dodoprocessXMLbuffer##1{\showXMLfile{\TEXbufferfile{##1}}}%
+ \processcommalist[#1]\dodoprocessXMLbuffer
+ \egroup}}
+
+%D
+
+\gdef\showXSDcomponent
+ {\dodoubleargument\doshowXSDcomponent}
+
+\gdef\doshowXSDcomponent[#1][#2]%
+ {\bgroup
+ \showXMLnop[xsd:schema]
+ \showXMLign[xsd:appInfo]
+ \showXMLign[xsd:annotation]
+ \videXMLcontextblock[#2]
+ \showXMLfile{#1}
+ \egroup}
+
+\gdef\showRNGcomponent
+ {\dodoubleargument\doshowRNGcomponent}
+
+\gdef\doshowRNGcomponent[#1][#2]%
+ {\bgroup
+ \videXMLcontextblock[#2]
+ \showXMLfile{#1}
+ \egroup}
+
+%D
+
+\gdef\tracebackXMLattribute#1%
+ {\bgroup
+ \doloop
+ {\ifcsname\@@XMLdepth:\recurselevel\endcsname
+ \edef\!!stringa{\csname\@@XMLdepth:\recurselevel\endcsname}%
+ \writestatus
+ {XML TRACE}
+ {[#1] [\recurselevel] [\!!stringa] [\XMLinh{#1}]}%
+ \else
+ \exitloop
+ \fi}%
+ \egroup}
+
+\gdef\showXMLinh#1%
+ {\doifsomething{#1}
+ {\bgroup\infofont[%
+ \dorecurse\XMLdepth
+% {\csname\@@XMLvariable:\csname\@@XMLdepth:\recurselevel\endcsname:#1\endcsname
+ {\csname\@@XMLvariable:\recurselevel:#1\endcsname
+ \ifnum\recurselevel<\XMLdepth->\fi}%
+ ]\egroup}}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-utf.tex b/Master/texmf-dist/tex/context/base/xtag-utf.tex
new file mode 100644
index 00000000000..b978c333968
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-utf.tex
@@ -0,0 +1,21 @@
+%D \module
+%D [ file=xtag-utf,
+%D version=2002.06.24,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=UTF-8 support,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{Context XML Macros (UTF-8)}
+
+%D This filter is kind of obsolete, since \UTF\ is not
+%D limited to \XML. So, here we only enable \UTF\ support.
+
+\chardef\XMLtokensreduction\plustwo \enableregime[utf]
+
+\endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-xsd.tex b/Master/texmf-dist/tex/context/base/xtag-xsd.tex
new file mode 100644
index 00000000000..96169afa2ee
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-xsd.tex
@@ -0,0 +1,28 @@
+%D \module
+%D [ file=xtag-xsd,
+%D version=2001.10.04,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=Schemas,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D The following commands picks up a named block from the
+%D given file and pretty prints it.
+%D
+%D \starttyping
+%D \showXSDcomponent [x-exa-tx.xsd] [sequence]
+%D \stoptyping
+%D
+%D If needed, you adapt the colors used by redefining the
+%D \type {xtag} color palet.
+
+\fetchruntimecommand\showXSDcomponent {\f!xtagprefix\s!run}
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/base/xtag-xsl.tex b/Master/texmf-dist/tex/context/base/xtag-xsl.tex
new file mode 100644
index 00000000000..4d844c8e151
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/xtag-xsl.tex
@@ -0,0 +1,224 @@
+%D \module
+%D [ file=xtag-xsl,
+%D version=2002.03.07,
+%D title=\CONTEXT\ XML Support,
+%D subtitle=XSLT processing,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% FOR THIS TO WORK YOU NEED A PROPER cp8bit VECTOR
+%
+% 8 bit support has been messed up in a couple of distributions
+%
+% 0x00 0x00
+% 0x01 0x01
+% 0x02 0x02
+% etc
+
+%D This module is rather experimental so users may expect
+%D changes in the interface.
+
+\unprotect
+
+\definesystemvariable {xl}
+
+\newif\iftraceXSLTprocessing % \traceXSLTprocessingtrue
+
+\def\XSLTscriptfile{\bufferprefix xlscript}
+
+% to be sped up:
+
+\def\presetXSLTcharacters
+ {\let\par\empty
+ \def\{{\rawcharacter{`\{}}% \string^^..
+ \def\}{\rawcharacter{`\}}}% \string^^..
+ \def\\{\rawcharacter{`\\}}}% \string^^..
+
+\def\obeyXSLTcharacters
+ {\setnaturalcatcodes
+ \catcode`\\=\@@escape}
+
+\long\def\startXSLTscript #1 #2 %
+ {\bgroup
+ \obeyXSLTcharacters
+ \doifelse{#2}{capsule}\dostartXSLTscript\nostartXSLTscript#1 #2 }
+
+\long\def\dostartXSLTscript#1 #2 #3 %
+ {\obeylines
+ \dodostartXSLTscript#1 #2 #3 }
+
+\long\def\dodostartXSLTscript#1 #2 #3 #4\stopXSLTscript
+ {\egroup
+ \long\setvalue{\??xl#1}{\doXSLTscript{#3}{#4}}}
+
+\long\def\nostartXSLTscript
+ {\obeylines
+ \nonostartXSLTscript}
+
+\long\def\nonostartXSLTscript#1 #2\stopXSLTscript
+ {\egroup
+ \long\setvalue{\??xl#1}{\doXSLTscript\empty{#2}}}
+
+\long\def\donormalXSLTscript#1#2%
+ {\includeXSLTscript{b-capsule-#1}%
+ #2%
+ \includeXSLTscript{e-capsule-#1}}
+
+\def\includeXSLTscript#1%
+ {\csname\ifcsname\??xl#1\endcsname\??xl#1\else\s!empty\fi\endcsname}
+
+\startXSLTscript b-capsule-1.0
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+\stopXSLTscript
+
+\startXSLTscript e-capsule-1.0
+</xsl:stylesheet>
+\stopXSLTscript
+
+\def\applyXSLTscript
+ {\dotripleempty\doapplyXSLTscript}
+
+\long\def\doapplyXSLTscript[#1][#2][#3]%
+ {\ifthirdargument
+ \bgroup
+ \let\doXSLTscript\donormalXSLTscript
+ \presetXSLTcharacters
+ \donefalse
+ \def\docommando##1{\dodoapplyXSLTscript{##1}{\ifdone#3\else#2\fi}{#3}\donetrue}%
+ \processcommalist[#1]\docommando
+ \egroup
+ \else
+ \applyXSLTscript[#1][#2][#2]%
+ \fi}
+
+% Since a \XML\ file is loaded into memory as a tree, we
+% can safely use the same input and output filename, thereby
+% avoiding temporary files.
+
+\def\dodoapplyXSLTscript#1#2#3%
+ {\bgroup
+ \doifundefined{\??xl#1}%
+ {\writestatus{XSLT}{unknown script #1}}
+ {\writestatus{XSLT}{convert #2 into #3 using #1}%
+ \edef\par{\rawcharacter{13}}%
+ \edef\!!stringc{\getvalue{\??xl#1}}%
+ \immediate\openout\scratchwrite=\XSLTscriptfile.xsl
+ \immediate\write\scratchwrite{\!!stringc}%
+ \immediate\closeout\scratchwrite
+ \iftraceXSLTprocessing\wait\fi
+ \executeXSLT{\XSLTscriptfile.xsl}{#2}{#3}%
+ \iftraceXSLTprocessing\wait\fi}%
+ \egroup}
+
+\def\executeXSLT#1#2#3% script input output
+ {\executesystemcommand{xsltproc -o #3 #1 #2}}
+
+\long\def\applyXSLTtobuffer
+ {\dodoubleempty\doapplyXSLTtobuffer}
+
+\long\def\doapplyXSLTtobuffer[#1][#2]%
+ {\expanded{\applyXSLTscript[#1][\TEXbufferfile{\ifsecondargument#2\else\jobname\fi}]}}
+
+\def\resetXSLTscripting#1%
+ {\setgvalue{\??xl\s!dummy}{\doXSLTscript{#1}{}}}
+
+\resetXSLTscripting{1.0}
+
+\def\startXSLTscripting
+ {\bgroup
+ \obeyXSLTcharacters
+ \obeylines
+ \dostartXSLTscripting}
+
+\long\def\dostartXSLTscripting#1\stopXSLTscripting
+ {\egroup
+ \let\doXSLTscript\doextendXSLTscript
+ \getvalue{\??xl\s!dummy}{#1}}
+
+\long\def\doextendXSLTscript#1#2#3%
+ {\setgvalue{\??xl\s!dummy}{\doXSLTscript{#1}{#2#3}}}
+
+\def\applyXSLTscripting
+ {\applyXSLTscript[\s!dummy]}
+
+\protect
+
+\doifnotmode{demo}{\endinput}
+
+% \def\Whow{Whow It Works}
+%
+% \startXSLTscript test capsule 1.0
+% <xsl:output method="text"/>
+%
+% <xsl:template match="/figurelibrary/figure">
+% \Whow \\ #<xsl:apply-templates/>
+% </xsl:template>
+%
+% <xsl:template match="/">
+% <xsl:apply-templates/>
+% </xsl:template>
+% \stopXSLTscript
+%
+% \applyXSLTscript [test] [figtest.xml] [crap.tmp] \typefile{crap.tmp}
+%
+% \startbuffer
+% <hello>world</hello>
+% \stopbuffer
+%
+% \applyXSLTtobuffer[test] \typebuffer
+%
+% \startXSLTscripting
+% <xsl:output method="text"/>
+% \stopXSLTscripting
+%
+% \startXSLTscripting
+% <xsl:template match="/figurelibrary/figure">
+% <xsl:apply-templates/>
+% </xsl:template>
+% \stopXSLTscripting
+%
+% \startXSLTscripting
+% <xsl:template match="/">
+% <xsl:apply-templates/>
+% </xsl:template>
+% \stopXSLTscripting
+%
+% \applyXSLTscripting [figtest.xml] [crap.tmp] \typefile{crap.tmp}
+
+\starttext
+
+\startXSLTscript another
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:cd="http://www.pragma-ade.com/commands"
+ version="1.0">
+
+<xsl:output method="text"/>
+
+<xsl:template match="/">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="cd:interface">
+ <xsl:apply-templates><xsl:sort order="descending" select="@name"/></xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="cd:command">
+ name: <xsl:value-of select="@name"/>\\par
+</xsl:template>
+
+</xsl:stylesheet>
+\stopXSLTscript
+
+\applyXSLTscript [another] [cont-en.xml] [whatever.tmp]
+
+\readfile{whatever.tmp}{}{}
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/bib/bibl-apa.tex b/Master/texmf-dist/tex/context/bib/bibl-apa.tex
new file mode 100644
index 00000000000..b1ecf373f70
--- /dev/null
+++ b/Master/texmf-dist/tex/context/bib/bibl-apa.tex
@@ -0,0 +1,379 @@
+%D \module
+%D [ file=bibl-apa,
+%D version=2004.7.16,
+%D title=APA bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,number,page,short,type,doi]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=authoryears,
+ \c!numbering=\v!no,
+ \c!autohang=\v!no]
+
+\setuppublicationlist
+ [\c!width=24pt,
+ \c!artauthor=\invertedshortauthor,
+ \c!editor=\invertedshortauthor,
+ \c!author=\invertedshortauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ and },
+ \c!finalnamesep={ and },
+ \c!firstnamesep={, },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={, },
+ \c!authoretallimit=5,
+ \c!editoretallimit=5,
+ \c!artauthoretallimit=5,
+ \c!authoretaldisplay=5,
+ \c!editoretaldisplay=5,
+ \c!artauthoretaldisplay=5,
+ \c!authoretaltext={ et al.},
+ \c!editoretaltext={ et al.},
+ \c!artauthoretaltext={ et al.},
+]
+
+\def\maybeyear#1{#1}
+
+\def\etalchar#1{#1}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\inserttype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \insertjournal{\bgroup \it}{\egroup}
+ {\insertcrossref{In }{}{}}%
+ \insertvolume
+ {, }
+ {\insertissue{(}{)}{}\insertpages{:}{.}{.}}
+ {\insertpages{, pages }{.}{.}}%
+ \insertnote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{ }{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{ }{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \insertpubyear{(}{). }{\unskip.}%
+ \inserttitle
+ {\bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, pages }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertorganization
+ {}%
+ {\insertcity{, }%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{. }}}%
+ {\insertedition{, }{ edition. }{}}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {In \inserteditors{}%
+ {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ \insertpublisher
+ {}%
+ {\insertedition{, }{ edition. }{. }}%
+ {\insertedition{, }{ edition. }{}}%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {In \inserteditors{}%
+ {, editor\ifnum\getvalue{editor@num}> 1 s\fi, }%
+ {}%
+ \bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages
+ {\unskip, pages~}
+ {\insertcity{, }{. }{. }}
+ {\unskip. }%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{}{. }{}}% was {, }{. }{}
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{. }{\unskip. }%
+ }%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, pages~}{\insertcity{, }{. }{. }}
+ {\unskip\insertcity{, }{. }{. }}%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{. }{. }}%
+ {\insertpubname{, }{. }{}}%
+ }%
+ {}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \inserttype{}{, }{Master's thesis, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup\it }{\egroup \insertseries{ (}{)}{}. }{}%
+ \inserttype{}{, }{PhD thesis, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \inserttype{}{\insertvolume{ }{, }{, }}{Technical Report, }%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \insertnote{ }{.}{}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{ }{}%
+ \insertpubyear{(}{). }{}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpublisher{}{. }{}%
+ \insertpages{}{p. }{}%
+ \inserttype{(}{)}{}%
+ \insertnote{ }{.}{}%
+}
+
+\protect \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/bib/bibl-aps.tex b/Master/texmf-dist/tex/context/bib/bibl-aps.tex
new file mode 100644
index 00000000000..c3a2c4a5639
--- /dev/null
+++ b/Master/texmf-dist/tex/context/bib/bibl-aps.tex
@@ -0,0 +1,431 @@
+%D \module
+%D [ file=bibl-aps,
+%D version=2004.7.16,
+%D title=APS bibliography style,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain. Use at your own risk
+
+\unprotect
+
+\setupcite
+ [author,year]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryear]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={ },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [authoryears]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={, },
+ \c!left={(},
+ \c!right={)}]
+
+\setupcite
+ [key,number,page,short,type,doi]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!no,
+ \c!inbetween={ },
+ \c!left={[},
+ \c!right={]}]
+
+\setupcite
+ [num]
+ [\c!pubsep={, },
+ \c!lastpubsep={ and },
+ \c!compress=\v!yes,
+ \c!inbetween={--},
+ \c!left={[},
+ \c!right={]}]
+
+\setuppublications[%
+ \c!sorttype=,
+ \c!criterium=,
+ \c!refcommand=num,
+ \c!numbercommand=\tester,
+ \c!numbering=\v!yes,
+ \c!autohang=\v!yes]
+
+\def\tester#1{\hfill[#1]~~}
+
+\setuppublicationlist
+ [\c!width=24pt,
+ \c!artauthor=\normalshortauthor,
+ \c!editor=\normalshortauthor,
+ \c!author=\normalshortauthor,
+ \c!namesep={, },
+ \c!lastnamesep={ and },
+ \c!finalnamesep={, and },
+ \c!firstnamesep={ },
+ \c!juniorsep={ },
+ \c!vonsep={ },
+ \c!surnamesep={},
+ \c!authoretallimit=4,
+ \c!editoretallimit=4,
+ \c!artauthoretallimit=4,
+ \c!authoretaldisplay=1,
+ \c!editoretaldisplay=1,
+ \c!artauthoretaldisplay=1,
+ \c!authoretaltext={ {\it et al.\/}},
+ \c!editoretaltext={ {\it et al.\/}},
+ \c!artauthoretaltext={ {\it et al.\/}}]
+
+\def\maybeyear#1{}
+
+\def\etalchar#1{#1}
+
+\def\insertNote#1#2#3{%
+ \begingroup
+ \sfcode`\.=1020
+ \insertnote{#1}{\ifnum\spacefactor=1020 \else .\fi}{#3}%
+ \endgroup
+}
+
+\def\insertEdition#1#2#3{%
+ \begingroup
+ \insertedition{#1}{\doifnumberelse{\csname @@pb@edition\endcsname}{%
+ \ifcase \csname @@pb@edition\endcsname \or st\or nd\or rd\else th\fi
+ }{}#2}{#3}%
+ \endgroup
+}
+
+%D \macros{insertchapter,insertpublisher}
+
+%D Some shortcuts.
+
+% ((#1(type\ |)chapter#2)|#3)
+
+\def\insertchap#1#2#3%
+ {\insertchapter
+ {#1\inserttype{}{\ }{chapter\ }}{#2}%
+ {#3}}
+
+\def\insertpublisher#1#2#3%
+ {\insertpubname
+ {#1}{\insertcity
+ {, }
+ {\insertcountry{, }{}{#2}}%
+ {\insertcountry{, }{}{#2}}}%
+ {\insertcity
+ {}{\insertcountry{, }{}{#2}}%
+ {\insertcountry{#1}{#2}{#3}}}%
+ }
+
+% some tricks with page ranges:
+
+\def\insertfirstpage#1#2#3{%
+ \@EA\bibdoifelse
+ \@EA{\csname @@pb@pages\endcsname}%
+ {#1\fixedfirstpage #2}%
+ {#3}%
+}
+
+\def\fixedfirstpage{\expanded{\doifinstringelse{-}{\csname @@pb@pages\endcsname}%
+ {\gobblelastdash\csname @@pb@pages\endcsname-\relax}{\csname @@pb@pages\endcsname}}}
+
+\protected\def\gobblelastdash#1-#2\relax{#1}
+
+\def\fixpp.{\expanded{\doifinstringelse{-}{\csname @@pb@pages\endcsname}{pp.}{p.}}}
+
+\setuppublicationlayout[article]{%
+ \insertartauthors{}{ }{\insertthekey{}{ }{}}%
+ \insertjournal{\unskip, \bgroup }{\egroup}
+ {}% \insertcrossref{In }{}{}}%
+ \insertvolume
+ { \bgroup \bf }
+ {\egroup %\insertissue{(}{)}{}%
+ \insertfirstpage{, }{}{}}
+ {\insertfirstpage{ }{}{}}%
+ \insertpubyear{ (}{). }{\unskip.}%
+ \insertNote{ }{.}{}%
+ \insertcomment{}{.}{}%
+}
+
+\newif\ifeditedbook
+\setuppublicationlayout[book]{%
+ \insertauthors{}{ }{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \inserttitle
+ {\unskip, \bgroup\it }%
+ {\/\egroup
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { Number~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, \fixpp. }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, volume~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, p. }{. }{. }%
+ }%
+ \fi}%
+ { }%
+ \insertpubyear{(%
+ \insertpublisher
+ {}%
+ {, }%
+ {}%
+ }{)\insertEdition{, }{ ed. }{. }}{\unskip.}%
+% \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[inbook]{%
+ \insertauthors{}{}{\inserteditors{}{, editor%
+ \ifnum\getvalue{editor@num}> 1 s\fi
+ \ \global\editedbooktrue
+ }{\insertthekey{}{. }{}}}%
+ \inserttitle
+ {, \bgroup\it }%
+ {\/\egroup
+ \insertpubyear
+ { (%
+ \insertpubname{}{\insertcity{, }{, }{}}{}%
+ }
+ {)\insertEdition{, }{ ed.}{}}{}%
+ \ifeditedbook
+ \global\editedbookfalse
+ \insertvolume
+ { vol.~}%
+ {\insertseries
+ { in~\bgroup}%
+ {\egroup. }%
+ {\insertcrossref{ in~}{}{. }}}%
+ {\insertseries{ }{.}{} }%
+ \else
+ \insertcrossref
+ {\insertchap{, }{}{}%
+ \insertpages{, p. }{. }{. }%
+ \insertvolume{Volume~}{ of~}{}%
+ }%
+ {}%
+ {\insertvolume
+ {, vol.~}%
+ {\insertseries
+ { of~\bgroup\it}%
+ {\egroup}
+ {}}
+ {}%
+ \insertchap{, }{}{}%
+ \insertpages{, \fixpp. }{. }{. }%
+ }%
+ \fi }%
+ { }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[booklet]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup }{\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpubyear{(%
+ \insertpublisher{}{, }{}%
+ }{)\insertEdition{, }{ ed. }{. }}{}%
+ \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[manual]{%
+ \insertauthors{}{ }{\insertthekey{}{. }{}}%
+ \inserttitle{\bgroup \it }{\/\egroup \insertseries{ (}{)}{}. }{}%
+ \insertpubyear{(%
+ \insertorganization
+ {}%
+ {\insertcity{, }{, }{}}%
+ {\insertcity{}{, }{}}%
+ }{)\insertEdition{, }{ ed. }{. }}{}%
+ \insertpages{}{p. }{}%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[incollection]{%
+ \insertartauthors{}{}{\insertthekey{}{, }{}}%
+% \insertarttitle{\bgroup }{\egroup. }{}%
+ \inserttitle
+ {, in %
+ \bgroup\it}%
+ {\egroup
+ \inserteditors{, edited by }%
+ {}%
+ {}
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear{(%
+ \insertpublisher{}%{, }%{}%
+ }{)\insertEdition{, }{ ed. }{}}{}%
+ \insertpages{\unskip, p.~}{. }{\unskip. }%
+ }%
+ {In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, p.~}{. }{\unskip. }%
+ }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[inproceedings]{%
+ \insertauthors{}{ }{}%
+%
+% \insertarttitle{\bgroup }{\egroup. }{}%%
+ \inserttitle
+ {\unskip, in \bgroup\it}%
+ {\egroup
+ \inserteditors{, edited by }%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear
+ { (%
+ \insertorganization
+ {}%
+ {\insertpubname{, }
+ {\insertcity{, }{}{}, }
+ {\insertcity{, }{}{}, }}%
+ {\insertpubname{}
+ {\insertcity{, }{}{}, }
+ {\insertcity{}{, }{}}}%
+ }
+ {)}{}%
+ \insertseries
+ {, \insertvolume{vol. }{~of }{}\bgroup\it}%
+ {\egroup}%
+ {}%
+ \insertpages
+ {\unskip, \fixpp.~}
+ {\unskip.}
+ {\unskip.}%
+ }%
+ { In \insertcrossref{}{}{}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpages{\unskip, \fixpp.~}{. }{\unskip. }%
+ }%
+ \insertNote{ }{.}{}%
+}
+
+\setuppublicationlayout[proceedings]{%
+ \inserteditors{}{, ed%
+ \ifnum\getvalue{editor@num}> 1 s\fi.,
+ \ \global\editedbooktrue
+ }{\insertthekey{}{ }{}}%
+ \inserttitle
+ {\bgroup\it}%
+ {\egroup
+ \insertseries
+ {\insertvolume{, number }{~in }{ }}%
+ {}%
+ {}%
+ \insertchap{\unskip, }{ }{ }%
+ \insertpubyear{(%
+ \insertorganization
+ {}%
+ {\insertpubname{, }{, }{}}%
+ {\insertpubname{}{, }{}}%
+ }
+ {)}
+ {}%
+ \insertpages
+ {\unskip, p.~}
+ {\insertcity{, }{}{}}
+ {\unskip\insertcity{, }{}{}}%
+ }%
+ {}%
+ \insertNote{\unskip. }{.}{.}%
+}
+
+\setuppublicationlayout[mastersthesis]{%
+ \insertauthors{}{, }{}%
+ \inserttype{}{, }{Master's thesis, }%
+ \insertpublisher{}{, }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[phdthesis]{%
+ \insertauthors{}{, }{}%
+ \inserttype{}{, }{Ph.D. thesis, }%
+ \insertpublisher{}{, }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[misc]{%
+ \insertauthors{}{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }{%
+ \insertthekey{}{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }{%
+ \inserttitle{, \bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ }}%
+ \insertpubyear{(%
+ \insertpublisher{}{, }{}%
+ }%
+ {)}%
+ {%
+ \inserthowpublished{\unskip, }{}{}%
+ }%
+ \insertpages{\unskip, }{}{}%
+ \inserteprint{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[techreport]{%
+ \insertauthors{}{, }{}%
+ \inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{} }{}%
+ \inserttype{}{}{Tech. Rep.}%
+ \insertvolume{ }{, }{, }%
+ \insertpublisher{}{ }{}%
+ \insertpubyear{(}{)}{}%
+ \insertpages{\unskip, }{}{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\setuppublicationlayout[unpublished]{%
+ \insertauthors{}{}{}%
+ \inserttitle{\bgroup \it }{\egroup \insertseries{ (}{)}{}}{}%
+ \inserttype{ (}{)}{}%
+ \insertpubyear{ (unpublished,}{)}{ (unpublished)}%
+ \insertpages{\unskip, }{ }{}%
+ \insertNote{\unskip. }{.}{\unskip.}%
+}
+
+\protect \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/bib/t-bib.tex b/Master/texmf-dist/tex/context/bib/t-bib.tex
new file mode 100644
index 00000000000..82cdba9935b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/bib/t-bib.tex
@@ -0,0 +1,1179 @@
+%D \module
+%D [ file=t-bib,
+%D version=2005.01.04,
+%D title=\CONTEXT\ Publication Module,
+%D subtitle=Publications,
+%D author=Taco Hoekwater,
+%D date=\currentdate,
+%D copyright=Public Domain]
+%C
+%C Donated to the public domain.
+
+\usemodule[bibltx] % bibtex files can contain latex left-overs
+
+%D Slightly adapted by HH (2005/01). For \BIBTEX\ relate questions,
+%D contact Taco, if you expect interference with core macros, bother
+%D Hans. This file will be cleaned up in due time.
+%D
+%D Documentation and additional resources can be found at
+%D Taco's website: \url{tex.aanhet.net}.
+
+%D \subject{DONE}
+%D
+%D \startitemize
+%D \item minor bugfixes today (25/6)
+%D \item add finalnamesep support for Oxford comma (17/9)
+%D \item add \insert... for: doi, eprint, howpublished (17-19/9)
+%D \item minor fix (26/5/2004):
+%D \item add author definition (and associated system variable)
+%D \stopitemize
+
+%D \subject{TODO}
+%D
+%D \startitemize
+%D \item export \type {\citation{<cited item>}}
+%D \item export a \type {\bibalternative{lastpubsep}} from BST instead of 'and'
+%D \item don't reset [numbercommand] in \type {\setuppublication} by default
+%D \item sort out different APS versions: PR A/B/L vs. RPM
+%D \item (implement sub-options? / \type {\setupcitationstyle} ?)
+%D \item worry about localization at same time
+%D \item add hyperlinking to the doi->URL and \type {\cite}->list, in general
+%D \item don't load the whole lot, but filter entries instead
+%D \stopitemize
+
+\unprotect
+
+%D A few new shortcuts:
+
+\definesystemvariable {pv} % PublicationVariable
+\definesystemvariable {pb} % PuBlication
+\definemessageconstant {bib}
+\definefileconstant {bibextension} {bbl}
+
+%D Some user information messages.
+
+\startmessages all library: bib
+ title: publications
+ 1: file -- not found, unknown style ignored
+ 2: file -- not found, don't forget to run bibtex
+ 3: wrote a new auxiliary file \jobname.aux
+ 4: loading database from --
+ 5: warning: cite argument -- on \the\inputlineno
+ 6: loading formatting style from --
+\stopmessages
+
+%D Some constants for the multi-lingual interface
+
+\startconstants dutch english
+
+ database: database database
+ sorttype: sorttype sorttype
+ compress: compress compress
+ autohang: autohang autohang
+ % author: author author
+ artauthor: artauthor artauthor
+ editor: editor editor
+ authoretallimit: authoretallimit authoretallimit
+ artauthoretallimit: artauthoretallimit artauthoretallimit
+ editoretallimit: editoretallimit editoretallimit
+ authoretaldisplay: authoretaldisplay authoretaldisplay
+ artauthoretaldisplay: artauthoretaldisplay artauthoretaldisplay
+ editoretaldisplay: editoretaldisplay editoretaldisplay
+ authoretaltext: authoretaltext authoretaltext
+ artauthoretaltext: artauthoretaltext artauthoretaltext
+ editoretaltext: editoretaltext editoretaltext
+ totalnumber: totalnumber totalnumber
+ firstnamesep: firstnamesep firstnamesep
+ vonsep: vonsep vonsep
+ juniorsep: juniorsep juniorsep
+ surnamesep: surnamesep surnamesep
+ lastnamesep: lastnamesep lastnamesep
+ finalnamesep: finalnamesep finalnamesep
+ namesep: namesep namesep
+ pubsep: pubsep pubsep
+ lastpubsep: lastpubsep lastpubsep
+ refcommand: refcommand refcommand
+ samplesize: samplesize samplesize
+
+\stopconstants
+
+\startvariables dutch english
+
+ german czech
+ italian romanian
+ title: titel title
+ titel titul
+ titolo titlu
+ short: kort short
+ kurz short
+ short short
+ cite: cite cite
+ cite cite
+ cite cite
+ bbl: bbl bbl
+ bbl bbl
+ bbl bbl
+ bib: bib bib
+ bib bib
+ bib bib
+ author: auteur author
+ autor autor
+ autore autor
+
+\stopvariables
+
+%D The text string for the publication list header
+
+\setupheadtext[en][pubs=References]
+\setupheadtext[nl][pubs=Literatuur]
+\setupheadtext[de][pubs=Literatur]
+
+%D \macros{bibdoifelse}
+%D
+%D Here is a really small helper that is used a lot (which is why it
+%D makes sense to use \type{\ifx} instead of \type{\doif..}).
+%D This test is used in all the typesetting commands
+%D (\type{\insert...}) we will encounter later.
+
+\def\bibdoifelse#1%
+ {\ifx#1\relax
+ \@EA\secondoftwoarguments
+ \else\ifx#1\empty
+ \@EAEAEA\secondoftwoarguments
+ \else
+ \@EAEAEA\firstoftwoarguments
+ \fi\fi}
+
+\def\bibdoif#1%
+ {\ifx#1\relax
+ \@EA\gobbleoneargument
+ \else\ifx#1\empty
+ \@EAEAEA\gobbleoneargument
+ \else
+ \@EAEAEA\firstofoneargument
+ \fi\fi}
+
+\def\bibdoifnot#1%
+ {\ifx#1\relax
+ \@EA\firstofoneargument
+ \else\ifx#1\empty
+ \@EAEAEA\firstofoneargument
+ \else
+ \@EAEAEA\gobbleoneargument
+ \fi\fi}
+
+%D Bibtex settings separated out
+
+%D No point in writing the aux file if there is no database...
+
+\def\setupbibtex{\dosingleempty\dosetupbibtex}
+
+\def\dosetupbibtex[#1]%
+ {\let\@@pbdatabase\empty
+ \let\@@pbsort \empty
+ \getparameters[\??pb][#1]
+ \expanded{\processaction[\@@pbsort]}
+ [ \v!no=>\def\bibstyle{cont-no},
+ \v!author=>\def\bibstyle{cont-au},
+ \v!title=>\def\bibstyle{cont-ti},
+ \v!short=>\def\bibstyle{cont-ab},
+ \s!default=>\def\bibstyle{cont-no},
+ \s!unknown=>\def\bibstyle{cont-no}]%
+ \ifx\@@pbdatabase\empty\else \writeauxfile \fi}
+
+%D \macros{writeauxfile}
+%D
+%D Unfortunately, \BIBTEX\ is not the best configurable program
+%D around. The names of the commands it parses as well as the \type{.aux}
+%D extension to the file name are both hardwired.
+%D
+%D This means \CONTEXT\ has to write a \LATEX-style auxiliary file, yuk!
+%D The good news is that it can be rather short. We'll just ask
+%D \BIBTEX\ to output the entire database(s) into the \type{bbl} file.
+%D
+%D The \type{\bibstyle} command controls how the \type{bbl} file will
+%D be sorted. The possibilities are:
+%D
+%D \startitemize[packed]
+%D \item by author (+year, title): cont-au.bst
+%D \item by title (+author, year): cont-ti.bst
+%D \item by short key as in abbrev.bst: cont-ab.bst
+%D \item not sorted at all: cont-no.bst
+%D \stopitemize
+
+\def\writeauxfile
+ {\openout \scratchwrite \jobname.aux
+ \write \scratchwrite {\string\citation{*}}%
+ \write \scratchwrite {\string\bibstyle{\bibstyle}}%
+ \write \scratchwrite {\string\bibdata{\@@pbdatabase}}%
+ \closeout\scratchwrite
+ \showmessage\m!bib{3}{}}
+
+%D \macros{ifsortbycite,iftypesetall,ifautohang,ifbibcitecompress}
+%D
+%D The module needs some new \type{\if} statements.
+
+%D Default sort order of the reference list is by citation.
+
+\newif\ifsortbycite \sortbycitetrue
+
+%D By default, only referenced publications are typeset
+
+\newif\iftypesetall \typesetallfalse
+
+%D Hanging indentation of the publication list
+%D will not adjust itself according to the width of the label.
+
+\newif\ifautohang \autohangfalse
+
+%D Cite lists are compressed, if possible.
+
+\newif\ifbibcitecompress \bibcitecompresstrue
+
+\def\setuppublications
+ {\dosingleargument\dosetuppublications}
+
+\def\bibleftnumber#1%
+ {#1\hfill~}
+
+\def\dosetuppublications[#1]%
+ {\getparameters
+ [\??pb]
+ [\c!numbercommand=\bibleftnumber,\c!alternative=,#1]%
+ \doifsomething\@@pbalternative
+ {\readsysfile{bibl-\@@pbalternative.tex}
+ {\showmessage\m!bib{6}{bibl-\@@pbalternative}\let\@@pbalternative\empty}
+ {\showmessage\m!bib{1}{bibl-\@@pbalternative}\let\@@pbalternative\empty}}%
+ \doifnothing{\@@pbalternative}
+ {\processaction
+ [\@@pbcriterium]
+ [ \v!all=>\typesetalltrue,
+ \s!unknown=>\typesetallfalse]%
+ \processaction
+ [\@@pbautohang]
+ [ \v!yes=>\autohangtrue,
+ \s!unknown=>\autohangfalse]%
+ \processaction
+ [\@@pbsorttype]
+ [ \v!cite=>\sortbycitetrue,
+ \v!bbl=>\sortbycitefalse,
+ \s!default=>\sortbycitetrue,
+ \s!unknown=>\sortbycitefalse]%
+ \processaction
+ [\@@pbnumbering]
+ [ \v!yes=>\let\@@pbinumbercommand\firstofoneargument,
+ \v!no=>\let\@@pbinumbercommand\gobbleoneargument,
+ \v!short=>\def\@@pbinumbercommand##1{\@@pbs},
+ \v!bib=>\def\@@pbinumbercommand##1{\@@pbn},
+ \s!unknown=>\let\@@pbinumbercommand\firstofoneargument]%
+ \processaction
+ [\@@pbrefcommand]
+ [\s!default=>\edef\@@citedefault{\@@pbrefcommand},
+ \s!unknown=>\edef\@@citedefault{\@@pbrefcommand}]}}
+
+% initialize
+
+\def\@@pbrefcommand{num}
+
+%D how to load the references:
+
+\appendtoks \dousepublications\jobname \to \everystarttext
+
+%D \macros{usepublications}
+%D
+%D We need \type{\usereferences} so that it is possible to
+%D refer to page and/or appearance number for publications
+%D in the other document.
+
+\def\usepublications[#1]%
+ {\usereferences[#1]\processcommalist[#1]\dousepublications}
+
+\def\dousepublications#1%
+ {\readsysfile{#1.\f!bibextension}
+ {\showmessage\m!bib{4}{#1.\f!bibextension}}
+ {\showmessage\m!bib{2}{#1.\f!bibextension}}}
+
+%D \macros{setuppublicationlist}
+%D
+%D This will be the first command in (\BIBTEX-generated) \type{bbl}
+%D files. `samplesize' is a sample value (in case of \BIBTEX-generated
+%D files, this will be the longest `short' key). `totalnumber'
+%D is the total number of entries that will follow in this
+%D file.
+
+%D Both values are only needed for the label calculation
+%D if `autohang' is `true', so by default the command is
+%D not even needed, and therefore I saw no need to give
+%D it it's own system variable and it just re-uses \type{pb}.
+
+\def\setuppublicationlist
+ {\dosingleempty\dosetuppublicationlist}
+
+\definelist[pubs][pubs]
+
+\def\dosetuppublicationlist[#1]%
+ {\getparameters
+ [@@pvdata]
+ [\c!samplesize={AA99},\c!totalnumber={99},#1]% for sample & totalnumber & firstnamesep etc.
+ \setuplist
+ [pubs]
+ [\c!alternative=a,\c!pagenumber=\v!no,#1]}
+
+\def\setuppublicationlayout[#1]%
+ {\setvalue{@@pvdata#1}}
+
+%D \macros{bibalternative}
+%D
+%D A nice little shorthand that will be used so we don't have to
+%D key in the weird \type{\@@pv} parameter names all the time.
+
+\def\bibalternative#1%
+ {\getvalue{\??pv\@@currentalternative#1}}
+
+%D \macros{simplebibdef,bibcommandlist}
+%D
+%D \type{\simplebibdef} defines \type{bib@#1}, which in turn will
+%D use one argument that is stored in \type{@@pb@#1}.
+%D
+%D \type{\simplebibdef} also defines \type{insert#1}, which can be
+%D used in the argument of \type{\setuppublicationlayout} to fetch
+%D one of the \type{@@pb@} data entries. \type{insert#1} then has
+%D three arguments: \type{#1} are commands to be executed before the
+%D data, \type{#2} are commands to be executed after the data, and
+%D \type{#3} are commands to be executed if the data is not found.
+
+%D \type{\bibcommandlist} is the list of commands that is affected
+%D by this approach. Later on, it will be used to do a series
+%D of assignments from \type{#1} to \type{bib@#1}: e.g
+%D \type{\title} becomes \type{\bib@title} when used within
+%D a publication.
+
+\def\simplebibdef#1% hh: funny expansion ?
+ {\@EA\long\@EA\def\csname bib@#1\endcsname##1%
+ {\setvalue{\??pb @#1}{##1}\ignorespaces}%
+ \@EA\def\csname insert#1\endcsname##1##2##3%
+ {\@EA\bibdoifelse
+ \@EA{\csname @@pb@#1\endcsname}%
+ {##1\csname @@pb@#1\endcsname##2}%
+ {##3}}}
+
+\def\bibcommandlist
+ {arttitle,title,journal,notes,
+ volume,issue,pubname,city,country,
+ type,organization,institute,series,thekey,
+ edition,month,pubyear,note,annotate,pages,
+ keyword,keywords,comment,abstract,names,size,
+ issn,isbn,chapter,eprint,doi,howpublished}
+
+\processcommacommand[\bibcommandlist]\simplebibdef
+
+\def\newbibfield[#1]%
+ {\simplebibdef{#1}%
+ \edef\bibcommalist{\bibcommandlist,#1}}
+
+%D \macros{bib@crossref}
+%D
+%D \type{\crossref} is used in database files to point to another
+%D entry. Because of this special situation, it has to be defined
+%D separately. Since this command will not be seen until at
+%D \type{\placepublications}, it may force extra runs. The same is
+%D true for \type{\cite} commands inside of publications.
+
+\def\bib@crossref#1%
+ {\setvalue{\??pb @crossref}{#1}\ignorespaces}
+
+\def\insertcrossref#1#2#3%
+ {\bibdoifelse{\@@pb@crossref}
+ {#1\@EA\cite\@EA[\@@pb@crossref]#2}
+ {#3}}
+
+%D \macros{complexbibdef,specialbibinsert}
+%D
+%D The commands \type{\artauthor}, \type{\author} and
+%D \type{\editor} are more complex than the other commands.
+%D Their argument lists have this form:
+%D
+%D \type{\author[junior]{firstnames}[inits]{von}{surname}}
+%D
+%D (bracketed stuff should become optional someday)
+%D
+%D And not only that, but there also might be more than one of each of
+%D these commands. This is why a special command is needed to insert
+%D them, as well as one extra counter for each command.
+
+%D All of these \type{\@EA}'s and \type{\csnames} make this code
+%D look far more complex than it really is. For example, the argument
+%D \type{author} defines the macro \type{\bib@author} to do two
+%D things: increment the counter \type{\author@num} (let's say to 2)
+%D and next store it's arguments in the macro \type{\@@pb@author2}.
+%D And it defines \type{\insertauthors} to expand into
+%D \starttypen
+%D \specialbibinsert{author}{\author@num}{<before>}{<after>}{<not>}
+%D \stoptypen
+
+% hh: use a context counter instead, more options
+
+\def\complexbibdef#1%
+ {\@EA\newcounter\csname #1@num\endcsname
+ \@EA\def\csname bib@#1\endcsname[##1]##2[##3]##4##5%
+ {\@EA\increment\csname #1@num\endcsname
+ \setvalue{\??pb @#1\csname #1@num\endcsname}%
+ {{##2}{##4}{##5}{##3}{##1}}\ignorespaces}%
+ \@EA\def\csname insert#1s\endcsname##1##2##3%
+ {\specialbibinsert{#1}{\csname #1@num\endcsname}{##1}{##2}{##3}}}
+
+\processcommalist[author,artauthor,editor]\complexbibdef
+
+%D Another level of indirection is needed to control the
+%D typesetting of all of these arguments, which explains the usage
+%D of \type{\tempa} below.
+
+%D There is some sneaky stuff with \type{\tempa} and \type{\tempb}
+%D going on here to resolve the \type{\csname}'s. It probably could
+%D be done a little bit more elegant, but it works. The basic goal
+%D is to get the command that will actually typeset the name into
+%D the macro \type{\tempb}, and to make sure that that command will actually
+%D recieve five arguments (see the definition of
+%D e.g. \type{\invertedauthor} below).
+
+%D There is a conflict between `author' and the predefined interface
+%D variable `auteur'. The old version is overruled `auteur' is
+%D overruled by the systemconstant definition at the top of this file!
+
+%D The increment/decrement trick on \type{\scratchcounter} is needed
+%D to decide what name the last one is.
+
+\newcount\etallimitcounter
+\newcount\etaldisplaycounter
+\newcount\todocounter
+
+\def\specialbibinsert#1#2#3#4#5%
+ {\bgroup
+ \ifnum#2>\zerocount
+ \letcscsname\tempa\csname @@pvdata#1\endcsname
+ \def\tempb{\@EA\tempa}%
+ \etallimitcounter =0\bibalternative{#1etallimit}\relax
+ \etaldisplaycounter=0\bibalternative{#1etaldisplay}\relax
+ \ifnum #2>\etallimitcounter
+ \todocounter\etaldisplaycounter
+ % just in case ...
+ \ifnum\todocounter>\etallimitcounter
+ \todocounter\etallimitcounter
+ \fi
+ \else
+ \todocounter#2\relax
+ \fi
+ \scratchcounter\zerocount
+ \ifnum\todocounter>\zerocount
+ #3%
+ \doloop
+ {\ifnum \scratchcounter < \todocounter
+ \advance\scratchcounter \plusone
+ \ifnum \scratchcounter = \todocounter
+ \@EA\tempb \csname @@pb@#1\the\scratchcounter\endcsname
+ \ifnum\etallimitcounter<#2 \bibalternative{#1etaltext}\fi #4%
+ \else
+ \@EA\tempb \csname @@pb@#1\the\scratchcounter\endcsname
+ \advance\scratchcounter \plusone
+ \ifnum \scratchcounter = \todocounter
+ \ifnum \todocounter > \plustwo
+ \bibalternative\c!finalnamesep
+ \else
+ \bibalternative\c!lastnamesep
+ \fi
+ \else
+ \bibalternative\c!namesep
+ \fi
+ \advance\scratchcounter \minusone
+ \fi
+ \else
+ \exitloop
+ \fi}%
+ \else
+ #5%
+ \fi
+ \else
+ #5%
+ \fi
+ \egroup}
+
+%D \macros{invertedauthor,normalauthor,invertedshortauthor,normalshortauthor}
+%D
+%D Just some commands that can be used in \type{\setuppublicationparameters}
+%D If you want to write an extension to the styles, you might
+%D as well define some of these commands yourself.
+%D
+%D The argument liust has been reordered here, and the meanings
+%D are:
+%D
+%D {\obeylines\parskip0pt
+%D \type{#1} firstnames
+%D \type{#2} von
+%D \type{#3} surname
+%D \type{#4} inits
+%D \type{#5} junior
+%D }
+%D
+
+\def\invertedauthor#1#2#3#4#5%
+ {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3\bibalternative\c!surnamesep
+ \bibdoif{#5}{#5\bibalternative\c!juniorsep}%
+ \bibdoif{#1}{#1\unskip}}
+
+\def\normalauthor#1#2#3#4#5%
+ {\bibdoif{#1}{#1\bibalternative\c!firstnamesep}%
+ \bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3\bibalternative\c!surnamesep
+ \bibdoif{#5}{#5\unskip}}
+
+\def\invertedshortauthor#1#2#3#4#5%
+ {\bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3\bibalternative\c!surnamesep
+ \bibdoif{#5}{#5\bibalternative\c!juniorsep}%
+ \bibdoif{#4}{#4\unskip}}
+
+\def\normalshortauthor#1#2#3#4#5%
+ {\bibdoif{#4}{#4\bibalternative\c!firstnamesep}%
+ \bibdoif{#2}{#2\bibalternative\c!vonsep}%
+ #3\bibalternative\c!surnamesep
+ \bibdoif{#5}{#5\unskip}}
+
+%D \macros{clearbibitem,clearbibitemtwo,bibitemdefs}
+%D
+%D These are used in \type{\typesetapublication} to do
+%D initializations and cleanups.
+
+\def\clearbibitem#1{\setvalue{\??pb @#1}{}}%
+
+\def\clearbibitemtwo#1%
+ {\letvalue{#1@num}\!!zerocount
+ \scratchcounter\plusone
+ \doloop
+ {\doifdefinedelse{\??pb @#1\the\scratchcounter}
+ {\letvalue{\??pb @#1\the\scratchcounter}\empty
+ \advance\scratchcounter\plusone}%
+ {\exitloop}}}
+
+\def\bibitemdefs#1{\setvalue{#1}{\csname bib@#1\endcsname}}
+
+%D \macros{startpublication}
+%D
+%D We are coming to the end of this module, to the macros that
+%D do typesetting and read the \type{bbl} file.
+%D
+%D The stuff between \type{\startpublication} ... \type{\stoppublication}
+%D is simply stored into a macro: either
+%D \type{\publist} (potentially huge) or separate macros
+%D for each of them, depending on whether
+%D or not we do \type{\sortbycite}, as explained above.
+
+\newcounter\bibcounter
+
+%D Just a \type{\dosingleempty} is the most friendly
+%D of doing this: there need not even be an argument
+%D to \type{\startpublication}. Of course, then there
+%D is no key either, and it had better be an
+%D article (otherwise the layout will be all screwed up).
+
+\def\startpublication{\dosingleempty\dostartpublication}
+\def\stoppublication {}
+
+%D Only specifying the key in the argument is also
+%D legal. In storing this stuff into macros, some trickery with
+%D token registers is needed to fix the expansion problems. Even so,
+%D this appears to not always be 100\% safe, so people are
+%D urgently advised to use \ETEX\ instead of traditional \TEX.
+%D
+%D In \ETEX, all expansion problems are conviniently solved by
+%D the primitive \type{\protected}. To put that another way:
+%D
+%D It's not a bug in this module if it does not appear in \ETEX!
+
+\long\def\dostartpublication[#1]#2\stoppublication%
+ {\increment\bibcounter
+ \bgroup
+ \bgroup\honorunexpanded
+ \doifassignmentelse{#1}%
+ {\egroup\getparameters[\??pb][k=,t=article,n=,s=,a=,y=,o=,#1]}%
+ {\egroup\getparameters[\??pb][k=#1,t=article,n=,s=,a=,y=,o=]}%
+ \toks0={\ignorespaces #2}%
+ \@EA\toks\@EA2\@EA{\@@pba}%
+ \@EA\toks\@EA4\@EA{\@@pbs}%
+ \setxvalue{pbd-\@@pbk}%
+ {{\the\toks2}% \@@pba (author)
+ {\@@pby}%
+ {\the\toks4}% \@@pbs (short)
+ {\@@pbn}%
+ {\@@pbt}%
+ {\the\toks0}% (data)
+ {\@@pbo}}% doi
+ \xdef\allrefs{\allrefs,\@@pbk}%
+ \egroup}
+
+% intialization of the order-list:
+
+\let\allrefs\empty
+
+% how to get stuff from a pbd-*** macro:
+
+\def\restorebibdata#1%
+ {\def\@@pbk{#1}%
+ \@EA\dorestorebibdata\csname pbd-#1\endcsname}
+
+\def\dorestorebibdata#1%
+ {\@EA\dodorestorebibdata#1{}{}{}{}{}{}{}\relax}
+
+\def\dodorestorebibdata#1#2#3#4#5#6#7#8\relax%
+ {\def\@@pba{#1}%
+ \def\@@pby{#2}%
+ \def\@@pbs{#3}%
+ \def\@@pbn{#4}%
+ \def\@@pbt{#5}%
+ \def\@@pbd{#6}%
+ \def\@@pbo{#7}}
+
+%D The \writeutility trick is dodgy at best, but it is needed
+%D to make sure that \placepublications\stoptext works as
+%D advertised. (without the \immediate, there *has* to be at
+%D least one page break between \placepublications and \stoptext)
+%D
+
+\def\preinitializepubslist
+ {\let\bibcounter\!!zerocount
+ \ifsortbycite
+ \processcommacommand[\publist]\sortwritepublist
+ \glet\publist\empty
+ \iftypesetall
+ \processcommacommand[\allrefs]\writepublist
+ \fi
+ \else
+ \iftypesetall
+ \processcommacommand[\allrefs]\writepublist
+ \else
+ \processcommacommand[\allrefs]\writereferredpublist
+ \fi
+ \fi}
+
+\def\initializepubslist
+ {\edef\@@pbnumbering{\@@pbnumbering}%
+ \ifautohang
+ \ifx\@@pbnumbering\v!short
+ \setbox\scratchbox\hbox{\@@pbnumbercommand{\csname @@pvdata\c!samplesize\endcsname}}%
+ \else\iftypesetall
+ \setbox\scratchbox\hbox{\@@pbnumbercommand{\csname @@pvdata\c!totalnumber\endcsname}}%
+ \else
+ \setbox\scratchbox\hbox{\@@pbnumbercommand{\numreferred}}%
+ \fi\fi
+ \edef\samplewidth{\the\wd\scratchbox}%
+ \setuplist[pubs][\c!width=\samplewidth,\c!distance=0pt]%
+ \def\@@pblimitednumber##1{\hbox to \samplewidth{\@@pbnumbercommand{##1}}}%
+ \else
+ \def\@@pblimitednumber##1{\hbox{\@@pbnumbercommand{##1}}}%
+ \fi
+ \ifx\@@pbnumbering\v!no
+ \setuplist[pubs][\c!numbercommand=,\c!textcommand=\outdented]
+ \else
+ \setuplist[pubs][\c!numbercommand=\@@pblimitednumber,\c!textcommand=]
+ \fi
+ \forgetall % bugfix 2005/03/18
+}
+
+\def\outdented#1% move to supp-box ?
+ {\hskip -\hangindent
+ \strut#1\strut}
+
+%D The full list of publications
+
+\def\completepublications
+ {\dosingleempty\docompletepublications}
+
+\def\docompletepublications[#1]%
+ {\preinitializepubslist
+ \ifcase\bibcounter\else % HERE it said "\or" instead of "\else"
+ \initializepubslist
+ \let\bibcounter\!!zerocount
+ \completelist[pubs][\c!criterium=all,#1]%
+ \fi}
+
+%D And the portion with the entries only.
+
+\def\placepublications
+ {\dosingleempty\doplacepublications}
+
+\def\doplacepublications[#1]%
+ {\preinitializepubslist
+ \ifcase\bibcounter\else % HERE it said "\or" instead of "\else"
+ \initializepubslist
+ \let\bibcounter\!!zerocount
+ \placelist[pubs][\c!criterium=\v!all,#1]%
+ \fi}
+
+\def\dowritebiblist#1#2%
+ {\restorebibdata{#2}%
+ \edef\pbnumbercommand{\@@pbinumbercommand{#1}}%
+ \@EA\dodowritebiblist\@EA{\pbnumbercommand}{\typesetapublication{#2}}}
+
+\def\dodowritebiblist
+ {\writetolist[pubs]}
+
+\def\writepublist#1%
+ {\doifnotempty{#1}
+ {\increment\bibcounter
+ \@EA\dowritebiblist\@EA{\bibcounter}{#1}}}
+
+\def\writereferredpublist#1%
+ {\doifnotempty{#1}
+ {\doifreferredelse{#1}
+ {\increment\bibcounter
+ \@EA\dowritebiblist\@EA{\bibcounter}{#1}}{}}}
+
+\def\sortwritepublist#1%
+ {\doifnotempty{#1}
+ {\removefromcommalist{#1}\allrefs
+ \increment\bibcounter
+ \@EA\dowritebiblist\@EA{\bibcounter}{#1}}}
+
+%D \subonderwerp{What's in a publication}
+%D
+
+\def\typesetapublication
+ {\doglobal\increment\bibcounter
+ \dotypesetapublication}
+
+\def\dotypesetapublication#1%
+ {\bgroup
+ \def\@@currentalternative{data}%
+ \restorebibdata{#1}%
+ \processcommacommand[\bibcommandlist,crossref]\clearbibitem
+ \processcommalist [artauthor,author,editor]\clearbibitemtwo
+ \processcommacommand[\bibcommandlist]\bibitemdefs
+ \processcommalist [artauthor,author,editor,crossref]\bibitemdefs
+ \expanded{\reference[\@@pbk]{\bibcounter}}%
+ \@@pbd % execute data
+ \bibalternative{\@@pbt}% do typesetting
+ \egroup}
+
+%D An afterthought
+
+\def\maybeyear#1{}
+
+%D \onderwerp{Citations}
+
+%D \macros{cite,bibref}
+%D
+%D The indirection with \type{\dobibref} allows \LATEX\ style
+%D \type{\cite} commands with a braced argument (these might appear
+%D in included data from the \type{.bib} file).
+
+\def\cite
+ {\doifnextcharelse{[}
+ {\dodoubleempty\docite}
+ {\dobibref}}
+
+\def\dobibref#1%
+ {\docite[#1]}
+
+\def\docite#1[#2]#3[#4]%
+ {\ifsecondargument
+ \def\@@currentalternative{#2}%
+ \expanded{\processaction[\csname @@pv#2compress\endcsname]}
+ [ \v!yes=>\bibcitecompresstrue,
+ \v!no=>\bibcitecompressfalse,
+ \s!default=>\bibcitecompresstrue,
+ \s!unknown=>\bibcitecompresstrue]%
+ \getvalue{bib#2ref}[#4]%
+ \else
+ \expanded{\processaction[\csname @@pv\@@citedefault compress\endcsname]}
+ [ \v!yes=>\bibcitecompresstrue,
+ \v!no=>\bibcitecompressfalse,
+ \s!default=>\bibcitecompresstrue,
+ \s!unknown=>\bibcitecompresstrue]%
+ \edef\@@currentalternative{\@@citedefault}%
+ \getvalue{bib\@@citedefault ref}[#2]%
+ \fi}
+
+\def\setupcite#1[#2]#3[#4]%
+ {\def\getciteargs##1{\getparameters[\??pv##1][#4]}%
+ \processcommalist[#2]\dosetupcite}
+
+\def\dosetupcite#1%
+ {\getciteargs{#1}}
+
+%D \macros{numreferred,doifreferredelse,addthisref,publist}
+%D
+%D The interesting command here is \type{\addthisref}, which maintains
+%D the global list of references.
+%D
+%D \type{\numreferred} is needed to do automatic calculations on
+%D the label width, and \type{\doifreferredelse} will be used
+%D to implement \type{criterium=cite}.
+
+\newcounter\numreferred
+
+\long\def\doifreferredelse#1{\doifdefinedelse{pbr-#1}}
+
+\def\addthisref#1%
+ {\doifundefined{pbr-#1}
+ {\setgvalue{pbr-#1}{a}%
+ \doglobal\increment\numreferred
+ \appended\gdef\publist{,#1}}}
+
+\let\publist\empty
+
+%D \macros{doifbibreferencefoundelse}
+%D
+%D Some macros to fetch the information provided by
+%D \type{\startpublication}.
+
+\def\doifbibreferencefoundelse#1#2#3%
+ {\doifdefinedelse{pbd-#1}
+ {\restorebibdata{#1}#2}
+ {\showmessage\m!bib{5}{#1 is unknown}#3}}
+
+%D \macros{ixbibauthoryear,thebibauthors,thebibyears}
+%D
+%D If compression of \type{\cite}'s argument expansion is on,
+%D the macros that deal with authors and years call this internal
+%D command to do the actual typesetting.
+%D
+%D Two entries with same author but with different years may
+%D be condensed into ``Author (year1,year2)''. This is about the
+%D only optimization that makes sense for the (author,year)
+%D style of citations (years within one author have to be unique
+%D anyway so no need to test for that, and ``Author1, Author2 (year)''
+%D creates more confusion than it does good).
+%D
+%D In the code below,
+%D the macro \type{\thebibauthors} holds the names of the alternative
+%D author info fields for the current list. This is a commalist,
+%D and \type{\thebibyears} holds the (collection of) year(s) that go with
+%D this author (possibly as a nested commalist).
+%D
+%D There had better be an author for all cases, but there
+%D does not have to be year info always. \type{\thebibyears} is
+%D pre-initialized because this makes the insertion macros simpler.
+%D
+%D In `normal' \TeX, of course there are expansion problems again.
+
+\def\gobble#1{\def#1##1{##1}}
+
+\def\sanitizeaccents{\processcommalist[\',\`,\",\.,\c,\d,\~,\=]\gobble}
+
+\def\ixbibauthoryear#1#2#3#4%
+ {\bgroup
+ \sanitizeaccents
+ \gdef\ixlastcommand {#4}%
+ \gdef\ixsecondcommand{#3}%
+ \gdef\ixfirstcommand {#2}%
+ \glet\thebibauthors \empty
+ \glet\thebibyears \empty
+ \glet\theauthorssize \empty
+ \getcommalistsize[#1]%
+ \ifbibcitecompress
+ \dorecurse\commalistsize{\xdef\thebibyears{\thebibyears,}}%
+ \processcommalist[#1]\docompressbibauthoryear
+ \else
+ \processcommalist[#1]\donormalbibauthoryear
+ \fi
+ \getcommacommandsize[\thebibauthors]%
+ \xdef\theauthorssize{\commalistsize}%
+ \egroup
+ \dobibauthoryear}
+
+%D \macros{dodobibauthoryear}
+%D
+%D This macro only has to make sure that the lists
+%D \type{\thebibauthors} and \type{\thebibyears} are printed.
+
+\def\dobibauthoryear
+ {\scratchcounter\zerocount
+ \getcommacommandsize[\thebibauthors]%
+ \@EA\processcommalist\@EA[\thebibauthors]\dodobibauthoryear}
+
+\def\dodobibauthoryear#1%
+ {\advance\scratchcounter\plusone
+ \edef\wantednumber{\the\scratchcounter}%
+ \getfromcommacommand[\thebibyears][\wantednumber]%
+ \def\AU{#1}% brr
+ \@EA\def\@EA\YR\@EA{\commalistelement}%
+ \ifnum\scratchcounter=\plusone
+ \ixfirstcommand
+ \else\ifnum \scratchcounter=\commalistsize\relax
+ \ixlastcommand
+ \else
+ \ixsecondcommand
+ \fi\fi}
+
+%D \macros{donormalbibauthoryear}
+%D
+%D Now we get to the macros that fill the two lists.
+%D The `simple' one really is quite simple.
+
+\def\donormalbibauthoryear#1%
+ {\addthisref{#1}%
+ \xdef\myauthor{Xxxxxxxxxx}%
+ \xdef\myyear{0000}%
+ \doifbibreferencefoundelse{#1}
+ {\@EA\gdef\@EA\myauthor\@EA{\@@pba}%
+ \@EA\gdef\@EA\myyear \@EA{\@@pby}}
+ {}%
+ \@EA\doglobal\@EA\addtocommalist\@EA{\myauthor}\thebibauthors
+ \@EA\doglobal\@EA\addtocommalist\@EA{\myyear }\thebibyears}
+
+%D \macros{docompressbibauthoryear}
+%D
+%D So much for the easy parts. Nothing at all will be done if
+%D the reference is not found or the reference does not contain
+%D author data. No questions marks o.s.s. (to be fixed later)
+
+\def\docompressbibauthoryear#1%
+ {\addthisref{#1}%
+ \xdef\myauthor{Xxxxxxxxxx}%
+ \xdef\myyear {0000}%
+ \doifbibreferencefoundelse{#1}
+ {\@EA\gdef\@EA\myauthor\@EA{\@@pba}%
+ \@EA\gdef\@EA\myyear \@EA{\@@pby}}
+ {}%
+ \ifx\myauthor\empty\else
+ \checkifmyauthoralreadyexists
+ \findmatchingyear
+ \fi}
+
+%D two temporary counters. One of these two can possibly be replaced
+%D by \type{\scratchcounter}.
+
+\newcount\bibitemcounter
+\newcount\bibitemwanted
+
+%D The first portion is simple enough: if this is the very first author
+%D it is quite straightforward to add it. \type{\bibitemcounter} and
+%D \type{\bibitemwanted} are needed later to insert the year
+%D information in the correct item of \type{\thebibyears}
+
+\def\checkifmyauthoralreadyexists
+ {\doifemptyelsevalue{thebibauthors}
+ {\global\bibitemcounter\plusone
+ \global\bibitemwanted \plusone
+ \@EA\gdef\@EA\thebibauthors\@EA{\myauthor}} % hh: one level
+ {\getcommacommandsize[\thebibauthors]%
+ \global\bibitemwanted\zerocount
+ \global\bibitemcounter\commalistsize
+ \processcommacommand[\thebibauthors]\docomparemyauthor}}
+
+%D The outer \type{\ifnum} accomplishes the addition of
+%D a new author to \type{\thebibauthors}. The messing about with
+%D the two counters is again to make sure that \type{\thebibyears}
+%D will be updated correctly.If the author {\it was} found,
+%D the counters will stay at their present values and everything
+%D will be setup properly to insert the year info.
+
+\def\docomparemyauthor#1%
+ {\global\advance\bibitemwanted \plusone
+ \def\mytempc{#1}%
+ \ifnum\bibitemwanted = \commalistsize\relax
+ \ifx\mytempc\myauthor \else
+ \global\advance\bibitemwanted \plusone
+ \global\bibitemcounter\bibitemwanted\relax
+ \@EA\doglobal\@EA\addtocommalist\@EA{\myauthor}\thebibauthors
+ \quitcommalist
+ \fi
+ \else
+ \ifx\mytempc\myauthor
+ \quitcommalist
+ \fi
+ \fi}
+
+%D This macro should be clear now.
+
+\def\findmatchingyear
+ {\edef\wantednumber{\the\bibitemwanted}%
+ \getfromcommacommand[\thebibyears][\wantednumber]%
+ \ifx\commalistelement\empty
+ \edef\myyear{{\myyear}}%
+ \else
+ \edef\myyear{{\commalistelement, \myyear}}%
+ \fi
+ \edef\newcommalistelement{\myyear}%
+ \doglobal\replaceincommalist \thebibyears \wantednumber}
+
+%D \macros{bibauthoryearref,bibauthoryearsref,bibauthorref,bibyearref}
+%D
+%D Now that all the hard work has been done, these are simple.
+%D \type{\ixbibauthoryearref} stores the data in the macros
+%D \type{\AU} and \type{\YR}.
+
+\def\bibauthoryearref[#1]%
+ {\ixbibauthoryear{#1}%
+ {{\AU}\bibalternative\c!inbetween
+ \bibalternative\v!left{\YR}\bibalternative\v!right}
+ {\bibalternative\c!pubsep{\AU}\bibalternative\c!inbetween
+ \bibalternative\v!left {\YR}\bibalternative\v!right}
+ {\bibalternative\c!lastpubsep{\AU}\bibalternative\c!inbetween
+ \bibalternative\v!left {\YR}\bibalternative\v!right}}
+
+\def\bibauthoryearsref[#1]%
+ {\bibalternative\v!left
+ \ixbibauthoryear{#1}
+ {{\AU}\bibalternative\c!inbetween{\YR}}
+ {\bibalternative\c!pubsep {\AU}\bibalternative\c!inbetween{\YR}}
+ {\bibalternative\c!lastpubsep{\AU}\bibalternative\c!inbetween{\YR}}%
+ \bibalternative\v!right}
+
+\def\bibauthorref[#1]%
+ {\bibalternative\v!left
+ \ixbibauthoryear{#1}%
+ {{\AU}}
+ {\bibalternative\c!pubsep {\AU}}
+ {\bibalternative\c!lastpubsep{\AU}}%
+ \bibalternative\v!right}
+
+\def\bibyearref[#1]%
+ {\bibalternative\v!left
+ \ixbibauthoryear{#1}%
+ {{\YR}}
+ {\bibalternative\c!pubsep {\YR}}
+ {\bibalternative\c!lastpubsep{\YR}}%
+ \bibalternative\v!right}
+
+%D ML problems:
+
+%D \macros{bibshortref,bibkeyref,bibpageref,bibtyperef,bibnumberref}
+%D
+%D There is hardly any point in trying to compress these. The only
+%D thing that needs to be done is making sure that
+%D the separations are inserted correctly. And that is
+%D what \type{\refsep} does.
+
+\newif\iffirstref
+
+\def\refsep{\iffirstref\firstreffalse\else\bibalternative\c!pubsep\fi}
+
+\def\bibshortref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibshort
+ \bibalternative\v!right}
+
+\def\dobibshort#1%
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\@@pbs}{??}}
+
+
+\def\bibnumberref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibnumbered
+ \bibalternative\v!right}
+
+\def\dobibnumbered#1%
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\@@pbn}{??}}
+
+\def\bibkeyref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibkeyref
+ \bibalternative\v!right}
+
+\def\dobibkeyref#1%
+ {\addthisref{#1}\refsep#1}
+
+\def\bibdoiref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibdoiref
+ \bibalternative\v!right}
+
+\def\dobibdoiref#1%
+ {\addthisref{#1}\refsep#1}
+
+\def\bibtyperef[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibtyperef
+ \bibalternative\v!right}
+
+\def\dobibtyperef#1%
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\@@pbt}{??}}
+
+\def\bibpageref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibpageref
+ \bibalternative\v!right}
+
+\def\dobibpageref#1%
+ {\addthisref{#1}\refsep\at[#1]}
+
+\def\bibdataref[#1]%
+ {\bibalternative\v!left
+ \firstreftrue\processcommalist[#1]\dobibdata
+ \bibalternative\v!right}
+
+\def\dobibdata#1%
+ {\addthisref{#1}\refsep
+ \doifbibreferencefoundelse{#1}{\dotypesetapublication{#1}}{??}}
+
+%D \macros{bibnumref}
+%D
+%D It makes sense to try and compress the argument list of
+%D \type{\bibnumref}. There are two things involved: the actual
+%D compression, and a sort routine. The idea is to store the
+%D found values in a new commalist called \type{\therefs}.
+
+%D But that is not too straight-forward, because \type{\in} is
+%D not expandable,
+%D so that the macro \type{\expandrefs} is needed.
+
+\def\expandrefs#1%
+ {\doifreferencefoundelse{#1}
+ {\@EA\doglobal\@EA\addtocommalist\@EA{\reftypet}\therefs }
+ {\showmessage\m!bib{5}{#1 unknown}%
+ \doglobal\addtocommalist{0}\therefs}}
+
+%D But at least the actual sorting code is simple (note that sorting
+%D a list with exactly one entry fails to return anything, which
+%D is why the \type{\ifx} is needed).
+
+\ifx\compresscommacommandnrs\undefined
+ \usemodule[list]
+ \let\compresscommacommandnrs\compresscommacommand
+\fi
+
+\def\bibnumref[#1]%
+ {\bibalternative\v!left
+ \penalty\!!tenthousand
+ \processcommalist[#1]\addthisref
+ \firstreftrue
+ \ifbibcitecompress
+ \glet\therefs\empty
+ \processcommalist[#1]\expandrefs
+ \sortcommacommand[\therefs]\donumericcompare
+ \ifx\empty\sortedcommalist\else
+ \let\therefs\sortedcommalist
+ \fi
+ \compresscommacommandnrs[\therefs]%
+ % \message{\meaning\therefs, \meaning\compressedlist}%
+ \processcommacommand[\compressedlist]\verysimplebibnumref
+ \else
+ \processcommalist[#1]\dosimplebibnumref
+ \fi
+ \bibalternative\v!right}
+
+%D Here is the simple case first:
+
+\def\dosimplebibnumref #1{\refsep\in[#1]}
+\def\verysimplebibnumref#1{\doverysimplebibnumref#1}
+
+\def\doverysimplebibnumref#1#2%
+ {\refsep
+ \ifcase#1\relax ??\else
+ \def\tempa{#2}\ifx\empty\tempa#1\else#1\bibalternative\c!inbetween#2\fi
+ \fi}
+
+%D And some defaults are loaded from bibl-apa:
+
+% hh: shouldn't those bibl files be made international ?
+
+\setuppublications
+ [\c!alternative=apa]
+
+%D \completepublications
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/bib/t-bibltx.tex b/Master/texmf-dist/tex/context/bib/t-bibltx.tex
new file mode 100644
index 00000000000..cb9e787adcf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/bib/t-bibltx.tex
@@ -0,0 +1,75 @@
+%D \module
+%D [ file=t-bibltx,
+%D version=2005.01.04,
+%D title=\CONTEXT\ Publication Module,
+%D subtitle=Publications,
+%D author={Taco Hoekwater},
+%D date=\currentdate,
+%D copyright={Public Domain}]
+%C
+%C Donated to the public domain.
+
+%D \macros{newcommand}
+%D
+%D Just about all databases define something that uses
+%D \type {\newcommand}. This fake version does not cover
+%D everything \type {\newcommand} does, but it should be
+%D enough for simple definitions like the ones found in
+%D \BIBTEX\ files.
+
+\unprotect
+
+\def\@star@or@long#1%
+ {\doifnextcharelse*{\afterassignment#1\let\next=}{#1}}
+
+\def\newcommand
+ {\@star@or@long\new@command}
+
+\def\new@command#1%
+ {\@testopt{\@newcommand#1}0}
+
+\def\@newcommand#1[#2]%
+ {\doifnextcharelse[{\@xargdef#1[#2]}{\@argdef#1[#2]}}
+
+\long\def\@argdef#1[#2]#3%
+ {\@yargdef#1\@ne{#2}{#3}}
+
+\long\def\@xargdef#1[#2][#3]#4%
+ {\@EA\def\@EA#1\@EA{\@EA\do@testopt\@EA#1\csname\string#1\endcsname{#3}}%
+ \@EA\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}
+
+\def\@testopt#1#2%
+ {\doifnextcharelse[{#1}{#1[#2]}}
+
+\def\do@testopt#1%
+ {\expandafter\@testopt}
+
+\long\def\@yargdef#1#2#3%
+ {\!!counta#3\relax
+ \advance \!!counta \@ne
+ \let\@hash@\relax
+ \edef\!!tempa{\ifx#2\tw@ [\@hash@1]\fi}%
+ \!!countb #2%
+ \loop
+ \ifnum\!!countb <\!!counta
+ \edef\!!tempa{\!!tempa\@hash@\the\!!countb}%
+ \advance\!!countb \@ne
+ \repeat
+ \let\@hash@##%
+ \long\@EA\def\@EA#1\!!tempa}
+
+\long\def\@reargdef#1[#2]%
+ {\@yargdef#1\@ne{#2}}
+
+%D Something like the following is needed to support the
+%D average \LATEX-based \BIBTEX\ databases.
+%D
+%D \starttyping
+%D \let\textsc\kap
+%D \def\emph#1{{\em#1}}
+%D \let\sf\ss
+%D \stoptyping
+%D
+%D But we happily leave that to the user.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-cz.ini b/Master/texmf-dist/tex/context/config/cont-cz.ini
new file mode 100644
index 00000000000..7df97918fbe
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-cz.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-cz.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-de.ini b/Master/texmf-dist/tex/context/config/cont-de.ini
new file mode 100644
index 00000000000..bf5b3b39781
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-de.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-de.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-en.ini b/Master/texmf-dist/tex/context/config/cont-en.ini
new file mode 100644
index 00000000000..6b101ed6566
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-en.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-en.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-it.ini b/Master/texmf-dist/tex/context/config/cont-it.ini
new file mode 100644
index 00000000000..3214b5b7da6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-it.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-it.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-nl.ini b/Master/texmf-dist/tex/context/config/cont-nl.ini
new file mode 100644
index 00000000000..afbe790426e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-nl.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-nl.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-ro.ini b/Master/texmf-dist/tex/context/config/cont-ro.ini
new file mode 100644
index 00000000000..4f766b66c27
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-ro.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-ro.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-uk.ini b/Master/texmf-dist/tex/context/config/cont-uk.ini
new file mode 100644
index 00000000000..6b7a680d138
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-uk.ini
@@ -0,0 +1,5 @@
+% This is a configuration file needed for Thomas Esser's teTeX. Don't
+% forget to uncomment the context specific lines in "fmtutil --edit".
+% You may want to read the ConTeXt installation manual "minstall.pdf".
+\input cont-uk.tex
+\endinput
diff --git a/Master/texmf-dist/tex/context/config/cont-usr.tex b/Master/texmf-dist/tex/context/config/cont-usr.tex
new file mode 100644
index 00000000000..67a3f4d37fa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/config/cont-usr.tex
@@ -0,0 +1,101 @@
+%D \module
+%D [ file=cont-usr,
+%D version=1997.10.05,
+%D title=\CONTEXT\ User Format Specifications,
+%D subtitle=System Specific Setups,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\writestatus{loading}{User Settings}
+
+\unprotect
+
+%D Additional languages can be defined here. Beware of
+%D encoding incompatibilities. Please take a look at the
+%D \type {cont-en.tex}, \type {cont-nl.tex}, enz.\ files
+%D first. Normally you don't have to change a byte. If you
+%D want to play safe, use \typ {texexec --make --alone
+%D --all}.
+
+% \installlanguage [\s!af] [\c!state=\v!start] % afrikaans
+% \installlanguage [\s!ca] [\c!state=\v!start] % catalan
+% \installlanguage [\s!cz] [\c!state=\v!start] % czech
+% \installlanguage [\s!da] [\c!state=\v!start] % danish
+% \installlanguage [\s!de] [\c!state=\v!start] % german
+% \installlanguage [\s!en] [\c!state=\v!start] % english us
+% \installlanguage [\s!es] [\c!state=\v!start] % spanish
+% \installlanguage [\s!fi] [\c!state=\v!start] % finnish
+% \installlanguage [\s!fr] [\c!state=\v!start] % french
+% \installlanguage [\s!hr] [\c!state=\v!start] % croatian
+% \installlanguage [\s!hu] [\c!state=\v!start] % hungarian
+% \installlanguage [\s!it] [\c!state=\v!start] % italian
+% \installlanguage [\s!la] [\c!state=\v!start] % latin
+% \installlanguage [\s!nl] [\c!state=\v!start] % dutch
+% \installlanguage [\s!no] [\c!state=\v!start] % norwegian
+% \installlanguage [\s!pl] [\c!state=\v!start] % polish
+% \installlanguage [\s!pt] [\c!state=\v!start] % portuguese
+% \installlanguage [\s!ro] [\c!state=\v!start] % romanian
+% \installlanguage [\s!ru] [\c!state=\v!start] % russian
+% \installlanguage [\s!sk] [\c!state=\v!start] % slovak
+% \installlanguage [\s!sl] [\c!state=\v!start] % slovenian
+% \installlanguage [\s!sv] [\c!state=\v!start] % swedish
+% \installlanguage [\s!tr] [\c!state=\v!start] % turkish
+% \installlanguage [\s!ua] [\c!state=\v!start] % ukrainian
+% \installlanguage [\s!uk] [\c!state=\v!start] % english uk
+% \installlanguage [\s!vn] [\c!state=\v!start] % vietnamese
+
+% \installlanguage [deo] [\c!state=\v!start] % old german
+
+%D The next lines can be used for setting the language to be
+%D used at startup time.
+
+% \setupcurrentlanguage[\s!af]
+% \setupcurrentlanguage[\s!ca]
+% \setupcurrentlanguage[\s!cz]
+% \setupcurrentlanguage[\s!da]
+% \setupcurrentlanguage[\s!de]
+% \setupcurrentlanguage[\s!en]
+% \setupcurrentlanguage[\s!es]
+% \setupcurrentlanguage[\s!fi]
+% \setupcurrentlanguage[\s!fr]
+% \setupcurrentlanguage[\s!hr]
+% \setupcurrentlanguage[\s!hu]
+% \setupcurrentlanguage[\s!it]
+% \setupcurrentlanguage[\s!la]
+% \setupcurrentlanguage[\s!nl]
+% \setupcurrentlanguage[\s!no]
+% \setupcurrentlanguage[\s!pl]
+% \setupcurrentlanguage[\s!pt]
+% \setupcurrentlanguage[\s!ro]
+% \setupcurrentlanguage[\s!ru]
+% \setupcurrentlanguage[\s!sk]
+% \setupcurrentlanguage[\s!sl]
+% \setupcurrentlanguage[\s!sv]
+% \setupcurrentlanguage[\s!tr]
+% \setupcurrentlanguage[\s!ua]
+
+%D Local font settings can go here. Normally suitable
+%D defaults are already preloaded, almost certainly the
+%D Computer Modern Roman typefaces or some derivate. So, the
+%D next line is only meant as sample, take a look at the
+%D format related files first.
+
+% \definefilesynonym [font-cmr] [font-csr] % czech & slovak
+% \definefilesynonym [font-cmr] [font-plr] % polish
+
+%D In some languages, compound characters, like \type {"e}
+%D are used to get accented and non latin characters.
+
+ \useencoding[fde] % german
+% \useencoding[ffr] % french
+% \useencoding[fro] % romanian
+% \useencoding[fpl] % polish
+
+%D Don't remove the next few lines.
+
+\protect \endinput
diff --git a/Master/texmf-dist/tex/context/extra/mag-0000.tex b/Master/texmf-dist/tex/context/extra/mag-0000.tex
new file mode 100644
index 00000000000..52cff1eea7b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/extra/mag-0000.tex
@@ -0,0 +1,40 @@
+\usemodule[mag-01]
+
+\setvariables
+ [magazine]
+ [title={Introduction},
+ author=Hans Hagen,
+ affiliation=PRAGMA ADE,
+ date=Januari 2003,
+ number=0]
+
+\startbuffer[abstract]
+ This is the zero issue of a semi periodical. The
+ associated style can be used by \CONTEXT\ users to
+ typeset and publish their own issues.
+\stopbuffer
+
+\starttext \setups [titlepage] \setups [title]
+
+\setupheadertexts[welcome]
+
+This is the zero issue of a range of \CONTEXT\ related
+publications, in most cases short introductions to new
+functionality. The style may be used by users for providing
+similar documents, but preferably not for other purposes,
+since it may confuse readers in their expectations.
+
+We've chosen a layout which is more functional than
+beautiful. This layout provides several text areas: headers
+and footers, margins and edges as well as a main text area.
+The surrounding (gray) makes the main page (which is
+slightly smaller than A4) stand out and is suitable for
+viewing in spread mode.
+
+The documents produced at \PRAGMA\ are called {\bf This
+Way}, user documents gets the title {\bf My Way}. The
+\PRAGMA\ issues are numbered. We strongly advise you not to
+use the \type {mag-} prefix for your issues, since this may
+lead to clashes with files distributed by \PRAGMA.
+
+\setups [listing] \setups [lastpage] \stoptext
diff --git a/Master/texmf-dist/tex/context/extra/setup-qr.tex b/Master/texmf-dist/tex/context/extra/setup-qr.tex
new file mode 100644
index 00000000000..466f5e68a30
--- /dev/null
+++ b/Master/texmf-dist/tex/context/extra/setup-qr.tex
@@ -0,0 +1,77 @@
+% output=pdftex interface=en
+
+%D \module
+%D [ file=setup-qr,
+%D version=1997.07.22,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Quick Reference Document / Efficient,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D This is a stripped down version of the good old quick
+%D reference document. This version is more compact and
+%D therefore better suited for local processing and printing.
+%D The slightly more fancy version can be fetched from the
+%D \CONTEXT\ web site.
+
+\dontcomplain \silentmode
+
+\unprotect
+
+\setupbodyfont
+ [9pt]
+
+\setuplayout
+ [\c!rugwit=1cm,
+ \c!kopwit=1cm,
+ \c!hoofd=0cm,
+ \c!voet=0cm,
+ \c!breedte=\v!midden,
+ \c!hoogte=\v!midden]
+
+\readfile{setupa} {} {}
+
+\stelsetupin
+ [\c!criterium=\v!alles,
+ \c!verwijzing=0]
+
+\setupframedtexts
+ [setuptext]
+ [\c!kader=\v!aan]
+
+\readfile{setupb} {} {}
+
+\starttekst
+
+\startmakeup[\v!standaard]
+ \setupalign[\v!midden]
+ \definedfont[RegularBold at 60pt]\setstrut
+ \strut Con\TeX t \par
+ \vskip24pt
+ \definedfont[RegularBold at 45pt]\setstrut
+ \startinterface dutch \strut commando's \par \stopinterface
+ \startinterface english \strut commands \par \stopinterface
+ \startinterface german \strut befehle \par \stopinterface
+ \startinterface czech \strut prikaz\'y \par \stopinterface
+ \startinterface italian \strut comandi \par \stopinterface
+ \startinterface romanian \strut comenzile \par \stopinterface
+ \vfill
+ \strut \currentdate \par
+ \startinterface dutch \strut nederlands \par \stopinterface
+ \startinterface english \strut english \par \stopinterface
+ \startinterface german \strut deutsch \par \stopinterface
+ \startinterface czech \strut \^cesk\'y \par \stopinterface
+ \startinterface italian \strut italiano \par \stopinterface
+ \startinterface romanian \strut rom\^{a}n\u{a} \par \stopinterface
+\stopmakeup
+
+\protect
+
+\placesetup
+
+\stoptekst \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/extra/showunic.tex b/Master/texmf-dist/tex/context/extra/showunic.tex
new file mode 100644
index 00000000000..efdbf4d3a94
--- /dev/null
+++ b/Master/texmf-dist/tex/context/extra/showunic.tex
@@ -0,0 +1,130 @@
+% author : Hans Hagen / PRAGMA-ADE
+% version : 2005-06-22
+
+% todo: take antiqua (has everything)
+
+% \tracetypescriptstrue
+
+\usetypescriptfile[type-cbg]
+
+% \preloadtypescriptstrue (default at pragma)
+
+% this font does not work ... why
+%
+% \starttypescript [serif] [hebrew] [default]
+% \definefontsynonym [Serif] [hclassic]
+% \loadmapline[=][hclassic < hclassic.pfb]
+% \stoptypescript
+
+\setuppapersize
+ [S6][S6]
+
+\setupbodyfont
+ [10pt]
+
+\setuplayout
+ [backspace=12pt,
+ topspace=12pt,
+ width=middle,
+ height=middle,
+ header=0pt,
+ footer=0pt]
+
+\setupcolors
+ [state=start]
+
+\setupbackgrounds
+ [page]
+ [background=color,
+ backgroundcolor=darkgray]
+
+\definetypeface [main-latin] [rm] [serif] [latin-modern] [default][encoding=texnansi]
+\definetypeface [main-latin] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+
+\definetypeface [main-math] [rm] [serif] [latin-modern] [default][encoding=texnansi]
+\definetypeface [main-math] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+\definetypeface [main-math] [mm] [math] [latin-modern] [default][encoding=default]
+
+\definetypeface [main-eastern] [rm] [serif] [latin-modern] [default][encoding=qx]
+\definetypeface [main-eastern] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+
+\definetypeface [main-greek] [rm] [serif] [cbgreek] [default][encoding=default]
+\definetypeface [main-greek] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+
+\definetypeface [main-cyrillic] [rm] [serif] [computer-modern] [default][encoding=t2a]
+\definetypeface [main-cyrillic] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+
+% \definetypeface [main-hebrew] [rm] [serif] [hebrew] [default][encoding=default]
+% \definetypeface [main-hebrew] [tt] [mono] [latin-modern] [default][encoding=texnansi]
+
+% The \showunicodetable macro is defined in unic-run.tex.
+
+\starttext
+
+% latin: western / eastern
+
+\startstandardmakeup
+ \setupbodyfont[main-latin]
+ \centerbox{\scale[factor=max]{\showunicodetable{000}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-eastern]
+ \centerbox{\scale[factor=max]{\showunicodetable{001}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-latin]
+ \centerbox{\scale[factor=max]{\showunicodetable{002}}}
+\stopstandardmakeup
+
+% greek
+
+\startstandardmakeup
+ \setupbodyfont[main-greek]
+ \centerbox{\scale[factor=max]{\showunicodetable{003}}}
+\stopstandardmakeup
+
+% cyrillic
+
+\startstandardmakeup
+ \setupbodyfont[main-cyrillic]
+ \centerbox{\scale[factor=max]{\showunicodetable{004}}}
+\stopstandardmakeup
+
+% hebrew
+
+% \startstandardmakeup
+% \setupbodyfont[mainhebrew]
+% \centerbox{\scale[factor=max]{\showunicodetable{005}}}
+% \stopstandardmakeup
+
+% misc
+
+\startstandardmakeup
+ \setupbodyfont[main-latin]
+ \centerbox{\scale[factor=max]{\showunicodetable{030}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-latin]
+ \centerbox{\scale[factor=max]{\showunicodetable{031}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-latin]
+ \centerbox{\scale[factor=max]{\showunicodetable{032}}}
+\stopstandardmakeup
+
+% math
+
+\startstandardmakeup
+ \setupbodyfont[main-math]
+ \centerbox{\scale[factor=max]{\showunicodetable{033}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-math]
+ \centerbox{\scale[factor=max]{\showunicodetable{034}}}
+\stopstandardmakeup
+\startstandardmakeup
+ \setupbodyfont[main-math]
+ \centerbox{\scale[factor=max]{\showunicodetable{039}}}
+\stopstandardmakeup
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/foxet/fe-bryson.xml b/Master/texmf-dist/tex/context/foxet/fe-bryson.xml
new file mode 100644
index 00000000000..28646b65f84
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fe-bryson.xml
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<fe:sample xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng' origin='Bill Bryson'>
+Imagine trying to live in a world dominated by dihydrogen oxide, a
+compound that has no taste or smell and is so viable in its properties
+that it is generally benign but at other times swiftly lethal.
+Depending on its state, it can scald you or freeze you. In the
+presence of certain organic molecules it can form carbonic acids so
+nasty that they can strip the leaves from trees and eat the faces off
+statuary. In bulk, when agitated, it can strike with a fury that no
+human edifice could withstand. Even for those who have learned to live
+with it, it is often murderous substance. We call it water.
+</fe:sample>
diff --git a/Master/texmf-dist/tex/context/foxet/fe-ward.xml b/Master/texmf-dist/tex/context/foxet/fe-ward.xml
new file mode 100644
index 00000000000..05f7742659b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fe-ward.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+<fe:sample xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng' origin='Peter Ward'>
+The Earth, as a habitat for animal life, is in old age and
+has a fatal illness. Several, in fact. It would be happening
+whether humans had ever evolved or not. But our presence is
+like the effect of an old-age patient who smokes many packs
+of cigarettes per day - and we humans are the cigarettes.
+</fe:sample>
diff --git a/Master/texmf-dist/tex/context/foxet/fe-zapf.xml b/Master/texmf-dist/tex/context/foxet/fe-zapf.xml
new file mode 100644
index 00000000000..faf9a08319c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fe-zapf.xml
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+<fe:sample xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng' origin='Hermann Zapf'>
+Coming back to the use of typefaces in electronic
+publishing: many of the new typographers receive their
+knowledge and information about the rules of typography
+from books, from computer magazines or the instruction
+manuals which they get with the purchase of a PC or
+software. There is not so much basic instruction, as of
+now, as there was in the old days, showing the differences
+between good and bad typographic design. Many people are
+just fascinated by their PC's tricks, and think that a
+widely<fe:compound/>praised program, called up on the
+screen, will make everything automatic from now on.
+</fe:sample>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0101.fo b/Master/texmf-dist/tex/context/foxet/fo-0101.fo
new file mode 100644
index 00000000000..197c5834cab
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0101.fo
@@ -0,0 +1,17 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='default'>
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='default'>
+ <fo:flow flow-name='xsl-region-body'/>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0102.fo b/Master/texmf-dist/tex/context/foxet/fo-0102.fo
new file mode 100644
index 00000000000..9adcf917efa
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0102.fo
@@ -0,0 +1,25 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='default'>
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:declarations>
+ <fe:definecolor name='red' r='.6'/>
+ <fe:definecolor name='green' g='.6'/>
+ <fe:definecolor name='blue' b='.6'/>
+ <fe:definefontsynonym name='mono' file='lmtt10' encoding='texnansi'/>
+ </fo:declarations>
+
+ <fo:page-sequence master-reference='default'>
+ <fo:flow flow-name='xsl-region-body'/>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0103.fo b/Master/texmf-dist/tex/context/foxet/fo-0103.fo
new file mode 100644
index 00000000000..95d0d4769c2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0103.fo
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='default'>
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:declarations>
+ <fo:color-profile src="url('myprofile.xml')" color-profile-name="myprofile"/>
+ </fo:declarations>
+
+ <fo:page-sequence master-reference='default'>
+ <fo:flow flow-name='xsl-region-body'/>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0201.fo b/Master/texmf-dist/tex/context/foxet/fo-0201.fo
new file mode 100644
index 00000000000..f524cfd09a9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0201.fo
@@ -0,0 +1,22 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='1cm'>
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' line-height='18pt'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0301.fo b/Master/texmf-dist/tex/context/foxet/fo-0301.fo
new file mode 100644
index 00000000000..e0b8a6fc4f1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0301.fo
@@ -0,0 +1,56 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='1cm' fe:option='fit'>
+ <fo:region-body background-color='lightgray'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container space-after.optimum='12pt' fe:tracing='true'>
+ <fo:block>
+ before<fo:character character='@'/>after
+ </fo:block>
+ <fo:block>
+ before<fo:character character='@' vertical-align='super'/>after
+ before<fo:character character='@' vertical-align='sub' />after
+ before<fo:character character='@' vertical-align='-3pt' />after
+ before<fo:character character='@' vertical-align='+3pt' />after
+ </fo:block>
+ <fo:block>
+ before<fo:character character='@' glyph-orientation-horizontal='0deg' />after
+ before<fo:character character='@' glyph-orientation-horizontal='90deg' />after
+ before<fo:character character='@' glyph-orientation-horizontal='180deg'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='270deg'/>after
+ </fo:block>
+ <fo:block>
+ before<fo:character character='@' glyph-orientation-horizontal='0deg' vertical-align='super'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='90deg' vertical-align='super'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='180deg' vertical-align='super'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='270deg' vertical-align='super'/>after
+ </fo:block>
+ <fo:block>
+ before<fo:character character='@' glyph-orientation-horizontal='0deg' vertical-align='3pt'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='90deg' vertical-align='3pt'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='180deg' vertical-align='3pt'/>after
+ before<fo:character character='@' glyph-orientation-horizontal='270deg' vertical-align='3pt'/>after
+ </fo:block>
+ <fo:block>
+ before<fo:character character='@' vertical-align='super' text-altitude='10pt'/>after
+ before<fo:character character='@' vertical-align='super' text-altitude='20pt'/>after
+ before<fo:character character='@' vertical-align='100%' text-altitude='20pt'/>after
+ before<fo:character character='@' vertical-align='sub' text-depth='10pt' />after
+ before<fo:character character='@' vertical-align='sub' text-depth='20pt' />after
+ before<fo:character character='@' vertical-align='-100%' text-depth='20pt' />after
+ </fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0601.fo b/Master/texmf-dist/tex/context/foxet/fo-0601.fo
new file mode 100644
index 00000000000..1e291f27888
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0601.fo
@@ -0,0 +1,29 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm'
+ margin-bottom='2cm'
+ margin-left='3cm'
+ margin-right='4cm'>
+ <fo:region-before extent='1cm' background-color='red' />
+ <fo:region-after extent='1cm' background-color='green' />
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ <fo:region-body margin='2cm' background-color='gray' />
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0602.fo b/Master/texmf-dist/tex/context/foxet/fo-0602.fo
new file mode 100644
index 00000000000..36e8647675e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0602.fo
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm' margin-bottom='2cm' margin-left='3cm' margin-right='4cm'>
+ <fo:region-body margin='2cm' background-color='gray' />
+ <fo:region-before extent='1cm' background-color='red' precedence='true'/>
+ <fo:region-after extent='1cm' background-color='green' />
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0603.fo b/Master/texmf-dist/tex/context/foxet/fo-0603.fo
new file mode 100644
index 00000000000..268249d3e4f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0603.fo
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm' margin-bottom='2cm' margin-left='3cm' margin-right='4cm'>
+ <fo:region-body margin='2cm' background-color='gray' />
+ <fo:region-before extent='1cm' background-color='red' />
+ <fo:region-after extent='1cm' background-color='green' precedence='true'/>
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0604.fo b/Master/texmf-dist/tex/context/foxet/fo-0604.fo
new file mode 100644
index 00000000000..891198ee026
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0604.fo
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm' margin-bottom='2cm' margin-left='3cm' margin-right='4cm'>
+ <fo:region-body margin='2cm' background-color='gray' />
+ <fo:region-before extent='1cm' background-color='red' precedence='true'/>
+ <fo:region-after extent='1cm' background-color='green' precedence='true'/>
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0611.fo b/Master/texmf-dist/tex/context/foxet/fo-0611.fo
new file mode 100644
index 00000000000..70f495fb69d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0611.fo
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml' n='15'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0612.fo b/Master/texmf-dist/tex/context/foxet/fo-0612.fo
new file mode 100644
index 00000000000..4b3de694024
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0612.fo
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm' column-count='2' column-gap='24pt'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml' n='25'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0613.fo b/Master/texmf-dist/tex/context/foxet/fo-0613.fo
new file mode 100644
index 00000000000..f478a571da4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0613.fo
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='1.25cm'>
+ <fo:region-body margin='0cm' column-count='3' column-gap='12pt'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml' n='15'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0621.fo b/Master/texmf-dist/tex/context/foxet/fo-0621.fo
new file mode 100644
index 00000000000..554fcc4a098
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0621.fo
@@ -0,0 +1,106 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root
+ xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='any' margin='2cm'>
+ <fe:message>setting up simple page master 'any'</fe:message>
+ <fo:region-body background-color='darkgray' margin-top='2cm' margin-bottom='2cm' padding='.5cm'/>
+ <fo:region-before background-color='darkgray' extent='1cm'/>
+ <fo:region-after background-color='darkgray' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='first-page' margin='2cm'>
+ <fe:message>setting up simple page master 'first-page'</fe:message>
+ <fo:region-body background-color='red' margin='2cm' padding='.5cm'/>
+ <fo:region-before background-color='red' extent='1cm'/>
+ <fo:region-after background-color='red' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='left-page' margin='2cm'>
+ <fe:message>setting up simple page master 'left-page'</fe:message>
+ <fo:region-body background-color='green' margin='2cm' padding='.5cm'/>
+ <fo:region-before background-color='green' extent='1cm'/>
+ <fo:region-after background-color='green' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='right-page' margin='2cm'>
+ <fe:message>setting up simple page master 'right-page'</fe:message>
+ <fo:region-body background-color='blue' margin='2cm' padding='.5cm'/>
+ <fo:region-before background-color='blue' extent='1cm'/>
+ <fo:region-after background-color='blue' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='blank-page' margin='2cm'>
+ <fe:message>setting up simple page master 'blank-page'</fe:message>
+ <fo:region-body background-color='black' margin='2cm' padding='.5cm'/>
+ <fo:region-before background-color='black' extent='1cm'/>
+ <fo:region-after background-color='black' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='odd' margin='2cm'>
+ <fe:message>setting up simple page master 'odd'</fe:message>
+ <fo:region-body background-color='cyan' margin='2cm' padding='.5cm' margin-right='2cm'/>
+ <fo:region-before background-color='cyan' extent='1cm'/>
+ <fo:region-after background-color='cyan' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='even' margin='2cm'>
+ <fe:message>setting up simple page master 'even'</fe:message>
+ <fo:region-body background-color='magenta' margin='2cm' padding='.5cm' margin-left='2cm'/>
+ <fo:region-before background-color='magenta' extent='1cm'/>
+ <fo:region-after background-color='magenta' extent='1cm'/>
+ </fo:simple-page-master>
+ <fo:simple-page-master master-name='rest' margin='2cm'>
+ <fe:message>setting up simple page master 'rest'</fe:message>
+ <fo:region-body background-color='yellow' margin='2cm' padding='.5cm'/>
+ <fo:region-before background-color='yellow' extent='1cm'/>
+ <fo:region-after background-color='yellow' extent='1cm'/>
+ </fo:simple-page-master>
+
+ <fo:page-sequence-master master-name='demo'>
+ <fe:message>setting up page sequence master 'demo'</fe:message>
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference page-position='first' master-reference='first-page'/>
+ <fo:conditional-page-master-reference page-position='last' master-reference='blank-page'/>
+ <fo:conditional-page-master-reference page-position='any' master-reference='odd' odd-or-even='odd'/>
+ <fo:conditional-page-master-reference page-position='any' master-reference='even' odd-or-even='even'/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ <fo:page-sequence-master master-name='omed'>
+ <fe:message>setting up page sequence master 'omed'</fe:message>
+ <fo:repeatable-page-master-alternatives>
+ <fo:conditional-page-master-reference page-position='first' master-reference='first-page'/>
+ <fo:conditional-page-master-reference page-position='last' master-reference='blank-page'/>
+ <fo:conditional-page-master-reference page-position='any' master-reference='odd' odd-or-even='even'/>
+ <fo:conditional-page-master-reference page-position='any' master-reference='even' odd-or-even='odd'/>
+ </fo:repeatable-page-master-alternatives>
+ </fo:page-sequence-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='any'>
+ <fe:message>starting page sequence 'any'</fe:message>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml' n='15'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='demo' force-page-count='end-on-odd'>
+ <fe:message>starting page sequence 'demo'</fe:message>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-bryson.xml' n='30'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='omed' force-page-count='end-on-odd'>
+ <fe:message>starting page sequence 'omed'</fe:message>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-ward.xml' n='30'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0641.fo b/Master/texmf-dist/tex/context/foxet/fo-0641.fo
new file mode 100644
index 00000000000..9dbb90870e0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0641.fo
@@ -0,0 +1,25 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm' background-color='gray' fe:background-height='1cm' background-image="url('hacker.jpg')" clip='rect(1cm,1cm,1cm,1cm)' />
+ <fo:region-before extent='2cm' background-color='red' fe:background-height='1cm' background-image="url('hacker.jpg')" background-repeat='repeat-x' />
+ <fo:region-after extent='2cm' background-color='green' fe:background-height='2cm' background-image="url('hacker.jpg')" background-repeat='repeat-y' />
+ <fo:region-start extent='2cm' background-color='blue' fe:background-height='1cm' background-image="url('hacker.jpg')" background-repeat='no-repeat'/>
+ <fo:region-end extent='2cm' background-color='yellow' fe:background-height='2cm' background-image="url('hacker.jpg')" background-repeat='repeat' />
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0642.fo b/Master/texmf-dist/tex/context/foxet/fo-0642.fo
new file mode 100644
index 00000000000..8f646509cbe
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0642.fo
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'
+ background-color='gray'
+ background-image="url('hacker.jpg')"
+ background-position-horizontal='10%'
+ background-position-vertical='20%'
+ background-repeat='no-repeat'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0643.fo b/Master/texmf-dist/tex/context/foxet/fo-0643.fo
new file mode 100644
index 00000000000..9595d4438a8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0643.fo
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'
+ background-color='gray'
+ background-image="url('hacker.jpg')"
+ background-position-horizontal='center'
+ background-position-vertical='center'
+ background-repeat='no-repeat'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0644.fo b/Master/texmf-dist/tex/context/foxet/fo-0644.fo
new file mode 100644
index 00000000000..a408661e017
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0644.fo
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'
+ xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'
+ background-color='gray'
+ background-image="url('hacker.jpg')"
+ background-position-horizontal='3cm'
+ background-position-vertical='5cm'
+ background-repeat='no-repeat'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0650.fo b/Master/texmf-dist/tex/context/foxet/fo-0650.fo
new file mode 100644
index 00000000000..54fd7c1286e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0650.fo
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm' margin-bottom='2cm' margin-left='3cm' margin-right='4cm'>
+ <fo:region-body margin='.5cm' background-color='gray' fe:z-order='above' />
+ <fo:region-before extent='1cm' background-color='red' />
+ <fo:region-after extent='1cm' background-color='green' />
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0651.fo b/Master/texmf-dist/tex/context/foxet/fo-0651.fo
new file mode 100644
index 00000000000..319592ba8c0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0651.fo
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test'
+ margin-top='1cm' margin-bottom='2cm' margin-left='3cm' margin-right='4cm'>
+ <fo:region-body margin='.5cm' background-color='gray' fe:z-order='below' />
+ <fo:region-before extent='1cm' background-color='red' />
+ <fo:region-after extent='1cm' background-color='green' />
+ <fo:region-start extent='1cm' background-color='blue' />
+ <fo:region-end extent='1cm' background-color='yellow'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0701.fo b/Master/texmf-dist/tex/context/foxet/fo-0701.fo
new file mode 100644
index 00000000000..fabbe07228c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0701.fo
@@ -0,0 +1,39 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master margin='2cm' master-name='default'>
+ <fo:region-body background-color='darkgray'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='default' fe:tracing='true'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container absolute-position='absolute' height='2cm' width='3cm' left='1cm' top='1cm'>
+ <fo:block>Test 1</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' height='2cm' left='1cm' top='6cm'>
+ <fo:block>Test 2</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' height='2cm' left='1cm' top='11cm' right='4cm'>
+ <fo:block>Test 3</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' height='2cm' width='3cm' right='1cm' bottom='1cm'>
+ <fo:block>Test 4</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' width='3cm' right='1cm' bottom='6cm'>
+ <fo:block>Test 5</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' width='3cm' right='1cm' bottom='11cm' top='7cm'>
+ <fo:block>Test 6</fo:block>
+ </fo:block-container>
+ <fo:block-container absolute-position='absolute' left='20%' right='20%' top='20%' bottom='20%'>
+ <fo:block>Test 7</fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0801.fo b/Master/texmf-dist/tex/context/foxet/fo-0801.fo
new file mode 100644
index 00000000000..b18c4282f99
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0801.fo
@@ -0,0 +1,55 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123' format='n'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block id='format n'>digits: <fo:page-number/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123' format='a'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block id='format a'>characters: <fo:page-number/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123' format='i'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block id='format i'>romannumerals: <fo:page-number/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123' format='-[(n)]-'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block id='complex format'>complex format: <fo:page-number/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block id='no format'>no format: <fo:page-number/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container space-after='12pt' id='y'>
+ <fo:block>digits: <fo:page-number-citation ref-id='format n'/> </fo:block>
+ <fo:block>characters: <fo:page-number-citation ref-id='format a'/> </fo:block>
+ <fo:block>romannumerals: <fo:page-number-citation ref-id='format i'/> </fo:block>
+ <fo:block>complex format: <fo:page-number-citation ref-id='complex format'/> </fo:block>
+ <fo:block>no format: <fo:page-number-citation ref-id='no format'/> </fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0901.fo b/Master/texmf-dist/tex/context/foxet/fo-0901.fo
new file mode 100644
index 00000000000..05011269bec
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0901.fo
@@ -0,0 +1,58 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='.5cm'>
+ <fo:region-body margin='.5cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container font-style='italic'>
+ <fo:block font-family='Times'>times</fo:block>
+ <fo:block font-family='Helvetica'>helvetica</fo:block>
+ <fo:block font-family='Courier'>courier</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic'>
+ <fo:block font-family='Times'>times</fo:block>
+ <fo:block font-family='Helvetica'>helvetica</fo:block>
+ <fo:block font-family='Courier'>courier</fo:block>
+ </fo:block-container>
+ <fo:block-container font-weight='bold'>
+ <fo:block font-family='Times'>times</fo:block>
+ <fo:block font-family='Helvetica'>helvetica</fo:block>
+ <fo:block font-family='Courier'>courier</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic'>
+ <fo:block font-family='Times'>times</fo:block>
+ <fo:block font-family='Helvetica'>helvetica</fo:block>
+ <fo:block font-family='Courier'>courier</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic' font-weight='bold' font-size='large'>
+ <fo:block font-family='Times'>large</fo:block>
+ <fo:block font-family='Helvetica'>large</fo:block>
+ <fo:block font-family='Courier'>large</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic' font-weight='bold' font-size='x-large'>
+ <fo:block font-family='Times'>x-large</fo:block>
+ <fo:block font-family='Helvetica'>x-large</fo:block>
+ <fo:block font-family='Courier'>x-large</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic' font-weight='bold' font-size='xx-large'>
+ <fo:block font-family='Times'>xx-large</fo:block>
+ <fo:block font-family='Helvetica'>xx-large</fo:block>
+ <fo:block font-family='Courier'>xx-large</fo:block>
+ </fo:block-container>
+ <fo:block-container font-style='italic' font-weight='bold' font-size='350%'>
+ <fo:block font-family='Times'>times</fo:block>
+ <fo:block font-family='Helvetica'>helvetica</fo:block>
+ <fo:block font-family='Courier'>courier</fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-0902.fo b/Master/texmf-dist/tex/context/foxet/fo-0902.fo
new file mode 100644
index 00000000000..ebaa06651a8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-0902.fo
@@ -0,0 +1,33 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='.5cm'>
+ <fo:region-body margin='.5cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:block-container>
+ <fo:block-container line-height='40pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:block-container>
+ <fo:block-container line-height='180%'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:block-container>
+ <fo:block-container line-height='1.2'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:block-container>
+ <fo:block-container line-height='normal'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1001.fo b/Master/texmf-dist/tex/context/foxet/fo-1001.fo
new file mode 100644
index 00000000000..3733265fd09
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1001.fo
@@ -0,0 +1,63 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container fe:tracing='true'>
+ <fo:block>a test line d 10pt</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard'/>
+ <fo:block>a test line d 5pt</fo:block>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='discard'/>
+ <fo:block>a test line d 4pt</fo:block>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='discard'/>
+ <fo:block>a test line d d d</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='discard'/>
+ <fo:block>a test line r d d</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='4pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='discard'/>
+ <fo:block>a test line d r d</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='5pt' space-before.conditionality='discard'/>
+ <fo:block>a test line r r d</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='4pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='5pt' space-before.conditionality='discard'/>
+ <fo:block>a test line d d r</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='retain' />
+ <fo:block>a test line r d r</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='4pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='retain' />
+ <fo:block>a test line d r r</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard'/>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='5pt' space-before.conditionality='retain' />
+ <fo:block>a test line r r r</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='4pt' space-before.conditionality='retain' />
+ <fo:block space-before.optimum='5pt' space-before.conditionality='retain' />
+ <fo:block>a test line d r r force</fo:block>
+ <fo:block space-before.optimum='10pt' space-before.conditionality='discard' space-before.precedence='force'/>
+ <fo:block space-before.optimum='4pt' space-before.conditionality='retain' space-before.precedence='force'/>
+ <fo:block space-before.optimum='5pt' space-before.conditionality='retain' space-before.precedence='force'/>
+ <fo:block>a test line</fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1002.fo b/Master/texmf-dist/tex/context/foxet/fo-1002.fo
new file mode 100644
index 00000000000..cc0ea810010
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1002.fo
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block start-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fo:block start-indent='1cm' end-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ <fo:block start-indent='1cm' end-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fo:block end-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1003.fo b/Master/texmf-dist/tex/context/foxet/fo-1003.fo
new file mode 100644
index 00000000000..4c416e02dff
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1003.fo
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block start-indent='1cm' text-indent='3cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fo:block start-indent='1cm' end-indent='1cm' text-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ <fo:block start-indent='1cm' end-indent='1cm' text-indent='1cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ <fo:block end-indent='1cm' text-indent='3cm'>
+ <fe:include url='fe-zapf.xml'/>
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1004.fo b/Master/texmf-dist/tex/context/foxet/fo-1004.fo
new file mode 100644
index 00000000000..1c057edd7ec
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1004.fo
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='2cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' initial-page-number='123'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block-container space-before.optimum='12pt'>
+ <fo:block>
+ before<fo:inline space-start='10pt' >inbetween</fo:inline>after
+ </fo:block>
+ <fo:block>
+ before<fo:inline space-end='10pt'>inbetween</fo:inline>after
+ </fo:block>
+ <fo:block>
+ before<fo:inline space-start='10pt' space-end='10pt'>inbetween</fo:inline>after
+ </fo:block>
+ <fo:block>
+ before<fo:inline space-start='-10pt' space-end='-10pt'>inbetween</fo:inline>after
+ </fo:block>
+ <fo:block>
+ before<fo:inline space-start='250%' space-end='250%'>inbetween</fo:inline>after
+ </fo:block>
+ </fo:block-container>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1101.fo b/Master/texmf-dist/tex/context/foxet/fo-1101.fo
new file mode 100644
index 00000000000..f6953d522d8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1101.fo
@@ -0,0 +1,63 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='1cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' fe:tracing='true'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ <fo:list-block
+ space-before.optimum='12pt'
+ space-after.optimum='12pt'>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt'>
+ <fo:block>[b]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body end-indent='0pt'>
+ <fo:list-block>
+ <fo:list-item>
+ <fo:list-item-label start-indent='40pt'>
+ <fo:block>[bb]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ <fo:list-block
+ start-indent='1cm'
+ end-indent='1cm'
+ space-before.optimum='12pt'
+ space-after.optimum='12pt'>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1102.fo b/Master/texmf-dist/tex/context/foxet/fo-1102.fo
new file mode 100644
index 00000000000..f8d5a9df3a8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1102.fo
@@ -0,0 +1,128 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='1cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' fe:tracing='true' fe:testgrid='true'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:list-block
+ space-before.optimum='12pt'
+ space-after.optimum='12pt'
+ provisional-distance-between-starts='2cm'
+ provisional-label-separation='.5cm'>
+ <!-- fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='50pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='50pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='50pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='50pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='50pt' end-indent='50pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='50pt' end-indent='50pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='50pt' end-indent='50pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='50pt' end-indent='50pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10%' end-indent='75%'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='35%' end-indent='10%'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item -->
+ <fo:list-item>
+ <fo:list-item-label start-indent='1cm' end-indent='10cm'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='4cm' end-indent='1cm'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='1cm' end-indent='label-end()'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='5cm' end-indent='1cm'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='1cm' end-indent='10cm'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='body-start()' end-indent='2cm'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='1cm' end-indent='label-end()'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='body-start()' end-indent='3cm'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1103.fo b/Master/texmf-dist/tex/context/foxet/fo-1103.fo
new file mode 100644
index 00000000000..245f3ff0e92
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1103.fo
@@ -0,0 +1,85 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='1cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' fe:tracing='true'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:list-block space-before.optimum='12pt' space-after.optimum='12pt'
+ start-indent='10pt' end-indent='10pt'>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='10pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='10pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='10pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt' end-indent='10pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='0pt' end-indent='0pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='0pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='10pt' end-indent='10pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ <fo:list-item>
+ <fo:list-item-label start-indent='10pt' end-indent='0pt'>
+ <fo:block>[a]</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body start-indent='10pt' end-indent='10pt'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1104.fo b/Master/texmf-dist/tex/context/foxet/fo-1104.fo
new file mode 100644
index 00000000000..6867e772f61
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1104.fo
@@ -0,0 +1,28 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='1cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:list-block>
+ <fo:list-item>
+ <fo:list-item-label>
+ <fo:block text-align="center">X</fo:block>
+ </fo:list-item-label>
+ <fo:list-item-body>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:list-item-body>
+ </fo:list-item>
+ </fo:list-block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/foxet/fo-1201.fo b/Master/texmf-dist/tex/context/foxet/fo-1201.fo
new file mode 100644
index 00000000000..364dcb21477
--- /dev/null
+++ b/Master/texmf-dist/tex/context/foxet/fo-1201.fo
@@ -0,0 +1,40 @@
+<?xml version='1.0'?>
+
+<!-- foxet test file - Hans Hagen - PRAGMA ADE - www.pragma-ade.com -->
+
+<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format' xmlns:fe='http://www.pragma-ade.com/schemas/foxet.rng'>
+
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name='test' margin='2cm'>
+ <fo:region-body margin='1cm'/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+
+ <fo:page-sequence master-reference='test' fe:tracing='true'>
+ <fo:flow flow-name='xsl-region-body'>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ <fo:block>
+ test
+ <fo:inline position='static' font-size='600%'>S</fo:inline>
+ <fo:inline position='static' font-size='400%'>S</fo:inline>
+ <fo:inline position='static' font-size='500%'>S</fo:inline>
+ <fo:inline position='fixed' right='2cm' bottom='2cm' font-size='600%'>F</fo:inline>
+ <fo:inline position='fixed' right='2cm' top='2cm' font-size='400%'>F</fo:inline>
+ <fo:inline position='fixed' left='2cm' bottom='2cm' font-size='500%'>F</fo:inline>
+ <fo:inline position='absolute' right='1cm' bottom='1cm' font-size='600%'>A</fo:inline>
+ <fo:inline position='absolute' right='1cm' top='1cm' font-size='400%'>A</fo:inline>
+ <fo:inline position='absolute' left='1cm' bottom='1cm' font-size='500%'>A</fo:inline>
+ <fo:inline position='relative' right='2mm' bottom='2mm' font-size='600%'>R</fo:inline>
+ <fo:inline position='relative' right='2mm' top='2mm' font-size='400%'>R</fo:inline>
+ <fo:inline position='relative' left='2mm' bottom='2mm' font-size='500%'>R</fo:inline>
+ test
+ <fo:inline position='static' font-size='600%'>Q</fo:inline>
+ <fo:inline position='relative' right='2mm' bottom='2mm' font-size='600%'>Q</fo:inline>
+ <fo:inline position='relative' right='2mm' top='2mm' font-size='400%'>Q</fo:inline>
+ <fo:inline position='relative' left='2mm' bottom='2mm' font-size='500%'>Q</fo:inline>
+ </fo:block>
+ <fo:block><fe:include url='fe-zapf.xml'/></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+
+</fo:root>
diff --git a/Master/texmf-dist/tex/context/interface/cont-cz.xml b/Master/texmf-dist/tex/context/interface/cont-cz.xml
new file mode 100644
index 00000000000..c131ba7ca10
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-cz.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="instalacejazyka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="mezerovani">
+ <cd:constant type="zhustene"/>
+ <cd:constant type="siroky"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="vetavlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vetavpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="podvetavlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="podvetavpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citovatvlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citovatvpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citacevlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citacevpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="implicitni">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavjazyk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="instalacejazyka"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="jazyk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="hlavnijazyk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="prelozit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="uzijkodovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="uzijspeciality"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujvystup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavvystup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujprostredizakladnihofontu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicitni"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="male">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="velky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavprostredizakladnihofontu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="nastavzakladnifont"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavzakladnifont"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="ukazpostredizakladnihofontu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="nastavzakladnifont"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujzakladnifont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicitni"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="ukazzakladnifont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="nastavzakladnifont"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="nastavzakladnifont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="pravidelne"/>
+ <cd:constant type="antikva"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="podpora"/>
+ <cd:constant type="bezserifu"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="strojopis"/>
+ <cd:constant type="rukopisne"/>
+ <cd:constant type="kaligraficke"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="prepninazakladnifont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="globalne"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="ano" default="yes"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavbarvu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavbarvy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="globalne"/>
+ <cd:constant type="lokalne"/>
+ </cd:parameter>
+ <cd:parameter name="konverze">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="vzdy"/>
+ </cd:parameter>
+ <cd:parameter name="redukce">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="barvatextu">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="vse"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujbarvu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="barva"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="barva"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="sedabarva"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="ukazbarvu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujpaletu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavpaletu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujskupinubarev"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="seda"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="ukazpaletu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontalne"/>
+ <cd:constant type="vertikalne"/>
+ <cd:constant type="jmeno"/>
+ <cd:constant type="hodnota"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="ukazskupinubarev"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontalne"/>
+ <cd:constant type="vertikalne"/>
+ <cd:constant type="jmeno"/>
+ <cd:constant type="hodnota"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="porovnejpaletu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="porovnejskupinubarev"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="ukazupravu"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definetype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavtype"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="nastavtype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="mezera">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="sklonene"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="opis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="pis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definujopis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="soubor"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavopis"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="nastavopis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="soubor"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="mezera">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="sklonene"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="prikazy"/>
+ <cd:constant type="barevne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="iprikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vprikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cprikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="sudamarginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lichyokraj">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prazdny">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="pulradku"/>
+ <cd:constant type="radek"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="mezera">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paleta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="radky">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="hyphenated"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="opissoubor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="nastavpoznamkypodcarou"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ </cd:parameter>
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="stranka"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="sloupce"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="linka">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostsloupcu">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostokraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ciselnyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textovyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="velmistriktni"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="styltextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barvatextu">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interakce">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="oramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="nastavdefinicipoznamekpodcarou"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definujpopis"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="poznamkapodcarou"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="footnotetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="poznamka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="umistilokalnipoznamkypodcarou"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavpoznamkypodcarou"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="umistipoznamkypodcarou"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavpoznamkypodcarou"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nastavpodtrzeni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="tloustkalinky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetspodku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetvrsku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barvalinky">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="podtrzeno"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="podtrzeni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nadtrzeno"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nadtrzeni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="preskrtnuto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="preskrtnuti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="rimskecislice"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Rimskecislice"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="cisla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="znak"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Znak"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="znaky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Znaky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mesic"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="MESIC"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="vsedniden"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="VSEDNIDEN"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nastavkapitalky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="titul">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="SLOVO"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="SLOVA"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Slovo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Slova"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="roztazene"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definujobrazeksymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="externiobraz"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="symbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavsadusymbolu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="uzijsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="ukazsadusymbolu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="definujkonverzi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="konvertujcislo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="nastavtexthlavicky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="nastavtextpopisku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="texthlavicky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="textpopisku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavmarginalnilinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="uroven">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="tloustkalinky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="marginalnilinka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="marginalnilinka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavsirkucary"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavoramovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vyska">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="fixne"/>
+ <cd:constant type="lokalne"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="zadny"/>
+ <cd:constant type="prekryv"/>
+ <cd:constant type="implicitni"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="podlehloubky"/>
+ <cd:constant type="visici"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nivy"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="spodek"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="zadny"/>
+ <cd:constant type="prazdne"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="globalne"/>
+ <cd:constant type="lokalne"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="ne"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="nivy"/>
+ </cd:parameter>
+ <cd:parameter name="spodek">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vrsek">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ramecek">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="prekryv"/>
+ </cd:parameter>
+ <cd:parameter name="rameceknahore">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="ramecekdole">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="ramecekvlevo">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="ramecekvpravo">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="offsetramecku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hloubkaramecku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rohramecku">
+ <cd:constant type="zaobleny"/>
+ <cd:constant type="pravouhly"/>
+ </cd:parameter>
+ <cd:parameter name="polomerramecku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barvaramecku">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pozadi">
+ <cd:constant type="rastr"/>
+ <cd:constant type="barevne"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="popredi"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="rastrpozadi">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="barvapozadi">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="offsetpozadi">
+ <cd:constant type="ramecek"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hloubkapozadi">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rohpozadi">
+ <cd:constant type="zaobleny"/>
+ <cd:constant type="pravouhly"/>
+ </cd:parameter>
+ <cd:parameter name="polomerpozadi">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="roh">
+ <cd:constant type="zaobleny"/>
+ <cd:constant type="pravouhly"/>
+ </cd:parameter>
+ <cd:parameter name="polomer">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prazdne">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="oramovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="zaramovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="tenkelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="nastavtenkelinky"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavtenkelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="meziradkovamezera">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="barvapozadi">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="tloustkalinky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pozadi">
+ <cd:constant type="barevne"/>
+ </cd:parameter>
+ <cd:parameter name="barvapozadi">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="vlasovalinka"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="tenkalinka"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definujoramovanytext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovanetexty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definujoramovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovanetexty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavoramovanetexty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vnitrni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="korekceradku">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="korekcehloubky">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="standardni"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="oramovanytext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="zadny"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovanetexty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="oramovanytext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavoramovanetexty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="pozadi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="pozadi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavpozadi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="levyoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravyoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetvrsku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetspodku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="vyplnovelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavvyplnovelinky"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="vyplnenytext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavvyplnovelinky"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavvyplnovelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="meziradkovamezera">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="vyplnovyradek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavvyplnoveradky"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavvyplnoveradky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavtextovelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="naokraji"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barvalinky">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textovalinka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textovalinka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="cernalinka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavcernelinky"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="cernelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavcernelinky"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavcernelinky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definujprekryv"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="uzijmodul"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="reset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="zadnytest"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="nastavsystem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rozliseni">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="soubor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="adresar">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="nahodne">
+ <cd:constant type="normalni"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nizky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="vysoky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="nivy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="ukazramecek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zarovnanovlevo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zarovnanovpravo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zarovnanonastred"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="slovovpravo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="naokraj"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="nadruhyokraj"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="vlevo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="vpravo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="ininner"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inouter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="sloupec"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="ukazpodpery"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="ukaznastaveni"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="ukazvzhled"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="marginalnitext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="nizko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavmarginalniblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="naokraji"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="vrsek">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="spodek">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="tref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="pref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="oref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nekde"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nastrane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="odkaznatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="odkaznastranu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="odkaz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="uzijodkazy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definujodkaz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definujformatodkazu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="popisek">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="jdidolu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="bilemisto"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zadnebilemisto"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="mezera"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="tvrdemezery"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="emptylines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zadnamezera"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zhustene"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="nastavpopisy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="standardni"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="semknuto"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="visici"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ </cd:parameter>
+ <cd:parameter name="zaveseni">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="odsazovani">
+ <cd:constant type="nikdy"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="vzdy"/>
+ <cd:constant type="prvni"/>
+ <cd:constant type="dalsi"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="nastavvycty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="definujpopis"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definujvycet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavvycty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="vycet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="vycet"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definujpopis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavpopisy"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="popis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="popis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="nastavodsazovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vzor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definujodsazovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavodsazovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definujpopisek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="naokraji"/>
+ <cd:constant type="dotextu"/>
+ </cd:parameter>
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="dobloku">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barvahlavicky">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="nastavsloupce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nvrsek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linka">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="velmistriktni"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="velmitolerantni"/>
+ <cd:constant type="natahnout"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rovnovaha">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prazdny">
+ <cd:constant type="fixne"/>
+ <cd:constant type="pulradku"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="male"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="pozadi"/>
+ </cd:parameter>
+ <cd:parameter name="smer">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavsloupce"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definujtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="zahlavi"/>
+ <cd:constant type="upati"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavzahlavi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="normalni"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="zadneznaceni"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylvlevo">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylvpravo">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirkavlevo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirkavpravo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavupati"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavhorejsek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavspodek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavzahlavi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="zadnezahlaviaupati"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="zadnehorniadolniradky"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavtextyzahlavi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavtextyupati"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavtexttexty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavhornitexty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nastavdolnitexty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="hrana"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="cislostranky"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definujznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="propojeneznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="rozpojeneznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="resetznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="nastavznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="znaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="ziskejznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="prvni"/>
+ <cd:constant type="posledni"/>
+ <cd:constant type="predchozi"/>
+ <cd:constant type="obe"/>
+ <cd:constant type="vse"/>
+ <cd:constant type="aktualni"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="zadneznaceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavvzhled"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ <cd:parameter name="zpetnamezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="svrchnimezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="levyokraj">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravyokraj">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zahlavi">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="upati">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vrsek">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spodek">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="levahrana">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravahrana">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostzahlavi">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostupati">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostvrsku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostspodku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostlevehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostpravehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostlevehrany">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostpravehrany">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsethlavicky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="znaceni">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ <cd:constant type="barevne"/>
+ <cd:constant type="rastr"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="jednostranne"/>
+ <cd:constant type="dvoustranny"/>
+ </cd:parameter>
+ <cd:parameter name="meritko">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="radky">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sloupce">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostsloupcu">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mrizka">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="bottomspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirkatextu">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="papir">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="prizpusobvzhled"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="radky">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="ukazmrizku"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="umistinamrizku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="premistinamrizku"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="premistinamrizku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="obe"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="stranka"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="standardni" default="yes"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="podlehloubky"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="projekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="prostredi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="produkt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="komponenta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="zadnedalsisoubory"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="nastavmeziradkovoumezeru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="male" default="yes"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="radek">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vrsek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="spodek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislovanistran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="jednostranne"/>
+ <cd:constant type="dvoustranny"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="zahlavi"/>
+ <cd:constant type="upati"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="textovahrana"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovaccisla">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovactextu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nastavzuzeni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stredni">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="definuj"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="uzijprikazy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definujstartstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prikazy">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="nastavnadpisy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cislooddilu">
+ <cd:constant type="ano"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="normalni"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="nastred"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="odstavec"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="siroky"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnejtitul">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="velmistriktni"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="velmitolerantni"/>
+ <cd:constant type="natahnout"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavpopisky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minsirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ </cd:parameter>
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavpopisek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavpopisky"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavplvouciobjekty"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mezerapred">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="mezeraza">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="bocnimezerapred">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="bocnimezeraza">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="nvrsek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nspodek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nradky">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="implicitni">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostlevehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostpravehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="normalni"/>
+ <cd:constant type="radek"/>
+ </cd:parameter>
+ <cd:parameter name="cislovani">
+ <cd:constant type="ano"/>
+ <cd:constant type="nocheck"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavdeleniplvoucichobjektu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ </cd:parameter>
+ <cd:parameter name="radky">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="rozdelplvouciobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavdeleniplvoucichobjektu"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="nastavumisteniprotejsku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavdelitko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="znak">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="nastavumistovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="prekryv"/>
+ </cd:parameter>
+ <cd:parameter name="jednotka">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="meritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="xkrok">
+ <cd:constant type="absolutni"/>
+ <cd:constant type="relativni"/>
+ </cd:parameter>
+ <cd:parameter name="ykrok">
+ <cd:constant type="absolutni"/>
+ <cd:constant type="relativni"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="mrizka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xkrok">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ykrok">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="meritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="jednotka">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="strana"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="ano" default="yes"/>
+ <cd:constant type="zlom"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="nastaveni"/>
+ <cd:constant type="vysokapriorita"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="zablokovat"/>
+ <cd:constant type="posledni"/>
+ <cd:constant type="ctyrnasobny"/>
+ <cd:constant type="sude"/>
+ <cd:constant type="liche"/>
+ <cd:constant type="prazdny"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nastavodkazovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interakce">
+ <cd:constant type="popisek"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="vse"/>
+ <cd:constant type="symbol"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="konverzesouboru">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="stranka"/>
+ </cd:parameter>
+ <cd:parameter name="globalne">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nastavurl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="urlalternativa">
+ <cd:constant type="zadny"/>
+ <cd:constant type="obe"/>
+ <cd:constant type="pred"/>
+ <cd:constant type="po"/>
+ </cd:parameter>
+ <cd:parameter name="prostorurl">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="zapisdoseznamuodkazu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="placereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definujseznamodkazu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavseznamodkazu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="nastavseznamodkazu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokalne"/>
+ <cd:constant type="predchozi"/>
+ <cd:constant type="vse"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="zapisdoseznamu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="zapismeziseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="zadnyseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="listsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="umistiseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stanovcharakteristickuseznamu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="umistikombinovanyseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavkombinovanyseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definujseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="nastavseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="zadny"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="propojeni">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokalne"/>
+ <cd:constant type="predchozi"/>
+ <cd:constant type="aktualni"/>
+ <cd:constant type="vse"/>
+ </cd:parameter>
+ <cd:parameter name="hranicestranky">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylcisla">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="styltextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylstranky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="ciselnyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textovyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strankovyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interakce">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="cislostranky"/>
+ <cd:constant type="vse"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="popisek">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="cislostranky">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="cislonadpisu">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnejtitul">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="predel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="zadny"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="maxsirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="oramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definujkombinovanyseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavkombinovanyseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="nastavkombinovanyseznam"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="uroven">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="aktualni"/>
+ </cd:parameter>
+ <cd:inherit name="nastavseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavkombinovanyseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavkombinovanyseznam"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="levyokraj">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravyokraj">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="mezerapred">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="publikace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavpublikace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="apa"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:inherit name="nastavvycty"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="nastavradky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="odsazovani">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="sude"/>
+ <cd:constant type="liche"/>
+ </cd:parameter>
+ <cd:parameter name="mezera">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislovaniodstavcu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="radek"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislovaniradku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="krok">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="dotextu"/>
+ <cd:constant type="naokraji"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="odkazujici">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="pokracovat"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="nejakyradek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="vradku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="nastavmarginalie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="obe"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="uvnitr"/>
+ <cd:constant type="vnejsi"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="ano"/>
+ </cd:parameter>
+ <cd:parameter name="radek">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oddelovac">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislostrany"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cislo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="drzet"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="nastavpodcislostrany"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="zpusob">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="nastavpreskok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normalni" default="yes"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="male"/>
+ <cd:constant type="fixne"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="definujpreskok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="nastavpreskok"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definujvelikostpapiru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="meritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="papir">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="svrchnimezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zpetnamezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="max"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="nastavvelikostpapiru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="nasirku"/>
+ <cd:constant type="zrcadleno"/>
+ <cd:constant type="otoceno"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="nasirku"/>
+ <cd:constant type="zrcadleno"/>
+ <cd:constant type="otoceno"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="nastavusporadani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="zablokovat"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="zrcadleno"/>
+ <cd:constant type="otoceno"/>
+ <cd:constant type="dvoustranny"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="ukazvytisk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="nastavvelikostpapiru"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="nastavvelikostpapiru"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavvzhled"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definujlogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="zahlavi"/>
+ <cd:constant type="upati"/>
+ <cd:constant type="spodek"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="zadny"/>
+ <cd:constant type="stranka"/>
+ <cd:constant type="levahrana"/>
+ <cd:constant type="levyokraj"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="pravyokraj"/>
+ <cd:constant type="pravahrana"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="umistiloga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="nastavbilamista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="zadny" default="yes"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="fixne"/>
+ <cd:constant type="fixuj"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="nastavodsazovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="zadny" default="yes"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="dalsi"/>
+ <cd:constant type="prvni"/>
+ <cd:constant type="normalni"/>
+ <cd:constant type="liche"/>
+ <cd:constant type="sude"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definujbloksekce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavbloksekce"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="nastavbloksekce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="ano"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definujsekci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="nastavsekci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="konverze">
+ <cd:constant type="cisla"/>
+ <cd:constant type="pismena"/>
+ <cd:constant type="Pismena"/>
+ <cd:constant type="rimskecislice"/>
+ <cd:constant type="Rimskecislice"/>
+ </cd:parameter>
+ <cd:parameter name="predchozicislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="nastavnadpis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="styltextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylcisla">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="barvatextu">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="barvacisla">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="cislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="vlastnicislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="ano"/>
+ </cd:parameter>
+ <cd:parameter name="pokracovat">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="zahlavi">
+ <cd:constant type="zadny"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="zadny"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="upati">
+ <cd:constant type="zadny"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="normalni"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="nastred"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zaveseni">
+ <cd:constant type="zadny"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="radek"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="ciselnyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textovyprikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="umistihlavicku">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="prazdne"/>
+ </cd:parameter>
+ <cd:parameter name="zvysujicicislo">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnumber">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="soubor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="textmarginalie">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:inherit name="nastavnadpisy"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="nastavcislonadpisu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="cislonadpisu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stanovcislonadpisu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="aktualnicislonadpisu"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="sekce"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definujnadpis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="setupitemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="kazdy"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standardni" default="yes"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="semknuto"/>
+ <cd:constant type="zhustene"/>
+ <cd:constant type="rozbalene"/>
+ <cd:constant type="predel"/>
+ <cd:constant type="spojeno"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="autouvod"/>
+ <cd:constant type="uvolnene"/>
+ <cd:constant type="opakovat"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="dotextu"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="marginalie">
+ <cd:constant type="ne"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="levyokraj">
+ <cd:constant type="ne"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravyokraj">
+ <cd:constant type="ne"/>
+ <cd:constant type="standardni"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="polozky">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="predhlavickou">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pohlavicce">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylsnacky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylsymboly">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="predel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:parameter name="odsadpristi">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="pokracovat"/>
+ <cd:constant type="standardni" default="yes"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="semknuto"/>
+ <cd:constant type="zhustene"/>
+ <cd:constant type="predel"/>
+ <cd:constant type="spojeno"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="uvod"/>
+ <cd:constant type="sloupce"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="polozka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="spodek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="pol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="nadpis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="okr"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="definujrejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="nastavrejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rovnovaha">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylstranky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="styltextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indikator">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="propojeni">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokalne"/>
+ <cd:constant type="vse"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="interakce">
+ <cd:constant type="cislostranky"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="odkazujici">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="maxsirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="neznamyodkaz">
+ <cd:constant type="prazdne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="zapisdorejstriku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="propojenyrejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="umistirejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavrejstrik"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="nastavrejstrik"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="rejstrik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="nastavrejstrik"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definujsynonyma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="nastavsynonyma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="styltextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stylsynonyma">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="semknuto"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="vse"/>
+ <cd:constant type="uzito"/>
+ </cd:parameter>
+ <cd:parameter name="konverze">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definujtrideni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="nastavtrideni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="vse"/>
+ <cd:constant type="uzito"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expanzen">
+ <cd:constant type="ano"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definujupravu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavupravu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavupravu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="nastavupravu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="prikazy">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="oboustranne">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="prazdne"/>
+ </cd:parameter>
+ <cd:parameter name="statuszahlavi">
+ <cd:constant type="normalni"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="statusupati">
+ <cd:constant type="normalni"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="statustextu">
+ <cd:constant type="normalni"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="zadneznaceni"/>
+ </cd:parameter>
+ <cd:parameter name="statusvrsku">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="statusspodku">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="jmeno"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="verze"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="finalni" default="yes"/>
+ <cd:constant type="koncept"/>
+ <cd:constant type="docasne"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="aktualnidatum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="datum"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="datum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="odkaznadatum"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="odsazovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="nikdy" default="yes"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="ano"/>
+ <cd:constant type="vzdy"/>
+ <cd:constant type="prvni"/>
+ <cd:constant type="dalsi"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zadneodsazovani"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="preskoc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke" default="yes"/>
+ <cd:constant type="zadnabila"/>
+ <cd:constant type="zpet"/>
+ <cd:constant type="bily"/>
+ <cd:constant type="zablokovat"/>
+ <cd:constant type="sila"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="pulradku"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="fixne"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="zadny"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zhustene"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="prazdny"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="korekcebilehomista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred" default="yes"/>
+ <cd:constant type="vpravo"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nastavzarovnani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="sirka"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="uvnitr"/>
+ <cd:constant type="vnejsi"/>
+ <cd:constant type="siroce"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="vyska"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="visici"/>
+ <cd:constant type="nothanging"/>
+ <cd:constant type="hyphenated"/>
+ <cd:constant type="nothyphenated"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="nastavzarovnani"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="nastavradkovani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="siroky"/>
+ <cd:constant type="zhustene"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nastavtoleranci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontalne"/>
+ <cd:constant type="vertikalne"/>
+ <cd:constant type="natahnout"/>
+ <cd:constant type="mezera"/>
+ <cd:constant type="velmistriktni" default="yes"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="velmitolerantni"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="typstrany"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="zpracujstranu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="ano" default="yes"/>
+ <cd:constant type="ne"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="parovastrana"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="volba">
+ <cd:constant type="dvoustranny"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="pozice"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="nastavrastr"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metoda">
+ <cd:constant type="tecka"/>
+ <cd:constant type="linka"/>
+ <cd:constant type="externi"/>
+ </cd:parameter>
+ <cd:parameter name="rozliseni">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rastr">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="nastavpozadi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="zahlavi"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="upati"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="stranka"/>
+ <cd:constant type="papir"/>
+ <cd:constant type="levastranka"/>
+ <cd:constant type="pravastranka"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="levahrana"/>
+ <cd:constant type="levyokraj"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="pravyokraj"/>
+ <cd:constant type="pravahrana"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="ziskejbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="typebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definujbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="nastavbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="odstavec">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definujblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="zadnedalsibloky"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="schovejbloky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="zachovejbloky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="vse"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="uzijbloky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="zpracujbloky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="bypassblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forceblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="vyberbloky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="kriterium">
+ <cd:constant type="vse"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="nastavblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vnitrni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="soubor">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="rovnice"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="matematika"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="umistirovnici"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="umistipodrovnici"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="zde" default="yes"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="levyokraj"/>
+ <cd:constant type="pravyokraj"/>
+ <cd:constant type="levahrana"/>
+ <cd:constant type="pravahrana"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="uvnitr"/>
+ <cd:constant type="vnejsi"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="stranka"/>
+ <cd:constant type="naproti"/>
+ <cd:constant type="vzdy"/>
+ <cd:constant type="sila"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="radek"/>
+ <cd:constant type="vyska"/>
+ <cd:constant type="podlehloubky"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ramecek">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definujplvouciobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="nastavplvouciobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxvyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxsirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minsirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="implicitni">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hranicestranky">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostlevehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenostpravehookraje">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="nizko"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="vysoko"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="odkaz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="vyberpapir"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rodina">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="dvoustrannypapir"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="zlomek"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="tecky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="polozky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavpolozky"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavpolozky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="naokraji"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="neznamy"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="marginalie"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred" default="yes"/>
+ <cd:constant type="vpravo"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citovat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavcitaci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginalie"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="scitani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni" default="yes"/>
+ <cd:constant type="velke"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="definujodstavce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linka">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vnitrni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="velmistriktni"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="velmitolerantni"/>
+ <cd:constant type="natahnout"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="odstavec"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="odstavec"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavodstavce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="kazdy"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="sirka"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="velmistriktni"/>
+ <cd:constant type="striktni"/>
+ <cd:constant type="tolerantni"/>
+ <cd:constant type="velmitolerantni"/>
+ <cd:constant type="natahnout"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vnitrni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linka">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavtab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vzor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stylhlavicky">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="popisky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definujtabelaci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabelator"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="uzijexterniobraz"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="nastavtabelaci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="jednotka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="odsazovani">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vnitrni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="barvalinky">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:parameter name="tloustkalinky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="prazdny"/>
+ <cd:constant type="mrizka"/>
+ <cd:constant type="podlehloubky"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="linka">
+ <cd:constant type="normalni"/>
+ <cd:constant type="radek"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="nastavtabulky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="tloustkalinky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barvalinky">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:parameter name="prikazy">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:parameter name="pozadi">
+ <cd:constant type="rastr"/>
+ <cd:constant type="barevne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="rastrpozadi">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="barvapozadi">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definujsablonutabulky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="uzijexternisoubory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:parameter name="soubor">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="uzijexternisoubor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="uzijexterniobraz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="meritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="max"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ </cd:parameter>
+ <cd:parameter name="sfaktor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="vfaktor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ramecek">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="prednastaveni">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="obrazovka">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="nahled">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="opakovat">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="objekt">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="typ">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="metoda">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="externiobraz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="uzijexterniobraz"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="nastavexterniobrazy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="volba">
+ <cd:constant type="ramecek"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="objekt">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="ramecky">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="adresar">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="lokalne"/>
+ <cd:constant type="globalne"/>
+ <cd:constant type="implicitni"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="maxsirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxvyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="konverze">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="ukazexterniobrazy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="uzijexternizvuk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="dve"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="fakt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="otocit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavotoceni"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavotoceni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotace">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="normalni"/>
+ <cd:constant type="vysoko"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="siroky"/>
+ <cd:constant type="podlehloubky"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="zrcadlit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="meritko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="nastavspojeni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="pred">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vrsek"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="ne"/>
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="normalni"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="umistivedlesebe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="umistinadsebe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavinterakcniobrazovku"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="zpetnamezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="svrchnimezera">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsethlavicky">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="max"/>
+ <cd:constant type="prizpusobive"/>
+ <cd:constant type="dvoustranny"/>
+ <cd:constant type="zalozka"/>
+ </cd:parameter>
+ <cd:parameter name="prodleva">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="obrazovka"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavprechodstrany"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="nastavinterakci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="menu">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ <cd:parameter name="stranka">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="klik">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="obrazovka">
+ <cd:constant type="novy"/>
+ </cd:parameter>
+ <cd:parameter name="otevriakci">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="zavriakci">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="akceotevrenistranky">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="akcezavrenistranky">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="pocitat">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="kontrastnibarva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sadasymbolu">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titul">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="podtitulek">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="datum">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keyword">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definujinterakcnimenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stredni">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="zadny"/>
+ <cd:constant type="lokalne"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="prekryv"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stejnastranka">
+ <cd:constant type="ano"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="neznamyodkaz">
+ <cd:constant type="ano"/>
+ <cd:constant type="prazdne"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="zadny"/>
+ </cd:parameter>
+ <cd:parameter name="levyoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pravyoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetvrsku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetspodku">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="position">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definujinterakcnimenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavinterakcnimenu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="interaktivnimenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="zablokujinterakcnimenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="vrsek"/>
+ <cd:constant type="spodek"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="uzijexternidokument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="soubor"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="uzijURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="soubor"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="propojenydokument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="soubor"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="zref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="interakcnilista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="nastavinterakcnilistu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="interakcnitlacitka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="nastavinterakcnilistu"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavinterakcnilistu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="vyska"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="vyska"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="krok">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="male"/>
+ <cd:constant type="stredni"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronizovat"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavsynchronizacnilistu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="stranka"/>
+ <cd:constant type="lokalne"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="vyska"/>
+ <cd:constant type="prizpusobive"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronizacnilista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="stranka"/>
+ <cd:constant type="lokalne"/>
+ </cd:parameter>
+ <cd:inherit name="nastavsynchronizacnilistu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavsynchronizaci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definujprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavprofily"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="volba">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="dodrzujprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="umistizalozky"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="zalozka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="verze"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavverze"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cislo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="oznacverzi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="vyberverzi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definujverzi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="dodrzujverzi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="dodrzujverziprofilu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definujprogram"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nastavprogramy"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="adresar">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="program"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ramecek">
+ <cd:constant type="zap"/>
+ <cd:constant type="vyp"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="jdina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="jdinabox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="tlacitko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="nastavtlacitka"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="nastavtlacitka"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="nastavoramovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="nastavkomentar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titul">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="mezera">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="normalni"/>
+ <cd:constant type="Novy"/>
+ <cd:constant type="Bublinka"/>
+ <cd:constant type="Pridavek"/>
+ <cd:constant type="Napoveda"/>
+ <cd:constant type="Odstavec"/>
+ <cd:constant type="Klavesa"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="max"/>
+ <cd:constant type="buffer"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="komentar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavkomentar"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="komentar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavkomentar"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definujpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definujpodpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="kopirujpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="klonujpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="pole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="prizpusobivepole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="vyplnovepole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="bublinkovanapoveda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="vpravo"/>
+ <cd:constant type="nastred"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="ukazpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="zaznamovepole"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="nastavpole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="popisek"/>
+ <cd:constant type="horizontalne"/>
+ <cd:constant type="vertikalne"/>
+ <cd:constant type="ramecek"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavvsechnapole"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="nastavvsechnapole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="popisek"/>
+ <cd:constant type="horizontalne"/>
+ <cd:constant type="vertikalne"/>
+ <cd:constant type="ramecek"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pred">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="po">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pismeno">
+ <cd:constant type="normalni"/>
+ <cd:constant type="tucne"/>
+ <cd:constant type="sklonene"/>
+ <cd:constant type="tucnesklonene"/>
+ <cd:constant type="opis"/>
+ </cd:parameter>
+ <cd:parameter name="zarovnani">
+ <cd:constant type="vlevo"/>
+ <cd:constant type="nastred"/>
+ <cd:constant type="vpravo"/>
+ </cd:parameter>
+ <cd:parameter name="volba">
+ <cd:constant type="pouzeprocteni"/>
+ <cd:constant type="pozadovane"/>
+ <cd:constant type="chranene"/>
+ <cd:constant type="tridene"/>
+ <cd:constant type="nedostupne"/>
+ <cd:constant type="skryte"/>
+ <cd:constant type="tisknutelne"/>
+ </cd:parameter>
+ <cd:parameter name="klikuvnitr">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="klikvne">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="oblastuvnitr">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="oblastvne">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="klavesapo">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="formatovat">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="validovat">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="pocitat">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="offsetpole">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barvarameckupole">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="barvapozadipole">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="oramovani"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="setupforms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metoda">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definujzasobnikpoli"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavvsechnapole"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="zasobnikpoli"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavvsechnapole"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="orez"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavorez"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="nastavorez"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="umistilegendu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="nastavlegendu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mezi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="misto">
+ <cd:constant type="vpravo"/>
+ <cd:constant type="spodek"/>
+ </cd:parameter>
+ <cd:parameter name="zakladnifont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="male"/>
+ <cd:constant type="velke"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuprule"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="placerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="setuprule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hloubka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vyska">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sirka">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mezerapred">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mezeraza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="barva">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="setuptextvariable"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="setuptextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vlevo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vpravo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vzdalenost">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prikaz">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ano"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="settextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="placetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="textvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definerawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavmeziradkovoumezeru"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="switchtorawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definetextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="nastavumistovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="setuptextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="nastavumistovani"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="positiontext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ano" default="yes"/>
+ <cd:constant type="ne"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/cont-de.xml b/Master/texmf-dist/tex/context/interface/cont-de.xml
new file mode 100644
index 00000000000..db05e98e349
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-de.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="installieresprache"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatiumausgleich">
+ <cd:constant type="gepackt"/>
+ <cd:constant type="breit"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="linkersatz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechtersatz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkersubsatz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechtersubsatz">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerzitieren">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterzitieren">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerzitat">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterzitat">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellespracheein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="installieresprache"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="sprache"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="hauptsprache"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="uebersetzten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="benutzekodierung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="benutzespezielles"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="defineoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelleausgabeein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definierefliesstextumgebung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="klein">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="gross">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellefliesstextumgebungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="stellefliesstextein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellefliesstextein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="zeigefliesstextumgebung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stellefliesstextein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definierefliesstext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="zeigefliesstext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stellefliesstextein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="stellefliesstextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="antiqua"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="grotesk"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="fernschreiber"/>
+ <cd:constant type="handschrift"/>
+ <cd:constant type="kalligraphie"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="wechselezumfliesstext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="global"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiereschrift"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellefarbeein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellefarbenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="global"/>
+ <cd:constant type="lokal"/>
+ </cd:parameter>
+ <cd:parameter name="konversion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="immer"/>
+ </cd:parameter>
+ <cd:parameter name="reduktion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="textfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definierefarbe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="farbe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="farbe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="graufarbe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="zeigefarbe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definierepalette"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellepaletteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definierefarbengruppe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="grau"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="zeigepalette"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertikal"/>
+ <cd:constant type="name"/>
+ <cd:constant type="wert"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="zeigefarbengruppe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertikal"/>
+ <cd:constant type="name"/>
+ <cd:constant type="wert"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="vergleichepalette"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="vergleichefarbengruppe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="zeigeumbruch"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definetype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelletipein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="stelletipein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatium">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="geneigt"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="tippen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definieretippen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="datei"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelletippenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="stelletippenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="datei"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatium">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="geneigt"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="befehle"/>
+ <cd:constant type="farbe"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="ibefehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vbefehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cbefehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="geraderand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ungeraderand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="blanko">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="halbezeile"/>
+ <cd:constant type="zeile"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="spatium">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="palette">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="zeilen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="hyphenate"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tippen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="tippedatei"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="stellefussnotenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ </cd:parameter>
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="seite"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="spalten"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaltenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nummerbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="tolerant"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="sehrstreng"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interaktion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="umrahmt"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="stellefussnotendefinitionein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definierebeschreibung"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="fussnote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="footnotetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="notiz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="platzierelokalefussnoten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellefussnotenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="platzierefussnoten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellefussnotenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stelleunterstreichenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="liniendicke">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="untenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="obenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linienfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="unterstrichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="unterstreichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="ueberstrichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="ueberstreichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="durchgestrichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="durchstreichen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="roemischezahlen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Roemischezahlen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="ziffern"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="buchstabe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Buchstabe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="buchstaben"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Buchstaben"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="monat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="MONAT"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="wochentag"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="WOCHENTAG"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stelleversalienein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="titel">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WORT"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WOERTER"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Wort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Woerter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="gestreckt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieresymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiereabbsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="externeabbildung"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="symbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellesymbolsetein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="verwendesymbole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="showsymbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="definierekonversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="konvertierezahl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="stelleueberschrifttextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="stellelabeltextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="ueberschrifttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="labeltext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellemarginallinieein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="niveau">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="liniendicke">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="marginallinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="marginallinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellelinienbreiteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelleumrahmtein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoehe">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="fest"/>
+ <cd:constant type="lokal"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="kein"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="tiefe"/>
+ <cd:constant type="haengend"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="hoti"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="unten"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="kein"/>
+ <cd:constant type="leer"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="global"/>
+ <cd:constant type="lokal"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="nein"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="hoti"/>
+ </cd:parameter>
+ <cd:parameter name="unten">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="oben">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="obenrahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="untenrahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="rahmenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rahmentiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rahmenwinkel">
+ <cd:constant type="rund"/>
+ <cd:constant type="rechteckig"/>
+ </cd:parameter>
+ <cd:parameter name="rahmenradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rahmenfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrund">
+ <cd:constant type="raster"/>
+ <cd:constant type="farbe"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="vordergrund"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundraster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundoffset">
+ <cd:constant type="rahmen"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundtiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundwinkel">
+ <cd:constant type="rund"/>
+ <cd:constant type="rechteckig"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="winkel">
+ <cd:constant type="rund"/>
+ <cd:constant type="rechteckig"/>
+ </cd:parameter>
+ <cd:parameter name="radius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="umrahmt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="imumriss"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="duennerumriss"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="stelleduennerumrissein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelleduennerumrissein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="zeilenabstande">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="liniendicke">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrund">
+ <cd:constant type="farbe"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="haarlinie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="duennelinie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definiereumrahmtertext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtetexteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definiereumrahmt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtetexteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelleumrahmtetexteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="innen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zeilekorrektur">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="tiefekorrektur">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="standard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="umrahmtertext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="kein"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtetexteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="umrahmtertext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumrahmtetexteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="hintergrund"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="hintergrund"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellehintergrundein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="linkeroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="obenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="untenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="gefuelltesrechteck"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellegefuelltesrechteckein"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="ausfuelltext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellegefuelltesrechteckein"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellegefuelltesrechteckein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="zeilenabstande">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="gefuelltezeile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellegefuelltezeileein"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellegefuelltezeileein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelletextumrissein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="imrand"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linienfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textlinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textlinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="rechteck"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellerechteckein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="rechtecke"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellerechteckein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellerechteckein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definiereoverlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="verwendemodul"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="ruecksetzten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="keintest"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="stellesystemein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="aufloesung">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="datei">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="verzeichnis">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="zufaellig">
+ <cd:constant type="normal"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="zuruecksetzten"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="tief"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="hoch"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="tiho"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="zeigerahmen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="linksbuendig"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="rechtsbuendig"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zentriert"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="wortrechts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="inmarginalie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="inanderermarginale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="imlinken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="imrechten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="ininner"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inouter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="spalte"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zeigestruts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="zeigeeinstellungen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="zeigelayout"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="marginaltext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="tief"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stellemarginalblockein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="imrand"/>
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="oben">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="unten">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="in"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="bei"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="ueber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="irgendwo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="aufseite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="textreferenz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="seitenreferenz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="referenz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="verwendereferenzen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definierereferenz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definierereferenzformat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nachunten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="zwischenraum"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="keinzwischenraum"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="spatium"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="festesspatium"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="emptylines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="keinspatium"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="kleinerdurchschuss"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definierebeschreibungen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="muster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="standard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="kleinerabstand"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="imlinken"/>
+ <cd:constant type="imrechten"/>
+ <cd:constant type="haengend"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ </cd:parameter>
+ <cd:parameter name="haengend">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="einziehen">
+ <cd:constant type="nie"/>
+ <cd:constant type="nicht"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="immer"/>
+ <cd:constant type="erste"/>
+ <cd:constant type="folgende"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="stellebeschreibungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="definierebeschreibung"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definierenummerierung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellebeschreibungein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="nummerierung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="nummerierung"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definierebeschreibung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="definierebeschreibungen"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="beschreibung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="beschreibung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="stelleeinzuegein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="muster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definiereeinzug"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelleeinzuegein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definierelabel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="imrand"/>
+ <cd:constant type="imtext"/>
+ </cd:parameter>
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="blockauf">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopffarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="stellespaltenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="noben">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="toleranz">
+ <cd:constant type="sehrstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="sehrtolerant"/>
+ <cd:constant type="strecken"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ausgleichen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="blanko">
+ <cd:constant type="fest"/>
+ <cd:constant type="halbezeile"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="flexibel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="klein"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="hintergrund"/>
+ </cd:parameter>
+ <cd:parameter name="richtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellespaltenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definieretext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="kopfzeile"/>
+ <cd:constant type="fusszeile"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stellekopfzeileein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="keinebeschriftung"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stellefusszeileein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelletextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stellenobenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelleuntenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellekopfzeileein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="keinekopfundfusszeilen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="keinzeilenobenundunten"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stellekopfzeilentextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stellefusszeilentextein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelletexttexteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelletextobenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelletextuntenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="kante"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="seitennummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definierebeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="verknuepfebeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="entknuepfebeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="ruecksetztenbeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="stellebeschriftungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="beschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="holebeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="erste"/>
+ <cd:constant type="letzte"/>
+ <cd:constant type="vorig"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="alles"/>
+ <cd:constant type="aktuell"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="keinebeschriftung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellelayoutein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ <cd:parameter name="rumpfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfzeile">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fusszeile">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oben">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="unten">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkekante">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtekante">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfzeilenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fusszeilenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="obenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstandunten">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerkantenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterkantenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rumpfabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="beschriftung">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ <cd:constant type="farbe"/>
+ <cd:constant type="raster"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="einzelseitig"/>
+ <cd:constant type="doppelseitig"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zeilen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="spalten">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="spaltenabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="gritter">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="bottomspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textbreite">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="papier">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="passelayoutan"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="zeilen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="zeigegitter"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="amgitterausrichten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="amgitterneuausrichten"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="amgitterneuausrichten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="oben"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="seite"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="tiefe"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="projekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="umgebung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="produkt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="komponente"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="keinedateienmehr"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="stellezeilenabstandein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="klein" default="yes"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="zeile">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oben">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="unten">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelleseitennummeriernungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="einzelseitig"/>
+ <cd:constant type="doppelseitig"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="kopfzeile"/>
+ <cd:constant type="fusszeile"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="marginalkante"/>
+ <cd:constant type="imlinken"/>
+ <cd:constant type="imrechten"/>
+ </cd:parameter>
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="nummernseperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="textseparator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelleengerein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mittig">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="definieren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="verwendebefehl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definierestartstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="befehle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelleueberschriftenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="abschnittsnummer">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="mittig"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="absatz"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="breit"/>
+ </cd:parameter>
+ <cd:parameter name="titelausrichten">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="toleranz">
+ <cd:constant type="sehrstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="sehrtolerant"/>
+ <cd:constant type="strecken"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stellebilderunterschriftein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minbreite">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ </cd:parameter>
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stellebildunterschriftein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellebilderunterschriftein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stellegleitobjekteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vorspatium">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="nachspatium">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="nebenvorspatium">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="nebennachspatium">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="noben">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nunten">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="zzeile">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="toleranz">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="normal"/>
+ <cd:constant type="zeile"/>
+ </cd:parameter>
+ <cd:parameter name="nummerierung">
+ <cd:constant type="ja"/>
+ <cd:constant type="nocheck"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelleplatziegeteiltegleitobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ </cd:parameter>
+ <cd:parameter name="zeilen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="teilegleitobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleplatziegeteiltegleitobjekt"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellegegenueberplatzierenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stellebindestrichein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="zeichen">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="stellepositionierenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="einheit">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="xschritt">
+ <cd:constant type="absolut"/>
+ <cd:constant type="relativ"/>
+ </cd:parameter>
+ <cd:parameter name="yschritt">
+ <cd:constant type="absolut"/>
+ <cd:constant type="relativ"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="gitter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xschritt">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yschritt">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="einheit">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="seite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="umbruch"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="einstellung"/>
+ <cd:constant type="grosszuegig"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="sperren"/>
+ <cd:constant type="letzte"/>
+ <cd:constant type="viertel"/>
+ <cd:constant type="gerade"/>
+ <cd:constant type="ungerade"/>
+ <cd:constant type="blanko"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stellereferenzierenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interaktion">
+ <cd:constant type="label"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="alles"/>
+ <cd:constant type="symbol"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="konvertieredatei">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="seite"/>
+ </cd:parameter>
+ <cd:parameter name="global">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelleurlein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="urlalternative">
+ <cd:constant type="kein"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="vor"/>
+ <cd:constant type="nach"/>
+ </cd:parameter>
+ <cd:parameter name="urlspatium">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schreibezurreferenzliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="placereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definierereferenzliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellereferenzlisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stellereferenzlisteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokal"/>
+ <cd:constant type="vorig"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schreibezurliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schreibezwischenliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="keineliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="listsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="platziereliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="bestimmelistencharakeristika"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="platzierezusammengestellteliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellezusammengestelltelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definiereliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stellelisteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="kein"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="verknuepfung">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokal"/>
+ <cd:constant type="vorig"/>
+ <cd:constant type="aktuell"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="seitenbegrenzung">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummernstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="seitenstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="nummerbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="seitenbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interaktion">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="seitennummer"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="seitennummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="kopfnummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="titelausrichten">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="abschnitttrenner">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="kein"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="umrahmt"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definierezusammengestellteliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellezusammengestelltelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stellezusammengestelltelisteein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="niveau">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="aktuell"/>
+ </cd:parameter>
+ <cd:inherit name="stellelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellezusammengestelltelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellezusammengestelltelisteein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="stellenummerierungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="vorspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="publikation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stellepublikationein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="apa"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:inherit name="stellebeschreibungein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stellezeilenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="einziehen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="gerade"/>
+ <cd:constant type="ungerade"/>
+ </cd:parameter>
+ <cd:parameter name="spatium">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stelleabsatznummerierungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="zeile"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stellezeilennumerierungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="schritt">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="imtext"/>
+ <cd:constant type="imrand"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="referieren">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="fortsetzten"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="einezeile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="inzeile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="stelleinmarginalieein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="beide"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="innen"/>
+ <cd:constant type="aussen"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="ja"/>
+ </cd:parameter>
+ <cd:parameter name="zeile">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seperator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelleseitennummerein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="behalte"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelleunterseitennummerein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="art">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="stelleblankoein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="fest"/>
+ <cd:constant type="flexibel"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="definiereblanko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="stelleblankoein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definierepapierformat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="papier">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rumpfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="stellepapierformatein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="querformat"/>
+ <cd:constant type="gespiegelt"/>
+ <cd:constant type="gedreht"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="querformat"/>
+ <cd:constant type="gespiegelt"/>
+ <cd:constant type="gedreht"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="stelleanordnenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="sperren"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="gespiegelt"/>
+ <cd:constant type="gedreht"/>
+ <cd:constant type="doppelseitig"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="zeigedruck"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stellepapierformatein"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="stellepapierformatein"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellelayoutein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definierelogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="oben"/>
+ <cd:constant type="kopfzeile"/>
+ <cd:constant type="fusszeile"/>
+ <cd:constant type="unten"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="kein"/>
+ <cd:constant type="seite"/>
+ <cd:constant type="linkekante"/>
+ <cd:constant type="linkerrand"/>
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="rechterrand"/>
+ <cd:constant type="rechterkante"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="platzierelogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="stellezwischenraumein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="kein" default="yes"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="fest"/>
+ <cd:constant type="stellewiederher"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="stelleeinziehenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="kein" default="yes"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="folgende"/>
+ <cd:constant type="erste"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="ungerade"/>
+ <cd:constant type="gerade"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiereabschnittsblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleabschnittsblockein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelleabschnittsblockein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="ja"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiereabschnitt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelleabschnittein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="konversion">
+ <cd:constant type="ziffern"/>
+ <cd:constant type="buchstaben"/>
+ <cd:constant type="Buchstaben"/>
+ <cd:constant type="roemischezahlen"/>
+ <cd:constant type="Roemischezahlen"/>
+ </cd:parameter>
+ <cd:parameter name="vorigenummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelleueberschriftein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummernstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="textfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nummernfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="eigenenummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="ja"/>
+ </cd:parameter>
+ <cd:parameter name="fortsetzen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="kopfzeile">
+ <cd:constant type="kein"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="kein"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="fusszeile">
+ <cd:constant type="kein"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="mittig"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="haengend">
+ <cd:constant type="kein"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="zeile"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="nummerbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textbefehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="setzekopf">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="leer"/>
+ </cd:parameter>
+ <cd:parameter name="nummererhoehen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="datei">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="marginaltext">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:inherit name="stelleueberschriftenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stellekopfzahlein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="kopfnummer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="bestimmekopfnummer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="heutigeskopfnummer"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="absatz"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiereueberschrift"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="setupitemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="jede"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="kleinerabstand"/>
+ <cd:constant type="gepackt"/>
+ <cd:constant type="ungepackt"/>
+ <cd:constant type="trenner"/>
+ <cd:constant type="keinabstand"/>
+ <cd:constant type="amrand"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="lose"/>
+ <cd:constant type="wiederholen"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="imtext"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="marginalie">
+ <cd:constant type="nein"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrand">
+ <cd:constant type="nein"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrand">
+ <cd:constant type="nein"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="posten">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="vorkopf">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nachkopf">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="beschrstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abschnitttrenner">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="ziehefolgendeein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="fortsetzten"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="kleinerabstand"/>
+ <cd:constant type="gepackt"/>
+ <cd:constant type="trenner"/>
+ <cd:constant type="keinabstand"/>
+ <cd:constant type="amrand"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="spalten"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="pos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="but"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="its"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="kopf"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="mar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="definiereregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="stelleregisterein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ausgleichen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="seitenstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indikator">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="verknuepfung">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokal"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="interaktion">
+ <cd:constant type="seitennummer"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="referieren">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="unbekantereferenz">
+ <cd:constant type="leer"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="schreibezumregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="verknuepfregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="platziereregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleregisterein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="stelleregisterein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="stelleregisterein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definieresynonyme"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="stellesynonymein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="textstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="synonymstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="kleinerabstand"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="imlinken"/>
+ <cd:constant type="imrechten"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="verwende"/>
+ </cd:parameter>
+ <cd:parameter name="konversion">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definieresortieren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="stellesortierenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="kriterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="verwende"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definiereumbruch"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelleumbruchein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleumbruchein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="stelleumbruchein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="links"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="befehle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="doppelseitig">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="leer"/>
+ </cd:parameter>
+ <cd:parameter name="kopfzeilenstatus">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="fusszeilenstatus">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="textstatus">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="keinebeschriftung"/>
+ </cd:parameter>
+ <cd:parameter name="statusoben">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="untenstatus">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="name"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="version"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="endfassung" default="yes"/>
+ <cd:constant type="konzept"/>
+ <cd:constant type="temporaer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="heutigesdatum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="datum"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="datum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="verweisdatum"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="einziehen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="nie" default="yes"/>
+ <cd:constant type="nicht"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="immer"/>
+ <cd:constant type="erste"/>
+ <cd:constant type="folgende"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nichteinziehen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="blanko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross" default="yes"/>
+ <cd:constant type="keinweiss"/>
+ <cd:constant type="zurueck"/>
+ <cd:constant type="weiss"/>
+ <cd:constant type="sperren"/>
+ <cd:constant type="zwinge"/>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="halbezeile"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="fest"/>
+ <cd:constant type="flexibel"/>
+ <cd:constant type="kein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="kleinerdurchschuss"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="blanko"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="korrigierezwischenraum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig" default="yes"/>
+ <cd:constant type="rechts"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelleausrichtungein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="breite"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="innen"/>
+ <cd:constant type="aussen"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="hoehe"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="haengend"/>
+ <cd:constant type="nothanging"/>
+ <cd:constant type="hyphenate"/>
+ <cd:constant type="nothyphenated"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stelleausrichtungein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="stellespatiumein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="breit"/>
+ <cd:constant type="gepackt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelletoleranzein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertikal"/>
+ <cd:constant type="strecken"/>
+ <cd:constant type="spatium"/>
+ <cd:constant type="sehrstreng" default="yes"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="sehrtolerant"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="seitentyp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="bearbeiteseite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nein"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="doppelseite"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="doppelseitig"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="position"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellerasterein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="methode">
+ <cd:constant type="punkt"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="extern"/>
+ </cd:parameter>
+ <cd:parameter name="aufloesung">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="raster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="stellehintergruendeein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="oben"/>
+ <cd:constant type="kopfzeile"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="fusszeile"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="seite"/>
+ <cd:constant type="papier"/>
+ <cd:constant type="linkerseite"/>
+ <cd:constant type="rechterseite"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="linkekante"/>
+ <cd:constant type="linkerrand"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="rechterrand"/>
+ <cd:constant type="rechterkante"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="puffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="holepuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="tippepuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definierepuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="stellepufferein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="absatz">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definiereblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="keinebloeckemehr"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="verbergebloecke"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="behaltebloecke"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="alles"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="verwendebloecke"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="bearbeitebloecke"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="bypassblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forceblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="waehlebloeckeaus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="kriterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="stelleblockein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="innen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="datei">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="formel"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="mathematik"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="platziereformel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="platziereunterformel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="hier" default="yes"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="imlinken"/>
+ <cd:constant type="imrechten"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="marginalie"/>
+ <cd:constant type="linkerrand"/>
+ <cd:constant type="rechterrand"/>
+ <cd:constant type="linkekante"/>
+ <cd:constant type="rechterkante"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="innen"/>
+ <cd:constant type="aussen"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="seite"/>
+ <cd:constant type="gegenueber"/>
+ <cd:constant type="immer"/>
+ <cd:constant type="zwinge"/>
+ <cd:constant type="lang"/>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="zeile"/>
+ <cd:constant type="hoehe"/>
+ <cd:constant type="tiefe"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definieregleitobjekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stellegleitobjektein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxhoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="seitenbegrenzung">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrandabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="tief"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="lang"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="verweis"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="waehlepapieraus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="familie">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="doppelseitigespapier"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="bruch"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="punkt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="posten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellepostenein"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stellepostenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="imrand"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="unbekannt"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="marginalie"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="zitat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig" default="yes"/>
+ <cd:constant type="rechts"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="zitat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="zitieren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stellezitierenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginalie"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="zusatz"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel" default="yes"/>
+ <cd:constant type="gross"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="definiereabsaetze"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="innen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="toleranz">
+ <cd:constant type="sehrstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="sehrtolerant"/>
+ <cd:constant type="strecken"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="absatz"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="absatz"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelleabsaetzeein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="jede"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="breite"/>
+ </cd:parameter>
+ <cd:parameter name="toleranz">
+ <cd:constant type="sehrstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="sehrtolerant"/>
+ <cd:constant type="strecken"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="innen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelletabein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="muster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfstil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="labels"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definieretabulator"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabulator"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="verwendeexterneabbildung"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="stelletabulatorein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="einheit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="einziehen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="innen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="linienfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="liniendicke">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="blanko"/>
+ <cd:constant type="gritter"/>
+ <cd:constant type="tiefe"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="normal"/>
+ <cd:constant type="zeile"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="stelletabellenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="abstand">
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="liniendicke">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linienfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="links"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="befehle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrund">
+ <cd:constant type="raster"/>
+ <cd:constant type="farbe"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundraster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="hintergrundfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definieretabellenvorlage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="verwendeexternedateien"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:parameter name="datei">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="verwendeexternedatei"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="verwendeexterneabbildung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="format">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="faktor">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ </cd:parameter>
+ <cd:parameter name="bfaktor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hfaktor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="voreinstellung">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="bildschirm">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="vorschau">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="wiederholen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="objekt">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="typ">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="methode">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="externeabbildung"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="verwendeexterneabbildung"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="stelleexterneabbildungenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="option">
+ <cd:constant type="rahmen"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="objekt">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="umrahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="verzeichnis">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="lokal"/>
+ <cd:constant type="global"/>
+ <cd:constant type="default"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxhoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="konversion">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="zeigeexterneabbildungen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="verwendeexternestonstueck"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="zwei"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="geg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="drehen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelledrehenein"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelledrehenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotation">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="normal"/>
+ <cd:constant type="hoch"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="breit"/>
+ <cd:constant type="tiefe"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="spiegeln"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="format"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stellekombinationein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="vor">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="oben"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="nein"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="platzierenebeneinander"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="platziereuntereinander"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelleinteraktionsbildschirmein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="rumpfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rumpfabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopfoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="doppelseitig"/>
+ <cd:constant type="bookmark"/>
+ </cd:parameter>
+ <cd:parameter name="wartezeit">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="bildschirm"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelleseitenuebergangein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="stelleinteraktionein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="menue">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ <cd:parameter name="seite">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="klick">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="bildschirm">
+ <cd:constant type="neu"/>
+ </cd:parameter>
+ <cd:parameter name="oeffenaktion">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="schliessenaktion">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="openpageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closepageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="berechnen">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="kontrastfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="symbolset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="untertitel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="datum">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keyword">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiereinteraktionsmenue"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mittig">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="kein"/>
+ <cd:constant type="lokal"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="overlay"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="selbeseite">
+ <cd:constant type="ja"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="unbekantereferenz">
+ <cd:constant type="ja"/>
+ <cd:constant type="leer"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kein"/>
+ </cd:parameter>
+ <cd:parameter name="linkeroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterabstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="obenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="untenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="position">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiereinteraktionsmenue"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleinteraktionsmenueein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="interaktionsmenue"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="inaktiviereinteraktionsmenue"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="oben"/>
+ <cd:constant type="unten"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="verwendeexteresdokument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="datei"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="verwendeURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="datei"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="verknuepfedokument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="datei"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="von"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="interaktionsbalken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="stelleinteraktionsbalkenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="interaktionsknopfe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="stelleinteraktionsbalkenein"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelleinteraktionsbalkenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoehe"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoehe"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="schritt">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="mittel"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronisieren"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stellesynchronisationsbalkenein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="seite"/>
+ <cd:constant type="lokal"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoehe"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronisationsbalken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="seite"/>
+ <cd:constant type="lokal"/>
+ </cd:parameter>
+ <cd:inherit name="stellesynchronisationsbalkenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stellesynchronisationein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiereprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelleprofilein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="folgeprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="platzierebookmarks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="bookmark"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="version"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelleversionein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="beschrifteversion"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="waehleversionaus"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiereversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="folgeversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="folgeprofilversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definiereprogramme"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelleprogrammein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="verzeichnis">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="programm"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="faktor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rahmen">
+ <cd:constant type="an"/>
+ <cd:constant type="aus"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="zu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="zurbox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="knopf"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="stelleknopfein"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelleknopfein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="stelleumrahmtein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stellekommentarein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="spatium">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="normal"/>
+ <cd:constant type="Neu"/>
+ <cd:constant type="Ballon"/>
+ <cd:constant type="Zusatz"/>
+ <cd:constant type="Hilfe"/>
+ <cd:constant type="Absatz"/>
+ <cd:constant type="Schluessel"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="puffer"/>
+ </cd:parameter>
+ <cd:parameter name="marginalie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="kommentar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellekommentarein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="kommentar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellekommentarein"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definierefeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definieresubfeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="kopierefeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="klonierefeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="feld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="passendfeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="ausfuellfeld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="mittig"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="zeigefelder"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="registrierefelder"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stellefeldein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="label"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertikal"/>
+ <cd:constant type="rahmen"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellefelderin"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stellefelderin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="zuruecksetzten"/>
+ <cd:constant type="label"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertikal"/>
+ <cd:constant type="rahmen"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nach">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="fett"/>
+ <cd:constant type="geneigt"/>
+ <cd:constant type="fettgeneigt"/>
+ <cd:constant type="tippen"/>
+ </cd:parameter>
+ <cd:parameter name="ausrichtung">
+ <cd:constant type="links"/>
+ <cd:constant type="mittig"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="nurlesbar"/>
+ <cd:constant type="obligatorisch"/>
+ <cd:constant type="geschuetzt"/>
+ <cd:constant type="sortiert"/>
+ <cd:constant type="nichtverfuegbar"/>
+ <cd:constant type="versteckt"/>
+ <cd:constant type="druckbar"/>
+ </cd:parameter>
+ <cd:parameter name="klickin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="klickaus">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionaus">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="nachtaste">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="formatieren">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="validieren">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="berechnen">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="feldoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="feldrahmenfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="feldhintergrundfarbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="umrahmt"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="setupforms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="methode">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definierefeldstapel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellefelderin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="feldstapel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellefelderin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="ausschnitt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelleausschnittein"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="stelleausschnittein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="platzierelegende"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="stellelegendeein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zwischen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="platz">
+ <cd:constant type="rechts"/>
+ <cd:constant type="unten"/>
+ </cd:parameter>
+ <cd:parameter name="fliesstext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="gross"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuprule"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="placerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="setuprule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tiefe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoehe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breite">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vorspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nachspatium">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="farbe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="setuptextvariable"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="setuptextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="abstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="befehl">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="settextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="placetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="textvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definerawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellezeilenabstandein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="switchtorawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definetextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellepositionierenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="setuptextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellepositionierenein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="positiontext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nein"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/cont-en.xml b/Master/texmf-dist/tex/context/interface/cont-en.xml
new file mode 100644
index 00000000000..99caedfc4da
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-en.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="installlanguage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spacing">
+ <cd:constant type="packed"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="leftsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftsubsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightsubsentence">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftquote">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightquote">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftquotation">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightquotation">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="setuplanguage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="installlanguage"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="language"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="mainlanguage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="translate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="useencoding"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="usespecials"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="defineoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definebodyfontenvironment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="small">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="big">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupbodyfontenvironment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="showbodyfontenvironment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definebodyfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="showbodyfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setupbodyfont"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="setupbodyfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="handwritten"/>
+ <cd:constant type="calligraphic"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="switchtobodyfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ <cd:constant type="global"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definefont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupcolor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupcolors"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="global"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="always"/>
+ </cd:parameter>
+ <cd:parameter name="reduction">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definecolor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="color"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="color"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="graycolor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="showcolor"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definepalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="setuppalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definecolorgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="gray"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="showpalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="name"/>
+ <cd:constant type="value"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="showcolorgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="name"/>
+ <cd:constant type="value"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="comparepalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="comparecolorgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="showmakeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definetype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuptype"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="setuptype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="space">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="slanted"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="typ"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definetyping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuptyping"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="setuptyping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="file"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="space">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="slanted"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="commands"/>
+ <cd:constant type="color"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="icommand">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vcommand">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ccommand">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="evenmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="oddmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="blank">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="line"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="palet">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="hyphenated"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="typefile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="setupfootnotes"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ </cd:parameter>
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="page"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="columns"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="tolerant"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="verystrict"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="setupfootnotedefinition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definedescription"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="footnote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="footnotetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="note"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="placelocalfootnotes"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfootnotes"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="placefootnotes"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfootnotes"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="setupunderbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="underbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="underbars"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overbars"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overstrike"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overstrikes"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="romannumerals"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Romannumerals"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="numbers"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="character"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Character"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="characters"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Characters"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="month"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="MONTH"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="weekday"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="WEEKDAY"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="setupcapitals"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="title">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WORD"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WORDS"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Word"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Words"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stretched"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definesymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definefiguresymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="externalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="symbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupsymbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="usesymbols"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="showsymbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="defineconversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="convertnumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="setupheadtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="setuplabeltext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="headtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="labeltext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupmarginrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="level">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="marginrule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="marginrule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setuplinewidth"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupframed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="local"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="none"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="depth"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="high"/>
+ <cd:constant type="lohi"/>
+ <cd:constant type="low"/>
+ <cd:constant type="top"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="bottom"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="none"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="global"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="no"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="lohi"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="none"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="topframe">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="bottomframe">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="leftframe">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="rightframe">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="frameoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="framedepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="framecorner">
+ <cd:constant type="round"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="frameradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="framecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="screen"/>
+ <cd:constant type="color"/>
+ <cd:constant type="none"/>
+ <cd:constant type="foreground"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundscreen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundoffset">
+ <cd:constant type="frame"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backgrounddepth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcorner">
+ <cd:constant type="round"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundradius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="corner">
+ <cd:constant type="round"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="radius">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="empty">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="framed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="inframed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="thinrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="setupthinrules"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupthinrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="color"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="hairline"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="thinrule"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="defineframedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframedtexts"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="defineframed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframedtexts"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupframedtexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linecorrection">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="depthcorrection">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="standard"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="framedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframedtexts"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="framedtext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupframedtexts"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="background"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="background"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupbackground"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="fillinrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfillinrules"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="fillintext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfillinrules"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupfillinrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="interlinespace">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="fillinline"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfillinlines"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupfillinlines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setuptextrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="inmargin"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textrule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="textrule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="blackrule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupblackrules"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="blackrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupblackrules"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupblackrules"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="defineoverlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="usemodule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="reset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="donttest"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="setupsystem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="resolution">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="random">
+ <cd:constant type="normal"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="low"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="high"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="lohi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="showframe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="leftaligned"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="rightaligned"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="midaligned"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="wordright"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="inmargin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="inothermargin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="inleft"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="inright"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="ininner"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inouter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="column"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="showstruts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="showsetups"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="showlayout"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="margintext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="low"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupmarginblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="inmargin"/>
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="in"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="at"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="about"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="somewhere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="atpage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="textreference"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="pagereference"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="reference"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="usereferences"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definereference"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definereferenceformat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="godown"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="whitespace"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nowhitespace"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="space"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="fixedspaces"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="emptylines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nospace"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="packed"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="setupdescriptions"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="standard"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="serried"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="hanging"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:constant type="never"/>
+ <cd:constant type="not"/>
+ <cd:constant type="no"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="always"/>
+ <cd:constant type="first"/>
+ <cd:constant type="next"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="setupenumerations"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="definedescription"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="defineenumeration"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupenumerations"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumeration"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumeration"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definedescription"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupdescriptions"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="description"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="description"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="setupindentations"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="defineindenting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupindentations"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definelabel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="inmargin"/>
+ <cd:constant type="intext"/>
+ </cd:parameter>
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="blockway">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="headcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="setupcolumns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ntop">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="verystrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="blank">
+ <cd:constant type="fixed"/>
+ <cd:constant type="halfline"/>
+ <cd:constant type="line"/>
+ <cd:constant type="flexible"/>
+ <cd:constant type="big"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="small"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="background"/>
+ </cd:parameter>
+ <cd:parameter name="direction">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcolumns"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="header"/>
+ <cd:constant type="footer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupheader"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="none"/>
+ <cd:constant type="nomarking"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rightstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="leftwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupfooter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setuptext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setuptop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupbottom"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupheader"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="noheaderandfooterlines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="notopandbottomlines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupheadertexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupfootertexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setuptexttexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setuptoptexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="setupbottomtexts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="edge"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="date"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="pagenumber"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definemarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="couplemarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="decouplemarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="resetmarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="setupmarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="marking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="getmarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="first"/>
+ <cd:constant type="last"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="both"/>
+ <cd:constant type="all"/>
+ <cd:constant type="current"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="nomarking"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="setuplayout"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="footer">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftedge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightedge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="headerdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="footerdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftedgedistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightedgedistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="marking">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ <cd:constant type="color"/>
+ <cd:constant type="screen"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="top"/>
+ <cd:constant type="singlesided"/>
+ <cd:constant type="doublesided"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="columns">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="columndistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="bottomspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textwidth">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paper">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="adaptlayout"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="showgrid"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="placeongrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="moveongrid"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="moveongrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="both"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="high"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="low"/>
+ <cd:constant type="page"/>
+ <cd:constant type="none"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="project"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="environment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="product"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="component"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="nomorefiles"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="setupinterlinespace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="small" default="yes"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="line">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="top">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="bottom">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="setuppagenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="singlesided"/>
+ <cd:constant type="doublesided"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="header"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="marginedge"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="numberseparator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="textseparator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupnarrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="define"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="usecommands"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definestartstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="commands">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="setupheads"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sectionnumber">
+ <cd:constant type="yes"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="middle"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="paragraph"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="aligntitle">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="verystrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupcaptions"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="none"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minwidth">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ </cd:parameter>
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupcaption"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcaptions"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupfloats"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="sidespacebefore">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="sidespaceafter">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ntop">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nbottom">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nlines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="normal"/>
+ <cd:constant type="line"/>
+ </cd:parameter>
+ <cd:parameter name="numbering">
+ <cd:constant type="yes"/>
+ <cd:constant type="nocheck"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupfloatsplitting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ </cd:parameter>
+ <cd:parameter name="lines">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="splitfloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfloatsplitting"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="setupoppositeplacing"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setuphyphenmark"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="sign">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="setuppositioning"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="absolute"/>
+ <cd:constant type="relative"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="absolute"/>
+ <cd:constant type="relative"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="grid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="unit">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="page"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="makeup"/>
+ <cd:constant type="no"/>
+ <cd:constant type="preference"/>
+ <cd:constant type="bigpreference"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="disable"/>
+ <cd:constant type="last"/>
+ <cd:constant type="quadruple"/>
+ <cd:constant type="even"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="blank"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="setupreferencing"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="label"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="all"/>
+ <cd:constant type="symbol"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="convertfile">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="page"/>
+ </cd:parameter>
+ <cd:parameter name="global">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="setupurl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="urlalternative">
+ <cd:constant type="none"/>
+ <cd:constant type="both"/>
+ <cd:constant type="before"/>
+ <cd:constant type="after"/>
+ </cd:parameter>
+ <cd:parameter name="urlspace">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="writetoreferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="placereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupreferencelist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="setupreferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="writetolist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="writebetweenlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="nolist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="listsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="placelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="determinelistcharacteristics"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="placecombinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcombinedlist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="setuplist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="none"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="previous"/>
+ <cd:constant type="current"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="pageboundaries">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numberstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pagestyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="pagecommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="pagenumber"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="pagenumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="headnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="aligntitle">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="none"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definecombinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcombinedlist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="setupcombinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="level">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="current"/>
+ </cd:parameter>
+ <cd:inherit name="setuplist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcombinedlist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupcombinedlist"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="setupnumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="publication"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setuppublications"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="apa"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:inherit name="setupenumerations"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="setuplines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="even"/>
+ <cd:constant type="odd"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="setupparagraphnumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="line"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="setuplinenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="intext"/>
+ <cd:constant type="inmargin"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="referencing">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="continue"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="someline"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="inline"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="setupinmargin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="both"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="no"/>
+ <cd:constant type="yes"/>
+ </cd:parameter>
+ <cd:parameter name="line">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="setuppagenumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="number">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="keep"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="setupsubpagenumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="way">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="setupblank"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="line"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="big"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="small"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="flexible"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="defineblank"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="setupblank"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definepapersize"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="paper">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppapersize"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="landscape"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="setuparranging"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="disable"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="mirrored"/>
+ <cd:constant type="rotated"/>
+ <cd:constant type="doublesided"/>
+ <cd:constant type="negative"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="showprint"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="setuppapersize"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuplayout"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definelogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="none"/>
+ <cd:constant type="page"/>
+ <cd:constant type="leftedge"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="rightedge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="placelogos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="setupwhitespace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="line"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="fix"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="setupindenting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="none" default="yes"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="next"/>
+ <cd:constant type="first"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="odd"/>
+ <cd:constant type="even"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definesectionblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupsectionblock"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="setupsectionblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="number">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definesection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="setupsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversion">
+ <cd:constant type="numbers"/>
+ <cd:constant type="characters"/>
+ <cd:constant type="Characters"/>
+ <cd:constant type="romannumerals"/>
+ <cd:constant type="Romannumerals"/>
+ </cd:parameter>
+ <cd:parameter name="previousnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="setuphead"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numberstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="textcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numbercolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="number">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ownnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="yes"/>
+ </cd:parameter>
+ <cd:parameter name="continue">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="header">
+ <cd:constant type="none"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="none"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="footer">
+ <cd:constant type="none"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="high"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="normal"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="middle"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="none"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="line"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="numbercommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="textcommand">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="placehead">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="incrementnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="margintext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="setupheads"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="setupheadnumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="headnumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="determineheadnumber"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="currentheadnumber"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="section"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definehead"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="setupitemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="each"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="packed"/>
+ <cd:constant type="unpacked"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="joinedup"/>
+ <cd:constant type="atmargin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="loose"/>
+ <cd:constant type="repeat"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="intext"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="margin">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargin">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargin">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="items">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="beforehead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afterhead">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="indentnext">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="continue"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="packed"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="joinedup"/>
+ <cd:constant type="atmargin"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="columns"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="item"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="but"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="its"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="head"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="mar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="defineregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="setupregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="balance">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="pagestyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="textstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indicator">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="coupling">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="all"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="interaction">
+ <cd:constant type="pagenumber"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="referencing">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="unknownreference">
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="writetoregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="coupleregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="placeregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="setupregister"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definesynonyms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="setupsynonyms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="textstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="synonymstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ <cd:constant type="used"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definesorting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="setupsorting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ <cd:constant type="used"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansion">
+ <cd:constant type="yes"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definemakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupmakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="setupmakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="left"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="commands">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="doublesided">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="empty"/>
+ </cd:parameter>
+ <cd:parameter name="headerstate">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="footerstate">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="textstate">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="none"/>
+ <cd:constant type="nomarking"/>
+ </cd:parameter>
+ <cd:parameter name="topstate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="bottomstate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="name"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="version"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="final" default="yes"/>
+ <cd:constant type="concept"/>
+ <cd:constant type="temporary"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="currentdate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="date"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="date"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="referraldate"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="indenting"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="never" default="yes"/>
+ <cd:constant type="not"/>
+ <cd:constant type="no"/>
+ <cd:constant type="yes"/>
+ <cd:constant type="always"/>
+ <cd:constant type="first"/>
+ <cd:constant type="next"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="noindenting"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="blank"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big" default="yes"/>
+ <cd:constant type="nowhite"/>
+ <cd:constant type="back"/>
+ <cd:constant type="white"/>
+ <cd:constant type="disable"/>
+ <cd:constant type="force"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="line"/>
+ <cd:constant type="halfline"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="fixed"/>
+ <cd:constant type="flexible"/>
+ <cd:constant type="none"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="packed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="correctwhitespace"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupalign"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="width"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="wide"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="height"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="line"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="hanging"/>
+ <cd:constant type="nothanging"/>
+ <cd:constant type="hyphenated"/>
+ <cd:constant type="nothyphenated"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="setupalign"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="setupspacing"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="broad"/>
+ <cd:constant type="packed"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setuptolerance"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="stretch"/>
+ <cd:constant type="space"/>
+ <cd:constant type="verystrict" default="yes"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="pagetype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="processpage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="couplepage"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="doublesided"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="position"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="setupscreens"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="dot"/>
+ <cd:constant type="rule"/>
+ <cd:constant type="external"/>
+ </cd:parameter>
+ <cd:parameter name="resolution">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="screen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="setupbackgrounds"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="top"/>
+ <cd:constant type="header"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="footer"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="page"/>
+ <cd:constant type="paper"/>
+ <cd:constant type="leftpage"/>
+ <cd:constant type="rightpage"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="leftedge"/>
+ <cd:constant type="leftmargin"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="rightedge"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="getbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="typebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="setupbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="paragraph">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="defineblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="nomoreblocks"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="hideblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="keepblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="all"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="useblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="processblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="bypassblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forceblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="selectblocks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="criterium">
+ <cd:constant type="all"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="setupblock"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="formula"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="mathematics"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="placeformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="placesubformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="here" default="yes"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="inleft"/>
+ <cd:constant type="inright"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="margin"/>
+ <cd:constant type="leftmargin"/>
+ <cd:constant type="rightmargin"/>
+ <cd:constant type="leftedge"/>
+ <cd:constant type="rightedge"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="inner"/>
+ <cd:constant type="outer"/>
+ <cd:constant type="line"/>
+ <cd:constant type="high"/>
+ <cd:constant type="low"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="page"/>
+ <cd:constant type="opposite"/>
+ <cd:constant type="always"/>
+ <cd:constant type="force"/>
+ <cd:constant type="tall"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="line"/>
+ <cd:constant type="height"/>
+ <cd:constant type="depth"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definefloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="setupfloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pageboundaries">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="leftmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightmargindistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="high"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="low"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="tall"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="referral"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="selectpaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="family">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="couplepaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="fraction"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="periods"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="items"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitems"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setupitems"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="inmargin"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="unknown"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="margin"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="quotation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="middle" default="yes"/>
+ <cd:constant type="right"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="quotation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="quote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setupquote"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margin"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="adding"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="small"/>
+ <cd:constant type="medium" default="yes"/>
+ <cd:constant type="big"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="defineparagraphs"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="fit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="verystrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="paragraph"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="paragraph"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setupparagraphs"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="each"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="width"/>
+ </cd:parameter>
+ <cd:parameter name="tolerance">
+ <cd:constant type="verystrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="verytolerant"/>
+ <cd:constant type="stretch"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setuptab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sample">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="headstyle">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="labels"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definetabulate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabulate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="useexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="setuptabulate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="unit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="indenting">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inner">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="blank"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="depth"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="rule">
+ <cd:constant type="normal"/>
+ <cd:constant type="line"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="setuptables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="distance">
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="rulethickness">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rulecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="left"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="commands">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="background">
+ <cd:constant type="screen"/>
+ <cd:constant type="color"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundscreen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="backgroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definetabletemplate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="useexternalfiles"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="useexternalfile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="useexternalfigure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="scale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="max"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="wfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="preview">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="repeat">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="object">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="method">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="externalfigure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="useexternalfigure"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="setupexternalfigures"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="option">
+ <cd:constant type="frame"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="object">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="frames">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ <cd:constant type="default"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="maxwidth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxheight">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="conversion">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="showexternalfigures"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="useexternalsoundtrack"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="two"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="fact"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="rotate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuprotate"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setuprotate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotation">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="normal"/>
+ <cd:constant type="high"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="depth"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="mirror"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="scale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="setupcombinations"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="before">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="top"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="no"/>
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="placesidebyside"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="placeontopofeachother"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupinteractionscreen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="fit"/>
+ <cd:constant type="doublesided"/>
+ <cd:constant type="bookmark"/>
+ </cd:parameter>
+ <cd:parameter name="delay">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="screen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setuppagetransitions"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="setupinteraction"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="menu">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ <cd:parameter name="page">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="click">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="new"/>
+ </cd:parameter>
+ <cd:parameter name="openaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closeaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="openpageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="closepageaction">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calculate">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="contrastcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="symbolset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitle">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="author">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="date">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keyword">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="defineinteractionmenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="left">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="middle">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="none"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="overlay"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="samepage">
+ <cd:constant type="yes"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="no"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="unknownreference">
+ <cd:constant type="yes"/>
+ <cd:constant type="empty"/>
+ <cd:constant type="no"/>
+ <cd:constant type="none"/>
+ </cd:parameter>
+ <cd:parameter name="leftoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rightoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="topoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bottomoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="position">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="defineinteractionmenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupinteractionmenu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="interactionmenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="disableinteractionmenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="top"/>
+ <cd:constant type="bottom"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="useexternaldocument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="useURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="coupledocument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="from"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="interactionbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="setupinteractionbar"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="interactionbuttons"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="setupinteractionbar"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupinteractionbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternative">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="height"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="height"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="step">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="small"/>
+ <cd:constant type="medium"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronize"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupsynchronizationbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="page"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="height"/>
+ <cd:constant type="fit"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronizationbar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternative">
+ <cd:constant type="page"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:inherit name="setupsynchronizationbar"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupsynchronization"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="defineprofile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupprofiles"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="option">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="followprofile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="placebookmarks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="bookmark"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="version"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupversions"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="number">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="markversion"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="selectversion"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="defineversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="followversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="followprofileversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="defineprogram"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="setupprograms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="program"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="off"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="goto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="gotobox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="button"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="setupbuttons"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="setupbuttons"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="setupframed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setupcomment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="state">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="title">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="space">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="symbol">
+ <cd:constant type="normal"/>
+ <cd:constant type="New"/>
+ <cd:constant type="Balloon"/>
+ <cd:constant type="Addition"/>
+ <cd:constant type="Help"/>
+ <cd:constant type="Paragraph"/>
+ <cd:constant type="Key"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="max"/>
+ <cd:constant type="buffer"/>
+ </cd:parameter>
+ <cd:parameter name="margin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="comment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="comment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupcomment"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definefield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definesubfield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="copyfield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="clonefield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="field"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="fitfield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="fillinfield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="left"/>
+ <cd:constant type="right"/>
+ <cd:constant type="middle"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="showfields"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="logfields"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="setupfield"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="label"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="frame"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfields"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="setupfields"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="label"/>
+ <cd:constant type="horizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="frame"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="before">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="after">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="style">
+ <cd:constant type="normal"/>
+ <cd:constant type="bold"/>
+ <cd:constant type="slanted"/>
+ <cd:constant type="boldslanted"/>
+ <cd:constant type="type"/>
+ </cd:parameter>
+ <cd:parameter name="align">
+ <cd:constant type="left"/>
+ <cd:constant type="middle"/>
+ <cd:constant type="right"/>
+ </cd:parameter>
+ <cd:parameter name="option">
+ <cd:constant type="readonly"/>
+ <cd:constant type="required"/>
+ <cd:constant type="protected"/>
+ <cd:constant type="sorted"/>
+ <cd:constant type="unavailable"/>
+ <cd:constant type="hidden"/>
+ <cd:constant type="printable"/>
+ </cd:parameter>
+ <cd:parameter name="clickin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="clickout">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regionout">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="afterkey">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="validate">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calculate">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="fieldoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fieldframecolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fieldbackgroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="setupforms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="method">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definefieldstack"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setupfields"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="fieldstack"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupfields"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="clip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupclipping"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="setupclipping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="placelegend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="setuplegend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inbetween">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="location">
+ <cd:constant type="right"/>
+ <cd:constant type="bottom"/>
+ </cd:parameter>
+ <cd:parameter name="bodyfont">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="small"/>
+ <cd:constant type="big"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuprule"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="placerule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="setuprule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="depth">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="height">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="width">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spacebefore">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaceafter">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="color">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="setuptextvariable"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="setuptextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="left">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="right">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="distance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="command">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="settextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="placetextvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="textvariable"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definerawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupinterlinespace"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="switchtorawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definetextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setuppositioning"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="setuptextposition"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setuppositioning"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="positiontext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="setupstrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="yes" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/cont-it.xml b/Master/texmf-dist/tex/context/interface/cont-it.xml
new file mode 100644
index 00000000000..e9758b989f7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-it.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="installalingua"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spaziatura">
+ <cd:constant type="impaccato"/>
+ <cd:constant type="ampio"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="frasesinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="frasedestra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sottofrasesinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sottofrasedestra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="menzionesinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="menzionedestra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citazionesinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citazionedestra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="implicito">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostalingua"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="installalingua"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="lingua"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="linguaprincipale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="traduci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="usacodifica"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="usaspecialita"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reimposta"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscioutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostaoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definisciambientefontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicito"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="testo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="piccolo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="grande">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostaambientefontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="impostafontdeltesto"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostafontdeltesto"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="mostraambientefontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="impostafontdeltesto"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscifontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicito"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="mostrafontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="impostafontdeltesto"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="impostafontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regolare"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="supporto"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="grafiamanuale"/>
+ <cd:constant type="calligrafico"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="cambiaafontdeltesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="globale"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscifont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impostastrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="si" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostacolore"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostacolori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="globale"/>
+ <cd:constant type="locale"/>
+ </cd:parameter>
+ <cd:parameter name="conversione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="sempre"/>
+ </cd:parameter>
+ <cd:parameter name="riduzione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="coloretesto">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="separa">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="tutti"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscicolore"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="colore"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="colore"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="coloregrigio"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="mostracolore"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscitavolozza"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostatavolozza"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscigruppocolori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="grigio"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="mostratavolozza"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="verticale"/>
+ <cd:constant type="nome"/>
+ <cd:constant type="valore"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="mostragruppocolori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="verticale"/>
+ <cd:constant type="nome"/>
+ <cd:constant type="valore"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="confrontatavolozza"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="confrontagruppocolori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="mostramakeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definiscitype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostatype"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="impostatype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="spazio">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="inclinato"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="typ"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definiscityping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostatyping"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="impostatyping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="file"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spazio">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="inclinato"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="comandi"/>
+ <cd:constant type="colore"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="icomando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vcomando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ccomando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="marginepari">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedispari">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rigovuoto">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="mezzariga"/>
+ <cd:constant type="riga"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="spazio">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tavolozza">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="righe">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="sillabato"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="typefile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="impostanotepdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ </cd:parameter>
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="pagina"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="colonne"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="linea">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzacolonne">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamargine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="comandonumero">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandotesto">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="separa">
+ <cd:constant type="tollerante"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="moltorigido"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coloretesto">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interazione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="incorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="impostadefinizionenotepdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definiscidescrizione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="notapdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="testonotapdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="nota"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="mettinotepdplocali"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostanotepdp"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="mettinotepdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostanotepdp"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="impostasottolinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="spessorelinea">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetfondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colorelinea">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sottolinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sottolinee"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sopralinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sopralinee"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sbarrato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sbarrati"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="numeriromani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Numeriromani"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="numeri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="lettera"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Lettera"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="lettere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Lettere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mese"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="MESE"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="giornosettimana"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="GIORNOSETTIMANA"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="impostamaiuscole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="titolo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="PAROLA"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="PAROLE"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Parola"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Parole"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stirato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscisimbolo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definiscifigurasimbolo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="figuraesterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="simbolo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostasetsimboli"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="usasimboli"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="mostrasetsimboli"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="definisciconversione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="convertinumero"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="impostatestointestazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="impostatestoetichette"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="testoinstestazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="testoetichetta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostalineemargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="livello">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="spessorelinea">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="lineamargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="lineamargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostaampiezzariga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostaincorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="altezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="fisso"/>
+ <cd:constant type="locale"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="sovrapponi"/>
+ <cd:constant type="implicito"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="profondita"/>
+ <cd:constant type="sospeso"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="pedap"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="fondo"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="vuoto"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="globale"/>
+ <cd:constant type="locale"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="no"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="pedap"/>
+ </cd:parameter>
+ <cd:parameter name="fondo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cornice">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="sovrapponi"/>
+ </cd:parameter>
+ <cd:parameter name="cornicecima">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="cornicefondo">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="cornicesinistra">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="cornicedestra">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcornice">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="profonditacornice">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="angolocornice">
+ <cd:constant type="rotondo"/>
+ <cd:constant type="rettangolare"/>
+ </cd:parameter>
+ <cd:parameter name="raggiocornice">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colorecornice">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sfondo">
+ <cd:constant type="schermo"/>
+ <cd:constant type="colore"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="foreground"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="schermosfondo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="coloresfondo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="offsetsfondo">
+ <cd:constant type="cornice"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="profonditasfondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="angolosfondo">
+ <cd:constant type="rotondo"/>
+ <cd:constant type="rettangolare"/>
+ </cd:parameter>
+ <cd:parameter name="raggiosfondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="angolo">
+ <cd:constant type="rotondo"/>
+ <cd:constant type="rettangolare"/>
+ </cd:parameter>
+ <cd:parameter name="raggio">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="vuoto">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="coloreprimopiano">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="incorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="circondato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineesottili"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="impostalineesottili"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostalineesottili"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="interlinea">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="coloresfondo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="spessorelinea">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="sfondo">
+ <cd:constant type="colore"/>
+ </cd:parameter>
+ <cd:parameter name="coloresfondo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="capello"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineasottile"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definiscitestoincorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostatestiincorniciati"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definisciincorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostatestiincorniciati"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostatestiincorniciati"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interno">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="correzioneriga">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="correzioneprofondita">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="standard"/>
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="testoincorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="nessuno"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostatestiincorniciati"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="testoincorniciato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostatestiincorniciati"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="sfondo"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="sfondo"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostasfondo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="offsetsinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetdestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetfondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="lineeriempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostalineeriempimento"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="testoriempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostalineeriempimento"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostalineeriempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="interlinea">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="rigariempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostarigheriempimento"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostarigheriempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostalineetesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="inmargine"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colorelinea">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineatesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineatesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineanera"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostalineenere"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="lineenere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostalineenere"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostalineenere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definiscisovrapposizione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="usamodulo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="reimposta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="notest"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="impostasistema"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="risoluzione">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="casuale">
+ <cd:constant type="normale"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reimposta"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="ped"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="ap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="pedap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="mostracornice"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="allineasinistra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="allineadestra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="allineacentro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="paroladestra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="inmargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="inaltromargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="insinistra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="indestra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="ininner"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inouter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="colonna"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="mostrastruts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="mostraimpostazioni"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="mostralyout"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="testoinmargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="basso"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostablocchimargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="inmargine"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="fondo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="in"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="al"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="intorno"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="daqualcheparte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="apagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="rif"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="riferimentotesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="riferimentopagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="riferimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="usariferimenti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definisciriferimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definisciformatoriferimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="etichetta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="vaigiu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="spaziobianco"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nientespaziobianco"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="spazio"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="spazifissi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="emptylines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nientespazio"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impaccato"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="impostadescrizioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="campione">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="standard"/>
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="vicino"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="insinistra"/>
+ <cd:constant type="indestra"/>
+ <cd:constant type="sospeso"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ </cd:parameter>
+ <cd:parameter name="sospendi">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="rientro">
+ <cd:constant type="mai"/>
+ <cd:constant type="non"/>
+ <cd:constant type="no"/>
+ <cd:constant type="si"/>
+ <cd:constant type="sempre"/>
+ <cd:constant type="primo"/>
+ <cd:constant type="successivo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="impostaenumerazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="definiscidescrizione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definiscienumerazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaenumerazioni"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumerazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumerazione"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definiscidescrizione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostadescrizioni"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="descrizione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="descrizione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="impostarientri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="campione">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definiscirientro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostarientri"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definiscietichetta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="testo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="inmargine"/>
+ <cd:constant type="intesto"/>
+ </cd:parameter>
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="blockway">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="coloretesta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="impostacolonne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ncima">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linea">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolleranza">
+ <cd:constant type="moltorigido"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="tollerante"/>
+ <cd:constant type="moltotollerante"/>
+ <cd:constant type="dilata"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bilanciamento">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rigovuoto">
+ <cd:constant type="fisso"/>
+ <cd:constant type="mezzariga"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="flessibile"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="piccolo"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="sfondo"/>
+ </cd:parameter>
+ <cd:parameter name="direzione">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostacolonne"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definiscitesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="intestazione"/>
+ <cd:constant type="piedipagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostainstestazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="normale"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="nomarcature"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilesinistra">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiledestra">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzasinistra">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzadestra">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostapdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostacima"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostafondo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostainstestazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nientelineintestazionepdp"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="nientelineecimafondo"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatestiintestazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatestipdp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatestotesti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatesticima"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="impostatestifondo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numeropagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definiscimarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="accoppiamarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="separamarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="reimpostamarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="impostamarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="marcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="prendimarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="primo"/>
+ <cd:constant type="ultimo"/>
+ <cd:constant type="precedente"/>
+ <cd:constant type="entrambi"/>
+ <cd:constant type="tutti"/>
+ <cd:constant type="corrente"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="nientemarcatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostalayout"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaziocima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginesinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="intestazione">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="piedipagina">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bordosinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bordodestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzaintestazione">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzapdp">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzacima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzafondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginesinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginedestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzabordosinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzabordodestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="marcatura">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ <cd:constant type="colore"/>
+ <cd:constant type="schermo"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="facciasingola"/>
+ <cd:constant type="doppiafaccia"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="colonne">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanzacolonne">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="griglia">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="spaziofondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzatesto">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzatesto">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="carta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="adattalayout"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="righe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="mostragriglia"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="mettiingriglia"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="spostaagriglia"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="spostaagriglia"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cima"/>
+ <cd:constant type="entrambi"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="profondita"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="progetto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="ambiente"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="prodotto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="componenet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="bastafile"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="impostainterlinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="reimposta"/>
+ <cd:constant type="piccolo" default="yes"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="riga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cima">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="fondo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerazionepagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="facciasingola"/>
+ <cd:constant type="doppiafaccia"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="intestazione"/>
+ <cd:constant type="piedipagina"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordomargine"/>
+ <cd:constant type="insinistra"/>
+ <cd:constant type="indestra"/>
+ </cd:parameter>
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="separatorenumero">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="separatoretesto">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impostapiustretto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="centro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="definisci"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="usacomandi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definisciiniziatermina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comandi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="impostateste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numerosezione">
+ <cd:constant type="si"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="normale"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="centro"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="capoverso"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="ampio"/>
+ </cd:parameter>
+ <cd:parameter name="allineatitolo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="tolleranza">
+ <cd:constant type="moltorigido"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="tollerante"/>
+ <cd:constant type="moltotollerante"/>
+ <cd:constant type="dilata"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostacaptions"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamin">
+ <cd:constant type="adatta"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numero">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ </cd:parameter>
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostacaption"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostacaptions"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostaoggettimobili"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spazioprima">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="spaziodopo">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="spaziolateraleprima">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="spaziolateraledopo">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ncima">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nfondo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nrighe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="implicito">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tolleranza">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginesinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginedestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="normale"/>
+ <cd:constant type="riga"/>
+ </cd:parameter>
+ <cd:parameter name="numerazione">
+ <cd:constant type="si"/>
+ <cd:constant type="nocheck"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostaspezzamentooggettomobile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ </cd:parameter>
+ <cd:parameter name="righe">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="spezzaoggettomobile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaspezzamentooggettomobile"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="impostaposizionamentoopposti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostasegnosillabazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="segno">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="impostaposizionamento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="sovrapponi"/>
+ </cd:parameter>
+ <cd:parameter name="unita">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="assoluto"/>
+ <cd:constant type="relativo"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="assoluto"/>
+ <cd:constant type="relativo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="griglia"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="unita">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="pagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="si" default="yes"/>
+ <cd:constant type="makeup"/>
+ <cd:constant type="no"/>
+ <cd:constant type="preferenza"/>
+ <cd:constant type="grandepreferenza"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="disattiva"/>
+ <cd:constant type="ultimo"/>
+ <cd:constant type="quadruplo"/>
+ <cd:constant type="pari"/>
+ <cd:constant type="dispari"/>
+ <cd:constant type="rigovuoto"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="impostariferimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefisso">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interazione">
+ <cd:constant type="etichetta"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="tutti"/>
+ <cd:constant type="simbolo"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="convertifile">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="pagina"/>
+ </cd:parameter>
+ <cd:parameter name="globale">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="impostaurl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternativaurl">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="entrambi"/>
+ <cd:constant type="prima"/>
+ <cd:constant type="dopo"/>
+ </cd:parameter>
+ <cd:parameter name="spaziourl">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scriviinlistariferimenti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="placereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definiscilistariferimenti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostalistariferimenti"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="impostalistariferimenti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="locale"/>
+ <cd:constant type="precedente"/>
+ <cd:constant type="tutti"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scriviinelenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scrividentroelenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="nienteelenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="listsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="mettielenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelenco"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="determinacarattersticheelenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelenco"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="mettielencocombinato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelencocombinato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definiscielenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelenco"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="impostaelenco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="nessuno"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="accoppiamento">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="locale"/>
+ <cd:constant type="precedente"/>
+ <cd:constant type="corrente"/>
+ <cd:constant type="tutti"/>
+ </cd:parameter>
+ <cd:parameter name="limitipagina">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilenumero">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilepagina">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="comandonumero">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandotesto">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandopagina">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interazione">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="numeropagina"/>
+ <cd:constant type="tutti"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="etichetta">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prefisso">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="numeropagina">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="numerotesta">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="allineatitolo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="incorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definiscielencocombinato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelencocombinato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="impostaelencocombinato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="livello">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="corrente"/>
+ </cd:parameter>
+ <cd:inherit name="impostaelenco"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelencocombinato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostaelencocombinato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="marginesinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="spazioprima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="pubblicazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostapubblicazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="apa"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:inherit name="impostaenumerazioni"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="impostarighe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rientro">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="pari"/>
+ <cd:constant type="dispari"/>
+ </cd:parameter>
+ <cd:parameter name="spazio">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerazionecapoversi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="riga"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerazionerighe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="inizia">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="passo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="intesto"/>
+ <cd:constant type="inmargine"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefisso">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="referencing">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="continua"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="qualcheriga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="inriga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="impostainmargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="entrambi"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="interno"/>
+ <cd:constant type="esterno"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="no"/>
+ <cd:constant type="si"/>
+ </cd:parameter>
+ <cd:parameter name="riga">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separatore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="impostanumeropagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numero">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="mantieni"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerosottopagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="modo">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="impostarigovuoto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normale" default="yes"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="fisso"/>
+ <cd:constant type="flessibile"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="definiscirigovuoto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="impostarigovuoto"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definiscidimensionicarta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="carta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaziocima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="max"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="impostadimensionicarta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="riflesso"/>
+ <cd:constant type="ruotato"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="riflesso"/>
+ <cd:constant type="ruotato"/>
+ <cd:constant type="negativo"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="impostaparranging"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="disattiva"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="riflesso"/>
+ <cd:constant type="ruotato"/>
+ <cd:constant type="doppiafaccia"/>
+ <cd:constant type="negativo"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="mostrastampa"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="impostadimensionicarta"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="impostadimensionicarta"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostalayout"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definiscilogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cima"/>
+ <cd:constant type="intestazione"/>
+ <cd:constant type="piedipagina"/>
+ <cd:constant type="fondo"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="bordosinistro"/>
+ <cd:constant type="marginesinistro"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="marginedestro"/>
+ <cd:constant type="bordodestro"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="comando">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="mettiloghi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="impostaspaziobianco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nessuno" default="yes"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="fisso"/>
+ <cd:constant type="fisso"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="impostarientro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="nessuno" default="yes"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="successivo"/>
+ <cd:constant type="primo"/>
+ <cd:constant type="normale"/>
+ <cd:constant type="dispari"/>
+ <cd:constant type="pari"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiscibloccosezione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostabloccosezione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="impostabloccosezione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="numero">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="si"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiscisezione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="impostasezione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversione">
+ <cd:constant type="numeri"/>
+ <cd:constant type="lettere"/>
+ <cd:constant type="Lettere"/>
+ <cd:constant type="numeriromani"/>
+ <cd:constant type="Numeriromani"/>
+ </cd:parameter>
+ <cd:parameter name="numeroprecedente">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="impostatesta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilenumero">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="coloretesto">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="colorenumero">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numero">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="numeroproprio">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="si"/>
+ </cd:parameter>
+ <cd:parameter name="continua">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="intestazione">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="testo">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="piedipagina">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="normale"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="centro"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sospendi">
+ <cd:constant type="nessuno"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="riga"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="comandonumero">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandotesto">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefisso">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="mettitesta">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="vuoto"/>
+ </cd:parameter>
+ <cd:parameter name="incrementanumero">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnumber">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="testomargine">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="impostateste"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="impostanumerotesta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="numerotesta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="determinanumerotesta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="numerotestacorrente"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="capoverso"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definiscitesta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="setupitemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ogni"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="vicino"/>
+ <cd:constant type="impaccato"/>
+ <cd:constant type="unpacked"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unito"/>
+ <cd:constant type="almargine"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="lento"/>
+ <cd:constant type="ripeti"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="intesto"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="margine">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginesinistro">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedestro">
+ <cd:constant type="no"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="elementi">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inizia">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="primaditesta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopotesta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilemarcatura">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilesimbolo">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:parameter name="rientrasuccessivo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="continua"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="vicino"/>
+ <cd:constant type="impaccato"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unito"/>
+ <cd:constant type="almargine"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="colonne"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="elemento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="fondo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="el"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="testa"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="mar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sim"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="definisciregistro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="impostaregistro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="bilanciamento">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilepagina">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indicatore">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="accoppiamento">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="locale"/>
+ <cd:constant type="tutti"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="interazione">
+ <cd:constant type="numeropagina"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="referencing">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="riferimentoingoto">
+ <cd:constant type="vuoto"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="scriviinregistro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="accoppiaregistro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="mettiregistro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaregistro"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="impostaregistro"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="registro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="impostaregistro"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definiscisinonimi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="impostasinonimi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stiletesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilesinonimi">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="vicino"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="insinistra"/>
+ <cd:constant type="indestra"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="tutti"/>
+ <cd:constant type="usato"/>
+ </cd:parameter>
+ <cd:parameter name="conversione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definisciordinamento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="impostaordinamento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="criterio">
+ <cd:constant type="tutti"/>
+ <cd:constant type="usato"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="espansione">
+ <cd:constant type="si"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definiscimakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostamakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostamakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="impostamakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="si"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="comandi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="doppiafaccia">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="vuoto"/>
+ </cd:parameter>
+ <cd:parameter name="statointestazione">
+ <cd:constant type="normale"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="statopdp">
+ <cd:constant type="normale"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="statotesto">
+ <cd:constant type="normale"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="nomarcature"/>
+ </cd:parameter>
+ <cd:parameter name="statocima">
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ </cd:parameter>
+ <cd:parameter name="statofondo">
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ </cd:parameter>
+ <cd:parameter name="statopagina">
+ <cd:constant type="termina"/>
+ <cd:constant type="inizia"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="nome"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="versione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="finale" default="yes"/>
+ <cd:constant type="concetto"/>
+ <cd:constant type="temporaneo"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="datadioggi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="data"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="data"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="datareferral"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="rientro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="mai" default="yes"/>
+ <cd:constant type="non"/>
+ <cd:constant type="no"/>
+ <cd:constant type="si"/>
+ <cd:constant type="sempre"/>
+ <cd:constant type="primo"/>
+ <cd:constant type="successivo"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nienterientro"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="rigovuoto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande" default="yes"/>
+ <cd:constant type="nobianco"/>
+ <cd:constant type="dietro"/>
+ <cd:constant type="bianco"/>
+ <cd:constant type="disattiva"/>
+ <cd:constant type="forza"/>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="mezzariga"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="fisso"/>
+ <cd:constant type="flessibile"/>
+ <cd:constant type="nessuno"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impaccato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="rigovuoto"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="correggispaziobianco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro" default="yes"/>
+ <cd:constant type="destra"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impostaallineamento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ampiezza"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="interno"/>
+ <cd:constant type="esterno"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="altezza"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="sospeso"/>
+ <cd:constant type="nonsospeso"/>
+ <cd:constant type="sillabato"/>
+ <cd:constant type="nonsillabato"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="impostaallineamento"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="impostaspaziatura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ampio"/>
+ <cd:constant type="impaccato"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impostatolleranza"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="verticale"/>
+ <cd:constant type="dilata"/>
+ <cd:constant type="spazio"/>
+ <cd:constant type="moltorigido" default="yes"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="tollerante"/>
+ <cd:constant type="moltotollerante"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="tipopagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="elaborapagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="si" default="yes"/>
+ <cd:constant type="no"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="accoppiapagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="opzione">
+ <cd:constant type="doppiafaccia"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="posizione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="impostaschermi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metodo">
+ <cd:constant type="punto"/>
+ <cd:constant type="linea"/>
+ <cd:constant type="esterno"/>
+ </cd:parameter>
+ <cd:parameter name="risoluzione">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="schermo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="impostasfondi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cima"/>
+ <cd:constant type="intestazione"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="piedipagina"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="carta"/>
+ <cd:constant type="paginasinistra"/>
+ <cd:constant type="paginadestra"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="bordosinistro"/>
+ <cd:constant type="marginesinistro"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginedestro"/>
+ <cd:constant type="bordodestro"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="prendibuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="typebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definiscibuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="impostabuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="capoverso">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definisciblocco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="bastablocchi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="nascondiblocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="tieniblocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="tutti"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="usablocco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="elaborablocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="saltablocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forzablocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="selezionablocchi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="criterio">
+ <cd:constant type="tutti"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="impostablocco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interno">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="formula"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="matematica"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="mettiformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="mettisottoformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="qui" default="yes"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="insinistra"/>
+ <cd:constant type="indestra"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="marginesinistro"/>
+ <cd:constant type="marginedestro"/>
+ <cd:constant type="bordosinistro"/>
+ <cd:constant type="bordodestro"/>
+ <cd:constant type="margineinterno"/>
+ <cd:constant type="margineesterno"/>
+ <cd:constant type="bordointerno"/>
+ <cd:constant type="bordoesterno"/>
+ <cd:constant type="interno"/>
+ <cd:constant type="esterno"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="opposto"/>
+ <cd:constant type="sempre"/>
+ <cd:constant type="forza"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="riga"/>
+ <cd:constant type="altezza"/>
+ <cd:constant type="profondita"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cornice">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definiscioggettomobile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impostaoggettomobile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="implicito">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="limitipagina">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginesinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanzamarginedestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="basso"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="alto"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="referral"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="selezionacarta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="famiglia">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="accoppiacarta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chim"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="frazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="punti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="elementi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaelementi"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostaelementi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ignoto"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="margine"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro" default="yes"/>
+ <cd:constant type="destra"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="menzione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostamenzione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margine"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="adding"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio" default="yes"/>
+ <cd:constant type="grande"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="definiscicapoversi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linea">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="adatta"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interno">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolleranza">
+ <cd:constant type="moltorigido"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="tollerante"/>
+ <cd:constant type="moltotollerante"/>
+ <cd:constant type="dilata"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="capoverso"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="capoverso"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostacapoversi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ogni"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="ampiezza"/>
+ </cd:parameter>
+ <cd:parameter name="tolleranza">
+ <cd:constant type="moltorigido"/>
+ <cd:constant type="rigido"/>
+ <cd:constant type="tollerante"/>
+ <cd:constant type="moltotollerante"/>
+ <cd:constant type="dilata"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interno">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linea">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostatab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="campione">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stiletesta">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="etichette"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definiscitabulato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabulato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="usafiguraesterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="impostatabulato"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="unita">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rientro">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="interno">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="colorelinea">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:parameter name="spessorelinea">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="rigovuoto"/>
+ <cd:constant type="griglia"/>
+ <cd:constant type="profondita"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="linea">
+ <cd:constant type="normale"/>
+ <cd:constant type="riga"/>
+ </cd:parameter>
+ <cd:parameter name="separa">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="impostatabelle"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="distanza">
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="spessorelinea">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colorelinea">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:parameter name="comandi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:parameter name="sfondo">
+ <cd:constant type="schermo"/>
+ <cd:constant type="colore"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="schermosfondo">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="coloresfondo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definiscimodellotabella"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="usafileesterni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="usafileesterno"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="usafiguraesterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="fattore">
+ <cd:constant type="max"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ </cd:parameter>
+ <cd:parameter name="wfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cornice">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="preimpostato">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="anteprima">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ripeti">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="oggetto">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="metodo">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="figuraesterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="usafiguraesterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="impostafigureesterne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="opzione">
+ <cd:constant type="cornice"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="oggetto">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="cornici">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="locale"/>
+ <cd:constant type="globale"/>
+ <cd:constant type="implicito"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezzamax">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="conversione">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefisso">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="mostrafiguresterne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="usacolonnasonoraesterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="due"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="fatto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="ruota"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostarotazione"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostarotazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotazione">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="normale"/>
+ <cd:constant type="alto"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="ampio"/>
+ <cd:constant type="profondita"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="riflessione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="scala"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="impostacombinazioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="prima">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="cima"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="no"/>
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="normale"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="mettifiancoafianco"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="mettiunosullaltro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostaschermointerazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="backspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaziocima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="horoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="max"/>
+ <cd:constant type="adatta"/>
+ <cd:constant type="doppiafaccia"/>
+ <cd:constant type="segnalibro"/>
+ </cd:parameter>
+ <cd:parameter name="attesa">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="schermo"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostatransizionepagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="reimposta"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="impostainterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="menu">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="click">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="separa">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="nuovo"/>
+ </cd:parameter>
+ <cd:parameter name="azioneapri">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="azionechiudi">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="azioneapripagina">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="azionechiudipagina">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calcola">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="colorecontrasto">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="setsimboli">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titolo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="sottotitolo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autore">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="data">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="parolachiave">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiscimenuinterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="centro">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ <cd:constant type="nessuno"/>
+ <cd:constant type="locale"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="sovrapponi"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stessapagina">
+ <cd:constant type="si"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="no"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="riferimentoingoto">
+ <cd:constant type="si"/>
+ <cd:constant type="vuoto"/>
+ <cd:constant type="no"/>
+ <cd:constant type="nessuno"/>
+ </cd:parameter>
+ <cd:parameter name="offsetsinistro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetdestro">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetfondo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="posizione">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definiscimenuinterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostamenuinterazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="menuinterattivo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="disabilitamenuinterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="cima"/>
+ <cd:constant type="fondo"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="usadocumentoesterno"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="usaURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="accoppiadocumento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="da"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="barrainterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="impostabarrainterazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="pulsantinterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="impostabarrainterazione"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostabarrainterazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="alternativa">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="altezza"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="altezza"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="passo">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="medio"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="sincronizza"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostabarrasincronizzazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="pagina"/>
+ <cd:constant type="locale"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="altezza"/>
+ <cd:constant type="adatta"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="barrasincronizzazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativa">
+ <cd:constant type="pagina"/>
+ <cd:constant type="locale"/>
+ </cd:parameter>
+ <cd:inherit name="impostabarrasincronizzazione"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostasincronizzazione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definisciprofilo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostaprofili"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="opzione">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seguiprofilo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="mettisegnalibro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="segnalibro"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="versione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostaversioni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numero">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="marcaversione"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="selezionaversione"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definisciversion"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seguiversione"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seguiversioneprofilo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definisciprogramma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="impostaprogrammi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="directory">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="programma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fattore">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="cornice">
+ <cd:constant type="attivo"/>
+ <cd:constant type="disattivo"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="vaia"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="vaiabox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="pulsante"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="impostapulsanti"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="impostapulsanti"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:inherit name="impostaincorniciato"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="impostacommento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stato">
+ <cd:constant type="inizia"/>
+ <cd:constant type="termina"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titolo">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="spazio">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
+ <cd:parameter name="simbolo">
+ <cd:constant type="normale"/>
+ <cd:constant type="Nuovo"/>
+ <cd:constant type="Pallone"/>
+ <cd:constant type="Aggiunta"/>
+ <cd:constant type="Aiuto"/>
+ <cd:constant type="Capoverso"/>
+ <cd:constant type="Tasto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="max"/>
+ <cd:constant type="buffer"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="commento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostacommento"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="commento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostacommento"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definiscicampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definiscisottocampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="copiacampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="clonacampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="campi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="adattacampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="camporiempimento"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="destra"/>
+ <cd:constant type="centro"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="mostracampi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="logcampi"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="impostacampo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="etichetta"/>
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="verticale"/>
+ <cd:constant type="cornice"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostacampi"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="impostacampi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="reimposta"/>
+ <cd:constant type="etichetta"/>
+ <cd:constant type="orizzontale"/>
+ <cd:constant type="verticale"/>
+ <cd:constant type="cornice"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="prima">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dopo">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stile">
+ <cd:constant type="normale"/>
+ <cd:constant type="grassetto"/>
+ <cd:constant type="inclinato"/>
+ <cd:constant type="grassettoinclinato"/>
+ <cd:constant type="type"/>
+ </cd:parameter>
+ <cd:parameter name="allinea">
+ <cd:constant type="sinistra"/>
+ <cd:constant type="centro"/>
+ <cd:constant type="destra"/>
+ </cd:parameter>
+ <cd:parameter name="opzione">
+ <cd:constant type="solalettura"/>
+ <cd:constant type="richiestp"/>
+ <cd:constant type="protetto"/>
+ <cd:constant type="ordinato"/>
+ <cd:constant type="nondisponibile"/>
+ <cd:constant type="nascosto"/>
+ <cd:constant type="stampabile"/>
+ </cd:parameter>
+ <cd:parameter name="clickdentro">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="clickfuori">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="entraregione">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="esciregione">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="dopotasto">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="verifica">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calcola">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcampo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colorecornicecampo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="coloresfondocampo">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="incorniciato"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="impostaforms"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metodo">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definiscistackcampi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostacampi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stackcampi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostacampi"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="clip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaclippling"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="impostaclippling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="mettilegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="impostalegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tra">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="luogo">
+ <cd:constant type="destra"/>
+ <cd:constant type="fondo"/>
+ </cd:parameter>
+ <cd:parameter name="fonttesto">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="piccolo"/>
+ <cd:constant type="grande"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definiscilinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostalinea"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="mettilinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="impostalinea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="profondita">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="altezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="ampiezza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spazioprima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spaziodopo">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colore">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definiscivariabiletesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="impostavariabiletesto"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="impostavariabiletesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="sinistra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="destra">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="distanza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="comando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="si"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="setvariabiletesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="mettivariabiletesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="variabiletesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definiscifontgrezzo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostainterlinea"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="passaafontgrezzo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definisciposizionetesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="impostaposizionamento"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="impostaposizionetesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="impostaposizionamento"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="posizionatesto"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impostastrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="si" default="yes"/>
+ <cd:constant type="no"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/cont-nl.xml b/Master/texmf-dist/tex/context/interface/cont-nl.xml
new file mode 100644
index 00000000000..7958298fb75
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-nl.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="installeertaal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatiering">
+ <cd:constant type="opelkaar"/>
+ <cd:constant type="ruim"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="linkerzin">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterzin">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkersubzin">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechtersubzin">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerciteer">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterciteer">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkercitaat">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechtercitaat">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="steltaalin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="installeertaal"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="taal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="hoofdtaal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="vertaal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="usecodering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="gebruikspecials"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieeruitvoer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="steluitvoerin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerkorpsomgeving"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="klein">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="groot">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelkorpsomgevingin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="stelkorpsin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelkorpsin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="toonkorpsomgeving"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stelkorpsin"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerkorps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="default"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="toonkorps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stelkorpsin"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="stelkorpsin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="romaan"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="support"/>
+ <cd:constant type="schreefloos"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="handschrift"/>
+ <cd:constant type="calligrafie"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="switchnaarkorps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="globaal"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelstrutin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelkleurin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelkleurenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="globaal"/>
+ <cd:constant type="lokaal"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="altijd"/>
+ </cd:parameter>
+ <cd:parameter name="reductie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="tekstkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="splitsen">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerkleur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="kleur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="kleur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="grijskleur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="toonkleur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerpalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelpaletin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerkleurgroep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="grijs"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="toonpalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontaal"/>
+ <cd:constant type="vertikaal"/>
+ <cd:constant type="naam"/>
+ <cd:constant type="waarde"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="toonkleurgroep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontaal"/>
+ <cd:constant type="vertikaal"/>
+ <cd:constant type="naam"/>
+ <cd:constant type="waarde"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="vergelijkpalet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="vergelijkkleurgroep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="toonopmaak"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definieertype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="steltypein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="steltypein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatie">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="schuin"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="typ"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definieertypen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ <cd:constant type="typen"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="steltypenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="steltypenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="file"/>
+ <cd:constant type="typen"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatie">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="schuin"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="commandos"/>
+ <cd:constant type="kleur"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="icommando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="vcommando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="ccommando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="evenmarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onevenmarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="blanko">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="halveregel"/>
+ <cd:constant type="regel"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="spatie">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="palet">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="regels">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="afgebroken"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="typen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="typefile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="stelvoetnotenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ </cd:parameter>
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="pagina"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="kolommen"/>
+ <cd:constant type="eerstekolom"/>
+ <cd:constant type="laatstekolom"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="lijn">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kolomafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nummercommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="tekstcommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="splitsen">
+ <cd:constant type="soepel"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="zeerstreng"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="tekstletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tekstkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interactie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="omlijnd"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="stelvoetnootdefinitiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="doordefinieren"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="voetnoot"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="voetnoottekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="noot"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="plaatslokalevoetnoten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelvoetnotenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="plaatsvoetnoten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelvoetnotenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stelonderstrepenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="lijndikte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onderoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bovenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lijnkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="onderstreep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="onderstrepen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overstreep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="overstrepen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="doorstreep"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="doorstrepen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="romeins"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Romeins"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="cijfers"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="letter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Letter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="letters"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Letters"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="maand"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="MAAND"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="weekdag"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="WEEKDAG"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="stelkapitalenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="titel">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WOORD"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="WOORDEN"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Woord"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Woorden"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="uitgerekt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieersymbool"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definieerfiguursymbool"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="externfiguur"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="symbool"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelsymboolsetin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="gebruiksymbolen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="toonsymboolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="definieerconversie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="converteernummer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="stelkoptekstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="stellabeltekstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="koptekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="labeltekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelkantlijnin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="niveau">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lijndikte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="kantlijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="kantlijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stellijndiktein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelomlijndin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoogte">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="vast"/>
+ <cd:constant type="lokaal"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="geen"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="default"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="diepte"/>
+ <cd:constant type="hangend"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="laho"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="onder"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="geen"/>
+ <cd:constant type="leeg"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="globaal"/>
+ <cd:constant type="lokaal"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="nee"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="laho"/>
+ </cd:parameter>
+ <cd:parameter name="onder">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="boven">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="bovenkader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="onderkader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="linkerkader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="rechterkader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="kaderoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kaderdiepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kaderhoek">
+ <cd:constant type="rond"/>
+ <cd:constant type="recht"/>
+ </cd:parameter>
+ <cd:parameter name="kaderstraal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kaderkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrond">
+ <cd:constant type="raster"/>
+ <cd:constant type="kleur"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="voorgrond"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondraster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondoffset">
+ <cd:constant type="kader"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="achtergronddiepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondhoek">
+ <cd:constant type="rond"/>
+ <cd:constant type="recht"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondstraal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoek">
+ <cd:constant type="rond"/>
+ <cd:constant type="recht"/>
+ </cd:parameter>
+ <cd:parameter name="straal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="leeg">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="voorgrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="voorgrondletter">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="omlijnd"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="inlijnd"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="dunnelijnen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="steldunnelijnenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="steldunnelijnenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="interlinie">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="lijndikte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrond">
+ <cd:constant type="kleur"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="haarlijn"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="dunnelijn"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definieerkadertekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelkadertekstenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definieeromlijnd"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelkadertekstenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelkadertekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="binnen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="regelcorrectie">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="dieptecorrectie">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="standaard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="kadertekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="geen"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelkadertekstenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="kadertekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelkadertekstenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="achtergrond"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="achtergrond"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelachtergrondin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="linkeroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechteroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bovenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onderoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="invullijnen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelinvullijnenin"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="invultekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelinvullijnenin"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelinvullijnenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="interlinie">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="invulregel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelinvulregelsin"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelinvulregelsin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="steltekstlijnenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="inmarge"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="lijnkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="tekstlijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="tekstlijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="blokje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelblokjesin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="blokjes"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelblokjesin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelblokjesin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definieeroverlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="gebruikmodule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="reset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="geentest"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="stelsysteemin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="resolutie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="gebied">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="willekeur">
+ <cd:constant type="normaal"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="laag"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="hoog"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="laho"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="toonkader"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="regellinks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="regelrechts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="regelmidden"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="woordrechts"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="inmarge"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="inanderemarge"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="inlinker"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="inrechter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="inbinnen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inbuiten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="kolom"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="toonstruts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="tooninstellingen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="toonlayout"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="margetekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="laag"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelmargeblokkenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="inmarge"/>
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="boven">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="onder">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="in"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="op"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="about"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ergens"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="oppagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="tekstreferentie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="paginareferentie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="referentie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="gebruikreferenties"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definieerreferentie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definieerreferentieformaat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="omlaag"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="witruimte"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="geenwitruimte"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="spatie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="vastespaties"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="legeregels"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="geenspatie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="opelkaar"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="steldoordefinierenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="monster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="standaard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="aanelkaar"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="inlinker"/>
+ <cd:constant type="inrechter"/>
+ <cd:constant type="hangend"/>
+ </cd:parameter>
+ <cd:parameter name="kopcommando">
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="inspringen">
+ <cd:constant type="nooit"/>
+ <cd:constant type="niet"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="altijd"/>
+ <cd:constant type="eerste"/>
+ <cd:constant type="volgende"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="steldoornummerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="doordefinieren"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="doornummeren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="steldoornummerenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="doornummering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="doornummering"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="doordefinieren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="steldoordefinierenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="doordefinitie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="doordefinitie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="steldoorspringenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="monster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="doorspringen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="steldoorspringenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="doorlabelen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="inmarge"/>
+ <cd:constant type="intekst"/>
+ </cd:parameter>
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="blokwijze">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="stelkolommenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nboven">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lijn">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerantie">
+ <cd:constant type="zeerstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="soepel"/>
+ <cd:constant type="zeersoepel"/>
+ <cd:constant type="rek"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="balanceren">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="blanko">
+ <cd:constant type="vast"/>
+ <cd:constant type="halveregel"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="flexibel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="klein"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="achtergrond"/>
+ </cd:parameter>
+ <cd:parameter name="richting">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelkolommenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definieertekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="hoofd"/>
+ <cd:constant type="voet"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelhoofdin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="normaal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="geenmarkering"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechterletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="linkerbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelvoetin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="steltekstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelbovenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelonderin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelhoofdin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="geenhoofdenvoetregels"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="geenbovenenonderregels"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelhoofdtekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelvoettekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelteksttekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelboventekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="stelondertekstenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="rand"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="datum"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="paginanummer"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definieermarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="koppelmarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="ontkoppelmarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="resetmarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="stelmarkeringin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="markeer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="haalmarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="eerste"/>
+ <cd:constant type="laatste"/>
+ <cd:constant type="vorige"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="alles"/>
+ <cd:constant type="huidige"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="geenmarkering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="stellayoutin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ <cd:parameter name="rugwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkermarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoofd">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voet">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="boven">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onder">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoofdafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voetafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bovenafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onderafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkerrandafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechterrandafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rugoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="markering">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ <cd:constant type="kleur"/>
+ <cd:constant type="raster"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="enkelzijdig"/>
+ <cd:constant type="dubbelzijdig"/>
+ </cd:parameter>
+ <cd:parameter name="schaal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="regels">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="kolommen">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="kolomafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="bodemwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="snijwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tekstafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tekstbreedte">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="tekstmarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="papier">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="paslayoutaan"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="regels">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="toongrid"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="plaatsopgrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="verplaatsopgrid"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="verplaatsopgrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="boven"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="standaard" default="yes"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="diepte"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="project"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="omgeving"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="produkt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="onderdeel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="geenfilesmeer"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="stelinterliniein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="klein" default="yes"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="regel">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="boven">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="onder">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelpaginanummeringin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="enkelzijdig"/>
+ <cd:constant type="dubbelzijdig"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="hoofd"/>
+ <cd:constant type="voet"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="kantlijn"/>
+ <cd:constant type="inlinker"/>
+ <cd:constant type="inrechter"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="nummerscheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="tekstscheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelsmallerin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="midden">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="definieer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="gebruikcommandos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definieerstartstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="commandos">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelkoppenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="sectienummer">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="normaal"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="midden"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="alinea"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="ruim"/>
+ </cd:parameter>
+ <cd:parameter name="titeluitlijnen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="tolerantie">
+ <cd:constant type="zeerstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="soepel"/>
+ <cd:constant type="zeersoepel"/>
+ <cd:constant type="rek"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelblokkopjesin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minbreedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ </cd:parameter>
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelblokkopjein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelblokkopjesin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelplaatsblokkenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voorwit">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="nawit">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="zijvoorwit">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="zijnawit">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="nboven">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nonder">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nregels">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tolerantie">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="linkermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zijuitlijnen">
+ <cd:constant type="normaal"/>
+ <cd:constant type="regel"/>
+ </cd:parameter>
+ <cd:parameter name="nummeren">
+ <cd:constant type="ja"/>
+ <cd:constant type="geencontrole"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelplaatsbloksplitsenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ </cd:parameter>
+ <cd:parameter name="regels">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="splitsplaatsblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelplaatsbloksplitsenin"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="stelnaastplaatsenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelkoppeltekenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="teken">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="stelpositionerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="eenheid">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="schaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="xstap">
+ <cd:constant type="absoluut"/>
+ <cd:constant type="relatief"/>
+ </cd:parameter>
+ <cd:parameter name="ystap">
+ <cd:constant type="absoluut"/>
+ <cd:constant type="relatief"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="rooster"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xstap">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ystap">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="schaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="eenheid">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="pagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="opmaak"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="voorkeur"/>
+ <cd:constant type="grotevoorkeur"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="blokkeer"/>
+ <cd:constant type="laatste"/>
+ <cd:constant type="viertal"/>
+ <cd:constant type="even"/>
+ <cd:constant type="oneven"/>
+ <cd:constant type="blanko"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelrefererenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interactie">
+ <cd:constant type="label"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="alles"/>
+ <cd:constant type="symbool"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="converteerfile">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="pagina"/>
+ </cd:parameter>
+ <cd:parameter name="globaal">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelurlin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="urlvariant">
+ <cd:constant type="geen"/>
+ <cd:constant type="beide"/>
+ <cd:constant type="voor"/>
+ <cd:constant type="na"/>
+ </cd:parameter>
+ <cd:parameter name="urlspatie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schrijfnaarreferentielijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="plaatsreferentielijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definieerreferentielijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelreferentielijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stelreferentielijstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokaal"/>
+ <cd:constant type="vorige"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schrijfnaarlijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="schrijftussenlijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="geenlijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="lijstsymbool"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="plaatslijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="bepaallijstkenmerken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="plaatssamengesteldelijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelsamengesteldelijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definieerlijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stellijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stellijstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="geen"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="koppeling">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokaal"/>
+ <cd:constant type="vorige"/>
+ <cd:constant type="huidige"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="paginaovergangen">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummerletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tekstletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="paginaletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="nummercommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="tekstcommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="paginacommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interactie">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="paginanummer"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="label">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="paginanummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="kopnummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="titeluitlijnen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="afsluiter">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="geen"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="omlijnd"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definieersamengesteldelijst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelsamengesteldelijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="stelsamengesteldelijstin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="niveau">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="huidige"/>
+ </cd:parameter>
+ <cd:inherit name="stellijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelsamengesteldelijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelsamengesteldelijstin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="stelnummerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="linkermarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermarge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="voorwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="publicatie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelpublicatiesin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="apa"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:inherit name="steldoornummerenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stelregelsin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inspringen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="even"/>
+ <cd:constant type="oneven"/>
+ </cd:parameter>
+ <cd:parameter name="spatie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stelparagraafnummerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="regel"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="stelregelnummerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stap">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="intekst"/>
+ <cd:constant type="inmarge"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="refereren">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="verder"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="eenregel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="inregel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="stelinmargein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="beide"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="binnen"/>
+ <cd:constant type="buiten"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="ja"/>
+ </cd:parameter>
+ <cd:parameter name="regel">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scheider">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stapel">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelpaginanummerin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="handhaaf"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="stelsubpaginanummerin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="wijze">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="stelblankoin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normaal" default="yes"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="vast"/>
+ <cd:constant type="flexibel"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="definieerblanko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="stelblankoin"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definieerpapierformaat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="schaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="stelpapierin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="papier">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rugwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="stelpapierformaatin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="liggend"/>
+ <cd:constant type="gespiegeld"/>
+ <cd:constant type="geroteerd"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="liggend"/>
+ <cd:constant type="gespiegeld"/>
+ <cd:constant type="geroteerd"/>
+ <cd:constant type="negatief"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="stelarrangerenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="blokkeer"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="gespiegeld"/>
+ <cd:constant type="geroteerd"/>
+ <cd:constant type="dubbelzijdig"/>
+ <cd:constant type="negatief"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="toonprint"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="stelpapierformaatin"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="stelpapierformaatin"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellayoutin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definieerbeeldmerk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="boven"/>
+ <cd:constant type="hoofd"/>
+ <cd:constant type="voet"/>
+ <cd:constant type="onder"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="geen"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="linkerrand"/>
+ <cd:constant type="linkermarge"/>
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="rechtermarge"/>
+ <cd:constant type="rechterrand"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="commando">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="plaatsbeeldmerken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="stelwitruimtein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="geen" default="yes"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="vast"/>
+ <cd:constant type="herstel"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="stelinspringenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="geen" default="yes"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="volgende"/>
+ <cd:constant type="eerste"/>
+ <cd:constant type="normaal"/>
+ <cd:constant type="oneven"/>
+ <cd:constant type="even"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definieersectieblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelsectieblokin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelsectieblokin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="ja"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definieersectie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelsectiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="cijfers"/>
+ <cd:constant type="letters"/>
+ <cd:constant type="Letters"/>
+ <cd:constant type="romeins"/>
+ <cd:constant type="Romeins"/>
+ </cd:parameter>
+ <cd:parameter name="vorigenummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelkopin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tekstletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="nummerletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="tekstkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nummerkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="eigennummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="ja"/>
+ </cd:parameter>
+ <cd:parameter name="doorgaan">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="hoofd">
+ <cd:constant type="geen"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="tekst">
+ <cd:constant type="geen"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="voet">
+ <cd:constant type="geen"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="normaal"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="midden"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="hang">
+ <cd:constant type="geen"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="regel"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="nummercommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="tekstcommando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="plaatskop">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="leeg"/>
+ </cd:parameter>
+ <cd:parameter name="verhoognummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnummer">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="margetekst">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:inherit name="stelkoppenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="stelkopnummerin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="kopnummer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="bepaalkopnummer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="huidigekopnummer"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="paragraaf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definieerkop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="stelitemgroepin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="elk"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standaard" default="yes"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="aanelkaar"/>
+ <cd:constant type="opelkaar"/>
+ <cd:constant type="vanelkaar"/>
+ <cd:constant type="afsluiter"/>
+ <cd:constant type="aansluitend"/>
+ <cd:constant type="opmarge"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="los"/>
+ <cd:constant type="herhaal"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="intekst"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="marge">
+ <cd:constant type="nee"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linkermarge">
+ <cd:constant type="nee"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermarge">
+ <cd:constant type="nee"/>
+ <cd:constant type="standaard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="items">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="kopvoor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopna">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="marletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="symletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afsluiter">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:parameter name="springvolgendein">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="verder"/>
+ <cd:constant type="standaard" default="yes"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="aanelkaar"/>
+ <cd:constant type="opelkaar"/>
+ <cd:constant type="afsluiter"/>
+ <cd:constant type="aansluitend"/>
+ <cd:constant type="opmarge"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="kolommen"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelitemgroepin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="som"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="but"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="its"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="kop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="mar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="definieerregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="stelregisterin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="balanceren">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="paginaletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tekstletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aanduiding">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="koppeling">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="lokaal"/>
+ <cd:constant type="alles"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="interactie">
+ <cd:constant type="paginanummer"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="refereren">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onbekendeverwijzing">
+ <cd:constant type="leeg"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="schrijfnaarregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="koppelregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="plaatsregister"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelregisterin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="stelregisterin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="register"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="stelregisterin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definieersynoniemen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="stelsynoniemenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tekstletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="synoniemletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="aanelkaar"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="inlinker"/>
+ <cd:constant type="inrechter"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="gebruikt"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definieersorteren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="stelsorterenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="gebruikt"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansie">
+ <cd:constant type="ja"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definieeropmaak"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelopmaakin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelopmaakin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="stelopmaakin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="links"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="commandos">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dubbelzijdig">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="leeg"/>
+ </cd:parameter>
+ <cd:parameter name="hoofdstatus">
+ <cd:constant type="normaal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="voetstatus">
+ <cd:constant type="normaal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="tekststatus">
+ <cd:constant type="normaal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="geenmarkering"/>
+ </cd:parameter>
+ <cd:parameter name="bovenstatus">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="onderstatus">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="paginastatus">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="naam"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="versie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="definitief" default="yes"/>
+ <cd:constant type="concept"/>
+ <cd:constant type="voorlopig"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="huidigedatum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="datum"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="datum"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="kenmerkdatum"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="inspringen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="nooit" default="yes"/>
+ <cd:constant type="niet"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="ja"/>
+ <cd:constant type="altijd"/>
+ <cd:constant type="eerste"/>
+ <cd:constant type="volgende"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="nietinspringen"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="blanko"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot" default="yes"/>
+ <cd:constant type="geenwit"/>
+ <cd:constant type="terug"/>
+ <cd:constant type="wit"/>
+ <cd:constant type="blokkeer"/>
+ <cd:constant type="forceer"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="halveregel"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="vast"/>
+ <cd:constant type="flexibel"/>
+ <cd:constant type="geen"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="opelkaar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="blanko"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="corrigeerwitruimte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="midden" default="yes"/>
+ <cd:constant type="rechts"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="steluitlijnenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="breedte"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="binnen"/>
+ <cd:constant type="buiten"/>
+ <cd:constant type="breed"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="hoogte"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="hangend"/>
+ <cd:constant type="niethangend"/>
+ <cd:constant type="afgebroken"/>
+ <cd:constant type="nietafgebroken"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="steluitlijnenin"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="stelspatieringin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ruim"/>
+ <cd:constant type="opelkaar"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="steltolerantiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="horizontaal"/>
+ <cd:constant type="vertikaal"/>
+ <cd:constant type="rek"/>
+ <cd:constant type="spatie"/>
+ <cd:constant type="zeerstreng" default="yes"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="soepel"/>
+ <cd:constant type="zeersoepel"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="soortpagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="verwerkpagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nee"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="koppelpagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="optie">
+ <cd:constant type="dubbelzijdig"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="positioneer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="stelrastersin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="methode">
+ <cd:constant type="punt"/>
+ <cd:constant type="lijn"/>
+ <cd:constant type="extern"/>
+ </cd:parameter>
+ <cd:parameter name="resolutie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="raster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="stelachtergrondenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="boven"/>
+ <cd:constant type="hoofd"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="voet"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="papier"/>
+ <cd:constant type="linkerpagina"/>
+ <cd:constant type="rechterpagina"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="linkerrand"/>
+ <cd:constant type="linkermarge"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="rechtermarge"/>
+ <cd:constant type="rechterrand"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="haalbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="typebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definieerbuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="stelbufferin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alinea">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definieerblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="geenblokkenmeer"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="verbergblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="handhaafblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="alles"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="gebruikblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="verwerkblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="passeerblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forceerblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="selecteerblokken"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="criterium">
+ <cd:constant type="alles"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="stelblokin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="binnen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="formule"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="wiskunde"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="plaatsformule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="plaatssubformule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="hier" default="yes"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="inlinker"/>
+ <cd:constant type="inrechter"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="marge"/>
+ <cd:constant type="linkermarge"/>
+ <cd:constant type="rechtermarge"/>
+ <cd:constant type="linkerrand"/>
+ <cd:constant type="rechterrand"/>
+ <cd:constant type="binnenmarge"/>
+ <cd:constant type="buitenmarge"/>
+ <cd:constant type="binnenrand"/>
+ <cd:constant type="buitenrand"/>
+ <cd:constant type="binnen"/>
+ <cd:constant type="buiten"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="naast"/>
+ <cd:constant type="altijd"/>
+ <cd:constant type="forceer"/>
+ <cd:constant type="lang"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="regel"/>
+ <cd:constant type="hoogte"/>
+ <cd:constant type="diepte"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definieerplaatsblok"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="stelplaatsblokin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxhoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="minbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="default">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paginaovergangen">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="linkermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechtermargeafstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="laag"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="lang"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="kenmerk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="selecteerpapier"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="soort">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="koppelpapier"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="breuk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="punten"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="items"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelitemsin"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelitemsin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="inmarge"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="onbekend"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="marge"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citaat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="midden" default="yes"/>
+ <cd:constant type="rechts"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citaat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citeer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelciterenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marge"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="toevoegen"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel" default="yes"/>
+ <cd:constant type="groot"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="definieeralineas"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="lijn">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="passend"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="binnen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tolerantie">
+ <cd:constant type="zeerstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="soepel"/>
+ <cd:constant type="zeersoepel"/>
+ <cd:constant type="rek"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="alinea"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="alinea"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelalineasin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="elk"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="breedte"/>
+ </cd:parameter>
+ <cd:parameter name="tolerantie">
+ <cd:constant type="zeerstreng"/>
+ <cd:constant type="streng"/>
+ <cd:constant type="soepel"/>
+ <cd:constant type="zeersoepel"/>
+ <cd:constant type="rek"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="binnen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="lijn">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="steltabin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="monster">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopletter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="labels"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definieertabulatie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabulatie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="gebruikexternfiguur"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="steltabulatiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="eenheid">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inspringen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="binnen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="lijnkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:parameter name="lijndikte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="blanko"/>
+ <cd:constant type="grid"/>
+ <cd:constant type="diepte"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="lijn">
+ <cd:constant type="normaal"/>
+ <cd:constant type="regel"/>
+ </cd:parameter>
+ <cd:parameter name="splitsen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="steltabellenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="afstand">
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="lijndikte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="lijnkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="links"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:parameter name="commandos">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrond">
+ <cd:constant type="raster"/>
+ <cd:constant type="kleur"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondraster">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="achtergrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definieertabelvorm"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="gebruikexternefiles"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:parameter name="file">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="gebruikexternefile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="gebruikexternfiguur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="schaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ </cd:parameter>
+ <cd:parameter name="bfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="scherm">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="preview">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="herhaal">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="object">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="methode">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="externfiguur"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="gebruikexternfiguur"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="stelexternefigurenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="optie">
+ <cd:constant type="kader"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="test"/>
+ </cd:parameter>
+ <cd:parameter name="object">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="hokjes">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="gebied">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="lokaal"/>
+ <cd:constant type="globaal"/>
+ <cd:constant type="default"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="maxbreedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="maxhoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="toonexternefiguren"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="gebruikexterngeluidsfragment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="twee"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="geg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="roteer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelroterenin"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelroterenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotatie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="normaal"/>
+ <cd:constant type="hoog"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="ruim"/>
+ <cd:constant type="diepte"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="spiegel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="schaal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="stelcombinatiesin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="voor">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="boven"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="nee"/>
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="normaal"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="plaatsnaastelkaar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="plaatsonderelkaar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelinteractieschermin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="rugwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rugoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kopoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="max"/>
+ <cd:constant type="passend"/>
+ <cd:constant type="dubbelzijdig"/>
+ <cd:constant type="bookmark"/>
+ </cd:parameter>
+ <cd:parameter name="wachttijd">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="scherm"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelpaginaovergangenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="stelinteractiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="menu">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="klik">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="splitsen">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="scherm">
+ <cd:constant type="nieuw"/>
+ </cd:parameter>
+ <cd:parameter name="openactie">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="sluitactie">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="openpaginaactie">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="sluitpaginaactie">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="bereken">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="contrastkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="symboolset">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="auteur">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="datum">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="trefwoord">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definieerinteractiemenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="links">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="midden">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="geen"/>
+ <cd:constant type="lokaal"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="overlay"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="zelfdepagina">
+ <cd:constant type="ja"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="onbekendeverwijzing">
+ <cd:constant type="ja"/>
+ <cd:constant type="leeg"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="geen"/>
+ </cd:parameter>
+ <cd:parameter name="linkeroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="rechteroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bovenoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="onderoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="positie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definieerinteractiemenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelinteractiemenuin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="interactiemenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="blokkeerinteractiemenu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="boven"/>
+ <cd:constant type="onder"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="gebruikexterndocument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="gebruikURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="koppeldocument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="file"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="uit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="interactiebalk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="stelinteractiebalkin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="interactiebuttons"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="stelinteractiebalkin"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelinteractiebalkin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="variant">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoogte"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoogte"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stap">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="middel"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchroniseer"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelsynchronisatiebalkin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="pagina"/>
+ <cd:constant type="lokaal"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="hoogte"/>
+ <cd:constant type="passend"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="synchronisatiebalk"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="variant">
+ <cd:constant type="pagina"/>
+ <cd:constant type="lokaal"/>
+ </cd:parameter>
+ <cd:inherit name="stelsynchronisatiebalkin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelsynchronisatiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definieerprofiel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelprofielenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="optie">
+ <cd:constant type="test"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="volgprofiel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="plaatsbookmarks"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="bookmark"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="versie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelversiesin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nummer">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="markeerversie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="selecteerversie"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definieerversie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="volgversie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="volgprofielversie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definieerprogramma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelprogrammasin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="gebied">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="programma"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="kader">
+ <cd:constant type="aan"/>
+ <cd:constant type="uit"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="naar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="naarbox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="button"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="stelbuttonsin"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="stelbuttonsin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="stelomlijndin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="stelcommentaarin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="status">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titel">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="spatie">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
+ <cd:parameter name="symbool">
+ <cd:constant type="normaal"/>
+ <cd:constant type="Nieuw"/>
+ <cd:constant type="Ballon"/>
+ <cd:constant type="Toevoeging"/>
+ <cd:constant type="Help"/>
+ <cd:constant type="Paragraaf"/>
+ <cd:constant type="Sleutel"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="max"/>
+ <cd:constant type="buffer"/>
+ </cd:parameter>
+ <cd:parameter name="marge">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="commentaar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelcommentaarin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="commentaar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelcommentaarin"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definieerveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definieersubveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="copieerveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="kloonveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="veld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="passendveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="invulveld"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="suggestie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="links"/>
+ <cd:constant type="rechts"/>
+ <cd:constant type="midden"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="toonvelden"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="registreervelden"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stelveldin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="label"/>
+ <cd:constant type="horizontaal"/>
+ <cd:constant type="vertikaal"/>
+ <cd:constant type="kader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelveldenin"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stelveldenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="label"/>
+ <cd:constant type="horizontaal"/>
+ <cd:constant type="vertikaal"/>
+ <cd:constant type="kader"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voor">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="na">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="letter">
+ <cd:constant type="normaal"/>
+ <cd:constant type="vet"/>
+ <cd:constant type="schuin"/>
+ <cd:constant type="vetschuin"/>
+ <cd:constant type="type"/>
+ </cd:parameter>
+ <cd:parameter name="uitlijnen">
+ <cd:constant type="links"/>
+ <cd:constant type="midden"/>
+ <cd:constant type="rechts"/>
+ </cd:parameter>
+ <cd:parameter name="optie">
+ <cd:constant type="alleenleesbaar"/>
+ <cd:constant type="verplicht"/>
+ <cd:constant type="beschermd"/>
+ <cd:constant type="gesorteerd"/>
+ <cd:constant type="nietbeschikbaar"/>
+ <cd:constant type="verborgen"/>
+ <cd:constant type="printbaar"/>
+ </cd:parameter>
+ <cd:parameter name="klikin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="klikuit">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="gebiedin">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="gebieduit">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="natoets">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="formatteer">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="valideer">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="bereken">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="veldoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veldkaderkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="veldachtergrondkleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="omlijnd"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stelformulierenin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="methode">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definieerveldstapel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelveldenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="veldstapel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelveldenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="clip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelclipin"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="stelclipin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="plaatslegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="stellegendain"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="tussen">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="plaats">
+ <cd:constant type="rechts"/>
+ <cd:constant type="onder"/>
+ </cd:parameter>
+ <cd:parameter name="korps">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="klein"/>
+ <cd:constant type="groot"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definieerlijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stellijnin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="plaatslijn"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="stellijnin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="diepte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoogte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="breedte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voorwit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nawit">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="kleur">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definieertekstvariabele"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="steltekstvariabelein"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="steltekstvariabelein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="links">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="rechts">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="afstand">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="commando">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="ja"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="kentekstvariabeletoe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="plaatstekstvariabele"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="tekstvariabele"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definerawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelinterliniein"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="switchtorawfont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definieertekstpositie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="stelpositionerenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="steltekstpositiein"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="stelpositionerenin"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="positioneertekst"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="stelstrutin"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="ja" default="yes"/>
+ <cd:constant type="nee"/>
+ <cd:constant type="kap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/cont-ro.xml b/Master/texmf-dist/tex/context/interface/cont-ro.xml
new file mode 100644
index 00000000000..bd91e522315
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/cont-ro.xml
@@ -0,0 +1,10229 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2004.11.17">
+
+<cd:command name="installlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="instalarelimba"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatiere">
+ <cd:constant type="impachetat"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="lefthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="righthyphenmin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="propozitiestanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="propozitiedreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="subpropozitiestanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="subpropozitiedreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="minicitatstanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="minicitatdreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citatstanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="citatdreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="implicit">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="setarelimba"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="instalarelimba"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="language">
+ <cd:sequence>
+ <cd:string value="limba"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mainlanguage" file="lang-ini.tex">
+ <cd:sequence>
+ <cd:string value="limbaprincipala"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="nl"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="translate" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="traduce"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useencoding" file="enco-ini.tex">
+ <cd:sequence>
+ <cd:string value="folosestecodificarea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usespecials" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="folosestespeciale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="definesteoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoutput" file="spec-ini.tex">
+ <cd:sequence>
+ <cd:string value="setareoutput"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestemediulfonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicit"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="script">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scriptscript">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="xx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mic">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mare">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfontenvironment" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazamediulfonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="seteazafonttext"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazafonttext"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfontenvironment">
+ <cd:sequence>
+ <cd:string value="afiseazamediufonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="seteazafonttext"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestefonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="implicit"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="rm"/>
+ <cd:constant type="ss"/>
+ <cd:constant type="tt"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="hw"/>
+ <cd:constant type="cg"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="tf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bf">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sl">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="it">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bs">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="bi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ex">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mi">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="ma">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mb">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="mc">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showbodyfont">
+ <cd:sequence>
+ <cd:string value="afiseazafonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="seteazafonttext"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbodyfont">
+ <cd:sequence>
+ <cd:string value="seteazafonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="serif"/>
+ <cd:constant type="regular"/>
+ <cd:constant type="roman"/>
+ <cd:constant type="sans"/>
+ <cd:constant type="suport"/>
+ <cd:constant type="sansserif"/>
+ <cd:constant type="mono"/>
+ <cd:constant type="type"/>
+ <cd:constant type="teletype"/>
+ <cd:constant type="scrismanual"/>
+ <cd:constant type="caligrafic"/>
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtobodyfont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="trecilafonttext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="global"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefont" file="font-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestefont"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="seteazastrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="da" default="yes"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazaculoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolors" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazaculori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="global"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="totdeauna"/>
+ </cd:parameter>
+ <cd:parameter name="reducere">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="rgb">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="cmyk">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="mpcmyk">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="mpspot">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="culoaretext">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="c"/>
+ <cd:constant type="m"/>
+ <cd:constant type="y"/>
+ <cd:constant type="k"/>
+ <cd:constant type="p"/>
+ <cd:constant type="s"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="tot"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definesteculoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="r">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="g">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="b">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="c">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="k">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="s">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="h">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="t">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="a">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="p">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="e">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" type="environment" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="culoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="color" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="culoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="graycolor" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="culoaregri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolor">
+ <cd:sequence>
+ <cd:string value="afiseazaculoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestepaleta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppalet" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazapaleta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecolorgroup" file="colo-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestegrupculori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="rgb" default="yes"/>
+ <cd:constant type="cmyk"/>
+ <cd:constant type="gri"/>
+ <cd:constant type="s"/>
+ </cd:keywords>
+ <cd:triplet list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showpalet">
+ <cd:sequence>
+ <cd:string value="afiseazapaleta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="orizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="nume"/>
+ <cd:constant type="valoare"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showcolorgroup">
+ <cd:sequence>
+ <cd:string value="afiseazagrupculoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="orizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="nume"/>
+ <cd:constant type="valoare"/>
+ <cd:variable type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparepalet">
+ <cd:sequence>
+ <cd:string value="comparapaleta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comparecolorgroup">
+ <cd:sequence>
+ <cd:string value="comparagrupculoare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showmakeup" file="supp-vis.tex">
+ <cd:sequence>
+ <cd:string value="afiseazamakeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definetype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definetype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazatype"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptype" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="seteazatype"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatiu">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="inclinat"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="type" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="type"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typ" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="typ"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tex" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="tex"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="arg" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="arg"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="definestetyping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="fisier"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazatyping"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptyping" file="core-ver.tex">
+ <cd:sequence>
+ <cd:string value="seteazatyping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="fisier"/>
+ <cd:constant type="typing"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="spatiu">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="inclinat"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="comenzi"/>
+ <cd:constant type="culoare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="comandai">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comandav">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comandac">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="marginepara">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margineimpara">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="blanc">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="jumatatelinie"/>
+ <cd:constant type="linie"/>
+ </cd:parameter>
+ <cd:parameter name="escape">
+ <cd:constant type="cd:character"/>
+ </cd:parameter>
+ <cd:parameter name="spatiu">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="tab">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="paleta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="linii">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="despsilabe"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typing" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="typing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="typefile" file="verb-ini.tex">
+ <cd:sequence>
+ <cd:string value="typefile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="seteazanotasubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ </cd:parameter>
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="pagina"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="coloane"/>
+ <cd:constant type="firstcolumn"/>
+ <cd:constant type="lastcolumn"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="rigla">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantacoloane">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantamargine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="comandanumar">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandatext">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="tolerant"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="foartestrict"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stiltext">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoaretext">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="interactiune">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootnotedefinition" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="seteazadefinireanotasubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="definestedescriere"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnote" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="notasubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="footnotetext" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="footnotetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="note" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="nota"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="localfootnotes" type="environment">
+ <cd:sequence>
+ <cd:string value="localfootnotes"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelocalfootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="punenotesubsollocale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazanotasubsol"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefootnotes" file="core-not.tex">
+ <cd:sequence>
+ <cd:string value="punenotesubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazanotasubsol"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupunderbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="seteazasublinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ <cd:parameter name="grosimerigla">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetjos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetsus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoarerigla">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sublinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="underbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="sublinii"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbar" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="barasus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overbars" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="supralinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrike" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="liniepeste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overstrikes" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="liniipeste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="numereromane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Romannumerals" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Numereromane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="numbers" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="numere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="litera"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Character" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Litera"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="litere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Characters" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="Litere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mediaeval" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="mediaeval"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="month" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="luna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="MONTH" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="LUNA"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="weekday" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="zidinsaptamana"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WEEKDAY" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="ZIDINSAPTAMANA"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcapitals" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="seteazamajuscule"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="titlu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="sc">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="cap" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nocap">
+ <cd:sequence>
+ <cd:string value="nocap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="CAP">
+ <cd:sequence>
+ <cd:string value="CAP"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Cap">
+ <cd:sequence>
+ <cd:string value="Cap"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Caps">
+ <cd:sequence>
+ <cd:string value="Caps"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORD" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="CUVANT"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="WORDS" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="CUVINTE"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Word" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Cuvant"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="Words" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="Cuvinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="stretched" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="intins"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:word/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestesimbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefiguresymbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="definestesimbolfigura"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="figuraexterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbol" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="simbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="symbolset" type="environment">
+ <cd:sequence>
+ <cd:string value="symbolset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsymbolset" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazasimbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usesymbols" file="symb-ini.tex">
+ <cd:sequence>
+ <cd:string value="folosestesimboluri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showsymbolset">
+ <cd:sequence>
+ <cd:string value="afiseazasetsimboluri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineconversion" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="definesteconversie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="convertnumber" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="convertestenumar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="seteazatexttitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplabeltext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="seteazatexteticheta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="nl" default="yes"/>
+ <cd:constant type="fr"/>
+ <cd:constant type="en"/>
+ <cd:constant type="uk"/>
+ <cd:constant type="de"/>
+ <cd:constant type="es"/>
+ <cd:constant type="cz"/>
+ <cd:constant type=".."/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="cd:name">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headtext" file="lang-lab.tex">
+ <cd:sequence>
+ <cd:string value="texttitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeltext">
+ <cd:sequence>
+ <cd:string value="texteticheta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazaliniimargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="nivel">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="grosimerigla">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule" type="environment">
+ <cd:sequence>
+ <cd:string value="liniemargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginrule">
+ <cd:sequence>
+ <cd:string value="liniemargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinewidth" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazagrosimelinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazainconjurat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="fixat"/>
+ <cd:constant type="local"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="overlay"/>
+ <cd:constant type="implicit"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="adancime"/>
+ <cd:constant type="suspendat"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="lohi"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="subsol"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="gol"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="global"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="nu"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="lohi"/>
+ </cd:parameter>
+ <cd:parameter name="jos">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="sus">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="framesus">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="framejos">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="framestanga">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="framedreapta">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="offsetframe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="adancimeframe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="coltframe">
+ <cd:constant type="rotund"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="razaframe">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoareframe">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fundal">
+ <cd:constant type="ecran"/>
+ <cd:constant type="culoare"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="primplan"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="ecranfundal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="culoarefundal">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="offsetfundal">
+ <cd:constant type="incadrat"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="adancimefundal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="coltfundal">
+ <cd:constant type="rotund"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="razafundal">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="colt">
+ <cd:constant type="rotund"/>
+ <cd:constant type="rectangular"/>
+ </cd:parameter>
+ <cd:parameter name="raza">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="gol">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundcolor">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="foregroundstyle">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="framed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="inframed"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="thinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="liniisubtiri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes">
+ <cd:inherit name="seteazaliniesubtire"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupthinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazaliniesubtire"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="spatiereinterliniara">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="culoarefundal">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ </cd:parameter>
+ <cd:parameter name="grosimerigla">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fundal">
+ <cd:constant type="culoare"/>
+ </cd:parameter>
+ <cd:parameter name="culoarefundal">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hairline" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="firdepar"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="thinrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="liniesubtire"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineframedtext" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definestetextinconjurat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="definestetexteinconjurate"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineframed" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definesteinconjurare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="definestetexteinconjurate"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupframedtexts" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definestetexteinconjurate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intern">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="corectielinie">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="corectieadancime">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="standard"/>
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="textinconjurat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="niciunul"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="definestetexteinconjurate"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="framedtext" generated="yes">
+ <cd:sequence>
+ <cd:variable value="textinconjurat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="definestetexteinconjurate"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="background" type="environment">
+ <cd:sequence>
+ <cd:string value="fundal"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="background">
+ <cd:sequence>
+ <cd:string value="fundal"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupbackground" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazafundal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="offsetstanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetdreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetsus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetjos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinrules">
+ <cd:sequence>
+ <cd:string value="rigleumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazarigleumplere"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillintext">
+ <cd:sequence>
+ <cd:string value="textumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazarigleumplere"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazarigleumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="spatiereinterliniara">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinline">
+ <cd:sequence>
+ <cd:string value="linieumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaliniiumplere"/>
+ </cd:assignments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfillinlines" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazaliniiumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazarigletext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="inmargine"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoarerigla">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="riglatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textrule" type="environment" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="riglatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ </cd:keywords>
+ <cd:content optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrule" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="linieneagra"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaliniinegre"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="blackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="liniinegre"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaliniinegre"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblackrules" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazaliniinegre"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineoverlay" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="definesteoverlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usemodule">
+ <cd:sequence>
+ <cd:string value="folosestemodul"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reset" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="reset"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="donttest">
+ <cd:sequence>
+ <cd:string value="nutesta"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="localenvironment" type="environment">
+ <cd:sequence>
+ <cd:string value="localenvironment"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsystem" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="seteazasistem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rezolutie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="fisier">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="director">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aleator">
+ <cd:constant type="normal"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usedirectory">
+ <cd:sequence>
+ <cd:string value="usedirectory"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ <cd:constant type="reset"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="low" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="jos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="high" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="inalt"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lohi" file="core-fnt.tex">
+ <cd:sequence>
+ <cd:string value="jossus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showframe">
+ <cd:sequence>
+ <cd:string value="afiseazarama"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="leftaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="aliniatstanga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rightaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="aliniatdreapta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="midaligned" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="aliniatcentru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="wordright" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="cuvantdreapta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inmargin" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="marginal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inothermargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="inaltamargine"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inleft">
+ <cd:sequence>
+ <cd:string value="instanga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inright">
+ <cd:sequence>
+ <cd:string value="indreapta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ininner">
+ <cd:sequence>
+ <cd:string value="ininner"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inouter">
+ <cd:sequence>
+ <cd:string value="inouter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="column">
+ <cd:sequence>
+ <cd:string value="coloana"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showstruts" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="afiseazastruts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showsetups">
+ <cd:sequence>
+ <cd:string value="afiseazasetari"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="showlayout">
+ <cd:sequence>
+ <cd:string value="afiseazaaspect"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="margintext" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="textmarginal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="jos"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarginblocks" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazablocurimarginale"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="inmargine"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="sus">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="jos">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marginblock" type="environment">
+ <cd:sequence>
+ <cd:string value="marginblock"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="part" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="part"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="title" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="title"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chapter" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="chapter"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="section" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="section"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsection"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="subsubsubject" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="subsubsubject"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="appendix" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="appendix"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="in" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="in"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="at">
+ <cd:sequence>
+ <cd:string value="la"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="about">
+ <cd:sequence>
+ <cd:string value="despre"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="yes"/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="somewhere" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="undeva"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="atpage" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="lapagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ref" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="ref"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="t"/>
+ <cd:constant type="p"/>
+ <cd:constant type="r"/>
+ <cd:constant type="s"/>
+ <cd:constant type="e"/>
+ </cd:keywords>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textreference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="referintatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="referintapagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="referinta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usereferences" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="folosestereferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereference" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definestereferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferenceformat" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definesteformatreferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="eticheta">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hl">
+ <cd:sequence>
+ <cd:string value="hl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="vl">
+ <cd:sequence>
+ <cd:string value="vl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="godown" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="injos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="whitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="spatiualb"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nowhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="faraspatiualb"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="crlf" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="crlf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="space" file="syst-pln.tex">
+ <cd:sequence>
+ <cd:string value="spatiu"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="fixedspaces" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="spatiifixate"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="emptylines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="emptylines"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nospace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="faraspatiu"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="packed" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impachetat"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupdescriptions" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="seteazadescriere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="exemplu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="standard"/>
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="serried"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="instanga"/>
+ <cd:constant type="indreapta"/>
+ <cd:constant type="suspendat"/>
+ </cd:parameter>
+ <cd:parameter name="headcommand">
+ </cd:parameter>
+ <cd:parameter name="suspenda">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="aliniat">
+ <cd:constant type="niciodata"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="da"/>
+ <cd:constant type="totdeauna"/>
+ <cd:constant type="primul"/>
+ <cd:constant type="urmatorul"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupenumerations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="seteazaenumerare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="definestedescriere"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineenumeration" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definesteenumerare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaenumerare"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumerare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing interactive="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="enumeration" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="enumerare"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definedescription" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definestedescriere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazadescriere"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" generated="yes">
+ <cd:sequence>
+ <cd:variable value="descriere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="description" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="descriere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindentations" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="seteazaaliniate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="exemplu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineindenting" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definestealiat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaaliniate"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="indentation" generated="yes" file="core-spa.tex">
+ <cd:sequence>
+ <cd:variable value="indentation"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelabel" file="core-des.tex">
+ <cd:sequence>
+ <cd:string value="definesteeticheta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="inmargine"/>
+ <cd:constant type="intext"/>
+ </cd:parameter>
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="blockway">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoaretitlu">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labeling" generated="yes">
+ <cd:sequence>
+ <cd:variable value="labeling"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcolumns" file="page-mul.tex">
+ <cd:sequence>
+ <cd:string value="seteazacoloane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nsus">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rigla">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="toleranta">
+ <cd:constant type="foartestrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="foartetolerant"/>
+ <cd:constant type="dilatat"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="balanta">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="blanc">
+ <cd:constant type="fixat"/>
+ <cd:constant type="jumatatelinie"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="flexibil"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mic"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="fundal"/>
+ </cd:parameter>
+ <cd:parameter name="directie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="columns" type="environment">
+ <cd:sequence>
+ <cd:string value="columns"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazacoloane"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="definestetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="antet"/>
+ <cd:constant type="subsol"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheader" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazaantet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="faramarcare"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilstanga">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stildreapta">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latimestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfooter" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazasubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptext" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptop" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazasus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottom" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazajos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaantet"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noheaderandfooterlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="faraliniiantetsisubsol"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="notopandbottomlines" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="faraliniisussijos"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupheadertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatexteantet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfootertexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatextesubsol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptexttexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatextetext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptoptexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatextesus"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbottomtexts" file="page-txt.tex">
+ <cd:sequence>
+ <cd:string value="seteazatextejos"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:variable type="cd:text" default="yes"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="bordura"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="data"/>
+ <cd:constant type="cd:mark"/>
+ <cd:constant type="numarpagina"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="definestemarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplemarking" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="cupleazamarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="decouplemarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="decupleazamarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="resetmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="reseteazamarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="seteazamarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="marking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="marcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getmarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="adumarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="primul"/>
+ <cd:constant type="ultim"/>
+ <cd:constant type="precedent"/>
+ <cd:constant type="ambele"/>
+ <cd:constant type="tot"/>
+ <cd:constant type="curent"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomarking" file="core-mar.tex">
+ <cd:sequence>
+ <cd:string value="faramarcaje"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplayout" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazaaspect"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuspate">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiusus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="antet">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="subsol">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="jos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="bordurastanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="borduradreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantaantet">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantasubsol">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantasus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantajos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantabordurastanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantacoltdreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetoriz">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="marcaje">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ <cd:constant type="culoare"/>
+ <cd:constant type="ecran"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="ofata"/>
+ <cd:constant type="douafete"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="linii">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="coloane">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distantacoloane">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="grid">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="spatiujos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="cutspace">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="textdistance">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latimetext">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="textmargin">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="clipoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="hartie">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adaptlayout" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="adapteazaaspect"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="linii">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showgrid" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="afiseazagrid"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placeongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="plaseazapegrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="mutapegrid"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="moveongrid" file="core-grd.tex">
+ <cd:sequence>
+ <cd:string value="mutapegrid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="sus"/>
+ <cd:constant type="ambele"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="-top"/>
+ <cd:constant type="-both"/>
+ <cd:constant type="-bottom"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="adancime"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="project" type="environment">
+ <cd:sequence>
+ <cd:string value="proiect"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="environment" type="environment">
+ <cd:sequence>
+ <cd:string value="mediu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="product" type="environment">
+ <cd:sequence>
+ <cd:string value="produs"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="component" type="environment">
+ <cd:sequence>
+ <cd:string value="componenta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:file/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomorefiles">
+ <cd:sequence>
+ <cd:string value="farafisiere"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupinterlinespace">
+ <cd:sequence>
+ <cd:string value="seteazaspatiuinterliniar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:choice>
+ <cd:keywords optional="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="mic" default="yes"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sus">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="jos">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:choice>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumbering" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumerotarepagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="ofata"/>
+ <cd:constant type="douafete"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="antet"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="marginebordura"/>
+ <cd:constant type="instanga"/>
+ <cd:constant type="indreapta"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="separatornumar">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="separatortext">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnarrower" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="seteazaingust"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mijloc">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="define" file="syst-ext.tex">
+ <cd:sequence>
+ <cd:string value="defineste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:csname/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="usecommands" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="folosestecomenzi"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definestartstop" file="core-sys.tex">
+ <cd:sequence>
+ <cd:string value="definestestartstop"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comenzi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheads" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="seteazatitluri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numarsectiune">
+ <cd:constant type="da"/>
+ <cd:variable type="cd:number"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="normal"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="centru"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="paragraf"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="alinieretitlu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="toleranta">
+ <cd:constant type="foartestrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="foartetolerant"/>
+ <cd:constant type="dilatat"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaptions" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazalegendele"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="max"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latimeminima">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="numar">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ </cd:parameter>
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcaption" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazalegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazalegendele"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloats" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazafloats"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuinainte">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="spatiudupa">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="spatiulateralinainte">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="spatiulateraldupa">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="nsus">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="njos">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nlinii">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="implicit">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="toleranta">
+ <cd:constant type="0"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="sidealign">
+ <cd:constant type="normal"/>
+ <cd:constant type="linie"/>
+ </cd:parameter>
+ <cd:parameter name="numerotare">
+ <cd:constant type="da"/>
+ <cd:constant type="nocheck"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloatsplitting" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazaimpartireafloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ </cd:parameter>
+ <cd:parameter name="linii">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="splitfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="impartefloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaimpartireafloat"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupoppositeplacing" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="seteazaplasareaopozita"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="opposite" type="environment">
+ <cd:sequence>
+ <cd:string value="opposite"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuphyphenmark" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazaliniesilabe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="semn">
+ <cd:constant type="--"/>
+ <cd:constant type="---"/>
+ <cd:constant type="-"/>
+ <cd:constant type="~"/>
+ <cd:constant type="("/>
+ <cd:constant type=")"/>
+ <cd:constant type="="/>
+ <cd:constant type="/"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppositioning" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="setarepozitie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="overlay"/>
+ </cd:parameter>
+ <cd:parameter name="unitate">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="absolut"/>
+ <cd:constant type="relativ"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="absolut"/>
+ <cd:constant type="relativ"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positioning" type="environment">
+ <cd:sequence>
+ <cd:string value="positioning"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="grid" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="grid"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="dy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xstep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ystep">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="unitate">
+ <cd:constant type="cm"/>
+ <cd:constant type="pt"/>
+ <cd:constant type="em"/>
+ <cd:constant type="mm"/>
+ <cd:constant type="ex"/>
+ <cd:constant type="es"/>
+ <cd:constant type="in"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="page" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="pagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="da" default="yes"/>
+ <cd:constant type="marcaj"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="preferinta"/>
+ <cd:constant type="preferintamare"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="dezactivat"/>
+ <cd:constant type="ultim"/>
+ <cd:constant type="cvadrupul"/>
+ <cd:constant type="par"/>
+ <cd:constant type="impar"/>
+ <cd:constant type="blank"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencing" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="seteazareferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="interactiune">
+ <cd:constant type="eticheta"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="tot"/>
+ <cd:constant type="simbol"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="convertestefisier">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autofile">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="pagina"/>
+ </cd:parameter>
+ <cd:parameter name="global">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupurl" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="seteazaurl"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="urlalternativ">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="ambele"/>
+ <cd:constant type="inainte"/>
+ <cd:constant type="dupa"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuurl">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scrieinlistareferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placereferencelist">
+ <cd:sequence>
+ <cd:string value="placereferencelist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definereferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definestelistareferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalistareferinte"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupreferencelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="seteazalistareferinte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="precedent"/>
+ <cd:constant type="tot"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scrieinlista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writebetweenlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="scrieintreliste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nolist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="faralista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="listsymbol" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="listsymbol"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="punelista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalista"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determinelistcharacteristics" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="determinacaracteristicilelistei"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalista"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="punelistacombinata"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalistacombinata"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definestelista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalista"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="seteazalista"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="..."/>
+ <cd:constant type="niciunul"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="cuplare">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="precedent"/>
+ <cd:constant type="curent"/>
+ <cd:constant type="tot"/>
+ </cd:parameter>
+ <cd:parameter name="marginipagina">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilnumar">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiltext">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilpagina">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ <cd:parameter name="comandanumar">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandatext">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandapagina">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="interactiune">
+ <cd:variable type="cd:sectionnumber"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="numarpagina"/>
+ <cd:constant type="tot"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="eticheta">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="numarpagina">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="numartitlu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="alinieretitlu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="..."/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definecombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="definestelistacombinata"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:list"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalistacombinata"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinedlist" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="seteazalistacombinata"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="nivel">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="3"/>
+ <cd:constant type="4"/>
+ <cd:constant type="cd:section"/>
+ <cd:constant type="curent"/>
+ </cd:parameter>
+ <cd:inherit name="seteazalista"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placecombinedlist" generated="yes" file="core-lst.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazalistacombinata"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completecombinedlist" generated="yes">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="combinedlist"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazalistacombinata"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupnumbering" file="core-num.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumerotare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupformulae">
+ <cd:sequence>
+ <cd:string value="setupformulae"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="marginestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuinainte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="publication" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="publicatie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppublications" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazapublicatii"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="apa"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:inherit name="seteazaenumerare"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplines" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="seteazalinii"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniat">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="par"/>
+ <cd:constant type="impar"/>
+ </cd:parameter>
+ <cd:parameter name="spatiu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="lines" type="environment">
+ <cd:sequence>
+ <cd:string value="lines"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphnumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumerotareparagrafe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="linie"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplinenumbering" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumerotarelinii"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="pas">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="intext"/>
+ <cd:constant type="inmargine"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="referinta">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="linenumbering" type="environment">
+ <cd:sequence>
+ <cd:string value="linenumbering"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="continuu"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="line" type="environment">
+ <cd:sequence>
+ <cd:string value="line"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="someline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="olinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="inline" file="page-lin.tex">
+ <cd:sequence>
+ <cd:string value="inlinie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinmargin" file="page-mar.tex">
+ <cd:sequence>
+ <cd:string value="seteazamarginal"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="ambele"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="intern"/>
+ <cd:constant type="extern"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="da"/>
+ </cd:parameter>
+ <cd:parameter name="linie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="separator">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stack">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumarpagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="mentine"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsubpagenumber" file="page-num.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumarsubpagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="mod">
+ <cd:constant type="bytext"/>
+ <cd:constant type="bycd:section"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblank">
+ <cd:sequence>
+ <cd:string value="seteazablanc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="normal" default="yes"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="fixat"/>
+ <cd:constant type="flexibil"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="definesteblanc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:inherit name="seteazablanc"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definepapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="definestedimensiunehartie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppaper" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="setuppaper"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="hartie">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiusus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuspate">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="max"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuppapersize" file="page-lay.tex">
+ <cd:sequence>
+ <cd:string value="seteazadimensiunihartie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="CD"/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="vedere"/>
+ <cd:constant type="oglindit"/>
+ <cd:constant type="rotat"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="A3"/>
+ <cd:constant type="A4" default="yes"/>
+ <cd:constant type="A5"/>
+ <cd:constant type="A6"/>
+ <cd:constant type="letter"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:name"/>
+ <cd:constant type="vedere"/>
+ <cd:constant type="oglindit"/>
+ <cd:constant type="rotat"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuparranging" file="page-imp.tex">
+ <cd:sequence>
+ <cd:string value="seteazaaranjareapag"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="dezactivat"/>
+ <cd:constant type="2*16"/>
+ <cd:constant type="2*8"/>
+ <cd:constant type="2*4"/>
+ <cd:constant type="2*2"/>
+ <cd:constant type="2**2"/>
+ <cd:constant type="2*2*4"/>
+ <cd:constant type="2*4*2"/>
+ <cd:constant type="2UP"/>
+ <cd:constant type="2DOWN"/>
+ <cd:constant type="2SIDE"/>
+ <cd:constant type="2TOP"/>
+ <cd:constant type="oglindit"/>
+ <cd:constant type="rotat"/>
+ <cd:constant type="douafete"/>
+ <cd:constant type="negativ"/>
+ <cd:constant type="90"/>
+ <cd:constant type="180"/>
+ <cd:constant type="270"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showprint">
+ <cd:sequence>
+ <cd:string value="afiseazatiparire"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="seteazadimensiunihartie"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:inherit name="seteazadimensiunihartie"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazaaspect"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definelogo" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="definestelogo"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="sus"/>
+ <cd:constant type="antet"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="subsol"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="bordurastanga"/>
+ <cd:constant type="marginestanga"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="marginedreapta"/>
+ <cd:constant type="borduradreapta"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:command"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelogos" file="page-log.tex">
+ <cd:sequence>
+ <cd:string value="punelogouri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupwhitespace">
+ <cd:sequence>
+ <cd:string value="seteazaspatiualb"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="niciunul" default="yes"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="fixat"/>
+ <cd:constant type="fix"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupindenting">
+ <cd:sequence>
+ <cd:string value="seteazaaliniat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="niciunul" default="yes"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="urmatorul"/>
+ <cd:constant type="primul"/>
+ <cd:constant type="normal"/>
+ <cd:constant type="impar"/>
+ <cd:constant type="par"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definesteblocsectiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazablocsectiune"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsectionblock" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="seteazablocsectiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="numar">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="da"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definestesectiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsection" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="seteazasectiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="conversie">
+ <cd:constant type="numere"/>
+ <cd:constant type="caractere"/>
+ <cd:constant type="Caractere"/>
+ <cd:constant type="numereromane"/>
+ <cd:constant type="Numereromane"/>
+ </cd:parameter>
+ <cd:parameter name="numarprecedent">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuphead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="seteazatitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiltext">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilnumar">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="culoaretext">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="culoarenumar">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="numar">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="numarpropriu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="da"/>
+ </cd:parameter>
+ <cd:parameter name="continua">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="antet">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="text">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="subsol">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="normal"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="centru"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="suspenda">
+ <cd:constant type="niciunul"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="linie"/>
+ <cd:variable type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:twoarguments"/>
+ </cd:parameter>
+ <cd:parameter name="comandanumar">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="comandatext">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="+"/>
+ <cd:constant type="-"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="punetitlu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="gol"/>
+ </cd:parameter>
+ <cd:parameter name="numarincrement">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:variable type="cd:list"/>
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="resetnumber">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="fisier">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="textmargine">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:inherit name="seteazatitluri"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="seteazanumartitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="+cd:number"/>
+ <cd:constant type="-cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="headnumber">
+ <cd:sequence>
+ <cd:string value="numartitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="determineheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="determinanumartitlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentheadnumber" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="numartitlucurent"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="nextsection" generated="yes" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="next"/>
+ <cd:variable value="sectiune"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definehead" file="core-sec.tex">
+ <cd:sequence>
+ <cd:string value="definesteantet"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:section"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitemgroup" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="setupitemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="fiecare"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="impachetat"/>
+ <cd:constant type="despachetat"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unit"/>
+ <cd:constant type="lamargine"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="autointro"/>
+ <cd:constant type="larg"/>
+ <cd:constant type="repetat"/>
+ <cd:variable type="cd:section"/>
+ <cd:constant type="intext"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="margine">
+ <cd:constant type="nu"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginestanga">
+ <cd:constant type="nu"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="marginedreapta">
+ <cd:constant type="nu"/>
+ <cd:constant type="standard"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="elemente">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="start">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="inaintetitlu">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupatitlu">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilmarcaj">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilsimbol">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stopper">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="aliniaturmator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="itemgroup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="itemgroup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="a"/>
+ <cd:constant type="A"/>
+ <cd:constant type="KA"/>
+ <cd:constant type="n"/>
+ <cd:constant type="N"/>
+ <cd:constant type="m"/>
+ <cd:constant type="r"/>
+ <cd:constant type="R"/>
+ <cd:constant type="KR"/>
+ <cd:constant type="cd:number"/>
+ <cd:constant type="continuu"/>
+ <cd:constant type="standard" default="yes"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="impachetat"/>
+ <cd:constant type="stopper"/>
+ <cd:constant type="unit"/>
+ <cd:constant type="lamargine"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="intro"/>
+ <cd:constant type="coloane"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setupitemgroup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="item">
+ <cd:sequence>
+ <cd:string value="element"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="but">
+ <cd:sequence>
+ <cd:string value="but"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="its">
+ <cd:sequence>
+ <cd:string value="el"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="ran">
+ <cd:sequence>
+ <cd:string value="ran"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="head">
+ <cd:sequence>
+ <cd:string value="titlu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mar">
+ <cd:sequence>
+ <cd:string value="mar"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sub">
+ <cd:sequence>
+ <cd:string value="sub"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sym" file="core-itm.tex">
+ <cd:sequence>
+ <cd:string value="sim"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nop">
+ <cd:sequence>
+ <cd:string value="nop"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="definesteregistru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="seteazaregistru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="balanta">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilpagina">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stiltext">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="indicator">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="cuplare">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="cd:sectionnumber">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="cd:section"/>
+ <cd:constant type="local"/>
+ <cd:constant type="tot"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="interactiune">
+ <cd:constant type="numarpagina"/>
+ <cd:variable type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="referinta">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="latimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="referintanecunoscuta">
+ <cd:constant type="gol"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="A"/>
+ <cd:constant type="B"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="register" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="startregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="start"/>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="writetoregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="scrieinregistru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="coupled"/>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:index/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupleregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="cupleazaregistru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="puneregistru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaregistru"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="seeregister" generated="yes">
+ <cd:sequence>
+ <cd:string value="see"/>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:index list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="complete"/>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="seteazaregistru"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeregister" generated="yes" file="core-reg.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="registru"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="yes" optional="yes" list="yes">
+ <cd:inherit name="seteazaregistru"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definestesinonim"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynonyms" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="seteazasinonime"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stiltext">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stilsinonim">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="serried"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="instanga"/>
+ <cd:constant type="indreapta"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="tot"/>
+ <cd:constant type="folosit"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:threearguments"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synonym" generated="yes">
+ <cd:sequence>
+ <cd:variable value="synonym"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsynonyms" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="synonyms"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definesorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="definestesortare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:command"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsorting" file="core-syn.tex">
+ <cd:sequence>
+ <cd:string value="seteazasortare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="criteriu">
+ <cd:constant type="tot"/>
+ <cd:constant type="folosit"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="expansiune">
+ <cd:constant type="da"/>
+ <cd:variable type="cd:command"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="sort" generated="yes">
+ <cd:sequence>
+ <cd:variable value="sort"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="completelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="placelistofsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="loadsorts" generated="yes">
+ <cd:sequence>
+ <cd:string value="load"/>
+ <cd:variable value="sorts"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="definemakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="definestemakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazamakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="makeup" type="environment">
+ <cd:sequence>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazamakeup"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupmakeup" file="page-mak.tex">
+ <cd:sequence>
+ <cd:string value="seteazamakeup"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="stanga"/>
+ <cd:constant type="da"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="comenzi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="douafete">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="gol"/>
+ </cd:parameter>
+ <cd:parameter name="stareantet">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="staresubsol">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="staretext">
+ <cd:constant type="normal"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="faramarcare"/>
+ </cd:parameter>
+ <cd:parameter name="staresus">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="starejos">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="pagestate">
+ <cd:constant type="stop"/>
+ <cd:constant type="start"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="namemakeup" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="nume"/>
+ <cd:string value="makeup"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="version">
+ <cd:sequence>
+ <cd:string value="versiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="final" default="yes"/>
+ <cd:constant type="concept"/>
+ <cd:constant type="temporar"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="currentdate">
+ <cd:sequence>
+ <cd:string value="datacurenta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:inherit name="data"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="date" file="core-con.tex">
+ <cd:sequence>
+ <cd:string value="data"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="d">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="m">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="referraldate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="datareferit"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="indenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="aliniat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="niciodata" default="yes"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="da"/>
+ <cd:constant type="totdeauna"/>
+ <cd:constant type="primul"/>
+ <cd:constant type="urmatorul"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="noindenting" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="faraaliniat"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="blank" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="blanc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare" default="yes"/>
+ <cd:constant type="faraalb"/>
+ <cd:constant type="inapot"/>
+ <cd:constant type="alb"/>
+ <cd:constant type="dezactivat"/>
+ <cd:constant type="fortat"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="jumatatelinie"/>
+ <cd:variable type="cd:formula"/>
+ <cd:constant type="fixat"/>
+ <cd:constant type="flexibil"/>
+ <cd:constant type="niciunul"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="packed" type="environment" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="impachetat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="blank"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="unpacked" type="environment">
+ <cd:sequence>
+ <cd:string value="unpacked"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="linecorrection" type="environment">
+ <cd:sequence>
+ <cd:string value="linecorrection"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="correctwhitespace" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="corecteazaspatiualb"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="postponing" type="environment">
+ <cd:sequence>
+ <cd:string value="postponing"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="local" type="environment">
+ <cd:sequence>
+ <cd:string value="local"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="narrower" type="environment">
+ <cd:sequence>
+ <cd:string value="narrower"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru" default="yes"/>
+ <cd:constant type="dreapta"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="hiding" type="environment">
+ <cd:sequence>
+ <cd:string value="hiding"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupalign" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="seteazaalinierea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="latime"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="intern"/>
+ <cd:constant type="extern"/>
+ <cd:constant type="larg"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="inaltime"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="suspendat"/>
+ <cd:constant type="nothanging"/>
+ <cd:constant type="despsilabe"/>
+ <cd:constant type="nedespsilabe"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="alignment" type="environment">
+ <cd:sequence>
+ <cd:string value="alignment"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:inherit name="seteazaalinierea"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupspacing">
+ <cd:sequence>
+ <cd:string value="seteazaspatiu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="broad"/>
+ <cd:constant type="impachetat"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptolerance" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="seteazatoleranta"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="orizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="dilatat"/>
+ <cd:constant type="spatiu"/>
+ <cd:constant type="foartestrict" default="yes"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="foartetolerant"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="pagetype" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="tippagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processpage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="proceseazapagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="da" default="yes"/>
+ <cd:constant type="nu"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepage" file="page-ini.tex">
+ <cd:sequence>
+ <cd:string value="paginadubla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="optiune">
+ <cd:constant type="douafete"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="position" file="page-lyr.tex">
+ <cd:sequence>
+ <cd:string value="pozitie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:position list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupscreens" file="core-rul.tex">
+ <cd:sequence>
+ <cd:string value="seteazaecrane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metoda">
+ <cd:constant type="punct"/>
+ <cd:constant type="rigla"/>
+ <cd:constant type="extern"/>
+ </cd:parameter>
+ <cd:parameter name="rezolutie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ecran">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbackgrounds" file="page-bck.tex">
+ <cd:sequence>
+ <cd:string value="seteazafundaluri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="sus"/>
+ <cd:constant type="antet"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="foaie"/>
+ <cd:constant type="paginastanga"/>
+ <cd:constant type="paginadreapta"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="bordurastanga"/>
+ <cd:constant type="marginestanga"/>
+ <cd:variable type="cd:text"/>
+ <cd:constant type="marginedreapta"/>
+ <cd:constant type="borduradreapta"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:variable type="cd:repeat"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="buffer" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="buffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="getbuffer">
+ <cd:sequence>
+ <cd:string value="adubuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="typebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="scriebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definebuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definestebuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuffer" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="seteazabuffer"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="paragraf">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="definestebloc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="nomoreblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="gatablocuri"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="hideblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="ascundeblocuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="keepblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="pastreazablocuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="tot"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="folosestebloc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="processblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="proceseazabloc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bypassblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="saripesteblocuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="forceblocks">
+ <cd:sequence>
+ <cd:string value="forteazablocuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectblocks" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="selecteazablocuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes">
+ <cd:parameter name="criteriu">
+ <cd:constant type="tot"/>
+ <cd:constant type="cd:section"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupblock" file="core-buf.tex">
+ <cd:sequence>
+ <cd:string value="seteazabloc"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intern">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="fisier">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="formula" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="formula"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="mathematics" file="supp-mat.tex">
+ <cd:sequence>
+ <cd:string value="matematica"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="puneformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesubformula" file="core-mat.tex">
+ <cd:sequence>
+ <cd:string value="punesubformula"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content optional="yes"/>
+ <cd:displaymath/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placefloat" generated="yes" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="place"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="aici" default="yes"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="instanga"/>
+ <cd:constant type="indreapta"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="margine"/>
+ <cd:constant type="marginestanga"/>
+ <cd:constant type="marginedreapta"/>
+ <cd:constant type="bordurastanga"/>
+ <cd:constant type="borduradreapta"/>
+ <cd:constant type="innermargin"/>
+ <cd:constant type="outermargin"/>
+ <cd:constant type="inneredge"/>
+ <cd:constant type="outeredge"/>
+ <cd:constant type="intern"/>
+ <cd:constant type="extern"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="pagina"/>
+ <cd:constant type="opus"/>
+ <cd:constant type="totdeauna"/>
+ <cd:constant type="fortat"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="reset"/>
+ <cd:constant type="linie"/>
+ <cd:constant type="inaltime"/>
+ <cd:constant type="adancime"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="reservefloat" generated="yes">
+ <cd:sequence>
+ <cd:string value="reserve"/>
+ <cd:variable value="float"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:reference optional="yes" list="yes"/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="definestefloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:singular"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:plural"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfloat" file="page-flt.tex">
+ <cd:sequence>
+ <cd:string value="seteazafloat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latimeminima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="implicit">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="marginipagina">
+ <cd:constant type="cd:list"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginestanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distantamarginedreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="floattext" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="float"/>
+ <cd:string value="text"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="jos"/>
+ <cd:constant type="offset"/>
+ <cd:constant type="inalt"/>
+ </cd:keywords>
+ <cd:reference optional="yes"/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="placelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="completelistoffloats" generated="yes">
+ <cd:sequence>
+ <cd:string value="completelistof"/>
+ <cd:variable value="floats"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="referral" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="referit"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="bet">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ken">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dat">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="van">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="aan">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="ref">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="selectpaper">
+ <cd:sequence>
+ <cd:string value="selecteazahartie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="familie">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="couplepaper">
+ <cd:sequence>
+ <cd:string value="hartiedubla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="chem" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="chem"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fraction" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="fractie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="periods" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="puncte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="items">
+ <cd:sequence>
+ <cd:string value="element"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaelemente"/>
+ </cd:assignments>
+ <cd:content list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupitems" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazaelemente"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="inmargine"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="1"/>
+ <cd:constant type="2"/>
+ <cd:constant type="..."/>
+ <cd:constant type="n"/>
+ <cd:constant type="a"/>
+ <cd:constant type="..."/>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="necunoscut"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="margine"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" type="environment" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru" default="yes"/>
+ <cd:constant type="dreapta"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quotation" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="citat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="quote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="minicitat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupquote" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazaminicitat"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:variable type="cd:text"/>
+ <cd:constant type="margine"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="adding">
+ <cd:sequence>
+ <cd:string value="adauga"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu" default="yes"/>
+ <cd:constant type="mare"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="definesteparagraf"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="rigla">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="ajustat"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intern">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="toleranta">
+ <cd:constant type="foartestrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="foartetolerant"/>
+ <cd:constant type="dilatat"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="paragraph" generated="yes">
+ <cd:sequence>
+ <cd:variable value="paragraf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="paragraph" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="paragraf"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupparagraphs" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazaparagrafe"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="fiecare"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="latime"/>
+ </cd:parameter>
+ <cd:parameter name="toleranta">
+ <cd:constant type="foartestrict"/>
+ <cd:constant type="strict"/>
+ <cd:constant type="tolerant"/>
+ <cd:constant type="foartetolerant"/>
+ <cd:constant type="dilatat"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intern">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="rigla">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptab" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazatab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="exemplu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stiltitlu">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tab">
+ <cd:sequence>
+ <cd:string value="tab"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:nothing/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="document" type="environment">
+ <cd:sequence>
+ <cd:string value="document"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="labels">
+ <cd:sequence>
+ <cd:string value="etichete"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="definestetabulatori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tabulate" type="environment" generated="yes">
+ <cd:sequence>
+ <cd:variable value="tabulate"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="folosestefiguraexterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptabulate" file="core-tbl.tex">
+ <cd:sequence>
+ <cd:string value="seteazatabulatori"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="unitate">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aliniat">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intern">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="EQ">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="culoarerigla">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="grosimerigla">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="blank"/>
+ <cd:constant type="grila"/>
+ <cd:constant type="adancime"/>
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="rigla">
+ <cd:constant type="normal"/>
+ <cd:constant type="linie"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptables" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="seteazatabele"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="distanta">
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="HL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="VL">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="strut"/>
+ </cd:parameter>
+ <cd:parameter name="grosimerigla">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoarerigla">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="comenzi">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="fundal">
+ <cd:constant type="ecran"/>
+ <cd:constant type="culoare"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="ecranfundal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="culoarefundal">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="table" type="environment">
+ <cd:sequence>
+ <cd:string value="table"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tables" type="environment">
+ <cd:sequence>
+ <cd:string value="tables"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetabletemplate" file="core-tab.tex">
+ <cd:sequence>
+ <cd:string value="definestesablontabel"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfiles" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="folosestefisiereexterne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:parameter name="fisier">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfile" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="folosestefisierextern"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="folosestefiguraexterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="scala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="factor">
+ <cd:constant type="max"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ </cd:parameter>
+ <cd:parameter name="factorw">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="hfactor">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="max"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="preset">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="cd:file"/>
+ </cd:parameter>
+ <cd:parameter name="previzualizare">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="repeta">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="obiect">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="type">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ <cd:parameter name="metoda">
+ <cd:constant type="eps"/>
+ <cd:constant type="mps"/>
+ <cd:constant type="pdf"/>
+ <cd:constant type="tif"/>
+ <cd:constant type="png"/>
+ <cd:constant type="jpg"/>
+ <cd:constant type="mov"/>
+ <cd:variable type="cd:tex"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="externalfigure" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="figuraexterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="folosestefiguraexterna"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="seteazafiguriexterne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments>
+ <cd:parameter name="optiune">
+ <cd:constant type="incadrat"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="text"/>
+ </cd:parameter>
+ <cd:parameter name="obiect">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="frames">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="ymax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="xmax">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="director">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="local"/>
+ <cd:constant type="global"/>
+ <cd:constant type="implicit"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="latimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltimemaxima">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="conversie">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="prefix">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showexternalfigures" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="afiseazafiguriexterne"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternalsoundtrack" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="folosestemuzicaexterna"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="name" file="syst-gen.tex">
+ <cd:sequence>
+ <cd:string value="name"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="legend" type="environment">
+ <cd:sequence>
+ <cd:string value="legend"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="doi"/>
+ </cd:keywords>
+ <cd:tex command="leg"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="leg"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fact" type="environment">
+ <cd:sequence>
+ <cd:string value="fact"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:tex command="fact"/>
+ <cd:nothing/>
+ <cd:nothing separator="backslash"/>
+ <cd:nothing separator="backslash"/>
+ <cd:tex separator="backslash" command="fact"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="rotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="roteste"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazarotare"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprotate" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazarotare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="rotatie">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="normal"/>
+ <cd:constant type="inalt"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="broad"/>
+ <cd:constant type="adancime"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="mirror" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="reflexie"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="scale" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="scala"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="sx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="sy">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupcombinations" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="seteazacombinari"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="inainte">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:variable type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="sus"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="nu"/>
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="normal"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="combination" type="environment">
+ <cd:sequence>
+ <cd:string value="combination"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:matrix"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placesidebyside" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="punefatainfata"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placeontopofeachother" file="core-mis.tex">
+ <cd:sequence>
+ <cd:string value="punedeasuprafiecareia"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overlay" type="environment">
+ <cd:sequence>
+ <cd:string value="overlay"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="overview" type="environment">
+ <cd:sequence>
+ <cd:string value="overview"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionscreen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazaecraninteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="max"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuspate">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiusus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetoriz">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="veroffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="max"/>
+ <cd:constant type="ajustat"/>
+ <cd:constant type="douafete"/>
+ <cd:constant type="semncarte"/>
+ </cd:parameter>
+ <cd:parameter name="intarziere">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="screen" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="ecran"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setuppagetransitions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazatranzitiepagina"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="reset"/>
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteraction" file="core-nav.tex">
+ <cd:sequence>
+ <cd:string value="seteazainteractiunea"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="meniu">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ <cd:parameter name="pagina">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="click">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="split">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="display">
+ <cd:constant type="nou"/>
+ </cd:parameter>
+ <cd:parameter name="actiunedeschidere">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="actiuneinchidere">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="actiunedeschiderepagina">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="actiuneinchiderepagina">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calculeaza">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="culoarecontrast">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="setsimbol">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titlu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="subtitlu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="autor">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="data">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="keyword">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definestemeniuinteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="mijloc">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ <cd:constant type="niciunul"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small...cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="overlay"/>
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="aceeasipagina">
+ <cd:constant type="da"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="referintanecunoscuta">
+ <cd:constant type="da"/>
+ <cd:constant type="gol"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="niciunul"/>
+ </cd:parameter>
+ <cd:parameter name="offsetstanga">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetdreapta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetsus">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="offsetjos">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="pozitie">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definestemeniuinteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazameniuinteractiune"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionmenu" type="environment">
+ <cd:sequence>
+ <cd:string value="meniuinteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="disableinteractionmenu" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="dezactiveazameniuinteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="sus"/>
+ <cd:constant type="subsol"/>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useexternaldocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="folosestedocumentextern"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="fisier"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="useURL" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="folosesteURL"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="fisier"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="coupledocument" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="cupleazadocument"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="fisier"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="from" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="din"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:reference interactive="exclusive"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbar">
+ <cd:sequence>
+ <cd:string value="barainteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:inherit name="seteazabarainteractiune"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="interactionbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="butoaneinteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="seteazabarainteractiune"/>
+ </cd:assignments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupinteractionbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazabarainteractiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="alternativ">
+ <cd:constant type="a"/>
+ <cd:constant type="b"/>
+ <cd:constant type="c"/>
+ <cd:constant type="d"/>
+ <cd:constant type="e"/>
+ <cd:constant type="f"/>
+ <cd:constant type="g"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="inaltime"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="inaltime"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="pas">
+ <cd:constant type="cd:number"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mediu"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronize" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="sincronizeaza"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="synchronization" type="environment">
+ <cd:sequence>
+ <cd:string value="synchronization"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupsynchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setarebarasincronizare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="pagina"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ <cd:constant type="inaltime"/>
+ <cd:constant type="ajustat"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="synchronizationbar" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="barasincronizare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="alternativ">
+ <cd:constant type="pagina"/>
+ <cd:constant type="local"/>
+ </cd:parameter>
+ <cd:inherit name="setarebarasincronizare"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupsynchronization" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="setaresincronizare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definesteprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprofiles" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazaprofile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="optiune">
+ <cd:constant type="text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="profile" type="environment">
+ <cd:sequence>
+ <cd:string value="profile"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofile" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="urmeazaprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placebookmarks" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="plaseazasemnecarte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="bookmark">
+ <cd:sequence>
+ <cd:string value="semncarte"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="version" type="environment">
+ <cd:sequence>
+ <cd:string value="versiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive" list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupversions" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazaversiuni"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="numar">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="small..."/>
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="markversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="marcheazaversiune"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="selectversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="selecteazaversiune"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="defineversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="definesteversiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:number"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="urmeazaversiune"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="followprofileversion" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="urmeazaversiuneprofil"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="defineprogram" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="definesteprogram"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupprograms" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="seteazaprograme"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" list="yes">
+ <cd:parameter name="director">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="program" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="program"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="figure" type="environment">
+ <cd:sequence>
+ <cd:string value="figure"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords interactive="exclusive">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="factor">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="frame">
+ <cd:constant type="on"/>
+ <cd:constant type="dezactivat"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- referring*figure skipped -->
+
+<!-- marking*figure skipped -->
+
+<!-- remark skipped -->
+
+<cd:command name="goto" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="dute"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="gotobox" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="dutebox"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content interactive="exclusive"/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="button">
+ <cd:sequence>
+ <cd:string value="buton"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments interactive="exclusive" optional="yes" list="yes">
+ <cd:inherit name="seteazabutoane"/>
+ </cd:assignments>
+ <cd:content/>
+ <cd:reference list="yes"/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupbuttons" file="core-ref.tex">
+ <cd:sequence>
+ <cd:string value="seteazabutoane"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:inherit name="seteazainconjurat"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<!-- menubutton skipped -->
+
+<cd:command name="setupcomment" file="core-int.tex">
+ <cd:sequence>
+ <cd:string value="seteazacomentariu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="stare">
+ <cd:constant type="start"/>
+ <cd:constant type="stop"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="titlu">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="spatiu">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
+ <cd:parameter name="simbol">
+ <cd:constant type="normal"/>
+ <cd:constant type="Nou"/>
+ <cd:constant type="Balon"/>
+ <cd:constant type="Adaugare"/>
+ <cd:constant type="Ajutor"/>
+ <cd:constant type="Paragraf"/>
+ <cd:constant type="Cheie"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="max"/>
+ <cd:constant type="buffer"/>
+ </cd:parameter>
+ <cd:parameter name="margine">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment" type="environment">
+ <cd:sequence>
+ <cd:string value="comentariu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazacomentariu"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="comment">
+ <cd:sequence>
+ <cd:string value="comentariu"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazacomentariu"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definestecamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definesubfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definestesubcamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="copyfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="copiazacamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clonefield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="cloneazacamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="field" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="camp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fitfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="potrivestecamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fillinfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="campumplere"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="tooltip" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="tooltip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes">
+ <cd:constant type="stanga"/>
+ <cd:constant type="dreapta"/>
+ <cd:constant type="centru"/>
+ </cd:keywords>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="showfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="afiseazacampuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="logfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="logcampuri"/>
+ </cd:sequence>
+</cd:command>
+
+<cd:command name="setupfield" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="seteazacamp"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="eticheta"/>
+ <cd:constant type="orizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="incadrat"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazacampuri"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupfields" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="seteazacampuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="reset"/>
+ <cd:constant type="eticheta"/>
+ <cd:constant type="orizontal"/>
+ <cd:constant type="vertical"/>
+ <cd:constant type="incadrat"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inainte">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="dupa">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="stil">
+ <cd:constant type="normal"/>
+ <cd:constant type="aldin"/>
+ <cd:constant type="inclinat"/>
+ <cd:constant type="aldininclinat"/>
+ <cd:constant type="type"/>
+ </cd:parameter>
+ <cd:parameter name="aliniere">
+ <cd:constant type="stanga"/>
+ <cd:constant type="centru"/>
+ <cd:constant type="dreapta"/>
+ </cd:parameter>
+ <cd:parameter name="optiune">
+ <cd:constant type="readonly"/>
+ <cd:constant type="obligatoriu"/>
+ <cd:constant type="protejat"/>
+ <cd:constant type="sortat"/>
+ <cd:constant type="nedisponibil"/>
+ <cd:constant type="ascuns"/>
+ <cd:constant type="tiparibil"/>
+ </cd:parameter>
+ <cd:parameter name="clickintru">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="clickies">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regiuneintrare">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="regiuneiesire">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="dupatasta">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="format">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="verifica">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="calculeaza">
+ <cd:constant type="cd:reference"/>
+ </cd:parameter>
+ <cd:parameter name="offsetcamp">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoareframecamp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:parameter name="culoarefundalcamp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ <cd:inherit name="framed"/>
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ <cd:assignments list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupforms" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="seteazaformulare"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="metoda">
+ <cd:constant type="HTML"/>
+ <cd:constant type="FDF"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definefieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="definestestivacampuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazacampuri"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="fieldstack" file="core-fld.tex">
+ <cd:sequence>
+ <cd:string value="stivacampuri"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes" list="yes">
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazacampuri"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="clip" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="clip"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaclipping"/>
+ </cd:assignments>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupclipping" file="core-fig.tex">
+ <cd:sequence>
+ <cd:string value="seteazaclipping"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="nx">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ny">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="x">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="y">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="hoffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="voffset">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="mp">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placelegend">
+ <cd:sequence>
+ <cd:string value="punelegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:content/>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuplegend">
+ <cd:sequence>
+ <cd:string value="seteazalegenda"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:assignments list="yes">
+ <cd:parameter name="n">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="intre">
+ <cd:constant type="cd:command"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="locatie">
+ <cd:constant type="dreapta"/>
+ <cd:constant type="subsol"/>
+ </cd:parameter>
+ <cd:parameter name="fonttext">
+ <cd:constant type="5pt"/>
+ <cd:constant type="..."/>
+ <cd:constant type="12pt"/>
+ <cd:constant type="mic"/>
+ <cd:constant type="mare"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerule">
+ <cd:sequence>
+ <cd:string value="definesterigla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="seteazarigla"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placerule">
+ <cd:sequence>
+ <cd:string value="punerigla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuprule">
+ <cd:sequence>
+ <cd:string value="seteazarigla"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="inaltime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="latime">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiuinainte">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="spatiudupa">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="culoare">
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextvariable">
+ <cd:sequence>
+ <cd:string value="definestevariabilatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:inherit name="seteazavariabilatext"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextvariable">
+ <cd:sequence>
+ <cd:string value="seteazavariabilatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:parameter name="stanga">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="dreapta">
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ <cd:parameter name="distanta">
+ <cd:constant type="cd:dimension"/>
+ </cd:parameter>
+ <cd:parameter name="comanda">
+ <cd:constant type="cd:oneargument"/>
+ </cd:parameter>
+ <cd:parameter name="strut">
+ <cd:constant type="da"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:parameter>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="settextvariable">
+ <cd:sequence>
+ <cd:string value="setvariabilatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="placetextvariable">
+ <cd:sequence>
+ <cd:string value="punevariabilatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="textvariable">
+ <cd:sequence>
+ <cd:string value="variabilatext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definerawfont">
+ <cd:sequence>
+ <cd:string value="definestefontraw"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:keywords optional="yes">
+ <cd:constant type="cd:file"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="seteazaspatiuinterliniar"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="switchtorawfont">
+ <cd:sequence>
+ <cd:string value="trecilafontraw"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="definetextposition">
+ <cd:sequence>
+ <cd:string value="definestepozitietext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments optional="yes" list="yes">
+ <cd:inherit name="setarepozitie"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setuptextposition">
+ <cd:sequence>
+ <cd:string value="seteazapozitietext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:assignments list="yes">
+ <cd:inherit name="setarepozitie"/>
+ </cd:assignments>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="positiontext">
+ <cd:sequence>
+ <cd:string value="pozitietext"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="cd:name"/>
+ </cd:keywords>
+ <cd:content/>
+ </cd:arguments>
+</cd:command>
+
+<cd:command name="setupstrut" file="core-spa.tex">
+ <cd:sequence>
+ <cd:string value="seteazastrut"/>
+ </cd:sequence>
+ <cd:arguments>
+ <cd:keywords>
+ <cd:constant type="da" default="yes"/>
+ <cd:constant type="nu"/>
+ <cd:constant type="cap"/>
+ <cd:constant type="cd:text"/>
+ </cd:keywords>
+ </cd:arguments>
+</cd:command>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-cz.xml b/Master/texmf-dist/tex/context/interface/keys-cz.xml
new file mode 100644
index 00000000000..e0e1423d9f3
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-cz.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="jedna"/>
+ <cd:variable name="two" value="dve"/>
+ <cd:variable name="three" value="tri"/>
+ <cd:variable name="four" value="ctyri"/>
+ <cd:variable name="five" value="pet"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="prostredi"/>
+ <cd:variable name="component" value="komponenta"/>
+ <cd:variable name="product" value="produkt"/>
+ <cd:variable name="project" value="projekt"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="nedele"/>
+ <cd:variable name="monday" value="pondeli"/>
+ <cd:variable name="tuesday" value="utery"/>
+ <cd:variable name="wednesday" value="streda"/>
+ <cd:variable name="thursday" value="ctvrtek"/>
+ <cd:variable name="friday" value="patek"/>
+ <cd:variable name="saturday" value="sobota"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="leden"/>
+ <cd:variable name="february" value="unor"/>
+ <cd:variable name="march" value="brezen"/>
+ <cd:variable name="april" value="duben"/>
+ <cd:variable name="may" value="kveten"/>
+ <cd:variable name="june" value="cerven"/>
+ <cd:variable name="july" value="cervenec"/>
+ <cd:variable name="august" value="srpen"/>
+ <cd:variable name="september" value="zari"/>
+ <cd:variable name="october" value="rijen"/>
+ <cd:variable name="november" value="listopad"/>
+ <cd:variable name="december" value="prosinec"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="nastrance"/>
+ <cd:variable name="hencefore" value="vyse"/>
+ <cd:variable name="hereafter" value="nize"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="oddil"/>
+ <cd:variable name="part" value="cast"/>
+ <cd:variable name="chapter" value="kapitola"/>
+ <cd:variable name="subject" value="tema"/>
+ <cd:variable name="section" value="sekce"/>
+ <cd:variable name="title" value="titul"/>
+ <cd:variable name="margintitle" value="titulmarginalie"/>
+ <cd:variable name="content" value="obsah"/>
+ <cd:variable name="contents" value="obsah"/>
+ <cd:variable name="appendix" value="dodatek"/>
+ <cd:variable name="appendices" value="dodatky"/>
+ <cd:variable name="bodypart" value="hlavnicast"/>
+ <cd:variable name="bodymatter" value="hlavnicasti"/>
+ <cd:variable name="frontpart" value="prednicast"/>
+ <cd:variable name="frontmatter" value="prednicasti"/>
+ <cd:variable name="backpart" value="epilog"/>
+ <cd:variable name="backmatter" value="epilogy"/>
+ <cd:variable name="footnote" value="poznamkapodcarou"/>
+ <cd:variable name="endnote" value="endnote"/>
+ <cd:variable name="system" value="system"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="podsekce"/>
+ <cd:variable name="subsubsection" value="podpodsekce"/>
+ <cd:variable name="subsubsubsection" value="podpodpodsekce"/>
+ <cd:variable name="subsubsubsubsection" value="podpodpodpodsekce"/>
+ <cd:variable name="subsubsubsubsubsection" value="podpodpodpodpodsekce"/>
+ <cd:variable name="subsubject" value="podtema"/>
+ <cd:variable name="subsubsubject" value="podpodtema"/>
+ <cd:variable name="subsubsubsubject" value="podpodpodtema"/>
+ <cd:variable name="subsubsubsubsubject" value="podpodpodpodtema"/>
+ <cd:variable name="subsubsubsubsubsubject" value="podpodpodpodpodtema"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="flushleft"/>
+ <cd:variable name="flushright" value="flushright"/>
+ <cd:variable name="center" value="center"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="typing"/>
+ <cd:variable name="file" value="soubor"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="rovnice"/>
+ <cd:variable name="formulae" value="rovnice"/>
+ <cd:variable name="figure" value="obrazek"/>
+ <cd:variable name="figures" value="obrazky"/>
+ <cd:variable name="table" value="tabulka"/>
+ <cd:variable name="tables" value="tabulky"/>
+ <cd:variable name="graphic" value="graf"/>
+ <cd:variable name="graphics" value="grafy"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzi"/>
+ <cd:variable name="index" value="rejstrik"/>
+ <cd:variable name="indices" value="rejstriky"/>
+ <cd:variable name="abbreviation" value="zkratka"/>
+ <cd:variable name="abbreviations" value="zkratky"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="loga"/>
+ <cd:variable name="unit" value="jednotka"/>
+ <cd:variable name="units" value="jednotky"/>
+ <cd:variable name="line" value="radek"/>
+ <cd:variable name="lines" value="radky"/>
+ <cd:variable name="framedtext" value="oramovanytext"/>
+ <cd:variable name="quotation" value="citace"/>
+ <cd:variable name="quote" value="citovat"/>
+ <cd:variable name="speech" value="speech"/>
+ <cd:variable name="itemize" value="vycet"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="citacevlevo"/>
+ <cd:constant name="rightquotation" value="citacevpravo"/>
+ <cd:constant name="leftquote" value="citovatvlevo"/>
+ <cd:constant name="rightquote" value="citovatvpravo"/>
+ <cd:constant name="compoundhyphen" value="compoundhyphen"/>
+ <cd:constant name="leftcompoundhyphen" value="leftcompoundhyphen"/>
+ <cd:constant name="rightcompoundhyphen" value="rightcompoundhyphen"/>
+ <cd:constant name="midsentence" value="midsentence"/>
+ <cd:constant name="leftsentence" value="vetavlevo"/>
+ <cd:constant name="rightsentence" value="vetavpravo"/>
+ <cd:constant name="leftsubsentence" value="podvetavlevo"/>
+ <cd:constant name="rightsubsentence" value="podvetavpravo"/>
+ <cd:constant name="leftspeech" value="leftspeech"/>
+ <cd:constant name="middlespeech" value="middlespeech"/>
+ <cd:constant name="rightspeech" value="rightspeech"/>
+ <cd:constant name="limittext" value="limittext"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="spacebefore" value="mezerapred"/>
+ <cd:constant name="spaceinbetween" value="spaceinbetween"/>
+ <cd:constant name="spaceafter" value="mezeraza"/>
+ <cd:constant name="sidespacebefore" value="bocnimezerapred"/>
+ <cd:constant name="sidespaceafter" value="bocnimezeraza"/>
+ <cd:constant name="to" value="na"/>
+ <cd:constant name="indicator" value="indikator"/>
+ <cd:constant name="background" value="pozadi"/>
+ <cd:constant name="backgrounddepth" value="hloubkapozadi"/>
+ <cd:constant name="backgroundcorner" value="rohpozadi"/>
+ <cd:constant name="splitcolor" value="splitcolor"/>
+ <cd:constant name="backgroundcolor" value="barvapozadi"/>
+ <cd:constant name="foregroundcolor" value="foregroundcolor"/>
+ <cd:constant name="foregroundstyle" value="foregroundstyle"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="offsetpozadi"/>
+ <cd:constant name="backgroundscreen" value="rastrpozadi"/>
+ <cd:constant name="backgroundradius" value="polomerpozadi"/>
+ <cd:constant name="address" value="adresa"/>
+ <cd:constant name="stopper" value="predel"/>
+ <cd:constant name="distance" value="vzdalenost"/>
+ <cd:constant name="paragraph" value="odstavec"/>
+ <cd:constant name="axis" value="osa"/>
+ <cd:constant name="author" value="autor"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="rovnovaha"/>
+ <cd:constant name="wfactor" value="sfaktor"/>
+ <cd:constant name="inner" value="vnitrni"/>
+ <cd:constant name="blank" value="prazdny"/>
+ <cd:constant name="obstruction" value="prekazka"/>
+ <cd:constant name="blockway" value="dobloku"/>
+ <cd:constant name="bottomspace" value="bottomspace"/>
+ <cd:constant name="top" value="vrsek"/>
+ <cd:constant name="topdistance" value="vzdalenostvrsku"/>
+ <cd:constant name="topframe" value="rameceknahore"/>
+ <cd:constant name="topoffset" value="offsetvrsku"/>
+ <cd:constant name="topstate" value="statusvrsku"/>
+ <cd:constant name="width" value="sirka"/>
+ <cd:constant name="maxwidth" value="maxsirka"/>
+ <cd:constant name="minwidth" value="minsirka"/>
+ <cd:constant name="source" value="zdroj"/>
+ <cd:constant name="command" value="prikaz"/>
+ <cd:constant name="commands" value="prikazy"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="kontrastnibarva"/>
+ <cd:constant name="conversion" value="konverze"/>
+ <cd:constant name="headconversion" value="konverzehlavicky"/>
+ <cd:constant name="headlabel" value="popisekhlavicky"/>
+ <cd:constant name="criterium" value="kriterium"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="default" value="implicitni"/>
+ <cd:constant name="depth" value="hloubka"/>
+ <cd:constant name="depthcorrection" value="korekcehloubky"/>
+ <cd:constant name="continue" value="pokracovat"/>
+ <cd:constant name="doublesided" value="oboustranne"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="jednotka"/>
+ <cd:constant name="ownnumber" value="vlastnicislo"/>
+ <cd:constant name="evenmargin" value="sudamarginalie"/>
+ <cd:constant name="expansion" value="expanzen"/>
+ <cd:constant name="keyexpansion" value="keyexpansion"/>
+ <cd:constant name="factor" value="faktor"/>
+ <cd:constant name="convertfile" value="konverzesouboru"/>
+ <cd:constant name="file" value="soubor"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="velikost"/>
+ <cd:constant name="autofocus" value="autoostreni"/>
+ <cd:constant name="focus" value="zaostreni"/>
+ <cd:constant name="directory" value="adresar"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="mrizka"/>
+ <cd:constant name="big" value="velky"/>
+ <cd:constant name="get" value="ziskat"/>
+ <cd:constant name="hang" value="zaveseni"/>
+ <cd:constant name="repeat" value="opakovat"/>
+ <cd:constant name="hfactor" value="vfaktor"/>
+ <cd:constant name="corner" value="roh"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="ramecky"/>
+ <cd:constant name="header" value="zahlavi"/>
+ <cd:constant name="headerdistance" value="vzdalenostzahlavi"/>
+ <cd:constant name="headerstate" value="statuszahlavi"/>
+ <cd:constant name="height" value="vyska"/>
+ <cd:constant name="maxheight" value="maxvyska"/>
+ <cd:constant name="minheight" value="minvyska"/>
+ <cd:constant name="mindepth" value="mindepth"/>
+ <cd:constant name="current" value="aktualni"/>
+ <cd:constant name="in" value="v"/>
+ <cd:constant name="indenting" value="odsazovani"/>
+ <cd:constant name="interaction" value="interakce"/>
+ <cd:constant name="interlinespace" value="meziradkovamezera"/>
+ <cd:constant name="items" value="polozky"/>
+ <cd:constant name="frame" value="ramecek"/>
+ <cd:constant name="framedepth" value="hloubkaramecku"/>
+ <cd:constant name="framecorner" value="rohramecku"/>
+ <cd:constant name="framecolor" value="barvaramecku"/>
+ <cd:constant name="frameoffset" value="offsetramecku"/>
+ <cd:constant name="frameradius" value="polomerramecku"/>
+ <cd:constant name="marginedge" value="textovahrana"/>
+ <cd:constant name="marginedgetext" value="textmarginalnihookraje"/>
+ <cd:constant name="aligncharacter" value="aligncharacter"/>
+ <cd:constant name="alignmentcharacter" value="alignmentcharacter"/>
+ <cd:constant name="small" value="male"/>
+ <cd:constant name="color" value="barva"/>
+ <cd:constant name="column" value="sloupec"/>
+ <cd:constant name="columns" value="sloupce"/>
+ <cd:constant name="columndistance" value="vzdalenostsloupcu"/>
+ <cd:constant name="headcommand" value="headcommand"/>
+ <cd:constant name="headcolor" value="barvahlavicky"/>
+ <cd:constant name="headstyle" value="stylhlavicky"/>
+ <cd:constant name="afterhead" value="pohlavicce"/>
+ <cd:constant name="veroffset" value="offsethlavicky"/>
+ <cd:constant name="coupling" value="propojeni"/>
+ <cd:constant name="couplingway" value="zpusobpropojeni"/>
+ <cd:constant name="beforehead" value="predhlavickou"/>
+ <cd:constant name="topspace" value="svrchnimezera"/>
+ <cd:constant name="bodyfont" value="zakladnifont"/>
+ <cd:constant name="label" value="popisek"/>
+ <cd:constant name="empty" value="prazdne"/>
+ <cd:constant name="style" value="pismeno"/>
+ <cd:constant name="rule" value="linka"/>
+ <cd:constant name="rulethickness" value="tloustkalinky"/>
+ <cd:constant name="rulecolor" value="barvalinky"/>
+ <cd:constant name="list" value="seznam"/>
+ <cd:constant name="leftwidth" value="sirkavlevo"/>
+ <cd:constant name="leftframe" value="ramecekvlevo"/>
+ <cd:constant name="leftcolor" value="barvavlevo"/>
+ <cd:constant name="leftstyle" value="stylvlevo"/>
+ <cd:constant name="leftmargin" value="levyokraj"/>
+ <cd:constant name="leftmargindistance" value="vzdalenostlevehookraje"/>
+ <cd:constant name="leftoffset" value="levyoffset"/>
+ <cd:constant name="leftedge" value="levahrana"/>
+ <cd:constant name="leftedgedistance" value="vzdalenostlevehrany"/>
+ <cd:constant name="lefttext" value="textvlevo"/>
+ <cd:constant name="left" value="vlevo"/>
+ <cd:constant name="nleft" value="nvlevo"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="loga"/>
+ <cd:constant name="local" value="lokalne"/>
+ <cd:constant name="margin" value="marginalie"/>
+ <cd:constant name="margindistance" value="vzdalenostokraje"/>
+ <cd:constant name="margintext" value="textmarginalie"/>
+ <cd:constant name="marking" value="znaceni"/>
+ <cd:constant name="marcolor" value="barvaznacky"/>
+ <cd:constant name="marstyle" value="stylsnacky"/>
+ <cd:constant name="menu" value="menu"/>
+ <cd:constant name="splitmethod" value="splitmethod"/>
+ <cd:constant name="textmethod" value="textmethod"/>
+ <cd:constant name="sidemethod" value="sidemethod"/>
+ <cd:constant name="method" value="metoda"/>
+ <cd:constant name="middle" value="stredni"/>
+ <cd:constant name="middletext" value="strednitext"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="vzor"/>
+ <cd:constant name="after" value="po"/>
+ <cd:constant name="name" value="jmeno"/>
+ <cd:constant name="commandafter" value="prikazpo"/>
+ <cd:constant name="ntop" value="nvrsek"/>
+ <cd:constant name="level" value="uroven"/>
+ <cd:constant name="levels" value="urovne"/>
+ <cd:constant name="nbottom" value="nspodek"/>
+ <cd:constant name="norm" value="norm"/>
+ <cd:constant name="nlines" value="nradky"/>
+ <cd:constant name="number" value="cislo"/>
+ <cd:constant name="numbercommand" value="ciselnyprikaz"/>
+ <cd:constant name="numbering" value="cislovani"/>
+ <cd:constant name="numbercolor" value="barvacisla"/>
+ <cd:constant name="numberstyle" value="stylcisla"/>
+ <cd:constant name="numberseparator" value="oddelovaccisla"/>
+ <cd:constant name="object" value="objekt"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="spodek"/>
+ <cd:constant name="bottomdistance" value="vzdalenostspodku"/>
+ <cd:constant name="bottomframe" value="ramecekdole"/>
+ <cd:constant name="bottomoffset" value="offsetspodku"/>
+ <cd:constant name="bottomstate" value="statusspodku"/>
+ <cd:constant name="oddmargin" value="lichyokraj"/>
+ <cd:constant name="at" value="u"/>
+ <cd:constant name="option" value="volba"/>
+ <cd:constant name="page" value="stranka"/>
+ <cd:constant name="pagecommand" value="strankovyprikaz"/>
+ <cd:constant name="pagecolor" value="barvastranky"/>
+ <cd:constant name="pagestyle" value="stylstranky"/>
+ <cd:constant name="pagenumber" value="cislostranky"/>
+ <cd:constant name="headnumber" value="cislonadpisu"/>
+ <cd:constant name="pageboundaries" value="hranicestranky"/>
+ <cd:constant name="pagestate" value="pagestate"/>
+ <cd:constant name="palet" value="paleta"/>
+ <cd:constant name="paper" value="papir"/>
+ <cd:constant name="location" value="misto"/>
+ <cd:constant name="placestopper" value="predelmista"/>
+ <cd:constant name="place" value="umistit"/>
+ <cd:constant name="placehead" value="umistihlavicku"/>
+ <cd:constant name="position" value="position"/>
+ <cd:constant name="prefix" value="prefix"/>
+ <cd:constant name="preset" value="prednastaveni"/>
+ <cd:constant name="preview" value="nahled"/>
+ <cd:constant name="process" value="process"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="tecka"/>
+ <cd:constant name="arrow" value="sipka"/>
+ <cd:constant name="edge" value="hrana"/>
+ <cd:constant name="edgedistance" value="vzdalenosthrany"/>
+ <cd:constant name="screen" value="rastr"/>
+ <cd:constant name="rightwidth" value="sirkavpravo"/>
+ <cd:constant name="rightframe" value="ramecekvpravo"/>
+ <cd:constant name="rightcolor" value="barvavpravo"/>
+ <cd:constant name="rightstyle" value="stylvpravo"/>
+ <cd:constant name="rightmargin" value="pravyokraj"/>
+ <cd:constant name="rightmargindistance" value="vzdalenostpravehookraje"/>
+ <cd:constant name="rightoffset" value="pravyoffset"/>
+ <cd:constant name="rightedge" value="pravahrana"/>
+ <cd:constant name="rightedgedistance" value="vzdalenostpravehrany"/>
+ <cd:constant name="righttext" value="textvpravo"/>
+ <cd:constant name="right" value="vpravo"/>
+ <cd:constant name="nright" value="nvpravo"/>
+ <cd:constant name="reduction" value="redukce"/>
+ <cd:constant name="referencing" value="odkazujici"/>
+ <cd:constant name="line" value="radek"/>
+ <cd:constant name="linecorrection" value="korekceradku"/>
+ <cd:constant name="lines" value="radky"/>
+ <cd:constant name="stretch" value="natahnout"/>
+ <cd:constant name="resolution" value="rozliseni"/>
+ <cd:constant name="rotation" value="rotace"/>
+ <cd:constant name="orientation" value="orientation"/>
+ <cd:constant name="horoffset" value="horoffset"/>
+ <cd:constant name="backspace" value="zpetnamezera"/>
+ <cd:constant name="direction" value="smer"/>
+ <cd:constant name="scale" value="meritko"/>
+ <cd:constant name="separator" value="oddelovac"/>
+ <cd:constant name="display" value="obrazovka"/>
+ <cd:constant name="scope" value="rozsah"/>
+ <cd:constant name="section" value="oddil"/>
+ <cd:constant name="sectionnumber" value="cislooddilu"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="cutspace"/>
+ <cd:constant name="family" value="rodina"/>
+ <cd:constant name="space" value="mezera"/>
+ <cd:constant name="spacing" value="mezerovani"/>
+ <cd:constant name="split" value="split"/>
+ <cd:constant name="splitoffset" value="splitoffset"/>
+ <cd:constant name="indentnext" value="odsadpristi"/>
+ <cd:constant name="step" value="krok"/>
+ <cd:constant name="stack" value="stack"/>
+ <cd:constant name="start" value="start"/>
+ <cd:constant name="state" value="status"/>
+ <cd:constant name="stop" value="stop"/>
+ <cd:constant name="radius" value="polomer"/>
+ <cd:constant name="dash" value="pomlcka"/>
+ <cd:constant name="sub" value="pod"/>
+ <cd:constant name="subtitle" value="podtitulek"/>
+ <cd:constant name="symbol" value="symbol"/>
+ <cd:constant name="symbolset" value="sadasymbolu"/>
+ <cd:constant name="symcolor" value="barvasymbolu"/>
+ <cd:constant name="symstyle" value="stylsymboly"/>
+ <cd:constant name="synonym" value="synonymum"/>
+ <cd:constant name="synonymcolor" value="barvasynonyma"/>
+ <cd:constant name="synonymstyle" value="stylsynonyma"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="znak"/>
+ <cd:constant name="text" value="text"/>
+ <cd:constant name="listtext" value="listtext"/>
+ <cd:constant name="textwidth" value="sirkatextu"/>
+ <cd:constant name="textcommand" value="textovyprikaz"/>
+ <cd:constant name="textsize" value="velikosttextu"/>
+ <cd:constant name="textcolor" value="barvatextu"/>
+ <cd:constant name="textstyle" value="styltextu"/>
+ <cd:constant name="textseparator" value="oddelovactextu"/>
+ <cd:constant name="textstate" value="statustextu"/>
+ <cd:constant name="title" value="titul"/>
+ <cd:constant name="titlestyle" value="styltitulek"/>
+ <cd:constant name="titlecolor" value="barvatitulek"/>
+ <cd:constant name="titledistance" value="vzdalenosttitulek"/>
+ <cd:constant name="aligntitle" value="zarovnejtitul"/>
+ <cd:constant name="tolerance" value="tolerance"/>
+ <cd:constant name="inbetween" value="mezi"/>
+ <cd:constant name="type" value="typ"/>
+ <cd:constant name="align" value="zarovnani"/>
+ <cd:constant name="urlspace" value="prostorurl"/>
+ <cd:constant name="urlalternative" value="urlalternativa"/>
+ <cd:constant name="from" value="z"/>
+ <cd:constant name="alternative" value="alternativa"/>
+ <cd:constant name="increment" value="zvysit"/>
+ <cd:constant name="incrementnumber" value="zvysujicicislo"/>
+ <cd:constant name="resetnumber" value="resetnumber"/>
+ <cd:constant name="reference" value="odkaz"/>
+ <cd:constant name="unknownreference" value="neznamyodkaz"/>
+ <cd:constant name="footer" value="upati"/>
+ <cd:constant name="footerdistance" value="vzdalenostupati"/>
+ <cd:constant name="footerstate" value="statusupati"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="dalsi"/>
+ <cd:constant name="before" value="pred"/>
+ <cd:constant name="commandbefore" value="predchoziprikaz"/>
+ <cd:constant name="previous" value="predchozi"/>
+ <cd:constant name="previousnumber" value="predchozicislo"/>
+ <cd:constant name="delay" value="prodleva"/>
+ <cd:constant name="way" value="zpusob"/>
+ <cd:constant name="random" value="nahodne"/>
+ <cd:constant name="white" value="bily"/>
+ <cd:constant name="xfactor" value="xfaktor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xmeritko"/>
+ <cd:constant name="xstep" value="xkrok"/>
+ <cd:constant name="yfactor" value="yfaktor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="ymeritko"/>
+ <cd:constant name="ystep" value="ykrok"/>
+ <cd:constant name="samepage" value="stejnastranka"/>
+ <cd:constant name="sidealign" value="sidealign"/>
+ <cd:constant name="side" value="pocitat"/>
+ <cd:constant name="fieldlayer" value="fieldlayer"/>
+ <cd:constant name="textlayer" value="textlayer"/>
+ <cd:constant name="fieldbackgroundcolor" value="barvapozadipole"/>
+ <cd:constant name="fieldframecolor" value="barvarameckupole"/>
+ <cd:constant name="fieldoffset" value="offsetpole"/>
+ <cd:constant name="openaction" value="otevriakci"/>
+ <cd:constant name="closeaction" value="zavriakci"/>
+ <cd:constant name="openpageaction" value="akceotevrenistranky"/>
+ <cd:constant name="closepageaction" value="akcezavrenistranky"/>
+ <cd:constant name="clickin" value="klikuvnitr"/>
+ <cd:constant name="clickout" value="klikvne"/>
+ <cd:constant name="regionin" value="oblastuvnitr"/>
+ <cd:constant name="regionout" value="oblastvne"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusout"/>
+ <cd:constant name="afterkey" value="klavesapo"/>
+ <cd:constant name="format" value="formatovat"/>
+ <cd:constant name="validate" value="validovat"/>
+ <cd:constant name="calculate" value="pocitat"/>
+ <cd:constant name="click" value="klik"/>
+ <cd:constant name="vcommand" value="vprikaz"/>
+ <cd:constant name="icommand" value="iprikaz"/>
+ <cd:constant name="ccommand" value="cprikaz"/>
+ <cd:constant name="textdistance" value="textdistance"/>
+ <cd:constant name="textmargin" value="textmargin"/>
+ <cd:constant name="keyword" value="keyword"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="zap"/>
+ <cd:variable name="serried" value="semknuto"/>
+ <cd:variable name="joinedup" value="spojeno"/>
+ <cd:variable name="absolute" value="absolutni"/>
+ <cd:variable name="background" value="pozadi"/>
+ <cd:variable name="backward" value="zpet"/>
+ <cd:variable name="subbackward" value="podzpet"/>
+ <cd:variable name="action" value="akce"/>
+ <cd:variable name="stopper" value="predel"/>
+ <cd:variable name="paragraph" value="odstavec"/>
+ <cd:variable name="all" value="vse"/>
+ <cd:variable name="always" value="vzdy"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autouvod"/>
+ <cd:variable name="both" value="obe"/>
+ <cd:variable name="inner" value="uvnitr"/>
+ <cd:variable name="blank" value="prazdny"/>
+ <cd:variable name="disable" value="zablokovat"/>
+ <cd:variable name="top" value="vrsek"/>
+ <cd:variable name="wide" value="siroce"/>
+ <cd:variable name="width" value="sirka"/>
+ <cd:variable name="outer" value="vnejsi"/>
+ <cd:variable name="numbers" value="cisla"/>
+ <cd:variable name="Numbers" value="Cisla"/>
+ <cd:variable name="command" value="prikaz"/>
+ <cd:variable name="commands" value="prikazy"/>
+ <cd:variable name="concept" value="koncept"/>
+ <cd:variable name="day" value="den"/>
+ <cd:variable name="date" value="datum"/>
+ <cd:variable name="default" value="implicitni"/>
+ <cd:variable name="final" value="finalni"/>
+ <cd:variable name="depth" value="podlehloubky"/>
+ <cd:variable name="doublesided" value="dvoustranny"/>
+ <cd:variable name="first" value="prvni"/>
+ <cd:variable name="each" value="kazdy"/>
+ <cd:variable name="singlesided" value="jednostranne"/>
+ <cd:variable name="somewhere" value="nekde"/>
+ <cd:variable name="nowhere" value="nikde"/>
+ <cd:variable name="even" value="sude"/>
+ <cd:variable name="external" value="externi"/>
+ <cd:variable name="file" value="soubor"/>
+ <cd:variable name="flexible" value="prizpusobive"/>
+ <cd:variable name="force" value="sila"/>
+ <cd:variable name="used" value="uzito"/>
+ <cd:variable name="none" value="zadny"/>
+ <cd:variable name="nomarking" value="zadneznaceni"/>
+ <cd:variable name="nonumber" value="nonumber"/>
+ <cd:variable name="nowhite" value="zadnabila"/>
+ <cd:variable name="rotated" value="otoceno"/>
+ <cd:variable name="mirrored" value="zrcadleno"/>
+ <cd:variable name="global" value="globalne"/>
+ <cd:variable name="grid" value="mrizka"/>
+ <cd:variable name="big" value="velke"/>
+ <cd:variable name="bigbodyfont" value="bigbodyfont"/>
+ <cd:variable name="bigpreference" value="vysokapriorita"/>
+ <cd:variable name="gray" value="seda"/>
+ <cd:variable name="halfline" value="pulradku"/>
+ <cd:variable name="keep" value="drzet"/>
+ <cd:variable name="hanging" value="visici"/>
+ <cd:variable name="spacing" value="mezerovani"/>
+ <cd:variable name="nospacing" value="nospacing"/>
+ <cd:variable name="repeat" value="opakovat"/>
+ <cd:variable name="fix" value="fixuj"/>
+ <cd:variable name="here" value="zde"/>
+ <cd:variable name="header" value="zahlavi"/>
+ <cd:variable name="high" value="vysoko"/>
+ <cd:variable name="height" value="vyska"/>
+ <cd:variable name="horizontal" value="horizontalne"/>
+ <cd:variable name="current" value="aktualni"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="nohz"/>
+ <cd:variable name="italic" value="kurziva"/>
+ <cd:variable name="inherit" value="inherit"/>
+ <cd:variable name="inleft" value="vlevo"/>
+ <cd:variable name="inmargin" value="naokraji"/>
+ <cd:variable name="inright" value="vpravo"/>
+ <cd:variable name="interaction" value="interakce"/>
+ <cd:variable name="intext" value="dotextu"/>
+ <cd:variable name="intro" value="uvod"/>
+ <cd:variable name="its" value="pol"/>
+ <cd:variable name="yes" value="ano"/>
+ <cd:variable name="year" value="rok"/>
+ <cd:variable name="frame" value="ramecek"/>
+ <cd:variable name="marginedge" value="textovahrana"/>
+ <cd:variable name="cap" value="kap"/>
+ <cd:variable name="capital" value="kapitalky"/>
+ <cd:variable name="referral" value="znacka"/>
+ <cd:variable name="small" value="male"/>
+ <cd:variable name="smallnormal" value="malenormalni"/>
+ <cd:variable name="smallslanted" value="malesklonene"/>
+ <cd:variable name="smallslantedbold" value="malesklonenetucne"/>
+ <cd:variable name="smallitalic" value="malekurzivni"/>
+ <cd:variable name="smallitalicbold" value="malekurzivnitucne"/>
+ <cd:variable name="smalltype" value="maletype"/>
+ <cd:variable name="smallbold" value="maletucne"/>
+ <cd:variable name="smallboldslanted" value="maletucnesklonene"/>
+ <cd:variable name="smallbolditalic" value="maletucnekurzivni"/>
+ <cd:variable name="smallbodyfont" value="smallbodyfont"/>
+ <cd:variable name="toggle" value="toggle"/>
+ <cd:variable name="color" value="barevne"/>
+ <cd:variable name="column" value="column"/>
+ <cd:variable name="columns" value="sloupce"/>
+ <cd:variable name="head" value="hlavicka"/>
+ <cd:variable name="low" value="nizko"/>
+ <cd:variable name="last" value="posledni"/>
+ <cd:variable name="label" value="popisek"/>
+ <cd:variable name="lohi" value="nivy"/>
+ <cd:variable name="tall" value="vysoko"/>
+ <cd:variable name="empty" value="prazdne"/>
+ <cd:variable name="Character" value="Pismeno"/>
+ <cd:variable name="character" value="pismeno"/>
+ <cd:variable name="Characters" value="Pismena"/>
+ <cd:variable name="characters" value="pismena"/>
+ <cd:variable name="landscape" value="nasirku"/>
+ <cd:variable name="rule" value="linka"/>
+ <cd:variable name="list" value="seznam"/>
+ <cd:variable name="leftmargin" value="levyokraj"/>
+ <cd:variable name="leftpage" value="levastranka"/>
+ <cd:variable name="leftedge" value="levahrana"/>
+ <cd:variable name="left" value="vlevo"/>
+ <cd:variable name="local" value="lokalne"/>
+ <cd:variable name="new" value="novy"/>
+ <cd:variable name="MONTH" value="MESIC"/>
+ <cd:variable name="month" value="mesic"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="marginalie"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="stredoveky"/>
+ <cd:variable name="medium" value="stredni"/>
+ <cd:variable name="middle" value="nastred"/>
+ <cd:variable name="after" value="po"/>
+ <cd:variable name="name" value="jmeno"/>
+ <cd:variable name="opposite" value="naproti"/>
+ <cd:variable name="no" value="ne"/>
+ <cd:variable name="negative" value="negativ"/>
+ <cd:variable name="positive" value="positiv"/>
+ <cd:variable name="not" value="ne"/>
+ <cd:variable name="never" value="nikdy"/>
+ <cd:variable name="normal" value="normalni"/>
+ <cd:variable name="number" value="cislo"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="neznamy"/>
+ <cd:variable name="bottom" value="spodek"/>
+ <cd:variable name="odd" value="liche"/>
+ <cd:variable name="packed" value="zhustene"/>
+ <cd:variable name="unpacked" value="rozbalene"/>
+ <cd:variable name="makeup" value="zlom"/>
+ <cd:variable name="atmargin" value="naokraji"/>
+ <cd:variable name="overlay" value="prekryv"/>
+ <cd:variable name="page" value="stranka"/>
+ <cd:variable name="pagenumber" value="cislostranky"/>
+ <cd:variable name="paper" value="papir"/>
+ <cd:variable name="display" value="obrazovka"/>
+ <cd:variable name="reverse" value="reverse"/>
+ <cd:variable name="fit" value="prizpusobive"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="nahled"/>
+ <cd:variable name="program" value="program"/>
+ <cd:variable name="process" value="process"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="tecka"/>
+ <cd:variable name="ran" value="rozsah"/>
+ <cd:variable name="edge" value="hrana"/>
+ <cd:variable name="screen" value="rastr"/>
+ <cd:variable name="rectangular" value="pravouhly"/>
+ <cd:variable name="rightmargin" value="pravyokraj"/>
+ <cd:variable name="rightpage" value="pravastranka"/>
+ <cd:variable name="rightedge" value="pravahrana"/>
+ <cd:variable name="right" value="vpravo"/>
+ <cd:variable name="line" value="radek"/>
+ <cd:variable name="register" value="rejstrik"/>
+ <cd:variable name="relative" value="relativni"/>
+ <cd:variable name="reset" value="reset"/>
+ <cd:variable name="Romannumerals" value="Rimskecislice"/>
+ <cd:variable name="romannumerals" value="rimskecislice"/>
+ <cd:variable name="greek" value="recky"/>
+ <cd:variable name="Greek" value="Recky"/>
+ <cd:variable name="round" value="zaobleny"/>
+ <cd:variable name="rotate" value="otoc"/>
+ <cd:variable name="stretch" value="natahnout"/>
+ <cd:variable name="backspace" value="zpetnamezera"/>
+ <cd:variable name="broad" value="siroky"/>
+ <cd:variable name="row" value="row"/>
+ <cd:variable name="slanted" value="sklonene"/>
+ <cd:variable name="slantedbold" value="sklonenetucne"/>
+ <cd:variable name="synchronize" value="synchronize"/>
+ <cd:variable name="italicbold" value="kurzivnitucne"/>
+ <cd:variable name="sectionnumber" value="cislooddilu"/>
+ <cd:variable name="narrow" value="uzky"/>
+ <cd:variable name="cutspace" value="cutspace"/>
+ <cd:variable name="tolerant" value="tolerantni"/>
+ <cd:variable name="space" value="mezera"/>
+ <cd:variable name="standard" value="standardni"/>
+ <cd:variable name="start" value="start"/>
+ <cd:variable name="stop" value="stop"/>
+ <cd:variable name="strict" value="striktni"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="pod"/>
+ <cd:variable name="sym" value="sym"/>
+ <cd:variable name="symbol" value="symbol"/>
+ <cd:variable name="text" value="text"/>
+ <cd:variable name="back" value="zpet"/>
+ <cd:variable name="test" value="test"/>
+ <cd:variable name="inbetween" value="mezi"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="off" value="vyp"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="fixne"/>
+ <cd:variable name="loose" value="uvolnene"/>
+ <cd:variable name="continue" value="pokracovat"/>
+ <cd:variable name="vertical" value="vertikalne"/>
+ <cd:variable name="bold" value="tucne"/>
+ <cd:variable name="boldslanted" value="tucnesklonene"/>
+ <cd:variable name="bolditalic" value="tucnekurzivni"/>
+ <cd:variable name="quadruple" value="ctyrnasobny"/>
+ <cd:variable name="footer" value="upati"/>
+ <cd:variable name="next" value="dalsi"/>
+ <cd:variable name="before" value="pred"/>
+ <cd:variable name="foreground" value="popredi"/>
+ <cd:variable name="preference" value="nastaveni"/>
+ <cd:variable name="temporary" value="docasne"/>
+ <cd:variable name="forward" value="vpred"/>
+ <cd:variable name="subforward" value="podvpred"/>
+ <cd:variable name="previous" value="predchozi"/>
+ <cd:variable name="value" value="hodnota"/>
+ <cd:variable name="week" value="tyden"/>
+ <cd:variable name="weekday" value="vsedniden"/>
+ <cd:variable name="WEEKDAY" value="VSEDNIDEN"/>
+ <cd:variable name="random" value="nahodny"/>
+ <cd:variable name="white" value="bily"/>
+ <cd:variable name="very" value="velmi"/>
+ <cd:variable name="verytolerant" value="velmitolerantni"/>
+ <cd:variable name="verystrict" value="velmistriktni"/>
+ <cd:variable name="see" value="viz"/>
+ <cd:variable name="smallcaps" value="kapitalky"/>
+ <cd:variable name="WORD" value="SLOVO"/>
+ <cd:variable name="firstpage" value="prvnistranka"/>
+ <cd:variable name="firstcolumn" value="firstcolumn"/>
+ <cd:variable name="previouspage" value="predchozistranka"/>
+ <cd:variable name="nextpage" value="dalsistranka"/>
+ <cd:variable name="lastpage" value="poslednistrana"/>
+ <cd:variable name="lastcolumn" value="lastcolumn"/>
+ <cd:variable name="lastpagenumber" value="lastpagenumber"/>
+ <cd:variable name="subpage" value="podstranka"/>
+ <cd:variable name="firstsubpage" value="prvnipodstranka"/>
+ <cd:variable name="previoussubpage" value="predchozipodstranka"/>
+ <cd:variable name="nextsubpage" value="dalsipodstranka"/>
+ <cd:variable name="lastsubpage" value="poslaednipodstranka"/>
+ <cd:variable name="nextevenpage" value="dalsisudastranka"/>
+ <cd:variable name="nextoddpage" value="dalsilichastranka"/>
+ <cd:variable name="previousevenpage" value="predchozisudastranka"/>
+ <cd:variable name="previousoddpage" value="predchozilichastranka"/>
+ <cd:variable name="readonly" value="pouzeprocteni"/>
+ <cd:variable name="required" value="pozadovane"/>
+ <cd:variable name="protected" value="chranene"/>
+ <cd:variable name="sorted" value="tridene"/>
+ <cd:variable name="unavailable" value="nedostupne"/>
+ <cd:variable name="hidden" value="skryte"/>
+ <cd:variable name="printable" value="tisknutelne"/>
+ <cd:variable name="bookmark" value="zalozka"/>
+ <cd:variable name="nocheck" value="nocheck"/>
+ <cd:variable name="innermargin" value="innermargin"/>
+ <cd:variable name="outermargin" value="outermargin"/>
+ <cd:variable name="inneredge" value="inneredge"/>
+ <cd:variable name="outeredge" value="outeredge"/>
+ <cd:variable name="controls" value="controls"/>
+ <cd:variable name="nothanging" value="nothanging"/>
+ <cd:variable name="hyphenated" value="hyphenated"/>
+ <cd:variable name="nothyphenated" value="nothyphenated"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="vycet"/>
+ <cd:variable name="description" value="popis"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="controls"/>
+ <cd:constant name="global" value="globalne"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="konverze"/>
+ <cd:variable name="by" value="skrz"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="kaligraficke"/>
+ <cd:variable name="handwritten" value="rukopisne"/>
+ <cd:variable name="sansserif" value="bezserifu"/>
+ <cd:variable name="roman" value="antikva"/>
+ <cd:variable name="teletype" value="strojopis"/>
+ <cd:variable name="type" value="opis"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="pravidelne"/>
+ <cd:variable name="support" value="podpora"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="zacatek"/>
+ <cd:element name="end" value="konec"/>
+ <cd:element name="coupled" value="propojene"/>
+ <cd:element name="get" value="ziskat"/>
+ <cd:element name="currentlocal" value="aktualnelokalni"/>
+ <cd:element name="endsetup" value="endsetup"/>
+ <cd:element name="load" value="nacist"/>
+ <cd:element name="emptyone" value="leer"/>
+ <cd:element name="emptytwo" value="prazdne"/>
+ <cd:element name="list" value="seznam"/>
+ <cd:element name="listof" value="seznam"/>
+ <cd:element name="local" value="lokalne"/>
+ <cd:element name="place" value="umisti"/>
+ <cd:element name="reserve" value="rezervovat"/>
+ <cd:element name="start" value="start"/>
+ <cd:element name="setup" value="nastaveni"/>
+ <cd:element name="stop" value="stop"/>
+ <cd:element name="increment" value="zvysit"/>
+ <cd:element name="next" value="dalsi"/>
+ <cd:element name="complete" value="uplny"/>
+ <cd:element name="previous" value="predchozi"/>
+ <cd:element name="previouslocal" value="predchozilokalni"/>
+ <cd:element name="see" value="viz"/>
+ <cd:element name="type" value="opis"/>
+ <cd:element name="makeup" value="zlom"/>
+ <cd:element name="text" value="text"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="buffer"/>
+ <cd:variable name="linenote" value="linenote"/>
+ <cd:variable name="comment" value="komentar"/>
+ <cd:variable name="interactionmenu" value="interaktivnimenu"/>
+ <cd:variable name="postponing" value="odlozit"/>
+ <cd:variable name="hiding" value="skryt"/>
+ <cd:variable name="tabulate" value="tabelator"/>
+ <cd:variable name="tabulatehead" value="tabulatehead"/>
+ <cd:variable name="tabulatetail" value="tabulatetail"/>
+ <cd:variable name="fact" value="fakt"/>
+ <cd:variable name="legend" value="legenda"/>
+ <cd:variable name="formula" value="rovnice"/>
+ <cd:variable name="tablehead" value="zahlavitabulky"/>
+ <cd:variable name="tabletail" value="konectabulky"/>
+ <cd:variable name="setups" value="einstellungen"/>
+ <cd:variable name="helptext" value="textnapovedy"/>
+ <cd:variable name="localenvironment" value="lokalnihoprostredi"/>
+ <cd:variable name="sectionblockenvironment" value="sectionblockenvironment"/>
+ <cd:variable name="pagecomment" value="komentarstranky"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="PrvniStrana"/>
+ <cd:variable name="PreviousPage" value="PredchoziStrana"/>
+ <cd:variable name="NextPage" value="DalsiStrana"/>
+ <cd:variable name="LastPage" value="PosledniStrana"/>
+ <cd:variable name="PreviousJump" value="PredchoziSkok"/>
+ <cd:variable name="NextJump" value="NasledujiciSkok"/>
+ <cd:variable name="ToggleViewer" value="ZmenitProhlizec"/>
+ <cd:variable name="ExitViewer" value="UkoncitProhlizec"/>
+ <cd:variable name="CloseDocument" value="ZavritDokument"/>
+ <cd:variable name="SaveDocument" value="UlozitDokument"/>
+ <cd:variable name="SaveNamedDocument" value="SaveNamedDocument"/>
+ <cd:variable name="OpenNamedDocument" value="OpenNamedDocument"/>
+ <cd:variable name="ViewerHelp" value="NapovedaProhlizece"/>
+ <cd:variable name="PrintDocument" value="VytisknoutDokument"/>
+ <cd:variable name="SearchDocument" value="ProhledatDokument"/>
+ <cd:variable name="SearchAgain" value="HledatZnovu"/>
+ <cd:variable name="Query" value="Query"/>
+ <cd:variable name="QueryAgain" value="QueryAgain"/>
+ <cd:variable name="GotoPage" value="JdiNaStranku"/>
+ <cd:variable name="StartMovie" value="SpustitFilm"/>
+ <cd:variable name="StopMovie" value="ZastavitFilm"/>
+ <cd:variable name="PauseMovie" value="PozastavitFilm"/>
+ <cd:variable name="ResumeMovie" value="PokracovatFilm"/>
+ <cd:variable name="StartSound" value="StartZvuk"/>
+ <cd:variable name="StopSound" value="StopZvuk"/>
+ <cd:variable name="PauseSound" value="PozastavitZvuk"/>
+ <cd:variable name="ResumeSound" value="PokracovatZvuk"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauseRendering"/>
+ <cd:variable name="ResumeRendering" value="ResumeRendering"/>
+ <cd:variable name="SaveForm" value="UlozitFormular"/>
+ <cd:variable name="LoadForm" value="NacistFormular"/>
+ <cd:variable name="ResetForm" value="ResetFormulare"/>
+ <cd:variable name="SubmitForm" value="PoslatFormular"/>
+ <cd:variable name="HideField" value="SkryjPole"/>
+ <cd:variable name="ShowField" value="UkazPole"/>
+ <cd:variable name="FitWidth" value="FitWidth"/>
+ <cd:variable name="FitHeight" value="FitHeight"/>
+ <cd:variable name="HideLayer" value="HideLayer"/>
+ <cd:variable name="VideLayer" value="VideLayer"/>
+ <cd:variable name="ToggleLayer" value="ToggleLayer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="Novy"/>
+ <cd:variable name="Balloon" value="Bublinka"/>
+ <cd:variable name="Addition" value="Pridavek"/>
+ <cd:variable name="Help" value="Napoveda"/>
+ <cd:variable name="Paragraph" value="Odstavec"/>
+ <cd:variable name="Key" value="Klavesa"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="jazyk"/>
+ <cd:command name="mainlanguage" value="hlavnijazyk"/>
+ <cd:command name="translate" value="prelozit"/>
+ <cd:command name="installlanguage" value="instalacejazyka"/>
+ <cd:command name="setuplanguage" value="nastavjazyk"/>
+ <cd:command name="showmakeup" value="ukazupravu"/>
+ <cd:command name="useencoding" value="uzijkodovani"/>
+ <cd:command name="usespecials" value="uzijspeciality"/>
+ <cd:command name="defineoutput" value="definujvystup"/>
+ <cd:command name="setupoutput" value="nastavvystup"/>
+ <cd:command name="defineaccent" value="definujakcent"/>
+ <cd:command name="definecharacter" value="definujznak"/>
+ <cd:command name="definecommand" value="definujprikaz"/>
+ <cd:command name="startcoding" value="startkodovani"/>
+ <cd:command name="stopcoding" value="stopkodovani"/>
+ <cd:command name="definebodyfontenvironment" value="definujprostredizakladnihofontu"/>
+ <cd:command name="setupbodyfontenvironment" value="nastavprostredizakladnihofontu"/>
+ <cd:command name="definebodyfont" value="definujzakladnifont"/>
+ <cd:command name="definefont" value="definujfont"/>
+ <cd:command name="definefontsynonym" value="definujsynonumumfontu"/>
+ <cd:command name="definestyle" value="definujstyl"/>
+ <cd:command name="definefontstyle" value="definujstylfontu"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="setuptype" value="nastavtype"/>
+ <cd:command name="type" value="opis"/>
+ <cd:command name="typ" value="pis"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definujopis"/>
+ <cd:command name="definetype" value="definetype"/>
+ <cd:command name="setuptyping" value="nastavopis"/>
+ <cd:command name="typefile" value="opissoubor"/>
+ <cd:command name="setupfootnotes" value="nastavpoznamkypodcarou"/>
+ <cd:command name="setupfootnotedefinition" value="nastavdefinicipoznamekpodcarou"/>
+ <cd:command name="note" value="poznamka"/>
+ <cd:command name="footnote" value="poznamkapodcarou"/>
+ <cd:command name="footnotetext" value="footnotetext"/>
+ <cd:command name="startlocalfootnotes" value="startlokalnipoznamkypodcarou"/>
+ <cd:command name="stoplocalfootnotes" value="stoplokalnipoznamkypodcarou"/>
+ <cd:command name="placelocalfootnotes" value="umistilokalnipoznamkypodcarou"/>
+ <cd:command name="placefootnotes" value="umistipoznamkypodcarou"/>
+ <cd:command name="currentdate" value="aktualnidatum"/>
+ <cd:command name="date" value="datum"/>
+ <cd:command name="weekday" value="vsedniden"/>
+ <cd:command name="WEEKDAY" value="VSEDNIDEN"/>
+ <cd:command name="month" value="mesic"/>
+ <cd:command name="MONTH" value="MESIC"/>
+ <cd:command name="Numbers" value="Cisla"/>
+ <cd:command name="numbers" value="cisla"/>
+ <cd:command name="romannumerals" value="rimskecislice"/>
+ <cd:command name="Romannumerals" value="Rimskecislice"/>
+ <cd:command name="character" value="znak"/>
+ <cd:command name="Character" value="Znak"/>
+ <cd:command name="characters" value="znaky"/>
+ <cd:command name="Characters" value="Znaky"/>
+ <cd:command name="unknown" value="neznamo"/>
+ <cd:command name="definesymbol" value="definujsymbol"/>
+ <cd:command name="definefiguresymbol" value="definujobrazeksymbol"/>
+ <cd:command name="symbol" value="symbol"/>
+ <cd:command name="setupsymbolset" value="nastavsadusymbolu"/>
+ <cd:command name="showsymbolset" value="ukazsadusymbolu"/>
+ <cd:command name="startsymbolset" value="startsadasymbolu"/>
+ <cd:command name="usesymbols" value="uzijsymbol"/>
+ <cd:command name="defineconversion" value="definujkonverzi"/>
+ <cd:command name="convertnumber" value="konvertujcislo"/>
+ <cd:command name="setupcapitals" value="nastavkapitalky"/>
+ <cd:command name="smallcapped" value="kap"/>
+ <cd:command name="notsmallcapped" value="nokap"/>
+ <cd:command name="CAPPED" value="KAP"/>
+ <cd:command name="SmallCapped" value="Kap"/>
+ <cd:command name="SmallCaps" value="Kaps"/>
+ <cd:command name="WORD" value="SLOVO"/>
+ <cd:command name="WORDS" value="SLOVA"/>
+ <cd:command name="Word" value="Slovo"/>
+ <cd:command name="Words" value="Slova"/>
+ <cd:command name="stretched" value="roztazene"/>
+ <cd:command name="overstrike" value="preskrtnuto"/>
+ <cd:command name="overstrikes" value="preskrtnuti"/>
+ <cd:command name="overbar" value="nadtrzeno"/>
+ <cd:command name="overbars" value="nadtrzeni"/>
+ <cd:command name="underbar" value="podtrzeno"/>
+ <cd:command name="underbars" value="podtrzeni"/>
+ <cd:command name="setupunderbar" value="nastavpodtrzeni"/>
+ <cd:command name="setupbodyfont" value="nastavzakladnifont"/>
+ <cd:command name="switchtobodyfont" value="prepninazakladnifont"/>
+ <cd:command name="showbodyfont" value="ukazzakladnifont"/>
+ <cd:command name="showbodyfontenvironment" value="ukazpostredizakladnihofontu"/>
+ <cd:command name="headtext" value="texthlavicky"/>
+ <cd:command name="labeltext" value="textpopisku"/>
+ <cd:command name="LABELTEXT" value="TEXTPOPISKU"/>
+ <cd:command name="setupheadtext" value="nastavtexthlavicky"/>
+ <cd:command name="setuplabeltext" value="nastavtextpopisku"/>
+ <cd:command name="marginrule" value="marginalnilinka"/>
+ <cd:command name="startmarginrule" value="startmarginalnilinka"/>
+ <cd:command name="stopmarginrule" value="stopmarginalnilinka"/>
+ <cd:command name="setupmarginrules" value="nastavmarginalnilinky"/>
+ <cd:command name="blackrule" value="cernalinka"/>
+ <cd:command name="blackrules" value="cernelinky"/>
+ <cd:command name="setupblackrules" value="nastavcernelinky"/>
+ <cd:command name="setupscreens" value="nastavrastr"/>
+ <cd:command name="framed" value="oramovani"/>
+ <cd:command name="inframed" value="zaramovani"/>
+ <cd:command name="mframed" value="maoramovani"/>
+ <cd:command name="inmframed" value="mazaramovani"/>
+ <cd:command name="setupframed" value="nastavoramovani"/>
+ <cd:command name="setuplinewidth" value="nastavsirkucary"/>
+ <cd:command name="setupthinrules" value="nastavtenkelinky"/>
+ <cd:command name="thinrule" value="tenkalinka"/>
+ <cd:command name="thinrules" value="tenkelinky"/>
+ <cd:command name="hairline" value="vlasovalinka"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="definujoramovani"/>
+ <cd:command name="defineframedtext" value="definujoramovanytext"/>
+ <cd:command name="setupframedtexts" value="nastavoramovanetexty"/>
+ <cd:command name="defineoverlay" value="definujprekryv"/>
+ <cd:command name="definelayer" value="definelayer"/>
+ <cd:command name="background" value="pozadi"/>
+ <cd:command name="startbackground" value="startpozadi"/>
+ <cd:command name="stopbackground" value="stoppozadi"/>
+ <cd:command name="setupbackground" value="nastavpozadi"/>
+ <cd:command name="fillinrules" value="vyplnovelinky"/>
+ <cd:command name="setupfillinrules" value="nastavvyplnovelinky"/>
+ <cd:command name="fillintext" value="vyplnenytext"/>
+ <cd:command name="setupfillinlines" value="nastavvyplnoveradky"/>
+ <cd:command name="fillinline" value="vyplnovyradek"/>
+ <cd:command name="setuptextrules" value="nastavtextovelinky"/>
+ <cd:command name="textrule" value="textovalinka"/>
+ <cd:command name="starttextrule" value="starttextovalinka"/>
+ <cd:command name="stoptextrule" value="stoptextovalinka"/>
+ <cd:command name="usemodule" value="uzijmodul"/>
+ <cd:command name="usemodules" value="uzijmoduly"/>
+ <cd:command name="starttext" value="starttext"/>
+ <cd:command name="stoptext" value="stoptext"/>
+ <cd:command name="margintitle" value="marginalninadpis"/>
+ <cd:command name="marginword" value="marginalnislovo"/>
+ <cd:command name="margintext" value="marginalnitext"/>
+ <cd:command name="inleft" value="vlevo"/>
+ <cd:command name="inmargin" value="naokraj"/>
+ <cd:command name="inothermargin" value="nadruhyokraj"/>
+ <cd:command name="inright" value="vpravo"/>
+ <cd:command name="ininner" value="ininner"/>
+ <cd:command name="inouter" value="inouter"/>
+ <cd:command name="startmarginblock" value="startmarginalniblok"/>
+ <cd:command name="stopmarginblock" value="stopmarginalniblok"/>
+ <cd:command name="defineinmargin" value="defineinmargin"/>
+ <cd:command name="setupinmargin" value="nastavmarginalie"/>
+ <cd:command name="setupmarginblocks" value="nastavmarginalniblok"/>
+ <cd:command name="inleftedge" value="nalevo"/>
+ <cd:command name="inleftmargin" value="nalevyokraj"/>
+ <cd:command name="inrightmargin" value="napravyokraj"/>
+ <cd:command name="inrightedge" value="napravo"/>
+ <cd:command name="atleftmargin" value="atleftmargin"/>
+ <cd:command name="atrightmargin" value="atrightmargin"/>
+ <cd:command name="wordright" value="slovovpravo"/>
+ <cd:command name="defineblank" value="definujpreskok"/>
+ <cd:command name="blank" value="preskoc"/>
+ <cd:command name="setupblank" value="nastavpreskok"/>
+ <cd:command name="correctwhitespace" value="korekcebilehomista"/>
+ <cd:command name="fixedspaces" value="tvrdemezery"/>
+ <cd:command name="fixedspace" value="tvrdamezera"/>
+ <cd:command name="nospace" value="zadnamezera"/>
+ <cd:command name="space" value="mezera"/>
+ <cd:command name="nowhitespace" value="zadnebilemisto"/>
+ <cd:command name="packed" value="zhustene"/>
+ <cd:command name="startpacked" value="startzhustene"/>
+ <cd:command name="stoppacked" value="stopzhustene"/>
+ <cd:command name="startunpacked" value="startnezhustene"/>
+ <cd:command name="stopunpacked" value="stopnezhustene"/>
+ <cd:command name="startlinecorrection" value="startkorekceradku"/>
+ <cd:command name="stoplinecorrection" value="stopkorekceradku"/>
+ <cd:command name="godown" value="jdidolu"/>
+ <cd:command name="whitespace" value="bilemisto"/>
+ <cd:command name="noindenting" value="zadneodsazovani"/>
+ <cd:command name="indenting" value="odsazovani"/>
+ <cd:command name="setupindenting" value="nastavodsazovani"/>
+ <cd:command name="startalignment" value="startzarovnavani"/>
+ <cd:command name="stopalignment" value="stopzarovnavani"/>
+ <cd:command name="startlines" value="startradky"/>
+ <cd:command name="stoplines" value="stopradky"/>
+ <cd:command name="setupparagraphnumbering" value="nastavcislovaniodstavcu"/>
+ <cd:command name="setuplinenumbering" value="nastavcislovaniradku"/>
+ <cd:command name="startlinenumbering" value="startcislovaniradku"/>
+ <cd:command name="stoplinenumbering" value="stopcislovaniradku"/>
+ <cd:command name="startline" value="startradek"/>
+ <cd:command name="stopline" value="stopradek"/>
+ <cd:command name="someline" value="nejakyradek"/>
+ <cd:command name="inline" value="vradku"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="emptylines"/>
+ <cd:command name="setuplines" value="nastavradky"/>
+ <cd:command name="startnarrower" value="startzuzeni"/>
+ <cd:command name="stopnarrower" value="stopzuzeni"/>
+ <cd:command name="setupnarrower" value="nastavzuzeni"/>
+ <cd:command name="definetabulate" value="definujtabelaci"/>
+ <cd:command name="setuptabulate" value="nastavtabelaci"/>
+ <cd:command name="starttable" value="starttabulka"/>
+ <cd:command name="stoptable" value="stoptabulka"/>
+ <cd:command name="starttables" value="starttabulky"/>
+ <cd:command name="stoptables" value="stoptabulky"/>
+ <cd:command name="setuptables" value="nastavtabulky"/>
+ <cd:command name="definetabletemplate" value="definujsablonutabulky"/>
+ <cd:command name="page" value="strana"/>
+ <cd:command name="testcolumn" value="testcolumn"/>
+ <cd:command name="testpage" value="testpage"/>
+ <cd:command name="couplepage" value="parovastrana"/>
+ <cd:command name="pagetype" value="typstrany"/>
+ <cd:command name="processpage" value="zpracujstranu"/>
+ <cd:command name="couplepaper" value="dvoustrannypapir"/>
+ <cd:command name="selectpaper" value="vyberpapir"/>
+ <cd:command name="screen" value="obrazovka"/>
+ <cd:command name="definesection" value="definujsekci"/>
+ <cd:command name="definesectionblock" value="definujbloksekce"/>
+ <cd:command name="setupsectionblock" value="nastavbloksekce"/>
+ <cd:command name="setupsection" value="nastavsekci"/>
+ <cd:command name="notopandbottomlines" value="zadnehorniadolniradky"/>
+ <cd:command name="noheaderandfooterlines" value="zadnezahlaviaupati"/>
+ <cd:command name="setuptop" value="nastavhorejsek"/>
+ <cd:command name="setuptoptexts" value="nastavhornitexty"/>
+ <cd:command name="setupheader" value="nastavzahlavi"/>
+ <cd:command name="setupheadertexts" value="nastavtextyzahlavi"/>
+ <cd:command name="setuppagenumbering" value="nastavcislovanistran"/>
+ <cd:command name="getnumber" value="getnumber"/>
+ <cd:command name="incrementnumber" value="zvysujicicislo"/>
+ <cd:command name="decrementnumber" value="decrementnumber"/>
+ <cd:command name="resetnumber" value="resetnumber"/>
+ <cd:command name="setnumber" value="setnumber"/>
+ <cd:command name="setupnumber" value="setupnumber"/>
+ <cd:command name="setupbottom" value="nastavspodek"/>
+ <cd:command name="setupbottomtexts" value="nastavdolnitexty"/>
+ <cd:command name="setupfooter" value="nastavupati"/>
+ <cd:command name="setupfootertexts" value="nastavtextyupati"/>
+ <cd:command name="setuppagenumber" value="nastavcislostrany"/>
+ <cd:command name="setupsubpagenumber" value="nastavpodcislostrany"/>
+ <cd:command name="subpagenumber" value="subpagenumber"/>
+ <cd:command name="setuptext" value="nastavtext"/>
+ <cd:command name="setuptexttexts" value="nastavtexttexty"/>
+ <cd:command name="definetext" value="definujtext"/>
+ <cd:command name="pagenumber" value="cislostrany"/>
+ <cd:command name="completepagenumber" value="completepagenumber"/>
+ <cd:command name="placepagenumber" value="placepagenumber"/>
+ <cd:command name="items" value="polozky"/>
+ <cd:command name="setupitems" value="nastavpolozky"/>
+ <cd:command name="leftaligned" value="zarovnanovlevo"/>
+ <cd:command name="midaligned" value="zarovnanonastred"/>
+ <cd:command name="rightaligned" value="zarovnanovpravo"/>
+ <cd:command name="startcolumns" value="startsloupce"/>
+ <cd:command name="stopcolumns" value="stopsloupce"/>
+ <cd:command name="setupcolumns" value="nastavsloupce"/>
+ <cd:command name="column" value="sloupec"/>
+ <cd:command name="head" value="nadpis"/>
+ <cd:command name="but" value="spodek"/>
+ <cd:command name="item" value="polozka"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="okr"/>
+ <cd:command name="sym" value="sym"/>
+ <cd:command name="its" value="pol"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="headsym"/>
+ <cd:command name="defineitemgroup" value="defineitemgroup"/>
+ <cd:command name="setupitemgroup" value="setupitemgroup"/>
+ <cd:command name="setupitemgroups" value="setupitemgroups"/>
+ <cd:command name="definehead" value="definujnadpis"/>
+ <cd:command name="setuphead" value="nastavnadpis"/>
+ <cd:command name="setupheads" value="nastavnadpisy"/>
+ <cd:command name="setupheadnumber" value="nastavcislonadpisu"/>
+ <cd:command name="headnumber" value="cislonadpisu"/>
+ <cd:command name="currentheadnumber" value="aktualnicislonadpisu"/>
+ <cd:command name="determineheadnumber" value="stanovcislonadpisu"/>
+ <cd:command name="resetmarking" value="resetznaceni"/>
+ <cd:command name="setupmarking" value="nastavznaceni"/>
+ <cd:command name="definemarking" value="definujznaceni"/>
+ <cd:command name="nomarking" value="zadneznaceni"/>
+ <cd:command name="marking" value="znaceni"/>
+ <cd:command name="decouplemarking" value="rozpojeneznaceni"/>
+ <cd:command name="couplemarking" value="propojeneznaceni"/>
+ <cd:command name="getmarking" value="ziskejznaceni"/>
+ <cd:command name="definelayout" value="definelayout"/>
+ <cd:command name="setuplayout" value="nastavvzhled"/>
+ <cd:command name="adaptlayout" value="prizpusobvzhled"/>
+ <cd:command name="placeongrid" value="umistinamrizku"/>
+ <cd:command name="moveongrid" value="premistinamrizku"/>
+ <cd:command name="showsetups" value="ukaznastaveni"/>
+ <cd:command name="showframe" value="ukazramecek"/>
+ <cd:command name="showgrid" value="ukazmrizku"/>
+ <cd:command name="showlayout" value="ukazvzhled"/>
+ <cd:command name="showprint" value="ukazvytisk"/>
+ <cd:command name="showstruts" value="ukazpodpery"/>
+ <cd:command name="definepapersize" value="definujvelikostpapiru"/>
+ <cd:command name="setuppapersize" value="nastavvelikostpapiru"/>
+ <cd:command name="setuppaper" value="setuppaper"/>
+ <cd:command name="setuparranging" value="nastavusporadani"/>
+ <cd:command name="version" value="verze"/>
+ <cd:command name="setupbackgrounds" value="nastavpozadi"/>
+ <cd:command name="setupalign" value="nastavzarovnani"/>
+ <cd:command name="setupwhitespace" value="nastavbilamista"/>
+ <cd:command name="setupinteraction" value="nastavinterakci"/>
+ <cd:command name="setupinteractionmenu" value="nastavinterakcnimenu"/>
+ <cd:command name="defineinteractionmenu" value="definujinterakcnimenu"/>
+ <cd:command name="disableinteractionmenu" value="zablokujinterakcnimenu"/>
+ <cd:command name="interactionmenu" value="interaktivnimenu"/>
+ <cd:command name="interactionbuttons" value="interakcnitlacitka"/>
+ <cd:command name="interactionbar" value="interakcnilista"/>
+ <cd:command name="setupinteractionbar" value="nastavinterakcnilistu"/>
+ <cd:command name="setupinteractionscreen" value="nastavinterakcniobrazovku"/>
+ <cd:command name="placebookmarks" value="umistizalozky"/>
+ <cd:command name="bookmark" value="zalozka"/>
+ <cd:command name="definelogo" value="definujlogo"/>
+ <cd:command name="placelogos" value="umistiloga"/>
+ <cd:command name="definecolor" value="definujbarvu"/>
+ <cd:command name="definecolorgroup" value="definujskupinubarev"/>
+ <cd:command name="definepalet" value="definujpaletu"/>
+ <cd:command name="graycolor" value="sedabarva"/>
+ <cd:command name="color" value="barva"/>
+ <cd:command name="startcolor" value="startbarva"/>
+ <cd:command name="stopcolor" value="stopbarva"/>
+ <cd:command name="setupcolors" value="nastavbarvy"/>
+ <cd:command name="setupcolor" value="nastavbarvu"/>
+ <cd:command name="setuppalet" value="nastavpaletu"/>
+ <cd:command name="showcolor" value="ukazbarvu"/>
+ <cd:command name="showcolorgroup" value="ukazskupinubarev"/>
+ <cd:command name="showpalet" value="ukazpaletu"/>
+ <cd:command name="comparecolorgroup" value="porovnejskupinubarev"/>
+ <cd:command name="comparepalet" value="porovnejpaletu"/>
+ <cd:command name="colorvalue" value="hodnotabarvy"/>
+ <cd:command name="greyvalue" value="hodnotasedi"/>
+ <cd:command name="startraster" value="startrastr"/>
+ <cd:command name="stopraster" value="stoprastr"/>
+ <cd:command name="defineblock" value="definujblok"/>
+ <cd:command name="setupblock" value="nastavblok"/>
+ <cd:command name="useblocks" value="uzijbloky"/>
+ <cd:command name="processblocks" value="zpracujbloky"/>
+ <cd:command name="keepblocks" value="zachovejbloky"/>
+ <cd:command name="selectblocks" value="vyberbloky"/>
+ <cd:command name="hideblocks" value="schovejbloky"/>
+ <cd:command name="bypassblocks" value="bypassblocks"/>
+ <cd:command name="forceblocks" value="forceblocks"/>
+ <cd:command name="nomoreblocks" value="zadnedalsibloky"/>
+ <cd:command name="definelist" value="definujseznam"/>
+ <cd:command name="definecombinedlist" value="definujkombinovanyseznam"/>
+ <cd:command name="listsymbol" value="listsymbol"/>
+ <cd:command name="placelist" value="umistiseznam"/>
+ <cd:command name="plaatsruwelijst" value="placerawlist"/>
+ <cd:command name="placecombinedlist" value="umistikombinovanyseznam"/>
+ <cd:command name="writetolist" value="zapisdoseznamu"/>
+ <cd:command name="writebetweenlist" value="zapismeziseznam"/>
+ <cd:command name="immediatetolist" value="immediatetolist"/>
+ <cd:command name="immediatebetweenlist" value="immediatebetweenlist"/>
+ <cd:command name="setuplist" value="nastavseznam"/>
+ <cd:command name="setupcombinedlist" value="nastavkombinovanyseznam"/>
+ <cd:command name="determinelistcharacteristics" value="stanovcharakteristickuseznamu"/>
+ <cd:command name="listlength" value="delkaseznamu"/>
+ <cd:command name="listwidth" value="sirkaseznamu"/>
+ <cd:command name="listheight" value="vyskaseznamu"/>
+ <cd:command name="nolist" value="zadnyseznam"/>
+ <cd:command name="definereferencelist" value="definujseznamodkazu"/>
+ <cd:command name="placereferencelist" value="umistiseznamodkazu"/>
+ <cd:command name="writetoreferencelist" value="zapisdoseznamuodkazu"/>
+ <cd:command name="setupreferencelist" value="nastavseznamodkazu"/>
+ <cd:command name="definefloat" value="definujplvouciobjekt"/>
+ <cd:command name="setupfloat" value="nastavplvouciobjekt"/>
+ <cd:command name="setupfloats" value="nastavplvouciobjekty"/>
+ <cd:command name="splitfloat" value="rozdelplvouciobjekt"/>
+ <cd:command name="setupfloatsplitting" value="nastavdeleniplvoucichobjektu"/>
+ <cd:command name="placefloat" value="placefloat"/>
+ <cd:command name="movesidefloat" value="movesidefloat"/>
+ <cd:command name="defineplacement" value="defineplacement"/>
+ <cd:command name="setupplacement" value="setupplacement"/>
+ <cd:command name="definecombination" value="definecombination"/>
+ <cd:command name="startcombination" value="startspojeni"/>
+ <cd:command name="stopcombination" value="stopspojeni"/>
+ <cd:command name="placesidebyside" value="umistivedlesebe"/>
+ <cd:command name="placeontopofeachother" value="umistinadsebe"/>
+ <cd:command name="setupcaption" value="nastavpopisek"/>
+ <cd:command name="setupcaptions" value="nastavpopisky"/>
+ <cd:command name="setupcombinations" value="nastavspojeni"/>
+ <cd:command name="startoverlay" value="startprekryv"/>
+ <cd:command name="stopoverlay" value="stopprekryv"/>
+ <cd:command name="defineregister" value="definujrejstrik"/>
+ <cd:command name="coupleregister" value="propojenyrejstrik"/>
+ <cd:command name="setupregister" value="nastavrejstrik"/>
+ <cd:command name="writetoregister" value="zapisdorejstriku"/>
+ <cd:command name="completeregister" value="completeregister"/>
+ <cd:command name="placeregister" value="umistirejstrik"/>
+ <cd:command name="determineregistercharacteristics" value="urcicharakteristikurejstriku"/>
+ <cd:command name="definesorting" value="definujtrideni"/>
+ <cd:command name="definesynonyms" value="definujsynonyma"/>
+ <cd:command name="setupsorting" value="nastavtrideni"/>
+ <cd:command name="setupsynonyms" value="nastavsynonyma"/>
+ <cd:command name="startsynchronization" value="startsynchronizace"/>
+ <cd:command name="stopsynchronization" value="stopsynchronizace"/>
+ <cd:command name="setupsynchronizationbar" value="nastavsynchronizacnilistu"/>
+ <cd:command name="setupsynchronization" value="nastavsynchronizaci"/>
+ <cd:command name="synchronizationbar" value="synchronizacnilista"/>
+ <cd:command name="synchronize" value="synchronizovat"/>
+ <cd:command name="useexternaldocument" value="uzijexternidokument"/>
+ <cd:command name="useURL" value="uzijURL"/>
+ <cd:command name="useurl" value="uzijurl"/>
+ <cd:command name="setupurl" value="nastavurl"/>
+ <cd:command name="coupledocument" value="propojenydokument"/>
+ <cd:command name="setupprograms" value="nastavprogramy"/>
+ <cd:command name="defineprogram" value="definujprogram"/>
+ <cd:command name="program" value="program"/>
+ <cd:command name="setuppagetransitions" value="nastavprechodstrany"/>
+ <cd:command name="defineprofile" value="definujprofil"/>
+ <cd:command name="defineversion" value="definujverzi"/>
+ <cd:command name="markversion" value="oznacverzi"/>
+ <cd:command name="selectversion" value="vyberverzi"/>
+ <cd:command name="startprofile" value="startprofil"/>
+ <cd:command name="startversion" value="startverze"/>
+ <cd:command name="setupprofiles" value="nastavprofily"/>
+ <cd:command name="setupversions" value="nastavverze"/>
+ <cd:command name="stopprofile" value="stopprofil"/>
+ <cd:command name="stopversion" value="stopverze"/>
+ <cd:command name="followprofile" value="dodrzujprofil"/>
+ <cd:command name="followprofileversion" value="dodrzujverziprofilu"/>
+ <cd:command name="followversion" value="dodrzujverzi"/>
+ <cd:command name="definedescription" value="definujpopis"/>
+ <cd:command name="definelabel" value="definujpopisek"/>
+ <cd:command name="defineenumeration" value="definujvycet"/>
+ <cd:command name="defineindenting" value="definujodsazovani"/>
+ <cd:command name="setupdescriptions" value="nastavpopisy"/>
+ <cd:command name="setupenumerations" value="nastavvycty"/>
+ <cd:command name="setupindentations" value="nastavodsazovani"/>
+ <cd:command name="setuptab" value="nastavtab"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="nastavexterniobrazy"/>
+ <cd:command name="showexternalfigures" value="ukazexterniobrazy"/>
+ <cd:command name="externalfigure" value="externiobraz"/>
+ <cd:command name="useexternalfigure" value="uzijexterniobraz"/>
+ <cd:command name="startfigure" value="startobraz"/>
+ <cd:command name="referring" value="odkazujici"/>
+ <cd:command name="remark" value="oznaceni"/>
+ <cd:command name="colorbar" value="barevnalista"/>
+ <cd:command name="grid" value="mrizka"/>
+ <cd:command name="button" value="tlacitko"/>
+ <cd:command name="menubutton" value="tlacitkomenu"/>
+ <cd:command name="setupbuttons" value="nastavtlacitka"/>
+ <cd:command name="usereferences" value="uzijodkazy"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="setupreferencelist" value="nastavseznamodkazu"/>
+ <cd:command name="setupreferencing" value="nastavodkazovani"/>
+ <cd:command name="textreference" value="odkaznatext"/>
+ <cd:command name="pagereference" value="odkaznastranu"/>
+ <cd:command name="reference" value="odkaz"/>
+ <cd:command name="definereference" value="definujodkaz"/>
+ <cd:command name="definereferenceformat" value="definujformatodkazu"/>
+ <cd:command name="useJSscripts" value="uzijJSscripts"/>
+ <cd:command name="from" value="zref"/>
+ <cd:command name="in" value="tref"/>
+ <cd:command name="at" value="pref"/>
+ <cd:command name="about" value="oref"/>
+ <cd:command name="goto" value="jdina"/>
+ <cd:command name="atpage" value="nastrane"/>
+ <cd:command name="somewhere" value="nekde"/>
+ <cd:command name="navigating" value="navigating"/>
+ <cd:command name="ref" value="ref"/>
+ <cd:command name="gotobox" value="jdinabox"/>
+ <cd:command name="gotopage" value="jdinastranu"/>
+ <cd:command name="placeformula" value="umistirovnici"/>
+ <cd:command name="placesubformula" value="umistipodrovnici"/>
+ <cd:command name="moveformula" value="moveformula"/>
+ <cd:command name="setupformulas" value="nastavrovnice"/>
+ <cd:command name="formulanumber" value="cislorovnice"/>
+ <cd:command name="subformulanumber" value="cislopodrovnice"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="fakt"/>
+ <cd:command name="mathematics" value="matematika"/>
+ <cd:command name="dimension" value="rozmer"/>
+ <cd:command name="nodimension" value="zadnyrozmer"/>
+ <cd:command name="startenvironment" value="startprostredi"/>
+ <cd:command name="stopenvironment" value="stopprostredi"/>
+ <cd:command name="startcomponent" value="startkomponenta"/>
+ <cd:command name="stopcomponent" value="stopkomponenta"/>
+ <cd:command name="startproduct" value="startprodukt"/>
+ <cd:command name="stopproduct" value="stopprodukt"/>
+ <cd:command name="startproject" value="startprojekt"/>
+ <cd:command name="stopproject" value="stopprojekt"/>
+ <cd:command name="setups" value="nastaveni"/>
+ <cd:command name="project" value="projekt"/>
+ <cd:command name="component" value="komponenta"/>
+ <cd:command name="product" value="produkt"/>
+ <cd:command name="environment" value="prostredi"/>
+ <cd:command name="nomorefiles" value="zadnedalsisoubory"/>
+ <cd:command name="getbuffer" value="ziskejbuffer"/>
+ <cd:command name="setupbuffer" value="nastavbuffer"/>
+ <cd:command name="typebuffer" value="typebuffer"/>
+ <cd:command name="definebuffer" value="definujbuffer"/>
+ <cd:command name="unitmeaning" value="vyznam"/>
+ <cd:command name="infull" value="plnezneni"/>
+ <cd:command name="quotation" value="citace"/>
+ <cd:command name="quote" value="citovat"/>
+ <cd:command name="startquotation" value="startcitace"/>
+ <cd:command name="stopquotation" value="stopcitace"/>
+ <cd:command name="setupquote" value="nastavcitaci"/>
+ <cd:command name="define" value="definuj"/>
+ <cd:command name="redo" value="opakovat"/>
+ <cd:command name="usecommands" value="uzijprikazy"/>
+ <cd:command name="definestartstop" value="definujstartstop"/>
+ <cd:command name="setupstartstop" value="setupstartstop"/>
+ <cd:command name="startlocal" value="startlokalni"/>
+ <cd:command name="stoplocal" value="stoplokalni"/>
+ <cd:command name="startglobal" value="startglobalni"/>
+ <cd:command name="stopglobal" value="stopglobalni"/>
+ <cd:command name="macroname" value="jmeno"/>
+ <cd:command name="definemakeup" value="definujupravu"/>
+ <cd:command name="setupmakeup" value="nastavupravu"/>
+ <cd:command name="startmakeup" value="startuprava"/>
+ <cd:command name="stopmakeup" value="stopuprava"/>
+ <cd:command name="useexternalsoundtrack" value="uzijexternizvuk"/>
+ <cd:command name="useexternalfile" value="uzijexternisoubor"/>
+ <cd:command name="useexternalfiles" value="uzijexternisoubory"/>
+ <cd:command name="referral" value="odkaz"/>
+ <cd:command name="referraldate" value="odkaznadatum"/>
+ <cd:command name="high" value="vysoky"/>
+ <cd:command name="lohi" value="nivy"/>
+ <cd:command name="low" value="nizky"/>
+ <cd:command name="fraction" value="zlomek"/>
+ <cd:command name="chem" value="chem"/>
+ <cd:command name="startopposite" value="startprotejsek"/>
+ <cd:command name="stopopposite" value="stopprotejsek"/>
+ <cd:command name="setupoppositeplacing" value="nastavumisteniprotejsku"/>
+ <cd:command name="startpositioning" value="startumistovani"/>
+ <cd:command name="stoppositioning" value="stopumistovani"/>
+ <cd:command name="position" value="pozice"/>
+ <cd:command name="setuppositioning" value="nastavumistovani"/>
+ <cd:command name="rotate" value="otocit"/>
+ <cd:command name="setuprotate" value="nastavotoceni"/>
+ <cd:command name="mirror" value="zrcadlit"/>
+ <cd:command name="scale" value="meritko"/>
+ <cd:command name="setupnumbering" value="nastavcislovani"/>
+ <cd:command name="reset" value="reset"/>
+ <cd:command name="setuppublications" value="nastavpublikace"/>
+ <cd:command name="publication" value="publikace"/>
+ <cd:command name="definehbox" value="definujhbox"/>
+ <cd:command name="adding" value="scitani"/>
+ <cd:command name="periods" value="tecky"/>
+ <cd:command name="setuphyphenmark" value="nastavdelitko"/>
+ <cd:command name="setupinterlinespace" value="nastavmeziradkovoumezeru"/>
+ <cd:command name="setupspacing" value="nastavradkovani"/>
+ <cd:command name="setuptolerance" value="nastavtoleranci"/>
+ <cd:command name="setupsystem" value="nastavsystem"/>
+ <cd:command name="usepath" value="uzijadresar"/>
+ <cd:command name="defineparagraphs" value="definujodstavce"/>
+ <cd:command name="setupparagraphs" value="nastavodstavce"/>
+ <cd:command name="donttest" value="zadnytest"/>
+ <cd:command name="setupcomment" value="nastavkomentar"/>
+ <cd:command name="comment" value="komentar"/>
+ <cd:command name="definefield" value="definujpole"/>
+ <cd:command name="definemainfield" value="definujhlavnipole"/>
+ <cd:command name="definesubfield" value="definujpodpole"/>
+ <cd:command name="clonefield" value="klonujpole"/>
+ <cd:command name="copyfield" value="kopirujpole"/>
+ <cd:command name="setupfield" value="nastavpole"/>
+ <cd:command name="setupfields" value="nastavvsechnapole"/>
+ <cd:command name="field" value="pole"/>
+ <cd:command name="fitfield" value="prizpusobivepole"/>
+ <cd:command name="logfields" value="zaznamovepole"/>
+ <cd:command name="showfields" value="ukazpole"/>
+ <cd:command name="tooltip" value="bublinkovanapoveda"/>
+ <cd:command name="fillinfield" value="vyplnovepole"/>
+ <cd:command name="definefieldstack" value="definujzasobnikpoli"/>
+ <cd:command name="fieldstack" value="zasobnikpoli"/>
+ <cd:command name="setupforms" value="setupforms"/>
+ <cd:command name="setupclipping" value="nastavorez"/>
+ <cd:command name="clip" value="orez"/>
+ <cd:command name="placelegend" value="umistilegendu"/>
+ <cd:command name="setuplegend" value="nastavlegendu"/>
+ <cd:command name="setuppagecomment" value="nastavkomentarstrany"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="definerule" value="definerule"/>
+ <cd:command name="placerule" value="placerule"/>
+ <cd:command name="setuprule" value="setuprule"/>
+ <cd:command name="definetextvariable" value="definetextvariable"/>
+ <cd:command name="setuptextvariable" value="setuptextvariable"/>
+ <cd:command name="settextvariable" value="settextvariable"/>
+ <cd:command name="placetextvariable" value="placetextvariable"/>
+ <cd:command name="textvariable" value="textvariable"/>
+ <cd:command name="definetextposition" value="definetextposition"/>
+ <cd:command name="setuptextposition" value="setuptextposition"/>
+ <cd:command name="positiontext" value="positiontext"/>
+ <cd:command name="definerawfont" value="definerawfont"/>
+ <cd:command name="switchtorawfont" value="switchtorawfont"/>
+ <cd:command name="placeheadtext" value="placeheadtext"/>
+ <cd:command name="placeheadnumber" value="placeheadnumber"/>
+ <cd:command name="definepagebreak" value="definepagebreak"/>
+ <cd:command name="definecolumnbreak" value="definecolumnbreak"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="nastavvycty"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="vyskahorejsku"/>
+ <cd:command name="topdistance" value="vzdalenosthorejsku"/>
+ <cd:command name="headerheight" value="vyskazahlavi"/>
+ <cd:command name="headerdistance" value="vzdalenostzahlavi"/>
+ <cd:command name="textheight" value="vyskatextu"/>
+ <cd:command name="footerdistance" value="vzdalenostupati"/>
+ <cd:command name="footerheight" value="vyskaupati"/>
+ <cd:command name="bottomdistance" value="vzdalenostspodku"/>
+ <cd:command name="bottomheight" value="vyskaspodku"/>
+ <cd:command name="marginwidth" value="sirkamarginalie"/>
+ <cd:command name="leftmarginwidth" value="sirkalevemarginalie"/>
+ <cd:command name="rightmarginwidth" value="sirkapravemarginalie"/>
+ <cd:command name="margindistance" value="vzdalenostmarginalie"/>
+ <cd:command name="leftmargindistance" value="vzdalenostlevemarginalie"/>
+ <cd:command name="rightmargindistance" value="vzdalenostpravemarginalie"/>
+ <cd:command name="edgewidth" value="sirkaokraje"/>
+ <cd:command name="leftedgewidth" value="sirkalevehookraje"/>
+ <cd:command name="rightedgewidth" value="sirkapravehookraje"/>
+ <cd:command name="edgedistance" value="vzdalenostokraje"/>
+ <cd:command name="leftedgedistance" value="vzdalenostlevehookraje"/>
+ <cd:command name="rightedgedistance" value="vzdalenostpravehookraje"/>
+ <cd:command name="innermarginwidth" value="innermarginwidth"/>
+ <cd:command name="outermarginwidth" value="outermarginwidth"/>
+ <cd:command name="innermargindistance" value="innermargindistance"/>
+ <cd:command name="outermargindistance" value="outermargindistance"/>
+ <cd:command name="inneredgewidth" value="inneredgewidth"/>
+ <cd:command name="outeredgewidth" value="outeredgewidth"/>
+ <cd:command name="inneredgedistance" value="inneredgedistance"/>
+ <cd:command name="outeredgedistance" value="outeredgedistance"/>
+ <cd:command name="textwidth" value="sirkatextu"/>
+ <cd:command name="makeupwidth" value="sirkasazby"/>
+ <cd:command name="makeupheight" value="vyskasazby"/>
+ <cd:command name="topspace" value="odsazenishora"/>
+ <cd:command name="bottomspace" value="bottomspace"/>
+ <cd:command name="backspace" value="odsazenizleva"/>
+ <cd:command name="cutspace" value="cutspace"/>
+ <cd:command name="paperwidth" value="sirkapapiru"/>
+ <cd:command name="paperheight" value="vyskapapiru"/>
+ <cd:command name="printpaperwidth" value="sirkatiskpapiru"/>
+ <cd:command name="printpaperheight" value="vyskatiskpapiru"/>
+ <cd:command name="pageoffset" value="pageoffset"/>
+ <cd:command name="pagedepth" value="pagedepth"/>
+ <cd:command name="headlevel" value="hlavniuroven"/>
+ <cd:command name="linewidth" value="tloustkacary"/>
+ <cd:command name="totalnumberofpages" value="celkovypocetstran"/>
+ <cd:command name="numberofsubpages" value="numberofsubpages"/>
+ <cd:command name="useXMLfilter" value="useXMLfilter"/>
+ <cd:command name="definecolumnset" value="definecolumnset"/>
+ <cd:command name="setupcolumnset" value="setupcolumnset"/>
+ <cd:command name="startcolumnset" value="startcolumnset"/>
+ <cd:command name="stopcolumnset" value="stopcolumnset"/>
+ <cd:command name="setupcolumnsetlines" value="setupcolumnsetlines"/>
+ <cd:command name="setupcolumnsetstart" value="setupcolumnsetstart"/>
+ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/>
+ <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/>
+ <cd:command name="usetypescript" value="usetypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="startdokument"/>
+ <cd:command name="stopdocument" value="stopdokument"/>
+ <cd:command name="startoverzicht" value="startprehled"/>
+ <cd:command name="stopoverzicht" value="stopprehled"/>
+ <cd:command name="label" value="poppisek"/>
+ <cd:command name="labels" value="popisky"/>
+ <cd:command name="domicile" value="bydliste"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-de.xml b/Master/texmf-dist/tex/context/interface/keys-de.xml
new file mode 100644
index 00000000000..831fd37c18b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-de.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="eins"/>
+ <cd:variable name="two" value="zwei"/>
+ <cd:variable name="three" value="drei"/>
+ <cd:variable name="four" value="vier"/>
+ <cd:variable name="five" value="fuenf"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="umgebung"/>
+ <cd:variable name="component" value="komponente"/>
+ <cd:variable name="product" value="produkt"/>
+ <cd:variable name="project" value="projekt"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="sonntag"/>
+ <cd:variable name="monday" value="montag"/>
+ <cd:variable name="tuesday" value="dienstag"/>
+ <cd:variable name="wednesday" value="mittwoch"/>
+ <cd:variable name="thursday" value="donnerstag"/>
+ <cd:variable name="friday" value="freitag"/>
+ <cd:variable name="saturday" value="samstag"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="Januar"/>
+ <cd:variable name="february" value="Februar"/>
+ <cd:variable name="march" value="Maerz"/>
+ <cd:variable name="april" value="April"/>
+ <cd:variable name="may" value="Mai"/>
+ <cd:variable name="june" value="Juni"/>
+ <cd:variable name="july" value="Juli"/>
+ <cd:variable name="august" value="August"/>
+ <cd:variable name="september" value="September"/>
+ <cd:variable name="october" value="Oktober"/>
+ <cd:variable name="november" value="November"/>
+ <cd:variable name="december" value="Dezember"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="aufseite"/>
+ <cd:variable name="hencefore" value="vorher"/>
+ <cd:variable name="hereafter" value="nachher"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="abschnitt"/>
+ <cd:variable name="part" value="teil"/>
+ <cd:variable name="chapter" value="kapitel"/>
+ <cd:variable name="subject" value="thema"/>
+ <cd:variable name="section" value="absatz"/>
+ <cd:variable name="title" value="titel"/>
+ <cd:variable name="margintitle" value="marginaltitel"/>
+ <cd:variable name="content" value="inhalt"/>
+ <cd:variable name="contents" value="inhalte"/>
+ <cd:variable name="appendix" value="anhang"/>
+ <cd:variable name="appendices" value="anhaenge"/>
+ <cd:variable name="bodypart" value="haupttext"/>
+ <cd:variable name="bodymatter" value="haupttexte"/>
+ <cd:variable name="frontpart" value="einleitung"/>
+ <cd:variable name="frontmatter" value="einleitungen"/>
+ <cd:variable name="backpart" value="epilog"/>
+ <cd:variable name="backmatter" value="epiloge"/>
+ <cd:variable name="footnote" value="fussnote"/>
+ <cd:variable name="endnote" value="endnote"/>
+ <cd:variable name="system" value="systeme"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="unterabsatz"/>
+ <cd:variable name="subsubsection" value="unterunterabsatz"/>
+ <cd:variable name="subsubsubsection" value="unterunterunterabsatz"/>
+ <cd:variable name="subsubsubsubsection" value="unterunterunterunterabsatz"/>
+ <cd:variable name="subsubsubsubsubsection" value="unterunterunterunterunterabsatz"/>
+ <cd:variable name="subsubject" value="unterthema"/>
+ <cd:variable name="subsubsubject" value="unterunterthema"/>
+ <cd:variable name="subsubsubsubject" value="unterunterunterthema"/>
+ <cd:variable name="subsubsubsubsubject" value="unterunterunterunterthema"/>
+ <cd:variable name="subsubsubsubsubsubject" value="unterunterunterunterunterthema"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="flushleft"/>
+ <cd:variable name="flushright" value="flushright"/>
+ <cd:variable name="center" value="center"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="tippen"/>
+ <cd:variable name="file" value="datei"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="formel"/>
+ <cd:variable name="formulae" value="formeln"/>
+ <cd:variable name="figure" value="abbildung"/>
+ <cd:variable name="figures" value="abbildungen"/>
+ <cd:variable name="table" value="tabelle"/>
+ <cd:variable name="tables" value="tabellen"/>
+ <cd:variable name="graphic" value="grafik"/>
+ <cd:variable name="graphics" value="grafiken"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzi"/>
+ <cd:variable name="index" value="index"/>
+ <cd:variable name="indices" value="indizies"/>
+ <cd:variable name="abbreviation" value="abkuerzung"/>
+ <cd:variable name="abbreviations" value="abkuerzungen"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="logos"/>
+ <cd:variable name="unit" value="einheit"/>
+ <cd:variable name="units" value="einheiten"/>
+ <cd:variable name="line" value="zeile"/>
+ <cd:variable name="lines" value="zeilen"/>
+ <cd:variable name="framedtext" value="umrahmtertext"/>
+ <cd:variable name="quotation" value="zitat"/>
+ <cd:variable name="quote" value="zitieren"/>
+ <cd:variable name="speech" value="speech"/>
+ <cd:variable name="itemize" value="aufzaehlung"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="linkerzitat"/>
+ <cd:constant name="rightquotation" value="rechterzitat"/>
+ <cd:constant name="leftquote" value="linkerzitieren"/>
+ <cd:constant name="rightquote" value="rechterzitieren"/>
+ <cd:constant name="compoundhyphen" value="compoundhyphen"/>
+ <cd:constant name="leftcompoundhyphen" value="leftcompoundhyphen"/>
+ <cd:constant name="rightcompoundhyphen" value="rightcompoundhyphen"/>
+ <cd:constant name="midsentence" value="midsentence"/>
+ <cd:constant name="leftsentence" value="linkersatz"/>
+ <cd:constant name="rightsentence" value="rechtersatz"/>
+ <cd:constant name="leftsubsentence" value="linkersubsatz"/>
+ <cd:constant name="rightsubsentence" value="rechtersubsatz"/>
+ <cd:constant name="leftspeech" value="leftspeech"/>
+ <cd:constant name="middlespeech" value="middlespeech"/>
+ <cd:constant name="rightspeech" value="rightspeech"/>
+ <cd:constant name="limittext" value="limittext"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="spacebefore" value="vorspatium"/>
+ <cd:constant name="spaceinbetween" value="spaceinbetween"/>
+ <cd:constant name="spaceafter" value="nachspatium"/>
+ <cd:constant name="sidespacebefore" value="nebenvorspatium"/>
+ <cd:constant name="sidespaceafter" value="nebennachspatium"/>
+ <cd:constant name="to" value="zu"/>
+ <cd:constant name="indicator" value="indikator"/>
+ <cd:constant name="background" value="hintergrund"/>
+ <cd:constant name="backgrounddepth" value="hintergrundtiefe"/>
+ <cd:constant name="backgroundcorner" value="hintergrundwinkel"/>
+ <cd:constant name="splitcolor" value="splitcolor"/>
+ <cd:constant name="backgroundcolor" value="hintergrundfarbe"/>
+ <cd:constant name="foregroundcolor" value="foregroundcolor"/>
+ <cd:constant name="foregroundstyle" value="foregroundstyle"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="hintergrundoffset"/>
+ <cd:constant name="backgroundscreen" value="hintergrundraster"/>
+ <cd:constant name="backgroundradius" value="hintergrundradius"/>
+ <cd:constant name="address" value="adresse"/>
+ <cd:constant name="stopper" value="abschnitttrenner"/>
+ <cd:constant name="distance" value="abstand"/>
+ <cd:constant name="paragraph" value="absatz"/>
+ <cd:constant name="axis" value="achsen"/>
+ <cd:constant name="author" value="autor"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="ausgleichen"/>
+ <cd:constant name="wfactor" value="bfaktor"/>
+ <cd:constant name="inner" value="innen"/>
+ <cd:constant name="blank" value="blanko"/>
+ <cd:constant name="obstruction" value="gesperrt"/>
+ <cd:constant name="blockway" value="blockauf"/>
+ <cd:constant name="bottomspace" value="bottomspace"/>
+ <cd:constant name="top" value="oben"/>
+ <cd:constant name="topdistance" value="obenabstand"/>
+ <cd:constant name="topframe" value="obenrahmen"/>
+ <cd:constant name="topoffset" value="obenoffset"/>
+ <cd:constant name="topstate" value="statusoben"/>
+ <cd:constant name="width" value="breite"/>
+ <cd:constant name="maxwidth" value="maxbreite"/>
+ <cd:constant name="minwidth" value="minbreite"/>
+ <cd:constant name="source" value="quelle"/>
+ <cd:constant name="command" value="befehl"/>
+ <cd:constant name="commands" value="befehle"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="kontrastfarbe"/>
+ <cd:constant name="conversion" value="konversion"/>
+ <cd:constant name="headconversion" value="headconversion"/>
+ <cd:constant name="headlabel" value="headlabel"/>
+ <cd:constant name="criterium" value="kriterium"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="default" value="default"/>
+ <cd:constant name="depth" value="tiefe"/>
+ <cd:constant name="depthcorrection" value="tiefekorrektur"/>
+ <cd:constant name="continue" value="fortsetzen"/>
+ <cd:constant name="doublesided" value="doppelseitig"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="einheit"/>
+ <cd:constant name="ownnumber" value="eigenenummer"/>
+ <cd:constant name="evenmargin" value="geraderand"/>
+ <cd:constant name="expansion" value="expansion"/>
+ <cd:constant name="keyexpansion" value="keyexpansion"/>
+ <cd:constant name="factor" value="faktor"/>
+ <cd:constant name="convertfile" value="konvertieredatei"/>
+ <cd:constant name="file" value="datei"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="groesse"/>
+ <cd:constant name="autofocus" value="autofocus"/>
+ <cd:constant name="focus" value="focus"/>
+ <cd:constant name="directory" value="verzeichnis"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="gritter"/>
+ <cd:constant name="big" value="gross"/>
+ <cd:constant name="get" value="hole"/>
+ <cd:constant name="hang" value="haengend"/>
+ <cd:constant name="repeat" value="wiederholen"/>
+ <cd:constant name="hfactor" value="hfaktor"/>
+ <cd:constant name="corner" value="winkel"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="umrahmen"/>
+ <cd:constant name="header" value="kopfzeile"/>
+ <cd:constant name="headerdistance" value="kopfzeilenabstand"/>
+ <cd:constant name="headerstate" value="kopfzeilenstatus"/>
+ <cd:constant name="height" value="hoehe"/>
+ <cd:constant name="maxheight" value="maxhoehe"/>
+ <cd:constant name="minheight" value="minhoehe"/>
+ <cd:constant name="mindepth" value="mindepth"/>
+ <cd:constant name="current" value="aktuell"/>
+ <cd:constant name="in" value="in"/>
+ <cd:constant name="indenting" value="einziehen"/>
+ <cd:constant name="interaction" value="interaktion"/>
+ <cd:constant name="interlinespace" value="zeilenabstande"/>
+ <cd:constant name="items" value="posten"/>
+ <cd:constant name="frame" value="rahmen"/>
+ <cd:constant name="framedepth" value="rahmentiefe"/>
+ <cd:constant name="framecorner" value="rahmenwinkel"/>
+ <cd:constant name="framecolor" value="rahmenfarbe"/>
+ <cd:constant name="frameoffset" value="rahmenoffset"/>
+ <cd:constant name="frameradius" value="rahmenradius"/>
+ <cd:constant name="marginedge" value="marginalkante"/>
+ <cd:constant name="marginedgetext" value="marginalkantetext"/>
+ <cd:constant name="aligncharacter" value="aligncharacter"/>
+ <cd:constant name="alignmentcharacter" value="alignmentcharacter"/>
+ <cd:constant name="small" value="klein"/>
+ <cd:constant name="color" value="farbe"/>
+ <cd:constant name="column" value="spalte"/>
+ <cd:constant name="columns" value="spalten"/>
+ <cd:constant name="columndistance" value="spaltenabstand"/>
+ <cd:constant name="headcommand" value="headcommand"/>
+ <cd:constant name="headcolor" value="kopffarbe"/>
+ <cd:constant name="headstyle" value="kopfstil"/>
+ <cd:constant name="afterhead" value="nachkopf"/>
+ <cd:constant name="veroffset" value="kopfoffset"/>
+ <cd:constant name="coupling" value="verknuepfung"/>
+ <cd:constant name="couplingway" value="verkopplungsart"/>
+ <cd:constant name="beforehead" value="vorkopf"/>
+ <cd:constant name="topspace" value="kopfspatium"/>
+ <cd:constant name="bodyfont" value="fliesstext"/>
+ <cd:constant name="label" value="label"/>
+ <cd:constant name="empty" value="leer"/>
+ <cd:constant name="style" value="stil"/>
+ <cd:constant name="rule" value="linie"/>
+ <cd:constant name="rulethickness" value="liniendicke"/>
+ <cd:constant name="rulecolor" value="linienfarbe"/>
+ <cd:constant name="list" value="liste"/>
+ <cd:constant name="leftwidth" value="linkerbreite"/>
+ <cd:constant name="leftframe" value="linkerrahmen"/>
+ <cd:constant name="leftcolor" value="linkerfarbe"/>
+ <cd:constant name="leftstyle" value="linkerstil"/>
+ <cd:constant name="leftmargin" value="linkerrand"/>
+ <cd:constant name="leftmargindistance" value="linkerrandabstand"/>
+ <cd:constant name="leftoffset" value="linkeroffset"/>
+ <cd:constant name="leftedge" value="linkekante"/>
+ <cd:constant name="leftedgedistance" value="linkerkantenabstand"/>
+ <cd:constant name="lefttext" value="linkertext"/>
+ <cd:constant name="left" value="links"/>
+ <cd:constant name="nleft" value="nlinks"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="logos"/>
+ <cd:constant name="local" value="lokal"/>
+ <cd:constant name="margin" value="marginalie"/>
+ <cd:constant name="margindistance" value="marginalabstand"/>
+ <cd:constant name="margintext" value="marginaltext"/>
+ <cd:constant name="marking" value="beschriftung"/>
+ <cd:constant name="marcolor" value="beschrfarbe"/>
+ <cd:constant name="marstyle" value="beschrstil"/>
+ <cd:constant name="menu" value="menue"/>
+ <cd:constant name="splitmethod" value="splitmethod"/>
+ <cd:constant name="textmethod" value="textmethod"/>
+ <cd:constant name="sidemethod" value="sidemethod"/>
+ <cd:constant name="method" value="methode"/>
+ <cd:constant name="middle" value="mittig"/>
+ <cd:constant name="middletext" value="mittigertext"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="muster"/>
+ <cd:constant name="after" value="nach"/>
+ <cd:constant name="name" value="name"/>
+ <cd:constant name="commandafter" value="zumbefehl"/>
+ <cd:constant name="ntop" value="noben"/>
+ <cd:constant name="level" value="niveau"/>
+ <cd:constant name="levels" value="niveaus"/>
+ <cd:constant name="nbottom" value="nunten"/>
+ <cd:constant name="norm" value="norm"/>
+ <cd:constant name="nlines" value="zzeile"/>
+ <cd:constant name="number" value="nummer"/>
+ <cd:constant name="numbercommand" value="nummerbefehl"/>
+ <cd:constant name="numbering" value="nummerierung"/>
+ <cd:constant name="numbercolor" value="nummernfarbe"/>
+ <cd:constant name="numberstyle" value="nummernstil"/>
+ <cd:constant name="numberseparator" value="nummernseperator"/>
+ <cd:constant name="object" value="objekt"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="unten"/>
+ <cd:constant name="bottomdistance" value="abstandunten"/>
+ <cd:constant name="bottomframe" value="untenrahmen"/>
+ <cd:constant name="bottomoffset" value="untenoffset"/>
+ <cd:constant name="bottomstate" value="untenstatus"/>
+ <cd:constant name="oddmargin" value="ungeraderand"/>
+ <cd:constant name="at" value="bei"/>
+ <cd:constant name="option" value="option"/>
+ <cd:constant name="page" value="seite"/>
+ <cd:constant name="pagecommand" value="seitenbefehl"/>
+ <cd:constant name="pagecolor" value="seitenfarbe"/>
+ <cd:constant name="pagestyle" value="seitenstil"/>
+ <cd:constant name="pagenumber" value="seitennummer"/>
+ <cd:constant name="headnumber" value="kopfnummer"/>
+ <cd:constant name="pageboundaries" value="seitenbegrenzung"/>
+ <cd:constant name="pagestate" value="pagestate"/>
+ <cd:constant name="palet" value="palette"/>
+ <cd:constant name="paper" value="papier"/>
+ <cd:constant name="location" value="platz"/>
+ <cd:constant name="placestopper" value="setzetrenner"/>
+ <cd:constant name="place" value="platziere"/>
+ <cd:constant name="placehead" value="setzekopf"/>
+ <cd:constant name="position" value="position"/>
+ <cd:constant name="prefix" value="prefix"/>
+ <cd:constant name="preset" value="voreinstellung"/>
+ <cd:constant name="preview" value="vorschau"/>
+ <cd:constant name="process" value="process"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="punkt"/>
+ <cd:constant name="arrow" value="pfeil"/>
+ <cd:constant name="edge" value="kante"/>
+ <cd:constant name="edgedistance" value="kantenabstand"/>
+ <cd:constant name="screen" value="raster"/>
+ <cd:constant name="rightwidth" value="rechterbreite"/>
+ <cd:constant name="rightframe" value="rechterrahmen"/>
+ <cd:constant name="rightcolor" value="rechterfarbe"/>
+ <cd:constant name="rightstyle" value="rechterstil"/>
+ <cd:constant name="rightmargin" value="rechterrand"/>
+ <cd:constant name="rightmargindistance" value="rechterrandabstand"/>
+ <cd:constant name="rightoffset" value="rechterabstand"/>
+ <cd:constant name="rightedge" value="rechtekante"/>
+ <cd:constant name="rightedgedistance" value="rechterkantenabstand"/>
+ <cd:constant name="righttext" value="rechtertext"/>
+ <cd:constant name="right" value="rechts"/>
+ <cd:constant name="nright" value="nrechts"/>
+ <cd:constant name="reduction" value="reduktion"/>
+ <cd:constant name="referencing" value="referieren"/>
+ <cd:constant name="line" value="zeile"/>
+ <cd:constant name="linecorrection" value="zeilekorrektur"/>
+ <cd:constant name="lines" value="zeilen"/>
+ <cd:constant name="stretch" value="strecken"/>
+ <cd:constant name="resolution" value="aufloesung"/>
+ <cd:constant name="rotation" value="rotation"/>
+ <cd:constant name="orientation" value="orientation"/>
+ <cd:constant name="horoffset" value="rumpfabstand"/>
+ <cd:constant name="backspace" value="rumpfspatium"/>
+ <cd:constant name="direction" value="richtung"/>
+ <cd:constant name="scale" value="format"/>
+ <cd:constant name="separator" value="seperator"/>
+ <cd:constant name="display" value="bildschirm"/>
+ <cd:constant name="scope" value="bereich"/>
+ <cd:constant name="section" value="abschnitt"/>
+ <cd:constant name="sectionnumber" value="abschnittsnummer"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="cutspace"/>
+ <cd:constant name="family" value="familie"/>
+ <cd:constant name="space" value="spatium"/>
+ <cd:constant name="spacing" value="spatiumausgleich"/>
+ <cd:constant name="split" value="split"/>
+ <cd:constant name="splitoffset" value="splitoffset"/>
+ <cd:constant name="indentnext" value="ziehefolgendeein"/>
+ <cd:constant name="step" value="schritt"/>
+ <cd:constant name="stack" value="stack"/>
+ <cd:constant name="start" value="start"/>
+ <cd:constant name="state" value="status"/>
+ <cd:constant name="stop" value="stop"/>
+ <cd:constant name="radius" value="radius"/>
+ <cd:constant name="dash" value="strich"/>
+ <cd:constant name="sub" value="unter"/>
+ <cd:constant name="subtitle" value="untertitel"/>
+ <cd:constant name="symbol" value="symbol"/>
+ <cd:constant name="symbolset" value="symbolset"/>
+ <cd:constant name="symcolor" value="symfarbe"/>
+ <cd:constant name="symstyle" value="symstil"/>
+ <cd:constant name="synonym" value="synonym"/>
+ <cd:constant name="synonymcolor" value="synonymfarbe"/>
+ <cd:constant name="synonymstyle" value="synonymstil"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="zeichen"/>
+ <cd:constant name="text" value="text"/>
+ <cd:constant name="listtext" value="listtext"/>
+ <cd:constant name="textwidth" value="textbreite"/>
+ <cd:constant name="textcommand" value="textbefehl"/>
+ <cd:constant name="textsize" value="textgroesse"/>
+ <cd:constant name="textcolor" value="textfarbe"/>
+ <cd:constant name="textstyle" value="textstil"/>
+ <cd:constant name="textseparator" value="textseparator"/>
+ <cd:constant name="textstate" value="textstatus"/>
+ <cd:constant name="title" value="titel"/>
+ <cd:constant name="titlestyle" value="titelstil"/>
+ <cd:constant name="titlecolor" value="titelfarbe"/>
+ <cd:constant name="titledistance" value="titelabstand"/>
+ <cd:constant name="aligntitle" value="titelausrichten"/>
+ <cd:constant name="tolerance" value="toleranz"/>
+ <cd:constant name="inbetween" value="zwischen"/>
+ <cd:constant name="type" value="typ"/>
+ <cd:constant name="align" value="ausrichtung"/>
+ <cd:constant name="urlspace" value="urlspatium"/>
+ <cd:constant name="urlalternative" value="urlalternative"/>
+ <cd:constant name="from" value="von"/>
+ <cd:constant name="alternative" value="alternative"/>
+ <cd:constant name="increment" value="erhoehen"/>
+ <cd:constant name="incrementnumber" value="nummererhoehen"/>
+ <cd:constant name="resetnumber" value="resetnumber"/>
+ <cd:constant name="reference" value="referenz"/>
+ <cd:constant name="unknownreference" value="unbekantereferenz"/>
+ <cd:constant name="footer" value="fusszeile"/>
+ <cd:constant name="footerdistance" value="fusszeilenabstand"/>
+ <cd:constant name="footerstate" value="fusszeilenstatus"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="folgende"/>
+ <cd:constant name="before" value="vor"/>
+ <cd:constant name="commandbefore" value="vorbefehl"/>
+ <cd:constant name="previous" value="vorige"/>
+ <cd:constant name="previousnumber" value="vorigenummer"/>
+ <cd:constant name="delay" value="wartezeit"/>
+ <cd:constant name="way" value="art"/>
+ <cd:constant name="random" value="zufaellig"/>
+ <cd:constant name="white" value="weiss"/>
+ <cd:constant name="xfactor" value="xfaktor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xformat"/>
+ <cd:constant name="xstep" value="xschritt"/>
+ <cd:constant name="yfactor" value="yfaktor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="yformat"/>
+ <cd:constant name="ystep" value="yschritt"/>
+ <cd:constant name="samepage" value="selbeseite"/>
+ <cd:constant name="sidealign" value="sidealign"/>
+ <cd:constant name="side" value="objektabstand"/>
+ <cd:constant name="fieldlayer" value="fieldlayer"/>
+ <cd:constant name="textlayer" value="textlayer"/>
+ <cd:constant name="fieldbackgroundcolor" value="feldhintergrundfarbe"/>
+ <cd:constant name="fieldframecolor" value="feldrahmenfarbe"/>
+ <cd:constant name="fieldoffset" value="feldoffset"/>
+ <cd:constant name="openaction" value="oeffenaktion"/>
+ <cd:constant name="closeaction" value="schliessenaktion"/>
+ <cd:constant name="openpageaction" value="openpageaction"/>
+ <cd:constant name="closepageaction" value="closepageaction"/>
+ <cd:constant name="clickin" value="klickin"/>
+ <cd:constant name="clickout" value="klickaus"/>
+ <cd:constant name="regionin" value="regionin"/>
+ <cd:constant name="regionout" value="regionaus"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusout"/>
+ <cd:constant name="afterkey" value="nachtaste"/>
+ <cd:constant name="format" value="formatieren"/>
+ <cd:constant name="validate" value="validieren"/>
+ <cd:constant name="calculate" value="berechnen"/>
+ <cd:constant name="click" value="klick"/>
+ <cd:constant name="vcommand" value="vbefehl"/>
+ <cd:constant name="icommand" value="ibefehl"/>
+ <cd:constant name="ccommand" value="cbefehl"/>
+ <cd:constant name="textdistance" value="textdistance"/>
+ <cd:constant name="textmargin" value="textmargin"/>
+ <cd:constant name="keyword" value="keyword"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="an"/>
+ <cd:variable name="serried" value="kleinerabstand"/>
+ <cd:variable name="joinedup" value="keinabstand"/>
+ <cd:variable name="absolute" value="absolut"/>
+ <cd:variable name="background" value="hintergrund"/>
+ <cd:variable name="backward" value="rueckwaerts"/>
+ <cd:variable name="subbackward" value="unterrueckwaerts"/>
+ <cd:variable name="action" value="aktion"/>
+ <cd:variable name="stopper" value="trenner"/>
+ <cd:variable name="paragraph" value="absatz"/>
+ <cd:variable name="all" value="alles"/>
+ <cd:variable name="always" value="immer"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autointro"/>
+ <cd:variable name="both" value="beide"/>
+ <cd:variable name="inner" value="innen"/>
+ <cd:variable name="blank" value="blanko"/>
+ <cd:variable name="disable" value="sperren"/>
+ <cd:variable name="top" value="oben"/>
+ <cd:variable name="wide" value="breit"/>
+ <cd:variable name="width" value="breite"/>
+ <cd:variable name="outer" value="aussen"/>
+ <cd:variable name="numbers" value="ziffern"/>
+ <cd:variable name="Numbers" value="Ziffern"/>
+ <cd:variable name="command" value="befehl"/>
+ <cd:variable name="commands" value="befehle"/>
+ <cd:variable name="concept" value="konzept"/>
+ <cd:variable name="day" value="tag"/>
+ <cd:variable name="date" value="datum"/>
+ <cd:variable name="default" value="default"/>
+ <cd:variable name="final" value="endfassung"/>
+ <cd:variable name="depth" value="tiefe"/>
+ <cd:variable name="doublesided" value="doppelseitig"/>
+ <cd:variable name="first" value="erste"/>
+ <cd:variable name="each" value="jede"/>
+ <cd:variable name="singlesided" value="einzelseitig"/>
+ <cd:variable name="somewhere" value="irgendwo"/>
+ <cd:variable name="nowhere" value="nirgens"/>
+ <cd:variable name="even" value="gerade"/>
+ <cd:variable name="external" value="extern"/>
+ <cd:variable name="file" value="datei"/>
+ <cd:variable name="flexible" value="flexibel"/>
+ <cd:variable name="force" value="zwinge"/>
+ <cd:variable name="used" value="verwende"/>
+ <cd:variable name="none" value="kein"/>
+ <cd:variable name="nomarking" value="keinebeschriftung"/>
+ <cd:variable name="nonumber" value="nonumber"/>
+ <cd:variable name="nowhite" value="keinweiss"/>
+ <cd:variable name="rotated" value="gedreht"/>
+ <cd:variable name="mirrored" value="gespiegelt"/>
+ <cd:variable name="global" value="global"/>
+ <cd:variable name="grid" value="gritter"/>
+ <cd:variable name="big" value="gross"/>
+ <cd:variable name="bigbodyfont" value="bigbodyfont"/>
+ <cd:variable name="bigpreference" value="grosszuegig"/>
+ <cd:variable name="gray" value="grau"/>
+ <cd:variable name="halfline" value="halbezeile"/>
+ <cd:variable name="keep" value="behalte"/>
+ <cd:variable name="hanging" value="haengend"/>
+ <cd:variable name="spacing" value="spatiumausgleich"/>
+ <cd:variable name="nospacing" value="nospacing"/>
+ <cd:variable name="repeat" value="wiederholen"/>
+ <cd:variable name="fix" value="stellewiederher"/>
+ <cd:variable name="here" value="hier"/>
+ <cd:variable name="header" value="kopfzeile"/>
+ <cd:variable name="high" value="hoch"/>
+ <cd:variable name="height" value="hoehe"/>
+ <cd:variable name="horizontal" value="horizontal"/>
+ <cd:variable name="current" value="aktuell"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="nohz"/>
+ <cd:variable name="italic" value="italic"/>
+ <cd:variable name="inherit" value="inherit"/>
+ <cd:variable name="inleft" value="imlinken"/>
+ <cd:variable name="inmargin" value="imrand"/>
+ <cd:variable name="inright" value="imrechten"/>
+ <cd:variable name="interaction" value="interaktion"/>
+ <cd:variable name="intext" value="imtext"/>
+ <cd:variable name="intro" value="intro"/>
+ <cd:variable name="its" value="its"/>
+ <cd:variable name="yes" value="ja"/>
+ <cd:variable name="year" value="jahr"/>
+ <cd:variable name="frame" value="rahmen"/>
+ <cd:variable name="marginedge" value="marginalkante"/>
+ <cd:variable name="cap" value="kap"/>
+ <cd:variable name="capital" value="versalien"/>
+ <cd:variable name="referral" value="merkmal"/>
+ <cd:variable name="small" value="klein"/>
+ <cd:variable name="smallnormal" value="kleinnormal"/>
+ <cd:variable name="smallslanted" value="kleingeneigt"/>
+ <cd:variable name="smallslantedbold" value="kleingeneigtfett"/>
+ <cd:variable name="smallitalic" value="kleinitalic"/>
+ <cd:variable name="smallitalicbold" value="kleinitalicfett"/>
+ <cd:variable name="smalltype" value="kleintippen"/>
+ <cd:variable name="smallbold" value="kleinfett"/>
+ <cd:variable name="smallboldslanted" value="kleinfettgeneigt"/>
+ <cd:variable name="smallbolditalic" value="kleinfettitalic"/>
+ <cd:variable name="smallbodyfont" value="smallbodyfont"/>
+ <cd:variable name="toggle" value="toggle"/>
+ <cd:variable name="color" value="farbe"/>
+ <cd:variable name="column" value="column"/>
+ <cd:variable name="columns" value="spalten"/>
+ <cd:variable name="head" value="kopf"/>
+ <cd:variable name="low" value="tief"/>
+ <cd:variable name="last" value="letzte"/>
+ <cd:variable name="label" value="label"/>
+ <cd:variable name="lohi" value="hoti"/>
+ <cd:variable name="tall" value="lang"/>
+ <cd:variable name="empty" value="leer"/>
+ <cd:variable name="Character" value="Buchstabe"/>
+ <cd:variable name="character" value="buchstabe"/>
+ <cd:variable name="Characters" value="Buchstaben"/>
+ <cd:variable name="characters" value="buchstaben"/>
+ <cd:variable name="landscape" value="querformat"/>
+ <cd:variable name="rule" value="linie"/>
+ <cd:variable name="list" value="liste"/>
+ <cd:variable name="leftmargin" value="linkerrand"/>
+ <cd:variable name="leftpage" value="linkerseite"/>
+ <cd:variable name="leftedge" value="linkekante"/>
+ <cd:variable name="left" value="links"/>
+ <cd:variable name="local" value="lokal"/>
+ <cd:variable name="new" value="neu"/>
+ <cd:variable name="MONTH" value="MONAT"/>
+ <cd:variable name="month" value="monat"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="marginalie"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="mittelalterlich"/>
+ <cd:variable name="medium" value="mittel"/>
+ <cd:variable name="middle" value="mittig"/>
+ <cd:variable name="after" value="nach"/>
+ <cd:variable name="name" value="name"/>
+ <cd:variable name="opposite" value="gegenueber"/>
+ <cd:variable name="no" value="nein"/>
+ <cd:variable name="negative" value="negativ"/>
+ <cd:variable name="positive" value="positiv"/>
+ <cd:variable name="not" value="nicht"/>
+ <cd:variable name="never" value="nie"/>
+ <cd:variable name="normal" value="normal"/>
+ <cd:variable name="number" value="nummer"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="unbekannt"/>
+ <cd:variable name="bottom" value="unten"/>
+ <cd:variable name="odd" value="ungerade"/>
+ <cd:variable name="packed" value="gepackt"/>
+ <cd:variable name="unpacked" value="ungepackt"/>
+ <cd:variable name="makeup" value="umbruch"/>
+ <cd:variable name="atmargin" value="amrand"/>
+ <cd:variable name="overlay" value="overlay"/>
+ <cd:variable name="page" value="seite"/>
+ <cd:variable name="pagenumber" value="seitennummer"/>
+ <cd:variable name="paper" value="papier"/>
+ <cd:variable name="display" value="bildschirm"/>
+ <cd:variable name="reverse" value="reverse"/>
+ <cd:variable name="fit" value="passend"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="vorschau"/>
+ <cd:variable name="program" value="programm"/>
+ <cd:variable name="process" value="process"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="punkt"/>
+ <cd:variable name="ran" value="ran"/>
+ <cd:variable name="edge" value="kante"/>
+ <cd:variable name="screen" value="raster"/>
+ <cd:variable name="rectangular" value="rechteckig"/>
+ <cd:variable name="rightmargin" value="rechterrand"/>
+ <cd:variable name="rightpage" value="rechterseite"/>
+ <cd:variable name="rightedge" value="rechterkante"/>
+ <cd:variable name="right" value="rechts"/>
+ <cd:variable name="line" value="zeile"/>
+ <cd:variable name="register" value="register"/>
+ <cd:variable name="relative" value="relativ"/>
+ <cd:variable name="reset" value="zuruecksetzten"/>
+ <cd:variable name="Romannumerals" value="Roemischezahlen"/>
+ <cd:variable name="romannumerals" value="roemischezahlen"/>
+ <cd:variable name="greek" value="griechisch"/>
+ <cd:variable name="Greek" value="Griechisch"/>
+ <cd:variable name="round" value="rund"/>
+ <cd:variable name="rotate" value="drehe"/>
+ <cd:variable name="stretch" value="strecken"/>
+ <cd:variable name="backspace" value="rumpfspatium"/>
+ <cd:variable name="broad" value="breit"/>
+ <cd:variable name="row" value="row"/>
+ <cd:variable name="slanted" value="geneigt"/>
+ <cd:variable name="slantedbold" value="geneigtfett"/>
+ <cd:variable name="synchronize" value="synchronize"/>
+ <cd:variable name="italicbold" value="italicfett"/>
+ <cd:variable name="sectionnumber" value="abschnittsnummer"/>
+ <cd:variable name="narrow" value="schmall"/>
+ <cd:variable name="cutspace" value="cutspace"/>
+ <cd:variable name="tolerant" value="tolerant"/>
+ <cd:variable name="space" value="spatium"/>
+ <cd:variable name="standard" value="standard"/>
+ <cd:variable name="start" value="start"/>
+ <cd:variable name="stop" value="stop"/>
+ <cd:variable name="strict" value="streng"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="unter"/>
+ <cd:variable name="sym" value="sym"/>
+ <cd:variable name="symbol" value="symbol"/>
+ <cd:variable name="text" value="text"/>
+ <cd:variable name="back" value="zurueck"/>
+ <cd:variable name="test" value="test"/>
+ <cd:variable name="inbetween" value="zwischen"/>
+ <cd:variable name="type" value="tippen"/>
+ <cd:variable name="off" value="aus"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="fest"/>
+ <cd:variable name="loose" value="lose"/>
+ <cd:variable name="continue" value="fortsetzten"/>
+ <cd:variable name="vertical" value="vertikal"/>
+ <cd:variable name="bold" value="fett"/>
+ <cd:variable name="boldslanted" value="fettgeneigt"/>
+ <cd:variable name="bolditalic" value="fettitalic"/>
+ <cd:variable name="quadruple" value="viertel"/>
+ <cd:variable name="footer" value="fusszeile"/>
+ <cd:variable name="next" value="folgende"/>
+ <cd:variable name="before" value="vor"/>
+ <cd:variable name="foreground" value="vordergrund"/>
+ <cd:variable name="preference" value="einstellung"/>
+ <cd:variable name="temporary" value="temporaer"/>
+ <cd:variable name="forward" value="vorwaerts"/>
+ <cd:variable name="subforward" value="untervorwaerts"/>
+ <cd:variable name="previous" value="vorig"/>
+ <cd:variable name="value" value="wert"/>
+ <cd:variable name="week" value="woche"/>
+ <cd:variable name="weekday" value="wochentag"/>
+ <cd:variable name="WEEKDAY" value="WOCHENTAG"/>
+ <cd:variable name="random" value="zufaellig"/>
+ <cd:variable name="white" value="weiss"/>
+ <cd:variable name="very" value="sehr"/>
+ <cd:variable name="verytolerant" value="sehrtolerant"/>
+ <cd:variable name="verystrict" value="sehrstreng"/>
+ <cd:variable name="see" value="sieh"/>
+ <cd:variable name="smallcaps" value="smallcaps"/>
+ <cd:variable name="WORD" value="WORT"/>
+ <cd:variable name="firstpage" value="ersteseite"/>
+ <cd:variable name="firstcolumn" value="firstcolumn"/>
+ <cd:variable name="previouspage" value="vorigeseite"/>
+ <cd:variable name="nextpage" value="folgendeseite"/>
+ <cd:variable name="lastpage" value="letzteseite"/>
+ <cd:variable name="lastcolumn" value="lastcolumn"/>
+ <cd:variable name="lastpagenumber" value="lastpagenumber"/>
+ <cd:variable name="subpage" value="unterseite"/>
+ <cd:variable name="firstsubpage" value="ersteunterseite"/>
+ <cd:variable name="previoussubpage" value="vorigeunterseite"/>
+ <cd:variable name="nextsubpage" value="folgendeunterseite"/>
+ <cd:variable name="lastsubpage" value="letzteunterseite"/>
+ <cd:variable name="nextevenpage" value="naechstegeradeseite"/>
+ <cd:variable name="nextoddpage" value="naechsteungeradeseite"/>
+ <cd:variable name="previousevenpage" value="vorigegeradeseite"/>
+ <cd:variable name="previousoddpage" value="vorigeungeradeseite"/>
+ <cd:variable name="readonly" value="nurlesbar"/>
+ <cd:variable name="required" value="obligatorisch"/>
+ <cd:variable name="protected" value="geschuetzt"/>
+ <cd:variable name="sorted" value="sortiert"/>
+ <cd:variable name="unavailable" value="nichtverfuegbar"/>
+ <cd:variable name="hidden" value="versteckt"/>
+ <cd:variable name="printable" value="druckbar"/>
+ <cd:variable name="bookmark" value="bookmark"/>
+ <cd:variable name="nocheck" value="nocheck"/>
+ <cd:variable name="innermargin" value="innermargin"/>
+ <cd:variable name="outermargin" value="outermargin"/>
+ <cd:variable name="inneredge" value="inneredge"/>
+ <cd:variable name="outeredge" value="outeredge"/>
+ <cd:variable name="controls" value="controls"/>
+ <cd:variable name="nothanging" value="nothanging"/>
+ <cd:variable name="hyphenated" value="hyphenate"/>
+ <cd:variable name="nothyphenated" value="nothyphenated"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="nummerierung"/>
+ <cd:variable name="description" value="beschreibung"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="controls"/>
+ <cd:constant name="global" value="global"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="konversion"/>
+ <cd:variable name="by" value="pro"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="kalligraphie"/>
+ <cd:variable name="handwritten" value="handschrift"/>
+ <cd:variable name="sansserif" value="grotesk"/>
+ <cd:variable name="roman" value="antiqua"/>
+ <cd:variable name="teletype" value="fernschreiber"/>
+ <cd:variable name="type" value="tippen"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="regular"/>
+ <cd:variable name="support" value="support"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="anfang"/>
+ <cd:element name="end" value="ende"/>
+ <cd:element name="coupled" value="verknuepft"/>
+ <cd:element name="get" value="get"/>
+ <cd:element name="currentlocal" value="aktuelllokal"/>
+ <cd:element name="endsetup" value="ein"/>
+ <cd:element name="load" value="laden"/>
+ <cd:element name="emptyone" value="vuoto"/>
+ <cd:element name="emptytwo" value="leer"/>
+ <cd:element name="list" value="auflisten"/>
+ <cd:element name="listof" value="auflistenvon"/>
+ <cd:element name="local" value="lokal"/>
+ <cd:element name="place" value="platziere"/>
+ <cd:element name="reserve" value="reservieren"/>
+ <cd:element name="start" value="start"/>
+ <cd:element name="setup" value="stelle"/>
+ <cd:element name="stop" value="stop"/>
+ <cd:element name="increment" value="erhoehen"/>
+ <cd:element name="next" value="folgende"/>
+ <cd:element name="complete" value="vollende"/>
+ <cd:element name="previous" value="vorige"/>
+ <cd:element name="previouslocal" value="voriglokal"/>
+ <cd:element name="see" value="sieh"/>
+ <cd:element name="type" value="type"/>
+ <cd:element name="makeup" value="umbruch"/>
+ <cd:element name="text" value="text"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="puffer"/>
+ <cd:variable name="linenote" value="linenote"/>
+ <cd:variable name="comment" value="kommentar"/>
+ <cd:variable name="interactionmenu" value="interaktionsmenue"/>
+ <cd:variable name="postponing" value="verschieben"/>
+ <cd:variable name="hiding" value="verbergen"/>
+ <cd:variable name="tabulate" value="tabulator"/>
+ <cd:variable name="tabulatehead" value="tabulatehead"/>
+ <cd:variable name="tabulatetail" value="tabulatetail"/>
+ <cd:variable name="fact" value="gegeben"/>
+ <cd:variable name="legend" value="legende"/>
+ <cd:variable name="formula" value="formel"/>
+ <cd:variable name="tablehead" value="tabellenueberschrift"/>
+ <cd:variable name="tabletail" value="tabellenende"/>
+ <cd:variable name="setups" value="impostazioni"/>
+ <cd:variable name="helptext" value="hilfetext"/>
+ <cd:variable name="localenvironment" value="lokaleumgebung"/>
+ <cd:variable name="sectionblockenvironment" value="sectionblockenvironment"/>
+ <cd:variable name="pagecomment" value="pagecomment"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="ErsteSeite"/>
+ <cd:variable name="PreviousPage" value="VorigeSeite"/>
+ <cd:variable name="NextPage" value="FolgendeSeite"/>
+ <cd:variable name="LastPage" value="LetzteSeite"/>
+ <cd:variable name="PreviousJump" value="VorigerSprung"/>
+ <cd:variable name="NextJump" value="NaechsterSprung"/>
+ <cd:variable name="ToggleViewer" value="WechseleViewer"/>
+ <cd:variable name="ExitViewer" value="BeendeViewer"/>
+ <cd:variable name="CloseDocument" value="SchliesseDokument"/>
+ <cd:variable name="SaveDocument" value="SpeichereDokument"/>
+ <cd:variable name="SaveNamedDocument" value="SaveNamedDocument"/>
+ <cd:variable name="OpenNamedDocument" value="OpenNamedDocument"/>
+ <cd:variable name="ViewerHelp" value="ViewerHilfe"/>
+ <cd:variable name="PrintDocument" value="DruckeDokument"/>
+ <cd:variable name="SearchDocument" value="DokumentDurchsuchen"/>
+ <cd:variable name="SearchAgain" value="WeiterSuchen"/>
+ <cd:variable name="Query" value="Query"/>
+ <cd:variable name="QueryAgain" value="QueryAgain"/>
+ <cd:variable name="GotoPage" value="GotoPage"/>
+ <cd:variable name="StartMovie" value="StartFilm"/>
+ <cd:variable name="StopMovie" value="StopFilm"/>
+ <cd:variable name="PauseMovie" value="PauseFilm"/>
+ <cd:variable name="ResumeMovie" value="FortsetzenFilm"/>
+ <cd:variable name="StartSound" value="StartSound"/>
+ <cd:variable name="StopSound" value="StopSound"/>
+ <cd:variable name="PauseSound" value="PauseSound"/>
+ <cd:variable name="ResumeSound" value="ResumeSound"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauseRendering"/>
+ <cd:variable name="ResumeRendering" value="ResumeRendering"/>
+ <cd:variable name="SaveForm" value="SpeicheFormular"/>
+ <cd:variable name="LoadForm" value="LadeFormular"/>
+ <cd:variable name="ResetForm" value="ZuruecksetzenFormular"/>
+ <cd:variable name="SubmitForm" value="VersendeFormular"/>
+ <cd:variable name="HideField" value="VerbergeFeld"/>
+ <cd:variable name="ShowField" value="ZeigeFeld"/>
+ <cd:variable name="FitWidth" value="BreitePassend"/>
+ <cd:variable name="FitHeight" value="HoehePassend"/>
+ <cd:variable name="HideLayer" value="HideLayer"/>
+ <cd:variable name="VideLayer" value="VideLayer"/>
+ <cd:variable name="ToggleLayer" value="ToggleLayer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="Neu"/>
+ <cd:variable name="Balloon" value="Ballon"/>
+ <cd:variable name="Addition" value="Zusatz"/>
+ <cd:variable name="Help" value="Hilfe"/>
+ <cd:variable name="Paragraph" value="Absatz"/>
+ <cd:variable name="Key" value="Schluessel"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="sprache"/>
+ <cd:command name="mainlanguage" value="hauptsprache"/>
+ <cd:command name="translate" value="uebersetzten"/>
+ <cd:command name="installlanguage" value="installieresprache"/>
+ <cd:command name="setuplanguage" value="stellespracheein"/>
+ <cd:command name="showmakeup" value="zeigeumbruch"/>
+ <cd:command name="useencoding" value="benutzekodierung"/>
+ <cd:command name="usespecials" value="benutzespezielles"/>
+ <cd:command name="defineoutput" value="defineoutput"/>
+ <cd:command name="setupoutput" value="stelleausgabeein"/>
+ <cd:command name="defineaccent" value="definiereakzent"/>
+ <cd:command name="definecharacter" value="definierezeichen"/>
+ <cd:command name="definecommand" value="definierebefehl"/>
+ <cd:command name="startcoding" value="startkodierung"/>
+ <cd:command name="stopcoding" value="stopkodierung"/>
+ <cd:command name="definebodyfontenvironment" value="definierefliesstextumgebung"/>
+ <cd:command name="setupbodyfontenvironment" value="stellefliesstextumgebungein"/>
+ <cd:command name="definebodyfont" value="definierefliesstext"/>
+ <cd:command name="definefont" value="definiereschrift"/>
+ <cd:command name="definefontsynonym" value="defineschriftsynonym"/>
+ <cd:command name="definestyle" value="definierestil"/>
+ <cd:command name="definefontstyle" value="definiereschriftstil"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="setuptype" value="stelletipein"/>
+ <cd:command name="type" value="tippen"/>
+ <cd:command name="typ" value="tip"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definieretippen"/>
+ <cd:command name="definetype" value="definetype"/>
+ <cd:command name="setuptyping" value="stelletippenein"/>
+ <cd:command name="typefile" value="tippedatei"/>
+ <cd:command name="setupfootnotes" value="stellefussnotenein"/>
+ <cd:command name="setupfootnotedefinition" value="stellefussnotendefinitionein"/>
+ <cd:command name="note" value="notiz"/>
+ <cd:command name="footnote" value="fussnote"/>
+ <cd:command name="footnotetext" value="footnotetext"/>
+ <cd:command name="startlocalfootnotes" value="startlokalefussnoten"/>
+ <cd:command name="stoplocalfootnotes" value="stoplokalefussnoten"/>
+ <cd:command name="placelocalfootnotes" value="platzierelokalefussnoten"/>
+ <cd:command name="placefootnotes" value="platzierefussnoten"/>
+ <cd:command name="currentdate" value="heutigesdatum"/>
+ <cd:command name="date" value="datum"/>
+ <cd:command name="weekday" value="wochentag"/>
+ <cd:command name="WEEKDAY" value="WOCHENTAG"/>
+ <cd:command name="month" value="monat"/>
+ <cd:command name="MONTH" value="MONAT"/>
+ <cd:command name="Numbers" value="Ziffern"/>
+ <cd:command name="numbers" value="ziffern"/>
+ <cd:command name="romannumerals" value="roemischezahlen"/>
+ <cd:command name="Romannumerals" value="Roemischezahlen"/>
+ <cd:command name="character" value="buchstabe"/>
+ <cd:command name="Character" value="Buchstabe"/>
+ <cd:command name="characters" value="buchstaben"/>
+ <cd:command name="Characters" value="Buchstaben"/>
+ <cd:command name="unknown" value="unbekant"/>
+ <cd:command name="definesymbol" value="definieresymbol"/>
+ <cd:command name="definefiguresymbol" value="definiereabbsymbol"/>
+ <cd:command name="symbol" value="symbol"/>
+ <cd:command name="setupsymbolset" value="stellesymbolsetein"/>
+ <cd:command name="showsymbolset" value="showsymbolset"/>
+ <cd:command name="startsymbolset" value="startsymbolset"/>
+ <cd:command name="usesymbols" value="verwendesymbole"/>
+ <cd:command name="defineconversion" value="definierekonversion"/>
+ <cd:command name="convertnumber" value="konvertierezahl"/>
+ <cd:command name="setupcapitals" value="stelleversalienein"/>
+ <cd:command name="smallcapped" value="kap"/>
+ <cd:command name="notsmallcapped" value="nokap"/>
+ <cd:command name="CAPPED" value="KAP"/>
+ <cd:command name="SmallCapped" value="Kap"/>
+ <cd:command name="SmallCaps" value="Kaps"/>
+ <cd:command name="WORD" value="WORT"/>
+ <cd:command name="WORDS" value="WOERTER"/>
+ <cd:command name="Word" value="Wort"/>
+ <cd:command name="Words" value="Woerter"/>
+ <cd:command name="stretched" value="gestreckt"/>
+ <cd:command name="overstrike" value="durchgestrichen"/>
+ <cd:command name="overstrikes" value="durchstreichen"/>
+ <cd:command name="overbar" value="ueberstrichen"/>
+ <cd:command name="overbars" value="ueberstreichen"/>
+ <cd:command name="underbar" value="unterstrichen"/>
+ <cd:command name="underbars" value="unterstreichen"/>
+ <cd:command name="setupunderbar" value="stelleunterstreichenein"/>
+ <cd:command name="setupbodyfont" value="stellefliesstextein"/>
+ <cd:command name="switchtobodyfont" value="wechselezumfliesstext"/>
+ <cd:command name="showbodyfont" value="zeigefliesstext"/>
+ <cd:command name="showbodyfontenvironment" value="zeigefliesstextumgebung"/>
+ <cd:command name="headtext" value="ueberschrifttext"/>
+ <cd:command name="labeltext" value="labeltext"/>
+ <cd:command name="LABELTEXT" value="LABELTEXT"/>
+ <cd:command name="setupheadtext" value="stelleueberschrifttextein"/>
+ <cd:command name="setuplabeltext" value="stellelabeltextein"/>
+ <cd:command name="marginrule" value="marginallinie"/>
+ <cd:command name="startmarginrule" value="startmarginallinie"/>
+ <cd:command name="stopmarginrule" value="stopmarginallinie"/>
+ <cd:command name="setupmarginrules" value="stellemarginallinieein"/>
+ <cd:command name="blackrule" value="rechteck"/>
+ <cd:command name="blackrules" value="rechtecke"/>
+ <cd:command name="setupblackrules" value="stellerechteckein"/>
+ <cd:command name="setupscreens" value="stellerasterein"/>
+ <cd:command name="framed" value="umrahmt"/>
+ <cd:command name="inframed" value="imumriss"/>
+ <cd:command name="mframed" value="maumrise"/>
+ <cd:command name="inmframed" value="immaumrise"/>
+ <cd:command name="setupframed" value="stelleumrahmtein"/>
+ <cd:command name="setuplinewidth" value="stellelinienbreiteein"/>
+ <cd:command name="setupthinrules" value="stelleduennerumrissein"/>
+ <cd:command name="thinrule" value="duennelinie"/>
+ <cd:command name="thinrules" value="duennerumriss"/>
+ <cd:command name="hairline" value="haarlinie"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="definiereumrahmt"/>
+ <cd:command name="defineframedtext" value="definiereumrahmtertext"/>
+ <cd:command name="setupframedtexts" value="stelleumrahmtetexteein"/>
+ <cd:command name="defineoverlay" value="definiereoverlay"/>
+ <cd:command name="definelayer" value="definelayer"/>
+ <cd:command name="background" value="hintergrund"/>
+ <cd:command name="startbackground" value="starthintergrund"/>
+ <cd:command name="stopbackground" value="stophintergrund"/>
+ <cd:command name="setupbackground" value="stellehintergrundein"/>
+ <cd:command name="fillinrules" value="gefuelltesrechteck"/>
+ <cd:command name="setupfillinrules" value="stellegefuelltesrechteckein"/>
+ <cd:command name="fillintext" value="ausfuelltext"/>
+ <cd:command name="setupfillinlines" value="stellegefuelltezeileein"/>
+ <cd:command name="fillinline" value="gefuelltezeile"/>
+ <cd:command name="setuptextrules" value="stelletextumrissein"/>
+ <cd:command name="textrule" value="textlinie"/>
+ <cd:command name="starttextrule" value="starttextlinie"/>
+ <cd:command name="stoptextrule" value="stoptextlinie"/>
+ <cd:command name="usemodule" value="verwendemodul"/>
+ <cd:command name="usemodules" value="verwendemodule"/>
+ <cd:command name="starttext" value="starttext"/>
+ <cd:command name="stoptext" value="stoptext"/>
+ <cd:command name="margintitle" value="marginaltitel"/>
+ <cd:command name="marginword" value="marginalwort"/>
+ <cd:command name="margintext" value="marginaltext"/>
+ <cd:command name="inleft" value="imlinken"/>
+ <cd:command name="inmargin" value="inmarginalie"/>
+ <cd:command name="inothermargin" value="inanderermarginale"/>
+ <cd:command name="inright" value="imrechten"/>
+ <cd:command name="ininner" value="ininner"/>
+ <cd:command name="inouter" value="inouter"/>
+ <cd:command name="startmarginblock" value="startmarginalblock"/>
+ <cd:command name="stopmarginblock" value="stopmarginalblock"/>
+ <cd:command name="defineinmargin" value="defineinmargin"/>
+ <cd:command name="setupinmargin" value="stelleinmarginalieein"/>
+ <cd:command name="setupmarginblocks" value="stellemarginalblockein"/>
+ <cd:command name="inleftedge" value="imlinkenrand"/>
+ <cd:command name="inleftmargin" value="inlinkermarginale"/>
+ <cd:command name="inrightmargin" value="inrechtermarginale"/>
+ <cd:command name="inrightedge" value="imrechtenrand"/>
+ <cd:command name="atleftmargin" value="atleftmargin"/>
+ <cd:command name="atrightmargin" value="atrightmargin"/>
+ <cd:command name="wordright" value="wortrechts"/>
+ <cd:command name="defineblank" value="definiereblanko"/>
+ <cd:command name="blank" value="blanko"/>
+ <cd:command name="setupblank" value="stelleblankoein"/>
+ <cd:command name="correctwhitespace" value="korrigierezwischenraum"/>
+ <cd:command name="fixedspaces" value="festesspatium"/>
+ <cd:command name="fixedspace" value="festesspatium"/>
+ <cd:command name="nospace" value="keinspatium"/>
+ <cd:command name="space" value="spatium"/>
+ <cd:command name="nowhitespace" value="keinzwischenraum"/>
+ <cd:command name="packed" value="kleinerdurchschuss"/>
+ <cd:command name="startpacked" value="startkleinerdurchschuss"/>
+ <cd:command name="stoppacked" value="stopkleinerdurchschuss"/>
+ <cd:command name="startunpacked" value="startgrosserdurchschuss"/>
+ <cd:command name="stopunpacked" value="stopgrosserdurchschuss"/>
+ <cd:command name="startlinecorrection" value="startzeilenkorrektur"/>
+ <cd:command name="stoplinecorrection" value="stopzeilenkorrektur"/>
+ <cd:command name="godown" value="nachunten"/>
+ <cd:command name="whitespace" value="zwischenraum"/>
+ <cd:command name="noindenting" value="nichteinziehen"/>
+ <cd:command name="indenting" value="einziehen"/>
+ <cd:command name="setupindenting" value="stelleeinziehenein"/>
+ <cd:command name="startalignment" value="startausrichtung"/>
+ <cd:command name="stopalignment" value="stopausrichtung"/>
+ <cd:command name="startlines" value="startzeilen"/>
+ <cd:command name="stoplines" value="stopzeilen"/>
+ <cd:command name="setupparagraphnumbering" value="stelleabsatznummerierungein"/>
+ <cd:command name="setuplinenumbering" value="stellezeilennumerierungein"/>
+ <cd:command name="startlinenumbering" value="startzeilennumerierung"/>
+ <cd:command name="stoplinenumbering" value="stopzeilennumerierung"/>
+ <cd:command name="startline" value="startzeile"/>
+ <cd:command name="stopline" value="stopzeile"/>
+ <cd:command name="someline" value="einezeile"/>
+ <cd:command name="inline" value="inzeile"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="emptylines"/>
+ <cd:command name="setuplines" value="stellezeilenein"/>
+ <cd:command name="startnarrower" value="startenger"/>
+ <cd:command name="stopnarrower" value="stopenger"/>
+ <cd:command name="setupnarrower" value="stelleengerein"/>
+ <cd:command name="definetabulate" value="definieretabulator"/>
+ <cd:command name="setuptabulate" value="stelletabulatorein"/>
+ <cd:command name="starttable" value="starttabelle"/>
+ <cd:command name="stoptable" value="stoptabelle"/>
+ <cd:command name="starttables" value="starttabellen"/>
+ <cd:command name="stoptables" value="stoptabellen"/>
+ <cd:command name="setuptables" value="stelletabellenein"/>
+ <cd:command name="definetabletemplate" value="definieretabellenvorlage"/>
+ <cd:command name="page" value="seite"/>
+ <cd:command name="testcolumn" value="testcolumn"/>
+ <cd:command name="testpage" value="testpage"/>
+ <cd:command name="couplepage" value="doppelseite"/>
+ <cd:command name="pagetype" value="seitentyp"/>
+ <cd:command name="processpage" value="bearbeiteseite"/>
+ <cd:command name="couplepaper" value="doppelseitigespapier"/>
+ <cd:command name="selectpaper" value="waehlepapieraus"/>
+ <cd:command name="screen" value="bildschirm"/>
+ <cd:command name="definesection" value="definiereabschnitt"/>
+ <cd:command name="definesectionblock" value="definiereabschnittsblock"/>
+ <cd:command name="setupsectionblock" value="stelleabschnittsblockein"/>
+ <cd:command name="setupsection" value="stelleabschnittein"/>
+ <cd:command name="notopandbottomlines" value="keinzeilenobenundunten"/>
+ <cd:command name="noheaderandfooterlines" value="keinekopfundfusszeilen"/>
+ <cd:command name="setuptop" value="stellenobenein"/>
+ <cd:command name="setuptoptexts" value="stelletextobenein"/>
+ <cd:command name="setupheader" value="stellekopfzeileein"/>
+ <cd:command name="setupheadertexts" value="stellekopfzeilentextein"/>
+ <cd:command name="setuppagenumbering" value="stelleseitennummeriernungein"/>
+ <cd:command name="getnumber" value="getnumber"/>
+ <cd:command name="incrementnumber" value="nummererhoehen"/>
+ <cd:command name="decrementnumber" value="decrementnumber"/>
+ <cd:command name="resetnumber" value="resetnumber"/>
+ <cd:command name="setnumber" value="setnumber"/>
+ <cd:command name="setupnumber" value="setupnumber"/>
+ <cd:command name="setupbottom" value="stelleuntenein"/>
+ <cd:command name="setupbottomtexts" value="stelletextuntenein"/>
+ <cd:command name="setupfooter" value="stellefusszeileein"/>
+ <cd:command name="setupfootertexts" value="stellefusszeilentextein"/>
+ <cd:command name="setuppagenumber" value="stelleseitennummerein"/>
+ <cd:command name="setupsubpagenumber" value="stelleunterseitennummerein"/>
+ <cd:command name="subpagenumber" value="subpagenumber"/>
+ <cd:command name="setuptext" value="stelletextein"/>
+ <cd:command name="setuptexttexts" value="stelletexttexteein"/>
+ <cd:command name="definetext" value="definieretext"/>
+ <cd:command name="pagenumber" value="seitenummer"/>
+ <cd:command name="completepagenumber" value="completepagenumber"/>
+ <cd:command name="placepagenumber" value="placepagenumber"/>
+ <cd:command name="items" value="posten"/>
+ <cd:command name="setupitems" value="stellepostenein"/>
+ <cd:command name="leftaligned" value="linksbuendig"/>
+ <cd:command name="midaligned" value="zentriert"/>
+ <cd:command name="rightaligned" value="rechtsbuendig"/>
+ <cd:command name="startcolumns" value="startspalten"/>
+ <cd:command name="stopcolumns" value="stopspalten"/>
+ <cd:command name="setupcolumns" value="stellespaltenein"/>
+ <cd:command name="column" value="spalte"/>
+ <cd:command name="head" value="kopf"/>
+ <cd:command name="but" value="but"/>
+ <cd:command name="item" value="pos"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="mar"/>
+ <cd:command name="sym" value="sym"/>
+ <cd:command name="its" value="its"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="headsym"/>
+ <cd:command name="defineitemgroup" value="defineitemgroup"/>
+ <cd:command name="setupitemgroup" value="setupitemgroup"/>
+ <cd:command name="setupitemgroups" value="setupitemgroups"/>
+ <cd:command name="definehead" value="definiereueberschrift"/>
+ <cd:command name="setuphead" value="stelleueberschriftein"/>
+ <cd:command name="setupheads" value="stelleueberschriftenein"/>
+ <cd:command name="setupheadnumber" value="stellekopfzahlein"/>
+ <cd:command name="headnumber" value="kopfnummer"/>
+ <cd:command name="currentheadnumber" value="heutigeskopfnummer"/>
+ <cd:command name="determineheadnumber" value="bestimmekopfnummer"/>
+ <cd:command name="resetmarking" value="ruecksetztenbeschriftung"/>
+ <cd:command name="setupmarking" value="stellebeschriftungein"/>
+ <cd:command name="definemarking" value="definierebeschriftung"/>
+ <cd:command name="nomarking" value="keinebeschriftung"/>
+ <cd:command name="marking" value="beschriftung"/>
+ <cd:command name="decouplemarking" value="entknuepfebeschriftung"/>
+ <cd:command name="couplemarking" value="verknuepfebeschriftung"/>
+ <cd:command name="getmarking" value="holebeschriftung"/>
+ <cd:command name="definelayout" value="definelayout"/>
+ <cd:command name="setuplayout" value="stellelayoutein"/>
+ <cd:command name="adaptlayout" value="passelayoutan"/>
+ <cd:command name="placeongrid" value="amgitterausrichten"/>
+ <cd:command name="moveongrid" value="amgitterneuausrichten"/>
+ <cd:command name="showsetups" value="zeigeeinstellungen"/>
+ <cd:command name="showframe" value="zeigerahmen"/>
+ <cd:command name="showgrid" value="zeigegitter"/>
+ <cd:command name="showlayout" value="zeigelayout"/>
+ <cd:command name="showprint" value="zeigedruck"/>
+ <cd:command name="showstruts" value="zeigestruts"/>
+ <cd:command name="definepapersize" value="definierepapierformat"/>
+ <cd:command name="setuppapersize" value="stellepapierformatein"/>
+ <cd:command name="setuppaper" value="setuppaper"/>
+ <cd:command name="setuparranging" value="stelleanordnenein"/>
+ <cd:command name="version" value="version"/>
+ <cd:command name="setupbackgrounds" value="stellehintergruendeein"/>
+ <cd:command name="setupalign" value="stelleausrichtungein"/>
+ <cd:command name="setupwhitespace" value="stellezwischenraumein"/>
+ <cd:command name="setupinteraction" value="stelleinteraktionein"/>
+ <cd:command name="setupinteractionmenu" value="stelleinteraktionsmenueein"/>
+ <cd:command name="defineinteractionmenu" value="definiereinteraktionsmenue"/>
+ <cd:command name="disableinteractionmenu" value="inaktiviereinteraktionsmenue"/>
+ <cd:command name="interactionmenu" value="interaktionsmenue"/>
+ <cd:command name="interactionbuttons" value="interaktionsknopfe"/>
+ <cd:command name="interactionbar" value="interaktionsbalken"/>
+ <cd:command name="setupinteractionbar" value="stelleinteraktionsbalkenein"/>
+ <cd:command name="setupinteractionscreen" value="stelleinteraktionsbildschirmein"/>
+ <cd:command name="placebookmarks" value="platzierebookmarks"/>
+ <cd:command name="bookmark" value="bookmark"/>
+ <cd:command name="definelogo" value="definierelogo"/>
+ <cd:command name="placelogos" value="platzierelogo"/>
+ <cd:command name="definecolor" value="definierefarbe"/>
+ <cd:command name="definecolorgroup" value="definierefarbengruppe"/>
+ <cd:command name="definepalet" value="definierepalette"/>
+ <cd:command name="graycolor" value="graufarbe"/>
+ <cd:command name="color" value="farbe"/>
+ <cd:command name="startcolor" value="startfarbe"/>
+ <cd:command name="stopcolor" value="stopfarbe"/>
+ <cd:command name="setupcolors" value="stellefarbenein"/>
+ <cd:command name="setupcolor" value="stellefarbeein"/>
+ <cd:command name="setuppalet" value="stellepaletteein"/>
+ <cd:command name="showcolor" value="zeigefarbe"/>
+ <cd:command name="showcolorgroup" value="zeigefarbengruppe"/>
+ <cd:command name="showpalet" value="zeigepalette"/>
+ <cd:command name="comparecolorgroup" value="vergleichefarbengruppe"/>
+ <cd:command name="comparepalet" value="vergleichepalette"/>
+ <cd:command name="colorvalue" value="farbewert"/>
+ <cd:command name="greyvalue" value="grauwert"/>
+ <cd:command name="startraster" value="startraster"/>
+ <cd:command name="stopraster" value="stopraster"/>
+ <cd:command name="defineblock" value="definiereblock"/>
+ <cd:command name="setupblock" value="stelleblockein"/>
+ <cd:command name="useblocks" value="verwendebloecke"/>
+ <cd:command name="processblocks" value="bearbeitebloecke"/>
+ <cd:command name="keepblocks" value="behaltebloecke"/>
+ <cd:command name="selectblocks" value="waehlebloeckeaus"/>
+ <cd:command name="hideblocks" value="verbergebloecke"/>
+ <cd:command name="bypassblocks" value="bypassblocks"/>
+ <cd:command name="forceblocks" value="forceblocks"/>
+ <cd:command name="nomoreblocks" value="keinebloeckemehr"/>
+ <cd:command name="definelist" value="definiereliste"/>
+ <cd:command name="definecombinedlist" value="definierezusammengestellteliste"/>
+ <cd:command name="listsymbol" value="listsymbol"/>
+ <cd:command name="placelist" value="platziereliste"/>
+ <cd:command name="plaatsruwelijst" value="placerawlist"/>
+ <cd:command name="placecombinedlist" value="platzierezusammengestellteliste"/>
+ <cd:command name="writetolist" value="schreibezurliste"/>
+ <cd:command name="writebetweenlist" value="schreibezwischenliste"/>
+ <cd:command name="immediatetolist" value="immediatetolist"/>
+ <cd:command name="immediatebetweenlist" value="immediatebetweenlist"/>
+ <cd:command name="setuplist" value="stellelisteein"/>
+ <cd:command name="setupcombinedlist" value="stellezusammengestelltelisteein"/>
+ <cd:command name="determinelistcharacteristics" value="bestimmelistencharakeristika"/>
+ <cd:command name="listlength" value="listenlaenge"/>
+ <cd:command name="listwidth" value="listenbreite"/>
+ <cd:command name="listheight" value="listenhoehe"/>
+ <cd:command name="nolist" value="keineliste"/>
+ <cd:command name="definereferencelist" value="definierereferenzliste"/>
+ <cd:command name="placereferencelist" value="platzierereferenzliste"/>
+ <cd:command name="writetoreferencelist" value="schreibezurreferenzliste"/>
+ <cd:command name="setupreferencelist" value="stellereferenzlisteein"/>
+ <cd:command name="definefloat" value="definieregleitobjekt"/>
+ <cd:command name="setupfloat" value="stellegleitobjektein"/>
+ <cd:command name="setupfloats" value="stellegleitobjekteein"/>
+ <cd:command name="splitfloat" value="teilegleitobjekt"/>
+ <cd:command name="setupfloatsplitting" value="stelleplatziegeteiltegleitobjekt"/>
+ <cd:command name="placefloat" value="placefloat"/>
+ <cd:command name="movesidefloat" value="movesidefloat"/>
+ <cd:command name="defineplacement" value="defineplacement"/>
+ <cd:command name="setupplacement" value="setupplacement"/>
+ <cd:command name="definecombination" value="definecombination"/>
+ <cd:command name="startcombination" value="startkombination"/>
+ <cd:command name="stopcombination" value="stopkombination"/>
+ <cd:command name="placesidebyside" value="platzierenebeneinander"/>
+ <cd:command name="placeontopofeachother" value="platziereuntereinander"/>
+ <cd:command name="setupcaption" value="stellebildunterschriftein"/>
+ <cd:command name="setupcaptions" value="stellebilderunterschriftein"/>
+ <cd:command name="setupcombinations" value="stellekombinationein"/>
+ <cd:command name="startoverlay" value="startoverlay"/>
+ <cd:command name="stopoverlay" value="stopoverlay"/>
+ <cd:command name="defineregister" value="definiereregister"/>
+ <cd:command name="coupleregister" value="verknuepfregister"/>
+ <cd:command name="setupregister" value="stelleregisterein"/>
+ <cd:command name="writetoregister" value="schreibezumregister"/>
+ <cd:command name="completeregister" value="completeregister"/>
+ <cd:command name="placeregister" value="platziereregister"/>
+ <cd:command name="determineregistercharacteristics" value="bestimmeregistercharakteristika"/>
+ <cd:command name="definesorting" value="definieresortieren"/>
+ <cd:command name="definesynonyms" value="definieresynonyme"/>
+ <cd:command name="setupsorting" value="stellesortierenein"/>
+ <cd:command name="setupsynonyms" value="stellesynonymein"/>
+ <cd:command name="startsynchronization" value="startsynchronisation"/>
+ <cd:command name="stopsynchronization" value="stopsynchronisation"/>
+ <cd:command name="setupsynchronizationbar" value="stellesynchronisationsbalkenein"/>
+ <cd:command name="setupsynchronization" value="stellesynchronisationein"/>
+ <cd:command name="synchronizationbar" value="synchronisationsbalken"/>
+ <cd:command name="synchronize" value="synchronisieren"/>
+ <cd:command name="useexternaldocument" value="verwendeexteresdokument"/>
+ <cd:command name="useURL" value="verwendeURL"/>
+ <cd:command name="useurl" value="verwendeurl"/>
+ <cd:command name="setupurl" value="stelleurlein"/>
+ <cd:command name="coupledocument" value="verknuepfedokument"/>
+ <cd:command name="setupprograms" value="stelleprogrammein"/>
+ <cd:command name="defineprogram" value="definiereprogramme"/>
+ <cd:command name="program" value="programm"/>
+ <cd:command name="setuppagetransitions" value="stelleseitenuebergangein"/>
+ <cd:command name="defineprofile" value="definiereprofil"/>
+ <cd:command name="defineversion" value="definiereversion"/>
+ <cd:command name="markversion" value="beschrifteversion"/>
+ <cd:command name="selectversion" value="waehleversionaus"/>
+ <cd:command name="startprofile" value="startprofil"/>
+ <cd:command name="startversion" value="startversion"/>
+ <cd:command name="setupprofiles" value="stelleprofilein"/>
+ <cd:command name="setupversions" value="stelleversionein"/>
+ <cd:command name="stopprofile" value="stopprofil"/>
+ <cd:command name="stopversion" value="stopversion"/>
+ <cd:command name="followprofile" value="folgeprofil"/>
+ <cd:command name="followprofileversion" value="folgeprofilversion"/>
+ <cd:command name="followversion" value="folgeversion"/>
+ <cd:command name="definedescription" value="definierebeschreibung"/>
+ <cd:command name="definelabel" value="definierelabel"/>
+ <cd:command name="defineenumeration" value="definierenummerierung"/>
+ <cd:command name="defineindenting" value="definiereeinzug"/>
+ <cd:command name="setupdescriptions" value="definierebeschreibungen"/>
+ <cd:command name="setupenumerations" value="stellebeschreibungein"/>
+ <cd:command name="setupindentations" value="stelleeinzuegein"/>
+ <cd:command name="setuptab" value="stelletabein"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="stelleexterneabbildungenein"/>
+ <cd:command name="showexternalfigures" value="zeigeexterneabbildungen"/>
+ <cd:command name="externalfigure" value="externeabbildung"/>
+ <cd:command name="useexternalfigure" value="verwendeexterneabbildung"/>
+ <cd:command name="startfigure" value="startabbildung"/>
+ <cd:command name="referring" value="referieren"/>
+ <cd:command name="remark" value="bemerkung"/>
+ <cd:command name="colorbar" value="farbbalken"/>
+ <cd:command name="grid" value="gitter"/>
+ <cd:command name="button" value="knopf"/>
+ <cd:command name="menubutton" value="menueknopf"/>
+ <cd:command name="setupbuttons" value="stelleknopfein"/>
+ <cd:command name="usereferences" value="verwendereferenzen"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="setupreferencelist" value="stellereferenzlisteein"/>
+ <cd:command name="setupreferencing" value="stellereferenzierenein"/>
+ <cd:command name="textreference" value="textreferenz"/>
+ <cd:command name="pagereference" value="seitenreferenz"/>
+ <cd:command name="reference" value="referenz"/>
+ <cd:command name="definereference" value="definierereferenz"/>
+ <cd:command name="definereferenceformat" value="definierereferenzformat"/>
+ <cd:command name="useJSscripts" value="verwendeJSscript"/>
+ <cd:command name="from" value="von"/>
+ <cd:command name="in" value="in"/>
+ <cd:command name="at" value="bei"/>
+ <cd:command name="about" value="ueber"/>
+ <cd:command name="goto" value="zu"/>
+ <cd:command name="atpage" value="aufseite"/>
+ <cd:command name="somewhere" value="irgendwo"/>
+ <cd:command name="navigating" value="navigating"/>
+ <cd:command name="ref" value="ref"/>
+ <cd:command name="gotobox" value="zurbox"/>
+ <cd:command name="gotopage" value="zurseite"/>
+ <cd:command name="placeformula" value="platziereformel"/>
+ <cd:command name="placesubformula" value="platziereunterformel"/>
+ <cd:command name="moveformula" value="moveformula"/>
+ <cd:command name="setupformulas" value="stelleformelnein"/>
+ <cd:command name="formulanumber" value="formelnummer"/>
+ <cd:command name="subformulanumber" value="unterformelnummer"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="geg"/>
+ <cd:command name="mathematics" value="mathematik"/>
+ <cd:command name="dimension" value="dimension"/>
+ <cd:command name="nodimension" value="keindimension"/>
+ <cd:command name="startenvironment" value="startumgebung"/>
+ <cd:command name="stopenvironment" value="stopumgebung"/>
+ <cd:command name="startcomponent" value="startkomponente"/>
+ <cd:command name="stopcomponent" value="stopkomponente"/>
+ <cd:command name="startproduct" value="startprodukt"/>
+ <cd:command name="stopproduct" value="stopprodukt"/>
+ <cd:command name="startproject" value="startprojekt"/>
+ <cd:command name="stopproject" value="stopprojekt"/>
+ <cd:command name="setups" value="einstellungen"/>
+ <cd:command name="project" value="projekt"/>
+ <cd:command name="component" value="komponente"/>
+ <cd:command name="product" value="produkt"/>
+ <cd:command name="environment" value="umgebung"/>
+ <cd:command name="nomorefiles" value="keinedateienmehr"/>
+ <cd:command name="getbuffer" value="holepuffer"/>
+ <cd:command name="setupbuffer" value="stellepufferein"/>
+ <cd:command name="typebuffer" value="tippepuffer"/>
+ <cd:command name="definebuffer" value="definierepuffer"/>
+ <cd:command name="unitmeaning" value="bedeutung"/>
+ <cd:command name="infull" value="volleswort"/>
+ <cd:command name="quotation" value="zitat"/>
+ <cd:command name="quote" value="zitieren"/>
+ <cd:command name="startquotation" value="startzitat"/>
+ <cd:command name="stopquotation" value="stopzitat"/>
+ <cd:command name="setupquote" value="stellezitierenein"/>
+ <cd:command name="define" value="definieren"/>
+ <cd:command name="redo" value="wiederholen"/>
+ <cd:command name="usecommands" value="verwendebefehl"/>
+ <cd:command name="definestartstop" value="definierestartstop"/>
+ <cd:command name="setupstartstop" value="setupstartstop"/>
+ <cd:command name="startlocal" value="startlokal"/>
+ <cd:command name="stoplocal" value="stoplokal"/>
+ <cd:command name="startglobal" value="startglobal"/>
+ <cd:command name="stopglobal" value="stopglobal"/>
+ <cd:command name="macroname" value="name"/>
+ <cd:command name="definemakeup" value="definiereumbruch"/>
+ <cd:command name="setupmakeup" value="stelleumbruchein"/>
+ <cd:command name="startmakeup" value="startumbruch"/>
+ <cd:command name="stopmakeup" value="stopumbruch"/>
+ <cd:command name="useexternalsoundtrack" value="verwendeexternestonstueck"/>
+ <cd:command name="useexternalfile" value="verwendeexternedatei"/>
+ <cd:command name="useexternalfiles" value="verwendeexternedateien"/>
+ <cd:command name="referral" value="verweis"/>
+ <cd:command name="referraldate" value="verweisdatum"/>
+ <cd:command name="high" value="hoch"/>
+ <cd:command name="lohi" value="tiho"/>
+ <cd:command name="low" value="tief"/>
+ <cd:command name="fraction" value="bruch"/>
+ <cd:command name="chem" value="chem"/>
+ <cd:command name="startopposite" value="startgegenueber"/>
+ <cd:command name="stopopposite" value="stopgegenueber"/>
+ <cd:command name="setupoppositeplacing" value="stellegegenueberplatzierenein"/>
+ <cd:command name="startpositioning" value="startpositionieren"/>
+ <cd:command name="stoppositioning" value="stoppositionieren"/>
+ <cd:command name="position" value="position"/>
+ <cd:command name="setuppositioning" value="stellepositionierenein"/>
+ <cd:command name="rotate" value="drehen"/>
+ <cd:command name="setuprotate" value="stelledrehenein"/>
+ <cd:command name="mirror" value="spiegeln"/>
+ <cd:command name="scale" value="format"/>
+ <cd:command name="setupnumbering" value="stellenummerierungein"/>
+ <cd:command name="reset" value="ruecksetzten"/>
+ <cd:command name="setuppublications" value="stellepublikationein"/>
+ <cd:command name="publication" value="publikation"/>
+ <cd:command name="definehbox" value="definierehbox"/>
+ <cd:command name="adding" value="zusatz"/>
+ <cd:command name="periods" value="punkt"/>
+ <cd:command name="setuphyphenmark" value="stellebindestrichein"/>
+ <cd:command name="setupinterlinespace" value="stellezeilenabstandein"/>
+ <cd:command name="setupspacing" value="stellespatiumein"/>
+ <cd:command name="setuptolerance" value="stelletoleranzein"/>
+ <cd:command name="setupsystem" value="stellesystemein"/>
+ <cd:command name="usepath" value="benutzeverzeichnis"/>
+ <cd:command name="defineparagraphs" value="definiereabsaetze"/>
+ <cd:command name="setupparagraphs" value="stelleabsaetzeein"/>
+ <cd:command name="donttest" value="keintest"/>
+ <cd:command name="setupcomment" value="stellekommentarein"/>
+ <cd:command name="comment" value="kommentar"/>
+ <cd:command name="definefield" value="definierefeld"/>
+ <cd:command name="definemainfield" value="definierehauptfeld"/>
+ <cd:command name="definesubfield" value="definieresubfeld"/>
+ <cd:command name="clonefield" value="klonierefeld"/>
+ <cd:command name="copyfield" value="kopierefeld"/>
+ <cd:command name="setupfield" value="stellefeldein"/>
+ <cd:command name="setupfields" value="stellefelderin"/>
+ <cd:command name="field" value="feld"/>
+ <cd:command name="fitfield" value="passendfeld"/>
+ <cd:command name="logfields" value="registrierefelder"/>
+ <cd:command name="showfields" value="zeigefelder"/>
+ <cd:command name="tooltip" value="tooltip"/>
+ <cd:command name="fillinfield" value="ausfuellfeld"/>
+ <cd:command name="definefieldstack" value="definierefeldstapel"/>
+ <cd:command name="fieldstack" value="feldstapel"/>
+ <cd:command name="setupforms" value="setupforms"/>
+ <cd:command name="setupclipping" value="stelleausschnittein"/>
+ <cd:command name="clip" value="ausschnitt"/>
+ <cd:command name="placelegend" value="platzierelegende"/>
+ <cd:command name="setuplegend" value="stellelegendeein"/>
+ <cd:command name="setuppagecomment" value="stelleseitenkommentarein"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="definerule" value="definerule"/>
+ <cd:command name="placerule" value="placerule"/>
+ <cd:command name="setuprule" value="setuprule"/>
+ <cd:command name="definetextvariable" value="definetextvariable"/>
+ <cd:command name="setuptextvariable" value="setuptextvariable"/>
+ <cd:command name="settextvariable" value="settextvariable"/>
+ <cd:command name="placetextvariable" value="placetextvariable"/>
+ <cd:command name="textvariable" value="textvariable"/>
+ <cd:command name="definetextposition" value="definetextposition"/>
+ <cd:command name="setuptextposition" value="setuptextposition"/>
+ <cd:command name="positiontext" value="positiontext"/>
+ <cd:command name="definerawfont" value="definerawfont"/>
+ <cd:command name="switchtorawfont" value="switchtorawfont"/>
+ <cd:command name="placeheadtext" value="placeheadtext"/>
+ <cd:command name="placeheadnumber" value="placeheadnumber"/>
+ <cd:command name="definepagebreak" value="definepagebreak"/>
+ <cd:command name="definecolumnbreak" value="definecolumnbreak"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="stelleaufzaehlungenein"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="hoeheoben"/>
+ <cd:command name="topdistance" value="abstandoben"/>
+ <cd:command name="headerheight" value="kopfzeilenhoehe"/>
+ <cd:command name="headerdistance" value="kopfzeilenabstand"/>
+ <cd:command name="textheight" value="texthoehe"/>
+ <cd:command name="footerdistance" value="fusszeileabstand"/>
+ <cd:command name="footerheight" value="fusszeilenhoehe"/>
+ <cd:command name="bottomdistance" value="abstandunten"/>
+ <cd:command name="bottomheight" value="hoeheunten"/>
+ <cd:command name="marginwidth" value="marginalbreite"/>
+ <cd:command name="leftmarginwidth" value="linkemarginalbreite"/>
+ <cd:command name="rightmarginwidth" value="rechtemarginalbreite"/>
+ <cd:command name="margindistance" value="marginalafstand"/>
+ <cd:command name="leftmargindistance" value="linkemarginalafstand"/>
+ <cd:command name="rightmargindistance" value="rechtemarginalafstand"/>
+ <cd:command name="edgewidth" value="randbreite"/>
+ <cd:command name="leftedgewidth" value="breitelinkerrand"/>
+ <cd:command name="rightedgewidth" value="breiterechterrand"/>
+ <cd:command name="edgedistance" value="randabstand"/>
+ <cd:command name="leftedgedistance" value="abstandlinkerrand"/>
+ <cd:command name="rightedgedistance" value="abstandrechterrand"/>
+ <cd:command name="innermarginwidth" value="innermarginwidth"/>
+ <cd:command name="outermarginwidth" value="outermarginwidth"/>
+ <cd:command name="innermargindistance" value="innermargindistance"/>
+ <cd:command name="outermargindistance" value="outermargindistance"/>
+ <cd:command name="inneredgewidth" value="inneredgewidth"/>
+ <cd:command name="outeredgewidth" value="outeredgewidth"/>
+ <cd:command name="inneredgedistance" value="inneredgedistance"/>
+ <cd:command name="outeredgedistance" value="outeredgedistance"/>
+ <cd:command name="textwidth" value="textbreite"/>
+ <cd:command name="makeupwidth" value="satzbreite"/>
+ <cd:command name="makeupheight" value="satzhoehe"/>
+ <cd:command name="topspace" value="kopfweite"/>
+ <cd:command name="bottomspace" value="bottomspace"/>
+ <cd:command name="backspace" value="rumpfweite"/>
+ <cd:command name="cutspace" value="cutspace"/>
+ <cd:command name="paperwidth" value="papierbreite"/>
+ <cd:command name="paperheight" value="papierhoehe"/>
+ <cd:command name="printpaperwidth" value="printpapierbreite"/>
+ <cd:command name="printpaperheight" value="printpapierhoehe"/>
+ <cd:command name="pageoffset" value="pageoffset"/>
+ <cd:command name="pagedepth" value="pagedepth"/>
+ <cd:command name="headlevel" value="kopfniveau"/>
+ <cd:command name="linewidth" value="liniendicke"/>
+ <cd:command name="totalnumberofpages" value="gesamtseitenanzahl"/>
+ <cd:command name="numberofsubpages" value="numberofsubpages"/>
+ <cd:command name="useXMLfilter" value="useXMLfilter"/>
+ <cd:command name="definecolumnset" value="definecolumnset"/>
+ <cd:command name="setupcolumnset" value="setupcolumnset"/>
+ <cd:command name="startcolumnset" value="startcolumnset"/>
+ <cd:command name="stopcolumnset" value="stopcolumnset"/>
+ <cd:command name="setupcolumnsetlines" value="setupcolumnsetlines"/>
+ <cd:command name="setupcolumnsetstart" value="setupcolumnsetstart"/>
+ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/>
+ <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/>
+ <cd:command name="usetypescript" value="usetypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="startdokument"/>
+ <cd:command name="stopdocument" value="stopdokument"/>
+ <cd:command name="startoverzicht" value="startueberblick"/>
+ <cd:command name="stopoverzicht" value="stopueberblick"/>
+ <cd:command name="label" value="label"/>
+ <cd:command name="labels" value="labels"/>
+ <cd:command name="domicile" value="wohnort"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-en.xml b/Master/texmf-dist/tex/context/interface/keys-en.xml
new file mode 100644
index 00000000000..d913ebe679e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-en.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="one"/>
+ <cd:variable name="two" value="two"/>
+ <cd:variable name="three" value="three"/>
+ <cd:variable name="four" value="four"/>
+ <cd:variable name="five" value="five"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="environment"/>
+ <cd:variable name="component" value="component"/>
+ <cd:variable name="product" value="product"/>
+ <cd:variable name="project" value="project"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="sunday"/>
+ <cd:variable name="monday" value="monday"/>
+ <cd:variable name="tuesday" value="tuesday"/>
+ <cd:variable name="wednesday" value="wednesday"/>
+ <cd:variable name="thursday" value="thursday"/>
+ <cd:variable name="friday" value="friday"/>
+ <cd:variable name="saturday" value="saturday"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="January"/>
+ <cd:variable name="february" value="February"/>
+ <cd:variable name="march" value="March"/>
+ <cd:variable name="april" value="April"/>
+ <cd:variable name="may" value="May"/>
+ <cd:variable name="june" value="June"/>
+ <cd:variable name="july" value="July"/>
+ <cd:variable name="august" value="August"/>
+ <cd:variable name="september" value="September"/>
+ <cd:variable name="october" value="October"/>
+ <cd:variable name="november" value="November"/>
+ <cd:variable name="december" value="December"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="atpage"/>
+ <cd:variable name="hencefore" value="hencefore"/>
+ <cd:variable name="hereafter" value="hereafter"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="section"/>
+ <cd:variable name="part" value="part"/>
+ <cd:variable name="chapter" value="chapter"/>
+ <cd:variable name="subject" value="subject"/>
+ <cd:variable name="section" value="section"/>
+ <cd:variable name="title" value="title"/>
+ <cd:variable name="margintitle" value="margintitle"/>
+ <cd:variable name="content" value="content"/>
+ <cd:variable name="contents" value="contents"/>
+ <cd:variable name="appendix" value="appendix"/>
+ <cd:variable name="appendices" value="appendices"/>
+ <cd:variable name="bodypart" value="bodypart"/>
+ <cd:variable name="bodymatter" value="bodymatter"/>
+ <cd:variable name="frontpart" value="frontpart"/>
+ <cd:variable name="frontmatter" value="frontmatter"/>
+ <cd:variable name="backpart" value="backpart"/>
+ <cd:variable name="backmatter" value="backmatter"/>
+ <cd:variable name="footnote" value="footnote"/>
+ <cd:variable name="endnote" value="endnote"/>
+ <cd:variable name="system" value="system"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="subsection"/>
+ <cd:variable name="subsubsection" value="subsubsection"/>
+ <cd:variable name="subsubsubsection" value="subsubsubsection"/>
+ <cd:variable name="subsubsubsubsection" value="subsubsubsubsection"/>
+ <cd:variable name="subsubsubsubsubsection" value="subsubsubsubsubsection"/>
+ <cd:variable name="subsubject" value="subsubject"/>
+ <cd:variable name="subsubsubject" value="subsubsubject"/>
+ <cd:variable name="subsubsubsubject" value="subsubsubsubject"/>
+ <cd:variable name="subsubsubsubsubject" value="subsubsubsubsubject"/>
+ <cd:variable name="subsubsubsubsubsubject" value="subsubsubsubsubsubject"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="flushleft"/>
+ <cd:variable name="flushright" value="flushright"/>
+ <cd:variable name="center" value="center"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="typing"/>
+ <cd:variable name="file" value="file"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="formulae" value="formulae"/>
+ <cd:variable name="figure" value="figure"/>
+ <cd:variable name="figures" value="figures"/>
+ <cd:variable name="table" value="table"/>
+ <cd:variable name="tables" value="tables"/>
+ <cd:variable name="graphic" value="graphic"/>
+ <cd:variable name="graphics" value="graphics"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzi"/>
+ <cd:variable name="index" value="index"/>
+ <cd:variable name="indices" value="indices"/>
+ <cd:variable name="abbreviation" value="abbreviation"/>
+ <cd:variable name="abbreviations" value="abbreviations"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="logos"/>
+ <cd:variable name="unit" value="unit"/>
+ <cd:variable name="units" value="units"/>
+ <cd:variable name="line" value="line"/>
+ <cd:variable name="lines" value="lines"/>
+ <cd:variable name="framedtext" value="framedtext"/>
+ <cd:variable name="quotation" value="quotation"/>
+ <cd:variable name="quote" value="quote"/>
+ <cd:variable name="speech" value="speech"/>
+ <cd:variable name="itemize" value="itemize"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="leftquotation"/>
+ <cd:constant name="rightquotation" value="rightquotation"/>
+ <cd:constant name="leftquote" value="leftquote"/>
+ <cd:constant name="rightquote" value="rightquote"/>
+ <cd:constant name="compoundhyphen" value="compoundhyphen"/>
+ <cd:constant name="leftcompoundhyphen" value="leftcompoundhyphen"/>
+ <cd:constant name="rightcompoundhyphen" value="rightcompoundhyphen"/>
+ <cd:constant name="midsentence" value="midsentence"/>
+ <cd:constant name="leftsentence" value="leftsentence"/>
+ <cd:constant name="rightsentence" value="rightsentence"/>
+ <cd:constant name="leftsubsentence" value="leftsubsentence"/>
+ <cd:constant name="rightsubsentence" value="rightsubsentence"/>
+ <cd:constant name="leftspeech" value="leftspeech"/>
+ <cd:constant name="middlespeech" value="middlespeech"/>
+ <cd:constant name="rightspeech" value="rightspeech"/>
+ <cd:constant name="limittext" value="limittext"/>
+ <cd:constant name="date" value="date"/>
+ <cd:constant name="spacebefore" value="spacebefore"/>
+ <cd:constant name="spaceinbetween" value="spaceinbetween"/>
+ <cd:constant name="spaceafter" value="spaceafter"/>
+ <cd:constant name="sidespacebefore" value="sidespacebefore"/>
+ <cd:constant name="sidespaceafter" value="sidespaceafter"/>
+ <cd:constant name="to" value="to"/>
+ <cd:constant name="indicator" value="indicator"/>
+ <cd:constant name="background" value="background"/>
+ <cd:constant name="backgrounddepth" value="backgrounddepth"/>
+ <cd:constant name="backgroundcorner" value="backgroundcorner"/>
+ <cd:constant name="splitcolor" value="splitcolor"/>
+ <cd:constant name="backgroundcolor" value="backgroundcolor"/>
+ <cd:constant name="foregroundcolor" value="foregroundcolor"/>
+ <cd:constant name="foregroundstyle" value="foregroundstyle"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="backgroundoffset"/>
+ <cd:constant name="backgroundscreen" value="backgroundscreen"/>
+ <cd:constant name="backgroundradius" value="backgroundradius"/>
+ <cd:constant name="address" value="address"/>
+ <cd:constant name="stopper" value="stopper"/>
+ <cd:constant name="distance" value="distance"/>
+ <cd:constant name="paragraph" value="paragraph"/>
+ <cd:constant name="axis" value="axis"/>
+ <cd:constant name="author" value="author"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="balance"/>
+ <cd:constant name="wfactor" value="wfactor"/>
+ <cd:constant name="inner" value="inner"/>
+ <cd:constant name="blank" value="blank"/>
+ <cd:constant name="obstruction" value="obstruction"/>
+ <cd:constant name="blockway" value="blockway"/>
+ <cd:constant name="bottomspace" value="bottomspace"/>
+ <cd:constant name="top" value="top"/>
+ <cd:constant name="topdistance" value="topdistance"/>
+ <cd:constant name="topframe" value="topframe"/>
+ <cd:constant name="topoffset" value="topoffset"/>
+ <cd:constant name="topstate" value="topstate"/>
+ <cd:constant name="width" value="width"/>
+ <cd:constant name="maxwidth" value="maxwidth"/>
+ <cd:constant name="minwidth" value="minwidth"/>
+ <cd:constant name="source" value="source"/>
+ <cd:constant name="command" value="command"/>
+ <cd:constant name="commands" value="commands"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="contrastcolor"/>
+ <cd:constant name="conversion" value="conversion"/>
+ <cd:constant name="headconversion" value="headconversion"/>
+ <cd:constant name="headlabel" value="headlabel"/>
+ <cd:constant name="criterium" value="criterium"/>
+ <cd:constant name="date" value="date"/>
+ <cd:constant name="default" value="default"/>
+ <cd:constant name="depth" value="depth"/>
+ <cd:constant name="depthcorrection" value="depthcorrection"/>
+ <cd:constant name="continue" value="continue"/>
+ <cd:constant name="doublesided" value="doublesided"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="unit"/>
+ <cd:constant name="ownnumber" value="ownnumber"/>
+ <cd:constant name="evenmargin" value="evenmargin"/>
+ <cd:constant name="expansion" value="expansion"/>
+ <cd:constant name="keyexpansion" value="keyexpansion"/>
+ <cd:constant name="factor" value="factor"/>
+ <cd:constant name="convertfile" value="convertfile"/>
+ <cd:constant name="file" value="file"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="size"/>
+ <cd:constant name="autofocus" value="autofocus"/>
+ <cd:constant name="focus" value="focus"/>
+ <cd:constant name="directory" value="directory"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="grid"/>
+ <cd:constant name="big" value="big"/>
+ <cd:constant name="get" value="get"/>
+ <cd:constant name="hang" value="hang"/>
+ <cd:constant name="repeat" value="repeat"/>
+ <cd:constant name="hfactor" value="hfactor"/>
+ <cd:constant name="corner" value="corner"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="frames"/>
+ <cd:constant name="header" value="header"/>
+ <cd:constant name="headerdistance" value="headerdistance"/>
+ <cd:constant name="headerstate" value="headerstate"/>
+ <cd:constant name="height" value="height"/>
+ <cd:constant name="maxheight" value="maxheight"/>
+ <cd:constant name="minheight" value="minheight"/>
+ <cd:constant name="mindepth" value="mindepth"/>
+ <cd:constant name="current" value="current"/>
+ <cd:constant name="in" value="in"/>
+ <cd:constant name="indenting" value="indenting"/>
+ <cd:constant name="interaction" value="interaction"/>
+ <cd:constant name="interlinespace" value="interlinespace"/>
+ <cd:constant name="items" value="items"/>
+ <cd:constant name="frame" value="frame"/>
+ <cd:constant name="framedepth" value="framedepth"/>
+ <cd:constant name="framecorner" value="framecorner"/>
+ <cd:constant name="framecolor" value="framecolor"/>
+ <cd:constant name="frameoffset" value="frameoffset"/>
+ <cd:constant name="frameradius" value="frameradius"/>
+ <cd:constant name="marginedge" value="marginedge"/>
+ <cd:constant name="marginedgetext" value="marginedgetext"/>
+ <cd:constant name="aligncharacter" value="aligncharacter"/>
+ <cd:constant name="alignmentcharacter" value="alignmentcharacter"/>
+ <cd:constant name="small" value="small"/>
+ <cd:constant name="color" value="color"/>
+ <cd:constant name="column" value="column"/>
+ <cd:constant name="columns" value="columns"/>
+ <cd:constant name="columndistance" value="columndistance"/>
+ <cd:constant name="headcommand" value="headcommand"/>
+ <cd:constant name="headcolor" value="headcolor"/>
+ <cd:constant name="headstyle" value="headstyle"/>
+ <cd:constant name="afterhead" value="afterhead"/>
+ <cd:constant name="veroffset" value="veroffset"/>
+ <cd:constant name="coupling" value="coupling"/>
+ <cd:constant name="couplingway" value="couplingway"/>
+ <cd:constant name="beforehead" value="beforehead"/>
+ <cd:constant name="topspace" value="topspace"/>
+ <cd:constant name="bodyfont" value="bodyfont"/>
+ <cd:constant name="label" value="label"/>
+ <cd:constant name="empty" value="empty"/>
+ <cd:constant name="style" value="style"/>
+ <cd:constant name="rule" value="rule"/>
+ <cd:constant name="rulethickness" value="rulethickness"/>
+ <cd:constant name="rulecolor" value="rulecolor"/>
+ <cd:constant name="list" value="list"/>
+ <cd:constant name="leftwidth" value="leftwidth"/>
+ <cd:constant name="leftframe" value="leftframe"/>
+ <cd:constant name="leftcolor" value="leftcolor"/>
+ <cd:constant name="leftstyle" value="leftstyle"/>
+ <cd:constant name="leftmargin" value="leftmargin"/>
+ <cd:constant name="leftmargindistance" value="leftmargindistance"/>
+ <cd:constant name="leftoffset" value="leftoffset"/>
+ <cd:constant name="leftedge" value="leftedge"/>
+ <cd:constant name="leftedgedistance" value="leftedgedistance"/>
+ <cd:constant name="lefttext" value="lefttext"/>
+ <cd:constant name="left" value="left"/>
+ <cd:constant name="nleft" value="nleft"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="logos"/>
+ <cd:constant name="local" value="local"/>
+ <cd:constant name="margin" value="margin"/>
+ <cd:constant name="margindistance" value="margindistance"/>
+ <cd:constant name="margintext" value="margintext"/>
+ <cd:constant name="marking" value="marking"/>
+ <cd:constant name="marcolor" value="marcolor"/>
+ <cd:constant name="marstyle" value="marstyle"/>
+ <cd:constant name="menu" value="menu"/>
+ <cd:constant name="splitmethod" value="splitmethod"/>
+ <cd:constant name="textmethod" value="textmethod"/>
+ <cd:constant name="sidemethod" value="sidemethod"/>
+ <cd:constant name="method" value="method"/>
+ <cd:constant name="middle" value="middle"/>
+ <cd:constant name="middletext" value="middletext"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="sample"/>
+ <cd:constant name="after" value="after"/>
+ <cd:constant name="name" value="name"/>
+ <cd:constant name="commandafter" value="commandafter"/>
+ <cd:constant name="ntop" value="ntop"/>
+ <cd:constant name="level" value="level"/>
+ <cd:constant name="levels" value="levels"/>
+ <cd:constant name="nbottom" value="nbottom"/>
+ <cd:constant name="norm" value="norm"/>
+ <cd:constant name="nlines" value="nlines"/>
+ <cd:constant name="number" value="number"/>
+ <cd:constant name="numbercommand" value="numbercommand"/>
+ <cd:constant name="numbering" value="numbering"/>
+ <cd:constant name="numbercolor" value="numbercolor"/>
+ <cd:constant name="numberstyle" value="numberstyle"/>
+ <cd:constant name="numberseparator" value="numberseparator"/>
+ <cd:constant name="object" value="object"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="bottom"/>
+ <cd:constant name="bottomdistance" value="bottomdistance"/>
+ <cd:constant name="bottomframe" value="bottomframe"/>
+ <cd:constant name="bottomoffset" value="bottomoffset"/>
+ <cd:constant name="bottomstate" value="bottomstate"/>
+ <cd:constant name="oddmargin" value="oddmargin"/>
+ <cd:constant name="at" value="at"/>
+ <cd:constant name="option" value="option"/>
+ <cd:constant name="page" value="page"/>
+ <cd:constant name="pagecommand" value="pagecommand"/>
+ <cd:constant name="pagecolor" value="pagecolor"/>
+ <cd:constant name="pagestyle" value="pagestyle"/>
+ <cd:constant name="pagenumber" value="pagenumber"/>
+ <cd:constant name="headnumber" value="headnumber"/>
+ <cd:constant name="pageboundaries" value="pageboundaries"/>
+ <cd:constant name="pagestate" value="pagestate"/>
+ <cd:constant name="palet" value="palet"/>
+ <cd:constant name="paper" value="paper"/>
+ <cd:constant name="location" value="location"/>
+ <cd:constant name="placestopper" value="placestopper"/>
+ <cd:constant name="place" value="place"/>
+ <cd:constant name="placehead" value="placehead"/>
+ <cd:constant name="position" value="position"/>
+ <cd:constant name="prefix" value="prefix"/>
+ <cd:constant name="preset" value="preset"/>
+ <cd:constant name="preview" value="preview"/>
+ <cd:constant name="process" value="process"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="dot"/>
+ <cd:constant name="arrow" value="arrow"/>
+ <cd:constant name="edge" value="edge"/>
+ <cd:constant name="edgedistance" value="edgedistance"/>
+ <cd:constant name="screen" value="screen"/>
+ <cd:constant name="rightwidth" value="rightwidth"/>
+ <cd:constant name="rightframe" value="rightframe"/>
+ <cd:constant name="rightcolor" value="rightcolor"/>
+ <cd:constant name="rightstyle" value="rightstyle"/>
+ <cd:constant name="rightmargin" value="rightmargin"/>
+ <cd:constant name="rightmargindistance" value="rightmargindistance"/>
+ <cd:constant name="rightoffset" value="rightoffset"/>
+ <cd:constant name="rightedge" value="rightedge"/>
+ <cd:constant name="rightedgedistance" value="rightedgedistance"/>
+ <cd:constant name="righttext" value="righttext"/>
+ <cd:constant name="right" value="right"/>
+ <cd:constant name="nright" value="nright"/>
+ <cd:constant name="reduction" value="reduction"/>
+ <cd:constant name="referencing" value="referencing"/>
+ <cd:constant name="line" value="line"/>
+ <cd:constant name="linecorrection" value="linecorrection"/>
+ <cd:constant name="lines" value="lines"/>
+ <cd:constant name="stretch" value="stretch"/>
+ <cd:constant name="resolution" value="resolution"/>
+ <cd:constant name="rotation" value="rotation"/>
+ <cd:constant name="orientation" value="orientation"/>
+ <cd:constant name="horoffset" value="horoffset"/>
+ <cd:constant name="backspace" value="backspace"/>
+ <cd:constant name="direction" value="direction"/>
+ <cd:constant name="scale" value="scale"/>
+ <cd:constant name="separator" value="separator"/>
+ <cd:constant name="display" value="display"/>
+ <cd:constant name="scope" value="scope"/>
+ <cd:constant name="section" value="section"/>
+ <cd:constant name="sectionnumber" value="sectionnumber"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="cutspace"/>
+ <cd:constant name="family" value="family"/>
+ <cd:constant name="space" value="space"/>
+ <cd:constant name="spacing" value="spacing"/>
+ <cd:constant name="split" value="split"/>
+ <cd:constant name="splitoffset" value="splitoffset"/>
+ <cd:constant name="indentnext" value="indentnext"/>
+ <cd:constant name="step" value="step"/>
+ <cd:constant name="stack" value="stack"/>
+ <cd:constant name="start" value="start"/>
+ <cd:constant name="state" value="state"/>
+ <cd:constant name="stop" value="stop"/>
+ <cd:constant name="radius" value="radius"/>
+ <cd:constant name="dash" value="dash"/>
+ <cd:constant name="sub" value="sub"/>
+ <cd:constant name="subtitle" value="subtitle"/>
+ <cd:constant name="symbol" value="symbol"/>
+ <cd:constant name="symbolset" value="symbolset"/>
+ <cd:constant name="symcolor" value="symcolor"/>
+ <cd:constant name="symstyle" value="symstyle"/>
+ <cd:constant name="synonym" value="synonym"/>
+ <cd:constant name="synonymcolor" value="synonymcolor"/>
+ <cd:constant name="synonymstyle" value="synonymstyle"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="sign"/>
+ <cd:constant name="text" value="text"/>
+ <cd:constant name="listtext" value="listtext"/>
+ <cd:constant name="textwidth" value="textwidth"/>
+ <cd:constant name="textcommand" value="textcommand"/>
+ <cd:constant name="textsize" value="textsize"/>
+ <cd:constant name="textcolor" value="textcolor"/>
+ <cd:constant name="textstyle" value="textstyle"/>
+ <cd:constant name="textseparator" value="textseparator"/>
+ <cd:constant name="textstate" value="textstate"/>
+ <cd:constant name="title" value="title"/>
+ <cd:constant name="titlestyle" value="titlestyle"/>
+ <cd:constant name="titlecolor" value="titlecolor"/>
+ <cd:constant name="titledistance" value="titledistance"/>
+ <cd:constant name="aligntitle" value="aligntitle"/>
+ <cd:constant name="tolerance" value="tolerance"/>
+ <cd:constant name="inbetween" value="inbetween"/>
+ <cd:constant name="type" value="type"/>
+ <cd:constant name="align" value="align"/>
+ <cd:constant name="urlspace" value="urlspace"/>
+ <cd:constant name="urlalternative" value="urlalternative"/>
+ <cd:constant name="from" value="from"/>
+ <cd:constant name="alternative" value="alternative"/>
+ <cd:constant name="increment" value="increment"/>
+ <cd:constant name="incrementnumber" value="incrementnumber"/>
+ <cd:constant name="resetnumber" value="resetnumber"/>
+ <cd:constant name="reference" value="reference"/>
+ <cd:constant name="unknownreference" value="unknownreference"/>
+ <cd:constant name="footer" value="footer"/>
+ <cd:constant name="footerdistance" value="footerdistance"/>
+ <cd:constant name="footerstate" value="footerstate"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="next"/>
+ <cd:constant name="before" value="before"/>
+ <cd:constant name="commandbefore" value="commandbefore"/>
+ <cd:constant name="previous" value="previous"/>
+ <cd:constant name="previousnumber" value="previousnumber"/>
+ <cd:constant name="delay" value="delay"/>
+ <cd:constant name="way" value="way"/>
+ <cd:constant name="random" value="random"/>
+ <cd:constant name="white" value="white"/>
+ <cd:constant name="xfactor" value="xfactor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xscale"/>
+ <cd:constant name="xstep" value="xstep"/>
+ <cd:constant name="yfactor" value="yfactor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="yscale"/>
+ <cd:constant name="ystep" value="ystep"/>
+ <cd:constant name="samepage" value="samepage"/>
+ <cd:constant name="sidealign" value="sidealign"/>
+ <cd:constant name="side" value="side"/>
+ <cd:constant name="fieldlayer" value="fieldlayer"/>
+ <cd:constant name="textlayer" value="textlayer"/>
+ <cd:constant name="fieldbackgroundcolor" value="fieldbackgroundcolor"/>
+ <cd:constant name="fieldframecolor" value="fieldframecolor"/>
+ <cd:constant name="fieldoffset" value="fieldoffset"/>
+ <cd:constant name="openaction" value="openaction"/>
+ <cd:constant name="closeaction" value="closeaction"/>
+ <cd:constant name="openpageaction" value="openpageaction"/>
+ <cd:constant name="closepageaction" value="closepageaction"/>
+ <cd:constant name="clickin" value="clickin"/>
+ <cd:constant name="clickout" value="clickout"/>
+ <cd:constant name="regionin" value="regionin"/>
+ <cd:constant name="regionout" value="regionout"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusout"/>
+ <cd:constant name="afterkey" value="afterkey"/>
+ <cd:constant name="format" value="format"/>
+ <cd:constant name="validate" value="validate"/>
+ <cd:constant name="calculate" value="calculate"/>
+ <cd:constant name="click" value="click"/>
+ <cd:constant name="vcommand" value="vcommand"/>
+ <cd:constant name="icommand" value="icommand"/>
+ <cd:constant name="ccommand" value="ccommand"/>
+ <cd:constant name="textdistance" value="textdistance"/>
+ <cd:constant name="textmargin" value="textmargin"/>
+ <cd:constant name="keyword" value="keyword"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="on"/>
+ <cd:variable name="serried" value="serried"/>
+ <cd:variable name="joinedup" value="joinedup"/>
+ <cd:variable name="absolute" value="absolute"/>
+ <cd:variable name="background" value="background"/>
+ <cd:variable name="backward" value="backward"/>
+ <cd:variable name="subbackward" value="subbackward"/>
+ <cd:variable name="action" value="action"/>
+ <cd:variable name="stopper" value="stopper"/>
+ <cd:variable name="paragraph" value="paragraph"/>
+ <cd:variable name="all" value="all"/>
+ <cd:variable name="always" value="always"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autointro"/>
+ <cd:variable name="both" value="both"/>
+ <cd:variable name="inner" value="inner"/>
+ <cd:variable name="blank" value="blank"/>
+ <cd:variable name="disable" value="disable"/>
+ <cd:variable name="top" value="top"/>
+ <cd:variable name="wide" value="wide"/>
+ <cd:variable name="width" value="width"/>
+ <cd:variable name="outer" value="outer"/>
+ <cd:variable name="numbers" value="numbers"/>
+ <cd:variable name="Numbers" value="Numbers"/>
+ <cd:variable name="command" value="command"/>
+ <cd:variable name="commands" value="commands"/>
+ <cd:variable name="concept" value="concept"/>
+ <cd:variable name="day" value="day"/>
+ <cd:variable name="date" value="date"/>
+ <cd:variable name="default" value="default"/>
+ <cd:variable name="final" value="final"/>
+ <cd:variable name="depth" value="depth"/>
+ <cd:variable name="doublesided" value="doublesided"/>
+ <cd:variable name="first" value="first"/>
+ <cd:variable name="each" value="each"/>
+ <cd:variable name="singlesided" value="singlesided"/>
+ <cd:variable name="somewhere" value="somewhere"/>
+ <cd:variable name="nowhere" value="nowhere"/>
+ <cd:variable name="even" value="even"/>
+ <cd:variable name="external" value="external"/>
+ <cd:variable name="file" value="file"/>
+ <cd:variable name="flexible" value="flexible"/>
+ <cd:variable name="force" value="force"/>
+ <cd:variable name="used" value="used"/>
+ <cd:variable name="none" value="none"/>
+ <cd:variable name="nomarking" value="nomarking"/>
+ <cd:variable name="nonumber" value="nonumber"/>
+ <cd:variable name="nowhite" value="nowhite"/>
+ <cd:variable name="rotated" value="rotated"/>
+ <cd:variable name="mirrored" value="mirrored"/>
+ <cd:variable name="global" value="global"/>
+ <cd:variable name="grid" value="grid"/>
+ <cd:variable name="big" value="big"/>
+ <cd:variable name="bigbodyfont" value="bigbodyfont"/>
+ <cd:variable name="bigpreference" value="bigpreference"/>
+ <cd:variable name="gray" value="gray"/>
+ <cd:variable name="halfline" value="halfline"/>
+ <cd:variable name="keep" value="keep"/>
+ <cd:variable name="hanging" value="hanging"/>
+ <cd:variable name="spacing" value="spacing"/>
+ <cd:variable name="nospacing" value="nospacing"/>
+ <cd:variable name="repeat" value="repeat"/>
+ <cd:variable name="fix" value="fix"/>
+ <cd:variable name="here" value="here"/>
+ <cd:variable name="header" value="header"/>
+ <cd:variable name="high" value="high"/>
+ <cd:variable name="height" value="height"/>
+ <cd:variable name="horizontal" value="horizontal"/>
+ <cd:variable name="current" value="current"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="nohz"/>
+ <cd:variable name="italic" value="italic"/>
+ <cd:variable name="inherit" value="inherit"/>
+ <cd:variable name="inleft" value="inleft"/>
+ <cd:variable name="inmargin" value="inmargin"/>
+ <cd:variable name="inright" value="inright"/>
+ <cd:variable name="interaction" value="interaction"/>
+ <cd:variable name="intext" value="intext"/>
+ <cd:variable name="intro" value="intro"/>
+ <cd:variable name="its" value="its"/>
+ <cd:variable name="yes" value="yes"/>
+ <cd:variable name="year" value="year"/>
+ <cd:variable name="frame" value="frame"/>
+ <cd:variable name="marginedge" value="marginedge"/>
+ <cd:variable name="cap" value="cap"/>
+ <cd:variable name="capital" value="capital"/>
+ <cd:variable name="referral" value="referral"/>
+ <cd:variable name="small" value="small"/>
+ <cd:variable name="smallnormal" value="smallnormal"/>
+ <cd:variable name="smallslanted" value="smallslanted"/>
+ <cd:variable name="smallslantedbold" value="smallslantedbold"/>
+ <cd:variable name="smallitalic" value="smallitalic"/>
+ <cd:variable name="smallitalicbold" value="smallitalicbold"/>
+ <cd:variable name="smalltype" value="smalltype"/>
+ <cd:variable name="smallbold" value="smallbold"/>
+ <cd:variable name="smallboldslanted" value="smallboldslanted"/>
+ <cd:variable name="smallbolditalic" value="smallbolditalic"/>
+ <cd:variable name="smallbodyfont" value="smallbodyfont"/>
+ <cd:variable name="toggle" value="wissel"/>
+ <cd:variable name="color" value="color"/>
+ <cd:variable name="column" value="column"/>
+ <cd:variable name="columns" value="columns"/>
+ <cd:variable name="head" value="head"/>
+ <cd:variable name="low" value="low"/>
+ <cd:variable name="last" value="last"/>
+ <cd:variable name="label" value="label"/>
+ <cd:variable name="lohi" value="lohi"/>
+ <cd:variable name="tall" value="tall"/>
+ <cd:variable name="empty" value="empty"/>
+ <cd:variable name="Character" value="Character"/>
+ <cd:variable name="character" value="character"/>
+ <cd:variable name="Characters" value="Characters"/>
+ <cd:variable name="characters" value="characters"/>
+ <cd:variable name="landscape" value="landscape"/>
+ <cd:variable name="rule" value="rule"/>
+ <cd:variable name="list" value="list"/>
+ <cd:variable name="leftmargin" value="leftmargin"/>
+ <cd:variable name="leftpage" value="leftpage"/>
+ <cd:variable name="leftedge" value="leftedge"/>
+ <cd:variable name="left" value="left"/>
+ <cd:variable name="local" value="local"/>
+ <cd:variable name="new" value="new"/>
+ <cd:variable name="MONTH" value="MONTH"/>
+ <cd:variable name="month" value="month"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="margin"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="mediaeval"/>
+ <cd:variable name="medium" value="medium"/>
+ <cd:variable name="middle" value="middle"/>
+ <cd:variable name="after" value="after"/>
+ <cd:variable name="name" value="name"/>
+ <cd:variable name="opposite" value="opposite"/>
+ <cd:variable name="no" value="no"/>
+ <cd:variable name="negative" value="negative"/>
+ <cd:variable name="positive" value="positive"/>
+ <cd:variable name="not" value="not"/>
+ <cd:variable name="never" value="never"/>
+ <cd:variable name="normal" value="normal"/>
+ <cd:variable name="number" value="number"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="unknown"/>
+ <cd:variable name="bottom" value="bottom"/>
+ <cd:variable name="odd" value="odd"/>
+ <cd:variable name="packed" value="packed"/>
+ <cd:variable name="unpacked" value="unpacked"/>
+ <cd:variable name="makeup" value="makeup"/>
+ <cd:variable name="atmargin" value="atmargin"/>
+ <cd:variable name="overlay" value="overlay"/>
+ <cd:variable name="page" value="page"/>
+ <cd:variable name="pagenumber" value="pagenumber"/>
+ <cd:variable name="paper" value="paper"/>
+ <cd:variable name="display" value="display"/>
+ <cd:variable name="reverse" value="reverse"/>
+ <cd:variable name="fit" value="fit"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="preview"/>
+ <cd:variable name="program" value="program"/>
+ <cd:variable name="process" value="process"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="dot"/>
+ <cd:variable name="ran" value="ran"/>
+ <cd:variable name="edge" value="edge"/>
+ <cd:variable name="screen" value="screen"/>
+ <cd:variable name="rectangular" value="rectangular"/>
+ <cd:variable name="rightmargin" value="rightmargin"/>
+ <cd:variable name="rightpage" value="rightpage"/>
+ <cd:variable name="rightedge" value="rightedge"/>
+ <cd:variable name="right" value="right"/>
+ <cd:variable name="line" value="line"/>
+ <cd:variable name="register" value="register"/>
+ <cd:variable name="relative" value="relative"/>
+ <cd:variable name="reset" value="reset"/>
+ <cd:variable name="Romannumerals" value="Romannumerals"/>
+ <cd:variable name="romannumerals" value="romannumerals"/>
+ <cd:variable name="greek" value="greek"/>
+ <cd:variable name="Greek" value="Greek"/>
+ <cd:variable name="round" value="round"/>
+ <cd:variable name="rotate" value="rotate"/>
+ <cd:variable name="stretch" value="stretch"/>
+ <cd:variable name="backspace" value="backspace"/>
+ <cd:variable name="broad" value="broad"/>
+ <cd:variable name="row" value="row"/>
+ <cd:variable name="slanted" value="slanted"/>
+ <cd:variable name="slantedbold" value="slantedbold"/>
+ <cd:variable name="synchronize" value="synchronize"/>
+ <cd:variable name="italicbold" value="italicbold"/>
+ <cd:variable name="sectionnumber" value="sectionnumber"/>
+ <cd:variable name="narrow" value="narrow"/>
+ <cd:variable name="cutspace" value="cutspace"/>
+ <cd:variable name="tolerant" value="tolerant"/>
+ <cd:variable name="space" value="space"/>
+ <cd:variable name="standard" value="standard"/>
+ <cd:variable name="start" value="start"/>
+ <cd:variable name="stop" value="stop"/>
+ <cd:variable name="strict" value="strict"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="sub"/>
+ <cd:variable name="sym" value="sym"/>
+ <cd:variable name="symbol" value="symbol"/>
+ <cd:variable name="text" value="text"/>
+ <cd:variable name="back" value="back"/>
+ <cd:variable name="test" value="test"/>
+ <cd:variable name="inbetween" value="inbetween"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="off" value="off"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="fixed"/>
+ <cd:variable name="loose" value="loose"/>
+ <cd:variable name="continue" value="continue"/>
+ <cd:variable name="vertical" value="vertical"/>
+ <cd:variable name="bold" value="bold"/>
+ <cd:variable name="boldslanted" value="boldslanted"/>
+ <cd:variable name="bolditalic" value="bolditalic"/>
+ <cd:variable name="quadruple" value="quadruple"/>
+ <cd:variable name="footer" value="footer"/>
+ <cd:variable name="next" value="next"/>
+ <cd:variable name="before" value="before"/>
+ <cd:variable name="foreground" value="foreground"/>
+ <cd:variable name="preference" value="preference"/>
+ <cd:variable name="temporary" value="temporary"/>
+ <cd:variable name="forward" value="forward"/>
+ <cd:variable name="subforward" value="subforward"/>
+ <cd:variable name="previous" value="previous"/>
+ <cd:variable name="value" value="value"/>
+ <cd:variable name="week" value="week"/>
+ <cd:variable name="weekday" value="weekday"/>
+ <cd:variable name="WEEKDAY" value="WEEKDAY"/>
+ <cd:variable name="random" value="random"/>
+ <cd:variable name="white" value="white"/>
+ <cd:variable name="very" value="very"/>
+ <cd:variable name="verytolerant" value="verytolerant"/>
+ <cd:variable name="verystrict" value="verystrict"/>
+ <cd:variable name="see" value="see"/>
+ <cd:variable name="smallcaps" value="smallcaps"/>
+ <cd:variable name="WORD" value="WORD"/>
+ <cd:variable name="firstpage" value="firstpage"/>
+ <cd:variable name="firstcolumn" value="firstcolumn"/>
+ <cd:variable name="previouspage" value="previouspage"/>
+ <cd:variable name="nextpage" value="nextpage"/>
+ <cd:variable name="lastpage" value="lastpage"/>
+ <cd:variable name="lastcolumn" value="lastcolumn"/>
+ <cd:variable name="lastpagenumber" value="lastpagenumber"/>
+ <cd:variable name="subpage" value="subpage"/>
+ <cd:variable name="firstsubpage" value="firstsubpage"/>
+ <cd:variable name="previoussubpage" value="previoussubpage"/>
+ <cd:variable name="nextsubpage" value="nextsubpage"/>
+ <cd:variable name="lastsubpage" value="lastsubpage"/>
+ <cd:variable name="nextevenpage" value="nextevenpage"/>
+ <cd:variable name="nextoddpage" value="nextoddpage"/>
+ <cd:variable name="previousevenpage" value="previousevenpage"/>
+ <cd:variable name="previousoddpage" value="previousoddpage"/>
+ <cd:variable name="readonly" value="readonly"/>
+ <cd:variable name="required" value="required"/>
+ <cd:variable name="protected" value="protected"/>
+ <cd:variable name="sorted" value="sorted"/>
+ <cd:variable name="unavailable" value="unavailable"/>
+ <cd:variable name="hidden" value="hidden"/>
+ <cd:variable name="printable" value="printable"/>
+ <cd:variable name="bookmark" value="bookmark"/>
+ <cd:variable name="nocheck" value="nocheck"/>
+ <cd:variable name="innermargin" value="innermargin"/>
+ <cd:variable name="outermargin" value="outermargin"/>
+ <cd:variable name="inneredge" value="inneredge"/>
+ <cd:variable name="outeredge" value="outeredge"/>
+ <cd:variable name="controls" value="controls"/>
+ <cd:variable name="nothanging" value="nothanging"/>
+ <cd:variable name="hyphenated" value="hyphenated"/>
+ <cd:variable name="nothyphenated" value="nothyphenated"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="enumeration"/>
+ <cd:variable name="description" value="description"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="controls"/>
+ <cd:constant name="global" value="global"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="conversion"/>
+ <cd:variable name="by" value="by"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="calligraphic"/>
+ <cd:variable name="handwritten" value="handwritten"/>
+ <cd:variable name="sansserif" value="sansserif"/>
+ <cd:variable name="roman" value="roman"/>
+ <cd:variable name="teletype" value="teletype"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="regular"/>
+ <cd:variable name="support" value="support"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="begin"/>
+ <cd:element name="end" value="end"/>
+ <cd:element name="coupled" value="coupled"/>
+ <cd:element name="get" value="get"/>
+ <cd:element name="currentlocal" value="currentlocal"/>
+ <cd:element name="endsetup" value="endsetup"/>
+ <cd:element name="load" value="load"/>
+ <cd:element name="emptyone" value="empty"/>
+ <cd:element name="emptytwo" value="empty"/>
+ <cd:element name="list" value="list"/>
+ <cd:element name="listof" value="listof"/>
+ <cd:element name="local" value="local"/>
+ <cd:element name="place" value="place"/>
+ <cd:element name="reserve" value="reserve"/>
+ <cd:element name="start" value="start"/>
+ <cd:element name="setup" value="setup"/>
+ <cd:element name="stop" value="stop"/>
+ <cd:element name="increment" value="increment"/>
+ <cd:element name="next" value="next"/>
+ <cd:element name="complete" value="complete"/>
+ <cd:element name="previous" value="previous"/>
+ <cd:element name="previouslocal" value="previouslocal"/>
+ <cd:element name="see" value="see"/>
+ <cd:element name="type" value="type"/>
+ <cd:element name="makeup" value="makeup"/>
+ <cd:element name="text" value="text"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="buffer"/>
+ <cd:variable name="linenote" value="linenote"/>
+ <cd:variable name="comment" value="comment"/>
+ <cd:variable name="interactionmenu" value="interactionmenu"/>
+ <cd:variable name="postponing" value="postponing"/>
+ <cd:variable name="hiding" value="hiding"/>
+ <cd:variable name="tabulate" value="tabulate"/>
+ <cd:variable name="tabulatehead" value="tabulatehead"/>
+ <cd:variable name="tabulatetail" value="tabulatetail"/>
+ <cd:variable name="fact" value="fact"/>
+ <cd:variable name="legend" value="legend"/>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="tablehead" value="tablehead"/>
+ <cd:variable name="tabletail" value="tabletail"/>
+ <cd:variable name="setups" value="setups"/>
+ <cd:variable name="helptext" value="helptext"/>
+ <cd:variable name="localenvironment" value="localenvironment"/>
+ <cd:variable name="sectionblockenvironment" value="sectionblockenvironment"/>
+ <cd:variable name="pagecomment" value="pagecomment"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="FirstPage"/>
+ <cd:variable name="PreviousPage" value="PreviousPage"/>
+ <cd:variable name="NextPage" value="NextPage"/>
+ <cd:variable name="LastPage" value="LastPage"/>
+ <cd:variable name="PreviousJump" value="PreviousJump"/>
+ <cd:variable name="NextJump" value="NextJump"/>
+ <cd:variable name="ToggleViewer" value="ToggleViewer"/>
+ <cd:variable name="ExitViewer" value="ExitViewer"/>
+ <cd:variable name="CloseDocument" value="CloseDocument"/>
+ <cd:variable name="SaveDocument" value="SaveDocument"/>
+ <cd:variable name="SaveNamedDocument" value="SaveNamedDocument"/>
+ <cd:variable name="OpenNamedDocument" value="OpenNamedDocument"/>
+ <cd:variable name="ViewerHelp" value="ViewerHelp"/>
+ <cd:variable name="PrintDocument" value="PrintDocument"/>
+ <cd:variable name="SearchDocument" value="SearchDocument"/>
+ <cd:variable name="SearchAgain" value="SearchAgain"/>
+ <cd:variable name="Query" value="Query"/>
+ <cd:variable name="QueryAgain" value="QueryAgain"/>
+ <cd:variable name="GotoPage" value="GotoPage"/>
+ <cd:variable name="StartMovie" value="StartMovie"/>
+ <cd:variable name="StopMovie" value="StopMovie"/>
+ <cd:variable name="PauseMovie" value="PauseMovie"/>
+ <cd:variable name="ResumeMovie" value="ResumeMovie"/>
+ <cd:variable name="StartSound" value="StartSound"/>
+ <cd:variable name="StopSound" value="StopSound"/>
+ <cd:variable name="PauseSound" value="PauseSound"/>
+ <cd:variable name="ResumeSound" value="ResumeSound"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauseRendering"/>
+ <cd:variable name="ResumeRendering" value="ResumeRendering"/>
+ <cd:variable name="SaveForm" value="SaveForm"/>
+ <cd:variable name="LoadForm" value="LoadForm"/>
+ <cd:variable name="ResetForm" value="ResetForm"/>
+ <cd:variable name="SubmitForm" value="SubmitForm"/>
+ <cd:variable name="HideField" value="HideField"/>
+ <cd:variable name="ShowField" value="ShowField"/>
+ <cd:variable name="FitWidth" value="FitWidth"/>
+ <cd:variable name="FitHeight" value="FitHeight"/>
+ <cd:variable name="HideLayer" value="HideLayer"/>
+ <cd:variable name="VideLayer" value="VideLayer"/>
+ <cd:variable name="ToggleLayer" value="ToggleLayer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="New"/>
+ <cd:variable name="Balloon" value="Balloon"/>
+ <cd:variable name="Addition" value="Addition"/>
+ <cd:variable name="Help" value="Help"/>
+ <cd:variable name="Paragraph" value="Paragraph"/>
+ <cd:variable name="Key" value="Key"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="language"/>
+ <cd:command name="mainlanguage" value="mainlanguage"/>
+ <cd:command name="translate" value="translate"/>
+ <cd:command name="installlanguage" value="installlanguage"/>
+ <cd:command name="setuplanguage" value="setuplanguage"/>
+ <cd:command name="showmakeup" value="showmakeup"/>
+ <cd:command name="useencoding" value="useencoding"/>
+ <cd:command name="usespecials" value="usespecials"/>
+ <cd:command name="defineoutput" value="defineoutput"/>
+ <cd:command name="setupoutput" value="setupoutput"/>
+ <cd:command name="defineaccent" value="defineaccent"/>
+ <cd:command name="definecharacter" value="definecharacter"/>
+ <cd:command name="definecommand" value="definecommand"/>
+ <cd:command name="startcoding" value="startcoding"/>
+ <cd:command name="stopcoding" value="stopcoding"/>
+ <cd:command name="definebodyfontenvironment" value="definebodyfontenvironment"/>
+ <cd:command name="setupbodyfontenvironment" value="setupbodyfontenvironment"/>
+ <cd:command name="definebodyfont" value="definebodyfont"/>
+ <cd:command name="definefont" value="definefont"/>
+ <cd:command name="definefontsynonym" value="definefontsynonym"/>
+ <cd:command name="definestyle" value="definestyle"/>
+ <cd:command name="definefontstyle" value="definefontstyle"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="setuptype" value="setuptype"/>
+ <cd:command name="type" value="type"/>
+ <cd:command name="typ" value="typ"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definetyping"/>
+ <cd:command name="definetype" value="definetype"/>
+ <cd:command name="setuptyping" value="setuptyping"/>
+ <cd:command name="typefile" value="typefile"/>
+ <cd:command name="setupfootnotes" value="setupfootnotes"/>
+ <cd:command name="setupfootnotedefinition" value="setupfootnotedefinition"/>
+ <cd:command name="note" value="note"/>
+ <cd:command name="footnote" value="footnote"/>
+ <cd:command name="footnotetext" value="footnotetext"/>
+ <cd:command name="startlocalfootnotes" value="startlocalfootnotes"/>
+ <cd:command name="stoplocalfootnotes" value="stoplocalfootnotes"/>
+ <cd:command name="placelocalfootnotes" value="placelocalfootnotes"/>
+ <cd:command name="placefootnotes" value="placefootnotes"/>
+ <cd:command name="currentdate" value="currentdate"/>
+ <cd:command name="date" value="date"/>
+ <cd:command name="weekday" value="weekday"/>
+ <cd:command name="WEEKDAY" value="WEEKDAY"/>
+ <cd:command name="month" value="month"/>
+ <cd:command name="MONTH" value="MONTH"/>
+ <cd:command name="Numbers" value="Numbers"/>
+ <cd:command name="numbers" value="numbers"/>
+ <cd:command name="romannumerals" value="romannumerals"/>
+ <cd:command name="Romannumerals" value="Romannumerals"/>
+ <cd:command name="character" value="character"/>
+ <cd:command name="Character" value="Character"/>
+ <cd:command name="characters" value="characters"/>
+ <cd:command name="Characters" value="Characters"/>
+ <cd:command name="unknown" value="unknown"/>
+ <cd:command name="definesymbol" value="definesymbol"/>
+ <cd:command name="definefiguresymbol" value="definefiguresymbol"/>
+ <cd:command name="symbol" value="symbol"/>
+ <cd:command name="setupsymbolset" value="setupsymbolset"/>
+ <cd:command name="showsymbolset" value="showsymbolset"/>
+ <cd:command name="startsymbolset" value="startsymbolset"/>
+ <cd:command name="usesymbols" value="usesymbols"/>
+ <cd:command name="defineconversion" value="defineconversion"/>
+ <cd:command name="convertnumber" value="convertnumber"/>
+ <cd:command name="setupcapitals" value="setupcapitals"/>
+ <cd:command name="smallcapped" value="cap"/>
+ <cd:command name="notsmallcapped" value="nocap"/>
+ <cd:command name="CAPPED" value="CAP"/>
+ <cd:command name="SmallCapped" value="Cap"/>
+ <cd:command name="SmallCaps" value="Caps"/>
+ <cd:command name="WORD" value="WORD"/>
+ <cd:command name="WORDS" value="WORDS"/>
+ <cd:command name="Word" value="Word"/>
+ <cd:command name="Words" value="Words"/>
+ <cd:command name="stretched" value="stretched"/>
+ <cd:command name="overstrike" value="overstrike"/>
+ <cd:command name="overstrikes" value="overstrikes"/>
+ <cd:command name="overbar" value="overbar"/>
+ <cd:command name="overbars" value="overbars"/>
+ <cd:command name="underbar" value="underbar"/>
+ <cd:command name="underbars" value="underbars"/>
+ <cd:command name="setupunderbar" value="setupunderbar"/>
+ <cd:command name="setupbodyfont" value="setupbodyfont"/>
+ <cd:command name="switchtobodyfont" value="switchtobodyfont"/>
+ <cd:command name="showbodyfont" value="showbodyfont"/>
+ <cd:command name="showbodyfontenvironment" value="showbodyfontenvironment"/>
+ <cd:command name="headtext" value="headtext"/>
+ <cd:command name="labeltext" value="labeltext"/>
+ <cd:command name="LABELTEXT" value="LABELTEXT"/>
+ <cd:command name="setupheadtext" value="setupheadtext"/>
+ <cd:command name="setuplabeltext" value="setuplabeltext"/>
+ <cd:command name="marginrule" value="marginrule"/>
+ <cd:command name="startmarginrule" value="startmarginrule"/>
+ <cd:command name="stopmarginrule" value="stopmarginrule"/>
+ <cd:command name="setupmarginrules" value="setupmarginrules"/>
+ <cd:command name="blackrule" value="blackrule"/>
+ <cd:command name="blackrules" value="blackrules"/>
+ <cd:command name="setupblackrules" value="setupblackrules"/>
+ <cd:command name="setupscreens" value="setupscreens"/>
+ <cd:command name="framed" value="framed"/>
+ <cd:command name="inframed" value="inframed"/>
+ <cd:command name="mframed" value="maframed"/>
+ <cd:command name="inmframed" value="inmaframed"/>
+ <cd:command name="setupframed" value="setupframed"/>
+ <cd:command name="setuplinewidth" value="setuplinewidth"/>
+ <cd:command name="setupthinrules" value="setupthinrules"/>
+ <cd:command name="thinrule" value="thinrule"/>
+ <cd:command name="thinrules" value="thinrules"/>
+ <cd:command name="hairline" value="hairline"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="defineframed"/>
+ <cd:command name="defineframedtext" value="defineframedtext"/>
+ <cd:command name="setupframedtexts" value="setupframedtexts"/>
+ <cd:command name="defineoverlay" value="defineoverlay"/>
+ <cd:command name="definelayer" value="definelayer"/>
+ <cd:command name="background" value="background"/>
+ <cd:command name="startbackground" value="startbackground"/>
+ <cd:command name="stopbackground" value="stopbackground"/>
+ <cd:command name="setupbackground" value="setupbackground"/>
+ <cd:command name="fillinrules" value="fillinrules"/>
+ <cd:command name="setupfillinrules" value="setupfillinrules"/>
+ <cd:command name="fillintext" value="fillintext"/>
+ <cd:command name="setupfillinlines" value="setupfillinlines"/>
+ <cd:command name="fillinline" value="fillinline"/>
+ <cd:command name="setuptextrules" value="setuptextrules"/>
+ <cd:command name="textrule" value="textrule"/>
+ <cd:command name="starttextrule" value="starttextrule"/>
+ <cd:command name="stoptextrule" value="stoptextrule"/>
+ <cd:command name="usemodule" value="usemodule"/>
+ <cd:command name="usemodules" value="usemodules"/>
+ <cd:command name="starttext" value="starttext"/>
+ <cd:command name="stoptext" value="stoptext"/>
+ <cd:command name="margintitle" value="margintitle"/>
+ <cd:command name="marginword" value="marginword"/>
+ <cd:command name="margintext" value="margintext"/>
+ <cd:command name="inleft" value="inleft"/>
+ <cd:command name="inmargin" value="inmargin"/>
+ <cd:command name="inothermargin" value="inothermargin"/>
+ <cd:command name="inright" value="inright"/>
+ <cd:command name="ininner" value="ininner"/>
+ <cd:command name="inouter" value="inouter"/>
+ <cd:command name="startmarginblock" value="startmarginblock"/>
+ <cd:command name="stopmarginblock" value="stopmarginblock"/>
+ <cd:command name="defineinmargin" value="defineinmargin"/>
+ <cd:command name="setupinmargin" value="setupinmargin"/>
+ <cd:command name="setupmarginblocks" value="setupmarginblocks"/>
+ <cd:command name="inleftedge" value="inleftedge"/>
+ <cd:command name="inleftmargin" value="inleftmargin"/>
+ <cd:command name="inrightmargin" value="inrightmargin"/>
+ <cd:command name="inrightedge" value="inrightedge"/>
+ <cd:command name="atleftmargin" value="atleftmargin"/>
+ <cd:command name="atrightmargin" value="atrightmargin"/>
+ <cd:command name="wordright" value="wordright"/>
+ <cd:command name="defineblank" value="defineblank"/>
+ <cd:command name="blank" value="blank"/>
+ <cd:command name="setupblank" value="setupblank"/>
+ <cd:command name="correctwhitespace" value="correctwhitespace"/>
+ <cd:command name="fixedspaces" value="fixedspaces"/>
+ <cd:command name="fixedspace" value="fixedspace"/>
+ <cd:command name="nospace" value="nospace"/>
+ <cd:command name="space" value="space"/>
+ <cd:command name="nowhitespace" value="nowhitespace"/>
+ <cd:command name="packed" value="packed"/>
+ <cd:command name="startpacked" value="startpacked"/>
+ <cd:command name="stoppacked" value="stoppacked"/>
+ <cd:command name="startunpacked" value="startunpacked"/>
+ <cd:command name="stopunpacked" value="stopunpacked"/>
+ <cd:command name="startlinecorrection" value="startlinecorrection"/>
+ <cd:command name="stoplinecorrection" value="stoplinecorrection"/>
+ <cd:command name="godown" value="godown"/>
+ <cd:command name="whitespace" value="whitespace"/>
+ <cd:command name="noindenting" value="noindenting"/>
+ <cd:command name="indenting" value="indenting"/>
+ <cd:command name="setupindenting" value="setupindenting"/>
+ <cd:command name="startalignment" value="startalignment"/>
+ <cd:command name="stopalignment" value="stopalignment"/>
+ <cd:command name="startlines" value="startlines"/>
+ <cd:command name="stoplines" value="stoplines"/>
+ <cd:command name="setupparagraphnumbering" value="setupparagraphnumbering"/>
+ <cd:command name="setuplinenumbering" value="setuplinenumbering"/>
+ <cd:command name="startlinenumbering" value="startlinenumbering"/>
+ <cd:command name="stoplinenumbering" value="stoplinenumbering"/>
+ <cd:command name="startline" value="startline"/>
+ <cd:command name="stopline" value="stopline"/>
+ <cd:command name="someline" value="someline"/>
+ <cd:command name="inline" value="inline"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="emptylines"/>
+ <cd:command name="setuplines" value="setuplines"/>
+ <cd:command name="startnarrower" value="startnarrower"/>
+ <cd:command name="stopnarrower" value="stopnarrower"/>
+ <cd:command name="setupnarrower" value="setupnarrower"/>
+ <cd:command name="definetabulate" value="definetabulate"/>
+ <cd:command name="setuptabulate" value="setuptabulate"/>
+ <cd:command name="starttable" value="starttable"/>
+ <cd:command name="stoptable" value="stoptable"/>
+ <cd:command name="starttables" value="starttables"/>
+ <cd:command name="stoptables" value="stoptables"/>
+ <cd:command name="setuptables" value="setuptables"/>
+ <cd:command name="definetabletemplate" value="definetabletemplate"/>
+ <cd:command name="page" value="page"/>
+ <cd:command name="testcolumn" value="testcolumn"/>
+ <cd:command name="testpage" value="testpage"/>
+ <cd:command name="couplepage" value="couplepage"/>
+ <cd:command name="pagetype" value="pagetype"/>
+ <cd:command name="processpage" value="processpage"/>
+ <cd:command name="couplepaper" value="couplepaper"/>
+ <cd:command name="selectpaper" value="selectpaper"/>
+ <cd:command name="screen" value="screen"/>
+ <cd:command name="definesection" value="definesection"/>
+ <cd:command name="definesectionblock" value="definesectionblock"/>
+ <cd:command name="setupsectionblock" value="setupsectionblock"/>
+ <cd:command name="setupsection" value="setupsection"/>
+ <cd:command name="notopandbottomlines" value="notopandbottomlines"/>
+ <cd:command name="noheaderandfooterlines" value="noheaderandfooterlines"/>
+ <cd:command name="setuptop" value="setuptop"/>
+ <cd:command name="setuptoptexts" value="setuptoptexts"/>
+ <cd:command name="setupheader" value="setupheader"/>
+ <cd:command name="setupheadertexts" value="setupheadertexts"/>
+ <cd:command name="setuppagenumbering" value="setuppagenumbering"/>
+ <cd:command name="getnumber" value="getnumber"/>
+ <cd:command name="incrementnumber" value="incrementnumber"/>
+ <cd:command name="decrementnumber" value="decrementnumber"/>
+ <cd:command name="resetnumber" value="resetnumber"/>
+ <cd:command name="setnumber" value="setnumber"/>
+ <cd:command name="setupnumber" value="setupnumber"/>
+ <cd:command name="setupbottom" value="setupbottom"/>
+ <cd:command name="setupbottomtexts" value="setupbottomtexts"/>
+ <cd:command name="setupfooter" value="setupfooter"/>
+ <cd:command name="setupfootertexts" value="setupfootertexts"/>
+ <cd:command name="setuppagenumber" value="setuppagenumber"/>
+ <cd:command name="setupsubpagenumber" value="setupsubpagenumber"/>
+ <cd:command name="subpagenumber" value="subpagenumber"/>
+ <cd:command name="setuptext" value="setuptext"/>
+ <cd:command name="setuptexttexts" value="setuptexttexts"/>
+ <cd:command name="definetext" value="definetext"/>
+ <cd:command name="pagenumber" value="pagenumber"/>
+ <cd:command name="completepagenumber" value="completepagenumber"/>
+ <cd:command name="placepagenumber" value="placepagenumber"/>
+ <cd:command name="items" value="items"/>
+ <cd:command name="setupitems" value="setupitems"/>
+ <cd:command name="leftaligned" value="leftaligned"/>
+ <cd:command name="midaligned" value="midaligned"/>
+ <cd:command name="rightaligned" value="rightaligned"/>
+ <cd:command name="startcolumns" value="startcolumns"/>
+ <cd:command name="stopcolumns" value="stopcolumns"/>
+ <cd:command name="setupcolumns" value="setupcolumns"/>
+ <cd:command name="column" value="column"/>
+ <cd:command name="head" value="head"/>
+ <cd:command name="but" value="but"/>
+ <cd:command name="item" value="item"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="mar"/>
+ <cd:command name="sym" value="sym"/>
+ <cd:command name="its" value="its"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="headsym"/>
+ <cd:command name="defineitemgroup" value="defineitemgroup"/>
+ <cd:command name="setupitemgroup" value="setupitemgroup"/>
+ <cd:command name="setupitemgroups" value="setupitemgroups"/>
+ <cd:command name="definehead" value="definehead"/>
+ <cd:command name="setuphead" value="setuphead"/>
+ <cd:command name="setupheads" value="setupheads"/>
+ <cd:command name="setupheadnumber" value="setupheadnumber"/>
+ <cd:command name="headnumber" value="headnumber"/>
+ <cd:command name="currentheadnumber" value="currentheadnumber"/>
+ <cd:command name="determineheadnumber" value="determineheadnumber"/>
+ <cd:command name="resetmarking" value="resetmarking"/>
+ <cd:command name="setupmarking" value="setupmarking"/>
+ <cd:command name="definemarking" value="definemarking"/>
+ <cd:command name="nomarking" value="nomarking"/>
+ <cd:command name="marking" value="marking"/>
+ <cd:command name="decouplemarking" value="decouplemarking"/>
+ <cd:command name="couplemarking" value="couplemarking"/>
+ <cd:command name="getmarking" value="getmarking"/>
+ <cd:command name="definelayout" value="definelayout"/>
+ <cd:command name="setuplayout" value="setuplayout"/>
+ <cd:command name="adaptlayout" value="adaptlayout"/>
+ <cd:command name="placeongrid" value="placeongrid"/>
+ <cd:command name="moveongrid" value="moveongrid"/>
+ <cd:command name="showsetups" value="showsetups"/>
+ <cd:command name="showframe" value="showframe"/>
+ <cd:command name="showgrid" value="showgrid"/>
+ <cd:command name="showlayout" value="showlayout"/>
+ <cd:command name="showprint" value="showprint"/>
+ <cd:command name="showstruts" value="showstruts"/>
+ <cd:command name="definepapersize" value="definepapersize"/>
+ <cd:command name="setuppapersize" value="setuppapersize"/>
+ <cd:command name="setuppaper" value="setuppaper"/>
+ <cd:command name="setuparranging" value="setuparranging"/>
+ <cd:command name="version" value="version"/>
+ <cd:command name="setupbackgrounds" value="setupbackgrounds"/>
+ <cd:command name="setupalign" value="setupalign"/>
+ <cd:command name="setupwhitespace" value="setupwhitespace"/>
+ <cd:command name="setupinteraction" value="setupinteraction"/>
+ <cd:command name="setupinteractionmenu" value="setupinteractionmenu"/>
+ <cd:command name="defineinteractionmenu" value="defineinteractionmenu"/>
+ <cd:command name="disableinteractionmenu" value="disableinteractionmenu"/>
+ <cd:command name="interactionmenu" value="interactionmenu"/>
+ <cd:command name="interactionbuttons" value="interactionbuttons"/>
+ <cd:command name="interactionbar" value="interactionbar"/>
+ <cd:command name="setupinteractionbar" value="setupinteractionbar"/>
+ <cd:command name="setupinteractionscreen" value="setupinteractionscreen"/>
+ <cd:command name="placebookmarks" value="placebookmarks"/>
+ <cd:command name="bookmark" value="bookmark"/>
+ <cd:command name="definelogo" value="definelogo"/>
+ <cd:command name="placelogos" value="placelogos"/>
+ <cd:command name="definecolor" value="definecolor"/>
+ <cd:command name="definecolorgroup" value="definecolorgroup"/>
+ <cd:command name="definepalet" value="definepalet"/>
+ <cd:command name="graycolor" value="graycolor"/>
+ <cd:command name="color" value="color"/>
+ <cd:command name="startcolor" value="startcolor"/>
+ <cd:command name="stopcolor" value="stopcolor"/>
+ <cd:command name="setupcolors" value="setupcolors"/>
+ <cd:command name="setupcolor" value="setupcolor"/>
+ <cd:command name="setuppalet" value="setuppalet"/>
+ <cd:command name="showcolor" value="showcolor"/>
+ <cd:command name="showcolorgroup" value="showcolorgroup"/>
+ <cd:command name="showpalet" value="showpalet"/>
+ <cd:command name="comparecolorgroup" value="comparecolorgroup"/>
+ <cd:command name="comparepalet" value="comparepalet"/>
+ <cd:command name="colorvalue" value="colorvalue"/>
+ <cd:command name="greyvalue" value="greyvalue"/>
+ <cd:command name="startraster" value="startraster"/>
+ <cd:command name="stopraster" value="stopraster"/>
+ <cd:command name="defineblock" value="defineblock"/>
+ <cd:command name="setupblock" value="setupblock"/>
+ <cd:command name="useblocks" value="useblocks"/>
+ <cd:command name="processblocks" value="processblocks"/>
+ <cd:command name="keepblocks" value="keepblocks"/>
+ <cd:command name="selectblocks" value="selectblocks"/>
+ <cd:command name="hideblocks" value="hideblocks"/>
+ <cd:command name="bypassblocks" value="bypassblocks"/>
+ <cd:command name="forceblocks" value="forceblocks"/>
+ <cd:command name="nomoreblocks" value="nomoreblocks"/>
+ <cd:command name="definelist" value="definelist"/>
+ <cd:command name="definecombinedlist" value="definecombinedlist"/>
+ <cd:command name="listsymbol" value="listsymbol"/>
+ <cd:command name="placelist" value="placelist"/>
+ <cd:command name="plaatsruwelijst" value="placerawlist"/>
+ <cd:command name="placecombinedlist" value="placecombinedlist"/>
+ <cd:command name="writetolist" value="writetolist"/>
+ <cd:command name="writebetweenlist" value="writebetweenlist"/>
+ <cd:command name="immediatetolist" value="immediatetolist"/>
+ <cd:command name="immediatebetweenlist" value="immediatebetweenlist"/>
+ <cd:command name="setuplist" value="setuplist"/>
+ <cd:command name="setupcombinedlist" value="setupcombinedlist"/>
+ <cd:command name="determinelistcharacteristics" value="determinelistcharacteristics"/>
+ <cd:command name="listlength" value="listlength"/>
+ <cd:command name="listwidth" value="listwidth"/>
+ <cd:command name="listheight" value="listheight"/>
+ <cd:command name="nolist" value="nolist"/>
+ <cd:command name="definereferencelist" value="definereferencelist"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="writetoreferencelist" value="writetoreferencelist"/>
+ <cd:command name="setupreferencelist" value="setupreferencelist"/>
+ <cd:command name="definefloat" value="definefloat"/>
+ <cd:command name="setupfloat" value="setupfloat"/>
+ <cd:command name="setupfloats" value="setupfloats"/>
+ <cd:command name="splitfloat" value="splitfloat"/>
+ <cd:command name="setupfloatsplitting" value="setupfloatsplitting"/>
+ <cd:command name="placefloat" value="placefloat"/>
+ <cd:command name="movesidefloat" value="movesidefloat"/>
+ <cd:command name="defineplacement" value="defineplacement"/>
+ <cd:command name="setupplacement" value="setupplacement"/>
+ <cd:command name="definecombination" value="definecombination"/>
+ <cd:command name="startcombination" value="startcombination"/>
+ <cd:command name="stopcombination" value="stopcombination"/>
+ <cd:command name="placesidebyside" value="placesidebyside"/>
+ <cd:command name="placeontopofeachother" value="placeontopofeachother"/>
+ <cd:command name="setupcaption" value="setupcaption"/>
+ <cd:command name="setupcaptions" value="setupcaptions"/>
+ <cd:command name="setupcombinations" value="setupcombinations"/>
+ <cd:command name="startoverlay" value="startoverlay"/>
+ <cd:command name="stopoverlay" value="stopoverlay"/>
+ <cd:command name="defineregister" value="defineregister"/>
+ <cd:command name="coupleregister" value="coupleregister"/>
+ <cd:command name="setupregister" value="setupregister"/>
+ <cd:command name="writetoregister" value="writetoregister"/>
+ <cd:command name="completeregister" value="completeregister"/>
+ <cd:command name="placeregister" value="placeregister"/>
+ <cd:command name="determineregistercharacteristics" value="determineregistercharacteristics"/>
+ <cd:command name="definesorting" value="definesorting"/>
+ <cd:command name="definesynonyms" value="definesynonyms"/>
+ <cd:command name="setupsorting" value="setupsorting"/>
+ <cd:command name="setupsynonyms" value="setupsynonyms"/>
+ <cd:command name="startsynchronization" value="startsynchronization"/>
+ <cd:command name="stopsynchronization" value="stopsynchronization"/>
+ <cd:command name="setupsynchronizationbar" value="setupsynchronizationbar"/>
+ <cd:command name="setupsynchronization" value="setupsynchronization"/>
+ <cd:command name="synchronizationbar" value="synchronizationbar"/>
+ <cd:command name="synchronize" value="synchronize"/>
+ <cd:command name="useexternaldocument" value="useexternaldocument"/>
+ <cd:command name="useURL" value="useURL"/>
+ <cd:command name="useurl" value="useurl"/>
+ <cd:command name="setupurl" value="setupurl"/>
+ <cd:command name="coupledocument" value="coupledocument"/>
+ <cd:command name="setupprograms" value="setupprograms"/>
+ <cd:command name="defineprogram" value="defineprogram"/>
+ <cd:command name="program" value="program"/>
+ <cd:command name="setuppagetransitions" value="setuppagetransitions"/>
+ <cd:command name="defineprofile" value="defineprofile"/>
+ <cd:command name="defineversion" value="defineversion"/>
+ <cd:command name="markversion" value="markversion"/>
+ <cd:command name="selectversion" value="selectversion"/>
+ <cd:command name="startprofile" value="startprofile"/>
+ <cd:command name="startversion" value="startversion"/>
+ <cd:command name="setupprofiles" value="setupprofiles"/>
+ <cd:command name="setupversions" value="setupversions"/>
+ <cd:command name="stopprofile" value="stopprofile"/>
+ <cd:command name="stopversion" value="stopversion"/>
+ <cd:command name="followprofile" value="followprofile"/>
+ <cd:command name="followprofileversion" value="followprofileversion"/>
+ <cd:command name="followversion" value="followversion"/>
+ <cd:command name="definedescription" value="definedescription"/>
+ <cd:command name="definelabel" value="definelabel"/>
+ <cd:command name="defineenumeration" value="defineenumeration"/>
+ <cd:command name="defineindenting" value="defineindenting"/>
+ <cd:command name="setupdescriptions" value="setupdescriptions"/>
+ <cd:command name="setupenumerations" value="setupenumerations"/>
+ <cd:command name="setupindentations" value="setupindentations"/>
+ <cd:command name="setuptab" value="setuptab"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="setupexternalfigures"/>
+ <cd:command name="showexternalfigures" value="showexternalfigures"/>
+ <cd:command name="externalfigure" value="externalfigure"/>
+ <cd:command name="useexternalfigure" value="useexternalfigure"/>
+ <cd:command name="startfigure" value="startfigure"/>
+ <cd:command name="referring" value="referring"/>
+ <cd:command name="remark" value="remark"/>
+ <cd:command name="colorbar" value="colorbar"/>
+ <cd:command name="grid" value="grid"/>
+ <cd:command name="button" value="button"/>
+ <cd:command name="menubutton" value="menubutton"/>
+ <cd:command name="setupbuttons" value="setupbuttons"/>
+ <cd:command name="usereferences" value="usereferences"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="setupreferencelist" value="setupreferencelist"/>
+ <cd:command name="setupreferencing" value="setupreferencing"/>
+ <cd:command name="textreference" value="textreference"/>
+ <cd:command name="pagereference" value="pagereference"/>
+ <cd:command name="reference" value="reference"/>
+ <cd:command name="definereference" value="definereference"/>
+ <cd:command name="definereferenceformat" value="definereferenceformat"/>
+ <cd:command name="useJSscripts" value="useJSscripts"/>
+ <cd:command name="from" value="from"/>
+ <cd:command name="in" value="in"/>
+ <cd:command name="at" value="at"/>
+ <cd:command name="about" value="about"/>
+ <cd:command name="goto" value="goto"/>
+ <cd:command name="atpage" value="atpage"/>
+ <cd:command name="somewhere" value="somewhere"/>
+ <cd:command name="navigating" value="navigating"/>
+ <cd:command name="ref" value="ref"/>
+ <cd:command name="gotobox" value="gotobox"/>
+ <cd:command name="gotopage" value="gotopage"/>
+ <cd:command name="placeformula" value="placeformula"/>
+ <cd:command name="placesubformula" value="placesubformula"/>
+ <cd:command name="moveformula" value="moveformula"/>
+ <cd:command name="setupformulas" value="setupformulae"/>
+ <cd:command name="formulanumber" value="formulanumber"/>
+ <cd:command name="subformulanumber" value="subformulanumber"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="fact"/>
+ <cd:command name="mathematics" value="mathematics"/>
+ <cd:command name="dimension" value="dimension"/>
+ <cd:command name="nodimension" value="nodimension"/>
+ <cd:command name="startenvironment" value="startenvironment"/>
+ <cd:command name="stopenvironment" value="stopenvironment"/>
+ <cd:command name="startcomponent" value="startcomponent"/>
+ <cd:command name="stopcomponent" value="stopcomponent"/>
+ <cd:command name="startproduct" value="startproduct"/>
+ <cd:command name="stopproduct" value="stopproduct"/>
+ <cd:command name="startproject" value="startproject"/>
+ <cd:command name="stopproject" value="stopproject"/>
+ <cd:command name="setups" value="setups"/>
+ <cd:command name="project" value="project"/>
+ <cd:command name="component" value="component"/>
+ <cd:command name="product" value="product"/>
+ <cd:command name="environment" value="environment"/>
+ <cd:command name="nomorefiles" value="nomorefiles"/>
+ <cd:command name="getbuffer" value="getbuffer"/>
+ <cd:command name="setupbuffer" value="setupbuffer"/>
+ <cd:command name="typebuffer" value="typebuffer"/>
+ <cd:command name="definebuffer" value="definebuffer"/>
+ <cd:command name="unitmeaning" value="unitmeaning"/>
+ <cd:command name="infull" value="infull"/>
+ <cd:command name="quotation" value="quotation"/>
+ <cd:command name="quote" value="quote"/>
+ <cd:command name="startquotation" value="startquotation"/>
+ <cd:command name="stopquotation" value="stopquotation"/>
+ <cd:command name="setupquote" value="setupquote"/>
+ <cd:command name="define" value="define"/>
+ <cd:command name="redo" value="redo"/>
+ <cd:command name="usecommands" value="usecommands"/>
+ <cd:command name="definestartstop" value="definestartstop"/>
+ <cd:command name="setupstartstop" value="setupstartstop"/>
+ <cd:command name="startlocal" value="startlocal"/>
+ <cd:command name="stoplocal" value="stoplocal"/>
+ <cd:command name="startglobal" value="startglobal"/>
+ <cd:command name="stopglobal" value="stopglobal"/>
+ <cd:command name="macroname" value="name"/>
+ <cd:command name="definemakeup" value="definemakeup"/>
+ <cd:command name="setupmakeup" value="setupmakeup"/>
+ <cd:command name="startmakeup" value="startmakeup"/>
+ <cd:command name="stopmakeup" value="stopmakeup"/>
+ <cd:command name="useexternalsoundtrack" value="useexternalsoundtrack"/>
+ <cd:command name="useexternalfile" value="useexternalfile"/>
+ <cd:command name="useexternalfiles" value="useexternalfiles"/>
+ <cd:command name="referral" value="referral"/>
+ <cd:command name="referraldate" value="referraldate"/>
+ <cd:command name="high" value="high"/>
+ <cd:command name="lohi" value="lohi"/>
+ <cd:command name="low" value="low"/>
+ <cd:command name="fraction" value="fraction"/>
+ <cd:command name="chem" value="chem"/>
+ <cd:command name="startopposite" value="startopposite"/>
+ <cd:command name="stopopposite" value="stopopposite"/>
+ <cd:command name="setupoppositeplacing" value="setupoppositeplacing"/>
+ <cd:command name="startpositioning" value="startpositioning"/>
+ <cd:command name="stoppositioning" value="stoppositioning"/>
+ <cd:command name="position" value="position"/>
+ <cd:command name="setuppositioning" value="setuppositioning"/>
+ <cd:command name="rotate" value="rotate"/>
+ <cd:command name="setuprotate" value="setuprotate"/>
+ <cd:command name="mirror" value="mirror"/>
+ <cd:command name="scale" value="scale"/>
+ <cd:command name="setupnumbering" value="setupnumbering"/>
+ <cd:command name="reset" value="reset"/>
+ <cd:command name="setuppublications" value="setuppublications"/>
+ <cd:command name="publication" value="publication"/>
+ <cd:command name="definehbox" value="definehbox"/>
+ <cd:command name="adding" value="adding"/>
+ <cd:command name="periods" value="periods"/>
+ <cd:command name="setuphyphenmark" value="setuphyphenmark"/>
+ <cd:command name="setupinterlinespace" value="setupinterlinespace"/>
+ <cd:command name="setupspacing" value="setupspacing"/>
+ <cd:command name="setuptolerance" value="setuptolerance"/>
+ <cd:command name="setupsystem" value="setupsystem"/>
+ <cd:command name="usepath" value="usedirectory"/>
+ <cd:command name="defineparagraphs" value="defineparagraphs"/>
+ <cd:command name="setupparagraphs" value="setupparagraphs"/>
+ <cd:command name="donttest" value="donttest"/>
+ <cd:command name="setupcomment" value="setupcomment"/>
+ <cd:command name="comment" value="comment"/>
+ <cd:command name="definefield" value="definefield"/>
+ <cd:command name="definemainfield" value="definemainfield"/>
+ <cd:command name="definesubfield" value="definesubfield"/>
+ <cd:command name="clonefield" value="clonefield"/>
+ <cd:command name="copyfield" value="copyfield"/>
+ <cd:command name="setupfield" value="setupfield"/>
+ <cd:command name="setupfields" value="setupfields"/>
+ <cd:command name="field" value="field"/>
+ <cd:command name="fitfield" value="fitfield"/>
+ <cd:command name="logfields" value="logfields"/>
+ <cd:command name="showfields" value="showfields"/>
+ <cd:command name="tooltip" value="tooltip"/>
+ <cd:command name="fillinfield" value="fillinfield"/>
+ <cd:command name="definefieldstack" value="definefieldstack"/>
+ <cd:command name="fieldstack" value="fieldstack"/>
+ <cd:command name="setupforms" value="setupforms"/>
+ <cd:command name="setupclipping" value="setupclipping"/>
+ <cd:command name="clip" value="clip"/>
+ <cd:command name="placelegend" value="placelegend"/>
+ <cd:command name="setuplegend" value="setuplegend"/>
+ <cd:command name="setuppagecomment" value="setuppagecomment"/>
+ <cd:command name="setupstrut" value="setupstrut"/>
+ <cd:command name="definerule" value="definerule"/>
+ <cd:command name="placerule" value="placerule"/>
+ <cd:command name="setuprule" value="setuprule"/>
+ <cd:command name="definetextvariable" value="definetextvariable"/>
+ <cd:command name="setuptextvariable" value="setuptextvariable"/>
+ <cd:command name="settextvariable" value="settextvariable"/>
+ <cd:command name="placetextvariable" value="placetextvariable"/>
+ <cd:command name="textvariable" value="textvariable"/>
+ <cd:command name="definetextposition" value="definetextposition"/>
+ <cd:command name="setuptextposition" value="setuptextposition"/>
+ <cd:command name="positiontext" value="positiontext"/>
+ <cd:command name="definerawfont" value="definerawfont"/>
+ <cd:command name="switchtorawfont" value="switchtorawfont"/>
+ <cd:command name="placeheadtext" value="placeheadtext"/>
+ <cd:command name="placeheadnumber" value="placeheadnumber"/>
+ <cd:command name="definepagebreak" value="definepagebreak"/>
+ <cd:command name="definecolumnbreak" value="definecolumnbreak"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="setupitemizations"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="topheight"/>
+ <cd:command name="topdistance" value="topdistance"/>
+ <cd:command name="headerheight" value="headerheight"/>
+ <cd:command name="headerdistance" value="headerdistance"/>
+ <cd:command name="textheight" value="textheight"/>
+ <cd:command name="footerdistance" value="footerdistance"/>
+ <cd:command name="footerheight" value="footerheight"/>
+ <cd:command name="bottomdistance" value="bottomdistance"/>
+ <cd:command name="bottomheight" value="bottomheight"/>
+ <cd:command name="marginwidth" value="marginwidth"/>
+ <cd:command name="leftmarginwidth" value="leftmarginwidth"/>
+ <cd:command name="rightmarginwidth" value="rightmarginwidth"/>
+ <cd:command name="margindistance" value="margindistance"/>
+ <cd:command name="leftmargindistance" value="leftmargindistance"/>
+ <cd:command name="rightmargindistance" value="rightmargindistance"/>
+ <cd:command name="edgewidth" value="edgewidth"/>
+ <cd:command name="leftedgewidth" value="leftedgewidth"/>
+ <cd:command name="rightedgewidth" value="rightedgewidth"/>
+ <cd:command name="edgedistance" value="edgedistance"/>
+ <cd:command name="leftedgedistance" value="leftedgedistance"/>
+ <cd:command name="rightedgedistance" value="rightedgedistance"/>
+ <cd:command name="innermarginwidth" value="innermarginwidth"/>
+ <cd:command name="outermarginwidth" value="outermarginwidth"/>
+ <cd:command name="innermargindistance" value="innermargindistance"/>
+ <cd:command name="outermargindistance" value="outermargindistance"/>
+ <cd:command name="inneredgewidth" value="inneredgewidth"/>
+ <cd:command name="outeredgewidth" value="outeredgewidth"/>
+ <cd:command name="inneredgedistance" value="inneredgedistance"/>
+ <cd:command name="outeredgedistance" value="outeredgedistance"/>
+ <cd:command name="textwidth" value="textwidth"/>
+ <cd:command name="makeupwidth" value="makeupwidth"/>
+ <cd:command name="makeupheight" value="makeupheight"/>
+ <cd:command name="topspace" value="topspace"/>
+ <cd:command name="bottomspace" value="bottomspace"/>
+ <cd:command name="backspace" value="backspace"/>
+ <cd:command name="cutspace" value="cutspace"/>
+ <cd:command name="paperwidth" value="paperwidth"/>
+ <cd:command name="paperheight" value="paperheight"/>
+ <cd:command name="printpaperwidth" value="printpaperwidth"/>
+ <cd:command name="printpaperheight" value="printpaperheight"/>
+ <cd:command name="pageoffset" value="pageoffset"/>
+ <cd:command name="pagedepth" value="pagedepth"/>
+ <cd:command name="headlevel" value="headlevel"/>
+ <cd:command name="linewidth" value="linethickness"/>
+ <cd:command name="totalnumberofpages" value="totalnumberofpages"/>
+ <cd:command name="numberofsubpages" value="numberofsubpages"/>
+ <cd:command name="useXMLfilter" value="useXMLfilter"/>
+ <cd:command name="definecolumnset" value="definecolumnset"/>
+ <cd:command name="setupcolumnset" value="setupcolumnset"/>
+ <cd:command name="startcolumnset" value="startcolumnset"/>
+ <cd:command name="stopcolumnset" value="stopcolumnset"/>
+ <cd:command name="setupcolumnsetlines" value="setupcolumnsetlines"/>
+ <cd:command name="setupcolumnsetstart" value="setupcolumnsetstart"/>
+ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/>
+ <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/>
+ <cd:command name="usetypescript" value="usetypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="startdocument"/>
+ <cd:command name="stopdocument" value="stopdocument"/>
+ <cd:command name="startoverzicht" value="startoverview"/>
+ <cd:command name="stopoverzicht" value="stopoverview"/>
+ <cd:command name="label" value="label"/>
+ <cd:command name="labels" value="labels"/>
+ <cd:command name="domicile" value="domicile"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-it.xml b/Master/texmf-dist/tex/context/interface/keys-it.xml
new file mode 100644
index 00000000000..63f45e6dc02
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-it.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="uno"/>
+ <cd:variable name="two" value="due"/>
+ <cd:variable name="three" value="tre"/>
+ <cd:variable name="four" value="quattro"/>
+ <cd:variable name="five" value="cinque"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="ambiente"/>
+ <cd:variable name="component" value="componente"/>
+ <cd:variable name="product" value="prodotto"/>
+ <cd:variable name="project" value="progetto"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="domenica"/>
+ <cd:variable name="monday" value="lunedi"/>
+ <cd:variable name="tuesday" value="martedi"/>
+ <cd:variable name="wednesday" value="mercoledi"/>
+ <cd:variable name="thursday" value="giovedi"/>
+ <cd:variable name="friday" value="venerdi"/>
+ <cd:variable name="saturday" value="sabato"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="gennaio"/>
+ <cd:variable name="february" value="febbraio"/>
+ <cd:variable name="march" value="marzo"/>
+ <cd:variable name="april" value="aprile"/>
+ <cd:variable name="may" value="maggio"/>
+ <cd:variable name="june" value="giugno"/>
+ <cd:variable name="july" value="luglio"/>
+ <cd:variable name="august" value="agosto"/>
+ <cd:variable name="september" value="settembre"/>
+ <cd:variable name="october" value="ottobre"/>
+ <cd:variable name="november" value="novembre"/>
+ <cd:variable name="december" value="dicembre"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="apagina"/>
+ <cd:variable name="hencefore" value="precedente"/>
+ <cd:variable name="hereafter" value="seguente"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="paragrafo"/>
+ <cd:variable name="part" value="parte"/>
+ <cd:variable name="chapter" value="capitolo"/>
+ <cd:variable name="subject" value="argomento"/>
+ <cd:variable name="section" value="capoverso"/>
+ <cd:variable name="title" value="titolo"/>
+ <cd:variable name="margintitle" value="titoloinmargine"/>
+ <cd:variable name="content" value="indice"/>
+ <cd:variable name="contents" value="indici"/>
+ <cd:variable name="appendix" value="appendice"/>
+ <cd:variable name="appendices" value="appendici"/>
+ <cd:variable name="bodypart" value="testoprincipale"/>
+ <cd:variable name="bodymatter" value="testiprincipali"/>
+ <cd:variable name="frontpart" value="prefazione"/>
+ <cd:variable name="frontmatter" value="preambolo"/>
+ <cd:variable name="backpart" value="postfazione"/>
+ <cd:variable name="backmatter" value="postambolo"/>
+ <cd:variable name="footnote" value="notapdp"/>
+ <cd:variable name="endnote" value="endnote"/>
+ <cd:variable name="system" value="sistema"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="sottocapoverso"/>
+ <cd:variable name="subsubsection" value="sottosottocapoverso"/>
+ <cd:variable name="subsubsubsection" value="sottosottosottocapoverso"/>
+ <cd:variable name="subsubsubsubsection" value="sottosottosottosottocapoverso"/>
+ <cd:variable name="subsubsubsubsubsection" value="sottosottosottosottosottocapoverso"/>
+ <cd:variable name="subsubject" value="sottoargomento"/>
+ <cd:variable name="subsubsubject" value="sottosottoargomento"/>
+ <cd:variable name="subsubsubsubject" value="sottosottosottoargomento"/>
+ <cd:variable name="subsubsubsubsubject" value="sottosottosottosottoargomento"/>
+ <cd:variable name="subsubsubsubsubsubject" value="sottosottosottosottosottoargomento"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="flushleft"/>
+ <cd:variable name="flushright" value="flushright"/>
+ <cd:variable name="center" value="center"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="typing"/>
+ <cd:variable name="file" value="file"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="formulae" value="formule"/>
+ <cd:variable name="figure" value="figura"/>
+ <cd:variable name="figures" value="figure"/>
+ <cd:variable name="table" value="tabella"/>
+ <cd:variable name="tables" value="tabelle"/>
+ <cd:variable name="graphic" value="grafico"/>
+ <cd:variable name="graphics" value="grafici"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzi"/>
+ <cd:variable name="index" value="indiceanalitico"/>
+ <cd:variable name="indices" value="indicianalitici"/>
+ <cd:variable name="abbreviation" value="abbreviazione"/>
+ <cd:variable name="abbreviations" value="abbreviazioni"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="loghi"/>
+ <cd:variable name="unit" value="unita"/>
+ <cd:variable name="units" value="unita"/>
+ <cd:variable name="line" value="riga"/>
+ <cd:variable name="lines" value="righe"/>
+ <cd:variable name="framedtext" value="testoincorniciato"/>
+ <cd:variable name="quotation" value="citazione"/>
+ <cd:variable name="quote" value="menzione"/>
+ <cd:variable name="speech" value="speech"/>
+ <cd:variable name="itemize" value="elenco"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="citazionesinistra"/>
+ <cd:constant name="rightquotation" value="citazionedestra"/>
+ <cd:constant name="leftquote" value="menzionesinistra"/>
+ <cd:constant name="rightquote" value="menzionedestra"/>
+ <cd:constant name="compoundhyphen" value="compoundhyphen"/>
+ <cd:constant name="leftcompoundhyphen" value="leftcompoundhyphen"/>
+ <cd:constant name="rightcompoundhyphen" value="rightcompoundhyphen"/>
+ <cd:constant name="midsentence" value="midsentence"/>
+ <cd:constant name="leftsentence" value="frasesinistra"/>
+ <cd:constant name="rightsentence" value="frasedestra"/>
+ <cd:constant name="leftsubsentence" value="sottofrasesinistra"/>
+ <cd:constant name="rightsubsentence" value="sottofrasedestra"/>
+ <cd:constant name="leftspeech" value="leftspeech"/>
+ <cd:constant name="middlespeech" value="middlespeech"/>
+ <cd:constant name="rightspeech" value="rightspeech"/>
+ <cd:constant name="limittext" value="limittext"/>
+ <cd:constant name="date" value="data"/>
+ <cd:constant name="spacebefore" value="spazioprima"/>
+ <cd:constant name="spaceinbetween" value="spaceinbetween"/>
+ <cd:constant name="spaceafter" value="spaziodopo"/>
+ <cd:constant name="sidespacebefore" value="spaziolateraleprima"/>
+ <cd:constant name="sidespaceafter" value="spaziolateraledopo"/>
+ <cd:constant name="to" value="verso"/>
+ <cd:constant name="indicator" value="indicatore"/>
+ <cd:constant name="background" value="sfondo"/>
+ <cd:constant name="backgrounddepth" value="profonditasfondo"/>
+ <cd:constant name="backgroundcorner" value="angolosfondo"/>
+ <cd:constant name="splitcolor" value="splitcolor"/>
+ <cd:constant name="backgroundcolor" value="coloresfondo"/>
+ <cd:constant name="foregroundcolor" value="coloreprimopiano"/>
+ <cd:constant name="foregroundstyle" value="foregroundstyle"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="offsetsfondo"/>
+ <cd:constant name="backgroundscreen" value="schermosfondo"/>
+ <cd:constant name="backgroundradius" value="raggiosfondo"/>
+ <cd:constant name="address" value="indirizzo"/>
+ <cd:constant name="stopper" value="stopper"/>
+ <cd:constant name="distance" value="distanza"/>
+ <cd:constant name="paragraph" value="capoverso"/>
+ <cd:constant name="axis" value="asse"/>
+ <cd:constant name="author" value="autore"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="bilanciamento"/>
+ <cd:constant name="wfactor" value="wfactor"/>
+ <cd:constant name="inner" value="interno"/>
+ <cd:constant name="blank" value="rigovuoto"/>
+ <cd:constant name="obstruction" value="ostruzione"/>
+ <cd:constant name="blockway" value="blockway"/>
+ <cd:constant name="bottomspace" value="spaziofondo"/>
+ <cd:constant name="top" value="cima"/>
+ <cd:constant name="topdistance" value="distanzacima"/>
+ <cd:constant name="topframe" value="cornicecima"/>
+ <cd:constant name="topoffset" value="offsetcima"/>
+ <cd:constant name="topstate" value="statocima"/>
+ <cd:constant name="width" value="ampiezza"/>
+ <cd:constant name="maxwidth" value="ampiezzamax"/>
+ <cd:constant name="minwidth" value="ampiezzamin"/>
+ <cd:constant name="source" value="origine"/>
+ <cd:constant name="command" value="comando"/>
+ <cd:constant name="commands" value="comandi"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="colorecontrasto"/>
+ <cd:constant name="conversion" value="conversione"/>
+ <cd:constant name="headconversion" value="conversionetesta"/>
+ <cd:constant name="headlabel" value="etichettatesta"/>
+ <cd:constant name="criterium" value="criterio"/>
+ <cd:constant name="date" value="data"/>
+ <cd:constant name="default" value="implicito"/>
+ <cd:constant name="depth" value="profondita"/>
+ <cd:constant name="depthcorrection" value="correzioneprofondita"/>
+ <cd:constant name="continue" value="continua"/>
+ <cd:constant name="doublesided" value="doppiafaccia"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="unita"/>
+ <cd:constant name="ownnumber" value="numeroproprio"/>
+ <cd:constant name="evenmargin" value="marginepari"/>
+ <cd:constant name="expansion" value="espansione"/>
+ <cd:constant name="keyexpansion" value="keyexpansion"/>
+ <cd:constant name="factor" value="fattore"/>
+ <cd:constant name="convertfile" value="convertifile"/>
+ <cd:constant name="file" value="file"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="dimensione"/>
+ <cd:constant name="autofocus" value="autofocus"/>
+ <cd:constant name="focus" value="focus"/>
+ <cd:constant name="directory" value="directory"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="griglia"/>
+ <cd:constant name="big" value="grande"/>
+ <cd:constant name="get" value="prendi"/>
+ <cd:constant name="hang" value="sospendi"/>
+ <cd:constant name="repeat" value="ripeti"/>
+ <cd:constant name="hfactor" value="hfactor"/>
+ <cd:constant name="corner" value="angolo"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="cornici"/>
+ <cd:constant name="header" value="intestazione"/>
+ <cd:constant name="headerdistance" value="distanzaintestazione"/>
+ <cd:constant name="headerstate" value="statointestazione"/>
+ <cd:constant name="height" value="altezza"/>
+ <cd:constant name="maxheight" value="altezzamax"/>
+ <cd:constant name="minheight" value="altezzamin"/>
+ <cd:constant name="mindepth" value="mindeoth"/>
+ <cd:constant name="current" value="corrente"/>
+ <cd:constant name="in" value="in"/>
+ <cd:constant name="indenting" value="rientro"/>
+ <cd:constant name="interaction" value="interazione"/>
+ <cd:constant name="interlinespace" value="interlinea"/>
+ <cd:constant name="items" value="elementi"/>
+ <cd:constant name="frame" value="cornice"/>
+ <cd:constant name="framedepth" value="profonditacornice"/>
+ <cd:constant name="framecorner" value="angolocornice"/>
+ <cd:constant name="framecolor" value="colorecornice"/>
+ <cd:constant name="frameoffset" value="offsetcornice"/>
+ <cd:constant name="frameradius" value="raggiocornice"/>
+ <cd:constant name="marginedge" value="bordomargine"/>
+ <cd:constant name="marginedgetext" value="testobordomargine"/>
+ <cd:constant name="aligncharacter" value="allineacarattere"/>
+ <cd:constant name="alignmentcharacter" value="carattereallineamento"/>
+ <cd:constant name="small" value="piccolo"/>
+ <cd:constant name="color" value="colore"/>
+ <cd:constant name="column" value="colonna"/>
+ <cd:constant name="columns" value="colonne"/>
+ <cd:constant name="columndistance" value="distanzacolonne"/>
+ <cd:constant name="headcommand" value="headcommand"/>
+ <cd:constant name="headcolor" value="coloretesta"/>
+ <cd:constant name="headstyle" value="stiletesta"/>
+ <cd:constant name="afterhead" value="dopotesta"/>
+ <cd:constant name="veroffset" value="veroffset"/>
+ <cd:constant name="coupling" value="accoppiamento"/>
+ <cd:constant name="couplingway" value="modoaccoppiamento"/>
+ <cd:constant name="beforehead" value="primaditesta"/>
+ <cd:constant name="topspace" value="spaziocima"/>
+ <cd:constant name="bodyfont" value="fonttesto"/>
+ <cd:constant name="label" value="etichetta"/>
+ <cd:constant name="empty" value="vuoto"/>
+ <cd:constant name="style" value="stile"/>
+ <cd:constant name="rule" value="linea"/>
+ <cd:constant name="rulethickness" value="spessorelinea"/>
+ <cd:constant name="rulecolor" value="colorelinea"/>
+ <cd:constant name="list" value="elenco"/>
+ <cd:constant name="leftwidth" value="ampiezzasinistra"/>
+ <cd:constant name="leftframe" value="cornicesinistra"/>
+ <cd:constant name="leftcolor" value="coloresinistra"/>
+ <cd:constant name="leftstyle" value="stilesinistra"/>
+ <cd:constant name="leftmargin" value="marginesinistro"/>
+ <cd:constant name="leftmargindistance" value="distanzamarginesinistro"/>
+ <cd:constant name="leftoffset" value="offsetsinistro"/>
+ <cd:constant name="leftedge" value="bordosinistro"/>
+ <cd:constant name="leftedgedistance" value="distanzabordosinistro"/>
+ <cd:constant name="lefttext" value="testosinistro"/>
+ <cd:constant name="left" value="sinistra"/>
+ <cd:constant name="nleft" value="nsinistra"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="loghi"/>
+ <cd:constant name="local" value="locale"/>
+ <cd:constant name="margin" value="margine"/>
+ <cd:constant name="margindistance" value="distanzamargine"/>
+ <cd:constant name="margintext" value="testomargine"/>
+ <cd:constant name="marking" value="marcatura"/>
+ <cd:constant name="marcolor" value="coloremarcatura"/>
+ <cd:constant name="marstyle" value="stilemarcatura"/>
+ <cd:constant name="menu" value="menu"/>
+ <cd:constant name="splitmethod" value="splitmethod"/>
+ <cd:constant name="textmethod" value="textmethod"/>
+ <cd:constant name="sidemethod" value="sidemethod"/>
+ <cd:constant name="method" value="metodo"/>
+ <cd:constant name="middle" value="centro"/>
+ <cd:constant name="middletext" value="testocentro"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="campione"/>
+ <cd:constant name="after" value="dopo"/>
+ <cd:constant name="name" value="nome"/>
+ <cd:constant name="commandafter" value="comdandodopo"/>
+ <cd:constant name="ntop" value="ncima"/>
+ <cd:constant name="level" value="livello"/>
+ <cd:constant name="levels" value="livelli"/>
+ <cd:constant name="nbottom" value="nfondo"/>
+ <cd:constant name="norm" value="norma"/>
+ <cd:constant name="nlines" value="nrighe"/>
+ <cd:constant name="number" value="numero"/>
+ <cd:constant name="numbercommand" value="comandonumero"/>
+ <cd:constant name="numbering" value="numerazione"/>
+ <cd:constant name="numbercolor" value="colorenumero"/>
+ <cd:constant name="numberstyle" value="stilenumero"/>
+ <cd:constant name="numberseparator" value="separatorenumero"/>
+ <cd:constant name="object" value="oggetto"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="fondo"/>
+ <cd:constant name="bottomdistance" value="distanzafondo"/>
+ <cd:constant name="bottomframe" value="cornicefondo"/>
+ <cd:constant name="bottomoffset" value="offsetfondo"/>
+ <cd:constant name="bottomstate" value="statofondo"/>
+ <cd:constant name="oddmargin" value="marginedispari"/>
+ <cd:constant name="at" value="ad"/>
+ <cd:constant name="option" value="opzione"/>
+ <cd:constant name="page" value="pagina"/>
+ <cd:constant name="pagecommand" value="comandopagina"/>
+ <cd:constant name="pagecolor" value="colorepagina"/>
+ <cd:constant name="pagestyle" value="stilepagina"/>
+ <cd:constant name="pagenumber" value="numeropagina"/>
+ <cd:constant name="headnumber" value="numerotesta"/>
+ <cd:constant name="pageboundaries" value="limitipagina"/>
+ <cd:constant name="pagestate" value="statopagina"/>
+ <cd:constant name="palet" value="tavolozza"/>
+ <cd:constant name="paper" value="carta"/>
+ <cd:constant name="location" value="luogo"/>
+ <cd:constant name="placestopper" value="mettistopper"/>
+ <cd:constant name="place" value="metti"/>
+ <cd:constant name="placehead" value="mettitesta"/>
+ <cd:constant name="position" value="posizione"/>
+ <cd:constant name="prefix" value="prefisso"/>
+ <cd:constant name="preset" value="preimpostato"/>
+ <cd:constant name="preview" value="anteprima"/>
+ <cd:constant name="process" value="process"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="punto"/>
+ <cd:constant name="arrow" value="freccia"/>
+ <cd:constant name="edge" value="bordo"/>
+ <cd:constant name="edgedistance" value="distanzabordo"/>
+ <cd:constant name="screen" value="schermo"/>
+ <cd:constant name="rightwidth" value="ampiezzadestra"/>
+ <cd:constant name="rightframe" value="cornicedestra"/>
+ <cd:constant name="rightcolor" value="coloredestra"/>
+ <cd:constant name="rightstyle" value="stiledestra"/>
+ <cd:constant name="rightmargin" value="marginedestro"/>
+ <cd:constant name="rightmargindistance" value="distanzamarginedestro"/>
+ <cd:constant name="rightoffset" value="offsetdestro"/>
+ <cd:constant name="rightedge" value="bordodestro"/>
+ <cd:constant name="rightedgedistance" value="distanzabordodestro"/>
+ <cd:constant name="righttext" value="testodestro"/>
+ <cd:constant name="right" value="destra"/>
+ <cd:constant name="nright" value="ndestra"/>
+ <cd:constant name="reduction" value="riduzione"/>
+ <cd:constant name="referencing" value="referencing"/>
+ <cd:constant name="line" value="riga"/>
+ <cd:constant name="linecorrection" value="correzioneriga"/>
+ <cd:constant name="lines" value="righe"/>
+ <cd:constant name="stretch" value="dilata"/>
+ <cd:constant name="resolution" value="risoluzione"/>
+ <cd:constant name="rotation" value="rotazione"/>
+ <cd:constant name="orientation" value="orientation"/>
+ <cd:constant name="horoffset" value="horoffset"/>
+ <cd:constant name="backspace" value="backspace"/>
+ <cd:constant name="direction" value="direzione"/>
+ <cd:constant name="scale" value="scala"/>
+ <cd:constant name="separator" value="separatore"/>
+ <cd:constant name="display" value="display"/>
+ <cd:constant name="scope" value="scope"/>
+ <cd:constant name="section" value="sezione"/>
+ <cd:constant name="sectionnumber" value="numerosezione"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="cutspace"/>
+ <cd:constant name="family" value="famiglia"/>
+ <cd:constant name="space" value="spazio"/>
+ <cd:constant name="spacing" value="spaziatura"/>
+ <cd:constant name="split" value="separa"/>
+ <cd:constant name="splitoffset" value="splitoffset"/>
+ <cd:constant name="indentnext" value="rientrasuccessivo"/>
+ <cd:constant name="step" value="passo"/>
+ <cd:constant name="stack" value="stack"/>
+ <cd:constant name="start" value="inizia"/>
+ <cd:constant name="state" value="stato"/>
+ <cd:constant name="stop" value="termina"/>
+ <cd:constant name="radius" value="raggio"/>
+ <cd:constant name="dash" value="dash"/>
+ <cd:constant name="sub" value="sotto"/>
+ <cd:constant name="subtitle" value="sottotitolo"/>
+ <cd:constant name="symbol" value="simbolo"/>
+ <cd:constant name="symbolset" value="setsimboli"/>
+ <cd:constant name="symcolor" value="coloresimbolo"/>
+ <cd:constant name="symstyle" value="stilesimbolo"/>
+ <cd:constant name="synonym" value="sinonimo"/>
+ <cd:constant name="synonymcolor" value="coloresinonimi"/>
+ <cd:constant name="synonymstyle" value="stilesinonimi"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="segno"/>
+ <cd:constant name="text" value="testo"/>
+ <cd:constant name="listtext" value="listtext"/>
+ <cd:constant name="textwidth" value="ampiezzatesto"/>
+ <cd:constant name="textcommand" value="comandotesto"/>
+ <cd:constant name="textsize" value="dimensionetesto"/>
+ <cd:constant name="textcolor" value="coloretesto"/>
+ <cd:constant name="textstyle" value="stiletesto"/>
+ <cd:constant name="textseparator" value="separatoretesto"/>
+ <cd:constant name="textstate" value="statotesto"/>
+ <cd:constant name="title" value="titolo"/>
+ <cd:constant name="titlestyle" value="stiletitolo"/>
+ <cd:constant name="titlecolor" value="coloretitolo"/>
+ <cd:constant name="titledistance" value="distanzatitolo"/>
+ <cd:constant name="aligntitle" value="allineatitolo"/>
+ <cd:constant name="tolerance" value="tolleranza"/>
+ <cd:constant name="inbetween" value="tra"/>
+ <cd:constant name="type" value="type"/>
+ <cd:constant name="align" value="allinea"/>
+ <cd:constant name="urlspace" value="spaziourl"/>
+ <cd:constant name="urlalternative" value="alternativaurl"/>
+ <cd:constant name="from" value="da"/>
+ <cd:constant name="alternative" value="alternativa"/>
+ <cd:constant name="increment" value="incremento"/>
+ <cd:constant name="incrementnumber" value="incrementanumero"/>
+ <cd:constant name="resetnumber" value="resetnumber"/>
+ <cd:constant name="reference" value="riferimento"/>
+ <cd:constant name="unknownreference" value="riferimentoingoto"/>
+ <cd:constant name="footer" value="piedipagina"/>
+ <cd:constant name="footerdistance" value="distanzapdp"/>
+ <cd:constant name="footerstate" value="statopdp"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="successivo"/>
+ <cd:constant name="before" value="prima"/>
+ <cd:constant name="commandbefore" value="comandoprima"/>
+ <cd:constant name="previous" value="precedente"/>
+ <cd:constant name="previousnumber" value="numeroprecedente"/>
+ <cd:constant name="delay" value="attesa"/>
+ <cd:constant name="way" value="modo"/>
+ <cd:constant name="random" value="casuale"/>
+ <cd:constant name="white" value="bianco"/>
+ <cd:constant name="xfactor" value="xfactor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xscale"/>
+ <cd:constant name="xstep" value="xstep"/>
+ <cd:constant name="yfactor" value="yfactor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="yscale"/>
+ <cd:constant name="ystep" value="ystep"/>
+ <cd:constant name="samepage" value="stessapagina"/>
+ <cd:constant name="sidealign" value="sidealign"/>
+ <cd:constant name="side" value="lato"/>
+ <cd:constant name="fieldlayer" value="fieldlayer"/>
+ <cd:constant name="textlayer" value="textlayer"/>
+ <cd:constant name="fieldbackgroundcolor" value="coloresfondocampo"/>
+ <cd:constant name="fieldframecolor" value="colorecornicecampo"/>
+ <cd:constant name="fieldoffset" value="offsetcampo"/>
+ <cd:constant name="openaction" value="azioneapri"/>
+ <cd:constant name="closeaction" value="azionechiudi"/>
+ <cd:constant name="openpageaction" value="azioneapripagina"/>
+ <cd:constant name="closepageaction" value="azionechiudipagina"/>
+ <cd:constant name="clickin" value="clickdentro"/>
+ <cd:constant name="clickout" value="clickfuori"/>
+ <cd:constant name="regionin" value="entraregione"/>
+ <cd:constant name="regionout" value="esciregione"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusout"/>
+ <cd:constant name="afterkey" value="dopotasto"/>
+ <cd:constant name="format" value="format"/>
+ <cd:constant name="validate" value="verifica"/>
+ <cd:constant name="calculate" value="calcola"/>
+ <cd:constant name="click" value="click"/>
+ <cd:constant name="vcommand" value="vcomando"/>
+ <cd:constant name="icommand" value="icomando"/>
+ <cd:constant name="ccommand" value="ccomando"/>
+ <cd:constant name="textdistance" value="distanzatesto"/>
+ <cd:constant name="textmargin" value="textmargin"/>
+ <cd:constant name="keyword" value="parolachiave"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="attivo"/>
+ <cd:variable name="serried" value="vicino"/>
+ <cd:variable name="joinedup" value="unito"/>
+ <cd:variable name="absolute" value="assoluto"/>
+ <cd:variable name="background" value="sfondo"/>
+ <cd:variable name="backward" value="indietro"/>
+ <cd:variable name="subbackward" value="sottoindietro"/>
+ <cd:variable name="action" value="azione"/>
+ <cd:variable name="stopper" value="stopper"/>
+ <cd:variable name="paragraph" value="capoverso"/>
+ <cd:variable name="all" value="tutti"/>
+ <cd:variable name="always" value="sempre"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autointro"/>
+ <cd:variable name="both" value="entrambi"/>
+ <cd:variable name="inner" value="interno"/>
+ <cd:variable name="blank" value="rigovuoto"/>
+ <cd:variable name="disable" value="disattiva"/>
+ <cd:variable name="top" value="cima"/>
+ <cd:variable name="wide" value="ampio"/>
+ <cd:variable name="width" value="ampiezza"/>
+ <cd:variable name="outer" value="esterno"/>
+ <cd:variable name="numbers" value="numeri"/>
+ <cd:variable name="Numbers" value="Numeri"/>
+ <cd:variable name="command" value="comando"/>
+ <cd:variable name="commands" value="comandi"/>
+ <cd:variable name="concept" value="concetto"/>
+ <cd:variable name="day" value="giorno"/>
+ <cd:variable name="date" value="data"/>
+ <cd:variable name="default" value="implicito"/>
+ <cd:variable name="final" value="finale"/>
+ <cd:variable name="depth" value="profondita"/>
+ <cd:variable name="doublesided" value="doppiafaccia"/>
+ <cd:variable name="first" value="primo"/>
+ <cd:variable name="each" value="ogni"/>
+ <cd:variable name="singlesided" value="facciasingola"/>
+ <cd:variable name="somewhere" value="daqualcheparte"/>
+ <cd:variable name="nowhere" value="danessunaparte"/>
+ <cd:variable name="even" value="pari"/>
+ <cd:variable name="external" value="esterno"/>
+ <cd:variable name="file" value="file"/>
+ <cd:variable name="flexible" value="flessibile"/>
+ <cd:variable name="force" value="forza"/>
+ <cd:variable name="used" value="usato"/>
+ <cd:variable name="none" value="nessuno"/>
+ <cd:variable name="nomarking" value="nomarcature"/>
+ <cd:variable name="nonumber" value="nonumber"/>
+ <cd:variable name="nowhite" value="nobianco"/>
+ <cd:variable name="rotated" value="ruotato"/>
+ <cd:variable name="mirrored" value="riflesso"/>
+ <cd:variable name="global" value="globale"/>
+ <cd:variable name="grid" value="griglia"/>
+ <cd:variable name="big" value="grande"/>
+ <cd:variable name="bigbodyfont" value="grossofontdeltesto"/>
+ <cd:variable name="bigpreference" value="grandepreferenza"/>
+ <cd:variable name="gray" value="grigio"/>
+ <cd:variable name="halfline" value="mezzariga"/>
+ <cd:variable name="keep" value="mantieni"/>
+ <cd:variable name="hanging" value="sospeso"/>
+ <cd:variable name="spacing" value="spaziatura"/>
+ <cd:variable name="nospacing" value="nospacing"/>
+ <cd:variable name="repeat" value="ripeti"/>
+ <cd:variable name="fix" value="fisso"/>
+ <cd:variable name="here" value="qui"/>
+ <cd:variable name="header" value="intestazione"/>
+ <cd:variable name="high" value="alto"/>
+ <cd:variable name="height" value="altezza"/>
+ <cd:variable name="horizontal" value="orizzontale"/>
+ <cd:variable name="current" value="corrente"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="nohz"/>
+ <cd:variable name="italic" value="corsivo"/>
+ <cd:variable name="inherit" value="inherit"/>
+ <cd:variable name="inleft" value="insinistra"/>
+ <cd:variable name="inmargin" value="inmargine"/>
+ <cd:variable name="inright" value="indestra"/>
+ <cd:variable name="interaction" value="interazione"/>
+ <cd:variable name="intext" value="intesto"/>
+ <cd:variable name="intro" value="intro"/>
+ <cd:variable name="its" value="its"/>
+ <cd:variable name="yes" value="si"/>
+ <cd:variable name="year" value="anno"/>
+ <cd:variable name="frame" value="cornice"/>
+ <cd:variable name="marginedge" value="bordomargine"/>
+ <cd:variable name="cap" value="cap"/>
+ <cd:variable name="capital" value="maiuscolo"/>
+ <cd:variable name="referral" value="referral"/>
+ <cd:variable name="small" value="piccolo"/>
+ <cd:variable name="smallnormal" value="piccolonormale"/>
+ <cd:variable name="smallslanted" value="piccoloinclinato"/>
+ <cd:variable name="smallslantedbold" value="piccoloinclinatograssetto"/>
+ <cd:variable name="smallitalic" value="piccolocorsivo"/>
+ <cd:variable name="smallitalicbold" value="piccolocorsivograssetto"/>
+ <cd:variable name="smalltype" value="piccolotype"/>
+ <cd:variable name="smallbold" value="piccolograssetto"/>
+ <cd:variable name="smallboldslanted" value="piccolograssettoinclinato"/>
+ <cd:variable name="smallbolditalic" value="piccolograssettocorsivo"/>
+ <cd:variable name="smallbodyfont" value="piccolofontdelcorpo"/>
+ <cd:variable name="toggle" value="toggle"/>
+ <cd:variable name="color" value="colore"/>
+ <cd:variable name="column" value="colonna"/>
+ <cd:variable name="columns" value="colonne"/>
+ <cd:variable name="head" value="testa"/>
+ <cd:variable name="low" value="basso"/>
+ <cd:variable name="last" value="ultimo"/>
+ <cd:variable name="label" value="etichetta"/>
+ <cd:variable name="lohi" value="pedap"/>
+ <cd:variable name="tall" value="alto"/>
+ <cd:variable name="empty" value="vuoto"/>
+ <cd:variable name="Character" value="Lettera"/>
+ <cd:variable name="character" value="lettera"/>
+ <cd:variable name="Characters" value="Lettere"/>
+ <cd:variable name="characters" value="lettere"/>
+ <cd:variable name="landscape" value="orizzontale"/>
+ <cd:variable name="rule" value="linea"/>
+ <cd:variable name="list" value="elenco"/>
+ <cd:variable name="leftmargin" value="marginesinistro"/>
+ <cd:variable name="leftpage" value="paginasinistra"/>
+ <cd:variable name="leftedge" value="bordosinistro"/>
+ <cd:variable name="left" value="sinistra"/>
+ <cd:variable name="local" value="locale"/>
+ <cd:variable name="new" value="nuovo"/>
+ <cd:variable name="MONTH" value="MESE"/>
+ <cd:variable name="month" value="mese"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="margine"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="medievale"/>
+ <cd:variable name="medium" value="medio"/>
+ <cd:variable name="middle" value="centro"/>
+ <cd:variable name="after" value="dopo"/>
+ <cd:variable name="name" value="nome"/>
+ <cd:variable name="opposite" value="opposto"/>
+ <cd:variable name="no" value="no"/>
+ <cd:variable name="negative" value="negativo"/>
+ <cd:variable name="positive" value="positivo"/>
+ <cd:variable name="not" value="non"/>
+ <cd:variable name="never" value="mai"/>
+ <cd:variable name="normal" value="normale"/>
+ <cd:variable name="number" value="numero"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="ignoto"/>
+ <cd:variable name="bottom" value="fondo"/>
+ <cd:variable name="odd" value="dispari"/>
+ <cd:variable name="packed" value="impaccato"/>
+ <cd:variable name="unpacked" value="unpacked"/>
+ <cd:variable name="makeup" value="makeup"/>
+ <cd:variable name="atmargin" value="almargine"/>
+ <cd:variable name="overlay" value="sovrapponi"/>
+ <cd:variable name="page" value="pagina"/>
+ <cd:variable name="pagenumber" value="numeropagina"/>
+ <cd:variable name="paper" value="carta"/>
+ <cd:variable name="display" value="schermo"/>
+ <cd:variable name="reverse" value="invertito"/>
+ <cd:variable name="fit" value="adatta"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="anteprima"/>
+ <cd:variable name="program" value="programma"/>
+ <cd:variable name="process" value="process"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="punto"/>
+ <cd:variable name="ran" value="corse"/>
+ <cd:variable name="edge" value="bordo"/>
+ <cd:variable name="screen" value="schermo"/>
+ <cd:variable name="rectangular" value="rettangolare"/>
+ <cd:variable name="rightmargin" value="marginedestro"/>
+ <cd:variable name="rightpage" value="paginadestra"/>
+ <cd:variable name="rightedge" value="bordodestro"/>
+ <cd:variable name="right" value="destra"/>
+ <cd:variable name="line" value="riga"/>
+ <cd:variable name="register" value="registro"/>
+ <cd:variable name="relative" value="relativo"/>
+ <cd:variable name="reset" value="reimposta"/>
+ <cd:variable name="Romannumerals" value="Numeriromani"/>
+ <cd:variable name="romannumerals" value="numeriromani"/>
+ <cd:variable name="greek" value="greco"/>
+ <cd:variable name="Greek" value="Greco"/>
+ <cd:variable name="round" value="rotondo"/>
+ <cd:variable name="rotate" value="ruota"/>
+ <cd:variable name="stretch" value="dilata"/>
+ <cd:variable name="backspace" value="backspace"/>
+ <cd:variable name="broad" value="ampio"/>
+ <cd:variable name="row" value="row"/>
+ <cd:variable name="slanted" value="inclinato"/>
+ <cd:variable name="slantedbold" value="inclinatograssetto"/>
+ <cd:variable name="synchronize" value="synchronize"/>
+ <cd:variable name="italicbold" value="corsivograssetto"/>
+ <cd:variable name="sectionnumber" value="numerosezione"/>
+ <cd:variable name="narrow" value="stretto"/>
+ <cd:variable name="cutspace" value="cutspace"/>
+ <cd:variable name="tolerant" value="tollerante"/>
+ <cd:variable name="space" value="spazio"/>
+ <cd:variable name="standard" value="standard"/>
+ <cd:variable name="start" value="inizia"/>
+ <cd:variable name="stop" value="termina"/>
+ <cd:variable name="strict" value="rigido"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="sotto"/>
+ <cd:variable name="sym" value="sim"/>
+ <cd:variable name="symbol" value="simbolo"/>
+ <cd:variable name="text" value="testo"/>
+ <cd:variable name="back" value="dietro"/>
+ <cd:variable name="test" value="test"/>
+ <cd:variable name="inbetween" value="tra"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="off" value="disattivo"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="fisso"/>
+ <cd:variable name="loose" value="lento"/>
+ <cd:variable name="continue" value="continua"/>
+ <cd:variable name="vertical" value="verticale"/>
+ <cd:variable name="bold" value="grassetto"/>
+ <cd:variable name="boldslanted" value="grassettoinclinato"/>
+ <cd:variable name="bolditalic" value="grassettocorsivo"/>
+ <cd:variable name="quadruple" value="quadruplo"/>
+ <cd:variable name="footer" value="piedipagina"/>
+ <cd:variable name="next" value="successivo"/>
+ <cd:variable name="before" value="prima"/>
+ <cd:variable name="foreground" value="foreground"/>
+ <cd:variable name="preference" value="preferenza"/>
+ <cd:variable name="temporary" value="temporaneo"/>
+ <cd:variable name="forward" value="avanti"/>
+ <cd:variable name="subforward" value="sottoavanti"/>
+ <cd:variable name="previous" value="precedente"/>
+ <cd:variable name="value" value="valore"/>
+ <cd:variable name="week" value="settimana"/>
+ <cd:variable name="weekday" value="giornosettimana"/>
+ <cd:variable name="WEEKDAY" value="GIORNOSETTIMANA"/>
+ <cd:variable name="random" value="casuale"/>
+ <cd:variable name="white" value="bianco"/>
+ <cd:variable name="very" value="molto"/>
+ <cd:variable name="verytolerant" value="moltotollerante"/>
+ <cd:variable name="verystrict" value="moltorigido"/>
+ <cd:variable name="see" value="vedi"/>
+ <cd:variable name="smallcaps" value="maiuscoletto"/>
+ <cd:variable name="WORD" value="PAROLA"/>
+ <cd:variable name="firstpage" value="primapagina"/>
+ <cd:variable name="firstcolumn" value="firstcolumn"/>
+ <cd:variable name="previouspage" value="paginaprecedente"/>
+ <cd:variable name="nextpage" value="paginasuccessiva"/>
+ <cd:variable name="lastpage" value="ultimapagina"/>
+ <cd:variable name="lastcolumn" value="lastcolumn"/>
+ <cd:variable name="lastpagenumber" value="lastpagenumber"/>
+ <cd:variable name="subpage" value="sottopagina"/>
+ <cd:variable name="firstsubpage" value="primasottopagina"/>
+ <cd:variable name="previoussubpage" value="sottopaginaprecedente"/>
+ <cd:variable name="nextsubpage" value="sottopaginasuccessiva"/>
+ <cd:variable name="lastsubpage" value="ultimasottopagina"/>
+ <cd:variable name="nextevenpage" value="paginaparisuccessiva"/>
+ <cd:variable name="nextoddpage" value="paginadisparisuccessiva"/>
+ <cd:variable name="previousevenpage" value="paginapariprecedente"/>
+ <cd:variable name="previousoddpage" value="paginadispariprecedente"/>
+ <cd:variable name="readonly" value="solalettura"/>
+ <cd:variable name="required" value="richiestp"/>
+ <cd:variable name="protected" value="protetto"/>
+ <cd:variable name="sorted" value="ordinato"/>
+ <cd:variable name="unavailable" value="nondisponibile"/>
+ <cd:variable name="hidden" value="nascosto"/>
+ <cd:variable name="printable" value="stampabile"/>
+ <cd:variable name="bookmark" value="segnalibro"/>
+ <cd:variable name="nocheck" value="nocheck"/>
+ <cd:variable name="innermargin" value="margineinterno"/>
+ <cd:variable name="outermargin" value="margineesterno"/>
+ <cd:variable name="inneredge" value="bordointerno"/>
+ <cd:variable name="outeredge" value="bordoesterno"/>
+ <cd:variable name="controls" value="controlli"/>
+ <cd:variable name="nothanging" value="nonsospeso"/>
+ <cd:variable name="hyphenated" value="sillabato"/>
+ <cd:variable name="nothyphenated" value="nonsillabato"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="enumerazione"/>
+ <cd:variable name="description" value="descrizione"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="controlli"/>
+ <cd:constant name="global" value="globale"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="coversione"/>
+ <cd:variable name="by" value="da"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="calligrafico"/>
+ <cd:variable name="handwritten" value="grafiamanuale"/>
+ <cd:variable name="sansserif" value="sansserif"/>
+ <cd:variable name="roman" value="roman"/>
+ <cd:variable name="teletype" value="teletype"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="regolare"/>
+ <cd:variable name="support" value="supporto"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="inizio"/>
+ <cd:element name="end" value="fine"/>
+ <cd:element name="coupled" value="accoppiato"/>
+ <cd:element name="get" value="prendi"/>
+ <cd:element name="currentlocal" value="correntelocale"/>
+ <cd:element name="endsetup" value="endsetup"/>
+ <cd:element name="load" value="carica"/>
+ <cd:element name="emptyone" value="prazdne"/>
+ <cd:element name="emptytwo" value="vuoti"/>
+ <cd:element name="list" value="elenco"/>
+ <cd:element name="listof" value="elencodi"/>
+ <cd:element name="local" value="locale"/>
+ <cd:element name="place" value="metti"/>
+ <cd:element name="reserve" value="riserva"/>
+ <cd:element name="start" value="inizia"/>
+ <cd:element name="setup" value="imposta"/>
+ <cd:element name="stop" value="termina"/>
+ <cd:element name="increment" value="incrementa"/>
+ <cd:element name="next" value="successivo"/>
+ <cd:element name="complete" value="completo"/>
+ <cd:element name="previous" value="precedente"/>
+ <cd:element name="previouslocal" value="precedentelocale"/>
+ <cd:element name="see" value="vedi"/>
+ <cd:element name="type" value="type"/>
+ <cd:element name="makeup" value="makeup"/>
+ <cd:element name="text" value="testo"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="buffer"/>
+ <cd:variable name="linenote" value="linenote"/>
+ <cd:variable name="comment" value="commento"/>
+ <cd:variable name="interactionmenu" value="menuinterattivo"/>
+ <cd:variable name="postponing" value="posporre"/>
+ <cd:variable name="hiding" value="nascondere"/>
+ <cd:variable name="tabulate" value="tabulato"/>
+ <cd:variable name="tabulatehead" value="testatabulato"/>
+ <cd:variable name="tabulatetail" value="codatabulato"/>
+ <cd:variable name="fact" value="fatto"/>
+ <cd:variable name="legend" value="legenda"/>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="tablehead" value="testatabella"/>
+ <cd:variable name="tabletail" value="codatabella"/>
+ <cd:variable name="setups" value="nastaveni"/>
+ <cd:variable name="helptext" value="testoaiuto"/>
+ <cd:variable name="localenvironment" value="ambientelocale"/>
+ <cd:variable name="sectionblockenvironment" value="ambientebloccosezione"/>
+ <cd:variable name="pagecomment" value="commentopagina"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="PrimaPagina"/>
+ <cd:variable name="PreviousPage" value="PaginaPrecedente"/>
+ <cd:variable name="NextPage" value="PaginaSuccessiva"/>
+ <cd:variable name="LastPage" value="UltimaPagina"/>
+ <cd:variable name="PreviousJump" value="SaltoPrecedente"/>
+ <cd:variable name="NextJump" value="SaltoSuccessivo"/>
+ <cd:variable name="ToggleViewer" value="ScambiaVisualizzatore"/>
+ <cd:variable name="ExitViewer" value="EsciVisualizzatore"/>
+ <cd:variable name="CloseDocument" value="ChiudiDocumento"/>
+ <cd:variable name="SaveDocument" value="SalvaDocumento"/>
+ <cd:variable name="SaveNamedDocument" value="SaveNamedDocument"/>
+ <cd:variable name="OpenNamedDocument" value="OpenNamedDocument"/>
+ <cd:variable name="ViewerHelp" value="AiutoVisualizzatore"/>
+ <cd:variable name="PrintDocument" value="StampaDocumento"/>
+ <cd:variable name="SearchDocument" value="CercaDocumento"/>
+ <cd:variable name="SearchAgain" value="CercaAncora"/>
+ <cd:variable name="Query" value="Richiesta"/>
+ <cd:variable name="QueryAgain" value="RinnovaRichiesta"/>
+ <cd:variable name="GotoPage" value="VaiAPagina"/>
+ <cd:variable name="StartMovie" value="IniziaFilm"/>
+ <cd:variable name="StopMovie" value="FermaFilm"/>
+ <cd:variable name="PauseMovie" value="PausaFilm"/>
+ <cd:variable name="ResumeMovie" value="RiprendiFilm"/>
+ <cd:variable name="StartSound" value="IniziaSuono"/>
+ <cd:variable name="StopSound" value="FermaSuono"/>
+ <cd:variable name="PauseSound" value="PausaSuono"/>
+ <cd:variable name="ResumeSound" value="RiprendiSuono"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauseRendering"/>
+ <cd:variable name="ResumeRendering" value="ResumeRendering"/>
+ <cd:variable name="SaveForm" value="SalvaForm"/>
+ <cd:variable name="LoadForm" value="CaricaForm"/>
+ <cd:variable name="ResetForm" value="ReimpostaForm"/>
+ <cd:variable name="SubmitForm" value="MandaForm"/>
+ <cd:variable name="HideField" value="NascondiCampo"/>
+ <cd:variable name="ShowField" value="MostraCampo"/>
+ <cd:variable name="FitWidth" value="FitWidth"/>
+ <cd:variable name="FitHeight" value="FitHeight"/>
+ <cd:variable name="HideLayer" value="HideLayer"/>
+ <cd:variable name="VideLayer" value="VideLayer"/>
+ <cd:variable name="ToggleLayer" value="ToggleLayer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="Nuovo"/>
+ <cd:variable name="Balloon" value="Pallone"/>
+ <cd:variable name="Addition" value="Aggiunta"/>
+ <cd:variable name="Help" value="Aiuto"/>
+ <cd:variable name="Paragraph" value="Capoverso"/>
+ <cd:variable name="Key" value="Tasto"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="lingua"/>
+ <cd:command name="mainlanguage" value="linguaprincipale"/>
+ <cd:command name="translate" value="traduci"/>
+ <cd:command name="installlanguage" value="installalingua"/>
+ <cd:command name="setuplanguage" value="impostalingua"/>
+ <cd:command name="showmakeup" value="mostramakeup"/>
+ <cd:command name="useencoding" value="usacodifica"/>
+ <cd:command name="usespecials" value="usaspecialita"/>
+ <cd:command name="defineoutput" value="definiscioutput"/>
+ <cd:command name="setupoutput" value="impostaoutput"/>
+ <cd:command name="defineaccent" value="definisciaccento"/>
+ <cd:command name="definecharacter" value="definiscicarattere"/>
+ <cd:command name="definecommand" value="definiscicomando"/>
+ <cd:command name="startcoding" value="iniziacodifica"/>
+ <cd:command name="stopcoding" value="terminacodifica"/>
+ <cd:command name="definebodyfontenvironment" value="definisciambientefontdeltesto"/>
+ <cd:command name="setupbodyfontenvironment" value="impostaambientefontdeltesto"/>
+ <cd:command name="definebodyfont" value="definiscifontdeltesto"/>
+ <cd:command name="definefont" value="definiscifont"/>
+ <cd:command name="definefontsynonym" value="definiscisinonimofont"/>
+ <cd:command name="definestyle" value="definiscistile"/>
+ <cd:command name="definefontstyle" value="definiscistilefont"/>
+ <cd:command name="setupstrut" value="impostastrut"/>
+ <cd:command name="setuptype" value="impostatype"/>
+ <cd:command name="type" value="type"/>
+ <cd:command name="typ" value="typ"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definiscityping"/>
+ <cd:command name="definetype" value="definiscitype"/>
+ <cd:command name="setuptyping" value="impostatyping"/>
+ <cd:command name="typefile" value="typefile"/>
+ <cd:command name="setupfootnotes" value="impostanotepdp"/>
+ <cd:command name="setupfootnotedefinition" value="impostadefinizionenotepdp"/>
+ <cd:command name="note" value="nota"/>
+ <cd:command name="footnote" value="notapdp"/>
+ <cd:command name="footnotetext" value="testonotapdp"/>
+ <cd:command name="startlocalfootnotes" value="inizianotepdplocali"/>
+ <cd:command name="stoplocalfootnotes" value="terminanotepdplocali"/>
+ <cd:command name="placelocalfootnotes" value="mettinotepdplocali"/>
+ <cd:command name="placefootnotes" value="mettinotepdp"/>
+ <cd:command name="currentdate" value="datadioggi"/>
+ <cd:command name="date" value="data"/>
+ <cd:command name="weekday" value="giornosettimana"/>
+ <cd:command name="WEEKDAY" value="GIORNOSETTIMANA"/>
+ <cd:command name="month" value="mese"/>
+ <cd:command name="MONTH" value="MESE"/>
+ <cd:command name="Numbers" value="Numeri"/>
+ <cd:command name="numbers" value="numeri"/>
+ <cd:command name="romannumerals" value="numeriromani"/>
+ <cd:command name="Romannumerals" value="Numeriromani"/>
+ <cd:command name="character" value="lettera"/>
+ <cd:command name="Character" value="Lettera"/>
+ <cd:command name="characters" value="lettere"/>
+ <cd:command name="Characters" value="Lettere"/>
+ <cd:command name="unknown" value="ignoto"/>
+ <cd:command name="definesymbol" value="definiscisimbolo"/>
+ <cd:command name="definefiguresymbol" value="definiscifigurasimbolo"/>
+ <cd:command name="symbol" value="simbolo"/>
+ <cd:command name="setupsymbolset" value="impostasetsimboli"/>
+ <cd:command name="showsymbolset" value="mostrasetsimboli"/>
+ <cd:command name="startsymbolset" value="iniziasetsimboli"/>
+ <cd:command name="usesymbols" value="usasimboli"/>
+ <cd:command name="defineconversion" value="definisciconversione"/>
+ <cd:command name="convertnumber" value="convertinumero"/>
+ <cd:command name="setupcapitals" value="impostamaiuscole"/>
+ <cd:command name="smallcapped" value="cap"/>
+ <cd:command name="notsmallcapped" value="nocap"/>
+ <cd:command name="CAPPED" value="CAP"/>
+ <cd:command name="SmallCapped" value="Cap"/>
+ <cd:command name="SmallCaps" value="Caps"/>
+ <cd:command name="WORD" value="PAROLA"/>
+ <cd:command name="WORDS" value="PAROLE"/>
+ <cd:command name="Word" value="Parola"/>
+ <cd:command name="Words" value="Parole"/>
+ <cd:command name="stretched" value="stirato"/>
+ <cd:command name="overstrike" value="sbarrato"/>
+ <cd:command name="overstrikes" value="sbarrati"/>
+ <cd:command name="overbar" value="sopralinea"/>
+ <cd:command name="overbars" value="sopralinee"/>
+ <cd:command name="underbar" value="sottolinea"/>
+ <cd:command name="underbars" value="sottolinee"/>
+ <cd:command name="setupunderbar" value="impostasottolinea"/>
+ <cd:command name="setupbodyfont" value="impostafontdeltesto"/>
+ <cd:command name="switchtobodyfont" value="cambiaafontdeltesto"/>
+ <cd:command name="showbodyfont" value="mostrafontdeltesto"/>
+ <cd:command name="showbodyfontenvironment" value="mostraambientefontdeltesto"/>
+ <cd:command name="headtext" value="testoinstestazioni"/>
+ <cd:command name="labeltext" value="testoetichetta"/>
+ <cd:command name="LABELTEXT" value="TESTOETICHETTA"/>
+ <cd:command name="setupheadtext" value="impostatestointestazioni"/>
+ <cd:command name="setuplabeltext" value="impostatestoetichette"/>
+ <cd:command name="marginrule" value="lineamargine"/>
+ <cd:command name="startmarginrule" value="inizialineamargine"/>
+ <cd:command name="stopmarginrule" value="terminalineamargine"/>
+ <cd:command name="setupmarginrules" value="impostalineemargine"/>
+ <cd:command name="blackrule" value="lineanera"/>
+ <cd:command name="blackrules" value="lineenere"/>
+ <cd:command name="setupblackrules" value="impostalineenere"/>
+ <cd:command name="setupscreens" value="impostaschermi"/>
+ <cd:command name="framed" value="incorniciato"/>
+ <cd:command name="inframed" value="circondato"/>
+ <cd:command name="mframed" value="maframed"/>
+ <cd:command name="inmframed" value="inmaframed"/>
+ <cd:command name="setupframed" value="impostaincorniciato"/>
+ <cd:command name="setuplinewidth" value="impostaampiezzariga"/>
+ <cd:command name="setupthinrules" value="impostalineesottili"/>
+ <cd:command name="thinrule" value="lineasottile"/>
+ <cd:command name="thinrules" value="lineesottili"/>
+ <cd:command name="hairline" value="capello"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="definisciincorniciato"/>
+ <cd:command name="defineframedtext" value="definiscitestoincorniciato"/>
+ <cd:command name="setupframedtexts" value="impostatestiincorniciati"/>
+ <cd:command name="defineoverlay" value="definiscisovrapposizione"/>
+ <cd:command name="definelayer" value="definelayer"/>
+ <cd:command name="background" value="sfondo"/>
+ <cd:command name="startbackground" value="iniziasfondo"/>
+ <cd:command name="stopbackground" value="terminasfondo"/>
+ <cd:command name="setupbackground" value="impostasfondo"/>
+ <cd:command name="fillinrules" value="lineeriempimento"/>
+ <cd:command name="setupfillinrules" value="impostalineeriempimento"/>
+ <cd:command name="fillintext" value="testoriempimento"/>
+ <cd:command name="setupfillinlines" value="impostarigheriempimento"/>
+ <cd:command name="fillinline" value="rigariempimento"/>
+ <cd:command name="setuptextrules" value="impostalineetesto"/>
+ <cd:command name="textrule" value="lineatesto"/>
+ <cd:command name="starttextrule" value="inizialineatesto"/>
+ <cd:command name="stoptextrule" value="terminalineatesto"/>
+ <cd:command name="usemodule" value="usamodulo"/>
+ <cd:command name="usemodules" value="usamoduli"/>
+ <cd:command name="starttext" value="iniziatesto"/>
+ <cd:command name="stoptext" value="terminatesto"/>
+ <cd:command name="margintitle" value="titoloinmargine"/>
+ <cd:command name="marginword" value="parolainmargine"/>
+ <cd:command name="margintext" value="testoinmargine"/>
+ <cd:command name="inleft" value="insinistra"/>
+ <cd:command name="inmargin" value="inmargine"/>
+ <cd:command name="inothermargin" value="inaltromargine"/>
+ <cd:command name="inright" value="indestra"/>
+ <cd:command name="ininner" value="ininner"/>
+ <cd:command name="inouter" value="inouter"/>
+ <cd:command name="startmarginblock" value="iniziabloccomargine"/>
+ <cd:command name="stopmarginblock" value="terminabloccomargine"/>
+ <cd:command name="defineinmargin" value="defineinmargin"/>
+ <cd:command name="setupinmargin" value="impostainmargine"/>
+ <cd:command name="setupmarginblocks" value="impostablocchimargine"/>
+ <cd:command name="inleftedge" value="inlatosinistro"/>
+ <cd:command name="inleftmargin" value="inmarginesinistro"/>
+ <cd:command name="inrightmargin" value="inmarginedestro"/>
+ <cd:command name="inrightedge" value="inlatodestro"/>
+ <cd:command name="atleftmargin" value="atleftmargin"/>
+ <cd:command name="atrightmargin" value="atrightmargin"/>
+ <cd:command name="wordright" value="paroladestra"/>
+ <cd:command name="defineblank" value="definiscirigovuoto"/>
+ <cd:command name="blank" value="rigovuoto"/>
+ <cd:command name="setupblank" value="impostarigovuoto"/>
+ <cd:command name="correctwhitespace" value="correggispaziobianco"/>
+ <cd:command name="fixedspaces" value="spazifissi"/>
+ <cd:command name="fixedspace" value="spaziofisso"/>
+ <cd:command name="nospace" value="nientespazio"/>
+ <cd:command name="space" value="spazio"/>
+ <cd:command name="nowhitespace" value="nientespaziobianco"/>
+ <cd:command name="packed" value="impaccato"/>
+ <cd:command name="startpacked" value="iniziaimpaccato"/>
+ <cd:command name="stoppacked" value="terminaimpaccato"/>
+ <cd:command name="startunpacked" value="iniziaunpacked"/>
+ <cd:command name="stopunpacked" value="terminaunpacked"/>
+ <cd:command name="startlinecorrection" value="iniziacorrezioneriga"/>
+ <cd:command name="stoplinecorrection" value="terminacorrezioneriga"/>
+ <cd:command name="godown" value="vaigiu"/>
+ <cd:command name="whitespace" value="spaziobianco"/>
+ <cd:command name="noindenting" value="nienterientro"/>
+ <cd:command name="indenting" value="rientro"/>
+ <cd:command name="setupindenting" value="impostarientro"/>
+ <cd:command name="startalignment" value="iniziaallineamento"/>
+ <cd:command name="stopalignment" value="terminaallineamento"/>
+ <cd:command name="startlines" value="iniziarighe"/>
+ <cd:command name="stoplines" value="terminarighe"/>
+ <cd:command name="setupparagraphnumbering" value="impostanumerazionecapoversi"/>
+ <cd:command name="setuplinenumbering" value="impostanumerazionerighe"/>
+ <cd:command name="startlinenumbering" value="inizianumerazionerighe"/>
+ <cd:command name="stoplinenumbering" value="terminanumerazionerighe"/>
+ <cd:command name="startline" value="iniziariga"/>
+ <cd:command name="stopline" value="terminariga"/>
+ <cd:command name="someline" value="qualcheriga"/>
+ <cd:command name="inline" value="inriga"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="emptylines"/>
+ <cd:command name="setuplines" value="impostarighe"/>
+ <cd:command name="startnarrower" value="iniziapiustretto"/>
+ <cd:command name="stopnarrower" value="terminapiustretto"/>
+ <cd:command name="setupnarrower" value="impostapiustretto"/>
+ <cd:command name="definetabulate" value="definiscitabulato"/>
+ <cd:command name="setuptabulate" value="impostatabulato"/>
+ <cd:command name="starttable" value="iniziatabella"/>
+ <cd:command name="stoptable" value="terminatabella"/>
+ <cd:command name="starttables" value="iniziatabelle"/>
+ <cd:command name="stoptables" value="terminatabelle"/>
+ <cd:command name="setuptables" value="impostatabelle"/>
+ <cd:command name="definetabletemplate" value="definiscimodellotabella"/>
+ <cd:command name="page" value="pagina"/>
+ <cd:command name="testcolumn" value="testcolumn"/>
+ <cd:command name="testpage" value="testpage"/>
+ <cd:command name="couplepage" value="accoppiapagina"/>
+ <cd:command name="pagetype" value="tipopagina"/>
+ <cd:command name="processpage" value="elaborapagina"/>
+ <cd:command name="couplepaper" value="accoppiacarta"/>
+ <cd:command name="selectpaper" value="selezionacarta"/>
+ <cd:command name="screen" value="schermo"/>
+ <cd:command name="definesection" value="definiscisezione"/>
+ <cd:command name="definesectionblock" value="definiscibloccosezione"/>
+ <cd:command name="setupsectionblock" value="impostabloccosezione"/>
+ <cd:command name="setupsection" value="impostasezione"/>
+ <cd:command name="notopandbottomlines" value="nientelineecimafondo"/>
+ <cd:command name="noheaderandfooterlines" value="nientelineintestazionepdp"/>
+ <cd:command name="setuptop" value="impostacima"/>
+ <cd:command name="setuptoptexts" value="impostatesticima"/>
+ <cd:command name="setupheader" value="impostainstestazione"/>
+ <cd:command name="setupheadertexts" value="impostatestiintestazioni"/>
+ <cd:command name="setuppagenumbering" value="impostanumerazionepagina"/>
+ <cd:command name="getnumber" value="getnumber"/>
+ <cd:command name="incrementnumber" value="incrementanumero"/>
+ <cd:command name="decrementnumber" value="decrementnumber"/>
+ <cd:command name="resetnumber" value="resetnumber"/>
+ <cd:command name="setnumber" value="setnumber"/>
+ <cd:command name="setupnumber" value="impostanumerazione"/>
+ <cd:command name="setupbottom" value="impostafondo"/>
+ <cd:command name="setupbottomtexts" value="impostatestifondo"/>
+ <cd:command name="setupfooter" value="impostapdp"/>
+ <cd:command name="setupfootertexts" value="impostatestipdp"/>
+ <cd:command name="setuppagenumber" value="impostanumeropagina"/>
+ <cd:command name="setupsubpagenumber" value="impostanumerosottopagina"/>
+ <cd:command name="subpagenumber" value="subpagenumber"/>
+ <cd:command name="setuptext" value="impostatesto"/>
+ <cd:command name="setuptexttexts" value="impostatestotesti"/>
+ <cd:command name="definetext" value="definiscitesto"/>
+ <cd:command name="pagenumber" value="numeropagina"/>
+ <cd:command name="completepagenumber" value="numeropaginacompleto"/>
+ <cd:command name="placepagenumber" value="mettinumeropagina"/>
+ <cd:command name="items" value="elementi"/>
+ <cd:command name="setupitems" value="impostaelementi"/>
+ <cd:command name="leftaligned" value="allineasinistra"/>
+ <cd:command name="midaligned" value="allineacentro"/>
+ <cd:command name="rightaligned" value="allineadestra"/>
+ <cd:command name="startcolumns" value="iniziacolonne"/>
+ <cd:command name="stopcolumns" value="terminacolonne"/>
+ <cd:command name="setupcolumns" value="impostacolonne"/>
+ <cd:command name="column" value="colonna"/>
+ <cd:command name="head" value="testa"/>
+ <cd:command name="but" value="fondo"/>
+ <cd:command name="item" value="elemento"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="mar"/>
+ <cd:command name="sym" value="sim"/>
+ <cd:command name="its" value="el"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="headsym"/>
+ <cd:command name="defineitemgroup" value="defineitemgroup"/>
+ <cd:command name="setupitemgroup" value="setupitemgroup"/>
+ <cd:command name="setupitemgroups" value="setupitemgroups"/>
+ <cd:command name="definehead" value="definiscitesta"/>
+ <cd:command name="setuphead" value="impostatesta"/>
+ <cd:command name="setupheads" value="impostateste"/>
+ <cd:command name="setupheadnumber" value="impostanumerotesta"/>
+ <cd:command name="headnumber" value="numerotesta"/>
+ <cd:command name="currentheadnumber" value="numerotestacorrente"/>
+ <cd:command name="determineheadnumber" value="determinanumerotesta"/>
+ <cd:command name="resetmarking" value="reimpostamarcatura"/>
+ <cd:command name="setupmarking" value="impostamarcatura"/>
+ <cd:command name="definemarking" value="definiscimarcatura"/>
+ <cd:command name="nomarking" value="nientemarcatura"/>
+ <cd:command name="marking" value="marcatura"/>
+ <cd:command name="decouplemarking" value="separamarcatura"/>
+ <cd:command name="couplemarking" value="accoppiamarcatura"/>
+ <cd:command name="getmarking" value="prendimarcatura"/>
+ <cd:command name="definelayout" value="definiscilayout"/>
+ <cd:command name="setuplayout" value="impostalayout"/>
+ <cd:command name="adaptlayout" value="adattalayout"/>
+ <cd:command name="placeongrid" value="mettiingriglia"/>
+ <cd:command name="moveongrid" value="spostaagriglia"/>
+ <cd:command name="showsetups" value="mostraimpostazioni"/>
+ <cd:command name="showframe" value="mostracornice"/>
+ <cd:command name="showgrid" value="mostragriglia"/>
+ <cd:command name="showlayout" value="mostralyout"/>
+ <cd:command name="showprint" value="mostrastampa"/>
+ <cd:command name="showstruts" value="mostrastruts"/>
+ <cd:command name="definepapersize" value="definiscidimensionicarta"/>
+ <cd:command name="setuppapersize" value="impostadimensionicarta"/>
+ <cd:command name="setuppaper" value="setuppaper"/>
+ <cd:command name="setuparranging" value="impostaparranging"/>
+ <cd:command name="version" value="versione"/>
+ <cd:command name="setupbackgrounds" value="impostasfondi"/>
+ <cd:command name="setupalign" value="impostaallineamento"/>
+ <cd:command name="setupwhitespace" value="impostaspaziobianco"/>
+ <cd:command name="setupinteraction" value="impostainterazione"/>
+ <cd:command name="setupinteractionmenu" value="impostamenuinterazione"/>
+ <cd:command name="defineinteractionmenu" value="definiscimenuinterazione"/>
+ <cd:command name="disableinteractionmenu" value="disabilitamenuinterazione"/>
+ <cd:command name="interactionmenu" value="menuinterattivo"/>
+ <cd:command name="interactionbuttons" value="pulsantinterazione"/>
+ <cd:command name="interactionbar" value="barrainterazione"/>
+ <cd:command name="setupinteractionbar" value="impostabarrainterazione"/>
+ <cd:command name="setupinteractionscreen" value="impostaschermointerazione"/>
+ <cd:command name="placebookmarks" value="mettisegnalibro"/>
+ <cd:command name="bookmark" value="segnalibro"/>
+ <cd:command name="definelogo" value="definiscilogo"/>
+ <cd:command name="placelogos" value="mettiloghi"/>
+ <cd:command name="definecolor" value="definiscicolore"/>
+ <cd:command name="definecolorgroup" value="definiscigruppocolori"/>
+ <cd:command name="definepalet" value="definiscitavolozza"/>
+ <cd:command name="graycolor" value="coloregrigio"/>
+ <cd:command name="color" value="colore"/>
+ <cd:command name="startcolor" value="iniziacolore"/>
+ <cd:command name="stopcolor" value="terminacolore"/>
+ <cd:command name="setupcolors" value="impostacolori"/>
+ <cd:command name="setupcolor" value="impostacolore"/>
+ <cd:command name="setuppalet" value="impostatavolozza"/>
+ <cd:command name="showcolor" value="mostracolore"/>
+ <cd:command name="showcolorgroup" value="mostragruppocolori"/>
+ <cd:command name="showpalet" value="mostratavolozza"/>
+ <cd:command name="comparecolorgroup" value="confrontagruppocolori"/>
+ <cd:command name="comparepalet" value="confrontatavolozza"/>
+ <cd:command name="colorvalue" value="valorecolore"/>
+ <cd:command name="greyvalue" value="valoregrigio"/>
+ <cd:command name="startraster" value="iniziaraster"/>
+ <cd:command name="stopraster" value="terminaraster"/>
+ <cd:command name="defineblock" value="definisciblocco"/>
+ <cd:command name="setupblock" value="impostablocco"/>
+ <cd:command name="useblocks" value="usablocco"/>
+ <cd:command name="processblocks" value="elaborablocchi"/>
+ <cd:command name="keepblocks" value="tieniblocchi"/>
+ <cd:command name="selectblocks" value="selezionablocchi"/>
+ <cd:command name="hideblocks" value="nascondiblocchi"/>
+ <cd:command name="bypassblocks" value="saltablocchi"/>
+ <cd:command name="forceblocks" value="forzablocchi"/>
+ <cd:command name="nomoreblocks" value="bastablocchi"/>
+ <cd:command name="definelist" value="definiscielenco"/>
+ <cd:command name="definecombinedlist" value="definiscielencocombinato"/>
+ <cd:command name="listsymbol" value="listsymbol"/>
+ <cd:command name="placelist" value="mettielenco"/>
+ <cd:command name="plaatsruwelijst" value="placerawlist"/>
+ <cd:command name="placecombinedlist" value="mettielencocombinato"/>
+ <cd:command name="writetolist" value="scriviinelenco"/>
+ <cd:command name="writebetweenlist" value="scrividentroelenco"/>
+ <cd:command name="immediatetolist" value="immediatetolist"/>
+ <cd:command name="immediatebetweenlist" value="immediatebetweenlist"/>
+ <cd:command name="setuplist" value="impostaelenco"/>
+ <cd:command name="setupcombinedlist" value="impostaelencocombinato"/>
+ <cd:command name="determinelistcharacteristics" value="determinacarattersticheelenco"/>
+ <cd:command name="listlength" value="lunghezzaelenco"/>
+ <cd:command name="listwidth" value="ampiezzaelenco"/>
+ <cd:command name="listheight" value="altezzaelenco"/>
+ <cd:command name="nolist" value="nienteelenco"/>
+ <cd:command name="definereferencelist" value="definiscilistariferimenti"/>
+ <cd:command name="placereferencelist" value="mettilistariferimenti"/>
+ <cd:command name="writetoreferencelist" value="scriviinlistariferimenti"/>
+ <cd:command name="setupreferencelist" value="impostalistariferimenti"/>
+ <cd:command name="definefloat" value="definiscioggettomobile"/>
+ <cd:command name="setupfloat" value="impostaoggettomobile"/>
+ <cd:command name="setupfloats" value="impostaoggettimobili"/>
+ <cd:command name="splitfloat" value="spezzaoggettomobile"/>
+ <cd:command name="setupfloatsplitting" value="impostaspezzamentooggettomobile"/>
+ <cd:command name="placefloat" value="placefloat"/>
+ <cd:command name="movesidefloat" value="movesidefloat"/>
+ <cd:command name="defineplacement" value="defineplacement"/>
+ <cd:command name="setupplacement" value="setupplacement"/>
+ <cd:command name="definecombination" value="definecombination"/>
+ <cd:command name="startcombination" value="iniziacombinazione"/>
+ <cd:command name="stopcombination" value="terminacombinazione"/>
+ <cd:command name="placesidebyside" value="mettifiancoafianco"/>
+ <cd:command name="placeontopofeachother" value="mettiunosullaltro"/>
+ <cd:command name="setupcaption" value="impostacaption"/>
+ <cd:command name="setupcaptions" value="impostacaptions"/>
+ <cd:command name="setupcombinations" value="impostacombinazioni"/>
+ <cd:command name="startoverlay" value="iniziasovrapposizione"/>
+ <cd:command name="stopoverlay" value="terminasovrapposizione"/>
+ <cd:command name="defineregister" value="definisciregistro"/>
+ <cd:command name="coupleregister" value="accoppiaregistro"/>
+ <cd:command name="setupregister" value="impostaregistro"/>
+ <cd:command name="writetoregister" value="scriviinregistro"/>
+ <cd:command name="completeregister" value="completeregister"/>
+ <cd:command name="placeregister" value="mettiregistro"/>
+ <cd:command name="determineregistercharacteristics" value="determinacaratteristicheregistro"/>
+ <cd:command name="definesorting" value="definisciordinamento"/>
+ <cd:command name="definesynonyms" value="definiscisinonimi"/>
+ <cd:command name="setupsorting" value="impostaordinamento"/>
+ <cd:command name="setupsynonyms" value="impostasinonimi"/>
+ <cd:command name="startsynchronization" value="iniziasincronizzazione"/>
+ <cd:command name="stopsynchronization" value="terminasincronizzazione"/>
+ <cd:command name="setupsynchronizationbar" value="impostabarrasincronizzazione"/>
+ <cd:command name="setupsynchronization" value="impostasincronizzazione"/>
+ <cd:command name="synchronizationbar" value="barrasincronizzazione"/>
+ <cd:command name="synchronize" value="sincronizza"/>
+ <cd:command name="useexternaldocument" value="usadocumentoesterno"/>
+ <cd:command name="useURL" value="usaURL"/>
+ <cd:command name="useurl" value="usaurl"/>
+ <cd:command name="setupurl" value="impostaurl"/>
+ <cd:command name="coupledocument" value="accoppiadocumento"/>
+ <cd:command name="setupprograms" value="impostaprogrammi"/>
+ <cd:command name="defineprogram" value="definisciprogramma"/>
+ <cd:command name="program" value="programma"/>
+ <cd:command name="setuppagetransitions" value="impostatransizionepagina"/>
+ <cd:command name="defineprofile" value="definisciprofilo"/>
+ <cd:command name="defineversion" value="definisciversion"/>
+ <cd:command name="markversion" value="marcaversione"/>
+ <cd:command name="selectversion" value="selezionaversione"/>
+ <cd:command name="startprofile" value="iniziaprofilo"/>
+ <cd:command name="startversion" value="iniziaversione"/>
+ <cd:command name="setupprofiles" value="impostaprofili"/>
+ <cd:command name="setupversions" value="impostaversioni"/>
+ <cd:command name="stopprofile" value="terminaprofili"/>
+ <cd:command name="stopversion" value="terminaversioni"/>
+ <cd:command name="followprofile" value="seguiprofilo"/>
+ <cd:command name="followprofileversion" value="seguiversioneprofilo"/>
+ <cd:command name="followversion" value="seguiversione"/>
+ <cd:command name="definedescription" value="definiscidescrizione"/>
+ <cd:command name="definelabel" value="definiscietichetta"/>
+ <cd:command name="defineenumeration" value="definiscienumerazione"/>
+ <cd:command name="defineindenting" value="definiscirientro"/>
+ <cd:command name="setupdescriptions" value="impostadescrizioni"/>
+ <cd:command name="setupenumerations" value="impostaenumerazioni"/>
+ <cd:command name="setupindentations" value="impostarientri"/>
+ <cd:command name="setuptab" value="impostatab"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="impostafigureesterne"/>
+ <cd:command name="showexternalfigures" value="mostrafiguresterne"/>
+ <cd:command name="externalfigure" value="figuraesterna"/>
+ <cd:command name="useexternalfigure" value="usafiguraesterna"/>
+ <cd:command name="startfigure" value="iniziafigura"/>
+ <cd:command name="referring" value="referring"/>
+ <cd:command name="remark" value="commento"/>
+ <cd:command name="colorbar" value="barracolori"/>
+ <cd:command name="grid" value="griglia"/>
+ <cd:command name="button" value="pulsante"/>
+ <cd:command name="menubutton" value="pulsantemenu"/>
+ <cd:command name="setupbuttons" value="impostapulsanti"/>
+ <cd:command name="usereferences" value="usariferimenti"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="setupreferencelist" value="impostalistariferimenti"/>
+ <cd:command name="setupreferencing" value="impostariferimento"/>
+ <cd:command name="textreference" value="riferimentotesto"/>
+ <cd:command name="pagereference" value="riferimentopagina"/>
+ <cd:command name="reference" value="riferimento"/>
+ <cd:command name="definereference" value="definisciriferimento"/>
+ <cd:command name="definereferenceformat" value="definisciformatoriferimento"/>
+ <cd:command name="useJSscripts" value="usaJSscripts"/>
+ <cd:command name="from" value="da"/>
+ <cd:command name="in" value="in"/>
+ <cd:command name="at" value="al"/>
+ <cd:command name="about" value="intorno"/>
+ <cd:command name="goto" value="vaia"/>
+ <cd:command name="atpage" value="apagina"/>
+ <cd:command name="somewhere" value="daqualcheparte"/>
+ <cd:command name="navigating" value="navigating"/>
+ <cd:command name="ref" value="rif"/>
+ <cd:command name="gotobox" value="vaiabox"/>
+ <cd:command name="gotopage" value="vaiapagina"/>
+ <cd:command name="placeformula" value="mettiformula"/>
+ <cd:command name="placesubformula" value="mettisottoformula"/>
+ <cd:command name="moveformula" value="spostaformula"/>
+ <cd:command name="setupformulas" value="impostaformule"/>
+ <cd:command name="formulanumber" value="numeroformula"/>
+ <cd:command name="subformulanumber" value="numerosottoformula"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="fatto"/>
+ <cd:command name="mathematics" value="matematica"/>
+ <cd:command name="dimension" value="dimensione"/>
+ <cd:command name="nodimension" value="nientedimensioni"/>
+ <cd:command name="startenvironment" value="iniziaambiente"/>
+ <cd:command name="stopenvironment" value="terminaambiente"/>
+ <cd:command name="startcomponent" value="iniziacomponente"/>
+ <cd:command name="stopcomponent" value="terminacomponente"/>
+ <cd:command name="startproduct" value="iniziaprodotto"/>
+ <cd:command name="stopproduct" value="terminaprodotto"/>
+ <cd:command name="startproject" value="iniziaprogetto"/>
+ <cd:command name="stopproject" value="terminaprogetto"/>
+ <cd:command name="setups" value="impostazioni"/>
+ <cd:command name="project" value="progetto"/>
+ <cd:command name="component" value="componenet"/>
+ <cd:command name="product" value="prodotto"/>
+ <cd:command name="environment" value="ambiente"/>
+ <cd:command name="nomorefiles" value="bastafile"/>
+ <cd:command name="getbuffer" value="prendibuffer"/>
+ <cd:command name="setupbuffer" value="impostabuffer"/>
+ <cd:command name="typebuffer" value="typebuffer"/>
+ <cd:command name="definebuffer" value="definiscibuffer"/>
+ <cd:command name="unitmeaning" value="nomeunita"/>
+ <cd:command name="infull" value="perlungo"/>
+ <cd:command name="quotation" value="citazione"/>
+ <cd:command name="quote" value="menzione"/>
+ <cd:command name="startquotation" value="iniziacitazione"/>
+ <cd:command name="stopquotation" value="terminacitazione"/>
+ <cd:command name="setupquote" value="impostamenzione"/>
+ <cd:command name="define" value="definisci"/>
+ <cd:command name="redo" value="rifai"/>
+ <cd:command name="usecommands" value="usacomandi"/>
+ <cd:command name="definestartstop" value="definisciiniziatermina"/>
+ <cd:command name="setupstartstop" value="impostainiziatermina"/>
+ <cd:command name="startlocal" value="inizialocale"/>
+ <cd:command name="stoplocal" value="terminalocale"/>
+ <cd:command name="startglobal" value="iniziaglobale"/>
+ <cd:command name="stopglobal" value="terminaglobale"/>
+ <cd:command name="macroname" value="nome"/>
+ <cd:command name="definemakeup" value="definiscimakeup"/>
+ <cd:command name="setupmakeup" value="impostamakeup"/>
+ <cd:command name="startmakeup" value="iniziamakeup"/>
+ <cd:command name="stopmakeup" value="terminamakeup"/>
+ <cd:command name="useexternalsoundtrack" value="usacolonnasonoraesterna"/>
+ <cd:command name="useexternalfile" value="usafileesterno"/>
+ <cd:command name="useexternalfiles" value="usafileesterni"/>
+ <cd:command name="referral" value="referral"/>
+ <cd:command name="referraldate" value="datareferral"/>
+ <cd:command name="high" value="ap"/>
+ <cd:command name="lohi" value="pedap"/>
+ <cd:command name="low" value="ped"/>
+ <cd:command name="fraction" value="frazione"/>
+ <cd:command name="chem" value="chim"/>
+ <cd:command name="startopposite" value="iniziaopposto"/>
+ <cd:command name="stopopposite" value="terminaopposto"/>
+ <cd:command name="setupoppositeplacing" value="impostaposizionamentoopposti"/>
+ <cd:command name="startpositioning" value="iniziaposizionamento"/>
+ <cd:command name="stoppositioning" value="terminaposizionamento"/>
+ <cd:command name="position" value="posizione"/>
+ <cd:command name="setuppositioning" value="impostaposizionamento"/>
+ <cd:command name="rotate" value="ruota"/>
+ <cd:command name="setuprotate" value="impostarotazione"/>
+ <cd:command name="mirror" value="riflessione"/>
+ <cd:command name="scale" value="scala"/>
+ <cd:command name="setupnumbering" value="impostanumerazione"/>
+ <cd:command name="reset" value="reimposta"/>
+ <cd:command name="setuppublications" value="impostapubblicazioni"/>
+ <cd:command name="publication" value="pubblicazione"/>
+ <cd:command name="definehbox" value="definiscihbox"/>
+ <cd:command name="adding" value="adding"/>
+ <cd:command name="periods" value="punti"/>
+ <cd:command name="setuphyphenmark" value="impostasegnosillabazione"/>
+ <cd:command name="setupinterlinespace" value="impostainterlinea"/>
+ <cd:command name="setupspacing" value="impostaspaziatura"/>
+ <cd:command name="setuptolerance" value="impostatolleranza"/>
+ <cd:command name="setupsystem" value="impostasistema"/>
+ <cd:command name="usepath" value="usacartella"/>
+ <cd:command name="defineparagraphs" value="definiscicapoversi"/>
+ <cd:command name="setupparagraphs" value="impostacapoversi"/>
+ <cd:command name="donttest" value="notest"/>
+ <cd:command name="setupcomment" value="impostacommento"/>
+ <cd:command name="comment" value="commento"/>
+ <cd:command name="definefield" value="definiscicampo"/>
+ <cd:command name="definemainfield" value="definiscicampoprincipale"/>
+ <cd:command name="definesubfield" value="definiscisottocampo"/>
+ <cd:command name="clonefield" value="clonacampo"/>
+ <cd:command name="copyfield" value="copiacampo"/>
+ <cd:command name="setupfield" value="impostacampo"/>
+ <cd:command name="setupfields" value="impostacampi"/>
+ <cd:command name="field" value="campi"/>
+ <cd:command name="fitfield" value="adattacampo"/>
+ <cd:command name="logfields" value="logcampi"/>
+ <cd:command name="showfields" value="mostracampi"/>
+ <cd:command name="tooltip" value="tooltip"/>
+ <cd:command name="fillinfield" value="camporiempimento"/>
+ <cd:command name="definefieldstack" value="definiscistackcampi"/>
+ <cd:command name="fieldstack" value="stackcampi"/>
+ <cd:command name="setupforms" value="impostaforms"/>
+ <cd:command name="setupclipping" value="impostaclippling"/>
+ <cd:command name="clip" value="clip"/>
+ <cd:command name="placelegend" value="mettilegenda"/>
+ <cd:command name="setuplegend" value="impostalegenda"/>
+ <cd:command name="setuppagecomment" value="impostacommentopagina"/>
+ <cd:command name="setupstrut" value="impostastrut"/>
+ <cd:command name="definerule" value="definiscilinea"/>
+ <cd:command name="placerule" value="mettilinea"/>
+ <cd:command name="setuprule" value="impostalinea"/>
+ <cd:command name="definetextvariable" value="definiscivariabiletesto"/>
+ <cd:command name="setuptextvariable" value="impostavariabiletesto"/>
+ <cd:command name="settextvariable" value="setvariabiletesto"/>
+ <cd:command name="placetextvariable" value="mettivariabiletesto"/>
+ <cd:command name="textvariable" value="variabiletesto"/>
+ <cd:command name="definetextposition" value="definisciposizionetesto"/>
+ <cd:command name="setuptextposition" value="impostaposizionetesto"/>
+ <cd:command name="positiontext" value="posizionatesto"/>
+ <cd:command name="definerawfont" value="definiscifontgrezzo"/>
+ <cd:command name="switchtorawfont" value="passaafontgrezzo"/>
+ <cd:command name="placeheadtext" value="posizionatestotesta"/>
+ <cd:command name="placeheadnumber" value="posizionanumerotesta"/>
+ <cd:command name="definepagebreak" value="definepagebreak"/>
+ <cd:command name="definecolumnbreak" value="definecolumnbreak"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="impostaelencazioni"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="altezzacima"/>
+ <cd:command name="topdistance" value="distanzacima"/>
+ <cd:command name="headerheight" value="altezzaintestazione"/>
+ <cd:command name="headerdistance" value="distanzaintestazione"/>
+ <cd:command name="textheight" value="altezzatesto"/>
+ <cd:command name="footerdistance" value="distanzapdp"/>
+ <cd:command name="footerheight" value="altezzapdp"/>
+ <cd:command name="bottomdistance" value="distanzafondo"/>
+ <cd:command name="bottomheight" value="altezzafondo"/>
+ <cd:command name="marginwidth" value="ampiezzamargine"/>
+ <cd:command name="leftmarginwidth" value="ampiezzamarginesinistro"/>
+ <cd:command name="rightmarginwidth" value="ampiezzamarginedestro"/>
+ <cd:command name="margindistance" value="distanzamargine"/>
+ <cd:command name="leftmargindistance" value="distanzamarginesinistro"/>
+ <cd:command name="rightmargindistance" value="distanzamarginedestro"/>
+ <cd:command name="edgewidth" value="ampiezzabordo"/>
+ <cd:command name="leftedgewidth" value="ampiezzabordosinistro"/>
+ <cd:command name="rightedgewidth" value="ampiezzabordodestro"/>
+ <cd:command name="edgedistance" value="distanzabordo"/>
+ <cd:command name="leftedgedistance" value="distanzabordosinistro"/>
+ <cd:command name="rightedgedistance" value="distanzabordodestro"/>
+ <cd:command name="innermarginwidth" value="innermarginwidth"/>
+ <cd:command name="outermarginwidth" value="outermarginwidth"/>
+ <cd:command name="innermargindistance" value="innermargindistance"/>
+ <cd:command name="outermargindistance" value="outermargindistance"/>
+ <cd:command name="inneredgewidth" value="inneredgewidth"/>
+ <cd:command name="outeredgewidth" value="outeredgewidth"/>
+ <cd:command name="inneredgedistance" value="inneredgedistance"/>
+ <cd:command name="outeredgedistance" value="outeredgedistance"/>
+ <cd:command name="textwidth" value="ampiezzatesto"/>
+ <cd:command name="makeupwidth" value="ampiezzamakeup"/>
+ <cd:command name="makeupheight" value="altezzamakeup"/>
+ <cd:command name="topspace" value="spaziocima"/>
+ <cd:command name="bottomspace" value="spaziofondo"/>
+ <cd:command name="backspace" value="spaziodietro"/>
+ <cd:command name="cutspace" value="cutspace"/>
+ <cd:command name="paperwidth" value="ampiezzacarta"/>
+ <cd:command name="paperheight" value="altezzacarta"/>
+ <cd:command name="printpaperwidth" value="ampiezzacartastampa"/>
+ <cd:command name="printpaperheight" value="altezzacartastampa"/>
+ <cd:command name="pageoffset" value="pageoffset"/>
+ <cd:command name="pagedepth" value="pagedepth"/>
+ <cd:command name="headlevel" value="livellotesta"/>
+ <cd:command name="linewidth" value="spessoreriga"/>
+ <cd:command name="totalnumberofpages" value="numerototaledipagine"/>
+ <cd:command name="numberofsubpages" value="numberofsubpages"/>
+ <cd:command name="useXMLfilter" value="useXMLfilter"/>
+ <cd:command name="definecolumnset" value="definiscigruppocolonne"/>
+ <cd:command name="setupcolumnset" value="impostagruppocolonne"/>
+ <cd:command name="startcolumnset" value="iniziagruppocolonne"/>
+ <cd:command name="stopcolumnset" value="terminagruppocolonne"/>
+ <cd:command name="setupcolumnsetlines" value="setupcolumnsetlines"/>
+ <cd:command name="setupcolumnsetstart" value="setupcolumnsetstart"/>
+ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/>
+ <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/>
+ <cd:command name="usetypescript" value="usetypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="iniziadocumento"/>
+ <cd:command name="stopdocument" value="terminadocumento"/>
+ <cd:command name="startoverzicht" value="iniziaoverview"/>
+ <cd:command name="stopoverzicht" value="terminaoverview"/>
+ <cd:command name="label" value="etichetta"/>
+ <cd:command name="labels" value="etichette"/>
+ <cd:command name="domicile" value="domicilio"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-nl.xml b/Master/texmf-dist/tex/context/interface/keys-nl.xml
new file mode 100644
index 00000000000..ee84ea394bf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-nl.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="een"/>
+ <cd:variable name="two" value="twee"/>
+ <cd:variable name="three" value="drie"/>
+ <cd:variable name="four" value="vier"/>
+ <cd:variable name="five" value="vijf"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="omgeving"/>
+ <cd:variable name="component" value="onderdeel"/>
+ <cd:variable name="product" value="produkt"/>
+ <cd:variable name="project" value="project"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="zondag"/>
+ <cd:variable name="monday" value="maandag"/>
+ <cd:variable name="tuesday" value="dinsdag"/>
+ <cd:variable name="wednesday" value="woensdag"/>
+ <cd:variable name="thursday" value="donderdag"/>
+ <cd:variable name="friday" value="vrijdag"/>
+ <cd:variable name="saturday" value="zaterdag"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="januari"/>
+ <cd:variable name="february" value="februari"/>
+ <cd:variable name="march" value="maart"/>
+ <cd:variable name="april" value="april"/>
+ <cd:variable name="may" value="mei"/>
+ <cd:variable name="june" value="juni"/>
+ <cd:variable name="july" value="juli"/>
+ <cd:variable name="august" value="augustus"/>
+ <cd:variable name="september" value="september"/>
+ <cd:variable name="october" value="oktober"/>
+ <cd:variable name="november" value="november"/>
+ <cd:variable name="december" value="december"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="oppagina"/>
+ <cd:variable name="hencefore" value="hierboven"/>
+ <cd:variable name="hereafter" value="hieronder"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="sectie"/>
+ <cd:variable name="part" value="deel"/>
+ <cd:variable name="chapter" value="hoofdstuk"/>
+ <cd:variable name="subject" value="onderwerp"/>
+ <cd:variable name="section" value="paragraaf"/>
+ <cd:variable name="title" value="titel"/>
+ <cd:variable name="margintitle" value="margetitel"/>
+ <cd:variable name="content" value="inhoud"/>
+ <cd:variable name="contents" value="inhouden"/>
+ <cd:variable name="appendix" value="bijlage"/>
+ <cd:variable name="appendices" value="bijlagen"/>
+ <cd:variable name="bodypart" value="hoofdtekst"/>
+ <cd:variable name="bodymatter" value="hoofdteksten"/>
+ <cd:variable name="frontpart" value="inleiding"/>
+ <cd:variable name="frontmatter" value="inleidingen"/>
+ <cd:variable name="backpart" value="uitleiding"/>
+ <cd:variable name="backmatter" value="uitleidingen"/>
+ <cd:variable name="footnote" value="voetnoot"/>
+ <cd:variable name="endnote" value="eindnoot"/>
+ <cd:variable name="system" value="systeem"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="subparagraaf"/>
+ <cd:variable name="subsubsection" value="subsubparagraaf"/>
+ <cd:variable name="subsubsubsection" value="subsubsubparagraaf"/>
+ <cd:variable name="subsubsubsubsection" value="subsubsubsubparagraaf"/>
+ <cd:variable name="subsubsubsubsubsection" value="subsubsubsubsubparagraaf"/>
+ <cd:variable name="subsubject" value="subonderwerp"/>
+ <cd:variable name="subsubsubject" value="subsubonderwerp"/>
+ <cd:variable name="subsubsubsubject" value="subsubsubonderwerp"/>
+ <cd:variable name="subsubsubsubsubject" value="subsubsubsubonderwerp"/>
+ <cd:variable name="subsubsubsubsubsubject" value="subsubsubsubsubonderwerp"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="lijnlinks"/>
+ <cd:variable name="flushright" value="lijnrechts"/>
+ <cd:variable name="center" value="centreer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="typen"/>
+ <cd:variable name="file" value="file"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="formule"/>
+ <cd:variable name="formulae" value="formules"/>
+ <cd:variable name="figure" value="figuur"/>
+ <cd:variable name="figures" value="figuren"/>
+ <cd:variable name="table" value="tabel"/>
+ <cd:variable name="tables" value="tabellen"/>
+ <cd:variable name="graphic" value="grafiek"/>
+ <cd:variable name="graphics" value="grafieken"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzos"/>
+ <cd:variable name="index" value="index"/>
+ <cd:variable name="indices" value="indices"/>
+ <cd:variable name="abbreviation" value="afkorting"/>
+ <cd:variable name="abbreviations" value="afkortingen"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="logos"/>
+ <cd:variable name="unit" value="eenheid"/>
+ <cd:variable name="units" value="eenheden"/>
+ <cd:variable name="line" value="regel"/>
+ <cd:variable name="lines" value="regels"/>
+ <cd:variable name="framedtext" value="kadertekst"/>
+ <cd:variable name="quotation" value="citaat"/>
+ <cd:variable name="quote" value="citeer"/>
+ <cd:variable name="speech" value="spraak"/>
+ <cd:variable name="itemize" value="opsomming"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="linkercitaat"/>
+ <cd:constant name="rightquotation" value="rechtercitaat"/>
+ <cd:constant name="leftquote" value="linkerciteer"/>
+ <cd:constant name="rightquote" value="rechterciteer"/>
+ <cd:constant name="compoundhyphen" value="koppelteken"/>
+ <cd:constant name="leftcompoundhyphen" value="linkerkoppelteken"/>
+ <cd:constant name="rightcompoundhyphen" value="rechterkoppelteken"/>
+ <cd:constant name="midsentence" value="middenzin"/>
+ <cd:constant name="leftsentence" value="linkerzin"/>
+ <cd:constant name="rightsentence" value="rechterzin"/>
+ <cd:constant name="leftsubsentence" value="linkersubzin"/>
+ <cd:constant name="rightsubsentence" value="rechtersubzin"/>
+ <cd:constant name="leftspeech" value="linkeruitspraak"/>
+ <cd:constant name="middlespeech" value="middenuitspraak"/>
+ <cd:constant name="rightspeech" value="rechteruitspraak"/>
+ <cd:constant name="limittext" value="limiettekst"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="spacebefore" value="voorwit"/>
+ <cd:constant name="spaceinbetween" value="tussenwit"/>
+ <cd:constant name="spaceafter" value="nawit"/>
+ <cd:constant name="sidespacebefore" value="zijvoorwit"/>
+ <cd:constant name="sidespaceafter" value="zijnawit"/>
+ <cd:constant name="to" value="aan"/>
+ <cd:constant name="indicator" value="aanduiding"/>
+ <cd:constant name="background" value="achtergrond"/>
+ <cd:constant name="backgrounddepth" value="achtergronddiepte"/>
+ <cd:constant name="backgroundcorner" value="achtergrondhoek"/>
+ <cd:constant name="splitcolor" value="splitskleur"/>
+ <cd:constant name="backgroundcolor" value="achtergrondkleur"/>
+ <cd:constant name="foregroundcolor" value="voorgrondkleur"/>
+ <cd:constant name="foregroundstyle" value="voorgrondletter"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="achtergrondoffset"/>
+ <cd:constant name="backgroundscreen" value="achtergrondraster"/>
+ <cd:constant name="backgroundradius" value="achtergrondstraal"/>
+ <cd:constant name="address" value="adres"/>
+ <cd:constant name="stopper" value="afsluiter"/>
+ <cd:constant name="distance" value="afstand"/>
+ <cd:constant name="paragraph" value="alinea"/>
+ <cd:constant name="axis" value="assenstelsel"/>
+ <cd:constant name="author" value="auteur"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="balanceren"/>
+ <cd:constant name="wfactor" value="bfactor"/>
+ <cd:constant name="inner" value="binnen"/>
+ <cd:constant name="blank" value="blanko"/>
+ <cd:constant name="obstruction" value="blokkade"/>
+ <cd:constant name="blockway" value="blokwijze"/>
+ <cd:constant name="bottomspace" value="bodemwit"/>
+ <cd:constant name="top" value="boven"/>
+ <cd:constant name="topdistance" value="bovenafstand"/>
+ <cd:constant name="topframe" value="bovenkader"/>
+ <cd:constant name="topoffset" value="bovenoffset"/>
+ <cd:constant name="topstate" value="bovenstatus"/>
+ <cd:constant name="width" value="breedte"/>
+ <cd:constant name="maxwidth" value="maxbreedte"/>
+ <cd:constant name="minwidth" value="minbreedte"/>
+ <cd:constant name="source" value="bron"/>
+ <cd:constant name="command" value="commando"/>
+ <cd:constant name="commands" value="commandos"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="contrastkleur"/>
+ <cd:constant name="conversion" value="conversie"/>
+ <cd:constant name="headconversion" value="kopconversie"/>
+ <cd:constant name="headlabel" value="koplabel"/>
+ <cd:constant name="criterium" value="criterium"/>
+ <cd:constant name="date" value="datum"/>
+ <cd:constant name="default" value="default"/>
+ <cd:constant name="depth" value="diepte"/>
+ <cd:constant name="depthcorrection" value="dieptecorrectie"/>
+ <cd:constant name="continue" value="doorgaan"/>
+ <cd:constant name="doublesided" value="dubbelzijdig"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="eenheid"/>
+ <cd:constant name="ownnumber" value="eigennummer"/>
+ <cd:constant name="evenmargin" value="evenmarge"/>
+ <cd:constant name="expansion" value="expansie"/>
+ <cd:constant name="keyexpansion" value="sleutelexpansie"/>
+ <cd:constant name="factor" value="factor"/>
+ <cd:constant name="convertfile" value="converteerfile"/>
+ <cd:constant name="file" value="file"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="formaat"/>
+ <cd:constant name="autofocus" value="autofocus"/>
+ <cd:constant name="focus" value="focus"/>
+ <cd:constant name="directory" value="gebied"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="grid"/>
+ <cd:constant name="big" value="groot"/>
+ <cd:constant name="get" value="haal"/>
+ <cd:constant name="hang" value="hang"/>
+ <cd:constant name="repeat" value="herhaal"/>
+ <cd:constant name="hfactor" value="hfactor"/>
+ <cd:constant name="corner" value="hoek"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="hokjes"/>
+ <cd:constant name="header" value="hoofd"/>
+ <cd:constant name="headerdistance" value="hoofdafstand"/>
+ <cd:constant name="headerstate" value="hoofdstatus"/>
+ <cd:constant name="height" value="hoogte"/>
+ <cd:constant name="maxheight" value="maxhoogte"/>
+ <cd:constant name="minheight" value="minhoogte"/>
+ <cd:constant name="mindepth" value="mindiepte"/>
+ <cd:constant name="current" value="huidige"/>
+ <cd:constant name="in" value="in"/>
+ <cd:constant name="indenting" value="inspringen"/>
+ <cd:constant name="interaction" value="interactie"/>
+ <cd:constant name="interlinespace" value="interlinie"/>
+ <cd:constant name="items" value="items"/>
+ <cd:constant name="frame" value="kader"/>
+ <cd:constant name="framedepth" value="kaderdiepte"/>
+ <cd:constant name="framecorner" value="kaderhoek"/>
+ <cd:constant name="framecolor" value="kaderkleur"/>
+ <cd:constant name="frameoffset" value="kaderoffset"/>
+ <cd:constant name="frameradius" value="kaderstraal"/>
+ <cd:constant name="marginedge" value="kantlijn"/>
+ <cd:constant name="marginedgetext" value="kantlijntekst"/>
+ <cd:constant name="aligncharacter" value="karakteruitlijnen"/>
+ <cd:constant name="alignmentcharacter" value="uitlijnkarakter"/>
+ <cd:constant name="small" value="klein"/>
+ <cd:constant name="color" value="kleur"/>
+ <cd:constant name="column" value="kolom"/>
+ <cd:constant name="columns" value="kolommen"/>
+ <cd:constant name="columndistance" value="kolomafstand"/>
+ <cd:constant name="headcommand" value="kopcommando"/>
+ <cd:constant name="headcolor" value="kopkleur"/>
+ <cd:constant name="headstyle" value="kopletter"/>
+ <cd:constant name="afterhead" value="kopna"/>
+ <cd:constant name="veroffset" value="kopoffset"/>
+ <cd:constant name="coupling" value="koppeling"/>
+ <cd:constant name="couplingway" value="koppelwijze"/>
+ <cd:constant name="beforehead" value="kopvoor"/>
+ <cd:constant name="topspace" value="kopwit"/>
+ <cd:constant name="bodyfont" value="korps"/>
+ <cd:constant name="label" value="label"/>
+ <cd:constant name="empty" value="leeg"/>
+ <cd:constant name="style" value="letter"/>
+ <cd:constant name="rule" value="lijn"/>
+ <cd:constant name="rulethickness" value="lijndikte"/>
+ <cd:constant name="rulecolor" value="lijnkleur"/>
+ <cd:constant name="list" value="lijst"/>
+ <cd:constant name="leftwidth" value="linkerbreedte"/>
+ <cd:constant name="leftframe" value="linkerkader"/>
+ <cd:constant name="leftcolor" value="linkerkleur"/>
+ <cd:constant name="leftstyle" value="linkerletter"/>
+ <cd:constant name="leftmargin" value="linkermarge"/>
+ <cd:constant name="leftmargindistance" value="linkermargeafstand"/>
+ <cd:constant name="leftoffset" value="linkeroffset"/>
+ <cd:constant name="leftedge" value="linkerrand"/>
+ <cd:constant name="leftedgedistance" value="linkerrandafstand"/>
+ <cd:constant name="lefttext" value="linkertekst"/>
+ <cd:constant name="left" value="links"/>
+ <cd:constant name="nleft" value="nlinks"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="logos"/>
+ <cd:constant name="local" value="lokaal"/>
+ <cd:constant name="margin" value="marge"/>
+ <cd:constant name="margindistance" value="margeafstand"/>
+ <cd:constant name="margintext" value="margetekst"/>
+ <cd:constant name="marking" value="markering"/>
+ <cd:constant name="marcolor" value="markleur"/>
+ <cd:constant name="marstyle" value="marletter"/>
+ <cd:constant name="menu" value="menu"/>
+ <cd:constant name="splitmethod" value="splitsmethode"/>
+ <cd:constant name="textmethod" value="tekstmethode"/>
+ <cd:constant name="sidemethod" value="zijmethode"/>
+ <cd:constant name="method" value="methode"/>
+ <cd:constant name="middle" value="midden"/>
+ <cd:constant name="middletext" value="middentekst"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="monster"/>
+ <cd:constant name="after" value="na"/>
+ <cd:constant name="name" value="naam"/>
+ <cd:constant name="commandafter" value="nacommando"/>
+ <cd:constant name="ntop" value="nboven"/>
+ <cd:constant name="level" value="niveau"/>
+ <cd:constant name="levels" value="niveaus"/>
+ <cd:constant name="nbottom" value="nonder"/>
+ <cd:constant name="norm" value="norm"/>
+ <cd:constant name="nlines" value="nregels"/>
+ <cd:constant name="number" value="nummer"/>
+ <cd:constant name="numbercommand" value="nummercommando"/>
+ <cd:constant name="numbering" value="nummeren"/>
+ <cd:constant name="numbercolor" value="nummerkleur"/>
+ <cd:constant name="numberstyle" value="nummerletter"/>
+ <cd:constant name="numberseparator" value="nummerscheider"/>
+ <cd:constant name="object" value="object"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="onder"/>
+ <cd:constant name="bottomdistance" value="onderafstand"/>
+ <cd:constant name="bottomframe" value="onderkader"/>
+ <cd:constant name="bottomoffset" value="onderoffset"/>
+ <cd:constant name="bottomstate" value="onderstatus"/>
+ <cd:constant name="oddmargin" value="onevenmarge"/>
+ <cd:constant name="at" value="op"/>
+ <cd:constant name="option" value="optie"/>
+ <cd:constant name="page" value="pagina"/>
+ <cd:constant name="pagecommand" value="paginacommando"/>
+ <cd:constant name="pagecolor" value="paginakleur"/>
+ <cd:constant name="pagestyle" value="paginaletter"/>
+ <cd:constant name="pagenumber" value="paginanummer"/>
+ <cd:constant name="headnumber" value="kopnummer"/>
+ <cd:constant name="pageboundaries" value="paginaovergangen"/>
+ <cd:constant name="pagestate" value="paginastatus"/>
+ <cd:constant name="palet" value="palet"/>
+ <cd:constant name="paper" value="papier"/>
+ <cd:constant name="location" value="plaats"/>
+ <cd:constant name="placestopper" value="plaatsafsluiter"/>
+ <cd:constant name="place" value="plaatsen"/>
+ <cd:constant name="placehead" value="plaatskop"/>
+ <cd:constant name="position" value="positie"/>
+ <cd:constant name="prefix" value="prefix"/>
+ <cd:constant name="preset" value="preset"/>
+ <cd:constant name="preview" value="preview"/>
+ <cd:constant name="process" value="proces"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="punt"/>
+ <cd:constant name="arrow" value="pijl"/>
+ <cd:constant name="edge" value="rand"/>
+ <cd:constant name="edgedistance" value="randafstand"/>
+ <cd:constant name="screen" value="raster"/>
+ <cd:constant name="rightwidth" value="rechterbreedte"/>
+ <cd:constant name="rightframe" value="rechterkader"/>
+ <cd:constant name="rightcolor" value="rechterkleur"/>
+ <cd:constant name="rightstyle" value="rechterletter"/>
+ <cd:constant name="rightmargin" value="rechtermarge"/>
+ <cd:constant name="rightmargindistance" value="rechtermargeafstand"/>
+ <cd:constant name="rightoffset" value="rechteroffset"/>
+ <cd:constant name="rightedge" value="rechterrand"/>
+ <cd:constant name="rightedgedistance" value="rechterrandafstand"/>
+ <cd:constant name="righttext" value="rechtertekst"/>
+ <cd:constant name="right" value="rechts"/>
+ <cd:constant name="nright" value="nrechts"/>
+ <cd:constant name="reduction" value="reductie"/>
+ <cd:constant name="referencing" value="refereren"/>
+ <cd:constant name="line" value="regel"/>
+ <cd:constant name="linecorrection" value="regelcorrectie"/>
+ <cd:constant name="lines" value="regels"/>
+ <cd:constant name="stretch" value="rek"/>
+ <cd:constant name="resolution" value="resolutie"/>
+ <cd:constant name="rotation" value="rotatie"/>
+ <cd:constant name="orientation" value="orientatie"/>
+ <cd:constant name="horoffset" value="rugoffset"/>
+ <cd:constant name="backspace" value="rugwit"/>
+ <cd:constant name="direction" value="richting"/>
+ <cd:constant name="scale" value="schaal"/>
+ <cd:constant name="separator" value="scheider"/>
+ <cd:constant name="display" value="scherm"/>
+ <cd:constant name="scope" value="scope"/>
+ <cd:constant name="section" value="sectie"/>
+ <cd:constant name="sectionnumber" value="sectienummer"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="snijwit"/>
+ <cd:constant name="family" value="soort"/>
+ <cd:constant name="space" value="spatie"/>
+ <cd:constant name="spacing" value="spatiering"/>
+ <cd:constant name="split" value="splitsen"/>
+ <cd:constant name="splitoffset" value="splitsoffset"/>
+ <cd:constant name="indentnext" value="springvolgendein"/>
+ <cd:constant name="step" value="stap"/>
+ <cd:constant name="stack" value="stapel"/>
+ <cd:constant name="start" value="start"/>
+ <cd:constant name="state" value="status"/>
+ <cd:constant name="stop" value="stop"/>
+ <cd:constant name="radius" value="straal"/>
+ <cd:constant name="dash" value="streep"/>
+ <cd:constant name="sub" value="sub"/>
+ <cd:constant name="subtitle" value="subtitel"/>
+ <cd:constant name="symbol" value="symbool"/>
+ <cd:constant name="symbolset" value="symboolset"/>
+ <cd:constant name="symcolor" value="symkleur"/>
+ <cd:constant name="symstyle" value="symletter"/>
+ <cd:constant name="synonym" value="synoniem"/>
+ <cd:constant name="synonymcolor" value="synoniemkleur"/>
+ <cd:constant name="synonymstyle" value="synoniemletter"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="teken"/>
+ <cd:constant name="text" value="tekst"/>
+ <cd:constant name="listtext" value="lijsttekst"/>
+ <cd:constant name="textwidth" value="tekstbreedte"/>
+ <cd:constant name="textcommand" value="tekstcommando"/>
+ <cd:constant name="textsize" value="tekstformaat"/>
+ <cd:constant name="textcolor" value="tekstkleur"/>
+ <cd:constant name="textstyle" value="tekstletter"/>
+ <cd:constant name="textseparator" value="tekstscheider"/>
+ <cd:constant name="textstate" value="tekststatus"/>
+ <cd:constant name="title" value="titel"/>
+ <cd:constant name="titlestyle" value="titelletter"/>
+ <cd:constant name="titlecolor" value="titelkleur"/>
+ <cd:constant name="titledistance" value="titelafstand"/>
+ <cd:constant name="aligntitle" value="titeluitlijnen"/>
+ <cd:constant name="tolerance" value="tolerantie"/>
+ <cd:constant name="inbetween" value="tussen"/>
+ <cd:constant name="type" value="type"/>
+ <cd:constant name="align" value="uitlijnen"/>
+ <cd:constant name="urlspace" value="urlspatie"/>
+ <cd:constant name="urlalternative" value="urlvariant"/>
+ <cd:constant name="from" value="van"/>
+ <cd:constant name="alternative" value="variant"/>
+ <cd:constant name="increment" value="verhoog"/>
+ <cd:constant name="incrementnumber" value="verhoognummer"/>
+ <cd:constant name="resetnumber" value="resetnummer"/>
+ <cd:constant name="reference" value="verwijzing"/>
+ <cd:constant name="unknownreference" value="onbekendeverwijzing"/>
+ <cd:constant name="footer" value="voet"/>
+ <cd:constant name="footerdistance" value="voetafstand"/>
+ <cd:constant name="footerstate" value="voetstatus"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="volgende"/>
+ <cd:constant name="before" value="voor"/>
+ <cd:constant name="commandbefore" value="voorcommando"/>
+ <cd:constant name="previous" value="vorige"/>
+ <cd:constant name="previousnumber" value="vorigenummer"/>
+ <cd:constant name="delay" value="wachttijd"/>
+ <cd:constant name="way" value="wijze"/>
+ <cd:constant name="random" value="willekeur"/>
+ <cd:constant name="white" value="wit"/>
+ <cd:constant name="xfactor" value="xfactor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xschaal"/>
+ <cd:constant name="xstep" value="xstap"/>
+ <cd:constant name="yfactor" value="yfactor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="yschaal"/>
+ <cd:constant name="ystep" value="ystap"/>
+ <cd:constant name="samepage" value="zelfdepagina"/>
+ <cd:constant name="sidealign" value="zijuitlijnen"/>
+ <cd:constant name="side" value="zij"/>
+ <cd:constant name="fieldlayer" value="veldlaag"/>
+ <cd:constant name="textlayer" value="tekstlaag"/>
+ <cd:constant name="fieldbackgroundcolor" value="veldachtergrondkleur"/>
+ <cd:constant name="fieldframecolor" value="veldkaderkleur"/>
+ <cd:constant name="fieldoffset" value="veldoffset"/>
+ <cd:constant name="openaction" value="openactie"/>
+ <cd:constant name="closeaction" value="sluitactie"/>
+ <cd:constant name="openpageaction" value="openpaginaactie"/>
+ <cd:constant name="closepageaction" value="sluitpaginaactie"/>
+ <cd:constant name="clickin" value="klikin"/>
+ <cd:constant name="clickout" value="klikuit"/>
+ <cd:constant name="regionin" value="gebiedin"/>
+ <cd:constant name="regionout" value="gebieduit"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusuit"/>
+ <cd:constant name="afterkey" value="natoets"/>
+ <cd:constant name="format" value="formatteer"/>
+ <cd:constant name="validate" value="valideer"/>
+ <cd:constant name="calculate" value="bereken"/>
+ <cd:constant name="click" value="klik"/>
+ <cd:constant name="vcommand" value="vcommando"/>
+ <cd:constant name="icommand" value="icommando"/>
+ <cd:constant name="ccommand" value="ccommando"/>
+ <cd:constant name="textdistance" value="tekstafstand"/>
+ <cd:constant name="textmargin" value="tekstmarge"/>
+ <cd:constant name="keyword" value="trefwoord"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="aan"/>
+ <cd:variable name="serried" value="aanelkaar"/>
+ <cd:variable name="joinedup" value="aansluitend"/>
+ <cd:variable name="absolute" value="absoluut"/>
+ <cd:variable name="background" value="achtergrond"/>
+ <cd:variable name="backward" value="achteruit"/>
+ <cd:variable name="subbackward" value="subachteruit"/>
+ <cd:variable name="action" value="actie"/>
+ <cd:variable name="stopper" value="afsluiter"/>
+ <cd:variable name="paragraph" value="alinea"/>
+ <cd:variable name="all" value="alles"/>
+ <cd:variable name="always" value="altijd"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autointro"/>
+ <cd:variable name="both" value="beide"/>
+ <cd:variable name="inner" value="binnen"/>
+ <cd:variable name="blank" value="blanko"/>
+ <cd:variable name="disable" value="blokkeer"/>
+ <cd:variable name="top" value="boven"/>
+ <cd:variable name="wide" value="breed"/>
+ <cd:variable name="width" value="breedte"/>
+ <cd:variable name="outer" value="buiten"/>
+ <cd:variable name="numbers" value="cijfers"/>
+ <cd:variable name="Numbers" value="Cijfers"/>
+ <cd:variable name="command" value="commando"/>
+ <cd:variable name="commands" value="commandos"/>
+ <cd:variable name="concept" value="concept"/>
+ <cd:variable name="day" value="dag"/>
+ <cd:variable name="date" value="datum"/>
+ <cd:variable name="default" value="default"/>
+ <cd:variable name="final" value="definitief"/>
+ <cd:variable name="depth" value="diepte"/>
+ <cd:variable name="doublesided" value="dubbelzijdig"/>
+ <cd:variable name="first" value="eerste"/>
+ <cd:variable name="each" value="elk"/>
+ <cd:variable name="singlesided" value="enkelzijdig"/>
+ <cd:variable name="somewhere" value="ergens"/>
+ <cd:variable name="nowhere" value="nergens"/>
+ <cd:variable name="even" value="even"/>
+ <cd:variable name="external" value="extern"/>
+ <cd:variable name="file" value="file"/>
+ <cd:variable name="flexible" value="flexibel"/>
+ <cd:variable name="force" value="forceer"/>
+ <cd:variable name="used" value="gebruikt"/>
+ <cd:variable name="none" value="geen"/>
+ <cd:variable name="nomarking" value="geenmarkering"/>
+ <cd:variable name="nonumber" value="geennummer"/>
+ <cd:variable name="nowhite" value="geenwit"/>
+ <cd:variable name="rotated" value="geroteerd"/>
+ <cd:variable name="mirrored" value="gespiegeld"/>
+ <cd:variable name="global" value="globaal"/>
+ <cd:variable name="grid" value="grid"/>
+ <cd:variable name="big" value="groot"/>
+ <cd:variable name="bigbodyfont" value="grootkorps"/>
+ <cd:variable name="bigpreference" value="grotevoorkeur"/>
+ <cd:variable name="gray" value="grijs"/>
+ <cd:variable name="halfline" value="halveregel"/>
+ <cd:variable name="keep" value="handhaaf"/>
+ <cd:variable name="hanging" value="hangend"/>
+ <cd:variable name="spacing" value="spatiering"/>
+ <cd:variable name="nospacing" value="geenspatiering"/>
+ <cd:variable name="repeat" value="herhaal"/>
+ <cd:variable name="fix" value="herstel"/>
+ <cd:variable name="here" value="hier"/>
+ <cd:variable name="header" value="hoofd"/>
+ <cd:variable name="high" value="hoog"/>
+ <cd:variable name="height" value="hoogte"/>
+ <cd:variable name="horizontal" value="horizontaal"/>
+ <cd:variable name="current" value="huidige"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="geenhz"/>
+ <cd:variable name="italic" value="italic"/>
+ <cd:variable name="inherit" value="erf"/>
+ <cd:variable name="inleft" value="inlinker"/>
+ <cd:variable name="inmargin" value="inmarge"/>
+ <cd:variable name="inright" value="inrechter"/>
+ <cd:variable name="interaction" value="interactie"/>
+ <cd:variable name="intext" value="intekst"/>
+ <cd:variable name="intro" value="intro"/>
+ <cd:variable name="its" value="its"/>
+ <cd:variable name="yes" value="ja"/>
+ <cd:variable name="year" value="jaar"/>
+ <cd:variable name="frame" value="kader"/>
+ <cd:variable name="marginedge" value="kantlijn"/>
+ <cd:variable name="cap" value="kap"/>
+ <cd:variable name="capital" value="kapitaal"/>
+ <cd:variable name="referral" value="kenmerk"/>
+ <cd:variable name="small" value="klein"/>
+ <cd:variable name="smallnormal" value="kleinnormaal"/>
+ <cd:variable name="smallslanted" value="kleinschuin"/>
+ <cd:variable name="smallslantedbold" value="kleinschuinvet"/>
+ <cd:variable name="smallitalic" value="kleinitalic"/>
+ <cd:variable name="smallitalicbold" value="kleinitalicvet"/>
+ <cd:variable name="smalltype" value="kleintype"/>
+ <cd:variable name="smallbold" value="kleinvet"/>
+ <cd:variable name="smallboldslanted" value="kleinvetschuin"/>
+ <cd:variable name="smallbolditalic" value="kleinvetitalic"/>
+ <cd:variable name="smallbodyfont" value="kleinkorps"/>
+ <cd:variable name="toggle" value="toggle"/>
+ <cd:variable name="color" value="kleur"/>
+ <cd:variable name="column" value="kolom"/>
+ <cd:variable name="columns" value="kolommen"/>
+ <cd:variable name="head" value="kop"/>
+ <cd:variable name="low" value="laag"/>
+ <cd:variable name="last" value="laatste"/>
+ <cd:variable name="label" value="label"/>
+ <cd:variable name="lohi" value="laho"/>
+ <cd:variable name="tall" value="lang"/>
+ <cd:variable name="empty" value="leeg"/>
+ <cd:variable name="Character" value="Letter"/>
+ <cd:variable name="character" value="letter"/>
+ <cd:variable name="Characters" value="Letters"/>
+ <cd:variable name="characters" value="letters"/>
+ <cd:variable name="landscape" value="liggend"/>
+ <cd:variable name="rule" value="lijn"/>
+ <cd:variable name="list" value="lijst"/>
+ <cd:variable name="leftmargin" value="linkermarge"/>
+ <cd:variable name="leftpage" value="linkerpagina"/>
+ <cd:variable name="leftedge" value="linkerrand"/>
+ <cd:variable name="left" value="links"/>
+ <cd:variable name="local" value="lokaal"/>
+ <cd:variable name="new" value="nieuw"/>
+ <cd:variable name="MONTH" value="MAAND"/>
+ <cd:variable name="month" value="maand"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="marge"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="mediaeval"/>
+ <cd:variable name="medium" value="middel"/>
+ <cd:variable name="middle" value="midden"/>
+ <cd:variable name="after" value="na"/>
+ <cd:variable name="name" value="naam"/>
+ <cd:variable name="opposite" value="naast"/>
+ <cd:variable name="no" value="nee"/>
+ <cd:variable name="negative" value="negatief"/>
+ <cd:variable name="positive" value="positief"/>
+ <cd:variable name="not" value="niet"/>
+ <cd:variable name="never" value="nooit"/>
+ <cd:variable name="normal" value="normaal"/>
+ <cd:variable name="number" value="nummer"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="onbekend"/>
+ <cd:variable name="bottom" value="onder"/>
+ <cd:variable name="odd" value="oneven"/>
+ <cd:variable name="packed" value="opelkaar"/>
+ <cd:variable name="unpacked" value="vanelkaar"/>
+ <cd:variable name="makeup" value="opmaak"/>
+ <cd:variable name="atmargin" value="opmarge"/>
+ <cd:variable name="overlay" value="overlay"/>
+ <cd:variable name="page" value="pagina"/>
+ <cd:variable name="pagenumber" value="paginanummer"/>
+ <cd:variable name="paper" value="papier"/>
+ <cd:variable name="display" value="scherm"/>
+ <cd:variable name="reverse" value="omgekeerd"/>
+ <cd:variable name="fit" value="passend"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="preview"/>
+ <cd:variable name="program" value="programma"/>
+ <cd:variable name="process" value="proces"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="punt"/>
+ <cd:variable name="ran" value="ran"/>
+ <cd:variable name="edge" value="rand"/>
+ <cd:variable name="screen" value="raster"/>
+ <cd:variable name="rectangular" value="recht"/>
+ <cd:variable name="rightmargin" value="rechtermarge"/>
+ <cd:variable name="rightpage" value="rechterpagina"/>
+ <cd:variable name="rightedge" value="rechterrand"/>
+ <cd:variable name="right" value="rechts"/>
+ <cd:variable name="line" value="regel"/>
+ <cd:variable name="register" value="register"/>
+ <cd:variable name="relative" value="relatief"/>
+ <cd:variable name="reset" value="reset"/>
+ <cd:variable name="Romannumerals" value="Romeins"/>
+ <cd:variable name="romannumerals" value="romeins"/>
+ <cd:variable name="greek" value="grieks"/>
+ <cd:variable name="Greek" value="Grieks"/>
+ <cd:variable name="round" value="rond"/>
+ <cd:variable name="rotate" value="roteer"/>
+ <cd:variable name="stretch" value="rek"/>
+ <cd:variable name="backspace" value="rugwit"/>
+ <cd:variable name="broad" value="ruim"/>
+ <cd:variable name="row" value="rij"/>
+ <cd:variable name="slanted" value="schuin"/>
+ <cd:variable name="slantedbold" value="schuinvet"/>
+ <cd:variable name="synchronize" value="synchroniseer"/>
+ <cd:variable name="italicbold" value="italicvet"/>
+ <cd:variable name="sectionnumber" value="sectienummer"/>
+ <cd:variable name="narrow" value="smal"/>
+ <cd:variable name="cutspace" value="snijwit"/>
+ <cd:variable name="tolerant" value="soepel"/>
+ <cd:variable name="space" value="spatie"/>
+ <cd:variable name="standard" value="standaard"/>
+ <cd:variable name="start" value="start"/>
+ <cd:variable name="stop" value="stop"/>
+ <cd:variable name="strict" value="streng"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="sub"/>
+ <cd:variable name="sym" value="sym"/>
+ <cd:variable name="symbol" value="symbool"/>
+ <cd:variable name="text" value="tekst"/>
+ <cd:variable name="back" value="terug"/>
+ <cd:variable name="test" value="test"/>
+ <cd:variable name="inbetween" value="tussen"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="off" value="uit"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="vast"/>
+ <cd:variable name="loose" value="los"/>
+ <cd:variable name="continue" value="verder"/>
+ <cd:variable name="vertical" value="vertikaal"/>
+ <cd:variable name="bold" value="vet"/>
+ <cd:variable name="boldslanted" value="vetschuin"/>
+ <cd:variable name="bolditalic" value="vetitalic"/>
+ <cd:variable name="quadruple" value="viertal"/>
+ <cd:variable name="footer" value="voet"/>
+ <cd:variable name="next" value="volgende"/>
+ <cd:variable name="before" value="voor"/>
+ <cd:variable name="foreground" value="voorgrond"/>
+ <cd:variable name="preference" value="voorkeur"/>
+ <cd:variable name="temporary" value="voorlopig"/>
+ <cd:variable name="forward" value="vooruit"/>
+ <cd:variable name="subforward" value="subvooruit"/>
+ <cd:variable name="previous" value="vorige"/>
+ <cd:variable name="value" value="waarde"/>
+ <cd:variable name="week" value="week"/>
+ <cd:variable name="weekday" value="weekdag"/>
+ <cd:variable name="WEEKDAY" value="WEEKDAG"/>
+ <cd:variable name="random" value="willekeurig"/>
+ <cd:variable name="white" value="wit"/>
+ <cd:variable name="very" value="zeer"/>
+ <cd:variable name="verytolerant" value="zeersoepel"/>
+ <cd:variable name="verystrict" value="zeerstreng"/>
+ <cd:variable name="see" value="zie"/>
+ <cd:variable name="smallcaps" value="smallcaps"/>
+ <cd:variable name="WORD" value="WOORD"/>
+ <cd:variable name="firstpage" value="eerstepagina"/>
+ <cd:variable name="firstcolumn" value="eerstekolom"/>
+ <cd:variable name="previouspage" value="vorigepagina"/>
+ <cd:variable name="nextpage" value="volgendepagina"/>
+ <cd:variable name="lastpage" value="laatstepagina"/>
+ <cd:variable name="lastcolumn" value="laatstekolom"/>
+ <cd:variable name="lastpagenumber" value="laatstepaginanummer"/>
+ <cd:variable name="subpage" value="subpagina"/>
+ <cd:variable name="firstsubpage" value="eerstesubpagina"/>
+ <cd:variable name="previoussubpage" value="vorigesubpagina"/>
+ <cd:variable name="nextsubpage" value="volgendesubpagina"/>
+ <cd:variable name="lastsubpage" value="laatstesubpagina"/>
+ <cd:variable name="nextevenpage" value="volgendeevenpagina"/>
+ <cd:variable name="nextoddpage" value="volgendeonevenpagina"/>
+ <cd:variable name="previousevenpage" value="vorigeevenpagina"/>
+ <cd:variable name="previousoddpage" value="vorigeonevenpagina"/>
+ <cd:variable name="readonly" value="alleenleesbaar"/>
+ <cd:variable name="required" value="verplicht"/>
+ <cd:variable name="protected" value="beschermd"/>
+ <cd:variable name="sorted" value="gesorteerd"/>
+ <cd:variable name="unavailable" value="nietbeschikbaar"/>
+ <cd:variable name="hidden" value="verborgen"/>
+ <cd:variable name="printable" value="printbaar"/>
+ <cd:variable name="bookmark" value="bookmark"/>
+ <cd:variable name="nocheck" value="geencontrole"/>
+ <cd:variable name="innermargin" value="binnenmarge"/>
+ <cd:variable name="outermargin" value="buitenmarge"/>
+ <cd:variable name="inneredge" value="binnenrand"/>
+ <cd:variable name="outeredge" value="buitenrand"/>
+ <cd:variable name="controls" value="sturing"/>
+ <cd:variable name="nothanging" value="niethangend"/>
+ <cd:variable name="hyphenated" value="afgebroken"/>
+ <cd:variable name="nothyphenated" value="nietafgebroken"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="doornummering"/>
+ <cd:variable name="description" value="doordefinitie"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="sturing"/>
+ <cd:constant name="global" value="globaal"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="conversie"/>
+ <cd:variable name="by" value="per"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="calligrafie"/>
+ <cd:variable name="handwritten" value="handschrift"/>
+ <cd:variable name="sansserif" value="schreefloos"/>
+ <cd:variable name="roman" value="romaan"/>
+ <cd:variable name="teletype" value="teletype"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="regular"/>
+ <cd:variable name="support" value="support"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="beginvan"/>
+ <cd:element name="end" value="eindvan"/>
+ <cd:element name="coupled" value="gekoppelde"/>
+ <cd:element name="get" value="haal"/>
+ <cd:element name="currentlocal" value="huidigelokale"/>
+ <cd:element name="endsetup" value="in"/>
+ <cd:element name="load" value="laad"/>
+ <cd:element name="emptyone" value="leeg"/>
+ <cd:element name="emptytwo" value="lege"/>
+ <cd:element name="list" value="lijst"/>
+ <cd:element name="listof" value="lijstmet"/>
+ <cd:element name="local" value="lokale"/>
+ <cd:element name="place" value="plaats"/>
+ <cd:element name="reserve" value="reserveer"/>
+ <cd:element name="start" value="start"/>
+ <cd:element name="setup" value="stel"/>
+ <cd:element name="stop" value="stop"/>
+ <cd:element name="increment" value="verhoog"/>
+ <cd:element name="next" value="volgende"/>
+ <cd:element name="complete" value="volledige"/>
+ <cd:element name="previous" value="vorige"/>
+ <cd:element name="previouslocal" value="vorigelokale"/>
+ <cd:element name="see" value="zie"/>
+ <cd:element name="type" value="type"/>
+ <cd:element name="makeup" value="opmaak"/>
+ <cd:element name="text" value="tekst"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="buffer"/>
+ <cd:variable name="linenote" value="regelnoot"/>
+ <cd:variable name="comment" value="commentaar"/>
+ <cd:variable name="interactionmenu" value="interactiemenu"/>
+ <cd:variable name="postponing" value="uitstellen"/>
+ <cd:variable name="hiding" value="verbergen"/>
+ <cd:variable name="tabulate" value="tabulatie"/>
+ <cd:variable name="tabulatehead" value="tabulatiekop"/>
+ <cd:variable name="tabulatetail" value="tabulatiestaart"/>
+ <cd:variable name="fact" value="gegeven"/>
+ <cd:variable name="legend" value="legenda"/>
+ <cd:variable name="formula" value="formule"/>
+ <cd:variable name="tablehead" value="tabelkop"/>
+ <cd:variable name="tabletail" value="tabelstaart"/>
+ <cd:variable name="setups" value="instellingen"/>
+ <cd:variable name="helptext" value="helptekst"/>
+ <cd:variable name="localenvironment" value="deelomgeving"/>
+ <cd:variable name="sectionblockenvironment" value="sectieblokomgeving"/>
+ <cd:variable name="pagecomment" value="paginacommentaar"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="EerstePagina"/>
+ <cd:variable name="PreviousPage" value="VorigePagina"/>
+ <cd:variable name="NextPage" value="VolgendePagina"/>
+ <cd:variable name="LastPage" value="LaatstePagina"/>
+ <cd:variable name="PreviousJump" value="VorigeSprong"/>
+ <cd:variable name="NextJump" value="VolgendeSprong"/>
+ <cd:variable name="ToggleViewer" value="WisselViewer"/>
+ <cd:variable name="ExitViewer" value="VerlaatViewer"/>
+ <cd:variable name="CloseDocument" value="SluitDocument"/>
+ <cd:variable name="SaveDocument" value="BewaarDocument"/>
+ <cd:variable name="SaveNamedDocument" value="BewaarDocumentOpNaam"/>
+ <cd:variable name="OpenNamedDocument" value="OpenDocumentOpNaam"/>
+ <cd:variable name="ViewerHelp" value="ViewerHelp"/>
+ <cd:variable name="PrintDocument" value="PrintDocument"/>
+ <cd:variable name="SearchDocument" value="DoorzoekDocument"/>
+ <cd:variable name="SearchAgain" value="HerhaalZoeken"/>
+ <cd:variable name="Query" value="RaadpleegDocument"/>
+ <cd:variable name="QueryAgain" value="HerhaalRaadplegen"/>
+ <cd:variable name="GotoPage" value="GaNaarPagina"/>
+ <cd:variable name="StartMovie" value="StartFilm"/>
+ <cd:variable name="StopMovie" value="StopFilm"/>
+ <cd:variable name="PauseMovie" value="PauzeerFilm"/>
+ <cd:variable name="ResumeMovie" value="HervatFilm"/>
+ <cd:variable name="StartSound" value="StartGeluid"/>
+ <cd:variable name="StopSound" value="StopGeluid"/>
+ <cd:variable name="PauseSound" value="PauzeerGeluid"/>
+ <cd:variable name="ResumeSound" value="HervatGeluid"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauzeerRendering"/>
+ <cd:variable name="ResumeRendering" value="HervatRendering"/>
+ <cd:variable name="SaveForm" value="BewaarFormulier"/>
+ <cd:variable name="LoadForm" value="LaadFormulier"/>
+ <cd:variable name="ResetForm" value="ResetFormulier"/>
+ <cd:variable name="SubmitForm" value="VerzendFormulier"/>
+ <cd:variable name="HideField" value="VerbergVeld"/>
+ <cd:variable name="ShowField" value="ToonVeld"/>
+ <cd:variable name="FitWidth" value="BreedtePassend"/>
+ <cd:variable name="FitHeight" value="HoogtePassend"/>
+ <cd:variable name="HideLayer" value="VerbergLaag"/>
+ <cd:variable name="VideLayer" value="ToonLaag"/>
+ <cd:variable name="ToggleLayer" value="WisselLaag"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="Nieuw"/>
+ <cd:variable name="Balloon" value="Ballon"/>
+ <cd:variable name="Addition" value="Toevoeging"/>
+ <cd:variable name="Help" value="Help"/>
+ <cd:variable name="Paragraph" value="Paragraaf"/>
+ <cd:variable name="Key" value="Sleutel"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="taal"/>
+ <cd:command name="mainlanguage" value="hoofdtaal"/>
+ <cd:command name="translate" value="vertaal"/>
+ <cd:command name="installlanguage" value="installeertaal"/>
+ <cd:command name="setuplanguage" value="steltaalin"/>
+ <cd:command name="showmakeup" value="toonopmaak"/>
+ <cd:command name="useencoding" value="usecodering"/>
+ <cd:command name="usespecials" value="gebruikspecials"/>
+ <cd:command name="defineoutput" value="definieeruitvoer"/>
+ <cd:command name="setupoutput" value="steluitvoerin"/>
+ <cd:command name="defineaccent" value="definieeraccent"/>
+ <cd:command name="definecharacter" value="definieerkarakter"/>
+ <cd:command name="definecommand" value="definieercommando"/>
+ <cd:command name="startcoding" value="startcodering"/>
+ <cd:command name="stopcoding" value="stopcodering"/>
+ <cd:command name="definebodyfontenvironment" value="definieerkorpsomgeving"/>
+ <cd:command name="setupbodyfontenvironment" value="stelkorpsomgevingin"/>
+ <cd:command name="definebodyfont" value="definieerkorps"/>
+ <cd:command name="definefont" value="definieerfont"/>
+ <cd:command name="definefontsynonym" value="definieerfontsynoniem"/>
+ <cd:command name="definestyle" value="definieerletter"/>
+ <cd:command name="definefontstyle" value="definieerfontstijl"/>
+ <cd:command name="setupstrut" value="stelstrutin"/>
+ <cd:command name="setuptype" value="steltypein"/>
+ <cd:command name="type" value="type"/>
+ <cd:command name="typ" value="typ"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definieertypen"/>
+ <cd:command name="definetype" value="definieertype"/>
+ <cd:command name="setuptyping" value="steltypenin"/>
+ <cd:command name="typefile" value="typefile"/>
+ <cd:command name="setupfootnotes" value="stelvoetnotenin"/>
+ <cd:command name="setupfootnotedefinition" value="stelvoetnootdefinitiein"/>
+ <cd:command name="note" value="noot"/>
+ <cd:command name="footnote" value="voetnoot"/>
+ <cd:command name="footnotetext" value="voetnoottekst"/>
+ <cd:command name="startlocalfootnotes" value="startlokalevoetnoten"/>
+ <cd:command name="stoplocalfootnotes" value="stoplokalevoetnoten"/>
+ <cd:command name="placelocalfootnotes" value="plaatslokalevoetnoten"/>
+ <cd:command name="placefootnotes" value="plaatsvoetnoten"/>
+ <cd:command name="currentdate" value="huidigedatum"/>
+ <cd:command name="date" value="datum"/>
+ <cd:command name="weekday" value="weekdag"/>
+ <cd:command name="WEEKDAY" value="WEEKDAG"/>
+ <cd:command name="month" value="maand"/>
+ <cd:command name="MONTH" value="MAAND"/>
+ <cd:command name="Numbers" value="Cijfers"/>
+ <cd:command name="numbers" value="cijfers"/>
+ <cd:command name="romannumerals" value="romeins"/>
+ <cd:command name="Romannumerals" value="Romeins"/>
+ <cd:command name="character" value="letter"/>
+ <cd:command name="Character" value="Letter"/>
+ <cd:command name="characters" value="letters"/>
+ <cd:command name="Characters" value="Letters"/>
+ <cd:command name="unknown" value="onbekend"/>
+ <cd:command name="definesymbol" value="definieersymbool"/>
+ <cd:command name="definefiguresymbol" value="definieerfiguursymbool"/>
+ <cd:command name="symbol" value="symbool"/>
+ <cd:command name="setupsymbolset" value="stelsymboolsetin"/>
+ <cd:command name="showsymbolset" value="toonsymboolset"/>
+ <cd:command name="startsymbolset" value="startsymboolset"/>
+ <cd:command name="usesymbols" value="gebruiksymbolen"/>
+ <cd:command name="defineconversion" value="definieerconversie"/>
+ <cd:command name="convertnumber" value="converteernummer"/>
+ <cd:command name="setupcapitals" value="stelkapitalenin"/>
+ <cd:command name="smallcapped" value="kap"/>
+ <cd:command name="notsmallcapped" value="nokap"/>
+ <cd:command name="CAPPED" value="KAP"/>
+ <cd:command name="SmallCapped" value="Kap"/>
+ <cd:command name="SmallCaps" value="Kaps"/>
+ <cd:command name="WORD" value="WOORD"/>
+ <cd:command name="WORDS" value="WOORDEN"/>
+ <cd:command name="Word" value="Woord"/>
+ <cd:command name="Words" value="Woorden"/>
+ <cd:command name="stretched" value="uitgerekt"/>
+ <cd:command name="overstrike" value="doorstreep"/>
+ <cd:command name="overstrikes" value="doorstrepen"/>
+ <cd:command name="overbar" value="overstreep"/>
+ <cd:command name="overbars" value="overstrepen"/>
+ <cd:command name="underbar" value="onderstreep"/>
+ <cd:command name="underbars" value="onderstrepen"/>
+ <cd:command name="setupunderbar" value="stelonderstrepenin"/>
+ <cd:command name="setupbodyfont" value="stelkorpsin"/>
+ <cd:command name="switchtobodyfont" value="switchnaarkorps"/>
+ <cd:command name="showbodyfont" value="toonkorps"/>
+ <cd:command name="showbodyfontenvironment" value="toonkorpsomgeving"/>
+ <cd:command name="headtext" value="koptekst"/>
+ <cd:command name="labeltext" value="labeltekst"/>
+ <cd:command name="LABELTEXT" value="LABELTEKST"/>
+ <cd:command name="setupheadtext" value="stelkoptekstin"/>
+ <cd:command name="setuplabeltext" value="stellabeltekstin"/>
+ <cd:command name="marginrule" value="kantlijn"/>
+ <cd:command name="startmarginrule" value="startkantlijn"/>
+ <cd:command name="stopmarginrule" value="stopkantlijn"/>
+ <cd:command name="setupmarginrules" value="stelkantlijnin"/>
+ <cd:command name="blackrule" value="blokje"/>
+ <cd:command name="blackrules" value="blokjes"/>
+ <cd:command name="setupblackrules" value="stelblokjesin"/>
+ <cd:command name="setupscreens" value="stelrastersin"/>
+ <cd:command name="framed" value="omlijnd"/>
+ <cd:command name="inframed" value="inlijnd"/>
+ <cd:command name="mframed" value="wilijnd"/>
+ <cd:command name="inmframed" value="inwilijnd"/>
+ <cd:command name="setupframed" value="stelomlijndin"/>
+ <cd:command name="setuplinewidth" value="stellijndiktein"/>
+ <cd:command name="setupthinrules" value="steldunnelijnenin"/>
+ <cd:command name="thinrule" value="dunnelijn"/>
+ <cd:command name="thinrules" value="dunnelijnen"/>
+ <cd:command name="hairline" value="haarlijn"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="definieeromlijnd"/>
+ <cd:command name="defineframedtext" value="definieerkadertekst"/>
+ <cd:command name="setupframedtexts" value="stelkadertekstenin"/>
+ <cd:command name="defineoverlay" value="definieeroverlay"/>
+ <cd:command name="definelayer" value="definieerlayer"/>
+ <cd:command name="background" value="achtergrond"/>
+ <cd:command name="startbackground" value="startachtergrond"/>
+ <cd:command name="stopbackground" value="stopachtergrond"/>
+ <cd:command name="setupbackground" value="stelachtergrondin"/>
+ <cd:command name="fillinrules" value="invullijnen"/>
+ <cd:command name="setupfillinrules" value="stelinvullijnenin"/>
+ <cd:command name="fillintext" value="invultekst"/>
+ <cd:command name="setupfillinlines" value="stelinvulregelsin"/>
+ <cd:command name="fillinline" value="invulregel"/>
+ <cd:command name="setuptextrules" value="steltekstlijnenin"/>
+ <cd:command name="textrule" value="tekstlijn"/>
+ <cd:command name="starttextrule" value="starttekstlijn"/>
+ <cd:command name="stoptextrule" value="stoptekstlijn"/>
+ <cd:command name="usemodule" value="gebruikmodule"/>
+ <cd:command name="usemodules" value="gebruikmodules"/>
+ <cd:command name="starttext" value="starttekst"/>
+ <cd:command name="stoptext" value="stoptekst"/>
+ <cd:command name="margintitle" value="margetitel"/>
+ <cd:command name="marginword" value="margewoord"/>
+ <cd:command name="margintext" value="margetekst"/>
+ <cd:command name="inleft" value="inlinker"/>
+ <cd:command name="inmargin" value="inmarge"/>
+ <cd:command name="inothermargin" value="inanderemarge"/>
+ <cd:command name="inright" value="inrechter"/>
+ <cd:command name="ininner" value="inbinnen"/>
+ <cd:command name="inouter" value="inbuiten"/>
+ <cd:command name="startmarginblock" value="startmargeblok"/>
+ <cd:command name="stopmarginblock" value="stopmargeblok"/>
+ <cd:command name="defineinmargin" value="definieerinmarge"/>
+ <cd:command name="setupinmargin" value="stelinmargein"/>
+ <cd:command name="setupmarginblocks" value="stelmargeblokkenin"/>
+ <cd:command name="inleftedge" value="inlinkerrand"/>
+ <cd:command name="inleftmargin" value="inlinkermarge"/>
+ <cd:command name="inrightmargin" value="inrechtermarge"/>
+ <cd:command name="inrightedge" value="inrechterrand"/>
+ <cd:command name="atleftmargin" value="oplinkermarge"/>
+ <cd:command name="atrightmargin" value="oprechtermarge"/>
+ <cd:command name="wordright" value="woordrechts"/>
+ <cd:command name="defineblank" value="definieerblanko"/>
+ <cd:command name="blank" value="blanko"/>
+ <cd:command name="setupblank" value="stelblankoin"/>
+ <cd:command name="correctwhitespace" value="corrigeerwitruimte"/>
+ <cd:command name="fixedspaces" value="vastespaties"/>
+ <cd:command name="fixedspace" value="vastespatie"/>
+ <cd:command name="nospace" value="geenspatie"/>
+ <cd:command name="space" value="spatie"/>
+ <cd:command name="nowhitespace" value="geenwitruimte"/>
+ <cd:command name="packed" value="opelkaar"/>
+ <cd:command name="startpacked" value="startopelkaar"/>
+ <cd:command name="stoppacked" value="stopopelkaar"/>
+ <cd:command name="startunpacked" value="startvanelkaar"/>
+ <cd:command name="stopunpacked" value="stopvanelkaar"/>
+ <cd:command name="startlinecorrection" value="startregelcorrectie"/>
+ <cd:command name="stoplinecorrection" value="stopregelcorrectie"/>
+ <cd:command name="godown" value="omlaag"/>
+ <cd:command name="whitespace" value="witruimte"/>
+ <cd:command name="noindenting" value="nietinspringen"/>
+ <cd:command name="indenting" value="inspringen"/>
+ <cd:command name="setupindenting" value="stelinspringenin"/>
+ <cd:command name="startalignment" value="startuitlijnen"/>
+ <cd:command name="stopalignment" value="stopuitlijnen"/>
+ <cd:command name="startlines" value="startregels"/>
+ <cd:command name="stoplines" value="stopregels"/>
+ <cd:command name="setupparagraphnumbering" value="stelparagraafnummerenin"/>
+ <cd:command name="setuplinenumbering" value="stelregelnummerenin"/>
+ <cd:command name="startlinenumbering" value="startregelnummeren"/>
+ <cd:command name="stoplinenumbering" value="stopregelnummeren"/>
+ <cd:command name="startline" value="startregel"/>
+ <cd:command name="stopline" value="stopregel"/>
+ <cd:command name="someline" value="eenregel"/>
+ <cd:command name="inline" value="inregel"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="legeregels"/>
+ <cd:command name="setuplines" value="stelregelsin"/>
+ <cd:command name="startnarrower" value="startsmaller"/>
+ <cd:command name="stopnarrower" value="stopsmaller"/>
+ <cd:command name="setupnarrower" value="stelsmallerin"/>
+ <cd:command name="definetabulate" value="definieertabulatie"/>
+ <cd:command name="setuptabulate" value="steltabulatiein"/>
+ <cd:command name="starttable" value="starttabel"/>
+ <cd:command name="stoptable" value="stoptabel"/>
+ <cd:command name="starttables" value="starttabellen"/>
+ <cd:command name="stoptables" value="stoptabellen"/>
+ <cd:command name="setuptables" value="steltabellenin"/>
+ <cd:command name="definetabletemplate" value="definieertabelvorm"/>
+ <cd:command name="page" value="pagina"/>
+ <cd:command name="testcolumn" value="testkolom"/>
+ <cd:command name="testpage" value="testpagina"/>
+ <cd:command name="couplepage" value="koppelpagina"/>
+ <cd:command name="pagetype" value="soortpagina"/>
+ <cd:command name="processpage" value="verwerkpagina"/>
+ <cd:command name="couplepaper" value="koppelpapier"/>
+ <cd:command name="selectpaper" value="selecteerpapier"/>
+ <cd:command name="screen" value="scherm"/>
+ <cd:command name="definesection" value="definieersectie"/>
+ <cd:command name="definesectionblock" value="definieersectieblok"/>
+ <cd:command name="setupsectionblock" value="stelsectieblokin"/>
+ <cd:command name="setupsection" value="stelsectiein"/>
+ <cd:command name="notopandbottomlines" value="geenbovenenonderregels"/>
+ <cd:command name="noheaderandfooterlines" value="geenhoofdenvoetregels"/>
+ <cd:command name="setuptop" value="stelbovenin"/>
+ <cd:command name="setuptoptexts" value="stelboventekstenin"/>
+ <cd:command name="setupheader" value="stelhoofdin"/>
+ <cd:command name="setupheadertexts" value="stelhoofdtekstenin"/>
+ <cd:command name="setuppagenumbering" value="stelpaginanummeringin"/>
+ <cd:command name="getnumber" value="haalnummer"/>
+ <cd:command name="incrementnumber" value="verhoognummer"/>
+ <cd:command name="decrementnumber" value="verlaagnummer"/>
+ <cd:command name="resetnumber" value="resetnummer"/>
+ <cd:command name="setnumber" value="setnummer"/>
+ <cd:command name="setupnumber" value="stelnummerin"/>
+ <cd:command name="setupbottom" value="stelonderin"/>
+ <cd:command name="setupbottomtexts" value="stelondertekstenin"/>
+ <cd:command name="setupfooter" value="stelvoetin"/>
+ <cd:command name="setupfootertexts" value="stelvoettekstenin"/>
+ <cd:command name="setuppagenumber" value="stelpaginanummerin"/>
+ <cd:command name="setupsubpagenumber" value="stelsubpaginanummerin"/>
+ <cd:command name="subpagenumber" value="subpaginanummer"/>
+ <cd:command name="setuptext" value="steltekstin"/>
+ <cd:command name="setuptexttexts" value="stelteksttekstenin"/>
+ <cd:command name="definetext" value="definieertekst"/>
+ <cd:command name="pagenumber" value="paginanummer"/>
+ <cd:command name="completepagenumber" value="volledigepaginanummer"/>
+ <cd:command name="placepagenumber" value="plaatspaginanummer"/>
+ <cd:command name="items" value="items"/>
+ <cd:command name="setupitems" value="stelitemsin"/>
+ <cd:command name="leftaligned" value="regellinks"/>
+ <cd:command name="midaligned" value="regelmidden"/>
+ <cd:command name="rightaligned" value="regelrechts"/>
+ <cd:command name="startcolumns" value="startkolommen"/>
+ <cd:command name="stopcolumns" value="stopkolommen"/>
+ <cd:command name="setupcolumns" value="stelkolommenin"/>
+ <cd:command name="column" value="kolom"/>
+ <cd:command name="head" value="kop"/>
+ <cd:command name="but" value="but"/>
+ <cd:command name="item" value="som"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="mar"/>
+ <cd:command name="sym" value="sym"/>
+ <cd:command name="its" value="its"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="kopsym"/>
+ <cd:command name="defineitemgroup" value="definieeritemgroep"/>
+ <cd:command name="setupitemgroup" value="stelitemgroepin"/>
+ <cd:command name="setupitemgroups" value="stelitemgroepenin"/>
+ <cd:command name="definehead" value="definieerkop"/>
+ <cd:command name="setuphead" value="stelkopin"/>
+ <cd:command name="setupheads" value="stelkoppenin"/>
+ <cd:command name="setupheadnumber" value="stelkopnummerin"/>
+ <cd:command name="headnumber" value="kopnummer"/>
+ <cd:command name="currentheadnumber" value="huidigekopnummer"/>
+ <cd:command name="determineheadnumber" value="bepaalkopnummer"/>
+ <cd:command name="resetmarking" value="resetmarkering"/>
+ <cd:command name="setupmarking" value="stelmarkeringin"/>
+ <cd:command name="definemarking" value="definieermarkering"/>
+ <cd:command name="nomarking" value="geenmarkering"/>
+ <cd:command name="marking" value="markeer"/>
+ <cd:command name="decouplemarking" value="ontkoppelmarkering"/>
+ <cd:command name="couplemarking" value="koppelmarkering"/>
+ <cd:command name="getmarking" value="haalmarkering"/>
+ <cd:command name="definelayout" value="definieerlayout"/>
+ <cd:command name="setuplayout" value="stellayoutin"/>
+ <cd:command name="adaptlayout" value="paslayoutaan"/>
+ <cd:command name="placeongrid" value="plaatsopgrid"/>
+ <cd:command name="moveongrid" value="verplaatsopgrid"/>
+ <cd:command name="showsetups" value="tooninstellingen"/>
+ <cd:command name="showframe" value="toonkader"/>
+ <cd:command name="showgrid" value="toongrid"/>
+ <cd:command name="showlayout" value="toonlayout"/>
+ <cd:command name="showprint" value="toonprint"/>
+ <cd:command name="showstruts" value="toonstruts"/>
+ <cd:command name="definepapersize" value="definieerpapierformaat"/>
+ <cd:command name="setuppapersize" value="stelpapierformaatin"/>
+ <cd:command name="setuppaper" value="stelpapierin"/>
+ <cd:command name="setuparranging" value="stelarrangerenin"/>
+ <cd:command name="version" value="versie"/>
+ <cd:command name="setupbackgrounds" value="stelachtergrondenin"/>
+ <cd:command name="setupalign" value="steluitlijnenin"/>
+ <cd:command name="setupwhitespace" value="stelwitruimtein"/>
+ <cd:command name="setupinteraction" value="stelinteractiein"/>
+ <cd:command name="setupinteractionmenu" value="stelinteractiemenuin"/>
+ <cd:command name="defineinteractionmenu" value="definieerinteractiemenu"/>
+ <cd:command name="disableinteractionmenu" value="blokkeerinteractiemenu"/>
+ <cd:command name="interactionmenu" value="interactiemenu"/>
+ <cd:command name="interactionbuttons" value="interactiebuttons"/>
+ <cd:command name="interactionbar" value="interactiebalk"/>
+ <cd:command name="setupinteractionbar" value="stelinteractiebalkin"/>
+ <cd:command name="setupinteractionscreen" value="stelinteractieschermin"/>
+ <cd:command name="placebookmarks" value="plaatsbookmarks"/>
+ <cd:command name="bookmark" value="bookmark"/>
+ <cd:command name="definelogo" value="definieerbeeldmerk"/>
+ <cd:command name="placelogos" value="plaatsbeeldmerken"/>
+ <cd:command name="definecolor" value="definieerkleur"/>
+ <cd:command name="definecolorgroup" value="definieerkleurgroep"/>
+ <cd:command name="definepalet" value="definieerpalet"/>
+ <cd:command name="graycolor" value="grijskleur"/>
+ <cd:command name="color" value="kleur"/>
+ <cd:command name="startcolor" value="startkleur"/>
+ <cd:command name="stopcolor" value="stopkleur"/>
+ <cd:command name="setupcolors" value="stelkleurenin"/>
+ <cd:command name="setupcolor" value="stelkleurin"/>
+ <cd:command name="setuppalet" value="stelpaletin"/>
+ <cd:command name="showcolor" value="toonkleur"/>
+ <cd:command name="showcolorgroup" value="toonkleurgroep"/>
+ <cd:command name="showpalet" value="toonpalet"/>
+ <cd:command name="comparecolorgroup" value="vergelijkkleurgroep"/>
+ <cd:command name="comparepalet" value="vergelijkpalet"/>
+ <cd:command name="colorvalue" value="kleurwaarde"/>
+ <cd:command name="greyvalue" value="grijswaarde"/>
+ <cd:command name="startraster" value="startraster"/>
+ <cd:command name="stopraster" value="stopraster"/>
+ <cd:command name="defineblock" value="definieerblok"/>
+ <cd:command name="setupblock" value="stelblokin"/>
+ <cd:command name="useblocks" value="gebruikblokken"/>
+ <cd:command name="processblocks" value="verwerkblokken"/>
+ <cd:command name="keepblocks" value="handhaafblokken"/>
+ <cd:command name="selectblocks" value="selecteerblokken"/>
+ <cd:command name="hideblocks" value="verbergblokken"/>
+ <cd:command name="bypassblocks" value="passeerblokken"/>
+ <cd:command name="forceblocks" value="forceerblokken"/>
+ <cd:command name="nomoreblocks" value="geenblokkenmeer"/>
+ <cd:command name="definelist" value="definieerlijst"/>
+ <cd:command name="definecombinedlist" value="definieersamengesteldelijst"/>
+ <cd:command name="listsymbol" value="lijstsymbool"/>
+ <cd:command name="placelist" value="plaatslijst"/>
+ <cd:command name="plaatsruwelijst" value="plaatsruwelijst"/>
+ <cd:command name="placecombinedlist" value="plaatssamengesteldelijst"/>
+ <cd:command name="writetolist" value="schrijfnaarlijst"/>
+ <cd:command name="writebetweenlist" value="schrijftussenlijst"/>
+ <cd:command name="immediatetolist" value="directnaarlijst"/>
+ <cd:command name="immediatebetweenlist" value="directtussenlijst"/>
+ <cd:command name="setuplist" value="stellijstin"/>
+ <cd:command name="setupcombinedlist" value="stelsamengesteldelijstin"/>
+ <cd:command name="determinelistcharacteristics" value="bepaallijstkenmerken"/>
+ <cd:command name="listlength" value="lijstlengte"/>
+ <cd:command name="listwidth" value="lijstbreedte"/>
+ <cd:command name="listheight" value="lijsthoogte"/>
+ <cd:command name="nolist" value="geenlijst"/>
+ <cd:command name="definereferencelist" value="definieerreferentielijst"/>
+ <cd:command name="placereferencelist" value="plaatsreferentielijst"/>
+ <cd:command name="writetoreferencelist" value="schrijfnaarreferentielijst"/>
+ <cd:command name="setupreferencelist" value="stelreferentielijstin"/>
+ <cd:command name="definefloat" value="definieerplaatsblok"/>
+ <cd:command name="setupfloat" value="stelplaatsblokin"/>
+ <cd:command name="setupfloats" value="stelplaatsblokkenin"/>
+ <cd:command name="splitfloat" value="splitsplaatsblok"/>
+ <cd:command name="setupfloatsplitting" value="stelplaatsbloksplitsenin"/>
+ <cd:command name="placefloat" value="plaatsplaatsblok"/>
+ <cd:command name="movesidefloat" value="verplaatszijblok"/>
+ <cd:command name="defineplacement" value="definieerplaats"/>
+ <cd:command name="setupplacement" value="stelplaatsin"/>
+ <cd:command name="definecombination" value="definieercombinatie"/>
+ <cd:command name="startcombination" value="startcombinatie"/>
+ <cd:command name="stopcombination" value="stopcombinatie"/>
+ <cd:command name="placesidebyside" value="plaatsnaastelkaar"/>
+ <cd:command name="placeontopofeachother" value="plaatsonderelkaar"/>
+ <cd:command name="setupcaption" value="stelblokkopjein"/>
+ <cd:command name="setupcaptions" value="stelblokkopjesin"/>
+ <cd:command name="setupcombinations" value="stelcombinatiesin"/>
+ <cd:command name="startoverlay" value="startoverlay"/>
+ <cd:command name="stopoverlay" value="stopoverlay"/>
+ <cd:command name="defineregister" value="definieerregister"/>
+ <cd:command name="coupleregister" value="koppelregister"/>
+ <cd:command name="setupregister" value="stelregisterin"/>
+ <cd:command name="writetoregister" value="schrijfnaarregister"/>
+ <cd:command name="completeregister" value="volledigregister"/>
+ <cd:command name="placeregister" value="plaatsregister"/>
+ <cd:command name="determineregistercharacteristics" value="bepaalregisterkenmerken"/>
+ <cd:command name="definesorting" value="definieersorteren"/>
+ <cd:command name="definesynonyms" value="definieersynoniemen"/>
+ <cd:command name="setupsorting" value="stelsorterenin"/>
+ <cd:command name="setupsynonyms" value="stelsynoniemenin"/>
+ <cd:command name="startsynchronization" value="startsynchronisatie"/>
+ <cd:command name="stopsynchronization" value="stopsynchronisatie"/>
+ <cd:command name="setupsynchronizationbar" value="stelsynchronisatiebalkin"/>
+ <cd:command name="setupsynchronization" value="stelsynchronisatiein"/>
+ <cd:command name="synchronizationbar" value="synchronisatiebalk"/>
+ <cd:command name="synchronize" value="synchroniseer"/>
+ <cd:command name="useexternaldocument" value="gebruikexterndocument"/>
+ <cd:command name="useURL" value="gebruikURL"/>
+ <cd:command name="useurl" value="gebruikurl"/>
+ <cd:command name="setupurl" value="stelurlin"/>
+ <cd:command name="coupledocument" value="koppeldocument"/>
+ <cd:command name="setupprograms" value="stelprogrammasin"/>
+ <cd:command name="defineprogram" value="definieerprogramma"/>
+ <cd:command name="program" value="programma"/>
+ <cd:command name="setuppagetransitions" value="stelpaginaovergangenin"/>
+ <cd:command name="defineprofile" value="definieerprofiel"/>
+ <cd:command name="defineversion" value="definieerversie"/>
+ <cd:command name="markversion" value="markeerversie"/>
+ <cd:command name="selectversion" value="selecteerversie"/>
+ <cd:command name="startprofile" value="startprofiel"/>
+ <cd:command name="startversion" value="startversie"/>
+ <cd:command name="setupprofiles" value="stelprofielenin"/>
+ <cd:command name="setupversions" value="stelversiesin"/>
+ <cd:command name="stopprofile" value="stopprofiel"/>
+ <cd:command name="stopversion" value="stopversie"/>
+ <cd:command name="followprofile" value="volgprofiel"/>
+ <cd:command name="followprofileversion" value="volgprofielversie"/>
+ <cd:command name="followversion" value="volgversie"/>
+ <cd:command name="definedescription" value="doordefinieren"/>
+ <cd:command name="definelabel" value="doorlabelen"/>
+ <cd:command name="defineenumeration" value="doornummeren"/>
+ <cd:command name="defineindenting" value="doorspringen"/>
+ <cd:command name="setupdescriptions" value="steldoordefinierenin"/>
+ <cd:command name="setupenumerations" value="steldoornummerenin"/>
+ <cd:command name="setupindentations" value="steldoorspringenin"/>
+ <cd:command name="setuptab" value="steltabin"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="stelexternefigurenin"/>
+ <cd:command name="showexternalfigures" value="toonexternefiguren"/>
+ <cd:command name="externalfigure" value="externfiguur"/>
+ <cd:command name="useexternalfigure" value="gebruikexternfiguur"/>
+ <cd:command name="startfigure" value="startfiguur"/>
+ <cd:command name="referring" value="refereer"/>
+ <cd:command name="remark" value="toelichting"/>
+ <cd:command name="colorbar" value="kleurenbalk"/>
+ <cd:command name="grid" value="rooster"/>
+ <cd:command name="button" value="button"/>
+ <cd:command name="menubutton" value="menubutton"/>
+ <cd:command name="setupbuttons" value="stelbuttonsin"/>
+ <cd:command name="usereferences" value="gebruikreferenties"/>
+ <cd:command name="placereferencelist" value="plaatsreferentielijst"/>
+ <cd:command name="setupreferencelist" value="stelreferentielijstin"/>
+ <cd:command name="setupreferencing" value="stelrefererenin"/>
+ <cd:command name="textreference" value="tekstreferentie"/>
+ <cd:command name="pagereference" value="paginareferentie"/>
+ <cd:command name="reference" value="referentie"/>
+ <cd:command name="definereference" value="definieerreferentie"/>
+ <cd:command name="definereferenceformat" value="definieerreferentieformaat"/>
+ <cd:command name="useJSscripts" value="gebruikJSscripts"/>
+ <cd:command name="from" value="uit"/>
+ <cd:command name="in" value="in"/>
+ <cd:command name="at" value="op"/>
+ <cd:command name="about" value="about"/>
+ <cd:command name="goto" value="naar"/>
+ <cd:command name="atpage" value="oppagina"/>
+ <cd:command name="somewhere" value="ergens"/>
+ <cd:command name="navigating" value="navigerend"/>
+ <cd:command name="ref" value="ref"/>
+ <cd:command name="gotobox" value="naarbox"/>
+ <cd:command name="gotopage" value="naarpagina"/>
+ <cd:command name="placeformula" value="plaatsformule"/>
+ <cd:command name="placesubformula" value="plaatssubformule"/>
+ <cd:command name="moveformula" value="verplaatsformule"/>
+ <cd:command name="setupformulas" value="stelformulesin"/>
+ <cd:command name="formulanumber" value="formulenummer"/>
+ <cd:command name="subformulanumber" value="subformulenummer"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="geg"/>
+ <cd:command name="mathematics" value="wiskunde"/>
+ <cd:command name="dimension" value="dimensie"/>
+ <cd:command name="nodimension" value="geendimensie"/>
+ <cd:command name="startenvironment" value="startomgeving"/>
+ <cd:command name="stopenvironment" value="stopomgeving"/>
+ <cd:command name="startcomponent" value="startonderdeel"/>
+ <cd:command name="stopcomponent" value="stoponderdeel"/>
+ <cd:command name="startproduct" value="startprodukt"/>
+ <cd:command name="stopproduct" value="stopprodukt"/>
+ <cd:command name="startproject" value="startproject"/>
+ <cd:command name="stopproject" value="stopproject"/>
+ <cd:command name="setups" value="instellingen"/>
+ <cd:command name="project" value="project"/>
+ <cd:command name="component" value="onderdeel"/>
+ <cd:command name="product" value="produkt"/>
+ <cd:command name="environment" value="omgeving"/>
+ <cd:command name="nomorefiles" value="geenfilesmeer"/>
+ <cd:command name="getbuffer" value="haalbuffer"/>
+ <cd:command name="setupbuffer" value="stelbufferin"/>
+ <cd:command name="typebuffer" value="typebuffer"/>
+ <cd:command name="definebuffer" value="definieerbuffer"/>
+ <cd:command name="unitmeaning" value="betekenis"/>
+ <cd:command name="infull" value="voluit"/>
+ <cd:command name="quotation" value="citaat"/>
+ <cd:command name="quote" value="citeer"/>
+ <cd:command name="startquotation" value="startcitaat"/>
+ <cd:command name="stopquotation" value="stopcitaat"/>
+ <cd:command name="setupquote" value="stelciterenin"/>
+ <cd:command name="define" value="definieer"/>
+ <cd:command name="redo" value="herhaal"/>
+ <cd:command name="usecommands" value="gebruikcommandos"/>
+ <cd:command name="definestartstop" value="definieerstartstop"/>
+ <cd:command name="setupstartstop" value="stelstartstopin"/>
+ <cd:command name="startlocal" value="startlokaal"/>
+ <cd:command name="stoplocal" value="stoplokaal"/>
+ <cd:command name="startglobal" value="startglobaal"/>
+ <cd:command name="stopglobal" value="stopglobaal"/>
+ <cd:command name="macroname" value="naam"/>
+ <cd:command name="definemakeup" value="definieeropmaak"/>
+ <cd:command name="setupmakeup" value="stelopmaakin"/>
+ <cd:command name="startmakeup" value="startopmaak"/>
+ <cd:command name="stopmakeup" value="stopopmaak"/>
+ <cd:command name="useexternalsoundtrack" value="gebruikexterngeluidsfragment"/>
+ <cd:command name="useexternalfile" value="gebruikexternefile"/>
+ <cd:command name="useexternalfiles" value="gebruikexternefiles"/>
+ <cd:command name="referral" value="kenmerk"/>
+ <cd:command name="referraldate" value="kenmerkdatum"/>
+ <cd:command name="high" value="hoog"/>
+ <cd:command name="lohi" value="laho"/>
+ <cd:command name="low" value="laag"/>
+ <cd:command name="fraction" value="breuk"/>
+ <cd:command name="chem" value="chem"/>
+ <cd:command name="startopposite" value="startnaast"/>
+ <cd:command name="stopopposite" value="stopnaast"/>
+ <cd:command name="setupoppositeplacing" value="stelnaastplaatsenin"/>
+ <cd:command name="startpositioning" value="startpositioneren"/>
+ <cd:command name="stoppositioning" value="stoppositioneren"/>
+ <cd:command name="position" value="positioneer"/>
+ <cd:command name="setuppositioning" value="stelpositionerenin"/>
+ <cd:command name="rotate" value="roteer"/>
+ <cd:command name="setuprotate" value="stelroterenin"/>
+ <cd:command name="mirror" value="spiegel"/>
+ <cd:command name="scale" value="schaal"/>
+ <cd:command name="setupnumbering" value="stelnummerenin"/>
+ <cd:command name="reset" value="reset"/>
+ <cd:command name="setuppublications" value="stelpublicatiesin"/>
+ <cd:command name="publication" value="publicatie"/>
+ <cd:command name="definehbox" value="definieerhbox"/>
+ <cd:command name="adding" value="toevoegen"/>
+ <cd:command name="periods" value="punten"/>
+ <cd:command name="setuphyphenmark" value="stelkoppeltekenin"/>
+ <cd:command name="setupinterlinespace" value="stelinterliniein"/>
+ <cd:command name="setupspacing" value="stelspatieringin"/>
+ <cd:command name="setuptolerance" value="steltolerantiein"/>
+ <cd:command name="setupsystem" value="stelsysteemin"/>
+ <cd:command name="usepath" value="gebruikgebied"/>
+ <cd:command name="defineparagraphs" value="definieeralineas"/>
+ <cd:command name="setupparagraphs" value="stelalineasin"/>
+ <cd:command name="donttest" value="geentest"/>
+ <cd:command name="setupcomment" value="stelcommentaarin"/>
+ <cd:command name="comment" value="commentaar"/>
+ <cd:command name="definefield" value="definieerveld"/>
+ <cd:command name="definemainfield" value="definieerhoofdveld"/>
+ <cd:command name="definesubfield" value="definieersubveld"/>
+ <cd:command name="clonefield" value="kloonveld"/>
+ <cd:command name="copyfield" value="copieerveld"/>
+ <cd:command name="setupfield" value="stelveldin"/>
+ <cd:command name="setupfields" value="stelveldenin"/>
+ <cd:command name="field" value="veld"/>
+ <cd:command name="fitfield" value="passendveld"/>
+ <cd:command name="logfields" value="registreervelden"/>
+ <cd:command name="showfields" value="toonvelden"/>
+ <cd:command name="tooltip" value="suggestie"/>
+ <cd:command name="fillinfield" value="invulveld"/>
+ <cd:command name="definefieldstack" value="definieerveldstapel"/>
+ <cd:command name="fieldstack" value="veldstapel"/>
+ <cd:command name="setupforms" value="stelformulierenin"/>
+ <cd:command name="setupclipping" value="stelclipin"/>
+ <cd:command name="clip" value="clip"/>
+ <cd:command name="placelegend" value="plaatslegenda"/>
+ <cd:command name="setuplegend" value="stellegendain"/>
+ <cd:command name="setuppagecomment" value="stelpaginacommentaarin"/>
+ <cd:command name="setupstrut" value="stelstrutin"/>
+ <cd:command name="definerule" value="definieerlijn"/>
+ <cd:command name="placerule" value="plaatslijn"/>
+ <cd:command name="setuprule" value="stellijnin"/>
+ <cd:command name="definetextvariable" value="definieertekstvariabele"/>
+ <cd:command name="setuptextvariable" value="steltekstvariabelein"/>
+ <cd:command name="settextvariable" value="kentekstvariabeletoe"/>
+ <cd:command name="placetextvariable" value="plaatstekstvariabele"/>
+ <cd:command name="textvariable" value="tekstvariabele"/>
+ <cd:command name="definetextposition" value="definieertekstpositie"/>
+ <cd:command name="setuptextposition" value="steltekstpositiein"/>
+ <cd:command name="positiontext" value="positioneertekst"/>
+ <cd:command name="definerawfont" value="definerawfont"/>
+ <cd:command name="switchtorawfont" value="switchtorawfont"/>
+ <cd:command name="placeheadtext" value="plaatskoptekst"/>
+ <cd:command name="placeheadnumber" value="plaatskopnummer"/>
+ <cd:command name="definepagebreak" value="definieerpaginaovergang"/>
+ <cd:command name="definecolumnbreak" value="definieerkolomovergang"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="stelopsommingenin"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="bovenhoogte"/>
+ <cd:command name="topdistance" value="bovenafstand"/>
+ <cd:command name="headerheight" value="hoofdhoogte"/>
+ <cd:command name="headerdistance" value="hoofdafstand"/>
+ <cd:command name="textheight" value="teksthoogte"/>
+ <cd:command name="footerdistance" value="voetafstand"/>
+ <cd:command name="footerheight" value="voethoogte"/>
+ <cd:command name="bottomdistance" value="onderafstand"/>
+ <cd:command name="bottomheight" value="onderhoogte"/>
+ <cd:command name="marginwidth" value="margebreedte"/>
+ <cd:command name="leftmarginwidth" value="linkermargebreedte"/>
+ <cd:command name="rightmarginwidth" value="rechtermargebreedte"/>
+ <cd:command name="margindistance" value="margeafstand"/>
+ <cd:command name="leftmargindistance" value="linkermargeafstand"/>
+ <cd:command name="rightmargindistance" value="rechtermargeafstand"/>
+ <cd:command name="edgewidth" value="randbreedte"/>
+ <cd:command name="leftedgewidth" value="linkerrandbreedte"/>
+ <cd:command name="rightedgewidth" value="rechterrandbreedte"/>
+ <cd:command name="edgedistance" value="randafstand"/>
+ <cd:command name="leftedgedistance" value="linkerrandafstand"/>
+ <cd:command name="rightedgedistance" value="rechterrandafstand"/>
+ <cd:command name="innermarginwidth" value="binnenmargebreedte"/>
+ <cd:command name="outermarginwidth" value="buitenmargebreedte"/>
+ <cd:command name="innermargindistance" value="binnenmargeafstand"/>
+ <cd:command name="outermargindistance" value="buitenmargeafstand"/>
+ <cd:command name="inneredgewidth" value="binnenrandbreedte"/>
+ <cd:command name="outeredgewidth" value="buitenrandbreedte"/>
+ <cd:command name="inneredgedistance" value="binnenrandafstand"/>
+ <cd:command name="outeredgedistance" value="buitenrandafstand"/>
+ <cd:command name="textwidth" value="tekstbreedte"/>
+ <cd:command name="makeupwidth" value="zetbreedte"/>
+ <cd:command name="makeupheight" value="zethoogte"/>
+ <cd:command name="topspace" value="kopwit"/>
+ <cd:command name="bottomspace" value="bodemwit"/>
+ <cd:command name="backspace" value="rugwit"/>
+ <cd:command name="cutspace" value="snijwit"/>
+ <cd:command name="paperwidth" value="papierbreedte"/>
+ <cd:command name="paperheight" value="papierhoogte"/>
+ <cd:command name="printpaperwidth" value="printpapierbreedte"/>
+ <cd:command name="printpaperheight" value="printpapierhoogte"/>
+ <cd:command name="pageoffset" value="paginaoffset"/>
+ <cd:command name="pagedepth" value="paginadiepte"/>
+ <cd:command name="headlevel" value="kopniveau"/>
+ <cd:command name="linewidth" value="lijndikte"/>
+ <cd:command name="totalnumberofpages" value="totaalaantalpaginas"/>
+ <cd:command name="numberofsubpages" value="aantalsubpaginas"/>
+ <cd:command name="useXMLfilter" value="gebruikXMLfilter"/>
+ <cd:command name="definecolumnset" value="definieerkolomgroep"/>
+ <cd:command name="setupcolumnset" value="stelkolomgroepin"/>
+ <cd:command name="startcolumnset" value="startkolomgroep"/>
+ <cd:command name="stopcolumnset" value="stopkolomgroep"/>
+ <cd:command name="setupcolumnsetlines" value="stelkolomgroepregelsin"/>
+ <cd:command name="setupcolumnsetstart" value="stelkolomgroepstartin"/>
+ <cd:command name="startcolumnmakeup" value="startkolomopmaak"/>
+ <cd:command name="stopcolumnmakeup" value="stopkolomopmaak"/>
+ <cd:command name="usetypescript" value="gebruiktypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="startdocument"/>
+ <cd:command name="stopdocument" value="stopdocument"/>
+ <cd:command name="startoverzicht" value="startoverzicht"/>
+ <cd:command name="stopoverzicht" value="stopoverzicht"/>
+ <cd:command name="label" value="label"/>
+ <cd:command name="labels" value="labels"/>
+ <cd:command name="domicile" value="woonplaats"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/interface/keys-ro.xml b/Master/texmf-dist/tex/context/interface/keys-ro.xml
new file mode 100644
index 00000000000..5e86b26dbf5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/interface/keys-ro.xml
@@ -0,0 +1,1600 @@
+<?xml version="1.0"?>
+
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2005.10.27">
+
+ <cd:variables>
+ <cd:variable name="one" value="unu"/>
+ <cd:variable name="two" value="doi"/>
+ <cd:variable name="three" value="trei"/>
+ <cd:variable name="four" value="patru"/>
+ <cd:variable name="five" value="cinci"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="environment" value="mediu"/>
+ <cd:variable name="component" value="componenta"/>
+ <cd:variable name="product" value="produs"/>
+ <cd:variable name="project" value="proiect"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sunday" value="duminica"/>
+ <cd:variable name="monday" value="luni"/>
+ <cd:variable name="tuesday" value="marti"/>
+ <cd:variable name="wednesday" value="miercuri"/>
+ <cd:variable name="thursday" value="joi"/>
+ <cd:variable name="friday" value="vineri"/>
+ <cd:variable name="saturday" value="sambata"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="january" value="ianuarie"/>
+ <cd:variable name="february" value="februarie"/>
+ <cd:variable name="march" value="martie"/>
+ <cd:variable name="april" value="aprilie"/>
+ <cd:variable name="may" value="mai"/>
+ <cd:variable name="june" value="iunie"/>
+ <cd:variable name="july" value="iulie"/>
+ <cd:variable name="august" value="august"/>
+ <cd:variable name="september" value="septembrie"/>
+ <cd:variable name="october" value="octombrie"/>
+ <cd:variable name="november" value="noiembrie"/>
+ <cd:variable name="december" value="decembrie"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="atpage" value="lapagina"/>
+ <cd:variable name="hencefore" value="precedent"/>
+ <cd:variable name="hereafter" value="urmator"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="sectionlevel" value="sectiune"/>
+ <cd:variable name="part" value="parte"/>
+ <cd:variable name="chapter" value="capitol"/>
+ <cd:variable name="subject" value="subiect"/>
+ <cd:variable name="section" value="sectiune"/>
+ <cd:variable name="title" value="titlu"/>
+ <cd:variable name="margintitle" value="titlumarginal"/>
+ <cd:variable name="content" value="cuprins"/>
+ <cd:variable name="contents" value="cuprinsuri"/>
+ <cd:variable name="appendix" value="apendix"/>
+ <cd:variable name="appendices" value="apendixuri"/>
+ <cd:variable name="bodypart" value="principal"/>
+ <cd:variable name="bodymatter" value="principalul"/>
+ <cd:variable name="frontpart" value="prolog"/>
+ <cd:variable name="frontmatter" value="prologul"/>
+ <cd:variable name="backpart" value="epilog"/>
+ <cd:variable name="backmatter" value="epilogul"/>
+ <cd:variable name="footnote" value="notasubsol"/>
+ <cd:variable name="endnote" value="endnote"/>
+ <cd:variable name="system" value="sistem"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="subsection" value="subsectiune"/>
+ <cd:variable name="subsubsection" value="subsubsectiune"/>
+ <cd:variable name="subsubsubsection" value="subsubsubsectiune"/>
+ <cd:variable name="subsubsubsubsection" value="subsubsubsubsectiune"/>
+ <cd:variable name="subsubsubsubsubsection" value="subsubsubsubsubsectiune"/>
+ <cd:variable name="subsubject" value="subsubiect"/>
+ <cd:variable name="subsubsubject" value="subsubsubiect"/>
+ <cd:variable name="subsubsubsubject" value="subsubsubsubiect"/>
+ <cd:variable name="subsubsubsubsubject" value="subsubsubsubsubiect"/>
+ <cd:variable name="subsubsubsubsubsubject" value="subsubsubsubsubsubiect"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="flushleft" value="flushleft"/>
+ <cd:variable name="flushright" value="flushright"/>
+ <cd:variable name="center" value="center"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="typing" value="typing"/>
+ <cd:variable name="file" value="fisier"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="formulae" value="formule"/>
+ <cd:variable name="figure" value="figura"/>
+ <cd:variable name="figures" value="figure"/>
+ <cd:variable name="table" value="tabelul"/>
+ <cd:variable name="tables" value="tabelele"/>
+ <cd:variable name="graphic" value="graficul"/>
+ <cd:variable name="graphics" value="graficele"/>
+ <cd:variable name="intermezzo" value="intermezzo"/>
+ <cd:variable name="intermezzi" value="intermezzi"/>
+ <cd:variable name="index" value="index"/>
+ <cd:variable name="indices" value="indexuri"/>
+ <cd:variable name="abbreviation" value="abreviere"/>
+ <cd:variable name="abbreviations" value="abrevieri"/>
+ <cd:variable name="logo" value="logo"/>
+ <cd:variable name="logos" value="logos"/>
+ <cd:variable name="unit" value="unitate"/>
+ <cd:variable name="units" value="unitati"/>
+ <cd:variable name="line" value="linia"/>
+ <cd:variable name="lines" value="linii"/>
+ <cd:variable name="framedtext" value="textinconjurat"/>
+ <cd:variable name="quotation" value="citat"/>
+ <cd:variable name="quote" value="minicitat"/>
+ <cd:variable name="speech" value="speech"/>
+ <cd:variable name="itemize" value="enumerare"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="leftquotation" value="citatstanga"/>
+ <cd:constant name="rightquotation" value="citatdreapta"/>
+ <cd:constant name="leftquote" value="minicitatstanga"/>
+ <cd:constant name="rightquote" value="minicitatdreapta"/>
+ <cd:constant name="compoundhyphen" value="compoundhyphen"/>
+ <cd:constant name="leftcompoundhyphen" value="leftcompoundhyphen"/>
+ <cd:constant name="rightcompoundhyphen" value="rightcompoundhyphen"/>
+ <cd:constant name="midsentence" value="midsentence"/>
+ <cd:constant name="leftsentence" value="propozitiestanga"/>
+ <cd:constant name="rightsentence" value="propozitiedreapta"/>
+ <cd:constant name="leftsubsentence" value="subpropozitiestanga"/>
+ <cd:constant name="rightsubsentence" value="subpropozitiedreapta"/>
+ <cd:constant name="leftspeech" value="leftspeech"/>
+ <cd:constant name="middlespeech" value="middlespeech"/>
+ <cd:constant name="rightspeech" value="rightspeech"/>
+ <cd:constant name="limittext" value="limittext"/>
+ <cd:constant name="date" value="data"/>
+ <cd:constant name="spacebefore" value="spatiuinainte"/>
+ <cd:constant name="spaceinbetween" value="spaceinbetween"/>
+ <cd:constant name="spaceafter" value="spatiudupa"/>
+ <cd:constant name="sidespacebefore" value="spatiulateralinainte"/>
+ <cd:constant name="sidespaceafter" value="spatiulateraldupa"/>
+ <cd:constant name="to" value="catre"/>
+ <cd:constant name="indicator" value="indicator"/>
+ <cd:constant name="background" value="fundal"/>
+ <cd:constant name="backgrounddepth" value="adancimefundal"/>
+ <cd:constant name="backgroundcorner" value="coltfundal"/>
+ <cd:constant name="splitcolor" value="splitcolor"/>
+ <cd:constant name="backgroundcolor" value="culoarefundal"/>
+ <cd:constant name="foregroundcolor" value="foregroundcolor"/>
+ <cd:constant name="foregroundstyle" value="foregroundstyle"/>
+ <cd:constant name="clipoffset" value="clipoffset"/>
+ <cd:constant name="backgroundoffset" value="offsetfundal"/>
+ <cd:constant name="backgroundscreen" value="ecranfundal"/>
+ <cd:constant name="backgroundradius" value="razafundal"/>
+ <cd:constant name="address" value="adresa"/>
+ <cd:constant name="stopper" value="stopper"/>
+ <cd:constant name="distance" value="distanta"/>
+ <cd:constant name="paragraph" value="paragraf"/>
+ <cd:constant name="axis" value="axa"/>
+ <cd:constant name="author" value="autor"/>
+ <cd:constant name="auto" value="auto"/>
+ <cd:constant name="autofile" value="autofile"/>
+ <cd:constant name="balance" value="balanta"/>
+ <cd:constant name="wfactor" value="factorw"/>
+ <cd:constant name="inner" value="intern"/>
+ <cd:constant name="blank" value="blanc"/>
+ <cd:constant name="obstruction" value="obstructie"/>
+ <cd:constant name="blockway" value="blockway"/>
+ <cd:constant name="bottomspace" value="spatiujos"/>
+ <cd:constant name="top" value="sus"/>
+ <cd:constant name="topdistance" value="distantasus"/>
+ <cd:constant name="topframe" value="framesus"/>
+ <cd:constant name="topoffset" value="offsetsus"/>
+ <cd:constant name="topstate" value="staresus"/>
+ <cd:constant name="width" value="latime"/>
+ <cd:constant name="maxwidth" value="latimemaxima"/>
+ <cd:constant name="minwidth" value="latimeminima"/>
+ <cd:constant name="source" value="sursa"/>
+ <cd:constant name="command" value="comanda"/>
+ <cd:constant name="commands" value="comenzi"/>
+ <cd:constant name="component" value="component"/>
+ <cd:constant name="contrastcolor" value="culoarecontrast"/>
+ <cd:constant name="conversion" value="conversie"/>
+ <cd:constant name="headconversion" value="conversietitlu"/>
+ <cd:constant name="headlabel" value="etichetatitlu"/>
+ <cd:constant name="criterium" value="criteriu"/>
+ <cd:constant name="date" value="data"/>
+ <cd:constant name="default" value="implicit"/>
+ <cd:constant name="depth" value="inaltime"/>
+ <cd:constant name="depthcorrection" value="corectieadancime"/>
+ <cd:constant name="continue" value="continua"/>
+ <cd:constant name="doublesided" value="douafete"/>
+ <cd:constant name="dummy" value="dummy"/>
+ <cd:constant name="unit" value="unitate"/>
+ <cd:constant name="ownnumber" value="numarpropriu"/>
+ <cd:constant name="evenmargin" value="marginepara"/>
+ <cd:constant name="expansion" value="expansiune"/>
+ <cd:constant name="keyexpansion" value="keyexpansion"/>
+ <cd:constant name="factor" value="factor"/>
+ <cd:constant name="convertfile" value="convertestefisier"/>
+ <cd:constant name="file" value="fisier"/>
+ <cd:constant name="inputfile" value="inputfile"/>
+ <cd:constant name="size" value="dimensiune"/>
+ <cd:constant name="autofocus" value="autofocus"/>
+ <cd:constant name="focus" value="focus"/>
+ <cd:constant name="directory" value="director"/>
+ <cd:constant name="cache" value="cache"/>
+ <cd:constant name="grid" value="grid"/>
+ <cd:constant name="big" value="mare"/>
+ <cd:constant name="get" value="adu"/>
+ <cd:constant name="hang" value="suspenda"/>
+ <cd:constant name="repeat" value="repeta"/>
+ <cd:constant name="hfactor" value="hfactor"/>
+ <cd:constant name="corner" value="colt"/>
+ <cd:constant name="hoffset" value="hoffset"/>
+ <cd:constant name="frames" value="frames"/>
+ <cd:constant name="header" value="antet"/>
+ <cd:constant name="headerdistance" value="distantaantet"/>
+ <cd:constant name="headerstate" value="stareantet"/>
+ <cd:constant name="height" value="inaltime"/>
+ <cd:constant name="maxheight" value="inaltimemaxima"/>
+ <cd:constant name="minheight" value="inaltimeminima"/>
+ <cd:constant name="mindepth" value="mindepth"/>
+ <cd:constant name="current" value="curent"/>
+ <cd:constant name="in" value="in"/>
+ <cd:constant name="indenting" value="aliniat"/>
+ <cd:constant name="interaction" value="interactiune"/>
+ <cd:constant name="interlinespace" value="spatiereinterliniara"/>
+ <cd:constant name="items" value="elemente"/>
+ <cd:constant name="frame" value="frame"/>
+ <cd:constant name="framedepth" value="adancimeframe"/>
+ <cd:constant name="framecorner" value="coltframe"/>
+ <cd:constant name="framecolor" value="culoareframe"/>
+ <cd:constant name="frameoffset" value="offsetframe"/>
+ <cd:constant name="frameradius" value="razaframe"/>
+ <cd:constant name="marginedge" value="coltbordura"/>
+ <cd:constant name="marginedgetext" value="textcoltbordura"/>
+ <cd:constant name="aligncharacter" value="aliniazacaracter"/>
+ <cd:constant name="alignmentcharacter" value="alierecaracter"/>
+ <cd:constant name="small" value="mic"/>
+ <cd:constant name="color" value="culoare"/>
+ <cd:constant name="column" value="coloana"/>
+ <cd:constant name="columns" value="coloane"/>
+ <cd:constant name="columndistance" value="distantacoloane"/>
+ <cd:constant name="headcommand" value="headcommand"/>
+ <cd:constant name="headcolor" value="culoaretitlu"/>
+ <cd:constant name="headstyle" value="stiltitlu"/>
+ <cd:constant name="afterhead" value="dupatitlu"/>
+ <cd:constant name="veroffset" value="veroffset"/>
+ <cd:constant name="coupling" value="cuplare"/>
+ <cd:constant name="couplingway" value="modcuplare"/>
+ <cd:constant name="beforehead" value="inaintetitlu"/>
+ <cd:constant name="topspace" value="spatiusus"/>
+ <cd:constant name="bodyfont" value="fonttext"/>
+ <cd:constant name="label" value="eticheta"/>
+ <cd:constant name="empty" value="gol"/>
+ <cd:constant name="style" value="stil"/>
+ <cd:constant name="rule" value="rigla"/>
+ <cd:constant name="rulethickness" value="grosimerigla"/>
+ <cd:constant name="rulecolor" value="culoarerigla"/>
+ <cd:constant name="list" value="lista"/>
+ <cd:constant name="leftwidth" value="latimestanga"/>
+ <cd:constant name="leftframe" value="framestanga"/>
+ <cd:constant name="leftcolor" value="culoarestanga"/>
+ <cd:constant name="leftstyle" value="stilstanga"/>
+ <cd:constant name="leftmargin" value="marginestanga"/>
+ <cd:constant name="leftmargindistance" value="distantamarginestanga"/>
+ <cd:constant name="leftoffset" value="offsetstanga"/>
+ <cd:constant name="leftedge" value="bordurastanga"/>
+ <cd:constant name="leftedgedistance" value="distantabordurastanga"/>
+ <cd:constant name="lefttext" value="textstanga"/>
+ <cd:constant name="left" value="stanga"/>
+ <cd:constant name="nleft" value="nstanga"/>
+ <cd:constant name="logo" value="logo"/>
+ <cd:constant name="logos" value="logos"/>
+ <cd:constant name="local" value="local"/>
+ <cd:constant name="margin" value="margine"/>
+ <cd:constant name="margindistance" value="distantamargine"/>
+ <cd:constant name="margintext" value="textmargine"/>
+ <cd:constant name="marking" value="marcaje"/>
+ <cd:constant name="marcolor" value="culoaremarcaj"/>
+ <cd:constant name="marstyle" value="stilmarcaj"/>
+ <cd:constant name="menu" value="meniu"/>
+ <cd:constant name="splitmethod" value="splitmethod"/>
+ <cd:constant name="textmethod" value="textmethod"/>
+ <cd:constant name="sidemethod" value="sidemethod"/>
+ <cd:constant name="method" value="metoda"/>
+ <cd:constant name="middle" value="mijloc"/>
+ <cd:constant name="middletext" value="textmijloc"/>
+ <cd:constant name="max" value="max"/>
+ <cd:constant name="min" value="min"/>
+ <cd:constant name="sample" value="exemplu"/>
+ <cd:constant name="after" value="dupa"/>
+ <cd:constant name="name" value="nume"/>
+ <cd:constant name="commandafter" value="comandadupa"/>
+ <cd:constant name="ntop" value="nsus"/>
+ <cd:constant name="level" value="nivel"/>
+ <cd:constant name="levels" value="nivele"/>
+ <cd:constant name="nbottom" value="njos"/>
+ <cd:constant name="norm" value="norm"/>
+ <cd:constant name="nlines" value="nlinii"/>
+ <cd:constant name="number" value="numar"/>
+ <cd:constant name="numbercommand" value="comandanumar"/>
+ <cd:constant name="numbering" value="numerotare"/>
+ <cd:constant name="numbercolor" value="culoarenumar"/>
+ <cd:constant name="numberstyle" value="stilnumar"/>
+ <cd:constant name="numberseparator" value="separatornumar"/>
+ <cd:constant name="object" value="obiect"/>
+ <cd:constant name="offset" value="offset"/>
+ <cd:constant name="bottom" value="jos"/>
+ <cd:constant name="bottomdistance" value="distantajos"/>
+ <cd:constant name="bottomframe" value="framejos"/>
+ <cd:constant name="bottomoffset" value="offsetjos"/>
+ <cd:constant name="bottomstate" value="starejos"/>
+ <cd:constant name="oddmargin" value="margineimpara"/>
+ <cd:constant name="at" value="la"/>
+ <cd:constant name="option" value="optiune"/>
+ <cd:constant name="page" value="pagina"/>
+ <cd:constant name="pagecommand" value="comandapagina"/>
+ <cd:constant name="pagecolor" value="culoarepagina"/>
+ <cd:constant name="pagestyle" value="stilpagina"/>
+ <cd:constant name="pagenumber" value="numarpagina"/>
+ <cd:constant name="headnumber" value="numartitlu"/>
+ <cd:constant name="pageboundaries" value="marginipagina"/>
+ <cd:constant name="pagestate" value="pagestate"/>
+ <cd:constant name="palet" value="paleta"/>
+ <cd:constant name="paper" value="hartie"/>
+ <cd:constant name="location" value="locatie"/>
+ <cd:constant name="placestopper" value="punestopper"/>
+ <cd:constant name="place" value="pune"/>
+ <cd:constant name="placehead" value="punetitlu"/>
+ <cd:constant name="position" value="pozitie"/>
+ <cd:constant name="prefix" value="prefix"/>
+ <cd:constant name="preset" value="preset"/>
+ <cd:constant name="preview" value="previzualizare"/>
+ <cd:constant name="process" value="process"/>
+ <cd:constant name="spot" value="spot"/>
+ <cd:constant name="dot" value="punct"/>
+ <cd:constant name="arrow" value="sageata"/>
+ <cd:constant name="edge" value="bordura"/>
+ <cd:constant name="edgedistance" value="distantabordura"/>
+ <cd:constant name="screen" value="ecran"/>
+ <cd:constant name="rightwidth" value="marginedreapta"/>
+ <cd:constant name="rightframe" value="framedreapta"/>
+ <cd:constant name="rightcolor" value="culoaredreapta"/>
+ <cd:constant name="rightstyle" value="stildreapta"/>
+ <cd:constant name="rightmargin" value="marginedreapta"/>
+ <cd:constant name="rightmargindistance" value="distantamarginedreapta"/>
+ <cd:constant name="rightoffset" value="offsetdreapta"/>
+ <cd:constant name="rightedge" value="borduradreapta"/>
+ <cd:constant name="rightedgedistance" value="distantacoltdreapta"/>
+ <cd:constant name="righttext" value="textdreapta"/>
+ <cd:constant name="right" value="dreapta"/>
+ <cd:constant name="nright" value="ndreapta"/>
+ <cd:constant name="reduction" value="reducere"/>
+ <cd:constant name="referencing" value="referinta"/>
+ <cd:constant name="line" value="linie"/>
+ <cd:constant name="linecorrection" value="corectielinie"/>
+ <cd:constant name="lines" value="linii"/>
+ <cd:constant name="stretch" value="dilatat"/>
+ <cd:constant name="resolution" value="rezolutie"/>
+ <cd:constant name="rotation" value="rotatie"/>
+ <cd:constant name="orientation" value="orientation"/>
+ <cd:constant name="horoffset" value="offsetoriz"/>
+ <cd:constant name="backspace" value="spatiuspate"/>
+ <cd:constant name="direction" value="directie"/>
+ <cd:constant name="scale" value="scala"/>
+ <cd:constant name="separator" value="separator"/>
+ <cd:constant name="display" value="display"/>
+ <cd:constant name="scope" value="scop"/>
+ <cd:constant name="section" value="sectiune"/>
+ <cd:constant name="sectionnumber" value="numarsectiune"/>
+ <cd:constant name="setups" value="setups"/>
+ <cd:constant name="cutspace" value="cutspace"/>
+ <cd:constant name="family" value="familie"/>
+ <cd:constant name="space" value="spatiu"/>
+ <cd:constant name="spacing" value="spatiere"/>
+ <cd:constant name="split" value="split"/>
+ <cd:constant name="splitoffset" value="splitoffset"/>
+ <cd:constant name="indentnext" value="aliniaturmator"/>
+ <cd:constant name="step" value="pas"/>
+ <cd:constant name="stack" value="stack"/>
+ <cd:constant name="start" value="start"/>
+ <cd:constant name="state" value="stare"/>
+ <cd:constant name="stop" value="stop"/>
+ <cd:constant name="radius" value="raza"/>
+ <cd:constant name="dash" value="dash"/>
+ <cd:constant name="sub" value="sub"/>
+ <cd:constant name="subtitle" value="subtitlu"/>
+ <cd:constant name="symbol" value="simbol"/>
+ <cd:constant name="symbolset" value="setsimbol"/>
+ <cd:constant name="symcolor" value="culoaresimbol"/>
+ <cd:constant name="symstyle" value="stilsimbol"/>
+ <cd:constant name="synonym" value="sinonim"/>
+ <cd:constant name="synonymcolor" value="culoaresinonim"/>
+ <cd:constant name="synonymstyle" value="stilsinonim"/>
+ <cd:constant name="tab" value="tab"/>
+ <cd:constant name="sign" value="semn"/>
+ <cd:constant name="text" value="text"/>
+ <cd:constant name="listtext" value="listtext"/>
+ <cd:constant name="textwidth" value="latimetext"/>
+ <cd:constant name="textcommand" value="comandatext"/>
+ <cd:constant name="textsize" value="dimensiunetext"/>
+ <cd:constant name="textcolor" value="culoaretext"/>
+ <cd:constant name="textstyle" value="stiltext"/>
+ <cd:constant name="textseparator" value="separatortext"/>
+ <cd:constant name="textstate" value="staretext"/>
+ <cd:constant name="title" value="titlu"/>
+ <cd:constant name="titlestyle" value="stiltitlu"/>
+ <cd:constant name="titlecolor" value="culoaretitlu"/>
+ <cd:constant name="titledistance" value="distantatitlu"/>
+ <cd:constant name="aligntitle" value="alinieretitlu"/>
+ <cd:constant name="tolerance" value="toleranta"/>
+ <cd:constant name="inbetween" value="intre"/>
+ <cd:constant name="type" value="type"/>
+ <cd:constant name="align" value="aliniere"/>
+ <cd:constant name="urlspace" value="spatiuurl"/>
+ <cd:constant name="urlalternative" value="urlalternativ"/>
+ <cd:constant name="from" value="dela"/>
+ <cd:constant name="alternative" value="alternativ"/>
+ <cd:constant name="increment" value="increment"/>
+ <cd:constant name="incrementnumber" value="numarincrement"/>
+ <cd:constant name="resetnumber" value="resetnumber"/>
+ <cd:constant name="reference" value="referinta"/>
+ <cd:constant name="unknownreference" value="referintanecunoscuta"/>
+ <cd:constant name="footer" value="subsol"/>
+ <cd:constant name="footerdistance" value="distantasubsol"/>
+ <cd:constant name="footerstate" value="staresubsol"/>
+ <cd:constant name="voffset" value="voffset"/>
+ <cd:constant name="next" value="urmatorul"/>
+ <cd:constant name="before" value="inainte"/>
+ <cd:constant name="commandbefore" value="comandainainte"/>
+ <cd:constant name="previous" value="precendent"/>
+ <cd:constant name="previousnumber" value="numarprecedent"/>
+ <cd:constant name="delay" value="intarziere"/>
+ <cd:constant name="way" value="mod"/>
+ <cd:constant name="random" value="aleator"/>
+ <cd:constant name="white" value="alb"/>
+ <cd:constant name="xfactor" value="xfactor"/>
+ <cd:constant name="xmax" value="xmax"/>
+ <cd:constant name="xoffset" value="xoffset"/>
+ <cd:constant name="xscale" value="xscala"/>
+ <cd:constant name="xstep" value="xstep"/>
+ <cd:constant name="yfactor" value="yfactor"/>
+ <cd:constant name="ymax" value="ymax"/>
+ <cd:constant name="yoffset" value="yoffset"/>
+ <cd:constant name="yscale" value="yscala"/>
+ <cd:constant name="ystep" value="ystep"/>
+ <cd:constant name="samepage" value="aceeasipagina"/>
+ <cd:constant name="sidealign" value="sidealign"/>
+ <cd:constant name="side" value="parte"/>
+ <cd:constant name="fieldlayer" value="fieldlayer"/>
+ <cd:constant name="textlayer" value="textlayer"/>
+ <cd:constant name="fieldbackgroundcolor" value="culoarefundalcamp"/>
+ <cd:constant name="fieldframecolor" value="culoareframecamp"/>
+ <cd:constant name="fieldoffset" value="offsetcamp"/>
+ <cd:constant name="openaction" value="actiunedeschidere"/>
+ <cd:constant name="closeaction" value="actiuneinchidere"/>
+ <cd:constant name="openpageaction" value="actiunedeschiderepagina"/>
+ <cd:constant name="closepageaction" value="actiuneinchiderepagina"/>
+ <cd:constant name="clickin" value="clickintru"/>
+ <cd:constant name="clickout" value="clickies"/>
+ <cd:constant name="regionin" value="regiuneintrare"/>
+ <cd:constant name="regionout" value="regiuneiesire"/>
+ <cd:constant name="focusin" value="focusin"/>
+ <cd:constant name="focusout" value="focusout"/>
+ <cd:constant name="afterkey" value="dupatasta"/>
+ <cd:constant name="format" value="format"/>
+ <cd:constant name="validate" value="verifica"/>
+ <cd:constant name="calculate" value="calculeaza"/>
+ <cd:constant name="click" value="click"/>
+ <cd:constant name="vcommand" value="comandav"/>
+ <cd:constant name="icommand" value="comandai"/>
+ <cd:constant name="ccommand" value="comandac"/>
+ <cd:constant name="textdistance" value="textdistance"/>
+ <cd:constant name="textmargin" value="textmargin"/>
+ <cd:constant name="keyword" value="keyword"/>
+ </cd:constants>
+
+ <cd:constants>
+ <cd:constant name="extras" value="extras"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="on" value="on"/>
+ <cd:variable name="serried" value="serried"/>
+ <cd:variable name="joinedup" value="unit"/>
+ <cd:variable name="absolute" value="absolut"/>
+ <cd:variable name="background" value="fundal"/>
+ <cd:variable name="backward" value="inapoi"/>
+ <cd:variable name="subbackward" value="subinapoi"/>
+ <cd:variable name="action" value="actiune"/>
+ <cd:variable name="stopper" value="stopper"/>
+ <cd:variable name="paragraph" value="paragraf"/>
+ <cd:variable name="all" value="tot"/>
+ <cd:variable name="always" value="totdeauna"/>
+ <cd:variable name="auto" value="auto"/>
+ <cd:variable name="autointro" value="autointro"/>
+ <cd:variable name="both" value="ambele"/>
+ <cd:variable name="inner" value="intern"/>
+ <cd:variable name="blank" value="blank"/>
+ <cd:variable name="disable" value="dezactivat"/>
+ <cd:variable name="top" value="sus"/>
+ <cd:variable name="wide" value="larg"/>
+ <cd:variable name="width" value="latime"/>
+ <cd:variable name="outer" value="extern"/>
+ <cd:variable name="numbers" value="numere"/>
+ <cd:variable name="Numbers" value="Numere"/>
+ <cd:variable name="command" value="comanda"/>
+ <cd:variable name="commands" value="comenzi"/>
+ <cd:variable name="concept" value="concept"/>
+ <cd:variable name="day" value="zi"/>
+ <cd:variable name="date" value="data"/>
+ <cd:variable name="default" value="implicit"/>
+ <cd:variable name="final" value="final"/>
+ <cd:variable name="depth" value="adancime"/>
+ <cd:variable name="doublesided" value="douafete"/>
+ <cd:variable name="first" value="primul"/>
+ <cd:variable name="each" value="fiecare"/>
+ <cd:variable name="singlesided" value="ofata"/>
+ <cd:variable name="somewhere" value="undeva"/>
+ <cd:variable name="nowhere" value="niciunde"/>
+ <cd:variable name="even" value="par"/>
+ <cd:variable name="external" value="extern"/>
+ <cd:variable name="file" value="fisier"/>
+ <cd:variable name="flexible" value="flexibil"/>
+ <cd:variable name="force" value="fortat"/>
+ <cd:variable name="used" value="folosit"/>
+ <cd:variable name="none" value="niciunul"/>
+ <cd:variable name="nomarking" value="faramarcare"/>
+ <cd:variable name="nonumber" value="nonumber"/>
+ <cd:variable name="nowhite" value="faraalb"/>
+ <cd:variable name="rotated" value="rotat"/>
+ <cd:variable name="mirrored" value="oglindit"/>
+ <cd:variable name="global" value="global"/>
+ <cd:variable name="grid" value="grila"/>
+ <cd:variable name="big" value="mare"/>
+ <cd:variable name="bigbodyfont" value="bigbodyfont"/>
+ <cd:variable name="bigpreference" value="preferintamare"/>
+ <cd:variable name="gray" value="gri"/>
+ <cd:variable name="halfline" value="jumatatelinie"/>
+ <cd:variable name="keep" value="mentine"/>
+ <cd:variable name="hanging" value="suspendat"/>
+ <cd:variable name="spacing" value="spatiere"/>
+ <cd:variable name="nospacing" value="nospacing"/>
+ <cd:variable name="repeat" value="repetat"/>
+ <cd:variable name="fix" value="fix"/>
+ <cd:variable name="here" value="aici"/>
+ <cd:variable name="header" value="antet"/>
+ <cd:variable name="high" value="inalt"/>
+ <cd:variable name="height" value="inaltime"/>
+ <cd:variable name="horizontal" value="orizontal"/>
+ <cd:variable name="current" value="curent"/>
+ <cd:variable name="hz" value="hz"/>
+ <cd:variable name="nohz" value="nohz"/>
+ <cd:variable name="italic" value="italic"/>
+ <cd:variable name="inherit" value="inherit"/>
+ <cd:variable name="inleft" value="instanga"/>
+ <cd:variable name="inmargin" value="inmargine"/>
+ <cd:variable name="inright" value="indreapta"/>
+ <cd:variable name="interaction" value="interactiune"/>
+ <cd:variable name="intext" value="intext"/>
+ <cd:variable name="intro" value="intro"/>
+ <cd:variable name="its" value="propriu"/>
+ <cd:variable name="yes" value="da"/>
+ <cd:variable name="year" value="an"/>
+ <cd:variable name="frame" value="incadrat"/>
+ <cd:variable name="marginedge" value="marginebordura"/>
+ <cd:variable name="cap" value="cap"/>
+ <cd:variable name="capital" value="majuscula"/>
+ <cd:variable name="referral" value="referinta"/>
+ <cd:variable name="small" value="mic"/>
+ <cd:variable name="smallnormal" value="micnormal"/>
+ <cd:variable name="smallslanted" value="micinclinat"/>
+ <cd:variable name="smallslantedbold" value="micinclinataldin"/>
+ <cd:variable name="smallitalic" value="micitalic"/>
+ <cd:variable name="smallitalicbold" value="micitalicaldin"/>
+ <cd:variable name="smalltype" value="mictype"/>
+ <cd:variable name="smallbold" value="micaldin"/>
+ <cd:variable name="smallboldslanted" value="micaldininclinat"/>
+ <cd:variable name="smallbolditalic" value="micaldininclinat"/>
+ <cd:variable name="smallbodyfont" value="smallbodyfont"/>
+ <cd:variable name="toggle" value="toggle"/>
+ <cd:variable name="color" value="culoare"/>
+ <cd:variable name="column" value="coloana"/>
+ <cd:variable name="columns" value="coloane"/>
+ <cd:variable name="head" value="antet"/>
+ <cd:variable name="low" value="jos"/>
+ <cd:variable name="last" value="ultim"/>
+ <cd:variable name="label" value="eticheta"/>
+ <cd:variable name="lohi" value="lohi"/>
+ <cd:variable name="tall" value="inalt"/>
+ <cd:variable name="empty" value="gol"/>
+ <cd:variable name="Character" value="Caracter"/>
+ <cd:variable name="character" value="caracter"/>
+ <cd:variable name="Characters" value="Caractere"/>
+ <cd:variable name="characters" value="caractere"/>
+ <cd:variable name="landscape" value="vedere"/>
+ <cd:variable name="rule" value="rigla"/>
+ <cd:variable name="list" value="lista"/>
+ <cd:variable name="leftmargin" value="marginestanga"/>
+ <cd:variable name="leftpage" value="paginastanga"/>
+ <cd:variable name="leftedge" value="bordurastanga"/>
+ <cd:variable name="left" value="stanga"/>
+ <cd:variable name="local" value="local"/>
+ <cd:variable name="new" value="nou"/>
+ <cd:variable name="MONTH" value="LUNA"/>
+ <cd:variable name="month" value="luna"/>
+ <cd:variable name="mar" value="mar"/>
+ <cd:variable name="margin" value="margine"/>
+ <cd:variable name="max" value="max"/>
+ <cd:variable name="min" value="min"/>
+ <cd:variable name="mediaeval" value="medieval"/>
+ <cd:variable name="medium" value="mediu"/>
+ <cd:variable name="middle" value="centru"/>
+ <cd:variable name="after" value="dupa"/>
+ <cd:variable name="name" value="nume"/>
+ <cd:variable name="opposite" value="opus"/>
+ <cd:variable name="no" value="nu"/>
+ <cd:variable name="negative" value="negativ"/>
+ <cd:variable name="positive" value="positiv"/>
+ <cd:variable name="not" value="nu"/>
+ <cd:variable name="never" value="niciodata"/>
+ <cd:variable name="normal" value="normal"/>
+ <cd:variable name="number" value="numar"/>
+ <cd:variable name="offset" value="offset"/>
+ <cd:variable name="unknown" value="necunoscut"/>
+ <cd:variable name="bottom" value="subsol"/>
+ <cd:variable name="odd" value="impar"/>
+ <cd:variable name="packed" value="impachetat"/>
+ <cd:variable name="unpacked" value="despachetat"/>
+ <cd:variable name="makeup" value="marcaj"/>
+ <cd:variable name="atmargin" value="lamargine"/>
+ <cd:variable name="overlay" value="overlay"/>
+ <cd:variable name="page" value="pagina"/>
+ <cd:variable name="pagenumber" value="numarpagina"/>
+ <cd:variable name="paper" value="foaie"/>
+ <cd:variable name="display" value="display"/>
+ <cd:variable name="reverse" value="reverse"/>
+ <cd:variable name="fit" value="ajustat"/>
+ <cd:variable name="postscript" value="postscript"/>
+ <cd:variable name="preview" value="previzualizare"/>
+ <cd:variable name="program" value="program"/>
+ <cd:variable name="process" value="process"/>
+ <cd:variable name="spot" value="spot"/>
+ <cd:variable name="dot" value="punct"/>
+ <cd:variable name="ran" value="rulat"/>
+ <cd:variable name="edge" value="bordura"/>
+ <cd:variable name="screen" value="ecran"/>
+ <cd:variable name="rectangular" value="rectangular"/>
+ <cd:variable name="rightmargin" value="marginedreapta"/>
+ <cd:variable name="rightpage" value="paginadreapta"/>
+ <cd:variable name="rightedge" value="borduradreapta"/>
+ <cd:variable name="right" value="dreapta"/>
+ <cd:variable name="line" value="linie"/>
+ <cd:variable name="register" value="registru"/>
+ <cd:variable name="relative" value="relativ"/>
+ <cd:variable name="reset" value="reset"/>
+ <cd:variable name="Romannumerals" value="Numereromane"/>
+ <cd:variable name="romannumerals" value="numereromane"/>
+ <cd:variable name="greek" value="grec"/>
+ <cd:variable name="Greek" value="Grec"/>
+ <cd:variable name="round" value="rotund"/>
+ <cd:variable name="rotate" value="rotit"/>
+ <cd:variable name="stretch" value="dilatat"/>
+ <cd:variable name="backspace" value="spatiuspate"/>
+ <cd:variable name="broad" value="broad"/>
+ <cd:variable name="row" value="rand"/>
+ <cd:variable name="slanted" value="inclinat"/>
+ <cd:variable name="slantedbold" value="inclinataldin"/>
+ <cd:variable name="synchronize" value="synchronize"/>
+ <cd:variable name="italicbold" value="italicaldin"/>
+ <cd:variable name="sectionnumber" value="numarsetiune"/>
+ <cd:variable name="narrow" value="ingust"/>
+ <cd:variable name="cutspace" value="cutspace"/>
+ <cd:variable name="tolerant" value="tolerant"/>
+ <cd:variable name="space" value="spatiu"/>
+ <cd:variable name="standard" value="standard"/>
+ <cd:variable name="start" value="start"/>
+ <cd:variable name="stop" value="stop"/>
+ <cd:variable name="strict" value="strict"/>
+ <cd:variable name="strut" value="strut"/>
+ <cd:variable name="sub" value="sub"/>
+ <cd:variable name="sym" value="sym"/>
+ <cd:variable name="symbol" value="simbol"/>
+ <cd:variable name="text" value="text"/>
+ <cd:variable name="back" value="inapot"/>
+ <cd:variable name="test" value="text"/>
+ <cd:variable name="inbetween" value="intre"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="off" value="dezactivat"/>
+ <cd:variable name="url" value="url"/>
+ <cd:variable name="URL" value="URL"/>
+ <cd:variable name="fixed" value="fixat"/>
+ <cd:variable name="loose" value="larg"/>
+ <cd:variable name="continue" value="continuu"/>
+ <cd:variable name="vertical" value="vertical"/>
+ <cd:variable name="bold" value="aldin"/>
+ <cd:variable name="boldslanted" value="aldininclinat"/>
+ <cd:variable name="bolditalic" value="aldinitalic"/>
+ <cd:variable name="quadruple" value="cvadrupul"/>
+ <cd:variable name="footer" value="subsol"/>
+ <cd:variable name="next" value="urmatorul"/>
+ <cd:variable name="before" value="inainte"/>
+ <cd:variable name="foreground" value="primplan"/>
+ <cd:variable name="preference" value="preferinta"/>
+ <cd:variable name="temporary" value="temporar"/>
+ <cd:variable name="forward" value="avans"/>
+ <cd:variable name="subforward" value="subavans"/>
+ <cd:variable name="previous" value="precedent"/>
+ <cd:variable name="value" value="valoare"/>
+ <cd:variable name="week" value="saptamana"/>
+ <cd:variable name="weekday" value="zisaptamana"/>
+ <cd:variable name="WEEKDAY" value="ZISAPTAMANA"/>
+ <cd:variable name="random" value="aleator"/>
+ <cd:variable name="white" value="alb"/>
+ <cd:variable name="very" value="foarte"/>
+ <cd:variable name="verytolerant" value="foartetolerant"/>
+ <cd:variable name="verystrict" value="foartestrict"/>
+ <cd:variable name="see" value="vezi"/>
+ <cd:variable name="smallcaps" value="majusculemici"/>
+ <cd:variable name="WORD" value="CUVANT"/>
+ <cd:variable name="firstpage" value="primapagina"/>
+ <cd:variable name="firstcolumn" value="firstcolumn"/>
+ <cd:variable name="previouspage" value="paginaanterioara"/>
+ <cd:variable name="nextpage" value="paginaurmatoare"/>
+ <cd:variable name="lastpage" value="ultimapagina"/>
+ <cd:variable name="lastcolumn" value="lastcolumn"/>
+ <cd:variable name="lastpagenumber" value="lastpagenumber"/>
+ <cd:variable name="subpage" value="subpagina"/>
+ <cd:variable name="firstsubpage" value="primasubpagina"/>
+ <cd:variable name="previoussubpage" value="subpaginaanterioara"/>
+ <cd:variable name="nextsubpage" value="urmatoareasubpagina"/>
+ <cd:variable name="lastsubpage" value="ultimasubpagina"/>
+ <cd:variable name="nextevenpage" value="paginaparaurmatoarea"/>
+ <cd:variable name="nextoddpage" value="paginaimparaurmatoarea"/>
+ <cd:variable name="previousevenpage" value="paginaparaprecedenta"/>
+ <cd:variable name="previousoddpage" value="paginaimparaprecedenta"/>
+ <cd:variable name="readonly" value="readonly"/>
+ <cd:variable name="required" value="obligatoriu"/>
+ <cd:variable name="protected" value="protejat"/>
+ <cd:variable name="sorted" value="sortat"/>
+ <cd:variable name="unavailable" value="nedisponibil"/>
+ <cd:variable name="hidden" value="ascuns"/>
+ <cd:variable name="printable" value="tiparibil"/>
+ <cd:variable name="bookmark" value="semncarte"/>
+ <cd:variable name="nocheck" value="nocheck"/>
+ <cd:variable name="innermargin" value="innermargin"/>
+ <cd:variable name="outermargin" value="outermargin"/>
+ <cd:variable name="inneredge" value="inneredge"/>
+ <cd:variable name="outeredge" value="outeredge"/>
+ <cd:variable name="controls" value="controale"/>
+ <cd:variable name="nothanging" value="nothanging"/>
+ <cd:variable name="hyphenated" value="despsilabe"/>
+ <cd:variable name="nothyphenated" value="nedespsilabe"/>
+ <cd:variable name="overprint" value="overprint"/>
+ <cd:variable name="knockout" value="knockout"/>
+ <cd:variable name="xml" value="xml"/>
+ <cd:variable name="enumeration" value="enumerare"/>
+ <cd:variable name="description" value="descriere"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="controls" value="controale"/>
+ <cd:constant name="global" value="global"/>
+ <cd:constant name="overprint" value="overprint"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="conversion" value="conversie"/>
+ <cd:variable name="by" value="de"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="dx" value="dx"/>
+ <cd:constant name="dy" value="dy"/>
+ <cd:constant name="nx" value="nx"/>
+ <cd:constant name="ny" value="ny"/>
+ <cd:constant name="nr" value="nr"/>
+ <cd:constant name="nl" value="nl"/>
+ <cd:constant name="nc" value="nc"/>
+ <cd:constant name="sx" value="sx"/>
+ <cd:constant name="sy" value="sy"/>
+ <cd:constant name="n" value="n"/>
+ <cd:constant name="vfil" value="vfil"/>
+ <cd:constant name="hfil" value="hfil"/>
+ <cd:constant name="strut" value="strut"/>
+ <cd:constant name="reset" value="reset"/>
+ <cd:constant name="set" value="set"/>
+ <cd:constant name="escape" value="escape"/>
+ <cd:constant name="apa" value="apa"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="calligraphic" value="caligrafic"/>
+ <cd:variable name="handwritten" value="scrismanual"/>
+ <cd:variable name="sansserif" value="sansserif"/>
+ <cd:variable name="roman" value="roman"/>
+ <cd:variable name="teletype" value="teletype"/>
+ <cd:variable name="type" value="type"/>
+ <cd:variable name="serif" value="serif"/>
+ <cd:variable name="regular" value="regular"/>
+ <cd:variable name="support" value="suport"/>
+ <cd:variable name="sans" value="sans"/>
+ <cd:variable name="mono" value="mono"/>
+ </cd:variables>
+
+ <cd:elements>
+ <cd:element name="begin" value="inceput"/>
+ <cd:element name="end" value="sfarsit"/>
+ <cd:element name="coupled" value="cuplat"/>
+ <cd:element name="get" value="get"/>
+ <cd:element name="currentlocal" value="localcurent"/>
+ <cd:element name="endsetup" value="endsetup"/>
+ <cd:element name="load" value="incarca"/>
+ <cd:element name="emptyone" value="gol"/>
+ <cd:element name="emptytwo" value="gol"/>
+ <cd:element name="list" value="lista"/>
+ <cd:element name="listof" value="listade"/>
+ <cd:element name="local" value="local"/>
+ <cd:element name="place" value="pune"/>
+ <cd:element name="reserve" value="rezervat"/>
+ <cd:element name="start" value="start"/>
+ <cd:element name="setup" value="setare"/>
+ <cd:element name="stop" value="stop"/>
+ <cd:element name="increment" value="increment"/>
+ <cd:element name="next" value="urmatorul"/>
+ <cd:element name="complete" value="complet"/>
+ <cd:element name="previous" value="precedent"/>
+ <cd:element name="previouslocal" value="precedentlocal"/>
+ <cd:element name="see" value="vezi"/>
+ <cd:element name="type" value="type"/>
+ <cd:element name="makeup" value="makeup"/>
+ <cd:element name="text" value="text"/>
+ </cd:elements>
+
+ <cd:variables>
+ <cd:variable name="buffer" value="buffer"/>
+ <cd:variable name="linenote" value="linenote"/>
+ <cd:variable name="comment" value="comentariu"/>
+ <cd:variable name="interactionmenu" value="meniuinteractiune"/>
+ <cd:variable name="postponing" value="postponing"/>
+ <cd:variable name="hiding" value="ascundere"/>
+ <cd:variable name="tabulate" value="tabulate"/>
+ <cd:variable name="tabulatehead" value="tabulatehead"/>
+ <cd:variable name="tabulatetail" value="tabulatetail"/>
+ <cd:variable name="fact" value="fapt"/>
+ <cd:variable name="legend" value="legenda"/>
+ <cd:variable name="formula" value="formula"/>
+ <cd:variable name="tablehead" value="antettabel"/>
+ <cd:variable name="tabletail" value="subsoltabel"/>
+ <cd:variable name="setups" value="setari"/>
+ <cd:variable name="helptext" value="textajutator"/>
+ <cd:variable name="localenvironment" value="mediulocal"/>
+ <cd:variable name="sectionblockenvironment" value="blocsectiuneambient"/>
+ <cd:variable name="pagecomment" value="comentariupagina"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="FirstPage" value="PrimaPagina"/>
+ <cd:variable name="PreviousPage" value="PaginaPrecedenta"/>
+ <cd:variable name="NextPage" value="PaginaUrmatoare"/>
+ <cd:variable name="LastPage" value="UltimaPagina"/>
+ <cd:variable name="PreviousJump" value="SaltPrecedent"/>
+ <cd:variable name="NextJump" value="SaltUrmator"/>
+ <cd:variable name="ToggleViewer" value="SchimbaVizualizator"/>
+ <cd:variable name="ExitViewer" value="IesireVizualizator"/>
+ <cd:variable name="CloseDocument" value="InchideDocument"/>
+ <cd:variable name="SaveDocument" value="SalvareDocument"/>
+ <cd:variable name="SaveNamedDocument" value="SaveNamedDocument"/>
+ <cd:variable name="OpenNamedDocument" value="OpenNamedDocument"/>
+ <cd:variable name="ViewerHelp" value="AjutorVizualizator"/>
+ <cd:variable name="PrintDocument" value="TiparesteDocument"/>
+ <cd:variable name="SearchDocument" value="CautaDocument"/>
+ <cd:variable name="SearchAgain" value="CautaDinNou"/>
+ <cd:variable name="Query" value="Query"/>
+ <cd:variable name="QueryAgain" value="QueryAgain"/>
+ <cd:variable name="GotoPage" value="LaPagina"/>
+ <cd:variable name="StartMovie" value="StartFilm"/>
+ <cd:variable name="StopMovie" value="StopFilm"/>
+ <cd:variable name="PauseMovie" value="PauzaFilm"/>
+ <cd:variable name="ResumeMovie" value="RepornesteFilm"/>
+ <cd:variable name="StartSound" value="StartSunet"/>
+ <cd:variable name="StopSound" value="StopSunet"/>
+ <cd:variable name="PauseSound" value="PauzaSunet"/>
+ <cd:variable name="ResumeSound" value="RepornesteSunet"/>
+ <cd:variable name="StartRendering" value="StartRendering"/>
+ <cd:variable name="StopRendering" value="StopRendering"/>
+ <cd:variable name="PauseRendering" value="PauseRendering"/>
+ <cd:variable name="ResumeRendering" value="ResumeRendering"/>
+ <cd:variable name="SaveForm" value="SalveazaFormular"/>
+ <cd:variable name="LoadForm" value="IncarcaFormular"/>
+ <cd:variable name="ResetForm" value="ResetareFormular"/>
+ <cd:variable name="SubmitForm" value="TrimiteFormular"/>
+ <cd:variable name="HideField" value="AscundeCamp"/>
+ <cd:variable name="ShowField" value="AfiseazaCamp"/>
+ <cd:variable name="FitWidth" value="AjustatLatime"/>
+ <cd:variable name="FitHeight" value="AjustatInaltime"/>
+ <cd:variable name="HideLayer" value="HideLayer"/>
+ <cd:variable name="VideLayer" value="VideLayer"/>
+ <cd:variable name="ToggleLayer" value="ToggleLayer"/>
+ </cd:variables>
+
+ <cd:variables>
+ <cd:variable name="New" value="Nou"/>
+ <cd:variable name="Balloon" value="Balon"/>
+ <cd:variable name="Addition" value="Adaugare"/>
+ <cd:variable name="Help" value="Ajutor"/>
+ <cd:variable name="Paragraph" value="Paragraf"/>
+ <cd:variable name="Key" value="Cheie"/>
+ </cd:variables>
+
+ <cd:constants>
+ <cd:constant name="bet" value="bet"/>
+ <cd:constant name="dat" value="dat"/>
+ <cd:constant name="ken" value="ken"/>
+ <cd:constant name="ref" value="ref"/>
+ </cd:constants>
+
+ <cd:variables>
+ <cd:variable name="formeel" value="formeel"/>
+ <cd:variable name="informeel" value="informeel"/>
+ <cd:variable name="rekening" value="rekening"/>
+ <cd:variable name="sticker" value="sticker"/>
+ <cd:variable name="sheet" value="sheet"/>
+ <cd:variable name="brief" value="brief"/>
+ <cd:variable name="ls" value="ls"/>
+ </cd:variables>
+
+ <cd:commands>
+ <cd:command name="language" value="limba"/>
+ <cd:command name="mainlanguage" value="limbaprincipala"/>
+ <cd:command name="translate" value="traduce"/>
+ <cd:command name="installlanguage" value="instalarelimba"/>
+ <cd:command name="setuplanguage" value="setarelimba"/>
+ <cd:command name="showmakeup" value="afiseazamakeup"/>
+ <cd:command name="useencoding" value="folosestecodificarea"/>
+ <cd:command name="usespecials" value="folosestespeciale"/>
+ <cd:command name="defineoutput" value="definesteoutput"/>
+ <cd:command name="setupoutput" value="setareoutput"/>
+ <cd:command name="defineaccent" value="definesteaccent"/>
+ <cd:command name="definecharacter" value="definestecaracter"/>
+ <cd:command name="definecommand" value="definestecomanda"/>
+ <cd:command name="startcoding" value="startcodificare"/>
+ <cd:command name="stopcoding" value="stopcodificare"/>
+ <cd:command name="definebodyfontenvironment" value="definestemediulfonttext"/>
+ <cd:command name="setupbodyfontenvironment" value="seteazamediulfonttext"/>
+ <cd:command name="definebodyfont" value="definestefonttext"/>
+ <cd:command name="definefont" value="definestefont"/>
+ <cd:command name="definefontsynonym" value="definestesinonimfont"/>
+ <cd:command name="definestyle" value="definestestil"/>
+ <cd:command name="definefontstyle" value="definestestilfont"/>
+ <cd:command name="setupstrut" value="seteazastrut"/>
+ <cd:command name="setuptype" value="seteazatype"/>
+ <cd:command name="type" value="type"/>
+ <cd:command name="typ" value="typ"/>
+ <cd:command name="arg" value="arg"/>
+ <cd:command name="tex" value="tex"/>
+ <cd:command name="definetyping" value="definestetyping"/>
+ <cd:command name="definetype" value="definetype"/>
+ <cd:command name="setuptyping" value="seteazatyping"/>
+ <cd:command name="typefile" value="typefile"/>
+ <cd:command name="setupfootnotes" value="seteazanotasubsol"/>
+ <cd:command name="setupfootnotedefinition" value="seteazadefinireanotasubsol"/>
+ <cd:command name="note" value="nota"/>
+ <cd:command name="footnote" value="notasubsol"/>
+ <cd:command name="footnotetext" value="footnotetext"/>
+ <cd:command name="startlocalfootnotes" value="startnotesubsollocale"/>
+ <cd:command name="stoplocalfootnotes" value="stopnotesubsollocale"/>
+ <cd:command name="placelocalfootnotes" value="punenotesubsollocale"/>
+ <cd:command name="placefootnotes" value="punenotesubsol"/>
+ <cd:command name="currentdate" value="datacurenta"/>
+ <cd:command name="date" value="data"/>
+ <cd:command name="weekday" value="zidinsaptamana"/>
+ <cd:command name="WEEKDAY" value="ZIDINSAPTAMANA"/>
+ <cd:command name="month" value="luna"/>
+ <cd:command name="MONTH" value="LUNA"/>
+ <cd:command name="Numbers" value="Numere"/>
+ <cd:command name="numbers" value="numere"/>
+ <cd:command name="romannumerals" value="numereromane"/>
+ <cd:command name="Romannumerals" value="Numereromane"/>
+ <cd:command name="character" value="litera"/>
+ <cd:command name="Character" value="Litera"/>
+ <cd:command name="characters" value="litere"/>
+ <cd:command name="Characters" value="Litere"/>
+ <cd:command name="unknown" value="necunoscut"/>
+ <cd:command name="definesymbol" value="definestesimbol"/>
+ <cd:command name="definefiguresymbol" value="definestesimbolfigura"/>
+ <cd:command name="symbol" value="simbol"/>
+ <cd:command name="setupsymbolset" value="seteazasimbol"/>
+ <cd:command name="showsymbolset" value="afiseazasetsimboluri"/>
+ <cd:command name="startsymbolset" value="startsetsimboluri"/>
+ <cd:command name="usesymbols" value="folosestesimboluri"/>
+ <cd:command name="defineconversion" value="definesteconversie"/>
+ <cd:command name="convertnumber" value="convertestenumar"/>
+ <cd:command name="setupcapitals" value="seteazamajuscule"/>
+ <cd:command name="smallcapped" value="kap"/>
+ <cd:command name="notsmallcapped" value="nokap"/>
+ <cd:command name="CAPPED" value="KAP"/>
+ <cd:command name="SmallCapped" value="Kap"/>
+ <cd:command name="SmallCaps" value="Kaps"/>
+ <cd:command name="WORD" value="CUVANT"/>
+ <cd:command name="WORDS" value="CUVINTE"/>
+ <cd:command name="Word" value="Cuvant"/>
+ <cd:command name="Words" value="Cuvinte"/>
+ <cd:command name="stretched" value="intins"/>
+ <cd:command name="overstrike" value="liniepeste"/>
+ <cd:command name="overstrikes" value="liniipeste"/>
+ <cd:command name="overbar" value="barasus"/>
+ <cd:command name="overbars" value="supralinie"/>
+ <cd:command name="underbar" value="sublinie"/>
+ <cd:command name="underbars" value="sublinii"/>
+ <cd:command name="setupunderbar" value="seteazasublinie"/>
+ <cd:command name="setupbodyfont" value="seteazafonttext"/>
+ <cd:command name="switchtobodyfont" value="trecilafonttext"/>
+ <cd:command name="showbodyfont" value="afiseazafonttext"/>
+ <cd:command name="showbodyfontenvironment" value="afiseazamediufonttext"/>
+ <cd:command name="headtext" value="texttitlu"/>
+ <cd:command name="labeltext" value="texteticheta"/>
+ <cd:command name="LABELTEXT" value="TEXTETICHETA"/>
+ <cd:command name="setupheadtext" value="seteazatexttitlu"/>
+ <cd:command name="setuplabeltext" value="seteazatexteticheta"/>
+ <cd:command name="marginrule" value="liniemargine"/>
+ <cd:command name="startmarginrule" value="startliniemargine"/>
+ <cd:command name="stopmarginrule" value="stopliniemargine"/>
+ <cd:command name="setupmarginrules" value="seteazaliniimargine"/>
+ <cd:command name="blackrule" value="linieneagra"/>
+ <cd:command name="blackrules" value="liniinegre"/>
+ <cd:command name="setupblackrules" value="seteazaliniinegre"/>
+ <cd:command name="setupscreens" value="seteazaecrane"/>
+ <cd:command name="framed" value="framed"/>
+ <cd:command name="inframed" value="inframed"/>
+ <cd:command name="mframed" value="maframed"/>
+ <cd:command name="inmframed" value="inmaframed"/>
+ <cd:command name="setupframed" value="seteazainconjurat"/>
+ <cd:command name="setuplinewidth" value="seteazagrosimelinie"/>
+ <cd:command name="setupthinrules" value="seteazaliniesubtire"/>
+ <cd:command name="thinrule" value="liniesubtire"/>
+ <cd:command name="thinrules" value="liniisubtiri"/>
+ <cd:command name="hairline" value="firdepar"/>
+ <cd:command name="vl" value="vl"/>
+ <cd:command name="hl" value="hl"/>
+ <cd:command name="defineframed" value="definesteinconjurare"/>
+ <cd:command name="defineframedtext" value="definestetextinconjurat"/>
+ <cd:command name="setupframedtexts" value="definestetexteinconjurate"/>
+ <cd:command name="defineoverlay" value="definesteoverlay"/>
+ <cd:command name="definelayer" value="definelayer"/>
+ <cd:command name="background" value="fundal"/>
+ <cd:command name="startbackground" value="startfundal"/>
+ <cd:command name="stopbackground" value="stopfundal"/>
+ <cd:command name="setupbackground" value="seteazafundal"/>
+ <cd:command name="fillinrules" value="rigleumplere"/>
+ <cd:command name="setupfillinrules" value="seteazarigleumplere"/>
+ <cd:command name="fillintext" value="textumplere"/>
+ <cd:command name="setupfillinlines" value="seteazaliniiumplere"/>
+ <cd:command name="fillinline" value="linieumplere"/>
+ <cd:command name="setuptextrules" value="seteazarigletext"/>
+ <cd:command name="textrule" value="riglatext"/>
+ <cd:command name="starttextrule" value="startriglatext"/>
+ <cd:command name="stoptextrule" value="stopriglatext"/>
+ <cd:command name="usemodule" value="folosestemodul"/>
+ <cd:command name="usemodules" value="folosestemodule"/>
+ <cd:command name="starttext" value="starttext"/>
+ <cd:command name="stoptext" value="stoptext"/>
+ <cd:command name="margintitle" value="titlumarginal"/>
+ <cd:command name="marginword" value="cuvantmarginal"/>
+ <cd:command name="margintext" value="textmarginal"/>
+ <cd:command name="inleft" value="instanga"/>
+ <cd:command name="inmargin" value="marginal"/>
+ <cd:command name="inothermargin" value="inaltamargine"/>
+ <cd:command name="inright" value="indreapta"/>
+ <cd:command name="ininner" value="ininner"/>
+ <cd:command name="inouter" value="inouter"/>
+ <cd:command name="startmarginblock" value="startblocmarginal"/>
+ <cd:command name="stopmarginblock" value="stopblocmarginal"/>
+ <cd:command name="defineinmargin" value="defineinmargin"/>
+ <cd:command name="setupinmargin" value="seteazamarginal"/>
+ <cd:command name="setupmarginblocks" value="seteazablocurimarginale"/>
+ <cd:command name="inleftedge" value="inparteastanga"/>
+ <cd:command name="inleftmargin" value="inmargineastanga"/>
+ <cd:command name="inrightmargin" value="inmargineadreapta"/>
+ <cd:command name="inrightedge" value="inparteadreapta"/>
+ <cd:command name="atleftmargin" value="atleftmargin"/>
+ <cd:command name="atrightmargin" value="atrightmargin"/>
+ <cd:command name="wordright" value="cuvantdreapta"/>
+ <cd:command name="defineblank" value="definesteblanc"/>
+ <cd:command name="blank" value="blanc"/>
+ <cd:command name="setupblank" value="seteazablanc"/>
+ <cd:command name="correctwhitespace" value="corecteazaspatiualb"/>
+ <cd:command name="fixedspaces" value="spatiifixate"/>
+ <cd:command name="fixedspace" value="spatiufixat"/>
+ <cd:command name="nospace" value="faraspatiu"/>
+ <cd:command name="space" value="spatiu"/>
+ <cd:command name="nowhitespace" value="faraspatiualb"/>
+ <cd:command name="packed" value="impachetat"/>
+ <cd:command name="startpacked" value="startimpachetat"/>
+ <cd:command name="stoppacked" value="stopimpachetat"/>
+ <cd:command name="startunpacked" value="startneimpachetat"/>
+ <cd:command name="stopunpacked" value="stopneimpachetat"/>
+ <cd:command name="startlinecorrection" value="startcorectielinie"/>
+ <cd:command name="stoplinecorrection" value="stopcorectielinie"/>
+ <cd:command name="godown" value="injos"/>
+ <cd:command name="whitespace" value="spatiualb"/>
+ <cd:command name="noindenting" value="faraaliniat"/>
+ <cd:command name="indenting" value="aliniat"/>
+ <cd:command name="setupindenting" value="seteazaaliniat"/>
+ <cd:command name="startalignment" value="startaliniere"/>
+ <cd:command name="stopalignment" value="stopaliniere"/>
+ <cd:command name="startlines" value="startlinii"/>
+ <cd:command name="stoplines" value="stoplinii"/>
+ <cd:command name="setupparagraphnumbering" value="seteazanumerotareparagrafe"/>
+ <cd:command name="setuplinenumbering" value="seteazanumerotarelinii"/>
+ <cd:command name="startlinenumbering" value="startnumerotarelinii"/>
+ <cd:command name="stoplinenumbering" value="stopnumerotarelinii"/>
+ <cd:command name="startline" value="startlinie"/>
+ <cd:command name="stopline" value="stoplinie"/>
+ <cd:command name="someline" value="olinie"/>
+ <cd:command name="inline" value="inlinie"/>
+ <cd:command name="crlf" value="crlf"/>
+ <cd:command name="emptylines" value="emptylines"/>
+ <cd:command name="setuplines" value="seteazalinii"/>
+ <cd:command name="startnarrower" value="startingust"/>
+ <cd:command name="stopnarrower" value="stopingust"/>
+ <cd:command name="setupnarrower" value="seteazaingust"/>
+ <cd:command name="definetabulate" value="definestetabulatori"/>
+ <cd:command name="setuptabulate" value="seteazatabulatori"/>
+ <cd:command name="starttable" value="starttabel"/>
+ <cd:command name="stoptable" value="stoptabel"/>
+ <cd:command name="starttables" value="starttabele"/>
+ <cd:command name="stoptables" value="stoptabele"/>
+ <cd:command name="setuptables" value="seteazatabele"/>
+ <cd:command name="definetabletemplate" value="definestesablontabel"/>
+ <cd:command name="page" value="pagina"/>
+ <cd:command name="testcolumn" value="testcolumn"/>
+ <cd:command name="testpage" value="testpage"/>
+ <cd:command name="couplepage" value="paginadubla"/>
+ <cd:command name="pagetype" value="tippagina"/>
+ <cd:command name="processpage" value="proceseazapagina"/>
+ <cd:command name="couplepaper" value="hartiedubla"/>
+ <cd:command name="selectpaper" value="selecteazahartie"/>
+ <cd:command name="screen" value="ecran"/>
+ <cd:command name="definesection" value="definestesectiune"/>
+ <cd:command name="definesectionblock" value="definesteblocsectiune"/>
+ <cd:command name="setupsectionblock" value="seteazablocsectiune"/>
+ <cd:command name="setupsection" value="seteazasectiune"/>
+ <cd:command name="notopandbottomlines" value="faraliniisussijos"/>
+ <cd:command name="noheaderandfooterlines" value="faraliniiantetsisubsol"/>
+ <cd:command name="setuptop" value="seteazasus"/>
+ <cd:command name="setuptoptexts" value="seteazatextesus"/>
+ <cd:command name="setupheader" value="seteazaantet"/>
+ <cd:command name="setupheadertexts" value="seteazatexteantet"/>
+ <cd:command name="setuppagenumbering" value="seteazanumerotarepagina"/>
+ <cd:command name="getnumber" value="getnumber"/>
+ <cd:command name="incrementnumber" value="numarincrement"/>
+ <cd:command name="decrementnumber" value="decrementnumber"/>
+ <cd:command name="resetnumber" value="resetnumber"/>
+ <cd:command name="setnumber" value="setnumber"/>
+ <cd:command name="setupnumber" value="setupnumber"/>
+ <cd:command name="setupbottom" value="seteazajos"/>
+ <cd:command name="setupbottomtexts" value="seteazatextejos"/>
+ <cd:command name="setupfooter" value="seteazasubsol"/>
+ <cd:command name="setupfootertexts" value="seteazatextesubsol"/>
+ <cd:command name="setuppagenumber" value="seteazanumarpagina"/>
+ <cd:command name="setupsubpagenumber" value="seteazanumarsubpagina"/>
+ <cd:command name="subpagenumber" value="subpagenumber"/>
+ <cd:command name="setuptext" value="seteazatext"/>
+ <cd:command name="setuptexttexts" value="seteazatextetext"/>
+ <cd:command name="definetext" value="definestetext"/>
+ <cd:command name="pagenumber" value="numarpagina"/>
+ <cd:command name="completepagenumber" value="completeazanumarpagina"/>
+ <cd:command name="placepagenumber" value="punenumarpagina"/>
+ <cd:command name="items" value="element"/>
+ <cd:command name="setupitems" value="seteazaelemente"/>
+ <cd:command name="leftaligned" value="aliniatstanga"/>
+ <cd:command name="midaligned" value="aliniatcentru"/>
+ <cd:command name="rightaligned" value="aliniatdreapta"/>
+ <cd:command name="startcolumns" value="startcoloane"/>
+ <cd:command name="stopcolumns" value="stopcoloane"/>
+ <cd:command name="setupcolumns" value="seteazacoloane"/>
+ <cd:command name="column" value="coloana"/>
+ <cd:command name="head" value="titlu"/>
+ <cd:command name="but" value="but"/>
+ <cd:command name="item" value="element"/>
+ <cd:command name="nop" value="nop"/>
+ <cd:command name="mar" value="mar"/>
+ <cd:command name="sym" value="sim"/>
+ <cd:command name="its" value="el"/>
+ <cd:command name="ran" value="ran"/>
+ <cd:command name="headsym" value="headsym"/>
+ <cd:command name="defineitemgroup" value="defineitemgroup"/>
+ <cd:command name="setupitemgroup" value="setupitemgroup"/>
+ <cd:command name="setupitemgroups" value="setupitemgroups"/>
+ <cd:command name="definehead" value="definesteantet"/>
+ <cd:command name="setuphead" value="seteazatitlu"/>
+ <cd:command name="setupheads" value="seteazatitluri"/>
+ <cd:command name="setupheadnumber" value="seteazanumartitlu"/>
+ <cd:command name="headnumber" value="numartitlu"/>
+ <cd:command name="currentheadnumber" value="numartitlucurent"/>
+ <cd:command name="determineheadnumber" value="determinanumartitlu"/>
+ <cd:command name="resetmarking" value="reseteazamarcaje"/>
+ <cd:command name="setupmarking" value="seteazamarcaje"/>
+ <cd:command name="definemarking" value="definestemarcaje"/>
+ <cd:command name="nomarking" value="faramarcaje"/>
+ <cd:command name="marking" value="marcaje"/>
+ <cd:command name="decouplemarking" value="decupleazamarcaje"/>
+ <cd:command name="couplemarking" value="cupleazamarcaje"/>
+ <cd:command name="getmarking" value="adumarcaje"/>
+ <cd:command name="definelayout" value="definelayout"/>
+ <cd:command name="setuplayout" value="seteazaaspect"/>
+ <cd:command name="adaptlayout" value="adapteazaaspect"/>
+ <cd:command name="placeongrid" value="plaseazapegrid"/>
+ <cd:command name="moveongrid" value="mutapegrid"/>
+ <cd:command name="showsetups" value="afiseazasetari"/>
+ <cd:command name="showframe" value="afiseazarama"/>
+ <cd:command name="showgrid" value="afiseazagrid"/>
+ <cd:command name="showlayout" value="afiseazaaspect"/>
+ <cd:command name="showprint" value="afiseazatiparire"/>
+ <cd:command name="showstruts" value="afiseazastruts"/>
+ <cd:command name="definepapersize" value="definestedimensiunehartie"/>
+ <cd:command name="setuppapersize" value="seteazadimensiunihartie"/>
+ <cd:command name="setuppaper" value="setuppaper"/>
+ <cd:command name="setuparranging" value="seteazaaranjareapag"/>
+ <cd:command name="version" value="versiune"/>
+ <cd:command name="setupbackgrounds" value="seteazafundaluri"/>
+ <cd:command name="setupalign" value="seteazaalinierea"/>
+ <cd:command name="setupwhitespace" value="seteazaspatiualb"/>
+ <cd:command name="setupinteraction" value="seteazainteractiunea"/>
+ <cd:command name="setupinteractionmenu" value="seteazameniuinteractiune"/>
+ <cd:command name="defineinteractionmenu" value="definestemeniuinteractiune"/>
+ <cd:command name="disableinteractionmenu" value="dezactiveazameniuinteractiune"/>
+ <cd:command name="interactionmenu" value="meniuinteractiune"/>
+ <cd:command name="interactionbuttons" value="butoaneinteractiune"/>
+ <cd:command name="interactionbar" value="barainteractiune"/>
+ <cd:command name="setupinteractionbar" value="seteazabarainteractiune"/>
+ <cd:command name="setupinteractionscreen" value="seteazaecraninteractiune"/>
+ <cd:command name="placebookmarks" value="plaseazasemnecarte"/>
+ <cd:command name="bookmark" value="semncarte"/>
+ <cd:command name="definelogo" value="definestelogo"/>
+ <cd:command name="placelogos" value="punelogouri"/>
+ <cd:command name="definecolor" value="definesteculoare"/>
+ <cd:command name="definecolorgroup" value="definestegrupculori"/>
+ <cd:command name="definepalet" value="definestepaleta"/>
+ <cd:command name="graycolor" value="culoaregri"/>
+ <cd:command name="color" value="culoare"/>
+ <cd:command name="startcolor" value="startculoare"/>
+ <cd:command name="stopcolor" value="stopculoare"/>
+ <cd:command name="setupcolors" value="seteazaculori"/>
+ <cd:command name="setupcolor" value="seteazaculoare"/>
+ <cd:command name="setuppalet" value="seteazapaleta"/>
+ <cd:command name="showcolor" value="afiseazaculoare"/>
+ <cd:command name="showcolorgroup" value="afiseazagrupculoare"/>
+ <cd:command name="showpalet" value="afiseazapaleta"/>
+ <cd:command name="comparecolorgroup" value="comparagrupculoare"/>
+ <cd:command name="comparepalet" value="comparapaleta"/>
+ <cd:command name="colorvalue" value="valoareculoare"/>
+ <cd:command name="greyvalue" value="valoaregri"/>
+ <cd:command name="startraster" value="startraster"/>
+ <cd:command name="stopraster" value="stopraster"/>
+ <cd:command name="defineblock" value="definestebloc"/>
+ <cd:command name="setupblock" value="seteazabloc"/>
+ <cd:command name="useblocks" value="folosestebloc"/>
+ <cd:command name="processblocks" value="proceseazabloc"/>
+ <cd:command name="keepblocks" value="pastreazablocuri"/>
+ <cd:command name="selectblocks" value="selecteazablocuri"/>
+ <cd:command name="hideblocks" value="ascundeblocuri"/>
+ <cd:command name="bypassblocks" value="saripesteblocuri"/>
+ <cd:command name="forceblocks" value="forteazablocuri"/>
+ <cd:command name="nomoreblocks" value="gatablocuri"/>
+ <cd:command name="definelist" value="definestelista"/>
+ <cd:command name="definecombinedlist" value="definestelistacombinata"/>
+ <cd:command name="listsymbol" value="listsymbol"/>
+ <cd:command name="placelist" value="punelista"/>
+ <cd:command name="plaatsruwelijst" value="placerawlist"/>
+ <cd:command name="placecombinedlist" value="punelistacombinata"/>
+ <cd:command name="writetolist" value="scrieinlista"/>
+ <cd:command name="writebetweenlist" value="scrieintreliste"/>
+ <cd:command name="immediatetolist" value="immediatetolist"/>
+ <cd:command name="immediatebetweenlist" value="immediatebetweenlist"/>
+ <cd:command name="setuplist" value="seteazalista"/>
+ <cd:command name="setupcombinedlist" value="seteazalistacombinata"/>
+ <cd:command name="determinelistcharacteristics" value="determinacaracteristicilelistei"/>
+ <cd:command name="listlength" value="lungimelista"/>
+ <cd:command name="listwidth" value="latimelista"/>
+ <cd:command name="listheight" value="inaltimelista"/>
+ <cd:command name="nolist" value="faralista"/>
+ <cd:command name="definereferencelist" value="definestelistareferinte"/>
+ <cd:command name="placereferencelist" value="punelistareferinte"/>
+ <cd:command name="writetoreferencelist" value="scrieinlistareferinte"/>
+ <cd:command name="setupreferencelist" value="seteazalistareferinte"/>
+ <cd:command name="definefloat" value="definestefloat"/>
+ <cd:command name="setupfloat" value="seteazafloat"/>
+ <cd:command name="setupfloats" value="seteazafloats"/>
+ <cd:command name="splitfloat" value="impartefloat"/>
+ <cd:command name="setupfloatsplitting" value="seteazaimpartireafloat"/>
+ <cd:command name="placefloat" value="placefloat"/>
+ <cd:command name="movesidefloat" value="movesidefloat"/>
+ <cd:command name="defineplacement" value="defineplacement"/>
+ <cd:command name="setupplacement" value="setupplacement"/>
+ <cd:command name="definecombination" value="definecombination"/>
+ <cd:command name="startcombination" value="startcombinare"/>
+ <cd:command name="stopcombination" value="stopcombinare"/>
+ <cd:command name="placesidebyside" value="punefatainfata"/>
+ <cd:command name="placeontopofeachother" value="punedeasuprafiecareia"/>
+ <cd:command name="setupcaption" value="seteazalegenda"/>
+ <cd:command name="setupcaptions" value="seteazalegendele"/>
+ <cd:command name="setupcombinations" value="seteazacombinari"/>
+ <cd:command name="startoverlay" value="startoverlay"/>
+ <cd:command name="stopoverlay" value="stopoverlay"/>
+ <cd:command name="defineregister" value="definesteregistru"/>
+ <cd:command name="coupleregister" value="cupleazaregistru"/>
+ <cd:command name="setupregister" value="seteazaregistru"/>
+ <cd:command name="writetoregister" value="scrieinregistru"/>
+ <cd:command name="completeregister" value="completeregister"/>
+ <cd:command name="placeregister" value="puneregistru"/>
+ <cd:command name="determineregistercharacteristics" value="determinacaracteristiciregistru"/>
+ <cd:command name="definesorting" value="definestesortare"/>
+ <cd:command name="definesynonyms" value="definestesinonim"/>
+ <cd:command name="setupsorting" value="seteazasortare"/>
+ <cd:command name="setupsynonyms" value="seteazasinonime"/>
+ <cd:command name="startsynchronization" value="startsincronizare"/>
+ <cd:command name="stopsynchronization" value="stopsincronizare"/>
+ <cd:command name="setupsynchronizationbar" value="setarebarasincronizare"/>
+ <cd:command name="setupsynchronization" value="setaresincronizare"/>
+ <cd:command name="synchronizationbar" value="barasincronizare"/>
+ <cd:command name="synchronize" value="sincronizeaza"/>
+ <cd:command name="useexternaldocument" value="folosestedocumentextern"/>
+ <cd:command name="useURL" value="folosesteURL"/>
+ <cd:command name="useurl" value="folosesteurl"/>
+ <cd:command name="setupurl" value="seteazaurl"/>
+ <cd:command name="coupledocument" value="cupleazadocument"/>
+ <cd:command name="setupprograms" value="seteazaprograme"/>
+ <cd:command name="defineprogram" value="definesteprogram"/>
+ <cd:command name="program" value="program"/>
+ <cd:command name="setuppagetransitions" value="seteazatranzitiepagina"/>
+ <cd:command name="defineprofile" value="definesteprofil"/>
+ <cd:command name="defineversion" value="definesteversiune"/>
+ <cd:command name="markversion" value="marcheazaversiune"/>
+ <cd:command name="selectversion" value="selecteazaversiune"/>
+ <cd:command name="startprofile" value="startprofil"/>
+ <cd:command name="startversion" value="startversiune"/>
+ <cd:command name="setupprofiles" value="seteazaprofile"/>
+ <cd:command name="setupversions" value="seteazaversiuni"/>
+ <cd:command name="stopprofile" value="stopprofil"/>
+ <cd:command name="stopversion" value="stopversiune"/>
+ <cd:command name="followprofile" value="urmeazaprofil"/>
+ <cd:command name="followprofileversion" value="urmeazaversiuneprofil"/>
+ <cd:command name="followversion" value="urmeazaversiune"/>
+ <cd:command name="definedescription" value="definestedescriere"/>
+ <cd:command name="definelabel" value="definesteeticheta"/>
+ <cd:command name="defineenumeration" value="definesteenumerare"/>
+ <cd:command name="defineindenting" value="definestealiat"/>
+ <cd:command name="setupdescriptions" value="seteazadescriere"/>
+ <cd:command name="setupenumerations" value="seteazaenumerare"/>
+ <cd:command name="setupindentations" value="seteazaaliniate"/>
+ <cd:command name="setuptab" value="seteazatab"/>
+ <cd:command name="tab" value="tab"/>
+ <cd:command name="setupexternalfigures" value="seteazafiguriexterne"/>
+ <cd:command name="showexternalfigures" value="afiseazafiguriexterne"/>
+ <cd:command name="externalfigure" value="figuraexterna"/>
+ <cd:command name="useexternalfigure" value="folosestefiguraexterna"/>
+ <cd:command name="startfigure" value="startfigura"/>
+ <cd:command name="referring" value="referring"/>
+ <cd:command name="remark" value="remarca"/>
+ <cd:command name="colorbar" value="baraculoare"/>
+ <cd:command name="grid" value="grid"/>
+ <cd:command name="button" value="buton"/>
+ <cd:command name="menubutton" value="butonmeniu"/>
+ <cd:command name="setupbuttons" value="seteazabutoane"/>
+ <cd:command name="usereferences" value="folosestereferinte"/>
+ <cd:command name="placereferencelist" value="placereferencelist"/>
+ <cd:command name="setupreferencelist" value="seteazalistareferinte"/>
+ <cd:command name="setupreferencing" value="seteazareferinte"/>
+ <cd:command name="textreference" value="referintatext"/>
+ <cd:command name="pagereference" value="referintapagina"/>
+ <cd:command name="reference" value="referinta"/>
+ <cd:command name="definereference" value="definestereferinte"/>
+ <cd:command name="definereferenceformat" value="definesteformatreferinte"/>
+ <cd:command name="useJSscripts" value="folosestescriptJS"/>
+ <cd:command name="from" value="din"/>
+ <cd:command name="in" value="in"/>
+ <cd:command name="at" value="la"/>
+ <cd:command name="about" value="despre"/>
+ <cd:command name="goto" value="dute"/>
+ <cd:command name="atpage" value="lapagina"/>
+ <cd:command name="somewhere" value="undeva"/>
+ <cd:command name="navigating" value="navigating"/>
+ <cd:command name="ref" value="ref"/>
+ <cd:command name="gotobox" value="dutebox"/>
+ <cd:command name="gotopage" value="dutepagina"/>
+ <cd:command name="placeformula" value="puneformula"/>
+ <cd:command name="placesubformula" value="punesubformula"/>
+ <cd:command name="moveformula" value="moveformula"/>
+ <cd:command name="setupformulas" value="seteazaformule"/>
+ <cd:command name="formulanumber" value="numarformula"/>
+ <cd:command name="subformulanumber" value="numarsubformula"/>
+ <cd:command name="leg" value="leg"/>
+ <cd:command name="fact" value="fact"/>
+ <cd:command name="mathematics" value="matematica"/>
+ <cd:command name="dimension" value="dimensiune"/>
+ <cd:command name="nodimension" value="faradimensiune"/>
+ <cd:command name="startenvironment" value="startmediu"/>
+ <cd:command name="stopenvironment" value="stopmediu"/>
+ <cd:command name="startcomponent" value="startcomponenta"/>
+ <cd:command name="stopcomponent" value="stopcomponenta"/>
+ <cd:command name="startproduct" value="startprodus"/>
+ <cd:command name="stopproduct" value="stopprodus"/>
+ <cd:command name="startproject" value="startproiect"/>
+ <cd:command name="stopproject" value="stopproiect"/>
+ <cd:command name="setups" value="setari"/>
+ <cd:command name="project" value="proiect"/>
+ <cd:command name="component" value="componenta"/>
+ <cd:command name="product" value="produs"/>
+ <cd:command name="environment" value="mediu"/>
+ <cd:command name="nomorefiles" value="farafisiere"/>
+ <cd:command name="getbuffer" value="adubuffer"/>
+ <cd:command name="setupbuffer" value="seteazabuffer"/>
+ <cd:command name="typebuffer" value="scriebuffer"/>
+ <cd:command name="definebuffer" value="definestebuffer"/>
+ <cd:command name="unitmeaning" value="numeunitate"/>
+ <cd:command name="infull" value="pelung"/>
+ <cd:command name="quotation" value="citat"/>
+ <cd:command name="quote" value="minicitat"/>
+ <cd:command name="startquotation" value="startcitat"/>
+ <cd:command name="stopquotation" value="stopcitat"/>
+ <cd:command name="setupquote" value="seteazaminicitat"/>
+ <cd:command name="define" value="defineste"/>
+ <cd:command name="redo" value="refa"/>
+ <cd:command name="usecommands" value="folosestecomenzi"/>
+ <cd:command name="definestartstop" value="definestestartstop"/>
+ <cd:command name="setupstartstop" value="setupstartstop"/>
+ <cd:command name="startlocal" value="startlocal"/>
+ <cd:command name="stoplocal" value="stoplocal"/>
+ <cd:command name="startglobal" value="startglobal"/>
+ <cd:command name="stopglobal" value="stopblobal"/>
+ <cd:command name="macroname" value="nume"/>
+ <cd:command name="definemakeup" value="definestemakeup"/>
+ <cd:command name="setupmakeup" value="seteazamakeup"/>
+ <cd:command name="startmakeup" value="startmakeup"/>
+ <cd:command name="stopmakeup" value="stopmakeup"/>
+ <cd:command name="useexternalsoundtrack" value="folosestemuzicaexterna"/>
+ <cd:command name="useexternalfile" value="folosestefisierextern"/>
+ <cd:command name="useexternalfiles" value="folosestefisiereexterne"/>
+ <cd:command name="referral" value="referit"/>
+ <cd:command name="referraldate" value="datareferit"/>
+ <cd:command name="high" value="inalt"/>
+ <cd:command name="lohi" value="jossus"/>
+ <cd:command name="low" value="jos"/>
+ <cd:command name="fraction" value="fractie"/>
+ <cd:command name="chem" value="chem"/>
+ <cd:command name="startopposite" value="startopozit"/>
+ <cd:command name="stopopposite" value="stopopozit"/>
+ <cd:command name="setupoppositeplacing" value="seteazaplasareaopozita"/>
+ <cd:command name="startpositioning" value="startpozitionare"/>
+ <cd:command name="stoppositioning" value="stoppozitionare"/>
+ <cd:command name="position" value="pozitie"/>
+ <cd:command name="setuppositioning" value="setarepozitie"/>
+ <cd:command name="rotate" value="roteste"/>
+ <cd:command name="setuprotate" value="seteazarotare"/>
+ <cd:command name="mirror" value="reflexie"/>
+ <cd:command name="scale" value="scala"/>
+ <cd:command name="setupnumbering" value="seteazanumerotare"/>
+ <cd:command name="reset" value="reset"/>
+ <cd:command name="setuppublications" value="seteazapublicatii"/>
+ <cd:command name="publication" value="publicatie"/>
+ <cd:command name="definehbox" value="definestehbox"/>
+ <cd:command name="adding" value="adauga"/>
+ <cd:command name="periods" value="puncte"/>
+ <cd:command name="setuphyphenmark" value="seteazaliniesilabe"/>
+ <cd:command name="setupinterlinespace" value="seteazaspatiuinterliniar"/>
+ <cd:command name="setupspacing" value="seteazaspatiu"/>
+ <cd:command name="setuptolerance" value="seteazatoleranta"/>
+ <cd:command name="setupsystem" value="seteazasistem"/>
+ <cd:command name="usepath" value="folosestedirector"/>
+ <cd:command name="defineparagraphs" value="definesteparagraf"/>
+ <cd:command name="setupparagraphs" value="seteazaparagrafe"/>
+ <cd:command name="donttest" value="nutesta"/>
+ <cd:command name="setupcomment" value="seteazacomentariu"/>
+ <cd:command name="comment" value="comentariu"/>
+ <cd:command name="definefield" value="definestecamp"/>
+ <cd:command name="definemainfield" value="definestecampprincipal"/>
+ <cd:command name="definesubfield" value="definestesubcamp"/>
+ <cd:command name="clonefield" value="cloneazacamp"/>
+ <cd:command name="copyfield" value="copiazacamp"/>
+ <cd:command name="setupfield" value="seteazacamp"/>
+ <cd:command name="setupfields" value="seteazacampuri"/>
+ <cd:command name="field" value="camp"/>
+ <cd:command name="fitfield" value="potrivestecamp"/>
+ <cd:command name="logfields" value="logcampuri"/>
+ <cd:command name="showfields" value="afiseazacampuri"/>
+ <cd:command name="tooltip" value="tooltip"/>
+ <cd:command name="fillinfield" value="campumplere"/>
+ <cd:command name="definefieldstack" value="definestestivacampuri"/>
+ <cd:command name="fieldstack" value="stivacampuri"/>
+ <cd:command name="setupforms" value="seteazaformulare"/>
+ <cd:command name="setupclipping" value="seteazaclipping"/>
+ <cd:command name="clip" value="clip"/>
+ <cd:command name="placelegend" value="punelegenda"/>
+ <cd:command name="setuplegend" value="seteazalegenda"/>
+ <cd:command name="setuppagecomment" value="seteazacomentariupagina"/>
+ <cd:command name="setupstrut" value="seteazastrut"/>
+ <cd:command name="definerule" value="definesterigla"/>
+ <cd:command name="placerule" value="punerigla"/>
+ <cd:command name="setuprule" value="seteazarigla"/>
+ <cd:command name="definetextvariable" value="definestevariabilatext"/>
+ <cd:command name="setuptextvariable" value="seteazavariabilatext"/>
+ <cd:command name="settextvariable" value="setvariabilatext"/>
+ <cd:command name="placetextvariable" value="punevariabilatext"/>
+ <cd:command name="textvariable" value="variabilatext"/>
+ <cd:command name="definetextposition" value="definestepozitietext"/>
+ <cd:command name="setuptextposition" value="seteazapozitietext"/>
+ <cd:command name="positiontext" value="pozitietext"/>
+ <cd:command name="definerawfont" value="definestefontraw"/>
+ <cd:command name="switchtorawfont" value="trecilafontraw"/>
+ <cd:command name="placeheadtext" value="placeheadtext"/>
+ <cd:command name="placeheadnumber" value="placeheadnumber"/>
+ <cd:command name="definepagebreak" value="definepagebreak"/>
+ <cd:command name="definecolumnbreak" value="definecolumnbreak"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="setupitemgroups" value="setareitemization"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="topheight" value="inaltimesus"/>
+ <cd:command name="topdistance" value="distantasus"/>
+ <cd:command name="headerheight" value="inaltimeantet"/>
+ <cd:command name="headerdistance" value="distantaantet"/>
+ <cd:command name="textheight" value="inaltimetext"/>
+ <cd:command name="footerdistance" value="distantasubsol"/>
+ <cd:command name="footerheight" value="inaltimesubsol"/>
+ <cd:command name="bottomdistance" value="distantajos"/>
+ <cd:command name="bottomheight" value="inaltimejos"/>
+ <cd:command name="marginwidth" value="latimemargine"/>
+ <cd:command name="leftmarginwidth" value="latimemarginestanga"/>
+ <cd:command name="rightmarginwidth" value="latimemarginedreapta"/>
+ <cd:command name="margindistance" value="distantamargine"/>
+ <cd:command name="leftmargindistance" value="distantamarginestanga"/>
+ <cd:command name="rightmargindistance" value="distantamarginedreapta"/>
+ <cd:command name="edgewidth" value="latimecolturi"/>
+ <cd:command name="leftedgewidth" value="latimecoltstanga"/>
+ <cd:command name="rightedgewidth" value="latimecoltdreapta"/>
+ <cd:command name="edgedistance" value="distantacolt"/>
+ <cd:command name="leftedgedistance" value="distantacoltstanga"/>
+ <cd:command name="rightedgedistance" value="distantacoltdreapta"/>
+ <cd:command name="innermarginwidth" value="innermarginwidth"/>
+ <cd:command name="outermarginwidth" value="outermarginwidth"/>
+ <cd:command name="innermargindistance" value="innermargindistance"/>
+ <cd:command name="outermargindistance" value="outermargindistance"/>
+ <cd:command name="inneredgewidth" value="inneredgewidth"/>
+ <cd:command name="outeredgewidth" value="outeredgewidth"/>
+ <cd:command name="inneredgedistance" value="inneredgedistance"/>
+ <cd:command name="outeredgedistance" value="outeredgedistance"/>
+ <cd:command name="textwidth" value="latimetext"/>
+ <cd:command name="makeupwidth" value="latimemakeup"/>
+ <cd:command name="makeupheight" value="inaltimemakeup"/>
+ <cd:command name="topspace" value="spatiusus"/>
+ <cd:command name="bottomspace" value="spatiujos"/>
+ <cd:command name="backspace" value="spatiuspate"/>
+ <cd:command name="cutspace" value="cutspace"/>
+ <cd:command name="paperwidth" value="latimehartie"/>
+ <cd:command name="paperheight" value="inaltimehartie"/>
+ <cd:command name="printpaperwidth" value="latimehartieimprimanta"/>
+ <cd:command name="printpaperheight" value="inaltimehartieimprimanta"/>
+ <cd:command name="pageoffset" value="pageoffset"/>
+ <cd:command name="pagedepth" value="pagedepth"/>
+ <cd:command name="headlevel" value="niveltitlu"/>
+ <cd:command name="linewidth" value="grosimelinie"/>
+ <cd:command name="totalnumberofpages" value="numartotalpagini"/>
+ <cd:command name="numberofsubpages" value="numberofsubpages"/>
+ <cd:command name="useXMLfilter" value="useXMLfilter"/>
+ <cd:command name="definecolumnset" value="definecolumnset"/>
+ <cd:command name="setupcolumnset" value="setupcolumnset"/>
+ <cd:command name="startcolumnset" value="startcolumnset"/>
+ <cd:command name="stopcolumnset" value="stopcolumnset"/>
+ <cd:command name="setupcolumnsetlines" value="setupcolumnsetlines"/>
+ <cd:command name="setupcolumnsetstart" value="setupcolumnsetstart"/>
+ <cd:command name="startcolumnmakeup" value="startcolumnmakeup"/>
+ <cd:command name="stopcolumnmakeup" value="stopcolumnmakeup"/>
+ <cd:command name="usetypescript" value="usetypescript"/>
+ </cd:commands>
+
+ <cd:commands>
+ <cd:command name="startdocument" value="startdocument"/>
+ <cd:command name="stopdocument" value="stopdocument"/>
+ <cd:command name="startoverzicht" value="startoverview"/>
+ <cd:command name="stopoverzicht" value="stopoverview"/>
+ <cd:command name="label" value="eticheta"/>
+ <cd:command name="labels" value="etichete"/>
+ <cd:command name="domicile" value="domiciliu"/>
+ </cd:commands>
+
+</cd:interface>
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ba.hyp b/Master/texmf-dist/tex/context/patterns/lang-ba.hyp
new file mode 100644
index 00000000000..b3e1410467f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ba.hyp
@@ -0,0 +1,36 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: bahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ba'>
+% <sourcefile>bahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Basque language</title>
+% <copyright>
+% <year>1991</year>
+% <owner>Julio Sanchez (jsanchez@gmv.es)</owner>
+% <comment>These patterns have been derived from "On Word Division in Spanish"
+% Jos'e A. Ma~nas</comment>
+% </copyright>
+% <copyright>
+% <year>1997</year>
+% <owner>Juan M. Aguirregabiria (wtpagagj@lg.ehu.es)</owner>
+% <comment>Adaption to TeX based on shyphen.sh</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ba.pat b/Master/texmf-dist/tex/context/patterns/lang-ba.pat
new file mode 100644
index 00000000000..79e69b52bb5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ba.pat
@@ -0,0 +1,224 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: bahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ba'>
+% <sourcefile>bahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Basque language</title>
+% <copyright>
+% <year>1991</year>
+% <owner>Julio Sanchez (jsanchez@gmv.es)</owner>
+% <comment>These patterns have been derived from "On Word Division in Spanish"
+% Jos'e A. Ma~nas</comment>
+% </copyright>
+% <copyright>
+% <year>1997</year>
+% <owner>Juan M. Aguirregabiria (wtpagagj@lg.ehu.es)</owner>
+% <comment>Adaption to TeX based on shyphen.sh</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+1ba
+1be
+1bo
+1bi
+1bu
+1ca
+1ce
+1co
+1ci
+1cu
+1da
+1de
+1do
+1di
+1du
+1fa
+1fe
+1fo
+1fi
+1fu
+1ga
+1ge
+1go
+1gi
+1gu
+1ja
+1je
+1jo
+1ji
+1ju
+1ka
+1ke
+1ko
+1ki
+1ku
+1la
+1le
+1lo
+1li
+1lu
+1ma
+1me
+1mo
+1mi
+1mu
+1na
+1ne
+1no
+1ni
+1nu
+1pa
+1pe
+1po
+1pi
+1pu
+1qa
+1qe
+1qo
+1qi
+1qu
+1ra
+1re
+1ro
+1ri
+1ru
+1sa
+1se
+1so
+1si
+1su
+1ta
+1te
+1to
+1ti
+1tu
+1va
+1ve
+1vo
+1vi
+1vu
+1wa
+1we
+1wo
+1wi
+1wu
+1xa
+1xe
+1xo
+1xi
+1xu
+1ya
+1ye
+1yo
+1yi
+1yu
+1za
+1ze
+1zo
+1zi
+1zu
+1l2la
+1l2le
+1l2lo
+1l2li
+1l2lu
+1r2ra
+1r2re
+1r2ro
+1r2ri
+1r2ru
+1t2sa
+1t2se
+1t2so
+1t2si
+1t2su
+1t2xa
+1t2xe
+1t2xo
+1t2xi
+1t2xu
+1t2za
+1t2ze
+1t2zo
+1t2zi
+1t2zu
+1b2la
+1b2le
+1b2lo
+1b2li
+1b2lu
+1b2ra
+1b2re
+1b2ro
+1b2ri
+1b2ru
+1d2ra
+1d2re
+1d2ro
+1d2ri
+1d2ru
+1f2la
+1f2le
+1f2lo
+1f2li
+1f2lu
+1f2ra
+1f2re
+1f2ro
+1f2ri
+1f2ru
+1g2la
+1g2le
+1g2lo
+1g2li
+1g2lu
+1g2ra
+1g2re
+1g2ro
+1g2ri
+1g2ru
+1k2la
+1k2le
+1k2lo
+1k2li
+1k2lu
+1k2ra
+1k2re
+1k2ro
+1k2ri
+1k2ru
+1p2la
+1p2le
+1p2lo
+1p2li
+1p2lu
+1p2ra
+1p2re
+1p2ro
+1p2ri
+1p2ru
+1t2ra
+1t2re
+1t2ro
+1t2ri
+1t2ru
+su2b2r
+su2b2l
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ca.hyp b/Master/texmf-dist/tex/context/patterns/lang-ca.hyp
new file mode 100644
index 00000000000..269c4245055
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ca.hyp
@@ -0,0 +1,61 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: cahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ca'>
+% <sourcefile>cahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Catalan language</title>
+% <remarks>Version 1.11</remarks>
+% <copyright>
+% <year>1991-1995 </year>
+% <owner>Gon\c{c}al Badenes,Francina Turon</owner>
+% </copyright>
+% <copyright>
+% <year>1991-2003</year>
+% <owner>Gon\c{c}al Badenes</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+cu-rie
+cu-ries
+gei-sha
+gei-shes
+goua-che
+goua-ches
+hip-py
+hip-pies
+hob-by
+hob-bies
+jeep
+jeeps
+joule
+joules
+klee-nex
+klee-nexs
+lar-ghet-ti
+lar-ghet-to
+lied
+lieder
+nos-al-tres
+ro-yal-ties
+ro-yal-ty
+vos-al-tres
+whis-ky
+whis-kies
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ca.pat b/Master/texmf-dist/tex/context/patterns/lang-ca.pat
new file mode 100644
index 00000000000..cedc3cf3c2d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ca.pat
@@ -0,0 +1,904 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: cahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ca'>
+% <sourcefile>cahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Catalan language</title>
+% <remarks>Version 1.11</remarks>
+% <copyright>
+% <year>1991-1995 </year>
+% <owner>Gon\c{c}al Badenes,Francina Turon</owner>
+% </copyright>
+% <copyright>
+% <year>1991-2003</year>
+% <owner>Gon\c{c}al Badenes</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+1ba
+1be
+1bi
+1bo
+1bu
+1ca
+1ce
+1ci
+1co
+1cu
+1da
+1de
+1di
+1do
+3du
+1fa
+1fe
+1fi
+1fo
+1fu
+1ga
+1ge
+1gi
+1go
+1gu
+1ha
+1he
+1hi
+1ho
+1hu
+1ja
+1je
+1ji
+1jo
+1ju
+1la
+1le
+1li
+1lo
+1lu
+1ma
+1me
+1mi
+1mo
+1mu
+1na
+1ne
+3ni
+1no
+1nu
+1pa
+3pe
+3pi
+3po
+1pu
+1qu
+1ra
+1re
+1ri
+1ro
+1ru
+1sa
+1se
+1si
+1so
+1su
+1ta
+1te
+1ti
+1to
+1tu
+1va
+1ve
+1vi
+1vo
+1vu
+1xa
+1xe
+1xi
+1xo
+1xu
+1za
+1ze
+1zi
+1zo
+1zu
+1b[eacute]
+1b[iacute]
+1b[oacute]
+1b[uacute]
+1b[agrave]
+1b[egrave]
+1b[ograve]
+1c[eacute]
+1c[iacute]
+1c[oacute]
+1c[uacute]
+1c[agrave]
+1c[egrave]
+1c[ograve]
+1[ccedilla]o
+1[ccedilla]a
+1[ccedilla]u
+1[ccedilla][oacute]
+1[ccedilla][uacute]
+1[ccedilla][agrave]
+1[ccedilla][ograve]
+1d[eacute]
+1d[iacute]
+1d[oacute]
+1d[uacute]
+1d[agrave]
+1d[egrave]
+1d[ograve]
+1f[eacute]
+1f[iacute]
+1f[oacute]
+1f[uacute]
+1f[agrave]
+1f[egrave]
+1f[ograve]
+1g[eacute]
+1g[iacute]
+1g[oacute]
+1g[uacute]
+1g[agrave]
+1g[egrave]
+1g[ograve]
+1g[udiaeresis]
+1h[eacute]
+1h[iacute]
+1h[oacute]
+1h[uacute]
+1h[agrave]
+1h[egrave]
+1h[ograve]
+1j[eacute]
+1j[iacute]
+1j[oacute]
+1j[uacute]
+1j[agrave]
+1j[egrave]
+1j[ograve]
+1l[eacute]
+1l[iacute]
+1l[oacute]
+1l[uacute]
+1l[agrave]
+1l[egrave]
+1l[ograve]
+1m[eacute]
+1m[iacute]
+1m[oacute]
+1m[uacute]
+1m[agrave]
+1m[egrave]
+1m[ograve]
+1n[eacute]
+1n[iacute]
+1n[oacute]
+1n[uacute]
+1n[agrave]
+1n[egrave]
+1n[ograve]
+1p[eacute]
+1p[iacute]
+1p[oacute]
+1p[uacute]
+1p[agrave]
+1p[egrave]
+1p[ograve]
+1q[udiaeresis]
+1r[eacute]
+1r[iacute]
+1r[oacute]
+1r[uacute]
+1r[agrave]
+1r[egrave]
+1r[ograve]
+1s[eacute]
+1s[iacute]
+1s[oacute]
+1s[uacute]
+1s[agrave]
+1s[egrave]
+1s[ograve]
+1t[eacute]
+1t[iacute]
+1t[oacute]
+1t[uacute]
+1t[agrave]
+1t[egrave]
+1t[ograve]
+1v[eacute]
+1v[iacute]
+1v[oacute]
+1v[uacute]
+1v[agrave]
+1v[egrave]
+1v[ograve]
+1x[eacute]
+1x[iacute]
+1x[oacute]
+1x[uacute]
+1x[agrave]
+1x[egrave]
+1x[ograve]
+1z[eacute]
+1z[iacute]
+1z[oacute]
+1z[uacute]
+1z[agrave]
+1z[egrave]
+1z[ograve]
+3l2la
+1l2le
+1l2li
+3l2lo
+1l2lu
+1b2la
+1b2le
+1b2li
+1b2lo
+1b2lu
+1b2ra
+1b2re
+1b2ri
+1b2ro
+1b2ru
+1c2la
+1c2le
+1c2li
+1c2lo
+1c2lu
+1c2ra
+1c2re
+1c2ri
+1c2ro
+1c2ru
+1d2ra
+1d2re
+1d2ri
+1d2ro
+1d2ru
+1f2la
+1f2le
+1f2li
+1f2lo
+1f2lu
+1f2ra
+1f2re
+1f2ri
+1f2ro
+1f2ru
+1g2la
+1g2le
+1g2li
+1g2lo
+1g2lu
+1g2ra
+1g2re
+1g2ri
+1g2ro
+1g2ru
+1p2la
+1p2le
+1p2li
+1p2lo
+1p2lu
+1p2ra
+1p2re
+1p2ri
+1p2ro
+1p2ru
+1t2ra
+1t2re
+1t2ri
+1t2ro
+1t2ru
+1n2ya
+1n2ye
+1n2yi
+1n2yo
+1n2yu
+1l2l[eacute]
+1l2l[iacute]
+1l2l[oacute]
+1l2l[uacute]
+1l2l[agrave]
+1l2l[egrave]
+1l2l[ograve]
+1b2l[eacute]
+1b2l[iacute]
+1b2l[oacute]
+1b2l[uacute]
+1b2l[agrave]
+1b2l[egrave]
+1b2l[ograve]
+1b2r[eacute]
+1b2r[iacute]
+1b2r[oacute]
+1b2r[uacute]
+1b2r[agrave]
+1b2r[egrave]
+1b2r[ograve]
+1c2l[eacute]
+1c2l[iacute]
+1c2l[oacute]
+1c2l[uacute]
+1c2l[agrave]
+1c2l[egrave]
+1c2l[ograve]
+1c2r[eacute]
+1c2r[iacute]
+1c2r[oacute]
+1c2r[uacute]
+1c2r[agrave]
+1c2r[egrave]
+1c2r[ograve]
+1d2r[eacute]
+1d2r[iacute]
+1d2r[oacute]
+1d2r[uacute]
+1d2r[agrave]
+1d2r[egrave]
+1d2r[ograve]
+1f2l[eacute]
+1f2l[iacute]
+1f2l[oacute]
+1f2l[uacute]
+1f2l[agrave]
+1f2l[egrave]
+1f2l[ograve]
+1f2r[eacute]
+1f2r[iacute]
+1f2r[oacute]
+1f2r[uacute]
+1f2r[agrave]
+1f2r[egrave]
+1f2r[ograve]
+1g2l[eacute]
+1g2l[iacute]
+1g2l[oacute]
+1g2l[uacute]
+1g2l[agrave]
+1g2l[egrave]
+1g2l[ograve]
+1g2r[eacute]
+1g2r[iacute]
+1g2r[oacute]
+1g2r[uacute]
+1g2r[agrave]
+1g2r[egrave]
+1g2r[ograve]
+1p2l[eacute]
+1p2l[iacute]
+1p2l[oacute]
+1p2l[uacute]
+1p2l[agrave]
+1p2l[egrave]
+1p2l[ograve]
+1p2r[eacute]
+1p2r[iacute]
+1p2r[oacute]
+1p2r[uacute]
+1p2r[agrave]
+1p2r[egrave]
+1p2r[ograve]
+1t2r[eacute]
+1t2r[iacute]
+1t2r[oacute]
+1t2r[uacute]
+1t2r[agrave]
+1t2r[egrave]
+1t2r[ograve]
+1n2y[eacute]
+1n2y[iacute]
+1n2y[oacute]
+1n2y[uacute]
+1n2y[agrave]
+1n2y[egrave]
+1n2y[ograve]
+a1a
+a1e
+a1o
+e1a
+e1e
+e1o
+i1a
+i1e
+i1o
+o1a
+o1e
+o1o
+u1a
+u1e
+u1o
+a1[eacute]
+a1[iacute]
+a1[oacute]
+a1[uacute]
+a1[agrave]
+a1[egrave]
+a1[ograve]
+a1[idiaeresis]
+a1[udiaeresis]
+e1[eacute]
+e1[iacute]
+e1[oacute]
+e1[uacute]
+e1[agrave]
+e1[egrave]
+e1[ograve]
+e1[idiaeresis]
+e1[udiaeresis]
+i1[eacute]
+i1[iacute]
+i1[oacute]
+i1[uacute]
+i1[agrave]
+i1[egrave]
+i1[ograve]
+i1[idiaeresis]
+i1[udiaeresis]
+o1[eacute]
+o1[iacute]
+o1[oacute]
+o1[uacute]
+o1[agrave]
+o1[egrave]
+o1[ograve]
+o1[idiaeresis]
+o1[udiaeresis]
+u1[eacute]
+u1[iacute]
+u1[oacute]
+u1[uacute]
+u1[agrave]
+u1[egrave]
+u1[ograve]
+u1[idiaeresis]
+u1[udiaeresis]
+[eacute]1a
+[eacute]1e
+[eacute]1o
+[eacute]1[idiaeresis]
+[eacute]1[udiaeresis]
+[iacute]1a
+[iacute]1e
+[iacute]1o
+[iacute]1[idiaeresis]
+[iacute]1[udiaeresis]
+[oacute]1a
+[oacute]1e
+[oacute]1o
+[oacute]1[idiaeresis]
+[oacute]1[udiaeresis]
+[uacute]1a
+[uacute]1e
+[uacute]1o
+[uacute]1[idiaeresis]
+[uacute]1[udiaeresis]
+[agrave]1a
+[agrave]1e
+[agrave]1o
+[agrave]1[idiaeresis]
+[agrave]1[udiaeresis]
+[egrave]1a
+[egrave]1e
+[egrave]1o
+[egrave]1[idiaeresis]
+[egrave]1[udiaeresis]
+[ograve]1a
+[ograve]1e
+[ograve]1o
+[ograve]1[idiaeresis]
+[ograve]1[udiaeresis]
+[idiaeresis]1a
+[idiaeresis]1e
+[idiaeresis]1o
+[idiaeresis]1[eacute]
+[idiaeresis]1[iacute]
+[idiaeresis]1[oacute]
+[idiaeresis]1[uacute]
+[idiaeresis]1[agrave]
+[idiaeresis]1[egrave]
+[idiaeresis]1[ograve]
+[idiaeresis]1i
+[udiaeresis]1a
+[udiaeresis]1e
+[udiaeresis]1o
+[udiaeresis]1[eacute]
+[udiaeresis]1[iacute]
+[udiaeresis]1[oacute]
+[udiaeresis]1[uacute]
+[udiaeresis]1[agrave]
+[udiaeresis]1[egrave]
+[udiaeresis]1[ograve]
+a1i2a
+a1i2e
+a1i2o
+a1i2u
+a1u2a
+a1u2e
+a1u2i
+a1u2o
+a1u2u
+e1i2a
+e1i2e
+e1i2o
+e1i2u
+e1u2a
+e1u2e
+e1u2i
+e1u2o
+e1u2u
+i1i2a
+i1i2e
+i1i2o
+i1i2u
+i1u2a
+i1u2e
+i1u2i
+i1u2o
+i1u2u
+o1i2a
+o1i2e
+o1i2o
+o1i2u
+o1u2a
+o1u2e
+o1u2o
+o1u2i
+o1u2u
+u1i2a
+u1i2e
+u1i2o
+u1i2u
+u1u2a
+u1u2e
+u1u2i
+u1u2o
+u1u2u
+a1i2[eacute]
+a1i2[iacute]
+a1i2[oacute]
+a1i2[uacute]
+a1i2[agrave]
+a1i2[egrave]
+a1i2[ograve]
+a1u2[eacute]
+a1u2[iacute]
+a1u2[oacute]
+a1u2[uacute]
+a1u2[agrave]
+a1u2[egrave]
+a1u2[ograve]
+e1i2[eacute]
+e1i2[iacute]
+e1i2[oacute]
+e1i2[uacute]
+e1i2[agrave]
+e1i2[egrave]
+e1i2[ograve]
+e1u2[eacute]
+e1u2[iacute]
+e1u2[oacute]
+e1u2[uacute]
+e1u2[agrave]
+e1u2[egrave]
+e1u2[ograve]
+i1i2[eacute]
+i1i2[iacute]
+i1i2[oacute]
+i1i2[uacute]
+i1i2[agrave]
+i1i2[egrave]
+i1i2[ograve]
+i1u2[eacute]
+i1u2[iacute]
+i1u2[oacute]
+i1u2[uacute]
+i1u2[agrave]
+i1u2[egrave]
+i1u2[ograve]
+o1i2[eacute]
+o1i2[iacute]
+o1i2[oacute]
+o1i2[uacute]
+o1i2[agrave]
+o1i2[egrave]
+o1i2[ograve]
+o1u2[eacute]
+o1u2[iacute]
+o1u2[oacute]
+o1u2[uacute]
+o1u2[agrave]
+o1u2[egrave]
+o1u2[ograve]
+u1i2[eacute]
+u1i2[iacute]
+u1i2[oacute]
+u1i2[uacute]
+u1i2[agrave]
+u1i2[egrave]
+u1i2[ograve]
+u1u2[eacute]
+u1u2[iacute]
+u1u2[oacute]
+u1u2[uacute]
+u1u2[agrave]
+u1u2[egrave]
+u1u2[ograve]
+[eacute]1i2a
+[eacute]1i2e
+[eacute]1i2o
+[eacute]1i2u
+[eacute]1u2a
+[eacute]1u2e
+[eacute]1u2o
+[eacute]1u2i
+[eacute]1u2u
+[iacute]1i2a
+[iacute]1i2e
+[iacute]1i2o
+[iacute]1i2u
+[iacute]1u2a
+[iacute]1u2e
+[iacute]1u2o
+[iacute]1u2i
+[iacute]1u2u
+[oacute]1i2a
+[oacute]1i2e
+[oacute]1i2o
+[oacute]1i2u
+[oacute]1u2a
+[oacute]1u2e
+[oacute]1u2o
+[oacute]1u2i
+[oacute]1u2u
+[uacute]1i2a
+[uacute]1i2e
+[uacute]1i2o
+[uacute]1i2u
+[uacute]1u2a
+[uacute]1u2e
+[uacute]1u2o
+[uacute]1u2i
+[uacute]1u2u
+[agrave]1i2a
+[agrave]1i2e
+[agrave]1i2o
+[agrave]1i2u
+[agrave]1u2a
+[agrave]1u2e
+[agrave]1u2o
+[agrave]1u2i
+[agrave]1u2u
+[egrave]1i2a
+[egrave]1i2e
+[egrave]1i2o
+[egrave]1i2u
+[egrave]1u2a
+[egrave]1u2e
+[egrave]1u2o
+[egrave]1u2i
+[egrave]1u2u
+[ograve]1i2a
+[ograve]1i2e
+[ograve]1i2o
+[ograve]1i2u
+[ograve]1u2a
+[ograve]1u2e
+[ograve]1u2o
+[ograve]1u2i
+[ograve]1u2u
+[idiaeresis]1i2a
+[idiaeresis]1i2e
+[idiaeresis]1i2o
+[idiaeresis]1i2[eacute]
+[idiaeresis]1i2[iacute]
+[idiaeresis]1i2[oacute]
+[idiaeresis]1i2[uacute]
+[idiaeresis]1i2[agrave]
+[idiaeresis]1i2[egrave]
+[idiaeresis]1i2[ograve]
+[idiaeresis]1i2u
+[idiaeresis]1u2a
+[idiaeresis]1u2e
+[idiaeresis]1u2o
+[idiaeresis]1u2[eacute]
+[idiaeresis]1u2[iacute]
+[idiaeresis]1u2[oacute]
+[idiaeresis]1u2[uacute]
+[idiaeresis]1u2[agrave]
+[idiaeresis]1u2[egrave]
+[idiaeresis]1u2[ograve]
+[idiaeresis]1u2i
+[idiaeresis]1u2u
+[udiaeresis]1i2a
+[udiaeresis]1i2e
+[udiaeresis]1i2o
+[udiaeresis]1i2[eacute]
+[udiaeresis]1i2[iacute]
+[udiaeresis]1i2[oacute]
+[udiaeresis]1i2[uacute]
+[udiaeresis]1i2[agrave]
+[udiaeresis]1i2[egrave]
+[udiaeresis]1i2[ograve]
+[udiaeresis]1i2u
+[udiaeresis]1u2a
+[udiaeresis]1u2e
+[udiaeresis]1u2o
+[udiaeresis]1u2[eacute]
+[udiaeresis]1u2[iacute]
+[udiaeresis]1u2[oacute]
+[udiaeresis]1u2[uacute]
+[udiaeresis]1u2[agrave]
+[udiaeresis]1u2[egrave]
+[udiaeresis]1u2[ograve]
+[udiaeresis]1u2i
+[udiaeresis]1u2u
+.hi2a
+.hi2e
+.hi2o
+.hi2u
+.hu2a
+.hu2e
+.hu2i
+.hu2o
+.i2[egrave]
+.i2[ograve]
+.u2[egrave]
+.u2[ograve]
+.hi2[eacute]
+.hi2[oacute]
+.hi2[uacute]
+.hi2[agrave]
+.hi2[egrave]
+.hi2[ograve]
+.hu2[eacute]
+.hu2[iacute]
+.hu2[oacute]
+.hu2[agrave]
+.hu2[egrave]
+.hu2[ograve]
+gu2a
+gu2e
+gu2i
+gu2o
+qu2a
+qu2e
+qu2i
+qu2o
+gu2[eacute]
+gu2[iacute]
+gu2[oacute]
+gu2[agrave]
+gu2[egrave]
+gu2[ograve]
+qu2[eacute]
+qu2[iacute]
+qu2[oacute]
+qu2[agrave]
+qu2[egrave]
+qu2[ograve]
+g[udiaeresis]2e
+g[udiaeresis]2[eacute]
+g[udiaeresis]2[iacute]
+g[udiaeresis]2[egrave]
+g[udiaeresis]2i
+q[udiaeresis]2e
+q[udiaeresis]2[eacute]
+q[udiaeresis]2[iacute]
+q[udiaeresis]2[egrave]
+q[udiaeresis]2i
+a1isme.
+e1isme.
+i1isme.
+o1isme.
+u1isme.
+a1ista.
+e1ista.
+i1ista.
+o1ista.
+u1ista.
+a1um.
+e1um.
+i1um.
+o1um.
+u1um.
+.antihi2
+.be2n
+.be2s
+.bi2s
+.ca2p
+.ce2l
+.cla2r
+.co2ll
+.co2n
+.co2r
+.de2s
+.di2s
+.en3a
+.hipe2r
+.hiperm2n
+.in3ac
+.in3ad
+.in3ap
+.in3es
+.in3o
+.inte2r
+.ma2l
+.mal1t2hus
+.pa2n
+.pe2r
+.pe3ri
+.pos2t
+.psa2l
+.rebe2s
+.re2d
+.su2b
+.sub3o
+.subde2s
+.supe2r
+.tran2s
+g2no
+p2si
+p2se
+p2neu
+g2n[ograve]
+p2s[iacute]
+.ch2
+.th2
+ein1s2tein
+ru1t2herford
+ni2etz1sc2he
+3exp
+3nef
+3nei
+3pr
+3ser
+a3ne
+a3ri
+bi3se
+des3ag
+des3ar
+des3av
+des3enc
+e3ism
+e3le
+e3rio
+e3ris
+es3aco
+es3af
+es3ap
+es3arr
+es3as
+es3int
+ig3n
+in3ex
+n3si
+o3ro
+qui3e
+s3emp
+s3esp
+sub3a
+ui3et
+o3gn[ograve]
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-cy.hyp b/Master/texmf-dist/tex/context/patterns/lang-cy.hyp
new file mode 100644
index 00000000000..c9da02a1691
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-cy.hyp
@@ -0,0 +1,31 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: cyhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='cy'>
+% <sourcefile>cyhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Welsh Language</title>
+% <remarks>v3,GNU General Public License</remarks>
+% <copyright>
+% <year>1996</year>
+% <owner>Yannis Haralambous</owner>
+% <comment>Inputs cathyph.tex, patterns in EC/DC encoding</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-cy.pat b/Master/texmf-dist/tex/context/patterns/lang-cy.pat
new file mode 100644
index 00000000000..b7e347c3657
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-cy.pat
@@ -0,0 +1,6760 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: cyhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='cy'>
+% <sourcefile>cyhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Welsh Language</title>
+% <remarks>v3,GNU General Public License</remarks>
+% <copyright>
+% <year>1996</year>
+% <owner>Yannis Haralambous</owner>
+% <comment>Inputs cathyph.tex, patterns in EC/DC encoding</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.ac4t
+.ad3ae
+.add5as
+.add3o
+.ad4eg
+.ad4eny
+.ad4fer
+.adl4
+.ad3r
+.ae3a
+.af3a
+.af4an
+.aff3
+.afl4u
+.af5lw
+.ag3w
+.am4le
+.am3s
+.an5ad
+.an4g3
+.anghen5a
+.anghen4r
+.an2o
+.anrhyd4
+.ansodd4e
+.an5te
+.an3w4
+.an5we
+.ar4bo
+.ar4cha
+.ar5ddel
+.ared4
+.ar4en
+.arff4
+.ar4ge
+.ar2i
+.ar3we
+.ar4wed
+.as3g
+.as3t
+.aw4e
+.ban4as
+.ban4ed
+.bara5t
+.bel3y
+.be3t4a
+.bl2
+.bl4e
+.br2
+.br4e
+.call5
+.ce4n
+.ch2
+.ch4e
+.ch4l
+.ch4o
+.chollad4
+.chr2
+.chwyn5
+.cl2
+.cr2
+.cy5we
+.dad3r
+.dd2
+.ddefn5
+.dd4i
+.ddi5an
+.ddi5dd
+.ddi3e
+.ddill5adas
+.ddill5ade
+.ddill5ado
+.ddill5adw
+.ddin4
+.ddiw5eddas
+.ddiw5edde
+.ddiw5eddo
+.ddiw5eddw
+.ddwl3
+.ddy5fala
+.ddy5fale
+.ddy5falo
+.ddy5falw
+.ddylad4
+.deallad4
+.defn3
+.der4w
+.deth5
+.di5an
+.di5dd
+.di3e
+.di3gy
+.dill5adas
+.dill5ade
+.dill5ado
+.dill5adw
+.din4
+.diw5eddas
+.diw5edde
+.diw5eddo
+.diw5eddw
+.dr4e
+.dwl3
+.dy5fala
+.dy5fale
+.dy5falo
+.dy5falw
+.dy5fo
+.dylad4
+.dyrchafad4
+.eb2
+.eb3r
+.eb4rw
+.ec2
+.ed2
+.edl4
+.edr4
+.eg2
+.egn3
+.el4or
+.els4
+.en3as
+.eny5na
+.er2
+.erfy5na
+.ern4
+.ewy5na
+.fadd3
+.falch5
+.fan3a
+.farn4ais.
+.fasg4
+.fas5ge
+.ff2
+.ff4a
+.ffer4a
+.ffe5ras
+.ffer4e
+.ff4o
+.ffor5t
+.ff4y
+.ffydd5
+.ffynad4
+.ffy5nas
+.fign5
+.fis5g
+.fon4edi
+.fordd4
+.for4o
+.for4w
+.for4y
+.fr4i
+.fryn4d
+.fydd5
+.fyn5as
+.fyw3
+.gal3e
+.gal5o
+.gan3l
+.gan5olas
+.gan5ole
+.gen5as
+.ger5b
+.geu5d
+.ghwy5na
+.gl2
+.glaf5y
+.gl4e
+.gleid4
+.gl4y
+.glyn3
+.glywad4
+.god3y
+.gof3a
+.goffad4wy
+.gollad4
+.gr2
+.grynho4em
+.grynho4wn
+.gwedd4er
+.gyd3
+.gyf5al
+.gyf5arc
+.gyfer5byna
+.gyfer5byni
+.gyfer5bynn
+.gyffel5
+.gym3o
+.gyn3a
+.gyn5e
+.gynef5
+.gyth5ru
+.gy5we
+.hac4
+.hadl4
+.haf4a
+.haf3l4
+.hagr3
+.ham4le
+.han5as
+.han4g5
+.hanghen5a
+.han5t
+.han5w4
+.har5ddel
+.hared4
+.har4en
+.har3n
+.harn4a
+.har3w
+.has3g
+.haw4
+.heb2
+.hec2
+.hed2
+.hedl4
+.he4o
+.herfy5na
+.her4w
+.heur5
+.hof4r3
+.hol4y
+.holyn5
+.hw2
+.hwn4
+.hwyl5u
+.hwyn5a
+.hwyr5
+.hwyth4au
+.hyd4
+.hydr4
+.hy3ff
+.hyf4od
+.hy5fry
+.hy3g
+.hyl4
+.hym3e
+.hym4u
+.hym4y
+.hymy5na
+.hymysg4
+.hyn2
+.hy3no
+.hy3rw
+.iach4
+.iac5has
+.iac5he
+.iac5hw
+.ir3
+.ladr3
+.ledr4e
+.le3na
+.le3o
+.lest4
+.lin3
+.ll2
+.llaw4e
+.lle5na
+.llo5nas
+.llon4e
+.llythr5
+.lo3na
+.lon4e
+.ludd3
+.lygr3
+.lyn3a
+.lythr5
+.man4ed
+.mant4a
+.mar4f
+.mign5
+.mis5g
+.mol3
+.mon4edi
+.mwyth5a
+.mwyth5w
+.myn5as
+.neilltu4ad
+.neis4i
+.nen3a
+.ner4w
+.ng2
+.ngen5as
+.nghyt5u
+.nghy5wa
+.ngl4
+.ng4w
+.ngy4
+.ni5an
+.ni3e
+.ni5fei
+.nig2
+.ni5ga
+.ni3ge
+.ni3gw
+.ni3gy
+.ni5re
+.ni3wa
+.niwl5
+.no4e
+.no4w
+.nwl3
+.nwyn3
+.oddefad4
+.od4l
+.of3a
+.of4o
+.of4u
+.og2
+.og4l4
+.ol2
+.oll3
+.ol5yga
+.ol5yge
+.olyn3
+.or1
+.orddad4
+.pl4a
+.pl4e
+.rad3r
+.rag3l
+.ra3na
+.ran5d4
+.rew3
+.rhi5a
+.ria4
+.rin4t
+.rug4l5
+.ry3n4a
+.ryn4e
+.sas4
+.ses4
+.st2
+.sych3
+.sych5e
+.talad4
+.tan4e
+.th2
+.thag5
+.th4i
+.tho5e
+.th4r4
+.thrad4
+.th4u
+.torad4
+.tr2
+.tr4a
+.trad4
+.tr4o
+.tro4en
+.uch2
+.wa5r4as
+.war4es
+.wedd4er
+.weithiad4
+.welad4
+.wen3a
+.west4
+.wn4io
+.wobr3
+.wybr4
+.wy3by
+.wy4r
+.wyw3
+.ydd4
+.yd4l
+.yf4ar
+.ym4adw
+.ym3e
+.ym4yl
+.ymysg4
+.yn4d
+.ys4b
+.ysg4
+.ys4i
+.ys4n
+.ys4t
+a1a
+a3ar2
+2ab
+ab3a
+ab4ad
+ab3ed
+ab3el
+ab5ine
+abl1
+a2b1o
+ab4or
+abr3
+a1bu
+a4bu.
+a4bum
+2ac
+ac1a
+ac5ade
+acan3
+ac4aol
+ac3ei
+ace3ne
+ac5enni.
+ach1
+a4ch.
+ach5ac
+ach5aw
+a5chef
+ach3o
+ach3r
+ach5us
+a3chwa
+achwyn5
+achy4
+aci5mw
+acl3
+ac3o
+ac3ta
+ac3te
+4ad3ac
+ad3ad
+ad5afa
+ad3arf
+adar4g
+a4dd.
+add3ad
+ad3dal
+ad3dd
+add3eu
+add5ew
+add3f
+add3i
+add2o
+ad4du
+addun4
+add3yc
+add3ys
+2ad1e
+ad3eg
+ad3el
+ad4el.
+ad4ena
+ad4ene
+ad4eni
+ad4eno
+ad4enw
+ad3i
+2adl
+ad3len
+ad5lys
+ad2na
+adnabydd4e
+adnabydded4
+ad2no
+2ado
+ad3oc
+ad3od
+ad3of
+ad3on
+4adr.
+ad4red
+ad3ri
+adr4od
+adr3on
+ad4ru
+4adunia
+ad5uniad
+ad5uro
+adwel4ed.
+ad3wi
+ad5wr.
+3ad3wys
+ad5wyt
+ad1y
+ady4n
+ad4yrn
+2aea
+ae4ada
+ae5an.
+aedd3
+ae3i
+ael1
+ael4edda
+aen3
+ae3oc
+ae3og
+aer1
+aerw4
+aer5we
+aer5wy
+aes3
+aest4
+aeth5a
+aethr4
+ae1w
+ae5wyd
+af3adw
+4af5aid
+af4al
+af3an
+afan5e
+af4ann
+4afar3
+af5arn
+af4at
+4af3au
+2af3e
+2aff
+aff3a
+aff3ed
+aff3ei
+aff3i
+affl3
+aff3w
+aff3y
+aff4yr
+af3i
+afl3a
+afl5edi
+af4l3u
+2afn1
+af3odd
+4afol
+af3ont
+2afr
+af3ra
+af3res
+af5rif
+af4ru
+af5rwy
+af1u
+2af1w
+af1y
+2a2g
+ag1a
+ag3ad
+ag3al
+age3na
+age5ne
+ag3law
+agl3o
+ag3lu
+agl3w
+ag3n
+ag3od
+ag3of
+ag4ori
+ag1r
+ag3ri
+ag3ry
+ag1u
+ag2w
+ag3wa
+ag3wel
+ag3wn
+ag3wr
+ag5yma
+agy4w
+a1h2
+ahan3
+ahanad4
+ahedr4
+a2i
+2aig
+2ail1
+ailen3
+2ain
+4ainc
+2ait
+2al
+al5abr
+al3ad
+4al3ae
+alaf3
+4alaid
+al3an
+al5arc
+al5aso
+al3ce
+alch3w
+al5cwl
+al4di
+al1e
+al5edau
+al3ei
+al3en
+al4ena
+al4es.
+al2fo
+al3fy
+al3i
+al4is
+all3a
+all3e
+all3i
+all3oc
+all3w
+all3y
+3aln
+al3oc
+al3od
+al4ogia
+alo3na
+alo3n4e
+al3ono
+al3or
+alp4e
+al1u
+4alwc
+alw3e
+4alwr
+al5wst
+al3wy
+4alwy.
+al1y
+2am
+ambl3
+am3d
+amdan5
+amel5o
+am3er
+amgym5r
+amhen4
+amhobl4
+amhryd4
+am5las
+am4led
+am4lf
+am4lg
+am5nif
+am4of
+am2or
+amor5w
+am4pa
+a4mwa
+am5wed
+am5wri
+am5wyd
+am3wyt
+amyn3
+a2n
+2an.
+an1a
+a4nab
+anadl3
+a4nae
+a4naf
+an4afi
+a4nai
+an2as
+an3at4
+a4nau
+a4naw
+4anco
+an2da
+an5dda
+an4ddy
+an2de
+an2do
+an1e
+an2ed
+an3ed.
+an5eda
+an5edd.
+an5edo
+a4n3eg
+a4nel
+an3eli
+an5er.
+an5ewi
+2anf
+an3fy
+2ang1
+ang3ad
+an4gd
+ang3e
+an4gf
+anghaff4
+anghelf4
+anghredad4
+anghrist4
+anghy4
+anghyd4
+anghydna4
+anghyf4
+anghyfar4
+anghyff4
+anghyfiawn4
+anghym4
+anghyn4e
+angl4
+ang5or
+an3if
+an3igi
+4annau
+an3oc
+an3od.
+an3odd
+an5og.
+an5og4ae
+4anol
+an3ol.
+an3om
+an3ont
+an3or
+1anr
+an5sic
+ans4ie
+ans4iw
+an5siwn
+an4ta
+ant5ac
+an5the
+ant3rw
+an1w
+an3wes
+4anwl
+anwy4
+an3wyd
+anwyn3
+an1y
+any4l3
+a1oe
+ap3a
+ap4cy
+ap5elw
+ap3l
+apl4a
+ap5ost
+ap5rwn
+ap5ryn
+ap5wll
+2ar
+ar3ab
+aradr3
+arae3
+ar3af.
+ara5ff
+ar3an
+ar4an.
+aran3a
+aran3e
+arat4
+ar3aw
+ar4ber
+arc3as
+arch5en
+ar5clo
+ar2da
+ar2de
+ard5es
+ar4dr
+ardyn3
+ar1e
+ar2eb
+ar2ei
+ar5eid
+ar3eit
+ar3fa
+arfan5
+arf5ed
+ar5fel
+ar4ff
+ar3fod
+ar1i
+ar4ian
+ar2m
+4arn.
+arn5adwy.
+ar4nd
+3arnh
+ar4no
+ar4nw
+ar4ny
+ar1o
+ar4od.
+ar4odi
+arogl3
+3aror
+ar3os
+5aros.
+ar4p3as
+arp3w
+ar3sy
+ar3te
+ar4th3
+ar3ug
+ar3ut
+aru5wc
+3arwai
+ar5wch
+arwd2
+arw5der
+ar3wed
+3ar3wi
+arw3n
+ar3wn.
+ar3wni
+ar3wy
+4arwyn
+ar3y
+2as.
+2asas
+as5awr
+1asb
+as5boe
+2asd
+2ased
+as4enn
+2asf
+2asg
+as5gal
+asgl3
+asg4oda
+as3gwr
+asg3wy
+2asia
+4asie
+2asl
+2asn
+as4ny
+as4od.
+2asoe
+2asr
+2ast
+as4tal
+as3tan
+astat5
+as3te
+as4tl
+as4tr
+as5trus
+ast2w
+as5ty.
+as3tyl
+astyn3
+2asu
+as3ur
+as5wir
+2aswr
+2asy
+as5ynn
+2a2t
+at3ad
+at5alf
+ateb3
+at3em
+ath3a
+athl3
+ath3o
+ath4r3e
+athr3w
+athr5yc
+ath3w
+ath3y
+ato2i
+at3ol
+a3t[ocircumflex]
+at3ran
+atr5oc
+at3rod
+atro5e
+atr5yc
+at3wy
+aty3na
+aty5ne
+a2u
+2aul
+2aw
+aw1a
+aw5art
+aw5chw
+aw5ddr
+aw5dry
+aw3ed
+aw3ei
+aw3el
+aw3es
+aw3f
+aw3ga
+aw1i
+awl5ed
+awn3a
+awr1
+awr3d
+awy4r3
+3[aacute]u.
+1[acircumflex]
+bab4i
+bab5yd
+b3ac
+bach3
+badd3
+b3adw
+1bae
+2baet
+b1af
+b1ai
+b1an
+ban3a
+ban3e
+b4ann
+ban3o
+5barch
+bar4f
+bar4lys.
+barn3
+bar4wy
+b1as
+bas3g2
+bast4
+bat4a
+b4ath
+b1au
+bawd4a
+bawe5na
+b1d
+b1ec
+2bed
+beir4a
+be4iw
+b1em
+ben4ae
+be3nas
+be5ned
+bengl4
+bens4
+bent4
+b3ent.
+ben3w
+benwy5na
+b3ert
+b3esi
+bgal4
+2b1i
+b3ia
+bi5aidd
+3bib1
+b3id3
+b3ie
+3b2ig1
+b4inc
+bin2e
+b3io
+b3ir
+bisg4
+b3it
+bl3af
+bl5air
+bla3na
+bla5nedi
+bla5nes
+2blau
+bl5awd
+bl3ec
+bl4enni.
+blew3
+4blwr
+b4lyc
+4blyn
+bl5yn.
+bo4b4l
+b1oc
+4b3odd
+bol3
+b1om
+b2on
+bon4d
+b2r
+bra3na
+br3ed
+breg3y
+br3em
+br4enn
+br2i
+br4il
+br3ir
+brod4iae
+brog4
+br4wd
+bryf3
+bryn4d
+b1s2
+bse3na
+bse5ne
+2bu.
+1bua
+budd4l
+bu4lo
+3buo
+bw3a
+b1wc
+3bwll
+b1wn
+b4wns
+bwr1
+4bwyd
+b3wyd.
+4b3wyf
+bwyllt4
+3bwyn
+bwy4r3
+2by
+b3ych.
+bydd5i
+b2yl
+3bylla
+by3na
+by3ned
+by3nes
+byrf4
+b4yrw
+3byst.
+byw3
+cabl4en
+c1ad
+cad3a
+cad3l
+cae4a
+caethiw4ed
+c1af
+c3ai
+cal3e
+cal3o
+cam4enn
+camn4
+can3a
+ca4ne
+canghe5na
+can3l
+c4ann
+can5olas
+can5ole
+c3ant
+can4yd
+car4en
+car4ped.
+c1as
+casg4e
+3cat
+ca4t3r
+c3au
+c3[aacute]u
+c1b
+cd2
+c1e
+c3ed
+c5edig
+ceg3
+c3el
+c2en
+ce3na
+c3ent
+cer5by
+cer4f
+cer3y
+ceu4l
+c3ff
+3chae
+ch3af.
+ch4afb
+ch4afi
+chan3a
+changhe5na
+char4enn
+chasg4e
+chdr5y
+ch3eba
+ch3ebe
+ch3ebi
+ch3ebo
+ch3ebw
+ch3ech
+ch3ed.
+ch3edi
+5chein
+chelad4
+ch3ent
+chen3y
+ch3er.
+cher4f
+ch3esg
+3chest
+4chestio
+4chestol
+4chestwa
+4chestwe
+ch3eta
+ch5ig.
+chleid4
+chl5ent
+4chmyni
+4chmynnol
+chn5eg
+chob3
+chobl4
+ch3odd
+chon5ad4
+ch3ont
+chon4y
+chra4
+ch4ro
+4chu.
+ch4ub
+4chus
+5chwant
+ch3wch
+chw4f
+ch4wi
+ch3wn.
+ch3wyf
+chyd3
+chym4an
+ch4ynn
+chysg3
+chys5o
+chyt3u
+chy5wa
+c1i
+cib3
+cig1
+c3in
+ci3od.
+cl2e
+cleid4
+cl2i
+c1ll
+cllon3
+cloe4
+cl2w
+cl4wm
+cly4w
+clywad4
+cn2
+cno4en
+cn4yw
+cob1
+co4bl4
+c1oc
+c1od
+cod4l
+coffad4wy
+collad4
+c1om
+c1on
+con4y
+corn4an
+cosb3
+cr3ae
+cra4m
+3crat
+credad4
+cr4el
+cr3ie
+cring4
+crof4
+crog3
+cron4a
+cro5nas
+cron4e
+cryg3
+crygl4
+cr4yl
+cr4ym
+crynho4em
+crynho4i
+cs3a
+c3s4aw
+cs3yn
+ct2a
+c4teg
+ct4id
+c1to
+ctor3
+c3tr
+1cu
+2cus
+c1w
+c3wa
+cwast3
+cw4fa
+cwm3
+cwn4ed
+c3wy
+c4wyn3
+cwy4r
+cyb3y
+2c1yc
+cych3
+cyd3
+cydl4
+cydr4
+cy4f3a
+cyfer3
+cyffel5
+c1yl
+cyll5a
+cym3
+cym4an
+cym4ero
+c1yn
+cyn3a
+c5ynau
+cyn3e
+cynef3
+c2yny
+cy4se
+cysg3
+cys5on
+cys3t
+cys3w
+cyth5rud
+cy1w
+cy3wa
+cy3wi
+cy3wy
+d1a2
+dach3
+d3ach.
+d5achwr
+d2ad
+dad3u
+dad3w
+d5adwy
+dae5ara
+dae5ared
+dae5ari
+dae5arw
+d2ael
+d4afe
+d4afo
+dag1
+dag3w
+4dail
+da5ion
+d4ait
+d4al.
+d4ald
+d4aln
+d4alr
+d2an3a
+d2an3e
+dan3f
+d2ano
+d2anu
+d2anw
+d2any
+dar3a
+dar4ana
+dar4d
+darf2
+d5arne
+dar3w
+d5aryd
+2das
+2dau
+2daw
+dawd3
+d5awd.
+d1b
+ddad3r
+4ddaf
+3ddang
+dd4ani
+dd3ara
+dd3ari
+dd3arw
+2ddas
+dd4aw
+ddd2
+d4dda
+ddd4e
+dd4d4i4
+dd3dr
+dd4du
+dd4dy
+dd5dy.
+dd3er.
+ddeth5
+ddeuad4
+dd4eug
+dd4ew
+dd2f
+dd4fg
+2ddi.
+dd4ic
+dd4if
+ddif3a
+dd4ig.
+ddi3gy
+dd4il
+dd4im
+dd4ini
+4ddit
+dd1l2
+dd5len
+2ddo.
+4ddoc
+dd3odd
+4ddom
+4ddon3
+dd2or3
+ddr2
+ddr4a
+ddr4e
+ddr4i
+ddr4o
+ddr4w
+dd4ry
+d2du
+4dd3un
+dd5us.
+dd5waw
+4ddwc
+dd2we
+4ddwn
+5ddwrn
+dd4wyn
+3ddwyr
+dd2y
+4ddyc
+dd4ydd
+dd5yf.
+ddym4d
+dd4yn
+ddy5nad
+5ddyni
+4ddynt
+3ddyr
+3deb.
+debr3
+d1ec
+dech4a
+d1ed
+d5edd.
+deddf3
+def3a
+d1eg
+d5egol.
+de1h
+deheu5
+d2eil
+d4eim
+delff5
+d3ella
+d3elle
+d3elli
+d3ello
+dellt5
+d3ellw
+del3o
+d1em
+d3em.
+2d1en1
+d4eng
+d3ent
+de2o
+der3f
+derfyn5
+2d1es
+d3esi
+5destu
+d1et
+det5an
+deth4o
+d1eu1
+deul4
+deu4ny
+d4eut
+d1f2
+d3f4ae
+df4ann
+df4ao
+d4fa5ol
+df4at
+df4aw
+dfed5r
+d3fei
+dfe5ne
+d5ferf
+d4fery
+dff4y
+d2fi
+df4id
+df4od
+d4f3ol
+df4ry
+d2fu
+dfwr2
+d4fyd
+dfyn3a
+dfyn4ed.
+d1g2
+dgam2
+dgan5e
+dg4ei
+dgl2
+dgrynho5
+dgyf5ar
+d1h2
+dha5ol
+dhegl5
+2d1i
+di5ach
+di1b2
+dibryd4
+di1d
+did2e
+di5den
+d4ido
+di5dos
+di4et
+di3eu
+dif4an
+di5fat
+di3fe
+di3ffr
+di5fli
+di5flo
+di5fra
+di3fw
+di5gab
+dig2e
+di5gel
+di3gen
+dige5na
+dige5ne
+digl4
+di5gof
+di3gry
+di3gw
+dig2y
+di3gym4
+di3gys
+dil4a
+dil4e
+di5lec
+di5les
+dill4a
+di3lu
+dil2w
+di3lys
+d3in.
+di5niw
+di3nod
+d4inoe
+di3or
+d2ir
+d3ir.
+di3ra
+d4i3r2e
+di5rif
+3d4iro
+di4rw
+di3rym
+dis3g
+di3so
+dis3t
+di3sw
+di3sy
+4d3it.
+d2iw2
+d4iw.
+di3w4a
+d4iwe
+di5wen
+d3iwyf
+d1[idiaeresis]
+d3ladd
+dladr3
+dl3af
+d3lam
+d4lau
+dl3ed
+d3l4ei
+d4len.
+dle3na
+dle5ne
+d4lent
+dl3er
+d3lew
+d2lo
+dl3oc
+dl3od
+d3lon3
+dlon5e
+d1lu
+dludd3
+d2lw
+dl3yc
+d3lyd.
+d3lyn
+dl4yr
+d3lyw
+d1m2
+dm4ar
+dm4er
+dm4od
+d3my
+d1n
+d3nap
+dn3as
+d3naw
+dneb4
+d2n3ed
+dn3es
+d2ni
+d3ni.
+dno2i
+d3nos
+d2n1w
+d2ny
+d1o
+d3och
+d2od.
+d2odi
+d4odia
+dod3r
+2doe
+do4en
+d2of
+dof5yddio
+d3ol.
+d4oll
+dol4wg
+d3om
+don2a
+don2e
+d3ont
+dor2a
+dor4da
+dor5we
+dos3
+do2w
+2dr.
+3dra.
+dr3ad.
+dr3ada
+dradd3
+dr3adw
+dr3a4f
+dr5aid
+dr5ain
+dram4g
+dr4an.
+dra3na
+dra3ne
+dr4ann
+dr3ant
+dr5au.
+dr3c
+dr3ed
+dr4edo
+dr3en
+d4reu
+drew3
+dr3f
+drff4
+dr4iau
+d4r3id
+d4rir
+d4roe
+dro3es
+4drog
+drog4e
+dr3ol
+dr5ol.
+dr3on.
+dron3a
+dr3ont
+d4rwg
+dr3wn
+dr3wyf
+dr3yd
+dr3yn.
+d3ryw
+d1s2
+d1ug1
+d4un.
+dun3a
+d4unia
+d1ur
+d1us
+1dut
+du5wch
+d1w
+dw2a
+dw3adw
+d3wae
+dw3af
+d3wait
+d3wal
+dw3an
+dw3as
+dwb3
+dwbl4
+d3wc
+dwd2
+dw3edi
+d2wen
+dwer5y
+d4w3id
+d4w3ir
+d4wit
+dw5mig
+dw3o
+dwr3e
+d2wrn
+dwy3b
+d4wyc
+dwyn3
+dwy4on.
+d2wyr
+3dy.
+d1yc
+d5ych.
+d1yd
+d3yd.
+4dydd
+dyd2w
+dydw5y
+dyf5an
+dyff4
+dyf4n3
+dyf4od
+dyf5odd
+dy5fodi
+dyf2r3
+dyfrad4
+d3yg.
+d3ygl
+dy3gy
+d2yl
+dyl5ad
+dy3lan
+dyll3
+dy3lu
+d1ym
+dymag5
+dym5od
+3dyna
+dy3nas
+dy3nes
+dy3n4od
+dy3r2a
+dyr2e
+dy3ri
+dy5ryd
+2dys.
+4dysa
+dys4g
+dysg5a
+4dyso
+2ea
+e1ad
+e4adf
+e4adl
+eaf1
+e3af.
+ea4fa
+e4afg
+e1ai
+e1an3
+e4ang
+ear1
+earf2
+ear5fo
+earn4i
+e1as
+e1au
+e3aw
+eb3ad
+eb5ar.
+eb1e
+ebl2
+eb1o
+eb3ont
+ebra5ne
+ebr3e
+eb4r3i
+ebr3o
+eb1w
+eb3wy
+eb5yll
+2ec1a
+2ec3e
+ech1
+ech5od
+echr4
+ech3ry
+ech5we
+ech5wyd
+echwy5na
+echwy5ne
+2eco
+econ2
+eco5no
+ec5ord
+ecr1
+2ect
+ec4to
+2ecw
+ec3y
+2ed3a
+ed4al
+edd3ad
+edd3al
+edd3ar
+edd3e
+2eddf
+eddf3a
+eddf5i
+eddf3o
+eddf3w
+eddf3y
+4eddg
+edd3o
+edd3yc
+edd3yg
+edd5yla
+edd5yled
+edd5ylo
+edd5ylw
+edd5yn
+ed1e
+ed3eg
+ed2ei
+eden5a
+ed3fa
+ed3fe
+ed3fi
+edf4w
+4edia
+edi4f
+ed3ig
+ed3i4n
+ed3ir
+ed3iw
+3ed[idiaeresis]
+2edl1
+ed4lo
+4edr.
+edr3e
+edr3o
+edr4yd
+2edw
+ed2we
+edw3en
+edw5lw
+ed3wy4
+ed3y
+edym4
+2e1e
+ef5adwy.
+ef3an
+ef5an.
+ef3ar3
+ef3au
+ef1e
+efer2
+eff4e
+eff3r4
+eff5re
+effro4er
+eff3y
+ef3id
+ef3ig
+ef2l3
+ef4lo
+efn1
+ef5nos
+ef1o
+ef4odo
+ef2r
+efr3e
+ef4ri
+ef4ry
+ef4us
+ef1w
+efyddad5
+efy3na
+efy5ne
+e2g1
+4eg5an.
+eg4ana
+egar3
+egeir4
+eg5ell
+4egen.
+2egf
+eg5ig.
+egl3a
+egl3e
+egl3o
+2ego
+eg4on.
+4egos
+eg5os.
+egr3a
+egr3e
+egr3i
+egr3o
+egr3w
+eg3ry
+egr3yc
+eg2u
+eg3yr
+e1ho
+e1hy
+e2i
+2ei1a
+eiaf3
+ei5afr
+ei3bre
+eich3
+eidal5
+eidd3
+eidd5y
+ei5der
+eidl2
+eid5la
+2eidr
+eidr5o
+ei1e
+2eig
+eigl5ad
+eig5lenn
+eigl3w
+ei4gr
+3eilad
+4eiladwy.
+eil5ec
+eil5eg
+eil3es
+ei4ll
+ein2a
+eind5i
+ein4drw
+4einf
+eing4a
+ein5io
+4einl
+4einy
+2ei1o
+ei3ont
+eir3y
+2eit
+eith5e
+ei1w
+ei3y
+2e2l
+el1a
+el5ain
+elan5e
+el4co
+el1e
+el3ed
+el4eno
+el4era
+el4ere
+el5far
+el5fed
+elgri5
+3elh
+el5iff
+4elig
+ell1
+ell5ac
+ellt4ir
+ell5wy
+ell3y
+el2m3
+el5myn
+el1o
+el2od
+el3odd
+4elog
+el4oga
+el2ri
+el4wi
+el3wy
+el5ybia
+el5ybr
+el3yc
+4elyd
+el5yd.
+el3ydd
+elyn3
+el3yna
+el5yned
+elyng4
+el3ynn
+el3yr
+el3ys
+el4ysg
+el4yst
+em5ain
+em4at
+2em3e
+2emo
+em4os
+2emp
+empr3
+em5ryn
+2emt
+em5tas
+2emy
+en5ada
+e4n3adu
+e4nae
+en3af
+e4nag
+en5ago
+en3ai
+en3an
+e4nar3
+enar4g
+e4n3aw
+en5byl
+en3c
+en4ct
+en4cy
+2end
+endig3
+endr4
+en3ec
+en3ed.
+en5edd
+en3el
+en3em
+en3en
+en3er
+en3est
+en3eu
+e4new
+enew5y
+en5fyd
+eng3h
+en4gi
+engl3
+en5gl4og
+en5ise
+en3it
+en3o
+en4oli
+4enti
+ent4ir
+en3tr
+ent4wr
+4enty
+en5tya
+en5uch
+enw3ad
+en3wc
+en3wn
+en3wr
+en3wyd
+en3wyf
+en3yc
+en5ych.
+en5ychase
+en5ychia
+en4yg
+2eo
+e5och.
+e1od
+e1oe
+e4olae
+e4olaid
+e4olau
+e1om
+e1on
+eor3
+ep5ach
+ep3l
+er1a
+er5ain
+er2c
+erc3a
+er4ch
+4erco
+2er2d
+er3de
+erd3y
+er1e
+2erf
+er5fan
+erf5au
+er3fed
+er3ff
+er4fl
+er4fu
+er3fyd
+er3gl
+er2gy
+er3i
+er4ic
+er4il
+erin3
+er5ir.
+er5it.
+er2l
+er5lys
+er4md
+er4mw
+er4my
+er3na
+ern4i
+er5ni5as
+er5nyw
+er1o
+4erob
+erog4
+4erol
+er5oli
+er4ony
+er2se
+er5sei
+2ert
+erw3a
+er4w3e
+er4wl
+er3wn
+er4wre
+er3wy
+er4wyc
+er4wydd
+er3yc
+er3ydd
+er3yg
+er3yl
+eryl3e
+er4yll
+er3yn
+eryn4a
+eryn4e
+es3a
+es3ba
+es3e
+es5gar
+es4ge
+es4gn
+es4g3w
+es4gyn
+es3n
+es4ne
+es4t3a
+es5tam
+est3er
+2estf
+2estl
+est5ol
+4estu
+es5tyll.
+esty5na
+esty5ne
+2esu
+esurad4
+es4yd.
+es3yn3
+e2t
+et3ac
+et3ad
+e3tae
+et5eg.
+eter4
+et3er.
+eth1
+eth3e
+eth3i
+eth4le
+eth3os
+eth4r3
+eth3w
+et5iro
+et1o
+et5re.
+et5swy
+et1w
+4etwr
+ety5wy
+e2u
+eu3a
+4euau
+2eu1b2
+2eud2
+eu3da
+eu3d4e
+eud4i
+2eu1f
+eu1g
+eull4
+eu5lys
+2eun2
+eu5nan
+eu5nos
+eu5nyddi
+eu5sil
+eus3t
+eu4th
+eu4tu
+eu3w
+2ew
+ew1a
+ew3d
+ew1e
+ew3g
+ewgl4
+ewg4w
+ew3ir
+ewis3
+ewl1
+ew3o
+ew5par
+e3wyd.
+e3wyf
+2ey
+e1yc
+ey4en
+1[ediaeresis]
+3fa.
+fab3
+fab4i
+fach3
+fac4w
+fadd2
+fad4ei
+fad4r3
+fael3
+f1af
+3fag
+fag4d
+fagl3
+f1ai
+falch4
+f4al5on
+f4alu
+f3am
+f4an.
+fan3d
+fan5edd
+fan4es
+f3anf
+fan3o
+fant2
+3faoe
+far3a
+far4ch3
+4far2e
+f3arf
+far4fa
+far4l
+3farn
+farn3a
+f3arp
+f3art
+f4arwe
+f3arwy
+f1as
+fas4iw
+f3at
+fat4o
+fawd4a
+3fawr
+f1b2
+f1d2
+fdd2
+f2dw
+fd5wr.
+f4eb.
+febr3
+f1ec
+fed4n
+f2edr
+3feia
+3feie
+fe4io
+feiriad4u
+feith3
+fe4iw
+f4el.
+f3ell
+fel5yno
+f1em
+fe3na
+feng3
+fent4
+fentr5
+fenw3
+fen3y
+2fera
+ferch4er
+ferdd4
+2f2ere
+2f2eri
+fer4in
+2f2ero
+f2erw
+ferw5yc
+f4er3y
+f1es
+feth3
+f4eth.
+f4etha
+feu1
+3fey
+f2f
+ff3ad
+ff3ant
+ff4at
+ff3au
+ff3ed.
+ff5edig
+ff5eio
+ff5el.
+ffen5ed
+ff3ent
+ff3er.
+3ffert
+ff3esu
+ffet4
+2ffi
+ffidl5
+ff2l
+ff4la
+ffl4ac
+ff4lo
+ff5log
+ff5los
+ff3n
+ff3od
+ffod5e
+ff4odi
+3ffon.
+ffo3n4a
+ffo3n4e
+ff3ont
+ff2or
+5ffor.
+ff4os
+ff2ra
+ff2ri
+ff4rod
+ff2rw
+4ffry
+ffr3yn
+ff2t
+5ffurf3
+ff5wyf
+ff5yl.
+f1g
+fg4wr
+f1h2
+fha5ol
+f1i
+f4iadae
+2fic
+fic4e
+f2id
+f3id.
+fig4en.
+fil3y
+fin3
+f4in.
+f3ind
+fin4t
+fisg4
+f2[idiaeresis]
+fl2
+fl3ad
+flaf4
+fl3ai
+flamad4
+fla3na
+flan5ed
+f2las
+flaw4
+fl3ec
+fl5eis
+fl3em
+fle3na
+fle5ne
+fl4eo
+fl3id
+fl4ig
+flin3e
+fl3ir
+fl4iw
+fl3om
+f3lon
+fl5rwy
+f4l3wr
+f1ly
+f5lychw
+f4l4yd
+fl4yf
+flyn3a
+flyn3e
+f2n
+fn3a
+fn3d
+f4n3ec
+f4n3ed
+f4n3em
+f4nen
+f3nif
+fn3ig
+f3nith
+fn5lu.
+f4n3oc
+f4n3om
+f4n3on
+fn3w
+fn2y
+f4n3yc
+fn3yn
+f1oc
+fodd3
+fod4enn
+f4odf
+fodr4
+fod3rw
+f4odu
+f3oedd
+f1og
+fol3
+fol4enn
+f1om
+fon4d
+5fonog
+f4ony
+f4or.
+for4c
+f4ord
+for3f
+f3os2
+fos4i
+fos3o
+f3ot
+f4otr
+fr2a
+f2raf
+f2rai
+fra3na
+fra5ned
+fras4au
+f4r3au
+fr3d
+frdd2
+fre2
+f2rec
+f4red.
+f4reg
+freg3y
+f2rem
+f4ren
+f3reo
+f2rer
+fr3f
+f2rh
+f2rid
+fr3id.
+f2rir
+f4rit
+fr2o
+f3roa
+f5roadw
+f2roc
+frod4iae
+fro2e
+fro4en
+fro5esi
+f3ro2i
+f2rom
+f2ron
+f3roo
+fr4ot
+f3row
+fro4wc
+fro4wn
+f1ru
+fr2w
+f2rwc
+f2ry
+f3ryn
+f1ta
+f3ter
+fudd4l
+fud3w
+fu2l
+f1un3
+f4urf
+f3wa
+f1wc
+fwd3
+f1we
+4fwl.
+f1wn2
+f3wr.
+fwr5ne
+f4wy.
+f3wyd
+fwyllt4
+fwyn3
+f4wyn.
+f4wys
+f1yc
+fyd2
+fyddad4
+fydd4l
+fydd5y
+fyd4l3
+f4ydr
+fyd3y
+3fyf
+fyf4y
+f1yl
+f4yl.
+f2yn
+4fyn.
+f3yng
+fyn3o
+fyn5od
+f2yr
+fy3r2a
+f3yrd
+fyr2e
+fyrf4y
+fyr4y
+fys4t
+fystyr4o
+fys4w
+gabl4en
+g5ach.
+gad1
+gad3a
+5gadar
+g4ad2u
+5gaduri
+g4adwr
+g1ae
+gae3a
+g3af.
+gaf3a
+gaf4r3
+g1ai
+1gal2
+gal5ara
+gal5are
+gal5ari
+gal5aro
+gal5arwy
+galed5
+4gall
+gam4enn
+gamn4
+gan3a
+gan4d
+ga4ne
+ganghe5na
+g3ant
+4ganwr
+g3ao
+gar3eg
+gar4enn
+g3arf
+gar4ge
+3gart
+4garthia
+gar4we
+g1as
+5gased
+gasg4e
+ga4t3r
+2g1au
+4gawe
+2g1b
+gb4er
+g1c
+2g1d2
+gdd2
+gddig5
+gdo3ra
+gdo5r4e
+g2dw
+gd5wr.
+g1ec
+g1ed
+gedd3
+g2ede
+g4edi.
+g4edid
+g4edir
+g4edit
+g2edo
+g4edu
+g4edyc
+geg3
+g2egy
+g2ei.
+g3eid
+g4el.
+gell5a
+gel3o
+g1em
+gen4d
+g5enni.
+gen2r
+g3ent
+g4enu
+g3er.
+3g4erd
+ger4f
+ger3y
+g1es
+geu4l
+g1f2
+gfa3na
+gfa5ne
+gfe5ne
+gfyn3
+g3ga
+gh2
+ghae4
+ghan3a
+ghanghe5na
+ghar4en
+ghasg4e
+ghen5i
+gher4f
+gh4le
+ghleid4
+gh4ne
+ghob3
+ghobl4
+ghof5r
+gh4og
+ghon4y
+ghr2
+ghra4
+ghred4adu
+ghred4inia
+ghw4f
+ghyd3
+ghym4an
+ghysg3
+g1i
+gib3
+g4ida
+gi5en.
+g2ig1
+3gil
+1gip
+g3iw
+g2l
+gl3ac
+gl3adw
+glaf2
+glan5e
+gl3ant
+glas3
+g5las.
+g3lat
+gl5au.
+gl2e
+g3le.
+gl3ech
+gl3edi
+g5leisiaso
+g3leo
+gl3es
+gl3eu
+gl3f
+gl3ia
+gl3id
+g3liw
+gl4odi
+gl4ody
+glo4e
+gl4of
+5gl4oga
+glo2i
+g4lu.
+g4lwc
+g4l4wm
+g4l3wn
+g4lwyf
+gl3yc
+g3lyd.
+gl4ym
+gl4ys
+gl4yw
+g2n
+gn2i
+gn3io
+g4niw
+g3n[idiaeresis]1
+gno3e
+gn2of
+gn2u
+gn1w
+gn4yw
+gobl4
+g1oc
+goddefad4
+go5ddr
+g2od2y
+god5yn
+g2oe
+go5fau
+go3fer
+goff4au
+gof4un
+gog2
+go3gan
+gog3e
+gog4l4
+go5gyn
+g3ol.
+goleu5
+3g4oll3
+go4lw
+gol5yga
+gol5yge
+gol5ygwy
+g3om.
+go3me
+gon5ad
+g4one
+g3ont
+gon4yn
+g2or
+gor5chy
+gorddad4
+gord5i
+g4orf
+gorn4an
+g4orol
+gor3t
+1gos
+gosb3a
+g3ota
+g3ote
+g3oti
+g3oto
+g3otw
+g2r
+gra4m
+gran3a
+gr4el
+gr3f
+gr2i
+g4rid4
+gr3ie
+gring4
+g4r3ir
+g4rit.
+gr2o
+gr3od
+gr4oe
+gr5oed
+grof4
+grog3
+gron4a
+gro5nas
+gron4ed
+gron4es
+gr4ono
+grwn5a
+gr3wo
+gr4wt
+gr2wy
+g5rwydd
+g4ryc
+gryg3
+grygl4
+gr4ym
+gr4yn
+g1s2
+gsym4
+gub3
+gudr4
+gu5edd
+gu4to
+gw2
+gwa5r4as
+gwar4es
+gw4as
+g3wc
+gweithiad4
+gwelad4
+gwel5e
+gwen3a
+gwerthad4
+gwm3
+gwn4a
+gw4n4e
+gwobr3
+g3wr.
+g4wrd
+g5wth.
+gwy3by
+g3wyd.
+gwydr5
+g3wyf
+gwy4r
+gwyw3
+3gyb
+gyb3y
+g1yc
+gych3
+g4ycho
+gydd4f5
+g2ydi
+gydl4
+gyd3r4
+g4ydu
+g4ydy
+3gyf
+gyf5an
+gy4fe
+gy4fl
+gy4fr
+g3yl3a
+3gylc
+g3yle
+g4ylio
+g3ylo
+g3ylw
+g2ym
+gym4an
+gym3u
+gyng3
+g2yno
+g2yr
+g4yro
+g2ys
+gy4se
+gysg3
+gys5on
+gys3t
+gys5to
+3gyw
+gy3wa
+gy3wed
+gy3wi
+gy3wy
+hab3yd
+hadd5as
+hadd3o
+had4eg
+had4eny
+h4adf
+had4fer
+hadl4a
+had3n
+had3r4
+h5aeol
+ha4f3a
+h4afl
+haf5ol
+h4afs
+hag3w
+h1ai
+h4aif
+hal3e
+hall3o
+hal3o
+ham4enn
+hamn4
+ham3s
+han3ad
+h4anau
+hanc4
+han3d
+ha4ne
+han5edd
+han4er
+h4ange
+hanghen4r
+han3ig
+han3l
+han2o
+han4oda
+han5olai
+han5olas
+han5ole
+han5olwy
+hanrhyd4
+hansodd4ei
+har5adwy.
+hara3t
+harato4en
+har4bwr
+har4cha
+har4fo
+h1as
+h3asf
+hast4a
+ha4tr
+hatr3e
+h1au
+hawe5nas
+hawe5ne
+hawl3
+h2[acircumflex]
+h1b2
+hbl4a
+h1d2
+hddad3
+h3di
+hd4ir
+hdo3na
+hdo3ne
+hd4ra
+hdr3e
+hdr5oc
+hdr5od
+hdro5ed
+hdr5wyd
+h4dwr
+h2eb
+h3eb.
+heb3ra
+hedd3
+hedd4fo
+h2ede
+hed5fo
+hed5fw
+h4edid
+h4edir
+h4edit
+h2edo
+hedr5wy
+h4edu
+h4edy
+h2ef
+h2eg
+hegn3
+h4egy
+he4ho
+h2ei2
+h4e3ia
+h4eil
+heimlad4w
+h4el.
+4helad
+4helaf
+4helai
+4helan
+4helas
+h3eld
+2hele
+4heli
+2hel3o
+hels4
+2helw
+4hely
+hel3yd
+h1em
+hen5cy
+hen4id
+hens4
+hen3wy
+henwy5na
+henwy5ne
+heny5na
+he3ol
+her3b
+h2ero
+h3esi
+h2et
+h3ete
+h3eto
+5heuae
+heu4aetha
+heu3d
+heu2l
+he4wi
+hewy5nas
+h1f2
+hfil4
+hfonhedd5
+hf4os
+hf4wy
+h1g2
+hgan3
+hgap2
+hgi5ai
+h1i2
+hiach4
+hiac5has
+hiac5he
+hiac5hw
+hi4a4n
+hib3
+hidl3
+h2ig1
+hig3y
+hin4t
+hir3
+hi4wa
+h2[idiaeresis]1
+h[idiaeresis]4en
+hl2
+hl4ad
+hl5adw
+hl4am
+hla3na
+h5las.
+hl3asi
+hl3aso
+hl4aw
+hl5ech.
+hl5edig
+hledr5
+h3lef
+4hleit
+hl4en
+hl4et
+hl3id
+hlon3a
+hlon5e
+h4lus
+h4lwm
+h5lyd.
+hl3ydd
+hlym4u
+h4lyn
+hl3yn.
+hlywad4
+h1m2
+h3myg
+hmygad4
+h3myn.
+hmy3na
+hmy5ne
+h5myni
+hn2
+h3nad
+h2neg
+h4new
+hn4ie
+h1n[idiaeresis]1
+hnod3
+h2nol
+hn5ole
+hn4yw
+ho4ad.
+ho4bl
+hod4l
+ho4dy
+ho4en
+hoffad4wy
+h3og.
+h3o4ga
+hog5lu
+ho2h
+h2ol
+h3ol.
+hol5ud
+h1om
+h2or
+h3or.
+hor4c
+horn4an
+h4os.
+hosb3
+hos3o
+h2ow
+hp2
+h2r
+hra3dd
+hr3adw
+hr3af.
+hra3g
+hr4aid.
+hr3ant
+h5raul
+hr5edig
+hr3em.
+hr3f
+hr2i
+hr3ia
+hr3id.
+hrid4a
+hr3ie
+hring4
+hr3ir
+hrisiad4
+hr3it
+hr3iwy
+hr2o
+hro4ad4
+hr5och.
+hr3odd
+hrog3
+hr3om.
+hron4a
+hro5nas
+hron4e
+hrong5
+hr3ont
+hr4ud
+hr3wn.
+hr5wyd.
+h5rwydd.
+hr3wyf
+h4ryc
+hryg3
+hrygl4
+hry3l
+hr4ym
+hrynho4e
+hrynho4i
+hrynho4wn
+h4rys
+h1s2
+hsef4
+h2t
+h2u
+hub5on
+hudd3
+hudd5y
+hudr4
+hud3w
+hud5yl
+h4uge
+hug4l
+hun3ad
+h4unn
+h3ur.
+h3us.
+h4use
+h4ust
+h4usw
+hw2a
+hw4as
+hwbl5e
+hwd3
+hw2e
+hwedl5
+h3wei
+h4wel.
+hwen3
+hwen4y
+hwe5nychaso
+hwe5nyched
+hwerw5
+hwe5ug
+hw2i
+hwiw5g
+hwm3
+hwn4e
+h3wr.
+h2wy
+h4wy.
+h4wya
+hwybr4
+hw4yc
+hwyll5t
+hw4ym
+h4wyo
+h5wyol
+hwy4r
+hyb4l
+hyb4wyl
+hyb3y
+hydd4id
+hyd4fo
+h2ydi
+hydl4
+hyd4naw
+hy4f3a
+hyfad4
+hyf4ae
+hyfar5f
+hyfer3
+hyffel5
+hyffred4in.
+hyf4iai
+hy4ga
+hygl4o
+hygl4w
+hygr4
+hyll3a
+hym4adw
+hym4ant
+hym5el
+hym4en.
+hymerad4
+hym3o
+hymp4
+hym3u
+hym5yr
+hym5ys
+hyn3a
+hyn3e
+hynef3
+hyn3yc
+hyr3a
+hyrdd5
+hyrf3
+hyr5n4o
+hyr2w
+hys4b
+hy4se
+hysg5od
+hys4ig
+hys4n
+hys5oni
+hyt4bw
+hyth5ru
+hyt2u
+hytun4deba
+hy3was
+hy3we
+hy5wed
+hy3wi
+hy3wyd
+1ia
+iab4a
+iach2
+iad3
+i4ada
+5iadaeth.
+iad4lo
+5iaduro
+i3ael
+3iaet
+4iafo
+iag3w
+2ial1
+ial4ae
+2i3am2
+iam3h
+ia3na
+4iand
+ian5da
+ia3n2e
+4i3ang
+iang4e
+ianghen5
+ian3o
+ian3w
+2iar
+i3ard
+i3arf
+iar4l
+iarll5
+iar4s
+i3asg
+iat5er
+i2au
+iawnad4
+2ib
+ib3ed
+ib3el
+iben5y
+ib3es
+ibetr4
+ib3i
+ib4il
+ibl3e
+ibl3o
+ibl3w
+ib5og.
+ib3on
+ibr3a
+ibr3w
+iby4nad4
+2ic
+ic3en
+ichl4
+ic5ied
+icon2
+ic5oni
+ic5rwy
+ics4i
+ic5siw
+ic3t2
+2ida
+idal4
+2idd
+i4ddai
+idd4au
+i2dde
+idd3f4
+idd3i
+i4ddir
+i4ddod
+idd3r
+2ide
+idel4
+ider4
+2idf
+idf4w
+2id3i
+idi4a
+id4lo
+idl3w
+2idm
+2i2d2o
+id3og
+i3dola
+i3dole
+i3dolo
+i5dolwy
+ido3na
+ido5ne
+i3dor
+2idr
+idr4a
+idr4o
+id3rwy
+2idu
+2idw
+idw3a
+idwad4w
+id4wr
+2idy
+id3yl
+id2ym
+1ie
+4iedd
+4iedi.
+iedif5
+ied4yl
+2i3ef
+i3eg
+iegwydd4
+2iei
+i3eid
+ieis4
+4ien.
+ien4a
+ien4c
+4iend
+i3ene
+2ienn
+ienw4
+i3eny
+i3esg
+2if
+if4add
+if4ae
+if4al
+ifan3a
+ifan5e
+if4ao
+if4ar
+if5ard
+ifar3e
+if4at
+if5ath
+if4aw
+if5bin
+i4fec
+i4fed.
+i4fedi
+i5feio
+i5feiw
+i4fem
+ife4n
+i4fent
+i4fer.
+i3fery
+i4fesi
+i3fet
+iffl3
+iff5or
+i3ffu2
+iffy5na
+iffy5ne
+if3i
+i3flas
+if4on.
+i3fre
+i3fry
+i1fu
+i4fwc
+i4fwn
+i4fwyd
+i4fwyf
+i1fy
+i4fyc
+i4f4yl
+ify5re
+ig3ad
+ig3af
+ig4ain
+2igan
+4i3gar
+ig1e
+ig3ed
+ig3es
+ig5hal4
+2ig3i
+ig5lan.
+ig5lann
+ig5law
+ig5let
+ig4l3o
+ig4ly
+ig5lyd
+igl3yn
+ign1
+2igo
+ig3odd
+ig4ode
+ig3oe
+ig3om
+2igr
+i3gre
+igref4
+i3gro
+ig3rw
+igryb4
+2igw
+ig5wai
+i4gwc
+i4g3wn
+ig4wrn
+2ig1y
+igyff4
+ig5yn.
+ig4yna
+ig4yr
+igys4
+ig5yso
+igysyllt4
+igyt4
+igy4w
+2i1h2
+i2han
+ihat4
+ihe4w
+2i1i
+i3iw
+2i2l
+il3a
+5ilau.
+ilc2
+ild5ir
+il3ed
+il5en.
+ilew4
+il1f
+ilf4y
+il3i
+il4ip
+ill3
+ill5iw
+illt4
+il3oc
+il3od
+il5ofy
+il3on
+il2s3
+il4sy
+il4ti
+iludd4
+il3un
+il1w
+il5wai
+ilwen3
+il4ws
+il3yd
+il3yg4
+il3yn.
+ily3na
+ily5ne
+i4lysia
+il5ywa
+2im2
+im4bi
+im3i
+iml3
+im4le
+2in
+in1a
+in3ac
+in3ad
+in3af
+in3ai
+in3an
+in2be
+inc4e
+in4ci
+inc2o
+in4cy
+in4dai
+in1e
+3in4eb
+in3f
+ing5en
+in4g3o
+ing3w
+ing5yl
+in5gyn
+in3ia
+in3id
+in5iew
+in3ig
+iniw4
+in4iwe
+in1o
+in4ode
+in4odi
+in4ody
+in3oed
+in3on
+in3os
+int4a
+in4te
+in2t3r
+in4ty
+in3w2
+in5wyc
+in1y
+1io
+3io.
+2iod.
+i3odde
+iod5le
+iod5wy
+2ioe
+2i1of
+iog3
+4iolc
+iom3
+i2on
+ion3a
+ior4c
+ior4f
+i4orw
+2ios
+2iot
+2ip
+ip5ell
+ip4og
+ir1
+ir2a
+ir5agl
+ir3an
+ir4[aacute]f
+ir3b
+irch3
+irdy5na
+irdy5ne
+2ir3f
+2iri
+i4ria
+ir3io
+i3ris
+ir4li
+ir4ll
+ir3na
+irnad4wy.
+ir3no
+irn4y
+2ir3o
+ir3w
+irw2i
+ir4wo
+ir2y
+ir3yn
+i3ryw
+2is
+isaf4
+is3b
+is5eld
+is2er
+is5er.
+is4gam
+is4ge
+isg3o
+is3gr
+isg5wyd
+is3gy
+is4la
+is5myn
+is2o
+is5odd
+is3ol
+is3on
+ist2
+is4ti
+is5tol
+is2w
+is3wn
+is5wyd.
+is4yc
+is4yr
+1it.
+3it2a
+2ith1
+ith3a
+ith4au
+ith3eg
+ith3i
+ith5or
+ith3w
+ith3y
+2iw.
+iw3adw
+iw3af
+i4wair
+i3wal
+iw3an
+iw3as
+3iwc
+iw4ch
+2iw1d2
+iwd4i
+iw5edd.
+iw3edi
+iw3eid
+iwg4w
+2iw1i
+iw1l2
+iwl4e
+iwl4i
+iwl4o
+iwl4w
+iwm4e
+iwmp4
+3iwn
+iwn4i
+4iwnl
+iw3o
+i3wre
+i3wrt
+iw5ter
+1iwy
+iw4yd
+iw4yf
+iwyn3
+4iwyr
+1iy
+2iyd
+2i1ym
+iyn3
+2i1ys
+[idiaeresis]3ae
+[idiaeresis]2i
+l1ac
+lach3
+2lad.
+l4ad4d3
+lad2m
+lad2o
+lad3r4w
+4laen
+l3af.
+5lafar
+l1ai
+l4ain
+l4air
+l4ait
+lam3
+l4an.
+lan5ced
+lan5de
+landr3
+l2ane
+lan4es
+l4ann
+lan3o
+4lant3
+lar3a
+lar4ia
+lar3n
+l1as
+l4as.
+lasg4
+last2
+las5ta
+4lat.
+lathr3
+lats5i
+2l3au
+law5dde
+lawen3
+law3l
+law3no
+lawr2
+law5ro
+law3y
+2l1b
+lb4an
+l2c
+lch1
+lch5io
+lch5iw
+lch3r
+lch5wyd.
+l3co
+lc3yn.
+2l1d2
+ldd2
+ld3i
+ld4ir
+ldro3
+ldy5na
+ldy5ne
+1le.
+le3a
+le4ad.
+le4ada
+lebr3
+lech3
+l3ed.
+leddf5
+l4eddog
+led5fy
+led3l4
+l4edr
+lef1
+lef3e
+lef3y
+l2ega
+leg5ar.
+l2egw
+leg5yr
+le5iau
+le3id.
+lei3l4
+le3ir.
+le3it.
+le4iw
+l3el
+2l1em
+l3em.
+l2ema
+len2d
+len5di
+len5ig
+l3ent
+len3y
+1leo
+le3oc
+le4on.
+l3er.
+l4erau
+ler5ig
+lesg5e
+l4esn
+let4em
+le4tr
+l4euad
+l4euh
+4leuon
+l5euon.
+le3wch
+le3wn
+lew3yn
+lf2
+lf5air
+l3fan
+lfe3ne
+lf4fa
+lff4y
+l1fi
+lf5icy
+l1fo
+lf5oda
+l1fr
+lf4wy
+lf3yd
+lfy5re
+l1g2
+lg4an
+lgo4f3
+2l1h2
+l3ha
+l3he
+l3hi
+l3ho
+l3hw
+l1i2
+liach3
+4lian
+libr3
+2lid
+li3de
+1lif1
+li4fr
+4lio.
+li5oed
+li5pal
+2lir
+l3ir.
+lis4g3
+l3it.
+lith4r3
+l4iw.
+l2l
+2ll.
+ll4ada
+lladr3
+ll5adwy.
+ll3ant
+ll5arn
+lledr4e
+ll4edy
+lle3o
+llest4
+lleu4a
+ll1f
+llf4y
+llin3e
+ll3odd
+llosgad4
+ll5tyr
+lludd3
+llw2
+ll3wa
+llw4e
+5llyd.
+llygr3
+ll4ynn
+ll4yr2
+ll5yro
+lm2
+l1ma
+l4mad
+l4maf
+lm3ai
+l2m3as
+l4mau
+lm3o
+lm3w
+lm4yn
+l1n
+2lo.
+lob5yn
+2loc
+loch3
+2lod
+lodd3
+lo3ed.
+l1og3
+logl2
+l1ol
+lol2w
+lolyg4
+2l1om
+l3om.
+lon2a
+lon3d
+lon4es
+4l3ont
+l3or.
+l4orau
+l4org
+l4ory
+2lot
+lo5ynn
+lp3a
+l3pu
+l1r2
+l3rh
+ls4ig
+l4syn
+l2t
+lt3ad
+lt5eg.
+lt3em
+l5tera
+l5tero
+l4tia
+lt4ig
+l4tio
+lt1o
+l3tra
+ltr4e
+l3tu
+l4tu.
+lt1w
+2lu.
+l2ud
+ludd5y
+lud3w
+lu4edd
+l2un3
+l4un.
+lur5ig
+lust5l
+lw1a
+lwadd4
+lw4ae
+l1wc
+l3wch
+lw3ed
+lw3er
+lw3es
+lw4fa
+lwfr5e
+l4wgr
+lw1i
+lw4ig
+l1wn
+l3wn.
+lw3o
+l1wr1
+4lwre
+l4wyc
+l4wydi
+lwyd4io
+l4wyn3
+l4wyr
+3l4wyt
+lyb3
+2lyc
+l3ych.
+lyd2
+l4yd.
+2lydd
+lydn3
+lydr3
+lyf3a
+lyf5an5
+lyf4n3
+lyf4r3
+5lyfr.
+l2yg
+4lygedd
+4lygia
+lym3
+l4ynau
+lyng3a
+l4yn3y
+lyr3a
+4lysau
+4lysen.
+lys3ga
+lys3ge
+l4ysl
+4lysn
+4lysr
+4lysyn
+lyw1
+m1
+mab3
+mab4i
+m3ac
+mac4w
+m4adad
+m4adaf
+m4adai
+m4adan
+m4adas
+m2adi
+mad4r3
+m4adwc
+m4adwn
+m4ady
+mael3
+maf4l3
+m3ag
+2mai
+m3am
+man3a
+man3e
+m4anf
+man2o
+m3ar
+m4ar.
+mar4ch3
+m4are
+m4ari
+mar4l
+marn3
+m4aru
+mar4wy
+masg2
+mas3ge
+m3at
+mat5eg
+mat4o
+m3aw
+mawd4a
+mbarato5
+m3bi
+m3by
+mcan3
+md2
+m4dai
+mdan4a
+mda5nas
+mda5n4e
+mdd2
+mddadl4
+mddef3
+mddi4d
+m5der.
+m4dera
+mdog4aetho
+mdo3na
+mdo5ne
+mdro3e
+mdwy4
+mdyng5
+mdy5re
+4meda
+4meddia
+4meddwr
+4medi
+4med[idiaeresis]
+medr3
+meg3n4
+megni3
+meith3
+me4iw
+mel5yno
+mens4
+ment4e
+mentr5
+5menty
+men5yd
+m2er
+m3er.
+m3erad
+m4eradwy.
+m4eraf
+m4erai
+m4eran
+m4eras
+merch4er
+merdd4
+m4ere
+m5eriada
+m4eroc
+m4erom
+m4eron
+m4erw
+m4ery
+4mesia
+4mesol
+mest4
+4meswr
+4mesy
+meu1
+mfalchi5a
+mfalchi5e
+mffl4
+mfydd4
+mg2
+mgyff4
+mgyffr5o
+mgym4
+mgym5eria
+mgys2
+mh2
+mhar5ad
+mheir4a
+mhe3na
+mhe5ned
+mhe5nes
+mhen3t4
+mhen5w
+mhet2
+mhe3ta
+m2heu
+mhob4l
+mhr4a
+mhryf5
+mhyd4
+mhy3f
+2mi
+m3ias
+m3id3
+m3ie
+mi5gei
+min1
+min4t
+m3io
+m3ir
+mis2
+misg4
+mis4i
+m3it
+m3iw
+m3iy
+ml2
+m2las
+ml5blw
+m3led
+mlew3
+m3lin
+m5liwiais
+m5liwiase
+m5liwiwy
+mlo3na
+mlon4ed
+mlyn3
+m2n
+m3na
+mn4as
+m3ne
+m4ned
+mn5edi
+m5niau
+m3n[idiaeresis]3
+m2od
+m3odd
+mod4ig
+mod3r
+mof5yd
+m3og
+m4on.
+mon3a
+mon4d
+m4on[idiaeresis]
+mor2
+mor3c
+mordd4
+morddiw5
+mor4o
+m3os2
+mos4i
+mo5siy
+m2p
+mpr3a
+mpr3o
+mpr3w
+mp5wai
+mr2
+m2r3ai
+mra3na
+m2r4ed
+mreg3y
+m4ria
+m4rie
+m4rig
+mro4ad
+mrod4iae
+mrod4ir
+m2roe
+m2roi
+m2roo
+m2row
+m4roy
+m4ryn
+mryn4d
+mrys4o
+ms2
+m3sa
+m2se
+mse3na
+mse5ne
+m2so
+mstr4
+m2t
+mt2a
+mtas4
+m3th
+m2u
+mu4an
+mudd4l
+mud3w
+mu2l3
+mun3
+m3us
+m3w2a
+mw3as
+m3wch
+m3wi
+mwr2
+mwr3i
+m3wt
+mwy3b
+mwyllt4
+mwyn3
+m5wyse
+mwyth4adw
+mwyth4af
+mwyth4asan
+mwyth4aso
+mwyth4asw
+mwyth4ec
+mwyth4em
+mwyth4er
+mwyth4i
+mwyth4oc
+mwyth4w
+mwyth4y
+2m2y
+m3yc
+mych3
+m3yd
+mydd5i
+mydr3
+myd3y
+myf4y
+m4yl.
+myl3a
+m4yln
+m3ym
+myn4ai.
+m3yr
+myr4as
+myr5asa
+myr4edi
+myrf4
+m3ys
+m4ysg.
+mys4w
+myw3y
+3na3b2
+na4bl
+na4bo
+na4ch3
+n2ad
+n3adl
+nad4n
+nadna4
+n4ado
+nad3r
+nad3u
+nad3w
+n3adwr
+n1ae
+nae5ara
+nae5arw
+nael4
+n2afa
+n5afau
+n2af3o
+n4afy
+n4aic
+n4aig
+n4ain
+n4air
+n3al
+nan3a
+nan3e
+nan3f
+nap4om
+n3ar
+narllenad4
+n3asg
+n4asol
+n3as4t
+1nat
+nau3
+n1b2
+nbyd5r
+n2c
+nc3an
+nc5des
+nc4ed
+nc2ei
+nc5en.
+n3ch
+nchwiliad4
+n4cia
+n4cid
+n4cie
+n4cio
+n5ciod.
+n4cir
+n4cit
+n4ciw
+n4ciy
+n3cl
+ncr1
+nct1
+n5cyd.
+n5cyny
+n1d2
+nd3as
+nd3aw
+ndd2
+nd4da
+nden2
+n4d3ia
+nd3ie
+n3di3f
+n3di4g
+n3dil
+nd3io
+nd4ir
+n3dis
+n3dit
+nd3iw
+nd3iy
+n3dod
+nd3oe
+ndo3ra
+ndo5r4e
+n2dwr
+ndy5na
+ndy5ne
+n4dys
+neallad4
+n2eb1
+neb3o
+n5ebry
+neddf5
+n2ede
+n4edid
+n5ediga
+n4edir
+n4edit
+n2edo
+n4edu
+n3edy
+n1ef
+nefn3
+n4efy
+n1eg
+neg5in
+ne3h
+n3eidd
+n2eis
+n1el
+3nel.
+nel5yn
+3nenty
+ner3a
+nerch5
+n4erg
+n4erl
+3nert
+3nese
+4nesia
+n4esio
+nes4m
+3neso
+n2est
+3nesw
+n2esy
+neth5o
+n2eu
+neu3d
+n4euf
+neul4
+3new
+new5yll.
+newyn3
+n1f2
+nfadd4
+nf4am
+nfan3
+nfan5e
+nfan4t
+nfa5ol
+nf4at
+nfel2
+nff2
+nf4fa
+nff4o
+nffyn4
+nffynad4
+nf4id
+n4fil
+nfod4l
+n2fon
+nfon5a
+n5fonedi
+nf4ri
+nf4wy
+n2fy
+n5fyd.
+nfyd3a
+ng2ad
+ng5adwy.
+n4gai
+ngal4
+n3gam
+n3gar
+n4gau
+ng4ddy
+ngel4
+nghwyn5
+n2gi
+n2gl2
+n3glwm
+n4gly
+n5glym
+nglyn3
+ngn2
+ng3oe
+ngof3a
+ngol4ed
+ng3on
+ngop2
+n1gr
+ngr4a
+n2gw
+ng4wi
+ngwy5nas
+ngy3f
+n4gyn
+2n1h2
+nha3o
+nhar4
+nhaws4
+nheb5r
+nhe3na
+nhe3ne
+nhep2
+nh4es
+nho3ed
+nho5esi
+nho3n4a
+nhon4e
+nhudd4ed.
+nhu4e
+nhyc4
+nhyd2
+nhyl4
+nhym4
+n1i
+4ni4ad
+n5iald
+ni1b
+nib4a
+nib4e
+nibryd4
+ni1d
+nidd4
+ni5dde
+nid4e
+n3ie
+ni4et
+ni3eu
+n4iew
+ni3fed
+ni3fen
+ni4feryc
+ni3ffr
+ni3fw
+n2ig
+n5igam
+nige5na
+4nigiad
+n5igiad.
+n5igiada
+5nigiadw
+4nigion
+n5igion.
+5nigiont
+4n5igiwr
+nigl4
+4nigy
+ni3gym4
+nilead4
+nill5adas
+n5illio
+ni3lu
+ni3lys
+nin2
+ni3no
+nin4w
+ni3or
+ni3ra
+nir4e
+ni3ri
+ni4rw
+ni3rym
+nis3g
+ni3so
+nis3ty
+ni3sw
+ni3sy
+nith4e
+niw2
+niw4a
+ni4wc
+niw5eddas
+niw5edde
+niw5eddo
+niw5eddw
+niwl3
+niwl5e
+niwl5o
+niwl5w
+ni5ydd
+n2[idiaeresis]i
+n[idiaeresis]4yc
+n1l2
+nladr3
+nlin3
+nll2
+nllon4
+nl4lw
+n4llyn
+n2ly
+nly3na
+nly3ne
+n1m2
+nmolad4
+n1n2
+nn4al
+nn4ar
+nned4
+nneth4
+n3nh
+nni2
+nnif4
+nni4l
+nnill4
+nni4o
+nnis4
+nni4w
+n5nos4b
+nn4wy
+nny3na
+nny5ne
+nn4yw
+no4ada
+n3ob
+n2od.
+n2odo
+nod3r
+n2oe
+noe4o
+no3er
+3no4et
+n1of1
+nof4el
+n2ofy
+n1og
+nol5eg
+nom3
+n4omi
+n5ones
+n1or
+norch4
+nor4f
+2nos3
+n[odiaeresis]5es.
+np4et
+n1r2
+nre4o
+n1s2
+n2se
+n3sei
+ns3en
+ns3i
+ns4ic
+ns4ig
+n3s4il
+ns4iy
+ns5iyc
+n3siyn
+nsy3na
+nsy3ne
+nt3ad
+nt5af.
+nt5aid
+nt4ana
+nt3aw
+n2te
+n3tei
+nt3el
+nt3em
+nt3er.
+ntew3
+nth2
+n4tia
+nt5il.
+nt4in
+n3tis
+nt3oc
+nt3od
+nt5od.
+nt3oe
+n4t3or
+n1tr
+nt1w
+nt3yn
+nty3ra
+nty3r4e
+n1u
+nud2o
+nun4i
+nut1
+nw3af
+n3wait
+nw3an
+n3war
+nwar4ed.
+nw3as
+nwbl4
+nwb5le
+nwd3e
+n5wedd
+nw3edi
+n3wei
+nweithi5au
+nwelad4
+nwen5d
+nw4ia
+nw3id
+nwir4
+nw3ir.
+n3wis
+nw3o
+nwr5ei
+n4wy.
+nwybod4a
+n4wyc
+n3wyl
+n2wyn
+n4wyn.
+n3wyt
+nych3
+nyf2
+ny5fala
+ny5fale
+ny5falo
+nyff4
+nyf4n
+nyf4o
+ny5fod
+nyfr3
+n2yg
+ny3gy
+n1yl
+ny3lan
+ny3lu
+nym4a
+nym4y
+n5ynnau
+ny3n4od
+ny3ra
+nyrchafad4
+ny3ri
+n1ys
+n4ys.
+nys4g
+n3yw
+2o1a
+2o2b
+ob3ae
+ob4an
+ob5ant
+ob3ed
+ob3el
+ob5en.
+oben5y
+ob5er.
+obl3a
+obl5ed
+ob3ler
+obl5es
+obl3o
+obl3w
+o3b4ly
+ob3o
+obr1
+ob3yd
+oc1a
+oc5byn
+oc3e
+och3a
+och5an
+och5en
+ochl3a
+ochl5es
+ochl3o
+ochl3w
+och3n
+och4ni
+och3o
+ochr3
+och3w
+och3y
+2oci
+2ocr
+2oct
+2od3a
+od4ao
+odar4
+odd3a
+oddf5y
+odd5il
+oddiw3
+odd3r
+odd5ri
+4oddu
+odd3y
+odd5yd
+odd5yn
+odeb3
+o5debau
+o5debu
+od5edi
+od5eid
+od3el
+od3er
+od3i
+odl3a
+odl3ec
+odl5esi
+odl3w
+od5off
+2odog
+od4oga
+2odr
+odr3a
+odr5ec
+odr5em
+odr3o
+odr5wyd.
+od4ry
+odr5yc
+2odw
+od3wa
+od5wed
+od5wen
+od3yc
+od3yn
+od4ynn
+o1ec
+o4edd3
+oed3i
+o3edig
+oedl4a
+oed5lan
+oed5ra
+oeg3
+oel3c
+o1em
+oen3
+o3ent
+oer3
+oes3
+oesg4o
+oet5an
+oetr3
+2of.
+of3ad
+of3ai
+ofan3
+ofan5e
+of3ant
+ofa5ol
+of5ebi
+of3ed
+of3el
+of3en
+of4enn
+of3er.
+o4ferl
+o4fery
+of4f3a
+off3ed
+off5id
+off3w
+ofiad4w
+ofl3
+of3n
+of4na
+of4nd
+of4ne
+of4nf
+of1o
+of4odo
+ofr3a
+of3re
+of4rec
+of4red
+of4rem
+of4rer
+of5wyf
+of4yn
+ofy3na
+ofy3ne
+og1
+og3ai
+og2an3
+o4ganau
+o4ganu
+og3as
+og4edy
+og5elyn
+og3er
+og5erd
+og3es
+2ogf
+og3i
+2ogl
+ogl3w
+ogl3y
+2ogn3
+3og2o4f
+og5oru
+og3rwy
+o3gry
+og3yd
+ogyf4
+og4yl
+og5yrn
+o1h2
+oheb3
+oher4
+o1id
+oig1
+o1ir
+o1it
+ol1
+2olau
+ol4ce
+ol3d
+ol4da
+4oleu
+ol3eua
+ol4eued
+ol5euo
+ol4euwr
+olew3
+ol3i
+oll1
+oll3e
+oll5ed
+ol4lt
+oll5wy
+olo2
+o3los
+ol3s
+ol4sb
+2olu
+2olwr
+olw4y
+ol3wyd
+ol5wyno
+ol4yne
+ol4yni
+ol4yno
+ol4ynw
+2oma
+om4at
+2omb
+om2e
+om5eda
+om5edi
+om5eg.
+om3ei
+om3en
+om5isi
+2oml
+om4og4
+2omp
+om5pre
+on1
+on5ach.
+on5adu
+on3af
+o4n3ai
+4onair
+on3an
+o4n3au
+on5au.
+2onb
+on5cyf
+2ond
+on5did
+on2do
+2one
+on5edd.
+on3el
+onest3
+2onf
+ongl3
+ong2o
+ong3w
+on4gyr
+2oni
+2onn
+4onnu
+on5of.
+2onog
+on2t
+4onto
+on3w
+2o1o
+2op
+op3a
+op4ao
+op5aon
+opl3
+opr5ai
+op5ren
+or1a
+4orac
+or3ach
+or5aeth.
+or5aetha
+or3af
+or3ai
+or3an
+o4r3au
+or3aw4
+or3b
+or2c
+or3chw
+or4dd
+or5ddyn
+ord3en
+or5din
+or4d5yn
+or1e
+or2eb
+or4edd
+ore5ddy
+4oreg
+or4egw
+or4et
+or3fa
+orfa5na
+orfa5ne
+orff4e
+or3fo
+or3f4y
+2or3g
+or3i
+or3l
+or4mu
+or4my
+orn3a
+or3nel
+or1o
+or3of
+or4oh
+oron5a
+or3one
+or5oni.
+or5onid
+or5onir
+or5onit
+or5pws
+4orth.
+ort4i
+or4ty
+or5uwc
+or1w
+or5wah
+orw4e
+or4wel
+or5wgl
+or1y
+or3ydd
+2os
+os3a
+os4ana
+osb3as
+osb5ed
+osb3o
+osb3w
+osb3y
+os5eai
+osg3a
+os3gl
+osgo5e
+os3gor
+osg3wy
+os5iae
+os5ibi
+os2o
+os3odd
+os3ol
+os3on
+os3te
+os3tr4
+os4tu
+os3w
+os3y
+2ot1
+3ot.
+ot3e
+ot5esa
+oth3
+ots4i
+ot5sia
+o2u
+o1wc
+owg3
+owl5as
+owl3e
+o1wn
+owt5er
+o1wy
+o1yc
+oyw3
+oy4we
+[ocircumflex]r3f
+p1
+p2a
+pab5yd
+2p3ad
+2p3af
+2p3ai
+2p3an
+pa3od
+para3t
+par4c
+par3w
+past4
+p3au
+pawe5na
+2pec
+4p5edig
+p2ei
+peir4a
+p5eli.
+pel3y
+2pem
+pengl4
+pens4
+pen3t2
+pen3w
+penwy5na
+2per
+2pes
+pet2
+pe3ta
+p2h2
+pheir4a
+phen3t4
+phen5w
+phet2
+phe3ta
+phob4l
+phr4a
+phryf5
+p3ia
+pib1
+p3ie
+p3io
+p3iw
+p2l
+pla3na
+p4lau
+pl5eda
+p4lyc
+3plyg
+po4b4l
+pog4y
+pol3
+p2r2
+pr3as
+pryf3
+pr5ynn
+p2s
+ps4iw
+pt2
+p2ud
+p4usr
+pw2
+pwd3
+pwr1
+p4wy.
+pydr3
+p2yr
+r4abe
+r4abi
+rab5lyd
+rab3y
+rach5wy
+r4a4ci
+racs4
+r4a4ct
+r2ada
+r4add
+radd5ol
+rad4ri
+radwr4i
+r2ae
+raed4
+raeddad4
+r4aen
+ra5fann
+ra5f[aacute]n
+r4aff
+rag1
+ra4ge
+rag3o
+ra3gra
+ra4ha
+ra5hau
+r1ai
+4raidd
+ram3od
+ra5mor
+ra3m2w
+ran4d3
+ran2e
+r4anf
+ran3o
+r4anod.
+ra5phe
+r3ar3
+rar4c
+2r1as
+ras4ie
+ras3t2
+r3atao
+rat3e
+2r1au
+raw3e
+5rawes
+3rawi
+rawn3
+2r1b
+r2ba
+r3bar
+r4bec
+r4bem
+r4bent
+rb4er
+r4bes
+r2bl
+r4boc
+r4bom
+r4bont
+r4bwc
+r4bwd
+r4bwn
+rbyd3
+rc2a
+rc5adw
+rc5af.
+r3car
+rc3e
+rc4er
+r2ch
+rch3ad
+rch3an
+rch3ar5
+rch5eb
+r5chei
+rch3et
+rch3l
+r3chm
+rch3oc
+rch3oe
+rch3og
+r3chu
+r3chwa
+r3chwi
+rch5wyd
+r5chwyn
+rch3yc
+rchyf4
+rchym4
+r1cy
+2rd2
+r1da
+r3dai
+rdan3
+rd5au.
+r2dd
+rdd3ad
+rdd5as
+rdd5ell
+rdd5in
+rdd5iwy
+rdd3o
+rdd4od.
+r5ddodi
+r3dd4u
+r4ddu.
+rddw4
+rdd3yc
+r5ddychw
+rddyrch5
+r5ddyw
+r1de
+rd3i
+rd4in
+rd4ir
+r1do
+r5dod.
+r1dr
+rdro3
+rdro4ada
+r3dw
+r1dy
+rdy4n
+rd3yn.
+re3a
+r3ebai
+r3ebas
+r3ebe
+r3ebi
+rebl3
+r3ebo
+rech3
+rec3i
+4redd
+r5edd.
+r4edio
+r4edol
+r4edwr
+red4yn.
+re4fa
+refn5y
+ref3y
+r4egl
+r5egl.
+r4egog
+re5iau
+r4eic
+re5id.
+reidd5
+r4eig
+r4eil
+r4eine
+re5ir.
+re5it.
+re4iw
+r3ell
+r4emi
+ren4d
+r4eng3
+r4eni
+ren3in
+r4ennyd
+re1o
+r1er
+r4er4id
+rer5in
+restr3
+r4esw
+r4eua
+r4euo
+r2euy
+re4wi
+rew5id
+re5wn.
+rew5ynn
+2r2f
+r1fa
+r4f3ad
+r4faeth.
+r4faf
+r4fai
+rf4ao
+r4fas
+rf4at
+r4fau
+r3fedw
+rfel3
+rf3en
+rf4eny
+rf4ey
+r4ff.
+rff3i
+rff3l
+rff3o
+r3ffw
+rff3y
+rf3id
+r5fil.
+r3fl
+rf3lu
+rfodad4
+rf5ol.
+rf3on
+rfor2
+rf5ord
+r3fr
+r3fu
+rf1w
+rf5wis
+rfyn5yc
+rf4yr
+r3fys
+2r1g2
+rgal4
+rgan3
+r3ge
+rgel4y
+rge3na
+rge5ne
+rgo4f
+r1h2
+rhag5e
+rhag3l
+rhag3o
+rha3n4a
+rhan4e
+r4haw
+rh4es
+rhew5y
+rhif3
+rho4ec
+rhon5a
+rhost4ir
+rhugl5
+rhyf2
+rhy3n4a
+rhyn4e
+ri2
+2ria
+r4iaethu
+riaf3
+r4iag
+ri5agl
+r3iai
+r4i5aidd
+ri5all
+ri4an
+r5iant
+r3ias
+r4iaw
+ri5awd
+rib3e
+ribl3
+rib3w
+rib3y
+ri5can
+r4ida
+ridd3
+ridd5y
+r4idi
+rid4yllau
+2rie
+ri3ei
+rif1
+rig3
+r4igo
+ri3i
+rin5dir
+rin3e
+ringl5
+r4ini
+r4inl
+2rio
+r3ioc
+ri5odad
+ri5odaf
+ri5odai
+ri5odan
+ri5odasai
+ri5odasan
+ri5odase
+ri5odasi
+ri5odasoc
+ri5odasom
+ri5odasw
+r3iodd
+ri3ode
+ri3odi
+ri5odoc
+ri5odod
+ri5odom
+ri5odon
+ri5odwc
+ri5odwn
+ri5odwy
+ri5ody
+r4ioe
+r3iom
+ri3ong
+r3iont
+r1ir
+ris4g
+risgl3
+rist3
+3r4ith
+2riw
+ri4wa
+riw3l4
+r5iwr.
+2r3iy
+r1l2
+rla3na
+rla3ne
+r3lew
+rl3ia
+rl3ie
+rl3io
+r3ll
+r4ll.
+rll4e
+rllen3
+rl4l4w
+rl5og.
+r3lon
+rludd4
+r3lw
+r2lym
+rlyn3
+rl5yn.
+r1m2
+r2ma
+rm4ac
+rm3i
+rm4il
+r2mo
+rm4od
+r3my
+2r2n1
+r4nai.
+r4nau
+rn4es.
+rn4esa
+r5nest
+rng4e
+rn3i
+rn5iae
+rn4ii
+rn5iol
+r3n2[idiaeresis]1
+rn4os
+rn3y
+rn4yw
+2roa
+4road
+4roau
+rob3l4
+roch3
+rochl4
+ro3cr
+rodd3
+r4odr
+rod5rw
+ro4ea
+roed3
+ro4eo
+ro3er
+r2of
+rof3l4
+rofun4ed.
+rof3w
+r3og.
+r4ogae
+ro4ge
+rol3
+r1om3
+r4onau
+rongl4
+rong5lwy
+ron3i
+r4os.
+r4osf
+rosg4
+ros3o
+2rot
+r[odiaeresis]5edi
+rp2
+r1pa
+rpar3
+r1pe
+rp5ech
+rp5em.
+r2pen
+rp5ent
+rp5er.
+rp5esi
+rp3i
+rp3o
+rp3wy
+rp3y
+r1r2
+r3ra
+rr4og
+r1s2
+rs4ai
+r4sau
+r2s3en
+rs3i
+rs4in
+rs5li.
+r2s3t2
+r2sy
+r1t2a
+r4tau
+r4ted
+r3teis
+r4ten
+r4tes
+rth3a
+rth4eg
+r3thin
+rth3la
+rth3o
+rth5ol
+rth5ru
+r5thryc
+r4thw
+rth5wyon.
+rth5ydd
+rt4iy
+r1tr
+rtr4a
+rt5rwy
+rt2u
+rt3y
+rub4a
+r3uc
+rudd3
+3rudd.
+run4i
+r1us
+rw2a
+rw3ad
+rw3af
+r3w4ag
+r3wait
+rwb5an
+rwbl3
+r1wc
+r5wdenn
+rwedd3
+r4weddog
+r4weddol
+r4w3eid
+r3wel
+r3wer
+r2wg
+rw5hel
+rw1i
+rw3in
+r3wl
+r4wnc
+rw4ni
+rw4n3o
+rwobr4
+rw3od
+rw5old
+r1wr
+rwr5es
+rwr4iaetho
+rw2y
+r4wyb
+r5wydden.
+rwydd4iad4u
+r4wyde
+r4wydo
+rwydr3
+r4wydy
+3rwym
+rwyn3
+r4wys
+3ry.
+3rybl
+ry3bo
+rych5wai
+r2yd
+r4yd.
+ry5dano
+rydd4on.
+rydl4
+ry3f4a
+ryf2e
+ry3fer
+ryf4od
+ryl3a
+ryl2e
+ryl5it
+rym2r3
+ryn3a
+rync4
+4rynd
+ryn3e
+ryn3f
+ryng5a
+4rynn
+rynod4
+ryno5ded
+ryno5der
+ryn3yc
+rys3b
+rys5ba
+rysg5w
+rysg3y
+ry3wa
+ryw3i
+s1
+sach3
+saf3a
+saf3o
+san3a
+san3e
+san3o
+sarf5a
+sat4a
+sath4
+sathraw4
+s3au
+s[aacute]4it
+s2b2
+sbad4w
+s4bai
+s3bet
+sb3iw
+sb5iyc
+s3bl
+sbr5io
+sd4or
+se2
+sec4an
+sedd3
+3sef
+se5ion
+sen5ol
+senw3
+s4erc
+serch5
+s4eri
+s2et
+sf4am
+sfedd4
+sff4y
+sf4wy
+sf4yr
+s2g
+s5g4adr
+sg3adw
+s3gam
+sg3an
+sgar5a
+s3gaw
+s3geda
+s3gede
+s4gedig
+s5gedo
+s5gedw
+sgel4
+sg5en.
+s3ge3na
+sge5ne
+s4gia
+s4gl.
+sgl3a
+sgl3o
+s3gn
+sg3ni
+sg3od
+sg4od.
+sgo4g3
+sg4ol
+sg3om
+sg3on
+sg5oty
+sg5rwy
+sg5ryw
+s4gwc
+sg3wn
+s4gyc
+sgy4f3
+sgy3na
+sgy5nes
+2si
+s5ial.
+s5ialu
+si4am
+5siand
+s4iar
+s3id3
+sid4a
+s3ie
+s4iet
+s2ig
+s3ig.
+si4ga
+s3ige
+sigl3
+5sigl.
+s3igr
+s5igyn
+sil4f
+sins4
+s3io
+s3ir
+s3it
+si4wr
+s2iyn
+2s2[idiaeresis]1
+2sl2
+sl4au
+slo3na
+slo3n4e
+s3ly
+slyw4
+sm2
+sm4ar
+sm4er
+smwyt5haso
+s4nau
+sn2e
+sneg2
+s2n3i
+sn4ob
+s3oc
+sodd3
+sod4l3
+s3oe
+sof4l
+2s3og3
+s3om3
+son3
+s4on.
+s4onau
+son4deba
+son4der
+s3one
+s4ong
+sra3na
+sra5ne
+s2t
+st3ac
+s4tade
+s4taf
+st4am
+st2an
+st3as
+s4tau
+st5awc
+s4tec
+s4ted
+s4tei
+s4t3em
+s4ten
+s4tes
+st3f
+s5tiro
+stl3o
+st5lyt
+st2o
+s3tod.
+sto3ra
+sto3r4e
+st4ra
+s3tra.
+str3ec
+str3es
+str3oc
+str3ol
+s4tr3w
+str3yc
+st2u
+st3ur
+st5us.
+s5twyi
+styr3
+s2u
+sur3
+s3us
+sw2a
+s3wc
+swcr3
+s3we
+s4wed
+sw5edd
+swen3
+2swi
+swmp3
+s3wyf
+swyn3
+swy4r
+s2y
+s3yc
+s5ych.
+s3yd
+syf4l3
+2syg
+syll3a
+syllt3
+sym4l3
+symudad4
+2s3yn.
+syn4fe
+s3yr
+syr2a
+syr2e
+s3ys
+3syt
+s4ywa
+1tac
+tach3
+3tad4l3
+tad3r
+t1af
+ta4fa
+taf4l
+tag3
+t1ai
+t3aid
+t5aliae
+tal2m3
+t1an
+4tanc
+tan3e
+tang5n
+tan3o
+tan3w
+t3ao
+3tar4d
+tar4f
+t1as
+tat1
+t1au
+tawl3
+t1b
+t3ch
+t1ec
+t1ed
+tedd3
+4teg.
+4tegio
+t3eidi
+teimlad4w
+tel4y
+t3em.
+t4emi
+t1en
+ten4d
+te4ne
+terf4
+terfyn5
+t1es
+t4esa
+tes4io
+tet4a
+3tew
+4tew.
+4tewc
+tew5id
+t1f
+tff2
+tff4e
+tfod4
+tfydd4
+t1g2
+tg4af
+tg4an
+tg4en
+tg4er
+tgl4a
+tgn2
+t2gor
+t5gor.
+t5goria
+t5gorn
+tg4wc
+tg4wy
+tgy3w
+t2h
+thalad4
+thal4m3
+thang5n
+th4ar
+thar4f
+th4at
+that5y
+th1e
+th4ef
+th5ell
+therfyn5
+thet4
+thl3a
+thl5ent
+th5let
+th3n
+th5nod
+th1o
+th5old
+thollt4
+thon4e
+thorad4
+thr3ac
+th3red
+thr5ent
+thrid4
+thro3f
+th5rwf
+thryd4
+thry5da
+th3ug
+th3um
+th3un
+th3us
+th1w
+th3wa
+th4wl
+th3wyd
+th3wyf
+thwysg4
+th3ych
+thydd5
+th5yma
+thyrf4au
+thyr3w
+thy4w
+2t1i
+t3ia
+tid3
+t3ie
+t3in
+ting3
+t4ino
+tion4
+t4iono
+t[idiaeresis]5ol.
+tl3a
+tl4ae
+tl1e
+tl4en.
+tl3on
+tl3wy
+t3lyd
+t1n2
+t3och
+t4od.
+t3odd
+to4ec
+to3edi
+to4em
+to3esi
+tof3
+t3og3
+3tois
+t2ol
+tollt4
+tol3y
+t1om
+t3om.
+t1on
+ton4e
+t3ont
+3tor
+tor2a
+tor4c
+t3os
+to4wc
+to4wn
+tra3c
+tra3dd
+tr3adw
+tr3af.
+tra3g
+tra3na
+tra5ne
+tr3ant
+3traw
+tr3ed
+3tr4ef
+tref5a
+tref3l
+4treg
+tr3em.
+tr3ent
+3trew
+tr3id4
+tr5ig.
+tro4ada
+tr3odd
+tro5fa
+tr3ola
+tr3olo
+tr3olw
+tron4o
+tr3ont
+2trw
+tr4wm
+tr3wn
+tr5wyd.
+t5r4wydd
+tr3wyf
+try3da
+tryd4y
+try3f
+try3l
+tr5yn.
+3tryw
+ts2
+ts5ach
+t1se
+ts3i
+3tud
+tudr4
+1tum
+t1un3
+1tur
+t4urm
+tw2
+t3wai
+t1wc
+t1wn
+t1wr1
+twr4n
+3twya
+t3wyd
+3twye
+t3wyf
+tw4ym
+3twyo
+twysg4
+3twyw
+t1yc
+t1yd
+tydd5y
+ty5gar
+ty3li
+tymp4
+4t3yn.
+tyng5ad
+1tyr
+tyr2a
+tyr4es
+ty3wr
+2u1a
+ual3
+u2and
+u4ane
+u3ar
+u3aw
+ub1
+2uc
+uch1
+uch3e
+uch5ed
+ud3ad
+u5dale
+udd1
+udd3a
+udd4eg
+udd3el
+udd3f
+udd3i
+ud5eir
+ud3er
+ud3i
+ud1l
+udr3
+ud5rwydd
+ud2w
+ud3wn
+ud3wr
+ud3yn
+u1e
+uedd3
+u4estai.
+u4estau
+u4estwr
+u4esty
+uf5au.
+uff4y
+uf3y
+ug3ad
+ug3af
+ug3en
+ug3i
+ugl3a
+ugl3e
+ug3lw
+ugn3
+ug1o
+ug1u
+ug1w
+ug3y
+u1h2
+u1i
+ul3ad
+ul3af
+u5lan.
+u5lann
+ul3ant
+u5lath
+ul3d
+u2l1e
+ul1f
+ul5igr
+ull1
+u1lo
+ul3oc
+ul3od
+ulon3
+ulon5e
+ul1u
+ul1w
+ul3yc
+u3lyd
+un1
+un4edy
+un5ell
+un5es.
+un3i
+unig3
+un5od.
+un2ol
+un5ol.
+2u1o
+uog3
+u3os3
+up2
+ur1
+urb4w
+ur5ddu
+ur3e
+ur5fau
+ur4fl
+ur2gy
+4urn.
+urof4
+ur2s3
+ur4ty
+ur4ud
+u5rwydd
+ur3y
+ur4yw
+1us.
+us4edda
+us5end
+usg1
+4usi.
+us3o
+3usr
+us3ter
+us3tod
+us3tr
+ut3a
+ut1e
+uth4r3
+uth3u
+uth4un
+ut3o
+utr3
+2u1w
+u2wc
+uwch3
+u1y
+2wa
+wac5ew
+wadd3
+wad2n3
+w5adwy.
+waen4i
+waer2
+wag1
+w1ai
+w3ai.
+w3aid
+w2air
+w3ais
+w4ait
+wallt5
+w4an.
+wan3a
+wan3e
+wan3o
+war5ddr
+war3e
+war4edd
+war5ia
+warth4
+wart5hai
+wart5has
+wart5hi
+wart5hw
+war3w
+3w4as.
+w3ase
+was4g
+w3asi
+w3aso
+w4as4t
+w3asw
+wat5er
+w1au
+2wb
+wbl5es
+w2c
+2wca
+wc4ed
+wch1
+4wchu
+2wci
+wc5wll
+wc4yn
+2wd
+wdd3eg
+w5ddew
+wd2e
+wd3ed
+wde3n4a
+wde5n4e
+wd3i
+wd4ih
+wd3ly
+w3dod.
+wdr1
+wd4ra
+wdry4
+wd2u
+w1eb3
+2w1ec
+2w3ed.
+w4eda
+4weddf
+4weddi
+4wedi
+w3edig
+we4gi
+wegr4
+wein3
+well5ti
+wel3o
+welw5l
+2w1em
+wen3au
+wen4d
+2w3ent
+wenwyn5
+wen3y
+2w3er.
+wer4i
+wer5id
+w4ers
+wer4yd
+2wes
+4w3esi
+w4esir
+w4esit
+5west.
+west4ai
+w1et
+w4eth
+2weu
+weu2g
+weun3
+2wf2
+w1fa
+w1fe
+wff3a
+w1fi
+wf4id
+w1fo
+wfor2
+w1fw
+wf4wy
+w3fy
+wg1
+2wg.
+w5gig.
+2wgl
+wg3n
+2w1h2
+w3he
+w3hw
+2wi
+wi4an
+wib5an
+wibl5a
+wib5ol
+widl3
+wi4fr
+3wig1
+wigl5e
+wil3
+win5gada
+win5gade
+win5gadi
+win5gado
+w4ione
+wir3
+wisg3
+w1it
+3wiw.
+wiw4e
+2wl
+3wlad.
+wlan3
+wl4co
+wl3in
+w4lip
+wll5yn
+wl5ws.
+wl4yc
+2wm
+wm3a
+wman3
+wm4br
+wm2i
+wm5iai
+wm5ian
+wm4wl
+wn1
+wn5adwy.
+wn2ae
+2wnd
+wn3de
+wn3di
+wndr3
+wn4ei
+wn4[ecircumflex]l
+2wn3g
+wngl4
+wn3in
+wn3l
+wn2o
+w4n3oc
+wn3odd
+wn3og
+wn3ol
+w4n3om
+w4n3on
+2wnw
+2w1o
+w2od
+w3od.
+w3odd
+w2ol
+w3ol.
+w3olae
+w2or
+2wp
+wp3e
+wpl1
+wp5wrd
+wr5aet
+wrb5yn
+wrc2
+wr3ca
+wr4ce
+wr4ch3
+wr4ci
+wr5cwd
+2wrd
+wr5dei
+wr3ed
+wreig3
+wr5esi
+wr3f
+wr5fau
+wr4fi
+4wri.
+wrid3
+wr3id.
+wr3ie
+wr3l
+wr4ll
+wr3n2a
+wrn4es
+wr3no
+wr1o
+wr2t
+wrth3
+wr1w
+wr4ws
+w5rwydd
+wry4w
+ws5bre
+ws3e
+ws3g
+ws4gl
+ws4ig
+ws4og
+ws4ta
+wst5an
+ws5ter.
+wstr3
+ws4us
+ws3wa
+2wt
+wt3a
+wtan3
+wt3em
+wt5ery
+wth1
+4wth.
+wth3w
+wt3od
+wt3wy
+wt3y
+2w1w
+2wya
+wy5alc
+4wybr
+wybr5y
+wy3bu
+w1yc
+wych3
+wyd3a
+2wydd
+wydd4ly
+wydd4yd
+wydr3o
+2wydy
+2wye
+wy3fr
+wy3h
+2wyi
+2wyl
+wyl4deb
+wyll3a
+wyn5ad.
+4wynd
+wyn3eg
+wyn3f
+wyn3g4
+wy4ni
+wyn3o
+wyn3y
+2wyo
+wyr3ad
+wy3ran
+5wyrdd.
+wyrl3i
+2wys
+2wyt
+2wyw
+wy3wr
+wy3wy
+2wyy
+2y1a
+y3ar3
+y4ar.
+y4arn
+2yb
+yb4ac
+yb5edd
+yber4
+ybl1
+yb3ly
+ybr1
+ybr3i
+yb3w
+ych1
+ychan5
+ych4anwr
+ych5ei
+ych3r
+4ychwe
+ych3wy
+ychwy5na
+ychwy5ne
+ycl3
+2yd.
+2yda
+yd3ad
+yd4al
+yd2an3
+y3dana
+y3dane
+yd3ant
+y5danw
+y3dar
+yd3as
+yd3au
+ydd3
+ydd5an
+yd4de
+yd4df4
+yd4di4
+ydd4in.
+ydd4of
+ydd5yn.
+yddy5ne
+ydd4ysg
+2yde
+y3deb
+yd3ed
+yd4eddau
+yd3ei
+yd3er
+yd4eu
+yd5ffu
+ydfwr3
+ydfyn3
+yd3i
+yd1l
+yd4ma
+yd2ne
+ydne5b
+2yd3o
+yd4od.
+ydol3
+yd4os
+4ydrau
+ydr3ec
+ydr3em
+ydr5esid
+yd3rew
+yd4ri
+4ydria
+ydr3oc
+4ydrol
+ydr5wyd.
+yd5rwydd
+4ydry
+ydr3yc
+2ydw
+yd3wa
+yd5wed
+ydweithi5ol
+ydwel5e
+yd3wr
+yd1y
+ydy4l
+y1e
+y3el
+y4era
+y4ern
+2yf1
+y4f3ag
+yf3ai
+yfan3t
+yf3are
+yf3arh
+yfar5wa
+yf3eda
+yf3ede
+yf3edi
+yf3edo
+yf3edw
+yf3ei
+yfel3
+yf5erf
+yfer3n
+yf5esi
+yf5ewi
+yff1
+yf4fa
+yf5fait
+yf5fei
+y4ff3i
+yff5in
+y4ffl
+yffr3a
+yffro5ed
+yffro5em
+yffro5en
+yffro5wc
+yffr3w
+yff3ry
+yf3i
+yfl4ed
+yflo3e
+yf3ne
+yf3no
+yf3ny
+yf3o
+yf5od.
+yfogl4
+yf5rait
+yfra5ne
+yf5ryw
+yf3u
+yf5wng
+yf3yg
+yf5yn.
+yfy3na
+yfy5ne
+yfyng5
+yf4yt
+yg1
+yg3a
+yg5adu
+yg4ar
+ygeg4
+yg4eid
+yg3i
+yg4il
+3ygin
+ygl3a
+ygl3o
+ygl3w
+ygl3y
+ygn3
+yg3o
+yg4oe
+yg4of
+ygr1
+ygrad4
+yg5wyd
+y4gyc
+4ygyd
+y1h2
+y2he
+yhe3i
+yhe3w
+y1i
+y3ie
+yl3ad.
+yl5adwy.
+yl3af
+ylan3
+yl3ant
+y5law.
+2ylc
+ylch3w
+yl4dera
+yl1e
+yl1f
+y3lin
+y4lit
+yll5ad.
+yll3e
+4yllf
+yll5ida
+yll3o
+yll3w
+yll3y
+yl5nos
+yl3oc
+yl3od
+yl3on
+yl5ore
+y4lu.
+4ylwe
+yl3wy
+yl1y
+ym5ait
+ym4al
+ym5an.
+yman5t
+ymar5w
+ymbl2
+ym5edr
+ym4eri
+ym5es3u
+3ymg
+ym3heu
+ym2le
+ym2li
+ymlo5ne
+ym4oli
+ym3on
+ymp3a
+ym4pi
+ymp5od
+ym3pr
+ymra5ne
+ymr5ig
+ymro5e
+ym4ru
+ym3se
+ym4um
+5ymwyb
+ym3y
+ymyn5y
+ym5yra
+ym5yre
+ym5yri
+ym5yro
+ym5yrw
+yn4ada
+yn3ae
+yn3af
+yn3ai
+yn3an3
+ynas3
+2yn3au
+yn4aw
+yn5byn
+ync5ed
+yn3dir
+yn4eb
+yn3ec
+yn3ed.
+yn3edd
+yn2eg
+yn3ei
+yn3em
+yn3en
+yn3er
+y3nesa
+y4nesau
+2ynf
+ynfyd3
+2yng1
+yn4ge
+yng5er
+yn3gl
+yniaw4
+yni4d
+yn3i4f
+y3nig
+yn5igy
+yn3il3
+yn3n
+yn1o
+yn5o5ad
+yn5odd
+yn4odi
+yn4ody
+yn3oe
+yn3os4
+2ynr
+ynt1
+ynt4a
+yn4te
+yn4ti
+yn4to
+yn4tu
+yn4ud
+yn1w
+yn3wa
+yn2w4e
+yn3wy
+yn4wyr
+yn1y
+yn2yc
+ynydd5
+y1o
+ypl3a
+ypl3e
+ypl3o
+ypl3w
+yp3ly
+yr3ae
+yr3af
+yra3na
+yra3ne
+yr3ant
+y4r3au
+yr4ch
+yrch3e
+yrch3o
+yrch3w
+yrch3y
+yr4dd3
+yr5ddyd
+yr1e
+yr2ei
+yr5el.
+yren5d
+yrf3e
+yr3ff4
+yr4fu
+yrf5yd
+y4ria
+yr3id
+yr2l
+yr3ly
+yrn3
+yr1o
+yr5ol.
+yr2s
+yr1w
+yr5way
+yr1y
+2ysa
+ys3aw
+2ysb
+ysb5[idiaeresis]w
+ys4bl
+ysb3yd
+2yse
+ys5etl
+2ysf
+4ysgar.
+ys5garai
+ys5garasa
+ys5garia
+ys5garwy
+ysge4
+ysgl4e
+ysg5lw
+ys4gn
+3ysgr
+ys4gy
+2ysi
+ys5ni.
+2yso
+ys3od
+4ysol
+ys5ol.
+ys3ta
+4yste
+yst5eb
+ys5ted
+ys3ter
+ys4try
+yst4w
+ys3u
+2ysw
+ys4we
+ys4wi
+2ys3y
+ys4yg
+yt3ad
+yt1e
+yth3a
+yth3e
+ythi3e
+yth3l
+yth3o
+yth4re
+ythr5ec
+ythr5ed
+ythr5es
+yth5reu
+ythr3o
+yth5rwb
+ythr5yc
+yth5ur
+yth3w
+yth3yn
+yt5iro
+yt3o
+ytr2
+yt3ras
+yt3s
+ytw5ad
+yt3wy
+yt5ysa
+2yw
+yw4ae
+y3wait
+y1wc
+y3wedd
+y5weddia
+yw5eg.
+y4wel
+yw5en.
+yw3es
+yw1g2
+y4wia
+yw3id
+y4wio
+y4wir.
+y1wn
+yw3ol
+y2wr1
+ywr4a
+ywr5ain
+y4wyc
+y3wyf
+ywy3na
+ywy5ne
+y1y
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-cz.hyp b/Master/texmf-dist/tex/context/patterns/lang-cz.hyp
new file mode 100644
index 00000000000..7186b068c55
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-cz.hyp
@@ -0,0 +1,53 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: czhyphen.tex czhyphen.ex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='cz'>
+% <sourcefile>czhyphen.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Czech language</title>
+% <copyright>
+% <year>1991</year>
+% <owner>Karel Horak</owner>
+% <comment>List of exceptions</comment>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Pavel Sevecek (\v{S}eve\v{c}ek) (pavel@lingea.cz)</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% <!-- samples>
+% <sample>au-to-ma-tic-ký</sample>
+% <sample>bram-bo-rák</sample>
+% <sample>da-ta-bá-ze</sample>
+% <sample>kr-ka-vec</sample>
+% <sample>Kro-me-ríš</sample>
+% <sample>ob-hos-po-da-ro-vat</sample>
+% <sample>rem-dich</sample>
+% <sample>scvrk-nout</sample>
+% <sample>za-les-nit</sample>
+% <sample>že-žu-lic-ka</sample>
+% </samples -->
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+koe-fi-ci-ent
+koe-fi-ci-en-ty
+pro-jek-[ccaron]n[iacute]
+[uacute]hlo-p[rcaron][iacute][ccaron]-ka
+[uacute]hlo-p[rcaron][iacute][ccaron]-ky
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-cz.pat b/Master/texmf-dist/tex/context/patterns/lang-cz.pat
new file mode 100644
index 00000000000..5678c80e0ff
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-cz.pat
@@ -0,0 +1,3684 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: czhyphen.tex czhyphen.ex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='cz'>
+% <sourcefile>czhyphen.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Czech language</title>
+% <copyright>
+% <year>1991</year>
+% <owner>Karel Horak</owner>
+% <comment>List of exceptions</comment>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Pavel Sevecek (\v{S}eve\v{c}ek) (pavel@lingea.cz)</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% <!-- samples>
+% <sample>au-to-ma-tic-ký</sample>
+% <sample>bram-bo-rák</sample>
+% <sample>da-ta-bá-ze</sample>
+% <sample>kr-ka-vec</sample>
+% <sample>Kro-me-ríš</sample>
+% <sample>ob-hos-po-da-ro-vat</sample>
+% <sample>rem-dich</sample>
+% <sample>scvrk-nout</sample>
+% <sample>za-les-nit</sample>
+% <sample>že-žu-lic-ka</sample>
+% </samples -->
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a2
+.a4da
+.a4de
+.a4di
+.a4do
+.a4d[eacute]
+.a4kl
+.a4ko
+.a4kr
+.a4ku
+.ale3x
+.a4ra
+.a4re
+.a4ri
+.a4ro
+.a4ry
+.a4r[aacute]
+.a4sa
+.a4se
+.a4so
+.as3t3
+.a4sy
+.a4ta
+.a4te
+.at3l
+.a4to
+.a4tr
+.a4ty
+.a4ve
+.b2
+.c2
+.ch2
+.cyk3
+.d2
+.dez3
+.d4na
+.dne4
+.dne[scaron]4k
+.d4ny
+.dos4
+.d4ve
+.d4v[ecaron]
+.d4v[iacute]
+.e2
+.e4ch
+.e4ko
+.es3k
+.es3t
+.e4ve
+.f4ri
+.g2
+.h2
+.h4le
+.h4ne
+.i2
+.i4na
+.i4ni
+.i4no
+.is3l
+.j2
+.j4ak
+.je4dl
+.j4se
+.j4zd
+.j[aacute]d4
+.k2
+.k4li
+.k4ly
+.k[rcaron][iacute]3d
+.l2
+.le4gr
+.li3kv
+.m2
+.mi3st4
+.moud3
+.na3[ccaron]4
+.ne3c
+.ne[ccaron]4
+.ne3[scaron]
+.ni2t
+.no4s3t
+.n4vp
+.n[aacute]1
+.n[aacute][rcaron]4k
+.o2
+.o4b[eacute]
+.ode3
+.od3l
+.od3r[aacute]
+.o4ka
+.o4ko
+.o4na
+.o4ne
+.o4ni
+.o4no
+.o4nu
+.o4ny
+.o4n[ecaron]
+.o4n[iacute]
+.o4pe
+.o4po
+.o4se
+.o4sl
+.os4to
+.os3t3r
+.os4t[ecaron]
+.ot3r[aacute]
+.ot3v
+.o4t[iacute]
+.o4t[rcaron]
+.ov[ecaron]4t
+.o4za
+.oz3do
+.o4zi
+.o4zo
+.o4zu
+.o4[scaron]k
+.o4[scaron]l
+.o4[zcaron]i
+.p2
+.pa4re
+.pa3t[rcaron]
+.polk4l
+.po3[ccaron]4
+.p4ro
+.p4r[yacute]
+.p4se
+.pu3b
+.r2
+.rej4
+.re3s
+.ro4k
+.roze3
+.roz3r
+.ru4dl
+.s2
+.s4ch
+.s4ci
+.sem4
+.se3pn
+.s4ke
+.sk4l
+.s4k[aacute]
+.s4le
+.s4na
+.s4ny
+.s4pe
+.s4po
+.st2
+.s4t[aacute]
+.s4[zcaron]i
+.t2
+.u2
+.u4ba
+.u4be
+.u4bi
+.u4bo
+.u4de
+.u4di
+.u4do
+.u4du
+.u4d[iacute]
+.uh4n
+.uj4m
+.u4ko
+.u4ku
+.ul4h
+.u4ma
+.u4me
+.u4mi
+.u4mu
+.u4ne
+.u4ni
+.u4pa
+.u4pe
+.u4pi
+.up4n
+.u4po
+.u4pu
+.u4p[aacute]
+.u4p[ecaron]
+.u4p[iacute]
+.u4ra
+.u4ro
+.u4r[aacute]
+.us2
+.u4so
+.u4st
+.u4sy
+.u4s[iacute]
+.ut2
+.u4vi
+.u4ze
+.u4[ccaron]e
+.u4[ccaron]i
+.u4[ccaron][iacute]
+.u4[scaron]e
+.u4[scaron]i
+.u4[scaron]k
+.u[scaron]4t
+.u4[scaron][iacute]
+.u4[zcaron]i
+.u[zcaron]4n
+.u4[zcaron]o
+.u4[zcaron][iacute]
+.v2
+.va4dl
+.v4po
+.vy3
+.v4z[aacute]
+.v[yacute]1
+.v4[zcaron]i
+.y4or
+.y4ve
+.z2
+.za3
+.zao3s
+.zar2
+.za[ccaron]2
+.zd2
+.z4di
+.z4dr
+.z4ky
+.z4mn
+.z4no
+.z4nu
+.z4n[ecaron]
+.z4n[iacute]
+.z4pe
+.z4po
+.z4t[rcaron]
+.z4ve
+.z4vi
+.[ccaron]2
+.[ccaron]4te
+.[eacute]2
+.[iacute]2
+.[oacute]2
+.[scaron]2
+.[scaron]e3t
+.[scaron]4ka
+.[scaron]4ke
+.[scaron]4ky
+.[scaron]4[tcaron]o
+.[scaron]4[tcaron][aacute]
+.[uacute]2
+.[uacute]4d[uring]
+.[zcaron]2
+a1
+2a.
+aa3t2
+ab3lon
+ab4l[yacute]
+ab3ri
+ab4sb
+ab2st
+ac4ci
+a2d
+a3da
+a3de
+a3di
+ad2la
+a4dli
+a4dl[aacute]
+a4dl[eacute]
+ad4me
+ad4mu
+a3do
+ado4s
+a3d3ra
+ad3ri
+a3dr[zcaron]
+a3du
+a4du[zcaron]
+3a3dva
+ad3vo
+a3dy
+a3d[aacute]
+a3d[eacute]
+a3d[ecaron]
+a3d[iacute]
+ad4[uacute]z
+ad4[uacute][rcaron]
+a3d[uring]
+a3d[yacute]
+ae4vi
+afi2a
+a2g
+a3ga
+ag4fa
+a3go
+ag3ro
+a3gu
+a3g[aacute]
+ah4li
+ah3v
+a2i
+a3in
+ai4re
+a3iv
+a2jd
+a2jm
+aj4me
+aj2o
+a2k
+a3ke
+a3ki
+a3kl
+ak4ni
+a3ko
+a3kr
+a3ku
+a3ky
+a3k[aacute]
+a3k[eacute]
+a3k[oacute]
+a3k[uring]
+a3k[yacute]
+al4fb
+al4kl
+al4tz
+al3[zcaron][iacute]
+am4bd
+am4kl
+am4nu
+amo3s
+am4[zcaron]i
+a4nae
+a4name
+an4dt
+ane4sk
+aneu4
+an4sc
+an4sg
+an4sl
+an4sm
+an2sp
+an4sv
+an4t[ccaron]
+an4[zcaron]h
+ao4ed
+ao4hm
+ao4st[rcaron]
+ao4t[ccaron]
+ap4r.
+a4pso
+ap3t
+a4p[rcaron].
+a2r
+a3ra
+ar4dw
+a3re
+a4rer
+ar4gl
+a3ri
+ar4kh
+a3ro
+a4rox
+ar3st
+a3ru
+ar2va
+a3ry
+a3r[aacute]
+a3r[oacute]
+ar3[scaron]2
+ar4[scaron]r
+a3r[uring]
+ar[uring]s3
+a3r[yacute]
+a2s
+a3sa
+a3se
+a3sh
+a3sin
+as3n[aacute]
+a3so
+as3pi
+as4tat
+a4stk
+as4tm
+a4stru.
+as3tv
+a3su
+a3sv
+a3sy
+a3s[aacute]
+a3s[eacute]
+a3s[iacute]
+a3s[uring]
+a2t
+a3ta
+at4ch
+a3te
+a3ti
+a4tio
+at4kl
+at3lo
+a3to
+a3tr
+at3re
+at3ron
+at3rov
+a4tru
+at4r[aacute]
+at4th
+a3tu
+a3tv
+a3ty
+a3t[aacute]
+a3t[eacute]
+a3t[ecaron]
+a3t[iacute]
+a3t[oacute]
+at1[rcaron]
+a4t[rcaron][iacute].
+a3t[uring]
+a3t[yacute]
+a2u
+au4gs
+a3uj
+auj4m
+aus3t
+a3u[ccaron]
+2av
+av3d
+av4d.
+av3lo
+a4vlu
+a4vl[iacute]
+av3t
+av4ti
+2ay
+ay4on
+az3k
+az3la
+az4l[eacute]
+az3ni
+a3zp
+a2[ccaron]
+a3[ccaron]a
+a3[ccaron]e
+a3[ccaron]i
+a3[ccaron]l
+a[ccaron]4m[aacute]
+a3[ccaron]o
+a3[ccaron]u
+a3[ccaron][aacute]
+a3[ccaron][iacute]
+a3[ccaron][uring]
+a2[ncaron]
+a3[ncaron]o
+a3[ncaron]u
+a[rcaron]e4k
+a3[rcaron][iacute]
+a4[scaron]pl
+a4[scaron]py
+a2[tcaron]
+a[uacute]3t
+2b.
+3ba.
+ba4br
+ba4chr
+ba3ka
+ba4se
+2b1c
+b1d
+be4ef
+be4et
+bej4m
+be3p
+beu4r
+be2z3
+beze3
+b1h
+1bi
+bi2b3
+bis3
+bist4
+bi4tr
+b1j
+2bk
+3bl.
+bl4bl
+b2lem
+b2les
+3blk
+b4l[aacute]n
+b2l[eacute]m
+b1m
+2bn
+1bo
+bo4et
+bo4jm
+bo4ok
+bo4tr
+bou3s
+bo4[scaron]k
+b2ral
+b2ran
+2bri
+b4rodit
+b4rou
+broz4
+b2ru
+b3ru.
+b3rub
+b2r[aacute]n
+2b1s2
+bs3tr
+2b1t
+bt[aacute]h4
+bu2c
+bu4en
+3by.
+bys3
+by4sm
+by4t[ccaron]
+by4zn
+b2z
+1b[aacute]
+2b1[ccaron]
+b[eacute]4rc
+1b[ecaron].
+b[ecaron]3ta
+1b[iacute]
+3b[iacute]n
+b[iacute]4rc
+2b[ncaron]
+b3[rcaron]a
+b3[rcaron]e.
+b[rcaron]e4s
+b1[rcaron][iacute]
+2b[scaron]2
+2c.
+1ca
+cad4l
+ca4es
+2cc
+1ce
+cech4
+ced4l
+celo3
+ce4ns
+ce4ov
+ce4ps
+cer4v
+ce2u
+2ch.
+1cha
+4chalg
+3che
+4che.
+2chl
+ch4ly
+ch4mb
+2ch3n
+2cht
+4chte
+1chu
+ch4u.
+1chy
+1ch[aacute]
+2ch[rcaron]
+1ci
+cien4c
+cik4l
+2ck2
+c4ket
+ckte4r[yacute]
+2cl
+c3la
+c3l[eacute]
+2cn
+1co
+co4at
+co4mm
+co4[zcaron]p
+c2p
+2ct
+c2ti
+ctis4
+ct4la
+ct2n
+c3tv
+c2t[ecaron]
+cuk1
+1c2v
+cy2
+1c[aacute]
+1c[iacute]
+c[iacute]4pl
+2c[ncaron]
+1c[uring]
+2d.
+1da
+da3d
+da4j[scaron]
+da4kl
+da4tr
+d1b
+d2ba
+4dbat.
+d2b[aacute]
+2d1c
+dch4l
+3dch4n
+d1d
+dd4ha
+1de
+de4bre
+de3hn
+de3jd
+dej4mo
+de3kl
+de3kv
+de2na
+de2oz
+de3sl
+de4sm
+de4so
+de2sp
+des4t
+de3str
+de1x
+de4xt
+de2z
+de3zn
+dez3o
+de3[ccaron]t
+de4[zcaron]p
+2d1h
+1di
+di4gg
+4dind
+dis3k
+di4so
+d1j
+dj4us
+2dk
+d3kv
+3dl.
+d1la
+d4lab
+d4lak
+d3li
+1dln
+d2lou
+d3lou.
+d2lu
+d3lu[ccaron]
+d4l[aacute][zcaron]
+d1l[eacute]
+2d1l[iacute]
+d2l[uring]
+d1m
+1dmd
+dm[yacute][scaron]4
+2dn
+1do
+4dobl
+4doboj
+dob4rat
+do3by
+do3b[ecaron]
+do3b[yacute]
+do1d
+4do4dd
+4do4dj
+dod4n
+do3h
+doj4m
+4dokn
+4doly
+do3mn
+domoh4
+do3p
+do4pc
+dop4n
+dor2v
+do1s
+dos4p
+dos4tiv
+do3t
+do3uk
+do3u[ccaron]
+do3z2
+doz4n
+do3[ccaron]
+4do4[ccaron]n
+do[ccaron]4t
+do4[zcaron]p
+4dran
+d4rap
+d1re
+d4ren
+3drobn
+d3ros
+d3rou
+d3ro[scaron]
+dr4sc
+d3ru[scaron]
+d3r[eacute]
+d3r[yacute]
+d4r[yacute]v
+2d1s2
+ds4k[uring]
+ds4po
+d1t
+d3tl
+d3t[rcaron]
+1du
+dum3[rcaron]
+du3na
+du3p
+du4pn
+2dur
+du3si
+du4[iacute].
+d2v
+d4vac
+d3ve
+d3vl
+d3vr
+d3vy
+d3v[aacute]
+d3v[ecaron]
+d3v[iacute]
+1dy
+dy4su
+d3zb
+d3zd
+d3zn
+1d[aacute]
+2d1[ccaron]
+1d[eacute]
+1d[ecaron]
+3d[ecaron]j
+1d[iacute]
+2d[ncaron]
+d1[rcaron]a
+d[rcaron]e4k
+d4[rcaron]ep
+d[rcaron]e4pn
+d4[rcaron]ev
+d1[rcaron][iacute]
+d2[rcaron][iacute]t
+2d[scaron]2
+d3[scaron]k
+d3[scaron]t
+1d[uring]
+3d[uring].
+d[uring]3s
+1d[yacute]
+d2[zcaron]2
+2e.
+e1a
+ea3dr
+e2ar
+e1b
+eb4er
+ebez2
+eb4li
+e2b[rcaron]
+e4ch.
+e3chl.
+e4chm
+e3cho
+e2chr
+e3chv
+e4ch[tcaron]
+ed4be
+ed4kv
+ed1l
+ed2ma
+e3dmn
+ed3v
+ed4[rcaron][iacute]
+e1e
+ee4th
+ee3xi
+eg4gi
+e1ha
+e1he
+ehno4
+eh4n[ecaron]
+e1ho
+e1hr
+e1hu
+e1hy
+e1h[aacute]
+e1h[yacute]
+e1i
+eilus3
+ej3ag
+e3jas
+e1je
+e3jed
+ej3ele
+e3jez
+ej3in
+e3jis
+ej1m
+ej3mo
+e3jmu
+ej1o
+ej1u
+eju3st
+ej3v
+e2k
+e3ka
+e3ke
+e4kly
+e3ko
+e3kr
+e3ku
+e3ky
+e3k[aacute]
+e3k[eacute]
+e3k[oacute]
+e3k[rcaron]
+e3k[uring]
+e1la
+e4lau
+el4dv
+e1le
+e1lo
+e1lu
+e1ly
+el4ze
+e1l[aacute]
+e1l[eacute]
+e1l[iacute]
+e1ml
+e4ml[iacute]
+emo3k
+e1mr
+e1my
+e3m[aacute]
+e1m[ecaron]
+e1m[iacute]
+e3m[rcaron]
+e3m[uring]
+e1m[yacute]
+em3[zcaron]e
+en4dv
+enitos4
+en4sc
+en4si
+ent3r
+e1o
+eo3by
+eoch3r
+eod3l
+eo4du
+e4ole
+eo1s
+eo2st
+eo4t[rcaron]
+eo3z
+eo4zb
+eo4zd
+eo[scaron]e3
+epa3t
+e2pl
+e4pni
+ep2no
+e4pn[yacute]
+epo[ccaron]3t
+epro4z[rcaron]
+ep4tl
+ep4tm
+ep4tn
+e4ptu
+epy3
+2er
+e1ra
+er4a.
+e1re
+e1ri
+e1ro
+er3s
+er4s.
+er4sn
+e1ru
+e1ry
+e1r[aacute]
+e1r[eacute]
+e1r[uring]
+e1r[yacute]
+e1s
+e4sag
+e2sce
+e4sin
+esi4s
+e2sk
+es4k.
+e4s4kn
+es3ku.
+es3ky
+es3k[eacute]
+e2sl
+e4s3li
+e4sly
+es2m
+e4sp.
+es4pe
+e2st
+e4st.
+e4ste
+es3ti[zcaron]
+es4tol
+e4strou
+es3t[aacute]n
+e1t
+e4tki
+e4tkr
+e4tli
+e4tly
+et3ri
+et3ro
+et3r[uring]
+et1[rcaron]
+et4[uacute]n
+e1u
+eu3b
+eu3ct
+eu3d
+eu3k
+eu3m
+eu4m.
+eu3n
+eu3p
+eu3r
+eu4r.
+e4ura
+eu4ras
+eu4rg
+eu3s2
+eu3t
+e4u4t.
+eu4tra
+eu4ts
+eu3v
+eu3z
+eu3[zcaron]
+e3vd
+eve4[scaron]
+e3v2k
+e4vsk
+evy3
+evyjad4
+evyp[aacute]4t
+evy4[ccaron]k
+ev[ecaron]4tr
+ex4ta
+e3xu
+ey4or
+ey4ov
+ezaos3
+ez4ap
+ez4bo
+ez3de
+ez3dov
+ez3du
+ez4d[ecaron]
+e3ze
+ez4ed2
+ez4ej
+ez4el
+ez4er
+ez4es
+ez4ez
+ez4e[scaron]
+ezis4
+ez4it
+ez4le
+ez4n[aacute]
+ez4n[ecaron]
+ez4py
+ez2t
+ez4[aacute]c
+ez4[aacute]h
+ez4[ccaron]e
+e3z[iacute]
+e3z[rcaron]
+ez4[rcaron]e
+e1[aacute]
+e[ccaron]4kat
+e1[ccaron]t
+e[ccaron]4te
+e4[ccaron]ti
+e4[ccaron]t[iacute]
+e2[ncaron]
+e3[ncaron]o
+e3[ncaron]u
+e3[ncaron][aacute]
+e3[oacute]n
+e1[rcaron]
+e[rcaron]e4k
+e[rcaron]4ku
+e3[rcaron][iacute]
+e2[scaron]
+e3[scaron]e
+e3[scaron]i
+e4[scaron]ka
+e3[scaron]l
+e[scaron]4l[aacute]
+e3[scaron]o
+e[scaron]4to
+e[scaron]t[iacute]h4
+e3[scaron][iacute]
+e[uacute]1
+e[uacute]my4
+e[uacute]3n
+e[uacute]3p
+e[uacute]3t
+e[uacute]3[ccaron]
+e[zcaron][iacute][scaron]4
+1f
+2f.
+fe4in
+fene4
+fe4ue
+fi4em
+fi4fl
+f2l
+f3l[iacute]
+fl[oacute]4r
+fm4no
+2fn
+2fr
+f4ran
+f4ras
+3frek
+f1ri
+2fs
+fs4te
+2ft
+fu4ch
+2f[eacute]
+f2[uacute]
+1g
+2g.
+ga4u[ccaron]
+ge2s
+ghou4
+3gic
+3gin
+gi4[iacute]m
+g4lom
+2g1m
+2gn
+g4noi
+g4nos
+go1
+go4hm
+3graf
+gu4el
+gu4it
+gu3m
+gu4m.
+gus4t
+gu3v
+2h.
+ha4ag
+ha4ar
+ha4bl
+ha4br
+ha3dl
+ha4dla
+ha4ke
+has3t
+hatos4
+ha4yd
+h2b
+h2c
+2hd
+he4br
+he4id
+hej4s
+he2s
+he2u
+he3x
+hi4an
+hi3er
+hi4gh
+hi4re
+2hk
+4hla.
+h4led
+h3len
+2hli
+4h3lo.
+h3lob
+h3lop
+h3lov
+h3luj
+2h1ly
+4hl[aacute].
+h4l[aacute]s
+h3l[iacute].
+4hl[iacute]k
+2hl[yacute]
+h2m
+2h2n
+h3ne
+h4ned
+h3niv
+h4noj
+3hn[ecaron]d
+3hodin
+ho3str
+hos4t[ecaron]
+4hove
+4hovna
+4hovny
+4hovn[aacute]
+4hovn[ecaron]
+h2r
+hra4p
+2h1t
+h4tin
+h2t[ecaron]
+h4t[iacute]t
+hu4ch
+hu3mo
+hu4t[ncaron]
+2h2v
+hyd1
+hy4do
+hy4ps
+hys3
+hy2t3r
+hy4zd
+h1[ccaron]
+2h[ncaron]
+h[rcaron]2
+h[rcaron]4by
+h[yacute]4bl
+h2[zcaron]
+2i.
+i1a
+ia3d
+ia3g2
+i4al.
+ias4t
+ia4tr
+i1b
+ib2l
+i2b1r
+i1ch
+i4ch[zcaron]
+i1d
+id4ge
+id2l
+id4lo.
+i4dl[yacute]
+i1em
+i1en
+i1et
+if1r
+ig4ne
+i1h
+i2hl
+i3hl.
+i4hli
+ih3n
+ih4na
+i3im
+i1j
+ijed4
+ij4me
+ij4mi
+i2kl
+ik3le
+ik3lo.
+ik3m
+ik4ry
+i4kve
+ik4[uacute][rcaron]
+i1l
+il4ba
+ili[ccaron]4n
+i4lnu
+ilu3
+i1m
+i4mla
+i4mly
+i4mun
+i2n
+i3na
+ina3d
+in4cm
+in4dl
+i3ne
+3infe
+in4gh
+in4gp
+in4gs
+in4gt
+i3ni
+i3no
+i3nu
+i3ny
+i3n[aacute]
+i3n[eacute]
+i3n[ecaron]
+i3n[iacute]
+in4[scaron]p
+i3n[uring]
+i3n[yacute]
+i1o
+io4sk
+i2ps
+i1r
+iro4s
+i1sa
+is3c
+is4ch
+is4k.
+is3ka
+is3ke
+is3ko.
+is3kr
+is3ku
+is3kv
+is3ky
+i3slav
+is3lo
+is3l[eacute]
+is3pl
+is3po
+is1t
+is4tal
+is4tat
+is4th
+ist3v
+is3t[iacute]
+i1sy
+i3s[aacute]
+i1t
+it1r
+it4rh
+it4rp
+it4se
+it4su
+i2tv
+i1um
+iv3d
+i1x
+ix4td
+i3zp
+iz1r
+i1[aacute]
+i1[ccaron]l
+i[ccaron]3t
+i[ccaron]4tl
+i[ccaron]4to
+i2[dcaron]
+i1[eacute]
+i[eacute]4re.
+i1[iacute]c
+i1[iacute]m
+i1[oacute]
+i1[rcaron]
+i[rcaron]4kl
+i[rcaron]4[ccaron]e
+i2[scaron]
+i3[scaron]e
+i3[scaron]i
+i[scaron]3k
+i[scaron]4kr
+i[scaron]4kv
+i3[scaron]o
+i[scaron]4to
+i3[scaron]u
+i3[scaron][aacute]
+i3[scaron][iacute]
+i2[zcaron]
+i3[zcaron]a
+i3[zcaron]e
+i3[zcaron]i
+i3[zcaron]o
+i3[zcaron]u
+i3[zcaron][aacute]
+2j.
+ja2b2
+jac4k
+ja4cq
+ja3d
+ja3g
+j3akt
+j1b2
+jbyst3
+2j1c
+j2d
+j3dob
+j3dok
+j3dos
+j3dr
+j3d[aacute]
+jd4[rcaron][iacute]
+j3d[uring]
+jech4
+j3ef
+j3ex
+jez3d[iacute]
+jg4ra
+2j1h
+1ji
+ji4ch
+jih3l
+ji4m[zcaron]
+j4ina
+jis3k
+jit4ro
+ji2zv
+j1j
+2jk
+j3kv
+2j1l
+j2m
+j3ma
+j3mi
+jmou3d
+2jm[iacute]
+2jn
+jne3
+j1ob
+j1od
+jod2[rcaron]
+j1oh
+j1op
+j4ora
+j1os
+jo3sv
+j2ov
+j3ovl
+j1o3z2
+2jp
+jpor4
+jpo4zv
+jp[rcaron][iacute]z4
+2j1r
+2j1s2
+j4sem
+j4si.
+j4sk.
+js4ko
+js4k[aacute]
+j4s4k[uring]
+j4s4me
+j3sn
+j4sou.
+j4souc
+js4po
+j4s4te
+2j1t
+j3tl
+ju4an
+ju3na
+ju3p
+j1us
+ju3sp
+ju3t
+ju4t.
+ju3v
+ju4xt
+ju3z
+j1u[zcaron]
+ju3[zcaron]i
+2jv2
+j3vd
+j3vn
+2jz
+j3zb
+j3zd
+j3zk
+j3zn
+j3zp
+j[aacute]d2r
+2j1[ccaron]
+2j[dcaron]
+1j[iacute]
+j3[scaron]t
+j[scaron]4ti
+j3[scaron][tcaron]
+2j[uacute]1
+j[uacute]3n
+j[uacute]3[ccaron]
+j[uacute]3[zcaron]
+2j[zcaron]
+1k
+2k.
+ka4bl
+ka4ch
+ka3dl
+3kaj
+ka3ka
+3kami
+3kan[ecaron]
+ka2p3l
+ka2p3r
+ka2ps
+ka4pv
+ka2p[rcaron]
+kas3t
+kast3r
+3kat
+ka4u[ccaron]
+3kav
+3ka[ccaron]
+3ka[rcaron]
+ka[scaron]3l
+ka4[scaron]p
+2k1c
+k2d
+k2e
+ke4bl
+ke3jo
+ke4pr
+ke4ps
+3ket
+2kf
+2kk
+k2l
+3kl.
+4k3la.
+k3lej
+4k3li.
+k4lib
+k3lic
+4kli[ccaron]ka
+4klo.
+k3los
+2k3ly
+k3l[aacute].
+k3l[eacute]
+k3l[oacute]
+k3l[yacute]
+2k2m
+k3m[ecaron]
+2kn
+kna4s
+ko3by
+3kof
+ko4jm
+ko2p[rcaron]
+ko4sk
+ko2t3v
+kous3k
+3kov
+ko3z[aacute]
+4kroa
+k3rob
+k3rof
+kr2s
+kr4[uacute].
+2ks
+2k1t
+kt2r
+kuch4
+ku4f[rcaron]
+ku4hr
+3kuj
+ku3se
+ku3si
+ku3su
+ku4th
+ku3v
+2k2v
+k4vr[ncaron]
+3kyn
+ky2pr
+kyp3[rcaron]
+ky4zn
+3k[aacute]c
+k[aacute]4pl
+3k[aacute]r
+3k[aacute][rcaron]
+2k[ccaron]
+k2[ncaron]
+k2[rcaron]2
+k3[rcaron]ej
+k[scaron]4ti
+3k[uring].
+2l.
+1la.
+la4br
+lab4s
+la3ka
+la4nq
+la4ps
+4la3si
+la4v[scaron]
+la4y.
+la2zm
+2l1b
+2l1c
+2l1d
+ld4ne
+le4ad
+le4au
+lech3t
+leh3n
+le2i
+1lej
+le3jo
+4lej[scaron]k
+1lel
+4lench
+lepa3d
+lepo4s
+le4pr
+le4ps
+le4sc
+le4sm
+le4sv
+let4li
+let3m
+le2tr
+le4t[ccaron]
+le4uk
+le4vh
+le4vk
+le3xi
+lez3n
+2lf
+2lg
+2lh
+3lhan
+1li
+li4az
+li4bl
+li4bv
+li4dm
+lind4
+3lio
+li4t[ncaron]
+li4vr
+2li[zcaron]
+2lj
+2lk
+l4kat
+l2kl
+lk4nu
+2ll
+2l1m
+2ln
+l4nul
+lo3br
+lo4id
+lo4is
+1los
+lo3sp
+lo3st[rcaron]
+lo3sv
+lo2tr
+lo4t[rcaron]
+lo4u.
+lo3z
+loz4d
+lo4[scaron]k
+2lp
+l2p[ecaron]
+2l1s2
+l4sla
+ls3n
+lst4n
+l4st[iacute]
+2l1t
+lt4ra
+lt4ru
+lt4ry
+lu4id
+lu4j.
+lu4k.
+lu4lk
+lu4m.
+lu4mn
+lu3pr
+lu3va
+lu3vl
+lu3vy
+lu3v[iacute]
+2lv
+2lz
+1l[aacute].
+l[aacute]4j[scaron]
+l[aacute]4v[scaron]
+2l1[ccaron]
+1l[eacute].
+1l[iacute]k
+l[iacute]4pl
+l[iacute]4zn
+1l[iacute][rcaron]
+2l[ncaron]
+2l[scaron]2
+l3[scaron]t
+l4[scaron]t[yacute]
+1l[uring]
+1l[yacute]
+l[yacute]2t
+2l2[zcaron]
+2m.
+1ma
+maj4s
+ma4kl
+ma4kr
+4mald
+mas3k
+mat3r
+ma4tra
+ma4v[scaron]
+maz3l
+2m1b
+2m1c
+2m1d2
+m2dl
+1me
+3me.
+me4go
+me4is
+met3re
+me3x
+mezi3s
+2mf
+mh4le
+1mi
+mid3l
+mik3r
+mi4xt
+2mk2
+3m2kl
+mk4la
+mk4li
+m2l
+4mla.
+2mle
+ml3h
+ml4h.
+2mli
+ml4sc
+ml4sk
+4mlu.
+2mn
+m3na
+mna4s
+m4noh
+m3nos
+m4noz
+3mno[zcaron]
+m3n[aacute]
+m3n[eacute]
+m4n[eacute]z
+m3n[ecaron]j
+m3n[yacute]
+1mo
+mod3r
+mo2hl
+mo2k
+mo2s
+mo4s.
+mot3[rcaron]
+4mout
+moza4
+mo3z[rcaron]
+mo[uacute]3
+2mp
+m4plo
+mpo4s
+m2ps
+mp4se
+mp2t
+mr2s
+2m1s2
+m4stl
+2m1t
+1mu
+mu4fl
+mu3n
+mu4n.
+mu4nd
+mu4nn
+mu4ns
+mu4n[scaron]
+2mu[scaron]
+2mv
+mys3lo
+my4[scaron]k
+2mz
+3m[aacute].
+m[aacute]lo3
+m[aacute]2s
+2m[ccaron]
+m2[ccaron]e
+m[iacute]1c
+m[iacute]4r[ncaron]
+2m2[scaron]
+m[scaron]4[ccaron]i
+m[scaron]3[tcaron]
+m[scaron]4[tcaron]an.
+3m[uring].
+3m[yacute].
+m2[zcaron]
+1n
+2n.
+3na.
+na3ch
+na4do
+na4em
+na3h
+na4h.
+na3jd
+na3ka
+nam4ne
+na3p2
+na3s2
+na4s.
+nat2
+na3tl
+na3t[rcaron]
+na3z
+naz4k
+na4z[scaron]
+na4[ccaron].
+na3[scaron]
+na[zcaron]4n
+2nb
+2n1c
+n4chc
+2n1d
+nd4hi
+ndo4t
+nd2re
+nd4ri
+nd4[rcaron][iacute]
+ne1d
+ne4gl
+ne1h
+ne3h4n
+ne2j
+nej3t
+nej3u
+ne3kl
+ne4kro
+ne3kv
+ne4m.
+ne3p
+ne3s2
+ne4s.
+nes4le
+ne4ss
+4nesti
+ne3tl
+net4r
+ne3ud
+ne3v2
+ne4v.
+ne3z
+nez4n
+ne3[scaron]k
+ne3[scaron][tcaron]
+2nf
+n3fr
+2ng
+ng1l
+ng4la
+ng4le
+ng4l[iacute]
+n4gro
+ng4vi
+nik4t
+ni4mr
+ni4m[zcaron]
+3nio
+3nisk
+2nit[rcaron]
+n1j
+2nk
+2n1l
+2nn
+no3b2
+no4bs
+no3hn
+no4hs
+no4ir
+no4m[zcaron]
+no4sky
+no3sm
+no3str
+not4r
+no3z
+no4zd
+no4[scaron]k
+2no[zcaron]
+2n1s2
+n2sa
+ns3ak
+ns4ko
+n4soc
+ns3po
+nst4ra
+2n1t
+nte4r3a
+nt4lem
+nt4r.
+nt3ru
+nt3r[aacute]
+2nub
+nu4gg
+3ny.
+2nz
+3n[aacute]k
+n[aacute]3s2
+n[aacute]4s.
+2n1[ccaron]
+2n[dcaron]
+2n[iacute]v
+2n[iacute][zcaron]
+2n[oacute]
+2n[scaron]2
+n3[scaron]t
+n[scaron]4[tcaron]o
+n[uring]2
+2n[zcaron]
+2o.
+o1a
+oang4
+o1ba
+o1be
+obe3j
+obe3s
+obe3z
+ob1l
+ob1r
+ob4r[ncaron]
+o1bu
+obys4
+ob3z
+o3b[eacute]
+ob3[rcaron]ez
+o1c
+o4chl
+o2chr
+oc4ke
+oc4ko
+o4ct.
+oct3n
+ocy3
+oc4[uacute]n
+od3b
+odej4m
+ode3p
+ode3s
+od1l
+o4doc
+odos4
+odo4tk
+od3ra
+od4ran
+od3r[uring]
+o3dr[zcaron]
+od3v
+od1[rcaron]
+o1e2
+oe3g
+oe3ti
+o2fl
+ofrek4
+og2
+o3gn
+o1h
+oh4ne
+o1i
+oi4ce
+o4int
+o1j
+o4jar
+oje4dl
+o4jmi
+o4jmov
+o4jmu
+o4jm[uring]
+oj2o
+o4juz
+2oka
+ok2te
+o1l
+ol4gl
+ol4to
+o1m
+om4kl
+om2n
+o2n
+o3na
+ona4s
+o3ne
+o3ni
+o3no
+ont4ra
+o3nu
+o3ny
+o3n[aacute]
+on[aacute][rcaron]4ka
+o3n[ecaron]
+o3n[iacute]
+o3n[uring]
+o3n[yacute]
+o1o
+oo4h[rcaron]
+oote2
+opo[ccaron]3t
+opro4s
+o2ps
+o4ptu
+op[aacute]4t
+o4p[rcaron].
+op[rcaron]ej4
+op[rcaron]e4jm
+o1ra
+o4rae
+or4dm
+o1re
+o1ri
+o1ro
+or3st
+o1ru
+or4v[aacute]
+o1ry
+o1r[aacute]
+o3r[eacute]
+o1r[uring]
+or[uring]s3
+o3r[yacute]
+o1sa
+o4sai
+ose4s
+osi4d
+o1sk
+o4s3ke
+o4sku
+osk3v
+o4sk[aacute]
+o4sk[yacute]
+o1sl
+os4la
+os4li
+os4l[yacute]
+os3mo
+os4mu
+o4st.
+o4stg
+o4stm
+os4tor
+os3tr[uring]
+o4st[eacute]
+o4st[scaron]
+o4st[yacute]
+o1sy
+o1t
+ot4kl
+o4tl[yacute]
+oto3s
+ot3ro
+ot3v[iacute]
+o3t[iacute]
+o3t[rcaron]
+ot3[rcaron]i
+o2u
+ou3b[ecaron]
+ou3d[ecaron]
+ou4fl
+ou4il
+ou4is
+ou4k.
+ou3ka
+o4ukl
+ou3kr
+ou3k[aacute]
+ou3m
+oup3n
+oupo4
+ou4s.
+ou3sa
+ou3se
+ou4sk
+ou3sm
+ou4tv
+ou3v
+ou4vl
+ou4vn
+ouz3d
+o4u[ccaron]k
+ou3[zcaron]i
+ovi4dla
+o4vsk
+ovy2p
+o2v[scaron]t
+o1x
+o2z
+o3za
+oz1b
+oz4d.
+oz3d[aacute]
+oz3d[ecaron]
+oz3d[iacute]
+o3ze
+oze3d2
+ozer4
+oz1h
+o3zi
+oz3j
+oz3k
+oz4ko
+oz1l
+oz3m
+o4zn.
+o3zo
+oz3p
+oz4py
+oz4p[ecaron]
+oz4p[iacute]
+oz3ro
+oz3ru
+oz3r[uring]
+oz3t
+o3zu
+o4zut
+oz3vr
+oz3v[aacute]
+o3z[iacute]
+o3z[uring]
+oz[uring]4s
+o1[ccaron]
+o[ccaron]2k
+o[ccaron]4ka
+o2[ncaron]
+o3[ncaron]a
+o3[ncaron]o
+o1[rcaron]
+o[rcaron]i2s
+o3[scaron]k
+o4[scaron]ku
+o4[scaron]ky
+o3[scaron]l
+o[scaron]4l[aacute]
+o[scaron]4mo
+o[scaron]4ti
+o[scaron]4[tcaron]u
+o3[zcaron]l
+o[zcaron]4mo
+1p
+2p.
+pa4ed
+pa4es
+pa4kl
+pa3si
+pa4t.
+pat4ri
+2p1c
+pe4al
+pede4
+pe4ig
+pe4np
+peri3
+pes3t3
+pe4tra
+3pe[ccaron]
+pi4kr
+pi4pl
+2pk
+p2kl
+p2l
+3pl.
+4p3la.
+pl3h
+pl4h.
+4p3li.
+4plo.
+2pn
+p2nu
+po1b2
+po3c2
+3pod
+podb[ecaron]4h
+pod4nes
+po3dru
+po3dr[aacute]
+po3h
+poly3
+po3m2
+po4mp
+po4ol
+po3p
+po4p.
+po4pm
+po1s2
+pos4p
+post4r
+po3t2
+po4t.
+po4tn
+po3uk
+po3u[ccaron]
+po3u[zcaron]
+3po3v
+po3z2
+po4zd
+po[ccaron]2
+po3[ccaron]k
+po[ccaron]3te
+po3[rcaron][iacute]
+po4[scaron]v
+2pp
+4pra.
+pra3st
+pr2c
+pro1
+prob2
+pro3p
+pro3t4
+pro3z
+pr2s
+4pr[aacute]n
+pr[uring]3
+pse4s
+2p1sk
+p4sut
+2pt
+p4tej
+p4ter
+p4tev
+pt4ri
+p3tu
+p4t[aacute].
+pu4dl
+pu4tr
+pyt3l
+p[aacute]1
+p[aacute]2c
+p[aacute]d3l
+p[aacute]4nv
+p[aacute]4sl
+2p[ccaron]
+p[eacute]4rh
+2p[rcaron].
+p[rcaron]e3h
+p[rcaron]e3j
+p[rcaron]e3t4
+p[rcaron]e3z
+p[rcaron]e3[ccaron]2
+p[rcaron]i3
+p[rcaron]ih4
+2p[scaron]
+p[scaron]4ti
+2p[tcaron]
+qu2
+2r.
+1ra.
+ra4br
+ra4em
+ra4es
+ra4ff
+ra4hl
+ra4hm
+ra4jg
+ra4j[scaron]
+2rak
+ra4nh
+ra3si
+rast4r
+ra4vv
+ra4wl
+ra4y.
+ra4yo
+ra4[dcaron]m
+4ra[zcaron]i
+r1b
+r2bl
+r1c
+rca3
+r3cha
+r3cho
+rc4ki
+r1d
+r4dla
+rdo2s
+re4ad
+re4au
+red4r
+re4et
+re3kl
+re3kvi
+re4mr
+re2sb
+res3l
+retis4
+ret4r
+re4um
+r1ha
+r3hl.
+rh3n
+r1ho
+r3hu
+r1h[aacute]
+ri4bb
+1ric
+ric4ku
+ri4dg
+ri4dr
+ri4fl
+ri4gh
+ri4zm
+2rk
+r2kl
+r1l
+2r1m
+r4mio
+2rn
+rna4v[scaron]
+rn4dr
+ro4ad
+ro3by
+rod2l
+ro3d4r
+3rofy
+ro3h
+ro4h.
+ro4jb
+ro4k[scaron]
+rom3n
+romy4s
+rop[aacute]t4
+ro2sb
+ro4skv
+ro4sky
+ro3sv
+ro3ti
+ro3tl
+ro4t[ccaron]
+ro3vd
+rov[ecaron]4t
+3rov[yacute]
+roz3d
+roz3n
+ro4zo
+roz3v
+ro3z[aacute]
+ro4[ccaron]p
+rpa3d
+2rr
+rr4ha
+rr4ho
+2r1s
+r2st
+r4stu
+rs3tv[ecaron]
+rs3tv[yacute]
+2r1t
+r2th
+r4tr[aacute]
+rt4sm
+rtu3
+r2t3v
+rt4zu
+1ru.
+ru3se
+ru3si
+rus3k
+ru3[zcaron]i
+3rvan[iacute]
+r1x
+1ry.
+rych3
+ryd2
+rys3ky
+rys3t
+ry4zk
+ry4zn
+ry4[iacute].
+ry4[scaron]k
+2rz
+rz3d
+rz3l
+r[aacute]d4l
+r[aacute]4d[zcaron]
+1r[aacute]k
+r[aacute]3ri
+1r[aacute][rcaron]
+r1[ccaron]
+4r[ccaron]it[yacute].
+r[ccaron]3t
+3r[eacute].
+2r[oacute]
+2r[scaron]
+r[scaron]4n[iacute]
+r[uring]4m.
+r[uring]s3ta
+r[uring]4v.
+3r[yacute].
+r[yacute]4zn
+2s.
+sa4pf
+sa4pr
+sas3k
+s2b2
+s2c
+s3ca
+s3ce.
+sch2
+sch4l
+sch4n
+3schop
+s3ci
+sci4e
+s3c[iacute]
+s2d
+1se
+se4au
+se3h
+se4ig
+se4il
+sej4m
+se4ku
+3sel
+se3lh
+3sem
+ser4va
+se3s2
+ses4k
+se4ss
+se4stra
+se4stru
+se4st[rcaron]
+set2
+se3tk
+se3t[rcaron]
+se4ur
+se3z
+se3[ccaron]t
+2sf
+s3fo
+3sf[eacute]
+s3f[uacute]
+1si
+3sic
+3sif
+si4fl
+sig4no
+3sik
+si3ste
+3sit
+s2j
+s3ju
+s2k
+4skac
+s4kak
+4skam
+s4kok
+2skon
+skos4
+4skot
+sk4ra
+sk4ru
+sk4ry
+4skve
+sk4vo
+s3k[aacute]n
+s3k[uring]
+3sl.
+4s3la.
+s4lav
+s3le.
+s4led
+s3lem
+s3len
+s3let
+s4lib
+s4li[ccaron]i
+3sln
+4s3lo.
+s2ly
+s3ly.
+s1l[iacute]
+s2ma
+s4mek
+s2mo
+2sn
+s2na
+s3nat
+s2ne
+s3ne.
+sn4tl
+s2n[aacute]
+s3n[aacute].
+s4n[iacute]d
+1so
+sob4l
+so3br
+so4sk
+so4tv
+sou3h
+sou3s
+souz4
+so4[scaron]k
+s2p
+s4pol
+spro4s
+1sr
+2ss
+ss4sr
+2st.
+4sta.
+s3taj
+s2tan
+st4at
+4stec
+s4tep
+st4er
+s4tero
+s4tich
+2stil
+s4tink
+4stit.
+4sti[ccaron]
+st3lo
+2stn
+4sto.
+s4tona
+4stou.
+4str.
+4stram
+s4trik
+4strn
+4str[aacute]c
+4stupni
+s2tv
+st4ve
+3stv[iacute]
+4sty.
+s4tyl
+3sty[scaron]
+s2t[aacute]
+4st[aacute].
+s3t[aacute][rcaron]
+4st[ecaron].
+s4t[ecaron]d
+3st[ecaron]h
+s2t[ecaron]r
+s2t[ecaron][zcaron]
+s1t[iacute]
+2st[iacute].
+s3t[rcaron]ej
+1su
+su4ba
+su4bo
+suma4
+su3ve
+s2v
+sy3c
+sych3r
+sy4nes
+s[aacute]2d
+3s[aacute]h
+s[aacute]2kl
+2s2[ccaron]
+s3[ccaron]i
+1s[eacute]
+1s[iacute]
+2s[ncaron]
+2s[tcaron]
+s3[tcaron]o
+1s[uring]
+s2[zcaron]
+2t.
+1ta.
+ta2bl
+tac4tvo
+t2a3d
+1taj
+ta4jf
+ta4jg
+4talt
+4tand
+3tan[ecaron]
+t1ao
+2tark
+tast4
+ta3str
+ta4[ccaron]k
+2t1b
+2t1c
+1te
+3te.
+te4ak
+te4fl
+te4in
+4ten[eacute]m
+teob4
+tep3l
+ters4
+tes3ta
+te4tr
+te4uc
+te4ur
+te4ut
+2tf
+2tg
+1ti
+ti4gr
+2tih
+ti3kl
+tin4g
+ti4pl
+ti3sl
+tis4tr
+ti4tr
+2titu
+tiz4r
+4tiz[iacute]
+ti[uacute]3
+2ti[zcaron]
+2tk2
+t4kal
+4t2kan
+t4kat
+t2kl
+tk4la
+tk4li
+4tkn[ecaron]
+t2k[aacute]
+2tl
+3tl.
+4tla.
+t1le
+tles3
+3tlm
+t3lo.
+t4lou
+tlu3
+tlu4s
+t1ly
+t1l[eacute]
+2tm
+t2ma
+2tn
+t3n[iacute]
+1to
+to4as
+to3b
+tob4l
+to3dr
+to4hm
+to4ir
+2toj
+tol4s
+to4ol
+4top.
+4topt
+4topu
+2torn
+2toup
+2tp
+t3rant
+t4rea
+t4ref
+tre4t
+4tric.
+trip4
+t4rit
+t4rog
+t3rol
+tro4sk
+t4rou
+4trouh
+4tro[ncaron].
+4trun
+t4rus
+4t4ru[zcaron]
+t3r[aacute]ln
+4tr[aacute][scaron]
+2tr[ccaron]
+t3r[uring]m
+t3r[uring]v
+2tr[yacute]
+2t1s
+ts4ko
+ts2t
+2t1t
+tt4ch
+tt4ri
+1tu.
+tu4ff
+1tuj
+tu4lk
+2tup
+tu4r.
+tu3ry
+tu4s.
+tu4[tcaron].
+tu3[zcaron]i
+t2v
+2tve
+2t3vi
+t4vinn
+t4vi[scaron]
+t4v[yacute]c
+1ty.
+ty4g[rcaron]
+ty2la
+ty4[rcaron]e
+ty4[rcaron]h
+ty4[rcaron]j
+ty4[rcaron]o
+ty4[rcaron]r
+ty4[rcaron][uacute]
+3t[aacute].
+t[aacute]4fl
+t2[ccaron]
+t3[ccaron]i
+2t[ccaron][iacute]
+1t[eacute]
+t[eacute]2bl
+3t[eacute]m
+1t[ecaron]
+t[ecaron]3d4l
+2t[ecaron]h
+2t[ecaron]nn
+2t[ecaron]p
+1t[iacute]c
+4t[iacute]c.
+4t[iacute]ce
+1t[iacute]m
+2t[iacute]n
+2t[iacute]r
+2t[rcaron]
+t4[rcaron]eb
+t[rcaron]eh3n
+t2[rcaron]el
+t2[rcaron]ic
+t3[rcaron]il
+t[rcaron]4ti
+t1[rcaron]u
+t2[rcaron][aacute]
+3t[rcaron][aacute]b
+t[rcaron][iacute]4s
+2t[scaron]
+t3[scaron]t
+t[scaron]4ti
+1t[uring]
+1t[yacute].
+1t[yacute]m
+1t[yacute][rcaron]
+3t[yacute][scaron]
+u1
+2u.
+u2at
+u2b
+u3ba
+u3be
+u3bi
+u3bo
+ubs4t
+u3bu
+u3b[aacute]
+u3b[iacute].
+u3b[uring]
+uc4t[iacute]
+2u2d
+u3de
+u3di
+u3do
+u3dru
+u3du
+u3dy
+u3d[iacute]
+ue4fa
+2uf
+u2hl
+uh3l[aacute]
+uh3no
+u2in
+u2jm
+u2k
+u3ka.
+uk4aj
+uk4al
+uk4at
+u3ke
+uk3la
+uk3le
+u3ko
+u3ku
+u3ky
+uk4[aacute].
+u3k[uring]
+ul4fa
+ul1h
+ul4p[iacute]
+u2m
+u3ma
+u3me
+u3mi
+um4pl
+um4ru
+u3mu
+u3m[aacute]
+3um[rcaron]
+u2n
+un4dl
+u3ne
+u3no
+u3nu
+u3n[ecaron]
+u3n[iacute]
+u3n[uring]
+un4[zcaron]r
+u2p
+u3pa
+u3pe
+upe2r3
+u3pi
+u3pln
+u3pu
+u3py
+u3p[aacute]
+u3p[ecaron]
+u3p[iacute]
+u3p[uring]
+u2r
+u3ra
+u3re
+u3ri
+2u3ro
+u3ru
+u3ry.
+u3r[aacute]
+1ur[ccaron]
+u3r[uring]
+u2s
+us3ky
+us3k[aacute]
+us3k[eacute]
+us3k[yacute]
+us1l
+us2lo
+u3so
+u4ste
+u4sty
+u4st[eacute]
+u4st[ecaron]
+u3st[rcaron]
+u4st[scaron]
+u4st[yacute]
+u3su.
+u3sy
+u3s[aacute]
+u3s[iacute]
+u3s[uring]
+u4tro
+u4tr[aacute]
+u2v
+u3vi
+u3vu
+u2z
+u3ze
+u3zi
+uz1l
+u3zo
+u3zu
+u3z[iacute]
+u2[ccaron]
+u3[ccaron]a
+u3[ccaron]e
+u3[ccaron]i
+u3[ccaron]o
+u[ccaron]3t
+u3[ccaron]u
+u3[ccaron][aacute]
+u3[ccaron][iacute]
+u2[dcaron]
+u2[ncaron]
+u2[scaron]
+u3[scaron]e
+u3[scaron]i
+u[scaron]4kl
+u3[scaron]o
+u[scaron]3t[iacute]
+u3[scaron]u
+u3[scaron][aacute]
+u3[scaron][iacute]
+u2[zcaron]
+u3[zcaron]e
+u3[zcaron]o
+u3[zcaron]u
+u3[zcaron][aacute]
+u3[zcaron][iacute]
+1v
+2v.
+va3dl
+va4j[tcaron]
+va4kl
+2v1b
+2v1c
+v2ch
+2v2d
+v4dal
+v3di
+v4d[ecaron]k
+v4d[ecaron][ccaron]
+ve3dle
+ve3jd
+3ven
+ve2p
+ve3ps
+vep3[rcaron]
+ves3l
+ve4sm
+ves4p
+ve3sta
+ve3t4[rcaron]
+ve2z3m
+vi4ch
+vide2
+vi4dr
+vi4et
+vi4kr
+vi2tr
+2vk
+v2kr
+v2l
+2v3la.
+4vle.
+4vlem
+2vlo
+2vm
+2vn
+v4nad
+vo3b
+vo4ic
+vo4ja
+vo4jb
+vo4jd
+vo4jj
+vo4jm
+vo4j[rcaron]
+vo2s
+vo4t[rcaron]
+vou3
+vous2
+v2p
+vr2c
+vr2dl
+4vrny
+v1ro
+vr4st
+vrst3v
+vrs4tv[ecaron]
+2vs2
+v1sk
+v3stv
+2v2t
+vy3c
+vy3d2
+vy4dra
+vyp2
+vy3s2
+vy4sn
+vys4t
+vy3t
+vy3[ccaron]
+vy[ccaron]4k
+vy[scaron]2
+vy4[scaron].
+vy4[scaron]m
+vy4[scaron][scaron]
+vy4[zcaron]l
+v2z2
+vz4no
+vz4n[eacute]
+vz4n[ecaron]
+vz4n[iacute]
+v[aacute]3ri
+2v2[ccaron]
+v3[ccaron][aacute]
+v3[ccaron][iacute]
+v4[ccaron][iacute]r
+v[ecaron]4cm
+v[ecaron]3t4a
+v[iacute]ce3
+v[iacute]4hat
+3v[iacute]n
+2v[ncaron]
+2v[rcaron][iacute]
+v3[rcaron][iacute]n
+v2[scaron]2
+v[scaron]e3s
+v3[scaron]t[iacute].
+3v[yacute]s
+v[yacute]3t
+3v[yacute]3z
+v2[zcaron]2
+wa4fd
+3war
+wa4re
+we2
+2x.
+xand4
+2xf
+xisk4
+2xn
+3xov
+x1t
+xt4ra
+xy4sm
+y1
+y2a
+y2bl
+yb3ri
+y2ch
+y4chr
+y2d1l
+yd4l[aacute]
+y2dr
+yd4y.
+y2e
+y2gr
+y3hn
+yh4ne
+yj4ma
+yj4me
+y2kl
+yk3la
+y3klop
+yk4ly
+yman[eacute]4
+ym4kl
+yna4s
+y3ni
+ype4r
+yp4si
+yp4t[aacute]
+y2p[rcaron]
+yr2v
+y2s
+y3sa
+y3se
+y3si
+ys3lu
+y3sm
+y3so
+y3sp
+ys2t
+ys3te
+yst4r
+y3su
+y3sv
+y3sy
+y3s[aacute]
+y3s[eacute]
+y3s[iacute]
+yt4me
+yu3[zcaron]
+y3vs
+yv[ecaron]4t
+y3zb
+y3zd
+y3zk
+y3zn
+yz4n[ecaron]
+yz4n[iacute]
+y3zp
+yz4po
+y[ccaron]2k
+y2[ncaron]
+y[rcaron]3b
+y[rcaron]k4n
+y[rcaron]4[ccaron]e
+y3[rcaron][iacute]
+y2[scaron]
+y3[scaron]e
+y3[scaron]i
+y3[scaron]k
+y[scaron]1l
+y3[scaron]o
+y3[scaron]p
+y3[scaron]u
+y3[scaron][iacute]
+y[zcaron]2
+y3[zcaron]d
+1z
+2z.
+zab2l
+za4bs
+za4dk
+za3dl
+za4dn
+za3h
+za3i
+za3j
+za4jk
+za3k
+za4kt
+zal4k
+zam4n
+za3p2
+za3s2
+zat2
+za3tl
+zat4r
+za4ut
+za3z
+zaz4n
+za4z[scaron]
+za4[ccaron].
+za3[scaron]
+za[scaron]4k
+za4[scaron]s
+2zb
+zban4
+z2by
+zbys4
+2z1c
+2z2d
+z3di
+zdn[ecaron]4n[iacute]
+z4doba
+z4dobn[yacute]
+zd4re
+zd4v[iacute]
+z2e
+ze3h
+ze3p2
+4zerot
+ze3s2
+zes4p
+zet2
+zev2
+ze3vn
+ze3z
+ze4z.
+2z2f
+z1h[aacute]
+z4ine
+z2j
+z3j[iacute]
+2z2k
+z3ka.
+z3ky
+z3k[eacute]
+z3k[uring]
+z3k[yacute]
+2zl
+3zl.
+zlhos4
+zlik3
+z3ly.
+z2m2
+2zme
+z3mn
+z3my
+z4m[ecaron]n
+2z2n
+3znak
+z4nal
+z3ne.
+z3nic
+z3no
+z3nu
+z3ny
+z3n[eacute]
+z3n[ecaron]
+z4n[ecaron]l
+z3n[iacute]
+z4n[iacute]t
+z4n[iacute]v
+z3n[yacute]
+zo4tr
+zo4[scaron]k
+2z2p
+z3pt
+z4p[aacute]t
+3zrak
+2z1s2
+2zt
+ztros3
+z4tr[aacute]
+z3t[rcaron]
+3zu.
+zu3mo
+zu3m[ecaron]
+zu3m[iacute]
+zu3[scaron]
+z2v
+zva4d
+z3va[rcaron]
+z3vi
+zvik4
+zv4n[ecaron]
+z3vod
+z3voj
+z4von
+zv4ro
+z4v[aacute]n
+z4v[ecaron]s
+z3v[iacute]j
+3zy.
+2zz
+z[aacute]1
+z[aacute]h2
+z[aacute]4kl.
+3z[aacute]p
+z[aacute]3s2
+z[aacute]3z
+z[aacute][scaron]2
+2z[ccaron]
+z3[ccaron]l
+2z[ncaron]
+z2[rcaron]
+z[rcaron]ej3
+z3[rcaron]ez
+z3[rcaron]e[scaron]
+2z[scaron]2
+z3[scaron]k
+z[scaron]4ka
+z3[scaron]t
+2z2[uacute]1
+z[uacute]3[ccaron]
+z[uacute]3[zcaron]
+z[uring]3s
+[aacute]1b
+[aacute]2bl
+[aacute]b4ry
+[aacute]4b[rcaron].
+[aacute]3cho
+[aacute]c3ti3
+[aacute]1d
+[aacute]2dl
+[aacute]do4s
+[aacute]dos4ti
+[aacute]d1[rcaron]
+[aacute]1ha
+[aacute]3he
+[aacute]h1l
+[aacute]3hl.
+[aacute]h3n
+[aacute]1ho
+[aacute]1hr
+[aacute]1h[aacute]
+[aacute]1j
+[aacute]4jmu
+[aacute]j4m[uring]
+[aacute]4kli
+[aacute]k4ni
+[aacute]1la
+[aacute]1le
+[aacute]1lo
+[aacute]1lu
+[aacute]1ly
+[aacute]3l[eacute]
+[aacute]1l[iacute]
+[aacute]3my
+[aacute]3m[eacute]
+[aacute]1m[ecaron]
+[aacute]3m[iacute]
+[aacute]3m[yacute]
+[aacute]ne4v
+[aacute]1ra
+[aacute]1re
+[aacute]r2m
+[aacute]1ro
+[aacute]1ru
+[aacute]3r[uring]
+[aacute]1s
+[aacute]2sc
+[aacute]2s3k
+[aacute]s4k.
+[aacute]s4kl
+[aacute]s4kn
+[aacute]2sla
+[aacute]s4ly
+[aacute]2sm
+[aacute]s4po
+[aacute]2st
+[aacute]t3k
+[aacute]t1r
+[aacute]1tu
+[aacute]1ty
+[aacute]1t[iacute]
+[aacute]3t[yacute]
+[aacute]v4si
+[aacute]v4s[iacute]
+[aacute]z3k
+[aacute]z3ni
+[aacute]zni4c
+[aacute]z4vi
+[aacute]2[ncaron]
+[aacute]1[rcaron]
+[aacute][rcaron]4ke
+[aacute][rcaron]4k[uring]
+[aacute]2[scaron]
+[aacute]3[scaron]e
+[aacute]3[scaron][iacute]
+2[ccaron].
+1[ccaron]a
+[ccaron]a4br
+2[ccaron]b
+2[ccaron]1c
+1[ccaron]e
+3[ccaron]e.
+[ccaron]e1c
+[ccaron]es3k
+1[ccaron]i
+2[ccaron]k
+[ccaron]3ka.
+[ccaron]3ko
+[ccaron]3ku
+[ccaron]3ky
+2[ccaron]1m
+2[ccaron]n
+[ccaron]2ne
+1[ccaron]o
+[ccaron]2p
+2[ccaron]s
+[ccaron]1sk
+[ccaron]s4la
+[ccaron]s4sr
+2[ccaron]2t
+[ccaron]4ten[eacute].
+[ccaron]4ten[yacute]
+[ccaron]t4la
+[ccaron]4tov[yacute].
+3[ccaron]tv
+4[ccaron]t[ecaron]n
+[ccaron]3t[iacute]
+1[ccaron]u
+1[ccaron][aacute]
+1[ccaron][iacute]
+[ccaron][iacute]s3l
+1[ccaron][uring]
+2[dcaron].
+1[dcaron]a
+1[dcaron]o
+[dcaron]s4te
+2[dcaron]1t
+3[dcaron]uj
+[eacute]1
+[eacute]2d
+[eacute]3di
+[eacute]3do
+[eacute]2f
+[eacute]3fo
+[eacute]f1r
+[eacute]2kl
+[eacute]2l
+[eacute]2m
+[eacute]3ma
+[eacute]3me
+[eacute]3mi
+[eacute]3mo
+[eacute]3mu
+[eacute]3m[uring]
+4[eacute]re.
+[eacute]2s
+[eacute]2t
+[eacute]3ta
+[eacute]3to
+[eacute]3t[aacute]
+[eacute]2[scaron]
+[eacute]2[zcaron]
+[ecaron]1c
+[ecaron]d3r
+[ecaron]3ha
+[ecaron]3he
+[ecaron]3hl.
+[ecaron]h3lo
+[ecaron]h3n
+[ecaron]1ho
+[ecaron]3hu
+[ecaron]3h[uring]
+[ecaron]3ja
+[ecaron]1je
+[ecaron]1jo
+[ecaron]3j[uring]
+[ecaron]4kl[eacute]
+[ecaron]3k2t
+[ecaron]1l
+[ecaron]1ra
+[ecaron]ra3d
+[ecaron]1re
+[ecaron]1ro
+[ecaron]r3s
+[ecaron]rs4t
+[ecaron]1ru
+[ecaron]1ry
+[ecaron]1r[uring]
+[ecaron]s3k
+[ecaron]s3n
+[ecaron]t1a3
+[ecaron]t4ac
+[ecaron]t1l
+[ecaron]1tr
+[ecaron]t3ra
+[ecaron]4traj
+[ecaron]t3v
+[ecaron]1t[iacute]
+[ecaron]t3[rcaron][iacute]
+[ecaron]2v
+[ecaron]3va
+[ecaron]3ve
+[ecaron]3vl
+[ecaron]3vo
+[ecaron]3vu
+[ecaron]3v[aacute]
+[ecaron]v3[ccaron]
+[ecaron]2z
+[ecaron]3ze
+[ecaron]3zi
+[ecaron]z3n
+[ecaron]3zo
+[ecaron]3z[iacute]
+[ecaron]1[rcaron]
+[ecaron]2[scaron]
+[ecaron]3[scaron]e
+[ecaron]3[scaron]i
+[ecaron]3[scaron]o
+[ecaron]3[scaron]u
+[ecaron]3[scaron][aacute]
+[ecaron]3[scaron][iacute]
+[ecaron][scaron]3[tcaron]
+[ecaron][scaron]4[tcaron]s
+[ecaron]2[tcaron]
+[ecaron]3[tcaron]o
+[ecaron]2[zcaron]
+[ecaron]3[zcaron]e
+[ecaron]3[zcaron]i
+[ecaron]3[zcaron]o
+[ecaron]3[zcaron]u
+[ecaron]3[zcaron][iacute]
+[iacute]1b
+[iacute]b3[rcaron]
+[iacute]3cho
+[iacute]ch4t
+[iacute]d1l
+[iacute]1h
+[iacute]2hl
+[iacute]h3n
+[iacute]1j
+[iacute]jed4
+[iacute]j4m[uring]
+[iacute]2kr
+[iacute]1l
+[iacute]1m[aacute]
+[iacute]3m[eacute]
+[iacute]1m[ecaron]
+[iacute]1r
+[iacute]1sa
+[iacute]2s3k
+[iacute]s4kl
+[iacute]s4kn
+[iacute]s4l.
+[iacute]s3le
+[iacute]s4ln
+[iacute]s[aacute]h2
+[iacute]1t
+[iacute]t3k
+[iacute]3t3[rcaron]e
+[iacute]z3da
+[iacute]z3de
+[iacute]z3k
+[iacute]3zna
+[iacute]3z3ni
+[iacute]3zn[ecaron]n
+[iacute]2[ncaron]
+[iacute]1[rcaron]
+[iacute]2[scaron]
+[iacute]3[scaron]e
+[iacute]3[scaron]i
+[iacute]3[scaron]o
+[iacute]3[scaron][iacute]
+1[ncaron]
+2[ncaron].
+2[ncaron]a
+[ncaron]a3d
+2[ncaron]k
+2[ncaron]m
+3[ncaron]ov
+[ncaron]1s
+2[ncaron]1t
+[oacute]1
+[oacute]2z
+[oacute]3za
+[oacute]3zi
+[oacute]3zo
+[oacute]3zy
+2[rcaron].
+[rcaron]a4pl
+[rcaron]a4[dcaron]m
+2[rcaron]2b
+2[rcaron]c
+2[rcaron]d
+[rcaron]e3ch
+[rcaron]e4dob
+[rcaron]e1h
+[rcaron]e3jd
+[rcaron]e3kl
+[rcaron]e3kv
+[rcaron]e4k[rcaron][iacute]
+[rcaron]eo4r
+[rcaron]e3p2
+[rcaron]e4p.
+[rcaron]e4pk
+[rcaron]e4p[ccaron]
+[rcaron]er4v
+2[rcaron]es
+[rcaron]e3ska
+[rcaron]e3sko
+[rcaron]e2sp
+[rcaron]es3po
+[rcaron]e4sr
+[rcaron]e3sta
+[rcaron]e3stu
+[rcaron]e3st[aacute]
+[rcaron]e3st[rcaron]
+[rcaron]e3tl
+[rcaron]et4[rcaron]
+[rcaron]e3zd
+[rcaron]e3zk
+4[rcaron]ezl
+[rcaron]e3[ccaron]t
+[rcaron]i1
+[rcaron]ia3
+[rcaron]i3h
+[rcaron]i4h.
+[rcaron]i4hn
+[rcaron]i4j[dcaron]
+[rcaron]i4l.
+[rcaron]i4lb
+[rcaron]il2n
+4[rcaron]ine
+[rcaron]is2
+3[rcaron]i4t.
+[rcaron]i4v.
+[rcaron]i4vk
+[rcaron]i4vn
+[rcaron]i3z
+[rcaron]i[ccaron]4t
+[rcaron]i3[rcaron]
+[rcaron]i4[scaron].
+2[rcaron]k
+[rcaron]2kl
+[rcaron]k4la
+[rcaron]k4li
+[rcaron]k4ly
+[rcaron]k4no
+2[rcaron]1l
+2[rcaron]1m
+2[rcaron]n
+1[rcaron]o
+2[rcaron]ou
+2[rcaron]2p
+2[rcaron]1s
+[rcaron]s4to
+2[rcaron]1t
+[rcaron]2v
+2[rcaron]z
+[rcaron][aacute]4pl
+[rcaron][aacute]2sl
+2[rcaron]1[ccaron]
+2[rcaron][iacute]d
+[rcaron][iacute]4k[rcaron]
+[rcaron][iacute]1s
+2[rcaron][scaron]
+[rcaron]3[scaron]t
+[rcaron][scaron]4ti
+1[scaron]
+2[scaron].
+[scaron]ab3
+[scaron]a4vl
+2[scaron]1c
+[scaron]ej4d
+[scaron]ep3t
+[scaron]i4mr
+2[scaron]2k
+[scaron]3ka
+[scaron]3ke
+[scaron]3k3li
+4[scaron]3kou
+4[scaron]kov
+3[scaron]kr
+[scaron]k4ro
+[scaron]3ku.
+[scaron]3ky
+2[scaron]l
+[scaron]2la
+[scaron]2li
+[scaron]3liv
+[scaron]2lo
+[scaron]l[aacute]2
+[scaron]2l[eacute]
+[scaron]2l[yacute]
+2[scaron]1m
+[scaron]mi4d
+2[scaron]n
+[scaron]2p
+2[scaron]1s
+2[scaron]t
+[scaron]4tip
+[scaron]t4ka
+[scaron]t4kl
+[scaron]4t[ecaron]k
+[scaron]2t[ecaron]s
+[scaron]4t[ecaron]v
+[scaron]4t[iacute]p
+[scaron]2v
+[scaron][iacute]3d
+[scaron]2[ncaron]
+[scaron]3[scaron][iacute]
+2[scaron]2[tcaron]
+[scaron]3[tcaron]o
+[scaron]3[tcaron]u
+[scaron]3[tcaron][aacute]
+1[tcaron]
+2[tcaron].
+3[tcaron]al
+2[tcaron]k
+2[tcaron]m
+2[tcaron]t
+[tcaron][aacute][ccaron]4k
+1[uacute]
+[uacute]2c2
+[uacute]2d
+[uacute]j4ma
+[uacute]2k
+[uacute]2l
+[uacute]2n
+[uacute]2p
+[uacute]2t
+[uacute]t4ko
+[uacute]2v
+[uacute]2z
+[uacute]z3k
+[uacute]2[ccaron]
+3[uacute][ccaron]e
+[uacute][rcaron]e4z
+[uacute][scaron]4ti
+[uacute]2[zcaron]
+[uring]1b
+[uring]1c
+[uring]1hl
+[uring]3jd
+[uring]4jmov[yacute]
+[uring]1le
+[uring]1my
+[uring]1m[ecaron]
+[uring]1ra
+[uring]r4va
+[uring]r4vy
+[uring]1s2
+[uring]2st
+[uring]s3te
+[uring]s3t[aacute]n
+[uring]t2
+[uring]3tkl
+[uring]2v
+[uring]3va
+[uring]3vo
+[uring]3v[ecaron]
+[uring]2z
+[uring]3zo
+[uring]2[zcaron]
+[uring]3[zcaron]e
+[uring]3[zcaron]i
+[uring]3[zcaron]o
+[yacute]1b
+[yacute]3cho
+[yacute]1d
+[yacute]d4la
+[yacute]1h
+[yacute]1j
+[yacute]1l
+[yacute]1ml
+[yacute]1m[ecaron]
+[yacute]2n
+[yacute]3no
+[yacute]po3[ccaron]4
+[yacute]1r
+[yacute]1s2
+[yacute]2sk
+[yacute]1t
+[yacute]t4ku
+[yacute]t4ky
+[yacute]1u
+[yacute]4vli
+[yacute]3zk
+[yacute]3zn
+[yacute]4zvu
+[yacute][ccaron]4n[ecaron]
+[yacute]1[rcaron]
+[yacute][scaron]3l
+1[zcaron]
+2[zcaron].
+[zcaron]a3d
+[zcaron]a4tv
+3[zcaron]a[ccaron]
+2[zcaron]1b
+2[zcaron]1c
+2[zcaron]1d
+[zcaron]e2b3
+[zcaron]eh3n
+[zcaron]e4ml
+[zcaron]e4zg
+[zcaron]i4dl
+[zcaron]i4jm
+3[zcaron]il
+[zcaron]i2vl
+2[zcaron]k
+[zcaron]k4ni
+2[zcaron]l
+[zcaron]4lic
+3[zcaron]lo
+2[zcaron]1m
+2[zcaron]n
+[zcaron]on2
+2[zcaron]1s2
+2[zcaron]1t
+[zcaron]2v
+[zcaron][aacute]4br
+[zcaron][aacute]4nr
+2[zcaron][dcaron]
+[zcaron][iacute]4zn
+2[zcaron][ncaron]
+2[zcaron][scaron]
+[zcaron][scaron]4ti
+[zcaron][scaron]4t[ecaron]
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-da.hyp b/Master/texmf-dist/tex/context/patterns/lang-da.hyp
new file mode 100644
index 00000000000..858442ca532
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-da.hyp
@@ -0,0 +1,26 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: dkspecial.tex dkcommon.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='da'>
+% <sourcefile>dkspecial.tex dkcommon.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Danish language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-da.pat b/Master/texmf-dist/tex/context/patterns/lang-da.pat
new file mode 100644
index 00000000000..f64f3506a7d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-da.pat
@@ -0,0 +1,1171 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: dkspecial.tex dkcommon.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='da'>
+% <sourcefile>dkspecial.tex dkcommon.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Danish language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.s[aring]3
+.[aeligature]r5i
+.[ostroke]v3r
+a3t[ostroke]
+a5v[aeligature]
+br[ostroke]d3
+5b[aeligature]
+5dr[ostroke]v
+dst[aring]4
+3d[aeligature]
+3d[ostroke]
+e3l[aeligature]
+e3l[ostroke]
+e3r[ostroke]
+er5[ostroke]n
+e5t[aeligature]
+e5t[ostroke]
+e1v[aeligature]
+e3[aeligature]
+e5[aring]
+3f[aeligature]
+3f[ostroke]
+f[ostroke]4r5en
+gi[ostroke]4
+g4s[ostroke]
+g5s[aring]
+3g[aeligature]
+3g[ostroke]1
+3g[aring]
+i5t[aeligature]
+i3[ostroke]
+3k[ostroke]
+3k[aring]
+lingeni[ostroke]4
+l3v[aeligature]
+5l[ostroke]s
+m5t[aring]
+1m[aeligature]
+3m[ostroke]
+3m[aring]
+n3k[aeligature]
+n5t[aeligature]
+3n[aeligature]
+4n5[aeligature]b
+5n[ostroke]
+o5l[aeligature]
+or3[ostroke]
+o5[aring]
+5pr[aeligature]
+5p[aeligature]d
+p[aring]3
+r5k[aeligature]
+r5t[aeligature]
+r5t[ostroke]
+r3v[aeligature]
+r5[aeligature]l
+4r[ostroke]n
+5r[ostroke]r
+3r[aring]d
+r5[aring]r
+s4k[aring]
+3sl[aring]
+s4n[aeligature]
+5st[ostroke]
+1st[aring]
+1s[aeligature]
+4s5[aeligature]n
+1s[ostroke]
+s5[ostroke]k
+s[aring]4r5
+ti4[ostroke]
+3tr[aeligature]k.
+t4s[ostroke]
+t5s[aring]
+t3v[aeligature]
+u3l[aeligature]
+3v[aeligature]rd
+1v[aeligature]rk
+5v[aring]
+y5v[aeligature]
+[aeligature]b3l
+[aeligature]3c
+[aeligature]3e
+[aeligature]g5a
+[aeligature]4gek
+[aeligature]4g5r
+[aeligature]gs5
+[aeligature]5i
+[aeligature]5kv
+[aeligature]lle4
+[aeligature]n1dr
+[aeligature]5o
+[aeligature]1re
+[aeligature]r4g5r
+[aeligature]3ri
+[aeligature]r4ma
+[aeligature]r4mo
+[aeligature]r5s
+[aeligature]5si
+[aeligature]3so
+[aeligature]3ste
+[aeligature]3ve
+[ostroke]de5
+[ostroke]3e
+[ostroke]1je
+[ostroke]3ke
+[ostroke]3le
+[ostroke]ms5
+[ostroke]n3st
+[ostroke]n4t3
+[ostroke]1re
+[ostroke]3ri
+[ostroke]rne3
+[ostroke]r5o
+[ostroke]1ve
+[aring]1d
+[aring]1e
+[aring]5h
+[aring]3l
+[aring]3re
+[aring]rs5t
+[aring]5sk
+[aring]3t
+.ae3
+.an3k
+.an1s
+.be5la
+.be1t
+.bi4tr
+.der3i
+.diagno5
+.her3
+.hoved3
+.ne4t5
+.om1
+.ove4
+.po1
+.til3
+.yd5r
+ab5le
+3abst
+a3c
+ade5la
+5adg
+a1e
+5afg
+5a4f1l
+af3r
+af4ri
+5afs
+a4gef
+a4gi
+ag5in
+ag5si
+3agti
+a4gy
+a3h
+ais5t
+a3j
+a5ka
+a3ke
+a5kr
+aku5
+a3la
+a1le
+a1li
+al3k
+4alkv
+a1lo
+al5si
+a3lu
+a1ly
+am4pa
+3analy
+an4k5r
+a3nu
+3anv
+a5o
+a5pe
+a3pi
+a5po
+a1ra
+ar5af
+1arb
+a1re
+5arg
+a1ri
+a3ro
+a3sa
+a3sc
+a1si
+a3sk
+a3so
+3a3sp
+a3ste
+a3sti
+a1ta1
+a1te
+a1ti
+a4t5in
+a1to
+ato5v
+a5tr
+a1tu
+a5va
+a1ve
+a5z
+1ba
+ba4ti
+4bd
+1be
+be1k
+be3ro
+be5ru
+be1s4
+be1tr
+1bi
+bi5sk
+b1j
+4b1n
+1bo
+bo4gr
+bo3ra
+bo5re
+1br4
+4bs
+bs5k
+b3so
+b1st
+b5t
+3bu
+bu4s5tr
+b5w
+1by
+by5s
+4c1c
+1ce
+ce5ro
+3ch
+4ch.
+ci4o
+ck3
+5cy
+3da
+4d3af
+d5anta
+da4s
+d1b
+d1d4
+1de
+de5d
+4de4lem
+der5eri
+de4rig
+de5sk
+d1f
+d1g
+d3h
+1di
+di1e
+di5l
+d3j
+d1k
+d1l
+d1m
+4d1n
+3do
+4dop
+d5ov
+d1p
+4drett
+5d4reve
+3drif
+3driv
+d5ros
+d5ru
+ds5an
+ds5in
+d1ski
+d4sm
+d4su
+dsu5l
+ds5vi
+d3ta
+d1te
+dt5o
+d5tr
+dt5u
+1du
+dub5
+d1v
+3dy
+e5ad
+e3af
+e5ag
+e3ak
+e1al
+ea4la
+e3an
+e5ap
+e3at
+e3bl
+ebs3
+e1ci
+ed5ar
+edde4
+eddel5
+e4do
+ed5ra
+ed3re
+ed3rin
+ed4str
+e3e
+3eff
+e3fr
+3eft
+e3gu
+e1h
+e3in
+ei5s
+e3je
+e4j5el
+e1ka
+e3ke
+e3kl
+4e1ko
+e5kr
+ek5sa
+3eksem
+3eksp
+e3ku
+e1kv
+e5ky
+e3lad
+el3ak
+el3ar
+e1las
+e3le
+e4lek
+3elem
+e1li
+5elim
+e3lo
+el5sa
+e5lu
+e3ly
+e4mad
+em4p5le
+em1s
+en5ak
+e4nan
+4enn
+e4no
+en3so
+e5nu
+e5ol
+e3op
+e1or
+e3ov
+epi3
+e1pr
+e3ra
+er3af
+e4rag
+e4rak
+e1re
+e4ref
+er5ege
+5erhv
+e1ri
+e4rib
+er1k
+ero5d
+er5ov
+er3s
+er5tr
+e3rum
+er5un
+e5ry
+e1ta
+e1te
+etek4s
+e1ti
+e3tj
+e1to
+e3tr
+e3tu
+e1ty
+e3um
+e3un
+3eur
+e1va
+e3ve
+e4v3erf
+e1vi
+e5x
+1fa
+fa4ce
+fags3
+f1b
+f1d
+1fe
+fej4
+fejl1
+f1f
+f1g
+f1h
+1fi
+f1k
+3fl
+1fo
+for1en
+fo4ri
+f1p
+f1s4
+4ft
+f3ta
+f1te
+f1ti
+f5to
+f5tvi
+1fu
+f1v
+3fy
+1ga
+g3art
+g1b
+g1d
+1ge
+4g5enden
+ger3in
+ge3s
+g3f
+g1g
+g1h
+1gi
+gi4b
+gi3st
+5gj
+g3k
+g1l
+g1m
+3go
+4g5om
+g5ov
+g3p
+1gr
+gs1a
+gsde4len
+g4se
+gsha4
+g5sla
+gs3or
+gs1p
+g5s4tide
+g4str
+gs1v
+g3ta
+g1te
+g1ti
+g5to
+g3tr
+gt4s
+g3ud
+gun5
+g3v
+1gy
+g5yd
+4ha.
+heds3
+he5s
+4het
+hi4e
+hi4n5
+hi3s
+ho5ko
+ho5ve
+4h3t
+hun4
+hund3
+hvo4
+i1a
+i3b
+i4ble
+i1c
+i3dr
+ids5k
+i1el
+i1en
+i3er
+i3et.
+if3r
+i3gu
+i3h
+i5i
+i5j
+i1ka
+i1ke
+ik1l
+i5ko
+ik3re
+ik5ri
+iks5t
+ik4tu
+i3ku
+ik3v
+i3lag
+il3eg
+il5ej
+il5el
+i3li
+i4l5id
+il3k
+i1lo
+il5u
+i3mu
+ind3t
+5inf
+ings1
+in3s
+in4sv
+inter1
+i3nu
+i3od
+i3og
+i5ok
+i3ol
+ion4
+ions1
+i5o5r
+i3ot
+i5pi
+i3pli
+i5pr
+i3re
+i3ri
+ir5t
+i3sc
+i3si
+i4sm
+is3p
+i1ster
+i3sti
+i5sua
+i1ta
+i1te
+i1ti
+i3to
+i3tr
+it5re.
+i1tu
+i3ty
+i1u
+i1va
+i1ve
+i1vi
+j3ag
+jde4rer
+jds1
+jek4to
+4j5en.
+j5k
+j3le
+j3li
+jlmeld5
+jlmel4di
+j3r
+jre5
+ju3s
+5kap
+k5au
+5kav
+k5b
+kel5s
+ke3sk
+ke5st
+ke4t5a
+k3h
+ki3e
+ki3st
+k1k
+k5lak
+k1le
+3klu
+k4ny
+5kod
+1kon
+ko3ra
+3kort
+ko3v
+1kra
+5kry
+ks3an
+k1si
+ks3k
+ks1p
+k3ste
+k5stu
+ks5v
+k1t
+k4tar
+k4terh
+kti4e
+kt5re
+kt5s
+3kur
+1kus
+3kut
+k4vo
+k4vu
+5lab
+lad3r
+5lagd
+la4g3r
+5lam
+1lat
+l1b
+ldiagnos5
+l3dr
+ld3st
+1le.
+5led
+4lele
+le4mo
+3len
+1ler
+1les
+4leu
+l1f
+lfin4
+lfind5
+l1go1
+l3h
+li4ga
+4l5ins
+4l3int
+li5o
+l3j
+l1ke
+l1ko
+l3ky
+l1l
+l5mu
+lo4du
+l3op
+4l5or
+3lov
+4l3p
+l4ps
+l3r
+4ls
+lses1
+ls5in
+l5sj
+l1ta
+l4taf
+l1te
+l4t5erf
+l3ti
+lt3o
+l3tr
+l3tu
+lu5l
+l3ve
+l3vi
+1ma
+m1b
+m3d
+1me
+4m5ej
+m3f
+m1g
+m3h
+1mi
+mi3k
+m5ing
+mi4o
+mi5sty
+m3k
+m1l
+m1m
+mmen5
+m1n
+3mo
+mo4da
+4mop
+4m5ov
+m1pe
+m3pi
+m3pl
+m1po
+m3pr
+m1r
+mse5s
+ms5in
+m5sk
+ms3p
+m3ste
+ms5v
+m3ta
+m3te
+m3ti
+m3tr
+m1ud
+1mul
+mu1li
+3my
+3na
+4nak
+1nal
+n1b
+n1c
+4nd
+n3dr
+nd5si
+nd5sk
+nd5sp
+1ne
+ne5a
+ne4da
+nemen4
+nement5e
+neo4
+n3erk
+n5erl
+ne5sl
+ne5st
+n1f
+n4go
+4n1h
+1ni
+4nim
+ni5o
+ni3st
+n1ke
+n1ko
+n3kr
+n3ku
+n5kv
+4n1l
+n1m
+n1n
+1no
+n3ord
+n5p
+n3r
+4ns
+n3si
+n1sku
+ns3po
+n1sta
+n5sti
+n1ta
+nta4le
+n1te
+n1ti
+ntiali4
+n3to
+n1tr
+nt4s5t
+nt4su
+n3tu
+n3ty
+4n1v
+3ny
+n3z
+o3a
+o4as
+ob3li
+o1c
+o4din
+od5ri
+od5s
+od5un
+o1e
+of5r
+o4gek
+o4gel
+o4g5o
+og5re
+og5sk
+o5h
+o5in
+oi6s5e
+o1j
+o3ka
+o1ke
+o3ku
+o3la
+o3le
+o1li
+o1lo
+o3lu
+o5ly
+1omr
+on3k
+ook5
+o3or
+o5ov
+o3pi
+op3l
+op3r
+op3s
+3opta
+4or.
+or1an
+3ordn
+ord5s
+o3re.
+o3reg
+o3rek
+o3rer
+o3re3s
+o3ret
+o3ri
+3orient
+or5im
+o4r5in
+or3k
+or5o
+or3sl
+or3st
+o3si
+o3so
+o3t
+o1te
+o5un
+ov4s
+3pa
+pa5gh
+p5anl
+p3d
+4pec
+3pen
+1per
+pe1ra
+pe5s
+pe3u
+p3f
+4p5h
+1pla
+p4lan
+4ple.
+4pler
+4ples
+p3m
+p3n
+5pok
+4po3re
+3pot
+4p5p4
+p4ro
+1proc
+p3sk
+p5so
+ps4p
+p3st
+p1t
+1pu
+pu5b
+p5ule
+p5v
+5py3
+qu4
+4raf
+ra5is
+4rarb
+r1b
+r4d5ar
+r3dr
+rd4s3
+4reks
+1rel
+re5la
+r5enss
+5rese
+re5spo
+4ress
+re3st
+re5s4u
+5rett
+r1f
+r1gu
+r1h
+ri1e
+ri5la
+4rimo
+r4ing
+ringse4
+ringso4r
+4rinp
+4rint
+r3ka
+r1ke
+r1ki
+rk3so
+r3ku
+r1l
+rmo4
+r5mu
+r1n
+ro1b
+ro3p
+r3or
+r3p
+r1r
+rre5s
+rro4n5
+r1sa
+r1si
+r5skr
+r4sk5v
+rs4n
+r3sp
+r5stu
+r5su
+r3sv
+r5tal
+r1te
+r4teli
+r1ti
+r3to
+r4t5or
+rt5rat
+rt3re
+r5tri
+r5tro
+rt3s
+r5ty
+r3ud
+run4da
+5rut
+r3va
+r1ve
+r3vi
+ry4s
+s3af
+1sam
+sa4ma
+s3ap
+s1ar
+1sat
+4s1b
+s1d
+sdy4
+1se
+s4ed
+5s4er
+se4se
+s1f
+4s1g4
+4s3h
+si4bl
+1sig
+s5int
+5sis
+5sit
+5siu
+s5ju
+4sk.
+1skab
+1ske
+s3kl
+sk5s4
+5sky
+s1le
+s1li
+slo3
+5slu
+s5ly
+s1m
+s4my
+4snin
+s4nit
+so5k
+5sol
+5som.
+3somm
+s5oms
+5somt
+3son
+4s1op
+sp4
+3spec
+4sper
+3s4pi
+s1pl
+3sprog.
+s5r4
+s1s4
+4st.
+5s4tam
+1stan
+st5as
+3stat
+1stav
+1ste.
+1sted
+3stel
+5stemo
+1sten
+5step
+3ster.
+3stes
+5stet
+5stj
+3sto
+st5om
+1str
+s1ud
+3sul
+s3un
+3sur
+s3ve
+3s4y
+1sy1s
+5ta.
+1tag
+tands3
+4tanv
+4tb
+tede4l
+teds5
+3teg
+5tekn
+teo1
+5term
+te5ro
+4t1f
+6t3g
+t1h
+tialis5t
+3tid
+ti4en
+ti3st
+4t3k
+4t1l
+tli4s5
+t1m
+t1n
+to5ra
+to1re
+to1ri
+tor4m
+4t3p
+t4ra
+4tres
+tro5v
+1try
+4ts
+t3si
+ts4pa
+ts5pr
+t3st
+ts5ul
+4t1t
+t5uds
+5tur
+t5ve
+1typ
+u1a
+5udl
+ud5r
+ud3s
+3udv
+u1e
+ue4t5
+uge4ri
+ugs3
+u5gu
+u3i
+u5kl
+uk4ta
+uk4tr
+u1la
+u1le
+u5ly
+u5pe
+up5l
+u5q
+u3ra
+u3re
+u4r3eg
+u1rer
+u3ro
+us5a
+u3si
+u5ska
+u5so
+us5v
+u1te
+u1ti
+u1to
+ut5r
+ut5s4
+5u5v
+va5d
+3varm
+1ved
+ve4l5e
+ve4reg
+ve3s
+5vet
+v5h
+vi4l3in
+1vis
+v5j
+v5k
+vl4
+v3le
+v5li
+vls1
+1vo
+4v5om
+v5p
+v5re
+v3st
+v5su
+v5t
+3vu
+y3a
+y5dr
+y3e
+y3ke
+y5ki
+yk3li
+y3ko
+yk4s5
+y3kv
+y5li
+y5lo
+y5mu
+yns5
+y5o
+y1pe
+y3pi
+y3re
+yr3ek
+y3ri
+y3si
+y3ti
+y5t3r
+y5ve
+zi5o
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-de.hyp b/Master/texmf-dist/tex/context/patterns/lang-de.hyp
new file mode 100644
index 00000000000..7ec51a0d5d2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-de.hyp
@@ -0,0 +1,40 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: dehyphn.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='de'>
+% <sourcefile>dehyphn.tex</sourcefile>
+% <title>TeX hyphenation patterns for the German language (new orthography)</title>
+% <copyright>
+% <year>1988, 1991</year>
+% <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+% <comment>German hyphen patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% <copyright>
+% <year>1998-2001</year>
+% <owner>Walter Schmidt</owner>
+% <comment>Adaption to new German orthography</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-de.pat b/Master/texmf-dist/tex/context/patterns/lang-de.pat
new file mode 100644
index 00000000000..02b446508b7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-de.pat
@@ -0,0 +1,5842 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: dehyphn.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='de'>
+% <sourcefile>dehyphn.tex</sourcefile>
+% <title>TeX hyphenation patterns for the German language (new orthography)</title>
+% <copyright>
+% <year>1988, 1991</year>
+% <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+% <comment>German hyphen patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% <copyright>
+% <year>1998-2001</year>
+% <owner>Walter Schmidt</owner>
+% <comment>Adaption to new German orthography</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.aa6l
+.ab3a4s
+.ab3ei
+.abi2
+.ab3it
+.ab1l
+.ab1r
+.ab3u
+.ad3o4r
+.alti6
+.ana3c
+.an5alg
+.an1e
+.ang8s2t1
+.an1s
+.ap1p
+.ar6sc
+.ar6ta
+.ar6tei
+.as2z
+.au2f1
+.au2s3
+.be5erb
+.be3na
+.ber6t5r
+.bie6r5
+.bim6s5t
+.brot3
+.bru6s
+.ch6
+.che6f5
+.da8c
+.da2r
+.dar5in
+.dar5u
+.den6ka
+.de5r6en
+.des6pe
+.de8spo
+.de3sz
+.dia3s4
+.dien4
+.dy2s1
+.ehren5
+.eine6
+.ei6n5eh
+.ei8nen
+.ein5sa
+.en6der
+.en6d5r
+.en3k4
+.en8ta8
+.en8tei
+.en4t3r
+.epo1
+.er6ban
+.er6b5ei
+.er6bla
+.er6d5um
+.er3ei
+.er5er
+.er3in
+.er3o4b
+.erwi5s
+.es1p
+.es8t1l
+.es8t1n
+.ex1a2
+.ex3em
+.fal6sc
+.fe6st5a
+.flu4g3
+.furch8
+.ga6ner
+.ge3n4a
+.ge5r[odiaeresis]
+.ges6
+.halb5
+.halbe6
+.hal6br
+.haup4
+.hau4t
+.heima6
+.he4r3e
+.her6za
+.he5x
+.hin3
+.hir8sc
+.ho4c
+.hu3sa
+.hy5o
+.ibe5
+.ima6ge
+.in1
+.ini6
+.is5chi
+.jagd5
+.kal6k5o
+.ka6ph
+.ki4e
+.kop6f3
+.kraf6
+.k[udiaeresis]5ra
+.lab6br
+.liie6
+.lo6s5k
+.l[odiaeresis]4s3t
+.ma5d
+.mi2t1
+.no6th
+.no6top
+.obe8ri
+.ob1l
+.obs2
+.ob6st5e
+.or3c
+.ort6s5e
+.ost3a
+.oste8r
+.pe4re
+.pe3ts
+.ph6
+.po8str
+.rau4m3
+.re5an
+.ro8q
+.ru5the
+.r[udiaeresis]5be
+.sch8
+.se6e
+.se5n6h
+.se5ra
+.si2e
+.spi6ke
+.st4
+.sy2n
+.tages5
+.tan6kl
+.ta8th
+.te6e
+.te8str
+.to6der
+.to8nin
+.to6we
+.um1
+.umpf4
+.un1
+.une6
+.unge5n
+.ur1c
+.ur5en
+.ve6rin
+.vora8
+.wah6l5
+.we8ges
+.we8s2t
+.wes3te
+.wo6r
+.wor3a
+.wun4s
+.zi4e
+.zuch8
+.[adiaeresis]nde8re
+.[odiaeresis]ch8
+aa1c
+aa2gr
+aal5e
+aa6r5a
+a5arti
+aa2s1t
+aat2s
+6aba
+ab3art
+1abdr
+6abel
+aben6dr
+ab5erk
+ab5err
+ab5esse
+1abf
+1abg
+1abh[adiaeresis]
+ab1ir
+1abko
+a1bl
+ab1la
+5ablag
+a6bla[ssharp]
+ab4ler
+ab1lu
+a8bl[adiaeresis]
+5a6bl[odiaeresis]
+abma5c
+1abn
+ab1ra
+ab1re
+5a6brec
+ab1ro
+ab1s
+ab8sk
+abs2z
+3abtei
+ab1ur
+1abw
+5abze
+5abzu
+ab1[adiaeresis]n
+ab[adiaeresis]u8
+a4ce.
+a5chal
+ach5art
+ach5au
+a1che
+a8chent
+ach6er.
+a6ch5erf
+a1chi
+ach1l
+ach3m
+ach5n
+a1cho
+ach3re
+a1chu
+ach1w
+a1chy
+ach5[adiaeresis]f
+ack1o
+acks6t
+ack5sta
+a1d
+8ad.
+a6d5ac
+ad3ant
+ad8ar
+5addi
+a8dein
+ade5o8
+adi5en
+1adj
+1adle
+ad1op
+a2dre
+3adres
+adt1
+1adv
+a6d[adiaeresis]
+a1e2d
+ae1r
+a1er.
+1aero
+8afa
+a3fal
+af1an
+a5far
+a5fat
+af1au
+a6fentl
+a2f1ex
+af1fr
+af5rau
+af1re
+1afri
+af6tent
+af6tra
+aft5re
+a6f5um
+8af[adiaeresis]
+ag5abe
+5a4gent
+ag8er
+ages5e
+1aggr
+ag5las
+ag1lo
+a1gn
+ag2ne
+1agog
+a6g5und
+a1ha
+a1he
+ah5ein
+a4h3erh
+a1hi
+ahl1a
+ah1le
+ah4m3ar
+ahn1a
+a5ho
+ahra6
+ahr5ab
+ah1re
+ah8rei
+ahren8s
+ahre4s3
+ahr8ti
+ah1ru
+a1hu
+ah8[odiaeresis]
+ai3d2s
+ai1e
+aif6
+a3inse
+ai4re.
+a5isch.
+ais8e
+a3ismu
+ais6n
+aiso6
+a1j
+1akad
+a4kade
+a1ke
+a1ki
+1akko
+5akro1
+a5lal
+al5ans
+3al8arm
+al8beb
+al8berw
+alb5la
+3album
+al1c
+a1le
+a6l5e6be
+a4l3ein
+a8lel
+a8lerb
+a8lerh
+a6lert
+5a6l5eth
+1algi
+al4gli
+al3int
+al4lab
+al8lan
+al4l3ar
+alle3g
+a1lo
+a4l5ob
+al6schm
+al4the
+al4t3re
+8a1lu
+alu5i
+a6lur
+alu3ta
+a1l[adiaeresis]
+a6mate
+8ame.
+5a6meise
+am6m5ei
+am6mum
+am2n
+ampf3a
+am6schw
+am2ta
+a1mu
+a1m[adiaeresis]
+a3nac
+a1nad
+anadi5e
+an3ako
+an3alp
+3analy
+an3ame
+an3ara
+a1nas
+an5asti
+a1nat
+anat5s
+an8dent
+ande4s3
+an1ec
+an5eis
+an1e2k
+4aner.
+a6n5erd
+a8nerf
+a6n5erke
+1anfa
+5anfert
+1anf[adiaeresis]
+3angab
+5angebo
+an3gli
+ang6lis
+an2gn
+3angri
+ang5t6
+5anh[adiaeresis]
+ani5g
+ani4ka
+an5i8on
+an1kl
+an6kno
+an4kro
+1anl
+anma5c
+anmar4
+3annah
+anne4s3
+a1no
+5a6n1o2d
+5a6n3oma
+5a6nord
+1anr
+an1sa
+5anschl
+an4soz
+an1st
+5anstal
+an1s2z
+5antenn
+an1th
+5anw[adiaeresis]
+a5ny
+an4z3ed
+5anzeig
+5anzieh
+3anzug
+an1[adiaeresis]
+5an[adiaeresis]s
+a1n[odiaeresis]
+an[odiaeresis]8d
+a1os
+a1pa
+3apfel
+a2ph1t
+aph5[adiaeresis]6
+a1pi
+8apl
+apo1c
+apo1s
+a6pos2t
+a6poth
+1appa
+ap1pr
+a1pr
+a5p[adiaeresis]
+a3p[udiaeresis]
+a1ra
+a4r3af
+ar3all
+3arbei
+2arbt
+ar1c
+2a1re
+ar3ein
+ar2gl
+2a1ri
+ari5es
+ar8kers
+ar6les
+ar4nan
+ar5o6ch
+ar1o2d
+a1rol
+ar3ony
+a8ror
+a3ros
+ar5ox
+ar6schl
+8artei
+ar6t5ri
+a1ru
+a1ry
+1arzt
+arz1w
+ar8z[adiaeresis]
+ar[adiaeresis]8m
+ar[odiaeresis]6
+ar5[odiaeresis]m
+ar1[udiaeresis]2
+a1sa
+a6schec
+asch5l
+asch3m
+a6schn
+a3s4hi
+as1pa
+asp5l
+as5tev
+1asth
+a1str
+ast3re
+8a1ta
+ata5c
+ata3la
+a6tapf
+ata5pl
+a1te
+a6teli
+aten5a
+ate5ran
+6atf
+6atg
+a1th
+at3hal
+1athl
+2a1ti
+5atlant
+3atlas
+8atmus
+6atn
+a1to
+a6t5ops
+ato6ra
+a6t5ort.
+4a1tr
+a6t5ru
+at2t1h
+at5t6h[adiaeresis]
+6a1tu
+atz1w
+a1t[adiaeresis]
+a1t[udiaeresis]
+au1a
+au6bre
+auch3a
+au1e
+aue4l
+5aufent
+3auff[udiaeresis]
+3aufga
+1aufn
+auf1t
+3auftr
+1aufw
+3auge.
+au4kle
+aule8s
+6aum
+au8mar
+aum5p
+1ausb
+3ausd
+1ausf
+1ausg
+au8sin
+au4sta
+1ausw
+1ausz
+aut5eng
+au1th
+1auto
+au[ssharp]e8
+a1v
+ave5r6a
+aver6i
+a1w
+a6wes
+a1x
+a2xia
+a6xio
+a1ya
+a1z
+azi5er.
+8a[ssharp]
+1ba
+8ba8del
+ba1la
+ba1na
+ban6k5r
+ba5ot
+bardi6n
+ba1ro
+basten6
+bau3sp
+2b1b
+bb6le
+b2bli
+2b1c
+2b1d
+1be
+be1a
+be8at.
+be1ch
+8becht
+8becke.
+be5el
+be1en
+bee8rei
+be5eta
+bef2
+8beff
+be1g2
+beh[odiaeresis]8
+bei1s
+6b5eisen
+bei3tr
+b8el
+bel8o
+belu3t
+be3nac
+bend6o
+be6ners
+be6nerw
+be4nor
+ben4se6
+bens5el
+be1n[adiaeresis]
+be1n[udiaeresis]
+be1o2
+b8er.
+be1ra
+be8rac
+ber8gab.
+ber1r
+be1r[udiaeresis]
+bes8c
+bes5erh
+bes2p
+be5tha
+bet5sc
+be1un
+be1ur
+8bex
+be6zwec
+2b1f8
+2b1g2
+bga2s5
+bge1
+2b1h
+bhole6
+1bi
+bi1bl
+b6ie
+bi1el
+bi1la
+bil[adiaeresis]5
+bi1na
+bi4nok
+bi6stu
+bi5tr
+bit4t5r
+b1j
+2b1k2
+bk[udiaeresis]6
+bl8
+b6la.
+6b1lad
+6blag
+8blam
+1blat
+b8latt
+3blau.
+b6lav
+3ble.
+b1leb
+b1led
+8b1leg
+8b1leh
+8bleid
+8bleih
+6b3lein
+ble4m3o
+4blich
+b4lind
+8bling
+b2lio
+5blit
+b4litz
+b1loh
+8b1los
+1blu
+5blum
+2blun
+blut3a
+blut5sc
+3bl[adiaeresis]
+bl[adiaeresis]s5c
+5bl[odiaeresis]
+3bl[udiaeresis]
+bl[udiaeresis]8sc
+2b1m
+2b1n
+1bo
+bo1ch
+bo5d6s
+boe5
+8boff
+8bonk
+bo1ra
+b1ort
+2b1p2
+b1q
+1br
+brail6
+brast8
+bre4a
+b5red
+8bref
+8b5riem
+b6riga
+bro1s
+b1rup
+b2ruz
+8br[odiaeresis]h
+br[odiaeresis]s5c
+8bs
+b1sa
+b8sang
+b2s1ar
+b1sc
+bs3erl
+bs3erz
+b8sof
+b1s2p
+bst1h
+b3stru
+b5st[adiaeresis]
+b6sun
+2b1t
+b2t1h
+1bu
+bu1ie
+bul6k
+b8ure
+bu6sin
+6b1v
+2b1w
+1by1
+by6te.
+8b1z
+1b[adiaeresis]
+b5[adiaeresis]6s5
+1b[udiaeresis]
+b6[udiaeresis]5bere
+b[udiaeresis]ge6
+b[udiaeresis]gel5e
+b[udiaeresis]r6sc
+1ca
+cag6
+ca5la
+ca6re
+ca5y
+c1c
+1ce
+celi4c
+celich5
+ce1ro
+c8h
+2ch.
+1chae
+ch1ah
+ch3akt
+cha6mer
+8chanz
+5chara
+3chari
+5chato
+6chb
+1chef
+6chei
+ch3eil
+ch3eis
+6cherkl
+6chf
+4chh
+5chiad
+5chias
+6chins
+8chj
+chl6
+5chlor
+6ch2m
+2chn6
+ch8nie
+5cho.
+8chob
+choi8d
+6chp
+ch3ren
+ch6res
+ch3r[udiaeresis]
+2chs
+2cht
+cht5ha
+cht3hi
+5chthon
+ch6tin
+6chuh
+chu4la
+6ch3unt
+chut6t
+8chw
+1ci
+ci5tr
+c2k
+2ck.
+ck1ei
+4ckh
+ck3l
+ck3n
+ck5o8f
+ck1r
+2cks
+ck5stra
+ck6s5u
+c2l
+1c8o
+con6ne
+8corb
+cos6t
+c3q
+1c6r
+8c1t
+1cu
+1cy
+5c[adiaeresis]1
+c[odiaeresis]5
+1da.
+8daas
+2dabg
+8dabr
+6dabt
+6dabw
+1dac
+da2gr
+6d5alk
+8d5amt
+dan6ce.
+dani5er
+dan8ker
+2danl
+danla6
+6dans
+8danzi
+6danzu
+d1ap
+da2r1a8
+2d1arb
+d3arc
+dar6men
+4d3art
+8darz
+1dat
+8datm
+2d1auf
+2d1aus
+2d1b
+2d1c
+2d1d
+d5de
+d3d2h
+dd[adiaeresis]mme8
+1de
+2deal
+de5an
+de3cha
+de1e
+defe6
+6deff
+2d1ehr
+5d4eic
+de5isc
+de8lar
+del6s5e
+del6spr
+de4mag
+de8mun
+de8nep
+dene6r
+8denge.
+8dengen
+de5o6d
+2deol
+de5ram
+8derdb
+der5ein
+de1ro
+der1r
+d8ers
+der5um
+de4s3am
+de4s3an
+de4sau
+de6sil
+de4sin
+de8sor
+de4spr
+de2su
+8deul
+de5us.
+2d1f
+df2l
+2d1g
+2d1h
+1di
+dia5c
+di5ara
+dice5
+di3chr
+di5ena
+di1gn
+di1la
+dil8s
+di1na
+8dind
+6dinf
+4d3inh
+2d1ins
+di5o6d
+di3p4t
+di8sen
+dis1p
+di5s8per
+di6s5to
+dis3tr
+di8tan
+di8tin
+d1j
+6dje
+2dju
+2d1k
+2d1l
+2d1m
+2d1n6
+dni6
+dnje6
+1do
+6d5obe
+do6berf
+6d5ony
+do3ran
+6dord
+2d1org
+dor4t3h
+6doth
+dott8e
+2d1p
+d5q
+dr4
+1drah
+8drak
+d5rand
+6dre.
+4drech
+d6reck
+4d3reg
+8d3reic
+d5reife
+8drem
+8d1ren
+2drer
+8dres.
+6d5rh
+1dria
+d1ric
+8drind
+droi6
+dro5x
+1dru
+8drut
+dr[odiaeresis]s5c
+1dr[udiaeresis]
+dr[udiaeresis]5b
+dr[udiaeresis]8sc
+2ds
+d1sa
+d6san
+dsat6
+d1sc
+5d6scha.
+5dschik
+dse8e
+d8serg
+8dsl
+d1sp
+d4spak
+ds2po
+d8sp[adiaeresis]
+d1st
+d1s[udiaeresis]
+2dt
+d1ta
+d1te
+d1ti
+d1to
+dt1s6
+d1tu
+d5t[adiaeresis]
+1du
+du5als
+du1b6
+du1e
+duf4t3r
+4d3uh
+du5ie
+8duml
+8dumw
+2d1und
+du8ni
+6d5unt
+dur2c
+durch3
+6durl
+6dursa
+8durt
+dus1t
+du8schr
+2d1v
+2d1w
+dwa8l
+2d1z
+1d[adiaeresis]
+6d[adiaeresis]h
+8d[adiaeresis]nd
+d[adiaeresis]6r
+d[odiaeresis]8bl
+d5[odiaeresis]l
+d[odiaeresis]r6fl
+d[odiaeresis]8sc
+d5[odiaeresis]4st
+1d[udiaeresis]
+ea4ben
+e1ac
+e1ah
+e1akt
+e1al.
+e5alf
+e1alg
+e5a8lin
+e1alk
+e1all
+e5alp
+e1alt
+e5alw
+e1am
+e1and
+ea6nim
+e1ar.
+e5arf
+e1ark
+e5arm
+e3art
+e5at.
+e6ate
+e6a5t6l
+e8ats
+e5att
+e6au.
+e1aus
+e1b
+e6b5am
+ebens5e
+eb4lie
+eb4ser
+eb4s3in
+e1che
+e8cherz
+e1chi
+ech3m
+8ech3n
+ech1r
+ech8send
+ech4su
+e1chu
+eck5an
+e5cl
+e1d
+ee5a
+ee3e
+ee5g
+e1ei
+ee5isc
+eei4s3t
+ee6lend
+e1ell
+ee5l[odiaeresis]
+e1erd
+ee3r4e
+ee8reng
+eere6s5
+ee5r[adiaeresis]
+ee6tat
+e1ex
+e1f
+e6fau
+e8fe8b
+3effek
+ef3rom
+ege6ra
+eglo6si
+1egy
+e1ha
+e6h5ach
+eh5ans
+e6hap
+eh5auf
+e1he
+e1hi
+ehl3a
+eh1le
+ehl5ein
+eh1mu
+ehn5ec
+e1ho
+ehr1a
+eh1re
+ehre6n
+eh1ri
+eh1ru
+ehr5um
+e1hu
+eh1w
+e1hy
+e1h[adiaeresis]
+e1h[odiaeresis]
+e3h[udiaeresis]t
+ei1a
+eia6s
+ei6bar
+eich3a
+eich5r
+ei4dar
+ei6d5ei
+ei8derf
+ei3d4sc
+ei1e
+8eifen
+3eifri
+1eign
+eil1d
+ei6mab
+ei8mag
+ein1a4
+ei8nat
+ei8nerh
+ei8ness
+ei6nete
+ein1g
+e8ini
+ein1k
+ei6n5od
+ei8nok
+ei4nor
+e3ins[adiaeresis]
+ei1o
+e1irr
+ei5ru
+ei8sab
+ei5schn
+ei6s5ent
+ei8sol
+ei4t3al
+eit3ar
+eit1h
+ei6thi
+ei8tho
+eit8samt
+ei6t5um
+e1j
+1ekd
+e1ke
+e1ki
+e1k2l
+e1kn
+ekni4
+e1la
+e2l1al
+6elan
+e6lanf
+e8lanl
+e6l5ans
+el3arb
+el3arm
+e6l3art
+5e6lasti
+e6lauge
+elbst5a
+e1le
+6elef
+ele6h
+e6l5ehe
+e8leif
+e6l5einh
+1elek
+e8lel
+3eleme
+e6lemen
+e6lente
+el5epi
+e4l3err
+e6l5ersc
+elf2l
+elg2
+e6l5ins
+ell8er
+4e1lo
+e4l3ofe
+el8soh
+el8tent
+5eltern
+e1lu
+elut2
+e1l[adiaeresis]
+e1l[udiaeresis]
+em8dei
+em8meis
+4emo
+emo5s
+1emp1f
+1empt
+1emto
+e1mu
+emurk4
+emurks5
+e1m[adiaeresis]
+en5a6ben
+en5achs
+en5ack
+e1nad
+en5af
+en5all
+en3alt
+en1am
+en3an.
+en3ant
+en3anz
+en1a6p
+en1ar
+en1a6s
+6e1nat
+en3auf
+en3aus
+en2ce
+enda6l
+end5erf
+end5erg
+en8dess
+4ene.
+en5eck
+e8neff
+e6n5ehr
+e6n5eim
+en3eis
+6enem.
+6enen
+e4nent
+4ener.
+e8nerd
+e6n3erf
+e4nerg
+5energi
+e6n5erla
+en5ers
+e6nerst
+en5erw
+6enes
+e6n5ess
+e2nex
+en3glo
+2eni
+enni6s5
+ennos4
+enns8
+e1no
+e6nober
+eno8f
+en5opf
+e4n3ord
+en8sers
+ens8kl
+en1sp
+ens6por
+en5t6ag
+enta5go
+en8terbu
+en6tid
+3entla
+ent5ric
+5entwic
+5entwu
+1entz
+enu5i
+e3ny
+en8zan
+en1[odiaeresis]f
+e1n[odiaeresis]s
+e1n[udiaeresis]g
+eo1c
+e5o6fe
+e5okk
+e1on.
+e3onf
+e5onk
+e5onl
+e5onr
+e5opf
+e5ops
+e5or.
+e1ord
+e1org
+eo5r6h
+eo1t
+e1pa
+e8pee
+e6p5e6g
+ep5ent
+e1p2f
+e1pi
+5epid
+e6pidem
+e1pl
+5epos
+e6pos.
+ep4p3a
+e1pr
+e1p[adiaeresis]
+e1q
+e1ra.
+er5aal
+8eraba
+e5rabel
+er5a6ben
+e5rabi
+er3abs
+er3ach
+era5e
+era5k6l
+er3all
+er3amt
+e3rand
+e3rane
+er3ans
+e5ranz.
+e1rap
+er3arc
+e3rari
+er3a6si
+e1rat
+erat3s
+er3auf
+e3raum
+3erbse
+er1c
+e1re
+4e5re.
+er3eck
+er5egg
+er5e2h
+2erei
+e3rei.
+e8reine
+er5einr
+6eren.
+e4r3enm
+4erer.
+e6r5erm
+er5ero
+er5erst
+e4r3erz
+er3ess
+5erf[udiaeresis]l
+er8gan.
+5ergebn
+er2g5h
+5erg[adiaeresis]nz
+5erh[odiaeresis]hu
+2e1ri
+eri5ak
+e6r5iat
+e4r3ind
+e6r5i6n5i6
+er5ins
+e6r5int
+er5itio
+er1kl
+3erkl[adiaeresis]
+5erl[odiaeresis]s.
+ermen6s
+er6nab
+3ernst
+6e1ro.
+e1rod
+er1o2f
+e1rog
+6e3roi
+ero8ide
+e3rol
+e1rom
+e1ron
+e3rop8
+e2r1or
+e1ros
+e1rot
+er5ox
+ersch4
+5erstat
+er6t5ein
+er2t1h
+er5t6her
+2e1ru
+eruf4s3
+e4r3uhr
+er3ums
+e5rus
+5erwerb
+e1ry
+er5zwa
+er3zwu
+er[adiaeresis]8m
+er5[adiaeresis]s
+er[odiaeresis]8
+e3r[odiaeresis]s.
+e6r1[udiaeresis]2b
+e1sa
+esa8b
+e8sap
+e6s5a6v
+e1sc
+esch4l
+ese1a
+es5ebe
+eserve5
+e8sh
+es5ill
+es3int
+es4kop
+e2sl
+eso8b
+e1sp
+espei6s5
+es2po
+es2pu
+5essenz
+e6stabs
+e6staf
+e6st5ak
+est3ar
+e8stob
+e1str
+est5res
+es3ur
+e2sz
+e1s[udiaeresis]
+e1ta
+et8ag
+etari5e
+eta8ta
+e1te
+eten6te
+et5hal
+e5thel
+e1ti
+1etn
+e1to
+e1tr
+et3rec
+e8tscha
+et8se
+et6tei
+et2th
+et2t1r
+e1tu
+etu1s
+et8zent
+et8zw
+e1t[adiaeresis]
+e1t[odiaeresis]
+e1t[udiaeresis]
+eu1a2
+eu1e
+eue8rei
+eu5fe
+euin5
+euk2
+e1um.
+eu6nio
+e5unter
+eu1o6
+eu5p
+3europ
+eu1sp
+eu5str
+eu8zo
+e1v
+eval6s
+eve5r6en
+ever4i
+e1w
+e2wig
+ex1or
+1exp
+1extr
+ey3er.
+e1z
+e1[adiaeresis]2
+e5[odiaeresis]8
+e1[udiaeresis]
+e8[ssharp]es
+fa6ch5i
+fade8
+fa6del
+fa5el.
+fal6lo
+falt8e
+fa1na
+fan4gr
+6fanl
+6fap
+far6ba
+far4bl
+far6r5a
+2f1art
+fa1sc
+fau8str
+fa3y
+2f1b2
+6f1c
+2f1d
+1fe
+2f1eck
+fe6dr
+feh6lei
+f6eim
+8feins
+f5eis
+fel5en
+8feltern
+8femp
+fe5rant
+4ferd.
+ferri8
+fe8stof
+fe6str
+fe6stum
+fe8tag
+fet6ta
+fex1
+2ff
+f1fa
+f6f5arm
+f5fe
+ffe5in
+ffe6la
+ffe8ler
+ff1f
+f1fla
+ff3lei
+ff4lie
+ff8sa
+ff6s5ta
+2f1g2
+fgewen6
+4f1h
+1fi
+fid4
+fi3ds
+fieb4
+fi1la
+fi8lei
+fil4m5a
+f8in.
+fi1na
+8finf
+fi8scho
+fi6u
+6f1j
+2f1k2
+f8lanz
+fl8e
+4f3lein
+8flib
+4fling
+f2lix
+6f3lon
+5flop
+1flor
+5f8l[adiaeresis]c
+3fl[odiaeresis]t
+2f1m
+2f1n
+1fo
+foh1
+f2on
+fo6na
+2f1op
+fo5ra
+for8mei
+for8str
+for8th
+for6t5r
+fo5ru
+6f5otte
+2f1p8
+f1q
+fr6
+f5ram
+1f8ran
+f8ra[ssharp]
+f8re.
+frei1
+5frei.
+f3reic
+f3rest
+f1rib
+8f1ric
+6frig
+1fris
+fro8na
+fr[adiaeresis]s5t
+2fs
+f1sc
+f2s1er
+f5str
+fs3t[adiaeresis]t
+2ft
+f1tak
+f1te
+ft5e6h
+ftere6
+ft1h
+f1ti
+f5to
+f1tr
+ft5rad
+ft1sc
+ft2so
+f1tu
+ftwi3d4
+ft1z
+1fu
+6f5ums
+6funf
+fun4ka
+fu8[ssharp]end
+6f1v
+2f1w
+2f1z
+1f[adiaeresis]
+f[adiaeresis]1c
+8f[adiaeresis]rm
+6f[adiaeresis]ug
+f[adiaeresis]8[ssharp]
+f[odiaeresis]de3
+8f[odiaeresis]f
+3f[odiaeresis]r
+1f[udiaeresis]
+f[udiaeresis]n4f3u
+1ga
+ga6bl
+6gabw
+8gabz
+g3a4der
+ga8ho
+ga5isc
+4gak
+ga1la
+6g5amt
+ga1na
+gan5erb
+gan6g5a
+ga5nj
+6ganl
+8gansc
+6garb
+2g1arc
+2g1arm
+ga5ro
+6g3arti
+ga8sa
+ga8sc
+ga6stre
+2g1atm
+6g5auf
+gau5fr
+g5aus
+2g1b
+g5c
+6gd
+g1da
+1ge
+ge1a2
+ge6an
+ge8at.
+ge1e2
+ge6es
+gef2
+8geff
+ge1g2l
+ge1im
+4g3eise
+geist5r
+gel8bra
+gelt8s
+ge5l[odiaeresis]
+ge8nin
+gen3k
+6g5entf
+ge3n[adiaeresis]
+ge1or
+ge1ra
+ge6rab
+ger8au
+8gerh[odiaeresis]
+ger8ins
+ge1ro
+6g5erz.
+ge1r[adiaeresis]
+ge1r[udiaeresis]
+ge1s
+ges2p
+ge2s7te.
+ge2s7ten
+ge2s7ter
+ge2s7tik
+ge5unt
+4g3ex3
+2g1f8
+2g1g
+g1ha
+6g1hei
+5ghel.
+g5henn
+6g1hi
+g1ho
+1ghr
+g1h[odiaeresis]
+1gi
+gi5la
+gi8me.
+gi1na
+4g3ins
+gis1tr
+g1j
+2g1k
+8gl.
+1glad
+g5lag
+glan4z3
+1glas
+6glass
+5glaub
+g3lauf
+1gle.
+g5leb
+3gleic
+g3lein
+5gleis
+1glem
+2gler
+8g3leu
+gli8a
+g2lie
+3glied
+1g2lik
+1g2lim
+g6lio
+1gloa
+5glom
+1glon
+1glop
+g1los
+g4loss
+g5luf
+1g2ly
+1gl[udiaeresis]
+2g1m
+gn8
+6gn.
+1gna
+8gnach
+2gnah
+g1nas
+g8neu
+g2nie
+g3nis
+1gno
+8gnot
+1go
+goe1
+8gof
+2gog
+5gogr
+6g5oh
+goni5e
+6gonist
+go1ra
+8gord
+2g1p2
+g1q
+1gr4
+g5rahm
+gra8m
+gra4s3t
+6g1rec
+gre6ge
+4g3reic
+g5reit
+8grenn
+gri4e
+g5riem
+5grif
+2grig
+g5ring
+6groh
+2grot
+gro6[ssharp]
+4grut
+2gs
+gs1ab
+g5sah
+gs1ak
+gs1an
+gs8and
+gs1ar
+gs1au
+g1sc
+gs1ef
+g5seil
+gs5ein
+g2s1er
+gs1in
+g2s1o
+gso2r
+gs1pr
+g2s1u
+2g1t
+g3te
+g2t1h
+1gu
+gu5as
+gu2e
+2gue.
+6gued
+4g3uh
+8gums
+6g5unt
+gut3h
+gu2tu
+4g1v
+2g1w
+gy1n
+g1z
+1g[adiaeresis]
+8g[adiaeresis]8m
+6g[adiaeresis]rm
+1g[odiaeresis]
+1g[udiaeresis]
+6g[udiaeresis]b
+1haa
+hab8r
+ha8del
+hade4n
+8hae
+ha5el.
+haf6tr
+2hal.
+ha1la
+hal4b5a
+6hale
+8han.
+ha1na
+han6dr
+han6ge.
+2hani
+h5anth
+6hanz
+6harb
+h3arbe
+h3arme
+ha5ro
+ha2t1h
+h1atm
+hau6san
+ha8[ssharp]
+h1b2
+h1c
+h1d
+he2bl
+he3cho
+h3echt
+he5d6s
+5heft
+h5e6he.
+hei8ds
+h1eif
+2hein
+he3ism
+he5ist.
+heit8s3
+hek6ta
+hel8lau
+8helt
+he6mer
+1hemm
+6h1emp
+hen5end
+hen5klo
+hen6tri
+he2nu
+8heo
+he8q
+her3ab
+he5rak
+her3an
+4herap
+her3au
+h3erbi
+he1ro
+he8ro8b
+he4r3um
+her6z5er
+he4spe
+he1st
+heta6
+het5am
+he5th
+heu3sc
+he1xa
+hey5e
+h1f2
+h1g
+hgol8
+h1h
+h1iat
+hie6r5i
+hi5kt
+hil1a2
+hil4fr
+hi5nak
+hin4ta
+hi2nu
+hi5ob
+hirn5e
+hir6ner
+hi1sp
+hi1th
+hi5tr
+5hitz
+h1j
+h6jo
+h1k2
+hlabb4
+hla4ga
+hla6gr
+h5lai
+hl8am
+h1las
+h1la[ssharp]
+hl1c
+h1led
+h3lein
+h5ler.
+h2lif
+h2lim
+h8linf
+hl5int
+h2lip
+h2lit
+h4lor
+h3lose
+h1l[adiaeresis]s
+hme5e
+h2nee
+h2nei
+hn3eig
+h2nel
+hne8n
+hne4p3f
+hn8erz
+h6netz
+h2nip
+h2nit
+h1nol
+hn5sp
+h2nuc
+h2nud
+h2nul
+hoch1
+1hoh
+hoh8lei
+2hoi
+ho4l3ar
+1holz
+h2on
+ho1ra
+6horg
+5horn.
+ho3sl
+hos1p
+ho4spi
+h1p
+hpi6
+h1q
+6hr
+h1rai
+h8rank
+h5raum
+hr1c
+hrcre8
+h1red
+h3reg
+h8rei.
+h4r3erb
+h8rert
+hrg2
+h1ric
+hr5ins
+h2rom
+hr6t5erl
+hr2t1h
+hr6t5ra
+hr8tri
+h6rum
+hr1z
+hs3ach
+h6s5amt
+h1sc
+h6s5ec
+h6s5erl
+hs8erle
+h4sob
+h1sp
+h8spa[ssharp]
+h8spel
+hs6po
+h4spun
+h1str
+h4s3tum
+hs3und
+h1s[udiaeresis]
+h5ta.
+h5tab
+ht3ac
+ht1ak
+ht3ang
+h5tanz
+ht1ar
+ht1at
+h5taub
+h1te
+h2t1ec
+ht3eff
+ht3ehe
+h4t3eif
+h8teim
+h4t3ein
+ht3eis
+h6temp
+h8tentf
+hte8ren
+h6terf[udiaeresis]
+h8tergr
+h4t3erh
+h6t5ersc
+h8terst
+h8tese
+h8tess
+h2t1eu
+h4t3ex
+ht1he
+ht5hu
+h1ti
+ht5rak
+hts3ah
+ht1sc
+ht6sex
+ht8sk
+ht8so
+h1tu
+htz8
+h5t[udiaeresis]m
+hub5l
+hu6b5r
+huh1l
+h5uhr.
+huld5a6
+hu8lent
+hu8l[adiaeresis]
+h5up.
+h1v
+h5weib
+h3weis
+h1z
+h[adiaeresis]8kl
+h[adiaeresis]l8s
+h[adiaeresis]ma8tu8
+h[adiaeresis]8sche.
+h[adiaeresis]t1s
+h[adiaeresis]u4s3c
+2h[odiaeresis].
+2h[odiaeresis]e
+8h[odiaeresis]i
+h[odiaeresis]6s
+h[odiaeresis]s5c
+h[udiaeresis]hne6
+h[udiaeresis]l4s3t
+h[udiaeresis]tte8re
+i5adn
+i1af
+i5ak.
+i1al.
+i1al1a
+i1alb
+i1ald
+i5alei
+i1alf
+i1alg
+i3alh
+i1alk
+i1all
+i1alp
+i1alr
+i1als
+i1alt
+i1alv
+i5alw
+i3alz
+i1an.
+ia5na
+i3and
+ian8e
+ia8ne8b
+i1ang
+i3ank
+i5ann
+i1ant
+i1anz
+i6apo
+i1ar.
+ia6rab
+i5arr
+i1as.
+i1asm
+i1ass
+i5ast.
+i1at.
+i5ats
+i1au
+i5azz
+i6b5eig
+i6b5eis
+ib2le
+i4blis
+i6brig
+i6b5unt
+i6b[udiaeresis]b
+i1che
+ich5ei
+i6cherb
+i1chi
+ich5ins
+ich1l
+ich3m
+ich1n
+i1cho
+icht5an
+icht3r
+i1chu
+ich1w
+ick6s5te
+ic5l
+i1d
+id3arm
+3ideal
+ide8na
+3ideol
+ide5r[odiaeresis]
+i6diot
+id5rec
+id1t
+ie1a
+ie6b5ar
+iebe4s3
+ie2bl
+ieb1r
+ie8bra
+ie4bre
+ie8b[adiaeresis]
+ie2dr
+ie1e8
+ie6f5ad
+ief5f
+ie2f1l
+ie4fro
+ief1t
+i1ei
+ie4l3ec
+ie8lei
+ie4lek
+i3ell
+i1en.
+i1end
+ien6e
+i3enf
+i5enn
+ien6ne.
+i1enp
+i1enr
+i5ensa
+ien8stal
+i5env
+i1enz
+ie5o
+ier3a4b
+ie4rap
+i2ere
+ie4rec
+ie6r5ein
+ie6r5eis
+ier8er
+i3ern.
+ie8rum
+ie8rund
+ie6s5che
+ie6tau
+ie8tert
+ie5the
+ie6t5ri
+i1ett
+ie5un
+iex5
+2if
+i1fa
+if5ang
+i6fau
+if1fr
+if5lac
+i5f6lie
+i1fre
+ift5a
+if6t5r
+ig3art
+2ige
+i8gess
+ig5he
+i5gla
+ig2ni
+i5go
+ig3rot
+ig3s2p
+i1ha
+i8ham
+i8hans
+i1he
+i1hi
+ih1n
+ih1r
+i1hu
+i8hum
+ih1w
+8i1i
+ii2s
+ii2t
+i1j
+i1k
+i6kak
+i8kerz
+i6kes
+ik4ler
+i6k5unt
+2il
+i5lac
+i1lag
+il3ans
+i5las
+i1lau
+il6auf
+i1le
+ile8h
+i8lel
+il2fl
+il3ipp
+il6l5enn
+i1lo
+ilt8e
+i1lu
+i1l[adiaeresis]
+i8mart
+imb2
+i8mele
+i8mid
+imme6l5a
+i1mu
+i1m[adiaeresis]
+i5m[odiaeresis]
+ina5he
+i1nat
+in1au
+inau8s
+8ind.
+in4d3an
+5index
+ind2r
+3indus
+i5nec
+i2n1ei
+i8nerw
+3infek
+1info
+5ingeni
+ing5s6o
+5inhab
+ini5er.
+5inj
+in8k[adiaeresis]t
+in8nan
+i1no
+inoi8d
+in3o4ku
+in5sau
+in1sp
+5inspe
+5instit
+5instru
+ins4ze
+5intere
+5interv
+in3the
+in5t2r
+i5ny
+in[adiaeresis]2
+i1n[adiaeresis]r
+in1[adiaeresis]s
+in[odiaeresis]8
+in5[odiaeresis]d
+i1n[odiaeresis]s
+2io
+io1a8
+io1c
+iode4
+io2di
+ioi8
+i1ol.
+i1om.
+i1on.
+i5onb
+ion2s1
+i1ont
+i5ops
+i5o8pt
+i1or.
+i3oral
+io3rat
+i5orc
+i1os.
+i1ot.
+i1o8x
+2ip
+i1pa
+i1pi
+i1p2l
+i1pr
+i1q
+i1ra
+ir6bl
+i1re
+i1ri
+ir8me8d
+ir2m1o2
+ir8nak
+i1ro
+ir5rho
+ir6schl
+ir6sch5r
+i5rus
+i5ry
+i5r[adiaeresis]
+i1sa
+i8samt
+i6sar
+i2s1au
+i8scheh
+i8schei
+isch5m
+isch3r
+isch[adiaeresis]8
+is8ele
+ise3ra
+i4s3erh
+is3err
+isi6de
+i8sind
+is4kop
+ison5e
+is6por
+i8s5tum
+i5sty
+i5s[odiaeresis]
+i1ta
+it5ab.
+i2t1a2m
+i8tax
+i1te
+i8tersc
+i1thi
+i1tho
+i5thr
+it8h[adiaeresis]
+i1ti
+i8ti8d
+iti6kl
+itmen4
+i1to
+i8tof
+it3ran
+it3rau
+i1tri
+itri5o
+it1sc
+it2se
+it5spa
+it8tru
+i1tu
+it6z5erg
+it6z1w
+i1t[adiaeresis]
+it[adiaeresis]6r5e
+it[adiaeresis]t2
+it[adiaeresis]ts5
+i1t[udiaeresis]
+i1u
+iu6r
+2i1v
+i6vad
+iva8tin
+i8vei
+i6v5ene
+i8verh
+i2vob
+i8vur
+i1w
+iwi2
+i5xa
+i1xe
+i1z
+ize8n
+i8zir
+i6z5w
+i[adiaeresis]8m
+i1[adiaeresis]6r
+i5[adiaeresis]t.
+i5[adiaeresis]v
+i1[odiaeresis]8
+i[udiaeresis]8
+i6[ssharp]5ers
+ja5la
+je2t3r
+6jm
+5jo
+jo5as
+jo1ra
+jou6l
+ju5cha
+jugen4
+jugend5
+jung5s6
+3j[adiaeresis]
+1ka
+8kachs
+8kakz
+ka1la
+kal5d
+kam5t
+ka1na
+2kanl
+8kapf
+ka6pl
+ka5r6a
+6k3arbe
+ka1ro
+kar6p5f
+4k3arti
+8karz
+ka1r[adiaeresis]
+kasi5e
+ka6teb
+kat8ta
+kauf6s
+kau3t2
+2k1b
+2k1c
+4k1d
+kehr6s
+kehrs5a
+8keic
+2k1eig
+6k5ein
+6k5eis
+ke6lar
+ke8leis
+ke8lo
+8kemp
+k5ente.
+k3entf
+8k5ents
+6kentz
+ke1ra
+k5erlau
+2k1f8
+2k1g
+2k1h
+ki5fl
+8kik
+king6s5
+6kinh
+ki5os
+ki5sp
+ki5th
+8ki8[odiaeresis]
+2k1k2
+kl8
+1kla
+8klac
+k5lager
+kle4br
+k3leib
+3kleid
+kle5isc
+4k3leit
+k3lek
+6k5ler.
+5klet
+2klic
+8klig
+k2lim
+k2lin
+5klip
+5klop
+k3lor
+1kl[adiaeresis]
+2k1m
+kmani5e
+kn8
+6kner
+k2ni
+kn[adiaeresis]8
+1k2o
+ko1a2
+ko6de.
+ko1i
+koi8t
+ko6min
+ko1op
+ko1or
+ko6pht
+ko3ra
+kor6d5er
+ko5ru
+ko5t6sc
+k3ou
+3kow
+6k5ox
+2k1p2
+k1q
+1kr8
+4k3rad
+2k1rec
+4k3reic
+kre5ie
+2krib
+6krig
+2krip
+6kroba
+2ks
+k1sa
+k6sab
+ksal8s
+k8samt
+k6san
+k1sc
+k2s1ex
+k5spat
+k5spe
+k8spil
+ks6por
+k1spr
+kst8
+k2s1uf
+2k1t
+kta8l
+kt5a6re
+k8tein
+kte8re
+k2t1h
+k8tinf
+kt3rec
+kt1s
+1ku
+ku1ch
+kuck8
+k3uhr
+ku5ie
+kum2s1
+kunfts5
+kun2s
+kunst3
+ku8rau
+ku4ro
+kurz1
+4kusti
+ku1ta
+ku8[ssharp]
+6k1v
+2k1w
+ky5n
+2k1z
+1k[adiaeresis]
+k[adiaeresis]4m
+4k3[adiaeresis]mi
+k[adiaeresis]se5
+1k[odiaeresis]
+k[odiaeresis]1c
+k[odiaeresis]1s
+1k[udiaeresis]
+k[udiaeresis]1c
+k[udiaeresis]r6sc
+1la.
+8labf
+8labh
+lab2r
+2l1abs
+lach3r
+la8dr
+5ladu
+8ladv
+6laff
+laf5t
+la2gn
+5laken
+8lamb
+la6mer
+5lampe.
+2l1amt
+la1na
+1land
+lan4d3a
+lan4d3r
+lan4gr
+8lanme
+6lann
+8lanw
+6lan[adiaeresis]
+8lappa
+lap8pl
+lap6pr
+l8ar.
+la5ra
+lar4af
+la8rag
+la8ran
+la6r5a6s
+l3arbe
+la8rei
+6larm.
+la8sa
+la1sc
+la8sta
+lat8i
+6l5atm
+4lauss
+4lauto
+1law
+2lb
+l8bab
+l8bauf
+l8bede
+l4b3ins
+l5blo
+lbst5an
+lbst3e
+8lc
+l1che
+l8chert
+l1chi
+lch3m
+l5cho
+lch5w
+6ld
+l4d3ei
+ld1re
+l6d[udiaeresis]b
+le2bl
+le8bre
+lecht6s5
+led2r
+6leff
+le4gas
+1lehr
+lei6br
+le8inf
+8leinn
+5leistu
+4lektr
+le6l5ers
+lemo2
+8lemp
+l8en.
+8lends
+6lendun
+le8nend
+len8erw
+6l5ents
+4l3entw
+4lentz
+8lenzy
+8leoz
+6lepi
+le6pip
+8lepo
+1ler
+l6er.
+8lerbs
+6l5erde
+le8reis
+le8rend
+le4r3er
+4l3erg
+l8ergr
+6lerkl
+6l5erzie
+8ler[odiaeresis]
+8lesel
+lesi5e
+le3sko
+le3tha
+let1s
+5leuc
+4leuro
+leu4s3t
+le5xe
+6lexp
+l1f
+2l1g
+lgend8
+l8gh
+lglie3
+lglied6
+6l1h
+1li
+li1ar
+li1as
+2lick
+li8dr
+li1en
+lien6n
+li8ers
+li8ert
+2lie[ssharp]
+3lig
+li8ga8b
+li1g6n
+li1l8a
+8limb
+li1na
+4l3indu
+lings5
+4l3inh
+6linj
+link4s3
+4linkt
+2lint
+8linv
+4lipp
+5lipt
+4lisam
+livi5e
+6l1j
+6l1k
+l8keim
+l8kj
+lk2l
+lko8f
+lkor8
+lk2sa
+lk2se
+6ll
+l1la
+ll3a4be
+l8labt
+ll8anl
+ll1b
+ll1c
+ll1d6
+l1le
+l4l3eim
+l6l5eise
+ller3a
+l4leti
+l5lip
+l1lo
+ll3ort
+ll5ov
+ll6spr
+llte8
+l1lu
+ll3urg
+l1l[adiaeresis]
+l5l[udiaeresis]
+l6l[udiaeresis]b
+2l1m
+l6m5o6d
+6ln
+l1na
+l1no
+8lobl
+lo6br
+3loch.
+l5o4fen
+5loge.
+5lohn
+4l3ohr
+1lok
+l2on
+4l3o4per
+lo1ra
+2l1ord
+6lorg
+4lort
+lo1ru
+1los.
+lo8sei
+3losig
+lo6ve
+lowi5
+6l1p
+lp2f
+l8pho
+l8pn
+lp4s3te
+l2pt
+l1q
+8l1r
+2ls
+l1sa
+l6sarm
+l1sc
+l8sec
+l6s5erg
+l4s3ers
+l8sh
+l5s6la
+l1sp
+ls4por
+ls2pu
+l1str
+l8suni
+l1s[udiaeresis]
+2l1t
+lt5amp
+l4t3ein
+l5ten
+l6t5eng
+l6t5erp
+l4t3hei
+lt3her
+l2t1ho
+l6t5i6b
+lti1l
+l8tr[odiaeresis]
+lt1sc
+lt6ser
+lt4s3o
+lt5ums
+lu8br
+lu2dr
+lu1en8
+8lu8fe
+luft3a
+luf8tr
+lu6g5r
+2luh
+l1uhr
+lu5it
+5luk
+2l1umf
+2l1umw
+1lun
+6l5u6nio
+4l3unte
+lu5ol
+4lurg
+6lurs
+l3urt
+lu4sto
+lus1tr
+lu6st5re
+lu8su
+lu6tal
+lu6t5e6g
+lu8terg
+lu3the
+lu6t5or
+lu2t1r
+lu6[ssharp]5
+l1v
+lve5r6u
+2l1w
+1ly
+lya6
+6lymp
+ly1no
+l8zess
+l8zo8f
+l3zwei
+lz5wu
+3l[adiaeresis]nd
+l[adiaeresis]5on
+l[adiaeresis]6sc
+l[adiaeresis]t1s
+5l[adiaeresis]uf
+2l[adiaeresis]ug
+l[adiaeresis]u6s5c
+l[adiaeresis]5v
+l1[odiaeresis]l
+1l[odiaeresis]s
+l[odiaeresis]1[ssharp]6t
+6l1[udiaeresis]be
+1ma
+8mabg
+ma5chan
+mad2
+ma5el
+4magg
+mag8n
+ma1la
+ma8lau
+mal5d
+8malde
+mali5e
+malu8
+ma8lut
+2m1amp
+3man
+mand2
+man3ds
+8mangr
+mani5o
+8m5anst
+6mappa
+4m3arbe
+mar8kr
+ma1r4o
+mar8schm
+3mas
+ma1sc
+ma1t[odiaeresis]
+4m5auf
+ma5yo
+2m1b
+mb6r
+2m1c
+2m1d
+md6s[adiaeresis]
+1me
+me1ch
+me5isc
+5meld
+mel8sa
+8memp
+me5nal
+men4dr
+men8schl
+men8schw
+8mentsp
+me1ra
+mer4gl
+me1ro
+3mes
+me6s5ei
+meta3s2
+me1th
+me8[ssharp]
+2m1f6
+2m1g
+2m1h
+1mi
+mi1a
+mi6ale
+mi1la
+2m1imm
+mi1na
+mi5n[udiaeresis]
+mi4s3an
+mit1h
+mi5t6ra
+3mitt
+mitta8
+mi6[ssharp]5
+6mj
+2m1k8
+2m1l
+2m1m
+m6mad
+m6m5ak
+m8menth
+m8mentw
+mme6ra
+m2mn
+mm5sp
+mm5ums
+mmut5s
+m8m[adiaeresis]n
+m1n8
+m5ni
+1mo
+mo5ar
+mo4dr
+8mof
+mo8gal
+mo4kla
+mol5d
+m2on
+mon8do
+mo4n3od
+mon2s1tr
+mont8a
+6m5ony
+mopa6
+mo1ra
+mor8d5a
+mo1sc
+mo1sp
+5mot
+moy5
+2mp
+m1pa
+mpfa6
+mpf3l
+mphe6
+m1pi
+mpin6
+m1pl
+mp2li
+m2plu
+mpo8ste
+m1pr
+mpr[adiaeresis]5
+mp8th
+mput6
+mpu5ts
+m1p[odiaeresis]
+8m1q
+2m1r
+2ms
+ms5au
+m1sc
+msch4l
+ms6po
+m3spri
+m1str
+2m1t
+mt1ar
+m8tein
+m2t1h
+mt6se
+mt8s[adiaeresis]
+mu5e
+6m5uh
+mumi1
+1mun
+mun6dr
+muse5e
+mu1ta
+2m1v
+mvol2
+mvoll3
+2m1w
+1my
+2m1z
+m[adiaeresis]6kl
+1m[adiaeresis]n
+m[adiaeresis]1s
+m[adiaeresis]5tr
+m[adiaeresis]u4s3c
+3m[adiaeresis][ssharp]
+m[odiaeresis]b2
+6m[odiaeresis]l
+1m[udiaeresis]
+5m[udiaeresis]n
+3m[udiaeresis]t
+1na.
+n5ab.
+8nabn
+n1abs
+n1abz
+na6b[adiaeresis]
+na2c
+nach3e
+3nacht
+1nae
+na5el
+n1afr
+1nag
+1n2ah
+na8ha
+na8ho
+1nai
+6nair
+na4kol
+n1akt
+nal1a
+8naly
+1nama
+na4mer
+na1mn
+n1amp
+8n1amt
+5nanc
+nan6ce
+n1and
+n6and.
+2n1ang
+1nani
+1nann
+n1ans
+8nanw
+5napf.
+1n2ar.
+na2ra
+2n1arc
+n8ard
+1nari
+n8ark
+6n1arm
+5n6ars
+2n1art
+n8arv
+6natm
+nat6s5e
+1naue
+4nauf
+n3aug
+5naui
+n5auk
+na5um
+6nausb
+6nauto
+1nav
+2nax
+3naz
+1na[ssharp]
+n1b2
+nbau5s
+n1c
+nche5e
+nch5m
+2n1d
+nda8d
+n2d1ak
+nd5ans
+n2d1ei
+nde8lac
+ndel6sa
+n8derhi
+nde4se
+nde8stal
+n2dj
+ndnis5
+n6d5or6t
+nd3rec
+nd3rot
+nd8samt
+nd6sau
+ndt1h
+n8dumd
+1ne
+ne5as
+ne2bl
+6n5ebn
+2nec
+5neei
+ne5en
+ne1g4l
+2negy
+4n1ein
+8neis
+4n3e4lem
+8nemb
+2n1emp
+nen1a
+6n5energ
+nen3k
+8nentb
+4n3en3th
+8nentl
+8n5entn
+8n5ents
+ne1ra
+ne5r8al
+ne8ras
+8nerbi
+6n5erde.
+nere5i6d
+nerfor6
+6n5erh[odiaeresis]
+8nerl[odiaeresis]
+2n1err
+n8ers.
+6n5ertra
+2n1erz
+nesi3e
+net1h
+neu4ra
+neu5sc
+8neu[ssharp]
+n1f
+nf5f
+nf2l
+nflei8
+nf5lin
+nft8st
+n8g5ac
+ng5d
+ng8en
+nge8ram
+ngg2
+ng1h
+n6glic
+ng3rip
+ng8ru
+ng2se4
+ng2si
+n2g1um
+n1gy
+n8g[adiaeresis]l
+n1h
+nhe6r5e
+1ni
+ni1bl
+ni5ch[adiaeresis]
+ni8dee
+n6ie
+ni1en
+nie6s5te
+niet5h
+ni8etn
+4n3i6gel
+n6ik
+ni1la
+2n1imp
+ni5na
+2n1ind
+8ninf
+6n5inh
+ni8nit
+6n5inn
+2n1ins
+4n1int
+n6is
+nis1tr
+ni1th
+ni1tr
+n1j
+n6ji
+n8kad
+nk5ans
+n1ke
+n8kerla
+n1ki
+nk5inh
+n5kl[odiaeresis]
+n1k2n
+n8k5not
+nk3rot
+n8kr[udiaeresis]
+nk5spo
+nk6t5r
+n8kuh
+n6k[udiaeresis]b
+n5l6
+nli4mi
+n1m
+nmen4s
+n1na
+n8nerg
+nni5o
+n1no
+nn4t3ak
+nnt1h
+nnu1e
+n1ny
+n1n[adiaeresis]
+n1n[odiaeresis]
+n1n[udiaeresis]
+no5a
+no4b3la
+4n3obs
+2nobt
+noche8
+no6die
+no4dis
+no8ia
+no5isc
+6n5o6leu
+no4mal
+noni6er
+2n1onk
+n1ony
+4n3o4per
+6nopf
+6nopti
+no3ra
+no4ram
+nor6da
+4n1org
+2n1ort
+n6os
+no1st
+8nost.
+no8tan
+no8ter
+noty6pe
+6n5ox
+n1p2
+n1q
+n1r
+nr[odiaeresis]s3
+6ns
+n1sac
+ns3ang
+n1sc
+n8self
+n8s5erf
+n8serg
+n6serk
+ns5erw
+n8sint
+n1s2pe
+n1spr
+n6s5tat.
+n6stob
+n1str
+n1ta
+n4t3a4go
+nt5anh
+nt3ark
+nt3art
+n1te
+nt3eis
+nte5n6ar
+nte8nei
+nter3a
+nte6rei
+nt1ha
+nt6har
+n3ther
+nt5hie
+n3thus
+n1ti
+nti1c
+n8tinh
+nti1t
+ntlo6b
+ntmen8
+n1to
+nt3o4ti
+n1tr
+ntra5f
+ntra5ut
+nt8rea
+nt3rec
+nt8rep
+n4t3rin
+nt8rop
+n4t3rot
+n4tr[udiaeresis]
+nt1s
+nts6an
+nt2sk
+n1tu
+nt1z
+n1t[adiaeresis]
+n1t[odiaeresis]
+n8t[odiaeresis]l
+n1t[udiaeresis]
+1nu
+nu1a
+nu5el
+nu5en
+4n1uhr
+nu5ie
+8numl
+6n5ums
+6n5umw
+2n1und
+6nuni
+6n5unr
+2n1unt
+2nup
+2nu6r
+n5uri
+nu3skr
+nu5ta
+n1v
+8n1w
+1nys
+n1za
+n6zab
+n2z1ar
+n6zaus
+nzi4ga
+n8zof
+n6z5unt
+n1zw
+n6zwir
+1n[adiaeresis]c
+5n[adiaeresis]e
+5n[adiaeresis]i
+n8[adiaeresis]l
+n[adiaeresis]6m
+n[adiaeresis]6re
+n5[adiaeresis]rz
+5n[adiaeresis]us
+n1[odiaeresis]l
+1n[odiaeresis]t
+n5[odiaeresis]z
+5n[udiaeresis].
+6n1[udiaeresis]2b
+5n[udiaeresis][ssharp]
+o5ab.
+oa2l
+o8ala
+o1a2m
+o1an
+ob1ac
+obe4ra
+o6berh
+5o4bers
+o4beru
+obe6ser
+1obj
+o1bl
+o2bli
+ob5sk
+3obst.
+ob8sta
+obst5re
+ob5sz
+o1che
+oche8b
+o8chec
+o3chi
+och1l
+och3m
+ocho8f
+o3chro
+och3to
+o3chu
+och1w
+o1d
+o2d1ag
+od2dr
+ode5i
+ode6n5e
+od1tr
+o5e6b
+o5e6der.
+oe8du
+o1ef
+o1e2l
+o1e2p
+o1er.
+o5e8x
+o1fa
+of8fan
+1offi
+of8fin
+of6f5la
+o5fla
+o1fr
+8o1g
+og2n
+o1ha
+o1he
+o6h5eis
+o1hi
+ohl1a
+oh1le
+oh4l3er
+5ohm.
+oh2ni
+o1ho
+oh1re
+oh1ru
+o1hu
+oh1w
+o1hy
+o1h[adiaeresis]
+o5ia
+o1id.
+o8idi
+oi8dr
+o5ids
+o5isch.
+oiset6
+o1ism
+o3ist.
+o5i6tu
+o1j
+o1k
+ok2l
+ok3lau
+o8kl[adiaeresis]
+1okta
+o1la
+old5am
+old5r
+o1le
+ole5in
+ole1r
+ole3u
+ol6gl
+ol2kl
+olk4s1
+ol8lak
+ol8lauf.
+ol6lel
+ol8less
+o1lo
+ol1s
+ol2ster
+ol6sk
+o1lu
+oly1e2
+5olym
+o2mab
+om6an
+o8mau
+ombe4
+o8merz
+om5sp
+o1mu
+o8munt
+o1m[adiaeresis]
+o1m[odiaeresis]
+o1na
+ona8m
+on1ax
+on8ent
+o6n5erb
+8oni
+oni5er.
+on1k
+on6n5a6b
+o1no
+ono1c
+o4nokt
+1ons
+onts8
+o1n[adiaeresis]
+oo8f
+1oog
+oo2pe
+oo2sa
+o1pa
+3o4pera
+o3pfli
+opf3lo
+opf3r
+o1pi
+o1pl
+o2pli
+o5p6n
+op8pa
+op6pl
+o1pr
+o3p4ter
+1opti
+o1p[adiaeresis]
+o5p[odiaeresis]
+o1q
+o1ra.
+o3rad
+o8radd
+1oram
+o6rang
+o5ras
+o8rauf
+or5cha
+or4d3a4m
+or8dei
+or8deu
+1ordn
+or4dos
+o1re
+o5re.
+ore2h
+o8r5ein
+ore5isc
+or6enn
+or8fla
+or8fli
+1orga
+5orgel.
+or2gl
+o1ri
+5o6rient
+or8nan
+or8n[adiaeresis]
+o1ro
+or1r2h
+or6t5an
+or8tau
+or8tere
+o1rus
+o1ry
+o1r[adiaeresis]
+or1[udiaeresis]2
+o1sa
+osa3i
+6ose
+o8serk
+o1sk
+o6ske
+o6ski
+os2kl
+os2ko
+os2kr
+osni5e
+o2s1o2d
+o3s4per
+o4stam
+o6stau
+o3stra
+ost3re
+osu6
+o6s5ur
+o5s6ze
+o1ta
+ot3auf
+o6taus
+o1te
+o6terw
+o1th
+othe5u
+o2th1r
+o1ti
+o1to
+oto1a
+ot1re
+o1tri
+o1tro
+ot1sc
+o3tsu
+ot6t5erg
+ot2t3h
+ot2t5r
+ot8t[odiaeresis]
+o1tu
+ou3e
+ouf1
+ou5f6l
+o5u6gr
+ou5ie
+ou6rar
+ou1t6a
+o1v
+o1wa
+o1we
+o6wer.
+o1wi
+owid6
+o1wo
+o5wu
+o1xe
+oy5al.
+oy1e
+oy1i
+o5yo
+o1z
+oza2r
+1o2zea
+ozo3is
+o[odiaeresis]8
+o[ssharp]5elt
+o[ssharp]1t
+3paa
+pa6ce
+5pad
+pag2
+1pak
+pa1la
+pa8na8t
+pani5el
+pa4nor
+pan1s2
+1pap
+pap8s
+pa8rei
+par8kr
+paro8n
+par5o6ti
+part8e
+5partei
+3partn
+pas6sep
+pa4tha
+1pau
+6paug
+pau3sc
+p1b
+8p5c
+4p1d
+1pe
+4peic
+pe5isc
+2pek
+pen3k
+pen8to8
+p8er
+pe1ra
+pere6
+per5ea
+per5eb
+pe4rem
+2perr
+per8ran
+3pers
+4persi
+pe3r[udiaeresis]
+pe4sta
+pet2s
+p2f1ec
+p4fei
+pf1f
+pf2l
+5pflanz
+pf8leg
+pf3lei
+2pft
+pf3ta
+p1g
+1ph
+2ph.
+2p1haf
+6phb
+8phd
+6p5heit
+ph5eme
+6phg
+phi6e
+8phk
+6phn
+p5holl
+pht2
+ph3tha
+4ph3the
+phu6
+6phz
+pi1en
+pi5err
+pi1la
+pi1na
+5pinse
+pioni8e
+1pis
+pi1s2k
+pi1th
+p1k
+pl8
+5pla
+p2lau
+4plei
+p3lein
+2pler
+6p5les
+2plig
+p6lik
+6p5ling
+p2liz
+plo8min
+6p1m
+p1n
+1p2o
+8poh
+5pol
+po8lan
+poly1
+po3ny
+po1ra
+2porn
+por4t3h
+po5r[odiaeresis]
+5poti
+p1pa
+p6p5ei
+ppe6la
+pp5f
+p2p1h
+p1pi
+pp1l
+ppp6
+pp5ren
+pp1s
+pp2ste
+p5p[odiaeresis]
+pr6
+3preis
+1pres
+2p3rig
+5prinz
+1prob
+1prod
+5prog
+pro8pt
+pro6t5a
+prote5i
+8pro[ssharp]
+pr[adiaeresis]3l
+1pr[adiaeresis]s
+pr[adiaeresis]te4
+1pr[udiaeresis]f
+p5schl
+2pst
+1p2sy
+p1t
+p8to8d
+pt1s
+5p6ty
+1pu
+pu1b2
+2puc
+pu2dr
+puf8fr
+6p5uh
+pun8s
+pu8rei
+pu5s6h
+pu1ta
+p1v
+p3w
+5py
+py5l
+p1z
+p[adiaeresis]6der
+p5[adiaeresis]6m
+p[adiaeresis]8nu
+8p[adiaeresis]r
+p[adiaeresis]t5h
+p[adiaeresis]t1s
+qu6
+1qui
+8rabk
+ra6bla
+3rable
+ra2br
+r1abt
+6rabz
+ra4dan
+ra2dr
+5rafal
+ra4f3er
+ra5gla
+ra2g3n
+6raha
+ral5am
+5rald
+4ralg
+ra8lins
+2rall
+ral5t
+8ramei
+r3anal
+r6and
+ran8der
+ran4dr
+8ranf
+6ranga
+5rangi
+ran8gli
+r3angr
+rans5pa
+8ranw
+r8anz.
+ra5or
+6rapf
+ra5pl
+rap6s5er
+2r1arb
+1rarh
+r1arm
+ra5ro
+2r1art
+6r1arz
+ra8tei
+ra6t5he
+6ratl
+ra4t3ro
+r5atta
+raue4n
+6raus.
+r5austa
+rau8tel
+raut5s
+ray1
+r1b
+rb5lass
+r6bler
+rb4lie
+rbon6n
+r8brecht
+rb6s5t[adiaeresis]
+r8ces
+r1che
+rch1l
+rch3m
+rch3re
+rch3tr
+rch1w
+8rd
+r1da
+r8dachs
+r8dap
+rda5ro
+rde5ins
+rdio5
+r8dir
+rd3ost
+r1dr
+r8drau
+1re.
+re1ak
+3reakt
+re3als
+re6am.
+re1as
+4reben
+re6bl
+rech5a
+r8edi
+re3er
+8reff
+3refl
+2reh
+5reha
+r4ei.
+reich6s5
+8reier
+6reign
+re5imp
+4r3eina
+6r3einb
+6reing
+6r5einn
+6reinr
+4r3eins
+r3eint
+reli3e
+8r5elt
+6rempf
+2remt
+ren5a6b
+ren8gl
+r3enni
+1reno
+5rente
+4r3enth
+8rentl
+4r3entw
+8rentz
+ren4zw
+re1on
+requi5
+1rer
+rer4bl
+6rerbs
+4r3erd
+8rerh[odiaeresis]
+8rerkl
+4r3erla
+8rerl[odiaeresis]
+4r3erns
+6r5ern[adiaeresis]
+rer5o
+6r5erreg
+r5ertr
+r5erwec
+r5er[odiaeresis]
+re2sa
+re8schm
+2ress
+re5u8ni
+6rewo
+2r1ex
+r1f
+r8ferd
+rf4lie
+8r1g
+r8gah
+rge4bl
+rge5na
+rgest4
+rg6ne
+r2gni2
+r8gob
+r4g3ret
+rg8sel
+r1h8
+r2hy
+5rhyt
+ri1ar
+ri5cha
+rid2g
+r2ie
+rieg4s5
+ri8ei
+ri1el
+ri6ele
+ri1en
+ri3er.
+ri5ers.
+ri6fan
+ri8fer
+ri8fr
+1r2ig
+ri8kn
+ri5la
+rim[adiaeresis]8
+ri1na
+r8inde
+rin4ga
+rin6gr
+1rinn
+6rinner
+rino1
+r8insp
+4rinst
+ri1n[adiaeresis]
+ri5o6ch
+ri1o2d
+ri3o6st
+2r1ir
+r2is
+ri3sko
+ri8spr
+ri5sv
+r2it
+6r5i6tal
+ri5tr
+ri6ve.
+8r1j
+6rk
+r1ke
+rkehrs5
+r1ki
+r3klin
+r1k2n
+rk3str
+rk4t3an
+rk6to
+r6kuh
+rk[adiaeresis]4s3t
+r1l
+r5li
+rline5a
+6r1m
+r6manl
+rma4p
+r4m3aph
+r8minf
+r8mob
+rm5sa
+2rn
+r1na
+rna8be
+r5ne
+rn2ei
+r6neif
+r6nex
+r6nh
+rn1k
+r1no
+r6n5oc
+rn1sp
+r1n[adiaeresis]
+r1n[udiaeresis]
+ro6bern
+6robs
+ro1ch
+3rock.
+ro5de
+ro1e
+4rofe
+ro8hert
+1rohr
+ro5id
+ro1in
+ro5isc
+6rolym
+r2on
+6roog
+ro6phan
+r3ort
+ro1s2p
+ro5s6w
+ro4tau
+ro1tr
+ro6ts
+5rout
+r1p
+rpe8re
+rp2f
+r2ps
+r2pt
+r1q
+2rr
+r1ra
+r1re
+rrer6
+rr6hos
+r5rh[odiaeresis]
+r1ri
+r1ro
+rro8f
+rr8or
+rror5a
+r1ru
+r3ry
+r1r[adiaeresis]
+r1r[odiaeresis]
+r1r[udiaeresis]
+2r1s
+r2ste
+r2sti
+r6sab
+r4sanf
+rse6e
+rse5na
+r2sh
+r6ska
+r6ski
+rs2kl
+r8sko
+r2sl
+rs2p
+r6stauf
+r8sterw
+r8stran
+rswi3d4
+r2sz
+2r1t
+rt3art
+r8taut
+r5tei
+rt5eige
+r8tepe
+r4t3erh
+r8terla
+r4t3hei
+r5t6hu
+r4t3int
+rt5reif
+rt1sc
+rt6ser
+rt6s5o
+rt6s5u
+rt5und
+r8turt
+rube6
+ru1en
+1r4uf
+ruf4st
+ru1ie
+2r1umg
+2r1uml
+2rums
+run8der
+run4d5r
+6rundz
+6runf
+8runs
+2r1unt
+2r1ur
+r6us
+ru6sta
+rus1tr
+ru6tr
+1ruts
+r1v
+rven1
+rvi2c
+r1w
+r1x
+r1za
+rz5ac
+r6z5al
+r8z1ar
+r8zerd
+r6z5erf
+rz8erh
+rz4t3h
+r8zum
+r[adiaeresis]4ste
+r[adiaeresis]u8sc
+r1[odiaeresis]f
+5r[odiaeresis]hr
+r[odiaeresis]5le
+3r[odiaeresis]ll
+5r[odiaeresis]mis
+r1[odiaeresis]r
+r[odiaeresis]2sc
+3r[udiaeresis]mp
+1sa.
+1saa
+s3a4ben
+sa2bl
+2s1abs
+6s1abt
+6sabw
+3sack.
+6s3a4der
+1saf
+sa1fa
+4s1aff
+sa5fr
+1sag
+1sai
+sa1i2k1
+4s1akt
+1sal
+sa1la
+4s3alpi
+6salter
+salz3a
+1sam
+s5anb
+san2c
+1sand
+s5angeh
+6sanl
+2s1ans
+6s3antr
+8s1anw
+s1ap
+s6aph
+8sapo
+sap5p6
+s8ar.
+2s1arb
+3sarg
+s1arm
+sa5ro
+2s1art
+6s1arz
+1sas
+1sat
+sat8a
+2s1atl
+sa8tom
+3s8aue
+s5auff
+sau5i
+s6aur
+2s1aus
+5s6ause
+2s1b2
+2sca
+s4ce
+8sch.
+3scha.
+5schade
+3schaf
+3schal
+sch5ame
+8schanc
+8schb
+1sche
+6schef
+8schex
+2schf
+2schg
+2schh
+1schi
+2schk
+5schlag
+5schlu
+6schm[adiaeresis][ssharp]
+6schna[ssharp]
+1scho
+6schord
+6schp
+3schri
+8schric
+8schrig
+8schrou
+6schs
+2scht
+sch3ta
+sch3tr
+1schu
+8schunt
+6schv
+2schz
+5sch[odiaeresis]
+5sch[udiaeresis]
+2sco
+scre6
+6scu
+2s1d
+1se
+se5an
+se1ap
+se6ben
+se5ec
+see5i6g
+se3erl
+8seff
+se6han
+se8hi
+se8h[odiaeresis]
+6s5eid.
+2s1eig
+s8eil
+5sein.
+sei5n6e
+6s5einh
+3s8eit
+3sel.
+se4lar
+selb4
+6s3e4lem
+se8lerl
+2s1emp
+sen3ac
+se5nec
+6s5ents
+4sentz
+s8er.
+se8reim
+ser5inn
+8serm[adiaeresis]
+8s5erzi
+6ser[odiaeresis]f
+se1um
+8sexa
+6sexp
+2s1f2
+sfal8ler
+2s3g2
+sge5b2
+s1h
+s8hew
+5s6hip
+5s4hop
+1si
+2siat
+si1b
+sicht6s
+6s5i6dee
+siege6s5
+si1en
+si5err
+si1f2
+si1g2n
+si6g5r
+si8kau
+sik1i
+si4kin
+si2kl
+si8k[udiaeresis]
+si1la
+sil6br
+si1na
+2s1inf
+sin5gh
+2s1inh
+sinne6s5
+2s1ins
+si5ru
+si5str
+4s1j
+s1k2
+6sk.
+2skau
+skel6c
+skelch5
+s6kele
+1s2ki.
+3s4kin.
+s6kiz
+s8kj
+6skn
+2skow
+3skrib
+3skrip
+2sku
+8sk[udiaeresis]
+s1l
+s8lal
+slei3t
+s4low
+2s1m
+s1n
+6sna
+6snot
+1so
+so1ch
+2s1odo
+so4dor
+6s5o4fen
+solo3
+s2on
+so5of
+4sope
+so1ra
+2s1ord
+4sorga
+sou5c
+so3un
+4s3ox
+sp2
+8spaa
+5spal
+1span
+2spap
+s2pec
+s4peis
+1spek
+s6perg
+4spers
+s6pes
+2s1pf
+8sphi
+1s2ph[adiaeresis]
+1spi
+spi4e
+6s5pig
+6spinse
+2spis
+2spla
+2spol
+5s6pom
+6s5pos
+6spoti
+1spra
+3s8prec
+6spreis
+5spring
+6sprob
+1spru
+s2pul
+1s2pur
+6spy
+5sp[adiaeresis]n
+1sp[udiaeresis]
+s1q
+2s1r
+2ssa
+2sse
+2ssi
+2sso
+2ss[adiaeresis]
+2ss[odiaeresis]
+2ss[udiaeresis]
+2s1sch
+sse8nu
+ssini6s
+ssoi6r
+2st.
+1sta
+4stafe
+2stag
+sta3la
+6stale
+4s2talg
+8stalk
+8stamt
+6st5anf
+4stans
+6stanw
+6starb
+sta4te
+6staus
+2stb
+6stc
+6std
+s1te
+4steil
+6steppi
+8stesse
+6stf
+2stg
+2sth
+st1ha
+st3hei
+s8t1hi
+st1ho
+st5hu
+s1ti
+s2ti4el
+4s2tigm
+6s2tind
+4s2tinf
+s2ti8r
+2stk
+2stl
+2stm
+1sto
+6stoll.
+4st3ope
+6stopf.
+6stord
+6stp
+4strai
+s3tral
+6s5traum
+3stra[ssharp]
+3strec
+6s3tref
+8streib
+5streif
+6streno
+6stres
+6strev
+2st5rig
+8s2t1ris
+s8troma
+st5rose
+2s1trua
+4struf
+3strum
+6str[adiaeresis]g
+2st1s6
+2stt
+1stu
+stu5a
+4stuc
+2stue
+8stun.
+2stv
+2stw
+s2tyl
+6stz
+1st[adiaeresis]
+8st[adiaeresis]g
+1st[odiaeresis]
+1st[udiaeresis]
+8st[udiaeresis]ch
+4st[udiaeresis]r.
+1su
+su2b1
+3suc
+su1e
+su2fe
+su8mar
+6sumfa
+8sumk
+2s1unt
+sup1p2
+6s5u6ran
+6surte
+2s1v
+2s1w
+1sy
+8syl.
+sy5la
+syn1
+sy2na
+syne4
+s1z
+s4zend
+5s6zene.
+8szu
+1s[adiaeresis]
+6s5[adiaeresis]nd
+6s[adiaeresis]ugi
+6s[adiaeresis]u[ssharp]
+5s[odiaeresis]m
+2s1[udiaeresis]2b
+1s[udiaeresis]c
+s[udiaeresis]8di
+1s[udiaeresis]n
+5s[udiaeresis][ssharp]
+taats3
+4tab.
+taba6k
+ta8ban
+tab2l
+ta6bre
+4tabs
+t3absc
+8tabz
+6t3acht
+ta6der
+6tadr
+tad6s
+tad2t
+1tafe4
+1tag
+ta6ga6
+ta8gei
+tage4s
+tag6s5t
+tah8
+tahl3
+tai6ne.
+ta5ir.
+tak8ta
+tal3au
+1tale
+ta8leng
+tal5ert
+6t5a6mer
+6tamp
+tampe6
+2t1amt
+tan5d6a
+tan8dr
+tands5a
+tani5e
+6tanl
+2tanr
+t3ans
+8t5antr
+tanu6
+t5anw
+8tanwa
+tan8zw
+ta8rau
+6tarbe
+1tari
+2tark
+2t1arm
+ta1ro
+2tart
+t3arti
+6tarz
+ta1sc
+ta6sien
+ta8stem
+ta8sto
+t5aufb
+4taufn
+8taus.
+5tause
+8tausf
+6tausg
+t5ausl
+2t1b2
+2t1c
+t6chu
+2t1d
+te2am
+tea4s
+te8ben
+5techn
+4teff
+te4g3re
+te6hau
+2tehe
+te4hel
+2t1ehr
+te5id.
+teig5l
+6teign
+tei8gr
+1teil
+4teinh
+t5einhe
+4teis
+t5eisen
+8teiw
+te8lam
+te4lar
+4telek
+8telem
+te6man
+te6n5ag
+ten8erw
+ten5k
+tens4p
+ten8tro
+4t3entw
+8tentz
+te6pli
+5teppi
+ter5a6b
+te3ral
+ter5au
+8terbar
+t5erbe.
+6terben
+8terbs
+4t3erbt
+t5erde.
+ter5ebe
+ter5ein
+te8rers
+terf4
+8terh[odiaeresis]
+6terkl[adiaeresis]
+ter8nor
+ter6re.
+t8erscha
+t5e6sel
+te8stau
+t3euro
+te1xa
+tex3e
+8texp
+tex6ta
+2t1f2
+2t1g2
+2th.
+th6a
+5tha.
+2thaa
+6t1hab
+6t5haf
+t5hah
+8thak
+3thal.
+6thals
+6t3hand
+2t1hau
+1the.
+3t4hea
+t1heb
+t5heil
+t3heit
+t3helf
+1theo
+5therap
+5therf
+6t5herz
+1thes
+1thet
+5thi.
+2t1hil
+t3him
+8thir
+3this
+t5hj
+2th1l
+2th1m
+th1n
+t5hob
+t5hof
+4tholz
+6thopti
+1thr6
+4ths
+t1hum
+1thy
+4t1h[adiaeresis]
+2t1h[odiaeresis]
+t1h[udiaeresis]
+ti1a2m
+ti1b
+tie6fer
+ti1en
+ti8gerz
+tig3l
+ti8kin
+ti5lat
+1tilg
+t1ind
+tin4k3l
+ti3spa
+ti5str
+5tite
+ti5tr
+ti8vel
+ti8vr
+2t1j
+2t1k2
+2t1l
+tl8a
+2t1m8
+2t1n
+3tobe
+8tobj
+to3cha
+5tocht
+8tock
+tode4
+to8del
+to8du
+to1e
+6t5o6fen
+to1in
+toi6r
+5toll.
+to8mene
+t2ons
+2t1ony
+to4per
+5topf.
+6topt
+to1ra
+to1s
+to2ste
+to6ska
+tos2l
+2toti
+to1tr
+t8ou
+2t1p2
+6t1q
+tr6
+tra5cha
+tra8far
+traf5t
+1trag
+tra6gl
+tra6gr
+t3rahm
+1trai
+t6rans
+tra3sc
+tra6st
+3traue
+t4re.
+2trec
+t3rech
+t8reck
+6t1red
+t8ree
+4t1reg
+3treib
+4treif
+8t3reis
+8trepo
+tre6t5r
+t3rev
+4t3rez
+1trib
+t6rick
+tri6er
+2trig
+t8rink
+tri6o5d
+trizi5
+tro1a
+3troc
+trocke6
+troi8d
+tro8man.
+tro3ny
+5tropf
+6t5rosa
+t5ro[ssharp]
+5trub
+5trup
+trut5
+1tr[adiaeresis]g
+6t1r[odiaeresis]h
+5tr[udiaeresis]b
+tr[udiaeresis]3bu
+t1r[udiaeresis]c
+t1r[udiaeresis]s
+2ts
+ts1ab
+t1sac
+tsa8d
+ts1ak
+t6s5alt
+ts1an
+ts1ar
+ts3auf
+t3schr
+t5sch[adiaeresis]
+tse6e
+tsee5i
+tsein6s
+ts3ent
+ts1er
+t8serf
+t4serk
+t8sh
+5t6sik
+t4s3int
+ts5ort.
+t5s6por
+t6sprei
+t1st
+t2ste
+t6s5tanz
+ts1th
+t6stit
+t4s3tor
+1t2sua
+t2s1uf
+t8sum.
+t2s1u8n
+t2s1ur
+2t1t
+tt5eif
+tte6sa
+tt1ha
+tt8ret
+tt1sc
+tt8ser
+tt5s6z
+1tuc
+tuch5a
+1tu1e
+6tuh
+t5uhr
+tu1i
+tu6it
+1tumh
+6t5umr
+1tums
+8tumt
+6tund
+6tunf
+2t1unt
+tu5ra
+tu6rau
+tu6re.
+tu4r3er
+2t1v
+2t1w
+1ty1
+ty6a
+ty8la
+8tym
+6ty6o
+2tz
+tz5al
+tz1an
+tz1ar
+t8zec
+tzeh6
+tzehn5
+t6z5ei.
+t6zor
+t4z3um
+t6z[adiaeresis]u
+5t[adiaeresis]g
+6t[adiaeresis]h
+t5[adiaeresis]lt
+t8[adiaeresis]n
+t[adiaeresis]re8
+8t[adiaeresis]8st
+6t[adiaeresis]u[ssharp]
+t5[odiaeresis]ffen
+8t[odiaeresis]8k
+1t[odiaeresis]n
+4t[udiaeresis]b
+t6[udiaeresis]5ber.
+5t[udiaeresis]ch
+1t[udiaeresis]r.
+u3al.
+u5alb
+u5alf
+u3alh
+u5alk
+u3alp
+u3an.
+ua5na
+u3and
+u5ans
+u5ar.
+ua6th
+u1au
+ua1y
+u2bab
+ubi5er.
+u6b5rit
+ubs2k
+u5b[odiaeresis]
+u8b[udiaeresis]b
+2uc
+u1che
+u6ch5ec
+u1chi
+uch1l
+uch3m
+uch5n
+uch1r
+uch5to
+ucht5re
+u1chu
+uch1w
+uck1a
+uck5in
+u1d
+ud4a
+u1ei
+u6ela
+uene8
+u6ep
+u1er
+uer1a
+ue8rerl
+uer5o
+u8esc
+u2est
+u8ev
+u1fa
+u2f1ei
+u4f3ent
+u8ferh
+uf1fr
+uf1l
+uf1ra
+uf1re
+uf1r[adiaeresis]
+uf1r[udiaeresis]
+uf1s2p
+uf1st
+uft1s
+u8gabt
+u8gad
+u6gap
+ugeb8
+u8gn
+ugo3s4
+u1ha
+u1he
+u1hi
+uh1le
+u1ho
+uh1re
+u1hu
+uh1w
+u1h[adiaeresis]
+u1h[odiaeresis]
+6ui
+ui5en
+u1ig
+u3ins
+uin8tes
+u5isch.
+u1j
+6uk
+u1ke
+u1ki
+u1kl
+u8klu
+u1k6n
+u5ky
+u1la
+uld8se
+u1le
+ul8lac
+ul6lau
+ul6le6l
+ul6lo
+ulni8
+u1lo
+ulo6i
+ult6a
+ult8e
+u1lu
+ul2vr
+u1l[adiaeresis]
+u1l[odiaeresis]
+3umfan
+5umlau
+umo8f
+um8pho
+u1mu
+umu8s
+u5m[odiaeresis]
+u1n1a
+un2al
+un6at
+unau2
+6und.
+5undein
+un4d3um
+3undzw
+und[udiaeresis]8
+un8d[udiaeresis]b
+une2b
+un1ec
+une2h
+un3eis
+3unfal
+1unf[adiaeresis]
+5ungea
+3ungl[udiaeresis]
+ung2s1
+un8g[adiaeresis]
+1u2nif
+un4it
+un8kro
+unk5s
+u1no
+unpa2
+uns2p
+unvol4
+unvoll5
+u5os.
+u1pa
+u1pi
+u1p2l
+u1pr
+up4s3t
+up2t1a
+u1q
+u1ra
+ur5abs
+ura8d
+ur5ah
+u6rak
+ur3alt
+u6rana
+u6r5ans
+u8rap
+ur5a6ri
+u8ratt
+u1re
+ur3eig
+ur8gri
+u1ri
+ur5ins
+3urlau
+urmen6
+ur8nan
+u1ro
+3ursac
+ur8sau
+ur8sei
+ur4sk
+3urtei
+u1ru
+uru5i6
+uru6r
+u1ry
+ur2za
+ur6z[adiaeresis]
+ur5[adiaeresis]6m
+u5r[odiaeresis]
+u1r[udiaeresis]
+ur[udiaeresis]ck3
+u1sa
+usa4gi
+u2s1ar
+u2s1au
+u8schec
+usch5wi
+u2s1ei
+use8kel
+u8sl
+u4st3a4b
+us3tau
+u2s1uf
+u8surn
+ut1ac
+u1tal
+uta8m
+u1tan
+ut1ar
+u1tas
+ut1au
+u1te
+u8teic
+u4tent
+u8terf
+u6terin
+u4t3hei
+ut5ho
+ut1hu
+u1ti
+utine5
+uti6q
+u1to
+uto5c
+u1tr
+ut1sa
+ut1s6p
+ut6stro
+u1tu
+utz5w
+u1u
+u1v
+uve5n
+uve3r4[adiaeresis]
+u1w
+u1xe
+u5ya
+uy5e6
+u1yi
+u2z1eh
+u8zerh
+u5[odiaeresis]
+u[ssharp]e6n
+u[ssharp]en5e
+8vanb
+6vang
+6varb
+var8d
+va6t5a
+va8tei
+va2t1r
+2v1b
+6v5c
+6vd
+1ve
+6ve5g6
+ver1
+ver5b
+verb8l
+ve2re2
+verg8
+ve2ru8
+ve1s
+ve2s3p
+ve3xe
+2v1f
+2v1g
+6v5h
+vi6el
+vie6w5
+vi1g4
+vi8leh
+vil6le.
+8vint
+vi1ru
+vi1tr
+2v1k
+2v1l
+2v1m
+4v5n
+8vo8f
+voi6le
+vol8lend
+vol8li
+v2or1
+vo2re
+vo8rin
+vo2ro
+2v1p
+8vra
+v6re
+2v2s
+2v1t
+2v1v
+4v3w
+2v1z
+waffe8
+wa6g5n
+1wah
+wah8n
+wa5la
+wal8din
+wal6ta
+wan4dr
+5ware
+wa8ru
+war4za
+1was
+w5c
+w1d
+5wech
+we6fl
+1weg
+we8geng
+weg5h
+weg3l
+we2g1r
+weh6r5er
+5weise
+weit3r
+wel2t
+welt3r
+we6rat
+8werc
+5werdu
+wer4fl
+5werk.
+wer4ka
+wer8ku
+wer4ta
+wer8term
+we2sp
+we8s4tend
+we8str
+we8st[odiaeresis]
+wet8ta
+wich6s5t
+1wid
+wi2dr
+wiede4
+wieder5
+wik6
+wim6ma
+win4d3r
+5wirt
+wisch5l
+1wj
+6wk
+2w1l
+8w1n
+wo1c
+woche6
+wol6f
+wor6t5r
+6ws2
+w1sk
+6w5t
+5wunde.
+wun6gr
+wu1sc
+wu2t1
+6w5w
+wy5a
+w[adiaeresis]rme5
+w[adiaeresis]1sc
+1xag
+x1ak
+x3a4men
+8xamt
+x1an
+8x1b
+x1c
+1xe.
+x3e4g
+1xen
+xe1ro
+x1erz
+1xes
+8xf
+x1g
+8x1h
+1xi
+8xid
+xi8so
+4xiste
+x1k
+6x1l
+x1m
+8xn
+1xo
+8x5o6d
+8x3p2
+x1r
+x1s6
+8x1t
+x6tak
+x8terf
+x2t1h
+1xu
+xu1e
+x5ul
+6x3w
+x1z
+5ya.
+y5an.
+y5ank
+y1b
+y1c
+y6cha
+y4chia
+y1d
+yen6n
+y5ern
+y1g
+y5h
+y5in
+y1j
+y1k2
+y1lak
+yl1al
+yla8m
+y5lax
+y1le
+y1lo
+y5lu
+y8mn
+ym1p2
+y3mu
+y1na
+yno2d
+yn1t
+y1on.
+y1o4p
+y5ou
+ypo1
+y1pr
+y8ps
+y1r
+yri3e
+yr1r2
+ys5iat
+ys8ty
+y1t
+y3w
+y1z
+y[adiaeresis]8m
+z5a6b
+zab5l
+8za6d
+1zah
+za5is
+4z3ak
+6z1am
+5zange.
+8zanl
+2z1ara
+6z5as
+z5auf
+3zaun
+2z1b
+6z1c
+6z1d
+1ze
+ze4dik
+4z3eff
+8zein
+zei4ta
+zei8ters
+ze6la
+ze8lec
+zel8th
+4zemp
+6z5engel
+zen8zin
+8zerg[adiaeresis]
+zer8i
+ze1ro
+zers8
+zerta8
+zer8tab
+zer8tag
+8zerz
+ze8ste
+zeu6gr
+2z1ex
+2z1f8
+z1g
+4z1h
+1zi
+zi1en
+zi5es.
+4z3imp
+zi1na
+6z5inf
+6z5inni
+zin6s5er
+8zinsuf
+zist5r
+zi5th
+zi1tr
+6z1j
+2z1k
+2z1l
+2z1m
+6z1n
+1zo
+zo6gl
+4z3oh
+zo1on
+zor6na8
+4z1p
+z5q
+6z1r
+2z1s8
+2z1t
+z4t3end
+z4t3hei
+z8thi
+1zu
+zu3al
+zu1b4
+zu1f2
+6z5uhr
+zun2a
+8zunem
+zunf8
+8zungl
+zu1o
+zup8fi
+zu1s8
+zu1z
+2z1v
+zw8
+z1wal
+5zweck
+zwei3s
+z1wel
+z1wer
+z6werg
+8z5wes
+1zwi
+zwi1s
+6z1wo
+1zy
+2z1z
+zz8a
+zzi1s
+1z[adiaeresis]
+1z[odiaeresis]
+6z[odiaeresis]l.
+z[odiaeresis]1le
+1z[udiaeresis]
+2z1[udiaeresis]2b
+[adiaeresis]1a6
+[adiaeresis]b1l
+[adiaeresis]1che
+[adiaeresis]3chi
+[adiaeresis]ch8sc
+[adiaeresis]ch8sp
+[adiaeresis]5chu
+[adiaeresis]ck5a
+[adiaeresis]d1a
+[adiaeresis]d5era
+[adiaeresis]6d5ia
+[adiaeresis]1e
+[adiaeresis]5fa
+[adiaeresis]f1l
+[adiaeresis]ft6s
+[adiaeresis]g1h
+[adiaeresis]g3le
+[adiaeresis]6g5nan
+[adiaeresis]g5str
+[adiaeresis]1he
+[adiaeresis]1hi
+[adiaeresis]h1le
+[adiaeresis]h5ne
+1[adiaeresis]hnl
+[adiaeresis]h1re
+[adiaeresis]h5ri
+[adiaeresis]h1ru
+[adiaeresis]1hu
+[adiaeresis]h1w
+6[adiaeresis]i
+[adiaeresis]1isc
+[adiaeresis]6ische
+[adiaeresis]5ism
+[adiaeresis]5j
+[adiaeresis]1k
+[adiaeresis]l1c
+[adiaeresis]1le
+[adiaeresis]8lei
+[adiaeresis]l6schl
+[adiaeresis]mi1e
+[adiaeresis]m8n
+[adiaeresis]m8s
+[adiaeresis]5na
+5[adiaeresis]nderu
+[adiaeresis]ne5i8
+[adiaeresis]ng3l
+[adiaeresis]nk5l
+[adiaeresis]1no
+[adiaeresis]n6s5c
+[adiaeresis]1pa
+[adiaeresis]p6s5c
+3[adiaeresis]q
+[adiaeresis]r1c
+[adiaeresis]1re
+[adiaeresis]re8m
+5[adiaeresis]rgern
+[adiaeresis]r6gl
+[adiaeresis]1ri
+3[adiaeresis]rmel
+[adiaeresis]1ro
+[adiaeresis]rt6s5
+[adiaeresis]1ru
+3[adiaeresis]rztl
+[adiaeresis]5r[odiaeresis]
+[adiaeresis]6s5chen
+[adiaeresis]sen8s
+[adiaeresis]s1th
+[adiaeresis]ta8b
+[adiaeresis]1te
+[adiaeresis]teri4
+[adiaeresis]ter5it
+[adiaeresis]6thy
+[adiaeresis]1ti
+3[adiaeresis]tk
+[adiaeresis]1to
+[adiaeresis]t8schl
+[adiaeresis]ts1p
+[adiaeresis]5tu
+[adiaeresis]ub1l
+[adiaeresis]u1e
+1[adiaeresis]ug
+[adiaeresis]u8ga
+[adiaeresis]u5i
+[adiaeresis]1um.
+[adiaeresis]1us.
+1[adiaeresis]u[ssharp]
+[adiaeresis]1z
+[odiaeresis]1b
+[odiaeresis]1che
+[odiaeresis]5chi
+[odiaeresis]ch8s2tei
+[odiaeresis]ch8str
+[odiaeresis]cht6
+5[odiaeresis]6dem
+5[odiaeresis]ffn
+[odiaeresis]1he
+[odiaeresis]h1l8
+[odiaeresis]h1re
+[odiaeresis]1hu
+[odiaeresis]1is
+[odiaeresis]1ke
+1[odiaeresis]2ko
+1[odiaeresis]l.
+[odiaeresis]l6k5l
+[odiaeresis]l8pl
+[odiaeresis]1mu
+[odiaeresis]5na
+[odiaeresis]nig6s3
+[odiaeresis]1no
+[odiaeresis]5o6t
+[odiaeresis]pf3l
+[odiaeresis]p6s5c
+[odiaeresis]1re
+[odiaeresis]r8gli
+[odiaeresis]1ri
+[odiaeresis]r8tr
+[odiaeresis]1ru
+5[odiaeresis]sterr
+[odiaeresis]1te
+[odiaeresis]5th
+[odiaeresis]1ti
+[odiaeresis]1tu
+[odiaeresis]1v
+[odiaeresis]1w
+[odiaeresis]we8
+[odiaeresis]2z
+[udiaeresis]b6e2
+3[udiaeresis]4ber1
+[udiaeresis]b1l
+[udiaeresis]b1r
+5[udiaeresis]2bu
+[udiaeresis]1che
+[udiaeresis]1chi
+[udiaeresis]8ch3l
+[udiaeresis]ch6s5c
+[udiaeresis]8ck
+[udiaeresis]ck1a
+[udiaeresis]ck5ers
+[udiaeresis]d1a2
+[udiaeresis]6deu
+[udiaeresis]di8t
+[udiaeresis]2d1o4
+[udiaeresis]d5s6
+[udiaeresis]ge4l5a
+[udiaeresis]g1l
+[udiaeresis]h5a
+[udiaeresis]1he
+[udiaeresis]8heh
+[udiaeresis]6h5erk
+[udiaeresis]h1le
+[udiaeresis]h1re
+[udiaeresis]h1ru
+[udiaeresis]1hu
+[udiaeresis]h1w
+[udiaeresis]3k
+[udiaeresis]1le
+[udiaeresis]l4l5a
+[udiaeresis]l8lo
+[udiaeresis]l4ps
+[udiaeresis]l6s5c
+[udiaeresis]1lu
+[udiaeresis]n8da
+[udiaeresis]n8fei
+[udiaeresis]nk5l
+[udiaeresis]n8za
+[udiaeresis]n6zw
+[udiaeresis]5pi
+[udiaeresis]1re
+[udiaeresis]8rei
+[udiaeresis]r8fl
+[udiaeresis]r8fr
+[udiaeresis]r8geng
+[udiaeresis]1ri
+[udiaeresis]1ro
+[udiaeresis]r8sta
+[udiaeresis]1ru
+[udiaeresis]se8n
+[udiaeresis]8sta
+[udiaeresis]8stes
+[udiaeresis]3ta
+[udiaeresis]1te
+[udiaeresis]1ti
+[udiaeresis]t8tr
+[udiaeresis]1tu
+[udiaeresis]t8zei
+[udiaeresis]1v
+[ssharp]1a8
+5[ssharp]a.
+[ssharp]8as
+[ssharp]1b8
+[ssharp]1c
+[ssharp]1d
+1[ssharp]e
+[ssharp]5ec
+8[ssharp]e8g
+8[ssharp]e8h
+2[ssharp]1ei
+8[ssharp]em
+[ssharp]1f8
+[ssharp]1g
+[ssharp]1h
+1[ssharp]i
+[ssharp]1k
+[ssharp]1l
+[ssharp]1m
+[ssharp]1n
+[ssharp]1o
+[ssharp]1p8
+[ssharp]5q
+[ssharp]1r
+[ssharp]1s2
+[ssharp]st8
+[ssharp]1ta
+[ssharp]1te
+[ssharp]t3hei
+[ssharp]1ti
+[ssharp]5to
+[ssharp]1tr
+1[ssharp]u8
+6[ssharp]5um
+[ssharp]1v
+[ssharp]1w
+[ssharp]1z
+2s1ta.
+i2s1tal
+2s1tani
+2s1tan.
+fe2s1ta
+ta2s1ta
+te2s1ta
+nd2ste
+ve2ste
+3s2tec
+4s3techn
+3s2teg
+3s2teh
+3s2tein
+3s2teig
+3s2teif
+3s2tell
+3s2telz
+a4s3tel
+3s2temm
+3s2temp
+3s2tep
+s3s2ter
+t3s2tern
+3s2teue
+6s4teuro
+bs2ti
+te2s3ti
+ve2sti
+3s2tic
+3s2tieb
+3s2tieg
+3s2tif
+3s2til
+3s2tim
+3s2tink
+3s2titu
+a2s1to
+gu2s1to
+ku2s1to
+i2s1tol
+i2s1tor
+ve2s1to
+2s1tung
+2s7tus
+o2s1tul
+aus3s4
+ens3s4
+gs3s4
+.mis2s1
+s2s1b8
+s2s3chen
+s2s3d
+s2s5ec
+2s2s1ei
+s2s3f
+s2s1g
+s2s3h
+s2s3k
+s2s3l
+s2s3m
+s2s3n
+s2s3p8
+s2s5q
+s2s3r
+s2s3s2
+sss2t8
+as2s3te
+is2s3te
+us2s3te
+[udiaeresis]s2s3te
+s2st3hei
+s2s3ti
+s2s1to
+s2s1tr
+6ss5um
+s2s3v
+s2s3w
+s2s3z
+1cker.
+1ckert
+1ckad
+1cke.
+1ckel
+1cken
+4ck1ent
+1ckere
+1ckern
+1ckeru
+1ckie
+1ckig
+1ckun
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-deo.hyp b/Master/texmf-dist/tex/context/patterns/lang-deo.hyp
new file mode 100644
index 00000000000..d6f3799cdd8
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-deo.hyp
@@ -0,0 +1,35 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: dehypht.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='deo'>
+% <sourcefile>dehypht.tex</sourcefile>
+% <title>TeX hyphenation patterns for the German language (traditional orthography)</title>
+% <copyright>
+% <year>1988, 1991</year>
+% <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+% <comment>German hyphen patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-deo.pat b/Master/texmf-dist/tex/context/patterns/lang-deo.pat
new file mode 100644
index 00000000000..f0632c11d4b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-deo.pat
@@ -0,0 +1,5755 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: dehypht.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='deo'>
+% <sourcefile>dehypht.tex</sourcefile>
+% <title>TeX hyphenation patterns for the German language (traditional orthography)</title>
+% <copyright>
+% <year>1988, 1991</year>
+% <owner>Rechenzentrum der Ruhr-Universitaet Bochum</owner>
+% <comment>German hyphen patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.aa6l
+.ab3a4s
+.ab3ei
+.abi2
+.ab3it
+.ab1l
+.ab1r
+.ab3u
+.ad3o4r
+.alti6
+.ana3c
+.an5alg
+.an1e
+.ang8s
+.an1s
+.ap1p
+.ar6sc
+.ar6ta
+.ar6tei
+.as2z
+.au2f1
+.au2s3
+.be5erb
+.be3na
+.ber6t5r
+.bie6r5
+.bim6s5t
+.brot3
+.bru6s
+.ch6
+.che6f5
+.da8c
+.da2r
+.dar5in
+.dar5u
+.den6ka
+.de5r6en
+.des6pe
+.de8spo
+.de3sz
+.dia3s4
+.dien4
+.dy2s1
+.ehren5
+.eine6
+.ei6n5eh
+.ei8nen
+.ein5sa
+.en6der
+.en6d5r
+.en3k4
+.en8ta8
+.en8tei
+.en4t3r
+.epo1
+.er6ban
+.er6b5ei
+.er6bla
+.er6d5um
+.er3ei
+.er5er
+.er3in
+.er3o4b
+.erwi5s
+.es1p
+.es8t
+.ex1a2
+.ex3em
+.fal6sc
+.fe6st5a
+.flu4g3
+.furch8
+.ga6ner
+.ge3n4a
+.ge5r[odiaeresis]
+.ges6
+.halb5
+.halbe6
+.hal6br
+.haup4
+.hau4t
+.heima6
+.he4r3e
+.her6za
+.he5x
+.hin3
+.hir8sc
+.ho4c
+.hu3sa
+.hy5o
+.ibe5
+.ima6ge
+.in1
+.ini6
+.is5chi
+.jagd5
+.kal6k5o
+.ka6ph
+.ki4e
+.kop6f3
+.kraf6
+.k[udiaeresis]5ra
+.lab6br
+.liie6
+.lo6s5k
+.l[odiaeresis]4s3t
+.ma5d
+.mi2t1
+.no6th
+.no6top
+.obe8ri
+.ob1l
+.obs2
+.ob6st5e
+.or3c
+.ort6s5e
+.ost3a
+.oste8r
+.pe4re
+.pe3ts
+.ph6
+.po8str
+.rau4m3
+.re5an
+.ro8q
+.ru5the
+.r[udiaeresis]5be
+.r[udiaeresis]8stet
+.sch8
+.se6e
+.se5n6h
+.se5ra
+.si2e
+.spi6ke
+.st4
+.sy2n
+.tages5
+.tan6kl
+.ta8th
+.te6e
+.te8str
+.to6der
+.to8nin
+.to6we
+.um1
+.umpf4
+.un1
+.une6
+.unge5n
+.ur1c
+.ur5en
+.ve6rin
+.vora8
+.wah6l5
+.we8ges
+.wo6r
+.wor3a
+.wun4s
+.zi4e
+.zuch8
+.[adiaeresis]nde8re
+.[odiaeresis]ch8
+aa1c
+aa2gr
+aal5e
+aa6r5a
+a5arti
+aa2s1t
+aat2s
+6aba
+ab3art
+1abdr
+6abel
+aben6dr
+ab5erk
+ab5err
+ab5esse
+1abf
+1abg
+1abh[adiaeresis]
+ab1ir
+1abko
+a1bl
+ab1la
+5ablag
+a6bla[ssharp]
+ab4ler
+ab1lu
+a8bl[adiaeresis]
+5a6bl[odiaeresis]
+abma5c
+1abn
+ab1ra
+ab1re
+5a6brec
+ab1ro
+ab1s
+ab8sk
+abs2z
+3abtei
+ab1ur
+1abw
+5abze
+5abzu
+ab1[adiaeresis]n
+ab[adiaeresis]u8
+a4ce.
+a5chal
+ach5art
+ach5au
+a1che
+a8chent
+ach6er.
+a6ch5erf
+a1chi
+ach1l
+ach3m
+ach5n
+a1cho
+ach3re
+a1chu
+ach1w
+a1chy
+ach5[adiaeresis]f
+ack1o
+acks6t
+ack5sta
+a1d
+8ad.
+a6d5ac
+ad3ant
+ad8ar
+5addi
+a8dein
+ade5o8
+adi5en
+1adj
+1adle
+ad1op
+a2dre
+3adres
+adt1
+1adv
+a6d[adiaeresis]
+a1e2d
+ae1r
+a1er.
+1aero
+8afa
+a3fal
+af1an
+a5far
+a5fat
+af1au
+a6fentl
+a2f1ex
+af1fr
+af5rau
+af1re
+1afri
+af6tent
+af6tra
+aft5re
+a6f5um
+8af[adiaeresis]
+ag5abe
+5a4gent
+ag8er
+ages5e
+1aggr
+ag5las
+ag1lo
+a1gn
+ag2ne
+1agog
+a6g5und
+a1ha
+a1he
+ah5ein
+a4h3erh
+a1hi
+ahl1a
+ah1le
+ah4m3ar
+ahn1a
+a5ho
+ahra6
+ahr5ab
+ah1re
+ah8rei
+ahren8s
+ahre4s3
+ahr8ti
+ah1ru
+a1hu
+ah8[odiaeresis]
+ai3d2s
+ai1e
+aif6
+a3inse
+ai4re.
+a5isch.
+ais8e
+a3ismu
+ais6n
+aiso6
+a1j
+1akad
+a4kade
+a1ke
+a1ki
+1akko
+5akro1
+a5lal
+al5ans
+3al8arm
+al8beb
+al8berw
+alb5la
+3album
+al1c
+a1le
+a6l5e6be
+a4l3ein
+a8lel
+a8lerb
+a8lerh
+a6lert
+5a6l5eth
+1algi
+al4gli
+al3int
+al4lab
+al8lan
+al4l3ar
+alle3g
+a1lo
+a4l5ob
+al6schm
+al4the
+altist5
+al4t3re
+8a1lu
+alu5i
+a6lur
+alu3ta
+a1l[adiaeresis]
+a6mate
+8ame.
+5a6meise
+am6m5ei
+am6mum
+am2n
+ampf3a
+am6schw
+am2ta
+a1mu
+a1m[adiaeresis]
+a3nac
+a1nad
+anadi5e
+an3ako
+an3alp
+3analy
+an3ame
+an3ara
+a1nas
+an5asti
+a1nat
+anat5s
+an8dent
+ande4s3
+an1ec
+an5eis
+an1e2k
+4aner.
+a6n5erd
+a8nerf
+a6n5erke
+1anfa
+5anfert
+1anf[adiaeresis]
+3angab
+5angebo
+an3gli
+ang6lis
+an2gn
+3angri
+ang5t6
+5anh[adiaeresis]
+ani5g
+ani4ka
+an5i8on
+an1kl
+an6kno
+an4kro
+1anl
+anma5c
+anmar4
+3annah
+anne4s3
+a1no
+5a6n1o2d
+5a6n3oma
+5a6nord
+1anr
+an1sa
+5anschl
+an4soz
+an1st
+5anstal
+an1s2z
+5antenn
+an1th
+5anw[adiaeresis]
+a5ny
+an4z3ed
+5anzeig
+5anzieh
+3anzug
+an1[adiaeresis]
+5an[adiaeresis]s
+a1n[odiaeresis]
+an[odiaeresis]8d
+a1os
+a1pa
+3apfel
+a2ph1t
+aph5[adiaeresis]6
+a1pi
+8apl
+apo1c
+apo1s
+a6poste
+a6poth
+1appa
+ap1pr
+a1pr
+a5p[adiaeresis]
+a3p[udiaeresis]
+a1ra
+a4r3af
+ar3all
+3arbei
+2arbt
+ar1c
+2a1re
+ar3ein
+ar2gl
+2a1ri
+ari5es
+ar8kers
+ar6les
+ar4nan
+ar5o6ch
+ar1o2d
+a1rol
+ar3ony
+a8ror
+a3ros
+ar5ox
+ar6schl
+8artei
+ar6t5ri
+a1ru
+a1ry
+1arzt
+arz1w
+ar8z[adiaeresis]
+ar[adiaeresis]8m
+ar[odiaeresis]6
+ar5[odiaeresis]m
+ar1[udiaeresis]2
+a1sa
+a6schec
+asch5l
+asch3m
+a6schn
+a3s4hi
+as1pa
+asp5l
+a8steb
+as5tev
+1asth
+a6stoc
+a1str
+ast3re
+8a1ta
+ata5c
+ata3la
+a6tapf
+ata5pl
+a1te
+a6teli
+aten5a
+ate5ran
+6atf
+6atg
+a1th
+at3hal
+1athl
+2a1ti
+5atlant
+3atlas
+8atmus
+6atn
+a1to
+a6t5ops
+ato6ra
+a6t5ort.
+4a1tr
+a6t5ru
+at2t1h
+at5t6h[adiaeresis]
+6a1tu
+atz1w
+a1t[adiaeresis]
+a1t[udiaeresis]
+au1a
+au6bre
+auch3a
+au1e
+aue4l
+5aufent
+3auff[udiaeresis]
+3aufga
+1aufn
+auf1t
+3auftr
+1aufw
+3auge.
+au4kle
+aule8s
+6aum
+au8mar
+aum5p
+1ausb
+3ausd
+1ausf
+1ausg
+au8sin
+3auss
+au4sta
+1ausw
+1ausz
+aut5eng
+au1th
+1auto
+au[ssharp]e8
+a1v
+ave5r6a
+aver6i
+a1w
+a6wes
+a1x
+a2xia
+a6xio
+a1ya
+a1z
+azi5er.
+8a[ssharp]
+1ba
+8ba8del
+ba1la
+ba1na
+ban6k5r
+ba5ot
+bardi6n
+ba1ro
+basten6
+bau3sp
+2b1b
+bb6le
+b2bli
+2b1c
+2b1d
+1be
+be1a
+be8at.
+be1ch
+8becht
+8becke.
+be5el
+be1en
+bee8rei
+be5eta
+bef2
+8beff
+be1g2
+beh[odiaeresis]8
+bei1s
+6b5eisen
+bei3tr
+b8el
+bel8o
+belu3t
+be3nac
+bend6o
+be6ners
+be6nerw
+be4nor
+ben4se6
+bens5el
+be1n[adiaeresis]
+be1n[udiaeresis]
+be1o2
+b8er.
+be1ra
+be8rac
+ber8gab.
+ber1r
+be1r[udiaeresis]
+bes8c
+bes5erh
+bes2p
+be5tha
+bet5sc
+be1un
+be1ur
+8bex
+be6zwec
+2b1f8
+bfe6st5e
+2b1g2
+bga2s5
+bge1
+2b1h
+bhole6
+1bi
+bi1bl
+b6ie
+bi1el
+bi1la
+bil[adiaeresis]5
+bi1na
+bi4nok
+bi5str
+bi6stu
+bi5tr
+bit4t5r
+b1j
+2b1k2
+bk[udiaeresis]6
+bl8
+b6la.
+6b1lad
+6blag
+8blam
+1blat
+b8latt
+3blau.
+b6lav
+3ble.
+b1leb
+b1led
+8b1leg
+8b1leh
+8bleid
+8bleih
+6b3lein
+blei3s
+ble4m3o
+4blich
+b4lind
+8bling
+b2lio
+5blit
+b4litz
+b1loh
+8b1los
+1blu
+5blum
+2blun
+blut3a
+blut5sc
+3bl[adiaeresis]
+bl[adiaeresis]s5c
+5bl[odiaeresis]
+3bl[udiaeresis]
+bl[udiaeresis]8sc
+2b1m
+2b1n
+1bo
+bo1ch
+bo5d6s
+boe5
+8boff
+8bonk
+bo1ra
+b1ort
+2b1p2
+b1q
+1br
+brail6
+brast8
+bre4a
+b5red
+8bref
+8b5riem
+b6riga
+bro1s
+b1rup
+b2ruz
+8br[odiaeresis]h
+br[odiaeresis]s5c
+8bs
+b1sa
+b8sang
+b2s1ar
+b1sc
+bs3erl
+bs3erz
+b8sof
+b1s2p
+bst1h
+b3stru
+b5st[adiaeresis]
+b6sun
+2b1t
+b2t1h
+1bu
+bu1ie
+bul6k
+b8ure
+bu6sin
+6b1v
+2b1w
+1by1
+by6te.
+8b1z
+bzi1s
+1b[adiaeresis]
+b5[adiaeresis]6s5
+1b[udiaeresis]
+b6[udiaeresis]5bere
+b[udiaeresis]ge6
+b[udiaeresis]gel5e
+b[udiaeresis]r6sc
+1ca
+cag6
+ca5la
+ca6re
+ca5y
+c1c
+1ce
+celi4c
+celich5
+ce1ro
+c8h
+2ch.
+1chae
+ch1ah
+ch3akt
+cha6mer
+8chanz
+5chara
+3chari
+5chato
+6chb
+1chef
+6chei
+ch3eil
+ch3eis
+6cherkl
+6chf
+4chh
+5chiad
+5chias
+6chins
+8chj
+chl6
+5chlor
+6ch2m
+2chn6
+ch8nie
+5cho.
+8chob
+choi8d
+6chp
+ch3ren
+ch6res
+ch3r[udiaeresis]
+2chs
+2cht
+cht5ha
+cht3hi
+5chthon
+ch6tin
+6chuh
+chu4la
+6ch3unt
+chut6t
+8chw
+1ci
+ci5tr
+c2k
+2ck.
+ck1ei
+4ckh
+ck3l
+ck3n
+ck5o8f
+ck1r
+2cks
+ck5stra
+ck6s5u
+c2l
+1c8o
+con6ne
+8corb
+cos6t
+c3q
+1c6r
+8c1t
+1cu
+1cy
+5c[adiaeresis]1
+c[odiaeresis]5
+1da.
+8daas
+2dabg
+8dabr
+6dabt
+6dabw
+1dac
+da2gr
+6d5alk
+8d5amt
+dan6ce.
+dani5er
+dan8ker
+2danl
+danla6
+6dans
+8danzi
+6danzu
+d1ap
+da2r1a8
+2d1arb
+d3arc
+dar6men
+4d3art
+8darz
+1dat
+8datm
+2d1auf
+2d1aus
+2d1b
+2d1c
+2d1d
+d5de
+d3d2h
+dd[adiaeresis]mme8
+1de
+2deal
+de5an
+de3cha
+de1e
+defe6
+6deff
+2d1ehr
+5d4eic
+de5isc
+de8lar
+del6s5e
+del6spr
+de4mag
+de8mun
+de8nep
+dene6r
+8denge.
+8dengen
+de5o6d
+2deol
+de5ram
+8derdb
+der5ein
+de1ro
+der1r
+d8ers
+der5um
+de4s3am
+de4s3an
+de4sau
+de6sil
+de4sin
+de8sor
+de4spr
+de2su
+8deul
+de5us.
+2d1f
+df2l
+2d1g
+2d1h
+1di
+dia5c
+di5ara
+dice5
+di3chr
+di5ena
+di1gn
+di1la
+dil8s
+di1na
+8dind
+6dinf
+4d3inh
+2d1ins
+di5o6d
+di3p4t
+di8sen
+dis1p
+di5s8per
+di6s5to
+dis5tra
+di8tan
+di8tin
+d1j
+6dje
+2dju
+2d1k
+2d1l
+2d1m
+2d1n6
+dni6
+dnje6
+1do
+6d5obe
+do6berf
+6d5ony
+do3ran
+6dord
+2d1org
+dor4t3h
+do6ste
+6doth
+dott8e
+2d1p
+d5q
+dr4
+1drah
+8drak
+d5rand
+6dre.
+4drech
+d6reck
+4d3reg
+8d3reic
+d5reife
+8drem
+8d1ren
+2drer
+8dres.
+6d5rh
+1dria
+d1ric
+8drind
+droi6
+dro5x
+1dru
+8drut
+dr[odiaeresis]s5c
+1dr[udiaeresis]
+dr[udiaeresis]5b
+dr[udiaeresis]8sc
+2ds
+d1sa
+d6san
+dsat6
+d1sc
+5d6scha.
+5dschik
+dse8e
+d8serg
+8dsl
+d1sp
+d4spak
+ds2po
+d8sp[adiaeresis]
+d1st
+d1s[udiaeresis]
+2dt
+d1ta
+d1te
+d1ti
+d1to
+dt1s6
+d1tu
+d5t[adiaeresis]
+1du
+du5als
+du1b6
+du1e
+duf4t3r
+4d3uh
+du5ie
+8duml
+8dumw
+2d1und
+du8ni
+6d5unt
+dur2c
+durch3
+6durl
+6dursa
+8durt
+du1s
+du8schr
+2d1v
+2d1w
+dwa8l
+2d1z
+1d[adiaeresis]
+6d[adiaeresis]h
+8d[adiaeresis]nd
+d[adiaeresis]6r
+d[odiaeresis]8bl
+d5[odiaeresis]l
+d[odiaeresis]r6fl
+d[odiaeresis]8sc
+d5[odiaeresis]4st
+d[odiaeresis]s3te
+1d[udiaeresis]
+ea4ben
+e1ac
+e1ah
+e1akt
+e1al.
+e5alf
+e1alg
+e5a8lin
+e1alk
+e1all
+e5alp
+e1alt
+e5alw
+e1am
+e1and
+ea6nim
+e1ar.
+e5arf
+e1ark
+e5arm
+e3art
+e5at.
+e6ate
+e6a5t6l
+e8ats
+e5att
+e6au.
+e1aus
+e1b
+e6b5am
+ebens5e
+eb4lie
+eb4ser
+eb4s3in
+e1che
+e8cherz
+e1chi
+ech3m
+8ech3n
+ech1r
+ech8send
+ech4su
+e1chu
+eck5an
+e5cl
+e1d
+ee5a
+ee3e
+ee5g
+e1ei
+ee5isc
+eei4s3t
+ee6lend
+e1ell
+ee5l[odiaeresis]
+e1erd
+ee3r4e
+ee8reng
+eere6s5
+ee5r[adiaeresis]
+ee6tat
+e1ex
+e1f
+e6fau
+e8fe8b
+3effek
+ef3rom
+ege6ra
+eglo6si
+1egy
+e1ha
+e6h5ach
+eh5ans
+e6hap
+eh5auf
+e1he
+e1hi
+ehl3a
+eh1le
+ehl5ein
+eh1mu
+ehn5ec
+e1ho
+ehr1a
+eh1re
+ehre6n
+eh1ri
+eh1ru
+ehr5um
+e1hu
+eh1w
+e1hy
+e1h[adiaeresis]
+e1h[odiaeresis]
+e3h[udiaeresis]t
+ei1a
+eia6s
+ei6bar
+eich3a
+eich5r
+ei4dar
+ei6d5ei
+ei8derf
+ei3d4sc
+ei1e
+8eifen
+3eifri
+1eign
+eil1d
+ei6mab
+ei8mag
+ein1a4
+ei8nat
+ei8nerh
+ei8ness
+ei6nete
+ein1g
+e8ini
+ein1k
+ei6n5od
+ei8nok
+ei4nor
+e3ins[adiaeresis]
+ei1o
+e1irr
+ei5ru
+ei8sab
+ei5schn
+ei6s5ent
+ei8sol
+ei4t3al
+eit3ar
+eit1h
+ei6thi
+ei8tho
+eit8samt
+ei6t5um
+e1j
+1ekd
+e1ke
+e1ki
+e1k2l
+e1kn
+ekni4
+e1la
+e2l1al
+6elan
+e6lanf
+e8lanl
+e6l5ans
+el3arb
+el3arm
+e6l3art
+5e6lasti
+e6lauge
+elbst5a
+e1le
+6elef
+ele6h
+e6l5ehe
+e8leif
+e6l5einh
+1elek
+e8lel
+3eleme
+e6lemen
+e6lente
+el5epi
+e4l3err
+e6l5ersc
+elf2l
+elg2
+e6l5ins
+ell8er
+4e1lo
+e4l3ofe
+el8soh
+el8tent
+5eltern
+e1lu
+elut2
+e1l[adiaeresis]
+e1l[udiaeresis]
+em8dei
+em8meis
+4emo
+emo5s
+1emp1f
+1empt
+1emto
+e1mu
+emurk4
+emurks5
+e1m[adiaeresis]
+en5a6ben
+en5achs
+en5ack
+e1nad
+en5af
+en5all
+en3alt
+en1am
+en3an.
+en3ant
+en3anz
+en1a6p
+en1ar
+en1a6s
+6e1nat
+en3auf
+en3aus
+en2ce
+enda6l
+end5erf
+end5erg
+en8dess
+4ene.
+en5eck
+e8neff
+e6n5ehr
+e6n5eim
+en3eis
+6enem.
+6enen
+e4nent
+4ener.
+e8nerd
+e6n3erf
+e4nerg
+5energi
+e6n5erla
+en5ers
+e6nerst
+en5erw
+6enes
+e6n5ess
+e2nex
+en3glo
+2eni
+enni6s5
+ennos4
+enns8
+e1no
+e6nober
+eno8f
+en5opf
+e4n3ord
+en8sers
+ens8kl
+en1sp
+ens6por
+en5t6ag
+enta5go
+en8terbu
+en6tid
+3entla
+ent5ric
+5entwic
+5entwu
+1entz
+enu5i
+e3ny
+en8zan
+en1[odiaeresis]f
+e1n[odiaeresis]s
+e1n[udiaeresis]g
+eo1c
+e5o6fe
+e5okk
+e1on.
+e3onf
+e5onk
+e5onl
+e5onr
+e5opf
+e5ops
+e5or.
+e1ord
+e1org
+eo5r6h
+eo1t
+e1pa
+e8pee
+e6p5e6g
+ep5ent
+e1p2f
+e1pi
+5epid
+e6pidem
+e1pl
+5epos
+e6pos.
+ep4p3a
+e1pr
+e1p[adiaeresis]
+e1q
+e1ra.
+er5aal
+8eraba
+e5rabel
+er5a6ben
+e5rabi
+er3abs
+er3ach
+era5e
+era5k6l
+er3all
+er3amt
+e3rand
+e3rane
+er3ans
+e5ranz.
+e1rap
+er3arc
+e3rari
+er3a6si
+e1rat
+erat3s
+er3auf
+e3raum
+3erbse
+er1c
+e1re
+4e5re.
+er3eck
+er5egg
+er5e2h
+2erei
+e3rei.
+e8reine
+er5einr
+6eren.
+e4r3enm
+4erer.
+e6r5erm
+er5ero
+er5erst
+e4r3erz
+er3ess
+5erf[udiaeresis]l
+er8gan.
+5ergebn
+er2g5h
+5erg[adiaeresis]nz
+5erh[odiaeresis]hu
+2e1ri
+eri5ak
+e6r5iat
+e4r3ind
+e6r5i6n5i6
+er5ins
+e6r5int
+er5itio
+er1kl
+3erkl[adiaeresis]
+5erl[odiaeresis]s.
+ermen6s
+er6nab
+3ernst
+6e1ro.
+e1rod
+er1o2f
+e1rog
+6e3roi
+ero8ide
+e3rol
+e1rom
+e1ron
+e3rop8
+e2r1or
+e1ros
+e1rot
+er5ox
+ersch4
+5erstat
+er6t5ein
+er2t1h
+er5t6her
+2e1ru
+eruf4s3
+e4r3uhr
+er3ums
+e5rus
+5erwerb
+e1ry
+er5zwa
+er3zwu
+er[adiaeresis]8m
+er5[adiaeresis]s
+er[odiaeresis]8
+e3r[odiaeresis]s.
+e6r1[udiaeresis]2b
+e1sa
+esa8b
+e8sap
+e6s5a6v
+e1sc
+esch4l
+ese1a
+es5ebe
+eserve5
+e8sh
+es5ill
+es3int
+es4kop
+e2sl
+eso8b
+e1sp
+espei6s5
+es2po
+es2pu
+5essenz
+e6stabs
+e6staf
+e6st5ak
+est3ar
+e8stob
+e1str
+est5res
+es3ur
+e2sz
+e1s[udiaeresis]
+e1ta
+et8ag
+etari5e
+eta8ta
+e1te
+eten6te
+et5hal
+e5thel
+e1ti
+1etn
+e1to
+e1tr
+et3rec
+e8tscha
+et8se
+et6tei
+et2th
+et2t1r
+e1tu
+etu1s
+et8zent
+et8zw
+e1t[adiaeresis]
+e1t[odiaeresis]
+e1t[udiaeresis]
+eu1a2
+eu1e
+eue8rei
+eu5fe
+euin5
+euk2
+e1um.
+eu6nio
+e5unter
+eu1o6
+eu5p
+3europ
+eu1sp
+eu5str
+eu8zo
+e1v
+eval6s
+eve5r6en
+ever4i
+e1w
+e2wig
+ex1or
+1exp
+1extr
+ey3er.
+e1z
+e1[adiaeresis]2
+e5[odiaeresis]8
+e1[udiaeresis]
+e8[ssharp]es
+fa6ch5i
+fade8
+fa6del
+fa5el.
+fal6lo
+falt8e
+fa1na
+fan4gr
+6fanl
+6fap
+far6ba
+far4bl
+far6r5a
+2f1art
+fa1sc
+fau8str
+fa3y
+2f1b2
+6f1c
+2f1d
+1fe
+2f1eck
+fe6dr
+feh6lei
+f6eim
+8feins
+f5eis
+fel5en
+8feltern
+8femp
+fe5rant
+4ferd.
+ferri8
+fe8stof
+fe6str
+fe6stum
+fe8tag
+fet6ta
+fex1
+2ff
+f1fa
+f6f5arm
+f5fe
+ffe5in
+ffe6la
+ffe8ler
+ff1f
+f1fla
+ff3lei
+ff4lie
+ff8sa
+ff6s5ta
+2f1g2
+fgewen6
+4f1h
+1fi
+fid4
+fi3ds
+fieb4
+fi1la
+fi8lei
+fil4m5a
+f8in.
+fi1na
+8finf
+fi8scho
+fi6u
+6f1j
+2f1k2
+f8lanz
+fl8e
+4f3lein
+8flib
+4fling
+f2lix
+6f3lon
+5flop
+1flor
+5f8l[adiaeresis]c
+3fl[odiaeresis]t
+2f1m
+2f1n
+1fo
+foh1
+f2on
+fo6na
+2f1op
+fo5ra
+for8mei
+for8str
+for8th
+for6t5r
+fo5ru
+6f5otte
+2f1p8
+f1q
+fr6
+f5ram
+1f8ran
+f8ra[ssharp]
+f8re.
+frei1
+5frei.
+f3reic
+f3rest
+f1rib
+8f1ric
+6frig
+1fris
+fro8na
+fr[adiaeresis]s5t
+2fs
+f1sc
+f2s1er
+f5str
+fs3t[adiaeresis]t
+2ft
+f1tak
+f1te
+ft5e6h
+ftere6
+ft1h
+f1ti
+f5to
+f1tr
+ft5rad
+ft1sc
+ft2so
+f1tu
+ftwi3d4
+ft1z
+1fu
+6f5ums
+6funf
+fun4ka
+fu8[ssharp]end
+6f1v
+2f1w
+2f1z
+1f[adiaeresis]
+f[adiaeresis]1c
+8f[adiaeresis]rm
+6f[adiaeresis]ug
+f[adiaeresis]8[ssharp]
+f[odiaeresis]de3
+8f[odiaeresis]f
+3f[odiaeresis]r
+1f[udiaeresis]
+f[udiaeresis]n4f3u
+1ga
+ga6bl
+6gabw
+8gabz
+g3a4der
+ga8ho
+ga5isc
+4gak
+ga1la
+6g5amt
+ga1na
+gan5erb
+gan6g5a
+ga5nj
+6ganl
+8gansc
+6garb
+2g1arc
+2g1arm
+ga5ro
+6g3arti
+ga8sa
+ga8sc
+ga6stre
+2g1atm
+6g5auf
+gau5fr
+g5aus
+2g1b
+g5c
+6gd
+g1da
+1ge
+ge1a2
+ge6an
+ge8at.
+ge1e2
+ge6es
+gef2
+8geff
+ge1g2l
+ge1im
+4g3eise
+geist5r
+gel8bra
+gelt8s
+ge5l[odiaeresis]
+ge8nin
+gen3k
+6g5entf
+ge3n[adiaeresis]
+ge1or
+ge1ra
+ge6rab
+ger8au
+8gerh[odiaeresis]
+ger8ins
+ge1ro
+6g5erz.
+ge1r[adiaeresis]
+ge1r[udiaeresis]
+ge1s
+ges2p
+ge5unt
+4g3ex3
+2g1f8
+2g1g
+g1ha
+6g1hei
+5ghel.
+g5henn
+6g1hi
+g1ho
+1ghr
+g1h[odiaeresis]
+1gi
+gi5la
+gi8me.
+gi1na
+4g3ins
+gi3str
+g1j
+2g1k
+8gl.
+1glad
+g5lag
+glan4z3
+1glas
+6glass
+5glaub
+g3lauf
+1gle.
+g5leb
+3gleic
+g3lein
+5gleis
+1glem
+2gler
+8g3leu
+gli8a
+g2lie
+3glied
+1g2lik
+1g2lim
+g6lio
+1gloa
+5glom
+1glon
+1glop
+g1los
+g4loss
+g5luf
+1g2ly
+1gl[udiaeresis]
+2g1m
+gn8
+6gn.
+1gna
+8gnach
+2gnah
+g1nas
+g8neu
+g2nie
+g3nis
+1gno
+8gnot
+1go
+goe1
+8gof
+2gog
+5gogr
+6g5oh
+goni5e
+6gonist
+go1ra
+8gord
+2g1p2
+g1q
+1gr4
+g5rahm
+gra8m
+gra4s3t
+6g1rec
+gre6ge
+4g3reic
+g5reit
+8grenn
+gri4e
+g5riem
+5grif
+2grig
+g5ring
+6groh
+2grot
+gro6[ssharp]
+4grut
+2gs
+gs1ab
+g5sah
+gs1ak
+gs1an
+gs8and
+gs1ar
+gs1au
+g1sc
+gs1ef
+g5seil
+gs5ein
+g2s1er
+gs1in
+g2s1o
+gso2r
+gs1pr
+g2s1u
+2g1t
+g3te
+g2t1h
+1gu
+gu5as
+gu2e
+2gue.
+6gued
+4g3uh
+8gums
+6g5unt
+gu1s
+gut3h
+gu2tu
+4g1v
+2g1w
+gy1n
+g1z
+1g[adiaeresis]
+8g[adiaeresis]8m
+6g[adiaeresis]rm
+1g[odiaeresis]
+1g[udiaeresis]
+6g[udiaeresis]b
+1haa
+hab8r
+ha8del
+hade4n
+8hae
+ha5el.
+haf6tr
+2hal.
+ha1la
+hal4b5a
+6hale
+8han.
+ha1na
+han6dr
+han6ge.
+2hani
+h5anth
+6hanz
+6harb
+h3arbe
+h3arme
+ha5ro
+ha2t1h
+h1atm
+hau6san
+ha8[ssharp]
+h1b2
+h1c
+h1d
+he2bl
+he3cho
+h3echt
+he5d6s
+5heft
+h5e6he.
+hei8ds
+h1eif
+2hein
+he3ism
+he5ist.
+heit8s3
+hek6ta
+hel8lau
+8helt
+he6mer
+1hemm
+6h1emp
+hen5end
+hen5klo
+hen6tri
+he2nu
+8heo
+he8q
+her3ab
+he5rak
+her3an
+4herap
+her3au
+h3erbi
+he1ro
+he8ro8b
+he4r3um
+her6z5er
+he4spe
+he1st
+heta6
+het5am
+he5th
+heu3sc
+he1xa
+hey5e
+h1f2
+h1g
+hgol8
+h1h
+h1iat
+hie6r5i
+hi5kt
+hil1a2
+hil4fr
+hi5nak
+hin4ta
+hi2nu
+hi5ob
+hirn5e
+hir6ner
+hi1sp
+hi1th
+hi5tr
+5hitz
+h1j
+h6jo
+h1k2
+hlabb4
+hla4ga
+hla6gr
+h5lai
+hl8am
+h1las
+h1la[ssharp]
+hl1c
+h1led
+h3lein
+h5ler.
+h2lif
+h2lim
+h8linf
+hl5int
+h2lip
+h2lit
+h4lor
+h3lose
+h1l[adiaeresis]s
+hme5e
+h2nee
+h2nei
+hn3eig
+h2nel
+hne8n
+hne4p3f
+hn8erz
+h6netz
+h2nip
+h2nit
+h1nol
+hn5sp
+h2nuc
+h2nud
+h2nul
+hoch1
+1hoh
+hoh8lei
+2hoi
+ho4l3ar
+1holz
+h2on
+ho1ra
+6horg
+5horn.
+ho3sl
+hos1p
+ho4spi
+h1p
+hpi6
+h1q
+6hr
+h1rai
+h8rank
+h5raum
+hr1c
+hrcre8
+h1red
+h3reg
+h8rei.
+h4r3erb
+h8rert
+hrg2
+h1ric
+hr5ins
+h2rom
+hr6t5erl
+hr2t1h
+hr6t5ra
+hr8tri
+h6rum
+hr1z
+hs3ach
+h6s5amt
+h1sc
+h6s5ec
+h6s5erl
+hs8erle
+h4sob
+h1sp
+h8spa[ssharp]
+h8spel
+hs6po
+h4spun
+h1str
+h4s3tum
+hs3und
+h1s[udiaeresis]
+h5ta.
+h5tab
+ht3ac
+ht1ak
+ht3ang
+h5tanz
+ht1ar
+ht1at
+h5taub
+h1te
+h2t1ec
+ht3eff
+ht3ehe
+h4t3eif
+h8teim
+h4t3ein
+ht3eis
+h6temp
+h8tentf
+hte8ren
+h6terf[udiaeresis]
+h8tergr
+h4t3erh
+h6t5ersc
+h8terst
+h8tese
+h8tess
+h2t1eu
+h4t3ex
+ht1he
+ht5hu
+h1ti
+ht5rak
+hts3ah
+ht1sc
+ht6sex
+ht8sk
+ht8so
+h1tu
+htz8
+h5t[udiaeresis]m
+hub5l
+hu6b5r
+huh1l
+h5uhr.
+huld5a6
+hu8lent
+hu8l[adiaeresis]
+h5up.
+h1v
+h5weib
+h3weis
+h1z
+h[adiaeresis]8kl
+h[adiaeresis]l8s
+h[adiaeresis]ma8tu8
+h[adiaeresis]8sche.
+h[adiaeresis]t1s
+h[adiaeresis]u4s3c
+2h[odiaeresis].
+2h[odiaeresis]e
+8h[odiaeresis]i
+h[odiaeresis]6s
+h[odiaeresis]s5c
+h[udiaeresis]hne6
+h[udiaeresis]l4s3t
+h[udiaeresis]tte8re
+i5adn
+i1af
+i5ak.
+i1al.
+i1al1a
+i1alb
+i1ald
+i5alei
+i1alf
+i1alg
+i3alh
+i1alk
+i1all
+i1alp
+i1alr
+i1als
+i1alt
+i1alv
+i5alw
+i3alz
+i1an.
+ia5na
+i3and
+ian8e
+ia8ne8b
+i1ang
+i3ank
+i5ann
+i1ant
+i1anz
+i6apo
+i1ar.
+ia6rab
+i5arr
+i1as.
+i1asm
+i1ass
+i5ast.
+i1at.
+i5ats
+i1au
+i5azz
+i6b5eig
+i6b5eis
+ib2le
+i4blis
+i6brig
+i6b5unt
+i6b[udiaeresis]b
+i1che
+ich5ei
+i6cherb
+i1chi
+ich5ins
+ich1l
+ich3m
+ich1n
+i1cho
+icht5an
+icht3r
+i1chu
+ich1w
+ick6s5te
+ic5l
+i1d
+id3arm
+3ideal
+ide8na
+3ideol
+ide5r[odiaeresis]
+i6diot
+id5rec
+id1t
+ie1a
+ie6b5ar
+iebe4s3
+ie2bl
+ieb1r
+ie8bra
+ie4bre
+ie8b[adiaeresis]
+ie2dr
+ie1e8
+ie6f5ad
+ief5f
+ie2f1l
+ie4fro
+ief1t
+i1ei
+ie4l3ec
+ie8lei
+ie4lek
+i3ell
+i1en.
+i1end
+ien6e
+i3enf
+i5enn
+ien6ne.
+i1enp
+i1enr
+i5ensa
+ien8stal
+i5env
+i1enz
+ie5o
+ier3a4b
+ie4rap
+i2ere
+ie4rec
+ie6r5ein
+ie6r5eis
+ier8er
+i3ern.
+ie8rum
+ie8rund
+ie6s5che
+ie6tau
+ie8tert
+ie5the
+ie6t5ri
+i1ett
+ie5un
+iex5
+2if
+i1fa
+if5ang
+i6fau
+if1fr
+if5lac
+i5f6lie
+i1fre
+ift5a
+if6t5r
+ig3art
+2ige
+i8gess
+ig5he
+i5gla
+ig2ni
+i5go
+ig3rot
+ig3s2p
+i1ha
+i8ham
+i8hans
+i1he
+i1hi
+ih1n
+ih1r
+i1hu
+i8hum
+ih1w
+8i1i
+ii2s
+ii2t
+i1j
+i1k
+i6kak
+i8kerz
+i6kes
+ik4ler
+i6k5unt
+2il
+i5lac
+i1lag
+il3ans
+i5las
+i1lau
+il6auf
+i1le
+ile8h
+i8lel
+il2fl
+il3ipp
+il6l5enn
+i1lo
+ilt8e
+i1lu
+i1l[adiaeresis]
+i8mart
+imb2
+i8mele
+i8mid
+imme6l5a
+i1mu
+i1m[adiaeresis]
+i5m[odiaeresis]
+ina5he
+i1nat
+in1au
+inau8s
+8ind.
+in4d3an
+5index
+ind2r
+3indus
+i5nec
+i2n1ei
+i8nerw
+3infek
+1info
+5ingeni
+ing5s6o
+5inhab
+ini5er.
+5inj
+in8k[adiaeresis]t
+in8nan
+i1no
+inoi8d
+in3o4ku
+in5sau
+in1sp
+5inspe
+5instit
+5instru
+ins4ze
+5intere
+5interv
+in3the
+in5t2r
+i5ny
+in[adiaeresis]2
+i1n[adiaeresis]r
+in1[adiaeresis]s
+in[odiaeresis]8
+in5[odiaeresis]d
+i1n[odiaeresis]s
+2io
+io1a8
+io1c
+iode4
+io2di
+ioi8
+i1ol.
+i1om.
+i1on.
+i5onb
+ion2s1
+i1ont
+i5ops
+i5o8pt
+i1or.
+i3oral
+io3rat
+i5orc
+i1os.
+i1ot.
+i1o8x
+2ip
+i1pa
+i1pi
+i1p2l
+i1pr
+i1q
+i1ra
+ir6bl
+i1re
+i1ri
+ir8me8d
+ir2m1o2
+ir8nak
+i1ro
+ir5rho
+ir6schl
+ir6sch5r
+i5rus
+i5ry
+i5r[adiaeresis]
+i1sa
+i8samt
+i6sar
+i2s1au
+i8scheh
+i8schei
+isch5m
+isch3r
+isch[adiaeresis]8
+is8ele
+ise3ra
+i4s3erh
+is3err
+isi6de
+i8sind
+is4kop
+ison5e
+is6por
+i8s5tum
+i5sty
+i5s[odiaeresis]
+i1ta
+it5ab.
+i2t1a2m
+i8tax
+i1te
+i8tersc
+i1thi
+i1tho
+i5thr
+it8h[adiaeresis]
+i1ti
+i8ti8d
+iti6kl
+itmen4
+i1to
+i8tof
+it3ran
+it3rau
+i1tri
+itri5o
+it1sc
+it2se
+it5spa
+it8tru
+i1tu
+it6z5erg
+it6z1w
+i1t[adiaeresis]
+it[adiaeresis]6r5e
+it[adiaeresis]t2
+it[adiaeresis]ts5
+i1t[udiaeresis]
+i1u
+iu6r
+2i1v
+i6vad
+iva8tin
+i8vei
+i6v5ene
+i8verh
+i2vob
+i8vur
+i1w
+iwi2
+i5xa
+i1xe
+i1z
+ize8n
+i8zir
+i6z5w
+i[adiaeresis]8m
+i1[adiaeresis]6r
+i5[adiaeresis]t.
+i5[adiaeresis]v
+i1[odiaeresis]8
+i[udiaeresis]8
+i6[ssharp]5ers
+ja5la
+je2t3r
+6jm
+5jo
+jo5as
+jo1ra
+jou6l
+ju5cha
+jugen4
+jugend5
+jung5s6
+ju1s
+3j[adiaeresis]
+1ka
+8kachs
+8kakz
+ka1la
+kal5d
+kam5t
+ka1na
+2kanl
+8kapf
+ka6pl
+ka5r6a
+6k3arbe
+ka1ro
+kar6p5f
+4k3arti
+8karz
+ka1r[adiaeresis]
+kasi5e
+ka6teb
+kat8ta
+kauf6s
+kau3t2
+2k1b
+2k1c
+4k1d
+kehr6s
+kehrs5a
+8keic
+2k1eig
+6k5ein
+6k5eis
+ke6lar
+ke8leis
+ke8lo
+8kemp
+k5ente.
+k3entf
+8k5ents
+6kentz
+ke1ra
+k5erlau
+2k1f8
+2k1g
+2k1h
+ki5fl
+8kik
+king6s5
+6kinh
+ki5os
+ki5sp
+ki5th
+8ki8[odiaeresis]
+2k1k2
+kl8
+1kla
+8klac
+k5lager
+kle4br
+k3leib
+3kleid
+kle5isc
+4k3leit
+k3lek
+6k5ler.
+5klet
+2klic
+8klig
+k2lim
+k2lin
+5klip
+5klop
+k3lor
+1kl[adiaeresis]
+2k1m
+kmani5e
+kn8
+6kner
+k2ni
+kn[adiaeresis]8
+1k2o
+ko1a2
+ko6de.
+ko1i
+koi8t
+ko6min
+ko1op
+ko1or
+ko6pht
+ko3ra
+kor6d5er
+ko5ru
+ko5t6sc
+k3ou
+3kow
+6k5ox
+2k1p2
+k1q
+1kr8
+4k3rad
+2k1rec
+4k3reic
+kre5ie
+2krib
+6krig
+2krip
+6kroba
+2ks
+k1sa
+k6sab
+ksal8s
+k8samt
+k6san
+k1sc
+k2s1ex
+k5spat
+k5spe
+k8spil
+ks6por
+k1spr
+kst8
+k2s1uf
+2k1t
+kta8l
+kt5a6re
+k8tein
+kte8re
+k2t1h
+k8tinf
+kt3rec
+kt1s
+1ku
+ku1ch
+kuck8
+k3uhr
+ku5ie
+kum2s1
+kunfts5
+kun2s
+kunst3
+ku8rau
+ku4ro
+kurz1
+ku1st
+4kusti
+ku1ta
+ku8[ssharp]
+6k1v
+2k1w
+ky5n
+2k1z
+1k[adiaeresis]
+k[adiaeresis]4m
+4k3[adiaeresis]mi
+k[adiaeresis]se5
+1k[odiaeresis]
+k[odiaeresis]1c
+k[odiaeresis]1s
+1k[udiaeresis]
+k[udiaeresis]1c
+k[udiaeresis]r6sc
+k[udiaeresis]1s
+1la.
+8labf
+8labh
+lab2r
+2l1abs
+lach3r
+la8dr
+5ladu
+8ladv
+6laff
+laf5t
+la2gn
+5laken
+8lamb
+la6mer
+5lampe.
+2l1amt
+la1na
+1land
+lan4d3a
+lan4d3r
+lan4gr
+8lanme
+6lann
+8lanw
+6lan[adiaeresis]
+8lappa
+lap8pl
+lap6pr
+l8ar.
+la5ra
+lar4af
+la8rag
+la8ran
+la6r5a6s
+l3arbe
+la8rei
+6larm.
+la8sa
+la1sc
+la8sta
+lat8i
+6l5atm
+4lauss
+4lauto
+1law
+2lb
+l8bab
+l8bauf
+l8bede
+l4b3ins
+l5blo
+lbst5an
+lbst3e
+8lc
+l1che
+l8chert
+l1chi
+lch3m
+l5cho
+lch5w
+6ld
+l4d3ei
+ld1re
+l6d[udiaeresis]b
+le2bl
+le8bre
+lecht6s5
+led2r
+6leff
+le4gas
+1lehr
+lei6br
+le8inf
+8leinn
+5leistu
+4lektr
+le6l5ers
+lemo2
+8lemp
+l8en.
+8lends
+6lendun
+le8nend
+len8erw
+6l5ents
+4l3entw
+4lentz
+8lenzy
+8leoz
+6lepi
+le6pip
+8lepo
+1ler
+l6er.
+8lerbs
+6l5erde
+le8reis
+le8rend
+le4r3er
+4l3erg
+l8ergr
+6lerkl
+6l5erzie
+8ler[odiaeresis]
+8lesel
+lesi5e
+le3sko
+le3tha
+let1s
+5leuc
+4leuro
+leu4s3t
+le5xe
+6lexp
+l1f
+2l1g
+lgend8
+l8gh
+lglie3
+lglied6
+6l1h
+1li
+li1ar
+li1as
+2lick
+li8dr
+li1en
+lien6n
+li8ers
+li8ert
+2lie[ssharp]
+3lig
+li8ga8b
+li1g6n
+li1l8a
+8limb
+li1na
+4l3indu
+lings5
+4l3inh
+6linj
+link4s3
+4linkt
+2lint
+8linv
+lion5s6t
+4lipp
+5lipt
+4lisam
+livi5e
+6l1j
+6l1k
+l8keim
+l8kj
+lk2l
+lko8f
+lkor8
+lk2sa
+lk2se
+6ll
+l1la
+ll3a4be
+l8labt
+ll8anl
+ll1b
+ll1c
+ll1d6
+l1le
+l4l3eim
+l6l5eise
+ller3a
+l4leti
+l5lip
+l1lo
+ll3ort
+ll5ov
+ll6spr
+llte8
+l1lu
+ll3urg
+l1l[adiaeresis]
+l5l[udiaeresis]
+l6l[udiaeresis]b
+2l1m
+l6m5o6d
+6ln
+l1na
+l1no
+8lobl
+lo6br
+3loch.
+l5o4fen
+5loge.
+5lohn
+4l3ohr
+1lok
+l2on
+4l3o4per
+lo1ra
+2l1ord
+6lorg
+4lort
+lo1ru
+1los.
+lo8sei
+3losig
+lo6ve
+lowi5
+6l1p
+lp2f
+l8pho
+l8pn
+lp4s3te
+l2pt
+l1q
+8l1r
+2ls
+l1sa
+l6sarm
+l1sc
+l8sec
+l6s5erg
+l4s3ers
+l8sh
+l5s6la
+l1sp
+ls4por
+ls2pu
+l1str
+l8suni
+l1s[udiaeresis]
+2l1t
+lt5amp
+l4t3ein
+l5ten
+l6t5eng
+l6t5erp
+l4t3hei
+lt3her
+l2t1ho
+l6t5i6b
+lti1l
+l8tr[odiaeresis]
+lt1sc
+lt6ser
+lt4s3o
+lt5ums
+lu8br
+lu2dr
+lu1en8
+8lu8fe
+luft3a
+luf8tr
+lu6g5r
+2luh
+l1uhr
+lu5it
+5luk
+2l1umf
+2l1umw
+1lun
+6l5u6nio
+4l3unte
+lu5ol
+4lurg
+6lurs
+l3urt
+lu4sto
+lu3str
+lu6st5re
+lu8su
+lu6tal
+lu6t5e6g
+lu8terg
+lu3the
+lu6t5or
+lu2t1r
+lu6[ssharp]5
+l1v
+lve5r6u
+2l1w
+1ly
+lya6
+6lymp
+ly1no
+l8zess
+l8zo8f
+l3zwei
+lz5wu
+3l[adiaeresis]nd
+l[adiaeresis]5on
+l[adiaeresis]6sc
+l[adiaeresis]t1s
+5l[adiaeresis]uf
+2l[adiaeresis]ug
+l[adiaeresis]u6s5c
+l[adiaeresis]5v
+l1[odiaeresis]l
+1l[odiaeresis]s
+l[odiaeresis]1[ssharp]6t
+6l1[udiaeresis]be
+1ma
+8mabg
+ma5chan
+mad2
+ma5el
+4magg
+mag8n
+ma1la
+ma8lau
+mal5d
+8malde
+mali5e
+malu8
+ma8lut
+2m1amp
+3man
+mand2
+man3ds
+8mangr
+mani5o
+8m5anst
+6mappa
+4m3arbe
+mar8kr
+ma1r4o
+mar8schm
+3mas
+ma1sc
+ma1t[odiaeresis]
+4m5auf
+ma5yo
+2m1b
+mb6r
+2m1c
+2m1d
+md6s[adiaeresis]
+1me
+me1ch
+me5isc
+5meld
+mel8sa
+8memp
+me5nal
+men4dr
+men8schl
+men8schw
+8mentsp
+me1ra
+mer4gl
+me1ro
+3mes
+me6s5ei
+me1th
+me8[ssharp]
+2m1f6
+2m1g
+2m1h
+1mi
+mi1a
+mi6ale
+mi1la
+2m1imm
+mi1na
+mi5n[udiaeresis]
+mi4s3an
+mit1h
+mi5t6ra
+3mitt
+mitta8
+mi6[ssharp]5
+6mj
+2m1k8
+2m1l
+2m1m
+m6mad
+m6m5ak
+m8menth
+m8mentw
+mme6ra
+m2mn
+mm5sp
+mm5ums
+mmut5s
+m8m[adiaeresis]n
+m1n8
+m5ni
+1mo
+mo5ar
+mo4dr
+8mof
+mo8gal
+mo4kla
+mol5d
+m2on
+mon8do
+mo4n3od
+mont8a
+6m5ony
+mopa6
+mo1ra
+mor8d5a
+mo1sc
+mo1sp
+5mot
+moy5
+2mp
+m1pa
+mpfa6
+mpf3l
+mphe6
+m1pi
+mpin6
+m1pl
+mp2li
+m2plu
+mpo8ste
+m1pr
+mpr[adiaeresis]5
+mp8th
+mput6
+mpu5ts
+m1p[odiaeresis]
+8m1q
+2m1r
+2ms
+ms5au
+m1sc
+msch4l
+ms6po
+m3spri
+m1str
+2m1t
+mt1ar
+m8tein
+m2t1h
+mt6se
+mt8s[adiaeresis]
+mu5e
+6m5uh
+mumi1
+1mun
+mun6dr
+muse5e
+mu1ta
+2m1v
+mvol2
+mvoll3
+2m1w
+1my
+2m1z
+m[adiaeresis]6kl
+1m[adiaeresis]n
+m[adiaeresis]1s
+m[adiaeresis]5tr
+m[adiaeresis]u4s3c
+3m[adiaeresis][ssharp]
+m[odiaeresis]b2
+6m[odiaeresis]l
+1m[udiaeresis]
+5m[udiaeresis]n
+3m[udiaeresis]t
+1na.
+n5ab.
+8nabn
+n1abs
+n1abz
+na6b[adiaeresis]
+na2c
+nach3e
+3nacht
+1nae
+na5el
+n1afr
+1nag
+1n2ah
+na8ha
+na8ho
+1nai
+6nair
+na4kol
+n1akt
+nal1a
+8naly
+1nama
+na4mer
+na1mn
+n1amp
+8n1amt
+5nanc
+nan6ce
+n1and
+n6and.
+2n1ang
+1nani
+1nann
+n1ans
+8nanw
+5napf.
+1n2ar.
+na2ra
+2n1arc
+n8ard
+1nari
+n8ark
+6n1arm
+5n6ars
+2n1art
+n8arv
+6natm
+nat6s5e
+1naue
+4nauf
+n3aug
+5naui
+n5auk
+na5um
+6nausb
+6nauto
+1nav
+2nax
+3naz
+1na[ssharp]
+n1b2
+nbau5s
+n1c
+nche5e
+nch5m
+2n1d
+nda8d
+n2d1ak
+nd5ans
+n2d1ei
+nde8lac
+ndel6sa
+n8derhi
+nde4se
+nde8stal
+n2dj
+ndnis5
+n6d5or6t
+nd3rec
+nd3rot
+nd8samt
+nd6sau
+ndt1h
+n8dumd
+1ne
+ne5as
+ne2bl
+6n5ebn
+2nec
+5neei
+ne5en
+ne1g4l
+2negy
+4n1ein
+8neis
+4n3e4lem
+8nemb
+2n1emp
+nen1a
+6n5energ
+nen3k
+8nentb
+4n3en3th
+8nentl
+8n5entn
+8n5ents
+ne1ra
+ne5r8al
+ne8ras
+8nerbi
+6n5erde.
+nere5i6d
+nerfor6
+6n5erh[odiaeresis]
+8nerl[odiaeresis]
+2n1err
+n8ers.
+6n5ertra
+2n1erz
+nesi3e
+net1h
+neu4ra
+neu5sc
+8neu[ssharp]
+n1f
+nf5f
+nf2l
+nflei8
+nf5lin
+nft8st
+n8g5ac
+ng5d
+ng8en
+nge8ram
+ngg2
+ng1h
+n6glic
+ng3rip
+ng8ru
+ng2se4
+ng2si
+n2g1um
+n1gy
+n8g[adiaeresis]l
+n1h
+nhe6r5e
+1ni
+ni1bl
+ni5ch[adiaeresis]
+ni8dee
+n6ie
+ni1en
+nie6s5te
+niet5h
+ni8etn
+4n3i6gel
+n6ik
+ni1la
+2n1imp
+ni5na
+2n1ind
+8ninf
+6n5inh
+ni8nit
+6n5inn
+2n1ins
+4n1int
+n6is
+ni3str
+ni1th
+ni1tr
+n1j
+n6ji
+n8kad
+nk5ans
+n1ke
+n8kerla
+n1ki
+nk5inh
+n5kl[odiaeresis]
+n1k2n
+n8k5not
+nk3rot
+n8kr[udiaeresis]
+nk5spo
+nk6t5r
+n8kuh
+n6k[udiaeresis]b
+n5l6
+nli4mi
+n1m
+nmen4s
+n1na
+n8nerg
+nni5o
+n1no
+nn4t3ak
+nnt1h
+nnu1e
+n1ny
+n1n[adiaeresis]
+n1n[odiaeresis]
+n1n[udiaeresis]
+no5a
+no4b3la
+4n3obs
+2nobt
+noche8
+no6die
+no4dis
+no8ia
+no5isc
+6n5o6leu
+no4mal
+noni6er
+2n1onk
+n1ony
+4n3o4per
+6nopf
+6nopti
+no3ra
+no4ram
+nor6da
+4n1org
+2n1ort
+n6os
+no1st
+8nost.
+no8tan
+no8ter
+noty6pe
+6n5ox
+n1p2
+n1q
+n1r
+nr[odiaeresis]s3
+6ns
+n1sac
+ns3ang
+n1sc
+n8self
+n8s5erf
+n8serg
+n6serk
+ns5erw
+n8sint
+n1s2pe
+n1spr
+n6s5tat.
+n5s6te.
+n6stob
+n1str
+n1ta
+n4t3a4go
+nt5anh
+nt3ark
+nt3art
+n1te
+nt3eis
+nte5n6ar
+nte8nei
+nter3a
+nte6rei
+nt1ha
+nt6har
+n3ther
+nt5hie
+n3thus
+n1ti
+nti1c
+n8tinh
+nti1t
+ntlo6b
+ntmen8
+n1to
+nt3o4ti
+n1tr
+ntra5f
+ntra5ut
+nt8rea
+nt3rec
+nt8rep
+n4t3rin
+nt8rop
+n4t3rot
+n4tr[udiaeresis]
+nt1s
+nts6an
+nt2sk
+n1tu
+nt1z
+n1t[adiaeresis]
+n1t[odiaeresis]
+n8t[odiaeresis]l
+n1t[udiaeresis]
+1nu
+nu1a
+nu5el
+nu5en
+4n1uhr
+nu5ie
+8numl
+6n5ums
+6n5umw
+2n1und
+6nuni
+6n5unr
+2n1unt
+2nup
+2nu6r
+n5uri
+nu3skr
+nu5ta
+n1v
+8n1w
+1nys
+n1za
+n6zab
+n2z1ar
+n6zaus
+nzi4ga
+n8zof
+n6z5unt
+n1zw
+n6zwir
+1n[adiaeresis]c
+5n[adiaeresis]e
+5n[adiaeresis]i
+n8[adiaeresis]l
+n[adiaeresis]6m
+n[adiaeresis]6re
+n5[adiaeresis]rz
+5n[adiaeresis]us
+n1[odiaeresis]l
+1n[odiaeresis]t
+n5[odiaeresis]z
+5n[udiaeresis].
+6n1[udiaeresis]2b
+5n[udiaeresis][ssharp]
+o5ab.
+oa2l
+o8ala
+o1a2m
+o1an
+ob1ac
+obe4ra
+o6berh
+5o4bers
+o4beru
+obe6ser
+1obj
+o1bl
+o2bli
+ob5sk
+3obst.
+ob8sta
+obst5re
+ob5sz
+o1che
+oche8b
+o8chec
+o3chi
+och1l
+och3m
+ocho8f
+o3chro
+och3to
+o3chu
+och1w
+o1d
+o2d1ag
+od2dr
+ode5i
+ode6n5e
+od1tr
+o5e6b
+o5e6der.
+oe8du
+o1ef
+o1e2l
+o1e2p
+o1er.
+o5e8x
+o1fa
+of8fan
+1offi
+of8fin
+of6f5la
+o5fla
+o1fr
+8o1g
+og2n
+o1ha
+o1he
+o6h5eis
+o1hi
+ohl1a
+oh1le
+oh4l3er
+5ohm.
+oh2ni
+o1ho
+oh1re
+oh1ru
+o1hu
+oh1w
+o1hy
+o1h[adiaeresis]
+o5ia
+o1id.
+o8idi
+oi8dr
+o5ids
+o5isch.
+oiset6
+o1ism
+o3ist.
+o5i6tu
+o1j
+o1k
+ok2l
+ok3lau
+o8kl[adiaeresis]
+1okta
+o1la
+old5am
+old5r
+o1le
+ole5in
+ole1r
+ole3u
+ol6gl
+ol2kl
+olk4s1
+ol8lak
+ol8lauf.
+ol6lel
+ol8less
+o1lo
+ol1s
+ol6sk
+o1lu
+oly1e2
+5olym
+o2mab
+om6an
+o8mau
+ombe4
+o8merz
+om5sp
+o1mu
+o8munt
+o1m[adiaeresis]
+o1m[odiaeresis]
+o1na
+ona8m
+on1ax
+on8ent
+o6n5erb
+8oni
+oni5er.
+on1k
+on6n5a6b
+o1no
+ono1c
+o4nokt
+1ons
+onts8
+o1n[adiaeresis]
+oo8f
+1oog
+oo2pe
+oo2sa
+o1pa
+3o4pera
+o3pfli
+opf3lo
+opf3r
+o1pi
+o1pl
+o2pli
+o5p6n
+op8pa
+op6pl
+o1pr
+o3p4ter
+1opti
+o1p[adiaeresis]
+o5p[odiaeresis]
+o1q
+o1ra.
+o3rad
+o8radd
+1oram
+o6rang
+o5ras
+o8rauf
+or5cha
+or4d3a4m
+or8dei
+or8deu
+1ordn
+or4dos
+o1re
+o5re.
+ore2h
+o8r5ein
+ore5isc
+or6enn
+or8fla
+or8fli
+1orga
+5orgel.
+or2gl
+o1ri
+5o6rient
+or8nan
+or8n[adiaeresis]
+o1ro
+or1r2h
+or6t5an
+or8tau
+or8tere
+o1rus
+o1ry
+o1r[adiaeresis]
+or1[udiaeresis]2
+o1sa
+osa3i
+6ose
+o8serk
+o1sk
+o6ske
+o6ski
+os2kl
+os2ko
+os2kr
+osni5e
+o2s1o2d
+o3s4per
+o4stam
+o6stau
+o3stra
+ost3re
+osu6
+o6s5ur
+o5s6ze
+o1ta
+ot3auf
+o6taus
+o1te
+o6terw
+o1th
+othe5u
+o2th1r
+o1ti
+o1to
+oto1a
+ot1re
+o1tri
+o1tro
+ot1sc
+o3tsu
+ot6t5erg
+ot2t3h
+ot2t5r
+ot8t[odiaeresis]
+o1tu
+ou3e
+ouf1
+ou5f6l
+o5u6gr
+ou5ie
+ou6rar
+ou1t6a
+o1v
+o1wa
+o1we
+o6wer.
+o1wi
+owid6
+o1wo
+o5wu
+o1xe
+oy5al.
+oy1e
+oy1i
+o5yo
+o1z
+oza2r
+1o2zea
+ozo3is
+o[odiaeresis]8
+o[ssharp]5elt
+o[ssharp]1t
+3paa
+pa6ce
+5pad
+pag2
+1pak
+pa1la
+pa8na8t
+pani5el
+pa4nor
+pan1s2
+1pap
+pap8s
+pa8rei
+par8kr
+paro8n
+par5o6ti
+part8e
+5partei
+3partn
+pas6sep
+pa4tha
+1pau
+6paug
+pau3sc
+p1b
+8p5c
+4p1d
+1pe
+4peic
+pe5isc
+2pek
+pen3k
+pen8to8
+p8er
+pe1ra
+pere6
+per5ea
+per5eb
+pe4rem
+2perr
+per8ran
+3pers
+4persi
+pe3r[udiaeresis]
+pe4sta
+pet2s
+p2f1ec
+p4fei
+pf1f
+pf2l
+5pflanz
+pf8leg
+pf3lei
+2pft
+pf3ta
+p1g
+1ph
+2ph.
+2p1haf
+6phb
+8phd
+6p5heit
+ph5eme
+6phg
+phi6e
+8phk
+6phn
+p5holl
+pht2
+ph3tha
+4ph3the
+phu6
+6phz
+pi1en
+pi5err
+pi1la
+pi1na
+5pinse
+pioni8e
+1pis
+pi1s2k
+pi1th
+p1k
+pl8
+5pla
+p2lau
+4plei
+p3lein
+2pler
+6p5les
+2plig
+p6lik
+6p5ling
+p2liz
+plo8min
+6p1m
+p1n
+1p2o
+8poh
+5pol
+po8lan
+poly1
+po3ny
+po1ra
+2porn
+por4t3h
+po5r[odiaeresis]
+5poti
+p1pa
+p6p5ei
+ppe6la
+pp5f
+p2p1h
+p1pi
+pp1l
+ppp6
+pp5ren
+pp1s
+p5p[odiaeresis]
+pr6
+3preis
+1pres
+2p3rig
+5prinz
+1prob
+1prod
+5prog
+pro8pt
+pro6t5a
+prote5i
+8pro[ssharp]
+pr[adiaeresis]3l
+1pr[adiaeresis]s
+pr[adiaeresis]te4
+1pr[udiaeresis]f
+p5schl
+2pst
+1p2sy
+p1t
+p8to8d
+pt1s
+5p6ty
+1pu
+pu1b2
+2puc
+pu2dr
+puf8fr
+6p5uh
+pun8s
+pu8rei
+pu5s6h
+pu1ta
+p1v
+p3w
+5py
+py5l
+p1z
+p[adiaeresis]6der
+p5[adiaeresis]6m
+p[adiaeresis]8nu
+8p[adiaeresis]r
+p[adiaeresis]t5h
+p[adiaeresis]t1s
+qu6
+1qui
+8rabk
+ra6bla
+3rable
+ra2br
+r1abt
+6rabz
+ra4dan
+ra2dr
+5rafal
+ra4f3er
+ra5gla
+ra2g3n
+6raha
+ral5am
+5rald
+4ralg
+ra8lins
+2rall
+ral5t
+8ramei
+r3anal
+r6and
+ran8der
+ran4dr
+8ranf
+6ranga
+5rangi
+ran8gli
+r3angr
+rans5pa
+8ranw
+r8anz.
+ra5or
+6rapf
+ra5pl
+rap6s5er
+2r1arb
+1rarh
+r1arm
+ra5ro
+2r1art
+6r1arz
+ra8tei
+ra6t5he
+6ratl
+ra4t3ro
+r5atta
+raue4n
+6raus.
+r5austa
+rau8tel
+raut5s
+ray1
+r1b
+rb5lass
+r6bler
+rb4lie
+rbon6n
+r8brecht
+rb6s5t[adiaeresis]
+r8ces
+r1che
+rch1l
+rch3m
+rch3re
+rch3tr
+rch1w
+8rd
+r1da
+r8dachs
+r8dap
+rda5ro
+rde5ins
+rdio5
+r8dir
+rd3ost
+r1dr
+r8drau
+1re.
+re1ak
+3reakt
+re3als
+re6am.
+re1as
+4reben
+re6bl
+rech5a
+r8edi
+re3er
+8reff
+3refl
+2reh
+5reha
+r4ei.
+reich6s5
+8reier
+6reign
+re5imp
+4r3eina
+6r3einb
+6reing
+6r5einn
+6reinr
+4r3eins
+r3eint
+reli3e
+8r5elt
+6rempf
+2remt
+ren5a6b
+ren8gl
+r3enni
+1reno
+5rente
+4r3enth
+8rentl
+4r3entw
+8rentz
+ren4zw
+re1on
+requi5
+1rer
+rer4bl
+6rerbs
+4r3erd
+8rerh[odiaeresis]
+8rerkl
+4r3erla
+8rerl[odiaeresis]
+4r3erns
+6r5ern[adiaeresis]
+rer5o
+6r5erreg
+r5ertr
+r5erwec
+r5er[odiaeresis]
+re2sa
+re8schm
+2ress
+re5u8ni
+6rewo
+2r1ex
+r1f
+r8ferd
+rf4lie
+8r1g
+r8gah
+rge4bl
+rge5na
+rgest4
+rg6ne
+r2gni2
+r8gob
+r4g3ret
+rg8sel
+r1h8
+r2hy
+5rhyt
+ri1ar
+ri5cha
+rid2g
+r2ie
+rieg4s5
+ri8ei
+ri1el
+ri6ele
+ri1en
+ri3er.
+ri5ers.
+ri6fan
+ri8fer
+ri8fr
+1r2ig
+ri8kn
+ri5la
+rim[adiaeresis]8
+ri1na
+r8inde
+rin4ga
+rin6gr
+1rinn
+6rinner
+rino1
+r8insp
+4rinst
+ri1n[adiaeresis]
+ri5o6ch
+ri1o2d
+ri3o6st
+2r1ir
+r2is
+ri3sko
+ri8spr
+ri8st[udiaeresis]
+ri5sv
+r2it
+6r5i6tal
+ri5tr
+ri6ve.
+8r1j
+6rk
+r1ke
+rkehrs5
+r1ki
+r3klin
+r1k2n
+rk3str
+rk4t3an
+rk6to
+r6kuh
+rk[adiaeresis]4s3t
+r1l
+r5li
+rline5a
+6r1m
+r6manl
+rma4p
+r4m3aph
+r8minf
+r8mob
+rm5sa
+2rn
+r1na
+rna8be
+r5ne
+rn2ei
+r6neif
+r6nex
+r6nh
+rn1k
+r1no
+r6n5oc
+rn1sp
+r1n[adiaeresis]
+r1n[udiaeresis]
+ro6bern
+6robs
+ro1ch
+3rock.
+ro5de
+ro1e
+4rofe
+ro8hert
+1rohr
+ro5id
+ro1in
+ro5isc
+6rolym
+r2on
+6roog
+ro6phan
+r3ort
+ro1s2p
+ro5s6w
+ro4tau
+ro1tr
+ro6ts
+5rout
+r1p
+rpe8re
+rp2f
+r2ps
+r2pt
+r1q
+2rr
+r1ra
+r1re
+rrer6
+rr6hos
+r5rh[odiaeresis]
+r1ri
+r1ro
+rro8f
+rr8or
+rror5a
+r1ru
+r3ry
+r1r[adiaeresis]
+r1r[odiaeresis]
+r1r[udiaeresis]
+2r1s
+r6sab
+r4sanf
+rse6e
+rse5na
+r2sh
+r6ska
+r6ski
+rs2kl
+r8sko
+r2sl
+rs2p
+r6stauf
+r8sterw
+r8stran
+rswi3d4
+r2sz
+2r1t
+rt3art
+r8taut
+r5tei
+rt5eige
+r8tepe
+r4t3erh
+r8terla
+r4t3hei
+r5t6hu
+r4t3int
+rt5reif
+rt1sc
+rt6ser
+rt6s5o
+rt6s5u
+rt5und
+r8turt
+rube6
+ru1en
+1r4uf
+ruf4st
+ru1ie
+2r1umg
+2r1uml
+2rums
+run8der
+run4d5r
+6rundz
+6runf
+8runs
+2r1unt
+2r1ur
+r6us
+ru6sta
+ru3str
+ru6tr
+1ruts
+r1v
+rven1
+rvi2c
+r1w
+r1x
+r1za
+rz5ac
+r6z5al
+r8z1ar
+r8zerd
+r6z5erf
+rz8erh
+rz4t3h
+r8zum
+r[adiaeresis]4ste
+r[adiaeresis]u8sc
+r1[odiaeresis]f
+5r[odiaeresis]hr
+r[odiaeresis]5le
+3r[odiaeresis]ll
+5r[odiaeresis]mis
+r1[odiaeresis]r
+r[odiaeresis]2sc
+3r[udiaeresis]mp
+1sa.
+1saa
+s3a4ben
+sa2bl
+2s1abs
+6s1abt
+6sabw
+3sack.
+6s3a4der
+1saf
+sa1fa
+4s1aff
+sa5fr
+1sag
+1sai
+sa1i2k1
+4s1akt
+1sal
+sa1la
+4s3alpi
+6salter
+salz3a
+1sam
+s5anb
+san2c
+1sand
+s5angeh
+6sanl
+2s1ans
+6s3antr
+8s1anw
+s1ap
+s6aph
+8sapo
+sap5p6
+s8ar.
+2s1arb
+3sarg
+s1arm
+sa5ro
+2s1art
+6s1arz
+1sas
+1sat
+sat8a
+2s1atl
+sa8tom
+3s8aue
+s5auff
+sau5i
+s6aur
+2s1aus
+5s6ause
+2s1b2
+2sca
+s4ce
+8sch.
+3scha.
+5schade
+3schaf
+3schal
+sch5ame
+8schanc
+8schb
+1sche
+6schef
+8schex
+2schf
+2schg
+2schh
+1schi
+2schk
+5schlag
+5schlu
+6schm[adiaeresis][ssharp]
+6schna[ssharp]
+1scho
+6schord
+6schp
+3schri
+8schric
+8schrig
+8schrou
+6schs
+2scht
+sch3ta
+sch3tr
+1schu
+8schunt
+6schv
+2schz
+5sch[odiaeresis]
+5sch[udiaeresis]
+2sco
+scre6
+6scu
+2s1d
+1se
+se5an
+se1ap
+se6ben
+se5ec
+see5i6g
+se3erl
+8seff
+se6han
+se8hi
+se8h[odiaeresis]
+6s5eid.
+2s1eig
+s8eil
+5sein.
+sei5n6e
+6s5einh
+3s8eit
+3sel.
+se4lar
+selb4
+6s3e4lem
+se8lerl
+2s1emp
+sen3ac
+se5nec
+6s5ents
+4sentz
+s8er.
+se8reim
+ser5inn
+8serm[adiaeresis]
+8s5erzi
+6ser[odiaeresis]f
+se1um
+8sexa
+6sexp
+2s1f2
+sfal8ler
+2s3g2
+sge5b2
+s1h
+s8hew
+5s6hip
+5s4hop
+1si
+2siat
+si1b
+sicht6s
+6s5i6dee
+siege6s5
+si1en
+si5err
+si1f2
+si1g2n
+si6g5r
+si8kau
+sik1i
+si4kin
+si2kl
+si8k[udiaeresis]
+si1la
+sil6br
+si1na
+2s1inf
+sin5gh
+2s1inh
+sinne6s5
+2s1ins
+si5ru
+si5str
+4s1j
+s1k2
+6sk.
+2skau
+skel6c
+skelch5
+s6kele
+1s2ki.
+3s4kin.
+s6kiz
+s8kj
+6skn
+2skow
+3skrib
+3skrip
+2sku
+8sk[udiaeresis]
+s1l
+s8lal
+slei3t
+s4low
+2s1m
+s1n
+6sna
+6snot
+1so
+so1ch
+2s1odo
+so4dor
+6s5o4fen
+solo3
+s2on
+so5of
+4sope
+so1ra
+2s1ord
+4sorga
+sou5c
+so3un
+4s3ox
+sp2
+8spaa
+5spal
+1span
+2spap
+s2pec
+s4peis
+1spek
+s6perg
+4spers
+s6pes
+2s1pf
+8sphi
+1s2ph[adiaeresis]
+1spi
+spi4e
+6s5pig
+6spinse
+2spis
+2spla
+2spol
+5s6pom
+6s5pos
+6spoti
+1spra
+3s8prec
+6spreis
+5spring
+6sprob
+1spru
+s2pul
+1s2pur
+6spy
+5sp[adiaeresis]n
+1sp[udiaeresis]
+s1q
+2s1r
+2s1s2
+sse8nu
+ssini6s
+ssoi6r
+2st.
+1sta
+4stafe
+2stag
+sta3la
+6stale
+4stalg
+8stalk
+8stamt
+6st5anf
+4stans
+6stanw
+6starb
+sta4te
+6staus
+2stb
+6stc
+6std
+1ste
+4steil
+3s2tel
+st3elb
+8stemb
+6steppi
+8stese
+8stesse
+6stf
+2stg
+2sth
+st1ha
+st3hei
+s8t1hi
+st1ho
+st5hu
+1sti
+sti4el
+4stigm
+sti3na
+6stind
+4stinf
+sti8r
+2stk
+2stl
+2stm
+1sto
+6stoll.
+4st3ope
+6stopf.
+6stord
+6stp
+5stra.
+4strai
+3s4tral
+6s5traum
+3stra[ssharp]
+3strec
+6s3tref
+8streib
+5streif
+6streno
+6stres
+6strev
+5s6tria
+6strig
+5strik
+8strisi
+3s4troa
+s8troma
+st5rose
+4struf
+3strum
+6str[adiaeresis]g
+2st1s6
+2stt
+1stu
+stu5a
+4stuc
+2stue
+8stun.
+2stv
+2stw
+s2tyl
+6stz
+1st[adiaeresis]
+8st[adiaeresis]g
+1st[odiaeresis]
+1st[udiaeresis]
+8st[udiaeresis]ch
+4st[udiaeresis]r.
+1su
+su2b1
+3suc
+su1e
+su2fe
+su8mar
+6sumfa
+8sumk
+2s1unt
+sup1p2
+6s5u6ran
+6surte
+2s1v
+2s1w
+1sy
+8syl.
+sy5la
+syn1
+sy2na
+syne4
+s1z
+s4zend
+5s6zene.
+8szu
+1s[adiaeresis]
+6s5[adiaeresis]nd
+6s[adiaeresis]ugi
+6s[adiaeresis]u[ssharp]
+5s[odiaeresis]m
+2s1[udiaeresis]2b
+1s[udiaeresis]c
+s[udiaeresis]8di
+1s[udiaeresis]n
+5s[udiaeresis][ssharp]
+taats3
+4tab.
+taba6k
+ta8ban
+tab2l
+ta6bre
+4tabs
+t3absc
+8tabz
+6t3acht
+ta6der
+6tadr
+tad6s
+tad2t
+1tafe4
+1tag
+ta6ga6
+ta8gei
+tage4s
+tag6s5t
+tah8
+tahl3
+tai6ne.
+ta5ir.
+tak8ta
+tal3au
+1tale
+ta8leng
+tal5ert
+6t5a6mer
+6tamp
+tampe6
+2t1amt
+tan5d6a
+tan8dr
+tands5a
+tani5e
+6tanl
+2tanr
+t3ans
+8t5antr
+tanu6
+t5anw
+8tanwa
+tan8zw
+ta8rau
+6tarbe
+1tari
+2tark
+2t1arm
+ta1ro
+2tart
+t3arti
+6tarz
+ta1sc
+ta6sien
+ta8stem
+ta8sto
+t5aufb
+4taufn
+8taus.
+5tause
+8tausf
+6tausg
+t5ausl
+2t1b2
+2t1c
+t6chu
+2t1d
+te2am
+tea4s
+te8ben
+5techn
+4teff
+te4g3re
+te6hau
+2tehe
+te4hel
+2t1ehr
+te5id.
+teig5l
+6teign
+tei8gr
+1teil
+4teinh
+t5einhe
+4teis
+t5eisen
+8teiw
+te8lam
+te4lar
+4telek
+8telem
+te6man
+te6n5ag
+ten8erw
+ten5k
+tens4p
+ten8tro
+4t3entw
+8tentz
+te6pli
+5teppi
+ter5a6b
+te3ral
+ter5au
+8terbar
+t5erbe.
+6terben
+8terbs
+4t3erbt
+t5erde.
+ter5ebe
+ter5ein
+te8rers
+terf4
+8terh[odiaeresis]
+6terkl[adiaeresis]
+ter8nor
+ter6re.
+t8erscha
+t5e6sel
+te8stau
+t3euro
+te1xa
+tex3e
+8texp
+tex6ta
+2t1f2
+2t1g2
+2th.
+th6a
+5tha.
+2thaa
+6t1hab
+6t5haf
+t5hah
+8thak
+3thal.
+6thals
+6t3hand
+2t1hau
+1the.
+3t4hea
+t1heb
+t5heil
+t3heit
+t3helf
+1theo
+5therap
+5therf
+6t5herz
+1thes
+1thet
+5thi.
+2t1hil
+t3him
+8thir
+3this
+t5hj
+2th1l
+2th1m
+th1n
+t5hob
+t5hof
+4tholz
+6thopti
+1thr6
+4ths
+t1hum
+1thy
+4t1h[adiaeresis]
+2t1h[odiaeresis]
+t1h[udiaeresis]
+ti1a2m
+ti1b
+tie6fer
+ti1en
+ti8gerz
+tig3l
+ti8kin
+ti5lat
+1tilg
+t1ind
+tin4k3l
+ti3spa
+ti5str
+5tite
+ti5tr
+ti8vel
+ti8vr
+2t1j
+2t1k2
+2t1l
+tl8a
+2t1m8
+2t1n
+3tobe
+8tobj
+to3cha
+5tocht
+8tock
+tode4
+to8del
+to8du
+to1e
+6t5o6fen
+to1in
+toi6r
+5toll.
+to8mene
+t2ons
+2t1ony
+to4per
+5topf.
+6topt
+to1ra
+to1s
+to6ska
+tos2l
+2toti
+to1tr
+t8ou
+2t1p2
+6t1q
+tr6
+tra5cha
+tra8far
+traf5t
+1trag
+tra6gl
+tra6gr
+t3rahm
+1trai
+t6rans
+tra3sc
+tra6st
+3traue
+t4re.
+2trec
+t3rech
+t8reck
+6t1red
+t8ree
+4t1reg
+3treib
+4treif
+8t3reis
+8trepo
+tre6t5r
+t3rev
+4t3rez
+1trib
+t6rick
+tri6er
+2trig
+t8rink
+tri6o5d
+trizi5
+tro1a
+3troc
+trocke6
+troi8d
+tro8man.
+tro3ny
+5tropf
+6t5rosa
+t5ro[ssharp]
+5trub
+5trup
+trut5
+1tr[adiaeresis]g
+6t1r[odiaeresis]h
+5tr[udiaeresis]b
+tr[udiaeresis]3bu
+t1r[udiaeresis]c
+t1r[udiaeresis]s
+2ts
+ts1ab
+t1sac
+tsa8d
+ts1ak
+t6s5alt
+ts1an
+ts1ar
+ts3auf
+t3schr
+t5sch[adiaeresis]
+tse6e
+tsee5i
+tsein6s
+ts3ent
+ts1er
+t8serf
+t4serk
+t8sh
+5t6sik
+t4s3int
+ts5ort.
+t5s6por
+t6sprei
+t1st
+t6s5tanz
+ts1th
+t6stit
+t4s3tor
+1t2sua
+t2s1uf
+t8sum.
+t2s1u8n
+t2s1ur
+2t1t
+tt5eif
+tte6sa
+tt1ha
+tt8ret
+tt1sc
+tt8ser
+tt5s6z
+1tuc
+tuch5a
+1tu1e
+6tuh
+t5uhr
+tu1i
+tu6it
+1tumh
+6t5umr
+1tums
+8tumt
+6tund
+6tunf
+2t1unt
+tu5ra
+tu6rau
+tu6re.
+tu4r3er
+2t1v
+2t1w
+1ty1
+ty6a
+ty8la
+8tym
+6ty6o
+2tz
+tz5al
+tz1an
+tz1ar
+t8zec
+tzeh6
+tzehn5
+t6z5ei.
+t6zor
+t4z3um
+t6z[adiaeresis]u
+5t[adiaeresis]g
+6t[adiaeresis]h
+t5[adiaeresis]lt
+t8[adiaeresis]n
+t[adiaeresis]re8
+8t[adiaeresis]8st
+6t[adiaeresis]u[ssharp]
+t5[odiaeresis]ffen
+8t[odiaeresis]8k
+1t[odiaeresis]n
+4t[udiaeresis]b
+t6[udiaeresis]5ber.
+5t[udiaeresis]ch
+1t[udiaeresis]r.
+u3al.
+u5alb
+u5alf
+u3alh
+u5alk
+u3alp
+u3an.
+ua5na
+u3and
+u5ans
+u5ar.
+ua6th
+u1au
+ua1y
+u2bab
+ubi5er.
+u6b5rit
+ubs2k
+u5b[odiaeresis]
+u8b[udiaeresis]b
+2uc
+u1che
+u6ch5ec
+u1chi
+uch1l
+uch3m
+uch5n
+uch1r
+uch5to
+ucht5re
+u1chu
+uch1w
+uck1a
+uck5in
+u1d
+ud4a
+u1ei
+u6ela
+uene8
+u6ep
+u1er
+uer1a
+ue8rerl
+uer5o
+u8esc
+u2est
+u8ev
+u1fa
+u2f1ei
+u4f3ent
+u8ferh
+uf1fr
+uf1l
+uf1ra
+uf1re
+uf1r[adiaeresis]
+uf1r[udiaeresis]
+uf1s2p
+uf1st
+uft1s
+u8gabt
+u8gad
+u6gap
+ugeb8
+u8gn
+ugo3s4
+u1ha
+u1he
+u1hi
+uh1le
+u1ho
+uh1re
+u1hu
+uh1w
+u1h[adiaeresis]
+u1h[odiaeresis]
+6ui
+ui5en
+u1ig
+u3ins
+uin8tes
+u5isch.
+u1j
+6uk
+u1ke
+u1ki
+u1kl
+u8klu
+u1k6n
+u5ky
+u1la
+uld8se
+u1le
+ul8lac
+ul6lau
+ul6le6l
+ul6lo
+ulni8
+u1lo
+ulo6i
+ult6a
+ult8e
+u1lu
+ul2vr
+u1l[adiaeresis]
+u1l[odiaeresis]
+3umfan
+5umlau
+umo8f
+um8pho
+u1mu
+umu8s
+u5m[odiaeresis]
+u1n1a
+un2al
+un6at
+unau2
+6und.
+5undein
+un4d3um
+3undzw
+und[udiaeresis]8
+un8d[udiaeresis]b
+une2b
+un1ec
+une2h
+un3eis
+3unfal
+1unf[adiaeresis]
+5ungea
+3ungl[udiaeresis]
+ung2s1
+un8g[adiaeresis]
+1u2nif
+un4it
+un8kro
+unk5s
+u1no
+unpa2
+uns2p
+unvol4
+unvoll5
+u5os.
+u1pa
+u1pi
+u1p2l
+u1pr
+up4s3t
+up2t1a
+u1q
+u1ra
+ur5abs
+ura8d
+ur5ah
+u6rak
+ur3alt
+u6rana
+u6r5ans
+u8rap
+ur5a6ri
+u8ratt
+u1re
+ur3eig
+ur8gri
+u1ri
+ur5ins
+3urlau
+urmen6
+ur8nan
+u1ro
+3ursac
+ur8sau
+ur8sei
+ur4sk
+3urtei
+u1ru
+uru5i6
+uru6r
+u1ry
+ur2za
+ur6z[adiaeresis]
+ur5[adiaeresis]6m
+u5r[odiaeresis]
+u1r[udiaeresis]
+ur[udiaeresis]ck3
+u1sa
+usa4gi
+u2s1ar
+u2s1au
+u8schec
+usch5wi
+u2s1ei
+use8kel
+u8sl
+u4st3a4b
+us3tau
+u3s4ter
+u2s1uf
+u8surn
+ut1ac
+u1tal
+uta8m
+u1tan
+ut1ar
+u1tas
+ut1au
+u1te
+u8teic
+u4tent
+u8terf
+u6terin
+u4t3hei
+ut5ho
+ut1hu
+u1ti
+utine5
+uti6q
+u1to
+uto5c
+u1tr
+ut1sa
+ut1s6p
+ut6stro
+u1tu
+utz5w
+u1u
+u1v
+uve5n
+uve3r4[adiaeresis]
+u1w
+u1xe
+u5ya
+uy5e6
+u1yi
+u2z1eh
+u8zerh
+u5[odiaeresis]
+u[ssharp]e6n
+u[ssharp]en5e
+8vanb
+6vang
+6varb
+var8d
+va6t5a
+va8tei
+va2t1r
+2v1b
+6v5c
+6vd
+1ve
+6ve5g6
+ver1
+ver5b
+verb8l
+ve2re2
+verg8
+ve2ru8
+ve1s
+ve2s3p
+ve3xe
+2v1f
+2v1g
+6v5h
+vi6el
+vie6w5
+vi1g4
+vi8leh
+vil6le.
+8vint
+vi1ru
+vi1tr
+2v1k
+2v1l
+2v1m
+4v5n
+8vo8f
+voi6le
+vol8lend
+vol8li
+v2or1
+vo2re
+vo8rin
+vo2ro
+2v1p
+8vra
+v6re
+2v1s
+2v1t
+2v1v
+4v3w
+2v1z
+waffe8
+wa6g5n
+1wah
+wah8n
+wa5la
+wal8din
+wal6ta
+wan4dr
+5ware
+wa8ru
+war4za
+1was
+w5c
+w1d
+5wech
+we6fl
+1weg
+we8geng
+weg5h
+weg3l
+we2g1r
+weh6r5er
+5weise
+weit3r
+wel2t
+welt3r
+we6rat
+8werc
+5werdu
+wer4fl
+5werk.
+wer4ka
+wer8ku
+wer4ta
+wer8term
+we2sp
+we8stend
+we6steu
+we8str
+we8st[odiaeresis]
+wet8ta
+wich6s5t
+1wid
+wi2dr
+wiede4
+wieder5
+wik6
+wim6ma
+win4d3r
+5wirt
+wisch5l
+1wj
+6wk
+2w1l
+8w1n
+wo1c
+woche6
+wol6f
+wor6t5r
+6ws2
+w1sk
+6w5t
+5wunde.
+wun6gr
+wu1sc
+wu2t1
+6w5w
+wy5a
+w[adiaeresis]rme5
+w[adiaeresis]1sc
+1xag
+x1ak
+x3a4men
+8xamt
+x1an
+8x1b
+x1c
+1xe.
+x3e4g
+1xen
+xe1ro
+x1erz
+1xes
+8xf
+x1g
+8x1h
+1xi
+8xid
+xi8so
+4xiste
+x1k
+6x1l
+x1m
+8xn
+1xo
+8x5o6d
+8x3p2
+x1r
+x1s6
+8x1t
+x6tak
+x8terf
+x2t1h
+1xu
+xu1e
+x5ul
+6x3w
+x1z
+5ya.
+y5an.
+y5ank
+y1b
+y1c
+y6cha
+y4chia
+y1d
+yen6n
+y5ern
+y1g
+y5h
+y5in
+y1j
+y1k2
+y1lak
+yl1al
+yla8m
+y5lax
+y1le
+y1lo
+y5lu
+y8mn
+ym1p2
+y3mu
+y1na
+yno2d
+yn1t
+y1on.
+y1o4p
+y5ou
+ypo1
+y1pr
+y8ps
+y1r
+yri3e
+yr1r2
+y1s
+ys5iat
+ys8ty
+y1t
+y3w
+y1z
+y[adiaeresis]8m
+z5a6b
+zab5l
+8za6d
+1zah
+za5is
+4z3ak
+6z1am
+5zange.
+8zanl
+2z1ara
+6z5as
+z5auf
+3zaun
+2z1b
+6z1c
+6z1d
+1ze
+ze4dik
+4z3eff
+8zein
+zei4ta
+zei8ters
+ze6la
+ze8lec
+zel8th
+4zemp
+6z5engel
+zen8zin
+8zerg[adiaeresis]
+zer8i
+ze1ro
+zers8
+zerta8
+zer8tab
+zer8tag
+8zerz
+ze8ste
+zeu6gr
+2z1ex
+2z1f8
+z1g
+4z1h
+1zi
+zi1en
+zi5es.
+4z3imp
+zi1na
+6z5inf
+6z5inni
+zin6s5er
+8zinsuf
+zist5r
+zi5th
+zi1tr
+6z1j
+2z1k
+2z1l
+2z1m
+6z1n
+1zo
+zo6gl
+4z3oh
+zo1on
+zor6na8
+4z1p
+z5q
+6z1r
+2z1s8
+2z1t
+z4t3end
+z4t3hei
+z8thi
+1zu
+zu3al
+zu1b4
+zu1f2
+6z5uhr
+zun2a
+8zunem
+zunf8
+8zungl
+zu1o
+zup8fi
+zu1s8
+zu1z
+2z1v
+zw8
+z1wal
+5zweck
+zwei3s
+z1wel
+z1wer
+z6werg
+8z5wes
+1zwi
+zwi1s
+6z1wo
+1zy
+2z1z
+zz8a
+zzi1s
+1z[adiaeresis]
+1z[odiaeresis]
+6z[odiaeresis]l.
+z[odiaeresis]1le
+1z[udiaeresis]
+2z1[udiaeresis]2b
+[adiaeresis]1a6
+[adiaeresis]b1l
+[adiaeresis]1che
+[adiaeresis]3chi
+[adiaeresis]ch8sc
+[adiaeresis]ch8sp
+[adiaeresis]5chu
+[adiaeresis]ck5a
+[adiaeresis]d1a
+[adiaeresis]d5era
+[adiaeresis]6d5ia
+[adiaeresis]1e
+[adiaeresis]5fa
+[adiaeresis]f1l
+[adiaeresis]ft6s
+[adiaeresis]g1h
+[adiaeresis]g3le
+[adiaeresis]6g5nan
+[adiaeresis]g5str
+[adiaeresis]1he
+[adiaeresis]1hi
+[adiaeresis]h1le
+[adiaeresis]h5ne
+1[adiaeresis]hnl
+[adiaeresis]h1re
+[adiaeresis]h5ri
+[adiaeresis]h1ru
+[adiaeresis]1hu
+[adiaeresis]h1w
+6[adiaeresis]i
+[adiaeresis]1isc
+[adiaeresis]6ische
+[adiaeresis]5ism
+[adiaeresis]5j
+[adiaeresis]1k
+[adiaeresis]l1c
+[adiaeresis]1le
+[adiaeresis]8lei
+[adiaeresis]l6schl
+[adiaeresis]mi1e
+[adiaeresis]m8n
+[adiaeresis]m8s
+[adiaeresis]5na
+5[adiaeresis]nderu
+[adiaeresis]ne5i8
+[adiaeresis]ng3l
+[adiaeresis]nk5l
+[adiaeresis]1no
+[adiaeresis]n6s5c
+[adiaeresis]1pa
+[adiaeresis]p6s5c
+3[adiaeresis]q
+[adiaeresis]r1c
+[adiaeresis]1re
+[adiaeresis]re8m
+5[adiaeresis]rgern
+[adiaeresis]r6gl
+[adiaeresis]1ri
+3[adiaeresis]rmel
+[adiaeresis]1ro
+[adiaeresis]rt6s5
+[adiaeresis]1ru
+3[adiaeresis]rztl
+[adiaeresis]5r[odiaeresis]
+[adiaeresis]6s5chen
+[adiaeresis]sen8s
+[adiaeresis]s1th
+[adiaeresis]ta8b
+[adiaeresis]1te
+[adiaeresis]teri4
+[adiaeresis]ter5it
+[adiaeresis]6thy
+[adiaeresis]1ti
+3[adiaeresis]tk
+[adiaeresis]1to
+[adiaeresis]t8schl
+[adiaeresis]ts1p
+[adiaeresis]5tu
+[adiaeresis]ub1l
+[adiaeresis]u1e
+1[adiaeresis]ug
+[adiaeresis]u8ga
+[adiaeresis]u5i
+[adiaeresis]1um.
+[adiaeresis]1us.
+1[adiaeresis]u[ssharp]
+[adiaeresis]1z
+[odiaeresis]1b
+[odiaeresis]1che
+[odiaeresis]5chi
+[odiaeresis]ch8stei
+[odiaeresis]ch8str
+[odiaeresis]cht6
+5[odiaeresis]6dem
+5[odiaeresis]ffn
+[odiaeresis]1he
+[odiaeresis]h1l8
+[odiaeresis]h1re
+[odiaeresis]1hu
+[odiaeresis]1is
+[odiaeresis]1ke
+1[odiaeresis]2ko
+1[odiaeresis]l.
+[odiaeresis]l6k5l
+[odiaeresis]l8pl
+[odiaeresis]1mu
+[odiaeresis]5na
+[odiaeresis]nig6s3
+[odiaeresis]1no
+[odiaeresis]5o6t
+[odiaeresis]pf3l
+[odiaeresis]p6s5c
+[odiaeresis]1re
+[odiaeresis]r8gli
+[odiaeresis]1ri
+[odiaeresis]r8tr
+[odiaeresis]1ru
+5[odiaeresis]sterr
+[odiaeresis]1te
+[odiaeresis]5th
+[odiaeresis]1ti
+[odiaeresis]1tu
+[odiaeresis]1v
+[odiaeresis]1w
+[odiaeresis]we8
+[odiaeresis]2z
+[udiaeresis]b6e2
+3[udiaeresis]4ber1
+[udiaeresis]b1l
+[udiaeresis]b1r
+5[udiaeresis]2bu
+[udiaeresis]1che
+[udiaeresis]1chi
+[udiaeresis]8ch3l
+[udiaeresis]ch6s5c
+[udiaeresis]8ck
+[udiaeresis]ck1a
+[udiaeresis]ck5ers
+[udiaeresis]d1a2
+[udiaeresis]6deu
+[udiaeresis]di8t
+[udiaeresis]2d1o4
+[udiaeresis]d5s6
+[udiaeresis]ge4l5a
+[udiaeresis]g1l
+[udiaeresis]h5a
+[udiaeresis]1he
+[udiaeresis]8heh
+[udiaeresis]6h5erk
+[udiaeresis]h1le
+[udiaeresis]h1re
+[udiaeresis]h1ru
+[udiaeresis]1hu
+[udiaeresis]h1w
+[udiaeresis]3k
+[udiaeresis]1le
+[udiaeresis]l4l5a
+[udiaeresis]l8lo
+[udiaeresis]l4ps
+[udiaeresis]l6s5c
+[udiaeresis]1lu
+[udiaeresis]n8da
+[udiaeresis]n8fei
+[udiaeresis]nk5l
+[udiaeresis]n8za
+[udiaeresis]n6zw
+[udiaeresis]5pi
+[udiaeresis]1re
+[udiaeresis]8rei
+[udiaeresis]r8fl
+[udiaeresis]r8fr
+[udiaeresis]r8geng
+[udiaeresis]1ri
+[udiaeresis]1ro
+[udiaeresis]r8sta
+[udiaeresis]r8ster
+[udiaeresis]1ru
+[udiaeresis]se8n
+[udiaeresis]8sta
+[udiaeresis]8stes
+[udiaeresis]6s5tete
+[udiaeresis]3ta
+[udiaeresis]1te
+[udiaeresis]1ti
+[udiaeresis]t8tr
+[udiaeresis]1tu
+[udiaeresis]t8zei
+[udiaeresis]1v
+[ssharp]1a8
+5[ssharp]a.
+[ssharp]8as
+[ssharp]1b8
+[ssharp]1c
+[ssharp]1d
+1[ssharp]e
+[ssharp]5ec
+8[ssharp]e8g
+8[ssharp]e8h
+2[ssharp]1ei
+8[ssharp]em
+[ssharp]1f8
+[ssharp]1g
+[ssharp]1h
+1[ssharp]i
+[ssharp]1k
+[ssharp]1l
+[ssharp]1m
+[ssharp]mana8
+[ssharp]1n
+[ssharp]1o
+[ssharp]1p8
+[ssharp]5q
+[ssharp]1r
+[ssharp]1s2
+[ssharp]st8
+[ssharp]1ta
+[ssharp]1te
+[ssharp]t3hei
+[ssharp]1ti
+[ssharp]5to
+[ssharp]1tr
+1[ssharp]u8
+6[ssharp]5um
+[ssharp]1v
+[ssharp]1w
+[ssharp]1z
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-en.hyp b/Master/texmf-dist/tex/context/patterns/lang-en.hyp
new file mode 100644
index 00000000000..373dfe47339
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-en.hyp
@@ -0,0 +1,42 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: hyphen.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='en'>
+% <sourcefile>hyphen.tex</sourcefile>
+% <title>Plain TeX hyphenation patterns for the English language (US) </title>
+% <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+as-so-ciate
+as-so-ciates
+dec-li-na-tion
+oblig-a-tory
+phil-an-thropic
+present
+presents
+project
+projects
+reci-procity
+re-cog-ni-zance
+ref-or-ma-tion
+ret-ri-bu-tion
+ta-ble
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-en.pat b/Master/texmf-dist/tex/context/patterns/lang-en.pat
new file mode 100644
index 00000000000..269f1e0f59e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-en.pat
@@ -0,0 +1,4475 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: hyphen.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='en'>
+% <sourcefile>hyphen.tex</sourcefile>
+% <title>Plain TeX hyphenation patterns for the English language (US) </title>
+% <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.ach4
+.ad4der
+.af1t
+.al3t
+.am5at
+.an5c
+.ang4
+.ani5m
+.ant4
+.an3te
+.anti5s
+.ar5s
+.ar4tie
+.ar4ty
+.as3c
+.as1p
+.as1s
+.aster5
+.atom5
+.au1d
+.av4i
+.awn4
+.ba4g
+.ba5na
+.bas4e
+.ber4
+.be5ra
+.be3sm
+.be5sto
+.bri2
+.but4ti
+.cam4pe
+.can5c
+.capa5b
+.car5ol
+.ca4t
+.ce4la
+.ch4
+.chill5i
+.ci2
+.cit5r
+.co3e
+.co4r
+.cor5ner
+.de4moi
+.de3o
+.de3ra
+.de3ri
+.des4c
+.dictio5
+.do4t
+.du4c
+.dumb5
+.earth5
+.eas3i
+.eb4
+.eer4
+.eg2
+.el5d
+.el3em
+.enam3
+.en3g
+.en3s
+.eq5ui5t
+.er4ri
+.es3
+.eu3
+.eye5
+.fes3
+.for5mer
+.ga2
+.ge2
+.gen3t4
+.ge5og
+.gi5a
+.gi4b
+.go4r
+.hand5i
+.han5k
+.he2
+.hero5i
+.hes3
+.het3
+.hi3b
+.hi3er
+.hon5ey
+.hon3o
+.hov5
+.id4l
+.idol3
+.im3m
+.im5pin
+.in1
+.in3ci
+.ine2
+.in2k
+.in3s
+.ir5r
+.is4i
+.ju3r
+.la4cy
+.la4m
+.lat5er
+.lath5
+.le2
+.leg5e
+.len4
+.lep5
+.lev1
+.li4g
+.lig5a
+.li2n
+.li3o
+.li4t
+.mag5a5
+.mal5o
+.man5a
+.mar5ti
+.me2
+.mer3c
+.me5ter
+.mis1
+.mist5i
+.mon3e
+.mo3ro
+.mu5ta
+.muta5b
+.ni4c
+.od2
+.odd5
+.of5te
+.or5ato
+.or3c
+.or1d
+.or3t
+.os3
+.os4tl
+.oth3
+.out3
+.ped5al
+.pe5te
+.pe5tit
+.pi4e
+.pio5n
+.pi2t
+.pre3m
+.ra4c
+.ran4t
+.ratio5na
+.ree2
+.re5mit
+.res2
+.re5stat
+.ri4g
+.rit5u
+.ro4q
+.ros5t
+.row5d
+.ru4d
+.sci3e
+.self5
+.sell5
+.se2n
+.se5rie
+.sh2
+.si2
+.sing4
+.st4
+.sta5bl
+.sy2
+.ta4
+.te4
+.ten5an
+.th2
+.ti2
+.til4
+.tim5o5
+.ting4
+.tin5k
+.ton4a
+.to4p
+.top5i
+.tou5s
+.trib5ut
+.un1a
+.un3ce
+.under5
+.un1e
+.un5k
+.un5o
+.un3u
+.up3
+.ure3
+.us5a
+.ven4de
+.ve5ra
+.wil5i
+.ye4
+4ab.
+a5bal
+a5ban
+abe2
+ab5erd
+abi5a
+ab5it5ab
+ab5lat
+ab5o5liz
+4abr
+ab5rog
+ab3ul
+a4car
+ac5ard
+ac5aro
+a5ceou
+ac1er
+a5chet
+4a2ci
+a3cie
+ac1in
+a3cio
+ac5rob
+act5if
+ac3ul
+ac4um
+a2d
+ad4din
+ad5er.
+2adi
+a3dia
+ad3ica
+adi4er
+a3dio
+a3dit
+a5diu
+ad4le
+ad3ow
+ad5ran
+ad4su
+4adu
+a3duc
+ad5um
+ae4r
+aeri4e
+a2f
+aff4
+a4gab
+aga4n
+ag5ell
+age4o
+4ageu
+ag1i
+4ag4l
+ag1n
+a2go
+3agog
+ag3oni
+a5guer
+ag5ul
+a4gy
+a3ha
+a3he
+ah4l
+a3ho
+ai2
+a5ia
+a3ic.
+ai5ly
+a4i4n
+ain5in
+ain5o
+ait5en
+a1j
+ak1en
+al5ab
+al3ad
+a4lar
+4aldi
+2ale
+al3end
+a4lenti
+a5le5o
+al1i
+al4ia.
+ali4e
+al5lev
+4allic
+4alm
+a5log.
+a4ly.
+4alys
+5a5lyst
+5alyt
+3alyz
+4ama
+am5ab
+am3ag
+ama5ra
+am5asc
+a4matis
+a4m5ato
+am5era
+am3ic
+am5if
+am5ily
+am1in
+ami4no
+a2mo
+a5mon
+amor5i
+amp5en
+a2n
+an3age
+3analy
+a3nar
+an3arc
+anar4i
+a3nati
+4and
+ande4s
+an3dis
+an1dl
+an4dow
+a5nee
+a3nen
+an5est.
+a3neu
+2ang
+ang5ie
+an1gl
+a4n1ic
+a3nies
+an3i3f
+an4ime
+a5nimi
+a5nine
+an3io
+a3nip
+an3ish
+an3it
+a3niu
+an4kli
+5anniz
+ano4
+an5ot
+anoth5
+an2sa
+an4sco
+an4sn
+an2sp
+ans3po
+an4st
+an4sur
+antal4
+an4tie
+4anto
+an2tr
+an4tw
+an3ua
+an3ul
+a5nur
+4ao
+apar4
+ap5at
+ap5ero
+a3pher
+4aphi
+a4pilla
+ap5illar
+ap3in
+ap3ita
+a3pitu
+a2pl
+apoc5
+ap5ola
+apor5i
+apos3t
+aps5es
+a3pu
+aque5
+2a2r
+ar3act
+a5rade
+ar5adis
+ar3al
+a5ramete
+aran4g
+ara3p
+ar4at
+a5ratio
+ar5ativ
+a5rau
+ar5av4
+araw4
+arbal4
+ar4chan
+ar5dine
+ar4dr
+ar5eas
+a3ree
+ar3ent
+a5ress
+ar4fi
+ar4fl
+ar1i
+ar5ial
+ar3ian
+a3riet
+ar4im
+ar5inat
+ar3io
+ar2iz
+ar2mi
+ar5o5d
+a5roni
+a3roo
+ar2p
+ar3q
+arre4
+ar4sa
+ar2sh
+4as.
+as4ab
+as3ant
+ashi4
+a5sia.
+a3sib
+a3sic
+5a5si4t
+ask3i
+as4l
+a4soc
+as5ph
+as4sh
+as3ten
+as1tr
+asur5a
+a2ta
+at3abl
+at5ac
+at3alo
+at5ap
+ate5c
+at5ech
+at3ego
+at3en.
+at3era
+ater5n
+a5terna
+at3est
+at5ev
+4ath
+ath5em
+a5then
+at4ho
+ath5om
+4ati.
+a5tia
+at5i5b
+at1ic
+at3if
+ation5ar
+at3itu
+a4tog
+a2tom
+at5omiz
+a4top
+a4tos
+a1tr
+at5rop
+at4sk
+at4tag
+at5te
+at4th
+a2tu
+at5ua
+at5ue
+at3ul
+at3ura
+a2ty
+au4b
+augh3
+au3gu
+au4l2
+aun5d
+au3r
+au5sib
+aut5en
+au1th
+a2va
+av3ag
+a5van
+ave4no
+av3era
+av5ern
+av5ery
+av1i
+avi4er
+av3ig
+av5oc
+a1vor
+3away
+aw3i
+aw4ly
+aws4
+ax4ic
+ax4id
+ay5al
+aye4
+ays4
+azi4er
+azz5i
+5ba.
+bad5ger
+ba4ge
+bal1a
+ban5dag
+ban4e
+ban3i
+barbi5
+bari4a
+bas4si
+1bat
+ba4z
+2b1b
+b2be
+b3ber
+bbi4na
+4b1d
+4be.
+beak4
+beat3
+4be2d
+be3da
+be3de
+be3di
+be3gi
+be5gu
+1bel
+be1li
+be3lo
+4be5m
+be5nig
+be5nu
+4bes4
+be3sp
+be5str
+3bet
+bet5iz
+be5tr
+be3tw
+be3w
+be5yo
+2bf
+4b3h
+bi2b
+bi4d
+3bie
+bi5en
+bi4er
+2b3if
+1bil
+bi3liz
+bina5r4
+bin4d
+bi5net
+bi3ogr
+bi5ou
+bi2t
+3bi3tio
+bi3tr
+3bit5ua
+b5itz
+b1j
+bk4
+b2l2
+blath5
+b4le.
+blen4
+5blesp
+b3lis
+b4lo
+blun4t
+4b1m
+4b3n
+bne5g
+3bod
+bod3i
+bo4e
+bol3ic
+bom4bi
+bon4a
+bon5at
+3boo
+5bor.
+4b1ora
+bor5d
+5bore
+5bori
+5bos4
+b5ota
+both5
+bo4to
+bound3
+4bp
+4brit
+broth3
+2b5s2
+bsor4
+2bt
+bt4l
+b4to
+b3tr
+buf4fer
+bu4ga
+bu3li
+bumi4
+bu4n
+bunt4i
+bu3re
+bus5ie
+buss4e
+5bust
+4buta
+3butio
+b5uto
+b1v
+4b5w
+5by.
+bys4
+1ca
+cab3in
+ca1bl
+cach4
+ca5den
+4cag4
+2c5ah
+ca3lat
+cal4la
+call5in
+4calo
+can5d
+can4e
+can4ic
+can5is
+can3iz
+can4ty
+cany4
+ca5per
+car5om
+cast5er
+cas5tig
+4casy
+ca4th
+4cativ
+cav5al
+c3c
+ccha5
+cci4a
+ccompa5
+ccon4
+ccou3t
+2ce.
+4ced.
+4ceden
+3cei
+5cel.
+3cell
+1cen
+3cenc
+2cen4e
+4ceni
+3cent
+3cep
+ce5ram
+4cesa
+3cessi
+ces5si5b
+ces5t
+cet4
+c5e4ta
+cew4
+2ch
+4ch.
+4ch3ab
+5chanic
+ch5a5nis
+che2
+cheap3
+4ched
+che5lo
+3chemi
+ch5ene
+ch3er.
+ch3ers
+4ch1in
+5chine.
+ch5iness
+5chini
+5chio
+3chit
+chi2z
+3cho2
+ch4ti
+1ci
+3cia
+ci2a5b
+cia5r
+ci5c
+4cier
+5cific.
+4cii
+ci4la
+3cili
+2cim
+2cin
+c4ina
+3cinat
+cin3em
+c1ing
+c5ing.
+5cino
+cion4
+4cipe
+ci3ph
+4cipic
+4cista
+4cisti
+2c1it
+cit3iz
+5ciz
+ck1
+ck3i
+1c4l4
+4clar
+c5laratio
+5clare
+cle4m
+4clic
+clim4
+cly4
+c5n
+1co
+co5ag
+coe2
+2cog
+co4gr
+coi4
+co3inc
+col5i
+5colo
+col3or
+com5er
+con4a
+c4one
+con3g
+con5t
+co3pa
+cop3ic
+co4pl
+4corb
+coro3n
+cos4e
+cov1
+cove4
+cow5a
+coz5e
+co5zi
+c1q
+cras5t
+5crat.
+5cratic
+cre3at
+5cred
+4c3reta
+cre4v
+cri2
+cri5f
+c4rin
+cris4
+5criti
+cro4pl
+crop5o
+cros4e
+cru4d
+4c3s2
+2c1t
+cta4b
+ct5ang
+c5tant
+c2te
+c3ter
+c4ticu
+ctim3i
+ctu4r
+c4tw
+cud5
+c4uf
+c4ui
+cu5ity
+5culi
+cul4tis
+3cultu
+cu2ma
+c3ume
+cu4mi
+3cun
+cu3pi
+cu5py
+cur5a4b
+cu5ria
+1cus
+cuss4i
+3c4ut
+cu4tie
+4c5utiv
+4cutr
+1cy
+cze4
+1d2a
+5da.
+2d3a4b
+dach4
+4daf
+2dag
+da2m2
+dan3g
+dard5
+dark5
+4dary
+3dat
+4dativ
+4dato
+5dav4
+dav5e
+5day
+d1b
+d5c
+d1d4
+2de.
+deaf5
+deb5it
+de4bon
+decan4
+de4cil
+de5com
+2d1ed
+4dee.
+de5if
+deli4e
+del5i5q
+de5lo
+d4em
+5dem.
+3demic
+dem5ic.
+de5mil
+de4mons
+demor5
+1den
+de4nar
+de3no
+denti5f
+de3nu
+de1p
+de3pa
+depi4
+de2pu
+d3eq
+d4erh
+5derm
+dern5iz
+der5s
+des2
+d2es.
+de1sc
+de2s5o
+des3ti
+de3str
+de4su
+de1t
+de2to
+de1v
+dev3il
+4dey
+4d1f
+d4ga
+d3ge4t
+dg1i
+d2gy
+d1h2
+5di.
+1d4i3a
+dia5b
+di4cam
+d4ice
+3dict
+3did
+5di3en
+d1if
+di3ge
+di4lato
+d1in
+1dina
+3dine.
+5dini
+di5niz
+1dio
+dio5g
+di4pl
+dir2
+di1re
+dirt5i
+dis1
+5disi
+d4is3t
+d2iti
+1di1v
+d1j
+d5k2
+4d5la
+3dle.
+3dled
+3dles.
+4dless
+2d3lo
+4d5lu
+2dly
+d1m
+4d1n4
+1do
+3do.
+do5de
+5doe
+2d5of
+d4og
+do4la
+doli4
+do5lor
+dom5iz
+do3nat
+doni4
+doo3d
+dop4p
+d4or
+3dos
+4d5out
+do4v
+3dox
+d1p
+1dr
+drag5on
+4drai
+dre4
+drea5r
+5dren
+dri4b
+dril4
+dro4p
+4drow
+5drupli
+4dry
+2d1s2
+ds4p
+d4sw
+d4sy
+d2th
+1du
+d1u1a
+du2c
+d1uca
+duc5er
+4duct.
+4ducts
+du5el
+du4g
+d3ule
+dum4be
+du4n
+4dup
+du4pe
+d1v
+d1w
+d2y
+5dyn
+dy4se
+dys5p
+e1a4b
+e3act
+ead1
+ead5ie
+ea4ge
+ea5ger
+ea4l
+eal5er
+eal3ou
+eam3er
+e5and
+ear3a
+ear4c
+ear5es
+ear4ic
+ear4il
+ear5k
+ear2t
+eart3e
+ea5sp
+e3ass
+east3
+ea2t
+eat5en
+eath3i
+e5atif
+e4a3tu
+ea2v
+eav3en
+eav5i
+eav5o
+2e1b
+e4bel.
+e4bels
+e4ben
+e4bit
+e3br
+e4cad
+ecan5c
+ecca5
+e1ce
+ec5essa
+ec2i
+e4cib
+ec5ificat
+ec5ifie
+ec5ify
+ec3im
+eci4t
+e5cite
+e4clam
+e4clus
+e2col
+e4comm
+e4compe
+e4conc
+e2cor
+ec3ora
+eco5ro
+e1cr
+e4crem
+ec4tan
+ec4te
+e1cu
+e4cul
+ec3ula
+2e2da
+4ed3d
+e4d1er
+ede4s
+4edi
+e3dia
+ed3ib
+ed3ica
+ed3im
+ed1it
+edi5z
+4edo
+e4dol
+edon2
+e4dri
+e4dul
+ed5ulo
+ee2c
+eed3i
+ee2f
+eel3i
+ee4ly
+ee2m
+ee4na
+ee4p1
+ee2s4
+eest4
+ee4ty
+e5ex
+e1f
+e4f3ere
+1eff
+e4fic
+5efici
+efil4
+e3fine
+ef5i5nite
+3efit
+efor5es
+e4fuse.
+4egal
+eger4
+eg5ib
+eg4ic
+eg5ing
+e5git5
+eg5n
+e4go.
+e4gos
+eg1ul
+e5gur
+5egy
+e1h4
+eher4
+ei2
+e5ic
+ei5d
+eig2
+ei5gl
+e3imb
+e3inf
+e1ing
+e5inst
+eir4d
+eit3e
+ei3th
+e5ity
+e1j
+e4jud
+ej5udi
+eki4n
+ek4la
+e1la
+e4la.
+e4lac
+elan4d
+el5ativ
+e4law
+elaxa4
+e3lea
+el5ebra
+5elec
+e4led
+el3ega
+e5len
+e4l1er
+e1les
+el2f
+el2i
+e3libe
+e4l5ic.
+el3ica
+e3lier
+el5igib
+e5lim
+e4l3ing
+e3lio
+e2lis
+el5ish
+e3liv3
+4ella
+el4lab
+ello4
+e5loc
+el5og
+el3op.
+el2sh
+el4ta
+e5lud
+el5ug
+e4mac
+e4mag
+e5man
+em5ana
+em5b
+e1me
+e2mel
+e4met
+em3ica
+emi4e
+em5igra
+em1in2
+em5ine
+em3i3ni
+e4mis
+em5ish
+e5miss
+em3iz
+5emniz
+emo4g
+emoni5o
+em3pi
+e4mul
+em5ula
+emu3n
+e3my
+en5amo
+e4nant
+ench4er
+en3dic
+e5nea
+e5nee
+en3em
+en5ero
+en5esi
+en5est
+en3etr
+e3new
+en5ics
+e5nie
+e5nil
+e3nio
+en3ish
+en3it
+e5niu
+5eniz
+4enn
+4eno
+eno4g
+e4nos
+en3ov
+en4sw
+ent5age
+4enthes
+en3ua
+en5uf
+e3ny.
+4en3z
+e5of
+eo2g
+e4oi4
+e3ol
+eop3ar
+e1or
+eo3re
+eo5rol
+eos4
+e4ot
+eo4to
+e5out
+e5ow
+e2pa
+e3pai
+ep5anc
+e5pel
+e3pent
+ep5etitio
+ephe4
+e4pli
+e1po
+e4prec
+ep5reca
+e4pred
+ep3reh
+e3pro
+e4prob
+ep4sh
+ep5ti5b
+e4put
+ep5uta
+e1q
+equi3l
+e4q3ui3s
+er1a
+era4b
+4erand
+er3ar
+4erati.
+2erb
+er4bl
+er3ch
+er4che
+2ere.
+e3real
+ere5co
+ere3in
+er5el.
+er3emo
+er5ena
+er5ence
+4erene
+er3ent
+ere4q
+er5ess
+er3est
+eret4
+er1h
+er1i
+e1ria4
+5erick
+e3rien
+eri4er
+er3ine
+e1rio
+4erit
+er4iu
+eri4v
+e4riva
+er3m4
+er4nis
+4ernit
+5erniz
+er3no
+2ero
+er5ob
+e5roc
+ero4r
+er1ou
+er1s
+er3set
+ert3er
+4ertl
+er3tw
+4eru
+eru4t
+5erwau
+e1s4a
+e4sage.
+e4sages
+es2c
+e2sca
+es5can
+e3scr
+es5cu
+e1s2e
+e2sec
+es5ecr
+es5enc
+e4sert.
+e4serts
+e4serva
+4esh
+e3sha
+esh5en
+e1si
+e2sic
+e2sid
+es5iden
+es5igna
+e2s5im
+es4i4n
+esis4te
+esi4u
+e5skin
+es4mi
+e2sol
+es3olu
+e2son
+es5ona
+e1sp
+es3per
+es5pira
+es4pre
+2ess
+es4si4b
+estan4
+es3tig
+es5tim
+4es2to
+e3ston
+2estr
+e5stro
+estruc5
+e2sur
+es5urr
+es4w
+eta4b
+eten4d
+e3teo
+ethod3
+et1ic
+e5tide
+etin4
+eti4no
+e5tir
+e5titio
+et5itiv
+4etn
+et5ona
+e3tra
+e3tre
+et3ric
+et5rif
+et3rog
+et5ros
+et3ua
+et5ym
+et5z
+4eu
+e5un
+e3up
+eu3ro
+eus4
+eute4
+euti5l
+eu5tr
+eva2p5
+e2vas
+ev5ast
+e5vea
+ev3ell
+evel3o
+e5veng
+even4i
+ev1er
+e5verb
+e1vi
+ev3id
+evi4l
+e4vin
+evi4v
+e5voc
+e5vu
+e1wa
+e4wag
+e5wee
+e3wh
+ewil5
+ew3ing
+e3wit
+1exp
+5eyc
+5eye.
+eys4
+1fa
+fa3bl
+fab3r
+fa4ce
+4fag
+fain4
+fall5e
+4fa4ma
+fam5is
+5far
+far5th
+fa3ta
+fa3the
+4fato
+fault5
+4f5b
+4fd
+4fe.
+feas4
+feath3
+fe4b
+4feca
+5fect
+2fed
+fe3li
+fe4mo
+fen2d
+fend5e
+fer1
+5ferr
+fev4
+4f1f
+f4fes
+f4fie
+f5fin.
+f2f5is
+f4fly
+f2fy
+4fh
+1fi
+fi3a
+2f3ic.
+4f3ical
+f3ican
+4ficate
+f3icen
+fi3cer
+fic4i
+5ficia
+5ficie
+4fics
+fi3cu
+fi5del
+fight5
+fil5i
+fill5in
+4fily
+2fin
+5fina
+fin2d5
+fi2ne
+f1in3g
+fin4n
+fis4ti
+f4l2
+f5less
+flin4
+flo3re
+f2ly5
+4fm
+4fn
+1fo
+5fon
+fon4de
+fon4t
+fo2r
+fo5rat
+for5ay
+fore5t
+for4i
+fort5a
+fos5
+4f5p
+fra4t
+f5rea
+fres5c
+fri2
+fril4
+frol5
+2f3s
+2ft
+f4to
+f2ty
+3fu
+fu5el
+4fug
+fu4min
+fu5ne
+fu3ri
+fusi4
+fus4s
+4futa
+1fy
+1ga
+gaf4
+5gal.
+3gali
+ga3lo
+2gam
+ga5met
+g5amo
+gan5is
+ga3niz
+gani5za
+4gano
+gar5n4
+gass4
+gath3
+4gativ
+4gaz
+g3b
+gd4
+2ge.
+2ged
+geez4
+gel4in
+ge5lis
+ge5liz
+4gely
+1gen
+ge4nat
+ge5niz
+4geno
+4geny
+1geo
+ge3om
+g4ery
+5gesi
+geth5
+4geto
+ge4ty
+ge4v
+4g1g2
+g2ge
+g3ger
+gglu5
+ggo4
+gh3in
+gh5out
+gh4to
+5gi.
+1gi4a
+gia5r
+g1ic
+5gicia
+g4ico
+gien5
+5gies.
+gil4
+g3imen
+3g4in.
+gin5ge
+5g4ins
+5gio
+3gir
+gir4l
+g3isl
+gi4u
+5giv
+3giz
+gl2
+gla4
+glad5i
+5glas
+1gle
+gli4b
+g3lig
+3glo
+glo3r
+g1m
+g4my
+gn4a
+g4na.
+gnet4t
+g1ni
+g2nin
+g4nio
+g1no
+g4non
+1go
+3go.
+gob5
+5goe
+3g4o4g
+go3is
+gon2
+4g3o3na
+gondo5
+go3ni
+5goo
+go5riz
+gor5ou
+5gos.
+gov1
+g3p
+1gr
+4grada
+g4rai
+gran2
+5graph.
+g5rapher
+5graphic
+4graphy
+4gray
+gre4n
+4gress.
+4grit
+g4ro
+gruf4
+gs2
+g5ste
+gth3
+gu4a
+3guard
+2gue
+5gui5t
+3gun
+3gus
+4gu4t
+g3w
+1gy
+2g5y3n
+gy5ra
+h3ab4l
+hach4
+hae4m
+hae4t
+h5agu
+ha3la
+hala3m
+ha4m
+han4ci
+han4cy
+5hand.
+han4g
+hang5er
+hang5o
+h5a5niz
+han4k
+han4te
+hap3l
+hap5t
+ha3ran
+ha5ras
+har2d
+hard3e
+har4le
+harp5en
+har5ter
+has5s
+haun4
+5haz
+haz3a
+h1b
+1head
+3hear
+he4can
+h5ecat
+h4ed
+he5do5
+he3l4i
+hel4lis
+hel4ly
+h5elo
+hem4p
+he2n
+hena4
+hen5at
+heo5r
+hep5
+h4era
+hera3p
+her4ba
+here5a
+h3ern
+h5erou
+h3ery
+h1es
+he2s5p
+he4t
+het4ed
+heu4
+h1f
+h1h
+hi5an
+hi4co
+high5
+h4il2
+himer4
+h4ina
+hion4e
+hi4p
+hir4l
+hi3ro
+hir4p
+hir4r
+his3el
+his4s
+hith5er
+hi2v
+4hk
+4h1l4
+hlan4
+h2lo
+hlo3ri
+4h1m
+hmet4
+2h1n
+h5odiz
+h5ods
+ho4g
+hoge4
+hol5ar
+3hol4e
+ho4ma
+home3
+hon4a
+ho5ny
+3hood
+hoon4
+hor5at
+ho5ris
+hort3e
+ho5ru
+hos4e
+ho5sen
+hos1p
+1hous
+house3
+hov5el
+4h5p
+4hr4
+hree5
+hro5niz
+hro3po
+4h1s2
+h4sh
+h4tar
+ht1en
+ht5es
+h4ty
+hu4g
+hu4min
+hun5ke
+hun4t
+hus3t4
+hu4t
+h1w
+h4wart
+hy3pe
+hy3ph
+hy2s
+2i1a
+i2al
+iam4
+iam5ete
+i2an
+4ianc
+ian3i
+4ian4t
+ia5pe
+iass4
+i4ativ
+ia4tric
+i4atu
+ibe4
+ib3era
+ib5ert
+ib5ia
+ib3in
+ib5it.
+ib5ite
+i1bl
+ib3li
+i5bo
+i1br
+i2b5ri
+i5bun
+4icam
+5icap
+4icar
+i4car.
+i4cara
+icas5
+i4cay
+iccu4
+4iceo
+4ich
+2ici
+i5cid
+ic5ina
+i2cip
+ic3ipa
+i4cly
+i2c5oc
+4i1cr
+5icra
+i4cry
+ic4te
+ictu2
+ic4t3ua
+ic3ula
+ic4um
+ic5uo
+i3cur
+2id
+i4dai
+id5anc
+id5d
+ide3al
+ide4s
+i2di
+id5ian
+idi4ar
+i5die
+id3io
+idi5ou
+id1it
+id5iu
+i3dle
+i4dom
+id3ow
+i4dr
+i2du
+id5uo
+2ie4
+ied4e
+5ie5ga
+ield3
+ien5a4
+ien4e
+i5enn
+i3enti
+i1er.
+i3esc
+i1est
+i3et
+4if.
+if5ero
+iff5en
+if4fr
+4ific.
+i3fie
+i3fl
+4ift
+2ig
+iga5b
+ig3era
+ight3i
+4igi
+i3gib
+ig3il
+ig3in
+ig3it
+i4g4l
+i2go
+ig3or
+ig5ot
+i5gre
+igu5i
+ig1ur
+i3h
+4i5i4
+i3j
+4ik
+i1la
+il3a4b
+i4lade
+i2l5am
+ila5ra
+i3leg
+il1er
+ilev4
+il5f
+il1i
+il3ia
+il2ib
+il3io
+il4ist
+2ilit
+il2iz
+ill5ab
+4iln
+il3oq
+il4ty
+il5ur
+il3v
+i4mag
+im3age
+ima5ry
+imenta5r
+4imet
+im1i
+im5ida
+imi5le
+i5mini
+4imit
+im4ni
+i3mon
+i2mu
+im3ula
+2in.
+i4n3au
+4inav
+incel4
+in3cer
+4ind
+in5dling
+2ine
+i3nee
+iner4ar
+i5ness
+4inga
+4inge
+in5gen
+4ingi
+in5gling
+4ingo
+4ingu
+2ini
+i5ni.
+i4nia
+in3io
+in1is
+i5nite.
+5initio
+in3ity
+4ink
+4inl
+2inn
+2i1no
+i4no4c
+ino4s
+i4not
+2ins
+in3se
+insur5a
+2int.
+2in4th
+in1u
+i5nus
+4iny
+2io
+4io.
+ioge4
+io2gr
+i1ol
+io4m
+ion3at
+ion4ery
+ion3i
+io5ph
+ior3i
+i4os
+io5th
+i5oti
+io4to
+i4our
+2ip
+ipe4
+iphras4
+ip3i
+ip4ic
+ip4re4
+ip3ul
+i3qua
+iq5uef
+iq3uid
+iq3ui3t
+4ir
+i1ra
+ira4b
+i4rac
+ird5e
+ire4de
+i4ref
+i4rel4
+i4res
+ir5gi
+ir1i
+iri5de
+ir4is
+iri3tu
+5i5r2iz
+ir4min
+iro4g
+5iron.
+ir5ul
+2is.
+is5ag
+is3ar
+isas5
+2is1c
+is3ch
+4ise
+is3er
+3isf
+is5han
+is3hon
+ish5op
+is3ib
+isi4d
+i5sis
+is5itiv
+4is4k
+islan4
+4isms
+i2so
+iso5mer
+is1p
+is2pi
+is4py
+4is1s
+is4sal
+issen4
+is4ses
+is4ta.
+is1te
+is1ti
+ist4ly
+4istral
+i2su
+is5us
+4ita.
+ita4bi
+i4tag
+4ita5m
+i3tan
+i3tat
+2ite
+it3era
+i5teri
+it4es
+2ith
+i1ti
+4itia
+4i2tic
+it3ica
+5i5tick
+it3ig
+it5ill
+i2tim
+2itio
+4itis
+i4tism
+i2t5o5m
+4iton
+i4tram
+it5ry
+4itt
+it3uat
+i5tud
+it3ul
+4itz.
+i1u
+2iv
+iv3ell
+iv3en.
+i4v3er.
+i4vers.
+iv5il.
+iv5io
+iv1it
+i5vore
+iv3o3ro
+i4v3ot
+4i5w
+ix4o
+4iy
+4izar
+izi4
+5izont
+5ja
+jac4q
+ja4p
+1je
+jer5s
+4jestie
+4jesty
+jew3
+jo4p
+5judg
+3ka.
+k3ab
+k5ag
+kais4
+kal4
+k1b
+k2ed
+1kee
+ke4g
+ke5li
+k3en4d
+k1er
+kes4
+k3est.
+ke4ty
+k3f
+kh4
+k1i
+5ki.
+5k2ic
+k4ill
+kilo5
+k4im
+k4in.
+kin4de
+k5iness
+kin4g
+ki4p
+kis4
+k5ish
+kk4
+k1l
+4kley
+4kly
+k1m
+k5nes
+1k2no
+ko5r
+kosh4
+k3ou
+kro5n
+4k1s2
+k4sc
+ks4l
+k4sy
+k5t
+k1w
+lab3ic
+l4abo
+laci4
+l4ade
+la3dy
+lag4n
+lam3o
+3land
+lan4dl
+lan5et
+lan4te
+lar4g
+lar3i
+las4e
+la5tan
+4lateli
+4lativ
+4lav
+la4v4a
+2l1b
+lbin4
+4l1c2
+lce4
+l3ci
+2ld
+l2de
+ld4ere
+ld4eri
+ldi4
+ld5is
+l3dr
+l4dri
+le2a
+le4bi
+left5
+5leg.
+5legg
+le4mat
+lem5atic
+4len.
+3lenc
+5lene.
+1lent
+le3ph
+le4pr
+lera5b
+ler4e
+3lerg
+3l4eri
+l4ero
+les2
+le5sco
+5lesq
+3less
+5less.
+l3eva
+lev4er.
+lev4era
+lev4ers
+3ley
+4leye
+2lf
+l5fr
+4l1g4
+l5ga
+lgar3
+l4ges
+lgo3
+2l3h
+li4ag
+li2am
+liar5iz
+li4as
+li4ato
+li5bi
+5licio
+li4cor
+4lics
+4lict.
+l4icu
+l3icy
+l3ida
+lid5er
+3lidi
+lif3er
+l4iff
+li4fl
+5ligate
+3ligh
+li4gra
+3lik
+4l4i4l
+lim4bl
+lim3i
+li4mo
+l4im4p
+l4ina
+1l4ine
+lin3ea
+lin3i
+link5er
+li5og
+4l4iq
+lis4p
+l1it
+l2it.
+5litica
+l5i5tics
+liv3er
+l1iz
+4lj
+lka3
+l3kal
+lka4t
+l1l
+l4law
+l2le
+l5lea
+l3lec
+l3leg
+l3lel
+l3le4n
+l3le4t
+ll2i
+l2lin4
+l5lina
+ll4o
+lloqui5
+ll5out
+l5low
+2lm
+l5met
+lm3ing
+l4mod
+lmon4
+2l1n2
+3lo.
+lob5al
+lo4ci
+4lof
+3logic
+l5ogo
+3logu
+lom3er
+5long
+lon4i
+l3o3niz
+lood5
+5lope.
+lop3i
+l3opm
+lora4
+lo4rato
+lo5rie
+lor5ou
+5los.
+los5et
+5losophiz
+5losophy
+los4t
+lo4ta
+loun5d
+2lout
+4lov
+2lp
+lpa5b
+l3pha
+l5phi
+lp5ing
+l3pit
+l4pl
+l5pr
+4l1r
+2l1s2
+l4sc
+l2se
+l4sie
+4lt
+lt5ag
+ltane5
+l1te
+lten4
+ltera4
+lth3i
+l5ties.
+ltis4
+l1tr
+ltu2
+ltur3a
+lu5a
+lu3br
+luch4
+lu3ci
+lu3en
+luf4
+lu5id
+lu4ma
+5lumi
+l5umn.
+5lumnia
+lu3o
+luo3r
+4lup
+luss4
+lus3te
+1lut
+l5ven
+l5vet4
+2l1w
+1ly
+4lya
+4lyb
+ly5me
+ly3no
+2lys4
+l5yse
+1ma
+2mab
+ma2ca
+ma5chine
+ma4cl
+mag5in
+5magn
+2mah
+maid5
+4mald
+ma3lig
+ma5lin
+mal4li
+mal4ty
+5mania
+man5is
+man3iz
+4map
+ma5rine.
+ma5riz
+mar4ly
+mar3v
+ma5sce
+mas4e
+mas1t
+5mate
+math3
+ma3tis
+4matiza
+4m1b
+mba4t5
+m5bil
+m4b3ing
+mbi4v
+4m5c
+4me.
+2med
+4med.
+5media
+me3die
+m5e5dy
+me2g
+mel5on
+mel4t
+me2m
+mem1o3
+1men
+men4a
+men5ac
+men4de
+4mene
+men4i
+mens4
+mensu5
+3ment
+men4te
+me5on
+m5ersa
+2mes
+3mesti
+me4ta
+met3al
+me1te
+me5thi
+m4etr
+5metric
+me5trie
+me3try
+me4v
+4m1f
+2mh
+5mi.
+mi3a
+mid4a
+mid4g
+mig4
+3milia
+m5i5lie
+m4ill
+min4a
+3mind
+m5inee
+m4ingl
+min5gli
+m5ingly
+min4t
+m4inu
+miot4
+m2is
+mis4er.
+mis5l
+mis4ti
+m5istry
+4mith
+m2iz
+4mk
+4m1l
+m1m
+mma5ry
+4m1n
+mn4a
+m4nin
+mn4o
+1mo
+4mocr
+5mocratiz
+mo2d1
+mo4go
+mois2
+moi5se
+4mok
+mo5lest
+mo3me
+mon5et
+mon5ge
+moni3a
+mon4ism
+mon4ist
+mo3niz
+monol4
+mo3ny.
+mo2r
+4mora.
+mos2
+mo5sey
+mo3sp
+moth3
+m5ouf
+3mous
+mo2v
+4m1p
+mpara5
+mpa5rab
+mpar5i
+m3pet
+mphas4
+m2pi
+mpi4a
+mp5ies
+m4p1in
+m5pir
+mp5is
+mpo3ri
+mpos5ite
+m4pous
+mpov5
+mp4tr
+m2py
+4m3r
+4m1s2
+m4sh
+m5si
+4mt
+1mu
+mula5r4
+5mult
+multi3
+3mum
+mun2
+4mup
+mu4u
+4mw
+1na
+2n1a2b
+n4abu
+4nac.
+na4ca
+n5act
+nag5er.
+nak4
+na4li
+na5lia
+4nalt
+na5mit
+n2an
+nanci4
+nan4it
+nank4
+nar3c
+4nare
+nar3i
+nar4l
+n5arm
+n4as
+nas4c
+nas5ti
+n2at
+na3tal
+nato5miz
+n2au
+nau3se
+3naut
+nav4e
+4n1b4
+ncar5
+n4ces.
+n3cha
+n5cheo
+n5chil
+n3chis
+nc1in
+nc4it
+ncour5a
+n1cr
+n1cu
+n4dai
+n5dan
+n1de
+nd5est.
+ndi4b
+n5d2if
+n1dit
+n3diz
+n5duc
+ndu4r
+nd2we
+2ne.
+n3ear
+ne2b
+neb3u
+ne2c
+5neck
+2ned
+ne4gat
+neg5ativ
+5nege
+ne4la
+nel5iz
+ne5mi
+ne4mo
+1nen
+4nene
+3neo
+ne4po
+ne2q
+n1er
+nera5b
+n4erar
+n2ere
+n4er5i
+ner4r
+1nes
+2nes.
+4nesp
+2nest
+4nesw
+3netic
+ne4v
+n5eve
+ne4w
+n3f
+n4gab
+n3gel
+nge4n4e
+n5gere
+n3geri
+ng5ha
+n3gib
+ng1in
+n5git
+n4gla
+ngov4
+ng5sh
+n1gu
+n4gum
+n2gy
+4n1h4
+nha4
+nhab3
+nhe4
+3n4ia
+ni3an
+ni4ap
+ni3ba
+ni4bl
+ni4d
+ni5di
+ni4er
+ni2fi
+ni5ficat
+n5igr
+nik4
+n1im
+ni3miz
+n1in
+5nine.
+nin4g
+ni4o
+5nis.
+nis4ta
+n2it
+n4ith
+3nitio
+n3itor
+ni3tr
+n1j
+4nk2
+n5kero
+n3ket
+nk3in
+n1kl
+4n1l
+n5m
+nme4
+nmet4
+4n1n2
+nne4
+nni3al
+nni4v
+nob4l
+no3ble
+n5ocl
+4n3o2d
+3noe
+4nog
+noge4
+nois5i
+no5l4i
+5nologis
+3nomic
+n5o5miz
+no4mo
+no3my
+no4n
+non4ag
+non5i
+n5oniz
+4nop
+5nop5o5li
+nor5ab
+no4rary
+4nosc
+nos4e
+nos5t
+no5ta
+1nou
+3noun
+nov3el3
+nowl3
+n1p4
+npi4
+npre4c
+n1q
+n1r
+nru4
+2n1s2
+ns5ab
+nsati4
+ns4c
+n2se
+n4s3es
+nsid1
+nsig4
+n2sl
+ns3m
+n4soc
+ns4pe
+n5spi
+nsta5bl
+n1t
+nta4b
+nter3s
+nt2i
+n5tib
+nti4er
+nti2f
+n3tine
+n4t3ing
+nti4p
+ntrol5li
+nt4s
+ntu3me
+nu1a
+nu4d
+nu5en
+nuf4fe
+n3uin
+3nu3it
+n4um
+nu1me
+n5umi
+3nu4n
+n3uo
+nu3tr
+n1v2
+n1w4
+nym4
+nyp4
+4nz
+n3za
+4oa
+oad3
+o5a5les
+oard3
+oas4e
+oast5e
+oat5i
+ob3a3b
+o5bar
+obe4l
+o1bi
+o2bin
+ob5ing
+o3br
+ob3ul
+o1ce
+och4
+o3chet
+ocif3
+o4cil
+o4clam
+o4cod
+oc3rac
+oc5ratiz
+ocre3
+5ocrit
+octor5a
+oc3ula
+o5cure
+od5ded
+od3ic
+odi3o
+o2do4
+odor3
+od5uct.
+od5ucts
+o4el
+o5eng
+o3er
+oe4ta
+o3ev
+o2fi
+of5ite
+ofit4t
+o2g5a5r
+og5ativ
+o4gato
+o1ge
+o5gene
+o5geo
+o4ger
+o3gie
+1o1gis
+og3it
+o4gl
+o5g2ly
+3ogniz
+o4gro
+ogu5i
+1ogy
+2ogyn
+o1h2
+ohab5
+oi2
+oic3es
+oi3der
+oiff4
+oig4
+oi5let
+o3ing
+oint5er
+o5ism
+oi5son
+oist5en
+oi3ter
+o5j
+2ok
+o3ken
+ok5ie
+o1la
+o4lan
+olass4
+ol2d
+old1e
+ol3er
+o3lesc
+o3let
+ol4fi
+ol2i
+o3lia
+o3lice
+ol5id.
+o3li4f
+o5lil
+ol3ing
+o5lio
+o5lis.
+ol3ish
+o5lite
+o5litio
+o5liv
+olli4e
+ol5ogiz
+olo4r
+ol5pl
+ol2t
+ol3ub
+ol3ume
+ol3un
+o5lus
+ol2v
+o2ly
+om5ah
+oma5l
+om5atiz
+om2be
+om4bl
+o2me
+om3ena
+om5erse
+o4met
+om5etry
+o3mia
+om3ic.
+om3ica
+o5mid
+om1in
+o5mini
+5ommend
+omo4ge
+o4mon
+om3pi
+ompro5
+o2n
+on1a
+on4ac
+o3nan
+on1c
+3oncil
+2ond
+on5do
+o3nen
+on5est
+on4gu
+on1ic
+o3nio
+on1is
+o5niu
+on3key
+on4odi
+on3omy
+on3s
+onspi4
+onspir5a
+onsu4
+onten4
+on3t4i
+ontif5
+on5um
+onva5
+oo2
+ood5e
+ood5i
+oo4k
+oop3i
+o3ord
+oost5
+o2pa
+ope5d
+op1er
+3opera
+4operag
+2oph
+o5phan
+o5pher
+op3ing
+o3pit
+o5pon
+o4posi
+o1pr
+op1u
+opy5
+o1q
+o1ra
+o5ra.
+o4r3ag
+or5aliz
+or5ange
+ore5a
+o5real
+or3ei
+ore5sh
+or5est.
+orew4
+or4gu
+4o5ria
+or3ica
+o5ril
+or1in
+o1rio
+or3ity
+o3riu
+or2mi
+orn2e
+o5rof
+or3oug
+or5pe
+3orrh
+or4se
+ors5en
+orst4
+or3thi
+or3thy
+or4ty
+o5rum
+o1ry
+os3al
+os2c
+os4ce
+o3scop
+4oscopi
+o5scr
+os4i4e
+os5itiv
+os3ito
+os3ity
+osi4u
+os4l
+o2so
+os4pa
+os4po
+os2ta
+o5stati
+os5til
+os5tit
+o4tan
+otele4g
+ot3er.
+ot5ers
+o4tes
+4oth
+oth5esi
+oth3i4
+ot3ic.
+ot5ica
+o3tice
+o3tif
+o3tis
+oto5s
+ou2
+ou3bl
+ouch5i
+ou5et
+ou4l
+ounc5er
+oun2d
+ou5v
+ov4en
+over4ne
+over3s
+ov4ert
+o3vis
+oviti4
+o5v4ol
+ow3der
+ow3el
+ow5est
+ow1i
+own5i
+o4wo
+oy1a
+1pa
+pa4ca
+pa4ce
+pac4t
+p4ad
+5pagan
+p3agat
+p4ai
+pain4
+p4al
+pan4a
+pan3el
+pan4ty
+pa3ny
+pa1p
+pa4pu
+para5bl
+par5age
+par5di
+3pare
+par5el
+p4a4ri
+par4is
+pa2te
+pa5ter
+5pathic
+pa5thy
+pa4tric
+pav4
+3pay
+4p1b
+pd4
+4pe.
+3pe4a
+pear4l
+pe2c
+2p2ed
+3pede
+3pedi
+pedia4
+ped4ic
+p4ee
+pee4d
+pek4
+pe4la
+peli4e
+pe4nan
+p4enc
+pen4th
+pe5on
+p4era.
+pera5bl
+p4erag
+p4eri
+peri5st
+per4mal
+perme5
+p4ern
+per3o
+per3ti
+pe5ru
+per1v
+pe2t
+pe5ten
+pe5tiz
+4pf
+4pg
+4ph.
+phar5i
+phe3no
+ph4er
+ph4es.
+ph1ic
+5phie
+ph5ing
+5phisti
+3phiz
+ph2l
+3phob
+3phone
+5phoni
+pho4r
+4phs
+ph3t
+5phu
+1phy
+pi3a
+pian4
+pi4cie
+pi4cy
+p4id
+p5ida
+pi3de
+5pidi
+3piec
+pi3en
+pi4grap
+pi3lo
+pi2n
+p4in.
+pind4
+p4ino
+3pi1o
+pion4
+p3ith
+pi5tha
+pi2tu
+2p3k2
+1p2l2
+3plan
+plas5t
+pli3a
+pli5er
+4plig
+pli4n
+ploi4
+plu4m
+plum4b
+4p1m
+2p3n
+po4c
+5pod.
+po5em
+po3et5
+5po4g
+poin2
+5point
+poly5t
+po4ni
+po4p
+1p4or
+po4ry
+1pos
+pos1s
+p4ot
+po4ta
+5poun
+4p1p
+ppa5ra
+p2pe
+p4ped
+p5pel
+p3pen
+p3per
+p3pet
+ppo5site
+pr2
+pray4e
+5preci
+pre5co
+pre3em
+pref5ac
+pre4la
+pre3r
+p3rese
+3press
+pre5ten
+pre3v
+5pri4e
+prin4t3
+pri4s
+pris3o
+p3roca
+prof5it
+pro3l
+pros3e
+pro1t
+2p1s2
+p2se
+ps4h
+p4sib
+2p1t
+pt5a4b
+p2te
+p2th
+pti3m
+ptu4r
+p4tw
+pub3
+pue4
+puf4
+pul3c
+pu4m
+pu2n
+pur4r
+5pus
+pu2t
+5pute
+put3er
+pu3tr
+put4ted
+put4tin
+p3w
+qu2
+qua5v
+2que.
+3quer
+3quet
+2rab
+ra3bi
+rach4e
+r5acl
+raf5fi
+raf4t
+r2ai
+ra4lo
+ram3et
+r2ami
+rane5o
+ran4ge
+r4ani
+ra5no
+rap3er
+3raphy
+rar5c
+rare4
+rar5ef
+4raril
+r2as
+ration4
+rau4t
+ra5vai
+rav3el
+ra5zie
+r1b
+r4bab
+r4bag
+rbi2
+rbi4f
+r2bin
+r5bine
+rb5ing.
+rb4o
+r1c
+r2ce
+rcen4
+r3cha
+rch4er
+r4ci4b
+rc4it
+rcum3
+r4dal
+rd2i
+rdi4a
+rdi4er
+rdin4
+rd3ing
+2re.
+re1al
+re3an
+re5arr
+5reav
+re4aw
+r5ebrat
+rec5oll
+rec5ompe
+re4cre
+2r2ed
+re1de
+re3dis
+red5it
+re4fac
+re2fe
+re5fer.
+re3fi
+re4fy
+reg3is
+re5it
+re1li
+re5lu
+r4en4ta
+ren4te
+re1o
+re5pin
+re4posi
+re1pu
+r1er4
+r4eri
+rero4
+re5ru
+r4es.
+re4spi
+ress5ib
+res2t
+re5stal
+re3str
+re4ter
+re4ti4z
+re3tri
+reu2
+re5uti
+rev2
+re4val
+rev3el
+r5ev5er.
+re5vers
+re5vert
+re5vil
+rev5olu
+re4wh
+r1f
+rfu4
+r4fy
+rg2
+rg3er
+r3get
+r3gic
+rgi4n
+rg3ing
+r5gis
+r5git
+r1gl
+rgo4n
+r3gu
+rh4
+4rh.
+4rhal
+ri3a
+ria4b
+ri4ag
+r4ib
+rib3a
+ric5as
+r4ice
+4rici
+5ricid
+ri4cie
+r4ico
+rid5er
+ri3enc
+ri3ent
+ri1er
+ri5et
+rig5an
+5rigi
+ril3iz
+5riman
+rim5i
+3rimo
+rim4pe
+r2ina
+5rina.
+rin4d
+rin4e
+rin4g
+ri1o
+5riph
+riph5e
+ri2pl
+rip5lic
+r4iq
+r2is
+r4is.
+ris4c
+r3ish
+ris4p
+ri3ta3b
+r5ited.
+rit5er.
+rit5ers
+rit3ic
+ri2tu
+rit5ur
+riv5el
+riv3et
+riv3i
+r3j
+r3ket
+rk4le
+rk4lin
+r1l
+rle4
+r2led
+r4lig
+r4lis
+rl5ish
+r3lo4
+r1m
+rma5c
+r2me
+r3men
+rm5ers
+rm3ing
+r4ming.
+r4mio
+r3mit
+r4my
+r4nar
+r3nel
+r4ner
+r5net
+r3ney
+r5nic
+r1nis4
+r3nit
+r3niv
+rno4
+r4nou
+r3nu
+rob3l
+r2oc
+ro3cr
+ro4e
+ro1fe
+ro5fil
+rok2
+ro5ker
+5role.
+rom5ete
+rom4i
+rom4p
+ron4al
+ron4e
+ro5n4is
+ron4ta
+1room
+5root
+ro3pel
+rop3ic
+ror3i
+ro5ro
+ros5per
+ros4s
+ro4the
+ro4ty
+ro4va
+rov5el
+rox5
+r1p
+r4pea
+r5pent
+rp5er.
+r3pet
+rp4h4
+rp3ing
+r3po
+r1r4
+rre4c
+rre4f
+r4reo
+rre4st
+rri4o
+rri4v
+rron4
+rros4
+rrys4
+4rs2
+r1sa
+rsa5ti
+rs4c
+r2se
+r3sec
+rse4cr
+rs5er.
+rs3es
+rse5v2
+r1sh
+r5sha
+r1si
+r4si4b
+rson3
+r1sp
+r5sw
+rtach4
+r4tag
+r3teb
+rten4d
+rte5o
+r1ti
+rt5ib
+rti4d
+r4tier
+r3tig
+rtil3i
+rtil4l
+r4tily
+r4tist
+r4tiv
+r3tri
+rtroph4
+rt4sh
+ru3a
+ru3e4l
+ru3en
+ru4gl
+ru3in
+rum3pl
+ru2n
+runk5
+run4ty
+r5usc
+ruti5n
+rv4e
+rvel4i
+r3ven
+rv5er.
+r5vest
+r3vey
+r3vic
+rvi4v
+r3vo
+r1w
+ry4c
+5rynge
+ry3t
+sa2
+2s1ab
+5sack
+sac3ri
+s3act
+5sai
+salar4
+sal4m
+sa5lo
+sal4t
+3sanc
+san4de
+s1ap
+sa5ta
+5sa3tio
+sat3u
+sau4
+sa5vor
+5saw
+4s5b
+scan4t5
+sca4p
+scav5
+s4ced
+4scei
+s4ces
+sch2
+s4cho
+3s4cie
+5scin4d
+scle5
+s4cli
+scof4
+4scopy
+scour5a
+s1cu
+4s5d
+4se.
+se4a
+seas4
+sea5w
+se2c3o
+3sect
+4s4ed
+se4d4e
+s5edl
+se2g
+seg3r
+5sei
+se1le
+5self
+5selv
+4seme
+se4mol
+sen5at
+4senc
+sen4d
+s5ened
+sen5g
+s5enin
+4sentd
+4sentl
+sep3a3
+4s1er.
+s4erl
+ser4o
+4servo
+s1e4s
+se5sh
+ses5t
+5se5um
+5sev
+sev3en
+sew4i
+5sex
+4s3f
+2s3g
+s2h
+2sh.
+sh1er
+5shev
+sh1in
+sh3io
+3ship
+shiv5
+sho4
+sh5old
+shon3
+shor4
+short5
+4shw
+si1b
+s5icc
+3side.
+5sides
+5sidi
+si5diz
+4signa
+sil4e
+4sily
+2s1in
+s2ina
+5sine.
+s3ing
+1sio
+5sion
+sion5a
+si2r
+sir5a
+1sis
+3sitio
+5siu
+1siv
+5siz
+sk2
+4ske
+s3ket
+sk5ine
+sk5ing
+s1l2
+s3lat
+s2le
+slith5
+2s1m
+s3ma
+small3
+sman3
+smel4
+s5men
+5smith
+smol5d4
+s1n4
+1so
+so4ce
+soft3
+so4lab
+sol3d2
+so3lic
+5solv
+3som
+3s4on.
+sona4
+son4g
+s4op
+5sophic
+s5ophiz
+s5ophy
+sor5c
+sor5d
+4sov
+so5vi
+2spa
+5spai
+spa4n
+spen4d
+2s5peo
+2sper
+s2phe
+3spher
+spho5
+spil4
+sp5ing
+4spio
+s4ply
+s4pon
+spor4
+4spot
+squal4l
+s1r
+2ss
+s1sa
+ssas3
+s2s5c
+s3sel
+s5seng
+s4ses.
+s5set
+s1si
+s4sie
+ssi4er
+ss5ily
+s4sl
+ss4li
+s4sn
+sspend4
+ss2t
+ssur5a
+ss5w
+2st.
+s2tag
+s2tal
+stam4i
+5stand
+s4ta4p
+5stat.
+s4ted
+stern5i
+s5tero
+ste2w
+stew5a
+s3the
+st2i
+s4ti.
+s5tia
+s1tic
+5stick
+s4tie
+s3tif
+st3ing
+5stir
+s1tle
+5stock
+stom3a
+5stone
+s4top
+3store
+st4r
+s4trad
+5stratu
+s4tray
+s4trid
+4stry
+4st3w
+s2ty
+1su
+su1al
+su4b3
+su2g3
+su5is
+suit3
+s4ul
+su2m
+sum3i
+su2n
+su2r
+4sv
+sw2
+4swo
+s4y
+4syc
+3syl
+syn5o
+sy5rin
+1ta
+3ta.
+2tab
+ta5bles
+5taboliz
+4taci
+ta5do
+4taf4
+tai5lo
+ta2l
+ta5la
+tal5en
+tal3i
+4talk
+tal4lis
+ta5log
+ta5mo
+tan4de
+tanta3
+ta5per
+ta5pl
+tar4a
+4tarc
+4tare
+ta3riz
+tas4e
+ta5sy
+4tatic
+ta4tur
+taun4
+tav4
+2taw
+tax4is
+2t1b
+4tc
+t4ch
+tch5et
+4t1d
+4te.
+tead4i
+4teat
+tece4
+5tect
+2t1ed
+te5di
+1tee
+teg4
+te5ger
+te5gi
+3tel.
+teli4
+5tels
+te2ma2
+tem3at
+3tenan
+3tenc
+3tend
+4tenes
+1tent
+ten4tag
+1teo
+te4p
+te5pe
+ter3c
+5ter3d
+1teri
+ter5ies
+ter3is
+teri5za
+5ternit
+ter5v
+4tes.
+4tess
+t3ess.
+teth5e
+3teu
+3tex
+4tey
+2t1f
+4t1g
+2th.
+than4
+th2e
+4thea
+th3eas
+the5at
+the3is
+3thet
+th5ic.
+th5ica
+4thil
+5think
+4thl
+th5ode
+5thodic
+4thoo
+thor5it
+tho5riz
+2ths
+1tia
+ti4ab
+ti4ato
+2ti2b
+4tick
+t4ico
+t4ic1u
+5tidi
+3tien
+tif2
+ti5fy
+2tig
+5tigu
+till5in
+1tim
+4timp
+tim5ul
+2t1in
+t2ina
+3tine.
+3tini
+1tio
+ti5oc
+tion5ee
+5tiq
+ti3sa
+3tise
+tis4m
+ti5so
+tis4p
+5tistica
+ti3tl
+ti4u
+1tiv
+tiv4a
+1tiz
+ti3za
+ti3zen
+2tl
+t5la
+tlan4
+3tle.
+3tled
+3tles.
+t5let.
+t5lo
+4t1m
+tme4
+2t1n2
+1to
+to3b
+to5crat
+4todo
+2tof
+to2gr
+to5ic
+to2ma
+tom4b
+to3my
+ton4ali
+to3nat
+4tono
+4tony
+to2ra
+to3rie
+tor5iz
+tos2
+5tour
+4tout
+to3war
+4t1p
+1tra
+tra3b
+tra5ch
+traci4
+trac4it
+trac4te
+tras4
+tra5ven
+trav5es5
+tre5f
+tre4m
+trem5i
+5tria
+tri5ces
+5tricia
+4trics
+2trim
+tri4v
+tro5mi
+tron5i
+4trony
+tro5phe
+tro3sp
+tro3v
+tru5i
+trus4
+4t1s2
+t4sc
+tsh4
+t4sw
+4t3t2
+t4tes
+t5to
+ttu4
+1tu
+tu1a
+tu3ar
+tu4bi
+tud2
+4tue
+4tuf4
+5tu3i
+3tum
+tu4nis
+2t3up.
+3ture
+5turi
+tur3is
+tur5o
+tu5ry
+3tus
+4tv
+tw4
+4t1wa
+twis4
+4two
+1ty
+4tya
+2tyl
+type3
+ty5ph
+4tz
+tz4e
+4uab
+uac4
+ua5na
+uan4i
+uar5ant
+uar2d
+uar3i
+uar3t
+u1at
+uav4
+ub4e
+u4bel
+u3ber
+u4bero
+u1b4i
+u4b5ing
+u3ble.
+u3ca
+uci4b
+uc4it
+ucle3
+u3cr
+u3cu
+u4cy
+ud5d
+ud3er
+ud5est
+udev4
+u1dic
+ud3ied
+ud3ies
+ud5is
+u5dit
+u4don
+ud4si
+u4du
+u4ene
+uens4
+uen4te
+uer4il
+3ufa
+u3fl
+ugh3en
+ug5in
+2ui2
+uil5iz
+ui4n
+u1ing
+uir4m
+uita4
+uiv3
+uiv4er.
+u5j
+4uk
+u1la
+ula5b
+u5lati
+ulch4
+5ulche
+ul3der
+ul4e
+u1len
+ul4gi
+ul2i
+u5lia
+ul3ing
+ul5ish
+ul4lar
+ul4li4b
+ul4lis
+4ul3m
+u1l4o
+4uls
+uls5es
+ul1ti
+ultra3
+4ultu
+u3lu
+ul5ul
+ul5v
+um5ab
+um4bi
+um4bly
+u1mi
+u4m3ing
+umor5o
+um2p
+unat4
+u2ne
+un4er
+u1ni
+un4im
+u2nin
+un5ish
+uni3v
+un3s4
+un4sw
+unt3ab
+un4ter.
+un4tes
+unu4
+un5y
+un5z
+u4ors
+u5os
+u1ou
+u1pe
+uper5s
+u5pia
+up3ing
+u3pl
+up3p
+upport5
+upt5ib
+uptu4
+u1ra
+4ura.
+u4rag
+u4ras
+ur4be
+urc4
+ur1d
+ure5at
+ur4fer
+ur4fr
+u3rif
+uri4fic
+ur1in
+u3rio
+u1rit
+ur3iz
+ur2l
+url5ing.
+ur4no
+uros4
+ur4pe
+ur4pi
+urs5er
+ur5tes
+ur3the
+urti4
+ur4tie
+u3ru
+2us
+u5sad
+u5san
+us4ap
+usc2
+us3ci
+use5a
+u5sia
+u3sic
+us4lin
+us1p
+us5sl
+us5tere
+us1tr
+u2su
+usur4
+uta4b
+u3tat
+4ute.
+4utel
+4uten
+uten4i
+4u1t2i
+uti5liz
+u3tine
+ut3ing
+ution5a
+u4tis
+5u5tiz
+u4t1l
+ut5of
+uto5g
+uto5matic
+u5ton
+u4tou
+uts4
+u3u
+uu4m
+u1v2
+uxu3
+uz4e
+1va
+5va.
+2v1a4b
+vac5il
+vac3u
+vag4
+va4ge
+va5lie
+val5o
+val1u
+va5mo
+va5niz
+va5pi
+var5ied
+3vat
+4ve.
+4ved
+veg3
+v3el.
+vel3li
+ve4lo
+v4ely
+ven3om
+v5enue
+v4erd
+5vere.
+v4erel
+v3eren
+ver5enc
+v4eres
+ver3ie
+vermi4n
+3verse
+ver3th
+v4e2s
+4ves.
+ves4te
+ve4te
+vet3er
+ve4ty
+vi5ali
+5vian
+5vide.
+5vided
+4v3iden
+5vides
+5vidi
+v3if
+vi5gn
+vik4
+2vil
+5vilit
+v3i3liz
+v1in
+4vi4na
+v2inc
+vin5d
+4ving
+vio3l
+v3io4r
+vi1ou
+vi4p
+vi5ro
+vis3it
+vi3so
+vi3su
+4viti
+vit3r
+4vity
+3viv
+5vo.
+voi4
+3vok
+vo4la
+v5ole
+5volt
+3volv
+vom5i
+vor5ab
+vori4
+vo4ry
+vo4ta
+4votee
+4vv4
+v4y
+w5abl
+2wac
+wa5ger
+wag5o
+wait5
+w5al.
+wam4
+war4t
+was4t
+wa1te
+wa5ver
+w1b
+wea5rie
+weath3
+wed4n
+weet3
+wee5v
+wel4l
+w1er
+west3
+w3ev
+whi4
+wi2
+wil2
+will5in
+win4de
+win4g
+wir4
+3wise
+with3
+wiz5
+w4k
+wl4es
+wl3in
+w4no
+1wo2
+wom1
+wo5ven
+w5p
+wra4
+wri4
+writa4
+w3sh
+ws4l
+ws4pe
+w5s4t
+4wt
+wy4
+x1a
+xac5e
+x4ago
+xam3
+x4ap
+xas5
+x3c2
+x1e
+xe4cuto
+x2ed
+xer4i
+xe5ro
+x1h
+xhi2
+xhil5
+xhu4
+x3i
+xi5a
+xi5c
+xi5di
+x4ime
+xi5miz
+x3o
+x4ob
+x3p
+xpan4d
+xpecto5
+xpe3d
+x1t2
+x3ti
+x1u
+xu3a
+xx4
+y5ac
+3yar4
+y5at
+y1b
+y1c
+y2ce
+yc5er
+y3ch
+ych4e
+ycom4
+ycot4
+y1d
+y5ee
+y1er
+y4erf
+yes4
+ye4t
+y5gi
+4y3h
+y1i
+y3la
+ylla5bl
+y3lo
+y5lu
+ymbol5
+yme4
+ympa3
+yn3chr
+yn5d
+yn5g
+yn5ic
+5ynx
+y1o4
+yo5d
+y4o5g
+yom4
+yo5net
+y4ons
+y4os
+y4ped
+yper5
+yp3i
+y3po
+y4poc
+yp2ta
+y5pu
+yra5m
+yr5ia
+y3ro
+yr4r
+ys4c
+y3s2e
+ys3ica
+ys3io
+3ysis
+y4so
+yss4
+ys1t
+ys3ta
+ysur4
+y3thin
+yt3ic
+y1w
+za1
+z5a2b
+zar2
+4zb
+2ze
+ze4n
+ze4p
+z1er
+ze3ro
+zet4
+2z1i
+z4il
+z4is
+5zl
+4zm
+1zo
+zo4m
+zo5ol
+zte4
+4z1z2
+z4zy
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-es.hyp b/Master/texmf-dist/tex/context/patterns/lang-es.hyp
new file mode 100644
index 00000000000..52657280b89
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-es.hyp
@@ -0,0 +1,32 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: eshyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='es'>
+% <sourcefile>eshyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Spanish language</title>
+% <copyright>
+% <year>1993</year>
+% <owner>Francesc Carmona (franc@porthos.bio.ub.es)</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+no-s-o-tros
+vo-s-o-tros
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-es.pat b/Master/texmf-dist/tex/context/patterns/lang-es.pat
new file mode 100644
index 00000000000..52c2f3b3a9b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-es.pat
@@ -0,0 +1,608 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: eshyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='es'>
+% <sourcefile>eshyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Spanish language</title>
+% <copyright>
+% <year>1993</year>
+% <owner>Francesc Carmona (franc@porthos.bio.ub.es)</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+1ba
+1be
+1bi
+1bo
+1bu
+1b[aacute]
+1b[eacute]
+1b[iacute]
+1b[oacute]
+1b[uacute]
+1ca
+1ce
+1ci
+1co
+1cu
+1c2h
+1c[aacute]
+1c[eacute]
+1c[iacute]
+1c[oacute]
+1c[uacute]
+1da
+1de
+1di
+1do
+1du
+1d[aacute]
+1d[eacute]
+1d[iacute]
+1d[oacute]
+1d[uacute]
+1fa
+1fe
+1fi
+1fo
+1fu
+1f[aacute]
+1f[eacute]
+1f[iacute]
+1f[oacute]
+1f[uacute]
+1ga
+1ge
+1gi
+1go
+1gu
+1g[aacute]
+1g[eacute]
+1g[iacute]
+1g[oacute]
+1g[uacute]
+1g[udiaeresis]
+1ha
+1he
+1hi
+1ho
+1hu
+1h[aacute]
+1h[eacute]
+1h[iacute]
+1h[oacute]
+1h[uacute]
+1ja
+1je
+1ji
+1jo
+1ju
+1j[aacute]
+1j[eacute]
+1j[iacute]
+1j[oacute]
+1j[uacute]
+1ka
+1ke
+1ki
+1ko
+1ku
+1k[aacute]
+1k[eacute]
+1k[iacute]
+1k[oacute]
+1k[uacute]
+1la
+1le
+1li
+1lo
+1lu
+1l2l
+1l[aacute]
+1l[eacute]
+1l[iacute]
+1l[oacute]
+1l[uacute]
+1ma
+1me
+1mi
+1mo
+1mu
+1m[aacute]
+1m[eacute]
+1m[iacute]
+1m[oacute]
+1m[uacute]
+1na
+1ne
+1ni
+1no
+1nu
+1n[aacute]
+1n[eacute]
+1n[iacute]
+1n[oacute]
+1n[uacute]
+1[ntilde]a
+1[ntilde]e
+1[ntilde]i
+1[ntilde]o
+1[ntilde]u
+1[ntilde][aacute]
+1[ntilde][eacute]
+1[ntilde][iacute]
+1[ntilde][oacute]
+1[ntilde][uacute]
+1pa
+1pe
+1pi
+1po
+1pu
+1p[aacute]
+1p[eacute]
+1p[iacute]
+1p[oacute]
+1p[uacute]
+1qu
+1ra
+1re
+1ri
+1ro
+1ru
+r2r
+1r[aacute]
+1r[eacute]
+1r[iacute]
+1r[oacute]
+1r[uacute]
+1sa
+1se
+1si
+1so
+1su
+1s[aacute]
+1s[eacute]
+1s[iacute]
+1s[oacute]
+1s[uacute]
+1ta
+1te
+1ti
+1to
+1tu
+1t[aacute]
+1t[eacute]
+1t[iacute]
+1t[oacute]
+1t[uacute]
+1va
+1ve
+1vi
+1vo
+1vu
+1v[aacute]
+1v[eacute]
+1v[iacute]
+1v[oacute]
+1v[uacute]
+1wa
+1we
+1wi
+1wo
+1wu
+1w[aacute]
+1w[eacute]
+1w[iacute]
+1w[oacute]
+1w[uacute]
+1xa
+1xe
+1xi
+1xo
+1xu
+1x[aacute]
+1x[eacute]
+1x[iacute]
+1x[oacute]
+1x[uacute]
+1ya
+1ye
+1yi
+1yo
+1yu
+1y[aacute]
+1y[eacute]
+1y[iacute]
+1y[oacute]
+1y[uacute]
+1za
+1ze
+1zi
+1zo
+1zu
+1z[aacute]
+1z[eacute]
+1z[iacute]
+1z[oacute]
+1z[uacute]
+1b2l
+1c2l
+1f2l
+1g2l
+1p2l
+1tl
+1b2r
+1c2r
+1d2r
+1f2r
+1g2r
+1p2r
+1t2r
+.ae2
+.ai2
+.ao2
+.au2
+.ante1a
+.ante1i
+.ante1o
+.anti1a
+.anti1e
+.anti1i
+.anti1ox
+.auto1
+.auto2ct
+.auto2ps
+.bi1anual
+.bi1aur
+.bien1and
+.bien1apa
+.bien1ave
+.bien1est
+.bien1int
+.bi1ox
+.bi1[oacute]x
+.bi1un
+.co1adm
+.co1adq
+.co1agent
+.co1am
+.co1ap[oacute]s
+.co1arr
+.co1aut
+.co1ed
+.co1ef
+.co1esp
+.co1ex
+.co1inquil
+.contra1a
+.contra1ind
+.des1abar
+.des1acat
+.des1acel
+.des1acer
+.des1aco
+.des1acred
+.des1afi
+.des2afic
+.des2afil
+.des1afo
+.des2afort
+.des1afuc
+.des1agot
+.des1agrad
+.des1agreg
+.des1aguaz
+.des1aguis
+.des1ahij
+.des1ahog
+.des1ahu
+.des1air
+.des1aju
+.des1alab
+.des1alag
+.des1alin
+.des1aloj
+.des1alt
+.des1amabl
+.des1amart
+.des1amasad
+.des1ami
+.des1amold
+.des1amorr
+.des1amort
+.des1amot
+.des1amp
+.des1anc
+.des1andr
+.des1ani
+.des1anu
+.des1a[ntilde]u
+.des1aoj
+.des1apaci
+.des1apa[ntilde]
+.des1aparec
+.des1aparroq
+.des1apeg
+.des1apiol
+.des1aplac
+.des1apli
+.des1apose
+.des1apro
+.des1apt
+.des1apuest
+.des1apuntal
+.des1aq
+.des1arm
+.des1arr
+.des2arreboz
+.des2arrim
+.des2arrop
+.des2arrug
+.des1artill
+.des1aseg
+.des1asimil
+.des1asist
+.des1asn
+.des1atal
+.des1atanc
+.des1atap
+.des1atasc
+.des1atesad
+.des1atib
+.des1atin
+.des1atont
+.des1atra
+.des2atrac
+.des2atrav
+.des1atu
+.des1au
+.des1av
+.des2avec
+.des2avent
+.des1ayun
+.des1edi
+.des1ele
+.des1embal
+.des1embar
+.des1embe
+.des1emboc
+.des1emboj
+.des1embor
+.des1embot
+.des1embroz
+.des1empac
+.des2empach
+.des1empalag
+.des1emparv
+.des1empl
+.des1enast
+.des1encabestr
+.des1encalabr
+.des1encalc
+.des1encapri
+.des1encast
+.des1encen
+.des1enclavi
+.des1enga[ntilde]il
+.des1engarraf
+.des1enh
+.des1enmall
+.des1enmo
+.des1enmu
+.des1enq
+.des1enraz
+.des1ensa[ntilde]
+.des1ense[ntilde]
+.des1ental
+.des1entoll
+.des1entren
+.des1entrop
+.des1entum
+.des1envel
+.des1enven
+.des1envio
+.des1errad
+.des1esper
+.des2esperanz
+.des1igualez
+.des1iman
+.des2imant
+.des1incru
+.des1infe
+.des1ob
+.des1opil
+.des1orden
+.des1org
+.des1orient
+.des1os
+.des2oseg
+.des2osie
+.des1ov
+.des1oxi
+.des1un
+.des2unc
+.des2uno
+.des1urd
+.des1us
+.dis1artr
+.dis1osm
+.en1aceit
+.en1aciy
+.en1aguach
+.en1aguaz
+.en1anch
+.en1apa
+.en1arb
+.en1art
+.en2artr
+.en1ej
+.entre1a
+.entre1o
+.ex1abrup
+.gastro1en
+.gastro1in
+1g2nosis
+.hepta1e
+.hexa1e
+.hidro1a
+.hidro1e
+.hiper1e
+.hiper1[eacute]
+.hiper1o
+.ia2
+.io2
+.in1a
+.in2am
+.in2an
+.in3ana
+.in2au
+.in1edu
+.in1efi
+.in1eluc
+.in1em
+.in1eq
+.in1err
+.in1es
+.in1ex
+.in2exo
+.in1ig
+.in1ima
+.in1imi
+.in1in
+.in1ob
+.in1ocult
+.in1olv
+.in1oper
+.in1opor
+.in1ord
+.in1org
+.in1ox
+.in1usad
+.infra1e
+.infra1o
+.inter1a
+.inter1est
+.inter1ind
+.inter1ins
+.inter1o
+.inter1u
+.intra1o
+.intra1u
+.macro1e
+.mal1acon
+.mal1acos
+.mala1e
+.mal1andant
+.mal1andanz
+.mal1est
+.mal1int
+.micro1e
+.micro1o
+.neo1
+.neuro1e
+.norte1ame
+.oa2
+.oe2
+.oi2
+.octa1e
+.octa1[eacute]
+.oligo1e
+.pan1ame
+.pan1esl
+.pan1eur
+.pan1isl
+.pan1[oacute]pt
+1p2ter[iacute]neo
+.pluri1em
+.pre1ad
+.pre1[aacute]m
+.pre1e
+.pre1i
+.pre1opi
+.pre1u
+.proto1a
+1p2sico
+1p2siq
+.re1a
+.re2al
+.re3alc
+.re3aleg
+.re3alq
+.re3alz
+.re1e
+.re1im
+.re1inc
+.re1ing
+.re1ins
+.re1int
+.re1ob
+.re1oc
+.re1oj
+.re1org
+.re1unt
+.retro1a
+1s2copia
+.semi1aut
+.semi1e
+.semi1of
+.so1a
+.sobre1a
+.sobre1e
+.sobre1i
+.sub1a
+.sub1[aacute]
+.sub2ast
+.sub1ej
+.sub1en
+.sub1esp
+.sub1est
+.sub1[iacute]n
+.sub1insp
+.sub1inten
+.sub1of
+.sub1orden
+.sub1urban
+.su2b3ray
+.su2b3rei
+.su2b3rog
+.sud1afr
+.sud1ame
+.sud1est
+sud1oes
+.super1abund
+.super1int
+.sur1ame
+.sur1est
+.sur1oes
+.tele1imp
+.tele1obj
+.termo1e
+.termo1i
+.tetra1e
+.tras1a
+.tras1o
+.tras2o[ntilde]
+.tran2s1alp
+.tran2s1and
+.tran2s1atl
+.tran2s1oce
+.tran2s1ur
+.tri1[oacute]x
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-fi.hyp b/Master/texmf-dist/tex/context/patterns/lang-fi.hyp
new file mode 100644
index 00000000000..2caf8cc2522
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-fi.hyp
@@ -0,0 +1,45 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: fihyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='fi'>
+% <sourcefile>fihyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Finnish language</title>
+% <copyright>
+% <year>1986</year>
+% <owner>Kauko Saarinen</owner>
+% <comment>First release</comment>
+% </copyright>
+% <copyright>
+% <year>1988</year>
+% <owner>Fred Karlsson</owner>
+% <comment>Completely rewritten patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1989</year>
+% <owner>Fred Karlsson</owner>
+% <comment>Some vowel tripples added</comment>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Thomas Esser</owner>
+% <comment>Added \uccode and \lccode </comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-fi.pat b/Master/texmf-dist/tex/context/patterns/lang-fi.pat
new file mode 100644
index 00000000000..7753a4baf50
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-fi.pat
@@ -0,0 +1,332 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: fihyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='fi'>
+% <sourcefile>fihyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Finnish language</title>
+% <copyright>
+% <year>1986</year>
+% <owner>Kauko Saarinen</owner>
+% <comment>First release</comment>
+% </copyright>
+% <copyright>
+% <year>1988</year>
+% <owner>Fred Karlsson</owner>
+% <comment>Completely rewritten patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1989</year>
+% <owner>Fred Karlsson</owner>
+% <comment>Some vowel tripples added</comment>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Thomas Esser</owner>
+% <comment>Added \uccode and \lccode </comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+1ba
+1be
+1bi
+1bo
+1bu
+1by
+1da
+1de
+1di
+1do
+1du
+1dy
+1d[adiaeresis]
+1d[odiaeresis]
+1fa
+1fe
+1fi
+1fo
+1fu
+1fy
+1ga
+1ge
+1gi
+1go
+1gu
+1gy
+1g[adiaeresis]
+1g[odiaeresis]
+1ha
+1he
+1hi
+1ho
+1hu
+1hy
+1h[adiaeresis]
+1h[odiaeresis]
+1ja
+1je
+1ji
+1jo
+1ju
+1jy
+1j[adiaeresis]
+1j[odiaeresis]
+1ka
+1ke
+1ki
+1ko
+1ku
+1ky
+1k[adiaeresis]
+1k[odiaeresis]
+1la
+1le
+1li
+1lo
+1lu
+1ly
+1l[adiaeresis]
+1l[odiaeresis]
+1ma
+1me
+1mi
+1mo
+1mu
+1my
+1m[adiaeresis]
+1m[odiaeresis]
+1na
+1ne
+1ni
+1no
+1nu
+1ny
+1n[adiaeresis]
+1n[odiaeresis]
+1pa
+1pe
+1pi
+1po
+1pu
+1py
+1p[adiaeresis]
+1p[odiaeresis]
+1ra
+1re
+1ri
+1ro
+1ru
+1ry
+1r[adiaeresis]
+1r[odiaeresis]
+1sa
+1se
+1si
+1so
+1su
+1sy
+1s[adiaeresis]
+1s[odiaeresis]
+1ta
+1te
+1ti
+1to
+1tu
+1ty
+1t[adiaeresis]
+1t[odiaeresis]
+1va
+1ve
+1vi
+1vo
+1vu
+1vy
+1v[adiaeresis]
+1v[odiaeresis]
+1st2r
+[adiaeresis]2y
+y1a2
+y1o2
+o1y
+[odiaeresis]2y
+u1y2
+y1u2
+[odiaeresis]3a2
+[odiaeresis]3o2
+[adiaeresis]3a2
+[adiaeresis]3o2
+[adiaeresis]1u2
+[odiaeresis]1u2
+a1[adiaeresis]
+a1[odiaeresis]
+o1[adiaeresis]
+o1[odiaeresis]
+u1[adiaeresis]2
+u1[odiaeresis]2
+[adiaeresis]2[adiaeresis]
+[odiaeresis]2[odiaeresis]
+[adiaeresis]2[odiaeresis]
+[odiaeresis]2[adiaeresis]
+aa1i2
+aa1e2
+aa1o2
+aa1u2
+ee1a2
+ee1i2
+ee1u2
+ee1y2
+ii1a2
+ii1e2
+ii1o2
+uu1a2
+uu1e2
+uu1o2
+uu1i2
+e1aa
+i1aa
+o1aa
+u1aa
+u1ee
+a1uu
+i1uu
+e1uu
+o1uu
+[adiaeresis][adiaeresis]1i
+[adiaeresis][adiaeresis]1e
+[adiaeresis][adiaeresis]3y
+i1[adiaeresis][adiaeresis]
+e1[adiaeresis][adiaeresis]
+y1[adiaeresis][adiaeresis]
+i1[odiaeresis][odiaeresis]
+a1ei
+a1oi
+e1ai
+i1au
+y1ei
+ai1a
+ai1e
+ai1o
+ai1u
+au1a
+au1e
+eu1a
+ie1a
+ie1o
+ie1y
+io1a2
+io1e2
+iu1a
+iu1e
+iu1o
+oi1a
+oi1e
+oi1o
+oi1u
+o1ui
+ou1e
+ou1o
+ue1a
+ui1e
+uo1a
+uo1u
+e1[odiaeresis]2
+[odiaeresis]1e2
+.[adiaeresis]2
+u2s
+yli1o2p
+ali1a2v
+1sp2li
+alous1
+keus1
+rtaus1
+2s1ohje
+2s1a2sia
+1a2sian
+1a2siat
+1a2sioi
+r2as
+l2as
+2s1o2pisk
+2n1o2pet
+2s1a2loi
+2n1o2pist
+2s1o2pist
+2s1o2sa
+2n1o2sa
+alkei2s1
+perus1
+2s1i2dea.
+2s1i2dean
+2s1e2sity
+2n1e2dus
+2s1ajatu
+2s1ase
+2s1apu
+2s1y2rit
+.ydi2n1
+.suu2r1a2
+2s1y2hti
+2n1otto
+2n1oton
+2n1anto
+2n1anno
+2n1a2jan
+2n1aika
+2n1o2mai
+2n1y2lit
+2s1a2len
+2n1a2len
+1a2siaka2s1
+ulo2s1
+2n1a2jo
+2s1a2jo
+b2l
+1b2lo
+bib3li
+b2r
+1b2ri
+1b2ro
+1b2ru
+d2r
+1d2ra
+f2l
+1f2la
+f2r
+1f2ra
+1f2re
+g2l
+1g2lo
+g2r
+1g2ra
+k2l
+1k2ra
+1k2re
+1k2ri
+1k2v
+1k2va
+p2l
+p2r
+1p2ro
+c2l
+q2v
+1q2vi
+sc2h
+ts2h
+ch2r
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-fr.hyp b/Master/texmf-dist/tex/context/patterns/lang-fr.hyp
new file mode 100644
index 00000000000..7afc597f07e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-fr.hyp
@@ -0,0 +1,34 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: frhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='fr'>
+% <sourcefile>frhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the French language</title>
+% <remarks>V2.11</remarks>
+% <copyright>
+% <owner>Jacques Desarmenien, Norman Buckle, Michael Ferguson, Justin Bur, Daniel Flipo and Bernard Gaulle</owner>
+% </copyright>
+% <copyright>
+% <year>1996</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Adaption for TeX 3.x and MLTeX 3.x (2.x)</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-fr.pat b/Master/texmf-dist/tex/context/patterns/lang-fr.pat
new file mode 100644
index 00000000000..0486639152b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-fr.pat
@@ -0,0 +1,1181 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: frhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='fr'>
+% <sourcefile>frhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the French language</title>
+% <remarks>V2.11</remarks>
+% <copyright>
+% <owner>Jacques Desarmenien, Norman Buckle, Michael Ferguson, Justin Bur, Daniel Flipo and Bernard Gaulle</owner>
+% </copyright>
+% <copyright>
+% <year>1996</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Adaption for TeX 3.x and MLTeX 3.x (2.x)</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+2'2
+.a4
+'a4
+.[acircumflex]4
+'[acircumflex]4
+ab2h
+.ab3r[eacute]a
+'ab3r[eacute]a
+ad2h
+a1[egrave]2dre
+.ae3s4ch
+'ae3s4ch
+1alcool
+a2l1algi
+.amino1a2c
+'amino1a2c
+.ana3s4tr
+'ana3s4tr
+1a2nesth[eacute]si
+.anti1a2
+'anti1a2
+.anti1e2
+'anti1e2
+.anti1[eacute]2
+.anti2enne
+'anti2enne
+'anti1[eacute]2
+.anti1s2
+'anti1s2
+.apo2s3ta
+'apo2s3ta
+apo2s3tr
+archi1[eacute]2pis
+.as2ta
+'as2ta
+a2s3tro
+1ba
+1b[acircumflex]
+.bai2se3main
+1be
+1b[eacute]
+1b[egrave]
+1b[ecircumflex]
+4be.
+4bes.
+2bent.
+1bi
+1b[icircumflex]
+.bi1a2c
+.bi1a2t
+.bi1au
+.bio1a2
+.bi2s1a2
+.bi1u2
+1b2l
+4ble.
+4bles.
+2blent.
+1bo
+1b[ocircumflex]
+1b2r
+4bre.
+4bres.
+2brent.
+1bu
+1b[ucircumflex]
+1by
+1[ccedilla]
+1ca
+1c[acircumflex]
+ca3ou3t2
+1ce
+1c[eacute]
+1c[egrave]
+1c[ecircumflex]
+4ce.
+4ces.
+2cent.
+ja3cent.
+ac3cent.
+[eacute]3cent.
+munifi3cent.
+r[eacute]ti3cent.
+privatdo3cent.
+inno3cent.
+es3cent.
+acquies4cent.
+is3cent.
+immis4cent.
+.ch4
+1c2h
+4ch.
+2chb
+4che.
+4ches.
+2chent.
+.ch[egrave]2vre3feuille
+2chg
+ch2l
+4chle.
+4chles.
+chlo2r3a2c
+chlo2r3[eacute]2t
+2chm
+2chn
+2chp
+ch2r
+4chre.
+4chres.
+2chs
+2cht
+2chw
+1ci
+1c[icircumflex]
+.ci2s1alp
+1c2k
+4ck.
+2ckb
+4cke.
+4ckes.
+2ckent.
+2ckf
+2ckg
+2ck3h
+2ckp
+2cks
+2ckt
+1c2l
+4cle.
+4cles.
+2clent.
+1co
+1c[ocircumflex]
+co1acc
+co1acq
+co1a2d
+co1ap
+co1ar
+co1assoc
+co1assur
+co1au
+co1ax
+1c[odiaeresis]0
+1c[odiaeresis]OT
+co1[eacute]2
+co1ef
+co1en
+co1ex
+.con4
+.cons4
+.contre1s2c
+.contre3ma[icircumflex]tre
+co2nurb
+.co1o2
+.co2o3lie
+1c2r
+4cre.
+4cres.
+2crent.
+1cu
+1c[ucircumflex]
+1cy
+.cul4
+1d'
+1da
+1d[acircumflex]
+.dacryo1a2
+d1d2h
+1de
+1d[eacute]
+1d[egrave]
+1d[ecircumflex]
+4de.
+4des.
+2dent.
+d[eacute]ca3dent.
+[eacute]3dent.
+cci3dent.
+inci3dent.
+confi3dent.
+tri3dent.
+dissi3dent.
+chien3dent.
+.ar3dent.
+impu3dent.
+pru3dent.
+.d[eacute]1a2
+.d[eacute]1io
+.d[eacute]1o2
+.d[eacute]2s
+.d[eacute]3s2a3cr
+.d[eacute]s2a3m
+.d[eacute]3s2a3tell
+.d[eacute]3s2astr
+.d[eacute]3s2c
+.d[eacute]2s1[eacute]2
+.d[eacute]3s2[eacute]3gr
+.d[eacute]3s2ensib
+.d[eacute]3s2ert
+.d[eacute]3s2exu
+.d[eacute]2s1i2
+.d[eacute]3s2i3d
+.d[eacute]3s2i3gn
+.d[eacute]3s2i3li
+.d[eacute]3s2i3nen
+.d[eacute]3s2invo
+.d[eacute]3s2i3r
+.d[eacute]3s2ist
+.d[eacute]3s2o3d[eacute]
+.d[eacute]2s1[odiaeresis]0
+.d[eacute]2s1[odiaeresis]OT
+.d[eacute]3s2o3l
+.d[eacute]3s2o3pil
+.d[eacute]3s2orm
+.d[eacute]3s2orp
+.d[eacute]3s2oufr
+.d[eacute]3s2p
+.d[eacute]3s2t
+.d[eacute]2s1u2n
+3d2hal
+3d2houd
+1di
+1d[icircumflex]
+di2s3cop
+.di1a2c[eacute]
+.di1a2cid
+.di1ald
+.di1a2mi
+.di1a2tom
+.di1e2n
+.di2s3h
+2dlent.
+1do
+1d[ocircumflex]
+1d2r
+4dre.
+4dres.
+2drent.
+d1s2
+1du
+1d[ucircumflex]
+1dy
+.dy2s3
+.dy2s1a2
+.dy2s1i2
+.dy2s1o2
+.dy2s1u2
+.e4
+'e4
+.[ecircumflex]4
+'[ecircumflex]4
+.[eacute]4
+'[eacute]4
+.[egrave]4
+'[egrave]4
+[eacute]d2hi
+1[eacute]2drie
+1[eacute]2drique
+1[eacute]2lectr
+1[eacute]2l[eacute]ment
+.en1a2
+'en1a2
+1[eacute]2nerg
+e2n1i2vr
+.en1o2
+'en1o2
+[eacute]pi2s3cop
+[eacute]pi3s4cope
+e2s3cop
+.eu2r1a2
+'eu2r1a2
+eu1s2tat
+extra1
+extra2c
+extra2i
+1fa
+1f[acircumflex]
+1fe
+1f[eacute]
+1f[egrave]
+1f[ecircumflex]
+4fe.
+4fes.
+2fent.
+1fi
+1f[icircumflex]
+1f2l
+4fle.
+4fles.
+2flent.
+1fo
+1f[ocircumflex]
+1f2r
+4fre.
+4fres.
+2frent.
+f1s2
+1fu
+1f[ucircumflex]
+1fy
+1ga
+1g[acircumflex]
+1ge
+1g[eacute]
+1g[egrave]
+1g[ecircumflex]
+4ge.
+4ges.
+2gent.
+r[eacute]3gent.
+entre3gent.
+indi3gent.
+dili3gent.
+intelli3gent.
+indul3gent.
+tan3gent.
+rin3gent.
+contin3gent.
+.ar3gent.
+'ar3gent.
+ser3gent.
+ter3gent.
+r[eacute]sur3gent.
+1g2ha
+1g2he
+1g2hi
+1g2ho
+1g2hy
+1gi
+1g[icircumflex]
+1g2l
+4gle.
+4gles.
+2glent.
+1g2n
+'a2g3nat
+.a2g3nat
+a2g3nos
+co2g3niti
+'i2g3n[eacute]
+.i2g3n[eacute]
+'i2g3ni
+.i2g3ni
+.ma2g3nicide
+.ma2g3nificat
+.ma2g3num
+o2g3nomoni
+o2g3nosi
+.pro2g3nath
+pu2g3nable
+pu2g3nac
+.sta2g3n
+.syn2g3nath
+wa2g3n
+4gne.
+4gnes.
+2gnent.
+1go
+1g[ocircumflex]
+1g2r
+4gre.
+4gres.
+2grent.
+1gu
+1g[ucircumflex]
+g1s2
+4gue.
+4gues.
+2guent.
+.on3guent.
+'on3guent.
+1gy
+1ha
+1h[acircumflex]
+1he
+1h[eacute]
+1h[egrave]
+1h[ecircumflex]
+h[eacute]mi1[eacute]
+h[eacute]mo1p2t
+4he.
+4hes.
+1hi
+1h[icircumflex]
+1ho
+1h[ocircumflex]
+1hu
+1h[ucircumflex]
+1hy
+hypera2
+hypere2
+hyper[eacute]2
+hyperi2
+hypero2
+hypers2
+hype4r1
+hyperu2
+hypo1a2
+hypo1e2
+hypo1[eacute]2
+hypo1i2
+hypo1o2
+hypo1s2
+hypo1u2
+.i4
+'i4
+.[icircumflex]4
+'[icircumflex]4
+i1algi
+i1arthr
+i1[egrave]2dre
+il2l
+cil3l
+rcil4l
+ucil4l
+vacil4l
+gil3l
+hil3l
+lil3l
+l3lion
+mil3l
+mil4let
+[eacute]mil4l
+semil4l
+rmil4l
+armil5l
+capil3l
+papil3la
+papil3le
+papil3li
+papil3lom
+pupil3l
+piril3l
+thril3l
+cyril3l
+ibril3l
+pusil3l
+.stil3l
+distil3l
+instil3l
+fritil3l
+boutil3l
+vanil3lin
+vanil3lis
+vil3l
+avil4l
+chevil4l
+uevil4l
+uvil4l
+xil3l
+1informat
+.in1a2
+'in1a2
+.in2a3nit
+'in2a3nit
+.in2augur
+'in2augur
+.in1e2
+'in1e2
+.in1[eacute]2
+'in1[eacute]2
+.in2effab
+'in2effab
+.in2[eacute]3lucta
+'in2[eacute]3lucta
+.in2[eacute]3narra
+'in2[eacute]3narra
+.in2ept
+'in2ept
+.in2er
+'in2er
+.in2exora
+'in2exora
+.in1i2
+'in1i2
+.in2i3miti
+'in2i3miti
+.in2i3q
+'in2i3q
+.in2i3t
+'in2i3t
+.in1o2
+'in1o2
+.in2o3cul
+'in2o3cul
+.in2ond
+'in2ond
+.in1s2tab
+'in1s2tab
+'inte4r3
+.intera2
+'intera2
+.intere2
+'intere2
+.inter[eacute]2
+'inter[eacute]2
+.interi2
+'interi2
+.intero2
+'intero2
+.inte4r3
+.interu2
+'interu2
+.inters2
+'inters2
+.in1u2
+'in1u2
+.in2uit
+'in2uit
+.in2u3l
+'in2u3l
+io1a2ct
+i1oxy
+i1s2tat
+1j
+2jk
+4je.
+4jes.
+2jent.
+1ka
+1k[acircumflex]
+1ke
+1k[eacute]
+1k[egrave]
+1k[ecircumflex]
+4ke.
+4kes.
+2kent.
+1k2h
+4kh.
+.kh4
+1ki
+1k[icircumflex]
+1ko
+1k[ocircumflex]
+1k2r
+1ku
+1k[ucircumflex]
+1ky
+1la
+1l[acircumflex]
+1l[agrave]
+la2w3re
+1le
+1l[eacute]
+1l[egrave]
+1l[ecircumflex]
+4le.
+4les.
+2lent.
+.ta3lent.
+iva3lent.
+[eacute]quiva4lent.
+monova3lent.
+polyva3lent.
+re3lent.
+.do3lent.
+indo3lent.
+inso3lent.
+turbu3lent.
+succu3lent.
+f[eacute]cu3lent.
+trucu3lent.
+opu3lent.
+corpu3lent.
+ru3lent.
+sporu4lent.
+1li
+1l[icircumflex]
+1lo
+1l[ocircumflex]
+l1s2t
+1lu
+1l[ucircumflex]
+1ly
+1ma
+1m[acircumflex]
+.ma2c3k
+.macro1s2c
+.ma2l1a2dres
+.ma2l1a2dro
+.ma2l1ais[eacute]
+.ma2l1ap
+.ma2l1a2v
+.ma2l1en
+.ma2l1int
+.ma2l1oc
+.ma2l1o2d
+.ma2r1x
+1me
+1m[eacute]
+1m[egrave]
+1m[ecircumflex]
+.m[eacute]2g1oh
+.m[eacute]2sa
+.m[eacute]3san
+.m[eacute]2s1es
+.m[eacute]2s1i
+.m[eacute]2s1u2s
+.m[eacute]ta1s2ta
+4me.
+4mes.
+[acircumflex]2ment.
+da2ment.
+fa2ment.
+amalga2ment.
+cla2ment.
+ra2ment.
+temp[eacute]ra3ment.
+ta2ment.
+testa3ment.
+qua2ment.
+[egrave]2ment.
+car[ecircumflex]2ment.
+diaphrag2ment.
+ryth2ment.
+ai2ment.
+rai3ment.
+ab[icircumflex]2ment.
+[eacute]ci2ment.
+vidi2ment.
+subli2ment.
+[eacute]li2ment.
+reli2ment.
+mi2ment.
+ani2ment.
+veni2ment.
+ri2ment.
+d[eacute]tri3ment.
+nutri3ment.
+inti2ment.
+esti2ment.
+l2ment.
+flam2ment.
+gram2ment.
+.gem2ment.
+om2ment.
+.com3ment.
+[ocircumflex]2ment.
+slalo2ment.
+chro2ment.
+to2ment.
+ar2ment.
+.sar3ment.
+er2ment.
+antifer3ment.
+.ser3ment.
+fir2ment.
+or2ment.
+as2ment.
+au2ment.
+[eacute]cu2ment.
+fu2ment.
+hu2ment.
+fichu3ment.
+llu2ment.
+plu2ment.
+bou2ment.
+bru2ment.
+su2ment.
+tu2ment.
+1mi
+1m[icircumflex]
+.milli1am
+1m2n[eacute]mo
+1m2n[egrave]s
+1m2n[eacute]si
+1mo
+1m[ocircumflex]
+1m[odiaeresis]0
+1m[odiaeresis]OT
+.mono1a2
+.mono1e2
+.mono1[eacute]2
+.mono1i2
+.mono1[idiaeresis]2d[eacute]
+.mono1o2
+.mono1u2
+.mono1s2
+mon2t3r[eacute]al
+m1s2
+1mu
+1m[ucircumflex]
+1my
+moye2n1[acircumflex]2g
+1na
+1n[acircumflex]
+1ne
+1n[eacute]
+1n[egrave]
+1n[ecircumflex]
+4ne.
+4nes.
+2nent.
+r[eacute]ma3nent.
+imma3nent.
+perma3nent.
+.[eacute]mi3nent.
+pr[eacute][eacute]mi3nent.
+pro[eacute]mi3nent.
+sur[eacute]mi3nent.
+immi3nent.
+conti3nent.
+perti3nent.
+absti3nent.
+1ni
+1n[icircumflex]
+1no
+1n[ocircumflex]
+1n[odiaeresis]0
+1n[odiaeresis]OT
+.no2n1obs
+1nu
+1n[ucircumflex]
+n3s2at.
+n3s2ats.
+n1x
+1ny
+.o4
+'o4
+'[ocircumflex]4
+.[ocircumflex]4
+o2b3long
+1octet
+o1d2l
+o1[egrave]2dre
+o1ioni
+ombud2s3
+omni1s2
+o1s2tas
+o1s2tat
+o1s2t[eacute]ro
+o1s2tim
+o1s2tom
+o1s2trad
+o1s2tratu
+o1s2triction
+.oua1ou
+'oua1ou
+.ovi1s2c
+'ovi1s2c
+oxy1a2
+1pa
+1p[acircumflex]
+pal[eacute]o1[eacute]2
+.pa2n1a2f
+.pa2n1a2m[eacute]
+.pa2n1a2ra
+.pa2n1is
+.pa2n1o2ph
+.pa2n1opt
+.pa2r1a2che
+.pa2r1a2ch[egrave]
+.para1s2
+.pa2r3h[eacute]
+1pe
+1p[eacute]
+1p[egrave]
+1p[ecircumflex]
+4pe.
+4pes.
+2pent.
+re3pent.
+.ar3pent.
+'ar3pent.
+ser3pent.
+.pen2ta
+per3h
+p[eacute]2nul
+.pe4r
+.per1a2
+.per1e2
+.per1[eacute]2
+.per1i2
+.per1o2
+.per1u2
+p[eacute]1r2[eacute]2q
+.p[eacute]ri1os
+.p[eacute]ri1s2
+.p[eacute]ri2s3s
+.p[eacute]ri2s3ta
+.p[eacute]ri1u2
+1p2h
+.ph4
+4ph.
+.phalan3s2t
+4phe.
+4phes.
+2phent.
+ph2l
+4phle.
+4phles.
+2phn
+photo1s2
+ph2r
+4phre.
+4phres.
+2phs
+2pht
+3ph2tal[eacute]
+3ph2tis
+1pi
+1p[icircumflex]
+1p2l
+4ple.
+4ples.
+2plent.
+.pluri1a
+1p2n[eacute]
+1p2neu
+1po
+1p[ocircumflex]
+po1astre
+poly1a2
+poly1e2
+poly1[eacute]2
+poly1[egrave]2
+poly1i2
+poly1o2
+poly1s2
+poly1u2
+.pon2tet
+.pos2t3h
+.pos2t1in
+.pos2t1o2
+.pos2t3r
+.post1s2
+1p2r
+4pre.
+4pres.
+2prent.
+.pr[eacute]1a2
+.pr[eacute]2a3la
+.pr[eacute]2au
+.pr[eacute]1[eacute]2
+.pr[eacute]1e2
+.pr[eacute]1i2
+.pr[eacute]1o2
+.pr[eacute]1u2
+.pr[eacute]1s2
+.pro1[eacute]2
+.pro1s2c[eacute]
+pro2s3tat
+.prou3d2h
+1p2sych
+.psycho1a2n
+1p2t[egrave]r
+1p2t[eacute]r
+1pu
+.pud1d2l
+1p[ucircumflex]
+1py
+1q
+4que.
+4ques.
+2quent.
+[eacute]3quent.
+[eacute]lo3quent.
+grandilo3quent.
+1ra
+1r[acircumflex]
+radio1a2
+1re
+1r[eacute]
+1r[egrave]
+1r[ecircumflex]
+.r[eacute]1a2
+.r[eacute]2a3le
+.r[eacute]2a3lis
+.r[eacute]2a3lit
+.r[eacute]2aux
+.r[eacute]1[eacute]2
+.r[eacute]1e2
+.r[eacute]2el
+.r[eacute]2er
+.r[eacute]2[egrave]r
+.r[eacute]1i2
+.r[eacute]2i3fi
+.r[eacute]1o2
+.re1s2
+.re2s3cap
+.re2s3cisi
+.re2s3ciso
+.re2s3cou
+.re2s3cri
+.re2s3pect
+.re2s3pir
+.re2s3plend
+.re2s3pons
+.re2s3quil
+.re2s3s
+.re2s3t
+.re3s4tab
+.re3s4tag
+.re3s4tand
+.re3s4tat
+.re3s4t[eacute]n
+.re3s4t[eacute]r
+.re3s4tim
+.re3s4tip
+.re3s4toc
+.re3s4top
+.re3s4tr
+.re4s5trein
+.re4s5trict
+.re4s5trin
+.re3s4tu
+.re3s4ty
+.r[eacute]u2
+.r[eacute]2uss
+.r[eacute]tro1a2
+4re.
+4res.
+2rent.
+.pa3rent.
+appa3rent.
+transpa3rent.
+[eacute]3rent.
+tor3rent.
+cur3rent.
+1r2h
+4rhe.
+4rhes.
+2r3heur
+2r3hydr
+1ri
+1r[icircumflex]
+1ro
+1r[ocircumflex]
+1ru
+1r[ucircumflex]
+1ry
+1sa
+1s[acircumflex]
+.sch4
+1s2caph
+1s2cl[eacute]r
+1s2cop
+1s2ch
+e2s3ch
+i2s3ch[eacute]
+i2s3chia
+i2s3chio
+4sch.
+4sche.
+4sches.
+2schs
+1se
+1s[eacute]
+1s[egrave]
+1s[ecircumflex]
+sesqui1a2
+4se.
+4ses.
+2sent.
+ab3sent.
+pr[eacute]3sent.
+.res3sent.
+.seu2le
+.sh4
+1s2h
+4sh.
+4she.
+4shes.
+2shent.
+2shm
+2s3hom
+2shr
+2shs
+1si
+1s[icircumflex]
+1s2lav
+1s2lov
+1so
+1s[ocircumflex]
+1s[odiaeresis]0
+1s[odiaeresis]OT
+1s2patia
+1s2perm
+1s2por
+1s2ph[egrave]r
+1s2ph[eacute]r
+1s2piel
+1s2piros
+1s2tandard
+1s2tein
+st[eacute]r[eacute]o1s2
+1s2tigm
+1s2tock
+1s2tomos
+1s2troph
+1s2tructu
+1s2tyle
+1su
+1s[ucircumflex]
+.su2b1a2
+.su3b2alt
+.su2b1[eacute]2
+.su3b2[eacute]3r
+.su2b1in
+.su2b3limin
+.su2b3lin
+.su2b3lu
+sub1s2
+.su2b1ur
+supero2
+supe4r1
+supers2
+.su2r1a2
+su3r2ah
+.su3r2a3t
+.su2r1e2
+.su3r2eau
+.su3r2ell
+.su3r2et
+.su2r1[eacute]2
+.su2r3h
+.su2r1i2m
+.su2r1inf
+.su2r1int
+.su2r1of
+.su2r1ox
+1sy
+1ta
+1t[acircumflex]
+1t[agrave]
+tachy1a2
+tchin3t2
+1te
+1t[eacute]
+1t[egrave]
+1t[ecircumflex]
+t[eacute]l[eacute]1e2
+t[eacute]l[eacute]1i2
+t[eacute]l[eacute]1o2b
+t[eacute]l[eacute]1o2p
+t[eacute]l[eacute]1s2
+4te.
+4tes.
+2tent.
+.la3tent.
+.pa3tent.
+comp[eacute]3tent.
+[eacute]ni3tent.
+m[eacute]con3tent.
+omnipo3tent.
+ventripo3tent.
+[eacute]quipo3tent.
+impo3tent.
+mit3tent.
+.th4
+1t2h
+4th.
+4the.
+4thes.
+thermo1s2
+2t3heur
+2thl
+2thm
+2thn
+th2r
+4thre.
+4thres.
+2ths
+1ti
+1t[icircumflex]
+1to
+1t[ocircumflex]
+1t2r
+tran2s1a2
+tran3s2act
+tran3s2ats
+tran2s3h
+tran2s1o2
+tran2s3p
+tran2s1u2
+4tre.
+4tres.
+2trent.
+.tri1a2c
+.tri1a2n
+.tri1a2t
+.tri1o2n
+t1t2l
+1tu
+1t[ucircumflex]
+tung2s3
+1ty
+.u4
+'u4
+.[ucircumflex]4
+'[ucircumflex]4
+uni1o2v
+uni1a2x
+u2s3tr
+1va
+1v[acircumflex]
+1ve
+1v[eacute]
+1v[egrave]
+1v[ecircumflex]
+v[eacute]lo1s2ki
+4ve.
+4ves.
+2vent.
+conni3vent.
+.sou3vent.
+1vi
+1v[icircumflex]
+1vo
+1v[ocircumflex]
+vol2t1amp
+1v2r
+4vre.
+4vres.
+2vrent.
+1vu
+1v[ucircumflex]
+1vy
+1wa
+1we
+4we.
+4wes.
+2went.
+1wi
+1wo
+1wu
+1w2r
+2xent.
+.y4
+'y4
+y1asth
+y1s2tom
+y1algi
+1za
+1ze
+1z[eacute]
+1z[egrave]
+4ze.
+4zes.
+2zent.
+privatdo3zent.
+1zi
+1zo
+1zu
+1zy
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-hr.hyp b/Master/texmf-dist/tex/context/patterns/lang-hr.hyp
new file mode 100644
index 00000000000..598cc36400f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-hr.hyp
@@ -0,0 +1,29 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: hrhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='hr'>
+% <sourcefile> hrhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Croatian language</title>
+% <copyright>
+% <year>1994, 1996</year>
+% <owner>Marinovi\'c Igor (migor@student.math.hr)</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-hr.pat b/Master/texmf-dist/tex/context/patterns/lang-hr.pat
new file mode 100644
index 00000000000..6355a5a8d5c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-hr.pat
@@ -0,0 +1,1505 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: hrhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='hr'>
+% <sourcefile> hrhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Croatian language</title>
+% <copyright>
+% <year>1994, 1996</year>
+% <owner>Marinovi\'c Igor (migor@student.math.hr)</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+a1a2
+a1e2
+a1i2
+a1o2
+a1u2
+e1a2
+e1e2
+e1i2
+e1o2
+e1u2
+i1a2
+i1e2
+i1i2
+i1o2
+i1u2
+o1a2
+o1e2
+o1i2
+o1o2
+o1u2
+u1a2
+u1e2
+u1i2
+u1o2
+u1u2
+a1ba
+a1be
+a1bi
+a1bo
+a1bu
+a1ca
+a1ce
+a1ci
+a1co
+a1cu
+a1[ccaron]a
+a1[ccaron]e
+a1[ccaron]i
+a1[ccaron]o
+a1[ccaron]u
+a1[cacute]a
+a1[cacute]e
+a1[cacute]i
+a1[cacute]o
+a1[cacute]u
+a1da
+a1de
+a1di
+a1do
+a1du
+a1d[zcaron]a
+a1d[zcaron]e
+a1d[zcaron]i
+a1d[zcaron]o
+a1d[zcaron]u
+a1[dstroke]a
+a1[dstroke]e
+a1[dstroke]i
+a1[dstroke]o
+a1[dstroke]u
+a1fa
+a1fe
+a1fi
+a1fo
+a1fu
+a1ga
+a1ge
+a1gi
+a1go
+a1gu
+a1ha
+a1he
+a1hi
+a1ho
+a1hu
+a1ja
+a1je
+a1ji
+a1jo
+a1ju
+a1ka
+a1ke
+a1ki
+a1ko
+a1ku
+a1la
+a1le
+a1li
+a1lo
+a1lu
+a1lja
+a1lje
+a1lji
+a1ljo
+a1lju
+a1ma
+a1me
+a1mi
+a1mo
+a1mu
+a1na
+a1ne
+a1ni
+a1no
+a1nu
+a1nja
+a1nje
+a1nji
+a1njo
+a1nju
+a1pa
+a1pe
+a1pi
+a1po
+a1pu
+a1ra
+a1re
+a1ri
+a1ro
+a1ru
+a1sa
+a1se
+a1si
+a1so
+a1su
+a1[scaron]a
+a1[scaron]e
+a1[scaron]i
+a1[scaron]o
+a1[scaron]u
+a1ta
+a1te
+a1ti
+a1to
+a1tu
+a1va
+a1ve
+a1vi
+a1vo
+a1vu
+a1za
+a1ze
+a1zi
+a1zo
+a1zu
+a1[zcaron]a
+a1[zcaron]e
+a1[zcaron]i
+a1[zcaron]o
+a1[zcaron]u
+e1ba
+e1be
+e1bi
+e1bo
+e1bu
+e1ca
+e1ce
+e1ci
+e1co
+e1cu
+e1[ccaron]a
+e1[ccaron]e
+e1[ccaron]i
+e1[ccaron]o
+e1[ccaron]u
+e1[cacute]a
+e1[cacute]e
+e1[cacute]i
+e1[cacute]o
+e1[cacute]u
+e1da
+e1de
+e1di
+e1do
+e1du
+e1d[zcaron]a
+e1d[zcaron]e
+e1d[zcaron]i
+e1d[zcaron]o
+e1d[zcaron]u
+e1[dstroke]a
+e1[dstroke]e
+e1[dstroke]i
+e1[dstroke]o
+e1[dstroke]u
+e1fa
+e1fe
+e1fi
+e1fo
+e1fu
+e1ga
+e1ge
+e1gi
+e1go
+e1gu
+e1ha
+e1he
+e1hi
+e1ho
+e1hu
+e1ja
+e1je
+e1ji
+e1jo
+e1ju
+e1ka
+e1ke
+e1ki
+e1ko
+e1ku
+e1la
+e1le
+e1li
+e1lo
+e1lu
+e1lja
+e1lje
+e1lji
+e1ljo
+e1lju
+e1ma
+e1me
+e1mi
+e1mo
+e1mu
+e1na
+e1ne
+e1ni
+e1no
+e1nu
+e1nja
+e1nje
+e1nji
+e1njo
+e1nju
+e1pa
+e1pe
+e1pi
+e1po
+e1pu
+e1ra
+e1re
+e1ri
+e1ro
+e1ru
+e1sa
+e1se
+e1si
+e1so
+e1su
+e1[scaron]a
+e1[scaron]e
+e1[scaron]i
+e1[scaron]o
+e1[scaron]u
+e1ta
+e1te
+e1ti
+e1to
+e1tu
+e1va
+e1ve
+e1vi
+e1vo
+e1vu
+e1za
+e1ze
+e1zi
+e1zo
+e1zu
+e1[zcaron]a
+e1[zcaron]e
+e1[zcaron]i
+e1[zcaron]o
+e1[zcaron]u
+i1ba
+i1be
+i1bi
+i1bo
+i1bu
+i1ca
+i1ce
+i1ci
+i1co
+i1cu
+i1[ccaron]a
+i1[ccaron]e
+i1[ccaron]i
+i1[ccaron]o
+i1[ccaron]u
+i1[cacute]a
+i1[cacute]e
+i1[cacute]i
+i1[cacute]o
+i1[cacute]u
+i1da
+i1de
+i1di
+i1do
+i1du
+i1d[zcaron]a
+i1d[zcaron]e
+i1d[zcaron]i
+i1d[zcaron]o
+i1d[zcaron]u
+i1[dstroke]a
+i1[dstroke]e
+i1[dstroke]i
+i1[dstroke]o
+i1[dstroke]u
+i1fa
+i1fe
+i1fi
+i1fo
+i1fu
+i1ga
+i1ge
+i1gi
+i1go
+i1gu
+i1ha
+i1he
+i1hi
+i1ho
+i1hu
+i1ja
+i1je
+i1ji
+i1jo
+i1ju
+i1ka
+i1ke
+i1ki
+i1ko
+i1ku
+i1la
+i1le
+i1li
+i1lo
+i1lu
+i1lja
+i1lje
+i1lji
+i1ljo
+i1lju
+i1ma
+i1me
+i1mi
+i1mo
+i1mu
+i1na
+i1ne
+i1ni
+i1no
+i1nu
+i1nja
+i1nje
+i1nji
+i1njo
+i1nju
+i1pa
+i1pe
+i1pi
+i1po
+i1pu
+i1ra
+i1re
+i1ri
+i1ro
+i1ru
+i1sa
+i1se
+i1si
+i1so
+i1su
+i1[scaron]a
+i1[scaron]e
+i1[scaron]i
+i1[scaron]o
+i1[scaron]u
+i1ta
+i1te
+i1ti
+i1to
+i1tu
+i1va
+i1ve
+i1vi
+i1vo
+i1vu
+i1za
+i1ze
+i1zi
+i1zo
+i1zu
+i1[zcaron]a
+i1[zcaron]e
+i1[zcaron]i
+i1[zcaron]o
+i1[zcaron]u
+o1ba
+o1be
+o1bi
+o1bo
+o1bu
+o1ca
+o1ce
+o1ci
+o1co
+o1cu
+o1[ccaron]a
+o1[ccaron]e
+o1[ccaron]i
+o1[ccaron]o
+o1[ccaron]u
+o1[cacute]a
+o1[cacute]e
+o1[cacute]i
+o1[cacute]o
+o1[cacute]u
+o1da
+o1de
+o1di
+o1do
+o1du
+o1d[zcaron]a
+o1d[zcaron]e
+o1d[zcaron]i
+o1d[zcaron]o
+o1d[zcaron]u
+o1[dstroke]a
+o1[dstroke]e
+o1[dstroke]i
+o1[dstroke]o
+o1[dstroke]u
+o1fa
+o1fe
+o1fi
+o1fo
+o1fu
+o1ga
+o1ge
+o1gi
+o1go
+o1gu
+o1ha
+o1he
+o1hi
+o1ho
+o1hu
+o1ja
+o1je
+o1ji
+o1jo
+o1ju
+o1ka
+o1ke
+o1ki
+o1ko
+o1ku
+o1la
+o1le
+o1li
+o1lo
+o1lu
+o1lja
+o1lje
+o1lji
+o1ljo
+o1lju
+o1ma
+o1me
+o1mi
+o1mo
+o1mu
+o1na
+o1ne
+o1ni
+o1no
+o1nu
+o1nja
+o1nje
+o1nji
+o1njo
+o1nju
+o1pa
+o1pe
+o1pi
+o1po
+o1pu
+o1ra
+o1re
+o1ri
+o1ro
+o1ru
+o1sa
+o1se
+o1si
+o1so
+o1su
+o1[scaron]a
+o1[scaron]e
+o1[scaron]i
+o1[scaron]o
+o1[scaron]u
+o1ta
+o1te
+o1ti
+o1to
+o1tu
+o1va
+o1ve
+o1vi
+o1vo
+o1vu
+o1za
+o1ze
+o1zi
+o1zo
+o1zu
+o1[zcaron]a
+o1[zcaron]e
+o1[zcaron]i
+o1[zcaron]o
+o1[zcaron]u
+u1ba
+u1be
+u1bi
+u1bo
+u1bu
+u1ca
+u1ce
+u1ci
+u1co
+u1cu
+u1[ccaron]a
+u1[ccaron]e
+u1[ccaron]i
+u1[ccaron]o
+u1[ccaron]u
+u1[cacute]a
+u1[cacute]e
+u1[cacute]i
+u1[cacute]o
+u1[cacute]u
+u1da
+u1de
+u1di
+u1do
+u1du
+u1d[zcaron]a
+u1d[zcaron]e
+u1d[zcaron]i
+u1d[zcaron]o
+u1d[zcaron]u
+u1[dstroke]a
+u1[dstroke]e
+u1[dstroke]i
+u1[dstroke]o
+u1[dstroke]u
+u1fa
+u1fe
+u1fi
+u1fo
+u1fu
+u1ga
+u1ge
+u1gi
+u1go
+u1gu
+u1ha
+u1he
+u1hi
+u1ho
+u1hu
+u1ja
+u1je
+u1ji
+u1jo
+u1ju
+u1ka
+u1ke
+u1ki
+u1ko
+u1ku
+u1la
+u1le
+u1li
+u1lo
+u1lu
+u1lja
+u1lje
+u1lji
+u1ljo
+u1lju
+u1ma
+u1me
+u1mi
+u1mo
+u1mu
+u1na
+u1ne
+u1ni
+u1no
+u1nu
+u1nja
+u1nje
+u1nji
+u1njo
+u1nju
+u1pa
+u1pe
+u1pi
+u1po
+u1pu
+u1ra
+u1re
+u1ri
+u1ro
+u1ru
+u1sa
+u1se
+u1si
+u1so
+u1su
+u1[scaron]a
+u1[scaron]e
+u1[scaron]i
+u1[scaron]o
+u1[scaron]u
+u1ta
+u1te
+u1ti
+u1to
+u1tu
+u1va
+u1ve
+u1vi
+u1vo
+u1vu
+u1za
+u1ze
+u1zi
+u1zo
+u1zu
+u1[zcaron]a
+u1[zcaron]e
+u1[zcaron]i
+u1[zcaron]o
+u1[zcaron]u
+b1b
+b1c
+b1[ccaron]
+b1[cacute]
+b1d
+b1d[zcaron]
+b1[dstroke]
+b1f
+b1g
+b1h
+1bj
+2bj.
+b1k
+1bl
+2bl.
+2b1lj
+b1m
+b1n
+b1nj
+b1p
+1br
+2br.
+b1s
+b1[scaron]
+b1t
+1bv
+2bv.
+b1z
+b1[zcaron]
+c1b
+c1c
+c1[ccaron]
+c1[cacute]
+c1d
+c1d[zcaron]
+c1[dstroke]
+c1f
+c1g
+c1h
+1cj
+2cj.
+c1k
+1cl
+2cl.
+2c1lj
+c1m
+c1n
+c1nj
+c1p
+1cr
+2cr.
+c1s
+c1[scaron]
+c1t
+1cv
+2cv.
+c1z
+c1[zcaron]
+[ccaron]1b
+[ccaron]1c
+[ccaron]1[ccaron]
+[ccaron]1[cacute]
+[ccaron]1d
+[ccaron]1d[zcaron]
+[ccaron]1[dstroke]
+[ccaron]1f
+[ccaron]1g
+[ccaron]1h
+1[ccaron]j
+2[ccaron]j.
+[ccaron]1k
+1[ccaron]l
+2[ccaron]l.
+2[ccaron]1lj
+[ccaron]1m
+[ccaron]1n
+[ccaron]1nj
+[ccaron]1p
+1[ccaron]r
+2[ccaron]r.
+[ccaron]1s
+[ccaron]1[scaron]
+[ccaron]1t
+1[ccaron]v
+2[ccaron]v.
+[ccaron]1z
+[ccaron]1[zcaron]
+[cacute]1b
+[cacute]1c
+[cacute]1[ccaron]
+[cacute]1[cacute]
+[cacute]1d
+[cacute]1d[zcaron]
+[cacute]1[dstroke]
+[cacute]1f
+[cacute]1g
+[cacute]1h
+[cacute]1j
+[cacute]1k
+1[cacute]l
+2[cacute]l.
+2[cacute]1lj
+[cacute]1m
+[cacute]1n
+[cacute]1nj
+[cacute]1p
+1[cacute]r
+2[cacute]r.
+[cacute]1s
+[cacute]1[scaron]
+[cacute]1t
+1[cacute]v
+2[cacute]v.
+[cacute]1z
+[cacute]1[zcaron]
+d1b
+d1c
+d1[ccaron]
+d1[cacute]
+d1d
+d2[zcaron]
+d1[dstroke]
+d1f
+2d1g
+d1h
+1dj
+2dj.
+d1k
+2d1l
+2d1lj
+d1m
+d1n
+d1nj
+d1p
+1dr
+2dr.
+d1s
+d1[scaron]
+d1t
+1dv
+2dv.
+d1z
+d[zcaron]1b
+d[zcaron]1c
+d[zcaron]1[ccaron]
+d[zcaron]1[cacute]
+d[zcaron]1d
+d[zcaron]1d[zcaron]
+d[zcaron]1[dstroke]
+d[zcaron]1f
+d[zcaron]1g
+d[zcaron]1h
+1d[zcaron]j
+2d[zcaron]j.
+d[zcaron]1k
+1d[zcaron]l
+2d[zcaron]l.
+2d[zcaron]1lj
+d[zcaron]1m
+d[zcaron]1n
+d[zcaron]1nj
+d[zcaron]1p
+1d[zcaron]r
+2d[zcaron]r.
+d[zcaron]1s
+d[zcaron]1[scaron]
+d[zcaron]1t
+1d[zcaron]v
+2d[zcaron]v.
+d[zcaron]1z
+d[zcaron]1[zcaron]
+[dstroke]1b
+[dstroke]1c
+[dstroke]1[ccaron]
+[dstroke]1[cacute]
+[dstroke]1d
+[dstroke]1d[zcaron]
+[dstroke]1[dstroke]
+[dstroke]1f
+[dstroke]1g
+[dstroke]1h
+1[dstroke]j
+2[dstroke]j.
+[dstroke]1k
+1[dstroke]l
+2[dstroke]l.
+2[dstroke]1lj
+[dstroke]1m
+[dstroke]1n
+[dstroke]1nj
+[dstroke]1p
+1[dstroke]r
+2[dstroke]r.
+[dstroke]1s
+[dstroke]1[scaron]
+[dstroke]1t
+1[dstroke]v
+2[dstroke]v.
+[dstroke]1z
+[dstroke]1[zcaron]
+f1b
+f1c
+f1[ccaron]
+f1[cacute]
+f1d
+f1d[zcaron]
+f1[dstroke]
+f1f
+f1g
+f1h
+1fj
+2fj.
+f1k
+1fl
+2fl.
+2f1lj
+f1m
+f1n
+f1nj
+f1p
+1fr
+2fr.
+f1s
+f1[scaron]
+f1t
+1fv
+2fv.
+f1z
+f1[zcaron]
+g1b
+g1c
+g1[ccaron]
+g1[cacute]
+g1d
+g1d[zcaron]
+g1[dstroke]
+g1f
+g1g
+g1h
+1gj
+2gj.
+g1k
+1gl
+2gl.
+2g1lj
+g1m
+g1n
+g1nj
+g1p
+1gr
+2gr.
+g1s
+g1[scaron]
+g1t
+1gv
+2gv.
+g1z
+g1[zcaron]
+h1b
+h1c
+h1[ccaron]
+h1[cacute]
+h1d
+h1d[zcaron]
+h1[dstroke]
+h1f
+h1g
+h1h
+1hj
+2hj.
+h1k
+1hl
+2hl.
+2h1lj
+h1m
+h1n
+h1nj
+h1p
+1hr
+2hr.
+h1s
+h1[scaron]
+h1t
+1hv
+2hv.
+h1z
+h1[zcaron]
+j1b
+j1c
+j1[ccaron]
+j1[cacute]
+j1d
+j1d[zcaron]
+j1[dstroke]
+j1f
+j1g
+j1h
+j1j
+j1k
+j1l
+2j1lj
+j1m
+j1n
+j1nj
+j1p
+j1r
+j1s
+j1[scaron]
+j1t
+j1v
+j1z
+j1[zcaron]
+k1b
+k1c
+k1[ccaron]
+k1[cacute]
+k1d
+k1d[zcaron]
+k1[dstroke]
+k1f
+k1g
+k1h
+1kj
+2kj.
+k1k
+k1l
+1k2lj
+2klj.
+k1m
+k1n
+k1nj
+k1p
+1kr
+2kr.
+k1s
+k1[scaron]
+k1t
+k1v
+k1z
+k1[zcaron]
+l1b
+l1c
+l1[ccaron]
+l1[cacute]
+l1d
+l1d[zcaron]
+l1[dstroke]
+l1f
+l1g
+l1h
+l1k
+l1l
+2l1lj
+l1m
+l1n
+l1nj
+l1p
+l1r
+l1s
+l1[scaron]
+l1t
+l1v
+l1z
+l1[zcaron]
+lj1b
+lj1c
+lj1[ccaron]
+lj1[cacute]
+lj1d
+lj1d[zcaron]
+lj1[dstroke]
+lj1f
+lj1g
+lj1h
+lj1k
+1ljl
+2ljl.
+lj1lj
+lj1m
+lj1n
+lj1nj
+lj1p
+1ljr
+2ljr.
+lj1s
+lj1[scaron]
+lj1t
+1ljv
+2ljv.
+lj1z
+lj1[zcaron]
+m1b
+m1c
+m1[ccaron]
+m1[cacute]
+m1d
+m1d[zcaron]
+m1[dstroke]
+m1f
+m1g
+m1h
+1mj
+2mj.
+m1k
+1ml
+2ml.
+2m1lj
+m1m
+m1n
+m1nj
+m1p
+1mr
+2mr.
+m1s
+m1[scaron]
+m1t
+1mv
+2mv.
+m1z
+m1[zcaron]
+n1b
+n1c
+n1[ccaron]
+n1[cacute]
+n1d
+n1d[zcaron]
+n1[dstroke]
+n1f
+n1g
+n1h
+2nj.
+n1k
+1nl
+2nl.
+2n1lj
+n1m
+n1n
+n1nj
+n1p
+n1r
+n1s
+n1[scaron]
+n1t
+1nv
+2nv.
+n1z
+n1[zcaron]
+nj1b
+nj1c
+nj1[ccaron]
+nj1[cacute]
+nj1d
+nj1d[zcaron]
+nj1[dstroke]
+nj1f
+nj1g
+nj1h
+1njj
+2njj.
+nj1k
+1njl
+2njl.
+2nj1lj
+nj1m
+nj1n
+nj1nj
+nj1p
+1njr
+2njr.
+nj1s
+nj1[scaron]
+nj1t
+1njv
+2njv.
+nj1z
+nj1[zcaron]
+p1b
+p1c
+p1[ccaron]
+p1[cacute]
+p1d
+p1d[zcaron]
+p1[dstroke]
+p1f
+p1g
+2p1h
+1pj
+2pj.
+p1k
+1pl
+2pl.
+2p1lj
+p1m
+p1n
+p1nj
+p1p
+1pr
+2pr.
+p1s
+p1[scaron]
+p1t
+1pv
+2pv.
+p1z
+p1[zcaron]
+r1b
+r1c
+r1[ccaron]
+r1[cacute]
+r1d
+r1d[zcaron]
+r1[dstroke]
+r1f
+r1g
+r1h
+r1j
+r1k
+r1l
+2r1lj
+r1m
+r1n
+r1nj
+r1p
+r1r
+r1s
+r1[scaron]
+r1t
+r1v
+r1z
+r1[zcaron]
+1sb
+2sb.
+s1c
+1s[ccaron]
+2s[ccaron].
+1s[cacute]
+2s[cacute].
+1sd
+2sd.
+1sd[zcaron]
+2sd[zcaron].
+1s[dstroke]
+2s[dstroke].
+1sf
+2sf.
+1sg
+2sg.
+1sh
+2sh.
+1sj
+2sj.
+1sk
+2sk.
+s1l
+1slj
+2slj.
+1sm
+2sm.
+s1n
+2sn.
+1snj
+2snj.
+s1p
+1sr
+2sr.
+1ss
+2ss.
+1s[scaron]
+2s[scaron].
+s1t
+2st.
+1sv
+2sv.
+1sz
+2sz.
+1s[zcaron]
+2s[zcaron].
+1[scaron]b
+2[scaron]b.
+[scaron]1c
+[scaron]1[ccaron]
+[scaron]1[cacute]
+1[scaron]d
+2[scaron]d.
+1[scaron]d[zcaron]
+2[scaron]d[zcaron].
+1[scaron][dstroke]
+2[scaron][dstroke].
+1[scaron]f
+2[scaron]f.
+1[scaron]g
+2[scaron]g.
+1[scaron]h
+2[scaron]h.
+1[scaron]j
+2[scaron]j.
+1[scaron]k
+2[scaron]k.
+[scaron]1l
+2[scaron]1lj
+1[scaron]m
+2[scaron]m.
+[scaron]1n
+2[scaron]1nj
+1[scaron]p
+2[scaron]p.
+1[scaron]r
+2[scaron]r.
+1[scaron]s
+2[scaron]s.
+1[scaron][scaron]
+2[scaron][scaron].
+1[scaron]t
+2[scaron]t.
+1[scaron]v
+2[scaron]v.
+1[scaron]z
+2[scaron]z.
+1[scaron][zcaron]
+2[scaron][zcaron].
+t1b
+t1c
+t1[ccaron]
+t1[cacute]
+t1d
+t1d[zcaron]
+t1[dstroke]
+t1f
+t1g
+t1h
+1tj
+2tj.
+t1k
+1tl
+2tl.
+2t1lj
+t1m
+t1n
+t1nj
+t1p
+1tr
+2tr.
+t1s
+t1[scaron]
+t1t
+1tv
+2tv.
+t1z
+t1[zcaron]
+v1b
+v1c
+v1[ccaron]
+v1[cacute]
+v1d
+v1d[zcaron]
+v1[dstroke]
+v1f
+v1g
+v1h
+v1j
+1v2je
+vj.
+v1k
+v1l
+2v1lj
+v1m
+v1n
+v1nj
+v1p
+1vr
+v1s
+v1[scaron]
+v1t
+v1v
+v1z
+v1[zcaron]
+z1b
+1zc
+2zc.
+1z[ccaron]
+2z[ccaron].
+1z[cacute]
+2z[cacute].
+z1d
+1zd[zcaron]
+2zd[zcaron].
+1z[dstroke]
+2z[dstroke].
+1zf
+2zf.
+z1g
+1zh
+2zh.
+1zj
+2zj.
+1zk
+2zk.
+z1l
+2z1lj
+z1m
+z1n
+1znj
+2znj.
+1zp
+2zp.
+z1r
+z1s
+1z[scaron]
+2z[scaron].
+1zt
+2zt.
+1zv
+2zv.
+1zz
+2zz.
+1z[zcaron]
+2z[zcaron].
+[zcaron]1b
+2[zcaron]b.
+1[zcaron]c
+2[zcaron]c.
+1[zcaron][ccaron]
+2[zcaron][ccaron].
+1[zcaron][cacute]
+2[zcaron][cacute].
+1[zcaron]d
+2[zcaron]d.
+1[zcaron]d[zcaron]
+2[zcaron]d[zcaron].
+1[zcaron][dstroke]
+2[zcaron][dstroke].
+1[zcaron]f
+2[zcaron]f.
+1[zcaron]g
+2[zcaron]g.
+1[zcaron]h
+2[zcaron]h.
+[zcaron]1j
+1[zcaron]k
+2[zcaron]k.
+1[zcaron]l
+2[zcaron]l.
+[zcaron]1lj
+1[zcaron]m
+2[zcaron]m.
+[zcaron]1n
+2[zcaron]n.
+2[zcaron]1nj
+1[zcaron]p
+2[zcaron]p.
+1[zcaron]r
+2[zcaron]r.
+1[zcaron]s
+2[zcaron]s.
+1[zcaron][scaron]
+2[zcaron][scaron].
+1[zcaron]t
+2[zcaron]t.
+1[zcaron]v
+2[zcaron]v.
+1[zcaron]z
+2[zcaron]z.
+1[zcaron][zcaron]
+2[zcaron][zcaron].
+2d1vj
+2d1vr
+z1g2nj
+[cacute]1s2t
+d1s2m
+j1z2g
+r2n1t
+r2z1n
+m2p1t
+2d1vl
+r2t1c
+r2n1c
+r2[ccaron]1k
+2s1hr
+z1v2l
+2z1vr
+r2k1n
+r2c1n
+r2h1nj
+s2p1n
+j1s2l
+r2d1n
+.zg2
+r2d[zcaron]1b
+2[scaron]1tv
+r2t1s
+n2t1s
+2s1kr
+r2n1k
+d1[scaron]2k
+d1s2p
+r2t1m
+1r2je
+k2s1p
+t1s2t
+l2m1s
+r2h1k
+j1s2t
+s1v2l
+r2p1c
+t1k2l
+s1k2l
+n2t1n
+2d1ja
+2rt.
+z1r2j
+d1s2t
+n2k1c
+r2t1k
+r2g1n
+r2h1t
+.na2j1
+.be2z1
+.iz1
+.is1
+.ne2o3
+r2t1n
+r2v1n
+r1s2t
+n2s1t
+l2f1t
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-hu.hyp b/Master/texmf-dist/tex/context/patterns/lang-hu.hyp
new file mode 100644
index 00000000000..4ae05b37e9c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-hu.hyp
@@ -0,0 +1,25 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: huhyphn.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='hu'>
+% <sourcefile> huhyphn.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Hungarian language</title>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-hu.pat b/Master/texmf-dist/tex/context/patterns/lang-hu.pat
new file mode 100644
index 00000000000..091f68a194b
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-hu.pat
@@ -0,0 +1,13485 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: huhyphn.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='hu'>
+% <sourcefile> huhyphn.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Hungarian language</title>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a2
+.adás1s
+.ae1
+.agyon1
+.al1eg
+.al1e2m
+.al1e2s
+.al1ér
+.al1is
+.al1os
+.arc1c
+.ar2c3ho
+.atmo1
+.az1a2
+.az1ám
+.aze2
+.á2
+.ál1a2
+.ál1e
+.ál1é2
+.ál1i
+.ál1ok
+.áre2
+.ár1em
+.ár2nyo
+.áro2
+.ár1os
+.ár1s2
+.át1ad.
+.át1ada
+.át1á2
+.át1e2
+.át1é2
+.át1i2
+.áto2
+.át1ol
+.át1or
+.át1os
+.át1ö2
+.b2
+.ba2l1e2g
+.ba1ts
+.bá1th
+.be2csé
+.bei2
+.be1k2
+.bi2o
+.bo2rit
+.bu2szá
+.c2
+.cle2
+.cs2
+.cs®da2rab.
+.d2
+.da2i
+.di1kr
+.e2
+.eb1u2
+.egy1a
+.egy1ü2l
+.el1a2d
+.el1a2k
+.el1an
+.ela2s
+.el1ass
+.el1aszo
+.elá2
+.el1ál
+.el1ás
+.el1áz
+.el1e2gyek
+.el1ejt
+.el1emel
+.el1eng
+.el1e2p
+.el1e2r
+.el1e2se
+.el1e2sés
+.el1e2si
+.el1esn
+.el1ess
+.el1est
+.el1esv
+.el1esz
+.el1ékt
+.el1éle
+.elé2n
+.el1éne
+.el1ér.
+.el1é2re
+.el1ért
+.el1érv
+.el1id
+.el1in
+.el1ir
+.eli2s
+.el1iss
+.el1isz
+.el1itta
+.el1ít
+.elo2k
+.el1oká
+.el1os
+.elö2
+.el1öli
+.el1öl®
+.el1ölt.
+.el®i2
+.el1t2
+.el1u2
+.elü2
+.el1ül.
+.el1üli
+.el1ült
+.el1ülv
+.es1er
+.et2h
+.ex1el
+.ez1e2l
+.é2
+.égés1s
+.ég1o
+.ék1a2
+.ék1i
+.én1á
+.én1el
+.épe2
+.ép1es
+.ér2csi
+.ér1el
+.ét1é
+.f2
+.fa2jeg
+.fe2len
+.fe2lev
+.fe2lék
+.fe2lül.
+.fé2lér
+.fé2lév
+.fé2má
+.fö2lül.
+.g2
+.ga2z1em
+.gé2ná
+.gi1g2
+.h2
+.ha2d1e2
+.hale2
+.ha2lev
+.ha2l1és
+.há2li
+.háncs1
+.há2tus
+.he2i
+.horo1s
+.i2
+.in2d3z
+.io2ná
+.í2
+.íráskész1
+.j2
+.jazz1
+.je2gy1á
+.k2
+.ka2ring
+.kés1s
+.ké2t1a2
+.ké2tá
+.kiá2
+.kié2
+.ki1g2
+.kr2
+.l2
+.la2pa
+.le2g1
+.le3g2esle2g1
+.le3g2esle3g2esle2g1
+.legé2nyem
+.le3gy
+.le2ná
+.le1t2r
+.lé2ta
+.li2o1
+.liszt1á
+.lókész1
+.ló1s2
+.l®e2
+.ly1o
+.m2
+.malo2
+.má2r1is
+.me2g1á
+.me2g1e2s
+.me2g1é2
+.me2gis
+.me2g®
+.me2i
+.mé2szi
+.mu2e
+.n2
+.na2gya
+.na2gyá
+.na2p1e
+.na1t
+.nerc1
+.ne2um
+.né2pí
+.ny2l
+.o2
+.ok1a2d
+.ok1ir
+.ó2
+.óé2
+.óf2
+.ö2
+.ön1á
+.ön1k2
+.ön3n
+.össz1á
+.öte2
+.öt1el
+.özö2n1ö
+.®2
+.®r1an
+.®s1a2
+.®s1e2r
+.®s1í2
+.®z3s
+.p2
+.pa2i
+.pais1
+.pe2r1a2
+.pé2k1
+.ph2
+.pier2
+.po2re
+.q2
+.r2
+.ra2big
+.rát2
+.re2ár
+.ren2d1®2
+.ru2ma
+.s2
+.sa2li
+.sc2
+.sk2
+.so2ki
+.so1ny
+.so2rál
+.sp2
+.st2
+.sto2
+.su2r
+.sz2
+.sza2kér
+.sze2szá
+.szé2t
+.szk2
+.szódás1
+.szt2
+.t2
+.ta2ni
+.ta2nos
+.ta2ur
+.tá2v1i2ratozá
+.te2j1á
+.té2nyi
+.té2rá
+.to2ké
+.tö2k1élv
+.tölcséres1
+.t¶z3s
+.u2
+.utas1s
+.ú2
+.úr1a
+.úr1ist
+.út1a2
+.út1e
+.ü2
+.ük1
+.¶2
+.¶r1i
+.v2
+.va2d1al
+.va2gyi
+.vasas1s
+.va2sol
+.vé2g1o
+.w2
+.x2
+.y2
+.z2
+.ze2i
+.zs2
+2a.
+2a1a
+aa2d
+aa2j
+aa2k
+aa2l
+a2am
+aa2n
+aa2p
+aa2u
+aa2v
+aa2z
+2a1á
+aá2b
+aá2gak
+aá2gy
+a2ál.
+a2áln
+aá2p
+aá2r
+aá2s
+aá2t1
+aáta2
+aba2de
+2aban
+2abar
+2abáj
+2abáz
+2abes
+2abir
+2abiz
+2abom
+abos3s
+2ab®
+2abú
+a2b1ü
+a2ce.
+ace2l
+ac1ele
+acé2l1e
+a2c1ép
+ac1ére
+a2chá
+ac3hoz
+2ací
+ac3ság
+a2c3sü
+ac3sz
+ada2le
+ada2li
+ada2l1ú
+a2dap
+ad1apr
+ada2t1e2
+ad1ág
+a2dású
+ad2del
+a2d1e2g
+ade2i
+1a2dek
+ad1e2le
+ad1el®
+ad1elv
+ade2n
+ad1ene
+ade2s
+ad1esé
+adet2
+ad1e2v
+adé2ke
+a2d1ép
+a2d1é2v
+ad1ide
+adi2o1g2
+ad1íz
+a2d1orzá
+1a2dód
+ad1ö2l
+ad2rót
+adu2r
+ad1ura
+2adú
+2a1e
+ae2b
+ae2c
+ae2dé
+aegész1
+a2ei
+ae2k
+ae2l1a2
+ae2le
+ae2l1o
+ae2l®
+ae2me
+ae2p
+ae2re
+aero1s
+aerosz2
+ae2r®
+ae2se
+ae2sé
+ae2si
+ae2s®
+ae2v
+ae2z
+2a1é
+aé2g
+aé2h
+aé2k
+aé2l
+aé2n
+aé2p
+aé2r
+aé2v
+2afajn
+2afe
+afe2li
+2afés
+2afi
+2af®
+af2re
+2afü
+a2g1a2j
+ag1any
+ag1arc
+agán1n
+agá2nyé
+a2gár.
+ag1át1a
+ag1edé
+a2g1eg
+ag1elm
+ag1elt
+ag1elv
+a2gem
+ag1emb
+a2g1ev
+a2g1é2g
+a2g1é2l
+ag1épí
+1agg.
+ag3gye
+a1g2hó
+agi2g
+ag1igé
+a2g1i2p
+a2g1ír
+agli2
+ago2na
+2agor
+a2g1ors
+ag1órá
+a2g1öt
+a1g2raf
+a2gut
+ag1uta
+ag1u2tá
+a2g1út
+a2g1ü2
+a2gyad
+agy1a2dó
+a2gyag
+agy1agy
+agy1ala
+agy1alk
+agy1any
+a2gyál
+agy1ári
+a2gyát
+agy1el
+a2gy1em
+a2gy1en
+a2gyep
+agy1er®
+a2gy1es
+a2gy1ez
+a2gyér
+agy1ére
+a2gyét
+a2gyic
+a2gyim
+a2gy1ip
+a2gyir
+agy1is.
+agy1ist
+a2gyoko
+a2gyokt
+agyo2r
+agy1oro
+2ahar
+2ahe
+1ahh
+2ahi
+2ahí
+aho2l1i
+2ahu
+a1i
+a2ia.
+ai2bo
+2ai2de
+ai2d®
+ai2e
+2aig2
+ai2gazító
+ai2gé
+a2ign
+ai2j
+ai2k1as
+ai2k1e2
+ai2ma.
+2ai2má
+ai2nal
+ai2nas
+2aing
+2aint
+ai2o
+2ai2p
+ai2ram
+ai2rá
+ai2rod
+ai2zo
+2a1í2
+a2j1al
+aja2n
+aj1ana
+2aje
+a2j1e2d
+aj1egé
+a2j1elm
+aj1e2l®
+a2j1em
+a2j1er
+a2jég
+a2j1ék
+a2j1ir
+1ajkúa
+a2j1ola
+aj1old
+aj1ül
+aj2ze
+aj2zí
+aj2zsí
+a2k1akn
+a2k1alk
+ak1ann
+2akap
+aka2s1ü
+2akav
+akás1s
+2ake
+a2k1eg
+ak1els
+ak1emb
+a2k1e2r®
+aké2k
+a2k1éke
+2akép
+ak1épí
+2akérd
+a2k1é2ret
+ak1értel
+a2k1ért®
+2akés
+a1khó
+akiá2
+2akin
+a2k1i2p
+ak1iro
+ak1is.
+aki2s1a
+ak1isk
+ak1ism
+ak1izm
+2akí
+ak2kór
+ak2lei
+ak2lés
+ak2lin
+a2k1o2ly
+a2k1orv
+2akö
+a2k1örv
+ak1®r.
+2akré
+2akri
+ak2rit
+a1k2ru
+ak1ug
+2akut
+2akú
+ak1útr
+2akü
+ak1ülé
+a2k1ü2v
+2akv
+al1abl
+alag1g
+ala2gol
+ala2j1e2
+1alakí
+1a2lakok
+1a2lakú
+a2lany
+ala2nye
+ala2p1a2
+ala2pár
+1a2lapi
+1a2lapí
+alap1p
+a2láf
+al1ág.
+al1á2ga
+al1ágg
+al1á2gi
+al1ágk
+al1á2go
+1aláí
+2alán
+a2láp
+a2le.
+al1eln
+al1elt
+al1eml
+al1eny
+al1e2r®
+al1esp
+a2l1est
+ale2sz
+al1ez
+a2léb
+a2l1é2ne
+al1érz
+a2l1é2te
+1alfö
+alg2
+al1gr
+al1ido
+a2l1ikr
+alió2ra
+a2l1irá
+al1isk
+al1isp
+al1itt
+al1í2rá
+1aljb
+1alji
+1aljn
+1aljz
+al2l1aj
+1almád
+1almák
+almás1s
+2alogizm
+aloi2do
+2alok
+al1ola
+alo2mit
+alo2m1o2k
+2alor
+alos1s
+a2l1oszt
+2alógiá
+2alógu
+alókész1
+a2l1ön
+a2l1ös
+al2t1el
+al1úr.
+al1úri
+al1útr
+a2l1ü2
+1alvó
+a2lyál
+a2ly1e
+am1a2dó
+2amag
+am1akk
+am1app
+a2m1arc
+am1arr
+ama2ter
+ama2tin
+2amá
+a2m1árj
+am2b1eg
+am2b1®
+a2me.
+ame2g1á
+a2m1elá
+a2m1e2l1o
+am1els
+am1elt
+a2m1erd
+1a2meri
+a2m1e2r®
+a2m1érd
+am1fr
+a2mim
+a2m1i2rá
+amise2
+amis3s
+am1ír
+2amod
+amos3s
+a2m1ó2r
+a2m1ö2
+a2m®
+am1®r
+am1®s
+am1p2h
+2amun
+2amut
+a2m1ü2
+2am¶
+a2nah
+an1akk
+an1alj
+an1any
+ana2sze
+a2n1az
+anás1s
+an2ce.
+ancs1es
+an2cs®
+an2dolv
+an1eb
+a2ner
+a2nes
+anet1o
+ane2u
+a2n1e2z
+2ané
+ané2v
+an1évb
+an1éve
+an1évn
+an2gad
+an2g1em
+an2gí
+an2g1or
+an2g1osz
+an2g1ös
+1anim
+an2k1a2k
+ank1ala
+an2kau
+an2k1el
+an2k1ék.
+ank1osz
+an2k1u2
+an2kü
+ano1g2
+an1old
+an1onn
+an1ott
+an1órá
+2anö
+an1ö2t
+ansz1ál
+an2sz1u2
+an2tau
+a2nü
+any1ala
+1a2nyád
+a2nyám.
+a2ny1á2rak
+2anye
+a2ny1ed
+a2ny1em
+any1es®
+anyé2
+any1éh
+any1ék
+any1ér
+a2nyif
+a2nyig
+anyigaz1
+a2nyim
+2anyo
+a2nyor
+a2ny1osz
+any1ó2r
+a2nyö
+a2ny®
+anzo2
+2a1o
+ao2la
+a2olo
+ao2ro
+2a1ó
+a2ób
+a2óc
+a2óf
+aó2l
+aó2ra
+aó2rá
+aó2ri
+2a1ö2
+2a1®2
+apa2cs1i
+ap1a2da
+1a2pai
+1a2paké
+ap1a2la
+ap1alk
+apa2tér
+1a2pád
+1a2páé
+a2p1ág
+1a2pái
+a2páll
+a2p1áru
+a2páta
+2ape
+a2p1e2g
+ape2i
+ape2l
+ap1ele
+ap1elg
+ap1elj
+ap1el®
+ap1elv
+a2p1em
+ape2n
+ap1ene
+ap1eny
+ape2s
+ap1ese
+ap1f2
+a2p1ide
+api2g
+ap1ige
+a2p1i2rá
+a2p1ist
+a2p1ín
+2apl
+a2p1ola
+ap1ope
+apos3s
+ap1ös
+ap1öt
+ap2rém
+a1p2rés
+1aprí
+ap1szt
+ap1t2
+ap1udv
+ap1utá
+ar1ajt
+ara2nye
+ar1ará
+a2r1ág.
+a2r1á2ga
+ará2gáb
+ará2gán
+ará2gár
+ará2gát
+ará2gáv
+a2r1ágb
+a2r1ágg
+a2r1ági
+a2r1á2go
+a2r1ágr
+a2r1ágt
+ar1á2guk
+ar1á2gun
+ar1á2gy
+a2r1áll
+ará2nyé
+ar2car
+ar2ced
+ar2ces
+ar2cö
+arc3sor
+1arcú
+ar2dél
+2are
+ar1e2dz
+are2l
+ar1elh
+ar1elo
+a2r1e2m
+aren2d1®
+a2r1er
+a2r1e2v
+ar1é2ne
+a2r1é2r
+aré2z1
+ar1gh
+argon1n
+a2r1i2d
+a2r1iga
+ar1ingb
+a2r1inge
+a2rizma.
+a2rizmán
+a2rizo
+ar1khe
+ar2k1®2
+ar2k1u2s
+2aro
+arog2r
+aro2mis
+a2r1or
+2aró
+a2r1ó2rá
+a2r1ö2l
+a2r1®2
+ar1s2h
+ar1thá
+arto1g2rá
+art1old
+ar2t1®2r
+ar1ty
+2aru
+a2r1ü
+a2r1¶2
+ar2v1ér
+a1ry
+a2s1a2g
+2asaj
+as1a2kar
+2asal
+a2s1alk
+as1alm
+asa2n
+a2s1ant
+a2s1any
+as1apr
+a2s1ál
+as1áru
+2asáv
+2ase
+as1e2d
+as1e2k
+as1ell
+as1emb
+as1e2s
+as1ez
+as1éhe
+as1ék.
+a2s1é2l
+as1étv
+a2s1é2v
+asi2d
+as1ide
+a2s1i2p
+as1isk
+as1izo
+2asík
+as1old
+2asor
+as1ord
+as1osz
+as1órá
+as1ö2k
+as1ön
+as1ös
+2asp
+as1sy
+as3szab
+astil2
+2astí
+as1urn
+a2s1u2t
+a2s1ú2t
+2asü
+as1ün
+a2s1ür
+as1üs
+a2s1ü2v
+2as¶
+a2sz1ad
+asz1ág.
+a2szárad
+2aszeg
+2aszek
+asz1e2l®
+a2sz1év
+a2szid
+2aszkó
+asz2kóp
+asz1ors
+asz1ön
+asz2t1és
+asz2t1ív
+2aszü
+1aszz
+at1abl
+2atak
+2atan
+2atar
+ata2rán
+a2t1arc
+ata2tom
+a2t1ág
+2atál
+atá2nal
+2atár
+a2t1á2ram
+a2t1átl
+a2t1átv
+atá2v1i2
+atá2v1í2
+2ate
+a2t1ef
+at1e2gé
+at1e2gye
+ate2led
+at1e2lem
+at1elh
+at1elm
+at1elv
+at1elz
+at1emb
+at1eml
+at1epo
+at1e2tet
+at1e2ve
+a2t1e2z
+2até
+at1éhe
+a2t1é2le
+a2t1ép
+a2t1érz
+at1év.
+2at1f2
+at2hé
+at2hón
+atig2
+a2t1iga
+at1i2gé
+a2t1inf
+ati2nó
+at1iro
+a2t1isk
+2atn
+a2t1ob
+ato1g2
+ato2me
+at1opt
+2ator
+at1orsz
+a2t1orv
+atos3s
+atosz2
+ato1szf
+2ató
+a2t1ó2rá
+ató2riá
+ató1sz
+2atö
+a2t1ös
+at1ö2ve
+at1ö2vö
+at2sán
+attó2
+at2tór
+at1tre
+at1tré
+2atu
+a2t1uj
+1atyj
+a1tyl
+2atz
+a1u
+au2de
+au2ga
+aug2h
+au2go
+au1k2r
+au1ly
+2aur
+a2us.
+au2tal
+a2utó.
+au2zs
+a1ú
+aú2r1
+aú2s
+2a1ü2
+a1¶2
+av1anh
+avara2n
+ava2s1as
+ava2sze
+2avá
+2avi
+avi2cse
+avíz1
+2ay
+a1ya
+a1yá
+a1ye
+2aza
+aza2teg
+azaú2
+az1áll
+az1ált
+azás1s
+az2du
+2aze
+az1e2le
+az1elj
+az1el®
+aze2o
+az1év
+az1i2d
+azo2n1á
+2azó
+az1óta
+az1p2
+az3ság
+az3st
+a2zsú
+a2z3sü
+az1ut
+az1új
+2á.
+á1a2
+á1á2
+áb1áll
+áb2b1a2d
+áb2b1é2
+áb2bis
+áb2bol
+áb2bos
+áb2b1ot
+áb2bö
+áb2bú
+ábe2l1a
+ábe2lér
+á2b1el®
+á2b1e2m
+á2b1e2n
+á2b1ér
+á2b1ikr
+á2b1in
+á2b1ir
+2ábiz
+áb1izm
+áb1izz
+2ábí
+1ábrá
+2ábu
+ábu2t
+áb1utá
+áca1k2
+ác1al
+ácá2ná
+á2c1e
+ác3ho
+ácin2ti
+áci2ósz
+á2cs1aj
+á2csas
+ác3ság
+á2cs1e2l
+á2csil
+ácsü2
+ács1ül
+ád1alk
+áda2n
+ád1any
+á2d1apá
+á2d1ál
+á2d1e2l
+á2d1e2m
+áde2ros
+á2d1es
+á2d1in
+ád1ira
+ádo2ge
+á2d1osz
+ádö2
+á1d2rót
+ádsza2
+á2d1ur
+á1dy
+á1e2
+á1é
+áé2he
+áé2ke
+áé2l
+áé2ne
+áé2p
+áé2re
+áé2ri
+áé2r®.
+áf1elm
+áf1üz
+á2g1a2d
+ág1ala
+á2g1a2r
+1á2gaz
+á2g1ág
+á2g1álv
+á2g1áru
+á2g1árv
+ágá2sé
+ág1e2d
+á2g1e2g
+á2g1e2l
+á2g1e2s
+á2g1é2g
+á2g1é2l
+ág1é2ne
+á2g1ép
+ág1érd
+ág1érte
+ág1érté
+ágg2
+ág1gr
+á2g1id
+á2g1if
+á2g1iga
+á2gigén
+á2g1ill
+á2g1ing
+á2g1i2p
+ág1iro
+ág1ír
+á2g1ola
+á2g1old
+á2g1olv
+ágos3s
+ág1óc
+á2g1ö2
+ágsz2
+á2g1u2r
+á2g1u2t
+á2g1ü2
+á2g1¶2
+á2gyac
+á2gyál
+á2gy1e2
+2áha
+2áhá
+2áhe
+áh1ors
+á1i
+ái2do
+ái2g
+ái2j
+2áil
+ái2má
+ái2rá
+ái2s
+á1í2
+á2jí
+áj2k®
+áj2lá
+á2j1or
+á2j®
+áj2teg
+áj2tel
+áj2ti
+á2jul
+á2jü
+ák1abr
+á2k1al
+á2k1as
+á2k1ál
+á2k1e2l
+ák1em
+á2k1é2l
+ák1é2ve
+ák1in
+ák1k2
+á2k1oli
+á2k1oll
+á2k1ott
+2ákö
+ák1s
+á2k1ut
+ál1abl
+ála2m
+ála2n
+á2l1ana
+á2l1ang
+ál1any
+ála2szel
+ála2szü
+ál1áll
+ál1árf
+1áldá
+1áldj
+1áldo
+ál1d2r
+1áldu
+1áldv
+ále2l
+ál1emu
+á2l1e2r
+ál1ér.
+álé2t
+ál1éte
+á2l1id
+ális3s
+á2l1í2
+ál1k2
+ál2liz
+ál1ob
+á2l1o2kok
+á2l1ol
+1á2lomb
+álo2me
+álo2mit
+á2l1op
+á2l1or
+ál1osz
+2álö
+ál1öl
+ál1ös
+ál1öz
+ál1p2
+áls2
+ál1st
+ál2t1e2g
+ál2tiv
+á2l1ug
+ál1u2s
+ál1u2t
+ál1út
+á2lü
+ál1¶
+á2lyal
+á2lyál
+á2ly1e
+á2lyiga
+á2lyis
+á2ly1ó2
+á2lyö
+á2lyü
+á2m1ac
+á2m1akt
+á2m1a2l
+áma2n
+ám1any
+ám1apa
+ám1a2rá
+ám1aty
+ám1ár.
+ám1bl
+áme2g
+ám1elm
+á2m1e2m
+á2m1es
+ámész1
+ám1f2
+á2m1id
+ám1il
+á2m1ip
+á2m1i2r
+ámi2s
+ám1ism
+ám1isz
+á2m1ír
+ám1ív
+á2m1ob
+á2m1op
+ámo2rál
+ám1oszl
+á2m1ö
+á2m1®2
+ám1p2
+ám1s
+ámu2n
+ám1ur
+á2m1ü2
+ám1¶2z
+ána2d
+án1ada
+ánai2
+án1ajt
+á2n1akc
+á2n1a2la
+án1alk
+á2n1a2pa
+á2n1apá
+án1ass
+án1aut
+á2n1áll
+án1áru
+án2c1ed
+án2c1es
+án2c3h
+án2c1is
+án2cor
+án2c1ö
+án2cü
+á2n1e2d
+án1e2g
+ánegyez1
+án1e2l
+án1em
+án1en
+án1e2t
+á2n1é2g
+á2n1é2l
+án1é2ne
+á2n1épü
+án1ér®
+án1f2
+án2g1a2r
+án2gel
+án2g1e2s
+án2g1és
+án2g1osz
+án2gö
+á2n1i2d
+á2n1im
+án1int
+á2n1ip
+á2n1ir
+án1isz
+ánizs1
+á2n1izz
+án2k1es
+án1k2l
+á2n1oki
+á2n1or
+á2n1osz
+á2n1ot
+ánó2r
+á2n1ö
+án1szf
+án1sz2l
+án1szp
+án2tir
+án2t1iz
+án2tór
+á2n1uj
+á2n1u2t
+ánú2
+án1út
+á2n1ü
+ány1a2dó
+ány1a2la
+ánya2n
+ány1any
+á2nyap
+ány1ass
+á2ny1ál
+á2ny1ár.
+á2ny1á2rak
+ánye2
+á2nyeg
+á2ny1el
+ány1er
+á2nyég
+á2nyél
+á2nyérz
+ány1í2r
+á2ny1ola
+á2ny1osz
+á2ny1ö
+á2ny®
+ány1us
+á2nyü
+án2z1ag
+án2zs
+á1o
+áo2sze
+á1ó
+á1ö
+á1®2
+áp1a2n
+ápe2
+áp1eg
+á2p1ér
+áp1int
+á2poló
+ápora2
+ápo2rad
+ár1abl
+ár1abr
+2árag
+á2r1agg
+ára2j
+ár1ajá
+ár1ajt
+á2r1a2la
+ár1alá
+ár1alj
+ár1alk
+ára2m1el
+1á2ramk
+1á2ramú
+ár1a2p
+á2r1a2r
+á2r1á2g
+ár1ár.
+á2r1áro
+ár1árt
+árás3s
+ár1á2t1e2
+á2r1átk
+ár1b2
+1árboc
+árd1el
+ár2d1ó2
+á2r1e2g
+á2r1e2l
+ár1eng
+á2r1er
+ár1esé
+á2r1e2z
+á2r1é2g
+á2r1éj
+á2r1é2n
+á2r1ép
+á2r1é2t¶
+ár2gye
+ár2gyor
+ár1ide
+ári2g
+á2r1iga
+ár1inc
+ár1ind
+ár1ing
+ár1int
+á2r1i2o
+á2r1ir
+ár1isp
+ár1i2ta
+ár1izo
+ár1ír
+árká2s
+árkász1
+ár1kh
+1árkok
+ármas1s
+árnás1
+áro2koz
+ár1oll
+áro2mér
+áro2m1os
+á2r1or
+áros3s
+á2rostr
+árö2
+ár1öl
+ár1ös
+ár1öv
+ár1öz
+á2r1®2
+ár1p2
+1árpa.
+árs3s
+ár1str
+árt1akt
+árt1áll
+árt1árn
+árt1áru
+ár2teg
+ár2tig
+ár2t1okt
+ár2t1ön
+ár1tro
+1á2ru.
+á2rud
+á2rué
+1á2ruf
+1á2rui
+1áruj
+á2ruke
+1á2ruké
+á2rum
+1á2rup
+á2rur
+á2rut
+ár1uta
+1áruü
+1áruv
+ár1úr
+árú2t
+ár1úti
+á2rü
+1árvu
+á1ry
+á2s1abl
+á2sad
+ás1a2dó
+á2s1a2j
+á2s1akt
+ás1a2la
+ás1alk
+ás1alm
+ás1a2lo
+ása2n
+á2s1ana
+á2s1any
+á2s1as
+á2s1a2u
+á2s1a2v
+á2s1a2z
+á2sábr
+á2s1ál
+ás1áru
+á2sást
+ás1átl
+ás1átv
+ás1e2d
+á2s1e2l
+ás1em
+á2s1en
+á2s1e2s
+ás1ex
+ás1ez
+á2s1é2l
+á2s1ép
+ás1ére
+á2s1érte
+á2s1érté
+á2s1és
+á2s1éve
+á2s1id
+á2s1if
+ási2g
+ás1iga
+ás1inf
+ás1int
+á2s1i2p
+ás1i2rá
+á2s1is
+á2s1ín
+á2s1í2r
+ás1ív
+ás1k
+ás1okta
+á2s1or
+ás1osz
+1á2só.
+1á2sój
+1á2sók
+1á2són
+á2sór
+ás1órá
+1á2sót
+á2s1ö
+á2s1®
+ás1p2
+áspis1
+áss2
+ás1st
+á1ssy
+ás3sze
+ás3szé
+ás3szi
+ás3szor
+ás3szö
+ás3szt
+ás3szü
+ás1tra
+á2s1uj
+ásu2t
+ás1uta
+ás1utá
+ás1u2z
+á2s1üg
+ás1ür
+ás1üs
+á2s1ü2v
+á2sz1aj
+á2sz1ap
+á2szas
+ás3zav
+2ászá
+á2szág
+ász1eb
+ász1el
+ász1em
+ász1ep
+ász1es
+ász1e2t
+ászé2
+á2sz1éj
+á2sz1én
+ász1év
+ászi2
+á2szid
+á2sz1in
+á2sz1ir
+á2sz1is
+ász1ors
+ász1osz
+ász1ös
+ászt2
+ász1tr
+á2szur
+á2szut
+ász1út
+ász1ün
+á2szüz
+át1ado
+át1adt
+át1alm
+át1a2lu
+át1a2u
+á2t1ál
+át1ej
+át1e2m
+át1é2g
+áté2ke
+á2t1é2l
+át1é2p
+át1f2
+1átfú
+1áthi
+áti2ag
+át1id
+áti2g
+át1in
+á2t1i2r
+á2t1izm
+á2t1izo
+át1í2r
+át1í2v
+1átlé
+1átne
+át1öb
+á2t1öm
+át1ön
+át1ö2v
+át1ö2z
+á2t1®2
+át1t2
+át1ug
+á2t1uj
+1á2t1u2t
+á2t1ú2s
+átü2
+á2t1ül
+át1üt
+át1üz
+1átvo
+á1u2
+á1ú
+á1ü2
+á1¶
+áv1el
+áv1érz
+á2v1i2rá
+á2v1iz
+á2v1okt
+á2v1ús
+áz1abl
+á2z1aj
+áz1alk
+á2z1ann
+áza2t1e2
+áza2tí
+áz1aty
+á2z1a2v
+á2z1á2l
+ázás1s
+áz1ea
+á2z1eg
+áz1e2r
+á2z1es
+áze2z
+á2z1eze
+á2z1ezré
+á2z1é2p
+áz1éve
+ázhoz1
+á2z1igá
+á2z1ing
+á2zins
+ázi2s1em
+ázis3s
+áz1izm
+áz1izo
+áz1k2
+2ázol
+á2z1o2r
+2ázos
+á2z1osz
+á2z1ö
+á2z1®
+ázs1aj
+ázs1ár.
+ázs1árá
+ázs1árh
+á2zs1e2
+á2zsé
+ázs1é2n
+á2zsiá
+á2zs1ig
+áz3sor
+áz3spa
+áz3sug
+á2zsü
+ázs1ü2v
+á2z3s¶
+2ázú
+á2z1ü2
+á1zy
+1ba
+baá2
+baba1
+ba2b1o2l
+ba2d1ár
+ba2del
+ba2der
+ba2des
+ba2d1i2
+ba2dot
+ba2dun
+badú2
+ba2d1ús
+bae2
+bago2
+2bajg
+ba2k1as
+ba2k1ál
+ba2k1in
+ba1krá
+ba2l1a2d
+ba2l1e2s
+ba2l1í2
+ba2l1ol
+2bals
+ban2ch
+banka2
+ban2kad
+ban2kal
+ban2kép
+ban2kin
+bart2
+bar1th
+ba2seb
+ba1sp
+ba2ue
+bau2t
+1bá
+bá2bál
+bá2csü
+b1á2gú
+bá2gyu
+bákos1
+bá2lan
+2bálm
+bá2ne
+2b1á2p
+bá2r1as
+2b1á2ru
+bá2s1é
+bá2szö
+bá2t1a2
+2b1átd
+2b1átm
+bb1adh
+bb1adj
+bb1adu
+bb1adv
+b2b1alk
+bb1als
+bb1ar
+b2b1ál
+b2b1e2g
+bb1ela
+b2b1e2le
+bbe2m
+b2b1eme
+b2b1esé
+bbes1s
+b2b1é2v
+bb1is.
+b2b1í2r
+bb1old
+bb1olt
+bb1olv
+bb1osz
+bbó2
+bb1ór
+bbö2
+b2b1öl
+bb1ör
+bb1ös
+bb1s2
+b2b1u2t
+1be
+bea2
+beat1
+beá2r
+beá2z
+be2cs1á
+be1f
+be1gr
+bei2d
+bei2g
+bei2s
+be1k2v
+be2lad
+be2lár
+bel1ér.
+be2lór
+be2l®a
+be2n1á
+ben2ná
+ben2tét
+beo2
+be1p2
+bera2n
+be2rap
+be2r1ar
+be2ras
+be2r1ár
+be2r1e2g
+be2r1e2l®
+be2r1eml
+ber1e2pé
+be2r1ev
+be2rid
+be2r1ist
+2b1e2r®
+ber1s2
+be1ska
+be1s2l
+besp2
+be1spr
+be1sr
+be1sto
+beu2
+1bé
+bé2d1o
+bé2du
+bé2let
+bé2lo
+b1é2l®
+bé2lú
+bé2lyi
+2b1é2p
+bé2ran
+bé2rá
+bé2r1em
+bé2r1os
+2b1érte
+2b1érté
+bé2ru
+bé2rú
+bé2vi
+1bi
+bi2ed
+bi1f2r
+2b1i2gáb
+2b1i2gáj
+bi2k1em
+bi2kél
+bi1k2ro
+bil1ant
+bi2l1ip
+2bime
+2b1ind
+bio1g2
+bi2ok
+bi2ol
+bi2om
+bi2or
+bi2os
+2b1i2rá
+bi1sc
+bi1sh
+bi2t1á2r
+bi2tip
+bi2tü
+2b1i2vad
+1bí
+2b1ív
+b1k2
+bl2
+bla1bla
+bla2k1e2
+bla1pr
+ble2t1ér
+ble2ti
+b1lj
+1b2lok
+blu2
+blues1
+b2lú
+b1ly
+bmeg1á
+1bo
+boc1c
+bo2ce
+bo2c3h
+bo2g1e
+bok2sz1á
+2b1olda
+bolo1g2
+bo2r1ad
+bo2ral
+bo2r1e2c
+bo2rén
+bo2r1is
+bor1itt
+bo2r1iv
+bo2se
+bos3zs
+bo2t1e
+bo2ul
+bo2zé
+1bó
+bó2rá
+1bö
+bö2n1
+2b1öv
+1b®
+b®2r1a
+b®2rá
+b®2reg
+b®2rel
+b®2rin
+b®2r1o
+b®2ru
+b®r1ü2l
+b1p2
+br2
+1b2rig
+bsé2gel
+bsz1t2
+b1t2
+1bu
+2b1ujj
+buk2je
+bu2n1á
+bu2sz1ál
+bu2tó
+1bú
+bú2sz
+búzás1
+1bü
+2b1üz
+1b¶
+b¶2v1e
+bvá2nyé
+bve2g
+bvegy1
+1by
+by2t
+1ca
+2c1a2la
+2c1alk
+cam1b
+ca2ny
+ca2rán
+catá2
+ca2tem
+2c1atl
+caus2
+1cá
+2c1á2g
+cá2l
+2c1áll
+cá2po
+2c1árk
+2c1á2sá
+c2c1e2v
+c2ch
+c2c1í2
+c2cs
+c3csap
+c3csi
+c3csí
+cc3sor
+ccs1ön
+c3csú
+cda2lé
+1ce
+ce2dén
+2c1e2dz
+ceg1ér
+2c1e2gy
+ce2lem
+ce2l®k
+ceo2
+ce1ph
+2c1e2r®
+2c1eszt
+2cetb
+2ceton
+2c1e2zer
+2c1ezr
+1cé
+cé2ga
+cé2gel
+cé2g1o
+cé2lab
+cé2l1ar
+cé2l1á2
+céle2
+cé2leg
+cé2lek
+cé2lem
+cé2l1er
+cé2lip
+cé2lir
+cé2liz
+cé2lö
+cé2l®
+cé2pí
+cé2ret
+2c1é2ri
+cés3s
+c1év.
+2c1é2ven
+2c1é2ves
+2c1é2vi
+c2h
+1cha
+cha2e
+1chá
+c3ház
+1che
+2che.
+chel2
+chet2t
+1ché
+1chi
+1chí
+1cho
+1chó
+1chö
+1ch®
+ch2ro
+2chu
+2chú
+1chü
+1ch¶
+1ci
+ci2ac
+ci2af
+ci2a1g2
+ci2aku
+ci2am
+ci2ap
+ci2ar
+ci2av
+ci2az
+2c1i2d®
+ci1g2r
+2cii
+2cing
+ci2o1g2
+ci2ol
+ci2óa
+ci2óc
+ci2ófe
+ci2ófé
+ciókész1
+ci2ól
+ci2órá
+ci2óta
+2cispán.
+ci2szi
+cito1
+2c1izma
+2c1izmo
+ci2zom
+1cí
+cí2ma
+cí2mi
+2c1í2rá
+2cív
+cí2ve
+cí2zs
+cké2t1
+c2k1í
+ck1o2pe
+ck2ré
+ck2ri
+1c2ky
+1co
+co2lig
+com2biz
+co2o
+2cori
+2cország.
+2c1osz
+co2u
+1có
+1cö
+c1ö2le
+c1öln
+cö2t
+c1ötb
+c1öt1e
+c1öté
+c1ötö
+1c®
+c1p2
+c2s
+1csa
+cs1abl
+2cs1a2d
+cs1ass
+csa2sz
+3csat
+1csá
+2cság
+c3ság.
+cs1ágú
+2cs1ásá
+2csásó
+2csátí
+1cse
+2cselc
+2csev®
+1csé
+2c3ség
+1csi
+2cs1ita
+1csí
+cs1í2v
+cs1k
+1cso
+2csolaj
+3cson
+3csop
+2cs1orr
+c3sorv
+1csó
+1csö
+2csönte
+1cs®
+cs1p2
+cs3s
+cs1t2
+c3s2tí
+1csu
+1csú
+1csü
+cs1üll
+cs1ü2té
+c3süv
+2csüz
+1cs¶
+c3sza
+c3száz.
+c3szem
+c3szes
+c3szí
+c3szo
+c3szö
+c3sz®
+cs3zs
+ct2
+c1tr
+1cu
+2c1utc
+1cú
+1cü
+2c1üg
+c1ünn
+2c1ü2r
+2c1ü2v
+1c¶
+1cy
+c2z
+1cza
+1czá
+1cze
+2c3zen
+cze2ö
+1czé
+1czi
+1czí
+1czo
+1czó
+1czö
+1cz®
+c3zs
+1czu
+1czú
+1czü
+1cz¶
+1czy
+1da
+daá2
+2d1abl
+2d1add
+2d1a2dó
+dae2
+da1g2ro
+da2hán
+dai2g
+da2lab
+da2l1aj
+da2lat
+da2lág
+da2l1e2l
+da2l1im
+dal1l
+da2l1or
+da2l1ó2r
+da2ma.
+da2maz
+da2mel
+2d1ann
+da2nyá
+daó2
+2d1a2pa.
+2dapai
+2dapak
+da2pák
+da2pát
+da1p2f
+da1p2l
+da2pó
+dar2c3h
+dar2cso
+da2rel
+da2r1é
+da1spe
+dast2
+da1str
+2d1aszt
+da2t1ag
+dat1ala
+dat1alk
+dat1áll
+2datc
+da2t1eg
+da2t1em
+da2téh
+da2t1és
+da2t1in
+da2top
+da2tút
+2d1a2ty
+da2z1á
+da2zé
+1dá
+dáb2
+2dá2g
+2d1állá
+dá2n1iz
+dára2
+dá2r1ag
+dá2ral
+dá2ras
+dá2r1e2
+dá2rij
+dá2rit
+2d1á2ru
+dá2sal
+dá2se
+dást2
+dá2sü
+dá2sz1al
+dá2sz1ál
+dá2szár
+dá2sz1e
+dá2sz1ö
+d1átm
+dá2z1ak
+dá2zs
+dáz3sá
+dd1elh
+d2d1i2d
+d2d1o2d
+d2dz
+1de
+de2a1s
+de2at
+2d1eff
+de1f2r
+de2g1al
+de2g1ál
+de2g1el
+de2g1em
+deg3g
+de2gin
+de2g1o
+de2g1ö2
+de2g®
+2degy
+de2gye
+de2gyi
+de2isz
+de2k1a2r
+de2k1e2g
+de2k1ell
+dek1érv
+2dekö
+de2köz
+dele2já
+dele2meg
+2d1e2lemz
+del2lal
+dellé2
+del2l1én
+de2l®a
+d1elz
+de2m1é2rem
+de2m1érm
+de2mú
+de2n1e2g
+de2n1ese
+de2nol
+de2of
+de2ok
+de2ol
+de2om
+de2or
+de2os
+de2ot
+de1pra
+de1p2re
+de2r1áz
+der1osz
+de2rö
+2d1e2r®
+de2r1u2
+de2s1a2
+de2sá
+de2s1ér
+de2su
+de2s1ú2
+2d1e2sz¶
+det1é2ré
+2deza
+de2zér
+dezi2
+de2zid
+de2zil
+de2zin
+de2zor
+1dé
+dé2da
+dé2d1®
+dé2du
+dé2d1ü
+dé1f2
+dé2gá
+dég3g
+dé2go
+dé2hes
+2d1éhs
+2d1éjs
+dé2k1a2n
+dé2l1a2
+dé2l1e2l
+dé2l1es
+dé2lir
+dé2lo
+dé2lu
+dé2lyá
+2d1é2pí
+dé2raj
+dé2rar
+2d1érté
+2dért®
+dé2sa
+dé2s1el
+dé2s1o
+dé2sö
+dé2sza
+dé2ti
+dét1is
+dé2tu
+2d1év.
+2d1é2vei
+2d1é2vek
+2d1é2ven
+2d1é2ves
+2d1é2vet
+2dévér
+2d1é2vi
+d1f2
+dg2
+dgá2z
+d1gr
+1di
+di2ac
+dia2dó
+di2afo
+di2ah
+di2ain
+di2aj
+di2am
+di2ap
+dia1szk
+di2at
+di2av
+2d1i2d®
+die2s
+di1fl
+digaz1
+di2gén
+di2gér
+2d1i2gét
+di1k2ro
+di2k1u2ta
+2d1ind
+di2ol
+di2óa
+di2óc
+di2ófe
+di2ósz
+2d1i2rod
+2d1irt
+2d1iste
+2d1i2zü
+1dí
+dí2j1al
+dí2ji
+2d1ín.
+2d1í2rá
+d1írn
+dí2ró
+2díz
+dí2zi
+d2j1i
+dk2
+dkész1
+d1kr
+dlás1s
+dl®1k2
+dme2g1é
+1do
+2dodú
+doe2
+doge2
+do2k1ú
+do2laj
+2d1oml
+do2n1e
+do2név
+do1p2h
+do2re
+do2r1é2
+do2rip
+do2ris
+do1sz2k
+2doszt
+1dó
+dóa2
+dóel1
+dó1p2
+dó2sem
+2dósl
+dó2só
+2d1ó2vó
+1dö
+döke2
+dö2k1er
+dö2kí
+dö2le
+2d1ö2v
+1d®
+d®a2
+d®1d2r
+d®e2r
+d®é2
+d®i2rá
+2d®ra
+2d1®rb
+2d1®rez
+2d1®rf
+2d1®rh
+2d1®2rig
+2d®ril
+2d1®rj
+2d1®rk
+2d1®rm
+2d®rö
+d®2rök
+d®2rön
+2d®r®r
+2d1®rr
+2d1®r1s
+2d1®rt
+2d1®rv
+d®1ská
+d®1s2p
+d®2tál
+d®1tr
+d®u2
+d1p2
+1d2rám
+dri2t1
+drog2r
+drop2
+1d2ruk
+dsé2gi
+d1s2p
+d1s2t2
+dsuhanc1
+d2tarc
+1du
+du2c3h
+du2gal
+du2g1ár
+2d1u2no
+2d1unt
+du2se
+dus3s
+du2ta
+du2tá
+1dú
+dú2cs
+dú2to
+1dü
+2d1ü2g
+2d1ü2z
+1d¶
+2d1¶2z
+dv1or
+dy1a
+1dyk
+d2z
+1dza
+1dzá
+d3zár
+1dze
+1dzé
+1dzi
+1dzí
+1dzo
+1dzó
+1dzö
+2d3zöld.
+1dz®
+2dz®j
+2dz®s
+1dzsa
+1dzsá
+1dzse
+1dzsé
+1dzsi
+1dzsí
+1dzso
+1dzsó
+1dzsö
+1dzs®
+1dzsu
+1dzsú
+1dzsü
+1dzs¶
+1dzu
+1dzú
+1dzü
+1dz¶
+2e.
+e1a
+e2ac
+ea2da
+ea2dá
+e2adi
+ea2do
+ea2dó
+ea2du
+e2aga
+e2ah
+eai2v
+ea2j
+e2aki
+e2ako
+ea2la
+ea2lá
+e2ale
+ea2p
+e2ar.
+ea2ra
+eas3s
+east2
+e2at.
+e2atk
+e2atl
+e2ato
+e2au
+ea2z
+e1á
+eá2bé
+eá2cs
+eá2f
+eá2g
+eá2ke
+eá2lár
+e2ále
+eá2l1é
+eálu2
+e2ámu
+eá2nyal
+eá2nyan
+eá2nyas
+eá2nye
+eá2sa
+eá2se
+eá2so
+e2áte
+e2áté
+e2átö
+eb1a2d
+e2b1ajk
+eb1atl
+1e2béd
+eb1ing
+e1b2lo
+eb1ó2r
+ec1á2r
+2ecento
+ece2ti
+ecés1
+ec3hez
+ecs1ért
+edeles1
+ede2ri
+edé2lyo
+1e2dény
+edés3s
+2edi
+edi2g
+e2d1iga
+edi2ó
+ed1iro
+ed1ír
+ed1íz
+ed1orv
+e1d2ró
+edu2r
+e1dy
+e1e
+ee2b
+ee2c
+e2e2d1
+ee2g
+ee2l
+eel1i
+eel1o
+ee2m
+e2ene
+ee2r
+ee2se
+ee2sé
+ee2si
+ee2s®.
+ee2s®n
+ee2sü
+ee2sz
+ee2tet
+e2e1th
+ee2v
+e1é2
+e2gabá
+eg1abr
+e2g1a2d
+e2g1a2g
+e2g1a2j
+e2g1a2k
+ega2lac
+ega2lak
+e2g1a2lá
+e2g1alt
+e2g1alu
+e2g1alv
+eg1ann
+eg1any
+e2g1a2pa
+e2g1apr
+e2g1a2r
+e2g1a2s
+e3gat
+e2g1au
+e2g1a2v
+e3gaz
+eg1á2cs
+e2g1ág
+eg1áld
+eg1álm
+e2g1á2r
+e2g1á2s
+eg1áta
+eg1átk
+eg1átl
+eg1á2zi
+eg1ázt
+e2g1e2g
+e2g1eh
+e2g1ej
+ege2lem
+ege2léb
+e2g1ell
+e3g2el®i
+e2g1els
+eg1emé
+e3gend
+e2gerd
+e2g1esh
+eg1essz
+eg1e2sze
+e2g1e2tet.
+e2g1é2g
+egé2k
+eg1éke
+e2g1é2le
+eg1é2lü
+egé2nyel
+e2g1épí
+eg1épü
+e2gér.
+eg1érd
+egé2ret
+eg1érj
+1egészs
+eg3gya
+eg3gyás
+eg3gyen
+eg3gyo
+eg3gyú
+e2g1if
+egi2g
+e2g1iga
+e2g1ige
+e2g1igé
+eg1iha
+e2g1ij
+eg1ill
+e2g1ing
+eg1ino
+egi2p
+eg1ira
+egi2ro
+e2g1ist
+eg1iszi
+eg1iszo
+e2g1ita
+e2g1itta.
+e2g1ittá
+egius1
+eg1ivá
+eg1izg
+eg1izm
+eg1ír
+eg1o2d
+eg1o2k
+eg1ola
+e3gom
+eg1op
+e3goro
+e2g1os
+eg1órá
+e2góv
+eg1öb
+eg1ök
+eg1öz
+e1g2ráf
+eg1ug
+eg1un
+eg1u2ra
+eg1u2t
+eg1u2z
+e2g1ú2
+egü2g
+eg1ü2li
+eg1ür
+eg1üz
+egy1a2d
+egya2r
+egy1as
+egy1a2t
+egy1az
+egy1ál
+egy1ára
+egy1ell
+1e2gyenl
+egyes1s
+egy1eszt
+egyköz1
+egyo2
+egy1ol
+egy1om
+egy1ór
+egy1öl
+egy1ös
+egy1®r
+e2gyür
+1együt
+ehé2ra
+ehé2z1
+1ehh
+e2h1ors
+eh1s
+e1i
+e2ia
+e2iá
+e2ibu
+e2ic
+e2idá
+eido1
+ei2d®
+e2ier
+e2if
+ei2gá
+ei2gé
+ei2gy
+ei2ha
+ei2j
+e2ima
+ei2má
+e2ini
+e2inr
+eins2
+ei2on
+ei2pa
+ei2ram
+ei2rat
+ei2rod
+e2iró
+ei2ta
+e2ito
+e2itu
+ei2vó
+e1í2
+ej1a2d
+ej1al
+ej1ál
+ejes1s
+ejé2k
+e2j1ék.
+e2j1éke
+e2j1in
+ej1kr
+ej1ol
+ej1op
+ej1os
+ejta2
+ej2tak
+ej2tal
+ej2t1an
+ej2tau
+ej2tál
+ej2tár
+ej2tát
+ej2tos
+e2j1ú2
+ek1a2dó
+e2k1aj
+e2k1alj
+ek1áll
+ek1ár.
+e2k1e2l®t
+ek1é2le
+ek1épí
+e2k1éss
+e2k1é2te
+ekie2
+ek1ist
+e2kod
+ek1orv
+ekö2l
+ek1ölé
+ek1öl®
+ek1®r
+ek2rit
+ek2tal
+ek1út
+e2k1üt
+ek2vit
+el1ad.
+el1a2da
+el1a2dá
+el1add
+el1adh
+el1adj
+el1adn
+el1a2dó
+el1adt
+el1adv
+el1agg
+el1a2gy
+ela2j
+el1ajá
+el1akc
+e2l1a2l
+ela2m
+el1ame
+el1ann
+el1a2ny
+el1a2pa
+el1apr
+el1aszá
+e2l1a2u
+el1a2v
+el1ács
+e2l1á2g
+el1áj
+el1áll
+el1álm
+el1á2m
+el1á2p
+el1ár.
+el1ára
+el1árb
+el1árn
+el1á2ro
+1eláru
+el1árv
+elá2s
+el1ás.
+el1ása
+el1ásn
+el1áso
+el1ást
+el1ásv
+el1áta
+el1átk
+el1átr
+el1ázi
+el1ázo
+el1ázv
+eld2
+el1dr
+el1ebl
+ele2gal
+e2leges
+el1e2gyen
+el1egz
+el1e2lev
+e2l1ell
+e2l1elm
+el1ember
+e2leme.
+1e2lemei
+1e2lemek
+elem1ell
+1e2lemez
+ele2m1érté
+el1e2més
+1e2lemi.
+1e2lem¶
+1e2lemzé
+1e2lemz®
+ele2res
+el1erj
+el1erk
+el1ern
+e2l1e2r®
+ele2s1a
+ele2sem
+el1esh
+ele2sik.
+eles3s
+ele2tele
+el1é2ges
+el1é2get
+eléka2
+el1é2kel
+el1él.
+elé2lek
+el1é2lé
+el1élh
+el1élj
+el1éln
+el1élt
+el1élv
+el1érc
+elé2rem
+elé2ren
+e2l1é2rez
+1e2l1éré
+e2l1érh
+el1é2ri
+e2l1érj
+e2l1érk
+e2l1érn
+el1érs
+e2l1érü
+el1f2
+el1iga
+e2l1ige
+2elik
+el1ikr
+el1ill
+el1ina
+e2l1ing
+elin1n
+elio1
+eli2os
+el1ivá
+1e2lix
+el1izm
+e2l1ín
+el1ír.
+el1íra
+el1í2rá
+e2l1í2v
+2elj.
+el1k2
+ell1alk
+1ellátásü
+1ellens
+ellu2s
+1elmél
+2elné
+e2l1o2l
+el1oml
+el1orc
+el1ord
+elo2s
+el1oso
+el1oss
+el1ox
+el1ó2ri
+el1öm
+el1ön
+el1ör
+el1ö2z
+1e2l®ad
+2el®bé
+1el®d.
+2el®in
+2el®it
+2el®kh
+2el®kk
+2el®kö
+2el®kr
+2el®ne
+1e2l®®
+2el®r
+2el®t.
+2el®ter
+e2l®tet
+1el®vés
+el1ph
+el1p2l
+el1pra
+el1st
+2eltek
+2eltes
+2eltet.
+2eltete
+2elteté
+2elteti
+2eltetn
+el2töv
+el1u2r
+el1u2s
+el1u2t
+el1ús
+el1üd
+el1üs
+e2l1üt
+el2val
+el2v1at
+el2v1ó2
+e2ly1a2
+e2ly1á2
+e2lyel
+elyes1s
+e2ly1o
+e2lyö
+ely2tál
+e2m1ab
+em1a2da
+em1a2dó
+em1adt
+ema2j
+em1aja
+em1ajk
+ema1k
+em1a2ny
+em1arc
+e2m1ass
+em1atl
+e2m1av
+e2m1áb
+em1ár.
+e2m1árn
+e2m1átl
+1emberr
+1embó
+eme2c
+emec3h
+1emeled
+1e2melen
+1emelk
+e2m1elm
+e2m1e2l1o
+em1e2res
+e2m1e2r®
+em1ers
+e2m1é2j
+emé2lete
+1e2méss
+e2mid
+e2m1im
+e2m1ip
+e2mirá
+e2mír
+2emo
+em1old
+e2m1orv
+em1ó2ra
+em1ös
+em1ph
+em1s
+1e2mu.
+em1ur
+em1üg
+em1ür
+em1¶z
+e2n1a2j
+e2n1ak
+e2n1a2n
+en1ar
+en1as
+e2n1a2u
+e2n1áb
+en1áll
+e2n1ár.
+e2n1ára
+en1á2ro
+en1ázt
+en2c3h
+enci2ah
+enc3sze
+en2d1ell
+en2dza
+en1elm
+e2n1emé
+ene1p2
+2enerá
+1e2nerg
+ene2t1o
+e2n1eze
+e2n1é2ra
+engés3s
+eng1g
+2eni
+eni2g
+en1igé
+e2n1ip
+en1ira
+e2n1ism
+e2n1ív
+enké2t
+en1k2r
+en2nül
+en1old
+en1ó2r
+en1öl
+e2n1ö2t
+ensas3
+en2sel
+en1ste
+ent1a2ny
+entes1s
+en2tev
+ent1ért
+en1uc
+en1ud
+enu2t
+e2n1ú
+2enw
+e2ny1ag
+en3ya2n
+eny1as
+e2nyau
+enyeres1
+e2ny1ó2
+eny1us
+en2zed
+e1o
+e2oc
+eo2da
+e2odi
+eo1g2rá
+e2oh
+e2oka
+e2o1k2l
+e2oko
+eo1k2r
+eo2ly
+e2omé
+eona2
+eo2n1ar
+e2oná
+eont2
+eon1tr
+eo1p2
+eo2pe
+eorgi2á
+e2os.
+eo2so
+eosz2f
+e2ov
+e2oz
+e1ó
+e2óf
+e2óm
+e1ö
+eö2l
+eö2m
+eö2v
+eö2z
+e1®2
+epa2d
+ep1ado
+ep1aka
+ep1a2la
+ep1asz
+e2p1ág
+ep1elo
+e2perf
+ep2ha
+ep2ho
+ep2lan
+ep2las
+e2pos
+ep2rav
+ep2rio
+ep2tol
+er1abl
+er1a2da
+er1adm
+er1ajk
+er1akc
+e2r1akk
+e2r1a2la
+er1alk
+er1ana
+er1ann
+er1a2pa
+er1apá
+era2r
+er1ara
+er1ass
+erato1s
+e2r1a2u
+e2r1a2v
+e2ra2z
+er1azo
+er1á2gy
+e2ráld
+e2r1áll
+er1ár.
+erá2rak
+er1árb
+e2r1árf
+er1árk
+er1árn
+er1á2ro
+er1árr
+er1árt
+er1á2ru
+er1áta
+er2cél
+er2c3h
+1erd®
+1e2redm
+ere2gá
+1erejü
+ere2kar
+erekes3s
+ere2ko
+e2r1ela
+e2r1ell
+er1elo
+e2remu
+ere2tel
+ere2vel
+e2r1ex
+erés3sze
+e2r1év.
+eré2zé
+er1gl
+er1ide
+e2r1iga
+e2r1ind
+e2r1inj
+e2r1ism
+er1i2sza
+eri1szk
+er1izo
+er1izz
+er1íj
+e2r1íz
+er1kr
+1erny®
+ero1g2r
+ero1t2r
+er1o2xi
+e2r1ó2r
+e2r1ö2k
+e2r1ö2l
+er1ön
+er1ös
+e2r1ö2t
+er1ö2z
+1e2r®m¶
+1er®sít®.
+1er®sít®r
+1er®szakol.
+er1pl
+erro1k2
+er2s1a2d
+er2san
+er2sar
+er2s1ol
+er2s1ö
+er1str
+er2sú
+er2t1any
+erta2r
+ert1ara
+2erte
+ertés3s
+e2r1ur
+e2r1ü2g
+er2vos
+e2s1ac
+es1a2n
+esa2p
+e2s1as
+es1áb
+es1á2g
+e2s1ál
+es2co
+e2s1ekkén
+e2s1elm
+e2s1emb
+1esemé
+e2s1ina
+es1i2pa
+es1ita
+es1í2rá
+es1k
+es2kat
+1eskü
+e1s2lat
+es2már
+es1ol
+e2s1os
+e2s®c
+e2s®e
+es3szö
+esta2l
+est1ala
+es2t1áll
+es2t1á2p
+es2tim
+es2tí
+es2top
+es2t®r
+es1trá
+e1s2tu
+es2tú
+es1ú2s
+es1út
+es1ü2ve
+e1sy
+es3zac
+e2sz1ad
+esza2ké
+e2szárp
+e2szev
+e2szég
+esz1é2les
+esz1iz
+e1sz2kó
+es3zse
+eszta2
+esz2t1al
+esz2t1an
+esz2tár
+esz2t1ö
+e2t1a2d
+eta1g2r
+e2t1aj
+et1akt
+et1a2la
+et1alk
+e2t1ant
+eta2nya
+eta2nyá
+et1a2rá
+etas2
+et1ass
+et1ág.
+et1á2ga
+et1ágn
+et1áll
+etá2ru
+e2t1á2t1a
+et1átl
+eteá2
+ete2l1eg
+ete2ná
+e2t1ene
+ete2szá
+eté2ká
+eté2kel
+eté2ko
+e2t1érté
+e2t1érz
+etés3s
+eté2t1é
+et1év.
+et1é2vet
+et1é2véb
+et1é2vét
+et1évh
+e2t1i2d
+eti2g
+e2t1iga
+e2t1igé
+e2t1ill
+e2tim
+et1inf
+e2t1iri
+e2t1iro
+et1írá
+et1í2v
+et1okm
+et1okt
+eto2na
+e2t1ös
+et1®r.
+et1®2ri
+et1®rn
+et1®2rö
+et1®rs
+e1t2raf
+et2sz1ék
+et2tel®
+e2t1ug
+e2t1u2n
+et1u2r
+e2t1u2t
+et1új
+e2t1út
+e2t1üd
+e2t1üld
+e2t1üt
+et3ya
+e2ty1o
+2etz
+e1t2ze
+e1u
+eu2ga
+eu2go
+e2ume
+eumi2
+eu2miv
+e2uras
+e2urá
+eu2r1á2z
+e1ú2
+e1ü2
+e1¶
+evéle2
+evé2l1el
+ex1io
+e2x1í2
+1expe
+1expo
+e1ye
+ez1a2d
+e2z1ak
+1e2z1a2l
+e2z1az
+ez1ál
+ez1egy
+e2zer.
+eze2ra
+eze2re.
+eze2reg
+eze2r1o
+eze2ta
+eze2t1el
+ezé2rem
+ez1idá
+ez1ill
+ez1inf
+ez1int
+e2z1i2p
+ez1ir
+ezo1k2
+ez1org
+ez1ó2t
+ez1ön
+ez®kész1
+1ezred
+1ezrei.
+1ezreir
+1ezreit
+1ezreiv
+1ezrek
+1ezrel
+1ezres
+1ezret
+e2z3sé
+ez3sor
+ez1ut
+ez1út
+1ezüs
+2é.
+é1a2
+é1á2
+éb2bá
+é2b1ir
+é2c1a
+é1ch
+é2c3so
+éc3sz
+é2d1ab
+é2d1a2c
+éd1ad
+é2d1ak
+éd1a2la
+é2d1a2n
+éd1a2p
+é2d1as
+éd1ág
+é2d1e2g
+éde2leme
+é2d1els
+é2d1eml
+é2derb
+é2derek
+é2deré
+é2dern
+é2derr
+é2dert
+é2desí
+édes3s
+é2d1él
+éd1ért®
+éd1érv
+édi2a1s
+édiasz2
+é2d1i2g
+é2d1in
+é2d1ír
+édna2
+é2d1or
+éd1ut
+éd3za
+éd3zá
+é1e2
+éesz1
+é1é
+2éf
+é2g1ab
+éga2d
+ég1a2g
+é2g1aj
+é2g1a2k
+ég1a2l
+ég1a2z
+ég1á2g
+ég1ál
+é2g1ára
+é2g1elb
+ége2lem
+é2g1elg
+é2g1ell
+é2g1elm
+é2g1e2l®
+égel®i2
+é2g1els
+ége2n
+é2g1eny
+ége2r1ü
+1é2gesd
+1é2geti
+1é2getn
+é2g1é2g
+é2g1é2l
+é2g1ép
+é2g1éri
+ég1érte
+ég1érté
+ég1érv
+é2g1id
+égi2g
+égig1a
+égigé2
+ég1ill
+é2g1ing
+ég1int
+ég1ír
+ég1o2l
+ég1ot
+ég1ó2r
+é2g1ö
+1é2g®
+ég1u2t
+é2g1ú2
+ég1ü2g
+ég1ür
+é2gy1eg
+é2gyele
+é2gy1em
+é2gy1esz
+é2gyeze
+é2gy1ér
+é2gy1év
+é2gy1o
+é2gy1ó2
+é2gy1ö2
+égyszáz1
+égyszín1
+é2gyu
+égyü2
+é2gy1ül
+é2heze
+é2hezi
+é2hezt
+éh1ín
+é1i
+éi2ro
+é1í2
+éj1a2d
+éj1e2g
+é2ji
+éj1it
+é2k1ab
+ék1acé
+é2k1a2d
+é2k1a2g
+é2k1a2j
+ék1a2la
+ék1alj
+ék1alk
+ék1ana
+éka2nya
+é2k1a2r
+ék1á2f
+é2k1ál
+é2k1árb
+é2k1á2ru
+é2k1áta
+é2k1elm
+é2k1elo
+é2k1e2mel
+ék1eng
+éke2nya
+ékes3s
+ék1ég
+éké2p
+ék1épí
+ék1épü
+ék1ér.
+é2k1é2rem
+ék1érl
+é2k1érte
+é2k1érté
+é2k1érz
+é2k1i2d
+ék1ing
+ék1int
+é2k1i2p
+éki2r
+ék1ira
+ék1ism
+ék1ír
+ék1íz
+ék1k2
+é2k1or
+é2k1osz
+é2k1ös
+é2k1®2
+ék1t2
+é2k1ud
+é2k1u2t
+ék1út
+é2k1ünn
+é2k1ür
+é2k1üz
+él1abl
+él1akn
+é2l1a2l
+é2l1a2u
+él1áj
+él1á2l
+é2l1árk
+é2látf
+éld2
+él1dr
+é2lebé
+él1e2gy
+éle2k1a
+éle2ker
+éle2kö
+é2l1emb
+é2leme
+é2l1emp
+é2l1enn
+éle2sa
+éle2sz
+éle2ta
+éle2t1á2
+éle2t1e2l
+élet1érd
+éle2t1é2ve.
+éle2t1ö2
+é2l1é2d
+é2l1é2l
+él1é2ret
+él1é2vet
+él1é2vi
+él1f2
+é2l1i2d
+é2l1iga
+éligaz1
+éli2gá
+é2l1i2m
+é2l1in
+él1i2pa
+él1irá
+é2l1í2
+él1k2
+é2l1o2l
+él1op
+é2l1o2r
+él1ó2r
+élö2
+él1ök
+él1öl
+él1ön
+él®e2
+él®kész1
+él1®z
+él1p2
+éls2
+él1st
+él2t1e2v
+él1t2r
+él1ug
+él1uj
+él1u2t
+él1út
+é2l1üt
+ély1á2l
+ély1egy
+élye2n1
+é2lyil
+é2ly1in
+é2lyüt
+é2male
+ém1ass
+ém1ato
+é2m1á2l
+ém1áru
+ém1edé
+ém1e2le
+é2m1elh
+ém1el®
+é2mesem
+é2m1esz
+éme2ta
+éme2tel
+émé2l
+ém1étk
+é2m1ip
+é2m1ir
+ém1ol
+é2m1ó2
+é2m1ö2
+ém1p2
+ém1u2r
+én1ant
+éna1p2
+én1ass
+é2n1a2to
+é2n1áll
+én1átv
+én1egy
+é2nekel.
+1é2nekes
+1é2nekl
+én1elj
+én1el®
+én1elt
+é2nem
+én1emb
+é2n1é2g
+éné2m1
+én1f2
+én1int
+é2n1i2o
+é2n1ip
+én1ita
+é2n1i2z
+énkupac1
+énmo2n1
+2énn
+én1öve
+én2s1as
+én1s2p
+én2su
+én2sú
+én1t2r
+én1u2t
+2ény
+é2ny1a2
+é2ny1á2
+é2ny1ell
+ény1elv
+é2ny1e2r
+é2nyev
+é2nyél
+é2nyérté
+é2ny1érv
+é2nyérz
+é2nyis
+é2ny1it
+é2ny1í2r
+é2ny1o2
+é2ny1ó2
+é2ny1ö2
+é2nyu
+én2z1a2
+én2z1á2
+én2zéh
+én2z1i2
+én2z1o
+én2zö
+én2zse
+énz3sz
+én2z1u2
+é1o2
+é1ó
+é1ö
+é1®
+ép1a2d
+ép1a2g
+ép1a2l
+ép1a2n
+épa2r
+épar2t
+ép1ág
+ép1ál
+ép1ám
+ép1áp
+é2p1á2r
+ép1e2gé
+ép1egy
+é2pe2lem
+é2p1ell
+é2p1ep
+ép1ern
+épes3s
+é2p1eti
+é2p1é2l
+é2p1ép
+épés1s
+épi2a
+é2p1i2p
+ép1ira
+ép1iro
+é2p1irt
+é2p1isk
+é2p1iz
+é2p1ír
+épo2
+ép1ok
+ép1ol
+ép2pak
+ép2p1an
+ép2pek
+éppo2
+ép2pod
+ép2p1ol
+ép1pr
+é1p2ró
+ép1t2
+ép1uj
+ép1u2n
+ép1u2r
+ép1u2t
+é2p1ú
+1épüle
+ér1abr
+é2r1a2d
+ér1ajá
+ér1aká
+éra1kl
+ér1akn
+é2r1a2l
+éra2n
+ér1any
+éra2r
+ér1ara
+ér1arc
+é2r1as
+é2r1a2t
+é2r1a2u
+ér1á2g
+ér1ál
+é2r1ár.
+érá2rak
+ér1áru
+ér1áz
+ér2ca
+ér2cá
+1ércb
+érc3c
+ér2ced
+1ér2c3h
+ér2c1o
+ér2c1ö
+ér2cz
+ér2dz
+ére2b
+é2r1eb.
+é2r1ebe
+é2r1e2dé
+ére2ga
+ére2g1á
+éreg1g
+é2r1e2gy
+ér1elk
+é2r1ell
+ér1e2l®
+é2r1els
+ér1eny
+é2r1e2re
+é2r1e2s®
+éres3s
+ére2ta
+ére2tel
+é2r1e2v
+é2rezh
+é2rezv
+ér1é2kek
+ér1ékel
+é2r1é2l
+é2réneke
+éri2as
+é2r1i2d
+éri2g
+ér1iga
+ér1ige
+ér1ill
+é2r1isk
+é2r1ist
+ér1i2sz
+é2r1itt
+é2r1iz
+é2r1ív
+ér1old
+ér1olv
+ér1ont
+é2r1or
+é2r1ö2
+é2r®se
+ér1p2
+érs2
+ér1sk
+ér1st
+1értelm
+1ért®c
+1ért®j
+1ért®r
+1ért®v
+ér1tra
+ér1u2r
+ér1u2t
+ér1u2z
+ér1úr
+ér1út
+ér1üld
+ér1üt
+érva2d
+érvén3n
+1érvv
+1érzeté
+1érzékenye
+1érzékenyí
+1érzékenyül.
+1érzékenyülé
+1érzékenyülh
+1érzékenyülte
+1érzékenyülts
+1érzékenyülv
+ésa2
+és1ad
+és1al
+é2s1an
+és1ál
+é2s1á2t
+é2s1eg
+és1elá
+és1e2le
+és1ell
+é2s1elm
+és1elo
+és1e2mel
+é2s1esz
+é2s1eti
+é2s1ev
+é2s1él
+é2s1érté
+és1é2ve.
+é2s1id
+é2s1in
+é2s1i2r
+é2s1i2v
+és1í2v
+és1k
+és1ol
+és1os
+é2s1ó
+é2s1öl
+és1ös
+és1p2
+éss2
+és1st
+és3sza
+és3szá
+és3szi
+és3szö
+és3szú
+és1t2r
+é2s1ú
+é2s1üg
+é2s1ü2t
+é1sy
+ész1a2d
+ész1a2g
+ész1a2l
+ész1a2n
+ész1a2r
+és3zav
+ész1á2l
+é2sz1egy
+ész1ell
+é2sz1esz
+é2szex
+é2szez
+é2sz1é2l
+ész1éte
+é2szid
+é2szim
+é2sz1ir
+észi2s
+ész1k2
+é2sz1o2k
+é2sz1ol
+é2sz1ot
+ész1ös
+ész2t1o
+é2s3zu
+é2szú
+ész1üg
+é2sz1üz
+é2t1a2d
+ét1ajt
+ét1a2ka
+ét1akk
+ét1akn
+ét1a2la
+ét1ann
+ét1apr
+ét1arg
+état2
+ét1a2to
+étau2
+é2t1ág
+ét1áll
+ét1árb
+éte2rá
+éte2reg
+éte2rel
+é2t1esé
+é2t1esh
+é2t1e2si
+éte2szem
+ét1e2ve
+ét1ezr
+é2t1é2g
+été2k
+é2t1él
+é2t1érd
+é2t1érte
+é2t1érté
+ét1f2
+é2t1ic
+é2t1id
+éti2g
+ét1igé
+é2t1i2r
+ét1ist
+é2t1i2v
+é2t1ív
+é2t1o2l
+é2t1o2p
+éto2r1i
+é2t1ó2r
+ét1ök
+ét1ö2l
+ét1öm
+ét1ön
+ét1ös
+ét1ö2t
+ét1ö2z
+é2t1®r
+étrás1
+é1t2ró
+ét1sz
+ét1ug
+ét1uj
+ét1üt
+ét1¶2z
+étve2g
+é1u
+é1ú
+é1ü2
+é1¶
+é2vad
+év1adá
+év1adó
+é2valá
+é2v1a2z
+é2vel®
+1é2vent
+év1esté
+1é2v1ez
+1é2vér®
+év1érté
+é2vu
+é2v1ú2
+1évz
+éz1ab
+éz1a2d
+éz1ak
+é2z1at
+é2z1ág
+é2z1ál
+éz1á2p
+éz1d2r
+éze2d
+éze2m
+éz1eme
+éze2n
+éze2t1el
+éz1ev
+é2z1é2d
+é2z1érc
+éz1ill
+éz1ing
+ézi2ók
+é2z1i2r
+ézi2sel
+é2z1í2
+éz1k2
+éz1or
+éz1os
+é2z1ö
+éz3ser
+éz3sé
+éz3sis
+é2z3so
+éz3sö
+ézus1s
+ézü2
+éz1üg
+éz1üs
+éz1üt
+ézve2g
+1fa
+faá2
+fae2
+fa2gyé
+fa2j1ö
+fa2jü
+fala2n
+fal1any
+fa2l1ár.
+fa2l1e2g
+fa2l1e2l
+fa2lí
+fao2
+faó2
+faru2
+fa2r1us
+fas2
+fa1sk
+fa1st2
+fa1t2r
+fa2us
+fazé2
+1fá
+fás3s
+fá2sü
+fá2t1é
+fázás1
+1fe
+fe2gy1i
+fe2j1a
+fe2já
+fe2jo
+fe2l1a2
+fe2l1á2
+fe2l1e2g
+fe2l1e2mel
+fel1emé
+fe2l1eml
+fel1eng
+fe2l1ere
+fe2l1esk
+fe2l1esz
+fe2l1e2tet
+fel1eve
+fe2l1é2g
+fel1éke
+fel1éks
+fe2l1él
+fe2l1ép
+fe2l1ér.
+fe2l1ért
+fel1érz
+fe2l1id
+fe2lij
+fe2l1i2s
+feli2t
+fe2l1ita
+fe2l1iz
+fe2l1í2
+fe2l1o2
+fe2l1ö2
+fel1p2
+fels®rész1
+fel1t2
+fe2lu
+fe2lú
+fen2ná
+fen2tí
+1fé
+fé2ká
+féko2
+fé2kú
+fé2l1a
+fé2l1á
+fé2leg
+féle2m
+fél1eme
+fé2l1esz
+fé2l1ez
+fé2lir
+fé2l1is
+fé2l1o
+fé2ló
+fé2lö
+fé2lu
+fé2lú
+féma2
+fé2mat
+fé2med
+fé2mel
+fé2mét
+fé2ny1e2l
+fé2ny1i
+fé2nyí
+2férá
+1f2fy
+1fi
+fi2ah
+fia2la
+fi2ap
+fi2asz
+fi2av
+fie2
+fi2l1el
+fina2
+fi2n1ag
+fi2nid
+fint2
+fi2n1u2
+fió2ki
+fi1sc
+fist2
+fi2t1é2
+fi2tor
+1fí
+f1k2
+fki2
+fkis1
+f2ló
+f2lú
+fme2
+1fo
+fog1g
+fo2g1or
+fo2g1os
+fo2n1au
+fo2nát
+fond2
+fon1dr
+fo2nel
+fo2n1in
+fo2nü
+fo2r1il
+foto1s
+1fó
+1fö
+föle2
+fö2leg
+föl1el
+fö2len
+fö2l1esk
+fö2l1et
+fö2lék
+fö2lí
+1f®
+f®e2
+f®é2
+f®i2
+f®2r1ü2
+f®1tr
+f®u2
+f®ú2
+fra1s
+f2ric
+1f2rö
+fs2
+f1st
+ft1aj
+ft1ak
+1fu
+fus3sz
+fu2sz1ol
+1fú
+1fü
+fü2lo
+fül1t2
+fü2mi
+f1ü2té
+f1ü2t®
+1f¶
+1fy
+1ga
+ga2a
+g1a2bál
+2g1abl
+2gabr
+2g1a2cé
+ga2de
+gae2
+ga2gi
+ga2kad
+2g1a2lap
+2g1a2lám
+g1alb
+g2ali
+2g1alk
+3g2all
+2g1als
+ga2lul
+gan2cse
+gan1d2
+2gank
+2g1a2nya
+ga2nyá
+ga2nyó
+gaó2
+ga2pa.
+2g1apj
+ga2pol
+2g1a2pó
+2g1app
+ga2se
+ga2sé
+ga2s1i
+ga2su
+ga2szág
+g2at
+gata2r
+gat1ará
+ga2t1eu
+ga2tim
+ga2ut
+ga2vat
+2gazg
+2gazít.
+2gazíta
+2gazítá
+2gazítók
+2gazítón
+2gazs
+1gá
+2g1á2bé
+2gábr
+3g2áci
+gá2dá
+2g1á2f
+gá2gy
+g1á2hí
+3g2áli
+g1állh
+g1állí
+g1álls
+g1állu
+2g1állv
+2g1á2mí
+gána2
+gá2nad
+gá2nal
+gá2nap
+gá2nau
+gá2n1e2
+gá2nén
+gá2n1ér
+gá2nin
+gá2n1ó
+gá2nú
+gá2nye
+gá2ny1út.
+2g1á2p
+2g1á2rad
+g1á2rak
+gá2ral
+g1á2ram
+gá2r1as
+gá2r1ál
+gá2rár
+gá2r1e
+gá2riz
+gá2rö
+gá2ru
+gá2r1út
+gá2san
+gá2s1e2
+gásé2
+gási2
+gá2sir
+gá2sze
+gá2szé
+gá2s3zö
+gá2ta2l
+gá2té
+2gátk
+3g2átló
+3g2áto
+gá2t1os
+2gátr
+3g2átu
+2g1á2tü
+2g1átv
+gá2z1ad
+gá2z1al
+gá2z1a2t
+gá2z1e2
+gázi2
+gá2z1ip
+gá2z1ó2r
+gázs2
+gáz3sé
+gá2zsu
+2g1á2zu
+g1b2
+g1d2r
+1ge
+gea2
+geá2r
+2gebé
+ge2cet
+2g1e2dén
+2g1e2dz
+2g1eff
+ge2gé
+gegész1
+ge2gye
+ge2he
+g2ek.
+3g2el.
+2g1e2l1a2
+ge2leg
+ge2lej
+gel1eng
+ge2lev
+ge2lég
+3g2elés
+2g1elhá
+3g2elhe
+3g2eli.
+3gelik
+gel1ism
+ge2l1í2
+3gelj.
+2g1eljá
+3g2elne
+3gelné
+3g2elni
+g1elny
+2g1e2l1o
+ge2lö
+3g2el®.
+ge2l®bb
+3gel®bé
+3g2el®h
+3g2el®j
+3g2el®k.
+3g2el®ket
+3gel®kh
+3gel®kk
+3gel®kö
+3gel®kr
+ge2l®l
+3g2el®m
+3g2el®n.
+3gel®ne
+ge2l®re
+3gel®r®
+ge2l®s
+3gel®t.
+2g1el®te
+3g2el®v
+ge2l®z
+2g1elp
+g1els®
+3g2elt.
+3geltek
+3geltes
+3geltet.
+3geltete
+3gelteté
+3gelteti
+3geltetn
+2g1eltér
+2g1elto
+ge2lu
+ge2lül
+2g1elvá
+2g1elvez
+2g1elvo
+2g1elz
+3g2em.
+2g1ember
+2g1e2mel
+ge2més
+2g1eml
+ge2na
+genci2as
+g2end
+3generá
+2g1enge
+ge2n1is
+2g1ennék
+2g1enni.
+2g1ennie
+2g1enyh
+2g1enyv
+ge2of
+ge2o1g2
+ge2oló
+ge2om
+ge2o1s
+ge2ral
+ge2r1a2n
+ge2r1ág
+ge2r1á2r
+g1e2rej
+ge2r1ekké
+ge2riz
+ge2r1os
+ge2rö
+2g1e2r®
+ge2r¶
+3g2es.
+ge1sc
+ge2sem
+ge2sett
+2g1e2sés
+2g1e2sik
+2geskü
+2g1e2s®
+ge2sú
+2gesze
+ge2szé
+ge2szik
+2g1eszl
+2g1eszm
+2g1eszn
+2g1e2szü
+ge2sz¶
+g2et.
+ge2ter
+2g1e2tete
+2g1e2tetn
+2g1e2tette.
+ge2t1or
+ge2ur
+2g1e2ve
+2g1e2vé
+2g1e2v®
+1gé
+gé2ber
+2g1ébr
+gé2da
+gé2d1e2l
+gé2d1esz
+gé2dé
+gé2dí
+gé2d1o
+gé2gü
+gé2hes
+gé2led
+gé2let
+gé2lén
+gé2li.
+2g1éls
+gé2lya
+gé2lyá
+gé2lyeg
+géna2
+gé2nat
+géná2
+gé2n1ár
+gé2nát
+gé2n1el
+gé2nit
+gé2nyemb
+gé2nyeme
+gé2nyir
+gé2p1a
+gé2pá
+3g2épe
+gé2peg
+gé2pir
+gé2pí
+gé2po
+gé2pül
+gé2r1á
+2gérd
+g1é2red
+gé2reg
+2gérh
+g1é2rin
+2gérj
+2gérk
+2gérl
+g1érle
+2gérs
+2gérte
+2gérté
+g1érth
+g1érti
+g1értj
+g1érts
+g1értt
+g1értv
+gé2ru
+gé2rú
+2gérv
+2g1érz
+gé2sá
+gé2sel
+gé2so
+gé2sza
+2gészs
+2g1é2te
+2g1év.
+g1f2
+gfe2li
+g1g2ra
+g2gy
+g3gyár
+g3gyér
+g3gyi
+g3gyó
+g3gyö
+g3gy®
+g3gyu
+ggy1ült
+g3gy¶
+1g2hék
+1ghy
+1gi
+gi2abo
+gi2ac
+gi2ad
+gi2af
+gi2ag
+gi2ah
+gi2ako
+gi2am
+gi2ap
+gi2ar
+gi2asze
+gi2aszi
+gi2aszo
+gi2ata
+gi2av
+3g2iá
+3g2idá
+2g1i2de
+2g1i2dé
+gi2d®
+gie2r
+gi1fl
+2g1igaz
+gig1ár
+gig1e2s
+gig1él
+gi2gén
+gig3g
+gi2gi
+gi2g1o
+gi2gö
+gi2g1u
+2g1i2gy
+2gihl
+gii2
+2g1ikr
+2g1i2má
+2g1i2mi
+2g1imp
+2g1ind
+2g1inf
+2g1inn
+2gino
+2gint.
+2g1inte
+2g1inté
+2g1inti
+2g1int®
+2g1inv
+3g2io
+gi2or
+2g1i2rá
+2giro
+gi2rod
+giro1s
+2g1irt
+g1isc
+2g1isk
+2g1ism
+2g1iss
+2g1iste
+3g2iti
+2gittam
+2gittasodh
+2gittasodi
+2gittasodn
+2gittasu
+gius3s
+gi2vó
+2gizg
+2g1i2zo
+2g1izz
+1gí
+2g1íg
+2g1íj
+2g1í2n
+gí2ra
+gí2rá
+gí2ro
+gí2ró
+2g1í2z
+g1k2
+gki2s1a
+g2lio
+glóa2
+gme2g1á
+1g2nac
+1g2náb
+g2n1e2l
+gnes3s
+gn1ing
+1gnore
+1go
+go2e
+go1g2r
+goi2
+goka2
+gok1ad
+2g1o2ká
+2g1o2laj
+g1olc
+2g1olda
+go2lin
+go2lór
+2golvas
+2g1o2lyo
+go2m1as
+2g1oml
+g2on
+3goná
+gonc3s
+go2nye
+go2pe
+g2oro
+gosz2kó
+go1t2h
+1gó
+3gó.
+gó2ce
+gó2ch
+2górá
+gó2rák
+gó2rát
+gós3s
+gó2tí
+g1óv.
+g1ó2vo
+g1ó2vó
+1gö
+2göb
+2g1ö2le
+g1ö2li
+g1öls
+3gömb
+g1öml
+3g2öng
+g1önt
+3görb
+gör2cso
+3gördí
+3gördü
+g1ö2re
+3görg
+3görn
+g1ö2rü
+gö2s1é2
+2g1össz
+2g1ö2v
+1g®
+g®2g1®
+2g1®2ri
+2g1®rj
+2g1®rl
+2g1®2rö
+2g1®2rü
+2g1®rz
+g®2s1ü2
+g1®szí
+g1®szü
+g®ü2
+g®2z1e2k
+g®2zel
+g®2zsu
+g1p2
+1g2rafá
+1grafik
+g2ra1p
+1g2ráf.
+grá2fe
+1gráfia
+1gráfiái
+1gráfián
+1gráfiát
+1gráfu
+grá2l1e2
+grá2rip
+grás1s
+g2ríz
+g2róf
+gs2
+g1sk
+g1sp2
+g1st2
+gszáz1
+gszt2
+g1t2
+gtá2v1i2
+gtíz1
+1gu
+3g2ub
+2gu2g
+3gugg
+gu2il
+gu2in
+2g1uj
+gu2na
+gu2no
+3gurí
+3g2uru
+gu2sab
+gu2s1í2
+gu2sol
+gus3s
+gu2tak
+gu2tam
+gu2tat
+gu2to
+2g1u2tó
+1gú
+g1úg
+2g1ú2j
+gú2nyi
+gú2te
+gú2té
+g1úth
+g1ú2ti
+g1útj
+g1útn
+g1ú2to
+g1útr
+g1útt
+1gü
+2g1üd
+2güg
+2g1üld
+gü2lik
+2g1ünn
+2gür
+gü2re
+gü2rü
+2g1üs
+2g1ü2t
+2g1ü2v
+2güz
+gü2ze
+1g¶
+2g1¶r.
+2g1¶2z
+gví2z1
+g1w
+g2y
+1gya
+gy1acé
+gy1a2dá
+gy1adm
+2gy1a2j
+gya2lap
+gyan1ab
+gy1ann
+gy1a2nya
+2gy1apa
+2gyapi
+2gyapó
+2gyapu
+gya2r1ó2
+2gyaty
+2gyazo
+1gyá
+2gyábr
+2gyág
+gy1áll
+gy1álm
+gy1á2lo
+gyá2ma
+gyá2ria
+2gyáru
+2gyáta
+gy1átl
+1gye
+3gyec
+2gyedün
+2gyela
+2gyelemz
+2gyel®g
+2gyeltá
+gy1emel
+gy1eml
+2gyerd
+gye2r®s
+gye2seg
+2gy1ev
+2gyezres
+1gyé
+gy1éle
+2gyép
+gy1érd
+gy1érte
+gy1érté
+gy1érz
+1gyi
+2gyid®
+gy1iga
+2gy1i2gé
+2gyind
+2gy1ing
+gy1i2ra
+gy1irá
+2gy1iro
+2gyist
+gy1ita
+2gyivó
+1gyí
+2gy1í2r
+2gyív
+gy1k2
+1gyo
+2gy1old
+2gyolvad
+2gyolvas
+2gyope
+1gyó
+gy1órá
+gy1óri
+1gyö
+2gyönt
+1gy®
+2gy®r
+3gy®z
+gy1pr
+gys2
+gy1st
+1gyu
+2gy1ud
+gy1ug
+2gyuj
+2gyura
+2gyurá
+1gyú
+2gyút
+1gyü
+2gyüt
+2gy1üz
+1gy¶
+3gy¶r
+gza2te
+1ha
+ha2b1ol
+ha2d1ál
+ha2d1os
+ha2dur
+ha2d1ú
+ha2is
+ha2je
+2h1akl
+ha2kol
+ha1k2r
+hal1áp
+ha2leb
+ha2l1e2l
+ha2len
+ha2l1es
+hal1ev®
+ha2lét
+ha2l1iv
+ha2lí
+ha2lol
+ha2l1®
+ham1b
+ha2m1osz
+han2ch
+han2c3s
+han2g1e2
+han2gut
+2hani
+ha2nyá
+haó2
+ha1p2r
+ha2rál
+harán2
+harc1c
+har2ce
+har2c3h
+har2cso
+harc3sz
+ha2r1ist
+hart2
+hasi2
+ha2sim
+ha2sol
+ha2s1¶2
+ha2t1em
+ha2tev
+ha2t1é2v
+ha2t1old
+ha2t1ök
+1há
+2h1ács.
+2h1á2csi
+2háji
+2hájn
+2hájo
+2hájt
+há2lyú
+há2m1i
+há2nyin
+há2ral
+háro2ma
+há2sá
+há2t1e2
+há2t1ol
+há2t1or
+hátu2s
+hát1usz
+há2zab
+há2z1a2dó
+há2z1e2
+ház3sz
+1hä
+1he
+he2ad
+3heg
+he2gy1a
+he2gyo
+he2gyó
+2he2id
+he2io
+2hela
+2henó
+he2od
+he2ol
+he2rát
+2heu
+he2za
+he2zá
+2hezn
+1hé
+hé2m1
+hé2nan
+hé2n1is
+hé1p2
+hé2rab
+hé2rar
+hé2r1eg
+hé2r1ep
+hé2tal
+hé2tá
+héte2
+hé2t1es
+hé2t1ez
+hé2t1é2
+hé2tó
+hé2z1á
+hé2z1e2
+hé2z1o2
+hé2zs
+1hi
+2hia
+hi2af
+hi2am
+hi2as
+2hila
+2hio
+hi2re
+hi1sc
+hi2se
+hi2t1á
+hi2t1elv
+hi2t1o
+hi2tú
+1hí
+3híd
+hí2de
+hí2dí
+hí2ga
+hí2mi
+hí2r1a2
+hí2r1o
+hí2rö
+h1k2
+h2m1é
+h2mi
+hno1g
+1ho
+2hob
+ho2gy1i
+hola2
+ho2lad
+ho2l1át
+hol2d1al
+ho2le
+ho2l1iv
+ho2n1al
+ho2nav
+ho2n1ál
+ho2nis
+ho2nü
+ho2o
+2hory
+2hosb
+2hosi
+2hosz
+ho1szk
+2how
+1hó
+hóa2
+hó2c3sa
+hó2dz
+hó1kr
+2hónr
+1hö
+hökö1
+1h®
+h®e2
+h®2s1er
+h®s3s
+h1p2
+h2ri
+h2rü
+hs2
+h1sc
+hsz2l
+h1t2r
+1hu
+hu2i
+hu2me
+2husi
+huszon1
+3hú
+hú2re
+hú2r1é
+hú2se
+hús3szé
+hú2sz1e
+hú2szé
+hú2sz1ó2
+hú2szö
+1hü
+1h¶
+hyá1
+2i.
+i1a
+ia2cel
+ia2cér
+ia2c3h
+ia2dós
+iae2
+i2afa
+ia2gi
+i2ahá
+2iai
+ia2kad
+ia2kar
+ia2kas
+ia2kol
+ia1k2ré
+ia1kri
+ia1kv
+i2ale
+i2alé
+ia2lu
+i2ame
+ia2mur
+ia2nya
+iaó2
+ia1p2
+i2asé
+ia1s2p
+i2aszá
+ia2szor
+ia2szö
+ia2ty
+iau2
+i1á
+2iáb
+iá2g
+2iák
+iá2kab
+iá2kév
+iála2
+iá2l1al
+iá2l1e2
+iá2l1in
+iána2
+iá2n1an
+iá2nyi
+iá2p
+iá2ro
+iá2ru
+iá2só
+iás3s
+iá2sü
+ibai2
+ibi2o
+2ibn
+ibu2c3
+1iccé
+i1chy
+idá2szo
+1iddo
+1i2dej
+ide1k2v
+2idel
+i2d1é2l
+i2dény
+2idés
+1i2déz
+id2ge
+idi2a1s
+i2d1id
+i2d1i2ta
+i2domá
+i2domo
+2idó
+1i2d®.
+i2d®v
+2idp
+idro1
+idrosz2
+id3ze
+i1e
+i2ec
+ie2dé
+2ieg
+ie2gé
+ie2gy
+ie2le
+ie2léb
+ie2l®b
+ie2p
+ie2rej
+ie2rez
+ie2r®.
+ie2r®szakoln
+ie2r®v
+ier1s
+ie2set
+ie2sé
+ie2si
+ie2s®
+ie2sz
+ietz1
+ie2ur
+ie2v
+i1é
+ié2dere
+ié2g
+ié2ke
+ié2kí
+ié2l
+ié2pí
+ié2pü
+ifi1b
+if2lo
+2ifö
+if2re
+if2ri
+if2ta
+ig1a2lu
+iga1p2
+1igazg
+ig1áll
+ig1álm
+igá2nya
+ig1á2t1e2
+ig1e2le
+ig1ell
+i2ges
+ig1e2se
+ig1esi
+ige2t1o
+i2g1ev
+i2g1ég
+ig1élv
+1i2gény
+ig1ér.
+ig1é2r®
+ig1ért
+ig2gas
+2igi
+ig1im
+ig1ir
+ig1os
+ig2raf
+igro1
+ig1s
+ig1ug
+i2g1ü2
+iha2d
+iha2re
+1ihl
+i1i
+2ii.
+ii2d
+ii2g
+i2ii
+ii2m
+ii2p
+ii2s
+i1í2
+1i2jed
+1i2jes
+ika1pr
+iké2l
+ik1éle
+iki2s1
+ik2kár
+ik2kí
+ik2lor
+ikro1s
+i1k2ru
+il1ald
+i2l1alk
+il1a2ny
+il1ell
+1illú
+il2maj
+il2m1a2k
+il2m1am
+il2man
+il2má
+il2mel
+il2m1esz
+il2mi
+ilo1g2
+ilumi2
+ilumin1
+i2lü
+1i2mád
+ime2g1á
+imi2tár
+2imka
+2iml
+2imog
+2ims
+im1sz
+2imz
+i2n1aj
+in1akt
+in2c1ez
+in2c1él
+in2c1ö
+in2d1ab
+in2d1ah
+in2d1am
+in2d1at
+inde2m
+in2d1eme
+ind1err
+in2d1e2s
+in2d1ett
+in2d1e2z
+in2dét
+in2din
+1indí
+in2d1ö2
+ineke2
+ine2kel
+i2n1el
+2inen
+2iner
+ine2ta
+1infl
+1infr
+1ingad
+1ingec
+in1g2rá
+in1ido
+in2kaj
+in2kál
+in1old
+ino2má
+in1ó2ra
+in1öl
+in1ös
+in1sh
+in1s2k
+1insp
+int1étk
+in2t1in
+in1tré
+in2t1ú2
+inú2
+in1út
+i1o
+ioe2
+i2of
+io1g2rá
+io2ik
+i2oka
+io2ká
+io1kh
+io2laj
+i2oló
+iono1sz2
+ion1s2
+io1ny
+iop2
+io2pe
+io1ps
+io2so
+io1sz2f
+io1t2
+i2ov
+io2xidd
+i1ó
+i2ódi
+ió1f2
+ió1g2
+i2óha
+ió2kár
+ió2kir
+iókos1
+i2ólá
+i2ólo
+ió2rák
+i2óri
+i2ósá
+ió1spe
+i1ö2
+i1®
+i®2r
+1i2par.
+ipa2rág
+ipa2r1e
+i2pari
+ipa2ris
+i2paro
+ipe2rak
+i1p2h
+ip2lak
+i1plexe
+i1p2lé
+2ipo
+ippa2
+ip2p1ad
+ippo1l
+ip2ri
+ip2rop
+ip2sz1a
+ip2szá
+ip2szö
+iqu2
+1i2rati
+1iratoz.
+1iratozi
+irá2g1ál
+irá2nyá2ra
+irá2nye
+2ires
+i2rew
+irgonc1
+2irob
+iros3s
+ir2s1a
+ir2s1á2
+1irtó
+ir2tü
+is1abl
+i2s1a2d
+i2s1a2g
+is1a2la
+is1alk
+isa2n
+is1ang
+is1ant
+is1any
+isa2p
+is1apa
+is1apá
+i2s1ar.
+i2s1a2ra
+i2sasz
+is1atá
+is1atl
+i2s1a2u
+is1áll
+is1áru
+is1á2t1a2
+i2s1á2z
+i2s1ege
+i2s1e2gy
+i2s1elm
+is1elo
+i2s1eml
+ise2n
+is1enc
+is1ene
+i2serd
+is1esé
+is1est
+i2s1ev
+i2s1ép
+i2s1éri
+i2s1i2n
+isi2p
+is1ipa
+i2s1i2r
+is1isk
+is1ist
+is1í2v
+is1k
+1iskolát
+i1s2lis
+1ismer.
+1ismere
+1ismeré
+1ismerh
+1ismeri
+1ismerj
+1ismern
+1ismer®
+1ismert
+1ismerve
+1ismervény.
+1ismervénye
+1ismervényt
+i1s2min
+2iso
+is1ob
+i2s1ol
+is1ord
+is1öc
+i2s1ör
+is1ös
+i2s1®
+isp2
+1ispán.
+i1s2pe
+i1s2por
+is1pr
+is1sr
+is1st
+isszo2ba
+is3szó
+is3szö
+is3szú
+1isten.
+1istene
+1istenhit
+1istenné
+1istenn®.
+1istenn®k
+1istv
+is1úr.
+is1üg
+is1üs
+1i2szák
+i1sz2f
+isz1il
+isz2kóp
+isz1ön
+is3zsa
+isz2tár.
+it1adó
+itai2
+itakész1
+1ital.
+1italt
+it1ant
+ita2tat
+it1á2ras
+ite2la
+2iter
+2ité
+i2t1é2l
+it2há
+i2t1i2g
+itigaz1
+it1ipa
+itköz1
+ito1g2r
+ito2ká
+1ittam
+1ittasodh
+1ittasodi
+1ittasodn
+1ittasu
+it2teg
+it2tot
+it1ug
+it1uta
+i1u
+iu2g
+iu2mad
+iu2m1a2t
+iu2mál
+iu2me
+iu2mio
+iu2mí
+iu2n
+iu2r
+iu2ta
+iu2tán.
+iu2tó
+iu2z
+i1ú
+i2úg
+i2úte
+i1ü2
+i1¶2
+iva2tin
+1i2vás.
+1i2vot
+ix1eg
+ix1in
+ix1p2
+iz1áll
+izene2
+ize2n1é
+izen1n
+ize2s1á2
+1i2zél
+1izmú
+1i2zom.
+2izs
+iz1út
+1i2zül
+1izzí
+1izzó
+2í.
+í1a
+í1á
+í2d1a2
+íde2
+íd1el
+í2d1é2
+íd1ív
+í2d1os
+í1e
+í1é
+íg1a2g
+í2g1e2
+í2gé
+í2g1o2
+í2g1ö
+ígyá2
+ígyász1
+í1i
+í1í
+í2j1ác
+íjá2t
+í2j1áta
+íji2
+íj1ig
+íj1in
+í2j1os
+í2j1ö2
+í2jü
+ík1a2l
+ík1es
+í2k1i2
+íkké2
+í2k1ü2
+ílás1s
+íl1e2g
+í2l1i2r
+ílta2
+íl2tag
+íl2t1e2
+ím1a2d
+ímfe2
+ím1i2r
+ím1i2v
+í2m1í2
+í2m1o2
+ímok1
+í2n1a2r
+í2n1a2u
+í2n1az
+ín1árn
+í2n1e2le
+í2n1elm
+í2n1észl
+íni1k2
+í2n1il
+ín3n
+ín1ol
+í2n1or
+í2n1ö
+ín1s2
+ín1u2t
+ín1üt
+í1o
+í1ó
+í1ö
+í1®
+í2r1a2d
+ír1alk
+í2r1ar
+í2r1á2g
+ír1áll
+ír1ár.
+ír1á2ru
+írás3s
+1í2rász.
+1í2rászat.
+1írdáb
+í2r1eg
+í2r1er
+í2r1é2l
+írfe2
+ír1g2
+írin2
+íri2o
+í2r1i2p
+í2r1ir
+í2r1í
+ír1k2
+ír1old
+ír1oll
+ír1or
+ír1ös
+írs2
+ír1sp
+ír1t2r
+írus3s
+í2r1ú
+í2r1üg
+í2sz1a
+í2sz1á
+í2szeb
+í2sz1e2g
+í2szeln
+í2szel®
+í2szelv
+í2sz1e2m
+í2sz1o2
+í2sz1ö
+í2sz1®
+ísz3s
+ísz1tr
+íszü2
+í2sz1ül
+í2sz1ün
+í1u
+í1ú
+í1ü
+í1¶
+íva2l
+ív1ala
+í2varc
+ív1árf
+ív1eg
+íve2lem
+ív1elté
+íve2n
+í2v1e2re
+í2v1in
+ívi2z
+ív1izo
+ív1ol
+í2v1ö
+ív1üg
+íz1a2g
+íz1a2k
+íz1a2l
+íz1ág
+íz1ál
+íz1á2r
+íz1á2t1
+í2z1ef
+í2z1eg
+í2zei.
+íz1ell
+íz1eln
+íz1elv
+í2z1e2m
+íze2r
+íz1ere
+í2z1esz
+íze2z
+í2z1eze
+í2z1ezrei
+í2z1é2p
+í2z1ér.
+í2z1ill
+ízi1sp
+í2z1i2szo
+í2zivás
+í2zí
+ízo2
+íz1os
+íz1ó2r
+í2z1ö2
+íz1p2
+íz3sa
+íz3sá
+íz3su
+íz3sú
+íz3sz
+í2zü
+íz1ü2g
+1í2z¶
+1ja
+ja2dag
+ja2k1ev
+ja2kiz
+ja2k1í
+ja2lap
+jan2s
+j1a2ny
+jao2
+jas1as
+1já
+2j1á2bé
+2j1á2ga
+2j1ágg
+2j1áll
+2jánd
+2jánl
+2j1á2p
+2j1á2rak
+j1á2rasz
+2j1árr
+j1árus
+já2sal
+já2se
+jás3s
+já2t1ér
+2játne2
+já2t1osz
+jdona2
+jdonat1
+j1d2r
+1je
+2jegé
+je2gés
+jegész1
+jegyá2
+je2gy1el
+je2gy1in
+je2gyo
+je2l1a2
+jelá2
+je2l1át
+je2l1ele
+je2ler
+je2l1e2si
+je2l1int
+je2l1í2
+2j1ellá
+je2l1o
+je2lu
+je2mu
+je2n1á
+je2no
+je2ró
+je2sa
+je2s1á
+je2sem
+je2s1es
+je2su
+je2süv
+je2tál
+je2t1el
+je2t1o2
+je2tu
+jeu2
+2j1ex
+1jé
+jé2ga
+jé2g1á2
+jége2
+jé2g1eg
+jég3g
+jé2gi
+jé2g1o
+jéne2s
+jé2n1i
+2j1é2p
+jé2reg
+2j1érz
+jfeles1
+jfölös1
+j1g2r
+1ji
+j1il
+2j1i2p
+2j1ism
+2j1i2ta
+2j1i2v
+2j1i2z
+1jí
+jítókész1
+j1í2z
+j2jí
+jjob2
+j1k2l
+jk1®r
+jk2ré
+jlás1s
+jl1át
+jnal1u
+1jo
+jo2g1ak
+jo2gal
+jo2g1ál
+jo2g1e
+jog3g
+jo2gin
+jo2g1or
+jo2laj
+joma2
+jo2mag
+jo2m1an
+jo2m1e2
+jo2n1i
+2jo2p
+joro2
+jo2se
+1jó
+jóa2
+jóá2
+jóle2s
+jó2l1es®
+jó2l1i
+jó2lö
+2jórár
+jó2s1e2
+jós3s
+jó2tál
+1jö
+j1önt
+1j®
+j1®r
+2j1®2sö
+j1p2
+jra1s
+j1s2p
+jsza2ké
+jt1akn
+jt1akt
+jt1alk
+jt1aut
+jt1áll
+j2t1á2ru
+jt1á2t1a2
+j2t1e2gy
+j2teleme
+jt1elt
+j2t1é2le
+j2t1ér
+j2t1id
+j2t1i2r
+j2t1i2z
+jt1osz
+j1t2rá
+jtu2
+1ju
+jugo1
+ju2hak
+1jú
+1jü
+j1üg
+jü2l
+2j1ü2r
+j1ü2té
+j1ü2t®
+2j1ü2v
+2j1ü2z
+1j¶
+j2z1a2k
+j2z1a2ny
+j2z1as
+jz1es
+j2z1is
+jz1k2
+jz3sín
+jz3sor
+jz3sz
+1ka
+2k1abl
+2kacé
+ka2ch
+ka2dom
+2kadók
+kae2
+kag2
+ka1gr
+ka2iá
+kakas3s
+2k1alg
+kanális1
+2kang
+2k1a2nyag
+ka2óv
+2kapád
+ka1pré
+2k1a2ras
+2karcú
+ka2rén
+ka2rig
+kar1ing.
+ka2rö
+ka2sem
+kasé2
+ka2séh
+ka2sor
+kasó2
+ka2s1ór
+kasü2l
+ka2tab
+ka2uto
+ka2vat
+kazá2
+1ká
+ká2csin
+ká2c3sor
+2k1á2g
+ká2l1e
+2k1állam.
+2k1államr
+ká2nye
+k1á2rad
+ká2rak
+k1á2ram
+ká2r1e2
+ká2r1ér
+ká2r1oko
+ká2s1e
+kási2
+ká2sir
+2k1á2só
+ká2sü
+kásza2
+kász1al
+kát1ad
+ká2tal
+2k1átt
+2k1átv
+k1b
+1ke
+kea2k
+keá2
+kee2
+kegész1
+ke2gya
+ke2gyu
+ke2gy1ú
+2k1e2ke.
+2k1elekt
+2k1e2lemz
+2keley
+2k1elf
+ke2l1os
+2k1e2l®a
+k1e2l®á
+2k1e2l®l
+2k1eltér
+2k1ember
+ke2més
+kenés3s
+ken2tér
+kenü2
+ke2n1ül
+keó2
+ke1p2r
+ke2rab
+ke2r1ar
+ke2rál
+ke2r1ár
+2kerd®
+2k1e2rej
+kerekes1
+ke2r®s
+ker1s
+ke2s1eg
+2k1esem
+2k1e2s®
+ke2szi
+ke2s3zöl
+ke2tok
+keu2
+ke2vez
+kevés3s
+1ké
+2ké2g
+ké2ja
+ké2j1u
+kéka2
+ké2k1á
+ké2k1e2r
+ké2kin
+ké2lya
+ké2ly1ü2
+ké2nyú
+ké2pa
+ké2p1á
+ké2p1ele
+ké2per
+ké2pid
+ké2pí
+ké2po
+2k1érm
+ké2r1o
+2k1értéke
+ké2ru
+ké2rú
+2kérzeté
+ké2sá
+ké2so
+ké2sz1a2
+ké2szá
+ké2szét
+ké2s3zö
+ké2tan
+ké2tál
+ké2t1ele
+ké2t1em
+ké2t1esz
+ké2tev
+ké2t1é2
+ké2tis
+ké2tí
+ké2t1os
+ké2tö
+ké2tu
+ké2t1ü2
+2k1év.
+2k1évb
+2k1é2vei
+ké2ves
+2k1é2vi
+2k1évn
+ké2za
+ké2zá
+ké2z1e2l
+ké2zem
+kf2
+k1fl
+kh2
+k2hai
+k2hája
+1k2hed
+khe2i
+k2hil
+1k2hos
+k2hó
+1khr
+1k2hü
+1ki
+kia2d
+kia2g
+kia2j
+kia2l
+kia2n
+kia2p
+kia2s
+kiá2z
+kib2
+ki1br
+2kide
+kideg1
+kie2l
+kie2m
+kie2re
+kié2h
+kié2r
+2k1ifj
+ki1fr
+2kiga
+kigaz1
+2k1i2gé
+kii2
+ki1k2rá
+ki1k2ri
+kin2csá
+2k1ind
+2k1inf
+2k1ink
+kin2tét
+2k1inv
+kio2k
+kio2m
+kió2v
+ki1pla
+ki1ple
+ki1p2r
+ki2rat
+ki2rod
+ki2sab
+ki2s1ajtó
+ki2sal
+ki2san
+kis1asz
+ki2sat
+ki2s1emb
+ki2sen
+ki2s1es
+ki2s1é2r
+ki2sis
+2kisk
+2kism
+ki2s1ok
+kiso2r
+ki2s1oro
+kis1p
+kis3sz
+ki1t2r
+kiu2
+kiú2
+1kí
+2k1í2rá
+2k1í2ró
+2k1í2ve
+2kí2z
+kjelenés1
+kj1els
+k2k1ál
+kk1áru
+k2k1e2g
+k2k1in
+kk1ír
+kk1ó2ra
+k1k2ri
+klá2má
+klá2mos
+kle2tin
+1k2lí
+k2lub
+klu2bé
+klus3s
+kmá2nyú
+kme2g
+1ko
+ko1g2r
+2k1o2koz
+2k1okta
+kol1ajt
+2k1olda
+ko2lim
+ko2naj
+ko2n1al
+ko2n1ál
+ko2nor
+ko2nyé
+koo2
+2kope
+ko1pro
+ko2r1ad
+ko2r1átl
+ko2rel
+ko2r1es
+ko2r1il
+ko2r1osz
+kor1s2
+kos3s
+2koszl
+2k1ou
+2k1o2x
+1kó
+kó2d1é
+kó1fr
+kóku2
+2kóp.
+2kópb
+2kóph
+2kópj
+2kópk
+2kópo
+2kópp
+2kóps
+2kópu
+kóra2
+kó2r1an
+kó2res
+1kö
+kö2b1öl
+kö2dz
+2k1öng
+2köv.
+kö2zí
+1k®
+k®e2
+k®é2
+k®k2
+k®1kr
+k®u2
+k1p2
+kpá2ra
+k2rip
+1kripc
+krosz2k
+1k2rómá
+krös3s
+k1s2h
+k1s2k
+k1s2p
+k1s2t2
+k1sz2f
+kszt2
+kt1alk
+kta1p2
+kte2rá
+k2t1i2r
+kto1g2
+kto1s
+ktosz2
+k1tré
+ktro1g
+ktro1s2
+1ku
+2k1udv
+2ku2g
+2kuj
+kul2csi
+kun2d1é
+ku1p2r
+ku2se
+2kutaz
+2k1u2tá
+ku2zs
+1kú
+2k1úg
+2k1új
+kú2tá
+kú2t1o
+2kútr
+1kü
+2küdü
+2k1ü2g
+kü2la
+kü2lo
+kü2tö
+kü2t®
+kü2tü
+kü2z
+2k1üzl
+1k¶
+1k2vad
+k2van
+kvés3s
+1ky
+ky1ü
+1la
+la2ar
+laá2
+lab2la.
+lac3há
+2l1a2dag
+l1adl
+2l1adm
+la2dod
+la2dog
+la2dom
+la2dóe
+la2dói
+la2dój
+la2dól
+la2dór
+la2dóv
+la1dy
+lae2
+laga2l
+lag1ala
+la2gan
+la2g1ál
+lag1ár.
+la2gá2ra
+la2gép
+la2g1ér
+lag3gy
+la2gor
+la2g1osz
+lai2g
+la2i2re
+la2j1ad
+la2j1ág
+la2j1ár.
+la2j1el
+la2jol
+la2jü
+la2kad
+la2k1a2n
+la2kel
+la2k1es
+la2kérte
+2lakí
+la2k1osz
+2l1alg
+la2mad
+la2m1al
+la2map
+la2n1á2r
+la2n1ér
+lanye2
+lany1er
+lany1es
+la2nyé
+la2ny1í2r
+la2nyó
+laó2
+la2p1at
+lap1áll
+lapá2r
+lap1ár.
+lap1áro
+lap1áta
+la2p1el
+la2p1es
+la2p1ér
+la2p1in
+la2p1ir
+la2p1ír
+2l1a2pó
+la2pö
+2lapv
+la2rán
+2l1arc
+laro1
+la2s1as
+las3sze
+la2su
+la2sz1ar
+laszkész1
+lasz1óra
+la2t1a2la
+lat1ará
+lata2t
+lat1ato
+la2t1árb
+la2t1e2g
+lat1ele
+la2t1ell
+la2tem
+la2tep
+la2t1ék
+la2ting
+la2t1osz
+la2t1óri
+la2t1ö2v
+2latti
+la2vu
+2lazm
+la2zon
+1lá
+lá2b1iz
+2lábrá
+lá2but
+lá2d1al
+lá2dan
+lá2dor
+lá2d1ö
+lá2gal
+lág1g
+lá2g1ó2
+lág1s
+lá2hor
+2láí
+2láldá
+2láldo
+lá2l1e2
+2l1állo
+lá2lö
+lá2man
+lá2m1eg
+lá2m1el
+lá2mí
+lá2molv
+lám1osz
+lá2mu
+lána2
+lá2nal
+lá2n1an
+lá2nas
+láná2
+lá2nár
+lánc1c
+lá2nyol
+lá2pol
+lár1akt
+lá2ral
+lá2rat
+2láre
+lá2rö
+2l1á2ru
+l1á2rú
+lá2sal
+lá2s1e
+lá2s1ó2
+lá2sut
+lá2sze
+lát1al
+2láté
+2lávi
+lá2z1e
+lbá2szá
+l1b2l
+lc1e2v
+lc1e2z
+lc1é2v
+l2c3h
+lc1ív
+l2c1ó2
+lcs1á2g
+l2cs1ál
+l2csáta
+l2csél
+lcs1ing
+lcsó2r
+lc3sz
+ld1abr
+ld1a2ny
+lda1p
+lda2tál
+ld1áll
+ld1egy
+l2demel
+l2d1ep
+ldes1s
+lde2tér
+l2d1igé
+l2d1i2p
+l2d1ín
+ldo2gas
+l2d1old
+ld1osz
+l2d1ó2r
+l2d1öl
+ldt2
+ld1tr
+l2d1ut
+l2d1út
+ld3zá
+1le
+le2ab
+lea2k
+lea2v
+leá2p
+leá2zi
+2l1edd.
+l1eddi
+lee2s
+le1fr
+le3gali
+le2g1áll
+le3gáz
+le3ge.
+le3gek.
+le3gel®t
+lege2r
+le3get
+legé2d
+le3gén
+leg3g
+le2gig
+le3görö
+leg®2
+le2gu
+le3gya
+le3gyá
+l1e2gye.
+l1e2gyedne
+l1egyedü
+le3gyé
+le3gyi
+2l1egyl
+le3gyö
+lei2g
+lei2s
+2leji
+le2kad
+leka2t
+le2kál
+le2k1á2r
+le2k1e2l
+le2k1e2m
+lek1e2r®
+le2k1id
+le2k®
+le1kri
+2lektr
+le1kvi
+2l1e2lemz
+2lelev
+le2liz
+2l1elz
+le2m1a2d
+2leman.
+2lemanj
+2lemank
+lemec1
+2l1e2mel.
+2l1e2melé
+2l1e2melh
+2l1e2meli
+2l1e2melj
+2lemelk
+le2mell
+2l1e2meln
+2l1e2mel®
+le2melt
+2l1e2melü
+2l1e2melv
+le2m1éle
+2lemés
+lem1irá
+le2m1itt
+l1emleg
+le2mol
+le2m1osz
+le2m1ó2r
+le2mö
+2lemu
+le2nál
+le2náz
+le2n1e2g
+le2n1el
+le2ner
+lenés3s
+le2nir
+le2n1o2
+len1tra
+2lentrü
+l1e2nyész.
+l1e2nyésze
+l1e2nyészé
+l1e2nyészi
+l1e2nyészne
+l1e2nyész®
+le2o1g2
+leo2k
+le2oló
+leó2v
+le1pla
+le1p2lo
+le1p2ré
+le1pri
+2l1erd
+le2reg
+le2r®.
+le2r®b
+le2r®k
+le2r®n
+le2r®r
+2ler®szakol.
+le2r®v
+ler1s2
+le2s1es
+l1e2sése
+l1e2sésé
+l1e2sésü
+2leskü
+le1smá
+lesp2
+le1spr
+lest2
+le1sto
+le1str
+le2szik
+2l1eszm
+2lesz¶
+let1e2lem
+le2t1ell
+letes1s
+le2t1í2
+le2t1ó2
+let2tas
+2lety
+leu2tá
+l1e2vez.
+l1e2vezt
+2lexer
+l1exp
+le2zer
+2l1ezr
+1lé
+2l1ébr
+lé2c3h
+lé2gem
+l1é2gés
+2légí
+lé2g1o
+2légt
+lé2gu
+lé2gyi
+lé2kal
+lé2k1any
+lé2k1eg
+lé2kesí
+lék1est
+lé2kép
+lé2k1ir
+lé2kú
+l1éld
+lé2led
+lé2les
+lé2lén
+2l1é2pí
+2l1é2pül
+l1érd
+2l1é2red
+lé2r1el
+lé2rés
+lé2rik
+lé2rin
+lé2rit
+lé2r1osz
+2l1é2r®.
+l1é2r®k
+2l1érté
+2l1értü
+lé2rün
+l1érve
+2lérz
+lé2sel
+lés3s
+2l1észh
+léta1
+lé2tál
+lé2te2l
+lét1ele
+lét1elé
+lét1elü
+lé2tig
+lé2tö
+2l1év.
+2l1évb
+2l1é2ven
+2l1é2ves
+2lévez
+2l1é2véb
+2lévi
+2l1évs
+l1é2vü
+lfi2t1
+lga1p2
+l1g2ra
+lgy1as
+l2gyel®v
+l2gyis
+l2gy1ol
+l2gy1ú2s
+1li
+lia2d
+li2af
+li2ap
+li2at
+li2deg
+2l1i2di
+li2dom
+2l1i2d®
+li2eu
+l1i2gaz
+li2ge.
+2l1i2gé
+li1g2ra
+2likk
+li1k2l
+2lill
+li2nal
+2lindí
+2l1indu
+2l1inf
+lin2ko
+li2nö
+2l1inté
+li2o1g2
+li2p®
+li1pro
+2l1i2ram
+2l1i2rat
+li2rán
+l1irt
+2l1isko
+2lism
+l1ismé
+li1spo
+l1iste
+li2s1ü2
+li2szö
+lis3zs
+li2t1el
+li2t1old
+li2vad
+li2vás
+2l1izg
+2l1izmo
+2l1i2zo
+1lí
+l1íg
+2l1í2ny
+línyenc1
+lí2ran
+2lírá
+l1írh
+l1írj
+l1írn
+l1í2ró
+l1írt
+l1írv
+lí2tél
+lítés3s
+2l1ív.
+l1í2vá
+2l1ívs
+lízis1s
+lji2
+l2j1ir
+lka2tel
+lke2ma
+lkis1a
+lkó2c3
+l1k2v
+lla2gal
+lla2m1el
+lla2nyá
+lla2ny1e
+lla2tal
+lla2tat
+lla2tel
+lla2tet
+lla2tor
+l2l1azo
+l2l1áll
+l2l1á2p
+llá2rak
+llás3s
+l2l1edz
+l2l1elm
+lle2ma
+lle2m1á
+l2lemo
+llen1n
+llé2ká
+llé2k1ol
+ll1í2rá
+ll1k2
+l2l1ös
+ll1p2
+lls2
+ll1st
+l2l1üt
+l2ly
+l3lyu
+lm1ajá
+lm1a2ny
+l2m1arc
+lmá2nyé
+lm1elm
+lm1e2l®
+lmfe2
+l2m1o2p
+lm1s2
+lmsz2
+lná2ros
+lne2o
+lnia2
+1lo
+2lobá
+lo1dr
+loé2d
+lo2g1a2d
+lo2gál
+lo1g2rá
+lo2g1ú
+lo2k1e2
+lo2kos
+lo2laj
+lo2map
+lo2m1ál
+lom1á2ro
+lo2mec
+lomi2
+lo2mid
+lo2min
+lom1itt
+lo2mí
+lo2m1o2r
+lo2m1ó2
+lona2
+lo2nag
+lo2naj
+lon2c1i
+lo2ne
+lo2pe
+l1org
+l1o2roz
+2l1ors
+2l1orv
+l1orz
+lo1sz2k
+2l1oszl
+lo1t2h
+lo2u2
+lo2xá
+lo2xi
+lo1y
+1ló
+lói2d
+2l1ónn
+ló1p2
+2lórab
+2lórm
+ló1t2h
+ló1t2r
+ló2ze
+1lö
+lö2kel
+lök1o
+lö2m
+lö2n1á
+lö2n1é2
+lön3n
+lö2nó
+lö2pé
+2lö2r
+lö2sü
+l1ötl
+1l®
+2l®bbi
+2l®bbr
+2l®d.
+2l®hív
+l®i2d
+l®í2
+2l®kel
+2l®nn
+2l®ny.
+2l®nyé
+2l®nyh
+2l®nyö
+2l®nyr
+2l®nyt
+2l®nyü
+2l1®rl
+2l1®2rö
+2l1®2rü
+l®2s1égg
+l®s3s
+l®1szt
+2l®té2t1
+2l®tol
+l®u2
+2l®vés
+2l®vét
+l2p1a2láv
+lpen1
+lp2h
+l1phe
+lp2lá
+lpo2ka
+lpo2n
+lpon1á
+lp2rak
+l1p2re
+l1p2ri
+l1p2ro
+l1p2ró
+lreá2
+lsá2r
+l1s2k
+l1s2l
+l1s2m
+ls®ü2
+l1s2p
+l1s2r
+lst2
+ls2ta
+ls2ti
+lsus3s
+lsza2ké
+l1sz2f
+l1sz2l
+lta2d
+lt1ada
+lt1a2gy
+lt1ajt
+lta2l1e2
+lta2l1é
+l2tarc
+l2t1a2u
+lt1ág.
+lt1á2ga
+lt1ápo
+l2t1árf
+lt1áta
+ltá2v1i2
+ltés1s
+lt1iva
+lt1í2v
+ltornác1
+lt1ö2vi
+lt1®r.
+l1t2ri
+l2t1u2t
+1lu
+lu2de
+2ludj
+2ludn
+2ludt
+2ludv
+l1u2go
+l1ugr
+lu2le
+2luli
+2lulr
+lu2m1é
+2lumí
+lu2rak
+2l1u2ru
+lu2se
+lu2sza
+lu1t2h
+1lú
+lú2d1a
+lú2gá
+2l1ú2j
+2l1ú2sz
+lú2té
+2l1úth
+lú2ti
+2l1útj
+lú2to
+1lü
+2lüd
+2l1ü2g
+l1üldö
+lü2l1em
+lü2l1é
+2l1ülhe
+2l1üljö
+2l1ülne
+2l1ülni
+2l1ü2l®
+2l1ült.
+2l1ültem
+2l1ültet.
+2l1ültett
+l1ülté
+lü2lü
+2l1ü2r
+lü2té
+lü2ti
+lü2tö
+lü2t®
+lü2tü
+2l1ü2v
+2l1ü2z
+1l¶
+l1¶2z
+lv1alk
+lvás3s
+l2v1e2le
+l2v1el®t
+l2v1els
+l2v1ember
+l2v1ép
+l2v1érzé
+l2v1észl
+l2v1isk
+lvkész1
+l2v1ok
+l2v1os
+l2v1öl
+l2v1®
+l2v1ú
+l2y
+1lya
+lya2gya
+ly1akc
+ly1a2la
+ly1alk
+lya2m1é
+lyan3n
+ly1a2rá
+ly1arc
+2ly1ass
+ly1aut
+2lya2z
+ly1azo
+1lyá
+ly1áll
+ly1árn
+ly1á2ro
+2ly1áru
+1lye
+2ly1e2c
+lye2gi
+lye2l
+ly1elm
+2ly1elv
+lyenü2
+ly1e2r
+1lyé
+2ly1ég
+2ly1ép
+2ly1érd
+2ly1érte
+2ly1érté
+2ly1érv
+2ly1érz
+1lyi
+2ly1id
+2ly1i2gé
+ly1ill
+2ly1im
+ly1int
+2ly1irá
+2ly1iro
+2lyism
+2ly1i2sz
+1lyí
+1lyo
+2lyodú
+2lyokoz
+2ly1or
+1lyó
+1lyö
+ly1ös
+2ly1®2
+lyt1áll
+1lyu
+2ly1ud
+2ly1uj
+2ly1ur
+1lyú
+ly1úr.
+2ly1út
+1lyü
+ly1ü2v
+2ly1üz
+1ly¶
+lzus1s
+1ma
+2m1abl
+2m1a2cé
+ma2dé
+madi2a
+mad1osz
+ma2dóm
+ma2es
+ma2g1al
+magas1s
+ma2g1en
+ma2gor
+ma2gö
+ma2gyú
+ma2io
+2maja
+2m1ajt
+2m1akc
+2makó
+ma2kón
+ma2kós
+makro1
+2m1a2lak
+ma2lap
+2m1alk
+mal1t
+ma2lu
+2malv
+ma2nat
+maó2
+ma2pas
+2m1apj
+ma1p2r
+ma2s1i2k
+mast2
+ma1str
+ma2szö
+mat1á2ru
+ma2t1e2l
+ma2tig
+mat1int
+ma2t1ir
+2mat®
+ma2va
+ma2z1e
+1má
+2m1ábr
+2m1ág.
+2m1á2ga
+2m1á2gú
+2m1á2gy
+má2j1o2
+mála2
+má2l1al
+má2lál
+má2l1e
+má2l1ér
+m1állí
+má2lu
+má2m1as
+má2mu
+má2ne
+má2nin
+má2nyal
+má2nyaz
+má2nye
+mányi2
+má2ny1ir
+má2nyí
+má2ny1út
+m1á2p
+2m1á2rad
+m1á2rak
+má2ru
+2m1á2rú
+má2se
+má2sir
+más3zs
+2m1á2t1a2
+2m1átm
+2m1átv
+mbak2
+mb1á2gy
+m2b1e2p
+mbe2r1a
+mbe2rep
+mbe2r1és
+m2b1ing
+mb2lo
+mb1ús
+m1d2
+mda1p2
+1me
+meá2r
+2m1e2bé
+me2cet
+me2dén
+me2g1ala
+me2gan
+me2gác
+me2gát
+me2g1á2z
+me2g1ec
+me2g1el
+me2g1em
+me2g1e2r
+meg1esk
+meg1esn
+me2g1ette
+me2g1etté
+me2g1ettü
+me2g1éd
+me2g1é2l
+me2gép
+megi2
+me2gih
+me2gil
+me2g1ir
+me2giv
+me2giz
+me2g1í2
+me2g1o2
+me2g1ó2
+me2g1ö2
+meg®2
+meg1s
+me2g1u2
+me2g1ü2l
+2m1egys
+me2k1ar
+me2k1á2
+me2kél
+me2k1és
+me2k1id
+me2k1ir
+me2kis
+me2kí
+mek1k2
+me2kor
+me2k1os
+me2k1ot
+me2köl
+2meled
+2melet
+2melk
+mel2l1é2rü
+mel2l1u
+2m1elmé
+2m1elnö
+me2l®a
+m1e2l®á
+mel®e2
+2m1elr
+m1elter
+2m1emel
+men2tan
+me2nya
+me2op
+2m1e2p
+2m1e2rej
+2merny®
+me2r®m
+me2r®v
+2m1e2r¶
+me2s1er
+me2s1o2
+me2su
+me2s1ú
+2m1eszm
+met1ell
+me2t1or
+me2t1ó2r
+me2tú
+me2v®
+me2zár
+me2zin
+me2zor
+me2zö
+me2zs
+1mé
+2m1ébr
+mé2g
+még1a
+még1i
+mé2k1á2
+méke2l
+mék1ell
+mék1el®
+mé2kin
+2m1élm
+mé2ly1a
+mé2lyá
+mé2lyig
+mé2ny1el
+mé2nyir
+2m1é2p
+mér2v1a
+2m1érz
+mé2sá
+mé2s1er
+mé2szé
+mé2szo
+mé2tap
+mé2t1em
+mé2té
+2m1év.
+mé2ven
+mé2ves
+2m1é2vi
+2m1é2vü
+mé2zil
+mé2z1o
+mé2zs
+mf2rá
+mg2
+m1gr
+mgubanc1
+1mi
+mi2ac
+mia2d
+mi2aj
+mia2l
+mi2ap
+mia2r
+mi2deá
+mi2deg
+m1i2dé
+2mid®
+mie2l®t
+2m1i2ga
+migaz1
+2m1i2ge
+2m1i2gé
+2m1i2má
+m1imp
+min2ce
+min2ch
+min2da
+min2der
+mi2ol
+mi2ono
+mi2onr
+mió2t
+2m1i2pa
+2m1i2ro
+2mirt
+mis1eme
+mita2
+mit1ár.
+mi2tu
+mi2zom
+1mí
+m1í2rá
+mí2ró
+m2j1ol
+m1k2
+mla2u
+mlás1s
+mlé2k1a2
+mlé2kes
+mma2gá
+mme2g
+1mo
+mo1g2rá
+mo2ir
+moki2
+mo2kó
+2m1oktá
+mo2k1ú
+mo2laj
+2molvas
+mo2lyi
+mo2ne.
+mo2né.
+mo2nü
+mo2or
+mo1p2l
+mo2ren
+mo2rég
+mo2rid
+2morie
+mország1
+mo2sar
+mo2se
+most2
+mosz2fé
+mo2szim
+2moszl
+mosz1th
+2m1o2x
+1mó
+2m1ó2rá
+mó1th
+1mö
+2m1öld
+2m1önt
+2m1öv
+1m®
+m®e2
+m®2rá
+mp2he
+mp2hi
+mpor2t1á2r
+m1p2resszi
+m1p2ró
+m1q
+mst2
+m1str
+msza2ké
+msz2c
+m1sz2f
+mszt2
+mte2o
+mtes2s
+m1t2r
+1mu
+2mule
+mu2se
+mus3s
+mu2t1a2g
+mu2tár
+1mú
+mú2g
+múgy1
+2m1új
+mú2t
+m1úth
+2m1úto
+1mü
+2müg
+mü2gy
+mü2ka
+2m1ünn
+2mü2r
+2m1üs
+2m1ü2v
+mü2z
+1m¶
+m¶i2
+m¶k2
+m¶1kr
+m¶1st
+2m¶z
+m¶2zé
+m¶2zi
+m¶2zö
+m¶2z®
+mvas3s
+mze2t1á
+mze2tel
+mze2t®
+1na
+n1abbó
+2n1abl
+2n1a2cé
+2n1a2dó
+na1dró
+n1adt
+nae2g
+na2ge
+2n1a2gi
+nagy1ap
+nagy1as
+na2gyer
+na2gyor
+na2gyó
+na2gy1ú
+na2ig
+nai2s
+2n1a2kad.
+2n1a2kadá
+2n1a2kadh
+2n1a2kadnak
+2n1a2kado
+2n1akadó
+2n1a2kadt
+naki2á
+na2k®r
+nakü2
+2n1a2lap
+na2lid
+2nalí
+n1alj.
+2n1ann
+na2nya
+nao2
+naó2
+na2pák
+nap1áll
+na2p1el
+na2pen
+na2p1er
+na2p1ó2r
+napu2
+na2pud
+na2put
+na2tab
+na2tel
+na2t1ér
+na2t1osz
+2n1a2ty
+na2uk
+na2us
+na2uto
+na2zé
+na2zo
+1ná
+ná2ch
+ná2cse
+ná2csü
+ná2d1e2
+2n1á2g
+ná2lab
+2n1álar
+nále2
+n1állá
+2n1állo
+ná2mí
+ná2nad
+nán2c1
+n1á2ram
+ná2r1e2
+2nárui
+ná2rú
+2n1árv
+ná2sü
+ná2szat
+ná2sze
+ná2s3zö
+ná2szú
+ná2szü
+ná2tal
+n1átf
+ná2tí
+2n1átl
+2n1átm
+nba2l1
+n1b2l
+n2c1a2g
+n2c1ann
+nc1asz
+n2c1á2ro
+n2cáru
+nc3csö
+n2c1ép
+n2c3ha
+n2c3há
+nc3het
+n2c3hé
+nc3hoz
+nc3hu
+nci2alis
+nc1ing
+nc1i2r
+nc1ork
+n2c1ó2
+n2csab
+n2csáru
+ncs1árv
+ncs1elc
+n2csérte
+n2cs1íz
+n2csosz
+ncs1®r
+n2csur
+nd1arr
+nda2tal
+nda2tel
+n2d1a2z
+n2d1eb
+n2d1edd
+nd1egy
+n2deh
+nd1ekö
+nde2ná
+nde2n1ev
+n2d1é2l
+n2d1ész.
+nd1éti
+nd1ink
+ndme2
+n2d®rá
+n2d1®rn
+n2d1®2ro
+nd1®rö
+n1d2ram
+n1dy
+nd3zav
+n2d3zó
+1ne
+nea2k
+ne2áp
+2n1egy.
+n1egyf
+n1e2gyi
+n1egyk
+2n1egyn
+n1egys
+ne2k1eg
+ne2k1ó2
+ne1kri
+n1elk
+2n1e2l®a
+ne2l®k
+ne2l®t
+2n1elv
+ne2má
+2n1ember
+ne2m1eg
+nemes1s
+ne2més
+nem1id
+nem1iss
+n1eng
+n1enn
+ne2of
+ne2oli
+ne2olo
+ne2oló
+ne2or
+ne2os
+ne2ot
+neó2r
+n1erd
+2n1e2red
+2n1e2r®
+ne2sá
+ne2sem
+ne2setr
+ne2so
+2n1e2s®
+nesü2
+ne2süv
+nes3zs
+2n1e2sz¶
+ne2t1eg
+ne2tír
+ne2tok
+ne2tol
+ne2t1öl
+ne2vés.
+2n1e2v®
+ne2zer
+2nezüs
+1né
+2n1ég.
+2nége
+né2get
+2nég®
+né2gyá
+né2l¶
+né2p1a2
+né2pá
+né2peg
+né2p1e2l
+2n1é2pítk
+né2p1o
+né2pu
+2n1érc
+2n1érd
+né2ren
+2n1é2ré
+2n1érh
+2n1érm
+né2r®.
+2n1érte
+2n1érté
+2n1érv
+2n1érz
+né2szá
+né2szeg
+2n1étk
+néva2
+néve2l
+név1el®
+né2ves
+né2vü
+2névz
+nfe2li
+nfüs2
+nfüst1
+nfüstö2
+ng1a2dá
+ng1a2dó
+n2g1a2la
+n2g1alj
+n2g1ág
+n2g1árn
+ngás1s
+n2g1e2g
+ng1elm
+nge2rá
+ng1érté
+n2g1id
+ngi2g
+ng1iga
+ng1igé
+n2g1ing
+n2g1int
+ng1ír
+ngo1szk
+n2g1ön
+ng1ö2z
+ng1ug
+ng1üz
+n2g1¶
+n2gy1em
+n2gyél
+n2gyis
+n2gyí
+nhá2zig
+nhe2i
+nhé2t1
+1ni
+ni2ad
+ni2ah
+ni2am
+2n1i2de
+ni2dom
+2n1i2d®
+nie2l
+ni1f2
+2n1i2ga
+2n1i2gá
+2nigé
+2n1i2ly
+2n1imp
+2n1ind
+2n1inj
+2n1inté
+ni2pa
+ni1p2r
+ni2rat
+2n1i2rá
+2n1irg
+2n1i2ro
+2n1isk
+ni2s1ü2
+ni2sza
+ni2tal
+1ní
+2n1íg
+ní2ra
+2n1í2rá
+2n1í2ró
+2n1í2tél
+nka1b
+nk1adós
+nk1ajá
+n2k1alk
+nk1a2ut
+nk1áll
+nkás3s
+n2kátu
+nkci2ósz
+n2k1ell
+nké2pel
+nki2g
+nk1iga
+n2k1ing
+nk1inté
+nki2s1a
+nk1k2
+nk1old
+n2k1ö2lé
+nk2rit
+nkron1n
+nk1uz
+nk1üz
+nlac1
+nla2kos
+nlo2n1
+nme2g1
+nmono2x
+nn1áll
+nn1ége
+n2n1or
+nn1ug
+n2n1ú
+nnü2
+nn1ül®
+n2ny
+n3nyalá
+nny1a2n
+nny1ár
+nny1á2z
+n3nyil
+n3nyol
+nny1öz
+n3nyu
+n3nyú
+1no
+no1ch
+n1off
+2nogn
+no1g2rá
+2nogt
+no2kar
+no2kas
+noke2
+no2ker
+no2k1ir
+no2kö
+no1kro
+2n1okta
+no2k1ú
+2n1o2la
+2n1o2ly
+no2mér
+no2mol
+nom1p
+non2c3
+no2n1in
+no2o
+2n1o2pe
+no1p2h
+no1p2la
+n1ord
+2nore
+n1org
+no1szkó
+2n1oszl
+nosz3s
+1nó
+nó2dár
+nó2rák
+n1ó2rán
+nó2rí
+nósz2
+nó2s3zen
+1nö
+nö2l
+2n1ö2r
+n1össz
+nö2t1e
+nö2ti
+1n®
+n®e2
+n®2ir
+2n1®r.
+2n1®2ré
+2n1®2ri
+2n1®rk
+2n1®rn
+2n1®2rö
+2n1®rs
+2n1®rt
+2n1®rz
+n1p2
+n1r
+n2s1akk
+n2s1a2l
+ns1e2le
+ns1elt
+ns1ív
+ns3s
+n1s2tab
+nste2
+ns2tei
+n1stein.
+n1steine
+ns1ur
+ns1úr
+n1sy
+nsza2ké
+nszeng1
+nsz2fé
+n2t1akk
+ntan2t1
+ntap2
+n2t1a2rá
+n2t1ark
+nt1aut
+nt1azo
+n2táld
+n2t1áll
+n2t1árf
+n2t1áru
+nt1átl
+nt1e2dé
+n2t1egy
+n2t1ela
+nt1elr
+nte2m
+n2t1emb
+n2t1eme
+nte2r1a
+nte2sz
+nt1esze
+nt1eva
+nté2ké
+n2t1é2le
+n2t1érté
+nt1érz
+ntés1s
+nt1étke
+n1t2hu
+nti1k2l
+nti1p2
+nt1irá
+nt1izo
+nt1írá
+nt1írt
+n2t1íz
+nto1g2
+nt1o2ly
+nt1ó2ri
+n2t1ö2v
+n2t1ug
+ntus3s
+n2t1ü2s
+n2t1üt
+ntya2
+n2ty1al
+1nu
+2nud
+2nug
+nu2go
+nu2s1ol
+2n1u2tó
+1nú
+2n1úg
+2n1úté
+1nü
+2n1ü2g
+2n1üld
+n1üss
+2n1ü2te
+nü2ti
+nü2tö
+n1ü2t®
+2n1ü2z
+1n¶
+nvers1
+n2y
+1nya
+2nyabl
+2nyadó
+2nyaga
+2nyagá
+2nyagb
+2nyagh
+2nyagn
+nya2gos
+2nyagr
+2nyagy
+nya2k1ék
+nya2kér
+nya2lap
+2nyalm
+2ny1ant
+nya2nyá
+ny1apa
+2ny1arc
+ny1aut
+1nyá
+2nyág
+ny1á2lo
+2nyámh
+2nyámn
+2nyáp
+2ny1á2rat
+2nyárp
+2nyáru
+2nyásó
+2nyáta
+1nye
+2ny1e2gy
+2nyelc
+ny1elny
+ny1elo
+ny1el®h
+2ny1el®n
+nyel2vá
+2nyemel
+2ny1ene
+nyereg1
+2nyes®
+1nyé
+2nyéhes
+ny1éle
+2ny1ép
+2nyész®e
+2nyév.
+2nyévb
+2nyévek
+2nyévet
+2nyévn
+2nyévr
+2nyévv
+1nyi
+2nyid
+2ny1iga
+2ny1ill
+2nyimá
+2nyind
+2nyinf
+2ny1int
+2ny1i2p
+2nyirt
+2nyisk
+2nyism
+2ny1ist
+2ny1iz
+1nyí
+2nyív
+ny1k2
+nylo2n1
+1nyo
+2nyokoz
+3nyom
+ny1op
+ny1ors
+2ny1ott
+1nyó
+1nyö
+ny1öl
+1ny®
+ny1p2
+nys2
+3nys.
+1nyst.
+1nyu
+ny1ud
+2ny1uj
+2nyuno
+2nyus
+2ny1u2t
+1nyú
+2nyújs
+ny1úr.
+ny1ú2sz
+2nyútj
+2nyútt
+1nyü
+2ny1üg
+2nyüld
+ny1ür
+2ny1üt
+1ny¶
+2ny¶r
+ny1¶r.
+2ny¶z
+ny1¶2zé
+ny2van
+n2z1ak
+n2z1a2ny
+n2z1a2p
+nz1á2ru
+nz1e2dé
+n2z1eg
+n2z1elf
+n2z1ell
+n2z1e2l®
+n2z1ember
+nz1e2més
+nze2s
+nz1eszk
+nz1éhe
+nz1ére
+n2z1érm
+n2z1ér®
+n2z1i2p
+nz1k2
+n2z1ön
+nz1ös
+nz1p2
+nz3ság
+nz3sár
+nz3seg
+n2z3só
+nz1ü2g
+nz1üz
+nz3z
+2o.
+2o1a
+oa2cé
+oa2n
+oan1e
+o1á
+2oba
+obai2
+obás3s
+ob2bol
+ob2bö
+2obi
+obi2lan
+obi2o
+2obo
+obo2ra
+o2b1ü2
+2oca
+2oce
+oc1e2m
+2océ
+oc2k1é2
+2ocö
+o2csí
+o2csú
+oc3sz
+o2c3z
+oda1p
+1o2dáz.
+1o2dázh
+1o2dázn
+1o2dázó
+1o2dázt
+1o2dázzu
+2ode
+2odé
+od1éve
+o2d1í2
+1o2dú
+2o1e
+o2ei
+oe2l
+oe2m
+o2er
+o2es
+oe1t2
+oe2v
+2o1é
+oé2dere
+o2ég
+oé2l
+2ofa
+2ofe
+2ofé
+o1fl
+2ofo
+2ofó
+o1f2ri
+og1a2la
+o2g1alt
+o2g1ap
+og1assz
+o2g1asz
+oga2t1e2
+2ogá
+og1átk
+og1átr
+2oge
+o2g1e2d
+og1e2g
+o2g1e2l
+o2g1em
+oge2o
+og1ere
+oge2s
+o2g1ez
+o2g1él
+og1érv
+o2g1id
+o2g1i2g
+og1int
+o2g1i2p
+og1ir
+o1g2lic
+og2lób
+o1g2nai
+2ogó
+o2g1ö
+2o1g2raf
+2ográ
+o2g1u2t
+o2g1ü2
+2ogy
+ohó2cs
+o1i
+o2ib
+o2ih
+o2inte
+oi2o
+2oiz
+oi2zo
+o1í
+2ojá
+2oje
+ok1ajá
+o2k1a2la
+ok1alj
+ok1a2ra
+ok1arc
+ok1ass
+o2k1a2to
+okás1s
+2oke
+oke2d
+ok1edé
+ok1e2g
+o2k1e2m
+ok1ere
+ok1er®
+o2k1es
+ok1e2v
+ok1ez
+2oké
+ok1é2ne
+o2k1ér.
+o2k1érc
+o2k1érte
+o2k1éve
+ok2hi
+o2k1i2d
+ok1i2rá
+ok1ist
+ok1izm
+o2kí
+ok1ív
+ok1íz
+ok2lim
+ok2lor
+okon1n
+o2k1osz
+ok1ó2r
+o2k1öb
+o2k1ö2l
+okö2r
+ok2ris
+ok2rom
+2oku
+o2k1u2s
+o2k1ü2
+ola1d
+ol1ada
+1olajf
+o2lajt
+olaszó2
+ola2szór
+2olat
+ola2tol
+ol1áll
+olás1s
+ol2c1e
+ol2cé
+ol2csin
+ol2c3sor
+ol2dap
+ol2dál
+ol2d1is
+ol2d1ud
+ol2d1ü
+2ole
+o2l1e2l
+o2l1é2r
+ol2f1ö
+ol2fü
+o2l1il
+ol1ind
+2olit
+olki2
+ol2l1®
+ol1ó2rá
+ol1p2
+ol2taj
+ol2tág
+olte2
+ol2t1el
+ol2t1em
+ol2t1ér
+ol2tí
+ol2t®r
+ol2t1ü
+o2l1ug
+1olvad
+1olvas
+oly1agy
+o2lyaj
+o2lyál
+o2ly1ü2
+o2m1a2dó
+o2m1adt
+om1agy
+o2m1a2j
+o2m1akn
+om1akó
+o2m1a2l
+o2m1ana
+o2m1ann
+om1app
+o2m1ar
+om1atom
+o2m1árb
+o2m1áru
+omás3s
+2omb
+om2bág
+om2ber
+2ome
+om1ece
+o2m1edé
+o2meg
+om1egy
+ome2l
+o2m1ele
+o2m1ell
+o2m1elm
+o2m1elt
+o2m1e2m
+om1ene
+ome2o1
+omeosz2
+o2m1e2r®
+o2m1e2v
+o2m1e2z
+2oméd
+om1érc
+o2m1érte
+om1éve
+om1ide
+o2m1il
+om1ind
+o2m1ip
+o2m1i2r
+o2m1ism
+om1izo
+om1ír
+om1í2v
+omog2
+o2m1ola
+o2m1old
+o2m1op
+2omor
+o2m1ö2
+o2m1®2
+om1p2lo
+om1p2re
+oms2
+om1st
+o2m1ud
+o2m1uj
+o2m1ü2
+2om¶
+om1¶z
+on1agá
+on1ajt
+ona2le
+on1a2va
+o2n1átr
+on1átv
+on2cas
+on2c1é2
+onc3sz
+on2d1ó2r
+o2n1e2g
+o2nek
+one2l
+on1ele
+on1el®
+one2r
+on1ern
+o2n1ég
+on1éhe
+o2n1é2l
+on1éne
+o2n1é2p
+on1év.
+on1éve
+ong1asz
+oni2g
+on1igé
+o2n1ip
+on1ism
+on1izz
+onkás1
+on3nye
+on3nyo
+o2n1old
+on1opt
+ono2szi
+o2n1ö2
+o2n1®
+on2t1aj
+ont1á2ron
+on2tát
+on2ted
+on2t1ér
+on2t1ös
+on1t2ri
+on1ud
+on1ug
+o2n1ut
+onú2
+o2núj
+on1ús
+2onü
+on1ü2l
+on1üt
+on1ü2v
+ony1any
+o2ny1ál
+ony1em
+o2nyer
+ony1es
+ony1ég
+o2ny1ir
+o2ny1it
+o2ny1ó2
+o2nyö
+o2ny1®2
+2onysiosá
+on2zed
+on2z1es
+onzé2
+on2zér
+on2zsá
+2o1o
+o2ob
+o2of
+o2og
+o2ol
+oo2r
+o2ot
+oo2x
+o2ó
+o1ö2
+o1®
+2opa
+op1e2g
+2oph2
+op2his
+2opl
+op2le
+2opo
+2opr
+op2rod
+2ops
+opsz2t
+2opü1
+or1abl
+or1ala
+or1alj
+or1alm
+ora2n
+o2r1ana
+o2r1ant
+or1any
+ora1p
+or1arc
+or1atl
+o2r1á2g
+or1á2rak
+or1áru
+or2cs®
+or2dö
+or2dú
+o2r1e2d
+or1elm
+or1eln
+or1elo
+or1e2l®
+or1els
+o2r1e2m
+o2r1eng
+or1eny
+o2r1e2r
+ore2s
+or1es®
+or1é2gé
+o2r1é2l
+or1é2ne
+o2r1ép
+2orgia
+orgi2ai
+2orgiá
+or1i2de
+1o2rie
+o2riga
+o2r1ing
+or1i2pa
+o2r1is.
+or1isp
+or1iss
+or1iste
+ori2sz
+o2r1ír
+o2ríz
+or1kr
+or2ne.
+o2r1or
+or1ó2r
+o2r1ö
+or1pl
+or1pr
+or2r1e2v
+orse2
+or2sel
+or2ses
+or2set
+orsé2
+or2s1ég
+or2s1ér
+or2sét
+or2sis
+ors3s
+1ország.
+or2t1a2d
+or2táru
+or2teg
+ort1elm
+or2t1em
+ort1esz
+ort1ért
+ort1ing
+or2t1osz
+or2t1ös
+o2r1ud
+o2r1ug
+or1u2r
+o2r1u2t
+o2r1ü
+o1ry
+orz1z
+o2s1ac
+o2s1a2la
+o2s1alk
+osa2t
+os1aty
+o2s1áf
+os1áll
+ose2
+os1ed
+os1eg
+os1el
+os1emb
+os1en
+os1er
+os1esz
+o2s1ép
+o2s1id
+os1ina
+os1int
+o2sir
+o2s1í2r
+os1k
+oski2
+osme2
+os1p2
+ossz1es
+os3szék
+os3szö
+os3sz®
+os2t1any
+os1the
+1ostro
+1ostya
+o2s1uj
+o2s1ut
+os1úr.
+os1út
+o2s1ü2
+osz1alk
+o2sz1e2l
+o1sz2fe
+2o1szkl
+2oszkóp.
+2oszkópk
+2oszkópo
+2oszkópp
+osz1ors
+osz1ó2r
+o2s3zö
+o2s3z®
+o2szut
+o2sz¶
+ota1g
+o2t1a2u
+o2t1ág
+ot1á2rak
+2ote
+o2t1e2g
+2otéka
+o2t1érté
+o1t2he
+ot2hi
+2otí
+oto1g2
+oto1p
+otosz2f
+otot2
+otókész1
+otó2pa
+o2t1ó2sá
+2otro
+ot2tar
+ot2tég
+o2t1ü2
+o1u
+o2uc
+o2un
+o2ur
+o2us
+o2ut
+ouv2
+o1ú
+o1ü
+o1¶
+ovas3s
+owat2
+o2wi
+1oxido
+o1ya
+o1ye
+oy1s2
+oza2g1
+oza2tí
+ozatkész1
+oza2t1ol
+ozás3s
+oz1é2p
+o2z1il
+ozi1sz2
+oz3sz
+2ó.
+ó1a
+óa2c
+2óa2d
+óa2g
+óa2j
+2óak
+2óa2l
+2óa2m
+óa2n
+2óa2r
+2óa2u
+óa2v
+2óa2z
+2ó1á
+óá2c
+óá2gak
+óá2l
+óá2p
+óá2r
+óá2t1
+2óbar
+óba1s2
+2óbec
+2óbef
+2óbem
+2óbes
+2óbé
+2óbil
+2óbio
+2óbir
+2óbit
+óbo2rá
+ó2c1an
+óc3c
+óc3ho
+2óci
+2ócí
+óc3ság
+ó2csár
+óc3sip
+óc3sz
+2ódar
+ó2d1ál
+ódá2r
+ód1ára
+ódás1s
+2óde
+ó2d1id
+ód1isk
+2ódí
+ó2d1ír
+ód1öl
+ód2res
+ód2rót
+ó1dy
+ód3zs
+2ó1e2
+óel1a2
+ó1é
+óé2g
+óé2l
+óé2ne
+óé2p
+óé2ré
+óé2ri
+óé2r®
+2óérté
+2óérz
+óé2te
+óé2ve
+2ófa.
+2ófae
+2ófá
+2ófi
+2ófo
+2ófr
+óf2ri
+ófus1s
+2ófü
+2óg
+ógi2as
+ógo2r1as
+ógy1a2n
+ógy1el
+ógy1es
+ógy1ér
+ógy1in
+ó2gyü
+2óhá
+2óhé
+2óhi
+2óhí
+2óhor
+2óh®
+2óhu
+ó1i
+2ói2de
+2ói2d®
+ói2g
+2óigé
+ói2má
+2óing
+2óint
+2ói2p
+ói2rat
+2ói2rá
+ói2ro
+2ói2s
+ói2ta
+ói2z
+2ó1í2
+2ójáté
+2óje
+2ókap
+2ókate
+ók1áll
+ók1áru
+ó2k1eg
+2ókel
+2óker
+2ókez
+2ókény
+2óképe
+2óképl
+2óképn
+2óképt
+2óképz
+2ókéré
+2ókér®
+2ókés
+ó1k2hi
+2ókie
+2ókine
+ók1int
+2ókiny
+ók1iro
+2ókomm
+2ókoo
+2ókö
+ó1kraj
+ó1k2ré
+ók2ri
+ó1k2ro
+ó2kum
+2ókut
+2ókül
+2óküs
+ó2k1üz
+ól1aj
+ó2l1a2r
+ólás3s
+1ólb
+2óle
+ó2l1e2se
+ó2l1e2si
+ó2l1ér
+óli2óé
+ólo2m1e
+ólo2mé
+ól1öl
+ólu2mi
+2ómag
+2óme
+ómen1k2
+2ómére
+2óméré
+2ómérn
+2ómét
+2ómi
+2ómor
+2ómoz
+2ómó
+2óm¶
+2ónag
+óna2ké
+óna2kü
+ó2n1al
+ó2n1áll
+ón1e2d
+2óné
+ón1o2x
+2ónö
+ón1ön
+ón1öt
+ónus3s
+ó2n1ut
+ó2n1ü2
+2ónyil
+2ó1o2
+ó1ó2
+2ó1ö2
+ó1®
+2ópa
+óp1a2rá
+2ópá
+ó1p2l
+ó1p2ré
+ó1p2ro
+ó1p2ró
+ó2raa
+1ó2rab
+1ó2ral
+2órád
+1ó2ráé
+órá2g
+ór1ágy
+1ó2ráh
+1ó2rár
+1ó2ráv
+2óre
+ó2r1e2g
+ó2r1e2l
+óre2s
+ór1ese
+ó2r1e2ti
+ó2r1é2l
+ó2r1i2o
+ó2r1ism
+ór1ír
+2óro
+ó2r1o2ki
+ó2r1o2ko
+2órö
+ó2s1as
+ó2s1ál
+2óse
+ó2s1e2g
+ós1emb
+ó2s1id
+ó2s1i2n
+ós1isk
+ós1k
+óskész1
+2ósor
+ó2s1os
+ósó2
+ós1ór
+ós1p2
+2óspe
+ós2pek
+ós2por
+óst2
+ó1s2tí
+2ó1str
+2ósu
+ó2s1ur
+ó2s1úr
+ósü2l
+2ós¶
+2ósza
+ós3zac
+2ószá
+2ószel
+2ószem
+2ószen
+2ószé
+2ószi
+2ószí
+ósz2láv.
+2ószol
+2ószó
+ószóza2
+2ószö
+ós3zs
+ósz1th
+ószt2r
+ó1sz2v
+ót1a2d
+2ótag
+2ótar
+ót1áll
+2ótár
+2ótáv
+ótá2v1i2
+ótá2v1í2
+2ótec
+ót1e2g
+ót1ej
+2ótel
+2óten
+2óter
+2ótén
+ót1il
+ót1ing
+2ótí
+ót1í2v
+ótme2g1
+ót1orr
+ó2t1ors
+2ótov
+2ótö
+ót2ré
+ótt¶z1
+2ótu
+ót1u2t
+2ótü
+ó1u2
+ó1ú2
+2ó1ü2
+ó1¶
+ó2vat
+2óvál
+2óve
+2óvé
+1óvh
+2óvi
+óv1in
+1óvj
+1óvn
+1ó2vod
+1óvt
+2óza
+óza1s
+óza2tak
+óza2t1al
+óza2t1e
+óz1e2m
+ó2z1é2
+ózi2a
+ó2z1i2n
+ó2z1u2r
+ó2z1ú2
+óz3zs
+2ö.
+ö1a
+ö1á
+ö2b1á2
+öb2b1a2
+öb2bá
+öb2b1ez
+öb2b1is
+öb2b1o
+öb2bó
+ö2b1eg
+ö2b1e2l
+ö2b1e2n
+ö2b1ért
+öbme2
+ö2csé
+ö2d1a2
+ö2d1é2v
+ödfé2
+ö2d1is
+ö2d1í
+ö2d1o
+ö2d1ó2
+öd3zs
+öd3zu
+ö1e
+ö1é
+ö2g1a2
+ö2g1elf
+ö2g1esz
+ö2g1ev
+ögés3s
+ög3g
+ö2g1id
+ö2g1im
+ö2g1in
+ö2g1o
+ö2g1u2
+ö1i
+ö1í
+ö2k1a2
+ö2k1á
+ök1elh
+ö2k1e2m
+ö2k1érté
+ökés3s
+ök1ész
+öki2
+ö2k1id
+ö2k1if
+ö2k1im
+ök1ív
+ök1íz
+ökma2
+ö2ko
+ökös3s
+1ökrö
+öksza2
+ökü2l
+ö2k1ülé
+ö2l1a2
+ö2l1á
+öl2csá
+öl2cs1í
+öl2cso
+öl2dab
+öl2d1a2l
+öl2dan
+öl2d1as
+öl2d1á2
+öl2d1éh
+öld1ing
+öl2d1is
+öl2dos
+öl2dz
+öl1e2b
+öl1egy
+ö2lel
+ö2le2m
+öl1eme
+öl1emé
+öl1eml
+öl1eng
+ö2l1e2r
+ö2l1esz
+ö2l1e2v
+ö2l1é2g
+ölé2k
+öl1éke
+ö2l1é2l
+ölé2nyeg
+ö2l1é2p
+ö2l1ér.
+ö2l1é2rek
+ö2l1érh
+ö2l1érj
+ö2l1érn
+ö2lér®
+ö2l1ért
+öl1f2
+öl2gya
+öl2gyá
+ö2l1id
+ö2l1ij
+ö2l1il
+ö2l1i2r
+ö2l1is
+ö2l1iz
+öl1í2r
+ö2l1o2
+ö2l1öl
+ölös3s
+ö2l1ö2v
+öl1p2
+ö2l1u2
+ö2lú
+ö2l1ült
+ö2l1üt
+1ölyv
+ö2m1a2
+ö2m1á2
+2ömb
+öm2b1a2
+öm2b1á
+ömbé2
+öm2bú
+ö2m1eb
+öme2g1a
+ömeg1g
+ö2m1el
+ö2m1él
+ö2m1it
+ö2m1o2
+öm1p2
+ömpin2
+ö2m1u
+ö2n1a2
+ön1ám
+ön1á2p
+ön1át
+2önc
+ön2ci
+ön1e2g
+ö2n1e2l
+ö2n1em
+ön1e2r
+ön1es
+ön1e2v
+ö2n1é2l
+ön1é2p
+ön1ész
+ö2név
+ön1év.
+ön2gyá
+öni2
+ön1ig
+ön1im
+ön1in
+ön1ir
+ön1is
+ö2n1ír
+önké2r1e
+ön2n1a2
+ön2n1á
+ön1or
+ön1os
+ön1ó2r
+ön1®2r
+öntös3s
+ö2n1u2
+ö2n1ú
+ön1üt
+ö2ny1a2
+ö2ny1o
+öny2v1a2
+öny2vár
+önyves1
+öny2v1ég
+ö1o
+ö1ó
+ö1ö
+ö1®
+öp1ép
+öpi2
+öp1ir
+ö2r1a2
+ö2r1á2
+2örb
+2örc
+2ördí
+2ördü
+1ö2reg
+öre2ga
+öre2gu
+ö2r1el
+ö2r1er
+ö2rég
+ö2r1é2l
+ör1é2ri
+örés1s
+örfö2l
+ör2f1ölé
+2örg
+öri2g
+ö2r1iga
+ö2r1in
+ör1i2p
+ö2r1ir
+ö2r1is
+ör1i2v
+ö2r1ír
+ö2r1ív
+2örn
+ör2ny1a2
+ö2r1o
+2örög
+örös3s
+örösz2
+ör2t1a2l
+ör2t1í2
+ö2r1u2
+ö2r1ú2
+1örv.
+ör2zs1a
+ör2zs1á
+ö2s1a2
+ö2s1á2
+ö2s1el
+ö2s1em
+öses3s
+ö2s1ez
+ösi2
+ö2s1in
+ö2s1iz
+ös1k
+ö2s1o2
+ö2s1ó2
+ös1®r
+össz1ál
+ös3szí
+ö2s1üg
+ös1ü2v
+öszt1an
+ösz2t1el
+öt1a
+öt1á2
+öt1e2m
+öte2z
+öt1eze
+öt1ér
+öt1é2v
+1ötf
+2öth
+1ötk
+1ötm
+öt1ó2
+ö2tön
+ö2tös
+öt2t1á2
+öt1u
+ötü2
+öt1ül
+ötve2g
+ötvé2nyé
+ö1u
+ö1ú
+ö1ü
+ö1¶
+1öv.
+öveg1g
+övis1s
+1övn
+1övv
+ö2z1a2
+ö2z1á2
+ö2z1eb
+ö2z1egés
+ö2zellá
+ö2z1em
+ö2z1er
+ö2z1e2s
+öz1e2v
+öz1élel
+öz1é2let.
+özé2pem
+öz1é2pí
+ö2z1érd
+öz1étk
+ö2z1i2g
+ö2z1int
+ö2z1i2r
+öz1ír
+özme2
+ö2z1o2
+özok1
+ö2z1ó2
+öz1p2
+ö2z3s
+ö2z1u2
+ö2z1ú2
+öz1ü2g
+öz1ü2z
+ö1zy
+2®.
+®1a
+®a2c
+®a2dan
+®a2dati
+®a2dá
+®a2dok
+®a2dot
+®a2dó
+®adókész1
+®a2g
+®a2j
+®a2k
+®a2l
+®a2n
+®a2p
+®a2r
+®a2t
+®a2u
+®a2z
+®1á2
+®át1
+®ba2l1
+®b2bis
+®b2bu
+®1b2l
+®1b2r
+®2d1el
+®dés3s
+®2d1in
+®d2ró
+2®1e
+®e2c
+®e2d
+®e2g
+®e2le
+®el1o
+®e2l®tte
+®e2n
+®e2p
+®e2re
+®e2r®b
+®e2r®i
+®e2r®k
+®e2r®ne
+®e2r®nk.
+®e2r®r
+®e2r®s
+®e2r®t
+®e2r®v
+®e2s
+®1é
+®é2g
+®é2l
+®é2p
+®é2ri
+®é2te
+®1f2r
+®ga2z1
+®ge2o
+®1i
+®i2dea
+®i2deá
+®i2deg
+®i2dé
+®i2d®
+®i2g
+®i2ma
+®i2má
+®i2na
+®i2p
+®i2ra
+®i2ro
+®2isz
+®i2ta
+®i2va
+®i2z
+®1í
+®í2r
+®í2v
+®job2
+®1k2ré
+®1o2
+®1ó2
+®1ö2
+®1®2
+®1p2
+®po2ra
+®r1al
+®r1at
+1®2r1a2u
+1®2r1ál
+®r1á2p
+®r1ár
+®r1át
+®r1e2ge
+®r1e2gé
+®rei2g
+®r1elv
+®rend®2
+®2r1é2l
+®r1iga
+1®2ril
+®r1ing
+®2r1i2p
+®2r1ir
+®2r1o2l
+®ron2g
+1®2r1or
+®r1osz
+1®rör
+®rös1s
+®2r1öv
+1®2r1®r
+®r1p2
+1®rse
+®rt2
+1®rti
+1®r1tr
+®r1u2t
+®2rül
+®2s1ad
+®s1a2g
+®2s1ak
+®2s1a2l
+®s1a2n
+®s1ará
+®sa2v
+®2s1ál
+®s1egy
+®s1e2l
+®2s1em
+®2s1ep
+®s1erd
+®se2s
+®s1ese
+®2sib
+®2s1id
+®s1iz
+®s2kál
+®s1okt
+®s1p2
+®s2pe
+®ssz2
+®s3szl
+®s3szü
+®st2
+®1str
+®2s1ür
+®sz1e2l®
+®szt2
+®t1áll
+®t2ra
+®t2ri
+®t2t1o
+®1u
+®u2r
+®1ú
+®ú2r
+®ú2s
+®1ü
+®ü2g
+®ü2r
+®ü2t
+®ü2v
+®ü2z
+®1¶
+®z1a2g
+®z1elo
+®2z1er
+®z3sug
+®2z3sü
+®z3sz
+®zü2
+®z1üz
+1pa
+paá2
+pa2ce
+pa2ch
+pa2dag
+pa2de
+pae2
+pa1g2n
+pa2kad
+pa2lap
+2p1alj
+pa2m1as
+pa2mur
+pa2nal
+p1a2nya
+pa2p1il
+par1ágá
+2parb
+pa2r1el
+par1isk
+pa2r1ok
+2parr
+par2t1a2l
+par2tol
+pa2t1eg
+pat1ért
+pa2ul.
+pa2x
+2p1axi
+1pá
+pá2csü
+pá2ga
+pá2gy
+p1állí
+p1álló
+pá2mí
+2pámn
+pá2mu
+pána2
+pá2n1am
+pá2n1e
+pá2ny1át
+pá2po
+2páram
+pá2r1ato
+pá2r1e2
+pár2tak
+pár2tál
+pár2tár
+pár2t1e
+pár2tér
+pá2rus
+pá2sir
+pá2t1a
+2p1átm
+pá2t1uk
+pba2l1
+pci2ókér
+pd2
+p1dr
+1pe
+pea2
+2peci
+pe2dén
+pegész1
+pe2is
+p1elemz
+2p1elk
+2p1elm
+2pelo
+pe2l1os
+2p1e2l®á
+2p1eltér
+2p1ember
+2p1e2mel
+pe2mó
+2pene
+pen3ny
+pe2no
+pe2nya
+pe2po
+per1akt
+pe2r1él
+pe2rid
+per1int
+pe2r1os
+pe2rox
+pe2ró
+pe2rö
+2p1e2r®
+pe2rú
+pe2sú
+pe2sz1á
+pe2szu
+pe2sz1ü2
+2p1e2v
+1pé
+2p1é2g
+2p1é2je
+péki2
+pé2kü
+2p1é2lé
+2p1élm
+2p1élr
+2p1é2neke
+2p1é2pí
+pé2pü
+2p1érd
+2p1érv
+2p1érz
+pé2s1e2l
+pé2sz1á2
+pé2szü
+2p1év.
+2p1évv
+pfe2li
+p1f2ri
+p1f2ro
+p2hem
+p2hiá
+1phila
+p2hiu
+1p2hok
+1p2hó
+1pi
+pi2ad
+2picl
+pi2den
+pi2deo
+2p1i2d®
+pi2eg
+pier2re.
+2p1i2ga
+pigaz1
+2pige
+2p1i2gé
+2p1i2ly
+2p1i2má
+pin2g1a
+ping1ár
+pi2óh
+pi2ós
+pi2rat
+pi2rod
+2p1ism
+pi1t2h
+2pizz
+1pí
+2p1íg
+pí2r1a2
+pí2rá
+pí2rol
+2p1í2ró
+p1í2tél
+pki2s1
+plas2
+1play.
+ple2is
+p2lö
+plüs2
+plüss1
+pno1g2
+1po
+po2csiz
+po1gra
+po1g2rá
+2p1okm
+po2laj
+pol2c3s
+2p1old
+2p1oml
+pon2gas
+pon2t1e
+2ponz
+2po2pe
+po2p1é2
+po1pl
+pop1s
+por1adó
+po2res
+por1s
+por2t1el
+por2tes
+por2tér
+por2tin
+por2tü
+po2se
+po2s1é
+po1szf
+2p1oszl
+po2t1el
+1pó
+póka2
+pó2k1ag
+pó2rák
+pó2rán
+pó2rát
+pós3s
+pó2t1a2
+pó2tá
+pó2t1e2
+pó2t1é2
+pó2ti
+pó2tor
+pó2tu
+pó2t1ü2
+1pö
+1p®
+p®1kr
+2p1®r.
+pp1akk
+pp1ekk
+ppko2
+ppo2d
+pp1oda
+pp2ró
+p2pú
+p2rec
+prek2
+pre1kl
+pre1p2
+1presszionis
+1p2resszí
+1prédál.
+1prédálá
+1p2riv
+1p2roce
+1p2rog
+p2roj
+pro1k2h
+pru2s1á
+prus3s
+p1sc
+p1s2k
+p2s1ork
+p1s2p
+p1st2
+1pszic
+psz1ön
+pszt2
+p2t1i2o
+pto1g2
+pt1olv
+1pu
+pu2s1a2n
+pu2se
+1pú
+p1úg
+pú2t
+1pü
+2p1ü2g
+pügyész1
+2p1üld
+2püle
+2p1ünn
+püt2
+pü1th
+2p1ü2z
+1p¶
+1py
+1qa
+1qá
+1qe
+1qé
+1qi
+1qí
+1qo
+1qó
+1qö
+1q®
+1qu
+qu2i
+1qú
+1qü
+1q¶
+q2v
+1ra
+ra2b1ár
+rabi2g
+rab1iga
+rab1igá
+r1a2dag
+2radm
+rae2g
+ra2et
+raé2dere
+2rafik
+ra1f2r
+rai2g
+2rajc
+2r1a2kar
+ra2kác
+ra1klé
+ra1k2ro
+ra2lak
+ra2l1eg
+2ralk
+ral2lá
+2r1als
+ra2mad
+ra2mir
+ra2mí
+ra2nal
+ran2ga
+ran2ge
+ran2szá
+ra2nyal
+ra2nyál
+ranye2
+rany1er
+ra2nyé
+ra2nyó
+2ranza
+2ranziti
+rao2
+ra2pák
+2rapp
+ra1p2r
+ra2rán
+rast2
+ra1sta
+rasztá2r
+raszt1áro
+2r1a2tád
+2ratc
+ra1thó
+ra2tir
+2ratké
+2ratki
+2ratokn
+ra2tomo
+2ratoz.
+2ratozi
+2ratst
+ra2tür
+ra2ub
+ra2us
+2raví
+raza2
+raz1any
+ra2zel
+1rá
+2r1ábr
+rá2ca
+2ráfia
+2ráfiái
+2ráfián
+2ráfiát
+2ráfj
+2ráfp
+2ráfu
+2rá2fü
+rá2ge
+rá2gén
+rág3g
+rá2gi.
+rá2gil
+2rágun
+2rágy
+rá2l1a2l
+2r1állan
+2r1állo
+rá2lyú
+rá2nér
+ránt1ak
+ránt1a2l
+ránt1á2r
+rán2t1e
+2rányí
+rá2nyol
+2rányú
+rá1p2
+rá2rad
+2rárak
+r1á2ram
+rá2r1ál
+rá2rár
+rárboc1
+rá2r1é
+rá2rin
+rá2rok
+rá2rol
+2ráru
+rá2rul
+rá2rus
+2r1á2rú
+rá2sir
+rá2s1ol
+2rásó
+rás1ó2r
+rát1ad
+rát1á2r
+2rátlé
+2r1átm
+rá1tro
+2r1átv
+rá2zsár
+rba2ná
+r1b2la
+r1b2r
+rc1ab
+r2c1al
+rc1a2m
+rc1ará
+r2c1ál
+r2c1áp
+rc1edé
+r2c1ele
+r2c1el®
+rc1esz
+rcé2l
+r2c1él.
+r2c1éle
+r2c1élé
+r2c1éll
+rc1élt
+rcés3
+rc3hel
+r2c1i2d
+rc1ing
+r2c1izo
+rckész1
+rc1kr
+rc1or
+r2c1ó2
+rc1ön
+rc1ös
+rc3s®t
+rc3za
+rd1ág
+rde2kér
+rd1él.
+rd1é2le
+rd1élr
+r2d1id
+r2d1i2nak
+rd1íz
+r2d1or
+rd1ös
+r1d2rá
+rdu2s1
+rd1út
+r1dy
+rd3zo
+1re
+re2ájá
+re2ák
+reá2l1u
+re2áv
+2r1ebh
+re2cá
+re2ch
+redenc1
+re2dir
+re2dí
+re2dor
+ree2s
+re2et
+re2g1a2l
+re2gap
+r1egóv
+2r1egy.
+re2gyez1
+2r1e2gyé
+2r1egys
+re2inh
+rei2rá
+2rejü
+rek1arc
+re2k1asz
+re2k1emb
+re2kid
+re2k1ot
+re2lad
+2relemi.
+2r1e2lemz
+2relmél
+2r1elnö
+2relo
+re2l1os
+re2l®i
+2r1elr
+2r1elto
+2r1elv.
+2r1elvá
+2r1elvek
+2r1elvet
+2r1elvév
+2r1elvk
+2r1elvn
+r1elz
+re2maj
+2r1ember
+re2mel
+re2m1®
+2r1enti
+re2of
+re2o1g2
+re2ok
+re2op
+re2ot
+re2ók
+re2ól
+re2ós
+re2ót
+re2óv
+re2pad
+re2pak
+re2pal
+re2pas
+re1pla
+rep1os
+re1p2res
+2r1erd
+re2res
+2r1e2r®
+2r1ers
+re2sa
+re2sá
+2reskü
+2resszionis
+2r1eszm
+re2t1any
+ret1ell
+ret1elo
+reu2t
+rev1e2le
+re2vés
+2r1e2v®
+re2x1
+2r1ezr
+1ré
+2rédál.
+2rédálá
+2r1é2de
+2réf
+ré2gá
+ré2g1ó2
+2r1é2hes
+ré2kal
+ré2kel
+rék1el®
+r1é2kes
+ré2les
+2r1é2let
+2r1élm
+2rély
+ré2mo
+ré2mu
+ré2p1ed
+2r1é2pí
+ré2pü
+2r1ér.
+r1érd
+2r1é2ret
+2réri
+2r1érté
+2r1érz
+ré2sza
+ré2szá
+ré2sz1er
+ré2szo
+ré2sz1ö
+ré2tal
+ré2tí
+2r1étk
+ré2tö
+2réven
+2r1é2ves
+ré2z1a
+ré2z1e2
+ré2zin
+ré2z1o
+ré2zsi
+réz3sz
+rfi1s
+r1f2l
+r2f1öln
+r1f2r
+rgás1s
+rgés3s
+rg2ha
+rg2la
+r1g2r
+r2gy1asz
+r2gyál
+rgy1e2s
+r2gyis
+1ri
+ri2ac
+ri2af
+ri2ag
+ri2ah
+ri2aj
+ri2ala
+ri2amé
+ri2ap
+2ribü
+ri2deá
+ri2dei
+ri2deo
+2ridg
+2r1i2d®
+ri2ed
+rie2m
+riet2te
+r1i2gaz
+2r1i2gé
+ri1klo
+ri1k2ló
+ri2lal
+ri1ly
+2r1i2nas
+rinc3c
+rin2c3s
+2r1inf
+2ringb
+2r1integ
+rin1tho
+riog2
+rio1k2
+ri2om
+ri2ósz
+2r1i2ra
+ri2rá
+r1i2ri
+2r1i2ro
+ri2rón
+2r1irt
+2riskolát
+ri2sor
+2risten.
+2ristene
+2ristenné
+2ristenn®.
+2ristenn®k
+2risza
+2r1i2tal
+ri2vás
+2r1i2vó
+ri2x1el
+ri2xi
+2r1izmo
+r1i2zom
+2rizz
+1rí
+2ríj
+rí2ja
+rí2rá
+rí2ró
+rí2ve
+rí2vé
+rí2vü
+r2j1er
+r2j1u2r
+rk1ang
+rkas3s
+rká2n1e2
+rkes2
+r1k2hé
+r1k2hi
+rki2g
+rk1iga
+r2k1ill
+rki2s1
+r1k2la
+rk2rá
+rk2re
+rk2ré
+r1k2ri
+r2k1út
+rle2g1a
+rle2g1á
+rm1akó
+rma2tal
+rma2tár
+r2m1áll
+rmá2nyi
+rme2g1á
+rmé2kel
+r2m1ors
+rmo1sz2t
+rm1s2
+rna1t2
+rndi2
+rne2mis
+rne2tel
+rnet1o
+r2n1ip
+rno1g2
+r2n1ó2d
+rnó1s
+rn1s2
+r2nyaj
+r2nyalak
+rny1old
+r2nyús
+1ro
+roá2
+2robl
+2rodú
+2rofe
+ro2g1ad
+ro2gár
+ro1gráf
+ro2k1as
+rok1ás
+roke2
+ro2ked
+ro2ker
+ro2kiz
+ro1kli
+ro1kri
+2r1o2laj
+2r1olda
+2r1oltó
+ro2m1ál
+ro2m1á2ro
+2rombi
+ro2mel
+ro2m1es
+rom1ért
+ro2mév
+rom1ist
+ro2m1iz
+ro2mí
+ro2m1or
+ro2m1ó2r
+ro2nop
+ro2nú
+ro2nü
+ro2nyu
+ron2zá
+ro1p2r
+2r1org
+2r1o2ro
+ro2ru
+2r1orv
+ro2sar
+ro2se
+ro2sin
+ros3szá
+rosz2fé
+roszlán1n
+ro2szó
+1ró
+róa2
+ró2dis
+ró2dö
+róme2
+rómeg1
+ró2mez
+2róms
+róp2
+ró1pr
+ró2ráj
+ró2rák
+ró2rán
+ró2rát
+ró2ri
+ró2t1ak
+ró2tin
+róz1z
+1rö
+2r1ö2b
+rö2k1é2l
+rö2k1érv
+2rökí
+2rökl
+rök1o
+rö2le
+2röme.
+2römé
+2römne
+rö2pi
+2r1ö2r
+rö2s®
+rö2sü
+rö2ve
+1r®
+2r®db
+2r®dí
+2r®dr
+r®e2
+r®1g2
+r®i2rá
+2r®lk
+2r®lt
+2r®nke
+2r®nkk
+2r1®rn
+r®2s1á2
+r®2si
+2r®sít®.
+2r®sít®r
+2r®szakol.
+2r®szakolá
+2r®szakolj
+2r®szakolt
+2r®tl
+r1p2h
+rp2la
+rp2le
+rpo2i
+rp2ré
+r1p2rí
+r1p2ro
+r1p2ró
+rqu2
+r2r1árb
+rrás1s
+r2r1ir
+rri2ta
+r2r1oll
+rró1d2
+rr1p2
+rr1sp
+r2rü
+r2s1ac
+rsa2il2
+r2s1a2la
+rs1alu
+rs1a2ny
+rs1ara
+rs1áru
+rs1ele
+rs1esz
+rse2t
+rs1ete
+r2s1ép
+rs1éte
+rs1étt
+r2s1i2d
+rs1iga
+r2s1in
+r2s1i2o
+r2s1i2r
+rs1ist
+r2s1í2r
+r1smi
+r2s1olv
+r2s1ors
+rsp2
+rs1st
+rs3sza
+rs3szá
+rs3szí
+rs3szö
+rs2tab
+rste2i
+r1s2to
+rst2r
+r1stru
+r2s1ur
+r2s1u2t
+r2s1ú2s
+rs1üld
+rsza2ké
+rszáraz1
+r1sz2f
+r1sz2k
+r1szn
+r1sz2tá
+r1szt2r
+rta1g2
+r2t1aj
+r2t1als
+rta2me
+rt1app
+r2t1a2u
+r2t1a2z
+rt1ág.
+r2t1á2ga
+rt1ágr
+rtá2ló.
+rtá2ly1át
+rtá2rul
+r2t1átl
+rteá2
+rt1e2gy
+rt1eml
+r2t1ent
+rtes1s
+r2t1é2le
+r2t1érd
+rt1érte
+r2t1érz
+rt2hág
+r1t2hen
+r2t1i2d
+rti2g
+rt1iga
+r2t1ill
+r2t1inf
+r2t1iro
+r2t1isk
+rtme2g1
+r2t1oli
+rt1oml
+rton1n
+r2t1org
+r2t1orv
+rt2ran
+rt2rom
+rt1t2
+r2t1u2t
+r2t1új
+r2tüd
+rt1ünn
+rt1ür
+r2t1üt
+rty2v
+1ru
+rua2
+r1ubb
+r1udv
+rue2
+rug3g
+rugós1
+2r1ugr
+2ruktú
+ru2ru
+ru2se
+ru2sin
+2rusí
+ru2su
+ru2szu
+ru2tak
+ru2tat
+ru2tó.
+ru2tu
+2ruü
+1rú
+rú2d1a2
+rú2du
+rú2ri
+2r1útj
+2r1ú2to
+2r1útr
+1rü
+rü2lér
+rü2l1öl
+rü2l1ön
+2r1ünn
+2r1ü2r
+2rü2t
+2r1ü2v
+2r1ü2z
+1r¶
+r1¶rt
+rvas3s
+r2v1e2l®i2
+rve2ra
+r2v1érte
+r2v1ip
+r2v1or
+rv1osz
+ry1é2
+r2z1a2la
+rza2t1al
+r2z1ára
+rze2tel
+rzs1a2n
+rz3ság
+r2zs®
+rz3sz
+1sa
+2s1abr
+sa2cé
+sa2dói
+sa2dój
+sa2dók
+sa2dór
+3sajd
+2s1ajta
+2sajtón
+sa2kan
+2sakar
+s1akc
+sa2k1el
+sa2kis
+sa2k1í
+2salf
+2salji
+2salm
+2salu
+sa2m1il
+sa2mí
+sao2
+2sapa
+2sapá
+2sapr
+sa1pré
+sa2ran
+2s1a2ri
+3sas.
+sa2s1or
+sas3sze
+2s1asszo
+sa2su
+2s1a2tom
+2saty
+sa2uc
+sa2un
+savar1a
+sa2v1ál
+1sá
+sábe2
+sá2b1er
+sá2fo
+sá2gal
+sá2g1ál
+3ságb
+3ságd
+3sá2ge
+3ságé
+3ságf
+3ságg
+3ságh
+3sági
+sá2gí
+3ságk
+3ságm
+3ságo
+sá2g1osz
+3ságp
+3ságr
+3ságs
+3ságu
+3ságü
+2s1á2gy
+2s1áld
+2sáll
+3sámf
+sán1t2
+sá2r1a2g
+2s1á2rai.
+s1á2rak
+sá2r1al
+2s1á2ram
+sá2r1ál
+s1árbo
+sá2r1e
+2s1árfor
+2sáru
+s1á2ruk
+sá2rul
+s1á2rus
+2s1á2rú
+sá2sás
+sáskész1
+s1á2só
+2sáta
+s1átad
+s1átf
+2sáth
+2s1á2ti
+s1á2tí
+2sátl
+2s1átm
+2s1á2tü
+2sátv
+sá2ve
+sá2v1i2
+sb2
+s1bl
+s1br
+scar2
+s2ch
+1sche
+1sché
+sda2d1
+s1d2r
+s1dy
+1se
+sea2
+se2bat
+se2b1o
+se2bó
+se2cs1a
+2s1e2dén
+2s1e2dz
+se2ger
+2s1e2gér
+segész1
+se2gyed
+2s1egz
+se2her
+se2il2
+se1kra
+2selá
+se2lál
+2s1elnö
+2selo
+se2l1os
+2s1e2l®a
+2s1e2l®l
+2s1elto
+2s1e2lu
+2semel
+2semé
+2senc
+sen2d1®2r
+se2nyer
+se2nyir
+se2nyú
+se2ö
+2s1e2pi
+2s1e2po
+se2rej
+2s1e2r®
+se2sá
+s1esem
+se2sés
+ses2ti
+s1eszkö
+se2sz¶
+se2tik
+2seto
+se2tok
+se2t1ol
+2s1e2vés
+se2vo
+2s1e2v®
+1sé
+sé2g1a
+sé2g1á2
+sé2g1eg
+sége2l
+sé2g1ele
+ség1eli
+sé2gés
+ség1ész
+ség3g
+sé2gigé
+sé2g1í2
+sé2g1o2
+ség1s
+2s1éh.
+2s1éhs
+s1élm
+2sély
+sé2lyeg
+sé2mas
+sé2mu
+s1é2pí
+sé2pü
+2s1érc
+sé2rin
+s1értel
+2s1érz
+2s1étk
+2sétt
+2sétv
+2séve.
+sé2vei
+s1f2
+s1g2
+sha2k
+s2hi.
+s2hin
+1si
+si2bá
+si2dé
+s1i2d®
+sie2l
+si2em
+2s1ifj
+2siga
+s1i2gaz
+si2ge.
+2s1i2gé
+si1gl
+sig2ni
+s1i2nas
+2sinf
+si2ójá
+2sipa
+si2rod
+3sisak
+2sisk
+2s1isp
+sis3s
+si2s1ü2
+si2tal
+si2tá
+siú2
+s1izmo
+2sizo
+si2zol
+si2zom
+1sí
+sí2ka
+sí2ke
+sí2nü
+sí2r1e2
+sító1b
+2sív
+s1í2zes
+s1ízü
+sk2
+skás3s
+1s2kic
+ski2s1a
+s1kl
+sközé2
+skö2z1él
+s1kv
+1s2lag
+sla2te
+1s2lav
+sle2t1á2
+sme2g1á
+smerés1s
+1so
+2sob
+so2d1e
+sodé2
+so2dév
+so2d1os
+2sodú
+3sof
+so2kaj
+so2kar
+so2ke
+so2kir
+2s1okke
+2s1o2kos
+so2kó
+2sokta
+s1o2laj
+s1oldó
+s1oltó
+so2n1al
+so2n1e
+so2n1é
+son2t1ár
+son2t1e
+so2nye
+sor1áll
+so2r1e2
+2s1orrú
+3sort
+2sosz
+s1oszt
+2s1otth
+2s1o2x
+1só
+só2kál
+2s1ó2lo2
+2sórá
+só2rán
+sós3s
+1sö
+2s1öbl
+2söc
+s1öko
+s1önte
+2s1öntv
+sö2r1i2
+2sös
+s1ösv
+1s®
+s®e2
+s®é2
+s1®rm
+s1®rn
+s®2sok
+1sparh
+1s2páj
+spiros1
+spis3s
+sp2l
+spor2te
+spor2tö
+1s2pór
+3spra
+s1pro
+s1p2s
+srau2
+sren2d1®
+sré2z1
+1s2róf
+s1s2k
+ss2rá
+ss3s
+sst2
+s1s2ta
+ss2tí
+s2sz
+sszat2
+ssz1á2ru
+s3szele
+s3szél
+s3szép
+ssz1ér.
+ssz1ing
+s3szom
+s3szóko
+s3szól
+ssz1ös
+s3szöv
+ssz3s
+sszt2
+s3sztr
+s3sz¶
+1stafí
+s2t1alj
+s2t1alk
+1stansan
+s2t1a2rá
+1stájg
+s2t1eb
+1steinig
+1steinj
+1steinr
+1steint
+ste2ná
+ste2ra
+ste2u
+sté2ká
+s2t1é2li
+s2t1érc
+st1érm
+s2t1érz
+s2t1i2r
+1s2tíl
+st1íz
+sto1g2
+sto2ris
+st®2r
+st1®r.
+st1®rc
+st1®re
+st1®rö
+st1®rs
+s1trag
+st2rap
+st2róf
+1struktú
+st1új
+s2t1ür
+1su
+2s1ugr
+2s1ujj
+s1u2ra
+s1u2rá
+2surn
+su2tal
+sutas1s
+2sutá
+su2tó
+2suz
+1sú
+sú2cse
+s1újd
+2sújí
+s1újs
+2súr.
+sú2r1as
+s1úrb
+sú2t1á
+sú2té
+sú2ti
+sú2tü
+1sü
+2süd
+2s1ü2gy
+2süld
+sü2n®
+sü2re
+sü2rü
+2süs
+sü2sz
+3süt®
+2s1ü2z
+1s¶
+s¶s1
+1s2vin
+s2z
+1sza
+2szac
+sza2dá
+sz1a2dó
+3szaká
+3szakm
+3szaks
+2sz1alj
+2szalk
+sz1ass
+sza1tro
+1szá
+3szám
+szá2m1e
+szá2m1ér
+s3záp
+3szárn
+3szárú
+3száza
+3százn
+3százö
+szd2
+sz1dr
+1sze
+2szedz
+3szekr
+2szelemz
+2sz1elm
+3szemc
+3szemü
+3szem¶.
+3szend
+3szepl
+sze2rej
+3szerk
+3szers
+3szerv
+3szerz
+2szesem
+sze1tro
+sz1ezr
+1szé
+3széké
+szé2nö
+sz1érc
+2sz1érd
+2sz1éré
+sz1értá
+2szérté
+sz1érv
+széte2
+1szférá
+1szi
+2szic
+2sz1iga
+sz1igé
+3szigo
+3szimb
+2szira
+2szisk
+2szism
+sz1isza
+1szí
+3szív¶
+1szkóp.
+1szkópk
+1szkópo
+1szkópp
+1szo
+3szob
+3szof
+szo2l1ál
+3szorg
+2szors
+2szorv
+1szó
+1szö
+3szöge
+3szögk
+2szövv
+1sz®
+3sz®l
+szs2
+sz3sap
+sz3sas
+s3zsák
+sz3sár
+sz3sát
+sz3seg
+sz3sel
+s3zsem
+sz3ser
+sz3sé
+sz3sik
+sz3sir
+sz3so
+sz3só
+s3zsö
+sz3sp
+sz3st
+sz3sú
+sz3sü
+sz3sz
+sz2t1ap
+sz2t1á2rak
+sz2táro
+1sztárr
+sz2táto
+1sztorit
+1sztráj
+1szu
+2szu2b
+2szutó
+2szuz
+1szú
+2szúth
+2szúto
+2szúts
+1szü
+2szüg
+3szür
+2szüt
+1sz¶
+2sz¶e
+2sz¶s
+sz1z
+sz2zo
+sz3zs
+1ta
+2t1abr
+2t1a2cé
+t1a2dan
+ta2datá
+ta2dati
+ta2dato
+2t1a2dá
+t1adh
+t1adj
+t1adl
+t1adn
+ta2dod
+ta2dog
+ta2dok
+ta2dom
+ta2dot
+2tadó
+t1a2dó.
+t1a2dója
+t1adv
+tae2
+2tafí
+ta1fr
+ta2g1av
+ta2g1ál
+tag1g
+tai2g
+ta2iga
+ta2i2re
+ta2kad
+2t1akc
+2t1aktí
+ta2l1adn
+ta2lakb
+2talakí
+t1a2laku
+2t1alany
+ta2lapú
+ta2l1as
+ta2l1áll
+talás1s
+ta2l1em
+ta2l1e2s
+talé2k1e2
+ta2l1ur
+talú2
+ta2lúr
+ta2l1út
+ta2mid
+ta2nan
+ta2n1év
+2t1anny
+tan1osz
+ta2n1ó2r
+2tansan
+ta2nyag
+tao2
+ta2pa.
+ta2pán
+ta1ph
+2tapp
+ta1pré
+2taran
+2tarán
+ta2s1á2r
+ta2sel
+ta2sem
+ta1s2p
+2tassz
+tas3szá
+ta1sta
+tat1ato
+2tatiká
+2t1a2ty
+ta2utó
+2tazo
+ta2zon
+1tá
+2t1ábr
+2tádi
+2tág.
+tá2ga.
+tá2gat
+2t1á2gá
+2t1ágb
+tá2ge
+2t1ágg
+2tágn
+2t1á2go
+2tágr
+t1á2gun
+tá2gú
+2t1á2gy
+táje2
+tá2j1eg
+2tájg
+tá2lét
+2t1áll.
+2t1állj
+2t1álln
+2t1állo
+2t1állt
+tá2lyéb
+tá2lyér
+tá2mí
+tá2m1os
+tán1alm
+tánc1c
+tá2ne
+2tánv
+tá2nyú
+2tánz
+tá2pa
+tá2pe
+tá2pin
+tá2rab
+tá2raj
+tá2r1ál
+tá2r1e2
+tá2r1ér
+tá2rid
+tá2rin
+tá2rí
+tá2r1osz
+2táru.
+tá2ruh
+tár1ur
+2t1á2rus
+tá2rút
+tá2s1ár.
+tá2s1e
+tá2sin
+tá2só
+tás1ó2r
+tás3s
+tást2
+tás1tr
+tá2sü
+tá2sza
+2t1át1ad
+2t1átm
+2t1áts
+2t1átt
+2t1á2tü
+táva2
+tá2v1ad
+tá2vér
+tá2zsa
+tb2
+t1bl
+tbor2dó
+t1br
+tca1f2
+t1d2
+1te
+te2ad
+te2ai
+te2aka
+te2as
+te2av
+2t1e2dz
+te2g1á
+tegész1
+2t1egys
+tejá2
+te2j1ell
+te2jo
+te2j1u2
+te2k1ó2
+te2kú
+te2kür
+tela2
+te2l1ad
+2t1e2lál
+te2lár
+te2lát
+2t1elha
+2t1elhá
+2t1elhel
+2telix
+2te2l1os
+2t1eltá
+2t1elv.
+2t1elvi
+2t1elv¶
+te2m1ál
+t1embl
+2t1e2mel
+te2més
+te2m1os
+te2n1a2
+2t1endr
+te2nel
+te2ner
+ten3n
+te2n1u
+t1enyv
+te2oló
+te2rad
+te2ran
+te2r1ar
+te2r1ár
+2terd®
+ter1egy
+2t1e2rej
+te2r1est
+te2ror
+te2rö
+2t1e2r®
+te2rut
+te2s1a
+2tesemé
+2t1esél
+t1e2sés
+tesi2
+te2sin
+t1esni
+2t1e2s®
+tes2tal
+te2süv
+tesz1ál
+2t1eszm
+tes3zs
+2t1e2sz¶
+teto1s
+te2t1ot
+te2t1öl
+te1t2ro
+teu2tá
+2t1e2zer
+2tezr
+1té
+2t1ébr
+2tég.
+té2hes
+t1éhs
+té2kal
+té2k1a2n
+té2k1as
+té2k1au
+té2k1eg
+té2k1ell
+té2kép
+té2k1ir
+té2k1í2
+té2kö
+té2lá
+té2l1e2r
+té2l1os
+2téls
+té2lu
+2télü
+té2l¶
+té2lyem
+té2nin
+té2ny1el
+2t1é2pí
+té2ran
+térá2
+té2r1ár
+2térdek
+té2r1e2l
+té2rem
+tér1emb
+té2r1ész
+té2r1in
+té2ris
+2térm
+2t1érték
+té2sa
+té2s1á
+té2sel
+té2s1o
+té2szes
+tés3zsí
+té2tar
+té2tál
+2tév.
+2t1évb
+2t1é2vei
+té2ven
+2tévet
+2tévéb
+2tévét
+2tévh
+2t1é2vi
+2t1évr
+2t1é2vü
+té2zs
+t1f2l
+tg2
+tgár2
+t1gn
+t1gr
+tha2d1é
+t2hai
+t2hak
+tha2l1ás
+tha2me
+1t2hau
+1theid
+1theu
+1t2hod
+1t2hos.
+1thosb
+1thosi
+t2hov
+1thy
+1ti
+tia2t
+2t1i2dé
+2t1i2do
+2t1i2d®
+tien2
+tie2r
+2t1ifj
+ti1f2r
+2t1i2ge
+2t1ign
+ti1g2ra
+ti1grá
+ti1kh
+ti1k2le
+ti1k2ló
+ti1k2ri
+ti2lan
+ti2l1i2p
+t1illat
+2t1imr
+2t1ind
+ti2ne.
+ti2n1es
+tin2gi
+tin2g1o
+ti2nö
+ti2nú
+ti2par
+2t1i2rán
+ti2rén
+ti2rig
+ti2rod
+ti1sl
+2t1ism
+tis3s
+ti1str
+2tistv
+ti2sü
+2t1i2vó
+tize2n1
+ti2zom
+2t1i2zü
+1tí
+2t1íg
+2t1í2j
+t1í2rás
+2t1í2ró
+tí2vel
+tív1ele
+tí2v1ér
+tí2v¶
+tí2za
+tí2zó
+t1k2
+tká2nya
+tla2c3
+tla2g1e
+tlag1g
+tlas1s
+tme2g1é
+tna2k
+tno1g2
+1to
+2t1obj
+todé2
+to2dév
+to2k1ad
+to2k1ö
+2t1o2laj
+to2lim
+2tolvas
+to2lyag
+tome2
+to2mel
+to2men
+2toml
+t1omlá
+to2mó
+2tomú
+to2nalm
+to2nel
+to2nü
+to2nye
+to1p2h
+to2rab
+to2ral
+to2r1as
+to2r1e2l
+2torie
+to2r1isk
+toros1s
+to2ró
+tor1s2
+tosi2
+to2sin
+to2sze
+tosz2kó
+2t1oszl
+to1tra
+2t1ou
+to1y
+1tó
+2tódok
+2t1ó2év.
+2t1ó2rai
+tó2rás
+tó2s1e2
+tó1spe
+tó1spo
+tós3s
+tó1t2r
+2tóvod
+1tö
+2tödn
+2tödü
+tö2kör
+t1öltöz
+tö2n1í2
+tö2n®
+2t1öntu
+tö2s1i
+t1ötr
+2töv.
+2tövn
+2tövö
+1t®
+t®1dz2n
+t®e2
+t®i2rá
+2t®rb
+2t1®rl
+2t1®2rü
+2t1®rz
+t®1sté
+t®u2
+t®ü2
+t1p2
+tpen1
+1t2rafá
+1tranziti
+tra1ps
+tras2
+t2rádá
+trás1s
+1tréf
+1t2ril
+troa2
+tron3n
+trosz2
+tro1szk
+tró2zs
+1t2rup
+1t2rü
+t1ry
+tsa2va
+1t2sé.
+t1s2k
+t1s2p2
+t1s2t2
+1t2sub
+1tsy
+tsza2ké
+tsza2te
+tszá2ze
+t1sz2f
+t1sz2t
+tt1aszt
+t2t1a2u
+t2t1áll
+tt1egy
+t2t1elm
+tt1eml
+tté2g
+tt1ége
+tté2l
+tté2res
+t2t1id
+t2t1isk
+t2t1ors
+tt1ott
+tt1óra
+tt®2sa
+tt2rén
+tt¶z3s
+t2ty
+1tu
+tu2go
+tu2mál
+tu2min
+tu2se
+tu2sze
+tu2sz1é2
+tu2szi
+2t1u2tak
+tu2tas
+2t1utc
+tu2u
+1tú
+2t1úg
+2t1újd
+2t1újs
+tú2lan
+tú2lat
+tú2l1á2
+tú2l1é2
+tú2ló
+tú2lö
+tú2r1e
+tú2r1é
+tú2sze
+tú2to
+1tü
+2t1ü2g
+tü2len
+tü2l1e2s
+tü2lér
+tü2lo
+tü2lü
+tü2te
+tü2té
+tü2tö
+tü2t®
+2t1ü2v
+2t1üzl
+1t¶
+t¶2za
+t¶2z®r
+t¶2zs
+tva1k2
+tva2ra
+tváro2s1u
+tve2neg
+tve2ra
+twa2
+t2y
+1tya
+tyau2
+1tyá
+tyás3s
+1tye
+1tyé
+1tyi
+1tyí
+1tyo
+1tyó
+1työ
+1ty®
+1tyu
+1tyú
+1tyü
+1ty¶
+ty2vá
+tz3sc
+2u.
+u1a
+u2ad
+ua2e
+ua1yi
+u1á
+uá2ru
+uba2l
+u2b1ala
+ub1éle
+ub1ord
+uca2t1á
+2uch
+uc3ság
+u2cs1ál
+uda2tal
+uda2tál
+uda2te
+udás3s
+2ude
+udi2o
+2udiz
+2udoc
+2udod
+2udoé
+2udok
+2udot
+u1dy
+u1e
+ue2g
+uel1o
+ue2s
+ues3ze
+ue2v
+u1é
+ué2p
+2uf
+ug1alj
+ug1ág
+ugá2rá
+2uge
+ug1el
+u2gé.
+2ugg
+2ugh
+u2g1ir
+u2g1iv
+ug1ír
+ugosz2l
+ug1ut
+u2g1ü
+ugya2
+uh1ako
+u2h1ál
+uhás1s
+u1i
+u1í
+uk2kór
+uk1üt
+ula2tin
+u2l1áll
+ulás3s
+ul2cs1e2
+ul2cs1ó
+ul1ex
+u2l1ér
+ulit2
+uli1tz
+u2l1í2
+2ulk
+ul2l1os
+2ulo
+ul2t1ü2
+u2l1ü2
+2uly
+um1a2da
+u2m1a2l
+um1áll
+um1e2d
+ume2g1
+u2m1e2l
+um1ev
+u2m1érté
+umik2
+umi1kr
+um1ing
+um1i2on
+um1ivá
+um1ív
+u2m1ol
+u2m1osz
+u2m1®2
+umplis1
+um1pr
+u2nal
+u2n1ar
+2une
+un1g2l
+1unj
+u1o
+u1ó
+uó2l
+u1ö
+u1®2
+2upa
+upe2r1e2
+upe2rin
+upla1
+u1p2ró
+u2rad
+2uralgia
+2uralgik
+u2ralo
+1u2ram
+ura2m1i
+2uran
+ure2u
+2uréká
+ur2f1e
+2urí
+2urob
+uro2ka
+2urol
+2uróp
+u1ry
+us1abl
+u2s1a2d
+u2s1a2l
+u2s1ar
+u2s1as
+u2s1a2u
+u2s1a2z
+us1áru
+us1eb
+us1e2g
+us1e2l
+us1ez
+u2s1ék
+us1ép
+u2s1id
+us1int
+u2s1i2r
+u2s1is
+us1izo
+us1k
+us1old
+us1ó2r
+u2s1ö2
+us1p2
+2uss.
+2ussé
+2ussh
+2ussn
+2ussr
+2usst
+us1sy
+us3szem
+us3szí
+u2s1u2t
+u2s1ü2
+us3zav
+u2sz1ág
+u2sz1el
+u2sz1ö
+usz3s
+u2t1a2ny
+1u2taz
+után1n
+1utánz
+u2t1e2l1
+u1t2he
+u1t2hi
+ut2hu
+u2t1i2p
+utó1sz
+2utü1
+u1u
+uu2m1á
+uu2miz
+u1ú
+u1ü2
+u1¶
+2ux.
+u1y
+2uzal
+uzeo2
+2uzó
+uzz2
+2ú.
+ú1a
+úa2l
+úa2n
+ú1á2
+2úbar
+ú1b2r
+ú2cs1as
+ú2csárb
+úcse2
+úcs1em
+úcs1en
+úcs1er
+úcs1es
+ú2cs1é2
+ú2csid
+ú2csí
+úda2n
+ú2d1ez
+úd1ug
+ú1e2
+ú1é
+úg1ál
+úgás1s
+ú2gya2
+úgy1ag
+úgy1ah
+úgy1is
+úhús3
+ú1i
+úi2d
+2úis
+ú1í
+új1ang
+új1es
+új1ez
+új1é2
+1újf
+1ú2jí
+új1k2
+1újr
+új1ud
+ú2k1al
+ú2k1a2n
+ú2k1e2s
+2úkoro
+2úkó
+úk1ól
+ú2k1ü2
+2úl
+ú2l1ad.
+ú2l1ada
+ú2l1a2dá
+ú2l1a2dó
+ú2l1aj
+úla2n
+úl1ál
+úl1d2
+ú2l1e2d
+ú2l1eg
+ú2l1e2m
+ú2l1er®
+ú2l1e2s
+ú2l1ex
+úl1é2d
+úl1ég
+úl1é2r
+ú2l1in
+ú2l1is
+ú2l1iz
+ú2l1í2
+ú2l1ol
+úl1ó2r
+úl1öl
+úl1öm
+úl2tag
+ú2lyar
+ú2ly1e2
+ú2lyér
+2úm
+únyi2
+úny1ir
+ú2ny1ö2
+ú1o
+ú1ó
+ú1ö
+ú1®2
+úpos3s
+ú2r1an
+ú2r1att
+ú2r1a2u
+ú2r1áll
+ú2r1á2ri
+úr1e2g
+úr1e2l
+úr1es
+1ú2ré.
+úr1ék
+úr1é2l
+ú2rig
+ú2rin
+úr1int
+ú2r1ot
+ú2r1ö
+úrs2
+úr1sm
+2úru
+úsa2
+ú2s1ad
+ús1e2l1
+úsele2
+ús1e2v
+ús1ex
+úsé2
+ú2s1ét
+ú2s1il
+ú2s1i2p
+ú2s1old
+ú2s1®
+ús3sze
+ús3szí
+2úsze
+úsz1ej
+úsz1es
+úsz1ev
+úsz1ez
+úsz1év
+úsz1öl
+út1a2d
+út1á2g
+út1á2s
+út1át
+1útd
+út1ef
+út1e2g
+út1ép
+út1ér
+útie2
+úti1p
+út1irá
+út1old
+1úto2n1
+út1®
+2ú1u2
+ú1ú
+ú1ü2
+ú1¶
+úz3sz
+2ü.
+ü1a
+ü1á
+ü2dí
+üd1íz
+1ü2dü
+üd2v1i2
+üd2vo
+ü1e2
+ü1é
+ü2g1el
+ügy1in
+ügy1o
+ü2gy1®2
+ü2h1a
+ü1i
+ü1í
+ük1ac
+üka2n
+üka2p
+ü1k2hé
+ü1k2hi
+ük2ker
+ük1u2
+ü2l1a2d
+ü2l1ag
+ül1a2l
+ü2l1á2
+ül1eng
+1ü2lep
+ül1esh
+ül1e2s®
+üle2t1a
+üle2tá
+üle2teg
+üle2t1e2l
+ü2l1ég
+ü2l1ép
+ül1ér.
+ül1érz
+ü2l1í2
+ül1ol
+ül1or
+ül1ölt
+ü2l1ö2v
+ül®e2
+ül®i2r
+ül2tad
+ültá2
+ül2táp
+ül2t1ár
+ül2tát
+1ültes
+ü2l1u2
+ü2l1ú2
+ü2l1ü2l
+ül1üt
+üm1il
+ün1id
+ün1kri
+ü2n1ó2
+ü1o
+ü1ó
+ü1ö
+ü1®
+ü1p2h
+1ü2reg
+üreg1g
+1ü2rí
+ür2ja
+ürke1
+ü2röm
+üss1eg
+üs2t1a
+üs2t1á
+üs2t1e2
+üsté2
+üs2t1ére
+üs2t1il
+üs2t1í2
+üs2t1o
+üs2t1ó2
+ü2teg
+ütés3s
+üt2t1á
+üt2tem
+üt2t1é2
+ü1u
+ü1ú
+ü1ü
+ü1¶
+üveg1g
+üze2ma
+üze2mo
+1ü2zene
+2¶.
+¶1a2
+¶1á2
+¶2cs1á
+¶cs1ip
+¶2d1e
+¶1e
+¶e2g
+¶e2p
+¶e2v
+¶1é
+¶é2l
+¶é2p
+¶fa2je
+¶1i
+¶i2p
+¶1í2
+¶ka2g
+¶1k2ro
+¶l®ú2
+¶2n1el
+¶2n1e2s
+¶n3n
+¶1o2
+¶1ó
+¶1ö
+¶1®
+¶ra2
+¶r1an
+¶r1at
+¶r1ál
+¶r1es
+¶r1i2p
+¶2r1ol
+¶r1öl
+¶r1p2
+¶2r1u2
+¶r1üg
+¶1s2ká
+¶s3s
+¶s2to
+¶2s1u
+¶1t2r
+¶1u2
+¶1ú
+¶1ü2
+¶1¶
+¶ve2r
+¶ves1s
+¶za2
+¶z1ak
+¶z1an
+¶2z1á
+¶2z1el
+¶2z1e2r
+¶2z1e2s
+¶z1ev
+¶z1érm
+¶2z1im
+¶2z1is
+¶2z1o2
+¶2z1ör
+¶z1ö2v
+¶z1®r.
+¶z1®rs
+¶z1®rz
+¶z1p2
+¶z3su
+1va
+vaa2
+va2d1ál
+va2d1ár
+va2d1e2
+vadi2
+va2did
+va2d1ol
+v1a2dón
+va2dö
+va2d1®
+va2d3z
+va2ge
+vaja2
+va2j1ad
+va2j1e
+va2jö
+va2k1e2s
+va2n1eg
+van1es
+va2név
+2vang
+van3n
+va2nol
+va2n1ó2
+va2nö
+vao2
+va2r1al
+va2rany
+va2rar
+va2r1ir
+2varú
+va2s1aj
+va2s1e2
+va2sék
+va2sid
+va2s1in
+va2sö
+vas3sze
+vas3szé
+vast2
+vas1tr
+va2s1ü
+vasz3s
+va2t1á2r
+va2t1é
+vat1int
+vatt2
+1vá
+váb2bal
+váb2be
+vá2csi
+vá2csü
+vá2dal
+vádi2
+vá2dir
+v1állap
+v1állás
+2vállo
+2vállv
+vá2ma
+vá2m1á
+vá2m1e
+vá2mi
+vá2m1u2
+vá2n1a2r
+vá2n1ár
+vá2ne
+vá2nis
+vá2nú
+vá2ny1as
+vá2ny1e
+vány1ér
+vá2ral
+vá2re
+2várf
+vá2ris
+vá2r1oml
+vá2rö
+várs2
+vár1sp
+vá2ruh
+vá2rus
+vá2r1ú2
+vá2szi
+v1átm
+vá2t1ors
+2v1á2tü
+vá2zal
+vá2z1e2
+vá2ziz
+váz3sz
+vd2
+v1dr
+1ve
+ve2g1a2
+ve2g1á
+ve2g1ele
+veg1ért
+ve2g1i
+ve2gí
+ve2g1ö
+ve2gya
+ve2gy1e2lem
+ve2gyemb
+ve2gyér
+ve2gyip
+ve2il
+2v1elég
+2v1elhá
+2v1elm
+ve2l1o
+2v1elvá
+2v1e2mel
+2v1eml
+vene2g
+ve2n1egy
+ve2n1emb
+ve2n1esz
+ve2n1e2v
+ve2n1év
+ven3n
+ve2nó
+ve2nö
+ve1p2
+vera2
+ve2r1á
+ve2r1eng
+ve2r1esz
+ve2r1ip
+ve2r1ol
+ve2ror
+ve2ró
+2ver®sít®.
+2ver®sít®r
+vers3s
+ver2s3ze
+ve2sa
+ve2ser
+ve2sú
+ve2süv
+2v1eszm
+ve2s3zö
+ve2t1a2
+ve2tár
+1vé
+vé2der
+vé2do
+vé2dz
+vé2ga
+vé2gá
+vé2g1eg
+vé2g1ele
+vé2g1er
+vé2geté
+végig1
+vé2gin
+vé2g1í2
+vé2gó
+vé2la
+vé2l1á2
+vé2l1e2r
+vé2l1o
+vé2lu
+vé2nas
+vé2ny1e2l
+vé1p2
+vé2pí
+vé2r1á2
+vé2rel
+vé2ron
+2vérté
+vé2rú
+vé2rül
+vé2sz1á2
+vé2szeg
+vé2sz1o
+vé2tí
+2v1év.
+v1f2
+vgé2
+vhez1
+1vi
+2vick
+vi2cs1a
+vi2csö
+2v1i2d®
+vi2dz
+2v1inh
+vin2t1es
+vi2pa
+2v1i2rat.
+2v1i2rata
+2v1i2ratá
+2v1i2rath
+2virati
+2v1iratk
+2v1i2ratok
+2v1i2ratot
+2viratoz.
+2viratozi
+2v1i2rats
+2v1i2ratv
+2v1ism
+vissz1e2
+2v1izg
+1ví
+2v1í2rás.
+2vírász.
+2vírászat.
+2v1írda
+2vírdáb
+2v1í2ró
+ví2z1a2
+ví2zá
+víze2
+ví2z1el
+ví2zer
+ví2z1es
+ví2z1o
+ví2zó
+ví2zs
+2víz¶
+v1k2
+1vo
+vo2lál
+vo2l1e2
+vo2r1a
+vo2se
+vos3s
+1vó
+vóé2
+v1ó2rá
+vó1s2p
+vó2s3zen
+vóví2
+1vö
+vöt2
+1v®
+v®u2
+v1p2
+vso2rol
+vsza2ké
+v1t2
+1vu
+2v1u2t
+1vú
+vú2sz
+1vü
+2vüg
+vü2gy
+vü2les
+v1ünn
+2v1ü2t
+2v1üz
+1v¶
+1vy
+1wa
+wa2e
+wa2i
+wa2le
+wa1sh
+wat2t1á2
+1wá
+1we
+we2b1o
+we2i
+we2ö
+wesze1
+1wé
+w2h
+whi2
+1wi
+wi2c
+wi2e
+wi2r
+1wí
+1wo2
+1wó
+1wö
+1w®
+1wu
+1wú
+1wü
+1w¶
+1xa
+2x1a2l
+x1ar
+1xá
+x1b2
+1xe
+2xe2g
+1xé
+1xi
+2xidj
+2xido
+2xidt
+2xio
+xi2ol
+xi2on
+1xí
+x1ív
+1xo
+xo2d
+xo2g
+1xó
+1xö
+1x®
+xpor2t1á2r
+1xu
+xusá2
+xu2s1é
+xus3s
+1xú
+2x1ü2
+1x¶
+x2x
+yaá2
+y1abl
+ya2cél
+y1a2dag
+y1a2dón
+yae2
+ya2gar
+ya2g1ál
+ya2gá2r
+yag1ár.
+ya2ged
+ya2g1el
+ya2g1en
+yag3g
+ya2gig
+ya2gor
+yag1osz
+y1agy.
+ya2gyak
+y1agyk
+y1a2gyú
+y1ajt
+ya2kala
+yaké2r
+yak1ére
+ya2kiz
+y1a2lak.
+ya2l1ék.
+y1alm
+ya2m1al
+ya2m1ár.
+ya2m1árb
+ya2m1árh
+ya2m1árn
+ya2mel
+ya2m1is
+yan1ar
+yan1at
+ya2n1e
+ya2n1i
+yan1o2d
+ya2n®
+yan1®k
+yan1®t
+ya2nyáé
+ya2nyái
+ya2nyák
+ya2nyám
+ya2nyán
+ya2nyát
+y1anyj
+y1a2nyó
+ya2pa.
+ya2pas
+y1a2páb
+y1a2pák
+y1a2pám
+y1a2pán
+y1a2pár
+y1a2pás
+y1a2pát
+y1a2páv
+y1a2pi
+yapo2tá
+y1a2pó
+y1app
+ya1p2r
+y1a2pu
+y1a2rány
+y1arcn
+y1arco
+y1arcr
+1yard.
+1yardn
+ya2r1el
+y1argu
+ya2s1ol
+y1atád
+yat2te
+y1a2ty
+ya2utó
+y1a2zon
+y1ábr
+yá2du
+y1á2g
+y1álar
+yálas3
+y1áld
+yáma2
+yá2man
+yá2map
+yá2m1as
+yá2mí
+yá2m1os
+yá2mu
+y1á2po
+yá2rad
+y1á2ram
+y1árbo
+yá2r1e
+yá2r1i2p
+yá2rö
+y1árp
+y1árud
+y1á2ruh
+yá2rul
+y1á2rus
+yár1ut
+yá2sar
+yási2
+yá2sir
+y1á2só
+yá2sze
+yás3zen
+yá2szé
+yá2szor
+yá2szü
+y1á2t1a
+y1á2t1e2
+y1áth
+y1átk
+y1átn
+yátne2
+y1áts
+y1á2tü
+y1b2
+ybee2
+ybor2d
+y1d2r
+ye2d1a
+ye2dá
+ye2d1ó2
+ye2d1u
+ye2g1a2
+ye2gá
+ye2g1el
+yegész1
+yeg1g
+y1egy.
+ye2gyen
+ye2gyes
+y1egyl
+y1e2l1a2
+y1elc
+y1e2lemz
+yeletes1
+y1elha
+ye2l1o
+y1e2l®g
+y1elr
+y1eltá
+ye2man
+ye2mas
+ye2mat
+y1ember
+ye2mel
+ye2m1er
+ye2m1es
+ye2na
+ye2n1á2
+ye2ner
+yenes1s
+ye2n1é2l
+ye2ni
+ye2n1o
+y1e2po
+yereg1g
+y1e2rej
+y1e2r®r
+ye2r®v
+yers1s
+yesa2
+ye2s1al
+ye2s1á
+yes1egy
+yesi2
+ye2s1í2r
+ye2sú
+y1eszm
+ye2s3zö
+yes3zs
+yesz2t1ék
+ye2sz¶
+ye2t1ér
+y1e2ve
+y1e2vé
+y1e2v®
+y1e2zer
+yezernyolc1
+y1é2ber
+yé2g
+y1égb
+y1ége
+y1éhes
+yé2let
+y1élm
+yé2pí
+y1é2pü
+yé2rak
+yér1ára
+y1érde
+yé2r1el
+yé2ri
+yé2rol
+y1érték
+y1érze
+y1érzé
+yé2sza
+yé2szá
+y1étk
+y1é2t¶
+y1év.
+y1évb
+y1é2vek
+yé2ven
+y1é2ves
+y1é2vet
+y1é2vi
+y1évn
+y1évr
+y1évv
+y1f2l
+y1f2r
+yha2d
+y2h1adó
+y1icc
+y1i2de
+y1i2do
+y1i2d®
+y1ifj
+y1i2gaz
+yi1k2ri
+y1i2má
+y1imp
+yi2nas
+y1ind
+y1inf
+y1inge
+y1i2par
+yi2ram
+y1i2rat.
+y1i2rán
+y1i2rás
+y1i2rod
+y1irt
+y1ish
+y1isk
+y1ism
+y1isn
+yi2tal
+y1i2vó
+yí2le
+yí2róé
+yí2rói
+yí2rón
+yí2rór
+yí2rót
+y1í2v
+yki2s1a
+y1k2l
+yközé2
+ykö2z1él
+yk1uj
+yme2g
+ymeg1á
+yo2gi
+yoki2
+y1o2k1ir
+y1o2kos
+y1o2koz
+y1oktá
+yo2laj
+y1oldá
+yo2m1e
+yo2m1ol
+yo2n1e
+yoné2
+yo2néh
+yo2nis
+yo2niz
+yo2n1í
+yon3n
+yon1s
+yo2nü
+y1o2pe
+y1orm
+y1orom
+y1orrú
+yo2se
+yos3s
+yo2sú
+y1oszt
+yó2gya
+yó2gy1e2
+yó2gyé
+yó2gyi
+y1ó2lo
+yó2rai
+yó2ráj
+yó2rák
+yó2rán
+yó2rás
+yó2rát
+yó2riá
+yós3s
+yó2s1ü
+y1öb
+yö2kés
+y1önt
+yö2r1i
+y1ö2töd
+y1ötv
+yö2zön
+y®e2
+y1®rl
+y1®rr
+y1®rs
+y1®rz
+ypen3
+yp2re
+yp2ré
+yp2ro
+yp2ró
+y1p2s
+yren2d1®
+ysé2gel
+y1s2k
+y1s2p
+yst2
+y1stí
+y1str
+y1sz2l
+y1sz2r
+y1sz2t
+y2t1ac
+y1t2h
+y1t2r
+yu2g1á
+yu2ge
+y1ugr
+yu2gy
+y1ujj
+yu2l1e
+yu2n
+y1uno
+y1u2ra
+y1u2rá
+yu2sé
+y1u2szo
+y1utc
+y1újs
+yú2kó
+yúl1l
+yú1p2
+y1ú2ri
+yú2szá
+y1útj
+yú2ton
+y1útró
+y1útt
+y1üd
+y1ü2gy
+y1üld
+yü2t
+y1üte
+y1üté
+yü2ze
+yü2zé
+y1üzl
+y1¶2z®
+yvai2
+yva2j
+yv1ajá
+yv1ank
+yv1a2ra
+yv1állo
+yv1állv
+yv1á2rak
+y2v1áru
+yve2g
+yvegy1
+yv1érté
+y2v1in
+y2v1í2r
+y2vu
+y2v1ú
+yv1üg
+yze2t1a2
+yze2tele
+yze2t1o
+1za
+2z1a2cé
+z1a2dag
+za2d1ár
+zade2
+za2del
+za2dí
+z1a2dog
+za2dóh
+za2dói
+za2dót
+zae2
+za2g1e
+zai2g
+za2jan
+za2j1árt
+z1a2kara
+z1a2karó
+za2k1av
+za2kem
+za2k1i2r
+za2k1ír
+za2k1osz
+zalé2ké
+2zanya
+zao2
+z1a2pó.
+z1a2pók
+z1a2ráb
+za2rány
+2zarc
+za2sem
+za1s2l
+zat1akt
+za2t1a2n
+zata2r
+zat1ará
+za2tem
+za2t1in
+za2t1ív
+2zaty
+z1a2tya
+za2tyá
+zau2t
+z1az.
+z1azh
+za2zo
+1zá
+z1ábr
+záé2
+zá2g1al
+zá2gat
+zá2g1ál
+zá2ge
+zág1g
+zá2g1ú
+2z1á2gy
+zá2kin
+zále2
+zá2l1eg
+zá2l1em
+zá2lér
+2záll
+zá2los
+zál1t2r
+zá2m1a2d
+zá2map
+zá2mar
+zá2mis
+zá2nú
+z1á2rada
+z1á2ram
+zá2r1is
+zá2r1osz
+zá2r1ó2ra
+zá2rö
+zár1s2
+zá2sin
+záskész1
+2z1á2só
+záte2r
+z1átv
+zázé2
+zá2zév
+zá2z1ol
+záz3sz
+z1b2
+zbee2
+zdas2
+z2d1ass
+zd2ró
+zd1ur
+1ze
+2zea2
+zeá2z
+2z1eb.
+ze2bei
+ze2bek
+z1e2dz
+zee2
+zegész1
+ze2gol
+2zegy
+ze2gyes
+z1egyn
+z1egys
+zei2g
+zei2s
+ze2k1e2g
+ze2kép
+ze2lál
+z1elej
+ze2l1eml
+z1e2lemz
+z1elhá
+2zellen
+z1elnö
+ze2l1os
+ze2l®g
+z1elvo
+ze2mad
+ze2már
+zeme2iké
+ze2m1ell
+2zemés
+zem1id
+ze2m1iz
+zenci2a
+zene2tel
+zen2tan
+zen2t1est
+zen2tí
+zeo2m
+zeö2
+ze2per
+ze1ph
+ze1p2r
+ze2rad
+ze2raj
+ze2ran
+ze2r1ar
+ze2r1as
+zer1ára
+ze2red®
+zere2g
+zer1egg
+ze2r1egy
+zer1ejt
+2zerejü
+ze2r1él
+ze2r1ill
+ze2r1ip
+ze2ris
+2zerj
+ze2ror
+2z1e2r®
+zer1s
+ze2r1u2
+ze2set
+ze2sit
+ze2s®
+2z1esté
+zes1ut
+ze2süv
+zesz1ár.
+ze2széle
+ze2szip
+2zeszk
+zes3zs
+ze2t1any
+ze2tál
+ze2tát
+ze2t1ell
+ze2telm
+ze2térte
+ze2tí
+zetme2
+zetmeg1
+ze2tok
+ze2t1ó2r
+ze2ty
+z1e2ur
+2zev
+ze2vez
+z1e2vol
+ze2v®
+ze2zer
+2z1ezre.
+2zezred
+2zezrei.
+2zezreir
+2zezreit
+2zezreiv
+2zezrek
+2zezrel
+2zezres
+2zezret
+1zé
+zé2dal
+zé2d1elem
+zé2d1és
+zé2dz
+2zég
+z1é2ge
+zé2hes
+2z1éhs
+z1éjs
+zé2kin
+zé2lak
+zé2l1á2
+2zé2lel
+zél1elt
+zé2lene
+zé2l1e2r
+2zélet.
+2z1é2letb
+2z1é2lete
+2z1é2leté
+2z1é2leti
+2z1é2letr
+zé2lir
+zé2lo
+zé2lu
+zéndio2
+zéne2
+zé2neg
+zé2n1el
+zé2n1is
+zé2nu
+zé2p1a2
+zé2pá
+zép1emb
+zé2p1ér
+zé2pir
+zé2pis
+2zépí
+zé2p1o
+zé2pu
+2zépül
+zé2r1á2
+zé2reg
+zér1emb
+zé2rés
+zé2rig
+zé2r1o
+zé2r®t
+2z1érté
+2z1érth
+2z1érz
+zé2sa
+zé2sel
+zé2sí
+zés3s
+zé2tap
+zé2t1á2
+zé2te2l
+zét1ele
+zét1ese
+zét1esn
+zét1est
+zé2ti
+2zétk
+zé2t1o
+zé2tö
+zé2tu
+zé2tú
+zé2t1ü
+zé2t¶
+z1év.
+zé2vek
+2z1é2ven
+2z1é2ves
+2z1é2vi
+2z1évn
+zf2
+zfe2l1em
+zfe2li
+z2féri
+z1fr
+z1g2
+zgás3s
+zgá2sz
+zgés3s
+zgó1s2
+zhad1
+zharminc1
+1zi
+zi2ac
+2zicc
+zi1ch
+z1i2dé
+z1i2d®
+zie2l
+zie2m
+zigaz1
+2zigazg
+zi2gáz
+2z1i2gén
+zi1g2r
+zikus1s
+z1imma
+zi2n1á2r
+z1indu
+zi2nol
+zi2nór
+zin2t1el
+zin2ter
+zin2to
+zi2ol
+zi2óc
+zi2óp
+z1i2par
+zi1p2l
+zi1p2r
+z1i2rat
+2z1i2rá
+zi2rod
+zi2sal
+zi2seg
+zise2l
+zis1ele
+z1isko
+2z1ism
+zi2sor
+zis3szi
+2z1iste
+zi2tut
+ziú2
+2z1i2vó
+2zizm
+zi2zom
+2zizz
+1zí
+zí2n1ál
+zí2nár
+zí2n1o
+zí2nu
+z1í2ró
+zítés3s
+zí2val
+zí2viz
+2z1í2z
+z1kh
+zkiá2
+zkie2
+z2k1ing
+zk2le
+z1k2lin
+z1k2lu
+zkon2tár
+z2kopi
+z2kópiá
+z2kópr
+z1k2ra
+z1k2ru
+z1k2val
+zle2ta
+zle2tá
+zle2t1emb
+zle2ter
+zle2t1o
+z2log
+zme2g1á
+z2nob
+1zo
+zoki2
+zok1ir
+zo2koz
+2z1o2laj
+2z1oll
+zo2mag
+2zomh
+2zomv
+2zomz
+zo2naj
+zo2n1áll
+zo2ner
+zoné2
+zo2név
+zon2tel
+zon2tol
+zo2nyan
+zo2nye
+zo1phi
+zo2ran
+zo2rar
+zo2r1as
+2zorg
+z1orke
+z1orr.
+z1orrú
+z1orvo
+2z1o2x
+1zó
+zóá2
+zó1dre
+zó1p2
+z1ó2rai
+z1ó2ras
+zó2ta.
+zó2t1ért
+zó1t2h
+zó1t2r
+zózat1át
+1zö
+zög1ért
+zö2g1öl
+3zölde
+zöl2din
+z1ölel
+zö2les
+2zöne
+2zönö
+2z1ötv
+2zöv
+2z1ö2z
+1z®
+z®1dr
+z®e2r
+z®ren2
+z®rend1
+z®2ro
+2z®rs
+2z®rz
+z®u2
+zpen3
+z1p2l
+z1p2ro
+z1p2ró
+zre2d3z
+zren2d1®
+z2s
+1zsa
+2zsaj
+zs1a2la
+2zs1amu
+z3sapk
+1zsá
+2zság
+z3ság.
+z3sága
+z3ságá
+z3ságt
+zsá2rá
+1zse
+z3sej
+1zsé
+2z3ség
+2zs1ép
+zs1érv
+1zsi
+2zsir
+zs1iro
+2zs1ita
+1zsí
+z3sík
+2z3síp
+1zso
+2zsor
+zs1orv
+1zsó
+1zsö
+1zs®
+zsp2
+zs3s
+zst2
+z3s2tí
+1zsu
+1zsú
+z3súl
+1zsü
+zs1üg
+zs1ü2té
+1zs¶
+zsz2
+z3sza
+z3szá
+z3szeg
+z3szek
+z3szem
+zs3zen
+z3szere
+z3szé
+z3szí
+z3szo
+z3szó
+z3sz®
+zszt2
+z3szu
+z3szü
+z3sz¶
+zt1a2dó
+zt1apá
+z2t1arc
+zt1assz
+z2táld
+zt1á2ram
+z2tátj
+z2tátu
+ztá2v1i2
+z2t1elo
+z2t1emb
+z2tep
+z2tered
+z2tesem
+z2t1é2g
+z2t1é2le
+z2t1érté
+zt2hen
+ztia2
+z2t1id
+zti2g
+z2t1igé
+z2t1i2p
+z2t1irá
+z2t1iré
+z2t1í2r
+zto1g2
+zto2n1
+zto2ris
+z2torit
+zto1szk
+ztó1dr
+zt2ráj
+z1t2ré
+z2túj
+z2t1út
+ztül1l
+z2t1üt
+1zu
+zu2b1a
+3zubb
+zu2b1i
+zu1c2
+zu2g1ár
+zu2gí
+z1ugr
+zu2gu
+2z1uj
+zule2
+zu2l1esi
+z1urn
+zu2só
+2zut
+z1u2ta
+z1u2tá
+z1u2tó
+3zuz
+1zú
+2zúj
+z1ú2jo
+z1újs
+2zút
+z1úth
+z1útj
+z1ú2to
+z1úts
+3zúz
+1zü
+2z1üd
+2züg
+zü2ni
+zürkés1
+2züs
+2züt
+z1ü2té
+z1ü2t®
+z1ü2v
+2züz
+zü2zem
+z1üzl
+1z¶
+z¶2csi
+z¶2k1a
+z¶2za
+z¶2zér
+z1¶2z®
+zz1áll
+z2zs2
+z3zsí
+zz3st
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-is.hyp b/Master/texmf-dist/tex/context/patterns/lang-is.hyp
new file mode 100644
index 00000000000..48c26abf16d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-is.hyp
@@ -0,0 +1,30 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: ishyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='is'>
+% <sourcefile>dehyphn.tex</sourcefile>
+% <title>Plain TeX hyphenation patterns for the Icelandic language</title>
+% <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+% <copyright>
+% <year>1987</year>
+% <owner>Jorgen Pind</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-is.pat b/Master/texmf-dist/tex/context/patterns/lang-is.pat
new file mode 100644
index 00000000000..8ba475d2604
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-is.pat
@@ -0,0 +1,4218 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: ishyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='is'>
+% <sourcefile>dehyphn.tex</sourcefile>
+% <title>Plain TeX hyphenation patterns for the Icelandic language</title>
+% <remarks>[NOT TO BE CHANGED IN ANY WAY!]</remarks>
+% <copyright>
+% <year>1987</year>
+% <owner>Jorgen Pind</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a[eth]3
+.a[eth]a4
+.a[eth]k2
+.a[eth]l4a
+.af3n
+.af3re
+.afr3[iacute]
+.af1s4
+.agn5[uacute]
+.al3e
+.al4l
+.am4s
+.an3k
+.ann4e
+.ar2
+.ar3a4b5
+.arth5
+.asp3
+.aum5a
+.[aacute]m4
+.[aacute]n4a
+.ba4
+.da4
+.dam5a
+.dav3
+.dr4
+.ds4
+.du4
+.dust5
+.ed5ik
+.eftir5
+.eigin5g
+.eink4
+.ekt4
+.er4m
+.eyf2
+.fa4
+.fi4
+.fj[aacute]r3
+.fl4
+.fla4
+.fr4
+.fr[aacute]1
+.ga2
+.gar4
+.gas5l
+.gd4
+.gem5
+.gja2
+.gl2
+.gr4
+.gu4
+.her5sk
+.il4
+.ingj5
+.is4m
+.[iacute]s1l
+.ja2
+.jar4
+.ka4
+.kal5e
+.kam5e
+.kap[iacute]3
+.kart5
+.kast3
+.kn4
+.kr4
+.kur4
+.la4
+.lag5e
+.leik5sv
+.l[iacute]b5
+.lu4
+.ma2
+.maj5
+.mak5r
+.mi4
+.mj4
+.mu4
+.mynst4
+.na2
+.n[iacute]5f
+.n[yacute]5f
+.ol4[iacute]u.
+.[oacute]a4
+.[oacute][eth]5al
+.[oacute]f4
+.[oacute]g2
+.[oacute]k4
+.[oacute]m4i
+.[oacute]s2
+.pa4
+.pl4
+.ra2
+.ram4
+.r[iacute]4
+.r[oacute][eth]4
+.r[uacute]m3
+.saman5
+.sk4
+.ski4
+.skj4
+.skr4
+.sl2
+.sm4
+.sm[aacute]3l
+.sn4
+.snar5a
+.sp4
+.spr4
+.st4
+.sta2
+.ta4
+.ti2
+.til3
+.t[iacute]5f
+.tr4
+.tu2
+.tv[iacute]1
+.ung3l
+.unn5usta
+.[uacute]r1
+.[uacute]t1
+.[uacute]t5s
+.vegg5s
+.vist3
+.yfir3
+.[aeligature]vi3s
+.[odiaeresis]fl3
+.[odiaeresis]gr5
+.[odiaeresis]r3s
+.[odiaeresis]t3u
+2a3a4
+a4ab
+a4ad
+2a1[aacute]2
+2a1b
+ab4a
+3ab[iacute]s
+a5by
+ab[aeligature]k4l
+4ac
+2a1d4
+a5d[oacute]
+a4du
+1a[eth]
+4a[eth]a[eth]
+a[eth]3al
+a[eth]3ar
+2a[eth]fa
+4a[eth]f[odiaeresis]
+a[eth]3g
+a[eth]3i
+2a[eth]l
+a[eth]4li
+4a[eth]2m
+2a[eth]sh
+3a[eth]u.
+2a[eth]v
+2a1e
+a5ei
+a4es
+2af
+af3ald
+af3arn
+a3f[aacute]
+af4fr
+af3g
+a1fj
+a3fl[oacute]
+a1flu
+af5ork
+a1fr
+af3r[eacute]
+afr4u
+a5fr[aeligature]
+4afsd
+af1sk
+4afsso
+af2u
+a1ful
+a1fun
+3afur[eth]
+2ag
+a3gau
+ag5[aacute]l
+ag5is
+a5gj
+agn4ara
+ag2ne
+ag5ot
+a1gr
+ag4ra
+ags4i[eth]
+ag4sp
+ag4stj
+ag4ul
+ag3[aeligature][eth]
+4a1h
+4ai
+a3i[eth]
+a4in
+a[iacute]4h
+2aj
+a3j[odiaeresis]
+2ak
+akaup4s
+a5k[aacute]
+a1ke
+a5kinnin
+a5kistu
+a1kj
+ak5rei
+aks4l
+4akss
+ak3u
+a3kv
+a5ky
+a5k[yacute]
+a3k[odiaeresis]
+2al
+a1lag
+4aland
+a5landi[eth]
+a5landinu
+alas4
+al[aacute]4
+a4lem
+al3er
+al1f
+al1g
+5alge
+3alh
+alis4
+al4[iacute]n
+al3kj
+alk5s
+al3k2u
+al4l[iacute]
+all2s
+allst4
+al4l[yacute]
+4alma[eth]
+al5mann
+al5m2i
+a3log
+a5lok
+al5op
+a5l[oacute][eth]
+al4s[aeligature]t
+al5up
+al5[uacute]
+al3v4
+a3ly
+a1l[aeligature]
+a1l[odiaeresis]
+2am
+am3ang
+a3mann
+am3ari
+am3ars
+am3a4s
+am3dr
+a3m[iacute]
+am3k
+am2m
+amm4is
+a1m[oacute]
+am3se
+ams2i
+am1t
+1an
+3an.
+3ana.
+an3ada
+4anag
+2anal
+4anau
+2an[aacute]
+4and.
+and1e
+4an4d[iacute]
+andr4
+4and[odiaeresis]
+4ane
+an5ei
+2ang
+an4ga
+ang1d
+an4gj
+ang5spi
+an2g3[odiaeresis]
+4anib
+4ani[eth]
+an5[iacute]n
+2ank
+ank5l
+ank3v
+3anm
+ann5d
+4annf
+4annh
+ann1k
+4annl
+4anns
+annsk4
+4an4o
+anst4
+an3sti
+an3t[iacute]
+3anu
+4an[uacute]
+4an[yacute]
+4an[aeligature]
+4an[odiaeresis]
+2a3o
+2a3[oacute]
+2ap
+ap3al
+a3per
+a3pil
+a3po
+a5pre
+ap3te
+a5p4un
+a5p[odiaeresis]r
+1ar
+3ar.
+ar3afu
+ara5kr
+ar3ang
+4arani
+ar4arp
+ar2as
+ar5ast.
+ar3au
+2ar[aacute]4
+4ar[aacute][eth]
+5ar3[aacute]k
+3ar3[aacute]r
+3ar1[aacute]s
+ar1[aacute]t
+3ard2
+4ard[iacute]
+4ar[eth].
+ar[eth]ar5[aacute]
+4ar[eth]i
+4ar[eth]s
+3ar[eth]u.
+2are
+3ar1ef
+4aref.
+5areig
+5arein
+a3rek
+ar3el
+ar3en
+ar5er
+a3ret
+4a1r[eacute]
+2arf
+3arfe
+3arf[eacute]
+arfs3k
+ar1fu
+ar3gj
+ar4gr[aeligature]
+args4
+arg3sl
+4ar5i[eth]
+4arif
+ar3in
+ar4ind
+ar5ist.
+4a5rit
+4a1r[iacute]
+ar3j4
+4ark.
+ark4is
+ar5kj
+ar3kr4
+4arms
+ar3m[uacute]
+4arna.
+4aro[eth]
+4arol
+4arot
+2ar[oacute]
+2arp
+4arra
+arr2i
+arr4u
+ar4s[aacute]
+3arse
+ar1sk
+ar4spi
+arst4
+5arst[iacute]
+ar3su
+ar5til
+artr2
+ar5tra[eth]
+ar3u
+ar4u[eth]
+4ar4ug
+5arum
+2ar1[uacute]
+a5r[uacute]s
+ar3v4
+ar3yf
+4ar[yacute]
+2ar[aeligature]
+a3r[aeligature][eth]
+ar5[aeligature]v
+4ar[odiaeresis]
+as2
+4a1sa
+as3an
+2a3s[aacute]
+4ase
+4as[eacute]
+2asi
+a5sinna
+2asj
+4a1sk
+2asl
+a3slag
+2a1sm
+4asn
+4aso
+4as[oacute]
+2asp
+asp[iacute]t4
+4ass
+ass4v
+1ast
+4asta[eth]
+ast4and
+4astau
+4aste
+4ast[eacute]
+4astig
+4astin
+ast4ing
+4astir[eth]
+4a1st[iacute]
+4astj
+ast3l
+4asto
+2ast[oacute]
+4astr[aacute]
+ast5r[aacute][eth]
+4astr[iacute]
+4a3str[aeligature]
+4astr[odiaeresis]
+4astul
+4a3st4un
+4ast[uacute]
+4a3sty
+4ast[aeligature]
+4ast[odiaeresis]
+2a1su
+2a1sv
+4as4y
+2as[yacute]
+4as[aeligature]
+2as[odiaeresis]
+2at
+at3a[eth]
+a3tak
+a3tal
+at4anv
+ata4r
+a1te
+at3ey
+3ath
+a1til
+a3tj
+3atk
+atns3
+a4t[oacute]
+atr4a
+at1re
+3at1ri
+at2sp
+a5t2un
+a1t[uacute]
+at4ve
+3atvi
+a1t[odiaeresis]
+2a4u2
+4au[eth].
+au[eth]5li
+5au[eth]n
+aug4as
+au4m
+aum5ba
+aum5un
+aun5dr
+aup5e
+aup3l
+a5upp
+au4s
+ausa5m
+au4t
+2a1[uacute]
+2a1v
+av4ar.
+a3vir
+2ay
+a5yf
+4az
+2a1[thorn]
+a2[thorn][oacute]
+2a3[aeligature]
+4a5[odiaeresis]
+[aacute]1a
+[aacute]ak4
+[aacute]a5lo
+[aacute]1b
+[aacute]4bu
+[aacute]1d4
+4[aacute][eth]
+[aacute][eth]2s
+[aacute][eth]3sn
+[aacute][eth]3sta
+[aacute][eth]2u
+[aacute][eth]3us
+[aacute]1e
+[aacute]f2
+[aacute]5f[aacute]
+[aacute]5f[iacute]
+[aacute]3fl
+[aacute]fl[aeligature][eth]4
+[aacute]f5un
+[aacute]g2i
+[aacute]gl4
+[aacute]gr2
+[aacute]g1s
+[aacute]g3v
+[aacute]1h
+[aacute]1i
+[aacute]k2a
+[aacute]kam4
+[aacute]kap4
+[aacute]k[oacute]4
+[aacute]la3m
+[aacute]l3arf
+[aacute]l2as
+[aacute]5lau
+[aacute]3let
+[aacute]lf3d4
+[aacute]lf5sk
+[aacute]l4m
+[aacute]lm5an
+[aacute]lm5u
+[aacute]lp3
+[aacute]l4se
+[aacute]l5sva
+[aacute]l5ug
+[aacute]5l[uacute]
+[aacute]l3[aeligature][eth]
+2[aacute]m
+[aacute]m[aacute]l5a
+[aacute]msl4
+[aacute]2n
+[aacute]n4aro
+[aacute]n2as
+[aacute]n4o
+[aacute]3n[yacute]
+5[aacute]n[aeligature]
+[aacute]3o
+4[aacute]p
+[aacute]ra5g
+[aacute]r3an
+[aacute]rar4
+[aacute]5r[eacute]
+[aacute]r3f4
+[aacute]r5g
+[aacute]r5k4
+[aacute]r1m
+[aacute]rns4
+[aacute]rn5sl
+[aacute]r2st
+[aacute]r5t
+[aacute]r1u
+[aacute]r3v
+[aacute]5r[aeligature]
+[aacute]s5en
+[aacute]1sk
+[aacute]2ska
+[aacute]4ske
+[aacute]3s4l
+[aacute]s2m
+[aacute]st2
+[aacute]st5i
+[aacute]st5r[aacute][eth]
+[aacute]st5r[iacute]k
+[aacute]st5v
+4[aacute]su4
+[aacute]s5va
+[aacute]t3a[eth]
+[aacute]1te
+[aacute]tr4as
+[aacute]ttar3
+5[aacute]ttin.
+[aacute]tt3un
+[aacute]1t[aeligature]
+[aacute]1u
+[aacute]uk4
+[aacute]3ve
+[aacute]3v[iacute]
+[aacute]1v[aeligature]
+[aacute]1[thorn]
+[aacute]5[aeligature][eth]
+b2a
+4ba.
+ba[eth]k4
+ba4h
+bak5sl
+ba2n
+4bana
+4ban[iacute]
+bank5an
+4bans
+b5ant
+bar2b
+bar[eth]4as
+bar2n
+b[aacute]4s
+2b4b
+bb3a[eth]
+bb3an
+bb5arn
+bb3i
+bb3u[eth]
+1be
+bess4
+b2i2
+bi[eth]5i
+bi[eth]5lis
+bi[eth]5r4
+bif1
+bilj5
+bill5
+4binn
+bisk3
+b4it
+bit2a
+4b[iacute]a
+2b3[iacute]s
+2b3[iacute]u
+3bj
+bjar2
+b4l2
+bl4[iacute]unn
+4bn
+5bo
+3b[oacute]4
+b[oacute]k3s
+b4r2
+br5a[eth]
+bra4s
+3bro
+br4u
+3br[uacute]
+4bum4
+bur2
+3bur[eth]
+burst5a[eth]
+bu4s
+1b[uacute]
+b[uacute]f4
+b[uacute]3sta
+1by
+1b[yacute]
+b[aeligature]k2i
+b[aeligature]n4a
+1b[aeligature]r
+b5[aeligature]ttism
+1b[odiaeresis]
+4b[odiaeresis]ki
+c4a
+ci4
+ck4
+4da.
+daf4
+dak2
+3dal.
+5dals
+da1m4
+d5ang
+d4an[iacute]
+d4arad
+d4ar4a[eth]
+dar4[aacute]r
+d3arf
+d5arp
+dask4
+da3sl
+4dav
+d1b
+2dd
+4dea
+d5ef
+3deg
+1deil
+d1en
+d5e[oacute]
+5dep
+d1f4
+d1g2
+d4gi
+d1h
+d1i
+di5fu
+d3ill
+dim4
+di3ma
+di3nav
+d2ine
+dir3s
+d[iacute]3d
+d5[iacute][eth]
+d5[iacute]nu
+3d[iacute]s
+d[iacute]v3
+3dj4
+djarf5a
+d1k2
+d1l2
+d2la
+dl3a[eth]
+d3lag
+d3lau
+d4li[eth]
+dl3u
+d1m
+d5olf
+d5[oacute][eth]
+d3[oacute]f
+d[oacute]5l[iacute]
+1d[oacute]2m
+d[oacute]m5an
+d[oacute]5ne
+3d[oacute]r
+d[oacute]2s
+d[oacute]s5e
+4dq
+d5ra[eth]f
+dr4a[eth]s5
+d5ra[eth]st
+drafn4
+dr4ara
+3dreg
+d5reip
+d5rey
+d5ri[eth]a
+d3r[iacute]k
+d5ro[eth]
+dru4
+d4r[aeligature]t
+2ds
+d5sal
+d4sj[odiaeresis]
+dsk2
+ds4ko
+ds5kun
+ds1l
+d5sn[odiaeresis]
+ds1s4
+d1st4
+d4sti
+ds4u[eth]
+d4s[odiaeresis]f
+d1t2
+d1u
+duf4
+5duft
+duk4
+d4umb
+du5r[aeligature]
+d4usta
+d3[uacute]n
+d[uacute]n4a
+d[uacute]t4
+d1v4
+4dw
+1dy
+1d[yacute]
+d3[thorn]
+1d[aeligature]
+4d[aeligature]f
+4d[aeligature]r
+3d[odiaeresis]
+[eth]1a
+[eth]af4
+[eth]a3g
+[eth]ak4
+[eth]4albo
+[eth]3ald
+[eth]al4is
+[eth]4a1m4
+[eth]3a4n
+[eth]anmeg4
+[eth]ar1a
+[eth]3ar3f
+[eth]ar3l
+[eth]ar4lis
+[eth]ar3t4
+[eth]3ar[uacute]
+[eth]at4a
+[eth]3au
+[eth]3[aacute]2
+[eth]1b
+[eth]1d2
+[eth]1e
+[eth]3f4
+[eth]1g
+[eth]2ga
+[eth]2gi
+[eth]g4l
+[eth]4gn
+[eth]gu4
+[eth]3g4ul
+[eth]1h
+[eth]1i
+[eth]i3g
+[eth]ik4
+[eth]3in
+[eth]is5l
+[eth]ist4
+[eth]4ista
+[eth]is4ve
+[eth]j3as
+[eth]3j[oacute]
+[eth]4ju
+[eth]3ke
+[eth]1kr
+[eth]k2un
+[eth]3kunn
+[eth]1kv
+[eth]1l[aacute]
+[eth]l2in
+[eth]l4ist
+[eth]3l[iacute]
+[eth]l4ur
+[eth]1l[aeligature]
+[eth]1m2
+[eth]num4
+[eth]3o
+[eth]3[oacute]
+[eth]1p2
+[eth]r5[aacute]t
+[eth]1re
+[eth]1r[eacute]
+[eth]3rik
+[eth]3r[iacute]k
+[eth]5r[oacute]
+[eth]r1u
+[eth]3r[uacute]
+[eth]1r[aeligature]
+[eth]r[aeligature][eth]is5
+[eth]s5afl
+[eth]s5[aacute]
+[eth]4seg
+[eth]s4inn
+[eth]1sk
+[eth]skr4
+[eth]4sk[uacute]
+[eth]s5kv
+[eth]4sk[odiaeresis]
+[eth]s4lu
+[eth]2so
+[eth]s3or
+[eth]ss4
+[eth]1st2
+[eth]2st[iacute]
+[eth]3st[odiaeresis]
+[eth]s4u
+[eth]4svi
+[eth]2s[aeligature]
+[eth]1t4
+[eth]1u
+[eth]3u[eth]
+[eth]3ug
+[eth]3ull
+[eth]5uls
+[eth]5unn
+[eth]3unu
+[eth]3ur
+[eth]ur5[aacute]
+[eth]ur3f
+[eth]ur5g4
+[eth]ur5st
+[eth]1v
+[eth]v5a[eth]
+[eth]v3ann
+[eth]v3arn
+[eth]1y
+[eth]5[yacute]
+[eth]1[thorn]
+eat4
+ebr5e
+ed4e
+e1dik
+ed3it
+e[eth]3a2
+e[eth]al1
+e[eth]3il
+e[eth]4is
+e2f
+e3fal
+ef3i
+efj5an
+ef4n
+4eft.
+2efts5
+eg4ge
+eg3i
+egr5u
+eg3u4l
+egur4s
+e4i
+ei[eth]5ar
+ei[eth]4st
+eif4as
+ei4ka
+eik3li
+eik3u
+eil3ag
+eil5[odiaeresis]
+ei2m
+eim5u
+eing4
+1eink
+4eino
+eist5a[eth]
+e4k
+ek2is
+ekj5a
+ekn3
+ek3u
+ek5[uacute]
+e2l
+el5[aacute]s
+el4d
+el3eg
+elf3in
+el4gr
+el1i
+4el[iacute]
+el3[iacute]n
+el4ke
+el2l
+ell5an
+ell3e
+elleg4
+el3[oacute]
+el3r
+el1s[iacute]
+5elsk
+el4te
+elu5s
+e2m
+em4ba
+1embe
+em5ens
+em3i4
+emj3
+em4l
+eml2i
+empl5
+em5u
+e2n
+4enc
+en4g
+eng3a
+enik4
+2enn
+enn4t
+en4t
+ep4h
+ep3i
+epl5i
+e4pr
+ep4t
+e4r
+er3al
+er5au
+er5[aacute]
+4er[eth]
+5ere
+er5et
+erf5ar
+er2fr
+erf3u
+erg5l
+er4gr
+er3i
+er2k
+er4la
+erl3i
+er4l[iacute]
+er4mi
+erm5in
+er5[oacute]l
+er5skj
+er1un
+er2v
+er3[odiaeresis]
+er[odiaeresis]f4
+e2s
+es3a
+es4ban
+es4bu
+4esj
+e5ske
+4eso
+esp3a
+es2s
+est3a[eth]
+est5[odiaeresis]
+e3s[aeligature]
+etik4
+et5ils
+etna4
+et5o
+etr5an
+etr3u
+etul4
+et2us
+ext4u
+5eyrar
+[eacute]3b
+[eacute]1d
+[eacute][eth]2s
+[eacute]3fe
+[eacute]1g4
+[eacute]5ky
+[eacute]1l
+[eacute]la4g
+[eacute]l4ara
+[eacute]2li
+[eacute]4lj
+[eacute]l3r
+[eacute]r1
+[eacute]r4[aacute]
+[eacute]r4r
+[eacute]rs4
+[eacute]r4un
+[eacute]r3v
+[eacute]3sm
+[eacute]tt4ug
+[eacute]t4un
+[eacute]tur4
+f3a[eth]
+fa2g
+fa5k
+1fall
+fal4u
+fa4n[aacute]
+fa5p4
+f2ar
+f3ar[eth]
+f4are
+f4arg
+farka5l
+f3arl
+fast3e
+f[aacute]3f
+f5[aacute]ns
+f[aacute]3r[aacute]
+f[aacute]3ta
+f[aacute]3v
+f1b4
+fd2an
+f1dr
+f5d[uacute]
+f[eth]a4l
+1fe
+f3ef
+f3ein
+3fel
+f3end
+ferl5i
+fer3t
+f1ey
+1f[eacute]
+f4fa
+f2fo
+f1fr
+ff4st
+ff[aeligature]r4a
+f1g2
+f2ga
+f2gi
+fg4n
+f1h
+f3i[eth]
+fik4
+f5il.
+f5ili
+f3ill
+f5ils
+f5ilv
+fim3a
+f4ine
+f3inu
+3fir[eth]i
+f3ir[eth]u
+firg2
+f3irn
+1firs
+3f4isk
+fi5so
+f3ist.
+f3istu
+fis5v
+f[iacute]4
+f5[iacute]kv
+f3[iacute]s
+fj4a
+fj5a[eth]u
+fj5ann
+fj4e
+f1k2
+fl3and
+fl4at
+3flata
+f5l[aacute]t
+f4len
+fl5g
+1flo
+5flut
+flv4
+4fl[yacute]
+1fl[odiaeresis]
+f1m
+4fn
+fn1g
+f5n4[iacute]
+fn3k
+fn5ok
+1fo
+4fop
+forf4
+fork4
+1f[oacute]
+fr2
+4fra.
+fr3a[eth]
+fra4m
+fram3l
+fr5and
+4frar
+2fri.
+fr5in
+fr[iacute]5m4
+f3r[oacute]f
+fru4
+fr3u[eth]
+1fr[aeligature]
+2f3r[aeligature]k
+4fr[aeligature]n
+fs3[aacute]
+f4sel
+f4skaf
+fsl4
+fs3li
+fs5na
+f2so
+fs5or
+fsr4
+fss4
+f4sti
+f5s4t[aeligature]
+fs1v
+f4s[aeligature]
+ft3a[eth]
+fta4sk
+ft5[aacute]
+f3te
+ft2s
+fts5l
+ft3u
+ft4ul
+f1u
+4fu.
+f3u[eth]
+3fugl
+fund4as
+2f3ur
+5fur[eth]ul
+fur5e
+furs4
+fur3t
+4f2us
+f5ust.
+f3ustu
+f1v4
+1fy
+f3yrt
+f1[thorn]
+1f[aeligature]
+1f[odiaeresis]
+f[odiaeresis]r4l
+g1a
+4ga.
+4g3a[eth]
+gaf4ar
+gagl4
+3gagn
+gak4
+ga4lag
+gal4is
+5gals
+5galt
+gam3al
+gam4i
+g5and
+1gang
+gap4a
+g4ard.
+g2ar[eth]
+3gar[eth].
+3gar[eth]a
+3gar[eth]i
+3gar[eth]4s
+5gar[eth]ur
+g3ar3f
+gar4kl
+gar3l
+gar3t
+4gas
+g4as.
+g4as[iacute]
+g3ast.
+ga5sta[eth]
+1gata
+gat4r
+g[aacute]2
+3g[aacute]f
+g[aacute]5le
+g1b
+gd4ans
+g3de
+g4du
+gd4v
+g[eth]4aro
+1ge
+3gei
+2g1el
+gen4
+g5end
+3geng
+g3ent
+5ger[eth]
+ger5[iacute]
+germ4
+gerv5a
+get3r
+g1f2
+ggis5
+ggjaf3
+ggj5ar
+gg5r[aacute]
+gg3r[aeligature]
+ggs4v
+gg3ug
+gg2v
+g4g[odiaeresis]
+g1h
+g1i
+4gi.
+4gik
+gi5kv
+3gild
+g5ill
+5gilt
+gim4a
+4g3i4n
+gis4a
+g4isp
+g5ist[aeligature]
+g[iacute]r5a
+g[iacute]s4
+gjaf5ar
+gjaf5o
+gjak4
+gjal4
+gj4asta
+1gj[odiaeresis]
+g1k4
+gkal4
+g1l[aacute]
+g4le[eth]
+g3leg
+gl5[eacute]
+gl3f2
+g3lit
+g5l[iacute]n
+gl3[oacute]t
+glsk4
+3glugg
+glu3s
+gl4y
+g3l[aeligature]r
+g1m4
+gnap4
+gnart4
+g4n[aacute]
+gn3g
+g3n[oacute]
+gn4se
+gn5ug
+g4n[yacute].
+3gol
+g3or
+3g[oacute][eth]
+g[oacute]r5
+g[oacute]4ur
+g1p
+g3rak4
+gr4an
+gra2s
+gras5sv
+g2r[aacute]
+1grei
+g3reis
+g5rey[eth]
+gr2i
+2gri.
+gri[eth]4
+g3r[iacute]k
+3gr[oacute]
+3grund
+3grunn
+g3r[aeligature][eth]i
+g2r[aeligature]n
+4gs
+gs1[aacute]
+g4sei
+gsk4
+gs4len
+gsl2u
+gs4l[odiaeresis]
+gs3m
+gs5or
+gs3s4
+gs4si
+gs1v
+gt3a[eth]
+g3te
+gt4s
+2g1u
+g4u[eth]i
+gu[eth]l4
+5g2u[eth]s
+gu[eth]4s[oacute]
+g3u[eth]u
+5gufu
+gu4lagi
+g5ulin
+g3ull
+g3uls
+gu5mi[eth]
+g3un
+gurf4
+gur3g
+g4usta
+g3[uacute]
+g[uacute]st5a
+g1v
+g2va
+g3val
+5gy[eth]
+g1[thorn]
+1g[aeligature]
+g[aeligature][eth]4as
+g[aeligature]l4
+g[aeligature]r3
+1g[odiaeresis]4
+h2a4
+4ha.
+ha[eth]4
+haf4sp
+hand5r
+hat3r
+h[aacute]3g
+h[aacute]l4
+h[aacute]3re
+h[aacute]4ski
+h[aacute]5sta
+h[aacute]s4u
+h[aacute]t4
+h[aacute]5ti
+h[aacute]tr4
+h[aacute]1v
+he4
+hei2
+hellis5
+hen2r
+herk4
+her3l4
+hersk4
+4hersla
+hey5st
+4hg
+h4i
+hig4
+him5b
+hin4
+hit4as
+hit4n
+2h[iacute]2
+h5[iacute]a
+h[iacute]5b
+hj4
+h2l2
+4hl.
+4hls
+hlu4
+h4n2
+hnja4
+hnj[aacute]3l
+holl3u
+horm5
+h[oacute]2
+h[oacute]m5e
+h[oacute]t3
+hr4
+4hs
+hu4
+hug1r
+hug3u
+hul5i
+hundr4
+h[uacute]2
+h[uacute]m3
+4h[uacute]r
+h[uacute]s5k
+hv4
+hvar4
+hvik3
+5hy
+h[aeligature]f5a
+h[aeligature]tt4us
+h[odiaeresis]st3
+2ia
+i5as
+4i5[aacute]
+4i1b
+ibb3
+ibl3[iacute]
+4ic
+2id4
+i3da
+i1de
+i3dr
+1i[eth].
+4i[eth]f
+2i[eth]3g
+i[eth]5jar[eth]
+4i[eth]r
+4i[eth]s
+i[eth]5sal
+2i[eth]u
+4ie
+i3ef
+4if
+if5arn
+ifat4
+i2fen
+if4g
+if3is
+if4t
+i4fy
+4i2g
+iga3m
+ig[eth]5u
+ig1en
+ig5r[iacute]
+2i1h
+2ii
+i5i[eth]
+4ij
+4ik
+ik5[aacute]
+ik3i
+ik4is
+ikt5o
+i4kv[odiaeresis]
+2il
+ila2g
+il4ara
+i1l[aacute]
+4ile
+ilf4a
+il1fi
+il1g4
+i5li[eth]u
+il5in
+il3ip
+il5[iacute]s
+il[iacute]4um
+il4kv
+il3lag
+ill5an
+il3l[aacute]
+i1lo
+il4sa
+il1sk
+il3sn
+ilst4
+il[aeligature]k4
+i5l[odiaeresis]n
+4im
+im4b
+imb3u
+im3i
+im4i[eth]
+im4la
+im4m
+i5m[oacute]
+im4sv
+1i2n
+4inaf
+in3an
+4inar
+inat5r
+2i3nau
+2ina2v
+inav3[iacute]
+4in[aacute]
+4ind.
+in4ga
+ingj5arni
+4ingr
+ingv4
+2inns
+2innu
+in1o
+4in[oacute]
+in1s4k
+in2sp
+in3sta
+in5ul
+4in[yacute]
+2i3o
+4i[oacute]
+2ip
+i5pil
+3ir.
+4ira
+2i1r[aacute]
+2ir[eth]i
+4ir[eth]n
+4ire
+4ir[eacute]
+irf2i
+4irfs
+4irig
+2irit
+4i1r[iacute]
+2irk
+irk3u
+ir3l
+ir1m4
+4irnd
+4irni.
+4irnin
+4irnis
+4ir[oacute]
+irs4[aacute]
+irst4
+ir3tal
+irt5i
+4irtl
+irt4[odiaeresis]
+ir3ug
+4ir[uacute]
+4ir[odiaeresis]
+i2s
+1is.
+2isa
+4isag
+i5saga
+i3sam
+is2as
+3isd
+2ise
+4ishv
+3isins
+4is[iacute]4
+4isj
+i3sj[oacute]
+2isk
+is4ka
+isk5el
+iski3m
+isk5inn.
+3isko
+isk2u
+isk1v
+5isk[odiaeresis]
+2isl[eacute]
+is3l[aeligature]
+5isma
+is5me
+4isni
+isp3a[eth]
+isp3u
+iss2i
+is5s[uacute]
+ist3al
+2iste
+4ist[eacute]
+4istig
+i5stik
+ist4is
+ist5[iacute]n
+4isto
+4ist[oacute]
+4isty
+4ist[aeligature]
+2ist[odiaeresis]
+is5t[odiaeresis]k
+is1v
+4isvi
+is4vi[eth]
+5isvin
+i3sv[aeligature]
+2is[odiaeresis]
+2it
+it3a[eth]
+it5ann
+i5tei
+4ith
+it4ha
+it5ill
+itis4m
+it2ka
+itn5es
+it3r[iacute]
+it4st[odiaeresis]
+it3un
+it4urn
+it4ve
+4iu
+4i[uacute]
+4i1v
+i2v5[iacute]s
+4ixs
+2i3[thorn]
+4i[aeligature]
+4i[odiaeresis]
+[iacute]1a
+4[iacute]5ak
+[iacute]al3
+[iacute]5ald
+[iacute]3ali
+[iacute]2as
+[iacute]5at
+[iacute]5au
+[iacute]5[aacute]
+[iacute]b4a
+[iacute]5bar
+[iacute]4be
+5[iacute]b[uacute]
+[iacute]5dag
+[iacute][eth]2s3
+[iacute][eth]sk4
+[iacute]3el
+[iacute]3en
+[iacute]et3n
+[iacute]5ett
+[iacute]2f
+[iacute]f3e[eth]
+[iacute]4f3i
+[iacute]f5r[iacute]
+[iacute]fs3k
+[iacute]f4sp
+[iacute]2g
+[iacute]g3e
+[iacute]3gil
+[iacute]1h
+[iacute]1i
+[iacute]k3a4
+4[iacute]k4anar
+4[iacute]k4ani
+[iacute]k5is
+[iacute]kk2i
+5[iacute]km
+[iacute]k2n
+[iacute]kn5e
+[iacute]k4s
+[iacute]k3us
+2[iacute]l
+[iacute]lak4
+[iacute]l2as
+[iacute]l5[aacute]r
+[iacute]l5f4
+[iacute]3l[iacute]
+5[iacute]lm[aacute]
+[iacute]l3sk
+4[iacute]m
+[iacute]m3a[eth]
+[iacute]ma3l4
+[iacute]m3an
+[iacute]m4g
+[iacute]m5o
+[iacute]m5t
+[iacute]m3un
+[iacute]2n
+[iacute]5n[aacute]
+[iacute]n5e
+[iacute]n3ge
+[iacute]n5t
+[iacute]nu3g4
+[iacute]n3[uacute]
+[iacute]3[oacute]p
+[iacute][oacute]p5[iacute]u
+4[iacute]p
+[iacute]r5ak
+[iacute]ra4s
+[iacute]4r5i
+[iacute]r4sv
+[iacute]r3t
+[iacute]1r[aeligature]
+[iacute]r5[odiaeresis]
+[iacute]2se
+[iacute]4s5j
+[iacute]sl2
+3[iacute]slen
+[iacute]sl5i
+[iacute]s2m
+[iacute]2st
+[iacute]s5ter
+[iacute]t5a[eth]
+[iacute]t5als
+[iacute]t3i
+[iacute]tj5
+[iacute]t3re
+[iacute]tr5[oacute]
+4[iacute]ub
+[iacute]5u[eth]
+4[iacute]ul
+[iacute]u1ma
+[iacute]3un
+[iacute]u5p
+[iacute]3ur
+[iacute]4ura
+4[iacute]usa
+[iacute]u3t
+4[iacute]uv
+[iacute]vo4
+[iacute]5[thorn]
+j2a
+j3a[eth]
+j5a[eth]i
+3jaf4n
+ja5kl
+jal2
+jal5i[eth]
+ja5l[oacute]
+j4am
+j3an
+j4aram
+j3ari
+jark4i
+jarn4i[eth]
+j4ar[aeligature]
+jas4
+jask4u
+j3ast
+j[aacute]l5as
+j[aacute]l4f
+j[aacute]lf3a
+3j[aacute]rn
+j[aacute]r4u
+j[aacute]v3
+j[aacute]var5
+j1e
+jend4a
+j4ep
+j4er
+j4et
+j1i
+j[oacute]5b
+j[oacute]5fr
+j[oacute]2s
+j[oacute]5ug
+j[oacute]3ve
+j1u
+juf4
+jug2
+jug5as
+ju4g[oacute]
+j4u1l2
+jur4e
+5j2urt
+jurt4i
+j2us4
+j3ust.
+3j[odiaeresis]fn
+3j[odiaeresis]k
+j[odiaeresis]l3k
+j[odiaeresis]l1m
+ka[eth]4s
+kaf4an
+ka4fr
+kag4as
+ka4j
+kaj5a
+kak4l
+kal2
+3kald
+4kalf
+k4all
+3kam4b
+kam2s5
+k3ana
+k4anaf
+k3ann.
+k4an[oacute]
+k4ant
+5kanta
+4kapa
+kark4
+1k2ar2l
+k4arm
+k3arn
+kar2r
+k4art
+kar4v
+kask4
+3kass
+5kastal
+k5astu.
+1kau
+5kaup
+k[aacute]k5
+k[aacute]m3
+k1b
+k1d4
+2k1end
+3kenn
+3kerf
+5kerl
+ker4m
+k1f4
+kfalls5
+k3g
+kgl4
+k1h
+k3i[eth]
+ki[eth]5l
+kig4
+k5ill
+k5ilsi
+kim2
+k5ing
+k4ip
+k1ir
+k3ir[eth]
+5kirk
+k5irn
+k4irt
+k1is
+k5ise
+kisk4
+k3ist.
+k4it
+ki3te
+3k[iacute]l
+k[iacute]s3
+k[iacute]t3u
+kja4l
+kjar4a
+kjar5f
+kju3g
+1kj[odiaeresis]
+3kj[odiaeresis]r
+kka5l
+kk5e
+kkj1[oacute]
+k2kl
+kk1l[aacute]
+kk4li
+kk3r[iacute]
+kk4se
+kkul4
+kkv5i[eth]
+kl2
+kl3a[eth]
+kl3ann
+kl[aacute]4
+5klef
+kleif5a
+k4lem
+k1lin
+3klj
+3kluk
+3kl[uacute]
+1kl[aeligature]
+k1m2
+k4mi[eth].
+kn3ar
+k2ney
+kni5svi
+3kn[uacute]
+1ko
+2kob
+koff5
+kol5d
+kol4l
+kol5sv
+3kon
+4kons
+3kos
+kot4as
+k[oacute]3d
+k[oacute]3m4
+k[oacute]r5a
+k1[oacute]tt
+kra5l
+kr2as
+k2r[aacute]
+k5r[eacute]
+kr2i
+krif3a
+1kr[odiaeresis]
+3kr[odiaeresis]f
+4ks
+ks4l[iacute]
+ks4l[odiaeresis]
+ks4m[aacute]
+ks4n
+ksp4
+k4ste
+k4st[oacute]
+k4str
+ksyf4
+kt3a[eth]
+kt5er
+k4t[iacute]
+k3tora
+k5ty
+2k1u
+k3u[eth]
+k4u[eth]i
+kuf4
+kuk4
+kulegr4
+kum4
+kumb5
+k5un.
+k5una.
+k3unar
+k5uni
+5kunn[aacute]tta
+k3unu
+k3ups
+k2ur[eth]
+kur5k
+k2us
+ku5sl
+k3ust.
+k5ustum
+ku3sty
+k[uacute]2
+3k[uacute]lu
+k3[uacute]n
+k[uacute]3re
+k[uacute]t4us
+3kven
+4kv[eacute]
+4kvu
+kv4un.
+1k4v[aeligature]
+3kv[odiaeresis]
+4kv[odiaeresis]r
+k5[thorn]
+3k[odiaeresis]k
+5k[odiaeresis]ld
+5k[odiaeresis]nn
+5k[odiaeresis]s
+2la.
+4lac
+la4dan
+2la[eth]
+la[eth]4al
+4laf
+laf4as
+laf4r
+l3afs
+3lag[eth]
+4lage
+2lak
+la5k[oacute]
+la1l2
+l3ald
+lam4b
+2lana
+l2and
+3land.
+3lands
+1lang
+lank5as
+4lann
+l5anna.
+l4an[oacute]
+lan4t
+la3pl4
+2lar
+l4aram
+l4are
+larg4
+l4aris
+l3arn
+la3r[oacute]
+lart4
+l4ary
+2las
+las3i
+las3le
+la5sli
+last5a[eth]
+lat3[iacute]n
+lat4u
+1lau
+2laum
+laut5as
+l[aacute]2g
+l[aacute]m5a
+l[aacute]n5e
+4l[aacute]r
+l[aacute]4t
+5l[aacute]tum
+l[aacute]3v
+2l1b
+2ld
+ld3ar
+ld3d
+ldem4
+ld3ey
+ldig4
+ldr4as
+ld5rau
+l4dri
+ld5ro
+ldr3[oacute]
+1le
+4le.
+2lef
+l1efn
+4legn
+leif5as
+leik3v
+4lein
+4lek
+4lel
+4lenn
+4lep
+2ler
+le5r[iacute]
+les5e
+2let
+l3ex
+2ley.
+4leyj
+2leym
+lf4as
+lf5[aacute]t
+lf4dr
+lf3f
+lf2i
+lf5inn.
+l3fj
+lf2l
+lfla4
+l4f[oacute]
+lf4sp
+lftr4
+lft4un
+4lg
+lg2a
+lgar4s
+lg5ast
+l1g[aacute]
+l4ges
+lgil4
+lg4isi
+lg3[iacute]
+lgl4
+lgni5s
+l1gr
+lg4[uacute]
+l1h
+4li.
+lik4a
+li5kv
+lil2
+li5la
+li3li
+l2ind
+4lings[aacute]
+l3inn
+l5inn.
+2l3inu
+4l3ir
+l1is
+l5is.
+l4is[aacute]
+l3isi
+lisk4
+l5isr
+l4isti
+l5istu.
+lit4ar
+3litl
+l3[iacute]a.
+l[iacute]4b
+1l[iacute]f
+l[iacute]f5a
+l[iacute]k3k
+l[iacute]m5ug
+4l[iacute]p
+1l[iacute]t
+l1[iacute]u
+l4[iacute]uf
+l4[iacute]uh
+l4[iacute]utr
+lj3ar
+lj5ar[eth]
+1lj[oacute]s
+lj[oacute]s5k
+lj[oacute]s3l
+lj3ug
+ljur4
+lj4uru
+2lk
+lkap4
+lk4as
+l1ke
+l3kr
+l3k[uacute]r
+l1kv
+l3ky
+2ll
+ll3et
+l4ley
+ll3f
+ll1g2
+ll3i[eth]a
+lli3g
+lliss4
+l1lit
+ll[iacute]t4
+ll3k4
+ll3m
+ll1[oacute]t
+lls5t[aeligature]
+ll5te
+ll5ug
+ll3v
+2lm
+lm5ari
+lm3ars
+lmb4
+l3me
+l1m[oacute]
+lnar4
+ln4i[eth]
+l5no
+lo4
+5lo[eth]
+5loki
+4lon
+4l1or
+5los
+l[oacute][eth]3r
+l[oacute]5gr
+l[oacute]4ma
+lp5t
+2l1r
+l2ri
+l3rit
+2ls
+ls[iacute]4
+l2sj4
+l5skin
+ls4kon
+ls4nesi
+l3sta[eth]
+lst4in
+ls1ve
+4lt
+lt3a[eth]
+l5til
+lt4s
+lt4[uacute]
+l1t[aeligature]
+2lu
+4lu.
+l3u[eth]
+lugl4
+luk4i
+l4u1l4
+l1um
+lu1ma
+l1un
+3lund
+l3unu
+lu5pe
+l1ur
+2l1v
+l2va
+lv3a[eth]
+l3val
+l4v[iacute]u
+ly4
+3lyf
+1lyn
+l1yr
+1l[yacute]
+2l[yacute]f
+l[yacute]t4a
+4l[yacute]ti
+2l1[thorn]
+1l[aeligature]g
+l[aeligature]kj3
+l[aeligature]kjar5
+5l[aeligature]kk
+1l[aeligature]ti
+1l[odiaeresis]g
+l5[odiaeresis]l
+4l[odiaeresis]t
+m2a
+2ma.
+m4ab
+m4ad
+m3a[eth].
+m3a[eth]a
+m3a[eth]i
+m3a[eth]r
+m5a[eth]s
+1ma[eth]u
+maf4
+m4ag
+3mag4n
+m4ak
+mal4as
+mal3dr
+m3alf
+m3all
+m4alp
+mal4t
+ma1m4
+4man.
+4mana.
+m4an[aacute]
+m3anb
+2m3and2
+m3ank
+m3anl
+mann4as
+3manni
+3manns
+mann5t
+2m3ans
+man5sa
+m3ant
+4manu
+ma2r
+m3ara
+m3arb
+m3ar[eth]
+1m4ark
+marks5
+m3arn
+mar3o
+mar4s
+mars5m
+m4ar[uacute]
+m1as
+mask4
+ma4sp
+m3ast.
+1m[aacute]
+4m[aacute].
+3m[aacute]2l
+m[aacute]l3f4
+2m[aacute]m
+m[aacute]5mu
+m[aacute]5p
+4m[aacute]r
+4mb
+mb5a[eth]i
+m1ban
+mb3i
+mb4ir
+mb3un
+md2as
+md5asta
+md4v
+1me
+4me.
+me[eth]3
+m5ef
+megin3
+5m2eis
+meltr4
+m1end
+3menn
+m5erh
+m3er3[iacute]
+mest5a
+m1f4
+m4f[iacute]
+mf[odiaeresis]r4u
+m1g2
+mgl4
+m1h
+mi[eth]3i
+mi[eth]r4
+mi3ge
+3mik
+milj3
+mil4l
+millj3
+m3ing
+5minj
+m3inn.
+min4s
+m3inu
+m3ir
+m1is
+mis3k
+mis3lu
+mism4
+2m[iacute]
+mj[oacute]3sl
+m1k
+m2ka
+mk4arg
+mk4as
+mk2i
+mk4l
+m1l
+m2la
+m3lag
+m3lau
+m2l[aacute]
+ml3[aacute]r
+m2li
+m5luk
+4mm
+m2m3a
+mm5b
+m4m[oacute]
+mm4sv
+mm3u
+m4nesku
+2mog
+4mok
+3mol
+mong5
+m[oacute]d3
+m[oacute][eth]4s
+m[oacute]5g4
+m5[oacute]n[iacute]
+m[oacute]3rau
+m[oacute]4s
+3m[oacute]t
+mp3[aacute]
+m5pe
+mp3i
+m3rau
+m5r[aacute]
+m3re
+m3r[yacute]
+m1r[aeligature]
+4ms
+ms5[aacute]l
+m2se
+ms5ei
+m5skau
+ms5kj
+ms5l[aacute]
+msn4
+mssetr4
+m1sv
+m4sv[iacute]
+mt3a[eth]
+m4ti
+mt2is
+m3tug
+mt5un
+mt4us
+mt2v
+m1t[odiaeresis]
+m1u
+4mu.
+mug4u
+4mul
+4mum
+m2un
+1mund
+m3ung
+4mur
+m4uru
+mu5sta
+m3[uacute][eth]
+m[uacute]g4u
+m1[uacute]n
+m[uacute]s4a
+m1v4
+1my
+3m[yacute]
+m[yacute]5m
+m1[thorn]
+1m[aeligature]
+1m[odiaeresis]
+m[odiaeresis]r4
+n1a
+4na.
+na2da
+na4d[iacute]
+na[eth]ar3
+naf4
+nafl4
+nafl5an
+3nafn
+nak4a
+na4kr
+nal2
+na3la
+n3ald
+na3li
+na1ma
+n4anaf
+n5ang
+n5ann
+n4arak
+n3ar3f
+n4arfi
+n4arf[odiaeresis]
+narg4
+n4aris
+nar5m
+nar5rin
+n4aru
+n4ar[uacute]
+nat4
+n5aug
+n3auk
+naum5a
+1n[aacute]
+n[aacute]1g
+n[aacute]1k
+3n[aacute]4m
+n[aacute]n5ast
+n1b
+nb[aeligature]j4
+nd3er
+nd4isv
+n4dj
+nd3[oacute]t
+nd3rek
+ndr1u
+nd1r[aeligature]
+nd4sen
+nd3ug
+nd5ul
+ndur5g
+nd3[uacute]
+1ne
+ne[eth]2s
+3n2ef
+4nefl
+n4em
+nem5a
+2n1en
+4n4er
+nestr4
+netl4
+n5eyi
+n3eyj
+n[eacute]5sk
+n1f2
+nfr4
+nga1m
+ng5are
+ng2as
+n2ge
+ng5ek
+n3ger
+n3get
+ng1ey
+ngi5k
+ngil4i
+ngi5li[eth]
+ng5lag
+ngl2i
+ngl5i[eth]
+ng5[oacute]lfs
+ng4ra
+ngr5an
+n3gr[iacute]
+ngr3u
+ng3r[aeligature]
+ng4sj
+ng4sp
+ng4ste
+ngurs3
+ngu3t
+n1h
+4n1i
+n4i[eth]i
+ni5fr
+ni3gr
+ni3lu
+ni5m
+n4iru
+n3isa
+n4is[aacute]
+nisk4
+ni3sk[oacute]
+nis2m
+nis5s
+ni3ste
+ni5st[aeligature]
+n3[iacute]a
+n3[iacute]sk
+n1[iacute]u
+n[iacute]4um
+nj[aacute]l4
+nk2
+nk3a[eth]
+nk5and
+nk3ans
+n5k[aacute]
+n1ke
+nk3i
+n5k[oacute]
+n3kunn
+n5ky
+n5k[odiaeresis]
+n1l2
+nli4
+n4list.
+n1m4
+n2n
+nn1[aacute]
+nn1e
+nn3g2
+nnk4i
+nn4sj
+nn5ske
+nn4sto
+nn5stun
+nn5t[oacute]
+nn3ug
+nn2us
+nn3[uacute][eth]
+n1or
+1not
+n5[oacute]lf
+5n[oacute]ttin
+n3p4
+n1r
+n3ram
+n5rau
+n2r4i
+n3rit
+n3sak
+n5s[aacute]t
+n4seg
+ns5es
+ns5is
+ns1[iacute]
+n3skil
+nsk[iacute]r4
+ns5kja
+n5sk[odiaeresis]
+nsn4a
+ns5r
+nst4e
+nt3a[eth]
+n5tak.
+n5taki
+n3tal
+n1te
+ntgen5
+n3til
+n2t[iacute]
+nt2s
+nt5sk
+nt5sm
+nt3ug
+nt4v
+n1t[yacute]
+n1t[odiaeresis]
+n1u
+nuf4
+n4ugr
+nuk2
+nu1l
+nu1ma
+5numd
+nungs3
+nur5f
+nur4l
+n3ust.
+nu5sta[eth]
+nu4sv
+nu5ta
+3n[uacute]m3
+n[uacute]4s
+n1v
+n5yf
+n3yrk
+1n[yacute]
+n3[yacute]g
+n[yacute]3l
+n[yacute]5sk
+n1[thorn]
+1n[aeligature]
+n[aeligature]l4a
+3n[odiaeresis]f
+n3[odiaeresis]ld
+n5[odiaeresis]n
+5obs
+o[eth]a3l
+o[eth]r4
+o[eth]s5l
+o[eth]4ug
+o2f
+of3ang
+off4u
+of3o
+of5r
+of4sj
+of5su
+oga3l4
+ogast4
+ogs4u
+ok4as
+olak4
+old3u
+ol2g
+oll5eg
+ol5lit
+oll4st
+ol3m
+ol3[oacute]
+oltal4
+o2m
+om3a
+om4m3
+om2u
+om3un
+on3sv
+on4t
+on5t[oacute]
+on4us
+opa5p
+op2h3
+op5u4
+ora4
+or4di
+or1e
+or2fe
+or2gr
+3or[iacute]
+orlag4
+or2ma
+or4mi
+4orn
+or4ne
+or4sta
+ortr4
+ort3ug
+or1u
+or3ug
+or3v4
+or4vi[eth]
+or3y
+o4s
+osk3i
+os3m
+os2s
+ost5i
+ost5un
+4o4t
+ot3a[eth]
+ota5l4
+otam4
+ot3ro
+ots4[aacute]
+ot5un
+o4u
+o3ve
+ox4
+[oacute]1a
+[oacute]aflat4
+[oacute]5an
+[oacute]ar4s
+[oacute]b3ak
+[oacute]d4a
+[oacute][eth]i4
+[oacute][eth]l4
+[oacute][eth]m4
+[oacute][eth]v4
+[oacute]5e
+[oacute]f3ar
+[oacute]f4as
+[oacute]flu5s
+[oacute]fr4
+[oacute]f5us
+[oacute]2fy
+[oacute]4f[odiaeresis]
+[oacute]2g
+[oacute]1h
+[oacute]1i
+[oacute]k5lo
+[oacute]3kr
+[oacute]k2u
+[oacute]la3m
+[oacute]l2as
+[oacute]l5ik
+[oacute]l4is
+[oacute]l4kv
+[oacute]l5om
+3[oacute]lsk
+[oacute]4m3a[eth]
+[oacute]m3ar
+[oacute]m4b[aeligature]
+[oacute]m2g
+[oacute]m4is
+[oacute]ml4
+[oacute]m3p
+[oacute]m3stu
+[oacute]m3u
+[oacute]2m[odiaeresis]
+[oacute]4n
+[oacute]n3[iacute]
+[oacute]n5kv
+[oacute]p4e
+[oacute]p2h5
+[oacute]r4as
+[oacute]r[aacute]4
+[oacute]r2d
+[oacute]r4d[odiaeresis]
+[oacute]r5es
+[oacute]rf4
+[oacute]rg4
+[oacute]4ri
+[oacute]r4is
+[oacute]r[iacute]k4
+[oacute]rj4
+[oacute]rk4
+[oacute]rm4
+[oacute]rn4o
+[oacute]r3[oacute]n
+[oacute]rr4
+[oacute]rs4a
+[oacute]r1u
+[oacute]sa5f
+[oacute]sak4
+[oacute]3sem
+[oacute]s3end
+[oacute]5skaf
+[oacute]sk4as
+[oacute]sk5in
+[oacute]s2l
+[oacute]slav3
+[oacute]2s[oacute]
+[oacute]sp4
+[oacute]s4se
+[oacute]4ta
+[oacute]t3a[eth]
+[oacute]tap4
+[oacute]t5ef
+[oacute]til4t
+[oacute]5t[iacute]
+[oacute]t4[oacute]
+[oacute]t2v
+[oacute]1u
+[oacute]um5b
+[oacute]v4a
+[oacute]5vat
+[oacute]y4
+[oacute]5[thorn]
+p1a
+pag4
+pa4le
+pa3m
+pa4n
+pan3g[oacute]
+pa2r
+p4arat
+pari3f
+par5[iacute]
+p2art
+par5te
+p4aru
+p2[aacute]k
+p4[aacute]l
+p[aacute]5m
+p4[aacute]r
+p[aacute]2s
+p4[aacute]t
+p1b
+p5d
+p1el
+1peni
+3pers
+p1f2
+p1g2
+p1h
+p1i
+pil5ar
+5pilt
+p4ink
+pist5i
+pit4
+3p[iacute]p
+p[iacute]2t
+pl2
+pl3a[eth]
+pla4s
+p4l[aeligature]
+3pl[odiaeresis]
+p1m4
+1pok
+3p[oacute]s
+p2p
+pp5aks
+pp5e
+pp3[iacute]
+ppk4
+pp1l
+pp3[oacute]
+pp1r
+ppsk4
+4pra
+pr2i
+p4ris
+pr[iacute]4
+3prj
+1pr[oacute]
+pr[oacute]5fas
+pr[oacute]5m
+p1sa
+pss4
+p1st
+pt2[uacute]
+p1u
+puk4i
+pu1l
+pur4a
+3p[uacute]
+p[uacute]f4
+p1v
+qu4
+2ra
+4ra.
+5ra[eth]sh
+raf4f
+r3ald
+ral4i
+r4all
+r3als
+3ranal
+r4ani.
+3ranns
+r4an[oacute]
+4r3ar
+r4ara[eth]
+r4ar[uacute]
+r4ary
+r4ar[aeligature]
+ras3i
+ra3tu
+r4aum
+1r[aacute][eth]
+r[aacute]f4i
+r[aacute]5kv[aeligature]
+r[aacute]rs4
+r4[aacute]sa
+r1b4
+rba4
+r1d
+r2d[iacute]
+r4[eth]
+r[eth]4ar4[aacute]
+r[eth]5is
+r[eth]1l2
+r[eth]4mu
+r[eth]5r[aacute]
+r[eth]5su
+r[eth]3sv
+r[eth]v4
+r4ef.
+r4efs
+5reftsk
+1regl
+r3eig
+3reik
+r5enu
+r5eu
+r4eyn
+r4[eacute]
+r1fal2
+rfa5li
+rf4ar
+r3f[aacute]
+r5fe[eth]
+rf1is
+r1fj
+rfj[aacute]r4
+rf4l[odiaeresis]
+rf[oacute]g5
+r1fr
+rfr4u
+rf4st
+r3fund
+rf4ur[eth]
+rgj4a[eth]
+rgj4ar
+rg2l4
+r5gly
+r1gr
+r2gra
+r4grey
+r5h
+4ri.
+4r3i[eth].
+rig2
+riga5s
+r3ild
+4rin
+rin5e
+ringj5ar
+r3inu
+rip4s
+4r3ir
+ri3sk
+ris5l2
+3risn
+rist5a[eth]
+ris4un
+1ri4t
+rit3li
+4r[iacute].
+4r[iacute]f
+r[iacute]kis3
+4r[iacute]l
+r[iacute]st4
+4r[iacute]u
+4r[iacute][thorn]
+rj3ar
+rj[aacute]4l
+rj[oacute]3sa
+rj[oacute]sk5a
+rka1m
+rkaup4s
+r3k[aacute]
+r1ke
+rk1ef
+r4kell
+r4kelss
+rkju3s
+rk4se
+rk1sm
+rk4sp
+rk4[uacute]
+rk5vei
+r3k[odiaeresis]
+r1l2
+rl3a[eth]
+rl5ann
+r2li4
+rl4i[eth]
+rlis5s
+r3lit
+rl3m
+rlof4
+rmak4
+r1man
+rm[aacute]ls5
+rmb4
+rm2i
+r1mi[eth]
+rmil4
+r5mj
+rmk4
+rml4
+r3m[oacute][eth]
+rmr4
+rn3ar
+rnar5l
+rn1g
+rn5[oacute]r
+rn5s[iacute]
+rn5sm
+rn4so
+r4nu
+r5numi
+ro4
+rog4as
+ron4
+r1or
+r[oacute]5gr
+r[oacute]4m
+r[oacute]4sa
+r[oacute]s3[oacute]
+5r[oacute]ti
+r5pal
+r3p[oacute]
+r1pr
+r4pri
+rp2s
+rp3sk
+r5py
+rr5ar
+r1r[aacute]
+r1re
+r1r[eacute]
+r1r[iacute]
+rr2k
+r3r[oacute]
+rr1u
+r5r[uacute]
+r1r[aeligature]
+r1sa
+r4saf
+rs4[aacute]r
+rsegl4
+r3ser
+rs4inn
+r3ske
+r5skil
+rs4lan
+rs2m[aacute]
+r1st
+r2sti
+rst4v
+r3st[odiaeresis]
+rs2u
+r5sund
+r4s[uacute]
+r1sv
+rt3a[eth]
+rta5g
+r3tak
+rta4sk
+r5t[aacute]
+rt5er
+rt3ey
+rt2hu
+r4t[iacute]k
+r3t[oacute]
+r3tr[odiaeresis]
+rt4se
+rt5sl
+rtt4
+rt4uru
+rt4[uacute]
+r4tv
+rt4ve
+r1t[aeligature]
+rt1[odiaeresis]f
+r1u[eth]
+r4u[eth]un
+ruk4i
+ru5li
+ru2m
+r1ur
+r4uss
+r3ust.
+rut4v
+r4[uacute][eth]
+3r[uacute]m
+r[uacute]st5
+r1v
+rv3a[eth]
+r3ve
+r2vi
+rvi3g
+rv3ing
+rv4un
+r3v[aeligature]
+r3yr
+1r[yacute]m
+r1[thorn]
+1r[aeligature]kt
+r[aeligature]md5a
+1r[aeligature]n
+r[aeligature]t3i
+r[odiaeresis]f4ug
+r[odiaeresis]k1r
+r[odiaeresis]l4
+2sa.
+4sab
+2s3a[eth]
+s4a[eth]f
+1sag
+4sagr
+4sagt
+sal5at
+4s3ald
+1sa2m
+sam5b
+4sam1e
+sam3m
+sam1s
+sam5y
+2san
+s4ands
+2s3ar
+s4are
+sarg4
+s4aro
+s4arp
+2s1as
+2sat
+sat4a
+2sau
+s3auk
+4sav
+s[aacute]4
+s3[aacute]b
+s5[aacute]f
+s[aacute]lar5
+s1[aacute]r
+s3[aacute]s
+s1b
+s3d4
+1se
+2s1ef
+4seld.
+5semi
+5sens
+2ser
+2ses
+3set
+sex3
+2s1ey
+s4ey[eth]
+1s[eacute]
+s5f4
+sfl4
+sfr4
+s1g4
+sgl2
+s1h
+sh[aacute]4s
+s1i
+s3i[eth].
+5s4i[eth]a
+s4i[eth]i
+sif2
+si5fi
+1sig
+sind4ar
+sind4as
+5sinnu
+2s5ins
+s3ir
+s3ist
+s4isv
+si3ta
+s[iacute]3br
+1s[iacute][eth]
+s[iacute][eth]k4
+s[iacute]gl4
+s3[iacute]k
+s[iacute]4m
+s[iacute]nk5a
+s3[iacute]r
+s1[iacute]s
+s5[iacute]u.
+s[iacute]3v
+s[iacute]4ve
+1sj
+s3jaf
+sjar4
+s4j[aacute]
+sj[oacute]5l
+sj[oacute]3m4
+sj[oacute]3s
+4sju
+3sj[uacute]
+s2k
+2sk.
+4ska.
+4ska[eth]
+skaf4a
+4skal
+2skan
+1ska4p
+4skas
+1sk[aacute]
+1skei
+3skemm
+4sken
+3skey
+s4k2i
+2ski.
+4ski[eth]
+sk3inu
+3skip
+2skir
+4skis
+3sk[iacute]r
+5skj[aacute]
+4sk4n
+3sko[eth]
+4skon
+4skos
+1s4kot
+1sk[oacute]
+5sk[oacute]g
+1skr[aacute]
+4skr[oacute]
+3skr[uacute]
+4sks
+sk3uri
+sk3ust
+2skv
+1sky
+3sk[yacute]
+1sk[aeligature]
+sla2
+sla3f
+s4lam
+slands5
+3s4l[eacute]
+sl2is
+s1l[iacute]
+s4l[iacute][eth]
+s3lof
+s3lok
+1sl[oacute]
+slu3s
+1slys
+s3l[aeligature]k
+s1m2
+4sma
+sm[aacute]1s
+sm[aacute]5v
+4sme
+s4mek
+s2mi
+1sm[iacute]
+smj4
+4sm[odiaeresis]
+s2ne
+3snei[eth]
+5sner
+s3nes
+3sneyd
+sn4i[eth]
+sn2o
+1sn[uacute]
+4sn[uacute]m
+s4n[yacute]
+sn[aeligature][eth]5
+1so
+4sod
+3son
+2sor
+s5or[eth]i
+1s[oacute]4
+s4[oacute]l
+s[oacute]l3e
+s[oacute]l3s
+2s[oacute]m
+s5[oacute]mag
+4s[oacute]s
+1sp2
+sp[iacute]t3
+spj4
+4spl
+4spra
+2spr[oacute]
+s5pund
+sr2an
+s5rau
+s1r[aacute]
+s1re
+s1r[eacute]
+s1r[iacute]
+s5ro
+s5r[aeligature]
+s3r[odiaeresis]
+s3s4[aacute]
+ss3er
+ss5[iacute]
+s1s4k4
+ssl2
+ssm4
+ss5or
+s1st
+s4stir
+s1sv
+s2t
+2st.
+s4ta
+2sta.
+4stal
+4stap
+5starfi
+5starfs
+4sta[aeligature]
+1ste
+3stef
+3stein
+5stekk
+4stet
+1st[eacute]
+st4he
+4sti.
+1stig
+st4isl
+3st[iacute]g
+2st[iacute]m
+4st[iacute]u
+1stj4
+4stj[oacute]n
+5stj[oacute]r
+5stj[odiaeresis]r
+4stl
+st3le
+1sto
+3stof
+1st[oacute]
+4st[oacute]n
+3st[oacute]r
+st2r
+str5al
+5stranda
+5strang
+5straum
+5str[aacute].
+1stre
+3str[iacute]
+4str[uacute]
+s3try
+5str[odiaeresis]n
+st5t
+2s4tu
+3stund
+1st2[uacute]
+4stv
+3st[yacute]
+1st[aeligature]
+2st[aeligature]k
+1s4t[odiaeresis]
+3st[odiaeresis][eth]
+4st[odiaeresis]l
+5st[odiaeresis]ng
+s1u
+su3f4
+5sum3a
+s2ung
+s5upp
+s5ura
+sust4i
+s[uacute]4
+s[uacute]ln4
+s5[uacute]n
+s5[uacute]rs
+s[uacute]t5
+sv4
+4svag
+4sval
+s3vat
+s5ve[eth]
+s4vef
+s2vei
+s3veik
+3svein
+5svep
+4svex
+s4vi[eth]i
+5svi[eth]i.
+s4vik
+svik3u
+s5vin
+s1vo
+s2v[aeligature]
+1sv[aeligature][eth]
+1sy
+2s3yfi
+3syn
+4s3yr
+3s4[yacute]
+s1[thorn]
+1s[aeligature]
+4s[aeligature][eth]
+s[aeligature]f4
+s[aeligature]5fa
+3s[aeligature]j
+3s[aeligature]l
+4s[aeligature]s
+1s[odiaeresis]
+3s[odiaeresis]g
+s[odiaeresis]gu5s
+2s3[odiaeresis]ld
+3s[odiaeresis]m
+2s3[odiaeresis]r
+t2a[eth]
+ta2fr
+1taka
+5takend
+t4al.
+tala4m
+4tam
+ta1ma
+t5amt
+ta4n[aacute]
+3tang
+4tar
+t4ar4a[eth]
+tar5is5
+tark4
+tarp4
+tar5s[aacute]
+tar[aeligature]v4
+t1as
+t4as.
+ta5sl
+tat4
+ta4v[iacute]
+t4[aacute]4
+5t[aacute]kn
+4t[aacute]nd
+t1b
+t1d
+4teg[iacute]
+5tegu
+tei4
+tein5g
+t1eis
+1tek
+3tekj
+tekkj5
+t1end
+ten5[oacute]
+4tepl
+t3ett
+2tey
+t[eacute]4l
+t3f2
+tfirr4
+t1g
+t1h
+th5ers
+t1i
+ti4an
+ti5kis
+tild4
+4tin
+tirk4
+t4ir[aeligature]
+tist4
+t5ist.
+ti3sta
+tistil4
+t2isv
+1tit
+1t[iacute]
+4t[iacute].
+4t[iacute]a
+3t[iacute][eth]
+t[iacute]4l
+3t[iacute]m
+4t[iacute]n
+4t[iacute]t
+t[iacute]v3
+t4j[odiaeresis]
+t1k
+tk4a
+t4k2i
+tlaf4
+t3lag
+t4lag.
+tl2an
+tl5ann
+t1l[aacute]
+tl2i
+tlur4
+t1l[aeligature]
+2t3m4
+tn2s
+tnsk4
+tnskr4
+to4
+1tog
+t3on
+3torg
+5toru
+1t[oacute]m
+t[oacute]m3a
+t[oacute]m5as
+5t[oacute]nl
+t[oacute]r1
+t[oacute]r5au
+t[oacute]ri3s
+t1[oacute]t
+t3p
+tra2b
+5tra[eth]ari
+tr3al[iacute]
+tr2an
+tr3ann
+tr5ar
+3traus
+t4rey
+1tr[eacute]
+tr4is
+t5risi
+t5r[iacute]ka
+3trj
+t5r[oacute]f
+tr3[oacute]tt
+tr3ug
+tr3una
+tr5uni
+1t4r[uacute]
+1try
+t5ry[eth]
+t3r[aeligature]n
+3tr[odiaeresis][eth]
+4ts
+t1sa
+ts4inn
+t5s[iacute]
+tsj4
+t1sk4
+ts1s
+t1st4
+ts4u
+t2sy
+tt3a[eth]
+ttak4i
+ttar5f
+tt5[aacute]
+tte5r[iacute]
+tt5ern
+t4t[iacute]
+tt5j
+tt1l
+tt1or
+tt3r[aeligature]
+tt3ug
+tt4ugl
+ttv4
+t1t[aeligature]
+t1u
+4tu.
+t4u[eth]i
+tugl4
+tuk4
+tu3l4i[eth]
+tum2
+tu5min
+t2ung
+3t4ungl
+tup4
+t3ur3e
+tur3k
+t5urs
+t4usa
+t4usu
+tutr4
+t[uacute]d3
+t3[uacute][eth]
+t[uacute]4l
+1t[uacute]n
+t[uacute]n4a
+t1[uacute]r
+t[uacute]3sk
+t1v
+5tveggj
+t5ver
+5t[yacute]s
+t1[thorn]
+3t[aeligature]k
+1t[odiaeresis]k
+1t[odiaeresis]l
+t5[odiaeresis]ls
+2u1a
+u3af
+u5au
+2u1[aacute]4
+u[aacute][aeligature]tl4
+4u1b4
+4uc
+4ud4
+u1da
+u5d[aacute]
+u3de
+u3d[oacute]
+u3dr
+2u[eth]a
+u[eth]4are
+u[eth]3k4
+2u[eth]l
+u[eth]m4
+2u[eth]4n
+2u[eth]r
+u[eth]5ris
+u[eth]4se
+u[eth]3sv
+u[eth]5s[aeligature]
+4u[eth]ul
+2u5e
+4u[eacute]
+4uf
+uf5[aacute]
+ufd4
+u5fit
+u3fj
+u1fr
+u3ful
+u5f[uacute]
+2ug
+4ugal
+4ugat
+4uge
+4ugil
+4u1gj
+4ugla
+ug1lj
+4uglu
+ug4n
+4ug[oacute]
+u5gran
+4ugre
+4ugrj
+4ugr[oacute]
+ug3r[aeligature]
+ug3ta
+4ug[odiaeresis]
+4u1h
+4ui
+u5i[eth]
+4u[iacute]4
+2uj
+2uk
+ukak4
+uk4as
+u1ke
+u5kinnin
+ukku3s
+u5k[oacute]
+u3kv
+2ul
+3ul.
+4u1lag
+ul3ar
+3ulb
+4ule
+u5lind
+ul4is
+u1l[iacute]
+ul3k2
+ul4la
+4ulln
+ullt4
+4u3lo
+u3l[oacute]
+ul5sv
+ult4i
+ul3us
+ul5v4
+u3l[aeligature]
+4u1l[odiaeresis]
+3um.
+2uma
+umak4
+u1man
+um4aran
+2um[aacute]
+um[aacute]l4ar
+um4ba
+um5b[aeligature]
+um4b[odiaeresis]
+2umd
+2ume
+um3ein
+4umi
+umj4
+um4ki
+4uml
+umm4a
+4u5mo
+2um[oacute]
+4ump
+2umr
+ums4
+um3sl
+3umst.
+um1t4
+4umu
+um5unn
+4um[uacute]
+2umy
+2um[yacute]
+2um[aeligature]
+2um[odiaeresis]
+un3ar1
+unar5a
+un2as
+4unat
+2u1nau
+2un[aacute]
+2und
+4une
+4unk
+2unn[aacute]
+4unns
+2unnu
+unn5ug
+4uno
+4un[oacute]
+uns4an
+4unt
+1unu
+4unur
+4un[aeligature]
+4un[odiaeresis]
+2u3o
+uol4
+4u[oacute]
+2up
+upp1
+upp5a
+uppal5
+upp4i
+3ur.
+2ura
+ura4f
+ur5a4m
+ur2an
+ur5anna
+2ur[aacute]
+ur[eth]a5r[aacute]
+2ure
+u1rek
+ur3ey
+4u1r[eacute]
+urf4a
+ur3fl
+urg4e
+ur3gj
+ur5in
+4urit
+4ur[iacute]
+u3r[iacute]k
+ur3j4
+urk4a
+ur1m
+ur3n[iacute]
+4uro
+4ur[oacute]
+ur1sk4
+ur3sna
+ur4sta
+ur4sv[odiaeresis]
+ur5til
+urt4ir
+ur1u
+ur4unn
+4urus
+ur3v4
+ur4vis
+4uryk
+4ur[yacute]
+2ur[aeligature]
+4ur[odiaeresis]
+2usa
+u3sal
+4us4[aacute]
+2use
+4us[iacute]
+2usj
+4u1sk
+4usl
+2u3s4m
+2usn
+4uso
+4us[oacute]
+4usp
+u5starf
+4ust[aacute]
+4uste
+2ust[eacute]
+2usti
+2ust[iacute]
+4usto
+4ust[oacute]
+4ustr
+3ustu.
+2ust[uacute]
+4usty
+4ust[yacute]
+4ust[aeligature]
+4ust[odiaeresis]
+u5sund
+4u3sv
+4usy
+2us[yacute]
+2us[odiaeresis]
+2ut
+ut3a[eth]
+ut2as
+u3te
+u5til
+u3t[oacute]
+ut4st[oacute]
+ut2[uacute]
+u1t[aeligature]
+2u3u
+4u5[uacute]
+4u3v
+2uy
+u3yf
+2u1[thorn]
+4u[aeligature]
+2u5[odiaeresis]
+[uacute]1a
+[uacute]al4
+[uacute]3arf
+[uacute]b3an
+[uacute]bli3
+[uacute][eth]3ar
+[uacute][eth]5g
+[uacute]3e
+[uacute]f5ar
+[uacute]fl2
+[uacute]f5li
+[uacute]f5ly
+[uacute]fs4[aacute]
+[uacute]5gala
+[uacute]g[oacute]3
+[uacute]4g[aeligature]
+4[uacute]1i
+[uacute]k1l
+[uacute]kr1u
+[uacute]k4s
+[uacute]l5er
+5[uacute]l4f
+[uacute]lf5al
+[uacute]l4[iacute]3
+[uacute]l[iacute]p4
+[uacute]3lo
+4[uacute]2m
+[uacute]m4r
+[uacute]m4si
+[uacute]4n
+[uacute]nd4ug
+[uacute]n4g[odiaeresis]
+[uacute]pl5i
+[uacute]r5ef
+[uacute]r[iacute]t4
+[uacute]r5sl
+[uacute]r1t
+[uacute]r3un
+[uacute]r5v
+[uacute]3r[aeligature]
+2[uacute]s
+[uacute]4sa
+[uacute]s3ei
+[uacute]s3[iacute]
+[uacute]s4sti
+[uacute]s4sv
+[uacute]s1v
+[uacute]t3e
+[uacute]t2he
+[uacute]ti5f
+[uacute]t2is
+[uacute]tj4
+[uacute]t1l2
+[uacute]t1r
+4[uacute]1u
+[uacute]1v
+[uacute]4va
+[uacute]5[thorn]
+v2a2
+va[eth]r5
+va5fo
+va5h
+5vallag
+va4n
+var4ma
+varps3
+var5[uacute]
+var4v
+v3ast
+va4t
+3vax
+ve[eth]5l
+ve3fe
+1veg
+v2ei
+3vei[eth]
+vein4as
+5veis
+4velg
+2vep
+v4er
+1ver[eth]
+ver3gj
+3verk
+ver2s
+v[eacute]2
+v5[eacute]s
+v3[eacute]t5
+2v3h
+v2i
+2vi.
+v4i[eth]
+5vi[eth]ar
+vi[eth]3l
+vil4i
+vi3li[eth]
+3viln
+vi4lo
+vin3gj
+4vip
+3virk
+visk5un
+3viss
+vis4v
+5vita
+vitk5
+vit2n
+4viv
+4v[iacute]b
+2v[iacute][eth]
+5v[iacute]k
+3v[iacute]si
+v[iacute]sl3a
+v[iacute]1v
+2vn
+vo3k
+vol4
+vork4
+vor4r
+4vr1
+4vs
+2vu
+v1u[eth]
+v1un
+5v[aeligature]g
+wa4
+win4s4
+x5ar
+x2as
+x3e
+x3f
+x5i
+xis4
+x[iacute]3
+x[iacute]k4
+x5[iacute]u
+xt5a[eth]
+x1u4
+y5ba
+y[eth]2s
+yf5a
+yf1i
+yfj5a[eth]
+yft4is
+y1i
+yj3ar
+yj5[oacute]
+yk5e
+yk3i
+yk3su
+yk3u
+yk3v
+ylf5i
+ylgn4
+yll5a
+yl4v
+ym3a
+ymp5[iacute]
+y4n
+ynj5ar
+ynj3[oacute]
+yn4k
+yn4t
+yn5u
+yp2us
+yr5e
+yr1i
+yr3il
+yrir3
+yrj3
+yrkv3a
+yr2l
+yr2s
+yr1u
+y2s
+ysj3
+ys2s
+yst3ug
+yt4h
+ytil4
+yt4k
+y3v
+[yacute]5a
+[yacute]af5
+[yacute]5[aacute]
+[yacute][eth]2s
+[yacute]fl4
+[yacute]3flu
+[yacute]g4r
+[yacute]g4u[eth]
+[yacute]1i
+[yacute]ja5f4
+[yacute]m4a
+[yacute]m4k
+[yacute]pru4
+[yacute]p2s
+[yacute]rf4
+[yacute]ri3m
+[yacute]ri5p4
+[yacute]r3l
+[yacute]4si
+[yacute]sig4
+[yacute]s4l
+[yacute]s4m
+[yacute]3st[aacute]
+[yacute]5u
+[yacute]5[uacute]
+[yacute]3v
+[yacute]5y
+z[oacute]4
+[thorn]2a
+[thorn]am4
+[thorn]arf5a
+[thorn]ar4m
+4[thorn]b
+[thorn]2i
+[thorn]ist3i
+[thorn]j[oacute]4
+[thorn]ol5a
+[thorn]or3f4
+[thorn]or3g
+[thorn]orm4
+[thorn]1[oacute]l
+3[thorn][oacute]r
+[thorn][oacute]r5i
+[thorn]2r2
+[thorn]ra4
+[thorn]r[aacute]s4
+[thorn]ris4
+[thorn]r[iacute]l4
+[thorn]r[iacute]3t
+[thorn]ru4
+[thorn]um5a
+[thorn]umb3
+[thorn]ur2
+[thorn][uacute]s3
+[thorn]2v
+[thorn]ver5sk
+[aeligature]1b
+[aeligature][eth]n5
+[aeligature][eth]nis5
+[aeligature][eth]2s
+[aeligature][eth]4ug
+4[aeligature]f
+[aeligature]f1a
+[aeligature]4fi
+[aeligature]f3ust
+[aeligature]g5ist
+[aeligature]1i
+[aeligature]j3
+[aeligature]j4al
+[aeligature]jark4
+[aeligature]k1a
+[aeligature]k1li
+[aeligature]k3u
+[aeligature]2l
+[aeligature]l3an
+[aeligature]l3e
+[aeligature]l3us
+[aeligature]m3a
+[aeligature]m4al
+[aeligature]4mundu
+[aeligature]nak4
+[aeligature]n4k
+[aeligature]r1a
+[aeligature]r3e
+[aeligature]rg[odiaeresis]ng5
+[aeligature]rif4
+[aeligature]r3ist
+[aeligature]ri3sv
+[aeligature]r3l
+[aeligature]r4n
+[aeligature]r2s
+[aeligature]r5un
+[aeligature]r1us
+[aeligature]5r[uacute]
+[aeligature]s4is
+[aeligature]t5ise
+[aeligature]tl5i
+[aeligature]5u
+[aeligature]va5g
+[aeligature]5val
+[aeligature]v3ar
+[aeligature]v4ara
+[aeligature]3ve
+[aeligature]v3in
+[odiaeresis][eth]2
+[odiaeresis][eth]l3
+[odiaeresis][eth]m5
+[odiaeresis][eth]3un
+[odiaeresis][eth]v5an
+[odiaeresis][eth]v3ar
+[odiaeresis]1fa
+[odiaeresis]fl3[oacute]
+[odiaeresis]fn5
+[odiaeresis]fr3u
+[odiaeresis]f3u
+[odiaeresis]4g
+[odiaeresis]g3gj
+[odiaeresis]ggv3
+[odiaeresis]g1re
+[odiaeresis]g2us
+[odiaeresis]k5e
+[odiaeresis]k5r[aacute]
+[odiaeresis]k3st
+[odiaeresis]k3ul
+[odiaeresis]kv3a
+[odiaeresis]4l
+[odiaeresis]l1f4
+[odiaeresis]lk2
+[odiaeresis]lu5mi
+[odiaeresis]l5un
+[odiaeresis]l2v
+[odiaeresis]lv5an
+[odiaeresis]m4b
+[odiaeresis]m3u
+[odiaeresis]nd4l
+[odiaeresis]ng5sv
+[odiaeresis]ng4us
+[odiaeresis]ng4v
+[odiaeresis]ngv3a
+[odiaeresis]nk3
+[odiaeresis]nn4l
+[odiaeresis]n3ug
+[odiaeresis]n5un
+[odiaeresis]r1e
+[odiaeresis]r4ge
+[odiaeresis]r4lan
+[odiaeresis]rm5un
+[odiaeresis]r3[oacute]
+[odiaeresis]r3ug
+[odiaeresis]r1un
+[odiaeresis]r3und
+[odiaeresis]rus4
+[odiaeresis]r2v
+4[odiaeresis]rva
+[odiaeresis]rv5al
+[odiaeresis]rv5an
+[odiaeresis]rv5ar
+[odiaeresis]rv4i
+[odiaeresis]r1y
+[odiaeresis]r5[aeligature]
+[odiaeresis]4s
+[odiaeresis]sk3ul
+[odiaeresis]s3u
+[odiaeresis]t4s
+[odiaeresis]3tug
+[odiaeresis]t2v
+[odiaeresis]tv3a
+[odiaeresis]5u
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-it.hyp b/Master/texmf-dist/tex/context/patterns/lang-it.hyp
new file mode 100644
index 00000000000..a2d424778d6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-it.hyp
@@ -0,0 +1,38 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: ithyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='it'>
+% <sourcefile>ithyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Italian language</title>
+% <remarks>v4.8d</remarks>
+% <copyright>
+% <year>1998, 2001</year>
+% <owner>Claudio Beccari</owner>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+su-per-in-dut-to-re
+su-per-in-dut-to-ri
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-it.pat b/Master/texmf-dist/tex/context/patterns/lang-it.pat
new file mode 100644
index 00000000000..345be19501e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-it.pat
@@ -0,0 +1,377 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: ithyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='it'>
+% <sourcefile>ithyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Italian language</title>
+% <remarks>v4.8d</remarks>
+% <copyright>
+% <year>1998, 2001</year>
+% <owner>Claudio Beccari</owner>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macros, adaption for TeX 2</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a3p2n
+.anti1
+.anti3m2n
+.bio1
+.ca4p3s
+.circu2m1
+.contro1
+.di2s3cine
+.e2x1eu
+.fran2k3
+.free3
+.narco1
+.opto1
+.orto3p2
+.para1
+.poli3p2
+.pre1
+.p2s
+.re1i2scr
+.sha2re3
+.tran2s3c
+.tran2s3d
+.tran2s3l
+.tran2s3n
+.tran2s3p
+.tran2s3r
+.tran2s3t
+.su2b3lu
+.su2b3r
+.wa2g3n
+.wel2t1
+'2
+a1ia
+a1ie
+a1io
+a1iu
+a1uo
+a1ya
+2at.
+e1iu
+e2w
+o1ia
+o1ie
+o1io
+o1iu
+1b
+2bb
+2bc
+2bd
+2bf
+2bm
+2bn
+2bp
+2bs
+2bt
+2bv
+b2l
+b2r
+2b.
+2b'
+1c
+2cb
+2cc
+2cd
+2cf
+2ck
+2cm
+2cn
+2cq
+2cs
+2ct
+2cz
+2chh
+c2h
+2chb
+ch2r
+2chn
+c2l
+c2r
+2c.
+2c'
+.c2
+1d
+2db
+2dd
+2dg
+2dl
+2dm
+2dn
+2dp
+d2r
+2ds
+2dt
+2dv
+2dw
+2d.
+2d'
+.d2
+1f
+2fb
+2fg
+2ff
+2fn
+f2l
+f2r
+2fs
+2ft
+2f.
+2f'
+1g
+2gb
+2gd
+2gf
+2gg
+g2h
+g2l
+2gm
+g2n
+2gp
+g2r
+2gs
+2gt
+2gv
+2gw
+2gz
+2gh2t
+2g.
+2g'
+1h
+2hb
+2hd
+2hh
+hi3p2n
+h2l
+2hm
+2hn
+2hr
+2hv
+2h.
+2h'
+1j
+2j.
+2j'
+1k
+2kg
+2kf
+k2h
+2kk
+k2l
+2km
+k2r
+2ks
+2kt
+2k.
+2k'
+1l
+2lb
+2lc
+2ld
+2l3f2
+2lg
+l2h
+2lk
+2ll
+2lm
+2ln
+2lp
+2lq
+2lr
+2ls
+2lt
+2lv
+2lw
+2lz
+2l.
+2l'.
+2l''
+1m
+2mb
+2mc
+2mf
+2ml
+2mm
+2mn
+2mp
+2mq
+2mr
+2ms
+2mt
+2mv
+2mw
+2m.
+2m'
+1n
+2nb
+2nc
+2nd
+2nf
+2ng
+2nk
+2nl
+2nm
+2nn
+2np
+2nq
+2nr
+2ns
+n2s3fer
+2nt
+2nv
+2nz
+n2g3n
+2nheit
+2n.
+2n'
+1p
+2pd
+p2h
+p2l
+2pn
+3p2ne
+2pp
+p2r
+2ps
+3p2sic
+2pt
+2pz
+2p.
+2p'
+1q
+2qq
+2q.
+2q'
+1r
+2rb
+2rc
+2rd
+2rf
+r2h
+2rg
+2rk
+2rl
+2rm
+2rn
+2rp
+2rq
+2rr
+2rs
+2rt
+r2t2s3
+2rv
+2rx
+2rw
+2rz
+2r.
+2r'
+1s2
+2shm
+2s3s
+s4s3m
+2s3p2n
+2stb
+2stc
+2std
+2stf
+2stg
+2stm
+2stn
+2stp
+2sts
+2stt
+2stv
+2sz
+4s.
+4s'.
+4s''
+1t
+2tb
+2tc
+2td
+2tf
+2tg
+t2h
+t2l
+2tm
+2tn
+2tp
+t2r
+t2s
+3t2sch
+2tt
+t2t3s
+2tv
+2tw
+t2z
+2tzk
+tz2s
+2t.
+2t'.
+2t''
+1v
+2vc
+v2l
+v2r
+2vv
+2v.
+2v'.
+2v''
+1w
+w2h
+wa2r
+2w1y
+2w.
+2w'
+1x
+2xb
+2xc
+2xf
+2xh
+2xm
+2xp
+2xt
+2xw
+2x.
+2x'
+y1ou
+y1i
+1z
+2zb
+2zd
+2zl
+2zn
+2zp
+2zt
+2zs
+2zv
+2zz
+2z.
+2z'.
+2z''
+.z2
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-la.hyp b/Master/texmf-dist/tex/context/patterns/lang-la.hyp
new file mode 100644
index 00000000000..3a14c1d06dc
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-la.hyp
@@ -0,0 +1,35 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: lahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='la'>
+% <sourcefile>lahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Latin language</title>
+% <remarks>v3.0b</remarks>
+% <copyright>
+% <year>1999-2001</year>
+% <owner>Claudio Beccari</owner>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1998, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macro code in 'dehypht.tex'</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-la.pat b/Master/texmf-dist/tex/context/patterns/lang-la.pat
new file mode 100644
index 00000000000..35835d999b5
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-la.pat
@@ -0,0 +1,378 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: lahyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='la'>
+% <sourcefile>lahyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Latin language</title>
+% <remarks>v3.0b</remarks>
+% <copyright>
+% <year>1999-2001</year>
+% <owner>Claudio Beccari</owner>
+% </copyright>
+% <copyright>
+% <year>1993, 1994, 1998, 1999</year>
+% <owner>Bernd Raichle/DANTE e.V.</owner>
+% <comment>Macro code in 'dehypht.tex'</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+2'2
+.ab2s3
+.a2b3l
+.anti1
+.anti3m2n
+.ca4p3s
+.circu2m1
+.co2n1iun
+.di2s3cine
+.e2x1
+.o2b3
+.para1i
+.para1u
+.pre1i
+.pro1i
+.su2b3lu
+.su2b3r
+2s3que.
+2s3dem.
+3p2sic
+3p2neu
+[aeligature]e1
+[oeligature]e1
+[aeligature]1
+[oeligature]1
+a1ia
+a1ie
+a1io
+a1iu
+ae1a
+ae1o
+ae1u
+e1iu
+io1i
+o1ia
+o1ie
+o1io
+o1iu
+uo3u
+1b
+2bb
+2bd
+b2l
+2bm
+2bn
+b2r
+2bt
+2bs
+2b.
+1c
+2cc
+c2h2
+c2l
+2cm
+2cn
+2cq
+c2r
+2cs
+2ct
+2cz
+2c.
+1d
+2dd
+2dg
+2dm
+d2r
+2ds
+2dv
+2d.
+1f
+2ff
+f2l
+2fn
+f2r
+2ft
+2f.
+1g
+2gg
+2gd
+2gf
+g2l
+2gm
+g2n
+g2r
+2gs
+2gv
+2g.
+1h
+2hp
+2ht
+2h.
+1j
+1k
+2kk
+k2h2
+1l
+2lb
+2lc
+2ld
+2lf
+l3f2t
+2lg
+2lk
+2ll
+2lm
+2ln
+2lp
+2lq
+2lr
+2ls
+2lt
+2lv
+2l.
+1m
+2mm
+2mb
+2mp
+2ml
+2mn
+2mq
+2mr
+2mv
+2m.
+1n
+2nb
+2nc
+2nd
+2nf
+2ng
+2nl
+2nm
+2nn
+2np
+2nq
+2nr
+2ns
+n2s3m
+n2s3f
+2nt
+2nv
+2nx
+2n.
+1p
+p2h
+p2l
+2pn
+2pp
+p2r
+2ps
+2pt
+2pz
+2php
+2pht
+2p.
+1qu2
+1r
+2rb
+2rc
+2rd
+2rf
+2rg
+r2h
+2rl
+2rm
+2rn
+2rp
+2rq
+2rr
+2rs
+2rt
+2rv
+2rz
+2r.
+1s2
+2s3ph
+2s3s
+2stb
+2stc
+2std
+2stf
+2stg
+2st3l
+2stm
+2stn
+2stp
+2stq
+2sts
+2stt
+2stv
+2s.
+2st.
+1t
+2tb
+2tc
+2td
+2tf
+2tg
+t2h
+t2l
+t2r
+2tm
+2tn
+2tp
+2tq
+2tt
+2tv
+2t.
+1v
+v2l
+v2r
+2vv
+1x
+2xt
+2xx
+2x.
+1z
+2z.
+a1ua
+a1ue
+a1ui
+a1uo
+a1uu
+e1ua
+e1ue
+e1ui
+e1uo
+e1uu
+i1ua
+i1ue
+i1ui
+i1uo
+i1uu
+o1ua
+o1ue
+o1ui
+o1uo
+o1uu
+u1ua
+u1ue
+u1ui
+u1uo
+u1uu
+a2l1ua
+a2l1ue
+a2l1ui
+a2l1uo
+a2l1uu
+e2l1ua
+e2l1ue
+e2l1ui
+e2l1uo
+e2l1uu
+i2l1ua
+i2l1ue
+i2l1ui
+i2l1uo
+i2l1uu
+o2l1ua
+o2l1ue
+o2l1ui
+o2l1uo
+o2l1uu
+u2l1ua
+u2l1ue
+u2l1ui
+u2l1uo
+u2l1uu
+a2m1ua
+a2m1ue
+a2m1ui
+a2m1uo
+a2m1uu
+e2m1ua
+e2m1ue
+e2m1ui
+e2m1uo
+e2m1uu
+i2m1ua
+i2m1ue
+i2m1ui
+i2m1uo
+i2m1uu
+o2m1ua
+o2m1ue
+o2m1ui
+o2m1uo
+o2m1uu
+u2m1ua
+u2m1ue
+u2m1ui
+u2m1uo
+u2m1uu
+a2n1ua
+a2n1ue
+a2n1ui
+a2n1uo
+a2n1uu
+e2n1ua
+e2n1ue
+e2n1ui
+e2n1uo
+e2n1uu
+i2n1ua
+i2n1ue
+i2n1ui
+i2n1uo
+i2n1uu
+o2n1ua
+o2n1ue
+o2n1ui
+o2n1uo
+o2n1uu
+u2n1ua
+u2n1ue
+u2n1ui
+u2n1uo
+u2n1uu
+a2r1ua
+a2r1ue
+a2r1ui
+a2r1uo
+a2r1uu
+e2r1ua
+e2r1ue
+e2r1ui
+e2r1uo
+e2r1uu
+i2r1ua
+i2r1ue
+i2r1ui
+i2r1uo
+i2r1uu
+o2r1ua
+o2r1ue
+o2r1ui
+o2r1uo
+o2r1uu
+u2r1ua
+u2r1ue
+u2r1ui
+u2r1uo
+u2r1uu
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-nl.hyp b/Master/texmf-dist/tex/context/patterns/lang-nl.hyp
new file mode 100644
index 00000000000..9782158f1a1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-nl.hyp
@@ -0,0 +1,75 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: nehyph96.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='nl'>
+% <sourcefile>nehyph96.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Dutch language</title>
+% <copyright>
+% <year>1996</year>
+% <owner> Piet Tutelaers (P.T.H.Tutelaers@tue.nl)</owner>
+% <comment>8-bit hyphenation patterns for TeX based upon the new Dutch
+% spelling, officially since 1 August 1996. These patterns follow
+% the new hyphenation rules in the `Woordenlijst Nederlandse
+% Taal, SDU Uitgevers, Den Haag 1995' (the so called `Groene
+% Boekje') described in section 5.2 (Het afbreekteken)</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+aan-dachts-trek-ker
+aan-dachts-trek-kers
+acht-en-der
+acht-en-ders
+acht-en-der-tig
+acht-en-der-tig-ste
+be-heers-ta-ken
+be-scherm-en-gel
+be-scherm-en-ge-len
+be-stuurs-la-gen
+be-stuurs-ta-ken
+bij-stands-trek-ker
+bij-stands-trek-kers
+bui-ten-an-ten-ne
+bui-ten-an-ten-nes
+don-der-aal
+han-dels-taal
+her-e-nen
+ket-ting-ste-ken
+lands-taal
+meest-al
+mi-nis-ters-por-te-feuil-le
+mi-nis-ters-por-te-feuil-les
+ont-hoof-din-gen
+pa-ling-ste-ken
+rechts-taal
+schil-ders-ta-lent
+sou-ve-niertje
+sou-ve-niertjes
+spie-gel-ei
+ver-en-gels-te
+ver-hol-lands-te
+ver-in-lands-te
+ver-kinds-te
+ver-ne-der-lands-te
+ver-rechts-te
+ver-steeds-te
+wals-te
+wa-ter-staats-in-ge-ni-eur
+wa-ter-staats-in-ge-ni-eurs
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-nl.pat b/Master/texmf-dist/tex/context/patterns/lang-nl.pat
new file mode 100644
index 00000000000..3c5f81bfb5a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-nl.pat
@@ -0,0 +1,12759 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: nehyph96.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='nl'>
+% <sourcefile>nehyph96.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Dutch language</title>
+% <copyright>
+% <year>1996</year>
+% <owner> Piet Tutelaers (P.T.H.Tutelaers@tue.nl)</owner>
+% <comment>8-bit hyphenation patterns for TeX based upon the new Dutch
+% spelling, officially since 1 August 1996. These patterns follow
+% the new hyphenation rules in the `Woordenlijst Nederlandse
+% Taal, SDU Uitgevers, Den Haag 1995' (the so called `Groene
+% Boekje') described in section 5.2 (Het afbreekteken)</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a4
+.aan5
+.aarts5
+.aat5
+.ab5l
+.acht5end
+.ac5re
+.adi5
+.af3
+.af5l
+.af5s
+.aftu5re
+.al3ee
+.al3f
+.alk4
+.al5ko
+.alko5v
+.al5ma
+.al3om
+.al4st
+.ana3s
+.an3d2
+.an3en
+.an3gl
+.an5th
+.ar5d
+.ar5tr
+.as5h
+.as5l
+.as3t
+.as5tra
+.as3u
+.at4a
+.ave5n
+.b4
+.be3la
+.be5ra
+.be5ri
+.bos1
+.c4
+.coo5
+.co3ro
+.cus5
+.d4
+.daar5
+.da4gi
+.dag5r
+.da2k
+.dan2
+.debe4
+.de2k
+.dek5l
+.dek5s
+.den4k5r
+.de5od
+.de3ro
+.de5sta
+.di4a
+.die4p
+.di3o
+.doet3
+.do3v
+.du4w
+.e4
+.ede2
+.edel5a
+.ed3w
+.ee4n
+.eer5ste
+.eest3
+.eesto4
+.eet3
+.ei3l
+.ei5sc
+.ei3sp
+.ei5t
+.el4s5
+.en5s
+.en5th
+.ep4a
+.ere5s
+.er2f
+.erf3l
+.er3in
+.ert4
+.erts3
+.es3
+.es5c
+.es5pe
+.es5tr
+.eten4
+.et4h
+.ets5te.
+.eu3
+.eus5
+.[eacute]2
+.f4
+.fel4s
+.g4
+.gaat5
+.gang5s
+.gea5v
+.ge3l4a
+.ge5le
+.gelo5v
+.ge3n4a
+.gena5z
+.ge5ne
+.ge5no
+.ge3ra
+.ge5r4e
+.ge5r4o
+.gerst5a
+.ge3s
+.ge5sk
+.ge5ta
+.ge5tj
+.ge5to
+.gid4
+.go4m
+.goot3
+.h2
+.handels5
+.her5in
+.hits5t
+.ho4lo
+.houd5s
+.i4
+.ide5o
+.ij4s
+.ijs5l
+.ijs3p
+.ijs3t
+.ik3
+.in1
+.in5d4
+.in3g4
+.in5gr
+.ink2
+.in5kr
+.in5kw
+.in3s4
+.in5sl
+.in5st
+.in5ta
+.is5c
+.j4
+.jor5
+.k4
+.ka3d
+.ka5g
+.ka4taa
+.kerk5l
+.kerk5r
+.kerk5u
+.ker5sten
+.ke4s
+.koot5
+.ko5pe
+.kop5l
+.ko3v
+.kun2
+.l4
+.laat5ste
+.le4b5
+.leg3o
+.le4g3r
+.leid5st
+.len4s3
+.le5r4
+.le4s3
+.le5th
+.lin5d
+.lof5
+.loot3
+.lo4s1
+.lu3e
+.lui5t4j
+.lu4s
+.m4
+.ma5d
+.ma5[idiaeresis]
+.meel5d
+.me5la
+.me5ni
+.merk5l
+.me2s
+.me4st
+.met5ee
+.mij4n5i
+.moot3
+.mor5sten
+.mo4s
+.n4
+.naat5
+.na3d
+.na3n
+.na3s4
+.nee5s
+.ne2p
+.nep3a
+.ne4s
+.ne5te
+.ne4t3j
+.neu4t5j
+.nie4t5j
+.noot5
+.nos5t
+.no5v
+.o4
+.oe4r5
+.oe4s5
+.oeve4
+.ol3f
+.om1
+.omme3
+.on3a
+.on3d
+.onde4r
+.on1e
+.on5g
+.on3i
+.on5k
+.on1o
+.ono5v
+.on2t3
+.on4tee
+.on4ter
+.ont5s
+.ooi5tj
+.oot5jes
+.op5ee
+.opi5
+.op5l
+.op3r
+.op5s
+.org4
+.os5
+.ove4
+.p4
+.pee5tj
+.peri5
+.pers5te.
+.piet5j
+.pits5te.
+.poort5j
+.po4st
+.puit4
+.pui5tj
+.pu2t
+.r4
+.raads5le
+.ran4d
+.rand5a
+.re4men
+.ren4o
+.reno5v
+.re5o
+.rie4t3
+.rij5sp
+.ring5s4
+.roe5tj
+.ro4l
+.ro4st
+.ro4t3h
+.ro5v
+.s4
+.sap3
+.sa5v
+.sci3
+.see3
+.seks5te
+.se5re
+.set3
+.se5v
+.side3
+.ski3s4
+.sneu3
+.sno2
+.so2k3
+.song5
+.spoor5tj
+.st4
+.ste4m
+.t4
+.taart5j
+.tan4da
+.te4a
+.te4f
+.tek2
+.te3le
+.ten5ac
+.te3no
+.ten4t5j
+.te3ra
+.ter4p5a
+.ter5s
+.te4s
+.ti2n
+.tin3a
+.tin3e
+.toe5pr
+.to4lo
+.to4p
+.to5v
+.tri3s4
+.ts4
+.tsa3
+.tuit5j
+.ty2r
+.u4
+.ui2
+.ui5s
+.uit1
+.uit4je
+.uke5
+.ur4a
+.vaat5j
+.ven4t5j
+.ve4r3
+.ves5p
+.vet3j
+.vie4r
+.vol5s
+.w4
+.wals5te.
+.wee4ko
+.wee4t3
+.we4l3
+.wen4s5t
+.west5r
+.win4s
+.xe3
+.y2
+.z4
+.zes5
+.zit5
+.zooi5
+4a.
+a4a4
+4aad
+aad1a
+aad1o
+aad1r
+aad5sap
+aaf5a
+4aag
+aag1a
+aag3e
+aag3o
+aag5r
+aags4
+aag3sa
+aag5so
+aag3sp
+aai3l
+aak1a
+aak3e2
+aak1o
+aak5r
+aak3sp
+aal5a2
+aal1e
+aal5f4o
+aalfo5l
+aal1i
+aal5k
+aal5m
+aal1o2
+aal3sl
+aal5so
+aal5spe
+aal5ste
+aal1u
+aam1a
+aam3o
+aam4sta
+aam4ste
+aan1a
+5aandee
+aand4r
+aan1e2
+aan5g
+aan5i
+3aanj
+aan5k4
+3aann
+aan3o
+aan3sp
+aans4po
+aant4
+3aanta
+3aanv
+aap1a
+aap3i
+aap3o2
+aap3r
+aar3a
+aar4d5as
+aar3e4
+aar1i
+4aarn
+aar1o2
+aar5spel
+aar4t5on
+aarts5l
+aar3u
+aas3e
+aas3i
+4aast
+aas5tr
+aat3a
+aat5e
+aat3h
+aat3i
+aat1o
+aat5r
+abak4s5
+aba4l
+abat4s
+ab5eun
+ab3ijz
+a2bon
+aboot4j
+abot4j
+2abr
+ab3ru
+4ac.
+a3cal
+a3car
+4ace
+ace3st
+4ach.
+a3cha
+2a1che
+4a1chi
+ach3l
+a1cho
+a3chr
+4achs
+ach5tec
+a1chu
+achuut5
+4ack
+ac3kl
+2acl
+2a3co
+2acr
+ac5res
+4acta
+4acu
+4ad.
+a5da.
+ad3ac
+ada2d
+ada4l
+ada2r3
+adas5
+2add
+a5de.
+ad3ei
+ade5re
+a5des
+a3det
+a5deta
+ad3e4te
+2adh
+4ad4i
+adi3al
+adi4oc
+adi4od
+4adk
+2adl
+4ado.
+a3doo
+2adp
+ad3rei
+a3d4ri
+ad3rol
+2ads
+ad5se
+ad3so
+ad1s4t
+ad5sta
+ad3ui
+ad3w
+2ady
+4ae
+aege4
+ae5k4
+a3e2p
+ae3r
+ae2s3
+ae4s5t
+a3eu
+a2[ediaeresis]
+a4[ediaeresis]r
+4afa
+af3aa
+a2f3ac
+af4as
+af4at
+afd4i
+afd2r
+af5d4w
+4afe
+afee4
+4afi
+af3l
+4afo
+a5fo.
+a2foe
+afon4d
+af3op
+af5org
+af1r
+af3s4
+afs2c
+af5se
+3afsl
+3afsp
+aft4a
+af5tr
+af3ui
+2afy
+4ag.
+ag1a2d
+ag3af
+ag3a2m
+ag3ar
+ag3di
+a5ge.
+agee5t
+4a5gen.
+ager4s
+ag3ex
+a4gil
+ag3ind
+a4g3ins
+agi5ot
+4ag1l
+ag3of
+a4g3or
+ag4o3v
+a2gr
+ag4ra
+ag5rap
+ag3ru
+ag3sl
+ag4sle
+ag5slu
+ags2p
+ag3spe
+ag3spi
+ag1st
+ag3sta
+ag5str
+2agt
+agu5a
+a2g3ui
+ag3u4r
+a2g3uu
+2ah
+4a1ha
+4a5he
+ahe5ri
+a1hi
+ah3l
+a3ho
+ah5r
+ah5t2
+a3hu
+a3hy
+ai5a2
+ai4dr
+ai1e
+a1ij
+ai5k
+ail3m
+ai2lo
+a2in
+aio4
+ai3ov
+ai3s4
+ai5sc
+ai4s5l
+ai5sn
+ai1so
+ai1st
+ai5tj
+ai3tr
+aiu4
+a[idiaeresis]n4
+a[idiaeresis]ns5
+a[idiaeresis]s3o4
+2a1j
+ajaars5
+aka2
+ak3af
+ak3ag
+a4k3ar
+a4k3ed
+ak3emi
+ake2t
+ak3id
+ak3ink
+ak5is
+1akko
+4a2k3l
+a2k3n
+ak5ne
+ak4ni
+a3kof
+ak3on
+ak3o2p
+a2kr
+ak5ru
+2aks
+ak4so
+ak5spe
+ak1st
+ak5to
+ak5t4w
+a2k3u4
+ak1w
+ak3wi
+a1la
+a4l3ach
+al3adr
+a3l4ag
+a3lal
+a5lapr
+al3art
+4ald
+a1le
+a5le.
+al3eff
+2aleg
+a2l3el
+ale5ro
+ale5ste
+ale4tj
+a3l[egrave]
+al4fen
+alf3l
+al5fon
+alfu4
+al2gl
+a3lie
+al3int
+alk5ei
+al5kle
+alk3s
+al4kui
+al5le
+al4mac
+al5me
+a1lo
+a4l3ol
+alo2n
+al3ou
+a4l3o4v
+2alp
+al3s4ag
+al3san
+al3scr
+als5j
+al2sl
+als5li
+als5m
+al4sn
+al4s3oo
+al4stem
+al5sten
+als5tou
+altaar5
+al3tha
+al4t3ro
+alt4st
+a1lu
+a2lui
+al3uit
+al3u4r
+alu2s5
+4am.
+a4m3ac
+am3adr
+ama4f
+4amag
+am3art
+5ambt
+ament4j
+ame4ran
+ame5tj
+a2meu
+am4i
+4amm
+am3oli
+a2m3o4v
+3amp[egrave]
+am2pl
+am4ple
+am4sm
+am4s3o
+am4spr
+ams5te.
+a2m3ui
+a3nad
+an3alg
+an4a3n
+an3arc
+2anc
+4anda
+anda4d
+and5ank
+an4d3e4d
+an4dex
+2andj
+an4dom
+an5d4ri
+and5roo
+ands5lo
+an4d3ul
+a4nem
+a3nen
+anen3i
+4aner
+an3est
+ane3us
+4ang.
+an4gan
+anga5p
+ange5st
+ang5le
+an2gr
+ang5sna
+angs4te
+aniet3
+anij4
+3anima
+an5ion
+a4n5isl
+ani5t
+4aniv
+4ank.
+an4kaa
+anka4n
+an4k3as
+an2k3j
+an4klu
+ank3of
+an2k3r
+a1no
+an3och
+a4n3oor
+an3ork
+ano3s
+ano3t4
+a4n3ou
+ano5v
+4ans
+an3san
+ans3cr
+an4seg
+an4serv
+an4sid
+an2so4
+ans5or
+ans3pi
+ans5pir
+an1st
+an4s5te.
+an5stru
+an4tac
+ante4n
+an3th
+2anti
+ant5sl
+ant3w
+4a1nu
+a5nuf
+an3ui
+an3ur
+an3uu
+anze5s
+2a1o
+ao4g
+ao2l
+a4om
+a2op2
+aor5t
+a3os
+aos3p
+aos5t
+4ap.
+a1pa
+a4pak
+a4pas
+ap3as.
+ap3ass
+a1pe
+ap5eten
+4a1pi
+apij4t5j
+ap3ijz
+ap1j
+2apl
+ap3le
+ap3li
+ap3lo
+a1plu
+apon5
+ap3oo
+apo3p
+apo5sta
+ap3o4v
+1appa
+4appen
+4apr
+ap3ra
+a3pre
+a4prem
+a5p4ris
+ap3ru
+ap2sa
+ap4si
+ap2s3l
+ap3sn
+ap4ste.
+2apt
+ap3tj
+2apu
+a2q
+4ar.
+a1ra
+araat5j
+a4r3app
+ara3s4
+ar2da
+ard3ac
+ard3ak
+ardo4
+ar4d3om
+ar4d3op
+ar4d3ov
+ar2d1r
+ar4dra
+ard3re
+ar4du
+ard3w
+a1re
+5a2rea
+a3reg
+a3rem
+ar4en
+are4no
+are3sp
+a3rev
+ar3gh
+ar2gl
+a1ri
+arie4tj
+arij3s
+ar3ins
+ark2
+ark3ac
+ar3k4l
+ar4map
+arm3u
+a1ro
+a2r3ob
+ar3oge
+a3rok
+aro4ko
+ar3oog
+a2r1o2p
+a3rot
+arpi4
+ar2s
+ar5sch
+ar3scr
+ars2e
+ar5see
+ar3si
+ars3l
+ar4sla
+ars5m
+ar3sni
+ar4so
+ar4sp
+ar5spo
+ars3ta
+ars5tal
+ar4s5tek
+ar4str
+ar4su
+art4aa
+ar4t3ak
+ar4tan
+art5ank
+ar4tap
+ar3tar
+4arte
+ar4tei
+ar2th
+ar5tij
+4ar4tj
+art5jesv
+4arto
+ar5tof
+art5o4ge
+art5oog
+ar4t3o4v
+ar2t3r
+ar4tro
+art5ru
+art4sl
+art5ste
+a3ru
+ar3ui
+4arw
+arwe3s
+a1ry
+4asa
+as3ad
+as4ag
+as3ak
+as1ap
+a2sc
+as5ce
+2ase
+a4sec
+a4s3eg
+aser5a
+ase5tj
+aseve4
+as5ha
+asis1
+a4sj
+as5ja
+as3ji
+as3k
+as5ka
+as5ki
+as3l
+as4lu
+as3m
+as5mi
+as3n
+as4ne
+as4ni
+4aso
+as3ob
+aso2l
+aso4r
+as1p
+as3pl
+a4s5q
+as5sa
+4assm
+3assu
+a2st
+4as3ta
+a4sta.
+as5tag
+as4tas
+as4tat
+as3te
+a3stek
+a3stem
+as5ten
+as3t[egrave]
+asting5sp
+as1to
+as3tob
+ast3op
+4astr
+ast5rem
+as5tro.
+as4tu
+a1t
+ataart5j
+at1ac
+at3ade
+at3af.
+at3ank
+ata3s
+2atek
+a5tell
+ate2n
+ate3no
+aten4t5r
+ater5ad
+ater5sl
+at4eu
+2atg
+at3hu
+ati5ni
+a2t3j
+at4je
+atjes5
+at5jesb
+at5jesh
+at5jesm
+at5jesp
+2atm
+2atn
+a2too
+at3oog
+atos5f
+ato3st
+at3rac
+at3rei
+at3rib
+at4roe
+at5ru
+at4s3a2
+at4s3ec
+atsi4
+at4s3id
+at2s3l
+at4slo
+ats5m
+ats3n
+at4sne
+ats3pr
+at2st
+at4staa
+at4s5tak
+at4ste.
+at5sten
+at5stij
+ats5tol
+ats5top.
+ats5trek
+at4t3u4
+a2t3ui
+at3w
+aua4
+au3ch
+au3co
+au5de
+aud4j
+1aug
+au3na
+aun3t
+aup2
+aur4
+au5re
+aure3u
+4aus
+au3so
+au4s5p
+au3sto
+au3t4
+4aut.
+1auto
+auto3p
+2auts3
+auw3a
+4auz
+a4[udiaeresis]
+avast4
+ave3c
+avee4
+ave4n3i
+aven5sp
+aver3a
+ave3re
+ave3r4u
+4avi
+a2vo
+1a4von
+a5voo
+a5vor
+4avy
+2a1w
+axis4
+ay2a
+4azif
+[adiaeresis]3h
+[adiaeresis]mme3
+[adiaeresis]3r
+1b
+4b.
+3ba
+baar5ste
+baar5tj
+ba4da
+bad3ar
+ba4d3r
+bad3s
+ba3g4h
+ba3gl
+5b2ak
+ba4k3o4
+bak4sp
+ba3lan
+ba4lar
+bal3dw
+bale4
+bal3ev
+ba3li[ediaeresis]
+bal4kl
+ba3lo
+bals4
+bal3sf
+ba4me
+ba5n2a
+ban4k3a
+ban4kl
+ban4k3o
+ban4kr
+bank3w
+ba3sa
+ba4st
+ba2tr
+ba3tro
+4bb
+bbe4l5ag
+bbe4l5ee
+bbe2n
+bben3a
+4b1c
+4b1d4
+b5de
+bdi5a
+3b4e
+be1a
+be3as
+be2au
+be3ch
+be5dwe
+be5dwi
+be5dwo
+bee4
+beet1
+be5g
+beie4
+bei3s
+bei5tj
+be5ki
+be3k4l
+be1kw
+be3lar
+be5l4as
+bel5dr
+be3le
+be4l3ec
+be4lex
+bel5f
+be3li
+be4l5int
+bel3k
+bel4o
+be3lo5v
+bel3sc
+bel3sp
+belt4
+bemen4s
+be3nep
+be5n4o
+be5ot
+be1ra
+bere5s4
+ber4g5af
+ber4g5et
+ber4gl
+ber4gr
+ber4i
+be1r4o
+bero5v
+be3ru
+be3ry
+be1s4
+bes5ac
+be4sh
+be4sje
+be3so
+be5sp
+bes5s
+bes5te.
+bes5ten.
+be5stie
+bet2
+be3t4h
+be5ton
+bet5ren
+be3tw
+be5twi
+be3und
+beur4s
+4b3f
+2b1g
+4b3h
+3b2i
+bid3s
+bi2du
+bie4li
+bi4en
+bie4t3j
+bij5d
+bij3f
+bij3g4
+bij5k4
+bij1p
+bij1s2
+bik4a
+5bil
+bi3lo
+bil3s2
+bin4dr
+bin4st
+bin4t3j
+bi5ob
+bi3ok
+bi5om
+bi3oso
+bi5ow
+bir3
+bi4st
+bis5troo
+bi1tr
+bit4se
+bit4s3p
+4b1j
+4b1k
+3b4l
+blad5ij
+2b5lap
+b5led
+bles3
+ble5spe
+ble2t3
+b5lid
+blijs4
+blij5ste
+bli2k
+4b5loi
+blok5l
+bloot5j
+blu2s
+2b1m
+4b1n
+b4o
+bo4d3ec
+body3
+boe4g3a
+boe4kn
+boe4ko
+boes4
+boe3st
+boet5st
+bo3f4l
+bo2k
+bok3an
+bokje5
+bok4st
+bolk4
+bo2m3a4
+bo2m3o
+bo5na
+bond2
+bond4s5
+3bone
+bo3no
+bon4t3j
+bon4t5o4
+boot3j
+boots5te.
+bo3p2
+bor4sta
+borst5o
+bor4st5r
+bo4s
+bos3a
+bo5sco
+bo5si
+bo5so
+bos5p
+bos5to
+bot3j
+bo4to
+bot3r
+bot4sp
+bot4st
+bo2tu
+bou5ta
+bouw5s
+bo3v
+bove4
+4b1p
+3br4
+braad5s
+bran4da
+bra5str
+brei5s4
+brie4t
+brie5tje.
+bri4l
+bro2n
+bron3o4
+bru2l
+4b1s4
+b2s5a
+b5sc
+b3si
+bsi3d
+bs5je
+b2s5la
+b2s5m
+bs5s
+b4stij
+4bt4
+b3ta
+b1tr
+bts5
+3b4u
+buit4j
+bul4k
+bu4lu
+bune5t
+b5urb
+bu5ri
+bus5c
+bus3o
+but4a
+but3j
+bu2to
+but4s
+buts5te
+buur4tj
+4bv
+2b3w
+by3
+4bz
+4c.
+1ca
+3ca.
+ca3b
+ca1ch
+5cada
+ca3do
+ca3dr
+cae3
+ca3g2
+cal4l3
+ca3lo
+came5r
+ca3na
+cant4
+ca2of
+ca1pr
+ca4pra
+ca5pri
+ca3ra
+car4u
+ca5se
+ca3s2p
+cas3t
+cas5tr
+ca3ta
+cate4n
+ca3t4h
+cau3
+cau4st
+ca3v
+2cb
+4c1c
+cca3
+cces5
+c4d
+c5do
+1ce
+3ced
+cee4
+3ceel
+3cel
+cel3d
+celes5
+ce5li
+cel5k
+ce4l3o
+2ce3n4a
+2cene
+ce3no
+5cent
+cen4t3j
+ceo4
+ce3ra
+cer2n
+ce5ro
+cer4t3r
+ce2s
+ce3s2a
+ce5sc
+ce3s2h
+ce3sta
+ce3s4ti
+cesu5r
+ce3ta
+ce4t3j
+ceto4
+cet3og
+cet3oo
+1c[eacute]
+c3g
+4ch.
+3cha[idiaeresis]
+5chao
+3chas
+1chau
+5chauf
+2chc
+1chef
+5chef.
+5chefs
+5chemi
+5cheq
+che5ri
+che3ru
+5ches
+che3us
+1ch[eacute]
+5chir
+4chn
+2chp
+5chromo
+4cht
+4chw
+1chy
+3ci
+ci5ab
+ci3am
+cie3k
+cier4s5
+ci1eu
+5cij
+5cil
+ci5le
+cil3m
+4cind
+ci3o
+ci5om
+5cir
+ci3t2
+ci5ta
+c3j
+c2k3a
+c4k3ed
+ck3ef
+cke5re
+c5k4et
+ck3id
+c2k3l
+ck4le
+c2k3n
+c2k3o4
+c4k3r
+ck5se
+ck3so
+ck5st
+c3ky
+1c4l
+cla2n
+cle3u
+5clu
+2c1n
+1co
+co3ad
+co3d
+co4i
+coin5
+co3k4
+co3la
+5com
+5cond
+con1g
+2co1no
+5cons
+3con5t4
+2coo
+2co1p2
+3copa
+4copi
+cor4dr
+co4rel
+co5ri
+cor2o
+5corr
+cors4
+co3ru
+co5sc
+co5se
+co5sp
+co3th
+co3tr
+5coun
+2cout
+co5v
+c3p4
+1c4r2
+3cras
+cre5d
+2crip
+3cris
+cro5f
+cro5k
+croo3
+cro5v
+crus5
+c3so
+c3sp
+c3ste
+2c1t
+ct3act
+ct3ad
+ct5c
+ctee5t
+cte2n3
+c2t1h
+c2t3j
+c4t3of
+c3tol
+c2t1on
+ct4or
+ct3rap
+c4t3re
+ct3sl
+ct3sp
+1c2u
+cu5d4
+cu3en
+cu3[eacute]s
+cui5s
+cui2t
+cuit5e
+cu3k4
+cula5p
+cu3ra
+5cur3s
+cus3o
+c3w
+1cy
+1[ccedilla]
+[ccedilla]a4o
+4d.
+1da
+3da.
+3daag
+d4aal
+d3aap
+daar5e
+5daat
+4dabo
+2d3acc
+da4ce
+da5den
+4dadr
+3dae
+2d1af
+3dag
+da2g3a4
+da3ge
+da4g3ed
+da4g3e4t
+da4g3on
+da4g3r
+dag4s3t
+da2gu
+3dai
+da3[idiaeresis]
+da3ke
+da4ker
+2dakk
+da4k1r
+4dala
+d3alar
+d3alc
+da3le
+4dalf
+da3li
+2dalm
+da2l3u
+d4am
+dam4a
+da5mac
+d3a4mat
+d2a5me4
+dames3
+dam4pl
+2da2na
+dan3as
+dank3l
+danoot5
+dan4si
+dan4sm
+dan4s3p
+dan4st
+dans5ta
+4d3antw
+2d1ap
+4d3a2pe
+5dapu
+da2r3a
+d3arb
+3dare
+3dari
+dar4mo
+darm5on
+3daro
+dar3s
+dar5st
+3das3
+5dasa
+da3stu
+3d4at
+da3ta
+dat5j
+4d5atl
+4d5atm
+da2t3r
+5daue
+4d1aut
+3dauw
+2db
+dbei5
+dbou4w5i
+2d5c
+4d3d4
+ddags4
+ddag5sp
+ddel5ev
+dde2n
+dden5a
+ddera4
+dder5al
+ddere4
+dder5ee
+dder5ep
+dder3o
+ddi3a
+d5dles
+d5do
+ddo3p
+1de
+3de.
+de2al
+de1ch
+d4e5den
+5dedir
+de4dit
+dee4g3
+dee4l
+deel3i
+4d3een
+dee4r
+4d3eff
+de3g
+4d5eg.
+4d5egg
+2d5egy
+2dei
+d3eie
+d3eig
+d3eil
+d1eis
+d3eiw
+5dek
+de3ke
+dek3lu
+dek3w
+del4aa
+del5da
+del5dr
+del5eek
+4d3e4lek
+4delem
+de4lev
+4d3e4lit
+del3k
+del2s
+del4s3e
+dels3i
+del4so
+4d3e4mai
+2demh
+5demi
+dem5ond
+d2en.
+den4ac
+den5ate
+den3ei
+den3e4p
+den3ev
+4d3engt
+den4k5of
+de4noc
+den3o4r
+den3sh
+den5str
+de3nu
+5denvl
+de4o
+de5ofo
+de5ol
+deo4li
+deo3v
+de3rab
+de4r3ad
+der3a4g
+de3rak
+de3ram
+de3ran
+de3rap
+de3ras
+de4r5as.
+de4r5ass
+der2e
+der5ede
+der5egd
+de4r3ei
+de4r3em
+de5re4n
+de4rep
+de4ret
+de5rij
+de4r3im
+der3k4
+der3on
+dero4r
+4d3eros
+der4s3a
+der4s5om
+der5ste
+der5sto
+der5stra
+der5th
+4d3erts
+der5tw
+de2r3u
+de3rup
+de2s
+de3sav
+des3m
+des3n
+des3p
+de3spe
+de5spel
+de4spl
+des5sm
+de3st
+des5tak
+de5stal
+de4s3te
+de4sti
+de5stic
+des5top
+de3t4
+4d3e4tap
+de5tw
+deu4r3o4
+de3us.
+deu4tj
+deve4
+2dex
+4d1exa
+4dexp
+3d[egrave]
+2d1f
+2d3g
+d4gaf
+dge3la
+dge2t
+dgeto4
+dget5on
+dget5ov
+dge4tr
+dg4l
+2d1h
+d5he
+dheer4
+3d4hi.
+1di
+di2a
+di5ae
+di4ak
+di4ano
+dia3s4
+di4atr
+5dich
+di4do
+die2f
+die4r3o
+di3esr
+die3st
+die2t
+diet3r
+di1eu
+3dig
+di2ga
+dig5aa
+diges5
+dijk3r
+di3jo
+2d3ijz
+di2k3o4
+5dil
+2d3imp
+di5n2a
+2d3ind
+2dinf
+3d4ing.
+4d5ingel
+4d3inj
+4d3inko
+2d5inr
+2d3ins
+4d3int
+dintel5
+2d3inv
+2d3inw
+2d3inz
+di2o
+di5ofon
+di4ol
+di4one
+di4oni
+dio1s
+dio5sc
+2d3i2ro
+2d3irr
+3di4s
+dis5ag
+di5se
+di5si
+dis4kr
+dis5p
+dis1t
+dis5tr
+di3th
+dit3j
+dit3r
+5div
+2d1j
+2d3k2
+4d3l
+d5le.
+dli4n
+dlot4s
+2d1m
+2d3n2
+d5ne
+dni3s
+1do
+3do.
+do3a
+2dobj
+4d3obs
+3d4oe
+5doe.
+doe5d
+4doef
+d5oefe
+5doek
+5doen
+5doet
+4d5oev
+3doi
+d4ole
+2do2li
+d4olin
+dolk5s
+5dol5s
+3d4om.
+5domi
+do4m3o4
+d3omr
+dom4sn
+5domu
+d3omv
+4domz
+5don.
+d4ona
+5done
+do5ni
+5d4onn
+5do3n4o
+do3nu
+do5ny
+5donz
+2dop
+do3pa
+d3opb
+d3opd
+do3pee
+5dopj
+4d1opl
+3dopo
+d3ops
+d3opz
+4d5org
+do4ri[ediaeresis]
+d3ork
+dors5m
+do3sp
+do3sta
+dot3j
+5dou
+2dov
+dover5s
+3dovl
+3dovo
+2d3p
+dpren4
+1dr4
+3dra
+5dra.
+d3raam
+d3raap
+d4rac
+d5race
+5drach
+d3rad.
+d3rada
+5draf
+5d4rag
+d4rama
+d3rame
+4d3rand
+4drap
+4dras
+4d3raz
+2dre
+4d1rec
+d5reco
+d1red
+d2ree
+4d3reek
+4drend
+d4ress
+4dret
+3d2rev
+5dreve
+d3ric
+dries4
+5d2rif
+dri5ga
+d3rijd
+d3rijk
+d3rijm
+d3rijs
+5d4rin
+3dris
+4d3rit
+4d3roei
+d3roer
+5d2rog
+4d3rok
+d3roma
+d3rond
+3droog
+4droos
+5drop
+2drou
+2d3ro5v
+2droz
+drug4s
+d3ruim
+d3ruit
+5d4ru4k
+4d3rus
+2ds
+d2s1a2
+d4saa
+dsa4b
+d3sal
+ds4ate
+ds2ch
+d5schi
+dse2
+ds3eco
+d4s3ed
+d4s5ee
+d4sef
+d4sei
+ds3eis
+ds3elf
+dse4li
+d5sen
+d4s3es
+d4set
+d2sh
+ds3ho
+d2s1i2
+d4s5id
+dsig5a
+ds2im
+ds4ing
+ds5is
+d4s3j
+ds4jo
+ds5jon
+ds4l
+d1sla
+ds5las
+ds5lic
+d4s5lie
+ds5lim
+d3slin
+d2sm
+ds4mak
+d3smij
+ds5mo
+ds3n
+ds4ne
+ds5neu
+d3snu
+ds1o4
+ds3ob
+ds3om
+d4son
+ds2oo
+ds3op
+d4spa
+d5span
+ds5pati
+d5spec
+d5s4pel
+d4s3pet
+d1spi
+d4s3pl
+d5spoe
+d5spok
+d5spor
+ds5s
+dst4
+d1sta
+d5staat
+d4stab
+ds3tak
+d4s3tal
+ds4tan
+d3s4tat
+d5stav
+d3ste
+ds4te.
+d5stee
+d4stek
+ds4ter
+d4sterr
+d4stev
+ds3th
+d3s4ti
+d4stit
+d1sto
+ds5tram
+ds5trekk
+ds5ty
+d2su4
+ds3ure
+ds3uu
+d1sy
+2dt
+d1ta
+dtaart5j
+d1th
+d2tj
+d1to
+d1tr
+d1tu
+1du
+2duca
+5due
+du3en
+du3et
+5duid
+5duif
+5duik
+d3uil
+2duit
+4duit.
+d3uitd
+5duite
+4duitg
+d3uitv
+5duiv
+du4n
+dun5i
+du2o
+du4ol
+3durf
+3durv
+5du1s
+dut3j
+du5wen
+2dv
+dvaat5
+dvee3
+dve5na
+dvies5
+2dw
+d3wac
+d3was
+d3wat
+d1we
+3d2wei
+d3wek
+d3wet
+d3wez
+d1wi
+4d1wo
+d3wor
+d3wr
+1dy
+4d3yo
+dy4sp
+dy2s4t
+2dz
+4e.
+4ea
+e3aa
+e1ab
+ea3bo
+e3ac
+ea4ca
+eac5t
+e1ad
+ea3da
+e5adem
+ea3do
+ead3s2
+ead5sh
+e1af
+e1ag
+e3ai
+ea4k3o4
+e1al
+ea3la
+e3ali
+e4als
+ea5mi
+e3an
+e4an.
+eang3
+ean4s
+e5ap
+ea3pr
+e3aq
+e1ar
+ear2c
+e1as
+e2asc
+ea5s4e
+ease5t
+ea3so
+e1at
+e4at.
+eat3s
+eau3s4t
+e1av
+e3bo
+ebots5te.
+e5br
+3ecd
+e3ce
+e1che
+e1chi
+echt5ec
+echts5o
+e3chu
+4eck
+ec5le
+4ecor
+4ect
+ec3ta
+ec4taa
+3ecz
+e1d
+ed4ag
+e3dam
+e3d4an
+e4d4as
+ede3a
+ed3ei.
+ede5le
+edem4
+ede5nac
+ede5o
+ed4er
+e4d5erns
+ede5rog
+edi3al
+edi3am
+e5die
+4edir
+edoe5tj
+e3d4oo
+ed3opv
+edors5te
+ed3ov
+e3d2r
+ed3rod
+ed3rol
+ed1s
+ed5se
+ed2sl
+ed4so
+ed5sp
+ed3su
+ed3uit
+e4d2w
+e5dwan
+e4e
+eea4
+ee5b
+ee5ca
+ee5che
+ee2d3a
+eed4ac
+eed5as
+ee5de
+ee5do
+eed3ru
+eed3si
+eed3w
+ee2f
+ee3fa
+eef3ac
+ee3fi
+eef3l
+eef3r
+ee4gap
+eeg3l
+ee3i
+ee2k
+ee3ka
+ee5kaa
+eek3ak
+eek5all
+eek1e
+ee5ket
+ee3ki
+ee3kl
+ee4k3lo
+eek3n
+eek3re
+ee3kri
+eek3ro
+eek5st
+eek3w
+ee2l
+eel3a
+ee3lad
+eel4as.
+eel5d4u
+ee3le
+eel4ee
+ee3li
+ee5lij
+eel5k4
+ee3lob
+eel3og
+eelo4ge
+ee3lu4
+eel3ur
+eel3uu
+4eem
+eema4
+ee2n
+een3a
+eena4r
+een3e2
+een5g
+ee3ni
+een5ie
+een5k
+ee5o2
+ee2pa
+eep3an
+ee3pl
+eepo4
+ee4p3re
+eep3ru
+ee2r
+eer1a
+eer3aa
+ee4rad
+eera4l
+ee3ram
+ee3ran
+ee3re
+ee4ree
+ee5rei
+ee4r3i
+ee5ric
+eer5k
+eer3og
+eer5oom
+ee3rot
+eer5ston
+eer5str
+ee2s3
+ee5sch
+ee4s5em
+ees5et
+ee3sj
+ees5lo
+ee3sn
+ee3s4p
+ees5pl
+ees5pot
+ees5ten
+ee3stu
+ee2t
+eet5aa
+ee3tal
+ee3tan
+ee5te
+eet5h
+ee3tj
+eetna4
+ee3to
+eet3og
+eeto4ge
+eet3oo
+eeto4r
+ee3tr
+ee4tro
+eet5rok
+eet3sp
+eet5ste
+ee5v
+ee5z
+e[ediaeresis]n3
+e5[ediaeresis]r
+ef3ad
+efa4z
+efde5l
+ef3do
+ef3ei
+e5fer
+4efi
+efie4t
+efiet5j
+ef3ins
+e3fis5
+e1fl
+ef3li
+ef3loo
+e3flu
+ef3om
+e3foo
+ef3op
+e1fr
+ef3rij
+e5fron
+ef3sf
+4e1g
+egas4
+eg3as.
+ega5sk
+eg3ebb
+e4ge4c
+eg3eig
+egel5ei.
+ege4l5ov
+ege4net
+egen5of
+ege4ra
+eger5eng
+ege4ro
+eger5on
+e3g4i
+eg3ijz
+egip4
+egiste4
+e2gl
+e4go.
+eg3org
+e2gos
+eg3oud
+e5graf
+eg3s4
+eg5sle
+eg5so
+e2g3u4r
+egut4
+e4g3uu
+e1h4
+e5ha
+eheis5
+ehit4
+e2i
+ei5a
+4eid
+ei3do
+eid4sc
+ei1e
+4eien
+eien5s
+eie5re
+ei3f4
+ei3gl
+4eign
+e3ij
+eik4l
+ei3kn
+ei5kr
+eiks4
+4eil.
+eil5ant
+4eild4
+eil5dr
+4eile
+ei4lev
+eil5m
+ei2l3o
+ei4n3ab
+ei3n4ac
+ein4do
+eind5oo
+ein4d3r
+ein5gr
+ein5k
+ei2no
+ein5sl
+ei3o
+ei2sa
+ei5sha
+ei3s4la
+ei3slo
+eis4p
+ei3s4ta
+4eit2
+ei4too
+eit4s3
+eits5c
+eits5n
+eits5te.
+eit5sten
+eits5tr
+eive4
+4eiz
+e1j2
+e3je
+ek3aan
+ekaart5j
+ekaat4
+ek3af.
+e4k3a4g
+ek3al.
+ek3alt
+e5kam
+ek3ang
+ek4ee
+ek1ei
+e3kem
+e5ker.
+e5kers
+ekes3
+ekes4t
+ekes5tr
+e3ket
+ek5eter
+e5kic
+e4kil
+e5kis
+ekla4m
+eklam5a
+ek3lev
+e5klim
+ek5loos
+ek4ni
+e3ko
+e4k3ob
+e5kof
+ek3oli
+ek3opz
+e5kor
+ek5os.
+ek5oss
+e5kran
+ek3roz
+eks4e
+eks5erv
+ek5set
+ek4str
+eks5tra
+ek5t4e
+ek3to
+eku4
+ek3uit
+ek3ur
+ek1uu
+ekwet5ste
+ek3win
+e1la
+el3aan
+el5aand
+el1ac
+el4ade
+el3adj
+el3adm
+el3adr
+el3adv
+el1a4f
+el1al
+e3lan
+el5ana
+e3lap
+e5lap.
+e4lapp
+el3arb
+el3arc
+el3arm
+el3art
+e4l3as.
+el3asi
+e4l3asp
+e4l3ass
+el1au
+e4laut
+e3laz
+el5azi
+el4dec
+el4dr
+el4du
+e1le
+e3le.
+el3eeu
+el5eff
+e5leid
+el5eier
+el3eig
+el3ei5s
+e4lel
+3e2lem
+el3emp
+e5l4en
+e3ler
+ele5r4a
+eler4s
+el3erv
+e3les
+eles4t
+e4l3eta
+ele4tr
+e4l3etu
+el3exc
+e3l[eacute]
+elfi4d
+el1fl
+elf3s4
+el3gu
+2eli
+e5lie
+e5lig
+eli5kw
+el3imp
+e4l3ind
+e3ling
+e4l5inkt
+el5inz
+3elix
+el4kee
+elk3s
+el4k3u4r
+el4kw
+4e1lo
+e5loep
+el3oes
+e3lok
+el3ol
+el3oms
+el5ond
+el5ont
+e3loo
+e5lood
+e5loos
+el3ops
+el5opt
+el5opv
+el3o2r
+el5org
+elot4j
+e5lou
+el3o4ve
+e5loz
+elp4o
+el4ps
+el4s5em
+el4s3k
+el5smed
+el5twe
+4e1lu
+el3uit
+eluks5
+2ema
+e4mana
+ema3sc
+ema5to
+emees5
+emens5te
+emer4s
+emes3
+emie4tj
+e5mok
+em3oli
+em3op
+em3org
+emor5sten
+e4mo4v
+em3sa
+em5sc
+em4sli
+em4sm
+em1st
+em3su
+em3uit
+emut4
+en3aap
+e3naar
+e4n3aas
+en1ac
+e5n4acc
+en5af
+e2n1ak
+e2nal
+en3al.
+en3als
+en3amb
+en4ame
+e2nan
+e4n3ang
+en1a2p
+e5nari
+en3ars
+e2n3a2s
+enas3p
+e3nat
+ena4tel
+e4n3att
+en1av
+e2n3a2z
+enci4
+3ency.
+en3da
+en5daa
+end5ama
+5enderti
+en3d4o
+en3dr
+en5drek
+e2n3e2c
+enede4
+e3nee
+en3eed
+enee5t
+en5eg.
+en5egg
+en3ela
+en3elf
+en3ema
+e4n3en5t
+e2ne2p
+en3epo
+e5nere
+5energ
+e4nerv
+en3eta
+en3ete
+ene4ten
+e3neu
+4enf
+en5ga
+en3gl
+en4g5le
+eng4r
+en5gri
+engs4
+eng5se
+eng3sm
+e3nie
+e5nijd
+e2n3im
+e4ninga
+e4n3ink
+e3niv
+e4n3i4vo
+en3k2a
+e4n3och
+en3off
+e4n3oli
+e2n1on
+e4n3oor
+enoot5
+e2n1o2p
+e3nor.
+en3ord
+eno3s
+en3ou
+e2n1ov
+3enq
+en5sce
+en4sei
+ens5ein
+ensek5
+3ensem
+ens4fe
+en4sin
+en5slak
+en4s3on
+en1s2p
+ens5pot
+en5stan
+en5sten
+enst5ijv
+en4stin
+en4stu4r
+en3su
+en4tac
+en5tee
+en5tei
+ente5re
+en4terv
+3ent[egrave]
+en1t2h
+en5tom
+ent4r
+en3tre
+ent5rol
+ent4sl
+ents3m
+ent4s3p
+en3tw
+e1nu
+e4n1ui
+e2nun
+en3ur
+en3uu
+5envelo
+eny4
+e3o
+eo3d
+eodo3
+e5oe
+eoes3
+e5off
+eo3fr
+e4o3k4
+e5on
+eo5ni
+e5oo
+eo3pa
+eo3pe
+eo3pl
+eop4la
+eo3p2r
+e5ops
+eor5d
+e5org
+e5ori
+eo3ro
+eo3s4
+eo5st
+e4ot
+eo5te
+e5o3t4h
+e1pa
+e3paa
+ep3aak
+ep3ac
+e4paf
+epa4k
+ep5ake
+e3pal
+e3pap
+e4p3app
+e3par
+ep3asp
+e1pe
+e5pe.
+ep5een
+e5per
+epers5te.
+e1pi
+3epid
+ep3ijs
+ep3ijz
+ep5ingr
+ep3ins
+epit4s
+epits5te
+ep1j
+e1pl
+ep3led
+e4p3lod
+e5ploe
+ep3lus
+e1po
+e4p5o4ge
+epoort5j
+epoot4j
+3e4pos.
+e3pot
+epou4
+e1pr
+ep4ra
+e3pri
+ep5rode
+eprot4
+ep2s
+ep4s5ee
+ep4ser
+eps3l
+eps5n
+eps3p
+eps3ta
+eps5taa
+eps5tal
+eps5to
+eps3tr
+eps5tro
+ep4tak
+ep2tj
+ep4tr
+ept3ra
+ep5tro
+ep3uit
+4equa
+e3ra.
+e1raa
+e5raad
+e4raak.
+er3aan
+er5aanp
+e4raap.
+e5raat
+e4r1ac
+e5rac.
+e5race
+e5raco
+e3rad
+e5rad.
+er3ado
+er3af
+e3raff
+era4gen
+e1rai
+e4r3all
+er3ama
+er3ana
+e5randa
+e5rane
+e5ra3pl
+er3arc
+e3rare
+e3rari
+e1rat4
+er3a4tr
+er3azi
+er3d2a
+er3d4i
+erd4o
+er3d2r
+erd5uit.
+er3d4w
+e1re
+er5eat
+4erec
+er5editi
+er3een
+e5reep
+er5eers
+er3eet
+er3ef
+er5eff
+er5eg.
+er3egd
+er5egg
+er5egt
+er3eie
+er3eig
+er3eil
+er5eind
+ere3kl
+er3elk
+e4r3emm
+er3emp
+e3rend
+e5rendel
+ere4ne
+eren5eg
+er5enen.
+e3renm
+e3rent
+er5enth
+e5rento
+eren5tw
+ere2o
+ere4og
+er3epi
+er3e2q
+er3eri
+e3res.
+er3esk
+e3ress
+ere4st
+ere4t3j
+er3etn
+e4r3ets
+e4r5ex
+erg2l
+e3ri
+eri5ab
+e5rif
+e5rig
+erig5a
+er3ijl
+er3ijs
+e4rijs.
+er3ijv
+e4r3ijz
+e5rik
+er5ind
+e4r3ini
+er5inkt
+er3ins
+er3int
+e5rio
+e5ris
+erkeers5
+er2kn
+er3m4i
+er5mo
+er5nu
+e1ro.
+e3rob
+er3oc
+e4r3oed
+er3oef
+e5roep
+eroe5tj
+er3oev
+er3of
+ero2g
+e3rok
+e1ro2l
+e5rol.
+er3oli
+e5roll
+er3om
+er1on
+e3ron.
+e3rone
+er3onv
+er3oog
+er3oor
+e5roos
+e4r3op
+erop3a
+ero5pen
+e2r3or
+er1ov
+er3oxi
+e3roz
+e3r[odiaeresis]
+er4plu
+errie5tj
+er3scr
+er3sj
+er5slag
+er5span
+ers4pot
+er5stem
+er5te
+er3t2h
+er5t4i
+er5t4o
+er3tr
+ert5se
+erts5l
+er3t4u
+er3t4w
+e1ru
+e3rub
+e3rug5
+e2rui
+er3uit
+erui5t4j
+e2run
+e3runs
+e4r3ur
+e3rus
+er5uu
+3ervar
+3erwt
+e4saf
+e4s3a2g
+e3sam
+e5san
+es3ap
+es3arr
+e3sa3s
+e3scop
+e3s2cr
+es4e
+e5sec
+es5een
+e5sel
+es5ene
+e4s5eng
+es5ex
+es2fe
+es5he
+e4shi
+e3sid
+e3sie
+es1in
+e4sir
+es5je.
+es5jes
+e3s4jo
+es5jon
+e4s3ka
+es5kr
+e3sl
+es4la
+e5sla.
+e5slag
+es3lak
+es5lat
+es4le
+es5leg
+es2m
+es4mui
+e5smuil.
+e1sn
+e3s4ne
+e1so
+e3sol
+es4oo
+es5oor.
+eso4p
+es3ore
+e1sp
+es5pas
+es4pel
+espit5ste
+e3spl
+e4sprie
+esp5riem
+es4sm
+e3stak
+e3s4tal
+e3stap
+es4tar
+es5tatie
+e4s3te.
+es4tea
+es4teel
+est5ei.
+e4steka
+es5tekam
+e3s4tem
+es5temo
+es3ten
+e4sten.
+es5tenb
+es3ter
+estere5o
+es5tes
+es4tet
+e3steu
+es4tic
+e4stie
+e3stot
+es5tra.
+es5trac
+es5trak
+e5stral
+est5rap
+es5trei
+est4sc
+es4tur
+e3sty
+e3su
+esu4r
+e3sy
+e1ta
+e3ta.
+et3aan
+et3ac
+et3ad
+et3afz
+3e2tag
+e3tak
+e5tak.
+et4ana
+e5tand
+e2tap
+e4tapp
+e5tat
+e4tau
+e2tav
+e3te
+e5tea
+et3edi
+e5tek
+4etel
+e5tel.
+e4t5elf
+e5tels
+et5emb
+et5emm
+etens5u
+eten5tj
+ete5r4a
+ete3ro
+eters5la
+eter5sm
+e5tes
+e1th
+et3ha
+et3hor
+et5hu
+e4t5i4d
+e5tie
+e4t3inc
+e4tiq
+e5tis
+e4tja
+e1to
+e5toc
+e3toe
+e5toev
+e3tol
+eto4p
+et3ope
+et3opl
+e4t3ork
+eto3sf
+e1tr
+et3rec
+e4t5res
+e3troe
+e5tron
+e5troo
+etros4
+e4t3ru
+et4sl
+ets5lap
+et5slu
+ets3n
+et4s3oo
+et3spe
+ets3pr
+et3spu
+et4ste
+ets5tek
+et5sten
+et5sti
+ets4u
+et5su5r
+et5suu
+e1tu
+etui5tj
+etu4r
+et3we
+et2wi
+1eua4
+1euc
+eudi5o
+eu5dr
+eu3e
+eugd3r
+eu3g2r
+eu4ler
+eu4li
+e1um
+e3um.
+e2umd
+eu2na
+eun3t
+1eu1o
+eu2po
+eu4rad
+eu4rec
+eu3ren
+eu4res
+eu4rij
+eur5k
+euro5v
+eur4sta
+eurs5taa
+eurs5te.
+eur4s5tr
+eur4su
+eu5sch
+eus4p
+eu3spa
+eu4st
+eu5str
+eu3tj
+eu1tr
+e3uu
+2euw
+eu4wa
+eu5win
+euw4str
+evaar5tj
+eval4s
+evari5
+eve4lo
+evel5op
+eve5n4aa
+4ever
+eve3ra
+4e1w
+e5wa
+e5we
+ewen4s
+ewens5te.
+ewest5r
+ew2h
+e5wi
+ewo3v
+4ex.
+2ex3aa
+ex3af
+4exco
+3exeg
+3exem
+4exi
+ex3in
+ex5op
+1exp
+e3y4o
+eys4
+ey3st
+e5za
+e3zee
+4e3zen
+ezers5
+e3zo
+ezz4
+[eacute]3a
+[eacute]1d
+[eacute]dee4
+[eacute]di3
+[eacute]1g
+[eacute]gee5
+[eacute]3h
+[eacute]3j
+[eacute]3n
+[eacute]3p
+[eacute]3r
+[eacute]1t
+[egrave]1
+4[egrave]c
+[egrave]2l
+[egrave]2s
+[egrave]5t
+[egrave]ta5
+[ecircumflex]1
+[ecircumflex]2p
+[ecircumflex]3per
+[ecircumflex]5t
+3[ediaeresis]
+4[ediaeresis].
+[ediaeresis]2b
+[ediaeresis]3c
+[ediaeresis]3d
+[ediaeresis]e2
+[ediaeresis]en3
+[ediaeresis]3j
+[ediaeresis]1l
+5[ediaeresis]n
+[ediaeresis]nce3
+[ediaeresis]n4e
+[ediaeresis]ns2
+[ediaeresis]n5sc
+[ediaeresis]nt2
+[ediaeresis]n5th
+[ediaeresis]n5tw
+[ediaeresis]3p
+[ediaeresis]1ra
+[ediaeresis]1re
+[ediaeresis]1ri
+[ediaeresis]1ro
+[ediaeresis]ro1g2
+[ediaeresis]ro3s
+[ediaeresis]2s
+[ediaeresis]3si
+[ediaeresis]s3t
+[ediaeresis]1t
+[ediaeresis]t4s
+[ediaeresis]ts3te
+[ediaeresis]ve5
+[ediaeresis]ven4
+4[ediaeresis]zu
+4f.
+1fa
+f3aanb
+f4aat
+3fab
+fa2bo
+f3acc
+face4
+f1ach
+2fad
+2f1af
+fa3g
+fal3s
+fa3m
+f3ang
+fant2
+fan4t3j
+fant4s5
+2f3a2p
+f4arm
+3fa5se
+fa2to
+fa3v
+4fb
+fbe5dw
+f1c
+4fd
+f3da
+fda4g
+f5dan
+fd1ar
+fde4k
+fdek3l
+fde4s3
+fdes5e
+fdes5l
+fde5sm
+fdes5t
+f2d3in
+fd3of
+fdors5te
+fd4ra
+f3d4ru
+fd5se
+fd3si
+fd3so
+fd3sp
+f4d2w
+fd3wo
+1fe
+fe2a
+fec4tr
+fede3
+fe4del
+f3een
+5fees
+feest5r
+fel5dr
+fe4l3ee
+3feli
+fe4lom
+fe4l3op
+fel3sp
+fe3no
+f4er
+fe3rab
+fe3ran
+fe4r3et
+fe3rom
+fe3ron
+3fes3
+fe4t3j
+fetu5r
+2f3ex
+1f[eacute]
+3f[egrave]
+3f[ecircumflex]
+4f1f
+f5fe
+f5fi
+ffs2
+ff3sh
+ff3si
+f3fu
+f3g2
+fge3
+fge5r4
+fge5t
+4f5h
+1fi
+fi5ac
+fi4al
+fi3am
+fi3apa
+fi3apo
+fia4s
+3fib
+fi1ch
+5fie
+5fig
+f3ijs
+2f1ijz
+fik4st
+3f2il
+fil4m3a
+film5on
+fi3lo
+4find
+3fini
+f3inj
+4fink
+2finr
+fi3o
+fi4r
+fi4s
+fi5se
+f5iso
+f1j
+fjes5
+4f1k4
+f3ke
+f2l2
+4f3laa
+f1laf
+f4lam
+f3lei
+flen4st
+flens5te.
+f4les
+fle2t
+flet3j
+4flev
+f4lex
+f3lez
+2flie
+2flij
+f4lik
+f4lip
+f4lit
+f3lok
+3f4lor
+flu4t3
+4f1m
+f1n
+1fo
+3fob
+5foc
+foe5d
+foe5ta
+2f3of
+5fok
+2foms
+fo5na
+fond5en
+fonds5l
+fon5eng
+fo1no
+4font
+fon5te
+foo4
+fooi5
+f3oom
+5foon
+2fo4p
+fop5s4
+f4or
+3fo5re
+fo5ri
+5form
+for4t3j
+fo1ru
+fo3t
+2f3oud
+4f1ov
+3f[odiaeresis]
+4f5p4
+fpers5te.
+fpits5te.
+fr4
+f4raak.
+fraam5
+5frac
+f3rad
+f2ras
+5frau
+f1rec
+f3rek
+5freq
+frie4s
+frie4t
+friet5j
+f4rik
+f4rod
+4f3rol
+f4rolo
+f3roma
+frus3
+4f1s
+f2sa4
+fs3ad
+fs3an
+fs3ar
+f3sc
+f5sch
+f4scr
+fse2
+f4s3ec
+f4s5ee
+f4sei
+f4s3eth
+fs4fe
+f2sh
+fs5he
+f2si
+f3sie
+fs3im
+fs1in
+f5slaa
+f5slac
+f5slag
+fs3lap
+fs2m
+fs3ma
+fs4mi
+fs3mo
+fs3mu
+f2s1o4
+fs3ob
+fs3om
+fs4oo
+fs2p
+fs4pre
+fs4t
+fst3as
+f3ste
+fs5tec
+f5stell
+fste4m3
+f4sterr
+f3sti
+f5stif
+f3sto
+f4st3oc
+f4ston
+f3str
+f3stu
+f3sy
+4ft
+f1ta
+ft1ac
+fta4kl
+fta4p
+ft3art
+fter5sh
+ft3h
+f1to
+f5tond
+f4tont
+f1tr
+ft2s3l
+ft4sm
+fts3n
+ft4so
+fts3p
+f1tu
+ftu4r
+1fu
+2fuit
+fu4ma
+fum3ac
+3f2un
+fur4o
+3fus
+2fuu
+4fv
+fva2
+fval3
+4f1w4
+3fy1
+2fz
+fzet5
+4g.
+1ga
+3ga.
+gaar5tj
+g4aat
+2g1ac
+4g3adm
+g4af.
+g3afd
+ga3fr
+4g3afs
+4g3afw
+2g3a4h
+4gal.
+ga3la
+ga4l3ap
+ga5ler
+gal3s
+4gamb
+g4a3mi
+3gan
+gan5d
+5gane
+gan4s5t
+ga3pl
+3gar.
+4g3arb
+ga3re
+g1arm
+3gars
+2g3art
+gar5tj
+ga4s
+gas5c
+gas3i
+ga5sla.
+ga3sli
+ga5slo
+gas3o
+gas3p
+gas3tr
+gas5tra
+gast5rol
+3gat
+gat5j
+gat3s
+4gaut
+ga5ve
+g1avo
+2g5b
+2g1c
+4gd
+g5dac
+g5dag
+gd3art
+gd3at
+gd5ate
+g3de
+g4d3elf
+g5der.
+gd3erv
+g4d3id
+gd3im
+g2din
+g3dr
+g5dru
+gd3sa
+gd5sp
+g3du
+1ge
+3ge.
+ge3a
+gea3dr
+gea5na
+gea3q
+ge4ari
+ge5au
+4g3eb.
+2gebb
+ge3c
+ge3d4
+gedi3a
+ge4dit
+ge5dr
+ge5dw
+3gee4
+geest5r
+geet3a
+ge3f4
+2g3eff
+ge5g4
+gege4s
+4geig
+2g3eik
+gei4l5a
+5geit
+geit3j
+ge3k4a
+ge3ke
+ge5ki
+ge5k4l
+ge3kr
+gek4st
+gek4u
+ge3k4w
+ge3lau
+gel4d3a4
+ge3l4e
+4ge4lem
+gel5f
+gel5k
+5ge3l4o
+gel5si
+gel3sl
+gel3sp
+gel5ste
+ge5ma
+4gemb
+4g3emf
+ge5mo
+2g3emp
+gems3
+ge3m4u
+g4en.
+ge3nak
+gen4az
+3ge3ne
+ge4n3ed
+ge4nend
+4g3engt
+3geni
+gen5k
+ge1no
+ge4n4of
+ge4nog
+gen5sfe
+gen5ston
+gen5stu
+genstu5r
+5genw
+ge5om
+geo5pe
+georke5
+ge5os
+ge5ot
+ge5p4
+ge1ra
+ger5aal
+ger5aap.
+ge4r3a4l
+gera4p
+ger5ape
+ger5as.
+ge5reg
+ge3rem
+ge5ren.
+ger4i
+ger5ini
+ge1r2o
+ger4of
+ge5rol
+ger5slan
+ger4sli
+gers5lij
+ger4sp
+4g3erts
+ge3r4u
+3ge1s4
+ge3sa
+ge3sc
+ge5se
+ge3si
+4ge3sk
+ge5sl
+ge3sn
+ge3so
+ge5spend
+ge5sper
+ge5spo
+ge5stan
+ges5te.
+ges5ten.
+ge3str
+ge5sw
+ge3ta
+get4aa
+ge5tam
+ge2th
+ge5t4i
+ge3t4j
+get4o
+ge3tr
+ge5tra
+ge5tro
+ge5tru
+ge5tsj
+ge5tu
+ge5t4w
+ge3ui
+5g4ev
+4gex
+5g4ez
+1g[eacute]
+g[eacute]di4
+3g[egrave]
+4g1f
+gfijn5ste
+4g3g4
+g5ge
+gge3la
+gge4r5on
+gges5ti
+g4g5h
+g5gi
+ggings5
+g5gl
+2g1h
+g2het
+ght4
+gh5te
+g2hum
+1gi
+gids5te
+gie5ra
+gier4s
+gi1eu
+gi2f
+gif5r
+gi3ga
+5gigere
+5gigste
+2gij
+g3ijs
+4gijz
+gi2m
+gi3na
+4g3inb
+4g3inf
+g5infe
+g5infr
+5ging
+2g3inh
+gin3o
+2ginr
+gi4oc
+gi2od
+gi4onet
+gi2or
+gip4st
+5gir
+3gis
+4g1j
+4g1k
+gl4
+g5lab
+3glai
+1gla4s
+glas3e
+g5lat
+3g4laz
+3gle.
+g5leer
+glee5t
+g3len
+2g5lep
+4g5ler
+g3les
+3gle4t
+glet3j
+g5lev
+g5lice
+g5lich
+3gli[ediaeresis]
+g2lif
+g5lijs
+g2lim
+3g4lio
+g2lob
+3glof
+g5log
+3glom
+4g3lon
+g3loon
+g3lop
+3g2los
+g5loz
+3g2ly
+4g1m
+gmaat5j
+2g1n
+g3na
+gn4e
+gne5g
+gne5m
+gne4t3j
+gnie4tj
+4gnu
+1go
+3go.
+3go2a
+3gob
+2goc
+g1och
+go4d3a
+god4s3
+gods5t
+4goef
+goe1r
+2gof
+go3f2r
+g4og
+4goh
+go2k
+5gom.
+go2ma
+g3oml
+4gomz
+go4n3az
+2g3ong
+go5no
+2g1ont
+g2oo
+2g3oor
+3goot
+2g1op
+go3pa
+g4opr
+g4ora
+4go4re
+go5re.
+5g4ori
+gor2s
+gos1
+go3tr
+gou4d5ee
+2g3ov
+2g5p
+gpes3
+1gr4
+3gra
+5gra.
+graat5j
+g5rak
+gra2m
+g4ram.
+gram3a
+g3ramp
+gra4s3
+5grav
+2g3rec
+2g3red
+5gredi
+g5redu
+g3reek
+g3reel
+g4reep
+g3reis
+4g3rek
+2g3rem
+gren4s
+gre4s
+g4reu
+g3rev
+5gria
+grie4t5j
+g5rijd
+g5rijk
+g5rijm
+g5ring
+5g4ris
+grit5s
+2g3riv
+groet5j
+grof5
+g3rok
+g3rook
+g3room
+groot5j
+2grou
+gro5v
+2g3rug
+g3ruim
+g3rup
+4gs
+gs1a2
+gsa4g
+gs5alar
+gs3alt
+g2sc
+gse4
+gs3eco
+g4s3ed
+gs5een
+gs3ei
+gs3en
+gs5ene
+gs3erv
+gs3et
+gs3ev
+gs5he
+g2s1i2
+g3sie
+gs5is
+gs1j
+g3s4ke.
+gs3l
+gs4la
+gs5laag
+gs5lam
+gs5las
+gs1le
+g3slep
+g4sleu
+gs5lie
+gs4lin
+g5sling
+gs4lo
+gs5log
+gs5lok
+gs5lon
+gs4lu
+g4s5ma
+gs3n
+g4sna
+g3snij
+g4s1o4
+g5sol
+g5som.
+gs5ons
+gs3op
+gs3p
+gs5pand
+g3spec
+g3s4pel
+g3s4pet
+gs4pi
+g3spie
+g3spil
+g5spin.
+g5spinn
+gs5pir
+gs5pol
+g3s4pon
+gs5ps
+gs5q
+gs5sc
+gst2a
+gs5taal
+gst5aang
+gs5tac
+g5stad
+g5s4tan
+g4st3ap
+g5stat
+g1ste
+g5s4te.
+g5sted
+g5stee
+g3stei
+gs3tek
+g5stel
+g3sten
+g3ster
+g5ster.
+gs5terr
+g5sters
+gs3th
+g5s4tic
+g3s4tig
+gs5tijg
+g5stof
+g5stop
+g5stor
+gst3o4v
+g4s3tra
+gs5trad
+gs5trak
+gst5ram
+gs5trap
+g5strat
+gst5res
+gs5troe
+gs5tron
+g4stru
+g5struc
+g3stu
+gs5ty
+g2s1u4
+gsver3
+gs5w
+g5sy
+4gt
+g1ta
+g2t3ap
+g3te
+gte3ro
+gtes4
+gte3st
+g1to
+g3tr
+g1tu
+1gu
+5gu.
+3gue
+gu4eu
+2guit
+gu4ni
+gu2s3
+gut4st
+guts5te.
+4gv
+g5vo
+4g1w
+g5wa
+1gy
+4gyp
+2gz
+4h.
+haams5ta
+haar5sl
+haar5sp
+haars5te
+haar5tj
+haats5te.
+h3afd
+haf4t3u
+ha3g
+ha5ge
+hal2f1
+5hals
+hal4sto
+5halz
+2hamp
+4han.
+han4dr
+hand5sl
+han3ga
+hang5l
+hang5s
+han4s3l
+han3so
+han4st
+hap2s
+hap4se
+har4ta
+harte5l
+hart3j
+har4t3o4
+har5tre
+hart5sl
+hat5j
+ha2t3r
+hat3s
+ha3v
+4have.
+4hb
+2hd
+h4e
+2hea
+he2ar
+3hech
+he3co
+4hee.
+hee3g4
+hee4k
+heek3a
+heek5l
+hee4l3o
+heep4s
+heeps5c
+heers5tak
+hee5sto
+hee5tjes
+he2f
+he4i
+heids5p
+heis4
+hei5tj
+he2k3a
+he2kl
+hek4st
+heks5te.
+hek5sten
+hek3w
+he3le
+he4l3ee
+he3li
+hel4m3a
+helo4
+hel4p3a
+hel3sm
+he5mo
+he5ne
+hen4kr
+he3n4o
+4he5o
+he4pij
+he2p3l
+he2pr
+he1ra
+her4aa
+he4r3ad
+he3r4au
+he4r3i
+herm5eng
+he3ros
+hero5v
+her4p5aa
+3herst
+hert4
+herts5te
+he2ru
+he5se
+he2sp
+he2s5t
+hets5te.
+heu5le
+2h3f
+4h5g
+h3h
+hi5d
+hie4f3
+hielsges5
+hie4r3
+hie5ren
+hier5u
+hie4t5o
+hie4tr
+hiet5s
+hij4sl
+hik4s5
+hi3kw
+hil3m
+him4pl
+him4pr
+hin5d
+h3ins
+hin4t3j
+hi2p5l
+2hir2
+his5p
+hi3tr
+hit4st
+hits5te.
+hit5sten
+h3j
+2hl
+h3la
+h4lag
+h3lep
+h3loc
+2h2m
+h3ma
+h3me
+h4mer
+h1n
+h2na
+hno3
+2ho.
+ho3a
+hoa3n
+hoboot4
+ho3ch
+hoe4ker
+hoe4s
+hoes5l
+hoe3t
+ho2f
+hof5d
+hof3e
+ho3g2
+ho2ka
+ho5mo
+hon3dr
+hond4s
+hon3g
+honi4
+ho1no
+hool3e
+4hoom
+hoort4
+hoor5tr
+2hoot
+ho3pa
+ho1pe
+ho2p3o
+hop3r
+hop4str
+hor5de
+5horl
+ho3ro
+hor4st
+hors5te.
+hor5sten
+hor4t3j
+ho3ru
+ho3sa
+hot3j
+ho3tr
+ho4t3re
+hot4st
+hots5te.
+ho3v
+2ho4w
+how3o
+2h1p
+hpi4
+2hr
+hra4b
+h4re
+h5rea
+hri4
+hro2k
+hrok3o
+hroot3
+4hs
+h3sa
+h3sp
+h3st
+2ht
+h4t1a2
+ht3ac
+h3tal
+ht3ala
+h5tans
+h3te.
+h4t3ec
+ht4eco
+h2t3ee
+h2t3ef
+h2t3ei
+ht5em
+h3ten
+h4ten5t
+ht5entw
+hter3a
+hte4r5o
+h4t3esk
+h4tev
+ht5eve
+h5tevo
+ht3ex
+h2t5h
+h4t3int
+h2t1j
+ht1o4
+ht5oef
+ht5op
+h4t1r
+ht5roo
+ht4sap
+htse4
+ht4ser
+ht2si
+ht4sl
+ht5sla
+ht5slot
+ht3sme
+ht5smij
+ht4s3o
+ht3spe
+hts3pl
+ht3spr
+hts5taal
+ht4s5tak
+ht4s5tek
+ht4sti
+hts5tore
+hts5trekk
+ht1u2
+ht3w
+hu4ba
+3huiz
+hul4der
+hur4t5
+hut3j
+huts5te.
+huur5s
+4h1w
+hy4la
+3hyp
+hypo1
+4i.
+i1a
+i3aa
+i4ab
+i5abi
+i4ac
+i3ady
+i3ae
+i5ae.
+i2a3f4
+i2a3g2
+i3agr
+i3ai
+i5ak.
+i3ake4
+ia4kem
+ia3kl
+ia3kr
+i3al.
+i4a3la
+i3ali
+i2am
+i5am.
+i3ami
+i3an
+ian4o
+ia3o
+i2a1p4
+ia5pa
+i5api
+ia3sc
+ia5se
+ia3so
+ia4s5po
+ia3sta
+i3at
+ia3t2h
+i5atri
+iave4
+i5ble
+iboot4
+4ic
+i3ce
+5i4cepa
+i1cha
+i1che
+ichee4t
+i1chi
+i1cho
+i3chr
+ick5l
+icos4
+ic4t3op
+ict4s5c
+i3dam
+idde4r5a
+ide3a
+i4dee.
+ider4sp
+ider4st
+ides4
+idi3a
+idi5ab
+i2di5o
+id4mak
+i3dok
+i2dr
+id3ran
+id3ru
+id2s1
+id4s3a
+id4ser
+ids5i
+ids5j
+ids5l
+id4sm
+ids5ma
+id5s4mee
+id4s3o
+ids3ta
+ids5tak
+ids5tek
+id4stem
+id4sti
+ids5tr
+id3u4r
+id3uu
+idu3w
+id3w
+4ie
+ie1a2
+ie4d3ac
+ie3de
+ie4dro
+ied3w
+i1ee4
+ie[ediaeresis]2
+ie3fi
+ie2fl
+ie3fle
+ie3fon
+ie4fr
+ie4gas
+ie3ge
+ie4g5ins
+i2ek
+iek3e4v
+ie4kl
+iek3li
+ie5klu
+ie2kn
+iek5ond
+iek4s5n
+iek4sp
+ie2ku
+ie3kwa
+ie5lan
+ie5lap
+iel5do
+iel5d4r
+iel4e
+iel5ei.
+iel5k
+iel3sc
+ie3ma
+iem3ov
+ien4dr
+ien3ij
+i3enn
+i5enne.
+ien3s4m
+ien5sp
+ien4sta
+ien4st5o
+ien4str
+ienst5ur
+ieo4
+i4ep
+ie5pen
+iepiet5
+iep5oog
+iepou5
+iep5rel
+iepro4s
+iep3s4
+iep5st
+iep5tr
+ie4pui
+ie5r4ad
+ier3a4l
+ie3ram
+ie3rap
+ier3as
+ie4rat
+ier5el.
+ier5els
+ie5ren.
+ie5ring
+ierk4
+ie3r2o
+ie4rof
+ier4sl
+ier5slu
+ie3ru
+ier4ui
+ie3sf
+ie2si
+ie4sl
+ie5sle
+ies3li
+ies3m
+ie2s3n
+ie2so4
+ie4s3pl
+ie3sta
+ies5te.
+ie5stel
+ies5tere
+ie3sto
+ie4taa
+ie5tal
+iet5ant
+ie5ten
+ie3tj
+ie3to4
+ie4t3og
+ie4too
+ie4top
+ie4tor
+ieto5re
+ie4t3ov
+ie5troe
+iets5te.
+iet3ur
+iet3uu
+ie3twi
+i3ety
+ie2u
+ieu3k
+i1eur
+ieu5r4e
+i1eus
+ieu3sp
+i1euz
+ie3v
+ie3z
+iezel5a
+i3[eacute]s
+i1[eacute]t
+i1[egrave]
+i4[ediaeresis]g
+i4[ediaeresis]va
+4if
+if3aa
+if3ad
+if3l
+if3r
+if4ra
+if4taa
+if4tar
+if4tre
+iftu5r
+if3ui
+ig4a
+ig3aa
+ig5ac
+i5gal
+i4g5av
+i3ge
+ige2s
+ig3esk
+ig3ij
+i4gind
+igi3o
+ig5no
+i3g4om
+ig4op
+igs4
+ig3sk
+ig3sl
+ig3sp
+ig3sto
+ig3un
+i1h
+i3i
+i5ie
+ii2n
+i5is
+i2j
+4ij.
+ij5a
+ija4d
+4ijd
+4ije
+ij3ef
+ij3ei
+ij3el
+ij5e4n3
+ij1er
+ij3i
+4ijn
+ij3o4
+i3jou
+4ijso
+4ijsp
+4ijst
+ij5te
+ij4tr
+ij5u
+4ijvo
+4ijzo
+4ik
+ik3aar
+i4kam
+i3ke
+ik3ef
+ike4ra
+iket3
+i2kij
+i3kl
+ik3la
+i4k3lo
+i4k3lu
+i2k4n
+i4k5na
+ik5o2g
+i3kom
+i2koo
+iko2p
+ik3ope
+ik3ord
+i4kr
+ik3re
+ik3ri
+ik3ro
+ik5se
+ik5si
+ik3s4l
+iks3n
+ik3sno
+ik3sp
+ik4spa
+ik1st
+ik5sta
+iks5te.
+ik1w
+ik5war
+i1la
+i3la.
+il4aa
+il5aan
+il3ac
+il4act
+il3ad
+il3af
+i3lak
+il3al
+i5land
+il2da
+il4d3r
+ilds4
+4i3le
+il3een
+ile3l
+i4l3erv
+ile4t
+ilet5r
+ile3u
+il3e4ve
+ilevin4
+i4l3e2z
+i3l[eacute]
+il5f
+i3li
+ilie5g
+ilie5t
+il3ink
+ilk4l
+ilk3s2
+illa3s
+1illu
+il2m
+ilme2
+il4min
+il4mo
+i1lo
+ilo4ge
+il3ond
+i3loo
+i5loon
+il3oor
+il1or
+ilo4re
+ilo4ve
+il3s2h
+ils5j
+il4sti
+il2th
+i1lu
+4im.
+i2mag
+i4mago
+im5au
+imee4
+im3een
+i4m3em
+im3enc
+im3ex
+4imf
+i2m3of
+im3op
+im3org
+im5pa
+im4s3oo
+im1st
+i3mu
+in1ac
+i2nau
+ind4aa
+in4dene
+ind3sc
+ind5ste
+1indu
+in3e4de
+in3edi
+in3eed
+inek4
+ineo2
+inet4s
+i5neu
+1inf
+in2ga4
+ing3aa
+ing3ag
+ing3al
+3ingan
+ing5lo
+in2go
+in4gr
+ing4st
+4ini.
+i3nie
+ini5on
+ini5sl
+ini5sta
+4inkj
+in2kn
+3inkom
+in4kri
+3inno
+i1no
+i3noc
+i3nod
+in4o2g
+in1on
+ino5pe
+ino3s4t
+in3ov
+1inri
+4ins.
+in5sch
+in5se
+in3sl
+in3smi
+in3so
+in1sp
+in5spo
+in5sten
+in5swi
+in4t3ap
+in5te
+intes5
+in3th
+1int4r
+i1nu
+inuut3
+4i1o
+io5a
+ioas5
+io5b
+i3o1c
+i3ode
+ioes3
+io3f
+io3g2
+i3ol
+i5ol.
+i5olen
+i5olus
+i3on
+ioneel4
+i5ong
+ion4s3
+ions5c
+i5oo
+i2op4
+io3pa
+io3pr
+i3opt
+io3ra
+i3ori
+io3ru
+io4s
+i3os.
+ios3c
+i3o5se
+i3o5sf
+io5sh
+io5si
+i5osi.
+io5so
+io5sp
+io5s4t
+i5o5su
+i3osy
+i5othek
+i3oti
+iot3j
+i5otorens
+io3tr
+i2o3v
+i3ox
+i2oz
+i1pa
+i2p1ac
+ip3af
+i3pap
+i1pe
+i4perw
+ipe4t3j
+i1pi
+ip1j
+i1pl
+ip3lu
+i1po
+ipo4g
+i1pr
+i2pri
+ip3ru
+i4ps
+ipse4
+ip4si
+ip4sle
+ips5te.
+ip5sten
+i3ra
+ira3k
+i1r2e
+ires4
+ire3st
+i3r[eacute]
+i1ri
+irk4s
+i1ro
+iro3p
+iro5v
+ir2s
+ir4sc
+ir3sp
+ir5ste
+irt3r
+i1ru
+4is
+i1sa
+i2saa
+i4s3ad
+is3a2g
+is3ap
+i2s1ar
+i2s3as
+i4sc
+i5scha
+i5schr
+is5col
+i5scoo
+i5scope
+ise2d
+i4s3ei
+is3ell
+is5eng
+i4s3erv
+ise3st
+iset3j
+is4fee
+is4fer
+i4sh
+is5ho
+isi2d
+i2sij
+i2s3im
+is3ja
+i4sk
+is3ka
+is3ke
+is3l
+is5lag
+is5las
+is5le
+i4s5m
+i4s3n
+is5ned
+is5nij
+is5no
+5isol
+i4soo
+is4oor
+iso3s
+i2sot
+is3ott
+is3p
+is5pas
+is2pi
+is5pl
+is5q
+is5sa
+is5so
+i2s3t
+is1ta
+i3stak
+ist3ap
+i4s5tas
+is4tat
+is5terd
+is5tere
+is4th
+is1to
+ist5ong
+i3str
+is5tri
+i5stro.
+i3sty
+isu2m
+i5sy
+4it
+i1ta
+it3ac
+ita5d
+it3een
+i3ten
+i3ter
+ite5rei
+ites4
+ite3st
+ite4t
+it3hie
+it1ho
+it1hu
+it2i
+itie5st
+i4tj
+i1to
+it5oef
+it3oog
+i3t2ou
+i4to4v
+itper5st
+it3red
+it1ru
+it3sje
+it3sli
+it3sop
+it1sp
+its4te
+it4ste.
+it4too
+i3tu
+it3w
+4i3u2
+iu4m
+ium3a4
+ium3e
+ium3o
+iu3r
+i3ve
+iven5s
+ive3re
+i5w
+iwi2
+iwie2
+iwit3
+4iz
+i3ze
+ize3t
+[icircumflex]3
+[icircumflex]t4
+1[idiaeresis]
+2[idiaeresis].
+[idiaeresis]5a
+[idiaeresis]1c
+[idiaeresis]1d
+[idiaeresis]e4n3
+[idiaeresis]e5nen.
+[idiaeresis]2n3a
+[idiaeresis]ns5m
+[idiaeresis]n3sp
+[idiaeresis]n3u
+[idiaeresis]3n4ur
+[idiaeresis]3o
+[idiaeresis]3ri
+[idiaeresis]3ro
+4[idiaeresis]s.
+[idiaeresis]s3a
+[idiaeresis]4sc
+[idiaeresis]5sche
+[idiaeresis]s3l
+[idiaeresis]3so
+[idiaeresis]s3t
+[idiaeresis]1t
+[idiaeresis]5z
+4j.
+1jaar
+jaar5tj
+ja3b
+2jaf
+1jag
+jagers5
+ja3kn
+ja3mi
+jan4s3l
+jan4st
+ja3pl
+ja1po
+1jar
+jare4
+1jas3
+jas5p
+3jaw
+jaz4
+j3b
+jba4l
+jbe4l3i
+j1c
+jda2
+j2d3aa
+jd3an
+j4d3ar
+j2d3ee
+jde4n3e
+jden4s
+jdens5p
+j4d3erv
+jdes4
+jde3sp
+jde5st
+jdi3a
+j2do4
+j3dom
+jd5on
+jd3op
+j3dr
+j4d3re
+j4d1ri
+j4d3ro
+j4d3ru
+jd5sei
+jd3spo
+jd1st
+j2d3u
+jd3w
+j3d4wan
+jea4
+3jeba
+je3ch
+jec4ta
+2j1ee
+jel4
+je3la
+j1en
+je2na2
+je3n4o
+5jep
+jepiet5
+je3ro
+jers4
+jer3sp
+je4s3
+3jesa
+5jesal
+je5sch
+3jeskn
+jes5l
+jes5m
+jeso2
+jes5pa
+jes4pr
+3jesr
+jes5tr
+5jesvo
+3jeswa
+3jeswi
+je2t
+jet3er
+jeto4v
+jet5st
+5jeu
+3jevr
+2jew
+j3ex
+j2f1a
+j2f3ei
+j2f1en5
+j4f3ij
+jf3ink
+jf3l
+j3f4lat
+jf5le
+j2f3o4
+jf3r
+j3f4ra
+j3f4ro
+jf2s
+jfs3a
+jf4sc
+jf4s3er
+jfs5f
+jfs3l
+jfs5m
+jfs3n
+jfs3p
+jfs5pa
+jf3st
+jf4sta
+jfs5tak
+jf5stan
+jf4stel
+jf4sti
+jf4s5to
+jft2
+jf5ti
+jf5tw
+j1g
+j3ge
+jger5sl
+j2g3l
+jg4s5e
+jg3sn
+jg2st
+jg3s4te
+j3h
+jif3
+j3ig
+jin3g
+ji5t2j
+j3j
+2jk
+j3ka
+j4kaa
+jk5aard
+j4kar
+jk3arb
+j4kau
+j4kav
+j2kij
+j2k4l
+j3klaa
+jk5lak
+jk5lap
+jk5las
+j4kle
+j5kled
+jk5les
+jk5li
+j3klon
+jk5lop
+jk5luc
+j2kna
+j2k3of
+j4k3o4l
+j2k3on
+j2ko4p
+jk3opb
+jk3ope
+jk3opl
+j3kops
+j2kr
+j4kra
+jk3raa
+j5kran
+jk3re
+jk3ro
+j4k5ru
+jk3slo
+jks3pl
+jk4sta
+jks5taak
+jks5taal
+jks5tak
+jk5stan
+j2k3ui
+jk3w
+j3k4was
+j1la
+j3laa
+jl5ana
+j1le
+j2l3ef
+j2l3el
+jl5f
+jl3ink
+j1lo
+j2loe
+j3lu
+j2m3af
+j5m4ar
+j3mi
+jm3op
+jm3s
+j2n1a4
+j4naa
+jn5ac
+j3na5g
+jn3ak
+jn2am
+jna5me
+j3n4an
+jn5d2r
+j2nef
+jne4n
+j4n3erk
+j4n3erv
+jn3gl
+j4n3im
+j4n3ink
+jn3k4
+j2n1o4
+jn4si
+jn2s3l
+jns5lac
+jn3slu
+jns5or
+jn2sp
+jns3pl
+jn1st
+jn4ste.
+jnt4
+jn3tr
+joet3
+4joi
+jol4e
+jo5lij
+j3om
+1j4on
+jone2
+j3op
+jo3pe
+jo3ra
+jo3ru
+j4ou
+1jour
+jou5re
+joy3
+j3pa
+j4p3ac
+jp3arm
+j1pe
+j2p3em
+jp3ij
+j1pin
+j3pio
+jp1j
+j1pla
+jp3li
+j1po
+j2p3or
+j4pre
+jp3ri
+jp3rok
+jps4
+j3r
+jraads5
+2js
+js1a
+j4sef
+j4s3ela
+j5seli
+j4s5em
+j4s3e4r
+j2s1i
+js5in
+js4ir
+js4le
+js3lee
+js3li
+js5lie
+js4me
+js5mel
+js5met
+js3n
+j4s1o4
+j5soe
+js3ol
+js3pac
+js3par
+j3spe
+js3pl
+j4spo
+js3poo
+jspoort5j
+j5spor
+j1sta
+j4star
+j2s3te
+j3stee
+j3s4tek
+j3s4tel
+j5s4teng
+js3th
+js4tij
+j5stond
+j4stoo
+js3tou
+jst5ran
+j5strok
+j2su
+j3sy
+j3taal
+jt3aar
+jt1ac
+j1tag
+j3tak
+j3tan
+j3te.
+jt1h
+j3toe
+jt3opt
+j3tr
+jt3ra
+j5tred
+j5tree
+jt3rei
+j5trek
+jt3ri
+j5trok
+jt3rot
+jt1s
+j1tu
+1j4u
+ju3d
+4jum
+jus3
+juve5
+j3v
+jve2n
+jver4s
+jvers5p
+jve3t
+jvie5s
+j1w
+jze4r5o
+4k.
+1ka
+k3aanb
+k3aanl
+5kaart
+kaart5jes
+kaats5te.
+kabe2
+ka3bo
+2k1ac
+kade4t5
+4k3adm
+ka3do
+k3adv
+2kaf
+k3afd
+k4aff
+ka3fl
+3k4aft
+ka4ga
+k3a4gen
+k3ah
+ka3i
+2k3alb
+ka3le
+5kalf
+kalf4s5
+ka3l4i
+kal2k
+kalk3a
+4kalt
+5kalv
+3kam
+4kamb
+kamen4
+kame4re
+kam4pa
+kam4pl
+kam4pr
+ka5naa
+kan5d
+4kang
+kan4sl
+kan4st
+kan4t3j
+kao3
+5kap.
+ka3pe
+kap3l
+ka1po
+4kappa
+ka3pr
+kap3s
+k3arc
+k4a3ro
+kart4
+4k3arti
+kar3tr
+ka4s
+kas5c
+4k3asi
+kast3o4
+ka3str
+kast5ra
+ka5stro
+kas3u4r
+kat5aal
+ka4t5a4le
+ka4tan
+kati4
+ka4t5io
+kat5j
+k3atl
+kato4
+ka4t3og
+ka5tr
+kat3s
+2k1aut
+2kavo
+2k3b
+2k1c
+k3ca
+2k5d
+kdi3a
+1ke
+k4eb
+2k3ec
+ke4di
+2k3een
+kee4p5l
+kee4r
+keer4s
+keers5to
+2kef
+4keff
+k4ei.
+k4eie
+k2eil
+kei3s4
+kei5t
+ke4lap
+kel5da
+kel5dr
+ke5lel
+4kelem
+kel5f
+ke4l5int
+ke4lom
+ke4l3op
+kel3sp
+5k4ema
+2kemm
+2kemp
+ke4n3an
+ke4nau
+ken4ei.
+ke5nen
+ken5k
+ke2n1o
+kens5po
+kepie5t
+4k3e4q
+ke3ram
+ke4r5enk
+ker3kl
+ker4kle
+ker4kn
+ker4k3r
+ker4ku
+ker4kw
+ker4n3a
+ker4no
+ker3o4
+ke3ros
+ker4sm
+ker5spe
+ker4spr
+ker4sta
+ker5ste.
+ker4sti
+4k3erts
+4kerva
+4kerwt
+ke2s
+ke3s4p
+ke3sta
+kes5ten
+ke3sto
+ke5straa
+k2et
+5ketel
+ke2t3j
+ke3to
+ke2t3r
+kets5te.
+ketting5s
+4k3e2tu
+ket3w
+3k2eu
+keviet5
+ke4vl
+4k1ex
+2k3e2z
+2k1f
+2k3g
+2k1h4
+k3ho
+khoud5s
+1ki
+2ki2d
+4kied
+kie4sp
+kie4s4t
+kie5ste
+kie4tj
+kieze4
+2ki[ediaeresis]
+kijk5l
+k3ijs
+4kijv
+4k1ijz
+ki3lo
+kilo5v
+ki3na
+4kinb
+4k5indel
+kinds5te.
+4kindu
+kin3en
+5king
+kings5l
+2k3inh
+kinie4
+k3inko
+4k1inr
+2k1ins
+2k3int
+4k3inv
+ki3o
+ki2p3l
+ki5se
+ki3s4p
+kit4s
+kits5te
+k1j
+2k3ja
+k3jew
+k3jo
+2k3ju
+4k5k4
+kke5nei
+kker4s
+kkers5ten
+kke3st
+1k2l4
+5klac
+k3ladi
+kla2p1
+k4las
+5klas.
+5klass
+k3last
+k3lat.
+k3latt
+3k4lav
+3k4led
+5kledi
+5kleed
+k5leer.
+4k5leg
+5klem
+4k5len
+k3ler.
+4klera
+k3lers
+k3les
+5k4le4u
+k5lic
+4klid
+k3lig
+2k3lij
+4klijs
+k4lim
+kli4me
+3k4lin
+k5lob
+4klod
+3klok
+5klok.
+k5loka
+k3loke
+k3lood
+5kloof
+k3lope
+5klos
+klots5te.
+2k5loz
+4kluc
+4kluih
+2k1m
+k3ma
+1k2n4
+4knam
+k4nap
+3k4nar
+5knec
+k5nem
+kni2
+5knie.
+knip1
+4k5niv
+3knol
+k3note
+2knum
+1ko
+ko4bl
+k4oc
+2k5oct
+4k1oef
+5koek
+koe4ket
+koers5p
+koes3
+koe3tj
+koets5te.
+koge4
+5ko5gr
+3k4ok
+ko5ko
+kol2e2
+kolen3
+2kolm
+5kolo
+ko4ly
+ko2m3a
+4komg
+kom5p
+k3omsl
+kom4str
+4komz
+konge4
+k4oni
+k3ontb
+kon4t3j
+kon4t3r
+koo4
+2k1oog
+kooi5tj
+koot3
+koot4j
+ko3pa
+4kopb
+4k3opd
+ko1pe
+ko5pen.
+4kopg
+3ko5pi
+5kopj
+ko2pl
+2kops
+4kopz
+2kord
+kor5do
+2k1org
+2k3ork
+kors5te.
+kor4ta
+kor4t3o4
+kor4tr
+ko3ru
+3k4o4s3
+4k3os.
+kos4j
+ko5sjere
+koso4
+4koss
+kot4st
+kots5te.
+4k1ov
+4k3ox
+2k3p
+kpi3s
+k4plam
+kpren4
+1kr4
+3kra
+k5raad
+kraads5
+kra4b
+4k5rad
+k5rand
+2k1rea
+2k3rec
+4k3rede
+k4ree4
+k5reep
+kreet3
+k3ref
+k2reg
+2k3rel
+2k1ric
+k3rijk
+k3rijp
+krij4t
+krijt5j
+k4rit
+k5ritm
+kroet5j
+2krol
+k4ron
+kron3t
+5kroon
+krop3a
+kro4to
+2krou
+k3ro5v
+3k4ru
+k5rub
+5kruis
+kru4l
+krul5a
+2ks
+k3sal
+ks3alm
+ks3an
+ks3ap
+ks1ar
+ks3as
+ks2e2
+k5sec
+ks3ed
+ks5ei.
+ks3ep
+k4serv
+ks3et
+kse3v
+ksges5t
+k4si
+k5sil
+ks1in
+k5sis
+k5sit
+ks1j
+k1sla
+ks3lab
+k4slan
+ks3le
+ks3li
+k4smo
+ks3na
+ks3no
+ks3nu
+kso4
+ks3om
+k5song
+k2s3pa
+ks5pand
+k4spar
+k1spe
+k3spi
+ks3poo
+k5spor
+ks3pot
+ks3pru
+k3spu
+ks5s
+ks4t
+k1sta
+k5staan
+k5staat
+k1ste
+ks5tec
+k4st3ed
+k3sten
+ks5tent
+kste4r
+kster5a
+k4sterr
+ks3th
+k3sti
+k3sto
+ks5ton
+k5stoo
+k4stop
+k5stot
+ks5trek
+ks3tri
+k3stue
+kst5uit
+k1sy
+4kt
+k1ta
+kt3aan
+k3taar
+ktaat5
+kt3ac
+kt3art
+k3te
+kte2c
+kt3eco
+k4tex
+kt1h
+k5tij
+kt3im
+kt3in
+k5tit
+kt3j
+k1to
+kt3om
+kto4p
+kt4or
+kt5ord
+kt5org
+kt5ori
+kt3o4v
+k1tr
+kt3res
+k5troll
+ktro3s
+k3tu
+1ku
+ku5be
+kui2f
+2kuit
+ku5k
+ku5me
+3k4u2n
+4k5uni
+5kuns
+ku2r
+ku3ra
+ku3re
+kur3s
+3ku2s
+kut3
+2k[ucircumflex]
+2kv
+k3ve
+kven4t3
+5k4waal
+2k3wac
+k2wad
+k1wag
+5k2wal
+5k2wam
+3k4war
+k5ware
+4kwat
+k3weer
+2kweg
+k1wei
+5kwel
+kwen4st
+kwens5te.
+4k1wer
+5k2wes1
+kwes5tr
+5kwets
+k2wie
+k3wijz
+k4wik
+2kwil
+2kwin
+k3wind
+4k1wo
+ky3
+2kz
+4l.
+2laan
+4laand
+l3aanh
+laa5re
+laar5tj
+laat5sta
+l3abon
+2lac
+la4ca
+5lach.
+la4cha
+5lache
+lach5te
+lacht4s
+l4aci
+la2d5a
+la4det
+2ladj
+4ladm
+la2d3o
+4la2dr
+lad5s
+la2du
+4ladv
+3lae3
+2laf
+la2fa
+la3fl
+lafo2
+4l3afs
+la2g3a
+la4gent
+la2go
+lag3r
+lags4
+lag5sa
+la2k3a
+la4ki
+la3kr
+2lal
+3lald
+lal4o
+lam4p3j
+lam4p5l
+lam4po4
+lam4s3p
+l4an
+4la2na
+lan3ac
+3land
+lan4da
+land5aa
+lan4d5oo
+lan4d3r
+lands5te.
+la4n3ec
+lanel5
+5lange.
+lang5l
+lang5sp
+lang5sta
+lan4k3a
+lan4k3l
+lank3w
+4lann
+la4nor
+lan2s
+lans3l
+lan4st
+lan4t3j
+lap3ac
+la3pi
+lap3l
+lap3o4
+la5pre
+la2p3u
+la3q
+lar3da
+2larm
+4larm.
+lar5st
+las3a4
+lase4
+la2si
+las3to
+5lastt
+la3te
+la4t3he
+lat5j
+la4t3ro
+4lats4
+lat3sl
+2lau
+5lauf
+lau4st
+l2auw
+la3v
+lava3
+la4vo
+5law
+l4az
+4lazi
+la4zij
+2lb4
+lber4t
+lbert5j
+lboot4
+2l1c
+lce4l5
+4ld
+ldaat5
+l2d3ac
+ldak4
+ld3alf
+l4da4r
+ld3arc
+ld3ari
+ld3art
+l2dau
+ld3eco
+ldeks5
+l4d3e4z
+ldi3a
+ld5oef
+ld3oli
+l2d3om
+l2d3on
+ld3oog
+l4do4p
+ld3opi
+ld3ord
+ld1ov
+l3dr
+l5drade
+ld3ram
+ld5rang
+ld3rat
+ld1re
+l5dree
+ld3rij
+ld3roe
+ld3rol
+ld3rom
+ld3rui
+ld3sa
+ld3sl
+ld3sma
+ld5sp
+ld5ste
+l3du
+ld3uit
+ld3uu
+ld1w
+le2a
+le4ane
+le3at
+leba4l
+lecht5st
+lee4
+leeg3
+leege4
+leeg5i
+4leekh
+lee5l
+leem3
+3leen
+4leep
+leep3o
+lees5e
+lees5l
+lees5po
+2leeu
+2leff
+lega5s
+leg3ec
+leg3l
+le4go
+le5go.
+leg5s
+3leidi
+4leier
+4leig
+lei5tj
+leit5s
+le4ko4
+4leks
+lek5str
+5leld
+le2le
+5leli
+l3elp
+le4n3a4d
+len3a4k
+3lene
+le4n3e4m
+len5kw
+le2no
+len3op
+len3sf
+len3sm
+4l3en5th
+le5o
+4lep.
+3le1ra
+le4r3a4k
+le5rei
+le4r3e4v
+ler5g4
+le3r4o
+le4ron
+ler4sl
+ler5spo
+4l3erts
+le2s
+le4sa
+le3sc
+les5et
+le3s4h
+les3m
+le4sp
+le3spe
+4l3essa
+les3t
+les4ta
+les5taa
+le5s4tel
+le3str
+le4s3u
+le4t4h
+le3tha
+let4i
+le5tin
+le4top
+le2t3r
+le3t4re
+let4st
+lets5te.
+le2t3u
+leu3ko
+leum3a
+leur4o
+leus4
+leu5ste
+5leuz
+leven4s
+levink5j
+4lexc
+4lexp
+l2fac
+l3f4ag
+lfa3s
+l2fau
+lfe4n
+l4f3end
+lf3ene
+l2fe2z
+lf3li
+l3f4lo
+lf3lu
+l4fo
+l5foe
+lf3o4l
+lf1op
+lf5ord
+lf5org
+l5fou
+l1fra
+l3fru
+lfs5ei
+lf4sl
+lfs3le
+lf2s3m
+lf4so
+lft4
+lf5ta
+lf5tw
+lf3uu
+2l1g
+l5gaar
+l4gap
+lge4n5a
+l3gla
+l3g4oe
+l3gog
+l3goo
+lg3s4
+lgse5
+4l1h
+1li
+li3ag
+li3am
+licht5st
+3lid
+5lid.
+5lidm
+lid3s4
+lie4g3a
+lie4gr
+lie3ka
+lie4sp
+lie3s4t
+lie4to
+li3eu
+3li[egrave]
+3lift
+l4ig
+li3go
+lijk3a
+lij4m3a
+4lijmv
+5lijn
+4lijp
+3lij2s
+lijst5a
+4lijt
+4l3ijz
+li5kr
+lik5sp
+li4kw
+li3kwi
+lim4a
+li3mi
+2limp
+lim4p3j
+lin4da
+4linf
+4l3inh
+li5ni
+lin4k3a
+3linn
+l3inna
+2linr
+2l3ins
+lin4t3j
+l3inv
+4linz
+li3ob
+li5om
+li5o5s4
+li3ot
+li2pa
+li3pi
+li2p3l
+li5see
+2liso
+l5isw
+li1t2h
+lit3r
+lit4sa
+lit4sl
+lit4st
+lits5te.
+lit5sten
+2lix
+4l1j2
+lk3af
+l4k3ank
+lk3arm
+lk3art
+l3ke
+l4k3ei
+l4k3em
+lken5e
+lken4s
+l4k3ep
+l3ki
+lking4
+lk3laa
+lk3lag
+l5klas
+l4k3lev
+l5klim
+l3ko
+l5koe
+lk3ont
+lkooi5
+lk3opb
+l5kor
+l5kou
+l5kra
+l2kre
+lk3rep
+lk3res
+lk3rij
+l2k3ro
+lk2s
+lk4se
+lk4so
+lk3son
+lks3oo
+lks5taa
+lk3ste
+lks5tel
+lks5tr
+l4k3uu
+l3kw
+lk3wi
+l3ky
+2l1l
+l5la
+lla3d
+lla3g4
+lla5tr
+ll3eig
+lle3k
+ll4el
+lleo4
+ller5on
+lle3s4m
+lle5th
+llevie5
+l3l4i
+l3lo
+llo5f
+l5lon
+ll3sh
+2lm
+l3maa
+lmaat5
+lm3a4ca
+lm3af
+lma5[idiaeresis]
+l3mak
+lm3arc
+lm3art
+lma3s2
+lm3au
+l3me
+l4med
+lm3edi
+l4m3ep
+lme2s
+lme5te
+l3mi
+l3mo
+l5mog
+lm3oli
+lm3or
+lmro4z
+lm5sc
+lm3sh
+lm3su
+2l3n
+lni4s
+lo3a
+2lobj
+lo4boo
+loe4d5a
+loed3r
+4loeg
+loe4gr
+loen4st
+loens5te.
+4loes
+l3oeu
+5loev
+lo4faa
+lof5d2
+lof4s4
+log4
+log5l
+lo3go
+5logr
+log2s3
+lo4k3ar
+lo2k3o2
+lo4kr
+lo2ku
+2lo2l
+lo3la
+l3oml
+lom4p3j
+lom4p3l
+l3omt
+l3omv
+4lomz
+3lon.
+4lond
+5long
+lon4gaa
+lon4g3o
+lon4gr
+lon3o
+2lont
+lon4t3j
+3look
+loo5pi
+3loosh
+loot3e
+lo3pa
+4lopb
+l3opd
+lo1pe
+2l3oph
+2l3opl
+lop4la
+2lopn
+lo3p2r
+4lopt
+4l3opv
+4l3opw
+2lor
+3l4or.
+lo3re
+4l1org
+lo3ri
+l4o1r2o3
+3l4ors
+lo3ru
+lo3spe
+lost4
+los5to
+lo4s5tr
+lo5s2u
+lo2ta
+lot3a4l
+lo4tet
+lo2t3h
+lot3j
+lo4tof
+lot3r
+lou3s
+lo3v
+2love
+3lo5z
+4lp
+l1pa
+l3paa
+lp3aan
+lp3a4g
+lp3am
+l3par
+l3pas
+l1pe
+lpe2n
+l2pex
+l3pi
+l5ping
+lp3ins
+lp3j
+l1pl
+l3p4la
+l4plam
+l1po
+lp3of
+l3pom
+lp3on
+lp3ope
+l3pos
+l3pot
+l1pr
+lp3ram
+4l3r
+lraads5
+lrus5
+4ls
+l4saa
+ls1a2d
+ls3a2g
+l1sam
+ls3an
+l3sap
+ls3as
+l2sat
+ls4cor
+ls4cu
+ls3eco
+l4s3e2d
+l4sef
+l5sen
+l4s3e2p
+lsge4st
+l3s2hi
+l3si
+l4s3im
+l4sin
+ls3inj
+ls3ink
+ls3int
+ls4j
+ls5ja
+l3s4kel
+l3s2ki
+l1sl
+l3sla
+l2s4le
+ls5led
+ls5lee
+ls5leg
+ls5len
+l2s3li
+ls4lin
+l3slo
+ls4maak
+ls4med
+ls4mee
+l3smid
+ls3na
+l3sne
+l3sno
+ls3nor
+l3soc
+ls3of
+l3sol
+ls3op
+ls3o4r
+ls1ov
+l1sp
+l2spa
+ls3pac
+l3span
+ls3par
+ls4pe
+l3spi
+ls3pli
+l3spoo
+l4s5poot
+l3spor
+l2spr
+ls3pra
+l1st
+l3sta
+l4staf
+l4stak
+ls5tak.
+l3ste
+l4stek
+l4stev
+ls4ti
+l3sto
+l5straa
+ls5trak
+l5strat
+l3stu
+ls5ty
+l2su
+l3sur
+ls3us
+l3sy
+4l1t
+lt4aa
+lt1ac
+l4tam
+l5tame
+l5t4an
+lt4han
+l4t3hi
+l2t3ho
+l3thu
+lto4l
+lt3oli
+l2t3o4v
+l3tr
+ltra3s
+lt3rug
+lt3sl
+lt3sp
+lts5te.
+l3tu
+lu4b1
+lub5e
+lub5l
+lu1en
+3lui.
+5luia
+5luid
+luids3
+5luie.
+2luit
+luk2s
+luks3t
+lu3na
+3lunc
+2l3u2ni
+lu3sta
+lu3ta
+lut3j
+lut4st
+luts5te.
+lu3wi
+lven5s
+lvera4
+l1w
+1ly
+ly5i
+ly3st
+4lz
+lzooi5
+4m.
+1ma
+maas3
+maat5st
+m3act
+2m3adv
+ma5esto
+m3afl
+ma3fr
+2m3afs
+4m3afw
+m4ag
+ma3gl
+ma5go
+ma3gr
+ma[idiaeresis]4
+ma5ka
+ma5ke
+5ma3k4r
+ma3kw
+ma3l4a
+ma5lac
+ma4l5ent
+mal5st
+5m4an.
+man3ac
+m3anal
+man5da
+man5do
+mand4s
+5m4ann
+ma5no
+5man2s
+man4se
+mans5ee
+man4so
+mans3p
+man4s3t
+mans5ta
+man4th
+mant4r
+ma5pa
+ma3pr
+ma3q
+m4a5ri
+mariet5
+5m4ark
+mar3sh
+mar4s5t
+mar5ti
+ma1so
+ma3s4po
+5mass
+ma4ste
+ma3str
+ma5ta
+5mater
+mat5j
+ma4tom
+ma3tr
+mat4st
+mats5te.
+ma3v
+4mb
+m5bl
+mboot4j
+mbo5st
+mb4r
+2m1c
+2m1d
+m5da
+mdi3a
+mdis5
+m3do
+mdo3p
+m3dr
+m3dw
+1me
+me1c
+me5de
+5media
+5mediu
+mee5g
+mee3k4r
+mee5las
+mee3lo
+mee5re
+mee5ri
+5mees
+meest5al
+mee5stov
+mee5str
+m5eg.
+me3g2a
+mega5s
+m5egd
+m5egg
+m5egt
+me4i
+mei2n
+mei5tj
+m2el
+me4l4as
+mel5as.
+mel5dr
+mel4ko
+mel4kr
+5melo
+mel3s4m
+me4mi
+3men
+m4en.
+me3na
+men4as
+meng5ra
+men5k
+me5nor
+4menq
+men4s5uu
+men4t3j
+ment3w
+me5nu
+me3p2j
+2m3e2q
+me1ra
+me4r5aak
+me4r3a4k
+me4r4am
+mer5ante
+me4rap
+me3rau
+me4rav
+mer3ei
+5merk
+mer4kl
+mer4kn
+mer4kw
+mer5oc
+me5rong
+me3roo
+4m3eros
+me3rot
+mer4si
+mer4sl
+mers5m
+mers5ta
+me2ru4
+m4es
+me3s4h
+me4s4l
+mes5li
+me5slo
+mes3m
+me3so
+me4sp
+mes3pa
+me5spe
+me5spot
+me5stel
+mesto4
+mest5ov
+me3stu
+me5ta5n
+me3t4h
+3meti
+me5tr
+mets5te.
+meve4
+m3e4ven
+2mex
+3m[eacute]
+3m[egrave]
+3m[ecircumflex]
+2m1f
+mfa3t
+mf4l
+mf3li
+mf5lie
+m5fo
+2m5g
+mger4
+2m1h
+1mi
+3mid
+4mid.
+5midd
+mie5kl
+mie3st
+4m3ijs
+4m3ijz
+mi3kn
+5mili
+mi3lo
+mimie4
+m3imp
+mi5nar
+2minf
+5ming
+4minh
+2m5inr
+2m3ins
+mi5nu
+4m3inw
+m2is
+mis5f
+mi2s3i
+mi3s4la
+mi4st
+mi5stra
+mis5tro
+mi3t4a
+mi1tr
+mit4st
+mits5te.
+mit5sten
+2m1j
+2m3k2
+mkaart5j
+2m3l
+2m1m
+2m1n
+m5na
+1mo
+5mo.
+mo3a
+5moda
+5mode
+moed4s
+2moef
+5moei
+moers5t
+moe2s
+moes3p
+moes4te
+mog2
+5moge
+mogen4s
+mo3gl
+4mok
+5mole
+2moli
+mo4lie
+mol4m3a
+4molt
+3mom
+4m3omv
+mond3r
+mo5no
+5mons
+mon4so
+mon5ta
+3mooi
+2mop
+mo3pa
+m1ope
+m4opp
+mop4s
+mo3ra
+mo3r4e
+mo3ro
+mor4sp
+mor4st
+mors5te.
+5mos
+mo5sc
+mo4s5l
+mo3sta
+mo3t2h
+mot3j
+mot3ol
+mot4st
+mots5te.
+2m3oud
+5mouw
+mou4wi
+mo3v
+m3ox
+2m1p
+mp3ach
+m4p3af
+m5pan
+mp3arm
+mp5arts
+m4p3ec
+m5pen
+m4p3erv
+mp3ins
+m3pl
+mp3lam
+m5plan
+mp3leg
+mp3lei
+mp3lev
+mp3lie
+m4plu
+mp5olie
+m5pon
+mpon4g
+mp3ope
+mp2r
+mp3rec
+mp3red
+m5pres
+m4ps2
+mp5sc
+m5p4se
+mp3sh
+mp5su
+2m1r
+2ms
+m3sam
+ms3ana
+ms3ap
+ms2c
+ms3co
+ms3cu
+ms2j
+m3sje
+m1sl
+m2sle
+ms3len
+ms3lie
+m3s2m
+ms3ma
+m1sn
+ms3nee
+mso4
+m3sol
+ms3or
+m3s2p
+ms4t
+m3sta
+m1ste
+ms5tec
+m5stel
+m5sten
+m1sti
+m1sto
+ms5toc
+m4s5ton
+mst5s
+m3sy
+2mt
+m1ta
+mte5re
+mtes4
+mte5sta
+m1th
+m1to
+m3tr
+m1tu
+1mu
+mu5da
+mue4
+5muilde.
+2muit
+2muk
+mul3p
+mu2m3
+mu3no
+munt3j
+mu3sa
+mus5ta
+5mut
+mut3j
+muts2
+muts5te
+3muu
+5muz
+2mv
+mvari5
+mve4
+mvee3
+mver3e
+2m1w
+1my
+my3e
+2mz
+mze4
+mzet5
+4n.
+1na
+3na.
+3naal
+5n4aam
+4n1aan
+2naap
+n4aar.
+4n3aard
+5naars
+naars5tr
+naar5tj
+5naast
+5naat
+n3abd
+5nabe
+2nac
+na2ca
+nacee5t
+n2aci
+3naco
+4n3act
+na5d4a
+nad4e
+3nade.
+5n4a5den
+3nades
+3nadi
+4n3adm
+na5dra
+2n1adv
+5nae
+n3a[ediaeresis]
+4n1af
+na3f4lu
+n2a3g4
+na1h
+3nai
+3na[idiaeresis]
+n2ake
+na3k4l
+na3kr
+n3alb
+3n4ale
+5nalen
+4n3alf
+n3alm
+2naly
+4nalys
+3nam
+4namb
+name5st
+n4ami
+n3amp
+n3a2na
+n3ank
+3nant
+5nant.
+5nante
+n5antenn
+nan4t3j
+2nap
+nap3ac
+3na3p4l
+na3p4r
+nap3s
+nap5st
+2n1arb
+5nares
+2n3arg
+narie5t
+2n1arm
+3naro
+4nars
+nar4st
+nars5te.
+nar5sten
+4n1art
+nas2
+3na3sa
+na1s4l
+na1sp
+na3sta
+na3stu
+n4at.
+3n4ati
+nat5j
+4n3atl
+na3to
+nats4
+nat3sp
+5nau.
+5naus
+2na3v
+5naven
+3navi
+3nazif
+na4zij
+2nb
+nbe5st
+nbe5t
+nbots5te.
+2n1c
+n3ce
+nces4t
+n3che
+ncht2
+nch5tr
+nch3u
+n5co
+4nd
+n5da.
+nd3aan
+nd5aas
+nd3abo
+nd3act
+nd5adel
+nd3adr
+ndags5p
+nd3alf
+nd3alm
+n4d3ana
+n4dap
+n2dar
+nd3art
+n4das
+nd3ass
+nda3st
+n4dav
+n4d3a4z
+n3de
+n4d3edi
+n4d1ei
+nde5laa
+n4d3emm
+n5den.
+ndera4
+nder5aal
+nder5al
+nde4r5an
+n4d5e4rec
+nder5in.
+nder5og
+nde4ten
+ndi3a
+ndie4tj
+n4dijs
+nd5ijs.
+n4d3ink
+ndi3o
+n3d2ji
+n5do.
+n5doc
+n4d5of
+nd3oli
+nd3omd
+n4don
+n5dona
+nd5ond
+n5dons
+nd3ont
+nd3oog
+nd3ope
+nd3opp
+nd3ov
+nd5rap
+nd3rat
+nd1re
+nd4rek
+n4dres
+nd3rot
+nd3rug
+nd3s4cu
+nd4sec
+nd5set
+nd3s4i
+nd3sjo
+nd4sm
+nd3sp
+nd4spo
+nd4spra
+nds5taal
+nd3su
+nd3uit
+n2d3u4r
+nd5ure
+n4d3uu
+nd1w
+n3dy
+1ne
+3ne.
+ne5ac
+ne3am
+nebe4s
+3neck
+ne2cl
+ne4dit
+ne3do
+n3edu
+ne5dw
+nee4
+4need
+nee5k
+neel5d
+neel3o
+3neem
+4n1een
+nee5ri
+nee5se
+neet3a
+neet5o
+neet3r
+neet5s
+4n1eff
+ne3g2
+ne4gel
+negen5en
+nege4re
+4n1ei
+5neien
+n5eier
+n2eig
+5neigd
+5nei5t
+ne4k3r
+ne2la
+4nelem
+4nelf
+3nem
+4n3emb
+5n4eme
+4n3e4mig
+4n3emm
+4n3emp
+ne2n
+3n4en.
+5nenb
+5n4end.
+nen5do
+ne4n5enk
+ne4ni
+ne5nig
+nen5k4
+nen1o4
+5nenp
+nen5t4a
+ne5oc
+ne5ok
+ne5om
+neo5p
+ne5os
+ne5ot
+nep3ag
+ne3pe
+nepi3s
+ne1ra
+nera4d
+3n2e5re
+n3erfe
+2nerg
+ne4r3id
+ne3ros
+ner4sl
+ner4sp
+ner4st
+ners5te
+ner3u
+ne3ry
+3nes
+ness5a
+ness5t
+ne3sta
+nes3te
+nes4tei
+ne5s4tek
+ne4ter
+net3on
+net4si
+ne2u
+4neum
+ne3ums
+neu5ste
+2nex
+3n[eacute]
+2n3f
+2ng
+ngaat5j
+n2g1a2d
+ng3af
+ng3ana
+n4ga4p
+n2gar
+nga5sl
+n3gav
+nge4ad
+n4g3een
+ngels5te.
+ng3emb
+n5gen
+nge4rap
+nge4ras
+n4giger
+n4gigs
+ng3ij
+n4gind
+ng3ink
+n4g3ins
+ng4l
+ng5lad
+ng5lam
+ng5lan
+ng5led
+ng5leu
+ng2li
+ng5lin
+ng5lop
+n3goe
+ng3of
+n3go[idiaeresis]
+n2g1on
+ng5oor
+ng5op
+ng3ore
+ng3org
+n3got
+n3gr
+ng3rac
+ng3rad
+ng3rai
+n4gras
+ng5rass
+ng4red
+n4g4ri
+ng5rie
+ng3rij
+n5gron
+ng3rui
+ng2s
+ng4se
+ngs5lop
+ngs5lu
+ng4s5ne
+ngs5tak.
+ngs5take
+ngs5trek
+ng5stri
+ng3uit
+4n3h
+nhek5
+1ni
+n4i2d
+nie5kle
+ni3eri
+nie4s3p
+nie4tr
+3nieu
+ni4g3ee
+nig3ra
+nij3f
+nij3k
+2n3ijz
+ni5kr
+nik4s
+niks3p
+3nil
+3nim.
+5nimf
+n3imp
+2n3in.
+n3inb
+2n1ind
+2ninf
+ning3r
+2n3inh
+n3inj
+2ninr
+2n1ins
+2n1int
+2n3inv
+ni3o
+ni4on.
+ni4one
+ni5or
+ni5o5s4
+nip3l
+3nis
+ni4sau
+ni4sel
+ni4s3ev
+ni3sfe
+ni2s3i
+ni4sl
+nis5n
+ni3sot
+ni5stel
+nis5to
+ni3t2h
+ni1tr
+nits4
+n1j4
+n3je
+njes4
+nje5sp
+nje5st
+nje3t
+4n1k
+nk3aan
+nk5aard
+nkaart5j
+nk3af
+n5k4am
+n4k3arb
+nkar5s
+n4k3asp
+n3kef
+nk3eff
+nk3emp
+n3ken
+nken4e
+nker5ku
+nk3id
+nk2j
+nk3lad
+nk3lod
+nk3luc
+nk3lus
+n2k3na
+n3kne
+n4ko4g
+nk3oge
+nkoot5
+nk4ra
+n4krim
+nk3rol
+nk5se
+nk5si
+nk3sl
+nk3s4m
+nk3sn
+nk4s5o
+nk1sp
+nk1st
+n4kw
+nk3waa
+nk3wez
+nk3wi
+2n3l
+2n3m4
+n3n
+n5n2e
+nnee5t
+nne3ne
+nnepo4
+nne4p5ol
+nne5te
+nnet4j
+nn4i
+nning5r
+nnoot5
+nno5v
+3no.
+1noc
+1no3d
+2noef
+noen5s
+noes3
+noet5s
+n5offi
+n3o2ge
+n5ogi
+1nogr
+3no[idiaeresis]
+no3kl
+no3k2w
+no2li
+1nolo
+1nom
+4n3om.
+n2oma
+n3oml
+n1oms
+n3omv
+2n3omw
+2nomz
+3n2on.
+3n4onb
+3nonc
+4n5ond
+n4o5ni
+4nont
+3nood
+4n5oof
+4n1oog
+nooi5tj
+3noot3
+noot4j
+3no3pa
+no4p3as
+4n3opb
+no1pe
+n1opg
+n5opleidi
+no4poo
+no4por
+2nops
+2n3opz
+2nord
+no3re
+2n1org
+1norm
+4norr
+3nors
+3norz
+1nos
+no3sf
+no3sn
+no3sp
+1not
+3nota
+not5a4p
+5noti
+not3j
+not3r
+3nou.
+no3v
+3nova
+no4ve
+3nox
+3noz
+2n1p
+npers5te.
+npi4s5
+npoor4
+npoort5j
+n3ps
+2n3r
+nraads5l
+n5re
+n5ri
+2ns
+ns3a4d
+n3sag
+n1sal
+ns3alp
+n1sam
+ns3an
+n3sanc
+n1sap
+n3s4cal
+n5scho
+ns4ci
+n4sco
+nsee5t
+n4sef
+nse4g
+ns5ege
+ns3eis
+ns5emp
+n3si
+ns3idi
+n2sin
+n5sing
+ns3inj
+ns3ink
+ns3int
+n1sjo
+n1sl
+n5sla.
+n3s4laa
+ns5laag
+n5slag
+ns5lap.
+ns5lapp
+n4sle
+n5slep
+ns4let
+n5sleu
+n5slib
+ns3lie
+n5s4liep
+n5slim
+n5slip
+ns5lot.
+ns3m
+ns5mac
+n3s4me
+n3smij
+n3smol
+n4smu
+n1sn
+n2sna
+n5sne
+ns3nod
+n4snoo
+n4snot
+n1so
+n2s3ob
+n2sof
+n3sol
+n2son
+ns3ong
+ns3onz
+ns4opp
+ns4or
+n2s3ou
+ns1ov
+n4s3paa
+ns3pad
+n1spe
+n5spee
+n5spel
+ns3per
+n4spet
+ns4pi
+ns1po
+ns3pol
+n4spot
+n1spr
+ns5q
+ns5s
+ns4t
+n1sta
+nst5aang
+nst5aans
+nst3a4g
+n3stal
+n3ste
+ns5tec
+n4st3ei
+n4s5teko
+ns5teks
+n5sten.
+ns5tent
+n5ster.
+ns5tes
+ns3the
+n1sti
+n3stig
+n4stijv
+n1sto
+nst5oef
+n4ston
+n3stor
+nst5rade
+n5stree
+ns5trekk
+ns5troe
+ns5trog
+nst5roos
+ns5ty
+ns3uil
+n3sy
+2nt
+n3ta
+n5taal
+n4t5aard
+ntaar5tj
+n5tab
+nt3ach
+nt4act
+nt1ad
+nt3aga
+n4t3art
+nt4as
+n5t4at
+n3te
+n5tec
+n4t3ei
+nte4lo
+n5tem
+n5te2n
+nte5nach
+ntene5ten
+nte5rad
+nte4rof
+n3t[egrave]
+nt3ha
+n4tho
+n5thol
+n5tig
+nt3inw
+nt4jo
+n3to
+nt4og
+nt4ol
+n4t5oli
+n5ton
+nt4oo
+nt5oog
+n4top
+nt3opl
+nt3opm
+nt3opt
+n1tr
+nt3rec
+nt3rei
+nt3rel
+ntre4s
+nt5ribb
+nt5rij
+n5troos
+nt4rou
+nt3rus
+n5try
+nts3a
+nt5slu
+nt1sn
+nt4sno
+nt1sp
+nt4spr
+nts5pre
+nt1st
+nt5ste
+n3tu
+n4t3uit
+ntu4n
+n5twijf
+n5t4wis
+3nu.
+3nuc
+3nue
+nu3en
+nu3et
+4nuf
+2nui
+4n3uil
+nu2lo
+3num
+nu2m3a
+5numm
+nu2n
+3nunc
+n3uni
+2nu4r
+3n4u5ri
+nu5ro
+1nus
+nu4s3o
+nu3tr
+nut4st
+4nuu
+5nuut
+nuw5a
+nu2w3i
+2nv
+nve5na
+2n1w
+nx3
+n3xe
+nxo4
+1ny
+4n3yi
+4n3yo
+2nz
+nzet5s
+3[ntilde]
+4o.
+4oa
+o3aa
+o2ad
+o3af
+o1ag
+o3ah
+o3ai
+o1al
+oa2m
+o1a2n
+oa4tiev
+o3au
+o3av
+o3ax
+2o3b
+4ob.
+obal4
+obalt3
+3obj
+1o4bli
+ob5oor
+o4b5o4r
+4obr
+4oca
+ocaat5
+5o2cea
+o3cha
+o1che
+o3chi
+o3cho
+o3chr
+ocke4
+4o3co
+oco3a
+oco3s4
+oc3t4
+od5ac
+oda3g
+ode4m5ar
+ode4mo
+ode5re
+odes4
+odi3a
+o5dru
+od5sc
+od5sei
+od3s4i
+od2sl
+ods5lam
+od5slan
+od3sli
+od5smak
+od4s3o
+od3spo
+od4spr
+ods4t
+od5sta
+od4ste
+ods5te.
+od5stek
+od5sten
+od3w
+o4e
+oe5an
+oe3as
+oe2d3a
+oeda4d
+oede4n
+oe2d3o2
+oe4dr
+oed3re
+oed3ri
+oed3ro
+oe2d3u
+oed3w
+oe3e
+oe5er
+oe4f1a
+1oefe
+oe2fi
+oe2fl
+oef3la
+oef5le
+oef3lo
+oe4f5o4
+oe2f3r
+oege3l
+oeg5ij
+oeg1l
+oe4gou
+oeii4
+oei3n
+oei5s4
+oei5tj
+oei3tr
+oe4kaa
+oek5erk
+oeke4t
+oe2k3l
+oe4k3op
+oe4k3r
+oe2ku
+oek1w
+oe4lap
+oe4lar
+oel5dr
+oe4l3ei
+oe3lem
+oel5f
+oelo4
+oe5loe
+oelo5p
+oel3sp
+oe4m3ac
+oem3o4
+oen3al
+oe5n4e
+oen5gr
+oen3o
+oen4sn
+2oep
+oep5ind
+oe4pl
+oe5plo
+oe4p3r
+oe3pra
+oe4ps
+oeps3e
+oe2p3u
+4oer
+oe1ra
+oe4raa
+oer5aal
+oe4r3a4l
+oer4e
+oer5ei.
+oer5eie
+oero2
+oe3roe
+oer3og
+oer5om
+oer4sl
+oer4sp
+oer4sta
+oers5tak
+oers5te.
+4oes.
+oe3sfe
+oe3si
+oe4sli
+oe4s3o4
+oes4ta
+oes4th
+oe3sto
+oe4taa
+oe2t3h
+oe5t4i
+oe2tj
+oe4t3o4
+oe5toe
+oe4t3ra
+oet4s3p
+oet3w
+2o[ediaeresis]
+of3ar
+of3at
+o4fav
+of4d1a4
+ofd3ei
+of2d3o
+of2d3r
+ofd3w
+of3l
+o4fli
+o4flo
+4ofo
+of3om
+o3foo
+of3op
+o3for
+of3ox
+of1r
+o3f2ra
+of5se
+of4sl
+of5sla
+ofs3le
+of2sp
+of3spe
+ofs3pl
+of3spo
+ofs3pr
+ofs3tr
+ofs5tra
+4oft
+of4tu
+oft3ur
+oft3uu
+of3ui
+og5ac
+oga4l
+og3al.
+og5de
+og3di
+oge4d
+oge5laa
+ogel5ei
+2ogem
+o3ger
+oge4ro
+oger5on
+oge4s3t
+2og5h
+1ogig
+og1l
+og5ne
+og3op
+og3sp
+og3sta
+og4st5ei
+og3sto
+og4ston
+og4str
+ogs5tro
+og3ui
+o3gy
+2o1h
+3ohm
+4oi
+oi3do
+oi1e
+oi3j
+oi5k
+o3ing
+oi3o4
+oi3s4
+oi5sc
+ois2p
+oist2
+ois5tj
+o3[idiaeresis]
+2o1j
+2ok
+o3ka.
+o3kaa
+o4k3aas
+ok3ab
+ok3ag
+o3kal
+ok3ank
+o4k3a4z
+ok3ef
+o2k4l
+ok5let
+o4kli
+ok5lu
+o2k3n
+ok3o2l
+ok3op.
+ok3o4pe
+okos5
+o2k3ou
+o2k3r
+ok4ra
+ok1sa
+ok3s4l
+ok3sn
+ok5spri
+ok1st4
+oks5te.
+ok5sten
+ok4s5tr
+ok5te
+okter4s
+oku4
+ok3ur
+ok3uu
+ok1w
+ok2wi
+o1la
+o3l4ab
+ol3ac
+o3lal
+ol3a2p
+ol3arm
+ola3s4m
+4old
+ol3d4o
+ol3d2w
+o1le
+o3le.
+ole5g
+ol1ei
+ol3eks
+ol3emm
+o3len
+o5ler
+oleu2
+ole3um
+ol3exa
+ol2fa
+olf3l
+ol3fr
+olf5sl
+ol2gl
+ol2g1o
+olg5rap
+ol4gre
+ol4g3ri
+ol2g3u
+o3lia
+o3lic
+o5lid
+o3lik
+o3lin
+o5ling
+ol3int
+o3lit
+ol3kaf
+ol5ke
+ol2kr
+olk4s
+olk2v
+ollie4
+o3lo
+o5loc
+olo3k
+ol4om
+o4lop
+ol3op.
+ol3opp
+olo3s4t
+olo4ve
+ol4pra
+4ols
+ol5se
+ol4s5h
+ol5si
+ol1sj
+ol3s4l
+ol3s4n
+ol3so
+ol3sp
+ol5ster
+4o1lu
+ol3uit
+olu4r
+4oma
+om2aa
+om1ac
+om1af
+o3man
+4ome
+o4m3ef
+om3ela
+omen4s
+omen5ste.
+ome5ren
+omer5kl
+ome5sp
+ome5t
+om2i
+o4m3int
+4omm
+4omo
+omo5l
+omo3s
+om4p5ei
+5omro
+om3sl
+om4ste.
+om3ui
+3omz
+on1ac
+on4ag
+o4n3am
+on4an
+on3ap
+ona3th
+2onc
+on4d3ac
+on5d4as
+on5der
+ond5ete
+on4d3id
+ond5ijs
+ond5om.
+on2dr
+ond3re
+ond3ro
+ond5sj
+ond5slo
+on3d4u
+on4dur
+o5ne.
+o3neb
+o2n1e2c
+on3ei
+on3erf
+on3erv
+one3st
+4onet.
+on1e3v
+ong5aan
+ong5aap
+ong3ap
+4ongen
+ong5le
+ong2r
+ongs4
+ong5se
+ong3sp
+ong3st
+on5id
+o5nig
+on4k3ap
+onke5lap
+on3k2i
+on4k3lo
+on3kn
+on5kw
+onnes4
+onne5st
+o4n3of
+ono3l
+on1on
+o2n1ov
+on3sc
+ons4e
+on5sei
+ons2f
+on3s4m
+on2s3n
+ons5op
+on3sor
+on1s2p
+ons4pe
+on3spl
+on1st
+on5sten
+on5str
+4ont.
+on4taa
+3ont1h
+on4tid
+3ont1s4
+ont5sp
+3ontv
+1ont3w
+on1ui
+on3ur
+o4o2
+4oo.
+oo3c
+4oo4d
+ood1a
+ood1e4
+oo5de.
+ood1o
+ood1r
+ood3sl
+ood3sp
+4oof
+oo3fi
+oo4g
+oog1a
+oog3e
+oo5gi
+oog1r
+oogs4
+oog3sh
+oog3sl
+ook3a
+oo3ke
+ook5l
+ook3s4
+ook5st
+oo4k5w
+oo4l
+ool5a2
+oole2
+ool3ed
+ool5f
+ool5g
+oo5lig
+ool3ij
+ool3k
+ool1o4
+ool1u
+oom5a4
+oo3me
+oom3i
+oom1o4
+ooms5te.
+4oon
+oon5a
+oon5du
+oon3in5
+oon5k4
+oon1o
+oon5ta
+oo4p1
+oopa2
+oop5ee
+oop3o4
+oop3r
+oop4sp
+oor3a
+oord5aa
+oor5dop
+oor1e4
+oor3g4
+oor5i
+oor5k
+oor5m
+oor1o
+oor3sm
+oor5ste
+oor5sto
+4oort
+oor4th
+oo4s
+oos3a
+oo5se
+oos5n
+oo4t
+oot1a
+oot3es
+oot3h
+oot5o
+oot3r
+oot4sl
+o1[odiaeresis]
+2opa
+o4p3ac
+op3ad
+o4p3af
+o4p3ak
+op3am
+o3pan
+op3and
+op3at.
+op3att
+3opbre
+3opdr
+o3pe.
+op3ee
+op5eet
+op3ei
+o1pel
+o3pen.
+3o4peni
+o5per.
+o4pera
+op3e4te
+op3e4v
+4opf
+o1pi
+o5pic
+op3i2d
+opie5t
+op3ijz
+op3in.
+o5pina
+o5pis
+4op1j
+op3l
+op5los
+1opn
+o1po
+opoe3
+op1of
+o5pog
+o5poi
+o5pol
+op3ond
+o5poni
+op3ont
+op3ord
+op3o4re
+op3o4v
+op1r
+op3ric
+o4pru
+o4ps
+op5s2c
+op5se
+op5si
+3ops4l
+ops4m
+op3sma
+op3sn
+op3so
+op3sp
+op3sta
+op3su
+2opt
+4opt.
+op5tr
+op3ui
+o2p3u2n
+o1ra
+or3ach
+or3act
+or3adm
+or1af
+ora4g
+o4r3alg
+or3ana
+o5rate
+or4daa
+or4d3as
+or4denv
+or4do
+ord5ond
+ord3or
+ord3o4v
+or3dr
+or4drad
+ord3w
+o1re
+ore5ad
+4orec
+oree4
+ore4no
+or2gl
+o1ri
+o5ria
+3ori[ediaeresis]
+o5rig.
+o5rigere
+o4r3ink
+or3ins
+ork2a
+or5k4e
+or3kl
+or5kn
+or3kw
+or4m3ac
+or4mas
+or4m3ei
+or4n3ac
+or3ni
+orno3s4
+or3oe
+o3rol
+or1on
+or3ont
+or1oo
+or1o2p
+or3or
+o3ros
+or5ov
+4orp
+or4p3ac
+orp4s5c
+or3sag
+or5sc
+or5se
+or3sli
+or3smi
+or3so
+or4son
+or3sp
+or5s4pa
+or5spu
+or4t3ak
+ort5een
+or4t5ijl
+or2to
+or4tof
+or4t3oo
+or4tred
+ort5sp
+ort5ste
+or1u
+o3ry
+orzet5
+2os
+o4sac
+o5sas
+o3sau
+4o3s2c
+osca4
+o4sci
+o5s4cl
+os3cu
+o5sed
+os4el
+o5ser
+os3f
+os4fe
+o4sha
+o3shi
+os2ho
+o3si
+o4sj
+os5jer.
+o4sk
+os5ko
+os3l
+os5li4
+o4s3m
+os4n
+os5no
+o3s2o
+os3pa
+os3per
+os1pi
+os4pir
+o4spr
+os4s5m
+o2s3t
+os4ta
+os5taal
+os5taar
+osta3c
+ost3a4g
+os5tan
+os5tar
+o3stas
+o3stat
+os5te.
+os4tem
+o5stero[idiaeresis]
+os4th
+os4to
+os5toli
+os5tou
+ost3o4v
+os5tra.
+os5traa
+ost3re
+ost3ri
+o3stro
+os5trum
+os1tu
+o3sty
+o3su
+o5sy
+4o1ta
+ot3aar
+ot1ac
+ot3af
+o3tag
+ot3akt
+ot3app
+ot3art
+otas4
+o5tat
+o3te
+ot3e2d
+o5tee.
+o5tees
+o5teg
+ot3ei
+ote4lan
+o5ten
+o5ter
+oter5sp
+ote4st
+ote4t
+ot3eta
+o1th
+o2t1ho
+ot3hu
+o4tj
+otje5sp
+otli2
+o1to
+ot3off
+ot3olv
+o5tom
+ot3ont
+ot3opm
+oto5po
+ot3opr
+o5t4or
+oto3s
+2otr
+o1t4ro
+ot3ru
+ot5s4i
+ot2sl
+ot3sla
+ots3li
+ot3smo
+ot3sn
+ot3sp
+ot4s3pa
+ot4ste.
+ots5tek
+ot5sten
+ot4stu
+o1tu
+ot3ui
+o3tul
+ot5w
+4ou.
+ou5a
+ou1c
+ou4d1a
+ou4des
+ou2do
+ou1e
+oue2t3
+ou3k4
+ou4ren
+ou5ren.
+ou5renn
+ou2r3o2
+4ous
+ou3sa
+ous5c
+oust4
+ou2ta
+out3h
+out1j
+ou2t3o
+out1r
+out5sp
+out5ste
+ouw3a
+ouw5do
+ouw5ins
+o2v
+2o3va
+o5ve.
+2o5vee
+3o4verg
+over5sp
+over5ste
+o5ves
+2ovi
+ovi5so
+4ovl
+4o3vo
+4ovr
+ovu3
+4ow
+o1wa
+o1we
+o5wen
+ow3h
+o1wi
+ow2n
+o3wo
+ow3r
+o4x
+oys4
+ozet5
+[odiaeresis]3l
+[odiaeresis]1p
+[odiaeresis]pe1
+[odiaeresis]4r
+[odiaeresis]s4
+[odiaeresis]s5t
+[odiaeresis]5su
+4p.
+4paan
+paar5du
+paar5tj
+5paas
+3pab
+p3acc
+2pach
+pacht5s
+p4aci
+5pacu
+3pad.
+pa4da
+4padv
+pa3e
+4p3afd
+1pag
+pag2a
+pa4gen
+pa3gh
+p4a5gi
+3pak
+pa2k3a
+4p4ake
+pa4ki
+pa4k5l
+2p3alb
+3pale
+pal3f
+pa3li
+paling5s
+palle4
+palm5ac
+pal4mo
+pa4m
+pa3na
+pa4n3a4d
+5panee
+5panel
+4pank
+pan5sp
+pan4tr
+1pap
+pa4pe4t
+5papi
+pap3l
+pa3po
+pa3pr
+4par.
+3pa3ra
+p3arb
+pard4
+par3da
+3park
+par4ka
+par4k5l
+3parl
+4parm
+pa5ro
+4parr
+par5ta
+3parti
+part3j
+3partn
+pa5ru
+paru5r
+1pa4s3
+pa5sa
+pas5c
+pa5se
+pa5so
+pas4th
+pas5to
+pas5tr
+pa5te
+1path
+p3atl
+3pa3tr
+pats5te.
+2paut
+5pauz
+pa4vl
+5paz
+2pb4
+2p1c
+2p3d2
+pe4al
+4peci
+p3e2co
+3pectu
+1ped
+pe3de
+pe3do
+p4ee4
+3pee.
+3pee[ediaeresis]
+pee5li
+4peen
+5pees
+3peg
+1p4eil
+pei4l3a
+4peis
+pek5ee
+pe2k3l
+pe2k3n
+pek5s
+p4el
+pe3l4aa
+pe4l3ak
+pel5dr
+pe3le
+pe4l3ee
+pe4l3e4t
+pe3l4i
+pe3l4or
+pel5si
+pel3so
+pel3sp
+2p3emm
+pe3na
+pe4nak
+pe4nap
+pe4nau
+pe4naz
+p3ency
+pen5d4r
+penge5
+pen5k
+5penn
+pen3sa
+pen5sl
+pen3sm
+pen5sp
+pent4
+pen5to
+2p3epi
+pep3o
+pep5s
+p4er.
+pe1ra
+pera3s4
+per4at
+3perc
+pe4r5eg
+pe5req
+1peri
+peri3s
+per1o
+pe3ron
+pe5ros
+3pers
+per4sm
+per5sti
+per4str
+p2ert
+3pes
+pe3sa
+3pet.
+pe5ta
+5pe5ter
+3peti
+pe4t3ra
+pets5te
+petu5
+3peuk
+5peut
+1p[eacute]
+3p[ecircumflex]
+2p1f
+2p1g
+pge5s
+2p1h4
+4p3ha
+3p4hec
+p4his
+4pho
+pi3am
+pi5an
+pi4at
+2pid
+piek5la
+5piep
+pie4r3o
+pie4s3p
+pie4tj
+pi2g5a
+pi3gl
+3pij.
+pij3k
+pij5ke
+pij4li
+3pijn
+5pijp
+pij4p3a
+2pijz
+pi4k3l
+pilo5g
+pi5nam
+2pind
+3pinda
+3p4ing
+5ping.
+pin4ga
+pin5gri
+4p3inj
+pink3r
+pink5s
+4pinr
+2pins
+pin4ta
+pi5o
+pis5n
+pis5ta
+pi3th
+pit3j
+pit3r
+pit4sp
+2p1ja
+pjes5
+p3ji
+p1jo
+2p1k
+pkaart5j
+p2l2
+p3la.
+plaat5j
+2p3lad
+pla3di
+4p3lamp
+4p3lang
+p4lant
+p3lap
+1p4las
+3p4lat
+pla4t3r
+5p4lay
+p4lec
+plee5tj
+p3leid
+3p4len
+p3lep
+pleu5ro
+p4lex
+2p3lig
+4plij
+p4lom
+p3lone
+p5lood
+plooi5tj
+p3loon
+p3luie
+2p1m
+pmans5t
+2p1n
+p3na
+3pneum
+3po.
+poda5
+3poei
+poe2s3
+poes5t
+poets5te.
+3poez
+3po[ediaeresis]
+p2ofa
+3pogi
+po5gr
+po2k3i2
+po4kol
+1pol
+po5l4o
+polo3p
+pol4s
+pols5te.
+1pom
+2p3oml
+3ponds
+pon4sm
+pon4st
+pons5te.
+pon5ta
+5pony
+poo3d
+poo5de
+4poog.
+3pool
+poo5len
+4poor.
+poor4tj
+poot3
+po4p3a
+4popd
+2pope
+pop5h
+2p3org
+2p3ork
+po3ro
+p4ort
+5portef
+por4to
+por4t5ra
+po3ru
+1pos
+po1sa
+po3sf
+po4taa
+po4t3as
+po5te
+potes5t
+pot1j
+pot3r
+3poul
+po3v
+4p3p
+p5pa
+p5pe
+ppe4l3o
+ppe5ni
+pper5ste
+ppie5k
+ppij5p
+p4ps
+pr4
+p2ra
+3pra.
+p5raad
+praat5j
+p5rad
+3prakt
+4pram
+p5rand
+3prao
+4p3rap
+p4rat
+p4rax
+4preeku
+1prem
+p3remm
+3prent
+pren4t5j
+3pres
+p3reso
+3pret
+pre4t3j
+pret3r
+4pric
+4p3riek
+4priet
+prie4t5j
+1prij
+3prik
+3princ
+pring5s4
+5prins
+3p4rio
+3p4riu
+5priv
+5p4rob
+3p2roc
+1p2rod
+p3roed
+3proef
+proet5j
+3proev
+5p4rof
+5p2rog
+1proj
+pro3la
+3prom
+p3rood
+prooi5
+pro5pa
+p4roq
+3pros
+pro5sc
+pro4s5t
+pro3t4a
+3proto
+3pro5v
+4proy
+pru2t
+prut3o4
+2ps
+p3sab
+ps3a2g
+p3sak
+ps3ar
+ps3ass
+4pse
+ps3erk
+p4s3et
+p3si
+p4s3i2d
+p4sin
+p5sis
+p1sl
+ps3le
+ps2me
+ps5mi
+p4s3na
+ps3neu
+p4sof
+p3sol
+ps3opt
+pso4r
+p1sp
+ps2pl
+ps3ple
+p1s4t
+p3stat
+p3ste
+ps5tent
+ps5tes
+ps5th
+ps3tor
+ps5tron
+p3stu
+ps5ty
+3psy
+5psyc
+p3sys
+4p1t
+pt3ad
+pt3alb
+p3te
+p2t1h
+p5ti
+pt3j
+p4t3o4v
+p3tr
+pt3ric
+1p2u
+3pub
+pu3ch
+pu3e
+puil3o
+pul4st
+3pun
+4pun.
+punt3j
+3put.
+puter5in
+put1j
+pu2t3o
+put3r
+put4st
+puts5te.
+2pv
+pvan4
+pvari5
+2p1w
+1py1
+2p5z
+1q
+5qe
+qu4
+que4s
+5quo
+4r.
+r2aa
+2raan
+4raand
+3raar
+5raar.
+4r3aard
+5raars
+raar5tj
+2rac
+ra4ca
+ra3ce
+5racl
+rad4a
+3radb
+ra5den
+ra3di
+5radia
+3radio
+4radm
+4r3adr
+3rad3s
+4radv
+2rafd
+r4aff
+raf5ond
+ra3fra
+3ragez
+ra5gi
+ra3g2n
+ra5go
+rag4s
+3rais
+raket3
+ra3k4l
+rak5r
+4r3a2la
+ra4l3ee
+4r3alf
+r3a4lim
+r3alt
+ra4man
+r5ameu
+ra3mi
+r2amp
+4rana
+ran4dr
+ran4g3o
+ran4gr
+r5angst.
+ra4nim
+4ranj
+ran4kl
+rank3w
+ran4sa
+ran4st
+ran4t3j
+r3antw
+ra3o
+4rap.
+ra3po
+4rappa
+rap5roe
+ra3q
+2r3arb
+r4a5re
+4rarit
+2r1arm
+4r3arr
+2r1art
+ra5sei
+ra4sk
+ra4sl
+ra1so
+ra2sp
+ras3po
+rast5ri
+r4ati
+rat5j
+ra4tom
+ra4tra
+ra5tri
+rat3sp
+rat4st
+rats5te.
+ra3t4u
+2rau
+3raus
+r1aut
+5ravr
+ra4zij
+rbe4ti
+r1c
+r3ce
+rces3
+r3chi
+r3co
+2r1d
+r4d3act
+rd3alk
+rda2m
+rd5ama
+r3dan
+r2d3ar
+rd3ei
+r4d5e4las
+rden5dr
+rde5o4
+r4derva
+rde5s4t
+rdi3a
+rdi5o
+rd5l
+r3do
+r5doc
+r4d3ol
+rd5olie
+rd3ont
+rd3oos
+rdo3pe
+rdo3v
+rd3ras
+rd3res
+rd5roos
+rd2ru
+rd3sa
+rd3s4c
+rd3so
+rd1sp
+rds4t
+rd5sta
+rd5ste
+rd3su
+r3du
+rd2wi
+rd5wo
+3re.
+1reac
+re4ade
+4reak
+re3amb
+4re5at
+re3co
+3recr
+rec5ta
+3reda
+3redd
+rede4s3
+4re4diti
+3redu
+re5dw
+ree4k
+2r1een
+ree3n4e
+r5eenh
+ree2p
+reeps5
+ree5r4ad
+4reers
+reer5ste
+r3eerw
+ree4s
+ree5sh
+r4ef
+4refb
+2reff
+3refl
+re3fu
+1reg
+4reg.
+4regd
+rege5ne
+rege4s
+4regg
+3regi
+re3gl
+4regt
+4reie
+4reil
+4reind
+rei5tj
+5reiz
+re4kap
+5rekeni
+re2k3l
+re2k5n
+re4ko
+re4k3re
+rek3sp
+re4ku
+re1kw
+rel4di
+rel4d3o
+reld3r
+re4l3ei
+rel5k
+re4lu4r
+3rem.
+re4mai
+remie5tj
+re5mo5v
+2remp
+3r4en.
+re2na
+re4naa
+ren5aar
+re5nade
+re3nal
+re4n3an
+ren3a4r
+r4end
+5rendee
+r5endert
+re5ne.
+re4nel
+re5nen.
+ren5enk
+ren3e4p
+re5ner.
+ren5erf
+ren5erv
+5renf
+2r1eni
+5r4enkl
+r4enn
+re4noc
+ren4og
+ren4opl
+re3nov
+5r4enp
+4renq
+ren4sl
+r4ento
+r3entw
+r5enveer
+re4of
+re4op4
+re5pa
+3repet
+re4pie
+4req
+re3qua
+4r1erf
+2r1erg
+re3r2o
+rer4s
+2r3ert
+4r5erv
+2rerw
+re3sa
+re5se
+re4sl
+res5le
+res3m
+re2s1p
+res3t
+re4tem
+re3t4h
+ret4i
+re4tik
+re5tin
+2retn
+re4t3o4g
+re4t3oo
+rets5te.
+re2u
+reur5es
+reus4t
+reu5ste
+3revis
+3revo
+2r3ex
+r4f3aa
+rf3act
+r2f3a4g
+rf3al
+r3fas
+r3fe
+r4f3eng
+r1fl
+r4f3lag
+rf3lev
+r2f3li
+rf3lus
+r4f3op
+r1fr
+r4f3re
+r5frea
+rf2s2
+rf3sm
+rf3sp
+r4f3u4r
+rf3uu
+r1g
+r4g3ab
+rg3amb
+r4g3een
+rg3ei
+rg4eis
+rgel5dr
+r5gen.
+rge4ra
+rge5rap
+r4g3ins
+r5glas
+r3glo
+r4g3lu
+rg4o3v
+r5grij
+rg3rit
+r3g4ro
+rg1s4
+rg2sm
+rg5so
+rg4s5pr
+r3h
+ri5abel
+ri4ag
+ri2ak
+ri5an
+rias4
+ri4av
+ri4bl
+4rice
+ri3co
+ridde4
+ri3di
+ri4dol
+ri4doo
+rie5dr
+rie4k5ap
+rie5kl
+rie3kw
+rie4la
+riel5aa
+rie4lei
+rie4ro
+rie4ta
+riet3o
+ri1eu
+ri3fl
+ri3fr
+r4ig
+ri4gaa
+ri3gl
+5rigste
+r4ijl
+4r5ijl.
+r5ijld
+r5ijlt
+rij5o
+rij3pl
+rij3pr
+rij3sp
+rij5ster
+rij4str
+4rijv
+ri4k5l
+rik5n
+ri3k4o
+ril5m
+ri3ma
+rim4pr
+4r3inb
+4rind
+ri5ne
+4r5inf
+r4ing
+4r5ingan
+r5ingeni
+ring5l
+4r3inh
+ri4nit
+rin4k3l
+r3inko
+4rinkt
+r3inl
+4r3inna
+4r1inr
+4rins
+r3inst
+4rint
+4r1inv
+ri5on
+ri3o5s
+ri4sam
+ri3sc
+ri3sot
+ris5to
+rit3j
+rit3ov
+rit4st
+rits5te.
+rit5sten
+3ritt
+r5j4
+rjaars5
+r5ka.
+rkaart5j
+rk3adr
+rk3af
+r2kah
+rk3ang
+r4k3art
+r2k3ei
+rke4n
+rken4s
+rker4sl
+r4k3erv
+rke4s
+rke5stree
+rke5strer
+rk5iep
+rk3ijv
+rk3inb
+r4k3ink
+rkjes5
+rk3lag
+r4k3lat
+rk5leid
+r2klo
+rk3loo
+rk3lus
+r3kn
+r4kne
+r2kob
+rk3olm
+rk3omg
+rkoot5
+rk3opg
+rk3ord
+rk5os.
+rk5oss
+rk2r
+r5k4ran
+rk4ri
+r5kris
+r5kron
+rk1s
+rk3s4f
+rk5si
+rks4p
+rk4t5e4v
+rkt3h
+rk4ti
+rkt3o
+rkt1r
+rk3uit
+r1kwa
+rk3waa
+rk5wat
+rk3wee
+r1kwi
+rk3win
+r3l
+rlaat5ste
+rle4g3r
+rlink4s
+rlinks5te
+rlofs5
+rlui5t4
+r1m
+rmaf4r
+r4m3art
+r2m3eb
+r2m5eg
+rme4r3a4
+rmes3
+rme4t3j
+rmet5st
+rm3inh
+rmi2s
+r3mo
+r5moe
+r4mop
+rm3opm
+rmors5te
+rmos5f
+rm3s4a
+rm1st
+rm3uit
+rmun4
+2r1n
+r3na
+r5n4am
+r4n3ap
+rn3ars
+rnee5t
+r4n3ene
+rnes3
+rne5te
+rne4t3j
+r2n5id
+r2nin
+r2n1on
+rn3oor
+r5noot
+rn3ops
+r5not
+rn3ove
+rns4
+rn3sm
+rn3sp
+rn1st
+rn3sta
+rn3th
+rn5tj
+rn5to
+r3nu
+rnu5r
+ro1a
+ro5ac
+r4oc
+ro1ch
+ro3d4o
+3roe.
+4roef
+4roeg
+roe4g3r
+3roem
+roens4
+roen5sm
+roep3l
+roe4rei
+roet4j
+4roev
+3ro[ediaeresis]
+r5offi
+r4ofi
+ro3fl
+roges5
+1ro[idiaeresis]
+ro3kl
+3rokm
+rok3sp
+r4ol.
+ro2l3a
+role5st
+rol3g2
+2roli
+rol3ov
+ro5ma
+ro3mo
+4romz
+r2on.
+ron3a4d
+5r4onal
+ron4da
+ron4d3o
+ron4d3r
+ron4d5u
+r2one
+r2oni
+r2onk
+ron4ka
+r2onn
+r2o1no
+r2ons
+ron4ste
+rons5te.
+4ron2t
+ront3j
+ront3r
+ro3nu
+4ronv
+3roof
+2roog
+4roon
+2r1oor
+root5ste
+ro3pa
+ro4paa
+ro4pan
+4ropb
+ro1pe
+ro5pee
+ro4pin
+ro3p4la
+4ropn
+r4opo
+rop5rak
+rop3sh
+r4opte
+ro4pu
+ror5d
+ro3ro
+ro3sa
+ro5se
+ro3sf
+ro3sh
+r4o5si
+ro3sp
+ros4s5t
+ro5stel
+ros5tra
+ro5te
+ro3t2h
+rot3j
+ro5ton
+ro3tr
+rot4ste
+rots5te.
+r1oud
+3rou5t4
+ro3v
+ro4ve
+ro5veri
+4roxi
+3roy
+r1p
+r3pa
+rp3aan
+rp3adv
+rp3ank
+r5pee
+rp3eis
+rpi3s
+r2p3j
+rp4lo
+rp5lod
+rpoort5j
+r4p3o4v
+r4p3rec
+rp3ric
+rp4ro
+r3psa
+rp4si
+rp2sl
+rp3sli
+rp5spe
+rp4s5to
+2r5r
+rre4l3u
+rren5s4
+rre5o
+rreu2
+rri5er.
+rrie4t
+rron5k
+rrot4j
+4rs
+rs3a2d
+rs3a2g
+r3sal
+rs3alm
+rs3amb
+r3san
+rs3ana
+rs3ap
+rs3ar
+rs3as
+rs4asse
+rsa4te
+r5schi
+rs2cr
+r4s3eis
+rsek5ste
+rs4et
+rseve3
+r2s3ez
+rs4fer
+rs4hal
+r3s2hi
+r3s4hoc
+rs3hot
+rs3ini
+rs3int
+r4sj4
+r5sjac
+r5sjou
+r5sjt
+r3s4kat
+r1sl
+r4slan
+r5slec
+r5slep
+r5sleu
+r5slib
+rs4lie
+r5sling
+rs3lob
+rs5loep
+r4s3loo
+r5sluis
+rs4m
+r5smaak
+rs5maal
+rs5mak
+r3sme
+r3smij
+rs5mis
+r5smit
+rs5mu
+r1sn
+r2s3na
+rs3neu
+r2s3no
+r1so
+r5sol
+rs3ong
+r2sor
+rsorkes5
+rs1ov
+r1sp
+r3spaa
+rs3pad
+r4s3par
+rs4pare
+r3spe
+r5spec
+r5spee
+r5spek
+rs4pene
+r4s3pet
+r5spit
+r5spoe
+r5spog
+r5spon
+r5spoo
+rs3pot
+r5spraa
+r4spu
+r5spul
+rs3put
+r1s4t
+r4s5taak
+rst5aang
+rs5tas
+r5stat
+r3ste
+r4s3te.
+r5ster.
+r5sterk
+rs5term
+r5sters
+r5stes
+rste5st
+r4steva
+r3sti
+r4stit
+r3sto
+rs5toma
+r4ston
+rst5ora
+r3str
+rs5trap
+r4st5red
+rs5trei
+r5stren
+rs5trog
+rst5roz
+r3sty
+r3su
+rs3usa
+r3sy
+4rt
+r1ta
+r5ta.
+r4t3aan
+rt5aand
+rt5aanv
+r4t1ac
+rt1ad
+rt3af.
+rt3aff
+rt3am
+r5tans
+r2tar
+rt3art
+r4tau
+r2tav
+rt5c
+r5teco
+rt3eig
+rt3eil
+rte4lei
+rt5emb
+r5ten.
+rte5nach
+rte3no
+rte3ro
+rtes4
+rte5sta
+r2t5e2v
+r4tha
+rt1he
+r3ther
+rt3hi
+r1tho
+rt3hol
+rt3hu
+rt3hy
+rt4ij
+rtij3k
+r4t3ini
+r4t3ink
+rt5jesc
+r3to
+rt3off
+r5tofo
+r5tok
+rt3om.
+rt3ond
+r4t3op
+r5tori
+r1tr
+r3tra
+rt4rap
+r4t3ras
+rt3rec
+r5treden.
+r3t4rek
+r4t3res
+rt3ri
+r4t3rol
+r2t4ru
+rt5ruk
+rt5rus
+rt4s5eco
+rt5sei
+rt2s3l
+rt3sle
+rts5li
+rt4slu
+rts5m
+rts5no
+rt4soo
+rt1sp
+rt4s3pr
+rts5ten
+r1tu
+rt3ui4t
+rt3w
+rt2wi
+5rubr
+rude3r
+ru1e
+4ruf
+ru2g
+ru4gr
+r5uitr
+ru2k
+4ru3ke
+ruk3i
+rul3aa
+rul3ap
+ru2li
+ru4l3ij
+ru3lin
+rul5s
+r2um
+ru2mi
+3run.
+r2und
+runet3
+4r5u2ni
+ru3niv
+ru4r
+ru5ra
+ru5re.
+ru5res
+r2u4s
+rus3e
+rus5tr
+4rut
+rut3j
+rut4st
+ruts5te.
+4ruu
+ru3wa
+rvaat5
+rval4st
+rvals5te.
+rvers5te.
+rves4
+rve3sp
+rvloot5
+r1w
+rwen4st
+rwens5te.
+r4wh
+rw2t3j
+r3x
+r3yu
+4rz
+rzet5st
+4s.
+5sa.
+s1aa
+1saag
+5s2aai
+saai4s
+3s2aal
+3s4aat
+1sab
+sa3bo
+2s1ac
+sa2ca
+3sacr
+s1adv
+2s1af
+3safe
+3safo
+sa3fr
+s5agg
+s4a3gi
+3sagn
+sa3go
+3sah
+3sai
+3saj
+2sak
+3saks
+s1akt
+s2al
+5sal.
+3sa3la
+3sald
+5salh
+s3all
+4salm
+sal5ma
+s3aln
+3s4a3lo
+3s2ame
+5samm
+sam5p
+4sa2na
+sa3nat
+s4anc
+s2a3ne
+s4ant
+san4t3j
+sa2p
+3sap.
+sa3pa
+2s3ape
+sa4pr
+sa5pro
+sa3ra
+s1arb
+3sard
+sa2re
+s1arm
+saro4
+sar3ol
+s4ars
+4s1art
+sart5se
+4sas.
+3sasa
+sa3sc
+3s4ast
+1sat
+3sa3te
+5sati
+2s3atl
+2s1att
+s3aud
+1saur
+3s2aus
+s1aut
+3sauz
+1sax
+4s3b
+s5ba
+s5be
+s5bo
+1sc
+2sca
+4sce
+5scena
+5sc[egrave]
+3s4ch2
+4sch.
+sch4a
+5schak
+5schap
+4schau
+5sche.
+s5chec
+4schef
+5schen
+4scheq
+5scher
+5schev
+5schew
+s2chi
+4schir
+5schol
+5schoo
+5schot
+sch5ta
+2sci
+4scl
+2sco
+3s4cola
+3scoo
+3scope
+5scopi
+3s4co5re
+3scout
+2scr
+4scris
+2scu
+2scy
+4s1d
+s5de
+s4dh
+sdi5a
+sdis5
+s3do
+s5dr
+s3dw
+3se
+5se.
+se2a
+se3ak
+se3al
+sear4
+se3au
+s4eb
+4s3ech
+se3cr
+5sect
+4secz
+s4ee
+4s5eed
+5seei
+4s1een
+s5eenh
+see4t
+see5ts
+4seev
+s1eff
+se3ge
+2s5e2go
+seg2r
+4s3ei.
+4s3eig
+s4ein
+5sein.
+5seine
+2seis
+seis4t
+sei5tj
+5seiz
+sek4st
+seks5ten
+se1kw
+s2el
+5s4el.
+sel3ad
+se4l3a4g
+se4lak
+se4las
+se3le
+4s3e4lek
+sel3el
+4se4lem
+4self
+se5ling
+4s3elit
+sel5k
+5selm
+selo4
+5selp
+5s4els
+sel3sp
+5selt
+se2l3u
+s4em
+se4m3ac
+s5emm
+sem3oo
+s4en
+5sen.
+se4n3a4g
+se5nan
+se4net
+5sengr
+5senh
+sen5k
+se4n3o
+4s5enq
+sen5tw
+5s4er.
+se1r4a
+ser5au
+5se3r4e
+se4ree
+se5ren
+s4erg
+5sergl
+s5ergo
+5sergr
+ser4i
+se5rij
+4s3ern
+se3ro
+se5rop
+ser2s
+sers3p
+ser3st
+sert5w
+se3ru
+s4es
+se5sc
+se3sf
+2s5esk
+5sess
+se4t
+se5ta
+4s3ete
+se5ti
+se3tj
+set3r
+se5t4ra
+set5st
+4s5etu
+set3w
+se3um
+se4ven
+4s1ex
+4sez
+se2ze
+3s[eacute]
+3s[egrave]
+2s1f
+4sfed
+s5fei
+4sfi
+4s5fr
+4sfu
+sfu5m
+4s5g
+sgue4
+s1h
+s4ha.
+sha4g
+s5hal.
+3shamp
+4she
+sheid4
+sheids5
+s5hie
+5s4hir
+sh3l
+4shm
+s3hoe
+s3hoo
+3s4hop
+s2hot
+s3hote
+3show
+s5hul
+1si
+5si.
+5s4ia
+si5ac
+si3am
+si5an
+5sic
+sici4
+si3co
+3sie.
+3sie[ediaeresis]
+sie5fr
+sie5kl
+siep4
+sies4
+sie5sl
+sie3so
+sie3st
+sie5ta
+sie5to
+si5[egrave]
+si1f4
+5s2ig
+si5go5
+s3ijv
+4s1ijz
+5sile
+4s5imper
+3simu
+5sina
+s3inb
+4s3inc
+4s1ind
+2sinf
+sing4
+3sing.
+s3inga
+s5ingeni
+sin3gl
+s3in5gr
+s3inh
+4si2ni
+4s3inko
+sin5kr
+4s3inm
+s4inn
+4sinr
+2s1ins
+2sint
+4s5inv
+4s3inz
+3sir
+5siro
+s3irr
+si4s
+sis3e4
+sis5ee
+sis3i
+sis5tr
+3sit
+si5to
+sito5v
+si3tr
+si4tru
+si5tu
+3siu
+3siz
+sj2
+4sj.
+3s4ja.
+5sjab
+4sj3d
+s1je
+2s3je.
+s5jeb
+3sjee
+3s2jei
+1sjer
+sje4ri
+s3jes
+3sjew
+3s4jez
+4sj5k4
+5sjof
+4s3jon
+sj3s2
+sjt4
+s5ju
+2s1k2
+skaart5j
+s5kad
+s4kele
+s5ken
+3s2kes
+sk4i
+3s2ki.
+3skied
+skie3s
+3ski[ediaeresis]
+ski5sc
+s2k3j
+s3ko
+s5kre
+sk5ruim
+sk3ste
+4sku
+s3k4w
+s2l4
+3s4la.
+5s4laan
+5slaap
+4s5laar
+4slab
+s4lac
+4s3lad
+3s4lag
+5slagm
+sla4me
+s5lamp.
+s5lampe
+4s5land
+3slang
+3slap
+5slape
+sla3pl
+4s3las
+2s3lat
+3s4la5v
+4slaw
+3s4laz
+s3led
+3s4lee.
+5sleep
+4s5leer
+s4leet
+slee5tj
+4s3leg
+2s5lei
+s5leng
+s3leni
+slen4st
+slens5te.
+3slent
+s4lep
+4s5ler
+s5les
+sle4t3j
+3s4leu
+s5leug
+s5leus
+5sleut
+2s5lev
+s3li.
+4s3lic
+4slid
+2slie
+s5lied
+s3lief
+3s4lier
+s3lif
+s5lig
+4s3lijf
+5slijp
+4s5lijs
+s4li4k
+sli2m
+slim5a
+s5lini
+4slinn
+s4lip
+4s3lit
+slo4b5
+2s3loc
+3s4loe
+3slof
+4s3log
+s3lol
+s3lood
+s5loon
+s5loos
+5s4loot3
+s3los
+3slot
+slo4tr
+4s3lou
+4s5loz
+4s5luc
+1s4lui
+4s5lui.
+4sluid
+5sluis.
+sluis4t
+slui5ste
+5sluit
+5sluiz
+4slun
+2s5lus
+4s3ly
+s1m
+4s5maat
+3smad
+3smak.
+3smal
+2s5man
+s5map
+s4mart
+4s5mat
+4s5mec
+5smeden
+3smeed
+5s4meet
+4s5mei
+4smelo
+4s5men
+4s5mes3
+5smid.
+smie2
+smies5
+s4mij
+s5min
+5smok
+s3mon
+5smuilden
+s5muile
+5smuilt
+s2n4
+s5nam
+5s4nap
+s4nar
+3snau
+3s4nav
+3s4ned
+3snee
+snee5t
+s5neg
+5s4nel
+2s5nes
+4s5net
+sneus4
+sneu5st
+s5neuz
+s3nie
+1s4nij
+s5nim
+3s4nip
+4s5niv
+4snod
+3s4noe
+s3nog
+2snoo
+s4nor.
+s3norm
+sno5v
+3snuf
+s4nui
+2snum
+3so.
+so4bl
+so1c
+s3oce
+3s4o3d
+1soe
+2soef
+3soep
+soes3
+2s1off
+3soft
+2so2g
+3so3ga
+s1oge
+so3gl
+3sogy
+5soi
+3so[idiaeresis]
+3sok
+s2ol
+5sol.
+so3la
+so3le
+so3lis
+3so5l4o3
+solo5v
+5sols
+s2om
+3s4om.
+5somm
+2s3oms
+s3omv
+2somz
+5s4on.
+3sona
+so5nar
+s3onb
+2s1ond
+2song
+3sonn
+3so3no
+s4ons
+2s1on4t3
+4s3onv
+s3onw
+3soo
+4s5oog
+4s3ook
+4s3oor.
+s3oord
+4s3oorl
+5soort
+2s1op
+3s4op.
+4s5ope
+so3phi
+s2o5po
+so3pr
+3s4opra
+sop4re
+s2orb
+s3ord
+2s1or3g
+4s5ork
+sor4o
+so3ror
+sor4st
+3s2ort
+sos4
+so3sf
+s4ot
+s3oud
+sou2l
+sou3t
+2sov
+s1ove
+3so5z
+4sp.
+sp4a
+5spaak
+s3paal
+5spaan
+5spaat
+2spad
+2spak
+5spake
+s4pan
+3spann
+4s5pap
+5spar.
+s4pari
+5sparr
+2spas5
+5spatt
+s3pau
+5s4pea
+4spectu
+3s4pee
+speet3
+4s3pei
+s4pek
+5spell
+4s3pen
+s5pen.
+spe4na
+s5pep
+4sper
+s4per.
+s5peri
+s4perm
+5s4perr
+4spes
+s3pez
+s3pid
+1s4pie
+spie5tj
+4spijn
+4spijp
+s5ping
+5s2pio
+s3pis
+spi5sto
+2s1p4l
+4s5pla
+s4plet
+s2pli4
+5splin
+3split
+s3plo
+s3plu
+sp4o
+s2poe
+s3poes
+4spo[ediaeresis]
+4spog
+4spol
+2s3pom
+s4pon.
+s4ponn
+s2poo
+s3pop
+5s4pore
+s4pori
+4s3pos
+5spots
+4spou
+4sprakt
+5spray
+s5pred
+5sprei
+s4prek
+4sprem
+4spres
+5spreu
+5spriet
+4s5prij
+4sprik
+4sprob
+4sproc
+4s5prod
+4sprof
+4sprog
+5s4pron
+s4proo
+4spros
+4s3ps
+4spt
+s2p4u
+4spub
+5s4pui
+4spun
+s4pur
+5spuw
+s4q
+4s5r
+sraads5l
+sro5v
+4s3s4
+ssa1s2
+s4sco
+s4s5cu
+s5se
+ssei3s
+sseo4
+s5si
+s5sl
+s4spa
+s5spaa
+ss5pas
+s5su
+s5sy
+s2t
+4st.
+5staaf
+5staan.
+4staang
+4staanw
+staart5j
+s4taat
+staat5j
+st3abo
+2s4t1ac
+3stad
+5stads
+2staf
+5staf.
+sta4fo
+s4tag
+s4tak
+5staki
+4stakk
+st3akt
+4s3tali
+5stam.
+5stamm
+3stamp
+3s4tand
+stan4s
+s4tap
+4stapo
+s4t3arc
+4stari
+2stas
+stasie4
+5statio
+4stau
+st3aut
+s4tav
+4stavo
+4s5tax
+4staz
+2stb
+2st5c
+2std
+4stea
+5steak
+4stec
+s5tech
+5steco
+3s4ted
+4stedu
+3steek
+3steen
+4steenh
+s5teer
+stee5t
+5stein
+5stekar
+5stekk
+5steldh
+ste4lee
+st5elem
+3stell
+5stem.
+5stemd
+5stemm
+4stemo
+4stent
+4stenu
+ste5ran
+4sterm
+ster5og
+st5e4ros
+5sterren
+s5teru
+4ste4s
+4s4t3ex
+s4t3e2z
+2stf
+4stg
+4sth
+s4tha
+st3hed
+st5heer
+st3hek
+s5them
+s3ther
+st1hi
+s4t1ho
+s4t1hu
+s4t3hy
+2stia
+2stib
+4sticu
+s4t3id
+5stiefe
+s5tiev
+4stijd
+3s4tijg
+5s4tijl
+st3ijs
+3stils
+s4tim
+st3imp
+sti5ni
+4stins
+4s5tint
+4stite
+2stiv
+st3ivo
+4s4t1j
+2stk
+4stl
+2stm
+2stn
+2stob
+2stoc
+4stoef
+3stoel
+5stoel.
+5stoele
+4stoen
+4stoer
+4stoes
+4stoez
+3s4tof
+st3o4ge
+5s4tok
+s4tol
+sto5li
+4stoma
+4stomz
+s4tong
+3s4too
+4st3oog
+stoot5j
+s4top
+st3o5pe
+st5opto
+4stora
+sto4rat
+4stord
+sto5ri
+4s5tos
+s4tov
+2stp
+1s4tr
+4stra.
+straat5j
+4st4rad
+3stra4f
+5straf.
+s5trag
+4strai
+4st3rec
+s5tref
+4streg
+4s3trei
+5strel
+3strep
+st3rif
+st5rijp
+s5tris
+4s3troe
+s5troep
+st4rom
+5strook
+5stroom
+4stroos
+st5roos.
+4s5trou
+4stroz
+3stru
+4strui.
+5struik
+4st1s4
+st3sc
+st5se
+st3sf
+st3sk
+st3sl
+st3so
+st5sp
+st5st
+2st5t2
+1stu
+4stub
+4stuc
+5s4tud
+4stuin
+stui5tj
+st5uitk
+5stuk
+2s4tun
+st3uni
+stu4nie
+4stus
+2stv
+2st3w
+2s4ty
+1styl
+s5typ
+2stz
+1su
+5su.
+5sua
+5su4b1
+suba4
+sub5e
+su5bl
+5suc
+5sud
+3sug
+2sui
+5suik
+4s1uit
+5suit.
+s5uitl
+5suits.
+5suk
+3sul
+5sum
+4s1u2n
+5sup
+5surv
+su4s
+sus3e
+suur5
+4s5v
+svaat5
+svari5
+sve4r
+sve5ri
+4s1w
+s5wo
+s4y
+3sy.
+4syc
+3syn
+sy4n3e
+1sys5
+4s5z
+4t.
+3taak.
+t4aal
+t5aando
+t3aank
+taan4st
+t3aanw
+t3aap
+taar5sp
+4t3aas
+taat4st
+taats5ta
+3tabe
+3tabl
+2tac
+ta2ca
+3t4aci
+4tad
+ta4de
+t3ader
+5tado
+t3adr
+tad4s3
+t3adve
+2taf.
+2t3afd
+5ta3fe
+4taff
+t3afha
+t4afr
+ta3fro
+4t1afs
+2t3afw
+4tafz
+ta4gaa
+5tagee
+5ta5g4l
+tag3r
+5taka
+5takg
+5takken
+ta3kl
+5takn
+5takp
+5tak3r
+5taks
+t2al
+ta3laa
+ta5lact
+4talb
+5tale.
+5talent
+ta3li
+5talig
+t5allia
+talm3a
+4talt
+ta4mak
+4tamb
+t3amba
+5tamen
+tament5j
+4tamp
+t3ampu
+5tan.
+4t3a2na
+ta3nag
+ta3nat
+tan4d3r
+tan4k5r
+ta3o
+t4ape
+5tapi
+ta3pl
+5tapo
+ta3q
+ta3ra
+4t3arb
+5tari
+4t1arm
+ta2ro4
+tar5sp
+tar5taa
+t3arti
+3tarw
+3tas
+5tasa
+5tasj
+5taso
+ta3s2p
+ta3sta
+ta3str
+ta3sy
+4tata
+4tatio
+tat5j
+4t3atl
+3tatr
+3tau
+4taut
+2t1avo
+3tax
+t3a2z
+4t3b
+tba2l
+4t3c
+t4ch
+t5cha
+t5che
+t5chi
+t5chu
+4t3d2
+tdor5st
+tdo3v
+1te
+3tea
+te3akt
+5tea4m
+3tec
+4t3echt
+4teco
+te4dit
+t3edu
+tee2
+teeds5te.
+tee4g
+4teek
+tee4k3l
+teem1
+4tee4n
+t5eenhe
+3teer
+tee5rin
+tee4t
+4t3eeu
+t4ef
+t5eff
+3tefl
+3teh
+4t3eier
+4teig
+tei4lo
+t4ein
+t5eind
+5teit
+tei5tj
+2t3eiw
+5tekene
+5tekens
+4teker
+4tekk
+3teko
+te4k3om
+3teks
+te3kw
+te4k3wi
+t4el
+tel5ant
+te4lap
+tel5da
+4telec
+5teleco
+t5elect
+tel5een
+5telef
+5teleg
+tel5ei.
+tel5eie
+tel5eit
+te5lel
+5telev
+5te5lex
+tel3f
+tel5k
+te4loe
+te4l3o4g
+tel5oog
+te4l3op
+telo4r
+tels4
+4telse
+tel3so
+tel5su
+te4l3uu
+t4em
+2temb
+4temm
+te4mor
+tem3ov
+5temper
+5tempo
+t4en
+ten4ach
+ten3a4g
+te3nak
+te5nare
+te4nau
+tene2
+ten3ed
+ten3el
+tene4t
+3tenh
+ten5k4
+te5nore
+4t5enq
+ten5scr
+ten3sn
+ten3sp
+tensu4
+tens5uu
+3tent
+5tenta
+5tenten.
+ten5to
+t3entw
+5tenu
+t2er
+teraads5
+te4r5aak
+ter3a4b
+tera5ca
+te4rad
+tera4de
+te4r5af
+ter3ag
+te3ral
+te4ran
+ter3ap
+ter3as
+5terec
+te4rei
+ter5eik
+te4rel
+te4rem
+te5ren.
+te4r5enk
+te4r5env
+4t4erf.
+4terfd
+ter3fr
+4t4erft
+te4r5in.
+3terj
+4terk.
+4terkt
+ter3k4w
+3term
+5term.
+5termi
+ter5oc
+te3rod
+te3rof
+te3rog
+5teron
+te5rons
+tero5pe
+tero4r
+te3ros
+5terrei
+5terreu
+5terror
+ter4spr
+ter5ste.
+ter5ston
+3tes
+te3s4ap
+tes3m
+te3so
+tes3ta
+te5stel
+tes5ten
+test5op
+test5ri
+test3u
+te3ta
+te5tr
+4t3euv
+t4ev
+t5e4van
+teve4r
+5tevl
+3tevr
+2tex
+3tex.
+4t3exe
+4texp
+1t[eacute]
+t[egrave]3
+4t3f
+4t3g2
+tgaat5
+t5ge
+tge3la
+tger4
+4th.
+2t1ha
+t3haa
+t4haan
+t4had
+t3hak
+t5ham
+t4hans
+t3har
+t3hav
+5thea
+t3heb
+5thee.
+4t3hei
+4t3hel
+3t2hen
+5theo
+1t2her
+5the3ra
+4t3here
+3thes
+3thet
+t4hin
+4thm
+t1hoe
+t2hog
+t3hok
+t1hoo
+thoof5di
+4t1hou
+t3houd
+5thous
+4t3hov
+3thr
+2thu
+t1hul
+4thum
+t4hur
+3ti
+5ti.
+5tia
+ti5ab
+ti5ae
+ti3ap
+5tib
+5tica
+5tice
+5tici
+5ticu
+ti3d4
+5tie.
+tie5d4
+5tiefs
+tie3kn
+tie4kon
+ti3enc
+tien5st
+5tiep
+5ties
+tie5s4l
+tie5ta
+tie5to
+tie5tw
+ti1eu
+5tieven
+ti3fe
+ti3fr
+ti2ga
+tig5aa
+4tigm
+ti4gu4
+tig3ur
+5tijd
+tije4
+tij5ka
+tij4kl
+5tijn
+tij5p
+t3ijs.
+tij3st
+tij3t2
+tij5tr
+tij5tw
+4t1ijz
+ti3ko
+ti5kr
+t4il
+4tils
+5timm
+5timo
+tina4d
+tin3as
+4t3incu
+4t1ind
+4tinf
+tin4g3i
+ting4sa
+t3inh
+ti4nit
+4t3inj
+t3inko
+4t3inl
+t3inq
+4tinr
+4t3ins
+ti3nu
+4t3inv
+4tinw
+ti5om
+ti3o4p5
+t2is
+ti5sa
+ti3s4j
+ti3sl
+ti3so
+ti4son
+ti3s4p
+ti3sta
+5tite
+ti3th
+ti1t2r
+5tivi
+ti4vo
+1tj2
+2t1ja
+t5jaa
+t5jee
+t5jek
+t3jen
+t5jet
+4tjeu
+2tjo
+t1jou
+2tju
+4t3k2
+tkars3
+4t3l
+t5le.
+5tleb
+t5les
+tli4n
+4t3m
+tmen4st
+tmens5te
+tmos5
+4t3n
+tna4m3o
+tne4r
+tnes4
+5to.
+toa2
+to3ac
+to3ar
+to5bl
+3toc
+1toch
+3tod
+to3da
+t4oe
+toe5d4
+3toej
+toe5k
+5toe3l4a
+toe5le
+5toelic
+toemaat5
+5toen
+to5ende
+toe5pl
+3toer
+5toeri
+5toern
+5toe1s4
+toe5st
+toe3tj
+3toets
+5toets.
+5toetse
+toets5te.
+3toev
+5toez
+to2f
+tof5ar
+tof5d
+to4fr
+tof3th
+3togn
+5togr
+3toi
+to4kan
+tok3s
+t2ol
+to3la
+5tolaa
+to5le
+5tolet
+t3olf
+2toli
+5tolic
+to4lie
+tolk5s
+5tolo
+tolp3r
+t3oly
+4tom.
+5tomaa
+tomaat5
+t3oml
+to3mo
+tom4p3j
+4t3om5s
+5ton.
+4tond
+3t2one
+5tonee
+5to5nen
+to5ner
+3t4ong
+5tong.
+3t4oni
+5t4onn
+to3no
+5tons
+ton3sk
+too4m
+toom3e
+5toon
+t4op.
+top5art
+top3as
+to3pen
+to3pet
+to3pi
+2topm
+to4po
+to5pos
+t4opp
+to4pu
+to5pus
+t3opva
+5tor.
+to3ra
+to4r3ag
+t3ord
+to5rec
+5torens
+4t1org
+t5orga
+t4ori
+3toria
+to4ri[ediaeresis]
+tor3k
+tor4m3a
+toro4
+to4r5oli
+to3rom
+5torr
+3tors
+tors5te.
+to3r2u
+3tos4
+to3sa
+to1sl
+to1s2p
+tos5te
+5tota
+to3tr
+2t3oud
+3tour
+tou4r3e
+to3v
+tove5na
+to4vens
+4toverg
+to3w4
+4t3p4
+tpe4t3
+tpi3s
+tr4
+3tra.
+4t3raad
+5trac[eacute]
+5trafo.
+3trag
+4tragez
+3t4rai
+5train
+5traka
+t3rake
+3trakt
+3trans
+5transa
+5trap.
+5trau
+4t3raz
+3t4re.
+4trea
+2trec
+5tred.
+4treda
+t5redes
+4tredu
+3tref
+4t5reg
+4t3reis
+4treiz
+4trel
+t3rese
+t3resu
+tre2t3
+t4reu
+t3rib.
+5tribu
+5trico
+trie5ta
+trig2
+2trij
+5t4ril
+tri5ni
+5t4rio4
+t3risi
+t3rit.
+5t4riti
+5trody
+t3roed
+t3roes
+5trofy
+3trog
+t4ro[idiaeresis]
+5troj
+4trol.
+5trola
+5trolo
+5tromm
+5tron.
+5trona
+t5rond
+3trone
+5tronn
+5trono
+5trons
+tront5j
+t3rood
+5troon
+t4roos
+tro5pi
+t4ros
+5trotu
+3trou
+4t5rout
+tro5v
+5truc.
+5truf
+4trug
+5trui.
+5truie
+t3ruim
+trui5t4
+t3ruk
+t4rum
+4ts
+ts3a2d
+tsa4g
+ts1am
+t3sap
+ts3as
+tse4d
+ts5een
+t4s3ei
+ts5eind
+t4s5ene
+t4s3eng
+t4s3erg
+ts5erge
+t4s3e2v
+t2sij
+t4s3ink
+ts3int
+ts2j
+ts3ja
+t3sjen
+3tsji
+t1sl
+ts4laa
+t3slac
+t5slag.
+ts3lam
+t2s3le
+t5slib
+t5sloe
+t3s4lu
+ts2me
+ts4moe
+ts3neu
+ts4no
+ts5nor
+ts5not
+ts3nu
+ts3ob
+tso2l
+ts3oli
+ts3om
+ts1on
+ts4opp
+ts1o4r
+ts1ov
+ts3pad
+t3span
+t5spec
+t4s3pet
+t3spi
+t4s3pil
+t3spoe
+t3spoo
+t5s4por
+ts3pot
+t4spro
+ts4pru
+ts5q
+ts5s
+t3sta
+t4staak
+t4s5tank
+ts5tant
+t4star
+t4stas
+t3ste
+t5sted
+t5stee
+ts5teko
+t5stell
+t5stels
+t5stem
+t5ster.
+t4sterr
+t5sters
+t5s4tes.
+t5steu
+ts3th
+t1s4ti
+t3stij
+t5stijg
+t5stil
+ts5tin
+ts5t4j
+t1sto
+ts5toep
+ts5tong
+t4store
+ts5trad
+ts5trei
+t3stri
+ts5troe
+ts5ty
+t4su4
+ts3ur
+ts3us
+ts3uu
+t1sy
+4t3t
+t5t4a
+t5te
+tte5loe
+tte5l4op
+tte2n
+tten4t5j
+tte5ri
+t5tlet
+tt3oog
+ttop2
+t5t4r
+t5tum
+tt3uu
+3tua
+3tub
+3tuch
+3tu3e
+5tueu
+tu3[eacute]s
+3tuig
+5tuin
+4tuip
+2tuit
+tuit4j
+4tuk
+tu4k3i
+tul5pi
+t4um
+5tune
+5tunn
+tu1o
+5turb
+tu3ri
+3tu4s3
+tut3j
+tuurs5la
+tu3wa
+4tv
+tvaat5
+t3ve
+4t1w
+3t4wijf
+t2win
+1ty1
+3typ
+tys4
+4tz
+t3za
+t3zi
+t5zw
+u1a
+u3ac
+u3an
+ua5ne
+ua3p
+u5ar.
+uar5t
+ua3sa
+uat4
+2u2b
+ub3ac
+ube4li
+ub5em
+u5bi
+u3bo
+ub5or
+4uc
+u1che
+ucht5sl
+uc4ki
+ucle3
+uc4t3a
+uc4tin
+u1d
+uda2
+u5da.
+ud5am
+ud3ei
+ud3ess
+u4de4z
+ud3eze
+udi4o
+udi5ologe
+udi3om
+udoe2
+ud3ond
+ud3oo
+ud3ov
+u4d1r
+uds5lo
+uds4m
+uds5ma
+ud3sme
+ud3smi
+ud1st
+ud4sta
+uds5tak
+ud4sti
+ud1w
+u3ec
+ue2co
+u1ee4
+u3ef
+u3ei
+u1el
+u4ene
+u1er
+uer3il
+ue3st
+u1eu
+u5eul
+u3ez
+u3[egrave]
+u4f3an
+u1fl
+u1f4r
+uf2s
+u5ga
+ug4da2
+ug4der
+ug2do
+ug4dr
+uge4l5o
+ug3ij
+ug1l
+u2go
+ug3or
+u2g1r
+ug5sce
+ug4sec
+ugs4p
+ugs5pa
+ug1s4t
+ugs5tra
+u1h
+u2i
+ui5ac
+ui2d3a
+ui2d1o
+uid4s
+uid3sp
+uid5spre
+uid5ste.
+uid3u
+ui3e
+uien4t
+ui2fa
+uif1l
+uif5r
+ui2fu
+4uig
+ui4g5aa
+uig1l
+ui2g3o
+ui4g3r
+ui4gu
+4uik
+ui2k3a
+ui4k3l
+ui2ko
+ui2ku
+ui2la
+uil5aa
+ui4l3em
+uil5m
+ui4l3og
+ui4loo
+uil3ov
+4uim
+ui2m3a
+ui3mag
+ui4n1a
+uin5g
+ui2no
+uin5og
+uin3or
+uin4s5lo
+uin5to
+ui2p3l
+ui4p3o4
+ui2p3r
+4uis
+ui2s3a
+uis5c
+ui4sl
+ui5slu
+uis5p
+ui4st
+ui4t3a4
+uit5aa
+uit5al
+ui5tar
+1uitg
+uit1j
+3uitl
+ui2t1o
+1uit5r
+uit3sl
+uit3sn
+uit5sp
+uits5te.
+3uitw
+3uitz
+ui3v
+4u3j
+2uk
+u2k3al
+uk3as
+ukkers5
+u2k3l
+u3klas
+u2k3n
+u2k3o
+u3koc
+uko2p
+uk4o3pl
+u4k3r
+uk3s2m
+uk3spa
+uk3spl
+uk4sti
+uk1w
+u1la
+ul3ac
+ulam4
+ula4p
+ul4d3a
+uld5erk
+ul5dop
+ul4d3u
+u1le
+ule5sp
+ul3fl
+ul5fo
+ul3fr
+ul3in.
+u5ling
+ul3inn
+ul3k2a
+ul5ke
+ul2k3l
+u1lo
+ul3o2p
+u3los
+ul2pa
+ulp3ac
+ul4pi
+ul2p3l
+ul2po
+ul4p3r
+ul3sa
+ul3so
+ul2s3p
+uls5te.
+uls5tel
+u3lu
+um3af
+um3ar
+3umda
+2ume
+umee4
+umes4
+ume3st
+um3om
+um3op
+um3so
+um3st
+u2m3ui
+un3ac
+un2c
+unch3r
+un4dra
+und4s
+unds5ta
+und5ste
+une4t
+un3g
+1univ
+un4k3r
+un4o
+uno3g
+un5o2p
+unst3a
+un4ste.
+unst3o
+un4st5r
+unst5ui
+un4tag
+unt5een
+un2tj
+un4t5o4
+unt3s4m
+un4t3u
+u3ol
+u3on
+u3oo
+u1or
+uo3ru
+u3os
+uota3
+4up
+u1pa
+u1pe
+upe3k
+upe4ro
+uper5st
+u3ph
+u3pi
+u1pl
+u4p3lei
+u1po
+u3pol
+up3om
+up3op
+u1pr
+up4tr
+u1ra
+ur3aan
+ur1ac
+ur3ada
+ur3adv
+u2r3a4r
+uras3
+u4r3a2z
+urd4o
+u1r2e
+ur3ech
+ur3een
+uree5s
+ure5lu
+urelu5r
+u4rem
+ur3emb
+ure4n
+u3res
+ur3ess
+ure3st
+ur3eta
+4urf
+ur2fa
+ur3gi
+u1ri
+uri4gl
+ur3ijz
+ur3ind
+ur3int
+4urk
+urken5s
+ur4kie
+ur3k4l
+urk4s5t
+u1ro
+ur5opb
+ur3or
+uro5s
+ur5pr
+ur4serv
+ur4s3ev
+ur3s4fe
+ur2sl
+urs5laa
+urs5li
+ur4s5m
+ur2sn
+ur4sp
+urs5pa
+ur5spel
+ur5spor
+urs5take
+urs5th
+ur4sti
+urs5tik
+ur3ta
+ur4tro
+ur5troe
+u3ru
+ur3ui
+4urv
+u1r4y
+4usaa
+us3ad
+us3a2m
+us1ap
+u4sc
+u5s2cr
+use5tj
+u5sie
+u4sj
+u4s5l
+u4sm
+u2s5n
+uso2
+us3o[idiaeresis]
+us3os
+u2s3p
+us5pi
+us5pu
+us4ta
+us5tag
+ust3al
+u2s3te
+us4t3ei
+u4sti
+ust3oo
+us5tra.
+us5tre.
+us5tro
+us5tru
+ustu4
+ust3ur
+ust3uu
+u1ta
+ut3aan
+utaar5
+ut1ac
+ut3af
+u3tan
+uta3s4
+ut5c
+u4t3ees
+u4tek
+ut3eks
+ut3em
+ut5emm
+uter5an
+ut3ex
+ut2h
+ut3ho
+u2tj
+u1to
+uto5f
+ut3oog
+uto3pe
+utop4l
+uto5po
+utop4r
+uto5s
+ut3saa
+ut3s2c
+uts5eng
+uts2m
+ut1sn
+ut3sp
+ut4spa
+ut4spo
+ut2st
+uts5tak
+ut4ste.
+ut5sten
+ut3str
+ut5su
+utt4
+u1tu
+ut5w
+u4u4
+uur3a4
+uur3e4
+uur5i
+uur3k
+uur1o2
+uur5ste
+uur5sti
+4uut
+uut3a
+uut3r
+uvel4s
+uve5na
+uw1a
+u3wag
+uw3ar
+uw5art
+u1we
+uw3ec
+uwe5d
+uw3een
+u2w3ei
+uwe4nen
+uwes4
+u1wi
+u2w3ij
+uw5ijz
+u4wind
+u3wing
+u4wins
+uw3inz
+uw1o
+u3woe
+uwo4ge
+uw1r
+uw3u
+uxa3
+u3ya
+4uz
+uze3t4
+uzie2
+[ucircumflex]t3s4
+1[udiaeresis]
+[udiaeresis]4b
+[udiaeresis]1n
+[udiaeresis]3ri
+[udiaeresis]s3l
+1v2
+2v.
+vaar4ta
+vaart5r
+va3de
+va3g4
+va2ki
+va4kl
+va2ko
+va2l3a
+val5m
+va3lo
+va4loe
+val5si
+val4s5p
+vals5tek
+valu5
+va2n
+van3ac
+vand4
+vang3a
+van4gr
+va3no
+va4noc
+va1p
+va3re
+va5se
+va3s4o
+vast3r
+va3su
+va3te
+va2t3h
+vat5j
+va3z
+v4b
+4v3c
+v4e
+3ve.
+5veb
+vee4l
+veel5e
+vee3p4
+vees4
+ve3g4h
+vei3s4
+vei5tj
+3vek
+5vel
+ve4l3a4g
+vel4d3o
+ve3le
+vel3k
+5vem
+vem4a
+ve4na
+ve5nare
+5vend
+ven5k
+ve2n3o
+2venr
+ven4s3e
+ven4sl
+vens5lan
+vens5lo
+ven4sp
+vens5taak
+vens5take
+vens5tek
+ven4s3u4
+ve2r
+ver1a
+ver5aas
+ve4rad
+vera4g
+ve4rand
+ver5do
+ve3rec
+ver3ed
+ve3reg
+ve3rei
+ver5eis
+ve5ren.
+ve5rend
+ver3e4t
+ver5ijd
+ver5ijl
+ver5ijs
+ve5ring
+ver5k4
+ver3o
+ve3rom
+vero5v
+ver5p
+ver5spe
+ver5sta
+ver5sto
+ver5tw
+ver1u
+ve3ry
+ve2s3
+ves5ti
+ve2tj
+ve2to4
+vet3og
+vet3oo
+ve3tor
+ve2t3r
+vet4roe
+vet5ste
+5ve5z
+3vi
+4vicepa
+vid5st
+vie4r3a
+vie4s3
+vies5n
+vie4tj
+vi3eu
+vijf5
+vik4s
+vil4t3j
+ving4
+vings3
+vi3o
+vi5om
+vi4s3an
+vi1so
+vis5ot
+vis5p
+vi4st
+vis5tr
+vi1tr
+v3j
+vje4
+vjet1
+3vl
+v3lar
+vlei3s4
+vlie4s5
+vlot5s
+v3lov
+5vo.
+3voe
+voe4t3a
+voe4t3r
+voet5sp
+3vog
+voge4
+3voi
+vo2le
+vol4g3a
+vol4gra
+vo2li
+vol3ij
+vol5p
+von4det
+vond5u
+3voo
+voo5d
+vooi5t
+voorn4
+voor5na
+vo3ra
+vorm3a
+vors5te.
+vor5sten
+vos3
+3vot
+vot3j
+3vou
+vous5
+3v4r2
+vrei5
+vrie4s
+vrij5k4
+vrijs4
+vrij5ste
+v3t
+vues4
+vu2l
+vul5p
+vuur5s
+vy3
+2w.
+waad3
+w2aar
+waar5e
+waar5ste
+wa4b3
+wa2ba
+wa5bl
+w2ad
+wa3dr
+w4ag
+wa2la
+wa3lan
+4wam
+wan4d5r
+wan4gr
+wang5sl
+wa2n1o
+wan3s4
+3wap
+w4ar
+w5arc
+5ward
+war4st
+wars5te
+wart3j
+war4to
+wa2si
+wa4s5l
+wa4s5p
+was5tr
+1wate
+wat5j
+wa3tr
+3way
+2wb
+w1c
+2w1d
+w4doo
+wd3oom
+we2a
+2we2c
+3wed
+wede4
+we2d3i
+we4d3r
+wee4ki
+wee4k3r
+wee3lo
+wee3s4t
+wee5ste
+3weg
+we4g1a
+we4gerv
+weg3l
+we2g3o
+we4g5r
+wei3s
+wei5tj
+we4k3r
+we4le2
+4welem
+we3li
+we2lo
+wel3s
+we2m
+wem3a
+we3me
+we2n
+wena4
+wen3ad
+we3ne4
+we4nem
+we5nen.
+wen5enk
+we3ni
+wen4k3a
+wen3o
+wen5to
+wer2f
+4werg
+wer4ka
+wer4k5l
+wer4kn
+wer4k3o
+wer4k3r
+werk5ru
+wer4k3u4
+wer4k3w
+wer4p3a
+wer4p3l
+wer4pr
+wer4s
+wer5ste
+we2s3
+we3spo
+wes4t5o
+3wet.
+we2th
+we2t3j
+wet4st
+we2t3u
+2wex
+wezen4s5
+2w1f
+w1g
+w1h
+wie4la
+wie4t
+w4ij
+3wijd
+wij4ka
+wij4s
+wijs3l
+wijs3p
+wijs5ta
+wi4k
+3wil
+wind3a
+win4d3r
+w4ing
+2winr
+win2s
+winst5aa
+winst5r
+wi4t3h
+wit3j
+wi2t3o4
+wit3r
+w1j
+2w1k
+2w1l
+4w1m
+2wn
+wn3ac
+w3ne
+w3ni
+w3no
+w3ob
+w2oe
+woes3
+woest5a
+wo4l
+wol3a
+wolf4s5
+woon5sf
+woor4d5r
+wor4g3e
+w1p
+wren4st
+wrens5te.
+2ws
+ws3a2
+w3sc
+w1sl
+w2s3le
+w3som
+w3sp
+ws2pl
+w4spr
+w5spra
+w1s4t
+w4stij
+2wt
+wtes3
+wtje5sp
+w1to
+w1tr
+wu2
+wva2
+w1w
+xaf4
+xa3g
+xamen5t
+xan3
+xan5t
+x1c
+x4e
+xen4d
+xe3ro
+x1f
+x1h
+xie4t
+xi3g
+xi5o
+xi3sta
+xi3sto
+xi4t3i
+x3l
+x1m
+xo3no
+x4op
+xo3s4
+x1p
+xpre2
+xpres5
+x3r
+x3so
+x3sp
+x1t
+x2tak
+xtie2
+x3w
+xy3
+y1a
+ya3s4
+ya4s5p
+y3at
+yba2l3
+yber4t3
+y1c
+ycho3
+y3co
+y1d4
+ydi3a
+y5dr
+ydro3
+y1e
+yes3
+y3[eacute]s
+y3[egrave]
+y1f
+y1g
+ygu2
+y1h
+y1i
+y4in
+y5is
+yksge4
+y3la
+yl3al
+y3le
+y4l3et
+y3lo
+ylo3l
+ym2f5l
+ym5pa
+y3na
+yn3er
+y3no
+yn1t
+y1o
+y3on
+y3os
+yo3t
+y1p
+y3p4h
+ypo3
+ypot4
+yp3s
+yp5si
+y1r
+y3r4e
+y5ri
+ys3
+y1s4a
+y3s4c
+y5s4e
+yse5t
+y3s4f
+y3s4h
+ys4i
+y3s4o
+y3s4p
+ys5pl
+ys4ta
+ys5tr
+y3sy
+y1t
+yt3hu
+yto3
+y2tof
+ytop4
+yu5a
+y3ui
+y3u2r
+yvari5
+y1w4
+1z
+4z.
+zaar5t
+za3f2
+zags4t
+za2k3a
+zak3r
+zan2d
+zand5a4
+zan3di
+zan4dr
+zang3s
+za3po
+za3s4
+4zb
+4zc
+4zd
+z4e
+zee3k
+zeel5d
+zee3r4o
+zeero5v
+zeer5s
+zee3s4
+ze5ge
+zeg4sl
+zei3sp
+ze5k
+zel5dr
+ze3lem
+zel2f1
+zel4so
+zen4d3a
+ze4nin
+zen5k
+zen3o4
+zen4og
+ze3non
+ze4r3a
+ze3ro
+zer2s
+zer4s5e
+ze4s3
+ze5sch
+zes5e
+zes5l
+ze5ste
+ze2t3a
+ze2t3h
+ze4ti
+ze2t3j
+ze2t3r
+zeve2
+zeven3
+4zf
+4zg
+2z3h
+z2i
+ziek3l
+zie4k3o
+ziek3w
+ziel4s
+zie5sl
+3zif
+zi2g5a
+zij5kl
+zij3po
+zij5s4
+zik2w
+zi4n3a4
+zings3
+zin4k3l
+zin4s
+zins3t
+zins5ta
+zin5str
+zi3o5
+zipi3
+zi4t
+zit3e
+zit3j
+zit3u4
+4z3k
+4z3l
+4zm
+zodi5
+zoet3j
+zoet5ste
+zo3f2
+zoi4
+zo5ie
+zo3la
+zome4
+zo2na
+zon3sf
+zon5ta
+zooi5tj
+zo1p
+zor4g3a
+zor4gl
+zor4gr
+zo2t
+zot3h
+zo3tr
+zo3v
+4z3p
+4z3r
+2zs
+4z5t
+zui4d3i
+zui4dr
+zus3
+2zv
+z4w
+zwets5te.
+5zy
+2z3z
+zz3in
+zz3or
+z4z5w
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-no.hyp b/Master/texmf-dist/tex/context/patterns/lang-no.hyp
new file mode 100644
index 00000000000..bde9ea0d621
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-no.hyp
@@ -0,0 +1,39 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: nohyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='no'>
+% <sourcefile>nohyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Norwegian language</title>
+% <copyright>
+% <year>1992,1993</year>
+% <owner>Ivar Aavatsmark</owner>
+% <comment>nohyphen.tex based on danhyph.tex</comment>
+% </copyright>
+% <copyright>
+% <year>1994</year>
+% <owner>Preben Randhol, Jon Martin Solaas</owner>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Thomas Esser (te@dbs.uni-hannover.de)</owner>
+% <comment>Make patterns work with non-T1 encoding</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-no.pat b/Master/texmf-dist/tex/context/patterns/lang-no.pat
new file mode 100644
index 00000000000..49eea0fd93c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-no.pat
@@ -0,0 +1,2411 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: nohyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='no'>
+% <sourcefile>nohyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Norwegian language</title>
+% <copyright>
+% <year>1992,1993</year>
+% <owner>Ivar Aavatsmark</owner>
+% <comment>nohyphen.tex based on danhyph.tex</comment>
+% </copyright>
+% <copyright>
+% <year>1994</year>
+% <owner>Preben Randhol, Jon Martin Solaas</owner>
+% </copyright>
+% <copyright>
+% <year>1995</year>
+% <owner>Thomas Esser (te@dbs.uni-hannover.de)</owner>
+% <comment>Make patterns work with non-T1 encoding</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.ae3
+.ak3k2l
+.ak3k2r
+.an1d2ra
+.an3k
+.an1s
+.anti1k2l
+.anti1k6r
+.anti1k4v2
+.anti1p
+.be5la
+.be1t
+.bi4tr
+.der3i
+.der4iv
+.de2s1to
+.diagno5
+.di4s3
+.ek2s1k
+.ek4s5p
+.er1in
+.er1ob
+.for4st
+.hove4d3
+.hoveds2
+.il4t1r
+.nabo1
+.om1
+.ove4
+.pro1g6r
+.pro5k2l
+.pro1sp
+.re4in
+.re4u
+.sinn4s1t
+.si4s3te
+.sk6
+.stat4s5
+.st4r
+.s[aring]3
+.s[aring]5re
+.til3
+.unn3s2l
+.ve4l1e4g
+.ve4l1e4t
+.yt5r
+.[ostroke]v3r
+.[ostroke]y4e
+a1a
+a2b1av
+ab1le
+a2b1re
+3abst
+ade5la
+5adg
+ad2op
+ads2k
+ad1st
+a1e
+ae4der
+ae2ne.
+a1fj
+a4f3le
+a4gef
+a4gi
+ag5in
+ag3l[ostroke]
+ag5si
+a4gy
+a3h
+a1ikk
+a1ing
+a1isk
+a1ism
+a1ist
+a3j
+a1k
+a3ka
+a4kad
+a2kb
+a2k1d
+a3ke
+a2kf
+a2kh
+a4kk
+a2kl
+a2kn
+a3kr
+ak2rel
+ak3s2m
+a4kt
+3akti
+a3la
+a4l1ad
+alder4s5
+a1le
+a1li
+a4l3ins
+a2l1i2so
+al3k
+al4kn
+4alkv
+all2s5kap
+a1lo
+a2lomr
+a2l1oms
+al1sa
+al5si
+al1st
+a3lu
+a1ly
+a1l[aeligature]
+1a2manu
+am4pa
+3a4naly
+an3erk
+an5g2rep
+an5g2rip
+ang2s3e
+ang3s4et
+ang3s4ik
+angs3in
+ang3som
+an1ion
+an1i2so
+an4k5r
+an5si
+1ansku
+an1s2t
+an1sv
+a3nu
+3anv
+a5o
+ao2pe
+a5pe
+a3pi
+a5po
+ap3p4lau
+ap3p4li
+ap3p2re
+ap3p2ro
+a1ra
+ar5av
+1arb
+a1re
+a2rea
+3arg
+a1ri
+1arkiv
+a3ro
+ar3so
+ar1st
+a1ry
+a1r[aring]
+a3sa
+a1si
+a3so
+as4s5kr
+as4t3ro
+a1ta1
+a2t1aks
+a1te
+a5t2e5g
+a1ti
+a1to
+ato5v
+a3tr
+a4t1re
+at1s4pr
+a1tu
+a3t[ostroke]
+a1t[aring]
+a4u4v
+aue4r
+a5va
+a1ve
+av1b
+3avg
+a1vi
+1a2vis.
+1a2vise
+3a4v1l
+av3r
+av1s4
+av1v
+a5v[aeligature]
+a3z
+1ba
+ba4k1
+ba4k2e
+ba5k2er
+ba5k2u
+ba4ti
+4b1b
+b2b1h
+b2b1k
+b2b1l
+b2b1m
+b2b1t
+4bd
+1be
+be1dra
+be1driv
+be1dro
+be1k
+be3kj
+be3ro
+be5ru
+be3s2
+bes4p
+be4s3te1
+be5s4te2m.
+be5s4te2mm
+be5s4te2mt
+be1tr
+1bi
+b1j
+blom4st3r
+1bl[aring]1
+4b1n
+1bo
+bo4gr
+bo3ra
+bo5re
+bor2t5r
+1br4
+1bruk2s1
+bry5som
+br[ostroke]d3
+4bs
+b1si
+b1s4k
+b3so
+b1st
+b5t
+3bu
+bu4s5tr
+4b1uts
+b5w
+1by
+by3s
+5b[aeligature]
+1b[ostroke]
+1b[aring]
+1ce
+1ci
+ci3e4s1
+3da
+d5anta
+4d1art
+da4s
+5dat
+4d3av
+d1b
+d2b1k
+4d1d
+d2d1b
+d2d1f
+d2dh
+d2d1p
+d2d1r
+d2d4s1
+d2d1t
+d2dv
+d2d1[aring]r
+3de
+de5d
+ded4ren
+4de4lem
+de2n1om
+de4n1un
+der5eri
+de4r1etter
+de4rig
+de4s3ill
+d1f
+2d5g4
+d3h
+1di
+di2ale
+di2alo
+di1e
+dig5sti
+di3l
+di4ll
+2d1int
+di5s4i
+dis4k3l
+dis5t6r
+d3j
+d1k
+d1l
+d1m
+4d1n
+3do
+dom2s3l
+do1o
+4dop
+4d1ord
+4d5ov
+d1p
+3d2rif
+d1risk
+3dr[ostroke]v
+ds5an
+ds5av
+d2s1ev
+ds5in
+ds1k
+2d4s3l
+2d4sm
+d2s3n
+ds3or
+ds1p
+ds3s4k
+ds3s2l
+ds3s4t
+ds3s4v
+d4s1tj
+dst[aring]4
+d4su
+ds5v
+d5s4y
+d3ta
+d5t2e
+d1to
+d3tr
+1du
+dub5
+d1v
+3dy
+3d[ostroke]
+d[ostroke]r1g2l
+4d1[ostroke]s
+e1ab
+e2abi
+e5ad
+ea1g
+e3ak
+e1al
+e2a1li
+e3a2l1inn
+e3an
+e4ane
+e4ano
+e5ap
+e1a2rea
+e1ark
+e1a1t
+e2atra
+ea4t1re
+e1a2tt
+e3av
+e1b2l
+eblikk4s5
+ebs3
+e1ch
+e4d5ar
+edb2l
+e4d1ei
+ed3re
+ed3rin
+ed4str
+e1d[aring]
+e3e
+4eelem
+ee2ne.
+ee4r
+3eff
+e3fj
+e3fr
+egg5a
+e4ggek
+e4gg1r
+eg2g4s5
+e1gr
+e3gu
+e1h
+e4i
+eid2s1
+eid4s3k
+eid3s2om
+eid4s3t2
+eid4s3pr
+eie4r
+e5inn
+e5inv
+ei5el
+e5isk.
+e5iske.
+e1j
+e2jn
+e2k
+e3ka
+e3ke
+2e3kj
+e3k2l
+e4k3ler
+e4k3let
+e4k3ling
+4e3ko
+e3kr
+ek5sa
+3ek5sem
+eksi5s2t
+3eksp
+ek4s3t
+eks4t1av
+ek5su
+e3ku
+e5kv
+e5ky
+e1la.
+e3lad
+e1lag
+el3ak
+el1al
+el3ar
+e1las
+e3le
+e4lek
+3e4lem
+e1li
+4elig
+5elim
+e4l3int
+elle2
+e3lo
+e4l1om
+el5sa
+e4lse
+el5s4en
+el1to
+el4t1ri
+el4t1ro
+e5lu
+e3ly
+e3l[aeligature]
+e3l[ostroke]
+em4p5le
+em1s
+em2s1l
+e1mu
+en5ak
+e4nan
+en1d2rek
+en5g2rad
+en5g2ro
+4enn
+en1opp
+e2nord
+en4s3inte
+en3so
+en1s4v
+ents1k
+e3nu
+e4n1ut
+e4n1[ostroke]2v
+e1n[aring]
+e2n1[aring]r
+e1o
+e2o3an
+e2o3d
+e2ogr
+e2o3li
+e2o3o
+eo2pe
+e3opp
+e3ord
+e3ov
+epi3
+e1pl
+e1po
+e1pr
+e3ra
+e4rag
+e4rak
+e4r3av
+er1d2r
+e3re
+er5ege
+e4r1ess
+er4g3r
+e3ri
+e4rib
+e4r1inn
+er1k
+er2kna
+er2kni
+er2kt
+er3o4pp
+ero5d
+er5ov
+er1s
+er2sk
+er3s2ki
+er3s2kj
+er3som
+er5t4r
+e3rum
+er5un
+e5ry
+e3r[ostroke]
+er5[ostroke]n
+e3se
+e3si
+e4s1m
+e3so
+e5sper
+e4s3ting
+e1ta
+eta1b2le
+e1te
+etek4s
+e1ti
+e3tj
+e1to
+e3tr
+e4t1ris
+ette6r1a
+e3tu
+e1ty
+e5t[aeligature]
+e5t[ostroke]
+e1u2ke
+eu1kl
+e3um
+e3un
+3euro
+e1usi
+e3ut
+e1va
+e3ve
+e4v3erf
+e1vi
+e1v[aeligature]
+e3[aeligature]2
+2e3[ostroke]2
+e5[aring]
+e[aring]4r
+1fa
+fa2g1r
+fags3
+fall2s1
+f4ar
+fa1se
+fa4t1r
+f1b
+f1d
+3fe
+fei2l5o
+fe5no
+fe2s1t
+fe5s4tere
+fe5s4tert
+f1f
+f2f1b
+f2f1c
+f2f1k
+f4f3l
+f2f1m
+f2f1opp
+f2f1r
+f2f1s
+f1g
+f1h
+1fi
+fis4k3l
+f1k
+3f2l
+5f4la
+1fo
+fol2k5l
+fo2r1an
+for1d2ra
+for1d2riv
+for1edl
+fo2r1eld
+fo2r1els
+for1e2vig
+fo4r1e6n
+for1g2l
+fo4ri
+fo2r1o
+for1som
+for5st
+for3u4
+fo2r1[ostroke]4
+f1p
+fra5t2
+fred1som
+frie4re
+f1s4
+4ft
+ft1b
+f3ta
+f1te
+f1ti
+ft4s3
+fts5k
+ft5s4pr
+ft4s[aring]r
+f5tvi
+1fu
+f1v
+3fy
+3f[ostroke]
+f[ostroke]5f4
+f[ostroke]l1som
+f[ostroke]4r5en
+f[aring]1k
+1ga
+2g3art
+gart4s5
+g1b
+g1d
+3ge
+ge1d4ren
+4gelem
+4g5enden
+ge2o
+ger3in
+ge3s
+g3f
+4g1g
+g2g1b
+g2g1d
+g2g1f
+g2g1h
+g2g1l
+g2g1m
+g2g1s
+g2g5t
+g2g1v
+g1h
+1gi
+gi1b
+2g1inte
+gi1on.
+gi1one
+gi1ons
+gi1po
+gi5st4r
+5gj
+gje2n
+3gj[ostroke]1
+g3k
+g1l
+1g2lad
+1g2las
+g2lb
+1g2lyf
+1g2lys
+g2l[ostroke]
+g1m
+gn1d2r
+g1nu
+3go
+4g3om
+g5ov
+2g3p
+1gr
+gra2m1a
+5g4rav
+5g4rens
+5g4rep
+5g4r2o5v
+gro6v5s
+5g4rup
+gr4u
+g4s3a
+g5s4at
+gsde4len
+gsha4
+g3sla
+g2s1n4
+gs3or
+g4s3p
+gs3s2k
+gs3s2t
+g4sti
+g1su
+gs3v
+g4s5y4t
+g4s1[ostroke]
+g3s[aring]
+g3t
+g4t1i1f4
+g3v
+1gy
+g5yd
+3g[aring]
+4ha.
+ha2s1t
+h4av
+hav2s5p
+hav2s5m
+heds3
+he4r1etter
+5het
+het4s5
+2h1h
+hi4e
+hi3s
+ho5ko
+ho1pe
+ho5ve
+hovs3
+4h3t
+hun4
+hun5nen
+hun5kj
+hund3
+hu4s3tr
+hve4r3an
+hvo4
+i1a
+i2a1b4
+i3a2b5le
+i2a1d
+i2a1f
+i2a1g2
+i2a1k
+i2a1li
+i2a1m
+i2a1ne
+i2a1s
+i3a2s1m
+i3a2s1t
+i2a1t
+i3b
+i4b1le
+i3dr
+ids5k
+idi1om.
+idi1ot.
+id4t1
+i1e4gen
+i2ek
+i1el
+i1en
+4i5en.
+i5e2ne.
+i2eo
+i2ep
+i3er
+i2es
+i3es.
+i3et.
+i2eti
+if3f2r
+i4f3le
+if3r
+i5fto
+i3gu
+i4gut
+i3h
+i5i
+i5j
+i1ka
+i1ke
+i1kj
+ik2k1ord
+ik1l
+ik5led
+i5ko
+ik3re
+ik5ri
+iks5t
+ik4tu
+i3ku
+ik3v
+i3lag
+i3le
+il5ei
+il5el
+i3li
+i4l5id
+i4l3int
+il3k4
+ilmeld5
+ilmel4di
+i1lo
+i5m2u
+ind4eks
+in1eks
+3inf
+ing2s1
+in4n1ar
+in4n1ad
+in2n1ord
+inn5s4e
+inn3s2l
+in2n3t
+in2n1u
+in4n1y
+in1s
+in4sv
+5integ
+intet5s6
+in2t1re
+i3nu
+io3a
+i5pi
+i3pli
+i3plu
+i5pr
+i3r
+i4rd
+i4rf
+i4r3k
+ir4k3n
+i3ri
+i4rl
+i4r1m
+i4r1s
+i4r5t
+i4r1v
+i1s
+i2sf
+i3si
+i2sk
+is5kj
+is1ko
+is5ku
+is1k[ostroke]
+i2sl
+i4sm
+i2s1n
+i4s5p
+i2sr
+i2s1t
+i3s2to
+i2s1un
+i3s2und
+i5sua
+i2s1v
+i1ta
+i1te
+i1ti
+i3to
+i3tr
+i4t5re
+i1tu
+i3ty
+i5t[aeligature]
+i1u
+i2ume
+ium2s1
+i1va
+i1ve
+i1vi
+i1[ostroke]
+i[ostroke]4k
+i2[ostroke]1si
+i1[aring]4r
+jds1
+j4e
+je2s1t
+j5k
+ju5s2t
+3kap
+k2arb
+ka2s1t
+1kav
+k5b
+k1d2r
+kel5s
+ke1mu
+2k1endr
+2k1e2nerg
+ke1ple
+ke3sk
+ke4s1kv
+ke3s2t
+2k1f
+4k1g
+k3h
+ki3e
+1k2ing
+ki4n1u2
+3kj[ostroke]
+4k1k
+k2k1aks
+k2k1a4naly
+k2k1a2rea
+k2k3arb
+k2k1au
+k2k1av
+k2k1b
+k2k1d
+k2k1ei
+k2k3f
+k2k1g2
+k2k1h
+k2k1int
+k2k1l
+k2k1m
+k2k1n
+k2k1opp
+k2k3p
+k2k1r
+k2k1s
+kk1s4a
+kk2s5av
+kk2s1f
+kk3s4k
+kk3s4n
+kk3s2pe
+kk2s1s
+kk3s2l
+kk3s2t
+kk4s3tep
+kk2s1v
+k2k3t
+k4k1ut
+k2k3v
+k2k1[ostroke]k
+k2k1[ostroke]l
+6kl.
+k5lak
+kla4t1r
+k1le
+k4led
+k1lig
+3klu
+kne2b3l
+k4ny
+3kod
+1kon
+1ko1o
+ko3ra
+3kort
+ko3v
+k1pl
+k1pr
+1kra
+kraft5s4
+5kry
+kry5sta
+4k1s
+ks3an
+k2s1f
+k1si
+ksi3st
+k2s3k
+k2s3l
+k2s1m
+k2sn
+k2s1p
+k2s1r
+ks3s2t
+k2s3tant
+k2ste
+k2s1ti
+k2str
+k2stu
+k2s5v
+k1t
+6kt.
+k4tar
+k2td
+k4terh
+kti4e
+k2t1inn
+k2tm
+k2tn
+k2t1opp
+k2tov
+k2t5re
+kt3s
+kt4s1al
+kt4s1dr
+kt4s1f
+kt4s1g
+kt4s1kil
+kt4s1kon
+kt4s1l
+kt4s1m
+kt4s1p
+kt4s1r
+kt4s1s
+kt4s1tr
+kt4s1ut
+kt4s1v
+kt4s1[ostroke]kn
+k2t1ut
+k2tv
+ku2e
+ku3el
+ku3er
+ku3et
+2kuly
+3kur
+1kus
+ku2s1t
+3kut
+1k4var
+k2ved
+k2vet
+1k2vis
+1k2vot
+k4vu
+3k[aring]
+1lab
+lad3r
+la1d4ra
+5lagd
+la4g1opp
+la4g3r
+1lam
+4la4nal
+la2s1t
+1lat
+l1b
+ldiagnos5
+ld1r
+ld1so
+ld2s1t
+1le.
+1led
+le4k1re
+4lele
+le4mo
+1len
+le2o
+1ler
+1les
+1let
+leu2m
+l1f
+lfin4
+lfind5
+l1go
+l1g[aeligature]
+l3h
+li4ga
+1ling
+2lingeni
+li1on
+li2on[aeligature]
+l3j
+4lk
+l1ka
+l1ke
+l1kj
+l1k2l4
+l1ko
+lk3s4k
+lk3s4p
+l3ky
+4l1l
+l2l1au
+l2l1b
+l2l1d
+ll4e
+l2l5e2sti
+l2l1f
+l2l1g
+l2l1h
+l2l1k2
+l2l1l
+l2l1m
+l2l1oks
+ll2om
+l2l3omr[aring]
+l2l5opp
+l2l1os
+l3l2o1sk
+l2l1r
+l2l1s
+ll2s1d
+ll2s1f
+lls4i
+lls4k
+ll3s2l
+ll4s3lo
+ll2s1m
+ll3s2med
+ll2sn
+ll2s3ord
+ll2sr
+ll2s3s2t
+ll4s3try
+l2l1t
+l2l1v
+lm1opp
+l5mu
+lo4du
+l3op
+2lo2per
+l4opp
+4l1ord
+4l3org
+3lo2v
+l2o5ve
+4l3p
+l4ps
+l4pt
+l3r
+4ls
+lses1
+l1sig
+ls3in
+l5sj
+ls1l
+ls3s2l
+ls3s2t
+6lt.
+l1ta
+lt1bl
+l1te
+l4t5erf
+l3ti
+lt3o
+l3tr
+lt3s6
+l3tu
+l1ty
+lu3l
+lut2t5r
+lv1an
+l3ve
+l3vi
+l2v1l
+l2v1s
+l3v[aeligature]
+l4v1[aring]4r
+l[ostroke]nn2s5kr
+l[ostroke]nn2s3n
+l[ostroke]nn2s3tr
+l[ostroke]nn2s3[ostroke]k
+l[ostroke]p4s1
+5l[ostroke]s
+1ma
+ma2g1r
+ma4k1ro
+2ma4nal
+m1b
+mbet2s1
+mb2l
+m3d
+1me
+2melem
+ments1
+mer2kv
+me4t1re
+m4e1ur
+m3f
+m1g
+m3h
+1mi
+mi3k
+mi4k1ro
+min2s3
+mi4o
+mis3s2t
+mi4s3ta
+m3k
+m1l
+4m1m
+mmen5
+mm2end2r
+mm2ut
+m1n
+3mo
+mo4da
+4mop
+m1opp
+mor1som
+mot1s2v
+4m5ov
+m5pa
+m1pe
+m3pi
+m3p2l
+m5po
+m3pr
+mp5s4kr
+m1p[aring]
+m1r
+mse5s
+ms5in
+m1sk
+m1s2ki
+m2s1kl
+m2s1kr
+m4s5p
+ms3s2t
+ms3v
+ms1[aring]r
+m3ta
+m3te
+m3ti
+m3tr
+m3tv
+m3ty
+m5t[aring]
+4m1ut
+1mul
+mu1li
+2m1ull
+m1v
+3my
+3m[aeligature]
+3m[ostroke]
+m[ostroke]d1re
+3m[aring]
+3na
+4nak
+4n1art
+na2s1ki
+na4t1re
+n1b
+4nd
+nd3d2
+nd1k2l
+nd1r
+nd5si
+nds5n
+nds1om
+nd5s4p
+nd6s5par
+nd3st
+1ne
+ne4da
+ne4d1r
+ned5s4l
+ned5s
+ned6sv
+ned5t
+ne5in
+nemen4
+nement5e
+ne5sl
+ne4utr
+ne[aeligature]3r
+n1f
+n4g1enh
+n2g3lys
+ng3l[ostroke]
+n4go
+n4g1r
+ng4s1la
+n4g4s3t
+ng5s4tige
+ng5s4toff
+ng4s1u
+ng4s1[aring]r
+n1gu
+4n1h
+1ni
+ni3e4s
+5ning
+ning6s5
+ningst6
+2n1inj
+2n1j
+nje3s2ty
+n1ka
+n1k4e
+nk1in
+nk5led
+nk3k2r
+n1kj
+n1ko
+n3kr
+nk3s4k
+nkt4s
+nkt5s4k
+n3ku
+nk1v
+n3kj[aeligature]
+4n1l
+n1m
+4n1n
+n2n1ak
+n4na4na
+n4n1ant
+n2n1b
+n2n1d2r
+n2n1ei
+n2n1eur
+n2n1f
+n2n1g
+n2n1int
+n2n1k6
+n2n1m
+n2n1ove
+n2n1p
+n2n1r
+n2n1s
+nn2s1ar
+nn2s1av
+nn2s1d
+nn2s1ei
+nn2s5e4ff
+nn2s1f
+nn2s5kl
+nn2s1l
+nn2s1m
+nns2n
+nn2s1ord
+nns4p
+nn2s5pl
+nn4s5pr
+nn2s1r
+nn2s1s
+nn2s1ut
+nn2s1v
+nn3s2vin
+nn2s1[ostroke]2ko
+n2n1t
+n2n1ut
+n2n1[aring]r
+nn[aring]4re
+1no
+2n3ord
+n5p
+n3r
+4ns
+ns4e3f
+nse4ff
+ns4e1p
+n3si
+n5s4inf
+nsin1k
+n4s1inn
+n2s1kom
+n2skt
+n1s4ku
+n2s1omr
+ns3po
+ns3s4k
+ns3s2t
+n1sta
+n1s2tem
+nst1v
+n1sty
+6nt.
+n1ta
+nta3le
+n1te
+n1ti
+ntiali4
+n3to
+n1tr
+nt4su
+n3tu
+n4t1ul
+n3ty
+n5t[aeligature]
+2nuly
+4n1v
+3ny
+n3z
+3n[aeligature]
+3n[ostroke]
+o2a
+oa4nal
+o3ar
+o4as
+ob3li
+o2b1r
+odel2s1t
+o4din
+od5ri
+o1e
+2oelem
+oe2ne.
+oe4r
+o4f3le
+of5r
+o4gek
+o4gel
+og5re
+og5sk
+o5h
+o1i4d
+4o3in
+o1isk
+o1ism
+o1ist
+o1j
+o1k
+o3ka
+o1ke
+o2k1h
+o4k1l
+o2km
+o4kn
+o2k1t
+o3ku
+o3la
+o3le
+o1li
+o1lo
+ol4t1r
+o3lu
+o5ly
+o5l[aeligature]
+o2marb
+om2ele
+om2ene
+1omr
+om1si
+om1sl
+om1s4ve
+o4n1av
+on5g2r
+on3k
+o1nu
+oo2pe
+o1p6e
+o3pi
+op4p1ad
+op4p1arb
+op2p1etter
+op2p1of
+op2p1und
+op2p1[ostroke]2
+1opsj
+1o4ptim
+4or.
+o1ra
+3ordn
+ord3s
+o3re.
+o3reg
+o3rek
+o3ren
+o3rer
+o3re3s
+o3ret
+o3ri
+3o4rient
+or5im
+o4r5in
+or3k
+or2n1ne
+o1ro
+or3sl
+or3so
+or3s2t
+o2r1t4r
+o1r4u5m
+o1r[ostroke]
+or5[aring]4r
+o1sa
+o3si
+o3so
+os1tu
+o3t
+o4t1v
+o5un
+o1v
+1o4ver
+over1al
+ove4r3an
+ove4r1ens
+over5s4
+o4v1l
+o2v4s
+ov5si
+o5[aring]
+3pa
+pa5gh
+p5anl
+p3d
+3pen
+1per
+pe1ra
+perb2l
+pe3s
+pe4sk
+pe4u
+4p5h
+1p2la
+plag1som
+pla4s3t
+5p4lek
+ple2o
+ple4u
+1p2lo
+p4l[ostroke]y
+p3m
+p3n
+pne4u
+5pok
+4po3re
+po2st1o
+po2st1[aring]
+3pot
+potet5s6
+4p1p
+p2p1b
+p2p1d4
+p2p1evn
+ppel1s4in
+p2p1f
+p2p1g
+p2p1il
+p2p1j2
+p2p1k
+p2p3l
+p2p1m
+p2p1n
+p2p1over
+p2p1r
+p2p1s4
+pp5s4kr
+p2p3t2
+p2p1v
+pr4ak
+1pre
+1pros
+6ps.
+p3s2k
+p4s3kau
+p4s3kr
+4p3so
+ps4p
+ps3s2t
+p3st
+ps3v
+2p1t
+6pt.
+p2t1r
+1pu
+pu5b
+p5ule
+p5v
+3py
+5ped
+1p[aeligature]
+p[aring]3
+p[aring]4sk
+p[aring]5skj
+p[aring]5s4kr
+p[aring]5sku
+p[aring]5sky
+qu4
+ra5is
+rak1au
+ral1v2a
+4r1angi
+4rarb
+r4avl
+r1b2
+r4d5ar
+rd3d2r
+r4deks
+rd1n
+rd1r
+rd4s3
+rd5s4e
+rd5s4j
+rd5s4ki
+rd5skj
+rd5s4p
+rd5s4t
+redd5s2om
+re1dra
+2reff
+1rel
+re5la
+6relem
+4r1endr
+2r1e2nerg
+1re2o
+1re3org
+re1pe
+re3sp
+5r2essu
+re5s4tere
+re5s4tert
+4r1e2stim
+re5s4u
+re5u2ni
+r1f
+r1gu
+r1h
+ri3abe
+ri1e
+rig4s1
+rik4s1
+ri5la
+4rimo
+r4ing
+2r5ingeni
+ringse4
+ringso4r
+4rinp
+4rint
+ri1od
+ris3s2t
+r1j
+r3ka
+r2kb
+r1ke
+r1ki
+r1k2l
+r1kr
+rk3so
+rk4s3pr
+r3ku
+r5kj[aeligature]
+r1l
+rm1s6l
+r3mu
+r1n
+r2n2s1n
+r2n1f
+ro1b
+ro3p
+ro4p4s
+ropp2s5
+4ropti
+r3ord
+r3org
+r3ork
+r3p
+r4p1s
+rps4k
+4r1r
+r2rakti
+r2r1b
+r2r1d
+rrd2r
+rre3s
+r2r1f
+r2r1g
+r2r1k
+r2r1l
+r2r1m
+rro4n5
+r2r1p
+r2r1s4
+r2r1v
+r1sa
+r1si
+rs1k
+r3s2ka
+r4s4k1n
+r3s2ko
+r3s4kr
+rsk3t2
+r3s4ku
+r4s4k5v
+r3s2ky
+r3s2k[aring]
+rs4n
+r2s5n[ostroke]d
+r2som
+r3sp
+r4s1po
+r4s3r
+rs3s4k
+rs3s4t
+r5s2tu
+r5su
+r3s4v
+r3s4[ostroke]
+6rt.
+r1ta
+r5tal
+r1te
+r4teli
+r1ti
+r1tj
+r3to
+r4t5or
+rt5rat
+rt3re
+r5tri
+r5tro
+rt3s
+rt4s1d
+rt4s1f
+rt4s1kon
+rt4s1lig
+rt4s1m
+rt4s1r
+r5ty
+r5t[aeligature]
+r5t[ostroke]
+run4da
+ru2s1t
+r1uts
+r3va
+r1ve
+r3vi
+r2v1l
+r1v4r
+r3v[aeligature]
+ry4s
+4r[ostroke]n
+5r[ostroke]r
+r[ostroke]1vi
+3r[aring]d
+s3af
+5s6aga
+3s2ak
+sak2s1
+sak3s2e
+sak3s2[ostroke]k
+1sam
+sa4ma
+sam5s6
+s3ap
+s1ar
+2sart
+sa2rea
+1sat
+4s1b
+1s2ce
+1s2ci
+6s1d
+sdy4
+1se
+s4ed
+4s1e4gen
+sek4s
+2seksp
+se5lek
+sel1som
+2s1e2nerg
+2s1endr
+sen2t1re
+sen3t2rer
+se2ps
+4s1erkl
+se5ro
+se5ru
+se4som
+se4s3pr
+4s1evn
+s1f
+3s2f[aeligature]r
+4s1g4
+sim4p3le
+sin1d2rev
+4s3h
+4sinf
+s6ingu
+4s1i2ni
+si3s2te
+si4s3te.
+si5stens
+5sit
+si2tera
+5siu
+3sj
+4sj.
+sjek2t1a
+5s4jon
+sjon4s5
+s3ju
+s4juk
+5s2j[ostroke]
+sj[ostroke]l1
+6sk.
+3s4kaf
+3s2kala
+3s4kap
+4s5kapa
+skap4s3
+3s2katt
+s2k1d
+2s1ke
+s2k1h
+1ski
+s2kildr
+ski4n1a
+2s1king
+s2kip
+skip4s5
+1s4kj
+s4kj[ostroke]v
+s3k2l
+4s5koef
+3s4kole
+s3kr
+3s4krank
+3s4krap
+s4kei
+3s4krenk
+3s4krev
+5s6krib
+3s4krid
+3s4krif
+5s6krip
+3s4kriv
+3s4kritt
+sk5s4
+6skt.
+skue4r
+s4kut
+3s2ky
+s4k[aring]
+sk[aring]n1som
+sl4akt
+s1le
+slen2t1r
+1s2lett
+s2leng
+s2lep
+s1li
+1s2lip
+s2lit
+slit1som
+slo3
+3s2lu
+s5ly
+s2l[ostroke]r
+3sl[aring]
+s1m
+s2murn
+s2murt
+sm2ut
+s4my
+s4m[ostroke]ri
+sn2a
+1snak
+sne4k1r
+s2nik
+4snin
+1s4nit
+snitt4s1t
+s4n[aeligature]
+so3k
+5sol
+4s3omf
+4s3omk
+4s3omr
+som4tv
+3son
+4s1o2pp
+4s1ord
+sp4
+s4palt
+s4pan
+spar1som
+3s2peil
+3s4pen
+s2pera
+s2perr
+3spes
+3s4pi
+s1pl
+3s2pr
+spr[aring]k1l
+spr[aring]k1v
+1s2pur
+s4py
+s5r4
+4s1s
+s2s1all
+s2s1b
+s2s1d
+s3s4en
+s2s1f
+s2s1inj
+s2s1inn
+s2s1k
+ss2kr
+s2s1l
+s4s3luf
+s2s1m
+s2s1op
+ss2pl
+s4s3pr
+s2s1r
+s2s1t
+ss3tab
+s4s1u4l
+s2s1v
+s2s1[aring]
+6st.
+1s2tab
+5s4tam
+3s2tan
+4sta4na
+3s2tasj
+3s2tat
+1stav
+2st1b
+4s4td
+s1te
+4ste.
+3s2ted
+4s3teda
+st2eg
+3s2tein
+4sten.
+s2tendelig
+s2tendig
+4stene.
+1s2teng
+4stens.
+4s3teo
+4ster.
+s2terk
+4stes.
+4stet.
+s2teu
+1sti
+2stid
+3s2tikk
+3stj
+6s2t1m
+1sto
+s2t5om
+3s2t2r
+5s4trat
+6s4t5re.
+6s4t5rene.
+6s4t5ret.
+4s4t3ring
+4s3tro
+5s4truk
+5s4tr[ostroke]m
+str[ostroke]ms5
+4st1s
+5s2tud
+st4uv
+2s2t1v
+1sty
+5s6tyr
+5s2t[ostroke]
+3s2t[aring]
+1su2b1
+s1u2ke
+suk1r
+3sul
+5s2um
+3sur
+sur4s5k
+2s1u2t
+s2var
+svar4s
+s3ve
+s4vev
+s4vu
+s4v[ostroke]
+3s4y
+syn1d2r
+1sy1s
+1sys2t
+1s[aeligature]
+s[aeligature]2r1e4g
+s[aeligature]2r1e2i
+s[aeligature]r1int
+1s[ostroke]
+s[aring]4r
+5ta.
+ta1b2lett
+1tag
+ta4l1ak
+tanns3
+4tanv
+1ta4s3t
+ta5s4t4r
+t4avl
+4tb
+tede4l
+te1dra
+teds5
+1teg
+4t1e4gen
+5tekn
+te5lek
+te2n1om
+te2o
+teo1re
+te5ret
+5term
+te3ro
+tes2teks
+te5s4tere
+te5s4tert
+2t1e2stim
+tet4s5
+te4uto
+4t5f
+6t3g
+4t1h
+tialis5t
+3tid
+tid4s5
+ti4en
+til1d2r
+ti4l3eg
+ti4li4s
+til1s2t
+2t1i2tera
+ti5t6r
+ti[ostroke]4
+tj4uv
+4t3k
+4t1l
+tli4s5
+4t1m
+4t1n
+t4ok.
+4t1o2per
+to1po
+4topti
+to3ra
+to4r1ar
+to4r1as
+to4r1au
+to4r1av
+to1re
+to1ri
+tor4m
+4t3p
+t4r4a
+tran4s
+tr4eff
+3trekk.
+4tres
+t6rettel
+4t1ring
+tr2o5ver
+1try
+t4r[aring]d
+4ts
+t3si
+t4s1inn
+t1s2kr
+ts1kv
+ts4pa
+ts3pr
+ts3s2k
+ts5s2t
+t3st
+ts1v
+t3s[aring]
+4t1t
+t2takti
+tte4r
+tte5ra
+tte6r1alg
+tte5re
+tte5ri
+tte5r[aeligature]
+t2t1h
+t2t1inn
+t2t1m
+t4t1opp
+t2t1s
+tt2s1adv
+tt2s1ald
+tt2s1an
+tt2s1ar
+tt2s1d
+tt2s1f
+tt4s1j
+tt2s1k
+tt3s4kr
+tt2s1l
+tt2s1m
+tt2s5p
+tt4s1tj
+tt2s1v
+t2t1v
+t2t1[aring]4
+t5uts
+5tur
+t3ve
+tvil1som
+1t2vist
+t4vu
+t3v[aeligature]
+tynn3s2l
+1typ
+tys4k3l
+u1a
+u2ale
+u3alen
+u3aler
+u3alet
+u2ali
+u2ane
+u2are
+u2asj
+1u2av
+ud3d4hi
+ud1r
+u1e
+u3e2n
+ue4t5
+uf5f4l
+ug3l[ostroke]
+ugs3
+u5gu
+u3i
+u4ida
+u4ide
+u4idum
+u4ine
+u4ise
+u5i2sen
+u4isj
+u4ite
+u4iti
+u1ke
+uke4ri
+u1ko
+uk4ta
+uk4tr
+u1la
+u1le
+3u4ly
+u3l[aeligature]
+u1l[ostroke]
+u2m1enh
+u2mint
+ums3l2
+um2sn
+um4p3le
+um4p3li
+uni1o2n
+unions1
+un2s1t
+un2t1r
+u5pe
+u1pi
+up3l
+up3p4l
+u3ra
+u3re
+u4r3eg
+u1ri
+u3ro
+u4r1opp
+urs1l
+u3si
+u4sikker
+u5ska
+u5so
+u5spek
+u4s5pen
+us5v
+u1ta
+ut1ad1
+u1te
+ut1eksa
+u1ti
+ut1j
+5utl
+u1to
+ut5r
+ut3s
+uts4pr
+3ut1v
+ut4vet
+ut2vil
+u2t3vist
+ut1[ostroke]2v
+ut1[aring]nd
+u1u2m
+3u3v
+u4vl
+u4vst
+u1[ostroke]
+va3d
+va4dm
+va4ds
+va4k1re
+2vakti
+1var
+van4n1av
+3varm
+var1som
+va4t1r
+6v1bl
+2v1d
+1ved
+veg1g2r
+ve4k4s
+vek5sel
+ve4l5opp
+ve4l1ord
+vel1s2t
+ve6l1ut
+6v1endr
+ven2s1ta
+ven4st3re
+ven2s1ty
+3verd
+ve4reg
+1verk
+v4erv
+ve3s
+ve4ske
+ve4st
+ve5s4tere
+ve5s4teri
+ve5s4tert
+1vet
+6v1g4
+v5h
+vi2ce
+vide2o
+vi4l3in
+vil4t1r
+vim4p3l
+vin1d2ru
+1vis
+vi2ss
+v1j
+1v2ju
+v5k
+vl4
+v3le
+v5li
+vls1
+2v1m
+2vn
+1vo
+4v5om
+vor1ett
+v5p
+v1r
+v2s5f
+vs3s2k
+vs3s2t
+v3st
+v5su
+v3t
+6vt.
+v4t1l
+3vu
+v1v
+3v[aring]
+v[aring]r3s2
+1xa
+1xe
+1xi
+x1n
+1xy
+y3a
+yde4rer
+y5dr
+y3e
+ye4der
+ye2ne.
+ye4r
+y4f3l
+y3i
+y3ke
+y5ki
+yk3li
+y3kl4o
+y3ko
+yk4s5
+y3kv
+y5li
+y5lo
+ym3p2t
+y5mu
+y5na
+yns5
+yn1t4
+y5o
+y1pe
+y3pi
+y3po
+y3re
+yr3ek
+y3ri
+yr1ull
+y1r[aring]
+y5se
+y3si
+y2sl
+y3te
+y3ti
+y3tr
+y1u
+y5ve
+y1vi
+y5v[aeligature]
+y1[aring]4
+1ze
+ze2o
+zi5o
+4z1z
+[aeligature]1re
+[aeligature]3ri
+[aeligature]r4ma
+[aeligature]r4mo
+[aeligature]r3opp
+[aeligature]r1s2ki
+[ostroke]de3
+[ostroke]3e
+[ostroke]e2ne.
+[ostroke]e4r
+[ostroke]4f3l
+[ostroke]1i
+[ostroke]3ke
+1[ostroke]2ko
+[ostroke]3le
+[ostroke]l1v2a
+[ostroke]nn4s1t
+[ostroke]n4t3
+[ostroke]1pe
+[ostroke]1pi
+[ostroke]1re
+[ostroke]re5d
+[ostroke]3ri
+[ostroke]rne3
+[ostroke]r5o
+[ostroke]r2s1t
+[ostroke]r1[ostroke]
+[ostroke]1si
+[ostroke]1te
+[ostroke]t1r
+[ostroke]1va
+[ostroke]1ve
+[ostroke]ver2st
+[ostroke]2v1r
+[ostroke]1v[aeligature]
+[ostroke]4y
+[ostroke]y4em
+[ostroke]y5en
+[ostroke]y5er
+[ostroke]y5et
+[ostroke]y1f
+[ostroke]y3s2
+[ostroke]y4s3t
+[ostroke]y1v
+[aring]1d
+[aring]2d1f
+[aring]2d1h
+[aring]2d1k
+[aring]2d1l
+[aring]2d1m
+[aring]2d5s4l
+[aring]2d3s4n
+[aring]2d3s4p
+[aring]2d4s5r
+[aring]2d1t
+[aring]2d1v
+[aring]1e
+[aring]e2ne.
+[aring]e4r
+[aring]g3l[ostroke]
+[aring]5h
+[aring]1i
+[aring]1ke
+[aring]1kj
+[aring]3l
+[aring]4lb
+[aring]4lf
+[aring]4lg
+[aring]4lr
+[aring]4lt
+[aring]4l1[ostroke]
+[aring]1pe
+[aring]1ra
+[aring]3re
+[aring]r2s1
+[aring]r4s2j
+[aring]r4s5k
+[aring]r4s5p
+[aring]r2s5t
+[aring]r4s5v
+[aring]3t
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-pl.hyp b/Master/texmf-dist/tex/context/patterns/lang-pl.hyp
new file mode 100644
index 00000000000..d426027354a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-pl.hyp
@@ -0,0 +1,47 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: plhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='pl'>
+% <sourcefile>plhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Polish language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+be-zach
+be-zami
+by-naj-mniej
+gdzie-nie-gdzie
+ina-czej
+na-dal
+ni-gdy
+ni-gdzie
+niech-[zdotaccent]e
+niech-by
+ow-szem
+p[oacute]-[lstroke]ach
+p[oacute]-[lstroke]ami
+p[oacute]-[lstroke]ek
+pod-[oacute]w-czas
+przy-naj-mniej
+sk[aogonek]d-in[aogonek]d
+tr[oacute]-jach
+tr[oacute]-jami
+tr[oacute]-jek
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-pl.pat b/Master/texmf-dist/tex/context/patterns/lang-pl.pat
new file mode 100644
index 00000000000..9171e29b995
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-pl.pat
@@ -0,0 +1,4080 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: plhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='pl'>
+% <sourcefile>plhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Polish language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.[cacute][cacute]8
+.[cacute][lstroke]8
+.[cacute][nacute]8
+.[cacute][sacute]8
+.[cacute][zacute]8
+.[cacute][zdotaccent]8
+.[cacute]8
+.[cacute]b8
+.[cacute]c8
+.[cacute]d8
+.[cacute]f8
+.[cacute]g8
+.[cacute]h8
+.[cacute]j8
+.[cacute]k8
+.[cacute]l8
+.[cacute]m8
+.[cacute]n8
+.[cacute]p8
+.[cacute]r8
+.[cacute]s8
+.[cacute]t8
+.[cacute]v8
+.[cacute]w8
+.[cacute]wier2[cacute]3
+.[cacute]x8
+.[cacute]z8
+.[lstroke][cacute]8
+.[lstroke][lstroke]8
+.[lstroke][nacute]8
+.[lstroke][sacute]8
+.[lstroke][zacute]8
+.[lstroke][zdotaccent]8
+.[lstroke]8
+.[lstroke]b8
+.[lstroke]c8
+.[lstroke]d8
+.[lstroke]f8
+.[lstroke]g8
+.[lstroke]h8
+.[lstroke]j8
+.[lstroke]k8
+.[lstroke]l8
+.[lstroke]m8
+.[lstroke]n8
+.[lstroke]p8
+.[lstroke]r8
+.[lstroke]s8
+.[lstroke]t8
+.[lstroke]v8
+.[lstroke]w8
+.[lstroke]x8
+.[lstroke]z8
+.[nacute][cacute]8
+.[nacute][lstroke]8
+.[nacute][nacute]8
+.[nacute][sacute]8
+.[nacute][zacute]8
+.[nacute][zdotaccent]8
+.[nacute]8
+.[nacute]b8
+.[nacute]c8
+.[nacute]d8
+.[nacute]f8
+.[nacute]g8
+.[nacute]h8
+.[nacute]j8
+.[nacute]k8
+.[nacute]l8
+.[nacute]m8
+.[nacute]n8
+.[nacute]p8
+.[nacute]r8
+.[nacute]s8
+.[nacute]t8
+.[nacute]v8
+.[nacute]w8
+.[nacute]x8
+.[nacute]z8
+.[sacute][cacute]8
+.[sacute][lstroke]8
+.[sacute][nacute]8
+.[sacute][sacute]8
+.[sacute][zacute]8
+.[sacute][zdotaccent]8
+.[sacute]8
+.[sacute]b8
+.[sacute]c8
+.[sacute]d8
+.[sacute]f8
+.[sacute]g8
+.[sacute]h8
+.[sacute]j8
+.[sacute]k8
+.[sacute]l8
+.[sacute]m8
+.[sacute]n8
+.[sacute]p8
+.[sacute]r[oacute]2d5
+.[sacute]r[oacute]dr2
+.[sacute]r8
+.[sacute]s8
+.[sacute]t8
+.[sacute]v8
+.[sacute]w8
+.[sacute]wiat[lstroke]o3w2
+.[sacute]x8
+.[sacute]z8
+.[zacute][cacute]8
+.[zacute][lstroke]8
+.[zacute][nacute]8
+.[zacute][sacute]8
+.[zacute][zacute]8
+.[zacute][zdotaccent]8
+.[zacute]8
+.[zacute]b8
+.[zacute]c8
+.[zacute]d[zacute]8
+.[zacute]d8
+.[zacute]f8
+.[zacute]g8
+.[zacute]h8
+.[zacute]j8
+.[zacute]k8
+.[zacute]l8
+.[zacute]m8
+.[zacute]n8
+.[zacute]p8
+.[zacute]r8
+.[zacute]s8
+.[zacute]t8
+.[zacute]v8
+.[zacute]w8
+.[zacute]x8
+.[zacute]z8
+.[zdotaccent][cacute]8
+.[zdotaccent][lstroke]8
+.[zdotaccent][nacute]8
+.[zdotaccent][sacute]8
+.[zdotaccent][zacute]8
+.[zdotaccent][zdotaccent]8
+.[zdotaccent]8
+.[zdotaccent]b8
+.[zdotaccent]c8
+.[zdotaccent]d8
+.[zdotaccent]f8
+.[zdotaccent]g8
+.[zdotaccent]h8
+.[zdotaccent]j8
+.[zdotaccent]k8
+.[zdotaccent]l8
+.[zdotaccent]m8
+.[zdotaccent]n8
+.[zdotaccent]p8
+.[zdotaccent]r8
+.[zdotaccent]s8
+.[zdotaccent]t8
+.[zdotaccent]v8
+.[zdotaccent]w8
+.[zdotaccent]x8
+.[zdotaccent]z8
+.a2b2s3t
+.a2d3
+.ad4a
+.ad4e
+.ad4i
+.ad4o
+.ad4u
+.ad4y
+.ad5apt
+.ad5iu
+.ad5op
+.ad5or
+.ae3ro
+.aeroa2
+.aeroe2
+.aeroi2
+.aeroo2
+.aerou2
+.antya2
+.antye2
+.antyi2
+.antyo2
+.antyu2
+.arcy3[lstroke]2
+.arcy3b2
+.arcy3bz2
+.arcy3k2
+.arcy3m2
+.arcya2
+.arcye2
+.arcyi2
+.arcyo2
+.arcyu2
+.au3g2
+.au3k2
+.au3t2
+.auto3ch2
+.autoa2
+.autoe2
+.autoi2
+.autoo2
+.autotran2s3
+.autou2
+.b[cacute]8
+.b[lstroke]8
+.b[nacute]8
+.b[sacute]8
+.b[zacute]8
+.b[zdotaccent]8
+.b8
+.bb8
+.bc8
+.bd8
+.be2z3
+.be3z4an
+.be3z4ec
+.be3z4ik
+.bezch2
+.bezm2
+.bezo2
+.bezo2b1j
+.bezw2
+.bezzw2
+.bf8
+.bg8
+.bh8
+.bj8
+.bk8
+.bl8
+.bm8
+.bn8
+.bp8
+.br8
+.brz8
+.bs8
+.bt8
+.bv8
+.bw8
+.bx8
+.bz8
+.c[cacute]8
+.c[lstroke]8
+.c[nacute]8
+.c[sacute]8
+.c[zacute]8
+.c[zdotaccent]8
+.c8
+.ca[lstroke]o3[sacute]2
+.ca[lstroke]o3k2
+.cb8
+.cc8
+.cd8
+.cf8
+.cg8
+.ch8
+.chrz8
+.cienko3w2
+.ciep[lstroke]o3kr2
+.cj8
+.ck8
+.cl8
+.cm8
+.cn8
+.cp8
+.cr8
+.cs8
+.ct8
+.cv8
+.cw8
+.cx8
+.cz8
+.czarno3k2
+.czk8
+.cztere2ch3
+.czterechse2t3
+.cztero3[sacute]2
+.czw[oacute]2r3
+.czw[oacute]3r4[aogonek]
+.czw[oacute]3r4[eogonek]
+.czw[oacute]3r4a
+.czw[oacute]3r4e
+.czw[oacute]3r4o
+.d[cacute]8
+.d[lstroke]8
+.d[lstroke]ugo3tr2
+.d[lstroke]ugo3w2
+.d[nacute]8
+.d[sacute]8
+.d[zacute]8
+.d[zdotaccent]8
+.d8
+.daleko3w2
+.db8
+.dc8
+.dd8
+.de2z3
+.de3z4a3bil
+.de3z4a3wu
+.de3z4el
+.de3z4er
+.de3z4y
+.deza2
+.dezo2
+.df8
+.dg8
+.dh8
+.dj8
+.dk8
+.dl8
+.dm8
+.dn8
+.do3[cacute]2
+.do3[lstroke]2
+.do3[sacute]2
+.do3[zacute]2
+.do3[zdotaccent]2
+.do3b2
+.do3c2
+.do3d2
+.do3f2
+.do3g2
+.do3h2
+.do3k2
+.do3l2
+.do3m2
+.do3p2
+.do3r2
+.do3s2
+.do3t2
+.do3w2
+.do3z2
+.do4[lstroke]3k
+.do4k3t
+.do4l3n
+.do4m3k
+.do4r3s
+.do4w3c
+.do5m4k2n
+.dobr2
+.dobrz2
+.doch2
+.docz2
+.dod[zacute]2
+.dod[zdotaccent]2
+.dodz2
+.dogrz2
+.dopch2
+.doprz2
+.dor[zdotaccent]2
+.dorz2
+.dosch2
+.dosm2
+.dosz2
+.dotk2
+.dotr2
+.dp8
+.dr8
+.drogo3w2
+.drz8
+.ds8
+.dt8
+.dv8
+.dw[oacute]2j3
+.dw[oacute]3j4[aogonek]
+.dw[oacute]3j4[eogonek]
+.dw[oacute]3j4a
+.dw[oacute]3j4e
+.dw[oacute]3j4o
+.dw8
+.dx8
+.dy2s3
+.dy2z3
+.dy3s4e
+.dy3s4o
+.dy3s4ta
+.dy3s4y
+.dy3sz
+.dy3z4e
+.dyzu2
+.dz8
+.dziesi[eogonek]cio3[sacute]2
+.dziewi[eogonek][cacute]se2t3
+.dziewi[eogonek]2[cacute]3
+.dziewi[eogonek]cio3[sacute]2
+.e2k2s3
+.e2m3e2s5ze2t
+.e2s1e2s1ma
+.e2s1ha
+.e2s1t
+.egoa2
+.egoe2
+.egoi2
+.egoo2
+.egou2
+.eks4y
+.elektroa2
+.elektroe2
+.elektroi2
+.elektroo2
+.elektrou2
+.f[cacute]8
+.f[lstroke]8
+.f[nacute]8
+.f[sacute]8
+.f[zacute]8
+.f[zdotaccent]8
+.f8
+.fb8
+.fc8
+.fd8
+.ff8
+.fg8
+.fh8
+.fj8
+.fk8
+.fl8
+.fm8
+.fn8
+.fp8
+.fr8
+.fs8
+.ft8
+.fv8
+.fw8
+.fx8
+.fz8
+.g[cacute]8
+.g[lstroke]8
+.g[nacute]8
+.g[sacute]8
+.g[zacute]8
+.g[zdotaccent]8
+.g8
+.gb8
+.gc8
+.gd8
+.ge2o3
+.gf8
+.gg8
+.gh8
+.gj8
+.gk8
+.gl8
+.gm8
+.gn8
+.go2u3
+.gp8
+.gr8
+.grubo3w2
+.grz8
+.gs8
+.gt8
+.gv8
+.gw8
+.gx8
+.gz8
+.h[cacute]8
+.h[lstroke]8
+.h[nacute]8
+.h[sacute]8
+.h[zacute]8
+.h[zdotaccent]8
+.h8
+.hb8
+.hc8
+.hd8
+.hf8
+.hg8
+.hh8
+.hipe2r3
+.hipe3r4o
+.hipera2
+.hipere2
+.hj8
+.hk8
+.hl8
+.hm8
+.hn8
+.hp8
+.hr8
+.hs8
+.ht8
+.hv8
+.hw8
+.hx8
+.hz8
+.i2n3
+.i2s3l
+.i3n4ic
+.i3n4o
+.i3n4u
+.i4n5o2k
+.in4f3lan
+.ino3w2
+.izoa2
+.izoe2
+.izoi2
+.izoo2
+.izou2
+.j[cacute]8
+.j[lstroke]8
+.j[nacute]8
+.j[sacute]8
+.j[zacute]8
+.j[zdotaccent]8
+.j8
+.jad[lstroke]o3w2
+.jb8
+.jc8
+.jd8
+.jf8
+.jg8
+.jh8
+.jj8
+.jk8
+.jl8
+.jm8
+.jn8
+.jp8
+.jr8
+.js8
+.jt8
+.jv8
+.jw8
+.jx8
+.jz8
+.k[cacute]8
+.k[lstroke]8
+.k[nacute]8
+.k[sacute]8
+.k[zacute]8
+.k[zdotaccent]8
+.k8
+.kb8
+.kc8
+.kd8
+.kf8
+.kg8
+.kh8
+.kilkuse2t3
+.kilkuseto2
+.kj8
+.kk8
+.kl8
+.km8
+.kn8
+.ko[lstroke]o3w2
+.kon2t2r3
+.kon3tr4a
+.kon3tr4e
+.kon3tr4o3l
+.kon3tr4o3w
+.kon3tr4y
+.kon4tr5a2gi
+.kon4tr5a2se
+.kon4tr5a2sy
+.kon4tr5a2ta
+.kon4tr5adm
+.kon4tr5akc
+.kon4tr5alt
+.kon4tr5arg
+.kontro2
+.kontru2
+.kp8
+.kr[oacute]tko3tr2
+.kr[oacute]tko3w2
+.kr8
+.kro2[cacute]3
+.krz8
+.ks8
+.kt8
+.kv8
+.kw8
+.kx8
+.kz8
+.l[cacute]8
+.l[lstroke]8
+.l[nacute]8
+.l[sacute]8
+.l[zacute]8
+.l[zdotaccent]8
+.l8
+.lb8
+.lc8
+.ld8
+.lf8
+.lg8
+.lh8
+.lj8
+.lk8
+.ll8
+.lm8
+.ln8
+.lp8
+.lr8
+.ls8
+.lt8
+.ludo3w2
+.lv8
+.lw8
+.lx8
+.lz8
+.m[cacute]8
+.m[lstroke]8
+.m[nacute]8
+.m[sacute]8
+.m[zacute]8
+.m[zdotaccent]8
+.m8
+.mb8
+.mc8
+.md8
+.mf8
+.mg8
+.mh8
+.mili3amp
+.mj8
+.mk8
+.ml8
+.mm8
+.mn8
+.mo[zdotaccent]no3w2
+.mp8
+.mr8
+.ms8
+.mt8
+.mv8
+.mw8
+.mx8
+.mz8
+.n[cacute]8
+.n[lstroke]8
+.n[nacute]8
+.n[sacute]8
+.n[zacute]8
+.n[zdotaccent]8
+.n8
+.na2d2
+.na2j
+.na3[cacute]2
+.na3[lstroke]2
+.na3[sacute]2
+.na3[zacute]2
+.na3[zdotaccent]2
+.na3b2
+.na3c2
+.na3d[aogonek]
+.na3d[eogonek]
+.na3d[zacute]2
+.na3d4[lstroke]ub
+.na3d4ir
+.na3d4much
+.na3d4r[eogonek]cz
+.na3d4r2w
+.na3d4repcz
+.na3d4rept
+.na3d4ruk
+.na3d4rz
+.na3d4worn
+.na3daj
+.na3de
+.na3do
+.na3dy
+.na3dzi
+.na3f2
+.na3g2
+.na3h2
+.na3j[aogonek]
+.na3j[eogonek]
+.na3jazd
+.na3je
+.na3k2
+.na3l2
+.na3m2
+.na3p2
+.na3r2
+.na3s2
+.na3t2
+.na3u2
+.na3w2
+.na3z2
+.na4d3o2b2[lstroke]
+.na4d3o2bojcz
+.na4d3o2bowi
+.na4d3o2brot
+.na4d3o2drz
+.na4d3o2kien
+.na4d3olbrz
+.na4d5rz[aogonek]
+.na4d5rz[eogonek]
+.na4d5rzecz
+.na4d5rzy
+.na4d5ziem
+.na4f3c
+.na4f3t
+.na4j3e2f
+.na4j3e2g
+.na4j3e2k2s
+.na4j3e2ko
+.na4j3e2n
+.na4j3e2r
+.na4j3e2s
+.na4j3e2w
+.na4j3emf
+.na4j3eu
+.na4r3c
+.na4r3d
+.na4r3k
+.na4r3r
+.na4r3t
+.nabrz2
+.nach2
+.nacz2
+.nad[sacute]rod5ziem
+.nad3[cacute]2
+.nad3[lstroke]2
+.nad3[sacute]2
+.nad3b2
+.nad3c2
+.nad3d2
+.nad3e2tat
+.nad3f2
+.nad3g2
+.nad3h2
+.nad3i2
+.nad3j2
+.nad3k2
+.nad3l2
+.nad3m2
+.nad3n2
+.nad3p2
+.nad3r2
+.nad3s2
+.nad3t2
+.nad3u2
+.nad3w2
+.nad5[zdotaccent]2
+.nad5z[oacute]
+.nad5z2mys
+.nad5zo
+.nad5zwycz
+.nadch2
+.nadcz2
+.nadd[zacute]2
+.nade3[cacute]2
+.nade3[lstroke]2
+.nade3[sacute]2
+.nade3[zacute]2
+.nade3[zdotaccent]2
+.nade3b2
+.nade3c2
+.nade3d2
+.nade3f2
+.nade3g2
+.nade3h2
+.nade3k2
+.nade3l2
+.nade3m2
+.nade3p2
+.nade3r2
+.nade3s2
+.nade3t2
+.nade3w2
+.nade3z2
+.nade4p3c
+.nade4p3n
+.nade4p3t
+.nadech2
+.nadecz2
+.naded[zacute]2
+.naded[zdotaccent]2
+.nadedz2
+.nader[zdotaccent]2
+.naderz2
+.nadesz2
+.nadsz2
+.nadtr2
+.nadz2
+.nagrz2
+.naj3[cacute]2
+.naj3[lstroke]2
+.naj3[sacute]2
+.naj3[zacute]2
+.naj3[zdotaccent]2
+.naj3akt
+.naj3au
+.naj3b2
+.naj3c2
+.naj3d2
+.naj3f2
+.naj3g2
+.naj3h2
+.naj3i2
+.naj3k2
+.naj3l2
+.naj3m2
+.naj3o2
+.naj3o2[cacute]2
+.naj3o2[lstroke]2
+.naj3o2[sacute]2
+.naj3o2[zacute]2
+.naj3o2[zdotaccent]2
+.naj3o2b2
+.naj3o2c2
+.naj3o2d2
+.naj3o2f2
+.naj3o2g2
+.naj3o2h2
+.naj3o2k2
+.naj3o2l2
+.naj3o2m2
+.naj3o2p2
+.naj3o2r2
+.naj3o2s2
+.naj3o2t2
+.naj3o2w2
+.naj3o2z2
+.naj3p2
+.naj3r2
+.naj3ro2z3
+.naj3s2
+.naj3t2
+.naj3u2
+.naj3w2
+.naj3z2
+.najbe2z3
+.najbezw2
+.najch2
+.najcz2
+.najd[zacute]2
+.najd[zdotaccent]2
+.najdo3[cacute]2
+.najdo3[lstroke]2
+.najdo3[sacute]2
+.najdo3[zacute]2
+.najdo3[zdotaccent]2
+.najdo3b2
+.najdo3c2
+.najdo3d2
+.najdo3f2
+.najdo3g2
+.najdo3h2
+.najdo3k2
+.najdo3l2
+.najdo3m2
+.najdo3p2
+.najdo3r2
+.najdo3s2
+.najdo3t2
+.najdo3w2
+.najdo3z2
+.najdoch2
+.najdocz2
+.najdod[zacute]2
+.najdod[zdotaccent]2
+.najdodz2
+.najdorz2
+.najdosz2
+.najdotk2
+.najdz2
+.najkr2
+.najob3[cacute]2
+.najob3[lstroke]2
+.najob3[sacute]2
+.najob3[zacute]2
+.najob3[zdotaccent]2
+.najob3c2
+.najob3d2
+.najob3f2
+.najob3g2
+.najob3h2
+.najob3j2
+.najob3k2
+.najob3l2
+.najob3m2
+.najob3n2
+.najob3p2
+.najob3s2
+.najob3t2
+.najob3w2
+.najobch2
+.najobcz2
+.najobd[zacute]2
+.najobd[zdotaccent]2
+.najobdz2
+.najobrz2
+.najobsz2
+.najoch2
+.najocz2
+.najod[zacute]2
+.najod3[cacute]2
+.najod3[sacute]2
+.najod3c2
+.najod3d2
+.najod3f2
+.najod3g2
+.najod3h2
+.najod3j2
+.najod3k2
+.najod3l2
+.najod3m2
+.najod3n2
+.najod3p2
+.najod3s2
+.najod3t2
+.najod3w2
+.najod5[zdotaccent]2
+.najodch2
+.najodcz2
+.najodd[zacute]2
+.najodd[zdotaccent]2
+.najoddz2
+.najodsz2
+.najodz2
+.najorz2
+.najosz2
+.najro3z4u
+.najrz2
+.najsm2
+.najsz2
+.najtk2
+.najtr2
+.najucz2
+.najzw2
+.nakr2
+.napo2d2
+.napo3[cacute]2
+.napo3[lstroke]2
+.napo3[sacute]2
+.napo3[zacute]2
+.napo3[zdotaccent]2
+.napo3b2
+.napo3c2
+.napo3f2
+.napo3g2
+.napo3h2
+.napo3k2
+.napo3l2
+.napo3m2
+.napo3p2
+.napo3r2
+.napo3s2
+.napo3t2
+.napo3w2
+.napo3z2
+.napo4m3p
+.napoch2
+.napocz2
+.napod[zacute]2
+.napod[zdotaccent]2
+.napod3d
+.napomk2
+.naporz2
+.naposz2
+.naprz2
+.nar[zdotaccent]2
+.naro2z3
+.narz2
+.nasm2
+.nasz2
+.natch2
+.natk2
+.naz3m2
+.nazw2
+.nb8
+.nc8
+.nd8
+.ne2o3
+.nf8
+.ng8
+.nh8
+.nie3[cacute]2
+.nie3[lstroke]2
+.nie3[sacute]2
+.nie3[zacute]2
+.nie3[zdotaccent]2
+.nie3b2
+.nie3c2
+.nie3d2
+.nie3f2
+.nie3g2
+.nie3h2
+.nie3k2
+.nie3l2
+.nie3m2
+.nie3p2
+.nie3r2
+.nie3s2
+.nie3t2
+.nie3u2
+.nie3w2
+.nie3z2
+.nie4c3c
+.nie4c3k
+.nie4d[zacute]3
+.nie4m3c
+.nie4m3k
+.niech2
+.niecz2
+.nied[zdotaccent]2
+.niedo3[cacute]2
+.niedo3[lstroke]2
+.niedo3[sacute]2
+.niedo3[zacute]2
+.niedo3[zdotaccent]2
+.niedo3b2
+.niedo3c2
+.niedo3d2
+.niedo3f2
+.niedo3g2
+.niedo3h2
+.niedo3k2
+.niedo3l2
+.niedo3m2
+.niedo3p2
+.niedo3r2
+.niedo3s2
+.niedo3t2
+.niedo3w2
+.niedo3z2
+.niedobrz2
+.niedoch2
+.niedocz2
+.niedod[zacute]2
+.niedod[zdotaccent]2
+.niedodz2
+.niedokr2
+.niedomk2
+.niedopch2
+.niedorz2
+.niedosz2
+.niedotk2
+.niedz2
+.nieo[cacute]2
+.nieo[lstroke]2
+.nieo[sacute]2
+.nieo[zacute]2
+.nieo[zdotaccent]2
+.nieo2
+.nieob2
+.nieob3[cacute]2
+.nieob3[sacute]2
+.nieob3[zacute]2
+.nieob3[zdotaccent]2
+.nieob3c2
+.nieob3d2
+.nieob3f2
+.nieob3g2
+.nieob3h2
+.nieob3j2
+.nieob3k2
+.nieob3m2
+.nieob3p2
+.nieob3s2
+.nieob3w2
+.nieobch2
+.nieobcz2
+.nieobd[zacute]2
+.nieobd[zdotaccent]2
+.nieobdz2
+.nieobsz2
+.nieoc2
+.nieoch2
+.nieocz2
+.nieod[zacute]2
+.nieod2
+.nieod3[cacute]2
+.nieod3[lstroke]2
+.nieod3[sacute]2
+.nieod3c2
+.nieod3d2
+.nieod3f2
+.nieod3g2
+.nieod3h2
+.nieod3j2
+.nieod3k2
+.nieod3l2
+.nieod3n2
+.nieod3p2
+.nieod3s2
+.nieod3t2
+.nieod3wr
+.nieod5[zdotaccent]2
+.nieodch2
+.nieodcz2
+.nieodd[zacute]2
+.nieodd[zdotaccent]2
+.nieoddz2
+.nieodsz2
+.nieodw2
+.nieodz2
+.nieof2
+.nieog2
+.nieoh2
+.nieok2
+.nieol2
+.nieom2
+.nieop2
+.nieor2
+.nieorz2
+.nieos2
+.nieosz2
+.nieot2
+.nieow2
+.nieoz2
+.niepo2d2
+.niepo3[cacute]2
+.niepo3[lstroke]2
+.niepo3[sacute]2
+.niepo3[zacute]2
+.niepo3[zdotaccent]2
+.niepo3b2
+.niepo3c2
+.niepo3d[zacute]2
+.niepo3d4[lstroke]u
+.niepo3d4much
+.niepo3d4r[eogonek]cz
+.niepo3d4ra[zdotaccent]
+.niepo3d4rap
+.niepo3d4repcz
+.niepo3d4rept
+.niepo3d4waj
+.niepo3d4woj
+.niepo3do
+.niepo3du
+.niepo3dz2
+.niepo3f2
+.niepo3g2
+.niepo3h2
+.niepo3k2
+.niepo3l2
+.niepo3m2
+.niepo3p2
+.niepo3r2
+.niepo3s2
+.niepo3t2
+.niepo3w2
+.niepo3z2
+.niepo4d3o2choc
+.niepo4d3o2strz
+.niepoch2
+.niepocz2
+.niepod3[cacute]2
+.niepod3[lstroke]2
+.niepod3[sacute]2
+.niepod3b2
+.niepod3c2
+.niepod3d2
+.niepod3f2
+.niepod3g2
+.niepod3h2
+.niepod3j2
+.niepod3k2
+.niepod3l2
+.niepod3m2
+.niepod3n2
+.niepod3p2
+.niepod3r2
+.niepod3s2
+.niepod3t2
+.niepod3w2
+.niepod5[zdotaccent]
+.niepodch2
+.niepodcz2
+.niepodd[zacute]2
+.niepodd[zdotaccent]2
+.niepodsm2
+.niepodsz2
+.nieporz2
+.nieposm2
+.nieposz2
+.nieprze[lstroke]k2
+.nieprze2d2
+.nieprze3[cacute]2
+.nieprze3[lstroke]2
+.nieprze3[sacute]2
+.nieprze3[zacute]2
+.nieprze3[zdotaccent]2
+.nieprze3b2
+.nieprze3brz2
+.nieprze3c2
+.nieprze3d[zacute]2
+.nieprze3d4[lstroke]u[zdotaccent]
+.nieprze3d4much
+.nieprze3d4ramat
+.nieprze3d4ruk
+.nieprze3d4ryl
+.nieprze3d4rz2
+.nieprze3d4um
+.nieprze3dy
+.nieprze3dz2
+.nieprze3e2k2s3
+.nieprze3f2
+.nieprze3g2
+.nieprze3h2
+.nieprze3k2
+.nieprze3l2
+.nieprze3m2
+.nieprze3n2
+.nieprze3p2
+.nieprze3r2
+.nieprze3s2
+.nieprze3t2
+.nieprze3w2
+.nieprze3z2
+.nieprze4d5[lstroke]u[zdotaccent]yc
+.nieprze4d5[zdotaccent]2
+.nieprze4d5z2a
+.nieprze4d5zg2
+.nieprze4d5zim
+.nieprze4d5zj
+.nieprze4d5zl
+.nieprze4d5zw2r
+.nieprze4d5zwoj
+.nieprzech2
+.nieprzecz2
+.nieprzed3[cacute]2
+.nieprzed3[lstroke]2
+.nieprzed3[sacute]2
+.nieprzed3c2
+.nieprzed3d2
+.nieprzed3f2
+.nieprzed3g2
+.nieprzed3h2
+.nieprzed3i2
+.nieprzed3j2
+.nieprzed3k2
+.nieprzed3l2
+.nieprzed3m2
+.nieprzed3n2
+.nieprzed3p2
+.nieprzed3r2
+.nieprzed3s2
+.nieprzed3sz2
+.nieprzed3t2
+.nieprzed3u2
+.nieprzed3w2
+.nieprzedch2
+.nieprzedcz2
+.nieprzedd[zacute]2
+.nieprzedd[zdotaccent]2
+.nieprzeddz2
+.nieprzegrz2
+.nieprzekl2
+.nieprzekr2
+.nieprzepch2
+.nieprzer[zdotaccent]2
+.nieprzerz2
+.nieprzesch2
+.nieprzesm2
+.nieprzesz2
+.nieprzetk2
+.nieprzetr2
+.niero2z3
+.niero3z4e
+.niero3z4u
+.nieroz[sacute]2
+.nierozbrz2
+.nieroze3r2
+.nierozm2
+.nieroztr2
+.nierz2
+.niesu2b3
+.niesu3b4ie
+.niesz2
+.nietk2
+.nietr2
+.nieucz2
+.nieuw2
+.niewy3[cacute]2
+.niewy3[lstroke]2
+.niewy3[sacute]2
+.niewy3[zacute]2
+.niewy3[zdotaccent]2
+.niewy3b2
+.niewy3c2
+.niewy3d2
+.niewy3f2
+.niewy3g2
+.niewy3h2
+.niewy3k2
+.niewy3l2
+.niewy3m2
+.niewy3p2
+.niewy3r2
+.niewy3s2
+.niewy3t2
+.niewy3w2
+.niewy3z2
+.niewybrz2
+.niewych2
+.niewycz2
+.niewyd[zacute]2
+.niewyd[zdotaccent]2
+.niewydz2
+.niewyrz2
+.niewysz2
+.niewytk2
+.niewytr2
+.niezw2
+.nj8
+.nk8
+.nl8
+.nm8
+.nn8
+.np8
+.nr8
+.ns8
+.nt8
+.nv8
+.nw8
+.nx8
+.nz8
+.o[cacute]2
+.o[sacute]2
+.o[sacute]mio3[sacute]2
+.o[zacute]2
+.o[zdotaccent]2
+.o2b2
+.o2d2
+.o2t3ch[lstroke]
+.o3b4[lstroke][aogonek]
+.o3b4[lstroke][eogonek]
+.o3b4[lstroke]oc
+.o3b4luzg
+.o3b4ra[cacute]
+.o3b4raso
+.o3b4ro[nacute]
+.o3b4ron
+.o3b4ry[zacute]
+.o3b4ryz
+.o3b4rz2
+.o3be
+.o3bi
+.o3d4iu
+.o3d4r[eogonek]t
+.o3d4rap
+.o3d4robin
+.o3d4rut
+.o3d4rwi
+.o3d4rze[cacute]
+.o3d4rzw
+.o3d6zia
+.o3d6zie
+.o3de
+.o3l2[sacute]n
+.o4b5[lstroke]ocz
+.o4b5rz[aogonek]
+.o4b5rz[eogonek]d
+.o4b5rzez
+.o4b5rzuc
+.o4b5rzut
+.o4b5rzyn
+.o4d7ziar
+.o4d7ziem
+.oa3z
+.ob3[cacute]2
+.ob3[lstroke]2
+.ob3[sacute]2
+.ob3[zacute]2
+.ob3[zdotaccent]2
+.ob3c2
+.ob3d2
+.ob3f2
+.ob3g2
+.ob3h2
+.ob3j2
+.ob3k2
+.ob3l2
+.ob3m2
+.ob3n2
+.ob3o2strz
+.ob3p2
+.ob3r
+.ob3s2
+.ob3t2
+.ob3u2m2
+.ob3w2
+.obch2
+.obcz2
+.obd[zacute]2
+.obd[zdotaccent]2
+.obdz2
+.obe3[cacute]2
+.obe3[lstroke]2
+.obe3[sacute]2
+.obe3[zacute]2
+.obe3[zdotaccent]2
+.obe3b2
+.obe3c2
+.obe3d2
+.obe3f2
+.obe3g2
+.obe3h2
+.obe3k2
+.obe3l2
+.obe3m2
+.obe3p2
+.obe3r2
+.obe3r3t
+.obe3s2
+.obe3t2
+.obe3w2
+.obe3z2
+.obe4c3n
+.obe4z3w
+.obech2
+.obecz2
+.obed[zacute]2
+.obed[zdotaccent]2
+.obedz2
+.ober[zdotaccent]2
+.ober3m
+.oberz2
+.obesch2
+.obesz2
+.obetk2
+.obi3b2
+.obsz2
+.oc2
+.och2
+.ochrz2
+.ocz2
+.od[zacute]2
+.od3[cacute]2
+.od3[sacute]2
+.od3au
+.od3b2
+.od3c2
+.od3d2
+.od3f2
+.od3g2
+.od3h2
+.od3i2
+.od3i2zo
+.od3j2
+.od3k2
+.od3l2
+.od3m2
+.od3n2
+.od3o2s
+.od3p2
+.od3r2
+.od3s2
+.od3t2
+.od3u2cz
+.od3u2m2
+.od3w2
+.od5[zdotaccent]2
+.od5z2
+.odbe2z3
+.odch2
+.odcz2
+.odd[zacute]2
+.odd[zdotaccent]2
+.oddz2
+.ode3[cacute]2
+.ode3[lstroke]2
+.ode3[sacute]2
+.ode3[zacute]2
+.ode3[zdotaccent]2
+.ode3b2
+.ode3c2
+.ode3d2
+.ode3f2
+.ode3g2
+.ode3h2
+.ode3k2
+.ode3l2
+.ode3m2
+.ode3mk2
+.ode3p2
+.ode3r2
+.ode3s2
+.ode3t2
+.ode3w2
+.ode3z2
+.odech2
+.odecz2
+.oded[zacute]2
+.oded[zdotaccent]2
+.odedz2
+.odepch2
+.oder[zdotaccent]2
+.oderz2
+.odesz2
+.odetch2
+.odetk2
+.odkrz2
+.odrz2
+.odsz2
+.of2
+.og[oacute]lno3k2
+.og2
+.ognio3tr2
+.oh2
+.ok2
+.oka3m2
+.okr2
+.ole2o3
+.om2
+.op2
+.opch2
+.or2[zdotaccent]2
+.or2t[eogonek]
+.or2z2
+.os2
+.osie2m3
+.osiemse2t3
+.osz2
+.ot2
+.ow2
+.oz2
+.p[cacute]8
+.p[lstroke]8
+.p[lstroke]asko3w2
+.p[nacute]8
+.p[oacute][lstroke]k2
+.p[oacute][lstroke]kr2
+.p[oacute][lstroke]m2
+.p[oacute][lstroke]o2
+.p[oacute][lstroke]ob3r
+.p[oacute][lstroke]om2d
+.p[oacute][lstroke]przy3m2k
+.p[oacute]2[lstroke]3
+.p[oacute]3[lstroke]4[aogonek]
+.p[oacute]3[lstroke]4[eogonek]
+.p[oacute]3[lstroke]4ecz
+.p[oacute]3[lstroke]4y
+.p[sacute]8
+.p[zacute]8
+.p[zdotaccent]8
+.p8
+.pb8
+.pc8
+.pch8
+.pd8
+.pe[lstroke]no3kr2
+.pe2r3
+.pe3c2k
+.pe3r4e
+.pe3r4i
+.pe3r4o
+.pe3r4u
+.pe3r4y
+.pe4r5i2n
+.pee2se2l
+.pepee2r
+.pepee2s
+.peze2t1pee2r
+.pf8
+.pg8
+.ph8
+.pi[eogonek][cacute]se2t3
+.pi[eogonek]2[cacute]3
+.pi[eogonek]cio3[sacute]2
+.pierwo3w2
+.piono3w2
+.pj8
+.pk8
+.pl8
+.pm8
+.pn8
+.po[lstroke]k2
+.po2d2
+.po3[cacute]2
+.po3[lstroke]2
+.po3[sacute]2
+.po3[zacute]2
+.po3[zdotaccent]2
+.po3b2
+.po3c2
+.po3d[aogonek]
+.po3d[eogonek]
+.po3d[zacute]2
+.po3d4[lstroke]u
+.po3d4much
+.po3d4naw
+.po3d4r[eogonek]cz
+.po3d4r[eogonek]tw
+.po3d4r[oacute][zdotaccent]
+.po3d4r2wi
+.po3d4ra[zdotaccent]
+.po3d4rap
+.po3d4repcz
+.po3d4rept
+.po3d4ro[zdotaccent]
+.po3d4rob[oacute]
+.po3d4roba
+.po3d4robo
+.po3d4roby
+.po3d4rocz
+.po3d4ruzg
+.po3d4ryg
+.po3d4rze
+.po3d4w[oacute]jn
+.po3d4w[oacute]r
+.po3d4waj
+.po3d4woi
+.po3d4woj
+.po3d4worz
+.po3da
+.po3de
+.po3dej
+.po3diu
+.po3do
+.po3du
+.po3dy
+.po3dz2
+.po3e2k2s3
+.po3f2
+.po3g2
+.po3h2
+.po3k2
+.po3l2
+.po3m2
+.po3p2
+.po3r[zdotaccent]
+.po3r2
+.po3s2
+.po3t2
+.po3w2
+.po3z2
+.po4[nacute]3c
+.po4cz3d
+.po4cz3t
+.po4d3[oacute]w
+.po4d3e4k2s3
+.po4d3o2b[oacute]z
+.po4d3o2biad
+.po4d3o2bojcz
+.po4d3o2braz
+.po4d3o2choc
+.po4d3o2dm
+.po4d3o2f
+.po4d3o2g
+.po4d3o2kien
+.po4d3o2kn
+.po4d3o2kr[eogonek]g
+.po4d3o2kres
+.po4d3o2piecz
+.po4d3o2ryw
+.po4d3o2siniak
+.po4d3o2strz
+.po4d3obsz
+.po4d3odd
+.po4d3olbrz
+.po4d3u2cz
+.po4d3u2dz
+.po4d3u2pa
+.po4d3u2ral
+.po4d3u2sta
+.po4d3u2szcz
+.po4d5r[eogonek]czn
+.po4d5zakr
+.po4d5zam
+.po4d5zast
+.po4d5zbi
+.po4d5ze
+.po4d5zieleni[aogonek]
+.po4d5zieleni[cacute]
+.po4d5zieleni[eogonek]
+.po4d5zieleni[lstroke]
+.po4d5zielenic
+.po4d5zielenien
+.po4d5zielenil
+.po4d5zielenim
+.po4d5zielenio
+.po4d5zielenis
+.po4d5ziem
+.po4d5ziom
+.po4d5zw2r
+.po4l3s
+.po4m3p
+.po4r3c
+.po4r3f
+.po4r3n
+.po4r3t
+.po4st3d
+.po4st3f
+.po4st3g
+.po4st3h
+.po4st3i2
+.po4st3k
+.po4st3l
+.po4st3m
+.po4st3p
+.po4st3rom
+.po4st3s
+.po5d4uszczyn
+.po5r4t[eogonek]
+.pobr2
+.pobrz2
+.poch2
+.pochrz2
+.pocz2
+.pod3[cacute]2
+.pod3[lstroke]2
+.pod3[sacute]2
+.pod3[sacute]r[oacute]2d5
+.pod3alp
+.pod3b2
+.pod3c2
+.pod3d2
+.pod3f2
+.pod3g2
+.pod3h2
+.pod3i2n
+.pod3j2
+.pod3k2
+.pod3l2
+.pod3m2
+.pod3n2
+.pod3p2
+.pod3r2
+.pod3s2
+.pod3t2
+.pod3w2
+.pod5[zdotaccent]2
+.podch2
+.podcz2
+.podd[zacute]2
+.podd[zdotaccent]2
+.pode3[cacute]2
+.pode3[lstroke]2
+.pode3[sacute]2
+.pode3[zacute]2
+.pode3[zdotaccent]2
+.pode3b2
+.pode3c2
+.pode3d2
+.pode3f2
+.pode3g2
+.pode3h2
+.pode3k2
+.pode3l2
+.pode3m2
+.pode3p2
+.pode3r2
+.pode3s2
+.pode3t2
+.pode3tk2
+.pode3w2
+.pode3z2
+.podech2
+.podecz2
+.poded[zacute]2
+.poded[zdotaccent]2
+.podedz2
+.podepch2
+.poder[zdotaccent]2
+.poderz2
+.podesch2
+.podesz2
+.podro2z3
+.podsm2
+.podsz2
+.pogrz2
+.pokl2
+.pokr2
+.pom4pk
+.pomk2
+.pona2d2
+.pona3[cacute]2
+.pona3[lstroke]2
+.pona3[sacute]2
+.pona3[zacute]2
+.pona3[zdotaccent]2
+.pona3b2
+.pona3c2
+.pona3cz2
+.pona3d[zacute]2
+.pona3do
+.pona3f2
+.pona3g2
+.pona3h2
+.pona3k2
+.pona3l2
+.pona3m2
+.pona3p2
+.pona3r2
+.pona3s2
+.pona3t2
+.pona3w2
+.pona3z2
+.pona4f3t
+.ponabrz2
+.ponach2
+.ponad3[cacute]2
+.ponad3[sacute]2
+.ponad3c2
+.ponad3ch2
+.ponad3cz2
+.ponad3d[zacute]2
+.ponad3f2
+.ponad3g2
+.ponad3h2
+.ponad3j2
+.ponad3k2
+.ponad3l2
+.ponad3p2
+.ponad3s2
+.ponad3t2
+.ponadz2
+.ponarz2
+.ponasm2
+.ponasz2
+.ponaz3m2
+.ponazw2
+.ponie3k2
+.ponie3w2
+.popch2
+.popo3w2
+.poprz2
+.por4t1w
+.por4tf
+.por4tm
+.poro2z3
+.poro3z4u
+.porz2
+.posch2
+.posm2
+.posz2
+.potk2
+.potr2
+.poz4m2
+.poza3u2
+.pozw2
+.pp8
+.pr8
+.pra3s2
+.pra3w2nu
+.pra3w2z
+.prapra3w2nu
+.predy2s3po
+.prz8
+.prze[lstroke]k2
+.prze2d2
+.prze3[cacute]2
+.prze3[lstroke]2
+.prze3[sacute]2
+.prze3[zacute]2
+.prze3[zdotaccent]2
+.prze3b2
+.prze3c2
+.prze3d[aogonek]
+.prze3d[eogonek]
+.prze3d[zacute]2
+.prze3d4[lstroke]u[zdotaccent]
+.prze3d4much
+.prze3d4o3br
+.prze3d4o3st
+.prze3d4o3zo
+.prze3d4ramat
+.prze3d4ruk
+.prze3d4ryl
+.prze3d4rz2
+.prze3d4um
+.prze3dy
+.prze3dz2
+.prze3e2k2s3
+.prze3f2
+.prze3g2
+.prze3h2
+.prze3k2
+.prze3l2
+.prze3m2
+.prze3n2
+.prze3p2
+.prze3r2
+.prze3s2
+.prze3t2
+.prze3u2
+.prze3w2
+.prze3z2
+.prze4d5[lstroke]u[zdotaccent]yc
+.prze4d5[zdotaccent]2
+.prze4d5o4stat
+.prze4d5za
+.prze4d5zg2
+.prze4d5zim
+.prze4d5zj
+.prze4d5zl
+.prze4d5zw2r
+.prze4d5zwoj
+.przebr2
+.przebrz2
+.przech2
+.przechrz2
+.przeci2w3
+.przeci3w4ie
+.przeciwa2
+.przeciww2
+.przecz2
+.przed3[cacute]2
+.przed3[lstroke]2
+.przed3[sacute]2
+.przed3a2gon
+.przed3a2kc
+.przed3alp
+.przed3b2
+.przed3c2
+.przed3d2
+.przed3e2gz
+.przed3e2mer
+.przed3f2
+.przed3g2
+.przed3h2
+.przed3i2
+.przed3j2
+.przed3k2
+.przed3l2
+.przed3m2
+.przed3n2
+.przed3o2
+.przed3p2
+.przed3r2
+.przed3s2
+.przed3si[eogonek]3w2
+.przed3sz2
+.przed3t2
+.przed3u2
+.przed3w2
+.przedch2
+.przedcz2
+.przedd[zacute]2
+.przedd[zdotaccent]2
+.przeddz2
+.przedgrz2
+.przedy2s3ku
+.przegrz2
+.przekl2
+.przekr2
+.przemk2
+.przepch2
+.przer[zdotaccent]2
+.przerz2
+.przesch2
+.przesm2
+.przesz2
+.przetk2
+.przetr2
+.przetran2s3
+.przy3[cacute]2
+.przy3[lstroke]2
+.przy3[sacute]2
+.przy3[zacute]2
+.przy3[zdotaccent]2
+.przy3b2
+.przy3c2
+.przy3d2
+.przy3f2
+.przy3g2
+.przy3h2
+.przy3k2
+.przy3l2
+.przy3m2
+.przy3p2
+.przy3r2
+.przy3s2
+.przy3t2
+.przy3w2
+.przy3z2
+.przybr2
+.przych2
+.przycz2
+.przyd[zacute]2
+.przyd[zdotaccent]2
+.przydz2
+.przygrz2
+.przymk2
+.przyoz2
+.przypch2
+.przyr[zdotaccent]2
+.przyrz2
+.przysch2
+.przysz2
+.przytk2
+.ps8
+.pt8
+.pv8
+.pw8
+.px8
+.pz8
+.r[cacute]8
+.r[lstroke]8
+.r[nacute]8
+.r[sacute]8
+.r[zacute]8
+.r[zdotaccent]8
+.r8
+.rb8
+.rc8
+.rd8
+.retran2s3
+.rf8
+.rg8
+.rh8
+.rj8
+.rk8
+.rl8
+.rm8
+.rn8
+.ro2z3
+.ro3z4a
+.ro3z4e
+.ro3z4e3[cacute]2
+.ro3z4e3[lstroke]2
+.ro3z4e3[sacute]2
+.ro3z4e3[zacute]2
+.ro3z4e3[zdotaccent]2
+.ro3z4e3b2
+.ro3z4e3c2
+.ro3z4e3d2
+.ro3z4e3f2
+.ro3z4e3g2
+.ro3z4e3h2
+.ro3z4e3k2
+.ro3z4e3l2
+.ro3z4e3m2
+.ro3z4e3p2
+.ro3z4e3r2
+.ro3z4e3s2
+.ro3z4e3t2
+.ro3z4e3w2
+.ro3z4e3z2
+.ro3z4ej
+.ro3z4u
+.ro4z5a2gi
+.ro4z5a2nie
+.ro4z5e2mo
+.ro4z5e4g3z
+.ro4z5e4n3t
+.roz[sacute]2
+.rozbrz2
+.rozd2
+.rozech2
+.rozecz2
+.rozed[zacute]2
+.rozed[zdotaccent]2
+.rozedz2
+.rozepch2
+.rozer[zdotaccent]2
+.rozerz2
+.rozesch2
+.rozesz2
+.rozi2
+.rozm2
+.rozo2
+.rozpo3w2
+.rozt2
+.roztr2
+.rozw2
+.rp8
+.rr8
+.rs8
+.rt8
+.rv8
+.rw8
+.rx8
+.rz8
+.s[cacute]8
+.s[lstroke]8
+.s[nacute]8
+.s[sacute]8
+.s[zacute]8
+.s[zdotaccent]8
+.s8
+.samo3ch2
+.samo3k2
+.samo3p2
+.samo3w2
+.samoro2z3
+.sb8
+.sc8
+.sch8
+.sd8
+.sf8
+.sg8
+.sh8
+.siede2m3
+.siedemse2t3
+.siedmio3[sacute]2
+.sj8
+.sk[aogonek]2d5[zdotaccent]e
+.sk8
+.skl8
+.skr8
+.sl8
+.sm8
+.sn8
+.sobo3w2
+.sp[oacute]2[lstroke]3
+.sp8
+.spo2d2
+.spo3[cacute]2
+.spo3[lstroke]2
+.spo3[sacute]2
+.spo3[zacute]2
+.spo3[zdotaccent]2
+.spo3b2
+.spo3c2
+.spo3dz2
+.spo3f2
+.spo3g2
+.spo3h2
+.spo3k2
+.spo3l2
+.spo3m2
+.spo3p2
+.spo3r2
+.spo3s2
+.spo3t2
+.spo3w2
+.spo3z2
+.spo4r3n
+.spo4r3t
+.spoch2
+.spocz2
+.spod[zacute]2
+.spod[zdotaccent]2
+.spod3d
+.sporz2
+.sposz2
+.sr8
+.ss8
+.st8
+.stere2o3
+.stereoa2
+.stereoe2
+.stereoi2
+.stereoo2
+.stereou2
+.su2b3
+.su3b4ie
+.su3b4otn
+.supe2r3
+.supe3r4at
+.supe3r4io
+.supe4r5a2tr
+.super5z2b
+.supere2
+.supero2d1rzut
+.sv8
+.sw8
+.sx8
+.sz8
+.sze[sacute][cacute]se2t3
+.sze[sacute]cio3[sacute]2
+.sze2[sacute]2[cacute]3
+.sze2s3
+.t[cacute]8
+.t[lstroke]8
+.t[nacute]8
+.t[sacute]8
+.t[zacute]8
+.t[zdotaccent]8
+.t8
+.ta2o3
+.ta2r7zan
+.tb8
+.tc8
+.tch8
+.td8
+.te2o3
+.tf8
+.tg8
+.th8
+.tj8
+.tk8
+.tl8
+.tm8
+.tn8
+.toa3
+.tp8
+.tr[oacute]2j3
+.tr[oacute]3j4[aogonek]
+.tr[oacute]3j4[eogonek]
+.tr[oacute]3j4ecz
+.tr8
+.tran2s3
+.tran3s4e
+.tran3s4ie
+.tran3s4y
+.tran3sz
+.tran4s5eu
+.transa2
+.transo2
+.trz8
+.trze2ch3
+.trzechse2t3
+.ts8
+.tt8
+.tv8
+.tw8
+.tx8
+.tysi[aogonek]2c3
+.tysi[aogonek]3c4a
+.tysi[aogonek]3c4e
+.tysi[aogonek]3cz
+.tysi[aogonek]4c5z[lstroke]
+.tz8
+.u[cacute]2
+.u[sacute]2
+.u3[lstroke]2
+.u3[zacute]2
+.u3[zdotaccent]2
+.u3b2
+.u3c2
+.u3d2
+.u3f2
+.u3g2
+.u3h2
+.u3k2
+.u3l2
+.u3m2
+.u3n2
+.u3p2
+.u3r2
+.u3s2
+.u3t2
+.u3w2
+.u3z2
+.u4d3k
+.u4f3n
+.u4k3lej
+.u4l3s
+.u4l3t
+.u4m3br
+.u4n3c
+.u4n3d
+.u4p3p2s
+.u4r3s
+.u4st3n
+.u4stc
+.u4stk
+.u4z3be
+.ube2z3
+.ubezw2
+.ubr2
+.uch2
+.ucz2
+.ud[zacute]2
+.ud[zdotaccent]2
+.udz2
+.ukr2
+.umk2
+.upch2
+.upo2d2
+.upo3[cacute]2
+.upo3[lstroke]2
+.upo3[sacute]2
+.upo3[zacute]2
+.upo3[zdotaccent]2
+.upo3b2
+.upo3c2
+.upo3da
+.upo3f2
+.upo3g2
+.upo3h2
+.upo3k2
+.upo3l2
+.upo3m2
+.upo3p2
+.upo3r2
+.upo3s2
+.upo3t2
+.upo3w2
+.upo3z2
+.upoch2
+.upocz2
+.upod[zacute]2
+.upod[zdotaccent]2
+.upod3d
+.uporz2
+.uposz2
+.ur[zdotaccent]2
+.uro2z3
+.urz2
+.usch2
+.usz2
+.utk2
+.utr2
+.uze3w2
+.v[cacute]8
+.v[lstroke]8
+.v[nacute]8
+.v[sacute]8
+.v[zacute]8
+.v[zdotaccent]8
+.v8
+.vb8
+.vc8
+.vd8
+.vf8
+.vg8
+.vh8
+.vj8
+.vk8
+.vl8
+.vm8
+.vn8
+.vp8
+.vr8
+.vs8
+.vt8
+.vv8
+.vw8
+.vx8
+.vz8
+.w[cacute]8
+.w[lstroke]8
+.w[nacute]8
+.w[sacute]8
+.w[zacute]8
+.w[zdotaccent]8
+.w8
+.wb8
+.wc8
+.wd8
+.we3[cacute]2
+.we3[lstroke]2
+.we3[sacute]2
+.we3[zdotaccent]2
+.we3b2
+.we3c2
+.we3d2
+.we3f2
+.we3g2
+.we3h2
+.we3k2
+.we3l2
+.we3m2
+.we3n2
+.we3p2
+.we3r2
+.we3s2
+.we3t2
+.we3w2
+.we3z2
+.we4[lstroke]3n
+.we4k3t
+.we4l3w
+.we4n3d
+.we4n3t
+.we4r3b
+.we4r3d
+.we4r3n
+.we4r3s
+.we4r3t
+.we4s3prz
+.we4s3tch2
+.we4z3br
+.we4z3g[lstroke]
+.wech2
+.wecz2
+.wed[zacute]2
+.wed[zdotaccent]2
+.wedz2
+.wemk2
+.wepch2
+.werz2
+.wesz2
+.wetk2
+.wewn[aogonek]2trz3
+.wf8
+.wg8
+.wh8
+.wielo3[sacute]2
+.wielo3d2
+.wielo3k2
+.wieluse2t3
+.wilczo3m2
+.wj8
+.wk8
+.wl8
+.wm8
+.wn8
+.wniebo3w2
+.wodo3w2
+.wp8
+.wr8
+.ws8
+.wsp[oacute][lstroke]i2
+.wsp[oacute][lstroke]o2b3w
+.wsp[oacute][lstroke]u2
+.wsp[oacute][lstroke]w2
+.wsp[oacute]2[lstroke]3
+.wsze2ch3
+.wszecho2
+.wszechw2
+.wt8
+.wv8
+.ww8
+.wx8
+.wy3[cacute]2
+.wy3[lstroke]2
+.wy3[sacute]2
+.wy3[zacute]2
+.wy3[zdotaccent]2
+.wy3b2
+.wy3c2
+.wy3d2
+.wy3f2
+.wy3g2
+.wy3h2
+.wy3k2
+.wy3l2
+.wy3m2
+.wy3o2d3r
+.wy3p2
+.wy3r2
+.wy3s2
+.wy3t2
+.wy3w2
+.wy3z2
+.wy4[zdotaccent]3sz
+.wy4cz3ha
+.wybr2
+.wybrz2
+.wych2
+.wycz2
+.wyd[zacute]2
+.wyd[zdotaccent]2
+.wydr2
+.wydz2
+.wye2k2s3
+.wygrz2
+.wyi2zo
+.wykl2
+.wykr2
+.wykrz2
+.wymk2
+.wypch2
+.wyprz2
+.wyr[zdotaccent]2
+.wyrz2
+.wysch2
+.wysm2
+.wysz2
+.wytch2
+.wytk2
+.wytr2
+.wz8
+.x[cacute]8
+.x[lstroke]8
+.x[nacute]8
+.x[sacute]8
+.x[zacute]8
+.x[zdotaccent]8
+.x8
+.xb8
+.xc8
+.xd8
+.xf8
+.xg8
+.xh8
+.xj8
+.xk8
+.xl8
+.xm8
+.xn8
+.xp8
+.xr8
+.xs8
+.xt8
+.xv8
+.xw8
+.xx8
+.xz8
+.z[cacute]8
+.z[lstroke]8
+.z[lstroke]o3w2
+.z[nacute]8
+.z[sacute]8
+.z[zacute]8
+.z[zdotaccent]8
+.z8
+.za3[cacute]2
+.za3[lstroke]2
+.za3[sacute]2
+.za3[zacute]2
+.za3[zdotaccent]2
+.za3b2
+.za3c2
+.za3d2
+.za3f2
+.za3g2
+.za3h2
+.za3k2
+.za3l2
+.za3m2
+.za3o2b3r
+.za3o2b3s
+.za3p2
+.za3r2
+.za3s2
+.za3t2
+.za3u2
+.za3w2
+.za3z2
+.za4k3t
+.za4l3g
+.za4l3k
+.za4l3t
+.za4m3k
+.za4r3ch
+.za4uto
+.za5m4k2n
+.zabr2
+.zabrz2
+.zach2
+.zacz2
+.zad[zacute]2
+.zad[zdotaccent]2
+.zado[sacute][cacute]u4
+.zado2[sacute][cacute]3
+.zadr2
+.zady2s3po
+.zadz2
+.zagrz2
+.zai2n3
+.zai2zo
+.zain4ic
+.zakl2
+.zakr2
+.zakrz2
+.zanie3d2
+.zar[zdotaccent]2
+.zarz2
+.zasch2
+.zasm2
+.zasz2
+.zatk2
+.zatr2
+.zb8
+.zc8
+.zd8
+.zde2z3
+.zde3z4awu
+.zde3z4el
+.zde3z4er
+.zde3z4y
+.zdy2s3kont
+.zdy2s3kred
+.zdy2s3kwal
+.ze3[cacute]2
+.ze3[lstroke]2
+.ze3[sacute]2
+.ze3[zacute]2
+.ze3[zdotaccent]2
+.ze3b2
+.ze3c2
+.ze3d2
+.ze3f2
+.ze3g2
+.ze3h2
+.ze3k2
+.ze3l2
+.ze3m2
+.ze3p2
+.ze3r2
+.ze3s2
+.ze3t2
+.ze3tk2
+.ze3w2
+.ze3z2
+.ze4r3k
+.ze4t3e2m1e2s
+.ze4t3e2s1e2l
+.ze4t3emp
+.ze4t3hap
+.zech2
+.zecz2
+.zed[zacute]2
+.zed[zdotaccent]2
+.zedz2
+.zekl2
+.zepch2
+.zer[zdotaccent]2
+.zerz2
+.zesch2
+.zesm4
+.zesz2
+.zf8
+.zg8
+.zh8
+.zimno3kr2
+.zj8
+.zk8
+.zl8
+.zm8
+.zmartwy2ch3
+.zmartwychw2
+.zn8
+.znie3[cacute]2
+.znie3[lstroke]2
+.znie3[nacute]2
+.znie3[sacute]2
+.znie3[zacute]2
+.znie3[zdotaccent]2
+.znie3b2
+.znie3c2
+.znie3d2
+.znie3f2
+.znie3g2
+.znie3h2
+.znie3k2
+.znie3l2
+.znie3m2
+.znie3n2
+.znie3p2
+.znie3r2
+.znie3s2
+.znie3t2
+.znie3w2
+.znie3z2
+.znie4d[zacute]3
+.znie4m3c
+.zniech2
+.zniecz2
+.znied[zdotaccent]2
+.zniedz2
+.znierz2
+.zniesz2
+.zo2o3
+.zp8
+.zr8
+.zro2z3
+.zro3z4u
+.zs8
+.zt8
+.zv8
+.zw8
+.zx8
+.zz8
+[aogonek]1
+[eogonek]1
+[oacute]1
+[oacute]4w3cz
+[sacute]1c
+[zacute]2d[zacute]
+1[sacute]2ci
+2[cacute]1[nacute]
+2[cacute]1[sacute]
+2[cacute]1[zacute]
+2[cacute]1[zdotaccent]
+2[cacute]1b
+2[cacute]1c
+2[cacute]1d
+2[cacute]1f
+2[cacute]1g
+2[cacute]1k
+2[cacute]1m
+2[cacute]1n
+2[cacute]1p
+2[cacute]1s
+2[cacute]1t
+2[cacute]1z
+2[lstroke]1[cacute]
+2[lstroke]1[nacute]
+2[lstroke]1[sacute]
+2[lstroke]1[zacute]
+2[lstroke]1[zdotaccent]
+2[lstroke]1b
+2[lstroke]1c
+2[lstroke]1d
+2[lstroke]1f
+2[lstroke]1g
+2[lstroke]1h
+2[lstroke]1j
+2[lstroke]1k
+2[lstroke]1l
+2[lstroke]1m
+2[lstroke]1n
+2[lstroke]1p
+2[lstroke]1r
+2[lstroke]1s
+2[lstroke]1t
+2[lstroke]1w
+2[lstroke]1z
+2[nacute]1[cacute]
+2[nacute]1[lstroke]
+2[nacute]1[nacute]
+2[nacute]1[sacute]
+2[nacute]1[zacute]
+2[nacute]1[zdotaccent]
+2[nacute]1b
+2[nacute]1c
+2[nacute]1d
+2[nacute]1f
+2[nacute]1g
+2[nacute]1h
+2[nacute]1j
+2[nacute]1k
+2[nacute]1l
+2[nacute]1m
+2[nacute]1n
+2[nacute]1p
+2[nacute]1r
+2[nacute]1s
+2[nacute]1t
+2[nacute]1w
+2[nacute]1z
+2[sacute][cacute]c
+2[sacute]1[sacute]
+2[sacute]1[zacute]
+2[sacute]1[zdotaccent]
+2[sacute]1b
+2[sacute]1d
+2[sacute]1f
+2[sacute]1g
+2[sacute]1k
+2[sacute]1p
+2[sacute]1s
+2[sacute]1t
+2[sacute]1z
+2[sacute]lm
+2[sacute]ln
+2[zacute]1[cacute]
+2[zacute]1[sacute]
+2[zacute]1[zdotaccent]
+2[zacute]1b
+2[zacute]1c
+2[zacute]1d
+2[zacute]1f
+2[zacute]1g
+2[zacute]1k
+2[zacute]1l
+2[zacute]1m
+2[zacute]1n
+2[zacute]1p
+2[zacute]1s
+2[zacute]1t
+2[zacute]1w
+2[zacute]1z
+2[zdotaccent]1[cacute]
+2[zdotaccent]1[lstroke]
+2[zdotaccent]1[nacute]
+2[zdotaccent]1[sacute]
+2[zdotaccent]1[zacute]
+2[zdotaccent]1b
+2[zdotaccent]1c
+2[zdotaccent]1d
+2[zdotaccent]1f
+2[zdotaccent]1g
+2[zdotaccent]1j
+2[zdotaccent]1k
+2[zdotaccent]1l
+2[zdotaccent]1m
+2[zdotaccent]1n
+2[zdotaccent]1p
+2[zdotaccent]1r
+2[zdotaccent]1s
+2[zdotaccent]1t
+2[zdotaccent]1w
+2[zdotaccent]1z
+2b[lstroke]k
+2b1[cacute]
+2b1[nacute]
+2b1[sacute]
+2b1[zacute]
+2b1[zdotaccent]
+2b1c
+2b1d
+2b1f
+2b1g
+2b1k
+2b1m
+2b1n
+2b1p
+2b1s
+2b1t
+2b1z
+2brn
+2c1[cacute]
+2c1[nacute]
+2c1[sacute]
+2c1[zacute]
+2c1[zdotaccent]
+2c1b
+2c1d
+2c1f
+2c1g
+2c1k
+2c1l
+2c1m
+2c1n
+2c1p
+2c1s
+2c1t
+2ch1[cacute]
+2ch1[nacute]
+2ch1[sacute]
+2ch1[zacute]
+2ch1[zdotaccent]
+2ch1b
+2ch1c
+2ch1d
+2ch1f
+2ch1g
+2ch1k
+2ch1m
+2ch1n
+2ch1p
+2ch1s
+2ch1t
+2ch1z
+2cz1[cacute]
+2cz1[nacute]
+2cz1[sacute]
+2cz1[zacute]
+2cz1[zdotaccent]
+2cz1b
+2cz1c
+2cz1d
+2cz1f
+2cz1g
+2cz1k
+2cz1l
+2cz1m
+2cz1n
+2cz1p
+2cz1s
+2cz1t
+2cz1z
+2d[lstroke]b
+2d[lstroke]sz
+2d[zacute]1[cacute]
+2d[zacute]1[nacute]
+2d[zacute]1[sacute]
+2d[zacute]1[zacute]
+2d[zacute]1[zdotaccent]
+2d[zacute]1b
+2d[zacute]1c
+2d[zacute]1d
+2d[zacute]1f
+2d[zacute]1g
+2d[zacute]1k
+2d[zacute]1m
+2d[zacute]1n
+2d[zacute]1p
+2d[zacute]1s
+2d[zacute]1t
+2d[zacute]1z
+2d[zdotaccent]1[cacute]
+2d[zdotaccent]1[nacute]
+2d[zdotaccent]1[sacute]
+2d[zdotaccent]1[zacute]
+2d[zdotaccent]1[zdotaccent]
+2d[zdotaccent]1b
+2d[zdotaccent]1c
+2d[zdotaccent]1d
+2d[zdotaccent]1f
+2d[zdotaccent]1g
+2d[zdotaccent]1k
+2d[zdotaccent]1m
+2d[zdotaccent]1n
+2d[zdotaccent]1p
+2d[zdotaccent]1s
+2d[zdotaccent]1t
+2d[zdotaccent]1z
+2d1[cacute]
+2d1[nacute]
+2d1[sacute]
+2d1b
+2d1c
+2d1f
+2d1g
+2d1k
+2d1m
+2d1n
+2d1p
+2d1s
+2d1t
+2drn
+2dz1[cacute]
+2dz1[nacute]
+2dz1[sacute]
+2dz1[zacute]
+2dz1[zdotaccent]
+2dz1b
+2dz1c
+2dz1d
+2dz1f
+2dz1g
+2dz1k
+2dz1l
+2dz1m
+2dz1n
+2dz1p
+2dz1s
+2dz1t
+2dz1z
+2f1c
+2f1k
+2f1m
+2f1n
+2g[lstroke]b
+2g1[cacute]
+2g1[nacute]
+2g1[sacute]
+2g1[zacute]
+2g1[zdotaccent]
+2g1b
+2g1c
+2g1d
+2g1f
+2g1k
+2g1m
+2g1p
+2g1s
+2g1t
+2g1z
+2h1[cacute]
+2h1[lstroke]
+2h1[nacute]
+2h1[sacute]
+2h1[zacute]
+2h1[zdotaccent]
+2h1b
+2h1c
+2h1d
+2h1f
+2h1g
+2h1j
+2h1k
+2h1l
+2h1m
+2h1n
+2h1p
+2h1r
+2h1s
+2h1t
+2h1w
+2h1z
+2j1[cacute]
+2j1[lstroke]
+2j1[nacute]
+2j1[sacute]
+2j1[zacute]
+2j1[zdotaccent]
+2j1b
+2j1c
+2j1d
+2j1f
+2j1g
+2j1h
+2j1k
+2j1l
+2j1m
+2j1n
+2j1p
+2j1r
+2j1s
+2j1t
+2j1w
+2j1z
+2k[lstroke]b
+2k1[cacute]
+2k1[nacute]
+2k1[sacute]
+2k1[zacute]
+2k1[zdotaccent]
+2k1b
+2k1c
+2k1d
+2k1f
+2k1g
+2k1m
+2k1n
+2k1p
+2k1s
+2k1sz
+2k1t
+2k1z
+2l1[cacute]
+2l1[lstroke]
+2l1[nacute]
+2l1[sacute]
+2l1[zacute]
+2l1[zdotaccent]
+2l1b
+2l1c
+2l1d
+2l1f
+2l1g
+2l1h
+2l1j
+2l1k
+2l1m
+2l1n
+2l1p
+2l1r
+2l1s
+2l1t
+2l1w
+2l1z
+2m1[cacute]
+2m1[lstroke]
+2m1[nacute]
+2m1[sacute]
+2m1[zacute]
+2m1[zdotaccent]
+2m1b
+2m1c
+2m1d
+2m1f
+2m1g
+2m1h
+2m1j
+2m1k
+2m1l
+2m1n
+2m1p
+2m1r
+2m1s
+2m1t
+2m1w
+2m1z
+2n1[cacute]
+2n1[lstroke]
+2n1[nacute]
+2n1[sacute]
+2n1[zacute]
+2n1[zdotaccent]
+2n1b
+2n1c
+2n1d
+2n1f
+2n1g
+2n1h
+2n1j
+2n1k
+2n1l
+2n1m
+2n1p
+2n1r
+2n1s
+2n1t
+2n1w
+2n1z
+2ntn
+2p1[cacute]
+2p1[nacute]
+2p1[sacute]
+2p1[zacute]
+2p1[zdotaccent]
+2p1b
+2p1c
+2p1d
+2p1f
+2p1g
+2p1k
+2p1m
+2p1n
+2p1s
+2p1sz
+2p1t
+2p1z
+2pln
+2r1[cacute]
+2r1[lstroke]
+2r1[nacute]
+2r1[sacute]
+2r1[zacute]
+2r1[zdotaccent]
+2r1b
+2r1c
+2r1d
+2r1f
+2r1g
+2r1h
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+2r1p
+2r1s
+2r1t
+2r1w
+2rz1[cacute]
+2rz1[lstroke]
+2rz1[nacute]
+2rz1[sacute]
+2rz1[zacute]
+2rz1[zdotaccent]
+2rz1b
+2rz1c
+2rz1d
+2rz1f
+2rz1g
+2rz1h
+2rz1j
+2rz1k
+2rz1l
+2rz1m
+2rz1n
+2rz1p
+2rz1r
+2rz1s
+2rz1t
+2rz1w
+2s[lstroke]b
+2s1[zacute]
+2s1[zdotaccent]
+2s1b
+2s1d
+2s1f
+2s1g
+2s1s
+2snk
+2stk
+2stn
+2stsz
+2sz1[cacute]
+2sz1[sacute]
+2sz1c
+2sz1f
+2sz1k
+2sz1l
+2sz1m
+2sz1n
+2sz1p
+2sz1s
+2sz1t
+2sz1w
+2sz1z
+2szln
+2t1[cacute]
+2t1[nacute]
+2t1[sacute]
+2t1[zacute]
+2t1[zdotaccent]
+2t1b
+2t1c
+2t1d
+2t1f
+2t1g
+2t1k
+2t1m
+2t1n
+2t1p
+2t1s
+2t1z
+2tln
+2trk
+2trzn
+2w1[cacute]
+2w1[lstroke]
+2w1[nacute]
+2w1[sacute]
+2w1[zacute]
+2w1[zdotaccent]
+2w1b
+2w1c
+2w1d
+2w1f
+2w1g
+2w1j
+2w1k
+2w1l
+2w1m
+2w1n
+2w1p
+2w1r
+2w1s
+2w1t
+2w1z
+2z1[cacute]
+2z1[sacute]
+2z1c
+2z1d
+2z1f
+2z1k
+2z1p
+2z1s
+2z1t
+2zdk
+2zdn
+3d2niow
+3k2sz2t
+3m2k2n
+3m2nest
+3m2nezj
+3m2sk2n
+3p2neu
+3w2[lstroke]ad
+3w2[lstroke]os
+3w2czas
+4[cacute]3[cacute]
+4[lstroke]3[lstroke]
+4[zacute]3[zacute]
+4[zdotaccent]3[zdotaccent]
+4b3b
+4c3c
+4d3d
+4f3f
+4g3g
+4h3h
+4j3j
+4k3k
+4l3l
+4m3m
+4n3n
+4p3p
+4r3r
+4t3t
+4w3w
+4z3z
+8[cacute].
+8[cacute][cacute].
+8[cacute][lstroke].
+8[cacute][nacute].
+8[cacute][sacute].
+8[cacute][zacute].
+8[cacute][zdotaccent].
+8[cacute]b.
+8[cacute]c.
+8[cacute]d.
+8[cacute]f.
+8[cacute]g.
+8[cacute]h.
+8[cacute]j.
+8[cacute]k.
+8[cacute]l.
+8[cacute]m.
+8[cacute]n.
+8[cacute]p.
+8[cacute]r.
+8[cacute]s.
+8[cacute]t.
+8[cacute]v.
+8[cacute]w.
+8[cacute]x.
+8[cacute]z.
+8[lstroke].
+8[lstroke][cacute].
+8[lstroke][lstroke].
+8[lstroke][nacute].
+8[lstroke][sacute].
+8[lstroke][zacute].
+8[lstroke][zdotaccent].
+8[lstroke]b.
+8[lstroke]c.
+8[lstroke]d.
+8[lstroke]f.
+8[lstroke]g.
+8[lstroke]h.
+8[lstroke]j.
+8[lstroke]k.
+8[lstroke]l.
+8[lstroke]m.
+8[lstroke]n.
+8[lstroke]p.
+8[lstroke]r.
+8[lstroke]s.
+8[lstroke]t.
+8[lstroke]v.
+8[lstroke]w.
+8[lstroke]x.
+8[lstroke]z.
+8[nacute].
+8[nacute][cacute].
+8[nacute][lstroke].
+8[nacute][nacute].
+8[nacute][sacute].
+8[nacute][zacute].
+8[nacute][zdotaccent].
+8[nacute]b.
+8[nacute]c.
+8[nacute]d.
+8[nacute]f.
+8[nacute]g.
+8[nacute]h.
+8[nacute]j.
+8[nacute]k.
+8[nacute]l.
+8[nacute]m.
+8[nacute]n.
+8[nacute]p.
+8[nacute]r.
+8[nacute]s.
+8[nacute]t.
+8[nacute]v.
+8[nacute]w.
+8[nacute]x.
+8[nacute]z.
+8[sacute].
+8[sacute][cacute].
+8[sacute][lstroke].
+8[sacute][nacute].
+8[sacute][sacute].
+8[sacute][zacute].
+8[sacute][zdotaccent].
+8[sacute]b.
+8[sacute]c.
+8[sacute]d.
+8[sacute]f.
+8[sacute]g.
+8[sacute]h.
+8[sacute]j.
+8[sacute]k.
+8[sacute]l.
+8[sacute]m.
+8[sacute]n.
+8[sacute]p.
+8[sacute]r.
+8[sacute]s.
+8[sacute]t.
+8[sacute]v.
+8[sacute]w.
+8[sacute]x.
+8[sacute]z.
+8[zacute].
+8[zacute][cacute].
+8[zacute][lstroke].
+8[zacute][nacute].
+8[zacute][sacute].
+8[zacute][zacute].
+8[zacute][zdotaccent].
+8[zacute]b.
+8[zacute]c.
+8[zacute]d.
+8[zacute]f.
+8[zacute]g.
+8[zacute]h.
+8[zacute]j.
+8[zacute]k.
+8[zacute]l.
+8[zacute]m.
+8[zacute]n.
+8[zacute]p.
+8[zacute]r.
+8[zacute]s.
+8[zacute]t.
+8[zacute]v.
+8[zacute]w.
+8[zacute]x.
+8[zacute]z.
+8[zdotaccent].
+8[zdotaccent][cacute].
+8[zdotaccent][lstroke].
+8[zdotaccent][nacute].
+8[zdotaccent][sacute].
+8[zdotaccent][zacute].
+8[zdotaccent][zdotaccent].
+8[zdotaccent]b.
+8[zdotaccent]c.
+8[zdotaccent]d.
+8[zdotaccent]f.
+8[zdotaccent]g.
+8[zdotaccent]h.
+8[zdotaccent]j.
+8[zdotaccent]k.
+8[zdotaccent]l.
+8[zdotaccent]m.
+8[zdotaccent]n.
+8[zdotaccent]p.
+8[zdotaccent]r.
+8[zdotaccent]s.
+8[zdotaccent]t.
+8[zdotaccent]v.
+8[zdotaccent]w.
+8[zdotaccent]x.
+8[zdotaccent]z.
+8b.
+8b[cacute].
+8b[lstroke].
+8b[nacute].
+8b[sacute].
+8b[zacute].
+8b[zdotaccent].
+8bb.
+8bc.
+8bd.
+8bf.
+8bg.
+8bh.
+8bj.
+8bk.
+8bl.
+8bm.
+8bn.
+8bp.
+8br.
+8brz.
+8bs.
+8bt.
+8bv.
+8bw.
+8bx.
+8bz.
+8c.
+8c[cacute].
+8c[lstroke].
+8c[nacute].
+8c[sacute].
+8c[zacute].
+8c[zdotaccent].
+8cb.
+8cc.
+8cd.
+8cf.
+8cg.
+8ch.
+8ch[lstroke].
+8chrz.
+8chw.
+8cj.
+8ck.
+8cl.
+8cm.
+8cn.
+8cp.
+8cr.
+8cs.
+8ct.
+8cv.
+8cw.
+8cx.
+8cz.
+8czt.
+8d.
+8d[cacute].
+8d[lstroke].
+8d[nacute].
+8d[sacute].
+8d[zacute].
+8d[zdotaccent].
+8db.
+8dc.
+8dd.
+8df.
+8dg.
+8dh.
+8dj.
+8dk.
+8dl.
+8dm.
+8dn.
+8dp.
+8dr.
+8drz.
+8ds.
+8dt.
+8dv.
+8dw.
+8dx.
+8dz.
+8f.
+8f[cacute].
+8f[lstroke].
+8f[nacute].
+8f[sacute].
+8f[zacute].
+8f[zdotaccent].
+8fb.
+8fc.
+8fd.
+8ff.
+8fg.
+8fh.
+8fj.
+8fk.
+8fl.
+8fm.
+8fn.
+8fp.
+8fr.
+8fs.
+8ft.
+8fv.
+8fw.
+8fx.
+8fz.
+8g.
+8g[cacute].
+8g[lstroke].
+8g[nacute].
+8g[sacute].
+8g[zacute].
+8g[zdotaccent].
+8gb.
+8gc.
+8gd.
+8gf.
+8gg.
+8gh.
+8gj.
+8gk.
+8gl.
+8gm.
+8gn.
+8gp.
+8gr.
+8gs.
+8gt.
+8gv.
+8gw.
+8gx.
+8gz.
+8h.
+8h[cacute].
+8h[lstroke].
+8h[nacute].
+8h[sacute].
+8h[zacute].
+8h[zdotaccent].
+8hb.
+8hc.
+8hd.
+8hf.
+8hg.
+8hh.
+8hj.
+8hk.
+8hl.
+8hm.
+8hn.
+8hp.
+8hr.
+8hs.
+8ht.
+8hv.
+8hw.
+8hx.
+8hz.
+8j.
+8j[cacute].
+8j[lstroke].
+8j[nacute].
+8j[sacute].
+8j[zacute].
+8j[zdotaccent].
+8jb.
+8jc.
+8jd.
+8jf.
+8jg.
+8jh.
+8jj.
+8jk.
+8jl.
+8jm.
+8jn.
+8jp.
+8jr.
+8js.
+8jt.
+8jv.
+8jw.
+8jx.
+8jz.
+8k.
+8k[cacute].
+8k[lstroke].
+8k[nacute].
+8k[sacute].
+8k[zacute].
+8k[zdotaccent].
+8kb.
+8kc.
+8kd.
+8kf.
+8kg.
+8kh.
+8kj.
+8kk.
+8kl.
+8km.
+8kn.
+8kp.
+8kr.
+8ks.
+8kst.
+8kt.
+8kv.
+8kw.
+8kx.
+8kz.
+8l.
+8l[cacute].
+8l[lstroke].
+8l[nacute].
+8l[sacute].
+8l[zacute].
+8l[zdotaccent].
+8lb.
+8lc.
+8ld.
+8lf.
+8lg.
+8lh.
+8lj.
+8lk.
+8ll.
+8lm.
+8ln.
+8lp.
+8lr.
+8ls.
+8lt.
+8lv.
+8lw.
+8lx.
+8lz.
+8m.
+8m[cacute].
+8m[lstroke].
+8m[nacute].
+8m[sacute].
+8m[zacute].
+8m[zdotaccent].
+8mb.
+8mc.
+8md.
+8mf.
+8mg.
+8mh.
+8mj.
+8mk.
+8ml.
+8mm.
+8mn.
+8mp.
+8mr.
+8ms.
+8mst.
+8mt.
+8mv.
+8mw.
+8mx.
+8mz.
+8n.
+8n[cacute].
+8n[lstroke].
+8n[nacute].
+8n[sacute].
+8n[zacute].
+8n[zdotaccent].
+8nb.
+8nc.
+8nd.
+8nf.
+8ng.
+8nh.
+8nj.
+8nk.
+8nl.
+8nm.
+8nn.
+8np.
+8nr.
+8ns.
+8nt.
+8nv.
+8nw.
+8nx.
+8nz.
+8p.
+8p[cacute].
+8p[lstroke].
+8p[nacute].
+8p[sacute].
+8p[zacute].
+8p[zdotaccent].
+8pb.
+8pc.
+8pd.
+8pf.
+8pg.
+8ph.
+8pj.
+8pk.
+8pl.
+8pm.
+8pn.
+8pp.
+8pr.
+8prz.
+8ps.
+8pt.
+8pv.
+8pw.
+8px.
+8pz.
+8r.
+8r[cacute].
+8r[lstroke].
+8r[nacute].
+8r[sacute].
+8r[zacute].
+8r[zdotaccent].
+8rb.
+8rc.
+8rd.
+8rf.
+8rg.
+8rh.
+8rj.
+8rk.
+8rl.
+8rm.
+8rn.
+8rp.
+8rr.
+8rs.
+8rsz.
+8rt.
+8rv.
+8rw.
+8rx.
+8rz.
+8rz[lstroke].
+8s.
+8s[cacute].
+8s[lstroke].
+8s[nacute].
+8s[sacute].
+8s[zacute].
+8s[zdotaccent].
+8sb.
+8sc.
+8sch.
+8sd.
+8sf.
+8sg.
+8sh.
+8sj.
+8sk.
+8skrz.
+8sl.
+8sm.
+8sn.
+8sp.
+8sr.
+8ss.
+8st.
+8str.
+8strz.
+8stw.
+8sv.
+8sw.
+8sx.
+8sz.
+8szcz.
+8szczb.
+8szk.
+8szn.
+8szt.
+8sztr.
+8t.
+8t[cacute].
+8t[lstroke].
+8t[nacute].
+8t[sacute].
+8t[zacute].
+8t[zdotaccent].
+8tb.
+8tc.
+8td.
+8tf.
+8tg.
+8th.
+8tj.
+8tk.
+8tl.
+8tm.
+8tn.
+8tp.
+8tr.
+8trz.
+8ts.
+8tt.
+8tv.
+8tw.
+8tx.
+8tz.
+8v.
+8v[cacute].
+8v[lstroke].
+8v[nacute].
+8v[sacute].
+8v[zacute].
+8v[zdotaccent].
+8vb.
+8vc.
+8vd.
+8vf.
+8vg.
+8vh.
+8vj.
+8vk.
+8vl.
+8vm.
+8vn.
+8vp.
+8vr.
+8vs.
+8vt.
+8vv.
+8vw.
+8vx.
+8vz.
+8w.
+8w[cacute].
+8w[lstroke].
+8w[nacute].
+8w[sacute].
+8w[zacute].
+8w[zdotaccent].
+8wb.
+8wc.
+8wd.
+8wf.
+8wg.
+8wh.
+8wj.
+8wk.
+8wl.
+8wm.
+8wn.
+8wp.
+8wr.
+8ws.
+8wt.
+8wv.
+8ww.
+8wx.
+8wz.
+8x.
+8x[cacute].
+8x[lstroke].
+8x[nacute].
+8x[sacute].
+8x[zacute].
+8x[zdotaccent].
+8xb.
+8xc.
+8xd.
+8xf.
+8xg.
+8xh.
+8xj.
+8xk.
+8xl.
+8xm.
+8xn.
+8xp.
+8xr.
+8xs.
+8xt.
+8xv.
+8xw.
+8xx.
+8xz.
+8z.
+8z[cacute].
+8z[lstroke].
+8z[nacute].
+8z[sacute].
+8z[zacute].
+8z[zdotaccent].
+8zb.
+8zc.
+8zd.
+8zdr.
+8zdrz.
+8zf.
+8zg.
+8zh.
+8zj.
+8zk.
+8zl.
+8zm.
+8zn.
+8zp.
+8zr.
+8zs.
+8zt.
+8zv.
+8zw.
+8zx.
+8zz.
+a1
+a2u
+a2y
+aa2
+ae2
+ai2
+ao2
+be2eth
+be2f3sz2
+be2k1hend
+bi2n3o2ku
+bi2sz3kop
+bi2z3ne2s3m
+bi2z3nes
+birmin2g1ham
+blo2k1hauz
+bo2s3ma
+br2d
+bro2a2d3way
+bu2sz3me
+buk2sz3pan
+busine2ss3m
+busines2s
+c4h
+c4z
+cal2d1well
+ch2[lstroke]
+ch2j
+ch2l
+ch2r
+ch2w
+chus1t
+cu2r7zon
+d[zdotaccent]2[lstroke]
+d[zdotaccent]2j
+d[zdotaccent]2l
+d[zdotaccent]2r
+d[zdotaccent]2w
+d[zdotaccent]e4z3b
+d[zdotaccent]e4z3m
+d4[zacute]
+d4[zdotaccent]
+d4z
+deut4sch3land
+drz2w
+du2sz3past
+e1
+e2r5zac
+e2u
+e2y
+e3u2sz
+ea2
+ee2
+ei2
+eo2
+fi2s3harm
+fi2sz3bin
+fo2k2s3t
+fo2r5zac
+fol2k1lor
+fos2f1a2zot
+ga3d2get
+gado3p2ta
+gol2f3s
+golfsz2
+gran2d1ilo
+gro4t3r
+hi2sz3p
+hu2cz1w
+hu2x3ley
+i1
+i2[aogonek]
+i2[eogonek]
+i2[oacute]
+i2a
+i2e
+i2i
+i2o
+i2u
+i2y
+in4nsbruck
+in4sbruc
+j2t1[lstroke]
+j2t1r
+ja4z4z3b
+ja4z4z3m
+karl2s1kron
+karl2s1ruhe
+kir2chhoff
+kongre2s3m
+led1w
+lu2ft3waffe
+lu2ks1fer
+ly2o
+ma2r5z[lstroke]
+ma2r5zl
+ma2r5zn
+mi2sz1masz
+mie2r5z[lstroke]
+mie2r5zi
+mon2t3real
+moza2i3k
+mu2r7zasich3l
+na4[lstroke]3kows
+na4r3v
+o1
+o2y
+oa2
+och3mistrz
+oe2
+of2f3set
+oi2
+oo2
+ou2
+pa2n3a2mer
+pa2s3cal
+pa2s3ch
+po[lstroke]u3d2ni
+po3d4nieprz
+po3m2n[aogonek]
+po3m2n[eogonek]
+po3m2ni
+po4rt2s3mo2uth
+po4rt3land
+poli3e2t
+poli3u2re
+powsze3d2ni
+pr2chal
+pre2sz3pa
+r4z
+ro2e3nt2gen
+ro2k3rocz
+ro2s3to3c2k
+s4z
+se2t3le
+sko2r5zoner
+sm2r
+sowi3z2
+sy2n3opt
+sy2s1tem
+sza2sz1[lstroke]y
+sze2z1long
+sze4[sacute][cacute]
+szto2k1holm
+szyn2k1was
+to3y2o3t
+turboo2d3rzut
+tygo3d2ni
+u1
+u2y
+ua2
+ue2
+ui2
+uo2
+uu2
+vo2lk2s3
+we2e2k1end
+we4st3f
+we4st3m
+y1
+ya2
+ye2
+yi2
+yo2
+yu2
+ze4p3p
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-pt.hyp b/Master/texmf-dist/tex/context/patterns/lang-pt.hyp
new file mode 100644
index 00000000000..8198898a612
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-pt.hyp
@@ -0,0 +1,29 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: pthyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='pt'>
+% <sourcefile>pthyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Portuguese language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+hard-ware
+soft-ware
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-pt.pat b/Master/texmf-dist/tex/context/patterns/lang-pt.pat
new file mode 100644
index 00000000000..566f73e9f20
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-pt.pat
@@ -0,0 +1,334 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: pthyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='pt'>
+% <sourcefile>pthyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Portuguese language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+1b2l
+1b2r
+1ba
+1be
+1bi
+1bo
+1bu
+1b[aacute]
+1b[acircumflex]
+1b[atilde]
+1b[eacute]
+1b[iacute]
+1b[oacute]
+1b[uacute]
+1b[ecircumflex]
+1b[otilde]
+1c2h
+1c2l
+1c2r
+1ca
+1ce
+1ci
+1co
+1cu
+1c[aacute]
+1c[acircumflex]
+1c[atilde]
+1c[eacute]
+1c[iacute]
+1c[oacute]
+1c[uacute]
+1c[ecircumflex]
+1c[otilde]
+1[ccedilla]a
+1[ccedilla]e
+1[ccedilla]i
+1[ccedilla]o
+1[ccedilla]u
+1[ccedilla][aacute]
+1[ccedilla][acircumflex]
+1[ccedilla][atilde]
+1[ccedilla][eacute]
+1[ccedilla][iacute]
+1[ccedilla][oacute]
+1[ccedilla][uacute]
+1[ccedilla][ecircumflex]
+1[ccedilla][otilde]
+1d2l
+1d2r
+1da
+1de
+1di
+1do
+1du
+1d[aacute]
+1d[acircumflex]
+1d[atilde]
+1d[eacute]
+1d[iacute]
+1d[oacute]
+1d[uacute]
+1d[ecircumflex]
+1d[otilde]
+1f2l
+1f2r
+1fa
+1fe
+1fi
+1fo
+1fu
+1f[aacute]
+1f[acircumflex]
+1f[atilde]
+1f[eacute]
+1f[iacute]
+1f[oacute]
+1f[uacute]
+1f[ecircumflex]
+1f[otilde]
+1g2l
+1g2r
+1ga
+1ge
+1gi
+1go
+1gu
+1gu4a
+1gu4e
+1gu4i
+1gu4o
+1g[aacute]
+1g[acircumflex]
+1g[atilde]
+1g[eacute]
+1g[iacute]
+1g[oacute]
+1g[uacute]
+1g[ecircumflex]
+1g[otilde]
+1ja
+1je
+1ji
+1jo
+1ju
+1j[aacute]
+1j[acircumflex]
+1j[atilde]
+1j[eacute]
+1j[iacute]
+1j[oacute]
+1j[uacute]
+1j[ecircumflex]
+1j[otilde]
+1k2l
+1k2r
+1ka
+1ke
+1ki
+1ko
+1ku
+1k[aacute]
+1k[acircumflex]
+1k[atilde]
+1k[eacute]
+1k[iacute]
+1k[oacute]
+1k[uacute]
+1k[ecircumflex]
+1k[otilde]
+1l2h
+1la
+1le
+1li
+1lo
+1lu
+1l[aacute]
+1l[acircumflex]
+1l[atilde]
+1l[eacute]
+1l[iacute]
+1l[oacute]
+1l[uacute]
+1l[ecircumflex]
+1l[otilde]
+1ma
+1me
+1mi
+1mo
+1mu
+1m[aacute]
+1m[acircumflex]
+1m[atilde]
+1m[eacute]
+1m[iacute]
+1m[oacute]
+1m[uacute]
+1m[ecircumflex]
+1m[otilde]
+1n2h
+1na
+1ne
+1ni
+1no
+1nu
+1n[aacute]
+1n[acircumflex]
+1n[atilde]
+1n[eacute]
+1n[iacute]
+1n[oacute]
+1n[uacute]
+1n[ecircumflex]
+1n[otilde]
+1p2l
+1p2r
+1pa
+1pe
+1pi
+1po
+1pu
+1p[aacute]
+1p[acircumflex]
+1p[atilde]
+1p[eacute]
+1p[iacute]
+1p[oacute]
+1p[uacute]
+1p[ecircumflex]
+1p[otilde]
+1qu4a
+1qu4e
+1qu4i
+1qu4o
+1ra
+1re
+1ri
+1ro
+1ru
+1r[aacute]
+1r[acircumflex]
+1r[atilde]
+1r[eacute]
+1r[iacute]
+1r[oacute]
+1r[uacute]
+1r[ecircumflex]
+1r[otilde]
+1sa
+1se
+1si
+1so
+1su
+1s[aacute]
+1s[acircumflex]
+1s[atilde]
+1s[eacute]
+1s[iacute]
+1s[oacute]
+1s[uacute]
+1s[ecircumflex]
+1s[otilde]
+1t2l
+1t2r
+1ta
+1te
+1ti
+1to
+1tu
+1t[aacute]
+1t[acircumflex]
+1t[atilde]
+1t[eacute]
+1t[iacute]
+1t[oacute]
+1t[uacute]
+1t[ecircumflex]
+1t[otilde]
+1v2l
+1v2r
+1va
+1ve
+1vi
+1vo
+1vu
+1v[aacute]
+1v[acircumflex]
+1v[atilde]
+1v[eacute]
+1v[iacute]
+1v[oacute]
+1v[uacute]
+1v[ecircumflex]
+1v[otilde]
+1w2l
+1w2r
+1xa
+1xe
+1xi
+1xo
+1xu
+1x[aacute]
+1x[acircumflex]
+1x[atilde]
+1x[eacute]
+1x[iacute]
+1x[oacute]
+1x[uacute]
+1x[ecircumflex]
+1x[otilde]
+1za
+1ze
+1zi
+1zo
+1zu
+1z[aacute]
+1z[acircumflex]
+1z[atilde]
+1z[eacute]
+1z[iacute]
+1z[oacute]
+1z[uacute]
+1z[ecircumflex]
+1z[otilde]
+a3a
+a3e
+a3o
+c3c
+e3a
+e3e
+e3o
+i3a
+i3e
+i3i
+i3o
+i3[acircumflex]
+i3[ecircumflex]
+i3[ocircumflex]
+o3a
+o3e
+o3o
+r3r
+s3s
+u3a
+u3e
+u3o
+u3u
+1-
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ro.hyp b/Master/texmf-dist/tex/context/patterns/lang-ro.hyp
new file mode 100644
index 00000000000..83e9f500b6c
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ro.hyp
@@ -0,0 +1,26 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: rohyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ro'>
+% <sourcefile>rohyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Romanian language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-ro.pat b/Master/texmf-dist/tex/context/patterns/lang-ro.pat
new file mode 100644
index 00000000000..da343a242c1
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-ro.pat
@@ -0,0 +1,377 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: rohyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='ro'>
+% <sourcefile>rohyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Romanian language</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.ante1
+.anti1
+.contra1
+.de3s2cri
+.de2z1aco
+.de2z1am[abreve]
+.de2z1apro
+.de2z1avan
+.de2z1infec
+.de2z1ord
+.i2n1a
+.i2n1ec
+.i2n1ed
+.i2n1ef
+.i2n1eg
+.i2n1eluc
+.i2n1ep
+.i2n1es
+.i2n1ev
+.i2n1ex
+.i2n1od
+.i2n1of
+.i2n1op
+.i2n1os
+.i2n1ox
+.i2n1um
+.i2n1un
+.i2n1ut
+.[icircumflex]2n1[abreve]sp
+.[icircumflex]2n1ad
+.[icircumflex]2n3s2
+.[icircumflex]n3[scedilla]2
+.ne1a
+.ne1[icircumflex]
+.nema2i3
+.ne3s2ta
+.re1ac
+.re1[icircumflex]
+.su2b1ord
+.su2b3r
+.supra1
+.tran2s1
+.tran4s3pl
+.tran4s3f
+a1a
+a1ia
+a1ie
+a1io
+[abreve]1ie
+[abreve]1oa
+[acircumflex]1ia
+e1e
+e1ia
+i1i
+i2ii.
+2i.
+o1o
+o1ua
+o1u[abreve]
+u1u
+u1ia
+u1al.
+u1os.
+u1ism
+u1ist
+u1i[scedilla]t
+2bi.
+2ci.
+2di.
+2fi.
+2gi.
+2li.
+2mi.
+2ni.
+2pi.
+2ri.
+2si.
+2[scedilla]i.
+2ti.
+2tri.
+2[tcedilla]i.
+2vi.
+2zi.
+2bc
+2bd
+2bj
+2bm
+2bn
+2bp
+2bs
+b3s2t
+2bt
+2b[tcedilla]
+2bv
+2cc
+2cd
+2ck
+2cm
+2cn
+2cs
+2ct
+2c[tcedilla]
+2cv
+2cz
+2dg
+2dh
+2dj
+2dk
+2dm
+2dq
+2ds
+2dv
+2dw
+2fn
+2fs
+2ft
+2gd
+2gm
+2gn
+2gt
+2g3s2
+2gv
+2gz
+2jm
+2hn
+2lb
+2lc
+2ld
+2lf
+2lg
+2lj
+2lk
+2lm
+2ln
+2lp
+2lq
+2lr
+2ls
+2lt
+2l[tcedilla]
+2lv
+2lz
+2mb
+2mf
+2mk
+2ml
+2mn
+2mp
+2m3s2
+2m[tcedilla]
+2nb
+2nc
+2nd
+n3d2v
+2nf
+2ng
+2nh
+2nj
+2nl
+2nm
+2nn
+2nq
+2nr
+2ns
+n3s2a.
+n3s2[abreve]
+n3s2e
+n3s2i
+n3s2o
+n3s2cr
+n3s2f
+ns3h
+n3s2pl
+n3s2pr
+n3s2t
+2n[scedilla]
+n3[scedilla]2c
+n3[scedilla]2t
+2nt
+2n[tcedilla]
+2nv
+2nz
+n3z2dr
+2pc
+2pn
+2ps
+2pt
+2p[tcedilla]
+2rb
+2rc
+2rd
+2rf
+2rg
+2rh
+2rj
+2rk
+2rl
+2rm
+2rn
+2rp
+2rq
+2rr
+2rs
+r3s2t
+2r[scedilla]
+2rt
+2r[tcedilla]
+2rv
+2rx
+2rz
+2sb
+2sc
+2sd
+2sf
+2sg
+2sj
+2sk
+2sl
+2sm
+2sn
+2sp
+2sq
+2sr
+2ss
+2st
+2sv
+2sz
+2[scedilla]n
+2[scedilla]t
+2tb
+2tc
+2td
+2tf
+2tg
+2tm
+2tn
+2tp
+2ts
+2tt
+2tv
+2tw
+2vn
+1w
+wa2r
+2xc
+2xm
+2xp
+2xt
+1y
+2yb
+2yl
+2ym
+2yn
+2yr
+2ys
+2zb
+2zc
+2zd
+2zf
+2zg
+2zl
+2zm
+2zn
+2zp
+2zr
+2zs
+2zt
+2zv
+c2h
+g2h
+s2h
+t2z
+b2l
+c2l
+d2l
+f2l
+g2l
+h2l
+k2l
+p2l
+t2l
+v2l
+b2r
+c2r
+d2r
+f2r
+g2r
+h2r
+k2r
+p2r
+t2r
+v2r
+1b
+1c
+1d
+1f
+1g
+1h
+1j
+1k
+1l
+1m
+1n
+1p
+1q
+1r
+1s
+1[scedilla]
+1t
+1[tcedilla]
+1v
+1x
+1z
+.b2
+.c2
+.d2
+.f2
+.g2
+.j2
+.h2
+.k2
+.m2
+.p2
+.s2
+.[scedilla]2
+.t2
+.[tcedilla]2
+.v2
+.z2
+2b.
+2c.
+2d.
+2f.
+2g.
+2h.
+2j.
+2k.
+2l.
+2m.
+2n.
+2p.
+2r.
+4s.
+2[scedilla].
+2[tcedilla].
+4t.
+2v.
+2x.
+2z.
+2-2
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sk.hyp b/Master/texmf-dist/tex/context/patterns/lang-sk.hyp
new file mode 100644
index 00000000000..ae2a6f63e3a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sk.hyp
@@ -0,0 +1,45 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: skhyphen.tex skhyphen.ex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sk'>
+% <sourcefile>skhyphen.tex skhyphen.ex</sourcefile>
+% <title>TeX hyphenation patterns for the Slovakian language</title>
+% <copyright>
+% <year>1992</year>
+% <owner>Jana Chlebikova</owner>
+% </copyright>
+% <copyright>
+% <year>1991</year>
+% <owner>Karel Horak</owner>
+% <comment>List of exceptions</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+dos[tcaron]
+me-t[oacute]-da
+me-t[oacute]-dy
+ne-do-stat-ka-mi
+sep-tem-bra
+dos[tcaron]
+me-t[oacute]-da
+me-t[oacute]-dy
+ne-do-stat-ka-mi
+sep-tem-bra
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sk.pat b/Master/texmf-dist/tex/context/patterns/lang-sk.pat
new file mode 100644
index 00000000000..71f9a842b36
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sk.pat
@@ -0,0 +1,2502 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: skhyphen.tex skhyphen.ex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sk'>
+% <sourcefile>skhyphen.tex skhyphen.ex</sourcefile>
+% <title>TeX hyphenation patterns for the Slovakian language</title>
+% <copyright>
+% <year>1992</year>
+% <owner>Jana Chlebikova</owner>
+% </copyright>
+% <copyright>
+% <year>1991</year>
+% <owner>Karel Horak</owner>
+% <comment>List of exceptions</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+a1
+[aacute]1
+[adiaeresis]1
+e1
+[eacute]1
+i1
+[iacute]1
+o1
+[oacute]1
+[ocircumflex]1
+u1
+[uacute]1
+y1
+[yacute]1
+i2a
+i2[aacute]
+i2e
+i2u
+o2u
+c2h
+d2z
+d2[zcaron]
+2b1b
+2b1c
+2b1[ccaron]
+2b1d
+2b1[dcaron]
+2b1f
+2b1g
+2b1h
+2b1c2h
+2b1j
+2b1k
+2b1l
+2b1[lcaron]
+2b1m
+2b1n
+2b1[ncaron]
+2b1p
+2b1r
+2b1s
+2b1[scaron]
+2b1t
+2b1[tcaron]
+2b1v
+2b1w
+2b1x
+2b1z
+2b1[zcaron]
+2b1d2z
+2b1d2[zcaron]
+2c1b
+2c1c
+2c1[ccaron]
+2c1d
+2c1[dcaron]
+2c1f
+2c1g
+2c1c2h
+2c1j
+2c1k
+2c1l
+2c1[lcaron]
+2c1m
+2c1n
+2c1[ncaron]
+2c1p
+2c1r
+2c1s
+2c1[scaron]
+2c1t
+2c1[tcaron]
+2c1v
+2c1w
+2c1x
+2c1z
+2c1[zcaron]
+2c1d2z
+2c1d2[zcaron]
+2[ccaron]1b
+2[ccaron]1c
+2[ccaron]1[ccaron]
+2[ccaron]1d
+2[ccaron]1[dcaron]
+2[ccaron]1f
+2[ccaron]1g
+2[ccaron]1h
+2[ccaron]1c2h
+2[ccaron]1j
+2[ccaron]1k
+2[ccaron]1l
+2[ccaron]1[lcaron]
+2[ccaron]1m
+2[ccaron]1n
+2[ccaron]1[ncaron]
+2[ccaron]1p
+2[ccaron]1r
+2[ccaron]1s
+2[ccaron]1[scaron]
+2[ccaron]1t
+2[ccaron]1[tcaron]
+2[ccaron]1v
+2[ccaron]1w
+2[ccaron]1x
+2[ccaron]1z
+2[ccaron]1[zcaron]
+2[ccaron]1d2z
+2[ccaron]1d2[zcaron]
+2d1b
+2d1c
+2d1[ccaron]
+2d1d
+2d1[dcaron]
+2d1f
+2d1g
+2d1h
+2d1c2h
+2d1j
+2d1k
+2d1l
+2d1[lcaron]
+2d1m
+2d1n
+2d1[ncaron]
+2d1p
+2d1r
+2d1s
+2d1[scaron]
+2d1t
+2d1[tcaron]
+2d1v
+2d1d2z
+2d1d2[zcaron]
+2[dcaron]1b
+2[dcaron]1c
+2[dcaron]1[ccaron]
+2[dcaron]1d
+2[dcaron]1[dcaron]
+2[dcaron]1f
+2[dcaron]1g
+2[dcaron]1h
+2[dcaron]1c2h
+2[dcaron]1j
+2[dcaron]1k
+2[dcaron]1l
+2[dcaron]1[lcaron]
+.as4t4ro3
+.atmo3
+.a2u1to3
+2[dcaron]1m
+2[dcaron]1n
+2[dcaron]1[ncaron]
+2[dcaron]1p
+2[dcaron]1r
+2[dcaron]1s
+2[dcaron]1[scaron]
+2[dcaron]1t
+2[dcaron]1[tcaron]
+2[dcaron]1v
+2[dcaron]1z
+2[dcaron]1[zcaron]
+2[dcaron]1d2z
+2[dcaron]1d2[zcaron]
+2f1b
+2f1c
+2f1[ccaron]
+2f1d
+2f1[dcaron]
+2f1f
+2f1g
+2f1h
+2f1c2h
+2f1j
+2f1k
+2f1l
+2f1[lcaron]
+2f1m
+2f1n
+2f1[ncaron]
+2f1p
+2f1r
+2f1s
+2f1[scaron]
+2f1t
+2f1[tcaron]
+2f1v
+2f1z
+2f1[zcaron]
+2f1d2z
+2f1d2[zcaron]
+2g1b
+2g1c
+2g1[ccaron]
+2g1d
+2g1[dcaron]
+2g1f
+2g1g
+2g1h
+2g1c2h
+2g1j
+2g1k
+2g1l
+2g1[lcaron]
+2g1m
+2g1n
+2g1[ncaron]
+2g1p
+2g1r
+2g1s
+2g1[scaron]
+2g1t
+2g1[tcaron]
+2g1v
+2g1z
+2g1[zcaron]
+2g1d2z
+2g1d2[zcaron]
+2h1b
+2h1c
+2h1[ccaron]
+2h1d
+2h1[dcaron]
+2h1f
+2h1g
+2h1h
+2h1c2h
+2h1j
+2h1k
+2h1l
+2h1[lcaron]
+2h1m
+2h1n
+2h1[ncaron]
+2h1p
+2h1r
+2h1s
+2h1[scaron]
+2h1t
+2h1[tcaron]
+2h1v
+2h1z
+2h1[zcaron]
+2h1d2z
+2h1d2[zcaron]
+2c2h1b
+2c2h1c
+2c2h1[ccaron]
+2c2h1d
+2c2h1[dcaron]
+2c2h1f
+2c2h1g
+2c2h1h
+2c2h1c2h
+2c2h1j
+2c2h1k
+2c2h1l
+2c2h1[lcaron]
+2c2h1m
+2c2h1n
+2c2h1[ncaron]
+2c2h1p
+2c2h1r
+2c2h1s
+2c2h1[scaron]
+2c2h1t
+2c2h1[tcaron]
+2c2h1v
+2c2h1w
+2c2h1[zcaron]
+2c2h1d2z
+2c2h1d2[zcaron]
+2j1b
+2j1c
+2j1[ccaron]
+2j1d
+2j1[dcaron]
+2j1f
+2j1g
+2j1h
+2j1c2h
+2j1j
+2j1k
+2j1l
+2j1[lcaron]
+2j1m
+2j1n
+2j1[ncaron]
+2j1p
+2j1r
+2j1s
+2j1[scaron]
+2j1t
+2j1[tcaron]
+2j1v
+2j1w
+2j1x
+2j1z
+2j1[zcaron]
+2j1d2z
+2j1d2[zcaron]
+2k1b
+2k1c
+2k1[ccaron]
+2k1d
+2k1[dcaron]
+2k1f
+2k1g
+2k1h
+2k1c2h
+2k1j
+2k1k
+2k1l
+2k1[lcaron]
+2k1m
+2k1n
+2k1[ncaron]
+2k1p
+2k1r
+2k1s
+2k1[scaron]
+2k1t
+2k1[tcaron]
+2k1v
+2k1w
+2k1x
+2k1z
+2k1[zcaron]
+2k1d2z
+2k1d2[zcaron]
+2l1b
+2l1c
+2l1[ccaron]
+2l1d
+2l1[dcaron]
+2l1f
+2l1g
+2l1h
+2l1c2h
+2l1j
+2l1k
+2l1l
+2l1[lcaron]
+2l1m
+2l1n
+2l1[ncaron]
+2l1p
+2l1r
+2l1s
+2l1[scaron]
+2l1t
+2l1[tcaron]
+2l1v
+2l1z
+2l1[zcaron]
+2l1d2z
+2l1d2[zcaron]
+2[lcaron]1b
+2[lcaron]1c
+2[lcaron]1[ccaron]
+2[lcaron]1d
+2[lcaron]1[dcaron]
+2[lcaron]1f
+2[lcaron]1g
+2[lcaron]1h
+2[lcaron]1c2h
+2[lcaron]1j
+2[lcaron]1k
+2[lcaron]1l
+2[lcaron]1[lcaron]
+2[lcaron]1m
+2[lcaron]1n
+2[lcaron]1[ncaron]
+2[lcaron]1p
+2[lcaron]1r
+2[lcaron]1s
+2[lcaron]1[scaron]
+2[lcaron]1t
+2[lcaron]1[tcaron]
+2[lcaron]1v
+2[lcaron]1z
+2[lcaron]1[zcaron]
+2[lcaron]1d2z
+2[lcaron]1d2[zcaron]
+2m1b
+2m1c
+2m1[ccaron]
+2m1d
+2m1[dcaron]
+2m1f
+2m1g
+2m1h
+2m1c2h
+2m1j
+2m1k
+2m1l
+2m1[lcaron]
+2m1m
+2m1n
+2m1[ncaron]
+2m1p
+2m1r
+2m1s
+2m1[scaron]
+2m1t
+2m1[tcaron]
+2m1v
+2m1z
+2m1[zcaron]
+2m1d2z
+2m1d2[zcaron]
+2n1b
+2n1c
+2n1[ccaron]
+2n1d
+2n1[dcaron]
+2n1f
+2n1g
+2n1h
+2n1c2h
+2n1j
+2n1k
+2n1l
+2n1[lcaron]
+2n1m
+2n1n
+2n1[ncaron]
+2n1p
+2n1r
+2n1s
+2n1[scaron]
+2n1t
+2n1[tcaron]
+2n1v
+2n1w
+2n1x
+2n1z
+2n1[zcaron]
+2n1d2z
+2n1d2[zcaron]
+2[ncaron]1b
+2[ncaron]1c
+2[ncaron]1[ccaron]
+2[ncaron]1d
+2[ncaron]1[dcaron]
+2[ncaron]1f
+2[ncaron]1g
+2[ncaron]1h
+2[ncaron]1c2h
+2[ncaron]1j
+2[ncaron]1k
+2[ncaron]1l
+2[ncaron]1[lcaron]
+2[ncaron]1m
+2[ncaron]1n
+2[ncaron]1[ncaron]
+2[ncaron]1p
+2[ncaron]1r
+2[ncaron]1s
+2[ncaron]1[scaron]
+2[ncaron]1t
+2[ncaron]1[tcaron]
+2[ncaron]1v
+2[ncaron]1z
+2[ncaron]1[zcaron]
+2[ncaron]1d2z
+2[ncaron]1d2[zcaron]
+2p1b
+2p1c
+2p1[ccaron]
+2p1d
+2p1[dcaron]
+2p1f
+2p1g
+2p1h
+2p1c2h
+2p1j
+2p1k
+2p1l
+2p1[lcaron]
+2p1m
+2p1n
+2p1[ncaron]
+2p1p
+2p1r
+2p1s
+2p1[scaron]
+2p1t
+2p1[tcaron]
+2p1v
+2p1w
+2p1x
+2p1z
+2p1[zcaron]
+2p1d2z
+2p1d2[zcaron]
+2r1b
+2r1c
+2r1[ccaron]
+2r1d
+2r1[dcaron]
+2r1f
+2r1g
+2r1h
+2r1c2h
+2r1j
+2r1k
+2r1l
+2r1[lcaron]
+2r1m
+2r1n
+2r1[ncaron]
+2r1p
+2r1r
+2r1s
+2r1[scaron]
+2r1t
+2r1[tcaron]
+2r1v
+2r1w
+2r1x
+2r1z
+2r1[zcaron]
+2r1d2z
+2r1d2[zcaron]
+2s1b
+2s1c
+2s1[ccaron]
+2s1d
+2s1[dcaron]
+2s1f
+2s1g
+2s1h
+2s1c2h
+2s1j
+2s1k
+2s1l
+2s1[lcaron]
+2s1m
+2s1n
+2s1[ncaron]
+2s1p
+2s1r
+2s1s
+2s1[scaron]
+2s1t
+2s1[tcaron]
+2s1v
+2s1z
+2s1[zcaron]
+2s1d2z
+2s1d2[zcaron]
+2[scaron]1b
+2[scaron]1c
+2[scaron]1[ccaron]
+2[scaron]1d
+2[scaron]1[dcaron]
+2[scaron]1f
+2[scaron]1g
+2[scaron]1h
+2[scaron]1c2h
+2[scaron]1j
+2[scaron]1k
+2[scaron]1l
+2[scaron]1[lcaron]
+2[scaron]1m
+2[scaron]1n
+2[scaron]1[ncaron]
+2[scaron]1p
+2[scaron]1r
+2[scaron]1s
+2[scaron]1[scaron]
+2[scaron]1t
+2[scaron]1[tcaron]
+2[scaron]1v
+2[scaron]1w
+2[scaron]1x
+2[scaron]1z
+2[scaron]1[zcaron]
+2[scaron]1d2z
+2[scaron]1d2[zcaron]
+2t1b
+2t1c
+2t1[ccaron]
+2t1d
+2t1[dcaron]
+2t1f
+2t1g
+2t1h
+2t1c2h
+2t1j
+2t1k
+2t1l
+2t1[lcaron]
+2t1m
+2t1n
+2t1[ncaron]
+2t1p
+2t1r
+2t1s
+2t1[scaron]
+2t1t
+2t1[tcaron]
+2t1v
+2t1w
+2t1x
+2t1z
+2t1[zcaron]
+2t1d2z
+2t1d2[zcaron]
+2[tcaron]1b
+2[tcaron]1c
+2[tcaron]1[ccaron]
+2[tcaron]1d
+2[tcaron]1[dcaron]
+2[tcaron]1f
+2[tcaron]1g
+2[tcaron]1h
+2[tcaron]1c2h
+2[tcaron]1j
+2[tcaron]1k
+2[tcaron]1l
+2[tcaron]1[lcaron]
+2[tcaron]1m
+2[tcaron]1n
+2[tcaron]1[ncaron]
+2[tcaron]1p
+2[tcaron]1r
+2[tcaron]1s
+2[tcaron]1[scaron]
+2[tcaron]1t
+2[tcaron]1[tcaron]
+2[tcaron]1v
+2[tcaron]1w
+2[tcaron]1x
+2[tcaron]1z
+2[tcaron]1[zcaron]
+2[tcaron]1d2z
+2[tcaron]1d2[zcaron]
+2v1b
+2v1c
+2v1[ccaron]
+2v1d
+2v1[dcaron]
+2v1f
+2v1g
+2v1h
+2v1c2h
+2v1j
+2v1k
+2v1l
+2v1[lcaron]
+2v1m
+2v1n
+2v1[ncaron]
+2v1p
+2v1r
+2v1s
+2v1[scaron]
+2v1t
+2v1[tcaron]
+2v1v
+2v1w
+2v1x
+2v1z
+2v1[zcaron]
+2v1d2z
+2v1d2[zcaron]
+2z1b
+2z1c
+2z1[ccaron]
+2z1d
+2z1[dcaron]
+2z1f
+2z1g
+2z1h
+2z1c2h
+2z1j
+2z1k
+2z1l
+2z1[lcaron]
+2z1m
+2z1n
+2z1[ncaron]
+2z1p
+2z1r
+2z1s
+2z1[scaron]
+2z1t
+2z1[tcaron]
+2z1v
+2z1z
+2z1[zcaron]
+2z1d2z
+2z1d2[zcaron]
+2[zcaron]1b
+2[zcaron]1c
+2[zcaron]1[ccaron]
+2[zcaron]1d
+2[zcaron]1[dcaron]
+2[zcaron]1f
+2[zcaron]1g
+2[zcaron]1h
+2[zcaron]1c2h
+2[zcaron]1j
+2[zcaron]1k
+2[zcaron]1l
+2[zcaron]1[lcaron]
+2[zcaron]1m
+2[zcaron]1n
+2[zcaron]1[ncaron]
+2[zcaron]1p
+2[zcaron]1r
+2[zcaron]1s
+2[zcaron]1[scaron]
+2[zcaron]1t
+2[zcaron]1[tcaron]
+2[zcaron]1v
+2[zcaron]1z
+2[zcaron]1[zcaron]
+2[zcaron]1d2z
+2[zcaron]1d2[zcaron]
+2d2z1k
+2d2z1n
+2d2z1r
+2d2z1s
+2d2[zcaron]1[scaron]
+2x1t
+2x1n
+2b1[racute]
+2[racute]1b
+2d2z1[racute]
+2[racute]1d2z
+2d2z1[lcaron]
+2[racute]1d2[zcaron]
+2d2[zcaron]1[lcaron]
+a1[iacute]2
+a1o2
+e1[aacute]2
+e1[iacute]2
+e1o2
+e1[oacute]2
+e1u2
+i1o2
+o1a2
+o1e2
+o1i2
+o1o2
+u1a2
+u1[aacute]2
+u1i2
+u1[iacute]2
+u1o2
+u1u2
+y1a2
+y1e2
+y1[oacute]2
+y1u2
+a2u1
+a2i1
+b2l3b
+3b2l3[ccaron]
+b2l3c2h
+3b2l3k
+3b2[lcaron]3k
+3b2l3[ncaron]
+b2l3[scaron]
+b2[lcaron]3[scaron]
+3b2r3b
+b2r3d
+3b2r3k
+3b2[racute]3k
+3b2r3l
+3b2[racute]3[lcaron]
+3b2r3n
+3b2r3[ncaron]
+3b2r3v
+b2r3z
+b3s2c
+b3s2t
+c3k2t
+3c2r3[ccaron]
+3c2[racute]3[ccaron]
+3c2r3k
+3c2[racute]3k
+c3t2v
+3[ccaron]2l3n
+3[ccaron]2r3[ccaron]
+[ccaron]2r3p
+3[ccaron]2r3t
+3[ccaron]2r3v
+d3c4h4n
+3d2l3b
+3d2l3h
+d2l3n
+3d2l3[zcaron]
+3d2[lcaron]3[zcaron]
+3d2r3d
+3d2r3g
+d2r3l
+3d2r3k
+3d2r3m
+d2r3n
+3d2r3v
+3d2r3z
+3d2r3[zcaron]
+3d2[racute]3[zcaron]
+d3s2v
+d3s2t
+d3v2r
+3f2r3[ccaron]
+3f2r3f
+3f2r3k
+3f2[racute]3k
+3f2r3m
+3f2r3n
+3g2l3g
+3g2r3c
+3g2r3g
+3h2l3b
+3h2[lcaron]3b
+3h2l3t
+3h2m2l
+3h2r3b
+3h2[racute]3b
+3h2r3[ccaron]
+3h2r3d
+3h2r3d2z
+3h2r3k
+3h2r3m
+3h2r3n
+3h2r3[ncaron]
+3h2r3t
+3h2r3v
+3c2h2l3p
+3c2h2r3b
+3c2h2r3[ccaron]
+c2h2r3c4h
+3c2h2r3l
+3c2h2r3t
+j2c2h3n
+j3s2t
+j3[scaron]2le
+j3t2m
+j3t2r
+3k2l3b
+3k2[lcaron]3b
+3k2l3[ccaron]
+3k2l3z
+3k2[lcaron]3z
+k2r3b
+3k2r3[ccaron]
+3k2[racute]3[ccaron]
+3k2[racute]3d
+3k2r3k
+3k2[racute]3k
+3k2[racute]3m
+3k2r3p
+3k2r3s
+3k2r3t
+3k2r3v
+k3s2[lcaron]
+k2s3n
+k3t2r
+l3d2r
+[lcaron]3k2n
+l3t2r
+m3b2l
+m3b2[lcaron]
+m3b2r
+m3f2l
+m3f2r
+m3k2n
+3m2l3[ccaron]
+3m2l3k
+m3p2l
+m3p2[lcaron]
+m3p2r
+m3p2s
+3m2r3h
+m2r3c4h
+3m2r3k
+m2r3l
+m2r3[scaron]
+m2r3t
+3m2r3v
+3m2r3z
+3m2[racute]3z
+m3s2t
+m3[scaron]2t
+n3d[lcaron]a
+n3d2r
+n3f2l
+n3f2r
+n3g2h
+n3g2l
+n3g2[lcaron]
+n2g3n
+n3g2r
+n3g2v
+n3k2c
+n3k2h
+n3k2n
+n3k2r
+n3k2v
+n3s2c
+n3[scaron]2p
+n3[scaron]2t
+n3t2g
+n3t2l
+n3t2n
+n3t2r
+n2[zcaron]3m
+3p2l3n
+3p2l3[ncaron]
+3p2[lcaron]3[ncaron]
+3p2l3z
+3p2[lcaron]3z
+3p2[lcaron]3[zcaron]
+3p2[racute]3c
+3p2r3[ccaron]
+3p2r3d
+3p2r3s
+3p2r3[scaron]
+p3[scaron]2[tcaron]
+p3t2r
+r2b3n
+r3g2[lcaron]
+r3g2r
+r3g2s
+r3k2d
+r2k3n
+r3k2t
+r3k2v
+r3p2c
+r3p2[ccaron]
+r3p2r
+r3s2p
+r3[scaron]2[ccaron]
+r3[scaron]2l
+r3[scaron]2r
+r2t3m
+r3t2n
+r2t3[ncaron]
+r3t2r
+r3t2v
+3s4c4h4n
+s2k3l
+s2k3m
+s2k3n
+s3k2r
+s3k2v
+3s2l3n
+3s2l3[ncaron]
+3s2l3z
+s3p2r
+3s2r3d
+3s4[racute]3k
+3s4r3[scaron]
+s3t2k
+[ocircumflex]s4t3k2[aacute]r3s4t4v
+s2t3l
+s3t2m
+s2t3n
+s3t2r
+s3t2v
+s2[tcaron]3h
+s2[tcaron]3m
+s2[tcaron]3p
+[scaron]3k2l
+[scaron]3k2r
+[scaron]3t2r
+3[scaron]4t4v
+t3k2l
+t3k2n
+3t2l3[ccaron]
+3t2l3k
+t3h2l
+3t4r3[ccaron]
+3t4r3h
+3t2r3l
+3t2r3k
+3t2r3m
+a4t2r3n
+3t2r3n
+3t2[racute]3n
+3t2[racute]3[ncaron]
+3t4r3p
+3t2r3v
+3t2[racute]3[zcaron]
+3v2l3[ccaron]
+3v2[lcaron]3[ccaron]
+3v2l3h
+3v2l3k
+3v2l3n
+3v2r3h
+3v2r3c2h
+3v2r3l
+3v2[racute]3[scaron]
+3v2[racute]3t
+3v2r3z
+3v2[racute]3z
+3v4z4d
+3v4z4h
+3v4z4n
+3v3z2[tcaron]
+z3d2n
+noz5d4r
+3z4d4r
+3z4d4v
+z3g2n
+3z4h4r
+3z2r3k
+3z2r3n
+3z4v4l
+[zcaron]2d3n
+3[zcaron]2l3[ccaron]
+3[zcaron]2l3t
+3[zcaron]2[lcaron]t
+3[zcaron]2r3[dcaron]
+[zcaron]3s2t
+x3p2l
+x3p2r
+x3t2r
+3b2l4[ccaron]3n
+3b2[lcaron]4[ccaron]3k
+3b2l4n3k
+3b2[lcaron]3k2n
+3b2r4b3l
+3b2r4b3t
+3b2r4[ccaron]3k
+3b2r4d3c
+3b2[racute]4d3n
+3b2r3h2l
+3b4[racute]4k3n
+3b4r4m3b
+3b4r4n3[ccaron]
+3b4r4n3k
+3b4r4[scaron]3l
+3b4r4t3l
+3b4r4t3n
+3b4r4v3n
+3b4r4z3d
+3b4r4z3l
+3b4r4z3n
+b3s2t2r
+3c4[racute]4[ccaron]3k
+3c4r4k3n
+3c4v4r3[ccaron]
+3c4v4r3k
+3c4v4[racute]3k
+3c4v4r3l
+3[ccaron]4l4n3k
+3[ccaron]4r3[ccaron]4r
+3[ccaron]4r4c4h3n
+3[ccaron]4r4p3k
+3[ccaron]4r4p3n
+3[ccaron]4r4t3n
+3[ccaron]4v4r3k
+3[ccaron]4v4r3l
+3d4l4b3n
+d4[lcaron]4[zcaron]3k
+d4l4[zcaron]3n
+d4[lcaron]4[zcaron]3n
+3d4r4c3n
+3d4r4g3[lcaron]
+3d4r4g3n
+3d4r4h3n
+3d4r4n3[ccaron]
+3d4r4n3k
+3d4r4s3n
+3d4r4[zcaron]3b
+3d4r4[zcaron]3k
+3f4r4c3k
+3f4r4c3n
+3f4r4[ccaron]3k
+3f4r4f3l
+3f4r4k3n
+3f4r4n3d
+3f4r4n3d4[zcaron]
+3f4r4n3g
+3f4r4n3k
+3g4l4g3n
+3g2r4c3k
+3h2[lcaron]4b3k
+3h2l3t4n
+3h2r4b3[ccaron]
+3h2r4[ccaron]3k
+h2r4d3l
+3h2r4g3[lcaron]
+3h2r4k3[lcaron]
+3h2r4k3n
+3h2[racute]4k3n
+3h2r4n3[ccaron]
+3h2r4s3t
+3h2r4s3[tcaron]
+3ch4[lcaron]4p3k
+3c2h2r4b3t
+3c2h2r4c4h3l
+3c2h2r4c4h3[lcaron]
+3c4h4r4s3t
+j3s4t4r
+j3s4t4v
+3k4l4b3[ccaron]
+3k4l4b3k
+3k4l4z3k
+3k4l4z3n
+3k4r4[ccaron]3m
+3k4r4[ccaron]3n
+3k4r4k3v
+3k4r4m3n
+3k4[racute]4m3n
+3k4r4p3[ccaron]
+3k4r4s3t
+3k4r4[scaron]3t
+3k4r4t3k
+3k4r4v3n
+3m2l4[ccaron]3k
+3m2[lcaron]4k3n
+3m2[lcaron]4k3v
+3m2l4s3n
+m3p4r3p
+m3p4r3v
+3m4r4k3n
+3m4r4k3v
+3m4r4m3l
+3m4r4n3[ccaron]
+3m4r4n3k
+3m4[racute]4[scaron]3t
+3m4[racute]4t3v
+3m4r4z3l
+3m4r4z3k
+3m4r4z3n
+n4g3s4t
+n3[scaron]4t4r
+n3t4l3m
+3p2l4z3l
+3p2[lcaron]4z3n
+p2[racute]4c3n
+3p2r4[ccaron]3k
+3p4r4d3n
+3p4[racute]4c2h3n
+3p4r4s3k
+3p4r4t3k
+r2s3k4d
+r2s3k4t
+[ccaron]er4s3t4v
+3s4l4n3k
+3s4k4r3z
+3s4m4r3c
+3s4m4r3[ccaron]
+3s4m4r3d
+3s4m4r3k
+3s4m4r3t
+3s4p4r3c4h
+3s4r4d3c
+3s4r4k3n
+3s4r4s3t
+3s4t4[lcaron]3k
+s3t4r3b
+ko4s3t4r3[ccaron]
+3s4t4r3[ccaron]
+3s4t4[racute]3h
+3s4t4r3k
+s4t4r3v
+4s4[tcaron]5k4r[aacute]t
+3[scaron]4k4l3b
+3[scaron]4k4r3k
+3[scaron]4k4[racute]3k
+ma[scaron]3k4r3t
+3[scaron]4k4r3t
+3[scaron]4p4l3h
+3[scaron]4t4r3b
+[scaron]4t4r3n
+3[scaron]4t4v4r3t
+3[scaron]4t4v4r3[tcaron]
+3t2[lcaron]4c3[tcaron]
+3t2r4b3l
+t2r4[ccaron]3k
+3t2r4d3l
+3t2r4h3l
+3t2r4h3n
+3t2r4k3n
+3t2r4k3v
+3t2r4m3n
+3t4[racute]4p3n
+3t2r4[zcaron]3k
+3t2r4[zcaron]3n
+3t2v4r3d
+3t2v4r3d4z
+3t2v4[racute]3d4z
+3v2l4h3[ccaron]
+3v2l4h3k
+3v2l4h3n
+3v2l4n3k
+3v2l4n3n
+3v4r4h3n
+3v4r4k3n
+3v4[racute]4z3g
+3v4r4z3g
+3v4r4z3n
+3v4r4[zcaron]3l
+3z4h4[racute]3[ncaron]
+3z4r4n3n
+3[zcaron]4l4[ccaron]3n
+3[zcaron]4l4t3n
+3[zcaron]4r4d3k
+3b4r4n3k4n
+b3d4[lcaron]4[zcaron]3n
+3c4v4r4[ccaron]3k
+3c4v4r4n3k
+3[ccaron]4[racute]4s3t4v
+3[ccaron]4r4t4t3n
+3[ccaron]4v4r4k3n
+3d4r4[zcaron]3g4r
+3f4r4n4g3n
+h2[racute]4s3t4k
+3c4h4r4s4t3n
+3k4r4s4t3n
+3k4r4s4t3[ncaron]
+3s4m4r4[scaron]3[tcaron]
+3s4m4r4t3k
+s3t4r4n3k
+3[scaron]4k4l4b3n
+ma[scaron]3k4r4t3n
+3[scaron]4k4r4t3n
+3[scaron]4k4v4r3[ccaron]
+3[scaron]4k4v4r3k
+3[scaron]4k4v4[racute]3k
+3[scaron]4k4v4r3n
+3[scaron]4m4r4d3k
+3[scaron]4m4r4n3c
+3[scaron]4p4l4h3n
+3[scaron]4t4r4k3n
+3[scaron]3t4r4n3g
+3t4v4r4d3n
+3v4r4s3t4v
+3v4r4z3g4n
+3c4v4r4n3g4n
+3[scaron]4k4v4r4k3n
+3[scaron]4k4v4[racute]4k3n
+k4[ccaron]3n[yacute].
+k4[ccaron]3n[eacute]ho.
+k4[ccaron]3n[eacute]mu.
+k4[ccaron]3nom.
+k4[ccaron]3n[yacute]m.
+k4[ccaron]3n[eacute].
+k4[ccaron]3n[aacute].
+k4[ccaron]3nej.
+k4[ccaron]3n[uacute].
+k4[ccaron]3nou.
+k4[ccaron]3n[iacute].
+k4[ccaron]3n[yacute]ch.
+k4[ccaron]3n[yacute]mi.
+k4t3n[yacute].
+k4t3n[eacute]ho.
+k4t3n[eacute]mu.
+k4t3nom.
+k4t3n[yacute]m.
+k4t3n[eacute].
+k4t3n[aacute].
+k4t3nej.
+k4t3n[uacute].
+k4t3nou.
+k4t3n[iacute].
+k4t3n[yacute]ch.
+k4t3n[yacute]mi.
+n4[ccaron]3n[yacute].
+n4[ccaron]3n[eacute]ho.
+n4[ccaron]3n[eacute]mu.
+n4[ccaron]3nom.
+n4[ccaron]3n[yacute]m.
+n4[ccaron]3n[eacute].
+n4[ccaron]3n[aacute].
+n4[ccaron]3nej.
+n4[ccaron]3n[uacute].
+n4[ccaron]3nou.
+n4[ccaron]3n[iacute].
+n4[ccaron]3n[yacute]ch.
+n4[ccaron]3n[yacute]mi.
+n4k4[ccaron]3n
+n4t3n[yacute].
+n4t3n[eacute]ho.
+n4t3n[eacute]mu.
+n4t3nom.
+n4t3n[yacute]m.
+n4t3n[eacute].
+n4t3n[aacute].
+n4t3nej.
+n4t3n[uacute].
+n4t3nou.
+n4t3n[iacute].
+n4t3n[yacute]ch.
+n4t3n[yacute]mi.
+r4d3n[yacute].
+r4d3n[eacute]ho.
+r4d3n[eacute]mu.
+r4d3nom.
+r4d3n[yacute]m.
+r4d3n[eacute].
+r4d3n[aacute].
+r4d3nej.
+r4d3n[uacute].
+r4d3nou.
+r4d3n[iacute].
+r4d3n[yacute]ch.
+r4d3n[yacute]mi.
+r4m3n[yacute].
+r4m3n[eacute]ho.
+r4m3n[eacute]mu.
+r4m3nom.
+r4m3n[yacute]m.
+r4m3n[eacute].
+r4m3n[aacute].
+r4m3nej.
+r4m3n[uacute].
+r4m3nou.
+r4m3n[iacute].
+r4m3n[yacute]ch.
+r4m3n[yacute]mi.
+r4p4[ccaron]3n
+r4t3n[yacute].
+r4t3n[eacute]ho.
+r4t3n[eacute]mu.
+r4t3nom.
+r4t3n[yacute]m.
+r4t3n[eacute].
+r4t3n[aacute].
+r4t3nej.
+r4t3n[uacute].
+r4t3nou.
+r4t3n[iacute].
+r4t3n[yacute]ch.
+r4t3n[yacute]mi.
+s4t3n[yacute].
+s4t3n[eacute]ho.
+s4t3n[eacute]mu.
+s4t3nom.
+s4t3n[yacute]m.
+s4t3n[eacute].
+s4t3n[aacute].
+s4t3nej.
+s4t3n[uacute].
+s4t3nou.
+s4t3n[iacute].
+s4t3n[yacute]ch.
+s4t3n[yacute]mi.
+z4d3ny.
+z4d3neho.
+z4d3nemu.
+z4d3nom.
+z4d3nym.
+z4d3ne.
+z4d3na.
+z4d3nej.
+z4d3nu.
+z4d3nou.
+z4d3ni.
+z4d3nych.
+z4d3nymi.
+z4d3n[yacute].
+z4d3n[eacute]ho.
+z4d3n[eacute]mu.
+z4d3n[yacute]m.
+z4d3n[eacute].
+z4d3n[aacute].
+z4d3n[uacute].
+z4d3n[iacute].
+z4d3n[yacute]ch.
+z4d3n[yacute]mi.
+b2l4[scaron]3k
+l2t3k2a.
+l2t3k2y.
+l2t3k2e.
+l2t3k2u.
+l2t3k2ou.
+l2t3k2[aacute]m.
+l2t3k2[aacute]ch.
+l2t3k2a1mi.
+n2t3k2a.
+n2t3k2y.
+n2t3k2e.
+n2t3k2u.
+n2t3k2ou.
+n2t3k2[aacute]m.
+n2t3k2[aacute]ch.
+n2t3k2a1mi.
+n2k2t3k
+p2t3k2a.
+p2t3k2y.
+p2t3k2e.
+p2t3k2u.
+p2t3k2ou.
+p2t3k2[aacute]m.
+p2t3k2[aacute]ch.
+p2t3k2a1mi.
+s2t3k2a.
+s2t3k2y.
+s2t3k2e.
+s2t3k2u.
+s2t3k2ou.
+s2t3k2[aacute]m.
+s2t3k2[aacute]ch.
+s2t3k2a1mi.
+5p4r4s3t
+b3s4k
+d3s4k
+j3s4k
+l4p3s4k
+l3s4k
+[lcaron]3s4k
+l4t3s4k
+4m3s4k
+4m4p3s4k
+n4d3s4k
+n4k4t3s4k
+n3s4k
+n4t3s4k
+p3s4k
+p4t3s4k
+r3s4k
+r4t3s4k
+r4z5s4k
+5s4r4b3s4k
+[scaron]3s4k
+t3s4k
+v3s4k
+z3s4k
+[zcaron]3s4k
+n2d3[ccaron]
+z3[scaron]2t2
+r4z3[scaron]2t2
+b3s4t4v
+[ccaron]3s4t4v
+d3s4t4v
+[dcaron]3s4t4v
+[lcaron]3s4t4v
+m3s4t4v
+n3s4t4v
+n4t3s4t4v
+p3s4t4v
+r3s4t4v
+r4v5s4t4v
+[scaron]3s4t4v
+t3s4t4v
+v3s4t4v
+[zcaron]3s4t4v
+.a2e2ro
+.a2e2ro3d2r
+.aero3g2r
+.a2e2ro3k2l
+.aero3p2l
+.aero3s2k
+.aero3s2t
+.aero3t2r
+.akcie3s2c2h
+.ane3s2teti
+.ane3s2t[eacute]z
+.anti5k4l
+.anti5k4r
+.apo5p4le
+.ap4rio
+.ap4ri[oacute]
+.arci5k4
+.aristo5k4
+.as3k2lep
+.austro5s4
+.bac2k3hand
+.balne2o3
+.belo5
+.belo5h4
+.bez5
+.bez5b4
+.bez5d4
+.bez5h4
+.bez5k4
+.bez5m4
+.bez5p4
+.bez5s4
+.bez5t4
+.bez5v4
+.bez5z4
+.bielo5
+.bielob4
+.bieloh4
+.bielov4
+.bi2o5
+.biok4
+.biop4
+.bios4
+.blaho5
+.blahop4
+.blahos4
+.bledo5
+.boha5p4
+.boho5s4
+.bo[zcaron]e5
+.bo[zcaron]e5d4
+.bo[zcaron]ec2h4
+.brato5v4r
+.b2z2d
+.c[aacute]ro5v4ra
+.celo5d4
+.celo5k4
+.celo5p4
+.celo5s4
+.celo5u4
+.ceno5t4
+.ces2t5maj
+.cirkevno5
+.cirkevno5p4
+.c4t4n
+.cudzo5k4
+.cudzo5o4
+.cudzo5s4
+.cudzo5t4
+.cudzo5v4
+.cyto5p4
+.[ccaron]aro5k4
+.[ccaron]aro5s4
+.[ccaron]aro5v4
+.[ccaron]aro5z4
+.[ccaron]erno5b4
+.[ccaron]erno5h4
+.[ccaron]erno5k4
+.[ccaron]erno5o4
+.[ccaron]erveno5a4
+.[ccaron]erveno5b4
+.[ccaron]erveno5h4
+.[ccaron]erveno5k4
+.[ccaron]erveno5o4
+.[ccaron]erveno5p4
+.[ccaron]ierno5b4
+.[ccaron]ierno5h4
+.[ccaron]ierno5o4
+.[ccaron]o5ch4
+.[ccaron]o5s4
+.[ccaron]udo5t4
+.da3k2d
+.[dcaron]atelino5t4
+.de5f4
+.de5g4
+.dek4l
+.desa[tcaron]5
+.de5[scaron]4t2
+.dez5i2
+.dez5o2
+.dis2k3d4
+.divo5t4
+.dlho5h4
+.dlho5p4
+.dobro5d4
+.dobro5p4
+.dobro5s4
+.do5[ccaron]2m
+.do5d4
+.do5f4
+.do5h4
+.do5c4h4
+.do5i4
+.do5k4
+.do5o
+.do5p4
+.do5s4
+.do5[scaron]4p
+.do5[scaron]4tie
+.do5[scaron]4t[iacute]
+.do5t4l
+.do5t4m
+.do5t4r
+.do5t4v
+.do5u
+.do5v4
+.do5z4
+.do5[zcaron]4
+.drevo5p4
+.drevo5o
+.drevo5v4
+.drobno5z4
+.druho5s4
+.dvoj5al
+.dvoj5[ccaron]4
+.dvoj5d4
+.dvoj5h4
+.dvoj5i4
+.dvoj5k4
+.dvoj5p4
+.dvoj5s4
+.dvoj5t4
+.dvoj5u
+.dvoj5v4
+.dvoj5z4
+.elektro5
+.ex5k4
+.fol2k5
+.foto5
+.gala5p4
+.gama5g4
+.ge4o
+.hnedo5o
+.hnedo5u
+.holo5b4
+.holo5h4
+.holo5k4
+.hore5z4
+.horno5u4
+.hr[ocircumflex]zo5s4t4
+.hr[ocircumflex]zo5v4
+.hr[ocircumflex]zy5p4
+.hrubo5s4
+.hydro5
+.chorobo5p4
+.jasno5o
+.jasno5z4
+.jedno5h4
+.jedno5i4
+.jedno5p4
+.jedno5s4
+.jedno5u4
+.jedno5z4
+.juho5a
+.juho5s4
+.ju[zcaron]no5s4
+.kata5k4
+.kata5s4t4
+.kme[ncaron]o5t4
+.koso5d4
+.koso5[scaron]4
+.koso5u
+.krivo5p4
+.kruto5v4
+.krvi5p4
+.krvi5s4
+.krvi5t4
+.ktovie5a2
+.l[aacute]sky5p4
+.lesos4
+.[lcaron]4s4t
+.[lcaron]udovo5u
+.makro5k4
+.makro5o4
+.makro5s4
+.m[aacute]lo5k4
+.malo5o
+.m[aacute]lo5v4
+.m[aacute]rno5t4
+.medzi5h4
+.medzi5i4
+.medzi5p4
+.medzi5[scaron]4
+.medzi5t4
+.melo5d4
+.meru5[ocircumflex]2
+.miesto5d4
+.miesto5p4
+.mikro5e4
+.mikro5k4
+.mikro5o
+.mikro5p4
+.mimo5[scaron]4
+.mimo5[uacute]
+.mimo5v4
+.mnoho5s4
+.mnoho5t4
+.mnoho5u
+.mnoho5v
+.mnoho5z
+.modro5o
+.mrako5d4
+.mravo5u
+.mucho5t4
+.m4z4d
+.na5a4
+.na5b4
+.na5c4
+.nad5h4
+.na5d4nes.
+.nad5p4
+.na5d4p4.
+.na5d4[racute]4.
+.na5d4robno.
+.na5h4
+.na5i4
+.na5k4
+.na5m4
+.na5o4
+.na5p4
+.n[aacute]5p4
+.n[aacute]rodno5o
+.na5s4
+.na5st4
+.n[aacute]5s4
+.n[aacute]5st4
+.na5[scaron]4
+.na5[scaron]k4
+.na6[scaron]5sk
+.na5t4
+.na5u4
+.na5[uacute]4
+.n[aacute]5u4
+.n[aacute]5[uacute]4
+.na5v4l
+.na5v4na
+.na5v4r4
+.n[aacute]5v4r4
+.na5v4z4
+.na5z4r
+.na5z4v
+.na6z5vy[scaron]
+.n[aacute]z5v4
+.na5[zcaron]4
+.ne5a4
+.ne5do3u2k
+.ne5e4
+.ne5i4
+.ne5m4
+.ne5na5h4
+.ne5na5i4
+.ne5na5k4
+.ne5na5m4
+.ne5na5p4
+.ne5na5s4
+.ne5na5t4
+.ne5p4
+.ne5s4
+.ne6s5tor
+.ne5[scaron]4
+.ne5t4
+.ne6t5t
+.ne5u2
+.ne5[uacute]2
+.ne5v4
+.ne5z4d4r
+.ne5z4d4v
+.ne5z4l
+.ne5z4m
+.ne5z4n
+.ne5z4r
+.ne5z4v
+.nie5k4
+.ni5k4
+.ni6k5to[scaron]
+.n[iacute]zko5k4
+.novo5u2
+.novo5z2
+.obi5d4
+.ob5k4
+.obo5s4
+.obo5z4
+.ob5s4
+.ob5t4
+.ob5z4
+.od5b4
+.od5c4
+.od5d4
+.od5f4
+.od5h4
+.od5c4h4
+.od5i4
+.od6i5[oacute]
+.od5[iacute]4
+.od5k4
+.odo5b4
+.odo5h4
+.odo5k4
+.odo5m4k4
+.odo5p4
+.odo5s4
+.od5p4
+.od5s4
+.od5[scaron]4
+.od5t4
+.od5v4
+.od5z4
+.t4v4r
+.o5h4l
+.o5h4[lcaron]
+.o5h4na
+.o5h4n[uacute]
+.o5h4r
+.o5c4h4
+.o5k4l
+.o5k4[lcaron]
+.okolo5i
+.okolo5s4
+.o5k4ra
+.o5k4r[aacute]
+.o5k4resa[tcaron]
+.o5k4res[aacute]va[tcaron]
+.o5k4ri
+.o5k4r[iacute]
+.o5k4ru
+.o5k4r[uacute]
+.o5m4l
+.o5m4n
+.o5m4r
+.o5p4
+.o6p5lan
+.o6p5rat
+.o5s4lab
+.o5s4lad
+.o5s4lav
+.o5s4l[aacute]v
+.o5s4lep
+.o5s4lo
+.o5s4p4
+.o5s4tar
+.o5s4ta[tcaron]
+.o5s4tan
+.o5s4ta[ncaron]
+.o6s5tatn
+.o5s4tatok
+.o5s4tatk
+.o5s4t[aacute]v
+.o5s6to5
+.o5s6t4rap
+.ostro5u
+.o5s4ved
+.o5s4vetl
+.o5s4viet
+.o5s4vie[zcaron]
+.o5s4vit
+.o5s4voj
+.o5[scaron]4k4
+.o5[scaron]4[lcaron]4
+.o5[scaron]4m4
+.o5[scaron]4p4
+.o5[scaron]4v4
+.o5t4ras
+.o5t4rav
+.o5t4r[aacute]v
+.o5t4rep
+.o5t4ria
+.o5v4dov
+.o5v4l[aacute]d
+.o5v4la[zcaron]
+.o5v4p4
+.o5v4r
+.o5z4l4
+.o5z4n
+.o5z4re
+.o5z4v4l
+.p[adiaeresis][tcaron]5izbo
+.plno5a
+.plno5p4
+.plno5[scaron]4
+.plno5kr4
+.plocho5d4
+.po5b4
+.po5[ccaron]4
+.poda5k4
+.pod5b4r
+.pod5h4
+.pod5c4h
+.pod5k4
+.pod5p4
+.po5d4r[aacute][zcaron]
+.po5d4rep
+.pod5re
+.po5d4rh
+.po5d4rie
+.po5d4rm
+.po5d4rv
+.po5d4r4[zcaron]
+.pod5s4ko[ccaron]
+.pod5v4
+.pod3zem
+.pod3zol
+.pod3[zcaron]a
+.pod3[zcaron]u
+.po5h4
+.po6h5reb
+.po5c4h4
+.po5i4
+.po5k4
+.pol5d4
+.pol5i4z
+.polo5a
+.polo5b4
+.pol5o4bl[uacute]
+.polo5d4
+.polo5h4l
+.polo5i
+.polo5k4
+.polo5m4
+.polo5o4
+.polo5p4
+.polo5s4
+.polo5t4
+.polo5u4
+.polo5[uacute]4
+.polo5v4
+.polo5z4
+.pol5s4t
+.po5m4
+.po6m5n[iacute]k
+.po5o4
+.po5ob4h
+.po5ob4l
+.po5s4
+.po6s4t5s4k4rip
+.po6s5tul
+.po5[scaron]4
+.po6[scaron]5ta
+.po6[scaron]5tov
+.po6[scaron]5v
+.po5t4k4n
+.po5t4[lcaron]
+.po5t4r
+.poroz5p4
+.poroz5s4
+.poroz5v4
+.po6st5g4r
+.po6s5ti
+.po5t4
+.po5u
+.po5v4
+.po4v5ra
+.povy5h4
+.povy5k4
+.povy5p4
+.povy5s4
+.povy5v4
+.povy5z4
+.po5v4z4b
+.po5z4
+.pra5o4
+.pra5p4
+.pravicovo5o
+.pra5v4l
+.pra5v4nu
+.pra5v4n[uacute]
+.pr[aacute]5vo5p4
+.pra5vo5s4
+.pre5b4
+.pre5c4
+.pred5c4
+.pred5h4
+.pred5ch4
+.pred5i
+.pred5k4
+.pred5m4
+.predo5h4
+.pred5op
+.pred5ostatn
+.pred5p4
+.pre5d4rah
+.pre5d4rap
+.pre5d4ra[tcaron]
+.pre5d4ra[zcaron]
+.pre5d4ri
+.pre5d4r[zcaron]
+.pred5s4
+.pred5v4
+.pred5z4
+.pre5[ccaron]4
+.pre5e2
+.pre5f2
+.pre5h4
+.pre5c4h4
+.pre5i4
+.pre5k4
+.pre6k5vap
+.pre5m4
+.pre5o4
+.pre5p4
+.pre5s4
+.pre6s5n
+.pre5[scaron]4
+.pre5t4
+.pre5v4
+.pre5z4
+.pre5[zcaron]4
+.pri5b4
+.pri5[ccaron]4
+.pri5d4
+.pri5h4
+.pri5c4h4
+.pri5k4
+.pr[iacute]5k4
+.pri5m4
+.pri5p4
+.pri5s4
+.pr[iacute]5s4
+.pr[iacute]6s5p
+.pri6s5p
+.pri5s4p[ocircumflex]
+.pri5[scaron]4
+.pri6[scaron]5la.
+.pri6[scaron]5li.
+.pri6[scaron]5lo.
+.pri5t4
+.pri5v4
+.pri5z4
+.pri5[zcaron]4
+.re5g4
+.re5k4
+.re6k5v
+.re5p4
+.re6p5n
+.re5[scaron]4
+.re5t4
+.ro4z5i4
+.ro6z5[iacute]4
+.rozo5b4
+.rozo5d4
+.rozo5c4h4
+.rozo5m4
+.rozo5p4
+.rozo5r4
+.rozo5s4
+.rozo5[scaron]4
+.rozo5z4
+.rozo5[zcaron]4
+.ro6z5u4
+.ro6z5v4
+3s4polu5
+3s4polu5h4
+3s4polu5p4
+3s4polu5v4
+.[scaron]ikmo5o
+.[scaron]iroko5
+.[scaron]iroko5p4
+.[scaron]t[aacute]to5
+.[scaron]t4vor5
+.su4b5s4
+.s[uacute]5h4
+.s[uacute]5k4r
+.s[uacute]5m4r
+.s[uacute]5s4
+.s[uacute]5v4
+.s[uacute]5z4
+.troj5
+.t4v4r4do5
+.viac5k4
+.viac5v4
+.vide2o5
+.vn[uacute]tro5s4
+.vn[uacute]tro5[scaron]4
+.vo5p4ch
+.vo5p4r
+.vo5s4p
+.vo5t4
+.vo5v4
+.vy5
+.v[yacute]5
+.vy5b4
+.vy5c4
+.v[yacute]5c4
+.vy5[ccaron]4
+.v[yacute]5[ccaron]4
+.vy5d4
+.v[yacute]5d4
+.vy5h4
+.vy6h5[ncaron]
+.vy6h5ne
+.v[yacute]5h4
+.vy5c4h4
+.vy5k4
+.v[yacute]5k4
+.vy5m4
+.vy5p4
+.v[yacute]5p4
+.vy5s4
+.v[yacute]5s4
+.vy5[scaron]4
+.vy6[scaron]5[scaron]
+.v[yacute]6[scaron]5k
+.vy5t4
+.v[yacute]5t4
+.vy5v4
+.vy5z4
+.v[yacute]5z4
+.za5b4
+.z[aacute]5b4
+.za5c4
+.za5[ccaron]4
+.za5d4
+.za5h4
+.za5c4h4
+.za5k4
+.za5m4
+.za5p4
+.za5r4
+.za5s4
+.za5[scaron]4
+.za5t4
+.za5v4
+.za5z4
+.za5[zcaron]4
+.z[aacute]5k4
+.z[aacute]5z4
+.zo5b4
+.zo6d5p
+.zo5d4r
+.zo5d4v
+.zo5h4
+.zo5m4l
+.zo5m4r
+.zo5s4
+.zo5[scaron]4
+.zo5t4
+.zo5v4
+.zo5z4
+.zo5[zcaron]4
+5alkohol
+auto4rk
+auto4rs
+5b4lah
+5b4ledn
+5b4lesk
+5b4lok
+5b4l[uacute]d
+5b4lysk
+5b4lysn
+5boh3vi4e3a2k
+5boh3vi4e3o2d3k
+5boh3z4
+5boles4t5n
+5b4ra[tcaron]
+5b4r[aacute]zd
+5b4rec2h
+5b4ronz
+5b4ru[ccaron]
+5b4r[uacute]s
+5b4r[yacute]zg
+5c4muk
+5c4nie
+5c4vak
+5c4vi[ccaron]
+5c4vik
+[ccaron][iacute]6s5lov
+5[ccaron]4len
+5[ccaron]4l[aacute]nk
+5[ccaron]4l[aacute]nok
+5[ccaron]4lov
+5d4[ncaron]ov
+5d4ramat
+5d4ra[tcaron]
+5d4van[aacute]s4[tcaron]5
+5d4vih
+5d4vi[zcaron]
+5d4voj
+5d4vor
+5e2u2r[oacute]p
+5f4[lcaron]ak
+5f4lias
+5f4ranc[uacute]
+5f4rekven
+5f4r[aacute]z
+5g4raf
+5g4ram
+pro6g5ram
+5g4r[eacute][ccaron]
+5g4rob
+5g4vardej
+5h4lad
+5h4las
+5h4lav
+5h4[lcaron]ad
+5h4liad
+5h4luch
+5h4mat
+5h4mot
+5h4na[tcaron]
+5h4ned
+5h4nev
+5h4niezd
+5h4noj
+5h4nut
+5h4n[uacute][tcaron]
+5h4n[uacute]t
+5h4rab
+5h4r3mot
+5h4ran
+5h4ra[tcaron]
+5h4rob
+5h4rom
+5h4roz
+5h4rub
+5h4ryz
+5h4viezd
+5c6h4lap
+5c6h4leb
+5c6hran
+5c6h4r[aacute]n
+5c6h4r[aacute][ncaron]
+5c6h4v[aacute]l
+5c6h4v[aacute]t
+5c6h4vat
+5c6h4vost
+5jeden[aacute]s4t5k
+5jeden[aacute]s4[tcaron]5
+5k4lad
+5k4la[dcaron]
+5k4[lcaron]ak
+5k4lam
+5k4l[aacute]s[tcaron]
+5k4liat
+5k4lia[tcaron]
+5k4lep
+5k4les
+5k4[lcaron][uacute][ccaron]
+5k4resb
+5k4res[tcaron]
+5k4ritic
+5k4r[iacute]dl
+5k4r[ocircumflex]ch
+5k4ruh
+5k4r[uacute][zcaron]
+5k4ryt
+5k4valif
+5k4valit
+5k4vet
+5k4vadr
+5m4ladis4t3v
+5m4no[zcaron]
+5m4rav
+5m4r[aacute]z
+na5d4[zcaron]4ga
+na5d4[zcaron]4g[aacute]
+nav3[scaron]4tev
+n[aacute]v3[scaron]4tev
+nav3[scaron]4t[iacute]v
+5p4l[aacute]n
+5p4lastik
+5p4lat
+5p4lav
+5p4leta
+5p4letie
+5p4let[uacute]
+5p4lies[tcaron]
+5p4ne2umat
+5p4r[aacute]v
+s6pr[aacute]v
+5p4riam
+5p4rirod
+5p2ris[aacute]m
+5p4roduk
+5s4f[eacute]r
+5s4c2hopn
+5s4k4lad
+5s4k4lon
+5s4ko[ccaron]
+5s4kok
+5s4kop
+5s4kor
+5s4k[ocircumflex]r
+5s4k4romne
+5s4k4rot
+5s4k4r[uacute]c
+5s4k4rutk
+5s4k4r[yacute]v
+5s4k[uacute]sen
+5s4kuto[ccaron]
+5s4k4v[uacute]c
+5s4ladk
+5s4lav
+5s4l[aacute]v
+5s4led
+5s4lep
+5s4lovn
+5s4love
+5s4lova
+5s4lovk
+5s4luh
+5s4l[uacute][zcaron]
+5s4[lcaron]ub
+5s4ma[zcaron]
+5s4mel
+5s4mer
+5s4piev
+5s4pev
+5s4por
+5s4potreb
+5s4p4ravod
+5s4p4raved
+5s4p4r[aacute]vn
+5s4p4ravo
+5s4tarost
+5s4tatic
+5s4tav
+5s4t4rach
+5s4t4ran
+5s4t4r[aacute]n
+5s4t4r[aacute]da
+5s4t4ra[scaron]
+5s4t2rat
+5s4t2red
+5s4t2rek
+5s4t4rel
+5s4t4re[lcaron]
+5s4t4riel
+5s4t4rie[lcaron]
+5s4t4rih
+5s4t4ri[zcaron]
+5s4t4rom
+5s4t4r[uacute]h
+5s4t4run
+5s4t4ru[zcaron]
+5s4tati
+5d2ve5s4to
+5t2ri5s4to
+5[scaron]4tyri5s4to
+5p[adiaeresis][tcaron]5s4to
+5[scaron]es4[tcaron]5s4to
+5sedem5s4to
+5osem5s4to
+5dev[adiaeresis][tcaron]5s4to
+5p[adiaeresis][tcaron]5
+5[scaron]es4[tcaron]5
+5s4t4la
+5s4tup
+5s4ved
+5[scaron]4[lcaron]ah
+5[scaron]4liap
+5[scaron]4kola
+5[scaron]4k4rab
+5[scaron]4k4rie
+5[scaron]4pin
+5[scaron]4p4liech
+5[scaron]4print
+5[scaron]4tart
+5[scaron]4t[aacute]t
+5[scaron]4tep
+5[scaron]4t[iacute]t
+5[scaron]4t4rukt[uacute]r
+5[scaron]4tude
+5[scaron]4tudo
+5[scaron]4t4vera
+5[scaron]4t4vorec
+5[scaron]4tyli
+5[scaron]4[tcaron]ast
+5[scaron]tiep4
+5[scaron]4t4v4r4[tcaron]5k4
+5[scaron]4t4v4r4[tcaron]5l4
+5[scaron]4t4v4r4[tcaron]5r4
+5[scaron]4t4v4r4[tcaron]5s4
+5t4la[ccaron]
+5t4lak
+5t4ran4s5
+5t4ras
+5t4resk
+5t4retin
+5t4ried
+5t4rub
+5t4r4vaj
+5t4r4val
+5t4r4van
+5uholn[iacute]k
+5uho[lcaron]n
+5viac5h4
+5v4[ccaron]era
+5v4l[aacute]d
+5v4las
+5v4r[aacute]s
+5v4rav
+5v4rat
+5v4r[aacute]t
+5v4[scaron]imn
+5v4t[aacute]k
+5v4tip
+5vy5s4t4r[aacute]ja
+5v4z4du
+5v4z4[tcaron]ah
+5v4z4[tcaron]a[zcaron]
+5z4lom
+5z4lu[ccaron]
+5z4mysel
+5z4mysl
+5z4nak
+5z4n[aacute]m
+5z4n[aacute][scaron]a
+5z4rak
+5z4v[adiaeresis]z
+5z4vest
+5zv4es[tcaron]
+5z4vod
+5z4vuk
+5z4vu[ccaron]
+5[zcaron]4r[aacute][ccaron]
+5[zcaron]4rane
+5[zcaron]4reb
+5[zcaron]4r[uacute]t
+.cv6
+.ch6
+.sp6
+.st6
+.[scaron]k6
+.[scaron]p6
+.[scaron]t6
+.tk6
+.uh6
+.uc6h6
+.uk6
+.um6
+.up6
+.us6
+.[uacute]s6
+.usc6h6
+.[uacute]sc6h
+.usk6
+.[uacute]sl6
+.usm6
+.[uacute]sm6
+.[uacute]s7ta.
+.[uacute]s7tami.
+.[uacute]s7to[ccaron]
+.[uacute]s7ti
+.ust6l
+.[uacute]st7ny
+.ust6r
+.[uacute]s7tret
+.us7t4ric
+.[uacute]s6t6r
+.[uacute][scaron]6
+.ut6
+.uv6
+.uz6
+.vd6
+.vh6
+.vk6
+.vp6
+.vs6
+.v[scaron]6
+.vt6
+.vz6
+.vzh6
+.vzk6
+.vzl6
+.vzp6
+.v[zcaron]6
+.zb6
+.zd6n
+.zd6r
+.zd6v
+.zg6
+.zh6
+.zm6
+.zr6
+.zv6
+4b4s4[tcaron].
+8c4h.
+8d4z.
+8d4[zcaron].
+4c4ht4.
+4j4s4[tcaron].
+4lt.
+4m4p4r.
+4m4p4s.
+4m4[scaron]4t.
+4n4k4t.
+4p4r4v.
+4rd.
+r4p4t.
+r4[scaron]4[ccaron].
+r4t4z.
+4st.
+4s[tcaron].
+5k4r[aacute]t.
+5s4to5k4r[aacute]t.
+5t4[lcaron]4c4[tcaron].
+akci3a2
+akv[aacute]ri3u2m
+gymn[aacute]zi3um
+le2u3k[eacute]mia
+t2ri3u2mf
+kli3e2nt
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sl.hyp b/Master/texmf-dist/tex/context/patterns/lang-sl.hyp
new file mode 100644
index 00000000000..c0ce84aa67d
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sl.hyp
@@ -0,0 +1,39 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: sihyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sl'>
+% <sourcefile>sihyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Slovenian language</title>
+% <copyright>
+% <year>1990</year>
+% <owner>TeXCeX (SLO),TeXCeH Norbert Schwarz</owner>
+% </copyright>
+% <copyright>
+% <year>1994</year>
+% <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+% <comment>Use of code page 852 in patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1995,1997</year>
+% <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+% <comment>Adaptaion of Slovenian hyphenation pattens, macros</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sl.pat b/Master/texmf-dist/tex/context/patterns/lang-sl.pat
new file mode 100644
index 00000000000..3d9097569a7
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sl.pat
@@ -0,0 +1,1108 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: sihyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sl'>
+% <sourcefile>sihyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Slovenian language</title>
+% <copyright>
+% <year>1990</year>
+% <owner>TeXCeX (SLO),TeXCeH Norbert Schwarz</owner>
+% </copyright>
+% <copyright>
+% <year>1994</year>
+% <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+% <comment>Use of code page 852 in patterns</comment>
+% </copyright>
+% <copyright>
+% <year>1995,1997</year>
+% <owner>Leon "Zlajpah (leon.zlajpah@ijs.si)</owner>
+% <comment>Adaptaion of Slovenian hyphenation pattens, macros</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.av5r
+.di6spo
+.ek3s
+.ek5v
+.is1
+.iz1
+.obi4d
+.ob5it
+.od1
+.po4d5n
+.po4v5s
+.pre6d7n
+.se4k5s
+.si4s
+.st4
+.voz5l
+.voz5n
+.zliz6
+a1a
+a1b
+ab5ba
+ab6rod
+a1c
+ac5ci
+a1[ccaron]
+a1d
+ad2l
+a6dobl
+ad6rl.
+ad6rla
+ad6rob
+ad5ur
+a1e1
+a1f
+af5ga
+af1t
+a1g
+a1h
+a4hm
+ah5mi
+ah5mo
+a1i
+ai2n1
+a1j
+a4j5ek
+a4jf
+aj5fi
+aj5fo
+aj5ha
+aj5he
+aj5im
+aj6imo
+aj3os
+aj6stb
+a5ju.
+aj3u[ccaron]
+aj3ug
+aj5[zcaron]n
+a1k
+ak4s
+a4kst
+a1l
+a1m
+a4mz
+a1n
+an6dga
+an6dhi
+a4nm
+an5mi
+an5zi
+a1o
+ao2b1
+a1p
+a4ph
+a1ra
+ar6dwa
+a1re
+a1ri
+a1ro
+a1ru
+ar5xa
+ar5xo
+ar5xu
+a1s
+a4s[scaron]
+as5[scaron][ccaron]
+a1[scaron]
+a1t
+a4tf
+at4i
+a1u1
+a4uf
+a2uk
+a4ul
+a1v
+av5[scaron]i
+a4v[zcaron]
+av5[zcaron]a
+ay5to
+a1ze
+az5fo
+a4zig
+az3la
+az3le
+az4lil
+az4lit
+az4liv
+a4zob
+a4z3o[ccaron]
+az5ora
+az5oro
+a4zra
+az4red
+az5vp
+a1[zcaron]
+a[zcaron]5mi
+ba6bba
+ban3[ccaron]4
+ba4u
+2b1c
+2b1[ccaron]
+2b1d
+be1
+be4v
+b1h
+bi1
+b1ja
+b4ja.
+b5jel
+b3jem
+b5jet
+2b1k
+b3lep
+b5leta
+b5lil
+b5lit
+b5liv
+b1m
+4bmi
+2b1n
+bo1
+bo6chm
+b5ord
+bo5vp
+b3rab
+b5ras
+b3ra[scaron]
+b3rez
+bre4zg
+bre4zi
+bre4zr
+b5re[zcaron]e
+b3rob
+br6[zcaron]da
+2b1s
+2b1[scaron]
+2b1t
+bu5ki
+bu5ku
+bu5kv
+bu5ry
+2b1v
+b1z
+b1[zcaron]
+2cc
+2ch.
+ch5ma
+2ck
+c1ka
+ck1o2
+c5ko.
+ckov3
+ck1s
+ck5we
+2c1n
+2c1t
+2[ccaron]1b
+2[ccaron]1g
+[ccaron]i1
+1[ccaron]j
+2[ccaron]1k
+1[ccaron]l
+4[ccaron]3let
+[ccaron]5mes
+2[ccaron]1n
+4[ccaron]op
+2[ccaron]1p
+2[ccaron]1s
+4[ccaron]up
+2d1b
+2d1c
+2d1[ccaron]
+2d1d
+dd6voj
+d2e
+6d5elem
+de4min
+de4mn
+de4z3i
+2d1g
+2d1h
+di5ck
+4dind
+d4i5no
+dis1
+di4skr
+di6spr
+2d1j
+2d1k
+5dlet
+d2li
+d5lit
+d5liv
+d1lo
+2d3m
+4d3nac
+4d5na[ccaron]
+4d5nap
+4d3nar
+4dnas
+4d5neb
+d5niv
+4d5niz
+4d5nja[ccaron]
+4d3no[zcaron]
+d2o
+4dob[ccaron]
+4d5obd
+2d3o2f
+do5rd
+do5v[ccaron]
+do5v4z
+2d1p
+d5raz
+d3rep
+dre6pn
+d4rev
+2d1s
+2d1[scaron]
+2d1t
+dteks6
+d4ur
+du5ro
+du5um
+2d1v
+4d3vi
+2d1z2
+e1a
+e1b
+eb4j
+eb6liz
+e1c
+e1[ccaron]
+e4[ccaron]d
+e[ccaron]5de
+e[ccaron]5di
+e[ccaron]5do
+e[ccaron]3le
+e[ccaron]5op
+e4[ccaron]t
+e[ccaron]5ti
+e[ccaron]5to
+e[ccaron]5tr
+e[ccaron]5up
+e2[ccaron]1v
+e[ccaron]6vrs
+e1d
+e4df
+ed5ig
+ed2l
+ed5ob
+ed6obe
+ed6obr
+e4dobs
+e4d3o[ccaron]
+ed5v[ccaron]
+ed5zb
+e1e
+e4ep
+e1f
+e4ff
+ef5fe
+ef5ta
+e1g
+e1h
+e1i
+ei6pzi
+ei2z
+eiz5e
+e1j
+e1k
+ek6mal
+ek6tre
+e1l
+e1m
+e1n
+e1o1
+eob4j
+eob4r
+eo4dl
+eo4z5n
+e1p
+ep5nik
+e1ra
+era6z5l
+era5z4r
+era5z4v
+e1re
+e4rf
+e1ri
+e1ro
+e4rr
+e1ru
+e1s
+es5da
+e5sta
+e5sti.
+e5stih
+e5stil
+e1[scaron]
+e4[scaron]p
+e[scaron]5po
+e1t
+4eth
+e4tin[scaron]
+e1u1
+e1v
+eve6t5l
+ev5ha
+ev6pre
+ev6ste
+ev5stv
+2ew
+ew6ind
+ew5le
+e4wt
+ew5to
+e4yw
+e1z
+ez5dj
+e3z4dr
+ez2g
+ez5gl
+e5zij
+ez6ijo
+ez5imn
+e5zis
+ez6ist
+ez5iz
+ez4l
+ez6lom
+ez6man
+ez4mo
+e4zob
+e4z5or
+ez4re
+e4zt
+e4z5u4m5
+e4z[zcaron]
+e1[zcaron]
+1fa
+fe1
+fe6ljt
+ff5ma
+fi6zlj
+2f1n
+fo6uri
+fre4u
+2f1s
+2ft
+ft5ve
+fu1
+2g1d
+ge6ige
+gel5[ccaron]4
+ge6nj[ccaron]
+gi6tpr
+go1
+go5vz
+2g1t
+gu1
+ha4u
+2h1[ccaron]
+he4i
+2h1k
+4hl.
+h4lo
+2h1n
+h5ren
+2h1[scaron]
+2h1t
+1hu
+hu6ffm
+i1a
+i1b
+i1c
+i4cs
+i1[ccaron]a
+i1[ccaron]e
+i1[ccaron]i
+i[ccaron]5ra
+i1[ccaron]u
+i[ccaron]5vr
+i1d
+4idor
+i1e1
+i1f
+i1g
+4igh
+i1h
+i1i
+ii2n1
+i1j
+i1k
+i4k[ccaron]
+ik5[ccaron]a
+i1l
+il5[ccaron]4k
+4ile
+4ilo
+i1m
+i4mh
+im5hi
+i1n
+1ind
+2ine
+3i4n3os
+1inp
+3inse
+1in[scaron]
+4in[scaron]k
+3intr
+i1o1
+i1p
+i1r
+4ire
+i1s
+is4a
+is6ert
+isis4
+i4skv
+2iss
+i1[scaron]
+i1t
+it5pr
+i1u
+i1v
+iv5jo
+i1x
+i1z
+iz1l
+iz4la
+izli4z
+iz5me
+iz5mo
+iz6ode
+iz5po
+i2zr
+iz1u
+iz6ure
+i1[zcaron]
+j5akt
+2j1b
+2j1c
+2j1[ccaron]
+2j1d
+je4ks4
+2j1g
+2jh
+j1hi
+4jime
+4j5int
+2j1k
+2j1l
+2j1m
+2j1n
+4job
+2j1od
+jod4l
+2jos
+4jo[zcaron]
+2j1p
+2j1r
+jra1
+jraz4
+2j1s
+jsis6t
+2j1[scaron]
+2j1t
+ju1
+2ju[ccaron]
+ju5dm
+2jus
+ju2[zcaron]1
+2j1v
+2j1z
+jz6ves
+2k1c
+2k1d
+ke5ti
+ki1
+2k1m
+1kn
+ko1
+kok4
+ko5kd
+ko6v[scaron]e
+koz6lo
+1kre
+2ks.
+k5sat
+ks1c
+ks1p
+ks4po
+ks1t
+4kst.
+ks6taz
+ks5te
+2k1t
+3ktr
+4ktra
+ku5ro
+k5vip
+la4ir
+la6vz.
+2l1b
+2l1c
+2l1[ccaron]
+2l1d
+le1
+le4e
+le6ipz
+le5me
+2l1f
+2l1g
+lg5[ccaron]a
+2l1h
+l2i1
+li6d[zcaron].
+1liz
+4l5izd
+2lj.
+4ljc
+2lj[ccaron]
+2ljk
+2ljn
+2ljs
+2lj[scaron]
+lju5d6j
+2l1k
+2l1l
+2l1m
+2l1n
+lo1
+1lo[ccaron]
+2l1p
+2l1s
+2l1[scaron]
+2l1t
+lu5ki
+lu5ku
+2l1v
+2l1z
+2l1[zcaron]
+2m1b
+2m1c
+2m1[ccaron]
+2m1d
+me4d5n
+me6dos
+me4dr
+2m1f
+4mind
+4minp
+4min[scaron]
+mi6th.
+2m1k
+2m1m
+m5niv
+mo6[scaron]t.
+mo6v[scaron].
+2m1p
+2m1s
+2m1[scaron]
+2m1t
+m5urn
+2m1v
+my5hi
+2m1[zcaron]
+na1
+5na[ccaron]el
+na4d5nj
+nad5r
+na6dra
+na4dre
+na6dur
+1naj
+na6jak
+na4j5en
+naj3o
+na6jo[ccaron]
+na4j3u
+1nas
+na4v3z
+navze6
+1naz
+naz6or
+2n1b
+2n1c
+2n[ccaron]
+n1[ccaron]a
+n1[ccaron]e
+n1[ccaron]i
+n1[ccaron]u
+2n3d2
+nd5ga
+nd5hi
+n4dm
+ne1
+ne3d2
+1neh
+ne3zm
+nez4v
+2n1f
+2n1g
+n4gh
+ng5ha
+n4gv
+ng5vi
+2n1h
+2nj.
+2njc
+nje4v5s
+2njk
+2njs
+2nj[scaron]
+4njv
+2n1k
+2n1l
+2n1n
+no5rd
+n4ost
+2n1p
+2n1s
+nsis4
+2n1[scaron]
+2n1t
+nteks4
+n4tg
+nt5ga
+nt5ge
+n4tv
+nt5vi
+nu1
+2n1v
+ny5qu
+2n1z
+nz4i
+2n1[zcaron]
+o1a
+o4as
+o1b
+ob5gl
+ob5ide
+ob5jo
+5obla
+5obro
+o4bz
+o1c
+oc5ke
+oc5ki
+o4cr
+o1[ccaron]
+o1d
+od5dv
+od5nal
+o6drep
+od5zd
+o2d1[zcaron]
+o1e
+oele4
+o1f
+o1g
+4ogl
+o1h
+o1i
+oiz2
+o1j
+o1k
+o4kb
+ok5ba
+ok5be
+o4kt
+o1l
+o6l5avt
+ol6g[ccaron]a
+o4lr
+ol5re
+o1m
+o1n
+o1o
+ood4l
+o2ol
+o4om
+o1p
+o4pm
+op5me
+4opy
+o1ra
+or4de[ccaron]
+o1re
+o1ri
+o1ro
+o1ru
+o1s
+5oseb
+ose4m5
+o1[scaron]
+o1t
+o1u
+ou5ki
+ou5ku
+o1v
+ov5sem
+ov5[scaron]k
+o2v1z
+o5vza
+ov3zd
+o1y
+o1z
+oz4b
+ozd5j
+oz4g
+oz5lo
+oz6lo[zcaron]
+oz2n
+oz5nic
+oz5ni[scaron]
+oz2o
+oz2r
+oz2v
+o1[zcaron]
+o[zcaron]5mi
+2p1c
+2p3[ccaron]2
+p[ccaron]5ka
+pe1
+1pe[ccaron]
+pe4kt
+pet3l
+pe4tle
+pe4v5s
+pev5t4
+4phs
+ph5so
+pi5zo
+2p1k
+4ploz
+po1
+po6dfa
+po4d3l
+po4dna
+po4d5o[ccaron]
+po6lob
+po6std
+prez4
+2p1s
+2p1[scaron]
+2p1t
+pz6ig.
+qu2
+3ra[ccaron]u
+2rae
+ra6j[zcaron]n
+rav5z
+ra6vza
+ra4z5id
+3razl
+ra4z5or
+2r1b
+2r1c
+2r1[ccaron]
+2r1d
+re1
+3real
+re6cht
+re5[ccaron]v
+5red[ccaron]
+re6dig
+re6dnju
+re6iba
+re5jo
+re5km
+re6sda
+rev6sk
+re6zna[ccaron]
+re6zus
+re6zve
+r1f
+2r1g
+2r1h
+ri1
+r4in
+ri5n4o
+riz4g
+riz4l
+riz4n
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+ro1
+rob6id
+3rodi
+ro5zo
+2r1p
+r1r
+2r1s
+2r1[scaron]
+2r1t
+r4th
+rt5ha
+ru5kl
+2r1v
+r3v2j
+rv5jo
+ry5an
+2r1z
+rz2l
+r1[zcaron]
+r[zcaron]5da
+2s1b
+1sc
+4sc.
+s2ci
+se4k5sa
+sek5si
+se5ma
+se5vp
+2s1f
+si1
+s4id
+si6gn.
+sis1
+2s1j
+2sk.
+s2kn
+4skre
+s4lav
+s4on
+soni5
+soni[ccaron]4
+1sp
+s4plod
+spod4l
+2s1s
+2st.
+3ste
+s4ten
+4stf
+s4ti[ccaron]
+5stim
+s4tir
+2stk
+2stm
+1str
+s4tra.
+su1
+su4bo
+sve5t
+[scaron]2[ccaron]
+2[scaron][ccaron].
+2[scaron][ccaron]k
+2[scaron][ccaron]n
+[scaron]e2s
+2[scaron]1j
+ta5wi
+taz4
+2t1b
+2t1c
+tch5o
+2t1d
+tek6st
+5tema
+te5xa
+t1f
+4tind
+4tinos
+4tinp
+4tinse
+4t3int
+2t1k
+6tletno
+2t1m
+4tnaj
+to6v[zcaron].
+trt5u
+tr6tur
+2t1s
+2t1t
+tu1
+4tz.
+2u1a
+u1b
+ub4j
+u4bp
+ub5po
+u1c
+u1[ccaron]
+u1d
+ud6mi.
+u1e
+u1f
+u1g
+u1h
+u1i
+u1j
+u1ka
+u1ke
+u1ko
+u1l
+u1m
+u1n
+u1p
+up6[ccaron]ka
+u1ra
+u1re
+4urg
+u1ri
+u1s
+1usp
+u1[scaron]
+u[scaron]e3s
+u1t
+u4th
+uth5o
+u1v
+ux5em
+u1z
+u1[zcaron]
+2v1b
+2v1c
+2v[ccaron]
+v1[ccaron]a
+v1[ccaron]e
+v4[ccaron]er
+v1[ccaron]i
+2v1d
+ve4[ccaron]l
+ve4[ccaron]m
+ve4i
+ve4tin
+vetle6t
+v1f
+v1g
+vi5dv
+vid6va
+1viv
+vi6[zcaron]g.
+2v1j
+4vjo
+2v1k
+2v1m
+2v1n
+vo5rd
+voz5le
+2v1p
+3v2pa
+v4pij
+v4pil
+v5skn
+v5[scaron]ek
+4v[scaron]k
+2v1t
+vt4k
+vz2
+v2za
+3v2zg
+2v3zk
+2vzo
+v3zp
+v2zu
+1wa
+wo2
+x1f
+1ye
+2y1f
+y1j
+y1l
+y1w
+1z2a
+z6ane.
+za5uk
+za3vp
+za1z2
+za5zd
+2z1b
+3zbir
+z1c
+2z1[ccaron]
+2z1d2
+zd5ju
+z3dv
+z1g
+z4gni
+z5got
+2z1h
+1zi
+z1ig
+2z1is
+4z5i[scaron][ccaron]
+2z1j
+2z1k
+z3ku
+z5las
+z1li
+3zlil
+5zlit
+5zliv
+zliz5
+1zlj
+3zlog
+z5lom
+3zlo[zcaron]
+z1lu
+2z1m
+1zn
+1zo
+z1ob
+2z1od
+z1og
+z2ol
+z4om
+2z1p
+1z1r
+4zred[ccaron]
+4zre[scaron]
+4zrez
+4zre[zcaron]
+4zri
+4zru
+2z1s
+z1[scaron]
+z1t
+1zu
+z4uj
+2z1up
+2z1uz
+z1v2
+z4ven
+z3vn
+3z4voj
+z4vok
+2z1z2
+z1[zcaron]
+2[zcaron]1b
+2[zcaron]1c
+2[zcaron]1[ccaron]
+2[zcaron]1j
+2[zcaron]1k
+4[zcaron]mi
+.[ccaron]8
+.[scaron]8
+.[zcaron]8
+8[zcaron].
+8[scaron].
+8[ccaron].
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sv.hyp b/Master/texmf-dist/tex/context/patterns/lang-sv.hyp
new file mode 100644
index 00000000000..6fed3a0b9c9
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sv.hyp
@@ -0,0 +1,29 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: svhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sv'>
+% <sourcefile>svhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Swedish language</title>
+% <copyright>
+% <year>1991,1994</year>
+% <owner>Jan Michael Rynning</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-sv.pat b/Master/texmf-dist/tex/context/patterns/lang-sv.pat
new file mode 100644
index 00000000000..a4aab75ef98
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-sv.pat
@@ -0,0 +1,4723 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: svhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='sv'>
+% <sourcefile>svhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the Swedish language</title>
+% <copyright>
+% <year>1991,1994</year>
+% <owner>Jan Michael Rynning</owner>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.a4b
+.ab5i
+.ab5ol
+.ab3r
+.ac3
+.a4d
+.a3dr
+.ad3s
+.a5g4ra
+.a5gre
+.a5kl
+.a5le
+.al4pr
+.a3lu
+.am4br
+.amp3l
+.a5mu
+.and4rar
+.a2n5es
+.ang4er
+.an5go
+.an5s
+.ap1p
+.as2k
+.a3sket
+.as4t
+.a5sten
+.a3sti
+.a5ta
+.at3t
+.au3st
+.a4val
+.av3s4
+.b4
+.bak5s
+.ben5s
+.bild3s
+.bo2k
+.bort1
+.cis4
+.cy5klop
+.d4
+.d[adiaeresis]r3
+.ek1v
+.e3l4a
+.e2l5in
+.en5st
+.e4n[adiaeresis]
+.e2r3i
+.e2s
+.e5skad
+.es3kal
+.es5kap
+.es4t
+.e5strad
+.e3tr
+.evan5
+.ex3
+.f4
+.feb3r
+.fram3
+.fres5
+.f[aring]gel3
+.f[odiaeresis]r1a
+.f[odiaeresis]r1en
+.g2
+.gu4l[adiaeresis]
+.gus3
+.he2m
+.hu5sa
+.ib4
+.ik4
+.im3p
+.i2n1
+.i4na
+.in3d
+.in4ger
+.ink2
+.in3s2
+.in3t
+.is5ka
+.i3so
+.k4
+.kans4k
+.ko5li
+.kort5s
+.kring3
+.krings2
+.k[odiaeresis]p5s
+.l2
+.lak5r
+.lek5tr
+.lu2st
+.m2
+.mas2ke
+.ma5skeri
+.me4re
+.minis4
+.mj[odiaeresis]lk5s
+.mon2s
+.m[aring]n3s
+.m[aring]4st
+.m[adiaeresis]n5sko
+.m[odiaeresis]rk5r
+.n4
+.ner1
+.no4n
+.n[odiaeresis]d5r
+.oc1ku
+.ok3t
+.o3kv
+.o2ma
+.o2mo
+.om3s4
+.o3mu
+.on4k
+.o3o
+.ord3s
+.o5sc
+.o1s4k
+.o3sl
+.o3stra
+.o3sv
+.o3tr
+.o1u
+.p4
+.papp5s
+.pa3ste
+.pa5sti
+.pi5sti
+.pres2s
+.pub3lika
+.r2
+.re4gr
+.re2ste
+.runs4
+.rym2d
+.r[odiaeresis]ve5
+.s4
+.sa2k
+.seg3r
+.si5o
+.sj[odiaeresis]1
+.sk4
+.skott3s
+.slut3s
+.st4
+.sta2m
+.sten3s
+.string4
+.sup3p
+.t4
+.ta3bl
+.ta4k
+.tak5l
+.tes3ta
+.tig3r
+.til4l
+.ti3o
+.topp5s
+.tred2s
+.tre3s
+.tr[adiaeresis]5k
+.u3k
+.ult5r
+.ung2e
+.up2
+.u4ra
+.ur3s
+.u2t1
+.u4ta
+.u5trer
+.ut5s
+.v2
+.var4t
+.vatten3
+.ved5s
+.v[adiaeresis]2g
+.v[adiaeresis]g3s
+.x2
+.y2a
+.y4e
+.[aring]ng3
+.[aring]r4s5
+.[aring]3st
+.[aring]ter1
+.[adiaeresis]3ro
+.[odiaeresis]3ro
+a2b
+ab4bu
+a5be
+abel4s
+abe2s
+ab1l
+ab3la
+ab3ort
+ab5ric
+ab3rio
+ab4sc
+ab4sk
+a5bu
+ac4kes
+ac4kis
+ack3sk
+ack3u4p
+a5dag
+a5dek
+a5del
+ad5ep
+ad3j
+ad3op
+a5dran
+a3dre
+1adres
+ad3ril
+ad3ru
+ad2s
+a5ed
+af4fo
+3aff[adiaeresis]
+1af3ri
+af4tor
+a1ga
+aga4ra
+a1ge
+a2ge.
+ag1gr
+ag1l
+ag5ord
+ag3ro
+a4gur
+a4hj
+aib4
+a3iv
+a1j
+a3ka
+a4kart
+a5ke
+a1ki
+ak3n
+a1ko
+ak5ram
+akri5s
+ak3rob
+ak4sta
+1aktig
+ak3tri
+a1ku
+a5kvari
+ak3ve
+a5k[aring]r
+ak5[aring]t
+4ak[odiaeresis]
+a1la
+al5adm
+ali2br
+a2lin
+a5lin.
+a3line
+al3ins
+ali5stik
+a4lj
+alk3ak
+al2kv
+al4k[adiaeresis]
+all3st
+al3l[aring]
+alms4k
+a1lo
+al5ort
+als5pa
+al3tr
+al4tu
+al4t[adiaeresis]
+a1lu
+alu5s
+alv3s
+a1ly
+a4maf
+am4i
+am4pr
+am1s
+am3[aring]t
+a3m[odiaeresis]
+ana4bo
+an3alf
+an3ark
+an3c
+anci5
+an5dak
+andel2s
+an4dun
+an4d[adiaeresis]n
+a4nef
+ang4es
+an3gi
+an1gr
+aniu4
+ank3r
+ano2i
+a4nok
+a4nop
+an5sce
+ansis3t
+an4sj
+ans5ku
+ans3li
+ans3par
+an1st
+an4sto
+an4sty
+1ansvar
+an4tj
+an4tre
+a1nu
+a5ny
+a3n[odiaeresis]
+a1o
+a1pe
+a2pe.
+ape4n3
+a1pi
+ap4lan
+apo3str
+1appara
+apps4k
+ap3ric
+ap3rif
+a5pris
+ap2s
+ap3se
+aps5l
+aps3p
+apu5s
+a5py
+a5p[adiaeresis]
+2ara
+a4rann
+a4rarv
+1arb
+4arbi
+2arbo
+4arbr
+ar3dr
+ard5st
+a4rend
+arg5si
+2arh
+a1ri
+a4rigen
+ar3ka
+ark3lan
+ar5kr
+4arl
+4arn.
+ar4nal
+a1ro
+a2rob
+4arp
+ar2sa
+ar5skal
+arsk5l
+ar2sv
+ar4tro
+arts5p
+ar4tur
+4aru
+a4rur
+a5rus
+ar4v[adiaeresis]g
+a3ry
+a3r[adiaeresis]
+2asa
+asbe4
+a1sc
+as2h
+asis5t
+as3kis
+a2sko
+a4skr
+as3ku
+as5l
+as3pa
+as3pig
+as2sk
+as2s5op
+as2sp
+as2st
+ass5up
+as3ta
+a5stard
+as5ter
+as5tiker
+asti5o
+as3to
+as4tr
+ast5rak
+a5stral
+ast3rol
+as5t[odiaeresis]r
+a3su
+a4sul
+a4sund
+as2ut
+as3v
+a1sy
+a2s5[aring]
+a2s[odiaeresis]
+a1t
+ata5ra
+a5te
+ati5[odiaeresis]
+a4tj
+a2tr
+a3tral
+4atrar
+a4t3re
+at3ria
+a3tric
+at3rie
+a5trik
+a3tris
+a3t4ro
+a4tro.
+at4ska
+1attac
+at2tak
+at4tj
+at4tos
+att3s
+a4tung
+2au
+au5b
+au2t5a
+3autom
+aut5s
+2a1va
+a4vart
+1avg
+2a1vi
+av3r
+4a3v[adiaeresis]
+a5[aring]
+1b2
+3ba
+ba4di
+ba4do
+bad3s4
+bak5l
+ba4ko
+ba4ku
+bank5l
+bas4ta
+ba5stu
+4bb
+b4bak
+b4batt
+bbb4
+bb3l
+bb4ler
+b4b3r
+bb4so
+4b3d
+3be
+be3d4r
+be5e
+be1k
+4beld
+be5lu
+be3ly
+be3l[aring]
+be5l[odiaeresis]
+beng4
+be3n[aring]
+be1r[odiaeresis]
+be1s
+be3sl
+bes5s
+be4sta
+be4ste
+be5su
+be3tr
+be3tv
+be3u
+4bex
+2b3f
+2b5h
+3bi
+bi3d4
+4binv
+bis3ko
+bi5skv
+b3je
+b3k
+b5lar
+b5lat
+ble4mo
+b5len
+5blera
+3bles
+5blid
+3blikr
+3bliks
+4b3m
+2b3n
+3bo
+bo4gr
+bo2kl
+bo1mu
+5bon
+bors5te
+bor4ti
+bort3r
+borts2
+bort3sl
+bo1s
+bo4sc
+boy5
+4b3p
+2b5raf
+4brar
+2b5rati
+3brik.
+b3rika
+3brike
+3briks
+b5rik[odiaeresis]
+bru4st
+3bry
+3br[odiaeresis]
+4b3s
+b5sce
+bs3ch
+b4slan
+b4sof
+b4sp
+bst4
+b4stj
+4b3t
+3bu
+bund4s
+bus2st
+b3v
+3by
+by5r
+3b[aring]
+b[aring]ng3
+b[aring]t2s
+3b[adiaeresis]
+3b[odiaeresis]
+b[odiaeresis]r2s
+c2
+5cap
+c3c
+1c4e
+cens3t
+3centr
+ceu4s
+4ch.
+3chau
+3chef
+5choc
+4cht
+ch[adiaeresis]s3
+ch[odiaeresis]r4
+1ci
+ci4lu
+cim2
+cipp4
+4ck
+c3ka
+c3ke
+c3ki
+ck5j
+ck1l
+ck5lis
+ck3n
+c3ko
+c4kordn
+ck3org
+c4kort
+ck3r
+ck4re
+ck3sla
+ckus2
+ck3va
+ck3ve
+ck3v[adiaeresis]
+ck5[adiaeresis]
+ck3[odiaeresis]
+cle2a
+co2a
+co4m
+4cr
+cros2
+4cs
+1cy
+1d
+3da
+5da.
+4dadr
+dags3
+2dak
+5dako
+da3li
+5dam
+da3m[aring]
+4dand.
+4d1ap
+4darb
+4dart
+da4tr
+dat5t
+4dax
+2db
+4dc
+dcen3
+2dd
+ddd4
+ddi4s
+d3dj
+d4dos
+dd3ra
+dd3re
+dd3ri
+d3dr[adiaeresis]
+dd2s
+dds3v
+3d2e
+de1k4
+4deko
+4deld
+del2sa
+dels5ti
+de5lut
+d4en
+denti5[odiaeresis]
+den2to
+de3pr
+5der
+der1k
+de2ro
+de5rol
+der5sti
+de4ru
+de2s
+de3se
+de3sp
+des3ti
+d4et
+de3tr
+4dex
+2d1f
+df[odiaeresis]3ra
+2d1g
+d3gl
+2d5h
+3di
+dias4
+di5el
+di2gr
+di3ka
+di5ku
+4dinf
+din3g4o
+4dinr
+4dins
+2dinsp
+4dint
+di1o
+di4od
+di3sc
+di4sj
+dis3ko
+dis1kr
+dis1p
+dis5to
+dis3tra
+di4tre
+2dj
+d3jor
+djup5p
+3djur
+2d3k2
+4d5l
+2d1m
+2d1n
+3do
+d2ol
+do5lo
+4domr
+dom2sk
+5don
+do4pak
+4d5ord
+4dori
+4dort
+d5ost
+do3y
+2d1p
+2d2r2
+d3rad
+3d4rag
+d3rand
+d5rarb
+d5rassera
+d5ratu
+3drej
+d3ren
+5dres
+d3ret
+d4ric
+3drif
+d3rig
+4d5rik
+d3rin
+3d4riv
+d5roc
+3dropp
+d3ror
+4drot
+drotts3
+d3r[adiaeresis]kn
+3dr[adiaeresis]kt
+5dr[adiaeresis]n
+d3r[adiaeresis]t
+d5r[odiaeresis]d
+4ds
+d2s1an
+d2se
+ds5enh
+d4sf
+d2si
+ds3ins
+d2sj
+dsk2
+d3skef
+ds4ken
+d3ski
+ds3kl
+ds5kn
+ds1l
+ds4lot
+ds4mo
+d4sm[aring]
+ds5n[aring]
+d2so
+ds3pl
+ds3s4
+ds3tal
+d5stat
+ds4te
+dste4a
+d5stig
+ds3tin
+ds5tro
+d2su
+ds1v
+d2s[odiaeresis]
+2d3t
+3du
+dub3ble
+4dup
+du1s
+du2sc
+du4ste
+du5s[odiaeresis]
+4dut
+du4vu
+2d1v
+d3vr
+2d3w
+3dy
+dy4kan
+dy4ro
+4dz
+5d[aring]g
+2d[aring]s
+4d[aring]t
+4d[adiaeresis]g
+d[adiaeresis]2r
+3d[odiaeresis]
+d[odiaeresis]ds1
+4d[odiaeresis]g
+4d[odiaeresis]p
+d5[odiaeresis]st
+d[eacute]4
+e1a
+e2ake
+e4am
+4eb
+e2br
+eb3ril
+4ec
+e3ch
+echiff5
+ecis4
+e3co
+e2d
+e4dans
+edd4r
+edi4u
+ed3j
+e5dral
+ed1sk
+ed2sko
+ed3s2l
+edso4
+e3d[aring]
+e1e
+e2ed
+e4ei
+ee2k5
+e4en.
+e4ene
+e1f
+ef4s
+3efte
+e1g
+e3ga
+e3ge
+ege2l
+eg1l
+eg2ler
+e3glera
+e5gleri
+e4gran
+eg5rat
+eg3rin
+e5gru
+egs3
+e5g[aring]
+eig2
+ei5gn
+e3ik
+e1in
+ei5sh
+e1isk
+e1jo
+e3ju
+e3j[adiaeresis]
+e5j[odiaeresis]
+e3ka
+e1ki
+e1kl
+ek3lat
+ek4le
+ek3n
+e1ko
+ekord5s
+ek3orr
+ek4ret.
+ek5ro
+e1ku
+e1kve
+ek5vis
+e1ky
+e1k[adiaeresis]
+e1la
+el1akt
+el4arb
+3eld.
+eleb3r
+elekt3ri
+el4fra
+eli5ku
+el3k4
+el3li
+ell3s
+el3l[adiaeresis]
+e1lo
+e4lob
+el3p
+el2si
+el5ug
+e5luv
+2e1l[adiaeresis]
+e1m
+e5mat
+e5mis
+emon1s
+em5ort
+emp5le
+en5art
+e2nav
+en4ce
+e4ned
+e4nek
+ene3r[odiaeresis]
+2enj
+en5klo
+en3kn
+en5kr
+en5k[adiaeresis]
+enning5
+ennings2
+eno2m
+en3si
+ens5ke
+ens2m
+en2sp
+ens4te
+ens4vin
+en4s[aring]
+ent4ha
+en2t1r
+ent4rat.
+ent3rati
+ent3ri
+ent5ru
+e5nus
+2eny
+2e1n[adiaeresis]
+e1o
+e2og
+eo4i
+e5or
+2ep
+e1pe
+e1pi
+e3pla
+ep5le
+epp2s3
+epps5t
+e1pr
+ep3s
+ep4tr
+epu3b
+e3p[aring]
+er1ak
+4eras
+er3d4
+erg4l
+er4gu
+er4g[aring]s
+e1ri
+e5rib
+e4rinf
+erings3
+eri5stik
+erk4lin
+erl[adiaeresis]4
+er5na
+e1ro
+e3rob
+e2rom
+erp4
+er3ra
+er5sc
+ers4ken
+er3sl
+ers4le
+er4sta
+er2ste
+er3str
+er3sv
+e1ru
+e5rum
+e3ry
+e5r[aring]d
+e1r[adiaeresis]
+e2sal
+es5all
+es3arm
+e1sc
+2ese
+es4hi
+esi4u
+es2k
+e4skan
+es5kar
+e4s3ken
+es3ker
+es5kul
+e1sl
+e5slag
+es2mi
+e1sp
+es3pl
+es2sk
+ess5l[adiaeresis]
+es2st
+e3stal
+es5ten.
+esti2ge
+es3tin
+es5tor.
+es4tr
+est5rer
+e3stru
+est4r[odiaeresis]
+e3st[aring]
+es2u
+e1sy
+eta3b
+e5ti
+eti3[odiaeresis]
+e1to
+e5tri.
+et3ris
+e5tr[adiaeresis]
+et2s
+ets2ad
+ets3kr
+ets1l
+ets3m
+ets5pa
+et4sv
+ett3r
+e1tu
+etu4ri
+et4va
+et5vu
+e1ty
+2etz
+e1t[adiaeresis]
+et[adiaeresis]c4
+euk4
+e5um.
+e5up4
+4eur
+eu4se.
+eu5tro
+e1v
+e4varm
+e4vj
+ev3r
+3exp
+ext4r
+4e[adiaeresis]
+f2
+3fa
+fac4
+fac5ke
+4fans
+4farb
+fa3sh
+fa4st
+fa4t[odiaeresis]
+4fav
+4f3b
+f3d
+3fe
+4fef
+fe2l
+fes5ta
+fe3sto
+4fex
+2f1f
+fff4
+ff3l
+ff3n
+f3fo
+ff3r
+ffs4
+f3f[adiaeresis]
+ff[odiaeresis]5re
+f3g2
+f5h
+3fi
+fi2br
+fib5rig
+fi3li
+fin5sm
+fi3skal
+fisk3r
+fi2ti
+2f3k
+1fl
+flo4da
+4f3m
+fma4
+1fo
+4fof
+fol2
+folk1
+2f5om
+fo2na
+for4mo
+fost3r
+4f3p
+fra2m
+fram5p
+f4rer
+5freri
+fre4s
+f4ri.
+fri5sp
+5frit
+fros5ta
+fru5str
+fr[aring]n5
+2f3s
+fs2k
+f4sl
+f4sm
+f4sn
+f4sp
+f4st
+f4sv
+2ft
+f3ta
+f4taf
+f4tak
+f4tap
+f4tarm
+fte4r
+f4tex
+f3ti
+f4tin
+f3to
+f4t3r
+ft2sa
+ft4set
+ft2s5i
+ft4sj
+fts4t
+fts5v[adiaeresis]
+ft5t
+ft1v
+3fu
+furs5te
+fu5ru
+fu3tu
+4fv
+5fy
+fy4ma
+f[aring]3t[odiaeresis]
+1f[adiaeresis]
+f[adiaeresis]s5ti
+3f[odiaeresis]
+f[odiaeresis]2ra
+f[odiaeresis]2ren
+f[odiaeresis]2ri
+f[odiaeresis]r3k
+f[odiaeresis]r3sm
+f[odiaeresis]r3su
+f[odiaeresis]rt4
+f[odiaeresis]r1[odiaeresis]
+ga5br
+3g2ag
+4gakt
+3g2al
+gall3s
+ga5l[adiaeresis]
+ga4no
+2garb
+4garm
+ga2ro
+4gart
+ga4st
+ga4su
+5g2ati
+gaus4
+g4av
+g5avsn
+4gax
+2gb
+2gd
+g3d4r
+ge2a
+ge5b4
+2gef
+2ge4j
+g2eli
+3gelis
+gel5st
+gel5y
+3gel[adiaeresis]
+gel5[adiaeresis]n
+g4em
+ge4nap
+gen5g
+3g2eni
+3genj
+4genm
+genom5
+gen4sa
+g4ense
+1g2ent
+4genv
+ge5ny
+3gen[adiaeresis]
+ge2o
+1g2era
+4gerarb
+3g2eri
+gers5n
+5gese
+ge4to
+get5s
+5g2ett
+2g1f
+2gg
+g1ga
+g4gap
+g1ge
+gg5g
+gg1l
+g4gos
+ggs4la
+ggs4m
+gg3s4t
+gg3s4v
+g4gu
+2gh
+gh4te
+1g2i
+gi1o
+gi5sn
+gi4ste
+gis4tr
+gi5stral
+gi5st4rat
+3giv
+gi2[odiaeresis]
+g2jo
+3gjor
+g3j[adiaeresis]
+2g3k2
+2gl
+g4lans
+g1lar
+g2las
+5glase
+glas5k
+5glas[odiaeresis]
+g4lid
+4glj
+g4l[odiaeresis]g
+5gl[odiaeresis]m
+2g1m
+2g1n
+g4nag
+g2no
+1g2o
+3go.
+3gol
+gon3s4
+4gont
+2gord
+4gorm
+4gort
+go3sl
+2g1p
+g2r4
+3graf
+5gral
+gra2m5
+5grans
+4gras
+5grec
+5grett
+g3rig
+4g5rik
+5grip
+3gris
+g5roi
+gro2v
+4grum
+grus5t
+g4r[aring]
+5gr[aring].
+gr[adiaeresis]4n
+5gr[adiaeresis]ns
+2g2s
+gs1an
+g5satt
+g3sel
+g4sf
+gsi4d
+g3sju
+g5skaf
+gs4ki
+gs3kn
+gs4kot
+g3sky
+gs1l
+gs1m
+g4sme
+gs3n
+gs4ni
+gs4n[odiaeresis]
+gs1or
+gs3pl
+gs3po
+gs4por
+gs5pre
+gs3pu
+gs3s
+gs3tak
+gs3tal
+g3stark
+gs4ten
+g3stif
+gs3till
+gs3tj
+g3stol
+gs3tra
+gst4re
+g3st[adiaeresis]m
+g4sug
+gs1v
+g4s3ve
+gs3vi
+gs3v[aring]
+gs3yt
+gs1[adiaeresis]
+2g1t
+g3tr
+1g2u
+4gug
+guld3
+gul4da
+4gul[adiaeresis]
+gu2ma
+4gup
+gu5ru
+gus4k
+2gut
+g3utb
+2g1v
+4gw
+3gy
+gytt3j
+1g2[aring]
+g[aring]rds5
+2g5[aring]ri
+g4[adiaeresis]l
+g2[adiaeresis]r
+g[adiaeresis]4s
+1g2[odiaeresis]
+4g[odiaeresis]g
+g[odiaeresis]5ro
+2g5[odiaeresis]rt
+1h
+ha3bl
+ha5ge
+ha4li
+hal4so
+halv3[aring]
+ham4st
+handels3
+hands4l
+han5g2a
+ha5ra
+ha4sc
+ha4sp
+hasp5l
+has3t
+hav2
+havs3
+h5c
+4hd
+he4at
+he4fr
+he4l[adiaeresis]
+hets1
+hets3t
+hets3v
+h3g
+h2i
+4hir
+his2sk
+hi4t
+hj[adiaeresis]l3s
+h1k
+2hl
+h4le
+2hm
+4hn
+h2na
+h2nit
+ho5nu
+hop5plo
+hop3s
+hos3p
+hos5ti
+4how
+h3p
+h5ru
+h1s
+2ht
+hu2s
+hust5r
+hyg5r
+hys4t
+hys5ta
+hy3ster
+h[aring]rd5s4
+h[adiaeresis]ll2
+h[adiaeresis]lls1
+h[adiaeresis]lso3
+h[adiaeresis]4ri
+h[adiaeresis]4s
+h[adiaeresis]4var
+h2[odiaeresis]
+h[odiaeresis]2g
+h[odiaeresis]5gen
+h[odiaeresis]g5r
+h[odiaeresis]rn5s
+h[odiaeresis]4s
+h[odiaeresis]st5r
+i1a
+ia3fr
+ia3g
+ia4lu
+ia4sk
+ia3tr
+i2b3l
+i5bril
+i3ca
+i4ce.
+i5cha
+ic4kord
+ick3u4
+i5co
+i2d
+iden3s
+id4ge
+i4dom
+id1r
+id3ro
+id2s
+ids3v
+i4dun
+i3d[aring]
+i4d[odiaeresis]
+2i1e
+ifes4
+i5fn
+i1fr
+3ifr[aring]n
+i1g
+4igan
+i2geb
+ig5ej
+ig1l
+ig3no
+i3i
+i4kart
+i1ki
+i3klo
+ik5l[adiaeresis]n
+ik3n
+i1ko
+ik3re
+i5krob
+ik5rof
+ik5ros
+ik5s2h
+ik5skor
+i3kul
+i3kum
+ik5u4t
+ik1v
+i3ky
+i3k[aring]
+i3k[odiaeresis]
+i1la
+il4dan
+i2lin
+il1j[odiaeresis]
+il5k
+il5lak
+il4lik
+ill3s2
+3illu
+il5l[adiaeresis]r
+il2min
+i1lo
+il2tj
+i3lu
+ilufts5
+i4lup
+i5l[adiaeresis]
+im2b3r
+im5sm
+im4so
+i1mu
+i5m[aring]
+i3m[adiaeresis]
+i5m[odiaeresis]
+i4nau
+ind5sk[adiaeresis]
+ind5sti
+1indu
+in4ga
+in4ge.
+ing4es.
+ing5is
+in5glas
+ings5te
+i3ni
+i4nif
+in5j
+in5kve
+1inneh
+5inre
+1inri
+3inr[adiaeresis]
+in4sem
+in3skr[adiaeresis]
+in3sl
+ins4m
+in3sn
+1inspe
+5inspeln
+in5spr
+3instink
+3instru
+in4st[aring]
+in5te
+1intr
+in4tra
+int3s
+i1nu
+i4nun
+in3ym
+i1n[adiaeresis]
+i5oc
+i1og
+i3ok
+io4kr
+i1ol
+io5li
+i5om
+ion2
+i3ono
+ions3
+i1op
+i1or
+i1os
+i1ot
+i1pe
+i1pi
+ipos4
+ip5pi
+i3ra
+i4res
+i1ri
+irk5l
+i1ro
+iro3p
+i1ru
+i5sce
+isel4
+is2h
+i2sk
+is5kep
+isk5na
+is3kopa
+is3ku
+is4kun
+is3ky
+i5slam
+is3l[adiaeresis]n
+is3m
+is3n
+i2s3p
+is4pri
+is3sa
+is3se
+iss5n
+is4s3tr
+iss3t[adiaeresis]
+i1stal
+i1stans
+ist5att
+is5ten.
+i1stent
+is4tes
+is3tig
+is5ting
+is5tor.
+is5tore
+ist5ro
+ist[aring]4
+is5v
+i3sy
+i4s[aring]
+i1t
+it5c
+i4tei
+i4tex
+i4tj
+it5ran
+i5trin
+i3tris
+it2t5op
+it4t3r
+it4tu
+i2t5[aring]
+4i1u
+i1va
+i2vak
+i1vi
+i4vin
+iv3r
+iv2s
+i1v[aring]
+ix2t
+ix5tu
+i1[odiaeresis]
+1ja
+3jakt.
+4jarb
+jas5p
+2jb
+2jd
+jd3r
+jd4sty
+j4du
+1je
+je2a
+5jef
+je5sta
+2j1f
+4j3g
+4jh
+1ji
+4jin
+4jk
+j4kl
+j3ko
+jk3v
+2j1l
+2jm
+2j1n
+j2o
+3job
+jo4kr
+4jolj
+jo5l[odiaeresis]
+jor4din
+jord3s4
+3jou
+4jp
+j5pl
+2j3r
+2j1s
+j5sa
+j4sk
+js4me
+js4te
+2jt
+jts4
+2j2u
+ju4kos
+juk3s
+jul3k
+4jur
+jus5kr
+juss4
+jus4t
+jus5ta
+jut4sta
+j[adiaeresis]5lo
+j[adiaeresis]l4p5r
+j[adiaeresis]l4sa
+j[adiaeresis]rn3sk
+j[adiaeresis]r5s
+j[odiaeresis]r2s
+j[odiaeresis]s4t
+5j[eacute]
+1k2a
+3ka.
+3kad.
+3kade.
+ka4dr
+2kaf
+5kaf[adiaeresis]
+ka3i
+ka5ju
+2kak
+k3akti
+4kalf
+4kalg
+kal4lo
+kall3s
+3kamp
+3kamr
+3kan.
+4kand.
+5kano
+2kap
+3kapi
+ka5pla
+kap4pr
+kaps5t
+5kapten
+3kar.
+ka3ra
+4karb
+k5arbet
+ka5ri
+4kark
+3karna
+4karp
+karp5s
+4kart.
+4karte
+4karv
+3kas
+ka4sk
+kas3ti
+3kat.
+3kats.
+4kau
+2kb
+4kc
+2k3d4
+kdom4
+1k2e
+3ke.
+2ked.
+2keda
+ke3dr
+ked4s
+ke4er
+2kefu
+4keld
+kels4
+4kense
+ke5n[aring]
+2kep
+3kern
+ke2s
+kes3s
+4kex
+2k1f
+kf[odiaeresis]2
+kf[odiaeresis]3ri
+2k5g4
+2kh4
+kid3s
+4kif
+1kig
+kik4s
+kilt4
+5kim[aring]
+king3r
+4kinne
+4kins
+2kint
+ki4nu
+ki4tr
+kiv3s
+4kj
+5kjol
+k3j[adiaeresis]
+2k3k
+kl2
+1klag
+k2lama
+kla4mi
+3klang.
+3klass
+2klat
+5klav
+2kle
+k2lej
+2klig
+k2lim
+3klip
+k2lis
+5klist3r
+k5lock.
+5klocka
+3klos
+1klub
+4kluk
+1kl[adiaeresis]d
+2k3l[adiaeresis]g
+2k1m
+2k2n
+k4nal
+3k4nap
+5knip
+3k4niv
+3k4nu
+k4ny
+k5nyk
+k2o
+4koc
+ko5de
+k5odl
+kog3n
+ko4gr
+kog4s3
+4kola
+ko2lin
+4kolj
+kol5tr
+5kolv.
+1kom
+3komm
+5komp
+2k3omr
+kom4s
+1kon
+3konf
+3konst
+3kont
+ko3nu
+1kor
+3korg
+ko3ri
+2korr
+3korres
+5kortera
+ko5s4k
+ko3sl
+3kost
+ko4str
+4k3ou
+2k1p
+k2r4
+3kraf
+5kra3ge
+4krang
+5krera
+k4reten
+krid5s2
+1krig
+krigs3
+krings2k
+4kriv
+3kropp
+kropps5
+kru5stad
+k3ryg
+kr[aring]k5s
+kr[aring]4pa
+k5r[adiaeresis]dd.
+kr[adiaeresis]k5l
+4kr[adiaeresis]l
+k3r[adiaeresis]t
+2ks
+ksaks5
+k2s5as
+ks3ch
+k4ser
+ks2k4
+ks3kl
+ks5kra
+ks5kv
+k3sk[adiaeresis]
+k3sk[odiaeresis]
+k5slag.
+ks2li
+k5sly
+k2so
+ks3pl
+k1s4t
+kstavs3
+ks5tid
+k2su
+4k1t
+k4tex
+kti5ge
+k4tinn
+k2tins
+k2tod
+k2tom
+k2tr
+kt3re
+kt3rin
+k5trod
+kt5rog
+kt3rol
+kt5r[adiaeresis]t
+kt2st
+kt5t4
+k4tug
+k2tut
+k4t[adiaeresis]l
+4kug
+k5ugn
+ku5la
+4kuld
+3kul[odiaeresis]
+kum5pl
+kungs5
+5kunn
+ku4pen
+ku4ro
+3kurs
+3kus
+kust3a
+kv4
+3kvali
+k5vare
+3kvarn
+kvar3s
+3kvart
+k4vato
+k2ve
+2kvente
+1kvinn
+5kvire
+k4vo
+k1v[aring]
+3kv[adiaeresis]ll
+k1v[adiaeresis]r
+kydds3
+ky4lin
+3kyrk
+k[adiaeresis]l4m
+5k[adiaeresis]mp
+5k[adiaeresis]nn
+3k[adiaeresis]ns
+3k[adiaeresis]rl
+4k[odiaeresis]g
+k[odiaeresis]ks5t
+5k[odiaeresis]p.
+k[odiaeresis]r4l
+k[odiaeresis]r4sl
+3la.
+1lade.
+2ladm
+4ladr
+2laf
+3lagd.
+la4gin
+5lagm
+lag3r
+2lak
+5lakan.
+5laki
+3laktis
+la5lo
+3lande.
+lan4di
+2lappara
+2larb
+1larn
+lar5s
+4lart
+las3h
+4lask
+la4st
+5laste.
+1lat.
+la5tr
+lat4tis
+2lau
+2lav
+la5vu
+2lb4
+4l1c
+2l2d
+lder4s
+l3dj
+ld3ra
+l5dry
+lds4an
+1le
+3le.
+le4ge.
+le5ig
+le2kl
+le4kv
+lem4s[odiaeresis]
+2l5enl
+3ler.
+ler5k
+3lern
+ler3ste
+le5s2l
+le5t[aring]
+le3um
+le4vu
+2lex
+2l1f
+2l1g
+l2gj
+l3g2l
+lgs4
+lg5st
+2lh
+1li
+li5ch
+3lif
+3lig
+li4go
+lig3s
+lik2l
+li5kli
+lik3s
+5limer
+2lind
+2linga.
+ling5o
+4lingr
+lings5t
+2lini
+5linj
+2lint
+li1o
+2lip
+lis3c
+li4sta
+li3str[odiaeresis]
+li4vo
+livs1
+l2jak
+4l1jo
+1lju
+l5j[aring]
+l1j[adiaeresis]
+l3j[odiaeresis]r
+2l1k
+l3ke
+l5kju
+l2kl
+lk5lag
+l5kl[adiaeresis]
+l2kr
+l3k4ra
+lk3t
+l1la
+lld4
+ll3dr
+lle5b
+ll3k
+ll1l
+l1lo
+llok5v
+ll3p
+ll4san
+ll2se
+ll3ska
+ll2so
+ll4sva
+ll4tig
+ll3tr
+l1lu
+ll5un
+llust3ra
+ll5v
+l5ly
+ll[adiaeresis]ggs5
+l5l[odiaeresis]d
+ll[odiaeresis]r4
+ll5[odiaeresis]rt
+4l1m
+l4mol
+lm3st
+l1n
+lo2af
+loc4ku
+4lodl
+lo4do
+lod3st
+lo2ge.
+2lolj
+2lom
+4lord
+2lorg
+lor4s
+lo4vo
+l4pak
+l1pe
+l1pi
+l5pla
+lp5l[odiaeresis]
+lp4st
+4l3r
+2l1s
+l2sc
+l4sjo
+l4sj[adiaeresis]
+l2sk
+l4skensv
+l3ski
+lsk3n
+l5skot
+l3skr[adiaeresis]
+l3sky
+l3sk[aring]
+lsk[aring]4p
+l3sk[adiaeresis]
+l3slu
+l4sm
+ls4mo
+ls5nyt
+l2sp
+l3spe
+ls3pl
+ls3pol
+ls5s
+l2st
+l3sta
+l4stak
+ls4te
+ls5ter
+l3sto
+l3sty
+l4styg
+l3st[aring]
+l3st[adiaeresis]
+l5st[odiaeresis]
+l2su
+l5sur
+l2sv
+l4svi
+ls5vid
+l4s[aring]
+4l1t
+lta2tu
+l4tef
+l4tif
+l4tih
+l4tos
+lt5rati
+l4tret
+l4tr[odiaeresis]
+lt5sk
+ltu4
+lu5i
+luk4to
+4lull.
+2lun
+lung3
+2lupp
+lu4pu
+lus2s5p
+5lust.
+4lutb
+4luts
+2lv
+l1va
+l4varm
+lvers4
+l1vi
+l4vos
+lv3ri
+lv3sp
+l1v[adiaeresis]
+lv[adiaeresis]v4
+lycks5t
+ly4gat
+lyg3r
+lyg3s2
+3lyste
+5lystn
+ly4str
+2l[aring].
+l[aring]g3s
+1l[aring]ng
+l[aring]ng3s
+l[aring]4sk
+l[aring]s5te
+l[aring]4st[aring]
+4l[adiaeresis]c
+l[adiaeresis]g5r
+1l[adiaeresis]nds
+5l[adiaeresis]ngder
+l[adiaeresis]4san
+l[adiaeresis]4sp
+l[adiaeresis]tt3s
+4l[odiaeresis]l
+4l[odiaeresis]m
+3l[odiaeresis]n
+3l[odiaeresis]rer
+1l[odiaeresis]s
+l[odiaeresis]4v[adiaeresis]
+3l[eacute]
+1ma
+ma5fr
+mag5n
+mag5s
+ma5ju
+mak3r
+ma3li
+mand4
+mang2a
+man5g4o
+ma5ni
+mani1k
+5ma3ri
+mash5
+mas3ko
+mask3ro
+ma5sk[odiaeresis]
+mas3ti
+mas4v
+2mb
+mb4sk
+2mc
+2md
+m4dat
+m4di
+m4do
+m3d4r
+1me
+2meds
+me4du
+me4kl
+me4ko
+4meld
+melo5
+me5lu
+men5k
+me5nu
+me5ny
+mer2sko
+me4so
+mes4t
+me3sti
+2meta
+me5trin
+met3ro
+meu4
+2mex
+2m1f
+m4fes
+m4fn
+2m1g4
+2mh
+1mi
+mid3s
+mi4lu
+2mind
+ming4o
+4mink
+min4kr
+4minv
+mi3n[odiaeresis]
+mis2
+mi5sf
+mi4sp
+miss3t
+mi4te.
+mi4tr
+mitt3s
+2m1k
+2m3l
+2m1m2
+mme5d
+mm3s4
+m4mul
+2m1n
+m2nam
+mnas3t
+m4nav
+mn5dr
+mn3g4
+mn5st
+mn5tu
+m2n3[aring]
+1mo
+m4od
+mo4i
+2momr
+mo3na
+mos3k
+mo2ta
+mo4tin
+mo4tu
+mot3v
+2m1p
+m2pak
+m4part
+m2pl
+mp3lad
+m5plane
+mp3lat
+mp3lin
+mpos4
+mp5p4
+mps4k
+mp5sp
+m4p[aring]
+2m1r
+4ms
+m4sal
+m4ske
+m3slag
+ms3l[adiaeresis]
+ms2m
+mste2
+m1sto
+m2str
+mst3rin
+ms5[adiaeresis]p
+2m1t
+4mud
+mulls3
+mult5r
+5mum
+4mun3g4
+mun4ko
+3mur
+3musi
+mu3sta
+mut4sl
+2m3v
+1myn
+mys4te
+m[aring]g4
+1m[aring]l.
+5m[aring]let.
+5m[aring]n.
+4m[aring]r
+m[aring]1s
+4m[adiaeresis]g
+m[adiaeresis]k3
+1m[adiaeresis]n
+m[adiaeresis]ns4
+3m[adiaeresis]rk
+1m[adiaeresis]s
+m[adiaeresis]s5ta
+1m[adiaeresis]t
+m[odiaeresis]4bl
+m[odiaeresis]4gen.
+3m[odiaeresis]j
+m[odiaeresis]r4kl
+3m[odiaeresis]s
+4m[odiaeresis]v
+1na
+3na.
+3nad
+nads3
+2naf
+na5gr
+2nak
+3nako
+3nakr
+na3kro
+n1akt
+2nalf
+5nalfl
+4nalg
+nal3s
+na2lu
+n5amb
+5namn
+4nand.
+4nanv
+na4rap
+2narb
+2nark
+4narm
+2nart
+nast3r
+2nb4
+2n1c
+n2ch
+n3cha
+n3che
+n3chi
+ncis4
+ncyk3l
+2nd
+n4dak
+n4dav
+nd3d4
+n5de
+nde3s
+n4dil
+nd5rak
+nd5ras
+nd3rat
+nd3ri
+n5dril
+n3drop
+nd5ros
+nd5skal
+nd3sn
+nds3or
+nds5v[adiaeresis]
+nd5[aring]s
+1ne
+3ne.
+ne4di
+5nedl
+ne4d3r
+ned3s
+ne4d[odiaeresis]
+ne2gr
+ne5gres
+4nek.
+ne5ly
+4nenl
+ner5sm
+nes3s4
+ne4sta
+ne5s4ti
+ne3tre
+ne1ut
+2nex
+2n1f4
+nfalls5
+nfis3
+2ng1
+n4gar
+n4gen.
+n4gend
+n4gens
+n4genti
+n4germ
+n4get
+n2gi
+ng3ig
+ngi4s
+ng4ly
+n2go
+ng5om
+ng3or
+ng3rad
+n4gr[odiaeresis]
+ng4ser
+ngs1k
+ngs3pa
+ngs5tim
+ngs3val
+n4g[odiaeresis]d
+2nh
+1n2i
+4nid
+ni5ec
+ni4ki
+ni5li
+3nin
+nings1
+nings3k
+nings5v
+ni1o
+4nip
+nip4pr
+ni5steri
+nist3ra
+ni3t4r
+niv5sk
+niv5st
+2n1j
+n4jar
+n3jun
+nju4s
+n3j[adiaeresis]
+2nk
+n4kart
+n1ki
+n4kis.
+n3kny
+n1ko
+nkrafts5
+nk3ri
+n1kro
+nkrus4
+nk5sl
+nk3sp
+nk4tin
+n1ku
+n1k[odiaeresis]
+2n1l
+2n1m
+2n1n
+nn3d
+n3ne
+nnis4
+nn3k
+nn3s4t
+1no
+2nodl
+no4kl
+2nolj
+2nomr
+nom3s4
+2nord
+2norg
+no5sa
+no5sc
+no4tu
+2n1p
+2n1r
+4ns
+ns2i
+n4sint
+n4sis.
+n4sise
+ns2k
+ns3kan
+n1ski
+ns3kor
+nslags5
+ns5las
+ns5mit
+n4soc
+n1spi
+ns3pl
+ns3po
+ns3s4
+n3stans
+n3stap
+ns4tel
+n3stif
+ns3tig
+ns4tra
+n2strik
+nst5up
+nst5vil
+n3s4ty
+n1sva
+ns3vi
+ns3v[adiaeresis]r
+2n1t
+n4tark
+nter5s4
+n4tinf
+n2t5omb
+nt3rad
+n3trah
+n3trak
+n5trala
+nt3rali
+n5tram
+nt3rep
+n3trer
+nt3ria
+nt3rin
+nt3ris
+n4tropin
+n4tror
+n4tr[odiaeresis]
+nts3c
+nt4se
+nts5kor
+nt4str
+n4tut
+n3tv[aring]
+nufts4
+4nug
+n5ugn
+3nui
+3num
+nums5
+2nup
+n3upp
+2nutb
+2n1v
+ny5gr
+n5z
+4n[aring]r
+4n[adiaeresis].
+4n[adiaeresis]c
+3n[adiaeresis]m
+3n[adiaeresis]t
+4n[odiaeresis]g4
+3n[odiaeresis]j
+n[odiaeresis]2ja
+n[odiaeresis]5kr
+4n[odiaeresis]l
+n[odiaeresis]s4
+n[odiaeresis]s5ke
+o1a
+o2ard
+o2b
+5o4bj
+o4bli
+oby4
+oc4k5r
+ock3sk
+oc3ku
+o2d
+ode4k
+odi4a
+1odli
+o5dral
+o3dro
+ods4k
+od2st
+ods4ti
+od5stu
+o3d[adiaeresis]
+o1e
+offs5t
+o4fl
+o3fr
+of[odiaeresis]rm[aring]4
+o1g
+o4gav
+og3gr
+o4gj
+o5glo
+o5gly
+ognos4
+ogno5st
+o4gri
+o4gr[odiaeresis]
+og3se
+og4s3t
+o4g[adiaeresis]
+o1i
+o4il
+o1j
+o1k
+o4kli
+ok3n
+ok3sl
+ok4su
+o2kv
+o1la
+o5lak
+ol5au
+olf[odiaeresis]4
+1olj
+ol3ka
+olk3r
+ol4ku
+ol4k[adiaeresis]
+oll4si
+oll5sl[adiaeresis]
+ol3l[adiaeresis]
+olm4s
+oln3s
+o1lo
+olo5kv
+ol4sa
+ol4t[aring]
+o1lu
+o4lug
+o4lur
+o1ly
+ol5[aring]r
+o1l[adiaeresis]
+om4br[adiaeresis]
+o3men
+o4mord
+om5pa
+om3pl
+1omr
+4omra
+om1sk
+om4ste
+3oms[adiaeresis]t
+om4tr
+om3tv
+on3c
+on5gi
+on1gr
+ongs4l
+o4nins
+on3j
+on1k4
+ons3c
+onsi3s
+ons3m
+on5stel
+ons4ter
+on3tras
+on4tre
+ont4s
+o1ny
+on5[aring]
+o1n[adiaeresis]
+o3n[odiaeresis]
+oo4d
+oom5s
+o3or
+o1pe
+o1pi
+o5pline
+op4pl
+opp3le
+op4pr
+op4pu
+o3pri
+op4st
+o3p[aring]
+o5q
+4ora
+o3rak
+oran3g4
+o2rap
+1ordn
+or4d5[adiaeresis]
+o4reh
+1orga
+5organi
+or4gr
+or4g[aring]
+o1ri
+3orient
+4ork
+or4m[odiaeresis]
+or4nu
+or4n[adiaeresis]
+o1ro
+or4pl
+or5pr
+or4spa
+ors5tig
+or5te
+or2tr
+ort3re
+ort3ro
+o1ru
+o3ry
+o1r[adiaeresis]
+o1r[odiaeresis]
+o3s2f[adiaeresis]
+osk4l
+o1skop
+o3som
+os5pig
+os4sk
+os4s4t
+os3tig
+os5tiker
+o5still
+os4tr
+ost5ron
+ost5r[odiaeresis]
+os3tul
+ota2lan
+4oti.
+4otie
+4otin
+o1to
+o5tro
+ot5run
+ot3sv
+ot5ti
+ot4tr[adiaeresis]
+ott2s
+o1tu
+o5tun
+otvin4
+o1ty
+o5t[aring]
+o3t[adiaeresis]
+oun4
+oup4
+4our
+ou3r[odiaeresis]
+ou4s
+o3ut3t
+o1va
+ova4n
+o1vi
+ov3r
+ov4si
+ov3sl
+ovs4me
+o1v[adiaeresis]
+o3we
+ox5
+oy2
+o3[aring]
+o3[adiaeresis]n
+o3[odiaeresis]
+1pa
+4paf
+pag4
+paki3
+pakis4
+pa5la
+pals5
+pa5l[adiaeresis]
+4pand.
+pan4tr
+3pap
+2parb
+4parm
+par3s
+2pask
+pa5ski
+pa2st
+3patr
+pa3u
+2pb4
+2pc
+2p3d4
+pek5tri
+pekt3ro
+4peld
+pel3s4i
+4pem
+5peng
+3penn
+pent5r
+per4bl
+3perio
+3pers
+per4sl
+pe5tro
+4pex
+2p1f
+4p3g
+2ph
+pi4el
+1pig
+pi1o
+3pip
+pi5so
+pi5sta
+pi5sto
+p2j
+3pj[adiaeresis]s
+4p3k2
+p2l
+p4lac
+5plan.
+p4lane
+p3larn
+p3lev
+3plex
+3plic
+1plik
+4plit
+p3lj
+1plom
+p3lop
+2p1m
+4p1n
+p3ni
+1po
+5poa
+2poc
+2pof
+po2i
+3polit
+4polj
+poly3
+2porg
+3pos
+pos4ter
+4pov
+po4v[adiaeresis]
+2pp
+p4part
+pp5ask
+p4pax
+p3pe
+p1pi
+p4pins
+pp3j
+pp1l
+pp3la
+pp3lin
+pp5lis
+pp5lu
+pp3ly
+pp3l[aring]n
+pp3l[aring]t
+pp3l[adiaeresis]
+pp3l[odiaeresis]
+pp5oc
+pp3of
+pp3p4
+pp1r
+pp3ra
+pp3ri
+pp3ru
+pp3ry
+pp3r[adiaeresis]
+pp3tr
+p2pu
+p5py
+pp3[aring]
+p2r2
+2pra
+5prax
+1pres
+pres4t
+pre3sta
+pres5to
+p3rig
+p3rik
+5pril
+3princ
+pring3
+p5riol
+3pro
+pro3g
+p3ror
+4pr[aring]
+3pr[adiaeresis]s
+3pr[odiaeresis]v
+2ps
+p2sal
+3psalm
+p5s2ho
+ps4ken
+ps2li
+p3sna
+4pso
+p3sod
+p1s4t
+p4stak
+p4st[adiaeresis]v
+p2s[odiaeresis]
+2p1t
+p3tri
+1pu
+4pug
+pul2l5ov
+pul5tr
+5pung
+3punk
+pus3t
+2p1v
+p[aring]3dr
+3p[adiaeresis]l
+p[adiaeresis]5ro
+4p[odiaeresis]r
+3p[eacute]
+qu4
+3que
+1ra
+3ra.
+raci4t
+3rade.
+4radr
+ra4du
+5ra1e
+2raff[adiaeresis]
+ra3fr
+ra5is
+2rak
+ra2lo
+r4ande
+3rande.
+4ran4d3r
+rand3s
+2ransv
+ra3pl
+3rar
+r4ar.
+4rarb
+r4are
+4rarg
+r4ark
+4rarm
+r4arn
+r4ars
+4rart
+r3arta
+ra5r[odiaeresis]
+r4as
+ras3h
+ra2st
+3raste.
+3rativ
+ra3tri
+2rav
+ra5yo
+2rb
+2r1c
+2r2d
+r4daf
+rda5gr
+r3dj
+r4dos
+rd3ran
+rd3rat
+r4dul
+r3d[aring]
+r3d[adiaeresis]
+r4d[odiaeresis]s
+1re
+3re.
+4reaus
+re3b
+4rec
+5reco
+re3d4r
+re5du
+4reft
+4regg
+3regn.
+re1kr
+rek5tri
+4reld
+re3lu
+rem5p
+3rems
+r4en.
+2reni
+2renk
+2renl
+re3n[odiaeresis]
+re3o
+3rer.
+3rern
+3reso
+ress5k
+re1sti
+3ret.
+4retet
+ret3ro
+4rety
+re5t[aring]
+2revig
+4rex
+2r1f
+rf[odiaeresis]3ri
+2r1g
+rg3g2
+rgs5top
+2rh
+rhands5
+3rial
+4rib
+3rifi
+2rifr
+r3ifr[aring]
+3rifu
+3rigt
+rik2s
+3riktn
+ri4mo
+2rind
+rind3s
+5ringen.
+ring3r
+2rinr
+2rins
+2rint
+ri1o
+3riot
+ri5ple
+ri2st[adiaeresis]
+ri4tut
+ri4vis
+riv3s
+4rj
+r4jis
+r3jo
+r5ju
+r5j[odiaeresis]
+2rk
+rk3akt
+r4kek
+rkes3
+r1ki
+r3klas
+rk2le
+r4kl[odiaeresis]
+rk3n
+rk4ne
+r1ko
+r4kod
+rk3tr
+r1ku
+r4kup
+r1k[adiaeresis]
+r5k[odiaeresis]r
+2r1l
+r5laka
+r5lav
+rld2
+rlds3
+rl5sp
+2r1m
+r4marb
+r4mil
+rm2s5j
+rm5tr
+2r1n
+rnal4
+rn3g4
+rn1k
+r2nom
+rns4k
+rns4t
+rn3t
+ro3b
+ro4gro
+ro2kr
+2rolj
+rol4li
+rom4a
+5roman
+5ronau
+5rond.
+ron4v
+ro3pl
+ropp2s
+ro4ra
+2rord
+2rorg
+2rorie
+3rorn
+ro4sin
+ro4sn
+ros3v
+ro5te
+2r1p
+r4pl[odiaeresis]
+r4p[odiaeresis]
+4r1r
+rra4n
+rrd4
+rreligi5
+rres4
+r5rib
+rr5k4
+r4rob
+r4rom
+rr1s
+rrs2k
+r4rur
+2rs
+r4seld
+r4sex
+r2sin
+r1ski
+r4skid
+rsk3na
+rs5koll
+rs4kos
+rskotts3
+r2sku
+r3sk[odiaeresis]
+rslags4v
+r4sle
+r4slo
+r4s5l[odiaeresis]
+rs4mo
+rs5nat
+rs5n[adiaeresis]
+r1sp
+r2spl
+r2spo
+rs3s4
+rs5tak
+rs4te
+r5stek
+rs5tend
+r5steni
+rs5till
+r1sto
+r4ston
+rst4r
+r3str[odiaeresis]
+r3stu
+r1sv
+rs4vag
+r2sv[adiaeresis]
+r1sy
+2r1t
+r2taf
+r2takti
+rt4an
+r4tins
+r4tom
+r5trit
+r3tr[adiaeresis]
+rt3t
+r4tut
+rubb5l
+ru3br
+ru4dan
+ruks1
+ruks3v
+5rullera
+3rum.
+runn2
+runns5
+4rupp
+rus2h
+ru5sha
+2rut
+5rutig
+rut4ra
+ru4vi
+5ru[odiaeresis]
+2r1v
+rv4sj
+rv2s5k[adiaeresis]
+r3w
+rydd5s
+ry5o
+r[aring]ge5l
+4r[aring]l
+r[aring]ng3s
+r[aring]5ra
+r[aring]3st
+r[adiaeresis]ck5s
+4r[adiaeresis]kt
+4r[adiaeresis]m
+r[adiaeresis]ng3s
+r[adiaeresis]ns5t
+4r[adiaeresis]s
+r[adiaeresis]4san
+r[adiaeresis]s3s
+r[adiaeresis]5sti
+r[adiaeresis]v5s
+r[odiaeresis]d5el
+r[odiaeresis]d5r
+r[odiaeresis]d3s
+2r[odiaeresis]g
+r3[odiaeresis]i
+r[odiaeresis]k3s
+r[odiaeresis]ns4t
+4r[odiaeresis]p
+3r[odiaeresis]r
+r[odiaeresis]r4s
+r[odiaeresis]4st
+r[odiaeresis]st3r
+r1[odiaeresis]vr
+1sa
+3sa.
+3sad.
+3sade
+4sadj
+2sa3dr
+sad5s
+2saf
+sa3i
+sak5ri
+2s1akt
+sa5lo
+3s2am
+sa2ma
+samman3
+sa2mor
+sand3s
+4sang
+2sanl
+s3anl[adiaeresis]
+san3sla
+2sap
+3s4ar.
+2sarb
+2sarm
+s5arm.
+3sarn
+2sart
+4sarv
+4sass
+5sat.
+sa4tu
+2sau
+s3auk
+2s1av
+4sb
+s2c
+2sch.
+1scha
+2schau
+4schb
+1schen
+1scher
+1schet
+1schi
+4schk
+4schm
+4schp
+3schy
+3sch[odiaeresis]
+sci3p
+4s3d
+1se
+se4at.
+se2g
+2s3egg
+3segl
+seg3ra
+sek5le
+sek3r
+sek5tr
+3sel.
+se5ly
+sem2
+3sen.
+s5ers[adiaeresis]
+3set.
+2sexp
+2s1f
+s4f[adiaeresis]r.
+sf[odiaeresis]2
+4s3g2
+2sh
+5s2haw
+shi1s
+s5h[odiaeresis]
+1si
+sid5s
+5sie
+si4eri
+si4esk
+si2ett
+3s2ig
+3sik
+sikts3
+5sill.
+silver3
+silv3r
+2s1ind
+2s1inf
+sinne2s3
+3sinni
+4sinr
+2sin1s
+s1inst
+5sint.
+2sintr
+3sio
+sis4t
+siu4
+1s2j
+2sjak
+s3jakt
+4sjn
+4sjt
+s4ju
+5sjuk
+4sjur
+sj[adiaeresis]ls3
+3sj[odiaeresis]
+4sk.
+2ska.
+3s2kada
+s2kado
+3skaffn
+1skaft
+s4kag
+s2kal
+3skal.
+1skap
+5skap.
+5skapet
+4skapi
+skaps1
+4skar
+s4kara
+5skarv
+4skas
+s2kat
+s4kav
+4ske.
+3sked.
+s4kene
+3skepp
+4skh
+sk4i
+3skif
+5skin
+4skis.
+5skiv
+5skjor
+3skju
+4skl
+sk5lap
+s3klas
+4skn
+3s4ko.
+1s4kog
+4skogsg
+1skol
+3skola
+s4kolo
+s4korp
+skor1st
+1skot
+s5kran.
+3skrat
+sk4ret
+3skrev
+1skri
+3skrif
+s3krig
+5skrin
+3skrip
+s5kris
+3skriv
+s5kron
+s4kru
+5skrub
+3skruv
+5skr[adiaeresis]c
+sk3s
+2skt
+3skulp
+s3kup
+2skv
+s4kve
+1s2ky
+s4kyn
+2skyrk
+1sk[aring]
+s4k[aring]l
+5sk[aring]p.
+4sk[aring]r
+5sk[adiaeresis]nk
+3sk[adiaeresis]rv
+2sl2
+4sla.
+s5lad.
+s3land
+3s2lang
+s4lant
+s3lar.
+4slas
+s1lat
+s2lev
+3slev.
+s4lic
+slins3
+4slis
+s2lit
+s5lor
+slotts3
+s2lu
+s3luc
+s3luf
+4slus
+s3lust
+3slut
+slu4to
+3sl[aring].
+5s4l[aring]r
+s4l[adiaeresis]k
+s5l[adiaeresis]m
+s5l[adiaeresis]nn
+3s4l[adiaeresis]p
+4s3l[adiaeresis]r
+s2l[adiaeresis]t
+3s2l[odiaeresis]j
+2sm
+s2mak
+3smak.
+s3makt
+s2mal
+s2met.
+s2mid
+s2mit
+3smitta
+s3mj
+5smug
+5smyg
+sm[aring]5g
+sm[aring]3k
+sm[aring]3s
+3sm[adiaeresis]d
+3sm[adiaeresis]l
+4sm[adiaeresis]s
+3sm[odiaeresis]r
+2s2n4
+3snab
+3s4nac
+s3nam
+s5nare
+s3nast
+s5ner
+3snib
+3snil
+3snit
+1snitt
+s3niv
+3snut
+s4n[aring]
+5sn[aring]r
+5sn[adiaeresis]c
+s4n[adiaeresis]r
+3sn[odiaeresis].
+sn[odiaeresis]5g
+3sn[odiaeresis]r
+sn[odiaeresis]3s
+1so
+3soc
+5sock
+2sod
+5soi
+2solj
+sol3s2
+2som
+5somm
+3son
+son4st
+so5pra
+so4pu
+3sor.
+2sord
+s5ord.
+2sorg
+3sorn
+3sot
+4sott
+s2p2
+5spann.
+s4park
+5sparv
+4spas
+s3pass
+spa5tr
+1spe
+4sped
+3s4pek
+3s4pel
+4spelsl
+2spen
+2sper
+5spets
+3spill
+3spir
+4spl
+s1pla
+s3plan
+s3plats
+spli4
+s4plin
+5split
+s5pl[adiaeresis]
+4spre
+s3pres
+4s3pris
+3sprit
+2spro
+s3pry
+3spr[aring]
+5spr[adiaeresis]n
+s3ps
+1s4p[aring]
+3sp[aring]n
+3sp[aring]r
+5sp[adiaeresis]n
+3sp[odiaeresis]
+4s1r
+4s1s
+s5sad
+sse4lin
+s5sil
+ss2k
+ss5kl
+ss3kun
+ss1l
+ss2lag.
+ss2l[adiaeresis]
+ss2l[odiaeresis]
+ss3na
+sss4
+ss3unn
+s2sv
+ss3vi
+s2t
+2st.
+4sta.
+5stac
+3stadi
+s4taf
+5stalgis
+3stalla
+2stalli
+5stam.
+5stamm
+1stant
+5stark.
+5startad
+1state
+3statl
+1stau
+st3c
+2s5te.
+4stea
+5steg.
+s4tek.
+2stekn
+5stekt
+s4tell
+3stem.
+3steme
+5stenar
+3s4tene
+3stense
+5stensm
+1stera
+1stering
+s4teriu
+3sterne
+5stetis
+2stia
+2stib
+3stick
+2stid
+s4tiken
+2stil
+3stil.
+3stink
+3stisc
+1stit
+2stj
+s5tju
+3stj[adiaeresis]l
+3stj[adiaeresis]r
+2stm
+5stoc
+1stol
+4stolk
+4stom
+stori4eu
+5storis
+stor3s
+3straff
+4strativ
+3strato
+3strec
+3strej
+st3ren
+1strer
+2stria
+1strid
+5stride
+2striel
+st4rif
+1strikt
+st5risk
+1stru
+3struk
+2strumm
+s3tryc
+5stryk
+5str[aring]k
+3str[aring]l
+3str[adiaeresis]c
+4str[adiaeresis]d
+3str[adiaeresis]ng
+5str[adiaeresis]v
+3str[odiaeresis]m
+2st3s4
+st3t
+4stv
+s3tvis
+1sty
+2styp
+1st[aring]
+4st[aring]g
+5st[aring]l
+1st[adiaeresis]
+3st[adiaeresis]l
+1st[odiaeresis]
+1su
+su4b
+3sug
+su3i
+3sum
+2sun
+5sun.
+s1under
+5sune
+s5ung
+2sup
+5supa
+su2pu
+5sus
+2s1ut
+su4to
+su4tr
+s2v2
+5svag.
+s3vagn
+4s3vak
+5svam
+4svap
+svars3
+3svart
+4svas
+s3vat
+4svec
+3sven
+5svep
+4s3ver
+s5ves
+4s3vil
+s4vine
+4svis
+s5vitt
+s5v[aring]d
+3sv[aring]ri
+3sv[adiaeresis]ng
+5sv[adiaeresis]rm.
+s3v[adiaeresis]s
+s3v[adiaeresis]t
+4syk
+5syl
+3syn
+syn3k
+s3yrk
+3sys
+sys4t
+sys5ter
+syt2
+sy5th
+1s[aring]
+5s[aring]g
+4s[aring]k
+2s[aring]lde
+s[aring]ng3
+1s[adiaeresis]
+s4[adiaeresis]d
+2s5[adiaeresis]gg
+s4[adiaeresis]l
+2s[adiaeresis]p
+5s[adiaeresis]s
+3s[adiaeresis]t
+4s[adiaeresis]ta
+1s[odiaeresis]
+4s[odiaeresis]d
+2s[odiaeresis]g
+s5[odiaeresis]ga
+s[odiaeresis]4ko
+4s[odiaeresis]l
+4s[odiaeresis]p
+s[odiaeresis]r2s
+2s3[odiaeresis]rt
+1ta
+3ta.
+ta1ch
+3tade.
+4tadi
+4tads5
+2taff
+3taga
+5tak.
+ta5kre
+2taktig
+tak4to
+4talf
+5tallise
+tall5s
+4talv
+3tame
+3tami
+3tan.
+ta4nab
+3tande.
+2t3anfa
+4tanl
+t4ap3l
+2tappar
+3tar.
+4tarb
+tar4mi
+3tarn
+tars4
+4tart
+5tartavl
+4tarv
+4task
+3tast
+ta1str
+tat2
+ta4tan
+tats3
+2tatt
+2tav
+4tave
+5tavla.
+3tavlan
+3tavlo
+tav2s
+3tax
+2tb4
+2tc
+t3cha
+t3che
+2t3d4
+3t2e
+te4as
+te3b4
+5tec
+4teg
+te2g1r
+te3gre
+te3i
+te4int
+4tej
+tej2s
+te4kl
+5teknik
+5teknis
+4teld
+5te5l[odiaeresis]
+5tema
+4temo
+te4mu
+ten3g4
+5tensi
+ten3tr
+te4n[adiaeresis]
+te5n[odiaeresis]r
+5ter.
+5teri[odiaeresis]
+ter3k4
+5term
+5terna
+5ters
+ter3t
+te4ru
+5tes.
+5test
+tes4te
+te5stik
+te5stu
+5tetik
+tets3
+4texa
+2texp
+2t1f4
+2t3g4
+2th
+t4hen
+1ti
+3tial
+5tib
+5tici
+3tid
+5tide
+ti4du
+4tid[odiaeresis]
+ti4ed
+tifts5
+ti2gel
+3tigh
+ti4go
+ti2gr
+3tigt
+tik3l
+3tiks
+5tikul
+t2il
+5tilj
+3tillst
+3tillv
+3till[adiaeresis]
+5time
+2tind
+2tinr
+2tint
+ti4od
+3tion
+ti2os
+3tis
+4tisc
+5tisk
+3tiva
+ti4van
+5tivite
+ti2[odiaeresis]
+t2j
+4tje
+4tjob
+2tjou
+4tj[adiaeresis]l
+4tj[adiaeresis]m
+3tj[adiaeresis]n
+2t3k2
+2t3l
+2t1m
+2t5n4
+tne4r
+4todl
+3tok
+4tol.
+4tolj
+2tomr
+4toms
+t2op
+5torap
+t5ord.
+5toriett
+4torm
+torm3s
+3torn
+tor1st
+4tort.
+tos4k
+t5ost.
+t4ov
+2t1p
+t2r4
+2tra
+t4raf
+3trafi
+3t4ral.
+t4rala
+3t4rale
+5tralo
+3trals
+t4ralt
+3trans
+tran2s5a
+4trar
+t3ras.
+t3rat.
+t4rato
+4treg
+4tren
+4trer.
+4trern
+t3rets.
+2tri
+3tribu
+5trick
+trids3
+t5riel
+t1ring
+t3ring.
+2troc
+t3rock
+t4rog
+t5ronik
+t3rono
+4tropi.
+5tross
+5trotn
+t4rump
+t4rup
+3trupp
+trus5ta
+1tryc
+5tryck.
+5tryggh
+4tr[aring]k
+5tr[adiaeresis].
+3tr[adiaeresis]d
+tr[adiaeresis]ds4
+3tr[adiaeresis]f
+3tr[adiaeresis]g
+4tr[adiaeresis]k
+t3r[adiaeresis]kn
+t4r[adiaeresis]n
+5tr[adiaeresis]ni
+5tr[odiaeresis]ja
+t4r[odiaeresis]t
+5tr[eacute]
+2ts
+t5s4and
+ts5art
+t3s4at
+t3se
+t4seg
+ts4en
+t4sex
+ts2k
+t5skall
+t3skatt
+t1ski
+ts3kl
+tskotts5
+t5slot
+ts5l[adiaeresis]k
+ts3n[adiaeresis]
+t3sn[odiaeresis]
+t2so
+ts3ord
+ts3pl
+tss4
+t1st
+ts4te
+ts5ter
+ts5tillf
+ts3tj
+t3stol
+t4ston
+t2stra
+t4stry
+t4stur
+t5styr
+t2su
+t3sud
+t5sy
+2tt
+t3tac
+t4tau
+t4ted
+tte5g4
+t4tem
+tte2n
+ttes4
+t4tex
+t4tins
+t4tip
+tt3ja
+t1to
+tt3rad
+tt3rand
+tt3rat
+tt3re
+tt3ri
+tt4ry
+tt4se
+tt2si
+tt4sta
+t3tu
+t4tug
+tt1v
+tt4v[aring]
+t3ty
+t3t[adiaeresis]
+t3t[odiaeresis]r
+4t5ugn
+2tund
+3tunga
+tung3s
+5tunn
+2tupp
+tu5re
+2tutb
+t3utv
+t3ut[odiaeresis]
+tu4vu
+5tu[odiaeresis]
+2tv
+t1va
+4tve
+t3vig
+3tving
+t3vit
+3tviv
+t3v[aring]g
+3tv[aring]n
+t3v[adiaeresis]n
+tv[adiaeresis]r3s
+3tv[adiaeresis]tt
+ty5da
+5tyg.
+3tyngd
+3typ
+ty3pi
+5tys
+2tz
+3t[aring]g
+t[aring]s4
+4t[aring]t
+t[adiaeresis]c4ko
+4t5[adiaeresis]g
+4t[adiaeresis]m
+4t[adiaeresis]rm
+3t[adiaeresis]vl
+4t[odiaeresis]4d
+t[odiaeresis]5de
+4t[odiaeresis]g
+4t[odiaeresis]p
+t[odiaeresis]4pi
+3t[odiaeresis]rer
+t[odiaeresis]rs3t
+t[odiaeresis]4vas
+5t[eacute]
+u1a
+u2b
+ub5al
+ubb4le
+ub3lic
+u4bo
+u3cha
+u5cl
+u2d
+u4dak
+u5de
+ud3r
+ud4ret
+uds4a
+u4du
+u4dy
+u1e
+u2es
+uf4f[adiaeresis]
+uf4tan
+uf4to
+4u1ga
+u1ge
+ugg3s
+ugn4
+ugns5
+ug3s4
+u5ie
+u1in
+u3is
+u3itet
+u3j
+u2keb
+u5ki
+u4kl
+uk5la
+uk3n
+u1ko
+ukos4
+uk2s
+uks5ko
+uk3tris
+ukt5s
+uk4t[adiaeresis]
+u3ku
+uk3v
+u1la
+ul4di
+ulds2m
+ul4du
+ul4d[odiaeresis]
+ull3ste
+ull3[adiaeresis]n
+u1lo
+uls5ti
+ul2tr
+u3lu
+u1l[adiaeresis]
+u1l[odiaeresis]
+um4f[adiaeresis]
+um4so
+ums4t
+u1mu
+u3m[odiaeresis]r
+5underl
+1unders[odiaeresis]
+1underv
+un4dom
+und3r
+un4d[aring]
+un5g2ef
+un3gersk
+ung5it
+ung3r
+ungs4p
+3unif
+unk3l
+unk3n
+un4kr
+un1sk
+un4tr
+un5trati
+u5nu
+u1o
+u1pe
+u4pern
+u1pi
+u2pl
+u3plet
+up3lik
+3uppfa
+1uppg
+up4pin
+1uppla
+5uppl[adiaeresis]
+up4p3r
+upp3s
+upp5sp
+up5ut
+ur5ak
+ur5arv
+u3re
+u1ri
+u1ro
+u4rob
+u4rom
+urs5tin
+ur4st[adiaeresis]
+u5ry
+u2sak
+us5anl
+u3scha
+u3se
+usen3
+u2s1k
+us3ka
+us4kla
+us4kr
+u5sky
+us4k[aring]
+us5l[adiaeresis]
+us3n
+u2sp
+us3pen
+us5tat
+us3tig
+u3stik
+us5tin
+ust5ro
+u4st[aring]
+u4st[adiaeresis]
+us3v
+u4s[aring]
+u4s[adiaeresis]
+u2s[odiaeresis]
+u4tak
+1utb
+u4tef
+ute3s
+utik2
+u5til
+uti3[odiaeresis]
+ut3j
+3utj[adiaeresis]m
+utlands3
+u1to
+u3top
+uto5s
+ut3r
+ut4rer
+ut4ro
+ut5rop
+1utru
+2utsid
+ut3sl
+3utsl[adiaeresis]
+2utt
+utt4j
+ut1v
+3utvec
+u5ty
+ut3[odiaeresis]v
+u5u
+2u1v
+u2vak
+u4vj
+u4v[adiaeresis]
+u5[aring]
+u3[odiaeresis]
+va5dro
+1vagn
+2v1akti
+val3k
+val4li
+val4st
+5valv
+5vama
+4vand.
+4vanp
+van4st
+van5tr
+5vap
+2varb
+va4res
+va4ri.
+4vark
+var2s
+vart5r
+va1ru
+vas5ti
+5vattn
+4vau
+4vav
+5vavi
+2vb4
+2v1c
+2v3d4
+1ve
+5vec
+ve2k
+ve3ke
+4veld
+vensk3[adiaeresis]
+5ventera
+ve3ny
+ve5n[odiaeresis]
+4vep
+ver5g
+3verk
+ves4
+ve2s5p
+ve1st
+3veta
+3vete
+vet5sa
+vett5s
+2v1f
+2v1g
+2vh
+v4i
+vi4c
+vid3s
+vild3s
+vil4t
+3vind.
+ving3s4
+3vinkl
+vi2no
+5vinst.
+5vinste
+vi5ny
+3vis.
+vi5sa
+vis5h
+vis5ko
+vi4st
+vis3ta
+vi2tr
+vi4var
+4vjo
+2v3k2
+2v1l
+2v1m
+vm[odiaeresis]rk4
+2v1n4
+1vo
+4vok.
+2vom
+4vord
+2vorg
+vos4
+2v1p
+2v2r
+5vrak
+3vrera
+v3ru
+2vs
+v4sc
+v1s2k
+v2skri
+vs4mi
+v3sni
+v2so
+v1st
+vs4te
+vs5tr[aring]
+v5styc
+vs3v[aring]
+v2s[odiaeresis]
+2v1t
+vu4d1
+v1und
+4v5up
+4vut
+2v1v
+3vy
+5v[aring]ld
+v[aring]ngs3
+3v[aring]rd
+4v[aring]ri
+v[aring]3ru
+3v[adiaeresis]g
+v[adiaeresis]gg5s
+v[adiaeresis]4l
+v[adiaeresis]ll4s3
+3v[adiaeresis]nl
+3v[adiaeresis]rde
+v[adiaeresis]4ril
+4v[adiaeresis]rj
+5v[adiaeresis]rk
+3v[adiaeresis]rld
+2v[adiaeresis]t
+3v[adiaeresis]x
+4v[odiaeresis]g
+4v[odiaeresis]p
+3v[odiaeresis]r
+1wa
+we2
+w2h
+whi2
+wi2e
+w4na
+x1
+xan5d4
+xem3pla
+xis4
+xk2
+xli4
+xs4
+xti2
+x4t[aring]
+2y
+y1a
+y4bris
+yb4s
+y2d
+y4da
+y5dan
+y4do
+yd3r
+yds4
+y4du
+y4d[odiaeresis]
+y1e
+y1ga
+y1ge
+ygg3r
+yg4g[aring]
+ygs4p
+y1i
+y1ki
+y5klist
+yk5lon
+yk3n
+y1ko
+y1la
+yl4gj
+y3li
+yl5k
+yl5l[adiaeresis]
+y1lo
+yl4tr
+ym2fl
+ym4for
+y3m[aring]
+yng3r
+ynk5l
+yn4sa
+yns4t
+y3or
+y5ou
+y1pe
+y5po
+yp3ri
+yre4s
+y1ri
+yr4ku
+yrk5v
+y1ro
+yrs4k
+yr5st
+yr5tu
+y1r[aring]3
+y5scho
+ys2st
+ys3ta
+ys3ti
+ys4tik.
+yst3ra
+y2tak
+y4te.
+y4tea
+y1to
+ytt3r
+yt5v
+y3va
+y3vi
+y3v[adiaeresis]
+y5w
+y5[aring]
+1za
+1ze
+ze4ro
+1zi
+1zo
+zo4nal
+4zp
+z5s
+3zu
+z4zin
+[aring]1a
+[aring]3dj
+[aring]ds4l
+[aring]1e
+[aring]1f
+[aring]1ga
+[aring]1ge
+[aring]ge2l
+[aring]g3l
+[aring]g3s4k
+[aring]g3st
+[aring]g[aring]4
+[aring]3i
+[aring]1ki
+5[aring]klag
+[aring]k4str[adiaeresis]
+[aring]1la
+1[aring]lder
+[aring]2lin
+[aring]l3k
+[aring]ll4sp
+[aring]l2s5e
+[aring]l3st
+[aring]1l[adiaeresis]
+[aring]1m
+[aring]man4s
+[aring]nd4r
+[aring]n4du
+[aring]ns4t
+[aring]ns4v
+[aring]3o
+[aring]1p
+[aring]2pl
+[aring]5pla
+[aring]4p[odiaeresis]
+[aring]r4do
+[aring]rd4ra
+[aring]rd2s
+[aring]rd4s3t
+[aring]4rel
+[aring]1ri
+[aring]5ror
+5[aring]rsav
+[aring]r5s2li
+[aring]r2sv
+[aring]r5[odiaeresis]
+[aring]s4ke
+[aring]s3n
+[aring]ss4
+[aring]s4skr
+[aring]s4t
+[aring]te2
+[aring]t3ri
+[aring]3tr[aring]
+[aring]t2sj
+[aring]tt5s
+[aring]1v
+[adiaeresis]1a
+[adiaeresis]2b
+2[adiaeresis]c
+[adiaeresis]ck5v
+[adiaeresis]2d
+[adiaeresis]dd3s
+[adiaeresis]d4du
+[adiaeresis]de4s
+[adiaeresis]d3r
+[adiaeresis]d5se
+[adiaeresis]d3st
+[adiaeresis]3e
+[adiaeresis]1ga
+[adiaeresis]1ge
+[adiaeresis]g4go
+[adiaeresis]g1l
+[adiaeresis]g3r
+[adiaeresis]g4re
+[adiaeresis]g3se
+[adiaeresis]3i
+[adiaeresis]5jo
+4[adiaeresis]k
+[adiaeresis]1ki
+[adiaeresis]k3n
+[adiaeresis]k3r
+[adiaeresis]1la
+[adiaeresis]l4pap
+[adiaeresis]l4seg
+[adiaeresis]ls5kog
+[adiaeresis]l4slu
+[adiaeresis]l2t3r
+[adiaeresis]l2tu
+[adiaeresis]l4vin
+[adiaeresis]mp3l
+4[adiaeresis]ndligh
+[adiaeresis]nd3r
+[adiaeresis]nd1st
+[adiaeresis]ng5r
+[adiaeresis]nni3s
+[adiaeresis]nn3s
+[adiaeresis]4no
+[adiaeresis]ns1l
+[adiaeresis]n4st
+[adiaeresis]ns5te
+[adiaeresis]n4sv
+[adiaeresis]n2t3r
+[adiaeresis]3pe
+[adiaeresis]pp3l
+[adiaeresis]4pr
+[adiaeresis]p4st
+[adiaeresis]4rap
+[adiaeresis]r2bre
+[adiaeresis]rg5l
+[adiaeresis]r4gr
+[adiaeresis]1ri
+[adiaeresis]rib4
+[adiaeresis]r4k[adiaeresis]
+[adiaeresis]r4nis
+[adiaeresis]rn3st
+[adiaeresis]r2n[aring]
+[adiaeresis]r4n[odiaeresis]
+[adiaeresis]r5ob
+[adiaeresis]5rol
+[adiaeresis]3rop
+[adiaeresis]5ror
+[adiaeresis]5ros
+[adiaeresis]r2si
+[adiaeresis]r4sko
+[adiaeresis]r2so
+[adiaeresis]r4sp
+[adiaeresis]r2sv
+[adiaeresis]r4tand
+[adiaeresis]r2tr
+[adiaeresis]rt3s
+4[adiaeresis]s
+[adiaeresis]s3pa
+[adiaeresis]s5pi
+[adiaeresis]s4sk
+[adiaeresis]s4sp
+[adiaeresis]s3ta
+[adiaeresis]st3r
+[adiaeresis]4st[adiaeresis]
+[adiaeresis]4s[aring]
+2[adiaeresis]t
+[adiaeresis]3to
+[adiaeresis]5tre
+[adiaeresis]t4s3k
+[adiaeresis]t5te
+[adiaeresis]t4top
+[adiaeresis]tt3r
+[adiaeresis]t4tu
+[adiaeresis]t4tv
+[adiaeresis]1va
+[adiaeresis]2vak
+[adiaeresis]3vi
+[adiaeresis]5vu
+[odiaeresis]1a
+[odiaeresis]2d
+[odiaeresis]4dak
+[odiaeresis]4dal
+[odiaeresis]4darv
+[odiaeresis]de4s5
+[odiaeresis]4dis
+[odiaeresis]d3ra
+[odiaeresis]d2s
+[odiaeresis]d3se
+[odiaeresis]4du
+[odiaeresis]4d[odiaeresis]
+[odiaeresis]1e
+[odiaeresis]1ga
+[odiaeresis]g5ak
+[odiaeresis]5gar
+1[odiaeresis]gd
+[odiaeresis]1ge
+[odiaeresis]5ger
+[odiaeresis]gg4
+[odiaeresis]g1l
+[odiaeresis]g2n
+[odiaeresis]gn3e
+1[odiaeresis]go
+[odiaeresis]g3si
+[odiaeresis]g3sk
+[odiaeresis]1i
+[odiaeresis]3jo
+[odiaeresis]j4sv
+[odiaeresis]4karm
+[odiaeresis]1ki
+[odiaeresis]k3n
+[odiaeresis]k2s
+[odiaeresis]k3sl
+[odiaeresis]1la
+[odiaeresis]l4kv
+[odiaeresis]l4k[odiaeresis]
+[odiaeresis]l2p
+[odiaeresis]5l[adiaeresis]
+[odiaeresis]man4
+[odiaeresis]m2kl
+[odiaeresis]4nal
+[odiaeresis]2nom
+[odiaeresis]ns3ke
+[odiaeresis]n4so
+[odiaeresis]nst3r
+[odiaeresis]3pe
+[odiaeresis]4pel
+[odiaeresis]3pi
+[odiaeresis]p5li
+[odiaeresis]5plo
+1[odiaeresis]ppn
+[odiaeresis]4pr
+[odiaeresis]3rande
+[odiaeresis]3ras
+[odiaeresis]4rask
+[odiaeresis]rb4
+[odiaeresis]r3d4r
+[odiaeresis]r1eni
+[odiaeresis]3res
+[odiaeresis]4restr
+[odiaeresis]3ret
+[odiaeresis]r5evig
+[odiaeresis]r3g
+[odiaeresis]1ri
+[odiaeresis]5rig
+[odiaeresis]3ring
+[odiaeresis]r3int
+[odiaeresis]r5ir
+[odiaeresis]r5iv
+[odiaeresis]r4kal
+[odiaeresis]r1k2l
+[odiaeresis]r5kli
+[odiaeresis]r4nis
+[odiaeresis]r3ol
+[odiaeresis]r1or
+[odiaeresis]r2p5la
+[odiaeresis]r1s2k
+[odiaeresis]r3sl
+[odiaeresis]r4sl[adiaeresis]
+[odiaeresis]r5te
+[odiaeresis]rt5s
+[odiaeresis]r1u
+[odiaeresis]r3vr
+[odiaeresis]r3y
+[odiaeresis]r1[adiaeresis]
+[odiaeresis]r[odiaeresis]4d
+[odiaeresis]2sak
+[odiaeresis]s3n
+[odiaeresis]s4sj
+[odiaeresis]s2sk
+[odiaeresis]s4sp
+[odiaeresis]s3ta
+[odiaeresis]st3v
+[odiaeresis]2tak
+[odiaeresis]ts5ko
+[odiaeresis]t4st
+[odiaeresis]1v
+[odiaeresis]ve4
+[odiaeresis]ver1
+5[odiaeresis]vere
+[odiaeresis]2vj
+[odiaeresis]v3ra
+[odiaeresis]v3ri
+[odiaeresis]v4sk
+[eacute]3e
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-tr.hyp b/Master/texmf-dist/tex/context/patterns/lang-tr.hyp
new file mode 100644
index 00000000000..1f39ab3a426
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-tr.hyp
@@ -0,0 +1,32 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: tkhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='tr'>
+% <sourcefile>tkhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the modern Turkish language</title>
+% <copyright>
+% <year>1996</year>
+% <owner>Yannis Haralambous</owner>
+% <comment>A mechanically generated Turkish Hyphenation table for TeX,
+% using the University of Washington diacritical coding
+% developed by P. A. MacKay for the Ottoman Texts Project</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-tr.pat b/Master/texmf-dist/tex/context/patterns/lang-tr.pat
new file mode 100644
index 00000000000..06a1bf80204
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-tr.pat
@@ -0,0 +1,822 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: tkhyph.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='tr'>
+% <sourcefile>tkhyph.tex</sourcefile>
+% <title>TeX hyphenation patterns for the modern Turkish language</title>
+% <copyright>
+% <year>1996</year>
+% <owner>Yannis Haralambous</owner>
+% <comment>A mechanically generated Turkish Hyphenation table for TeX,
+% using the University of Washington diacritical coding
+% developed by P. A. MacKay for the Ottoman Texts Project</comment>
+% </copyright>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+2a1
+2e1
+2[quotedblright]1
+2o1
+2u1
+1b1
+1c1
+1d1
+1f1
+1g1
+1h1
+1j1
+1k1
+1l1
+1m1
+1n1
+1p1
+1r1
+1s1
+1t1
+1v1
+1y1
+1z1
+2b[acircumflex].
+2b[icircumflex].
+2bi.
+2b[ocircumflex].
+2b[odiaeresis].
+2b[udiaeresis].
+2c[acircumflex].
+2c[icircumflex].
+2ci.
+2c[ocircumflex].
+2c[odiaeresis].
+2c[udiaeresis].
+2[ccedilla]a.
+2[ccedilla][acircumflex].
+2[ccedilla]e.
+2[ccedilla][quotedblright].
+2[ccedilla][icircumflex].
+2[ccedilla]i.
+2[ccedilla]o.
+2[ccedilla][ocircumflex].
+2[ccedilla][odiaeresis].
+2[ccedilla]u.
+2[ccedilla][udiaeresis].
+2d[acircumflex].
+2d[icircumflex].
+2di.
+2d[ocircumflex].
+2d[odiaeresis].
+2d[udiaeresis].
+2f[acircumflex].
+2f[icircumflex].
+2fi.
+2f[ocircumflex].
+2f[odiaeresis].
+2f[udiaeresis].
+2g[acircumflex].
+2g[icircumflex].
+2gi.
+2g[ocircumflex].
+2g[odiaeresis].
+2g[udiaeresis].
+2[gbreve]a.
+2[gbreve][acircumflex].
+2[gbreve]e.
+2[gbreve][quotedblright].
+2[gbreve][icircumflex].
+2[gbreve]i.
+2[gbreve]o.
+2[gbreve][ocircumflex].
+2[gbreve][odiaeresis].
+2[gbreve]u.
+2[gbreve][udiaeresis].
+2h[acircumflex].
+2h[icircumflex].
+2hi.
+2h[ocircumflex].
+2h[odiaeresis].
+2h[udiaeresis].
+2j[acircumflex].
+2j[icircumflex].
+2ji.
+2j[ocircumflex].
+2j[odiaeresis].
+2j[udiaeresis].
+2k[acircumflex].
+2k[icircumflex].
+2ki.
+2k[ocircumflex].
+2k[odiaeresis].
+2k[udiaeresis].
+2l[acircumflex].
+2l[icircumflex].
+2li.
+2l[ocircumflex].
+2l[odiaeresis].
+2l[udiaeresis].
+2m[acircumflex].
+2m[icircumflex].
+2mi.
+2m[ocircumflex].
+2m[odiaeresis].
+2m[udiaeresis].
+2n[acircumflex].
+2n[icircumflex].
+2ni.
+2n[ocircumflex].
+2n[odiaeresis].
+2n[udiaeresis].
+2[ntilde]a.
+2[ntilde][acircumflex].
+2[ntilde]e.
+2[ntilde][quotedblright].
+2[ntilde][icircumflex].
+2[ntilde]i.
+2[ntilde]o.
+2[ntilde][ocircumflex].
+2[ntilde][odiaeresis].
+2[ntilde]u.
+2[ntilde][udiaeresis].
+2p[acircumflex].
+2p[icircumflex].
+2pi.
+2p[ocircumflex].
+2p[odiaeresis].
+2p[udiaeresis].
+2r[acircumflex].
+2r[icircumflex].
+2ri.
+2r[ocircumflex].
+2r[odiaeresis].
+2r[udiaeresis].
+2s[acircumflex].
+2s[icircumflex].
+2si.
+2s[ocircumflex].
+2s[odiaeresis].
+2s[udiaeresis].
+2[scedilla]a.
+2[scedilla][acircumflex].
+2[scedilla]e.
+2[scedilla][quotedblright].
+2[scedilla][icircumflex].
+2[scedilla]i.
+2[scedilla]o.
+2[scedilla][ocircumflex].
+2[scedilla][odiaeresis].
+2[scedilla]u.
+2[scedilla][udiaeresis].
+2t[acircumflex].
+2t[icircumflex].
+2ti.
+2t[ocircumflex].
+2t[odiaeresis].
+2t[udiaeresis].
+2v[acircumflex].
+2v[icircumflex].
+2vi.
+2v[ocircumflex].
+2v[odiaeresis].
+2v[udiaeresis].
+2y[acircumflex].
+2y[icircumflex].
+2yi.
+2y[ocircumflex].
+2y[odiaeresis].
+2y[udiaeresis].
+2z[acircumflex].
+2z[icircumflex].
+2zi.
+2z[ocircumflex].
+2z[odiaeresis].
+2z[udiaeresis].
+2e2cek.
+2bb
+2bc
+2b[ccedilla]
+2bd
+2bf
+2bg
+2b[gbreve]
+2bh
+2bj
+2bk
+2bl
+2bm
+2bn
+2b[ntilde]
+2bp
+2br
+2bs
+2b[scedilla]
+2bt
+2bv
+2by
+2bz
+2cb
+2cc
+2c[ccedilla]
+2cd
+2cf
+2cg
+2c[gbreve]
+2ch
+2cj
+2ck
+2cl
+2cm
+2cn
+2c[ntilde]
+2cp
+2cr
+2cs
+2c[scedilla]
+2ct
+2cv
+2cy
+2cz
+2[ccedilla]b
+2[ccedilla]c
+2[ccedilla][ccedilla]
+2[ccedilla]d
+2[ccedilla]f
+2[ccedilla]g
+2[ccedilla][gbreve]
+2[ccedilla]h
+2[ccedilla]j
+2[ccedilla]k
+2[ccedilla]l
+2[ccedilla]m
+2[ccedilla]n
+2[ccedilla][ntilde]
+2[ccedilla]p
+2[ccedilla]r
+2[ccedilla]s
+2[ccedilla][scedilla]
+2[ccedilla]t
+2[ccedilla]v
+2[ccedilla]y
+2[ccedilla]z
+2db
+2dc
+2d[ccedilla]
+2dd
+2df
+2dg
+2d[gbreve]
+2dh
+2dj
+2dk
+2dl
+2dm
+2dn
+2d[ntilde]
+2dp
+2dr
+2ds
+2d[scedilla]
+2dt
+2dv
+2dy
+2dz
+2fb
+2fc
+2f[ccedilla]
+2fd
+2ff
+2fg
+2f[gbreve]
+2fh
+2fj
+2fk
+2fl
+2fm
+2fn
+2f[ntilde]
+2fp
+2fr
+2fs
+2f[scedilla]
+2ft
+2fv
+2fy
+2fz
+2gb
+2gc
+2g[ccedilla]
+2gd
+2gf
+2gg
+2g[gbreve]
+2gh
+2gj
+2gk
+2gl
+2gm
+2gn
+2g[ntilde]
+2gp
+2gr
+2gs
+2g[scedilla]
+2gt
+2gv
+2gy
+2gz
+2[gbreve]b
+2[gbreve]c
+2[gbreve][ccedilla]
+2[gbreve]d
+2[gbreve]f
+2[gbreve]g
+2[gbreve][gbreve]
+2[gbreve]h
+2[gbreve]j
+2[gbreve]k
+2[gbreve]l
+2[gbreve]m
+2[gbreve]n
+2[gbreve][ntilde]
+2[gbreve]p
+2[gbreve]r
+2[gbreve]s
+2[gbreve][scedilla]
+2[gbreve]t
+2[gbreve]v
+2[gbreve]y
+2[gbreve]z
+2hb
+2hc
+2h[ccedilla]
+2hd
+2hf
+2hg
+2h[gbreve]
+2hh
+2hj
+2hk
+2hl
+2hm
+2hn
+2h[ntilde]
+2hp
+2hr
+2hs
+2h[scedilla]
+2ht
+2hv
+2hy
+2hz
+2jb
+2jc
+2j[ccedilla]
+2jd
+2jf
+2jg
+2j[gbreve]
+2jh
+2jj
+2jk
+2jl
+2jm
+2jn
+2j[ntilde]
+2jp
+2jr
+2js
+2j[scedilla]
+2jt
+2jv
+2jy
+2jz
+2kb
+2kc
+2k[ccedilla]
+2kd
+2kf
+2kg
+2k[gbreve]
+2kh
+2kj
+2kk
+2kl
+2km
+2kn
+2k[ntilde]
+2kp
+2kr
+2ks
+2k[scedilla]
+2kt
+2kv
+2ky
+2kz
+2lb
+2lc
+2l[ccedilla]
+2ld
+2lf
+2lg
+2l[gbreve]
+2lh
+2lj
+2lk
+2ll
+2lm
+2ln
+2l[ntilde]
+2lp
+2lr
+2ls
+2l[scedilla]
+2lt
+2lv
+2ly
+2lz
+2mb
+2mc
+2m[ccedilla]
+2md
+2mf
+2mg
+2m[gbreve]
+2mh
+2mj
+2mk
+2ml
+2mm
+2mn
+2m[ntilde]
+2mp
+2mr
+2ms
+2m[scedilla]
+2mt
+2mv
+2my
+2mz
+2nb
+2nc
+2n[ccedilla]
+2nd
+2nf
+2ng
+2n[gbreve]
+2nh
+2nj
+2nk
+2nl
+2nm
+2nn
+2n[ntilde]
+2np
+2nr
+2ns
+2n[scedilla]
+2nt
+2nv
+2ny
+2nz
+2[ntilde]b
+2[ntilde]c
+2[ntilde][ccedilla]
+2[ntilde]d
+2[ntilde]f
+2[ntilde]g
+2[ntilde][gbreve]
+2[ntilde]h
+2[ntilde]j
+2[ntilde]k
+2[ntilde]l
+2[ntilde]m
+2[ntilde]n
+2[ntilde][ntilde]
+2[ntilde]p
+2[ntilde]r
+2[ntilde]s
+2[ntilde][scedilla]
+2[ntilde]t
+2[ntilde]v
+2[ntilde]y
+2[ntilde]z
+2pb
+2pc
+2p[ccedilla]
+2pd
+2pf
+2pg
+2p[gbreve]
+2ph
+2pj
+2pk
+2pl
+2pm
+2pn
+2p[ntilde]
+2pp
+2pr
+2ps
+2p[scedilla]
+2pt
+2pv
+2py
+2pz
+2rb
+2rc
+2r[ccedilla]
+2rd
+2rf
+2rg
+2r[gbreve]
+2rh
+2rj
+2rk
+2rl
+2rm
+2rn
+2r[ntilde]
+2rp
+2rr
+2rs
+2r[scedilla]
+2rt
+2rv
+2ry
+2rz
+2sb
+2sc
+2s[ccedilla]
+2sd
+2sf
+2sg
+2s[gbreve]
+2sh
+2sj
+2sk
+2sl
+2sm
+2sn
+2s[ntilde]
+2sp
+2sr
+2ss
+2s[scedilla]
+2st
+2sv
+2sy
+2sz
+2[scedilla]b
+2[scedilla]c
+2[scedilla][ccedilla]
+2[scedilla]d
+2[scedilla]f
+2[scedilla]g
+2[scedilla][gbreve]
+2[scedilla]h
+2[scedilla]j
+2[scedilla]k
+2[scedilla]l
+2[scedilla]m
+2[scedilla]n
+2[scedilla][ntilde]
+2[scedilla]p
+2[scedilla]r
+2[scedilla]s
+2[scedilla][scedilla]
+2[scedilla]t
+2[scedilla]v
+2[scedilla]y
+2[scedilla]z
+2tb
+2tc
+2t[ccedilla]
+2td
+2tf
+2tg
+2t[gbreve]
+2th
+2tj
+2tk
+2tl
+2tm
+2tn
+2t[ntilde]
+2tp
+2tr
+2ts
+2t[scedilla]
+2tt
+2tv
+2ty
+2tz
+2vb
+2vc
+2v[ccedilla]
+2vd
+2vf
+2vg
+2v[gbreve]
+2vh
+2vj
+2vk
+2vl
+2vm
+2vn
+2v[ntilde]
+2vp
+2vr
+2vs
+2v[scedilla]
+2vt
+2vv
+2vy
+2vz
+2yb
+2yc
+2y[ccedilla]
+2yd
+2yf
+2yg
+2y[gbreve]
+2yh
+2yj
+2yk
+2yl
+2ym
+2yn
+2y[ntilde]
+2yp
+2yr
+2ys
+2y[scedilla]
+2yt
+2yv
+2yy
+2yz
+2zb
+2zc
+2z[ccedilla]
+2zd
+2zf
+2zg
+2z[gbreve]
+2zh
+2zj
+2zk
+2zl
+2zm
+2zn
+2z[ntilde]
+2zp
+2zr
+2zs
+2z[scedilla]
+2zt
+2zv
+2zy
+2zz
+a3a2
+a3[acircumflex]2
+a3e2
+a3[quotedblright]2
+a3[icircumflex]2
+a3i2
+a3o2
+a3[ocircumflex]2
+a3[odiaeresis]2
+a3u2
+a3[udiaeresis]2
+[acircumflex]3a2
+[acircumflex]3[acircumflex]2
+[acircumflex]3e2
+[acircumflex]3[quotedblright]2
+[acircumflex]3[icircumflex]2
+[acircumflex]3i2
+[acircumflex]3o2
+[acircumflex]3[ocircumflex]2
+[acircumflex]3[odiaeresis]2
+[acircumflex]3u2
+[acircumflex]3[udiaeresis]2
+e3a2
+e3[acircumflex]2
+e3e2
+e3[quotedblright]2
+e3[icircumflex]2
+e3i2
+e3o2
+e3[ocircumflex]2
+e3[odiaeresis]2
+e3u2
+e3[udiaeresis]2
+[quotedblright]3a2
+[quotedblright]3[acircumflex]2
+[quotedblright]3e2
+[quotedblright]3[quotedblright]2
+[quotedblright]3[icircumflex]2
+[quotedblright]3i2
+[quotedblright]3o2
+[quotedblright]3[ocircumflex]2
+[quotedblright]3[odiaeresis]2
+[quotedblright]3u2
+[quotedblright]3[udiaeresis]2
+[icircumflex]3a2
+[icircumflex]3[acircumflex]2
+[icircumflex]3e2
+[icircumflex]3[quotedblright]2
+[icircumflex]3[icircumflex]2
+[icircumflex]3i2
+[icircumflex]3o2
+[icircumflex]3[ocircumflex]2
+[icircumflex]3[odiaeresis]2
+[icircumflex]3u2
+[icircumflex]3[udiaeresis]2
+i3a2
+i3[acircumflex]2
+i3e2
+i3[quotedblright]2
+i3[icircumflex]2
+i3i2
+i3o2
+i3[ocircumflex]2
+i3[odiaeresis]2
+i3u2
+i3[udiaeresis]2
+o3a2
+o3[acircumflex]2
+o3e2
+o3[quotedblright]2
+o3[icircumflex]2
+o3i2
+o3o2
+o3[ocircumflex]2
+o3[odiaeresis]2
+o3u2
+o3[udiaeresis]2
+[ocircumflex]3a2
+[ocircumflex]3[acircumflex]2
+[ocircumflex]3e2
+[ocircumflex]3[quotedblright]2
+[ocircumflex]3[icircumflex]2
+[ocircumflex]3i2
+[ocircumflex]3o2
+[ocircumflex]3[ocircumflex]2
+[ocircumflex]3[odiaeresis]2
+[ocircumflex]3u2
+[ocircumflex]3[udiaeresis]2
+[odiaeresis]3a2
+[odiaeresis]3[acircumflex]2
+[odiaeresis]3e2
+[odiaeresis]3[quotedblright]2
+[odiaeresis]3[icircumflex]2
+[odiaeresis]3i2
+[odiaeresis]3o2
+[odiaeresis]3[ocircumflex]2
+[odiaeresis]3[odiaeresis]2
+[odiaeresis]3u2
+[odiaeresis]3[udiaeresis]2
+u3a2
+u3[acircumflex]2
+u3e2
+u3[quotedblright]2
+u3[icircumflex]2
+u3i2
+u3o2
+u3[ocircumflex]2
+u3[odiaeresis]2
+u3u2
+u3[udiaeresis]2
+[udiaeresis]3a2
+[udiaeresis]3[acircumflex]2
+[udiaeresis]3e2
+[udiaeresis]3[quotedblright]2
+[udiaeresis]3[icircumflex]2
+[udiaeresis]3i2
+[udiaeresis]3o2
+[udiaeresis]3[ocircumflex]2
+[udiaeresis]3[odiaeresis]2
+[udiaeresis]3u2
+[udiaeresis]3[udiaeresis]2
+.[acircumflex]2
+.[icircumflex]2
+.i2
+.[ocircumflex]2
+.[odiaeresis]2
+.[udiaeresis]2
+tu4r4k
+m1t4rak
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-uk.hyp b/Master/texmf-dist/tex/context/patterns/lang-uk.hyp
new file mode 100644
index 00000000000..5865fb54fe2
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-uk.hyp
@@ -0,0 +1,35 @@
+% context hyphenation file, see lang-all.xml for original comment
+
+% source of data: ukhyphen.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='uk'>
+% <sourcefile>ukhyphen.tex</sourcefile>
+% <title>TeX hyphenation patterns for the English language (UK)</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin hyphenation data
+
+\hyphenation {
+uni-ver-sity
+uni-ver-sit-ies
+how-ever
+ma-nu-script
+ma-nu-scripts
+re-ci-pro-city
+through-out
+some-thing
+}
+
+% end hyphenation data
+
diff --git a/Master/texmf-dist/tex/context/patterns/lang-uk.pat b/Master/texmf-dist/tex/context/patterns/lang-uk.pat
new file mode 100644
index 00000000000..968788f8b0f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/patterns/lang-uk.pat
@@ -0,0 +1,8554 @@
+% context pattern file, see lang-all.xml for original comment
+
+% source of data: ukhyphen.tex
+
+% begin description data
+
+% <!-- copied from lang-all.xml
+%
+% <?xml version='1.0' standalone='yes'?>
+%
+% <description language='uk'>
+% <sourcefile>ukhyphen.tex</sourcefile>
+% <title>TeX hyphenation patterns for the English language (UK)</title>
+% <copyright/>
+% </description>
+%
+% end of copy -->
+
+% end description data
+
+% begin pattern data
+
+\patterns {
+.ab4i
+.ab3ol
+.ace4
+.acet3
+.ach4
+.ac5tiva
+.ad4din
+.ad3e
+.ad3o
+.ae5d
+.aer3i
+.af3f
+.af3t
+.ag4a
+.ag5n
+.air3
+.al5im
+.al1k
+.al3le
+.am5ar
+.ama5te
+.am2i
+.am3pe
+.am3ph
+.an1
+.ana3b
+.ana3s
+.and2
+.an5da
+.an4el
+.an4en
+.an4gl
+.an4on.
+.an3s
+.ant3a
+.an3ti3
+.ant4ic
+.an4t5o
+.any5
+.aph5or
+.ap4i
+.ar5ab
+.ar5ap
+.ar4ci
+.ar5d
+.ar4e
+.ari4
+.ar4ise
+.ar4isi
+.ar5sen
+.art5icl
+.as1
+.as4q
+.as5sib
+.at5ar
+.ateli4
+.at5omise
+.at5omiz
+.at3r
+.at3t
+.au3b
+.au3g4u
+.aur4e5
+.aus5
+.authen5
+.av4
+.av5era
+.bap5tism
+.barri5c
+.bas4i
+.ba5sic
+.be3di
+.be3lo
+.be5r4a
+.be5sm
+.bi4er
+.blaz5o
+.bo3lo
+.bos5om
+.boun4d
+.bov4
+.bra5ch
+.bre2
+.burn5i
+.ca3de
+.ca4gin
+.cam5i
+.cam3o
+.can1
+.can5ta
+.ca5pitu
+.car4i
+.cas5ual
+.ca4ti
+.cen5so
+.cen5tena
+.cent5ri
+.cer4i
+.ch4
+.cit4a
+.clem5e
+.clima5to
+.co5it
+.co3pa
+.cop5ro
+.co3ru
+.co3si
+.co5ter
+.cotyle5
+.cri5tici
+.custom5
+.dav5
+.dea5co
+.de5lec
+.del5eg
+.de3li
+.deli5r
+.de1m
+.de5nit
+.de3no
+.der2
+.de3ra
+.de5res
+.de3ri
+.de5scrib
+.de5serv
+.de5signe
+.de5sir
+.de5sis
+.de5spoi
+.determ5i
+.de3ve
+.de4w
+.di4al.
+.dia3s
+.di4at
+.din4a
+.dio5c
+.do2
+.do4e
+.domest5
+.du4al.
+.du4c
+.dys3
+.east5
+.echin5
+.eco3
+.ec3t
+.ed5em
+.ed4it.
+.ed4iti
+.eg4
+.ei3d
+.ei5r
+.el3ev3
+.el2i
+.elu5s
+.em3b
+.em5in
+.emp4
+.em5py
+.en1
+.en5c
+.en4ded
+.en3s
+.ent2
+.en5ta
+.eos5
+.epi1
+.epi3d
+.er2a
+.er5em5
+.er4i4
+.er4o2
+.eros4
+.erot3
+.er4ri
+.es1
+.escal5
+.es3p
+.es3t
+.etern5
+.eth3e
+.eu1
+.eur4
+.eval3
+.evol5ut
+.ew4
+.ex1
+.ex3a
+.eye3
+.fal4le
+.far4i
+.fec5unda
+.fen4d
+.feoff5
+.fi2
+.fi5lia
+.fil5tr
+.fin5ess
+.fin3g
+.fi5n4it
+.fis4c5
+.fo3c
+.fran5ch
+.fu5ga
+.ga4m
+.gam5et
+.gen4et
+.ge5neti
+.gen5ia
+.ge3ro
+.glor5io
+.gnost4
+.go3no
+.gos3
+.hab2
+.ha5bili
+.hama5
+.han4de
+.hast5i
+.he4i
+.hem5a
+.hi2
+.hi3b
+.ho2l
+.ho5rol
+.hov3
+.hy3lo
+.ico3s
+.idi2
+.ig3
+.ig1n
+.il4i
+.im5b
+.in1
+.in3d
+.in3e2
+.in2i
+.in3o
+.in3t
+.invest5i
+.ir3r
+.is4c
+.is4li
+.is4o
+.iso5m
+.ka5ro
+.ki4e
+.kin3e
+.lab4o
+.la4me
+.lam5enta
+.lan5i
+.lash4e
+.le4m
+.len5ti
+.le2p
+.lep5r
+.les5son
+.le5van
+.librar5
+.lig3a
+.li3o
+.li4ons
+.li4p
+.loc3a
+.lo4gia
+.lo2p
+.loph3
+.lous5i
+.lov5er
+.lub3
+.lyo3
+.mac5u
+.mal5ad5
+.ma5lin
+.mar5ti
+.math5
+.me5lodio
+.ment4
+.men5ta
+.me5rid
+.me5rin
+.met4er
+.mi4e
+.mi3gr
+.min5ue
+.mirk4
+.mis1
+.mi5to
+.mo3bi
+.mo5lec
+.mon3a
+.mor5ti
+.mu3ni
+.mu3si
+.musi5co
+.myth3
+.na5k
+.nari4
+.nast4
+.nas5ti
+.nec3t
+.ni4c
+.ni5tro
+.no4c
+.nom3o
+.nos3t
+.no5tic
+.nucle5
+.obed5
+.ob3el
+.ob3l
+.od4
+.oed5
+.oe5so
+.of5t
+.oi4
+.ol4d
+.ome2
+.om5el
+.on4ce
+.on4e
+.op2i
+.opt5a
+.or1
+.or4at4
+.ora5tori
+.or5che
+.or3d
+.ore4
+.or3eo
+.or4i
+.orner4
+.or2o
+.os1
+.osi4
+.oth5
+.out1
+.ov4
+.pal5i
+.para5dis
+.par5af
+.para5t
+.pa5ta
+.pa4tio
+.pec3t4
+.pecu3
+.ped3e
+.pend4
+.pen5de
+.pep3t
+.peri5n
+.perse5c
+.pe5titi
+.ph2
+.phe5nom
+.phon4i
+.pi2e
+.pi3la
+.plast4
+.plic4
+.plica4
+.plos4
+.po3la
+.po5lite
+.po2p
+.pop5l
+.po5sitio
+.pos5si
+.pro5bat
+.pur4r
+.put4te
+.ra5cem
+.ran5gi
+.re3ca
+.ref5ere
+.re5gar
+.re1i
+.re5lin
+.re1m
+.re5o
+.res5ci
+.re5sen
+.re5spo
+.re5stat
+.re5store
+.re5str
+.re3ta
+.re5u
+.re3w
+.rib5a
+.rin4
+.rit2
+.rol4la
+.ros3a
+.sa2
+.sac5r
+.sal4i
+.sa5lin
+.salt5er
+.sanc5
+.sap5a
+.sa3vo
+.sci3e
+.sea3s
+.sect4
+.sec5to
+.se3gr
+.sen3t
+.se1q
+.ser4ie
+.ses1
+.sev5era
+.sh2
+.si5gno
+.sis3
+.st4
+.stat4o
+.stra5to
+.string5i
+.su5da
+.sulph5a
+.sul3t
+.tact4i
+.tac5tic
+.ta4m
+.tamar5
+.tar5o
+.tect4
+.tel5a
+.tell5e
+.te4m
+.te5ra5t
+.ter4p
+.th4
+.tho4
+.thol4
+.ti2
+.til4
+.ti5ni
+.tit4is
+.tor1
+.tran4c
+.tri5bal
+.tri3d
+.trin4a
+.tri5sti
+.tro4ph
+.troph5o
+.tro4v
+.tular5
+.turb4
+.turi4
+.tu5te
+.tu3to
+.ul4l
+.ulti5mat
+.un5ce
+.un5ch
+.un3d2
+.under5
+.un3e
+.un3g
+.uni3c
+.uni3o
+.un3k4
+.un5s
+.un3t4
+.un5u
+.up1
+.up3l
+.ura4
+.ur5eth
+.ur4o
+.va5led
+.ve2
+.vec5
+.ve5lo
+.vent5il
+.ver4ie
+.ver3n
+.vic5to
+.vi2s
+.vis3i
+.vi5so
+.vo1c
+.vo5lut
+.wine5s
+.xy3l
+.za5r
+a4a
+1ab
+2ab.
+2aba
+ab5are
+abay4
+2abb
+ab5ber
+2abe4
+ab3erd
+ab3err
+a3bet
+ab1ic
+a3bie
+2abin
+4abio
+abi5on
+ab3ita
+ab4itu
+ab3la
+abli4
+4abolic
+ab3om
+ab3ota
+3about
+ab1r
+2abs.
+ab1ul
+abu4lo
+ab3use
+ab3usi
+2aby
+ac2a
+ac5abl
+ac3al
+5acanth
+ac5ard
+a5cat
+ach5al
+a5chini
+ach5ism
+achro4
+ach5ur
+2aci
+a4cic
+aci4ers
+acif4
+4acit
+ack5a
+ac3li
+4aco.
+aco3d
+ac5onr
+4acos
+4acou
+ac1r
+ac3ry
+act5ate
+act5ile
+ac2to
+act5ory
+ac2t5r
+ac5uat
+a5dai
+ada3v
+4adee
+ad5eni
+ad4ha
+ad3ica
+a5dif
+4adil
+adi4op
+adi4p
+adis4i
+a3diti
+3adju
+5admit
+a2do
+4adoe
+4adoi
+ad3ol
+a3dos
+ad1ow
+ad1r
+adram4
+4a2du
+ad3ula
+ad3um
+4ady
+ae5a
+ae4cit
+aeco3
+4aed
+aed5is
+ae5g
+ae3on
+ae5p
+aerody5
+ae4s
+ae5si
+aes3t
+aet4a
+aeth4
+aet4or.
+aev3a
+4af.
+4afe
+af5ta
+a4fu
+ag4ari
+4ageri
+a5ghe
+a5gia
+agi4as
+4agino
+4agl
+agli4
+4ag1n
+ag3oni
+agor4a
+ag5ot
+a2gr
+ag3ri
+agru5
+2ah
+a1h2a
+ahar2
+aha5ra
+a1he
+ah4n
+a5hoo
+2ai2
+4ai.
+ai3a
+a1ic
+aid4a
+aid5er
+aig2
+ai5gu
+ail3er
+ail3o
+aim5er
+ain5ders
+ai5nea
+a3ing.
+ain3i
+ain5o
+aint5er
+air5a
+air5p
+air3s
+ais1i
+a5ism
+2a1j
+a4ju
+2ak
+akel4
+ak5u
+al5abl
+alact4
+a1lae
+al5ais
+ala3ma
+al5ance
+al3at
+a5lav
+alc3at
+al3ch
+ald5ri
+2ale
+a3lec
+aleg4
+ale5ma
+al5ende
+a1leo
+a2let
+al3ibr
+ali4ci
+al5ics
+al1id
+al3if
+5alig
+al1in
+a5lini
+alin5o
+al5ipe
+al5ipot
+4alis.
+4aliu
+4alk
+alk5ie
+al4lab
+al4lag
+alli5an
+allig4
+al4lish
+a5loe
+al3ogr
+a3lom
+a3loo
+al1or
+al4orim
+alos4
+a4lou
+al3ous
+a5low
+al5pen
+al3ph
+al5tati
+al3tie
+alu3b
+al5ued
+al3ues
+a5lumnia
+al1va
+al5ver
+alv5u
+2a1ly4
+a5lyn
+2a2m
+a5mad
+ama4g
+aman5d
+a5marine
+a3mas.
+am1at
+a5m4atic
+am5atu
+am4bin
+3ambu
+am5elo
+a3men
+amen4d
+am3era
+am5erl
+am1i
+ami2c
+am5ica
+amic5r
+3amid
+a3mili
+am5ily
+amini4f
+am5iniz
+aminos4
+a5mis.
+a4mium.
+a3mon
+amor5a
+amort3
+am5ose
+am2p
+am5peri
+amphi5g
+amp3li
+ampo5l
+am3ul
+amyl5
+a2n
+an2a
+a5nadi
+an3ae
+an3age
+ana5k
+an3ali
+an3arc
+a5nast
+an4con
+an3d4at
+and5au
+and5eer
+an5del
+an5dif
+and5ist
+an5dit
+an4doni
+an4ea
+an5eer
+an3ell
+anel5li
+an3eu
+an3gan
+angov4
+an4gur
+4anh
+an3ic
+ani3f
+an5ifo
+4anig
+an5ion
+anis5te
+4anity
+4aniu
+an5no
+4anny
+an1o
+an2oe
+an3oma
+anor3
+an2os
+an5ot
+an2s
+an3sc
+an4sco
+ans3il
+an4sur
+an2t2a
+ant5abl
+an3tal
+an5tam
+an2te
+1anth
+an4thi
+3anthr
+4antic
+an4tie
+an4ting
+ant4iv
+an4tone
+ant4r
+an4tus
+an5tym
+an3ul
+an3um.
+an5ums
+a3nur
+a5nut
+an2y
+an5ya
+a5nyi
+2ao
+aol3i
+5aow
+2ap
+4ap.
+4apa
+a1pac
+ap3al
+ap5aro
+ape5li
+a5peu
+aph5em
+aph3i
+aph5ol
+aphyl3
+ap1i
+ap5icu
+ap3in
+ap4ine
+a5pir
+a3plan
+ap5li
+apo5str
+apo3th
+a2pr
+ap5ron
+4aps
+apt5at
+apu5lar
+a5pun
+a4q
+a5qui
+a2r
+4arabi
+ara5bo
+aract4i
+ara2g
+ar3age
+ar4aged
+ar5agi
+ar3ago
+a3raj
+ar3all
+ara3m
+aran4g
+aran5te
+ar5apa
+ar1at
+a3rau
+ara3v
+ar3ba
+arb5et
+ar4bid
+ar4bl
+arb3li
+ar4bul
+ar5chet
+arch5o
+ar5dina
+ar4done
+ar3en
+aren5d
+ar5ett
+ar3ev5
+ar5gh
+ar3gu
+ar3h
+ar1i
+ar5iff
+ar4ill
+a5ri5net
+ar5ini
+a5rishi
+arm3er
+ar5mit
+ar3nal
+ar3nis
+ar3od
+ar5oid
+aro4mas
+aro4n
+a5roti
+a5rouc
+ar3ox
+arp5ers
+ar4pu
+2arr
+ar2rh
+ar2s
+ars5al
+ar3so
+art5at
+ar2th
+arth4e
+arth3r
+ar5tiz
+2aru
+ar3um
+ar5un4
+a3ryo
+a5ryt
+ar5z
+as1a
+as4af
+asan2
+2asc
+as5con
+as5cot
+as2cr
+as2e
+as3ect
+4ased
+asep4
+ash5ay
+ash5il
+as5ily
+as3in
+a5sio
+a3sit
+as5iv
+ask5er
+aski4
+as4la
+as4lo
+2aso
+as5och
+a4soned
+as5or
+as3ph
+ass2
+assa5gi
+ass5ibl
+as4sil
+assit5
+2asta
+as4tat
+as4tia
+as3tis
+as4tit
+4asto2
+as3tra
+as4tri
+as1u
+as4un
+as5ur
+2a2ta
+4atabi
+a5talis
+atam4
+ata3p
+atar3a
+ata3s
+ata3t4
+at3eau
+at3ech
+at5eer
+a5tel.
+ate5le
+at5enat
+at3ent
+4ater
+at3era
+at5ernis
+at5erniz
+4atess
+at5et
+4a2th
+ath3a
+a3then
+ath5erin
+ath5ero
+ath5ete
+ath3i
+ath3od
+a5thon
+ath5r
+4a3tia
+ati2c
+at5icis
+ati5cit
+at5iciz
+a2tif
+a4t1i4l
+a4tim
+a2t3in
+4atina
+at5ing
+4at4is.
+at1it
+atit3u
+atitud5i
+4atiu
+at4ivi
+a5tiviz
+a2to
+5at5od
+4atog
+2atol
+4aton
+a3too
+a4tops
+a5torian
+a4tory
+atos4
+a5toz
+2a2tr
+at3ra
+a4tre
+5at5ress
+at1ri
+atric5u
+at3ron
+at5rou
+at4tag
+2a2tu
+at1ul
+atu4m
+at3ura
+at3urg
+4a2ty
+2au2
+4au.
+aub5i
+4auc
+au5cer
+auc3o
+aud5er
+audic4
+aul3i
+aul4t
+aul5ted
+ault5er
+ault5i
+au3ma
+aun2
+aun5chie
+aun3d
+aun4dre
+au5reo
+aur4o
+au5ror
+4aus.
+aus5er
+aus5p
+aus4ted
+aut3ar
+aut3er
+au3th
+2av
+av4ab
+ava4g
+av3age
+ava5la
+av5alr
+av5ant
+av5ar
+avas3
+av3end
+av3ern
+av3ig
+aviol4
+av1is
+aw5er.
+aw5ers
+aw1i
+aw5nie
+aw5y
+a4x
+ax2id
+4ay
+ay5la
+ay3m
+ayn4
+ays2
+ay5si
+ay5sta
+ayth4
+2az2
+az3ar
+aze4
+az5ee
+azyg4
+azz4l
+2ba.
+ba5bir
+3back
+baen4
+bag4a
+5bah
+ba4i
+bal3a
+balm5i
+ba5lon
+bal5u
+bam4a
+ban4a
+ba5nan
+b4ane
+5bang
+b4aniti
+b4ans
+ba4p1
+5barb
+bar4d
+bardi4
+bar4n
+ba5rom
+bar3on
+5bars
+1bas
+bas4te
+ba4th4
+3batic
+ba5tio
+bat5on
+battle5
+2b1b2
+b4bata
+b3bli
+b4bone
+b1c2
+bcord4
+2b1d
+bdeac5
+bde4b
+bdi4v
+b2e
+4be.
+3bea
+4beas
+be3ca
+3becu
+2bed
+be3da
+bed5el
+bed2i
+be4do
+be5dra
+be4du
+5bee
+3bef
+be3go
+be5gr
+be3gu
+1bel
+be3la
+2bele
+be3lit
+bel4t
+be3m
+ben4d
+bend5a
+bend5er
+be1ne
+be5nig
+be5nu
+4beo
+be3q
+2bere
+berga5m
+berl4
+5berr
+ber5s
+b5ertin
+be1s2
+2bes.
+be3sl
+be3tr
+be3w
+2b1f
+bfa4
+4b1h
+b4ha
+2bi.
+1bia
+bi4b1
+bicen5
+3b2id
+bid5i
+b4ie
+bi4ers
+bif4
+bi4fid.
+bi5ga
+bigu3
+b1il
+b2ile
+5biles
+3b2ill
+4bim
+bimet5
+5bina
+5bin4d
+bind3e
+bin5et
+bin5i4
+1bi2o
+bio3l
+bio5m
+bi3ou
+bip4
+bi5q
+bir4
+bi3re4
+bi5rus
+b2is
+5bism
+bis4o
+bisul5
+3bitua
+4bity
+bi5ve
+b1j
+4b5k4
+2bl2
+5blac
+blag4
+b3lan
+5blast
+bla5tu
+blem5at
+3bler
+5blesp
+4blik
+blim3a
+bli3o
+bli2q
+b3lis
+4bly
+2b1m
+bment4
+bmi4
+4b1n
+bo2
+4bo.
+3boa
+bo5am
+5bob
+bod5i
+bo5h
+2boid
+4boke
+bol4e
+4boled
+bol3i
+bol4t
+3bon
+bon4c
+bon4e
+bon4ie
+boni4f
+bon4sp
+1boo
+b3orat
+bor3d
+bor5ee
+bor5et
+3bori
+bor5ic
+bor5io
+bor4n
+bot3an
+5boti
+boun5ti
+3bour
+bous4
+bow2
+bow3s
+4boxy
+5boy
+br4
+3brach
+4bral
+bram4
+b2ran
+bran4d
+4bre.
+b4reas
+4b2res
+brev5et
+b2rid
+5brief
+bring5
+bri4os
+b5rist
+b4roa
+bro4ma
+bros4
+brum4
+4bry.
+4b1s2
+b3sc
+bscon4
+bsen4
+bserv5an
+b5si
+bsin4
+bso2
+bsol3e
+bso3lu
+b4stac
+bstupe5
+2b1t
+b5tlet
+4bu.
+5bub
+buf5fer
+b4uli
+b4ulos
+bun2
+bun4a
+b5u5nat
+bunt4
+bur3e
+bur4ri
+busi4e
+buss2
+bus5si
+3bust
+bu5tar
+b3ute
+b5utin
+3butio
+but4iv
+b5ut5o
+b1v
+4b3w
+2by
+4by.
+3byi
+bys4
+5byt
+2ca.
+cab5in
+c4ace
+caco3
+cad4r
+5caf
+ca3go
+5cai
+5cak
+c1al
+c4ala
+ca5laman
+cal5ar
+3calc
+ca5lef
+call5in
+cal4m
+ca3ly
+ca3ma
+cam4i
+ca5nar
+c2an4e
+c4ano
+ca3noe
+can5tar
+can5ted
+can4tic
+can4tr
+5cao
+1cap
+ca5pil
+capt4
+cap3ti
+cap3u
+1car
+ca3ra5c
+car5ame
+ca3ree
+ca3r4i3c
+car3if
+car5m
+car3ni
+car3ol
+car5on
+car5oo
+ca3rou
+car4v
+case5
+cashi4
+3cas3s
+cas5tig
+3casu3
+c1at
+c4at.
+c2atc
+c4atom
+ca3t2r
+c4ats
+cat4u
+3cau
+caulk4i
+cav3il
+3cay
+c1c4
+ccent5r
+cces4sa
+c3ch
+cci3d4
+ccip4
+ccle3
+4ce.
+4ceab
+cean3
+3ceas
+ce4ci
+2ced
+5ceda
+ce3dar
+3cede
+3cedi
+4cef
+ce5g
+3ceiv
+cel3ai
+cel5ib5
+5cell
+cel5lin
+celo4
+ce5lom
+4cely
+2cem
+ce4met
+3cemi
+ce4mo
+1cen2
+5cenc
+cen5ci
+cen5ded
+cend5en
+cend5er
+cen3i
+2cenn
+3cent
+cent4a
+cen5ted
+cen5ter.
+cen5ters
+cen5tes
+1cep
+cept3a
+cep5tic
+3cera
+cer4bi
+3cerd
+ce3rem
+5cern
+5cess
+cest5o
+ces5tr
+ce2t
+cew4
+2ch
+4ch.
+4chab
+3chae
+3chai
+cham5per
+chan5gi
+cha3pa
+chec4
+4ched
+3chee
+3chem
+che3ol
+ch1er
+ch4eri
+5cherin
+ch4erl
+4ches
+3chete
+ch5eu
+che5va
+3chew
+ch5ex
+5chi.
+3chia
+3chico
+ch3ily
+ch4in.
+ch3inn
+3chio
+5chip
+chizz4
+ch5k
+5chlor
+4chm
+1cho
+cho3a
+5choc
+4choi
+ch5oid
+3chor
+4chored
+chor5ol
+4choso
+3chot
+4choti
+ch5ous
+chow5
+3chr
+chur4
+3chut
+5chyd
+3chyl
+3chym
+1c2i2
+4ci.
+4ciac
+cia4m
+ci3ca
+4cids
+4cie.
+ci3er
+ci3est
+ci5et
+ci3f
+cifi4
+4cig
+ci3ga
+cigar5
+3cil
+cil5lin
+2cim
+cim3a
+ci3me
+5cimen
+4cinab
+4cind
+cine5a
+cine5mat
+ci5ness
+4cint
+ci3ol
+ci5om
+ci4po
+cisi4
+cit3r
+ck1
+ckar5
+cka5t
+c4ke
+ck5if
+ck4sc
+cl2
+cla5rif
+3clas
+c2le2
+2cle.
+c5lec
+clemat4
+clev3
+cli1m
+c3ling
+cli2q
+clo4q
+c4lotr
+clue4
+clyp5
+5clys
+cn2
+c3ni
+1c2o2
+4co.
+3coa
+co5ba
+3coc
+co3ci
+co5cu
+co3dic
+co3dif
+4cody
+3coe
+co5et
+co3gr
+4c3oid
+co3inc
+4col.
+col3a
+co3log
+5colou
+co5ly
+co5mas
+co4me
+co3mo4
+comp4
+con1
+con4ati
+con4ch
+cond5er
+con4ey
+con4ie
+con3s
+con3t
+conta5d
+3coo
+coop4
+co3or
+cop4e
+co3ph
+co5pl
+co3po
+cop4t
+2cora
+cor5ded
+cord5er
+4cored
+co3rel
+3corn
+4coro
+co5rol
+5cort
+3cos.
+cost3a
+cost5er
+co5ta
+3co3tr
+5coty
+cous5t
+cov1
+co3va
+cow5a
+coz4
+co5zi
+c1q
+cr2
+5craf
+craft5i
+c4ran
+5crani
+cra5niu
+cras3t
+cra4te
+c2re
+4crean
+cre3at
+cre4p3
+5creti
+cre4to
+cret5or
+cri3l
+cron4
+crost4
+4crou
+5c4rus
+cry2
+crym3
+cryo3
+4c5s4
+csim5
+2ct
+c2ta
+c3tac
+ctac5u
+c5ta5g
+ct1an
+ct5ant
+c5taria
+c3tato
+c1te
+c4tea
+c2t5ee
+c4tent
+cter4ia
+ct5es
+ct5et
+ct2ic
+c5ticia
+c4tics
+ctifi4e
+c3tim
+ct4in.
+ct4ina
+ct5ing
+c3tini
+c5tin5o
+c5tio
+c3t2is
+c3tit
+c4titu
+c4tity
+ct5ive
+ct4ivit
+ct5olo
+c1tom
+c3ton
+c5toris
+c5toriz
+c1tr
+c2tre
+ctro5t
+c1tu
+c2tum
+c1ty
+cub3at
+c4uf
+cu5ity
+cul5ab
+c2uli
+cull5er
+cull5in
+1c2ult
+cu4mi
+5cuna
+cun4e
+5cuni
+5cuol
+cu5pa
+cu3pi
+c3upl
+1cur
+cur4er
+cur5ial
+4cur4o
+1cus
+cus5a
+c3utiv
+c3utr
+5cuu
+cu5v
+2cy.
+cy4bi
+1cyc
+cyl3
+cy4m
+cy5no
+cys4
+cys5to
+cy4t
+cz2
+4da.
+d4abr
+1d2ac
+dach4
+d5ache
+3dact
+d1ag
+d4a4gi
+d4ale
+d4alg
+dal5ler
+dam5a
+3dame
+d3ami
+da5mu
+3dang
+d1an4t
+d3ap
+d3ard
+5darm
+3d4as2
+dast5a
+d1at
+dativ4
+dat4u
+daugh3
+daun5te
+3dav
+d3b
+d3c4
+d1d4
+d4dere
+d3di
+d3dler
+d3dli
+d3dyi
+2de.
+deac3t
+de5aw
+de4bi
+deb5it
+3dec
+de5cant
+de4cil
+de1cr
+4dect
+ded3i
+defor5e
+de4fy.
+de3g
+de4gu
+de3io
+5de3is
+de3lat
+deli4e
+del5ler
+del5li
+de5lo
+1d4em
+4demie
+4dem4is
+demo4n
+de4mons
+de3mor
+de4mos
+4demy
+de1n2a
+den4d
+4dene
+d3enh
+deni4e
+dens5a
+dens5er
+den5tit
+de3od
+deo3l
+deon2
+deont5
+de1p
+depen4
+deposi4
+de2pu
+d3eq
+derac4
+de3rai
+d4ere
+4dered
+de5reg
+3derer
+1deri
+der3k
+3derm
+der4mi
+der5min
+5derne
+3dero4
+der5os
+der3s
+5deru
+4des.
+de3sa
+5desc
+des4ca
+de5scal
+de3sec
+des4i
+de3sid
+des5igna
+des1p
+des5pon
+de3sq
+d3est.
+des3ti
+1de1t
+de3tes
+de5th
+de2ti
+dev3il
+de3vis
+de3vit
+de4voi
+devol5u
+3dex
+2d5f
+dfol4
+d2g
+dg4a
+dgel4
+d4gen
+d3gr
+4d1h
+dhot4
+d4hu
+4di.
+1dia
+di2ad
+3diar
+diat5om
+4d1ib
+d1ic.
+dic5am
+di4ce
+di3ch
+d5icl
+dic5ol
+1dict
+dic5tat
+dic4te
+5dicul
+d5icur
+1did
+di4ers
+3di3ev
+d4ifo
+dig3al
+di3gam
+dil4
+5dill
+dilo4
+di3lu
+di5mer
+dimet4
+di1mi
+2d1in
+din4e
+din5gi
+di5nos
+3di1o
+dio4c
+di4ola
+dip5t
+3dire
+di3ri
+4d5iro
+di4s1
+d4isc
+disen3
+3disia
+3diss
+d4itas
+d4iter
+dithe4
+d3ito
+ditor3
+2dity
+1diu
+1di1v2
+di4val
+di5vine
+dix4i
+d1j
+2dl4
+d1la
+5dlef
+5dlest
+3dlew
+dlin4
+d1lo
+d5lu
+2d1m
+4d1n2
+1do
+4do.
+d4ob
+do4c3u
+dog4a
+do4j
+d4ol.
+dol3en
+do5line
+dol5it
+do4lon
+d4ols
+5dom.
+doman4
+domin5
+dom5ino
+dom5it
+do5mo
+don4at
+4dony
+3doo
+d2or
+4dor.
+dor4m
+dort4
+d4os
+do5sim
+dossi4
+dot1a
+dot4tin
+2dous
+d4own
+3dox
+d1p
+dr2
+d5rail
+d3ral
+3dram
+dran4
+d4ras
+drast4
+3drel
+dres4
+dress5o
+dri4e
+d4rif
+dri4g3
+d4rom
+dropho4
+drunk3
+4d1s2
+d5sl
+ds3m
+ds4mi
+d4sw
+dt4
+dt5ho
+1du
+2du.
+du1at
+3duc
+duch5
+duci5an
+du4co
+du5eli
+du5ell
+du5en
+du5ett
+du5in
+dul3c
+d3ule
+dul4l
+dum4be
+dun4a
+d5un4c
+du2p
+du3pl
+5duro
+d5use
+dust5er
+du3u
+d1v
+dver2
+dvert3
+dvoc5at
+2d1w
+dwell3
+2d2y
+dy4ad.
+dy5ar
+5dy4e
+5dyk
+dyl2
+dyll3
+5dymi
+3dyn
+dys3p
+d3zo
+ea2
+4eab
+e1act
+eac4te
+ea5cu
+e5add
+ead3er
+ead1i
+ead3li
+ea4g
+eak1
+eal3a
+eal3er
+ea3log
+eam4bl
+eam3er
+ean5i
+eap2
+eap5er
+e3app
+ear3a
+ear3er
+ear4li
+e5ar2r
+ear4te
+earth5i
+eas5er
+ea4soni
+e1as1s
+eassem4
+eas4t
+east5i
+eat5eni
+eat3er
+eat5ie
+e3atif
+eatit4
+eat4itu
+e3atri
+e4atu
+eau3
+eav5i
+eavi4e
+eav5ou
+eaz5i
+e1b
+ebar4
+eb2b
+ebe4
+e4bel.
+e4bels
+e2ben
+eb5et
+eb2i
+e5bil
+e4bin
+e4bis
+e4bl
+e4bos
+ebot3o
+e2br
+eb1ra
+eb2t
+e4buc
+ebus5i
+ec2a
+ec3ade
+ecad5en
+ecal5e
+e5cam
+e4capo
+ec3at
+ec5ath
+e1ce
+ecent5o
+ech3i
+e4cib
+eci4f
+ecip5i
+e1cl
+ec3lip
+econ4sc
+econstit5
+ec3ora
+ec5oro
+ec3rat
+ec5rean
+e4crem
+ec1ro
+ect5ati
+ec4ter
+ecti4c
+ec4tit
+ec4t5us
+ec1ul
+e5culi
+2ed
+e5dans
+e2dat
+ede2
+e4ded
+e5deh
+e4dele
+edes3t
+ede3te
+edeter5
+e3dev
+e5dew
+ed4g
+edi4als
+ed5ical
+ed5ics
+ediges4
+ed5igr
+ed3ime
+ed1it
+edi2v
+ediv5id
+ed3li
+edor4
+e4dox
+ed1ro
+edu5cer
+e2dul
+ed3ulo
+e4d5ur
+ee4ce
+eed3er
+ee4do
+ee2f
+ee5g
+ee1i
+ee2l1i
+ee2m
+eem5er
+eem3i
+eep1
+ee4pa
+eer4ine
+eesi4
+ee3to
+e1f
+efact5o
+efal4
+ef5eree
+ef5inite
+e4fite
+ef4l
+efor5est
+2efu
+e4fug
+efut5a
+egel3
+egi5a
+e4gib
+e3gla
+eg3le
+eg4mi
+eg5nab
+e5g4on
+e2gr
+e5gur
+e1h2
+e5ho
+eh5s
+ehy2
+ehyd5r
+eid4
+5eido
+4eif
+eig2
+e5ignit
+e4in.
+e3inc
+e2ine
+e1ing
+ein5i
+e4ins.
+ei4p4
+eir3o
+4eis
+eis3i
+eit5er
+eith4
+e2iv
+eiv3er
+e2iz
+e1j
+ejudic4
+ek3en
+ek5is
+ek4l
+e4lac
+e5lad
+el5age
+elam4
+el5anc
+elast3
+e4lates
+el5ative
+elch5er
+eld3er
+2ele
+elea5g
+4e4led
+el5eni
+el3eno
+ele3o
+ele5ph
+el1er
+e1les
+e5less
+e4leste
+el3et3o
+elev3a
+ele3vi
+el5ex
+e4l3ica4
+e1lie
+eli4ers
+e3lim
+el3ing
+eli3on
+e4li4s
+elit4t
+e3liv
+el4lab
+ell5iz
+e3loa
+e3loc
+elo5ca
+eloc3u
+elo4di
+e2log
+elom5ate
+el5op.
+el5ops
+elp5in
+el3so
+el5tie
+e1lu
+elu4m
+elus4
+elv4
+e5lyi
+3elyt
+em3ago
+em3ana
+emar4
+emarc5a
+em5atiz
+emat5ol
+em5bi
+e1me4
+e4mee
+e4mel
+e3mem
+e4m3era
+em5ero
+emet4e
+em4icis
+e4mie
+e2mig
+emig5ra
+em3ina
+em5ing
+e3mio
+em3ism
+e4mita
+e4miu
+em4mae
+4emnit
+emo3bi
+emod4u
+e2mog
+e4moi
+em3olo
+em5om
+4emon
+e3moni
+emon5ol
+e2mor
+em5oris
+em3orr
+e4motic
+e5moz
+empa5r
+empara5
+em5pes
+4empli.
+em4pre
+em3um
+e5mut
+en3ac
+e4nal
+en3am3o
+en4ann
+e2n3ar
+en3as.
+ena5ture
+3encep
+en4cile
+enct4
+2end
+en4d5al
+en4dedl
+end5rit
+4ene
+ene5d
+en3ee
+e5nelle
+e5nep
+e2ner
+e5nereo
+ener5v
+en5esi
+e3ness
+en1et
+en4ett
+e2n3eu
+e3new
+en3gi
+en3ic
+en5ier
+en3ig3r
+en5in
+enit5u
+en3k
+en1o
+en3oi
+eno2m
+en3oty
+enov3
+en2s
+ens5al
+en3sp
+en4sum
+en4sus
+ent3ar
+en4ters
+en5tia
+en4tify
+en2to
+en4tri
+ent5rin
+ent5up
+en4tus
+4enu
+en3ua
+en3uf
+en3ur
+en5ut
+5enwa
+eo3b
+e4och
+e4oda
+eof2
+eo2l
+eol5ar.
+eol5at
+eologi4
+e5olu
+eo3m
+eon4a
+e3ont
+eop4t
+e1or1
+eor4de
+eor3e
+eor5o
+eo1s2
+eo4to
+e1pa
+ep4al
+ep5arc
+epa4t
+epend5en
+ep5ert
+e4pete
+epe5titio
+ep5ex
+eph1
+eph4i
+e2pig
+e5pla
+ep3lic
+epol3a
+epol3i
+epolit5
+ep3reh
+epres5e
+ep5rim
+e4p5rob5
+ept3or
+e1p4u
+e3pur5
+e4puta
+equin4
+equi5no
+er1
+era4cie
+era4do
+era4g
+era4l
+er3aph
+er3api
+er3apy
+4erati.
+4eratim
+er5atu
+er3bat
+er3be
+erb5os
+2erc
+er3ch
+er3cl
+2erd
+erd5ar
+erdi4e
+2ere
+er3eal
+4ered
+er3egr
+er5el.
+er5ell
+er5els
+e4reme
+er3en
+5erend
+eren4e
+ere5ol
+e3req
+er3er
+ere4s
+er5ese
+er3esi
+er5este
+er5esti
+eres5tr
+eret4
+er3et.
+er3ets
+er3ett
+ere4v
+er3ex
+ergi3v
+er3gl
+er3ia.
+er4ian
+eri4cid
+5er5ick
+er2id
+er3ie
+er3iff
+er4imet
+er3in
+eri4na
+eri4on
+er3iou
+er4isc
+eri5sta
+4eri2t
+e3riv
+er5iz
+4erj
+erk4
+er3me
+er4moi
+5ernacl
+er5nalis
+ern3er
+ern3is
+ern3it
+4ero.
+er3oid
+ero5is
+ero5st
+erpent5in
+erre5la
+er4rep
+er5sine
+er5ted
+er4ter
+ert5er.
+ert5ers
+er4thi
+ert5iz
+2eru
+eru4b
+eru5d
+erund5
+er4vil
+5erwau
+eryth3
+2erz
+4es.
+es5am
+es5an
+e2sc
+es5can
+es5che
+esci5e
+escut5
+e3sea
+e3sect
+e5see
+e5seg5
+ese4l
+es5enc
+e3sh4a
+e1shi
+e5shu
+esi4an
+es5ic.
+e5sick
+es5iden
+esi5diu
+es5ies
+es3im
+es3in
+e5sion
+e4sit
+es4it.
+es4its
+e3skin
+e3s4mi
+es4od
+es3ola
+es3ol3u
+es3ona
+eso3p
+e1sor
+es3per3
+es5pira
+es5pit
+es4pl
+esplen5
+es5pot
+e5s2pr
+es4s3an
+essar5
+ess5ee
+es4sil
+es2so
+esta4b
+est3an
+e5star
+es5tau
+e2sti
+est5ifi
+est5igati
+e3stoc
+es5too
+est4r
+estud4
+e1su
+e2s3ul
+es4ur5
+et2a
+et3al.
+et5allis
+et3al5o
+eta5me
+eta3p
+et3ari
+et5ary
+et4as
+et3ate
+et3ati
+et5ay
+et3eer
+etell5i
+etend5er
+et5eni
+eter2
+et3er3a
+et5eria
+etex4
+e2th1
+ethyl3
+2etia
+e3ticu
+eti4gi
+e5tim
+et3in
+eti4na
+e3tir
+et5itiv
+eti4u
+et5olo
+e5tomete
+e2ton
+et3ona
+etor3i
+etra5g
+4e4tral
+etra5m
+et4ran
+et5ress
+et1ri
+et4ria
+etrib5a
+e4trim
+et1ro
+et2t
+et3ter
+etud4
+et3ude
+e4tum
+et4we
+et5z
+eudio5
+eue4
+euk5
+4eum
+e3urg
+eur5i
+eus4
+eu5ten
+eu3ter
+eut3i
+ev4abi
+eval5e
+eva2p3
+ev3ast
+ev3at
+ev5eli
+eve4n
+ev5erat
+ev5eren
+ever4er
+e4veri
+e4ves
+e1via
+e4viab
+e2vic
+evictu4
+evid3
+ev5ig
+ev4ile
+ev5ish
+evis5in
+evis5o
+e4viu
+evoc3
+evol5e
+evol5ute
+evu4
+e1wa
+e4wag
+e5way
+ew1er
+e3wh
+ew5ie
+ew1in
+ew5ish
+e3wit
+e1wr
+ex5ic
+ex4on.
+1exp
+4ey.
+ey4as
+eyl4
+ey3s2
+ez5er.
+ez5ers
+ez5ie
+1f2a
+2fa.
+fab4i
+fa3cet
+fact2
+fa2c3u
+2f3ag
+fall5in
+5falo
+fa5lon
+fals5ifie
+4fan3a
+fan5tasiz
+fant3i
+5far
+far3i
+5faw
+4f5b
+2f5d
+2fe.
+3feas
+fea3tu
+feb5r
+3fec
+2fed1
+5fei
+fe1li
+fem3i
+femin5
+fend5er
+f5eni
+4fered
+fer3ee
+3fero
+fe5roc
+fer5om
+3ferr
+fer3v
+2fes.
+fess3o
+fest3a
+fest5i
+fe4t
+fet4al
+fet4in
+fet4o
+3feu
+fe5veri
+2ff
+f1fe
+ffec4te
+f5fet
+f1fi
+f5fia
+f3fic
+f5fie
+ffil3
+f2f3is
+ff4le
+ff3lin
+ffoc3
+ffoni4
+ffor3e
+f3fr
+ffranch5
+4f5h
+fi5ance
+fib5u
+4fic.
+4fical
+3fici
+4fics
+fi5del
+fid3en
+fiel4
+fier4c
+fight5
+1fi2l
+2fin
+fin2a
+fi3nal
+find3
+fin2e
+f1ing
+5finin
+fin4ni
+fir2m1
+f3ita
+f5itee
+fl2
+3fla
+fle2s
+f3lica
+flin4
+3flo
+flo5ric
+3flu
+flum4i
+1fo
+4fo.
+3foc
+fo2e
+foeti4
+fo1l4i
+fo4lie
+foment4
+fo2n
+fon4de
+3foo
+fo5ram
+for5ay
+for5b
+for4di
+fore3t
+5form
+for4m3a
+fortu5na
+fo3v
+1fr2
+frag5a
+frant4
+frar4
+fratch4
+fre4s
+frost5i
+fruc4
+2f3s
+fs4p
+2ft
+f1ted
+f4ter.
+ft5es
+fti4et
+ft4ine
+3fu
+4fu.
+fu4c
+fuel5li
+fug4a
+fu4min
+fun2g
+4fured
+fur3n
+fu3sil
+fus5o
+fu5til
+4ga.
+ga4cie
+gadi4
+ga4dos
+3gag
+3gai
+3gale
+ga5len
+gali4a
+gal5ler
+3galo
+gam4bl
+gan5at
+4ganed
+gang5er
+g5ant.
+gan4tr
+g5ants
+g5arc
+g4are
+gar3ee
+gariz4a
+ga5rot
+gar5p
+5garr
+1ga4s
+gas5i
+gas3o
+gasol5
+gass5in
+gast3r
+g1at
+g4at.
+gat5iv
+g4ato.
+g4atos
+g4att
+gat5u
+gaud5
+ga5za
+g1b
+g5d4
+2ge.
+5geal
+3gean
+2ge4d
+3gedi
+5gedn
+4gef
+1gel
+4gele
+ge4li
+gel4in
+gel5li
+ge4lu
+2gely
+gem3i
+5gemo
+3gen
+gen4du
+gen5it
+gen3o
+gen5ti
+ge4o
+geo3lo
+4gere
+3germ4
+2ges.
+5gess
+gest5at
+3get
+get3a
+2g1f
+2g1g
+gg4a
+g2ge
+g5gedl
+g3ger
+g5gerer
+ggi4a5
+g3gli
+gglu3
+g5gly
+ggrav3
+g4gro
+2gh
+g5hai
+gh5eni
+g3ho
+g4hos
+gh2t
+1g2i
+4gi.
+gi4all
+gi4at
+3gib
+gi5co
+gi4g
+gi5gan
+gin5gi
+3gio
+gi4or
+gi4ot
+5gip
+gi5pa
+g4i4s
+5gis.
+gi2t1
+5gitu
+giv5en.
+2gl2
+g3lar
+5glass.
+glec4
+3gler
+g4leto
+g4letr
+g4ley
+gli5on
+g5lis4
+3glo
+4g5lod
+glom3
+4glop
+3glu
+glu5te
+glu5ti
+3glyp
+2g1m4
+2gn2
+g1na
+g4nab
+g5nate
+5gnath
+g5nati
+gna5tur
+gn5edl
+gn5ee
+gn3er
+g1ni
+g4nia
+g2n3in
+gn4in.
+g4ni2o
+g2no
+5gnori
+gno4s
+2go.
+5goa
+3goc
+5god
+3goe
+go4et
+go4ge
+4gogram
+g5oid
+go3is
+go2me
+5gonn
+go5nom
+3goo
+goph4
+4gor.
+5gorg
+4gors
+g4ory
+3gos
+gos4t
+2gou
+gour4i
+g1ous
+gov1
+g3p
+1gr2
+grab4
+3gram
+4grame
+gra2p
+g4re
+gril4
+grim3a
+g4ro
+gro4g
+g5ron
+grop4
+3gru
+gru3en
+gru5i
+grum4b
+2g1s
+gs4c
+gs4t
+g4sti
+gth5eni
+g5to
+g4u2a
+gu5ab
+5guan
+3guard
+g5uat
+2gue
+5gueu
+5guit4
+gui5ta
+gu2ma
+gu4mi
+3gun
+g4uras
+g4ured
+gur4n
+gur4u
+4gury
+gust5a
+2g1w
+2gy
+gy2b
+5gym
+3gyn
+gyn5o
+g5z2
+ha2
+4ha.
+h4ac
+hadi4e
+had4ine
+hae3o
+haged5
+hagi3o
+hag5u
+ha5ic
+hais4
+hak4ine
+hal5ant
+ha4m
+ham5an
+han4cro
+han2g
+h1ani4
+h5aniz
+han4t
+hant3a
+ha4pe
+hap3l
+har1a
+har5b
+har4d
+har5die
+harge4
+ha5rism
+har3o
+har4ted
+har4ti
+has4te
+hat5o
+haught5
+havel4
+hav5ersi
+hav5o
+h1b
+h1c
+h1d
+hdeac5
+hdu4
+he2
+4he.
+h2ea
+1head
+3hear
+hearch4
+heast5
+heav5en
+hec3t4
+he5del
+he3do
+heek4
+h4ei
+he3is
+he5lat
+h5elin
+he3lio
+he5liu
+hel4li
+h3el3o
+hem1a
+he3men
+hemis4
+he5mop
+hem4p
+hende5
+he3or
+hep1
+h1er.
+her4as
+her2b
+herb3a
+herb3i
+here3a
+here3o
+h5erett
+h5erh
+her5ial
+h5erine
+h1erl
+her5om
+h4eron
+h1ers
+h5erwa
+hes3tr
+het1
+h4et3a
+het3i
+het4ted
+heu2
+heum3
+heumat5
+he4v4
+hev5i
+hex5o
+h1f
+h5h
+2hi.
+hi4ar
+h1ic
+hi3c4an
+hi4cin
+h4icl
+h5ie.
+h1ier
+h4i4ers
+h1ies
+h3ifi4
+h3ify
+hig4o
+hi5ka
+hi4l
+hi5ma4
+hi5mer
+himos4
+h1in
+hin4d
+h2in2e
+hi5nie
+h5iniz
+hi5nop
+h2ins
+hio5lo
+h4ior
+hi2p
+hip3l
+h4ir
+hir4r
+hirr5i
+hit4a
+hiv5a
+4hl
+h3la
+h1le
+h3let
+h1l2i
+hli4a
+2h1m
+h4manic
+h5mica
+2h1n2
+hnocen5
+4ho.
+ho3an
+ho4co
+ho3don
+ho5du
+ho5ep
+hol3ar
+hold1
+hol4is.
+ho5lys
+ho4mag
+hom5in
+h2o4n
+hon5em
+ho5neu
+hon3ey
+hong3i
+ho5nio
+hon1o
+1hood
+hoo5r
+h4ope
+ho2p5r
+h4op4te
+hor5et
+h4orn
+horn5i
+ho5rog
+hort5h
+hosi4
+ho4ton
+h2ou
+3house3
+4h1p
+2hr
+hras5eo
+hre4
+hre5ma
+hr5er
+hres4
+hri4
+hrill5in
+hrim4
+h5rit
+h3rod
+hrom4i
+hry4
+h3rym3
+2h1s
+hsi4
+h4sk
+ht5ag
+ht5ee
+ht3en.
+ht5ener
+ht3eni
+ht3ens
+ht5eo
+ht5es
+ht4foo
+h1th
+ht4ine
+hu4g
+hu4mat
+hu5mer
+hu4min
+hun4c
+hunk4
+hun4t
+hur3i
+hu3sia
+huz4
+h1w
+h4wart
+h2y
+hy2l
+hyl5en
+hy2m
+hyn4
+hy3o
+hyol5i
+hy1pe
+hy3ph
+hyr4
+hys3te
+hy4t
+2i1a2
+ia4bl
+iab5olis
+iab5oliz
+i2ach
+iac3o
+i2ac2r
+ia5cri
+ia5dem
+i5ae
+iaf4
+i2ag4
+ia3gn
+i5a4g5o
+ia3gr
+i3ah
+i5ai
+ialect4
+i3alit
+ial5li
+4ialn
+i2a3lo
+ia5ly
+i5amb
+ia3me
+ianch5
+i3ant
+i5ape
+ia3ph
+i2ard
+4iarit
+i3at
+ia5the
+i5atom
+iat4u
+iatur4a
+i3au
+iav4
+ib3era
+ib1i
+ibio4
+ibios4
+ib5li
+4ibo
+i4bon
+ibor4
+i4bose
+i5bou
+ib1ri
+4ibu
+ib3uta
+ic3ac
+ic5ado
+i4cal
+ic1an
+2icar
+iccu4
+4ice
+i5ceo
+4ich
+ich4i
+ich5ing
+ich5ol
+4icin
+i5cio
+2ick
+ic4lo
+2i2co
+ico3c
+ic5ola
+icon3o
+i5cop
+icotyle5
+2i1cr
+i4cri
+i4cru
+i4cry
+ic4tedl
+ic4ter
+ict5ic
+2icu
+icu4lu
+ic3um
+i5cun4
+i5cut
+2i1cy
+i2d
+id1a
+i5day
+ide4m
+id3enc
+id3era
+iderm5
+i3dicu
+id3if
+i5dig
+i5dil
+i3dim
+id4ines
+idios4
+idir4
+id1is4
+id4ist
+2i4d1it
+idi4v
+id3li
+id3ol
+idol3a
+4idomi
+id3ow
+4idr
+id5ri
+id3ul
+ie2
+4iec
+2ieg2
+ie3ga
+ie5i
+i5ell
+4iem
+2i1en
+ien2d
+i1er
+i3eres
+i2eri
+ieri4n
+4iern
+ier2o
+i4ert
+i3esc
+ies3el
+i1es2t
+i3est.
+2i1et
+i4et.
+iet3ie
+4ieu
+i5euti
+iev3a
+iev3er
+iev3o
+2i1f
+i2fe
+if4fa
+iff5ler
+if3ic.
+i4ficac
+if5ics
+ifi4d
+ifi4n
+4i2fl
+i3fo
+ifoc5
+if5tee
+i3fy
+2ig
+i3gad
+ig3and
+3igar
+i1ge
+i3ger
+ight5er.
+ight5ers
+4igi
+ign5iz
+igno5m
+i3gon
+ig1or
+ig3ot
+i5gret
+i4g5ro
+igu5it
+ig1ur
+2i1h
+ihy4
+2ii
+i5in
+ija4
+4iju
+2ik2
+ik5an
+ike4b
+i2l3a
+ila4g
+ila5tel
+i5later
+il4ax
+il5dr
+il4du
+i3len
+ilesi4
+il3f
+il3ia.
+il3iar
+ili4arl
+i3lici
+i5lien
+ili4er
+ili4fe
+il4ific
+il1in
+il5ine.
+4iliou
+il5ipp
+il5iq
+il4ite
+ilit5u
+il4mo
+i5lon
+il3ou
+ilth4
+il2tr
+4ilu
+il5ul
+i5lum
+il5ure
+il3v
+4ilym
+ima4c
+im2ag
+im3age
+im1al
+im5am
+i5m2as
+i4mated
+i4matin
+imat5u
+im1i
+i3m2ie
+im4ine
+im5ino
+im5mes
+i2mo
+i5mog
+i3mon
+im5oo
+i3mos.
+impar5a
+imparad5
+im5pie
+impot5
+im5pr
+impu4
+im1ul
+im5um
+in3ab
+4inace
+in4ado
+in5agl
+in3air
+ina4l
+4inalit
+in5am
+in3an
+in3ap
+in4ars
+i3nas.
+4inata
+inator5
+in3au
+in4aw
+2inc
+inc4tua
+2ind
+in5dar
+inde5p
+indes5
+inde3t
+indeterm5
+in5dro
+4inea
+4ined
+in5ee
+in5ega
+4in5eo
+ine4s
+in3esi
+ine5te
+4ineu
+inev5
+infilt5
+infol4
+4infu
+4inga
+in5gal
+4inge
+ing5ha
+4ingi
+4ingle
+4ingli
+4ingo
+4ingu
+ing3um
+2ini
+in5ia.
+4inic
+in4ici
+in3ion
+in4itud
+4ink
+ink4ine
+4inl
+2inn
+2ino
+4ino.
+in3oi
+i5nole
+4inos
+i3nos.
+in5ose
+in3osi
+4inq
+ins2
+in4sch5
+inse2
+insect5
+insec5u
+in3si
+5insk
+insolv5
+in4tee
+int5ess
+in3til
+int5res
+intu5m
+2inu
+in5ul
+in5um
+in3un
+in3ur
+invol5u
+2io2
+ioact4
+i1od
+iod3i4
+iod5o
+ioe4
+io3gr
+4i1ol
+io3ma
+i4omani
+io3mo
+i5ope
+io3ph
+i5opo
+iop4s
+i1or
+iora4m
+4iore
+4iorit
+5ioriz
+4iorl
+ior4n
+io3sc
+i3ose
+i3osi
+i4oso
+io5sta
+i3ot
+iot4a
+io5th
+iot5ic
+io5tr
+i4oty
+i4our.
+i4ours
+i5ox
+2ip
+ip3al
+ipap4
+ipar3o
+ipart5ite
+ip1at
+i3pend
+i1ph2e
+iphen3
+i5pheri
+iphi4
+i4phu
+ip3id
+i5pil
+ip3in
+ip4ine
+ipir4
+ip5is
+ip1i4t
+ip4iti
+ip3lin
+ip3lo
+i3po
+i4pog
+i4poli
+i4pom
+ipon3
+i4pow
+ip2pl
+ip3pli
+ip4re
+ip5tori
+ip1ul
+i5put
+ipy4
+2iq
+i3qua
+2ir
+ir1a
+ir4abi
+ira4c
+ir4ae.
+ir4ag
+ir4alin
+ir4alli
+i5raso
+irassi4
+iray4
+ird3i
+ire3a
+ir3ec
+ir5ee
+irel4
+ire5li
+ires4
+ir5ess
+ir1i
+ir2i4d
+ir4im
+ir4is.
+5iriz
+irl5ing
+ir5och
+ir5ol
+ir3om
+ir4q
+ir2s
+ir5ta
+ir5tee
+irwo4me
+i4sa
+is5ad
+is3age
+is1al
+is3am
+is1an
+is3ar
+is5av
+4isb
+i2s3c
+is5chi
+isci5c
+4i1sec
+ise5cr
+is3ell
+4is3en
+is2er
+is5ere
+i2s3et
+4iseu
+is3har
+ish5ee
+4ishio
+ish3op
+is5hor
+2isia
+is5ic
+is3ie
+4isim
+is3inc
+4isis
+is4ke
+is1l
+islun4
+2isma
+is1on
+is5oner
+iso5p
+is1p
+i3s2ph
+5ispr
+2is1s
+iss5ad
+is4sal
+is5san
+iss4iv
+iss4o
+4ista
+is4tal
+ist5enc
+ist5ent
+is5terer
+4isth
+is4t3ic
+4istl
+i4s1to
+4is4tom
+is1tr
+3istry
+4isty
+i5sul
+is3ur
+2isy
+it1a
+it5ab
+ita4c
+4itai
+it3am
+it4ana
+it4as
+it3at
+i3tect
+it3ee
+it3enc
+it3ent
+it3era
+2ith
+itha5l
+ith5i
+i5thol
+ith3r
+ithy5
+2itia
+iti4co
+it5icu
+it1ie
+it3ig
+4itim
+it4in.
+it4ins
+4itio.
+4itione
+i5tiq
+4i5tit
+it3iv
+it4li
+it5lo
+4ito.
+it5ol
+2iton
+it1ou
+2itr
+it5ress
+i4tric
+2itt
+it4tit
+itu4als
+it5uar
+4itue
+it1ul
+it1ur
+it3us
+2i1u2
+i3um
+iur5e
+2iva
+iv5anc
+iv1at
+i4ved
+iv5el.
+iv5eling
+iv5els
+i4ver.
+iv3eri
+i4vers.
+iver5sal
+ives4
+iv3et
+i4vie
+iv3if
+i5vilit
+5ivist.
+5ivists
+iv1it
+i2vo
+ivoc3
+i5vore
+2i1w
+2ix
+ix3o
+i5ye
+1iz
+4izah
+iz3i2
+2izo
+iz5oi
+2izz
+1ja
+2ja.
+3jac
+ja2c5o
+jac3u
+jag5u
+jal4
+ja5lo
+ja5pan
+jel5la
+jeo2
+jeop3
+4jes
+jeu4
+jew3
+2ji
+3jig
+jil4
+jill5
+5jis.
+3jo2
+4jo.
+joc5o
+joc5u
+jol4e
+4jr
+4js
+ju1di
+jui4
+ju5l
+ju3ni
+juscu4
+jut3a
+ju1v
+k4abi
+k2a5bu
+kach4
+k3a4g
+kais5
+ka4l
+ka5lim
+kal4is
+k4an
+ka3o
+kap4
+kar4i
+1kas.
+kaur4
+kav4
+k1b4
+k1c
+kcom4
+k5d2
+kdo4
+kdol5
+4ked
+ke5da
+k5ede
+3kee
+ke4g
+ken4d
+keno4
+kep5t
+ker5a
+k4ere
+k5erel
+ker4j
+ker5o
+kes4i
+ket5a
+key4wo
+k1f
+kfur4
+k3ho
+5kih
+ki2l
+kilo3
+k1in
+k2in.
+3kind
+kinema4
+kin5et
+k3ing
+kin4i
+k2ins
+kir3m
+kir4r
+kis4
+3kis.
+k1ish
+kit5c
+ki4w
+kk4
+k5ker
+k2l2
+k3la
+k5lea
+k3ler
+k3let
+k3li
+k3lo
+k1m
+kn2
+k2no
+1know
+ko5a
+kol4
+ko5mi
+ko5pe
+k1p
+k5ro4
+k3ru
+4k1s
+k3sl
+ks2mi
+ks4t
+k1t
+kur5
+k5v
+k1w
+3kyl
+l2a
+4la.
+5laa
+lab5ar
+label4
+5labr
+l4ac
+la2ca
+la5ceo
+la5cer
+la4ch
+la2co
+5la5col
+lac5on
+la3cu
+la4de
+l5adm
+l4ae
+l4af
+la3ger
+la4gis
+lag3r
+5lah4
+la4ic.
+l4al
+4lale
+5lamandr
+la5melli
+lam4ie
+lam1o
+l5amu
+lan3at
+lan2d
+3land.
+land3i
+3lands
+lan4er
+lan3et
+lan5tine
+lan4tr
+la4p
+lapi4
+lar5an
+lar5de
+4lared
+l4as
+lat5al
+la4te
+5latilis
+5latiliz
+5latini
+lat5us
+l4au
+5laur
+lav5at
+l4aw
+4laz
+l3b
+lbe4
+l4bit
+l4by
+l1c2
+l2cat
+lce4
+lcen4
+l4cere
+lch4e
+l3dar
+l3ded
+l3deh
+l5dera
+ld3est
+l5dew
+ldi2
+l3die
+ld4ine
+l5di5nes
+ld3ish
+ld5li
+l3do
+4le.
+3leagu
+le5atio
+leav5er
+l3eb5ra
+le3ca
+le5cha
+lect5ica
+2led
+le5dr
+leg1a
+l3egan
+3legg
+le4gin
+leg3o
+le3gra
+lek4
+4leled
+lel5o
+lelu5
+lem5enc
+lem3is
+l5emiz
+5lemm
+l3emn
+le2mo
+lem5on
+l5enda
+len5dar
+lend4e
+len4do
+le1ne
+le5nie
+len3o
+4lentio
+len5u
+le3on
+leo4s
+le5q
+2ler
+le5rec
+5l4eria
+l4eric
+le5rig
+ler3om
+leros4
+ler3ot
+4les.
+le3sco
+3les4s
+1let
+le5tra
+le5tre
+5le5tu5
+leur5
+2lev
+l3eva
+5leve
+lev5ita
+le4wi
+l5exa
+1ley
+lf5id
+l2fo
+lf3on
+l1g2
+l4gal
+l4gem
+lgi4a
+l4gid
+l4goi
+l3h
+4li.
+li4ani
+lias4
+lib1r
+l1ic.
+5lich
+li4cie
+5licio
+l3ic3on
+lict4o
+li4cu
+l3ida
+l4idar
+5lidif
+3lieu
+l4ife
+l4ifo
+lift5er
+1lig
+li5ger
+light5i
+5lih
+3lik
+1l4il
+lil4i
+lim2b
+limet4e
+lim4p
+l4ina.
+l4inas
+lin4d
+l4ine
+5lin3ea
+lin4er.
+lin4ers
+lin4ger
+ling3i
+5lingt
+3lingu
+3linq
+lint5i
+3liog
+li4ol
+lio3m
+liot4
+li3ou
+5liph
+lipt5
+li1q
+3lir
+l1is
+l4isk
+5lisse
+l1it
+l2it.
+l3it5a
+5liter
+3lith
+5litia
+3litr
+lit4u
+l4iv
+l5ivat
+liv3er
+liv5id
+lkal5o
+lk5at
+lk3er.
+lk3ers
+ll2
+l1la
+lla4ba
+llact4
+l5las
+l4law
+l5leb
+l1lec
+l1leg
+l3lei
+l1lel
+lle5m
+l1len
+l3lep
+l3leu
+l3lev
+ll3f
+l1li
+lli5am
+lli4an
+llib4e
+llic4
+l4licl
+lli5co
+l5lie
+lligat4
+l2lin
+l5lin.
+l3lina
+l3line
+l5lio
+lli5v
+ll3m
+l1lo
+lloc3a
+lloc5u
+llo2q
+l4lov
+llow5er
+ll3p
+ll3s
+ll5t
+l1lu
+llun4
+l5lya
+l3lyc
+l3lyg
+l3lyh
+l3lyi
+l5lym
+lm2
+l1ma
+l1me
+l4mer
+lm3ing
+l5mip
+l2m3od
+l1n4
+l3ne
+lneo4
+2lo.
+5load
+5lob3a
+1loc
+loc3al
+loc5ul
+lo4cus.
+2locy
+l3odis
+3lo3dr
+1log
+lo5gan
+4loi.
+lo5mi
+lom4m
+lon4al
+lon4e
+l5onel
+lo5ney
+long5in
+3lonia
+loni4e
+l3onis
+l3oniz
+loom5er
+lop4e
+5lo5pen
+l3opm
+1lo1q
+l4ored
+lor5iat
+lor4ife
+lo5rof
+loros4
+l4os.
+lo1so
+loss4
+los5sie
+lot5at
+loth4ie
+lo5tu
+5loup
+lp1at
+lp3er
+lph2
+l5phe
+l3phin
+l2pho
+l3pie
+l3pit
+lr4
+l3ri
+l3ro
+l5ru
+4ls
+l5sam
+ls5an
+lsi4fia
+lsi4m
+ls4is
+l5sk
+ls4p
+l1s2t
+ltan3e
+l4tang
+lt5ant
+l5tar
+l1te
+l4tei
+ltern3
+lth3i
+lti4ci
+ltim4a
+ltin4
+lti3t
+l3t4iv
+lt4or
+l1tr
+ltramont5
+l1tu
+l4tus
+4lu.
+lu1a
+luch4
+lu2c5o
+luc5ra
+lu4cu
+4lue
+lu1en
+lu5er
+lu1i
+lu4it
+lum4bri
+lu4mo
+5lump
+lu2m5u
+lunch5eo
+5lune
+l3unta
+lu3ori
+5lup
+3lur3o
+lusk5
+luss4
+lut5an
+4lut5ar
+5lutioniz
+lu5toc
+lut5r
+lu1v
+lv5ate
+l5vet4
+l4vi
+l4vor
+l3w
+lx4
+2ly
+4ly.
+ly1c
+ly4ca
+lyc4l
+lyc5os
+lym2
+lymph5
+lyp2
+ly4pa
+lypt5o
+3lyr
+lys5er
+3lyw
+3lyz
+lz4
+4ma.
+m4aca
+mac3ad
+ma5chine
+5machy
+ma4cis
+mact4
+4mad.
+4mada
+4mads
+ma4ge
+5magn
+2mago4
+2mah
+ma5ho
+3ma4i
+4mai.
+maid3
+5mak
+mal3ap
+mal5ari
+5male2
+mal5ed
+mal3ef
+m3alg
+m3alis
+mal4is.
+mal3le
+mal4li
+2mam
+mament4
+m5ament.
+1man
+3m4an.
+man3a
+man5dar
+man3dr
+manic4
+man4ica
+ma5nil
+m4ans
+mantel5
+2map
+m3aph
+1mar
+5maran
+mar5ol
+ma5ron
+ma3roo
+mar5ri
+mar4shi
+mar3v
+ma3son
+massi4
+mass5ing
+3mas1t
+mas4ted
+mast4ic
+mas4tin
+m4at.
+m4aten
+ma3ter
+mater5n4
+m4atit
+mat4iti
+m4atiza
+ma3tog
+mat5om
+ma3top
+m4ats
+3m4att
+ma5ture
+mav4
+2m1b
+mbat4t
+mb4d
+m5bec
+m5berer
+m4bery
+m4bes
+mb2i
+m2bic
+m5bil5
+m4b3ing
+m4bis
+mb5ist
+mbival5
+m5bler
+m3bli
+mbru4
+mbu3l
+mbur4
+m1c
+m5d
+m2e
+2me.
+mea5g
+me5and
+me4ba
+me4bi
+2med
+4med.
+3media
+med5icat
+4medie
+m5ed5ies
+3medit
+me4do
+m5edy
+me2g
+5meg2a1
+mega5t
+4mele
+mel5ee
+mel5ler
+mel3on
+mel4t
+melt5er
+me2m
+4m5eme
+1men
+3men.
+2mena
+men4ag
+mend5er
+mend5o
+me1ne
+ment5or
+5ments
+5meog
+me4p
+m5eran
+4mere
+mer4ia
+2me2s
+mes5en
+me5si4a
+mes5q
+3mesti4
+1me2t
+meta3t
+met1e
+4meted
+meth4i
+meti4c
+met5ici
+met3o
+met3ri
+m1f
+4m3h
+4mi.
+m1ic
+mi4cin
+mi3co
+3micro
+m4ict
+mi3cul
+mi4cus
+m4idi
+mid4in
+mid5on
+mi5fi
+mig5a
+migh5ti
+mi2gr
+4mij
+mi5ka
+m2il
+m3ila
+mil4ad
+4m5ilie
+mil5ies
+3mill
+mi5lo
+mil4t
+3m2im
+mim5i
+5min4d
+mind5er
+min4er.
+min4ers
+ming5li
+min5ie
+m4init
+min3ol
+1m4int
+minth5o
+mi3o
+mi3p
+mirab4
+mi5racu
+m2is.
+m4isc
+mi4se
+4misem
+mis3ha
+5missi
+m3ist.
+mis4tin
+m3ists
+mi2t
+m5itan
+4mity
+3miu
+5mix
+4m1l
+mlo5cuti
+mlun4
+2m1m2
+mman4d
+mmand5er
+m3medi
+mmel5li
+mmet4e
+mmig3
+mmin3u
+mmis3
+mmob3
+m5moc
+mmor3
+mmut3a
+4m1n2
+mnif4
+m4nin
+mni5o
+mnis4
+mno5l
+1mo
+4mo.
+2moc
+mod1
+mod5ifie
+mogast4
+mo4go
+mog5ri
+m5oir
+mok4i
+mol3a
+4molog.
+4mologs
+4mologu
+mo3ly
+mo1m
+mo4mis
+m4on
+mona4
+4moned
+mon1g
+mo4no
+monolo4
+monolog5i
+m4op
+mophil5i
+mop4t
+m3orab
+m3orat4
+mor4ato
+m5ord
+mo5rel
+3moria
+m5oriz
+mor5on
+3morp
+3morse
+mor5tal
+mo3sp
+5most
+mo3sta
+2m1ous
+m1p
+m3pa
+m4panc
+m4pant
+mpath3
+mpel5li
+m5perer
+mper3i
+mpet5it
+mphal5o
+m4phe
+m4phl
+m2pi
+mp5id
+m5pig
+mp3ily
+mp1in
+m3pir
+mp3is
+m3po
+mpol5it
+mpo2t
+mpov5
+mp3to
+mp5tr
+m3pu
+m5q
+m3r
+m4ry
+4m1s
+msel5f
+m5si
+msol4
+mtu4
+muck4e
+muff4
+mul1t2
+m5unc
+mu5nio
+mun3is
+mus5co
+mu4se
+mus5ke
+mu3til
+m1v
+m3w
+2my
+5my3c
+my4d
+my3e
+3myi
+5myst4
+3myt
+n1a
+2na.
+na2c
+nach4
+na5cious.
+na5ciousl
+nac4te
+nac5tiva
+na5culari
+na4d4a
+nadi4
+nad4op
+n2ae.
+naffil4
+nag4a
+n4agen
+5na5geri
+na4gi
+n5ago
+5n4a3gr
+5nah
+5nail
+na5iv
+nak2
+4naled
+n5alg
+n4alia
+na3ly
+1nam
+3name
+nam4n
+na5nas
+nannot4
+nan4ta
+nan5ted
+nan4to
+na5o
+4n4ard
+nar5tisti
+n2as
+nas5i
+nas5p
+nas3s
+nas5te
+nat5al
+na5tat
+n4atee
+na3the
+nath4l
+nati4
+n4ati.
+nat5ic
+n4ato.
+na3tom
+na4tos
+nat4r
+na5turi
+naugh5ti
+naus3
+3naut
+naut3i
+na2v
+na5vel
+n3b4
+nbarric5
+nbeau4
+nbe4n
+nbene4
+nbet4
+nbit4
+n1c2a
+n4cal.
+ncarn5at
+ncel4i
+ncent5ri
+n4cept.
+n3cer
+ncer4e
+n4ces.
+n5cet
+n5cey
+n3cha
+nch4ie
+n3cho
+nch5olo
+n3chu
+n4cic
+ncid5en
+n4cif
+ncip5ie
+n1c2l
+n4cles
+ncoc4
+nco5pat
+n1cr
+nc1t
+nc4tin
+nct4ivi
+nct2o
+n1cu
+ncu4lo
+n4cun
+n4curvi
+ncus4t
+4nd
+n2da
+n3da4c
+n3dal
+n4dale
+n3dam
+nd3anc
+nde2
+n3dea
+nde3ci
+n1ded
+nde4l
+ndeleg4
+nd3enc
+ndepre4
+n3derl
+nde4s
+ndes5cr
+n5dez
+nd4hi
+n1dic
+ndic5u
+ndid5a
+n3die
+nd5ily
+nd4ine
+nd3ise
+nd5is4i
+nd5ism.
+nd5ity
+nd3ler
+nd1li
+n5doc
+ndor4
+n2dou
+nd5our
+ndrag5
+ndram4
+n5dron
+ndu4b
+nduct5iv
+n4dun
+nd2we
+n3dyi
+2ne.
+ne3alo
+n3ear
+ne2b3u
+5neck
+ne4cl
+ne2co
+n5ectom
+2ned
+3nedi
+ne4du4
+neg3a
+ne3go
+5negu
+neis4
+2nele
+ne5lia
+neli4g
+n4ely
+ne2mo
+4n1en
+n3end
+neo3l
+neon4
+ne2p
+n1er
+4nered
+5nering
+ner5o
+ner4r5
+ner2v
+nerv5in
+2nes.
+n1esc
+ne3sia
+1ness
+n1est
+nes3tr
+net3a
+net3ic
+ne4tog
+net1r
+neuma5to
+neut5r
+nev5er
+n4ew
+news3
+n4eys.
+n3f
+nfo4
+nform5er
+nfortu5
+nfran3
+4ng
+ng2a
+n4gae
+n5gee
+n3geri
+n5gero
+ngh4
+n2gi
+n5gic
+ngio4g
+n5glem
+n3glie
+n5glio
+ng1n
+n1go
+n4gry
+n1gu
+n2gum
+n1h2
+nhab3
+nho4
+nhy2
+nhyd5
+n1i
+4ni.
+3niac
+ni3ba
+n4icab
+ni4cen
+4nicl
+nict5a
+ni4cul4
+ni4dio
+n2ie
+ni4ers
+nif4f
+nift4
+nif5ti
+ni2g
+night5i
+n3igm
+3nign
+nik5e
+n2il
+nil4a
+n3im1
+n4ime
+5nimet
+n4ines
+nin4j
+5ninn
+n4inu
+5niol
+ni1ou
+3nipu
+5niq
+n4is.
+n4isk
+nis4l
+nis4o
+n5iss
+nis5ter.
+nis5ters
+nitch4
+ni4te
+ni3tho
+n4itos
+ni5tra
+nit5res
+ni3tri
+nit4ur
+n2iv
+niv4a
+ni3vo
+nivoc4
+niz5en
+n1j
+njam2
+njur5i
+4n2k
+nk5ar
+n5kero
+n3key
+nk5if
+nk5il
+4n1l2
+nland5
+n3le
+nlet4
+n3m
+nmater4
+nmor5ti
+n1n4
+nne4
+nnel5li
+nnerv5a
+n3ni
+nni3ki
+nnov3
+n5nyi
+4no.
+n5obi
+no5bil
+nob4l
+no5blem
+nobser4
+n5ocula
+no4di
+n4ody
+noe4c
+no4fa
+nois5i
+n5ol.
+no3la
+nol4i
+nom3al
+1nomi
+no2mo
+4none
+3nonic
+5nood
+nop5i
+nora4t
+nor5di
+nor4ia
+nor4is
+nor3ma
+n4oro
+nor4t
+n4os.
+nos4o
+no3sp
+not1a
+3note
+n1ou
+n4oug
+3noun
+2nous
+nou5v
+nova4l
+nove2
+nov3el
+novel5e
+n4ow
+now5er
+now3l
+n3p4
+npil4
+npla4
+npoin4
+npo5la
+npos4
+npri4
+n1q
+n4quef
+n1r
+nre4i
+nre3m
+nres5tr
+4n1s
+ns2c
+n2sco
+ns3cot
+n4scu
+n5sec
+nsec4te
+n2ses
+n5seu
+n3sh2
+n2si
+ns3ib
+n4sic
+n5sick
+n3sid
+n3sie
+ns5ifi
+ns3ing
+n3sio
+n3s2is
+nsi2t
+ns3iv
+nsolu4
+n5son
+n4sore
+n4sory
+n3spir
+n3s2t
+nsta4
+nstil4
+n3su
+nsur4e
+n3swa
+ntab4u
+nt3age
+nt1al
+n4t3anc
+nt5and
+ntan5eo
+n4t3ant
+nt4ariu
+n5tasis
+nt3ast
+nt1at
+nt5ath
+nt3ati
+nt5ativ
+n5tau
+n1te
+n4tec
+n4tee.
+n4tees
+n3tel
+ntend5en
+n4teo
+n4ter.
+n3teri
+n5tern
+ntern5al
+nter5nat
+nth2
+n1the
+nther5
+nth5ine
+nt2i
+nt4ib
+n4tic.
+n5ticis
+n5ticiz
+n4tics
+ntic4u4
+n3tid4
+n1tie
+n4tify.
+n3tig
+nt5ilati
+n5till
+nt3ing
+nt5ing.
+nti3p
+n4tipar
+n4tis.
+nt3ism
+nt3ist
+n5titio
+nt3iz
+n2tj
+n1t2o
+n3tom
+ntoni4
+n5top
+n1tr
+ntra3d
+nt3ral
+n4trant
+n3trat
+nt5ress
+nt3ril
+ntrol5ler
+n5trym
+n1tu
+n3tua
+ntub5
+ntup5li
+n5tur
+n2ty
+n2u
+nu1a
+5nuc
+3nud
+nud5i
+nu3en
+nug4a
+nu3i
+nu4is
+5nuk
+n4ulo
+n3ult
+nultim5
+nu1me
+5numenta
+5numer
+5numi
+3nunc
+nu3tat
+n5utiv
+nu4to
+nu1tr
+n3v2
+nve2
+nvel3
+nven4e
+nven5o
+nvers5an
+nvi4t
+nvoc5at
+n5w
+nwin4
+nwom4
+n2x4
+2ny2
+5nyc
+nym5it
+nyth4
+n1z2
+nzy4
+2oa2
+o5ace
+o3act
+oad5er
+oad5i
+o3ag
+oak5er
+o3ales
+oal4i
+oal5in
+o5alit
+oan4t
+oap5i
+oar5er
+oar4se
+oast5er
+oat5a
+oat5ee
+oat5er
+4oba
+obe4l
+ob2i
+ob3ing
+2obi3o
+ob3it
+o3bla
+ob1li
+4obo
+ob3oc
+o5bol
+o5bot
+o3bra
+obrom4
+ob5t
+ob3ul
+o3bus
+2oc
+oc2a
+o4cab
+o3cad
+oc5ag
+o5calli
+o4c5ativ
+oc5ato
+4o3ce2
+o4cea
+ocen5o
+ocess4i
+och4e
+och5in
+o3chon
+ochro4n
+o5chu
+oci3ab
+oci4al
+o1cl
+o2cle
+o1cr
+ocre3
+oct2
+oc2te
+oc1to
+ocu4lu
+ocum4
+oc5uo
+ocuss4
+ocus5si
+ocut5r
+o1cy
+o5cyt
+ocyt5o
+od3al.
+ode4c
+o5deg
+ode4ga
+o5dend
+o3dent
+odes4
+od3ica
+o4d1ie
+od3iga
+od4il
+od1is2
+odis5ia
+od5it
+5odiz
+od3li
+o2do
+od5olo
+od5ous
+o3dro
+od5ru
+o2du
+odu5cer
+o4duct.
+o4ducts
+od3ul
+o5dyt
+oe3a
+oe4bi
+oe5cu
+oe4d
+o5ee
+oe5ic
+o3elec
+oelli4
+oelo4
+oe3o4p
+oep5
+o5eq
+o3er
+oes3t
+o1et
+o4et.
+oet3i
+oet4r
+3oeu
+o3ev
+o3ex
+oflu4
+4ofo
+o4ful
+ofun4
+2o1g
+o2ga
+o3gam
+og5ar5
+o3gas
+ogen1
+o5gey
+o3gi
+o4gio
+og2na
+ogoni4
+o4got
+o2gri
+o4gro
+og4sh
+o2gu
+o5gyr
+o1h2
+o3ha
+ohab3
+o3he
+oher4er
+o3ho4
+ohy4
+2oi
+oi4c
+o3ic.
+oi5ch
+o2i4d
+4oide
+oig4
+oi5ki5
+oil3er
+oil5i
+oin3de
+o3ing
+oin4t5er
+oin4tr
+oi4o
+4ois
+o3ism
+oi4t
+oit4al
+oith4
+o1j
+ok4ine
+ok3l
+ok5u
+ola4c
+o4lack
+o5lali
+ol4an
+olan5d
+ol5ast
+olat5er
+ol5ch
+ole2c4
+ol5eci
+ol5efi
+o3leo
+ole4on
+o3lep
+ol1er
+o3lest
+o3leu
+o1lia
+ol3ica
+o3lice
+ol5iciz
+ol5ick
+ol3ics
+ol5id.
+oli2e
+o3lier
+ol5ies.
+o5lif
+oli4f3e
+oli5go
+o5lina
+ol3ing
+oli5os
+ol5ip4
+olis4
+ol2it
+olle2
+ollim3
+ol4lope
+ol4lyi
+ol3mi
+o1lo
+4oloc
+ol3oid
+o4lona
+olon5el
+ol1or
+o3los
+ol1ou
+4ol1ub
+o3lumi
+o5lunte
+ol3us.
+oly3ph
+4olyt
+2om
+o1ma
+o4mab
+o2mac
+o2mal
+o4mane
+omast4
+o3mat
+om4be
+ome4d
+ome4g
+omeg5a
+ome3li
+om3ena
+omen4t
+o3meri
+om1i
+o3mia
+omi2c
+omic5r
+om4ie.
+omil4
+om4iny
+omiss4
+om2it
+omme4
+om2na
+omni3
+o4moi
+omoli3
+o2mo4n
+om5ony
+o4mos.
+omot5iv
+o2mou
+om5pil
+ompt5er
+ona4d
+on3ai
+o5nas.
+onast5i
+on5ativ
+4onau
+on1c
+oncat3
+on4cho
+5ond5ar
+ond5ent
+on3der
+on3dr
+on5dy
+o2ne
+4onea
+onec4r
+4oned
+on1ee
+on5ell
+o3neo
+on3ess
+on1et
+ong3at
+on4gu
+4onh
+4o1nia
+on5iar
+2oni4c
+onic5a
+onical4
+on4id
+on3ies
+on3if
+o5nig
+o1nio
+onk4s
+4onnes
+on5odi
+on5oi
+ono4mi
+4o5nomic
+ono3s
+o5nota
+ons2
+2ont
+ont5ane.
+on4ter
+onti5fi
+onton5
+ont4r
+on4tre
+on5ur
+o5nus
+onvo5lu
+on2z
+2oo
+oof3er
+oo1i
+ook3er
+ook3i
+oo4le
+ool5ie
+oo4m
+oon3i
+oo2p
+oop4ie
+o3opt
+oo4se
+oost5er
+oo2t
+oot3er
+ooz5er
+o1pa
+o4pab
+o5pali
+opa5ra
+opath5
+o5pec
+opens4
+op1er
+3opera
+4operag
+o1pha
+o4phe
+oph4ie
+o5phil
+op5hol
+o1phy
+ophy5la
+op1i
+op3ies
+op5ing
+o3p2it
+4opl
+oplast4
+o4poi
+opol3i
+opon4
+op5ony
+op5ori
+opoun4
+o2p5ov
+op2pl
+op5pli
+oprac4
+op3ran
+opre4
+opro4l
+op5rop
+op5so
+1op1t
+op2ta
+op1u
+o5quial
+or1a
+or5ado
+ora4g
+o5rai
+or5al
+4orals
+oram4
+oran3e
+orator5
+orb3in
+or4ch
+orch3i
+or4du
+2ore
+or5ead
+ore5ar
+ore5ca
+ore3f
+ore3g
+or3ei
+oreo5l
+or3esc
+ore3sh
+or3ess
+orest5at
+or5este
+or5ett
+ore4v
+5orex
+or4fr
+or5gn
+or1i
+4ori.
+or3ia.
+4orian
+ori4ci
+ori5cid
+orien4
+or3if
+5orig
+ori5ga
+ori4no
+4orio.
+or5ion
+4orios
+ork5a
+2orm
+orm1i
+or3n4a
+5ornis
+or3nit
+or3one
+o5roo
+or5ose
+or5oso
+or1ou
+orrel3
+orres3
+or4sc
+or4sey
+or4sti
+2ort
+ort3an
+ort3at
+ort3er
+or5tes.
+or3thi
+or4thr
+or4tit
+ort3iz
+or4tor
+or5tra
+ort3re
+4or1u
+or4un
+ory5p
+osa5i
+os3al
+osar5
+o1sc
+os4ca
+os4ce
+o2sch
+o4sci
+osclero5s
+o3sec
+osec3u
+ose5g
+os5enc
+osens4
+os5eo
+oser4
+o2set
+os5eu
+o3sia
+osi4al
+osi4an
+os5ide
+o3sier
+os5if
+os1in
+o4sis
+o5ske
+o5son
+o3soph
+os3opo
+4osp
+o3spec
+os1pi
+os4sa
+oss5ar
+os4sit
+4osta
+ost5age
+os4tar
+os5tee
+os5ten
+osten5t
+ost5ica
+os3til
+o5stome
+ost3or
+4osu
+os1ur
+2ot
+ot3a4g
+o5talit
+ot3am
+ot4anic
+o3tap
+ot4atio
+o5ta5v
+o3tax
+o4ted
+oter4m
+ot5esta
+4oth
+othalam5
+oth5erin
+o5therm
+otherm5a
+o5thor
+o5tia
+o5till
+5ot5iniz
+ot4iv
+o3tiva
+o5tivi
+o1t2o
+o5tone
+o4torn
+o4tou
+4o1tr
+oturi4
+oty3le
+o4u2
+5ou3a
+oub2
+ou5br
+ou5ca
+ou5co
+oud5i
+4oue
+ou3et
+oug4
+ou5ga
+ought5i
+ou5gi
+oul4t
+oult5i
+ou3m
+2oun
+oun2d
+ound5a
+ound5el
+oun5gin
+oun3tr
+oup5li
+our3er
+ou5san
+2ouse
+5ousia
+ouss4
+out5ish
+ouv5a
+ova3le
+o5var
+4ovati
+ov5eling
+o4ver.
+over3b
+over3s
+ov4ete
+ovid5en
+o1vis
+ovis5o
+o2v5os
+ow3ag
+ow3an
+o5way
+owd4i
+owd3l
+ow1el
+owel5li
+ow5ha
+owhith4
+ow1i
+ow5in
+owi5ne
+ows4
+ow5sh
+ow5sl
+ow5y
+o4x
+ox3i
+oxic5ol
+ox5o
+2oy
+oy5a
+oys4
+2oz
+o1zo
+ozo5i
+o3zyg
+4pa.
+pac4te
+pa5dou
+pad4r
+paes4
+pa3gan
+4pagat
+pag4ati
+pain2
+4pairm
+pa5lan
+pal3in
+pa3lo
+p4als
+pan5ac
+pan1e
+pan3i
+pa4pa
+pa3pe
+pap3u
+pa3py
+1par
+para5s
+par3l
+pa3roc
+pa3rol
+par5on
+1p4as
+pass5ive
+pas1t
+pas4tin
+pa3ter
+pati4n
+p5ato
+pat4ric
+pa5tricia
+5pau
+paul5e
+pau3p
+pa5vil
+5paw
+pawk4
+paw5ki
+2p1b
+p1c4
+p5d2
+2pe.
+pearl5i
+pe4co
+pec4tu
+2ped
+5ped3a
+3pede
+3pedi
+ped3is
+3peds
+pe2du
+p4ee
+pe2f
+4pele
+pe5leo
+pel5v
+pen4at
+5p4enc
+pend5er
+pen5dr
+pen4ic
+3p4enn
+pens5ati
+pen5u
+pe5on
+5perc
+percent5
+4pere
+perem5i
+p4eri
+5p4er3n
+p3eron
+per4os.
+per5tin
+pert5is
+per3v
+p4ery
+2pes
+pes4s3
+pes5til
+3pet
+pet5all
+pet3en
+pe2ti
+pet3r
+pe4wa
+4pex
+p1f
+p5g
+2ph.
+4phae
+pha5ged
+ph5al.
+ph2an
+phant5i
+phe4
+ph5esi
+ph3et
+3phib
+4phic
+1phil
+phi4n
+ph1is
+phi5th
+ph2l
+1pho
+4phobl
+4phoned
+3phor
+ph5oriz
+phos3p
+ph3ou
+3phra
+4phs
+1phu
+phu5i
+2phy.
+3phyl
+4pi.
+3piar
+4pica
+p5ical
+pi3co
+pi4cr
+pict4
+p2ie
+p4iest
+pi5eti
+p5ifie
+pig3n
+p2il
+3pile
+pill5in
+5pilo
+pi3lot
+pim2
+pin4e
+pin5et
+3pinge
+p4inn
+5p4ins
+3pi1o
+pip4a
+pi4pe
+5piq
+pir5ac
+pir4t
+p4is.
+p4isc
+pis2s
+piss5a
+pis5til
+pis4tr
+p2itu
+2p3k2
+p2l2
+1pla
+pla5no
+plant5er
+plas5tici
+pla5t4o
+4ple.
+4pled.
+3pleg
+3plen
+2ples
+4plism
+4plist
+plu2m
+plum4be
+plumb5er
+p4ly
+2p1m
+2pn
+pnos4
+1po
+4po.
+po3ca
+3pod
+4pof
+2p5oid
+pois5i
+po5lemic
+po4ly1
+poly3s
+poman5
+pom4e
+p4o2n
+pon4ac
+pon4ce
+pon4i4e
+3ponif
+pon5ta
+2pony
+po4pa
+po5ple
+4porato
+por3ea
+4pored
+pori4f
+por3p
+3port
+por5tie
+3p4os
+pos1s2
+po1te
+poult5e
+pound5er
+pout5er
+p5oxi
+5poy
+4p1p2
+ppar3
+pparat5
+p4pene
+ppet3
+pph4
+ppi4c
+p4pled
+p5pler
+p5plet
+ppress5o
+pprob5a
+1pr2
+prac1
+pra5d
+prar4
+4pre.
+preb3
+pre1d
+pref5ere
+prel5ate
+3prem
+pre5mat
+pren3
+pres3a
+pre5scin
+p3rese
+5pressi
+5prici
+pri4es
+4pri4m
+pring5er
+pring5i
+4prio
+p5riol
+pri4os
+pris5in
+priv2
+4priva
+4pro.
+pro3bo
+p3roc3a
+pro4ch
+pro1l
+pron4a
+proph5e
+propyl5
+pro3r2
+pros4i
+pros5tr
+pro3th
+4pry
+2ps2
+p3sac
+psal5t
+p3sh
+p1si
+p5sin.
+pso3m
+p1st
+psul3i
+3psyc
+2pt2
+pt3ab
+p4tad
+p4tan
+p2tar
+pt5arc
+p1ted
+p5tena
+pt5enn
+5ptery
+p5tet
+pt4ic
+p5tie
+p3til
+p2t3in
+pt4ine
+p3tise
+p5tisi
+p5tom
+p4tr
+p1tu
+pub1
+pu5be
+puc4
+puch4
+pudi4c
+pu5er
+puff5er
+pu4lar
+pu5lar.
+pu5lis
+p4u4m
+pum4o
+p4un
+pun4a
+3punc
+pun5gi
+pun3i
+pun2t
+pu3pi
+pur5b
+pur3c
+p4us
+push4ie
+pu3tat
+p5u5tis
+pu3tr
+4p1w
+2p4y
+py3e
+3pyg
+3pyl
+pyr3e
+py5t
+4qf
+qu4
+5quak
+4quar
+qua5tio
+2que.
+3quera
+4quere
+4ques.
+1quet
+5quina
+5quir
+3quito
+4quitu
+4ra.
+ra3ba
+5rabe
+3ra3bin
+r2abo
+ra3bol
+rac4a
+r2acu
+rac5ula
+ra5culo
+r2ad
+ra4de
+rad4ine
+rag5ou
+ra3gr
+3raill
+ra5ist
+4ralia
+ra3ly
+r5amn
+ra3mu
+r4andi
+ran5dish
+ran4du
+ra5nee
+ran4gen
+ra3nia
+ra3noi
+ran2t
+ran5ted
+5rantel
+rant5in
+rant5o
+rapol5
+rap5to
+4rarc
+rare2
+rar3ef
+rar5ia.
+ras2
+ras3c
+r2ase
+r4ask
+ra3so
+rass5a
+rass5in
+r4as5te
+ra5tap
+ra5tat
+rat5eu
+rath4e
+rat3if
+rat4in.
+ra5toc
+5ra5tol
+4r4atom
+ra4tos
+ra5tui
+rat5um
+rat3ur
+rav5ai
+rav5eli
+rav3it
+rawn4
+ra3zie
+r1b
+r2ba
+r4bag
+rb3ali
+rb1an
+rbar3
+r2be
+rbe5c
+r3bel
+rbel5o
+rb3ent
+r4bes
+rb2i
+rbic4
+rbic5u
+r2bin
+r5bine
+rbit1
+r2bos
+r4bum
+rbu5t4
+r1c2
+rcant5
+rca4s
+r4cele
+rcen5er
+rcen5tena
+r2ces
+rcha3i
+rch3al
+rch5ard
+rch5ate
+r3cheo
+r4cher
+rch4ier
+r4chin
+rch3is
+r3chit
+rcil4
+rci5nog
+rcis2
+rciz4i
+r2cl
+r4cle
+r5clo
+rcolo4
+rcrit5
+rcriti4
+rct4
+rc5ti
+r5dam
+r4d1an4
+rd4an.
+r2dar
+r5de4l
+r3dens
+r4des
+rd5ess
+rd5ian
+r4die
+r5dig
+rd2in
+rd3ing
+rdi3o
+rd1is2
+rd5ler
+rd3li
+r4dol
+rd5ous
+r2e
+4re.
+rea4
+r4ea.
+react5iv
+re3af
+re3ag
+re5alt
+re5amb
+re3ani
+re5ant
+re5asc
+reas3o
+r5eau
+3reav
+r5ebrate
+reb5uc
+re3cal
+rec4ce
+re3ce
+reced5en
+re3cha
+reci5si
+r4e1c2r
+rec4t3r
+re3cu
+2r4ed
+re1de
+re3dis
+re4dol
+re1dr
+reed5i
+ree3m
+3reer
+re2fe
+re3fin
+re5gali
+re5gra
+re3gre
+reg3ri
+re3gro
+reg3ul
+rei4
+re3if
+re1in
+re3is
+reit3
+reit4i
+re1la
+re1le
+4reled
+re3lia
+rel3ic
+re5lig
+reli4q
+rel3li
+r5em.
+rem5ac
+reman4d
+rem5ato
+r3emp
+rem5ul
+rena4
+ren5at
+r4endi
+rene2
+ren4es
+r4eni
+renic5
+ren4it
+ren4ter
+re5num
+re3oc
+3reog
+re5ola
+re3oli
+3reos
+re1pe
+re4per
+re5ph
+rep5id
+re3pin
+re3ple
+re4pre
+re1q
+rer4a
+rere4
+re5rea
+re3r2u
+2res.
+re3scr
+re3sel
+re3sem
+re3ser
+res5ist
+re5sit
+re3spe
+r3esq
+re5stal
+rest5er
+re5stu
+3retar
+re3ten
+re4t4er3
+re5term
+re1t2o
+re5ton
+re3tra
+re3tre
+re5tri
+re3tu
+re3un
+reur4
+re1v
+rev3el
+revi4t
+r1f
+rf4l
+rfu4m
+r1g2
+r4gag
+rgal4
+r2ge
+r5gee
+r4gene
+r3geo
+r3ger
+rg5li
+rgu5f
+rh2
+r5hel4
+rhe5ol
+rhos4
+3r2hy
+4ri.
+ri3am
+ri5ap
+2r2ib
+ri3bo
+rica5tu
+2rice
+rich5om
+rick4en
+r4icl
+ri5cli
+ri3col
+ri5cor
+ri4cra
+2ricu
+rid4al
+rid4e
+ri5el
+ri3er
+ri2es
+rift5er
+rif5tie
+5rifuga
+ri5gam
+rig5ant
+ri5l4a
+r4ile
+rill5er.
+rill5ings
+4rim.
+ri2ma
+rima4g
+rim5an4
+rim3at
+r4imb
+rimen4
+4rimm
+4rims
+rin4e
+r4inet
+ring5ie
+rink5er
+r4ino
+rin4s
+rins5i
+rin4t5er
+ri3o
+rio4g
+5rione
+ri4op
+ri5or
+ri5p2a
+ri5pie
+rip5lica
+ri5r
+ris4c
+ris4is
+r2isp
+ris4pa
+ris4pe
+ris5ter
+4risti
+ri3ton
+r5it5r
+r2i4v
+riv4al
+ri5vall
+riv5eli
+riv3en
+riv3il
+5ri5zo
+r1j
+r2k
+r5kas
+rk5ati
+r5kell
+rk5eni
+rk1er
+r3ket
+r3key
+r3kier
+r5kiest
+r5kin.
+r5kins
+rks4me
+r1la
+rlat3
+r1le
+r3l4ic
+r3line
+r5lins
+r4lit
+r1lo
+r3mac
+rma5ce
+r5mad
+r2mal
+r4manc
+r4mano
+r4mari
+r4mary
+rm4as
+r4m3ati
+rma5toc
+r5ma5tol
+rme2a
+r2mic
+rm4ica
+r5m2id
+rm4ie
+r5mig
+rmil5
+rmin4e
+rm3ing
+r4ming.
+r4mite.
+r3moc
+rmol4
+r1mu
+rmu3li
+r2n2
+rn3ab
+r3nac
+r5nad
+rn5ar
+rn3ate
+rn5atin
+rn5edl
+r3nel
+r3ness
+rn5est
+r3net
+r3ney
+r5nia
+rn5ib
+r3nic
+rn3in
+rn4ine
+r1nis
+rn3ist
+rni5v
+rn3iz
+rn5n
+r3noc
+r5nog
+rnt4
+rnuc4
+r5nut
+4ro.
+ro4be
+rob3le
+ro5br
+5rocc
+ro3cu
+r2od
+ro3do
+rody4n
+ro1fe
+ro3gn
+4roi
+ro3ic
+roid3
+ro3la
+r4oled
+rol5ite
+ro3ly
+romant4
+ro5mel
+ro3mit
+romolec5
+rom4p
+ro3mu
+ron4ac
+4ronal
+ro5nate
+ron5ch
+ron4do
+rong5i
+r5onme
+ro1no
+ron4ton
+roo4
+1room
+5root
+r2op
+4rop.
+ro3pel
+rop4ine
+r4opr
+r5opte
+ror5d
+4rore
+r4osa
+rosi4a
+ro5sol
+4ross
+ro5stat
+ros4ti
+ros5tit
+ro3tat
+ro1te
+ro4ter
+ro3tu
+5roue
+roul3
+round5er
+rou5sel
+4rouss
+r4out
+r4ow
+row3er
+4rox
+rpass5in
+rp3at
+rpe2
+r3pent
+rp5er.
+r2ph
+rph5e
+r3phol
+rp3ing
+rp5is
+rpol3a
+r2p5ou
+rpre4
+rpret5er
+r3pu
+r1q
+4r1r4
+rra4h
+rran5gi
+rrap4
+rre2l
+r4reo4
+rrhe3
+r3ri
+rric4
+rricu4
+rri4fy.
+rrin5ge
+rri4os
+rrob3
+rrog5
+rro4t
+r5ru
+rry5
+r3ryi
+r3rym
+2r1s2
+r4sag
+r2sal
+r5salis
+r5saliz
+r2san
+r4sar
+r2se
+r3sea
+r3sec
+rsel4
+rsell5
+rs3er.
+rs3ers
+r3set
+r3sha
+r3shi
+r4shie
+r5si2a
+rs3ib
+r5sie
+r4sil
+rs3ing
+r3sio
+r4sit
+rs3iv
+rs5li
+rstor4
+rstrat4
+r3su
+r4sus
+rswear4
+rt2
+rt3ab
+rta4g
+rt3age
+r3tar
+r4tare
+rt3c
+r1ted
+r4tedl
+r3tel4
+r5tend
+rt3eni
+r5terer
+r5tet
+r5teu
+r4thene
+rth2i
+rth5ing.
+rth3ri
+r1t4ic
+r4ticl
+r5tiet
+r5tila
+r5till
+rtil5le
+rt5ily
+r2tin
+r3tina
+rt3ing
+r3titi
+rti5tu
+rt3iv
+r2tiz
+rt5let
+rt3li
+r1t4o
+rto5l
+rt5rid
+rt5si
+r1tu
+r4tus
+rtwis4
+ru3a
+r4ube
+rub3r
+ru4ce
+r2ud
+rue4l
+r4uf
+ru3in
+ruis5i
+ru2l
+r4ume
+r4umi
+ru4more
+run4cl
+runcu4
+runcul5
+run2d4
+run2e
+ru5net
+run4g
+run4t
+ru2p
+rup5lic
+ru3pu
+rur4i
+rus4p
+rust5at
+rust5ee
+rus5tic
+rus4t5u
+ru3tal
+ru3ti
+r1v2
+r4vanc
+r2ve
+rvel4i
+r3ven
+rven4e
+rv5er.
+rv5ers.
+r3vest
+r3vet
+r3vey
+rvi4t
+r1w
+2r2y
+ry5er
+5rygm
+ry4go
+rym4b
+3ryngo
+4ryngol
+ryp5a
+ry2t
+ryth4i
+r2z
+2sa.
+2sab
+s3abl
+5sack
+sac4q
+s3act
+sac4te
+sad5i
+sad5o
+5sae
+sa4g
+3sai
+sain4t
+5sak
+sa2l
+sa5lac
+3sale
+sa3lie
+s4al4t
+sa3lu
+sa4m
+sa5min
+sam5o
+samp4
+san3a
+san4ded
+s4an4e
+san5gar
+san5if
+2sant
+sant5ri
+s3ap
+sap3r
+sar5s
+3sas.
+sas3s
+sassem4
+s2a1t
+sa2te
+s5ativ
+s5atory
+sat1u
+1sau
+sau5ci
+saur5
+savi2
+sa3vou
+4s3b
+s4bei
+sbe4s
+sby3
+sc2
+s1ca
+sca5len
+sca2p
+scar4c
+scav3
+s1ce
+s4ced
+4scei
+4s4ces
+sch2
+scid5
+s2co
+scof4
+s4coi
+3s4cope
+5scopic
+5scripti
+2s1cu
+4scura.
+4scuras
+2s1d2
+2se.
+se2a
+s4eam
+seas4
+sea3w
+sec4a
+sec5an
+se2co
+secon4
+2sed
+se4da
+sed4it
+3seed
+3sei
+sei3g
+5sela
+4sele
+se3lec
+selen5
+5self
+2s4eme
+sem2i
+semi5d
+sem4o
+sen5g
+3sens
+sen5sati
+sen5sori
+sent5ee
+5sentm
+seo5log
+se2p
+sep3a
+sep4si
+3sept
+sep3ti
+ser4an
+se5rene
+ser4to
+4servo
+s2es
+4ses.
+se5sh
+s5esta
+1set
+5seum
+3sev
+sev3en
+sewo4
+3sex
+sexo2
+3sey
+2s1f
+sfact5o
+sfi4
+sfor5e
+sfran5
+2s1g4
+s2h
+4shab
+sh4abi
+sh1er
+sh5et
+shil5li
+sh5iness
+sh3io
+5ship
+s3hon
+4shu4
+shys4
+si4all
+siast5
+4s1ib
+s3icat
+3sicc
+2s5icl
+si4cu
+si5cul
+s4id
+4sid.
+si4de
+side5l
+sid3en
+sid5eri
+4sids
+5sid5u4a
+si4ers
+sif4
+sif5f
+si4g
+1sili
+sim4ply
+2sin
+s2ine
+sin5et
+5sing5er
+sin3i
+5sink
+si5nol
+si3nus
+1sio4
+4sio.
+si5o5s
+3sip
+si4pr
+s1is2
+4sish
+4sism
+sist3a
+sist3o
+s1it
+si4te
+sit5om
+4s1iv
+5siva
+s1j
+s2k2
+4sk.
+s5kar
+ske2
+s3ket
+s5key
+s3kier
+s5kiest
+sk5ily
+sk5ines
+4sks
+sky3l
+2sl4
+slang5i
+s1lat
+3slau
+slav5eri
+s2le
+s5lea
+s3let
+s5ley
+s3lit
+slo3c
+slov5
+s5luc
+2s1m4
+s3man
+smas4
+s3men
+smi3g
+3smith
+smo4d
+smu5tatio
+s1n2
+s2na
+2so.
+2s3od
+sod3o
+sody4
+3soe
+4s3oid
+s2ol
+sol3a
+so5lan
+sol4er
+so3lic
+3solve
+solv5er
+1so2m
+soma5to
+3some.
+so5mete
+so3mo
+s2ona
+son5at
+s4one
+son5or
+s2o2p
+4sor3ie
+5sorio
+sor4it
+s5oriz
+sor3o
+s3ory
+sos4
+4sose
+so5th
+3sou
+sov5e
+so3vi
+spast4
+spens5a
+4speo
+3sperm
+s5pero
+spers5a
+sph2
+s3pha
+3spher
+spic5ul
+s2pid
+sp5id.
+s5pier
+spil4l
+s2pin
+sp3ing
+spi5ni
+spital5
+s1pl
+sple2
+s4ply
+s2po
+5spom
+spon5gi
+3spons
+3spoon
+spru5d
+s4py
+s1r
+sre2
+sreg5
+srep5u
+sre4s
+4ss
+s1sa
+s5sam2
+s1sel
+s5seng
+s3sent
+ssent5er
+ss3er.
+s5seri
+ss3ers
+s5seu
+ssev3
+s3sia
+s1sic
+s1sif
+ss1in
+ss4in.
+s4sine
+ss4is.
+s3s2it
+ss4ivi
+ss5li
+ss3m
+s4sn
+s1so
+ssol3u
+ssolu4b
+s4sore
+ssor5ial
+ss5po
+s1su
+ss3w
+st2
+4st.
+stab2
+sta3bi
+4stak
+s4tale
+stant5iv
+s3tas.
+5static
+st3c
+ste2
+ste5ar
+ste5at
+s4teb
+s4tec
+4s1ted
+s4tedl
+s4tedn
+4stere
+ster4ia
+s4tern.
+s3tero
+st5est
+s1th
+s4tha
+s4thu
+s3ti3a
+3stick
+s3ticu
+stil5ler
+s4tily
+st3ing
+5s4tir
+s5tiz
+4stl
+st3ler
+st3li
+s4toe
+3ston
+stone3
+ston4ie
+s5torat
+stor5ian
+s4tose
+s2tou
+s4tray
+stre4
+strep3
+3struc
+stru5d
+2st3s
+s1tu
+s4tud
+stu4m
+stur4e
+4stw
+s4ty
+1styl
+4su.
+su5an
+su4b1
+subt2
+suct4
+sud4a
+su3et
+suf3f
+sug3
+3sui
+sui5c
+su5ing
+1s2ul
+s4u2m
+sum3i
+sun4a
+su5pe
+su3pin
+supra3
+sur4as
+sur3c
+s4urg
+sur3pl
+su5su
+su5z
+2s3v
+svers5a
+sves4
+svest5i
+sw2
+5swee
+swell5i
+4swered
+2swo
+s2y
+4sy.
+sy4bi
+sy1c
+sy4ce
+sy4chr
+sy4d
+1syl
+3syn
+syn5e
+sy5pho
+syr5i
+2ta.
+2tab
+ta5blem
+3tabli
+t2abo
+ta3bol
+ta4bou
+t4a3ce
+ta5chom
+ta3chy
+ta4cid
+t5ade
+tad4i
+5t2adj
+ta5dor
+tad2r
+tae5n
+taf4
+tage5o
+ta5gog
+3tagr
+3tah
+1tai
+3tail
+2tair
+t4ais
+1tak
+tal2c
+tal5ent
+ta5lep
+t4alia
+t4alin
+tal4l3a
+5tallu
+t2alo4
+ta3ly
+tam5ari
+5ta3met
+tamorph5
+tan5at
+tand5er
+t4ane
+5tanel
+tan5ie
+t5aniz
+tant5an
+ta4pa
+1tard
+tar5ia.
+tark5i
+tar3n
+3tarr
+tas3i
+t3asm
+5tass
+tas4t
+ta3sta
+tast5i4c
+t4ateu
+3tatis
+t4ato.
+tat4ou
+tat4r
+tat3ut
+tau3to
+t5awa
+tawn4
+t4ax
+4t3b
+2tc2
+t1ca
+tcas4
+tch5ett
+tch5u
+4t1d4
+4te.
+te5cha
+5techn
+te3cr
+t4ed
+te5d2a
+4tedd
+4tedo
+4teei
+te2g
+5tegic
+t3ego
+teg1r
+teg3u
+tei4
+te2l
+4teled
+tel5iz
+1tell
+4te3lo
+3tels
+tem3a
+4teme
+te5mon
+ten4ag
+4tenar
+4tene
+t5enm
+5tenna
+4teno
+te5nog
+tent4a
+te2o
+teo5l
+2tep
+te3pe
+tep5i
+tera4c
+t4erag
+t4erato
+3ter3b
+5terd
+2tere4
+ter3eb
+ter5ec
+5terel
+te3reo
+3teres4
+1teri
+ter3ia
+ter5id
+ter5if
+t4erin
+ter5iorit
+ter3it
+ter5k
+5ternit
+ter5no
+3terr
+2t2es
+4tes.
+tesi4
+t3esq
+t3ess.
+t5esses
+tes4t
+test3a
+5teste
+test5er
+test5in
+test5or
+tes5tu
+teti4
+tet1r
+tetr5o
+tew3ar
+3tex
+2t3f
+t3g
+2th.
+tha4
+th5al.
+thal3m
+4the.
+4thea
+th5eas
+4thed
+1thei
+3theo
+theo3l
+t4her
+5therap
+th5erc
+t5herd
+4thered
+th3ern
+th3ery
+4thi.
+t5hill
+3think
+5th4io
+th4is.
+th5lo
+2thm2
+th4mi
+th3oli
+4t5hoo
+4thopt
+4thores
+3thot
+5thoug
+1th2r
+2ths
+5thur
+5thym
+3thyr
+thys4
+4ti.
+1ti2a
+ti3ab
+2t3ib
+5ti5bu
+t1ic
+t3ic.
+tic5as
+t2ici
+tici5ar
+3ti3cin
+t4icity
+ti3col
+tic1u
+4ticule
+t3id.
+t4ida
+3tidi
+ti3die
+t5ids
+3ti2en
+1tif2
+ti3fe
+4tiff
+4tific.
+3tigi
+tigi5o
+4tigm
+5tigu
+ti4ka
+ti4let
+5tilin
+t4ill
+til4l5ag
+t4ilt
+1tim
+tim1a
+5timet4
+t1in
+5ti5nad
+4tined
+tin3et
+ting5ing
+3tinn
+4tins
+t4int
+tin4te
+tin5ted
+tint5er
+tin3ue
+1tio
+ti3oc
+tiol3a
+ti5omo
+4tionem
+1tip
+ti5plex
+ti3pli
+ti4q
+ti5qua
+t3iris
+2t1is
+3tisan
+tis4c
+tish5i
+3tiss
+tis2t
+5t4iste
+t4istr
+ti5t4an
+tith4e
+tit5il
+t3itis
+3titl
+ti3tra
+3tiu
+2t1iv
+tiv5all
+t3ive
+tiv3is
+2tl
+t1la
+tlant4
+5tleb
+5tledr
+3tlef
+3tlem
+5tlen
+5tletr
+5tlew
+t1li
+tlin4
+4t3m
+tmet2
+tmo4t5
+2t3n2
+t4nere
+2to.
+toas4
+to1b
+4tocc
+tode5c
+tod4i
+to5do
+3toe
+1tog
+2t3oid
+5tok
+4toled
+tol4l
+tolu5
+to5ly
+tom3ac
+toma4n
+tomat5ol
+tom4b
+to4mog
+tom5os
+ton4e
+ton5ea
+3tonn
+ton3s
+top4e
+to5pia
+to4pos
+t1or
+to5rad
+4tore
+tor5er
+tori4as
+tor5oi
+tor5p
+tor4q
+3tos.
+to3s4p
+tos4t
+to5str
+to5talis
+to5taliz
+to3tem
+tot5u
+tou4f
+5tour
+t3ous
+4tov
+to3war
+t3p
+tr2
+tra4co
+4tradd
+4traist
+tra5q
+trarch4
+tra5ven
+tra5vers
+trav5est
+3tray
+4tre.
+4tred
+tre4mo
+tren4
+trend5i
+tre5pr
+tres4s
+4trew
+t5ricl
+3tricu
+t2rie
+tri5fli
+trifu5ga
+2tril
+tri3li
+tri3me
+t2rit
+4trix
+t4rod
+tro5f
+5troop
+tro4pha
+tro3sp
+t2rot
+t5roto
+tro1v
+3troy
+t4ruc
+tru3i
+2t4ry
+trys4
+4t1s
+t2sc
+ts4h
+ts2i
+t4sil
+tstay4
+2t1t4
+tta4
+t3tab
+t5tan
+t5tas
+t3ted
+t4tere
+t5terer
+t5test
+t3ti
+tti3tu
+ttitud4
+ttitu5di
+t3tler
+t3tli
+t5toi
+t5tor
+t3tos
+tt5s
+t4tupe
+t2ty
+4tu.
+tu1a
+tu4al5li
+tuari4
+tu4bin
+tu5bu
+tu5den
+tud5ie
+tu5en
+4tuf
+tu1i
+tu4is
+2tum.
+3tumi
+4tums
+3tun
+tun4a
+tu4ne
+tun5it
+tup5let
+tup5lic
+tu5rac
+t4uran
+turb3a
+tur4d
+turf5i
+5turit
+tur4n
+5tur5o
+1tut
+4tut4iv
+t1w
+t3wa4
+t2wi
+twi5li
+t3wit
+t3wo
+twon4
+4ty.
+ty4a
+5tych
+ty4let
+tyl5i
+ty5mi
+1typ
+3type
+1tyr1
+2tz2
+t5zia
+t5zie
+2ua2
+ua3ci
+u2ag
+ua5h
+u1al
+ua5lu
+uan4o
+uant5is
+uant5it
+uar3a
+uar2d
+uar3i
+uari4n
+uar5ters
+uar4t5i
+ua5tern
+uba4
+ub5bly
+u1b2i
+u4bicu
+ub3lin
+ub5lo
+ub3ra
+4uc
+u1c2a
+uccen5
+u4cend
+u4ch
+u5chr
+uc3l
+u4com
+uco5t
+uc2tr
+uc3ub
+uc5ul
+u5cum
+u5dac
+ud1al
+ud4e
+ud5ep
+u4der
+udev4
+ud4g
+udi4cin
+ud3ied
+u5dinis
+udi3o
+u5ditio
+u2do
+u5doi
+ud5on
+u5dor
+ueb4
+u4ed
+uen4o
+uen4ter
+uer3a
+ues4s
+uest5rat
+ues5tri
+ue4t
+uf2
+3ufa
+u3fl
+u4fo
+uft4
+uga4c
+ug5lif
+ug2ni
+u4go
+ug3ul
+ug3ura
+uhem3
+2ui2
+ui3al
+u2ic
+uicent5
+uid5o
+uil4a
+uild5er
+ui3lib
+uil4t
+uinc5u
+uin4s
+uint4
+uin4ta
+ui5pr
+uis3er
+uis4t
+uisti4
+uit5er
+ui5val5
+ui3vo
+u2iz
+4ul.
+u1la
+u4lab
+4ulac
+ul5ard
+u5lat
+ul4bo
+ul3ca
+ul4ch
+5ulche
+5ulchre
+4ulea
+u5lee
+u1len4
+4ulenci
+u5lent
+ulet4
+ul4ev
+ul2fa
+ul2i
+ul4ia
+u3line
+ul3ing
+ul5ish
+u5liti
+u5lity
+4ull
+ul4lat
+ul4l5ib
+ul4lis
+ul4lit
+ul3m
+u1lo
+u5lom
+ulph3i
+ulph3o
+ulp5ing
+ul4po
+2uls
+ul3sif
+u1lu
+ul1v4
+u1ma
+um3am
+umar4
+u5mas
+um4bar.
+um2bi
+umen4t
+u1mi
+u4mic
+u2m5if
+umi4fy
+umi5lia
+umin4ar
+u4mined
+u4m3ing
+u4mora
+u4mos
+um2p
+um4pa
+ump3er
+ump5li
+umpt4
+ump5te
+u1mu
+umu4lo
+un1
+u4n3a4
+un5ab
+unabu4
+un4ae
+un4as.
+un2ce
+un4dal
+un3ded
+unde4t
+undeter5m
+undi4c
+un4die
+un3do
+un4dus
+u3n2er
+unho5li
+un2i
+u1nic
+un4ie
+un3in
+un4ine
+uni5p
+uni3so
+un3ist
+uni1v
+un3iz
+unk5eri
+un5ket
+un3kn
+2unn
+un4nag
+un5o
+un5r
+un3s4
+un5sh
+un2ti
+until4
+unu4
+un3us
+uo3de
+uodent4
+u5oros
+u3os
+uo5tatio
+u1ou
+2up
+u1pat
+u1pe
+u5pee
+uper3
+u1ph
+u5pid
+up3ing
+u4po
+u5pol
+u2pr
+upre4
+u5quet
+u4r
+ur1a
+4ura.
+ura4ci
+4urae
+ura2g
+4uranti
+uras5
+urb5ing
+ur2c
+urc3a
+ur5den.
+ur5deni
+ur5die
+ur4du
+ur3ea
+ur5ee
+ur1er
+ur3ers
+ur1e2t
+ur3ett
+ur2f
+ur3fa
+ur1i
+u5ri5cu
+ur4ie.
+ur5ifie
+uril4
+ur4ili
+ur5ion
+uri4os.
+url5er
+ur5lie
+url5ing
+ur1m4
+urn3al
+urn3er
+urn5s
+ur1o
+uro4d
+ur5o4m
+ur5ot
+uroti4
+urpen5t
+urph4
+ur2s
+urs5al
+urs5er
+ur3sh
+urs3or
+ur5ta
+ur1te
+ur5tes
+urth2
+ur3the
+urti4
+ur1u
+ur4va
+u3sad
+us3ag
+us3al
+us4ap
+us3at
+2usc
+us4can
+ush5a
+us5ian
+usil5
+u4s1in
+usk5er
+us1p
+us4pa
+uss4e
+4ust
+us3tac
+us5tan
+ust4ic
+us5tici
+ust5ig
+ust3il
+us1to4
+us1tr
+us4tre
+usur4e
+us5uri
+u3tane
+utch4e
+ut5eni
+u5teo
+u4tere
+ut2i
+u3tie
+ut3ing
+u5tini
+u3tio
+ut5ism
+ut3ist
+5u5tiz
+ut3le
+utli4
+ut2o
+u4to5s
+u4t1ra
+uts2
+ut5sm
+ut4tone
+u3tu
+u4tul
+uu4
+uv2
+u4va
+uve2
+uven3
+uv5eri
+u5vin
+ux2o
+uy4a
+uy5er
+4va.
+2v3ab
+5vac
+va1ca
+va5ceo
+vacu1
+v4ad
+3vag3a
+va4ge
+4vaged
+vager4
+vag5r
+v1al.
+1vale
+vali2
+va5lie
+val4ise
+5valu
+5val4v
+vam4i
+va5mo
+5vann
+vanta4
+4vantl
+var4is
+4vase
+vas5el5
+v5a4so
+vast3a
+v4at.
+5vatee
+vat4ina
+4vatu
+2ve.
+vect4
+ve3g
+3vei
+2vel
+vel3at
+4vele
+v3eler
+ve5line
+v1ell
+v4ella
+vel5ler
+vel3li
+vel5opi
+ven4al
+ven4do
+ve1ne
+ve5nia
+vent5o
+ven4tr
+4venu
+v5en5ue
+5ve3o
+5verb
+verde5v
+4v4ere4
+ver5ea
+ver3ei
+v5erie
+ver3m4
+ver4ne
+5verse
+4ves.
+4vi.
+5vialit
+vi4atr
+vi1b4
+vic2
+vi4ca
+vi5cari
+vice3r
+5vict2
+5vicu
+5vider
+vign3
+vi4l
+vil3i
+3vili4a
+v5ilise
+v5ilize
+vil5lin
+vim4
+5vime
+2v1in
+vin4ac
+3vinci
+vin2e
+5vinit
+v5iniz
+vint4
+vin5ta
+3vi1o
+viol3
+vi5om
+5vi3p
+vire4
+vi5rid
+vir3u
+5visecti
+5visio
+v3ism
+2v5ist
+vi2t
+vit2a
+vi3tal
+vi5tel
+v5itie
+vit1r
+vi3tu
+v3ity
+viv5al
+viv5or
+vi5zo
+1vo
+2vo.
+vo2l
+vo5litio
+vol4ubi
+volv4
+4von
+vo5rac
+3vorc
+4vore
+3voro
+vo3tar
+2vow
+vr4
+v5ra4
+v5ri
+v5ro
+vrot4
+4vs
+v3ure
+2vv2
+v5ver
+v5vi
+4vy
+4wab
+wag3o
+wais4
+w3al.
+wall5er
+w3als
+wan5gli
+wank5er
+war5ded
+ward5er
+ward5r
+war4f
+war4te
+war5thi
+wass4
+was4t
+wa1te
+wav4ine
+w1b4
+w4bon
+w5c
+w5die
+w3dr
+we4b
+w4ed
+3weed
+5wei
+weight5i
+weir4
+wel3i
+weliz4
+wel4izi
+wel4li
+went4
+wes4
+west3
+w5est.
+w5f
+wh2
+w5hid
+wi2
+wid4e
+wi5er
+will5in
+wim2p
+win2e
+wing5er
+win4tr
+3w4ise
+with5eri
+w3la
+wl1er
+wl1i
+wl4ie
+w1m
+1wo
+wol4
+wol5ver
+3wom
+won2t
+word5i
+wotch4
+woun4
+wp5in
+wra4
+ws5ing
+w5ster
+wt4
+w5te
+w3to
+wy2
+wz4
+x1a
+x4ach
+x4ade
+x2ag
+x3agg
+xa5met
+x3ami
+xan5d
+xano4
+x2as
+xas5p
+x3c4
+xcav3
+xcor5
+xe4
+x1ec
+xec3r
+xe5cutio
+xecut5o
+xe2d
+x5edl
+x5edn
+x5eg
+x1em
+x3en
+xen4op
+x3er
+xer4g
+xer3o
+x1h
+xhort4a
+x1i
+x3ia.
+x4ias
+xi4c
+x5ige
+xim3a
+x4ime
+ximet4
+x3io
+xi4p
+x4it.
+x4its
+x1o
+x4ode
+x5om
+xo4mat
+xo4n
+x4os
+xotrop4
+x3p
+xpel4
+xpo5n2
+xpoun4
+x1s2
+x1t2
+x4ted
+xtens5o
+xter3i
+xter4m3
+xtern3
+x4th
+xti4
+xtra5d
+xtra3v
+xtre4
+xu4o
+x1ur
+xur4b
+x5us
+x5w
+xx4
+xys4
+xy3t
+y1a2
+y5ac
+1y2ar
+3yard
+yas4i
+4y1b
+yb2i
+yca5m
+y5chede
+ych5is
+y3cho
+y4chose
+yc1l
+yclam4
+y4coli
+y4coll
+ycom4
+y2cos
+y1d4
+yda4
+yder4
+ydro5s
+y4drou
+y3ee
+yel5o
+y3en
+y1er
+y3est.
+yes5te
+y5ett
+y5f
+y1g
+ygi2
+ygi5a
+y3gl
+ygo4i
+y1h
+y1i
+y3in
+yle2
+ylin5de
+yllab5i
+yl3os
+yl5ou
+y1me4
+y3men
+y5met
+y5mia
+ym5in
+ymot4
+ym4pha
+yn1
+ynago4
+ynand5
+yn5ap4
+yn5ast
+yn4ci
+ynd4
+yn2e
+yn3er
+yng4
+yn4gol
+yni4c
+yn4y
+y1o2
+yo3d
+yo4gis
+youn4
+young5
+2yp
+yp5al
+yper3
+y5pere
+y4peri
+y4pero
+y4pet
+y2ph
+yph4e
+yph3i
+y4p1i
+yp1n
+ypo1
+y4pox
+y2pr
+yp5ri
+yp4si
+yp5syf
+ypt3a
+y5pu
+y3rag
+yr3at
+yr3ic
+y5rig
+yr3is
+yr3i4t
+yr5olo
+yr4r
+yr4s
+yr5u
+4y2s
+ys5ag
+ys5at
+y3s2c
+y3sh
+ys1ic
+ys3in
+ysi4o
+yso5
+ys4so
+ys1t
+ys4to
+y3u
+yv4
+y3w
+yz5er
+yzy4
+z1a1
+2za.
+za4bi
+za2i
+z4as
+za4te
+zd4
+zeb4
+ze4d
+zen4a
+z5eng
+zer5a
+z3et4
+z1i
+zib5
+5zic4
+z2ie
+zi5m
+zin4c3i
+z3ing
+zing5i
+z4is
+3zlem
+z3ler
+z3li
+4zo.
+5zoa
+zo3an
+3zoo2
+zo3ol
+zo3on
+zo5op
+zo5oti
+zo5p
+zot2
+z5s
+5zum
+4zy.
+zz2
+z3zar
+z5zas
+z3zie
+zzo3
+z5zot
+}
+
+% end pattern data
+
diff --git a/Master/texmf-dist/tex/context/sample/aesop-de.tex b/Master/texmf-dist/tex/context/sample/aesop-de.tex
new file mode 100644
index 00000000000..80a41f295ef
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/aesop-de.tex
@@ -0,0 +1,25 @@
+% German example file from Aesop
+
+Der L\"owe und die M\"ucke
+
+Eine M\"ucke forderte mit den \"uberm\"utigsten Worten
+einen L\"owen zum Zweikampf heraus: \quotation {Ich
+f\"urchte dich nicht, du gro\SS es Ungeheuer}, rief sie ihm
+zu, \quotation {weil du gar keine Vorz\"uge vor mir hast;
+oder nenne sie mir, wenn du solche zu haben glaubst; etwa
+die, da\SS\ du deinen Raub mit Krallen zerrei\SS est und
+mit Z\"ahnen zermalmest? Jedes andere feige Tier, wenn es
+mit einem Tapfern k\"ampft, tut dasselbe, es bei\SS t und
+kratzt. Du sollst aber empfinden, da\SS\ ich st\"arker bin
+als du!} Mit diesen Worten flog sie in eines seiner
+Nasenl\"ocher und stach ihn so sehr, da\SS\ er sich vor
+Schmerz selbst zerfleischte und sich f\"ur \"uberwunden
+erkl\"arte.
+
+Stolz auf diesen Sieg flog die M\"ucke davon, um ihn aller
+Welt auszuposaunen, \"ubersah aber das Gewebe einer Spinne
+und verfing sich in demselben. Gierig umarmte die Spinne
+sie und sog ihr das Heldenblut aus. Sterbend empfand die
+M\"ucke ihre Nichtigkeit, indem sie, die Besiegerin des
+L\"owen, einem so ver\"achtlichen Tiere, einer Spinne,
+erliegen mu\SS te.
diff --git a/Master/texmf-dist/tex/context/sample/bryson.tex b/Master/texmf-dist/tex/context/sample/bryson.tex
new file mode 100644
index 00000000000..ecda71c5895
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/bryson.tex
@@ -0,0 +1,9 @@
+Imagine trying to live in a world dominated by dihydrogen oxide, a
+compound that has no taste or smell and is so viable in its properties
+that it is generally benign but at other times swiftly lethal.
+Depending on its state, it can scald you or freeze you. In the
+presence of certain organic molecules it can form carbonic acids so
+nasty that they can strip the leaves from trees and eat the faces off
+statuary. In bulk, when agitated, it can strike with a fury that no
+human edifice could withstand. Even for those who have learned to live
+with it, it is often murderous substance. We call it water. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/davis.tex b/Master/texmf-dist/tex/context/sample/davis.tex
new file mode 100644
index 00000000000..8d45c984924
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/davis.tex
@@ -0,0 +1,13 @@
+This nation, turning 100 years old, had no {\em Odyssey}, no
+St.~George slaying the dragon, no Prometheus. The emerging American
+genius for making a lot of money was a poor substitute for King
+Arthur and his knights (although the Horatio Alger myth of rags to
+riches was good for a lot of mileage). Without a mythology and set
+of ancient heroes to call its own, America had to manufacture its
+heroes. So the mythmaking machinery of nineteenth|-|century American
+media created a suitable heroic archetype in the cowboys of the Wild
+West. The image was of the undaunted cattle drivers living a life of
+reckless individualism, braving the elements, staving off brutal
+Indian attacks. Or of heroic lawmen dueling with six|-|guns in the
+streets at high noon. This artificial Wild West became America's
+Iliad. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/dawkins.tex b/Master/texmf-dist/tex/context/sample/dawkins.tex
new file mode 100644
index 00000000000..3490b79b021
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/dawkins.tex
@@ -0,0 +1,20 @@
+I used a similar illustration in one of my Royal
+Institution Christmas Lectures in 1991. I said I had reason
+to believe that among my audience was a psychic,
+clairvoyant individual, capable of influencing events
+purely by power of thought. I would try to flush this
+individual out. \quotation {Let's first establish,} I said,
+\quotation {whether the psychic is in the left half or the
+right half of the lecture hall.} I invited everybody to
+stand up while my assistant tossed a coin. Everybody on the
+left of the hall was asked to \quote {will} the coin to
+come down head. Everybody on the right had to will it to be
+tails. Obviously one side had to lose, and they were asked
+to sit down. Then those who remained were divided into two,
+with half \quote {willing} heads and the other half tails.
+Again the losers sat down. And so on by successive halvings
+until, inevitably, after seven or eight tosses, one
+individual was left standing. \quotation {A big round of
+applause for our psychic.} He must be psychic, mustn't he,
+because he successfully influenced the coin eight times in
+a row? \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/demo-mps.tex b/Master/texmf-dist/tex/context/sample/demo-mps.tex
new file mode 100644
index 00000000000..57bb690c0a0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/demo-mps.tex
@@ -0,0 +1,23 @@
+% interface=en
+
+\starttext
+
+\setupcolors
+ [state=start]
+
+\startMPpage
+ path p ; color c[] ;
+ p := fullsquare scaled 4cm ;
+ c[0] := transparent(1,.5,red) ;
+ c[1] := transparent(1,.5,green) ;
+ c[2] := transparent(1,.5,blue) ;
+ for i = 0 upto 2 :
+ fill p rotated (i*30) withcolor white ;
+ endfor ;
+ for i = 0 upto 2 :
+ fill p rotated (i*30) withcolor c[i] ;
+ endfor ;
+ addbackground withcolor transparent(1,.5,cmyk(0,0,1,0)) ;
+\stopMPpage
+
+\stoptext \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/demo-tex.tex b/Master/texmf-dist/tex/context/sample/demo-tex.tex
new file mode 100644
index 00000000000..309a0acfc99
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/demo-tex.tex
@@ -0,0 +1,23 @@
+% interface=en
+
+\setuppapersize
+ [S6][S6]
+
+\setuplayout
+ [width=middle,
+ height=middle]
+
+\setuphead
+ [chapter]
+ [header=high,
+ style=\bfc,
+ alternative=middle]
+
+\starttext
+
+\title{Peter D. Ward} \processfile{ward}
+\title{Hermann Zapf} \processfile{zapf}
+\title{Bill Bryson} \processfile{bryson}
+\title{Edward R. Tufte} \processfile{tufte}
+
+\stoptext \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/demo-xml.tex b/Master/texmf-dist/tex/context/sample/demo-xml.tex
new file mode 100644
index 00000000000..bf527a74780
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/demo-xml.tex
@@ -0,0 +1,53 @@
+% interface=en
+
+\defineXMLargument
+ [title] [label=]
+ {\title[\XMLop{label}]}
+
+\defineXMLenvironment
+ [itemize] [packed=]
+ {\doifelseXMLop{packed}{yes}
+ {\startitemize[packed]}
+ {\startitemize}}
+ {\stopitemize}
+
+\defineXMLenvironment
+ [item]
+ {\item}
+ {\par}
+
+\defineXMLenvironment
+ [p]
+ {\ignorespaces}
+ {\par}
+
+\starttext
+
+\startXMLdata
+<title label="example">Just an Example</title>
+
+<p>There are three items:</p>
+
+<itemize packed="yes">
+ <item>Number One</item>
+ <item>Number Two</item>
+ <item>Number Three</item>
+</itemize>
+
+<p>And tree more</p>
+
+<itemize>
+ <item>First Line</item>
+ <item>Second Line</item>
+ <item>Third Line</item>
+</itemize>
+\stopXMLdata
+
+Instead of putting the data in here you can put it in a file, say
+\type {sample.xml} and load that file using:
+
+\starttyping
+\processXMLfilegrouped{sample.xml}
+\stoptyping
+
+\stoptext \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/douglas.tex b/Master/texmf-dist/tex/context/sample/douglas.tex
new file mode 100644
index 00000000000..cf5fd50f3e6
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/douglas.tex
@@ -0,0 +1,23 @@
+Donald Knuth has spent the past several years working on a
+system allowing him to control many aspects of the design
+of his forthcoming books|.|from the typesetting and layout
+down to the very shapes of the letters! Seldom has an
+author had anything remotely like this power to control the
+final appearance of his or her work. Knuth's \TEX\
+typesetting system has become well|-|known and available in
+many countries around the world. By contrast, his
+\METAFONT\ system for designing families of typefaces has
+not become as well known or available.
+
+In his article \quotation {The Concept of a Meta|-|Font},
+Knuth sets forth for the first time the underlying
+philosophy of \METAFONT, as well as some of its products.
+Not only is the concept exiting and clearly well executed,
+but in my opinion the article is charmingly written as well.
+However, despite my overall enthusiasm for Knuth's idea and
+article, there are some points in it that I feel might be
+taken wrongly by many readers, and since they are points
+that touch close to my deepest interests in artificial
+intelligence and esthetic theory, I felt compelled to make
+some comments to clarify certain important issues raised by
+\quotation {The Concept of a Meta|-|Font}.
diff --git a/Master/texmf-dist/tex/context/sample/hawking.tex b/Master/texmf-dist/tex/context/sample/hawking.tex
new file mode 100644
index 00000000000..e0e0cccd242
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/hawking.tex
@@ -0,0 +1,7 @@
+If [in 2600] you stacked all the new books being published next to
+each other, you would have to move at ninety miles an hour just to
+keep up with the end of the line. Of course, by 2600 new artistic
+and scientific work will come in electronic forms, rather than as
+physical books and paper. Nevertheless, if the exponential growth
+continued, there would be ten papers a second in my kind of
+theoretical physics, and no time to read them.
diff --git a/Master/texmf-dist/tex/context/sample/knuth.tex b/Master/texmf-dist/tex/context/sample/knuth.tex
new file mode 100644
index 00000000000..30b6310ccd4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/knuth.tex
@@ -0,0 +1,16 @@
+Thus, I came to the conclusion that the designer of a new
+system must not only be the implementer and first
+large||scale user; the designer should also write the first
+user manual.
+
+The separation of any of these four components would have
+hurt \TeX\ significantly. If I had not participated fully in
+all these activities, literally hundreds of improvements
+would never have been made, because I would never have
+thought of them or perceived why they were important.
+
+But a system cannot be successful if it is too strongly
+influenced by a single person. Once the initial design is
+complete and fairly robust, the real test begins as people
+with many different viewpoints undertake their own
+experiments.
diff --git a/Master/texmf-dist/tex/context/sample/materie.tex b/Master/texmf-dist/tex/context/sample/materie.tex
new file mode 100644
index 00000000000..5e259718678
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/materie.tex
@@ -0,0 +1,50 @@
+Zaagh, of Steek||zaagh.
+Domme||kraght.
+Mokers.
+Yzere Wiggen.
+Brandt||yzer.
+Hout||haak.
+Spaander||haak.
+Een Klaas Jacobzen.
+Tange.
+Nagel||hamer.
+Wigge.
+Oor||houten.
+Kluften.
+Hellen.
+Steven||haken.
+Hevels en Klein||touwen.
+Een Koe||voet.
+Schot||bouten.
+Yzere ram.
+Avegaar.
+Een houte Ram.
+Een groote Wigge daar toe.
+Teer||ketel.
+Slyp||steen.
+Een Mal.
+Rye.
+Hout||bok.
+Schraagh.
+Vlotten.
+Een Slee.
+Dwars||slee.
+Kaap||stander.
+Bytels.
+Klavaats||hamer.
+Rabat||yzer.
+Klavaats||yzer.
+Spyker||yzer.
+Werk||bytel.
+Duim||stok.
+Schraper.
+Een Moker.
+Spyker||hamertje.
+Een Roffel.
+Gerf||schaaf.
+Odief.
+Ploegen.
+Handt||zaagh.
+Klamp||spykers||boor, tien duims Boor.
+Dissel.
+Byl.
diff --git a/Master/texmf-dist/tex/context/sample/reich.tex b/Master/texmf-dist/tex/context/sample/reich.tex
new file mode 100644
index 00000000000..db9d4404f59
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/reich.tex
@@ -0,0 +1,11 @@
+\quotation {Heavy smoke}
+\quotation {Stand by, stand by}
+\quotation {It's full a' smoke}
+\quotation {Full a' smoke}
+\quotation {Urgent}
+\quotation {Guns, knives or weapons on ya?}
+\quotation {Wha' were ya doin'?}
+\quotation {Be careful}
+\quotation {Where you go}
+\quotation {Careful}
+\quotation {Stand by}
diff --git a/Master/texmf-dist/tex/context/sample/sample.tex b/Master/texmf-dist/tex/context/sample/sample.tex
new file mode 100644
index 00000000000..44ef8ec5dc4
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/sample.tex
@@ -0,0 +1,52 @@
+\starttext
+
+The sample directory contains a few files with quotes that can be used
+while testing styles.
+
+I'll complete this file when I've reorganized my books and audio cd's.
+
+If someone makes a nice bibtex file of these, the quotes can also be
+used in testing bibliographic references and citations.
+
+\starttabulate[|l|l|p|]
+\NC \bf file \NC \bf author \NC \bf source \NC \NR
+\HL
+%NC stork.tex \NC David F. Stork \NC \NC \NR
+\NC knuth.tex \NC Donald E. Knuth \NC \NC \NR
+\NC tufte.tex \NC Edward R. Tufte \NC \NC \NR
+\NC reich.tex \NC Steve Reich \NC \NC \NR
+\NC materie.tex \NC Louis Andriessen \NC De Materie \NC \NR
+\NC douglas.tex \NC Douglas R. Hofstadter \NC \NC \NR
+\NC dawkins.tex \NC Dawkins \NC \NC \NR
+\NC ward.tex \NC Peter D. Ward \NC The Life and Death of Planet Earth \NC \NR
+\NC zapf.tex \NC Hermann Zapf \NC About micro-typography and the hz-program, \endgraf
+ Electronic Publishing, vol. 6(3), \endgraf
+ 283-–288 (September 1993) \NC \NR
+\NC bryson.tex \NC Bill Bryson \NC A Short History of Nearly Everything, \endgraf
+ Random House, 2003 \NC \NR
+\NC davis.tex \NC Kenneth C. Davis \NC Don't Know Much About History, \endgraf
+ Everything You Need to Know About American
+ History but Never Learned, \endgraf
+ HarperCollins, 2003 \NC \NR
+\NC thuan.tex \NC Trinh Xuan Thuan \NC Chaos and Harmony, Perspectives on Scientific
+ Revolutions of the Twentieth Century, \endgraf
+ Oxford University Press, 2001 \NC \NR
+\NC hawking.tex \NC Steve W. Hawking \NC The Universe in a Nutshell, Bantam Books
+ (Random House), 2001 \NC \NR
+\stoptabulate
+
+% Tufte: This quote will always produce hyphenated text, apart from the content,
+% it's a pretty good test case for protruding.
+
+% Ward: I should find a quote in the extremely well written Rare Earth as well.
+
+% A Short History of Nearly Everything: I wish that I had the memory to remember this book
+% verbatim.
+
+% Chaos and Harmony: very nice and well written book, but the typography is rather bad:
+% quite visible inter-character spacing in a text that can be typeset quite well by \TeX.
+
+% The Universe in a Nutshell: a beautiful designed book, (companion of A Short History
+% of Time)
+
+\stoptext
diff --git a/Master/texmf-dist/tex/context/sample/thuan.tex b/Master/texmf-dist/tex/context/sample/thuan.tex
new file mode 100644
index 00000000000..e38c58489d0
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/thuan.tex
@@ -0,0 +1,10 @@
+Had our solar system included two suns, the problem would have
+involved three bodies (the two suns and each planet), and chaos
+would have been immediately obvious. Planets would have had
+erratic and unpredictable orbits, and creatures living on one
+of these planets would never have been able to percieve the
+slightest harmony. Nor would it have occurred to them that the
+universe might be ruled by laws and that it is up to man's
+intellect to discover them. Besides, it is not at all obvious
+that life and conscience could even emerge in such a chaotic
+system. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/tufte.tex b/Master/texmf-dist/tex/context/sample/tufte.tex
new file mode 100644
index 00000000000..1b54d278055
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/tufte.tex
@@ -0,0 +1,13 @@
+We thrive in information||thick worlds because of our
+marvelous and everyday capacity to select, edit,
+single out, structure, highlight, group, pair, merge,
+harmonize, synthesize, focus, organize, condense,
+reduce, boil down, choose, categorize, catalog, classify,
+list, abstract, scan, look into, idealize, isolate,
+discriminate, distinguish, screen, pigeonhole, pick over,
+sort, integrate, blend, inspect, filter, lump, skip,
+smooth, chunk, average, approximate, cluster, aggregate,
+outline, summarize, itemize, review, dip into,
+flip through, browse, glance into, leaf through, skim,
+refine, enumerate, glean, synopsize, winnow the wheat
+from the chaff and separate the sheep from the goats.
diff --git a/Master/texmf-dist/tex/context/sample/ward.tex b/Master/texmf-dist/tex/context/sample/ward.tex
new file mode 100644
index 00000000000..a95b90f5f66
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/ward.tex
@@ -0,0 +1,5 @@
+The Earth, as a habitat for animal life, is in old age and
+has a fatal illness. Several, in fact. It would be happening
+whether humans had ever evolved or not. But our presence is
+like the effect of an old|-|age patient who smokes many packs
+of cigarettes per day |.| and we humans are the cigarettes. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/sample/zapf.tex b/Master/texmf-dist/tex/context/sample/zapf.tex
new file mode 100644
index 00000000000..f73835b1cca
--- /dev/null
+++ b/Master/texmf-dist/tex/context/sample/zapf.tex
@@ -0,0 +1,11 @@
+Coming back to the use of typefaces in electronic
+publishing: many of the new typographers receive their
+knowledge and information about the rules of typography
+from books, from computer magazines or the instruction
+manuals which they get with the purchase of a PC or
+software. There is not so much basic instruction, as of
+now, as there was in the old days, showing the differences
+between good and bad typographic design. Many people are
+just fascinated by their PC's tricks, and think that a
+widely||praised program, called up on the screen, will make
+everything automatic from now on. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/context/user/cont-sys.rme b/Master/texmf-dist/tex/context/user/cont-sys.rme
new file mode 100644
index 00000000000..a74614bd1bf
--- /dev/null
+++ b/Master/texmf-dist/tex/context/user/cont-sys.rme
@@ -0,0 +1,178 @@
+%D \module
+%D [ file=cont-sys,
+%D version=1995.10.10,
+%D title=\CONTEXT\ Miscellaneous Macros,
+%D subtitle=System Specific Setups,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+% Speed up typescript loading, but at the cost of much memory:
+%
+% \preloadtypescripts
+
+% If you want another default font:
+%
+% \let\preloadfonts\relax
+% \usetypescript[palatino][\defaultencoding]
+% \setupbodyfont[palatino,rm,12pt]
+%
+% Please make sure that this defines rm, ss, tt and mm.
+
+% Occasionally we will support both A4 and letter in
+% styles. If you want letter size paper to be the default,
+% uncomment:
+%
+% \enablemode[\systemmodeprefix letter]
+%
+% If you always want to default to letter, you may uncomment
+% the following line, but beware: it makes your documents less
+% portable:
+%
+% \setuppapersize[letter][letter]
+
+% If you want some extras, just uncomment the following
+% line:
+%
+% \usemodule[plus] % experimental code
+%
+% Here you can take care of overloading some (style)
+% defaults. What goes here, depends on your local system.
+
+% The following commands sets the default font encoding:
+%
+% \setupencoding [\s!default=texnansi]
+%
+% or:
+
+\setupencoding [\s!default=ec]
+
+% If you want the default berry names:
+%
+% \usetypescript [berry] [\defaultencoding]
+%
+% or, if you also want other encodings:
+
+\usetypescript [berry] [ec,t5,8r] % texnansi is never present
+
+% If you run into missing font metrics kind of problems,
+% you may want to uncomment:
+%
+% \usetypescript[adobekb] [\defaultencoding]
+
+% You can let \CONTEXT\ load the map files for \PDFTEX.
+
+\autoloadmapfilestrue
+
+% (1) you can prevent loading with:
+%
+% \preloadmapfile[<...somename...>.map]
+%
+% (2) otherwise, use this if you have a fast machine
+%
+% \resetmapfiles \usetypescript [map] [base] [all]
+%
+% (3) or this if it's a slow one:
+
+\resetmapfiles
+
+\donefalse \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>119
+ \donetrue
+\fi \fi \ifdone
+
+ \loadmapfile[original-base.map]
+ \loadmapfile[original-ams-base.map]
+ \loadmapfile[original-public-lm.map]
+
+\else
+
+ \loadmapfile[original-base.map]
+ \loadmapfile[texnansi-base.map]
+ \loadmapfile[ec-base.map]
+ \loadmapfile[qx-base.map]
+ \loadmapfile[t5-base.map]
+ %loadmapfile[il2-base.map]
+ %loadmapfile[pl0-base.map]
+ \loadmapfile[8r-base.map]
+
+ \loadmapfile[original-ams-base.map]
+ \loadmapfile[original-ams-euler.map]
+
+ \loadmapfile[original-public-lm.map]
+ \loadmapfile[texnansi-public-lm.map]
+ \loadmapfile[ec-public-lm.map]
+ \loadmapfile[qx-public-lm.map]
+ \loadmapfile[t5-public-lm.map]
+ %loadmapfile[pl0-public-lm.map]
+ %loadmapfile[il2-public-lm.map]
+
+\fi
+
+% When you have your own fonts installed, you may want to predefine:
+%
+% \usetypescriptfile[type-buy]
+
+% Some styles default to Lucida Bright. You can overload
+% Lucida by Times cum suis. Watch out, the pos collection
+% is not scaled relatively.
+%
+% \definetypescriptsynonym [lbr] [pos]
+
+% Compensate for missing files:
+%
+% \definefontsynonym [gbhei] [gbsong]
+% \definefontsynonym [gbheisl] [gbsong]
+% \definefontsynonym [gbheisl] [gbsong]
+
+% Setting up a global figure path
+%
+% \setupexternalfigures [\c!directory={e:/fig/eps,t:/mine/figs}]
+%
+% Loading a specific special driver:
+%
+% \setupoutput [dviwindo]
+
+% Changing language defaults
+%
+% \setuplanguage
+% [nl]
+% [\c!leftquote=\upperleftsinglesixquote,
+% \c!leftquotation=\upperleftdoublesixquote]
+
+% Loading local preferences, for example
+%
+% \input prag-gen % company styles
+% \input prag-log % more company styles
+%
+% Enabling run time \METAPOST\ (also enable \write18 in
+% texmf.cnf):
+
+% \runMPgraphicstrue
+% \runMPTEXgraphicstrue
+
+% This saves some runtime, but needs a format, which you can
+% make with 'texexec --make --alone metafun'. Make sure that
+% the mem files are moved to the used web2c path (locate with
+% 'kpsewhich plain.mem').
+
+\useMETAFUNformattrue
+
+% This can be a way to get things working on system with
+% name clashes. (Some \TeX's tend do search system wide.)
+
+\protectbufferstrue
+
+% You can enable a more extensive figure searching, but
+% normally this is not really needed and even annoying.
+%
+% \runutilityfiletrue
+
+% So far.
+
+\protect \endinput